@@ -173,7 +173,7 @@ extension RawEffectSpecifiersTrait {
173173 }
174174}
175175
176- extension RawDeclEffectSpecifiersSyntax : RawEffectSpecifiersTrait {
176+ extension RawFunctionEffectSpecifiersSyntax : RawEffectSpecifiersTrait {
177177 enum MisspelledAsyncSpecifiers : TokenSpecSet {
178178 case await
179179
@@ -331,6 +331,86 @@ extension RawTypeEffectSpecifiersSyntax: RawEffectSpecifiersTrait {
331331 }
332332}
333333
334+ extension RawAccessorEffectSpecifiersSyntax : RawEffectSpecifiersTrait {
335+ enum MisspelledAsyncSpecifiers : TokenSpecSet {
336+ case await
337+ case reasync
338+
339+ init ? ( lexeme: Lexer . Lexeme ) {
340+ switch PrepareForKeywordMatch ( lexeme) {
341+ case TokenSpec ( . await , allowAtStartOfLine: false ) : self = . await
342+ case TokenSpec( . reasync) : self = . reasync
343+ default : return nil
344+ }
345+ }
346+
347+ var spec : TokenSpec {
348+ switch self {
349+ case . await : return TokenSpec ( . await , allowAtStartOfLine: false )
350+ case . reasync: return . keyword( . reasync)
351+ }
352+ }
353+ }
354+
355+ enum CorrectAsyncTokenKinds : TokenSpecSet {
356+ case async
357+
358+ init ? ( lexeme: Lexer . Lexeme ) {
359+ switch PrepareForKeywordMatch ( lexeme) {
360+ case TokenSpec ( . async) : self = . async
361+ default : return nil
362+ }
363+ }
364+
365+ var spec : TokenSpec {
366+ switch self {
367+ case . async : return . keyword( . async)
368+ }
369+ }
370+ }
371+
372+ enum MisspelledThrowsTokenKinds : TokenSpecSet {
373+ case `rethrows`
374+ case `try`
375+ case `throw`
376+
377+ init ? ( lexeme: Lexer . Lexeme ) {
378+ switch PrepareForKeywordMatch ( lexeme) {
379+ case TokenSpec ( . rethrows) : self = . rethrows
380+ case TokenSpec ( . try , allowAtStartOfLine: false ) : self = . try
381+ case TokenSpec( . throw, allowAtStartOfLine: false ) : self = . throw
382+ default : return nil
383+ }
384+ }
385+
386+ var spec : TokenSpec {
387+ switch self {
388+ case . rethrows: return . keyword( . rethrows)
389+ case . try : return TokenSpec ( . try , allowAtStartOfLine: false )
390+ case . throw: return TokenSpec ( . throw, allowAtStartOfLine: false )
391+ }
392+ }
393+ }
394+
395+ enum CorrectThrowsTokenKinds : TokenSpecSet {
396+ case `throws`
397+
398+ init ? ( lexeme: Lexer . Lexeme ) {
399+ switch PrepareForKeywordMatch ( lexeme) {
400+ case TokenSpec ( . throws) : self = . throws
401+ default : return nil
402+ }
403+ }
404+
405+ var spec : TokenSpec {
406+ switch self {
407+ case . throws: return . keyword( . throws)
408+ }
409+ }
410+ }
411+
412+ }
413+
334414extension TokenConsumer {
335415 mutating func at< SpecSet1: TokenSpecSet , SpecSet2: TokenSpecSet > ( anyIn specSet1: SpecSet1 . Type , or specSet2: SpecSet2 . Type ) -> ( TokenSpec , TokenConsumptionHandle ) ? {
336416 if let ( spec, handle) = self . at ( anyIn: specSet1) {
@@ -423,8 +503,12 @@ extension Parser {
423503 return parseEffectSpecifiers ( RawTypeEffectSpecifiersSyntax . self)
424504 }
425505
426- mutating func parseDeclEffectSpecifiers( ) -> RawDeclEffectSpecifiersSyntax ? {
427- return parseEffectSpecifiers ( RawDeclEffectSpecifiersSyntax . self)
506+ mutating func parseFunctionEffectSpecifiers( ) -> RawFunctionEffectSpecifiersSyntax ? {
507+ return parseEffectSpecifiers ( RawFunctionEffectSpecifiersSyntax . self)
508+ }
509+
510+ mutating func parseAccessorEffectSpecifiers( ) -> RawAccessorEffectSpecifiersSyntax ? {
511+ return parseEffectSpecifiers ( RawAccessorEffectSpecifiersSyntax . self)
428512 }
429513
430514 /// Consume any misplaced effect specifiers and return them in as unexpected tokens.
0 commit comments