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