File tree Expand file tree Collapse file tree 2 files changed +14
-0
lines changed
Tests/SwiftParserTest/translated Expand file tree Collapse file tree 2 files changed +14
-0
lines changed Original file line number Diff line number Diff line change @@ -524,6 +524,7 @@ enum OperatorLike: RawTokenKindSubset {
524
524
case postfixQuestionMark
525
525
case equal
526
526
case arrow
527
+ case regexLiteral // regex literals can look like operators, e.g. '/^/'
527
528
528
529
init ? ( lexeme: Lexer . Lexeme ) {
529
530
if let op = Operator ( lexeme: lexeme) {
@@ -536,6 +537,7 @@ enum OperatorLike: RawTokenKindSubset {
536
537
case . postfixQuestionMark: self = . postfixQuestionMark
537
538
case . equal: self = . equal
538
539
case . arrow: self = . arrow
540
+ case . regexLiteral: self = . regexLiteral
539
541
default : return nil
540
542
}
541
543
}
@@ -547,6 +549,7 @@ enum OperatorLike: RawTokenKindSubset {
547
549
. postfixQuestionMark,
548
550
. equal,
549
551
. arrow,
552
+ . regexLiteral
550
553
]
551
554
}
552
555
@@ -558,6 +561,14 @@ enum OperatorLike: RawTokenKindSubset {
558
561
case . postfixQuestionMark: return . postfixQuestionMark
559
562
case . equal: return . equal
560
563
case . arrow: return . arrow
564
+ case . regexLiteral: return . regexLiteral
565
+ }
566
+ }
567
+
568
+ var precedence : TokenPrecedence ? {
569
+ switch self {
570
+ case . regexLiteral: return TokenPrecedence ( . spacedBinaryOperator)
571
+ default : return nil
561
572
}
562
573
}
563
574
}
Original file line number Diff line number Diff line change @@ -473,4 +473,7 @@ final class OperatorDeclTests: XCTestCase {
473
473
)
474
474
}
475
475
476
+ func testRegexLikeOperator( ) {
477
+ AssertParse ( " prefix operator /^/ " )
478
+ }
476
479
}
You can’t perform that action at this time.
0 commit comments