clang 20.0.0git
Public Member Functions | List of all members
clang::MultiplexExternalSemaSource Class Reference

An abstract interface that should be implemented by external AST sources that also provide information for semantic analysis. More...

#include "clang/Sema/MultiplexExternalSemaSource.h"

Inheritance diagram for clang::MultiplexExternalSemaSource:
Inheritance graph
[legend]

Public Member Functions

 MultiplexExternalSemaSource (ExternalSemaSource *S1, ExternalSemaSource *S2)
 Constructs a new multiplexing external sema source and appends the given element to it.
 
 ~MultiplexExternalSemaSource () override
 
void AddSource (ExternalSemaSource *Source)
 Appends new source to the source list.
 
DeclGetExternalDecl (GlobalDeclID ID) override
 Resolve a declaration ID into a declaration, potentially building a new declaration.
 
void CompleteRedeclChain (const Decl *D) override
 Complete the redeclaration chain if it's been extended since the previous generation of the AST source.
 
Selector GetExternalSelector (uint32_t ID) override
 Resolve a selector ID into a selector.
 
uint32_t GetNumExternalSelectors () override
 Returns the number of selectors known to the external AST source.
 
StmtGetExternalDeclStmt (uint64_t Offset) override
 Resolve the offset of a statement in the decl stream into a statement.
 
CXXBaseSpecifierGetExternalCXXBaseSpecifiers (uint64_t Offset) override
 Resolve the offset of a set of C++ base specifiers in the decl stream into an array of specifiers.
 
CXXCtorInitializer ** GetExternalCXXCtorInitializers (uint64_t Offset) override
 Resolve a handle to a list of ctor initializers into the list of initializers themselves.
 
ExtKind hasExternalDefinitions (const Decl *D) override
 
bool FindExternalVisibleDeclsByName (const DeclContext *DC, DeclarationName Name) override
 Find all declarations with the given name in the given context.
 
bool LoadExternalSpecializations (const Decl *D, bool OnlyPartial) override
 Load all the external specializations for the Decl.
 
bool LoadExternalSpecializations (const Decl *D, ArrayRef< TemplateArgument > TemplateArgs) override
 Load all the specializations for the Decl.
 
void completeVisibleDeclsMap (const DeclContext *DC) override
 Ensures that the table of all visible declarations inside this context is up to date.
 
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 filter predicate.
 
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.
 
void CompleteType (TagDecl *Tag) override
 Gives the external AST source an opportunity to complete an incomplete type.
 
void CompleteType (ObjCInterfaceDecl *Class) override
 Gives the external AST source an opportunity to complete an incomplete Objective-C class.
 
void ReadComments () override
 Loads comment ranges.
 
void StartedDeserializing () override
 Notify ExternalASTSource that we started deserialization of a decl or type so until FinishedDeserializing is called there may be decls that are initializing.
 
void FinishedDeserializing () override
 Notify ExternalASTSource that we finished the deserialization of a decl or type.
 
void StartTranslationUnit (ASTConsumer *Consumer) override
 Function that will be invoked when we begin parsing a new translation unit involving this external AST source.
 
void PrintStats () override
 Print any statistics that have been gathered regarding the external AST source.
 
ModulegetModule (unsigned ID) override
 Retrieve the module that corresponds to the given module ID.
 
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.
 
void getMemoryBufferSizes (MemoryBufferSizes &sizes) const override
 Return the amount of memory used by memory buffers, breaking down by heap-backed versus mmap'ed memory.
 
void InitializeSema (Sema &S) override
 Initialize the semantic source with the Sema instance being used to perform semantic analysis on the abstract syntax tree.
 
void ForgetSema () override
 Inform the semantic consumer that Sema is no longer available.
 
void ReadMethodPool (Selector Sel) override
 Load the contents of the global method pool for a given selector.
 
void updateOutOfDateSelector (Selector Sel) override
 Load the contents of the global method pool for a given selector if necessary.
 
void ReadKnownNamespaces (SmallVectorImpl< NamespaceDecl * > &Namespaces) override
 Load the set of namespaces that are known to the external source, which will be used during typo correction.
 
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 ReadMismatchingDeleteExpressions (llvm::MapVector< FieldDecl *, llvm::SmallVector< std::pair< SourceLocation, bool >, 4 > > &Exprs) override
 
bool LookupUnqualified (LookupResult &R, Scope *S) override
 Do last resort, unqualified lookup on a LookupResult that Sema cannot find.
 
void ReadTentativeDefinitions (SmallVectorImpl< VarDecl * > &Defs) override
 Read the set of tentative definitions 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.
 
void ReadDelegatingConstructors (SmallVectorImpl< CXXConstructorDecl * > &Decls) override
 Read the set of delegating constructors known to the external Sema source.
 
void ReadExtVectorDecls (SmallVectorImpl< TypedefNameDecl * > &Decls) override
 Read the set of ext_vector type declarations known to the external Sema source.
 
void ReadUnusedLocalTypedefNameCandidates (llvm::SmallSetVector< const TypedefNameDecl *, 4 > &Decls) override
 Read the set of potentially unused typedefs known to the source.
 
void ReadReferencedSelectors (SmallVectorImpl< std::pair< Selector, SourceLocation > > &Sels) override
 Read the set of referenced selectors known to the external Sema source.
 
