reference, declaration → definition definition → references, declarations, derived classes, virtual overrides reference to multiple definitions → definitions unreferenced |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 | // RUN: %clang_cc1 -fsyntax-only -verify %s @protocol Foo; Class T; id<Foo> S; id R; void foo() { // Test assignment compatibility of Class and id. No warning should be // produced. // 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>'}} R = T; T = R; R = S; S = R; } // Test attempt to redefine 'id' in an incompatible fashion. // rdar://11356439 typedef int id; // expected-error {{typedef redefinition with different types ('int' vs 'id')}} id b; 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}} } |