File tree Expand file tree Collapse file tree 2 files changed +24
-1
lines changed Expand file tree Collapse file tree 2 files changed +24
-1
lines changed Original file line number Diff line number Diff line change @@ -83,13 +83,19 @@ public struct OperatorTable {
83
83
}
84
84
85
85
extension OperatorTable {
86
+ /// Returns the ``Operator`` corresponding to the given infix operator, or
87
+ /// `nil` if it is not defined in the operator table.
88
+ public func infixOperator( named operatorName: OperatorName ) -> Operator ? {
89
+ return infixOperators [ operatorName]
90
+ }
91
+
86
92
/// Look for the precedence group corresponding to the given operator.
87
93
func lookupOperatorPrecedenceGroupName(
88
94
_ operatorName: OperatorName ,
89
95
referencedFrom syntax: Syntax ,
90
96
errorHandler: OperatorErrorHandler = { throw $0 }
91
97
) rethrows -> PrecedenceGroupName ? {
92
- guard let op = infixOperators [ operatorName] else {
98
+ guard let op = infixOperator ( named : operatorName) else {
93
99
try errorHandler (
94
100
. missingOperator( operatorName, referencedFrom: syntax) )
95
101
return nil
Original file line number Diff line number Diff line change @@ -388,4 +388,21 @@ public class OperatorPrecedenceTests: XCTestCase {
388
388
try opPrecedence. assertExpectedFold (
389
389
" await x + y + z " , " await ((x + y) + z) " )
390
390
}
391
+
392
+ func testInfixOperatorLookup( ) throws {
393
+ let opPrecedence = OperatorTable . standardOperators
394
+ do {
395
+ let op = try XCTUnwrap ( opPrecedence. infixOperator ( named: " + " ) )
396
+ XCTAssertEqual ( op. kind, . infix)
397
+ XCTAssertEqual ( op. name, " + " )
398
+ XCTAssertEqual ( op. precedenceGroup, " AdditionPrecedence " )
399
+ }
400
+ do {
401
+ let op = try XCTUnwrap ( opPrecedence. infixOperator ( named: " ... " ) )
402
+ XCTAssertEqual ( op. kind, . infix)
403
+ XCTAssertEqual ( op. name, " ... " )
404
+ XCTAssertEqual ( op. precedenceGroup, " RangeFormationPrecedence " )
405
+ }
406
+ XCTAssertNil ( opPrecedence. infixOperator ( named: " ^*^ " ) )
407
+ }
391
408
}
You can’t perform that action at this time.
0 commit comments