clang  3.7.0
Classes | Public Types | Public Member Functions | Static Public Member Functions | Protected Types | Protected Member Functions | Protected Attributes | Friends | List of all members
clang::Decl Class Reference

#include <DeclBase.h>

Inheritance diagram for clang::Decl:
[legend]
Collaboration diagram for clang::Decl:
[legend]

Classes

struct  EmptyShell
 A placeholder type used to construct an empty shell of a decl-derived type that will be filled in later (e.g., by some deserialization method). More...
 
class  redecl_iterator
 Iterates through all the redeclarations of the same decl. More...
 

Public Types

enum  Kind
 Lists the kind of concrete classes of Decl. More...
 
enum  IdentifierNamespace {
  IDNS_Label = 0x0001, IDNS_Tag = 0x0002, IDNS_Type = 0x0004, IDNS_Member = 0x0008,
  IDNS_Namespace = 0x0010, IDNS_Ordinary = 0x0020, IDNS_ObjCProtocol = 0x0040, IDNS_OrdinaryFriend = 0x0080,
  IDNS_TagFriend = 0x0100, IDNS_Using = 0x0200, IDNS_NonMemberOperator = 0x0400, IDNS_LocalExtern = 0x0800
}
 
enum  ObjCDeclQualifier {
  OBJC_TQ_None = 0x0, OBJC_TQ_In = 0x1, OBJC_TQ_Inout = 0x2, OBJC_TQ_Out = 0x4,
  OBJC_TQ_Bycopy = 0x8, OBJC_TQ_Byref = 0x10, OBJC_TQ_Oneway = 0x20, OBJC_TQ_CSNullability = 0x40
}
 
enum  FriendObjectKind { FOK_None, FOK_Declared, FOK_Undeclared }
 
typedef AttrVec::const_iterator attr_iterator
 
typedef llvm::iterator_range
< attr_iterator
attr_range
 
typedef llvm::iterator_range
< redecl_iterator
redecl_range
 

Public Member Functions

virtual SourceRange getSourceRange () const LLVM_READONLY
 Source range that this declaration covers. More...
 
SourceLocation getLocStart () const LLVM_READONLY
 
SourceLocation getLocEnd () const LLVM_READONLY
 
SourceLocation getLocation () const
 
void setLocation (SourceLocation L)
 
Kind getKind () const
 
const char * getDeclKindName () const
 
DeclgetNextDeclInContext ()
 
const DeclgetNextDeclInContext () const
 
DeclContextgetDeclContext ()
 
const DeclContextgetDeclContext () const
 
DeclgetNonClosureContext ()
 
const DeclgetNonClosureContext () const
 
TranslationUnitDeclgetTranslationUnitDecl ()
 
const TranslationUnitDeclgetTranslationUnitDecl () const
 
bool isInAnonymousNamespace () const
 
bool isInStdNamespace () const
 
ASTContextgetASTContext () const LLVM_READONLY
 
void setAccess (AccessSpecifier AS)
 
AccessSpecifier getAccess () const
 
AccessSpecifier getAccessUnsafe () const
 Retrieve the access specifier for this declaration, even though it may not yet have been properly set. More...
 
bool hasAttrs () const
 
void setAttrs (const AttrVec &Attrs)
 
AttrVecgetAttrs ()
 
const AttrVecgetAttrs () const
 
void dropAttrs ()
 
void addAttr (Attr *A)
 
attr_range attrs () const
 
attr_iterator attr_begin () const
 
attr_iterator attr_end () const
 
template<typename T >
void dropAttr ()
 
template<typename T >
llvm::iterator_range
< specific_attr_iterator< T > > 
specific_attrs () const
 
template<typename T >
specific_attr_iterator< T > specific_attr_begin () const
 
template<typename T >
specific_attr_iterator< T > specific_attr_end () const
 
template<typename T >
T * getAttr () const
 
template<typename T >
bool hasAttr () const
 
unsigned getMaxAlignment () const
 
void setInvalidDecl (bool Invalid=true)
 
bool isInvalidDecl () const
 
bool isImplicit () const
 
void setImplicit (bool I=true)
 
bool isUsed (bool CheckUsedAttr=true) const
 Whether this declaration was used, meaning that a definition is required. More...
 
void setIsUsed ()
 Set whether the declaration is used, in the sense of odr-use. More...
 
void markUsed (ASTContext &C)
 Mark the declaration used, in the sense of odr-use. More...
 
bool isReferenced () const
 Whether any declaration of this entity was referenced. More...
 
bool isThisDeclarationReferenced () const
 Whether this declaration was referenced. This should not be relied upon for anything other than debugging. More...
 
void setReferenced (bool R=true)
 
bool isTopLevelDeclInObjCContainer () const
 Whether this declaration is a top-level declaration (function, global variable, etc.) that is lexically inside an objc container definition. More...
 
void setTopLevelDeclInObjCContainer (bool V=true)
 
bool isModulePrivate () const
 Whether this declaration was marked as being private to the module in which it was defined. More...
 
AvailabilityResult getAvailability (std::string *Message=nullptr) const
 Determine the availability of the given declaration. More...
 
bool isDeprecated (std::string *Message=nullptr) const
 Determine whether this declaration is marked 'deprecated'. More...
 
bool isUnavailable (std::string *Message=nullptr) const
 Determine whether this declaration is marked 'unavailable'. More...
 
bool isWeakImported () const
 Determine whether this is a weak-imported symbol. More...
 
bool canBeWeakImported (bool &IsDefinition) const
 Determines whether this symbol can be weak-imported, e.g., whether it would be well-formed to add the weak_import attribute. More...
 
bool isFromASTFile () const
 Determine whether this declaration came from an AST file (such as a precompiled header or module) rather than having been parsed. More...
 
unsigned getGlobalID () const
 Retrieve the global declaration ID associated with this declaration, which specifies where in the. More...
 
unsigned getOwningModuleID () const
 Retrieve the global ID of the module that owns this particular declaration. More...
 
ModulegetImportedOwningModule () const
 Get the imported owning module, if this decl is from an imported (non-local) module. More...
 
ModulegetLocalOwningModule () const
 Get the local owning module, if known. Returns nullptr if owner is not yet known or declaration is not from a module. More...
 
void setLocalOwningModule (Module *M)
 
unsigned getIdentifierNamespace () const
 
bool isInIdentifierNamespace (unsigned NS) const
 
bool hasTagIdentifierNamespace () const
 
DeclContextgetLexicalDeclContext ()
 
const DeclContextgetLexicalDeclContext () const
 
virtual bool isOutOfLine () const
 
void setDeclContext (DeclContext *DC)
 
void setLexicalDeclContext (DeclContext *DC)
 
bool isDefinedOutsideFunctionOrMethod () const
 
const DeclContextgetParentFunctionOrMethod () const
 If this decl is defined inside a function/method/block it returns the corresponding DeclContext, otherwise it returns null. More...
 
DeclContextgetParentFunctionOrMethod ()
 
virtual DeclgetCanonicalDecl ()
 Retrieves the "canonical" declaration of the given declaration. More...
 
const DeclgetCanonicalDecl () const
 
bool isCanonicalDecl () const
 Whether this particular Decl is a canonical one. More...
 
redecl_range redecls () const
 Returns an iterator range for all the redeclarations of the same decl. It will iterate at least once (when this decl is the only one). More...
 
redecl_iterator redecls_begin () const
 
redecl_iterator redecls_end () const
 
DeclgetPreviousDecl ()
 Retrieve the previous declaration that declares the same entity as this declaration, or NULL if there is no previous declaration. More...
 
const DeclgetPreviousDecl () const
 Retrieve the most recent declaration that declares the same entity as this declaration, or NULL if there is no previous declaration. More...
 
bool isFirstDecl () const
 True if this is the first declaration in its redeclaration chain. More...
 
DeclgetMostRecentDecl ()
 Retrieve the most recent declaration that declares the same entity as this declaration (which may be this declaration). More...
 
const DeclgetMostRecentDecl () const
 Retrieve the most recent declaration that declares the same entity as this declaration (which may be this declaration). More...
 
virtual StmtgetBody () const
 
virtual bool hasBody () const
 Returns true if this Decl represents a declaration for a body of code, such as a function or method definition. Note that hasBody can also return true if any redeclaration of this Decl represents a declaration for a body of code. More...
 
SourceLocation getBodyRBrace () const
 
bool isTemplateParameter () const
 
bool isTemplateParameterPack () const
 
bool isParameterPack () const
 Whether this declaration is a parameter pack. More...
 
bool isTemplateDecl () const
 returns true if this declaration is a template More...
 
bool isFunctionOrFunctionTemplate () const
 Whether this declaration is a function or function template. More...
 
FunctionDeclgetAsFunction () LLVM_READONLY
 Returns the function itself, or the templated function if this is a function template. More...
 
const FunctionDeclgetAsFunction () const
 
void setLocalExternDecl ()
 Changes the namespace of this declaration to reflect that it's a function-local extern declaration. More...
 
bool isLocalExternDecl ()
 Determine whether this is a block-scope declaration with linkage. This will either be a local variable declaration declared 'extern', or a local function declaration. More...
 
void setObjectOfFriendDecl (bool PerformFriendInjection=false)
 Changes the namespace of this declaration to reflect that it's the object of a friend declaration. More...
 
FriendObjectKind getFriendObjectKind () const
 Determines whether this declaration is the object of a friend declaration and, if so, what kind. More...
 
void setNonMemberOperator ()
 Specifies that this declaration is a C++ overloaded non-member. More...
 
void print (raw_ostream &Out, unsigned Indentation=0, bool PrintInstantiation=false) const
 
void print (raw_ostream &Out, const PrintingPolicy &Policy, unsigned Indentation=0, bool PrintInstantiation=false) const
 
void dump () const
 
void dumpColor () const
 
void dump (raw_ostream &Out) const
 
const FunctionTypegetFunctionType (bool BlocksToo=true) const
 Looks through the Decl's underlying type to extract a FunctionType when possible. Will return null if the type underlying the Decl does not have a FunctionType. More...
 

Static Public Member Functions

static unsigned getIdentifierNamespaceForKind (Kind DK)
 
static bool isTagIdentifierNamespace (unsigned NS)
 
static void add (Kind k)
 
static void EnableStatistics ()
 
static void PrintStats ()
 
static bool classofKind (Kind K)
 
static DeclContextcastToDeclContext (const Decl *)
 
static DeclcastFromDeclContext (const DeclContext *)
 
static void printGroup (Decl **Begin, unsigned NumDecls, raw_ostream &Out, const PrintingPolicy &Policy, unsigned Indentation=0)
 

Protected Types

enum  { TopLevelDeclInObjCContainerFlag = 0x01, ModulePrivateFlag = 0x02 }
 

Protected Member Functions

void * operator new (std::size_t Size, const ASTContext &Ctx, unsigned ID, std::size_t Extra=0)
 Allocate memory for a deserialized declaration. More...
 
void * operator new (std::size_t Size, const ASTContext &Ctx, DeclContext *Parent, std::size_t Extra=0)
 Allocate memory for a non-deserialized declaration. More...
 
 Decl (Kind DK, DeclContext *DC, SourceLocation L)
 
 Decl (Kind DK, EmptyShell Empty)
 
virtual ~Decl ()
 
void updateOutOfDate (IdentifierInfo &II) const
 Update a potentially out-of-date declaration. More...
 
Linkage getCachedLinkage () const
 
void setCachedLinkage (Linkage L) const
 
bool hasCachedLinkage () const
 
void setModulePrivate (bool MP=true)
 Specify whether this declaration was marked as being private to the module in which it was defined. More...
 
void setOwningModuleID (unsigned ID)
 Set the owning module ID. More...
 
bool hasLocalOwningModuleStorage () const
 
virtual DeclgetNextRedeclarationImpl ()
 Returns the next redeclaration or itself if this is the only decl. More...
 
virtual DeclgetPreviousDeclImpl ()
 Implementation of getPreviousDecl(), to be overridden by any subclass that has a redeclaration chain. More...
 
virtual DeclgetMostRecentDeclImpl ()
 Implementation of getMostRecentDecl(), to be overridden by any subclass that has a redeclaration chain. More...
 
ASTMutationListenergetASTMutationListener () const
 

Protected Attributes

llvm::PointerIntPair< Decl
*, 2, unsigned
NextInContextAndBits
 The next declaration within the same lexical DeclContext. These pointers form the linked list that is traversed via DeclContext's decls_begin()/decls_end(). More...
 
unsigned Access: 2
 Access - Used by C++ decls for the access specifier. More...
 
unsigned FromASTFile: 1
 Whether this declaration was loaded from an AST file. More...
 
unsigned Hidden: 1
 Whether this declaration is hidden from normal name lookup, e.g., because it is was loaded from an AST file is either module-private or because its submodule has not been made visible. More...
 
unsigned IdentifierNamespace: 12
 IdentifierNamespace - This specifies what IDNS_* namespace this lives in. More...
 
unsigned CacheValidAndLinkage: 3
 If 0, we have not computed the linkage of this declaration. Otherwise, it is the linkage + 1. More...
 

Friends

class DeclContext
 
class CXXClassMemberWrapper
 
class ASTDeclWriter
 
class ASTDeclReader
 
class ASTReader
 
class LinkageComputer
 
template<typename decl_type >
class Redeclarable
 

Detailed Description

Decl - This represents one declaration (or definition), e.g. a variable, typedef, function, struct, etc.

Definition at line 73 of file DeclBase.h.

Member Typedef Documentation

typedef AttrVec::const_iterator clang::Decl::attr_iterator

Definition at line 444 of file DeclBase.h.

typedef llvm::iterator_range<attr_iterator> clang::Decl::attr_range

Definition at line 445 of file DeclBase.h.

typedef llvm::iterator_range<redecl_iterator> clang::Decl::redecl_range

Definition at line 799 of file DeclBase.h.

Member Enumeration Documentation

anonymous enum
protected
Enumerator
TopLevelDeclInObjCContainerFlag 

Whether this declaration is a top-level declaration (function, global variable, etc.) that is lexically inside an objc container definition.

ModulePrivateFlag 

Whether this declaration is private to the module in which it was defined.

Definition at line 191 of file DeclBase.h.

Enumerator
FOK_None 

Not a friend object.

FOK_Declared 

A friend of a previously-declared entity.

FOK_Undeclared 

A friend of a previously-undeclared entity.

Definition at line 948 of file DeclBase.h.

IdentifierNamespace - The different namespaces in which declarations may appear. According to C99 6.2.3, there are four namespaces, labels, tags, members and ordinary identifiers. C++ describes lookup completely differently: certain lookups merely "ignore" certain kinds of declarations, usually based on whether the declaration is of a type, etc.

These are meant as bitmasks, so that searches in C++ can look into the "tag" namespace during ordinary lookup.

Decl currently provides 15 bits of IDNS bits.

Enumerator
IDNS_Label 

Labels, declared with 'x:' and referenced with 'goto x'.

IDNS_Tag 

Tags, declared with 'struct foo;' and referenced with 'struct foo'. All tags are also types. This is what elaborated-type-specifiers look for in C.

IDNS_Type 

Types, declared with 'struct foo', typedefs, etc. This is what elaborated-type-specifiers look for in C++, but note that it's ill-formed to find a non-tag.

IDNS_Member 

Members, declared with object declarations within tag definitions. In C, these can only be found by "qualified" lookup in member expressions. In C++, they're found by normal lookup.

IDNS_Namespace 

Namespaces, declared with 'namespace foo {}'. Lookup for nested-name-specifiers find these.

IDNS_Ordinary 

Ordinary names. In C, everything that's not a label, tag, or member ends up here.

IDNS_ObjCProtocol 

Objective C @protocol.

IDNS_OrdinaryFriend 

This declaration is a friend function. A friend function declaration is always in this namespace but may also be in IDNS_Ordinary if it was previously declared.

IDNS_TagFriend 

This declaration is a friend class. A friend class declaration is always in this namespace but may also be in IDNS_Tag|IDNS_Type if it was previously declared.

IDNS_Using 

This declaration is a using declaration. A using declaration introduces a number of other declarations into the current scope, and those declarations use the IDNS of their targets, but the actual using declarations go in this namespace.

IDNS_NonMemberOperator 

This declaration is a C++ operator declared in a non-class context. All such operators are also in IDNS_Ordinary. C++ lexical operator lookup looks for these.

IDNS_LocalExtern 

This declaration is a function-local extern declaration of a variable or function. This may also be IDNS_Ordinary if it has been declared outside any function.

Definition at line 102 of file DeclBase.h.

Lists the kind of concrete classes of Decl.

Definition at line 76 of file DeclBase.h.

ObjCDeclQualifier - 'Qualifiers' written next to the return and parameter types in method declarations. Other than remembering them and mangling them into the method's signature string, these are ignored by the compiler; they are consumed by certain remote-messaging frameworks.

in, inout, and out are mutually exclusive and apply only to method parameters. bycopy and byref are mutually exclusive and apply only to method parameters (?). oneway applies only to results. All of these expect their corresponding parameter to have a particular type. None of this is currently enforced by clang.

This should be kept in sync with ObjCDeclSpec::ObjCDeclQualifier.

Enumerator
OBJC_TQ_None 
OBJC_TQ_In 
OBJC_TQ_Inout 
OBJC_TQ_Out 
OBJC_TQ_Bycopy 
OBJC_TQ_Byref 
OBJC_TQ_Oneway 
OBJC_TQ_CSNullability 

The nullability qualifier is set when the nullability of the result or parameter was expressed via a context-sensitive keyword.

Definition at line 174 of file DeclBase.h.

Constructor & Destructor Documentation

