|
4 | 4 | # - property kind, one of:
|
5 | 5 | # - stored (only makes sense in structs or classes)
|
6 | 6 | # - mutating (only makes sense in structs or enums)
|
7 |
| -# - struct (only makes sense in structs) |
8 | 7 | # - nonmutating (makes sense in classes, structs, and enums)
|
9 | 8 | # - "before" definition
|
10 | 9 | # - "after" definition
|
| 10 | +# - whether the "after" definition adds API |
11 | 11 | #
|
12 | 12 | # The definition strings are formatted with the following substitutions:
|
13 | 13 | # - {name}: property name
|
14 | 14 | # - {nonmutating}: nonmutating modifier spelling, if needed for context
|
| 15 | + |
| 16 | +AddsAPI = True |
| 17 | +DoesntAddAPI = False |
| 18 | + |
15 | 19 | testCases = [
|
16 | 20 | (
|
17 | 21 | "addsPrivateSetter",
|
|
25 | 29 | mutating set {{ self.sink = newValue }}
|
26 | 30 | }}
|
27 | 31 | """,
|
| 32 | + DoesntAddAPI, |
28 | 33 | ),
|
29 | 34 | (
|
30 | 35 | "addsPublicSetter",
|
|
38 | 43 | mutating set {{ self.sink = newValue }}
|
39 | 44 | }}
|
40 | 45 | """,
|
| 46 | + AddsAPI, |
41 | 47 | ),
|
42 | 48 | (
|
43 | 49 | "makesPrivateSetterPublic",
|
|
54 | 60 | mutating set {{ self.sink = newValue }}
|
55 | 61 | }}
|
56 | 62 | """,
|
| 63 | + AddsAPI, |
57 | 64 | ),
|
58 | 65 | (
|
59 | 66 | "dropsPrivateSetter",
|
|
68 | 75 | public var {name}: Int {{
|
69 | 76 | get {{ return 0 }}
|
70 | 77 | }}
|
71 |
| - """ |
| 78 | + """, |
| 79 | + DoesntAddAPI, |
72 | 80 | ),
|
73 | 81 | (
|
74 | 82 | "makesPrivateSetterNonmutating",
|
|
84 | 92 | get {{ return 0 }}
|
85 | 93 | {nonmutating} set {{ globalSink = newValue }}
|
86 | 94 | }}
|
87 |
| - """ |
| 95 | + """, |
| 96 | + DoesntAddAPI, |
88 | 97 | ),
|
89 | 98 | (
|
90 | 99 | "makesPrivateSetterMutating",
|
|
100 | 109 | get {{ return 0 }}
|
101 | 110 | set {{ self.sink = newValue }}
|
102 | 111 | }}
|
103 |
| - """ |
| 112 | + """, |
| 113 | + DoesntAddAPI, |
104 | 114 | ),
|
105 | 115 | (
|
106 | 116 | "addsPrivateNonmutatingSetter",
|
|
113 | 123 | get {{ return 0 }}
|
114 | 124 | {nonmutating} set {{ globalSink = newValue }}
|
115 | 125 | }}
|
116 |
| - """ |
| 126 | + """, |
| 127 | + DoesntAddAPI, |
117 | 128 | ),
|
118 | 129 | (
|
119 | 130 | "addsPublicNonmutatingSetter",
|
|
126 | 137 | get {{ return 0 }}
|
127 | 138 | {nonmutating} set {{ globalSink = newValue }}
|
128 | 139 | }}
|
129 |
| - """ |
| 140 | + """, |
| 141 | + AddsAPI, |
130 | 142 | ),
|
131 | 143 | (
|
132 | 144 | "makesPrivateNonmutatingSetterPublic",
|
|
142 | 154 | get {{ return 0 }}
|
143 | 155 | {nonmutating} set {{ globalSink = newValue }}
|
144 | 156 | }}
|
145 |
| - """ |
| 157 | + """, |
| 158 | + AddsAPI, |
146 | 159 | ),
|
147 | 160 | (
|
148 | 161 | "makesPrivateNonmutatingSetterPublicMutating",
|
|
158 | 171 | get {{ return 0 }}
|
159 | 172 | set {{ self.sink = newValue }}
|
160 | 173 | }}
|
161 |
| - """ |
| 174 | + """, |
| 175 | + AddsAPI, |
162 | 176 | ),
|
163 | 177 | (
|
164 | 178 | "makesPrivateMutatingSetterPublicNonmutating",
|
|
174 | 188 | get {{ return 0 }}
|
175 | 189 | {nonmutating} set {{ globalSink = newValue }}
|
176 | 190 | }}
|
177 |
| - """ |
| 191 | + """, |
| 192 | + AddsAPI, |
178 | 193 | ),
|
179 | 194 | (
|
180 | 195 | "storedToComputed",
|
|
187 | 202 | get {{ return 0 }}
|
188 | 203 | set {{ self.sink = newValue }}
|
189 | 204 | }}
|
190 |
| - """ |
| 205 | + """, |
| 206 | + DoesntAddAPI, |
191 | 207 | ),
|
192 | 208 | (
|
193 | 209 | "computedToStored",
|
|
200 | 216 | """,
|
201 | 217 | """
|
202 | 218 | public var {name}: Int = 0
|
203 |
| - """ |
| 219 | + """, |
| 220 | + DoesntAddAPI, |
204 | 221 | ),
|
205 | 222 | (
|
206 | 223 | "storedToComputedPrivateSet",
|
|
213 | 230 | get {{ return 0 }}
|
214 | 231 | set {{ self.sink = newValue }}
|
215 | 232 | }}
|
216 |
| - """ |
| 233 | + """, |
| 234 | + DoesntAddAPI, |
217 | 235 | ),
|
218 | 236 | (
|
219 | 237 | "storedToComputedDroppingPrivateSet",
|
|
225 | 243 | public var {name}: Int {{
|
226 | 244 | get {{ return 0 }}
|
227 | 245 | }}
|
228 |
| - """ |
| 246 | + """, |
| 247 | + DoesntAddAPI, |
229 | 248 | ),
|
230 | 249 | (
|
231 | 250 | "getOnlyComputedToSettableStored",
|
|
237 | 256 | """,
|
238 | 257 | """
|
239 | 258 | public var {name}: Int = 0
|
240 |
| - """ |
| 259 | + """, |
| 260 | + AddsAPI, |
241 | 261 | ),
|
242 | 262 | (
|
243 | 263 | "getOnlyComputedToPrivateSettableStored",
|
|
249 | 269 | """,
|
250 | 270 | """
|
251 | 271 | public private(set) var {name}: Int = 0
|
252 |
| - """ |
| 272 | + """, |
| 273 | + DoesntAddAPI, |
253 | 274 | ),
|
254 | 275 | (
|
255 | 276 | "storedMakesPrivateSetPublic",
|
|
259 | 280 | """,
|
260 | 281 | """
|
261 | 282 | public var {name}: Int = 0
|
262 |
| - """ |
263 |
| - ), |
264 |
| - ( |
265 |
| - "computedGetOnlyToLet", |
266 |
| - "stored", |
267 |
| - """ |
268 |
| - public var {name}: Int {{ |
269 |
| - return 0 |
270 |
| - }} |
271 |
| - """, |
272 |
| - """ |
273 |
| - public let {name}: Int = 0 |
274 |
| - """ |
275 |
| - ), |
276 |
| - ( |
277 |
| - "computedPrivateSetToLet", |
278 |
| - "stored", |
279 |
| - """ |
280 |
| - public private(set) var {name}: Int {{ |
281 |
| - get {{ return 0 }} |
282 |
| - set {{ self.sink = newValue }} |
283 |
| - }} |
284 | 283 | """,
|
285 |
| - """ |
286 |
| - public let {name}: Int = 0 |
287 |
| - """ |
288 |
| - ), |
289 |
| - ( |
290 |
| - "computedPrivateNonmutatingSetToLet", |
291 |
| - "stored", |
292 |
| - """ |
293 |
| - public private(set) var {name}: Int {{ |
294 |
| - get {{ return 0 }} |
295 |
| - {nonmutating} set {{ globalSink = newValue }} |
296 |
| - }} |
297 |
| - """, |
298 |
| - """ |
299 |
| - public let {name}: Int = 0 |
300 |
| - """ |
301 |
| - ), |
302 |
| - ( |
303 |
| - "storedPrivateSetToLet", |
304 |
| - "stored", |
305 |
| - """ |
306 |
| - public private(set) var {name}: Int = 0 |
307 |
| - """, |
308 |
| - """ |
309 |
| - public let {name}: Int = 0 |
310 |
| - """ |
| 284 | + AddsAPI, |
311 | 285 | ),
|
| 286 | + # TODO: Turning computed gets into lets without annotation drops method |
| 287 | + # dispatch thunks and other ABI artifacts currently. |
| 288 | + # TODO # ( |
| 289 | + # TODO # "computedGetOnlyToLet", |
| 290 | + # TODO # "stored", |
| 291 | + # TODO # """ |
| 292 | + # TODO # public var {name}: Int {{ |
| 293 | + # TODO # return 0 |
| 294 | + # TODO # }} |
| 295 | + # TODO # """, |
| 296 | + # TODO # """ |
| 297 | + # TODO # public let {name}: Int = 0 |
| 298 | + # TODO # """, |
| 299 | + # TODO # DoesntAddAPI, |
| 300 | + # TODO # ), |
| 301 | + # TODO # ( |
| 302 | + # TODO # "computedPrivateSetToLet", |
| 303 | + # TODO # "stored", |
| 304 | + # TODO # """ |
| 305 | + # TODO # public private(set) var {name}: Int {{ |
| 306 | + # TODO # get {{ return 0 }} |
| 307 | + # TODO # set {{ self.sink = newValue }} |
| 308 | + # TODO # }} |
| 309 | + # TODO # """, |
| 310 | + # TODO # """ |
| 311 | + # TODO # public let {name}: Int = 0 |
| 312 | + # TODO # """, |
| 313 | + # TODO # DoesntAddAPI, |
| 314 | + # TODO # ), |
| 315 | + # TODO # ( |
| 316 | + # TODO # "computedPrivateNonmutatingSetToLet", |
| 317 | + # TODO # "stored", |
| 318 | + # TODO # """ |
| 319 | + # TODO # public private(set) var {name}: Int {{ |
| 320 | + # TODO # get {{ return 0 }} |
| 321 | + # TODO # {nonmutating} set {{ globalSink = newValue }} |
| 322 | + # TODO # }} |
| 323 | + # TODO # """, |
| 324 | + # TODO # """ |
| 325 | + # TODO # public let {name}: Int = 0 |
| 326 | + # TODO # """, |
| 327 | + # TODO # DoesntAddAPI, |
| 328 | + # TODO # ), |
| 329 | + # TODO # ( |
| 330 | + # TODO # "storedPrivateSetToLet", |
| 331 | + # TODO # "stored", |
| 332 | + # TODO # """ |
| 333 | + # TODO # public private(set) var {name}: Int = 0 |
| 334 | + # TODO # """, |
| 335 | + # TODO # """ |
| 336 | + # TODO # public let {name}: Int = 0 |
| 337 | + # TODO # """, |
| 338 | + # TODO # DoesntAddAPI, |
| 339 | + # TODO # ), |
312 | 340 | ]
|
0 commit comments