clang  14.0.0git
Macros | Enumerations | Functions
SemaType.cpp File Reference
#include "TypeLocBuilder.h"
#include "clang/AST/ASTConsumer.h"
#include "clang/AST/ASTContext.h"
#include "clang/AST/ASTMutationListener.h"
#include "clang/AST/ASTStructuralEquivalence.h"
#include "clang/AST/CXXInheritance.h"
#include "clang/AST/DeclObjC.h"
#include "clang/AST/DeclTemplate.h"
#include "clang/AST/Expr.h"
#include "clang/AST/TypeLoc.h"
#include "clang/AST/TypeLocVisitor.h"
#include "clang/Basic/PartialDiagnostic.h"
#include "clang/Basic/TargetInfo.h"
#include "clang/Lex/Preprocessor.h"
#include "clang/Sema/DeclSpec.h"
#include "clang/Sema/DelayedDiagnostic.h"
#include "clang/Sema/Lookup.h"
#include "clang/Sema/ParsedTemplate.h"
#include "clang/Sema/ScopeInfo.h"
#include "clang/Sema/SemaInternal.h"
#include "clang/Sema/Template.h"
#include "clang/Sema/TemplateInstCallback.h"
#include "llvm/ADT/SmallPtrSet.h"
#include "llvm/ADT/SmallString.h"
#include "llvm/ADT/StringSwitch.h"
#include "llvm/IR/DerivedTypes.h"
#include "llvm/Support/ErrorHandling.h"
#include <bitset>
#include "clang/Basic/OpenCLImageTypes.def"
Include dependency graph for SemaType.cpp:

Go to the source code of this file.

Macros

#define OBJC_POINTER_TYPE_ATTRS_CASELIST
 
#define CALLING_CONV_ATTRS_CASELIST
 
#define FUNCTION_TYPE_ATTRS_CASELIST
 
#define MS_TYPE_ATTRS_CASELIST
 
#define NULLABILITY_TYPE_ATTRS_CASELIST
 
#define GENERIC_IMAGE_TYPE(ImgType, Id)
 
#define IMAGE_TYPE(ImgType, Id, SingletonId, Access, Suffix)
 

Enumerations

enum  TypeDiagSelector { TDS_Function, TDS_Pointer, TDS_ObjCObjOrBlock }
 
enum  TypeAttrLocation { TAL_DeclSpec, TAL_DeclChunk, TAL_DeclName }
 The location of a type attribute. More...
 

Functions

static bool isOmittedBlockReturnType (const Declarator &D)
 isOmittedBlockReturnType - Return true if this declarator is missing a return type because this is a omitted return type on a block literal. More...
 
static void diagnoseBadTypeAttribute (Sema &S, const ParsedAttr &attr, QualType type)
 diagnoseBadTypeAttribute - Diagnoses a type attribute which doesn't apply to the given type. More...
 
static void moveAttrFromListToList (ParsedAttr &attr, ParsedAttributesView &fromList, ParsedAttributesView &toList)
 
static void processTypeAttrs (TypeProcessingState &state, QualType &type, TypeAttrLocation TAL, ParsedAttributesView &attrs)
 
static bool handleFunctionTypeAttr (TypeProcessingState &state, ParsedAttr &attr, QualType &type)
 Process an individual function attribute. More...
 
static bool handleMSPointerTypeQualifierAttr (TypeProcessingState &state, ParsedAttr &attr, QualType &type)
 
static bool handleObjCGCTypeAttr (TypeProcessingState &state, ParsedAttr &attr, QualType &type)
 handleObjCGCTypeAttr - Process the attribute((objc_gc)) type attribute on the specified type. More...
 
static bool handleObjCOwnershipTypeAttr (TypeProcessingState &state, ParsedAttr &attr, QualType &type)
 handleObjCOwnershipTypeAttr - Process an objc_ownership attribute on the specified type. More...
 
static bool handleObjCPointerTypeAttr (TypeProcessingState &state, ParsedAttr &attr, QualType &type)
 
static DeclaratorChunkmaybeMovePastReturnType (Declarator &declarator, unsigned i, bool onlyBlockPointers)
 Given the index of a declarator chunk, check whether that chunk directly specifies the return type of a function and, if so, find an appropriate place for it. More...
 
static void distributeObjCPointerTypeAttr (TypeProcessingState &state, ParsedAttr &attr, QualType type)
 Given that an objc_gc attribute was written somewhere on a declaration other than on the declarator itself (for which, use distributeObjCPointerTypeAttrFromDeclarator), and given that it didn't apply in whatever position it was written in, try to move it to a more appropriate position. More...
 
static void distributeObjCPointerTypeAttrFromDeclarator (TypeProcessingState &state, ParsedAttr &attr, QualType &declSpecType)
 Distribute an objc_gc type attribute that was written on the declarator. More...
 
static void distributeFunctionTypeAttr (TypeProcessingState &state, ParsedAttr &attr, QualType type)
 A function type attribute was written somewhere in a declaration other than on the declarator itself or in the decl spec. More...
 
static bool distributeFunctionTypeAttrToInnermost (TypeProcessingState &state, ParsedAttr &attr, ParsedAttributesView &attrList, QualType &declSpecType)
 Try to distribute a function type attribute to the innermost function chunk or type. More...
 
static void distributeFunctionTypeAttrFromDeclSpec (TypeProcessingState &state, ParsedAttr &attr, QualType &declSpecType)
 A function type attribute was written in the decl spec. More...
 
static void distributeFunctionTypeAttrFromDeclarator (TypeProcessingState &state, ParsedAttr &attr, QualType &declSpecType)
 A function type attribute was written on the declarator. More...
 
static void distributeTypeAttrsFromDeclarator (TypeProcessingState &state, QualType &declSpecType)
 Given that there are attributes written on the declarator itself, try to distribute any type attributes to the appropriate declarator chunk. More...
 
static void maybeSynthesizeBlockSignature (TypeProcessingState &state, QualType declSpecType)
 Add a synthetic '()' to a block-literal declarator if it is required, given the return type. More...
 
static void diagnoseAndRemoveTypeQualifiers (Sema &S, const DeclSpec &DS, unsigned &TypeQuals, QualType TypeSoFar, unsigned RemoveTQs, unsigned DiagID)
 
static bool checkOmittedBlockReturnType (Sema &S, Declarator &declarator, QualType Result)
 Return true if this is omitted block return type. More...
 
static QualType applyObjCTypeArgs (Sema &S, SourceLocation loc, QualType type, ArrayRef< TypeSourceInfo * > typeArgs, SourceRange typeArgsRange, bool failOnError=false)
 Apply Objective-C type arguments to the given type. More...
 
static OpenCLAccessAttr::Spelling getImageAccess (const ParsedAttributesView &Attrs)
 
static QualType ConvertDeclSpecToType (TypeProcessingState &state)
 Convert the specified declspec to the appropriate type object. More...
 
static std::string getPrintableNameForEntity (DeclarationName Entity)
 
static QualType inferARCLifetimeForPointee (Sema &S, QualType type, SourceLocation loc, bool isReference)
 Given that we're building a pointer or reference to the given. More...
 
