@@ -192,47 +192,266 @@ 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
197
case // Keywords
197
- . as, . is, . try ,
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
211
+
208
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
221
case // Types
217
- . associatedtype, . class, . enum, . extension, . protocol, . struct, . typealias,
222
+ . associatedtype, . class, . enum, . extension, . protocol, . struct, . typealias, . actor , . Sendable ,
218
223
// Access modifiers
219
224
. fileprivate, . internal, . private, . public, . static,
220
225
// Functions
221
226
. deinit, . func, . `init`, . subscript,
222
227
// Variables
223
- . let, . var,
228
+ . let, . var, . weak ,
224
229
// Operator stuff
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, . inline, . _specialize, . availability, . unavailable, . deprecated, . _spi,
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 . _spi_available:
303
+ self = . exprKeyword
304
+ case . _swift_native_objc_runtime_base:
305
+ self = . exprKeyword
306
+ case . _Trivial:
307
+ self = . exprKeyword
308
+ case . _TrivialAtMost:
309
+ self = . exprKeyword
310
+ case . _typeEraser:
311
+ self = . exprKeyword
312
+ case . _unavailableFromAsync:
313
+ self = . exprKeyword
314
+ case . _underlyingVersion:
315
+ self = . exprKeyword
316
+ case . _UnknownLayout:
317
+ self = . exprKeyword
318
+ case . _version:
319
+ self = . exprKeyword
320
+ case . accesses:
321
+ self = . exprKeyword
322
+ case . addressWithNativeOwner:
323
+ self = . exprKeyword
324
+ case . addressWithOwner:
325
+ self = . exprKeyword
326
+ case . any:
327
+ self = . exprKeyword
328
+ case . assignment:
329
+ self = . exprKeyword
330
+ case . associativity:
331
+ self = . exprKeyword
332
+ case . attached:
333
+ self = . exprKeyword
334
+ case . autoclosure:
335
+ self = . exprKeyword
336
+ case . available:
337
+ self = . exprKeyword
338
+ case . before:
339
+ self = . exprKeyword
340
+ case . block:
341
+ self = . exprKeyword
342
+ case . canImport:
343
+ self = . exprKeyword
344
+ case . compiler:
345
+ self = . exprKeyword
346
+ case . copy:
347
+ self = . exprKeyword
348
+ case . convention:
349
+ self = . exprKeyword
350
+ case . cType:
351
+ self = . exprKeyword
352
+ case . derivative:
353
+ self = . exprKeyword
354
+ case . didSet:
355
+ self = . exprKeyword
356
+ case . differentiable:
357
+ self = . exprKeyword
358
+ case . escaping:
359
+ self = . exprKeyword
360
+ case . exclusivity:
361
+ self = . exprKeyword
362
+ case . exported:
363
+ self = . exprKeyword
364
+ case . file:
365
+ self = . exprKeyword
366
+ case . discard:
367
+ self = . exprKeyword
368
+ case . forward:
369
+ self = . exprKeyword
370
+ case . get:
371
+ self = . exprKeyword
372
+ case . higherThan:
373
+ self = . exprKeyword
374
+ case . initializes:
375
+ self = . exprKeyword
376
+ case . introduced:
377
+ self = . exprKeyword
378
+ case . kind:
379
+ self = . exprKeyword
380
+ case . left:
381
+ self = . exprKeyword
382
+ case . line:
383
+ self = . exprKeyword
384
+ case . linear:
385
+ self = . exprKeyword
386
+ case . lowerThan:
387
+ self = . exprKeyword
388
+ case . macro:
389
+ self = . exprKeyword
390
+ case . message:
391
+ self = . exprKeyword
392
+ case . metadata:
393
+ self = . exprKeyword
394
+ case . module:
395
+ self = . exprKeyword
396
+ case . mutableAddressWithNativeOwner:
397
+ self = . exprKeyword
398
+ case . mutableAddressWithOwner:
399
+ self = . exprKeyword
400
+ case . noasync:
401
+ self = . exprKeyword
402
+ case . noDerivative:
403
+ self = . exprKeyword
404
+ case . noescape:
405
+ self = . exprKeyword
406
+ case . none:
407
+ self = . exprKeyword
408
+ case . objc:
409
+ self = . exprKeyword
410
+ case . obsoleted:
411
+ self = . exprKeyword
412
+ case . of:
413
+ self = . exprKeyword
414
+ case . Protocol:
415
+ self = . exprKeyword
416
+ case . renamed:
417
+ self = . exprKeyword
418
+ case . reverse:
419
+ self = . exprKeyword
420
+ case . right:
421
+ self = . exprKeyword
422
+ case . safe:
423
+ self = . exprKeyword
424
+ case . set:
425
+ self = . exprKeyword
426
+ case . sourceFile:
427
+ self = . exprKeyword
428
+ case . spi:
429
+ self = . exprKeyword
430
+ case . spiModule:
431
+ self = . exprKeyword
432
+ case . swift:
433
+ self = . exprKeyword
434
+ case . target:
435
+ self = . exprKeyword
436
+ case . transpose:
437
+ self = . exprKeyword
438
+ case . Type:
439
+ self = . exprKeyword
440
+ case . unowned:
441
+ self = . exprKeyword
442
+ case . unsafeAddress:
443
+ self = . exprKeyword
444
+ case . unsafeMutableAddress:
445
+ self = . exprKeyword
446
+ case . visibility:
447
+ self = . exprKeyword
448
+ case . willSet:
449
+ self = . exprKeyword
450
+ case . witness_method:
451
+ self = . exprKeyword
452
+ case . wrt:
453
+ self = . exprKeyword
454
+ case . unsafe:
236
455
self = . exprKeyword
237
456
}
238
457
}
0 commit comments