}
/// \brief Get the full source range.
- SourceRange getFullSourceRange() const {
- SourceLocation End = getSourceRange().getEnd();
+ SourceRange getSourceRange() const {
+ SourceLocation End = getLocalSourceRange().getEnd();
TypeLoc Cur = *this;
while (true) {
TypeLoc Next = Cur.getNextTypeLoc();
if (Next.isNull()) break;
Cur = Next;
}
- return SourceRange(Cur.getSourceRange().getBegin(), End);
+ return SourceRange(Cur.getLocalSourceRange().getBegin(), End);
}
/// \brief Get the local source range.
- SourceRange getSourceRange() const {
- return getSourceRangeImpl(*this);
+ SourceRange getLocalSourceRange() const {
+ return getLocalSourceRangeImpl(*this);
}
/// \brief Returns the size of the type source info data block.
private:
static void initializeImpl(TypeLoc TL, SourceLocation Loc);
static TypeLoc getNextTypeLocImpl(TypeLoc TL);
- static SourceRange getSourceRangeImpl(TypeLoc TL);
+ static SourceRange getLocalSourceRangeImpl(TypeLoc TL);
};
/// \brief Return the TypeLoc for a type source info.
/// type qualifiers.
class QualifiedTypeLoc : public TypeLoc {
public:
- SourceRange getSourceRange() const {
+ SourceRange getLocalSourceRange() const {
return SourceRange();
}
void setNameLoc(SourceLocation Loc) {
this->getLocalData()->NameLoc = Loc;
}
- SourceRange getSourceRange() const {
+ SourceRange getLocalSourceRange() const {
return SourceRange(getNameLoc(), getNameLoc());
}
void initializeLocal(SourceLocation Loc) {
return needsExtraLocalData() ? sizeof(WrittenBuiltinSpecs) : 0;
}
- SourceRange getSourceRange() const {
+ SourceRange getLocalSourceRange() const {
return SourceRange(getBuiltinLoc(), getBuiltinLoc());
}
return getInnerTypeLoc();
}
- SourceRange getSourceRange() const {
+ SourceRange getLocalSourceRange() const {
return SourceRange(getLAngleLoc(), getRAngleLoc());
}
getLocalData()->NameLoc = Loc;
}
- SourceRange getSourceRange() const {
+ SourceRange getLocalSourceRange() const {
return SourceRange(getNameLoc());
}
return this->getInnerTypeLoc();
}
- SourceRange getSourceRange() const {
+ SourceRange getLocalSourceRange() const {
return SourceRange(getSigilLoc(), getSigilLoc());
}
return getInnerTypeLoc();
}
- SourceRange getSourceRange() const {
+ SourceRange getLocalSourceRange() const {
return SourceRange(getLParenLoc(), getRParenLoc());
}
return getInnerTypeLoc();
}
- SourceRange getSourceRange() const {
+ SourceRange getLocalSourceRange() const {
return SourceRange(getLBracketLoc(), getRBracketLoc());
}
memcpy(Data, Loc.Data, size);
}
- SourceRange getSourceRange() const {
+ SourceRange getLocalSourceRange() const {
return SourceRange(getTemplateNameLoc(), getRAngleLoc());
}
setRParenLoc(range.getEnd());
}
- SourceRange getSourceRange() const {
+ SourceRange getLocalSourceRange() const {
return SourceRange(getTypeofLoc(), getRParenLoc());
}
// Reimplemented to account for GNU/C++ extension
// typeof unary-expression
// where there are no parentheses.
- SourceRange getSourceRange() const;
+ SourceRange getLocalSourceRange() const;
};
class TypeOfTypeLoc
this->getLocalData()->QualifierRange = Range;
}
- SourceRange getSourceRange() const {
+ SourceRange getLocalSourceRange() const {
if (getKeywordLoc().isValid())
if (getQualifierRange().getEnd().isValid())
return SourceRange(getKeywordLoc(), getQualifierRange().getEnd());
this->getLocalData()->NameLoc = Loc;
}
- SourceRange getSourceRange() const {
+ SourceRange getLocalSourceRange() const {
if (getKeywordLoc().isValid())
return SourceRange(getKeywordLoc(), getNameLoc());
else
return 0;
return ToContext.getTrivialTypeSourceInfo(T,
- FromTSI->getTypeLoc().getFullSourceRange().getBegin());
+ FromTSI->getTypeLoc().getSourceRange().getBegin());
}
Decl *ASTImporter::Import(Decl *FromD) {
while (true) {
TypeLoc NextTL = TL.getNextTypeLoc();
if (!NextTL)
- return TL.getSourceRange().getBegin();
+ return TL.getLocalSourceRange().getBegin();
TL = NextTL;
}
}
if (isMemberInitializer())
return getMemberLocation();
- return getBaseClassLoc().getSourceRange().getBegin();
+ return getBaseClassLoc().getLocalSourceRange().getBegin();
}
SourceRange CXXBaseOrMemberInitializer::getSourceRange() const {
}
SourceLocation TemplateTypeParmDecl::getDefaultArgumentLoc() const {
- return DefaultArgument->getTypeLoc().getFullSourceRange().getBegin();
+ return DefaultArgument->getTypeLoc().getSourceRange().getBegin();
}
unsigned TemplateTypeParmDecl::getDepth() const {
PseudoDestructorTypeStorage::PseudoDestructorTypeStorage(TypeSourceInfo *Info)
: Type(Info)
{
- Location = Info->getTypeLoc().getSourceRange().getBegin();
+ Location = Info->getTypeLoc().getLocalSourceRange().getBegin();
}
QualType CXXPseudoDestructorExpr::getDestroyedType() const {
SourceRange CXXPseudoDestructorExpr::getSourceRange() const {
SourceLocation End = DestroyedType.getLocation();
if (TypeSourceInfo *TInfo = DestroyedType.getTypeSourceInfo())
- End = TInfo->getTypeLoc().getSourceRange().getEnd();
+ End = TInfo->getTypeLoc().getLocalSourceRange().getEnd();
return SourceRange(Base->getLocStart(), End);
}
return getSourceDeclExpression()->getSourceRange();
case TemplateArgument::Type:
- return getTypeSourceInfo()->getTypeLoc().getFullSourceRange();
+ return getTypeSourceInfo()->getTypeLoc().getSourceRange();
case TemplateArgument::Template:
if (getTemplateQualifierRange().isValid())
#define ABSTRACT_TYPELOC(CLASS, PARENT)
#define TYPELOC(CLASS, PARENT) \
SourceRange Visit##CLASS##TypeLoc(CLASS##TypeLoc TyLoc) { \
- return TyLoc.getSourceRange(); \
+ return TyLoc.getLocalSourceRange(); \
}
#include "clang/AST/TypeLocNodes.def"
};
}
-SourceRange TypeLoc::getSourceRangeImpl(TypeLoc TL) {
+SourceRange TypeLoc::getLocalSourceRangeImpl(TypeLoc TL) {
if (TL.isNull()) return SourceRange();
return TypeLocRanger().Visit(TL);
}
// Reimplemented to account for GNU/C++ extension
// typeof unary-expression
// where there are no parentheses.
-SourceRange TypeOfExprTypeLoc::getSourceRange() const {
+SourceRange TypeOfExprTypeLoc::getLocalSourceRange() const {
if (getRParenLoc().isValid())
return SourceRange(getTypeofLoc(), getRParenLoc());
else
case N_NamedRef:
return SourceRange(AsNamedRef().Loc, AsNamedRef().Loc);
case N_Type:
- return AsTypeLoc().getSourceRange();
+ return AsTypeLoc().getLocalSourceRange();
}
return SourceRange();
return CheckRange(D->getSourceRange());
}
RangePos CheckRange(Stmt *Node) { return CheckRange(Node->getSourceRange()); }
- RangePos CheckRange(TypeLoc TL) { return CheckRange(TL.getSourceRange()); }
+ RangePos CheckRange(TypeLoc TL) { return CheckRange(TL.getLocalSourceRange()); }
template <typename T>
bool isBeforeLocation(T Node) {
for (unsigned i = 0; i < NumArgs; i++)
HasDependentArg |= Args[i]->isTypeDependent();
- SourceLocation BaseLoc = BaseTInfo->getTypeLoc().getSourceRange().getBegin();
+ SourceLocation BaseLoc = BaseTInfo->getTypeLoc().getLocalSourceRange().getBegin();
if (BaseType->isDependentType() || HasDependentArg) {
// Can't check initialization for a base of dependent type or when
// any of the arguments are type-dependent expressions.
if (!BaseType->isRecordType())
return Diag(BaseLoc, diag::err_base_init_does_not_name_class)
- << BaseType << BaseTInfo->getTypeLoc().getSourceRange();
+ << BaseType << BaseTInfo->getTypeLoc().getLocalSourceRange();
// C++ [class.base.init]p2:
// [...] Unless the mem-initializer-id names a nonstatic data
// class, the mem-initializer is ill-formed.
if (DirectBaseSpec && VirtualBaseSpec)
return Diag(BaseLoc, diag::err_base_init_direct_and_virtual)
- << BaseType << BaseTInfo->getTypeLoc().getSourceRange();
+ << BaseType << BaseTInfo->getTypeLoc().getLocalSourceRange();
// C++ [base.class.init]p2:
// Unless the mem-initializer-id names a nonstatic data membeer of the
// constructor's class ot a direst or virtual base of that class, the
if (!DirectBaseSpec && !VirtualBaseSpec)
return Diag(BaseLoc, diag::err_not_direct_base_or_virtual)
<< BaseType << Context.getTypeDeclType(ClassDecl)
- << BaseTInfo->getTypeLoc().getSourceRange();
+ << BaseTInfo->getTypeLoc().getLocalSourceRange();
CXXBaseSpecifier *BaseSpec
= const_cast<CXXBaseSpecifier *>(DirectBaseSpec);
assert(TSInfo && "NULL TypeSourceInfo for friend type declaration");
QualType T = TSInfo->getType();
- SourceRange TypeRange = TSInfo->getTypeLoc().getSourceRange();
+ SourceRange TypeRange = TSInfo->getTypeLoc().getLocalSourceRange();
if (!getLangOptions().CPlusPlus0x) {
// C++03 [class.friend]p2:
SourceLocation RParenLoc) {
QualType ArgTy = TInfo->getType();
bool Dependent = ArgTy->isDependentType();
- SourceRange TypeRange = TInfo->getTypeLoc().getSourceRange();
+ SourceRange TypeRange = TInfo->getTypeLoc().getLocalSourceRange();
// We must have at least one component that refers to the type, and the first
// one is known to be a field designator. Verify that the ArgTy represents
if (DestructedTypeInfo) {
QualType DestructedType = DestructedTypeInfo->getType();
SourceLocation DestructedTypeStart
- = DestructedTypeInfo->getTypeLoc().getSourceRange().getBegin();
+ = DestructedTypeInfo->getTypeLoc().getLocalSourceRange().getBegin();
if (!DestructedType->isDependentType() && !ObjectType->isDependentType() &&
!Context.hasSameUnqualifiedType(DestructedType, ObjectType)) {
Diag(DestructedTypeStart, diag::err_pseudo_dtor_type_mismatch)
<< ObjectType << DestructedType << BaseE->getSourceRange()
- << DestructedTypeInfo->getTypeLoc().getSourceRange();
+ << DestructedTypeInfo->getTypeLoc().getLocalSourceRange();
// Recover by setting the destructed type to the object type.
DestructedType = ObjectType;
if (!ScopeType->isDependentType() && !ObjectType->isDependentType() &&
!Context.hasSameType(ScopeType, ObjectType)) {
- Diag(ScopeTypeInfo->getTypeLoc().getSourceRange().getBegin(),
+ Diag(ScopeTypeInfo->getTypeLoc().getLocalSourceRange().getBegin(),
diag::err_pseudo_dtor_type_mismatch)
<< ObjectType << ScopeType << BaseE->getSourceRange()
- << ScopeTypeInfo->getTypeLoc().getSourceRange();
+ << ScopeTypeInfo->getTypeLoc().getLocalSourceRange();
ScopeType = QualType();
ScopeTypeInfo = 0;
}
SourceLocation Loc = SuperLoc.isValid()? SuperLoc
- : ReceiverTypeInfo->getTypeLoc().getSourceRange().getBegin();
+ : ReceiverTypeInfo->getTypeLoc().getLocalSourceRange().getBegin();
// Find the class to which we are sending this message.
ObjCInterfaceDecl *Class = 0;
DiagnoseDefaultTemplateArgument(*this, TPC,
NewTypeParm->getLocation(),
NewTypeParm->getDefaultArgumentInfo()->getTypeLoc()
- .getFullSourceRange()))
+ .getSourceRange()))
NewTypeParm->removeDefaultArgument();
// Merge default arguments for template type parameters.
else if (const RecordType *RecordT = Arg->getAs<RecordType>())
Tag = RecordT;
if (Tag && Tag->getDecl()->getDeclContext()->isFunctionOrMethod()) {
- SourceRange SR = ArgInfo->getTypeLoc().getFullSourceRange();
+ SourceRange SR = ArgInfo->getTypeLoc().getSourceRange();
return Diag(SR.getBegin(), diag::err_template_arg_local_type)
<< QualType(Tag, 0) << SR;
} else if (Tag && !Tag->getDecl()->getDeclName() &&
!Tag->getDecl()->getTypedefForAnonDecl()) {
- SourceRange SR = ArgInfo->getTypeLoc().getFullSourceRange();
+ SourceRange SR = ArgInfo->getTypeLoc().getSourceRange();
Diag(SR.getBegin(), diag::err_template_arg_unnamed_type) << SR;
Diag(Tag->getDecl()->getLocation(), diag::note_template_unnamed_type_here);
return true;
} else if (Context.hasSameUnqualifiedType(Arg, Context.OverloadTy)) {
- SourceRange SR = ArgInfo->getTypeLoc().getFullSourceRange();
+ SourceRange SR = ArgInfo->getTypeLoc().getSourceRange();
return Diag(SR.getBegin(), diag::err_template_arg_overload_type) << SR;
}
if (const DeclaratorDecl *DD = dyn_cast<DeclaratorDecl>(D)) {
if (TypeSourceInfo *TI = DD->getTypeSourceInfo()) {
TypeLoc TL = TI->getTypeLoc();
- SourceLocation TLoc = TL.getFullSourceRange().getBegin();
+ SourceLocation TLoc = TL.getSourceRange().getBegin();
if (TLoc.isValid() &&
SrcMgr.isBeforeInTranslationUnit(TLoc, L))
cursorRange.setBegin(TLoc);