Skip to content

Commit e89d138

Browse files
Add buildFinalResult to CodeBlockItemListBuilder to ensure newline between expressions
1 parent c2c7980 commit e89d138

File tree

1 file changed

+12
-0
lines changed

1 file changed

+12
-0
lines changed

Sources/SwiftSyntaxBuilder/ResultBuilderExtensions.swift

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,18 @@ extension CodeBlockItemListBuilder {
4040
public static func buildExpression(_ expression: some Sequence<DeclSyntaxProtocol>) -> Component {
4141
buildExpression(expression.map { CodeBlockItemSyntax(item: .decl(DeclSyntax($0))) })
4242
}
43+
44+
public static func buildFinalResult(_ component: Component) -> CodeBlockItemListSyntax {
45+
.init(
46+
component.enumerated().map { (index, expression) in
47+
if index > component.startIndex, !expression.leadingTrivia.contains(where: \.isNewline) {
48+
expression.with(\.leadingTrivia, .newline.merging(expression.leadingTrivia))
49+
} else {
50+
expression
51+
}
52+
}
53+
)
54+
}
4355
}
4456

4557
extension ConditionElementListBuilder {

0 commit comments

Comments
 (0)