clang::Decl::Decl ( Kind  DK,
DeclContext DC,
SourceLocation  L 
)
inlineprotected

Definition at line 321 of file DeclBase.h.

References add().

clang::Decl::Decl ( Kind  DK,
EmptyShell  Empty 
)
inlineprotected

Definition at line 332 of file DeclBase.h.

References add().

Decl::~Decl ( )
protectedvirtual

Definition at line 224 of file DeclBase.cpp.

Member Function Documentation

void Decl::add ( Kind  k)
static

Definition at line 145 of file DeclBase.cpp.

Referenced by Decl().

void clang::Decl::addAttr ( Attr A)
inline

Definition at line 437 of file DeclBase.h.

References getAttrs(), hasAttrs(), and setAttrs().

Referenced by clang::Sema::ActOnCXXMemberDeclarator(), clang::Sema::ActOnExplicitInstantiation(), clang::Sema::ActOnFields(), clang::Sema::ActOnFunctionDeclarator(), clang::Sema::ActOnOpenMPRegionStart(), clang::Sema::ActOnPragmaRedefineExtname(), clang::Sema::ActOnPragmaUnused(), clang::Sema::ActOnPragmaWeakID(), clang::Sema::ActOnStartCXXMemberDeclarations(), clang::Sema::ActOnVariableDeclarator(), clang::Sema::AddAlignedAttr(), clang::Sema::AddAlignmentAttributesForRecord(), clang::Sema::AddAlignValueAttr(), clang::Sema::AddAssumeAlignedAttr(), clang::Sema::AddCFAuditedAttribute(), clang::Sema::AddKnownFunctionAttributes(), clang::Sema::AddLaunchBoundsAttr(), clang::Sema::AddMsStructLayoutForRecord(), clang::Sema::AddOptnoneAttributeIfNoConflicts(), AddPropertyAttrs(), clang::Sema::AddPushedVisibilityAttribute(), assignInheritanceModel(), clang::Sema::AttachBaseSpecifiers(), clang::Sema::CheckARCMethodDecl(), clang::Sema::checkClassLevelDLLAttribute(), clang::Sema::CheckCompleteVariableDeclaration(), clang::Sema::CheckFunctionDeclaration(), clang::Sema::checkInitMethod(), clang::Sema::CheckNontrivialField(), clang::Sema::DeclApplyPragmaWeak(), clang::Sema::DeclareGlobalAllocationFunction(), clang::Sema::FinalizeDeclaration(), handleAcquireCapabilityAttr(), handleAcquiredAfterAttr(), handleAcquiredBeforeAttr(), handleAliasAttr(), handleAlignedAttr(), handleAlwaysInlineAttr(), handleAMDGPUNumSGPRAttr(), handleAMDGPUNumVGPRAttr(), handleAnalyzerNoReturnAttr(), handleAnnotateAttr(), handleArgumentWithTypeTagAttr(), handleARMInterruptAttr(), handleAssertCapabilityAttr(), handleAssertExclusiveLockAttr(), handleAssertSharedLockAttr(), handleAttrWithMessage(), handleAvailabilityAttr(), handleBlocksAttr(), handleCallableWhenAttr(), handleCallConvAttr(), handleCapabilityAttr(), handleCFAuditedTransferAttr(), handleCFUnknownTransferAttr(), handleCleanupAttr(), handleColdAttr(), handleCommonAttr(), handleConstructorAttr(), handleConsumableAttr(), handleDeclspecThreadAttr(), handleDelayedForbiddenType(), handleDependencyAttr(), handleDestructorAttr(), handleDLLAttr(), handleEnableIfAttr(), handleExclusiveTrylockFunctionAttr(), handleFormatArgAttr(), handleFormatAttr(), handleGlobalAttr(), handleGNUInlineAttr(), handleGuardedByAttr(), handleHotAttr(), handleIBOutlet(), handleIBOutletCollection(), handleInitPriorityAttr(), handleLockReturnedAttr(), handleLocksExcludedAttr(), handleMinSizeAttr(), handleModeAttr(), handleMSInheritanceAttr(), handleMSP430InterruptAttr(), handleNoDebugAttr(), handleNonNullAttr(), handleNonNullAttrParameter(), handleNoReturnAttr(), handleNoSanitizeAttr(), handleNoSanitizeSpecificAttr(), handleNSConsumedAttr(), handleNSReturnsRetainedAttr(), handleObjCBoxable(), handleObjCBridgeAttr(), handleObjCBridgeMutableAttr(), handleObjCBridgeRelatedAttr(), handleObjCDesignatedInitializer(), handleObjCIndependentClass(), handleObjCMethodFamilyAttr(), handleObjCNSObject(), handleObjCPreciseLifetimeAttr(), handleObjCRequiresSuperAttr(), handleObjCReturnsInnerPointerAttr(), handleObjCRuntimeName(), handleObjCSuppresProtocolAttr(), handleOptimizeNoneAttr(), handleOwnershipAttr(), handleParamTypestateAttr(), handlePtGuardedByAttr(), handlePtGuardedVarAttr(), handleReleaseCapabilityAttr(), handleRequiresCapabilityAttr(), handleRestrictAttr(), handleReturnsNonNullAttr(), handleReturnTypestateAttr(), handleSectionAttr(), handleSentinelAttr(), handleSetTypestateAttr(), handleSharedTrylockFunctionAttr(), handleSimpleAttribute(), handleTargetAttr(), handleTestTypestateAttr(), handleTLSModelAttr(), handleTransparentUnionAttr(), handleTryAcquireCapabilityAttr(), handleTypeTagForDatatypeAttr(), handleUsedAttr(), handleUuidAttr(), handleVecReturnAttr(), handleVecTypeHint(), handleVisibilityAttr(), handleWarnUnusedResult(), handleWeakImportAttr(), handleWeakRefAttr(), handleWorkGroupSize(), handleX86ForceAlignArgPointerAttr(), clang::Sema::inferCUDATargetForImplicitSpecialMember(), InjectAnonymousStructOrUnionMembers(), clang::Sema::InstantiateAttrs(), instantiateDependentEnableIfAttr(), clang::Sema::makeUnavailableInSystemHeader(), mergeAlignedAttrs(), mergeDeclAttribute(), clang::Sema::mergeDeclAttributes(), mergeInterfaceMethodToImpl(), mergeParamDeclAttributes(), clang::Sema::ProcessPropertyDecl(), clang::Sema::propagateDLLAttrToBaseClassTemplate(), clang::RecordDecl::setCapturedRecord(), clang::ASTDeclReader::UpdateDecl(), and clang::ASTNodeImporter::VisitIndirectFieldDecl().

attr_iterator clang::Decl::attr_begin ( ) const
inline

Definition at line 451 of file DeclBase.h.

References getAttrs(), and hasAttrs().

Referenced by attrs(), and specific_attr_begin().

attr_iterator clang::Decl::attr_end ( ) const
inline

Definition at line 454 of file DeclBase.h.

References getAttrs(), and hasAttrs().

Referenced by attrs(), and specific_attr_end().

attr_range clang::Decl::attrs ( ) const
inline
bool Decl::canBeWeakImported ( bool IsDefinition) const

Determines whether this symbol can be weak-imported, e.g., whether it would be well-formed to add the weak_import attribute.

Parameters
IsDefinitionSet to true to indicate that this declaration cannot be weak-imported because it has a definition.

Definition at line 485 of file DeclBase.cpp.

References getASTContext(), clang::ASTContext::getLangOpts(), clang::ObjCRuntime::hasWeakClassImport(), and clang::LangOptions::ObjCRuntime.

Referenced by handleWeakImportAttr(), and isWeakImported().

Decl * Decl::castFromDeclContext ( const DeclContext D)
static
DeclContext * Decl::castToDeclContext ( const Decl D)
static

Definition at line 674 of file DeclBase.cpp.

References getKind().

Referenced by clang::BackendConsumer::StackSizeDiagHandler().

static bool clang::Decl::classofKind ( Kind  K)
inlinestatic

Definition at line 974 of file DeclBase.h.

template<typename T >
void clang::Decl::dropAttr ( )
inline
void Decl::dropAttrs ( )
LLVM_DUMP_METHOD void Decl::dump ( ) const
LLVM_DUMP_METHOD void Decl::dump ( raw_ostream &  Out) const

Definition at line 2305 of file ASTDumper.cpp.

References P.

LLVM_DUMP_METHOD void Decl::dumpColor ( ) const

Definition at line 2311 of file ASTDumper.cpp.

References P.

void Decl::EnableStatistics ( )
static

Definition at line 117 of file DeclBase.cpp.

Referenced by clang::ParseAST().

AccessSpecifier clang::Decl::getAccess ( ) const
inline

Definition at line 416 of file DeclBase.h.

References Access.

Referenced by clang::Sema::ActOnCXXMemberDeclarator(), clang::Sema::ActOnEnumConstant(), clang::Sema::ActOnFunctionDeclarator(), clang::Sema::ActOnTag(), clang::Sema::ActOnVarTemplateSpecialization(), clang::LookupResult::addDecl(), clang::Sema::BuildAnonymousStructUnionMemberReference(), BuildCXXCastArgument(), clang::Sema::BuildUsingShadowDecl(), clang::Sema::BuildVariableInstantiation(), clang::Sema::CheckClassTemplate(), clang::Sema::CheckCompletedCXXClass(), clang::Sema::CheckDestructorAccess(), clang::Sema::CheckFriendAccess(), clang::Sema::CheckFunctionDeclaration(), clang::Sema::CodeCompleteCall(), clang::MemberExpr::Create(), DiagnoseAccessPath(), clang::CXXRecordDecl::finishedDefaultedOrDeletedMember(), clang::TemplateDeclInstantiator::InitMethodInstantiation(), clang::TemplateDeclInstantiator::InstantiateEnumDefinition(), clang::TemplateDeclInstantiator::InstantiateTypedefNameDecl(), IsAccessible(), IsInitializerListConstructorConversion(), IsMicrosoftUsingDeclarationAccessBug(), clang::Sema::IsSimplyAccessible(), IsUserDefinedConversion(), LookupCopyAndMoveConstructors(), clang::Sema::LookupQualifiedName(), mangleThunkThisAdjustment(), clang::Sema::MergeVarDecl(), clang::Sema::SetMemberAccessSpecifier(), TryConstructorInitialization(), TryUserDefinedConversion(), clang::ASTNodeImporter::VisitClassTemplateDecl(), clang::TemplateDeclInstantiator::VisitCXXMethodDecl(), clang::ASTDeclWriter::VisitDecl(), clang::ASTNodeImporter::VisitEnumConstantDecl(), clang::ASTDeclWriter::VisitEnumDecl(), clang::ASTNodeImporter::VisitEnumDecl(), clang::ASTNodeImporter::VisitFieldDecl(), clang::ASTNodeImporter::VisitFunctionDecl(), clang::ASTNodeImporter::VisitIndirectFieldDecl(), clang::ASTDeclWriter::VisitParmVarDecl(), clang::ASTDeclWriter::VisitRecordDecl(), clang::ASTNodeImporter::VisitRecordDecl(), clang::ASTNodeImporter::VisitTypedefNameDecl(), clang::ASTDeclWriter::VisitVarDecl(), clang::ASTNodeImporter::VisitVarDecl(), and clang::ASTNodeImporter::VisitVarTemplateDecl().

AccessSpecifier clang::Decl::getAccessUnsafe ( ) const
inline

Retrieve the access specifier for this declaration, even though it may not yet have been properly set.

Definition at line 423 of file DeclBase.h.

References Access.

FunctionDecl * Decl::getAsFunction ( )
const FunctionDecl* clang::Decl::getAsFunction ( ) const
inline

Definition at line 882 of file DeclBase.h.

References getAsFunction().

ASTContext & Decl::getASTContext ( ) const

Definition at line 284 of file DeclBase.cpp.

References clang::TranslationUnitDecl::getASTContext(), and getTranslationUnitDecl().

Referenced by clang::DeclContext::addHiddenDecl(), AddObjCProperties(), clang::CXXMethodDecl::addOverriddenMethod(), clang::CXXMethodDecl::begin_overridden_methods(), canBeWeakImported(), clang::VarDecl::checkInitIsICE(), clang::ObjCInterfaceDecl::ClassImplementsProtocol(), clang::PredefinedExpr::ComputeName(), clang::ObjCObjectType::computeSuperClassTypeSlow(), clang::CXXRecordDecl::conversion_begin(), clang::CXXRecordDecl::conversion_end(), clang::NamedDecl::declarationReplaces(), clang::DeclRefExpr::DeclRefExpr(), clang::FunctionDecl::doesDeclarationForceExternallyVisibleDefinition(), dropAttrs(), clang::CXXMethodDecl::end_overridden_methods(), clang::VarDecl::ensureEvaluatedStmt(), clang::VarDecl::evaluateValue(), findAnonymousStructOrUnionIndex(), clang::ClassTemplateDecl::findPartialSpecialization(), clang::RedeclarableTemplateDecl::findSpecializationImpl(), FormatFunctionParameter(), clang::AnalysisDeclContext::getASTContext(), getASTMutationListener(), getAttrs(), getAvailability(), clang::ObjCMethodDecl::getBody(), clang::FunctionDecl::getBody(), clang::FunctionDecl::getBuiltinID(), clang::FunctionDecl::getCallResultType(), clang::AnalysisDeclContext::getCFG(), clang::FunctionDecl::getClassScopeSpecializationPattern(), clang::RedeclarableTemplateDecl::getCommonPtr(), clang::VarDecl::getDefinition(), clang::VarDecl::getDescribedVarTemplate(), clang::CXXRecordDecl::getDestructor(), clang::ObjCInterfaceDecl::getImplementation(), clang::ObjCCategoryDecl::getImplementation(), clang::CXXRecordDecl::getIndirectPrimaryBases(), clang::CXXConstructorDecl::getInheritedConstructor(), clang::ClassTemplateDecl::getInjectedClassNameSpecialization(), clang::FunctionTemplateDecl::getInjectedTemplateArgs(), clang::CXXRecordDecl::getLambdaCallOperator(), clang::CXXRecordDecl::getLambdaStaticInvoker(), clang::LinkageComputer::getLVForDecl(), getLVForLocalDecl(), getLVForNamespaceScopeDecl(), getMaxAlignment(), clang::VarDecl::getMemberSpecializationInfo(), clang::FunctionDecl::getMinRequiredArguments(), clang::CXXRecordDecl::getMSVtorDispMode(), clang::getPrimaryMergedDecl(), clang::NamedDecl::getQualifiedNameAsString(), clang::FunctionDecl::getReturnTypeSourceRange(), getSelfInitExpr(), clang::ObjCMethodDecl::getSendResultType(), clang::ObjCObjectPointerType::getSuperClassType(), clang::VarDecl::getTLSKind(), clang::AnalysisDeclContext::getUnoptimizedCFG(), getVisibilityOf(), clang::CXXRecordDecl::getVisibleConversionFunctions(), clang::VarDecl::hasDefinition(), hasLocalOwningModuleStorage(), clang::CXXConstructorDecl::init_begin(), clang::ObjCImplementationDecl::init_begin(), clang::ento::CheckerContext::isCLibraryFunction(), clang::CXXMethodDecl::isCopyAssignmentOperator(), clang::CXXConstructorDecl::isCopyOrMoveConstructor(), clang::FunctionDecl::isInlineDefinitionExternallyVisible(), clang::CXXMethodDecl::isMoveAssignmentOperator(), clang::FunctionDecl::isMSExternInline(), isMsLayout(), clang::Expr::isPotentialConstantExpr(), clang::Expr::isPotentialConstantExprUnevaluated(), clang::FunctionDecl::isReplaceableGlobalAllocationFunction(), clang::FunctionDecl::isReservedGlobalPlacementOperator(), isSameEntity(), clang::CXXConstructorDecl::isSpecializationCopyingObject(), clang::ASTNodeImporter::IsStructuralMatch(), clang::VarDecl::isThisDeclarationADefinition(), clang::CXXMethodDecl::isUsualDeallocationFunction(), isWeakImported(), isZeroSized(), clang::FunctionTemplateDecl::LoadLazySpecializations(), clang::ClassTemplateDecl::LoadLazySpecializations(), clang::VarTemplateDecl::LoadLazySpecializations(), clang::CXXRecordDecl::lookupInBases(), clang::RecordDecl::mayInsertExtraPadding(), print(), clang::NamedDecl::printQualifiedName(), clang::VarTemplateSpecializationDecl::Profile(), clang::CXXRecordDecl::removeConversion(), clang::ObjCMethodDecl::setAsRedeclaration(), setAttrs(), clang::CXXRecordDecl::setBases(), clang::RecordDecl::setCapturedRecord(), clang::ObjCImplDecl::setClassInterface(), clang::FunctionDecl::setDeclsInPrototypeScope(), clang::VarDecl::setDescribedVarTemplate(), clang::MaterializeTemporaryExpr::setExtendingDecl(), clang::ObjCInterfaceDecl::setExternallyCompleted(), clang::VarTemplateSpecializationDecl::setExternLoc(), clang::FunctionDecl::setFunctionTemplateSpecialization(), clang::ObjCInterfaceDecl::setImplementation(), clang::ObjCCategoryDecl::setImplementation(), clang::CXXConstructorDecl::setInheritedConstructor(), clang::VarDecl::setInit(), clang::VarTemplateSpecializationDecl::setInstantiationOf(), clang::CXXRecordDecl::setInstantiationOfMemberClass(), clang::EnumDecl::setInstantiationOfMemberEnum(), clang::FunctionDecl::setInstantiationOfMemberFunction(), clang::VarDecl::setInstantiationOfStaticDataMember(), setLexicalDeclContext(), clang::TypedefNameDecl::setModedTypeSourceInfo(), clang::LabelDecl::setMSAsmLabel(), SetNestedNameSpecifier(), clang::FunctionDecl::setParams(), clang::BlockDecl::setParams(), clang::DeclaratorDecl::setQualifierInfo(), clang::TagDecl::setQualifierInfo(), clang::VarTemplateSpecializationDecl::setTemplateKeywordLoc(), clang::DeclaratorDecl::setTemplateParameterListsInfo(), clang::TagDecl::setTemplateParameterListsInfo(), clang::VarTemplateSpecializationDecl::setTypeAsWritten(), shouldRunOnFunctionOrMethod(), clang::CXXMethodDecl::size_overridden_methods(), clang::TagDecl::startDefinition(), updateOutOfDate(), useInlineVisibilityHidden(), and clang::ASTNodeImporter::VisitRecordDecl().

