clang 22.0.0git
clang::DeclContext Class Reference

DeclContext - This is used only as base class of specific decl types that can act as declaration contexts. More...

#include "clang/AST/DeclBase.h"

Inheritance diagram for clang::DeclContext:
[legend]

Classes

class  all_lookups_iterator
 all_lookups_iterator - An iterator that provides a view over the results of looking up every possible name. More...
class  BlockDeclBitfields
 Stores the bits used by BlockDecl. More...
class  CXXConstructorDeclBitfields
 Stores the bits used by CXXConstructorDecl. More...
class  ddiag_iterator
 An iterator over the dependent diagnostics in a dependent context. More...
class  decl_iterator
 decl_iterator - Iterates through the declarations stored within this context. More...
class  DeclContextBitfields
 Stores the bits used by DeclContext. More...
class  EnumDeclBitfields
 Stores the bits used by EnumDecl. More...
class  filtered_decl_iterator
 Iterates over a filtered subrange of declarations stored in a DeclContext. More...
class  FunctionDeclBitfields
 Stores the bits used by FunctionDecl. More...
class  LinkageSpecDeclBitfields
 Stores the bits used by LinkageSpecDecl. More...
class  NamespaceDeclBitfields
 Stores the bits used by NamespaceDecl. More...
class  ObjCContainerDeclBitfields
 Stores the bits used by ObjCContainerDecl. More...
class  ObjCMethodDeclBitfields
 Stores the bits used by ObjCMethodDecl. More...
class  OMPDeclareReductionDeclBitfields
 Stores the bits used by OMPDeclareReductionDecl. More...
class  RecordDeclBitfields
 Stores the bits used by RecordDecl. More...
class  specific_decl_iterator
 specific_decl_iterator - Iterates over a subrange of declarations stored in a DeclContext, providing only those that are of type SpecificDecl (or a class derived from it). More...
class  TagDeclBitfields
 Stores the bits used by TagDecl. More...
struct  udir_iterator

Public Types

using decl_range = llvm::iterator_range<decl_iterator>
using lookup_result = DeclContextLookupResult
using lookup_iterator = lookup_result::iterator
using lookups_range = llvm::iterator_range<all_lookups_iterator>
using udir_iterator_base
using udir_range = llvm::iterator_range<udir_iterator>
using ddiag_range = llvm::iterator_range<DeclContext::ddiag_iterator>

Public Member Functions

 ~DeclContext ()
bool hasValidDeclKind () const
Decl::Kind getDeclKind () const
const char * getDeclKindName () const
DeclContextgetParent ()
 getParent - Returns the containing DeclContext.
const DeclContextgetParent () const
DeclContextgetLexicalParent ()
 getLexicalParent - Returns the containing lexical DeclContext.
const DeclContextgetLexicalParent () const
DeclContextgetLookupParent ()
 Find the parent context of this context that will be used for unqualified name lookup.
const DeclContextgetLookupParent () const
ASTContextgetParentASTContext () const
bool isClosure () const
const BlockDeclgetInnermostBlockDecl () const
 Return this DeclContext if it is a BlockDecl.
bool isObjCContainer () const
bool isFunctionOrMethod () const
bool isLookupContext () const
 Test whether the context supports looking up names.
bool isFileContext () const
bool isTranslationUnit () const
bool isRecord () const
bool isRequiresExprBody () const
bool isNamespace () const
bool isStdNamespace () const
bool isInlineNamespace () const
bool isDependentContext () const
 Determines whether this context is dependent on a template parameter.
bool isTransparentContext () const
 isTransparentContext - Determines whether this context is a "transparent" context, meaning that the members declared in this context are semantically declared in the nearest enclosing non-transparent (opaque) context but are lexically declared in this context.
bool isExternCContext () const
 Determines whether this context or some of its ancestors is a linkage specification context that specifies C linkage.
const LinkageSpecDeclgetExternCContext () const
 Retrieve the nearest enclosing C linkage specification context.
bool isExternCXXContext () const
 Determines whether this context or some of its ancestors is a linkage specification context that specifies C++ linkage.
bool Equals (const DeclContext *DC) const
 Determine whether this declaration context is equivalent to the declaration context DC.
bool Encloses (const DeclContext *DC) const
 Determine whether this declaration context semantically encloses the declaration context DC.
bool LexicallyEncloses (const DeclContext *DC) const
 Determine whether this declaration context lexically encloses the declaration context DC.
DeclgetNonClosureAncestor ()
 Find the nearest non-closure ancestor of this context, i.e.
const DeclgetNonClosureAncestor () const
DeclContextgetNonTransparentContext ()
const DeclContextgetNonTransparentContext () const
DeclContextgetPrimaryContext ()
 getPrimaryContext - There may be many different declarations of the same entity (including forward declarations of classes, multiple definitions of namespaces, etc.), each with a different set of declarations.
const DeclContextgetPrimaryContext () const
DeclContextgetRedeclContext ()
 getRedeclContext - Retrieve the context in which an entity conflicts with other entities of the same name, or where it is a redeclaration if the two entities are compatible.
const DeclContextgetRedeclContext () const
DeclContextgetEnclosingNamespaceContext ()
 Retrieve the nearest enclosing namespace context.
const DeclContextgetEnclosingNamespaceContext () const
RecordDeclgetOuterLexicalRecordContext ()
 Retrieve the outermost lexically enclosing record context.
const RecordDeclgetOuterLexicalRecordContext () const
bool InEnclosingNamespaceSetOf (const DeclContext *NS) const
 Test if this context is part of the enclosing namespace set of the context NS, as defined in C++0x [namespace.def]p9.
void collectAllContexts (SmallVectorImpl< DeclContext * > &Contexts)
 Collects all of the declaration contexts that are semantically connected to this declaration context.
decl_range decls () const
 decls_begin/decls_end - Iterate over the declarations stored in this context.
decl_iterator decls_begin () const
decl_iterator decls_end () const
bool decls_empty () const
decl_range noload_decls () const
 noload_decls_begin/end - Iterate over the declarations stored in this context that are currently loaded; don't attempt to retrieve anything from an external source.
decl_iterator noload_decls_begin () const
decl_iterator noload_decls_end () const
void addDecl (Decl *D)
 Add the declaration D into this context.
void addDeclInternal (Decl *D)
 Add the declaration D into this context, but suppress searches for external declarations with the same name.
void addHiddenDecl (Decl *D)
 Add the declaration D to this context without modifying any lookup tables.
void removeDecl (Decl *D)
 Removes a declaration from this context.
bool containsDecl (Decl *D) const
 Checks whether a declaration is in this context.
bool containsDeclAndLoad (Decl *D) const
 Checks whether a declaration is in this context.
lookup_result lookup (DeclarationName Name) const
 lookup - Find the declarations (if any) with the given Name in this context.
lookup_result noload_lookup (DeclarationName Name)
 Find the declarations with the given name that are visible within this context; don't attempt to retrieve anything from an external source.
void localUncachedLookup (DeclarationName Name, SmallVectorImpl< NamedDecl * > &Results)
 A simplistic name lookup mechanism that performs name lookup into this declaration context without consulting the external source.
void makeDeclVisibleInContext (NamedDecl *D)
 Makes a declaration visible within this context.
lookups_range lookups () const
lookups_range noload_lookups (bool PreserveInternalState) const
all_lookups_iterator lookups_begin () const
 Iterators over all possible lookups within this context.
all_lookups_iterator lookups_end () const
all_lookups_iterator noload_lookups_begin () const
 Iterators over all possible lookups within this context that are currently loaded; don't attempt to retrieve anything from an external source.
all_lookups_iterator noload_lookups_end () const
udir_range using_directives () const
 Returns iterator range [First, Last) of UsingDirectiveDecls stored within this context.
ddiag_range ddiags () const
void setMustBuildLookupTable ()
 Mark that there are external lexical declarations that we need to include in our lookup table (and that are not available as external visible lookups).
StoredDeclsMapgetLookupPtr () const
 Retrieve the internal representation of the lookup structure.
StoredDeclsMapbuildLookup ()
 Ensure the lookup structure is fully-built and return it.
bool hasExternalLexicalStorage () const
 Whether this DeclContext has external storage containing additional declarations that are lexically in this context.
void setHasExternalLexicalStorage (bool ES=true) const
 State whether this DeclContext has external storage for declarations lexically in this context.
bool hasExternalVisibleStorage () const
 Whether this DeclContext has external storage containing additional declarations that are visible in this context.
void setHasExternalVisibleStorage (bool ES=true) const
 State whether this DeclContext has external storage for declarations visible in this context.
bool isDeclInLexicalTraversal (const Decl *D) const
 Determine whether the given declaration is stored in the list of declarations lexically within this context.
void setUseQualifiedLookup (bool use=true) const
bool shouldUseQualifiedLookup () const
void dumpAsDecl () const
void dumpAsDecl (const ASTContext *Ctx) const
void dumpDeclContext () const
void dumpLookups () const
void dumpLookups (llvm::raw_ostream &OS, bool DumpDecls=false, bool Deserialize=false) const

Static Public Member Functions

static bool classof (const Decl *D)
static bool classof (const DeclContext *D)

Protected Types

enum  { NumOdrHashBits = 25 }
enum  { NumDeclContextBits = 13 }
 Number of bits in DeclContextBitfields. More...
enum  { NumNamespaceDeclBits = NumDeclContextBits + 2 }
 Number of inherited and non-inherited bits in NamespaceDeclBitfields. More...
enum  { NumTagDeclBits = NumDeclContextBits + 10 }
 Number of inherited and non-inherited bits in TagDeclBitfields. More...
enum  { NumEnumDeclBits = NumTagDeclBits + 20 }
 Number of inherited and non-inherited bits in EnumDeclBitfields. More...
enum  { NumRecordDeclBits = NumTagDeclBits + 41 }
 Number of inherited and non-inherited bits in RecordDeclBitfields. More...
enum  { NumOMPDeclareReductionDeclBits = NumDeclContextBits + 2 }
 Number of inherited and non-inherited bits in OMPDeclareReductionDeclBitfields. More...
enum  { NumFunctionDeclBits = NumDeclContextBits + 32 }
 Number of inherited and non-inherited bits in FunctionDeclBitfields. More...
enum  { NumCXXConstructorDeclBits = NumFunctionDeclBits + 19 }
 Number of inherited and non-inherited bits in CXXConstructorDeclBitfields. More...
enum  { NumObjCMethodDeclBits = NumDeclContextBits + 24 }
 Number of inherited and non-inherited bits in ObjCMethodDeclBitfields. More...
enum  { NumObjCContainerDeclBits = 64 }
 Number of inherited and non-inherited bits in ObjCContainerDeclBitfields. More...
