Skip to content

Commit 913a874

Browse files
authored
Merge pull request swiftlang#124 from dabelknap/tupledecl
Add support for tuple declarations
2 parents 6470019 + 4f353ce commit 913a874

File tree

2 files changed

+53
-5
lines changed

2 files changed

+53
-5
lines changed

Sources/PrettyPrint/TokenStreamCreator.swift

+16-5
Original file line numberDiff line numberDiff line change
@@ -92,6 +92,22 @@ private final class TokenStreamCreator: SyntaxVisitor {
9292
}
9393

9494
override func visit(_ node: TupleExprSyntax) {
95+
after(
96+
node.leftParen,
97+
tokens: .break(size: 0, offset: 2), .open(.consistent, 0), .break(size: 0),
98+
.open(.consistent, 0)
99+
)
100+
before(node.rightParen, tokens: .close, .break(size: 0, offset: -2), .close)
101+
super.visit(node)
102+
}
103+
104+
override func visit(_ node: TupleElementSyntax) {
105+
before(node.firstToken, tokens: .open)
106+
if let trailingComma = node.trailingComma {
107+
after(trailingComma, tokens: .close, .break)
108+
} else {
109+
after(node.lastToken, tokens: .close)
110+
}
95111
super.visit(node)
96112
}
97113

@@ -708,11 +724,6 @@ private final class TokenStreamCreator: SyntaxVisitor {
708724
super.visit(node)
709725
}
710726

711-
override func visit(_ node: TupleElementSyntax) {
712-
after(node.trailingComma, tokens: .break)
713-
super.visit(node)
714-
}
715-
716727
override func visit(_ node: VariableDeclSyntax) {
717728
if let attributes = node.attributes {
718729
before(node.firstToken, tokens: .space(size: 0), .open(.consistent, 0))
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,37 @@
1+
public class TupleDeclTests: PrettyPrintTestCase {
2+
public func testBasicTuples() {
3+
let input =
4+
"""
5+
let a = (1, 2, 3)
6+
let a: (Int, Int, Int) = (1, 2, 3)
7+
let a = (1, 2, 3, 4, 5, 6, 7, 8, 9, 10)
8+
let a = (1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12)
9+
"""
10+
11+
let expected =
12+
"""
13+
let a = (1, 2, 3)
14+
let a: (Int, Int, Int) = (1, 2, 3)
15+
let a = (
16+
1, 2, 3, 4, 5, 6, 7, 8, 9, 10
17+
)
18+
let a = (
19+
1,
20+
2,
21+
3,
22+
4,
23+
5,
24+
6,
25+
7,
26+
8,
27+
9,
28+
10,
29+
11,
30+
12
31+
)
32+
33+
"""
34+
35+
assertPrettyPrintEqual(input: input, expected: expected, linelength: 37)
36+
}
37+
}

0 commit comments

Comments
 (0)