Commit 1945392a authored by Frank Tang's avatar Frank Tang Committed by Commit Bot

[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/+/1652795Reviewed-by: 's avatarYang Guo <yangguo@chromium.org>
Commit-Queue: Frank Tang <ftang@chromium.org>
Cr-Commit-Position: refs/heads/master@{#62105}
parent de935145
......@@ -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++;
}
......
// 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));
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment