/// expression.
SourceLocation ColonColonLoc;
+ /// \brief The location of the '~'.
+ SourceLocation TildeLoc;
+
/// \brief The type being destroyed.
TypeSourceInfo *DestroyedType;
SourceRange QualifierRange,
TypeSourceInfo *ScopeType,
SourceLocation ColonColonLoc,
+ SourceLocation TildeLoc,
TypeSourceInfo *DestroyedType)
: Expr(CXXPseudoDestructorExprClass,
Context.getPointerType(Context.getFunctionType(Context.VoidTy, 0, 0,
Base(static_cast<Stmt *>(Base)), IsArrow(isArrow),
OperatorLoc(OperatorLoc), Qualifier(Qualifier),
QualifierRange(QualifierRange),
- ScopeType(ScopeType), ColonColonLoc(ColonColonLoc),
+ ScopeType(ScopeType), ColonColonLoc(ColonColonLoc), TildeLoc(TildeLoc),
DestroyedType(DestroyedType) { }
void setBase(Expr *E) { Base = E; }
/// expression.
SourceLocation getColonColonLoc() const { return ColonColonLoc; }
+ /// \brief Retrieve the location of the '~'.
+ SourceLocation getTildeLoc() const { return TildeLoc; }
+
/// \brief Retrieve the type that is being destroyed.
QualType getDestroyedType() const { return DestroyedType->getType(); }
const CXXScopeSpec &SS,
TypeSourceInfo *ScopeType,
SourceLocation CCLoc,
+ SourceLocation TildeLoc,
TypeSourceInfo *DestroyedType,
bool HasTrailingLParen);
(NestedNameSpecifier *) SS.getScopeRep(),
SS.getRange(),
0, SourceLocation(),
+ MemberLoc,
DestroyedTypeInfo));
}
const CXXScopeSpec &SS,
TypeSourceInfo *ScopeTypeInfo,
SourceLocation CCLoc,
+ SourceLocation TildeLoc,
TypeSourceInfo *DestructedTypeInfo,
bool HasTrailingLParen) {
assert(DestructedTypeInfo && "No destructed type in pseudo-destructor expr?");
SS.getRange(),
ScopeTypeInfo,
CCLoc,
+ TildeLoc,
DestructedTypeInfo));
if (HasTrailingLParen)
return move(Result);
return BuildPseudoDestructorExpr(move(Base), OpLoc, OpKind, SS,
- ScopeTypeInfo, CCLoc, DestructedTypeInfo,
- HasTrailingLParen);
+ ScopeTypeInfo, CCLoc, TildeLoc,
+ DestructedTypeInfo, HasTrailingLParen);
}
CXXMemberCallExpr *Sema::BuildCXXMemberCallExpr(Expr *Exp,
SourceRange QualifierRange,
TypeSourceInfo *ScopeType,
SourceLocation CCLoc,
+ SourceLocation TildeLoc,
TypeSourceInfo *DestroyedType);
/// \brief Build a new unary operator expression.
E->getQualifierRange(),
ScopeTypeInfo,
E->getColonColonLoc(),
+ E->getTildeLoc(),
DestroyedTypeInfo);
}
SourceRange QualifierRange,
TypeSourceInfo *ScopeType,
SourceLocation CCLoc,
+ SourceLocation TildeLoc,
TypeSourceInfo *DestroyedType) {
CXXScopeSpec SS;
if (Qualifier) {
// This pseudo-destructor expression is still a pseudo-destructor.
return SemaRef.BuildPseudoDestructorExpr(move(Base), OperatorLoc,
isArrow? tok::arrow : tok::period,
- SS, ScopeType, CCLoc,
+ SS, ScopeType, CCLoc, TildeLoc,
DestroyedType,
/*FIXME?*/true);
}