LLDB mainline
lldb_private::SemaSourceWithPriorities Class Reference

A ExternalSemaSource multiplexer that prioritizes its sources. More...

#include <ASTUtils.h>

Inheritance diagram for lldb_private::SemaSourceWithPriorities:
[legend]

Public Member Functions

 SemaSourceWithPriorities (llvm::IntrusiveRefCntPtr< clang::ExternalSemaSource > high_quality_source, llvm::IntrusiveRefCntPtr< clang::ExternalSemaSource > low_quality_source)
 Construct a SemaSourceWithPriorities with a 'high quality' source that has the higher priority and a 'low quality' source that will be used as a fallback.
 ~SemaSourceWithPriorities () override
clang::Decl * GetExternalDecl (clang::GlobalDeclID ID) override
bool LoadExternalSpecializations (const clang::Decl *D, bool OnlyPartial) override
bool LoadExternalSpecializations (const clang::Decl *D, llvm::ArrayRef< clang::TemplateArgument > TemplateArgs) override
void CompleteRedeclChain (const clang::Decl *D) override
clang::Selector GetExternalSelector (uint32_t ID) override
uint32_t GetNumExternalSelectors () override
clang::Stmt * GetExternalDeclStmt (uint64_t Offset) override
clang::CXXBaseSpecifier * GetExternalCXXBaseSpecifiers (uint64_t Offset) override
clang::CXXCtorInitializer ** GetExternalCXXCtorInitializers (uint64_t Offset) override
ExtKind hasExternalDefinitions (const clang::Decl *D) override
bool FindExternalVisibleDeclsByName (const clang::DeclContext *DC, clang::DeclarationName Name, const clang::DeclContext *OriginalDC) override
void completeVisibleDeclsMap (const clang::DeclContext *DC) override
void FindExternalLexicalDecls (const clang::DeclContext *DC, llvm::function_ref< bool(clang::Decl::Kind)> IsKindWeWant, llvm::SmallVectorImpl< clang::Decl * > &Result) override
void FindFileRegionDecls (clang::FileID File, unsigned Offset, unsigned Length, llvm::SmallVectorImpl< clang::Decl * > &Decls) override
void CompleteType (clang::TagDecl *Tag) override
void CompleteType (clang::ObjCInterfaceDecl *Class) override
void ReadComments () override
void StartedDeserializing () override
void FinishedDeserializing () override
void StartTranslationUnit (clang::ASTConsumer *Consumer) override
void PrintStats () override
clang::Module * getModule (unsigned ID) override
bool layoutRecordType (const clang::RecordDecl *Record, uint64_t &Size, uint64_t &Alignment, llvm::DenseMap< const clang::FieldDecl *, uint64_t > &FieldOffsets, llvm::DenseMap< const clang::CXXRecordDecl *, clang::CharUnits > &BaseOffsets, llvm::DenseMap< const clang::CXXRecordDecl *, clang::CharUnits > &VirtualBaseOffsets) override
void getMemoryBufferSizes (MemoryBufferSizes &sizes) const override
void InitializeSema (clang::Sema &S) override
void ForgetSema () override
void ReadMethodPool (clang::Selector Sel) override
void updateOutOfDateSelector (clang::Selector Sel) override
void ReadKnownNamespaces (llvm::SmallVectorImpl< clang::NamespaceDecl * > &Namespaces) override
void ReadUndefinedButUsed (llvm::MapVector< clang::NamedDecl *, clang::SourceLocation > &Undefined) override
void ReadMismatchingDeleteExpressions (llvm::MapVector< clang::FieldDecl *, llvm::SmallVector< std::pair< clang::SourceLocation, bool >, 4 > > &Exprs) override
bool LookupUnqualified (clang::LookupResult &R, clang::Scope *S) override
void ReadTentativeDefinitions (llvm::SmallVectorImpl< clang::VarDecl * > &Defs) override
void ReadUnusedFileScopedDecls (llvm::SmallVectorImpl< const clang::DeclaratorDecl * > &Decls) override
void ReadDelegatingConstructors (llvm::SmallVectorImpl< clang::CXXConstructorDecl * > &Decls) override
void ReadExtVectorDecls (llvm::SmallVectorImpl< clang::TypedefNameDecl * > &Decls) override
void ReadUnusedLocalTypedefNameCandidates (llvm::SmallSetVector< const clang::TypedefNameDecl *, 4 > &Decls) override
void ReadReferencedSelectors (llvm::SmallVectorImpl< std::pair< clang::Selector, clang::SourceLocation > > &Sels) override
void ReadWeakUndeclaredIdentifiers (llvm::SmallVectorImpl< std::pair< clang::IdentifierInfo *, clang::WeakInfo > > &WI) override
void ReadUsedVTables (llvm::SmallVectorImpl< clang::ExternalVTableUse > &VTables) override
void ReadPendingInstantiations (llvm::SmallVectorImpl< std::pair< clang::ValueDecl *, clang::SourceLocation > > &Pending) override
void ReadLateParsedTemplates (llvm::MapVector< const clang::FunctionDecl *, std::unique_ptr< clang::LateParsedTemplate > > &LPTMap) override
clang::TypoCorrection CorrectTypo (const clang::DeclarationNameInfo &Typo, int LookupKind, clang::Scope *S, clang::CXXScopeSpec *SS, clang::CorrectionCandidateCallback &CCC, clang::DeclContext *MemberContext, bool EnteringContext, const clang::ObjCObjectPointerType *OPT) override
bool MaybeDiagnoseMissingCompleteType (clang::SourceLocation Loc, clang::QualType T) override

