42 lines · plain
1// RUN: %clang_cc1 -fsyntax-only -verify %s2// expected-no-diagnostics3 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 Object13+ self;14@end15 16@protocol Func17+ (void) class_func0;18- (void) instance_func0;19@end20 21@interface Derived: Object <Func>22@end23 24@interface Derived2: Object <Func>25@end26 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