@@ -192,29 +192,34 @@ enum TokenPrecedence: Comparable {
192
192
case // Literals
193
193
. Self, . false , . nil , . `self`, . super, . true :
194
194
self = . identifierLike
195
+
195
196
// MARK: Expr keyword
196
- case // Keywords
197
- . as, . is, . try ,
197
+ case // Keywords
198
+ . as, . is, . some, . try ,
199
+ . await , . reasync, . async ,
198
200
// We don't know much about which contextual keyword it is, be conservative an allow considering it as unexpected.
199
201
// Keywords in function types (we should be allowed to skip them inside parenthesis)
200
202
. rethrows, . throws,
201
203
// Consider 'any' a prefix operator to a type and a type is expression-like.
202
204
. Any,
203
205
// 'where' can only occur in the signature of declarations. Consider the signature expression-like.
204
206
. where,
207
+ . each,
205
208
// 'in' occurs in closure input/output definitions and for loops. Consider both constructs expression-like.
206
209
. in:
207
210
self = . exprKeyword
208
- case // Control-flow constructs
211
+
212
+ case // Control-flow constructs
209
213
. defer, . do, . for, . guard, . if, . repeat , . switch, . while,
210
214
// Secondary parts of control-flow constructs
211
215
. case, . catch, . default, . else,
212
216
// Return-like statements
213
217
. break, . continue, . fallthrough, . return, . throw, . then, . yield:
214
218
self = . stmtKeyword
219
+
215
220
// MARK: Decl keywords
216
- case // Types
217
- . associatedtype, . class, . enum, . extension, . protocol, . struct, . typealias,
221
+ case // Types
222
+ . associatedtype, . class, . enum, . extension, . protocol, . struct, . typealias, . actor ,
218
223
// Access modifiers
219
224
. fileprivate, . internal, . private, . public, . static,
220
225
// Functions
@@ -225,15 +230,245 @@ enum TokenPrecedence: Comparable {
225
230
. operator, . precedencegroup,
226
231
// Declaration Modifiers
227
232
. __consuming, . final, . required, . optional, . lazy, . dynamic, . infix, . postfix, . prefix, . mutating, . nonmutating, . convenience, . override, . package , . open,
228
- . __setter_access, . indirect, . nonisolated, . distributed, . _local,
229
- . inout, . _mutating, . _borrowing, . _consuming,
233
+ . __setter_access, . indirect, . isolated, . nonisolated, . distributed, . unchecked, . _local,
234
+ . inout, . _mutating, . _borrow, . _borrowing, . borrowing, . _consuming, . consuming, . consume,
235
+ . _backDeploy, . backDeployed,
230
236
// Misc
231
237
. import:
232
238
self = . declKeyword
233
- default :
234
- // Treat all keywords that weren't handled above as expression keywords as a fallback option.
235
- // FIXME: We should assign a token precedence to all keywords
239
+
240
+ case . __owned:
241
+ self = . exprKeyword
242
+ case . __shared:
243
+ self = . exprKeyword
244
+ case . _alignment:
245
+ self = . exprKeyword
246
+ case . _cdecl:
247
+ self = . exprKeyword
248
+ case . _Class:
249
+ self = . exprKeyword
250
+ case . _compilerInitialized:
251
+ self = . exprKeyword
252
+ case . _const:
253
+ self = . exprKeyword
254
+ case . _documentation:
255
+ self = . exprKeyword
256
+ case . _dynamicReplacement:
257
+ self = . exprKeyword
258
+ case . _effects:
259
+ self = . exprKeyword
260
+ case . _expose:
261
+ self = . exprKeyword
262
+ case . _forward:
263
+ self = . exprKeyword
264
+ case . _implements:
265
+ self = . exprKeyword
266
+ case . _linear:
267
+ self = . exprKeyword
268
+ case . _modify:
269
+ self = . exprKeyword
270
+ case . _move:
271
+ self = . exprKeyword
272
+ case . _NativeClass:
273
+ self = . exprKeyword
274
+ case . _NativeRefCountedObject:
275
+ self = . exprKeyword
276
+ case . _noMetadata:
277
+ self = . exprKeyword
278
+ case . _nonSendable:
279
+ self = . exprKeyword
280
+ case . _objcImplementation:
281
+ self = . exprKeyword
282
+ case . _objcRuntimeName:
283
+ self = . exprKeyword
284
+ case . _opaqueReturnTypeOf:
285
+ self = . exprKeyword
286
+ case . _optimize:
287
+ self = . exprKeyword
288
+ case . _originallyDefinedIn:
289
+ self = . exprKeyword
290
+ case . _PackageDescription:
291
+ self = . exprKeyword
292
+ case . _private:
293
+ self = . exprKeyword
294
+ case . _projectedValueProperty:
295
+ self = . exprKeyword
296
+ case . _read:
297
+ self = . exprKeyword
298
+ case . _RefCountedObject:
299
+ self = . exprKeyword
300
+ case . _semantics:
301
+ self = . exprKeyword
302
+ case . _specialize:
303
+ self = . exprKeyword
304
+ case . _spi:
305
+ self = . exprKeyword
306
+ case . _spi_available:
307
+ self = . exprKeyword
308
+ case . _swift_native_objc_runtime_base:
309
+ self = . exprKeyword
310
+ case . _Trivial:
311
+ self = . exprKeyword
312
+ case . _TrivialAtMost:
313
+ self = . exprKeyword
314
+ case . _typeEraser:
315
+ self = . exprKeyword
316
+ case . _unavailableFromAsync:
317
+ self = . exprKeyword
318
+ case . _underlyingVersion:
319
+ self = . exprKeyword
320
+ case . _UnknownLayout:
321
+ self = . exprKeyword
322
+ case . _version:
323
+ self = . exprKeyword
324
+ case . accesses:
325
+ self = . exprKeyword
326
+ case . addressWithNativeOwner:
327
+ self = . exprKeyword
328
+ case . addressWithOwner:
329
+ self = . exprKeyword
330
+ case . any:
331
+ self = . exprKeyword
332
+ case . assignment:
333
+ self = . exprKeyword
334
+ case . associativity:
335
+ self = . exprKeyword
336
+ case . attached:
337
+ self = . exprKeyword
338
+ case . autoclosure:
339
+ self = . exprKeyword
340
+ case . availability:
341
+ self = . exprKeyword
342
+ case . available:
343
+ self = . exprKeyword
344
+ case . before:
345
+ self = . exprKeyword
346
+ case . block:
347
+ self = . exprKeyword
348
+ case . canImport:
349
+ self = . exprKeyword
350
+ case . compiler:
351
+ self = . exprKeyword
352
+ case . copy:
353
+ self = . exprKeyword
354
+ case . convention:
355
+ self = . exprKeyword
356
+ case . cType:
357
+ self = . exprKeyword
358
+ case . deprecated:
359
+ self = . exprKeyword
360
+ case . derivative:
361
+ self = . exprKeyword
362
+ case . didSet:
363
+ self = . exprKeyword
364
+ case . differentiable:
365
+ self = . exprKeyword
366
+ case . escaping:
367
+ self = . exprKeyword
368
+ case . exclusivity:
369
+ self = . exprKeyword
370
+ case . exported:
371
+ self = . exprKeyword
372
+ case . file:
373
+ self = . exprKeyword
374
+ case . discard:
375
+ self = . exprKeyword
376
+ case . forward:
377
+ self = . exprKeyword
378
+ case . get:
379
+ self = . exprKeyword
380
+ case . higherThan:
381
+ self = . exprKeyword
382
+ case . initializes:
383
+ self = . exprKeyword
384
+ case . inline:
385
+ self = . exprKeyword
386
+ case . introduced:
387
+ self = . exprKeyword
388
+ case . kind:
389
+ self = . exprKeyword
390
+ case . left:
391
+ self = . exprKeyword
392
+ case . line:
393
+ self = . exprKeyword
394
+ case . linear:
395
+ self = . exprKeyword
396
+ case . lowerThan:
397
+ self = . exprKeyword
398
+ case . macro:
399
+ self = . exprKeyword
400
+ case . message:
401
+ self = . exprKeyword
402
+ case . metadata:
403
+ self = . exprKeyword
404
+ case . module:
405
+ self = . exprKeyword
406
+ case . mutableAddressWithNativeOwner:
407
+ self = . exprKeyword
408
+ case . mutableAddressWithOwner:
409
+ self = . exprKeyword
410
+ case . noasync:
411
+ self = . exprKeyword
412
+ case . noDerivative:
413
+ self = . exprKeyword
414
+ case . noescape:
415
+ self = . exprKeyword
416
+ case . none:
417
+ self = . exprKeyword
418
+ case . objc:
419
+ self = . exprKeyword
420
+ case . obsoleted:
421
+ self = . exprKeyword
422
+ case . of:
423
+ self = . exprKeyword
424
+ case . Protocol:
425
+ self = . exprKeyword
426
+ case . renamed:
427
+ self = . exprKeyword
428
+ case . reverse:
429
+ self = . exprKeyword
430
+ case . right:
431
+ self = . exprKeyword
432
+ case . safe:
433
+ self = . exprKeyword
434
+ case . Sendable:
435
+ self = . exprKeyword
436
+ case . set:
437
+ self = . exprKeyword
438
+ case . sourceFile:
439
+ self = . exprKeyword
440
+ case . spi:
441
+ self = . exprKeyword
442
+ case . spiModule:
443
+ self = . exprKeyword
444
+ case . swift:
445
+ self = . exprKeyword
446
+ case . target:
447
+ self = . exprKeyword
448
+ case . transpose:
449
+ self = . exprKeyword
450
+ case . Type:
451
+ self = . exprKeyword
452
+ case . unavailable:
453
+ self = . exprKeyword
454
+ case . unowned:
455
+ self = . exprKeyword
456
+ case . unsafeAddress:
457
+ self = . exprKeyword
458
+ case . unsafeMutableAddress:
459
+ self = . exprKeyword
460
+ case . visibility:
461
+ self = . exprKeyword
462
+ case . weak:
463
+ self = . exprKeyword
464
+ case . willSet:
465
+ self = . exprKeyword
466
+ case . witness_method:
467
+ self = . exprKeyword
468
+ case . wrt:
236
469
self = . exprKeyword
470
+ case . unsafe:
471
+ self = . exprKeyword
237
472
}
238
473
}
239
474
}
0 commit comments