File tree Expand file tree Collapse file tree 2 files changed +23
-0
lines changed Expand file tree Collapse file tree 2 files changed +23
-0
lines changed Original file line number Diff line number Diff line change @@ -570,6 +570,16 @@ extension Parser {
570570 let tryKeyword = self . consume ( if: . keyword( . try ) )
571571 let awaitKeyword = self . consume ( if: . keyword( . await ) )
572572
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+
573583 // Parse the pattern. This is either 'case <refutable pattern>' or just a
574584 // normal pattern.
575585 let caseKeyword = self . consume ( if: . keyword( . case) )
@@ -624,6 +634,7 @@ extension Parser {
624634 forKeyword: forKeyword,
625635 tryKeyword: tryKeyword,
626636 awaitKeyword: awaitKeyword,
637+ unsafeKeyword: unsafeKeyword,
627638 caseKeyword: caseKeyword,
628639 pattern: pattern,
629640 typeAnnotation: type,
Original file line number Diff line number Diff line change @@ -957,4 +957,16 @@ final class StatementTests: ParserTestCase {
957957 ]
958958 )
959959 }
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+ }
960972}
You can’t perform that action at this time.
0 commit comments