18fbe78f6SDaniel Dunbar// RUN: %clang_cc1 -fsyntax-only -verify %s 2*c6e68daaSAndy Gibbs// expected-no-diagnostics 3ef8b8ce2SFariborz Jahanian 46c5a8e25SFariborz Jahanian@protocol MyProtocol @end 56c5a8e25SFariborz Jahanian 6ef8b8ce2SFariborz Jahanian@interface NSObject @end 7ef8b8ce2SFariborz Jahanian 86c5a8e25SFariborz Jahanian@interface NSInterm : NSObject <MyProtocol> 9ef8b8ce2SFariborz Jahanian@end 10ef8b8ce2SFariborz Jahanian 11ef8b8ce2SFariborz Jahanian@interface NSArray : NSInterm 12ef8b8ce2SFariborz Jahanian@end 13ef8b8ce2SFariborz Jahanian 146c5a8e25SFariborz Jahanian@interface NSSet : NSObject <MyProtocol> 15ef8b8ce2SFariborz Jahanian@end 16ef8b8ce2SFariborz Jahanian 17ef8b8ce2SFariborz Jahanian 186c5a8e25SFariborz Jahanian@interface N1 : NSObject 196c5a8e25SFariborz Jahanian@end 206c5a8e25SFariborz Jahanian 216c5a8e25SFariborz Jahanian@interface N1() <MyProtocol> 226c5a8e25SFariborz Jahanian@end 236c5a8e25SFariborz Jahanian 24ef8b8ce2SFariborz JahanianNSObject* test (int argc) { 25ef8b8ce2SFariborz Jahanian NSArray *array = ((void*)0); 26ef8b8ce2SFariborz Jahanian NSSet *set = ((void*)0); 27ef8b8ce2SFariborz Jahanian return (argc) ? set : array ; 28ef8b8ce2SFariborz Jahanian} 29ef8b8ce2SFariborz Jahanian 30ef8b8ce2SFariborz Jahanian 31ef8b8ce2SFariborz JahanianNSObject* test1 (int argc) { 32ef8b8ce2SFariborz Jahanian NSArray *array = ((void*)0); 33ef8b8ce2SFariborz Jahanian NSSet *set = ((void*)0); 346c5a8e25SFariborz Jahanian id <MyProtocol> instance = (argc) ? array : set; 356c5a8e25SFariborz Jahanian id <MyProtocol> instance1 = (argc) ? set : array; 366c5a8e25SFariborz Jahanian 376c5a8e25SFariborz Jahanian N1 *n1 = ((void*)0); 386c5a8e25SFariborz Jahanian id <MyProtocol> instance2 = (argc) ? set : n1; 396c5a8e25SFariborz Jahanian id <MyProtocol> instance3 = (argc) ? n1 : array; 406c5a8e25SFariborz Jahanian 416c5a8e25SFariborz Jahanian NSArray<MyProtocol> *qual_array = ((void*)0); 426c5a8e25SFariborz Jahanian id <MyProtocol> instance4 = (argc) ? array : qual_array; 436c5a8e25SFariborz Jahanian id <MyProtocol> instance5 = (argc) ? qual_array : array; 446c5a8e25SFariborz Jahanian NSSet<MyProtocol> *qual_set = ((void*)0); 456c5a8e25SFariborz Jahanian id <MyProtocol> instance6 = (argc) ? qual_set : qual_array; 466c5a8e25SFariborz Jahanian id <MyProtocol> instance7 = (argc) ? qual_set : array; 476c5a8e25SFariborz Jahanian id <MyProtocol> instance8 = (argc) ? qual_array : set; 486c5a8e25SFariborz Jahanian id <MyProtocol> instance9 = (argc) ? qual_array : qual_set; 496c5a8e25SFariborz Jahanian 506c5a8e25SFariborz Jahanian 51ef8b8ce2SFariborz Jahanian return (argc) ? array : set; 52ef8b8ce2SFariborz Jahanian} 53