Skip to content

Commit 1c2feb7

Browse files
authored
Merge pull request swiftlang#137 from kitasuke/more-binary-operators
Make generic API for binary operators
2 parents 31aba31 + 68abec4 commit 1c2feb7

File tree

2 files changed

+23
-2
lines changed

2 files changed

+23
-2
lines changed

Sources/SwiftSyntax/SyntaxFactory.swift.gyb

+3-2
Original file line numberDiff line numberDiff line change
@@ -188,9 +188,10 @@ public enum SyntaxFactory {
188188
trailingTrivia: trailingTrivia)
189189
}
190190

191-
public static func makeEqualityOperator(leadingTrivia: Trivia = [],
191+
public static func makeBinaryOperator(_ name: String,
192+
leadingTrivia: Trivia = [],
192193
trailingTrivia: Trivia = []) -> TokenSyntax {
193-
return makeToken(.spacedBinaryOperator("=="),
194+
return makeToken(.spacedBinaryOperator(name),
194195
presence: .present,
195196
leadingTrivia: leadingTrivia,
196197
trailingTrivia: trailingTrivia)

Tests/SwiftSyntaxTest/SyntaxFactory.swift

+20
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@ public class SyntaxFactoryAPITestCase: XCTestCase {
2525
("testWithOptionalChild", testWithOptionalChild),
2626
("testUnknownSyntax", testUnknownSyntax),
2727
("testMakeStringLiteralExpr", testMakeStringLiteralExpr),
28+
("testMakeBinaryOperator", testMakeBinaryOperator),
2829
]
2930

3031
public func testGenerated() {
@@ -173,4 +174,23 @@ public class SyntaxFactoryAPITestCase: XCTestCase {
173174
"""
174175
XCTAssertEqual(expr.description, expected)
175176
}
177+
178+
public func testMakeBinaryOperator() {
179+
let first = IntegerLiteralExprSyntax {
180+
$0.useDigits(SyntaxFactory.makeIntegerLiteral("1", trailingTrivia: .spaces(1)))
181+
}
182+
let second = IntegerLiteralExprSyntax {
183+
$0.useDigits(SyntaxFactory.makeIntegerLiteral("1"))
184+
}
185+
let operatorNames = ["==", "!=", "+", "-", "*", "/", "<", ">", "<=", ">="]
186+
operatorNames.forEach { operatorName in
187+
let operatorToken = SyntaxFactory.makeBinaryOperator(operatorName, trailingTrivia: .spaces(1))
188+
let operatorExpr = BinaryOperatorExprSyntax {
189+
$0.useOperatorToken(operatorToken)
190+
}
191+
let exprList = SyntaxFactory.makeExprList([first, operatorExpr, second])
192+
193+
XCTAssertEqual("\(exprList)", "1 \(operatorName) 1")
194+
}
195+
}
176196
}

0 commit comments

Comments
 (0)