17 using namespace clang;
19 std::unique_ptr<ASTConsumer>
21 return AdaptedAction->CreateASTConsumer(CI, InFile);
30 AdaptedAction->setCompilerInstance(&CI);
31 return AdaptedAction->BeginSourceFileAction(CI, Filename);
42 for (
unsigned I = 0, N = ASTFiles.size();
I != N; ++
I) {
48 std::unique_ptr<ASTUnit> Unit =
57 Unit->getASTContext(),
58 Unit->getFileManager(),
62 for (
auto *D : TU->decls()) {
64 if (
const auto *ND = dyn_cast<NamedDecl>(D))
66 if (II->isStr(
"__va_list_tag") || II->isStr(
"__builtin_va_list"))
69 Decl *ToD = Importer.Import(D);
78 AdaptedAction->ExecuteAction();
83 return AdaptedAction->EndSourceFileAction();
88 : AdaptedAction(std::move(adaptedAction)), ASTFiles(ASTFiles.
begin(), ASTFiles.
end()) {
89 assert(AdaptedAction &&
"ASTMergeAction needs an action to adapt");
96 return AdaptedAction->usesPreprocessorOnly();
100 return AdaptedAction->getTranslationUnitKind();
104 return AdaptedAction->hasPCHSupport();
108 return AdaptedAction->hasASTFileSupport();
112 return AdaptedAction->hasCodeCompletionSupport();
Defines the clang::ASTContext interface.
ASTContext & getASTContext() const
DiagnosticConsumer * getClient()
bool hasPCHSupport() const override
Does this action support use with PCH?
bool BeginSourceFileAction(CompilerInstance &CI, StringRef Filename) override
Callback at the start of processing a single input.
CompilerInstance & getCompilerInstance() const
DiagnosticOptions & getDiagnosticOpts()
std::unique_ptr< ASTUnit > takeCurrentASTUnit()
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.
One of these records is kept for each identifier that is lexed.
const FrontendInputFile & getCurrentInput() const
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
detail::InMemoryDirectory::const_iterator I
ASTMergeAction(std::unique_ptr< FrontendAction > AdaptedAction, ArrayRef< std::string > ASTFiles)
DiagnosticsEngine & getDiagnostics() const
Get the current diagnostics engine.
FileSystemOptions & getFileSystemOpts()
CompilerInstance - Helper class for managing a single instance of the Clang compiler.
~ASTMergeAction() override
const PCHContainerReader & getPCHContainerReader() const
Return the appropriate PCHContainerReader depending on the current CodeGenOptions.
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.
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 ExecuteAction() override
Callback to run the program action, using the initialized compiler instance.
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)
HandleTopLevelDecl - Handle the specified top-level declaration.
virtual void BeginSourceFile(const LangOptions &LangOpts, const Preprocessor *PP=nullptr)
Callback to inform the diagnostic client that processing of a source file is beginning.
static std::unique_ptr< ASTUnit > LoadFromASTFile(const std::string &Filename, const PCHContainerReader &PCHContainerRdr, IntrusiveRefCntPtr< DiagnosticsEngine > Diags, const FileSystemOptions &FileSystemOpts, bool UseDebugInfo=false, bool OnlyLocalDecls=false, ArrayRef< RemappedFile > RemappedFiles=None, bool CaptureDiagnostics=false, bool AllowPCHWithCompilerErrors=false, bool UserFilesAreVolatile=false)
Create a ASTUnit from an AST file.