void ReadWeakUndeclaredIdentifiers (SmallVectorImpl< std::pair< IdentifierInfo *, WeakInfo > > &WI) override
 Read the set of weak, undeclared identifiers known to the external Sema source.
 
void ReadUsedVTables (SmallVectorImpl< ExternalVTableUse > &VTables) override
 Read the set of used vtables known to the external Sema source.
 
void ReadPendingInstantiations (SmallVectorImpl< std::pair< ValueDecl *, SourceLocation > > &Pending) override
 Read the set of pending instantiations known to the external Sema source.
 
void ReadLateParsedTemplates (llvm::MapVector< const FunctionDecl *, std::unique_ptr< LateParsedTemplate > > &LPTMap) override
 Read the set of late parsed template functions for this source.
 
void ReadDeclsToCheckForDeferredDiags (llvm::SmallSetVector< Decl *, 4 > &Decls) override
 Read the set of decls to be checked for deferred diags.
 
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 the name that was present in the source code.
 
bool MaybeDiagnoseMissingCompleteType (SourceLocation Loc, QualType T) override
 Produces a diagnostic note if one of the attached sources contains a complete definition for T.
 
void AssignedLambdaNumbering (CXXRecordDecl *Lambda) override
 Notify the external source that a lambda was assigned a mangling number.
 
- Public Member Functions inherited from clang::ExternalSemaSource
 ExternalSemaSource ()=default
 
 ~ExternalSemaSource () override
 
virtual void InitializeSema (Sema &S)
 Initialize the semantic source with the Sema instance being used to perform semantic analysis on the abstract syntax tree.
 
virtual void ForgetSema ()
 Inform the semantic consumer that Sema is no longer available.
 
virtual void ReadMethodPool (Selector Sel)
 Load the contents of the global method pool for a given selector.
 
virtual void updateOutOfDateSelector (Selector Sel)
 Load the contents of the global method pool for a given selector if necessary.
 
virtual void ReadKnownNamespaces (SmallVectorImpl< NamespaceDecl * > &Namespaces)
 Load the set of namespaces that are known to the external source, which will be used during typo correction.
 
virtual void ReadUndefinedButUsed (llvm::MapVector< NamedDecl *, SourceLocation > &Undefined)
 Load the set of used but not defined functions or variables with internal linkage, or used but not defined internal functions.
 
virtual void ReadMismatchingDeleteExpressions (llvm::MapVector< FieldDecl *, llvm::SmallVector< std::pair< SourceLocation, bool >, 4 > > &)
 
virtual bool LookupUnqualified (LookupResult &R, Scope *S)
 Do last resort, unqualified lookup on a LookupResult that Sema cannot find.
 
virtual void ReadTentativeDefinitions (SmallVectorImpl< VarDecl * > &TentativeDefs)
 Read the set of tentative definitions known to the external Sema source.
 
virtual void ReadUnusedFileScopedDecls (SmallVectorImpl< const DeclaratorDecl * > &Decls)
 Read the set of unused file-scope declarations known to the external Sema source.
 
virtual void ReadDelegatingConstructors (SmallVectorImpl< CXXConstructorDecl * > &Decls)
 Read the set of delegating constructors known to the external Sema source.
 
virtual void ReadExtVectorDecls (SmallVectorImpl< TypedefNameDecl * > &Decls)
 Read the set of ext_vector type declarations known to the external Sema source.
 
virtual void ReadUnusedLocalTypedefNameCandidates (llvm::SmallSetVector< const TypedefNameDecl *, 4 > &Decls)
 Read the set of potentially unused typedefs known to the source.
 
virtual void ReadReferencedSelectors (SmallVectorImpl< std::pair< Selector, SourceLocation > > &Sels)
 Read the set of referenced selectors known to the external Sema source.
 
virtual void ReadWeakUndeclaredIdentifiers (SmallVectorImpl< std::pair< IdentifierInfo *, WeakInfo > > &WI)
 Read the set of weak, undeclared identifiers known to the external Sema source.
 
virtual void ReadUsedVTables (SmallVectorImpl< ExternalVTableUse > &VTables)
 Read the set of used vtables known to the external Sema source.
 
virtual void ReadPendingInstantiations (SmallVectorImpl< std::pair< ValueDecl *, SourceLocation > > &Pending)
 Read the set of pending instantiations known to the external Sema source.
 
virtual void ReadLateParsedTemplates (llvm::MapVector< const FunctionDecl *, std::unique_ptr< LateParsedTemplate > > &LPTMap)
 Read the set of late parsed template functions for this source.
 
virtual void ReadDeclsToCheckForDeferredDiags (llvm::SmallSetVector< Decl *, 4 > &Decls)
 Read the set of decls to be checked for deferred diags.
 
virtual TypoCorrection CorrectTypo (const DeclarationNameInfo &Typo, int LookupKind, Scope *S, CXXScopeSpec *SS, CorrectionCandidateCallback &CCC, DeclContext *MemberContext, bool EnteringContext, const ObjCObjectPointerType *OPT)
 Try to "correct" a typo in the source code by finding visible declarations whose names are similar to the name that was present in the source code.
 
virtual bool MaybeDiagnoseMissingCompleteType (SourceLocation Loc, QualType T)
 Produces a diagnostic note if the external source contains a complete definition for T.
 
virtual void AssignedLambdaNumbering (CXXRecordDecl *Lambda)
 Notify the external source that a lambda was assigned a mangling number.
 