ASTMutationListener * Decl::getASTMutationListener ( ) const
protected
template<typename T >
T* clang::Decl::getAttr ( ) const
inline

Definition at line 484 of file DeclBase.h.

References getAttrs(), and hasAttrs().

Referenced by clang::Sema::ActOnEnumBody(), clang::Sema::ActOnExplicitInstantiation(), clang::Sema::ActOnFields(), clang::Sema::ActOnFinishFunctionBody(), clang::Sema::ActOnStartNamespaceDef(), clang::Sema::ActOnVariableDeclarator(), AddVariableConstraints(), checkAttributesAfterMerging(), checkAttrMutualExclusion(), clang::Sema::CheckBaseSpecifier(), clang::consumed::ConsumedStmtVisitor::checkCallability(), clang::Sema::CheckCompletedCXXClass(), clang::Sema::CheckCompleteVariableDeclaration(), checkDLLAttributeRedeclaration(), clang::Sema::CheckIfOverriddenFunctionIsMarkedFinal(), CheckNakedParmReference(), clang::Sema::CheckOverrideControl(), clang::consumed::ConsumedStateMap::checkParamsForReturnTypestate(), classifyPointerDeclarator(), clang::CodeGen::CodeGenModule::ConstructAttributeList(), DiagnoseAvailabilityOfDecl(), clang::Sema::DiagnoseSentinelCalls(), clang::CodeGen::CodeGenFunction::EmitAutoVarCleanups(), clang::CodeGen::CodeGenFunction::EmitCall(), clang::CodeGen::CodeGenFunction::EmitCXXGlobalVarDeclInit(), EmitGlobalNamedRegister(), clang::CodeGen::CodeGenFunction::EmitStaticVarDecl(), EvaluateUnaryTypeTrait(), clang::Sema::FinalizeDeclaration(), GenOpenCLArgMetadata(), getCallingConventionForDecl(), clang::getDLLAttr(), getNonNullAttr(), clang::CXXUuidofExpr::GetUuidAttrOfType(), getVisibilityOf(), clang::CodeGen::CodeGenModule::GetWeakRefReference(), clang::consumed::ConsumedStmtVisitor::handleCall(), handleVecReturnAttr(), handleVecTypeHint(), handleWorkGroupSize(), clang::Sema::IsValueInFlagEnum(), clang::MangleContext::mangleName(), mapConsumableAttrState(), MaybeAddSentinel(), clang::Sema::mergeAlwaysInlineAttr(), clang::Sema::mergeDeclAttributes(), clang::Sema::mergeDLLExportAttr(), clang::Sema::MergeFunctionDecl(), clang::Sema::mergeMinSizeAttr(), clang::Sema::mergeMSInheritanceAttr(), clang::Sema::mergeOptimizeNoneAttr(), mergeParamDeclAttributes(), clang::Sema::mergeSectionAttr(), mergeVisibilityAttr(), clang::Sema::ProcessDeclAttributeList(), clang::Sema::ProcessPropertyDecl(), clang::CodeGen::CodeGenModule::setTLSMode(), testsFor(), clang::arcmt::trans::BlockObjCVariableTraverser::traverseBody(), clang::Sema::UnifySection(), clang::consumed::ConsumedStmtVisitor::VisitCXXConstructExpr(), and clang::consumed::ConsumedStmtVisitor::VisitParmVarDecl().

AttrVec& clang::Decl::getAttrs ( )
inline
const AttrVec & Decl::getAttrs ( ) const

Definition at line 650 of file DeclBase.cpp.

References getASTContext(), and clang::ASTContext::getDeclAttrs().

AvailabilityResult Decl::getAvailability ( std::string *  Message = nullptr) const

Determine the availability of the given declaration.

This routine will determine the most restrictive availability of the given declaration (e.g., preferring 'unavailable' to 'deprecated').

Parameters
MessageIf non-NULL and the result is not AR_Available, will be set to a (possibly empty) message describing why the declaration has not been introduced, is deprecated, or is unavailable.

Definition at line 442 of file DeclBase.cpp.

References clang::AR_Available, clang::AR_Deprecated, clang::AR_Unavailable, attrs(), CheckAvailability(), getASTContext(), and clang::Result.

Referenced by clang::Sema::addMethodToGlobalList(), clang::Sema::CanUseDecl(), DiagnoseAvailabilityOfDecl(), clang::Sema::DiagnoseUnimplementedProperties(), clang::Sema::getCurContextAvailability(), getDeclAvailability(), clang::Sema::getDeletedOrUnavailableSuffix(), isDeprecated(), isUnavailable(), and WarnUndefinedMethod().

virtual Stmt* clang::Decl::getBody ( ) const
inlinevirtual

getBody - If this Decl represents a declaration for a body of code, such as a function or method definition, this method returns the top-level Stmt* of that body. Otherwise this method returns null.

Reimplemented in clang::CapturedDecl, clang::BlockDecl, clang::FunctionDecl, and clang::ObjCMethodDecl.

Definition at line 840 of file DeclBase.h.

Referenced by CheckStringRefAssignedTemporary(), clang::ento::PathDiagnosticLocation::createDeclBegin(), clang::CodeGen::CodeGenPGO::emitEmptyCounterMapping(), clang::FunctionDecl::getBody(), getBodyRBrace(), hasBody(), and clang::sema::AnalysisBasedWarnings::IssueWarnings().

SourceLocation Decl::getBodyRBrace ( ) const
Linkage clang::Decl::getCachedLinkage ( ) const
inlineprotected
virtual Decl* clang::Decl::getCanonicalDecl ( )
inlinevirtual

Retrieves the "canonical" declaration of the given declaration.

Reimplemented in clang::UnresolvedUsingTypenameDecl, clang::UnresolvedUsingValueDecl, clang::EnumDecl, clang::UsingDecl, clang::UsingShadowDecl, clang::TagDecl, clang::VarTemplateDecl, clang::NamespaceAliasDecl, clang::TypedefNameDecl, clang::EnumConstantDecl, clang::FieldDecl, clang::CXXConstructorDecl, clang::TypeAliasTemplateDecl, clang::ClassTemplateDecl, clang::FunctionDecl, clang::ObjCProtocolDecl, clang::CXXMethodDecl, clang::ObjCInterfaceDecl, clang::VarDecl, clang::FunctionTemplateDecl, clang::RedeclarableTemplateDecl, clang::CXXRecordDecl, clang::NamespaceDecl, and clang::ObjCMethodDecl.

Definition at line 733 of file DeclBase.h.

Referenced by AddTemplateParameterChunks(), clang::Sema::BuildCXXNestedNameSpecifier(), checkForFunctionCall(), CheckTemplateArgumentPointerToMember(), compareDeclarations(), clang::declaresSameEntity(), DiagnoseInvalidRedeclaration(), DiagnoseSelfAssignment(), clang::Sema::DiagnoseSelfMove(), clang::Sema::DiagnoseUseOfDecl(), clang::CodeGen::CGDebugInfo::EmitFunctionStart(), clang::CodeGen::CGDebugInfo::EmitGlobalVariable(), clang::ADLResult::erase(), clang::ASTReader::forEachImportedKeyDecl(), getCanonicalDecl(), getCanonicalParmVarDecl(), clang::ASTContext::getCanonicalTemplateArgument(), clang::ASTContext::getCanonicalTemplateName(), clang::ASTContext::getCommentForDecl(), getDeclForLocalLookup(), clang::ASTReader::GetExistingDecl(), clang::ASTReader::getKeyDeclaration(), clang::CallGraph::getOrInsertNode(), clang::VTableContextBase::getThunkInfo(), HasSameBase(), clang::ADLResult::insert(), isCanonicalDecl(), IsEquivalentForUsingDecl(), clang::OverloadCandidateSet::isNewCandidate(), isSameDeclaration(), isSameTemplate(), IsStructurallyEquivalent(), clang::Sema::LookupTemplateName(), MatchesFriend(), clang::LookupResult::resolveKind(), clang::ASTDeclReader::UpdateDecl(), and wasDifferentDeclUsedForInlining().

const Decl* clang::Decl::getCanonicalDecl ( ) const
inline

Definition at line 734 of file DeclBase.h.

References getCanonicalDecl().

DeclContext* clang::Decl::getDeclContext ( )
inline

Definition at line 381 of file DeclBase.h.

Referenced by clang::Sema::ActOnBlockStart(), clang::Sema::ActOnClassTemplateSpecialization(), clang::Sema::ActOnConversionDeclarator(), clang::Sema::ActOnCXXEnterDeclInitializer(), clang::Sema::ActOnDeclarator(), clang::Sema::ActOnEndOfTranslationUnit(), clang::Sema::ActOnEnumConstant(), clang::Sema::ActOnExplicitInstantiation(), clang::Sema::ActOnFinishObjCImplementation(), clang::Sema::ActOnFriendFunctionDecl(), clang::Sema::ActOnFunctionDeclarator(), clang::Sema::ActOnOpenMPIdExpression(), clang::Sema::ActOnStartOfObjCMethodDef(), clang::Sema::ActOnTag(), clang::Sema::ActOnTagFinishDefinition(), clang::Sema::ActOnTypedefNameDecl(), clang::Sema::ActOnVariableDeclarator(), clang::Sema::ActOnVarTemplateSpecialization(), addAssociatedClassesAndNamespaces(), clang::Sema::AddFunctionCandidates(), clang::Sema::AddInitializerToDecl(), clang::Sema::AddKnownFunctionAttributes(), clang::Sema::AddMethodCandidate(), clang::Sema::addMethodToGlobalList(), clang::CodeGen::CodeGenTypes::addRecordTypeName(), addRedeclaredMethods(), clang::Sema::BuildAnonymousStructOrUnion(), clang::Sema::BuildCallToMemberFunction(), clang::Sema::BuildCallToObjectOfClassType(), clang::Sema::BuildClassMessage(), clang::Sema::BuildCXXDefaultArgExpr(), clang::Sema::BuildInstanceMessage(), clang::Sema::BuildVariableInstantiation(), clang::Sema::BuildVarTemplateInstantiation(), clang::Sema::CheckAddressOfOperand(), clang::Sema::CheckClassTemplate(), clang::Sema::CheckCompleteVariableDeclaration(), clang::Sema::CheckConstructor(), clang::Sema::CheckDependentFunctionTemplateSpecialization(), CheckExplicitInstantiationScope(), clang::Sema::CheckFriendAccess(), clang::Sema::CheckFunctionTemplateSpecialization(), clang::Sema::checkInitMethod(), clang::Sema::CheckMessageArgumentTypes(), CheckMethodOverrideParam(), CheckMethodOverrideReturn(), clang::Sema::CheckObjCMethodOverride(), clang::Sema::CheckObjCMethodOverrides(), checkObjCUnusedIvar(), CheckOperatorNewDeleteDeclarationScope(), clang::Sema::CheckShadow(), clang::Sema::CheckTemplateArgument(), CheckTemplateSpecializationScope(), checkTypeParamListConsistency(), clang::Sema::CheckUsingShadowDecl(), ClassifyImplicitMemberAccess(), ClassifyMemberExpr(), collectOverriddenMethodsSlow(), collectViableConversionCandidates(), clang::ASTReader::CompleteRedeclChain(), computeCachedProperties(), computeDeclRefDependence(), computeLVForDecl(), clang::PredefinedExpr::ComputeName(), clang::CodeCompletionResult::CreateCodeCompletionString(), createFriendTagNNSFixIt(), clang::NamedDecl::declarationReplaces(), clang::ASTContext::DeclMustBeEmitted(), clang::Sema::DefaultSynthesizeProperties(), DiagnoseBaseOrMemInitializerOrder(), clang::Sema::DiagnoseEmptyLookup(), diagnoseInstanceReference(), DiagnoseInvalidRedeclaration(), clang::Sema::DiagnoseOwningPropertyGetterSynthesis(), diagnoseUncapturableValueReference(), DoMarkVarDeclReferenced(), clang::CodeGen::CGDebugInfo::EmitDeclareOfBlockLiteralArgVariable(), clang::CodeGen::CGDebugInfo::EmitGlobalVariable(), clang::CodeGen::CGDebugInfo::EmitImportDecl(), clang::CodeGen::CGDebugInfo::EmitNamespaceAlias(), clang::CodeGen::CodeGenFunction::EmitObjCMessageExpr(), clang::CodeGen::CodeGenModule::EmitTopLevelDecl(), clang::CodeGen::CGDebugInfo::EmitUsingDirective(), clang::Sema::FinalizeDeclaration(), findAnonymousStructOrUnionIndex(), FindConversionForRefInit(), FindDeclaringClass(), findExplicitInstancetypeDeclarer(), clang::Sema::FindInstantiatedDecl(), clang::Sema::FinishTemplateArgumentDeduction(), clang::Sema::FixOverloadedFunctionReference(), FormatFunctionParameter(), getAssignmentAction(), clang::FunctionDecl::getBuiltinID(), clang::ObjCMethodDecl::getCanonicalDecl(), clang::ObjCMethodDecl::getClassInterface(), clang::ObjCIvarDecl::getContainingInterface(), getContextForScopeMatching(), getDeclAvailability(), getDeclContext(), getDefiningModule(), getFieldIndex(), getLVForClassMember(), getLVForClosure(), getLVForNamespaceScopeDecl(), clang::CodeGen::CGCXXABI::getMemberPointerPathAdjustment(), getMethodReceiverIfKnownImmutable(), clang::ASTContext::getObjContainingInterface(), getOutermostFuncOrBlockContext(), clang::ObjCMethodDecl::getOverriddenMethods(), clang::Sema::getOwningModule(), clang::FieldDecl::getParent(), getParentFunctionOrMethod(), clang::ObjCMethodDecl::getSendResultType(), clang::ParmVarDecl::getSourceRange(), getStackIndexOfNearestEnclosingCaptureReadyLambda(), getStaticDeclName(), clang::Sema::getTemplateInstantiationArgs(), getTranslationUnitDecl(), clang::ObjCIvarDecl::getUsageType(), clang::ObjCPropertyDecl::getUsageType(), clang::ento::MemRegionManager::getVarRegion(), clang::Sema::HandleDelayedAccessCheck(), handleIBOutletCollection(), handleObjCDesignatedInitializer(), handleObjCRequiresSuperAttr(), clang::Sema::handleTagNumbering(), handleWeakRefAttr(), HelperToDiagnoseMismatchedMethodsInGlobalPool(), clang::Sema::HideUsingShadowDecl(), clang::ASTNodeImporter::ImportDeclParts(), clang::TemplateDeclInstantiator::InitFunctionInstantiation(), InNamespace(), clang::Sema::InstantiateAttrs(), clang::Sema::InstantiateClass(), clang::TemplateDeclInstantiator::InstantiateEnumDefinition(), clang::Sema::InstantiateFunctionDefinition(), clang::TemplateDeclInstantiator::InstantiateTypedefNameDecl(), clang::Sema::InstantiateVariableDefinition(), clang::ento::CheckerContext::isCLibraryFunction(), clang::NamedDecl::isCXXClassMember(), isDeclDeprecated(), clang::IdentifierResolver::isDeclInScope(), isDeclUnavailable(), isDeclWithinFunction(), clang::TemplateArgument::isDependent(), clang::ObjCMethodDecl::isDesignatedInitializerForTheInterface(), isFunctionLocalClass(), IsFunctionStdAbs(), clang::FunctionDecl::isGlobal(), isInAnonymousNamespace(), clang::LambdaExpr::isInitCapture(), clang::RecordDecl::isInjectedClassName(), clang::TemplateArgument::isInstantiationDependent(), isInStdNamespace(), isInStdNamespace(), clang::CXXRecordDecl::isLocalClass(), clang::FunctionDecl::isMain(), clang::FunctionDecl::isMSVCRTEntryPoint(), clang::CodeGen::CodeGenFunction::isObjCMethodWithTypeParams(), clang::Expr::isObjCSelfExpr(), isOutOfLine(), isOutOfScopePreviousDeclaration(), isReferenceToNonConstCapture(), clang::FunctionDecl::isReplaceableGlobalAllocationFunction(), clang::FunctionDecl::isReservedGlobalPlacementOperator(), isSameEntity(), isSingleLineLanguageLinkage(), clang::VarDecl::isStaticDataMember(), clang::Sema::isStdInitializerList(), IsStructurallyEquivalent(), IsTailPaddedMemberArray(), isTrackedVar(), IsUserDefinedConversion(), clang::CXXMethodDecl::isUsualDeallocationFunction(), IsWithinTemplateSpecialization(), LookupMemberExpr(), clang::Sema::LookupOrCreateLabel(), clang::DeclContext::makeDeclVisibleInContext(), clang::MangleContext::mangleObjCMethodName(), clang::Sema::MarkFunctionReferenced(), MatchesFriend(), clang::Sema::MergeCXXFunctionDecl(), clang::Sema::mergeObjCMethodDecls(), mergeParamDeclAttributes(), clang::Sema::MergeVarDecl(), MightInstantiateTo(), clang::Sema::ParsedFreeStandingDeclSpec(), clang::Sema::PerformObjectMemberConversion(), clang::Sema::PrintInstantiationStack(), clang::NamedDecl::printQualifiedName(), clang::Sema::PushOnScopeChains(), RecordModifiableNonNullParam(), setLexicalDeclContext(), clang::FunctionDecl::setPure(), shouldConsiderLinkage(), ShouldDiagnoseUnusedDecl(), clang::Sema::ShouldWarnIfUnusedFileScopedDecl(), clang::Sema::startLambdaDefinition(), SubstDefaultTemplateArgument(), clang::Sema::SubstParmVarDecl(), clang::TreeTransform< Derived >::TransformFunctionTypeParam(), clang::IdentifierResolver::tryAddTopLevelDecl(), clang::Sema::tryCaptureVariable(), TryRefInitWithConversionFunction(), TryUserDefinedConversion(), ValidDuplicateEnum(), clang::ASTNodeImporter::VisitClassTemplateSpecializationDecl(), clang::TemplateDeclInstantiator::VisitCXXMethodDecl(), clang::ASTDeclWriter::VisitDecl(), clang::TemplateDeclInstantiator::VisitFunctionDecl(), clang::ASTNodeImporter::VisitLinkageSpecDecl(), clang::ASTNodeImporter::VisitObjCCategoryImplDecl(), clang::ASTNodeImporter::VisitObjCImplementationDecl(), clang::ASTNodeImporter::VisitObjCPropertyImplDecl(), and clang::ASTNodeImporter::VisitVarTemplateSpecializationDecl().

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

