Skip to content

Commit ef0191b

Browse files
committed
Add lookup functions for prefix and postfix operators
1 parent 448d584 commit ef0191b

File tree

2 files changed

+30
-0
lines changed

2 files changed

+30
-0
lines changed

Sources/SwiftOperators/OperatorTable.swift

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -89,6 +89,18 @@ extension OperatorTable {
8989
return infixOperators[operatorName]
9090
}
9191

92+
/// Returns the ``Operator`` corresponding to the given prefix operator, or
93+
/// `nil` if it is not defined in the operator table.
94+
public func prefixOperator(named operatorName: OperatorName) -> Operator? {
95+
return prefixOperators[operatorName]
96+
}
97+
98+
/// Returns the ``Operator`` corresponding to the given prefix operator, or
99+
/// `nil` if it is not defined in the operator table.
100+
public func postfixOperator(named operatorName: OperatorName) -> Operator? {
101+
return postfixOperators[operatorName]
102+
}
103+
92104
/// Look for the precedence group corresponding to the given operator.
93105
func lookupOperatorPrecedenceGroupName(
94106
_ operatorName: OperatorName,

Tests/SwiftOperatorsTest/OperatorTableTests.swift

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -405,4 +405,22 @@ public class OperatorPrecedenceTests: XCTestCase {
405405
}
406406
XCTAssertNil(opPrecedence.infixOperator(named: "^*^"))
407407
}
408+
409+
func testUnaryOperatorLookup() throws {
410+
let opPrecedence = OperatorTable.standardOperators
411+
do {
412+
let op = try XCTUnwrap(opPrecedence.prefixOperator(named: "-"))
413+
XCTAssertEqual(op.kind, .prefix)
414+
XCTAssertEqual(op.name, "-")
415+
XCTAssertNil(op.precedenceGroup)
416+
}
417+
418+
do {
419+
let op = try XCTUnwrap(opPrecedence.postfixOperator(named: "..."))
420+
XCTAssertEqual(op.kind, .postfix)
421+
XCTAssertEqual(op.name, "...")
422+
XCTAssertNil(op.precedenceGroup)
423+
}
424+
425+
}
408426
}

0 commit comments

Comments
 (0)