enum  { NumLinkageSpecDeclBits = NumDeclContextBits + 4 }
 Number of inherited and non-inherited bits in LinkageSpecDeclBitfields. More...
enum  { NumBlockDeclBits = NumDeclContextBits + 5 }
 Number of inherited and non-inherited bits in BlockDeclBitfields. More...

Protected Member Functions

 DeclContext (Decl::Kind K)

Static Protected Member Functions

static std::pair< Decl *, Decl * > BuildDeclChain (ArrayRef< Decl * > Decls, bool FieldsAlreadyLoaded)
 Build up a chain of declarations.

Protected Attributes

StoredDeclsMapLookupPtr = nullptr
 Pointer to the data structure used to lookup declarations within this context (or a DependentStoredDeclsMap if this is a dependent context).
union { 
   DeclContextBitfields   DeclContextBits 
   NamespaceDeclBitfields   NamespaceDeclBits 
   TagDeclBitfields   TagDeclBits 
   EnumDeclBitfields   EnumDeclBits 
   RecordDeclBitfields   RecordDeclBits 
   OMPDeclareReductionDeclBitfields   OMPDeclareReductionDeclBits 
   FunctionDeclBitfields   FunctionDeclBits 
   CXXConstructorDeclBitfields   CXXConstructorDeclBits 
   ObjCMethodDeclBitfields   ObjCMethodDeclBits 
   ObjCContainerDeclBitfields   ObjCContainerDeclBits 
   LinkageSpecDeclBitfields   LinkageSpecDeclBits 
   BlockDeclBitfields   BlockDeclBits 
}; 
 This anonymous union stores the bits belonging to DeclContext and classes deriving from it.
DeclFirstDecl = nullptr
 FirstDecl - The first declaration stored within this declaration context.
DeclLastDecl = nullptr
 LastDecl - The last declaration stored within this declaration context.

Friends

class ASTDeclReader
 For makeDeclVisibleInContextImpl.
class ASTDeclWriter
 For checking the new bits in the Serialization part.
class ExternalASTSource
 For reconcileExternalVisibleStorage, CreateStoredDeclsMap, hasNeedToReconcileExternalVisibleStorage.
class DependentDiagnostic
 For CreateStoredDeclsMap.
class ASTWriter
 For hasNeedToReconcileExternalVisibleStorage, hasLazyLocalLexicalLookups, hasLazyExternalLexicalLookups.

Detailed Description

DeclContext - This is used only as base class of specific decl types that can act as declaration contexts.

These decls are (only the top classes that directly derive from DeclContext are mentioned, not their subclasses):

TranslationUnitDecl ExternCContext NamespaceDecl TagDecl OMPDeclareReductionDecl OMPDeclareMapperDecl FunctionDecl ObjCMethodDecl ObjCContainerDecl LinkageSpecDecl ExportDecl BlockDecl CapturedDecl

Definition at line 1449 of file DeclBase.h.

Member Typedef Documentation

◆ ddiag_range

Definition at line 2661 of file DeclBase.h.

◆ decl_range

using clang::DeclContext::decl_range = llvm::iterator_range<decl_iterator>

Definition at line 2369 of file DeclBase.h.

◆ lookup_iterator

◆ lookup_result

◆ lookups_range

Definition at line 2624 of file DeclBase.h.

◆ udir_iterator_base

Initial value:
llvm::iterator_adaptor_base<udir_iterator, lookup_iterator,
lookup_result::iterator lookup_iterator
Definition DeclBase.h:2578
std::forward_iterator_tag iterator_category
Definition DeclBase.h:1345
Represents C++ using-directive.
Definition DeclCXX.h:3090

Definition at line 2643 of file DeclBase.h.

◆ udir_range

using clang::DeclContext::udir_range = llvm::iterator_range<udir_iterator>

Definition at line 2654 of file DeclBase.h.

Member Enumeration Documentation

◆ anonymous enum

anonymous enum
protected
Enumerator
NumOdrHashBits 

Definition at line 1464 of file DeclBase.h.

◆ anonymous enum

anonymous enum
protected

Number of inherited and non-inherited bits in ObjCMethodDeclBitfields.

Enumerator
NumObjCMethodDeclBits 

Definition at line 1942 of file DeclBase.h.

◆ anonymous enum

anonymous enum
protected

Number of inherited and non-inherited bits in OMPDeclareReductionDeclBitfields.

Enumerator
NumOMPDeclareReductionDeclBits 

Definition at line 1725 of file DeclBase.h.

◆ anonymous enum

anonymous enum
protected

Number of inherited and non-inherited bits in FunctionDeclBitfields.

Enumerator
NumFunctionDeclBits 

Definition at line 1835 of file DeclBase.h.

◆ anonymous enum

anonymous enum
protected

Number of bits in DeclContextBitfields.

Enumerator
NumDeclContextBits 

Definition at line 1515 of file DeclBase.h.

◆ anonymous enum

anonymous enum
protected

Number of inherited and non-inherited bits in NamespaceDeclBitfields.

Enumerator
NumNamespaceDeclBits 

Definition at line 1536 of file DeclBase.h.

◆ anonymous enum

anonymous enum
protected

Number of inherited and non-inherited bits in ObjCContainerDeclBitfields.

Note that here we rely on the fact that SourceLocation is 32 bits wide. We check this with the static_assert in the ctor of DeclContext.

Enumerator
NumObjCContainerDeclBits 

Definition at line 1961 of file DeclBase.h.

◆ anonymous enum

anonymous enum
protected

Number of inherited and non-inherited bits in EnumDeclBitfields.

Enumerator
NumEnumDeclBits 

Definition at line 1624 of file DeclBase.h.

◆ anonymous enum

anonymous enum
protected

Number of inherited and non-inherited bits in BlockDeclBitfields.

Enumerator
NumBlockDeclBits 

Definition at line 2018 of file DeclBase.h.

◆ anonymous enum

anonymous enum
protected

Number of inherited and non-inherited bits in CXXConstructorDeclBitfields.

Enumerator
NumCXXConstructorDeclBits 

Definition at line 1865 of file DeclBase.h.

◆ anonymous enum

anonymous enum
protected

Number of inherited and non-inherited bits in RecordDeclBitfields.

Enumerator
NumRecordDeclBits 

Definition at line 1706 of file DeclBase.h.

◆ anonymous enum

anonymous enum
protected

Number of inherited and non-inherited bits in LinkageSpecDeclBitfields.

Enumerator
NumLinkageSpecDeclBits 

Definition at line 1985 of file DeclBase.h.

◆ anonymous enum

anonymous enum
protected

Number of inherited and non-inherited bits in TagDeclBitfields.

Enumerator
NumTagDeclBits 

Definition at line 1582 of file DeclBase.h.

Constructor & Destructor Documentation

◆ DeclContext()

DeclContext::DeclContext ( Decl::Kind K)
protected

Definition at line 1279 of file DeclBase.cpp.

References DeclContextBits, setHasExternalLexicalStorage(), setHasExternalVisibleStorage(), and setUseQualifiedLookup().

Referenced by clang::OMPDeclareReductionDecl::ASTDeclReader, clang::NamespaceDecl::ASTDeclWriter, clang::ObjCMethodDecl::ASTDeclWriter, clang::OMPDeclareMapperDecl::ASTDeclWriter, clang::FunctionDecl::castFromDeclContext(), clang::HLSLBufferDecl::castFromDeclContext(), clang::NamespaceDecl::castFromDeclContext(), clang::ObjCContainerDecl::castFromDeclContext(), clang::ObjCMethodDecl::castFromDeclContext(), clang::OMPDeclareMapperDecl::castFromDeclContext(), clang::OMPDeclareReductionDecl::castFromDeclContext(), clang::TagDecl::castFromDeclContext(), clang::FunctionDecl::castToDeclContext(), clang::HLSLBufferDecl::castToDeclContext(), clang::NamespaceDecl::castToDeclContext(), clang::ObjCContainerDecl::castToDeclContext(), clang::ObjCMethodDecl::castToDeclContext(), clang::OMPDeclareMapperDecl::castToDeclContext(), clang::OMPDeclareReductionDecl::castToDeclContext(), clang::TagDecl::castToDeclContext(), classof(), clang::FunctionDecl::Create(), clang::FunctionDecl::Create(), clang::HLSLBufferDecl::Create(), clang::NamespaceDecl::Create(), clang::ObjCMethodDecl::Create(), clang::OMPDeclareMapperDecl::Create(), clang::OMPDeclareReductionDecl::Create(), clang::HLSLBufferDecl::CreateDefaultCBuffer(), dumpDeclContext(), dumpLookups(), Encloses(), Equals(), clang::FunctionDecl::FunctionDecl(), getEnclosingNamespaceContext(), getEnclosingNamespaceContext(), getExternCContext(), getInnermostBlockDecl(), getLexicalParent(), getLexicalParent(), getLookupParent(), getLookupParent(), getNonClosureAncestor(), getNonTransparentContext(), getNonTransparentContext(), getOuterLexicalRecordContext(), getOuterLexicalRecordContext(), getParent(), getParent(), getPrimaryContext(), getPrimaryContext(), getRedeclContext(), getRedeclContext(), InEnclosingNamespaceSetOf(), clang::ObjCMethodDecl::isDesignatedInitializerForTheInterface(), clang::FunctionDecl::isGlobal(), LexicallyEncloses(), lookups(), makeDeclVisibleInContext(), noload_lookup(), noload_lookups(), clang::ObjCContainerDecl::ObjCContainerDecl(), and clang::TagDecl::TagDecl().

◆ ~DeclContext()

DeclContext::~DeclContext ( )
default

Member Function Documentation

◆ addDecl()

void DeclContext::addDecl ( Decl * D)

Add the declaration D into this context.

This routine should be invoked when the declaration D has first been declared, to place D into the context where it was (lexically) defined. Every declaration must be added to one (and only one!) context, where it can be visited via [decls_begin(), decls_end()). Once a declaration has been added to its lexical context, the corresponding DeclContext owns the declaration.

If D is also a NamedDecl, it will be made visible within its semantic context via makeDeclVisibleInContext.

Definition at line 1793 of file DeclBase.cpp.

References addHiddenDecl().

