]> granicus.if.org Git - clang/commitdiff
Improve on diagnostics when an objc class is used as
authorFariborz Jahanian <fjahanian@apple.com>
Wed, 7 Apr 2010 00:22:00 +0000 (00:22 +0000)
committerFariborz Jahanian <fjahanian@apple.com>
Wed, 7 Apr 2010 00:22:00 +0000 (00:22 +0000)
a stand-alone type declaration.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@100588 91177308-0d34-0410-b5e6-96231b3b80d8

include/clang/Basic/DiagnosticSemaKinds.td
test/Parser/objc-init.m
test/SemaObjC/blocks.m
test/SemaObjC/invalid-objc-decls-1.m
test/SemaObjC/method-bad-param.m

index ebd3a4e252ed9187587d9387efc5e132e04c205b..a2f7147e4429b28bccedd38117a6c25d11ce6158 100644 (file)
@@ -215,7 +215,8 @@ def ext_typedef_without_a_name : ExtWarn<"typedef requires a name">;
 def err_statically_allocated_object : Error<
   "interface type cannot be statically allocated">;
 def err_object_cannot_be_passed_returned_by_value : Error<
-  "interface type %1 cannot be %select{returned|passed}0 by value">;
+  "interface type %1 cannot be %select{returned|passed}0 by value"
+  "; did you forget * in %1">;
 def warn_enum_value_overflow : Warning<"overflow in enumeration value">;
 def warn_pragma_pack_invalid_alignment : Warning<
   "expected #pragma pack parameter to be '1', '2', '4', '8', or '16'">;
index 0c23aebc878c918a5e8b018e80367262049c7991..0024f0278f16a3ca2a05c6af21c85c0d0b7f990a 100644 (file)
@@ -14,7 +14,7 @@ void test1() {
        id objects[] = {[NSNumber METH]};
 }
 
-void test2(NSNumber x) { // expected-error {{Objective-C interface type 'NSNumber' cannot be passed by value}}
+void test2(NSNumber x) { // expected-error {{Objective-C interface type 'NSNumber' cannot be passed by value; did you forget * in 'NSNumber'}}
        id objects[] = {[x METH]};
 }
 
index ddac7d1759ec84ba26ab47bc0fe997b61c807835..afa3bdf071bd0f405181fd38e7ae1788ce55630f 100644 (file)
@@ -39,10 +39,10 @@ void foo7(id (^x)(int)) {
 @end
 
 void foo8() {
-  void *P = ^(itf x) {};  // expected-error {{Objective-C interface type 'itf' cannot be passed by value}}
-  P = ^itf(int x) {};     // expected-error {{Objective-C interface type 'itf' cannot be returned by value}}
-  P = ^itf() {};          // expected-error {{Objective-C interface type 'itf' cannot be returned by value}}
-  P = ^itf{};             // expected-error {{Objective-C interface type 'itf' cannot be returned by value}}
+  void *P = ^(itf x) {};  // expected-error {{Objective-C interface type 'itf' cannot be passed by value; did you forget * in 'itf'}}
+  P = ^itf(int x) {};     // expected-error {{Objective-C interface type 'itf' cannot be returned by value; did you forget * in 'itf'}}
+  P = ^itf() {};          // expected-error {{Objective-C interface type 'itf' cannot be returned by value; did you forget * in 'itf'}}
+  P = ^itf{};             // expected-error {{Objective-C interface type 'itf' cannot be returned by value; did you forget * in 'itf'}}
 }
 
 
index 2f3be285df3fa36bc3fa228a6b345ea0ca758664..91bd8a8c8698aac24b76bd57bb0765562503ff47 100644 (file)
@@ -27,8 +27,8 @@ struct whatever {
 }
 @end
 
-Super foo( // expected-error{{interface interface type 'Super' cannot be returned by value}}
-          Super parm1) { // expected-error{{interface interface type 'Super' cannot be passed by value}}
+Super foo( // expected-error{{interface interface type 'Super' cannot be returned by value; did you forget * in 'Super'}}
+          Super parm1) { // expected-error{{interface interface type 'Super' cannot be passed by value; did you forget * in 'Super'}}
        Super p1; // expected-error{{interface type cannot be statically allocated}}
        return p1;
 }
index c1509bf9f6f21884190363b19ffd3ee199700769..324ed342f9188a611be0b4ec53b78c1c1499f0e1 100644 (file)
@@ -7,21 +7,21 @@
 @end
 
 @interface bar
--(void) my_method:(foo) my_param; // expected-error {{Objective-C interface type 'foo' cannot be passed by value}}
-- (foo)cccccc:(long)ddddd;  // expected-error {{Objective-C interface type 'foo' cannot be returned by value}}
+-(void) my_method:(foo) my_param; // expected-error {{Objective-C interface type 'foo' cannot be passed by value; did you forget * in 'foo'}}
+- (foo)cccccc:(long)ddddd;  // expected-error {{Objective-C interface type 'foo' cannot be returned by value; did you forget * in 'foo'}}
 @end
 
 @implementation bar
--(void) my_method:(foo) my_param  // expected-error {{Objective-C interface type 'foo' cannot be passed by value}}
+-(void) my_method:(foo) my_param  // expected-error {{Objective-C interface type 'foo' cannot be passed by value; did you forget * in 'foo'}}
 {
 }
-- (foo)cccccc:(long)ddddd // expected-error {{Objective-C interface type 'foo' cannot be returned by value}}
+- (foo)cccccc:(long)ddddd // expected-error {{Objective-C interface type 'foo' cannot be returned by value; did you forget * in 'foo'}}
 {
 }
 @end
 
-void somefunc(foo x) {} // expected-error {{Objective-C interface type 'foo' cannot be passed by value}}
-foo somefunc2() {} // expected-error {{Objective-C interface type 'foo' cannot be returned by value}}
+void somefunc(foo x) {} // expected-error {{Objective-C interface type 'foo' cannot be passed by value; did you forget * in 'foo'}}
+foo somefunc2() {} // expected-error {{Objective-C interface type 'foo' cannot be returned by value; did you forget * in 'foo'}}
 
 // rdar://6780761
 void f0(foo *a0) {