Private Attributes

llvm::SmallVector< llvm::IntrusiveRefCntPtr< clang::ExternalSemaSource >, 2 > Sources
 The sources ordered in decreasing priority.

Detailed Description

A ExternalSemaSource multiplexer that prioritizes its sources.

This ExternalSemaSource will forward all requests to its attached sources. However, unlike a normal multiplexer it will not forward a request to all sources, but instead give priority to certain sources. If a source with a higher priority can fulfill a request, all sources with a lower priority will not receive the request.

This class is mostly use to multiplex between sources of different 'quality', e.g. a C++ modules and debug information. The C++ module will provide more accurate replies to the requests, but might not be able to answer all requests. The debug information will be used as a fallback then to provide information that is not in the C++ module.

Definition at line 284 of file ASTUtils.h.

Constructor & Destructor Documentation

◆ SemaSourceWithPriorities()

lldb_private::SemaSourceWithPriorities::SemaSourceWithPriorities ( llvm::IntrusiveRefCntPtr< clang::ExternalSemaSource > high_quality_source,
llvm::IntrusiveRefCntPtr< clang::ExternalSemaSource > low_quality_source )
inline

Construct a SemaSourceWithPriorities with a 'high quality' source that has the higher priority and a 'low quality' source that will be used as a fallback.

This class assumes shared ownership of the sources provided to it.

Definition at line 297 of file ASTUtils.h.

References Sources.

◆ ~SemaSourceWithPriorities()

lldb_private::SemaSourceWithPriorities::~SemaSourceWithPriorities ( )
overridedefault

Member Function Documentation

◆ CompleteRedeclChain()

void lldb_private::SemaSourceWithPriorities::CompleteRedeclChain ( const clang::Decl * D)
inlineoverride

Definition at line 337 of file ASTUtils.h.

References CompleteRedeclChain(), and Sources.

Referenced by CompleteRedeclChain().

◆ CompleteType() [1/2]

void lldb_private::SemaSourceWithPriorities::CompleteType ( clang::ObjCInterfaceDecl * Class)
inlineoverride

Definition at line 433 of file ASTUtils.h.

References CompleteType(), and Sources.

◆ CompleteType() [2/2]

void lldb_private::SemaSourceWithPriorities::CompleteType ( clang::TagDecl * Tag)
inlineoverride

Definition at line 424 of file ASTUtils.h.

References Sources.

Referenced by CompleteType().

◆ completeVisibleDeclsMap()

void lldb_private::SemaSourceWithPriorities::completeVisibleDeclsMap ( const clang::DeclContext * DC)
inlineoverride

Definition at line 400 of file ASTUtils.h.

References completeVisibleDeclsMap(), and Sources.

Referenced by completeVisibleDeclsMap().

◆ CorrectTypo()

clang::TypoCorrection lldb_private::SemaSourceWithPriorities::CorrectTypo ( const clang::DeclarationNameInfo & Typo,
int LookupKind,
clang::Scope * S,
clang::CXXScopeSpec * SS,
clang::CorrectionCandidateCallback & CCC,
clang::DeclContext * MemberContext,
bool EnteringContext,
const clang::ObjCObjectPointerType * OPT )
inlineoverride

