1 // RUN: %clang_cc1 -fsyntax-only -verify %s 2 // expected-no-diagnostics 3 4 #define nil (void *)0; 5 #define Nil (void *)0; 6 7 @protocol MyProtocol 8 - (void) foo; 9 @end 10 11 @interface MyClass 12 @end 13 14 int main() 15 { 16 id obj = nil; 17 id<MyProtocol> obj_p = nil; 18 MyClass *obj_c = nil; 19 Class obj_C = Nil; 20 21 /* All these casts should generate no warnings. */ 22 23 obj = (id)obj_p; 24 obj = (id)obj_c; 25 obj = (id)obj_C; 26 obj_c = (MyClass *)obj; 27 obj_c = (MyClass *)obj_p; 28 obj_c = (MyClass *)obj_C; 29 obj_p = (id<MyProtocol>)obj; 30 obj_p = (id<MyProtocol>)obj_c; 31 obj_p = (id<MyProtocol>)obj_C; 32 obj_C = (Class)obj; 33 obj_C = (Class)obj_p; 34 obj_C = (Class)obj_c; 35 36 37 return 0; 38 } 39