Referenced by clang::Sema::ActOnCapturedRegionStart(), clang::Sema::ActOnCapturedRegionStart(), clang::SemaOpenACC::ActOnEndDeclDirective(), clang::Sema::ActOnFunctionDeclarator(), clang::SemaOpenMP::ActOnOpenMPAllocateDirective(), clang::SemaOpenMP::ActOnOpenMPDeclareMapperDirective(), clang::SemaOpenMP::ActOnOpenMPDeclareReductionDirectiveStart(), clang::SemaObjC::ActOnPropertyImplDecl(), clang::Sema::ActOnStartNamespaceDef(), clang::ObjCImplDecl::addClassMethod(), addFieldToRecordDecl(), clang::ObjCImplDecl::addInstanceMethod(), clang::HLSLBufferDecl::addLayoutStruct(), clang::ObjCImplDecl::addPropertyImplementation(), clang::Sema::BuildAnonymousStructOrUnion(), clang::ASTContext::buildBuiltinTemplateDecl(), clang::Sema::BuildCaptureField(), buildImplicitMapper(), clang::Sema::BuildModuleInclude(), clang::SemaObjC::CheckImplementationIvars(), clang::SemaOpenACC::CheckRoutineDecl(), clang::Sema::CompleteLambdaCallOperator(), constructBufferConceptDecl(), CreateAAPCSABIBuiltinVaListDecl(), clang::Sema::CreateBuiltin(), clang::Sema::CreateCapturedStmtRecordDecl(), createHostLayoutStruct(), createHostLayoutStructForBuffer(), clang::Sema::createImplicitModuleImportForErrorRecovery(), clang::Sema::createLambdaClosureType(), clang::SemaObjC::CreatePropertyDecl(), clang::Sema::DeclareImplicitCopyAssignment(), clang::Sema::DeclareImplicitCopyConstructor(), clang::Sema::DeclareImplicitDefaultConstructor(), clang::Sema::DeclareImplicitDestructor(), clang::Sema::DeclareImplicitMoveAssignment(), clang::Sema::DeclareImplicitMoveConstructor(), clang::Sema::findInheritingConstructor(), clang::ASTContext::getBlockDescriptorExtendedType(), clang::ASTContext::getBlockDescriptorType(), clang::CodeGen::CodeGenModule::getObjCFastEnumerationStateType(), clang::ASTContext::getObjCSuperType(), clang::ASTContext::InitBuiltinTypes(), clang::HLSLExternalSemaSource::InitializeSema(), clang::SemaObjC::ProcessPropertyDecl(), clang::Sema::PushUsingDirective(), clang::TreeTransform< AdjustConstraintDepth >::RebuildExceptionDecl(), and clang::Sema::SubstSpaceshipAsEqualEqual().

◆ addDeclInternal()

void DeclContext::addDeclInternal ( Decl * D)

Add the declaration D into this context, but suppress searches for external declarations with the same name.

Although analogous in function to addDecl, this removes an important check. This is only useful if the Decl is being added in response to an external search; in all other cases, addDecl() is the right function to use. See the ASTImporter for use cases.

Definition at line 1801 of file DeclBase.cpp.

References addHiddenDecl().

Referenced by clang::ASTNodeImporter::ImportDeclContext(), clang::ASTNodeImporter::VisitAccessSpecDecl(), clang::ASTNodeImporter::VisitClassTemplateSpecializationDecl(), clang::ASTNodeImporter::VisitConceptDecl(), clang::ASTNodeImporter::VisitEmptyDecl(), clang::ASTNodeImporter::VisitEnumConstantDecl(), clang::ASTNodeImporter::VisitFieldDecl(), clang::ASTNodeImporter::VisitFriendDecl(), clang::ASTNodeImporter::VisitFunctionDecl(), clang::ASTNodeImporter::VisitImplicitConceptSpecializationDecl(), clang::ASTNodeImporter::VisitIndirectFieldDecl(), clang::ASTNodeImporter::VisitLabelDecl(), clang::ASTNodeImporter::VisitLifetimeExtendedTemporaryDecl(), clang::ASTNodeImporter::VisitLinkageSpecDecl(), clang::ASTNodeImporter::VisitNamespaceAliasDecl(), clang::ASTNodeImporter::VisitNamespaceDecl(), clang::ASTNodeImporter::VisitObjCCategoryDecl(), clang::ASTNodeImporter::VisitObjCCategoryImplDecl(), clang::ASTNodeImporter::VisitObjCInterfaceDecl(), clang::ASTNodeImporter::VisitObjCIvarDecl(), clang::ASTNodeImporter::VisitObjCMethodDecl(), clang::ASTNodeImporter::VisitObjCPropertyDecl(), clang::ASTNodeImporter::VisitObjCPropertyImplDecl(), clang::ASTNodeImporter::VisitObjCProtocolDecl(), clang::ASTNodeImporter::VisitRequiresExprBodyDecl(), clang::ASTNodeImporter::VisitStaticAssertDecl(), clang::ASTNodeImporter::VisitTypeAliasTemplateDecl(), clang::ASTNodeImporter::VisitTypedefNameDecl(), clang::ASTNodeImporter::VisitUnresolvedUsingTypenameDecl(), clang::ASTNodeImporter::VisitUnresolvedUsingValueDecl(), clang::ASTNodeImporter::VisitUsingDecl(), clang::ASTNodeImporter::VisitUsingDirectiveDecl(), clang::ASTNodeImporter::VisitUsingEnumDecl(), clang::ASTNodeImporter::VisitUsingShadowDecl(), and clang::ASTNodeImporter::VisitVarTemplateDecl().

◆ addHiddenDecl()

void DeclContext::addHiddenDecl ( Decl * D)

Add the declaration D to this context without modifying any lookup tables.

This is useful for some operations in dependent contexts where the semantic context might not be dependent; this basically only happens with friends.

Definition at line 1767 of file DeclBase.cpp.

References clang::ASTContext::addedLocalImportDecl(), FirstDecl, clang::Decl::getASTContext(), clang::Decl::getLexicalDeclContext(), clang::Decl::getNextDeclInContext(), clang::Decl::isFromASTFile(), and LastDecl.

Referenced by addDecl(), addDeclInternal(), buildCaptureDecl(), clang::Sema::BuildVariableInstantiation(), and FinishForRangeVarDecl().

◆ BuildDeclChain()

std::pair< Decl *, Decl * > DeclContext::BuildDeclChain ( ArrayRef< Decl * > Decls,
bool FieldsAlreadyLoaded )
staticprotected

Build up a chain of declarations.

Returns
the first/last pair of declarations.

Definition at line 1550 of file DeclBase.cpp.

References clang::isa(), and clang::Decl::NextInContextAndBits.

Referenced by clang::RecordDecl::reorderDecls().

◆ buildLookup()

StoredDeclsMap * DeclContext::buildLookup ( )

Ensure the lookup structure is fully-built and return it.

buildLookup - Build the lookup data structure with all of the declarations in this DeclContext (and any other contexts linked to it or transparent contexts nested within it) and return it.

Note that the produced map may miss out declarations from an external source. If it does, those entries will be marked with the 'hasExternalDecls' flag.

Definition at line 1816 of file DeclBase.cpp.

References collectAllContexts(), getPrimaryContext(), hasExternalVisibleStorage(), and LookupPtr.

Referenced by lookups().

◆ classof() [1/2]

bool DeclContext::classof ( const Decl * D)
static

Definition at line 1289 of file DeclBase.cpp.

References clang::Decl::getKind().

◆ classof() [2/2]

bool clang::DeclContext::classof ( const DeclContext * D)
inlinestatic

Definition at line 2728 of file DeclBase.h.

References DeclContext().

◆ collectAllContexts()

void DeclContext::collectAllContexts ( SmallVectorImpl< DeclContext * > & Contexts)

Collects all of the declaration contexts that are semantically connected to this declaration context.

For declaration contexts that have multiple semantically connected but syntactically distinct contexts, such as C++ namespaces, this routine retrieves the complete set of such declaration contexts in source order. For example, given:

namespace N {
int x;
}
namespace N {
int y;
}

The Contexts parameter will contain both definitions of N.

Parameters
ContextsWill be cleared and set to the set of declaration contexts that are semanticaly connected to this declaration context, in source order, including this context (which may be the only result, for non-namespace contexts).

Definition at line 1536 of file DeclBase.cpp.

References collectAllContextsImpl(), and getDeclKind().

Referenced by buildLookup().

◆ containsDecl()

◆ containsDeclAndLoad()

bool DeclContext::containsDeclAndLoad ( Decl * D) const

Checks whether a declaration is in this context.

This also loads the Decls from the external source before the check.

Definition at line 1667 of file DeclBase.cpp.

References containsDecl(), and hasExternalLexicalStorage().

◆ ddiags()

◆ decls()

decl_range clang::DeclContext::decls ( ) const
inline

decls_begin/decls_end - Iterate over the declarations stored in this context.

Definition at line 2373 of file DeclBase.h.

References decls_begin(), and decls_end().

Referenced by clang::SemaOpenMP::ActOnOpenMPAssumesDirective(), clang::Sema::ActOnStartOfFunctionDef(), AddInterfaceResults(), clang::CallGraph::addNodesForBlocks(), clang::ODRHash::AddObjCInterfaceDecl(), clang::ODRHash::AddObjCProtocolDecl(), AddProtocolResults(), CheckAbstractClassUsage(), checkExportedDeclContext(), clang::IncrementalParser::CleanUpPTU(), clang::SemaCodeCompletion::CodeCompleteObjCInterfaceCategory(), clang::SemaCodeCompletion::CodeCompleteObjCPropertyDefinition(), diagnoseBadDirectAccess(), DiagnoseNonAggregateReason(), clang::Sema::DiagnoseUnusedNestedTypedefs(), clang::ASTNodeTraverser< Derived, NodeDelegateType >::dumpDeclContext(), clang::CIRGen::CIRGenModule::emitDeclContext(), clang::CodeGen::CodeGenModule::EmitTopLevelDecl(), clang::ASTMergeAction::ExecuteAction(), getNonCLikeKindForAnonymousStruct(), GroupNewVirtualOverloads(), clang::SemaBPF::handlePreserveAIRecord(), clang::ASTNodeImporter::ImportDeclContext(), clang::index::IndexingContext::indexDeclContext(), InjectAnonymousStructOrUnionMembers(), clang::Sema::InstantiateClass(), clang::Sema::InstantiateClassMembers(), isTrivialForMSVC(), clang::serialization::numberAnonymousDeclsWithin(), clang::randstruct::randomizeStructureLayout(), clang::Sema::SetCtorInitializers(), and clang::installapi::InstallAPIVisitor::VisitCXXRecordDecl().

◆ decls_begin()

◆ decls_empty()

bool DeclContext::decls_empty ( ) const

◆ decls_end()

◆ dumpAsDecl() [1/2]

LLVM_DUMP_METHOD void DeclContext::dumpAsDecl ( ) const

Definition at line 245 of file ASTDumper.cpp.

References dumpAsDecl().

Referenced by dumpAsDecl().

◆ dumpAsDecl() [2/2]

LLVM_DUMP_METHOD void DeclContext::dumpAsDecl ( const ASTContext * Ctx) const

◆ dumpDeclContext()

LLVM_DUMP_METHOD void DeclContext::dumpDeclContext ( ) const

◆ dumpLookups() [1/2]

