diff options
| author | Douglas Gregor <dgregor@apple.com> | 2009-08-06 03:17:00 +0000 |
|---|---|---|
| committer | Douglas Gregor <dgregor@apple.com> | 2009-08-06 03:17:00 +0000 |
| commit | d806156d5459555168540fdf3db4f473cd3f81cf (patch) | |
| tree | 60b3a05de9f6f9ff7e8cdf02aec449cdf69eefd6 /clang/lib/Sema/SemaTemplateInstantiateExpr.cpp | |
| parent | 3c7b95d9aaaa06a856aa08a6ebce23d4825b15d9 (diff) | |
| download | bcm5719-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.cpp | 12 |
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); } //---------------------------------------------------------------------------- |

