1// RUN: %clang_cc1 -fsyntax-only -verify %s 2@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 42- dealloc 43{ 44 [_foo release]; 45 [_bar release]; 46 [super dealloc]; 47 return 0; 48} 49 50@end 51 52void rdar8575095(id a) { 53 [id<NSObject>(a) retain]; 54 id<NSObject> x(id<NSObject>(0)); 55 id<NSObject> x2(id<NSObject>(y)); // expected-warning{{disambiguated as a function declaration}} expected-note{{add a pair of parentheses}} 56} 57