1// RUN: %clang_cc1 -fsyntax-only -fobjc-fragile-abi -verify %s -pedantic
2// RUN: %clang_cc1 -fsyntax-only -fobjc-fragile-abi -verify -x objective-c++ %s 
3// rdar://5707001
4
5@interface NSNumber;
6- () METH;
7- (unsigned) METH2;
8@end
9
10struct SomeStruct {
11  int x, y, z, q;
12};
13
14void test1() {
15	id objects[] = {[NSNumber METH]};
16}
17
18void test2(NSNumber x) { // expected-error {{Objective-C interface type 'NSNumber' cannot be passed by value; did you forget * in 'NSNumber'}}
19	id objects[] = {[x METH]};
20}
21
22void test3(NSNumber *x) {
23	id objects[] = {[x METH]};
24}
25
26
27// rdar://5977581
28void test4() {
29  unsigned x[] = {[NSNumber METH2]+2};
30}
31
32void test5(NSNumber *x) {
33  unsigned y[] = {
34    [4][NSNumber METH2]+2,   // expected-warning {{use of GNU 'missing =' extension in designator}}
35    [4][x METH2]+2   // expected-warning {{use of GNU 'missing =' extension in designator}}
36  };
37  
38  struct SomeStruct z = {
39    .x = [x METH2], // ok.
40    .x [x METH2]    // expected-error {{expected '=' or another designator}}
41  };
42}
43
44// rdar://7370882
45@interface SemicolonsAppDelegate 
46{
47  id i;
48}
49@property (assign) id window;
50@end
51
52@implementation SemicolonsAppDelegate
53{
54  id i;
55}
56  @synthesize window=i;
57@end
58
59
60
61