Skip to content

Commit d5ead9d

Browse files
authored
Merge pull request #462 from anreitersimon/allow-combining-code-block-item-lists
Allow combining code block item lists
2 parents 518f1d2 + fb0a4ef commit d5ead9d

File tree

5 files changed

+649
-44
lines changed

5 files changed

+649
-44
lines changed

Sources/SwiftSyntaxBuilder/BuildableCollectionNodes.swift.gyb

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,13 @@ public struct ${type.buildable()}: ExpressibleByArrayLiteral, SyntaxBuildable, $
3939
self.elements = elements.map { $0.create${element_type.buildable_base_name()}() }
4040
% end
4141
}
42+
43+
/// Creates a new ${type.buildable()} by flattening the elements in `lists`
44+
public init(combining lists: [${type.expressible_as()}]) {
45+
self.elements = lists.flatMap {
46+
$0.create${type.buildable()}().elements
47+
}
48+
}
4249

4350
public init(arrayLiteral elements: ${element_type.expressible_as()}...) {
4451
self.init(elements)

Sources/SwiftSyntaxBuilder/ResultBuilders.swift.gyb

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -49,7 +49,12 @@ public struct ${type.result_builder()} {
4949
public static func buildExpression(_ expression: Expression) -> Component {
5050
return [expression]
5151
}
52-
52+
53+
/// Add all the elements of `expression` to this result builder, effectively flattening them.
54+
public static func buildExpression(_ expression: ${type.expressible_as()}) -> Component {
55+
return expression.create${type.buildable()}().elements
56+
}
57+
5358
/// Enables support for `if` statements that do not have an `else`.
5459
public static func buildOptional(_ component: Component?) -> Component {
5560
return component ?? []

0 commit comments

Comments
 (0)