forked from pool/nodejs-electron
- Update to 25.8.0
* ABI break: NODE_MODULE_VERSION is now 116
* Chromium 114.0.5735.289
* Node 18.15.0
* V8 11.4
* Removed BrowserWindow scroll-touch-* events (since Electron 23)
* Removed webContents.{de,in}crementCapturerCount(stayHidden, stayAwake) (since Electron 23)
* Removed JXL image format support (since Electron 23)
* API Changed: nativeImage.createThumbnailFromPath(path, size) (since Electron 24)
- Use bundled vpx on Fedora ≤37 and Leap
- Use bundled aom on Fedora and Leap
- Drop support for Fedora 36 which is EOL
- Drop upstreamed patches
* CVE-2022-43548.patch
* aggregatable_attribution_utils-do-not-assume-abseil-ABI.patch
* angle-ShaderVars-missing-uint32_t.patch
* blink-gcc13-missing-headers.patch
* bluetooth_uuid-missing-uint8_t.patch
* broker_file_permission-missing-uint64_t.patch
* chromium-108-abseil-shims.patch
* components-gcc13-missing-headers.patch
* crashpad-elf_image_reader-ProgramHeaderTableSpecific-expected-unqualified-id.patch
* d0aa9ad.patch
* document_loader-private-DecodedBodyData.patch
* effect_paint_property_node-Wchanges-meaning.patch
* electron_serial_delegate-ambiguous-Observer.patch
* extensions-gcc13-missing-headers.patch
* first_party_set_parser-IssueWithMetadata-no-known-conversion.patch
* gpu_feature_info-missing-uint32_t.patch
* half_float-Wstrict-aliasing.patch
* ipcz-buffer_id-Wnarrowing.patch
* ipcz-safe_math-Wuninitialized.patch
* net-gcc13-missing-headers.patch
* net-third_party-quiche-gcc13-missing-headers.patch
* one_writer_seqlock-missing-uintptr_t.patch
* openscreen-gcc13-missing-headers.patch
* passwords_counter-Wsubobject-linkage.patch
* perfetto-uuid-missing-uint8_t.patch
* print_dialog_gtk-no-kEnableOopPrintDriversJobPrint.patch
* profiler-missing-uintptr_t.patch
* reproducible-config.gypi.patch
* select_file_dialog_linux_kde-Wodr.patch
* shim_headers-fix-ninja.patch
* static_constructors-Wstrict-aliasing.patch
* string_hasher-type-pun-UB-causes-heap-corruption.patch
* swiftshader-Constants-Wstrict-aliasing.patch
* swiftshader-Half-Wstrict-aliasing.patch
* swiftshader-LRUCache-missing-uint64_t.patch
* target_property-missing-uint32_t.patch
* ui-gcc13-missing-headers.patch
* unzip-Wsubobject-linkage.patch
* v8_initializer-PageAllocator-fpermissive.patch
* vector_math_impl-Wstrict-aliasing.patch
* web_contents_impl-Wsubobject-linkage.patch
* webgl_image_conversion-Wstrict-aliasing.patch
* webrtc-base64-missing-uint8_t.patch
* xr_cube_map-Wstrict-aliasing.patch
- Drop no longer relevant patches`
* chromium-norar.patch
* electron-13-fix-sql-virtualcursor-type.patch
* enable-jxl.patch
* system-jsoncpp.patch
- Add patches to build with system libs
* abseil-remove-unused-targets.patch
* highway.gn
* system-wayland.patch
- Add patches to fix build errors
* absl-uint128-do-not-assume-abi.patch
* cpu-missing-uint8_t.patch
* electron-24-components-missing-headers.patch
* electron_api_app-GetPathConstant-non-constexpr.patch
* electron_browser_context-missing-variant.patch
* mojo_ukm_recorder-missing-WrapUnique.patch
- Conditionally reverse upstream changes to build against stable avif
* avif_image_decoder-repetitionCount-clli.patch
- …and harfbuzz 4
* harfbuzz-replace-HbScopedPointer.patch
- …and icu 69
* v8-regexp-parser-UCHAR_BASIC_EMOJI.patch
- …and wayland 19
* wayland-WL-SINCE-VERSION.patch
* wayland_data_drag_controller-WL_SURFACE_OFFSET_SINCE_VERSION.patch
- Add backported chrome-gpu-does-not-load.patch
OBS-URL: https://build.opensuse.org/request/show/1110783
OBS-URL: https://build.opensuse.org/package/show/devel:languages:nodejs/nodejs-electron?expand=0&rev=89
504 lines
31 KiB
Diff
504 lines
31 KiB
Diff
From 0fec70aeb15c286cb696420616e2aeb3bc0eb03a Mon Sep 17 00:00:00 2001
|
|
From: pthier <pthier@chromium.org>
|
|
Date: Fri, 25 Nov 2022 11:27:06 +0100
|
|
Subject: [PATCH] [regexp] Support properties of strings in unicode sets mode
|
|
|
|
Add support for properties of strings in unicode sets mode (/v).
|
|
|
|
Bug: v8:11935
|
|
Change-Id: Iae2f0182b1c42bb900c524ca406784b7b1b52842
|
|
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/4051247
|
|
Commit-Queue: Patrick Thier <pthier@chromium.org>
|
|
Reviewed-by: Mathias Bynens <mathias@chromium.org>
|
|
Cr-Commit-Position: refs/heads/main@{#84481}
|
|
---
|
|
src/regexp/regexp-parser.cc | 162 ++++++++++++++++----
|
|
test/mjsunit/harmony/regexp-unicode-sets.js | 36 +++++
|
|
test/test262/test262.status | 153 ++++++++----------
|
|
3 files changed, 227 insertions(+), 124 deletions(-)
|
|
|
|
diff --git a/src/regexp/regexp-parser.cc b/src/regexp/regexp-parser.cc
|
|
index b5ead7c0054..f420b2eec42 100644
|
|
--- a/v8/src/regexp/regexp-parser.cc
|
|
+++ b/v8/src/regexp/regexp-parser.cc
|
|
@@ -450,7 +450,8 @@ class RegExpParserImpl final {
|
|
|
|
bool ParsePropertyClassName(ZoneVector<char>* name_1,
|
|
ZoneVector<char>* name_2);
|
|
- bool AddPropertyClassRange(ZoneList<CharacterRange>* add_to, bool negate,
|
|
+ bool AddPropertyClassRange(ZoneList<CharacterRange>* add_to_range,
|
|
+ CharacterClassStrings* add_to_strings, bool negate,
|
|
const ZoneVector<char>& name_1,
|
|
const ZoneVector<char>& name_2);
|
|
|
|
@@ -465,7 +466,7 @@ class RegExpParserImpl final {
|
|
bool TryParseCharacterClassEscape(base::uc32 next,
|
|
InClassEscapeState in_class_escape_state,
|
|
ZoneList<CharacterRange>* ranges,
|
|
- Zone* zone,
|
|
+ CharacterClassStrings* strings, Zone* zone,
|
|
bool add_unicode_case_equivalents);
|
|
RegExpTree* ParseClassStringDisjunction(ZoneList<CharacterRange>* ranges,
|
|
CharacterClassStrings* strings);
|
|
@@ -1094,16 +1095,14 @@ RegExpTree* RegExpParserImpl<CharT>::ParseDisjunction() {
|
|
case 's':
|
|
case 'S':
|
|
case 'w':
|
|
- case 'W':
|
|
- case 'p':
|
|
- case 'P': {
|
|
+ case 'W': {
|
|
base::uc32 next = Next();
|
|
ZoneList<CharacterRange>* ranges =
|
|
zone()->template New<ZoneList<CharacterRange>>(2, zone());
|
|
bool add_unicode_case_equivalents =
|
|
IsUnicodeMode() && ignore_case();
|
|
bool parsed_character_class_escape = TryParseCharacterClassEscape(
|
|
- next, InClassEscapeState::kNotInClass, ranges, zone(),
|
|
+ next, InClassEscapeState::kNotInClass, ranges, nullptr, zone(),
|
|
add_unicode_case_equivalents CHECK_FAILED);
|
|
|
|
if (parsed_character_class_escape) {
|
|
@@ -1117,6 +1116,38 @@ RegExpTree* RegExpParserImpl<CharT>::ParseDisjunction() {
|
|
}
|
|
break;
|
|
}
|
|
+ case 'p':
|
|
+ case 'P': {
|
|
+ base::uc32 next = Next();
|
|
+ ZoneList<CharacterRange>* ranges =
|
|
+ zone()->template New<ZoneList<CharacterRange>>(2, zone());
|
|
+ CharacterClassStrings* strings = nullptr;
|
|
+ if (unicode_sets()) {
|
|
+ strings = zone()->template New<CharacterClassStrings>(zone());
|
|
+ }
|
|
+ bool add_unicode_case_equivalents = ignore_case();
|
|
+ bool parsed_character_class_escape = TryParseCharacterClassEscape(
|
|
+ next, InClassEscapeState::kNotInClass, ranges, strings, zone(),
|
|
+ add_unicode_case_equivalents CHECK_FAILED);
|
|
+
|
|
+ if (parsed_character_class_escape) {
|
|
+ if (unicode_sets()) {
|
|
+ RegExpClassSetOperand* op =
|
|
+ zone()->template New<RegExpClassSetOperand>(ranges,
|
|
+ strings);
|
|
+ builder->AddTerm(op);
|
|
+ } else {
|
|
+ RegExpClassRanges* cc =
|
|
+ zone()->template New<RegExpClassRanges>(zone(), ranges);
|
|
+ builder->AddClassRanges(cc);
|
|
+ }
|
|
+ } else {
|
|
+ CHECK(!IsUnicodeMode());
|
|
+ Advance(2);
|
|
+ builder->AddCharacter(next); // IdentityEscape.
|
|
+ }
|
|
+ break;
|
|
+ }
|
|
// AtomEscape ::
|
|
// k GroupName
|
|
case 'k': {
|
|
@@ -1827,10 +1858,44 @@ bool IsExactPropertyValueAlias(const char* property_value_name,
|
|
return false;
|
|
}
|
|
|
|
+void ExtractStringsFromUnicodeSet(const icu::UnicodeSet& set,
|
|
+ CharacterClassStrings* strings,
|
|
+ RegExpFlags flags, Zone* zone) {
|
|
+ DCHECK(set.hasStrings());
|
|
+ DCHECK(IsUnicodeSets(flags));
|
|
+ DCHECK_NOT_NULL(strings);
|
|
+
|
|
+ RegExpTextBuilder::SmallRegExpTreeVector string_storage(
|
|
+ ZoneAllocator<RegExpTree*>{zone});
|
|
+ RegExpTextBuilder string_builder(zone, &string_storage, flags);
|
|
+ const bool needs_case_folding = IsIgnoreCase(flags);
|
|
+ icu::UnicodeSetIterator iter(set);
|
|
+ iter.skipToStrings();
|
|
+ while (iter.next()) {
|
|
+ const icu::UnicodeString& s = iter.getString();
|
|
+ const char16_t* p = s.getBuffer();
|
|
+ int32_t length = s.length();
|
|
+ ZoneList<base::uc32>* string =
|
|
+ zone->template New<ZoneList<base::uc32>>(length, zone);
|
|
+ for (int32_t i = 0; i < length;) {
|
|
+ UChar32 c;
|
|
+ U16_NEXT(p, i, length, c);
|
|
+ string_builder.AddUnicodeCharacter(c);
|
|
+ if (needs_case_folding) {
|
|
+ c = u_foldCase(c, U_FOLD_CASE_DEFAULT);
|
|
+ }
|
|
+ string->Add(c, zone);
|
|
+ }
|
|
+ strings->emplace(string->ToVector(), string_builder.ToRegExp());
|
|
+ string_storage.clear();
|
|
+ }
|
|
+}
|
|
+
|
|
bool LookupPropertyValueName(UProperty property,
|
|
const char* property_value_name, bool negate,
|
|
- bool needs_case_folding,
|
|
- ZoneList<CharacterRange>* result, Zone* zone) {
|
|
+ ZoneList<CharacterRange>* result_ranges,
|
|
+ CharacterClassStrings* result_strings,
|
|
+ RegExpFlags flags, Zone* zone) {
|
|
UProperty property_for_lookup = property;
|
|
if (property_for_lookup == UCHAR_SCRIPT_EXTENSIONS) {
|
|
// For the property Script_Extensions, we have to do the property value
|
|
@@ -1854,11 +1919,15 @@ bool LookupPropertyValueName(UProperty property,
|
|
bool success = ec == U_ZERO_ERROR && !set.isEmpty();
|
|
|
|
if (success) {
|
|
+ if (set.hasStrings()) {
|
|
+ ExtractStringsFromUnicodeSet(set, result_strings, flags, zone);
|
|
+ }
|
|
+ const bool needs_case_folding = IsUnicodeSets(flags) && IsIgnoreCase(flags);
|
|
if (needs_case_folding) CharacterRange::UnicodeSimpleCloseOver(set);
|
|
set.removeAllStrings();
|
|
if (negate) set.complement();
|
|
for (int i = 0; i < set.getRangeCount(); i++) {
|
|
- result->Add(
|
|
+ result_ranges->Add(
|
|
CharacterRange::Range(set.getRangeStart(i), set.getRangeEnd(i)),
|
|
zone);
|
|
}
|
|
@@ -1873,7 +1942,7 @@ inline bool NameEquals(const char* name, const char (&literal)[N]) {
|
|
|
|
bool LookupSpecialPropertyValueName(const char* name,
|
|
ZoneList<CharacterRange>* result,
|
|
- bool negate, bool needs_case_folding,
|
|
+ bool negate, RegExpFlags flags,
|
|
Zone* zone) {
|
|
if (NameEquals(name, "Any")) {
|
|
if (negate) {
|
|
@@ -1888,7 +1957,7 @@ bool LookupSpecialPropertyValueName(const char* name,
|
|
zone);
|
|
} else if (NameEquals(name, "Assigned")) {
|
|
return LookupPropertyValueName(UCHAR_GENERAL_CATEGORY, "Unassigned",
|
|
- !negate, needs_case_folding, result, zone);
|
|
+ !negate, result, nullptr, flags, zone);
|
|
} else {
|
|
return false;
|
|
}
|
|
@@ -1897,7 +1966,7 @@ bool LookupSpecialPropertyValueName(const char* name,
|
|
|
|
// Explicitly allowlist supported binary properties. The spec forbids supporting
|
|
// properties outside of this set to ensure interoperability.
|
|
-bool IsSupportedBinaryProperty(UProperty property) {
|
|
+bool IsSupportedBinaryProperty(UProperty property, bool unicode_sets) {
|
|
switch (property) {
|
|
case UCHAR_ALPHABETIC:
|
|
// 'Any' is not supported by ICU. See LookupSpecialPropertyValueName.
|
|
@@ -1953,6 +2022,30 @@ bool IsSupportedBinaryProperty(UProperty property) {
|
|
case UCHAR_XID_CONTINUE:
|
|
case UCHAR_XID_START:
|
|
return true;
|
|
+ case UCHAR_BASIC_EMOJI:
|
|
+ case UCHAR_EMOJI_KEYCAP_SEQUENCE:
|
|
+ case UCHAR_RGI_EMOJI_MODIFIER_SEQUENCE:
|
|
+ case UCHAR_RGI_EMOJI_FLAG_SEQUENCE:
|
|
+ case UCHAR_RGI_EMOJI_TAG_SEQUENCE:
|
|
+ case UCHAR_RGI_EMOJI_ZWJ_SEQUENCE:
|
|
+ case UCHAR_RGI_EMOJI:
|
|
+ return unicode_sets;
|
|
+ default:
|
|
+ break;
|
|
+ }
|
|
+ return false;
|
|
+}
|
|
+
|
|
+bool IsBinaryPropertyOfStrings(UProperty property) {
|
|
+ switch (property) {
|
|
+ case UCHAR_BASIC_EMOJI:
|
|
+ case UCHAR_EMOJI_KEYCAP_SEQUENCE:
|
|
+ case UCHAR_RGI_EMOJI_MODIFIER_SEQUENCE:
|
|
+ case UCHAR_RGI_EMOJI_FLAG_SEQUENCE:
|
|
+ case UCHAR_RGI_EMOJI_TAG_SEQUENCE:
|
|
+ case UCHAR_RGI_EMOJI_ZWJ_SEQUENCE:
|
|
+ case UCHAR_RGI_EMOJI:
|
|
+ return true;
|
|
default:
|
|
break;
|
|
}
|
|
@@ -2015,31 +2108,34 @@ bool RegExpParserImpl<CharT>::ParsePropertyClassName(ZoneVector<char>* name_1,
|
|
|
|
template <class CharT>
|
|
bool RegExpParserImpl<CharT>::AddPropertyClassRange(
|
|
- ZoneList<CharacterRange>* add_to, bool negate,
|
|
+ ZoneList<CharacterRange>* add_to_ranges,
|
|
+ CharacterClassStrings* add_to_strings, bool negate,
|
|
const ZoneVector<char>& name_1, const ZoneVector<char>& name_2) {
|
|
- // With /vi, we need to apply case folding to property values.
|
|
- // TODO(v8:11935): Change permalink once proposal is in stage 4.
|
|
- // See
|
|
- // https://arai-a.github.io/ecma262-compare/snapshot.html?pr=2418#prod-maybesimplecasefolding
|
|
- const bool needs_case_folding = unicode_sets() && ignore_case();
|
|
if (name_2.empty()) {
|
|
// First attempt to interpret as general category property value name.
|
|
const char* name = name_1.data();
|
|
if (LookupPropertyValueName(UCHAR_GENERAL_CATEGORY_MASK, name, negate,
|
|
- needs_case_folding, add_to, zone())) {
|
|
+ add_to_ranges, add_to_strings, flags(),
|
|
+ zone())) {
|
|
return true;
|
|
}
|
|
// Interpret "Any", "ASCII", and "Assigned".
|
|
- if (LookupSpecialPropertyValueName(name, add_to, negate, needs_case_folding,
|
|
+ if (LookupSpecialPropertyValueName(name, add_to_ranges, negate, flags(),
|
|
zone())) {
|
|
return true;
|
|
}
|
|
// Then attempt to interpret as binary property name with value name 'Y'.
|
|
UProperty property = u_getPropertyEnum(name);
|
|
- if (!IsSupportedBinaryProperty(property)) return false;
|
|
+ if (!IsSupportedBinaryProperty(property, unicode_sets())) return false;
|
|
if (!IsExactPropertyAlias(name, property)) return false;
|
|
+ // Negation of properties with strings is not allowed.
|
|
+ // TODO(v8:11935): Change permalink once proposal is in stage 4.
|
|
+ // See
|
|
+ // https://arai-a.github.io/ecma262-compare/snapshot.html?pr=2418#sec-static-semantics-maycontainstrings
|
|
+ if (negate && IsBinaryPropertyOfStrings(property)) return false;
|
|
return LookupPropertyValueName(property, negate ? "N" : "Y", false,
|
|
- needs_case_folding, add_to, zone());
|
|
+ add_to_ranges, add_to_strings, flags(),
|
|
+ zone());
|
|
} else {
|
|
// Both property name and value name are specified. Attempt to interpret
|
|
// the property name as enumerated property.
|
|
@@ -2054,8 +2150,8 @@ bool RegExpParserImpl<CharT>::AddPropertyClassRange(
|
|
property != UCHAR_SCRIPT_EXTENSIONS) {
|
|
return false;
|
|
}
|
|
- return LookupPropertyValueName(property, value_name, negate,
|
|
- needs_case_folding, add_to, zone());
|
|
+ return LookupPropertyValueName(property, value_name, negate, add_to_ranges,
|
|
+ add_to_strings, flags(), zone());
|
|
}
|
|
}
|
|
|
|
@@ -2069,7 +2165,8 @@ bool RegExpParserImpl<CharT>::ParsePropertyClassName(ZoneVector<char>* name_1,
|
|
|
|
template <class CharT>
|
|
bool RegExpParserImpl<CharT>::AddPropertyClassRange(
|
|
- ZoneList<CharacterRange>* add_to, bool negate,
|
|
+ ZoneList<CharacterRange>* add_to_ranges,
|
|
+ CharacterClassStrings* add_to_strings, bool negate,
|
|
const ZoneVector<char>& name_1, const ZoneVector<char>& name_2) {
|
|
return false;
|
|
}
|
|
@@ -2345,8 +2442,9 @@ void RegExpParserImpl<CharT>::ParseClassEscape(
|
|
|
|
static constexpr InClassEscapeState kInClassEscape =
|
|
InClassEscapeState::kInClass;
|
|
- *is_class_escape = TryParseCharacterClassEscape(
|
|
- next, kInClassEscape, ranges, zone, add_unicode_case_equivalents);
|
|
+ *is_class_escape =
|
|
+ TryParseCharacterClassEscape(next, kInClassEscape, ranges, nullptr, zone,
|
|
+ add_unicode_case_equivalents);
|
|
if (*is_class_escape) return;
|
|
|
|
bool dummy = false; // Unused.
|
|
@@ -2357,8 +2455,8 @@ void RegExpParserImpl<CharT>::ParseClassEscape(
|
|
template <class CharT>
|
|
bool RegExpParserImpl<CharT>::TryParseCharacterClassEscape(
|
|
base::uc32 next, InClassEscapeState in_class_escape_state,
|
|
- ZoneList<CharacterRange>* ranges, Zone* zone,
|
|
- bool add_unicode_case_equivalents) {
|
|
+ ZoneList<CharacterRange>* ranges, CharacterClassStrings* strings,
|
|
+ Zone* zone, bool add_unicode_case_equivalents) {
|
|
DCHECK_EQ(current(), '\\');
|
|
DCHECK_EQ(Next(), next);
|
|
|
|
@@ -2382,7 +2480,7 @@ bool RegExpParserImpl<CharT>::TryParseCharacterClassEscape(
|
|
ZoneVector<char> name_1(zone);
|
|
ZoneVector<char> name_2(zone);
|
|
if (!ParsePropertyClassName(&name_1, &name_2) ||
|
|
- !AddPropertyClassRange(ranges, negate, name_1, name_2)) {
|
|
+ !AddPropertyClassRange(ranges, strings, negate, name_1, name_2)) {
|
|
ReportError(in_class_escape_state == InClassEscapeState::kInClass
|
|
? RegExpError::kInvalidClassPropertyName
|
|
: RegExpError::kInvalidPropertyName);
|
|
@@ -2521,8 +2619,8 @@ RegExpTree* RegExpParserImpl<CharT>::ParseClassSetOperand(
|
|
static constexpr InClassEscapeState kInClassEscape =
|
|
InClassEscapeState::kInClass;
|
|
const bool add_unicode_case_equivalents = ignore_case();
|
|
- if (TryParseCharacterClassEscape(next, kInClassEscape, ranges, zone(),
|
|
- add_unicode_case_equivalents)) {
|
|
+ if (TryParseCharacterClassEscape(next, kInClassEscape, ranges, strings,
|
|
+ zone(), add_unicode_case_equivalents)) {
|
|
*type_out = ClassSetOperandType::kCharacterClassEscape;
|
|
return nullptr;
|
|
}
|
|
diff --git a/test/test262/test262.status b/test/test262/test262.status
|
|
index be60b2f8e46..48d24548df4 100644
|
|
--- a/v8/test/test262/test262.status
|
|
+++ b/v8/test/test262/test262.status
|
|
@@ -294,70 +294,6 @@
|
|
# See also https://github.com/tc39/test262/issues/3380
|
|
'built-ins/TypedArray/prototype/map/callbackfn-resize': [FAIL],
|
|
|
|
- # https://bugs.chromium.org/p/v8/issues/detail?id=11935
|
|
- # regexp-v-flag not yet fully implemented.
|
|
- 'built-ins/RegExp/property-escapes/generated/strings/Basic_Emoji': [SKIP],
|
|
- 'built-ins/RegExp/property-escapes/generated/strings/Basic_Emoji-negative-CharacterClass': [SKIP],
|
|
- 'built-ins/RegExp/property-escapes/generated/strings/Basic_Emoji-negative-P': [SKIP],
|
|
- 'built-ins/RegExp/property-escapes/generated/strings/Basic_Emoji-negative-u': [SKIP],
|
|
- 'built-ins/RegExp/property-escapes/generated/strings/Emoji_Keycap_Sequence': [SKIP],
|
|
- 'built-ins/RegExp/property-escapes/generated/strings/Emoji_Keycap_Sequence-negative-CharacterClass': [SKIP],
|
|
- 'built-ins/RegExp/property-escapes/generated/strings/Emoji_Keycap_Sequence-negative-P': [SKIP],
|
|
- 'built-ins/RegExp/property-escapes/generated/strings/Emoji_Keycap_Sequence-negative-u': [SKIP],
|
|
- 'built-ins/RegExp/property-escapes/generated/strings/RGI_Emoji': [SKIP],
|
|
- 'built-ins/RegExp/property-escapes/generated/strings/RGI_Emoji-negative-CharacterClass': [SKIP],
|
|
- 'built-ins/RegExp/property-escapes/generated/strings/RGI_Emoji-negative-P': [SKIP],
|
|
- 'built-ins/RegExp/property-escapes/generated/strings/RGI_Emoji-negative-u': [SKIP],
|
|
- 'built-ins/RegExp/property-escapes/generated/strings/RGI_Emoji_Flag_Sequence': [SKIP],
|
|
- 'built-ins/RegExp/property-escapes/generated/strings/RGI_Emoji_Flag_Sequence-negative-CharacterClass': [SKIP],
|
|
- 'built-ins/RegExp/property-escapes/generated/strings/RGI_Emoji_Flag_Sequence-negative-P': [SKIP],
|
|
- 'built-ins/RegExp/property-escapes/generated/strings/RGI_Emoji_Flag_Sequence-negative-u': [SKIP],
|
|
- 'built-ins/RegExp/property-escapes/generated/strings/RGI_Emoji_Modifier_Sequence': [SKIP],
|
|
- 'built-ins/RegExp/property-escapes/generated/strings/RGI_Emoji_Modifier_Sequence-negative-CharacterClass': [SKIP],
|
|
- 'built-ins/RegExp/property-escapes/generated/strings/RGI_Emoji_Modifier_Sequence-negative-P': [SKIP],
|
|
- 'built-ins/RegExp/property-escapes/generated/strings/RGI_Emoji_Modifier_Sequence-negative-u': [SKIP],
|
|
- 'built-ins/RegExp/property-escapes/generated/strings/RGI_Emoji_Tag_Sequence': [SKIP],
|
|
- 'built-ins/RegExp/property-escapes/generated/strings/RGI_Emoji_Tag_Sequence-negative-CharacterClass': [SKIP],
|
|
- 'built-ins/RegExp/property-escapes/generated/strings/RGI_Emoji_Tag_Sequence-negative-P': [SKIP],
|
|
- 'built-ins/RegExp/property-escapes/generated/strings/RGI_Emoji_Tag_Sequence-negative-u': [SKIP],
|
|
- 'built-ins/RegExp/property-escapes/generated/strings/RGI_Emoji_ZWJ_Sequence': [SKIP],
|
|
- 'built-ins/RegExp/property-escapes/generated/strings/RGI_Emoji_ZWJ_Sequence-negative-CharacterClass': [SKIP],
|
|
- 'built-ins/RegExp/property-escapes/generated/strings/RGI_Emoji_ZWJ_Sequence-negative-P': [SKIP],
|
|
- 'built-ins/RegExp/property-escapes/generated/strings/RGI_Emoji_ZWJ_Sequence-negative-u': [SKIP],
|
|
- 'built-ins/RegExp/unicodeSets/generated/character-class-difference-property-of-strings-escape': [SKIP],
|
|
- 'built-ins/RegExp/unicodeSets/generated/character-class-escape-difference-property-of-strings-escape': [SKIP],
|
|
- 'built-ins/RegExp/unicodeSets/generated/character-class-escape-intersection-property-of-strings-escape': [SKIP],
|
|
- 'built-ins/RegExp/unicodeSets/generated/character-class-escape-union-property-of-strings-escape': [SKIP],
|
|
- 'built-ins/RegExp/unicodeSets/generated/character-class-intersection-property-of-strings-escape': [SKIP],
|
|
- 'built-ins/RegExp/unicodeSets/generated/character-class-union-property-of-strings-escape': [SKIP],
|
|
- 'built-ins/RegExp/unicodeSets/generated/character-difference-property-of-strings-escape': [SKIP],
|
|
- 'built-ins/RegExp/unicodeSets/generated/character-intersection-property-of-strings-escape': [SKIP],
|
|
- 'built-ins/RegExp/unicodeSets/generated/character-property-escape-difference-property-of-strings-escape': [SKIP],
|
|
- 'built-ins/RegExp/unicodeSets/generated/character-property-escape-intersection-property-of-strings-escape': [SKIP],
|
|
- 'built-ins/RegExp/unicodeSets/generated/character-property-escape-union-property-of-strings-escape': [SKIP],
|
|
- 'built-ins/RegExp/unicodeSets/generated/character-union-property-of-strings-escape': [SKIP],
|
|
- 'built-ins/RegExp/unicodeSets/generated/property-of-strings-escape-difference-character-class-escape': [SKIP],
|
|
- 'built-ins/RegExp/unicodeSets/generated/property-of-strings-escape-difference-character-class': [SKIP],
|
|
- 'built-ins/RegExp/unicodeSets/generated/property-of-strings-escape-difference-character': [SKIP],
|
|
- 'built-ins/RegExp/unicodeSets/generated/property-of-strings-escape-difference-character-property-escape': [SKIP],
|
|
- 'built-ins/RegExp/unicodeSets/generated/property-of-strings-escape-difference-property-of-strings-escape': [SKIP],
|
|
- 'built-ins/RegExp/unicodeSets/generated/property-of-strings-escape-difference-string-literal': [SKIP],
|
|
- 'built-ins/RegExp/unicodeSets/generated/property-of-strings-escape-intersection-character-class-escape': [SKIP],
|
|
- 'built-ins/RegExp/unicodeSets/generated/property-of-strings-escape-intersection-character-class': [SKIP],
|
|
- 'built-ins/RegExp/unicodeSets/generated/property-of-strings-escape-intersection-character': [SKIP],
|
|
- 'built-ins/RegExp/unicodeSets/generated/property-of-strings-escape-intersection-character-property-escape': [SKIP],
|
|
- 'built-ins/RegExp/unicodeSets/generated/property-of-strings-escape-intersection-property-of-strings-escape': [SKIP],
|
|
- 'built-ins/RegExp/unicodeSets/generated/property-of-strings-escape-intersection-string-literal': [SKIP],
|
|
- 'built-ins/RegExp/unicodeSets/generated/property-of-strings-escape-union-character-class-escape': [SKIP],
|
|
- 'built-ins/RegExp/unicodeSets/generated/property-of-strings-escape-union-character-class': [SKIP],
|
|
- 'built-ins/RegExp/unicodeSets/generated/property-of-strings-escape-union-character': [SKIP],
|
|
- 'built-ins/RegExp/unicodeSets/generated/property-of-strings-escape-union-character-property-escape': [SKIP],
|
|
- 'built-ins/RegExp/unicodeSets/generated/property-of-strings-escape-union-property-of-strings-escape': [SKIP],
|
|
- 'built-ins/RegExp/unicodeSets/generated/property-of-strings-escape-union-string-literal': [SKIP],
|
|
- 'built-ins/RegExp/unicodeSets/generated/string-literal-difference-property-of-strings-escape': [SKIP],
|
|
- 'built-ins/RegExp/unicodeSets/generated/string-literal-intersection-property-of-strings-escape': [SKIP],
|
|
- 'built-ins/RegExp/unicodeSets/generated/string-literal-union-property-of-strings-escape': [SKIP],
|
|
-
|
|
# https://bugs.chromium.org/p/v8/issues/detail?id=13173
|
|
'built-ins/RegExp/duplicate-named-capturing-groups-syntax': [FAIL],
|
|
'built-ins/RegExp/named-groups/duplicate-names-group-property-enumeration-order': [FAIL],
|
|
@@ -1011,35 +947,68 @@
|
|
'built-ins/RegExp/property-escapes/*': [SKIP],
|
|
'built-ins/RegExp/named-groups/unicode-property-names': [SKIP],
|
|
'built-ins/RegExp/named-groups/unicode-property-names-valid': [SKIP],
|
|
- 'built-ins/RegExp/named-groups/non-unicode-property-names-valid': [FAIL],
|
|
+ 'built-ins/RegExp/named-groups/non-unicode-property-names-valid': [SKIP],
|
|
'built-ins/RegExp/match-indices/indices-array-unicode-property-names': [SKIP],
|
|
- 'built-ins/RegExp/unicodeSets/generated/character-class-difference-character-property-escape': [PASS,FAIL],
|
|
- 'built-ins/RegExp/unicodeSets/generated/character-class-escape-difference-character-property-escape': [PASS,FAIL],
|
|
- 'built-ins/RegExp/unicodeSets/generated/character-class-escape-union-character-property-escape': [PASS,FAIL],
|
|
- 'built-ins/RegExp/unicodeSets/generated/character-class-escape-intersection-character-property-escape': [PASS,FAIL],
|
|
- 'built-ins/RegExp/unicodeSets/generated/character-class-intersection-character-property-escape': [PASS,FAIL],
|
|
- 'built-ins/RegExp/unicodeSets/generated/character-class-union-character-property-escape': [PASS,FAIL],
|
|
- 'built-ins/RegExp/unicodeSets/generated/character-difference-character-property-escape': [PASS,FAIL],
|
|
- 'built-ins/RegExp/unicodeSets/generated/character-intersection-character-property-escape': [PASS,FAIL],
|
|
- 'built-ins/RegExp/unicodeSets/generated/character-property-escape-intersection-character-class-escape': [PASS,FAIL],
|
|
- 'built-ins/RegExp/unicodeSets/generated/character-property-escape-intersection-character-class': [PASS,FAIL],
|
|
- 'built-ins/RegExp/unicodeSets/generated/character-property-escape-intersection-character-property-escape': [PASS,FAIL],
|
|
- 'built-ins/RegExp/unicodeSets/generated/character-property-escape-intersection-character': [PASS,FAIL],
|
|
- 'built-ins/RegExp/unicodeSets/generated/character-property-escape-intersection-string-literal': [PASS,FAIL],
|
|
- 'built-ins/RegExp/unicodeSets/generated/character-property-escape-difference-character-class-escape': [PASS,FAIL],
|
|
- 'built-ins/RegExp/unicodeSets/generated/character-property-escape-difference-character-class': [PASS,FAIL],
|
|
- 'built-ins/RegExp/unicodeSets/generated/character-property-escape-difference-character-property-escape': [PASS,FAIL],
|
|
- 'built-ins/RegExp/unicodeSets/generated/character-property-escape-difference-character': [PASS,FAIL],
|
|
- 'built-ins/RegExp/unicodeSets/generated/character-property-escape-difference-string-literal': [PASS,FAIL],
|
|
- 'built-ins/RegExp/unicodeSets/generated/character-property-escape-union-character-class-escape': [PASS,FAIL],
|
|
- 'built-ins/RegExp/unicodeSets/generated/character-property-escape-union-character-class': [PASS,FAIL],
|
|
- 'built-ins/RegExp/unicodeSets/generated/character-property-escape-union-character-property-escape': [PASS,FAIL],
|
|
- 'built-ins/RegExp/unicodeSets/generated/character-property-escape-union-character': [PASS,FAIL],
|
|
- 'built-ins/RegExp/unicodeSets/generated/character-property-escape-union-string-literal': [PASS,FAIL],
|
|
- 'built-ins/RegExp/unicodeSets/generated/character-union-character-property-escape': [PASS,FAIL],
|
|
- 'built-ins/RegExp/unicodeSets/generated/string-literal-difference-character-property-escape': [PASS,FAIL],
|
|
- 'built-ins/RegExp/unicodeSets/generated/string-literal-intersection-character-property-escape': [PASS,FAIL],
|
|
- 'built-ins/RegExp/unicodeSets/generated/string-literal-union-character-property-escape': [PASS,FAIL],
|
|
+ 'built-ins/RegExp/unicodeSets/generated/character-class-difference-character-property-escape': [SKIP],
|
|
+ 'built-ins/RegExp/unicodeSets/generated/character-class-difference-property-of-strings-escape': [SKIP],
|
|
+ 'built-ins/RegExp/unicodeSets/generated/character-class-escape-difference-character-property-escape': [SKIP],
|
|
+ 'built-ins/RegExp/unicodeSets/generated/character-class-escape-difference-property-of-strings-escape': [SKIP],
|
|
+ 'built-ins/RegExp/unicodeSets/generated/character-class-escape-intersection-character-property-escape': [SKIP],
|
|
+ 'built-ins/RegExp/unicodeSets/generated/character-class-escape-intersection-property-of-strings-escape': [SKIP],
|
|
+ 'built-ins/RegExp/unicodeSets/generated/character-class-escape-union-character-property-escape': [SKIP],
|
|
+ 'built-ins/RegExp/unicodeSets/generated/character-class-escape-union-property-of-strings-escape': [SKIP],
|
|
+ 'built-ins/RegExp/unicodeSets/generated/character-class-intersection-character-property-escape': [SKIP],
|
|
+ 'built-ins/RegExp/unicodeSets/generated/character-class-intersection-property-of-strings-escape': [SKIP],
|
|
+ 'built-ins/RegExp/unicodeSets/generated/character-class-union-character-property-escape': [SKIP],
|
|
+ 'built-ins/RegExp/unicodeSets/generated/character-class-union-property-of-strings-escape': [SKIP],
|
|
+ 'built-ins/RegExp/unicodeSets/generated/character-difference-character-property-escape': [SKIP],
|
|
+ 'built-ins/RegExp/unicodeSets/generated/character-difference-property-of-strings-escape': [SKIP],
|
|
+ 'built-ins/RegExp/unicodeSets/generated/character-intersection-character-property-escape': [SKIP],
|
|
+ 'built-ins/RegExp/unicodeSets/generated/character-intersection-property-of-strings-escape': [SKIP],
|
|
+ 'built-ins/RegExp/unicodeSets/generated/character-property-escape-difference-character-class-escape': [SKIP],
|
|
+ 'built-ins/RegExp/unicodeSets/generated/character-property-escape-difference-character-class': [SKIP],
|
|
+ 'built-ins/RegExp/unicodeSets/generated/character-property-escape-difference-character-property-escape': [SKIP],
|
|
+ 'built-ins/RegExp/unicodeSets/generated/character-property-escape-difference-character': [SKIP],
|
|
+ 'built-ins/RegExp/unicodeSets/generated/character-property-escape-difference-property-of-strings-escape': [SKIP],
|
|
+ 'built-ins/RegExp/unicodeSets/generated/character-property-escape-difference-string-literal': [SKIP],
|
|
+ 'built-ins/RegExp/unicodeSets/generated/character-property-escape-intersection-character-class-escape': [SKIP],
|
|
+ 'built-ins/RegExp/unicodeSets/generated/character-property-escape-intersection-character-class': [SKIP],
|
|
+ 'built-ins/RegExp/unicodeSets/generated/character-property-escape-intersection-character-property-escape': [SKIP],
|
|
+ 'built-ins/RegExp/unicodeSets/generated/character-property-escape-intersection-character': [SKIP],
|
|
+ 'built-ins/RegExp/unicodeSets/generated/character-property-escape-intersection-property-of-strings-escape': [SKIP],
|
|
+ 'built-ins/RegExp/unicodeSets/generated/character-property-escape-intersection-string-literal': [SKIP],
|
|
+ 'built-ins/RegExp/unicodeSets/generated/character-property-escape-union-character-class-escape': [SKIP],
|
|
+ 'built-ins/RegExp/unicodeSets/generated/character-property-escape-union-character-class': [SKIP],
|
|
+ 'built-ins/RegExp/unicodeSets/generated/character-property-escape-union-character-property-escape': [SKIP],
|
|
+ 'built-ins/RegExp/unicodeSets/generated/character-property-escape-union-character': [SKIP],
|
|
+ 'built-ins/RegExp/unicodeSets/generated/character-property-escape-union-property-of-strings-escape': [SKIP],
|
|
+ 'built-ins/RegExp/unicodeSets/generated/character-property-escape-union-string-literal': [SKIP],
|
|
+ 'built-ins/RegExp/unicodeSets/generated/character-union-character-property-escape': [SKIP],
|
|
+ 'built-ins/RegExp/unicodeSets/generated/character-union-property-of-strings-escape': [SKIP],
|
|
+ 'built-ins/RegExp/unicodeSets/generated/property-of-strings-escape-difference-character-class-escape': [SKIP],
|
|
+ 'built-ins/RegExp/unicodeSets/generated/property-of-strings-escape-difference-character-class': [SKIP],
|
|
+ 'built-ins/RegExp/unicodeSets/generated/property-of-strings-escape-difference-character': [SKIP],
|
|
+ 'built-ins/RegExp/unicodeSets/generated/property-of-strings-escape-difference-character-property-escape': [SKIP],
|
|
+ 'built-ins/RegExp/unicodeSets/generated/property-of-strings-escape-difference-property-of-strings-escape': [SKIP],
|
|
+ 'built-ins/RegExp/unicodeSets/generated/property-of-strings-escape-difference-string-literal': [SKIP],
|
|
+ 'built-ins/RegExp/unicodeSets/generated/property-of-strings-escape-intersection-character-class-escape': [SKIP],
|
|
+ 'built-ins/RegExp/unicodeSets/generated/property-of-strings-escape-intersection-character-class': [SKIP],
|
|
+ 'built-ins/RegExp/unicodeSets/generated/property-of-strings-escape-intersection-character': [SKIP],
|
|
+ 'built-ins/RegExp/unicodeSets/generated/property-of-strings-escape-intersection-character-property-escape': [SKIP],
|
|
+ 'built-ins/RegExp/unicodeSets/generated/property-of-strings-escape-intersection-property-of-strings-escape': [SKIP],
|
|
+ 'built-ins/RegExp/unicodeSets/generated/property-of-strings-escape-intersection-string-literal': [SKIP],
|
|
+ 'built-ins/RegExp/unicodeSets/generated/property-of-strings-escape-union-character-class-escape': [SKIP],
|
|
+ 'built-ins/RegExp/unicodeSets/generated/property-of-strings-escape-union-character-class': [SKIP],
|
|
+ 'built-ins/RegExp/unicodeSets/generated/property-of-strings-escape-union-character': [SKIP],
|
|
+ 'built-ins/RegExp/unicodeSets/generated/property-of-strings-escape-union-character-property-escape': [SKIP],
|
|
+ 'built-ins/RegExp/unicodeSets/generated/property-of-strings-escape-union-property-of-strings-escape': [SKIP],
|
|
+ 'built-ins/RegExp/unicodeSets/generated/property-of-strings-escape-union-string-literal': [SKIP],
|
|
+ 'built-ins/RegExp/unicodeSets/generated/string-literal-difference-character-property-escape': [SKIP],
|
|
+ 'built-ins/RegExp/unicodeSets/generated/string-literal-difference-property-of-strings-escape': [SKIP],
|
|
+ 'built-ins/RegExp/unicodeSets/generated/string-literal-intersection-character-property-escape': [SKIP],
|
|
+ 'built-ins/RegExp/unicodeSets/generated/string-literal-intersection-property-of-strings-escape': [SKIP],
|
|
+ 'built-ins/RegExp/unicodeSets/generated/string-literal-union-character-property-escape': [SKIP],
|
|
+ 'built-ins/RegExp/unicodeSets/generated/string-literal-union-property-of-strings-escape': [SKIP],
|
|
|
|
# Unicode in identifiers.
|
|
'language/identifiers/part-unicode-*': [FAIL],
|