clang  7.0.0svn
Namespaces | Enumerations | Functions
SemaDeclAttr.cpp File Reference
#include "clang/AST/ASTConsumer.h"
#include "clang/AST/ASTContext.h"
#include "clang/AST/ASTMutationListener.h"
#include "clang/AST/CXXInheritance.h"
#include "clang/AST/DeclCXX.h"
#include "clang/AST/DeclObjC.h"
#include "clang/AST/DeclTemplate.h"
#include "clang/AST/Expr.h"
#include "clang/AST/ExprCXX.h"
#include "clang/AST/Mangle.h"
#include "clang/AST/RecursiveASTVisitor.h"
#include "clang/Basic/CharInfo.h"
#include "clang/Basic/SourceManager.h"
#include "clang/Basic/TargetInfo.h"
#include "clang/Lex/Preprocessor.h"
#include "clang/Sema/DeclSpec.h"
#include "clang/Sema/DelayedDiagnostic.h"
#include "clang/Sema/Initialization.h"
#include "clang/Sema/Lookup.h"
#include "clang/Sema/Scope.h"
#include "clang/Sema/ScopeInfo.h"
#include "clang/Sema/SemaInternal.h"
#include "llvm/ADT/STLExtras.h"
#include "llvm/ADT/StringExtras.h"
#include "llvm/Support/MathExtras.h"
Include dependency graph for SemaDeclAttr.cpp:

Go to the source code of this file.

Namespaces

 AttributeLangSupport
 

Enumerations

enum  AttributeLangSupport::LANG { AttributeLangSupport::C, AttributeLangSupport::Cpp, AttributeLangSupport::ObjC }
 
enum  FormatAttrKind {
  CFStringFormat, NSStringFormat, StrftimeFormat, SupportedFormat,
  IgnoredFormat, InvalidFormat
}
 

Functions

static bool isFunctionOrMethod (const Decl *D)
 isFunctionOrMethod - Return true if the given decl has function type (function or function-typed variable) or an Objective-C method. More...
 
static bool isFunctionOrMethodOrBlock (const Decl *D)
 Return true if the given decl has function type (function or function-typed variable) or an Objective-C method or a block. More...
 
static bool hasDeclarator (const Decl *D)
 Return true if the given decl has a declarator that should have been processed by Sema::GetTypeForDeclarator. More...
 
static bool hasFunctionProto (const Decl *D)
 hasFunctionProto - Return true if the given decl has a argument information. More...
 
static unsigned getFunctionOrMethodNumParams (const Decl *D)
 getFunctionOrMethodNumParams - Return number of function or method parameters. More...
 
static QualType getFunctionOrMethodParamType (const Decl *D, unsigned Idx)
 
static SourceRange getFunctionOrMethodParamRange (const Decl *D, unsigned Idx)
 
static QualType getFunctionOrMethodResultType (const Decl *D)
 
static SourceRange getFunctionOrMethodResultSourceRange (const Decl *D)
 
static bool isFunctionOrMethodVariadic (const Decl *D)
 
static bool isInstanceMethod (const Decl *D)
 
static bool isNSStringType (QualType T, ASTContext &Ctx)
 
static bool isCFStringType (QualType T, ASTContext &Ctx)
 
static unsigned getNumAttributeArgs (const ParsedAttr &AL)
 
template<typename Compare >
static bool checkAttributeNumArgsImpl (Sema &S, const ParsedAttr &AL, unsigned Num, unsigned Diag, Compare Comp)
 
static bool checkAttributeNumArgs (Sema &S, const ParsedAttr &AL, unsigned Num)
 Check if the attribute has exactly as many args as Num. More...
 
static bool checkAttributeAtLeastNumArgs (Sema &S, const ParsedAttr &AL, unsigned Num)
 Check if the attribute has at least as many args as Num. More...
 
static bool checkAttributeAtMostNumArgs (Sema &S, const ParsedAttr &AL, unsigned Num)
 Check if the attribute has at most as many args as Num. More...
 
template<typename AttrInfo >
static std::enable_if< std::is_base_of< Attr, AttrInfo >::value, SourceLocation >::type getAttrLoc (const AttrInfo &AL)
 A helper function to provide Attribute Location for the Attr types AND the ParsedAttr. More...
 
static SourceLocation getAttrLoc (const ParsedAttr &AL)
 
template<typename AttrInfo >
static std::enable_if< std::is_base_of< Attr, AttrInfo >::value, const AttrInfo * >::type getAttrName (const AttrInfo &AL)
 A helper function to provide Attribute Name for the Attr types AND the ParsedAttr. More...
 
static const IdentifierInfogetAttrName (const ParsedAttr &AL)
 
template<typename AttrInfo >
static bool checkUInt32Argument (Sema &S, const AttrInfo &AI, const Expr *Expr, uint32_t &Val, unsigned Idx=UINT_MAX)
 If Expr is a valid integer constant, get the value of the integer expression and return success or failure. More...
 
template<typename AttrInfo >
static bool checkPositiveIntArgument (Sema &S, const AttrInfo &AI, const Expr *Expr, int &Val, unsigned Idx=UINT_MAX)
 Wrapper around checkUInt32Argument, with an extra check to be sure that the result will fit into a regular (signed) int. More...
 
template<typename AttrTy >
static bool checkAttrMutualExclusion (Sema &S, Decl *D, SourceRange Range, IdentifierInfo *Ident)
 Diagnose mutually exclusive attributes when present on a given declaration. More...
 
template<typename AttrInfo >
static bool checkFunctionOrMethodParameterIndex (Sema &S, const Decl *D, const AttrInfo &AI, unsigned AttrArgNum, const Expr *IdxExpr, ParamIdx &Idx, bool CanIndexImplicitThis=false)
 Check if IdxExpr is a valid parameter index for a function or instance method D. More...
 
template<typename AttrType >
static void handleSimpleAttribute (Sema &S, Decl *D, const ParsedAttr &AL)
 Applies the given attribute to the Decl without performing any additional semantic checking. More...
 
template<typename AttrType >
static void handleSimpleAttributeWithExclusions (Sema &S, Decl *D, const ParsedAttr &AL)
 
template<typename AttrType , typename IncompatibleAttrType , typename... IncompatibleAttrTypes>
static void handleSimpleAttributeWithExclusions (Sema &S, Decl *D, const ParsedAttr &AL)
 Applies the given attribute to the Decl so long as the Decl doesn't already have one of the given incompatible attributes. More...
 
static bool isIntOrBool (Expr *Exp)
 Check if the passed-in expression is of type int or bool. More...
 
static bool threadSafetyCheckIsSmartPointer (Sema &S, const RecordType *RT)
 
static bool threadSafetyCheckIsPointer (Sema &S, const Decl *D, const ParsedAttr &AL)
 Check if passed in Decl is a pointer type. More...
 
static const RecordTypegetRecordType (QualType QT)
 Checks that the passed in QualType either is of RecordType or points to RecordType. More...
 
static bool checkRecordTypeForCapability (Sema &S, QualType Ty)
 
static bool checkTypedefTypeForCapability (QualType Ty)
 
static bool typeHasCapability (Sema &S, QualType Ty)
 
static bool isCapabilityExpr (Sema &S, const Expr *Ex)
 
static void checkAttrArgsAreCapabilityObjs (Sema &S, Decl *D, const ParsedAttr &AL, SmallVectorImpl< Expr *> &Args, int Sidx=0, bool ParamIdxOk=false)
 Checks that all attribute arguments, starting from Sidx, resolve to a capability object. More...
 
static void handlePtGuardedVarAttr (Sema &S, Decl *D, const ParsedAttr &AL)
 
static bool checkGuardedByAttrCommon (Sema &S, Decl *D, const ParsedAttr &AL, Expr *&Arg)
 
static void handleGuardedByAttr (Sema &S, Decl *D, const ParsedAttr &AL)
 
static void handlePtGuardedByAttr (Sema &S, Decl *D, const ParsedAttr &AL)
 
static bool checkAcquireOrderAttrCommon (Sema &S, Decl *D, const ParsedAttr &AL, SmallVectorImpl< Expr *> &Args)
 
static void handleAcquiredAfterAttr (Sema &S, Decl *D, const ParsedAttr &AL)
 
static void handleAcquiredBeforeAttr (Sema &S, Decl *D, const ParsedAttr &AL)
 
static bool checkLockFunAttrCommon (Sema &S, Decl *D, const ParsedAttr &AL, SmallVectorImpl< Expr *> &Args)
 
static void handleAssertSharedLockAttr (Sema &S, Decl *D, const ParsedAttr &AL)
 
static void handleAssertExclusiveLockAttr (Sema &S, Decl *D, const ParsedAttr &AL)
 
template<typename AttrInfo >
static bool checkParamIsIntegerType (Sema &S, const FunctionDecl *FD, const AttrInfo &AI, unsigned AttrArgNo)
 Checks to be sure that the given parameter number is in bounds, and is an integral type. More...
 
static void handleAllocSizeAttr (Sema &S, Decl *D, const ParsedAttr &AL)
 
static bool checkTryLockFunAttrCommon (Sema &S, Decl *D, const ParsedAttr &AL, SmallVectorImpl< Expr *> &Args)
 
static void handleSharedTrylockFunctionAttr (Sema &S, Decl *D, const ParsedAttr &AL)
 
static void handleExclusiveTrylockFunctionAttr (Sema &S, Decl *D, const ParsedAttr &AL)
 
static void handleLockReturnedAttr (Sema &S, Decl *D, const ParsedAttr &AL)
 
static void handleLocksExcludedAttr (Sema &S, Decl *D, const ParsedAttr &AL)
 
static bool checkFunctionConditionAttr (Sema &S, Decl *D, const ParsedAttr &AL, Expr *&Cond, StringRef &Msg)
 
static void handleEnableIfAttr (Sema &S, Decl *D, const ParsedAttr &AL)
 
static void handleDiagnoseIfAttr (Sema &S, Decl *D, const ParsedAttr &AL)
 
static void handlePassObjectSizeAttr (Sema &S, Decl *D, const ParsedAttr &AL)
 
static void handleConsumableAttr (Sema &S, Decl *D, const ParsedAttr &AL)
 
static bool checkForConsumableClass (Sema &S, const CXXMethodDecl *MD, const ParsedAttr &AL)
 
static void handleCallableWhenAttr (Sema &S, Decl *D, const ParsedAttr &AL)
 
static void handleParamTypestateAttr (Sema &S, Decl *D, const ParsedAttr &AL)
 
