LLDB mainline
Public Member Functions | Private Attributes | List of all members
lldb_private::SemaSourceWithPriorities Class Reference

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

#include <ASTUtils.h>

Inheritance diagram for lldb_private::SemaSourceWithPriorities:
Inheritance graph
[legend]

Public Member Functions

 SemaSourceWithPriorities (clang::ExternalSemaSource *high_quality_source, 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) 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< 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 282 of file ASTUtils.h.

Constructor & Destructor Documentation

◆ SemaSourceWithPriorities()

lldb_private::SemaSourceWithPriorities::SemaSourceWithPriorities ( clang::ExternalSemaSource *  high_quality_source,
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 294 of file ASTUtils.h.

References Sources.

◆ ~SemaSourceWithPriorities()

lldb_private::SemaSourceWithPriorities::~SemaSourceWithPriorities ( )
override

Definition at line 21 of file ASTUtils.cpp.

References lldb_private::Source.

Member Function Documentation

◆ CompleteRedeclChain()

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

Definition at line 336 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 431 of file ASTUtils.h.

References CompleteType(), and Sources.

◆ CompleteType() [2/2]

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

Definition at line 422 of file ASTUtils.h.

References Sources.

Referenced by CompleteType().

◆ completeVisibleDeclsMap()

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

Definition at line 398 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 606 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 404 of file ASTUtils.h.

References Sources.

◆ FindExternalVisibleDeclsByName()

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

Definition at line 390 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 416 of file ASTUtils.h.

References FindFileRegionDecls(), and Sources.

Referenced by FindFileRegionDecls().

◆ FinishedDeserializing()

void lldb_private::SemaSourceWithPriorities::FinishedDeserializing ( )
inlineoverride

Definition at line 446 of file ASTUtils.h.

References FinishedDeserializing(), and Sources.

Referenced by FinishedDeserializing().

◆ ForgetSema()

void lldb_private::SemaSourceWithPriorities::ForgetSema ( )
inlineoverride

Definition at line 493 of file ASTUtils.h.

References lldb_private::Source, and Sources.

◆ GetExternalCXXBaseSpecifiers()

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

Definition at line 366 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 375 of file ASTUtils.h.

References Sources.

◆ GetExternalDecl()

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

Definition at line 312 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 358 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 341 of file ASTUtils.h.

References ID, and Sources.

◆ getMemoryBufferSizes()

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

Definition at line 479 of file ASTUtils.h.

References lldb_private::Source, and Sources.

◆ getModule()

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

Definition at line 458 of file ASTUtils.h.

References getModule(), ID, and Sources.

Referenced by getModule().

◆ GetNumExternalSelectors()

uint32_t lldb_private::SemaSourceWithPriorities::GetNumExternalSelectors ( )
inlineoverride

Definition at line 351 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 382 of file ASTUtils.h.

References Sources.

◆ InitializeSema()

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

Definition at line 488 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 465 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 319 of file ASTUtils.h.

References LoadExternalSpecializations(), and Sources.

Referenced by LoadExternalSpecializations().

◆ LoadExternalSpecializations() [2/2]

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

Definition at line 327 of file ASTUtils.h.

References LoadExternalSpecializations(), and Sources.

◆ LookupUnqualified()

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

Definition at line 529 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 620 of file ASTUtils.h.

References lldb_private::Source, and Sources.

◆ PrintStats()

void lldb_private::SemaSourceWithPriorities::PrintStats ( )
override

Definition at line 26 of file ASTUtils.cpp.

◆ ReadComments()

void lldb_private::SemaSourceWithPriorities::ReadComments ( )
inlineoverride

Definition at line 436 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 551 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 557 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 508 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 597 of file ASTUtils.h.

References lldb_private::Source, and Sources.

◆ ReadMethodPool()

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

Definition at line 498 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 521 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 589 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 569 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 539 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 514 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 545 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 563 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 583 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 576 of file ASTUtils.h.

References lldb_private::Source, and Sources.

◆ StartedDeserializing()

void lldb_private::SemaSourceWithPriorities::StartedDeserializing ( )
inlineoverride

Definition at line 441 of file ASTUtils.h.

References Sources, and StartedDeserializing().

Referenced by StartedDeserializing().

◆ StartTranslationUnit()

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

Definition at line 451 of file ASTUtils.h.

References Sources, and StartTranslationUnit().

Referenced by StartTranslationUnit().

◆ updateOutOfDateSelector()

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

Definition at line 503 of file ASTUtils.h.

References lldb_private::Source, and Sources.

Member Data Documentation

◆ Sources

llvm::SmallVector<clang::ExternalSemaSource *, 2> lldb_private::SemaSourceWithPriorities::Sources
private

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