clang: clang::TypeLoc Class Reference (original) (raw)

Base wrapper for a particular "section" of type source info. More...

#include "[clang/AST/TypeLoc.h](TypeLoc%5F8h%5Fsource.html)"

Public Member Functions
TypeLoc ()=default
TypeLoc (QualType ty, void *opaqueData)
TypeLoc (const Type *ty, void *opaqueData)
template<typename T >
T castAs () const
Convert to the specified [TypeLoc](classclang%5F1%5F1TypeLoc.html "Base wrapper for a particular "section" of type source info.") type, asserting that this [TypeLoc](classclang%5F1%5F1TypeLoc.html "Base wrapper for a particular "section" of type source info.") is of the desired type.
template<typename T >
T getAs () const
Convert to the specified [TypeLoc](classclang%5F1%5F1TypeLoc.html "Base wrapper for a particular "section" of type source info.") type, returning a null [TypeLoc](classclang%5F1%5F1TypeLoc.html "Base wrapper for a particular "section" of type source info.") if this [TypeLoc](classclang%5F1%5F1TypeLoc.html "Base wrapper for a particular "section" of type source info.") is not of the desired type.
template<typename T >
T getAsAdjusted () const
Convert to the specified [TypeLoc](classclang%5F1%5F1TypeLoc.html "Base wrapper for a particular "section" of type source info.") type, returning a null [TypeLoc](classclang%5F1%5F1TypeLoc.html "Base wrapper for a particular "section" of type source info.") if this [TypeLoc](classclang%5F1%5F1TypeLoc.html "Base wrapper for a particular "section" of type source info.") is not of the desired type.
TypeLocClass getTypeLocClass () const
bool isNull () const
operator bool () const
QualType getType () const
Get the type for which this source info wrapper provides information.
const Type * getTypePtr () const
void * getOpaqueData () const
Get the pointer where source information is stored.
SourceLocation getBeginLoc () const
Get the begin source location.
SourceLocation getEndLoc () const
Get the end source location.
SourceRange getSourceRange () const LLVM_READONLY
Get the full source range.
SourceRange getLocalSourceRange () const
Get the local source range.
unsigned getFullDataSize () const
Returns the size of the type source info data block.
TypeLoc getNextTypeLoc () const
Get the next [TypeLoc](classclang%5F1%5F1TypeLoc.html "Base wrapper for a particular "section" of type source info.") pointed by this [TypeLoc](classclang%5F1%5F1TypeLoc.html "Base wrapper for a particular "section" of type source info."), e.g for "int*" the [TypeLoc](classclang%5F1%5F1TypeLoc.html "Base wrapper for a particular "section" of type source info.") is a PointerLoc and next [TypeLoc](classclang%5F1%5F1TypeLoc.html "Base wrapper for a particular "section" of type source info.") is for "int".
UnqualTypeLoc getUnqualifiedLoc () const
Skips past any qualifiers, if this is qualified.
TypeLoc IgnoreParens () const
TypeLoc findExplicitQualifierLoc () const
Find a type with the location of an explicit type qualifier.
AutoTypeLoc getContainedAutoTypeLoc () const
Get the typeloc of an AutoType whose type will be deduced for a variable with an initializer of this type.
SourceLocation getTemplateKeywordLoc () const
Get the SourceLocation of the template keyword (if any).
void initialize (ASTContext &Context, SourceLocation Loc) const
Initializes this to state that every location in this type is the given location.
void initializeFullCopy (TypeLoc Other)
Initializes this by copying its information from another [TypeLoc](classclang%5F1%5F1TypeLoc.html "Base wrapper for a particular "section" of type source info.") of the same type.
void initializeFullCopy (TypeLoc Other, unsigned Size)
Initializes this by copying its information from another [TypeLoc](classclang%5F1%5F1TypeLoc.html "Base wrapper for a particular "section" of type source info.") of the same type.
void copy (TypeLoc other)
Copies the other type loc into this one.
SourceLocation findNullabilityLoc () const
Find the location of the nullability specifier (__nonnull, __nullable, or __null_unspecifier), if there is one.
void dump () const
void dump (llvm::raw_ostream &, const ASTContext &) const
Static Public Member Functions
static unsigned getFullDataSizeForType (QualType Ty)
Returns the size of type source info data block for the given type.
static unsigned getLocalAlignmentForType (QualType Ty)
Returns the alignment of type source info data block for the given type.
Protected Attributes
const void * Ty = nullptr
void * Data = nullptr

Base wrapper for a particular "section" of type source info.

