Skip to content

Commit 68abec4

Browse files
committed
Make generic binary operator
1 parent 32f575b commit 68abec4

File tree

2 files changed

+21
-223
lines changed

2 files changed

+21
-223
lines changed

Sources/SwiftSyntax/SyntaxFactory.swift.gyb

Lines changed: 3 additions & 122 deletions
Original file line numberDiff line numberDiff line change
@@ -188,129 +188,10 @@ public enum SyntaxFactory {
188188
trailingTrivia: trailingTrivia)
189189
}
190190

191-
public static func makeEqualityOperator(leadingTrivia: Trivia = [],
192-
trailingTrivia: Trivia = []) -> TokenSyntax {
193-
return makeToken(.spacedBinaryOperator("=="),
194-
presence: .present,
195-
leadingTrivia: leadingTrivia,
196-
trailingTrivia: trailingTrivia)
197-
}
198-
199-
public static func makeNonEqualityOperator(leadingTrivia: Trivia = [],
200-
trailingTrivia: Trivia = []) -> TokenSyntax {
201-
return makeToken(.spacedBinaryOperator("!="),
202-
presence: .present,
203-
leadingTrivia: leadingTrivia,
204-
trailingTrivia: trailingTrivia)
205-
}
206-
207-
public static func makeAdditionOperator(leadingTrivia: Trivia = [],
208-
trailingTrivia: Trivia = []) -> TokenSyntax {
209-
return makeToken(.spacedBinaryOperator("+"),
210-
presence: .present,
211-
leadingTrivia: leadingTrivia,
212-
trailingTrivia: trailingTrivia)
213-
}
214-
215-
public static func makeSubtractionOperator(leadingTrivia: Trivia = [],
216-
trailingTrivia: Trivia = []) -> TokenSyntax {
217-
return makeToken(.spacedBinaryOperator("-"),
218-
presence: .present,
219-
leadingTrivia: leadingTrivia,
220-
trailingTrivia: trailingTrivia)
221-
}
222-
223-
public static func makeMultiplicationOperator(leadingTrivia: Trivia = [],
224-
trailingTrivia: Trivia = []) -> TokenSyntax {
225-
return makeToken(.spacedBinaryOperator("*"),
226-
presence: .present,
227-
leadingTrivia: leadingTrivia,
228-
trailingTrivia: trailingTrivia)
229-
}
230-
231-
public static func makeDivisionOperator(leadingTrivia: Trivia = [],
232-
trailingTrivia: Trivia = []) -> TokenSyntax {
233-
return makeToken(.spacedBinaryOperator("/"),
234-
presence: .present,
235-
leadingTrivia: leadingTrivia,
236-
trailingTrivia: trailingTrivia)
237-
}
238-
239-
public static func makeRemainderOperator(leadingTrivia: Trivia = [],
240-
trailingTrivia: Trivia = []) -> TokenSyntax {
241-
return makeToken(.spacedBinaryOperator("%"),
242-
presence: .present,
243-
leadingTrivia: leadingTrivia,
244-
trailingTrivia: trailingTrivia)
245-
}
246-
247-
public static func makeAdditionAssignmentOperator(leadingTrivia: Trivia = [],
248-
trailingTrivia: Trivia = []) -> TokenSyntax {
249-
return makeToken(.spacedBinaryOperator("+="),
250-
presence: .present,
251-
leadingTrivia: leadingTrivia,
252-
trailingTrivia: trailingTrivia)
253-
}
254-
255-
public static func makeSubtractionAssignmentOperator(leadingTrivia: Trivia = [],
256-
trailingTrivia: Trivia = []) -> TokenSyntax {
257-
return makeToken(.spacedBinaryOperator("-="),
258-
presence: .present,
259-
leadingTrivia: leadingTrivia,
260-
trailingTrivia: trailingTrivia)
261-
}
262-
263-
public static func makeMultiplicationAssignmentOperator(leadingTrivia: Trivia = [],
264-
trailingTrivia: Trivia = []) -> TokenSyntax {
265-
return makeToken(.spacedBinaryOperator("*="),
266-
presence: .present,
267-
leadingTrivia: leadingTrivia,
268-
trailingTrivia: trailingTrivia)
269-
}
270-
271-
public static func makeDivisionAssignmentOperator(leadingTrivia: Trivia = [],
272-
trailingTrivia: Trivia = []) -> TokenSyntax {
273-
return makeToken(.spacedBinaryOperator("/="),
274-
presence: .present,
275-
leadingTrivia: leadingTrivia,
276-
trailingTrivia: trailingTrivia)
277-
}
278-
279-
public static func makeRemainderAssignmentOperator(leadingTrivia: Trivia = [],
280-
trailingTrivia: Trivia = []) -> TokenSyntax {
281-
return makeToken(.spacedBinaryOperator("%="),
282-
presence: .present,
283-
leadingTrivia: leadingTrivia,
284-
trailingTrivia: trailingTrivia)
285-
}
286-
287-
public static func makeLessThanOperator(leadingTrivia: Trivia = [],
288-
trailingTrivia: Trivia = []) -> TokenSyntax {
289-
return makeToken(.spacedBinaryOperator("<"),
290-
presence: .present,
291-
leadingTrivia: leadingTrivia,
292-
trailingTrivia: trailingTrivia)
293-
}
294-
295-
public static func makeGreaterThanOperator(leadingTrivia: Trivia = [],
296-
trailingTrivia: Trivia = []) -> TokenSyntax {
297-
return makeToken(.spacedBinaryOperator(">"),
298-
presence: .present,
299-
leadingTrivia: leadingTrivia,
300-
trailingTrivia: trailingTrivia)
301-
}
302-
303-
public static func makeLessThanOrEqualToOperator(leadingTrivia: Trivia = [],
304-
trailingTrivia: Trivia = []) -> TokenSyntax {
305-
return makeToken(.spacedBinaryOperator("<="),
306-
presence: .present,
307-
leadingTrivia: leadingTrivia,
308-
trailingTrivia: trailingTrivia)
309-
}
310-
311-
public static func makeGreaterThanOrEqualToOperator(leadingTrivia: Trivia = [],
191+
public static func makeBinaryOperator(_ name: String,
192+
leadingTrivia: Trivia = [],
312193
trailingTrivia: Trivia = []) -> TokenSyntax {
313-
return makeToken(.spacedBinaryOperator(">="),
194+
return makeToken(.spacedBinaryOperator(name),
314195
presence: .present,
315196
leadingTrivia: leadingTrivia,
316197
trailingTrivia: trailingTrivia)

Tests/SwiftSyntaxTest/SyntaxFactory.swift

Lines changed: 18 additions & 101 deletions
Original file line numberDiff line numberDiff line change
@@ -16,19 +16,6 @@ fileprivate func cannedStructDecl() -> StructDeclSyntax {
1616
}
1717
}
1818

19-
fileprivate func infixOperationExprList(with operatorToken: TokenSyntax) -> ExprListSyntax {
20-
let first = IntegerLiteralExprSyntax {
21-
$0.useDigits(SyntaxFactory.makeIntegerLiteral("1", trailingTrivia: .spaces(1)))
22-
}
23-
let op = BinaryOperatorExprSyntax {
24-
$0.useOperatorToken(operatorToken.withTrailingTrivia(.spaces(1)))
25-
}
26-
let second = IntegerLiteralExprSyntax {
27-
$0.useDigits(SyntaxFactory.makeIntegerLiteral("1"))
28-
}
29-
return SyntaxFactory.makeExprList([first, op, second])
30-
}
31-
3219
public class SyntaxFactoryAPITestCase: XCTestCase {
3320

3421
public static let allTests = [
@@ -38,21 +25,7 @@ public class SyntaxFactoryAPITestCase: XCTestCase {
3825
("testWithOptionalChild", testWithOptionalChild),
3926
("testUnknownSyntax", testUnknownSyntax),
4027
("testMakeStringLiteralExpr", testMakeStringLiteralExpr),
41-
("testMakeNonEqualityOperator", testMakeNonEqualityOperator),
42-
("testMakeAdditionOperator", testMakeAdditionOperator),
43-
("testMakeSubtractionOperator", testMakeSubtractionOperator),
44-
("testMakeMultiplicationOperator", testMakeMultiplicationOperator),
45-
("testMakeDivisionOperator", testMakeDivisionOperator),
46-
("testMakeRemainderOperator", testMakeRemainderOperator),
47-
("testMakeAdditionAssignmentOperator", testMakeAdditionAssignmentOperator),
48-
("testMakeSubtractionAssignmentOperator", testMakeSubtractionAssignmentOperator),
49-
("testMakeMultiplicationAssignmentOperator", testMakeMultiplicationAssignmentOperator),
50-
("testMakeDivisionAssignmentOperator", testMakeDivisionAssignmentOperator),
51-
("testMakeRemainderAssignmentOperator", testMakeRemainderAssignmentOperator),
52-
("testMakeLessThanOperator", testMakeLessThanOperator),
53-
("testMakeGreaterThanOperator", testMakeGreaterThanOperator),
54-
("testMakeLessThanOrEqualToOperator", testMakeLessThanOrEqualToOperator),
55-
("testMakeGreaterThanOrEqualToOperator", testMakeGreaterThanOrEqualToOperator),
28+
("testMakeBinaryOperator", testMakeBinaryOperator),
5629
]
5730

5831
public func testGenerated() {
@@ -202,78 +175,22 @@ public class SyntaxFactoryAPITestCase: XCTestCase {
202175
XCTAssertEqual(expr.description, expected)
203176
}
204177

205-
public func testMakeNonEqualityOperator() {
206-
let exprList = infixOperationExprList(with: SyntaxFactory.makeNonEqualityOperator())
207-
XCTAssertEqual("\(exprList)", "1 != 1")
208-
}
209-
210-
public func testMakeAdditionOperator() {
211-
let exprList = infixOperationExprList(with: SyntaxFactory.makeAdditionOperator())
212-
XCTAssertEqual("\(exprList)", "1 + 1")
213-
}
214-
215-
public func testMakeSubtractionOperator() {
216-
let exprList = infixOperationExprList(with: SyntaxFactory.makeSubtractionOperator())
217-
XCTAssertEqual("\(exprList)", "1 - 1")
218-
}
219-
220-
public func testMakeMultiplicationOperator() {
221-
let exprList = infixOperationExprList(with: SyntaxFactory.makeMultiplicationOperator())
222-
XCTAssertEqual("\(exprList)", "1 * 1")
223-
}
224-
225-
public func testMakeDivisionOperator() {
226-
let exprList = infixOperationExprList(with: SyntaxFactory.makeDivisionOperator())
227-
XCTAssertEqual("\(exprList)", "1 / 1")
228-
}
229-
230-
public func testMakeRemainderOperator() {
231-
let exprList = infixOperationExprList(with: SyntaxFactory.makeRemainderOperator())
232-
XCTAssertEqual("\(exprList)", "1 % 1")
233-
}
234-
235-
public func testMakeAdditionAssignmentOperator() {
236-
let exprList = infixOperationExprList(with: SyntaxFactory.makeAdditionAssignmentOperator())
237-
XCTAssertEqual("\(exprList)", "1 += 1")
238-
}
239-
240-
public func testMakeSubtractionAssignmentOperator() {
241-
let exprList = infixOperationExprList(with: SyntaxFactory.makeSubtractionAssignmentOperator())
242-
XCTAssertEqual("\(exprList)", "1 -= 1")
243-
}
244-
245-
public func testMakeMultiplicationAssignmentOperator() {
246-
let exprList = infixOperationExprList(with: SyntaxFactory.makeMultiplicationAssignmentOperator())
247-
XCTAssertEqual("\(exprList)", "1 *= 1")
248-
}
249-
250-
public func testMakeDivisionAssignmentOperator() {
251-
let exprList = infixOperationExprList(with: SyntaxFactory.makeDivisionAssignmentOperator())
252-
XCTAssertEqual("\(exprList)", "1 /= 1")
253-
}
254-
255-
public func testMakeRemainderAssignmentOperator() {
256-
let exprList = infixOperationExprList(with: SyntaxFactory.makeRemainderAssignmentOperator())
257-
XCTAssertEqual("\(exprList)", "1 %= 1")
258-
}
259-
260-
public func testMakeLessThanOperator() {
261-
let exprList = infixOperationExprList(with: SyntaxFactory.makeLessThanOperator())
262-
XCTAssertEqual("\(exprList)", "1 < 1")
263-
}
264-
265-
public func testMakeGreaterThanOperator() {
266-
let exprList = infixOperationExprList(with: SyntaxFactory.makeGreaterThanOperator())
267-
XCTAssertEqual("\(exprList)", "1 > 1")
268-
}
269-
270-
public func testMakeLessThanOrEqualToOperator() {
271-
let exprList = infixOperationExprList(with: SyntaxFactory.makeLessThanOrEqualToOperator())
272-
XCTAssertEqual("\(exprList)", "1 <= 1")
273-
}
274-
275-
public func testMakeGreaterThanOrEqualToOperator() {
276-
let exprList = infixOperationExprList(with: SyntaxFactory.makeGreaterThanOrEqualToOperator())
277-
XCTAssertEqual("\(exprList)", "1 >= 1")
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+
}
278195
}
279196
}

0 commit comments

Comments
 (0)