@@ -472,50 +472,62 @@ extension RawDeinitEffectSpecifiersSyntax {
472
472
_ unexpectedAfterThrowsSpecifier: RawUnexpectedNodesSyntax ? = nil ,
473
473
arena: __shared SyntaxArena
474
474
) {
475
- /*
476
- if asyncKeyword?.isMissing ?? false {
477
- unexpectedBeforeAsync.append(contentsOf: effects.unexpectedBetweenAsyncSpecifierAndThrowsSpecifier?.elements ?? [])
478
- if let throwsKeyword = sig.effectSpecifiers?.throwsSpecifier {
479
- unexpectedBeforeAsync.append(RawSyntax(throwsKeyword))
480
- }
481
- for elem in effects.unexpectedAfterThrowsSpecifier?.elements ?? [] {
482
- if let token = Syntax(raw: elem).as(TokenSyntax.self) {
483
- if AsyncEffectSpecifier(token: token) != nil {
484
- asyncKeyword = elem.as(RawTokenSyntax.self)!
485
- } else {
486
- if asyncKeyword?.isMissing ?? true {
487
- unexpectedBeforeAsync.append(elem)
488
- } else {
489
- unexpectedAfterAsync.append(elem)
490
- }
491
- }
492
- }
493
- }
494
- */
495
- let unexpectedAfterAsync : RawUnexpectedNodesSyntax ?
496
- if let throwsSpecifier = throwsSpecifier, throwsSpecifier. presence == . present {
497
- var unexpected : [ RawSyntax ] = unexpectedBetweenAsyncSpecifierAndThrowsSpecifier? . elements ?? [ ]
498
- unexpected. append ( throwsSpecifier. raw)
499
- unexpected. append ( contentsOf: unexpectedAfterThrowsSpecifier? . elements ?? [ ] )
500
- unexpectedAfterAsync = RawUnexpectedNodesSyntax ( unexpected, arena: arena)
475
+ // Missing async keyword was created, meaning that throws and async are swapped
476
+ if asyncSpecifier? . isMissing ?? false {
477
+ var unexpectedBeforeAsync : [ RawSyntax ? ] = [ ]
478
+ var asyncKeyword : RawTokenSyntax ? = asyncSpecifier? . raw. as ( RawTokenSyntax . self)
479
+ var unexpectedAfterAsync : [ RawSyntax ? ] = [ ]
480
+
481
+ unexpectedBeforeAsync. append ( contentsOf: unexpectedBeforeAsyncSpecifier? . elements ?? [ ] )
482
+ unexpectedBeforeAsync. append ( contentsOf: unexpectedBetweenAsyncSpecifierAndThrowsSpecifier? . elements ?? [ ] )
483
+ if let throwsKeyword = throwsSpecifier, !throwsKeyword. isMissing {
484
+ unexpectedBeforeAsync. append ( RawSyntax ( throwsKeyword) )
485
+ }
486
+ for elem in unexpectedAfterThrowsSpecifier? . elements ?? [ ] {
487
+ if let token = Syntax ( raw: elem) . as ( TokenSyntax . self) {
488
+ if token. tokenKind == . keyword( . async) {
489
+ asyncKeyword = elem. as ( RawTokenSyntax . self)
490
+ } else {
491
+ if asyncKeyword? . isMissing ?? true {
492
+ unexpectedBeforeAsync. append ( elem)
493
+ } else {
494
+ unexpectedAfterAsync. append ( elem)
495
+ }
496
+ }
497
+ }
498
+ }
499
+ self . init (
500
+ RawUnexpectedNodesSyntax ( unexpectedBeforeAsync, arena: arena) ,
501
+ asyncSpecifier: asyncKeyword,
502
+ RawUnexpectedNodesSyntax ( unexpectedAfterAsync, arena: arena) ,
503
+ arena: arena
504
+ )
501
505
} else {
502
- if let afterThrows = unexpectedAfterThrowsSpecifier {
503
- if let beforeThrows = unexpectedBetweenAsyncSpecifierAndThrowsSpecifier {
504
- unexpectedAfterAsync = RawUnexpectedNodesSyntax ( beforeThrows. elements + afterThrows. elements, arena: arena)
506
+ let unexpectedAfterAsync : RawUnexpectedNodesSyntax ?
507
+ if let throwsSpecifier = throwsSpecifier, throwsSpecifier. presence == . present {
508
+ var unexpected : [ RawSyntax ] = unexpectedBetweenAsyncSpecifierAndThrowsSpecifier? . elements ?? [ ]
509
+ unexpected. append ( throwsSpecifier. raw)
510
+ unexpected. append ( contentsOf: unexpectedAfterThrowsSpecifier? . elements ?? [ ] )
511
+ unexpectedAfterAsync = RawUnexpectedNodesSyntax ( unexpected, arena: arena)
512
+ } else {
513
+ if let afterThrows = unexpectedAfterThrowsSpecifier {
514
+ if let beforeThrows = unexpectedBetweenAsyncSpecifierAndThrowsSpecifier {
515
+ unexpectedAfterAsync = RawUnexpectedNodesSyntax ( beforeThrows. elements + afterThrows. elements, arena: arena)
516
+ } else {
517
+ unexpectedAfterAsync = afterThrows
518
+ }
505
519
} else {
506
- unexpectedAfterAsync = afterThrows
520
+ unexpectedAfterAsync = unexpectedBetweenAsyncSpecifierAndThrowsSpecifier
507
521
}
508
- } else {
509
- unexpectedAfterAsync = unexpectedBetweenAsyncSpecifierAndThrowsSpecifier
510
522
}
523
+
524
+ self . init (
525
+ unexpectedBeforeAsyncSpecifier,
526
+ asyncSpecifier: asyncSpecifier,
527
+ unexpectedAfterAsync,
528
+ arena: arena
529
+ )
511
530
}
512
-
513
- self . init (
514
- unexpectedBeforeAsyncSpecifier,
515
- asyncSpecifier: asyncSpecifier,
516
- unexpectedAfterAsync,
517
- arena: arena
518
- )
519
531
}
520
532
}
521
533
0 commit comments