- Public Member Functions inherited from clang::ExternalASTSource
 ExternalASTSource ()=default
 
virtual ~ExternalASTSource ()
 
uint32_t getGeneration () const
 Get the current generation of this AST source.
 
virtual DeclGetExternalDecl (GlobalDeclID ID)
 Resolve a declaration ID into a declaration, potentially building a new declaration.
 
virtual Selector GetExternalSelector (uint32_t ID)
 Resolve a selector ID into a selector.
 
virtual uint32_t GetNumExternalSelectors ()
 Returns the number of selectors known to the external AST source.
 
virtual StmtGetExternalDeclStmt (uint64_t Offset)
 Resolve the offset of a statement in the decl stream into a statement.
 
virtual CXXCtorInitializer ** GetExternalCXXCtorInitializers (uint64_t Offset)
 Resolve the offset of a set of C++ constructor initializers in the decl stream into an array of initializers.
 
virtual CXXBaseSpecifierGetExternalCXXBaseSpecifiers (uint64_t Offset)
 Resolve the offset of a set of C++ base specifiers in the decl stream into an array of specifiers.
 
virtual void updateOutOfDateIdentifier (const IdentifierInfo &II)
 Update an out-of-date identifier.
 
virtual bool FindExternalVisibleDeclsByName (const DeclContext *DC, DeclarationName Name)
 Find all declarations with the given name in the given context, and add them to the context by calling SetExternalVisibleDeclsForName or SetNoExternalVisibleDeclsForName.
 
virtual bool LoadExternalSpecializations (const Decl *D, bool OnlyPartial)
 Load all the external specializations for the Decl.
 
virtual bool LoadExternalSpecializations (const Decl *D, ArrayRef< TemplateArgument > TemplateArgs)
 Load all the specializations for the Decl.
 
virtual void completeVisibleDeclsMap (const DeclContext *DC)
 Ensures that the table of all visible declarations inside this context is up to date.
 
virtual ModulegetModule (unsigned ID)
 Retrieve the module that corresponds to the given module ID.
 
virtual std::optional< ASTSourceDescriptorgetSourceDescriptor (unsigned ID)
 Return a descriptor for the corresponding module, if one exists.
 
virtual ExtKind hasExternalDefinitions (const Decl *D)
 
virtual void FindExternalLexicalDecls (const DeclContext *DC, llvm::function_ref< bool(Decl::Kind)> IsKindWeWant, SmallVectorImpl< Decl * > &Result)
 Finds all declarations lexically contained within the given DeclContext, after applying an optional filter predicate.
 
void FindExternalLexicalDecls (const DeclContext *DC, SmallVectorImpl< Decl * > &Result)
 Finds all declarations lexically contained within the given DeclContext.
 
virtual void FindFileRegionDecls (FileID File, unsigned Offset, unsigned Length, SmallVectorImpl< Decl * > &Decls)
 Get the decls that are contained in a file in the Offset/Length range.
 
virtual void CompleteRedeclChain (const Decl *D)
 Gives the external AST source an opportunity to complete the redeclaration chain for a declaration.
 
virtual void CompleteType (TagDecl *Tag)
 Gives the external AST source an opportunity to complete an incomplete type.
 
virtual void CompleteType (ObjCInterfaceDecl *Class)
 Gives the external AST source an opportunity to complete an incomplete Objective-C class.
 
virtual void ReadComments ()
 Loads comment ranges.
 
virtual void StartedDeserializing ()
 Notify ExternalASTSource that we started deserialization of a decl or type so until FinishedDeserializing is called there may be decls that are initializing.
 
virtual void FinishedDeserializing ()
 Notify ExternalASTSource that we finished the deserialization of a decl or type.
 
virtual void StartTranslationUnit (ASTConsumer *Consumer)
 Function that will be invoked when we begin parsing a new translation unit involving this external AST source.
 
virtual void PrintStats ()
 Print any statistics that have been gathered regarding the external AST source.
 
virtual 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)
 Perform layout on the given record.
 
MemoryBufferSizes getMemoryBufferSizes () const
 Return the amount of memory used by memory buffers, breaking down by heap-backed versus mmap'ed memory.
 
virtual void getMemoryBufferSizes (MemoryBufferSizes &sizes) const
 
bool isA (const void *ClassID) const override
 LLVM-style RTTI.
 
static bool classof (const ExternalASTSource *S)
 

Additional Inherited Members

- Public Types inherited from clang::ExternalASTSource
enum  ExtKind { EK_Always , EK_Never , EK_ReplyHazy }
 
- Static Public Member Functions inherited from clang::ExternalSemaSource
static bool classof (const ExternalASTSource *S)
 
- Static Public Member Functions inherited from clang::ExternalASTSource
static bool classof (const ExternalASTSource *S)
 
- Protected Member Functions inherited from clang::ExternalASTSource
uint32_t incrementGeneration (ASTContext &C)
 Increment the current generation.
 
- Static Protected Member Functions inherited from clang::ExternalASTSource
static DeclContextLookupResult SetExternalVisibleDeclsForName (const DeclContext *DC, DeclarationName Name, ArrayRef< NamedDecl * > Decls)
 
static DeclContextLookupResult SetNoExternalVisibleDeclsForName (const DeclContext *DC, DeclarationName Name)
 

Detailed Description

An abstract interface that should be implemented by external AST sources that also provide information for semantic analysis.

