Skip to content

Commit c168b1b

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

File tree

3 files changed

+17
-0
lines changed

3 files changed

+17
-0
lines changed

Sources/SwiftSyntax/generated/SyntaxCollections.swift

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -275,6 +275,14 @@ public struct ArrayElementListSyntax: SyntaxCollection, SyntaxHashable {
275275
}
276276
self.init(data)
277277
}
278+
279+
public init(expressions: [ExprSyntaxProtocol]) {
280+
let elements = expressions.enumerated().map { index, expression in
281+
let element = ArrayElementSyntax(expression: expression)
282+
return index != (expressions.count - 1) ? element.with(\.trailingComma, .commaToken()) : element
283+
}
284+
self.init(elements)
285+
}
278286

279287
/// The number of elements, `present` or `missing`, in this collection.
280288
public var count: Int {

Sources/SwiftSyntax/generated/syntaxNodes/SyntaxExprNodes.swift

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,10 @@ public struct ArrayExprSyntax: ExprSyntaxProtocol, SyntaxHashable {
3232
precondition(data.raw.kind == .arrayExpr)
3333
self._syntaxNode = Syntax(data)
3434
}
35+
36+
public init(expressions: [ExprSyntaxProtocol]) {
37+
self.init(elements: ArrayElementListSyntax(expressions: expressions))
38+
}
3539

3640
public init(
3741
leadingTrivia: Trivia? = nil,

Tests/SwiftSyntaxTest/SyntaxCollectionsTests.swift

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,11 @@ fileprivate func integerLiteralElement(_ int: Int) -> ArrayElementSyntax {
2222
}
2323

2424
public class SyntaxCollectionsTests: XCTestCase {
25+
public func testInitializer() {
26+
let expressions: [ExprSyntax] = [.init(stringLiteral: "0"), .init(stringLiteral: "1"), .init(stringLiteral:"2")]
27+
let arrayElementList = ArrayElementListSyntax(expressions: expressions)
28+
XCTAssertEqual(arrayElementList.description, "0,1,2")
29+
}
2530

2631
public func testAppendingElement() {
2732
let arrayElementList = ArrayElementListSyntax([

0 commit comments

Comments
 (0)