1// RUN: %clang_cc1 -fsyntax-only -verify %s
2// rdar://7634850
3
4@interface Foo
5- (void)foo:(Class)class; // expected-note{{passing argument to parameter 'class' here}}
6@end
7
8void FUNC() {
9    Class c, c1;
10    SEL s1, s2;
11    id i, i1;
12    Foo *f;
13    [f foo:f];	// expected-warning {{incompatible pointer types sending 'Foo *' to parameter of type 'Class'}}
14    c = f;	// expected-warning {{incompatible pointer types assigning to 'Class' from 'Foo *'}}
15
16    c = i;
17
18    i = c;
19
20    c = c1;
21
22    i = i1;
23
24    s1 = i;	// expected-warning {{incompatible pointer types assigning to 'SEL' from 'id'}}
25    i = s1;	// expected-warning {{incompatible pointer types assigning to 'id' from 'SEL'}}
26
27    s1 = s2;
28
29    s1 = c;	// expected-warning {{incompatible pointer types assigning to 'SEL' from 'Class'}}
30
31    c = s1;	// expected-warning {{incompatible pointer types assigning to 'Class' from 'SEL'}}
32
33    f = i;
34
35    f = c;	// expected-warning {{incompatible pointer types assigning to 'Foo *' from 'Class'}}
36
37    f = s1;	// expected-warning {{incompatible pointer types assigning to 'Foo *' from 'SEL'}}
38
39    i = f;
40
41    s1 = f; 	// expected-warning {{incompatible pointer types assigning to 'SEL' from 'Foo *'}}
42}
43