Definition at line 38 of file MultiplexExternalSemaSource.h.

Constructor & Destructor Documentation

◆ MultiplexExternalSemaSource()

MultiplexExternalSemaSource::MultiplexExternalSemaSource ( ExternalSemaSource S1,
ExternalSemaSource S2 
)

Constructs a new multiplexing external sema source and appends the given element to it.

Parameters
[in]S1- A non-null (old) ExternalSemaSource.
[in]S2- A non-null (new) ExternalSemaSource.

Definition at line 22 of file MultiplexExternalSemaSource.cpp.

◆ ~MultiplexExternalSemaSource()

MultiplexExternalSemaSource::~MultiplexExternalSemaSource ( )
override

Definition at line 31 of file MultiplexExternalSemaSource.cpp.

Member Function Documentation

◆ AddSource()

void MultiplexExternalSemaSource::AddSource ( ExternalSemaSource Source)

Appends new source to the source list.

Parameters
[in]Source- An ExternalSemaSource.
[in]source- An ExternalSemaSource.

Definition at line 40 of file MultiplexExternalSemaSource.cpp.

◆ AssignedLambdaNumbering()

void MultiplexExternalSemaSource::AssignedLambdaNumbering ( CXXRecordDecl Lambda)
overridevirtual

Notify the external source that a lambda was assigned a mangling number.

This enables the external source to track the correspondence between lambdas and mangling numbers if necessary.

Reimplemented from clang::ExternalSemaSource.

Definition at line 362 of file MultiplexExternalSemaSource.cpp.

◆ classof()

static bool clang::MultiplexExternalSemaSource::classof ( const ExternalASTSource S)
inlinestatic

Definition at line 377 of file MultiplexExternalSemaSource.h.

◆ CompleteRedeclChain()

void MultiplexExternalSemaSource::CompleteRedeclChain ( const Decl D)
overridevirtual

Complete the redeclaration chain if it's been extended since the previous generation of the AST source.

Reimplemented from clang::ExternalASTSource.

Definition at line 56 of file MultiplexExternalSemaSource.cpp.

References CompleteRedeclChain(), and D.

Referenced by CompleteRedeclChain().

◆ CompleteType() [1/2]

void MultiplexExternalSemaSource::CompleteType ( ObjCInterfaceDecl Class)
overridevirtual

Gives the external AST source an opportunity to complete an incomplete Objective-C class.

This routine will only be invoked if the "externally completed" bit is set on the ObjCInterfaceDecl via the function ObjCInterfaceDecl::setExternallyCompleted().

Reimplemented from clang::ExternalASTSource.

Definition at line 160 of file MultiplexExternalSemaSource.cpp.

References clang::Class, and CompleteType().

◆ CompleteType() [2/2]

void MultiplexExternalSemaSource::CompleteType ( TagDecl Tag)
overridevirtual

Gives the external AST source an opportunity to complete an incomplete type.

Reimplemented from clang::ExternalASTSource.

Definition at line 155 of file MultiplexExternalSemaSource.cpp.

References CompleteType().

Referenced by CompleteType().

◆ completeVisibleDeclsMap()

void MultiplexExternalSemaSource::completeVisibleDeclsMap ( const DeclContext DC)
overridevirtual

Ensures that the table of all visible declarations inside this context is up to date.

Reimplemented from clang::ExternalASTSource.

Definition at line 135 of file MultiplexExternalSemaSource.cpp.

References completeVisibleDeclsMap().

Referenced by completeVisibleDeclsMap().

◆ CorrectTypo()

TypoCorrection MultiplexExternalSemaSource::CorrectTypo ( const DeclarationNameInfo Typo,
int  LookupKind,
Scope S,
CXXScopeSpec SS,
CorrectionCandidateCallback CCC,
DeclContext MemberContext,
bool  EnteringContext,
const ObjCObjectPointerType OPT 
)
overridevirtual

Try to "correct" a typo in the source code by finding visible declarations whose names are similar to the name that was present in the source code.

Parameters
TypoNamethe DeclarationNameInfo structure that contains the name that was present in the source code along with its location.
LookupKindthe name-lookup criteria used to search for the name.
Sthe scope in which name lookup occurs.
SSthe nested-name-specifier that precedes the name we're looking for, if present.
CCCA CorrectionCandidateCallback object that provides further validation of typo correction candidates. It also provides flags for determining the set of keywords permitted.
MemberContextif non-NULL, the context in which to look for a member access expression.
EnteringContextwhether we're entering the context described by the nested-name-specifier SS.
OPTwhen non-NULL, the search for visible declarations will also walk the protocols in the qualified interfaces of OPT.
Returns
a TypoCorrection containing the corrected name if the typo along with information such as the NamedDecl where the corrected name was declared, and any additional NestedNameSpecifier needed to access it (C++ only). The TypoCorrection is empty if there is no correction.
Note
LookupKind must correspond to a valid Sema::LookupNameKind

ExternalSemaSource::CorrectTypo is always given the first chance to correct a typo (really, to offer suggestions to repair a failed lookup). It will even be called when SpellChecking is turned off or after a fatal error has already been detected.

Note
Returns the first nonempty correction.

Reimplemented from clang::ExternalSemaSource.

Definition at line 337 of file MultiplexExternalSemaSource.cpp.

References clang::C, CorrectTypo(), and E.

Referenced by CorrectTypo().

◆ FindExternalLexicalDecls()

