xref: /netbsd-src/external/apache2/llvm/dist/clang/lib/Frontend/Rewrite/RewriteTest.cpp (revision 7330f729ccf0bd976a06f95fad452fe774fc7fd1)
1*7330f729Sjoerg //===--- RewriteTest.cpp - Rewriter playground ----------------------------===//
2*7330f729Sjoerg //
3*7330f729Sjoerg // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
4*7330f729Sjoerg // See https://llvm.org/LICENSE.txt for license information.
5*7330f729Sjoerg // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
6*7330f729Sjoerg //
7*7330f729Sjoerg //===----------------------------------------------------------------------===//
8*7330f729Sjoerg //
9*7330f729Sjoerg // This is a testbed.
10*7330f729Sjoerg //
11*7330f729Sjoerg //===----------------------------------------------------------------------===//
12*7330f729Sjoerg 
13*7330f729Sjoerg #include "clang/Lex/Preprocessor.h"
14*7330f729Sjoerg #include "clang/Rewrite/Core/TokenRewriter.h"
15*7330f729Sjoerg #include "clang/Rewrite/Frontend/Rewriters.h"
16*7330f729Sjoerg #include "llvm/Support/raw_ostream.h"
17*7330f729Sjoerg 
DoRewriteTest(Preprocessor & PP,raw_ostream * OS)18*7330f729Sjoerg void clang::DoRewriteTest(Preprocessor &PP, raw_ostream *OS) {
19*7330f729Sjoerg   SourceManager &SM = PP.getSourceManager();
20*7330f729Sjoerg   const LangOptions &LangOpts = PP.getLangOpts();
21*7330f729Sjoerg 
22*7330f729Sjoerg   TokenRewriter Rewriter(SM.getMainFileID(), SM, LangOpts);
23*7330f729Sjoerg 
24*7330f729Sjoerg   // Throw <i> </i> tags around comments.
25*7330f729Sjoerg   for (TokenRewriter::token_iterator I = Rewriter.token_begin(),
26*7330f729Sjoerg        E = Rewriter.token_end(); I != E; ++I) {
27*7330f729Sjoerg     if (I->isNot(tok::comment)) continue;
28*7330f729Sjoerg 
29*7330f729Sjoerg     Rewriter.AddTokenBefore(I, "<i>");
30*7330f729Sjoerg     Rewriter.AddTokenAfter(I, "</i>");
31*7330f729Sjoerg   }
32*7330f729Sjoerg 
33*7330f729Sjoerg 
34*7330f729Sjoerg   // Print out the output.
35*7330f729Sjoerg   for (TokenRewriter::token_iterator I = Rewriter.token_begin(),
36*7330f729Sjoerg        E = Rewriter.token_end(); I != E; ++I)
37*7330f729Sjoerg     *OS << PP.getSpelling(*I);
38*7330f729Sjoerg }
39