clang 20.0.0git
|
Represents a prototype with parameter type info, e.g. More...
#include "clang/AST/Type.h"
Classes | |
struct | ExceptionSpecInfo |
Holds information about the various types of exception specification. More... | |
struct | ExtProtoInfo |
Extra information about a function prototype. More... | |
Public Types | |
using | param_type_iterator = const QualType * |
using | exception_iterator = const QualType * |
Public Types inherited from clang::FunctionType | |
enum | AArch64SMETypeAttributes : unsigned { SME_NormalFunction = 0 , SME_PStateSMEnabledMask = 1 << 0 , SME_PStateSMCompatibleMask = 1 << 1 , SME_ZAShift = 2 , SME_ZAMask = 0b111 << SME_ZAShift , SME_ZT0Shift = 5 , SME_ZT0Mask = 0b111 << SME_ZT0Shift , SME_AttributeMask } |
The AArch64 SME ACLE (Arm C/C++ Language Extensions) define a number of function type attributes that can be set on function types, including function pointers. More... | |
enum | ArmStateValue : unsigned { ARM_None = 0 , ARM_Preserves = 1 , ARM_In = 2 , ARM_Out = 3 , ARM_InOut = 4 } |
Public Types inherited from clang::Type | |
enum | TypeClass |
enum | ScalarTypeKind { STK_CPointer , STK_BlockPointer , STK_ObjCObjectPointer , STK_MemberPointer , STK_Bool , STK_Integral , STK_Floating , STK_IntegralComplex , STK_FloatingComplex , STK_FixedPoint } |
Public Member Functions | |
unsigned | getNumParams () const |
QualType | getParamType (unsigned i) const |
ArrayRef< QualType > | getParamTypes () const |
ExtProtoInfo | getExtProtoInfo () const |
ExceptionSpecificationType | getExceptionSpecType () const |
Get the kind of exception specification on this function. | |
bool | hasExceptionSpec () const |
Return whether this function has any kind of exception spec. | |
bool | hasDynamicExceptionSpec () const |
Return whether this function has a dynamic (throw) exception spec. | |
bool | hasNoexceptExceptionSpec () const |
Return whether this function has a noexcept exception spec. | |
bool | hasDependentExceptionSpec () const |
Return whether this function has a dependent exception spec. | |
bool | hasInstantiationDependentExceptionSpec () const |
Return whether this function has an instantiation-dependent exception spec. | |
ExceptionSpecInfo | getExceptionSpecInfo () const |
Return all the available information about this type's exception spec. | |
unsigned | getNumExceptions () const |
Return the number of types in the exception specification. | |
QualType | getExceptionType (unsigned i) const |
Return the ith exception type, where 0 <= i < getNumExceptions(). | |
Expr * | getNoexceptExpr () const |
Return the expression inside noexcept(expression), or a null pointer if there is none (because the exception spec is not of this form). | |
FunctionDecl * | getExceptionSpecDecl () const |
If this function type has an exception specification which hasn't been determined yet (either because it has not been evaluated or because it has not been instantiated), this is the function whose exception specification is represented by this type. | |
FunctionDecl * | getExceptionSpecTemplate () const |
If this function type has an uninstantiated exception specification, this is the function whose exception specification should be instantiated to find the exception specification for this type. | |
CanThrowResult | canThrow () const |
Determine whether this function type has a non-throwing exception specification. | |
bool | isNothrow (bool ResultIfDependent=false) const |
Determine whether this function type has a non-throwing exception specification. | |
bool | isVariadic () const |
Whether this function prototype is variadic. | |
SourceLocation | getEllipsisLoc () const |
bool | isTemplateVariadic () const |
Determines whether this function prototype contains a parameter pack at the end. | |
bool | hasTrailingReturn () const |
Whether this function prototype has a trailing return type. | |
Qualifiers | getMethodQuals () const |
RefQualifierKind | getRefQualifier () const |
Retrieve the ref-qualifier associated with this function type. | |
ArrayRef< QualType > | param_types () const |
param_type_iterator | param_type_begin () const |
param_type_iterator | param_type_end () const |
ArrayRef< QualType > | exceptions () const |
exception_iterator | exception_begin () const |
exception_iterator | exception_end () const |
bool | hasExtParameterInfos () const |
Is there any interesting extra information for any of the parameters of this function type? | |
ArrayRef< ExtParameterInfo > | getExtParameterInfos () const |
const ExtParameterInfo * | getExtParameterInfosOrNull () const |
Return a pointer to the beginning of the array of extra parameter information, if present, or else null if none of the parameters carry it. | |
unsigned | getAArch64SMEAttributes () const |
Return a bitmask describing the SME attributes on the function type, see AArch64SMETypeAttributes for their values. | |
ExtParameterInfo | getExtParameterInfo (unsigned I) const |
ParameterABI | getParameterABI (unsigned I) const |
bool | isParamConsumed (unsigned I) const |
unsigned | getNumFunctionEffects () const |
ArrayRef< FunctionEffect > | getFunctionEffectsWithoutConditions () const |
unsigned | getNumFunctionEffectConditions () const |
ArrayRef< EffectConditionExpr > | getFunctionEffectConditions () const |
FunctionEffectsRef | getFunctionEffects () const |
bool | isSugared () const |
QualType | desugar () const |
void | printExceptionSpecification (raw_ostream &OS, const PrintingPolicy &Policy) const |
void | Profile (llvm::FoldingSetNodeID &ID, const ASTContext &Ctx) |
Public Member Functions inherited from clang::FunctionType | |
QualType | getReturnType () const |
bool | getHasRegParm () const |
unsigned | getRegParmType () const |
bool | getNoReturnAttr () const |
Determine whether this function type includes the GNU noreturn attribute. | |
bool | getCmseNSCallAttr () const |
CallingConv | getCallConv () const |
ExtInfo | getExtInfo () const |
bool | isConst () const |
bool | isVolatile () const |
bool | isRestrict () const |
QualType | getCallResultType (const ASTContext &Context) const |
Determine the type of an expression that calls a function of this type. | |
Public Member Functions inherited from clang::Type | |
Type (const Type &)=delete | |
Type (Type &&)=delete | |
Type & | operator= (const Type &)=delete |
Type & | operator= (Type &&)=delete |
TypeClass | getTypeClass () const |
bool | isFromAST () const |
Whether this type comes from an AST file. | |
bool | containsUnexpandedParameterPack () const |
Whether this type is or contains an unexpanded parameter pack, used to support C++0x variadic templates. | |
bool | isCanonicalUnqualified () const |
Determines if this type would be canonical if it had no further qualification. | |
QualType | getLocallyUnqualifiedSingleStepDesugaredType () const |
Pull a single level of sugar off of this locally-unqualified type. | |
bool | isSizelessType () const |
As an extension, we classify types as one of "sized" or "sizeless"; every type is one or the other. | |
bool | isSizelessBuiltinType () const |
bool | isSizelessVectorType () const |
Returns true for all scalable vector types. | |
bool | isSVESizelessBuiltinType () const |
Returns true for SVE scalable vector types. | |
bool | isRVVSizelessBuiltinType () const |
Returns true for RVV scalable vector types. | |
bool | isWebAssemblyExternrefType () const |
Check if this is a WebAssembly Externref Type. | |
bool | isWebAssemblyTableType () const |
Returns true if this is a WebAssembly table type: either an array of reference types, or a pointer to a reference type (which can only be created by array to pointer decay). | |
bool | isSveVLSBuiltinType () const |
Determines if this is a sizeless type supported by the 'arm_sve_vector_bits' type attribute, which can be applied to a single SVE vector or predicate, excluding tuple types such as svint32x4_t. | |
QualType | getSveEltType (const ASTContext &Ctx) const |
Returns the representative type for the element of an SVE builtin type. | |
bool | isRVVVLSBuiltinType () const |
Determines if this is a sizeless type supported by the 'riscv_rvv_vector_bits' type attribute, which can be applied to a single RVV vector or mask. | |
QualType | getRVVEltType (const ASTContext &Ctx) const |
Returns the representative type for the element of an RVV builtin type. | |
QualType | getSizelessVectorEltType (const ASTContext &Ctx) const |
Returns the representative type for the element of a sizeless vector builtin type. | |
bool | isIncompleteType (NamedDecl **Def=nullptr) const |
Types are partitioned into 3 broad categories (C99 6.2.5p1): object types, function types, and incomplete types. | |
bool | isIncompleteOrObjectType () const |
Return true if this is an incomplete or object type, in other words, not a function type. | |
bool | isObjectType () const |
Determine whether this type is an object type. | |
bool | isLiteralType (const ASTContext &Ctx) const |
Return true if this is a literal type (C++11 [basic.types]p10) | |
bool | isStructuralType () const |
Determine if this type is a structural type, per C++20 [temp.param]p7. | |
bool | isStandardLayoutType () const |
Test if this type is a standard-layout type. | |
bool | isBuiltinType () const |
Helper methods to distinguish type categories. | |
bool | isSpecificBuiltinType (unsigned K) const |
Test for a particular builtin type. | |
bool | isPlaceholderType () const |
Test for a type which does not represent an actual type-system type but is instead used as a placeholder for various convenient purposes within Clang. | |
const BuiltinType * | getAsPlaceholderType () const |
bool | isSpecificPlaceholderType (unsigned K) const |
Test for a specific placeholder type. | |
bool | isNonOverloadPlaceholderType () const |
Test for a placeholder type other than Overload; see BuiltinType::isNonOverloadPlaceholderType. | |
bool | isIntegerType () const |
isIntegerType() does not include complex integers (a GCC extension). | |
bool | isEnumeralType () const |
bool | isScopedEnumeralType () const |
Determine whether this type is a scoped enumeration type. | |
bool | isBooleanType () const |
bool | isCharType () const |
bool | isWideCharType () const |
bool | isChar8Type () const |
bool | isChar16Type () const |
bool | isChar32Type () const |
bool | isAnyCharacterType () const |
Determine whether this type is any of the built-in character types. | |
bool | isIntegralType (const ASTContext &Ctx) const |
Determine whether this type is an integral type. | |
bool | isIntegralOrEnumerationType () const |
Determine whether this type is an integral or enumeration type. | |
bool | isIntegralOrUnscopedEnumerationType () const |
Determine whether this type is an integral or unscoped enumeration type. | |
bool | isUnscopedEnumerationType () const |
bool | isRealFloatingType () const |
Floating point categories. | |
bool | isComplexType () const |
isComplexType() does not include complex integers (a GCC extension). | |
bool | isAnyComplexType () const |
bool | isFloatingType () const |
bool | isHalfType () const |
bool | isFloat16Type () const |
bool | isFloat32Type () const |
bool | isDoubleType () const |
bool | isBFloat16Type () const |
bool | isFloat128Type () const |
bool | isIbm128Type () const |
bool | isRealType () const |
bool | isArithmeticType () const |
bool | isVoidType () const |
bool | isScalarType () const |
bool | isAggregateType () const |
Determines whether the type is a C++ aggregate type or C aggregate or union type. | |
bool | isFundamentalType () const |
Tests whether the type is categorized as a fundamental type. | |
bool | isCompoundType () const |
Tests whether the type is categorized as a compound type. | |
bool | isFunctionType () const |
bool | isFunctionNoProtoType () const |
bool | isFunctionProtoType () const |
bool | isPointerType () const |
bool | isPointerOrReferenceType () const |
bool | isSignableType () const |
bool | isAnyPointerType () const |
bool | isCountAttributedType () const |
bool | isBlockPointerType () const |
bool | isVoidPointerType () const |
bool | isReferenceType () const |
bool | isLValueReferenceType () const |
bool | isRValueReferenceType () const |
bool | isObjectPointerType () const |
bool | isFunctionPointerType () const |
bool | isFunctionReferenceType () const |
bool | isMemberPointerType () const |
bool | isMemberFunctionPointerType () const |
bool | isMemberDataPointerType () const |
bool | isArrayType () const |
bool | isConstantArrayType () const |
bool | isIncompleteArrayType () const |
bool | isVariableArrayType () const |
bool | isArrayParameterType () const |
bool | isDependentSizedArrayType () const |
bool | isRecordType () const |
bool | isClassType () const |
bool | isStructureType () const |
bool | isStructureTypeWithFlexibleArrayMember () const |
bool | isObjCBoxableRecordType () const |
bool | isInterfaceType () const |
bool | isStructureOrClassType () const |
bool | isUnionType () const |
bool | isComplexIntegerType () const |
bool | isVectorType () const |
bool | isExtVectorType () const |
bool | isExtVectorBoolType () const |
bool | isSubscriptableVectorType () const |
bool | isMatrixType () const |
bool | isConstantMatrixType () const |
bool | isDependentAddressSpaceType () const |
bool | isObjCObjectPointerType () const |
bool | isObjCRetainableType () const |
bool | isObjCLifetimeType () const |
Returns true if objects of this type have lifetime semantics under ARC. | |
bool | isObjCIndirectLifetimeType () const |
bool | isObjCNSObjectType () const |
bool | isObjCIndependentClassType () const |
bool | isObjCObjectType () const |
bool | isObjCQualifiedInterfaceType () const |
bool | isObjCQualifiedIdType () const |
bool | isObjCQualifiedClassType () const |
bool | isObjCObjectOrInterfaceType () const |
bool | isObjCIdType () const |
bool | isDecltypeType () const |
bool | isObjCInertUnsafeUnretainedType () const |
Was this type written with the special inert-in-ARC __unsafe_unretained qualifier? | |
bool | isObjCIdOrObjectKindOfType (const ASTContext &ctx, const ObjCObjectType *&bound) const |
Whether the type is Objective-C 'id' or a __kindof type of an object type, e.g., __kindof NSView * or __kindof id <NSCopying>. | |
bool | isObjCClassType () const |
bool | isObjCClassOrClassKindOfType () const |
Whether the type is Objective-C 'Class' or a __kindof type of an Class type, e.g., __kindof Class <NSCopying>. | |
bool | isBlockCompatibleObjCPointerType (ASTContext &ctx) const |
bool | isObjCSelType () const |
bool | isObjCBuiltinType () const |
bool | isObjCARCBridgableType () const |
Determine whether the given type T is a "bridgable" Objective-C type, which is either an Objective-C object pointer type or an. | |
bool | isCARCBridgableType () const |
Determine whether the given type T is a "bridgeable" C type. | |
bool | isTemplateTypeParmType () const |
bool | isNullPtrType () const |
bool | isNothrowT () const |
bool | isAlignValT () const |
bool | isStdByteType () const |
bool | isAtomicType () const |
bool | isUndeducedAutoType () const |
bool | isTypedefNameType () const |
Determines whether this type is written as a typedef-name. | |
bool | isImageType () const |
bool | isSamplerT () const |
bool | isEventT () const |
bool | isClkEventT () const |
bool | isQueueT () const |
bool | isReserveIDT () const |
bool | isOCLIntelSubgroupAVCType () const |
bool | isOCLExtOpaqueType () const |
bool | isPipeType () const |
bool | isBitIntType () const |
bool | isOpenCLSpecificType () const |
bool | isHLSLSpecificType () const |
bool | isObjCARCImplicitlyUnretainedType () const |
Determines if this type, which must satisfy isObjCLifetimeType(), is implicitly __unsafe_unretained rather than implicitly __strong. | |
bool | isCUDADeviceBuiltinSurfaceType () const |
Check if the type is the CUDA device builtin surface type. | |
bool | isCUDADeviceBuiltinTextureType () const |
Check if the type is the CUDA device builtin texture type. | |
Qualifiers::ObjCLifetime | getObjCARCImplicitLifetime () const |
Return the implicit lifetime for this type, which must not be dependent. | |
ScalarTypeKind | getScalarTypeKind () const |
Given that this is a scalar type, classify it. | |
TypeDependence | getDependence () const |
bool | containsErrors () const |
Whether this type is an error type. | |
bool | isDependentType () const |
Whether this type is a dependent type, meaning that its definition somehow depends on a template parameter (C++ [temp.dep.type]). | |
bool | isInstantiationDependentType () const |
Determine whether this type is an instantiation-dependent type, meaning that the type involves a template parameter (even if the definition does not actually depend on the type substituted for that template parameter). | |
bool | isUndeducedType () const |
Determine whether this type is an undeduced type, meaning that it somehow involves a C++11 'auto' type or similar which has not yet been deduced. | |
bool | isVariablyModifiedType () const |
Whether this type is a variably-modified type (C99 6.7.5). | |
bool | hasSizedVLAType () const |
Whether this type involves a variable-length array type with a definite size. | |
bool | hasUnnamedOrLocalType () const |
Whether this type is or contains a local or unnamed type. | |
bool | isOverloadableType () const |
Determines whether this is a type for which one can define an overloaded operator. | |
bool | isElaboratedTypeSpecifier () const |
Determine wither this type is a C++ elaborated-type-specifier. | |
bool | canDecayToPointerType () const |
Determines whether this type can decay to a pointer type. | |
bool | hasPointerRepresentation () const |
Whether this type is represented natively as a pointer. | |
bool | hasObjCPointerRepresentation () const |
Whether this type can represent an objective pointer type for the purpose of GC'ability. | |
bool | hasIntegerRepresentation () const |
Determine whether this type has an integer representation of some sort, e.g., it is an integer type or a vector. | |
bool | hasSignedIntegerRepresentation () const |
Determine whether this type has an signed integer representation of some sort, e.g., it is an signed integer type or a vector. | |
bool | hasUnsignedIntegerRepresentation () const |
Determine whether this type has an unsigned integer representation of some sort, e.g., it is an unsigned integer type or a vector. | |
bool | hasFloatingRepresentation () const |
Determine whether this type has a floating-point representation of some sort, e.g., it is a floating-point type or a vector thereof. | |
const RecordType * | getAsStructureType () const |
const RecordType * | getAsUnionType () const |
NOTE: getAs*ArrayType are methods on ASTContext. | |
const ComplexType * | getAsComplexIntegerType () const |
const ObjCObjectType * | getAsObjCInterfaceType () const |
const ObjCObjectPointerType * | getAsObjCInterfacePointerType () const |
const ObjCObjectPointerType * | getAsObjCQualifiedIdType () const |
const ObjCObjectPointerType * | getAsObjCQualifiedClassType () const |
const ObjCObjectType * | getAsObjCQualifiedInterfaceType () const |
CXXRecordDecl * | getAsCXXRecordDecl () const |
Retrieves the CXXRecordDecl that this type refers to, either because the type is a RecordType or because it is the injected-class-name type of a class template or class template partial specialization. | |
RecordDecl * | getAsRecordDecl () const |
Retrieves the RecordDecl this type refers to. | |
TagDecl * | getAsTagDecl () const |
Retrieves the TagDecl that this type refers to, either because the type is a TagType or because it is the injected-class-name type of a class template or class template partial specialization. | |
const CXXRecordDecl * | getPointeeCXXRecordDecl () const |
If this is a pointer or reference to a RecordType, return the CXXRecordDecl that the type refers to. | |
DeducedType * | getContainedDeducedType () const |
Get the DeducedType whose type will be deduced for a variable with an initializer of this type. | |
AutoType * | getContainedAutoType () const |
Get the AutoType whose type will be deduced for a variable with an initializer of this type. | |
bool | hasAutoForTrailingReturnType () const |
Determine whether this type was written with a leading 'auto' corresponding to a trailing return type (possibly for a nested function type within a pointer to function type or similar). | |
template<typename T > | |
const T * | getAs () const |
Member-template getAs<specific type>'. | |
template<typename T > | |
const T * | getAsAdjusted () const |
Member-template getAsAdjusted<specific type>. | |
const ArrayType * | getAsArrayTypeUnsafe () const |
A variant of getAs<> for array types which silently discards qualifiers from the outermost type. | |
template<typename T > | |
const T * | castAs () const |
Member-template castAs<specific type>. | |
const ArrayType * | castAsArrayTypeUnsafe () const |
A variant of castAs<> for array type which silently discards qualifiers from the outermost type. | |
bool | hasAttr (attr::Kind AK) const |
Determine whether this type had the specified attribute applied to it (looking through top-level type sugar). | |
const Type * | getBaseElementTypeUnsafe () const |
Get the base element type of this type, potentially discarding type qualifiers. | |
const Type * | getArrayElementTypeNoTypeQual () const |
If this is an array type, return the element type of the array, potentially with type qualifiers missing. | |
const Type * | getPointeeOrArrayElementType () const |
If this is a pointer type, return the pointee type. | |
QualType | getPointeeType () const |
If this is a pointer, ObjC object pointer, or block pointer, this returns the respective pointee. | |
const Type * | getUnqualifiedDesugaredType () const |
Return the specified type with any "sugar" removed from the type, removing any typedefs, typeofs, etc., as well as any qualifiers. | |
bool | isSignedIntegerType () const |
Return true if this is an integer type that is signed, according to C99 6.2.5p4 [char, signed char, short, int, long..], or an enum decl which has a signed representation. | |
bool | isUnsignedIntegerType () const |
Return true if this is an integer type that is unsigned, according to C99 6.2.5p6 [which returns true for _Bool], or an enum decl which has an unsigned representation. | |
bool | isSignedIntegerOrEnumerationType () const |
Determines whether this is an integer type that is signed or an enumeration types whose underlying type is a signed integer type. | |
bool | isUnsignedIntegerOrEnumerationType () const |
Determines whether this is an integer type that is unsigned or an enumeration types whose underlying type is a unsigned integer type. | |
bool | isFixedPointType () const |
Return true if this is a fixed point type according to ISO/IEC JTC1 SC22 WG14 N1169. | |
bool | isFixedPointOrIntegerType () const |
Return true if this is a fixed point or integer type. | |
bool | isConvertibleToFixedPointType () const |
Return true if this can be converted to (or from) a fixed point type. | |
bool | isSaturatedFixedPointType () const |
Return true if this is a saturated fixed point type according to ISO/IEC JTC1 SC22 WG14 N1169. | |
bool | isUnsaturatedFixedPointType () const |
Return true if this is a saturated fixed point type according to ISO/IEC JTC1 SC22 WG14 N1169. | |
bool | isSignedFixedPointType () const |
Return true if this is a fixed point type that is signed according to ISO/IEC JTC1 SC22 WG14 N1169. | |
bool | isUnsignedFixedPointType () const |
Return true if this is a fixed point type that is unsigned according to ISO/IEC JTC1 SC22 WG14 N1169. | |
bool | isConstantSizeType () const |
Return true if this is not a variable sized type, according to the rules of C99 6.7.5p3. | |
bool | isSpecifierType () const |
Returns true if this type can be represented by some set of type specifiers. | |
Linkage | getLinkage () const |
Determine the linkage of this type. | |
Visibility | getVisibility () const |
Determine the visibility of this type. | |
bool | isVisibilityExplicit () const |
Return true if the visibility was explicitly set is the code. | |
LinkageInfo | getLinkageAndVisibility () const |
Determine the linkage and visibility of this type. | |
bool | isLinkageValid () const |
True if the computed linkage is valid. | |
std::optional< NullabilityKind > | getNullability () const |
Determine the nullability of the given type. | |
bool | canHaveNullability (bool ResultIfUnknown=true) const |
Determine whether the given type can have a nullability specifier applied to it, i.e., if it is any kind of pointer type. | |
std::optional< ArrayRef< QualType > > | getObjCSubstitutions (const DeclContext *dc) const |
Retrieve the set of substitutions required when accessing a member of the Objective-C receiver type that is declared in the given context. | |
bool | acceptsObjCTypeParams () const |
Determines if this is an ObjC interface type that may accept type parameters. | |
const char * | getTypeClassName () const |
QualType | getCanonicalTypeInternal () const |
CanQualType | getCanonicalTypeUnqualified () const |
void | dump () const |
void | dump (llvm::raw_ostream &OS, const ASTContext &Context) const |
template<> | |
const TypedefType * | getAs () const |
This will check for a TypedefType by removing any existing sugar until it reaches a TypedefType or a non-sugared type. | |
Static Public Member Functions | |
static bool | classof (const Type *T) |
static void | Profile (llvm::FoldingSetNodeID &ID, QualType Result, param_type_iterator ArgTys, unsigned NumArgs, const ExtProtoInfo &EPI, const ASTContext &Context, bool Canonical) |
Static Public Member Functions inherited from clang::FunctionType | |
static ArmStateValue | getArmZAState (unsigned AttrBits) |
static ArmStateValue | getArmZT0State (unsigned AttrBits) |
static StringRef | getNameForCallConv (CallingConv CC) |
static bool | classof (const Type *T) |
Friends | |
class | ASTContext |
Represents a prototype with parameter type info, e.g.
'int foo(int)' or 'int foo(void)'. 'void' is represented as having no parameters, not as having a single void parameter. Such a type can have an exception specification, but this specification is not part of the canonical type. FunctionProtoType has several trailing objects, some of which optional. For more information about the trailing objects see the first comment inside FunctionProtoType.
using clang::FunctionProtoType::exception_iterator = const QualType * |
using clang::FunctionProtoType::param_type_iterator = const QualType * |
CanThrowResult FunctionProtoType::canThrow | ( | ) | const |
Determine whether this function type has a non-throwing exception specification.
Definition at line 3713 of file Type.cpp.
References clang::CT_Can, clang::CT_Cannot, clang::CT_Dependent, clang::EST_BasicNoexcept, clang::EST_DependentNoexcept, clang::EST_Dynamic, clang::EST_DynamicNone, clang::EST_MSAny, clang::EST_NoexceptFalse, clang::EST_NoexceptTrue, clang::EST_None, clang::EST_NoThrow, clang::EST_Unevaluated, clang::EST_Uninstantiated, clang::EST_Unparsed, clang::Type::getAs(), getExceptionSpecType(), getExceptionType(), and getNumExceptions().
Referenced by clang::Sema::canCalleeThrow(), clang::CheckEquivalentExceptionSpecImpl(), and clang::Sema::CheckExceptionSpecSubset().
Definition at line 5556 of file Type.h.
References clang::Type::getTypeClass(), and clang::T.
|
inline |
Definition at line 5551 of file Type.h.
Referenced by captureVariablyModifiedType(), clang::NSAPI::GetNSIntegralKind(), handleMIGServerRoutineAttr(), and UnwrapTypeForDebugInfo().
|
inline |
Definition at line 5434 of file Type.h.
Referenced by clang::CheckEquivalentExceptionSpecImpl().
|
inline |
Definition at line 5430 of file Type.h.
Referenced by clang::Sema::ImplicitExceptionSpecification::CalledDecl(), clang::CheckEquivalentExceptionSpecImpl(), clang::Sema::CheckExceptionSpecSubset(), clang::Sema::checkThisInStaticMemberFunctionExceptionSpec(), hasDependentExceptionSpec(), and hasInstantiationDependentExceptionSpec().
|
inline |
Return a bitmask describing the SME attributes on the function type, see AArch64SMETypeAttributes for their values.
Definition at line 5466 of file Type.h.
Referenced by AddAttributesFromFunctionProtoType(), clang::Sema::areMultiversionVariantFunctionsCompatible(), clang::hasArmZAState(), clang::hasArmZT0State(), and isStreamingCompatible().
|
inline |
Definition at line 5386 of file Type.h.
Referenced by clang::FunctionDecl::getEllipsisLoc().
|
inline |
If this function type has an exception specification which hasn't been determined yet (either because it has not been evaluated or because it has not been instantiated), this is the function whose exception specification is represented by this type.
Definition at line 5355 of file Type.h.
References clang::EST_Unevaluated, and clang::EST_Uninstantiated.
Referenced by clang::Sema::ResolveExceptionSpec().
|
inline |
Return all the available information about this type's exception spec.
Definition at line 5313 of file Type.h.
References clang::EST_Dynamic, clang::EST_Unevaluated, clang::EST_Uninstantiated, and clang::isComputedNoexcept().
|
inline |
If this function type has an uninstantiated exception specification, this is the function whose exception specification should be instantiated to find the exception specification for this type.
Definition at line 5366 of file Type.h.
References clang::EST_Uninstantiated.
Referenced by clang::Sema::InstantiateExceptionSpec().
|
inline |
Get the kind of exception specification on this function.
Definition at line 5287 of file Type.h.
Referenced by AddAttributesFromFunctionProtoType(), clang::ast_matchers::AST_POLYMORPHIC_MATCHER(), clang::ASTDeclReader::attachPreviousDeclImpl(), clang::Sema::ImplicitExceptionSpecification::CalledDecl(), canThrow(), clang::CheckEquivalentExceptionSpecImpl(), clang::Sema::CheckExceptionSpecSubset(), clang::Sema::CheckOverridingFunctionExceptionSpec(), clang::Sema::checkThisInStaticMemberFunctionExceptionSpec(), clang::Sema::EvaluateImplicitExceptionSpec(), clang::FunctionDecl::getExceptionSpecType(), clang::Sema::InstantiateExceptionSpec(), IsEquivalentExceptionSpec(), clang::ASTContext::isSameEntity(), clang::Sema::MarkFunctionReferenced(), printExceptionSpecification(), and clang::Sema::ResolveExceptionSpec().
Return the ith exception type, where 0 <= i < getNumExceptions().
Definition at line 5338 of file Type.h.
Referenced by canThrow(), IsEquivalentExceptionSpec(), and printExceptionSpecification().
|
inline |
Definition at line 5473 of file Type.h.
Referenced by clang::Sema::CheckOverridingFunctionAttributes(), clang::Sema::GatherArgumentsForCall(), and clang::ASTContext::mergeExtParameterInfo().
|
inline |
Definition at line 5449 of file Type.h.
Referenced by addExtParameterInfosForCall(), clang::CodeGen::RequiredArgs::forPrototypePlus(), and clang::ASTContext::mergeExtParameterInfo().
|
inline |
Return a pointer to the beginning of the array of extra parameter information, if present, or else null if none of the parameters carry it.
This is equivalent to getExtProtoInfo().ExtParameterInfos.
Definition at line 5458 of file Type.h.
Referenced by clang::Sema::SubstituteExplicitTemplateArguments(), and clang::TreeTransform< Derived >::TransformFunctionProtoType().
|
inline |
Definition at line 5271 of file Type.h.
References clang::FunctionProtoType::ExtProtoInfo::AArch64SMEAttributes, clang::FunctionProtoType::ExtProtoInfo::EllipsisLoc, clang::FunctionProtoType::ExtProtoInfo::ExceptionSpec, clang::FunctionProtoType::ExtProtoInfo::ExtInfo, clang::FunctionProtoType::ExtProtoInfo::ExtParameterInfos, clang::FunctionProtoType::ExtProtoInfo::FunctionEffects, clang::FunctionProtoType::ExtProtoInfo::HasTrailingReturn, clang::FunctionProtoType::ExtProtoInfo::RefQualifier, clang::FunctionProtoType::ExtProtoInfo::TypeQuals, and clang::FunctionProtoType::ExtProtoInfo::Variadic.
Referenced by clang::Sema::ActOnBlockStmtExpr(), clang::Sema::ActOnFunctionDeclarator(), clang::Sema::adjustCCAndNoReturn(), buildTypeForLambdaCallOperator(), clang::Sema::checkCall(), clang::Sema::CheckConstructorDeclarator(), clang::Sema::CheckDestructorDeclarator(), clang::Sema::CheckFunctionDeclaration(), clang::Sema::CheckFunctionTemplateSpecialization(), clang::desugarForDiagnostic(), clang::Sema::findInheritingConstructor(), clang::ASTReader::FinishedDeserializing(), GetFullTypeForDeclarator(), clang::Sema::getLambdaConversionFunctionResultType(), clang::TemplateDeclInstantiator::InitFunctionInstantiation(), LookupDirect(), clang::Sema::MergeFunctionDecl(), clang::ASTContext::mergeFunctionTypes(), Profile(), clang::Sema::SubstExceptionSpec(), clang::Sema::SubstituteExplicitTemplateArguments(), clang::TreeTransform< Derived >::TransformFunctionProtoType(), clang::JSONNodeDumper::VisitFunctionProtoType(), and clang::TextNodeDumper::VisitFunctionProtoType().
|
inline |
|
inline |
|
inline |
|
inline |
Definition at line 5402 of file Type.h.
Referenced by clang::Sema::BuildCallToMemberFunction(), checkQualifiedFunction(), clang::Sema::CheckQualifiedFunctionForTypeId(), getFunctionQualifiersAsString(), getThisObjectType(), clang::CXXMethodDecl::getThisType(), clang::Sema::HandleFunctionTypeMismatch(), and clang::Sema::isObjCPointerConversion().
|
inline |
Return the expression inside noexcept(expression), or a null pointer if there is none (because the exception spec is not of this form).
Definition at line 5345 of file Type.h.
References clang::isComputedNoexcept().
Referenced by clang::CheckEquivalentExceptionSpecImpl(), clang::Sema::checkThisInStaticMemberFunctionExceptionSpec(), hasDependentExceptionSpec(), hasInstantiationDependentExceptionSpec(), IsEquivalentExceptionSpec(), MarkUsedTemplateParameters(), and printExceptionSpecification().
|
inline |
Return the number of types in the exception specification.
Definition at line 5330 of file Type.h.
References clang::EST_Dynamic.
Referenced by canThrow(), clang::CheckEquivalentExceptionSpecImpl(), IsEquivalentExceptionSpec(), and printExceptionSpecification().
|
inline |
|
inline |
|
inline |
Definition at line 5260 of file Type.h.
Referenced by addExtParameterInfosForCall(), clang::Sema::AddOverloadCandidate(), clang::Sema::AddSurrogateCandidate(), clang::ast_matchers::AST_POLYMORPHIC_MATCHER_P2(), clang::Sema::BuildCallToMemberFunction(), clang::Sema::BuildCallToObjectOfClassType(), clang::SemaOpenCL::checkBuiltinEnqueueKernel(), clang::Sema::checkCall(), clang::Sema::CheckMain(), clang::Sema::CheckOverridingFunctionAttributes(), clang::Sema::CheckParamExceptionSpec(), commonEmitCXXMemberOrOperatorCall(), clang::Sema::CompleteConstructorCall(), clang::Sema::ConvertArgumentsForCall(), create_call_once(), EvaluateUnaryTypeTrait(), clang::Sema::findInheritingConstructor(), clang::CodeGen::RequiredArgs::forPrototypePlus(), clang::Sema::GatherArgumentsForCall(), getAbsoluteValueArgumentType(), clang::FunctionDecl::getNumParams(), clang::Sema::HandleFunctionTypeMismatch(), clang::Sema::IsBlockPointerConversion(), isDispatchBlock(), clang::Sema::isObjCPointerConversion(), isStdBuiltin(), isTemplateVariadic(), MarkUsedTemplateParameters(), clang::ASTContext::mergeFunctionTypes(), PrepareArgumentsForCallToObjectOfClassType(), Profile(), and rewriteBuiltinFunctionDecl().
|
inline |
Definition at line 5262 of file Type.h.
Referenced by clang::Sema::AddMethodCandidate(), clang::Sema::AddOverloadCandidate(), clang::Sema::AddSurrogateCandidate(), clang::ast_matchers::AST_POLYMORPHIC_MATCHER_P2(), clang::Sema::checkCall(), clang::Sema::CheckMain(), clang::Sema::CheckParamExceptionSpec(), create_call_once(), clang::Sema::findInheritingConstructor(), clang::for(), clang::Sema::GatherArgumentsForCall(), getAbsoluteValueArgumentType(), clang::Sema::HandleFunctionTypeMismatch(), clang::Sema::IsBlockPointerConversion(), clang::Sema::isObjCPointerConversion(), isTemplateVariadic(), clang::Sema::MarkThisReferenced(), MarkUsedTemplateParameters(), clang::ASTContext::mergeFunctionTypes(), rewriteBuiltinFunctionDecl(), and clang::TemplateDeclInstantiator::SubstFunctionType().
Definition at line 5267 of file Type.h.
Referenced by clang::Sema::ActOnBlockStmtExpr(), clang::Sema::ActOnFunctionDeclarator(), clang::Sema::adjustCCAndNoReturn(), buildTypeForLambdaCallOperator(), clang::Sema::CheckConstructorDeclarator(), clang::Sema::CheckFunctionDeclaration(), clang::Sema::CheckFunctionTemplateSpecialization(), CheckNonNullArguments(), clang::Sema::findInheritingConstructor(), GetFullTypeForDeclarator(), clang::Sema::getLambdaConversionFunctionResultType(), clang::TemplateDeclInstantiator::InitFunctionInstantiation(), lookupPromiseType(), clang::ASTContext::mergeFunctionTypes(), clang::TreeTransform< Derived >::TransformFunctionProtoType(), and clang::ASTNodeTraverser< Derived, NodeDelegateType >::VisitFunctionProtoType().
|
inline |
Retrieve the ref-qualifier associated with this function type.
Definition at line 5410 of file Type.h.
Referenced by checkQualifiedFunction(), clang::Sema::CheckQualifiedFunctionForTypeId(), clang::CXXMethodDecl::getFunctionObjectParameterReferenceType(), getFunctionQualifiersAsString(), and lookupPromiseType().
bool FunctionProtoType::hasDependentExceptionSpec | ( | ) | const |
Return whether this function has a dependent exception spec.
Definition at line 3692 of file Type.cpp.
References exceptions(), clang::Type::getAs(), getNoexceptExpr(), and clang::Type::isDependentType().
Referenced by clang::Sema::CheckExceptionSpecCompatibility().
|
inline |
Return whether this function has a dynamic (throw) exception spec.
Definition at line 5296 of file Type.h.
References clang::isDynamicExceptionSpec().
Referenced by printExceptionSpecification().
|
inline |
Return whether this function has any kind of exception spec.
Definition at line 5293 of file Type.h.
References clang::EST_None.
Referenced by clang::Sema::ActOnFunctionDeclarator(), clang::Sema::adjustCCAndNoReturn(), clang::Sema::CheckDistantExceptionSpec(), clang::hasImplicitExceptionSpec(), clang::TemplateDeclInstantiator::InitFunctionInstantiation(), and clang::ASTContext::mergeFunctionTypes().
|
inline |
Is there any interesting extra information for any of the parameters of this function type?
Definition at line 5445 of file Type.h.
Referenced by addExtParameterInfosForCall(), clang::Sema::CheckOverridingFunctionAttributes(), clang::CodeGen::RequiredArgs::forPrototypePlus(), getExtParameterInfosForCall(), and clang::ASTContext::mergeExtParameterInfo().
bool FunctionProtoType::hasInstantiationDependentExceptionSpec | ( | ) | const |
Return whether this function has an instantiation-dependent exception spec.
Definition at line 3704 of file Type.cpp.
References exceptions(), getNoexceptExpr(), and clang::Type::isInstantiationDependentType().
|
inline |
Return whether this function has a noexcept exception spec.
Definition at line 5301 of file Type.h.
References clang::isNoexceptExceptionSpec().
|
inline |
Whether this function prototype has a trailing return type.
Definition at line 5400 of file Type.h.
Referenced by clang::Sema::checkThisInStaticMemberFunctionType(), clang::TypeLoc::getBeginLoc(), clang::TypeLoc::getEndLoc(), clang::Sema::SubstituteExplicitTemplateArguments(), and clang::TreeTransform< Derived >::TransformFunctionProtoType().
Determine whether this function type has a non-throwing exception specification.
If this depends on template arguments, returns ResultIfDependent
.
Definition at line 5379 of file Type.h.
References clang::CT_Can, and clang::CT_Cannot.
Referenced by AddAttributesFromFunctionProtoType(), clang::ast_matchers::AST_POLYMORPHIC_MATCHER(), EvaluateUnaryTypeTrait(), and HasNoThrowOperator().
Definition at line 5487 of file Type.h.
Referenced by clang::Sema::GatherArgumentsForCall().
|
inline |
Definition at line 5550 of file Type.h.
Referenced by clang::ASTNodeTraverser< Derived, NodeDelegateType >::VisitPackExpansionType().
bool FunctionProtoType::isTemplateVariadic | ( | ) | const |
Determines whether this function prototype contains a parameter pack at the end.
A function template whose last parameter is a parameter pack can be called with an arbitrary number of arguments, much like a variadic function.
Definition at line 3746 of file Type.cpp.
References getNumParams(), and getParamType().
|
inline |
Whether this function prototype is variadic.
Definition at line 5384 of file Type.h.
Referenced by clang::Sema::AddMethodCandidate(), AddObjCBlockCall(), clang::Sema::AddOverloadCandidate(), clang::Sema::AddSurrogateCandidate(), clang::ast_matchers::AST_POLYMORPHIC_MATCHER_P2(), clang::Sema::BuildCXXNew(), clang::Sema::CheckMain(), clang::Sema::ConvertArgumentsForCall(), formatBlockPlaceholder(), clang::CodeGen::RequiredArgs::forPrototypePlus(), getLambdaConversionFunctionCallConv(), clang::Sema::getVariadicCallType(), handleFunctionTypeAttr(), clang::Sema::IsBlockPointerConversion(), clang::Sema::isObjCPointerConversion(), clang::ASTContext::mergeFunctionTypes(), clang::NamedDecl::printNestedNameSpecifier(), repeatForLambdaConversionFunctionCallingConvs(), and rewriteBuiltinFunctionDecl().
|
inline |
Definition at line 5420 of file Type.h.
Referenced by clang::Sema::getMoreSpecializedTemplate(), getUsualDeleteParams(), Profile(), and clang::TreeTransform< Derived >::TransformFunctionProtoType().
|
inline |
Definition at line 5424 of file Type.h.
Referenced by clang::Sema::getMoreSpecializedTemplate(), and getUsualDeleteParams().
Definition at line 5416 of file Type.h.
Referenced by addAssociatedClassesAndNamespaces(), clang::Sema::CheckFunctionDeclaration(), clang::desugarForDiagnostic(), clang::Sema::FunctionParamTypesAreEqual(), and rewriteBuiltinFunctionDecl().
void FunctionProtoType::printExceptionSpecification | ( | raw_ostream & | OS, |
const PrintingPolicy & | Policy | ||
) | const |
Definition at line 885 of file TypePrinter.cpp.
References clang::EST_MSAny, clang::EST_NoThrow, getExceptionSpecType(), getExceptionType(), getNoexceptExpr(), getNumExceptions(), hasDynamicExceptionSpec(), clang::isComputedNoexcept(), clang::isNoexceptExceptionSpec(), clang::Stmt::printPretty(), and clang::QualType::stream().
void FunctionProtoType::Profile | ( | llvm::FoldingSetNodeID & | ID, |
const ASTContext & | Ctx | ||
) |
Definition at line 3822 of file Type.cpp.
References getExtProtoInfo(), getNumParams(), clang::FunctionType::getReturnType(), clang::Type::isCanonicalUnqualified(), param_type_begin(), and Profile().
Referenced by clang::Sema::DeclareAggregateDeductionGuideFromInitList(), Profile(), clang::ento::CompoundValData::Profile(), and clang::TemplateSpecializationType::Profile().
|
static |
|
friend |