void MultiplexExternalSemaSource::FindExternalLexicalDecls ( const DeclContext DC,
llvm::function_ref< bool(Decl::Kind)>  IsKindWeWant,
SmallVectorImpl< Decl * > &  Result 
)
overridevirtual

Finds all declarations lexically contained within the given DeclContext, after applying an optional filter predicate.

Parameters
IsKindWeWanta predicate function that returns true if the passed declaration kind is one we are looking for.

Reimplemented from clang::ExternalASTSource.

Definition at line 140 of file MultiplexExternalSemaSource.cpp.

References FindExternalLexicalDecls(), and clang::Result.

Referenced by FindExternalLexicalDecls().

◆ FindExternalVisibleDeclsByName()

bool MultiplexExternalSemaSource::FindExternalVisibleDeclsByName ( const DeclContext DC,
DeclarationName  Name 
)
overridevirtual

Find all declarations with the given name in the given context.

Reimplemented from clang::ExternalASTSource.

Definition at line 110 of file MultiplexExternalSemaSource.cpp.

References FindExternalVisibleDeclsByName().

Referenced by FindExternalVisibleDeclsByName().

◆ FindFileRegionDecls()

void MultiplexExternalSemaSource::FindFileRegionDecls ( FileID  File,
unsigned  Offset,
unsigned  Length,
SmallVectorImpl< Decl * > &  Decls 
)
overridevirtual

Get the decls that are contained in a file in the Offset/Length range.

Length can be 0 to indicate a point at Offset instead of a range.

Reimplemented from clang::ExternalASTSource.

Definition at line 147 of file MultiplexExternalSemaSource.cpp.

References clang::File, and FindFileRegionDecls().

Referenced by FindFileRegionDecls().

◆ FinishedDeserializing()

void MultiplexExternalSemaSource::FinishedDeserializing ( )
overridevirtual

Notify ExternalASTSource that we finished the deserialization of a decl or type.

Must be paired with StartedDeserializing.

Reimplemented from clang::ExternalASTSource.

Definition at line 175 of file MultiplexExternalSemaSource.cpp.

References FinishedDeserializing().

Referenced by FinishedDeserializing().

◆ ForgetSema()

void MultiplexExternalSemaSource::ForgetSema ( )
overridevirtual

Inform the semantic consumer that Sema is no longer available.

Reimplemented from clang::ExternalSemaSource.

Definition at line 227 of file MultiplexExternalSemaSource.cpp.

References ForgetSema().

Referenced by ForgetSema().

◆ GetExternalCXXBaseSpecifiers()

CXXBaseSpecifier * MultiplexExternalSemaSource::GetExternalCXXBaseSpecifiers ( uint64_t  Offset)
overridevirtual

Resolve the offset of a set of C++ base specifiers in the decl stream into an array of specifiers.

Reimplemented from clang::ExternalASTSource.

Definition at line 85 of file MultiplexExternalSemaSource.cpp.

References GetExternalCXXBaseSpecifiers().

Referenced by GetExternalCXXBaseSpecifiers().

◆ GetExternalCXXCtorInitializers()

CXXCtorInitializer ** MultiplexExternalSemaSource::GetExternalCXXCtorInitializers ( uint64_t  Offset)
overridevirtual

Resolve a handle to a list of ctor initializers into the list of initializers themselves.

Reimplemented from clang::ExternalASTSource.

Definition at line 94 of file MultiplexExternalSemaSource.cpp.

◆ GetExternalDecl()

Decl * MultiplexExternalSemaSource::GetExternalDecl ( GlobalDeclID  ID)
overridevirtual

Resolve a declaration ID into a declaration, potentially building a new declaration.

Reimplemented from clang::ExternalASTSource.

Definition at line 49 of file MultiplexExternalSemaSource.cpp.

References GetExternalDecl(), and clang::Result.

Referenced by GetExternalDecl().

◆ GetExternalDeclStmt()

Stmt * MultiplexExternalSemaSource::GetExternalDeclStmt ( uint64_t  Offset)
overridevirtual

Resolve the offset of a statement in the decl stream into a statement.

Reimplemented from clang::ExternalASTSource.

Definition at line 78 of file MultiplexExternalSemaSource.cpp.

References GetExternalDeclStmt(), and clang::Result.

Referenced by GetExternalDeclStmt().

◆ GetExternalSelector()

Selector MultiplexExternalSemaSource::GetExternalSelector ( uint32_t  ID)
overridevirtual

Resolve a selector ID into a selector.

Reimplemented from clang::ExternalASTSource.

Definition at line 61 of file MultiplexExternalSemaSource.cpp.

References clang::Selector::isNull().

◆ getMemoryBufferSizes()

void MultiplexExternalSemaSource::getMemoryBufferSizes ( MemoryBufferSizes sizes) const
overridevirtual

Return the amount of memory used by memory buffers, breaking down by heap-backed versus mmap'ed memory.

Reimplemented from clang::ExternalASTSource.

Definition at line 210 of file MultiplexExternalSemaSource.cpp.

References clang::ExternalASTSource::getMemoryBufferSizes().

◆ getModule()

Module * MultiplexExternalSemaSource::getModule ( unsigned  ID)
overridevirtual

Retrieve the module that corresponds to the given module ID.

Reimplemented from clang::ExternalASTSource.

Definition at line 190 of file MultiplexExternalSemaSource.cpp.

References getModule().

