зеркало из https://github.com/mozilla/gecko-dev.git
Bug 1281739 - Do not match K, S, k, s, KELVIN SIGN, LATIN SMALL LETTER LONG S with \W in unicode ignoreCase RegExp. r=till
This commit is contained in:
Родитель
2f452e7f1a
Коммит
e6c1038d4c
|
@ -93,10 +93,10 @@ static const int kWordAndSurrogateRanges[] = {
|
|||
static const int kWordAndSurrogateRangeCount = ArrayLength(kWordAndSurrogateRanges);
|
||||
static const int kNegatedIgnoreCaseWordAndSurrogateRanges[] = {
|
||||
0, '0', '9' + 1, 'A',
|
||||
'K', 'K' + 1, 'S', 'S' + 1,
|
||||
'Z' + 1, '_', '_' + 1, 'a',
|
||||
'k', 'k' + 1, 's', 's' + 1,
|
||||
'z' + 1, unicode::LeadSurrogateMin,
|
||||
'z' + 1, 0x017F,
|
||||
0x017F + 1, 0x212A,
|
||||
0x212A + 1, unicode::LeadSurrogateMin,
|
||||
unicode::TrailSurrogateMax + 1, 0x10000,
|
||||
0x10000 };
|
||||
static const int kNegatedIgnoreCaseWordAndSurrogateRangeCount =
|
||||
|
|
|
@ -1,6 +1,10 @@
|
|||
var BUGNUMBER = 1135377;
|
||||
var summary = "Implement RegExp unicode flag -- ignoreCase flag with character class escape.";
|
||||
|
||||
// \W doesn't match S or K from the change in
|
||||
// https://github.com/tc39/ecma262/pull/525
|
||||
// (bug 1281739)
|
||||
|
||||
print(BUGNUMBER + ": " + summary);
|
||||
|
||||
// LATIN SMALL LETTER LONG S
|
||||
|
@ -12,13 +16,27 @@ assertEqArray(/\w/iu.exec("s"),
|
|||
assertEqArray(/\w/iu.exec("\u017F"),
|
||||
["\u017F"]);
|
||||
|
||||
assertEqArray(/\W/iu.exec("S"),
|
||||
assertEqArray(/[^\W]/iu.exec("S"),
|
||||
["S"]);
|
||||
assertEqArray(/\W/iu.exec("s"),
|
||||
assertEqArray(/[^\W]/iu.exec("s"),
|
||||
["s"]);
|
||||
assertEqArray(/\W/iu.exec("\u017F"),
|
||||
assertEqArray(/[^\W]/iu.exec("\u017F"),
|
||||
["\u017F"]);
|
||||
|
||||
assertEq(/\W/iu.exec("S"),
|
||||
null);
|
||||
assertEq(/\W/iu.exec("s"),
|
||||
null);
|
||||
assertEq(/\W/iu.exec("\u017F"),
|
||||
null);
|
||||
|
||||
assertEq(/[^\w]/iu.exec("S"),
|
||||
null);
|
||||
assertEq(/[^\w]/iu.exec("s"),
|
||||
null);
|
||||
assertEq(/[^\w]/iu.exec("\u017F"),
|
||||
null);
|
||||
|
||||
// KELVIN SIGN
|
||||
|
||||
assertEqArray(/\w/iu.exec("k"),
|
||||
|
@ -28,12 +46,26 @@ assertEqArray(/\w/iu.exec("k"),
|
|||
assertEqArray(/\w/iu.exec("\u212A"),
|
||||
["\u212A"]);
|
||||
|
||||
assertEqArray(/\W/iu.exec("k"),
|
||||
assertEqArray(/[^\W]/iu.exec("k"),
|
||||
["k"]);
|
||||
assertEqArray(/\W/iu.exec("k"),
|
||||
assertEqArray(/[^\W]/iu.exec("k"),
|
||||
["k"]);
|
||||
assertEqArray(/\W/iu.exec("\u212A"),
|
||||
assertEqArray(/[^\W]/iu.exec("\u212A"),
|
||||
["\u212A"]);
|
||||
|
||||
assertEq(/\W/iu.exec("k"),
|
||||
null);
|
||||
assertEq(/\W/iu.exec("k"),
|
||||
null);
|
||||
assertEq(/\W/iu.exec("\u212A"),
|
||||
null);
|
||||
|
||||
assertEq(/[^\w]/iu.exec("k"),
|
||||
null);
|
||||
assertEq(/[^\w]/iu.exec("k"),
|
||||
null);
|
||||
assertEq(/[^\w]/iu.exec("\u212A"),
|
||||
null);
|
||||
|
||||
if (typeof reportCompare === "function")
|
||||
reportCompare(true, true);
|
||||
|
|
Загрузка…
Ссылка в новой задаче