clang: clang::MultiplexExternalSemaSource Class Reference (original) (raw)
An abstract interface that should be implemented by external AST sources that also provide information for semantic analysis. More...
#include "[clang/Sema/MultiplexExternalSemaSource.h](MultiplexExternalSemaSource%5F8h%5Fsource.html)"
| Public Member Functions | |
|---|---|
| MultiplexExternalSemaSource (llvm::IntrusiveRefCntPtr< ExternalSemaSource > S1, llvm::IntrusiveRefCntPtr< ExternalSemaSource > S2) | |
| Constructs a new multiplexing external sema source and appends the given element to it. | |
| void | AddSource (llvm::IntrusiveRefCntPtr< ExternalSemaSource > Source) |
| Appends new source to the source list. | |
| Decl * | GetExternalDecl (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. | |
| Stmt * | GetExternalDeclStmt (uint64_t Offset) override |
| Resolve the offset of a statement in the decl stream into a statement. | |
| 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. | |
| 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 | wasThisDeclarationADefinition (const FunctionDecl *FD) override |
| True if this function declaration was a definition before in its own module. | |
| bool | FindExternalVisibleDeclsByName (const DeclContext *DC, DeclarationName Name, const DeclContext *OriginalDC) 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. | |
| Module * | getModule (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 | |
| Public Member Functions inherited from clang::ExternalASTSource | |
| ExternalASTSource ()=default | |
| virtual | ~ExternalASTSource () |
| uint32_t | getGeneration () const |
| Get the current generation of this AST source. | |
| virtual void | updateOutOfDateIdentifier (const IdentifierInfo &II) |
| Update an out-of-date identifier. | |
| virtual std::optional< ASTSourceDescriptor > | getSourceDescriptor (unsigned ID) |
| Return a descriptor for the corresponding module, if one exists. | |
| void | FindExternalLexicalDecls (const DeclContext *DC, SmallVectorImpl< Decl * > &Result) |
| Finds all declarations lexically contained within the given DeclContext. | |
| MemoryBufferSizes | getMemoryBufferSizes () const |
| Return the amount of memory used by memory buffers, breaking down by heap-backed versus mmap'ed memory. | |
| 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 bool | classof (const ExternalASTSource *S) |
| 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) |
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.
◆ AddSource()
◆ AssignedLambdaNumbering()
| void MultiplexExternalSemaSource::AssignedLambdaNumbering ( CXXRecordDecl * Lambda) | overridevirtual |
|---|
◆ classof()
◆ CompleteRedeclChain()
| void MultiplexExternalSemaSource::CompleteRedeclChain ( const Decl * D) | overridevirtual |
|---|
◆ CompleteType() [1/2]
| void MultiplexExternalSemaSource::CompleteType ( ObjCInterfaceDecl * Class) | overridevirtual |
|---|
◆ CompleteType() [2/2]
| void MultiplexExternalSemaSource::CompleteType ( TagDecl * Tag) | overridevirtual |
|---|
◆ completeVisibleDeclsMap()
| void MultiplexExternalSemaSource::completeVisibleDeclsMap ( const DeclContext * DC) | overridevirtual |
|---|
◆ CorrectTypo()
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
| TypoName | the DeclarationNameInfo structure that contains the name that was present in the source code along with its location. |
|---|---|
| LookupKind | the name-lookup criteria used to search for the name. |
| S | the scope in which name lookup occurs. |
| SS | the nested-name-specifier that precedes the name we're looking for, if present. |
| CCC | A CorrectionCandidateCallback object that provides further validation of typo correction candidates. It also provides flags for determining the set of keywords permitted. |
| MemberContext | if non-NULL, the context in which to look for a member access expression. |
| EnteringContext | whether we're entering the context described by the nested-name-specifier SS. |
| OPT | when non-NULL, the search for visible declarations will also walk the protocols in the qualified interfaces of OPT. |
Returns
a [TypoCorrection](classclang%5F1%5F1TypoCorrection.html "Simple class containing the result of Sema::CorrectTypo.") containing the corrected name if the typo along with information such as the [NamedDecl](classclang%5F1%5F1NamedDecl.html "This represents a decl that may have a name.") where the corrected name was declared, and any additional [NestedNameSpecifier](classclang%5F1%5F1NestedNameSpecifier.html "Represents a C++ nested name specifier, such as "\::std::vector<int>::".") needed to access it (C++ only). The [TypoCorrection](classclang%5F1%5F1TypoCorrection.html "Simple class containing the result of Sema::CorrectTypo.") is empty if there is no correction.
Note
LookupKind must correspond to a valid Sema::LookupNameKind
[ExternalSemaSource::CorrectTypo](classclang%5F1%5F1ExternalSemaSource.html#a3febc2b905546ca1fc38ada315b6a0ed "Try to "correct" a typo in the source code by finding visible declarations whose names are similar to...") 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 340 of file MultiplexExternalSemaSource.cpp.
References clang::C, and CorrectTypo().
Referenced by CorrectTypo().
◆ FindExternalLexicalDecls()
◆ FindExternalVisibleDeclsByName()
◆ FindFileRegionDecls()
◆ FinishedDeserializing()
| void MultiplexExternalSemaSource::FinishedDeserializing ( ) | overridevirtual |
|---|
◆ ForgetSema()
| void MultiplexExternalSemaSource::ForgetSema ( ) | overridevirtual |
|---|
◆ GetExternalCXXBaseSpecifiers()
| CXXBaseSpecifier * MultiplexExternalSemaSource::GetExternalCXXBaseSpecifiers ( uint64_t Offset) | overridevirtual |
|---|
◆ GetExternalCXXCtorInitializers()
| CXXCtorInitializer ** MultiplexExternalSemaSource::GetExternalCXXCtorInitializers ( uint64_t Offset) | overridevirtual |
|---|
◆ GetExternalDecl()
| Decl * MultiplexExternalSemaSource::GetExternalDecl ( GlobalDeclID ID) | overridevirtual |
|---|
◆ GetExternalDeclStmt()
| Stmt * MultiplexExternalSemaSource::GetExternalDeclStmt ( uint64_t Offset) | overridevirtual |
|---|
◆ GetExternalSelector()
| Selector MultiplexExternalSemaSource::GetExternalSelector ( uint32_t ID) | overridevirtual |
|---|
◆ getMemoryBufferSizes()
| void MultiplexExternalSemaSource::getMemoryBufferSizes ( MemoryBufferSizes & sizes) const | overridevirtual |
|---|
◆ getModule()
| Module * MultiplexExternalSemaSource::getModule ( unsigned ID) | overridevirtual |
|---|
◆ GetNumExternalSelectors()
| uint32_t MultiplexExternalSemaSource::GetNumExternalSelectors ( ) | overridevirtual |
|---|
◆ hasExternalDefinitions()
◆ InitializeSema()
| void MultiplexExternalSemaSource::InitializeSema ( Sema & S) | overridevirtual |
|---|
◆ isA()
| bool clang::MultiplexExternalSemaSource::isA ( const void * ClassID) const | inlineoverridevirtual |
|---|
◆ 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
| Record | The record whose layout is being requested. |
|---|---|
| Size | The final size of the record, in bits. |
| Alignment | The final alignment of the record, in bits. |
| FieldOffsets | The offset of each of the fields within the record, expressed in bits. All of the fields must be provided with offsets. |
| BaseOffsets | The 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. |
| VirtualBaseOffsets | The 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 200 of file MultiplexExternalSemaSource.cpp.
References layoutRecordType().
Referenced by layoutRecordType().
◆ LoadExternalSpecializations() [1/2]
◆ LoadExternalSpecializations() [2/2]
| bool MultiplexExternalSemaSource::LoadExternalSpecializations ( const Decl * D, bool OnlyPartial ) | overridevirtual |
|---|
◆ LookupUnqualified()
◆ MaybeDiagnoseMissingCompleteType()
◆ PrintStats()
| void MultiplexExternalSemaSource::PrintStats ( ) | overridevirtual |
|---|
◆ ReadComments()
| void MultiplexExternalSemaSource::ReadComments ( ) | overridevirtual |
|---|
◆ ReadDeclsToCheckForDeferredDiags()
| void MultiplexExternalSemaSource::ReadDeclsToCheckForDeferredDiags ( llvm::SmallSetVector< Decl *, 4 > & Decls) | overridevirtual |
|---|
◆ ReadDelegatingConstructors()
◆ ReadExtVectorDecls()
◆ ReadKnownNamespaces()
◆ ReadLateParsedTemplates()
| void MultiplexExternalSemaSource::ReadLateParsedTemplates ( llvm::MapVector< const FunctionDecl *, std::unique_ptr< LateParsedTemplate > > & LPTMap) | overridevirtual |
|---|
◆ ReadMethodPool()
| void MultiplexExternalSemaSource::ReadMethodPool ( Selector Sel) | overridevirtual |
|---|
◆ ReadMismatchingDeleteExpressions()
◆ ReadPendingInstantiations()
◆ ReadReferencedSelectors()
◆ ReadTentativeDefinitions()
| void MultiplexExternalSemaSource::ReadTentativeDefinitions ( SmallVectorImpl< VarDecl * > & Defs) | overridevirtual |
|---|
◆ ReadUndefinedButUsed()
| void MultiplexExternalSemaSource::ReadUndefinedButUsed ( llvm::MapVector< NamedDecl *, SourceLocation > & Undefined) | overridevirtual |
|---|
◆ ReadUnusedFileScopedDecls()
◆ ReadUnusedLocalTypedefNameCandidates()
◆ ReadUsedVTables()
◆ ReadWeakUndeclaredIdentifiers()
◆ StartedDeserializing()
| void MultiplexExternalSemaSource::StartedDeserializing ( ) | overridevirtual |
|---|
◆ StartTranslationUnit()
| void MultiplexExternalSemaSource::StartTranslationUnit ( ASTConsumer * Consumer) | overridevirtual |
|---|
◆ updateOutOfDateSelector()
| void MultiplexExternalSemaSource::updateOutOfDateSelector ( Selector Sel) | overridevirtual |
|---|
◆ wasThisDeclarationADefinition()
| bool MultiplexExternalSemaSource::wasThisDeclarationADefinition ( const FunctionDecl * FD) | overridevirtual |
|---|
The documentation for this class was generated from the following files:
- include/clang/Sema/MultiplexExternalSemaSource.h
- lib/Sema/MultiplexExternalSemaSource.cpp