clang  14.0.0git
MultiplexExternalSemaSource.cpp
Go to the documentation of this file.
1 //===--- MultiplexExternalSemaSource.cpp ---------------------------------===//
2 //
3 // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
4 // See https://llvm.org/LICENSE.txt for license information.
5 // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
6 //
7 //===----------------------------------------------------------------------===//
8 //
9 // This file implements the event dispatching to the subscribed clients.
10 //
11 //===----------------------------------------------------------------------===//
13 #include "clang/Sema/Lookup.h"
14 
15 using namespace clang;
16 
17 char MultiplexExternalSemaSource::ID;
18 
19 ///Constructs a new multiplexing external sema source and appends the
20 /// given element to it.
21 ///
23  ExternalSemaSource &s2){
24  Sources.push_back(&s1);
25  Sources.push_back(&s2);
26 }
27 
28 // pin the vtable here.
30 
31 ///Appends new source to the source list.
32 ///
33 ///\param[in] source - An ExternalSemaSource.
34 ///
36  Sources.push_back(&source);
37 }
38 
39 //===----------------------------------------------------------------------===//
40 // ExternalASTSource.
41 //===----------------------------------------------------------------------===//
42 
44  for(size_t i = 0; i < Sources.size(); ++i)
45  if (Decl *Result = Sources[i]->GetExternalDecl(ID))
46  return Result;
47  return nullptr;
48 }
49 
51  for (size_t i = 0; i < Sources.size(); ++i)
52  Sources[i]->CompleteRedeclChain(D);
53 }
54 
56  Selector Sel;
57  for(size_t i = 0; i < Sources.size(); ++i) {
58  Sel = Sources[i]->GetExternalSelector(ID);
59  if (!Sel.isNull())
60  return Sel;
61  }
62  return Sel;
63 }
64 
66  uint32_t total = 0;
67  for(size_t i = 0; i < Sources.size(); ++i)
68  total += Sources[i]->GetNumExternalSelectors();
69  return total;
70 }
71 
73  for(size_t i = 0; i < Sources.size(); ++i)
74  if (Stmt *Result = Sources[i]->GetExternalDeclStmt(Offset))
75  return Result;
76  return nullptr;
77 }
78 
80  uint64_t Offset){
81  for(size_t i = 0; i < Sources.size(); ++i)
83  return R;
84  return nullptr;
85 }
86 
89  for (auto *S : Sources)
90  if (auto *R = S->GetExternalCXXCtorInitializers(Offset))
91  return R;
92  return nullptr;
93 }
94 
97  for (const auto &S : Sources)
98  if (auto EK = S->hasExternalDefinitions(D))
99  if (EK != EK_ReplyHazy)
100  return EK;
101  return EK_ReplyHazy;
102 }
103 
106  bool AnyDeclsFound = false;
107  for (size_t i = 0; i < Sources.size(); ++i)
108  AnyDeclsFound |= Sources[i]->FindExternalVisibleDeclsByName(DC, Name);
109  return AnyDeclsFound;
110 }
111 
113  for(size_t i = 0; i < Sources.size(); ++i)
114  Sources[i]->completeVisibleDeclsMap(DC);
115 }
116 
118  const DeclContext *DC, llvm::function_ref<bool(Decl::Kind)> IsKindWeWant,
119  SmallVectorImpl<Decl *> &Result) {
120  for(size_t i = 0; i < Sources.size(); ++i)
121  Sources[i]->FindExternalLexicalDecls(DC, IsKindWeWant, Result);
122 }
123 
125  unsigned Offset,
126  unsigned Length,
127  SmallVectorImpl<Decl *> &Decls){
128  for(size_t i = 0; i < Sources.size(); ++i)
129  Sources[i]->FindFileRegionDecls(File, Offset, Length, Decls);
130 }
131 
133  for(size_t i = 0; i < Sources.size(); ++i)
134  Sources[i]->CompleteType(Tag);
135 }
136 
138  for(size_t i = 0; i < Sources.size(); ++i)
139  Sources[i]->CompleteType(Class);
140 }
141 
143  for(size_t i = 0; i < Sources.size(); ++i)
144  Sources[i]->ReadComments();
145 }
146 
148  for(size_t i = 0; i < Sources.size(); ++i)
149  Sources[i]->StartedDeserializing();
150 }
151 
153  for(size_t i = 0; i < Sources.size(); ++i)
154  Sources[i]->FinishedDeserializing();
155 }
156 
158  for(size_t i = 0; i < Sources.size(); ++i)
159  Sources[i]->StartTranslationUnit(Consumer);
160 }
161 
163  for(size_t i = 0; i < Sources.size(); ++i)
164  Sources[i]->PrintStats();
165 }
166 
168  for (size_t i = 0; i < Sources.size(); ++i)
169  if (auto M = Sources[i]->getModule(ID))
170  return M;
171  return nullptr;
172 }
173 
175  uint64_t &Size,
176  uint64_t &Alignment,
177  llvm::DenseMap<const FieldDecl *, uint64_t> &FieldOffsets,
178  llvm::DenseMap<const CXXRecordDecl *, CharUnits> &BaseOffsets,
179  llvm::DenseMap<const CXXRecordDecl *, CharUnits> &VirtualBaseOffsets){
180  for(size_t i = 0; i < Sources.size(); ++i)
181  if (Sources[i]->layoutRecordType(Record, Size, Alignment, FieldOffsets,
182  BaseOffsets, VirtualBaseOffsets))
183  return true;
184  return false;
185 }
186 
189  for(size_t i = 0; i < Sources.size(); ++i)
190  Sources[i]->getMemoryBufferSizes(sizes);
191 
192 }
193 
194 //===----------------------------------------------------------------------===//
195 // ExternalSemaSource.
196 //===----------------------------------------------------------------------===//
197 
198 
200  for(size_t i = 0; i < Sources.size(); ++i)
201  Sources[i]->InitializeSema(S);
202 }
203 
205  for(size_t i = 0; i < Sources.size(); ++i)
206  Sources[i]->ForgetSema();
207 }
208 
210  for(size_t i = 0; i < Sources.size(); ++i)
211  Sources[i]->ReadMethodPool(Sel);
212 }
213 
215  for(size_t i = 0; i < Sources.size(); ++i)
216  Sources[i]->updateOutOfDateSelector(Sel);
217 }
218 
220  SmallVectorImpl<NamespaceDecl*> &Namespaces){
221  for(size_t i = 0; i < Sources.size(); ++i)
222  Sources[i]->ReadKnownNamespaces(Namespaces);
223 }
224 
226  llvm::MapVector<NamedDecl *, SourceLocation> &Undefined) {
227  for(size_t i = 0; i < Sources.size(); ++i)
228  Sources[i]->ReadUndefinedButUsed(Undefined);
229 }
230 
232  llvm::MapVector<FieldDecl *,
233  llvm::SmallVector<std::pair<SourceLocation, bool>, 4>> &
234  Exprs) {
235  for (auto &Source : Sources)
236  Source->ReadMismatchingDeleteExpressions(Exprs);
237 }
238 
240  for(size_t i = 0; i < Sources.size(); ++i)
241  Sources[i]->LookupUnqualified(R, S);
242 
243  return !R.empty();
244 }
245 
247  SmallVectorImpl<VarDecl*> &TentativeDefs) {
248  for(size_t i = 0; i < Sources.size(); ++i)
249  Sources[i]->ReadTentativeDefinitions(TentativeDefs);
250 }
251 
254  for(size_t i = 0; i < Sources.size(); ++i)
255  Sources[i]->ReadUnusedFileScopedDecls(Decls);
256 }
257 
260  for(size_t i = 0; i < Sources.size(); ++i)
261  Sources[i]->ReadDelegatingConstructors(Decls);
262 }
263 
266  for(size_t i = 0; i < Sources.size(); ++i)
267  Sources[i]->ReadExtVectorDecls(Decls);
268 }
269 
272  for(size_t i = 0; i < Sources.size(); ++i)
273  Sources[i]->ReadDeclsToCheckForDeferredDiags(Decls);
274 }
275 
278  for(size_t i = 0; i < Sources.size(); ++i)
279  Sources[i]->ReadUnusedLocalTypedefNameCandidates(Decls);
280 }
281 
283  SmallVectorImpl<std::pair<Selector, SourceLocation> > &Sels) {
284  for(size_t i = 0; i < Sources.size(); ++i)
285  Sources[i]->ReadReferencedSelectors(Sels);
286 }
287 
289  SmallVectorImpl<std::pair<IdentifierInfo*, WeakInfo> > &WI) {
290  for(size_t i = 0; i < Sources.size(); ++i)
291  Sources[i]->ReadWeakUndeclaredIdentifiers(WI);
292 }
293 
296  for(size_t i = 0; i < Sources.size(); ++i)
297  Sources[i]->ReadUsedVTables(VTables);
298 }
299 
301  SmallVectorImpl<std::pair<ValueDecl*,
302  SourceLocation> > &Pending) {
303  for(size_t i = 0; i < Sources.size(); ++i)
304  Sources[i]->ReadPendingInstantiations(Pending);
305 }
306 
308  llvm::MapVector<const FunctionDecl *, std::unique_ptr<LateParsedTemplate>>
309  &LPTMap) {
310  for (size_t i = 0; i < Sources.size(); ++i)
311  Sources[i]->ReadLateParsedTemplates(LPTMap);
312 }
313 
315  const DeclarationNameInfo &Typo,
316  int LookupKind, Scope *S, CXXScopeSpec *SS,
318  DeclContext *MemberContext,
319  bool EnteringContext,
320  const ObjCObjectPointerType *OPT) {
321  for (size_t I = 0, E = Sources.size(); I < E; ++I) {
322  if (TypoCorrection C = Sources[I]->CorrectTypo(Typo, LookupKind, S, SS, CCC,
323  MemberContext,
324  EnteringContext, OPT))
325  return C;
326  }
327  return TypoCorrection();
328 }
329 
331  SourceLocation Loc, QualType T) {
332  for (size_t I = 0, E = Sources.size(); I < E; ++I) {
333  if (Sources[I]->MaybeDiagnoseMissingCompleteType(Loc, T))
334  return true;
335  }
336  return false;
337 }
clang::ObjCInterfaceDecl
Represents an ObjC class declaration.
Definition: DeclObjC.h:1151
clang::MultiplexExternalSemaSource::FinishedDeserializing
void FinishedDeserializing() override
Notify ExternalASTSource that we finished the deserialization of a decl or type.
Definition: MultiplexExternalSemaSource.cpp:152
clang::MultiplexExternalSemaSource::GetExternalCXXCtorInitializers
CXXCtorInitializer ** GetExternalCXXCtorInitializers(uint64_t Offset) override
Resolve a handle to a list of ctor initializers into the list of initializers themselves.
Definition: MultiplexExternalSemaSource.cpp:88
clang::DeclaratorContext::File
@ File
clang::DeclContext
DeclContext - This is used only as base class of specific decl types that can act as declaration cont...
Definition: DeclBase.h:1347
clang::TypoCorrection
Simple class containing the result of Sema::CorrectTypo.
Definition: TypoCorrection.h:42
clang::MultiplexExternalSemaSource::ReadTentativeDefinitions
void ReadTentativeDefinitions(SmallVectorImpl< VarDecl * > &Defs) override
Read the set of tentative definitions known to the external Sema source.
Definition: MultiplexExternalSemaSource.cpp:246
llvm::SmallVector
Definition: LLVM.h:38
Lookup.h
clang::SourceLocation
Encodes a location in the source.
Definition: SourceLocation.h:88
clang::MultiplexExternalSemaSource::ReadMismatchingDeleteExpressions
void ReadMismatchingDeleteExpressions(llvm::MapVector< FieldDecl *, llvm::SmallVector< std::pair< SourceLocation, bool >, 4 >> &Exprs) override
Definition: MultiplexExternalSemaSource.cpp:231
clang::QualType
A (possibly-)qualified type.
Definition: Type.h:673
clang::MultiplexExternalSemaSource::ForgetSema
void ForgetSema() override
Inform the semantic consumer that Sema is no longer available.
Definition: MultiplexExternalSemaSource.cpp:204
clang::FieldDecl
Represents a member of a struct/union/class.
Definition: Decl.h:2835
clang::MultiplexExternalSemaSource::ReadKnownNamespaces
void ReadKnownNamespaces(SmallVectorImpl< NamespaceDecl * > &Namespaces) override
Load the set of namespaces that are known to the external source, which will be used during typo corr...
Definition: MultiplexExternalSemaSource.cpp:219
clang::MultiplexExternalSemaSource::layoutRecordType
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.
Definition: MultiplexExternalSemaSource.cpp:174
clang::LookupResult
Represents the results of name lookup.
Definition: Lookup.h:46
clang::MultiplexExternalSemaSource::ReadUnusedFileScopedDecls
void ReadUnusedFileScopedDecls(SmallVectorImpl< const DeclaratorDecl * > &Decls) override
Read the set of unused file-scope declarations known to the external Sema source.
Definition: MultiplexExternalSemaSource.cpp:252
clang::MultiplexExternalSemaSource::completeVisibleDeclsMap
void completeVisibleDeclsMap(const DeclContext *DC) override
Ensures that the table of all visible declarations inside this context is up to date.
Definition: MultiplexExternalSemaSource.cpp:112
clang::CXXScopeSpec
Represents a C++ nested-name-specifier or a global scope specifier.
Definition: DeclSpec.h:64
clang::MultiplexExternalSemaSource::getModule
Module * getModule(unsigned ID) override
Retrieve the module that corresponds to the given module ID.
Definition: MultiplexExternalSemaSource.cpp:167
clang::DeclarationName
The name of a declaration.
Definition: DeclarationName.h:145
clang::MultiplexExternalSemaSource::CompleteType
void CompleteType(TagDecl *Tag) override
Gives the external AST source an opportunity to complete an incomplete type.
Definition: MultiplexExternalSemaSource.cpp:132
Offset
unsigned Offset
Definition: Format.cpp:2335
clang::Decl::Kind
Kind
Lists the kind of concrete classes of Decl.
Definition: DeclBase.h:92
clang::MultiplexExternalSemaSource::ReadComments
void ReadComments() override
Loads comment ranges.
Definition: MultiplexExternalSemaSource.cpp:142
clang::MultiplexExternalSemaSource::StartTranslationUnit
void StartTranslationUnit(ASTConsumer *Consumer) override
Function that will be invoked when we begin parsing a new translation unit involving this external AS...
Definition: MultiplexExternalSemaSource.cpp:157
clang::MultiplexExternalSemaSource::CompleteRedeclChain
void CompleteRedeclChain(const Decl *D) override
Complete the redeclaration chain if it's been extended since the previous generation of the AST sourc...
Definition: MultiplexExternalSemaSource.cpp:50
clang::MultiplexExternalSemaSource::GetExternalSelector
Selector GetExternalSelector(uint32_t ID) override
Resolve a selector ID into a selector.
Definition: MultiplexExternalSemaSource.cpp:55
clang::Module
Describes a module or submodule.
Definition: Module.h:96
clang::MultiplexExternalSemaSource::FindExternalVisibleDeclsByName
bool FindExternalVisibleDeclsByName(const DeclContext *DC, DeclarationName Name) override
Find all declarations with the given name in the given context.
Definition: MultiplexExternalSemaSource.cpp:105
clang::MultiplexExternalSemaSource::addSource
void addSource(ExternalSemaSource &source)
Appends new source to the source list.
Definition: MultiplexExternalSemaSource.cpp:35
clang::Scope
Scope - A scope is a transient data structure that is used while parsing the program.
Definition: Scope.h:40
MultiplexExternalSemaSource.h
clang::MultiplexExternalSemaSource::ReadLateParsedTemplates
void ReadLateParsedTemplates(llvm::MapVector< const FunctionDecl *, std::unique_ptr< LateParsedTemplate >> &LPTMap) override
Read the set of late parsed template functions for this source.
Definition: MultiplexExternalSemaSource.cpp:307
clang::ExternalASTSource::MemoryBufferSizes
Definition: ExternalASTSource.h:278
clang::ASTConsumer
ASTConsumer - This is an abstract interface that should be implemented by clients that read ASTs.
Definition: ASTConsumer.h:33
clang::ExternalSemaSource
An abstract interface that should be implemented by external AST sources that also provide informatio...
Definition: ExternalSemaSource.h:52
clang::MultiplexExternalSemaSource::InitializeSema
void InitializeSema(Sema &S) override
Initialize the semantic source with the Sema instance being used to perform semantic analysis on the ...
Definition: MultiplexExternalSemaSource.cpp:199
clang::MultiplexExternalSemaSource::GetExternalDeclStmt
Stmt * GetExternalDeclStmt(uint64_t Offset) override
Resolve the offset of a statement in the decl stream into a statement.
Definition: MultiplexExternalSemaSource.cpp:72
clang::MultiplexExternalSemaSource::MaybeDiagnoseMissingCompleteType
bool MaybeDiagnoseMissingCompleteType(SourceLocation Loc, QualType T) override
Produces a diagnostic note if one of the attached sources contains a complete definition for T.
Definition: MultiplexExternalSemaSource.cpp:330
clang::TagDecl
Represents the declaration of a struct/union/class/enum.
Definition: Decl.h:3328
clang::MultiplexExternalSemaSource::ReadDeclsToCheckForDeferredDiags
void ReadDeclsToCheckForDeferredDiags(llvm::SmallSetVector< Decl *, 4 > &Decls) override
Read the set of decls to be checked for deferred diags.
Definition: MultiplexExternalSemaSource.cpp:270
clang::MultiplexExternalSemaSource::ReadDelegatingConstructors
void ReadDelegatingConstructors(SmallVectorImpl< CXXConstructorDecl * > &Decls) override
Read the set of delegating constructors known to the external Sema source.
Definition: MultiplexExternalSemaSource.cpp:258
clang::MultiplexExternalSemaSource::hasExternalDefinitions
ExtKind hasExternalDefinitions(const Decl *D) override
Definition: MultiplexExternalSemaSource.cpp:96
clang::MultiplexExternalSemaSource::ReadMethodPool
void ReadMethodPool(Selector Sel) override
Load the contents of the global method pool for a given selector.
Definition: MultiplexExternalSemaSource.cpp:209
clang::MultiplexExternalSemaSource::CorrectTypo
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...
Definition: MultiplexExternalSemaSource.cpp:314
clang::ExternalASTSource::getMemoryBufferSizes
MemoryBufferSizes getMemoryBufferSizes() const
Return the amount of memory used by memory buffers, breaking down by heap-backed versus mmap'ed memor...
Definition: ExternalASTSource.h:288
clang::ObjCObjectPointerType
Represents a pointer to an Objective C object.
Definition: Type.h:6072
clang::MultiplexExternalSemaSource::StartedDeserializing
void StartedDeserializing() override
Notify ExternalASTSource that we started deserialization of a decl or type so until FinishedDeseriali...
Definition: MultiplexExternalSemaSource.cpp:147
clang::LookupResult::empty
bool empty() const
Return true if no decls were found.
Definition: Lookup.h:339
clang::ExternalASTSource::EK_ReplyHazy
@ EK_ReplyHazy
Definition: ExternalASTSource.h:165
clang::ValueDecl
Represent the declaration of a variable (in which case it is an lvalue) a function (in which case it ...
Definition: Decl.h:676
clang::MultiplexExternalSemaSource::FindExternalLexicalDecls
void FindExternalLexicalDecls(const DeclContext *DC, llvm::function_ref< bool(Decl::Kind)> IsKindWeWant, SmallVectorImpl< Decl * > &Result) override
Finds all declarations lexically contained within the given DeclContext, after applying an optional f...
Definition: MultiplexExternalSemaSource.cpp:117
clang::ExternalASTSource::ExtKind
ExtKind
Definition: ExternalASTSource.h:165
clang::Decl
Decl - This represents one declaration (or definition), e.g.
Definition: DeclBase.h:89
clang::MultiplexExternalSemaSource::LookupUnqualified
bool LookupUnqualified(LookupResult &R, Scope *S) override
Do last resort, unqualified lookup on a LookupResult that Sema cannot find.
Definition: MultiplexExternalSemaSource.cpp:239
clang::MultiplexExternalSemaSource::ReadUsedVTables
void ReadUsedVTables(SmallVectorImpl< ExternalVTableUse > &VTables) override
Read the set of used vtables known to the external Sema source.
Definition: MultiplexExternalSemaSource.cpp:294
clang::Sema
Sema - This implements semantic analysis and AST building for C.
Definition: Sema.h:355
clang::MultiplexExternalSemaSource::ReadUnusedLocalTypedefNameCandidates
void ReadUnusedLocalTypedefNameCandidates(llvm::SmallSetVector< const TypedefNameDecl *, 4 > &Decls) override
Read the set of potentially unused typedefs known to the source.
Definition: MultiplexExternalSemaSource.cpp:276
clang::MultiplexExternalSemaSource::FindFileRegionDecls
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.
Definition: MultiplexExternalSemaSource.cpp:124
clang::MultiplexExternalSemaSource::ReadReferencedSelectors
void ReadReferencedSelectors(SmallVectorImpl< std::pair< Selector, SourceLocation > > &Sels) override
Read the set of referenced selectors known to the external Sema source.
Definition: MultiplexExternalSemaSource.cpp:282
clang::Builtin::ID
ID
Definition: Builtins.h:48
clang::Selector::isNull
bool isNull() const
Determine whether this is the empty selector.
Definition: IdentifierTable.h:818
clang
Definition: CalledOnceCheck.h:17
clang::Selector
Smart pointer class that efficiently represents Objective-C method names.
Definition: IdentifierTable.h:748
clang::MultiplexExternalSemaSource::~MultiplexExternalSemaSource
~MultiplexExternalSemaSource() override
Definition: MultiplexExternalSemaSource.cpp:29
clang::Stmt
Stmt - This represents one statement.
Definition: Stmt.h:69
clang::MultiplexExternalSemaSource::GetExternalCXXBaseSpecifiers
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.
Definition: MultiplexExternalSemaSource.cpp:79
clang::MultiplexExternalSemaSource::ReadWeakUndeclaredIdentifiers
void ReadWeakUndeclaredIdentifiers(SmallVectorImpl< std::pair< IdentifierInfo *, WeakInfo > > &WI) override
Read the set of weak, undeclared identifiers known to the external Sema source.
Definition: MultiplexExternalSemaSource.cpp:288
clang::FileID
An opaque identifier used by SourceManager which refers to a source file (MemoryBuffer) along with it...
Definition: SourceLocation.h:40
clang::CXXBaseSpecifier
Represents a base class of a C++ class.
Definition: DeclCXX.h:147
clang::CorrectionCandidateCallback
Base class for callback objects used by Sema::CorrectTypo to check the validity of a potential typo c...
Definition: TypoCorrection.h:281
clang::MultiplexExternalSemaSource::ReadExtVectorDecls
void ReadExtVectorDecls(SmallVectorImpl< TypedefNameDecl * > &Decls) override
Read the set of ext_vector type declarations known to the external Sema source.
Definition: MultiplexExternalSemaSource.cpp:264
clang::MultiplexExternalSemaSource::GetExternalDecl
Decl * GetExternalDecl(uint32_t ID) override
Resolve a declaration ID into a declaration, potentially building a new declaration.
Definition: MultiplexExternalSemaSource.cpp:43
clang::MultiplexExternalSemaSource::MultiplexExternalSemaSource
MultiplexExternalSemaSource(ExternalSemaSource &s1, ExternalSemaSource &s2)
Constructs a new multiplexing external sema source and appends the given element to it.
Definition: MultiplexExternalSemaSource.cpp:22
llvm::SmallVectorImpl
Definition: LLVM.h:39
llvm::SmallSetVector
Definition: ExternalSemaSource.h:23
clang::CXXCtorInitializer
Represents a C++ base or member initializer.
Definition: DeclCXX.h:2172
clang::MultiplexExternalSemaSource::updateOutOfDateSelector
void updateOutOfDateSelector(Selector Sel) override
Load the contents of the global method pool for a given selector if necessary.
Definition: MultiplexExternalSemaSource.cpp:214
clang::DeclarationNameInfo
DeclarationNameInfo - A collector data type for bundling together a DeclarationName and the correspnd...
Definition: DeclarationName.h:758
clang::FunctionDecl
Represents a function declaration or definition.
Definition: Decl.h:1856
clang::RecordDecl
Represents a struct/union/class.
Definition: Decl.h:3863
clang::MultiplexExternalSemaSource::GetNumExternalSelectors
uint32_t GetNumExternalSelectors() override
Returns the number of selectors known to the external AST source.
Definition: MultiplexExternalSemaSource.cpp:65
clang::MultiplexExternalSemaSource::PrintStats
void PrintStats() override
Print any statistics that have been gathered regarding the external AST source.
Definition: MultiplexExternalSemaSource.cpp:162
clang::MultiplexExternalSemaSource::ReadPendingInstantiations
void ReadPendingInstantiations(SmallVectorImpl< std::pair< ValueDecl *, SourceLocation > > &Pending) override
Read the set of pending instantiations known to the external Sema source.
Definition: MultiplexExternalSemaSource.cpp:300
clang::MultiplexExternalSemaSource::ReadUndefinedButUsed
void ReadUndefinedButUsed(llvm::MapVector< NamedDecl *, SourceLocation > &Undefined) override
Load the set of used but not defined functions or variables with internal linkage,...
Definition: MultiplexExternalSemaSource.cpp:225