Referenced by getModule().

◆ GetNumExternalSelectors()

uint32_t MultiplexExternalSemaSource::GetNumExternalSelectors ( )
overridevirtual

Returns the number of selectors known to the external AST source.

Reimplemented from clang::ExternalASTSource.

Definition at line 71 of file MultiplexExternalSemaSource.cpp.

References GetNumExternalSelectors().

Referenced by GetNumExternalSelectors().

◆ hasExternalDefinitions()

ExternalASTSource::ExtKind MultiplexExternalSemaSource::hasExternalDefinitions ( const Decl D)
overridevirtual

Reimplemented from clang::ExternalASTSource.

Definition at line 102 of file MultiplexExternalSemaSource.cpp.

References D, and clang::ExternalASTSource::EK_ReplyHazy.

◆ InitializeSema()

void MultiplexExternalSemaSource::InitializeSema ( Sema S)
overridevirtual

Initialize the semantic source with the Sema instance being used to perform semantic analysis on the abstract syntax tree.

Reimplemented from clang::ExternalSemaSource.

Definition at line 222 of file MultiplexExternalSemaSource.cpp.

References InitializeSema().

Referenced by InitializeSema().

◆ isA()

bool clang::MultiplexExternalSemaSource::isA ( const void *  ClassID) const
inlineoverridevirtual

LLVM-style RTTI.

Reimplemented from clang::ExternalSemaSource.

Definition at line 374 of file MultiplexExternalSemaSource.h.

References clang::ExternalSemaSource::isA().

◆ layoutRecordType()

bool MultiplexExternalSemaSource::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 
)
overridevirtual

Perform layout on the given record.

This routine allows the external AST source to provide an specific layout for a record, overriding the layout that would normally be constructed. It is intended for clients who receive specific layout details rather than source code (such as LLDB). The client is expected to fill in the field offsets, base offsets, virtual base offsets, and complete object size.

Parameters
RecordThe record whose layout is being requested.
SizeThe final size of the record, in bits.
AlignmentThe final alignment of the record, in bits.
FieldOffsetsThe offset of each of the fields within the record, expressed in bits. All of the fields must be provided with offsets.
BaseOffsetsThe offset of each of the direct, non-virtual base classes. If any bases are not given offsets, the bases will be laid out according to the ABI.
VirtualBaseOffsetsThe offset of each of the virtual base classes (either direct or not). If any bases are not given offsets, the bases will be laid out according to the ABI.
Returns
true if the record layout was provided, false otherwise.

Reimplemented from clang::ExternalASTSource.

Definition at line 197 of file MultiplexExternalSemaSource.cpp.

References layoutRecordType().

Referenced by layoutRecordType().

◆ LoadExternalSpecializations() [1/2]

bool MultiplexExternalSemaSource::LoadExternalSpecializations ( const Decl D,
ArrayRef< TemplateArgument TemplateArgs 
)
overridevirtual

Load all the specializations for the Decl.

Parameters
Dwith the same template args specified by
TemplateArgs.

Return true if any new specializations get loaded. Return false otherwise.

Reimplemented from clang::ExternalASTSource.

Definition at line 126 of file MultiplexExternalSemaSource.cpp.

References D, and LoadExternalSpecializations().

◆ LoadExternalSpecializations() [2/2]

bool MultiplexExternalSemaSource::LoadExternalSpecializations ( const Decl D,
bool  OnlyPartial 
)
overridevirtual

Load all the external specializations for the Decl.

Parameters
Dif
OnlyPartialis false. Otherwise, load all the external partial specializations for the
D.

Return true if any new specializations get loaded. Return false otherwise.

Reimplemented from clang::ExternalASTSource.

Definition at line 118 of file MultiplexExternalSemaSource.cpp.

References D, and LoadExternalSpecializations().

Referenced by LoadExternalSpecializations().

◆ LookupUnqualified()

bool MultiplexExternalSemaSource::LookupUnqualified ( LookupResult R,
Scope S 
)
overridevirtual

Do last resort, unqualified lookup on a LookupResult that Sema cannot find.

Parameters
Ra LookupResult that is being recovered.
Sthe Scope of the identifier occurrence.
Returns
true to tell Sema to recover using the LookupResult.

Reimplemented from clang::ExternalSemaSource.

Definition at line 262 of file MultiplexExternalSemaSource.cpp.

References clang::LookupResult::empty(), and LookupUnqualified().

Referenced by LookupUnqualified().

◆ MaybeDiagnoseMissingCompleteType()

bool MultiplexExternalSemaSource::MaybeDiagnoseMissingCompleteType ( SourceLocation  Loc,
QualType  T 
)
overridevirtual

Produces a diagnostic note if one of the attached sources contains a complete definition for T.

Queries the sources in list order until the first one claims that a diagnostic was produced.

Parameters
Locthe location at which a complete type was required but not provided
Tthe QualType that should have been complete at Loc
Returns
true if a diagnostic was produced, false otherwise.

Reimplemented from clang::ExternalSemaSource.

Definition at line 353 of file MultiplexExternalSemaSource.cpp.

References E, Loc, MaybeDiagnoseMissingCompleteType(), and clang::T.

Referenced by MaybeDiagnoseMissingCompleteType().

◆ PrintStats()

void MultiplexExternalSemaSource::PrintStats ( )
overridevirtual

Print any statistics that have been gathered regarding the external AST source.

