16 using namespace clang;
23 Sources.push_back(&s1);
24 Sources.push_back(&s2);
35 Sources.push_back(&source);
43 for(
size_t i = 0;
i < Sources.size(); ++
i)
50 for (
size_t i = 0;
i < Sources.size(); ++
i)
56 for(
size_t i = 0;
i < Sources.size(); ++
i) {
57 Sel = Sources[
i]->GetExternalSelector(ID);
66 for(
size_t i = 0;
i < Sources.size(); ++
i)
72 for(
size_t i = 0;
i < Sources.size(); ++
i)
80 for(
size_t i = 0;
i < Sources.size(); ++
i)
88 for (
auto *S : Sources)
89 if (
auto *R = S->GetExternalCXXCtorInitializers(Offset))
96 for (
const auto &S : Sources)
97 if (
auto EK = S->hasExternalDefinitions(D))
105 bool AnyDeclsFound =
false;
106 for (
size_t i = 0;
i < Sources.size(); ++
i)
108 return AnyDeclsFound;
112 for(
size_t i = 0;
i < Sources.size(); ++
i)
119 for(
size_t i = 0;
i < Sources.size(); ++
i)
127 for(
size_t i = 0;
i < Sources.size(); ++
i)
132 for(
size_t i = 0;
i < Sources.size(); ++
i)
137 for(
size_t i = 0;
i < Sources.size(); ++
i)
142 for(
size_t i = 0;
i < Sources.size(); ++
i)
147 for(
size_t i = 0;
i < Sources.size(); ++
i)
152 for(
size_t i = 0;
i < Sources.size(); ++
i)
157 for(
size_t i = 0;
i < Sources.size(); ++
i)
162 for(
size_t i = 0;
i < Sources.size(); ++
i)
167 for (
size_t i = 0;
i < Sources.size(); ++
i)
174 for (
auto *S : Sources)
175 if (S->DeclIsFromPCHWithObjectFile(D))
183 llvm::DenseMap<const FieldDecl *, uint64_t> &FieldOffsets,
184 llvm::DenseMap<const CXXRecordDecl *, CharUnits> &BaseOffsets,
185 llvm::DenseMap<const CXXRecordDecl *, CharUnits> &VirtualBaseOffsets){
186 for(
size_t i = 0;
i < Sources.size(); ++
i)
188 BaseOffsets, VirtualBaseOffsets))
195 for(
size_t i = 0;
i < Sources.size(); ++
i)
206 for(
size_t i = 0;
i < Sources.size(); ++
i)
211 for(
size_t i = 0;
i < Sources.size(); ++
i)
216 for(
size_t i = 0;
i < Sources.size(); ++
i)
221 for(
size_t i = 0;
i < Sources.size(); ++
i)
227 for(
size_t i = 0;
i < Sources.size(); ++
i)
232 llvm::MapVector<NamedDecl *, SourceLocation> &Undefined) {
233 for(
size_t i = 0;
i < Sources.size(); ++
i)
241 for (
auto &Source : Sources)
242 Source->ReadMismatchingDeleteExpressions(Exprs);
246 for(
size_t i = 0;
i < Sources.size(); ++
i)
254 for(
size_t i = 0;
i < Sources.size(); ++
i)
260 for(
size_t i = 0;
i < Sources.size(); ++
i)
266 for(
size_t i = 0;
i < Sources.size(); ++
i)
272 for(
size_t i = 0;
i < Sources.size(); ++
i)
278 for(
size_t i = 0;
i < Sources.size(); ++
i)
284 for(
size_t i = 0;
i < Sources.size(); ++
i)
290 for(
size_t i = 0;
i < Sources.size(); ++
i)
296 for(
size_t i = 0;
i < Sources.size(); ++
i)
303 for(
size_t i = 0;
i < Sources.size(); ++
i)
308 llvm::MapVector<
const FunctionDecl *, std::unique_ptr<LateParsedTemplate>>
310 for (
size_t i = 0;
i < Sources.size(); ++
i)
319 bool EnteringContext,
321 for (
size_t I = 0, E = Sources.size(); I < E; ++I) {
324 EnteringContext, OPT))
332 for (
size_t I = 0, E = Sources.size(); I < E; ++I) {
Represents a function declaration or definition.
bool DeclIsFromPCHWithObjectFile(const Decl *D) override
Determine whether D comes from a PCH which was built with a corresponding object file.
Smart pointer class that efficiently represents Objective-C method names.
A (possibly-)qualified type.
Simple class containing the result of Sema::CorrectTypo.
ASTConsumer - This is an abstract interface that should be implemented by clients that read ASTs...
void completeVisibleDeclsMap(const DeclContext *DC) override
Ensures that the table of all visible declarations inside this context is up to date.
Stmt - This represents one statement.
void StartTranslationUnit(ASTConsumer *Consumer) override
Function that will be invoked when we begin parsing a new translation unit involving this external AS...
void StartedDeserializing() override
Notify ExternalASTSource that we started deserialization of a decl or type so until FinishedDeseriali...
void ReadMethodPool(Selector Sel) override
Load the contents of the global method pool for a given selector.
void FindExternalLexicalDecls(const DeclContext *DC, llvm::function_ref< bool(Decl::Kind)> IsKindWeWant, SmallVectorImpl< Decl *> &Result) override
Finds all declarations lexically contained within the given DeclContext, after applying an optional f...
Decl - This represents one declaration (or definition), e.g.
Module * getModule(unsigned ID) override
Retrieve the module that corresponds to the given module ID.
void CompleteRedeclChain(const Decl *D) override
Complete the redeclaration chain if it's been extended since the previous generation of the AST sourc...
bool FindExternalVisibleDeclsByName(const DeclContext *DC, DeclarationName Name) override
Find all declarations with the given name in the given context.
Represents a struct/union/class.
~MultiplexExternalSemaSource() override
bool LookupUnqualified(LookupResult &R, Scope *S) override
Do last resort, unqualified lookup on a LookupResult that Sema cannot find.
Base class for callback objects used by Sema::CorrectTypo to check the validity of a potential typo c...
void InitializeSema(Sema &S) override
Initialize the semantic source with the Sema instance being used to perform semantic analysis on the ...
Represents a member of a struct/union/class.
Describes a module or submodule.
void ReadKnownNamespaces(SmallVectorImpl< NamespaceDecl *> &Namespaces) override
Load the set of namespaces that are known to the external source, which will be used during typo corr...
void ReadWeakUndeclaredIdentifiers(SmallVectorImpl< std::pair< IdentifierInfo *, WeakInfo > > &WI) override
Read the set of weak, undeclared identifiers known to the external Sema source.
Represents the results of name lookup.
Stmt * GetExternalDeclStmt(uint64_t Offset) override
Resolve the offset of a statement in the decl stream into a statement.
bool layoutRecordType(const RecordDecl *Record, uint64_t &Size, uint64_t &Alignment, llvm::DenseMap< const FieldDecl *, uint64_t > &FieldOffsets, llvm::DenseMap< const CXXRecordDecl *, CharUnits > &BaseOffsets, llvm::DenseMap< const CXXRecordDecl *, CharUnits > &VirtualBaseOffsets) override
Perform layout on the given record.
Scope - A scope is a transient data structure that is used while parsing the program.
uint32_t GetNumExternalSelectors() override
Returns the number of selectors known to the external AST source.
Represents a C++ nested-name-specifier or a global scope specifier.
Decl * GetExternalDecl(uint32_t ID) override
Resolve a declaration ID into a declaration, potentially building a new declaration.
TypoCorrection CorrectTypo(const DeclarationNameInfo &Typo, int LookupKind, Scope *S, CXXScopeSpec *SS, CorrectionCandidateCallback &CCC, DeclContext *MemberContext, bool EnteringContext, const ObjCObjectPointerType *OPT) override
Try to "correct" a typo in the source code by finding visible declarations whose names are similar to...
Represents an ObjC class declaration.
ExtKind hasExternalDefinitions(const Decl *D) override
void FindFileRegionDecls(FileID File, unsigned Offset, unsigned Length, SmallVectorImpl< Decl *> &Decls) override
Get the decls that are contained in a file in the Offset/Length range.
Sema - This implements semantic analysis and AST building for C.
void ReadExtVectorDecls(SmallVectorImpl< TypedefNameDecl *> &Decls) override
Read the set of ext_vector type declarations known to the external Sema source.
void ForgetSema() override
Inform the semantic consumer that Sema is no longer available.
Represent the declaration of a variable (in which case it is an lvalue) a function (in which case it ...
void updateOutOfDateSelector(Selector Sel) override
Load the contents of the global method pool for a given selector if necessary.
void FinishedDeserializing() override
Notify ExternalASTSource that we finished the deserialization of a decl or type.
void CompleteType(TagDecl *Tag) override
Gives the external AST source an opportunity to complete an incomplete type.
void PrintStats() override
Print any statistics that have been gathered regarding the external AST source.
void ReadUsedVTables(SmallVectorImpl< ExternalVTableUse > &VTables) override
Read the set of used vtables known to the external Sema source.
CXXCtorInitializer ** GetExternalCXXCtorInitializers(uint64_t Offset) override
Resolve a handle to a list of ctor initializers into the list of initializers themselves.
void ReadTentativeDefinitions(SmallVectorImpl< VarDecl *> &Defs) override
Read the set of tentative definitions known to the external Sema source.
The result type of a method or function.
MemoryBufferSizes getMemoryBufferSizes() const
Return the amount of memory used by memory buffers, breaking down by heap-backed versus mmap'ed memor...
void ReadPendingInstantiations(SmallVectorImpl< std::pair< ValueDecl *, SourceLocation > > &Pending) override
Read the set of pending instantiations known to the external Sema source.
void ReadMismatchingDeleteExpressions(llvm::MapVector< FieldDecl *, llvm::SmallVector< std::pair< SourceLocation, bool >, 4 >> &Exprs) override
An abstract interface that should be implemented by external AST sources that also provide informatio...
void ReadUnusedLocalTypedefNameCandidates(llvm::SmallSetVector< const TypedefNameDecl *, 4 > &Decls) override
Read the set of potentially unused typedefs known to the source.
Encodes a location in the source.
Represents the declaration of a struct/union/class/enum.
void ReadDelegatingConstructors(SmallVectorImpl< CXXConstructorDecl *> &Decls) override
Read the set of delegating constructors known to the external Sema source.
void ReadReferencedSelectors(SmallVectorImpl< std::pair< Selector, SourceLocation > > &Sels) override
Read the set of referenced selectors known to the external Sema source.
void ReadUnusedFileScopedDecls(SmallVectorImpl< const DeclaratorDecl *> &Decls) override
Read the set of unused file-scope declarations known to the external Sema source. ...
CXXBaseSpecifier * GetExternalCXXBaseSpecifiers(uint64_t Offset) override
Resolve the offset of a set of C++ base specifiers in the decl stream into an array of specifiers...
MultiplexExternalSemaSource(ExternalSemaSource &s1, ExternalSemaSource &s2)
Constructs a new multiplexing external sema source and appends the given element to it...
An opaque identifier used by SourceManager which refers to a source file (MemoryBuffer) along with it...
Dataflow Directional Tag Classes.
DeclContext - This is used only as base class of specific decl types that can act as declaration cont...
The name of a declaration.
DeclarationNameInfo - A collector data type for bundling together a DeclarationName and the correspnd...
void ReadUndefinedButUsed(llvm::MapVector< NamedDecl *, SourceLocation > &Undefined) override
Load the set of used but not defined functions or variables with internal linkage, or used but not defined inline functions.
void ReadLateParsedTemplates(llvm::MapVector< const FunctionDecl *, std::unique_ptr< LateParsedTemplate >> &LPTMap) override
Read the set of late parsed template functions for this source.
Represents a pointer to an Objective C object.
Represents a C++ base or member initializer.
void addSource(ExternalSemaSource &source)
Appends new source to the source list.
Represents a base class of a C++ class.
void ReadComments() override
Loads comment ranges.
bool isNull() const
Determine whether this is the empty selector.
Selector GetExternalSelector(uint32_t ID) override
Resolve a selector ID into a selector.
Kind
Lists the kind of concrete classes of Decl.
bool MaybeDiagnoseMissingCompleteType(SourceLocation Loc, QualType T) override
Produces a diagnostic note if one of the attached sources contains a complete definition for T...
bool empty() const
Return true if no decls were found.