xref: /llvm-project/clang/test/SemaObjC/conditional-expr-6.m (revision c6e68daac0fa6e77a89f3ca72f266a528503dd1c)
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