Definition at line 608 of file ASTUtils.h.

References lldb_private::Source, and Sources.

◆ FindExternalLexicalDecls()

void lldb_private::SemaSourceWithPriorities::FindExternalLexicalDecls ( const clang::DeclContext * DC,
llvm::function_ref< bool(clang::Decl::Kind)> IsKindWeWant,
llvm::SmallVectorImpl< clang::Decl * > & Result )
inlineoverride

Definition at line 406 of file ASTUtils.h.

References Sources.

◆ FindExternalVisibleDeclsByName()

bool lldb_private::SemaSourceWithPriorities::FindExternalVisibleDeclsByName ( const clang::DeclContext * DC,
clang::DeclarationName Name,
const clang::DeclContext * OriginalDC )
inlineoverride

Definition at line 391 of file ASTUtils.h.

References FindExternalVisibleDeclsByName(), and Sources.

Referenced by FindExternalVisibleDeclsByName().

◆ FindFileRegionDecls()

void lldb_private::SemaSourceWithPriorities::FindFileRegionDecls ( clang::FileID File,
unsigned Offset,
unsigned Length,
llvm::SmallVectorImpl< clang::Decl * > & Decls )
inlineoverride

Definition at line 418 of file ASTUtils.h.

References FindFileRegionDecls(), and Sources.

Referenced by FindFileRegionDecls().

◆ FinishedDeserializing()

void lldb_private::SemaSourceWithPriorities::FinishedDeserializing ( )
inlineoverride

Definition at line 448 of file ASTUtils.h.

References FinishedDeserializing(), and Sources.

Referenced by FinishedDeserializing().

◆ ForgetSema()

void lldb_private::SemaSourceWithPriorities::ForgetSema ( )
inlineoverride

Definition at line 495 of file ASTUtils.h.

References lldb_private::Source, and Sources.

◆ GetExternalCXXBaseSpecifiers()

clang::CXXBaseSpecifier * lldb_private::SemaSourceWithPriorities::GetExternalCXXBaseSpecifiers ( uint64_t Offset)
inlineoverride

Definition at line 367 of file ASTUtils.h.

References GetExternalCXXBaseSpecifiers(), and Sources.

Referenced by GetExternalCXXBaseSpecifiers().

◆ GetExternalCXXCtorInitializers()

clang::CXXCtorInitializer ** lldb_private::SemaSourceWithPriorities::GetExternalCXXCtorInitializers ( uint64_t Offset)
inlineoverride

Definition at line 376 of file ASTUtils.h.

References Sources.

◆ GetExternalDecl()

clang::Decl * lldb_private::SemaSourceWithPriorities::GetExternalDecl ( clang::GlobalDeclID ID)
inlineoverride

Definition at line 313 of file ASTUtils.h.

References GetExternalDecl(), ID, and Sources.

Referenced by GetExternalDecl().

◆ GetExternalDeclStmt()

clang::Stmt * lldb_private::SemaSourceWithPriorities::GetExternalDeclStmt ( uint64_t Offset)
inlineoverride

Definition at line 359 of file ASTUtils.h.

References GetExternalDeclStmt(), and Sources.

Referenced by GetExternalDeclStmt().

◆ GetExternalSelector()

clang::Selector lldb_private::SemaSourceWithPriorities::GetExternalSelector ( uint32_t ID)
inlineoverride

Definition at line 342 of file ASTUtils.h.

References ID, and Sources.

◆ getMemoryBufferSizes()

void lldb_private::SemaSourceWithPriorities::getMemoryBufferSizes ( MemoryBufferSizes & sizes) const
inlineoverride

Definition at line 481 of file ASTUtils.h.

References lldb_private::Source, and Sources.

◆ getModule()

clang::Module * lldb_private::SemaSourceWithPriorities::getModule ( unsigned ID)
inlineoverride

Definition at line 460 of file ASTUtils.h.

References getModule(), ID, and Sources.

Referenced by getModule().

◆ GetNumExternalSelectors()

uint32_t lldb_private::SemaSourceWithPriorities::GetNumExternalSelectors ( )
inlineoverride

Definition at line 352 of file ASTUtils.h.

References GetNumExternalSelectors(), and Sources.

Referenced by GetNumExternalSelectors().

◆ hasExternalDefinitions()

ExtKind lldb_private::SemaSourceWithPriorities::hasExternalDefinitions ( const clang::Decl * D)
inlineoverride

Definition at line 383 of file ASTUtils.h.

References Sources.

◆ InitializeSema()

void lldb_private::SemaSourceWithPriorities::InitializeSema ( clang::Sema & S)
inlineoverride

Definition at line 490 of file ASTUtils.h.

References lldb_private::Source, and Sources.

◆ layoutRecordType()

bool lldb_private::SemaSourceWithPriorities::layoutRecordType ( const clang::RecordDecl * Record,
uint64_t & Size,
uint64_t & Alignment,
llvm::DenseMap< const clang::FieldDecl *, uint64_t > & FieldOffsets,
llvm::DenseMap< const clang::CXXRecordDecl *, clang::CharUnits > & BaseOffsets,
llvm::DenseMap< const clang::CXXRecordDecl *, clang::CharUnits > & VirtualBaseOffsets )
inlineoverride

Definition at line 467 of file ASTUtils.h.

References layoutRecordType(), and Sources.

Referenced by layoutRecordType().

◆ LoadExternalSpecializations() [1/2]

bool lldb_private::SemaSourceWithPriorities::LoadExternalSpecializations ( const clang::Decl * D,
bool OnlyPartial )
inlineoverride

Definition at line 320 of file ASTUtils.h.

References LoadExternalSpecializations(), and Sources.

Referenced by LoadExternalSpecializations(), and LoadExternalSpecializations().

◆ LoadExternalSpecializations() [2/2]

bool lldb_private::SemaSourceWithPriorities::LoadExternalSpecializations ( const clang::Decl * D,
llvm::ArrayRef< clang::TemplateArgument > TemplateArgs )
inlineoverride

Definition at line 328 of file ASTUtils.h.

References LoadExternalSpecializations(), and Sources.

◆ LookupUnqualified()

bool lldb_private::SemaSourceWithPriorities::LookupUnqualified ( clang::LookupResult & R,
clang::Scope * S )
inlineoverride

Definition at line 531 of file ASTUtils.h.

References lldb_private::Source, and Sources.

◆ MaybeDiagnoseMissingCompleteType()

bool lldb_private::SemaSourceWithPriorities::MaybeDiagnoseMissingCompleteType ( clang::SourceLocation Loc,
clang::QualType T )
inlineoverride

Definition at line 622 of file ASTUtils.h.

References lldb_private::Source, and Sources.

◆ PrintStats()

void lldb_private::SemaSourceWithPriorities::PrintStats ( )
override

Definition at line 23 of file ASTUtils.cpp.

References PrintStats(), and Sources.

Referenced by PrintStats().

◆ ReadComments()

void lldb_private::SemaSourceWithPriorities::ReadComments ( )
inlineoverride

Definition at line 438 of file ASTUtils.h.

References ReadComments(), and Sources.

Referenced by ReadComments().

◆ ReadDelegatingConstructors()

void lldb_private::SemaSourceWithPriorities::ReadDelegatingConstructors ( llvm::SmallVectorImpl< clang::CXXConstructorDecl * > & Decls)
inlineoverride

Definition at line 553 of file ASTUtils.h.

References lldb_private::Source, and Sources.

◆ ReadExtVectorDecls()

void lldb_private::SemaSourceWithPriorities::ReadExtVectorDecls ( llvm::SmallVectorImpl< clang::TypedefNameDecl * > & Decls)
inlineoverride

Definition at line 559 of file ASTUtils.h.

References lldb_private::Source, and Sources.

◆ ReadKnownNamespaces()

void lldb_private::SemaSourceWithPriorities::ReadKnownNamespaces ( llvm::SmallVectorImpl< clang::NamespaceDecl * > & Namespaces)
inlineoverride

Definition at line 510 of file ASTUtils.h.

References lldb_private::Source, and Sources.

◆ ReadLateParsedTemplates()

void lldb_private::SemaSourceWithPriorities::ReadLateParsedTemplates ( llvm::MapVector< const clang::FunctionDecl *, std::unique_ptr< clang::LateParsedTemplate > > & LPTMap)
inlineoverride

Definition at line 599 of file ASTUtils.h.

