// RUN: %clang_cc1 -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}}
  };
}

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

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