A client should use the [TypeLoc](classclang%5F1%5F1TypeLoc.html "Base wrapper for a particular "section" of type source info.") subclasses through castAs()/getAs() in order to get at the actual information.

Definition at line 59 of file TypeLoc.h.

TypeLocClass

The kinds of TypeLocs.

Equivalent to the Type::TypeClass enum, except it also defines a Qualified enum that corresponds to the QualifiedLoc class.

Enumerator
Qualified

Definition at line 108 of file TypeLoc.h.

TypeLoc() [1/3]

clang::TypeLoc::TypeLoc ( ) default

TypeLoc() [2/3]

clang::TypeLoc::TypeLoc ( QualType ty, void * opaqueData ) inline

TypeLoc() [3/3]

clang::TypeLoc::TypeLoc ( const Type * ty, void * opaqueData ) inline

castAs()

template<typename T >

T clang::TypeLoc::castAs ( ) const inline

Convert to the specified [TypeLoc](classclang%5F1%5F1TypeLoc.html "Base wrapper for a particular "section" of type source info.") type, asserting that this [TypeLoc](classclang%5F1%5F1TypeLoc.html "Base wrapper for a particular "section" of type source info.") is of the desired type.

Precondition

T::isKind(*this)

Definition at line 78 of file TypeLoc.h.

References clang::T.

Referenced by clang::SemaObjC::actOnObjCProtocolQualifierType(), clang::SemaObjC::actOnObjCTypeArgsAndProtocolQualifiers(), clang::Sema::ActOnTemplatedFriendTag(), clang::TemplateDeclInstantiator::adjustForRewrite(), clang::Sema::BuildMemInitializer(), clang::Sema::CheckTypenameType(), clang::Sema::findInheritingConstructor(), FixInvalidVariablyModifiedTypeLoc(), getBeginLoc(), getEndLoc(), getPointeeTypeText(), clang::Sema::getTemplateArgumentPackExpansionPattern(), clang::ASTContext::getTemplateSpecializationTypeInfo(), GetTypeSourceInfoForDeclarator(), NeedsInstantiationAsFunctionType(), clang::TypeLocBuilder::push(), clang::TypeLocBuilder::pushTypeSpec(), clang::TemplateDeclInstantiator::SubstFunctionType(), clang::TreeTransform< Derived >::TransformFunctionTypeParam(), clang::TreeTransform< Derived >::TransformFunctionTypeParams(), and clang::TreeTransform< Derived >::TransformTypeWithDeducedTST().

copy()

void TypeLoc::copy ( TypeLoc other )

dump() [1/2]

LLVM_DUMP_METHOD void TypeLoc::dump ( ) const

dump() [2/2]

LLVM_DUMP_METHOD void TypeLoc::dump ( llvm::raw_ostream & OS,
const ASTContext & Context
) const

findExplicitQualifierLoc()

TypeLoc TypeLoc::findExplicitQualifierLoc ( ) const

findNullabilityLoc()

getAs()

template<typename T >

T clang::TypeLoc::getAs ( ) const inline

Convert to the specified [TypeLoc](classclang%5F1%5F1TypeLoc.html "Base wrapper for a particular "section" of type source info.") type, returning a null [TypeLoc](classclang%5F1%5F1TypeLoc.html "Base wrapper for a particular "section" of type source info.") if this [TypeLoc](classclang%5F1%5F1TypeLoc.html "Base wrapper for a particular "section" of type source info.") is not of the desired type.

Definition at line 89 of file TypeLoc.h.

References clang::T.

Referenced by clang::Sema::ActOnFinishFunctionBody(), clang::SemaObjC::actOnObjCTypeArgsAndProtocolQualifiers(), clang::SemaObjC::actOnObjCTypeParam(), clang::Sema::ActOnTemplateTypeArgument(), addFunctionPointerConversion(), checkAllAtProps(), clang::Sema::CheckEquivalentExceptionSpec(), clang::Sema::CheckFunctionDeclaration(), clang::Sema::checkThisInStaticMemberFunctionExceptionSpec(), clang::Sema::checkThisInStaticMemberFunctionType(), convertTypeTemplateArgumentToTemplate(), clang::Sema::createLambdaInitCaptureVarDecl(), DiagnoseCalleeStaticArrayParam(), findExplicitQualifierLoc(), findTypeLocationForBlockDecl(), FixInvalidVariablyModifiedTypeLoc(), getAsAdjusted(), getContainedAutoTypeLoc(), clang::FunctionDecl::getFunctionTypeLoc(), clang::comments::getFunctionTypeLoc(), GetTypeSourceInfoForDeclarator(), isEnableIf(), clang::Decl::isFlexibleArrayMemberLike(), clang::comments::lookThroughTypedefOrTypeAliasLocs(), NeedsInstantiationAsFunctionType(), clang::InitializationSequence::Perform(), clang::Sema::SubstFunctionDeclType(), clang::TemplateDeclInstantiator::SubstFunctionType(), clang::Sema::SubstParmVarDecl(), clang::TreeTransform< Derived >::TransformNestedNameSpecifierLoc(), and clang::TreeTransform< Derived >::TransformTypeWithDeducedTST().

