Skip to content

Commit fe958d1

Browse files
committed
Merge pull request swiftlang#498 from stackotter/issue-494
Fix pretty printing of multi-statement closures (issue swiftlang#494)
1 parent 8d76195 commit fe958d1

File tree

2 files changed

+21
-1
lines changed

2 files changed

+21
-1
lines changed

Sources/SwiftFormatPrettyPrint/TokenStreamCreator.swift

+1-1
Original file line numberDiff line numberDiff line change
@@ -1083,7 +1083,7 @@ fileprivate final class TokenStreamCreator: SyntaxVisitor {
10831083

10841084
override func visit(_ node: ClosureExprSyntax) -> SyntaxVisitorContinueKind {
10851085
let newlineBehavior: NewlineBehavior
1086-
if forcedBreakingClosures.remove(node.id) != nil {
1086+
if forcedBreakingClosures.remove(node.id) != nil || node.statements.count > 1 {
10871087
newlineBehavior = .soft
10881088
} else {
10891089
newlineBehavior = .elective

Tests/SwiftFormatPrettyPrintTests/ClosureExprTests.swift

+20
Original file line numberDiff line numberDiff line change
@@ -516,4 +516,24 @@ final class ClosureExprTests: PrettyPrintTestCase {
516516

517517
assertPrettyPrintEqual(input: input, expected: expected, linelength: 40)
518518
}
519+
520+
func testClosureWithSignatureAndMultipleStatements() {
521+
let input =
522+
"""
523+
{ a in a + 1
524+
a + 2
525+
}
526+
"""
527+
528+
let expected =
529+
"""
530+
{ a in
531+
a + 1
532+
a + 2
533+
}
534+
535+
"""
536+
537+
assertPrettyPrintEqual(input: input, expected: expected, linelength: 40)
538+
}
519539
}

0 commit comments

Comments
 (0)