// RUN: %clang_cc1 -fsyntax-only -fobjc-runtime=macosx-fragile -verify -pedantic -Wno-objc-root-class %s
// RUN: %clang_cc1 -fsyntax-only -fobjc-runtime=macosx-fragile -verify -x objective-c++ -Wno-objc-root-class %s
// RUN: %clang_cc1 -fsyntax-only -fobjc-runtime=macosx-fragile -verify -x objective-c++ -Wno-objc-root-class -std=c++98 %s
// RUN: %clang_cc1 -fsyntax-only -fobjc-runtime=macosx-fragile -verify -x objective-c++ -Wno-objc-root-class -std=c++11 %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 in C++98.
#if __cplusplus >= 201103L
    // expected-error@-2 {{non-constant-expression cannot be narrowed from type 'unsigned int' to 'int' in initializer list}}
    // expected-note@-3 {{insert an explicit cast to silence this issue}}
#endif
    .x [x METH2]    // expected-error {{expected '=' or another designator}}
#if __cplusplus >= 201103L
    // expected-error@-2 {{non-constant-expression cannot be narrowed from type 'unsigned int' to 'int' in initializer list}}
    // expected-note@-3 {{insert an explicit cast to silence this issue}}
#endif
  };
}

// rdar://7370882
@interface SemicolonsAppDelegate 
{
  id i;
}
@property (assign) id window;
@end

@implementation SemicolonsAppDelegate
{
  id i;
}
  @synthesize window=i;
@end



