Skip to content

Commit 8275367

Browse files
committed
Add an initializer that accepts [ExprSyntax] for ArrayExprSyntax
1 parent 3ed9dcf commit 8275367

File tree

2 files changed

+26
-0
lines changed

2 files changed

+26
-0
lines changed

Sources/SwiftSyntaxBuilder/ConvenienceInitializers.swift

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,26 @@
1313
@_spi(RawSyntax) import SwiftParser
1414
@_spi(RawSyntax) import SwiftSyntax
1515

16+
// MARK: - ArrayElementList
17+
18+
extension ArrayElementListSyntax {
19+
public init(expressions: [ExprSyntaxProtocol]) {
20+
let elements = expressions.enumerated().map { index, expression in
21+
let element = ArrayElementSyntax(expression: expression)
22+
return index != (expressions.count - 1) ? element.with(\.trailingComma, .commaToken()) : element
23+
}
24+
self.init(elements)
25+
}
26+
}
27+
28+
// MARK: - ArrayExpr
29+
30+
extension ArrayExprSyntax {
31+
public init(expressions: [ExprSyntaxProtocol]) {
32+
self.init(elements: ArrayElementListSyntax(expressions: expressions))
33+
}
34+
}
35+
1636
// MARK: - CustomAttribute
1737

1838
extension AttributeSyntax {

Tests/SwiftSyntaxBuilderTest/ArrayExprTests.swift

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -47,4 +47,10 @@ final class ArrayExprTests: XCTestCase {
4747
"""
4848
)
4949
}
50+
51+
func testInitializerWithExpressions() {
52+
let expressions: [ExprSyntax] = [.init(literal: 0), .init(literal: 1), .init(literal: 2)]
53+
let arrayExpr = ArrayExprSyntax(expressions: expressions)
54+
XCTAssertEqual(arrayExpr.description, "[0,1,2]")
55+
}
5056
}

0 commit comments

Comments
 (0)