clang
10.0.0svn
|
ParsedAttr - Represents a syntactic attribute. More...
#include "clang/Sema/ParsedAttr.h"
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 |
bool | hasParsedType () const |
bool | isDeclspecPropertyAttribute () const |
Is this the Microsoft __declspec(property) attribute? More... | |
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 |
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 |
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... | |
AttributeCommonInfo::Kind | getKind () const |
![]() | |
AttributeCommonInfo (SourceRange AttrRange) | |
AttributeCommonInfo (SourceLocation AttrLoc) | |
AttributeCommonInfo (const IdentifierInfo *AttrName, const IdentifierInfo *ScopeName, SourceRange AttrRange, SourceLocation ScopeLoc, Syntax SyntaxUsed) | |
AttributeCommonInfo (const IdentifierInfo *AttrName, const IdentifierInfo *ScopeName, SourceRange AttrRange, SourceLocation ScopeLoc, Kind AttrKind, Syntax SyntaxUsed) | |
AttributeCommonInfo (const IdentifierInfo *AttrName, const IdentifierInfo *ScopeName, SourceRange AttrRange, SourceLocation ScopeLoc, Kind AttrKind, Syntax SyntaxUsed, unsigned Spelling) | |
AttributeCommonInfo (const IdentifierInfo *AttrName, SourceRange AttrRange, Syntax SyntaxUsed) | |
AttributeCommonInfo (SourceRange AttrRange, Kind K, Syntax SyntaxUsed) | |
AttributeCommonInfo (SourceRange AttrRange, Kind K, Syntax SyntaxUsed, unsigned Spelling) | |
AttributeCommonInfo (AttributeCommonInfo &&)=default | |
AttributeCommonInfo (const AttributeCommonInfo &)=default | |
Kind | getParsedKind () const |
Syntax | getSyntax () const |
const IdentifierInfo * | getAttrName () const |
SourceLocation | getLoc () const |
SourceRange | getRange () const |
void | setRange (SourceRange R) |
bool | hasScope () const |
const IdentifierInfo * | getScopeName () const |
SourceLocation | getScopeLoc () const |
bool | isDeclspecAttribute () const |
bool | isMicrosoftAttribute () const |
bool | isGNUScope () const |
bool | isAlignasAttribute () const |
bool | isCXX11Attribute () const |
bool | isC2xAttribute () const |
bool | isKeywordAttribute () const |
bool | isContextSensitiveKeywordAttribute () const |
unsigned | getAttributeSpellingListIndex () const |
void | setAttributeSpellingListIndex (unsigned V) |
Friends | |
class | AttributeFactory |
class | AttributePool |
Additional Inherited Members | |
![]() | |
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 { NoSemaHandlerAttribute, IgnoredAttribute, UnknownAttribute } |
![]() | |
static Kind | getParsedKind (const IdentifierInfo *Name, const IdentifierInfo *Scope, Syntax SyntaxUsed) |
![]() | |
bool | isAttributeSpellingListCalculated () const |
![]() | |
static constexpr unsigned | SpellingNotCalculated = 0xf |
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 117 of file ParsedAttr.h.
|
delete |
|
delete |
|
delete |
bool ParsedAttr::appliesToDecl | ( | const Decl * | D, |
attr::SubjectMatchRule | MatchRule | ||
) | const |
Definition at line 146 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 520 of file ParsedAttr.h.
References clang::Default, clang::opencl_constant, clang::opencl_generic, clang::opencl_global, clang::opencl_local, and clang::opencl_private.
Referenced by HandleAddressSpaceTypeAttribute().
Definition at line 142 of file ParsedAttr.cpp.
Referenced by HandleLifetimeBoundAttr().
Definition at line 158 of file ParsedAttr.cpp.
bool ParsedAttr::existsInTarget | ( | const TargetInfo & | Target | ) | const |
Definition at line 170 of file ParsedAttr.cpp.
References ParsedAttrInfo::ExistsInTarget, and getInfo().
|
inline |
getArg - Return the specified argument.
Definition at line 374 of file ParsedAttr.h.
|
inline |
Definition at line 383 of file ParsedAttr.h.
Referenced by clang::Sema::checkStringLiteralArgumentAttr(), getCCTypeAttr(), HandleAddressSpaceTypeAttribute(), HandleExtVectorTypeAttr(), HandleNeonVectorTypeAttr(), and HandleVectorSizeAttr().
|
inline |
Definition at line 391 of file ParsedAttr.h.
Referenced by clang::Sema::checkStringLiteralArgumentAttr(), getCCTypeAttr(), HandleAddressSpaceTypeAttribute(), HandleExtVectorTypeAttr(), handleObjCGCTypeAttr(), handleObjCOwnershipTypeAttr(), and HandleVectorSizeAttr().
|
inline |
Definition at line 401 of file ParsedAttr.h.
References clang::detail::DeprecatedSlot.
|
inline |
Definition at line 395 of file ParsedAttr.h.
References clang::detail::IntroducedSlot.
|
inline |
Definition at line 407 of file ParsedAttr.h.
References clang::detail::ObsoletedSlot.
|
inline |
Definition at line 368 of file ParsedAttr.h.
|
inline |
Definition at line 537 of file ParsedAttr.h.
Referenced by checkNullabilityTypeSpecifier(), distributeNullabilityTypeAttr(), distributeObjCPointerTypeAttr(), getCCTypeAttr(), getInfo(), HandleAddressSpaceTypeAttribute(), handleFunctionTypeAttr(), handleMSPointerTypeQualifierAttr(), and handleObjCPointerTypeAttr().
|
inline |
Definition at line 443 of file ParsedAttr.h.
|
inline |
Definition at line 487 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 485 of file ParsedAttr.h.
|
inline |
Definition at line 437 of file ParsedAttr.h.
void ParsedAttr::getMatchRules | ( | const LangOptions & | LangOpts, |
SmallVectorImpl< std::pair< attr::SubjectMatchRule, bool >> & | MatchRules | ||
) | const |
Definition at line 151 of file ParsedAttr.cpp.
References getInfo(), and ParsedAttrInfo::GetPragmaAttributeMatchRules.
Referenced by clang::Sema::ActOnPragmaAttributeAttribute().
unsigned ParsedAttr::getMaxArgs | ( | ) | const |
Definition at line 134 of file ParsedAttr.cpp.
References getInfo(), and ParsedAttrInfo::OptArgs.
Referenced by IsBuiltInOrStandardCXX11Attribute().
|
inline |
Definition at line 425 of file ParsedAttr.h.
unsigned ParsedAttr::getMinArgs | ( | ) | const |
Definition at line 132 of file ParsedAttr.cpp.
References getInfo(), and ParsedAttrInfo::NumArgs.
|
inline |
Definition at line 449 of file ParsedAttr.h.
|
inline |
getNumArgs - Return the number of actual arguments to this attribute.
Definition at line 371 of file ParsedAttr.h.
Referenced by getNumAttributeArgs(), HandleAddressSpaceTypeAttribute(), HandleExtVectorTypeAttr(), handleFunctionTypeAttr(), HandleNeonVectorTypeAttr(), handleObjCGCTypeAttr(), and HandleVectorSizeAttr().
|
inline |
Definition at line 349 of file ParsedAttr.h.
|
inline |
Definition at line 460 of file ParsedAttr.h.
|
inline |
Definition at line 466 of file ParsedAttr.h.
|
inline |
Definition at line 431 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 180 of file ParsedAttr.cpp.
References getInfo(), and ParsedAttrInfo::SpellingIndexToSemanticSpelling.
Referenced by HandleOpenCLAccessAttr().
|
inline |
Definition at line 413 of file ParsedAttr.h.
|
inline |
Definition at line 455 of file ParsedAttr.h.
|
inline |
Definition at line 419 of file ParsedAttr.h.
bool ParsedAttr::hasCustomParsing | ( | ) | const |
Definition at line 138 of file ParsedAttr.cpp.
References getInfo(), and ParsedAttrInfo::HasCustomParsing.
|
inline |
Returns true if this attribute was declared in a macro.
Definition at line 481 of file ParsedAttr.h.
|
inline |
Definition at line 337 of file ParsedAttr.h.
Referenced by getNumAttributeArgs().
|
inline |
Definition at line 347 of file ParsedAttr.h.
bool ParsedAttr::hasVariadicArg | ( | ) | const |
Definition at line 184 of file ParsedAttr.cpp.
References getInfo(), and ParsedAttrInfo::OptArgs.
|
inline |
Definition at line 379 of file ParsedAttr.h.
Referenced by getCCTypeAttr().
|
inline |
Definition at line 387 of file ParsedAttr.h.
Referenced by clang::Sema::checkStringLiteralArgumentAttr(), HandleAddressSpaceTypeAttribute(), HandleExtVectorTypeAttr(), handleObjCGCTypeAttr(), handleObjCOwnershipTypeAttr(), and HandleVectorSizeAttr().
|
inline |
Is this the Microsoft __declspec(property) attribute?
Definition at line 340 of file ParsedAttr.h.
Referenced by getMSPropertyAttr().
|
inline |
Definition at line 344 of file ParsedAttr.h.
Referenced by getCCTypeAttr().
bool ParsedAttr::isKnownToGCC | ( | ) | const |
Definition at line 174 of file ParsedAttr.cpp.
References getInfo(), and ParsedAttrInfo::IsKnownToGCC.
|
inline |
Definition at line 367 of file ParsedAttr.h.
References clang::SourceLocation::isValid().
|
inline |
True if the attribute is specified using '#pragma clang attribute'.
Definition at line 363 of file ParsedAttr.h.
Referenced by clang::Sema::AddPragmaAttributes().
bool ParsedAttr::isStmtAttr | ( | ) | const |
Definition at line 168 of file ParsedAttr.cpp.
References getInfo(), and ParsedAttrInfo::IsStmt.
bool ParsedAttr::isSupportedByPragmaAttribute | ( | ) | const |
Definition at line 176 of file ParsedAttr.cpp.
References getInfo(), and ParsedAttrInfo::IsSupportedByPragmaAttribute.
bool ParsedAttr::isTargetSpecificAttr | ( | ) | const |
Definition at line 162 of file ParsedAttr.cpp.
References getInfo(), and ParsedAttrInfo::IsTargetSpecific.
bool ParsedAttr::isTypeAttr | ( | ) | const |
Definition at line 166 of file ParsedAttr.cpp.
References getInfo(), and ParsedAttrInfo::IsType.
|
inline |
Definition at line 359 of file ParsedAttr.h.
|
delete |
|
delete |
|
delete |
Definition at line 345 of file ParsedAttr.h.
Referenced by HandleAddressSpaceTypeAttribute(), handleFunctionTypeAttr(), HandleNeonVectorTypeAttr(), handleObjCGCTypeAttr(), handleObjCOwnershipTypeAttr(), HandleOpenCLAccessAttr(), HandleVectorSizeAttr(), and IsBuiltInOrStandardCXX11Attribute().
|
inline |
Definition at line 365 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 475 of file ParsedAttr.h.
|
inline |
Definition at line 354 of file ParsedAttr.h.
|
friend |
Definition at line 197 of file ParsedAttr.h.
|
friend |
Definition at line 198 of file ParsedAttr.h.