Skip to content

Commit da8362a

Browse files
authored
Merge pull request swiftlang#2977 from DougGregor/unsafe-for-in-disambig
[SE-0458] Improve disambiguation for "unsafe" effect on for..in loop
2 parents 6469be1 + d4f7b3e commit da8362a

File tree

2 files changed

+12
-2
lines changed

2 files changed

+12
-2
lines changed

Sources/SwiftParser/Statements.swift

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -574,8 +574,8 @@ extension Parser {
574574
if let modifierKeyword = ExpressionModifierKeyword(
575575
lexeme: self.currentToken,
576576
experimentalFeatures: self.experimentalFeatures
577-
), modifierKeyword == .unsafe, !self.peek(isAt: .keyword(.in)) {
578-
unsafeKeyword = self.consumeAnyToken(remapping: .keyword)
577+
), modifierKeyword == .unsafe, !self.peek(isAt: .keyword(.in), .colon) {
578+
unsafeKeyword = self.expectWithoutRecovery(.keyword(.unsafe))
579579
} else {
580580
unsafeKeyword = nil
581581
}

Tests/SwiftParserTest/StatementTests.swift

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -968,5 +968,15 @@ final class StatementTests: ParserTestCase {
968968
"for try await unsafe in e { }",
969969
experimentalFeatures: [.unsafeExpression]
970970
)
971+
972+
assertParse(
973+
"for unsafe in e { }",
974+
experimentalFeatures: [.unsafeExpression]
975+
)
976+
977+
assertParse(
978+
"for unsafe: Int in e { }",
979+
experimentalFeatures: [.unsafeExpression]
980+
)
971981
}
972982
}

0 commit comments

Comments
 (0)