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 *'}}
 }


_______________________________________________
cfe-commits mailing list
[email protected]
http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits

Reply via email to