diff options
| author | Douglas Gregor <dgregor@apple.com> | 2010-02-24 23:50:37 +0000 |
|---|---|---|
| committer | Douglas Gregor <dgregor@apple.com> | 2010-02-24 23:50:37 +0000 |
| commit | cdbd51551b067c88baac7884c2f1ca27f4ff127b (patch) | |
| tree | cde6b95362dc7b1ab144511e27cd9788ff36d1ae /clang/lib/Sema | |
| parent | 651fe5ec20c3c790d53cb1044896dbe047e881dc (diff) | |
| download | bcm5719-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.h | 1 | ||||
| -rw-r--r-- | clang/lib/Sema/SemaExpr.cpp | 1 | ||||
| -rw-r--r-- | clang/lib/Sema/SemaExprCXX.cpp | 6 | ||||
| -rw-r--r-- | clang/lib/Sema/TreeTransform.h | 5 |
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); } |

