blob: e944e540b2fcc92ba1f9753999250b6e890fdb1c [file] [log] [blame]
Daniel Dunbara5728872009-12-15 20:14:24 +00001// RUN: %clang_cc1 -fsyntax-only -verify %s
Andy Gibbs8e8fb3b2012-10-19 12:44:48 +00002// expected-no-diagnostics
Fariborz Jahaniandb07b3f2009-10-27 23:02:38 +00003
Fariborz Jahaniane23fa2d2009-10-30 01:13:23 +00004@protocol MyProtocol @end
5
Fariborz Jahaniandb07b3f2009-10-27 23:02:38 +00006@interface NSObject @end
7
Fariborz Jahaniane23fa2d2009-10-30 01:13:23 +00008@interface NSInterm : NSObject <MyProtocol>
Fariborz Jahaniandb07b3f2009-10-27 23:02:38 +00009@end
10
11@interface NSArray : NSInterm
12@end
13
Fariborz Jahaniane23fa2d2009-10-30 01:13:23 +000014@interface NSSet : NSObject <MyProtocol>
Fariborz Jahaniandb07b3f2009-10-27 23:02:38 +000015@end
16
17
Fariborz Jahaniane23fa2d2009-10-30 01:13:23 +000018@interface N1 : NSObject
19@end
20
21@interface N1() <MyProtocol>
22@end
23
Fariborz Jahaniandb07b3f2009-10-27 23:02:38 +000024NSObject* test (int argc) {
25 NSArray *array = ((void*)0);
26 NSSet *set = ((void*)0);
27 return (argc) ? set : array ;
28}
29
30
31NSObject* test1 (int argc) {
32 NSArray *array = ((void*)0);
33 NSSet *set = ((void*)0);
Fariborz Jahaniane23fa2d2009-10-30 01:13:23 +000034 id <MyProtocol> instance = (argc) ? array : set;
35 id <MyProtocol> instance1 = (argc) ? set : array;
36
37 N1 *n1 = ((void*)0);
38 id <MyProtocol> instance2 = (argc) ? set : n1;
39 id <MyProtocol> instance3 = (argc) ? n1 : array;
40
41 NSArray<MyProtocol> *qual_array = ((void*)0);
42 id <MyProtocol> instance4 = (argc) ? array : qual_array;
43 id <MyProtocol> instance5 = (argc) ? qual_array : array;
44 NSSet<MyProtocol> *qual_set = ((void*)0);
45 id <MyProtocol> instance6 = (argc) ? qual_set : qual_array;
46 id <MyProtocol> instance7 = (argc) ? qual_set : array;
47 id <MyProtocol> instance8 = (argc) ? qual_array : set;
48 id <MyProtocol> instance9 = (argc) ? qual_array : qual_set;
49
50
Fariborz Jahaniandb07b3f2009-10-27 23:02:38 +000051 return (argc) ? array : set;
52}