[cfe-commits] r59819 - in /cfe/trunk: lib/Sema/SemaOverload.cpp test/SemaCXX/overload-decl.cpp test/SemaCXX/overloaded-operator.cpp

Douglas Gregor doug.gregor at gmail.com
Fri Nov 21 07:36:34 PST 2008


Author: dgregor
Date: Fri Nov 21 09:36:28 2008
New Revision: 59819

URL: http://llvm.org/viewvc/llvm-project?rev=59819&view=rev
Log:
Fix overloading of non-static member functions that differ in their cv-qualifiers

Modified:
    cfe/trunk/lib/Sema/SemaOverload.cpp
    cfe/trunk/test/SemaCXX/overload-decl.cpp
    cfe/trunk/test/SemaCXX/overloaded-operator.cpp

Modified: cfe/trunk/lib/Sema/SemaOverload.cpp
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Sema/SemaOverload.cpp?rev=59819&r1=59818&r2=59819&view=diff

==============================================================================
--- cfe/trunk/lib/Sema/SemaOverload.cpp (original)
+++ cfe/trunk/lib/Sema/SemaOverload.cpp Fri Nov 21 09:36:28 2008
@@ -326,7 +326,7 @@
     CXXMethodDecl* NewMethod = dyn_cast<CXXMethodDecl>(New);
     if (OldMethod && NewMethod && 
         !OldMethod->isStatic() && !NewMethod->isStatic() &&
-        OldQType.getCVRQualifiers() != NewQType.getCVRQualifiers())
+        OldMethod->getTypeQualifiers() != NewMethod->getTypeQualifiers())
       return true;
 
     // The signatures match; this is not an overload.

Modified: cfe/trunk/test/SemaCXX/overload-decl.cpp
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/SemaCXX/overload-decl.cpp?rev=59819&r1=59818&r2=59819&view=diff

==============================================================================
--- cfe/trunk/test/SemaCXX/overload-decl.cpp (original)
+++ cfe/trunk/test/SemaCXX/overload-decl.cpp Fri Nov 21 09:36:28 2008
@@ -16,9 +16,7 @@
 class X {
   void f();
   void f(int);
-
-  // FIXME: can't test this until we can handle const methods.
-  //   void f() const;
+  void f() const;
 
   void g(int); // expected-error {{error: previous declaration is here}}
   void g(int, float); // expected-error {{error: previous declaration is here}}

Modified: cfe/trunk/test/SemaCXX/overloaded-operator.cpp
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/SemaCXX/overloaded-operator.cpp?rev=59819&r1=59818&r2=59819&view=diff

==============================================================================
--- cfe/trunk/test/SemaCXX/overloaded-operator.cpp (original)
+++ cfe/trunk/test/SemaCXX/overloaded-operator.cpp Fri Nov 21 09:36:28 2008
@@ -90,12 +90,14 @@
 
 struct SmartPtr {
   int& operator*();
-  // FIXME: spurious error:  long& operator*() const;
+  long& operator*() const volatile;
 };
 
-void test_smartptr(SmartPtr ptr, const SmartPtr cptr) {
+void test_smartptr(SmartPtr ptr, const SmartPtr cptr, 
+                   const volatile SmartPtr cvptr) {
   int &ir = *ptr;
-  // FIXME: reinstate long &lr = *cptr;
+  long &lr = *cptr;
+  long &lr2 = *cvptr;
 }
 
 





More information about the cfe-commits mailing list