1 // RUN: %clang_cc1 -fsyntax-only -fobjc-runtime=macosx-fragile -verify -pedantic -Wno-objc-root-class %s 2 // RUN: %clang_cc1 -fsyntax-only -fobjc-runtime=macosx-fragile -verify -x objective-c++ -Wno-objc-root-class %s 3 // RUN: %clang_cc1 -fsyntax-only -fobjc-runtime=macosx-fragile -verify -x objective-c++ -Wno-objc-root-class -std=c++98 %s 4 // RUN: %clang_cc1 -fsyntax-only -fobjc-runtime=macosx-fragile -verify -x objective-c++ -Wno-objc-root-class -std=c++11 %s 5 // rdar://5707001 6 7 @interface NSNumber; 8 - () METH; 9 - (unsigned) METH2; 10 @end 11 12 struct SomeStruct { 13 int x, y, z, q; 14 }; 15 16 void test1() { 17 id objects[] = {[NSNumber METH]}; 18 } 19 20 void test2(NSNumber x) { // expected-error {{interface type 'NSNumber' cannot be passed by value; did you forget * in 'NSNumber'}} 21 id objects[] = {[x METH]}; 22 } 23 24 void test3(NSNumber *x) { 25 id objects[] = {[x METH]}; 26 } 27 28 29 // rdar://5977581 30 void test4() { 31 unsigned x[] = {[NSNumber METH2]+2}; 32 } 33 34 void test5(NSNumber *x) { 35 unsigned y[] = { 36 [4][NSNumber METH2]+2, // expected-warning {{use of GNU 'missing =' extension in designator}} 37 [4][x METH2]+2 // expected-warning {{use of GNU 'missing =' extension in designator}} 38 }; 39 40 struct SomeStruct z = { 41 .x = [x METH2], // ok in C++98. 42 #if __cplusplus >= 201103L 43 // expected-error@-2 {{non-constant-expression cannot be narrowed from type 'unsigned int' to 'int' in initializer list}} 44 // expected-note@-3 {{insert an explicit cast to silence this issue}} 45 #endif 46 .x [x METH2] // expected-error {{expected '=' or another designator}} 47 #if __cplusplus >= 201103L 48 // expected-error@-2 {{non-constant-expression cannot be narrowed from type 'unsigned int' to 'int' in initializer list}} 49 // expected-note@-3 {{insert an explicit cast to silence this issue}} 50 #endif 51 }; 52 } 53 54 // rdar://7370882 55 @interface SemicolonsAppDelegate 56 { 57 id i; 58 } 59 @property (assign) id window; 60 @end 61 62 @implementation SemicolonsAppDelegate 63 { 64 id i; 65 } 66 @synthesize window=i; 67 @end 68 69 70 71