| // RUN: %clang_cc1 -fsyntax-only -verify %s |
| // Test assignment compatibility of Class and id. No warning should be |
| // rdar://6770142 - Class and id<foo> are compatible. |
| S = T; // expected-warning {{incompatible pointer types assigning to 'id<Foo>' from 'Class'}} |
| T = S; // expected-warning {{incompatible pointer types assigning to 'Class' from 'id<Foo>'}} |
| // Test attempt to redefine 'id' in an incompatible fashion. |
| typedef int id; // expected-error {{typedef redefinition with different types ('int' vs 'id')}} |
| typedef double id; // expected-error {{typedef redefinition with different types ('double' vs 'id')}} |
| typedef char *id; // expected-error {{typedef redefinition with different types ('char *' vs 'id')}} |
| typedef union U{ int iu; } *id; // expected-error {{typedef redefinition with different types ('union U *' vs 'id')}} |
| void test11356439(id o) { |
| o->x; // expected-error {{member reference base type 'id' is not a structure or union}} |