17 using namespace clang;
19 std::unique_ptr<ASTConsumer>
42 for (
unsigned I = 0, N = ASTFiles.size(); I != N; ++I) {
48 std::unique_ptr<ASTUnit> Unit =
57 Unit->getASTContext(),
58 Unit->getFileManager(),
63 for (
auto *D : TU->decls()) {
65 if (
const auto *ND = dyn_cast<NamedDecl>(D))
67 if (II->isStr(
"__va_list_tag") || II->isStr(
"__builtin_va_list"))
70 Decl *ToD = Importer.Import(D);
89 : AdaptedAction(AdaptedAction), ASTFiles(ASTFiles.begin(), ASTFiles.end()) {
90 assert(AdaptedAction &&
"ASTMergeAction needs an action to adapt");
Defines the clang::ASTContext interface.
ASTContext & getASTContext() const
DiagnosticConsumer * getClient()
bool hasPCHSupport() const override
Does this action support use with PCH?
ASTMergeAction(FrontendAction *AdaptedAction, ArrayRef< std::string > ASTFiles)
bool BeginSourceFileAction(CompilerInstance &CI, StringRef Filename) override
Callback at the start of processing a single input.
virtual bool hasCodeCompletionSupport() const
Does this action support use with code completion?
Abstract base class for actions which can be performed by the frontend.
CompilerInstance & getCompilerInstance() const
DiagnosticOptions & getDiagnosticOpts()
std::unique_ptr< ASTUnit > takeCurrentASTUnit()
virtual bool usesPreprocessorOnly() const =0
Does this action only use the preprocessor?
std::unique_ptr< ASTConsumer > CreateASTConsumer(CompilerInstance &CI, StringRef InFile) override
Create the AST consumer object for this action, if supported.
virtual void EndSourceFile()
Callback to inform the diagnostic client that processing of a source file has ended.
const FrontendInputFile & getCurrentInput() const
virtual bool hasASTFileSupport() const
Does this action support use with AST files?
static std::unique_ptr< ASTUnit > LoadFromASTFile(const std::string &Filename, const PCHContainerReader &PCHContainerRdr, IntrusiveRefCntPtr< DiagnosticsEngine > Diags, const FileSystemOptions &FileSystemOpts, bool OnlyLocalDecls=false, ArrayRef< RemappedFile > RemappedFiles=None, bool CaptureDiagnostics=false, bool AllowPCHWithCompilerErrors=false, bool UserFilesAreVolatile=false)
Create a ASTUnit from an AST file.
bool usesPreprocessorOnly() const override
Does this action only use the preprocessor?
ASTConsumer & getASTConsumer() const
bool hasCodeCompletionSupport() const override
Does this action support use with code completion?
const LangOptions & getLangOpts() const
Concrete class used by the front-end to report problems and issues.
const IntrusiveRefCntPtr< DiagnosticIDs > & getDiagnosticIDs() const
virtual bool BeginSourceFileAction(CompilerInstance &CI, StringRef Filename)
Callback at the start of processing a single input.
void setCurrentInput(const FrontendInputFile &CurrentInput, std::unique_ptr< ASTUnit > AST=nullptr)
virtual void EndSourceFileAction()
Callback at the end of processing a single input.
virtual std::unique_ptr< ASTConsumer > CreateASTConsumer(CompilerInstance &CI, StringRef InFile)=0
Create the AST consumer object for this action, if supported.
DiagnosticsEngine & getDiagnostics() const
Get the current diagnostics engine.
virtual void ExecuteAction()=0
Callback to run the program action, using the initialized compiler instance.
FileSystemOptions & getFileSystemOpts()
~ASTMergeAction() override
const PCHContainerReader & getPCHContainerReader() const
virtual TranslationUnitKind getTranslationUnitKind()
For AST-based actions, the kind of translation unit we're handling.
Diagnostic consumer that forwards diagnostics along to an existing, already-initialized diagnostic co...
void SetArgToStringFn(ArgToStringFnTy Fn, void *Cookie)
bool hasASTFileSupport() const override
Does this action support use with AST files?
FileManager & getFileManager() const
Return the current file manager to the caller.
Defines the Diagnostic-related interfaces.
virtual bool hasPCHSupport() const
Does this action support use with PCH?
void FormatASTNodeDiagnosticArgument(DiagnosticsEngine::ArgumentKind Kind, intptr_t Val, StringRef Modifier, StringRef Argument, ArrayRef< DiagnosticsEngine::ArgumentValue > PrevArgs, SmallVectorImpl< char > &Output, void *Cookie, ArrayRef< intptr_t > QualTypeVals)
DiagnosticsEngine argument formatting function for diagnostics that involve AST nodes.
Imports selected nodes from one AST context into another context, merging AST nodes where appropriate...
void EndSourceFileAction() override
Callback at the end of processing a single input.
void setCompilerInstance(CompilerInstance *Value)
void ExecuteAction() override
Callback to run the program action, using the initialized compiler instance.
virtual void Initialize(ASTContext &Context)
TranslationUnitKind
Describes the kind of translation unit being processed.
TranslationUnitKind getTranslationUnitKind() override
For AST-based actions, the kind of translation unit we're handling.
TranslationUnitDecl - The top declaration context.
virtual bool HandleTopLevelDecl(DeclGroupRef D)
virtual void BeginSourceFile(const LangOptions &LangOpts, const Preprocessor *PP=nullptr)
Callback to inform the diagnostic client that processing of a source file is beginning.