diff options
Diffstat (limited to 'include/clang/Sema/MultiplexExternalSemaSource.h')
-rw-r--r-- | include/clang/Sema/MultiplexExternalSemaSource.h | 125 |
1 files changed, 67 insertions, 58 deletions
diff --git a/include/clang/Sema/MultiplexExternalSemaSource.h b/include/clang/Sema/MultiplexExternalSemaSource.h index e9ba479d1255..7860b6da06a0 100644 --- a/include/clang/Sema/MultiplexExternalSemaSource.h +++ b/include/clang/Sema/MultiplexExternalSemaSource.h @@ -65,31 +65,35 @@ public: /// \brief Resolve a declaration ID into a declaration, potentially /// building a new declaration. - virtual Decl *GetExternalDecl(uint32_t ID); + Decl *GetExternalDecl(uint32_t ID) override; + + /// \brief Complete the redeclaration chain if it's been extended since the + /// previous generation of the AST source. + void CompleteRedeclChain(const Decl *D) override; /// \brief Resolve a selector ID into a selector. - virtual Selector GetExternalSelector(uint32_t ID); + Selector GetExternalSelector(uint32_t ID) override; /// \brief Returns the number of selectors known to the external AST /// source. - virtual uint32_t GetNumExternalSelectors(); + uint32_t GetNumExternalSelectors() override; /// \brief Resolve the offset of a statement in the decl stream into /// a statement. - virtual Stmt *GetExternalDeclStmt(uint64_t Offset); + Stmt *GetExternalDeclStmt(uint64_t Offset) override; /// \brief Resolve the offset of a set of C++ base specifiers in the decl /// stream into an array of specifiers. - virtual CXXBaseSpecifier *GetExternalCXXBaseSpecifiers(uint64_t Offset); + CXXBaseSpecifier *GetExternalCXXBaseSpecifiers(uint64_t Offset) override; /// \brief Find all declarations with the given name in the /// given context. - virtual bool - FindExternalVisibleDeclsByName(const DeclContext *DC, DeclarationName Name); + bool + FindExternalVisibleDeclsByName(const DeclContext *DC, DeclarationName Name) override; /// \brief Ensures that the table of all visible declarations inside this /// context is up to date. - virtual void completeVisibleDeclsMap(const DeclContext *DC); + void completeVisibleDeclsMap(const DeclContext *DC) override; /// \brief Finds all declarations lexically contained within the given /// DeclContext, after applying an optional filter predicate. @@ -99,9 +103,9 @@ public: /// are returned. /// /// \return an indication of whether the load succeeded or failed. - virtual ExternalLoadResult FindExternalLexicalDecls(const DeclContext *DC, - bool (*isKindWeWant)(Decl::Kind), - SmallVectorImpl<Decl*> &Result); + ExternalLoadResult FindExternalLexicalDecls(const DeclContext *DC, + bool (*isKindWeWant)(Decl::Kind), + SmallVectorImpl<Decl*> &Result) override; /// \brief Finds all declarations lexically contained within the given /// DeclContext. @@ -109,7 +113,7 @@ public: /// \return true if an error occurred ExternalLoadResult FindExternalLexicalDecls(const DeclContext *DC, SmallVectorImpl<Decl*> &Result) { - return FindExternalLexicalDecls(DC, 0, Result); + return FindExternalLexicalDecls(DC, nullptr, Result); } template <typename DeclTy> @@ -121,12 +125,12 @@ public: /// \brief Get the decls that are contained in a file in the Offset/Length /// range. \p Length can be 0 to indicate a point at \p Offset instead of /// a range. - virtual void FindFileRegionDecls(FileID File, unsigned Offset,unsigned Length, - SmallVectorImpl<Decl *> &Decls); + void FindFileRegionDecls(FileID File, unsigned Offset,unsigned Length, + SmallVectorImpl<Decl *> &Decls) override; /// \brief Gives the external AST source an opportunity to complete /// an incomplete type. - virtual void CompleteType(TagDecl *Tag); + void CompleteType(TagDecl *Tag) override; /// \brief Gives the external AST source an opportunity to complete an /// incomplete Objective-C class. @@ -134,27 +138,27 @@ public: /// This routine will only be invoked if the "externally completed" bit is /// set on the ObjCInterfaceDecl via the function /// \c ObjCInterfaceDecl::setExternallyCompleted(). - virtual void CompleteType(ObjCInterfaceDecl *Class); + void CompleteType(ObjCInterfaceDecl *Class) override; /// \brief Loads comment ranges. - virtual void ReadComments(); + void ReadComments() override; /// \brief Notify ExternalASTSource that we started deserialization of /// a decl or type so until FinishedDeserializing is called there may be /// decls that are initializing. Must be paired with FinishedDeserializing. - virtual void StartedDeserializing(); + void StartedDeserializing() override; /// \brief Notify ExternalASTSource that we finished the deserialization of /// a decl or type. Must be paired with StartedDeserializing. - virtual void FinishedDeserializing(); + void FinishedDeserializing() override; /// \brief Function that will be invoked when we begin parsing a new /// translation unit involving this external AST source. - virtual void StartTranslationUnit(ASTConsumer *Consumer); + void StartTranslationUnit(ASTConsumer *Consumer) override; /// \brief Print any statistics that have been gathered regarding /// the external AST source. - virtual void PrintStats(); + void PrintStats() override; /// \brief Perform layout on the given record. @@ -184,16 +188,17 @@ public: /// be laid out according to the ABI. /// /// \returns true if the record layout was provided, false otherwise. - virtual bool + 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); + llvm::DenseMap<const CXXRecordDecl *, + CharUnits> &VirtualBaseOffsets) override; /// Return the amount of memory used by memory buffers, breaking down /// by heap-backed versus mmap'ed memory. - virtual void getMemoryBufferSizes(MemoryBufferSizes &sizes) const; + void getMemoryBufferSizes(MemoryBufferSizes &sizes) const override; //===--------------------------------------------------------------------===// // ExternalSemaSource. @@ -202,24 +207,25 @@ public: /// \brief Initialize the semantic source with the Sema instance /// being used to perform semantic analysis on the abstract syntax /// tree. - virtual void InitializeSema(Sema &S); + void InitializeSema(Sema &S) override; /// \brief Inform the semantic consumer that Sema is no longer available. - virtual void ForgetSema(); + void ForgetSema() override; /// \brief Load the contents of the global method pool for a given /// selector. - virtual void ReadMethodPool(Selector Sel); + void ReadMethodPool(Selector Sel) override; /// \brief Load the set of namespaces that are known to the external source, /// which will be used during typo correction. - virtual void ReadKnownNamespaces(SmallVectorImpl<NamespaceDecl*> &Namespaces); + void + ReadKnownNamespaces(SmallVectorImpl<NamespaceDecl*> &Namespaces) override; /// \brief Load the set of used but not defined functions or variables with /// internal linkage, or used but not defined inline functions. - virtual void ReadUndefinedButUsed( - llvm::DenseMap<NamedDecl*, SourceLocation> &Undefined); - + void ReadUndefinedButUsed( + llvm::DenseMap<NamedDecl*, SourceLocation> &Undefined) override; + /// \brief Do last resort, unqualified lookup on a LookupResult that /// Sema cannot find. /// @@ -228,7 +234,7 @@ public: /// \param S the Scope of the identifier occurrence. /// /// \return true to tell Sema to recover using the LookupResult. - virtual bool LookupUnqualified(LookupResult &R, Scope *S); + bool LookupUnqualified(LookupResult &R, Scope *S) override; /// \brief Read the set of tentative definitions known to the external Sema /// source. @@ -237,8 +243,8 @@ public: /// given vector of tentative definitions. Note that this routine may be /// invoked multiple times; the external source should take care not to /// introduce the same declarations repeatedly. - virtual void ReadTentativeDefinitions(SmallVectorImpl<VarDecl*> &Defs); - + void ReadTentativeDefinitions(SmallVectorImpl<VarDecl*> &Defs) override; + /// \brief Read the set of unused file-scope declarations known to the /// external Sema source. /// @@ -246,9 +252,9 @@ public: /// given vector of declarations. Note that this routine may be /// invoked multiple times; the external source should take care not to /// introduce the same declarations repeatedly. - virtual void ReadUnusedFileScopedDecls( - SmallVectorImpl<const DeclaratorDecl*> &Decls); - + void ReadUnusedFileScopedDecls( + SmallVectorImpl<const DeclaratorDecl*> &Decls) override; + /// \brief Read the set of delegating constructors known to the /// external Sema source. /// @@ -256,8 +262,8 @@ public: /// given vector of declarations. Note that this routine may be /// invoked multiple times; the external source should take care not to /// introduce the same declarations repeatedly. - virtual void ReadDelegatingConstructors( - SmallVectorImpl<CXXConstructorDecl*> &Decls); + void ReadDelegatingConstructors( + SmallVectorImpl<CXXConstructorDecl*> &Decls) override; /// \brief Read the set of ext_vector type declarations known to the /// external Sema source. @@ -266,7 +272,7 @@ public: /// the given vector of declarations. Note that this routine may be /// invoked multiple times; the external source should take care not to /// introduce the same declarations repeatedly. - virtual void ReadExtVectorDecls(SmallVectorImpl<TypedefNameDecl*> &Decls); + void ReadExtVectorDecls(SmallVectorImpl<TypedefNameDecl*> &Decls) override; /// \brief Read the set of dynamic classes known to the external Sema source. /// @@ -274,7 +280,7 @@ public: /// the given vector of declarations. Note that this routine may be /// invoked multiple times; the external source should take care not to /// introduce the same declarations repeatedly. - virtual void ReadDynamicClasses(SmallVectorImpl<CXXRecordDecl*> &Decls); + void ReadDynamicClasses(SmallVectorImpl<CXXRecordDecl*> &Decls) override; /// \brief Read the set of locally-scoped extern "C" declarations known to the /// external Sema source. @@ -283,7 +289,8 @@ public: /// declarations to the given vector of declarations. Note that this routine /// may be invoked multiple times; the external source should take care not /// to introduce the same declarations repeatedly. - virtual void ReadLocallyScopedExternCDecls(SmallVectorImpl<NamedDecl*>&Decls); + void ReadLocallyScopedExternCDecls( + SmallVectorImpl<NamedDecl*> &Decls) override; /// \brief Read the set of referenced selectors known to the /// external Sema source. @@ -292,8 +299,8 @@ public: /// given vector of selectors. Note that this routine /// may be invoked multiple times; the external source should take care not /// to introduce the same selectors repeatedly. - virtual void ReadReferencedSelectors(SmallVectorImpl<std::pair<Selector, - SourceLocation> > &Sels); + void ReadReferencedSelectors(SmallVectorImpl<std::pair<Selector, + SourceLocation> > &Sels) override; /// \brief Read the set of weak, undeclared identifiers known to the /// external Sema source. @@ -302,15 +309,15 @@ public: /// the given vector. Note that this routine may be invoked multiple times; /// the external source should take care not to introduce the same identifiers /// repeatedly. - virtual void ReadWeakUndeclaredIdentifiers( - SmallVectorImpl<std::pair<IdentifierInfo*, WeakInfo> > &WI); + void ReadWeakUndeclaredIdentifiers( + SmallVectorImpl<std::pair<IdentifierInfo*, WeakInfo> > &WI) override; /// \brief Read the set of used vtables known to the external Sema source. /// /// The external source should append its own used vtables to the given /// vector. Note that this routine may be invoked multiple times; the external /// source should take care not to introduce the same vtables repeatedly. - virtual void ReadUsedVTables(SmallVectorImpl<ExternalVTableUse> &VTables); + void ReadUsedVTables(SmallVectorImpl<ExternalVTableUse> &VTables) override; /// \brief Read the set of pending instantiations known to the external /// Sema source. @@ -319,8 +326,8 @@ public: /// given vector. Note that this routine may be invoked multiple times; the /// external source should take care not to introduce the same instantiations /// repeatedly. - virtual void ReadPendingInstantiations( - SmallVectorImpl<std::pair<ValueDecl*, SourceLocation> >& Pending); + void ReadPendingInstantiations( + SmallVectorImpl<std::pair<ValueDecl*, SourceLocation> >& Pending) override; /// \brief Read the set of late parsed template functions for this source. /// @@ -328,17 +335,18 @@ public: /// into the map. Note that this routine may be invoked multiple times; the /// external source should take care not to introduce the same map entries /// repeatedly. - virtual void ReadLateParsedTemplates( - llvm::DenseMap<const FunctionDecl *, LateParsedTemplate *> &LPTMap); + void ReadLateParsedTemplates( + llvm::DenseMap<const FunctionDecl *, + LateParsedTemplate *> &LPTMap) override; /// \copydoc ExternalSemaSource::CorrectTypo /// \note Returns the first nonempty correction. - virtual TypoCorrection CorrectTypo(const DeclarationNameInfo &Typo, - int LookupKind, Scope *S, CXXScopeSpec *SS, - CorrectionCandidateCallback &CCC, - DeclContext *MemberContext, - bool EnteringContext, - const ObjCObjectPointerType *OPT); + TypoCorrection CorrectTypo(const DeclarationNameInfo &Typo, + int LookupKind, Scope *S, CXXScopeSpec *SS, + CorrectionCandidateCallback &CCC, + DeclContext *MemberContext, + bool EnteringContext, + const ObjCObjectPointerType *OPT) override; /// \brief Produces a diagnostic note if one of the attached sources /// contains a complete definition for \p T. Queries the sources in list @@ -350,7 +358,8 @@ public: /// \param T the \c QualType that should have been complete at \p Loc /// /// \return true if a diagnostic was produced, false otherwise. - virtual bool MaybeDiagnoseMissingCompleteType(SourceLocation Loc, QualType T); + bool MaybeDiagnoseMissingCompleteType(SourceLocation Loc, + QualType T) override; // isa/cast/dyn_cast support static bool classof(const MultiplexExternalSemaSource*) { return true; } |