1 | // RUN: rm -rf %t |
2 | // RUN: %clang_cc1 -objcmt-migrate-protocol-conformance -mt-migrate-directory %t %s -x objective-c -fobjc-runtime-has-weak -fobjc-arc -triple x86_64-apple-darwin11 |
3 | // RUN: c-arcmt-test -mt-migrate-directory %t | arcmt-test -verify-transformed-files %s.result |
4 | // RUN: %clang_cc1 -triple x86_64-apple-darwin10 -fsyntax-only -x objective-c -fobjc-runtime-has-weak -fobjc-arc %s.result |
5 | |
6 | @interface NSObject @end |
7 | |
8 | @protocol P |
9 | - (id) Meth1: (double) arg; |
10 | @end |
11 | |
12 | @interface Test1 // Test for no super class and no protocol list |
13 | @end |
14 | |
15 | @implementation Test1 |
16 | - (id) Meth1: (double) arg { return 0; } |
17 | @end |
18 | |
19 | @protocol P1 @end |
20 | @protocol P2 @end |
21 | |
22 | @interface Test2 <P1, P2> // Test for no super class and with protocol list |
23 | { |
24 | id IVAR1; |
25 | id IVAR2; |
26 | } |
27 | @end |
28 | |
29 | @implementation Test2 |
30 | - (id) Meth1: (double) arg { return 0; } |
31 | @end |
32 | |
33 | @interface Test3 : NSObject { // Test for Super class and no protocol list |
34 | id IV1; |
35 | } |
36 | @end |
37 | |
38 | @implementation Test3 |
39 | - (id) Meth1: (double) arg { return 0; } |
40 | @end |
41 | |
42 | @interface Test4 : NSObject <P1, P2> // Test for Super class and protocol list |
43 | @end |
44 | |
45 | @implementation Test4 |
46 | - (id) Meth1: (double) arg { return 0; } |
47 | @end |
48 | |
49 | // Test5 - conforms to P3 because it implement's P3's property. |
50 | @protocol P3 |
51 | @property (copy) id Prop; |
52 | @end |
53 | |
54 | @protocol P4 |
55 | @property (copy) id Prop; |
56 | @end |
57 | |
58 | @interface Test5 : NSObject<P3> |
59 | @end |
60 | |
61 | @implementation Test5 |
62 | @synthesize Prop=_XXX; |
63 | @end |
64 | |
65 | @protocol P5 <P3, P4> |
66 | @property (copy) id Prop; |
67 | @end |
68 | |
69 | @protocol P6 <P3, P4, P5> |
70 | @property (copy) id Prop; |
71 | @end |
72 | |
73 | @interface Test6 : NSObject // Test for minimal listing of conforming protocols |
74 | @property (copy) id Prop; |
75 | @end |
76 | |
77 | @implementation Test6 |
78 | @end |
79 | |
80 | @class UIDynamicAnimator, UIWindow; |
81 | @interface UIResponder : NSObject |
82 | @end |
83 | |
84 | @protocol EmptyProtocol |
85 | @end |
86 | |
87 | @protocol OptionalMethodsOnly |
88 | @optional |
89 | - (void)dynamicAnimatorWillResume:(UIDynamicAnimator*)animator; |
90 | - (void)dynamicAnimatorDidPause:(UIDynamicAnimator*)animator; |
91 | @end |
92 | |
93 | @protocol OptionalPropertiesOnly |
94 | @optional |
95 | @property (strong, nonatomic) id OptionalProperty; |
96 | @end |
97 | |
98 | @protocol OptionalEvrything |
99 | @optional |
100 | - (void)dynamicAnimatorWillResume:(UIDynamicAnimator*)animator; |
101 | @property (strong, nonatomic) id OptionalProperty; |
102 | - (void)dynamicAnimatorDidPause:(UIDynamicAnimator*)animator; |
103 | @end |
104 | |
105 | @protocol UIApplicationDelegate |
106 | @end |
107 | |
108 | @interface Test7 : UIResponder <UIApplicationDelegate> |
109 | @property (strong, nonatomic) UIWindow *window; |
110 | @end |
111 | |
112 | @implementation Test7 |
113 | @end |
114 | |
115 | // rdar://15515206 |
116 | @interface BTLEBrowser |
117 | @end |
118 | |
119 | @protocol CBCentralManagerDelegate; |
120 | |
121 | @protocol CBCentralManagerDelegate |
122 | - (id) Meth1: (double) arg; |
123 | @end |
124 | |
125 | @interface BTLEBrowser() <CBCentralManagerDelegate> |
126 | @end |
127 | |
128 | @implementation BTLEBrowser |
129 | - (id) Meth15515206: (double) arg { return 0; } |
130 | @end |
131 | |