summaryrefslogtreecommitdiffstats
path: root/clang/lib/Sema
diff options
context:
space:
mode:
authorDouglas Gregor <dgregor@apple.com>2010-02-24 23:50:37 +0000
committerDouglas Gregor <dgregor@apple.com>2010-02-24 23:50:37 +0000
commitcdbd51551b067c88baac7884c2f1ca27f4ff127b (patch)
treecde6b95362dc7b1ab144511e27cd9788ff36d1ae /clang/lib/Sema
parent651fe5ec20c3c790d53cb1044896dbe047e881dc (diff)
downloadbcm5719-llvm-cdbd51551b067c88baac7884c2f1ca27f4ff127b.tar.gz
bcm5719-llvm-cdbd51551b067c88baac7884c2f1ca27f4ff127b.zip
Keep track of the location of the '~' in a pseudo-destructor expression.
llvm-svn: 97080
Diffstat (limited to 'clang/lib/Sema')
-rw-r--r--clang/lib/Sema/Sema.h1
-rw-r--r--clang/lib/Sema/SemaExpr.cpp1
-rw-r--r--clang/lib/Sema/SemaExprCXX.cpp6
-rw-r--r--clang/lib/Sema/TreeTransform.h5
4 files changed, 10 insertions, 3 deletions
diff --git a/clang/lib/Sema/Sema.h b/clang/lib/Sema/Sema.h
index 689ad493e85..abc775e06bc 100644
--- a/clang/lib/Sema/Sema.h
+++ b/clang/lib/Sema/Sema.h
@@ -2187,6 +2187,7 @@ public:
const CXXScopeSpec &SS,
TypeSourceInfo *ScopeType,
SourceLocation CCLoc,
+ SourceLocation TildeLoc,
TypeSourceInfo *DestroyedType,
bool HasTrailingLParen);
diff --git a/clang/lib/Sema/SemaExpr.cpp b/clang/lib/Sema/SemaExpr.cpp
index 3fb587fc37e..71aae736b1a 100644
--- a/clang/lib/Sema/SemaExpr.cpp
+++ b/clang/lib/Sema/SemaExpr.cpp
@@ -2940,6 +2940,7 @@ Sema::LookupMemberExpr(LookupResult &R, Expr *&BaseExpr,
(NestedNameSpecifier *) SS.getScopeRep(),
SS.getRange(),
0, SourceLocation(),
+ MemberLoc,
DestroyedTypeInfo));
}
diff --git a/clang/lib/Sema/SemaExprCXX.cpp b/clang/lib/Sema/SemaExprCXX.cpp
index 98e8000b17b..4fca322c3a6 100644
--- a/clang/lib/Sema/SemaExprCXX.cpp
+++ b/clang/lib/Sema/SemaExprCXX.cpp
@@ -2433,6 +2433,7 @@ Sema::OwningExprResult Sema::BuildPseudoDestructorExpr(ExprArg Base,
const CXXScopeSpec &SS,
TypeSourceInfo *ScopeTypeInfo,
SourceLocation CCLoc,
+ SourceLocation TildeLoc,
TypeSourceInfo *DestructedTypeInfo,
bool HasTrailingLParen) {
assert(DestructedTypeInfo && "No destructed type in pseudo-destructor expr?");
@@ -2513,6 +2514,7 @@ Sema::OwningExprResult Sema::BuildPseudoDestructorExpr(ExprArg Base,
SS.getRange(),
ScopeTypeInfo,
CCLoc,
+ TildeLoc,
DestructedTypeInfo));
if (HasTrailingLParen)
return move(Result);
@@ -2789,8 +2791,8 @@ Sema::OwningExprResult Sema::ActOnPseudoDestructorExpr(Scope *S, ExprArg Base,
return BuildPseudoDestructorExpr(move(Base), OpLoc, OpKind, SS,
- ScopeTypeInfo, CCLoc, DestructedTypeInfo,
- HasTrailingLParen);
+ ScopeTypeInfo, CCLoc, TildeLoc,
+ DestructedTypeInfo, HasTrailingLParen);
}
CXXMemberCallExpr *Sema::BuildCXXMemberCallExpr(Expr *Exp,
diff --git a/clang/lib/Sema/TreeTransform.h b/clang/lib/Sema/TreeTransform.h
index bd939f0aeb5..922c041393f 100644
--- a/clang/lib/Sema/TreeTransform.h
+++ b/clang/lib/Sema/TreeTransform.h
@@ -888,6 +888,7 @@ public:
SourceRange QualifierRange,
TypeSourceInfo *ScopeType,
SourceLocation CCLoc,
+ SourceLocation TildeLoc,
TypeSourceInfo *DestroyedType);
/// \brief Build a new unary operator expression.
@@ -4705,6 +4706,7 @@ TreeTransform<Derived>::TransformCXXPseudoDestructorExpr(
E->getQualifierRange(),
ScopeTypeInfo,
E->getColonColonLoc(),
+ E->getTildeLoc(),
DestroyedTypeInfo);
}
@@ -5755,6 +5757,7 @@ TreeTransform<Derived>::RebuildCXXPseudoDestructorExpr(ExprArg Base,
SourceRange QualifierRange,
TypeSourceInfo *ScopeType,
SourceLocation CCLoc,
+ SourceLocation TildeLoc,
TypeSourceInfo *DestroyedType) {
CXXScopeSpec SS;
if (Qualifier) {
@@ -5771,7 +5774,7 @@ TreeTransform<Derived>::RebuildCXXPseudoDestructorExpr(ExprArg Base,
// 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);
}
OpenPOWER on IntegriCloud