blob: 777084d8554bf1c528d22c4b298513f8c15c4974 [file] [log] [blame]
Daniel Dunbara5728872009-12-15 20:14:24 +00001// RUN: %clang_cc1 -fsyntax-only -verify %s
Andy Gibbs8e8fb3b2012-10-19 12:44:48 +00002// expected-no-diagnostics
Steve Naroffebaa7682009-04-07 15:07:57 +00003
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
Steve Naroff470301b2009-07-22 16:07:01 +000027static void doSomething(Class <Func> unsupportedObjectType) {
Steve Naroffebaa7682009-04-07 15:07:57 +000028 [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