@@ -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} " ) )
@@ -1251,10 +1243,6 @@ extension RegexTests {
1251
1243
parseTest ( #"\g'+30'"# , subpattern ( . relative( 30 ) ) , throwsError: . unsupported)
1252
1244
parseTest ( #"\g'abc'"# , subpattern ( . named( " abc " ) ) , throwsError: . unsupported)
1253
1245
1254
- // Backreferences are not valid in custom character classes.
1255
- parseTest ( #"[\8]"# , charClass ( " 8 " ) )
1256
- parseTest ( #"[\9]"# , charClass ( " 9 " ) )
1257
-
1258
1246
// These are valid references.
1259
1247
parseTest ( #"()\1"# , concat (
1260
1248
capture ( empty ( ) ) , backreference ( . absolute( 1 ) )
@@ -2536,6 +2524,17 @@ extension RegexTests {
2536
2524
// TODO: Custom diagnostic for missing '\Q'
2537
2525
diagnosticTest ( #"\E"# , . invalidEscape( " E " ) )
2538
2526
2527
+ // PCRE treats these as octal, but we require a `0` prefix.
2528
+ diagnosticTest ( #"[\1]"# , . invalidEscape( " 1 " ) )
2529
+ diagnosticTest ( #"[\123]"# , . invalidEscape( " 1 " ) )
2530
+ diagnosticTest ( #"[\101]"# , . invalidEscape( " 1 " ) )
2531
+ diagnosticTest ( #"[\7777]"# , . invalidEscape( " 7 " ) )
2532
+ diagnosticTest ( #"[\181]"# , . invalidEscape( " 1 " ) )
2533
+
2534
+ // Backreferences are not valid in custom character classes.
2535
+ diagnosticTest ( #"[\8]"# , . invalidEscape( " 8 " ) )
2536
+ diagnosticTest ( #"[\9]"# , . invalidEscape( " 9 " ) )
2537
+
2539
2538
// Non-ASCII non-whitespace cases.
2540
2539
diagnosticTest ( #"\🔥"# , . invalidEscape( " 🔥 " ) )
2541
2540
diagnosticTest ( #"\🇩🇰"# , . invalidEscape( " 🇩🇰 " ) )
0 commit comments