blob: 18a9982840bd0fe992d9a565d9042ed335987dea [file] [log] [blame]
Shih-wei Liaof8fd82b2010-02-10 11:10:31 -08001// RUN: %clang_cc1 -fsyntax-only -verify %s
2
3typedef struct { int y; } Abstract;
4
5typedef struct { int x; } Alternate;
6
7#define INTERFERE_TYPE Alternate*
8
9@protocol A
10@property Abstract *x; // expected-note {{using}}
11@end
12
13@interface B
14@property Abstract *y; // expected-note {{using}}
15@end
16
17@interface B (Category)
18@property Abstract *z; // expected-note {{using}}
19@end
20
21@interface InterferencePre
22-(void) x; // expected-note {{also found}}
23-(void) y; // expected-note {{also found}}
24-(void) z; // expected-note {{also found}}
25-(void) setX: (INTERFERE_TYPE) arg;
26-(void) setY: (INTERFERE_TYPE) arg;
27-(void) setZ: (INTERFERE_TYPE) arg;
28@end
29
30void f0(id a0) {
31 Abstract *l = [a0 x]; // expected-warning {{multiple methods named 'x' found}}
32}
33
34void f1(id a0) {
35 Abstract *l = [a0 y]; // expected-warning {{multiple methods named 'y' found}}
36}
37
38void f2(id a0) {
39 Abstract *l = [a0 z]; // expected-warning {{multiple methods named 'z' found}}
40}
41
42void f3(id a0, Abstract *a1) {
43 [ a0 setX: a1];
44}
45
46void f4(id a0, Abstract *a1) {
47 [ a0 setY: a1];
48}
49
50void f5(id a0, Abstract *a1) {
51 [ a0 setZ: a1];
52}