aboutsummaryrefslogtreecommitdiff
path: root/lib/Sema/TreeTransform.h
diff options
context:
space:
mode:
authorDouglas Gregor <dgregor@apple.com>2009-08-31 21:41:48 +0000
committerDouglas Gregor <dgregor@apple.com>2009-08-31 21:41:48 +0000
commit0979c805475d1ba49b5d6ef93c4d2ce6d2eab6ed (patch)
treef1acf35e32cbc873a80d81d928e690560aada567 /lib/Sema/TreeTransform.h
parentf328a2857d6dc397ec7a304b07d40893891f7f98 (diff)
Rename CXXQualifiedMemberExpr -> CXXAdornedMemberExpr, since we will
also be adding explicit template arguments as an additional "adornment". No functionality change. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@80628 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/Sema/TreeTransform.h')
-rw-r--r--lib/Sema/TreeTransform.h31
1 files changed, 18 insertions, 13 deletions
diff --git a/lib/Sema/TreeTransform.h b/lib/Sema/TreeTransform.h
index deb54115a5..8cb57d904f 100644
--- a/lib/Sema/TreeTransform.h
+++ b/lib/Sema/TreeTransform.h
@@ -1425,16 +1425,18 @@ public:
///
/// By default, performs semantic analysis to build the new expression.
/// Subclasses may override this routine to provide different behavior.
- OwningExprResult RebuildCXXQualifiedMemberExpr(ExprArg Base,
- SourceLocation OpLoc,
- bool isArrow,
- NestedNameSpecifier *Qualifier,
- SourceRange QualifierRange,
- SourceLocation MemberLoc,
- NamedDecl *Member) {
+ OwningExprResult RebuildCXXAdornedMemberExpr(ExprArg Base,
+ SourceLocation OpLoc,
+ bool isArrow,
+ NestedNameSpecifier *Qualifier,
+ SourceRange QualifierRange,
+ SourceLocation MemberLoc,
+ NamedDecl *Member) {
CXXScopeSpec SS;
- SS.setRange(QualifierRange);
- SS.setScopeRep(Qualifier);
+ if (Qualifier) {
+ SS.setRange(QualifierRange);
+ SS.setScopeRep(Qualifier);
+ }
return getSema().BuildMemberReferenceExpr(/*Scope=*/0, move(Base), OpLoc,
isArrow? tok::arrow : tok::period,
MemberLoc,
@@ -1588,6 +1590,9 @@ template<typename Derived>
NestedNameSpecifier *
TreeTransform<Derived>::TransformNestedNameSpecifier(NestedNameSpecifier *NNS,
SourceRange Range) {
+ if (!NNS)
+ return 0;
+
// Transform the prefix of this nested name specifier.
NestedNameSpecifier *Prefix = NNS->getPrefix();
if (Prefix) {
@@ -4014,8 +4019,8 @@ TreeTransform<Derived>::TransformCXXUnresolvedConstructExpr(
template<typename Derived>
Sema::OwningExprResult
-TreeTransform<Derived>::TransformCXXQualifiedMemberExpr(
- CXXQualifiedMemberExpr *E) {
+TreeTransform<Derived>::TransformCXXAdornedMemberExpr(
+ CXXAdornedMemberExpr *E) {
OwningExprResult Base = getDerived().TransformExpr(E->getBase());
if (Base.isInvalid())
return SemaRef.ExprError();
@@ -4028,7 +4033,7 @@ TreeTransform<Derived>::TransformCXXQualifiedMemberExpr(
NestedNameSpecifier *Qualifier
= getDerived().TransformNestedNameSpecifier(E->getQualifier(),
E->getQualifierRange());
- if (Qualifier == 0)
+ if (Qualifier == 0 && E->getQualifier() != 0)
return SemaRef.ExprError();
if (!getDerived().AlwaysRebuild() &&
@@ -4041,7 +4046,7 @@ TreeTransform<Derived>::TransformCXXQualifiedMemberExpr(
SourceLocation FakeOperatorLoc
= SemaRef.PP.getLocForEndOfToken(E->getBase()->getSourceRange().getEnd());
- return getDerived().RebuildCXXQualifiedMemberExpr(move(Base),
+ return getDerived().RebuildCXXAdornedMemberExpr(move(Base),
FakeOperatorLoc,
E->isArrow(),
Qualifier,