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*7330f729Sjoergvoid 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