static void handleReturnTypestateAttr (Sema &S, Decl *D, const ParsedAttr &AL)
 
static void handleSetTypestateAttr (Sema &S, Decl *D, const ParsedAttr &AL)
 
static void handleTestTypestateAttr (Sema &S, Decl *D, const ParsedAttr &AL)
 
static void handleExtVectorTypeAttr (Sema &S, Decl *D, const ParsedAttr &AL)
 
static void handlePackedAttr (Sema &S, Decl *D, const ParsedAttr &AL)
 
static bool checkIBOutletCommon (Sema &S, Decl *D, const ParsedAttr &AL)
 
static void handleIBOutlet (Sema &S, Decl *D, const ParsedAttr &AL)
 
static void handleIBOutletCollection (Sema &S, Decl *D, const ParsedAttr &AL)
 
static bool attrNonNullArgCheck (Sema &S, QualType T, const ParsedAttr &AL, SourceRange AttrParmRange, SourceRange TypeRange, bool isReturnValue=false)
 
static void handleNonNullAttr (Sema &S, Decl *D, const ParsedAttr &AL)
 
static void handleNonNullAttrParameter (Sema &S, ParmVarDecl *D, const ParsedAttr &AL)
 
static void handleReturnsNonNullAttr (Sema &S, Decl *D, const ParsedAttr &AL)
 
static void handleNoEscapeAttr (Sema &S, Decl *D, const ParsedAttr &AL)
 
static void handleAssumeAlignedAttr (Sema &S, Decl *D, const ParsedAttr &AL)
 
static void handleAllocAlignAttr (Sema &S, Decl *D, const ParsedAttr &AL)
 
static bool normalizeName (StringRef &AttrName)
 Normalize the attribute, foo becomes foo. More...
 
static void handleOwnershipAttr (Sema &S, Decl *D, const ParsedAttr &AL)
 
static void handleWeakRefAttr (Sema &S, Decl *D, const ParsedAttr &AL)
 
static void handleIFuncAttr (Sema &S, Decl *D, const ParsedAttr &AL)
 
static void handleAliasAttr (Sema &S, Decl *D, const ParsedAttr &AL)
 
static void handleTLSModelAttr (Sema &S, Decl *D, const ParsedAttr &AL)
 
static void handleRestrictAttr (Sema &S, Decl *D, const ParsedAttr &AL)
 
static void handleCPUSpecificAttr (Sema &S, Decl *D, const ParsedAttr &AL)
 
static void handleCommonAttr (Sema &S, Decl *D, const ParsedAttr &AL)
 
static void handleNakedAttr (Sema &S, Decl *D, const ParsedAttr &AL)
 
static void handleNoReturnAttr (Sema &S, Decl *D, const ParsedAttr &Attrs)
 
static void handleNoCfCheckAttr (Sema &S, Decl *D, const ParsedAttr &Attrs)
 
static void handleAnalyzerNoReturnAttr (Sema &S, Decl *D, const ParsedAttr &AL)
 
static void handleVecReturnAttr (Sema &S, Decl *D, const ParsedAttr &AL)
 
static void handleDependencyAttr (Sema &S, Scope *Scope, Decl *D, const ParsedAttr &AL)
 
static void handleUnusedAttr (Sema &S, Decl *D, const ParsedAttr &AL)
 
static void handleConstructorAttr (Sema &S, Decl *D, const ParsedAttr &AL)
 
static void handleDestructorAttr (Sema &S, Decl *D, const ParsedAttr &AL)
 
template<typename AttrTy >
static void handleAttrWithMessage (Sema &S, Decl *D, const ParsedAttr &AL)
 
static void handleObjCSuppresProtocolAttr (Sema &S, Decl *D, const ParsedAttr &AL)
 
static bool checkAvailabilityAttr (Sema &S, SourceRange Range, IdentifierInfo *Platform, VersionTuple Introduced, VersionTuple Deprecated, VersionTuple Obsoleted)
 
static bool versionsMatch (const VersionTuple &X, const VersionTuple &Y, bool BeforeIsOkay)
 Check whether the two versions match. More...
 
static void handleAvailabilityAttr (Sema &S, Decl *D, const ParsedAttr &AL)
 
static void handleExternalSourceSymbolAttr (Sema &S, Decl *D, const ParsedAttr &AL)
 
template<class T >
static T * mergeVisibilityAttr (Sema &S, Decl *D, SourceRange range, typename T::VisibilityType value, unsigned attrSpellingListIndex)
 
static void handleVisibilityAttr (Sema &S, Decl *D, const ParsedAttr &AL, bool isTypeVisibility)
 
static void handleObjCMethodFamilyAttr (Sema &S, Decl *D, const ParsedAttr &AL)
 
static void handleObjCNSObject (Sema &S, Decl *D, const ParsedAttr &AL)
 
static void handleObjCIndependentClass (Sema &S, Decl *D, const ParsedAttr &AL)
 
static void handleBlocksAttr (Sema &S, Decl *D, const ParsedAttr &AL)
 
static void handleSentinelAttr (Sema &S, Decl *D, const ParsedAttr &AL)
 
static void handleWarnUnusedResult (Sema &S, Decl *D, const ParsedAttr &AL)
 
static void handleWeakImportAttr (Sema &S, Decl *D, const ParsedAttr &AL)
 
template<typename WorkGroupAttr >
static void handleWorkGroupSize (Sema &S, Decl *D, const ParsedAttr &AL)
 
static void handleSubGroupSize (Sema &S, Decl *D, const ParsedAttr &AL)
 
static void handleVecTypeHint (Sema &S, Decl *D, const ParsedAttr &AL)
 
static void handleSectionAttr (Sema &S, Decl *D, const ParsedAttr &AL)
 
static bool checkCodeSegName (Sema &S, SourceLocation LiteralLoc, StringRef CodeSegName)
 
static void handleCodeSegAttr (Sema &S, Decl *D, const ParsedAttr &AL)
 
static void handleTargetAttr (Sema &S, Decl *D, const ParsedAttr &AL)
 
static void handleMinVectorWidthAttr (Sema &S, Decl *D, const ParsedAttr &AL)
 
static void handleCleanupAttr (Sema &S, Decl *D, const ParsedAttr &AL)
 
static void handleEnumExtensibilityAttr (Sema &S, Decl *D, const ParsedAttr &AL)
 
static void handleFormatArgAttr (Sema &S, Decl *D, const ParsedAttr &AL)
 Handle attribute((format_arg((idx)))) attribute based on http://gcc.gnu.org/onlinedocs/gcc/Function-Attributes.html. More...
 
static FormatAttrKind getFormatAttrKind (StringRef Format)
 getFormatAttrKind - Map from format attribute names to supported format types. More...
 
static void handleInitPriorityAttr (Sema &S, Decl *D, const ParsedAttr &AL)
 Handle attribute((init_priority(priority))) attributes based on http://gcc.gnu.org/onlinedocs/gcc/C_002b_002b-Attributes.html. More...
 
static void handleFormatAttr (Sema &S, Decl *D, const ParsedAttr &AL)
 Handle attribute((format(type,idx,firstarg))) attributes based on http://gcc.gnu.org/onlinedocs/gcc/Function-Attributes.html. More...
 
static void handleTransparentUnionAttr (Sema &S, Decl *D, const ParsedAttr &AL)
 
static void handleAnnotateAttr (Sema &S, Decl *D, const ParsedAttr &AL)
 
static void handleAlignValueAttr (Sema &S, Decl *D, const ParsedAttr &AL)
 
static void handleAlignedAttr (Sema &S, Decl *D, const ParsedAttr &AL)
 
static void parseModeAttrArg (Sema &S, StringRef Str, unsigned &DestWidth, bool &IntegerMode, bool &ComplexMode)
 parseModeAttrArg - Parses attribute mode string and returns parsed type attribute. More...
 
static void handleModeAttr (Sema &S, Decl *D, const ParsedAttr &AL)
 handleModeAttr - This attribute modifies the width of a decl with primitive type. More...
 
static void handleNoDebugAttr (Sema &S, Decl *D, const ParsedAttr &AL)
 
static void handleAlwaysInlineAttr (Sema &S, Decl *D, const ParsedAttr &AL)
 
static void handleMinSizeAttr (Sema &S, Decl *D, const ParsedAttr &AL)
 
static void handleOptimizeNoneAttr (Sema &S, Decl *D, const ParsedAttr &AL)
 
static void handleConstantAttr (Sema &S, Decl *D, const ParsedAttr &AL)
 
static void handleSharedAttr (Sema &S, Decl *D, const ParsedAttr &AL)
 
static void handleGlobalAttr (Sema &S, Decl *D, const ParsedAttr &AL)
 
static void handleGNUInlineAttr (Sema &S, Decl *D, const ParsedAttr &AL)
 
static void handleCallConvAttr (Sema &S, Decl *D, const ParsedAttr &AL)
 
static void handleSuppressAttr (Sema &S, Decl *D, const ParsedAttr &AL)
 
static bool isValidSwiftContextType (QualType Ty)
 Pointer-like types in the default address space. More...
 
static bool isValidSwiftIndirectResultType (QualType Ty)
 Pointers and references in the default address space. More...
 
static bool isValidSwiftErrorResultType (QualType Ty)
 Pointers and references to pointers in the default address space. More...
 
static void handleParameterABIAttr (Sema &S, Decl *D, const ParsedAttr &Attrs, ParameterABI Abi)
 
static ExprmakeLaunchBoundsArgExpr (Sema &S, Expr *E, const CUDALaunchBoundsAttr &AL, const unsigned Idx)
 
static void handleLaunchBoundsAttr (Sema &S, Decl *D, const ParsedAttr &AL)
 
static void handleArgumentWithTypeTagAttr (Sema &S, Decl *D, const ParsedAttr &AL)
 
static void handleTypeTagForDatatypeAttr (Sema &S, Decl *D, const ParsedAttr &AL)
 
static void handleXRayLogArgsAttr (Sema &S, Decl *D, const ParsedAttr &AL)
 
static bool isValidSubjectOfNSReturnsRetainedAttribute (QualType QT)
 
static bool isValidSubjectOfNSAttribute (Sema &S, QualType QT)
 
static bool isValidSubjectOfCFAttribute (Sema &S, QualType QT)
 
static void handleNSConsumedAttr (Sema &S, Decl *D, const ParsedAttr &AL)
 
static void handleNSReturnsRetainedAttr (Sema &S, Decl *D, const ParsedAttr &AL)
 
