Skip to content

Commit ac6f92b

Browse files
authored
Merge pull request #715 from CodaFi/typing-test
Re-parent the Unexpected Nodes in Function Types
2 parents b0ecee7 + bfbbcba commit ac6f92b

File tree

2 files changed

+18
-0
lines changed

2 files changed

+18
-0
lines changed

Sources/SwiftParser/Types.swift

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -41,26 +41,38 @@ extension Parser {
4141
let arrow = self.eat(.arrow)
4242
let returnTy = self.parseType()
4343

44+
let unexpectedBeforeLeftParen: RawUnexpectedNodesSyntax?
4445
let leftParen: RawTokenSyntax
46+
let unexpectedBetweenLeftParenAndElements: RawUnexpectedNodesSyntax?
4547
let arguments: RawTupleTypeElementListSyntax
48+
let unexpectedBetweenElementsAndRightParen: RawUnexpectedNodesSyntax?
4649
let rightParen: RawTokenSyntax
4750
if let input = base.as(RawTupleTypeSyntax.self) {
51+
unexpectedBeforeLeftParen = input.unexpectedBeforeLeftParen
4852
leftParen = input.leftParen
53+
unexpectedBetweenLeftParenAndElements = input.unexpectedBetweenLeftParenAndElements
4954
arguments = input.elements
55+
unexpectedBetweenElementsAndRightParen = input.unexpectedBetweenElementsAndRightParen
5056
rightParen = input.rightParen
5157
} else {
58+
unexpectedBeforeLeftParen = nil
5259
leftParen = RawTokenSyntax(missing: .leftParen, arena: self.arena)
60+
unexpectedBetweenLeftParenAndElements = nil
5361
arguments = RawTupleTypeElementListSyntax(elements: [
5462
RawTupleTypeElementSyntax(
5563
inOut: nil, name: nil, secondName: nil, colon: nil, type: base,
5664
ellipsis: nil, initializer: nil, trailingComma: nil, arena: self.arena)
5765
], arena: self.arena)
66+
unexpectedBetweenElementsAndRightParen = nil
5867
rightParen = RawTokenSyntax(missing: .rightParen, arena: self.arena)
5968
}
6069

6170
base = RawTypeSyntax(RawFunctionTypeSyntax(
71+
unexpectedBeforeLeftParen,
6272
leftParen: leftParen,
73+
unexpectedBetweenLeftParenAndElements,
6374
arguments: arguments,
75+
unexpectedBetweenElementsAndRightParen,
6476
rightParen: rightParen,
6577
asyncKeyword: firstEffect,
6678
throwsOrRethrowsKeyword: secondEffect,

Tests/SwiftParserTest/Types.swift

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,4 +26,10 @@ final class TypeTests: XCTestCase {
2626
{ $0.parseType() }
2727
)
2828
}
29+
30+
func testFunctionTypes() throws {
31+
AssertParse("t as(#^DIAG^#..)->", diagnostics: [
32+
DiagnosticSpec(message: "Unexpected text '..' found in function type")
33+
])
34+
}
2935
}

0 commit comments

Comments
 (0)