Definition at line 386 of file DeclBase.h.

References getDeclContext().

const char * Decl::getDeclKindName ( ) const

Definition at line 87 of file DeclBase.cpp.

Referenced by clang::ASTNodeImporter::VisitDecl().

FriendObjectKind clang::Decl::getFriendObjectKind ( ) const
inline
const FunctionType * Decl::getFunctionType ( bool  BlocksToo = true) const
unsigned clang::Decl::getGlobalID ( ) const
inline

Retrieve the global declaration ID associated with this declaration, which specifies where in the.

Definition at line 628 of file DeclBase.h.

References isFromASTFile().

Referenced by clang::ASTWriter::getDeclID(), clang::ASTWriter::GetDeclRef(), and clang::ASTReader::getOwningModuleFile().

unsigned clang::Decl::getIdentifierNamespace ( ) const
inline
unsigned Decl::getIdentifierNamespaceForKind ( Kind  DK)
static
Module* clang::Decl::getImportedOwningModule ( ) const
inline

Get the imported owning module, if this decl is from an imported (non-local) module.

Definition at line 651 of file DeclBase.h.

References isFromASTFile().

Referenced by clang::Sema::getOwningModule(), clang::ASTReader::getOwningModuleNameForDiagnostic(), and clang::ASTDeclReader::mergeDefinitionVisibility().

Kind clang::Decl::getKind ( ) const
inline

Definition at line 375 of file DeclBase.h.

Referenced by clang::Sema::ActOnFields(), clang::CodeGen::CodeGenModule::AddDeferredUnusedCoverageMapping(), clang::ASTDeclReader::attachLatestDecl(), clang::ASTDeclReader::attachPreviousDecl(), clang::Sema::BuildDeclarationNameExpr(), castToDeclContext(), clang::comments::Sema::checkReturnsCommand(), clang::OMPThreadPrivateDecl::classof(), clang::TranslationUnitDecl::classof(), clang::ExternCContextDecl::classof(), clang::AccessSpecDecl::classof(), clang::FriendDecl::classof(), clang::NamedDecl::classof(), clang::TemplateDecl::classof(), clang::LabelDecl::classof(), clang::ObjCMethodDecl::classof(), clang::NamespaceDecl::classof(), clang::ValueDecl::classof(), clang::ObjCTypeParamDecl::classof(), clang::DeclaratorDecl::classof(), clang::RedeclarableTemplateDecl::classof(), clang::ObjCContainerDecl::classof(), clang::FunctionTemplateDecl::classof(), clang::NonTypeTemplateParmDecl::classof(), clang::VarDecl::classof(), clang::ImplicitParamDecl::classof(), clang::TemplateTemplateParmDecl::classof(), clang::ParmVarDecl::classof(), clang::ObjCInterfaceDecl::classof(), clang::ObjCIvarDecl::classof(), clang::ObjCAtDefsFieldDecl::classof(), clang::CXXRecordDecl::classof(), clang::ClassTemplateSpecializationDecl::classof(), clang::DeclContext::classof(), clang::ClassTemplatePartialSpecializationDecl::classof(), clang::CXXMethodDecl::classof(), clang::ObjCProtocolDecl::classof(), clang::ObjCCategoryDecl::classof(), clang::ClassTemplateDecl::classof(), clang::ObjCImplDecl::classof(), clang::FriendTemplateDecl::classof(), clang::ObjCCategoryImplDecl::classof(), clang::FunctionDecl::classof(), clang::TypeAliasTemplateDecl::classof(), clang::ClassScopeFunctionSpecializationDecl::classof(), clang::CXXConstructorDecl::classof(), clang::ObjCImplementationDecl::classof(), clang::CXXDestructorDecl::classof(), clang::ObjCCompatibleAliasDecl::classof(), clang::FieldDecl::classof(), clang::CXXConversionDecl::classof(), clang::EnumConstantDecl::classof(), clang::IndirectFieldDecl::classof(), clang::LinkageSpecDecl::classof(), clang::TypeDecl::classof(), clang::VarTemplateSpecializationDecl::classof(), clang::ObjCPropertyDecl::classof(), clang::TypedefNameDecl::classof(), clang::UsingDirectiveDecl::classof(), clang::TypedefDecl::classof(), clang::TypeAliasDecl::classof(), clang::VarTemplatePartialSpecializationDecl::classof(), clang::ObjCPropertyImplDecl::classof(), clang::NamespaceAliasDecl::classof(), clang::UsingShadowDecl::classof(), clang::VarTemplateDecl::classof(), clang::TagDecl::classof(), clang::UsingDecl::classof(), clang::UnresolvedUsingValueDecl::classof(), clang::UnresolvedUsingTypenameDecl::classof(), clang::StaticAssertDecl::classof(), clang::EnumDecl::classof(), clang::MSPropertyDecl::classof(), clang::RecordDecl::classof(), clang::FileScopeAsmDecl::classof(), clang::CapturedDecl::classof(), clang::EmptyDecl::classof(), compareDeclarations(), computeLVForDecl(), clang::NamedDecl::declarationReplaces(), dumpPreviousDecl(), clang::CodeGen::CodeGenFunction::EmitDecl(), clang::CodeGen::CodeGenModule::EmitDeferredUnusedCoverageMappings(), clang::CodeGen::CodeGenModule::EmitTopLevelDecl(), clang::comments::DeclInfo::fill(), clang::ObjCContainerDecl::FindPropertyDeclaration(), clang::ObjCIvarDecl::getContainingInterface(), clang::getCursorKindForDecl(), clang::ast_type_traits::ASTNodeKind::getFromNode(), getKind(), clang::ASTDeclReader::getMostRecentDecl(), clang::NamedDecl::getUnderlyingDecl(), clang::Sema::isCopyElisionCandidate(), clang::VarDecl::isFileVarDecl(), clang::VarDecl::isFunctionOrMethodVarDecl(), isInstantiationOf(), clang::VarDecl::isLocalVarDecl(), clang::VarDecl::isLocalVarDeclOrParm(), clang::comments::Sema::isObjCPropertyDecl(), isSameEntity(), isSameTemplateParameter(), clang::VarDecl::isStaticDataMember(), IsStructurallyEquivalent(), isTemplateParameter(), MatchTemplateParameterKind(), clang::ento::CheckerManager::runCheckersOnASTDecl(), setNonMemberOperator(), clang::RecursiveASTVisitor< Derived >::TraverseDecl(), clang::declvisitor::Base< declvisitor::make_ptr, ASTNodeImporter, Decl * >::Visit(), clang::ASTDeclWriter::VisitEnumDecl(), clang::ASTDeclWriter::VisitFieldDecl(), clang::ASTDeclWriter::VisitRecordDecl(), clang::ASTDeclReader::VisitRedeclarableTemplateDecl(), and clang::ASTDeclReader::VisitVarDeclImpl().

DeclContext* clang::Decl::getLexicalDeclContext ( )
inline

getLexicalDeclContext - The declaration context where this Decl was lexically declared (LexicalDC). May be different from getDeclContext() (SemanticDC). e.g.:

