@@ -328,6 +328,125 @@ enum DeclarationKeyword: TokenSpecSet {
328
328
}
329
329
}
330
330
331
+ enum DeclarationModifier : TokenSpecSet {
332
+ case __consuming
333
+ case __setter_access
334
+ case _const
335
+ case _local
336
+ case async
337
+ case borrowing
338
+ case `class`
339
+ case consuming
340
+ case convenience
341
+ case distributed
342
+ case dynamic
343
+ case `fileprivate`
344
+ case final
345
+ case indirect
346
+ case infix
347
+ case `internal`
348
+ case isolated
349
+ case lazy
350
+ case mutating
351
+ case nonisolated
352
+ case nonmutating
353
+ case open
354
+ case optional
355
+ case override
356
+ case package
357
+ case postfix
358
+ case prefix
359
+ case `private`
360
+ case `public`
361
+ case reasync
362
+ case required
363
+ case `rethrows`
364
+ case `static`
365
+ case unowned
366
+ case weak
367
+
368
+ init ? ( lexeme: Lexer . Lexeme ) {
369
+ switch PrepareForKeywordMatch ( lexeme) {
370
+ case TokenSpec ( . __consuming) : self = . __consuming
371
+ case TokenSpec ( . __setter_access) : self = . __setter_access
372
+ case TokenSpec ( . _const) : self = . _const
373
+ case TokenSpec ( . _local) : self = . _local
374
+ case TokenSpec ( . async) : self = . async
375
+ case TokenSpec ( . borrowing) : self = . borrowing
376
+ case TokenSpec ( . class) : self = . class
377
+ case TokenSpec ( . consuming) : self = . consuming
378
+ case TokenSpec ( . convenience) : self = . convenience
379
+ case TokenSpec ( . distributed) : self = . distributed
380
+ case TokenSpec ( . dynamic) : self = . dynamic
381
+ case TokenSpec ( . fileprivate) : self = . fileprivate
382
+ case TokenSpec ( . final) : self = . final
383
+ case TokenSpec ( . indirect) : self = . indirect
384
+ case TokenSpec ( . infix) : self = . infix
385
+ case TokenSpec ( . internal) : self = . internal
386
+ case TokenSpec ( . isolated) : self = . isolated
387
+ case TokenSpec ( . lazy) : self = . lazy
388
+ case TokenSpec ( . mutating) : self = . mutating
389
+ case TokenSpec ( . nonisolated) : self = . nonisolated
390
+ case TokenSpec ( . nonmutating) : self = . nonmutating
391
+ case TokenSpec ( . open) : self = . open
392
+ case TokenSpec ( . optional) : self = . optional
393
+ case TokenSpec ( . override) : self = . override
394
+ case TokenSpec ( . package ) : self = . package
395
+ case TokenSpec ( . postfix) : self = . postfix
396
+ case TokenSpec ( . prefix) : self = . prefix
397
+ case TokenSpec ( . private) : self = . private
398
+ case TokenSpec ( . public) : self = . public
399
+ case TokenSpec ( . reasync) : self = . reasync
400
+ case TokenSpec ( . required) : self = . required
401
+ case TokenSpec ( . rethrows) : self = . rethrows
402
+ case TokenSpec ( . static) : self = . static
403
+ case TokenSpec ( . unowned) : self = . unowned
404
+ case TokenSpec ( . weak) : self = . weak
405
+ default : return nil
406
+ }
407
+ }
408
+
409
+ var spec : TokenSpec {
410
+ switch self {
411
+ case . __consuming: return . keyword( . __consuming)
412
+ case . __setter_access: return . keyword( . __setter_access)
413
+ case . _const: return TokenSpec ( . _const, recoveryPrecedence: . declKeyword)
414
+ case . _local: return . keyword( . _local)
415
+ case . async : return TokenSpec ( . async, recoveryPrecedence: . declKeyword)
416
+ case . borrowing: return TokenSpec ( . borrowing, recoveryPrecedence: . declKeyword)
417
+ case . class: return . keyword( . class)
418
+ case . consuming: return TokenSpec ( . consuming, recoveryPrecedence: . declKeyword)
419
+ case . convenience: return . keyword( . convenience)
420
+ case . distributed: return . keyword( . distributed)
421
+ case . dynamic: return . keyword( . dynamic)
422
+ case . fileprivate: return . keyword( . fileprivate)
423
+ case . final: return . keyword( . final)
424
+ case . indirect: return . keyword( . indirect)
425
+ case . infix: return . keyword( . infix)
426
+ case . internal: return . keyword( . internal)
427
+ case . isolated: return TokenSpec ( . isolated, recoveryPrecedence: . declKeyword)
428
+ case . lazy: return . keyword( . lazy)
429
+ case . mutating: return . keyword( . mutating)
430
+ case . nonisolated: return . keyword( . nonisolated)
431
+ case . nonmutating: return . keyword( . nonmutating)
432
+ case . open: return . keyword( . open)
433
+ case . optional: return . keyword( . optional)
434
+ case . override: return . keyword( . override)
435
+ case . package : return . keyword( . package )
436
+ case . postfix: return . keyword( . postfix)
437
+ case . prefix: return . keyword( . prefix)
438
+ case . private: return . keyword( . private)
439
+ case . public: return . keyword( . public)
440
+ case . reasync: return TokenSpec ( . reasync, recoveryPrecedence: . declKeyword)
441
+ case . required: return . keyword( . required)
442
+ case . rethrows: return TokenSpec ( . rethrows, recoveryPrecedence: . declKeyword)
443
+ case . static: return . keyword( . static)
444
+ case . unowned: return TokenSpec ( . unowned, recoveryPrecedence: . declKeyword)
445
+ case . weak: return TokenSpec ( . weak, recoveryPrecedence: . declKeyword)
446
+ }
447
+ }
448
+ }
449
+
331
450
/// Union of the following token kind subsets:
332
451
/// - `DeclarationModifier`
333
452
/// - `DeclarationKeyword`
@@ -463,6 +582,56 @@ enum SwitchCaseStart: TokenSpecSet {
463
582
}
464
583
}
465
584
585
+ enum TypeAttribute : TokenSpecSet {
586
+ case _local
587
+ case _noMetadata
588
+ case _opaqueReturnTypeOf
589
+ case async
590
+ case autoclosure
591
+ case convention
592
+ case differentiable
593
+ case escaping
594
+ case noDerivative
595
+ case noescape
596
+ case Sendable
597
+ case unchecked
598
+
599
+ init ? ( lexeme: Lexer . Lexeme ) {
600
+ switch PrepareForKeywordMatch ( lexeme) {
601
+ case TokenSpec ( . _local) : self = . _local
602
+ case TokenSpec ( . _noMetadata) : self = . _noMetadata
603
+ case TokenSpec ( . _opaqueReturnTypeOf) : self = . _opaqueReturnTypeOf
604
+ case TokenSpec ( . async) : self = . async
605
+ case TokenSpec ( . autoclosure) : self = . autoclosure
606
+ case TokenSpec ( . convention) : self = . convention
607
+ case TokenSpec ( . differentiable) : self = . differentiable
608
+ case TokenSpec ( . escaping) : self = . escaping
609
+ case TokenSpec ( . noDerivative) : self = . noDerivative
610
+ case TokenSpec ( . noescape) : self = . noescape
611
+ case TokenSpec ( . Sendable) : self = . Sendable
612
+ case TokenSpec ( . unchecked) : self = . unchecked
613
+ default : return nil
614
+ }
615
+ }
616
+
617
+ var spec : TokenSpec {
618
+ switch self {
619
+ case . _local: return . keyword( . _local)
620
+ case . _noMetadata: return . keyword( . _noMetadata)
621
+ case . _opaqueReturnTypeOf: return . keyword( . _opaqueReturnTypeOf)
622
+ case . async : return . keyword( . async)
623
+ case . autoclosure: return . keyword( . autoclosure)
624
+ case . convention: return . keyword( . convention)
625
+ case . differentiable: return . keyword( . differentiable)
626
+ case . escaping: return . keyword( . escaping)
627
+ case . noDerivative: return . keyword( . noDerivative)
628
+ case . noescape: return . keyword( . noescape)
629
+ case . Sendable: return . keyword( . Sendable)
630
+ case . unchecked: return . keyword( . unchecked)
631
+ }
632
+ }
633
+ }
634
+
466
635
@_spi ( Diagnostics)
467
636
public enum TypeSpecifier : TokenSpecSet {
468
637
case `inout`
0 commit comments