static std::string getFunctionQualifiersAsString (const FunctionProtoType *FnTy)
 
static bool checkQualifiedFunction (Sema &S, QualType T, SourceLocation Loc, QualifiedFunctionKind QFK)
 Check whether the type T is a qualified function type, and if it is, diagnose that it cannot be contained within the given kind of declarator. More...
 
static QualType deduceOpenCLPointeeAddrSpace (Sema &S, QualType PointeeType)
 
static ExprResult checkArraySize (Sema &S, Expr *&ArraySize, llvm::APSInt &SizeVal, unsigned VLADiag, bool VLAIsError)
 Check whether the specified array bound can be evaluated using the relevant language rules. More...
 
static void checkExtParameterInfos (Sema &S, ArrayRef< QualType > paramTypes, const FunctionProtoType::ExtProtoInfo &EPI, llvm::function_ref< SourceLocation(unsigned)> getParamLoc)
 Check the extended parameter information. More...
 
static void transferARCOwnershipToDeclaratorChunk (TypeProcessingState &state, Qualifiers::ObjCLifetime ownership, unsigned chunkIndex)
 
static void inferARCWriteback (TypeProcessingState &state, QualType &declSpecType)
 Given that this is the declaration of a parameter under ARC, attempt to infer attributes and such for pointer-to-whatever types. More...
 
static void diagnoseRedundantReturnTypeQualifiers (Sema &S, QualType RetTy, Declarator &D, unsigned FunctionChunkIndex)
 
static std::pair< QualType, TypeSourceInfo * > InventTemplateParameter (TypeProcessingState &state, QualType T, TypeSourceInfo *TrailingTSI, AutoType *Auto, InventedTemplateParameterInfo &Info)
 
static TypeSourceInfoGetTypeSourceInfoForDeclarator (TypeProcessingState &State, QualType T, TypeSourceInfo *ReturnTypeInfo)
 Create and instantiate a TypeSourceInfo with type source information. More...
 
static QualType GetDeclSpecTypeForDeclarator (TypeProcessingState &state, TypeSourceInfo *&ReturnTypeInfo)
 
static void warnAboutAmbiguousFunction (Sema &S, Declarator &D, DeclaratorChunk &DeclType, QualType RT)
 Produce an appropriate diagnostic for an ambiguity between a function declarator and a C++ direct-initializer. More...
 
static void warnAboutRedundantParens (Sema &S, Declarator &D, QualType T)
 Produce an appropriate diagnostic for a declarator with top-level parentheses. More...
 
static CallingConv getCCForDeclaratorChunk (Sema &S, Declarator &D, const ParsedAttributesView &AttrList, const DeclaratorChunk::FunctionTypeInfo &FTI, unsigned ChunkIndex)
 Helper for figuring out the default CC for a function declarator type. More...
 
static bool hasNullabilityAttr (const ParsedAttributesView &attrs)
 Check whether there is a nullability attribute of any kind in the given attribute list. More...
 
static PointerDeclaratorKind classifyPointerDeclarator (Sema &S, QualType type, Declarator &declarator, PointerWrappingDeclaratorKind &wrappingKind)
 Classify the given declarator, whose type-specified is type, based on what kind of pointer it refers to. More...
 
static FileID getNullabilityCompletenessCheckFileID (Sema &S, SourceLocation loc)
 
template<typename DiagBuilderT >
static void fixItNullability (Sema &S, DiagBuilderT &Diag, SourceLocation PointerLoc, NullabilityKind Nullability)
 Creates a fix-it to insert a C-style nullability keyword at pointerLoc, taking into account whitespace before and after. More...
 
static void emitNullabilityConsistencyWarning (Sema &S, SimplePointerKind PointerKind, SourceLocation PointerLoc, SourceLocation PointerEndLoc)
 
static void checkNullabilityConsistency (Sema &S, SimplePointerKind pointerKind, SourceLocation pointerLoc, SourceLocation pointerEndLoc=SourceLocation())
 Complains about missing nullability if the file containing pointerLoc has other uses of nullability (either the keywords or the assume_nonnull pragma). More...
 
static void recordNullabilitySeen (Sema &S, SourceLocation loc)
 Marks that a nullability feature has been used in the file containing loc. More...
 
static bool hasOuterPointerLikeChunk (const Declarator &D, unsigned endIndex)
 Returns true if any of the declarator chunks before endIndex include a level of indirection: array, pointer, reference, or pointer-to-member. More...
 
static bool IsNoDerefableChunk (DeclaratorChunk Chunk)
 
template<typename AttrT >
static AttrT * createSimpleAttr (ASTContext &Ctx, ParsedAttr &AL)
 
static AttrcreateNullabilityAttr (ASTContext &Ctx, ParsedAttr &Attr, NullabilityKind NK)
 
static bool DiagnoseMultipleAddrSpaceAttributes (Sema &S, LangAS ASOld, LangAS ASNew, SourceLocation AttrLoc)
 
static TypeSourceInfoGetFullTypeForDeclarator (TypeProcessingState &state, QualType declSpecType, TypeSourceInfo *TInfo)
 
static void transferARCOwnershipToDeclSpec (Sema &S, QualType &declSpecTy, Qualifiers::ObjCLifetime ownership)
 
static void transferARCOwnership (TypeProcessingState &state, QualType &declSpecTy, Qualifiers::ObjCLifetime ownership)
 Used for transferring ownership in casts resulting in l-values. More...
 
static void fillAttributedTypeLoc (AttributedTypeLoc TL, TypeProcessingState &State)
 
static void fillAtomicQualLoc (AtomicTypeLoc ATL, const DeclaratorChunk &Chunk)
 
static void fillDependentAddressSpaceTypeLoc (DependentAddressSpaceTypeLoc DASTL, const ParsedAttributesView &Attrs)
 
static void fillMatrixTypeLoc (MatrixTypeLoc MTL, const ParsedAttributesView &Attrs)
 
static bool BuildAddressSpaceIndex (Sema &S, LangAS &ASIdx, const Expr *AddrSpace, SourceLocation AttrLoc)
 Build an AddressSpace index from a constant expression and diagnose any errors related to invalid address_spaces. More...
 
static void HandleAddressSpaceTypeAttribute (QualType &Type, const ParsedAttr &Attr, TypeProcessingState &State)
 HandleAddressSpaceTypeAttribute - Process an address_space attribute on the specified type. More...
 
static NullabilityKind mapNullabilityAttrKind (ParsedAttr::Kind kind)
 Map a nullability attribute kind to a nullability kind. More...
 
static bool checkNullabilityTypeSpecifier (TypeProcessingState &state, QualType &type, ParsedAttr &attr, bool allowOnArrayType)
 Applies a nullability type specifier to the given type, if possible. More...
 
static bool checkObjCKindOfType (TypeProcessingState &state, QualType &type, ParsedAttr &attr)
 Check the application of the Objective-C '__kindof' qualifier to the given type. More...
 
static bool distributeNullabilityTypeAttr (TypeProcessingState &state, QualType type, ParsedAttr &attr)
 Distribute a nullability type attribute that cannot be applied to the type specifier to a pointer, block pointer, or member pointer declarator, complaining if necessary. More...
 
