@@ -173,7 +173,7 @@ extension RawEffectSpecifiersTrait {
173
173
}
174
174
}
175
175
176
- extension RawDeclEffectSpecifiersSyntax : RawEffectSpecifiersTrait {
176
+ extension RawFunctionEffectSpecifiersSyntax : RawEffectSpecifiersTrait {
177
177
enum MisspelledAsyncSpecifiers : TokenSpecSet {
178
178
case await
179
179
@@ -331,6 +331,86 @@ extension RawTypeEffectSpecifiersSyntax: RawEffectSpecifiersTrait {
331
331
}
332
332
}
333
333
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
+
334
414
extension TokenConsumer {
335
415
mutating func at< SpecSet1: TokenSpecSet , SpecSet2: TokenSpecSet > ( anyIn specSet1: SpecSet1 . Type , or specSet2: SpecSet2 . Type ) -> ( TokenSpec , TokenConsumptionHandle ) ? {
336
416
if let ( spec, handle) = self . at ( anyIn: specSet1) {
@@ -423,8 +503,12 @@ extension Parser {
423
503
return parseEffectSpecifiers ( RawTypeEffectSpecifiersSyntax . self)
424
504
}
425
505
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)
428
512
}
429
513
430
514
/// Consume any misplaced effect specifiers and return them in as unexpected tokens.
0 commit comments