blob: 085db7256898c536e54c577f3b727818feb846ba [file] [log] [blame]
Chris Lattner034198c2008-10-26 23:29:41 +00001// RUN: clang -fsyntax-only -verify %s -pedantic
Chris Lattner16c865e2008-01-25 19:37:24 +00002// rdar://5707001
3
4@interface NSNumber;
5- () METH;
Chris Lattnerbfcf4772008-06-02 21:31:07 +00006- (unsigned) METH2;
Chris Lattner16c865e2008-01-25 19:37:24 +00007@end
8
Chris Lattner034198c2008-10-26 23:29:41 +00009struct SomeStruct {
10 int x, y, z, q;
11};
12
Chris Lattnere69015d2008-01-25 19:43:26 +000013void test1() {
Chris Lattner16c865e2008-01-25 19:37:24 +000014 id objects[] = {[NSNumber METH]};
Chris Lattnere69015d2008-01-25 19:43:26 +000015}
16
17void test2(NSNumber x) {
Chris Lattnerf9147652008-07-21 06:12:56 +000018 id objects[] = {[x METH]}; // expected-error {{bad receiver type}}
19}
20
21void test3(NSNumber *x) {
Chris Lattnere69015d2008-01-25 19:43:26 +000022 id objects[] = {[x METH]};
Chris Lattner16c865e2008-01-25 19:37:24 +000023}
24
Chris Lattnere69015d2008-01-25 19:43:26 +000025
Chris Lattnerbfcf4772008-06-02 21:31:07 +000026// rdar://5977581
Chris Lattnerf9147652008-07-21 06:12:56 +000027void test4() {
Chris Lattnerbfcf4772008-06-02 21:31:07 +000028 unsigned x[] = {[NSNumber METH2]+2};
29}
30
Chris Lattner034198c2008-10-26 23:29:41 +000031void test5(NSNumber *x) {
32 unsigned y[] = {
33 [4][NSNumber METH2]+2, // expected-warning {{use of GNU 'missing =' extension in designator}}
34 [4][x METH2]+2 // expected-warning {{use of GNU 'missing =' extension in designator}}
35 };
36
37 struct SomeStruct z = {
38 .x = [x METH2], // ok.
39 .x [x METH2] // expected-error {{expected '=' or another designator}}
40 };
41}