Skip to content

Commit 9efbb3f

Browse files
authored
Merge pull request #452 from evnik/FunctionCallExpr
Improvements in `FunctionCallExpr` convenience initializer
2 parents 53f3e16 + 0f49356 commit 9efbb3f

File tree

4 files changed

+19
-29
lines changed

4 files changed

+19
-29
lines changed

Sources/SwiftSyntaxBuilder/FunctionCallExprConvenienceInitializers.swift

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -15,15 +15,15 @@ import SwiftSyntax
1515

1616
extension FunctionCallExpr {
1717
public init(
18-
_ calledExpression: ExpressibleAsIdentifierExpr,
19-
leftParen: TokenSyntax? = nil,
20-
rightParen: TokenSyntax? = nil,
18+
_ calledExpression: ExpressibleAsExprBuildable,
19+
leftParen: TokenSyntax? = .leftParen,
20+
rightParen: TokenSyntax? = .rightParen,
2121
trailingClosure: ExpressibleAsClosureExpr? = nil,
2222
@TupleExprElementListBuilder argumentListBuilder: () -> ExpressibleAsTupleExprElementList = { TupleExprElementList([]) },
2323
@MultipleTrailingClosureElementListBuilder additionalTrailingClosuresBuilder: () -> MultipleTrailingClosureElementList? = { nil }
2424
) {
2525
self.init(
26-
calledExpression: calledExpression.createIdentifierExpr(),
26+
calledExpression: calledExpression.createExprBuildable(),
2727
leftParen: leftParen,
2828
argumentList: argumentListBuilder(),
2929
rightParen: rightParen,

Sources/SwiftSyntaxBuilderGeneration/main.swift

Lines changed: 11 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -17,15 +17,15 @@ import SwiftSyntaxBuilder
1717
private let format = Format(indentWidth: 2)
1818

1919
private func createSpacingCall() -> FunctionCallExpr {
20-
FunctionCallExpr(calledExpression: MemberAccessExpr(name: "spaces"), leftParen: .leftParen, argumentList: TupleExprElement(expression: IntegerLiteralExpr(1)), rightParen: .rightParen)
20+
FunctionCallExpr(MemberAccessExpr(name: "spaces"), argumentListBuilder: { TupleExprElement(expression: IntegerLiteralExpr(1)) })
2121
}
2222

2323
private func createWithLeadingTriviaCall() -> FunctionCallExpr {
24-
FunctionCallExpr(calledExpression: MemberAccessExpr(name: "withLeadingTrivia"), leftParen: .leftParen, argumentList: TupleExprElement.init(expression: createSpacingCall()), rightParen: .rightParen)
24+
FunctionCallExpr(MemberAccessExpr(name: "withLeadingTrivia"), argumentListBuilder: { TupleExprElement(expression: createSpacingCall()) })
2525
}
2626

2727
private func createWithTrailingTriviaCall() -> FunctionCallExpr {
28-
FunctionCallExpr(calledExpression: MemberAccessExpr(name: "withTrailingTrivia"), leftParen: .leftParen, argumentList: TupleExprElement(expression: createSpacingCall()), rightParen: .rightParen)
28+
FunctionCallExpr(MemberAccessExpr(name: "withTrailingTrivia"), argumentListBuilder: { TupleExprElement(expression: createSpacingCall()) })
2929
}
3030

3131
private func createTokenSyntaxPatternBinding(_ pattern: ExpressibleAsPatternBuildable, accessor: ExpressibleAsSyntaxBuildable) -> PatternBinding {
@@ -72,9 +72,7 @@ let tokensFile = SourceFile {
7272
// We need to use `CodeBlock` here to ensure there is braces around.
7373

7474
let accessor = CodeBlock {
75-
FunctionCallExpr(calledExpression: MemberAccessExpr(base: "SyntaxFactory", name: "make\(token.name)Keyword"),
76-
leftParen: .leftParen,
77-
rightParen: .rightParen)
75+
FunctionCallExpr(MemberAccessExpr(base: "SyntaxFactory", name: "make\(token.name)Keyword"))
7876

7977
if token.requiresLeadingSpace {
8078
createWithLeadingTriviaCall()
@@ -99,9 +97,7 @@ let tokensFile = SourceFile {
9997
bindingsBuilder: {
10098
// We need to use `CodeBlock` here to ensure there is braces around.
10199
let accessor = CodeBlock {
102-
FunctionCallExpr(calledExpression: MemberAccessExpr(base: "SyntaxFactory", name: "make\(token.name)Token"),
103-
leftParen: .leftParen,
104-
rightParen: .rightParen)
100+
FunctionCallExpr(MemberAccessExpr(base: "SyntaxFactory", name: "make\(token.name)Token"))
105101

106102
if token.requiresLeadingSpace {
107103
createWithLeadingTriviaCall()
@@ -115,7 +111,7 @@ let tokensFile = SourceFile {
115111
createTokenSyntaxPatternBinding("`\(token.name.withFirstCharacterLowercased)`", accessor: accessor)
116112
})
117113
} else {
118-
let signature = FunctionSignature(input: ParameterClause(leftParen: TokenSyntax.leftParen, parameterList: FunctionParameter(attributes: nil, firstName: .wildcard, secondName: .identifier("text"), colon: .colon, type: "String"), rightParen: .rightParen.withTrailingTrivia(.spaces(1))), output: "TokenSyntax")
114+
let signature = FunctionSignature(input: ParameterClause(parameterList: FunctionParameter(attributes: nil, firstName: .wildcard, secondName: .identifier("text"), colon: .colon, type: "String"), rightParen: .rightParen.withTrailingTrivia(.spaces(1))), output: "TokenSyntax")
119115

120116
FunctionDecl(identifier: .identifier("`\(token.name.withFirstCharacterLowercased)`"),
121117
signature: signature,
@@ -127,7 +123,7 @@ let tokensFile = SourceFile {
127123
}
128124
},
129125
bodyBuilder: {
130-
FunctionCallExpr(calledExpression: MemberAccessExpr(base: "SyntaxFactory", name: "make\(token.name)"), leftParen: .leftParen, rightParen: .rightParen, trailingClosure: nil, argumentListBuilder: {
126+
FunctionCallExpr(MemberAccessExpr(base: "SyntaxFactory", name: "make\(token.name)"), argumentListBuilder: {
131127
TupleExprElement(expression: IdentifierExpr("text"))
132128
})
133129

@@ -146,12 +142,10 @@ let tokensFile = SourceFile {
146142
bindingsBuilder: {
147143
// We need to use `CodeBlock` here to ensure there is braces around.
148144
let body = CodeBlock {
149-
FunctionCallExpr(calledExpression: MemberAccessExpr(base: "SyntaxFactory", name: "makeToken"),
150-
leftParen: .leftParen,
151-
rightParen: .rightParen,
145+
FunctionCallExpr(MemberAccessExpr(base: "SyntaxFactory", name: "makeToken"),
152146
argumentListBuilder: {
153-
TupleExprElement(expression: FunctionCallExpr(calledExpression: MemberAccessExpr(name: "eof")), trailingComma: .comma)
154-
TupleExprElement(label: TokenSyntax.identifier("presence"), colon: .colon, expression: FunctionCallExpr(calledExpression: MemberAccessExpr(name: "present")))
147+
TupleExprElement(expression: MemberAccessExpr(name: "eof"), trailingComma: .comma)
148+
TupleExprElement(label: TokenSyntax.identifier("presence"), colon: .colon, expression: MemberAccessExpr(name: "present"))
155149
})
156150
}
157151

@@ -162,9 +156,7 @@ let tokensFile = SourceFile {
162156
bindingsBuilder: {
163157
// We need to use `CodeBlock` here to ensure there is braces around.
164158
let body = CodeBlock {
165-
FunctionCallExpr(calledExpression: MemberAccessExpr(base: "SyntaxFactory", name: "makeContextualKeyword"),
166-
leftParen: .leftParen,
167-
rightParen: .rightParen,
159+
FunctionCallExpr(MemberAccessExpr(base: "SyntaxFactory", name: "makeContextualKeyword"),
168160
argumentListBuilder: {
169161
TupleExprElement(expression: StringLiteralExpr("open"))
170162
})

Tests/SwiftSyntaxBuilderTest/ExtensionDeclTests.swift

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -7,9 +7,7 @@ final class ExtensionDeclTests: XCTestCase {
77
let keywords = ["associatedtype", "class"].map { keyword -> VariableDecl in
88
// We need to use `CodeBlock` here to ensure there is braces around.
99
let body = CodeBlock {
10-
FunctionCallExpr("SyntaxFactory.make\(keyword)Keyword",
11-
leftParen: .leftParen,
12-
rightParen: .rightParen)
10+
FunctionCallExpr("SyntaxFactory.make\(keyword)Keyword")
1311
}
1412

1513
return VariableDecl(letOrVarKeyword: .var,

Tests/SwiftSyntaxBuilderTest/FunctionTests.swift

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@ final class FunctionTests: XCTestCase {
2424
]), body: ifCodeBlock)
2525

2626
ReturnStmt(expression: SequenceExpr(elementsBuilder: {
27-
FunctionCallExpr(calledExpression: IdentifierExpr("fibonacci"), leftParen: .leftParen, rightParen: .rightParen, argumentListBuilder: {
27+
FunctionCallExpr("fibonacci", argumentListBuilder: {
2828
TupleExprElement(expression: SequenceExpr(elementsBuilder: {
2929
IntegerLiteralExpr(digits: "n")
3030

@@ -36,7 +36,7 @@ final class FunctionTests: XCTestCase {
3636

3737
BinaryOperatorExpr("+")
3838

39-
FunctionCallExpr("fibonacci", leftParen: .leftParen, rightParen: .rightParen, argumentListBuilder: {
39+
FunctionCallExpr(MemberAccessExpr(base: "self", name: "fibonacci"), argumentListBuilder: {
4040
TupleExprElement(expression: SequenceExpr(elementsBuilder: {
4141
IntegerLiteralExpr(digits: "n")
4242

@@ -56,7 +56,7 @@ final class FunctionTests: XCTestCase {
5656
if n <= 1{
5757
return n
5858
}
59-
return fibonacci(n - 1) + fibonacci(n - 2)
59+
return fibonacci(n - 1) + self.fibonacci(n - 2)
6060
}
6161
""")
6262
}

0 commit comments

Comments
 (0)