[Intl] Fix RegExp [\W] with i flag
Add special condiction in ecma262 #sec-runtime-semantics-canonicalize-ch Step 3.g-h. Bug: chromium:971636 Change-Id: Id533beb66749af6e38ee114cf79f995a1156df20 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1652795 Reviewed-by: Yang Guo <yangguo@chromium.org> Commit-Queue: Frank Tang <ftang@chromium.org> Cr-Commit-Position: refs/heads/master@{#62105}
This commit is contained in:
parent
de93514575
commit
1945392a4e
@ -5963,7 +5963,15 @@ void CharacterRange::AddCaseEquivalents(Isolate* isolate, Zone* zone,
|
||||
upper2.toUpper(locale);
|
||||
// Only add if the upper case are the same.
|
||||
if (upper[0] == upper2[0]) {
|
||||
others.add(start);
|
||||
// #sec-runtime-semantics-canonicalize-ch
|
||||
// 3.g. If the numeric value of ch ≥ 128 and the numeric value of
|
||||
// cu < 128, return ch.
|
||||
if (bottom >= 128 && start < 128) {
|
||||
others.add(bottom);
|
||||
} else {
|
||||
// 3.h. 3.h. 3.h. Return cu.
|
||||
others.add(start);
|
||||
}
|
||||
}
|
||||
start++;
|
||||
}
|
||||
|
10
test/intl/regress-971636.js
Normal file
10
test/intl/regress-971636.js
Normal file
@ -0,0 +1,10 @@
|
||||
// Copyright 2019 the V8 project authors. All rights reserved.
|
||||
// Use of this source code is governed by a BSD-style license that can be
|
||||
// found in the LICENSE file.
|
||||
|
||||
// Regression test about \W w/ i will match S
|
||||
|
||||
assertEquals("RST", "RST".replace(/[\W_]/gi, ""));
|
||||
assertEquals("RST", "RST".replace(/[\W]/gi, ""));
|
||||
assertEquals("RST", "RST".replace(/[\Wa]/gi, ""));
|
||||
assertEquals(null, "s".match(/[\u00A0-\u0180]/i));
|
Loading…
Reference in New Issue
Block a user