[cfe-commits] r104834 - in /cfe/trunk: lib/Parse/ParseExpr.cpp test/CXX/basic/basic.lookup/basic.lookup.qual/p6.cpp test/SemaTemplate/destructor-template.cpp
Douglas Gregor
dgregor at apple.com
Thu May 27 08:25:59 PDT 2010
Author: dgregor
Date: Thu May 27 10:25:59 2010
New Revision: 104834
URL: http://llvm.org/viewvc/llvm-project?rev=104834&view=rev
Log:
When we've parsed a nested-name-specifier in a member access
expression, "forget" about the object type; only the
nested-name-specifier matters for name lookup purposes. Fixes PR7239.
Modified:
cfe/trunk/lib/Parse/ParseExpr.cpp
cfe/trunk/test/CXX/basic/basic.lookup/basic.lookup.qual/p6.cpp
cfe/trunk/test/SemaTemplate/destructor-template.cpp
Modified: cfe/trunk/lib/Parse/ParseExpr.cpp
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Parse/ParseExpr.cpp?rev=104834&r1=104833&r2=104834&view=diff
==============================================================================
--- cfe/trunk/lib/Parse/ParseExpr.cpp (original)
+++ cfe/trunk/lib/Parse/ParseExpr.cpp Thu May 27 10:25:59 2010
@@ -1022,6 +1022,8 @@
ParseOptionalCXXScopeSpecifier(SS, ObjectType, false,
&MayBePseudoDestructor);
+ if (SS.isNotEmpty())
+ ObjectType = 0;
}
if (Tok.is(tok::code_completion)) {
Modified: cfe/trunk/test/CXX/basic/basic.lookup/basic.lookup.qual/p6.cpp
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/CXX/basic/basic.lookup/basic.lookup.qual/p6.cpp?rev=104834&r1=104833&r2=104834&view=diff
==============================================================================
--- cfe/trunk/test/CXX/basic/basic.lookup/basic.lookup.qual/p6.cpp (original)
+++ cfe/trunk/test/CXX/basic/basic.lookup/basic.lookup.qual/p6.cpp Thu May 27 10:25:59 2010
@@ -20,5 +20,5 @@
typedef A AB;
int main() {
AB *p;
- p->AB::~AB(); // expected-error{{identifier 'AB' in pseudo-destructor expression does not name a type}}
+ p->AB::~AB(); // expected-error{{expected the class name after '~' to name a destructor}}
}
Modified: cfe/trunk/test/SemaTemplate/destructor-template.cpp
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/SemaTemplate/destructor-template.cpp?rev=104834&r1=104833&r2=104834&view=diff
==============================================================================
--- cfe/trunk/test/SemaTemplate/destructor-template.cpp (original)
+++ cfe/trunk/test/SemaTemplate/destructor-template.cpp Thu May 27 10:25:59 2010
@@ -40,3 +40,13 @@
template void f<const volatile int>(int *);
}
+
+namespace PR7239 {
+ template<class E> class A { };
+ class B {
+ void f() {
+ A<int>* x;
+ x->A<int>::~A<int>();
+ }
+ };
+}
More information about the cfe-commits
mailing list