// RUN: %clang_cc1 -fsyntax-only -verify %s | |
// expected-no-diagnostics | |
@protocol NSObject | |
- retain; | |
- release; | |
@end | |
@interface NSObject | |
- init; | |
- dealloc; | |
@end | |
@protocol Foo <NSObject> | |
@end | |
@protocol Bar <Foo> | |
@end | |
@interface Baz : NSObject { | |
id <Foo> _foo; | |
id <Bar> _bar; | |
} | |
- (id)initWithFoo:(id <Foo>)foo bar:(id <Bar>)bar; | |
@end | |
@implementation Baz | |
- (id)init | |
{ | |
return [self initWithFoo:0 bar:0]; | |
} | |
- (id)initWithFoo:(id <Foo>)foo bar:(id <Bar>)bar | |
{ | |
self = [super init]; | |
if (self != 0) { | |
_foo = [foo retain]; | |
_bar = [bar retain]; | |
} | |
return self; | |
} | |
- dealloc | |
{ | |
[_foo release]; | |
[_bar release]; | |
[super dealloc]; | |
return 0; | |
} | |
@end | |