xref: /llvm-project/clang/lib/Frontend/Rewrite/RewriteTest.cpp (revision 2946cd701067404b99c39fb29dc9c74bd7193eb3)
10621cb2eSAlp Toker //===--- RewriteTest.cpp - Rewriter playground ----------------------------===//
20621cb2eSAlp Toker //
3*2946cd70SChandler Carruth // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
4*2946cd70SChandler Carruth // See https://llvm.org/LICENSE.txt for license information.
5*2946cd70SChandler Carruth // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
60621cb2eSAlp Toker //
70621cb2eSAlp Toker //===----------------------------------------------------------------------===//
80621cb2eSAlp Toker //
90621cb2eSAlp Toker // This is a testbed.
100621cb2eSAlp Toker //
110621cb2eSAlp Toker //===----------------------------------------------------------------------===//
120621cb2eSAlp Toker 
130621cb2eSAlp Toker #include "clang/Lex/Preprocessor.h"
140621cb2eSAlp Toker #include "clang/Rewrite/Core/TokenRewriter.h"
159670f847SMehdi Amini #include "clang/Rewrite/Frontend/Rewriters.h"
160621cb2eSAlp Toker #include "llvm/Support/raw_ostream.h"
170621cb2eSAlp Toker 
DoRewriteTest(Preprocessor & PP,raw_ostream * OS)180621cb2eSAlp Toker void clang::DoRewriteTest(Preprocessor &PP, raw_ostream *OS) {
190621cb2eSAlp Toker   SourceManager &SM = PP.getSourceManager();
200621cb2eSAlp Toker   const LangOptions &LangOpts = PP.getLangOpts();
210621cb2eSAlp Toker 
220621cb2eSAlp Toker   TokenRewriter Rewriter(SM.getMainFileID(), SM, LangOpts);
230621cb2eSAlp Toker 
240621cb2eSAlp Toker   // Throw <i> </i> tags around comments.
250621cb2eSAlp Toker   for (TokenRewriter::token_iterator I = Rewriter.token_begin(),
260621cb2eSAlp Toker        E = Rewriter.token_end(); I != E; ++I) {
270621cb2eSAlp Toker     if (I->isNot(tok::comment)) continue;
280621cb2eSAlp Toker 
290621cb2eSAlp Toker     Rewriter.AddTokenBefore(I, "<i>");
300621cb2eSAlp Toker     Rewriter.AddTokenAfter(I, "</i>");
310621cb2eSAlp Toker   }
320621cb2eSAlp Toker 
330621cb2eSAlp Toker 
340621cb2eSAlp Toker   // Print out the output.
350621cb2eSAlp Toker   for (TokenRewriter::token_iterator I = Rewriter.token_begin(),
360621cb2eSAlp Toker        E = Rewriter.token_end(); I != E; ++I)
370621cb2eSAlp Toker     *OS << PP.getSpelling(*I);
380621cb2eSAlp Toker }
39