clang 10.0.0git

Macros | Functions
Decl.cpp File Reference
`#include "clang/AST/Decl.h"`
`#include "Linkage.h"`
`#include "clang/AST/ASTContext.h"`
`#include "clang/AST/ASTDiagnostic.h"`
`#include "clang/AST/ASTLambda.h"`
`#include "clang/AST/ASTMutationListener.h"`
`#include "clang/AST/Attr.h"`
`#include "clang/AST/CanonicalType.h"`
`#include "clang/AST/DeclBase.h"`
`#include "clang/AST/DeclCXX.h"`
`#include "clang/AST/DeclObjC.h"`
`#include "clang/AST/DeclOpenMP.h"`
`#include "clang/AST/DeclTemplate.h"`
`#include "clang/AST/DeclarationName.h"`
`#include "clang/AST/Expr.h"`
`#include "clang/AST/ExprCXX.h"`
`#include "clang/AST/ExternalASTSource.h"`
`#include "clang/AST/ODRHash.h"`
`#include "clang/AST/PrettyDeclStackTrace.h"`
`#include "clang/AST/PrettyPrinter.h"`
`#include "clang/AST/Redeclarable.h"`
`#include "clang/AST/Stmt.h"`
`#include "clang/AST/TemplateBase.h"`
`#include "clang/AST/Type.h"`
`#include "clang/AST/TypeLoc.h"`
`#include "clang/Basic/Builtins.h"`
`#include "clang/Basic/IdentifierTable.h"`
`#include "clang/Basic/LLVM.h"`
`#include "clang/Basic/LangOptions.h"`
`#include "clang/Basic/Linkage.h"`
`#include "clang/Basic/Module.h"`
`#include "clang/Basic/PartialDiagnostic.h"`
`#include "clang/Basic/SanitizerBlacklist.h"`
`#include "clang/Basic/Sanitizers.h"`
`#include "clang/Basic/SourceLocation.h"`
`#include "clang/Basic/SourceManager.h"`
`#include "clang/Basic/Specifiers.h"`
`#include "clang/Basic/TargetCXXABI.h"`
`#include "clang/Basic/TargetInfo.h"`
`#include "clang/Basic/Visibility.h"`
`#include "llvm/ADT/APSInt.h"`
`#include "llvm/ADT/ArrayRef.h"`
`#include "llvm/ADT/None.h"`
`#include "llvm/ADT/Optional.h"`
`#include "llvm/ADT/STLExtras.h"`
`#include "llvm/ADT/SmallVector.h"`
`#include "llvm/ADT/StringRef.h"`
`#include "llvm/ADT/StringSwitch.h"`
`#include "llvm/ADT/Triple.h"`
`#include "llvm/Support/Casting.h"`
`#include "llvm/Support/ErrorHandling.h"`
`#include "llvm/Support/raw_ostream.h"`
`#include <algorithm>`
`#include <cassert>`
`#include <cstddef>`
`#include <cstring>`
`#include <memory>`
`#include <string>`
`#include <tuple>`
`#include <type_traits>`
`#include "clang/AST/DeclNodes.inc"`

Go to the source code of this file.

## Macros
#define | DECL(Type, Base)
#define | ABSTRACT_DECL(DECL)

