Improve the diagnostic for -Wcustom-atomic-properties. Suggestion by Fariborz!
[clang.git] / test / SemaObjC / method-bad-param.m
blob388e44724d5b68510caf37301b31b76ba2b57a70
1 // RUN: %clang_cc1 -fsyntax-only -verify %s
3 @interface foo
4 @end
6 @implementation foo
7 @end
9 @interface bar
10 -(void) my_method:(foo) my_param; // expected-error {{Objective-C interface type 'foo' cannot be passed by value; did you forget * in 'foo'}}
11 - (foo)cccccc:(long)ddddd;  // expected-error {{Objective-C interface type 'foo' cannot be returned by value; did you forget * in 'foo'}}
12 @end
14 @implementation bar
15 -(void) my_method:(foo) my_param  // expected-error {{Objective-C interface type 'foo' cannot be passed by value; did you forget * in 'foo'}}
18 - (foo)cccccc:(long)ddddd // expected-error {{Objective-C interface type 'foo' cannot be returned by value; did you forget * in 'foo'}}
21 @end
23 void somefunc(foo x) {} // expected-error {{Objective-C interface type 'foo' cannot be passed by value; did you forget * in 'foo'}}
24 foo somefunc2() {} // expected-error {{Objective-C interface type 'foo' cannot be returned by value; did you forget * in 'foo'}}
26 // rdar://6780761
27 void f0(foo *a0) {
28   extern void g0(int x, ...);
29   g0(1, *(foo*)0);  // expected-error {{cannot pass object with interface type 'foo' by-value through variadic function}}
32 // rdar://8421082
33 enum bogus; // expected-note {{forward declaration of 'enum bogus'}}
35 @interface fee  {
37 - (void)crashMe:(enum bogus)p;
38 @end
40 @implementation fee
41 - (void)crashMe:(enum bogus)p { // expected-error {{variable has incomplete type 'enum bogus'}}
43 @end