#include "clang/AST/TypeLoc.h"
#include "clang/AST/ASTConcept.h"
#include "clang/AST/ASTContext.h"
#include "clang/AST/Attr.h"
#include "clang/AST/DeclTemplate.h"
#include "clang/AST/Expr.h"
#include "clang/AST/NestedNameSpecifier.h"
#include "clang/AST/TemplateBase.h"
#include "clang/AST/TemplateName.h"
#include "clang/AST/TypeLocVisitor.h"
#include "clang/Basic/SourceLocation.h"
#include "clang/Basic/Specifiers.h"
#include "llvm/Support/ErrorHandling.h"
#include "llvm/Support/MathExtras.h"
#include <algorithm>
#include <cassert>
#include <cstdint>
#include <cstring>
usingnamespaceclang;
static const unsigned TypeLocMaxDataAlign = …;
namespace {
class TypeLocRanger : public TypeLocVisitor<TypeLocRanger, SourceRange> { … };
}
SourceRange TypeLoc::getLocalSourceRangeImpl(TypeLoc TL) { … }
namespace {
class TypeAligner : public TypeLocVisitor<TypeAligner, unsigned> { … };
}
unsigned TypeLoc::getLocalAlignmentForType(QualType Ty) { … }
namespace {
class TypeSizer : public TypeLocVisitor<TypeSizer, unsigned> { … };
}
unsigned TypeLoc::getFullDataSizeForType(QualType Ty) { … }
namespace {
class NextLoc : public TypeLocVisitor<NextLoc, TypeLoc> { … };
}
TypeLoc TypeLoc::getNextTypeLocImpl(TypeLoc TL) { … }
void TypeLoc::initializeImpl(ASTContext &Context, TypeLoc TL,
SourceLocation Loc) { … }
namespace {
class TypeLocCopier : public TypeLocVisitor<TypeLocCopier> { … };
}
void TypeLoc::copy(TypeLoc other) { … }
SourceLocation TypeLoc::getBeginLoc() const { … }
SourceLocation TypeLoc::getEndLoc() const { … }
namespace {
struct TSTChecker : public TypeLocVisitor<TSTChecker, bool> { … };
}
bool TypeSpecTypeLoc::isKind(const TypeLoc &TL) { … }
bool TagTypeLoc::isDefinition() const { … }
SourceRange TypeOfExprTypeLoc::getLocalSourceRange() const { … }
TypeSpecifierType BuiltinTypeLoc::getWrittenTypeSpec() const { … }
TypeLoc TypeLoc::IgnoreParensImpl(TypeLoc TL) { … }
SourceLocation TypeLoc::findNullabilityLoc() const { … }
TypeLoc TypeLoc::findExplicitQualifierLoc() const { … }
void ObjCTypeParamTypeLoc::initializeLocal(ASTContext &Context,
SourceLocation Loc) { … }
void ObjCObjectTypeLoc::initializeLocal(ASTContext &Context,
SourceLocation Loc) { … }
SourceRange AttributedTypeLoc::getLocalSourceRange() const { … }
SourceRange CountAttributedTypeLoc::getLocalSourceRange() const { … }
SourceRange BTFTagAttributedTypeLoc::getLocalSourceRange() const { … }
void TypeOfTypeLoc::initializeLocal(ASTContext &Context,
SourceLocation Loc) { … }
void UnaryTransformTypeLoc::initializeLocal(ASTContext &Context,
SourceLocation Loc) { … }
void ElaboratedTypeLoc::initializeLocal(ASTContext &Context,
SourceLocation Loc) { … }
void DependentNameTypeLoc::initializeLocal(ASTContext &Context,
SourceLocation Loc) { … }
void
DependentTemplateSpecializationTypeLoc::initializeLocal(ASTContext &Context,
SourceLocation Loc) { … }
void TemplateSpecializationTypeLoc::initializeArgLocs(
ASTContext &Context, ArrayRef<TemplateArgument> Args,
TemplateArgumentLocInfo *ArgInfos, SourceLocation Loc) { … }
static ConceptReference *createTrivialConceptReference(ASTContext &Context,
SourceLocation Loc,
const AutoType *AT) { … }
void AutoTypeLoc::initializeLocal(ASTContext &Context, SourceLocation Loc) { … }
namespace {
class GetContainedAutoTypeLocVisitor :
public TypeLocVisitor<GetContainedAutoTypeLocVisitor, TypeLoc> { … };
}
AutoTypeLoc TypeLoc::getContainedAutoTypeLoc() const { … }
SourceLocation TypeLoc::getTemplateKeywordLoc() const { … }