[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