Skip to content

Commit 243a1d3

Browse files
committed
Don’t consider MattchingPattern start the start of an expression
1 parent e5ff0fd commit 243a1d3

File tree

2 files changed

+14
-5
lines changed

2 files changed

+14
-5
lines changed

Sources/SwiftParser/TokenSpecSet.swift

Lines changed: 0 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -706,7 +706,6 @@ enum PrimaryExpressionStart: TokenSpecSet {
706706
enum ExpressionStart: TokenSpecSet {
707707
case awaitTryMove(AwaitTryMove)
708708
case expressionPrefixOperator(ExpressionPrefixOperator)
709-
case matchingPatternStart(MatchingPatternStart)
710709
case primaryExpressionStart(PrimaryExpressionStart)
711710
case ifOrSwitch(IfOrSwitch)
712711

@@ -715,8 +714,6 @@ enum ExpressionStart: TokenSpecSet {
715714
self = .awaitTryMove(subset)
716715
} else if let subset = ExpressionPrefixOperator(lexeme: lexeme) {
717716
self = .expressionPrefixOperator(subset)
718-
} else if let subset = MatchingPatternStart(lexeme: lexeme) {
719-
self = .matchingPatternStart(subset)
720717
} else if let subset = PrimaryExpressionStart(lexeme: lexeme) {
721718
self = .primaryExpressionStart(subset)
722719
} else if let subset = IfOrSwitch(lexeme: lexeme) {
@@ -729,7 +726,6 @@ enum ExpressionStart: TokenSpecSet {
729726
static var allCases: [ExpressionStart] {
730727
return AwaitTryMove.allCases.map(Self.awaitTryMove)
731728
+ ExpressionPrefixOperator.allCases.map(Self.expressionPrefixOperator)
732-
+ MatchingPatternStart.allCases.map(Self.matchingPatternStart)
733729
+ PrimaryExpressionStart.allCases.map(Self.primaryExpressionStart)
734730
+ IfOrSwitch.allCases.map(Self.ifOrSwitch)
735731
}
@@ -738,7 +734,6 @@ enum ExpressionStart: TokenSpecSet {
738734
switch self {
739735
case .awaitTryMove(let underlyingKind): return underlyingKind.spec
740736
case .expressionPrefixOperator(let underlyingKind): return underlyingKind.spec
741-
case .matchingPatternStart(let underlyingKind): return underlyingKind.spec
742737
case .primaryExpressionStart(let underlyingKind): return underlyingKind.spec
743738
case .ifOrSwitch(let underlyingKind): return underlyingKind.spec
744739
}

Tests/SwiftParserTest/ExpressionTests.swift

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1627,4 +1627,18 @@ final class StatementExpressionTests: XCTestCase {
16271627
)
16281628
)
16291629
}
1630+
1631+
func testPatternExprInSwitchCaseItem() {
1632+
AssertParse(
1633+
"""
1634+
switch x {
1635+
case a:
1636+
1️⃣is
1637+
}
1638+
""",
1639+
diagnostics: [
1640+
DiagnosticSpec(message: "unexpected 'is' keyword in 'switch' statement")
1641+
]
1642+
)
1643+
}
16301644
}

0 commit comments

Comments
 (0)