diff --git a/Sources/SwiftSyntax/SyntaxFactory.swift.gyb b/Sources/SwiftSyntax/SyntaxFactory.swift.gyb index 125e2bf8dd0..3b96c56e706 100644 --- a/Sources/SwiftSyntax/SyntaxFactory.swift.gyb +++ b/Sources/SwiftSyntax/SyntaxFactory.swift.gyb @@ -188,9 +188,10 @@ public enum SyntaxFactory { trailingTrivia: trailingTrivia) } - public static func makeEqualityOperator(leadingTrivia: Trivia = [], + public static func makeBinaryOperator(_ name: String, + leadingTrivia: Trivia = [], trailingTrivia: Trivia = []) -> TokenSyntax { - return makeToken(.spacedBinaryOperator("=="), + return makeToken(.spacedBinaryOperator(name), presence: .present, leadingTrivia: leadingTrivia, trailingTrivia: trailingTrivia) diff --git a/Tests/SwiftSyntaxTest/SyntaxFactory.swift b/Tests/SwiftSyntaxTest/SyntaxFactory.swift index 2005a13ef7a..3ab660aca17 100644 --- a/Tests/SwiftSyntaxTest/SyntaxFactory.swift +++ b/Tests/SwiftSyntaxTest/SyntaxFactory.swift @@ -25,6 +25,7 @@ public class SyntaxFactoryAPITestCase: XCTestCase { ("testWithOptionalChild", testWithOptionalChild), ("testUnknownSyntax", testUnknownSyntax), ("testMakeStringLiteralExpr", testMakeStringLiteralExpr), + ("testMakeBinaryOperator", testMakeBinaryOperator), ] public func testGenerated() { @@ -173,4 +174,23 @@ public class SyntaxFactoryAPITestCase: XCTestCase { """ XCTAssertEqual(expr.description, expected) } + + public func testMakeBinaryOperator() { + let first = IntegerLiteralExprSyntax { + $0.useDigits(SyntaxFactory.makeIntegerLiteral("1", trailingTrivia: .spaces(1))) + } + let second = IntegerLiteralExprSyntax { + $0.useDigits(SyntaxFactory.makeIntegerLiteral("1")) + } + let operatorNames = ["==", "!=", "+", "-", "*", "/", "<", ">", "<=", ">="] + operatorNames.forEach { operatorName in + let operatorToken = SyntaxFactory.makeBinaryOperator(operatorName, trailingTrivia: .spaces(1)) + let operatorExpr = BinaryOperatorExprSyntax { + $0.useOperatorToken(operatorToken) + } + let exprList = SyntaxFactory.makeExprList([first, operatorExpr, second]) + + XCTAssertEqual("\(exprList)", "1 \(operatorName) 1") + } + } }