summaryrefslogtreecommitdiffstats
path: root/clang/lib/Sema/SemaCXXScopeSpec.cpp
diff options
context:
space:
mode:
authorDouglas Gregor <dgregor@apple.com>2008-12-16 00:38:16 +0000
committerDouglas Gregor <dgregor@apple.com>2008-12-16 00:38:16 +0000
commit29e174cc58fccdb8974223d6371f02ad6a478da2 (patch)
treebfe69ed80c65d676b2632fcfbd52b01e3befcbc6 /clang/lib/Sema/SemaCXXScopeSpec.cpp
parentdd12c786a0c0e0ba6bdc4470b1d93c10c1f90517 (diff)
downloadbcm5719-llvm-29e174cc58fccdb8974223d6371f02ad6a478da2.tar.gz
bcm5719-llvm-29e174cc58fccdb8974223d6371f02ad6a478da2.zip
Make name lookup when we're inside a declarator's scope, such as ClassName::func, work with the new unqualified name lookup code. Test it with default arguments in out-of-line member definitions
llvm-svn: 61060
Diffstat (limited to 'clang/lib/Sema/SemaCXXScopeSpec.cpp')
-rw-r--r--clang/lib/Sema/SemaCXXScopeSpec.cpp11
1 files changed, 5 insertions, 6 deletions
diff --git a/clang/lib/Sema/SemaCXXScopeSpec.cpp b/clang/lib/Sema/SemaCXXScopeSpec.cpp
index 193e259f1da..8b3218b33b1 100644
--- a/clang/lib/Sema/SemaCXXScopeSpec.cpp
+++ b/clang/lib/Sema/SemaCXXScopeSpec.cpp
@@ -134,8 +134,8 @@ Sema::CXXScopeTy *Sema::ActOnCXXNestedNameSpecifier(Scope *S,
void Sema::ActOnCXXEnterDeclaratorScope(Scope *S, const CXXScopeSpec &SS) {
assert(SS.isSet() && "Parser passed invalid CXXScopeSpec.");
assert(PreDeclaratorDC == 0 && "Previous declarator context not popped?");
- PreDeclaratorDC = CurContext;
- CurContext = static_cast<DeclContext*>(SS.getScopeRep());
+ PreDeclaratorDC = static_cast<DeclContext*>(S->getEntity());
+ S->setEntity(static_cast<DeclContext*>(SS.getScopeRep()));
}
/// ActOnCXXExitDeclaratorScope - Called when a declarator that previously
@@ -143,10 +143,9 @@ void Sema::ActOnCXXEnterDeclaratorScope(Scope *S, const CXXScopeSpec &SS) {
/// CXXScopeSpec that was passed to ActOnCXXEnterDeclaratorScope as well.
/// Used to indicate that names should revert to being looked up in the
/// defining scope.
-void Sema::ActOnCXXExitDeclaratorScope(const CXXScopeSpec &SS) {
+void Sema::ActOnCXXExitDeclaratorScope(Scope *S, const CXXScopeSpec &SS) {
assert(SS.isSet() && "Parser passed invalid CXXScopeSpec.");
- assert(CurContext == static_cast<DeclContext*>(SS.getScopeRep()) &&
- "Context imbalance!");
- CurContext = PreDeclaratorDC;
+ assert(S->getEntity() == SS.getScopeRep() && "Context imbalance!");
+ S->setEntity(PreDeclaratorDC);
PreDeclaratorDC = 0;
}
OpenPOWER on IntegriCloud