getAsAdjusted()

template<typename T >

T clang::TypeLoc::getAsAdjusted inline

Convert to the specified [TypeLoc](classclang%5F1%5F1TypeLoc.html "Base wrapper for a particular "section" of type source info.") type, returning a null [TypeLoc](classclang%5F1%5F1TypeLoc.html "Base wrapper for a particular "section" of type source info.") if this [TypeLoc](classclang%5F1%5F1TypeLoc.html "Base wrapper for a particular "section" of type source info.") is not of the desired type.

It will consider type adjustments from a type that was written as a T to another type that is still canonically a T (ignores parens, attributes, elaborated types, etc).

Definition at line 2716 of file TypeLoc.h.

References getAs(), and clang::T.

Referenced by clang::Sema::ActOnBlockArguments(), clang::TemplateDeclInstantiator::adjustForRewrite(), clang::Sema::CheckDeductionGuideDeclarator(), checkLifetimeBoundAttr(), clang::Sema::checkLifetimeCaptureBy(), findTypeLocationForBlockDecl(), clang::Sema::getReturnTypeLoc(), clang::sema::implicitObjectParamIsLifetimeBound(), clang::Decl::isFlexibleArrayMemberLike(), clang::Sema::LazyProcessLifetimeCaptureByParams(), and clang::TreeTransform< Derived >::TransformNestedNameSpecifierLoc().

getBeginLoc()

Get the begin source location.

Definition at line 192 of file TypeLoc.cpp.

References castAs(), clang::SourceRange::getBegin(), getLocalSourceRange(), getNextTypeLoc(), getTypeLocClass(), clang::InheritingConcreteTypeLoc< Base, Derived, TypeClass >::getTypePtr(), clang::FunctionProtoType::hasTrailingReturn(), isNull(), clang::SourceLocation::isValid(), and Qualified.

Referenced by clang::Sema::ActOnAliasDeclaration(), clang::Sema::ActOnCXXTypeConstructExpr(), clang::Sema::ActOnFriendTypeDecl(), clang::SemaObjC::ActOnMethodParmDeclaration(), clang::SemaObjC::actOnObjCTypeParam(), clang::SemaOpenMP::ActOnOMPIteratorExpr(), clang::Sema::ActOnTag(), clang::Sema::ActOnTemplateTypeArgument(), clang::Sema::ActOnVariableDeclarator(), clang::applyObjCTypeArgs(), clang::Sema::AttachTypeConstraint(), clang::Sema::BuildBaseInitializer(), clang::Sema::BuildBuiltinBitCastExpr(), clang::Sema::BuildCXXTypeConstructExpr(), clang::Sema::BuildPseudoDestructorExpr(), clang::Sema::BuildVAArgExpr(), clang::Sema::CheckBaseSpecifier(), CheckConstexprDeclStmt(), CheckConvertibilityForTypeTraits(), clang::Sema::CheckDeductionGuideDeclarator(), clang::Sema::CheckEnumUnderlyingType(), clang::SemaObjC::CreatePropertyDecl(), clang::Sema::DeduceTemplateSpecializationFromInitializer(), clang::Sema::deduceVarTypeFromInitializer(), EvaluateBinaryTypeTrait(), EvaluateUnaryTypeTrait(), clang::CXXScopeSpec::Extend(), clang::CXXBaseSpecifier::getBaseTypeLoc(), clang::CXXFunctionalCastExpr::getBeginLoc(), clang::CXXTemporaryObjectExpr::getBeginLoc(), GetFullTypeForDeclarator(), clang::NestedNameSpecifierLoc::getLocalSourceRange(), clang::DependentNameTypeLoc::getLocalSourceRange(), clang::DependentTemplateSpecializationTypeLoc::getLocalSourceRange(), getPointeeTypeText(), getSourceRange(), clang::DeclaratorDecl::getTypeSpecStartLoc(), handleAlignedAttr(), handlePreferredTypeAttr(), clang::SemaHLSL::handleResourceTypeAttr(), clang::ASTImporter::Import(), clang::Sema::IsPointerInterconvertibleBaseOf(), clang::PseudoDestructorTypeStorage::PseudoDestructorTypeStorage(), clang::TreeTransform< Derived >::RebuildQualifiedType(), ReplaceWithClasstype(), ReplaceWithInstancetype(), clang::TreeTransform< Derived >::TransformFunctionProtoType(), clang::TreeTransform< Derived >::TransformNestedNameSpecifierLoc(), clang::TreeTransform< Derived >::TransformType(), clang::TreeTransform< Derived >::TransformTypeWithDeducedTST(), and clang::tooling::RecursiveSymbolVisitor< T >::VisitTypedefTypeLoc().