static void handleObjCReturnsInnerPointerAttr (Sema &S, Decl *D, const ParsedAttr &Attrs)
 
static void handleObjCRequiresSuperAttr (Sema &S, Decl *D, const ParsedAttr &Attrs)
 
static void handleObjCBridgeAttr (Sema &S, Decl *D, const ParsedAttr &AL)
 
static void handleObjCBridgeMutableAttr (Sema &S, Decl *D, const ParsedAttr &AL)
 
static void handleObjCBridgeRelatedAttr (Sema &S, Decl *D, const ParsedAttr &AL)
 
static void handleObjCDesignatedInitializer (Sema &S, Decl *D, const ParsedAttr &AL)
 
static void handleObjCRuntimeName (Sema &S, Decl *D, const ParsedAttr &AL)
 
static void handleObjCBoxable (Sema &S, Decl *D, const ParsedAttr &AL)
 
static void handleObjCOwnershipAttr (Sema &S, Decl *D, const ParsedAttr &AL)
 
static void handleObjCPreciseLifetimeAttr (Sema &S, Decl *D, const ParsedAttr &AL)
 
static void handleUuidAttr (Sema &S, Decl *D, const ParsedAttr &AL)
 
static void handleMSInheritanceAttr (Sema &S, Decl *D, const ParsedAttr &AL)
 
static void handleDeclspecThreadAttr (Sema &S, Decl *D, const ParsedAttr &AL)
 
static void handleAbiTagAttr (Sema &S, Decl *D, const ParsedAttr &AL)
 
static void handleARMInterruptAttr (Sema &S, Decl *D, const ParsedAttr &AL)
 
static void handleMSP430InterruptAttr (Sema &S, Decl *D, const ParsedAttr &AL)
 
static void handleMipsInterruptAttr (Sema &S, Decl *D, const ParsedAttr &AL)
 
static void handleAnyX86InterruptAttr (Sema &S, Decl *D, const ParsedAttr &AL)
 
static void handleAVRInterruptAttr (Sema &S, Decl *D, const ParsedAttr &AL)
 
static void handleAVRSignalAttr (Sema &S, Decl *D, const ParsedAttr &AL)
 
static void handleInterruptAttr (Sema &S, Decl *D, const ParsedAttr &AL)
 
static void handleAMDGPUFlatWorkGroupSizeAttr (Sema &S, Decl *D, const ParsedAttr &AL)
 
static void handleAMDGPUWavesPerEUAttr (Sema &S, Decl *D, const ParsedAttr &AL)
 
static void handleAMDGPUNumSGPRAttr (Sema &S, Decl *D, const ParsedAttr &AL)
 
static void handleAMDGPUNumVGPRAttr (Sema &S, Decl *D, const ParsedAttr &AL)
 
static void handleX86ForceAlignArgPointerAttr (Sema &S, Decl *D, const ParsedAttr &AL)
 
static void handleLayoutVersion (Sema &S, Decl *D, const ParsedAttr &AL)
 
static void handleDLLAttr (Sema &S, Decl *D, const ParsedAttr &A)
 
static void handleCapabilityAttr (Sema &S, Decl *D, const ParsedAttr &AL)
 
static void handleAssertCapabilityAttr (Sema &S, Decl *D, const ParsedAttr &AL)
 
static void handleAcquireCapabilityAttr (Sema &S, Decl *D, const ParsedAttr &AL)
 
static void handleTryAcquireCapabilityAttr (Sema &S, Decl *D, const ParsedAttr &AL)
 
static void handleReleaseCapabilityAttr (Sema &S, Decl *D, const ParsedAttr &AL)
 
static void handleRequiresCapabilityAttr (Sema &S, Decl *D, const ParsedAttr &AL)
 
static void handleDeprecatedAttr (Sema &S, Decl *D, const ParsedAttr &AL)
 
static bool isGlobalVar (const Decl *D)
 
static void handleNoSanitizeAttr (Sema &S, Decl *D, const ParsedAttr &AL)
 
static void handleNoSanitizeSpecificAttr (Sema &S, Decl *D, const ParsedAttr &AL)
 
static void handleInternalLinkageAttr (Sema &S, Decl *D, const ParsedAttr &AL)
 
static void handleOpenCLNoSVMAttr (Sema &S, Decl *D, const ParsedAttr &AL)
 
static bool handleCommonAttributeFeatures (Sema &S, Decl *D, const ParsedAttr &AL)
 Handles semantic checking for features that are common to all attributes, such as checking whether a parameter was properly specified, or the correct number of arguments were passed, etc. More...
 
static void handleOpenCLAccessAttr (Sema &S, Decl *D, const ParsedAttr &AL)
 
static void ProcessDeclAttribute (Sema &S, Scope *scope, Decl *D, const ParsedAttr &AL, bool IncludeCXX11Attributes)
 ProcessDeclAttribute - Apply the specific attribute to the specified decl if the attribute applies to decls. More...
 
static void checkUnusedDeclAttributes (Sema &S, const ParsedAttributesView &A)
 checkUnusedDeclAttributes - Check a list of attributes to see if it contains any decl attributes that we should warn about. More...
 
static bool isForbiddenTypeAllowed (Sema &S, Decl *D, const DelayedDiagnostic &diag, UnavailableAttr::ImplicitReason &reason)
 Is the given declaration allowed to use a forbidden type? If so, it'll still be annotated with an attribute that makes it illegal to actually use. More...
 
static void handleDelayedForbiddenType (Sema &S, DelayedDiagnostic &DD, Decl *D)
 Handle a delayed forbidden-type diagnostic. More...
 
static const AvailabilityAttr * getAttrForPlatform (ASTContext &Context, const Decl *D)
 
static std::pair< AvailabilityResult, const NamedDecl * > ShouldDiagnoseAvailabilityOfDecl (const NamedDecl *D, std::string *Message)
 The diagnostic we should emit for D, and the declaration that originated it, or AR_Available. More...
 
static bool ShouldDiagnoseAvailabilityInContext (Sema &S, AvailabilityResult K, VersionTuple DeclVersion, Decl *Ctx)
 whether we should emit a diagnostic for K and DeclVersion in the context of Ctx. More...
 
static bool shouldDiagnoseAvailabilityByDefault (const ASTContext &Context, const VersionTuple &DeploymentVersion, const VersionTuple &DeclVersion)
 
static NamedDeclfindEnclosingDeclToAnnotate (Decl *OrigCtx)
 
static Optional< unsigned > tryParseObjCMethodName (StringRef Name, SmallVectorImpl< StringRef > &SlotNames, const LangOptions &LangOpts)
 Tries to parse a string as ObjC method name. More...
 
static Optional< AttributeInsertion > createAttributeInsertion (const NamedDecl *D, const SourceManager &SM, const LangOptions &LangOpts)
 Returns a source location in which it's appropriate to insert a new attribute for the given declaration . More...
 
static void DoEmitAvailabilityWarning (Sema &S, AvailabilityResult K, Decl *Ctx, const NamedDecl *ReferringDecl, const NamedDecl *OffendingDecl, StringRef Message, ArrayRef< SourceLocation > Locs, const ObjCInterfaceDecl *UnknownObjCClass, const ObjCPropertyDecl *ObjCProperty, bool ObjCPropertyAccess)
 Actually emit an availability diagnostic for a reference to an unavailable decl. More...
 
static void handleDelayedAvailabilityCheck (Sema &S, DelayedDiagnostic &DD, Decl *Ctx)
 
static void EmitAvailabilityWarning (Sema &S, AvailabilityResult AR, const NamedDecl *ReferringDecl, const NamedDecl *OffendingDecl, StringRef Message, ArrayRef< SourceLocation > Locs, const ObjCInterfaceDecl *UnknownObjCClass, const ObjCPropertyDecl *ObjCProperty, bool ObjCPropertyAccess)
 

Enumeration Type Documentation

◆ FormatAttrKind

Enumerator
CFStringFormat 
NSStringFormat 
StrftimeFormat 
SupportedFormat 
IgnoredFormat 
InvalidFormat 

Definition at line 3157 of file SemaDeclAttr.cpp.

Function Documentation

◆ attrNonNullArgCheck()

static bool attrNonNullArgCheck ( Sema S,
QualType  T,
const ParsedAttr AL,
SourceRange  AttrParmRange,
SourceRange  TypeRange,
bool  isReturnValue = false 
)
static

Definition at line 1386 of file SemaDeclAttr.cpp.

◆ checkAcquireOrderAttrCommon()

static bool checkAcquireOrderAttrCommon ( Sema S,
Decl D,
const ParsedAttr AL,
SmallVectorImpl< Expr *> &  Args 
)
static

Definition at line 681 of file SemaDeclAttr.cpp.

◆ checkAttrArgsAreCapabilityObjs()

static void checkAttrArgsAreCapabilityObjs ( Sema S,
Decl D,
const ParsedAttr AL,
SmallVectorImpl< Expr *> &  Args,
int  Sidx = 0,
bool  ParamIdxOk = false 
)
static

Checks that all attribute arguments, starting from Sidx, resolve to a capability object.

Parameters
SidxThe attribute argument index to start checking with.
ParamIdxOkWhether an argument can be indexing into a function parameter list.

Definition at line 560 of file SemaDeclAttr.cpp.

◆ checkAttributeAtLeastNumArgs()

static bool checkAttributeAtLeastNumArgs ( Sema S,
const ParsedAttr AL,
unsigned  Num 
)
static

Check if the attribute has at least as many args as Num.

May output an error.

Definition at line 202 of file SemaDeclAttr.cpp.

◆ checkAttributeAtMostNumArgs()

static bool checkAttributeAtMostNumArgs ( Sema S,
const ParsedAttr AL,
unsigned  Num 
)
static

Check if the attribute has at most as many args as Num.

May output an error.

Definition at line 211 of file SemaDeclAttr.cpp.

◆ checkAttributeNumArgs()

static bool checkAttributeNumArgs ( Sema S,
const ParsedAttr AL,
unsigned  Num 
)
static

Check if the attribute has exactly as many args as Num.

May output an error.

Definition at line 194 of file SemaDeclAttr.cpp.

Referenced by clang::Sema::CheckAttrNoArgs(), clang::Sema::CheckCallingConvAttr(), and clang::Sema::CheckRegparmAttr().

◆ checkAttributeNumArgsImpl()

template<typename Compare >
static bool checkAttributeNumArgsImpl ( Sema S,
const ParsedAttr AL,
unsigned  Num,
unsigned  Diag,
Compare  Comp 
)
static