static AttrgetCCTypeAttr (ASTContext &Ctx, ParsedAttr &Attr)
 
static void HandleVectorSizeAttr (QualType &CurType, const ParsedAttr &Attr, Sema &S)
 HandleVectorSizeAttribute - this attribute is only applicable to integral and float scalars, although arrays, pointers, and function return values are allowed in conjunction with this construct. More...
 
static void HandleExtVectorTypeAttr (QualType &CurType, const ParsedAttr &Attr, Sema &S)
 Process the OpenCL-like ext_vector_type attribute when it occurs on a type. More...
 
static bool isPermittedNeonBaseType (QualType &Ty, VectorType::VectorKind VecKind, Sema &S)
 
static bool verifyValidIntegerConstantExpr (Sema &S, const ParsedAttr &Attr, llvm::APSInt &Result)
 
static void HandleNeonVectorTypeAttr (QualType &CurType, const ParsedAttr &Attr, Sema &S, VectorType::VectorKind VecKind)
 HandleNeonVectorTypeAttr - The "neon_vector_type" and "neon_polyvector_type" attributes are used to create vector types that are mangled according to ARM's ABI. More...
 
static void HandleArmSveVectorBitsTypeAttr (QualType &CurType, ParsedAttr &Attr, Sema &S)
 HandleArmSveVectorBitsTypeAttr - The "arm_sve_vector_bits" attribute is used to create fixed-length versions of sizeless SVE types defined by the ACLE, such as svint32_t and svbool_t. More...
 
static void HandleArmMveStrictPolymorphismAttr (TypeProcessingState &State, QualType &CurType, ParsedAttr &Attr)
 
static void HandleOpenCLAccessAttr (QualType &CurType, const ParsedAttr &Attr, Sema &S)
 Handle OpenCL Access Qualifier Attribute. More...
 
static void HandleMatrixTypeAttr (QualType &CurType, const ParsedAttr &Attr, Sema &S)
 HandleMatrixTypeAttr - "matrix_type" attribute, like ext_vector_type. More...
 
static void HandleLifetimeBoundAttr (TypeProcessingState &State, QualType &CurType, ParsedAttr &Attr)
 
static bool isAddressSpaceKind (const ParsedAttr &attr)
 
static void assignInheritanceModel (Sema &S, CXXRecordDecl *RD)
 Locks in the inheritance model for the given class and all of its bases. More...
 
static unsigned getLiteralDiagFromTagKind (TagTypeKind Tag)
 Get diagnostic select index for tag kind for literal type diagnostic message. More...
 
static QualType getDecltypeForExpr (Sema &S, Expr *E)
 getDecltypeForExpr - Given an expr, will return the decltype for that expression, according to the rules in C++11 [dcl.type.simple]p4 and C++11 [expr.lambda.prim]p18. More...
 

Macro Definition Documentation

◆ CALLING_CONV_ATTRS_CASELIST

#define CALLING_CONV_ATTRS_CASELIST
Value:
case ParsedAttr::AT_CDecl: \
case ParsedAttr::AT_FastCall: \
case ParsedAttr::AT_StdCall: \
case ParsedAttr::AT_ThisCall: \
case ParsedAttr::AT_RegCall: \
case ParsedAttr::AT_Pascal: \
case ParsedAttr::AT_SwiftCall: \
case ParsedAttr::AT_SwiftAsyncCall: \
case ParsedAttr::AT_VectorCall: \
case ParsedAttr::AT_AArch64VectorPcs: \
case ParsedAttr::AT_MSABI: \
case ParsedAttr::AT_SysVABI: \
case ParsedAttr::AT_Pcs: \
case ParsedAttr::AT_IntelOclBicc: \
case ParsedAttr::AT_PreserveMost: \
case ParsedAttr::AT_PreserveAll

Definition at line 112 of file SemaType.cpp.

◆ FUNCTION_TYPE_ATTRS_CASELIST

#define FUNCTION_TYPE_ATTRS_CASELIST
Value:
case ParsedAttr::AT_NSReturnsRetained: \
case ParsedAttr::AT_NoReturn: \
case ParsedAttr::AT_Regparm: \
case ParsedAttr::AT_CmseNSCall: \
case ParsedAttr::AT_AnyX86NoCallerSavedRegisters: \
case ParsedAttr::AT_AnyX86NoCfCheck: \
CALLING_CONV_ATTRS_CASELIST

Definition at line 131 of file SemaType.cpp.

◆ GENERIC_IMAGE_TYPE

#define GENERIC_IMAGE_TYPE (   ImgType,
  Id 
)
Value:
case DeclSpec::TST_##ImgType##_t: \
switch (getImageAccess(DS.getAttributes())) { \
case OpenCLAccessAttr::Keyword_write_only: \
Result = Context.Id##WOTy; \
break; \
case OpenCLAccessAttr::Keyword_read_write: \
Result = Context.Id##RWTy; \
break; \
case OpenCLAccessAttr::Keyword_read_only: \
Result = Context.Id##ROTy; \
break; \
case OpenCLAccessAttr::SpellingNotCalculated: \
llvm_unreachable("Spelling not yet calculated"); \
} \
break;

◆ IMAGE_TYPE

#define IMAGE_TYPE (   ImgType,
  Id,
  SingletonId,
  Access,
  Suffix 
)
Value:
PrevAccessQual = #Access; \
break;

◆ MS_TYPE_ATTRS_CASELIST

#define MS_TYPE_ATTRS_CASELIST
Value:
case ParsedAttr::AT_Ptr32: \
case ParsedAttr::AT_Ptr64: \
case ParsedAttr::AT_SPtr: \
case ParsedAttr::AT_UPtr

Definition at line 141 of file SemaType.cpp.

◆ NULLABILITY_TYPE_ATTRS_CASELIST

#define NULLABILITY_TYPE_ATTRS_CASELIST
Value:
case ParsedAttr::AT_TypeNonNull: \
case ParsedAttr::AT_TypeNullable: \
case ParsedAttr::AT_TypeNullableResult: \
case ParsedAttr::AT_TypeNullUnspecified

Definition at line 148 of file SemaType.cpp.

◆ OBJC_POINTER_TYPE_ATTRS_CASELIST

#define OBJC_POINTER_TYPE_ATTRS_CASELIST
Value:
case ParsedAttr::AT_ObjCGC: \
case ParsedAttr::AT_ObjCOwnership

Definition at line 107 of file SemaType.cpp.

Enumeration Type Documentation

◆ TypeAttrLocation

The location of a type attribute.

Enumerator
TAL_DeclSpec 

The attribute is in the decl-specifier-seq.

TAL_DeclChunk 

The attribute is part of a DeclaratorChunk.

TAL_DeclName 

The attribute is immediately after the declaration's name.

Definition at line 354 of file SemaType.cpp.

◆ TypeDiagSelector

Enumerator
TDS_Function 
TDS_Pointer 
TDS_ObjCObjOrBlock 

Definition at line 44 of file SemaType.cpp.

