Home | History | Annotate | Download | only in SemaObjC
      1 // RUN: %clang_cc1 -fsyntax-only -verify %s
      2 // expected-no-diagnostics
      3 
      4 #include <stddef.h>
      5 
      6 typedef struct objc_class *Class;
      7 typedef struct objc_object {
      8     Class isa;
      9 } *id;
     10 id objc_getClass(const char *s);
     11 
     12 @interface Object
     13 + self;
     14 @end
     15 
     16 @protocol Func
     17 + (void) class_func0;
     18 - (void) instance_func0;
     19 @end
     20 
     21 @interface Derived: Object <Func>
     22 @end
     23 
     24 @interface Derived2: Object <Func>
     25 @end
     26 
     27 static void doSomething(Class <Func> unsupportedObjectType) {
     28   [unsupportedObjectType class_func0];
     29 }
     30 
     31 static void doSomethingElse(id <Func> pleaseConvertToThisType) {
     32   [pleaseConvertToThisType class_func0];
     33 }
     34 
     35 int main(int argv, char *argc[]) {
     36   doSomething([Derived self]);
     37   doSomething([Derived2 self]);
     38   doSomethingElse([Derived self]);
     39   doSomethingElse([Derived2 self]);
     40 }
     41 
     42