Definition at line 181 of file SemaDeclAttr.cpp.

◆ checkAttrMutualExclusion()

template<typename AttrTy >
static bool checkAttrMutualExclusion ( Sema S,
Decl D,
SourceRange  Range,
IdentifierInfo Ident 
)
static

Diagnose mutually exclusive attributes when present on a given declaration.

Returns true if diagnosed.

Definition at line 294 of file SemaDeclAttr.cpp.

◆ checkAvailabilityAttr()

static bool checkAvailabilityAttr ( Sema S,
SourceRange  Range,
IdentifierInfo Platform,
VersionTuple  Introduced,
VersionTuple  Deprecated,
VersionTuple  Obsoleted 
)
static

Definition at line 2120 of file SemaDeclAttr.cpp.

Referenced by clang::Sema::mergeAvailabilityAttr().

◆ checkCodeSegName()

static bool checkCodeSegName ( Sema S,
SourceLocation  LiteralLoc,
StringRef  CodeSegName 
)
static

Definition at line 2926 of file SemaDeclAttr.cpp.

◆ checkForConsumableClass()

static bool checkForConsumableClass ( Sema S,
const CXXMethodDecl MD,
const ParsedAttr AL 
)
static

Definition at line 1060 of file SemaDeclAttr.cpp.

◆ checkFunctionConditionAttr()

static bool checkFunctionConditionAttr ( Sema S,
Decl D,
const ParsedAttr AL,
Expr *&  Cond,
StringRef &  Msg 
)
static

Definition at line 890 of file SemaDeclAttr.cpp.

◆ checkFunctionOrMethodParameterIndex()

template<typename AttrInfo >
static bool checkFunctionOrMethodParameterIndex ( Sema S,
const Decl D,
const AttrInfo &  AI,
unsigned  AttrArgNum,
const Expr IdxExpr,
ParamIdx Idx,
bool  CanIndexImplicitThis = false 
)
static

Check if IdxExpr is a valid parameter index for a function or instance method D.

May output an error.

Returns
true if IdxExpr is a valid index.

Definition at line 310 of file SemaDeclAttr.cpp.

◆ checkGuardedByAttrCommon()

static bool checkGuardedByAttrCommon ( Sema S,
Decl D,
const ParsedAttr AL,
Expr *&  Arg 
)
static

Definition at line 646 of file SemaDeclAttr.cpp.

◆ checkIBOutletCommon()

static bool checkIBOutletCommon ( Sema S,
Decl D,
const ParsedAttr AL 
)
static

Definition at line 1281 of file SemaDeclAttr.cpp.

◆ checkLockFunAttrCommon()

static bool checkLockFunAttrCommon ( Sema S,
Decl D,
const ParsedAttr AL,
SmallVectorImpl< Expr *> &  Args 
)
static

Definition at line 724 of file SemaDeclAttr.cpp.

◆ checkParamIsIntegerType()

template<typename AttrInfo >
static bool checkParamIsIntegerType ( Sema S,
const FunctionDecl FD,
const AttrInfo &  AI,
unsigned  AttrArgNo 
)
static

Checks to be sure that the given parameter number is in bounds, and is an integral type.

Will emit appropriate diagnostics if this returns false.

AttrArgNo is used to actually retrieve the argument, so it's base-0.

Definition at line 764 of file SemaDeclAttr.cpp.

◆ checkPositiveIntArgument()

template<typename AttrInfo >
static bool checkPositiveIntArgument ( Sema S,
const AttrInfo &  AI,
const Expr Expr,
int &  Val,
unsigned  Idx = UINT_MAX 
)
static

Wrapper around checkUInt32Argument, with an extra check to be sure that the result will fit into a regular (signed) int.

All args have the same purpose as they do in checkUInt32Argument.

Definition at line 273 of file SemaDeclAttr.cpp.

◆ checkRecordTypeForCapability()

static bool checkRecordTypeForCapability ( Sema S,
QualType  Ty 
)
static

Definition at line 476 of file SemaDeclAttr.cpp.

◆ checkTryLockFunAttrCommon()

static bool checkTryLockFunAttrCommon ( Sema S,
Decl D,
const ParsedAttr AL,
SmallVectorImpl< Expr *> &  Args 
)
static

Definition at line 821 of file SemaDeclAttr.cpp.

◆ checkTypedefTypeForCapability()

static bool checkTypedefTypeForCapability ( QualType  Ty)
static

Definition at line 508 of file SemaDeclAttr.cpp.

References clang::Type::getAs(), and clang::Decl::hasAttr().

◆ checkUInt32Argument()

template<typename AttrInfo >
static bool checkUInt32Argument ( Sema S,
const AttrInfo &  AI,
const Expr Expr,
uint32_t &  Val,
unsigned  Idx = UINT_MAX 
)
static

If Expr is a valid integer constant, get the value of the integer expression and return success or failure.

May output an error.

Definition at line 243 of file SemaDeclAttr.cpp.

Referenced by clang::Sema::CheckRegparmAttr().

◆ checkUnusedDeclAttributes()

static void checkUnusedDeclAttributes ( Sema S,
const ParsedAttributesView A 
)
static

checkUnusedDeclAttributes - Check a list of attributes to see if it contains any decl attributes that we should warn about.

Definition at line 6636 of file SemaDeclAttr.cpp.

Referenced by clang::Sema::ActOnCastExpr(), clang::Sema::ActOnTypeName(), clang::Sema::checkUnusedDeclAttributes(), and clang::Sema::CorrectDelayedTyposInExpr().

◆ createAttributeInsertion()

static Optional<AttributeInsertion> createAttributeInsertion ( const NamedDecl D,
const SourceManager SM,
const LangOptions LangOpts 
)
static

Returns a source location in which it's appropriate to insert a new attribute for the given declaration .

Definition at line 7070 of file SemaDeclAttr.cpp.

References clang::Lexer::getLocForEndOfToken(), clang::SourceLocation::isInvalid(), and SM.

◆ DoEmitAvailabilityWarning()

static void DoEmitAvailabilityWarning ( Sema S,
AvailabilityResult  K,
Decl Ctx,
const NamedDecl ReferringDecl,
const NamedDecl OffendingDecl,
StringRef  Message,
ArrayRef< SourceLocation Locs,
const ObjCInterfaceDecl UnknownObjCClass,
const ObjCPropertyDecl ObjCProperty,
bool  ObjCPropertyAccess 
)
static

Actually emit an availability diagnostic for a reference to an unavailable decl.

Parameters
CtxThe context that the reference occurred in
ReferringDeclThe exact declaration that was referenced.
OffendingDeclA related decl to ReferringDecl that has an availability attribute corresponding to K attached to it. Note that this may not be the same as ReferringDecl, i.e. if an EnumDecl is annotated and we refer to a member EnumConstantDecl, ReferringDecl is the EnumConstantDecl and OffendingDecl is the EnumDecl.

Definition at line 7100 of file SemaDeclAttr.cpp.

◆ EmitAvailabilityWarning()

static void EmitAvailabilityWarning ( Sema S,
AvailabilityResult  AR,
const NamedDecl ReferringDecl,
const NamedDecl OffendingDecl,
StringRef  Message,
ArrayRef< SourceLocation Locs,
const ObjCInterfaceDecl UnknownObjCClass,
const ObjCPropertyDecl ObjCProperty,
bool  ObjCPropertyAccess 
)
static

Definition at line 7397 of file SemaDeclAttr.cpp.

Referenced by clang::Sema::DiagnoseAvailabilityOfDecl().

◆ findEnclosingDeclToAnnotate()

static NamedDecl* findEnclosingDeclToAnnotate ( Decl OrigCtx)
static

Definition at line 6993 of file SemaDeclAttr.cpp.

References clang::Decl::getLocEnd(), and clang::Decl::getLocStart().

◆ getAttrForPlatform()

static const AvailabilityAttr* getAttrForPlatform ( ASTContext Context,
const Decl D 
)
static

Definition at line 6846 of file SemaDeclAttr.cpp.

◆ getAttrLoc() [1/2]

template<typename AttrInfo >
static std::enable_if<std::is_base_of<Attr, AttrInfo>::value, SourceLocation>::type getAttrLoc ( const AttrInfo &  AL)
static

A helper function to provide Attribute Location for the Attr types AND the ParsedAttr.

Definition at line 223 of file SemaDeclAttr.cpp.

◆ getAttrLoc() [2/2]

static SourceLocation getAttrLoc ( const ParsedAttr AL)
static

Definition at line 226 of file SemaDeclAttr.cpp.

References clang::ParsedAttr::getLoc().

◆ getAttrName() [1/2]

template<typename AttrInfo >
static std::enable_if<std::is_base_of<Attr, AttrInfo>::value, const AttrInfo *>::type getAttrName ( const AttrInfo &  AL)
static

A helper function to provide Attribute Name for the Attr types AND the ParsedAttr.

Definition at line 233 of file SemaDeclAttr.cpp.

◆ getAttrName() [2/2]

static const IdentifierInfo* getAttrName ( const ParsedAttr AL)
static

Definition at line 236 of file SemaDeclAttr.cpp.

References clang::ParsedAttr::getName().

◆ getFormatAttrKind()

static FormatAttrKind getFormatAttrKind ( StringRef  Format)
static

getFormatAttrKind - Map from format attribute names to supported format types.

Definition at line 3168 of file SemaDeclAttr.cpp.

References CFStringFormat, IgnoredFormat, InvalidFormat, NSStringFormat, StrftimeFormat, and SupportedFormat.

◆ getFunctionOrMethodNumParams()

static unsigned getFunctionOrMethodNumParams ( const Decl D)
static

getFunctionOrMethodNumParams - Return number of function or method parameters.

It is an error to call this on a K&R function (use hasFunctionProto first).

Definition at line 88 of file SemaDeclAttr.cpp.

References clang::Decl::getFunctionType().

◆ getFunctionOrMethodParamRange()

static SourceRange getFunctionOrMethodParamRange ( const Decl D,
unsigned  Idx 
)
static

Definition at line 105 of file SemaDeclAttr.cpp.

◆ getFunctionOrMethodParamType()

static QualType getFunctionOrMethodParamType ( const Decl D,
unsigned  Idx 
)
static

Definition at line 96 of file SemaDeclAttr.cpp.

References clang::Decl::getFunctionType().

◆ getFunctionOrMethodResultSourceRange()

