Skip to content

Commit bf18c71

Browse files
authored
Merge pull request #1693 from gibachan/array-expr-syntax-initializer
Add an initializer that accepts [ExprSyntax] for ArrayExprSyntax
2 parents 480f06c + 50bc963 commit bf18c71

File tree

2 files changed

+31
-0
lines changed

2 files changed

+31
-0
lines changed

Sources/SwiftSyntaxBuilder/ConvenienceInitializers.swift

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

16+
// MARK: - ArrayElementList
17+
18+
extension ArrayElementListSyntax {
19+
public init(expressions: [ExprSyntax]) {
20+
let lastIndex = expressions.count - 1
21+
let elements = expressions.enumerated().map { index, expression in
22+
let element = ArrayElementSyntax(expression: expression)
23+
if index < lastIndex {
24+
return element.ensuringTrailingComma()
25+
} else {
26+
return element
27+
}
28+
}
29+
self.init(elements)
30+
}
31+
}
32+
33+
// MARK: - ArrayExpr
34+
35+
extension ArrayExprSyntax {
36+
public init(expressions: [ExprSyntax]) {
37+
self.init(elements: ArrayElementListSyntax(expressions: expressions))
38+
}
39+
}
40+
1641
// MARK: - CustomAttribute
1742

1843
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] = ["0", "1", "2"]
53+
let arrayExpr = ArrayExprSyntax(expressions: expressions)
54+
XCTAssertEqual(arrayExpr.description, "[0,1,2]")
55+
}
5056
}

0 commit comments

Comments
 (0)