Function Documentation

◆ applyObjCTypeArgs()

static QualType applyObjCTypeArgs ( Sema S,
SourceLocation  loc,
QualType  type,
ArrayRef< TypeSourceInfo * >  typeArgs,
SourceRange  typeArgsRange,
bool  failOnError = false 
)
static

Apply Objective-C type arguments to the given type.

Definition at line 838 of file SemaType.cpp.

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

◆ assignInheritanceModel()

static void assignInheritanceModel ( Sema S,
CXXRecordDecl RD 
)
static

Locks in the inheritance model for the given class and all of its bases.

Definition at line 8543 of file SemaType.cpp.

◆ BuildAddressSpaceIndex()

static bool BuildAddressSpaceIndex ( Sema S,
LangAS ASIdx,
const Expr AddrSpace,
SourceLocation  AttrLoc 
)
static

Build an AddressSpace index from a constant expression and diagnose any errors related to invalid address_spaces.

Returns true on successfully building an AddressSpace index.

Definition at line 6424 of file SemaType.cpp.

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

◆ checkArraySize()

static ExprResult checkArraySize ( Sema S,
Expr *&  ArraySize,
llvm::APSInt SizeVal,
unsigned  VLADiag,
bool  VLAIsError 
)
static

Check whether the specified array bound can be evaluated using the relevant language rules.

If so, returns the possibly-converted expression and sets SizeVal to the size. If not, but the expression might be a VLA bound, returns ExprResult(). Otherwise, produces a diagnostic and returns ExprError().

Definition at line 2285 of file SemaType.cpp.

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

◆ checkExtParameterInfos()

static void checkExtParameterInfos ( Sema S,
ArrayRef< QualType paramTypes,
const FunctionProtoType::ExtProtoInfo EPI,
llvm::function_ref< SourceLocation(unsigned)>  getParamLoc 
)
static

Check the extended parameter information.

Most of the necessary checking should occur when applying the parameter attribute; the only other checks required are positional restrictions.

Definition at line 2793 of file SemaType.cpp.

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

◆ checkNullabilityConsistency()

static void checkNullabilityConsistency ( Sema S,
SimplePointerKind  pointerKind,
SourceLocation  pointerLoc,
SourceLocation  pointerEndLoc = SourceLocation() 
)
static

Complains about missing nullability if the file containing pointerLoc has other uses of nullability (either the keywords or the assume_nonnull pragma).

If the file has not seen other uses of nullability, this particular pointer is saved for possible later diagnosis. See recordNullabilitySeen().

Definition at line 4304 of file SemaType.cpp.

◆ checkNullabilityTypeSpecifier()

static bool checkNullabilityTypeSpecifier ( TypeProcessingState &  state,
QualType type,
ParsedAttr attr,
bool  allowOnArrayType 
)
static

Applies a nullability type specifier to the given type, if possible.

Parameters
stateThe type processing state.
typeThe type to which the nullability specifier will be added. On success, this type will be updated appropriately.
attrThe attribute as written on the type.
allowOnArrayTypeWhether to accept nullability specifiers on an array type (e.g., because it will decay to a pointer).
Returns
true if a problem has been diagnosed, false on success.

Definition at line 7122 of file SemaType.cpp.

Referenced by processTypeAttrs().

◆ checkObjCKindOfType()

static bool checkObjCKindOfType ( TypeProcessingState &  state,
QualType type,
ParsedAttr attr 
)
static

Check the application of the Objective-C '__kindof' qualifier to the given type.

Definition at line 7226 of file SemaType.cpp.

Referenced by processTypeAttrs().

◆ checkOmittedBlockReturnType()

static bool checkOmittedBlockReturnType ( Sema S,
Declarator declarator,
QualType  Result 
)
static

Return true if this is omitted block return type.

Also check type attributes and type qualifiers when returning true.

Definition at line 808 of file SemaType.cpp.

◆ checkQualifiedFunction()

static bool checkQualifiedFunction ( Sema S,
QualType  T,
SourceLocation  Loc,
QualifiedFunctionKind  QFK 
)
static

Check whether the type T is a qualified function type, and if it is, diagnose that it cannot be contained within the given kind of declarator.

Definition at line 2064 of file SemaType.cpp.

Referenced by clang::Sema::BuildBlockPointerType(), clang::Sema::BuildPointerType(), and clang::Sema::BuildReferenceType().

◆ classifyPointerDeclarator()

static PointerDeclaratorKind classifyPointerDeclarator ( Sema S,
QualType  type,
Declarator declarator,
PointerWrappingDeclaratorKind &  wrappingKind 
)
static

Classify the given declarator, whose type-specified is type, based on what kind of pointer it refers to.

This is used to determine the default nullability.

Definition at line 4042 of file SemaType.cpp.

◆ ConvertDeclSpecToType()

static QualType ConvertDeclSpecToType ( TypeProcessingState &  state)
static

Convert the specified declspec to the appropriate type object.

Parameters
stateSpecifies the declarator containing the declaration specifier to be converted, along with other associated processing state.
Returns
The type described by the declaration specifiers. This function never returns null.

Definition at line 1266 of file SemaType.cpp.

Referenced by GetDeclSpecTypeForDeclarator().

◆ createNullabilityAttr()

static Attr* createNullabilityAttr ( ASTContext Ctx,
ParsedAttr Attr,
NullabilityKind  NK 
)
static

◆ createSimpleAttr()

template<typename AttrT >
static AttrT* createSimpleAttr ( ASTContext Ctx,
ParsedAttr AL 
)
static

Definition at line 4404 of file SemaType.cpp.

References clang::ParsedAttr::setUsedAsTypeAttr().

◆ deduceOpenCLPointeeAddrSpace()

static QualType deduceOpenCLPointeeAddrSpace ( Sema S,
QualType  PointeeType 
)
static

◆ diagnoseAndRemoveTypeQualifiers()

static void diagnoseAndRemoveTypeQualifiers ( Sema S,
const DeclSpec DS,
unsigned TypeQuals,
QualType  TypeSoFar,
unsigned  RemoveTQs,
unsigned  DiagID 
)
static

Definition at line 780 of file SemaType.cpp.

◆ diagnoseBadTypeAttribute()

static void diagnoseBadTypeAttribute ( Sema S,
const ParsedAttr attr,
QualType  type 
)
static

diagnoseBadTypeAttribute - Diagnoses a type attribute which doesn't apply to the given type.

Definition at line 69 of file SemaType.cpp.

Referenced by distributeFunctionTypeAttr(), and distributeObjCPointerTypeAttr().

◆ DiagnoseMultipleAddrSpaceAttributes()

static bool DiagnoseMultipleAddrSpaceAttributes ( Sema S,
LangAS  ASOld,
LangAS  ASNew,
SourceLocation  AttrLoc 
)
static

Definition at line 4431 of file SemaType.cpp.

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

◆ diagnoseRedundantReturnTypeQualifiers()

static void diagnoseRedundantReturnTypeQualifiers ( Sema S,
QualType  RetTy,
Declarator D,
unsigned  FunctionChunkIndex 
)
static

Definition at line 3155 of file SemaType.cpp.

◆ distributeFunctionTypeAttr()

static void distributeFunctionTypeAttr ( TypeProcessingState &  state,
ParsedAttr attr,
QualType  type 
)
static

A function type attribute was written somewhere in a declaration other than on the declarator itself or in the decl spec.

Given that it didn't apply in whatever position it was written in, try to move it to a more appropriate position.

Definition at line 580 of file SemaType.cpp.

References clang::DeclaratorChunk::Array, clang::ast_matchers::attr, clang::DeclaratorChunk::BlockPointer, diagnoseBadTypeAttribute(), clang::DeclaratorChunk::Function, clang::DeclaratorChunk::getAttrs(), clang::Declarator::getTypeObject(), clang::DeclaratorChunk::Kind, clang::DeclaratorChunk::MemberPointer, moveAttrFromListToList(), clang::DeclaratorChunk::Paren, clang::DeclaratorChunk::Pipe, clang::DeclaratorChunk::Pointer, clang::DeclaratorChunk::Reference, and state.

Referenced by processTypeAttrs().

◆ distributeFunctionTypeAttrFromDeclarator()

static void distributeFunctionTypeAttrFromDeclarator ( TypeProcessingState &  state,
ParsedAttr attr,
QualType declSpecType 
)
static

A function type attribute was written on the declarator.

Try to apply it somewhere.

Definition at line 656 of file SemaType.cpp.

References clang::ast_matchers::attr, distributeFunctionTypeAttrToInnermost(), clang::Declarator::getAttributes(), clang::ParsedAttributesView::remove(), and state.

Referenced by distributeTypeAttrsFromDeclarator().

◆ distributeFunctionTypeAttrFromDeclSpec()

static void distributeFunctionTypeAttrFromDeclSpec ( TypeProcessingState &  state,
ParsedAttr attr,
QualType declSpecType 
)
static

A function type attribute was written in the decl spec.

Try to apply it somewhere.

Definition at line 630 of file SemaType.cpp.

References clang::ast_matchers::attr, distributeFunctionTypeAttrToInnermost(), moveAttrFromListToList(), and state.

Referenced by processTypeAttrs().

◆ distributeFunctionTypeAttrToInnermost()

static bool distributeFunctionTypeAttrToInnermost ( TypeProcessingState &  state,
ParsedAttr attr,
ParsedAttributesView attrList,
QualType declSpecType 
)
static

Try to distribute a function type attribute to the innermost function chunk or type.

Returns true if the attribute was distributed, false if no location was found.

Definition at line 611 of file SemaType.cpp.

References clang::ast_matchers::attr, clang::DeclaratorChunk::Function, clang::DeclaratorChunk::getAttrs(), clang::Declarator::getNumTypeObjects(), clang::Declarator::getTypeObject(), handleFunctionTypeAttr(), clang::DeclaratorChunk::Kind, moveAttrFromListToList(), and state.

Referenced by distributeFunctionTypeAttrFromDeclarator(), and distributeFunctionTypeAttrFromDeclSpec().

◆ distributeNullabilityTypeAttr()

static bool distributeNullabilityTypeAttr ( TypeProcessingState &  state,
QualType  type,
ParsedAttr attr 
)
static

Distribute a nullability type attribute that cannot be applied to the type specifier to a pointer, block pointer, or member pointer declarator, complaining if necessary.

Returns
true if the nullability annotation was distributed, false otherwise.

Attempt to move the attribute to the specified chunk.

Definition at line 7284 of file SemaType.cpp.

References clang::DeclaratorChunk::Array, clang::ast_matchers::attr, clang::DeclaratorChunk::BlockPointer, clang::FixItHint::CreateInsertion(), clang::FixItHint::CreateRemoval(), clang::DeclaratorChunk::Function, clang::DeclaratorChunk::getAttrs(), clang::Declarator::getTypeObject(), hasNullabilityAttr(), clang::DeclaratorChunk::Kind, clang::DeclaratorChunk::Loc, mapNullabilityAttrKind(), maybeMovePastReturnType(), clang::DeclaratorChunk::MemberPointer, moveAttrFromListToList(), clang::DeclaratorChunk::Paren, clang::DeclaratorChunk::Pipe, clang::DeclaratorChunk::Pointer, clang::DeclaratorChunk::Reference, and state.

Referenced by processTypeAttrs().

◆ distributeObjCPointerTypeAttr()

static void distributeObjCPointerTypeAttr ( TypeProcessingState &  state,
ParsedAttr attr,
QualType  type 
)
static

Given that an objc_gc attribute was written somewhere on a declaration other than on the declarator itself (for which, use distributeObjCPointerTypeAttrFromDeclarator), and given that it didn't apply in whatever position it was written in, try to move it to a more appropriate position.

Definition at line 463 of file SemaType.cpp.

References clang::DeclaratorChunk::Array, clang::ast_matchers::attr, clang::DeclaratorChunk::BlockPointer, diagnoseBadTypeAttribute(), clang::DeclaratorChunk::Function, clang::DeclaratorChunk::getAttrs(), clang::Declarator::getTypeObject(), clang::DeclaratorChunk::Kind, maybeMovePastReturnType(), clang::DeclaratorChunk::MemberPointer, moveAttrFromListToList(), clang::DeclaratorChunk::Paren, clang::DeclaratorChunk::Pipe, clang::DeclaratorChunk::Pointer, clang::DeclaratorChunk::Reference, and state.

Referenced by processTypeAttrs().

◆ distributeObjCPointerTypeAttrFromDeclarator()

static void distributeObjCPointerTypeAttrFromDeclarator ( TypeProcessingState &  state,
ParsedAttr attr,
QualType declSpecType 
)
static

◆ distributeTypeAttrsFromDeclarator()

static void distributeTypeAttrsFromDeclarator ( TypeProcessingState &  state,
QualType declSpecType 
)
static

Given that there are attributes written on the declarator itself, try to distribute any type attributes to the appropriate declarator chunk.

These are attributes like the following: int f ATTR; int (f ATTR)(); but not necessarily this: int f() ATTR;

Definition at line 681 of file SemaType.cpp.

References clang::ast_matchers::attr, distributeFunctionTypeAttrFromDeclarator(), distributeObjCPointerTypeAttrFromDeclarator(), FUNCTION_TYPE_ATTRS_CASELIST, MS_TYPE_ATTRS_CASELIST, NULLABILITY_TYPE_ATTRS_CASELIST, OBJC_POINTER_TYPE_ATTRS_CASELIST, and state.

Referenced by GetDeclSpecTypeForDeclarator().

◆ emitNullabilityConsistencyWarning()

static void emitNullabilityConsistencyWarning ( Sema S,
SimplePointerKind  PointerKind,
SourceLocation  PointerLoc,
SourceLocation  PointerEndLoc 
)
static

Definition at line 4270 of file SemaType.cpp.

◆ fillAtomicQualLoc()

static void fillAtomicQualLoc ( AtomicTypeLoc  ATL,
const DeclaratorChunk Chunk 
)
static

◆ fillAttributedTypeLoc()

static void fillAttributedTypeLoc ( AttributedTypeLoc  TL,
TypeProcessingState &  State 
)
static

◆ fillDependentAddressSpaceTypeLoc()

static void fillDependentAddressSpaceTypeLoc ( DependentAddressSpaceTypeLoc  DASTL,
const ParsedAttributesView Attrs 
)
static

◆ fillMatrixTypeLoc()

static void fillMatrixTypeLoc ( MatrixTypeLoc  MTL,
const ParsedAttributesView Attrs 
)
static

◆ fixItNullability()

template<typename DiagBuilderT >
static void fixItNullability ( Sema S,
DiagBuilderT &  Diag,
SourceLocation  PointerLoc,
NullabilityKind  Nullability 
)
static

Creates a fix-it to insert a C-style nullability keyword at pointerLoc, taking into account whitespace before and after.

Definition at line 4235 of file SemaType.cpp.

◆ getCCForDeclaratorChunk()

static CallingConv getCCForDeclaratorChunk ( Sema S,
Declarator D,
const ParsedAttributesView AttrList,
const DeclaratorChunk::FunctionTypeInfo FTI,
unsigned  ChunkIndex 
)
static

Helper for figuring out the default CC for a function declarator type.

If this is the outermost chunk, then we can determine the CC from the declarator context. If not, then this could be either a member function type or normal function type.

Definition at line 3869 of file SemaType.cpp.

◆ getCCTypeAttr()

static Attr* getCCTypeAttr ( ASTContext Ctx,
ParsedAttr Attr 
)
static

Definition at line 7365 of file SemaType.cpp.

References clang::Attr::getKind().

◆ GetDeclSpecTypeForDeclarator()

static QualType GetDeclSpecTypeForDeclarator ( TypeProcessingState &  state,
TypeSourceInfo *&  ReturnTypeInfo 
)
static

Definition at line 3326 of file SemaType.cpp.

References clang::AliasDecl, clang::AliasTemplate, clang::Auto, clang::Block, clang::BlockLiteral, clang::Condition, clang::Sema::Context, clang::UnqualifiedId::ConversionFunctionId, clang::ConversionId, ConvertDeclSpecToType(), clang::Sema::CurContext, clang::CXXCatch, clang::CXXNew, clang::DecltypeAuto, clang::ASTContext::DependentTy, clang::Sema::Diag(), distributeTypeAttrsFromDeclarator(), clang::ParsedAttributesView::empty(), clang::File, clang::ForInit, clang::FunctionalCast, clang::TemplateName::getAsTemplateDecl(), clang::DeclSpec::getAttributes(), clang::Declarator::getAttributes(), clang::SourceRange::getBegin(), clang::Type::getContainedDeducedType(), clang::Declarator::getContext(), clang::Sema::getCurLambda(), clang::Sema::getCurScope(), clang::Declarator::getDeclSpec(), clang::UnqualifiedId::getKind(), clang::Sema::getLangOpts(), clang::Decl::getLocation(), clang::Declarator::getMutableDeclSpec(), clang::Declarator::getName(), clang::Declarator::getNumTypeObjects(), clang::DeclSpec::getParsedSpecifiers(), clang::DeclSpec::getRepAsDecl(), clang::UnqualifiedId::getSourceRange(), clang::DeclSpec::getStorageClassSpec(), clang::Sema::getTemplateNameKindForDiagnostics(), clang::Declarator::getTrailingReturnType(), clang::ASTContext::getTypeDeclType(), clang::Sema::GetTypeFromParser(), clang::DeclSpec::getTypeSpecTypeLoc(), clang::GNUAutoType, clang::Declarator::hasTrailingReturnType(), clang::IK_ConstructorName, clang::IK_ConstructorTemplateId, clang::IK_ConversionFunctionId, clang::IK_DeductionGuideName, clang::IK_DestructorName, clang::IK_Identifier, clang::IK_ImplicitSelfParam, clang::IK_LiteralOperatorId, clang::IK_OperatorFunctionId, clang::IK_TemplateId, int, clang::ASTContext::IntTy, clang::Sema::InventedParameterInfos, InventTemplateParameter(), clang::TagDecl::isCompleteDefinition(), clang::DeclSpec::isFriendSpecified(), clang::Scope::isFunctionDeclarationScope(), clang::Declarator::isFunctionDeclarator(), clang::Declarator::isInvalidType(), clang::QualType::isNull(), clang::DeclSpec::isTypeSpecOwned(), clang::KNRTypeList, clang::LambdaExpr, clang::LambdaExprParameter, clang::Member, clang::ObjCCatch, clang::ObjCParameter, clang::ObjCResult, clang::DeclSpec::PQ_TypeSpecifier, processTypeAttrs(), clang::Prototype, clang::RequiresExpr, clang::DeclSpec::SCS_static, clang::DeclSpec::SCS_typedef, clang::SelectionInit, clang::TagDecl::setEmbeddedInDeclarator(), clang::Declarator::setInvalidType(), state, TAL_DeclSpec, clang::TemplateArg, clang::TemplateParam, clang::TemplateTypeArg, clang::TrailingReturn, clang::TrailingReturnVar, clang::TTK_Class, clang::TTK_Enum, clang::TTK_Interface, clang::TTK_Struct, clang::TTK_Union, clang::TypeName, and clang::ASTContext::VoidTy.

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

◆ getDecltypeForExpr()

static QualType getDecltypeForExpr ( Sema S,
Expr E 
)
static

getDecltypeForExpr - Given an expr, will return the decltype for that expression, according to the rules in C++11 [dcl.type.simple]p4 and C++11 [expr.lambda.prim]p18.

Definition at line 8913 of file SemaType.cpp.

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

◆ GetFullTypeForDeclarator()

static TypeSourceInfo* GetFullTypeForDeclarator ( TypeProcessingState &  state,
QualType  declSpecType,
TypeSourceInfo TInfo 
)
static

Never complain.

Complain on the inner pointers (but not the outermost pointer).

Complain about any pointers that don't have nullability specified or inferred.

Definition at line 4446 of file SemaType.cpp.

References state.

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

◆ getFunctionQualifiersAsString()

static std::string getFunctionQualifiersAsString ( const FunctionProtoType FnTy)
static

◆ getImageAccess()

static OpenCLAccessAttr::Spelling getImageAccess ( const ParsedAttributesView Attrs)
static

Definition at line 1253 of file SemaType.cpp.

◆ getLiteralDiagFromTagKind()

static unsigned getLiteralDiagFromTagKind ( TagTypeKind  Tag)
static

Get diagnostic select index for tag kind for literal type diagnostic message.

WARNING: Indexes apply to particular diagnostics only!

Returns
diagnostic select index.

Definition at line 8755 of file SemaType.cpp.

References clang::TTK_Class, clang::TTK_Interface, and clang::TTK_Struct.

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

◆ getNullabilityCompletenessCheckFileID()

static FileID getNullabilityCompletenessCheckFileID ( Sema S,
SourceLocation  loc 
)
static

Definition at line 4195 of file SemaType.cpp.

◆ getPrintableNameForEntity()

