25    if (SuperD->getName() == 
"XCTestCase")
 
 
   45  if (D->
hasAttr<IBOutletAttr>()) {
 
   47  } 
else if (D->
hasAttr<IBOutletCollectionAttr>()) {
 
 
   67  if (
const NamedDecl *ND = dyn_cast<NamedDecl>(D)) {
 
   68    switch (ND->getFormalLinkage()) {
 
   70      llvm_unreachable(
"Linkage hasn't been computed!");
 
   76      llvm_unreachable(
"Not a sema linkage");
 
 
  101  if (
auto *VT = dyn_cast<VarTemplateDecl>(D)) {
 
  105    D = VT->getTemplatedDecl();
 
  108  if (
const TagDecl *TD = dyn_cast<TagDecl>(D)) {
 
  109    switch (TD->getTagKind()) {
 
  126    if (
const CXXRecordDecl *CXXRec = dyn_cast<CXXRecordDecl>(D)) {
 
  127      if (!CXXRec->isCLike()) {
 
  129        if (CXXRec->getDescribedClassTemplate()) {
 
  145  } 
else if (
auto *VD = dyn_cast<VarDecl>(D)) {
 
  164    } 
else if (VD->getDescribedVarTemplate()) {
 
  180    case Decl::IndirectField:
 
  184        if (!CXXRec->isCLike())
 
  188    case Decl::EnumConstant:
 
  190    case Decl::ObjCInterface:
 
  191    case Decl::ObjCImplementation: {
 
  201    case Decl::ObjCProtocol:
 
  205    case Decl::ObjCCategory:
 
  206    case Decl::ObjCCategoryImpl: {
 
  210      if (
auto *CatD = dyn_cast<ObjCCategoryDecl>(D))
 
  211        ClsD = CatD->getClassInterface();
 
  218    case Decl::ObjCMethod: {
 
  230      if (D->
hasAttr<IBActionAttr>())
 
  234    case Decl::ObjCProperty:
 
  238      if (
auto *Annot = D->
getAttr<AnnotateAttr>()) {
 
  239        if (Annot->getAnnotation() == 
"gk_inspectable")
 
  248    case Decl::Namespace:
 
  252    case Decl::NamespaceAlias:
 
  256    case Decl::CXXConstructor: {
 
  260      if (CD->isCopyConstructor())
 
  262      else if (CD->isMoveConstructor())
 
  266    case Decl::CXXDestructor:
 
  270    case Decl::CXXConversion:
 
  274    case Decl::CXXMethod: {
 
  283    case Decl::ClassTemplate:
 
  288    case Decl::FunctionTemplate:
 
  292      if (
const CXXMethodDecl *MD = dyn_cast_or_null<CXXMethodDecl>(
 
  308    case Decl::TypeAliasTemplate:
 
  313    case Decl::TypeAlias:
 
  317    case Decl::UnresolvedUsingTypename:
 
  323    case Decl::UnresolvedUsingValue:
 
  333    case Decl::UsingEnum:
 
  342    case Decl::MSProperty:
 
  346        if (!CXXRec->isCLike())
 
  350    case Decl::ClassTemplatePartialSpecialization:
 
  351    case Decl::ClassTemplateSpecialization:
 
  352    case Decl::CXXRecord:
 
  355      llvm_unreachable(
"records handled before");
 
  357    case Decl::VarTemplateSpecialization:
 
  358    case Decl::VarTemplatePartialSpecialization:
 
  359    case Decl::ImplicitParam:
 
  362    case Decl::VarTemplate:
 
  363      llvm_unreachable(
"variables handled before");
 
  365    case Decl::TemplateTypeParm:
 
  368    case Decl::TemplateTemplateParm:
 
  371    case Decl::NonTypeTemplateParm:
 
  386  if (
const FunctionDecl *FD = dyn_cast<FunctionDecl>(D)) {
 
  387    if (FD->getTemplatedKind() ==
 
  399    if (
attr->getLanguage() == 
"Swift")
 
 
  417#define APPLY_FOR_ROLE(Role) \ 
  418  if (Roles & (unsigned)SymbolRole::Role) \ 
  419    if (!Fn(SymbolRole::Role)) \ 
 
  458  bool VisitedOnce = 
false;
 
 
  492  if (
auto *ND = dyn_cast<NamedDecl>(D)) {
 
  501    DeclName.
print(OS, Policy);
 
 
  546  llvm_unreachable(
"invalid symbol kind");
 
 
  560  llvm_unreachable(
"invalid symbol subkind");
 
 
  570  llvm_unreachable(
"invalid symbol language kind");
 
 
  575#define APPLY_FOR_PROPERTY(K)                                                  \ 
  576  if (Props & (SymbolPropertySet)SymbolProperty::K)                            \ 
  577  Fn(SymbolProperty::K) 
  589#undef APPLY_FOR_PROPERTY 
 
  593  bool VisitedOnce = 
false;
 
 
Defines the C++ Decl subclasses, other than those for templates (found in DeclTemplate....
Defines the C++ template declaration subclasses.
#define APPLY_FOR_PROPERTY(K)
static bool isUnitTest(const ObjCMethodDecl *D)
#define APPLY_FOR_ROLE(Role)
static void checkForIBOutlets(const Decl *D, SymbolPropertySet &PropSet)
static bool isUnitTestCase(const ObjCInterfaceDecl *D)
Defines the clang::MacroInfo and clang::MacroDirective classes.
Represents a static or instance method of a struct/union/class.
Represents a C++ struct/union/class.
Decl - This represents one declaration (or definition), e.g.
const DeclContext * getParentFunctionOrMethod(bool LexicalParent=false) const
If this decl is defined inside a function/method/block it returns the corresponding DeclContext,...
ExternalSourceSymbolAttr * getExternalSourceSymbolAttr() const
Looks on this and related declarations for an applicable external source symbol attribute.
DeclContext * getDeclContext()
The name of a declaration.
void print(raw_ostream &OS, const PrintingPolicy &Policy) const
bool isEmpty() const
Evaluates true when this declaration name is empty.
Represents a function declaration or definition.
@ TK_FunctionTemplateSpecialization
Keeps track of the various options that can be enabled, which controls the dialect of C or C++ that i...
Encapsulates the data about a macro definition (e.g.
This represents a decl that may have a name.
Represents an ObjC class declaration.
ObjCInterfaceDecl * getSuperClass() const
ObjCMethodDecl - Represents an instance or class method declaration.
ArrayRef< ParmVarDecl * > parameters() const
unsigned param_size() const
bool isPropertyAccessor() const
Selector getSelector() const
bool isInstanceMethod() const
QualType getReturnType() const
ObjCInterfaceDecl * getClassInterface()
StringRef getNameForSlot(unsigned argIndex) const
Retrieve the name at a given position in the selector.
Represents the declaration of a struct/union/class/enum.
void applyForEachSymbolProperty(SymbolPropertySet Props, llvm::function_ref< void(SymbolProperty)> Fn)
SymbolRole
Set of roles that are attributed to symbol occurrences.
@ RelationSpecializationOf
StringRef getSymbolSubKindString(SymbolSubKind K)
void printSymbolProperties(SymbolPropertySet Props, raw_ostream &OS)
SymbolInfo getSymbolInfo(const Decl *D)
StringRef getSymbolKindString(SymbolKind K)
bool isFunctionLocalSymbol(const Decl *D)
void applyForEachSymbolRole(SymbolRoleSet Roles, llvm::function_ref< void(SymbolRole)> Fn)
void printSymbolRoles(SymbolRoleSet Roles, raw_ostream &OS)
SymbolInfo getSymbolInfoForMacro(const MacroInfo &MI)
bool printSymbolName(const Decl *D, const LangOptions &LO, raw_ostream &OS)
bool applyForEachSymbolRoleInterruptible(SymbolRoleSet Roles, llvm::function_ref< bool(SymbolRole)> Fn)
SymbolProperty
Set of properties that provide additional info about a symbol.
@ TemplatePartialSpecialization
@ ProtocolInterface
Symbol is part of a protocol interface.
uint16_t SymbolPropertySet
StringRef getSymbolLanguageString(SymbolLanguage K)
SymbolSubKind
Language specific sub-kinds.
The JSON file list parser is used to communicate input to InstallAPI.
bool isa(CodeGen::Address addr)
@ VisibleNone
No linkage according to the standard, but is visible from other translation units because of types de...
@ None
No linkage, which means that the entity is unique and can only be referred to from within its scope.
@ UniqueExternal
External linkage within a unique namespace.
@ Internal
Internal linkage, which indicates that the entity can be referred to from within the translation unit...
@ External
External linkage, which indicates that the entity can be referred to from other translation units.
@ Module
Module linkage, which indicates that the entity can be referred to from other translation units withi...
@ Interface
The "__interface" keyword.
@ Struct
The "struct" keyword.
@ Class
The "class" keyword.
@ Union
The "union" keyword.
@ Enum
The "enum" keyword.
U cast(CodeGen::Address addr)
Describes how types, statements, expressions, and declarations should be printed.
unsigned SuppressTemplateArgsInCXXConstructors
When true, suppresses printing template arguments in names of C++ constructors.
SymbolPropertySet Properties