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