LLVM_DUMP_METHOD void DeclContext::dumpLookups ( ) const

Definition at line 270 of file ASTDumper.cpp.

References dumpLookups().

Referenced by dumpLookups().

◆ dumpLookups() [2/2]

void clang::DeclContext::dumpLookups ( llvm::raw_ostream & OS,
bool DumpDecls = false,
bool Deserialize = false ) const

References DeclContext(), and DeclContextBits.

◆ Encloses()

◆ Equals()

◆ getDeclKind()

◆ getDeclKindName()

const char * DeclContext::getDeclKindName ( ) const

Definition at line 188 of file DeclBase.cpp.

References getDeclKind().

◆ getEnclosingNamespaceContext() [1/2]

◆ getEnclosingNamespaceContext() [2/2]

const DeclContext * clang::DeclContext::getEnclosingNamespaceContext ( ) const
inline

Definition at line 2285 of file DeclBase.h.

References DeclContext(), and getEnclosingNamespaceContext().

◆ getExternCContext()

const LinkageSpecDecl * DeclContext::getExternCContext ( ) const

Retrieve the nearest enclosing C linkage specification context.

Definition at line 1413 of file DeclBase.cpp.

References clang::C, clang::cast(), DeclContext(), getDeclKind(), and getLexicalParent().

Referenced by clang::Sema::CheckLiteralOperatorDeclaration(), and clang::Sema::CheckTemplateDeclScope().

◆ getInnermostBlockDecl()

const BlockDecl * DeclContext::getInnermostBlockDecl ( ) const

Return this DeclContext if it is a BlockDecl.

Otherwise, return the innermost enclosing BlockDecl or null if there are no enclosing blocks.

Definition at line 1325 of file DeclBase.cpp.

References clang::cast(), DeclContext(), getParent(), and isClosure().

Referenced by diagnoseImplicitlyRetainedSelf().

◆ getLexicalParent() [1/2]

◆ getLexicalParent() [2/2]

const DeclContext * clang::DeclContext::getLexicalParent ( ) const
inline

Definition at line 2128 of file DeclBase.h.

References DeclContext(), and getLexicalParent().

◆ getLookupParent() [1/2]

DeclContext * DeclContext::getLookupParent ( )

Find the parent context of this context that will be used for unqualified name lookup.

Generally, the parent lookup context is the semantic context. However, for a friend function the parent lookup context is the lexical context, which is the class in which the friend is declared.

Definition at line 1309 of file DeclBase.cpp.

References DeclContext(), getLexicalParent(), getParent(), getRedeclContext(), clang::isa(), isFileContext(), clang::isLambdaCallOperator(), and isRecord().

Referenced by AddTopLevelDeclarationToHash(), clang::Sema::CheckClassTemplate(), clang::Sema::DiagnoseEmptyLookup(), clang::Sema::EnterTemplatedContext(), findRecordWithDependentBasesOfEnclosingMethod(), getLookupParent(), and synthesizeCurrentNestedNameSpecifier().

◆ getLookupParent() [2/2]

const DeclContext * clang::DeclContext::getLookupParent ( ) const
inline

Definition at line 2134 of file DeclBase.h.

References DeclContext(), and getLookupParent().

◆ getLookupPtr()

StoredDeclsMap * clang::DeclContext::getLookupPtr ( ) const
inline

Retrieve the internal representation of the lookup structure.

This may omit some names if we are lazily building the structure.

Definition at line 2681 of file DeclBase.h.

References LookupPtr.

Referenced by clang::IncrementalParser::CleanUpPTU(), and noload_lookups().

◆ getNonClosureAncestor() [1/2]

Decl * DeclContext::getNonClosureAncestor ( )

Find the nearest non-closure ancestor of this context, i.e.

the innermost semantic parent of this context which is not a closure. A context may be its own non-closure ancestor.

Definition at line 1271 of file DeclBase.cpp.

Referenced by getNonClosureAncestor(), clang::Sema::GloballyUniqueObjectMightBeAccidentallyDuplicated(), and LookupMethodInReceiverType().

◆ getNonClosureAncestor() [2/2]

const Decl * clang::DeclContext::getNonClosureAncestor ( ) const
inline

Definition at line 2254 of file DeclBase.h.

References DeclContext(), and getNonClosureAncestor().

◆ getNonTransparentContext() [1/2]

◆ getNonTransparentContext() [2/2]

const DeclContext * clang::DeclContext::getNonTransparentContext ( ) const
inline

Definition at line 2260 of file DeclBase.h.

References DeclContext(), and getNonTransparentContext().

◆ getOuterLexicalRecordContext() [1/2]

RecordDecl * DeclContext::getOuterLexicalRecordContext ( )

◆ getOuterLexicalRecordContext() [2/2]

const RecordDecl * clang::DeclContext::getOuterLexicalRecordContext ( ) const
inline

Definition at line 2291 of file DeclBase.h.

References DeclContext(), and getOuterLexicalRecordContext().

◆ getParent() [1/2]

DeclContext * clang::DeclContext::getParent ( )
inline

getParent - Returns the containing DeclContext.

Definition at line 2109 of file DeclBase.h.

References clang::cast(), and DeclContext().

Referenced by clang::Sema::ActOnFinishFullExpr(), clang::Sema::ActOnFriendFunctionDecl(), clang::Sema::ActOnLambdaClosureQualifiers(), clang::Sema::ActOnSEHTryBlock(), clang::Sema::ActOnSuperScopeSpecifier(), clang::Sema::ActOnTag(), clang::Sema::ActOnUsingDirective(), clang::Sema::ActOnVariableDeclarator(), clang::ODRHash::AddCXXRecordDecl(), clang::ODRHash::AddFunctionDecl(), clang::Sema::adjustContextForLocalExternDecl(), adjustCVQualifiersForCXXThisWithinLambda(), clang::CodeGen::CodeGenModule::AlwaysHasLTOVisibilityPublic(), clang::Sema::BuildCallToMemberFunction(), clang::Sema::BuildCXXNestedNameSpecifier(), clang::Sema::BuildUsingDeclaration(), calculateOffset(), clang::ento::RetainSummaryManager::canEval(), clang::Sema::CheckAddressOfOperand(), checkAttrArgsAreCapabilityObjs(), clang::Sema::CheckCompareOperands(), clang::Sema::CheckConstructorAccess(), clang::Sema::CheckExplicitlyDefaultedComparison(), clang::Sema::CheckFunctionConstraints(), CheckIfAnyEnclosingLambdasMustCaptureAnyPotentialCaptures(), clang::Sema::CheckImplicitSpecialMemberDeclaration(), checkInheritableAttr(), checkModuleImportContext(), clang::Sema::CheckParmsForFunctionDef(), clang::Sema::CheckShadow(), CheckSimplerImplicitMovesMSVCWorkaround(), clang::Sema::CheckUsingShadowDecl(), ClassifyImplicitMemberAccess(), CollectEnclosingNamespace(), clang::PredefinedExpr::ComputeName(), ConvertDeducedTemplateArguments(), clang::Sema::CreateCapturedStmtRecordDecl(), createFriendTagNNSFixIt(), clang::ASTContext::DeclMustBeEmitted(), diagnoseBadDirectAccess(), clang::Sema::DiagnoseDependentMemberLookup(), diagnoseImplicitlyRetainedSelf(), diagnoseInstanceReference(), clang::Sema::diagnoseQualifiedDeclaration(), DiagnoseTwoPhaseLookup(), diagnoseUncapturableValueReferenceOrBinding(), dumpDeclContext(), EmitObjectDelete(), clang::CodeGen::CodeGenFunction::EmitOMPTaskBasedDirective(), Encloses(), enclosingClassIsRelatedToClassInWhichMembersWereFound(), clang::ento::LikelyFalsePositiveSuppressionBRVisitor::finalizeVisitor(), clang::Sema::FindInstantiatedDecl(), clang::ObjCMethodDecl::findPropertyDecl(), findRecordWithDependentBasesOfEnclosingMethod(), getBaseAlignmentAndOffsetFromLValue(), getBestNamespaceSubstr(), clang::BodyFarm::getBody(), clang::CXXMethodDecl::getCorrespondingMethodDeclaredInClass(), clang::Sema::getCurMethodDecl(), clang::Sema::getCurrentMangleNumberContext(), clang::ASTContext::getDeclAlign(), getEnclosingNamespaceContext(), clang::Sema::getFunctionLevelDeclContext(), getFunctionName(), clang::CXXMethodDecl::getFunctionObjectParameterReferenceType(), getImplicitCodeSegAttrFromClass(), getInnermostBlockDecl(), getInnerPointerType(), clang::getLambdaAwareParentOfDeclContext(), getLookupParent(), getNonTransparentContext(), getNullabilityCompletenessCheckFileID(), clang::interp::Context::getOrCreateFunction(), getOutermostFuncOrBlockContext(), clang::CXXMethodDecl::getParent(), clang::CXXMethodDecl::getParent(), getParent(), clang::interp::Function::getParentDecl(), clang::CodeCompletionTUInfo::getParentName(), getPredefinedExprDecl(), getRedeclContext(), clang::AnalysisDeclContext::getSelfDecl(), getTagInjectionContext(), clang::CXXMethodDecl::getThisType(), clang::Decl::getTranslationUnitDecl(), clang::SemaObjC::handleIBOutletCollection(), InEnclosingNamespaceSetOf(), clang::dataflow::Environment::initialize(), clang::Sema::InstantiateFunctionDeclaration(), isAncestorDeclContextOf(), clang::ento::isCapturedByReference(), clang::CXXMethodDecl::isCopyAssignmentOperator(), clang::CXXRecordDecl::isCurrentInstantiation(), isDeclContextInNamespace(), IsDeclSourceLocationCurrent(), isDependentContext(), clang::dataflow::isFullyQualifiedNamespaceEqualTo(), clang::isGenericLambdaCallOperatorOrStaticInvokerSpecialization(), clang::FunctionDecl::isGlobal(), clang::Decl::isInAnonymousNamespace(), IsInfinityFunction(), clang::Sema::IsInsideALocalClassWithinATemplateFunction(), clang::AnalysisDeclContext::isInStdNamespace(), clang::CXXMethodDecl::isLambdaStaticInvoker(), clang::CXXMethodDecl::isMoveAssignmentOperator(), IsRecordContextStructurallyEquivalent(), clang::NamespaceDecl::isRedundantInlineQualifierFor(), isReferenceToNonConstCapture(), clang::interp::InterpFrame::isStdFunction(), isStdNamespace(), IsUsingDirectiveInToplevelContext(), clang::ento::isWithinStdNamespace(), lookup(), clang::MangleContext::mangleBlock(), clang::Sema::MarkFunctionReferenced(), MaybeAddOverrideCalls(), noload_lookup(), clang::tooling::stdlib::Recognizer::operator()(), clang::CodeGen::CGRecordLayout::print(), clang::NamedDecl::printNestedNameSpecifier(), recoverFromMSUnqualifiedLookup(), recoverFromTypeInKnownDependentBase(), rewriteBuiltinFunctionDecl(), clang::interp::MemberPointer::toPointer(), clang::Sema::tryCaptureVariable(), tryImplicitlyCaptureThisIfImplicitMemberFunctionAccessWithDependentArgs(), clang::FunctionCallFilterCCC::ValidateCandidate(), clang::ento::ExprEngine::VisitCommonDeclRefExpr(), clang::TextNodeDumper::VisitFunctionDecl(), clang::interp::Compiler< Emitter >::VisitMemberExpr(), and clang::ASTDeclWriter::VisitNamespaceDecl().

