summaryrefslogtreecommitdiffstats
path: root/clang/lib/Sema/SemaTemplateInstantiateExpr.cpp
diff options
context:
space:
mode:
authorDouglas Gregor <dgregor@apple.com>2009-08-06 03:17:00 +0000
committerDouglas Gregor <dgregor@apple.com>2009-08-06 03:17:00 +0000
commitd806156d5459555168540fdf3db4f473cd3f81cf (patch)
tree60b3a05de9f6f9ff7e8cdf02aec449cdf69eefd6 /clang/lib/Sema/SemaTemplateInstantiateExpr.cpp
parent3c7b95d9aaaa06a856aa08a6ebce23d4825b15d9 (diff)
downloadbcm5719-llvm-d806156d5459555168540fdf3db4f473cd3f81cf.tar.gz
bcm5719-llvm-d806156d5459555168540fdf3db4f473cd3f81cf.zip
Support nested-name-specifiers for C++ member access expressions, e.g.,
this->Base::foo from James Porter! llvm-svn: 78278
Diffstat (limited to 'clang/lib/Sema/SemaTemplateInstantiateExpr.cpp')
-rw-r--r--clang/lib/Sema/SemaTemplateInstantiateExpr.cpp12
1 files changed, 8 insertions, 4 deletions
diff --git a/clang/lib/Sema/SemaTemplateInstantiateExpr.cpp b/clang/lib/Sema/SemaTemplateInstantiateExpr.cpp
index 3169998fb38..2e7ed1a6326 100644
--- a/clang/lib/Sema/SemaTemplateInstantiateExpr.cpp
+++ b/clang/lib/Sema/SemaTemplateInstantiateExpr.cpp
@@ -1270,14 +1270,18 @@ TemplateExprInstantiator::VisitCXXUnresolvedMemberExpr(
if (Base.isInvalid())
return SemaRef.ExprError();
+ tok::TokenKind OpKind = E->isArrow() ? tok::arrow : tok::period;
+ CXXScopeSpec SS;
+ Base = SemaRef.ActOnCXXEnterMemberScope(0, SS, move(Base), OpKind);
// FIXME: Instantiate the declaration name.
- return SemaRef.ActOnMemberReferenceExpr(/*Scope=*/0,
+ Base = SemaRef.ActOnMemberReferenceExpr(/*Scope=*/0,
move(Base), E->getOperatorLoc(),
- E->isArrow()? tok::arrow
- : tok::period,
+ OpKind,
E->getMemberLoc(),
/*FIXME:*/*E->getMember().getAsIdentifierInfo(),
- /*FIXME?*/Sema::DeclPtrTy::make((Decl*)0));
+ /*FIXME?*/Sema::DeclPtrTy::make((Decl*)0));
+ SemaRef.ActOnCXXExitMemberScope(0, SS);
+ return move(Base);
}
//----------------------------------------------------------------------------
OpenPOWER on IntegriCloud