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 8 void 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