◆ getParent() [2/2]

const DeclContext * clang::DeclContext::getParent ( ) const
inline

Definition at line 2112 of file DeclBase.h.

References DeclContext(), and getParent().

◆ getParentASTContext()

◆ getPrimaryContext() [1/2]

DeclContext * DeclContext::getPrimaryContext ( )

◆ getPrimaryContext() [2/2]

const DeclContext * clang::DeclContext::getPrimaryContext ( ) const
inline

Definition at line 2271 of file DeclBase.h.

References DeclContext(), and getPrimaryContext().

◆ getRedeclContext() [1/2]

DeclContext * DeclContext::getRedeclContext ( )

getRedeclContext - Retrieve the context in which an entity conflicts with other entities of the same name, or where it is a redeclaration if the two entities are compatible.

This skips through transparent contexts.

Definition at line 2022 of file DeclBase.cpp.

References DeclContext(), getDeclKind(), clang::ASTContext::getLangOpts(), getParent(), getParentASTContext(), isRecord(), and isTransparentContext().

Referenced by clang::Sema::ActOnDecompositionDeclarator(), clang::Sema::ActOnFriendFunctionDecl(), clang::Sema::ActOnFunctionDeclarator(), clang::Sema::ActOnStartConceptDefinition(), clang::Sema::ActOnTag(), clang::Sema::ActOnTypedefNameDecl(), clang::Sema::ActOnVariableDeclarator(), clang::ASTImporterLookupTable::add(), adjustDeclContextForDeclaratorDecl(), clang::CodeGen::CodeGenModule::AlwaysHasLTOVisibilityPublic(), clang::Sema::BuildAnonymousStructOrUnion(), clang::Sema::CheckClassTemplate(), clang::Sema::CheckDeductionGuideDeclarator(), clang::Sema::CheckDependentFunctionTemplateSpecialization(), CheckExplicitInstantiationScope(), clang::Sema::CheckFunctionTemplateSpecialization(), CheckMultiVersionFunction(), CheckOperatorNewDeleteDeclarationScope(), clang::Sema::CheckShadow(), clang::Sema::CheckTemplateDeclScope(), CheckTemplateSpecializationScope(), clang::Sema::CheckUsingDeclQualifier(), clang::ASTReader::CompleteRedeclChain(), clang::LinkageComputer::computeLVForDecl(), createFriendTagNNSFixIt(), clang::TypeName::createNestedNameSpecifierForScopeOf(), clang::NamedDecl::declarationReplaces(), clang::Sema::DiagnoseEmptyLookup(), clang::Sema::FinalizeDeclaration(), clang::ASTContext::forEachMultiversionedFunctionVersion(), getContextForScopeMatching(), getDeclForLocalLookup(), getFunctionStorageClass(), getLookupParent(), getRedeclContext(), handleExcludeFromExplicitInstantiationAttr(), handleWeakRefAttr(), isAcceptableTagRedeclContext(), clang::ento::CheckerContext::isCLibraryFunction(), clang::NamedDecl::isCXXClassMember(), clang::IdentifierResolver::isDeclInScope(), clang::VarDecl::isFunctionOrMethodVarDecl(), IsInternalDeclFromFileContext(), clang::FunctionDecl::isMain(), clang::FunctionDecl::isMSVCRTEntryPoint(), isOutOfScopePreviousDeclaration(), clang::NamedDecl::isReserved(), clang::FunctionDecl::isReservedGlobalPlacementOperator(), clang::ASTContext::isSameEntity(), isStdNamespace(), clang::FunctionDecl::isUsableAsGlobalAllocationFunctionInConstantEvaluation(), clang::Sema::LookupName(), clang::Sema::makeMergedDefinitionVisible(), clang::Sema::PushOnScopeChains(), clang::Sema::RegisterLocallyScopedExternCDecl(), clang::ASTImporterLookupTable::remove(), shouldConsiderLinkage(), shouldConsiderLinkage(), ShouldWarnAboutMissingPrototype(), clang::IdentifierResolver::tryAddTopLevelDecl(), clang::TemplateDeclInstantiator::VisitFunctionDecl(), and clang::ASTDeclWriter::VisitNamespaceDecl().

◆ getRedeclContext() [2/2]

const DeclContext * clang::DeclContext::getRedeclContext ( ) const
inline

Definition at line 2279 of file DeclBase.h.

References DeclContext(), and getRedeclContext().

◆ hasExternalLexicalStorage()

bool clang::DeclContext::hasExternalLexicalStorage ( ) const
inline

◆ hasExternalVisibleStorage()

bool clang::DeclContext::hasExternalVisibleStorage ( ) const
inline

Whether this DeclContext has external storage containing additional declarations that are visible in this context.

Definition at line 2700 of file DeclBase.h.

References DeclContextBits.

Referenced by buildLookup(), clang::ASTReader::completeVisibleDeclsMap(), clang::ExternalSource::completeVisibleDeclsMap(), clang::ASTDumper::dumpLookups(), clang::ASTReader::FindExternalVisibleDeclsByName(), localUncachedLookup(), and lookups().

◆ hasValidDeclKind()

bool DeclContext::hasValidDeclKind ( ) const

Definition at line 179 of file DeclBase.cpp.

References getDeclKind().

Referenced by dumpAsDecl().

◆ InEnclosingNamespaceSetOf()

bool DeclContext::InEnclosingNamespaceSetOf ( const DeclContext * NS) const

Test if this context is part of the enclosing namespace set of the context NS, as defined in C++0x [namespace.def]p9.

If either context isn't a namespace, this is equivalent to Equals().

The enclosing namespace set of a namespace is the namespace and, if it is inline, its enclosing namespace, recursively.

Definition at line 2059 of file DeclBase.cpp.

References DeclContext(), Equals(), getParent(), and isFileContext().

Referenced by clang::Sema::CheckDependentFunctionTemplateSpecialization(), CheckExplicitInstantiationScope(), clang::Sema::CheckFunctionTemplateSpecialization(), clang::IdentifierResolver::isDeclInScope(), and isStdClassTemplate().

◆ isClosure()

bool clang::DeclContext::isClosure ( ) const
inline

◆ isDeclInLexicalTraversal()

bool clang::DeclContext::isDeclInLexicalTraversal ( const Decl * D) const
inline

Determine whether the given declaration is stored in the list of declarations lexically within this context.

Definition at line 2714 of file DeclBase.h.

References FirstDecl, LastDecl, and clang::Decl::NextInContextAndBits.

Referenced by clang::ASTReader::FindExternalLexicalDecls().

◆ isDependentContext()

bool DeclContext::isDependentContext ( ) const

Determines whether this context is dependent on a template parameter.

Definition at line 1358 of file DeclBase.cpp.

References clang::cast(), clang::Function, getLexicalParent(), getParent(), clang::isa(), isDependentContext(), and isFileContext().

Referenced by clang::Sema::ActOnBlockStmtExpr(), clang::Sema::ActOnClassTemplateSpecialization(), clang::Sema::ActOnCXXEnterDeclaratorScope(), clang::Sema::ActOnFinishFunctionBody(), clang::Sema::ActOnFunctionDeclarator(), actOnOMPReductionKindClause(), clang::SemaOpenMP::ActOnOpenMPInterchangeDirective(), clang::Sema::ActOnVariableDeclarator(), clang::SemaOpenACC::ActOnVariableInit(), AddOrdinaryNameResults(), AddRecordMembersCompletionResults(), clang::Sema::adjustContextForLocalExternDecl(), clang::Sema::BuildCXXNestedNameSpecifier(), buildDeclareReductionRef(), buildUserDefinedMapperRef(), clang::Sema::BuildVariableInstantiation(), clang::Sema::canFullyTypeCheckRedeclaration(), checkAllocateClauses(), clang::SemaCUDA::checkAllowedInitializer(), clang::Sema::CheckClassTemplate(), clang::Sema::CheckExplicitlyDefaultedFunction(), clang::Sema::CheckFunctionConstraints(), clang::Sema::CheckFunctionDeclaration(), CheckIfAnyEnclosingLambdasMustCaptureAnyPotentialCaptures(), checkOpenMPIterationSpace(), checkOpenMPLoop(), CheckOperatorDeleteDeclaration(), clang::Sema::CheckTemplatePartialSpecializationArgs(), checkTypeMappable(), clang::Sema::CheckUsingDeclQualifier(), clang::computeDependence(), clang::computeDependence(), clang::computeDependence(), ddiags(), clang::Sema::DeclareAggregateDeductionGuideFromInitList(), clang::Sema::DeclareImplicitDeductionGuides(), clang::ASTContext::DeclMustBeEmitted(), clang::Sema::DeduceFunctionTypeFromReturnExpr(), DelayDependentAccess(), clang::Sema::FinalizeVarWithDestructor(), findRecordWithDependentBasesOfEnclosingMethod(), finishLinearClauses(), clang::Sema::getConstructorName(), clang::NestedNameSpecifier::getDependence(), clang::Sema::getEmissionStatus(), getStackIndexOfNearestEnclosingCaptureReadyLambda(), clang::Sema::getTypeName(), clang::Sema::HandleDeclarator(), clang::CXXRecordDecl::hasAnyDependentBases(), hasUserDefinedMapper(), clang::Sema::InstantiateClass(), clang::CXXRecordDecl::isCurrentInstantiation(), isDependentContext(), isDependentContextAtLevel(), clang::TagDecl::isDependentType(), IsDerivedFromInclusive(), clang::Decl::isInLocalScopeForInstantiation(), isNonNegativeIntegerValue(), isOdrUseContext(), clang::Expr::isPotentialConstantExpr(), IsUnusedPrivateField(), clang::Sema::LookupParsedName(), clang::Sema::LookupQualifiedName(), clang::Sema::MarkBaseAndMemberDestructorsReferenced(), MarkBaseDestructorsReferenced(), clang::CXXRecordDecl::mayBeAbstract(), clang::Sema::MaybeBindToTemporary(), clang::serialization::needsAnonymousDeclarationNumber(), ProcessOpenMPDoacrossClauseCommon(), clang::Sema::RequireCompleteDeclContext(), shouldFunctionGenerateHereOnly(), clang::Sema::shouldLinkDependentDeclWithPrevious(), clang::Sema::ShouldWarnIfUnusedFileScopedDecl(), EnsureImmediateInvocationInDefaultArgs::TransformSourceLocExpr(), tryImplicitlyCaptureThisIfImplicitMemberFunctionAccessWithDependentArgs(), and clang::ASTNodeImporter::VisitRecordDecl().