getContainedAutoTypeLoc()

getEndLoc()

Get the end source location.

Definition at line 235 of file TypeLoc.cpp.

References castAs(), getNextTypeLoc(), clang::ObjCObjectPointerTypeLoc::getStarLoc(), getTypeLocClass(), clang::InheritingConcreteTypeLoc< Base, Derived, TypeClass >::getTypePtr(), clang::FunctionProtoType::hasTrailingReturn(), clang::SourceLocation::isInvalid(), clang::Last, Paren, Pointer, Qualified, and TypeLoc().

Referenced by clang::SemaObjC::actOnObjCTypeParam(), clang::SemaObjC::ActOnSuperClassOfClassInterface(), clang::Sema::BuildBuiltinBitCastExpr(), clang::Sema::CheckConversionDeclarator(), clang::Sema::CheckParameter(), clang::SemaObjC::CreatePropertyDecl(), clang::Sema::DeduceTemplateSpecializationFromInitializer(), GetFullTypeForDeclarator(), clang::ElaboratedTypeLoc::getLocalSourceRange(), getPointeeTypeText(), getSourceRange(), clang::DeclaratorDecl::getTypeSpecEndLoc(), ReplaceWithClasstype(), ReplaceWithInstancetype(), and clang::Sema::SubstExceptionSpec().

getFullDataSize()

unsigned clang::TypeLoc::getFullDataSize ( ) const inline

Returns the size of the type source info data block.

Definition at line 164 of file TypeLoc.h.

References getFullDataSizeForType(), and getType().

Referenced by clang::AutoTypeLoc::copy(), clang::DependentNameTypeLoc::copy(), clang::DependentTemplateSpecializationTypeLoc::copy(), clang::ElaboratedTypeLoc::copy(), clang::TemplateSpecializationTypeLoc::copy(), copy(), GetTypeSourceInfoForDeclarator(), initializeFullCopy(), clang::TypeLocBuilder::pushFullCopy(), clang::Sema::SubstFunctionDeclType(), clang::Sema::SubstType(), clang::TreeTransform< Derived >::TransformFunctionTypeParam(), clang::TreeTransform< Derived >::TransformType(), and clang::TreeTransform< Derived >::TransformTypeWithDeducedTST().

getFullDataSizeForType()

getLocalAlignmentForType()

getLocalSourceRange()

SourceRange clang::TypeLoc::getLocalSourceRange ( ) const inline

getNextTypeLoc()

TypeLoc clang::TypeLoc::getNextTypeLoc ( ) const inline

getOpaqueData()

void * clang::TypeLoc::getOpaqueData ( ) const inline

getSourceRange()

SourceRange clang::TypeLoc::getSourceRange ( ) const inline

Get the full source range.

Definition at line 153 of file TypeLoc.h.

References getBeginLoc(), and getEndLoc().

