Skip to content

Commit 75c8bd6

Browse files
committed
Don’t consider MattchingPattern start the start of an expression
1 parent 83a617e commit 75c8bd6

File tree

2 files changed

+15
-6
lines changed

2 files changed

+15
-6
lines changed

Sources/SwiftParser/RawTokenKindSubset.swift

Lines changed: 0 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -773,16 +773,13 @@ enum PrimaryExpressionStart: RawTokenKindSubset {
773773
enum ExpressionStart: RawTokenKindSubset {
774774
case awaitTryMove(AwaitTryMove)
775775
case expressionPrefixOperator(ExpressionPrefixOperator)
776-
case matchingPatternStart(MatchingPatternStart)
777776
case primaryExpressionStart(PrimaryExpressionStart)
778777

779778
init?(lexeme: Lexer.Lexeme) {
780779
if let subset = AwaitTryMove(lexeme: lexeme) {
781780
self = .awaitTryMove(subset)
782781
} else if let subset = ExpressionPrefixOperator(lexeme: lexeme) {
783782
self = .expressionPrefixOperator(subset)
784-
} else if let subset = MatchingPatternStart(lexeme: lexeme) {
785-
self = .matchingPatternStart(subset)
786783
} else if let subset = PrimaryExpressionStart(lexeme: lexeme) {
787784
self = .primaryExpressionStart(subset)
788785
} else {
@@ -793,15 +790,13 @@ enum ExpressionStart: RawTokenKindSubset {
793790
static var allCases: [ExpressionStart] {
794791
return AwaitTryMove.allCases.map(Self.awaitTryMove)
795792
+ ExpressionPrefixOperator.allCases.map(Self.expressionPrefixOperator)
796-
+ MatchingPatternStart.allCases.map(Self.matchingPatternStart)
797793
+ PrimaryExpressionStart.allCases.map(Self.primaryExpressionStart)
798794
}
799795

800796
var rawTokenKind: RawTokenKind {
801797
switch self {
802798
case .awaitTryMove(let underlyingKind): return underlyingKind.rawTokenKind
803799
case .expressionPrefixOperator(let underlyingKind): return underlyingKind.rawTokenKind
804-
case .matchingPatternStart(let underlyingKind): return underlyingKind.rawTokenKind
805800
case .primaryExpressionStart(let underlyingKind): return underlyingKind.rawTokenKind
806801
}
807802
}
@@ -810,7 +805,6 @@ enum ExpressionStart: RawTokenKindSubset {
810805
switch self {
811806
case .awaitTryMove(let underlyingKind): return underlyingKind.contextualKeyword
812807
case .expressionPrefixOperator(let underlyingKind): return underlyingKind.contextualKeyword
813-
case .matchingPatternStart(let underlyingKind): return underlyingKind.contextualKeyword
814808
case .primaryExpressionStart(let underlyingKind): return underlyingKind.contextualKeyword
815809
}
816810
}

Tests/SwiftParserTest/StatementTests.swift

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -603,4 +603,19 @@ final class StatementTests: XCTestCase {
603603
)
604604
)
605605
}
606+
607+
func testPatternExprInSwitchCaseItem() {
608+
AssertParse(
609+
"""
610+
switch x {
611+
case a:
612+
1️⃣is
613+
}
614+
""",
615+
diagnostics: [
616+
DiagnosticSpec(message: "unexpected 'is' keyword in 'switch' statement")
617+
]
618+
)
619+
}
620+
606621
}

0 commit comments

Comments
 (0)