Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commited87791

Browse files
Rephrase error messages on backrererences. (microsoft#58310)
1 parent501fa6e commited87791

15 files changed

+671
-546
lines changed

‎src/compiler/diagnosticMessages.json

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1785,11 +1785,11 @@
17851785
"category":"Error",
17861786
"code":1532
17871787
},
1788-
"A decimal escape must refer to an existent capturing group. There are only {0} capturing groups in this regular expression.": {
1788+
"This backreference refers to a group that does not exist. There are only {0} capturing groups in this regular expression.": {
17891789
"category":"Error",
17901790
"code":1533
17911791
},
1792-
"Decimal escapes are invalidwhen there are no capturing groups in a regular expression.": {
1792+
"This backreference is invalidbecause the containing regular expression contains no capturing groups.": {
17931793
"category":"Error",
17941794
"code":1534
17951795
},

‎src/compiler/scanner.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3438,10 +3438,10 @@ export function createScanner(languageVersion: ScriptTarget, skipTrivia: boolean
34383438
// either a LegacyOctalEscapeSequence or IdentityEscape
34393439
if(!annexB&&escape.value>numberOfCapturingGroups){
34403440
if(numberOfCapturingGroups){
3441-
error(Diagnostics.A_decimal_escape_must_refer_to_an_existent_capturing_group_There_are_only_0_capturing_groups_in_this_regular_expression,escape.pos,escape.end-escape.pos,numberOfCapturingGroups);
3441+
error(Diagnostics.This_backreference_refers_to_a_group_that_does_not_exist_There_are_only_0_capturing_groups_in_this_regular_expression,escape.pos,escape.end-escape.pos,numberOfCapturingGroups);
34423442
}
34433443
else{
3444-
error(Diagnostics.Decimal_escapes_are_invalid_when_there_are_no_capturing_groups_in_a_regular_expression,escape.pos,escape.end-escape.pos);
3444+
error(Diagnostics.This_backreference_is_invalid_because_the_containing_regular_expression_contains_no_capturing_groups,escape.pos,escape.end-escape.pos);
34453445
}
34463446
}
34473447
});

‎tests/baselines/reference/regularExpressionScanning(target=es2015).errors.txt

Lines changed: 189 additions & 184 deletions
Large diffs are not rendered by default.

‎tests/baselines/reference/regularExpressionScanning(target=es2015).js

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,11 @@ const regexes: RegExp[] = [
77
// Pattern modifiers
88
/(?med-ium:bar)/,
99
// Capturing groups
10+
/\0/,
11+
/\1/,
12+
/\2/,
13+
/(hi)\1/,
14+
/(hi)(hello)\2/,
1015
/\2()(\12)(foo)\1\0[\0\1\01\123](\3\03)\5\005/,
1116
/\2()(\12)(foo)\1\0[\0\1\01\123](\3\03)\5\005/u,
1217
/(?<foo>)((?<bar>bar)bar)(?<baz>baz)|(foo(?<foo>foo))(?<baz>)/,
@@ -53,6 +58,11 @@ const regexes = [
5358
// Pattern modifiers
5459
/(?med-ium:bar)/,
5560
// Capturing groups
61+
/\0/,
62+
/\1/,
63+
/\2/,
64+
/(hi)\1/,
65+
/(hi)(hello)\2/,
5666
/\2()(\12)(foo)\1\0[\0\1\01\123](\3\03)\5\005/,
5767
/\2()(\12)(foo)\1\0[\0\1\01\123](\3\03)\5\005/u,
5868
/(?<foo>)((?<bar>bar)bar)(?<baz>baz)|(foo(?<foo>foo))(?<baz>)/,

‎tests/baselines/reference/regularExpressionScanning(target=es2015).symbols

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,11 @@ const regexes: RegExp[] = [
1010
// Pattern modifiers
1111
/(?med-ium:bar)/,
1212
// Capturing groups
13+
/\0/,
14+
/\1/,
15+
/\2/,
16+
/(hi)\1/,
17+
/(hi) (hello) \2/,
1318
/\2()(\12)(foo)\1\0[\0\1\01\123](\3\03)\5\005/,
1419
/\2()(\12)(foo)\1\0[\0\1\01\123](\3\03)\5\005/u,
1520
/(?<foo>)((?<bar>bar)bar)(?<baz>baz)|(foo(?<foo>foo))(?<baz>)/,

‎tests/baselines/reference/regularExpressionScanning(target=es2015).types

Lines changed: 22 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,8 +4,8 @@
44
const regexes: RegExp[] = [
55
>regexes : RegExp[]
66
> : ^^^^^^^^
7-
>[// Flags/foo/visualstudiocode,// Pattern modifiers/(?med-ium:bar)/,// Capturing groups/\2()(\12)(foo)\1\0[\0\1\01\123](\3\03)\5\005/,/\2()(\12)(foo)\1\0[\0\1\01\123](\3\03)\5\005/u,/(?<foo>)((?<bar>bar)bar)(?<baz>baz)|(foo(?<foo>foo))(?<baz>)/,/(\k<bar>)\k<absent>(?<foo>foo)|(?<bar>)((?<foo>)|(bar(?<bar>bar)))/,// Quantifiers/{}{1,2}_{3}.{4,}?(foo){008}${32,16}\b{064,128}.+&*?\???\n{,256}{\\{,/,// Character classes/[-A-Za-z-z-aZ-A\d_-\d-.-.\r-\n\w-\W]/,/\p{L}\p{gc=L}\p{ASCII}\p{Invalid}[\p{L}\p{gc=L}\P{ASCII}\p{Invalid}]/,/\p{L}\p{gc=L}\p{ASCII}\p{Invalid}[\p{L}\p{gc=L}\P{ASCII}\p{Invalid}]/u,/\p{L}\p{gc=L}\p{ASCII}\p{Invalid}[\p{L}\p{gc=L}\P{ASCII}\p{Invalid}]/v,/\p{InvalidProperty=Value}\p{=}\p{sc=}\P{=foo}[\p{}\p\\\P\P{]\p{/,/\p{InvalidProperty=Value}\p{=}\p{sc=}\P{=foo}[\p{}\p\\\P\P{]\p{/u,/\p{InvalidProperty=Value}\p{=}\p{sc=}\P{=foo}[\p{}\p\\\P\P{]\p{/v,/\p{RGI_Emoji}\P{RGI_Emoji}[^\p{RGI_Emoji}\P{RGI_Emoji}]/,/\p{RGI_Emoji}\P{RGI_Emoji}[^\p{RGI_Emoji}\P{RGI_Emoji}]/u,/\p{RGI_Emoji}\P{RGI_Emoji}[^\p{RGI_Emoji}\P{RGI_Emoji}]/v,// Character escapes/\c[\c0\ca\cQ\c\C]\c1\C/,/\c[\c0\ca\cQ\c\C]\c1\C/u,/\q\\\`[\q\\\`[\Q\\\Q{\q{foo|bar|baz]\q{]\q{/,/\q\\\`[\q\\\`[\Q\\\Q{\q{foo|bar|baz]\q{]\q{/u,/\q\\\`[\q\\\`[\Q\\\Q{\q{foo|bar|baz]\q{]\q{/v,// Unicode sets notation/[a--b[--][\d++[]]&&[[&0-9--]&&[\p{L}]--\P{L}-_-]]&&&\q{foo}[0---9][&&q&&&\q{bar}&&]/,/[a--b[--][\d++[]]&&[[&0-9--]&&[\p{L}]--\P{L}-_-]]&&&\q{foo}[0---9][&&q&&&\q{bar}&&]/u,/[a--b[--][\d++[]]&&[[&0-9--]&&[\p{L}]--\P{L}-_-]]&&&\q{foo}[0---9][&&q&&&\q{bar}&&]/v,/[[^\P{Decimal_Number}&&[0-9]]&&\p{L}&&\p{ID_Continue}--\p{ASCII}\p{CWCF}]/v,/[^\p{Emoji}\p{RGI_Emoji}][^\p{Emoji}--\p{RGI_Emoji}][^\p{Emoji}&&\p{RGI_Emoji}]/v,/[^\p{RGI_Emoji}\p{Emoji}][^\p{RGI_Emoji}--\p{Emoji}][^\p{RGI_Emoji}&&\p{Emoji}]/v,/[^\p{RGI_Emoji}\q{foo}][^\p{RGI_Emoji}--\q{foo}][^\p{RGI_Emoji}&&\q{foo}]/v,/[^\p{Emoji}[[\p{RGI_Emoji}]]][^\p{Emoji}--[[\p{RGI_Emoji}]]][^\p{Emoji}&&[[\p{RGI_Emoji}]]]/v,/[^[[\p{RGI_Emoji}]]\p{Emoji}][^[[\p{RGI_Emoji}]]--\p{Emoji}][^[[\p{RGI_Emoji}]]&&\p{Emoji}]/v,/[^[[\p{RGI_Emoji}]]\q{foo}][^[[\p{RGI_Emoji}]]--\q{foo}][^[[\p{RGI_Emoji}]]&&\q{foo}]/v,/[^\q{foo|bar|baz}--\q{foo}--\q{bar}--\q{baz}][^\p{L}--\q{foo}--[\q{bar}]--[^[\q{baz}]]]/v,/[^[[\q{foo|bar|baz}]]--\q{foo}--\q{bar}--\q{baz}][^[^[^\p{L}]]--\q{foo}--[\q{bar}]--[^[\q{baz}]]]/v,] : RegExp[]
8-
> : ^^^^^^^^
7+
>[// Flags/foo/visualstudiocode,// Pattern modifiers/(?med-ium:bar)/,// Capturing groups/\0/,/\1/,/\2/,/(hi)\1/,/(hi) (hello) \2/,/\2()(\12)(foo)\1\0[\0\1\01\123](\3\03)\5\005/,/\2()(\12)(foo)\1\0[\0\1\01\123](\3\03)\5\005/u,/(?<foo>)((?<bar>bar)bar)(?<baz>baz)|(foo(?<foo>foo))(?<baz>)/,/(\k<bar>)\k<absent>(?<foo>foo)|(?<bar>)((?<foo>)|(bar(?<bar>bar)))/,// Quantifiers/{}{1,2}_{3}.{4,}?(foo){008}${32,16}\b{064,128}.+&*?\???\n{,256}{\\{,/,// Character classes/[-A-Za-z-z-aZ-A\d_-\d-.-.\r-\n\w-\W]/,/\p{L}\p{gc=L}\p{ASCII}\p{Invalid}[\p{L}\p{gc=L}\P{ASCII}\p{Invalid}]/,/\p{L}\p{gc=L}\p{ASCII}\p{Invalid}[\p{L}\p{gc=L}\P{ASCII}\p{Invalid}]/u,/\p{L}\p{gc=L}\p{ASCII}\p{Invalid}[\p{L}\p{gc=L}\P{ASCII}\p{Invalid}]/v,/\p{InvalidProperty=Value}\p{=}\p{sc=}\P{=foo}[\p{}\p\\\P\P{]\p{/,/\p{InvalidProperty=Value}\p{=}\p{sc=}\P{=foo}[\p{}\p\\\P\P{]\p{/u,/\p{InvalidProperty=Value}\p{=}\p{sc=}\P{=foo}[\p{}\p\\\P\P{]\p{/v,/\p{RGI_Emoji}\P{RGI_Emoji}[^\p{RGI_Emoji}\P{RGI_Emoji}]/,/\p{RGI_Emoji}\P{RGI_Emoji}[^\p{RGI_Emoji}\P{RGI_Emoji}]/u,/\p{RGI_Emoji}\P{RGI_Emoji}[^\p{RGI_Emoji}\P{RGI_Emoji}]/v,// Character escapes/\c[\c0\ca\cQ\c\C]\c1\C/,/\c[\c0\ca\cQ\c\C]\c1\C/u,/\q\\\`[\q\\\`[\Q\\\Q{\q{foo|bar|baz]\q{]\q{/,/\q\\\`[\q\\\`[\Q\\\Q{\q{foo|bar|baz]\q{]\q{/u,/\q\\\`[\q\\\`[\Q\\\Q{\q{foo|bar|baz]\q{]\q{/v,// Unicode sets notation/[a--b[--][\d++[]]&&[[&0-9--]&&[\p{L}]--\P{L}-_-]]&&&\q{foo}[0---9][&&q&&&\q{bar}&&]/,/[a--b[--][\d++[]]&&[[&0-9--]&&[\p{L}]--\P{L}-_-]]&&&\q{foo}[0---9][&&q&&&\q{bar}&&]/u,/[a--b[--][\d++[]]&&[[&0-9--]&&[\p{L}]--\P{L}-_-]]&&&\q{foo}[0---9][&&q&&&\q{bar}&&]/v,/[[^\P{Decimal_Number}&&[0-9]]&&\p{L}&&\p{ID_Continue}--\p{ASCII}\p{CWCF}]/v,/[^\p{Emoji}\p{RGI_Emoji}][^\p{Emoji}--\p{RGI_Emoji}][^\p{Emoji}&&\p{RGI_Emoji}]/v,/[^\p{RGI_Emoji}\p{Emoji}][^\p{RGI_Emoji}--\p{Emoji}][^\p{RGI_Emoji}&&\p{Emoji}]/v,/[^\p{RGI_Emoji}\q{foo}][^\p{RGI_Emoji}--\q{foo}][^\p{RGI_Emoji}&&\q{foo}]/v,/[^\p{Emoji}[[\p{RGI_Emoji}]]][^\p{Emoji}--[[\p{RGI_Emoji}]]][^\p{Emoji}&&[[\p{RGI_Emoji}]]]/v,/[^[[\p{RGI_Emoji}]]\p{Emoji}][^[[\p{RGI_Emoji}]]--\p{Emoji}][^[[\p{RGI_Emoji}]]&&\p{Emoji}]/v,/[^[[\p{RGI_Emoji}]]\q{foo}][^[[\p{RGI_Emoji}]]--\q{foo}][^[[\p{RGI_Emoji}]]&&\q{foo}]/v,/[^\q{foo|bar|baz}--\q{foo}--\q{bar}--\q{baz}][^\p{L}--\q{foo}--[\q{bar}]--[^[\q{baz}]]]/v,/[^[[\q{foo|bar|baz}]]--\q{foo}--\q{bar}--\q{baz}][^[^[^\p{L}]]--\q{foo}--[\q{bar}]--[^[\q{baz}]]]/v,] : RegExp[]
8+
> : ^^^^^^^^
99

1010
// Flags
1111
/foo/visualstudiocode,
@@ -18,6 +18,26 @@ const regexes: RegExp[] = [
1818
> : ^^^^^^
1919

2020
// Capturing groups
21+
/\0/,
22+
>/\0/ : RegExp
23+
> : ^^^^^^
24+
25+
/\1/,
26+
>/\1/ : RegExp
27+
> : ^^^^^^
28+
29+
/\2/,
30+
>/\2/ : RegExp
31+
> : ^^^^^^
32+
33+
/(hi)\1/,
34+
>/(hi)\1/ : RegExp
35+
> : ^^^^^^
36+
37+
/(hi) (hello) \2/,
38+
>/(hi) (hello) \2/ : RegExp
39+
> : ^^^^^^
40+
2141
/\2()(\12)(foo)\1\0[\0\1\01\123](\3\03)\5\005/,
2242
>/\2()(\12)(foo)\1\0[\0\1\01\123](\3\03)\5\005/ : RegExp
2343
> : ^^^^^^

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp