1274958Sdim//===--- RewriteTest.cpp - Rewriter playground ----------------------------===//
2274958Sdim//
3353358Sdim// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
4353358Sdim// See https://llvm.org/LICENSE.txt for license information.
5353358Sdim// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
6274958Sdim//
7274958Sdim//===----------------------------------------------------------------------===//
8274958Sdim//
9274958Sdim// This is a testbed.
10274958Sdim//
11274958Sdim//===----------------------------------------------------------------------===//
12274958Sdim
13274958Sdim#include "clang/Lex/Preprocessor.h"
14274958Sdim#include "clang/Rewrite/Core/TokenRewriter.h"
15314564Sdim#include "clang/Rewrite/Frontend/Rewriters.h"
16274958Sdim#include "llvm/Support/raw_ostream.h"
17274958Sdim
18314564Sdimvoid clang::DoRewriteTest(Preprocessor &PP, raw_ostream *OS) {
19274958Sdim  SourceManager &SM = PP.getSourceManager();
20274958Sdim  const LangOptions &LangOpts = PP.getLangOpts();
21274958Sdim
22274958Sdim  TokenRewriter Rewriter(SM.getMainFileID(), SM, LangOpts);
23274958Sdim
24274958Sdim  // Throw <i> </i> tags around comments.
25274958Sdim  for (TokenRewriter::token_iterator I = Rewriter.token_begin(),
26274958Sdim       E = Rewriter.token_end(); I != E; ++I) {
27274958Sdim    if (I->isNot(tok::comment)) continue;
28274958Sdim
29274958Sdim    Rewriter.AddTokenBefore(I, "<i>");
30274958Sdim    Rewriter.AddTokenAfter(I, "</i>");
31274958Sdim  }
32274958Sdim
33274958Sdim
34274958Sdim  // Print out the output.
35274958Sdim  for (TokenRewriter::token_iterator I = Rewriter.token_begin(),
36274958Sdim       E = Rewriter.token_end(); I != E; ++I)
37274958Sdim    *OS << PP.getSpelling(*I);
38274958Sdim}
39