Referenced by clang::Sema::ActOnConversionDeclarator(), clang::Sema::ActOnFriendTypeDecl(), clang::SemaObjC::actOnObjCTypeArgsAndProtocolQualifiers(), clang::Sema::ActOnVariableDeclarator(), clang::Sema::AddAlignedAttr(), clang::SemaObjC::AdjustParameterTypeForObjCAutoRefCount(), AnalyzeBitFieldAssignment(), clang::applyObjCTypeArgs(), clang::Sema::AttachTypeConstraint(), clang::Sema::BuildBaseInitializer(), clang::SemaObjC::BuildClassMessage(), clang::Sema::BuildCStyleCastExpr(), clang::Sema::BuildCXXFunctionalCastExpr(), clang::Sema::BuildCXXNew(), clang::Sema::BuildDelegatingInitializer(), clang::SemaObjC::BuildObjCBridgedCast(), clang::Sema::BuildPseudoDestructorExpr(), clang::Sema::BuildVAArgExpr(), clang::Sema::CheckBaseSpecifier(), CheckConstexprDeclStmt(), clang::Sema::CheckConversionDeclarator(), clang::Sema::CheckDeductionGuideDeclarator(), clang::Sema::CheckPackExpansion(), clang::Sema::CheckParameter(), clang::Sema::CheckTemplateArgument(), checkTypeParamListConsistency(), clang::Sema::CreateGenericSelectionExpr(), clang::Sema::DeduceTemplateSpecializationFromInitializer(), clang::Sema::diagnoseQualifiedDeclaration(), findTemplateParameter(), getPointeeTypeText(), clang::Sema::getPrintable(), getRangeOfTypeInNestedNameSpecifier(), clang::ObjCMessageExpr::getReceiverRange(), clang::FunctionDecl::getReturnTypeSourceRange(), getTypeRange(), clang::Sema::InstantiateMemInitializers(), clang::TreeTransform< Derived >::TransformFunctionTypeParam(), clang::JSONNodeDumper::Visit(), and clang::TextNodeDumper::Visit().

getTemplateKeywordLoc()

getType()

QualType clang::TypeLoc::getType ( ) const inline

Get the type for which this source info wrapper provides information.

Definition at line 133 of file TypeLoc.h.

References clang::QualType::getFromOpaquePtr(), and Ty.

Referenced by clang::ASTRecordWriter::AddNestedNameSpecifierLoc(), AddObjCBlockCall(), clang::Sema::AttachTypeConstraint(), CheckConstexprDeclStmt(), copy(), clang::Sema::DeduceFunctionTypeFromReturnExpr(), clang::comments::DeclInfo::fill(), findTemplateParameter(), getFullDataSize(), getFullDataSizeForType(), clang::Sema::getTemplateArgumentPackExpansionPattern(), getTypeLocClass(), initializeFullCopy(), clang::TreeTransform< Derived >::RebuildQualifiedType(), clang::Sema::SubstType(), clang::TreeTransform< Derived >::TransformFunctionProtoType(), clang::TreeTransform< Derived >::TransformNestedNameSpecifierLoc(), clang::JSONNodeDumper::Visit(), clang::TextNodeDumper::Visit(), and clang::ASTNodeTraverser< Derived, NodeDelegateType >::VisitDependentSizedExtVectorTypeLoc().

getTypeLocClass()

TypeLocClass clang::TypeLoc::getTypeLocClass ( ) const inline

Definition at line 116 of file TypeLoc.h.

References getType(), clang::Type::getTypeClass(), and Qualified.

Referenced by getBeginLoc(), getEndLoc(), getPointeeTypeText(), clang::TypeLocBuilder::pushFullCopy(), clang::RecursiveASTVisitor< Derived >::TraverseTypeLoc(), clang::JSONNodeDumper::Visit(), clang::TypeLocVisitor< ImplClass, RetTy >::Visit(), and clang::TextNodeDumper::Visit().

getTypePtr()

const Type * clang::TypeLoc::getTypePtr ( ) const inline

getUnqualifiedLoc()

IgnoreParens()

TypeLoc clang::TypeLoc::IgnoreParens ( ) const inline

initialize()

initializeFullCopy() [1/2]

void clang::TypeLoc::initializeFullCopy ( TypeLoc Other) inline

initializeFullCopy() [2/2]

void clang::TypeLoc::initializeFullCopy ( TypeLoc Other, unsigned Size ) inline

isNull()

bool clang::TypeLoc::isNull ( ) const inline

Definition at line 121 of file TypeLoc.h.

References Ty.

Referenced by clang::ASTRecordWriter::AddTypeLoc(), clang::Sema::BuildMemInitializer(), getBeginLoc(), getContainedAutoTypeLoc(), getFullDataSizeForType(), getPointeeTypeText(), clang::index::IndexingContext::indexTypeLoc(), clang::index::IndexingContext::indexTypeSourceInfo(), clang::transformer::name(), clang::ASTRecordReader::readTypeLoc(), clang::RecursiveASTVisitor< Derived >::TraverseTypeLoc(), and clang::JSONNodeDumper::Visit().

operator bool()

clang::TypeLoc::operator bool ( ) const inlineexplicit

operator!=

operator==

Data

void* clang::TypeLoc::Data = nullptr protected

Ty

const void* clang::TypeLoc::Ty = nullptr protected

The documentation for this class was generated from the following files: