clang: clang::QualType Class Reference (original) (raw)
A (possibly-)qualified type. More...
#include "[clang/AST/Type.h](Type%5F8h%5Fsource.html)"
Public Types | |
---|---|
enum class | NonConstantStorageReason { MutableField, NonConstNonReferenceType, NonTrivialCtor, NonTrivialDtor } |
enum | PrimitiveDefaultInitializeKind { PDIK_Trivial, PDIK_ARCStrong, PDIK_ARCWeak, PDIK_Struct } |
enum | PrimitiveCopyKind { PCK_Trivial, PCK_VolatileTrivial, PCK_ARCStrong, PCK_ARCWeak, PCK_Struct } |
enum | DestructionKind { DK_none, DK_cxx_destructor, DK_objc_strong_lifetime, DK_objc_weak_lifetime, DK_nontrivial_c_struct } |
Public Member Functions | |
---|---|
QualType ()=default | |
QualType (const Type *Ptr, unsigned Quals) | |
QualType (const ExtQuals *Ptr, unsigned Quals) | |
unsigned | getLocalFastQualifiers () const |
void | setLocalFastQualifiers (unsigned Quals) |
bool | UseExcessPrecision (const ASTContext &Ctx) |
const Type * | getTypePtr () const |
Retrieves a pointer to the underlying (unqualified) type. | |
const Type * | getTypePtrOrNull () const |
const IdentifierInfo * | getBaseTypeIdentifier () const |
Retrieves a pointer to the name of the base type. | |
SplitQualType | split () const |
Divides a QualType into its unqualified type and a set of local qualifiers. | |
void * | getAsOpaquePtr () const |
const Type & | operator* () const |
const Type * | operator-> () const |
bool | isCanonical () const |
bool | isCanonicalAsParam () const |
bool | isNull () const |
Return true if this QualType doesn't point to a type yet. | |
bool | isReferenceable () const |
bool | isLocalConstQualified () const |
Determine whether this particular QualType instance has the "const" qualifier set, without looking through typedefs that may have added "const" at a different level. | |
bool | isConstQualified () const |
Determine whether this type is const-qualified. | |
std::optional< NonConstantStorageReason > | isNonConstantStorage (const ASTContext &Ctx, bool ExcludeCtor, bool ExcludeDtor) |
Determine whether instances of this type can be placed in immutable storage. | |
bool | isConstantStorage (const ASTContext &Ctx, bool ExcludeCtor, bool ExcludeDtor) |
bool | isLocalRestrictQualified () const |
Determine whether this particular QualType instance has the "restrict" qualifier set, without looking through typedefs that may have added "restrict" at a different level. | |
bool | isRestrictQualified () const |
Determine whether this type is restrict-qualified. | |
bool | isLocalVolatileQualified () const |
Determine whether this particular QualType instance has the "volatile" qualifier set, without looking through typedefs that may have added "volatile" at a different level. | |
bool | isVolatileQualified () const |
Determine whether this type is volatile-qualified. | |
bool | hasLocalQualifiers () const |
Determine whether this particular QualType instance has any qualifiers, without looking through any typedefs that might add qualifiers at a different level. | |
bool | hasQualifiers () const |
Determine whether this type has any qualifiers. | |
bool | hasLocalNonFastQualifiers () const |
Determine whether this particular QualType instance has any "non-fast" qualifiers, e.g., those that are stored in an ExtQualType instance. | |
Qualifiers | getLocalQualifiers () const |
Retrieve the set of qualifiers local to this particular QualType instance, not including any qualifiers acquired through typedefs or other sugar. | |
Qualifiers | getQualifiers () const |
Retrieve the set of qualifiers applied to this type. | |
unsigned | getLocalCVRQualifiers () const |
Retrieve the set of CVR (const-volatile-restrict) qualifiers local to this particular QualType instance, not including any qualifiers acquired through typedefs or other sugar. | |
unsigned | getCVRQualifiers () const |
Retrieve the set of CVR (const-volatile-restrict) qualifiers applied to this type. | |
bool | isConstant (const ASTContext &Ctx) const |
bool | isPODType (const ASTContext &Context) const |
Determine whether this is a Plain Old Data (POD) type (C++ 3.9p10). | |
bool | isCXX98PODType (const ASTContext &Context) const |
Return true if this is a POD type according to the rules of the C++98 standard, regardless of the current compilation's language. | |
bool | isCXX11PODType (const ASTContext &Context) const |
Return true if this is a POD type according to the more relaxed rules of the C++11 standard, regardless of the current compilation's language. | |
bool | isTrivialType (const ASTContext &Context) const |
Return true if this is a trivial type per (C++0x [basic.types]p9) | |
bool | isTriviallyCopyableType (const ASTContext &Context) const |
Return true if this is a trivially copyable type (C++0x [basic.types]p9) | |
bool | isBitwiseCloneableType (const ASTContext &Context) const |
Return true if the type is safe to bitwise copy using memcpy/memmove. | |
bool | isTriviallyCopyConstructibleType (const ASTContext &Context) const |
Return true if this is a trivially copyable type. | |
bool | isTriviallyRelocatableType (const ASTContext &Context) const |
Return true if this is a trivially relocatable type. | |
bool | mayBeDynamicClass () const |
Returns true if it is a class and it might be dynamic. | |
bool | mayBeNotDynamicClass () const |
Returns true if it is not a class or if the class might not be dynamic. | |
bool | isWebAssemblyReferenceType () const |
Returns true if it is a WebAssembly Reference Type. | |
bool | isWebAssemblyExternrefType () const |
Returns true if it is a WebAssembly Externref Type. | |
bool | isWebAssemblyFuncrefType () const |
Returns true if it is a WebAssembly Funcref Type. | |
void | addConst () |
Add the const type qualifier to this QualType. | |
QualType | withConst () const |
void | addVolatile () |
Add the volatile type qualifier to this QualType. | |
QualType | withVolatile () const |
void | addRestrict () |
Add the restrict qualifier to this QualType. | |
QualType | withRestrict () const |
QualType | withCVRQualifiers (unsigned CVR) const |
void | addFastQualifiers (unsigned TQs) |
void | removeLocalConst () |
void | removeLocalVolatile () |
void | removeLocalRestrict () |
void | removeLocalFastQualifiers () |
void | removeLocalFastQualifiers (unsigned Mask) |
QualType | withFastQualifiers (unsigned TQs) const |
QualType | withExactLocalFastQualifiers (unsigned TQs) const |
QualType | withoutLocalFastQualifiers () const |
QualType | getCanonicalType () const |
QualType | getLocalUnqualifiedType () const |
Return this type with all of the instance-specific qualifiers removed, but without removing any qualifiers that may have been applied through typedefs. | |
QualType | getUnqualifiedType () const |
Retrieve the unqualified variant of the given type, removing as little sugar as possible. | |
SplitQualType | getSplitUnqualifiedType () const |
Retrieve the unqualified variant of the given type, removing as little sugar as possible. | |
bool | isMoreQualifiedThan (QualType Other, const ASTContext &Ctx) const |
Determine whether this type is more qualified than the other given type, requiring exact equality for non-CVR qualifiers. | |
bool | isAtLeastAsQualifiedAs (QualType Other, const ASTContext &Ctx) const |
Determine whether this type is at least as qualified as the other given type, requiring exact equality for non-CVR qualifiers. | |
QualType | getNonReferenceType () const |
If Type is a reference type (e.g., const int&), returns the type that the reference refers to ("const int"). | |
QualType | getNonLValueExprType (const ASTContext &Context) const |
Determine the type of a (typically non-lvalue) expression with the specified result type. | |
QualType | getNonPackExpansionType () const |
Remove an outer pack expansion type (if any) from this type. | |
QualType | getDesugaredType (const ASTContext &Context) const |
Return the specified type with any "sugar" removed from the type. | |
SplitQualType | getSplitDesugaredType () const |
QualType | getSingleStepDesugaredType (const ASTContext &Context) const |
Return the specified type with one level of "sugar" removed from the type. | |
QualType | IgnoreParens () const |
Returns the specified type after dropping any outer-level parentheses. | |
std::string | getAsString () const |
std::string | getAsString (const PrintingPolicy &Policy) const |
void | print (raw_ostream &OS, const PrintingPolicy &Policy, const Twine &PlaceHolder=Twine(), unsigned Indentation=0) const |
void | getAsStringInternal (std::string &Str, const PrintingPolicy &Policy) const |
StreamedQualTypeHelper | stream (const PrintingPolicy &Policy, const Twine &PlaceHolder=Twine(), unsigned Indentation=0) const |
void | dump (const char *s) const |
void | dump () const |
void | dump (llvm::raw_ostream &OS, const ASTContext &Context) const |
void | Profile (llvm::FoldingSetNodeID &ID) const |
bool | hasAddressSpace () const |
Check if this type has any address space qualifier. | |
LangAS | getAddressSpace () const |
Return the address space of this type. | |
bool | isAddressSpaceOverlapping (QualType T, const ASTContext &Ctx) const |
Returns true if address space qualifiers overlap with T address space qualifiers. | |
Qualifiers::GC | getObjCGCAttr () const |
Returns gc attribute of this type. | |
bool | isObjCGCWeak () const |
true when Type is objc's weak. | |
bool | isObjCGCStrong () const |
true when Type is objc's strong. | |
Qualifiers::ObjCLifetime | getObjCLifetime () const |
Returns lifetime attribute of this type. | |
bool | hasNonTrivialObjCLifetime () const |
bool | hasStrongOrWeakObjCLifetime () const |
bool | isNonWeakInMRRWithObjCWeak (const ASTContext &Context) const |
PointerAuthQualifier | getPointerAuth () const |
PrimitiveDefaultInitializeKind | isNonTrivialToPrimitiveDefaultInitialize () const |
Functions to query basic properties of non-trivial C struct types. | |
PrimitiveCopyKind | isNonTrivialToPrimitiveCopy () const |
Check if this is a non-trivial type that would cause a C struct transitively containing this type to be non-trivial to copy and return the kind. | |
PrimitiveCopyKind | isNonTrivialToPrimitiveDestructiveMove () const |
Check if this is a non-trivial type that would cause a C struct transitively containing this type to be non-trivial to destructively move and return the kind. | |
DestructionKind | isDestructedType () const |
Returns a nonzero value if objects of this type require non-trivial work to clean up after. | |
bool | hasNonTrivialToPrimitiveDefaultInitializeCUnion () const |
Check if this is or contains a C union that is non-trivial to default-initialize, which is a union that has a member that is non-trivial to default-initialize. | |
bool | hasNonTrivialToPrimitiveDestructCUnion () const |
Check if this is or contains a C union that is non-trivial to destruct, which is a union that has a member that is non-trivial to destruct. | |
bool | hasNonTrivialToPrimitiveCopyCUnion () const |
Check if this is or contains a C union that is non-trivial to copy, which is a union that has a member that is non-trivial to copy. | |
bool | isCForbiddenLValueType () const |
Determine whether expressions of the given type are forbidden from being lvalues in C. | |
QualType | substObjCTypeArgs (ASTContext &ctx, ArrayRef< QualType > typeArgs, ObjCSubstitutionContext context) const |
Substitute type arguments for the Objective-C type parameters used in the subject type. | |
QualType | substObjCMemberType (QualType objectType, const DeclContext *dc, ObjCSubstitutionContext context) const |
Substitute type arguments from an object type for the Objective-C type parameters used in the subject type. | |
QualType | stripObjCKindOfType (const ASTContext &ctx) const |
Strip Objective-C "__kindof" types from the given type. | |
QualType | getAtomicUnqualifiedType () const |
Remove all qualifiers including _Atomic. | |
Static Public Member Functions | |
---|---|
static QualType | getFromOpaquePtr (const void *Ptr) |
static std::string | getAsString (SplitQualType split, const PrintingPolicy &Policy) |
static std::string | getAsString (const Type *ty, Qualifiers qs, const PrintingPolicy &Policy) |
static void | print (SplitQualType split, raw_ostream &OS, const PrintingPolicy &policy, const Twine &PlaceHolder, unsigned Indentation=0) |
static void | print (const Type *ty, Qualifiers qs, raw_ostream &OS, const PrintingPolicy &policy, const Twine &PlaceHolder, unsigned Indentation=0) |
static void | getAsStringInternal (SplitQualType split, std::string &out, const PrintingPolicy &policy) |
static void | getAsStringInternal (const Type *ty, Qualifiers qs, std::string &out, const PrintingPolicy &policy) |
Friends | |
---|---|
class | QualifierCollector |
bool | operator== (const QualType &LHS, const QualType &RHS) |
Indicate whether the specified types and qualifiers are identical. | |
bool | operator!= (const QualType &LHS, const QualType &RHS) |
bool | operator< (const QualType &LHS, const QualType &RHS) |
A (possibly-)qualified type.
For efficiency, we don't store CV-qualified types as nodes on their own: instead each reference to a type stores the qualifiers. This greatly reduces the number of nodes we need to allocate for types (for example we only need one for 'int', 'const int', 'volatile int', 'const volatile int', etc).
As an added efficiency bonus, instead of making this a pair, we just store the two bits we care about in the low bits of the pointer. To handle the packing/unpacking, we make QualType be a simple wrapper class that acts like a smart pointer. A third bit indicates whether there are extended qualifiers present, in which case the pointer points to a special structure.
Examples
Definition at line 929 of file Type.h.
◆ DestructionKind
Enumerator |
---|
DK_none |
DK_cxx_destructor |
DK_objc_strong_lifetime |
DK_objc_weak_lifetime |
DK_nontrivial_c_struct |
Definition at line 1519 of file Type.h.
◆ NonConstantStorageReason
Enumerator |
---|
MutableField |
NonConstNonReferenceType |
NonTrivialCtor |
NonTrivialDtor |
Definition at line 1013 of file Type.h.
◆ PrimitiveCopyKind
Enumerator | |
---|---|
PCK_Trivial | The type does not fall into any of the following categories. Note that this case is zero-valued so that values of this enum can be used as a boolean condition for non-triviality. |
PCK_VolatileTrivial | The type would be trivial except that it is volatile-qualified. Types that fall into one of the other non-trivial cases may additionally be volatile-qualified. |
PCK_ARCStrong | The type is an Objective-C retainable pointer type that is qualified with the ARC __strong qualifier. |
PCK_ARCWeak | The type is an Objective-C retainable pointer type that is qualified with the ARC __weak qualifier. |
PCK_Struct | The type is a struct containing a field whose type is neither PCK_Trivial nor PCK_VolatileTrivial. Note that a C++ struct type does not necessarily match this; C++ copying semantics are too complex to express here, in part because they depend on the exact constructor or assignment operator that is chosen by overload resolution to do the copy. |
Definition at line 1478 of file Type.h.
◆ PrimitiveDefaultInitializeKind
Enumerator | |
---|---|
PDIK_Trivial | The type does not fall into any of the following categories. Note that this case is zero-valued so that values of this enum can be used as a boolean condition for non-triviality. |
PDIK_ARCStrong | The type is an Objective-C retainable pointer type that is qualified with the ARC __strong qualifier. |
PDIK_ARCWeak | The type is an Objective-C retainable pointer type that is qualified with the ARC __weak qualifier. |
PDIK_Struct | The type is a struct containing a field whose type is not PCK_Trivial. |
Definition at line 1452 of file Type.h.
◆ QualType() [1/3]
clang::QualType::QualType ( ) | default |
---|
◆ QualType() [2/3]
clang::QualType::QualType ( const Type * Ptr, unsigned Quals ) | inline |
---|
Definition at line 953 of file Type.h.
◆ QualType() [3/3]
◆ addConst()
void clang::QualType::addConst ( ) | inline |
---|
Add the const
type qualifier to this QualType.
Definition at line 1151 of file Type.h.
References addFastQualifiers(), and clang::Qualifiers::Const.
Referenced by clang::Sema::ActOnCXXUuidof(), adjustCVQualifiersForCXXThisWithinLambda(), alignReferenceTypes(), builtinCommonTypeImpl(), captureInCapturedRegion(), captureInLambda(), clang::SemaARM::CheckARMBuiltinExclusiveCall(), clang::Sema::CheckExplicitlyDefaultedComparison(), checkTrivialSubobjectCall(), findOMPAllocatorHandleT(), getSubobjectType(), IsOverloadOrOverrideImpl(), isVariableAlreadyCapturedInScopeInfo(), clang::Sema::LookupSpecialMember(), and clang::Sema::tryCaptureVariable().
◆ addFastQualifiers()
void clang::QualType::addFastQualifiers ( unsigned TQs) | inline |
---|
◆ addRestrict()
void clang::QualType::addRestrict ( ) | inline |
---|
◆ addVolatile()
void clang::QualType::addVolatile ( ) | inline |
---|
◆ dump() [1/3]
LLVM_DUMP_METHOD void QualType::dump | ( | ) | const |
---|
◆ dump() [2/3]
void QualType::dump | ( | const char * | s | ) | const |
---|
◆ dump() [3/3]
LLVM_DUMP_METHOD void QualType::dump | ( | llvm::raw_ostream & | OS, |
---|---|---|---|
const ASTContext & | Context | ||
) | const |
◆ getAddressSpace()
LangAS clang::QualType::getAddressSpace ( ) const | inline |
---|
Return the address space of this type.
Definition at line 8062 of file Type.h.
Referenced by clang::Sema::ActOnCXXDelete(), clang::Sema::ActOnFunctionDeclarator(), clang::Sema::AddInitializerToDecl(), AdjustAddressSpaceForBuiltinOperandType(), clang::Sema::BuildAtomicExpr(), clang::Sema::BuildCallExpr(), clang::Sema::BuildCompoundLiteralExpr(), clang::Sema::CheckAllocatedType(), clang::Sema::CheckAssignmentConstraints(), clang::Sema::CheckCompareOperands(), clang::CodeGen::CodeGenTypes::ConvertType(), DeduceTemplateArgumentsByTypeMatch(), diagnoseOpenCLTypes(), clang::CodeGen::CodeGenModule::GenKernelArgMetadata(), clang::CodeGen::CGOpenMPRuntimeGPU::getAddressOfLocalVariable(), clang::CodeGen::CodeGenModule::GetAddrOfGlobalVar(), clang::CodeGen::CodeGenModule::GetAddrOfMSGuidDecl(), clang::CodeGen::CodeGenModule::GetAddrOfTemplateParamObject(), clang::CodeGen::CodeGenModule::GetAddrOfUnnamedGlobalConstantDecl(), clang::ASTContext::getAddrSpaceQualType(), getLambdaType(), getOpenCLKernelParameterType(), clang::CodeGen::CodeGenModule::getOrCreateStaticVarDecl(), clang::ASTContext::getTargetNullPointerValue(), IsAddressSpaceConversion(), clang::Expr::isNullPointerConstant(), clang::isValidSwiftContextType(), clang::isValidSwiftIndirectResultType(), isWebAssemblyFuncrefType(), clang::InitializationSequence::Perform(), clang::Sema::PerformImplicitConversion(), clang::Sema::PerformImplicitObjectArgumentInitialization(), clang::Sema::PerformObjectMemberConversion(), clang::Sema::PerformQualificationConversion(), clang::Sema::PrepareScalarCast(), clang::ASTContext::removePtrSizeAddrSpace(), rewriteBuiltinFunctionDecl(), and TryReinterpretCast().
◆ getAsOpaquePtr()
void * clang::QualType::getAsOpaquePtr ( ) const | inline |
---|
Definition at line 976 of file Type.h.
Referenced by clang::Sema::ActOnTemplateTypeArgument(), clang::CodeGen::CGDebugInfo::completeClass(), clang::CodeGen::CGDebugInfo::completeType(), clang::CodeGen::CGDebugInfo::completeUnusedClass(), clang::CodeGen::CGDebugInfo::EmitGlobalVariable(), clang::CodeGen::CGDebugInfo::finalize(), clang::CanQual< T >::getAsOpaquePtr(), llvm::DenseMapInfo< clang::QualType >::getHashValue(), clang::QualTypeOrdering::operator()(), ProcessAPINotes(), Profile(), clang::AutoType::Profile(), clang::DependentVectorType::Profile(), clang::DependentSizedMatrixType::Profile(), clang::DependentSizedExtVectorType::Profile(), clang::DependentSizedArrayType::Profile(), clang::DependentAddressSpaceType::Profile(), clang::ConstantArrayType::Profile(), clang::ObjCTypeParamType::Profile(), clang::AttributedType::Profile(), clang::ObjCObjectTypeImpl::Profile(), clang::DependentUnaryTransformType::Profile(), clang::VectorType::Profile(), clang::ConstantMatrixType::Profile(), clang::IncompleteArrayType::Profile(), clang::AdjustedType::Profile(), clang::PackExpansionType::Profile(), clang::PointerType::Profile(), clang::BlockPointerType::Profile(), clang::MemberPointerType::Profile(), clang::ReferenceType::Profile(), clang::FunctionNoProtoType::Profile(), clang::BTFTagAttributedType::Profile(), clang::HLSLAttributedResourceType::Profile(), and clang::CountAttributedType::Profile().
◆ getAsString() [1/4]
std::string QualType::getAsString | ( | ) | const |
---|
◆ getAsString() [2/4]
std::string QualType::getAsString | ( | const PrintingPolicy & | Policy | ) | const |
---|
◆ getAsString() [3/4]
◆ getAsString() [4/4]
Definition at line 1327 of file Type.h.
References getAsString(), clang::SplitQualType::Quals, split(), and clang::SplitQualType::Ty.
Referenced by clang::data_collection::addDataToConsumer(), addFixitForObjCARCConversion(), clang::SemaOpenCL::checkBuiltinEnqueueKernel(), clang::SemaOpenCL::checkBuiltinNDRangeAndBlock(), checkTypeParamListConsistency(), ConvertTypeToDiagnosticString(), clang::CodeCompletionResult::createCodeCompletionStringForDecl(), clang::Sema::diagnoseUnavailableAlignedAllocation(), clang::Sema::getAmbiguousPathsDisplayString(), clang::diff::SyntaxTree::Impl::getDeclValue(), getExceedsMsgs(), clang::GetFullTypeName(), clang::TypeName::getFullyQualifiedName(), clang::diff::getInitializerValue(), getNoteTag(), getPrettyTypeName(), clang::analyze_format_string::ArgType::getRepresentativeTypeName(), clang::CodeGen::CodeGenModule::isInNoSanitizeList(), isISLObjectRef(), isNullPointerValueTemplateArgument(), isOpenCLSizeDependentType(), clang::ASTContext::isTypeIgnoredBySanitizer(), NoteBuiltinOperatorCandidate(), OpenCLConvertScalarsToVectors(), printIntegral(), rewriteToNSMacroDecl(), rewriteToObjCProperty(), and TryStaticDowncast().
◆ getAsStringInternal() [1/3]
◆ getAsStringInternal() [2/3]
static void clang::QualType::getAsStringInternal ( SplitQualType split, std::string & out, const PrintingPolicy & policy ) | inlinestatic |
---|
◆ getAsStringInternal() [3/3]
void QualType::getAsStringInternal | ( | std::string & | Str, |
---|---|---|---|
const PrintingPolicy & | Policy | ||
) | const |
◆ getAtomicUnqualifiedType()
QualType QualType::getAtomicUnqualifiedType | ( | ) | const |
---|
◆ getBaseTypeIdentifier()
Retrieves a pointer to the name of the base type.
Definition at line 102 of file Type.cpp.
References clang::Type::castAs(), clang::Type::castAsArrayTypeUnsafe(), getBaseTypeIdentifier(), clang::NamedDecl::getIdentifier(), clang::Type::getPointeeType(), clang::Type::getTypeClass(), getTypePtr(), clang::Type::isArrayType(), clang::Type::isEnumeralType(), clang::Type::isPointerOrReferenceType(), and clang::Type::isRecordType().
Referenced by appendType(), getBaseTypeIdentifier(), getNestedNameSpecifierIdentifiers(), and hasSimilarParameters().
◆ getCanonicalType()
QualType clang::QualType::getCanonicalType ( ) const | inline |
---|
Definition at line 7988 of file Type.h.
References withFastQualifiers().
Referenced by clang::Sema::ActOnCXXTryBlock(), clang::Sema::ActOnFunctionDeclarator(), clang::SemaOpenMP::ActOnOpenMPAlignedClause(), clang::SemaOpenMP::ActOnOpenMPDeclareMapperDirective(), adjustReturnValue(), clang::CodeGen::CGOpenMPRuntimeGPU::adjustTargetSpecificDataForLambdas(), appendType(), clang::ast_matchers::libc_func_matchers::AST_MATCHER_P(), clang::ast_matchers::AST_POLYMORPHIC_MATCHER_P2(), clang::Sema::BuildExprRequirement(), clang::Sema::BuildReturnStmt(), buildUserDefinedMapperRef(), clang::SemaPPC::BuiltinPPCMMACall(), clang::Sema::BuiltinVectorMath(), clang::checkBlockArgs(), clang::SemaOpenCL::checkBuiltinEnqueueKernel(), clang::SemaRISCV::CheckBuiltinFunctionCall(), clang::Sema::CheckCompareOperands(), clang::Sema::CheckCompletedCXXClass(), checkNoThrow(), clang::checkOpenCLEnqueueVariadicArgs(), clang::Sema::CheckSizelessVectorConditionalTypes(), clang::Sema::checkTypeSupport(), ConvertTypeToDiagnosticString(), clang::dataflow::copyRecord(), create_call_once(), clang::ConstructionContext::createFromLayers(), clang::Sema::CreateGenericSelectionExpr(), DeduceTemplateArgumentsByTypeMatch(), DeduceTemplateSpecArguments(), diagnoseOpenCLTypes(), DiagnoseRecursiveConstFields(), clang::ento::SMTConv::doTypeConversion(), dumpMicrosoftThunkAdjustment(), emitBadConversionNotes(), emitReadOnlyPlacementAttrWarning(), encodeTypeForFunctionPointerAuth(), findSubobject(), fixVarDeclWithArray(), clang::CodeGen::CodeGenModule::GenKernelArgMetadata(), getAArch64LS(), getAArch64MTV(), getAArch64PBV(), getGlobalStreamPointerByName(), clang::ento::StoreManager::getLValueElement(), getNaiveStrategy(), getNDSWDS(), getOpenCLKernelParameterType(), clang::dataflow::DataflowAnalysisContext::getOrCreateNullPointerValue(), clang::ASTContext::getPackIndexingType(), clang::ento::ObjCMethodCall::getRuntimeDefinition(), handleComplexFloatConversion(), handleDiagnoseAsBuiltinAttr(), clang::RecordType::hasConstFields(), clang::Sema::inferGslPointerAttribute(), isBitwiseCloneableType(), clang::Decl::isFunctionPointerType(), clang::CodeGen::CodeGenModule::isInNoSanitizeList(), clang::ento::RetainSummaryManager::isKnownSmartPointer(), isLayoutCompatible(), isPointerToConst(), clang::SemaHLSL::IsScalarizedLayoutCompatible(), IsStringInit(), isSubstitutedType(), clang::InitListExpr::isTransparent(), isValidSizelessVectorForConditionalCondition(), isValidVectorForConditionalCondition(), maybeRecoverWithZeroInitialization(), clang::CodeGen::CodeGenModule::MayDropFunctionReturn(), PerformConstructorInitialization(), processImplicitMapsWithDefaultMappers(), clang::dataflow::recordsEqual(), REGISTER_MAP_WITH_PROGRAMSTATE(), splitAccordingToPolicy(), SuggestInitializationFixit(), tryExtractInitializerFromList(), clang::Value::Value(), clang::interp::Compiler< Emitter >::VisitCastExpr(), clang::ASTNodeImporter::VisitClassTemplateSpecializationDecl(), and clang::ento::SValExplainer::VisitSymbolicRegion().
◆ getCVRQualifiers()
unsigned clang::QualType::getCVRQualifiers ( ) const | inline |
---|
Retrieve the set of CVR (const-volatile-restrict) qualifiers applied to this type.
Definition at line 7982 of file Type.h.
Referenced by clang::Sema::CheckPointerToMemberOperands(), CheckTemplateArgumentIsCompatibleWithParameter(), checkTrivialSubobjectCall(), DeduceTemplateArgumentsByTypeMatch(), defaultedSpecialMemberIsConstexpr(), diagnoseRedundantReturnTypeQualifiers(), GeneralizeType(), clang::FunctionDecl::isReplaceableGlobalAllocationFunction(), clang::Sema::SpecialMemberIsTrivial(), TryObjectArgumentInitialization(), and unwrapCastAwayConstnessLevel().
◆ getDesugaredType()
Return the specified type with any "sugar" removed from the type.
This takes off typedefs, typeof's etc. If the outer level of the type is already concrete, it returns it unmodified. This is similar to getting the canonical type, but it doesn't remove all typedefs. For example, it returns "T*" as "T*", (not as "int*"), because the pointer is concrete.
Qualifiers are left in place.
Definition at line 1291 of file Type.h.
References getDesugaredType().
Referenced by clang::Sema::ActOnFields(), clang::Sema::DiagnoseInvalidExplicitObjectParameterInLambda(), clang::ento::TypedRegion::getDesugaredLocationType(), getDesugaredType(), clang::SemaObjC::getMessageSendResultType(), isGRealloc(), isStandardRealloc(), and IsStructurallyEquivalent().
◆ getFromOpaquePtr()
static QualType clang::QualType::getFromOpaquePtr ( const void * Ptr) | inlinestatic |
---|
Definition at line 978 of file Type.h.
References clang::T.
Referenced by ConvertTypeToDiagnosticString(), clang::FormatASTNodeDiagnosticArgument(), clang::DependentDiagnostic::getAccessBaseObjectType(), clang::TemplateArgument::getAsType(), clang::APValue::LValueBase::getDynamicAllocType(), clang::serialization::UnsafeQualTypeDenseMapInfo::getEmptyKey(), clang::sema::DelayedDiagnostic::getForbiddenTypeOperand(), clang::CanQual< T >::getFromOpaquePtr(), clang::StandardConversionSequence::getFromType(), clang::AmbiguousConversionSequence::getFromType(), clang::BadConversionSequence::getFromType(), llvm::PointerLikeTypeTraits< clang::QualType >::getFromVoidPointer(), clang::TemplateArgument::getIntegralType(), clang::TemplateArgument::getNullPtrType(), clang::TemplateArgument::getParamTypeForDecl(), clang::TemplateArgument::getStructuralValueType(), clang::ObjCMessageExpr::getSuperType(), clang::serialization::UnsafeQualTypeDenseMapInfo::getTombstoneKey(), clang::AmbiguousConversionSequence::getToType(), clang::BadConversionSequence::getToType(), clang::StandardConversionSequence::getToType(), clang::APValue::LValuePathSerializationHelper::getType(), clang::TypeLoc::getType(), clang::Value::getType(), clang::APValue::LValueBase::getTypeInfoType(), and clang::TypeLoc::getTypePtr().
◆ getLocalCVRQualifiers()
unsigned clang::QualType::getLocalCVRQualifiers ( ) const | inline |
---|
◆ getLocalFastQualifiers()
unsigned clang::QualType::getLocalFastQualifiers ( ) const | inline |
---|
◆ getLocalQualifiers()
Qualifiers clang::QualType::getLocalQualifiers ( ) const | inline |
---|
◆ getLocalUnqualifiedType()
QualType clang::QualType::getLocalUnqualifiedType ( ) const | inline |
---|
◆ getNonLValueExprType()
Determine the type of a (typically non-lvalue) expression with the specified result type.
This routine should be used for expressions for which the return type is explicitly specified (e.g., in a cast or call) and isn't necessarily an lvalue. It removes a top-level reference (since there are no expressions of reference type) and deletes top-level cvr-qualifiers from non-class types (in C++) or all types (in C).
Definition at line 3521 of file Type.cpp.
References clang::ASTContext::getLangOpts(), clang::Type::getPointeeType(), getTypePtr(), getUnqualifiedType(), and isRecordType().
Referenced by clang::SemaOpenMP::ActOnOpenMPLoopInitialization(), clang::SemaHLSL::ActOnOutParamExpr(), clang::Sema::AddConversionCandidate(), clang::Sema::BuildCallToMemberFunction(), clang::Sema::BuildCallToObjectOfClassType(), clang::Sema::BuildCXXMemberCallExpr(), clang::Sema::BuildExpressionFromDeclTemplateArgument(), clang::Sema::BuildLiteralOperatorCall(), clang::Sema::BuildOverloadedArrowExpr(), clang::Sema::BuildVAArgExpr(), CheckConvertibilityForTypeTraits(), clang::Sema::CheckSingleAssignmentConstraints(), clang::Sema::CheckTemplateArgument(), clang::Sema::CreateOverloadedArraySubscriptExpr(), clang::Sema::CreateOverloadedBinOp(), clang::Sema::CreateOverloadedUnaryOp(), EvaluateBinaryTypeTrait(), EvaluateBooleanTypeTrait(), findOMPAllocatorHandleT(), clang::FunctionType::getCallResultType(), clang::ObjCMethodDecl::getSendResultType(), clang::InitializationSequence::Perform(), PerformConstructorInitialization(), clang::Sema::PerformImplicitConversion(), TryClassUnification(), and TryRefInitWithConversionFunction().
◆ getNonPackExpansionType()
QualType QualType::getNonPackExpansionType | ( | ) | const |
---|
Remove an outer pack expansion type (if any) from this type.
Used as part of converting the type of a declaration to the type of an expression that references that expression. It's meaningless for an expression to have a pack expansion type.
Definition at line 3514 of file Type.cpp.
References getTypePtr().
Referenced by clang::Sema::AttachTypeConstraint().
◆ getNonReferenceType()
QualType clang::QualType::getNonReferenceType ( ) const | inline |
---|
If Type is a reference type (e.g., const int&), returns the type that the reference refers to ("const int").
Otherwise, returns the type itself. This routine is used throughout Sema to implement C++ 5p6:
If an expression initially has the type "reference to T" (8.3.2, 8.5.3), the type is adjusted to "T" prior to any further analysis, the expression designates the object or function denoted by the reference, and the expression is an lvalue.
Definition at line 8139 of file Type.h.
References clang::Type::getPointeeType().
Referenced by clang::SemaOpenMP::ActOnOpenMPAlignedClause(), clang::SemaOpenMP::ActOnOpenMPCopyinClause(), clang::SemaOpenMP::ActOnOpenMPDependClause(), clang::SemaOpenMP::ActOnOpenMPFirstprivateClause(), clang::SemaOpenMP::ActOnOpenMPIdExpression(), clang::SemaOpenMP::ActOnOpenMPLastprivateClause(), clang::SemaOpenMP::ActOnOpenMPPrivateClause(), clang::Sema::ActOnParamDefaultArgumentError(), clang::SemaObjC::ActOnPropertyImplDecl(), clang::Sema::AddConversionCandidate(), AddObjCKeyValueCompletions(), clang::Sema::AddOverloadCandidate(), clang::CodeGen::CGOpenMPRuntimeGPU::adjustTargetSpecificDataForLambdas(), clang::Sema::BuildBuiltinOffsetOf(), clang::Sema::BuildCallToObjectOfClassType(), buildCapture(), clang::Sema::BuildCXXForRangeStmt(), clang::Sema::BuildCXXTypeConstructExpr(), buildDeclareReductionRef(), BuildImplicitBaseInitializer(), BuildImplicitMemberInitializer(), clang::Sema::BuildMemberReferenceExpr(), buildPromiseCall(), clang::Sema::BuiltinAddPointer(), clang::Sema::BuiltinDecay(), clang::Sema::BuiltinRemoveReference(), canCaptureVariableByCopy(), captureInBlock(), captureInLambda(), castToBase(), clang::CodeGen::CGOpenMPRuntime::checkAndEmitSharedLastprivateConditional(), checkCastFunctionType(), clang::Sema::CheckCompleteDecompositionDeclaration(), clang::Sema::CheckConditionVariable(), CheckDeductionConsistency(), clang::Sema::CheckExplicitlyDefaultedSpecialMember(), checkMapConflicts(), checkOpenMPIterationSpace(), clang::Sema::CheckTemplateArgument(), CheckTemplateArgumentAddressOfObjectOrFunction(), CheckTemplateArgumentIsCompatibleWithParameter(), CheckTemplateArgumentPointerToMember(), clang::SemaOpenACC::CheckVarIsPointerType(), clang::SemaCodeCompletion::CodeCompleteObjCMethodDeclSelector(), CompleteNonViableCandidate(), clang::Sema::ConstantFoldAttrArgs(), create_call_once(), create_call_once_funcptr_call(), createObjCPropertyGetter(), createPrivatesRecordDecl(), clang::InitializationSequence::Diagnose(), diagnoseAmbiguousConversion(), clang::SemaObjC::diagnoseARCUnbridgedCast(), DiagnoseBadConversion(), DiagnoseForRangeReferenceVariableCopies(), clang::Sema::DiagnoseInvalidExplicitObjectParameterInLambda(), DiagnoseNarrowingInInitList(), diagnoseNoViableConversion(), clang::SemaObjC::DiagnosePropertyAccessorMismatch(), emitBadConversionNotes(), emitCPPObjectAtomicSetterCall(), clang::CodeGen::CGOpenMPRuntime::emitLastprivateConditionalFinalUpdate(), clang::CodeGen::CGOpenMPRuntime::emitLastprivateConditionalInit(), emitPreCond(), clang::SemaObjC::EmitRelatedResultTypeNote(), emitStructSetterCall(), emitTaskPrivateMappingFunction(), clang::SemaOpenMP::EndOpenMPDSABlock(), EvaluateBinaryTypeTrait(), FindConversionForRefInit(), getAsRecordDecl(), clang::CFGImplicitDtor::getDestructorDecl(), clang::CXXMethodDecl::getFunctionObjectParameterType(), clang::Sema::getNamedReturnInfo(), clang::UnresolvedMemberExpr::getNamingClass(), clang::CodeGen::CodeGenModule::getOMPAllocateAlignment(), clang::dataflow::CachedConstAccessorsLattice< Base >::getOrCreateConstMethodReturnStorageLocation(), getParamType(), getVariableCategoryFromDecl(), clang::Sema::HandleFunctionTypeMismatch(), handleTrivialCopy(), hasCopyOrMoveCtorParam(), clang::TemplateDeclInstantiator::InstantiateTypedefNameDecl(), clang::interp::InterpretOffsetOf(), isAllowableExplicitConversion(), isFirstArgumentCompatibleWithType(), clang::SemaOpenMP::isOpenMPCapturedByRef(), clang::SemaOpenMP::isOpenMPCapturedDecl(), IsTypeModifiable(), isVariableAlreadyCapturedInScopeInfo(), loadToBegin(), clang::InitializationSequence::Perform(), clang::Sema::PerformContextualImplicitConversion(), clang::Sema::PerformImplicitConversion(), clang::APValue::printPretty(), clang::SemaObjC::ProcessPropertyDecl(), recordConversion(), clang::dataflow::transferSmartPointerLikeCachedDeref(), clang::Sema::tryCaptureVariable(), and TryObjectArgumentInitialization().
◆ getObjCGCAttr()
◆ getObjCLifetime()
Returns lifetime attribute of this type.
Definition at line 1433 of file Type.h.
References clang::Qualifiers::getObjCLifetime(), and getQualifiers().
Referenced by clang::Sema::ActOnFields(), clang::SemaObjC::ActOnProperty(), clang::SemaObjC::ActOnPropertyImplDecl(), clang::Sema::AddInitializerToDecl(), clang::Sema::BuildAtomicExpr(), clang::Sema::BuildCXXNew(), clang::Sema::BuildDeclRefExpr(), clang::SemaObjC::BuildInstanceMessage(), clang::SemaObjC::BuildIvarRefExpr(), clang::Sema::BuildPseudoDestructorExpr(), captureInBlock(), captureInLambda(), checkAllAtProps(), clang::Sema::CheckAllocatedType(), checkARCPropertyImpl(), clang::SemaARM::CheckARMBuiltinExclusiveCall(), clang::Sema::CheckAssignmentOperands(), clang::Sema::checkIllFormedTrivialABIStruct(), clang::SemaObjC::CheckObjCARCUnavailableWeakConversion(), clang::SemaObjC::CheckObjCConversion(), clang::Sema::CheckTemplateTypeArgument(), checkTrivialClassMembers(), clang::Sema::checkUnsafeAssigns(), clang::Sema::checkUnsafeExprAssigns(), clang::Sema::DefaultLvalueConversion(), DiagnoseRetainableFlexibleArrayMember(), EmitObjectDelete(), clang::findRetainCycleOwner(), clang::ASTContext::getByrefLifetime(), GetGCAttrTypeForType(), clang::SemaObjC::handlePreciseLifetimeAttr(), clang::SemaObjC::HandlePropertyInClassExtension(), inferARCWriteback(), isInvalidICRSource(), isNonTrivialToPrimitiveDefaultInitialize(), isNonWeakInMRRWithObjCWeak(), LookupMemberExpr(), PropertyMemoryAttribute(), pushTemporaryCleanup(), setImpliedPropertyAttributeForReadOnlyProperty(), shouldExtendReceiverForInnerPointerMessage(), transferARCOwnershipToDeclSpec(), and tryEmitARCCopyWeakInit().
◆ getPointerAuth()
◆ getQualifiers()
Qualifiers clang::QualType::getQualifiers ( ) const | inline |
---|
Retrieve the set of qualifiers applied to this type.
Definition at line 7976 of file Type.h.
References clang::Qualifiers::addFastQualifiers().
Referenced by clang::Sema::ActOnCXXDelete(), clang::Sema::ActOnFields(), clang::SemaObjC::actOnObjCTypeParam(), AddRecordMembersCompletionResults(), clang::applyObjCTypeArgs(), clang::ASTContext::BlockRequiresCopying(), clang::Sema::BuildCallExpr(), clang::Sema::BuildCallToMemberFunction(), clang::Sema::BuildDeclRefExpr(), clang::Sema::BuildFieldReferenceExpr(), BuildImplicitBaseInitializer(), clang::Sema::BuildMemberExpr(), BuildSimilarlyQualifiedPointerType(), clang::Sema::BuiltinChangeSignedness(), clang::Sema::CheckAllocatedType(), checkComplexDecomposition(), checkConditionalObjectPointersCompatibility(), checkConditionalPointerCompatibility(), clang::Sema::CheckExplicitlyDefaultedSpecialMember(), checkMemberDecomposition(), CheckOriginalCallArgDeduction(), clang::Sema::CheckPointerToMemberOperands(), checkVectorDecomposition(), clang::Sema::CreateBuiltinArraySubscriptExpr(), createPlaceholderSlot(), decomposeTypeForEH(), DeduceTemplateArgumentsByTypeMatch(), clang::Sema::DefineImplicitCopyAssignment(), clang::Sema::DefineImplicitMoveAssignment(), clang::InitializationSequence::Diagnose(), clang::Sema::DiagnoseAssignmentResult(), DiagnoseUninitializedUse(), emitBadConversionNotes(), clang::CodeGen::CGObjCRuntime::EmitInitOfCatchParam(), emitInitWithReductionInitializer(), EmitOMPAggregateInit(), EmitValToTemp(), clang::SemaObjC::FindCompositeObjCPointerType(), fixParamWithSpan(), getCommonArrayElementType(), clang::ASTContext::getDeclAlign(), clang::TypeName::getFullyQualifiedType(), getObjCLifetime(), getPointeeTypeText(), getPointerAuth(), clang::SemaObjC::handleExternallyRetainedAttr(), hasInconsistentOrSupersetQualifiersOf(), hasNonTrivialObjCLifetime(), hasStrongOrWeakObjCLifetime(), isAddressSpaceOverlapping(), isAtLeastAsQualifiedAs(), isMoreQualifiedThan(), isNonTrivialToPrimitiveCopy(), isNonTrivialToPrimitiveDefaultInitialize(), clang::Expr::isNullPointerConstant(), clang::Sema::isObjCPointerConversion(), clang::SemaObjC::isObjCWritebackConversion(), isQualificationConversionStep(), IsStructurallyEquivalent(), isSubstitutedType(), clang::isValidSwiftErrorResultType(), clang::ASTContext::mergeTypes(), clang::Sema::PerformImplicitConversion(), clang::Sema::PerformImplicitObjectArgumentInitialization(), clang::TreeTransform< Derived >::RebuildQualifiedType(), clang::Sema::RefersToMemberWithReducedAlignment(), RemoveAddressSpaceFromPtr(), ResolveConstructorOverload(), rewriteToObjCProperty(), StoreAnyExprIntoOneUnit(), TryDefaultInitialization(), clang::tryMakeVariablePseudoStrong(), TryObjectArgumentInitialization(), TryReferenceInit(), TryReferenceInitializationCore(), TryRefInitWithConversionFunction(), TryReinterpretCast(), TryStaticCast(), TryUserDefinedConversion(), and TypeInfoIsInStandardLibrary().
◆ getSingleStepDesugaredType()
QualType clang::QualType::getSingleStepDesugaredType ( const ASTContext & Context) const | inline |
---|
◆ getSplitDesugaredType()
SplitQualType clang::QualType::getSplitDesugaredType ( ) const | inline |
---|
◆ getSplitUnqualifiedType()
SplitQualType clang::QualType::getSplitUnqualifiedType ( ) const | inline |
---|
◆ getTypePtr()
const Type * clang::QualType::getTypePtr ( ) const | inline |
---|
Retrieves a pointer to the underlying (unqualified) type.
This function requires that the type not be NULL. If the type might be NULL, use the (slightly less efficient) [getTypePtrOrNull()](classclang%5F1%5F1QualType.html#adfc8b9030353f23f3091c3bee1148aa4)
.
Definition at line 7936 of file Type.h.
Referenced by clang::Sema::ActOnCastExpr(), clang::Sema::ActOnFields(), clang::SemaOpenMP::ActOnOpenMPDependClause(), addAssociatedClassesAndNamespaces(), clang::ASTContext::adjustObjCTypeParamBoundType(), clang::interp::Compiler< Emitter >::allocateLocal(), clang::interp::Compiler< Emitter >::allocateTemporary(), clang::Sema::BuildCXXNamedCast(), clang::Sema::BuildExpressionFromDeclTemplateArgument(), clang::Sema::CheckAddressOfOperand(), checkArrayExpressionDoesNotReferToUnitySize(), checkArrayExpressionDoesNotReferToWholeSize(), clang::SemaRISCV::CheckBuiltinFunctionCall(), clang::Sema::CheckCXXThrowOperand(), clang::Sema::CheckImplicitConversion(), checkIsValidOpenCLKernelParameter(), checkNoThrow(), CheckNullabilityTypeSpecifier(), clang::SemaObjC::CheckObjCConversion(), clang::SemaOpenMP::checkOpenMPDeclareVariantFunction(), CheckResourceHandle(), clang::SemaCodeCompletion::CodeCompleteMemberReferenceExpr(), clang::EnumDecl::completeDefinition(), clang::InterfaceKindVisitor::computeInterfaceKind(), clang::CodeGen::CodeGenTypes::ConvertRecordDeclType(), clang::ObjCTypeParamDecl::Create(), clang::TemplateTypeParmDecl::Create(), clang::interp::Program::createDescriptor(), clang::CodeGen::CodeGenModule::createOpenCLIntToSamplerConversion(), DiagnoseLocalRegisterBinding(), clang::Sema::DiagnoseUnusedButSetDecl(), clang::CodeGen::CodeGenModule::EmitVTableTypeMetadata(), encodeTypeForFunctionPointerAuth(), clang::TypePropertyCache< Private >::ensure(), FindVA(), clang::Sema::FixOverloadedFunctionReference(), clang::FunctionEffectsRef::get(), getBaseTypeIdentifier(), clang::ASTContext::getCanonicalType(), clang::CodeGen::CodeGenTypes::getCGRecordLayout(), getCommonNonSugarTypeNode(), clang::ASTContext::getCommonSugaredType(), getCurrentInstantiationOf(), clang::TypeName::getFullyQualifiedTemplateType(), clang::TypeName::getFullyQualifiedType(), clang::InjectedClassNameType::getInjectedTST(), getIntegerTypeForEnum(), getLastTemplateSpecType(), getLocalUnqualifiedType(), clang::SemaObjC::getMessageSendResultType(), getNonLValueExprType(), getNonPackExpansionType(), clang::interp::Program::getOrCreateDummy(), clang::interp::Program::getOrCreateRecord(), getRequiredQualification(), llvm::simplify_type< ::clang::QualType >::getSimplifiedValue(), getTypeAlignIfRequired(), GetTypeOfFunction(), clang::CanQual< T >::getTypePtr(), clang::TypeLoc::getTypePtr(), clang::ASTContext::getUsingType(), getUuidAttrOfType(), handleCallbackAttr(), clang::CodeGen::CGHLSLRuntime::handleGlobalVarDefinition(), clang::ASTNodeImporter::hasReturnTypeDeclaredInside(), clang::ASTImporter::Import(), clang::Sema::inferGslPointerAttribute(), clang::interp::interp__builtin_operator_new(), isCXX11PODType(), isCXX98PODType(), clang::CodeGen::ABIInfo::isHomogeneousAggregate(), clang::CodeGen::CodeGenModule::isInNoSanitizeList(), clang::Sema::IsMemberPointerConversion(), isNonTrivialToPrimitiveCopy(), isNonTrivialToPrimitiveDefaultInitialize(), clang::Type::isObjCARCImplicitlyUnretainedType(), IsOverloadOrOverrideImpl(), IsPossiblyOpaquelyQualifiedType(), clang::CodeGen::isSingleElementStruct(), IsStandardConversion(), clang::ASTImporter::IsStructurallyEquivalent(), isTrivialType(), isWebAssemblyExternrefType(), isWebAssemblyFuncrefType(), lookupPromiseType(), clang::Sema::MaybeBindToTemporary(), mayBeDynamicClass(), mayBeNotDynamicClass(), maybeTailCall(), clang::ASTContext::mergeObjCGCQualifiers(), clang::Sema::MergeTypedefNameDecl(), clang::ASTContext::mergeTypes(), clang::StmtIteratorBase::NextVA(), operator*(), operator->(), clang::InitializationSequence::Perform(), printIntegral(), processImplicitMapsWithDefaultMappers(), clang::SemaHLSL::ProcessResourceTypeAttributes(), rebuildAttributedTypeWithoutNullability(), clang::CodeGen::CodeGenModule::SetLLVMFunctionAttributesForDefinition(), typeIsPostfix(), clang::CodeGen::CodeGenTypes::UpdateCompletedType(), UseExcessPrecision(), clang::Value::Value(), clang::interp::Compiler< Emitter >::VisitCastExpr(), clang::interp::Compiler< Emitter >::VisitCXXNewExpr(), and clang::interp::Compiler< Emitter >::VisitCXXTypeidExpr().
◆ getTypePtrOrNull()
const Type * clang::QualType::getTypePtrOrNull ( ) const | inline |
---|
◆ getUnqualifiedType()
QualType clang::QualType::getUnqualifiedType ( ) const | inline |
---|
Retrieve the unqualified variant of the given type, removing as little sugar as possible.
This routine looks through various kinds of sugar to find the least-desugared type that is unqualified. For example, given:
typedef const Integer CInteger;
typedef CInteger DifferenceType;
Executing [getUnqualifiedType()](classclang%5F1%5F1QualType.html#a9163b7f9b8aa211925297f3096e80ba9 "Retrieve the unqualified variant of the given type, removing as little sugar as possible.")
on the type DifferenceType
will desugar until we hit the type Integer
, which has no qualifiers on it.
The resulting type might still be qualified if it's sugar for an array type. To strip qualifiers even from within a sugared array type, use ASTContext::getUnqualifiedArrayType.
Note: In C, the _Atomic qualifier is special (see C23 6.2.5p32 for details), and it is not stripped by this function. Use getAtomicUnqualifiedType() to strip qualifiers including _Atomic.
Definition at line 8030 of file Type.h.
Referenced by clang::Sema::ActOnCapScopeReturnStmt(), clang::Sema::ActOnCXXDelete(), clang::Sema::ActOnCXXTryBlock(), clang::SemaObjC::actOnObjCTypeParam(), clang::SemaOpenMP::ActOnOpenMPAlignedClause(), clang::SemaOpenMP::ActOnOpenMPCopyinClause(), clang::SemaOpenMP::ActOnOpenMPCopyprivateClause(), clang::SemaOpenMP::ActOnOpenMPFirstprivateClause(), clang::SemaOpenMP::ActOnOpenMPPrivateClause(), clang::Sema::ActOnStmtExprResult(), clang::Sema::AddConversionCandidate(), AdjustFunctionParmAndArgTypesForDeduction(), clang::applyObjCTypeArgs(), clang::Sema::BuildAtomicExpr(), clang::Sema::BuildBinOp(), clang::Sema::BuildCallToMemberFunction(), clang::Sema::BuildCXXTypeConstructExpr(), buildDeclareReductionRef(), BuildImplicitBaseInitializer(), BuildSimilarlyQualifiedPointerType(), buildUserDefinedMapperRef(), clang::SemaPPC::BuiltinPPCMMACall(), captureInCapturedRegion(), clang::Sema::CheckAllocatedType(), clang::SemaARM::CheckARMBuiltinExclusiveCall(), clang::Sema::CheckAssignmentOperands(), checkBlockPointerTypesForAssignment(), clang::SemaOpenCL::checkBuiltinEnqueueKernel(), clang::SemaRISCV::CheckBuiltinFunctionCall(), clang::SemaOpenCL::checkBuiltinNDRangeAndBlock(), clang::Sema::CheckCompareOperands(), clang::Sema::CheckCompletedCXXClass(), clang::Sema::CheckConditionalOperands(), checkConditionalPointerCompatibility(), CheckIncrementDecrementOperand(), clang::Sema::CheckLiteralOperatorDeclaration(), clang::Sema::CheckMatrixElementwiseOperands(), clang::Sema::CheckMatrixMultiplyOperands(), clang::SemaOpenMP::checkOpenMPDeclareVariantFunction(), CheckOriginalCallArgDeduction(), checkPointerAuthValue(), clang::Sema::CheckSingleAssignmentConstraints(), clang::Sema::CheckSizelessVectorConditionalTypes(), clang::Sema::CheckSizelessVectorOperands(), clang::Sema::CheckSubtractionOperands(), clang::Sema::CheckTemplateArgument(), checkTrivialSubobjectCall(), clang::Sema::checkTypeSupport(), clang::SemaOpenACC::CheckVarIsPointerType(), clang::Sema::CheckVectorConditionalTypes(), clang::Sema::CheckVectorOperands(), CompareDerivedToBaseConversions(), CompareStandardConversionSequences(), clang::dataflow::copyRecord(), decomposeTypeForEH(), DeduceForEachType(), clang::Sema::DeduceTemplateArguments(), clang::Sema::DiagnoseAssignmentEnum(), clang::Sema::DiagnoseAssignmentResult(), DiagnoseBadFunctionCast(), DiagnoseCastOfObjCSEL(), clang::Sema::DiagnoseInvalidExplicitObjectParameterInLambda(), FindConversionForRefInit(), FormatFunctionParameter(), getNonLValueExprType(), clang::SubstNonTypeTemplateParmExpr::getParameterType(), clang::CXXBaseSpecifier::getType(), handleDiagnoseAsBuiltinAttr(), HandleDynamicCast(), hasUserDefinedMapper(), clang::Sema::IsBlockPointerConversion(), clang::Sema::isInitListConstructor(), clang::CodeGen::CodeGenModule::isInNoSanitizeList(), isLayoutCompatible(), clang::SemaObjC::isObjCWritebackConversion(), isOpenCLSizeDependentType(), clang::Sema::IsQualificationConversion(), clang::ento::cocoa::isRefType(), clang::SemaHLSL::IsScalarizedLayoutCompatible(), IsStandardConversion(), clang::ASTContext::isTypeIgnoredBySanitizer(), isValidInteropVariable(), IsVoidStarType(), maybeAdjustInterfaceForSubscriptingCheck(), clang::ASTContext::mergeFunctionTypes(), clang::ASTContext::mergeTypes(), OpenCLConvertScalarsToVectors(), clang::InitializationSequence::Perform(), clang::Sema::PerformContextualImplicitConversion(), clang::Sema::PerformImplicitConversion(), clang::TemplateParamObjectDecl::printAsExpr(), clang::TreeTransform< Derived >::RebuildQualifiedType(), clang::dataflow::recordsEqual(), RemoveAddressSpaceFromPtr(), ResolveOverloadedFunctionForReferenceBinding(), rewriteToObjCProperty(), clang::Sema::tryCaptureVariable(), TryLValueToRValueCast(), TryRefInitWithConversionFunction(), TryStaticDowncast(), TryUserDefinedConversion(), TypeIsInnerPointer(), and clang::Sema::UsualArithmeticConversions().
◆ hasAddressSpace()
bool clang::QualType::hasAddressSpace ( ) const | inline |
---|
◆ hasLocalNonFastQualifiers()
bool clang::QualType::hasLocalNonFastQualifiers ( ) const | inline |
---|
Determine whether this particular QualType instance has any "non-fast" qualifiers, e.g., those that are stored in an ExtQualType instance.
Definition at line 1066 of file Type.h.
Referenced by hasLocalQualifiers().
◆ hasLocalQualifiers()
bool clang::QualType::hasLocalQualifiers ( ) const | inline |
---|
◆ hasNonTrivialObjCLifetime()
bool clang::QualType::hasNonTrivialObjCLifetime ( ) const | inline |
---|
◆ hasNonTrivialToPrimitiveCopyCUnion()
bool clang::QualType::hasNonTrivialToPrimitiveCopyCUnion ( ) const | inline |
---|
Check if this is or contains a C union that is non-trivial to copy, which is a union that has a member that is non-trivial to copy.
If this returns true, isNonTrivialToPrimitiveCopy returns PCK_Struct.
Definition at line 8083 of file Type.h.
References getAsRecordDecl().
Referenced by clang::Sema::ActOnBlockStmtExpr(), clang::Sema::ActOnFields(), clang::Sema::ActOnFunctionDeclarator(), clang::Sema::AddInitializerToDecl(), clang::Sema::BuildCompoundLiteralExpr(), clang::Sema::CheckLValueToRValueConversionOperand(), clang::Sema::checkNonTrivialCUnion(), clang::Sema::checkNonTrivialCUnionInInitializer(), clang::Sema::CheckParameter(), clang::Sema::CreateBuiltinBinOp(), and markEscapingByrefs().
◆ hasNonTrivialToPrimitiveDefaultInitializeCUnion()
bool clang::QualType::hasNonTrivialToPrimitiveDefaultInitializeCUnion ( ) const | inline |
---|
◆ hasNonTrivialToPrimitiveDestructCUnion()
bool clang::QualType::hasNonTrivialToPrimitiveDestructCUnion ( ) const | inline |
---|
Check if this is or contains a C union that is non-trivial to destruct, which is a union that has a member that is non-trivial to destruct.
If this returns true, isDestructedType returns DK_nontrivial_c_struct.
Definition at line 8077 of file Type.h.
References getAsRecordDecl().
Referenced by clang::Sema::ActOnBlockStmtExpr(), clang::Sema::ActOnFields(), clang::Sema::ActOnFunctionDeclarator(), clang::Sema::ActOnVariableDeclarator(), clang::Sema::BuildCompoundLiteralExpr(), clang::Sema::CheckLValueToRValueConversionOperand(), clang::Sema::checkNonTrivialCUnion(), clang::Sema::CheckParameter(), and markEscapingByrefs().
◆ hasQualifiers()
bool clang::QualType::hasQualifiers ( ) const | inline |
---|
Determine whether this type has any qualifiers.
Definition at line 8025 of file Type.h.
Referenced by clang::SemaObjC::actOnObjCTypeParam(), clang::SemaOpenMP::ActOnOpenMPDeclareReductionType(), AdjustFunctionParmAndArgTypesForDeduction(), clang::Sema::CheckDeductionGuideDeclarator(), clang::Sema::CheckTemplateArgument(), clang::Sema::CreateBuiltinArraySubscriptExpr(), clang::Sema::CreateGenericSelectionExpr(), fixParamWithSpan(), GetFullTypeForDeclarator(), getPointeeTypeText(), clang::Sema::IsBlockPointerConversion(), clang::ASTContext::mergeFunctionTypes(), and TryUserDefinedConversion().
◆ hasStrongOrWeakObjCLifetime()
bool clang::QualType::hasStrongOrWeakObjCLifetime ( ) const | inline |
---|
◆ IgnoreParens()
QualType clang::QualType::IgnoreParens ( ) const | inline |
---|
◆ isAddressSpaceOverlapping()
◆ isAtLeastAsQualifiedAs()
Determine whether this type is at least as qualified as the other given type, requiring exact equality for non-CVR qualifiers.
Determine whether this type is at last as qualified as the Other type.
For example, "const volatile int" is at least as qualified as "const int", "volatile int", "int", and "const volatile int".
Definition at line 8119 of file Type.h.
References getQualifiers(), and clang::Qualifiers::removeUnaligned().
Referenced by clang::SemaARM::CheckARMBuiltinExclusiveCall(), checkObjCPointerTypesForAssignment(), clang::Sema::CheckOverridingFunctionReturnType(), clang::CanQual< T >::isAtLeastAsQualifiedAs(), clang::Sema::isObjCPointerConversion(), TryClassUnification(), and TryObjectArgumentInitialization().
◆ isBitwiseCloneableType()
bool QualType::isBitwiseCloneableType | ( | const ASTContext & | Context | ) | const |
---|
Return true if the type is safe to bitwise copy using memcpy/memmove.
This is an extension in clang: bitwise cloneable types act as trivially copyable types, meaning their underlying bytes can be safely copied by memcpy or memmove. After the copy, the destination object has the same object representation.
However, there are cases where it is not safe to copy:
- When sanitizers, such as AddressSanitizer, add padding with poison, which can cause issues if those poisoned padding bits are accessed.
- Types with Objective-C lifetimes, where specific runtime semantics may not be preserved during a bitwise copy.
Definition at line 2802 of file Type.cpp.
References clang::ASTContext::getBaseElementType(), getCanonicalType(), and isBitwiseCloneableType().
Referenced by isBitwiseCloneableType().
◆ isCanonical()
bool clang::QualType::isCanonical ( ) const | inline |
---|
Definition at line 7993 of file Type.h.
References clang::Type::isCanonicalUnqualified().
Referenced by checkBlockPointerTypesForAssignment(), checkObjCPointerTypesForAssignment(), checkPointerTypesForAssignment(), clang::Sema::CheckTemplateIdType(), clang::ASTContext::getArrayParameterType(), clang::ASTContext::getCommonSugaredType(), clang::ASTContext::getConstantArrayType(), clang::ASTContext::getConstantMatrixType(), clang::ASTContext::getElaboratedType(), clang::ASTContext::getExtVectorType(), clang::ASTContext::getIncompleteArrayType(), clang::ASTContext::getMacroQualifiedType(), clang::ASTContext::getObjCObjectPointerType(), clang::ASTContext::getObjCObjectType(), clang::ASTContext::getPackExpansionType(), clang::ASTContext::getParenType(), clang::ASTContext::getVariableArrayType(), clang::ASTContext::getVectorType(), isCanonicalExceptionSpecification(), and clang::Sema::MergeFunctionDecl().
◆ isCanonicalAsParam()
bool clang::QualType::isCanonicalAsParam ( ) const | inline |
---|
◆ isCForbiddenLValueType()
bool clang::QualType::isCForbiddenLValueType ( ) const | inline |
---|
◆ isConstant()
bool clang::QualType::isConstant ( const ASTContext & Ctx) const | inline |
---|
Definition at line 1089 of file Type.h.
References isConstant().
Referenced by clang::SemaOpenMP::ActOnOpenMPDetachClause(), clang::SemaOpenMP::ActOnOpenMPFirstprivateClause(), clang::SemaOpenMP::ActOnOpenMPUsesAllocatorClause(), clang::interp::CheckConstant(), checkFormatStringExpr(), findCompleteObject(), clang::CodeGen::CodeGenModule::getOrCreateStaticVarDecl(), handleLValueToRValueConversion(), isConstant(), isNonConstantStorage(), and clang::MaterializeTemporaryExpr::isUsableInConstantExpressions().
◆ isConstantStorage()
◆ isConstQualified()
bool clang::QualType::isConstQualified ( ) const | inline |
---|
Determine whether this type is const-qualified.
Examples
Definition at line 8009 of file Type.h.
Referenced by clang::Sema::ActOnEndOfTranslationUnit(), clang::Sema::ActOnFinishFunctionBody(), clang::SemaObjC::ActOnObjCForCollectionStmt(), clang::Sema::ActOnVariableDeclarator(), clang::Sema::AddInitializerToDecl(), alignReferenceTypes(), clang::interp::Compiler< Emitter >::allocateLocal(), clang::interp::Compiler< Emitter >::allocateTemporary(), appendQualifier(), clang::ast_matchers::libc_func_matchers::AST_MATCHER(), clang::ast_matchers::libc_func_matchers::AST_MATCHER_P(), basicGVALinkageForVariable(), clang::Sema::BuildAtomicExpr(), BuildImplicitMemberInitializer(), captureInCapturedRegion(), clang::Sema::CheckExplicitlyDefaultedSpecialMember(), clang::Sema::CheckLiteralOperatorDeclaration(), decomposeTypeForEH(), clang::Sema::DefineImplicitCopyAssignment(), clang::Sema::DefineImplicitMoveAssignment(), DiagnoseForRangeVariableCopies(), clang::SemaSwift::DiagnoseName(), diagnoseOpenCLTypes(), DiagnoseRecursiveConstFields(), emitReadOnlyPlacementAttrWarning(), clang::ento::ExprEngine::evalCall(), evaluateLValueAsAllocSize(), findSubobject(), clang::CodeGen::CodeGenModule::GenKernelArgMetadata(), clang::interp::Program::getOrCreateRecord(), getSubobjectType(), clang::ento::MemRegionManager::getVarRegion(), clang::consumed::ConsumedStmtVisitor::handleCall(), clang::Sema::handlerCanCatch(), clang::RecordType::hasConstFields(), clang::SemaCUDA::IdentifyTarget(), isPointerToConst(), isReferenceToNonConstCapture(), IsTypeModifiable(), isVoidPointerToNonConst(), MarkVarDeclODRUsed(), clang::analyze_format_string::ArgType::matchesType(), clang::SemaCUDA::MaybeAddConstantAttr(), ShouldDiagnoseSwitchCaseNotInEnum(), clang::Sema::SpecialMemberIsTrivial(), clang::Sema::tryCaptureVariable(), TryConstructorInitialization(), TryDefaultInitialization(), TryListConversion(), TryReferenceInit(), tryRemoveRetainOfSelf(), clang::ento::UndefOrNullArgVisitor::VisitNode(), and clang::interp::Compiler< Emitter >::visitVarDecl().
◆ isCXX11PODType()
Return true if this is a POD type according to the more relaxed rules of the C++11 standard, regardless of the current compilation's language.
(C++0x [basic.types]p9). Note that, unlike CXXRecordDecl::isCXX11StandardLayout, this takes DRs into account.
Definition at line 3054 of file Type.cpp.
References clang::Type::getAs(), clang::Type::getBaseElementTypeUnsafe(), getTypePtr(), hasNonTrivialObjCLifetime(), clang::Type::isDependentType(), clang::Type::isIncompleteType(), clang::Type::isScalarType(), clang::Type::isSizelessBuiltinType(), and clang::Type::isVectorType().
Referenced by isPODType().
◆ isCXX98PODType()
◆ isDestructedType()
Returns a nonzero value if objects of this type require non-trivial work to clean up after.
Non-zero because it's conceivable that qualifiers (objc_gc(weak)?) could make something require destruction.
Definition at line 1531 of file Type.h.
Referenced by clang::Sema::ActOnCXXDelete(), clang::Sema::ActOnFields(), clang::ASTContext::BlockRequiresCopying(), clang::Sema::BuildCompoundLiteralExpr(), checkDestructorsRequired(), CheckLValueConstantExpression(), checkNoThrow(), clang::Sema::checkVariadicArgument(), clang::Sema::DefaultLvalueConversion(), clang::CodeGen::CGObjCRuntime::destroyCalleeDestroyedArguments(), EmitArrayDelete(), clang::CodeGen::ReductionCodeGen::emitCleanups(), EmitMemberInitializer(), clang::CodeGen::CGOpenMPRuntime::emitThreadPrivateVarDefinition(), clang::ParmVarDecl::isDestroyedInCallee(), isTriviallyRelocatableType(), clang::Sema::isValidVarArgType(), clang::Sema::MaybeBindToTemporary(), clang::CodeGen::ReductionCodeGen::needCleanups(), clang::VarDecl::needsDestruction(), clang::InitializationSequence::Perform(), pushCaptureCleanup(), clang::CodeGen::CGCXXABI::requiresArrayCookie(), and clang::DestructedTypeVisitor< Derived, RetTy >::visit().
◆ isLocalConstQualified()
bool clang::QualType::isLocalConstQualified ( ) const | inline |
---|
◆ isLocalRestrictQualified()
bool clang::QualType::isLocalRestrictQualified ( ) const | inline |
---|
◆ isLocalVolatileQualified()
bool clang::QualType::isLocalVolatileQualified ( ) const | inline |
---|
◆ isMoreQualifiedThan()
◆ isNonConstantStorage()
◆ isNonTrivialToPrimitiveCopy()
Check if this is a non-trivial type that would cause a C struct transitively containing this type to be non-trivial to copy and return the kind.
Definition at line 2915 of file Type.cpp.
References clang::Qualifiers::getObjCLifetime(), getQualifiers(), getTypePtr(), clang::Qualifiers::hasVolatile(), clang::Qualifiers::OCL_Strong, clang::Qualifiers::OCL_Weak, PCK_ARCStrong, PCK_ARCWeak, PCK_Struct, PCK_Trivial, and PCK_VolatileTrivial.
Referenced by clang::Sema::ActOnFields(), isNonTrivialToPrimitiveDestructiveMove(), and clang::CopiedTypeVisitor< Derived, IsMove, RetTy >::visit().
◆ isNonTrivialToPrimitiveDefaultInitialize()
Functions to query basic properties of non-trivial C struct types.
Check if this is a non-trivial type that would cause a C struct transitively containing this type to be non-trivial to default initialize and return the kind.
Definition at line 2899 of file Type.cpp.
References getObjCLifetime(), getQualifiers(), getTypePtr(), clang::Qualifiers::OCL_Strong, clang::Qualifiers::OCL_Weak, PDIK_ARCStrong, PDIK_ARCWeak, PDIK_Struct, and PDIK_Trivial.
Referenced by clang::Sema::ActOnFields(), and clang::DefaultInitializedTypeVisitor< Derived, RetTy >::visit().
◆ isNonTrivialToPrimitiveDestructiveMove()
◆ isNonWeakInMRRWithObjCWeak()
bool QualType::isNonWeakInMRRWithObjCWeak | ( | const ASTContext & | Context | ) | const |
---|
◆ isNull()
bool clang::QualType::isNull ( ) const | inline |
---|
Return true if this QualType doesn't point to a type yet.
Examples
Definition at line 996 of file Type.h.
Referenced by clang::SemaOpenACC::ActOnArraySectionExpr(), clang::Sema::ActOnArraySubscriptExpr(), clang::Sema::ActOnBlockStmtExpr(), clang::Sema::ActOnBuiltinOffsetOf(), clang::Sema::ActOnCapScopeReturnStmt(), clang::SemaObjC::ActOnClassMessage(), clang::SemaObjC::ActOnClassPropertyRefExpr(), clang::Sema::ActOnConditionalOp(), clang::Sema::ActOnDependentIdExpression(), clang::Sema::ActOnExplicitInstantiation(), clang::SemaOpenACC::ActOnForStmtBegin(), clang::Sema::ActOnGCCAsmStmt(), clang::Sema::ActOnLambdaExpressionAfterIntroducer(), clang::SemaObjC::ActOnMethodDeclaration(), clang::Sema::ActOnNumericConstant(), clang::SemaObjC::ActOnObjCForCollectionStmt(), clang::SemaObjC::actOnObjCTypeArgsAndProtocolQualifiers(), clang::SemaObjC::actOnObjCTypeArgsOrProtocolQualifiers(), clang::SemaOpenMP::ActOnOMPArraySectionExpr(), clang::SemaOpenMP::ActOnOpenMPCall(), clang::SemaOpenMP::ActOnOpenMPDeclareMapperType(), clang::SemaOpenMP::ActOnOpenMPDeclareReductionType(), clang::SemaOpenMP::ActOnOpenMPDependClause(), clang::SemaOpenMP::ActOnOpenMPUsesAllocatorClause(), clang::Sema::ActOnPseudoDestructorExpr(), clang::SemaOpenMP::ActOnStartOfFunctionDefinitionInOpenMPDeclareVariantScope(), clang::SemaObjC::ActOnSuperClassOfClassInterface(), clang::SemaObjC::ActOnSuperMessage(), clang::Sema::ActOnTemplateIdType(), clang::Sema::ActOnTypeRequirement(), clang::SemaSYCL::ActOnUniqueStableNameExpr(), clang::Sema::ActOnUsingEnumDeclaration(), clang::Sema::AddFunctionCandidates(), clang::Sema::AddInitializerToDecl(), clang::Sema::AddMethodCandidate(), clang::Sema::AddMethodTemplateCandidate(), clang::Sema::AddModeAttr(), AddObjCKeyValueCompletions(), AddOrdinaryNameResults(), AddResultTypeChunk(), addThisCompletion(), clang::Sema::adjustCCAndNoReturn(), AdjustFunctionParmAndArgTypesForDeduction(), clang::interp::Compiler< Emitter >::allocateLocal(), allowAmbiguity(), clang::ASTContext::areCommonBaseCompatible(), assertEqualBitWidths(), clang::ento::ProgramState::assumeInBoundDual(), clang::ast_matchers::libc_func_matchers::AST_MATCHER_P(), clang::ast_matchers::AST_POLYMORPHIC_MATCHER_P_OVERLOAD(), clang::SemaObjC::BuildClassMessageImplicit(), buildCoroutineHandle(), clang::Sema::BuildCXXNestedNameSpecifier(), clang::Sema::BuildCXXNew(), clang::Sema::BuildCXXTypeConstructExpr(), clang::Sema::BuildDeclarationNameExpr(), clang::Sema::BuildDeclaratorGroup(), clang::Sema::BuildExpressionFromDeclTemplateArgument(), clang::Sema::BuildImplicitMemberExpr(), clang::SemaObjC::BuildInstanceMessage(), clang::Sema::buildLambdaInitCaptureInitialization(), clang::Sema::BuildMemInitializer(), clang::SemaObjC::BuildObjCDictionaryLiteral(), clang::SemaObjC::BuildObjCEncodeExpression(), clang::SemaObjC::BuildObjCStringLiteral(), clang::Sema::BuildReturnStmt(), BuildSimilarlyQualifiedPointerType(), clang::Sema::BuildVAArgExpr(), BuiltinAddressof(), clang::Sema::BuiltinChangeSignedness(), clang::Sema::BuiltinVectorMath(), clang::Sema::canDelayFunctionBody(), clang::Sema::canThrow(), clang::Sema::CheckAdditionOperands(), clang::Sema::CheckAssignmentOperands(), clang::Sema::CheckBitwiseOperands(), checkBuiltinTemplateIdType(), clang::Sema::CheckConditionalOperands(), checkConditionalPointerCompatibility(), checkDeducedTemplateArguments(), CheckDeductionConsistency(), clang::Sema::CheckDestructorAccess(), clang::Sema::CheckExplicitlyDefaultedComparison(), clang::Sema::CheckExplicitlyDefaultedSpecialMember(), CheckIncrementDecrementOperand(), clang::SemaObjC::checkInitMethod(), CheckKeyForObjCARCConversion(), clang::Sema::CheckMultiplyDivideOperands(), clang::Sema::CheckNonDependentConversions(), clang::SemaOpenMP::checkOpenMPDeclareVariantFunction(), clang::Sema::CheckOverridingFunctionReturnType(), clang::Sema::CheckRemainderOperands(), clang::Sema::CheckSizelessVectorCompareOperands(), clang::Sema::CheckSubtractionOperands(), clang::Sema::CheckTemplateArgument(), clang::Sema::CheckTemplateIdType(), checkTupleLikeDecomposition(), clang::Sema::checkTypeSupport(), clang::Sema::checkUnsafeExprAssigns(), clang::Sema::CheckVariableDeclarationType(), clang::Sema::CheckVectorCompareOperands(), clang::Sema::CheckVectorLogicalOperands(), ClassifyImplicitMemberAccess(), clang::SemaCodeCompletion::CodeCompleteDesignator(), clang::SemaCodeCompletion::CodeCompleteMemberReferenceExpr(), clang::SemaCodeCompletion::CodeCompleteObjCClassMessage(), clang::SemaCodeCompletion::CodeCompleteObjCInstanceMessage(), clang::SemaCodeCompletion::CodeCompleteObjCMethodDecl(), clang::SemaCodeCompletion::CodeCompleteQualifiedId(), clang::Sema::containsUnexpandedParameterPacks(), ConvertTypeToDiagnosticString(), create_call_once(), clang::Sema::CreateBuiltinBinOp(), clang::Sema::CreateBuiltinUnaryOp(), clang::CodeCompletionResult::createCodeCompletionStringForDecl(), clang::CreateHLSLAttributedResourceType(), clang::Sema::CXXCheckConditionalOperands(), decomposeTypeForEH(), clang::Sema::DeduceAutoType(), clang::Sema::deduceClosureReturnType(), clang::Sema::DeduceTemplateArguments(), clang::Sema::deduceVarTypeFromInitializer(), clang::Sema::DefaultArgumentPromotion(), clang::Sema::DefaultFunctionArrayConversion(), determineEndOffset(), clang::Sema::DiagnoseAlwaysNonNullPointer(), DiagnoseBadDeduction(), DiagnoseForRangeReferenceVariableCopies(), clang::ODRDiagsEmitter::diagnoseMismatch(), clang::ento::SMTConv::doIntTypeConversion(), clang::ento::SMTConv::doTypeConversion(), EmitAsmStores(), clang::CodeGen::CGOpenMPRuntime::emitDoacrossInit(), clang::CodeGen::CGOpenMPRuntime::emitTaskInit(), encodeTypeForFunctionPointerAuth(), clang::ento::StoreManager::evalBaseToDerived(), clang::ento::retaincountchecker::RetainCountChecker::evalCall(), clang::ento::ExprEngine::evalCall(), clang::ento::ExprEngine::evalLoad(), EvaluateAsRValue(), evaluateCDTSize(), FastEvaluateAsRValue(), clang::Sema::FindCompositePointerType(), FindDesignatorMismatch(), FindImplementableMethods(), findOMPAllocatorHandleT(), findOMPAlloctraitT(), findOMPDependT(), findOMPEventHandleT(), FinishForRangeVarDecl(), clang::Sema::FinishTemplateArgumentDeduction(), fixVarDeclWithArray(), generateDiagnosticsForCallLike(), clang::FunctionEffectsRef::get(), clang::ASTContext::getAutoDeductType(), clang::ASTContext::getAutoRRefDeductType(), clang::CallExpr::getCallReturnType(), clang::ASTContext::getCommentForDecl(), clang::Sema::getCurrentThisType(), clang::ento::CXXInstanceCall::getDeclForDynamicType(), clang::ASTContext::getDependentNameType(), getDependTypes(), getDesignatedType(), clang::Sema::getDestructorName(), clang::Sema::getDestructorTypeForDecltype(), GetEnumUnderlyingType(), getExistingLazyBinding(), clang::extractapi::DeclarationFragmentsBuilder::getFragmentsForEnum(), GetFullTypeForDeclarator(), clang::Decl::getFunctionType(), getGlobalStreamPointerByName(), clang::ClassTemplateDecl::getInjectedClassNameSpecialization(), getKmpAffinityType(), getLambdaType(), clang::ento::StoreManager::getLValueElement(), getMostInformativeDerivedClassImpl(), clang::Sema::getMostSpecialized(), clang::Sema::GetNameFromUnqualifiedId(), clang::CodeGen::CodeGenModule::getObjCFastEnumerationStateType(), clang::Type::getObjCSubstitutions(), clang::ASTContext::getObjCSuperType(), clang::dataflow::CachedConstAccessorsLattice< Base >::getOrCreateConstMethodReturnStorageLocation(), clang::interp::Program::getOrCreateDummy(), clang::dataflow::DataflowAnalysisContext::getOrCreateNullPointerValue(), getParamType(), getPointerAuthInfoForPointeeType(), getPreferredArgumentTypeForMessageSend(), getPrettyTypeName(), getPrivateItem(), clang::ASTContext::getPromotedIntegerType(), clang::ento::ObjCMethodCall::getRuntimeDefinition(), clang::ObjCObjectPointerType::getSuperClassType(), clang::ASTContext::getTemplateSpecializationType(), clang::Sema::getTrivialTemplateArgumentLoc(), clang::ASTContext::getTypedefType(), clang::Sema::GetTypeFromParser(), clang::ASTContext::getUsingType(), clang::ento::MemRegionManager::getVarRegion(), HandleAddressSpaceTypeAttribute(), clang::Sema::HandleDependentAccessCheck(), clang::Sema::HandleFunctionTypeMismatch(), clang::CompletionContextHandler::handleKeyword(), clang::SemaObjC::handleXReturnsXRetainedAttr(), hasBPFPreserveStaticOffset(), clang::HLSLAttributedResourceType::hasContainedType(), hasNonTrivialConstructorCall(), clang::ASTContext::hasUniqueObjectRepresentations(), HelperIsMethodInObjCType(), clang::ASTImporter::Import(), clang::ASTReader::InitializeContext(), clang::InitializationSequence::InitializeFrom(), instantiateOMPDeclareVariantAttr(), clang::interp::interp__builtin_operator_new(), clang::comments::DeclInfo::involvesFunctionType(), IsAcceptableNonMemberOperatorCandidate(), isCXX98PODType(), clang::Declarator::isDeclarationOfFunction(), clang::DeducedType::isDeduced(), isImplicitMapperNeeded(), isIndirectPointerType(), clang::CodeGen::CodeGenModule::isInNoSanitizeList(), isLayoutCompatible(), clang::CanQual< T >::isNull(), clang::SemaOpenMP::isOpenMPCapturedDecl(), isOSObjectRelated(), isPointerToConst(), isPointerToObject(), clang::FunctionDecl::isReplaceableGlobalAllocationFunction(), clang::SemaHLSL::IsScalarizedLayoutCompatible(), IsStructurallyEquivalent(), isSubstitutedType(), clang::DeducedType::isSugared(), clang::Sema::isThisOutsideMemberFunctionBody(), isTrivialType(), clang::SemaHLSL::IsTypedResourceElementCompatible(), clang::ento::DynamicTypeInfo::isValid(), clang::SemaObjC::isValidOSObjectOutParameter(), clang::isValidSubjectOfOSAttribute(), clang::Sema::LazilyCreateBuiltin(), lookupCoroutineHandleType(), clang::ComparisonCategories::lookupInfoForType(), LookupMemberExpr(), clang::Sema::LookupParsedName(), lookupPromiseType(), lookupStdTypeTraitMember(), clang::Sema::LookupTemplateName(), clang::analyze_format_string::ArgType::makeVectorType(), maybeAdjustInterfaceForSubscriptingCheck(), mergeEnumWithInteger(), clang::Sema::MergeFunctionDecl(), clang::ASTContext::mergeFunctionParameterTypes(), clang::ASTContext::mergeFunctionTypes(), clang::ASTContext::mergeObjCGCQualifiers(), clang::ASTContext::mergeTransparentUnionType(), clang::ASTContext::mergeTypes(), clang::Sema::MergeVarDeclTypes(), OpenCLCheckVectorConditional(), OpenCLConvertScalarsToVectors(), clang::SemaObjC::ParseObjCProtocolExpression(), clang::Sema::PerformContextualImplicitConversion(), clang::Sema::PerformImplicitConversion(), clang::Sema::PerformImplicitObjectArgumentInitialization(), clang::ento::retaincountchecker::RefVal::print(), clang::APValue::printPretty(), ProcessAPINotes(), clang::ento::ExprEngine::processCallExit(), processImplicitMapsWithDefaultMappers(), clang::SemaCodeCompletion::ProduceCallSignatureHelp(), clang::TypedefType::Profile(), clang::ASTRecordReader::readTypeSourceInfo(), clang::TreeTransform< Derived >::RebuildUnresolvedUsingType(), recoverFromMSUnqualifiedLookup(), REGISTER_MAP_WITH_PROGRAMSTATE(), clang::CodeGen::SanitizerMetadata::reportGlobal(), ResolveOverloadForDeduction(), rewriteToNSMacroDecl(), clang::SemaObjC::SelectorsForTypoCorrection(), clang::InitializationSequence::SetFailed(), clang::ASTContext::setObjCConstantStringInterface(), clang::Expr::setType(), shouldNotPrintDirectly(), clang::Sema::SubstituteExplicitTemplateArguments(), clang::Sema::SubstType(), clang::Sema::SubstTypeConstraint(), throwEscapes(), clang::interp::Pointer::toRValue(), clang::TreeTransform< Derived >::TransformDeclarationNameInfo(), clang::TreeTransform< Derived >::TransformFunctionProtoType(), clang::TreeTransform< Derived >::TransformFunctionTypeParams(), clang::TreeTransform< Derived >::TransformReferenceType(), clang::TreeTransform< Derived >::TransformTemplateArgument(), clang::TreeTransform< Derived >::TransformTemplateName(), clang::SemaOpenMP::tryCaptureOpenMPLambdas(), clang::Sema::tryExprAsCall(), TryOrBuildParenListInitialization(), tryRearrange(), TryReinterpretCast(), TryToFixInvalidVariablyModifiedType(), TryToFixInvalidVariablyModifiedTypeSourceInfo(), tryToInvalidateFReadBufferByElements(), clang::Sema::tryToRecoverWithCall(), clang::ASTContext::typesAreBlockPointerCompatible(), clang::ASTContext::typesAreCompatible(), UnwrapTypeForDebugInfo(), clang::Sema::UsualArithmeticConversions(), clang::Sema::UsualUnaryConversions(), clang::FunctionCallFilterCCC::ValidateCandidate(), clang::interp::Compiler< Emitter >::visit(), clang::interp::Compiler< Emitter >::VisitCastExpr(), clang::UsedDeclVisitor< Derived >::VisitCXXDeleteExpr(), clang::ASTDeclReader::VisitDeclaratorDecl(), clang::ASTNodeTraverser< Derived, NodeDelegateType >::VisitHLSLAttributedResourceType(), clang::ASTNodeImporter::VisitTypedefNameDecl(), and clang::interp::Compiler< Emitter >::visitVarDecl().
◆ isObjCGCStrong()
bool clang::QualType::isObjCGCStrong ( ) const | inline |
---|
◆ isObjCGCWeak()
bool clang::QualType::isObjCGCWeak ( ) const | inline |
---|
◆ isPODType()
◆ isReferenceable()
bool clang::QualType::isReferenceable ( ) const | inline |
---|
◆ isRestrictQualified()
bool clang::QualType::isRestrictQualified ( ) const | inline |
---|
◆ isTriviallyCopyableType()
bool QualType::isTriviallyCopyableType | ( | const ASTContext & | Context | ) | const |
---|
◆ isTriviallyCopyConstructibleType()
bool QualType::isTriviallyCopyConstructibleType | ( | const ASTContext & | Context | ) | const |
---|
◆ isTriviallyRelocatableType()
bool QualType::isTriviallyRelocatableType | ( | const ASTContext & | Context | ) | const |
---|
◆ isTrivialType()
◆ isVolatileQualified()
bool clang::QualType::isVolatileQualified ( ) const | inline |
---|
Determine whether this type is volatile-qualified.
Definition at line 8020 of file Type.h.
Referenced by clang::Sema::ActOnFields(), clang::Sema::AddInitializerToDecl(), appendQualifier(), basicGVALinkageForVariable(), clang::Sema::BuildFunctionType(), clang::SemaPPC::BuiltinPPCMMACall(), clang::Sema::CheckAssignmentOperands(), CheckC23ConstexprVarType(), clang::Sema::CheckExplicitlyDefaultedSpecialMember(), CheckIdentityFieldAssignment(), CheckIncrementDecrementOperand(), clang::Sema::CheckLiteralOperatorDeclaration(), clang::Sema::CheckLValueToRValueConversionOperand(), clang::Sema::CheckUnusedVolatileAssignment(), clang::interp::CheckVolatile(), CollectVRQualifiers(), decomposeTypeForEH(), clang::InitializationSequence::Diagnose(), DiagnoseSelfAssignment(), EmitCheckedMixedSignMultiply(), EmitCheckedUnsignedMultiplySignedResult(), emitOMPAtomicCompareExpr(), findCompleteObject(), findSubobject(), clang::CodeGen::CodeGenModule::GenKernelArgMetadata(), getBlockCaptureStr(), clang::Sema::getNamedReturnInfo(), getSubobjectType(), clang::Sema::handlerCanCatch(), clang::Expr::HasSideEffects(), clang::Expr::isUnusedResultAWarning(), clang::MaterializeTemporaryExpr::isUsableInConstantExpressions(), clang::AtomicExpr::isVolatile(), MaybeDecrementCount(), TryListConversion(), and TryReferenceInit().
◆ isWebAssemblyExternrefType()
bool QualType::isWebAssemblyExternrefType | ( | ) | const |
---|
◆ isWebAssemblyFuncrefType()
bool QualType::isWebAssemblyFuncrefType | ( | ) | const |
---|
◆ isWebAssemblyReferenceType()
bool QualType::isWebAssemblyReferenceType | ( | ) | const |
---|
◆ mayBeDynamicClass()
bool QualType::mayBeDynamicClass | ( | ) | const |
---|
◆ mayBeNotDynamicClass()
bool QualType::mayBeNotDynamicClass | ( | ) | const |
---|
◆ operator*()
const Type & clang::QualType::operator* ( ) const | inline |
---|
◆ operator->()
const Type * clang::QualType::operator-> ( ) const | inline |
---|
◆ print() [1/3]
◆ print() [2/3]
void QualType::print | ( | raw_ostream & | OS, |
---|---|---|---|
const PrintingPolicy & | Policy, | ||
const Twine & | PlaceHolder = Twine(), | ||
unsigned | Indentation = 0 | ||
) | const |
Definition at line 2644 of file TypePrinter.cpp.
References print(), and splitAccordingToPolicy().
Referenced by clang::TemplateArgument::print(), clang::DynTypedNode::print(), clang::TypeInfoLValue::print(), clang::NestedNameSpecifier::print(), print(), print_elem(), printArgument(), clang::TemplateParamObjectDecl::printAsExpr(), printCXXConstructorDestructorName(), clang::ProgramPoint::printJson(), clang::FieldDecl::printName(), and clang::TagDecl::printName().
◆ print() [3/3]
◆ Profile()
void clang::QualType::Profile ( llvm::FoldingSetNodeID & ID) const | inline |
---|
◆ removeLocalConst()
void clang::QualType::removeLocalConst ( ) | inline |
---|
◆ removeLocalFastQualifiers() [1/2]
void clang::QualType::removeLocalFastQualifiers ( ) | inline |
---|
◆ removeLocalFastQualifiers() [2/2]
void clang::QualType::removeLocalFastQualifiers ( unsigned Mask) | inline |
---|
◆ removeLocalRestrict()
void clang::QualType::removeLocalRestrict ( ) | inline |
---|
◆ removeLocalVolatile()
void clang::QualType::removeLocalVolatile ( ) | inline |
---|
◆ setLocalFastQualifiers()
void clang::QualType::setLocalFastQualifiers ( unsigned Quals) | inline |
---|
Definition at line 957 of file Type.h.
◆ split()
Divides a QualType into its unqualified type and a set of local qualifiers.
Definition at line 7957 of file Type.h.
References clang::Qualifiers::addFastQualifiers(), clang::ExtQuals::getBaseType(), and clang::ExtQuals::getQualifiers().
Referenced by checkARCPropertyImpl(), getAsString(), getAsStringInternal(), clang::ASTContext::getCommonSugaredType(), clang::operator<<(), print(), printIndicesOfElementsToConstructJson(), printPendingInitLoopJson(), clang::CanQual< T >::split(), splitAccordingToPolicy(), clang::ObjCObjectType::stripObjCKindOfTypeAndQuals(), and unwrapSugar().
◆ stream()
◆ stripObjCKindOfType()
◆ substObjCMemberType()
◆ substObjCTypeArgs()
Substitute type arguments for the Objective-C type parameters used in the subject type.
Substitute the given type arguments for Objective-C type parameters within the given type, recursively.
Parameters
ctx | ASTContext in which the type exists. |
---|---|
typeArgs | The type arguments that will be substituted for the Objective-C type parameters in the subject type, which are generally computed via Type::getObjCSubstitutions. If empty, the type parameters will be replaced with their bounds or id/Class, as appropriate for the context. |
context | The context in which the subject type was written. |
Returns
the resulting type.
Definition at line 1640 of file Type.cpp.
Referenced by clang::SemaObjC::CheckMessageArgumentTypes(), clang::SemaCodeCompletion::CodeCompleteObjCMethodDecl(), clang::ObjCObjectType::computeSuperClassTypeSlow(), clang::CodeCompletionResult::createCodeCompletionStringForDecl(), formatBlockPlaceholder(), getReturnTypeForMethod(), clang::ObjCMethodDecl::getSendResultType(), and substObjCMemberType().
◆ UseExcessPrecision()
Definition at line 1605 of file Type.cpp.
References clang::Type::getAs(), clang::VectorType::getElementType(), clang::BuiltinType::getKind(), clang::ASTContext::getLangOpts(), clang::ASTContext::getTargetInfo(), getTypePtr(), clang::TargetInfo::hasBFloat16Type(), clang::TargetInfo::hasFloat16Type(), clang::TargetInfo::hasFullBFloat16Type(), clang::TargetInfo::hasLegalHalfType(), and UseExcessPrecision().
Referenced by UseExcessPrecision().
◆ withConst()
QualType clang::QualType::withConst ( ) const | inline |
---|
Definition at line 1154 of file Type.h.
References clang::Qualifiers::Const, and withFastQualifiers().
Referenced by clang::Sema::ActOnCapturedRegionStart(), clang::Sema::ActOnSourceLocExpr(), clang::Sema::BuildCXXTypeId(), clang::SemaObjC::BuildObjCArrayLiteral(), clang::SemaObjC::BuildObjCDictionaryLiteral(), captureInBlock(), clang::Sema::CheckExplicitlyDefaultedComparison(), clang::SemaARM::CheckNeonBuiltinFunctionCall(), clang::Sema::DeclareImplicitCopyAssignment(), clang::Sema::DeclareImplicitCopyConstructor(), DiagnoseForRangeReferenceVariableCopies(), clang::ASTContext::getMSGuidDecl(), getParallelRegionParams(), clang::ObjCMethodDecl::getSelfType(), clang::ASTContext::getStringLiteralArrayType(), getTaskloopRegionParams(), getTaskRegionParams(), clang::InitializationSequence::Perform(), clang::Sema::SpecialMemberIsTrivial(), clang::tryMakeVariablePseudoStrong(), clang::interp::Compiler< Emitter >::VisitSYCLUniqueStableNameExpr(), and clang::CanQual< T >::withConst().
◆ withCVRQualifiers()
◆ withExactLocalFastQualifiers()
QualType clang::QualType::withExactLocalFastQualifiers ( unsigned TQs) const | inline |
---|
◆ withFastQualifiers()
◆ withoutLocalFastQualifiers()
QualType clang::QualType::withoutLocalFastQualifiers ( ) const | inline |
---|
◆ withRestrict()
QualType clang::QualType::withRestrict ( ) const | inline |
---|
◆ withVolatile()
QualType clang::QualType::withVolatile ( ) const | inline |
---|
◆ operator!=
◆ operator<
◆ operator==
Indicate whether the specified types and qualifiers are identical.
Definition at line 1317 of file Type.h.
◆ QualifierCollector
The documentation for this class was generated from the following files:
- include/clang/AST/Type.h
- lib/AST/ASTDumper.cpp
- lib/AST/Type.cpp
- lib/AST/TypePrinter.cpp