Reimplemented from clang::ExternalASTSource.

Definition at line 185 of file MultiplexExternalSemaSource.cpp.

References PrintStats().

Referenced by PrintStats().

◆ ReadComments()

void MultiplexExternalSemaSource::ReadComments ( )
overridevirtual

Loads comment ranges.

Reimplemented from clang::ExternalASTSource.

Definition at line 165 of file MultiplexExternalSemaSource.cpp.

References ReadComments().

Referenced by ReadComments().

◆ ReadDeclsToCheckForDeferredDiags()

void MultiplexExternalSemaSource::ReadDeclsToCheckForDeferredDiags ( llvm::SmallSetVector< Decl *, 4 > &  Decls)
overridevirtual

Read the set of decls to be checked for deferred diags.

The external source should append its own potentially emitted function and variable decls which may cause deferred diags. Note that this routine may be invoked multiple times; the external source should take care not to introduce the same declarations repeatedly.

Reimplemented from clang::ExternalSemaSource.

Definition at line 293 of file MultiplexExternalSemaSource.cpp.

References ReadDeclsToCheckForDeferredDiags().

Referenced by ReadDeclsToCheckForDeferredDiags().

◆ ReadDelegatingConstructors()

void MultiplexExternalSemaSource::ReadDelegatingConstructors ( SmallVectorImpl< CXXConstructorDecl * > &  Decls)
overridevirtual

Read the set of delegating constructors known to the external Sema source.

The external source should append its own delegating constructors to the given vector of declarations. Note that this routine may be invoked multiple times; the external source should take care not to introduce the same declarations repeatedly.

Reimplemented from clang::ExternalSemaSource.

Definition at line 281 of file MultiplexExternalSemaSource.cpp.

References ReadDelegatingConstructors().

Referenced by ReadDelegatingConstructors().

◆ ReadExtVectorDecls()

void MultiplexExternalSemaSource::ReadExtVectorDecls ( SmallVectorImpl< TypedefNameDecl * > &  Decls)
overridevirtual

Read the set of ext_vector type declarations known to the external Sema source.

The external source should append its own ext_vector type declarations to the given vector of declarations. Note that this routine may be invoked multiple times; the external source should take care not to introduce the same declarations repeatedly.

Reimplemented from clang::ExternalSemaSource.

Definition at line 287 of file MultiplexExternalSemaSource.cpp.

References ReadExtVectorDecls().

Referenced by ReadExtVectorDecls().

◆ ReadKnownNamespaces()

void MultiplexExternalSemaSource::ReadKnownNamespaces ( SmallVectorImpl< NamespaceDecl * > &  Namespaces)
overridevirtual

Load the set of namespaces that are known to the external source, which will be used during typo correction.

Reimplemented from clang::ExternalSemaSource.

Definition at line 242 of file MultiplexExternalSemaSource.cpp.

References ReadKnownNamespaces().

Referenced by ReadKnownNamespaces().

◆ ReadLateParsedTemplates()

void MultiplexExternalSemaSource::ReadLateParsedTemplates ( llvm::MapVector< const FunctionDecl *, std::unique_ptr< LateParsedTemplate > > &  LPTMap)
overridevirtual

Read the set of late parsed template functions for this source.

The external source should insert its own late parsed template functions into the map. Note that this routine may be invoked multiple times; the external source should take care not to introduce the same map entries repeatedly.

Reimplemented from clang::ExternalSemaSource.

Definition at line 330 of file MultiplexExternalSemaSource.cpp.

References ReadLateParsedTemplates().

Referenced by ReadLateParsedTemplates().

◆ ReadMethodPool()

void MultiplexExternalSemaSource::ReadMethodPool ( Selector  Sel)
overridevirtual

Load the contents of the global method pool for a given selector.

Reimplemented from clang::ExternalSemaSource.

Definition at line 232 of file MultiplexExternalSemaSource.cpp.

References ReadMethodPool().

Referenced by ReadMethodPool().

◆ ReadMismatchingDeleteExpressions()

void MultiplexExternalSemaSource::ReadMismatchingDeleteExpressions ( llvm::MapVector< FieldDecl *, llvm::SmallVector< std::pair< SourceLocation, bool >, 4 > > &  Exprs)
overridevirtual

Reimplemented from clang::ExternalSemaSource.

Definition at line 254 of file MultiplexExternalSemaSource.cpp.

◆ ReadPendingInstantiations()

void MultiplexExternalSemaSource::ReadPendingInstantiations ( SmallVectorImpl< std::pair< ValueDecl *, SourceLocation > > &  Pending)
overridevirtual

Read the set of pending instantiations known to the external Sema source.

The external source should append its own pending instantiations to the given vector. Note that this routine may be invoked multiple times; the external source should take care not to introduce the same instantiations repeatedly.

Reimplemented from clang::ExternalSemaSource.

Definition at line 323 of file MultiplexExternalSemaSource.cpp.

References ReadPendingInstantiations().

Referenced by ReadPendingInstantiations().

◆ ReadReferencedSelectors()

void MultiplexExternalSemaSource::ReadReferencedSelectors ( SmallVectorImpl< std::pair< Selector, SourceLocation > > &  Sels)
overridevirtual

Read the set of referenced selectors known to the external Sema source.

The external source should append its own referenced selectors to the given vector of selectors. Note that this routine may be invoked multiple times; the external source should take care not to introduce the same selectors repeatedly.

