clang
3.9.0
|
#include "TypeLocBuilder.h"
#include "clang/AST/ASTConsumer.h"
#include "clang/AST/ASTContext.h"
#include "clang/AST/ASTMutationListener.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/ScopeInfo.h"
#include "clang/Sema/SemaInternal.h"
#include "clang/Sema/Template.h"
#include "llvm/ADT/SmallPtrSet.h"
#include "llvm/ADT/SmallString.h"
#include "llvm/ADT/StringSwitch.h"
#include "llvm/Support/ErrorHandling.h"
#include "clang/Basic/OpenCLImageTypes.def"
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... | |
enum | QualifiedFunctionKind |
Kinds of declarator that cannot contain a qualified function type. More... | |
enum | SimplePointerKind |
A simple notion of pointer kinds, which matches up with the various pointer declarators. More... | |
enum | PointerDeclaratorKind |
Describes the kind of a pointer a declarator describes. 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 AttributeList &attr, QualType type) |
diagnoseBadTypeAttribute - Diagnoses a type attribute which doesn't apply to the given type. More... | |
static void | spliceAttrIntoList (AttributeList &attr, AttributeList *&head) |
static void | spliceAttrOutOfList (AttributeList &attr, AttributeList *&head) |
static void | moveAttrFromListToList (AttributeList &attr, AttributeList *&fromList, AttributeList *&toList) |
static void | processTypeAttrs (TypeProcessingState &state, QualType &type, TypeAttrLocation TAL, AttributeList *attrs) |
static bool | handleFunctionTypeAttr (TypeProcessingState &state, AttributeList &attr, QualType &type) |
Process an individual function attribute. More... | |
static bool | handleMSPointerTypeQualifierAttr (TypeProcessingState &state, AttributeList &attr, QualType &type) |
static bool | handleObjCGCTypeAttr (TypeProcessingState &state, AttributeList &attr, QualType &type) |
handleObjCGCTypeAttr - Process the attribute((objc_gc)) type attribute on the specified type. More... | |
static bool | handleObjCOwnershipTypeAttr (TypeProcessingState &state, AttributeList &attr, QualType &type) |
handleObjCOwnershipTypeAttr - Process an objc_ownership attribute on the specified type. More... | |
static bool | handleObjCPointerTypeAttr (TypeProcessingState &state, AttributeList &attr, QualType &type) |
static DeclaratorChunk * | maybeMovePastReturnType (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, AttributeList &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, AttributeList &attr, QualType &declSpecType) |
Distribute an objc_gc type attribute that was written on the declarator. More... | |
static void | distributeFunctionTypeAttr (TypeProcessingState &state, AttributeList &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, AttributeList &attr, AttributeList *&attrList, QualType &declSpecType) |
Try to distribute a function type attribute to the innermost function chunk or type. More... | |
static void | distributeFunctionTypeAttrFromDeclSpec (TypeProcessingState &state, AttributeList &attr, QualType &declSpecType) |
A function type attribute was written in the decl spec. More... | |
static void | distributeFunctionTypeAttrFromDeclarator (TypeProcessingState &state, AttributeList &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 QualType | applyObjCProtocolQualifiers (Sema &S, SourceLocation loc, SourceRange range, QualType type, ArrayRef< ObjCProtocolDecl * > protocols, const SourceLocation *protocolLocs, bool failOnError=false) |
Apply Objective-C protocol qualifiers to the given type. More... | |
static StringRef | getImageAccessAttrStr (AttributeList *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 bool | isArraySizeVLA (Sema &S, Expr *ArraySize, llvm::APSInt &SizeVal) |
Check whether the specified array size makes the array type a VLA. 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 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 CallingConv | getCCForDeclaratorChunk (Sema &S, Declarator &D, const DeclaratorChunk::FunctionTypeInfo &FTI, unsigned ChunkIndex) |
Helper for figuring out the default CC for a function declarator type. More... | |
static bool | hasNullabilityAttr (const AttributeList *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) |
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) |
static void | checkNullabilityConsistency (TypeProcessingState &state, SimplePointerKind pointerKind, SourceLocation pointerLoc) |
Check for consistent use of nullability. More... | |
static TypeSourceInfo * | GetFullTypeForDeclarator (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 AttributeList::Kind | getAttrListKind (AttributedType::Kind kind) |
Map an AttributedType::Kind to an AttributeList::Kind. More... | |
static void | fillAttributedTypeLoc (AttributedTypeLoc TL, const AttributeList *attrs, const AttributeList *DeclAttrs=nullptr) |
static void | fillAtomicQualLoc (AtomicTypeLoc ATL, const DeclaratorChunk &Chunk) |
static void | HandleAddressSpaceTypeAttribute (QualType &Type, const AttributeList &Attr, Sema &S) |
HandleAddressSpaceTypeAttribute - Process an address_space attribute on the specified type. More... | |
static bool | hasDirectOwnershipQualifier (QualType type) |
Does this type have a "direct" ownership qualifier? That is, is it written like "__strong id", as opposed to something like "typeof(foo)", where that happens to be strong? More... | |
static NullabilityKind | mapNullabilityAttrKind (AttributeList::Kind kind) |
Map a nullability attribute kind to a nullability kind. More... | |
static bool | distributeNullabilityTypeAttr (TypeProcessingState &state, QualType type, AttributeList &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 AttributedType::Kind | getCCTypeAttrKind (AttributeList &Attr) |
static void | HandleVectorSizeAttr (QualType &CurType, const AttributeList &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 AttributeList &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 void | HandleNeonVectorTypeAttr (QualType &CurType, const AttributeList &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 | HandleOpenCLAccessAttr (QualType &CurType, const AttributeList &Attr, Sema &S) |
Handle OpenCL Access Qualifier Attribute. More... | |
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... | |
#define CALLING_CONV_ATTRS_CASELIST |
Definition at line 104 of file SemaType.cpp.
Referenced by getCCForDeclaratorChunk().
#define FUNCTION_TYPE_ATTRS_CASELIST |
Definition at line 120 of file SemaType.cpp.
Referenced by distributeTypeAttrsFromDeclarator(), and processTypeAttrs().
#define GENERIC_IMAGE_TYPE | ( | ImgType, | |
Id | |||
) |
#define IMAGE_TYPE | ( | ImgType, | |
Id, | |||
SingletonId, | |||
Access, | |||
Suffix | |||
) |
#define MS_TYPE_ATTRS_CASELIST |
Definition at line 126 of file SemaType.cpp.
Referenced by distributeTypeAttrsFromDeclarator(), and processTypeAttrs().
#define NULLABILITY_TYPE_ATTRS_CASELIST |
Definition at line 133 of file SemaType.cpp.
Referenced by distributeTypeAttrsFromDeclarator(), and processTypeAttrs().
#define OBJC_POINTER_TYPE_ATTRS_CASELIST |
Definition at line 99 of file SemaType.cpp.
Referenced by distributeTypeAttrsFromDeclarator(), and processTypeAttrs().
|
strong |
Describes the kind of a pointer a declarator describes.
Definition at line 3262 of file SemaType.cpp.
Kinds of declarator that cannot contain a qualified function type.
C++98 [dcl.fct]p4 / C++11 [dcl.fct]p6: a function type with a cv-qualifier or a ref-qualifier can only appear at the topmost level of a type.
Parens and member pointers are permitted. We don't diagnose array and function declarators, because they don't allow function types at all.
The values of this enum are used in diagnostics.
Definition at line 1918 of file SemaType.cpp.
|
strong |
A simple notion of pointer kinds, which matches up with the various pointer declarators.
Definition at line 3211 of file SemaType.cpp.
enum 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 281 of file SemaType.cpp.
enum TypeDiagSelector |
Enumerator | |
---|---|
TDS_Function | |
TDS_Pointer | |
TDS_ObjCObjOrBlock |
Definition at line 40 of file SemaType.cpp.
|
static |
Apply Objective-C protocol qualifiers to the given type.
Definition at line 1004 of file SemaType.cpp.
References clang::Type::castAs(), clang::Sema::Context, clang::ASTContext::getObjCObjectPointerType(), clang::ASTContext::getObjCObjectType(), clang::QualType::getTypePtr(), clang::Type::isObjCIdType(), clang::Type::isObjCObjectType(), and clang::ASTContext::ObjCBuiltinIdTy.
Referenced by clang::Sema::BuildObjCObjectType().
|
static |
Apply Objective-C type arguments to the given type.
Definition at line 796 of file SemaType.cpp.
References clang::ObjCTypeParamList::begin(), clang::ASTContext::canAssignObjCInterfaces(), clang::Sema::Context, clang::FixItHint::CreateRemoval(), clang::Sema::Diag(), clang::TypeLoc::findExplicitQualifierLoc(), clang::Type::getAs(), clang::Qualifiers::getAsString(), clang::NamedDecl::getDeclName(), clang::TypeLoc::getLocStart(), clang::ASTContext::getObjCObjectType(), clang::QualType::getQualifiers(), clang::TypeLoc::getSourceRange(), clang::TypeSourceInfo::getType(), clang::TypeSourceInfo::getTypeLoc(), clang::ObjCInterfaceDecl::getTypeParamList(), clang::QualType::getTypePtr(), clang::TypedefNameDecl::getUnderlyingType(), clang::QualType::getUnqualifiedType(), clang::Type::isBlockCompatibleObjCPointerType(), clang::Type::isBlockPointerType(), clang::Type::isDependentType(), clang::ObjCTypeParamList::size(), and clang::ast_matchers::type.
Referenced by clang::Sema::BuildObjCObjectType().
|
static |
Locks in the inheritance model for the given class and all of its bases.
Definition at line 6900 of file SemaType.cpp.
References clang::ASTConsumer::AssignInheritanceModel(), clang::CXXRecordDecl::calculateInheritanceModel(), clang::Sema::Consumer, clang::Sema::getASTContext(), clang::CXXRecordDecl::getMostRecentDecl(), clang::TagDecl::getSourceRange(), clang::Sema::ImplicitMSInheritanceAttrLoc, clang::SourceLocation::isValid(), clang::Sema::MSPointerToMemberRepresentationMethod, clang::LangOptions::PPTMK_BestCase, clang::LangOptions::PPTMK_FullGeneralityMultipleInheritance, clang::LangOptions::PPTMK_FullGeneralitySingleInheritance, and clang::LangOptions::PPTMK_FullGeneralityVirtualInheritance.
|
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 2359 of file SemaType.cpp.
References clang::CC_Swift, clang::Sema::Diag(), clang::FunctionProtoType::ExtProtoInfo::ExtInfo, clang::FunctionProtoType::ExtProtoInfo::ExtParameterInfos, clang::FunctionProtoType::ExtParameterInfo::getABI(), clang::FunctionType::ExtInfo::getCC(), clang::getParameterABISpelling(), clang::Ordinary, clang::SwiftContext, clang::SwiftErrorResult, and clang::SwiftIndirectResult.
Referenced by clang::Sema::BuildFunctionType(), and GetFullTypeForDeclarator().
|
static |
Check for consistent use of nullability.
Definition at line 3457 of file SemaType.cpp.
References clang::Sema::Context, clang::Sema::Diag(), clang::ASTContext::getDiagnostics(), getNullabilityCompletenessCheckFileID(), clang::DiagnosticsEngine::isIgnored(), clang::FileID::isInvalid(), clang::SourceLocation::isInvalid(), clang::Sema::NullabilityMap, clang::FileNullability::PointerKind, clang::FileNullability::PointerLoc, and clang::FileNullability::SawTypeNullability.
Referenced by GetFullTypeForDeclarator().
|
static |
Return true if this is omitted block return type.
Also check type attributes and type qualifiers when returning true.
Definition at line 756 of file SemaType.cpp.
References clang::DeclSpec::ClearTypeQualifiers(), clang::Sema::Diag(), diagnoseAndRemoveTypeQualifiers(), clang::DeclSpec::getAttributes(), clang::Declarator::getDeclSpec(), clang::ParsedAttributes::getListRef(), clang::AttributeList::getLoc(), clang::Declarator::getMutableDeclSpec(), clang::AttributeList::getName(), clang::AttributeList::getNext(), clang::DeclSpec::getTypeQualifiers(), clang::AttributeList::isInvalid(), isOmittedBlockReturnType(), clang::AttributeList::isTypeAttr(), and clang::AttributeList::setNext().
Referenced by ConvertDeclSpecToType().
|
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 1923 of file SemaType.cpp.
References clang::Sema::Diag(), clang::Type::getAs(), getFunctionQualifiersAsString(), clang::FunctionProtoType::getRefQualifier(), clang::FunctionProtoType::getTypeQuals(), clang::QualType::IgnoreParens(), and clang::RQ_None.
Referenced by clang::Sema::BuildBlockPointerType(), clang::Sema::BuildPointerType(), and clang::Sema::BuildReferenceType().
|
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 3282 of file SemaType.cpp.
References clang::DeclaratorChunk::Array, clang::DeclaratorChunk::BlockPointer, clang::Sema::CFError, clang::DeclaratorChunk::Function, clang::Type::getAs(), clang::Sema::getNSErrorIdent(), clang::Declarator::getNumTypeObjects(), clang::Type::getPointeeType(), clang::TagDecl::getTagKind(), clang::Declarator::getTypeObject(), clang::Type::isDependentType(), clang::DeclaratorChunk::Kind, clang::DeclaratorChunk::MemberPointer, clang::DeclaratorChunk::Paren, clang::DeclaratorChunk::Pipe, clang::DeclaratorChunk::Pointer, clang::ast_matchers::recordDecl, clang::DeclaratorChunk::Reference, and clang::TTK_Struct.
Referenced by GetFullTypeForDeclarator().
|
static |
Convert the specified declspec to the appropriate type object.
state | Specifies the declarator containing the declaration specifier to be converted, along with other associated processing state. |
Definition at line 1244 of file SemaType.cpp.
References clang::Auto, clang::sema::LambdaScopeInfo::AutoTemplateParameterDepth, clang::sema::LambdaScopeInfo::AutoTemplateParams, clang::ASTContext::BoolTy, clang::Sema::BuildAtomicType(), clang::Sema::BuildDecltypeType(), clang::Sema::BuildTypeofExprType(), clang::Sema::BuildUnaryTransformType(), clang::ASTContext::Char16Ty, clang::ASTContext::Char32Ty, clang::ASTContext::CharTy, checkOmittedBlockReturnType(), clang::Sema::Context, Context, clang::TemplateTypeParmDecl::Create(), clang::FixItHint::CreateInsertion(), clang::DecltypeAuto, clang::ASTContext::DependentTy, clang::Sema::Diag(), clang::Sema::DiagnoseUseOfDecl(), clang::ASTContext::DoubleTy, E, clang::UnaryTransformType::EnumUnderlyingType, clang::ASTContext::Float128Ty, clang::ASTContext::FloatTy, clang::Type::getAs(), clang::ASTContext::getAutoDeductType(), clang::ASTContext::getAutoType(), clang::Declarator::getContext(), clang::Sema::getCurLambda(), clang::Declarator::getDeclSpec(), clang::Sema::getElaboratedType(), clang::Declarator::getIdentifierLoc(), clang::TypeWithKeyword::getKeywordForTypeSpec(), clang::Sema::getLangOpts(), clang::DeclSpec::getLocStart(), clang::Declarator::getLocStart(), clang::Sema::getOpenCLOptions(), clang::ASTContext::getPrintingPolicy(), clang::DeclSpec::getRepAsDecl(), clang::DeclSpec::getRepAsExpr(), clang::DeclSpec::getRepAsType(), clang::ASTContext::getSignedWCharType(), clang::DeclSpec::getSourceRange(), clang::DeclSpec::getSpecifierName(), clang::ASTContext::getTargetInfo(), clang::ASTContext::getTranslationUnitDecl(), clang::ASTContext::getTypeDeclType(), clang::TypeDecl::getTypeForDecl(), clang::Sema::GetTypeFromParser(), clang::ASTContext::getTypeOfType(), clang::DeclSpec::getTypeSpecComplex(), clang::DeclSpec::getTypeSpecScope(), clang::DeclSpec::getTypeSpecSign(), clang::DeclSpec::getTypeSpecSignLoc(), clang::DeclSpec::getTypeSpecType(), clang::DeclSpec::getTypeSpecTypeLoc(), clang::DeclSpec::getTypeSpecTypeNameLoc(), clang::DeclSpec::getTypeSpecWidth(), clang::DeclSpec::getTypeSpecWidthLoc(), clang::ASTContext::getUnsignedWCharType(), clang::GNUAutoType, clang::ASTContext::HalfTy, clang::Declarator::hasEllipsis(), clang::TargetInfo::hasFloat128Type(), clang::TargetInfo::hasInt128Type(), clang::DeclSpec::hasTypeSpecifier(), clang::if(), clang::ASTContext::Int128Ty, clang::ASTContext::IntTy, clang::DeclSpec::isEmpty(), clang::SourceLocation::isInvalid(), clang::DeclSpec::isTypeSpecPipe(), clang::Declarator::LambdaExprContext, clang::Declarator::LambdaExprParameterContext, clang::ASTContext::LongDoubleTy, clang::ASTContext::LongLongTy, clang::ASTContext::LongTy, clang::Result, clang::Declarator::setInvalidType(), clang::ASTContext::ShortTy, clang::ASTContext::SignedCharTy, clang::DeclSpec::TSS_signed, clang::DeclSpec::TSS_unsigned, clang::DeclSpec::TSS_unspecified, clang::DeclSpec::TST_atomic, clang::DeclSpec::TST_auto, clang::DeclSpec::TST_auto_type, clang::DeclSpec::TST_bool, clang::DeclSpec::TST_char, clang::DeclSpec::TST_char16, clang::DeclSpec::TST_char32, clang::DeclSpec::TST_class, clang::DeclSpec::TST_decimal128, clang::DeclSpec::TST_decimal32, clang::DeclSpec::TST_decimal64, clang::DeclSpec::TST_decltype, clang::DeclSpec::TST_decltype_auto, clang::DeclSpec::TST_double, clang::DeclSpec::TST_enum, clang::DeclSpec::TST_error, clang::DeclSpec::TST_float, clang::DeclSpec::TST_float128, clang::DeclSpec::TST_half, clang::DeclSpec::TST_int, clang::DeclSpec::TST_int128, clang::DeclSpec::TST_interface, clang::DeclSpec::TST_struct, clang::DeclSpec::TST_typename, clang::DeclSpec::TST_typeofExpr, clang::DeclSpec::TST_typeofType, clang::DeclSpec::TST_underlyingType, clang::DeclSpec::TST_union, clang::DeclSpec::TST_unknown_anytype, clang::DeclSpec::TST_unspecified, clang::DeclSpec::TST_void, clang::DeclSpec::TST_wchar, clang::DeclSpec::TSW_long, clang::DeclSpec::TSW_longlong, clang::DeclSpec::TSW_short, clang::DeclSpec::TSW_unspecified, clang::ASTContext::UnknownAnyTy, clang::ASTContext::UnsignedCharTy, clang::ASTContext::UnsignedInt128Ty, clang::ASTContext::UnsignedIntTy, clang::ASTContext::UnsignedLongLongTy, clang::ASTContext::UnsignedLongTy, clang::ASTContext::UnsignedShortTy, clang::ASTContext::VoidTy, and clang::ASTContext::WCharTy.
Referenced by GetDeclSpecTypeForDeclarator().
|
static |
Definition at line 728 of file SemaType.cpp.
References clang::Sema::ActiveTemplateInstantiations, clang::FixItHint::CreateRemoval(), clang::Sema::Diag(), clang::DeclSpec::getAtomicSpecLoc(), clang::DeclSpec::getConstSpecLoc(), clang::DeclSpec::getRestrictSpecLoc(), clang::DeclSpec::getSpecifierName(), clang::DeclSpec::getVolatileSpecLoc(), clang::DeclSpec::TQ_atomic, clang::DeclSpec::TQ_const, clang::DeclSpec::TQ_restrict, and clang::DeclSpec::TQ_volatile.
Referenced by checkOmittedBlockReturnType().
|
static |
diagnoseBadTypeAttribute - Diagnoses a type attribute which doesn't apply to the given type.
Definition at line 65 of file SemaType.cpp.
References clang::Sema::Diag(), clang::Sema::findMacroSpelling(), clang::AttributeList::getArgAsIdent(), clang::AttributeList::getKind(), clang::AttributeList::getLoc(), clang::IdentifierInfo::getName(), clang::AttributeList::getName(), clang::IdentifierLoc::Ident, clang::AttributeList::isArgIdent(), clang::SourceLocation::isMacroID(), clang::IdentifierInfo::isStr(), TDS_Function, TDS_ObjCObjOrBlock, TDS_Pointer, and clang::ast_matchers::type.
Referenced by distributeFunctionTypeAttr(), and distributeObjCPointerTypeAttr().
|
static |
Definition at line 2705 of file SemaType.cpp.
References clang::DeclaratorChunk::Array, clang::DeclaratorChunk::PointerTypeInfo::AtomicQualLoc, clang::DeclaratorChunk::BlockPointer, clang::DeclaratorChunk::PointerTypeInfo::ConstQualLoc, clang::Sema::diagnoseIgnoredQualifiers(), End, clang::DeclaratorChunk::Fun, clang::DeclaratorChunk::Function, clang::DeclSpec::getAtomicSpecLoc(), clang::DeclSpec::getConstSpecLoc(), clang::QualType::getCVRQualifiers(), clang::Declarator::getDeclSpec(), clang::SourceLocation::getFromRawEncoding(), clang::Declarator::getIdentifierLoc(), clang::UnqualifiedId::getKind(), clang::QualType::getLocalCVRQualifiers(), clang::Declarator::getName(), clang::Declarator::getNumTypeObjects(), clang::DeclSpec::getRestrictSpecLoc(), clang::Declarator::getTypeObject(), clang::DeclSpec::getTypeQualifiers(), clang::DeclSpec::getUnalignedSpecLoc(), clang::DeclSpec::getVolatileSpecLoc(), clang::DeclaratorChunk::FunctionTypeInfo::hasTrailingReturnType(), clang::UnqualifiedId::IK_ConversionFunctionId, clang::Type::isAtomicType(), clang::DeclaratorChunk::Kind, clang::DeclaratorChunk::MemberPointer, clang::DeclaratorChunk::Paren, clang::DeclaratorChunk::Pipe, clang::DeclaratorChunk::Pointer, clang::DeclaratorChunk::Ptr, clang::DeclaratorChunk::Reference, clang::DeclaratorChunk::PointerTypeInfo::RestrictQualLoc, clang::DeclSpec::TQ_atomic, clang::DeclaratorChunk::PointerTypeInfo::TypeQuals, clang::DeclaratorChunk::PointerTypeInfo::UnalignedQualLoc, and clang::DeclaratorChunk::PointerTypeInfo::VolatileQualLoc.
Referenced by GetFullTypeForDeclarator().
|
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 513 of file SemaType.cpp.
References clang::DeclaratorChunk::Array, clang::DeclaratorChunk::BlockPointer, diagnoseBadTypeAttribute(), clang::DeclaratorChunk::Function, clang::DeclaratorChunk::getAttrListRef(), clang::Declarator::getTypeObject(), clang::DeclaratorChunk::Kind, clang::DeclaratorChunk::MemberPointer, moveAttrFromListToList(), clang::DeclaratorChunk::Paren, clang::DeclaratorChunk::Pipe, clang::DeclaratorChunk::Pointer, clang::DeclaratorChunk::Reference, and clang::ast_matchers::type.
Referenced by processTypeAttrs().
|
static |
A function type attribute was written on the declarator.
Try to apply it somewhere.
Definition at line 595 of file SemaType.cpp.
References distributeFunctionTypeAttrToInnermost(), clang::Declarator::getAttrListRef(), and spliceAttrOutOfList().
Referenced by distributeTypeAttrsFromDeclarator().
|
static |
A function type attribute was written in the decl spec.
Try to apply it somewhere.
Definition at line 567 of file SemaType.cpp.
References distributeFunctionTypeAttrToInnermost(), clang::AttributeList::isCXX11Attribute(), and moveAttrFromListToList().
Referenced by processTypeAttrs().
|
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 546 of file SemaType.cpp.
References clang::DeclaratorChunk::Function, clang::DeclaratorChunk::getAttrListRef(), clang::Declarator::getNumTypeObjects(), clang::Declarator::getTypeObject(), handleFunctionTypeAttr(), clang::DeclaratorChunk::Kind, and moveAttrFromListToList().
Referenced by distributeFunctionTypeAttrFromDeclarator(), and distributeFunctionTypeAttrFromDeclSpec().
|
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.
Attempt to move the attribute to the specified chunk.
Definition at line 5978 of file SemaType.cpp.
References clang::DeclaratorChunk::Array, clang::DeclaratorChunk::BlockPointer, clang::FixItHint::CreateInsertion(), clang::FixItHint::CreateRemoval(), clang::DeclaratorChunk::Function, clang::DeclaratorChunk::getAttrListRef(), clang::AttributeList::getKind(), clang::AttributeList::getLoc(), clang::IdentifierInfo::getName(), clang::AttributeList::getName(), clang::Declarator::getTypeObject(), hasNullabilityAttr(), clang::AttributeList::isContextSensitiveKeywordAttribute(), clang::DeclaratorChunk::Kind, clang::DeclaratorChunk::Loc, mapNullabilityAttrKind(), maybeMovePastReturnType(), clang::DeclaratorChunk::MemberPointer, moveAttrFromListToList(), clang::DeclaratorChunk::Paren, clang::DeclaratorChunk::Pipe, clang::DeclaratorChunk::Pointer, and clang::DeclaratorChunk::Reference.
Referenced by processTypeAttrs().
|
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 393 of file SemaType.cpp.
References clang::DeclaratorChunk::Array, clang::DeclaratorChunk::BlockPointer, diagnoseBadTypeAttribute(), clang::DeclaratorChunk::Function, clang::DeclaratorChunk::getAttrListRef(), clang::AttributeList::getKind(), clang::Declarator::getTypeObject(), clang::DeclaratorChunk::Kind, maybeMovePastReturnType(), clang::DeclaratorChunk::MemberPointer, moveAttrFromListToList(), clang::DeclaratorChunk::Paren, clang::DeclaratorChunk::Pipe, clang::DeclaratorChunk::Pointer, clang::DeclaratorChunk::Reference, and clang::ast_matchers::type.
Referenced by processTypeAttrs().
|
static |
Distribute an objc_gc type attribute that was written on the declarator.
Definition at line 451 of file SemaType.cpp.
References clang::DeclaratorChunk::Array, clang::DeclaratorChunk::BlockPointer, clang::DeclaratorChunk::Function, clang::DeclSpec::getAttributes(), clang::DeclaratorChunk::getAttrListRef(), clang::Declarator::getAttrListRef(), clang::ParsedAttributes::getListRef(), clang::Declarator::getMutableDeclSpec(), clang::Declarator::getNumTypeObjects(), clang::Declarator::getTypeObject(), handleObjCPointerTypeAttr(), clang::DeclaratorChunk::Kind, clang::DeclaratorChunk::MemberPointer, moveAttrFromListToList(), clang::DeclaratorChunk::Paren, clang::DeclaratorChunk::Pipe, clang::DeclaratorChunk::Pointer, clang::DeclaratorChunk::Reference, and spliceAttrOutOfList().
Referenced by distributeTypeAttrsFromDeclarator().
|
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 621 of file SemaType.cpp.
References distributeFunctionTypeAttrFromDeclarator(), distributeObjCPointerTypeAttrFromDeclarator(), FUNCTION_TYPE_ATTRS_CASELIST, clang::AttributeList::getNext(), MS_TYPE_ATTRS_CASELIST, NULLABILITY_TYPE_ATTRS_CASELIST, and OBJC_POINTER_TYPE_ATTRS_CASELIST.
Referenced by GetDeclSpecTypeForDeclarator().
|
static |
Definition at line 5113 of file SemaType.cpp.
References clang::DeclaratorChunk::Array, clang::DeclaratorChunk::PointerTypeInfo::AtomicQualLoc, clang::DeclaratorChunk::BlockPointer, clang::DeclaratorChunk::Function, clang::SourceLocation::getFromRawEncoding(), clang::DeclaratorChunk::Kind, clang::DeclaratorChunk::MemberPointer, clang::DeclaratorChunk::Paren, clang::DeclaratorChunk::Pipe, clang::DeclaratorChunk::Pointer, clang::DeclaratorChunk::Ptr, clang::DeclaratorChunk::Reference, clang::AtomicTypeLoc::setKWLoc(), and clang::AtomicTypeLoc::setParensRange().
Referenced by clang::Sema::GetTypeSourceInfoForDeclarator().
|
static |
Definition at line 4780 of file SemaType.cpp.
References clang::AttributeList::getArgAsExpr(), clang::AttributeList::getArgAsIdent(), clang::AttributedTypeLoc::getAttrKind(), getAttrListKind(), clang::Expr::getExprLoc(), clang::AttributeList::getKind(), clang::AttributeList::getLoc(), clang::AttributeList::getNext(), clang::AttributedTypeLoc::hasAttrEnumOperand(), clang::AttributedTypeLoc::hasAttrExprOperand(), clang::AttributedTypeLoc::hasAttrOperand(), clang::AttributeList::isArgExpr(), clang::AttributeList::isArgIdent(), clang::IdentifierLoc::Loc, clang::AttributedTypeLoc::setAttrEnumOperandLoc(), and clang::AttributedTypeLoc::setAttrOperandParensRange().
Referenced by clang::Sema::GetTypeSourceInfoForDeclarator().
|
static |
Map an AttributedType::Kind to an AttributeList::Kind.
Definition at line 4714 of file SemaType.cpp.
References clang::AttributedType::attr_address_space, clang::AttributedType::attr_cdecl, clang::AttributedType::attr_fastcall, clang::AttributedType::attr_inteloclbicc, clang::AttributedType::attr_ms_abi, clang::AttributedType::attr_neon_polyvector_type, clang::AttributedType::attr_neon_vector_type, clang::AttributedType::attr_nonnull, clang::AttributedType::attr_noreturn, clang::AttributedType::attr_null_unspecified, clang::AttributedType::attr_nullable, clang::AttributedType::attr_objc_gc, clang::AttributedType::attr_objc_inert_unsafe_unretained, clang::AttributedType::attr_objc_kindof, clang::AttributedType::attr_objc_ownership, clang::AttributedType::attr_pascal, clang::AttributedType::attr_pcs, clang::AttributedType::attr_pcs_vfp, clang::AttributedType::attr_preserve_all, clang::AttributedType::attr_preserve_most, clang::AttributedType::attr_ptr32, clang::AttributedType::attr_ptr64, clang::AttributedType::attr_regparm, clang::AttributedType::attr_sptr, clang::AttributedType::attr_stdcall, clang::AttributedType::attr_swiftcall, clang::AttributedType::attr_sysv_abi, clang::AttributedType::attr_thiscall, clang::AttributedType::attr_uptr, clang::AttributedType::attr_vector_size, and clang::AttributedType::attr_vectorcall.
Referenced by fillAttributedTypeLoc(), and handleMSPointerTypeQualifierAttr().
|
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 3123 of file SemaType.cpp.
References clang::DeclaratorChunk::TypeInfoCommon::AttrList, CALLING_CONV_ATTRS_CASELIST, clang::CC_OpenCLKernel, clang::Sema::CheckCallingConvAttr(), clang::Sema::Context, clang::DeclaratorChunk::Function, clang::DeclSpec::getAttributes(), clang::Declarator::getContext(), clang::Declarator::getDeclSpec(), clang::ASTContext::getDefaultCallingConvention(), clang::Attr::getKind(), clang::Sema::getLangOpts(), clang::ParsedAttributes::getList(), clang::DeclSpec::getStorageClassSpec(), clang::ASTContext::getTargetInfo(), clang::TargetInfo::getTriple(), clang::Declarator::getTypeObject(), I, clang::Declarator::isFirstDeclarationOfMember(), clang::Declarator::isFunctionDeclarator(), clang::Declarator::isStaticMember(), clang::DeclaratorChunk::FunctionTypeInfo::isVariadic, clang::DeclaratorChunk::Kind, clang::Declarator::LambdaExprContext, clang::DeclaratorChunk::MemberPointer, clang::DeclaratorChunk::Paren, clang::DeclSpec::SCS_typedef, and clang::supportsVariadicCall().
Referenced by GetFullTypeForDeclarator().
|
static |
Definition at line 6060 of file SemaType.cpp.
References clang::AttributedType::attr_cdecl, clang::AttributedType::attr_fastcall, clang::AttributedType::attr_inteloclbicc, clang::AttributedType::attr_ms_abi, clang::AttributedType::attr_pascal, clang::AttributedType::attr_pcs, clang::AttributedType::attr_pcs_vfp, clang::AttributedType::attr_preserve_all, clang::AttributedType::attr_preserve_most, clang::AttributedType::attr_stdcall, clang::AttributedType::attr_swiftcall, clang::AttributedType::attr_sysv_abi, clang::AttributedType::attr_thiscall, clang::AttributedType::attr_vectorcall, clang::AttributeList::getArgAsExpr(), clang::AttributeList::getArgAsIdent(), clang::AttributeList::getKind(), clang::IdentifierInfo::getName(), clang::IdentifierLoc::Ident, clang::AttributeList::isArgExpr(), and clang::AttributeList::isInvalid().
Referenced by handleFunctionTypeAttr().
|
static |
Definition at line 2775 of file SemaType.cpp.
References clang::Declarator::AliasDeclContext, clang::Declarator::AliasTemplateContext, clang::Declarator::BlockContext, clang::Declarator::BlockLiteralContext, clang::Declarator::ConditionContext, clang::DeclSpec::containsPlaceholderType(), clang::Sema::Context, clang::UnqualifiedId::ConversionFunctionId, clang::Declarator::ConversionIdContext, ConvertDeclSpecToType(), clang::Sema::CurContext, clang::Declarator::CXXCatchContext, clang::Declarator::CXXNewContext, clang::Sema::Diag(), distributeTypeAttrsFromDeclarator(), clang::Declarator::FileContext, clang::Declarator::ForContext, clang::DeclaratorChunk::Fun, clang::DeclaratorChunk::Function, clang::DeclSpec::getAttributes(), clang::Declarator::getAttributes(), clang::SourceRange::getBegin(), clang::Declarator::getContext(), clang::Declarator::getDeclSpec(), clang::UnqualifiedId::getKind(), clang::Sema::getLangOpts(), clang::ParsedAttributes::getList(), clang::Declarator::getName(), clang::Declarator::getNumTypeObjects(), clang::DeclSpec::getRepAsDecl(), clang::UnqualifiedId::getSourceRange(), clang::DeclSpec::getStorageClassSpec(), clang::ASTContext::getTypeDeclType(), clang::Sema::GetTypeFromParser(), clang::Declarator::getTypeObject(), clang::DeclSpec::getTypeSpecType(), clang::DeclSpec::getTypeSpecTypeLoc(), clang::DeclaratorChunk::FunctionTypeInfo::hasTrailingReturnType(), clang::UnqualifiedId::IK_ConstructorName, clang::UnqualifiedId::IK_ConstructorTemplateId, clang::UnqualifiedId::IK_ConversionFunctionId, clang::UnqualifiedId::IK_DestructorName, clang::UnqualifiedId::IK_Identifier, clang::UnqualifiedId::IK_ImplicitSelfParam, clang::UnqualifiedId::IK_LiteralOperatorId, clang::UnqualifiedId::IK_OperatorFunctionId, clang::UnqualifiedId::IK_TemplateId, clang::Declarator::InitStmtContext, clang::ASTContext::IntTy, clang::TagDecl::isCompleteDefinition(), clang::Declarator::isFunctionDeclarator(), clang::Declarator::isInvalidType(), clang::QualType::isNull(), clang::DeclSpec::isTypeSpecOwned(), clang::DeclaratorChunk::Kind, clang::Declarator::KNRTypeListContext, clang::Declarator::LambdaExprContext, clang::Declarator::LambdaExprParameterContext, clang::Declarator::MemberContext, clang::Declarator::ObjCCatchContext, clang::Declarator::ObjCParameterContext, clang::Declarator::ObjCResultContext, processTypeAttrs(), clang::Declarator::PrototypeContext, clang::DeclSpec::SCS_static, clang::DeclSpec::SCS_typedef, clang::TagDecl::setEmbeddedInDeclarator(), clang::Declarator::setInvalidType(), TAL_DeclSpec, clang::Declarator::TemplateParamContext, clang::Declarator::TemplateTypeArgContext, clang::Declarator::TrailingReturnContext, clang::DeclSpec::TST_auto, clang::DeclSpec::TST_auto_type, clang::DeclSpec::TST_decltype_auto, clang::TTK_Class, clang::TTK_Enum, clang::TTK_Interface, clang::TTK_Struct, clang::TTK_Union, clang::Declarator::TypeNameContext, and clang::ASTContext::VoidTy.
Referenced by clang::Sema::GetTypeForDeclarator(), and clang::Sema::GetTypeForDeclaratorCast().
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 7246 of file SemaType.cpp.
References clang::Sema::Context, clang::ASTContext::DependentTy, clang::Sema::getCapturedDeclRefType(), clang::Sema::getCurLambda(), clang::ASTContext::getLValueReferenceType(), clang::ASTContext::getRValueReferenceType(), clang::Expr::getType(), clang::Expr::getValueKind(), clang::if(), clang::Expr::IgnoreParens(), clang::QualType::isNull(), clang::Expr::isTypeDependent(), clang::VK_LValue, clang::VK_RValue, and clang::VK_XValue.
Referenced by clang::Sema::BuildDecltypeType().
|
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 3487 of file SemaType.cpp.
References clang::Sema::ActiveTemplateInstantiations, clang::QualType::addConst(), clang::Declarator::AliasDeclContext, clang::Declarator::AliasTemplateContext, clang::DeclaratorChunk::Arr, clang::DeclaratorChunk::Array, clang::AttributeList::AS_ContextSensitiveKeyword, clang::AttributeList::AS_Keyword, clang::Auto, clang::Declarator::BlockContext, clang::Declarator::BlockLiteralContext, clang::DeclaratorChunk::BlockPointer, clang::Sema::BuildArrayType(), clang::Sema::BuildBlockPointerType(), clang::Sema::BuildMemberPointerType(), clang::Sema::BuildParenType(), clang::Sema::BuildPipeType(), clang::Sema::BuildPointerType(), clang::Sema::BuildQualifiedType(), clang::Sema::BuildReferenceType(), clang::Type::canHaveNullability(), clang::Type::castAs(), clang::Sema::CheckDistantExceptionSpec(), clang::Sema::checkExceptionSpecification(), checkExtParameterInfos(), checkNullabilityConsistency(), classifyPointerDeclarator(), clang::DeclaratorChunk::Cls, clang::Sema::computeDeclContext(), clang::Declarator::ConditionContext, clang::Qualifiers::Const, clang::DeclSpec::containsPlaceholderType(), clang::Type::containsUnexpandedParameterPack(), clang::Sema::Context, Context, clang::Declarator::ConversionIdContext, clang::FixItHint::CreateInsertion(), clang::FixItHint::CreateRemoval(), clang::Declarator::CXXCatchContext, clang::Declarator::CXXNewContext, clang::Sema::Diag(), diagnoseRedundantReturnTypeQualifiers(), clang::ASTContext::DoubleTy, clang::ObjCDeclSpec::DQ_CSNullability, E, clang::DeclaratorChunk::EndLoc, clang::EST_ComputedNoexcept, clang::EST_Dynamic, clang::ETK_None, clang::DeclaratorChunk::FunctionTypeInfo::Exceptions, clang::FunctionProtoType::ExtProtoInfo::ExceptionSpec, clang::FunctionProtoType::ExtProtoInfo::ExtInfo, clang::FunctionProtoType::ExtProtoInfo::ExtParameterInfos, clang::FDK_Definition, clang::Declarator::FileContext, clang::Declarator::ForContext, clang::DeclaratorChunk::Fun, clang::DeclaratorChunk::Function, clang::Type::getAs(), clang::NestedNameSpecifier::getAsIdentifier(), clang::NestedNameSpecifier::getAsType(), clang::ASTContext::getAttributedType(), clang::DeclSpec::getAttributes(), clang::Declarator::getAttributes(), clang::DeclaratorChunk::getAttrListRef(), clang::DeclaratorChunk::getAttrs(), clang::CXXScopeSpec::getBeginLoc(), getCCForDeclaratorChunk(), clang::DeclaratorChunk::FunctionTypeInfo::getConstQualifierLoc(), clang::Type::getContainedAutoType(), clang::Declarator::getContext(), clang::Declarator::getCXXScopeSpec(), clang::Declarator::getDeclSpec(), clang::ASTContext::getDependentNameType(), clang::ASTContext::getElaboratedType(), clang::DeclaratorChunk::FunctionTypeInfo::getEllipsisLoc(), clang::Declarator::getEllipsisLoc(), clang::DeclaratorChunk::FunctionTypeInfo::getExceptionSpecLocBeg(), clang::DeclaratorChunk::FunctionTypeInfo::getExceptionSpecType(), clang::FunctionProtoType::getExtProtoInfo(), clang::Declarator::getFunctionDefinitionKind(), clang::ASTContext::getFunctionNoProtoType(), getFunctionQualifiersAsString(), clang::ASTContext::getFunctionType(), clang::Declarator::getIdentifier(), clang::Declarator::getIdentifierLoc(), clang::SourceManager::getImmediateExpansionRange(), clang::Declarator::getInnermostNonParenChunk(), clang::Attr::getKind(), clang::NestedNameSpecifier::getKind(), clang::UnqualifiedId::getKind(), clang::Sema::getLangOpts(), clang::ParsedAttributes::getList(), clang::ParsedAttributes::getListRef(), clang::TypeLoc::getLocEnd(), clang::DeclSpec::getLocEnd(), clang::Sema::getLocForEndOfToken(), clang::TypeLoc::getLocStart(), clang::Declarator::getLocStart(), clang::Declarator::getMutableDeclSpec(), clang::IdentifierInfo::getName(), clang::Declarator::getName(), clang::AttributeList::getNext(), clang::Type::getNullability(), clang::AttributedType::getNullabilityAttrKind(), getNullabilityCompletenessCheckFileID(), clang::Sema::getNullabilityKeyword(), clang::Declarator::getNumTypeObjects(), clang::ASTContext::getObjCObjectPointerType(), clang::Sema::getOpenCLOptions(), clang::ASTContext::getPackExpansionType(), clang::FunctionProtoType::getParamTypes(), clang::Preprocessor::getPragmaAssumeNonNullLoc(), clang::NestedNameSpecifier::getPrefix(), getPrintableNameForEntity(), clang::ASTContext::getPromotedIntegerType(), clang::CXXScopeSpec::getRange(), clang::DeclaratorChunk::FunctionTypeInfo::getRefQualifierLoc(), clang::DeclSpec::getRepAsDecl(), clang::DeclaratorChunk::FunctionTypeInfo::getRestrictQualifierLoc(), clang::FunctionType::getReturnType(), clang::CXXScopeSpec::getScopeRep(), clang::Sema::getSourceManager(), clang::DeclSpec::getSourceRange(), clang::Declarator::getSourceRange(), clang::DeclSpec::getStorageClassSpec(), clang::DeclaratorChunk::FunctionTypeInfo::getTrailingReturnType(), clang::ASTContext::getTrivialTypeSourceInfo(), clang::ValueDecl::getType(), clang::ASTContext::getTypeDeclType(), clang::Sema::GetTypeFromParser(), clang::TypeSourceInfo::getTypeLoc(), clang::Declarator::getTypeObject(), clang::TypeLocBuilder::getTypeSourceInfo(), clang::Sema::GetTypeSourceInfoForDeclarator(), clang::DeclSpec::getTypeSpecType(), clang::DeclSpec::getTypeSpecTypeLoc(), clang::DeclaratorChunk::FunctionTypeInfo::getVolatileQualifierLoc(), clang::NestedNameSpecifier::Global, clang::Declarator::hasEllipsis(), hasNullabilityAttr(), clang::DeclaratorChunk::FunctionTypeInfo::hasPrototype, clang::DeclaratorChunk::FunctionTypeInfo::hasRefQualifier(), clang::DeclaratorChunk::ReferenceTypeInfo::HasRestrict, clang::DeclaratorChunk::ArrayTypeInfo::hasStatic, clang::DeclSpec::hasTagDefinition(), clang::FunctionProtoType::ExtProtoInfo::HasTrailingReturn, clang::DeclaratorChunk::FunctionTypeInfo::hasTrailingReturnType(), I, clang::DeclaratorChunk::ParamInfo::Ident, clang::NestedNameSpecifier::Identifier, clang::DeclaratorChunk::ParamInfo::IdentLoc, clang::UnqualifiedId::IK_ConversionFunctionId, clang::Declarator::InitStmtContext, clang::ASTContext::IntTy, clang::DeclaratorChunk::FunctionTypeInfo::isAmbiguous, clang::Type::isBlockPointerType(), clang::DeclSpec::isConstexprSpecified(), clang::AutoType::isDecltypeAuto(), clang::Sema::isDependentScopeSpecifier(), clang::DeclSpec::isFriendSpecified(), clang::Declarator::isFunctionDeclarationContext(), clang::Declarator::isFunctionDeclarator(), isFunctionOrMethod(), clang::Type::isFunctionProtoType(), clang::Type::isFunctionType(), clang::SourceLocation::isInvalid(), clang::CXXScopeSpec::isInvalid(), clang::Declarator::isInvalidType(), clang::SourceLocation::isMacroID(), clang::Type::isMemberPointerType(), clang::QualType::isNull(), clang::Type::isObjectType(), clang::Declarator::isPrototypeContext(), clang::DeclContext::isRecord(), clang::CXXScopeSpec::isSet(), clang::DeclaratorChunk::ArrayTypeInfo::isStar, clang::FileID::isValid(), clang::SourceLocation::isValid(), clang::DeclaratorChunk::FunctionTypeInfo::isVariadic, clang::DeclaratorChunk::Kind, clang::Declarator::KNRTypeListContext, clang::Declarator::LambdaExprContext, clang::Declarator::LambdaExprParameterContext, clang::DeclaratorChunk::Loc, clang::DeclaratorChunk::ReferenceTypeInfo::LValueRef, clang::DeclaratorChunk::Mem, clang::Declarator::MemberContext, clang::DeclaratorChunk::MemberPointer, clang::Name, clang::NestedNameSpecifier::Namespace, clang::NestedNameSpecifier::NamespaceAlias, clang::DeclaratorChunk::FunctionTypeInfo::NoexceptExpr, clang::None, clang::NonNull, clang::ArrayType::Normal, clang::Sema::NullabilityMap, clang::Nullable, clang::DeclaratorChunk::ArrayTypeInfo::NumElts, clang::DeclaratorChunk::FunctionTypeInfo::NumExceptions, clang::DeclaratorChunk::FunctionTypeInfo::NumParams, clang::Declarator::ObjCCatchContext, clang::Declarator::ObjCParameterContext, clang::Declarator::ObjCResultContext, clang::DeclaratorChunk::ParamInfo::Param, clang::DeclaratorChunk::FunctionTypeInfo::Params, clang::DeclaratorChunk::Paren, clang::DeclaratorChunk::Pipe, clang::DeclaratorChunk::Pointer, clang::FileNullability::PointerKind, clang::FileNullability::PointerLoc, clang::Sema::PP, processTypeAttrs(), clang::Declarator::PrototypeContext, clang::DeclaratorChunk::Ptr, clang::TypeLocBuilder::push(), clang::TypeLocBuilder::pushFullCopy(), clang::DeclaratorChunk::TypeAndRange::Range, clang::DeclaratorChunk::Ref, clang::DeclaratorChunk::Reference, clang::FunctionProtoType::ExtProtoInfo::RefQualifier, clang::DeclaratorChunk::FunctionTypeInfo::RefQualifierIsLValueRef, clang::Qualifiers::Restrict, clang::RQ_LValue, clang::RQ_None, clang::RQ_RValue, clang::FileNullability::SawTypeNullability, clang::DeclaratorChunk::MemberPointerTypeInfo::Scope(), clang::DeclSpec::SCS_static, clang::DeclSpec::SCS_typedef, clang::Declarator::setEllipsisLoc(), clang::Declarator::setInvalidType(), clang::ParmVarDecl::setKNRPromoted(), clang::ObjCObjectPointerTypeLoc::setStarLoc(), clang::ValueDecl::setType(), clang::Sema::SourceMgr, spliceAttrIntoList(), clang::ArrayType::Star, clang::ArrayType::Static, clang::NestedNameSpecifier::Super, TAL_DeclChunk, TAL_DeclName, clang::Declarator::TemplateParamContext, clang::Declarator::TemplateTypeArgContext, clang::DeclSpec::TQ_const, clang::Declarator::TrailingReturnContext, clang::DeclSpec::TST_auto, clang::DeclaratorChunk::TypeAndRange::Ty, clang::Declarator::TypeNameContext, clang::DeclaratorChunk::PointerTypeInfo::TypeQuals, clang::DeclaratorChunk::ArrayTypeInfo::TypeQuals, clang::DeclaratorChunk::FunctionTypeInfo::TypeQuals, clang::DeclaratorChunk::BlockPointerTypeInfo::TypeQuals, clang::DeclaratorChunk::MemberPointerTypeInfo::TypeQuals, clang::FunctionProtoType::ExtProtoInfo::TypeQuals, clang::NestedNameSpecifier::TypeSpec, clang::NestedNameSpecifier::TypeSpecWithTemplate, clang::FunctionProtoType::ExtProtoInfo::Variadic, clang::Qualifiers::Volatile, and warnAboutAmbiguousFunction().
Referenced by clang::Sema::GetTypeForDeclarator(), and clang::Sema::GetTypeForDeclaratorCast().
|
static |
Definition at line 1883 of file SemaType.cpp.
References clang::Qualifiers::fromCVRMask(), clang::FunctionProtoType::getRefQualifier(), clang::FunctionProtoType::getTypeQuals(), clang::RQ_LValue, clang::RQ_None, and clang::RQ_RValue.
Referenced by checkQualifiedFunction(), and GetFullTypeForDeclarator().
|
static |
Definition at line 1223 of file SemaType.cpp.
References clang::AttributeList::getKind(), clang::IdentifierInfo::getName(), clang::AttributeList::getName(), clang::AttributeList::getNext(), and Next.
|
static |
Get diagnostic select index for tag kind for literal type diagnostic message.
WARNING: Indexes apply to particular diagnostics only!
Definition at line 7103 of file SemaType.cpp.
References clang::TTK_Class, clang::TTK_Interface, and clang::TTK_Struct.
Referenced by clang::Sema::RequireLiteralType().
|
static |
Definition at line 3419 of file SemaType.cpp.
References clang::SrcMgr::C_User, clang::Sema::CurContext, clang::Sema::Diags, clang::SourceManager::getExpansionLoc(), clang::SrcMgr::SLocEntry::getFile(), clang::SrcMgr::FileInfo::getFileCharacteristic(), clang::SourceManager::getFileID(), clang::SrcMgr::FileInfo::getIncludeLoc(), clang::DeclContext::getParent(), clang::SourceManager::getSLocEntry(), clang::DiagnosticsEngine::getSuppressSystemWarnings(), clang::SrcMgr::SLocEntry::isFile(), clang::FileID::isInvalid(), clang::SourceLocation::isInvalid(), and clang::Sema::SourceMgr.
Referenced by checkNullabilityConsistency(), clang::Sema::checkNullabilityTypeSpecifier(), and GetFullTypeForDeclarator().
|
static |
Definition at line 1739 of file SemaType.cpp.
References clang::DeclarationName::getAsString().
Referenced by clang::Sema::BuildArrayType(), clang::Sema::BuildMemberPointerType(), clang::Sema::BuildPointerType(), and GetFullTypeForDeclarator().
|
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 5254 of file SemaType.cpp.
References clang::AANT_ArgumentIntegerConstant, clang::Sema::Context, clang::Sema::Diag(), clang::QualType::getAddressSpace(), clang::ASTContext::getAddrSpaceQualType(), clang::AttributeList::getArgAsExpr(), clang::AttributeList::getKind(), clang::AttributeList::getLoc(), clang::AttributeList::getName(), clang::AttributeList::getNumArgs(), clang::Type::isFunctionType(), clang::Expr::isIntegerConstantExpr(), clang::Expr::isTypeDependent(), clang::Expr::isValueDependent(), max(), clang::Qualifiers::MaxAddressSpace, clang::LangAS::opencl_constant, clang::LangAS::opencl_generic, clang::LangAS::opencl_global, clang::LangAS::opencl_local, and clang::AttributeList::setInvalid().
Referenced by processTypeAttrs().
|
static |
Process the OpenCL-like ext_vector_type attribute when it occurs on a type.
Definition at line 6362 of file SemaType.cpp.
References clang::Sema::ActOnIdExpression(), clang::Sema::BuildExtVectorType(), clang::Sema::Diag(), clang::ActionResult< PtrTy, CompressInvalid >::get(), clang::AttributeList::getArgAsExpr(), clang::AttributeList::getArgAsIdent(), clang::Sema::getCurScope(), clang::AttributeList::getLoc(), clang::AttributeList::getName(), clang::AttributeList::getNumArgs(), clang::ast_matchers::id(), clang::IdentifierLoc::Ident, clang::AttributeList::isArgIdent(), clang::ActionResult< PtrTy, CompressInvalid >::isInvalid(), and clang::QualType::isNull().
Referenced by processTypeAttrs().
|
static |
Process an individual function attribute.
Returns true to indicate that the attribute was handled, false if it wasn't.
Definition at line 6108 of file SemaType.cpp.
References clang::ASTContext::adjustFunctionType(), clang::CC_X86FastCall, clang::CC_X86StdCall, clang::Sema::CheckCallingConvAttr(), clang::Sema::CheckNoReturnAttr(), clang::Sema::CheckRegparmAttr(), clang::Sema::Context, clang::Sema::Diag(), clang::ASTContext::getAttributedType(), clang::AttributedType::getAttrKind(), clang::FunctionType::getCallConv(), clang::Sema::getCallingConvAttributedType(), getCCTypeAttrKind(), clang::FunctionType::getHasRegParm(), clang::AttributeList::getKind(), clang::Sema::getLangOpts(), clang::AttributeList::getLoc(), clang::FunctionType::getNameForCallConv(), clang::AttributeList::getNumArgs(), clang::FunctionProtoType::isVariadic(), clang::AttributeList::setInvalid(), clang::supportsVariadicCall(), and clang::ast_matchers::type.
Referenced by distributeFunctionTypeAttrToInnermost(), and processTypeAttrs().
|
static |
Definition at line 5745 of file SemaType.cpp.
References clang::AttributedType::attr_ptr32, clang::AttributedType::attr_ptr64, clang::AttributedType::attr_sptr, clang::AttributedType::attr_uptr, clang::Sema::Context, clang::Sema::Diag(), clang::ASTContext::getAttributedType(), clang::AttributedType::getAttrKind(), getAttrListKind(), clang::AttributedType::getEquivalentType(), clang::AttributeList::getKind(), clang::AttributeList::getLoc(), clang::AttributeList::getName(), and clang::Type::isMemberPointerType().
Referenced by processTypeAttrs().
|
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 6452 of file SemaType.cpp.
References clang::AANT_ArgumentIntegerConstant, clang::Sema::Context, clang::Sema::Diag(), clang::AttributeList::getArgAsExpr(), clang::AttributeList::getLoc(), clang::AttributeList::getName(), clang::AttributeList::getNumArgs(), clang::ASTContext::getTargetInfo(), clang::ASTContext::getTypeSize(), clang::ASTContext::getVectorType(), clang::TargetInfo::hasFeature(), clang::Expr::isIntegerConstantExpr(), isPermittedNeonBaseType(), clang::Expr::isTypeDependent(), clang::Expr::isValueDependent(), and clang::AttributeList::setInvalid().
Referenced by processTypeAttrs().
|
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 5553 of file SemaType.cpp.
References clang::AANT_ArgumentString, clang::AttributedType::attr_objc_gc, clang::Sema::Context, clang::Sema::Diag(), clang::Qualifiers::GCNone, clang::AttributeList::getArgAsIdent(), clang::ASTContext::getAttributedType(), clang::AttributeList::getLoc(), clang::AttributeList::getName(), clang::AttributeList::getNumArgs(), clang::QualType::getObjCGCAttr(), clang::ASTContext::getObjCGCQualType(), clang::IdentifierLoc::Ident, clang::AttributeList::isArgIdent(), clang::Type::isBlockPointerType(), clang::Type::isObjCObjectPointerType(), clang::Type::isPointerType(), clang::IdentifierInfo::isStr(), clang::SourceLocation::isValid(), clang::AttributeList::setInvalid(), clang::Qualifiers::Strong, clang::ast_matchers::type, and clang::Qualifiers::Weak.
Referenced by handleObjCPointerTypeAttr().
|
static |
handleObjCOwnershipTypeAttr - Process an objc_ownership attribute on the specified type.
Returns 'true' if the attribute was handled.
Definition at line 5367 of file SemaType.cpp.
References clang::AANT_ArgumentString, clang::Sema::DelayedDiagnostics::add(), clang::Qualifiers::addObjCLifetime(), clang::AttributedType::attr_objc_inert_unsafe_unretained, clang::AttributedType::attr_objc_ownership, clang::Sema::Context, clang::Sema::DelayedDiagnostics, clang::Sema::Diag(), clang::AttributeList::getArgAsIdent(), clang::Type::getAs(), clang::ASTContext::getAttributedType(), clang::SourceManager::getExpansionLoc(), clang::SourceManager::getImmediateExpansionRange(), clang::Sema::getLangOpts(), clang::AttributeList::getLoc(), clang::IdentifierInfo::getName(), clang::AttributeList::getName(), clang::Declarator::getNumTypeObjects(), clang::Qualifiers::getObjCLifetime(), clang::Type::getPointeeType(), clang::ASTContext::getQualifiedType(), clang::QualType::getQualifiers(), clang::SplitQualType::getSingleStepDesugaredType(), clang::Sema::getSourceManager(), hasDirectOwnershipQualifier(), clang::IdentifierLoc::Ident, clang::AttributeList::isArgIdent(), clang::Type::isDependentType(), clang::SourceLocation::isMacroID(), clang::Type::isObjCRetainableType(), clang::Type::isPointerType(), clang::IdentifierInfo::isStr(), clang::Type::isUndeducedType(), clang::SourceLocation::isValid(), clang::sema::DelayedDiagnostic::makeForbiddenType(), maybeMovePastReturnType(), clang::Qualifiers::OCL_Autoreleasing, clang::Qualifiers::OCL_ExplicitNone, clang::Qualifiers::OCL_None, clang::Qualifiers::OCL_Strong, clang::Qualifiers::OCL_Weak, clang::SplitQualType::Quals, clang::Qualifiers::removeObjCLifetime(), S, clang::AttributeList::setInvalid(), clang::Sema::DelayedDiagnostics::shouldDelayDiagnostics(), clang::QualType::split(), TDS_ObjCObjOrBlock, clang::SplitQualType::Ty, and clang::ast_matchers::type.
Referenced by handleObjCPointerTypeAttr().
|
static |
Definition at line 308 of file SemaType.cpp.
References clang::AttributeList::getKind(), handleObjCGCTypeAttr(), and handleObjCOwnershipTypeAttr().
Referenced by distributeObjCPointerTypeAttrFromDeclarator(), and processTypeAttrs().
|
static |
Handle OpenCL Access Qualifier Attribute.
Definition at line 6500 of file SemaType.cpp.
References clang::Sema::Diag(), clang::Type::getAs(), getKind(), clang::AttributeList::getLoc(), clang::QualType::getTypePtr(), clang::Type::isImageType(), clang::Type::isPipeType(), and clang::AttributeList::setInvalid().
Referenced by processTypeAttrs().
|
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 6303 of file SemaType.cpp.
References clang::AANT_ArgumentIntegerConstant, clang::Sema::Context, clang::Sema::Diag(), clang::VectorType::GenericVector, clang::AttributeList::getArgAsExpr(), clang::AttributeList::getLoc(), clang::AttributeList::getName(), clang::AttributeList::getNumArgs(), clang::ASTContext::getTypeSize(), clang::ASTContext::getVectorType(), clang::Type::isBooleanType(), clang::Type::isBuiltinType(), clang::Expr::isIntegerConstantExpr(), clang::Type::isIntegerType(), clang::Type::isRealFloatingType(), clang::Expr::isTypeDependent(), clang::Expr::isValueDependent(), clang::VectorType::isVectorSizeTooLarge(), and clang::AttributeList::setInvalid().
Referenced by processTypeAttrs().
Does this type have a "direct" ownership qualifier? That is, is it written like "__strong id", as opposed to something like "typeof(foo)", where that happens to be strong?
Definition at line 5336 of file SemaType.cpp.
References clang::AttributedType::attr_objc_ownership, clang::QualType::getQualifiers(), and clang::Qualifiers::hasObjCLifetime().
Referenced by handleObjCOwnershipTypeAttr().
|
static |
Check whether there is a nullability attribute of any kind in the given attribute list.
Definition at line 3248 of file SemaType.cpp.
References clang::AttributeList::getNext().
Referenced by distributeNullabilityTypeAttr(), and GetFullTypeForDeclarator().
|
static |
Given that we're building a pointer or reference to the given.
Definition at line 1832 of file SemaType.cpp.
References clang::Sema::DelayedDiagnostics::add(), clang::Qualifiers::addObjCLifetime(), clang::Sema::Context, clang::Sema::DelayedDiagnostics, clang::Sema::Diag(), clang::QualType::getObjCLifetime(), clang::ASTContext::getQualifiedType(), clang::QualType::isConstQualified(), clang::Type::isObjCARCImplicitlyUnretainedType(), clang::Type::isObjCLifetimeType(), clang::Sema::isUnevaluatedContext(), clang::sema::DelayedDiagnostic::makeForbiddenType(), clang::Qualifiers::OCL_ExplicitNone, clang::Qualifiers::OCL_None, clang::Qualifiers::OCL_Strong, clang::Sema::DelayedDiagnostics::shouldDelayDiagnostics(), and clang::ast_matchers::type.
Referenced by clang::Sema::BuildPointerType(), and clang::Sema::BuildReferenceType().
|
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 2557 of file SemaType.cpp.
References clang::Qualifiers::addObjCLifetime(), clang::DeclaratorChunk::Array, clang::DeclaratorChunk::BlockPointer, clang::Sema::Context, clang::DeclaratorChunk::Function, clang::DeclaratorChunk::getAttrs(), clang::AttributeList::getNext(), clang::Declarator::getNumTypeObjects(), clang::QualType::getObjCLifetime(), clang::ASTContext::getQualifiedType(), clang::Declarator::getTypeObject(), isBlockPointer(), clang::Type::isObjCARCImplicitlyUnretainedType(), clang::Type::isObjCObjectType(), clang::Type::isObjCRetainableType(), clang::DeclaratorChunk::Kind, clang::DeclaratorChunk::MemberPointer, clang::Qualifiers::OCL_Autoreleasing, clang::Qualifiers::OCL_ExplicitNone, clang::DeclaratorChunk::Paren, clang::DeclaratorChunk::Pipe, clang::DeclaratorChunk::Pointer, clang::DeclaratorChunk::Reference, and transferARCOwnershipToDeclaratorChunk().
Referenced by clang::Sema::GetTypeForDeclarator().
Check whether the specified array size makes the array type a VLA.
If so, return true, if not, return the size of the array in SizeVal.
Definition at line 2050 of file SemaType.cpp.
References clang::Sema::Diag(), clang::ActionResult< PtrTy, CompressInvalid >::isInvalid(), clang::Sema::LangOpts, and clang::Sema::VerifyIntegerConstantExpression().
Referenced by clang::Sema::BuildArrayType().
|
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 48 of file SemaType.cpp.
References clang::Declarator::BlockLiteralContext, clang::DeclaratorChunk::Function, clang::Declarator::getContext(), clang::Declarator::getDeclSpec(), clang::Declarator::getNumTypeObjects(), clang::Declarator::getTypeObject(), clang::DeclSpec::hasTypeSpecifier(), and clang::DeclaratorChunk::Kind.
Referenced by checkOmittedBlockReturnType().
|
static |
Definition at line 6397 of file SemaType.cpp.
References clang::Sema::Context, clang::Type::getAs(), clang::BuiltinType::getKind(), clang::ASTContext::getTargetInfo(), clang::TargetInfo::getTriple(), and clang::VectorType::NeonPolyVector.
Referenced by HandleNeonVectorTypeAttr().
|
static |
Map a nullability attribute kind to a nullability kind.
Definition at line 5956 of file SemaType.cpp.
References clang::NonNull, clang::Nullable, and clang::Unspecified.
Referenced by distributeNullabilityTypeAttr(), and processTypeAttrs().
|
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.
i | - a notional index which the search will start immediately inside |
onlyBlockPointers | Whether we should only look into block pointer types (vs. all pointer types). |
Definition at line 325 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().
|
static |
Add a synthetic '()' to a block-literal declarator if it is required, given the return type.
Definition at line 668 of file SemaType.cpp.
References clang::Declarator::AddInnermostTypeInfo(), clang::EST_None, clang::DeclaratorChunk::getFunction(), clang::Declarator::getFunctionTypeInfo(), clang::Declarator::getLocStart(), clang::Declarator::getNumTypeObjects(), clang::DeclaratorChunk::FunctionTypeInfo::hasPrototype, clang::Declarator::isFunctionDeclarator(), and clang::Type::isFunctionType().
|
static |
Definition at line 273 of file SemaType.cpp.
References spliceAttrIntoList(), and spliceAttrOutOfList().
Referenced by distributeFunctionTypeAttr(), distributeFunctionTypeAttrFromDeclSpec(), distributeFunctionTypeAttrToInnermost(), distributeNullabilityTypeAttr(), distributeObjCPointerTypeAttr(), and distributeObjCPointerTypeAttrFromDeclarator().
|
static |
Definition at line 6529 of file SemaType.cpp.
References clang::Declarator::BlockContext, clang::Type::canHaveNullability(), clang::FixItHint::CreateInsertion(), clang::FixItHint::CreateRemoval(), distributeFunctionTypeAttr(), distributeFunctionTypeAttrFromDeclSpec(), distributeNullabilityTypeAttr(), distributeObjCPointerTypeAttr(), clang::Declarator::FileContext, FUNCTION_TYPE_ATTRS_CASELIST, clang::QualType::getAddressSpace(), clang::Declarator::getContext(), clang::Declarator::getDeclSpec(), clang::AttributeList::getKind(), clang::AttributeList::getLoc(), clang::AttributeList::getName(), clang::AttributeList::getNext(), clang::AttributeList::getScopeName(), clang::DeclSpec::getStorageClassSpec(), clang::Declarator::getTypeObject(), HandleAddressSpaceTypeAttribute(), HandleExtVectorTypeAttr(), handleFunctionTypeAttr(), handleMSPointerTypeQualifierAttr(), HandleNeonVectorTypeAttr(), handleObjCPointerTypeAttr(), HandleOpenCLAccessAttr(), HandleVectorSizeAttr(), clang::AttributeList::IgnoredAttribute, clang::AttributeList::isContextSensitiveKeywordAttribute(), clang::AttributeList::isCXX11Attribute(), clang::Type::isDependentType(), clang::Declarator::isFunctionDeclarator(), clang::Declarator::isFunctionDefinition(), clang::AttributeList::isInvalid(), clang::Type::isSamplerT(), clang::IdentifierInfo::isStr(), mapNullabilityAttrKind(), MS_TYPE_ATTRS_CASELIST, clang::VectorType::NeonPolyVector, clang::VectorType::NeonVector, NULLABILITY_TYPE_ATTRS_CASELIST, OBJC_POINTER_TYPE_ATTRS_CASELIST, clang::LangAS::opencl_generic, clang::LangAS::opencl_global, clang::DeclaratorChunk::Pointer, clang::DeclSpec::SCS_static, clang::DeclSpec::SCS_typedef, clang::AttributeList::setInvalid(), clang::AttributeList::setUsedAsTypeAttr(), TAL_DeclChunk, TAL_DeclName, TAL_DeclSpec, and clang::AttributeList::UnknownAttribute.
Referenced by GetDeclSpecTypeForDeclarator(), and GetFullTypeForDeclarator().
|
static |
Definition at line 251 of file SemaType.cpp.
References clang::AttributeList::setNext().
Referenced by GetFullTypeForDeclarator(), moveAttrFromListToList(), and transferARCOwnershipToDeclaratorChunk().
|
static |
Definition at line 256 of file SemaType.cpp.
References clang::AttributeList::getNext(), and clang::AttributeList::setNext().
Referenced by distributeFunctionTypeAttrFromDeclarator(), distributeObjCPointerTypeAttrFromDeclarator(), and moveAttrFromListToList().
|
static |
Used for transferring ownership in casts resulting in l-values.
Definition at line 4647 of file SemaType.cpp.
References clang::DeclaratorChunk::Array, clang::DeclaratorChunk::BlockPointer, clang::DeclaratorChunk::Function, clang::Declarator::getNumTypeObjects(), clang::Declarator::getTypeObject(), clang::Type::isObjCObjectType(), clang::Type::isObjCRetainableType(), clang::DeclaratorChunk::Kind, clang::DeclaratorChunk::MemberPointer, clang::DeclaratorChunk::Paren, clang::DeclaratorChunk::Pipe, clang::DeclaratorChunk::Pointer, clang::DeclaratorChunk::Reference, transferARCOwnershipToDeclaratorChunk(), and transferARCOwnershipToDeclSpec().
Referenced by clang::Sema::GetTypeForDeclaratorCast().
|
static |
Definition at line 4607 of file SemaType.cpp.
References clang::AttributeList::AS_GNU, clang::Sema::Context, clang::AttributePool::create(), clang::IdentifierTable::get(), clang::Declarator::getAttributePool(), clang::DeclaratorChunk::getAttrListRef(), clang::DeclaratorChunk::getAttrs(), clang::AttributeList::getNext(), clang::Declarator::getTypeObject(), clang::IdentifierLoc::Ident, clang::ASTContext::Idents, clang::IdentifierLoc::Loc, clang::Qualifiers::OCL_Autoreleasing, clang::Qualifiers::OCL_ExplicitNone, clang::Qualifiers::OCL_None, clang::Qualifiers::OCL_Strong, clang::Qualifiers::OCL_Weak, and spliceAttrIntoList().
Referenced by inferARCWriteback(), and transferARCOwnership().
|
static |
Definition at line 4596 of file SemaType.cpp.
References clang::Qualifiers::addObjCLifetime(), clang::Sema::Context, clang::QualType::getObjCLifetime(), clang::ASTContext::getQualifiedType(), clang::Type::isObjCRetainableType(), and clang::Qualifiers::OCL_None.
Referenced by transferARCOwnership().
|
static |
Produce an appropriate diagnostic for an ambiguity between a function declarator and a C++ direct-initializer.
Definition at line 3023 of file SemaType.cpp.
References clang::prec::Comma, clang::Declarator::ConditionContext, clang::FixItHint::CreateInsertion(), clang::FixItHint::CreateRemoval(), clang::FixItHint::CreateReplacement(), clang::Sema::CurContext, clang::Sema::Diag(), E, clang::DeclaratorChunk::EndLoc, clang::FDK_Declaration, clang::DeclaratorChunk::Fun, clang::Type::getAsCXXRecordDecl(), clang::SourceRange::getBegin(), clang::Declarator::getCommaLoc(), clang::Declarator::getContext(), clang::Sema::getCurScope(), clang::Declarator::getDeclSpec(), clang::SourceRange::getEnd(), clang::Sema::getFixItZeroInitializerForType(), clang::Declarator::getFunctionDefinitionKind(), clang::Declarator::getIdentifier(), clang::Declarator::getIdentifierLoc(), clang::Sema::getLocForEndOfToken(), clang::DeclSpec::getStorageClassSpec(), clang::CXXRecordDecl::hasDefinition(), clang::CXXRecordDecl::hasUserProvidedDefaultConstructor(), clang::DeclaratorChunk::FunctionTypeInfo::isAmbiguous, clang::CXXRecordDecl::isEmpty(), clang::Declarator::isFirstDeclarator(), clang::Declarator::isFunctionDeclarator(), clang::DeclContext::isFunctionOrMethod(), clang::Type::isRecordType(), clang::Type::isReferenceType(), clang::Type::isVoidType(), clang::Sema::LangOpts, clang::DeclaratorChunk::Loc, clang::Sema::LookupName(), clang::Sema::LookupOrdinaryName, clang::Name, clang::DeclaratorChunk::FunctionTypeInfo::NumParams, clang::DeclaratorChunk::ParamInfo::Param, clang::DeclaratorChunk::FunctionTypeInfo::Params, clang::Result, clang::DeclSpec::SCS_unspecified, and clang::Sema::SourceMgr.
Referenced by GetFullTypeForDeclarator().