diff options
Diffstat (limited to 'test/Parser/objc-init.m')
-rw-r--r-- | test/Parser/objc-init.m | 41 |
1 files changed, 41 insertions, 0 deletions
diff --git a/test/Parser/objc-init.m b/test/Parser/objc-init.m new file mode 100644 index 000000000000..a91ac9cf285b --- /dev/null +++ b/test/Parser/objc-init.m @@ -0,0 +1,41 @@ +// RUN: clang-cc -fsyntax-only -verify %s -pedantic +// rdar://5707001 + +@interface NSNumber; +- () METH; +- (unsigned) METH2; +@end + +struct SomeStruct { + int x, y, z, q; +}; + +void test1() { + id objects[] = {[NSNumber METH]}; +} + +void test2(NSNumber x) { // expected-error {{Objective-C interface type 'NSNumber' cannot be passed by value}} + id objects[] = {[x METH]}; +} + +void test3(NSNumber *x) { + id objects[] = {[x METH]}; +} + + +// rdar://5977581 +void test4() { + unsigned x[] = {[NSNumber METH2]+2}; +} + +void test5(NSNumber *x) { + unsigned y[] = { + [4][NSNumber METH2]+2, // expected-warning {{use of GNU 'missing =' extension in designator}} + [4][x METH2]+2 // expected-warning {{use of GNU 'missing =' extension in designator}} + }; + + struct SomeStruct z = { + .x = [x METH2], // ok. + .x [x METH2] // expected-error {{expected '=' or another designator}} + }; +} |