diff options
Diffstat (limited to 'clang/test/Parser/objc-init.m')
-rw-r--r-- | clang/test/Parser/objc-init.m | 60 |
1 files changed, 60 insertions, 0 deletions
diff --git a/clang/test/Parser/objc-init.m b/clang/test/Parser/objc-init.m new file mode 100644 index 0000000..efa1266 --- /dev/null +++ b/clang/test/Parser/objc-init.m @@ -0,0 +1,60 @@ +// RUN: %clang_cc1 -fsyntax-only -fobjc-fragile-abi -verify -pedantic -Wno-objc-root-class %s +// RUN: %clang_cc1 -fsyntax-only -fobjc-fragile-abi -verify -x objective-c++ -Wno-objc-root-class %s +// 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 {{interface type 'NSNumber' cannot be passed by value; did you forget * in 'NSNumber'}} + 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}} + }; +} + +// rdar://7370882 +@interface SemicolonsAppDelegate +{ + id i; +} +@property (assign) id window; +@end + +@implementation SemicolonsAppDelegate +{ + id i; +} + @synthesize window=i; +@end + + + |