Reimplemented from clang::ExternalSemaSource.

Definition at line 305 of file MultiplexExternalSemaSource.cpp.

References ReadReferencedSelectors().

Referenced by ReadReferencedSelectors().

◆ ReadTentativeDefinitions()

void MultiplexExternalSemaSource::ReadTentativeDefinitions ( SmallVectorImpl< VarDecl * > &  Defs)
overridevirtual

Read the set of tentative definitions known to the external Sema source.

The external source should append its own tentative definitions to the given vector of tentative definitions. Note that this routine may be invoked multiple times; the external source should take care not to introduce the same declarations repeatedly.

Reimplemented from clang::ExternalSemaSource.

Definition at line 269 of file MultiplexExternalSemaSource.cpp.

References ReadTentativeDefinitions().

Referenced by ReadTentativeDefinitions().

◆ ReadUndefinedButUsed()

void MultiplexExternalSemaSource::ReadUndefinedButUsed ( llvm::MapVector< NamedDecl *, SourceLocation > &  Undefined)
overridevirtual

Load the set of used but not defined functions or variables with internal linkage, or used but not defined inline functions.

Reimplemented from clang::ExternalSemaSource.

Definition at line 248 of file MultiplexExternalSemaSource.cpp.

References ReadUndefinedButUsed().

Referenced by ReadUndefinedButUsed().

◆ ReadUnusedFileScopedDecls()

void MultiplexExternalSemaSource::ReadUnusedFileScopedDecls ( SmallVectorImpl< const DeclaratorDecl * > &  Decls)
overridevirtual

Read the set of unused file-scope declarations known to the external Sema source.

The external source should append its own unused, filed-scope to the given vector of declarations. Note that this routine may be invoked multiple times; the external source should take care not to introduce the same declarations repeatedly.

Reimplemented from clang::ExternalSemaSource.

Definition at line 275 of file MultiplexExternalSemaSource.cpp.

References ReadUnusedFileScopedDecls().

Referenced by ReadUnusedFileScopedDecls().

◆ ReadUnusedLocalTypedefNameCandidates()

void MultiplexExternalSemaSource::ReadUnusedLocalTypedefNameCandidates ( llvm::SmallSetVector< const TypedefNameDecl *, 4 > &  Decls)
overridevirtual

Read the set of potentially unused typedefs known to the source.

The external source should append its own potentially unused local typedefs to the given vector of declarations. Note that this routine may be invoked multiple times; the external source should take care not to introduce the same declarations repeatedly.

Reimplemented from clang::ExternalSemaSource.

Definition at line 299 of file MultiplexExternalSemaSource.cpp.

References ReadUnusedLocalTypedefNameCandidates().

Referenced by ReadUnusedLocalTypedefNameCandidates().

◆ ReadUsedVTables()

void MultiplexExternalSemaSource::ReadUsedVTables ( SmallVectorImpl< ExternalVTableUse > &  VTables)
overridevirtual

Read the set of used vtables known to the external Sema source.

The external source should append its own used vtables to the given vector. Note that this routine may be invoked multiple times; the external source should take care not to introduce the same vtables repeatedly.

Reimplemented from clang::ExternalSemaSource.

Definition at line 317 of file MultiplexExternalSemaSource.cpp.

References ReadUsedVTables().

Referenced by ReadUsedVTables().

◆ ReadWeakUndeclaredIdentifiers()

void MultiplexExternalSemaSource::ReadWeakUndeclaredIdentifiers ( SmallVectorImpl< std::pair< IdentifierInfo *, WeakInfo > > &  WI)
overridevirtual

Read the set of weak, undeclared identifiers known to the external Sema source.

The external source should append its own weak, undeclared identifiers to the given vector. Note that this routine may be invoked multiple times; the external source should take care not to introduce the same identifiers repeatedly.

Reimplemented from clang::ExternalSemaSource.

Definition at line 311 of file MultiplexExternalSemaSource.cpp.

References ReadWeakUndeclaredIdentifiers().

Referenced by ReadWeakUndeclaredIdentifiers().

◆ StartedDeserializing()

void MultiplexExternalSemaSource::StartedDeserializing ( )
overridevirtual

Notify ExternalASTSource that we started deserialization of a decl or type so until FinishedDeserializing is called there may be decls that are initializing.

Must be paired with FinishedDeserializing.

Reimplemented from clang::ExternalASTSource.

Definition at line 170 of file MultiplexExternalSemaSource.cpp.

References StartedDeserializing().

Referenced by StartedDeserializing().

◆ StartTranslationUnit()

void MultiplexExternalSemaSource::StartTranslationUnit ( ASTConsumer Consumer)
overridevirtual

Function that will be invoked when we begin parsing a new translation unit involving this external AST source.

Reimplemented from clang::ExternalASTSource.

Definition at line 180 of file MultiplexExternalSemaSource.cpp.

References StartTranslationUnit().

Referenced by StartTranslationUnit().

◆ updateOutOfDateSelector()

void MultiplexExternalSemaSource::updateOutOfDateSelector ( Selector  Sel)
overridevirtual

Load the contents of the global method pool for a given selector if necessary.

Reimplemented from clang::ExternalSemaSource.

Definition at line 237 of file MultiplexExternalSemaSource.cpp.

References updateOutOfDateSelector().

Referenced by updateOutOfDateSelector().


The documentation for this class was generated from the following files: