summaryrefslogtreecommitdiffstats
path: root/include/clang/Sema/ExternalSemaSource.h
diff options
context:
space:
mode:
Diffstat (limited to 'include/clang/Sema/ExternalSemaSource.h')
-rw-r--r--include/clang/Sema/ExternalSemaSource.h229
1 files changed, 0 insertions, 229 deletions
diff --git a/include/clang/Sema/ExternalSemaSource.h b/include/clang/Sema/ExternalSemaSource.h
deleted file mode 100644
index 97f78f4..0000000
--- a/include/clang/Sema/ExternalSemaSource.h
+++ /dev/null
@@ -1,229 +0,0 @@
-//===--- ExternalSemaSource.h - External Sema Interface ---------*- C++ -*-===//
-//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
-//
-//===----------------------------------------------------------------------===//
-//
-// This file defines the ExternalSemaSource interface.
-//
-//===----------------------------------------------------------------------===//
-#ifndef LLVM_CLANG_SEMA_EXTERNALSEMASOURCE_H
-#define LLVM_CLANG_SEMA_EXTERNALSEMASOURCE_H
-
-#include "clang/AST/ExternalASTSource.h"
-#include "clang/AST/Type.h"
-#include "clang/Sema/TypoCorrection.h"
-#include "clang/Sema/Weak.h"
-#include "llvm/ADT/MapVector.h"
-#include <utility>
-
-namespace llvm {
-template <class T, unsigned n> class SmallSetVector;
-}
-
-namespace clang {
-
-class CXXConstructorDecl;
-class CXXDeleteExpr;
-class CXXRecordDecl;
-class DeclaratorDecl;
-class LookupResult;
-struct ObjCMethodList;
-class Scope;
-class Sema;
-class TypedefNameDecl;
-class ValueDecl;
-class VarDecl;
-struct LateParsedTemplate;
-
-/// \brief A simple structure that captures a vtable use for the purposes of
-/// the \c ExternalSemaSource.
-struct ExternalVTableUse {
- CXXRecordDecl *Record;
- SourceLocation Location;
- bool DefinitionRequired;
-};
-
-/// \brief An abstract interface that should be implemented by
-/// external AST sources that also provide information for semantic
-/// analysis.
-class ExternalSemaSource : public ExternalASTSource {
-public:
- ExternalSemaSource() {
- ExternalASTSource::SemaSource = true;
- }
-
- ~ExternalSemaSource() override;
-
- /// \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) {}
-
- /// \brief Inform the semantic consumer that Sema is no longer available.
- virtual void ForgetSema() {}
-
- /// \brief Load the contents of the global method pool for a given
- /// selector.
- virtual void ReadMethodPool(Selector Sel);
-
- /// \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);
-
- /// \brief Load the set of used but not defined functions or variables with
- /// internal linkage, or used but not defined internal functions.
- virtual void ReadUndefinedButUsed(
- llvm::DenseMap<NamedDecl*, SourceLocation> &Undefined);
-
- virtual void ReadMismatchingDeleteExpressions(llvm::MapVector<
- FieldDecl *, llvm::SmallVector<std::pair<SourceLocation, bool>, 4>> &);
-
- /// \brief Do last resort, unqualified lookup on a LookupResult that
- /// Sema cannot find.
- ///
- /// \param R a LookupResult that is being recovered.
- ///
- /// \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) { return false; }
-
- /// \brief Read the set of tentative definitions known to the external Sema
- /// source.
- ///
- /// The external source should append its own tentative definitions to the
- /// 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 *> &TentativeDefs) {}
-
- /// \brief Read the set of unused file-scope declarations known to the
- /// external Sema source.
- ///
- /// The external source should append its own unused, filed-scope 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 ReadUnusedFileScopedDecls(
- SmallVectorImpl<const DeclaratorDecl *> &Decls) {}
-
- /// \brief Read the set of delegating constructors known to the
- /// external Sema source.
- ///
- /// The external source should append its own delegating constructors 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 ReadDelegatingConstructors(
- SmallVectorImpl<CXXConstructorDecl *> &Decls) {}
-
- /// \brief Read the set of ext_vector type declarations known to the
- /// external Sema source.
- ///
- /// The external source should append its own ext_vector type 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 ReadExtVectorDecls(SmallVectorImpl<TypedefNameDecl *> &Decls) {}
-
- /// \brief Read the set of potentially unused typedefs known to the source.
- ///
- /// The external source should append its own potentially unused local
- /// typedefs 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 ReadUnusedLocalTypedefNameCandidates(
- llvm::SmallSetVector<const TypedefNameDecl *, 4> &Decls) {}
-
- /// \brief Read the set of referenced selectors known to the
- /// external Sema source.
- ///
- /// The external source should append its own referenced selectors to the
- /// 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) {}
-
- /// \brief Read the set of weak, undeclared identifiers known to the
- /// external Sema source.
- ///
- /// The external source should append its own weak, undeclared identifiers to
- /// 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) {}
-
- /// \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) {}
-
- /// \brief Read the set of pending instantiations known to the external
- /// Sema source.
- ///
- /// The external source should append its own pending instantiations to the
- /// 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) {}
-
- /// \brief Read the set of late parsed template functions for this source.
- ///
- /// The external source should insert its own late parsed template functions
- /// 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::MapVector<const FunctionDecl *, LateParsedTemplate *> &LPTMap) {}
-
- /// \copydoc Sema::CorrectTypo
- /// \note LookupKind must correspond to a valid Sema::LookupNameKind
- ///
- /// ExternalSemaSource::CorrectTypo is always given the first chance to
- /// correct a typo (really, to offer suggestions to repair a failed lookup).
- /// It will even be called when SpellChecking is turned off or after a
- /// fatal error has already been detected.
- virtual TypoCorrection CorrectTypo(const DeclarationNameInfo &Typo,
- int LookupKind, Scope *S, CXXScopeSpec *SS,
- CorrectionCandidateCallback &CCC,
- DeclContext *MemberContext,
- bool EnteringContext,
- const ObjCObjectPointerType *OPT) {
- return TypoCorrection();
- }
-
- /// \brief Produces a diagnostic note if the external source contains a
- /// complete definition for \p T.
- ///
- /// \param Loc the location at which a complete type was required but not
- /// provided
- ///
- /// \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) {
- return false;
- }
-
- // isa/cast/dyn_cast support
- static bool classof(const ExternalASTSource *Source) {
- return Source->SemaSource;
- }
-};
-
-} // end namespace clang
-
-#endif
OpenPOWER on IntegriCloud