static SourceRange getFunctionOrMethodResultSourceRange ( const Decl D)
static

Definition at line 121 of file SemaDeclAttr.cpp.

◆ getFunctionOrMethodResultType()

static QualType getFunctionOrMethodResultType ( const Decl D)
static

Definition at line 115 of file SemaDeclAttr.cpp.

References clang::Decl::getFunctionType().

Referenced by clang::Sema::AddAllocAlignAttr().

◆ getNumAttributeArgs()

static unsigned getNumAttributeArgs ( const ParsedAttr AL)
static

◆ getRecordType()

static const RecordType* getRecordType ( QualType  QT)
static

Checks that the passed in QualType either is of RecordType or points to RecordType.

Returns the relevant RecordType, null if it does not exit.

Definition at line 465 of file SemaDeclAttr.cpp.

References clang::Type::getAs(), and clang::Type::getPointeeType().

Referenced by clang::CodeGen::CodeGenFunction::EmitLambdaBlockInvokeBody(), clang::CodeGen::CodeGenFunction::EmitLambdaDelegatingInvokeBody(), and clang::ASTContext::getTypeDeclType().

◆ handleAbiTagAttr()

static void handleAbiTagAttr ( Sema S,
Decl D,
const ParsedAttr AL 
)
static

Definition at line 5131 of file SemaDeclAttr.cpp.

◆ handleAcquireCapabilityAttr()

static void handleAcquireCapabilityAttr ( Sema S,
Decl D,
const ParsedAttr AL 
)
static

Definition at line 5650 of file SemaDeclAttr.cpp.

◆ handleAcquiredAfterAttr()

static void handleAcquiredAfterAttr ( Sema S,
Decl D,
const ParsedAttr AL 
)
static

Definition at line 702 of file SemaDeclAttr.cpp.

◆ handleAcquiredBeforeAttr()

static void handleAcquiredBeforeAttr ( Sema S,
Decl D,
const ParsedAttr AL 
)
static

Definition at line 713 of file SemaDeclAttr.cpp.

◆ handleAliasAttr()

static void handleAliasAttr ( Sema S,
Decl D,
const ParsedAttr AL 
)
static

Definition at line 1788 of file SemaDeclAttr.cpp.

◆ handleAlignedAttr()

static void handleAlignedAttr ( Sema S,
Decl D,
const ParsedAttr AL 
)
static

Definition at line 3513 of file SemaDeclAttr.cpp.

◆ handleAlignValueAttr()

static void handleAlignValueAttr ( Sema S,
Decl D,
const ParsedAttr AL 
)
static

Definition at line 3463 of file SemaDeclAttr.cpp.

◆ handleAllocAlignAttr()

static void handleAllocAlignAttr ( Sema S,
Decl D,
const ParsedAttr AL 
)
static

Definition at line 1504 of file SemaDeclAttr.cpp.

◆ handleAllocSizeAttr()

static void handleAllocSizeAttr ( Sema S,
Decl D,
const ParsedAttr AL 
)
static

Definition at line 783 of file SemaDeclAttr.cpp.

◆ handleAlwaysInlineAttr()

static void handleAlwaysInlineAttr ( Sema S,
Decl D,
const ParsedAttr AL 
)
static

Definition at line 4041 of file SemaDeclAttr.cpp.

◆ handleAMDGPUFlatWorkGroupSizeAttr()

static void handleAMDGPUFlatWorkGroupSizeAttr ( Sema S,
Decl D,
const ParsedAttr AL 
)
static

Definition at line 5398 of file SemaDeclAttr.cpp.

◆ handleAMDGPUNumSGPRAttr()

static void handleAMDGPUNumSGPRAttr ( Sema S,
Decl D,
const ParsedAttr AL 
)
static

Definition at line 5455 of file SemaDeclAttr.cpp.

◆ handleAMDGPUNumVGPRAttr()

static void handleAMDGPUNumVGPRAttr ( Sema S,
Decl D,
const ParsedAttr AL 
)
static

Definition at line 5466 of file SemaDeclAttr.cpp.

◆ handleAMDGPUWavesPerEUAttr()

static void handleAMDGPUWavesPerEUAttr ( Sema S,
Decl D,
const ParsedAttr AL 
)
static

Definition at line 5426 of file SemaDeclAttr.cpp.

◆ handleAnalyzerNoReturnAttr()

static void handleAnalyzerNoReturnAttr ( Sema S,
Decl D,
const ParsedAttr AL 
)
static

Definition at line 1968 of file SemaDeclAttr.cpp.

◆ handleAnnotateAttr()

static void handleAnnotateAttr ( Sema S,
Decl D,
const ParsedAttr AL 
)
static

Definition at line 3445 of file SemaDeclAttr.cpp.

◆ handleAnyX86InterruptAttr()

static void handleAnyX86InterruptAttr ( Sema S,
Decl D,
const ParsedAttr AL 
)
static

Definition at line 5284 of file SemaDeclAttr.cpp.

◆ handleArgumentWithTypeTagAttr()

static void handleArgumentWithTypeTagAttr ( Sema S,
Decl D,
const ParsedAttr AL 
)
static

Definition at line 4558 of file SemaDeclAttr.cpp.

◆ handleARMInterruptAttr()

static void handleARMInterruptAttr ( Sema S,
Decl D,
const ParsedAttr AL 
)
static

Definition at line 5163 of file SemaDeclAttr.cpp.

◆ handleAssertCapabilityAttr()

static void handleAssertCapabilityAttr ( Sema S,
Decl D,
const ParsedAttr AL 
)
static

Definition at line 5640 of file SemaDeclAttr.cpp.

◆ handleAssertExclusiveLockAttr()

static void handleAssertExclusiveLockAttr ( Sema S,
Decl D,
const ParsedAttr AL 
)
static

Definition at line 745 of file SemaDeclAttr.cpp.

◆ handleAssertSharedLockAttr()

static void handleAssertSharedLockAttr ( Sema S,
Decl D,
const ParsedAttr AL 
)
static

Definition at line 733 of file SemaDeclAttr.cpp.

◆ handleAssumeAlignedAttr()

static void handleAssumeAlignedAttr ( Sema S,
Decl D,
const ParsedAttr AL 
)
static

Definition at line 1497 of file SemaDeclAttr.cpp.

◆ handleAttrWithMessage()

template<typename AttrTy >
static void handleAttrWithMessage ( Sema S,
Decl D,
const ParsedAttr AL 
)
static

Definition at line 2097 of file SemaDeclAttr.cpp.

◆ handleAvailabilityAttr()

static void handleAvailabilityAttr ( Sema S,
Decl D,
const ParsedAttr AL 
)
static

Definition at line 2341 of file SemaDeclAttr.cpp.

◆ handleAVRInterruptAttr()

static void handleAVRInterruptAttr ( Sema S,
Decl D,
const ParsedAttr AL 
)
static

Definition at line 5349 of file SemaDeclAttr.cpp.

◆ handleAVRSignalAttr()

static void handleAVRSignalAttr ( Sema S,
Decl D,
const ParsedAttr AL 
)
static

Definition at line 5362 of file SemaDeclAttr.cpp.

◆ handleBlocksAttr()

static void handleBlocksAttr ( Sema S,
Decl D,
const ParsedAttr AL 
)
static

Definition at line 2631 of file SemaDeclAttr.cpp.

◆ handleCallableWhenAttr()

static void handleCallableWhenAttr ( Sema S,
Decl D,
const ParsedAttr AL 
)
static

Definition at line 1077 of file SemaDeclAttr.cpp.

◆ handleCallConvAttr()

static void handleCallConvAttr ( Sema S,
Decl D,
const ParsedAttr AL 
)
static

Definition at line 4142 of file SemaDeclAttr.cpp.

◆ handleCapabilityAttr()

static void handleCapabilityAttr ( Sema S,
Decl D,
const ParsedAttr AL 
)
static

Definition at line 5616 of file SemaDeclAttr.cpp.

◆ handleCleanupAttr()

static void handleCleanupAttr ( Sema S,
Decl D,
const ParsedAttr AL 
)
static

Definition at line 3042 of file SemaDeclAttr.cpp.

◆ handleCodeSegAttr()

static void handleCodeSegAttr ( Sema S,
Decl D,
const ParsedAttr AL 
)
static

Definition at line 2957 of file SemaDeclAttr.cpp.

◆ handleCommonAttr()

static void handleCommonAttr ( Sema S,
Decl D,
const ParsedAttr AL 
)
static

Definition at line 1896 of file SemaDeclAttr.cpp.

◆ handleCommonAttributeFeatures()

static bool handleCommonAttributeFeatures ( Sema S,
Decl D,
const ParsedAttr AL 
)
static

Handles semantic checking for features that are common to all attributes, such as checking whether a parameter was properly specified, or the correct number of arguments were passed, etc.

Definition at line 5807 of file SemaDeclAttr.cpp.

◆ handleConstantAttr()

static void handleConstantAttr ( Sema S,
Decl D,
const ParsedAttr AL 
)
static

Definition at line 4064 of file SemaDeclAttr.cpp.

◆ handleConstructorAttr()

static void handleConstructorAttr ( Sema S,
Decl D,
const ParsedAttr AL 
)
static

Definition at line 2074 of file SemaDeclAttr.cpp.

◆ handleConsumableAttr()

static void handleConsumableAttr ( Sema S,
Decl D,
const ParsedAttr AL 
)
static

Definition at line 1038 of file SemaDeclAttr.cpp.

◆ handleCPUSpecificAttr()

static void handleCPUSpecificAttr ( Sema S,
Decl D,
const ParsedAttr AL 
)
static

Definition at line 1852 of file SemaDeclAttr.cpp.

◆ handleDeclspecThreadAttr()

static void handleDeclspecThreadAttr ( Sema S,
Decl D,
const ParsedAttr AL 
)
static

Definition at line 5113 of file SemaDeclAttr.cpp.

◆ handleDelayedAvailabilityCheck()

static void handleDelayedAvailabilityCheck ( Sema S,
DelayedDiagnostic DD,
Decl Ctx 
)
static

Definition at line 7329 of file SemaDeclAttr.cpp.

Referenced by clang::Sema::PopParsingDeclaration().

◆ handleDelayedForbiddenType()

static void handleDelayedForbiddenType ( Sema S,
DelayedDiagnostic DD,
Decl D 
)
static

Handle a delayed forbidden-type diagnostic.

Definition at line 6821 of file SemaDeclAttr.cpp.

Referenced by clang::Sema::PopParsingDeclaration().

