@@ -466,14 +466,6 @@ extension RegexTests {
466
466
parseTest ( #"[\08]"# , charClass ( scalar_m ( " \u{0} " ) , " 8 " ) )
467
467
parseTest ( #"[\0707]"# , charClass ( scalar_m ( " \u{1C7} " ) ) )
468
468
469
- // TODO: These are treated as octal sequences by PCRE, we should warn and
470
- // suggest user prefix with 0.
471
- parseTest ( #"[\1]"# , charClass ( " 1 " ) )
472
- parseTest ( #"[\123]"# , charClass ( " 1 " , " 2 " , " 3 " ) )
473
- parseTest ( #"[\101]"# , charClass ( " 1 " , " 0 " , " 1 " ) )
474
- parseTest ( #"[\7777]"# , charClass ( " 7 " , " 7 " , " 7 " , " 7 " ) )
475
- parseTest ( #"[\181]"# , charClass ( " 1 " , " 8 " , " 1 " ) )
476
-
477
469
// We take *up to* the first two valid digits for \x. No valid digits is 0.
478
470
parseTest ( #"\x"# , scalar ( " \u{0} " ) )
479
471
parseTest ( #"\x5"# , scalar ( " \u{5} " ) )
@@ -1267,10 +1259,6 @@ extension RegexTests {
1267
1259
parseTest ( #"\g'+30'"# , subpattern ( . relative( 30 ) ) , throwsError: . unsupported)
1268
1260
parseTest ( #"\g'abc'"# , subpattern ( . named( " abc " ) ) , throwsError: . unsupported)
1269
1261
1270
- // Backreferences are not valid in custom character classes.
1271
- parseTest ( #"[\8]"# , charClass ( " 8 " ) )
1272
- parseTest ( #"[\9]"# , charClass ( " 9 " ) )
1273
-
1274
1262
// These are valid references.
1275
1263
parseTest ( #"()\1"# , concat (
1276
1264
capture ( empty ( ) ) , backreference ( . absolute( 1 ) )
@@ -2547,6 +2535,17 @@ extension RegexTests {
2547
2535
// TODO: Custom diagnostic for missing '\Q'
2548
2536
diagnosticTest ( #"\E"# , . invalidEscape( " E " ) )
2549
2537
2538
+ // PCRE treats these as octal, but we require a `0` prefix.
2539
+ diagnosticTest ( #"[\1]"# , . invalidEscape( " 1 " ) )
2540
+ diagnosticTest ( #"[\123]"# , . invalidEscape( " 1 " ) )
2541
+ diagnosticTest ( #"[\101]"# , . invalidEscape( " 1 " ) )
2542
+ diagnosticTest ( #"[\7777]"# , . invalidEscape( " 7 " ) )
2543
+ diagnosticTest ( #"[\181]"# , . invalidEscape( " 1 " ) )
2544
+
2545
+ // Backreferences are not valid in custom character classes.
2546
+ diagnosticTest ( #"[\8]"# , . invalidEscape( " 8 " ) )
2547
+ diagnosticTest ( #"[\9]"# , . invalidEscape( " 9 " ) )
2548
+
2550
2549
// Non-ASCII non-whitespace cases.
2551
2550
diagnosticTest ( #"\🔥"# , . invalidEscape( " 🔥 " ) )
2552
2551
diagnosticTest ( #"\🇩🇰"# , . invalidEscape( " 🇩🇰 " ) )
0 commit comments