◆ isExternCContext()

bool DeclContext::isExternCContext ( ) const

◆ isExternCXXContext()

bool DeclContext::isExternCXXContext ( ) const

Determines whether this context or some of its ancestors is a linkage specification context that specifies C++ linkage.

Definition at line 1424 of file DeclBase.cpp.

References clang::CXX, and isLinkageSpecContext().

Referenced by clang::SemaOpenMP::ActOnStartOpenMPDeclareTargetContext(), clang::FunctionDecl::isInExternCXXContext(), and clang::VarDecl::isInExternCXXContext().

◆ isFileContext()

bool clang::DeclContext::isFileContext ( ) const
inline

Definition at line 2180 of file DeclBase.h.

References getDeclKind().

Referenced by clang::Sema::ActOnDeclarator(), clang::SemaObjC::ActOnFinishObjCImplementation(), clang::Sema::ActOnFriendFunctionDecl(), clang::Sema::ActOnFunctionDeclarator(), clang::Sema::ActOnStartConceptDefinition(), clang::SemaOpenMP::ActOnStartOpenMPDeclareTargetContext(), clang::Sema::ActOnTag(), clang::Sema::ActOnTagFinishDefinition(), clang::ASTUnit::addFileLevelDecl(), clang::ODRHash::AddFunctionDecl(), clang::Sema::adjustContextForLocalExternDecl(), clang::Sema::CheckClassTemplate(), clang::ASTDeclReader::checkMultipleDefinitionInNamedModules(), clang::Sema::CheckRedeclarationExported(), clang::Sema::CheckTemplateDeclScope(), CheckTemplateSpecializationScope(), clang::SemaCodeCompletion::CodeCompleteNamespaceDecl(), clang::SemaCodeCompletion::CodeCompleteQualifiedId(), CollectEnclosingNamespace(), clang::LinkageComputer::computeLVForDecl(), computeShadowedDeclKind(), CppNamespaceLookup(), clang::Sema::CreateCapturedStmtRecordDecl(), clang::Sema::FinalizeDeclaration(), clang::Sema::FindInstantiatedDecl(), getEnclosingNamespaceContext(), clang::ASTContext::getInlineVariableDefinitionKind(), getLookupParent(), clang::Decl::getParentFunctionOrMethod(), getTagInjectionContext(), handleWeakRefAttr(), hasAcceptableMemberSpecialization(), InEnclosingNamespaceSetOf(), clang::LookupResult::isAvailableForLookup(), clang::CXXRecordDecl::isCurrentInstantiation(), isDependentContext(), isInInlineFunction(), IsInternalDeclFromFileContext(), isNamespaceOrTranslationUnitScope(), isNamespaceScope(), isUsingDeclNotAtClassScope(), clang::Sema::LookupQualifiedName(), LookupQualifiedNameInUsingDirectives(), mapCodeCompletionContext(), MightInstantiateTo(), shouldConsiderLinkage(), shouldConsiderLinkage(), clang::Sema::shouldLinkDependentDeclWithPrevious(), and clang::TemplateDeclInstantiator::VisitFunctionDecl().

◆ isFunctionOrMethod()

bool clang::DeclContext::isFunctionOrMethod ( ) const
inline

Definition at line 2161 of file DeclBase.h.

References getDeclKind().

Referenced by clang::Sema::ActOnDecompositionDeclarator(), clang::Sema::ActOnLambdaClosureQualifiers(), clang::Sema::ActOnSEHTryBlock(), clang::Sema::ActOnTag(), clang::Sema::ActOnVariableDeclarator(), clang::CodeCompletionBuilder::addParentContext(), clang::Sema::adjustContextForLocalExternDecl(), areAllValuesNoReturn(), clang::Sema::BuildCXXNestedNameSpecifier(), clang::Sema::BuildVariableInstantiation(), CheckAnonMemberRedeclaration(), clang::Sema::CheckParmsForFunctionDef(), CheckTemplateSpecializationScope(), clang::LinkageComputer::computeLVForDecl(), clang::Sema::CreateCapturedStmtRecordDecl(), diagnoseUncapturableValueReferenceOrBinding(), DoMarkPotentialCapture(), clang::Sema::FindInstantiatedDecl(), getContextForScopeMatching(), getFunctionStorageClass(), clang::CodeCompletionTUInfo::getParentName(), getTagInjectionContext(), clang::Sema::ImplicitlyDefineFunction(), clang::TemplateDeclInstantiator::InstantiateEnumDefinition(), clang::IdentifierResolver::isDeclInScope(), isDeclWithinFunction(), clang::VarDecl::isFunctionOrMethodVarDecl(), clang::Decl::isInLocalScopeForInstantiation(), isLookupContext(), isOutOfScopePreviousDeclaration(), clang::NamedDecl::isPlaceholderVar(), IsRecordContextStructurallyEquivalent(), mergeTypeWithPrevious(), clang::serialization::needsAnonymousDeclarationNumber(), clang::NamedDecl::printNestedNameSpecifier(), clang::Sema::PushUsingDirective(), shouldConsiderLinkage(), shouldConsiderLinkage(), ShouldDiagnoseUnusedDecl(), clang::Sema::tryCaptureVariable(), clang::ASTNodeImporter::VisitClassTemplateDecl(), clang::ASTNodeImporter::VisitEnumConstantDecl(), clang::ASTNodeImporter::VisitEnumDecl(), clang::ASTNodeImporter::VisitFunctionDecl(), clang::ASTNodeImporter::VisitFunctionTemplateDecl(), clang::ASTNodeImporter::VisitLabelDecl(), clang::ASTNodeImporter::VisitRecordDecl(), clang::ASTNodeImporter::VisitTypeAliasTemplateDecl(), clang::ASTNodeImporter::VisitTypedefNameDecl(), clang::ASTDeclReader::VisitVarDeclImpl(), clang::ASTNodeImporter::VisitVarTemplateDecl(), and warnAboutAmbiguousFunction().

◆ isInlineNamespace()

bool DeclContext::isInlineNamespace ( ) const

◆ isLookupContext()

bool clang::DeclContext::isLookupContext ( ) const
inline

Test whether the context supports looking up names.

Definition at line 2175 of file DeclBase.h.

References getDeclKind(), and isFunctionOrMethod().

◆ isNamespace()

◆ isObjCContainer()

bool clang::DeclContext::isObjCContainer ( ) const
inline

Definition at line 2148 of file DeclBase.h.

References getDeclKind().

◆ isRecord()

bool clang::DeclContext::isRecord ( ) const
inline

Definition at line 2189 of file DeclBase.h.

References getDeclKind().

Referenced by clang::Sema::ActOnFriendFunctionDecl(), clang::Sema::ActOnFunctionDeclarator(), clang::Sema::ActOnTag(), clang::Sema::ActOnVariableDeclarator(), clang::Sema::AddInitializerToDecl(), clang::Sema::BuildAnonymousStructOrUnion(), clang::Sema::BuildCXXNestedNameSpecifier(), clang::Sema::BuildExpressionFromDeclTemplateArgument(), clang::Sema::CheckAddressOfOperand(), CheckAnonMemberRedeclaration(), clang::Sema::CheckClassTemplate(), CheckExplicitInstantiationScope(), clang::Sema::CheckExplicitObjectMemberFunction(), CheckMultiVersionAdditionalDecl(), clang::Sema::CheckQualifiedMemberReference(), clang::Sema::CheckShadow(), CheckTemplateSpecializationScope(), clang::Sema::CheckUsingDeclQualifier(), clang::LinkageComputer::computeLVForDecl(), clang::Sema::CreateCapturedStmtRecordDecl(), CreateNewFunctionDecl(), clang::Sema::diagnoseQualifiedDeclaration(), clang::exceptionSpecNotKnownYet(), clang::Sema::FindAllocationFunctions(), getDeclLanguageLinkage(), GetFullTypeForDeclarator(), getLookupParent(), getOuterLexicalRecordContext(), getRedeclContext(), clang::Sema::getShadowedDeclaration(), clang::Sema::HandleDeclarator(), haveIncompatibleLanguageLinkages(), clang::Sema::InstantiateVariableDefinition(), clang::NamedDecl::isCXXClassMember(), isDeclExternC(), isDeclWithinFunction(), isOutOfScopePreviousDeclaration(), clang::VarDecl::isStaticDataMember(), IsStructurallyEquivalent(), mapCodeCompletionContext(), clang::Sema::MergeFunctionDecl(), clang::Sema::MergeVarDecl(), shouldConsiderLinkage(), shouldConsiderLinkage(), clang::TemplateDeclInstantiator::VisitFunctionDecl(), clang::extractapi::impl::ExtractAPIVisitorBase< Derived >::VisitVarDecl(), clang::installapi::InstallAPIVisitor::VisitVarDecl(), clang::ASTNodeImporter::VisitVarTemplateDecl(), and clang::ASTNodeImporter::VisitVarTemplateSpecializationDecl().

◆ isRequiresExprBody()

bool clang::DeclContext::isRequiresExprBody ( ) const
inline

Definition at line 2194 of file DeclBase.h.

References getDeclKind().

Referenced by AddOrdinaryNameResults(), and clang::Sema::tryCaptureVariable().

◆ isStdNamespace()

◆ isTranslationUnit()

bool clang::DeclContext::isTranslationUnit ( ) const
inline

Definition at line 2185 of file DeclBase.h.

References getDeclKind().

