Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Missing coverage for Legacy RegExp features #2371

Closed
leobalter opened this issue Sep 27, 2019 · 1 comment · Fixed by #2650
Closed

Missing coverage for Legacy RegExp features #2371

leobalter opened this issue Sep 27, 2019 · 1 comment · Fixed by #2650

Comments

@leobalter
Copy link
Member

Originally posted by @jugglinmike in #1165 (comment):

@leobalter I think this issue was mistakenly closed--Test262 lacks coverage for most of this proposal.

$ git show -s '--format=%h %ci %s' HEAD
32bb36f5e4 2019-09-26 14:28:56 -0400 Tests for TLA module evaluation
$ git grep lastMatch test
$ git grep lastParen test
$ git grep leftContext test
$ git grep rightContext test
Naive queries for the other properties return some false positives, but they also appear to be untested
$ git grep '[^#]\$_' test
test/language/identifiers/start-dollar-sign.js:var $_ = 4;
test/language/identifiers/start-dollar-sign.js:assert.sameValue($_, 4);
test/language/identifiers/start-escape-seq.js:assert.sameValue($_, 6);
$ git grep '\$&' test
test/built-ins/RegExp/prototype/Symbol.replace/result-coerce-matched.js:  r[Symbol.replace]('', 'foo[$&]bar'), 'foo[toString value]bar'
test/built-ins/RegExp/prototype/Symbol.replace/subst-matched.js:    Unicode Characters: $&
test/built-ins/RegExp/prototype/Symbol.replace/subst-matched.js:assert.sameValue(/.4?./[Symbol.replace]('abc', '[$&]'), '[ab]c');
test/built-ins/String/prototype/replace/S15.5.4.11_A2_T3.js:description: Use $& in replaceValue, searchValue is regular expression /sh/g
test/built-ins/String/prototype/replace/S15.5.4.11_A2_T3.js:if (__str.replace(__re, "$&" + 'sch') !== 'She sells seashschells by the seashschore.') {
test/built-ins/String/prototype/replace/S15.5.4.11_A2_T3.js:  $ERROR('#1: var __str = \'She sells seashells by the seashore.\'; var __re = /sh/g; __str.replace(__re,"$&" + \'sch\')===\'She sells seashschells by the seashschore.\'. Actual: ' + __str.replace(__re, "$&" + 'sch'));
test/built-ins/String/prototype/replace/S15.5.4.11_A2_T8.js:description: Use $& in replaceValue, searchValue is regular expression /sh/
test/built-ins/String/prototype/replace/S15.5.4.11_A2_T8.js:if (__str.replace(__re, "$&" + 'sch') !== 'She sells seashschells by the seashore.') {
test/built-ins/String/prototype/replace/S15.5.4.11_A2_T8.js:  $ERROR('#1: var __str = \'She sells seashells by the seashore.\'; var __re = /sh/; __str.replace(__re, "$&" + \'sch\')===\'She sells seashschells by the seashore.\'. Actual: ' + __str.replace(__re, "$&" + 'sch'));
$ git grep '\$+' test
test/language/identifiers/part-digits-via-escape-hex.js:description: Identifier is $+ANY_DIGIT
test/language/identifiers/part-digits-via-escape-hex4.js:description: Identifier is $+ANY_DIGIT
test/language/identifiers/part-digits.js:description: Identifier is $+ANY_DIGIT
$ git grep '\$`' test
test/built-ins/RegExp/prototype/Symbol.replace/subst-before.js:    Unicode Characters: $`
test/built-ins/RegExp/prototype/Symbol.replace/subst-before.js:assert.sameValue(/a/[Symbol.replace]('abc', '[$`]'), '[]bc');
test/built-ins/RegExp/prototype/Symbol.replace/subst-before.js:assert.sameValue(/b/[Symbol.replace]('abc', '[$`]'), 'a[a]c');
test/built-ins/String/prototype/replace/S15.5.4.11_A2_T4.js:description: Use $` in replaceValue, searchValue is regular expression /sh/g
test/built-ins/String/prototype/replace/S15.5.4.11_A2_T4.js:if (__str.replace(__re, "$`" + 'sch') !== 'She sells seaShe sells seaschells by the seaShe sells seashells by the seaschore.') {
test/built-ins/String/prototype/replace/S15.5.4.11_A2_T4.js:  $ERROR('#1: var __str = \'She sells seashells by the seashore.\'; var __re = /sh/g; __str.replace(__re, "$`" + \'sch\')===\'She sells seaShe sells seaschells by the seaShe sells seashells by the seaschore.\'. Actual: ' + __str.replace(__re, "$`" + 'sch'));
test/built-ins/String/prototype/replace/S15.5.4.11_A2_T9.js:description: Use $` in replaceValue, searchValue is regular expression /sh/
test/built-ins/String/prototype/replace/S15.5.4.11_A2_T9.js:if (__str.replace(__re, "$`" + 'sch') !== 'She sells seaShe sells seaschells by the seashore.') {
test/built-ins/String/prototype/replace/S15.5.4.11_A2_T9.js:  $ERROR('#1: var __str = \'She sells seashells by the seashore.\'; var __re = /sh/; __str.replace(__re, "$`" + \'sch\')===\'She sells seaShe sells seaschells by the seashore.\'. Actual: ' + __str.replace(__re, "$`" + 'sch'));
test/language/expressions/template-literal/tv-template-character.js:  assert.sameValue(s[0], '$', '`$` character TV');
test/language/expressions/template-literal/tv-template-character.js:  assert.sameValue(s.raw[0], '$', '`$` character TRV');
test/language/expressions/template-literal/tv-template-character.js:})`$`;
$ git grep '$'\''' test
test/built-ins/RegExp/prototype/Symbol.replace/subst-after.js:    Unicode Characters: $'
test/built-ins/RegExp/prototype/Symbol.replace/subst-dollar.js:assert.sameValue(/./[Symbol.replace]('abc', '$$'), '$bc', '"escaped" version');
test/built-ins/RegExp/prototype/Symbol.replace/subst-dollar.js:  /./[Symbol.replace]('abc', '$'), '$bc', '"unescaped" version'
test/built-ins/RegExp/prototype/Symbol.replace/subst-dollar.js:  /./[Symbol.replace]('abc', '\\$'), '\\$bc', 'backslash-prefixed'
test/built-ins/RegExp/prototype/Symbol.replace/subst-dollar.js:  /./[Symbol.replace]('abc', '$$$'),
test/built-ins/String/prototype/replace/S15.5.4.11_A2_T10.js:description: Use $' in replaceValue, searchValue is regular expression /sh/
test/built-ins/String/prototype/replace/S15.5.4.11_A2_T10.js:if (__str.replace(__re, "$'" + 'sch') !== 'She sells seaells by the seashore.schells by the seashore.') {
test/built-ins/String/prototype/replace/S15.5.4.11_A2_T10.js:  $ERROR('#1: var __str = \'She sells seashells by the seashore.\'; var __re = /sh/; __str.replace(__re, "$\'" + \'sch\')===\'She sells seaells by the seashore.schells by the seashore.\'. Actual: ' + __str.replace(__re, "$'" + 'sch'));
test/built-ins/String/prototype/replace/S15.5.4.11_A2_T5.js:description: Use $' in replaceValue, searchValue is regular expression /sh/g
test/built-ins/String/prototype/replace/S15.5.4.11_A2_T5.js:if (__str.replace(__re, "$'" + 'sch') !== 'She sells seaells by the seashore.schells by the seaore.schore.') {
test/built-ins/String/prototype/replace/S15.5.4.11_A2_T5.js:  $ERROR('#1: var __str = \'She sells seashells by the seashore.\'; var __re = /sh/g; __str.replace(__re, "$\'" + \'sch\')===\'She sells seaells by the seashore.schells by the seaore.schore.\'. Actual: ' + __str.replace(__re, "$'" + 'sch'));
test/language/expressions/dynamic-import/namespace/await-ns-own-property-keys-sort.js:    assert.sameValue(stringKeys[0], '$', 'stringKeys[0] === "$"');
test/language/expressions/dynamic-import/namespace/await-ns-own-property-keys-sort.js:    assert.sameValue(stringKeys[1], '$$', 'stringKeys[1] === "$$"');
test/language/expressions/dynamic-import/namespace/await-ns-own-property-keys-sort.js:    assert.sameValue(allKeys[0], '$', 'allKeys[0] === "$"');
test/language/expressions/dynamic-import/namespace/await-ns-own-property-keys-sort.js:    assert.sameValue(allKeys[1], '$$', 'allKeys[1] === "$$"');
test/language/expressions/dynamic-import/namespace/promise-then-ns-own-property-keys-sort.js:    assert.sameValue(stringKeys[0], '$', 'stringKeys[0] === "$"');
test/language/expressions/dynamic-import/namespace/promise-then-ns-own-property-keys-sort.js:    assert.sameValue(stringKeys[1], '$$', 'stringKeys[1] === "$$"');
test/language/expressions/dynamic-import/namespace/promise-then-ns-own-property-keys-sort.js:    assert.sameValue(allKeys[0], '$', 'allKeys[0] === "$"');
test/language/expressions/dynamic-import/namespace/promise-then-ns-own-property-keys-sort.js:    assert.sameValue(allKeys[1], '$$', 'allKeys[1] === "$$"');
test/language/expressions/template-literal/tv-template-character.js:  assert.sameValue(s[0], '$', '`$` character TV');
test/language/expressions/template-literal/tv-template-character.js:  assert.sameValue(s.raw[0], '$', '`$` character TRV');
test/language/module-code/namespace/internals/own-property-keys-sort.js:assert.sameValue(stringKeys[0], '$', 'stringKeys[0] === "$"');
test/language/module-code/namespace/internals/own-property-keys-sort.js:assert.sameValue(stringKeys[1], '$$', 'stringKeys[1] === "$$"');
test/language/module-code/namespace/internals/own-property-keys-sort.js:assert.sameValue(allKeys[0], '$', 'allKeys[0] === "$"');
test/language/module-code/namespace/internals/own-property-keys-sort.js:assert.sameValue(allKeys[1], '$$', 'allKeys[1] === "$$"');
$ git grep -E '['\''".]\$[0-9]\b' test
test/built-ins/Object/internals/DefineOwnProperty/consistent-value-regexp-dollar1.js:  ("$1" property of the RegExp built-in)
test/built-ins/Object/internals/DefineOwnProperty/consistent-value-regexp-dollar1.js:Reflect.defineProperty(RegExp, '$1', {
test/built-ins/Object/internals/DefineOwnProperty/consistent-value-regexp-dollar1.js:var desc = Reflect.getOwnPropertyDescriptor(RegExp, '$1');
test/built-ins/Object/internals/DefineOwnProperty/consistent-value-regexp-dollar1.js:  var desc2 = Reflect.getOwnPropertyDescriptor(RegExp, '$1');
test/built-ins/Object/internals/DefineOwnProperty/consistent-writable-regexp-dollar1.js:  ("$1" property of the RegExp built-in)
test/built-ins/Object/internals/DefineOwnProperty/consistent-writable-regexp-dollar1.js:if (Reflect.defineProperty(RegExp, '$1', {
test/built-ins/Object/internals/DefineOwnProperty/consistent-writable-regexp-dollar1.js:  var desc = Reflect.getOwnPropertyDescriptor(RegExp, '$1');
test/built-ins/RegExp/S15.10.2.8_A3_T18.js:var __replaced = "To sign up click |here|https:www.xxxx.org/subscribe.htm|".replace(/(\|)([\w\x81-\xff ]*)(\|)([\/a-z][\w:\/\.]*\.[a-z]{3,4})(\|)/ig, '<a href="$4">$2</a>');
test/built-ins/RegExp/S15.10.2.8_A3_T18.js:	$ERROR('#1: __replaced = "To sign up click |here|https:www.xxxx.org/subscribe.htm|".replace(/(\\|)([\\w\\x81-\\xff ]*)(\\|)([\\/a-z][\\w:\\/\\.]*\\.[a-z]{3,4})(\\|)/ig, \'<a href="$4">$2</a>\'); __replaced === ' + __expected + '. Actual: ' + __replaced);
test/built-ins/RegExp/named-groups/string-replace-nocaptures.js:  assert.sameValue("bacd", "abcd".replace(re, "$2$1"));
test/built-ins/RegExp/named-groups/string-replace-nocaptures.js:  assert.sameValue("cd", "abcd".replace(re, "$3"));
test/built-ins/RegExp/named-groups/string-replace-numbered.js:  assert.sameValue("badc", "abcd".replace(re, "$2$1"));
test/built-ins/RegExp/named-groups/string-replace-numbered.js:  assert.sameValue("bacd", "abcd".replace(re, "$2$1"));
test/built-ins/RegExp/prototype/Symbol.replace/result-coerce-length.js:assert.sameValue(r[Symbol.replace]('', '$1$2$3'), 'foobar$3');
test/built-ins/String/prototype/replace/S15.5.4.11_A5_T1.js:description: searchValue is  regexp /^(a+)\1*,\1+$/ and replaceValue is "$1"
test/built-ins/String/prototype/replace/S15.5.4.11_A5_T1.js:var __repl = "$1";
test/built-ins/String/prototype/replace/S15.5.4.11_A5_T1.js:  $ERROR('#1: var __str = "aaaaaaaaaa,aaaaaaaaaaaaaaa"; var __pattern = /^(a+)\\1*,\\1+$/; var __repl = "$1"; __str.replace(__pattern, __repl)===\'aaaaa\'. Actual: ' + __str.replace(__pattern, __repl));
test/intl402/NumberFormat/prototype/format/signDisplay-currency-en-US.js:    "$0.00",
test/intl402/NumberFormat/prototype/format/signDisplay-currency-en-US.js:    "$0.00",
test/intl402/NumberFormat/prototype/format/signDisplay-currency-en-US.js:    "$0.00",
test/intl402/NumberFormat/prototype/format/signDisplay-currency-en-US.js:    "$0.00",
test/intl402/NumberFormat/prototype/format/signDisplay-currency-en-US.js:    "$0.00",
test/intl402/NumberFormat/prototype/format/signDisplay-currency-en-US.js:    "$0.00",
test/intl402/NumberFormat/prototype/format/signDisplay-currency-en-US.js:    "$0.00",
test/intl402/NumberFormat/prototype/format/signDisplay-currency-ja-JP.js:    "$0.00",
test/intl402/NumberFormat/prototype/format/signDisplay-currency-ja-JP.js:    "$0.00",
test/intl402/NumberFormat/prototype/format/signDisplay-currency-ja-JP.js:    "$0.00",
test/intl402/NumberFormat/prototype/format/signDisplay-currency-ja-JP.js:    "$0.00",
test/intl402/NumberFormat/prototype/format/signDisplay-currency-ja-JP.js:    "$0.00",
test/intl402/NumberFormat/prototype/format/signDisplay-currency-ja-JP.js:    "$0.00",
test/intl402/NumberFormat/prototype/format/signDisplay-currency-ja-JP.js:    "$0.00",

/cc @claudepache @erights

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging a pull request may close this issue.

2 participants