static std::string getPrintableNameForEntity ( DeclarationName  Entity)
static

◆ GetTypeSourceInfoForDeclarator()

static TypeSourceInfo * GetTypeSourceInfoForDeclarator ( TypeProcessingState &  State,
QualType  T,
TypeSourceInfo ReturnTypeInfo 
)
static

Create and instantiate a TypeSourceInfo with type source information.

Parameters
TQualType referring to the type as written in source code.
ReturnTypeInfoFor declarators whose return type does not show up in the normal place in the declaration specifiers (such as a C++ conversion function), this pointer will refer to a type source information for that return type.

Definition at line 6299 of file SemaType.cpp.

◆ HandleAddressSpaceTypeAttribute()

static void HandleAddressSpaceTypeAttribute ( QualType Type,
const ParsedAttr Attr,
TypeProcessingState &  State 
)
static

HandleAddressSpaceTypeAttribute - Process an address_space attribute on the specified type.

The attribute contains 1 argument, the id of the address space for the type.

Definition at line 6506 of file SemaType.cpp.

Referenced by processTypeAttrs().

◆ HandleArmMveStrictPolymorphismAttr()

static void HandleArmMveStrictPolymorphismAttr ( TypeProcessingState &  State,
QualType CurType,
ParsedAttr Attr 
)
static

◆ HandleArmSveVectorBitsTypeAttr()

static void HandleArmSveVectorBitsTypeAttr ( QualType CurType,
ParsedAttr Attr,
Sema S 
)
static

HandleArmSveVectorBitsTypeAttr - The "arm_sve_vector_bits" attribute is used to create fixed-length versions of sizeless SVE types defined by the ACLE, such as svint32_t and svbool_t.

Definition at line 7883 of file SemaType.cpp.

Referenced by processTypeAttrs().

◆ HandleExtVectorTypeAttr()

static void HandleExtVectorTypeAttr ( QualType CurType,
const ParsedAttr Attr,
Sema S 
)
static

Process the OpenCL-like ext_vector_type attribute when it occurs on a type.

Definition at line 7750 of file SemaType.cpp.

Referenced by processTypeAttrs().

◆ handleFunctionTypeAttr()

static bool handleFunctionTypeAttr ( TypeProcessingState &  state,
ParsedAttr attr,
QualType type 
)
static

Process an individual function attribute.

Returns true to indicate that the attribute was handled, false if it wasn't.

Definition at line 7420 of file SemaType.cpp.

Referenced by distributeFunctionTypeAttrToInnermost(), and processTypeAttrs().

◆ HandleLifetimeBoundAttr()

static void HandleLifetimeBoundAttr ( TypeProcessingState &  State,
QualType CurType,
ParsedAttr Attr 
)
static

Definition at line 8039 of file SemaType.cpp.

References State.

Referenced by processTypeAttrs().

◆ HandleMatrixTypeAttr()

static void HandleMatrixTypeAttr ( QualType CurType,
const ParsedAttr Attr,
Sema S 
)
static

HandleMatrixTypeAttr - "matrix_type" attribute, like ext_vector_type.

Definition at line 8019 of file SemaType.cpp.

Referenced by processTypeAttrs().

◆ handleMSPointerTypeQualifierAttr()

static bool handleMSPointerTypeQualifierAttr ( TypeProcessingState &  state,
ParsedAttr attr,
QualType type 
)
static

Definition at line 6998 of file SemaType.cpp.

Referenced by processTypeAttrs().

◆ HandleNeonVectorTypeAttr()

static void HandleNeonVectorTypeAttr ( QualType CurType,
const ParsedAttr Attr,
Sema S,
VectorType::VectorKind  VecKind 
)
static

HandleNeonVectorTypeAttr - The "neon_vector_type" and "neon_polyvector_type" attributes are used to create vector types that are mangled according to ARM's ABI.

Otherwise, these types are identical to those created with the "vector_size" attribute. Unlike "vector_size" the argument to these Neon attributes is the number of vector elements, not the vector size in bytes. The vector width and element type must match one of the standard Neon vector types.

Definition at line 7837 of file SemaType.cpp.

Referenced by processTypeAttrs().

◆ handleObjCGCTypeAttr()

static bool handleObjCGCTypeAttr ( TypeProcessingState &  state,
ParsedAttr attr,
QualType type 
)
static

handleObjCGCTypeAttr - Process the attribute((objc_gc)) type attribute on the specified type.

Returns true to indicate that the attribute was handled, false to indicate that the type does not permit the attribute.

Definition at line 6774 of file SemaType.cpp.

Referenced by handleObjCPointerTypeAttr().

◆ handleObjCOwnershipTypeAttr()

static bool handleObjCOwnershipTypeAttr ( TypeProcessingState &  state,
ParsedAttr attr,
QualType type 
)
static

handleObjCOwnershipTypeAttr - Process an objc_ownership attribute on the specified type.

Returns 'true' if the attribute was handled.

Definition at line 6587 of file SemaType.cpp.

References clang::Declarator::getNumTypeObjects(), clang::Type::getPointeeType(), clang::Type::isObjCRetainableType(), clang::Type::isPointerType(), maybeMovePastReturnType(), and state.

Referenced by handleObjCPointerTypeAttr().

◆ handleObjCPointerTypeAttr()

static bool handleObjCPointerTypeAttr ( TypeProcessingState &  state,
ParsedAttr attr,
QualType type 
)
static

◆ HandleOpenCLAccessAttr()

static void HandleOpenCLAccessAttr ( QualType CurType,
const ParsedAttr Attr,
Sema S 
)
static

Handle OpenCL Access Qualifier Attribute.

Definition at line 7963 of file SemaType.cpp.

Referenced by processTypeAttrs().

◆ HandleVectorSizeAttr()

static void HandleVectorSizeAttr ( QualType CurType,
const ParsedAttr Attr,
Sema S 
)
static

HandleVectorSizeAttribute - this attribute is only applicable to integral and float scalars, although arrays, pointers, and function return values are allowed in conjunction with this construct.

Aggregates with this attribute are invalid, even if they are of the same size as a corresponding scalar. The raw attribute should contain precisely 1 argument, the vector size for the variable, measured in bytes. If curType and rawAttr are well formed, this routine will return a new vector type.

Definition at line 7730 of file SemaType.cpp.

Referenced by processTypeAttrs().

◆ hasNullabilityAttr()

static bool hasNullabilityAttr ( const ParsedAttributesView attrs)
static

Check whether there is a nullability attribute of any kind in the given attribute list.

Definition at line 3995 of file SemaType.cpp.

Referenced by distributeNullabilityTypeAttr().

◆ hasOuterPointerLikeChunk()

static bool hasOuterPointerLikeChunk ( const Declarator D,
unsigned  endIndex 
)
static

Returns true if any of the declarator chunks before endIndex include a level of indirection: array, pointer, reference, or pointer-to-member.

Because declarator chunks are stored in outer-to-inner order, testing every chunk before endIndex is testing all chunks that embed the current chunk as part of their type.

It is legal to pass the result of Declarator::getNumTypeObjects() as the end index, in which case all chunks are tested.

Definition at line 4374 of file SemaType.cpp.

References clang::DeclaratorChunk::Array, clang::DeclaratorChunk::BlockPointer, clang::DeclaratorChunk::Function, clang::Declarator::getTypeObject(), clang::DeclaratorChunk::Kind, clang::DeclaratorChunk::MemberPointer, clang::DeclaratorChunk::Paren, clang::DeclaratorChunk::Pipe, clang::DeclaratorChunk::Pointer, and clang::DeclaratorChunk::Reference.

Referenced by processTypeAttrs().

◆ inferARCLifetimeForPointee()

static QualType inferARCLifetimeForPointee ( Sema S,
QualType  type,
SourceLocation  loc,
bool  isReference 
)
static

Given that we're building a pointer or reference to the given.

Definition at line 1974 of file SemaType.cpp.

Referenced by clang::Sema::BuildPointerType(), and clang::Sema::BuildReferenceType().

◆ inferARCWriteback()

static void inferARCWriteback ( TypeProcessingState &  state,
QualType declSpecType 
)
static

Given that this is the declaration of a parameter under ARC, attempt to infer attributes and such for pointer-to-whatever types.

Definition at line 3008 of file SemaType.cpp.

◆ InventTemplateParameter()

static std::pair<QualType, TypeSourceInfo *> InventTemplateParameter ( TypeProcessingState &  state,
QualType  T,
TypeSourceInfo TrailingTSI,
AutoType Auto,
InventedTemplateParameterInfo Info 
)
static

Definition at line 3226 of file SemaType.cpp.

Referenced by GetDeclSpecTypeForDeclarator().

◆ isAddressSpaceKind()

static bool isAddressSpaceKind ( const ParsedAttr attr)
static

Definition at line 8049 of file SemaType.cpp.

References clang::ast_matchers::attr.

Referenced by processTypeAttrs().

◆ IsNoDerefableChunk()

static bool IsNoDerefableChunk ( DeclaratorChunk  Chunk)
static

◆ isOmittedBlockReturnType()

static bool isOmittedBlockReturnType ( const Declarator D)
static

isOmittedBlockReturnType - Return true if this declarator is missing a return type because this is a omitted return type on a block literal.

Definition at line 52 of file SemaType.cpp.

References clang::BlockLiteral, clang::DeclaratorChunk::Function, clang::Declarator::getContext(), clang::Declarator::getDeclSpec(), clang::Declarator::getNumTypeObjects(), clang::Declarator::getTypeObject(), clang::DeclSpec::hasTypeSpecifier(), and clang::DeclaratorChunk::Kind.

◆ isPermittedNeonBaseType()

static bool isPermittedNeonBaseType ( QualType Ty,
VectorType::VectorKind  VecKind,
Sema S 
)
static

Definition at line 7765 of file SemaType.cpp.

◆ mapNullabilityAttrKind()

static NullabilityKind mapNullabilityAttrKind ( ParsedAttr::Kind  kind)
static

Map a nullability attribute kind to a nullability kind.

Definition at line 7090 of file SemaType.cpp.

References clang::NonNull, clang::Nullable, clang::NullableResult, and clang::Unspecified.

Referenced by distributeNullabilityTypeAttr().

◆ maybeMovePastReturnType()

static DeclaratorChunk* maybeMovePastReturnType ( Declarator declarator,
unsigned  i,
bool  onlyBlockPointers 
)
static

Given the index of a declarator chunk, check whether that chunk directly specifies the return type of a function and, if so, find an appropriate place for it.

Parameters
i- a notional index which the search will start immediately inside
onlyBlockPointersWhether we should only look into block pointer types (vs. all pointer types).

Definition at line 395 of file SemaType.cpp.

References clang::DeclaratorChunk::Array, clang::DeclaratorChunk::BlockPointer, clang::DeclaratorChunk::Function, clang::Declarator::getNumTypeObjects(), clang::Declarator::getTypeObject(), clang::DeclaratorChunk::Kind, clang::DeclaratorChunk::MemberPointer, clang::DeclaratorChunk::Paren, clang::DeclaratorChunk::Pipe, clang::DeclaratorChunk::Pointer, and clang::DeclaratorChunk::Reference.

Referenced by distributeNullabilityTypeAttr(), distributeObjCPointerTypeAttr(), and handleObjCOwnershipTypeAttr().

◆ maybeSynthesizeBlockSignature()

static void maybeSynthesizeBlockSignature ( TypeProcessingState &  state,
QualType  declSpecType 
)
static

◆ moveAttrFromListToList()

static void moveAttrFromListToList ( ParsedAttr attr,
ParsedAttributesView fromList,
ParsedAttributesView toList 
)
static

◆ processTypeAttrs()

static void processTypeAttrs ( TypeProcessingState &  state,
QualType type,
TypeAttrLocation  TAL,
ParsedAttributesView attrs 
)
static

◆ recordNullabilitySeen()

static void recordNullabilitySeen ( Sema S,
SourceLocation  loc 
)
static

Marks that a nullability feature has been used in the file containing loc.

If this file already had pointer types in it that were missing nullability, the first such instance is retroactively diagnosed.

See also
checkNullabilityConsistency

Definition at line 4345 of file SemaType.cpp.

◆ transferARCOwnership()

static void transferARCOwnership ( TypeProcessingState &  state,
QualType declSpecTy,
Qualifiers::ObjCLifetime  ownership 
)
static

Used for transferring ownership in casts resulting in l-values.

Definition at line 5808 of file SemaType.cpp.

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

◆ transferARCOwnershipToDeclaratorChunk()

static void transferARCOwnershipToDeclaratorChunk ( TypeProcessingState &  state,
Qualifiers::ObjCLifetime  ownership,
unsigned  chunkIndex 
)
static

Definition at line 5771 of file SemaType.cpp.

◆ transferARCOwnershipToDeclSpec()

static void transferARCOwnershipToDeclSpec ( Sema S,
QualType declSpecTy,
Qualifiers::ObjCLifetime  ownership 
)
static

Definition at line 5760 of file SemaType.cpp.

◆ verifyValidIntegerConstantExpr()

static bool verifyValidIntegerConstantExpr ( Sema S,
const ParsedAttr Attr,
llvm::APSInt Result 
)
static

Definition at line 7814 of file SemaType.cpp.

◆ warnAboutAmbiguousFunction()

static void warnAboutAmbiguousFunction ( Sema S,
Declarator D,
DeclaratorChunk DeclType,
QualType  RT 
)
static

Produce an appropriate diagnostic for an ambiguity between a function declarator and a C++ direct-initializer.

Definition at line 3653 of file SemaType.cpp.

◆ warnAboutRedundantParens()

static void warnAboutRedundantParens ( Sema S,
Declarator D,
QualType  T 
)
static

Produce an appropriate diagnostic for a declarator with top-level parentheses.

Definition at line 3750 of file SemaType.cpp.

Id
int Id
Definition: ASTDiff.cpp:191
getImageAccess
static OpenCLAccessAttr::Spelling getImageAccess(const ParsedAttributesView &Attrs)
Definition: SemaType.cpp:1253