Referenced by clang::Sema::ActOnDecompositionDeclarator(), clang::Sema::ActOnFunctionDeclarator(), clang::SemaOpenMP::ActOnOpenMPIdExpression(), clang::SemaOpenMP::ActOnOpenMPIteratorVarDecl(), clang::Sema::ActOnTypedefNameDecl(), clang::Sema::AddKnownFunctionAttributes(), AddOrdinaryNameResults(), clang::CodeCompletionBuilder::addParentContext(), AddTopLevelDeclarationToHash(), clang::Sema::BuildAnonymousStructOrUnion(), createFriendTagNNSFixIt(), clang::TypeName::createNestedNameSpecifierForScopeOf(), clang::TypeName::createOuterNNS(), diagnoseOpenCLTypes(), dumpDeclContext(), clang::FormatASTNodeDiagnosticArgument(), getStackIndexOfNearestEnclosingCaptureReadyLambda(), clang::Decl::getTranslationUnitDecl(), clang::Sema::ImplicitlyDefineFunction(), clang::ento::CheckerContext::isCLibraryFunction(), isDeclContextInNamespace(), IsDefaultBufferConstantDecl(), clang::dataflow::isFullyQualifiedNamespaceEqualTo(), clang::Sema::IsInsideALocalClassWithinATemplateFunction(), clang::FunctionDecl::isMain(), IsRecordContextStructurallyEquivalent(), clang::NamedDecl::isReserved(), clang::FunctionDecl::isReservedGlobalPlacementOperator(), isStdNamespace(), isStdStreamVar(), clang::FunctionDecl::isUsableAsGlobalAllocationFunctionInConstantEvaluation(), LookupDirect(), clang::tooling::stdlib::Recognizer::operator()(), RedeclForcesDefC99(), clang::Sema::RegisterLocallyScopedExternCDecl(), and clang::IdentifierResolver::tryAddTopLevelDecl().

◆ isTransparentContext()

bool DeclContext::isTransparentContext ( ) const

isTransparentContext - Determines whether this context is a "transparent" context, meaning that the members declared in this context are semantically declared in the nearest enclosing non-transparent (opaque) context but are lexically declared in this context.

For example, consider the enumerators of an enumeration type:

enum E {
Val1
};

Here, E is a transparent context, so its enumerator (Val1) will appear (semantically) that it is in the same context of E. Examples of transparent contexts include: enumerations (except for C++0x scoped enums), C++ linkage specifications and export declaration.

Definition at line 1392 of file DeclBase.cpp.

References clang::cast(), getDeclKind(), and clang::isa().

Referenced by clang::Sema::CheckClassTemplate(), clang::Sema::CheckFunctionConstraints(), clang::Sema::getNonFieldDeclScope(), getNonTransparentContext(), getRedeclContext(), getTagInjectionScope(), clang::IdentifierResolver::isDeclInScope(), clang::Sema::LookupName(), clang::NamedDecl::printNestedNameSpecifier(), and clang::Sema::PushOnScopeChains().

◆ LexicallyEncloses()

bool DeclContext::LexicallyEncloses ( const DeclContext * DC) const

Determine whether this declaration context lexically encloses the declaration context DC.

Definition at line 1439 of file DeclBase.cpp.

References DeclContext(), getLexicalParent(), getPrimaryContext(), clang::isa(), and LexicallyEncloses().

Referenced by LexicallyEncloses().

◆ localUncachedLookup()

void DeclContext::localUncachedLookup ( DeclarationName Name,
SmallVectorImpl< NamedDecl * > & Results )

A simplistic name lookup mechanism that performs name lookup into this declaration context without consulting the external source.

This function should almost never be used, because it subverts the usual relationship between a DeclContext and the external source. See the ASTImporter for the (few, but important) use cases.

FIXME: This is very inefficient; replace uses of it with uses of noload_lookup.

Definition at line 1983 of file DeclBase.cpp.

References FirstDecl, hasExternalLexicalStorage(), hasExternalVisibleStorage(), lookup(), and LookupPtr.

◆ lookup()

DeclContext::lookup_result DeclContext::lookup ( DeclarationName Name) const

lookup - Find the declarations (if any) with the given Name in this context.

Returns a range of iterators that contains all of the declarations with this name, with object, function, member, and enumerator names preceding any tag name. Note that this routine will not look into parent contexts.

Definition at line 1879 of file DeclBase.cpp.

References getDeclKind(), getParent(), getPrimaryContext(), and lookup().

Referenced by clang::Sema::AddOverriddenMethods(), clang::Sema::BuildBlockForLambdaConversion(), checkGlobalOrExternCConflict(), clang::Sema::CheckImplicitSpecialMemberDeclaration(), clang::ASTReader::CompleteRedeclChain(), configureBlocksRuntimeObject(), clang::Sema::DeclareGlobalAllocationFunction(), clang::Sema::DiagRedefinedPlaceholderFieldDecl(), clang::CodeGen::CodeGenFunction::EmitBuiltinNewDeleteCall(), FindFieldDeclInstantiationPattern(), clang::Sema::FindHiddenVirtualMethods(), findImplicitlyDeclaredEqualityComparisons(), clang::Sema::findInheritingConstructor(), clang::Sema::FindInstantiatedDecl(), findOrdinaryMember(), clang::ObjCPropertyDecl::findPropertyDecl(), findRecordDeclInContext(), clang::ASTContext::forEachMultiversionedFunctionVersion(), clang::CodeGen::CodeGenModule::GetAddrOfConstantCFString(), clang::Sema::getConstructorName(), clang::CXXMethodDecl::getCorrespondingMethodDeclaredInClass(), clang::CXXRecordDecl::getDestructor(), getGlobalStreamPointerByName(), clang::ObjCContainerDecl::getIvarDecl(), getLambdaCallOperatorHelper(), getLambdaStaticInvokers(), clang::ObjCContainerDecl::getMethod(), clang::ASTContext::getObjCMethodRedeclaration(), clang::ObjCContainerDecl::getProperty(), GetRuntimeFunctionDecl(), hasConflictingOverload(), clang::ObjCContainerDecl::HasUserDeclaredSetterMethod(), clang::Sema::InstantiateClassMembers(), clang::NamespaceDecl::isRedundantInlineQualifierFor(), clang::CXXMethodDecl::isUsualDeallocationFunction(), localUncachedLookup(), lookup(), lookupCXXRecordDecl(), LookupDirect(), clang::Sema::LookupQualifiedName(), clang::Sema::LookupSpecialMember(), LookupSpecialMemberFromXValue(), lookupStdNamespace(), lookupUnqualifiedTypeNameInBase(), clang::Sema::makeMergedDefinitionVisible(), clang::TreeTransform< AdjustConstraintDepth >::RebuildShuffleVectorExpr(), shouldAddReversedEqEq(), clang::Sema::tryLookupUnambiguousFieldDecl(), using_directives(), and clang::ASTDeclReader::VisitDecl().

◆ lookups()

◆ lookups_begin()

all_lookups_iterator clang::DeclContext::lookups_begin ( ) const

Iterators over all possible lookups within this context.

◆ lookups_end()

all_lookups_iterator clang::DeclContext::lookups_end ( ) const

◆ makeDeclVisibleInContext()

void DeclContext::makeDeclVisibleInContext ( NamedDecl * D)

Makes a declaration visible within this context.

This routine makes the declaration D visible to name lookup within this context and, if this is a transparent context, within its parent contexts up to the first enclosing non-transparent context. Making a declaration visible within a context does not transfer ownership of a declaration, and a declaration can be visible in many contexts that aren't its lexical context.

If D is a redeclaration of an existing declaration that is visible from this context, as determined by NamedDecl::declarationReplaces, the previous declaration will be replaced with D.

Definition at line 2077 of file DeclBase.cpp.

References DeclContext(), clang::Decl::getDeclContext(), and getPrimaryContext().

Referenced by clang::Sema::ActOnFriendFunctionDecl(), clang::SemaObjC::ActOnPropertyImplDecl(), clang::Sema::ActOnTag(), clang::Sema::BuildVariableInstantiation(), clang::Sema::CheckClassTemplate(), clang::SemaObjC::CheckImplementationIvars(), clang::Sema::makeMergedDefinitionVisible(), and clang::TemplateDeclInstantiator::VisitFunctionDecl().

◆ noload_decls()

decl_range clang::DeclContext::noload_decls ( ) const
inline

noload_decls_begin/end - Iterate over the declarations stored in this context that are currently loaded; don't attempt to retrieve anything from an external source.

Definition at line 2381 of file DeclBase.h.

References noload_decls_begin(), and noload_decls_end().

Referenced by CXXRecordNonInlineHasAttr(), clang::ASTNodeTraverser< Derived, NodeDelegateType >::dumpDeclContext(), and FunctionToString().

◆ noload_decls_begin()

decl_iterator clang::DeclContext::noload_decls_begin ( ) const
inline

Definition at line 2384 of file DeclBase.h.

References FirstDecl.

Referenced by noload_decls().

◆ noload_decls_end()

decl_iterator clang::DeclContext::noload_decls_end ( ) const
inline

Definition at line 2385 of file DeclBase.h.

Referenced by noload_decls().

◆ noload_lookup()

DeclContext::lookup_result DeclContext::noload_lookup ( DeclarationName Name)

Find the declarations with the given name that are visible within this context; don't attempt to retrieve anything from an external source.

Definition at line 1951 of file DeclBase.cpp.

References DeclContext(), getDeclKind(), getParent(), getPrimaryContext(), LookupPtr, and noload_lookup().

Referenced by noload_lookup(), clang::ASTDeclWriter::VisitClassTemplateDecl(), and clang::ASTDeclWriter::VisitClassTemplateSpecializationDecl().

◆ noload_lookups()

DeclContext::lookups_range clang::DeclContext::noload_lookups ( bool PreserveInternalState) const
inline

Definition at line 89 of file DeclLookups.h.

References DeclContext(), getLookupPtr(), and getPrimaryContext().

Referenced by clang::ASTDumper::dumpLookups().

◆ noload_lookups_begin()

all_lookups_iterator clang::DeclContext::noload_lookups_begin ( ) const

Iterators over all possible lookups within this context that are currently loaded; don't attempt to retrieve anything from an external source.

◆ noload_lookups_end()

all_lookups_iterator clang::DeclContext::noload_lookups_end ( ) const

◆ removeDecl()

◆ setHasExternalLexicalStorage()

void clang::DeclContext::setHasExternalLexicalStorage ( bool ES = true) const
inline

State whether this DeclContext has external storage for declarations lexically in this context.

Definition at line 2694 of file DeclBase.h.

References DeclContextBits.

Referenced by clang::ExternalSource::completeVisibleDeclsMap(), and DeclContext().

◆ setHasExternalVisibleStorage()

void clang::DeclContext::setHasExternalVisibleStorage ( bool ES = true) const
inline

State whether this DeclContext has external storage for declarations visible in this context.

Definition at line 2706 of file DeclBase.h.

References DeclContextBits, and LookupPtr.

Referenced by DeclContext(), and clang::IncrementalSyntaxOnlyAction::ExecuteAction().

◆ setMustBuildLookupTable()

void clang::DeclContext::setMustBuildLookupTable ( )
inline

Mark that there are external lexical declarations that we need to include in our lookup table (and that are not available as external visible lookups).

These extra lookup results will be found by walking the lexical declarations of this context. This should be used only if setHasExternalLexicalStorage() has been called on any decl context for which this is the primary context.

Definition at line 2673 of file DeclBase.h.

References DeclContextBits, and getPrimaryContext().

◆ setUseQualifiedLookup()

void clang::DeclContext::setUseQualifiedLookup ( bool use = true) const
inline

Definition at line 2719 of file DeclBase.h.

References DeclContextBits.

Referenced by DeclContext(), and clang::Sema::LookupQualifiedName().

◆ shouldUseQualifiedLookup()

bool clang::DeclContext::shouldUseQualifiedLookup ( ) const
inline

Definition at line 2723 of file DeclBase.h.

References DeclContextBits.

Referenced by clang::Sema::LookupQualifiedName().

◆ using_directives()

DeclContext::udir_range DeclContext::using_directives ( ) const

Returns iterator range [First, Last) of UsingDirectiveDecls stored within this context.

Definition at line 2174 of file DeclBase.cpp.

References lookup(), and clang::Result.

Referenced by LookupQualifiedNameInUsingDirectives().

◆ ASTDeclReader

friend class ASTDeclReader
friend

For makeDeclVisibleInContextImpl.

Definition at line 1451 of file DeclBase.h.

References ASTDeclReader.

Referenced by ASTDeclReader.

◆ ASTDeclWriter

friend class ASTDeclWriter
friend

For checking the new bits in the Serialization part.

Definition at line 1453 of file DeclBase.h.

References ASTDeclWriter.

Referenced by ASTDeclWriter.

◆ ASTWriter

friend class ASTWriter
friend

For hasNeedToReconcileExternalVisibleStorage, hasLazyLocalLexicalLookups, hasLazyExternalLexicalLookups.

Definition at line 1461 of file DeclBase.h.

References ASTWriter.

Referenced by ASTWriter.

◆ DependentDiagnostic

friend class DependentDiagnostic
friend

For CreateStoredDeclsMap.

Definition at line 1458 of file DeclBase.h.

References DependentDiagnostic.

Referenced by clang::DeclContext::ddiag_iterator::ddiag_iterator(), and DependentDiagnostic.

◆ ExternalASTSource

friend class ExternalASTSource
friend

For reconcileExternalVisibleStorage, CreateStoredDeclsMap, hasNeedToReconcileExternalVisibleStorage.

Definition at line 1456 of file DeclBase.h.

References ExternalASTSource.

Referenced by ExternalASTSource.

Member Data Documentation

◆ [union]

union { ... } clang::DeclContext

This anonymous union stores the bits belonging to DeclContext and classes deriving from it.

The goal is to use otherwise wasted space in DeclContext to store data belonging to derived classes. The space saved is especially significient when pointers are aligned to 8 bytes. In this case due to alignment requirements we have a little less than 8 bytes free in DeclContext which we can use. We check that none of the classes in this union is larger than 8 bytes with static_asserts in the ctor of DeclContext.

◆ BlockDeclBits

◆ CXXConstructorDeclBits

◆ DeclContextBits

◆ EnumDeclBits

◆ FirstDecl

Decl* clang::DeclContext::FirstDecl = nullptr
mutableprotected

FirstDecl - The first declaration stored within this declaration context.

Definition at line 2079 of file DeclBase.h.

Referenced by addHiddenDecl(), decls_begin(), decls_empty(), clang::RecordDecl::field_begin(), isDeclInLexicalTraversal(), localUncachedLookup(), noload_decls_begin(), removeDecl(), and clang::RecordDecl::reorderDecls().

◆ FunctionDeclBits

FunctionDeclBitfields clang::DeclContext::FunctionDeclBits

Definition at line 2044 of file DeclBase.h.

Referenced by clang::FunctionDecl::BodyContainsImmediateEscalatingExpressions(), clang::FunctionDecl::doesThisDeclarationHaveABody(), clang::FunctionDecl::FriendConstraintRefersToEnclosingTemplate(), clang::FunctionDecl::FunctionDecl(), clang::FunctionDecl::getConstexprKind(), clang::CXXDeductionGuideDecl::getDeductionCandidateKind(), clang::FunctionDecl::getDefalutedOrDeletedInfo(), clang::FunctionDecl::getDeletedMessage(), clang::FunctionDecl::getStorageClass(), clang::FunctionDecl::hasImplicitReturnZero(), clang::FunctionDecl::hasInheritedPrototype(), clang::FunctionDecl::hasSkippedBody(), clang::FunctionDecl::hasWrittenPrototype(), clang::FunctionDecl::instantiationIsPending(), clang::FunctionDecl::isDefaulted(), clang::FunctionDecl::isDeleted(), clang::FunctionDecl::isDeletedAsWritten(), clang::FunctionDecl::isExplicitlyDefaulted(), clang::FunctionDecl::isIneligibleOrNotSelected(), clang::FunctionDecl::isInlined(), clang::FunctionDecl::isInlineSpecified(), clang::FunctionDecl::isInstantiatedFromMemberTemplate(), clang::FunctionDecl::isLateTemplateParsed(), clang::FunctionDecl::isMultiVersion(), clang::FunctionDecl::isPureVirtual(), clang::FunctionDecl::isTrivial(), clang::FunctionDecl::isTrivialForCall(), clang::FunctionDecl::isVirtualAsWritten(), clang::FunctionDecl::setBody(), clang::FunctionDecl::setBodyContainsImmediateEscalatingExpressions(), clang::FunctionDecl::setConstexprKind(), clang::CXXDeductionGuideDecl::setDeductionCandidateKind(), clang::FunctionDecl::setDefaulted(), clang::FunctionDecl::setDefaultedOrDeletedInfo(), clang::FunctionDecl::setDeletedAsWritten(), clang::FunctionDecl::setExplicitlyDefaulted(), clang::FunctionDecl::setFriendConstraintRefersToEnclosingTemplate(), clang::FunctionDecl::setHasImplicitReturnZero(), clang::FunctionDecl::setHasInheritedPrototype(), clang::FunctionDecl::setHasSkippedBody(), clang::FunctionDecl::setHasWrittenPrototype(), clang::FunctionDecl::setImplicitlyInline(), clang::FunctionDecl::setIneligibleOrNotSelected(), clang::FunctionDecl::setInlineSpecified(), clang::FunctionDecl::setInstantiatedFromMemberTemplate(), clang::FunctionDecl::setInstantiationIsPending(), clang::FunctionDecl::setIsMultiVersion(), clang::FunctionDecl::setIsPureVirtual(), clang::FunctionDecl::setLateTemplateParsed(), clang::FunctionDecl::setLazyBody(), clang::FunctionDecl::setStorageClass(), clang::FunctionDecl::setTrivial(), clang::FunctionDecl::setTrivialForCall(), clang::FunctionDecl::setUsesFPIntrin(), clang::FunctionDecl::setUsesSEHTry(), clang::FunctionDecl::setVirtualAsWritten(), clang::FunctionDecl::setWillHaveBody(), clang::FunctionDecl::UsesFPIntrin(), clang::FunctionDecl::usesSEHTry(), and clang::FunctionDecl::willHaveBody().

◆ LastDecl

Decl* clang::DeclContext::LastDecl = nullptr
mutableprotected

LastDecl - The last declaration stored within this declaration context.

FIXME: We could probably cache this value somewhere outside of the DeclContext, to reduce the size of DeclContext by another pointer.

Definition at line 2085 of file DeclBase.h.

Referenced by addHiddenDecl(), containsDecl(), isDeclInLexicalTraversal(), removeDecl(), and clang::RecordDecl::reorderDecls().

◆ LinkageSpecDeclBits

◆ LookupPtr

StoredDeclsMap* clang::DeclContext::LookupPtr = nullptr
mutableprotected

Pointer to the data structure used to lookup declarations within this context (or a DependentStoredDeclsMap if this is a dependent context).

We maintain the invariant that, if the map contains an entry for a DeclarationName (and we haven't lazily omitted anything), then it contains all relevant entries for that name (modulo the hasExternalDecls() flag).

Definition at line 2026 of file DeclBase.h.

Referenced by buildLookup(), getLookupPtr(), localUncachedLookup(), noload_lookup(), clang::ExternalASTSource::SetExternalVisibleDeclsForName(), setHasExternalVisibleStorage(), and clang::ExternalASTSource::SetNoExternalVisibleDeclsForName().

◆ NamespaceDeclBits

◆ ObjCContainerDeclBits

ObjCContainerDeclBitfields clang::DeclContext::ObjCContainerDeclBits

◆ ObjCMethodDeclBits

◆ OMPDeclareReductionDeclBits

OMPDeclareReductionDeclBitfields clang::DeclContext::OMPDeclareReductionDeclBits

◆ RecordDeclBits

RecordDeclBitfields clang::DeclContext::RecordDeclBits

Definition at line 2042 of file DeclBase.h.

Referenced by clang::RecordDecl::getArgPassingRestrictions(), clang::RecordDecl::getODRHash(), clang::RecordDecl::hasFlexibleArrayMember(), clang::RecordDecl::hasLoadedFieldsFromExternalStorage(), clang::RecordDecl::hasNonTrivialToPrimitiveCopyCUnion(), clang::RecordDecl::hasNonTrivialToPrimitiveDefaultInitializeCUnion(), clang::RecordDecl::hasNonTrivialToPrimitiveDestructCUnion(), clang::RecordDecl::hasObjectMember(), clang::RecordDecl::hasUninitializedExplicitInitFields(), clang::RecordDecl::hasVolatileMember(), clang::RecordDecl::isAnonymousStructOrUnion(), clang::RecordDecl::isNonTrivialToPrimitiveCopy(), clang::RecordDecl::isNonTrivialToPrimitiveDefaultInitialize(), clang::RecordDecl::isNonTrivialToPrimitiveDestroy(), clang::RecordDecl::isParamDestroyedInCallee(), clang::RecordDecl::isRandomized(), clang::RecordDecl::setAnonymousStructOrUnion(), clang::RecordDecl::setArgPassingRestrictions(), clang::RecordDecl::setHasFlexibleArrayMember(), clang::RecordDecl::setHasLoadedFieldsFromExternalStorage(), clang::RecordDecl::setHasNonTrivialToPrimitiveCopyCUnion(), clang::RecordDecl::setHasNonTrivialToPrimitiveDefaultInitializeCUnion(), clang::RecordDecl::setHasNonTrivialToPrimitiveDestructCUnion(), clang::RecordDecl::setHasObjectMember(), clang::RecordDecl::setHasUninitializedExplicitInitFields(), clang::RecordDecl::setHasVolatileMember(), clang::RecordDecl::setIsRandomized(), clang::RecordDecl::setNonTrivialToPrimitiveCopy(), clang::RecordDecl::setNonTrivialToPrimitiveDefaultInitialize(), clang::RecordDecl::setNonTrivialToPrimitiveDestroy(), and clang::RecordDecl::setParamDestroyedInCallee().

◆ TagDeclBits


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