namespace A { void f(); // SemanticDC == LexicalDC == 'namespace A' } void A::f(); // SemanticDC == namespace 'A' // LexicalDC == global namespace

Definition at line 697 of file DeclBase.h.

Referenced by clang::Sema::ActOnFields(), clang::Sema::ActOnFriendFunctionDecl(), clang::Sema::ActOnStartOfFunctionDef(), clang::ASTUnit::addFileLevelDecl(), clang::DeclContext::addHiddenDecl(), clang::Sema::AddInitializerToDecl(), clang::Sema::BuildVariableInstantiation(), clang::DeclContext::containsDecl(), DiagUninitUse(), clang::Sema::FindInstantiatedDecl(), clang::Sema::FinishTemplateArgumentDeduction(), clang::CodeGen::CodeGenModule::GetAddrOfGlobalTemporary(), clang::ASTWriter::getAnonymousDeclarationNumber(), getContextForScopeMatching(), getLexicalDeclContext(), clang::Sema::getTemplateInstantiationArgs(), clang::Sema::HandleDelayedAccessCheck(), clang::ASTNodeImporter::ImportDeclParts(), clang::Sema::InstantiateVariableDefinition(), clang::VarDecl::isFileVarDecl(), clang::VarDecl::isFunctionOrMethodVarDecl(), clang::VarDecl::isInExternCContext(), clang::FunctionDecl::isInExternCContext(), clang::VarDecl::isInExternCXXContext(), clang::FunctionDecl::isInExternCXXContext(), clang::VarDecl::isLocalVarDecl(), isOutOfLine(), clang::Sema::MergeCXXFunctionDecl(), clang::Sema::MergeFunctionDecl(), mergeTypeWithPrevious(), clang::Sema::MergeVarDecl(), clang::serialization::needsAnonymousDeclarationNumber(), clang::Sema::PushOnScopeChains(), RedeclForcesDefC99(), clang::Sema::RegisterLocallyScopedExternCDecl(), clang::DeclContext::removeDecl(), setLexicalDeclContext(), clang::Sema::ShouldWarnIfUnusedFileScopedDecl(), clang::Sema::UseArgumentDependentLookup(), clang::ASTNodeImporter::VisitClassTemplateSpecializationDecl(), clang::TemplateDeclInstantiator::VisitCXXMethodDecl(), clang::ASTDeclWriter::VisitDecl(), clang::ASTNodeImporter::VisitLinkageSpecDecl(), clang::ASTNodeImporter::VisitObjCCategoryImplDecl(), clang::ASTNodeImporter::VisitObjCImplementationDecl(), clang::ASTNodeImporter::VisitObjCPropertyImplDecl(), clang::ASTDeclReader::VisitVarDeclImpl(), and clang::ASTNodeImporter::VisitVarTemplateSpecializationDecl().

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

Definition at line 702 of file DeclBase.h.

References getLexicalDeclContext().

Module* clang::Decl::getLocalOwningModule ( ) const
inline

Get the local owning module, if known. Returns nullptr if owner is not yet known or declaration is not from a module.

Definition at line 660 of file DeclBase.h.

References Hidden, and isFromASTFile().

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

SourceLocation clang::Decl::getLocation ( ) const
inline

Definition at line 372 of file DeclBase.h.

Referenced by clang::Sema::ActOnAliasDeclaration(), clang::Sema::ActOnAtEnd(), clang::Sema::ActOnBlockArguments(), clang::Sema::ActOnCapturedRegionError(), clang::Sema::ActOnClassTemplateSpecialization(), clang::Sema::ActOnCompatibilityAlias(), clang::Sema::ActOnCompoundStmt(), clang::Sema::ActOnConversionDeclarator(), clang::Sema::ActOnCXXDelete(), clang::Sema::ActOnCXXForRangeDecl(), clang::Sema::ActOnCXXMemberDeclarator(), clang::Sema::ActOnDefs(), clang::Sema::ActOnEndOfTranslationUnit(), clang::Sema::ActOnEnumBody(), clang::Sema::ActOnEnumConstant(), clang::Sema::ActOnExplicitInstantiation(), clang::Sema::ActOnFields(), clang::Sema::ActOnFinishFunctionBody(), clang::Sema::ActOnForEachDeclStmt(), clang::Sema::ActOnForwardClassDeclaration(), clang::Sema::ActOnFriendFunctionDecl(), clang::Sema::ActOnFunctionDeclarator(), clang::Sema::ActOnInitializerError(), clang::Sema::ActOnIvar(), clang::Sema::ActOnLabelStmt(), clang::Sema::ActOnLambdaError(), clang::Sema::ActOnMethodDeclaration(), clang::Sema::ActOnObjCExceptionDecl(), clang::Sema::ActOnObjCForCollectionStmt(), clang::Sema::actOnObjCTypeArgsOrProtocolQualifiers(), clang::Sema::ActOnOpenMPAlignedClause(), clang::Sema::ActOnOpenMPCopyprivateClause(), clang::Sema::ActOnOpenMPFirstprivateClause(), clang::Sema::ActOnOpenMPIdExpression(), clang::Sema::ActOnOpenMPLastprivateClause(), clang::Sema::ActOnOpenMPLinearClause(), clang::Sema::ActOnOpenMPPrivateClause(), clang::Sema::ActOnOpenMPReductionClause(), clang::Sema::ActOnParamDeclarator(), clang::Sema::ActOnPropertyImplDecl(), clang::Sema::ActOnPureSpecifier(), clang::Sema::ActOnStartCategoryImplementation(), clang::Sema::ActOnStartCategoryInterface(), clang::Sema::ActOnStartClassImplementation(), clang::Sema::ActOnStartClassInterface(), clang::Sema::ActOnStartCXXMemberDeclarations(), clang::Sema::ActOnStartNamespaceDef(), clang::Sema::ActOnStartOfFunctionDef(), clang::Sema::ActOnStartOfLambdaDefinition(), clang::Sema::ActOnStartOfObjCMethodDef(), clang::Sema::ActOnStartOfSwitchStmt(), clang::Sema::ActOnStartProtocolInterface(), clang::Sema::ActOnSuperClassOfClassInterface(), clang::Sema::ActOnTag(), clang::Sema::ActOnTagTemplateIdType(), clang::Sema::ActOnTemplateTemplateParameter(), clang::Sema::ActOnVariableDeclarator(), clang::Sema::ActOnVarTemplateSpecialization(), clang::ASTUnit::addFileLevelDecl(), addFunctionPointerConversion(), clang::CodeGen::CodeGenModule::AddGlobalAnnotations(), clang::Sema::AddInitializerToDecl(), addInstantiatedParametersToScope(), clang::Sema::AddKnownFunctionAttributes(), applyObjCTypeArgs(), clang::CodeGen::CodeGenPGO::assignRegionCounters(), clang::Sema::AtomicPropertySetterGetterRules(), clang::Sema::BuildAnonymousStructOrUnion(), clang::Sema::BuildBlockForLambdaConversion(), clang::Sema::BuildBuiltinOffsetOf(), clang::Sema::BuildClassMessage(), clang::Sema::BuildCXXDefaultArgExpr(), clang::Sema::BuildCXXNestedNameSpecifier(), clang::Sema::BuildCXXNew(), clang::Sema::BuildDeclarationNameExpr(), clang::Sema::BuildDeclRefExpr(), BuildImplicitBaseInitializer(), BuildImplicitMemberInitializer(), clang::Sema::buildInitCaptureField(), clang::Sema::BuildInstanceMessage(), clang::Sema::BuildLambdaExpr(), clang::Sema::BuildMemberReferenceExpr(), clang::Sema::BuildMemInitializer(), clang::Sema::BuildMicrosoftCAnonymousStruct(), BuildNonArrayForRange(), clang::CodeGen::CGCXXABI::buildThisParam(), clang::Sema::BuildUnaryTransformType(), clang::Sema::BuildUsingDeclaration(), clang::Sema::BuildUsingShadowDecl(), clang::Sema::BuildVariableInstantiation(), clang::ObjCMethodCall::canBeOverridenInSubclass(), captureInBlock(), captureInLambda(), CheckAnonMemberRedeclaration(), clang::Sema::CheckARCMethodDecl(), checkARCPropertyDecl(), checkARCPropertyImpl(), checkAttributesAfterMerging(), clang::Sema::CheckBaseSpecifier(), clang::threadSafety::BeforeSet::checkBeforeAfter(), clang::Sema::CheckCallReturnType(), clang::Sema::checkClassLevelDLLAttribute(), clang::Sema::CheckClassTemplate(), clang::Sema::CheckCompletedCXXClass(), clang::Sema::CheckCompleteVariableDeclaration(), clang::Sema::CheckConditionVariable(), clang::Sema::CheckConflictingOverridingMethod(), CheckConstexprCtorInitializer(), CheckConstexprFunction(), clang::Sema::CheckConstexprFunctionBody(), clang::Sema::CheckConstexprFunctionDecl(), CheckConstexprParameterTypes(), clang::Sema::CheckConstructor(), clang::Sema::CheckCUDATarget(), clang::Sema::CheckCXXDefaultArguments(), clang::Sema::CheckDestructor(), checkDLLAttributeRedeclaration(), clang::Sema::CheckEnumRedeclaration(), clang::Sema::CheckEquivalentExceptionSpec(), CheckExplicitInstantiationScope(), clang::Sema::CheckExplicitlyDefaultedMemberExceptionSpec(), clang::Sema::CheckExplicitlyDefaultedSpecialMember(), clang::Sema::CheckExtraCXXDefaultArguments(), clang::Sema::CheckFieldDecl(), CheckForDanglingReferenceOrPointer(), CheckForDuplicateEnumValues(), clang::Sema::CheckForFunctionRedefinition(), CheckForReference(), clang::Sema::CheckFriendAccess(), clang::Sema::CheckFunctionDeclaration(), clang::Sema::CheckFunctionTemplateSpecialization(), clang::Sema::CheckIfOverriddenFunctionIsMarkedFinal(), clang::Sema::CheckImplementationIvars(), clang::Sema::checkInitMethod(), checkIsValidOpenCLKernelParameter(), clang::Sema::CheckLiteralOperatorDeclaration(), clang::Sema::CheckMain(), clang::Sema::CheckMemberSpecialization(), checkMethodFamilyMismatch(), CheckMethodOverrideParam(), CheckMethodOverrideReturn(), clang::Sema::checkMSInheritanceAttrOnDefinition(), clang::Sema::CheckMSVCRTEntryPoint(), checkNewAttributesAfterDef(), clang::Sema::CheckNontrivialField(), CheckNonTypeTemplatePartialSpecializationArgs(), clang::Sema::checkNullabilityTypeSpecifier(), clang::Sema::CheckObjCBridgeRelatedConversions(), clang::Sema::CheckObjCDeclScope(), clang::Sema::CheckObjCMethodOverride(), clang::Sema::CheckObjCMethodOverrides(), checkObjCUnusedIvar(), CheckOperatorNewDeclaration(), CheckOperatorNewDeleteDeclarationScope(), CheckOperatorNewDeleteTypes(), clang::Sema::CheckOverloadedOperatorDeclaration(), clang::Sema::CheckOverrideControl(), clang::Sema::CheckOverridingFunctionAttributes(), clang::Sema::CheckOverridingFunctionExceptionSpec(), clang::Sema::CheckOverridingFunctionReturnType(), clang::Sema::CheckParmsForFunctionDef(), CheckPoppedLabel(), clang::Sema::CheckPureMethod(), clang::Sema::checkRetainCycles(), CheckReturnStackAddr(), clang::Sema::CheckShadow(), clang::Sema::CheckSingleAssignmentConstraints(), clang::Sema::CheckSpecializationInstantiationRedecl(), clang::Sema::CheckTemplateArgument(), CheckTemplateArgumentAddressOfObjectOrFunction(), CheckTemplateArgumentIsCompatibleWithParameter(), clang::Sema::CheckTemplateArgumentList(), CheckTemplateArgumentPointerToMember(), clang::Sema::CheckTemplateParameterList(), CheckTemplateSpecializationScope(), clang::Sema::CheckTemplateTypeArgument(), CheckTrivialDefaultConstructor(), checkTrivialSubobjectCall(), clang::Sema::CheckTypedefForVariablyModifiedType(), clang::Sema::CheckTypenameType(), checkTypeParamListConsistency(), checkUndefinedButUsed(), clang::Sema::CheckUsingDeclRedeclaration(), clang::Sema::CheckUsingShadowDecl(), checkUsingShadowRedecl(), clang::Sema::CheckVariableDeclarationType(), compare(), clang::Sema::ComputeDefaultedCopyAssignmentExceptionSpec(), clang::Sema::ComputeDefaultedCopyCtorExceptionSpec(), clang::Sema::ComputeDefaultedMoveAssignmentExceptionSpec(), ConvertDeducedTemplateArgument(), clang::CodeGen::CodeGenFunction::createAtExitStub(), clang::Sema::DeclareImplicitCopyAssignment(), clang::Sema::DeclareImplicitCopyConstructor(), clang::Sema::DeclareImplicitDefaultConstructor(), clang::Sema::DeclareImplicitDestructor(), clang::Sema::DeclareImplicitMoveAssignment(), clang::Sema::DeclareImplicitMoveConstructor(), clang::Sema::DeduceReturnType(), clang::Sema::DefaultSynthesizeProperties(), clang::Sema::DefineImplicitCopyAssignment(), clang::Sema::DefineImplicitCopyConstructor(), clang::Sema::DefineImplicitDefaultConstructor(), clang::Sema::DefineImplicitDestructor(), clang::Sema::DefineImplicitLambdaToBlockPointerConversion(), clang::Sema::DefineImplicitLambdaToFunctionPointerConversion(), clang::Sema::DefineImplicitMoveAssignment(), clang::Sema::DefineImplicitMoveConstructor(), clang::Sema::DefineInheritingConstructor(), clang::Sema::DefineUsedVTables(), DelegatingCycleHelper(), clang::InitializationSequence::Diagnose(), clang::Sema::DiagnoseAbsenceOfOverrideControl(), clang::Sema::DiagnoseAmbiguousLookup(), diagnoseArityMismatch(), DiagnoseArityMismatch(), clang::Sema::DiagnoseAssignmentResult(), clang::Sema::DiagnoseAutoDeductionFailure(), DiagnoseBadConversion(), DiagnoseBadDeduction(), DiagnoseCalleeStaticArrayParam(), clang::Sema::DiagnoseClassExtensionDupMethods(), DiagnoseConstAssignment(), DiagnoseCStringFormatDirectiveInCFAPI(), DiagnoseCStringFormatDirectiveInObjCAPI(), diagnoseDeprecatedCopyOperation(), DiagnoseDirectIsaAccess(), clang::Sema::DiagnoseDuplicateIvars(), DiagnoseFailedEnableIfAttr(), DiagnoseForRangeConstVariableCopies(), DiagnoseForRangeReferenceVariableCopies(), clang::Sema::DiagnoseHiddenVirtualMethods(), DiagnoseInvalidRedeclaration(), clang::Sema::DiagnoseMissingDesignatedInitOverrides(), clang::Sema::diagnoseMissingImport(), DiagnoseNamespaceInlineMismatch(), clang::Sema::DiagnoseNontrivial(), DiagnoseObjCImplementedDeprecations(), clang::Sema::DiagnoseOwningPropertyGetterSynthesis(), clang::Sema::DiagnosePropertyAccessorMismatch(), clang::Sema::DiagnosePropertyMismatch(), DiagnosePropertyMismatchDeclInProtocols(), clang::Sema::DiagnoseSentinelCalls(), clang::Sema::DiagnoseSizeOfParametersAndReturnValue(), clang::Sema::DiagnoseTemplateParameterShadow(), diagnoseUncapturableValueReference(), DiagnoseUnimplementedAccessor(), DiagnoseUninitializedUse(), DiagnoseUninstantiableTemplate(), clang::Sema::DiagnoseUnusedBackingIvarInAccessor(), clang::Sema::DiagnoseUnusedDecl(), DiagUninitUse(), DoEmitAvailabilityWarning(), clang::CodeGen::CodeGenFunction::EmitAutoVarAlloca(), clang::CodeGen::CodeGenFunction::EmitAutoVarInit(), clang::CodeGen::CodeGenFunction::EmitCXXGuardedInit(), clang::CodeGen::CGDebugInfo::EmitDeclareOfBlockDeclRefVariable(), clang::CodeGen::CodeGenFunction::EmitFieldAnnotations(), clang::CodeGen::CGDebugInfo::EmitGlobalVariable(), clang::CodeGen::CGDebugInfo::EmitImportDecl(), clang::CodeGen::CGDebugInfo::EmitNamespaceAlias(), clang::CodeGen::CodeGenFunction::EmitParmDecl(), clang::Sema::EmitRelatedResultTypeNote(), clang::Sema::EmitRelatedResultTypeNoteForReturn(), clang::CodeGen::CodeGenFunction::EmitStaticVarDecl(), clang::CodeGen::CGDebugInfo::EmitUsingDirective(), clang::CodeGen::CodeGenFunction::EmitVarAnnotations(), clang::CodeGen::CodeGenModule::ErrorUnsupported(), clang::CodeGen::CGCXXABI::ErrorUnsupportedABI(), clang::Expr::EvaluateAsInitializer(), evaluateVarDeclInit(), clang::Expr::EvaluateWithSubstitution(), clang::Sema::FinalizeDeclaration(), clang::Sema::FinalizeVarWithDestructor(), clang::Sema::FindAllocationFunctions(), findCompleteObject(), findDefaultInitializer(), clang::Sema::FindInstantiatedDecl(), clang::Sema::FindProtocolDeclaration(), FinishTemplateArgumentDeduction(), clang::Sema::FinishTemplateArgumentDeduction(), clang::CodeGen::CodeGenFunction::GenerateBlockFunction(), clang::CodeGen::CodeGenFunction::GenerateCapturedStmtFunction(), clang::CodeGen::CodeGenFunction::GenerateCode(), clang::CodeGen::CodeGenFunction::GenerateCXXGlobalVarDeclInitFunc(), clang::CodeGen::CodeGenFunction::generateDestroyHelper(), clang::AccessSpecDecl::getAccessSpecifierLoc(), clang::NamespaceAliasDecl::getAliasLoc(), clang::FileScopeAsmDecl::getAsmLoc(), clang::BlockDecl::getCaretLocation(), GetDeclSpecTypeForDeclarator(), getDefaultArgExprsForConstructors(), clang::Sema::getDestructorName(), clang::ObjCInterfaceDecl::getEndOfDefinitionLoc(), GetFullTypeForDeclarator(), clang::UsingDirectiveDecl::getIdentLocation(), getInitializationLoc(), GetLocationForCandidate(), clang::LinkageSpecDecl::getLocEnd(), clang::ObjCMethodDecl::getLocStart(), clang::FunctionDecl::getNameInfo(), clang::UsingDecl::getNameInfo(), clang::UnresolvedUsingValueDecl::getNameInfo(), clang::Sema::getOwningModule(), clang::ASTContext::getRawCommentForDeclNoCache(), clang::CXXCtorInitializer::getSourceLocation(), clang::ASTReader::getSourceLocationForDeclID(), clang::FriendDecl::getSourceRange(), clang::ObjCMethodDecl::getSourceRange(), getSourceRange(), clang::LabelDecl::getSourceRange(), clang::ObjCTypeParamDecl::getSourceRange(), clang::DeclaratorDecl::getSourceRange(), clang::VarDecl::getSourceRange(), clang::ObjCInterfaceDecl::getSourceRange(), clang::ParmVarDecl::getSourceRange(), clang::ObjCProtocolDecl::getSourceRange(), clang::EnumConstantDecl::getSourceRange(), clang::TypeDecl::getSourceRange(), clang::ObjCPropertyDecl::getSourceRange(), clang::UsingDirectiveDecl::getSourceRange(), clang::TypedefDecl::getSourceRange(), clang::ObjCPropertyImplDecl::getSourceRange(), clang::TagDecl::getSourceRange(), clang::StaticAssertDecl::getSourceRange(), clang::BlockDecl::getSourceRange(), clang::ImportDecl::getSourceRange(), clang::Sema::getTypeName(), clang::ento::MemRegionManager::getVarRegion(), handleCleanupAttr(), handleFormatAttr(), handleModeAttr(), handleObjCIndependentClass(), handleObjCMethodFamilyAttr(), handleObjCNSObject(), clang::Sema::HandlePropertyInClassExtension(), handleTransparentUnionAttr(), HelperToDiagnoseMismatchedMethodsInGlobalPool(), clang::Sema::ImplMethodsVsClassMethods(), clang::ASTNodeImporter::ImportDeclParts(), clang::ASTNodeImporter::ImportDefinition(), clang::Sema::inferCUDATargetForImplicitSpecialMember(), clang::Sema::inferObjCARCLifetime(), InjectAnonymousStructOrUnionMembers(), clang::Sema::InstantiateClass(), clang::TemplateDeclInstantiator::InstantiateClassTemplatePartialSpecialization(), clang::TemplateDeclInstantiator::InstantiateEnumDefinition(), clang::Sema::InstantiateFunctionDefinition(), clang::TemplateDeclInstantiator::InstantiateTypedefNameDecl(), clang::TemplateDeclInstantiator::InstantiateVarTemplatePartialSpecialization(), clang::Sema::isAcceptableTagRedeclaration(), clang::TagTypeLoc::isDefinition(), isForbiddenTypeAllowed(), clang::LabelDecl::isGnuLocal(), clang::Sema::isIncompatibleTypedef(), clang::ento::CallEvent::isInSystemHeader(), clang::ObjCPropertyImplDecl::isIvarNameSpecified(), isNullPointerValueTemplateArgument(), clang::Sema::IsOverload(), clang::Expr::isPotentialConstantExpr(), IsStructurallyEquivalent(), clang::sema::AnalysisBasedWarnings::IssueWarnings(), isVariableCapturable(), clang::Sema::LookupInObjCMethod(), clang::Sema::LookupSpecialMember(), LookupStdInitializerList(), clang::Sema::LookupTemplateName(), clang::Sema::MarkBaseAndMemberDestructorsReferenced(), clang::Sema::MatchAllMethodDeclarations(), MatchTemplateParameterKind(), clang::RecordDecl::mayInsertExtraPadding(), mergeAlignedAttrs(), clang::Sema::MergeCXXFunctionDecl(), clang::Sema::MergeFunctionDecl(), mergeInterfaceMethodToImpl(), mergeParamDeclAttributes(), mergeParamDeclTypes(), clang::Sema::MergeTypedefNameDecl(), clang::Sema::MergeVarDecl(), clang::Sema::MergeVarDeclExceptionSpecs(), clang::Sema::MergeVarDeclTypes(), clang::Sema::NoteDeletedFunction(), NoteFunctionCandidate(), clang::Sema::NoteHiddenVirtualMethods(), NoteLValueLocation(), clang::Sema::NoteOverloadCandidate(), noteOverloads(), NoteSurrogateCandidate(), clang::Sema::ParseObjCSelectorExpression(), clang::Sema::ParseTypedefDecl(), clang::InitializationSequence::Perform(), clang::Sema::PerformOpenMPImplicitIntegerConversion(), clang::PrettyDeclStackTraceEntry::print(), clang::PrettyStackTraceDecl::print(), clang::Sema::ProcessDeclAttributeList(), clang::Sema::ProcessPropertyDecl(), clang::Sema::propagateDLLAttrToBaseClassTemplate(), clang::TreeTransform< Derived >::RebuildDependentNameType(), clang::TreeTransform< Derived >::RebuildObjCExceptionDecl(), clang::Sema::RebuildTemplateParamsInCurrentInstantiation(), clang::CodeGen::SanitizerMetadata::reportGlobalToASan(), ReportOriginalDSA(), ReportOverrides(), clang::Sema::RequireLiteralType(), rewriteBuiltinFunctionDecl(), rewriteToObjCInterfaceDecl(), clang::consumed::ConsumedAnalyzer::run(), selectBestPath(), clang::Sema::SetCtorInitializers(), clang::Sema::SetDeclDeleted(), clang::Sema::SetIvarInitializers(), clang::Sema::SetMemberAccessSpecifier(), clang::Sema::SetParamDefaultArgument(), clang::Sema::setTagNameForLinkagePurposes(), clang::Sema::ShouldDeleteSpecialMember(), clang::Sema::SpecialMemberIsTrivial(), clang::Sema::startLambdaDefinition(), clang::CodeGen::CodeGenFunction::StartObjCMethod(), clang::CodeGen::CodeGenFunction::StartThunk(), clang::Sema::SubstExceptionSpec(), clang::TemplateDeclInstantiator::SubstFunctionType(), clang::Sema::SubstituteExplicitTemplateArguments(), clang::Sema::SubstParmVarDecl(), SuggestInitializationFixit(), clang::TreeTransform< Derived >::TransformFunctionTypeParam(), clang::threadSafety::SExprBuilder::translateAttrExpr(), clang::Sema::tryCaptureVariable(), TryDiagnoseProtectedAccess(), clang::Sema::UnifySection(), validateBoxingMethod(), clang::Sema::VerifyIntegerConstantExpression(), clang::ASTNodeImporter::VisitClassTemplateDecl(), clang::ASTNodeImporter::VisitClassTemplateSpecializationDecl(), clang::TemplateDeclInstantiator::VisitCXXMethodDecl(), clang::ASTDeclWriter::VisitDecl(), clang::ASTNodeImporter::VisitDecl(), clang::TemplateDeclInstantiator::VisitFunctionDecl(), clang::ASTNodeImporter::VisitImplicitParamDecl(), clang::ASTNodeImporter::VisitLinkageSpecDecl(), clang::ASTNodeImporter::VisitNonTypeTemplateParmDecl(), clang::ASTNodeImporter::VisitObjCCategoryImplDecl(), clang::ASTNodeImporter::VisitObjCImplementationDecl(), clang::ASTNodeImporter::VisitObjCPropertyImplDecl(), clang::ASTNodeImporter::VisitObjCTypeParamDecl(), clang::ASTNodeImporter::VisitParmVarDecl(), clang::ASTNodeImporter::VisitTemplateTemplateParmDecl(), clang::ASTNodeImporter::VisitTemplateTypeParmDecl(), clang::ASTNodeImporter::VisitVarTemplateDecl(), clang::ASTNodeImporter::VisitVarTemplateSpecializationDecl(), clang::Sema::WarnConflictingTypedMethods(), clang::Sema::WarnExactTypedMethods(), and warnOnLifetimeExtension().

SourceLocation clang::Decl::getLocEnd ( ) const
inline
SourceLocation clang::Decl::getLocStart ( ) const
inline
unsigned Decl::getMaxAlignment ( ) const

getMaxAlignment - return the maximum alignment specified by attributes on this decl, 0 if there are none.

Definition at line 292 of file DeclBase.cpp.

References getASTContext(), getAttrs(), and hasAttrs().

Referenced by clang::ASTContext::getDeclAlign(), and clang::CodeGen::CodeGenModule::SetLLVMFunctionAttributesForDefinition().

Decl* clang::Decl::getMostRecentDecl ( )
inline

Retrieve the most recent declaration that declares the same entity as this declaration (which may be this declaration).

Definition at line 829 of file DeclBase.h.

References getMostRecentDeclImpl().

Referenced by forAllLaterRedecls(), and clang::Sema::mergeDeclAttributes().

const Decl* clang::Decl::getMostRecentDecl ( ) const
inline

Retrieve the most recent declaration that declares the same entity as this declaration (which may be this declaration).

Definition at line 833 of file DeclBase.h.

References getMostRecentDeclImpl().

virtual Decl* clang::Decl::getMostRecentDeclImpl ( )
inlineprotectedvirtual

Implementation of getMostRecentDecl(), to be overridden by any subclass that has a redeclaration chain.

Reimplemented in clang::TagDecl, clang::TypedefNameDecl, clang::FunctionDecl, and clang::VarDecl.

Definition at line 754 of file DeclBase.h.

Referenced by getMostRecentDecl().

Decl* clang::Decl::getNextDeclInContext ( )
inline
const Decl* clang::Decl::getNextDeclInContext ( ) const
inline

Definition at line 379 of file DeclBase.h.

References NextInContextAndBits.

virtual Decl* clang::Decl::getNextRedeclarationImpl ( )
inlineprotectedvirtual

Returns the next redeclaration or itself if this is the only decl.

Decl subclasses that can be redeclared should override this method so that Decl::redecl_iterator can iterate over them.

Reimplemented in clang::TagDecl, clang::TypedefNameDecl, clang::FunctionDecl, and clang::VarDecl.

Definition at line 746 of file DeclBase.h.

Referenced by clang::Decl::redecl_iterator::operator++().

Decl * Decl::getNonClosureContext ( )

Find the innermost non-closure ancestor of this declaration, walking up through blocks, lambdas, etc. If that ancestor is not a code context (!isFunctionOrMethod()), returns null.

A declaration may be its own non-closure context.

Definition at line 782 of file DeclBase.cpp.

References getNonClosureContext().

Referenced by clang::CodeGen::CGDebugInfo::EmitDeclareOfBlockLiteralArgVariable(), getNonClosureContext(), clang::CodeGen::CodeGenModule::getOrCreateStaticVarDecl(), and clang::CodeGen::CodeGenFunction::StartFunction().

const Decl* clang::Decl::getNonClosureContext ( ) const
inline

Definition at line 396 of file DeclBase.h.

References getNonClosureContext().

unsigned clang::Decl::getOwningModuleID ( ) const
inline

Retrieve the global ID of the module that owns this particular declaration.

Definition at line 636 of file DeclBase.h.

References isFromASTFile().

Referenced by getDeclForLocalLookup(), and clang::ASTDeclReader::mergeDefinitionVisibility().

const DeclContext * Decl::getParentFunctionOrMethod ( ) const

If this decl is defined inside a function/method/block it returns the corresponding DeclContext, otherwise it returns null.

Definition at line 184 of file DeclBase.cpp.

References getDeclContext(), and clang::DeclContext::isTranslationUnit().

Referenced by basicGVALinkageForVariable(), clang::Sema::FinalizeDeclaration(), getParentFunctionOrMethod(), and isDefinedOutsideFunctionOrMethod().

DeclContext* clang::Decl::getParentFunctionOrMethod ( )
inline

Definition at line 727 of file DeclBase.h.

References getParentFunctionOrMethod().

Decl* clang::Decl::getPreviousDecl ( )
inline
const Decl* clang::Decl::getPreviousDecl ( ) const
inline

Retrieve the most recent declaration that declares the same entity as this declaration, or NULL if there is no previous declaration.

Definition at line 818 of file DeclBase.h.

References getPreviousDeclImpl().

virtual Decl* clang::Decl::getPreviousDeclImpl ( )
inlineprotectedvirtual

Implementation of getPreviousDecl(), to be overridden by any subclass that has a redeclaration chain.

Reimplemented in clang::TagDecl, clang::TypedefNameDecl, clang::FunctionDecl, and clang::VarDecl.

Definition at line 750 of file DeclBase.h.

Referenced by getPreviousDecl().

virtual SourceRange clang::Decl::getSourceRange ( ) const
inlinevirtual
TranslationUnitDecl * Decl::getTranslationUnitDecl ( )
const TranslationUnitDecl* clang::Decl::getTranslationUnitDecl ( ) const
inline

Definition at line 401 of file DeclBase.h.

References getTranslationUnitDecl().

template<typename T >
bool clang::Decl::hasAttr ( ) const
inline

Definition at line 487 of file DeclBase.h.

References getAttrs(), and hasAttrs().

Referenced by clang::Sema::ActOnBlockStmtExpr(), clang::Sema::ActOnCXXDelete(), clang::Sema::ActOnCXXMemberDeclarator(), clang::Sema::ActOnEnumBody(), clang::Sema::ActOnFields(), clang::Sema::ActOnFinishFunctionBody(), clang::Sema::ActOnFinishNamespaceDef(), clang::Sema::ActOnFunctionDeclarator(), clang::Sema::ActOnMethodDeclaration(), clang::Sema::ActOnObjCExceptionDecl(), clang::Sema::ActOnParamDeclarator(), clang::Sema::ActOnPragmaWeakAlias(), clang::Sema::ActOnStartOfFunctionDef(), clang::Sema::ActOnStartOfObjCMethodDef(), clang::Sema::ActOnVariableDeclarator(), clang::Sema::AddCFAuditedAttribute(), clang::CodeGen::CodeGenModule::AddGlobalAnnotations(), clang::Sema::AddInitializerToDecl(), clang::Sema::AddKnownFunctionAttributes(), clang::Sema::AddOptnoneAttributeIfNoConflicts(), adjustGVALinkageForDLLAttribute(), AllowOverloadingOfFunction(), clang::Sema::AreMultipleMethodsInGlobalPool(), clang::CodeGen::CodeGenTypes::arrangeObjCMessageSendSignature(), assignInheritanceModel(), clang::Sema::AttachBaseSpecifiers(), basicGVALinkageForFunction(), clang::Sema::BuildInstanceMessage(), clang::Sema::BuildResolvedCallExpr(), clang::canCalleeThrow(), clang::CodeGen::CodeGenFunction::CanDevirtualizeMemberFunctionCall(), canRedefineFunction(), captureInBlock(), checkAcquireOrderAttrCommon(), clang::Sema::CheckARCMethodDecl(), clang::Sema::CheckAssignmentOperands(), clang::Sema::CheckCompletedCXXClass(), clang::Sema::CheckCompleteVariableDeclaration(), clang::comments::Sema::checkDeprecatedCommand(), clang::Sema::CheckFunctionDeclaration(), clang::Sema::CheckMain(), clang::Sema::CheckMessageArgumentTypes(), CheckNakedParmReference(), CheckNonNullArguments(), clang::Sema::CheckNontrivialField(), clang::Sema::CheckObjCMethodOverride(), clang::Sema::CheckObjCPropertyAttributes(), clang::Sema::CheckOverrideControl(), CheckProtocolMethodDefs(), checkRecordTypeForCapability(), clang::Sema::CheckTransparentUnionArgumentConstraints(), checkTypedefTypeForCapability(), checkUndefinedButUsed(), clang::Sema::CheckVariableDeclarationType(), clang::Sema::CodeCompleteLambdaIntroducer(), computeKeyFunction(), clang::CodeGen::CodeGenTypes::ComputeRecordLayout(), clang::CodeGen::CodeGenModule::ConstructAttributeList(), clang::DeclAttrsMatchCUDAMode(), clang::ASTContext::DeclMustBeEmitted(), clang::Sema::DefaultVariadicArgumentPromotion(), clang::Sema::DiagnoseAbsenceOfOverrideControl(), clang::Sema::DiagnoseAssignmentEnum(), clang::Sema::DiagnoseOwningPropertyGetterSynthesis(), DiagnoseUninitializedUse(), clang::Sema::DiagnoseUnusedExprResult(), DiagnoseUnusedOfDecl(), diagnoseUseOfInternalDeclInInlineFunction(), clang::CodeGen::CodeGenFunction::EmitAutoVarAlloca(), clang::CodeGen::CodeGenFunction::EmitAutoVarCleanups(), clang::CodeGen::CodeGenFunction::emitAutoVarTypeCleanup(), EmitAutoVarWithLifetime(), clang::CodeGen::CodeGenFunction::EmitCXXGlobalVarDeclInit(), clang::CodeGen::CGDebugInfo::EmitDeclareOfBlockDeclRefVariable(), clang::CodeGen::CodeGenFunction::EmitDeclRefLValue(), clang::CodeGen::CodeGenFunction::EmitFieldAnnotations(), clang::CodeGen::CodeGenModule::EmitGlobal(), EmitGlobalVarDeclLValue(), clang::CodeGen::CodeGenFunction::EmitLValueForField(), clang::CodeGen::CodeGenFunction::EmitObjCMessageExpr(), clang::CodeGen::CodeGenFunction::EmitParmDecl(), clang::CodeGen::CodeGenFunction::EmitStaticVarDecl(), clang::CodeGen::CodeGenFunction::EmitVarAnnotations(), clang::CodeGen::CodeGenFunction::EnterDtorCleanups(), EvaluateUnaryTypeTrait(), clang::Sema::FinalizeDeclaration(), findProtocolsWithExplicitImpls(), clang::Sema::GatherArgumentsForCall(), clang::CodeGen::CodeGenFunction::GenerateCode(), clang::CodeGen::CodeGenFunction::GenerateCXXGlobalVarDeclInitFunc(), clang::CodeGen::CodeGenFunction::GetAddressOfBaseClass(), clang::ASTContext::getBlockVarCopyInits(), clang::CodeGen::CodeGenModule::getBuiltinLibFunction(), getCallingConventionForDecl(), clang::ASTContext::getDeclAlign(), clang::getDLLAttr(), GetFullTypeForDeclarator(), clang::CodeGen::CodeGenModule::GetGlobalVarAddressSpace(), clang::CodeGen::CodeGenModule::getLLVMLinkageForDeclarator(), getTypeInfoLinkage(), clang::Sema::getUndefinedButUsed(), clang::CodeGen::CodeGenModule::getVTableLinkage(), hasDirectVisibilityAttribute(), hasObjCExceptionAttribute(), clang::Expr::HasSideEffects(), clang::FunctionDecl::hasUnusedResultAttr(), clang::Sema::IdentifyCUDATarget(), clang::InitializedEntity::InitializeParameter(), clang::CodeGen::CodeGenFunction::InitializeVTablePointer(), clang::Sema::InstantiateAttrs(), clang::Sema::InstantiateVariableInitializer(), clang::CXXDynamicCastExpr::isAlwaysNull(), clang::ObjCInterfaceDecl::isArcWeakrefUnavailable(), clang::isBetterOverloadCandidate(), isBlockVarRef(), clang::Sema::isCopyElisionCandidate(), isFunctionDefinitionDiscarded(), clang::ObjCInterfaceDecl::isObjCRequiresPropertyDefs(), isTestingFunction(), IsTransparentUnionStandardConversion(), isVarDeclStrongDefinition(), isVariableCapturable(), clang::Sema::makeUnavailableInSystemHeader(), clang::Sema::MarkFunctionReferenced(), clang::Sema::MatchTwoMethodDeclarations(), clang::Sema::MaybeBindToTemporary(), clang::RecordDecl::mayInsertExtraPadding(), clang::Sema::mergeAlwaysInlineAttr(), clang::Sema::mergeDLLExportAttr(), clang::Sema::mergeDLLImportAttr(), clang::Sema::MergeFunctionDecl(), mergeInterfaceMethodToImpl(), clang::Sema::mergeMinSizeAttr(), clang::Sema::mergeOptimizeNoneAttr(), mergeParamDeclAttributes(), clang::ASTContext::mergeTransparentUnionType(), clang::Sema::MergeVarDecl(), clang::ASTContext::ObjCMethodsAreEqual(), clang::Sema::ProcessDeclAttributeList(), clang::Sema::ProcessPropertyDecl(), pushTemporaryCleanup(), RecordModifiableNonNullParam(), clang::CodeGen::CodeGenModule::setAliasAttributes(), clang::ASTContext::setBlockVarCopyInits(), clang::CodeGen::CodeGenModule::SetCommonAttributes(), setLinkageAndVisibilityForGV(), clang::CodeGen::CodeGenModule::SetLLVMFunctionAttributesForDefinition(), shouldBeInCOMDAT(), shouldConsiderTemplateVisibility(), ShouldDiagnoseSwitchCaseNotInEnum(), ShouldDiagnoseUnusedDecl(), shouldExtendReceiverForInnerPointerMessage(), clang::CodeGen::CodeGenFunction::ShouldInstrumentFunction(), clang::MangleContext::shouldMangleDeclName(), ShouldUseExternalRTTIDescriptor(), ShouldWarnAboutMissingPrototype(), clang::Sema::ShouldWarnIfUnusedFileScopedDecl(), clang::CodeGen::CodeGenFunction::StartFunction(), clang::CodeGen::CodeGenFunction::StartObjCMethod(), SuggestInitializationFixit(), clang::CodeGen::CodeGenModule::TryEmitDefinitionAsAlias(), useFirstFieldIfTransparentUnion(), useInlineVisibilityHidden(), and clang::Sema::WarnExactTypedMethods().

bool clang::Decl::hasAttrs ( ) const
inline
virtual bool clang::Decl::hasBody ( ) const
inlinevirtual

Returns true if this Decl represents a declaration for a body of code, such as a function or method definition. Note that hasBody can also return true if any redeclaration of this Decl represents a declaration for a body of code.

Reimplemented in clang::FunctionDecl, and clang::ObjCMethodDecl.

Definition at line 846 of file DeclBase.h.

References getBody().

Referenced by clang::CodeGen::CodeGenFunction::GenerateCapturedStmtFunction(), clang::FunctionDecl::hasBody(), hasImplicitBody(), clang::CallGraph::includeInGraph(), and clang::ento::CheckerManager::runCheckersOnASTBody().

bool clang::Decl::hasCachedLinkage ( ) const
inlineprotected
bool Decl::hasLocalOwningModuleStorage ( ) const
protected
bool clang::Decl::hasTagIdentifierNamespace ( ) const
inline
bool clang::Decl::isCanonicalDecl ( ) const
inline
bool clang::Decl::isDefinedOutsideFunctionOrMethod ( ) const
inline

isDefinedOutsideFunctionOrMethod - This predicate returns true if this scoped decl is defined outside the current function or method. This is roughly global variables and functions, but also handles enums (which could be defined inside or outside a function etc).

Definition at line 720 of file DeclBase.h.

References getParentFunctionOrMethod().

Referenced by clang::Sema::InstantiateClass(), clang::Sema::LookupInObjCMethod(), and LookupPotentialTypoResult().

bool clang::Decl::isDeprecated ( std::string *  Message = nullptr) const
inline

Determine whether this declaration is marked 'deprecated'.

Parameters
MessageIf non-NULL and the declaration is deprecated, this will be set to the message describing why the declaration was deprecated (which may be empty).

Definition at line 593 of file DeclBase.h.

References clang::AR_Deprecated, and getAvailability().

Referenced by clang::Sema::addMethodToGlobalList(), DiagnoseObjCImplementedDeprecations(), and isDeclDeprecated().

bool clang::Decl::isFirstDecl ( ) const
inline

True if this is the first declaration in its redeclaration chain.

Definition at line 823 of file DeclBase.h.

References getPreviousDecl().

bool clang::Decl::isFromASTFile ( ) const
inline
bool clang::Decl::isFunctionOrFunctionTemplate ( ) const
inline

Whether this declaration is a function or function template.

Definition at line 872 of file DeclBase.h.

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

bool clang::Decl::isImplicit ( ) const
inline

isImplicit - Indicates whether the declaration was implicitly generated by the implementation. If false, this declaration was written explicitly in the source code.

Definition at line 503 of file DeclBase.h.

Referenced by clang::Sema::ActOnBlockArguments(), clang::Sema::ActOnCXXMemberDeclarator(), clang::ASTWriter::AddedCXXImplicitMember(), clang::CodeGen::CodeGenPGO::assignRegionCounters(), clang::Sema::BuildCXXNew(), BuildImplicitMemberInitializer(), clang::Sema::buildOverloadedCallSet(), clang::Sema::CheckCUDATarget(), clang::Sema::CheckDestructor(), checkDLLAttributeRedeclaration(), clang::Sema::CheckObjCMethodOverrides(), clang::Sema::CheckParmsForFunctionDef(), clang::Sema::DefineImplicitCopyAssignment(), clang::Sema::DefineImplicitCopyConstructor(), clang::InitializationSequence::Diagnose(), clang::Sema::DiagnoseAbsenceOfOverrideControl(), DiagnoseBadTarget(), diagnoseDeprecatedCopyOperation(), clang::CodeGen::CodeGenFunction::EmitDestructorBody(), clang::CodeGen::CGDebugInfo::EmitFunctionStart(), clang::Sema::FindAllocationFunctions(), clang::CXXRecordDecl::finishedDefaultedOrDeletedMember(), clang::ASTContext::getBuiltinVaListDecl(), clang::ObjCMethodDecl::getNumSelectorLocs(), clang::ASTContext::getRawCommentForDeclNoCache(), clang::ObjCMethodDecl::getSelectorStartLoc(), hasImplicitBody(), clang::ObjCContainerDecl::HasUserDeclaredSetterMethod(), clang::Sema::IdentifyCUDATarget(), clang::FieldDecl::isAnonymousStructOrUnion(), clang::ObjCInterfaceDecl::isImplicitInterfaceDecl(), clang::RecordDecl::isInjectedClassName(), clang::CXXConversionDecl::isLambdaToBlockPointerConversion(), isTrackedVar(), LeastDerivedClassWithSameLayout(), clang::ObjCInterfaceDecl::lookupMethod(), clang::Sema::MergeFunctionDecl(), RedeclForcesDefC99(), clang::ObjCMethodDecl::setMethodParams(), clang::Sema::ShouldDeleteSpecialMember(), clang::RecursiveASTVisitor< Derived >::TraverseDecl(), clang::Sema::UseArgumentDependentLookup(), clang::ASTDeclWriter::VisitDecl(), clang::ASTDeclWriter::VisitEnumDecl(), clang::ASTDeclWriter::VisitFieldDecl(), clang::ASTNodeImporter::VisitFieldDecl(), clang::ASTNodeImporter::VisitFunctionDecl(), clang::ASTDeclWriter::VisitObjCIvarDecl(), clang::ASTNodeImporter::VisitObjCMethodDecl(), clang::ASTDeclWriter::VisitParmVarDecl(), clang::ASTDeclWriter::VisitRecordDecl(), clang::ASTDeclWriter::VisitTypedefDecl(), and clang::ASTDeclWriter::VisitVarDecl().

bool Decl::isInAnonymousNamespace ( ) const

Definition at line 254 of file DeclBase.cpp.

References getDeclContext(), and clang::DeclContext::getParent().

Referenced by getLVForNamespaceScopeDecl().

bool clang::Decl::isInIdentifierNamespace ( unsigned  NS) const
inline
bool Decl::isInStdNamespace ( ) const
bool clang::Decl::isInvalidDecl ( ) const
inline

Definition at line 498 of file DeclBase.h.

Referenced by clang::Sema::ActOnAliasDeclaration(), clang::Sema::ActOnBlockArguments(), clang::Sema::ActOnCXXEnterDeclInitializer(), clang::Sema::ActOnCXXExitDeclInitializer(), clang::Sema::ActOnCXXForRangeStmt(), clang::Sema::ActOnCXXMemberDeclarator(), clang::Sema::ActOnCXXTryBlock(), clang::Sema::ActOnEndOfTranslationUnit(), clang::Sema::ActOnExplicitInstantiation(), clang::Sema::ActOnFields(), clang::Sema::ActOnFinishCXXMemberDecls(), clang::Sema::ActOnFinishDelayedCXXMethodDeclaration(), clang::Sema::ActOnFinishFunctionBody(), clang::Sema::ActOnForEachDeclStmt(), clang::Sema::ActOnFriendFunctionDecl(), clang::Sema::ActOnFunctionDeclarator(), clang::Sema::ActOnInitializerError(), clang::Sema::ActOnIvar(), clang::Sema::ActOnObjCAtCatchStmt(), clang::Sema::ActOnObjCForCollectionStmt(), clang::Sema::ActOnStartOfFunctionDef(), clang::Sema::ActOnStartOfLambdaDefinition(), clang::Sema::ActOnTag(), clang::Sema::ActOnTagFinishDefinition(), clang::Sema::ActOnTypedefNameDecl(), clang::Sema::ActOnVariableDeclarator(), clang::Sema::AddInitializerToDecl(), clang::Sema::AddKnownFunctionAttributes(), clang::Sema::BuildDeclarationNameExpr(), clang::Sema::BuildDeclaratorGroup(), BuildImplicitMemberInitializer(), clang::Sema::BuildMemberInitializer(), clang::Sema::BuildMemberReferenceExpr(), clang::Sema::BuildUsingShadowDecl(), clang::Sema::BuildVariableInstantiation(), clang::Sema::BuildVarTemplateInstantiation(), CastToDerivedClass(), checkARCPropertyDecl(), checkARCPropertyImpl(), CheckArityMismatch(), clang::Sema::CheckBaseSpecifier(), clang::Sema::CheckCompletedCXXClass(), clang::Sema::CheckCompleteVariableDeclaration(), clang::Sema::CheckConditionVariable(), CheckConstexprCtorInitializer(), CheckConstexprFunction(), clang::Sema::CheckConstructor(), clang::Sema::CheckCXXDefaultArguments(), clang::Sema::CheckFieldDecl(), clang::Sema::checkInitMethod(), clang::Sema::CheckMain(), clang::Sema::CheckMessageArgumentTypes(), checkMethodFamilyMismatch(), clang::Sema::CheckMSVCRTEntryPoint(), clang::Sema::CheckNontrivialField(), clang::Sema::CheckObjCPropertyAttributes(), clang::Sema::CheckOverrideControl(), clang::Sema::CheckParmsForFunctionDef(), clang::Sema::CheckPureMethod(), clang::Sema::CheckTemplateIdType(), clang::Sema::CheckVariableDeclaration(), clang::Sema::CheckVariableDeclarationType(), CollectFieldInitializer(), clang::Sema::ComputeDefaultedCopyAssignmentExceptionSpec(), clang::Sema::ComputeDefaultedCopyCtorExceptionSpec(), clang::Sema::ComputeDefaultedDefaultCtorExceptionSpec(), clang::Sema::ComputeDefaultedDtorExceptionSpec(), clang::Sema::ComputeDefaultedMoveAssignmentExceptionSpec(), clang::Sema::ComputeDefaultedMoveCtorExceptionSpec(), clang::Sema::ComputeInheritingCtorExceptionSpec(), clang::Sema::DeduceFunctionTypeFromReturnExpr(), clang::Sema::DeduceReturnType(), clang::Sema::DeduceTemplateArguments(), clang::Sema::DefaultSynthesizeProperties(), clang::Sema::DefineImplicitCopyAssignment(), clang::Sema::DefineImplicitDestructor(), clang::Sema::DefineImplicitMoveAssignment(), DelegatingCycleHelper(), clang::Sema::DiagnoseAbsenceOfOverrideControl(), clang::Sema::DiagnoseHiddenVirtualMethods(), DiagnoseReinterpretUpDownCast(), clang::Sema::DiagnoseUnimplementedProperties(), DiagnoseUninstantiableTemplate(), clang::Sema::FinalizeVarWithDestructor(), findCompleteObject(), clang::Sema::FindInstantiatedDecl(), clang::Sema::FinishTemplateArgumentDeduction(), clang::ASTContext::getASTRecordLayout(), clang::ASTContext::getCommentForDecl(), clang::ASTContext::getDeclAlign(), clang::LinkageComputer::getLVForDecl(), clang::Sema::getOwningModule(), clang::Sema::getUndefinedButUsed(), HandleClassZeroInitialization(), HandleConstructorCall(), clang::Sema::HandleDeclarator(), clang::Sema::HandleField(), HandleLValueBase(), HandleLValueDirectBase(), HandleLValueMember(), clang::Sema::HandleMSProperty(), clang::Sema::InstantiateClass(), clang::Sema::InstantiateClassTemplateSpecialization(), clang::Sema::InstantiateEnum(), clang::Sema::InstantiateFunctionDefinition(), clang::Sema::InstantiateMemInitializers(), clang::Sema::InstantiateVariableDefinition(), clang::Sema::IsDerivedFrom(), clang::FunctionDecl::isImplicitlyInstantiable(), IsInitializerListConstructorConversion(), isNonPlacementDeallocationFunction(), IsUserDefinedConversion(), LookupCopyAndMoveConstructors(), clang::Sema::LookupInObjCMethod(), clang::Sema::LookupLiteralOperator(), LookupMemberExpr(), clang::Sema::MarkBaseAndMemberDestructorsReferenced(), MatchesFriend(), clang::CXXRecordDecl::mayBeAbstract(), clang::Sema::MaybeBindToTemporary(), clang::Sema::MergeFunctionDecl(), clang::Sema::MergeTypedefNameDecl(), clang::Sema::MergeVarDecl(), clang::Sema::MergeVarDeclTypes(), clang::Sema::ParsedFreeStandingDeclSpec(), clang::Sema::PerformPendingInstantiations(), clang::Sema::PopParsingDeclaration(), clang::Sema::ProcessPropertyDecl(), clang::TreeTransform< Derived >::RebuildUnresolvedUsingType(), ResolveConstructorOverload(), clang::LookupResult::resolveKind(), clang::Sema::SetDeclDefaulted(), clang::Sema::SetIvarInitializers(), clang::Sema::ShouldDeleteSpecialMember(), ShouldDiagnoseUnusedDecl(), ShouldWarnAboutMissingPrototype(), clang::Sema::ShouldWarnIfUnusedFileScopedDecl(), clang::Sema::SubstDecl(), clang::TemplateDeclInstantiator::SubstTemplateParams(), clang::TreeTransform< Derived >::TransformNestedNameSpecifierLoc(), TryRefInitWithConversionFunction(), clang::ASTDeclWriter::VisitCXXMethodDecl(), clang::ASTDeclWriter::VisitDecl(), clang::ASTDeclWriter::VisitEnumDecl(), clang::ASTDeclWriter::VisitFieldDecl(), clang::ASTDeclWriter::VisitObjCIvarDecl(), clang::ASTDeclWriter::VisitParmVarDecl(), clang::ASTDeclWriter::VisitRecordDecl(), clang::ASTDeclWriter::VisitTypedefDecl(), and clang::ASTDeclWriter::VisitVarDecl().

bool clang::Decl::isLocalExternDecl ( )
inline

Determine whether this is a block-scope declaration with linkage. This will either be a local variable declaration declared 'extern', or a local function declaration.

Definition at line 908 of file DeclBase.h.

References IDNS_LocalExtern.

Referenced by clang::Sema::BuildUsingDeclaration(), clang::Sema::BuildVariableInstantiation(), checkDLLAttributeRedeclaration(), clang::Sema::HandleDeclarator(), clang::Sema::HandleDelayedAccessCheck(), clang::Sema::MergeCXXFunctionDecl(), clang::Sema::MergeFunctionDecl(), and clang::TemplateDeclInstantiator::VisitFunctionDecl().

bool clang::Decl::isModulePrivate ( ) const
inline
bool Decl::isOutOfLine ( ) const
virtual
bool Decl::isParameterPack ( ) const
bool Decl::isReferenced ( ) const
static bool clang::Decl::isTagIdentifierNamespace ( unsigned  NS)
inlinestatic

Definition at line 682 of file DeclBase.h.

References IDNS_Tag, IDNS_TagFriend, and IDNS_Type.

Referenced by hasTagIdentifierNamespace().

bool Decl::isTemplateDecl ( ) const

returns true if this declaration is a template

Definition at line 180 of file DeclBase.cpp.

bool clang::Decl::isTemplateParameter ( ) const
inline
bool Decl::isTemplateParameterPack ( ) const
bool clang::Decl::isThisDeclarationReferenced ( ) const
inline

Whether this declaration was referenced. This should not be relied upon for anything other than debugging.

Definition at line 530 of file DeclBase.h.

bool clang::Decl::isTopLevelDeclInObjCContainer ( ) const
inline

Whether this declaration is a top-level declaration (function, global variable, etc.) that is lexically inside an objc container definition.

Definition at line 537 of file DeclBase.h.

References NextInContextAndBits, and TopLevelDeclInObjCContainerFlag.

Referenced by clang::ASTDeclWriter::VisitCXXMethodDecl(), clang::ASTDeclWriter::VisitDecl(), clang::ASTDeclWriter::VisitEnumDecl(), clang::ASTDeclWriter::VisitFieldDecl(), clang::ASTDeclWriter::VisitRecordDecl(), clang::ASTDeclWriter::VisitTypedefDecl(), and clang::ASTDeclWriter::VisitVarDecl().

bool clang::Decl::isUnavailable ( std::string *  Message = nullptr) const
inline

Determine whether this declaration is marked 'unavailable'.

Parameters
MessageIf non-NULL and the declaration is unavailable, this will be set to the message describing why the declaration was made unavailable (which may be empty).

Definition at line 602 of file DeclBase.h.

References clang::AR_Unavailable, and getAvailability().

Referenced by clang::Sema::ActOnFinishFunctionBody(), clang::Sema::addMethodToGlobalList(), isDeclUnavailable(), and clang::Sema::isFunctionConsideredUnavailable().

bool Decl::isUsed ( bool  CheckUsedAttr = true) const
bool Decl::isWeakImported ( ) const

Determine whether this is a weak-imported symbol.

Weak-imported symbols are typically marked with the 'weak_import' attribute, but may also be marked with an 'availability' attribute where we're targing a platform prior to the introduction of this feature.

Definition at line 515 of file DeclBase.cpp.

References clang::AR_NotYetIntroduced, attrs(), canBeWeakImported(), CheckAvailability(), and getASTContext().

Referenced by clang::ValueDecl::isWeak(), and setLinkageAndVisibilityForGV().

void Decl::markUsed ( ASTContext C)
void * Decl::operator new ( std::size_t  Size,
const ASTContext Ctx,
unsigned  ID,
std::size_t  Extra = 0 
)
protected

Allocate memory for a deserialized declaration.

This routine must be used to allocate memory for any declaration that is deserialized from a module file.

Parameters
SizeThe size of the allocated object.
CtxThe context in which we will allocate memory.
IDThe global ID of the deserialized declaration.
ExtraThe amount of extra space to allocate after the object.

Definition at line 48 of file DeclBase.cpp.

References clang::ASTContext::Allocate(), Context, and clang::Result.

void * Decl::operator new ( std::size_t  Size,
const ASTContext Ctx,
DeclContext Parent,
std::size_t  Extra = 0 
)
protected

Allocate memory for a non-deserialized declaration.

Definition at line 66 of file DeclBase.cpp.

void Decl::print ( raw_ostream &  Out,
unsigned  Indentation = 0,
bool  PrintInstantiation = false 
) const
void Decl::print ( raw_ostream &  Out,
const PrintingPolicy Policy,
unsigned  Indentation = 0,
bool  PrintInstantiation = false 
) const

Definition at line 108 of file DeclPrinter.cpp.

void Decl::printGroup ( Decl **  Begin,
unsigned  NumDecls,
raw_ostream &  Out,
const PrintingPolicy Policy,
unsigned  Indentation = 0 
)
static
void Decl::PrintStats ( )
static

Definition at line 121 of file DeclBase.cpp.

Referenced by clang::ParseAST().

redecl_range clang::Decl::redecls ( ) const
inline

Returns an iterator range for all the redeclarations of the same decl. It will iterate at least once (when this decl is the only one).

Definition at line 803 of file DeclBase.h.

References redecls_begin(), and redecls_end().

Referenced by compareDeclarations(), clang::NamedDecl::declarationReplaces(), clang::Sema::DiagnoseOwningPropertyGetterSynthesis(), findAcceptableDecl(), clang::LinkageComputer::getLVForDecl(), clang::ASTContext::getRawCommentForAnyRedecl(), and isReferenced().

redecl_iterator clang::Decl::redecls_begin ( ) const
inline

Definition at line 807 of file DeclBase.h.

Referenced by redecls().

redecl_iterator clang::Decl::redecls_end ( ) const
inline

Definition at line 810 of file DeclBase.h.

Referenced by redecls().

void clang::Decl::setAccess ( AccessSpecifier  AS)
inline

Definition at line 411 of file DeclBase.h.

References Access.

Referenced by clang::Sema::ActOnAliasDeclaration(), clang::Sema::ActOnClassTemplateSpecialization(), clang::Sema::ActOnCXXMemberDeclarator(), clang::Sema::ActOnEnumConstant(), clang::Sema::ActOnFriendFunctionDecl(), clang::Sema::ActOnFriendTypeDecl(), clang::Sema::ActOnFunctionDeclarator(), clang::Sema::ActOnNonTypeTemplateParameter(), clang::Sema::ActOnStartCXXMemberDeclarations(), clang::Sema::ActOnTag(), clang::Sema::ActOnTemplatedFriendTag(), clang::Sema::ActOnTemplateTemplateParameter(), clang::Sema::ActOnTypeParameter(), clang::Sema::ActOnVarTemplateSpecialization(), addAsFieldToClosureType(), addBlockPointerConversion(), addFieldToRecordDecl(), addFunctionPointerConversion(), clang::Sema::BuildAnonymousStructOrUnion(), clang::Sema::buildInitCaptureField(), clang::Sema::BuildUsingDeclaration(), clang::Sema::BuildUsingShadowDecl(), clang::Sema::BuildVariableInstantiation(), captureInCapturedRegion(), captureThis(), clang::Sema::CheckClassTemplate(), clang::Sema::CheckFieldDecl(), clang::Sema::CheckFunctionDeclaration(), clang::Sema::CheckOMPThreadPrivateDecl(), CreateAAPCSABIBuiltinVaListDecl(), CreateAArch64ABIBuiltinVaListDecl(), CreatePowerABIBuiltinVaListDecl(), CreateSystemZBuiltinVaListDecl(), CreateX86_64ABIBuiltinVaListDecl(), clang::Sema::DeclareImplicitCopyAssignment(), clang::Sema::DeclareImplicitCopyConstructor(), clang::Sema::DeclareImplicitDefaultConstructor(), clang::Sema::DeclareImplicitDestructor(), clang::Sema::DeclareImplicitMoveAssignment(), clang::Sema::DeclareImplicitMoveConstructor(), clang::CodeGen::CodeGenModule::GetAddrOfConstantString(), clang::ASTContext::getBlockDescriptorExtendedType(), clang::ASTContext::getBlockDescriptorType(), clang::ASTContext::getCFConstantStringType(), clang::CodeGen::CodeGenModule::getObjCFastEnumerationStateType(), clang::Sema::HandleMSProperty(), clang::TemplateDeclInstantiator::InitMethodInstantiation(), InjectAnonymousStructOrUnionMembers(), clang::TemplateDeclInstantiator::InstantiateEnumDefinition(), clang::Sema::MergeVarDecl(), clang::UnresolvedSetImpl::setAccess(), setInvalidDecl(), clang::Sema::SetMemberAccessSpecifier(), clang::Sema::startLambdaDefinition(), clang::ASTNodeImporter::VisitClassTemplateDecl(), clang::TemplateDeclInstantiator::VisitCXXMethodDecl(), clang::ASTDeclReader::VisitDecl(), clang::ASTNodeImporter::VisitEnumConstantDecl(), clang::ASTNodeImporter::VisitEnumDecl(), clang::ASTNodeImporter::VisitFieldDecl(), clang::ASTNodeImporter::VisitFunctionDecl(), clang::ASTNodeImporter::VisitIndirectFieldDecl(), clang::ASTNodeImporter::VisitRecordDecl(), clang::ASTNodeImporter::VisitTypedefNameDecl(), clang::ASTNodeImporter::VisitVarDecl(), and clang::ASTNodeImporter::VisitVarTemplateDecl().

void clang::Decl::setAttrs ( const AttrVec Attrs)
inline

Definition at line 428 of file DeclBase.h.

References getASTContext().

Referenced by addAttr(), clang::Sema::mergeDeclAttributes(), and mergeParamDeclAttributes().

void clang::Decl::setCachedLinkage ( Linkage  L) const
inlineprotected
void Decl::setDeclContext ( DeclContext DC)
void clang::Decl::setImplicit ( bool  I = true)
inline
void Decl::setInvalidDecl ( bool  Invalid = true)

setInvalidDecl - Indicates the Decl had a semantic error. This allows for graceful error recovery.

Definition at line 96 of file DeclBase.cpp.

References clang::AS_public, and setAccess().

Referenced by clang::Sema::ActOnAliasDeclaration(), clang::Sema::ActOnAtEnd(), clang::Sema::ActOnBaseSpecifier(), clang::Sema::ActOnCapScopeReturnStmt(), clang::Sema::ActOnCapturedRegionError(), clang::Sema::ActOnClassTemplateSpecialization(), clang::Sema::ActOnCXXForRangeDecl(), clang::Sema::ActOnCXXForRangeStmt(), clang::Sema::ActOnCXXMemberDeclarator(), clang::Sema::ActOnEndOfTranslationUnit(), clang::Sema::ActOnExceptionDeclarator(), clang::Sema::ActOnFields(), clang::Sema::ActOnFinishCXXInClassMemberInitializer(), clang::Sema::ActOnFinishFunctionBody(), clang::Sema::ActOnForEachDeclStmt(), clang::Sema::ActOnFriendFunctionDecl(), clang::Sema::ActOnFunctionDeclarator(), clang::Sema::ActOnInitializerError(), clang::Sema::ActOnIvar(), clang::Sema::ActOnLambdaError(), clang::Sema::ActOnMethodDeclaration(), clang::Sema::ActOnNonTypeTemplateParameter(), clang::Sema::ActOnObjCExceptionDecl(), clang::Sema::ActOnObjCForCollectionStmt(), clang::Sema::ActOnParamDeclarator(), clang::Sema::ActOnParamDefaultArgument(), clang::Sema::ActOnParamDefaultArgumentError(), clang::Sema::ActOnPropertyImplDecl(), clang::Sema::ActOnStartCategoryImplementation(), clang::Sema::ActOnStartCategoryInterface(), clang::Sema::ActOnStartClassImplementation(), clang::Sema::ActOnStartClassInterface(), clang::Sema::ActOnStartNamespaceDef(), clang::Sema::ActOnStartOfFunctionDef(), clang::Sema::ActOnTag(), clang::Sema::ActOnTagDefinitionError(), clang::Sema::ActOnTemplateTemplateParameter(), clang::Sema::ActOnTypeParameter(), clang::Sema::ActOnVariableDeclarator(), clang::Sema::AddInitializerToDecl(), clang::Sema::BuildAnonymousStructOrUnion(), clang::Sema::BuildDeclaratorGroup(), clang::Sema::BuildExceptionDeclaration(), clang::Sema::BuildMicrosoftCAnonymousStruct(), clang::Sema::BuildObjCExceptionDecl(), clang::Sema::BuildReturnStmt(), clang::Sema::BuildUsingDeclaration(), clang::Sema::BuildUsingShadowDecl(), checkAttributesAfterMerging(), clang::Sema::CheckBaseSpecifier(), clang::Sema::CheckClassTemplate(), clang::Sema::CheckConstructor(), checkDLLAttributeRedeclaration(), clang::Sema::CheckExplicitlyDefaultedSpecialMember(), clang::Sema::CheckFieldDecl(), clang::Sema::CheckForFunctionRedefinition(), clang::Sema::CheckFunctionDeclaration(), clang::Sema::CheckInheritingConstructorUsingDecl(), clang::Sema::checkInitMethod(), clang::Sema::CheckMain(), clang::Sema::CheckMSVCRTEntryPoint(), checkNewAttributesAfterDef(), clang::Sema::CheckObjCDeclScope(), clang::Sema::CheckObjCPropertyAttributes(), clang::Sema::CheckOverrideControl(), clang::Sema::CheckParameter(), clang::Sema::CheckParmsForFunctionDef(), clang::Sema::CheckTypedefForVariablyModifiedType(), clang::Sema::CheckVariableDeclarationType(), clang::Sema::CheckVarTemplateId(), CreateNewFunctionDecl(), clang::Sema::DefineImplicitCopyAssignment(), clang::Sema::DefineImplicitCopyConstructor(), clang::Sema::DefineImplicitDefaultConstructor(), clang::Sema::DefineImplicitDestructor(), clang::Sema::DefineImplicitLambdaToBlockPointerConversion(), clang::Sema::DefineImplicitMoveAssignment(), clang::Sema::DefineImplicitMoveConstructor(), clang::Sema::DefineInheritingConstructor(), DiagnoseInvalidRedeclaration(), DiagnoseUninstantiableTemplate(), clang::Sema::FinalizeDeclaration(), FinishForRangeVarDecl(), clang::Sema::FinishTemplateArgumentDeduction(), GetFullTypeForDeclarator(), clang::Sema::HandleField(), clang::Sema::HandleMSProperty(), clang::Sema::InstantiateClass(), clang::Sema::InstantiateClassTemplateSpecialization(), clang::TemplateDeclInstantiator::InstantiateEnumDefinition(), clang::Sema::InstantiateFunctionDefinition(), clang::Sema::InstantiateInClassInitializer(), clang::Sema::InstantiateMemInitializers(), clang::TemplateDeclInstantiator::InstantiateTypedefNameDecl(), clang::Sema::InstantiateVariableDefinition(), clang::Sema::InstantiateVariableInitializer(), clang::Sema::isIncompatibleTypedef(), clang::Sema::MergeTypedefNameDecl(), clang::Sema::MergeVarDecl(), clang::Sema::MergeVarDeclExceptionSpecs(), clang::Sema::MergeVarDeclTypes(), clang::Sema::ParseTypedefDecl(), clang::Sema::ProcessDeclAttributeList(), clang::Sema::SetCtorInitializers(), clang::Sema::SetDeclDeleted(), clang::Sema::SetParamDefaultArgument(), clang::Sema::SubstBaseSpecifiers(), clang::ASTDeclReader::VisitDecl(), and clang::TemplateDeclInstantiator::VisitFunctionDecl().

void clang::Decl::setIsUsed ( )
inline

Set whether the declaration is used, in the sense of odr-use.

This should only be used immediately after creating a declaration.

Definition at line 517 of file DeclBase.h.

References Used.

Referenced by clang::Sema::BuildVariableInstantiation(), clang::Sema::MergeCompatibleFunctionDecls(), clang::Sema::MergeVarDecl(), clang::ASTNodeImporter::VisitParmVarDecl(), and clang::ASTNodeImporter::VisitVarDecl().

void Decl::setLexicalDeclContext ( DeclContext DC)

Definition at line 230 of file DeclBase.cpp.

References getASTContext(), getDeclContext(), getLexicalDeclContext(), and Hidden.

Referenced by clang::Sema::ActOnClassTemplateSpecialization(), clang::Sema::ActOnExplicitInstantiation(), clang::Sema::ActOnFields(), clang::Sema::ActOnFunctionDeclarator(), clang::Sema::ActOnProperty(), clang::Sema::ActOnStartOfFunctionDef(), clang::Sema::ActOnTag(), clang::Sema::ActOnVariableDeclarator(), clang::Sema::ActOnVarTemplateSpecialization(), clang::ObjCImplDecl::addClassMethod(), clang::ObjCImplDecl::addInstanceMethod(), clang::Sema::BuildLambdaExpr(), clang::Sema::BuildVariableInstantiation(), clang::Sema::CheckClassTemplate(), clang::Sema::CheckImplementationIvars(), clang::Sema::CheckTemplateIdType(), clang::Sema::DeclApplyPragmaWeak(), clang::Sema::ProcessPropertyDecl(), clang::Sema::startLambdaDefinition(), clang::ASTNodeImporter::VisitClassTemplateDecl(), clang::ASTNodeImporter::VisitClassTemplateSpecializationDecl(), clang::TemplateDeclInstantiator::VisitCXXMethodDecl(), clang::ASTNodeImporter::VisitEnumConstantDecl(), clang::ASTNodeImporter::VisitEnumDecl(), clang::ASTNodeImporter::VisitFieldDecl(), clang::ASTNodeImporter::VisitFunctionDecl(), clang::TemplateDeclInstantiator::VisitFunctionDecl(), clang::ASTNodeImporter::VisitIndirectFieldDecl(), clang::ASTNodeImporter::VisitLinkageSpecDecl(), clang::ASTNodeImporter::VisitNamespaceDecl(), clang::ASTNodeImporter::VisitObjCCategoryDecl(), clang::ASTNodeImporter::VisitObjCCategoryImplDecl(), clang::ASTNodeImporter::VisitObjCImplementationDecl(), clang::ASTNodeImporter::VisitObjCInterfaceDecl(), clang::ASTNodeImporter::VisitObjCIvarDecl(), clang::ASTNodeImporter::VisitObjCMethodDecl(), clang::ASTNodeImporter::VisitObjCPropertyDecl(), clang::ASTNodeImporter::VisitObjCPropertyImplDecl(), clang::ASTNodeImporter::VisitObjCProtocolDecl(), clang::ASTNodeImporter::VisitObjCTypeParamDecl(), clang::ASTNodeImporter::VisitRecordDecl(), clang::ASTNodeImporter::VisitVarDecl(), clang::ASTNodeImporter::VisitVarTemplateDecl(), and clang::ASTNodeImporter::VisitVarTemplateSpecializationDecl().

void clang::Decl::setLocalExternDecl ( )
inline

Changes the namespace of this declaration to reflect that it's a function-local extern declaration.

These declarations appear in the lexical context of the extern declaration, but in the semantic context of the enclosing namespace scope.

Definition at line 892 of file DeclBase.h.

References getIdentifierNamespace(), getPreviousDecl(), IDNS_LocalExtern, IDNS_Ordinary, and IDNS_OrdinaryFriend.

Referenced by clang::Sema::ActOnFunctionDeclarator(), clang::Sema::ActOnVariableDeclarator(), clang::Sema::BuildVariableInstantiation(), clang::TemplateDeclInstantiator::VisitFunctionDecl(), and clang::ASTDeclReader::VisitVarDeclImpl().

void clang::Decl::setLocalOwningModule ( Module M)
inline

Definition at line 665 of file DeclBase.h.

References hasLocalOwningModuleStorage(), Hidden, and isFromASTFile().

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

void clang::Decl::setLocation ( SourceLocation  L)
inline
void clang::Decl::setModulePrivate ( bool  MP = true)
inlineprotected
void clang::Decl::setNonMemberOperator ( )
inline

Specifies that this declaration is a C++ overloaded non-member.

Definition at line 967 of file DeclBase.h.

References getKind(), IDNS_NonMemberOperator, and IDNS_Ordinary.

Referenced by clang::Sema::ActOnFunctionDeclarator(), and clang::TemplateDeclInstantiator::VisitFunctionDecl().

void clang::Decl::setObjectOfFriendDecl ( bool  PerformFriendInjection = false)
inline

Changes the namespace of this declaration to reflect that it's the object of a friend declaration.

These declarations appear in the lexical context of the friending class, but in the semantic context of the actual entity. This property applies only to a specific decl object; other redeclarations of the same entity may not (and probably don't) share this property.

Definition at line 919 of file DeclBase.h.

References getIdentifierNamespace(), getPreviousDecl(), IDNS_LocalExtern, IDNS_Ordinary, IDNS_OrdinaryFriend, IDNS_Tag, IDNS_TagFriend, and IDNS_Type.

Referenced by clang::Sema::ActOnFunctionDeclarator(), clang::Sema::ActOnTag(), clang::Sema::CheckClassTemplate(), clang::TemplateDeclInstantiator::VisitCXXMethodDecl(), and clang::TemplateDeclInstantiator::VisitFunctionDecl().

void clang::Decl::setOwningModuleID ( unsigned  ID)
inlineprotected

Set the owning module ID.

Definition at line 569 of file DeclBase.h.

References isFromASTFile().

Referenced by clang::ASTDeclReader::VisitDecl().

void clang::Decl::setReferenced ( bool  R = true)
inline
void clang::Decl::setTopLevelDeclInObjCContainer ( bool  V = true)
inline
template<typename T >
specific_attr_iterator<T> clang::Decl::specific_attr_begin ( ) const
inline

Definition at line 476 of file DeclBase.h.

References attr_begin().

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

template<typename T >
specific_attr_iterator<T> clang::Decl::specific_attr_end ( ) const
inline

Definition at line 480 of file DeclBase.h.

References attr_end().

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

template<typename T >
llvm::iterator_range<specific_attr_iterator<T> > clang::Decl::specific_attrs ( ) const
inline
void Decl::updateOutOfDate ( IdentifierInfo II) const
protected

Friends And Related Function Documentation

friend class ASTDeclReader
friend

Definition at line 294 of file DeclBase.h.

friend class ASTDeclWriter
friend

Definition at line 293 of file DeclBase.h.

friend class ASTReader
friend

Definition at line 295 of file DeclBase.h.

friend class CXXClassMemberWrapper
friend

Definition at line 276 of file DeclBase.h.

friend class DeclContext
friend

Definition at line 211 of file DeclBase.h.

friend class LinkageComputer
friend

Definition at line 296 of file DeclBase.h.

template<typename decl_type >
friend class Redeclarable
friend

Definition at line 298 of file DeclBase.h.

Member Data Documentation

unsigned clang::Decl::Access
protected

Access - Used by C++ decls for the access specifier.

Definition at line 275 of file DeclBase.h.

Referenced by getAccess(), getAccessUnsafe(), and setAccess().

unsigned clang::Decl::CacheValidAndLinkage
mutableprotected

If 0, we have not computed the linkage of this declaration. Otherwise, it is the linkage + 1.

Definition at line 291 of file DeclBase.h.

Referenced by getCachedLinkage(), hasCachedLinkage(), and setCachedLinkage().

unsigned clang::Decl::FromASTFile
protected

Whether this declaration was loaded from an AST file.

Definition at line 279 of file DeclBase.h.

Referenced by isFromASTFile(), and clang::ASTDeclReader::VisitDecl().

unsigned clang::Decl::Hidden
protected

Whether this declaration is hidden from normal name lookup, e.g., because it is was loaded from an AST file is either module-private or because its submodule has not been made visible.

Definition at line 284 of file DeclBase.h.

Referenced by getLocalOwningModule(), clang::NamedDecl::isHidden(), clang::ASTDeclReader::mergeDefinitionVisibility(), clang::NamedDecl::setHidden(), setLexicalDeclContext(), setLocalOwningModule(), and clang::ASTDeclReader::VisitDecl().

IdentifierNamespace - This specifies what IDNS_* namespace this lives in.

Definition at line 287 of file DeclBase.h.

llvm::PointerIntPair<Decl *, 2, unsigned> clang::Decl::NextInContextAndBits
protected

The next declaration within the same lexical DeclContext. These pointers form the linked list that is traversed via DeclContext's decls_begin()/decls_end().

The extra two bits are used for the TopLevelDeclInObjCContainer and ModulePrivate bits.

Definition at line 208 of file DeclBase.h.

Referenced by clang::DeclContext::addHiddenDecl(), clang::DeclContext::BuildDeclChain(), clang::DeclContext::containsDecl(), getNextDeclInContext(), clang::DeclContext::isDeclInLexicalTraversal(), isModulePrivate(), isTopLevelDeclInObjCContainer(), clang::DeclContext::removeDecl(), setModulePrivate(), and setTopLevelDeclInObjCContainer().


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