diff options
| author | Douglas Gregor <dgregor@apple.com> | 2009-08-31 23:41:50 +0000 |
|---|---|---|
| committer | Douglas Gregor <dgregor@apple.com> | 2009-08-31 23:41:50 +0000 |
| commit | f405d7e6f11ccbb5d69d180e3707740ab8728ade (patch) | |
| tree | 72330fe0f0a1f2caae86b4a4cc543b1dc5eef99e /clang/lib/Sema/SemaExpr.cpp | |
| parent | b2de5fa6891b3c1f751b26bd8d0bea978a274d54 (diff) | |
| download | bcm5719-llvm-f405d7e6f11ccbb5d69d180e3707740ab8728ade.tar.gz bcm5719-llvm-f405d7e6f11ccbb5d69d180e3707740ab8728ade.zip | |
Eliminate CXXAdornedMemberExpr entirely. Instead, optionally allocate
space within the MemberExpr for the nested-name-specifier and its
source range. We'll do the same thing with explicitly-specified
template arguments, assuming I don't flip-flop again.
llvm-svn: 80642
Diffstat (limited to 'clang/lib/Sema/SemaExpr.cpp')
| -rw-r--r-- | clang/lib/Sema/SemaExpr.cpp | 10 |
1 files changed, 4 insertions, 6 deletions
diff --git a/clang/lib/Sema/SemaExpr.cpp b/clang/lib/Sema/SemaExpr.cpp index 7f680f5d2f4..df94f20af7d 100644 --- a/clang/lib/Sema/SemaExpr.cpp +++ b/clang/lib/Sema/SemaExpr.cpp @@ -878,15 +878,14 @@ Sema::PerformObjectMemberConversion(Expr *&From, NamedDecl *Member) { return false; } -/// \brief Build a MemberExpr or CXXAdornedMemberExpr, as appropriate. +/// \brief Build a MemberExpr AST node. static MemberExpr *BuildMemberExpr(ASTContext &C, Expr *Base, bool isArrow, const CXXScopeSpec *SS, NamedDecl *Member, SourceLocation Loc, QualType Ty) { if (SS && SS->isSet()) - return new (C) CXXAdornedMemberExpr(Base, isArrow, - (NestedNameSpecifier *)SS->getScopeRep(), - SS->getRange(), - Member, Loc, Ty); + return MemberExpr::Create(C, Base, isArrow, + (NestedNameSpecifier *)SS->getScopeRep(), + SS->getRange(), Member, Loc, Ty); return new (C) MemberExpr(Base, isArrow, Member, Loc, Ty); } @@ -4837,7 +4836,6 @@ static NamedDecl *getPrimaryDecl(Expr *E) { case Stmt::QualifiedDeclRefExprClass: return cast<DeclRefExpr>(E)->getDecl(); case Stmt::MemberExprClass: - case Stmt::CXXAdornedMemberExprClass: // If this is an arrow operator, the address is an offset from // the base's value, so the object the base refers to is // irrelevant. |

