clang
9.0.0
|
ParsedAttr - Represents a syntactic attribute. More...
#include "clang/Sema/ParsedAttr.h"
Public Types | |
enum | Syntax { AS_GNU, AS_CXX11, AS_C2x, AS_Declspec, AS_Microsoft, AS_Keyword, AS_Pragma, AS_ContextSensitiveKeyword } |
The style used to specify an attribute. More... | |
enum | Kind { IgnoredAttribute, UnknownAttribute } |
Public Member Functions | |
ParsedAttr (const ParsedAttr &)=delete | |
ParsedAttr (ParsedAttr &&)=delete | |
ParsedAttr & | operator= (const ParsedAttr &)=delete |
ParsedAttr & | operator= (ParsedAttr &&)=delete |
~ParsedAttr ()=delete | |
void | operator delete (void *)=delete |
IdentifierInfo * | getName () const |
SourceLocation | getLoc () const |
SourceRange | getRange () const |
bool | hasScope () const |
IdentifierInfo * | getScopeName () const |
SourceLocation | getScopeLoc () const |
bool | isGNUScope () const |
bool | hasParsedType () const |
bool | isDeclspecPropertyAttribute () const |
Is this the Microsoft __declspec(property) attribute? More... | |
bool | isAlignasAttribute () const |
bool | isDeclspecAttribute () const |
bool | isMicrosoftAttribute () const |
bool | isCXX11Attribute () const |
bool | isC2xAttribute () const |
bool | isKeywordAttribute () const |
bool | isContextSensitiveKeywordAttribute () const |
bool | isInvalid () const |
void | setInvalid (bool b=true) const |
bool | hasProcessingCache () const |
unsigned | getProcessingCache () const |
void | setProcessingCache (unsigned value) const |
bool | isUsedAsTypeAttr () const |
void | setUsedAsTypeAttr (bool Used=true) |
bool | isPragmaClangAttribute () const |
True if the attribute is specified using '#pragma clang attribute'. More... | |
void | setIsPragmaClangAttribute () |
bool | isPackExpansion () const |
SourceLocation | getEllipsisLoc () const |
Kind | getKind () const |
unsigned | getNumArgs () const |
getNumArgs - Return the number of actual arguments to this attribute. More... | |
ArgsUnion | getArg (unsigned Arg) const |
getArg - Return the specified argument. More... | |
bool | isArgExpr (unsigned Arg) const |
Expr * | getArgAsExpr (unsigned Arg) const |
bool | isArgIdent (unsigned Arg) const |
IdentifierLoc * | getArgAsIdent (unsigned Arg) const |
const AvailabilityChange & | getAvailabilityIntroduced () const |
const AvailabilityChange & | getAvailabilityDeprecated () const |
const AvailabilityChange & | getAvailabilityObsoleted () const |
SourceLocation | getStrictLoc () const |
SourceLocation | getUnavailableLoc () const |
const Expr * | getMessageExpr () const |
const Expr * | getReplacementExpr () const |
const ParsedType & | getMatchingCType () const |
bool | getLayoutCompatible () const |
bool | getMustBeNull () const |
const ParsedType & | getTypeArg () const |
IdentifierInfo * | getPropertyDataGetter () const |
IdentifierInfo * | getPropertyDataSetter () const |
void | setMacroIdentifier (IdentifierInfo *MacroName, SourceLocation Loc) |
Set the macro identifier info object that this parsed attribute was declared in if it was declared in a macro. More... | |
bool | hasMacroIdentifier () const |
Returns true if this attribute was declared in a macro. More... | |
IdentifierInfo * | getMacroIdentifier () const |
Return the macro identifier if this attribute was declared in a macro. More... | |
SourceLocation | getMacroExpansionLoc () const |
unsigned | getAttributeSpellingListIndex () const |
Get an index into the attribute spelling list defined in Attr.td. More... | |
bool | isTargetSpecificAttr () const |
bool | isTypeAttr () const |
bool | isStmtAttr () const |
bool | hasCustomParsing () const |
unsigned | getMinArgs () const |
unsigned | getMaxArgs () const |
bool | hasVariadicArg () const |
bool | diagnoseAppertainsTo (class Sema &S, const Decl *D) const |
bool | appliesToDecl (const Decl *D, attr::SubjectMatchRule MatchRule) const |
void | getMatchRules (const LangOptions &LangOpts, SmallVectorImpl< std::pair< attr::SubjectMatchRule, bool >> &MatchRules) const |
bool | diagnoseLangOpts (class Sema &S) const |
bool | existsInTarget (const TargetInfo &Target) const |
bool | isKnownToGCC () const |
bool | isSupportedByPragmaAttribute () const |
unsigned | getSemanticSpelling () const |
If the parsed attribute has a semantic equivalent, and it would have a semantic Spelling enumeration (due to having semantically-distinct spelling variations), return the value of that semantic spelling. More... | |
LangAS | asOpenCLLangAS () const |
If this is an OpenCL addr space attribute returns its representation in LangAS, otherwise returns default addr space. More... | |
Static Public Member Functions | |
static Kind | getKind (const IdentifierInfo *Name, const IdentifierInfo *Scope, Syntax SyntaxUsed) |
Friends | |
class | AttributeFactory |
class | AttributePool |
ParsedAttr - Represents a syntactic attribute.
For a GNU attribute, there are four forms of this construct:
1: attribute(( const )). ParmName/Args/NumArgs will all be unused. 2: attribute(( mode(byte) )). ParmName used, Args/NumArgs unused. 3: attribute(( format(printf, 1, 2) )). ParmName/Args/NumArgs all used. 4: attribute(( aligned(16) )). ParmName is unused, Args/Num used.
Definition at line 116 of file ParsedAttr.h.
Enumerator | |
---|---|
IgnoredAttribute | |
UnknownAttribute |
Definition at line 375 of file ParsedAttr.h.
The style used to specify an attribute.
Definition at line 139 of file ParsedAttr.h.
|
delete |
|
delete |
|
delete |
bool ParsedAttr::appliesToDecl | ( | const Decl * | D, |
attr::SubjectMatchRule | MatchRule | ||
) | const |
Definition at line 211 of file ParsedAttr.cpp.
Referenced by clang::Sema::AddPragmaAttributes().
|
inline |
If this is an OpenCL addr space attribute returns its representation in LangAS, otherwise returns default addr space.
Definition at line 605 of file ParsedAttr.h.
References clang::Default, getKind(), clang::opencl_constant, clang::opencl_generic, clang::opencl_global, clang::opencl_local, and clang::opencl_private.
Referenced by HandleAddressSpaceTypeAttribute().
Definition at line 207 of file ParsedAttr.cpp.
Referenced by HandleLifetimeBoundAttr().
Definition at line 223 of file ParsedAttr.cpp.
bool ParsedAttr::existsInTarget | ( | const TargetInfo & | Target | ) | const |
Definition at line 235 of file ParsedAttr.cpp.
References ParsedAttrInfo::ExistsInTarget, and getInfo().
|
inline |
getArg - Return the specified argument.
Definition at line 461 of file ParsedAttr.h.
|
inline |
Definition at line 470 of file ParsedAttr.h.
Referenced by clang::Sema::checkStringLiteralArgumentAttr(), getCCTypeAttr(), HandleAddressSpaceTypeAttribute(), HandleExtVectorTypeAttr(), HandleNeonVectorTypeAttr(), and HandleVectorSizeAttr().
|
inline |
Definition at line 478 of file ParsedAttr.h.
Referenced by clang::Sema::checkStringLiteralArgumentAttr(), getCCTypeAttr(), HandleAddressSpaceTypeAttribute(), HandleExtVectorTypeAttr(), handleObjCGCTypeAttr(), handleObjCOwnershipTypeAttr(), and HandleVectorSizeAttr().
unsigned ParsedAttr::getAttributeSpellingListIndex | ( | ) | const |
Get an index into the attribute spelling list defined in Attr.td.
This index is used by an attribute to pretty print itself.
Definition at line 156 of file ParsedAttr.cpp.
References normalizeAttrScopeName().
Referenced by checkObjCKindOfType(), createSimpleAttr(), getCCTypeAttr(), HandleAddressSpaceTypeAttribute(), handleObjCGCTypeAttr(), and handleObjCOwnershipTypeAttr().
|
inline |
Definition at line 487 of file ParsedAttr.h.
References clang::detail::DeprecatedSlot, and getKind().
|
inline |
Definition at line 482 of file ParsedAttr.h.
References getKind(), and clang::detail::IntroducedSlot.
|
inline |
Definition at line 492 of file ParsedAttr.h.
References getKind(), and clang::detail::ObsoletedSlot.
|
inline |
Definition at line 451 of file ParsedAttr.h.
|
inline |
Definition at line 453 of file ParsedAttr.h.
References getKind().
Referenced by attributeParsedArgsUnevaluated(), checkNullabilityTypeSpecifier(), distributeNullabilityTypeAttr(), distributeObjCPointerTypeAttr(), getCCTypeAttr(), getInfo(), HandleAddressSpaceTypeAttribute(), handleFunctionTypeAttr(), handleMSPointerTypeQualifierAttr(), handleObjCPointerTypeAttr(), clang::ParsedAttributesView::hasAttribute(), and IsBuiltInOrStandardCXX11Attribute().
|
static |
Definition at line 136 of file ParsedAttr.cpp.
|
inline |
Definition at line 523 of file ParsedAttr.h.
References getKind().
|
inline |
Definition at line 384 of file ParsedAttr.h.
References clang::SourceRange::getBegin().
Referenced by checkNullabilityTypeSpecifier(), checkObjCKindOfType(), distributeNullabilityTypeAttr(), getAttrLoc(), HandleAddressSpaceTypeAttribute(), HandleExtVectorTypeAttr(), handleFunctionTypeAttr(), handleMSPointerTypeQualifierAttr(), HandleNeonVectorTypeAttr(), handleObjCGCTypeAttr(), handleObjCOwnershipTypeAttr(), HandleOpenCLAccessAttr(), and HandleVectorSizeAttr().
|
inline |
Definition at line 567 of file ParsedAttr.h.
|
inline |
Return the macro identifier if this attribute was declared in a macro.
nullptr is returned if it was not declared in a macro.
Definition at line 565 of file ParsedAttr.h.
|
inline |
Definition at line 517 of file ParsedAttr.h.
References getKind().
void ParsedAttr::getMatchRules | ( | const LangOptions & | LangOpts, |
SmallVectorImpl< std::pair< attr::SubjectMatchRule, bool >> & | MatchRules | ||
) | const |
Definition at line 216 of file ParsedAttr.cpp.
References getInfo(), and ParsedAttrInfo::GetPragmaAttributeMatchRules.
Referenced by clang::Sema::ActOnPragmaAttributeAttribute().
unsigned ParsedAttr::getMaxArgs | ( | ) | const |
Definition at line 199 of file ParsedAttr.cpp.
References getInfo(), and ParsedAttrInfo::OptArgs.
Referenced by IsBuiltInOrStandardCXX11Attribute().
|
inline |
Definition at line 507 of file ParsedAttr.h.
References getKind().
unsigned ParsedAttr::getMinArgs | ( | ) | const |
Definition at line 197 of file ParsedAttr.cpp.
References getInfo(), and ParsedAttrInfo::NumArgs.
|
inline |
Definition at line 529 of file ParsedAttr.h.
References getKind().
|
inline |
Definition at line 383 of file ParsedAttr.h.
Referenced by clang::Sema::ActOnPragmaAttributeAttribute(), distributeNullabilityTypeAttr(), handleMSPointerTypeQualifierAttr(), handleObjCGCTypeAttr(), handleObjCOwnershipTypeAttr(), HandleOpenCLAccessAttr(), and clang::operator<<().
|
inline |
getNumArgs - Return the number of actual arguments to this attribute.
Definition at line 458 of file ParsedAttr.h.
Referenced by getNumAttributeArgs(), HandleAddressSpaceTypeAttribute(), HandleExtVectorTypeAttr(), handleFunctionTypeAttr(), HandleNeonVectorTypeAttr(), handleObjCGCTypeAttr(), and HandleVectorSizeAttr().
|
inline |
Definition at line 432 of file ParsedAttr.h.
|
inline |
Definition at line 540 of file ParsedAttr.h.
|
inline |
Definition at line 546 of file ParsedAttr.h.
|
inline |
Definition at line 385 of file ParsedAttr.h.
Referenced by createSimpleAttr(), getCCTypeAttr(), HandleAddressSpaceTypeAttribute(), handleObjCGCTypeAttr(), handleObjCOwnershipTypeAttr(), and HandleOpenCLAccessAttr().
|
inline |
Definition at line 512 of file ParsedAttr.h.
References getKind().
|
inline |
Definition at line 389 of file ParsedAttr.h.
|
inline |
Definition at line 388 of file ParsedAttr.h.
unsigned ParsedAttr::getSemanticSpelling | ( | ) | const |
If the parsed attribute has a semantic equivalent, and it would have a semantic Spelling enumeration (due to having semantically-distinct spelling variations), return the value of that semantic spelling.
If the parsed attribute does not have a semantic equivalent, or would not have a Spelling enumeration, the value UINT_MAX is returned.
Definition at line 245 of file ParsedAttr.cpp.
References getInfo(), and ParsedAttrInfo::SpellingIndexToSemanticSpelling.
Referenced by HandleOpenCLAccessAttr().
|
inline |
Definition at line 497 of file ParsedAttr.h.
References getKind().
|
inline |
Definition at line 535 of file ParsedAttr.h.
|
inline |
Definition at line 502 of file ParsedAttr.h.
References getKind().
bool ParsedAttr::hasCustomParsing | ( | ) | const |
Definition at line 203 of file ParsedAttr.cpp.
References getInfo(), and ParsedAttrInfo::HasCustomParsing.
|
inline |
Returns true if this attribute was declared in a macro.
Definition at line 561 of file ParsedAttr.h.
|
inline |
Definition at line 396 of file ParsedAttr.h.
Referenced by getNumAttributeArgs().
|
inline |
Definition at line 430 of file ParsedAttr.h.
|
inline |
Definition at line 387 of file ParsedAttr.h.
bool ParsedAttr::hasVariadicArg | ( | ) | const |
Definition at line 249 of file ParsedAttr.cpp.
References getInfo(), and ParsedAttrInfo::OptArgs.
|
inline |
Definition at line 403 of file ParsedAttr.h.
References getKind().
|
inline |
Definition at line 466 of file ParsedAttr.h.
Referenced by getCCTypeAttr().
|
inline |
Definition at line 474 of file ParsedAttr.h.
Referenced by clang::Sema::checkStringLiteralArgumentAttr(), HandleAddressSpaceTypeAttribute(), HandleExtVectorTypeAttr(), handleObjCGCTypeAttr(), handleObjCOwnershipTypeAttr(), and HandleVectorSizeAttr().
|
inline |
Definition at line 415 of file ParsedAttr.h.
|
inline |
Definition at line 423 of file ParsedAttr.h.
Referenced by checkNullabilityTypeSpecifier(), and distributeNullabilityTypeAttr().
|
inline |
Definition at line 411 of file ParsedAttr.h.
Referenced by distributeFunctionTypeAttrFromDeclSpec().
|
inline |
Definition at line 408 of file ParsedAttr.h.
|
inline |
Is this the Microsoft __declspec(property) attribute?
Definition at line 399 of file ParsedAttr.h.
Referenced by getMSPropertyAttr().
|
inline |
Definition at line 391 of file ParsedAttr.h.
References clang::IdentifierInfo::isStr().
|
inline |
Definition at line 427 of file ParsedAttr.h.
Referenced by getCCTypeAttr().
|
inline |
Definition at line 419 of file ParsedAttr.h.
bool ParsedAttr::isKnownToGCC | ( | ) | const |
Definition at line 239 of file ParsedAttr.cpp.
References getInfo(), and ParsedAttrInfo::IsKnownToGCC.
|
inline |
Definition at line 409 of file ParsedAttr.h.
|
inline |
Definition at line 450 of file ParsedAttr.h.
References clang::SourceLocation::isValid().
|
inline |
True if the attribute is specified using '#pragma clang attribute'.
Definition at line 446 of file ParsedAttr.h.
Referenced by clang::Sema::AddPragmaAttributes().
bool ParsedAttr::isStmtAttr | ( | ) | const |
Definition at line 233 of file ParsedAttr.cpp.
References getInfo(), and ParsedAttrInfo::IsStmt.
bool ParsedAttr::isSupportedByPragmaAttribute | ( | ) | const |
Definition at line 241 of file ParsedAttr.cpp.
References getInfo(), and ParsedAttrInfo::IsSupportedByPragmaAttribute.
bool ParsedAttr::isTargetSpecificAttr | ( | ) | const |
Definition at line 227 of file ParsedAttr.cpp.
References getInfo(), and ParsedAttrInfo::IsTargetSpecific.
bool ParsedAttr::isTypeAttr | ( | ) | const |
Definition at line 231 of file ParsedAttr.cpp.
References getInfo(), and ParsedAttrInfo::IsType.
|
inline |
Definition at line 442 of file ParsedAttr.h.
|
delete |
|
delete |
|
delete |
Definition at line 428 of file ParsedAttr.h.
References b.
Referenced by HandleAddressSpaceTypeAttribute(), handleFunctionTypeAttr(), HandleNeonVectorTypeAttr(), handleObjCGCTypeAttr(), handleObjCOwnershipTypeAttr(), HandleOpenCLAccessAttr(), HandleVectorSizeAttr(), and IsBuiltInOrStandardCXX11Attribute().
|
inline |
Definition at line 448 of file ParsedAttr.h.
Referenced by clang::Sema::ActOnPragmaAttributeAttribute().
|
inline |
Set the macro identifier info object that this parsed attribute was declared in if it was declared in a macro.
Also set the expansion location of the macro.
Definition at line 555 of file ParsedAttr.h.
|
inline |
Definition at line 437 of file ParsedAttr.h.
|
friend |
Definition at line 234 of file ParsedAttr.h.
|
friend |
Definition at line 235 of file ParsedAttr.h.