1 //===-- FrontendActions.h - Useful Frontend Actions -------------*- C++ -*-===//
3 // The LLVM Compiler Infrastructure
5 // This file is distributed under the University of Illinois Open Source
6 // License. See LICENSE.TXT for details.
8 //===----------------------------------------------------------------------===//
10 #ifndef LLVM_CLANG_REWRITE_FRONTEND_FRONTENDACTIONS_H
11 #define LLVM_CLANG_REWRITE_FRONTEND_FRONTENDACTIONS_H
13 #include "clang/Frontend/FrontendAction.h"
19 //===----------------------------------------------------------------------===//
20 // AST Consumer Actions
21 //===----------------------------------------------------------------------===//
23 class HTMLPrintAction : public ASTFrontendAction {
25 std::unique_ptr<ASTConsumer> CreateASTConsumer(CompilerInstance &CI,
26 StringRef InFile) override;
29 class FixItAction : public ASTFrontendAction {
31 std::unique_ptr<FixItRewriter> Rewriter;
32 std::unique_ptr<FixItOptions> FixItOpts;
34 std::unique_ptr<ASTConsumer> CreateASTConsumer(CompilerInstance &CI,
35 StringRef InFile) override;
37 bool BeginSourceFileAction(CompilerInstance &CI,
38 StringRef Filename) override;
40 void EndSourceFileAction() override;
42 bool hasASTFileSupport() const override { return false; }
46 ~FixItAction() override;
49 /// \brief Emits changes to temporary files and uses them for the original
51 class FixItRecompile : public WrapperFrontendAction {
53 FixItRecompile(FrontendAction *WrappedAction)
54 : WrapperFrontendAction(WrappedAction) {}
57 bool BeginInvocation(CompilerInstance &CI) override;
60 class RewriteObjCAction : public ASTFrontendAction {
62 std::unique_ptr<ASTConsumer> CreateASTConsumer(CompilerInstance &CI,
63 StringRef InFile) override;
66 class RewriteMacrosAction : public PreprocessorFrontendAction {
68 void ExecuteAction() override;
71 class RewriteTestAction : public PreprocessorFrontendAction {
73 void ExecuteAction() override;
76 class RewriteIncludesAction : public PreprocessorFrontendAction {
78 void ExecuteAction() override;
81 } // end namespace clang