◆ handleDependencyAttr()

static void handleDependencyAttr ( Sema S,
Scope Scope,
Decl D,
const ParsedAttr AL 
)
static

Definition at line 2045 of file SemaDeclAttr.cpp.

◆ handleDeprecatedAttr()

static void handleDeprecatedAttr ( Sema S,
Decl D,
const ParsedAttr AL 
)
static

Definition at line 5705 of file SemaDeclAttr.cpp.

◆ handleDestructorAttr()

static void handleDestructorAttr ( Sema S,
Decl D,
const ParsedAttr AL 
)
static

Definition at line 2085 of file SemaDeclAttr.cpp.

◆ handleDiagnoseIfAttr()

static void handleDiagnoseIfAttr ( Sema S,
Decl D,
const ParsedAttr AL 
)
static

Definition at line 976 of file SemaDeclAttr.cpp.

◆ handleDLLAttr()

static void handleDLLAttr ( Sema S,
Decl D,
const ParsedAttr A 
)
static

Definition at line 5546 of file SemaDeclAttr.cpp.

◆ handleEnableIfAttr()

static void handleEnableIfAttr ( Sema S,
Decl D,
const ParsedAttr AL 
)
static

Definition at line 919 of file SemaDeclAttr.cpp.

◆ handleEnumExtensibilityAttr()

static void handleEnumExtensibilityAttr ( Sema S,
Decl D,
const ParsedAttr AL 
)
static

Definition at line 3099 of file SemaDeclAttr.cpp.

◆ handleExclusiveTrylockFunctionAttr()

static void handleExclusiveTrylockFunctionAttr ( Sema S,
Decl D,
const ParsedAttr AL 
)
static

Definition at line 849 of file SemaDeclAttr.cpp.

◆ handleExternalSourceSymbolAttr()

static void handleExternalSourceSymbolAttr ( Sema S,
Decl D,
const ParsedAttr AL 
)
static

Definition at line 2455 of file SemaDeclAttr.cpp.

◆ handleExtVectorTypeAttr()

static void handleExtVectorTypeAttr ( Sema S,
Decl D,
const ParsedAttr AL 
)
static

Definition at line 1245 of file SemaDeclAttr.cpp.

◆ handleFormatArgAttr()

static void handleFormatArgAttr ( Sema S,
Decl D,
const ParsedAttr AL 
)
static

Handle attribute((format_arg((idx)))) attribute based on http://gcc.gnu.org/onlinedocs/gcc/Function-Attributes.html.

Definition at line 3123 of file SemaDeclAttr.cpp.

◆ handleFormatAttr()

static void handleFormatAttr ( Sema S,
Decl D,
const ParsedAttr AL 
)
static

Handle attribute((format(type,idx,firstarg))) attributes based on http://gcc.gnu.org/onlinedocs/gcc/Function-Attributes.html.

Definition at line 3250 of file SemaDeclAttr.cpp.

◆ handleGlobalAttr()

static void handleGlobalAttr ( Sema S,
Decl D,
const ParsedAttr AL 
)
static

Definition at line 4097 of file SemaDeclAttr.cpp.

◆ handleGNUInlineAttr()

static void handleGNUInlineAttr ( Sema S,
Decl D,
const ParsedAttr AL 
)
static

Definition at line 4130 of file SemaDeclAttr.cpp.

◆ handleGuardedByAttr()

static void handleGuardedByAttr ( Sema S,
Decl D,
const ParsedAttr AL 
)
static

Definition at line 660 of file SemaDeclAttr.cpp.

◆ handleIBOutlet()

static void handleIBOutlet ( Sema S,
Decl D,
const ParsedAttr AL 
)
static

Definition at line 1307 of file SemaDeclAttr.cpp.

◆ handleIBOutletCollection()

static void handleIBOutletCollection ( Sema S,
Decl D,
const ParsedAttr AL 
)
static

Definition at line 1316 of file SemaDeclAttr.cpp.

◆ handleIFuncAttr()

static void handleIFuncAttr ( Sema S,
Decl D,
const ParsedAttr AL 
)
static

Definition at line 1772 of file SemaDeclAttr.cpp.

◆ handleInitPriorityAttr()

static void handleInitPriorityAttr ( Sema S,
Decl D,
const ParsedAttr AL 
)
static

Handle attribute((init_priority(priority))) attributes based on http://gcc.gnu.org/onlinedocs/gcc/C_002b_002b-Attributes.html.

Definition at line 3189 of file SemaDeclAttr.cpp.

◆ handleInternalLinkageAttr()

static void handleInternalLinkageAttr ( Sema S,
Decl D,
const ParsedAttr AL 
)
static

Definition at line 5788 of file SemaDeclAttr.cpp.

◆ handleInterruptAttr()

static void handleInterruptAttr ( Sema S,
Decl D,
const ParsedAttr AL 
)
static

Definition at line 5375 of file SemaDeclAttr.cpp.

◆ handleLaunchBoundsAttr()

static void handleLaunchBoundsAttr ( Sema S,
Decl D,
const ParsedAttr AL 
)
static

Definition at line 4548 of file SemaDeclAttr.cpp.

◆ handleLayoutVersion()

static void handleLayoutVersion ( Sema S,
Decl D,
const ParsedAttr AL 
)
static

Definition at line 5502 of file SemaDeclAttr.cpp.

◆ handleLockReturnedAttr()

static void handleLockReturnedAttr ( Sema S,
Decl D,
const ParsedAttr AL 
)
static

Definition at line 860 of file SemaDeclAttr.cpp.

◆ handleLocksExcludedAttr()

static void handleLocksExcludedAttr ( Sema S,
Decl D,
const ParsedAttr AL 
)
static

Definition at line 873 of file SemaDeclAttr.cpp.

◆ handleMinSizeAttr()

static void handleMinSizeAttr ( Sema S,
Decl D,
const ParsedAttr AL 
)
static

Definition at line 4052 of file SemaDeclAttr.cpp.

◆ handleMinVectorWidthAttr()

static void handleMinVectorWidthAttr ( Sema S,
Decl D,
const ParsedAttr AL 
)
static

Definition at line 3023 of file SemaDeclAttr.cpp.

◆ handleMipsInterruptAttr()

static void handleMipsInterruptAttr ( Sema S,
Decl D,
const ParsedAttr AL 
)
static

Definition at line 5226 of file SemaDeclAttr.cpp.

◆ handleModeAttr()

static void handleModeAttr ( Sema S,
Decl D,
const ParsedAttr AL 
)
static

handleModeAttr - This attribute modifies the width of a decl with primitive type.

Despite what would be logical, the mode attribute is a decl attribute, not a type attribute: 'int ** __attribute((mode(HI))) *G;' tries to make 'G' be HImode, not an intermediate pointer.

Definition at line 3793 of file SemaDeclAttr.cpp.

◆ handleMSInheritanceAttr()

static void handleMSInheritanceAttr ( Sema S,
Decl D,
const ParsedAttr AL 
)
static

Definition at line 5097 of file SemaDeclAttr.cpp.

◆ handleMSP430InterruptAttr()

static void handleMSP430InterruptAttr ( Sema S,
Decl D,
const ParsedAttr AL 
)
static

Definition at line 5191 of file SemaDeclAttr.cpp.

◆ handleNakedAttr()

static void handleNakedAttr ( Sema S,
Decl D,
const ParsedAttr AL 
)
static

Definition at line 1908 of file SemaDeclAttr.cpp.

◆ handleNoCfCheckAttr()

static void handleNoCfCheckAttr ( Sema S,
Decl D,
const ParsedAttr Attrs 
)
static

Definition at line 1941 of file SemaDeclAttr.cpp.

◆ handleNoDebugAttr()

static void handleNoDebugAttr ( Sema S,
Decl D,
const ParsedAttr AL 
)
static

Definition at line 3949 of file SemaDeclAttr.cpp.

◆ handleNoEscapeAttr()

static void handleNoEscapeAttr ( Sema S,
Decl D,
const ParsedAttr AL 
)
static

Definition at line 1481 of file SemaDeclAttr.cpp.

◆ handleNonNullAttr()

static void handleNonNullAttr ( Sema S,
Decl D,
const ParsedAttr AL 
)
static

Definition at line 1402 of file SemaDeclAttr.cpp.

◆ handleNonNullAttrParameter()

static void handleNonNullAttrParameter ( Sema S,
ParmVarDecl D,
const ParsedAttr AL 
)
static

Definition at line 1447 of file SemaDeclAttr.cpp.

◆ handleNoReturnAttr()

static void handleNoReturnAttr ( Sema S,
Decl D,
const ParsedAttr Attrs 
)
static

Definition at line 1928 of file SemaDeclAttr.cpp.

◆ handleNoSanitizeAttr()

static void handleNoSanitizeAttr ( Sema S,
Decl D,
const ParsedAttr AL 
)
static

Definition at line 5745 of file SemaDeclAttr.cpp.

◆ handleNoSanitizeSpecificAttr()

static void handleNoSanitizeSpecificAttr ( Sema S,
Decl D,
const ParsedAttr AL 
)
static

Definition at line 5771 of file SemaDeclAttr.cpp.

◆ handleNSConsumedAttr()

static void handleNSConsumedAttr ( Sema S,
Decl D,
const ParsedAttr AL 
)
static

Definition at line 4653 of file SemaDeclAttr.cpp.

◆ handleNSReturnsRetainedAttr()

static void handleNSReturnsRetainedAttr ( Sema S,
Decl D,
const ParsedAttr AL 
)
static

Definition at line 4701 of file SemaDeclAttr.cpp.

◆ handleObjCBoxable()

static void handleObjCBoxable ( Sema S,
Decl D,
const ParsedAttr AL 
)
static

Definition at line 4959 of file SemaDeclAttr.cpp.

◆ handleObjCBridgeAttr()

static void handleObjCBridgeAttr ( Sema S,
Decl D,
const ParsedAttr AL 
)
static

Definition at line 4867 of file SemaDeclAttr.cpp.

◆ handleObjCBridgeMutableAttr()

static void handleObjCBridgeMutableAttr ( Sema S,
Decl D,
const ParsedAttr AL 
)
static

Definition at line 4896 of file SemaDeclAttr.cpp.

◆ handleObjCBridgeRelatedAttr()

static void handleObjCBridgeRelatedAttr ( Sema S,
Decl D,
const ParsedAttr AL 
)
static

Definition at line 4910 of file SemaDeclAttr.cpp.

