Skip to content

Commit 5731968

Browse files
committed
Don’t add entirely missing elements to collection literals
1 parent ae00785 commit 5731968

File tree

2 files changed

+12
-8
lines changed

2 files changed

+12
-8
lines changed

Sources/SwiftParser/Expressions.swift

Lines changed: 12 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1617,21 +1617,27 @@ extension Parser {
16171617

16181618
switch elementKind! {
16191619
case .array(let el):
1620-
elements.append(RawSyntax(RawArrayElementSyntax(
1621-
expression: el, trailingComma: comma, arena: self.arena)))
1622-
if el.is(RawMissingExprSyntax.self) {
1620+
let element = RawArrayElementSyntax(
1621+
expression: el, trailingComma: comma, arena: self.arena
1622+
)
1623+
if element.raw.byteLength == 0 {
16231624
break COLLECTION_LOOP
1625+
} else {
1626+
elements.append(RawSyntax(element))
16241627
}
16251628
case .dictionary(let key, let unexpectedBeforeColon, let colon, let value):
1626-
elements.append(RawSyntax(RawDictionaryElementSyntax(
1629+
let element = RawDictionaryElementSyntax(
16271630
keyExpression: key,
16281631
unexpectedBeforeColon,
16291632
colon: colon,
16301633
valueExpression: value,
16311634
trailingComma: comma,
1632-
arena: self.arena)))
1633-
if key.is(RawMissingExprSyntax.self), colon.isMissing, value.is(RawMissingExprSyntax.self) {
1635+
arena: self.arena
1636+
)
1637+
if element.raw.byteLength == 0 {
16341638
break COLLECTION_LOOP
1639+
} else {
1640+
elements.append(RawSyntax(element))
16351641
}
16361642
}
16371643

Tests/SwiftParserTest/Expressions.swift

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -162,8 +162,6 @@ final class ExpressionTests: XCTestCase {
162162
([1:#^DIAG^#)
163163
""",
164164
diagnostics: [
165-
// FIXME: Why is this diagnostic produced?
166-
DiagnosticSpec(message: "Expected ':' in dictionary"),
167165
DiagnosticSpec(message: "Expected ']' to end dictionary"),
168166
]
169167
)

0 commit comments

Comments
 (0)