[cfe-commits] r132873 - in /cfe/trunk: lib/Sema/SemaExprCXX.cpp test/SemaObjCXX/overload.mm test/SemaObjCXX/related-result-type-inference.mm

Douglas Gregor dgregor at apple.com
Fri Jun 10 21:42:12 PDT 2011


Author: dgregor
Date: Fri Jun 10 23:42:12 2011
New Revision: 132873

URL: http://llvm.org/viewvc/llvm-project?rev=132873&view=rev
Log:
Fix order of operands for the warning about incompatible Objective-C
pointer assignment in C++. This was a longstanding problem spotted by
Jordy Rose.

Modified:
    cfe/trunk/lib/Sema/SemaExprCXX.cpp
    cfe/trunk/test/SemaObjCXX/overload.mm
    cfe/trunk/test/SemaObjCXX/related-result-type-inference.mm

Modified: cfe/trunk/lib/Sema/SemaExprCXX.cpp
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Sema/SemaExprCXX.cpp?rev=132873&r1=132872&r2=132873&view=diff
==============================================================================
--- cfe/trunk/lib/Sema/SemaExprCXX.cpp (original)
+++ cfe/trunk/lib/Sema/SemaExprCXX.cpp Fri Jun 10 23:42:12 2011
@@ -2211,7 +2211,7 @@
   case ICK_Pointer_Conversion: {
     if (SCS.IncompatibleObjC && Action != AA_Casting) {
       // Diagnose incompatible Objective-C conversions
-      if (Action == AA_Initializing)
+      if (Action == AA_Initializing || Action == AA_Assigning)
         Diag(From->getSourceRange().getBegin(),
              diag::ext_typecheck_convert_incompatible_pointer)
           << ToType << From->getType() << Action

Modified: cfe/trunk/test/SemaObjCXX/overload.mm
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/SemaObjCXX/overload.mm?rev=132873&r1=132872&r2=132873&view=diff
==============================================================================
--- cfe/trunk/test/SemaObjCXX/overload.mm (original)
+++ cfe/trunk/test/SemaObjCXX/overload.mm Fri Jun 10 23:42:12 2011
@@ -52,12 +52,12 @@
 
 void test1(A* a) {
   B* b = a; // expected-warning{{incompatible pointer types initializing 'B *' with an expression of type 'A *'}}
-  B *c; c = a; // expected-warning{{incompatible pointer types assigning to 'A *' from 'B *'}}
+  B *c; c = a; // expected-warning{{incompatible pointer types assigning to 'B *' from 'A *'}}
 }
 
 void test2(A** ap) {
   B** bp = ap; // expected-warning{{incompatible pointer types initializing 'B **' with an expression of type 'A **'}}
-  bp = ap; // expected-warning{{incompatible pointer types assigning to 'A **' from 'B **'}}
+  bp = ap; // expected-warning{{incompatible pointer types assigning to 'B **' from 'A **'}}
 }
 
 // FIXME: we should either allow overloading here or give a better diagnostic

Modified: cfe/trunk/test/SemaObjCXX/related-result-type-inference.mm
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/SemaObjCXX/related-result-type-inference.mm?rev=132873&r1=132872&r2=132873&view=diff
==============================================================================
--- cfe/trunk/test/SemaObjCXX/related-result-type-inference.mm (original)
+++ cfe/trunk/test/SemaObjCXX/related-result-type-inference.mm Fri Jun 10 23:42:12 2011
@@ -66,5 +66,5 @@
 
   NSArray *arr = [[NSMutableArray alloc] init];
   NSMutableArray *marr = [arr retain]; // expected-warning{{incompatible pointer types initializing 'NSMutableArray *' with an expression of type 'NSArray *'}}
-  marr = [arr retain]; // expected-warning{{incompatible pointer types assigning to 'NSArray *' from 'NSMutableArray *'}}
+  marr = [arr retain]; // expected-warning{{incompatible pointer types assigning to 'NSMutableArray *' from 'NSArray *'}}
 }





More information about the cfe-commits mailing list