◆ handleObjCDesignatedInitializer()

static void handleObjCDesignatedInitializer ( Sema S,
Decl D,
const ParsedAttr AL 
)
static

Definition at line 4928 of file SemaDeclAttr.cpp.

◆ handleObjCIndependentClass()

static void handleObjCIndependentClass ( Sema S,
Decl D,
const ParsedAttr AL 
)
static

Definition at line 2615 of file SemaDeclAttr.cpp.

◆ handleObjCMethodFamilyAttr()

static void handleObjCMethodFamilyAttr ( Sema S,
Decl D,
const ParsedAttr AL 
)
static

Definition at line 2558 of file SemaDeclAttr.cpp.

◆ handleObjCNSObject()

static void handleObjCNSObject ( Sema S,
Decl D,
const ParsedAttr AL 
)
static

Definition at line 2586 of file SemaDeclAttr.cpp.

◆ handleObjCOwnershipAttr()

static void handleObjCOwnershipAttr ( Sema S,
Decl D,
const ParsedAttr AL 
)
static

Definition at line 4982 of file SemaDeclAttr.cpp.

◆ handleObjCPreciseLifetimeAttr()

static void handleObjCPreciseLifetimeAttr ( Sema S,
Decl D,
const ParsedAttr AL 
)
static

Definition at line 4989 of file SemaDeclAttr.cpp.

◆ handleObjCRequiresSuperAttr()

static void handleObjCRequiresSuperAttr ( Sema S,
Decl D,
const ParsedAttr Attrs 
)
static

Definition at line 4846 of file SemaDeclAttr.cpp.

◆ handleObjCReturnsInnerPointerAttr()

static void handleObjCReturnsInnerPointerAttr ( Sema S,
Decl D,
const ParsedAttr Attrs 
)
static

Definition at line 4818 of file SemaDeclAttr.cpp.

◆ handleObjCRuntimeName()

static void handleObjCRuntimeName ( Sema S,
Decl D,
const ParsedAttr AL 
)
static

Definition at line 4945 of file SemaDeclAttr.cpp.

◆ handleObjCSuppresProtocolAttr()

static void handleObjCSuppresProtocolAttr ( Sema S,
Decl D,
const ParsedAttr AL 
)
static

Definition at line 2107 of file SemaDeclAttr.cpp.

◆ handleOpenCLAccessAttr()

static void handleOpenCLAccessAttr ( Sema S,
Decl D,
const ParsedAttr AL 
)
static

Definition at line 5847 of file SemaDeclAttr.cpp.

◆ handleOpenCLNoSVMAttr()

static void handleOpenCLNoSVMAttr ( Sema S,
Decl D,
const ParsedAttr AL 
)
static

Definition at line 5795 of file SemaDeclAttr.cpp.

◆ handleOptimizeNoneAttr()

static void handleOptimizeNoneAttr ( Sema S,
Decl D,
const ParsedAttr AL 
)
static

Definition at line 4058 of file SemaDeclAttr.cpp.

◆ handleOwnershipAttr()

static void handleOwnershipAttr ( Sema S,
Decl D,
const ParsedAttr AL 
)
static

Definition at line 1603 of file SemaDeclAttr.cpp.

◆ handlePackedAttr()

static void handlePackedAttr ( Sema S,
Decl D,
const ParsedAttr AL 
)
static

Definition at line 1250 of file SemaDeclAttr.cpp.

◆ handleParameterABIAttr()

static void handleParameterABIAttr ( Sema S,
Decl D,
const ParsedAttr Attrs,
ParameterABI  Abi 
)
static

Definition at line 4396 of file SemaDeclAttr.cpp.

◆ handleParamTypestateAttr()

static void handleParamTypestateAttr ( Sema S,
Decl D,
const ParsedAttr AL 
)
static

Definition at line 1114 of file SemaDeclAttr.cpp.

◆ handlePassObjectSizeAttr()

static void handlePassObjectSizeAttr ( Sema S,
Decl D,
const ParsedAttr AL 
)
static

Definition at line 1003 of file SemaDeclAttr.cpp.

◆ handlePtGuardedByAttr()

static void handlePtGuardedByAttr ( Sema S,
Decl D,
const ParsedAttr AL 
)
static

Definition at line 669 of file SemaDeclAttr.cpp.

◆ handlePtGuardedVarAttr()

static void handlePtGuardedVarAttr ( Sema S,
Decl D,
const ParsedAttr AL 
)
static

Definition at line 637 of file SemaDeclAttr.cpp.

◆ handleReleaseCapabilityAttr()

static void handleReleaseCapabilityAttr ( Sema S,
Decl D,
const ParsedAttr AL 
)
static

Definition at line 5676 of file SemaDeclAttr.cpp.

◆ handleRequiresCapabilityAttr()

static void handleRequiresCapabilityAttr ( Sema S,
Decl D,
const ParsedAttr AL 
)
static

Definition at line 5687 of file SemaDeclAttr.cpp.

◆ handleRestrictAttr()

static void handleRestrictAttr ( Sema S,
Decl D,
const ParsedAttr AL 
)
static

Definition at line 1840 of file SemaDeclAttr.cpp.

◆ handleReturnsNonNullAttr()

static void handleReturnsNonNullAttr ( Sema S,
Decl D,
const ParsedAttr AL 
)
static

Definition at line 1469 of file SemaDeclAttr.cpp.

◆ handleReturnTypestateAttr()

static void handleReturnTypestateAttr ( Sema S,
Decl D,
const ParsedAttr AL 
)
static

Definition at line 1150 of file SemaDeclAttr.cpp.

◆ handleSectionAttr()

static void handleSectionAttr ( Sema S,
Decl D,
const ParsedAttr AL 
)
static

Definition at line 2901 of file SemaDeclAttr.cpp.

◆ handleSentinelAttr()

static void handleSentinelAttr ( Sema S,
Decl D,
const ParsedAttr AL 
)
static

Definition at line 2651 of file SemaDeclAttr.cpp.

◆ handleSetTypestateAttr()

static void handleSetTypestateAttr ( Sema S,
Decl D,
const ParsedAttr AL 
)
static

Definition at line 1197 of file SemaDeclAttr.cpp.

◆ handleSharedAttr()

static void handleSharedAttr ( Sema S,
Decl D,
const ParsedAttr AL 
)
static

Definition at line 4077 of file SemaDeclAttr.cpp.

◆ handleSharedTrylockFunctionAttr()

static void handleSharedTrylockFunctionAttr ( Sema S,
Decl D,
const ParsedAttr AL 
)
static

Definition at line 838 of file SemaDeclAttr.cpp.

◆ handleSimpleAttribute()

template<typename AttrType >
static void handleSimpleAttribute ( Sema S,
Decl D,
const ParsedAttr AL 
)
static

Applies the given attribute to the Decl without performing any additional semantic checking.

Definition at line 390 of file SemaDeclAttr.cpp.

◆ handleSimpleAttributeWithExclusions() [1/2]

template<typename AttrType >
static void handleSimpleAttributeWithExclusions ( Sema S,
Decl D,
const ParsedAttr AL 
)
static

Definition at line 396 of file SemaDeclAttr.cpp.

◆ handleSimpleAttributeWithExclusions() [2/2]

template<typename AttrType , typename IncompatibleAttrType , typename... IncompatibleAttrTypes>
static void handleSimpleAttributeWithExclusions ( Sema S,
Decl D,
const ParsedAttr AL 
)
static

Applies the given attribute to the Decl so long as the Decl doesn't already have one of the given incompatible attributes.

Definition at line 405 of file SemaDeclAttr.cpp.

◆ handleSubGroupSize()

static void handleSubGroupSize ( Sema S,
Decl D,
const ParsedAttr AL 
)
static

Definition at line 2817 of file SemaDeclAttr.cpp.

◆ handleSuppressAttr()

static void handleSuppressAttr ( Sema S,
Decl D,
const ParsedAttr AL 
)
static

Definition at line 4243 of file SemaDeclAttr.cpp.

◆ handleTargetAttr()

static void handleTargetAttr ( Sema S,
Decl D,
const ParsedAttr AL 
)
static

Definition at line 3010 of file SemaDeclAttr.cpp.

◆ handleTestTypestateAttr()

static void handleTestTypestateAttr ( Sema S,
Decl D,
const ParsedAttr AL 
)
static

Definition at line 1221 of file SemaDeclAttr.cpp.

◆ handleTLSModelAttr()

static void handleTLSModelAttr ( Sema S,
Decl D,
const ParsedAttr AL 
)
static

Definition at line 1821 of file SemaDeclAttr.cpp.

◆ handleTransparentUnionAttr()

static void handleTransparentUnionAttr ( Sema S,
Decl D,
const ParsedAttr AL 
)
static

Definition at line 3372 of file SemaDeclAttr.cpp.

Referenced by clang::Sema::ProcessDeclAttributeDelayed().

◆ handleTryAcquireCapabilityAttr()

static void handleTryAcquireCapabilityAttr ( Sema S,
Decl D,
const ParsedAttr AL 
)
static

Definition at line 5662 of file SemaDeclAttr.cpp.

◆ handleTypeTagForDatatypeAttr()

static void handleTypeTagForDatatypeAttr ( Sema S,
Decl D,
const ParsedAttr AL 
)
static

Definition at line 4591 of file SemaDeclAttr.cpp.

◆ handleUnusedAttr()

static void handleUnusedAttr ( Sema S,
Decl D,
const ParsedAttr AL 
)
static

Definition at line 2062 of file SemaDeclAttr.cpp.

◆ handleUuidAttr()

static void handleUuidAttr ( Sema S,
Decl D,
const ParsedAttr AL 
)
static

Definition at line 5047 of file SemaDeclAttr.cpp.

◆ handleVecReturnAttr()

static void handleVecReturnAttr ( Sema S,
Decl D,
const ParsedAttr AL 
)
static

Definition at line 1990 of file SemaDeclAttr.cpp.

◆ handleVecTypeHint()

static void handleVecTypeHint ( Sema S,
Decl D,
const ParsedAttr AL 
)
static

Definition at line 2838 of file SemaDeclAttr.cpp.

◆ handleVisibilityAttr()

static void handleVisibilityAttr ( Sema S,
Decl D,
const ParsedAttr AL,
bool  isTypeVisibility 
)
static

Definition at line 2505 of file SemaDeclAttr.cpp.

◆ handleWarnUnusedResult()

static void handleWarnUnusedResult ( Sema S,
Decl D,
const ParsedAttr AL 
)
static