References lldb_private::Source, and Sources.

◆ ReadMethodPool()

void lldb_private::SemaSourceWithPriorities::ReadMethodPool ( clang::Selector Sel)
inlineoverride

Definition at line 500 of file ASTUtils.h.

References lldb_private::Source, and Sources.

◆ ReadMismatchingDeleteExpressions()

void lldb_private::SemaSourceWithPriorities::ReadMismatchingDeleteExpressions ( llvm::MapVector< clang::FieldDecl *, llvm::SmallVector< std::pair< clang::SourceLocation, bool >, 4 > > & Exprs)
inlineoverride

Definition at line 523 of file ASTUtils.h.

References lldb_private::Source, and Sources.

◆ ReadPendingInstantiations()

void lldb_private::SemaSourceWithPriorities::ReadPendingInstantiations ( llvm::SmallVectorImpl< std::pair< clang::ValueDecl *, clang::SourceLocation > > & Pending)
inlineoverride

Definition at line 591 of file ASTUtils.h.

References lldb_private::Source, and Sources.

◆ ReadReferencedSelectors()

void lldb_private::SemaSourceWithPriorities::ReadReferencedSelectors ( llvm::SmallVectorImpl< std::pair< clang::Selector, clang::SourceLocation > > & Sels)
inlineoverride

Definition at line 571 of file ASTUtils.h.

References lldb_private::Source, and Sources.

◆ ReadTentativeDefinitions()

void lldb_private::SemaSourceWithPriorities::ReadTentativeDefinitions ( llvm::SmallVectorImpl< clang::VarDecl * > & Defs)
inlineoverride

Definition at line 541 of file ASTUtils.h.

References lldb_private::Source, and Sources.

◆ ReadUndefinedButUsed()

void lldb_private::SemaSourceWithPriorities::ReadUndefinedButUsed ( llvm::MapVector< clang::NamedDecl *, clang::SourceLocation > & Undefined)
inlineoverride

Definition at line 516 of file ASTUtils.h.

References lldb_private::Source, and Sources.

◆ ReadUnusedFileScopedDecls()

void lldb_private::SemaSourceWithPriorities::ReadUnusedFileScopedDecls ( llvm::SmallVectorImpl< const clang::DeclaratorDecl * > & Decls)
inlineoverride

Definition at line 547 of file ASTUtils.h.

References lldb_private::Source, and Sources.

◆ ReadUnusedLocalTypedefNameCandidates()

void lldb_private::SemaSourceWithPriorities::ReadUnusedLocalTypedefNameCandidates ( llvm::SmallSetVector< const clang::TypedefNameDecl *, 4 > & Decls)
inlineoverride

Definition at line 565 of file ASTUtils.h.

References lldb_private::Source, and Sources.

◆ ReadUsedVTables()

void lldb_private::SemaSourceWithPriorities::ReadUsedVTables ( llvm::SmallVectorImpl< clang::ExternalVTableUse > & VTables)
inlineoverride

Definition at line 585 of file ASTUtils.h.

References lldb_private::Source, and Sources.

◆ ReadWeakUndeclaredIdentifiers()

void lldb_private::SemaSourceWithPriorities::ReadWeakUndeclaredIdentifiers ( llvm::SmallVectorImpl< std::pair< clang::IdentifierInfo *, clang::WeakInfo > > & WI)
inlineoverride

Definition at line 578 of file ASTUtils.h.

References lldb_private::Source, and Sources.

◆ StartedDeserializing()

void lldb_private::SemaSourceWithPriorities::StartedDeserializing ( )
inlineoverride

Definition at line 443 of file ASTUtils.h.

References Sources, and StartedDeserializing().

Referenced by StartedDeserializing().

◆ StartTranslationUnit()

void lldb_private::SemaSourceWithPriorities::StartTranslationUnit ( clang::ASTConsumer * Consumer)
inlineoverride

Definition at line 453 of file ASTUtils.h.

References Sources, and StartTranslationUnit().

Referenced by StartTranslationUnit().

◆ updateOutOfDateSelector()

void lldb_private::SemaSourceWithPriorities::updateOutOfDateSelector ( clang::Selector Sel)
inlineoverride

Definition at line 505 of file ASTUtils.h.

References lldb_private::Source, and Sources.

Member Data Documentation

◆ Sources


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