Lines Matching full:clang

12 #include "clang/Basic/ASTSourceDescriptor.h"
13 #include "clang/Sema/Lookup.h"
14 #include "clang/Sema/MultiplexExternalSemaSource.h"
15 #include "clang/Sema/Sema.h"
16 #include "clang/Sema/SemaConsumer.h"
21 namespace clang {
25 } // namespace clang
32 class ExternalASTSourceWrapper : public clang::ExternalSemaSource {
43 clang::Decl *GetExternalDecl(clang::GlobalDeclID ID) override {
47 clang::Selector GetExternalSelector(uint32_t ID) override {
55 clang::Stmt *GetExternalDeclStmt(uint64_t Offset) override {
59 clang::CXXCtorInitializer **
64 clang::CXXBaseSpecifier *
69 void updateOutOfDateIdentifier(const clang::IdentifierInfo &II) override {
74 const clang::DeclContext *DC, clang::DeclarationName Name,
75 const clang::DeclContext *OriginalDC) override {
79 bool LoadExternalSpecializations(const clang::Decl *D,
85 const clang::Decl *D,
86 llvm::ArrayRef<clang::TemplateArgument> TemplateArgs) override {
90 void completeVisibleDeclsMap(const clang::DeclContext *DC) override {
94 clang::Module *getModule(unsigned ID) override {
98 std::optional<clang::ASTSourceDescriptor>
103 ExtKind hasExternalDefinitions(const clang::Decl *D) override {
108 const clang::DeclContext *DC,
109 llvm::function_ref<bool(clang::Decl::Kind)> IsKindWeWant,
110 llvm::SmallVectorImpl<clang::Decl *> &Result) override {
115 FindFileRegionDecls(clang::FileID File, unsigned Offset, unsigned Length,
116 llvm::SmallVectorImpl<clang::Decl *> &Decls) override {
120 void CompleteRedeclChain(const clang::Decl *D) override {
124 void CompleteType(clang::TagDecl *Tag) override {
128 void CompleteType(clang::ObjCInterfaceDecl *Class) override {
138 void StartTranslationUnit(clang::ASTConsumer *Consumer) override {
145 const clang::RecordDecl *Record, uint64_t &Size, uint64_t &Alignment,
146 llvm::DenseMap<const clang::FieldDecl *, uint64_t> &FieldOffsets,
147 llvm::DenseMap<const clang::CXXRecordDecl *, clang::CharUnits>
149 llvm::DenseMap<const clang::CXXRecordDecl *, clang::CharUnits>
156 /// For LLDB's use-case, we never provide Clang with function definitions,
159 /// any "undefined" FunctionDecls that Clang found while parsing.
161 /// \param[in,out] Undefined A set of used decls for which Clang has not
165 llvm::MapVector<clang::NamedDecl *, clang::SourceLocation> &Undefined)
168 const clang::NamedDecl *ND = decl_loc_pair.first;
169 return llvm::isa_and_present<clang::FunctionDecl>(ND);
177 class ASTConsumerForwarder : public clang::SemaConsumer {
178 clang::ASTConsumer *m_c;
179 clang::SemaConsumer *m_sc;
182 ASTConsumerForwarder(clang::ASTConsumer *c) : m_c(c) {
183 m_sc = llvm::dyn_cast<clang::SemaConsumer>(m_c);
188 void Initialize(clang::ASTContext &Context) override {
192 bool HandleTopLevelDecl(clang::DeclGroupRef D) override {
196 void HandleInlineFunctionDefinition(clang::FunctionDecl *D) override {
200 void HandleInterestingDecl(clang::DeclGroupRef D) override {
204 void HandleTranslationUnit(clang::ASTContext &Ctx) override {
208 void HandleTagDeclDefinition(clang::TagDecl *D) override {
212 void HandleTagDeclRequiredDefinition(const clang::TagDecl *D) override {
216 void HandleCXXImplicitFunctionInstantiation(clang::FunctionDecl *D) override {
220 void HandleTopLevelDeclInObjCContainer(clang::DeclGroupRef D) override {
224 void HandleImplicitImportDecl(clang::ImportDecl *D) override {
228 void CompleteTentativeDefinition(clang::VarDecl *D) override {
232 void AssignInheritanceModel(clang::CXXRecordDecl *RD) override {
236 void HandleCXXStaticMemberVarInstantiation(clang::VarDecl *D) override {
240 void HandleVTable(clang::CXXRecordDecl *RD) override {
244 clang::ASTMutationListener *GetASTMutationListener() override {
248 clang::ASTDeserializationListener *GetASTDeserializationListener() override {
254 void InitializeSema(clang::Sema &S) override {
265 bool shouldSkipFunctionBody(clang::Decl *D) override {
283 class SemaSourceWithPriorities : public clang::ExternalSemaSource {
287 llvm::SmallVector<clang::ExternalSemaSource *, 2> Sources;
295 SemaSourceWithPriorities(clang::ExternalSemaSource *high_quality_source,
296 clang::ExternalSemaSource *low_quality_source) {
313 clang::Decl *GetExternalDecl(clang::GlobalDeclID ID) override {
315 if (clang::Decl *Result = Sources[i]->GetExternalDecl(ID))
320 bool LoadExternalSpecializations(const clang::Decl *D,
329 const clang::Decl *D,
330 llvm::ArrayRef<clang::TemplateArgument> TemplateArgs) override {
337 void CompleteRedeclChain(const clang::Decl *D) override {
342 clang::Selector GetExternalSelector(uint32_t ID) override {
343 clang::Selector Sel;
359 clang::Stmt *GetExternalDeclStmt(uint64_t Offset) override {
361 if (clang::Stmt *Result = Sources[i]->GetExternalDeclStmt(Offset))
366 clang::CXXBaseSpecifier *
369 if (clang::CXXBaseSpecifier *R =
375 clang::CXXCtorInitializer **
383 ExtKind hasExternalDefinitions(const clang::Decl *D) override {
392 const clang::DeclContext *DC, clang::DeclarationName Name,
393 const clang::DeclContext *OriginalDC) override {
400 void completeVisibleDeclsMap(const clang::DeclContext *DC) override {
407 const clang::DeclContext *DC,
408 llvm::function_ref<bool(clang::Decl::Kind)> IsKindWeWant,
409 llvm::SmallVectorImpl<clang::Decl *> &Result) override {
418 FindFileRegionDecls(clang::FileID File, unsigned Offset, unsigned Length,
419 llvm::SmallVectorImpl<clang::Decl *> &Decls) override {
424 void CompleteType(clang::TagDecl *Tag) override {
425 for (clang::ExternalSemaSource *S : Sources) {
433 void CompleteType(clang::ObjCInterfaceDecl *Class) override {
453 void StartTranslationUnit(clang::ASTConsumer *Consumer) override {
460 clang::Module *getModule(unsigned ID) override {
468 const clang::RecordDecl *Record, uint64_t &Size, uint64_t &Alignment,
469 llvm::DenseMap<const clang::FieldDecl *, uint64_t> &FieldOffsets,
470 llvm::DenseMap<const clang::CXXRecordDecl *, clang::CharUnits>
472 llvm::DenseMap<const clang::CXXRecordDecl *, clang::CharUnits>
490 void InitializeSema(clang::Sema &S) override {
500 void ReadMethodPool(clang::Selector Sel) override {
505 void updateOutOfDateSelector(clang::Selector Sel) override {
511 llvm::SmallVectorImpl<clang::NamespaceDecl *> &Namespaces) override {
517 llvm::MapVector<clang::NamedDecl *, clang::SourceLocation> &Undefined)
524 llvm::MapVector<clang::FieldDecl *,
525 llvm::SmallVector<std::pair<clang::SourceLocation, bool>,
531 bool LookupUnqualified(clang::LookupResult &R, clang::Scope *S) override {
542 llvm::SmallVectorImpl<clang::VarDecl *> &Defs) override {
548 llvm::SmallVectorImpl<const clang::DeclaratorDecl *> &Decls) override {
554 llvm::SmallVectorImpl<clang::CXXConstructorDecl *> &Decls) override {
560 llvm::SmallVectorImpl<clang::TypedefNameDecl *> &Decls) override {
566 llvm::SmallSetVector<const clang::TypedefNameDecl *, 4> &Decls) override {
572 llvm::SmallVectorImpl<std::pair<clang::Selector, clang::SourceLocation>>
579 llvm::SmallVectorImpl<std::pair<clang::IdentifierInfo *, clang::WeakInfo>>
586 llvm::SmallVectorImpl<clang::ExternalVTableUse> &VTables) override {
593 std::pair<clang::ValueDecl *, clang::SourceLocation>> &Pending)
600 llvm::MapVector<const clang::FunctionDecl *,
601 std::unique_ptr<clang::LateParsedTemplate>> &LPTMap)
607 clang::TypoCorrection
608 CorrectTypo(const clang::DeclarationNameInfo &Typo, int LookupKind,
609 clang::Scope *S, clang::CXXScopeSpec *SS,
610 clang::CorrectionCandidateCallback &CCC,
611 clang::DeclContext *MemberContext, bool EnteringContext,
612 const clang::ObjCObjectPointerType *OPT) override {
614 if (clang::TypoCorrection C =
619 return clang::TypoCorrection();
622 bool MaybeDiagnoseMissingCompleteType(clang::SourceLocation Loc,
623 clang::QualType T) override {