Skip to content

Commit f296bc8

Browse files
authored
Merge pull request #1444 from kimdv/kimdv/add-missing-diagnostic-for-missing-left-brace-or-if-after-else
2 parents 6e0e1fc + dcf5304 commit f296bc8

File tree

3 files changed

+8
-2
lines changed

3 files changed

+8
-2
lines changed

Sources/SwiftParserDiagnostics/ParseDiagnosticsGenerator.swift

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -765,6 +765,10 @@ public class ParseDiagnosticsGenerator: SyntaxAnyVisitor {
765765
addDiagnostic(node.conditions, MissingConditionInStatement(node: node), handledNodes: [node.conditions.id])
766766
}
767767

768+
if let leftBrace = node.elseBody?.as(CodeBlockSyntax.self)?.leftBrace, leftBrace.presence == .missing {
769+
addDiagnostic(leftBrace, .expectedLeftBraceOrIfAfterElse, handledNodes: [leftBrace.id])
770+
}
771+
768772
return .visitChildren
769773
}
770774

Sources/SwiftParserDiagnostics/ParserDiagnosticMessages.swift

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -128,6 +128,9 @@ extension DiagnosticMessage where Self == StaticParserError {
128128
public static var expectedExpressionAfterTry: Self {
129129
.init("expected expression after 'try'")
130130
}
131+
public static var expectedLeftBraceOrIfAfterElse: Self {
132+
.init("expected '{' or 'if' after 'else'")
133+
}
131134
public static var expectedSequenceExpressionInForEachLoop: Self {
132135
.init("expected Sequence expression for for-each loop")
133136
}

Tests/SwiftParserTest/translated/RecoveryTests.swift

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2202,8 +2202,7 @@ final class RecoveryTests: XCTestCase {
22022202
}2️⃣
22032203
""",
22042204
diagnostics: [
2205-
// TODO: Old parser expected error on line 2: expected '{' or 'if' after 'else'
2206-
DiagnosticSpec(locationMarker: "1️⃣", message: "expected '{' in 'if' statement"),
2205+
DiagnosticSpec(locationMarker: "1️⃣", message: "expected '{' or 'if' after 'else'"),
22072206
DiagnosticSpec(locationMarker: "2️⃣", message: "expected '}' to end function"),
22082207
]
22092208
)

0 commit comments

Comments
 (0)