File tree 2 files changed +23
-0
lines changed
2 files changed +23
-0
lines changed Original file line number Diff line number Diff line change @@ -570,6 +570,16 @@ extension Parser {
570
570
let tryKeyword = self . consume ( if: . keyword( . try ) )
571
571
let awaitKeyword = self . consume ( if: . keyword( . await ) )
572
572
573
+ let unsafeKeyword : RawTokenSyntax ?
574
+ if let modifierKeyword = ExpressionModifierKeyword (
575
+ lexeme: self . currentToken,
576
+ experimentalFeatures: self . experimentalFeatures
577
+ ) , modifierKeyword == . unsafe, !self . peek ( isAt: . keyword( . in) ) {
578
+ unsafeKeyword = self . consumeAnyToken ( )
579
+ } else {
580
+ unsafeKeyword = nil
581
+ }
582
+
573
583
// Parse the pattern. This is either 'case <refutable pattern>' or just a
574
584
// normal pattern.
575
585
let caseKeyword = self . consume ( if: . keyword( . case) )
@@ -624,6 +634,7 @@ extension Parser {
624
634
forKeyword: forKeyword,
625
635
tryKeyword: tryKeyword,
626
636
awaitKeyword: awaitKeyword,
637
+ unsafeKeyword: unsafeKeyword,
627
638
caseKeyword: caseKeyword,
628
639
pattern: pattern,
629
640
typeAnnotation: type,
Original file line number Diff line number Diff line change @@ -957,4 +957,16 @@ final class StatementTests: ParserTestCase {
957
957
]
958
958
)
959
959
}
960
+
961
+ func testForUnsafeStatement( ) {
962
+ assertParse (
963
+ " for try await unsafe x in e { } " ,
964
+ experimentalFeatures: [ . unsafeExpression]
965
+ )
966
+
967
+ assertParse (
968
+ " for try await unsafe in e { } " ,
969
+ experimentalFeatures: [ . unsafeExpression]
970
+ )
971
+ }
960
972
}
You can’t perform that action at this time.
0 commit comments