Home | History | Annotate | Download | only in SemaObjC
      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