blob: ed3fbe0f72bfc301b51fab7337c269ac99aa6e78 [file] [log] [blame]
Daniel Dunbara5728872009-12-15 20:14:24 +00001// RUN: %clang_cc1 -fsyntax-only -verify %s
Douglas Gregor7dda67d2009-02-05 19:25:20 +00002@protocol NSObject
3- retain;
4- release;
5@end
6
7@interface NSObject
8- init;
9- dealloc;
10@end
11
12@protocol Foo <NSObject>
13@end
14
15@protocol Bar <Foo>
16@end
17
18@interface Baz : NSObject {
19 id <Foo> _foo;
20 id <Bar> _bar;
21}
22- (id)initWithFoo:(id <Foo>)foo bar:(id <Bar>)bar;
23@end
24
25@implementation Baz
26
27- (id)init
28{
29 return [self initWithFoo:0 bar:0];
30}
31
32- (id)initWithFoo:(id <Foo>)foo bar:(id <Bar>)bar
33{
34 self = [super init];
35 if (self != 0) {
36 _foo = [foo retain];
37 _bar = [bar retain];
38 }
39 return self;
40}
41
Fariborz Jahanianb33f3ad2009-05-01 20:07:12 +000042- dealloc
Douglas Gregor7dda67d2009-02-05 19:25:20 +000043{
44 [_foo release];
45 [_bar release];
46 [super dealloc];
Mike Stumpd1969d82009-07-22 00:43:08 +000047 return 0;
Douglas Gregor7dda67d2009-02-05 19:25:20 +000048}
49
50@end
51