@@ -328,6 +328,125 @@ enum DeclarationKeyword: TokenSpecSet {
328328 }
329329}
330330
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+
331450/// Union of the following token kind subsets:
332451/// - `DeclarationModifier`
333452/// - `DeclarationKeyword`
@@ -463,6 +582,56 @@ enum SwitchCaseStart: TokenSpecSet {
463582 }
464583}
465584
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+
466635@_spi ( Diagnostics)
467636public enum TypeSpecifier : TokenSpecSet {
468637 case `inout`
0 commit comments