[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