clang
3.9.0
|
NamedDecl - This represents a decl with a name. More...
#include <Decl.h>
Public Types | |
enum | ExplicitVisibilityKind { VisibilityForType, VisibilityForValue } |
Kinds of explicit visibility. More... | |
Public Member Functions | |
IdentifierInfo * | getIdentifier () const |
getIdentifier - Get the identifier that names this declaration, if there is one. More... | |
StringRef | getName () const |
getName - Get the name of identifier for this declaration as a StringRef. More... | |
std::string | getNameAsString () const |
getNameAsString - Get a human-readable name for the declaration, even if it is one of the special kinds of names (C++ constructor, Objective-C selector, etc). More... | |
void | printName (raw_ostream &os) const |
DeclarationName | getDeclName () const |
getDeclName - Get the actual, stored name of the declaration, which may be a special name. More... | |
void | setDeclName (DeclarationName N) |
Set the name of this declaration. More... | |
void | printQualifiedName (raw_ostream &OS) const |
printQualifiedName - Returns human-readable qualified name for declaration, like A::B::i, for i being member of namespace A::B. More... | |
void | printQualifiedName (raw_ostream &OS, const PrintingPolicy &Policy) const |
std::string | getQualifiedNameAsString () const |
virtual void | getNameForDiagnostic (raw_ostream &OS, const PrintingPolicy &Policy, bool Qualified) const |
getNameForDiagnostic - Appends a human-readable name for this declaration into the given stream. More... | |
bool | declarationReplaces (NamedDecl *OldD, bool IsKnownNewer=true) const |
Determine whether this declaration, if known to be well-formed within its context, will replace the declaration OldD if introduced into scope. More... | |
bool | hasLinkage () const |
Determine whether this declaration has linkage. More... | |
bool | isHidden () const |
Determine whether this declaration is hidden from name lookup. More... | |
void | setHidden (bool Hide) |
Set whether this declaration is hidden from name lookup. More... | |
bool | isCXXClassMember () const |
Determine whether this declaration is a C++ class member. More... | |
bool | isCXXInstanceMember () const |
Determine whether the given declaration is an instance member of a C++ class. More... | |
Linkage | getLinkageInternal () const |
Determine what kind of linkage this entity has. More... | |
Linkage | getFormalLinkage () const |
Get the linkage from a semantic point of view. More... | |
bool | hasExternalFormalLinkage () const |
True if this decl has external linkage. More... | |
bool | isExternallyVisible () const |
Visibility | getVisibility () const |
Determines the visibility of this entity. More... | |
LinkageInfo | getLinkageAndVisibility () const |
Determines the linkage and visibility of this entity. More... | |
Optional< Visibility > | getExplicitVisibility (ExplicitVisibilityKind kind) const |
If visibility was explicitly specified for this declaration, return that visibility. More... | |
bool | isLinkageValid () const |
True if the computed linkage is valid. More... | |
bool | hasLinkageBeenComputed () const |
True if something has required us to compute the linkage of this declaration. More... | |
NamedDecl * | getUnderlyingDecl () |
Looks through UsingDecls and ObjCCompatibleAliasDecls for the underlying named decl. More... | |
const NamedDecl * | getUnderlyingDecl () const |
NamedDecl * | getMostRecentDecl () |
const NamedDecl * | getMostRecentDecl () const |
ObjCStringFormatFamily | getObjCFStringFormattingFamily () const |
Static Public Member Functions | |
static bool | classof (const Decl *D) |
static bool | classofKind (Kind K) |
Protected Member Functions | |
NamedDecl (Kind DK, DeclContext *DC, SourceLocation L, DeclarationName N) | |
NamedDecl - This represents a decl with a name.
Many decls have names such as ObjCMethodDecl, but not @class, etc.
|
inlineprotected |
Definition at line 410 of file Decl.h.
References classofKind().
Determine whether this declaration, if known to be well-formed within its context, will replace the declaration OldD if introduced into scope.
A declaration will replace another declaration if, for example, it is a redeclaration of the same variable or function, but not if it is a declaration of a different kind (function vs. class) or an overloaded function.
IsKnownNewer | true if this declaration is known to be newer than OldD (for instance, if this declaration is newly-created). |
Definition at line 1514 of file Decl.cpp.
References Context, getCanonicalDecl(), clang::ASTContext::getCanonicalNestedNameSpecifier(), getDeclName(), getKind(), and isRedeclarable().
Referenced by clang::StoredDeclsList::HandleRedeclaration(), and clang::Sema::PushOnScopeChains().
|
inline |
getDeclName - Get the actual, stored name of the declaration, which may be a special name.
Definition at line 258 of file Decl.h.
Referenced by clang::Sema::ActOnAtEnd(), clang::Sema::ActOnClassTemplateSpecialization(), clang::Sema::ActOnCXXForRangeDecl(), clang::Sema::ActOnCXXMemberDeclarator(), clang::Sema::ActOnDelayedCXXMethodParameter(), clang::Sema::ActOnEndOfTranslationUnit(), clang::Sema::ActOnExplicitInstantiation(), clang::Sema::ActOnFields(), clang::Sema::ActOnFunctionDeclarator(), clang::Sema::ActOnLabelStmt(), clang::Sema::ActOnMethodDeclaration(), clang::Sema::ActOnObjCForCollectionStmt(), clang::Sema::actOnObjCTypeArgsOrProtocolQualifiers(), clang::Sema::ActOnParamDeclarator(), clang::Sema::ActOnPopScope(), clang::Sema::ActOnPropertyImplDecl(), clang::Sema::ActOnReenterCXXMethodParameter(), clang::Sema::ActOnStartCategoryImplementation(), clang::Sema::ActOnStartClassImplementation(), clang::Sema::ActOnStartClassInterface(), clang::Sema::ActOnSuperClassOfClassInterface(), clang::Sema::ActOnSuperMessage(), clang::Sema::ActOnTag(), clang::Sema::ActOnVariableDeclarator(), clang::Sema::ActOnVarTemplateSpecialization(), addAssociatedClassesAndNamespaces(), clang::TypoCorrection::addCorrectionDecl(), clang::IdentifierResolver::AddDecl(), clang::Sema::AddInitializerToDecl(), addInstantiatedParametersToScope(), AddTypedNameChunk(), applyObjCTypeArgs(), clang::Sema::BuildAnonymousStructUnionMemberReference(), clang::Sema::BuildBuiltinOffsetOf(), clang::Sema::BuildCallToMemberFunction(), clang::Sema::BuildClassMessage(), clang::Sema::BuildCXXDefaultInitExpr(), clang::Sema::BuildDeclaratorGroup(), clang::Sema::BuildDeclRefExpr(), BuildImplicitMemberInitializer(), clang::Sema::BuildInstanceMessage(), clang::Sema::BuildReturnStmt(), clang::Sema::BuildUsingDeclaration(), clang::Sema::BuildVariableInstantiation(), CalculateHiddenNames(), captureInBlock(), captureInLambda(), clang::Sema::CheckAddressOfOperand(), checkARCPropertyImpl(), CheckArityMismatch(), checkAtomicPropertyMismatch(), clang::Sema::CheckBaseSpecifier(), clang::Sema::CheckCallReturnType(), clang::Sema::CheckCompletedCXXClass(), CheckDeclInExpr(), clang::Sema::CheckEquivalentExceptionSpec(), clang::Sema::CheckFieldDecl(), clang::Sema::CheckForFunctionRedefinition(), clang::Sema::CheckFunctionDeclaration(), clang::Sema::CheckFunctionTemplateSpecialization(), clang::Sema::CheckIfOverriddenFunctionIsMarkedFinal(), clang::Sema::CheckImplicitSpecialMemberDeclaration(), checkIsValidOpenCLKernelParameter(), clang::Sema::CheckLiteralOperatorDeclaration(), CheckMethodOverrideParam(), CheckMethodOverrideReturn(), checkNewAttributesAfterDef(), clang::Sema::CheckNontrivialField(), CheckOperatorNewDeclaration(), CheckOperatorNewDeleteDeclarationScope(), CheckOperatorNewDeleteTypes(), clang::Sema::CheckOverloadedOperatorDeclaration(), clang::Sema::CheckOverrideControl(), clang::Sema::CheckOverridingFunctionAttributes(), clang::Sema::CheckOverridingFunctionReturnType(), CheckPoppedLabel(), CheckPropertyAgainstProtocol(), checkPropertyDeclWithOwnership(), clang::Sema::CheckPureMethod(), CheckReturnStackAddr(), clang::Sema::CheckShadow(), clang::CodeGen::CodeGenFunction::checkTargetFeatures(), checkTypeParamListConsistency(), clang::Sema::CompleteVarTemplateSpecializationDecl(), clang::ASTReader::completeVisibleDeclsMap(), computeDeclRefDependence(), clang::CodeGen::CodeGenTypes::ComputeRecordLayout(), clang::Sema::ConvertArgumentsForCall(), clang::DeclRefExpr::Create(), declarationReplaces(), clang::Sema::DefineImplicitCopyAssignment(), clang::Sema::DefineImplicitMoveAssignment(), clang::Sema::DiagnoseAbsenceOfOverrideControl(), clang::Sema::DiagnoseAbstractType(), DiagnoseArityMismatch(), clang::Sema::DiagnoseAutoDeductionFailure(), DiagnoseBadAccess(), DiagnoseBadDeduction(), DiagnoseBaseOrMemInitializerOrder(), clang::Sema::DiagnoseClassNameShadow(), DiagnoseCStringFormatDirectiveInCFAPI(), DiagnoseCStringFormatDirectiveInObjCAPI(), DiagnoseDirectIsaAccess(), DiagnoseInvalidRedeclaration(), DiagnoseObjCImplementedDeprecations(), clang::Sema::DiagnoseOwningPropertyGetterSynthesis(), clang::Sema::DiagnosePropertyMismatch(), clang::Sema::DiagnoseSentinelCalls(), clang::Sema::DiagnoseSizeOfParametersAndReturnValue(), DiagnoseUnimplementedAccessor(), DiagnoseUninitializedUse(), clang::Sema::DiagnoseUnusedDecl(), DiagnoseUnusedOfDecl(), clang::Sema::DiagnoseUseOfDecl(), diagnoseVarDeclTypeMismatch(), DiagUninitUse(), DoEmitAvailabilityWarning(), clang::ento::FunctionCodeRegion::dumpToStream(), clang::Sema::FinalizeVarWithDestructor(), clang::ASTReader::FindExternalVisibleDeclsByName(), clang::Sema::FindHiddenVirtualMethods(), clang::Sema::findInheritingConstructor(), clang::Sema::FindInstantiatedDecl(), clang::CXXMethodDecl::getCorrespondingMethodInClass(), clang::FunctionDecl::getLiteralIdentifier(), clang::MemberExpr::getMemberNameInfo(), clang::InitializedEntity::getName(), clang::ASTContext::getNameForTemplate(), clang::FunctionDecl::getNameInfo(), clang::UsingDecl::getNameInfo(), clang::UnresolvedUsingValueDecl::getNameInfo(), getOrderedName(), clang::FunctionDecl::getOverloadedOperator(), clang::ObjCMethodDecl::getSelector(), clang::DeclaratorDecl::getSourceRange(), clang::Sema::HandleDeclarator(), clang::Sema::HandlePropertyInClassExtension(), hasDefaultGetterName(), hasDefaultSetterName(), clang::hasImplicitExceptionSpec(), clang::TagDecl::hasNameForLinkage(), hasWrittenStorageAttribute(), HelperToDiagnoseMismatchedMethodsInGlobalPool(), clang::Sema::HideUsingShadowDecl(), clang::ASTNodeImporter::ImportDeclParts(), clang::ASTNodeImporter::ImportDefinition(), clang::IdentifierResolver::iterator::incrementSlowCase(), clang::ASTReader::InitializeSema(), InjectAnonymousStructOrUnionMembers(), clang::IdentifierResolver::InsertDeclAfter(), clang::Sema::InstantiateFunctionDefinition(), clang::Sema::InstantiateMemInitializers(), clang::TemplateDeclInstantiator::InstantiateTypedefNameDecl(), clang::Sema::InstantiateVariableDefinition(), clang::TemplateDeclInstantiator::InstantiateVarTemplatePartialSpecialization(), clang::FieldDecl::isAnonymousStructOrUnion(), isCXXSharedPtrDtor(), clang::RecordDecl::isInjectedClassName(), isInstantiationOf(), clang::FunctionDecl::isReplaceableGlobalAllocationFunction(), clang::FunctionDecl::isReservedGlobalPlacementOperator(), isSameEntity(), clang::CXXMethodDecl::isStatic(), IsStructurallyEquivalent(), clang::FieldDecl::isUnnamedBitfield(), clang::CXXMethodDecl::isUsualDeallocationFunction(), isVariableCapturable(), clang::Sema::LookupInObjCMethod(), LookupMemberExpr(), clang::Sema::MarkBaseAndMemberDestructorsReferenced(), MatchesFriend(), clang::MemberExpr::MemberExpr(), clang::Sema::MergeCXXFunctionDecl(), clang::Sema::MergeFunctionDecl(), clang::Sema::MergeTypedefNameDecl(), clang::Sema::MergeVarDecl(), MightInstantiateTo(), clang::serialization::needsAnonymousDeclarationNumber(), clang::Sema::ParsedFreeStandingDeclSpec(), clang::Sema::ParseTypedefDecl(), clang::InitializationSequence::Perform(), clang::TemplateArgument::print(), printQualifiedName(), clang::Sema::ProcessPropertyDecl(), clang::Sema::PushOnScopeChains(), clang::TreeTransform< Derived >::RebuildMemberExpr(), clang::TreeTransform< Derived >::RebuildObjCIvarRefExpr(), clang::TreeTransform< Derived >::RebuildObjCPropertyRefExpr(), clang::Sema::RebuildTemplateParamsInCurrentInstantiation(), clang::IdentifierResolver::RemoveDecl(), clang::DeclContext::removeDecl(), ReportOverrides(), clang::ento::PathDiagnostic::resetDiagnosticLocationToMainFile(), clang::Sema::SetDeclDeleted(), clang::ASTContext::setInstantiatedFromUnnamedFieldDecl(), shouldBeHidden(), clang::Sema::shouldSkipAnonEnumBody(), SubstDefaultTemplateArgument(), clang::Sema::SubstExceptionSpec(), clang::TemplateDeclInstantiator::SubstFunctionType(), clang::Sema::SubstituteExplicitTemplateArguments(), clang::Sema::SubstParmVarDecl(), SuggestInitializationFixit(), clang::Sema::tryCaptureVariable(), TryTypoCorrectionForCall(), clang::ASTDeclWriter::VisitCXXMethodDecl(), clang::TemplateDeclInstantiator::VisitCXXMethodDecl(), clang::ASTDeclWriter::VisitEnumDecl(), clang::ASTNodeImporter::VisitEnumDecl(), clang::ASTDeclWriter::VisitFieldDecl(), clang::ASTDeclReader::VisitFieldDecl(), clang::ASTDeclWriter::VisitFunctionDecl(), clang::ASTDeclReader::VisitFunctionDecl(), clang::TemplateDeclInstantiator::VisitFunctionDecl(), clang::ASTNodeImporter::VisitImplicitParamDecl(), clang::ASTDeclWriter::VisitNamedDecl(), clang::ASTNodeImporter::VisitNonTypeTemplateParmDecl(), clang::ASTNodeImporter::VisitObjCImplementationDecl(), clang::ASTDeclWriter::VisitObjCIvarDecl(), clang::ASTNodeImporter::VisitObjCPropertyImplDecl(), clang::ASTNodeImporter::VisitParmVarDecl(), clang::ASTDeclWriter::VisitRecordDecl(), clang::ASTNodeImporter::VisitRecordDecl(), clang::ASTNodeImporter::VisitTemplateTemplateParmDecl(), clang::ento::ConditionBRVisitor::VisitTrueTest(), clang::ASTDeclWriter::VisitTypedefDecl(), clang::ASTDeclWriter::VisitUnresolvedUsingValueDecl(), clang::ASTDeclReader::VisitUnresolvedUsingValueDecl(), clang::ASTDeclWriter::VisitUsingDecl(), clang::ASTDeclReader::VisitUsingDecl(), clang::ASTDeclWriter::VisitVarDecl(), and clang::Sema::WarnExactTypedMethods().
Optional< Visibility > NamedDecl::getExplicitVisibility | ( | ExplicitVisibilityKind | kind | ) | const |
If visibility was explicitly specified for this declaration, return that visibility.
Definition at line 1113 of file Decl.cpp.
References getExplicitVisibilityAux().
Referenced by clang::Sema::AddPushedVisibilityAttribute(), and getExplicitVisibility().
|
inline |
Get the linkage from a semantic point of view.
Entities in anonymous namespaces are external (in c++98).
Definition at line 339 of file Decl.h.
References clang::getFormalLinkage(), and getLinkageInternal().
Referenced by clang::Sema::AddInitializerToDecl(), clang::Sema::CheckForFunctionRedefinition(), diagnoseUseOfInternalDeclInInlineFunction(), hasLinkage(), and clang::Sema::MergeVarDecl().
|
inline |
getIdentifier - Get the identifier that names this declaration, if there is one.
This will return NULL if this declaration has no name (e.g., for an unnamed class) or if the name is a special name (C++ constructor, Objective-C selector, etc.).
Definition at line 232 of file Decl.h.
References clang::DeclarationName::getAsIdentifierInfo().
Referenced by clang::Sema::ActOnBlockArguments(), clang::Sema::ActOnClassTemplateSpecialization(), clang::Sema::ActOnDefs(), clang::Sema::ActOnExplicitInstantiation(), clang::Sema::ActOnFields(), clang::Sema::ActOnFinishFunctionBody(), clang::Sema::ActOnForwardClassDeclaration(), clang::Sema::ActOnFunctionDeclarator(), clang::Sema::ActOnPropertyImplDecl(), clang::Sema::ActOnReenterFunctionContext(), clang::Sema::ActOnStartClassInterface(), clang::Sema::ActOnStartCXXMemberDeclarations(), clang::Sema::ActOnSuperMessage(), clang::Sema::ActOnTag(), clang::Sema::ActOnTagTemplateIdType(), clang::comments::Sema::actOnTParamCommandParamNameArg(), clang::Sema::ActOnTypedefNameDecl(), clang::Sema::ActOnVariableDeclarator(), addFunctionPointerConversion(), clang::Sema::AddKnownFunctionAttributes(), clang::Sema::addLambdaParameters(), AddObjCKeyValueCompletions(), clang::CodeGen::CodeGenTypes::addRecordTypeName(), AddTemplateParameterChunks(), clang::ento::AnyFunctionCall::argumentsMayEscape(), clang::Sema::AtomicPropertySetterGetterRules(), clang::Sema::BuildBlockForLambdaConversion(), clang::Sema::BuildCallToMemberFunction(), buildCapture(), clang::Sema::BuildDeclRefExpr(), clang::Sema::BuildReturnStmt(), clang::Sema::CheckCompletedCXXClass(), clang::Sema::CheckConstructor(), clang::Sema::CheckCXXDefaultArguments(), checkEnumComparison(), CheckForDuplicateEnumValues(), checkForLiteralCreation(), clang::Sema::CheckFunctionDeclaration(), clang::Sema::CheckImplementationIvars(), CheckMoveOnConstruction(), clang::Sema::CheckParameterPacksForExpansion(), CheckPropertyAgainstProtocol(), CheckProtocolMethodDefs(), clang::Sema::CodeCompleteLambdaIntroducer(), clang::Sema::CodeCompleteObjCMethodDeclSelector(), CollectImmediateProperties(), clang::ObjCProtocolDecl::collectInheritedProtocolProperties(), clang::Sema::ConversionToObjCStringLiteralCheck(), createFriendTagNNSFixIt(), clang::Sema::DeclApplyPragmaWeak(), clang::Sema::DefaultSynthesizeProperties(), describeClass(), clang::Sema::DiagnoseClassNameShadow(), clang::Sema::DiagnoseSelfMove(), diagnoseUncapturableValueReference(), EmitNullConstant(), findBackingIvar(), findCapturingExpr(), findKnownClass(), findProtocolsWithExplicitImpls(), findUntaggedStructOrUnionIndex(), clang::ento::coreFoundation::followsCreateRule(), FormatFunctionParameter(), clang::TypoCorrectionConsumer::FoundDecl(), clang::CodeGen::CodeGenFunction::GenerateOpenMPCapturedStmtFunction(), getAbsoluteValueFunctionKind(), clang::QualType::getBaseTypeIdentifier(), clang::BodyFarm::getBody(), clang::CallExpr::getBuiltinCallee(), clang::FunctionDecl::getBuiltinID(), clang::ento::CheckerContext::getCalleeIdentifier(), clang::ento::CallEvent::getCalleeIdentifier(), getCalleeName(), clang::ento::CheckerContext::getCalleeName(), clang::ObjCPropertyDecl::getDefaultSynthIvarName(), clang::TagDecl::getDefinition(), clang::OffsetOfNode::getFieldName(), clang::DesignatedInitExpr::Designator::getFieldName(), getFunctionName(), clang::ObjCImplementationDecl::getIdentifier(), clang::TemplateTypeParmType::getIdentifier(), clang::FunctionDecl::getMemoryFunctionKind(), getName(), clang::LabelStmt::getName(), clang::Sema::GetNameFromUnqualifiedId(), getNestedNameSpecifierIdentifiers(), clang::Sema::getObjCInterfaceDecl(), clang::CodeCompletionTUInfo::getParentName(), clang::Sema::getTemplateArgumentBindingsText(), clang::ObjCContainerDecl::HasUserDeclaredSetterMethod(), hasWrittenStorageAttribute(), InheritsFromClassNamed(), InjectAnonymousStructOrUnionMembers(), InNamespace(), clang::TemplateDeclInstantiator::InstantiateEnumDefinition(), clang::TemplateDeclInstantiator::InstantiateTypedefNameDecl(), clang::NamespaceDecl::isAnonymousNamespace(), IsCFError(), isCFStringType(), isCharSpecialization(), clang::ObjCCategoryDecl::IsClassExtension(), clang::ento::CheckerContext::isCLibraryFunction(), clang::ento::cocoa::isCocoaObjectRef(), isCPPStdLibraryFunction(), clang::Sema::isCurrentClassName(), clang::Sema::isCurrentClassNameTypo(), clang::TagTypeLoc::isDefinition(), IsFunctionStdAbs(), clang::Sema::isLibstdcxxEagerExceptionSpecHack(), clang::FunctionDecl::isMSVCRTEntryPoint(), isNamed(), IsNSError(), isNSStringType(), isStd(), clang::Sema::isStdInitializerList(), clang::DeclContext::isStdNamespace(), isStreamCharSpecialization(), IsStructurallyEquivalent(), isSubclass(), clang::NSAPI::isSubclassOfNSClass(), isTypeTypedefedAsBOOL(), clang::LayoutOverrideSource::layoutRecordType(), clang::ObjCInterfaceDecl::lookupInheritedClass(), clang::ObjCProtocolDecl::lookupProtocolNamed(), clang::MangleContext::mangleGlobalBlock(), clang::MangleContext::mangleName(), clang::Sema::MergeFunctionDecl(), clang::Sema::MergeTypedefNameDecl(), clang::Sema::MergeVarDecl(), clang::analyze_format_string::FormatSpecifier::namedTypeToLengthModifier(), clang::Sema::ProcessPragmaWeak(), clang::Sema::ProcessPropertyDecl(), clang::TreeTransform< Derived >::RebuildObjCExceptionDecl(), clang::comments::Sema::resolveParamCommandIndexes(), rewriteBuiltinFunctionDecl(), rewriteToNSEnumDecl(), rewriteToNSMacroDecl(), SemaBuiltinMemChkCall(), clang::ObjCImplDecl::setClassInterface(), clang::Sema::setTagNameForLinkagePurposes(), shouldIgnoreDueToReservedName(), shouldRunOnFunctionOrMethod(), clang::Sema::SubstParmVarDecl(), clang::TreeTransform< Derived >::TransformFunctionTypeParam(), clang::ASTNodeImporter::VisitObjCPropertyImplDecl(), and clang::ASTNodeImporter::VisitTemplateTypeParmDecl().
LinkageInfo NamedDecl::getLinkageAndVisibility | ( | ) | const |
Determines the linkage and visibility of this entity.
Definition at line 1036 of file Decl.cpp.
References getLVForDecl(), LVForType, LVForValue, and usesTypeVisibility().
Referenced by getVisibility(), clang::CodeGen::CodeGenModule::HasHiddenLTOVisibility(), clang::CodeGen::CodeGenModule::setGlobalVisibility(), and setLinkageAndVisibilityForGV().
Linkage NamedDecl::getLinkageInternal | ( | ) | const |
Determine what kind of linkage this entity has.
This is not the linkage as defined by the standard or the codegen notion of linkage. It is just an implementation detail that is used to compute those.
Definition at line 1030 of file Decl.cpp.
References clang::LinkageInfo::getLinkage(), getLVForDecl(), and LVForLinkageOnly.
Referenced by computeCachedProperties(), getFormalLinkage(), hasExternalFormalLinkage(), isExternallyVisible(), isSameEntity(), clang::ASTDeclWriter::VisitFunctionDecl(), and clang::ASTDeclWriter::VisitVarDecl().
|
inline |
Definition at line 401 of file Decl.h.
Referenced by clang::DeclContext::collectAllContexts(), compareDeclarations(), DiagnoseAvailabilityOfDecl(), diagnoseMissingArgument(), DiagnoseNamespaceInlineMismatch(), DoEmitAvailabilityWarning(), getExplicitVisibilityAux(), getMostRecentDecl(), ShouldRemoveFromUnused(), and clang::ASTDeclWriter::VisitNamespaceDecl().
|
inline |
Definition at line 404 of file Decl.h.
References getMostRecentDecl().
|
inline |
getName - Get the name of identifier for this declaration as a StringRef.
This requires that the declaration have a name and that it be a simple identifier.
Definition at line 237 of file Decl.h.
References getIdentifier(), clang::IdentifierInfo::getName(), and clang::DeclarationName::isIdentifier().
Referenced by clang::Sema::ActOnOpenMPFirstprivateClause(), clang::Sema::ActOnOpenMPLinearClause(), clang::Sema::ActOnOpenMPPrivateClause(), clang::Sema::ActOnOpenMPReductionClause(), clang::Sema::ActOnPropertyImplDecl(), clang::Sema::ActOnStartOfFunctionDef(), clang::Sema::ActOnSuperScopeSpecifier(), AddObjCKeyValueCompletions(), clang::Sema::AttachBaseSpecifiers(), clang::Sema::BuildResolvedCallExpr(), clang::arcmt::trans::canApplyWeak(), clang::threadSafety::BeforeSet::checkBeforeAfter(), clang::Sema::CheckMSVCRTEntryPoint(), CheckObjCBridgeNSCast(), clang::Sema::CheckSingleAssignmentConstraints(), clang::PredefinedExpr::ComputeName(), clang::Sema::DiagnoseAssignmentResult(), DiagnoseBadDeduction(), dumpBasePath(), DumpRecordLayout(), clang::ento::CXXBaseObjectRegion::dumpToStream(), emitAddrOfFieldStorage(), clang::CodeGen::CodeGenFunction::EmitAutoVarAlloca(), clang::CodeGen::CodeGenFunction::emitBlockByrefAddress(), clang::CodeGen::CGDebugInfo::EmitDeclareOfBlockDeclRefVariable(), clang::CodeGen::CGDebugInfo::EmitDeclareOfBlockLiteralArgVariable(), clang::CodeGen::CodeGenFunction::EmitFunctionProlog(), clang::CodeGen::CGDebugInfo::EmitGlobalVariable(), clang::CodeGen::CodeGenFunction::EmitLabel(), clang::CodeGen::CodeGenFunction::EmitLValueForField(), clang::CodeGen::CodeGenFunction::EmitLValueForFieldInitialization(), clang::CodeGen::CGDebugInfo::EmitNamespaceAlias(), clang::CodeGen::CodeGenFunction::EmitParmDecl(), GenOpenCLArgMetadata(), clang::CodeGen::CodeGenFunction::GetAddrOfBlockDecl(), clang::BodyFarm::getBody(), clang::ento::ModelInjector::getBody(), clang::ento::LikelyFalsePositiveSuppressionBRVisitor::getEndPath(), clang::CodeGen::CodeGenFunction::getJumpDestForLabel(), getObjCFStringFormattingFamily(), clang::ObjCInterfaceDecl::getObjCRuntimeNameAsString(), clang::ObjCProtocolDecl::getObjCRuntimeNameAsString(), clang::comments::TParamCommandComment::getParamName(), clang::CodeCompletionTUInfo::getParentName(), clang::CodeGen::CodeGenTBAA::getTBAAStructTypeInfo(), clang::ento::MemRegionManager::getVarRegion(), clang::Sema::HandleExprPropertyRefExpr(), clang::Sema::handleTagNumbering(), clang::ento::ModelConsumer::HandleTopLevelDecl(), hasDefaultGetterName(), hasDefaultSetterName(), IsClangAttr(), IsClangDecl(), IsClangStmt(), IsClangType(), clang::ento::CheckerContext::isCLibraryFunction(), isDefinedInClangModule(), clang::FunctionDecl::isMSVCRTEntryPoint(), isSelfDecl(), IsSmallVector(), IsStdString(), IsStdVector(), clang::LayoutOverrideSource::layoutRecordType(), clang::MangleContext::mangleObjCMethodNameWithoutSize(), clang::Sema::maybeAddCUDAHostDeviceAttrs(), maybeAdjustInterfaceForSubscriptingCheck(), mergeDeclAttribute(), clang::NestedNameSpecifier::print(), print_elem(), clang::Sema::PrintInstantiationStack(), clang::APValue::printPretty(), clang::ento::FieldRegion::printPretty(), clang::ento::VarRegion::printPrettyAsExpr(), clang::ento::FieldRegion::printPrettyAsExpr(), clang::ento::ObjCIvarRegion::printPrettyAsExpr(), ReferenceDllExportedMethods(), ReplaceWithClasstype(), clang::CodeGen::CodeGenFunction::setBlockContextParameter(), clang::threadSafety::til::Project::slotName(), validateBoxingMethod(), and ValidateObjCLiteralInterfaceDecl().
|
inline |
getNameAsString - Get a human-readable name for the declaration, even if it is one of the special kinds of names (C++ constructor, Objective-C selector, etc).
Creating this name requires expensive string manipulation, so it should be called only when performance doesn't matter. For simple declarations, getNameAsCString() should suffice.
Definition at line 252 of file Decl.h.
References clang::DeclarationName::getAsString().
Referenced by AddTypedNameChunk(), clang::consumed::ConsumedStmtVisitor::checkCallability(), clang::Sema::checkMSInheritanceAttrOnDefinition(), clang::Sema::CheckObjCBridgeRelatedConversions(), clang::consumed::ConsumedStateMap::checkParamsForReturnTypestate(), clang::CodeCompletionResult::CreateCodeCompletionString(), clang::CodeCompleteConsumer::OverloadCandidate::CreateSignatureString(), clang::CodeGen::CodeGenFunction::getBlockByrefInfo(), clang::ASTContext::getObjCEncodingForPropertyDecl(), getStaticDeclName(), clang::threadSafety::til::PrettyPrinter< StdPrinter, std::ostream >::printLiteralPtr(), rewriteToObjCProperty(), clang::consumed::ConsumedStmtVisitor::VisitCallExpr(), and clang::ento::SValExplainer::VisitFieldRegion().
|
virtual |
getNameForDiagnostic - Appends a human-readable name for this declaration into the given stream.
This is the method invoked by Sema when displaying a NamedDecl in a diagnostic. It does not necessarily produce the same result as printName(); for example, class template specializations are printed with their template arguments.
Reimplemented in clang::VarTemplateSpecializationDecl, clang::FunctionDecl, and clang::ClassTemplateSpecializationDecl.
Definition at line 1490 of file Decl.cpp.
References printName(), and printQualifiedName().
Referenced by clang::FormatASTNodeDiagnosticArgument(), clang::ClassTemplateSpecializationDecl::getNameForDiagnostic(), clang::FunctionDecl::getNameForDiagnostic(), and clang::VarTemplateSpecializationDecl::getNameForDiagnostic().
ObjCStringFormatFamily NamedDecl::getObjCFStringFormattingFamily | ( | ) | const |
Definition at line 1017 of file Decl.cpp.
References getName(), clang::SFF_CFString, and clang::SFF_None.
Referenced by DiagnoseCStringFormatDirectiveInCFAPI().
std::string NamedDecl::getQualifiedNameAsString | ( | ) | const |
Definition at line 1398 of file Decl.cpp.
References printQualifiedName().
Referenced by DiagnoseTwoPhaseLookup(), clang::CodeGen::CodeGenFunction::EmitVTablePtrCheck(), GetSignature(), IsMicrosoftUsingDeclarationAccessBug(), clang::RecordDecl::mayInsertExtraPadding(), clang::threadSafety::til::PrettyPrinter< StdPrinter, std::ostream >::printProject(), clang::CodeGen::CodeGenFunction::ShouldEmitVTableTypeCheckedLoad(), clang::ento::SValExplainer::VisitCXXBaseObjectRegion(), and clang::ento::SValExplainer::VisitVarRegion().
|
inline |
Looks through UsingDecls and ObjCCompatibleAliasDecls for the underlying named decl.
Definition at line 387 of file Decl.h.
References getKind().
Referenced by clang::Sema::ActOnNamespaceAliasDef(), clang::Sema::AddFunctionCandidates(), clang::Sema::BuildCXXNestedNameSpecifier(), CalculateHiddenNames(), canHideTag(), CheckAnonMemberRedeclaration(), clang::Sema::CheckDependentFunctionTemplateSpecialization(), clang::Sema::CheckFunctionTemplateSpecialization(), clang::Sema::CheckMemberSpecialization(), clang::Sema::CheckUsingShadowDecl(), clang::Sema::ClassifyName(), clang::Sema::DiagnoseEmptyLookup(), diagnoseInstanceReference(), diagnoseNoViableConversion(), doesUsualArrayDeleteWantSize(), clang::Sema::FindAllocationOverload(), clang::Sema::FindAssociatedClassesAndNamespaces(), clang::Sema::FindDeallocationFunction(), clang::getConstructorInfo(), GetConversionType(), getDeclShowContexts(), clang::getDeclUsageType(), clang::ASTContext::getOverloadedTemplateName(), getUnderlyingDecl(), hasOnlyNonStaticMemberFunctions(), HasOnlyStaticMembers(), clang::Sema::isAcceptableNestedNameSpecifier(), isAcceptableTemplateName(), isPreferredLookupResult(), clang::Sema::LookupSpecialMember(), noteOverloads(), clang::Sema::PerformContextualImplicitConversion(), recordConversion(), clang::LookupResult::resolveKind(), and ResolveOverloadForDeduction().
|
inline |
Definition at line 397 of file Decl.h.
References getUnderlyingDecl().
|
inline |
Determines the visibility of this entity.
Definition at line 353 of file Decl.h.
References getLinkageAndVisibility(), and clang::LinkageInfo::getVisibility().
Referenced by mergeDeclAttribute().
|
inline |
True if this decl has external linkage.
Definition at line 344 of file Decl.h.
References getLinkageInternal(), and clang::isExternalFormalLinkage().
Referenced by clang::Sema::ActOnVariableDeclarator(), clang::Sema::MergeFunctionDecl(), clang::Sema::MergeVarDecl(), clang::ASTNodeImporter::VisitFunctionDecl(), and clang::ASTNodeImporter::VisitVarDecl().
bool NamedDecl::hasLinkage | ( | ) | const |
Determine whether this declaration has linkage.
Definition at line 1598 of file Decl.cpp.
References getFormalLinkage(), and clang::NoLinkage.
Referenced by clang::Sema::BuildVariableInstantiation(), clang::Sema::CheckCompleteVariableDeclaration(), clang::Sema::CheckVariableDeclarationType(), isOutOfScopePreviousDeclaration(), and clang::Sema::MergeVarDecl().
|
inline |
True if something has required us to compute the linkage of this declaration.
Language features which can retroactively change linkage (like a typedef name for linkage purposes) may need to consider this, but hopefully only in transitory ways during parsing.
Definition at line 381 of file Decl.h.
Referenced by clang::Sema::setTagNameForLinkagePurposes().
|
inline |
Determine whether this declaration is a C++ class member.
Definition at line 315 of file Decl.h.
References clang::DeclContext::getRedeclContext(), and clang::DeclContext::isRecord().
Referenced by clang::Sema::ActOnTag(), checkDLLAttributeRedeclaration(), clang::Sema::ClassifyName(), clang::Sema::DiagnoseEmptyLookup(), isCXXInstanceMember(), isQualifiedMemberAccess(), clang::Sema::IsSimplyAccessible(), clang::Sema::MergeCXXFunctionDecl(), and clang::Sema::MergeFunctionDecl().
bool NamedDecl::isCXXInstanceMember | ( | ) | const |
Determine whether the given declaration is an instance member of a C++ class.
Definition at line 1616 of file Decl.cpp.
References isCXXClassMember().
Referenced by clang::Sema::BuildMemberReferenceExpr(), clang::Sema::CheckCallingConvAttr(), clang::Sema::InstantiateAttrs(), and clang::Sema::InstantiateClass().
|
inline |
Definition at line 348 of file Decl.h.
References getLinkageInternal(), and clang::isExternallyVisible().
Referenced by clang::Sema::ActOnFinishFunctionBody(), clang::Sema::ActOnFunctionDeclarator(), basicGVALinkageForFunction(), basicGVALinkageForVariable(), checkAttributesAfterMerging(), clang::Sema::checkClassLevelDLLAttribute(), clang::Sema::CheckCompleteVariableDeclaration(), checkUndefinedButUsed(), computeKeyFunction(), clang::Sema::DefineUsedVTables(), diagnoseUseOfInternalDeclInInlineFunction(), clang::Sema::FinalizeDeclaration(), getStaticDeclName(), getUniqueTagTypeName(), clang::CodeGen::CodeGenModule::getVTableLinkage(), clang::ento::CheckerContext::isCLibraryFunction(), isDefinedInClangModule(), clang::LookupResult::isHiddenDeclarationVisible(), clang::MarkVarDeclODRUsed(), and ShouldRemoveFromUnused().
|
inline |
Determine whether this declaration is hidden from name lookup.
Definition at line 305 of file Decl.h.
Referenced by clang::LookupResult::isVisible(), clang::Sema::isVisible(), clang::ObjCProtocolDecl::lookupMethod(), clang::Sema::MatchTwoMethodDeclarations(), clang::ASTDeclReader::mergeDefinitionVisibility(), and NestedProtocolHasNoDefinition().
bool NamedDecl::isLinkageValid | ( | ) | const |
True if the computed linkage is valid.
Used for consistency checking. Should always return true.
Definition at line 1009 of file Decl.cpp.
References computeLVForDecl(), clang::LinkageInfo::getLinkage(), and LVForLinkageOnly.
Referenced by clang::Sema::AddInitializerToDecl(), clang::Redeclarable< decl_type >::setPreviousDecl(), and clang::TagDecl::setTypedefNameForAnonDecl().
|
inline |
Definition at line 254 of file Decl.h.
Referenced by clang::CodeGen::CodeGenTypes::addRecordTypeName(), getNameForDiagnostic(), clang::operator<<(), clang::Sema::PrintInstantiationStack(), and printQualifiedName().
void NamedDecl::printQualifiedName | ( | raw_ostream & | OS | ) | const |
printQualifiedName - Returns human-readable qualified name for declaration, like A::B::i, for i being member of namespace A::B.
If declaration is not member of context which can be named (record, namespace), it will return same result as printName(). Creating this name is expensive, so it should be called only when performance doesn't matter.
Definition at line 1405 of file Decl.cpp.
Referenced by clang::CodeGen::CodeGenTypes::addRecordTypeName(), getNameForDiagnostic(), getQualifiedNameAsString(), clang::TemplateArgument::print(), and clang::CodeGen::SanitizerMetadata::reportGlobalToASan().
void NamedDecl::printQualifiedName | ( | raw_ostream & | OS, |
const PrintingPolicy & | Policy | ||
) | const |
Definition at line 1409 of file Decl.cpp.
References clang::TemplateArgumentList::asArray(), Contexts, getDeclName(), clang::FunctionProtoType::getNumParams(), clang::DeclContext::getParent(), clang::DeclContext::isFunctionOrMethod(), clang::FunctionProtoType::isVariadic(), clang::PrintingPolicy::MSVCFormatting, P, printName(), clang::PrintTemplateArgumentList(), and clang::PrintingPolicy::SuppressUnwrittenScope.
|
inline |
Set the name of this declaration.
Definition at line 261 of file Decl.h.
Referenced by addInstantiatedParametersToScope(), and clang::ASTDeclReader::VisitNamedDecl().
|
inline |
Set whether this declaration is hidden from name lookup.
Definition at line 308 of file Decl.h.
Referenced by clang::Sema::InstantiateClass(), clang::Sema::InstantiateEnum(), clang::Sema::makeMergedDefinitionVisible(), and clang::ASTContext::mergeDefinitionIntoModule().