1// RUN: %clang_cc1 -fsyntax-only -verify %s 2// expected-no-diagnostics 3 4#include <stddef.h> 5 6typedef struct objc_class *Class; 7typedef struct objc_object { 8 Class isa; 9} *id; 10id 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 27static void doSomething(Class <Func> unsupportedObjectType) { 28 [unsupportedObjectType class_func0]; 29} 30 31static void doSomethingElse(id <Func> pleaseConvertToThisType) { 32 [pleaseConvertToThisType class_func0]; 33} 34 35int main(int argv, char *argc[]) { 36 doSomething([Derived self]); 37 doSomething([Derived2 self]); 38 doSomethingElse([Derived self]); 39 doSomethingElse([Derived2 self]); 40} 41 42