22 #include "llvm/Support/FileSystem.h"
23 #include "llvm/Support/Path.h"
24 #include "llvm/Support/raw_ostream.h"
27 using namespace clang;
33 std::unique_ptr<ASTConsumer>
43 std::unique_ptr<ASTConsumer>
45 return llvm::make_unique<ASTConsumer>();
51 FixItRewriteInPlace() { InPlace =
true; }
53 std::string RewriteFilename(
const std::string &Filename,
int &fd)
override {
54 llvm_unreachable(
"don't call RewriteFilename for inplace rewrites");
59 std::string NewSuffix;
62 FixItActionSuffixInserter(std::string NewSuffix,
bool FixWhatYouCan)
63 : NewSuffix(NewSuffix) {
64 this->FixWhatYouCan = FixWhatYouCan;
67 std::string RewriteFilename(
const std::string &Filename,
int &fd)
override {
70 llvm::sys::path::replace_extension(Path,
71 NewSuffix + llvm::sys::path::extension(Path));
78 std::string RewriteFilename(
const std::string &Filename,
int &fd)
override {
80 llvm::sys::fs::createTemporaryFile(llvm::sys::path::filename(Filename),
81 llvm::sys::path::extension(Filename), fd,
110 std::vector<std::pair<std::string, std::string> > RewrittenFiles;
115 if (FixAction->BeginSourceFile(CI, FEOpts.
Inputs[0])) {
116 std::unique_ptr<FixItOptions> FixItOpts;
118 FixItOpts.reset(
new FixItRewriteToTemp());
120 FixItOpts.reset(
new FixItRewriteInPlace());
121 FixItOpts->Silent =
true;
126 FixAction->Execute();
128 err =
Rewriter.WriteFixedFiles(&RewrittenFiles);
130 FixAction->EndSourceFile();
144 RewrittenFiles.begin(), RewrittenFiles.end());
150 #ifdef CLANG_ENABLE_OBJC_REWRITER
152 std::unique_ptr<ASTConsumer>
LangOptions & getLangOpts()
PreprocessorOptions & getPreprocessorOpts()
std::unique_ptr< FixItOptions > FixItOpts
std::unique_ptr< ASTConsumer > CreateASTConsumer(CompilerInstance &CI, StringRef InFile) override
Create the AST consumer object for this action, if supported.
bool RemappedFilesKeepOriginalName
True if the SourceManager should report the original file name for contents of files that were remapp...
Defines the clang::FileManager interface and associated types.
std::unique_ptr< ASTConsumer > CreateModernObjCRewriter(const std::string &InFile, raw_ostream *OS, DiagnosticsEngine &Diags, const LangOptions &LOpts, bool SilenceRewriteMacroWarning, bool LineInfo)
CompilerInstance & getCompilerInstance() const
DiagnosticOptions & getDiagnosticOpts()
std::unique_ptr< ASTConsumer > CreateASTConsumer(CompilerInstance &CI, StringRef InFile) override
Create the AST consumer object for this action, if supported.
void setSourceManager(SourceManager *Value)
setSourceManager - Replace the current source manager.
SourceManager & getSourceManager() const
Return the current source manager.
void ExecuteAction() override
Callback to run the program action, using the initialized compiler instance.
std::string FixItSuffix
If given, the new suffix for fix-it rewritten files.
CodeGenOptions & getCodeGenOpts()
FrontendOptions & getFrontendOpts()
DiagnosticConsumer & getDiagnosticClient() const
PreprocessorOutputOptions & getPreprocessorOutputOpts()
void RewriteMacrosInInput(Preprocessor &PP, raw_ostream *OS)
RewriteMacrosInInput - Implement -rewrite-macros mode.
void setFileManager(FileManager *Value)
Replace the current file manager and virtual file system.
void ExecuteAction() override
Callback to run the program action, using the initialized compiler instance.
void Reset()
Reset the state of the diagnostic object to its initial configuration.
Preprocessor & getPreprocessor() const
Return the current preprocessor.
Defines the clang::Preprocessor interface.
clang::ObjCRuntime ObjCRuntime
unsigned FixOnlyWarnings
Apply fixes only for warnings.
DiagnosticsEngine & getDiagnostics() const
Get the current diagnostics engine.
void EndSourceFileAction() override
Callback at the end of processing a single input.
bool isNonFragile() const
Does this runtime follow the set of implied behaviors for a "non-fragile" ABI?
bool BeginInvocation(CompilerInstance &CI) override
Callback before starting processing a single input, giving the opportunity to modify the CompilerInvo...
std::vector< FrontendInputFile > Inputs
The input files and their types.
const StringRef getCurrentFile() const
void ExecuteAction() override
Callback to run the program action, using the initialized compiler instance.
unsigned FixToTemporaries
Apply fixes to temporary files.
void RewriteIncludesInInput(Preprocessor &PP, raw_ostream *OS, const PreprocessorOutputOptions &Opts)
RewriteIncludesInInput - Implement -frewrite-includes mode.
bool BeginSourceFileAction(CompilerInstance &CI, StringRef Filename) override
Callback at the start of processing a single input.
std::unique_ptr< ASTConsumer > CreateObjCRewriter(const std::string &InFile, raw_ostream *OS, DiagnosticsEngine &Diags, const LangOptions &LOpts, bool SilenceRewriteMacroWarning)
FrontendOptions - Options for controlling the behavior of the frontend.
std::unique_ptr< ASTConsumer > CreateASTConsumer(CompilerInstance &CI, StringRef InFile) override
Create the AST consumer object for this action, if supported.
std::unique_ptr< ASTConsumer > CreateHTMLPrinter(raw_ostream *OS, Preprocessor &PP, bool SyntaxHighlight=true, bool HighlightMacros=true)
void DoRewriteTest(Preprocessor &PP, raw_ostream *OS)
DoRewriteTest - A simple test for the TokenRewriter class.
raw_pwrite_stream * createDefaultOutputFile(bool Binary=true, StringRef BaseInput="", StringRef Extension="")
std::vector< std::pair< std::string, std::string > > RemappedFiles
The set of file remappings, which take existing files on the system (the first part of each pair) and...