Definition at line 2742 of file SemaDeclAttr.cpp.

◆ handleWeakImportAttr()

static void handleWeakImportAttr ( Sema S,
Decl D,
const ParsedAttr AL 
)
static

Definition at line 2767 of file SemaDeclAttr.cpp.

◆ handleWeakRefAttr()

static void handleWeakRefAttr ( Sema S,
Decl D,
const ParsedAttr AL 
)
static

Definition at line 1710 of file SemaDeclAttr.cpp.

◆ handleWorkGroupSize()

template<typename WorkGroupAttr >
static void handleWorkGroupSize ( Sema S,
Decl D,
const ParsedAttr AL 
)
static

Definition at line 2792 of file SemaDeclAttr.cpp.

◆ handleX86ForceAlignArgPointerAttr()

static void handleX86ForceAlignArgPointerAttr ( Sema S,
Decl D,
const ParsedAttr AL 
)
static

Definition at line 5477 of file SemaDeclAttr.cpp.

◆ handleXRayLogArgsAttr()

static void handleXRayLogArgsAttr ( Sema S,
Decl D,
const ParsedAttr AL 
)
static

Definition at line 4621 of file SemaDeclAttr.cpp.

◆ hasDeclarator()

static bool hasDeclarator ( const Decl D)
static

Return true if the given decl has a declarator that should have been processed by Sema::GetTypeForDeclarator.

Definition at line 70 of file SemaDeclAttr.cpp.

◆ hasFunctionProto()

static bool hasFunctionProto ( const Decl D)
static

hasFunctionProto - Return true if the given decl has a argument information.

This decl should have already passed isFunctionOrMethod or isFunctionOrMethodOrBlock.

Definition at line 79 of file SemaDeclAttr.cpp.

References clang::Decl::getFunctionType().

◆ isCapabilityExpr()

static bool isCapabilityExpr ( Sema S,
const Expr Ex 
)
static

Definition at line 530 of file SemaDeclAttr.cpp.

◆ isCFStringType()

static bool isCFStringType ( QualType  T,
ASTContext Ctx 
)
inlinestatic

◆ isForbiddenTypeAllowed()

static bool isForbiddenTypeAllowed ( Sema S,
Decl D,
const DelayedDiagnostic diag,
UnavailableAttr::ImplicitReason &  reason 
)
static

Is the given declaration allowed to use a forbidden type? If so, it'll still be annotated with an attribute that makes it illegal to actually use.

Definition at line 6786 of file SemaDeclAttr.cpp.

◆ isFunctionOrMethod()

static bool isFunctionOrMethod ( const Decl D)
static

isFunctionOrMethod - Return true if the given decl has function type (function or function-typed variable) or an Objective-C method.

Definition at line 58 of file SemaDeclAttr.cpp.

References clang::Decl::getFunctionType().

Referenced by isFunctionOrMethodOrBlock(), clang::DeclContext::isLookupContext(), and LookupVisibleDecls().

◆ isFunctionOrMethodOrBlock()

static bool isFunctionOrMethodOrBlock ( const Decl D)
static

Return true if the given decl has function type (function or function-typed variable) or an Objective-C method or a block.

Definition at line 64 of file SemaDeclAttr.cpp.

References isFunctionOrMethod().

◆ isFunctionOrMethodVariadic()

static bool isFunctionOrMethodVariadic ( const Decl D)
static

Definition at line 129 of file SemaDeclAttr.cpp.

References clang::Decl::getFunctionType().

◆ isGlobalVar()

static bool isGlobalVar ( const Decl D)
static

Definition at line 5739 of file SemaDeclAttr.cpp.

◆ isInstanceMethod()

static bool isInstanceMethod ( const Decl D)
static

◆ isIntOrBool()

static bool isIntOrBool ( Expr Exp)
static

Check if the passed-in expression is of type int or bool.

Definition at line 415 of file SemaDeclAttr.cpp.

References clang::Expr::getType(), clang::Type::isBooleanType(), and clang::Type::isIntegerType().

◆ isNSStringType()

static bool isNSStringType ( QualType  T,
ASTContext Ctx 
)
inlinestatic

◆ isValidSubjectOfCFAttribute()

static bool isValidSubjectOfCFAttribute ( Sema S,
QualType  QT 
)
static

Definition at line 4648 of file SemaDeclAttr.cpp.

Referenced by clang::Sema::AddNSConsumedAttr().

◆ isValidSubjectOfNSAttribute()

static bool isValidSubjectOfNSAttribute ( Sema S,
QualType  QT 
)
static

Definition at line 4643 of file SemaDeclAttr.cpp.

Referenced by clang::Sema::AddNSConsumedAttr().

◆ isValidSubjectOfNSReturnsRetainedAttribute()

static bool isValidSubjectOfNSReturnsRetainedAttribute ( QualType  QT)
static

◆ isValidSwiftContextType()

static bool isValidSwiftContextType ( QualType  Ty)
static

◆ isValidSwiftErrorResultType()

static bool isValidSwiftErrorResultType ( QualType  Ty)
static

Pointers and references to pointers in the default address space.

Definition at line 4383 of file SemaDeclAttr.cpp.

References clang::Qualifiers::empty(), clang::Type::getAs(), clang::Type::getPointeeType(), clang::QualType::getQualifiers(), clang::Type::isDependentType(), and isValidSwiftContextType().

◆ isValidSwiftIndirectResultType()

static bool isValidSwiftIndirectResultType ( QualType  Ty)
static

Pointers and references in the default address space.

Definition at line 4371 of file SemaDeclAttr.cpp.

References clang::Default, clang::QualType::getAddressSpace(), clang::Type::getAs(), clang::Type::getPointeeType(), and clang::Type::isDependentType().

◆ makeLaunchBoundsArgExpr()

static Expr* makeLaunchBoundsArgExpr ( Sema S,
Expr E,
const CUDALaunchBoundsAttr &  AL,
const unsigned  Idx 
)
static

Definition at line 4493 of file SemaDeclAttr.cpp.

◆ mergeVisibilityAttr()

template<class T >
static T* mergeVisibilityAttr ( Sema S,
Decl D,
SourceRange  range,
typename T::VisibilityType  value,
unsigned  attrSpellingListIndex 
)
static

Definition at line 2476 of file SemaDeclAttr.cpp.

◆ normalizeName()

static bool normalizeName ( StringRef &  AttrName)
static

Normalize the attribute, foo becomes foo.

Returns true if normalization was applied.

Definition at line 1594 of file SemaDeclAttr.cpp.

◆ parseModeAttrArg()

static void parseModeAttrArg ( Sema S,
StringRef  Str,
unsigned &  DestWidth,
bool IntegerMode,
bool ComplexMode 
)
static

parseModeAttrArg - Parses attribute mode string and returns parsed type attribute.

Definition at line 3733 of file SemaDeclAttr.cpp.

◆ ProcessDeclAttribute()

static void ProcessDeclAttribute ( Sema S,
Scope scope,
Decl D,
const ParsedAttr AL,
bool  IncludeCXX11Attributes 
)
static

ProcessDeclAttribute - Apply the specific attribute to the specified decl if the attribute applies to decls.

If the attribute is a type attribute, just silently ignore it if a GNU attribute.

Definition at line 5887 of file SemaDeclAttr.cpp.

Referenced by clang::Sema::ProcessAccessDeclAttributeList().

◆ shouldDiagnoseAvailabilityByDefault()

static bool shouldDiagnoseAvailabilityByDefault ( const ASTContext Context,
const VersionTuple &  DeploymentVersion,
const VersionTuple &  DeclVersion 
)
static

Definition at line 6968 of file SemaDeclAttr.cpp.

◆ ShouldDiagnoseAvailabilityInContext()

static bool ShouldDiagnoseAvailabilityInContext ( Sema S,
AvailabilityResult  K,
VersionTuple  DeclVersion,
Decl Ctx 
)
static

whether we should emit a diagnostic for K and DeclVersion in the context of Ctx.

For example, we should emit an unavailable diagnostic in a deprecated context, but not the other way around.

Definition at line 6921 of file SemaDeclAttr.cpp.

◆ ShouldDiagnoseAvailabilityOfDecl()

static std::pair<AvailabilityResult, const NamedDecl *> ShouldDiagnoseAvailabilityOfDecl ( const NamedDecl D,
std::string *  Message 
)
static

The diagnostic we should emit for D, and the declaration that originated it, or AR_Available.

Parameters
DThe declaration to check.
MessageIf non-null, this will be populated with the message from the availability attribute that is selected.

Definition at line 6881 of file SemaDeclAttr.cpp.

References clang::AR_Available, and clang::Decl::getAvailability().

Referenced by clang::Sema::DiagnoseAvailabilityOfDecl().

◆ threadSafetyCheckIsPointer()

static bool threadSafetyCheckIsPointer ( Sema S,
const Decl D,
const ParsedAttr AL 
)
static

Check if passed in Decl is a pointer type.

Note that this function may produce an error message.

Returns
true if the Decl is a pointer type; false otherwise

Definition at line 440 of file SemaDeclAttr.cpp.

◆ threadSafetyCheckIsSmartPointer()

static bool threadSafetyCheckIsSmartPointer ( Sema S,
const RecordType RT 
)
static

Definition at line 423 of file SemaDeclAttr.cpp.

◆ tryParseObjCMethodName()

static Optional<unsigned> tryParseObjCMethodName ( StringRef  Name,
SmallVectorImpl< StringRef > &  SlotNames,
const LangOptions LangOpts 
)
static

Tries to parse a string as ObjC method name.

Parameters
NameThe string to parse. Expected to originate from availability attribute argument.
SlotNamesThe vector that will be populated with slot names. In case of unsuccessful parsing can contain invalid data.
Returns
A number of method parameters if parsing was successful, None otherwise.

Definition at line 7037 of file SemaDeclAttr.cpp.

◆ typeHasCapability()

static bool typeHasCapability ( Sema S,
QualType  Ty 
)
static

Definition at line 520 of file SemaDeclAttr.cpp.

◆ versionsMatch()

static bool versionsMatch ( const VersionTuple &  X,
const VersionTuple &  Y,
bool  BeforeIsOkay 
)
static

Check whether the two versions match.

If either version tuple is empty, then they are assumed to match. If BeforeIsOkay is true, then X can be less than or equal to Y.

Definition at line 2163 of file SemaDeclAttr.cpp.

Referenced by clang::Sema::mergeAvailabilityAttr().