| // RUN: clang-cc -fsyntax-only -verify %s |
| @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 |
| |