## Functions
static bool | hasExplicitVisibilityAlready (LVComputationKind computation)
| Does this computation kind permit us to consider additional visibility settings from attributes and the like? More...
static LVComputationKind | withExplicitVisibilityAlready (LVComputationKind Kind)
| Given an LVComputationKind, return one of the same type/value sort that records that it already has explicit visibility. More...
static Optional< Visibility > | getExplicitVisibility (const NamedDecl *D, LVComputationKind kind)
static bool | usesTypeVisibility (const NamedDecl *D)
| Is the given declaration a "type" or a "value" for the purposes of visibility computation? More...
template<class T >
static std::enable_if<!std::is_base_of< RedeclarableTemplateDecl, T >::value, bool >::type | isExplicitMemberSpecialization (const T *D)
| Does the given declaration have member specialization information, and if so, is it an explicit specialization? More...
static bool | isExplicitMemberSpecialization (const RedeclarableTemplateDecl *D)
| For templates, this question is easier: a member template can't be explicitly instantiated, so there's a single bit indicating whether or not this is an explicit member specialization. More...
template<class T >
static Visibility | getVisibilityFromAttr (const T *attr)
| Given a visibility attribute, return the explicit visibility associated with it. More...
static Optional< Visibility > | getVisibilityOf (const NamedDecl *D, NamedDecl::ExplicitVisibilityKind kind)
| Return the explicit visibility of the given declaration. More...
static const Decl * | getOutermostFuncOrBlockContext (const Decl *D)
static bool | shouldConsiderTemplateVisibility (const FunctionDecl *fn, const FunctionTemplateSpecializationInfo *specInfo)
static bool | hasDirectVisibilityAttribute (const NamedDecl *D, LVComputationKind computation)
| Does the given declaration have a direct visibility attribute that would match the given rules? More...
static bool | shouldConsiderTemplateVisibility (const ClassTemplateSpecializationDecl *spec, LVComputationKind computation)
| Should we consider visibility associated with the template arguments and parameters of the given class template specialization? More...
static bool | shouldConsiderTemplateVisibility (const VarTemplateSpecializationDecl *spec, LVComputationKind computation)
| Should we consider visibility associated with the template arguments and parameters of the given variable template specialization? As usual, follow class template specialization logic up to initialization. More...
static bool | useInlineVisibilityHidden (const NamedDecl *D)
template<typename T >
static bool | isFirstInExternCContext (T *D)
static bool | isSingleLineLanguageLinkage (const Decl &D)
static bool | isInModulePurview (const NamedDecl *D)
| Determine whether D is declared in the purview of a named module. More...
static bool | isExportedFromModuleInterfaceUnit (const NamedDecl *D)
static LinkageInfo | getInternalLinkageFor (const NamedDecl *D)
static LinkageInfo | getExternalLinkageFor (const NamedDecl *D)
static StorageClass | getStorageClass (const Decl *D)
static Optional< Visibility > | getExplicitVisibilityAux (const NamedDecl *ND, NamedDecl::ExplicitVisibilityKind kind, bool IsMostRecent)
static const CXXRecordDecl * | getOutermostEnclosingLambda (const CXXRecordDecl *Record)
template<typename T >
static bool | isRedeclarableImpl (Redeclarable< T > *)
static bool | isRedeclarableImpl (...)
static bool | isRedeclarable (Decl::Kind K)
template<typename DeclT >
static SourceLocation | getTemplateOrInnerLocStart (const DeclT *decl)
static bool | typeIsPostfix (QualType QT)
template<typename T >
static LanguageLinkage | getDeclLanguageLinkage (const T &D)
template<typename T >
static bool | isDeclExternC (const T &D)
template<typename DeclT >
static DeclT * | getDefinitionOrSelf (DeclT *D)
template<std::size_t Len>
static bool | isNamed (const NamedDecl *ND, const char(&Str)[Len])
static bool | redeclForcesDefMSVC (const FunctionDecl *Redecl)
static bool | RedeclForcesDefC99 (const FunctionDecl *Redecl)
static unsigned | getNumModuleIdentifiers (Module *Mod)
| Retrieve the number of module identifiers needed to name the given module. More...

## Macro Definition Documentation

## ◆ ABSTRACT_DECL

#define ABSTRACT_DECL | ( |  | DECL | ) |

## ◆ DECL

#define DECL | ( |  | Type,
|  |  | Base
| ) |  |

Value:
case Decl::Type: \
return isRedeclarableImpl((Type##Decl *)nullptr);
clang::Decl
Decl - This represents one declaration (or definition), e.g.
Definition: DeclBase.h:88
clang::Type
The base class of the type hierarchy.
Definition: Type.h:1450
Type
Optional< types::ID > Type
Definition: InterpolatingCompilationDatabase.cpp:127
isRedeclarableImpl
static bool isRedeclarableImpl(Redeclarable< T > *)
Definition: Decl.cpp:1681

## Function Documentation

## ◆ getDeclLanguageLinkage()

template<typename T >

static LanguageLinkage getDeclLanguageLinkage | ( | const T & | D | ) |
| static

Definition at line 2032 of file Decl.cpp.

References clang::NoLanguageLinkage.

Referenced by clang::VarDecl::getLanguageLinkage(), and clang::FunctionDecl::getLanguageLinkage().

## ◆ getDefinitionOrSelf()

template<typename DeclT >

static DeclT* getDefinitionOrSelf | ( | DeclT * | D | ) |
| static

Definition at line 2469 of file Decl.cpp.

Referenced by clang::VarDecl::getTemplateInstantiationPattern(), clang::FunctionDecl::getTemplateInstantiationPattern(), and clang::EnumDecl::getTemplateInstantiationPattern().

## ◆ getExplicitVisibility()

static Optional<Visibility> getExplicitVisibility | ( | const NamedDecl * | D,
|  | LVComputationKind | kind
| ) |  |
| static

Definition at line 171 of file Decl.cpp.

References clang::NamedDecl::getExplicitVisibility(), clang::LVComputationKind::getExplicitVisibilityKind(), and clang::LVComputationKind::IgnoreExplicitVisibility.

Referenced by clang::NamedDecl::getExplicitVisibility(), and getStorageClass().

## ◆ getExplicitVisibilityAux()

static Optional<Visibility> getExplicitVisibilityAux | ( | const NamedDecl * | ND,
|  | NamedDecl::ExplicitVisibilityKind | kind,
|  | bool | IsMostRecent
| ) |  |
| static

Definition at line 1103 of file Decl.cpp.

References clang::CXXRecordDecl::getInstantiatedFromMemberClass(), clang::FunctionDecl::getInstantiatedFromMemberFunction(), clang::VarDecl::getInstantiatedFromStaticDataMember(), clang::NamedDecl::getMostRecentDecl(), clang::VarTemplateSpecializationDecl::getSpecializedTemplate(), clang::VarTemplateDecl::getTemplatedDecl(), clang::FunctionDecl::getTemplateSpecializationInfo(), getVisibilityOf(), clang::None, and V.

Referenced by clang::NamedDecl::getExplicitVisibility().

## ◆ getExternalLinkageFor()

static LinkageInfo getExternalLinkageFor | ( | const NamedDecl * | D | ) |
| static

Definition at line 602 of file Decl.cpp.

References clang::DefaultVisibility, clang::LinkageInfo::external(), clang::Decl::getCanonicalDecl(), isExportedFromModuleInterfaceUnit(), isInModulePurview(), and clang::ModuleLinkage.

Referenced by clang::LinkageComputer::computeLVForDecl(), and getStorageClass().

## ◆ getInternalLinkageFor()

static LinkageInfo getInternalLinkageFor | ( | const NamedDecl * | D | ) |
| static

Definition at line 591 of file Decl.cpp.

References clang::DefaultVisibility, clang::LinkageInfo::internal(), isInModulePurview(), and clang::ModuleInternalLinkage.

Referenced by clang::LinkageComputer::computeLVForDecl(), clang::NamedDecl::getExplicitVisibility(), clang::LinkageComputer::getLVForDecl(), and getStorageClass().

## ◆ getNumModuleIdentifiers()

static unsigned getNumModuleIdentifiers | ( | Module * | Mod | ) |
| static

Retrieve the number of module identifiers needed to name the given module.

Definition at line 4912 of file Decl.cpp.

References clang::Decl::Decl(), clang::Module::Parent, and clang::Result.

Referenced by clang::ImportDecl::getIdentifierLocs().

## ◆ getOutermostEnclosingLambda()

static const CXXRecordDecl* getOutermostEnclosingLambda | ( | const CXXRecordDecl * | Record | ) |
| inline static

Definition at line 1322 of file Decl.cpp.

References clang::DeclContext::getParent(), clang::CXXRecordDecl::isLambda(), and Ret().

Referenced by clang::LinkageComputer::computeLVForDecl().

## ◆ getOutermostFuncOrBlockContext()

static const Decl* getOutermostFuncOrBlockContext | ( | const Decl * | D | ) |
| static

Definition at line 302 of file Decl.cpp.

References clang::TemplateArgumentList::asArray(), clang::TemplateArgument::Declaration, clang::TemplateArgument::Expression, clang::Decl::getDeclContext(), clang::DeclContext::getDeclKind(), clang::DeclContext::getParent(), clang::TemplateArgument::Integral, clang::LinkageInfo::merge(), clang::TemplateArgument::Null, clang::TemplateArgument::NullPtr, clang::TemplateArgument::Pack, Ret(), clang::TemplateArgument::Template, clang::TemplateArgument::TemplateExpansion, clang::TemplateArgument::Type, and usesTypeVisibility().

Referenced by clang::NamedDecl::getExplicitVisibility().

## ◆ getStorageClass()

static StorageClass getStorageClass | ( | const Decl * | D | ) |
| static

Definition at line 614 of file Decl.cpp.

References clang::DefaultVisibility, clang::Decl::getASTContext(), clang::Decl::getCanonicalDecl(), clang::Decl::getDeclContext(), getExplicitVisibility(), getExternalLinkageFor(), getInternalLinkageFor(), clang::LinkageInfo::getLinkage(), clang::Type::getLinkage(), clang::DeclContext::getParent(), clang::Redeclarable< decl_type >::getPreviousDecl(), clang::DeclContext::getRedeclContext(), clang::VarTemplateSpecializationDecl::getSpecializedTemplate(), clang::ClassTemplateDecl::getTemplatedDecl(), clang::LinkageInfo::getVisibility(), hasDirectVisibilityAttribute(), hasExplicitVisibilityAlready(), clang::HiddenVisibility, isExplicitMemberSpecialization(), clang::VarTemplateSpecializationDecl::isExplicitSpecialization(), isExportedFromModuleInterfaceUnit(), clang::isExternalFormalLinkage(), clang::isExternallyVisible(), clang::DeclContext::isFileContext(), isFirstInExternCContext(), clang::Decl::isInAnonymousNamespace(), isSingleLineLanguageLinkage(), clang::LVComputationKind::isValueVisibility(), clang::LinkageInfo::isVisibilityExplicit(), clang::LinkageInfo::merge(), clang::LinkageInfo::mergeExternalVisibility(), clang::LinkageInfo::mergeMaybeWithVisibility(), clang::LinkageInfo::mergeVisibility(), clang::LinkageInfo::none(), clang::SC_Extern, clang::SC_None, clang::SC_PrivateExtern, clang::SC_Static, clang::LinkageInfo::uniqueExternal(), useInlineVisibilityHidden(), and withExplicitVisibilityAlready().

Referenced by clang::VarDecl::hasExternalStorage(), clang::VarDecl::hasLocalStorage(), clang::FunctionDecl::isStatic(), and clang::VarDecl::isStaticLocal().

## ◆ getTemplateOrInnerLocStart()

template<typename DeclT >

static SourceLocation getTemplateOrInnerLocStart | ( | const DeclT * | decl | ) |
| static

Definition at line 1810 of file Decl.cpp.

Referenced by clang::DeclaratorDecl::getOuterLocStart(), and clang::TagDecl::getOuterLocStart().

## ◆ getVisibilityFromAttr()

template<class T >

static Visibility getVisibilityFromAttr | ( | const T * | attr | ) |
| static

Given a visibility attribute, return the explicit visibility associated with it.

Definition at line 208 of file Decl.cpp.

References clang::Default, clang::DefaultVisibility, clang::HiddenVisibility, and clang::ProtectedVisibility.

Referenced by getVisibilityOf().

## ◆ getVisibilityOf()

static Optional<Visibility> getVisibilityOf | ( | const NamedDecl * | D,
|  | NamedDecl::ExplicitVisibilityKind | kind
| ) |  |
| static

Return the explicit visibility of the given declaration.

Definition at line 221 of file Decl.cpp.

References clang::DefaultVisibility, clang::Decl::getAttr(), clang::Type::getLinkage(), getVisibilityFromAttr(), clang::LVComputationKind::IgnoreAllVisibility, clang::Type::isDependentType(), clang::LinkageInfo::merge(), clang::None, P, and clang::NamedDecl::VisibilityForType.

Referenced by getExplicitVisibilityAux().

## ◆ hasDirectVisibilityAttribute()

static bool hasDirectVisibilityAttribute | ( | const NamedDecl * | D,
|  | LVComputationKind | computation
| ) |  |
| static

Does the given declaration have a direct visibility attribute that would match the given rules?

Definition at line 408 of file Decl.cpp.

References clang::Decl::hasAttr(), clang::LVComputationKind::IgnoreAllVisibility, and clang::LVComputationKind::isTypeVisibility().

Referenced by getStorageClass(), and shouldConsiderTemplateVisibility().

## ◆ hasExplicitVisibilityAlready()

static bool hasExplicitVisibilityAlready | ( | LVComputationKind | computation | ) |
| static

Does this computation kind permit us to consider additional visibility settings from attributes and the like?

Definition at line 159 of file Decl.cpp.

References clang::LVComputationKind::IgnoreExplicitVisibility.

Referenced by clang::NamedDecl::getExplicitVisibility(), getStorageClass(), and shouldConsiderTemplateVisibility().

## ◆ isDeclExternC()

template<typename T >

static bool isDeclExternC | ( | const T & | D | ) |
| static

Definition at line 2060 of file Decl.cpp.

References clang::CLanguageLinkage, and clang::DeclContext::isRecord().

Referenced by clang::VarDecl::isExternC(), and clang::FunctionDecl::isExternC().

## ◆ isExplicitMemberSpecialization() [1/2]

template<class T >

static std::enable_if<!std::is_base_of<RedeclarableTemplateDecl, T>::value, bool>::type isExplicitMemberSpecialization | ( | const T * | D | ) |
| static

Does the given declaration have member specialization information, and if so, is it an explicit specialization?

Definition at line 190 of file Decl.cpp.

References clang::transformer::member().

Referenced by getStorageClass().

## ◆ isExplicitMemberSpecialization() [2/2]

static bool isExplicitMemberSpecialization | ( | const RedeclarableTemplateDecl * | D | ) |
| static

For templates, this question is easier: a member template can't be explicitly instantiated, so there's a single bit indicating whether or not this is an explicit member specialization.

Definition at line 201 of file Decl.cpp.

References clang::RedeclarableTemplateDecl::isMemberSpecialization().

## ◆ isExportedFromModuleInterfaceUnit()

static bool isExportedFromModuleInterfaceUnit | ( | const NamedDecl * | D | ) |
| static

Definition at line 578 of file Decl.cpp.

References clang::Decl::getModuleOwnershipKind(), isInModulePurview(), clang::Decl::ModulePrivate, clang::Decl::Unowned, clang::Decl::Visible, and clang::Decl::VisibleWhenImported.

Referenced by getExternalLinkageFor(), and getStorageClass().

## ◆ isFirstInExternCContext()

template<typename T >

static bool isFirstInExternCContext | ( | T * | D | ) |
| static

Definition at line 559 of file Decl.cpp.

References clang::First.

Referenced by clang::NamedDecl::getExplicitVisibility(), and getStorageClass().

## ◆ isInModulePurview()

static bool isInModulePurview | ( | const NamedDecl * | D | ) |
| static

Determine whether D is declared in the purview of a named module.

Definition at line 572 of file Decl.cpp.

References clang::Decl::getOwningModule().

Referenced by getExternalLinkageFor(), getInternalLinkageFor(), and isExportedFromModuleInterfaceUnit().

## ◆ isNamed()

template<std::size_t Len>

static bool isNamed | ( | const NamedDecl * | ND,
|  | const char(&) | Str[Len]
| ) |  |
| static

Definition at line 2921 of file Decl.cpp.

References clang::NamedDecl::getIdentifier(), and clang::IdentifierInfo::isStr().

Referenced by clang::FunctionDecl::isMain().

## ◆ isRedeclarable()

static bool isRedeclarable | ( | Decl::Kind | K | ) |
| static

Definition at line 1685 of file Decl.cpp.

Referenced by clang::NamedDecl::declarationReplaces().

## ◆ isRedeclarableImpl() [1/2]

template<typename T >

static bool isRedeclarableImpl | ( | Redeclarable< T > * |  | ) |
| static

Definition at line 1681 of file Decl.cpp.

## ◆ isRedeclarableImpl() [2/2]

static bool isRedeclarableImpl | ( |  | ... | ) |
| static

Definition at line 1684 of file Decl.cpp.

## ◆ isSingleLineLanguageLinkage()

static bool isSingleLineLanguageLinkage | ( | const Decl & | D | ) |
| static

Definition at line 564 of file Decl.cpp.

References clang::Decl::getDeclContext().

Referenced by getStorageClass(), and clang::VarDecl::isThisDeclarationADefinition().

## ◆ RedeclForcesDefC99()

static bool RedeclForcesDefC99 | ( | const FunctionDecl * | Redecl | ) |
| static

Definition at line 3307 of file Decl.cpp.

References clang::Decl::getLexicalDeclContext(), clang::FunctionDecl::getStorageClass(), clang::Decl::isImplicit(), clang::FunctionDecl::isInlineSpecified(), clang::DeclContext::isTranslationUnit(), and clang::SC_Extern.

## ◆ redeclForcesDefMSVC()

static bool redeclForcesDefMSVC | ( | const FunctionDecl * | Redecl | ) |
| static

Definition at line 3295 of file Decl.cpp.

References clang::Redeclarable< decl_type >::getPreviousDecl(), clang::FunctionDecl::getStorageClass(), and clang::SC_Extern.

## ◆ shouldConsiderTemplateVisibility() [1/3]

static bool shouldConsiderTemplateVisibility | ( | const FunctionDecl * | fn,
|  | const FunctionTemplateSpecializationInfo * | specInfo
| ) |  |
| static

Definition at line 368 of file Decl.cpp.

References clang::FunctionTemplateSpecializationInfo::getTemplate(), clang::TemplateDecl::getTemplateParameters(), clang::Decl::hasAttr(), clang::FunctionTemplateSpecializationInfo::isExplicitInstantiationOrSpecialization(), clang::LinkageInfo::mergeMaybeWithVisibility(), and clang::FunctionTemplateSpecializationInfo::TemplateArguments.

Referenced by shouldConsiderTemplateVisibility().

## ◆ shouldConsiderTemplateVisibility() [2/3]

static bool shouldConsiderTemplateVisibility | ( | const ClassTemplateSpecializationDecl * | spec,
|  | LVComputationKind | computation
| ) |  |
| static

Should we consider visibility associated with the template arguments and parameters of the given class template specialization?

Definition at line 419 of file Decl.cpp.

References clang::ClassTemplateSpecializationDecl::getSpecializedTemplate(), clang::ClassTemplateSpecializationDecl::getTemplateArgs(), clang::TemplateDecl::getTemplateParameters(), hasDirectVisibilityAttribute(), hasExplicitVisibilityAlready(), clang::ClassTemplateSpecializationDecl::isExplicitInstantiationOrSpecialization(), clang::ClassTemplateSpecializationDecl::isExplicitSpecialization(), clang::LinkageInfo::mergeExternalVisibility(), clang::LinkageInfo::mergeMaybeWithVisibility(), clang::LinkageInfo::mergeVisibility(), and shouldConsiderTemplateVisibility().

## ◆ shouldConsiderTemplateVisibility() [3/3]

static bool shouldConsiderTemplateVisibility | ( | const VarTemplateSpecializationDecl * | spec,
|  | LVComputationKind | computation
| ) |  |
| static

Should we consider visibility associated with the template arguments and parameters of the given variable template specialization? As usual, follow class template specialization logic up to initialization.

Definition at line 483 of file Decl.cpp.

References clang::VarTemplateSpecializationDecl::getSpecializedTemplate(), clang::VarTemplateSpecializationDecl::getTemplateArgs(), clang::TemplateDecl::getTemplateParameters(), hasDirectVisibilityAttribute(), hasExplicitVisibilityAlready(), clang::VarTemplateSpecializationDecl::isExplicitInstantiationOrSpecialization(), clang::VarTemplateSpecializationDecl::isExplicitSpecialization(), clang::LinkageInfo::mergeExternalVisibility(), clang::LinkageInfo::mergeMaybeWithVisibility(), clang::LinkageInfo::mergeVisibility(), and shouldConsiderTemplateVisibility().

## ◆ typeIsPostfix()

static bool typeIsPostfix | ( | QualType | QT | ) |
| static

Definition at line 1885 of file Decl.cpp.

References clang::Type::getTypeClass(), clang::QualType::getTypePtr(), and Paren.

Referenced by clang::DeclaratorDecl::getSourceRange(), and clang::TypedefDecl::getSourceRange().

## ◆ useInlineVisibilityHidden()

static bool useInlineVisibilityHidden | ( | const NamedDecl * | D | ) |
| static

Definition at line 531 of file Decl.cpp.

References clang::Decl::getASTContext(), clang::ASTContext::getLangOpts(), clang::VarDecl::getTemplateSpecializationKind(), clang::Decl::hasAttr(), clang::FunctionDecl::isInlined(), clang::TSK_ExplicitInstantiationDeclaration, clang::TSK_ExplicitInstantiationDefinition, and clang::TSK_Undeclared.

Referenced by clang::NamedDecl::getExplicitVisibility(), and getStorageClass().

## ◆ usesTypeVisibility()

static bool usesTypeVisibility | ( | const NamedDecl * | D | ) |
| static

Is the given declaration a "type" or a "value" for the purposes of visibility computation?

Definition at line 180 of file Decl.cpp.

Referenced by clang::LinkageComputer::getDeclLinkageAndVisibility(), and getOutermostFuncOrBlockContext().

## ◆ withExplicitVisibilityAlready()

static LVComputationKind withExplicitVisibilityAlready | ( | LVComputationKind | Kind | ) |
| static

Given an LVComputationKind, return one of the same type/value sort that records that it already has explicit visibility.

Definition at line 166 of file Decl.cpp.

References clang::LVComputationKind::IgnoreExplicitVisibility.

Referenced by getStorageClass().