diff --git a/features.txt b/features.txt index 335651e62ab..1a845d55cf4 100644 --- a/features.txt +++ b/features.txt @@ -15,10 +15,6 @@ # https://github.com/tc39/proposal-intl-locale-info Intl.Locale-info -# FinalizationRegistry#cleanupSome -# https://github.com/tc39/proposal-cleanup-some -FinalizationRegistry.prototype.cleanupSome - # Intl.NumberFormat V3 # https://github.com/tc39/proposal-intl-numberformat-v3 Intl.NumberFormat-v3 diff --git a/harness/async-gc.js b/harness/async-gc.js deleted file mode 100644 index af4ab2075f7..00000000000 --- a/harness/async-gc.js +++ /dev/null @@ -1,57 +0,0 @@ -// Copyright (C) 2019 Ecma International. All rights reserved. -// This code is governed by the BSD license found in the LICENSE file. -/*--- -description: > - Collection of functions used to capture references cleanup from garbage collectors -features: [FinalizationRegistry.prototype.cleanupSome, FinalizationRegistry, Symbol, async-functions] -flags: [non-deterministic] -defines: [asyncGC, asyncGCDeref, resolveAsyncGC] ----*/ - -function asyncGC(...targets) { - var finalizationRegistry = new FinalizationRegistry(() => {}); - var length = targets.length; - - for (let target of targets) { - finalizationRegistry.register(target, 'target'); - target = null; - } - - targets = null; - - return Promise.resolve('tick').then(() => asyncGCDeref()).then(() => { - var names = []; - - // consume iterator to capture names - finalizationRegistry.cleanupSome(name => { names.push(name); }); - - if (!names || names.length != length) { - throw asyncGC.notCollected; - } - }); -} - -asyncGC.notCollected = Symbol('Object was not collected'); - -async function asyncGCDeref() { - var trigger; - - // TODO: Remove this when $262.clearKeptObject becomes documented and required - if ($262.clearKeptObjects) { - trigger = $262.clearKeptObjects(); - } - - await $262.gc(); - - return Promise.resolve(trigger); -} - -function resolveAsyncGC(err) { - if (err === asyncGC.notCollected) { - // Do not fail as GC can't provide necessary resources. - $DONE(); - return; - } - - $DONE(err); -} diff --git a/harness/compareArray.js b/harness/compareArray.js index e8d59f28702..61aa696c528 100644 --- a/harness/compareArray.js +++ b/harness/compareArray.js @@ -37,14 +37,14 @@ assert.compareArray = function(actual, expected, message) { message = message.toString(); } - assert(actual != null, `First argument shouldn't be nullish. ${message}`); - assert(expected != null, `Second argument shouldn't be nullish. ${message}`); + assert(actual != null, `Actual argument shouldn't be nullish. ${message}`); + assert(expected != null, `Expected argument shouldn't be nullish. ${message}`); var format = compareArray.format; var result = compareArray(actual, expected); // The following prevents actual and expected from being iterated and evaluated // more than once unless absolutely necessary. if (!result) { - assert(false, `Expected ${format(actual)} and ${format(expected)} to have the same contents. ${message}`); + assert(false, `Actual ${format(actual)} and expected ${format(expected)} should have the the same contents. ${message}`); } }; diff --git a/harness/propertyHelper.js b/harness/propertyHelper.js index 0e0e86f4453..8dbed5aee61 100644 --- a/harness/propertyHelper.js +++ b/harness/propertyHelper.js @@ -17,6 +17,16 @@ defines: // @ts-check +// Capture primordial functions and receiver-uncurried primordial methods that +// are used in verification but might be destroyed *by* that process itself. +var __isArray = Array.isArray; +var __defineProperty = Object.defineProperty; +var __join = Function.prototype.call.bind(Array.prototype.join); +var __push = Function.prototype.call.bind(Array.prototype.push); +var __hasOwnProperty = Function.prototype.call.bind(Object.prototype.hasOwnProperty); +var __propertyIsEnumerable = Function.prototype.call.bind(Object.prototype.propertyIsEnumerable); +var nonIndexNumericPropertyName = Math.pow(2, 32) - 1; + /** * @param {object} obj * @param {string|symbol} name @@ -46,7 +56,7 @@ function verifyProperty(obj, name, desc, options) { } assert( - Object.prototype.hasOwnProperty.call(obj, name), + __hasOwnProperty(obj, name), "obj should have an own property " + nameStr ); @@ -77,47 +87,48 @@ function verifyProperty(obj, name, desc, options) { var failures = []; - if (Object.prototype.hasOwnProperty.call(desc, 'value')) { + if (__hasOwnProperty(desc, 'value')) { if (!isSameValue(desc.value, originalDesc.value)) { - failures.push("descriptor value should be " + desc.value); + __push(failures, "descriptor value should be " + desc.value); } if (!isSameValue(desc.value, obj[name])) { - failures.push("object value should be " + desc.value); + __push(failures, "object value should be " + desc.value); } } - if (Object.prototype.hasOwnProperty.call(desc, 'enumerable')) { + if (__hasOwnProperty(desc, 'enumerable')) { if (desc.enumerable !== originalDesc.enumerable || desc.enumerable !== isEnumerable(obj, name)) { - failures.push('descriptor should ' + (desc.enumerable ? '' : 'not ') + 'be enumerable'); + __push(failures, 'descriptor should ' + (desc.enumerable ? '' : 'not ') + 'be enumerable'); } } - if (Object.prototype.hasOwnProperty.call(desc, 'writable')) { + // Operations past this point are potentially destructive! + + if (__hasOwnProperty(desc, 'writable')) { if (desc.writable !== originalDesc.writable || desc.writable !== isWritable(obj, name)) { - failures.push('descriptor should ' + (desc.writable ? '' : 'not ') + 'be writable'); + __push(failures, 'descriptor should ' + (desc.writable ? '' : 'not ') + 'be writable'); } } - if (Object.prototype.hasOwnProperty.call(desc, 'configurable')) { + if (__hasOwnProperty(desc, 'configurable')) { if (desc.configurable !== originalDesc.configurable || desc.configurable !== isConfigurable(obj, name)) { - failures.push('descriptor should ' + (desc.configurable ? '' : 'not ') + 'be configurable'); + __push(failures, 'descriptor should ' + (desc.configurable ? '' : 'not ') + 'be configurable'); } } - assert(!failures.length, failures.join('; ')); + assert(!failures.length, __join(failures, '; ')); if (options && options.restore) { - Object.defineProperty(obj, name, originalDesc); + __defineProperty(obj, name, originalDesc); } return true; } function isConfigurable(obj, name) { - var hasOwnProperty = Object.prototype.hasOwnProperty; try { delete obj[name]; } catch (e) { @@ -125,7 +136,7 @@ function isConfigurable(obj, name) { throw new Test262Error("Expected TypeError, got " + e); } } - return !hasOwnProperty.call(obj, name); + return !__hasOwnProperty(obj, name); } function isEnumerable(obj, name) { @@ -143,9 +154,7 @@ function isEnumerable(obj, name) { stringCheck = true; } - return stringCheck && - Object.prototype.hasOwnProperty.call(obj, name) && - Object.prototype.propertyIsEnumerable.call(obj, name); + return stringCheck && __hasOwnProperty(obj, name) && __propertyIsEnumerable(obj, name); } function isSameValue(a, b) { @@ -155,16 +164,19 @@ function isSameValue(a, b) { return a === b; } -var __isArray = Array.isArray; function isWritable(obj, name, verifyProp, value) { var unlikelyValue = __isArray(obj) && name === "length" ? - Math.pow(2, 32) - 1 : + nonIndexNumericPropertyName : "unlikelyValue"; var newValue = value || unlikelyValue; - var hadValue = Object.prototype.hasOwnProperty.call(obj, name); + var hadValue = __hasOwnProperty(obj, name); var oldValue = obj[name]; var writeSucceeded; + if (arguments.length < 4 && newValue === oldValue) { + newValue = newValue + "2"; + } + try { obj[name] = newValue; } catch (e) { diff --git a/harness/resizableArrayBufferUtils.js b/harness/resizableArrayBufferUtils.js index db58f521f84..9dad8ccb83f 100644 --- a/harness/resizableArrayBufferUtils.js +++ b/harness/resizableArrayBufferUtils.js @@ -9,7 +9,7 @@ defines: - ctors - MyBigInt64Array - CreateResizableArrayBuffer - - WriteToTypedArray + - MayNeedBigInt - Convert - ToNumbers - CreateRabForTest @@ -74,14 +74,6 @@ function CreateResizableArrayBuffer(byteLength, maxByteLength) { return new ArrayBuffer(byteLength, { maxByteLength: maxByteLength }); } -function WriteToTypedArray(array, index, value) { - if (array instanceof BigInt64Array || array instanceof BigUint64Array) { - array[index] = BigInt(value); - } else { - array[index] = value; - } -} - function Convert(item) { if (typeof item == 'bigint') { return Number(item); @@ -98,12 +90,21 @@ function ToNumbers(array) { return result; } +function MayNeedBigInt(ta, n) { + assert.sameValue(typeof n, 'number'); + if ((BigInt64Array !== 'undefined' && ta instanceof BigInt64Array) + || (BigUint64Array !== 'undefined' && ta instanceof BigUint64Array)) { + return BigInt(n); + } + return n; +} + function CreateRabForTest(ctor) { const rab = CreateResizableArrayBuffer(4 * ctor.BYTES_PER_ELEMENT, 8 * ctor.BYTES_PER_ELEMENT); // Write some data into the array. const taWrite = new ctor(rab); for (let i = 0; i < 4; ++i) { - WriteToTypedArray(taWrite, i, 2 * i); + taWrite[i] = MayNeedBigInt(taWrite, 2 * i); } return rab; } diff --git a/test/built-ins/Array/prototype/at/typed-array-resizable-buffer.js b/test/built-ins/Array/prototype/at/typed-array-resizable-buffer.js index 238ebab1605..a4f8afbdcc8 100644 --- a/test/built-ins/Array/prototype/at/typed-array-resizable-buffer.js +++ b/test/built-ins/Array/prototype/at/typed-array-resizable-buffer.js @@ -24,7 +24,7 @@ for (let ctor of ctors) { // Write some data into the array. let ta_write = new ctor(rab); for (let i = 0; i < 4; ++i) { - WriteToTypedArray(ta_write, i, i); + ta_write[i] = MayNeedBigInt(ta_write, i); } assert.sameValue(ArrayAtHelper(fixedLength, -1), 3); assert.sameValue(ArrayAtHelper(lengthTracking, -1), 3); diff --git a/test/built-ins/Array/prototype/copyWithin/resizable-buffer.js b/test/built-ins/Array/prototype/copyWithin/resizable-buffer.js index 02918d29806..7c0cda3a29d 100644 --- a/test/built-ins/Array/prototype/copyWithin/resizable-buffer.js +++ b/test/built-ins/Array/prototype/copyWithin/resizable-buffer.js @@ -24,7 +24,7 @@ for (let ctor of ctors) { // Write some data into the array. const taWrite = new ctor(rab); for (let i = 0; i < 4; ++i) { - WriteToTypedArray(taWrite, i, i); + taWrite[i] = MayNeedBigInt(taWrite, i); } // Orig. array: [0, 1, 2, 3] @@ -41,7 +41,7 @@ for (let ctor of ctors) { 3 ]); for (let i = 0; i < 4; ++i) { - WriteToTypedArray(taWrite, i, i); + taWrite[i] = MayNeedBigInt(taWrite, i); } ArrayCopyWithinHelper(fixedLengthWithOffset, 0, 1); assert.compareArray(ToNumbers(fixedLengthWithOffset), [ @@ -49,7 +49,7 @@ for (let ctor of ctors) { 3 ]); for (let i = 0; i < 4; ++i) { - WriteToTypedArray(taWrite, i, i); + taWrite[i] = MayNeedBigInt(taWrite, i); } ArrayCopyWithinHelper(lengthTracking, 0, 2); assert.compareArray(ToNumbers(lengthTracking), [ @@ -67,7 +67,7 @@ for (let ctor of ctors) { // Shrink so that fixed length TAs go out of bounds. rab.resize(3 * ctor.BYTES_PER_ELEMENT); for (let i = 0; i < 3; ++i) { - WriteToTypedArray(taWrite, i, i); + taWrite[i] = MayNeedBigInt(taWrite, i); } // Orig. array: [0, 1, 2] @@ -99,7 +99,7 @@ for (let ctor of ctors) { // Shrink so that the TAs with offset go out of bounds. rab.resize(1 * ctor.BYTES_PER_ELEMENT); - WriteToTypedArray(taWrite, 0, 0); + taWrite[0] = MayNeedBigInt(taWrite, 0); ArrayCopyWithinHelper(fixedLength, 0, 1, 1); ArrayCopyWithinHelper(fixedLengthWithOffset, 0, 1, 1); ArrayCopyWithinHelper(lengthTrackingWithOffset, 0, 1, 1); @@ -121,7 +121,7 @@ for (let ctor of ctors) { // Grow so that all TAs are back in-bounds. rab.resize(6 * ctor.BYTES_PER_ELEMENT); for (let i = 0; i < 6; ++i) { - WriteToTypedArray(taWrite, i, i); + taWrite[i] = MayNeedBigInt(taWrite, i); } // Orig. array: [0, 1, 2, 3, 4, 5] @@ -138,7 +138,7 @@ for (let ctor of ctors) { 3 ]); for (let i = 0; i < 6; ++i) { - WriteToTypedArray(taWrite, i, i); + taWrite[i] = MayNeedBigInt(taWrite, i); } ArrayCopyWithinHelper(fixedLengthWithOffset, 0, 1); assert.compareArray(ToNumbers(fixedLengthWithOffset), [ @@ -146,7 +146,7 @@ for (let ctor of ctors) { 3 ]); for (let i = 0; i < 6; ++i) { - WriteToTypedArray(taWrite, i, i); + taWrite[i] = MayNeedBigInt(taWrite, i); } // [0, 1, 2, 3, 4, 5, ...] << lengthTracking @@ -161,7 +161,7 @@ for (let ctor of ctors) { 5 ]); for (let i = 0; i < 6; ++i) { - WriteToTypedArray(taWrite, i, i); + taWrite[i] = MayNeedBigInt(taWrite, i); } // [2, 3, 4, 5, ...] << lengthTrackingWithOffset diff --git a/test/built-ins/Array/prototype/entries/resizable-buffer.js b/test/built-ins/Array/prototype/entries/resizable-buffer.js index 7f20fa608c4..9563fb0fdf8 100644 --- a/test/built-ins/Array/prototype/entries/resizable-buffer.js +++ b/test/built-ins/Array/prototype/entries/resizable-buffer.js @@ -35,7 +35,7 @@ for (let ctor of ctors) { // Write some data into the array. const taWrite = new ctor(rab); for (let i = 0; i < 4; ++i) { - WriteToTypedArray(taWrite, i, 2 * i); + taWrite[i] = MayNeedBigInt(taWrite, 2 * i); } // Orig. array: [0, 2, 4, 6] @@ -128,7 +128,7 @@ for (let ctor of ctors) { // Grow so that all TAs are back in-bounds. rab.resize(6 * ctor.BYTES_PER_ELEMENT); for (let i = 0; i < 6; ++i) { - WriteToTypedArray(taWrite, i, 2 * i); + taWrite[i] = MayNeedBigInt(taWrite, 2 * i); } // Orig. array: [0, 2, 4, 6, 8, 10] diff --git a/test/built-ins/Array/prototype/every/resizable-buffer.js b/test/built-ins/Array/prototype/every/resizable-buffer.js index b6f68e0f696..c2f0fe680b7 100644 --- a/test/built-ins/Array/prototype/every/resizable-buffer.js +++ b/test/built-ins/Array/prototype/every/resizable-buffer.js @@ -20,7 +20,7 @@ for (let ctor of ctors) { // Write some data into the array. const taWrite = new ctor(rab); for (let i = 0; i < 4; ++i) { - WriteToTypedArray(taWrite, i, 2 * i); + taWrite[i] = MayNeedBigInt(taWrite, 2 * i); } // Orig. array: [0, 2, 4, 6] @@ -86,7 +86,7 @@ for (let ctor of ctors) { // Grow so that all TAs are back in-bounds. rab.resize(6 * ctor.BYTES_PER_ELEMENT); for (let i = 0; i < 6; ++i) { - WriteToTypedArray(taWrite, i, 2 * i); + taWrite[i] = MayNeedBigInt(taWrite, 2 * i); } // Orig. array: [0, 2, 4, 6, 8, 10] diff --git a/test/built-ins/Array/prototype/filter/resizable-buffer.js b/test/built-ins/Array/prototype/filter/resizable-buffer.js index df38c657916..6e5a291971e 100644 --- a/test/built-ins/Array/prototype/filter/resizable-buffer.js +++ b/test/built-ins/Array/prototype/filter/resizable-buffer.js @@ -19,7 +19,7 @@ for (let ctor of ctors) { // Write some data into the array. const taWrite = new ctor(rab); for (let i = 0; i < 4; ++i) { - WriteToTypedArray(taWrite, i, i); + taWrite[i] = MayNeedBigInt(taWrite, i); } // Orig. array: [0, 1, 2, 3] @@ -77,7 +77,7 @@ for (let ctor of ctors) { // Grow so that all TAs are back in-bounds. rab.resize(6 * ctor.BYTES_PER_ELEMENT); for (let i = 0; i < 6; ++i) { - WriteToTypedArray(taWrite, i, i); + taWrite[i] = MayNeedBigInt(taWrite, i); } // Orig. array: [0, 1, 2, 3, 4, 5] diff --git a/test/built-ins/Array/prototype/find/resizable-buffer.js b/test/built-ins/Array/prototype/find/resizable-buffer.js index bcf793ebe59..45217f3db07 100644 --- a/test/built-ins/Array/prototype/find/resizable-buffer.js +++ b/test/built-ins/Array/prototype/find/resizable-buffer.js @@ -20,7 +20,7 @@ for (let ctor of ctors) { // Write some data into the array. const taWrite = new ctor(rab); for (let i = 0; i < 4; ++i) { - WriteToTypedArray(taWrite, i, 2 * i); + taWrite[i] = MayNeedBigInt(taWrite, 2 * i); } // Orig. array: [0, 2, 4, 6] @@ -69,10 +69,10 @@ for (let ctor of ctors) { // Grow so that all TAs are back in-bounds. rab.resize(6 * ctor.BYTES_PER_ELEMENT); for (let i = 0; i < 4; ++i) { - WriteToTypedArray(taWrite, i, 0); + taWrite[i] = MayNeedBigInt(taWrite, 0); } - WriteToTypedArray(taWrite, 4, 2); - WriteToTypedArray(taWrite, 5, 4); + taWrite[4] = MayNeedBigInt(taWrite, 2); + taWrite[5] = MayNeedBigInt(taWrite, 4); // Orig. array: [0, 0, 0, 0, 2, 4] // [0, 0, 0, 0] << fixedLength diff --git a/test/built-ins/Array/prototype/findIndex/resizable-buffer.js b/test/built-ins/Array/prototype/findIndex/resizable-buffer.js index 09e4191583c..4826e06c964 100644 --- a/test/built-ins/Array/prototype/findIndex/resizable-buffer.js +++ b/test/built-ins/Array/prototype/findIndex/resizable-buffer.js @@ -20,7 +20,7 @@ for (let ctor of ctors) { // Write some data into the array. const taWrite = new ctor(rab); for (let i = 0; i < 4; ++i) { - WriteToTypedArray(taWrite, i, 2 * i); + taWrite[i] = MayNeedBigInt(taWrite, 2 * i); } // Orig. array: [0, 2, 4, 6] @@ -69,10 +69,10 @@ for (let ctor of ctors) { // Grow so that all TAs are back in-bounds. rab.resize(6 * ctor.BYTES_PER_ELEMENT); for (let i = 0; i < 4; ++i) { - WriteToTypedArray(taWrite, i, 0); + taWrite[i] = MayNeedBigInt(taWrite, 0); } - WriteToTypedArray(taWrite, 4, 2); - WriteToTypedArray(taWrite, 5, 4); + taWrite[4] = MayNeedBigInt(taWrite, 2); + taWrite[5] = MayNeedBigInt(taWrite, 4); // Orig. array: [0, 0, 0, 0, 2, 4] // [0, 0, 0, 0] << fixedLength diff --git a/test/built-ins/Array/prototype/findLast/resizable-buffer.js b/test/built-ins/Array/prototype/findLast/resizable-buffer.js index 2c716576e7c..8eeb665a276 100644 --- a/test/built-ins/Array/prototype/findLast/resizable-buffer.js +++ b/test/built-ins/Array/prototype/findLast/resizable-buffer.js @@ -20,7 +20,7 @@ for (let ctor of ctors) { // Write some data into the array. const taWrite = new ctor(rab); for (let i = 0; i < 4; ++i) { - WriteToTypedArray(taWrite, i, 2 * i); + taWrite[i] = MayNeedBigInt(taWrite, 2 * i); } // Orig. array: [0, 2, 4, 6] @@ -69,10 +69,10 @@ for (let ctor of ctors) { // Grow so that all TAs are back in-bounds. rab.resize(6 * ctor.BYTES_PER_ELEMENT); for (let i = 0; i < 4; ++i) { - WriteToTypedArray(taWrite, i, 0); + taWrite[i] = MayNeedBigInt(taWrite, 0); } - WriteToTypedArray(taWrite, 4, 2); - WriteToTypedArray(taWrite, 5, 4); + taWrite[4] = MayNeedBigInt(taWrite, 2); + taWrite[5] = MayNeedBigInt(taWrite, 4); // Orig. array: [0, 0, 0, 0, 2, 4] // [0, 0, 0, 0] << fixedLength diff --git a/test/built-ins/Array/prototype/findLastIndex/resizable-buffer.js b/test/built-ins/Array/prototype/findLastIndex/resizable-buffer.js index f55f0f3f801..9b94240fb6f 100644 --- a/test/built-ins/Array/prototype/findLastIndex/resizable-buffer.js +++ b/test/built-ins/Array/prototype/findLastIndex/resizable-buffer.js @@ -20,7 +20,7 @@ for (let ctor of ctors) { // Write some data into the array. const taWrite = new ctor(rab); for (let i = 0; i < 4; ++i) { - WriteToTypedArray(taWrite, i, 2 * i); + taWrite[i] = MayNeedBigInt(taWrite, 2 * i); } // Orig. array: [0, 2, 4, 6] @@ -69,10 +69,10 @@ for (let ctor of ctors) { // Grow so that all TAs are back in-bounds. rab.resize(6 * ctor.BYTES_PER_ELEMENT); for (let i = 0; i < 4; ++i) { - WriteToTypedArray(taWrite, i, 0); + taWrite[i] = MayNeedBigInt(taWrite, 0); } - WriteToTypedArray(taWrite, 4, 2); - WriteToTypedArray(taWrite, 5, 4); + taWrite[4] = MayNeedBigInt(taWrite, 2); + taWrite[5] = MayNeedBigInt(taWrite, 4); // Orig. array: [0, 0, 0, 0, 2, 4] // [0, 0, 0, 0] << fixedLength diff --git a/test/built-ins/Array/prototype/forEach/resizable-buffer.js b/test/built-ins/Array/prototype/forEach/resizable-buffer.js index 3b3936f90ed..57523ddc271 100644 --- a/test/built-ins/Array/prototype/forEach/resizable-buffer.js +++ b/test/built-ins/Array/prototype/forEach/resizable-buffer.js @@ -19,7 +19,7 @@ for (let ctor of ctors) { // Write some data into the array. const taWrite = new ctor(rab); for (let i = 0; i < 4; ++i) { - WriteToTypedArray(taWrite, i, 2 * i); + taWrite[i] = MayNeedBigInt(taWrite, 2 * i); } // Orig. array: [0, 2, 4, 6] @@ -91,7 +91,7 @@ for (let ctor of ctors) { // Grow so that all TAs are back in-bounds. rab.resize(6 * ctor.BYTES_PER_ELEMENT); for (let i = 0; i < 6; ++i) { - WriteToTypedArray(taWrite, i, 2 * i); + taWrite[i] = MayNeedBigInt(taWrite, 2 * i); } // Orig. array: [0, 2, 4, 6, 8, 10] diff --git a/test/built-ins/Array/prototype/includes/coerced-searchelement-fromindex-resize.js b/test/built-ins/Array/prototype/includes/coerced-searchelement-fromindex-resize.js index 96c5ca2ff41..965a23ddf61 100644 --- a/test/built-ins/Array/prototype/includes/coerced-searchelement-fromindex-resize.js +++ b/test/built-ins/Array/prototype/includes/coerced-searchelement-fromindex-resize.js @@ -10,13 +10,6 @@ includes: [resizableArrayBufferUtils.js] features: [resizable-arraybuffer, Array.prototype.includes] ---*/ -function MayNeedBigInt(ta, n) { - if (typeof n == 'number' && (ta instanceof BigInt64Array || ta instanceof BigUint64Array)) { - return BigInt(n); - } - return n; -} - for (let ctor of ctors) { const rab = CreateResizableArrayBuffer(4 * ctor.BYTES_PER_ELEMENT, 8 * ctor.BYTES_PER_ELEMENT); const fixedLength = new ctor(rab, 0, 4); @@ -61,7 +54,7 @@ for (let ctor of ctors) { const rab = CreateResizableArrayBuffer(4 * ctor.BYTES_PER_ELEMENT, 8 * ctor.BYTES_PER_ELEMENT); const lengthTracking = new ctor(rab); for (let i = 0; i < 4; ++i) { - WriteToTypedArray(lengthTracking, i, 1); + lengthTracking[i] = MayNeedBigInt(lengthTracking, 1); } let evil = { valueOf: () => { @@ -77,7 +70,7 @@ for (let ctor of ctors) { for (let ctor of ctors) { const rab = CreateResizableArrayBuffer(4 * ctor.BYTES_PER_ELEMENT, 8 * ctor.BYTES_PER_ELEMENT); const lengthTracking = new ctor(rab); - WriteToTypedArray(lengthTracking, 0, 1); + lengthTracking[0] = MayNeedBigInt(lengthTracking, 1); let evil = { valueOf: () => { rab.resize(6 * ctor.BYTES_PER_ELEMENT); diff --git a/test/built-ins/Array/prototype/includes/resizable-buffer.js b/test/built-ins/Array/prototype/includes/resizable-buffer.js index b9a78cef9af..c31d5827d2f 100644 --- a/test/built-ins/Array/prototype/includes/resizable-buffer.js +++ b/test/built-ins/Array/prototype/includes/resizable-buffer.js @@ -9,13 +9,6 @@ includes: [resizableArrayBufferUtils.js] features: [resizable-arraybuffer, Array.prototype.includes] ---*/ -function MayNeedBigInt(ta, n) { - if (typeof n == 'number' && (ta instanceof BigInt64Array || ta instanceof BigUint64Array)) { - return BigInt(n); - } - return n; -} - for (let ctor of ctors) { const rab = CreateResizableArrayBuffer(4 * ctor.BYTES_PER_ELEMENT, 8 * ctor.BYTES_PER_ELEMENT); const fixedLength = new ctor(rab, 0, 4); @@ -26,7 +19,7 @@ for (let ctor of ctors) { // Write some data into the array. const taWrite = new ctor(rab); for (let i = 0; i < 4; ++i) { - WriteToTypedArray(taWrite, i, 2 * i); + taWrite[i] = MayNeedBigInt(taWrite, 2 * i); } // Orig. array: [0, 2, 4, 6] @@ -100,7 +93,7 @@ for (let ctor of ctors) { // Grow so that all TAs are back in-bounds. rab.resize(6 * ctor.BYTES_PER_ELEMENT); for (let i = 0; i < 6; ++i) { - WriteToTypedArray(taWrite, i, 2 * i); + taWrite[i] = MayNeedBigInt(taWrite, 2 * i); } // Orig. array: [0, 2, 4, 6, 8, 10] diff --git a/test/built-ins/Array/prototype/indexOf/coerced-searchelement-fromindex-grow.js b/test/built-ins/Array/prototype/indexOf/coerced-searchelement-fromindex-grow.js index fc1c3e0f7d1..cc0b2b7dcc2 100644 --- a/test/built-ins/Array/prototype/indexOf/coerced-searchelement-fromindex-grow.js +++ b/test/built-ins/Array/prototype/indexOf/coerced-searchelement-fromindex-grow.js @@ -10,19 +10,12 @@ includes: [resizableArrayBufferUtils.js] features: [resizable-arraybuffer] ---*/ -function MayNeedBigInt(ta, n) { - if (typeof n == 'number' && (ta instanceof BigInt64Array || ta instanceof BigUint64Array)) { - return BigInt(n); - } - return n; -} - // Growing + length-tracking TA. for (let ctor of ctors) { const rab = CreateResizableArrayBuffer(4 * ctor.BYTES_PER_ELEMENT, 8 * ctor.BYTES_PER_ELEMENT); const lengthTracking = new ctor(rab); for (let i = 0; i < 4; ++i) { - WriteToTypedArray(lengthTracking, i, 1); + lengthTracking[i] = MayNeedBigInt(lengthTracking, 1); } let evil = { valueOf: () => { @@ -40,7 +33,7 @@ for (let ctor of ctors) { for (let ctor of ctors) { const rab = CreateResizableArrayBuffer(4 * ctor.BYTES_PER_ELEMENT, 8 * ctor.BYTES_PER_ELEMENT); const lengthTracking = new ctor(rab); - WriteToTypedArray(lengthTracking, 0, 1); + lengthTracking[0] = MayNeedBigInt(lengthTracking, 1); let evil = { valueOf: () => { rab.resize(6 * ctor.BYTES_PER_ELEMENT); diff --git a/test/built-ins/Array/prototype/indexOf/coerced-searchelement-fromindex-shrink.js b/test/built-ins/Array/prototype/indexOf/coerced-searchelement-fromindex-shrink.js index 9e803e491a2..ab4c4ae4d50 100644 --- a/test/built-ins/Array/prototype/indexOf/coerced-searchelement-fromindex-shrink.js +++ b/test/built-ins/Array/prototype/indexOf/coerced-searchelement-fromindex-shrink.js @@ -10,13 +10,6 @@ includes: [resizableArrayBufferUtils.js] features: [resizable-arraybuffer] ---*/ -function MayNeedBigInt(ta, n) { - if (typeof n == 'number' && (ta instanceof BigInt64Array || ta instanceof BigUint64Array)) { - return BigInt(n); - } - return n; -} - // Shrinking + fixed-length TA. for (let ctor of ctors) { const rab = CreateResizableArrayBuffer(4 * ctor.BYTES_PER_ELEMENT, 8 * ctor.BYTES_PER_ELEMENT); @@ -52,7 +45,7 @@ for (let ctor of ctors) { const rab = CreateResizableArrayBuffer(4 * ctor.BYTES_PER_ELEMENT, 8 * ctor.BYTES_PER_ELEMENT); const lengthTracking = new ctor(rab); for (let i = 0; i < 4; ++i) { - WriteToTypedArray(lengthTracking, i, i); + lengthTracking[i] = MayNeedBigInt(lengthTracking, i); } let evil = { valueOf: () => { diff --git a/test/built-ins/Array/prototype/indexOf/resizable-buffer.js b/test/built-ins/Array/prototype/indexOf/resizable-buffer.js index 74f232dd2ce..cb66e19be6e 100644 --- a/test/built-ins/Array/prototype/indexOf/resizable-buffer.js +++ b/test/built-ins/Array/prototype/indexOf/resizable-buffer.js @@ -9,13 +9,6 @@ includes: [resizableArrayBufferUtils.js] features: [resizable-arraybuffer] ---*/ -function MayNeedBigInt(ta, n) { - if (typeof n == 'number' && (ta instanceof BigInt64Array || ta instanceof BigUint64Array)) { - return BigInt(n); - } - return n; -} - for (let ctor of ctors) { const rab = CreateResizableArrayBuffer(4 * ctor.BYTES_PER_ELEMENT, 8 * ctor.BYTES_PER_ELEMENT); const fixedLength = new ctor(rab, 0, 4); @@ -26,7 +19,7 @@ for (let ctor of ctors) { // Write some data into the array. const taWrite = new ctor(rab); for (let i = 0; i < 4; ++i) { - WriteToTypedArray(taWrite, i, Math.floor(i / 2)); + taWrite[i] = MayNeedBigInt(taWrite, Math.floor(i / 2)); } // Orig. array: [0, 0, 1, 1] @@ -98,7 +91,7 @@ for (let ctor of ctors) { // Grow so that all TAs are back in-bounds. rab.resize(6 * ctor.BYTES_PER_ELEMENT); for (let i = 0; i < 6; ++i) { - WriteToTypedArray(taWrite, i, Math.floor(i / 2)); + taWrite[i] = MayNeedBigInt(taWrite, Math.floor(i / 2)); } // Orig. array: [0, 0, 1, 1, 2, 2] diff --git a/test/built-ins/Array/prototype/join/resizable-buffer.js b/test/built-ins/Array/prototype/join/resizable-buffer.js index e28414ab007..9eb672bb846 100644 --- a/test/built-ins/Array/prototype/join/resizable-buffer.js +++ b/test/built-ins/Array/prototype/join/resizable-buffer.js @@ -20,7 +20,7 @@ for (let ctor of ctors) { // Write some data into the array. for (let i = 0; i < 4; ++i) { - WriteToTypedArray(taWrite, i, 2 * i); + taWrite[i] = MayNeedBigInt(taWrite, 2 * i); } // Orig. array: [0, 2, 4, 6] @@ -66,7 +66,7 @@ for (let ctor of ctors) { // Grow so that all TAs are back in-bounds. rab.resize(6 * ctor.BYTES_PER_ELEMENT); for (let i = 0; i < 6; ++i) { - WriteToTypedArray(taWrite, i, 2 * i); + taWrite[i] = MayNeedBigInt(taWrite, 2 * i); } // Orig. array: [0, 2, 4, 6, 8, 10] diff --git a/test/built-ins/Array/prototype/keys/resizable-buffer.js b/test/built-ins/Array/prototype/keys/resizable-buffer.js index 295ce3612bd..de1d7436e23 100644 --- a/test/built-ins/Array/prototype/keys/resizable-buffer.js +++ b/test/built-ins/Array/prototype/keys/resizable-buffer.js @@ -20,7 +20,7 @@ for (let ctor of ctors) { // Write some data into the array. const taWrite = new ctor(rab); for (let i = 0; i < 4; ++i) { - WriteToTypedArray(taWrite, i, 2 * i); + taWrite[i] = MayNeedBigInt(taWrite, 2 * i); } assert.compareArray(Array.from(Array.prototype.keys.call(fixedLength)), [ @@ -106,7 +106,7 @@ for (let ctor of ctors) { // Grow so that all TAs are back in-bounds. rab.resize(6 * ctor.BYTES_PER_ELEMENT); for (let i = 0; i < 6; ++i) { - WriteToTypedArray(taWrite, i, 2 * i); + taWrite[i] = MayNeedBigInt(taWrite, 2 * i); } // Orig. array: [0, 2, 4, 6, 8, 10] diff --git a/test/built-ins/Array/prototype/lastIndexOf/coerced-position-grow.js b/test/built-ins/Array/prototype/lastIndexOf/coerced-position-grow.js index 76f95eed3fd..f6dffe01108 100644 --- a/test/built-ins/Array/prototype/lastIndexOf/coerced-position-grow.js +++ b/test/built-ins/Array/prototype/lastIndexOf/coerced-position-grow.js @@ -10,19 +10,12 @@ includes: [resizableArrayBufferUtils.js] features: [resizable-arraybuffer] ---*/ -function MayNeedBigInt(ta, n) { - if (typeof n == 'number' && (ta instanceof BigInt64Array || ta instanceof BigUint64Array)) { - return BigInt(n); - } - return n; -} - // Growing + length-tracking TA. for (let ctor of ctors) { const rab = CreateResizableArrayBuffer(4 * ctor.BYTES_PER_ELEMENT, 8 * ctor.BYTES_PER_ELEMENT); const lengthTracking = new ctor(rab); for (let i = 0; i < 4; ++i) { - WriteToTypedArray(lengthTracking, i, 1); + lengthTracking[i] = MayNeedBigInt(lengthTracking, 1); } let evil = { valueOf: () => { diff --git a/test/built-ins/Array/prototype/lastIndexOf/coerced-position-shrink.js b/test/built-ins/Array/prototype/lastIndexOf/coerced-position-shrink.js index 13e07043b40..517530e0a82 100644 --- a/test/built-ins/Array/prototype/lastIndexOf/coerced-position-shrink.js +++ b/test/built-ins/Array/prototype/lastIndexOf/coerced-position-shrink.js @@ -10,13 +10,6 @@ includes: [resizableArrayBufferUtils.js] features: [resizable-arraybuffer] ---*/ -function MayNeedBigInt(ta, n) { - if (typeof n == 'number' && (ta instanceof BigInt64Array || ta instanceof BigUint64Array)) { - return BigInt(n); - } - return n; -} - // Shrinking + fixed-length TA. for (let ctor of ctors) { const rab = CreateResizableArrayBuffer(4 * ctor.BYTES_PER_ELEMENT, 8 * ctor.BYTES_PER_ELEMENT); @@ -51,7 +44,7 @@ for (let ctor of ctors) { const rab = CreateResizableArrayBuffer(4 * ctor.BYTES_PER_ELEMENT, 8 * ctor.BYTES_PER_ELEMENT); const lengthTracking = new ctor(rab); for (let i = 0; i < 4; ++i) { - WriteToTypedArray(lengthTracking, i, i); + lengthTracking[i] = MayNeedBigInt(lengthTracking, i); } let evil = { valueOf: () => { diff --git a/test/built-ins/Array/prototype/lastIndexOf/resizable-buffer.js b/test/built-ins/Array/prototype/lastIndexOf/resizable-buffer.js index 5e93b685982..686b09903b1 100644 --- a/test/built-ins/Array/prototype/lastIndexOf/resizable-buffer.js +++ b/test/built-ins/Array/prototype/lastIndexOf/resizable-buffer.js @@ -10,13 +10,6 @@ includes: [resizableArrayBufferUtils.js] features: [resizable-arraybuffer] ---*/ -function MayNeedBigInt(ta, n) { - if (typeof n == 'number' && (ta instanceof BigInt64Array || ta instanceof BigUint64Array)) { - return BigInt(n); - } - return n; -} - for (let ctor of ctors) { const rab = CreateResizableArrayBuffer(4 * ctor.BYTES_PER_ELEMENT, 8 * ctor.BYTES_PER_ELEMENT); const fixedLength = new ctor(rab, 0, 4); @@ -27,7 +20,7 @@ for (let ctor of ctors) { // Write some data into the array. const taWrite = new ctor(rab); for (let i = 0; i < 4; ++i) { - WriteToTypedArray(taWrite, i, Math.floor(i / 2)); + taWrite[i] = MayNeedBigInt(taWrite, Math.floor(i / 2)); } // Orig. array: [0, 0, 1, 1] @@ -104,7 +97,7 @@ for (let ctor of ctors) { // Grow so that all TAs are back in-bounds. rab.resize(6 * ctor.BYTES_PER_ELEMENT); for (let i = 0; i < 6; ++i) { - WriteToTypedArray(taWrite, i, Math.floor(i / 2)); + taWrite[i] = MayNeedBigInt(taWrite, Math.floor(i / 2)); } // Orig. array: [0, 0, 1, 1, 2, 2] diff --git a/test/built-ins/Array/prototype/map/resizable-buffer.js b/test/built-ins/Array/prototype/map/resizable-buffer.js index e108395fcb1..2fbef3500ee 100644 --- a/test/built-ins/Array/prototype/map/resizable-buffer.js +++ b/test/built-ins/Array/prototype/map/resizable-buffer.js @@ -19,7 +19,7 @@ for (let ctor of ctors) { // Write some data into the array. const taWrite = new ctor(rab); for (let i = 0; i < taWrite.length; ++i) { - WriteToTypedArray(taWrite, i, 2 * i); + taWrite[i] = MayNeedBigInt(taWrite, 2 * i); } // Orig. array: [0, 2, 4, 6] @@ -105,7 +105,7 @@ for (let ctor of ctors) { // Grow so that all TAs are back in-bounds. rab.resize(6 * ctor.BYTES_PER_ELEMENT); for (let i = 0; i < 6; ++i) { - WriteToTypedArray(taWrite, i, 2 * i); + taWrite[i] = MayNeedBigInt(taWrite, 2 * i); } // Orig. array: [0, 2, 4, 6, 8, 10] diff --git a/test/built-ins/Array/prototype/reduce/resizable-buffer.js b/test/built-ins/Array/prototype/reduce/resizable-buffer.js index c03585e3cd1..9637a12e4ff 100644 --- a/test/built-ins/Array/prototype/reduce/resizable-buffer.js +++ b/test/built-ins/Array/prototype/reduce/resizable-buffer.js @@ -19,7 +19,7 @@ for (let ctor of ctors) { // Write some data into the array. const taWrite = new ctor(rab); for (let i = 0; i < 4; ++i) { - WriteToTypedArray(taWrite, i, 2 * i); + taWrite[i] = MayNeedBigInt(taWrite, 2 * i); } // Orig. array: [0, 2, 4, 6] @@ -90,7 +90,7 @@ for (let ctor of ctors) { // Grow so that all TAs are back in-bounds. rab.resize(6 * ctor.BYTES_PER_ELEMENT); for (let i = 0; i < 6; ++i) { - WriteToTypedArray(taWrite, i, 2 * i); + taWrite[i] = MayNeedBigInt(taWrite, 2 * i); } // Orig. array: [0, 2, 4, 6, 8, 10] diff --git a/test/built-ins/Array/prototype/reduceRight/resizable-buffer.js b/test/built-ins/Array/prototype/reduceRight/resizable-buffer.js index a1fa69c6b00..7603636822f 100644 --- a/test/built-ins/Array/prototype/reduceRight/resizable-buffer.js +++ b/test/built-ins/Array/prototype/reduceRight/resizable-buffer.js @@ -20,7 +20,7 @@ for (let ctor of ctors) { // Write some data into the array. const taWrite = new ctor(rab); for (let i = 0; i < 4; ++i) { - WriteToTypedArray(taWrite, i, 2 * i); + taWrite[i] = MayNeedBigInt(taWrite, 2 * i); } // Orig. array: [0, 2, 4, 6] @@ -93,7 +93,7 @@ for (let ctor of ctors) { // Grow so that all TAs are back in-bounds. rab.resize(6 * ctor.BYTES_PER_ELEMENT); for (let i = 0; i < 6; ++i) { - WriteToTypedArray(taWrite, i, 2 * i); + taWrite[i] = MayNeedBigInt(taWrite, 2 * i); } // Orig. array: [0, 2, 4, 6, 8, 10] diff --git a/test/built-ins/Array/prototype/reverse/resizable-buffer.js b/test/built-ins/Array/prototype/reverse/resizable-buffer.js index f3b06228e7f..e6a285d10fc 100644 --- a/test/built-ins/Array/prototype/reverse/resizable-buffer.js +++ b/test/built-ins/Array/prototype/reverse/resizable-buffer.js @@ -19,7 +19,7 @@ for (let ctor of ctors) { function WriteData() { // Write some data into the array. for (let i = 0; i < wholeArrayView.length; ++i) { - WriteToTypedArray(wholeArrayView, i, 2 * i); + wholeArrayView[i] = MayNeedBigInt(wholeArrayView, 2 * i); } } WriteData(); diff --git a/test/built-ins/Array/prototype/slice/coerced-start-end-grow.js b/test/built-ins/Array/prototype/slice/coerced-start-end-grow.js index 2d718b803d2..aff475886f8 100644 --- a/test/built-ins/Array/prototype/slice/coerced-start-end-grow.js +++ b/test/built-ins/Array/prototype/slice/coerced-start-end-grow.js @@ -15,7 +15,7 @@ for (let ctor of ctors) { const rab = CreateResizableArrayBuffer(4 * ctor.BYTES_PER_ELEMENT, 8 * ctor.BYTES_PER_ELEMENT); const lengthTracking = new ctor(rab); for (let i = 0; i < 4; ++i) { - WriteToTypedArray(lengthTracking, i, i + 1); + lengthTracking[i] = MayNeedBigInt(lengthTracking, i + 1); } const evil = { valueOf: () => { @@ -37,7 +37,7 @@ for (let ctor of ctors) { const rab = CreateResizableArrayBuffer(4 * ctor.BYTES_PER_ELEMENT, 8 * ctor.BYTES_PER_ELEMENT); const lengthTracking = new ctor(rab); for (let i = 0; i < 4; ++i) { - WriteToTypedArray(lengthTracking, i, i + 1); + lengthTracking[i] = MayNeedBigInt(lengthTracking, i + 1); } const evil = { diff --git a/test/built-ins/Array/prototype/slice/coerced-start-end-shrink.js b/test/built-ins/Array/prototype/slice/coerced-start-end-shrink.js index b6656b3be36..4786edaffc2 100644 --- a/test/built-ins/Array/prototype/slice/coerced-start-end-shrink.js +++ b/test/built-ins/Array/prototype/slice/coerced-start-end-shrink.js @@ -34,7 +34,7 @@ for (let ctor of ctors) { const rab = CreateResizableArrayBuffer(4 * ctor.BYTES_PER_ELEMENT, 8 * ctor.BYTES_PER_ELEMENT); const lengthTracking = new ctor(rab); for (let i = 0; i < 4; ++i) { - WriteToTypedArray(lengthTracking, i, i + 1); + lengthTracking[i] = MayNeedBigInt(lengthTracking, i + 1); } const evil = { valueOf: () => { @@ -76,7 +76,7 @@ for (let ctor of ctors) { const rab = CreateResizableArrayBuffer(4 * ctor.BYTES_PER_ELEMENT, 8 * ctor.BYTES_PER_ELEMENT); const lengthTracking = new ctor(rab); for (let i = 0; i < 4; ++i) { - WriteToTypedArray(lengthTracking, i, i + 1); + lengthTracking[i] = MayNeedBigInt(lengthTracking, i + 1); } const evil = { valueOf: () => { diff --git a/test/built-ins/Array/prototype/slice/resizable-buffer.js b/test/built-ins/Array/prototype/slice/resizable-buffer.js index 606a520101c..059d5293a63 100644 --- a/test/built-ins/Array/prototype/slice/resizable-buffer.js +++ b/test/built-ins/Array/prototype/slice/resizable-buffer.js @@ -19,7 +19,7 @@ for (let ctor of ctors) { // Write some data into the array. const taWrite = new ctor(rab); for (let i = 0; i < 4; ++i) { - WriteToTypedArray(taWrite, i, i); + taWrite[i] = MayNeedBigInt(taWrite, i); } const fixedLengthSlice = Array.prototype.slice.call(fixedLength); assert.compareArray(ToNumbers(fixedLengthSlice), [ diff --git a/test/built-ins/Array/prototype/some/resizable-buffer.js b/test/built-ins/Array/prototype/some/resizable-buffer.js index 0bd06bc97e5..3f38be8073e 100644 --- a/test/built-ins/Array/prototype/some/resizable-buffer.js +++ b/test/built-ins/Array/prototype/some/resizable-buffer.js @@ -19,7 +19,7 @@ for (let ctor of ctors) { // Write some data into the array. const taWrite = new ctor(rab); for (let i = 0; i < 4; ++i) { - WriteToTypedArray(taWrite, i, 2 * i); + taWrite[i] = MayNeedBigInt(taWrite, 2 * i); } // Orig. array: [0, 2, 4, 6] @@ -79,7 +79,7 @@ for (let ctor of ctors) { // Grow so that all TAs are back in-bounds. rab.resize(6 * ctor.BYTES_PER_ELEMENT); for (let i = 0; i < 6; ++i) { - WriteToTypedArray(taWrite, i, 2 * i); + taWrite[i] = MayNeedBigInt(taWrite, 2 * i); } // Orig. array: [0, 2, 4, 6, 8, 10] diff --git a/test/built-ins/Array/prototype/sort/comparefn-grow.js b/test/built-ins/Array/prototype/sort/comparefn-grow.js index 640cdda2aed..7b2046490c1 100644 --- a/test/built-ins/Array/prototype/sort/comparefn-grow.js +++ b/test/built-ins/Array/prototype/sort/comparefn-grow.js @@ -25,7 +25,7 @@ function ResizeAndCompare(rab, resizeTo) { function WriteUnsortedData(taFull) { for (let i = 0; i < taFull.length; ++i) { - WriteToTypedArray(taFull, i, 10 - i); + taFull[i] = MayNeedBigInt(taFull, 10 - i); } } diff --git a/test/built-ins/Array/prototype/sort/comparefn-resizable-buffer.js b/test/built-ins/Array/prototype/sort/comparefn-resizable-buffer.js index b575811e808..91d0f5b6ff6 100644 --- a/test/built-ins/Array/prototype/sort/comparefn-resizable-buffer.js +++ b/test/built-ins/Array/prototype/sort/comparefn-resizable-buffer.js @@ -20,7 +20,7 @@ for (let ctor of ctors) { function WriteUnsortedData() { // Write some data into the array. for (let i = 0; i < taFull.length; ++i) { - WriteToTypedArray(taFull, i, 10 - i); + taFull[i] = MayNeedBigInt(taFull, 10 - i); } } function OddBeforeEvenComparison(a, b) { diff --git a/test/built-ins/Array/prototype/sort/comparefn-shrink.js b/test/built-ins/Array/prototype/sort/comparefn-shrink.js index c9c26f01c63..2dd82e2c226 100644 --- a/test/built-ins/Array/prototype/sort/comparefn-shrink.js +++ b/test/built-ins/Array/prototype/sort/comparefn-shrink.js @@ -25,7 +25,7 @@ function ResizeAndCompare(rab, resizeTo) { function WriteUnsortedData(taFull) { for (let i = 0; i < taFull.length; ++i) { - WriteToTypedArray(taFull, i, 10 - i); + taFull[i] = MayNeedBigInt(taFull, 10 - i); } } diff --git a/test/built-ins/Array/prototype/sort/resizable-buffer-default-comparator.js b/test/built-ins/Array/prototype/sort/resizable-buffer-default-comparator.js index 38b1c065dae..db3f71ca60c 100644 --- a/test/built-ins/Array/prototype/sort/resizable-buffer-default-comparator.js +++ b/test/built-ins/Array/prototype/sort/resizable-buffer-default-comparator.js @@ -22,7 +22,7 @@ for (let ctor of ctors) { function WriteUnsortedData() { // Write some data into the array. for (let i = 0; i < taFull.length; ++i) { - WriteToTypedArray(taFull, i, 10 - 2 * i); + taFull[i] = MayNeedBigInt(taFull, 10 - 2 * i); } } // Orig. array: [10, 8, 6, 4] diff --git a/test/built-ins/Array/prototype/toLocaleString/resizable-buffer.js b/test/built-ins/Array/prototype/toLocaleString/resizable-buffer.js index c8768f47fed..e9b4b6add25 100644 --- a/test/built-ins/Array/prototype/toLocaleString/resizable-buffer.js +++ b/test/built-ins/Array/prototype/toLocaleString/resizable-buffer.js @@ -26,7 +26,7 @@ for (let ctor of ctors) { // Write some data into the array. for (let i = 0; i < 4; ++i) { - WriteToTypedArray(taWrite, i, 2 * i); + taWrite[i] = MayNeedBigInt(taWrite, 2 * i); } // Orig. array: [0, 2, 4, 6] @@ -72,7 +72,7 @@ for (let ctor of ctors) { // Grow so that all TAs are back in-bounds. rab.resize(6 * ctor.BYTES_PER_ELEMENT); for (let i = 0; i < 6; ++i) { - WriteToTypedArray(taWrite, i, 2 * i); + taWrite[i] = MayNeedBigInt(taWrite, 2 * i); } // Orig. array: [0, 2, 4, 6, 8, 10] diff --git a/test/built-ins/Array/prototype/values/resizable-buffer.js b/test/built-ins/Array/prototype/values/resizable-buffer.js index c4b7f77868e..c2d06cc9d1c 100644 --- a/test/built-ins/Array/prototype/values/resizable-buffer.js +++ b/test/built-ins/Array/prototype/values/resizable-buffer.js @@ -27,7 +27,7 @@ for (let ctor of ctors) { // Write some data into the array. const taWrite = new ctor(rab); for (let i = 0; i < 4; ++i) { - WriteToTypedArray(taWrite, i, 2 * i); + taWrite[i] = MayNeedBigInt(taWrite, 2 * i); } // Orig. array: [0, 2, 4, 6] @@ -120,7 +120,7 @@ for (let ctor of ctors) { // Grow so that all TAs are back in-bounds. rab.resize(6 * ctor.BYTES_PER_ELEMENT); for (let i = 0; i < 6; ++i) { - WriteToTypedArray(taWrite, i, 2 * i); + taWrite[i] = MayNeedBigInt(taWrite, 2 * i); } // Orig. array: [0, 2, 4, 6, 8, 10] diff --git a/test/built-ins/ArrayBuffer/prototype/resize/coerced-new-length-detach.js b/test/built-ins/ArrayBuffer/prototype/resize/coerced-new-length-detach.js new file mode 100644 index 00000000000..f4aa3fef2d4 --- /dev/null +++ b/test/built-ins/ArrayBuffer/prototype/resize/coerced-new-length-detach.js @@ -0,0 +1,30 @@ +// Copyright 2023 the V8 project authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +esid: sec-arraybuffer.prototype.resize +description: > + ArrayBuffer.p.resize has one detach check after argument coercion +includes: [detachArrayBuffer.js] +features: [resizable-arraybuffer] +---*/ + +{ + const rab = new ArrayBuffer(64, { maxByteLength: 1024 }); + let called = false; + assert.throws(TypeError, () => rab.resize({ valueOf() { + $DETACHBUFFER(rab); + called = true; + }})); + assert(called); +} + +{ + const rab = new ArrayBuffer(64, { maxByteLength: 1024 }); + $DETACHBUFFER(rab); + let called = false; + assert.throws(TypeError, () => rab.resize({ valueOf() { + called = true; + }})); + assert(called); +} diff --git a/test/built-ins/AsyncDisposableStack/instance-extensible.js b/test/built-ins/AsyncDisposableStack/instance-extensible.js new file mode 100644 index 00000000000..53057c657cd --- /dev/null +++ b/test/built-ins/AsyncDisposableStack/instance-extensible.js @@ -0,0 +1,31 @@ +// Copyright (C) 2023 Ron Buckton. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +esid: sec-asyncdisposablestack +description: Instances of AsyncDisposableStack are extensible +info: | + AsyncDisposableStack( ) + + ... + 2. Let asyncDisposableStack be ? OrdinaryCreateFromConstructor(NewTarget, "%AsyncDisposableStack.prototype%", « [[AsyncDisposableState]], [[DisposeCapability]] »). + 3. Set asyncDisposableStack.[[AsyncDisposableState]] to pending. + 4. Set asyncDisposableStack.[[DisposeCapability]] to NewDisposeCapability(). + 5. Return asyncDisposableStack. + + OrdinaryCreateFromConstructor ( constructor, intrinsicDefaultProto [ , internalSlotsList ] ) + + ... + 2. Let proto be ? GetPrototypeFromConstructor(constructor, intrinsicDefaultProto). + 3. Return ObjectCreate(proto, internalSlotsList). + + ObjectCreate ( proto [ , internalSlotsList ] ) + + 4. Set obj.[[Prototype]] to proto. + 5. Set obj.[[Extensible]] to true. + 6. Return obj. +features: [explicit-resource-management, Reflect] +---*/ + +var stack = new AsyncDisposableStack(); +assert.sameValue(Object.isExtensible(stack), true); diff --git a/test/built-ins/AsyncDisposableStack/newtarget-prototype-is-not-object.js b/test/built-ins/AsyncDisposableStack/newtarget-prototype-is-not-object.js new file mode 100644 index 00000000000..f644a89e17b --- /dev/null +++ b/test/built-ins/AsyncDisposableStack/newtarget-prototype-is-not-object.js @@ -0,0 +1,58 @@ +// Copyright (C) 2023 Ron Buckton. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +esid: sec-asyncdisposablestack +description: > + [[Prototype]] defaults to %AsyncDisposableStack.prototype% if NewTarget.prototype is not an object. +info: | + AsyncDisposableStack( target ) + + ... + 2. Let asyncDisposableStack be ? OrdinaryCreateFromConstructor(NewTarget, "%AsyncDisposableStack.prototype%", « [[AsyncDisposableState]], [[DisposeCapability]] »). + 3. Set asyncDisposableStack.[[AsyncDisposableState]] to pending. + 4. Set asyncDisposableStack.[[DisposeCapability]] to NewDisposeCapability(). + 5. Return asyncDisposableStack. + + OrdinaryCreateFromConstructor ( constructor, intrinsicDefaultProto [ , internalSlotsList ] ) + + ... + 2. Let proto be ? GetPrototypeFromConstructor(constructor, intrinsicDefaultProto). + 3. Return ObjectCreate(proto, internalSlotsList). + + GetPrototypeFromConstructor ( constructor, intrinsicDefaultProto ) + + 3. Let proto be ? Get(constructor, 'prototype'). + 4. If Type(proto) is not Object, then + a. Let realm be ? GetFunctionRealm(constructor). + b. Set proto to realm's intrinsic object named intrinsicDefaultProto. + 5. Return proto. +features: [explicit-resource-management, Reflect.construct, Symbol] +---*/ + +var stack; +function newTarget() {} + +newTarget.prototype = undefined; +stack = Reflect.construct(AsyncDisposableStack, [], newTarget); +assert.sameValue(Object.getPrototypeOf(stack), AsyncDisposableStack.prototype, 'newTarget.prototype is undefined'); + +newTarget.prototype = null; +stack = Reflect.construct(AsyncDisposableStack, [], newTarget); +assert.sameValue(Object.getPrototypeOf(stack), AsyncDisposableStack.prototype, 'newTarget.prototype is null'); + +newTarget.prototype = true; +stack = Reflect.construct(AsyncDisposableStack, [], newTarget); +assert.sameValue(Object.getPrototypeOf(stack), AsyncDisposableStack.prototype, 'newTarget.prototype is a Boolean'); + +newTarget.prototype = ''; +stack = Reflect.construct(AsyncDisposableStack, [], newTarget); +assert.sameValue(Object.getPrototypeOf(stack), AsyncDisposableStack.prototype, 'newTarget.prototype is a String'); + +newTarget.prototype = Symbol(); +stack = Reflect.construct(AsyncDisposableStack, [], newTarget); +assert.sameValue(Object.getPrototypeOf(stack), AsyncDisposableStack.prototype, 'newTarget.prototype is a Symbol'); + +newTarget.prototype = 1; +stack = Reflect.construct(AsyncDisposableStack, [], newTarget); +assert.sameValue(Object.getPrototypeOf(stack), AsyncDisposableStack.prototype, 'newTarget.prototype is a Number'); diff --git a/test/built-ins/AsyncDisposableStack/proto-from-ctor-realm.js b/test/built-ins/AsyncDisposableStack/proto-from-ctor-realm.js new file mode 100644 index 00000000000..6439a68faa2 --- /dev/null +++ b/test/built-ins/AsyncDisposableStack/proto-from-ctor-realm.js @@ -0,0 +1,59 @@ +// Copyright (C) 2023 Ron Buckton. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +esid: sec-asyncdisposablestack +description: Default [[Prototype]] value derived from realm of the newTarget +info: | + AsyncDisposableStack( ) + + ... + 2. Let asyncDisposableStack be ? OrdinaryCreateFromConstructor(NewTarget, "%AsyncDisposableStack.prototype%", « [[AsyncDisposableState]], [[DisposeCapability]] »). + 3. Set asyncDisposableStack.[[AsyncDisposableState]] to pending. + 4. Set asyncDisposableStack.[[DisposeCapability]] to NewDisposeCapability(). + 5. Return asyncDisposableStack. + + OrdinaryCreateFromConstructor ( constructor, intrinsicDefaultProto [ , internalSlotsList ] ) + + ... + 2. Let proto be ? GetPrototypeFromConstructor(constructor, intrinsicDefaultProto). + 3. Return ObjectCreate(proto, internalSlotsList). + + GetPrototypeFromConstructor ( constructor, intrinsicDefaultProto ) + + 3. Let proto be ? Get(constructor, 'prototype'). + 4. If Type(proto) is not Object, then + a. Let realm be ? GetFunctionRealm(constructor). + b. Set proto to realm's intrinsic object named intrinsicDefaultProto. + 5. Return proto. +features: [explicit-resource-management, cross-realm, Reflect, Symbol] +---*/ + +var other = $262.createRealm().global; +var newTarget = new other.Function(); +var stack; + +newTarget.prototype = undefined; +stack = Reflect.construct(AsyncDisposableStack, [], newTarget); +assert.sameValue(Object.getPrototypeOf(stack), other.AsyncDisposableStack.prototype, 'newTarget.prototype is undefined'); + +newTarget.prototype = null; +stack = Reflect.construct(AsyncDisposableStack, [], newTarget); +assert.sameValue(Object.getPrototypeOf(stack), other.AsyncDisposableStack.prototype, 'newTarget.prototype is null'); + +newTarget.prototype = true; +stack = Reflect.construct(AsyncDisposableStack, [], newTarget); +assert.sameValue(Object.getPrototypeOf(stack), other.AsyncDisposableStack.prototype, 'newTarget.prototype is a Boolean'); + +newTarget.prototype = ''; +stack = Reflect.construct(AsyncDisposableStack, [], newTarget); +assert.sameValue(Object.getPrototypeOf(stack), other.AsyncDisposableStack.prototype, 'newTarget.prototype is a String'); + +newTarget.prototype = Symbol(); +stack = Reflect.construct(AsyncDisposableStack, [], newTarget); +assert.sameValue(Object.getPrototypeOf(stack), other.AsyncDisposableStack.prototype, 'newTarget.prototype is a Symbol'); + +newTarget.prototype = 1; +stack = Reflect.construct(AsyncDisposableStack, [], newTarget); +assert.sameValue(Object.getPrototypeOf(stack), other.AsyncDisposableStack.prototype, 'newTarget.prototype is a Number'); + diff --git a/test/built-ins/AsyncDisposableStack/proto.js b/test/built-ins/AsyncDisposableStack/proto.js new file mode 100644 index 00000000000..3f3bfffe723 --- /dev/null +++ b/test/built-ins/AsyncDisposableStack/proto.js @@ -0,0 +1,18 @@ +// Copyright (C) 2023 Ron Buckton. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +esid: sec-properties-of-asyncdisposablestack-constructor +description: > + The prototype of AsyncDisposableStack is Function.prototype +info: | + The value of the [[Prototype]] internal slot of the AsyncDisposableStack object is the + intrinsic object %FunctionPrototype%. +features: [explicit-resource-management] +---*/ + +assert.sameValue( + Object.getPrototypeOf(AsyncDisposableStack), + Function.prototype, + 'Object.getPrototypeOf(AsyncDisposableStack) returns the value of `Function.prototype`' +); diff --git a/test/built-ins/AsyncDisposableStack/prototype/Symbol.asyncDispose.js b/test/built-ins/AsyncDisposableStack/prototype/Symbol.asyncDispose.js new file mode 100644 index 00000000000..98bd3ad2b7f --- /dev/null +++ b/test/built-ins/AsyncDisposableStack/prototype/Symbol.asyncDispose.js @@ -0,0 +1,21 @@ +// Copyright (C) 2023 Ron Buckton. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. +/*--- +esid: sec-asyncdisposablestack.prototype-@@asyncDispose +description: Initial state of the Symbol.asyncDispose property +info: | + The initial value of the @@asyncDispose property is the same function object as + the initial value of the disposeAsync property. + + Per ES6 section 17, the method should exist on the Array prototype, and it + should be writable and configurable, but not enumerable. +includes: [propertyHelper.js] +features: [explicit-resource-management] +---*/ + +verifyProperty(AsyncDisposableStack.prototype, Symbol.asyncDispose, { + value: AsyncDisposableStack.prototype.disposeAsync, + enumerable: false, + writable: true, + configurable: true, +}); diff --git a/test/built-ins/AsyncDisposableStack/prototype/adopt/this-does-not-have-internal-asyncdisposablestate-throws.js b/test/built-ins/AsyncDisposableStack/prototype/adopt/this-does-not-have-internal-asyncdisposablestate-throws.js new file mode 100644 index 00000000000..91c89e8d323 --- /dev/null +++ b/test/built-ins/AsyncDisposableStack/prototype/adopt/this-does-not-have-internal-asyncdisposablestate-throws.js @@ -0,0 +1,42 @@ +// Copyright (C) 2023 Ron Buckton. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +esid: sec-asyncdisposablestack.prototype.adopt +description: Throws a TypeError if this does not have a [[AsyncDisposableState]] internal slot +info: | + AsyncDisposableStack.prototype.adopt ( value, onDisposeAsync ) + + 1. Let asyncDisposableStack be the this value. + 2. Perform ? RequireInternalSlot(asyncDisposableStack, [[AsyncDisposableState]]). + 3. ... + + RequireInternalSlot ( O, internalSlot ) + + 1. If O is not an Object, throw a TypeError exception. + 2. If O does not have an internalSlot internal slot, throw a TypeError exception. + ... + +features: [explicit-resource-management] +---*/ + +assert.sameValue(typeof AsyncDisposableStack.prototype.adopt, 'function'); + +var adopt = AsyncDisposableStack.prototype.adopt; + +assert.throws(TypeError, function() { + adopt.call({ ['[[AsyncDisposableState]]']: {} }); +}, 'Ordinary object without [[AsyncDisposableState]]'); + +assert.throws(TypeError, function() { + adopt.call(AsyncDisposableStack.prototype); +}, 'AsyncDisposableStack.prototype does not have a [[AsyncDisposableState]] internal slot'); + +assert.throws(TypeError, function() { + adopt.call(AsyncDisposableStack); +}, 'AsyncDisposableStack does not have a [[AsyncDisposableState]] internal slot'); + +var stack = new DisposableStack(); +assert.throws(TypeError, function() { + adopt.call(stack); +}, 'DisposableStack instance'); diff --git a/test/built-ins/AsyncDisposableStack/prototype/adopt/this-not-object-throws.js b/test/built-ins/AsyncDisposableStack/prototype/adopt/this-not-object-throws.js new file mode 100644 index 00000000000..43d78dcfdef --- /dev/null +++ b/test/built-ins/AsyncDisposableStack/prototype/adopt/this-not-object-throws.js @@ -0,0 +1,53 @@ +// Copyright (C) 2023 Ron Buckton. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +esid: sec-asyncdisposablestack.prototype.adopt +description: Throws a TypeError if this is not an Object +info: | + AsyncDisposableStack.prototype.adopt ( value, onDisposeAsync ) + + 1. Let asyncDisposableStack be the this value. + 2. Perform ? RequireInternalSlot(asyncDisposableStack, [[AsyncDisposableState]]). + ... + + RequireInternalSlot ( O, internalSlot ) + + 1. If O is not an Object, throw a TypeError exception. + ... + +features: [explicit-resource-management] +---*/ + +assert.sameValue(typeof AsyncDisposableStack.prototype.adopt, 'function'); + +var adopt = AsyncDisposableStack.prototype.adopt; + +assert.throws(TypeError, function() { + adopt.call(undefined); +}, 'undefined'); + +assert.throws(TypeError, function() { + adopt.call(null); +}, 'null'); + +assert.throws(TypeError, function() { + adopt.call(true); +}, 'true'); + +assert.throws(TypeError, function() { + adopt.call(false); +}, 'false'); + +assert.throws(TypeError, function() { + adopt.call(1); +}, 'number'); + +assert.throws(TypeError, function() { + adopt.call('object'); +}, 'string'); + +var s = Symbol(); +assert.throws(TypeError, function() { + adopt.call(s); +}, 'symbol'); diff --git a/test/built-ins/AsyncDisposableStack/prototype/defer/this-does-not-have-internal-asyncdisposablestate-throws.js b/test/built-ins/AsyncDisposableStack/prototype/defer/this-does-not-have-internal-asyncdisposablestate-throws.js new file mode 100644 index 00000000000..80b0674bcd8 --- /dev/null +++ b/test/built-ins/AsyncDisposableStack/prototype/defer/this-does-not-have-internal-asyncdisposablestate-throws.js @@ -0,0 +1,42 @@ +// Copyright (C) 2023 Ron Buckton. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +esid: sec-asyncdisposablestack.prototype.defer +description: Throws a TypeError if this does not have a [[AsyncDisposableState]] internal slot +info: | + AsyncDisposableStack.prototype.defer ( ) + + 1. Let asyncDisposableStack be the this value. + 2. Perform ? RequireInternalSlot(asyncDisposableStack, [[AsyncDisposableState]]). + 3. ... + + RequireInternalSlot ( O, internalSlot ) + + 1. If O is not an Object, throw a TypeError exception. + 2. If O does not have an internalSlot internal slot, throw a TypeError exception. + ... + +features: [explicit-resource-management] +---*/ + +assert.sameValue(typeof AsyncDisposableStack.prototype.defer, 'function'); + +var defer = AsyncDisposableStack.prototype.defer; + +assert.throws(TypeError, function() { + defer.call({ ['[[AsyncDisposableState]]']: {} }); +}, 'Ordinary object without [[AsyncDisposableState]]'); + +assert.throws(TypeError, function() { + defer.call(AsyncDisposableStack.prototype); +}, 'AsyncDisposableStack.prototype does not have a [[AsyncDisposableState]] internal slot'); + +assert.throws(TypeError, function() { + defer.call(AsyncDisposableStack); +}, 'AsyncDisposableStack does not have a [[AsyncDisposableState]] internal slot'); + +var stack = new DisposableStack(); +assert.throws(TypeError, function() { + defer.call(stack); +}, 'DisposableStack instance'); diff --git a/test/built-ins/AsyncDisposableStack/prototype/defer/this-not-object-throws.js b/test/built-ins/AsyncDisposableStack/prototype/defer/this-not-object-throws.js new file mode 100644 index 00000000000..cadb54018b5 --- /dev/null +++ b/test/built-ins/AsyncDisposableStack/prototype/defer/this-not-object-throws.js @@ -0,0 +1,53 @@ +// Copyright (C) 2023 Ron Buckton. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +esid: sec-asyncdisposablestack.prototype.defer +description: Throws a TypeError if this is not an Object +info: | + AsyncDisposableStack.prototype.defer ( ) + + 1. Let asyncDisposableStack be the this value. + 2. Perform ? RequireInternalSlot(asyncDisposableStack, [[AsyncDisposableState]]). + ... + + RequireInternalSlot ( O, internalSlot ) + + 1. If O is not an Object, throw a TypeError exception. + ... + +features: [explicit-resource-management] +---*/ + +assert.sameValue(typeof AsyncDisposableStack.prototype.defer, 'function'); + +var defer = AsyncDisposableStack.prototype.defer; + +assert.throws(TypeError, function() { + defer.call(undefined); +}, 'undefined'); + +assert.throws(TypeError, function() { + defer.call(null); +}, 'null'); + +assert.throws(TypeError, function() { + defer.call(true); +}, 'true'); + +assert.throws(TypeError, function() { + defer.call(false); +}, 'false'); + +assert.throws(TypeError, function() { + defer.call(1); +}, 'number'); + +assert.throws(TypeError, function() { + defer.call('object'); +}, 'string'); + +var s = Symbol(); +assert.throws(TypeError, function() { + defer.call(s); +}, 'symbol'); diff --git a/test/built-ins/AsyncDisposableStack/prototype/disposeAsync/this-does-not-have-internal-asyncdisposablestate-rejects.js b/test/built-ins/AsyncDisposableStack/prototype/disposeAsync/this-does-not-have-internal-asyncdisposablestate-rejects.js new file mode 100644 index 00000000000..9a35ddbd313 --- /dev/null +++ b/test/built-ins/AsyncDisposableStack/prototype/disposeAsync/this-does-not-have-internal-asyncdisposablestate-rejects.js @@ -0,0 +1,46 @@ +// Copyright (C) 2023 Ron Buckton. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +esid: sec-asyncdisposablestack.prototype.disposeAsync +description: Throws a TypeError if this does not have a [[AsyncDisposableState]] internal slot +info: | + AsyncDisposableStack.prototype.disposeAsync ( ) + + 1. Let asyncDisposableStack be the this value. + 2. Perform ? RequireInternalSlot(asyncDisposableStack, [[AsyncDisposableState]]). + 3. ... + + RequireInternalSlot ( O, internalSlot ) + + 1. If O is not an Object, throw a TypeError exception. + 2. If O does not have an internalSlot internal slot, throw a TypeError exception. + ... + +flags: [async] +includes: [asyncHelpers.js] +features: [explicit-resource-management] +---*/ + +asyncTest(async function() { + assert.sameValue(typeof AsyncDisposableStack.prototype.disposeAsync, 'function'); + + var disposeAsync = AsyncDisposableStack.prototype.disposeAsync; + + await assert.throwsAsync(TypeError, function() { + return disposeAsync.call({ ['[[AsyncDisposableState]]']: {} }); + }, 'Ordinary object without [[AsyncDisposableState]]'); + + await assert.throwsAsync(TypeError, function() { + return disposeAsync.call(AsyncDisposableStack.prototype); + }, 'AsyncDisposableStack.prototype does not have a [[AsyncDisposableState]] internal slot'); + + await assert.throwsAsync(TypeError, function() { + return disposeAsync.call(AsyncDisposableStack); + }, 'AsyncDisposableStack does not have a [[AsyncDisposableState]] internal slot'); + + var stack = new DisposableStack(); + await assert.throwsAsync(TypeError, function () { + return disposeAsync.call(stack); + }, 'DisposableStack instance'); +}); diff --git a/test/built-ins/AsyncDisposableStack/prototype/disposeAsync/this-not-object-rejects.js b/test/built-ins/AsyncDisposableStack/prototype/disposeAsync/this-not-object-rejects.js new file mode 100644 index 00000000000..af511ce59f2 --- /dev/null +++ b/test/built-ins/AsyncDisposableStack/prototype/disposeAsync/this-not-object-rejects.js @@ -0,0 +1,57 @@ +// Copyright (C) 2023 Ron Buckton. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +esid: sec-asyncdisposablestack.prototype.disposeAsync +description: Throws a TypeError if this is not an Object +info: | + AsyncDisposableStack.prototype.disposeAsync ( ) + + 1. Let asyncDisposableStack be the this value. + 2. Perform ? RequireInternalSlot(asyncDisposableStack, [[AsyncDisposableState]]). + ... + + RequireInternalSlot ( O, internalSlot ) + + 1. If O is not an Object, throw a TypeError exception. + ... + +flags: [async] +includes: [asyncHelpers.js] +features: [explicit-resource-management] +---*/ + +assert.sameValue(typeof AsyncDisposableStack.prototype.disposeAsync, 'function'); + +var disposeAsync = AsyncDisposableStack.prototype.disposeAsync; + +asyncTest(async function () { + await assert.throwsAsync(TypeError, function() { + return disposeAsync.call(undefined); + }, 'undefined'); + + await assert.throwsAsync(TypeError, function() { + return disposeAsync.call(null); + }, 'null'); + + await assert.throwsAsync(TypeError, function() { + return disposeAsync.call(true); + }, 'true'); + + await assert.throwsAsync(TypeError, function() { + return disposeAsync.call(false); + }, 'false'); + + await assert.throwsAsync(TypeError, function() { + return disposeAsync.call(1); + }, 'number'); + + await assert.throwsAsync(TypeError, function() { + return disposeAsync.call('object'); + }, 'string'); + + var s = Symbol(); + await assert.throwsAsync(TypeError, function() { + return disposeAsync.call(s); + }, 'symbol'); +}); diff --git a/test/built-ins/AsyncDisposableStack/prototype/disposed/does-not-have-asyncdisposablestate-internal-slot.js b/test/built-ins/AsyncDisposableStack/prototype/disposed/does-not-have-asyncdisposablestate-internal-slot.js new file mode 100644 index 00000000000..8a8530904a7 --- /dev/null +++ b/test/built-ins/AsyncDisposableStack/prototype/disposed/does-not-have-asyncdisposablestate-internal-slot.js @@ -0,0 +1,32 @@ +// Copyright (C) 2023 Ron Buckton. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. +/*--- +esid: sec-get-asyncdisposablestack.prototype.disposed +description: > + Throws a TypeError if `this` object does not have a [[AsyncDisposableState]] internal slot. +info: | + get AsyncDisposableStack.prototype.disposed + + 1. Let asyncDisposableStack be the this value. + 2. Perform ? RequireInternalSlot(asyncDisposableStack, [[AsyncDisposableState]]). + ... + + RequireInternalSlot ( O, internalSlot ) + + 1. If O is not an Object, throw a TypeError exception. + 2. If O does not have an internalSlot internal slot, throw a TypeError exception. + ... + +features: [explicit-resource-management] +---*/ + +var descriptor = Object.getOwnPropertyDescriptor(AsyncDisposableStack.prototype, 'disposed'); + +var stack = new AsyncDisposableStack(); + +// Does not throw +descriptor.get.call(stack); + +assert.throws(TypeError, function() { + descriptor.get.call([]); +}); diff --git a/test/built-ins/AsyncDisposableStack/prototype/disposed/getter.js b/test/built-ins/AsyncDisposableStack/prototype/disposed/getter.js new file mode 100644 index 00000000000..f162551eb62 --- /dev/null +++ b/test/built-ins/AsyncDisposableStack/prototype/disposed/getter.js @@ -0,0 +1,32 @@ +// Copyright (C) 2023 Ron Buckton. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. +/*--- +esid: sec-get-asyncdisposablestack.prototype.disposed +description: > + Property type and descriptor. +info: | + get AsyncDisposableStack.prototype.disposed + + 17 ECMAScript Standard Built-in Objects + +includes: [propertyHelper.js] +features: [explicit-resource-management] +---*/ + +var descriptor = Object.getOwnPropertyDescriptor(AsyncDisposableStack.prototype, 'disposed'); + +assert.sameValue( + typeof descriptor.get, + 'function', + 'typeof descriptor.get is function' +); +assert.sameValue( + typeof descriptor.set, + 'undefined', + 'typeof descriptor.set is undefined' +); + +verifyProperty(AsyncDisposableStack.prototype, 'disposed', { + enumerable: false, + configurable: true, +}); diff --git a/test/built-ins/AsyncDisposableStack/prototype/disposed/this-not-object-throw.js b/test/built-ins/AsyncDisposableStack/prototype/disposed/this-not-object-throw.js new file mode 100644 index 00000000000..1f0e058bd5c --- /dev/null +++ b/test/built-ins/AsyncDisposableStack/prototype/disposed/this-not-object-throw.js @@ -0,0 +1,50 @@ +// Copyright (C) 2023 Ron Buckton. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. +/*--- +esid: sec-get-asyncdisposablestack.prototype.disposed +description: > + Throws a TypeError if `this` is not an Object. +info: | + get AsyncDisposableStack.prototype.disposed + + 1. Let asyncDisposableStack be the this value. + 2. Perform ? RequireInternalSlot(asyncDisposableStack, [[AsyncDisposableState]]). + ... + + RequireInternalSlot ( O, internalSlot ) + + 1. If O is not an Object, throw a TypeError exception. + ... + +features: [explicit-resource-management,Symbol] +---*/ + +var descriptor = Object.getOwnPropertyDescriptor(AsyncDisposableStack.prototype, 'disposed'); + +assert.throws(TypeError, function() { + descriptor.get.call(1); +}); + +assert.throws(TypeError, function() { + descriptor.get.call(false); +}); + +assert.throws(TypeError, function() { + descriptor.get.call(1); +}); + +assert.throws(TypeError, function() { + descriptor.get.call(''); +}); + +assert.throws(TypeError, function() { + descriptor.get.call(undefined); +}); + +assert.throws(TypeError, function() { + descriptor.get.call(null); +}); + +assert.throws(TypeError, function() { + descriptor.get.call(Symbol()); +}); diff --git a/test/built-ins/AsyncDisposableStack/prototype/move/this-does-not-have-internal-asyncdisposablestate-throws.js b/test/built-ins/AsyncDisposableStack/prototype/move/this-does-not-have-internal-asyncdisposablestate-throws.js new file mode 100644 index 00000000000..4d086ab547a --- /dev/null +++ b/test/built-ins/AsyncDisposableStack/prototype/move/this-does-not-have-internal-asyncdisposablestate-throws.js @@ -0,0 +1,42 @@ +// Copyright (C) 2023 Ron Buckton. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +esid: sec-asyncdisposablestack.prototype.move +description: Throws a TypeError if this does not have a [[AsyncDisposableState]] internal slot +info: | + AsyncDisposableStack.prototype.move ( ) + + 1. Let asyncDisposableStack be the this value. + 2. Perform ? RequireInternalSlot(asyncDisposableStack, [[AsyncDisposableState]]). + 3. ... + + RequireInternalSlot ( O, internalSlot ) + + 1. If O is not an Object, throw a TypeError exception. + 2. If O does not have an internalSlot internal slot, throw a TypeError exception. + ... + +features: [explicit-resource-management] +---*/ + +assert.sameValue(typeof AsyncDisposableStack.prototype.move, 'function'); + +var move = AsyncDisposableStack.prototype.move; + +assert.throws(TypeError, function() { + move.call({ ['[[AsyncDisposableState]]']: {} }); +}, 'Ordinary object without [[AsyncDisposableState]]'); + +assert.throws(TypeError, function() { + move.call(AsyncDisposableStack.prototype); +}, 'AsyncDisposableStack.prototype does not have a [[AsyncDisposableState]] internal slot'); + +assert.throws(TypeError, function() { + move.call(AsyncDisposableStack); +}, 'AsyncDisposableStack does not have a [[AsyncDisposableState]] internal slot'); + +var stack = new DisposableStack(); +assert.throws(TypeError, function() { + move.call(stack); +}, 'DisposableStack instance'); diff --git a/test/built-ins/AsyncDisposableStack/prototype/move/this-not-object-throws.js b/test/built-ins/AsyncDisposableStack/prototype/move/this-not-object-throws.js new file mode 100644 index 00000000000..0cdff69280f --- /dev/null +++ b/test/built-ins/AsyncDisposableStack/prototype/move/this-not-object-throws.js @@ -0,0 +1,53 @@ +// Copyright (C) 2023 Ron Buckton. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +esid: sec-asyncdisposablestack.prototype.move +description: Throws a TypeError if this is not an Object +info: | + AsyncDisposableStack.prototype.move ( ) + + 1. Let asyncDisposableStack be the this value. + 2. Perform ? RequireInternalSlot(asyncDisposableStack, [[AsyncDisposableState]]). + ... + + RequireInternalSlot ( O, internalSlot ) + + 1. If O is not an Object, throw a TypeError exception. + ... + +features: [explicit-resource-management] +---*/ + +assert.sameValue(typeof AsyncDisposableStack.prototype.move, 'function'); + +var move = AsyncDisposableStack.prototype.move; + +assert.throws(TypeError, function() { + move.call(undefined); +}, 'undefined'); + +assert.throws(TypeError, function() { + move.call(null); +}, 'null'); + +assert.throws(TypeError, function() { + move.call(true); +}, 'true'); + +assert.throws(TypeError, function() { + move.call(false); +}, 'false'); + +assert.throws(TypeError, function() { + move.call(1); +}, 'number'); + +assert.throws(TypeError, function() { + move.call('object'); +}, 'string'); + +var s = Symbol(); +assert.throws(TypeError, function() { + move.call(s); +}, 'symbol'); diff --git a/test/built-ins/AsyncDisposableStack/prototype/proto.js b/test/built-ins/AsyncDisposableStack/prototype/proto.js new file mode 100644 index 00000000000..fbf54a498b8 --- /dev/null +++ b/test/built-ins/AsyncDisposableStack/prototype/proto.js @@ -0,0 +1,14 @@ +// Copyright (C) 2023 Ron Buckton. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +description: The prototype of AsyncDisposableStack.prototype is Object.prototype +esid: sec-properties-of-the-asyncdisposablestack-prototype-object +info: | + The value of the [[Prototype]] internal slot of the AsyncDisposableStack prototype object + is the intrinsic object %Object.prototype%. +features: [explicit-resource-management] +---*/ + +var proto = Object.getPrototypeOf(AsyncDisposableStack.prototype); +assert.sameValue(proto, Object.prototype); diff --git a/test/built-ins/AsyncDisposableStack/prototype/use/this-does-not-have-internal-asyncdisposablestate-throws.js b/test/built-ins/AsyncDisposableStack/prototype/use/this-does-not-have-internal-asyncdisposablestate-throws.js new file mode 100644 index 00000000000..4ccb3262f62 --- /dev/null +++ b/test/built-ins/AsyncDisposableStack/prototype/use/this-does-not-have-internal-asyncdisposablestate-throws.js @@ -0,0 +1,44 @@ +// Copyright (C) 2023 Ron Buckton. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +esid: sec-asyncdisposablestack.prototype.use +description: Throws a TypeError if this does not have a [[AsyncDisposableState]] internal slot +info: | + AsyncDisposableStack.prototype.use ( value ) + + 1. Let asyncDisposableStack be the this value. + 2. Perform ? RequireInternalSlot(asyncDisposableStack, [[AsyncDisposableState]]). + 3. If asyncDisposableStack.[[AsyncDisposableState]] is disposed, throw a ReferenceError exception. + 4. Perform ? AddDisposableResource(asyncDisposableStack.[[DisposeCapability]], value, sync-dispose). + 5. Return value. + + RequireInternalSlot ( O, internalSlot ) + + 1. If O is not an Object, throw a TypeError exception. + 2. If O does not have an internalSlot internal slot, throw a TypeError exception. + ... + +features: [explicit-resource-management] +---*/ + +assert.sameValue(typeof AsyncDisposableStack.prototype.use, 'function'); + +var use = AsyncDisposableStack.prototype.use; + +assert.throws(TypeError, function() { + use.call({ ['[[AsyncDisposableState]]']: {} }); +}, 'Ordinary object without [[AsyncDisposableState]]'); + +assert.throws(TypeError, function() { + use.call(AsyncDisposableStack.prototype); +}, 'AsyncDisposableStack.prototype does not have a [[AsyncDisposableState]] internal slot'); + +assert.throws(TypeError, function() { + use.call(AsyncDisposableStack); +}, 'AsyncDisposableStack does not have a [[AsyncDisposableState]] internal slot'); + +var stack = new DisposableStack(); +assert.throws(TypeError, function() { + use.call(stack); +}, 'DisposableStack instance'); diff --git a/test/built-ins/AsyncDisposableStack/prototype/use/this-not-object-throws.js b/test/built-ins/AsyncDisposableStack/prototype/use/this-not-object-throws.js new file mode 100644 index 00000000000..fa541fd9ec5 --- /dev/null +++ b/test/built-ins/AsyncDisposableStack/prototype/use/this-not-object-throws.js @@ -0,0 +1,53 @@ +// Copyright (C) 2023 Ron Buckton. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +esid: sec-asyncdisposablestack.prototype.use +description: Throws a TypeError if this is not an Object +info: | + AsyncDisposableStack.prototype.use () + + 1. Let asyncDisposableStack be the this value. + 2. Perform ? RequireInternalSlot(asyncDisposableStack, [[AsyncDisposableState]]). + ... + + RequireInternalSlot ( O, internalSlot ) + + 1. If O is not an Object, throw a TypeError exception. + ... + +features: [explicit-resource-management] +---*/ + +assert.sameValue(typeof AsyncDisposableStack.prototype.use, 'function'); + +var use = AsyncDisposableStack.prototype.use; + +assert.throws(TypeError, function() { + use.call(undefined); +}, 'undefined'); + +assert.throws(TypeError, function() { + use.call(null); +}, 'null'); + +assert.throws(TypeError, function() { + use.call(true); +}, 'true'); + +assert.throws(TypeError, function() { + use.call(false); +}, 'false'); + +assert.throws(TypeError, function() { + use.call(1); +}, 'number'); + +assert.throws(TypeError, function() { + use.call('object'); +}, 'string'); + +var s = Symbol(); +assert.throws(TypeError, function() { + use.call(s); +}, 'symbol'); diff --git a/test/built-ins/AsyncDisposableStack/prototype/use/throws-if-value-not-object.js b/test/built-ins/AsyncDisposableStack/prototype/use/throws-if-value-not-object.js new file mode 100644 index 00000000000..e9232bd1659 --- /dev/null +++ b/test/built-ins/AsyncDisposableStack/prototype/use/throws-if-value-not-object.js @@ -0,0 +1,48 @@ +// Copyright (C) 2023 Ron Buckton. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +esid: sec-asyncdisposablestack.prototype.use +description: Throws if the argument is not an object and is neither null nor undefined. +info: | + AsyncDisposableStack.prototype.use ( value ) + + 1. Let asyncDisposableStack be the this value. + 2. Perform ? RequireInternalSlot(asyncDisposableStack, [[DisposableState]]). + 3. If asyncDisposableStack.[[DisposableState]] is disposed, throw a ReferenceError exception. + 4. Perform ? AddDisposableResource(asyncDisposableStack.[[DisposeCapability]], value, async-dispose). + ... + + AddDisposableResource ( disposeCapability, V, hint [, method ] ) + + 1. If method is not present then, + a. If V is either null or undefined and hint is sync-dispose, then + i. Return unused + b. Let resource be ? CreateDisposableResource(V, hint). + ... + ... + +features: [explicit-resource-management] +---*/ + +var stack = new AsyncDisposableStack(); +assert.throws(TypeError, function() { + stack.use(true); +}, 'true'); + +assert.throws(TypeError, function() { + stack.use(false); +}, 'false'); + +assert.throws(TypeError, function() { + stack.use(1); +}, 'number'); + +assert.throws(TypeError, function() { + stack.use('object'); +}, 'string'); + +var s = Symbol(); +assert.throws(TypeError, function() { + stack.use(s); +}, 'symbol'); diff --git a/test/built-ins/AsyncIteratorPrototype/Symbol.asyncDispose/is-function.js b/test/built-ins/AsyncIteratorPrototype/Symbol.asyncDispose/is-function.js new file mode 100644 index 00000000000..6b5fb9e0218 --- /dev/null +++ b/test/built-ins/AsyncIteratorPrototype/Symbol.asyncDispose/is-function.js @@ -0,0 +1,13 @@ +// Copyright (C) 2023 Ron Buckton. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. +/*--- +esid: sec-%asynciteratorprototype%-@@asyncDispose +description: > + AsyncIterator.prototype[@@asyncDispose] is a built-in function +features: [explicit-resource-management] +---*/ + +async function* generator() {} +const AsyncIteratorPrototype = Object.getPrototypeOf(Object.getPrototypeOf(generator.prototype)) + +assert.sameValue(typeof AsyncIteratorPrototype[Symbol.asyncDispose], 'function'); diff --git a/test/built-ins/Atomics/pause/negative-iterationnumber-throws.js b/test/built-ins/Atomics/pause/negative-iterationnumber-throws.js deleted file mode 100644 index ea0d29bb49f..00000000000 --- a/test/built-ins/Atomics/pause/negative-iterationnumber-throws.js +++ /dev/null @@ -1,19 +0,0 @@ -// Copyright 2024 the V8 project authors. All rights reserved. -// This code is governed by the BSD license found in the LICENSE file. - -/*--- -esid: sec-atomics.pause -description: Atomics.pause throws on negative argument values -features: [Atomics.pause] ----*/ - -const values = [ - -1, - Number.MIN_SAFE_INTEGER, - Number.MIN_SAFE_INTEGER - 1 -]; - -for (const v of values) { - assert.throws(RangeError, () => { Atomics.pause(v); }, - `${v} is an illegal iterationNumber`); -} diff --git a/test/built-ins/DisposableStack/instance-extensible.js b/test/built-ins/DisposableStack/instance-extensible.js new file mode 100644 index 00000000000..e9fdd009b32 --- /dev/null +++ b/test/built-ins/DisposableStack/instance-extensible.js @@ -0,0 +1,31 @@ +// Copyright (C) 2023 Ron Buckton. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +esid: sec-disposablestack +description: Instances of DisposableStack are extensible +info: | + DisposableStack( ) + + ... + 2. Let disposableStack be ? OrdinaryCreateFromConstructor(NewTarget, "%DisposableStack.prototype%", « [[DisposableState]], [[DisposeCapability]] »). + 3. Set disposableStack.[[DisposableState]] to pending. + 4. Set disposableStack.[[DisposeCapability]] to NewDisposeCapability(). + 5. Return disposableStack. + + OrdinaryCreateFromConstructor ( constructor, intrinsicDefaultProto [ , internalSlotsList ] ) + + ... + 2. Let proto be ? GetPrototypeFromConstructor(constructor, intrinsicDefaultProto). + 3. Return ObjectCreate(proto, internalSlotsList). + + ObjectCreate ( proto [ , internalSlotsList ] ) + + 4. Set obj.[[Prototype]] to proto. + 5. Set obj.[[Extensible]] to true. + 6. Return obj. +features: [explicit-resource-management, Reflect] +---*/ + +var stack = new DisposableStack(); +assert.sameValue(Object.isExtensible(stack), true); diff --git a/test/built-ins/DisposableStack/newtarget-prototype-is-not-object.js b/test/built-ins/DisposableStack/newtarget-prototype-is-not-object.js new file mode 100644 index 00000000000..658389b63de --- /dev/null +++ b/test/built-ins/DisposableStack/newtarget-prototype-is-not-object.js @@ -0,0 +1,58 @@ +// Copyright (C) 2023 Ron Buckton. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +esid: sec-disposablestack +description: > + [[Prototype]] defaults to %DisposableStack.prototype% if NewTarget.prototype is not an object. +info: | + DisposableStack( target ) + + ... + 2. Let disposableStack be ? OrdinaryCreateFromConstructor(NewTarget, "%DisposableStack.prototype%", « [[DisposableState]], [[DisposeCapability]] »). + 3. Set disposableStack.[[DisposableState]] to pending. + 4. Set disposableStack.[[DisposeCapability]] to NewDisposeCapability(). + 5. Return disposableStack. + + OrdinaryCreateFromConstructor ( constructor, intrinsicDefaultProto [ , internalSlotsList ] ) + + ... + 2. Let proto be ? GetPrototypeFromConstructor(constructor, intrinsicDefaultProto). + 3. Return ObjectCreate(proto, internalSlotsList). + + GetPrototypeFromConstructor ( constructor, intrinsicDefaultProto ) + + 3. Let proto be ? Get(constructor, 'prototype'). + 4. If Type(proto) is not Object, then + a. Let realm be ? GetFunctionRealm(constructor). + b. Set proto to realm's intrinsic object named intrinsicDefaultProto. + 5. Return proto. +features: [explicit-resource-management, Reflect.construct, Symbol] +---*/ + +var stack; +function newTarget() {} + +newTarget.prototype = undefined; +stack = Reflect.construct(DisposableStack, [], newTarget); +assert.sameValue(Object.getPrototypeOf(stack), DisposableStack.prototype, 'newTarget.prototype is undefined'); + +newTarget.prototype = null; +stack = Reflect.construct(DisposableStack, [], newTarget); +assert.sameValue(Object.getPrototypeOf(stack), DisposableStack.prototype, 'newTarget.prototype is null'); + +newTarget.prototype = true; +stack = Reflect.construct(DisposableStack, [], newTarget); +assert.sameValue(Object.getPrototypeOf(stack), DisposableStack.prototype, 'newTarget.prototype is a Boolean'); + +newTarget.prototype = ''; +stack = Reflect.construct(DisposableStack, [], newTarget); +assert.sameValue(Object.getPrototypeOf(stack), DisposableStack.prototype, 'newTarget.prototype is a String'); + +newTarget.prototype = Symbol(); +stack = Reflect.construct(DisposableStack, [], newTarget); +assert.sameValue(Object.getPrototypeOf(stack), DisposableStack.prototype, 'newTarget.prototype is a Symbol'); + +newTarget.prototype = 1; +stack = Reflect.construct(DisposableStack, [], newTarget); +assert.sameValue(Object.getPrototypeOf(stack), DisposableStack.prototype, 'newTarget.prototype is a Number'); diff --git a/test/built-ins/DisposableStack/proto-from-ctor-realm.js b/test/built-ins/DisposableStack/proto-from-ctor-realm.js new file mode 100644 index 00000000000..4152f6cf471 --- /dev/null +++ b/test/built-ins/DisposableStack/proto-from-ctor-realm.js @@ -0,0 +1,59 @@ +// Copyright (C) 2023 Ron Buckton. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +esid: sec-disposablestack +description: Default [[Prototype]] value derived from realm of the newTarget +info: | + DisposableStack( ) + + ... + 2. Let disposableStack be ? OrdinaryCreateFromConstructor(NewTarget, "%DisposableStack.prototype%", « [[DisposableState]], [[DisposeCapability]] »). + 3. Set disposableStack.[[DisposableState]] to pending. + 4. Set disposableStack.[[DisposeCapability]] to NewDisposeCapability(). + 5. Return disposableStack. + + OrdinaryCreateFromConstructor ( constructor, intrinsicDefaultProto [ , internalSlotsList ] ) + + ... + 2. Let proto be ? GetPrototypeFromConstructor(constructor, intrinsicDefaultProto). + 3. Return ObjectCreate(proto, internalSlotsList). + + GetPrototypeFromConstructor ( constructor, intrinsicDefaultProto ) + + 3. Let proto be ? Get(constructor, 'prototype'). + 4. If Type(proto) is not Object, then + a. Let realm be ? GetFunctionRealm(constructor). + b. Set proto to realm's intrinsic object named intrinsicDefaultProto. + 5. Return proto. +features: [explicit-resource-management, cross-realm, Reflect, Symbol] +---*/ + +var other = $262.createRealm().global; +var newTarget = new other.Function(); +var stack; + +newTarget.prototype = undefined; +stack = Reflect.construct(DisposableStack, [], newTarget); +assert.sameValue(Object.getPrototypeOf(stack), other.DisposableStack.prototype, 'newTarget.prototype is undefined'); + +newTarget.prototype = null; +stack = Reflect.construct(DisposableStack, [], newTarget); +assert.sameValue(Object.getPrototypeOf(stack), other.DisposableStack.prototype, 'newTarget.prototype is null'); + +newTarget.prototype = true; +stack = Reflect.construct(DisposableStack, [], newTarget); +assert.sameValue(Object.getPrototypeOf(stack), other.DisposableStack.prototype, 'newTarget.prototype is a Boolean'); + +newTarget.prototype = ''; +stack = Reflect.construct(DisposableStack, [], newTarget); +assert.sameValue(Object.getPrototypeOf(stack), other.DisposableStack.prototype, 'newTarget.prototype is a String'); + +newTarget.prototype = Symbol(); +stack = Reflect.construct(DisposableStack, [], newTarget); +assert.sameValue(Object.getPrototypeOf(stack), other.DisposableStack.prototype, 'newTarget.prototype is a Symbol'); + +newTarget.prototype = 1; +stack = Reflect.construct(DisposableStack, [], newTarget); +assert.sameValue(Object.getPrototypeOf(stack), other.DisposableStack.prototype, 'newTarget.prototype is a Number'); + diff --git a/test/built-ins/DisposableStack/proto.js b/test/built-ins/DisposableStack/proto.js new file mode 100644 index 00000000000..e3981622d71 --- /dev/null +++ b/test/built-ins/DisposableStack/proto.js @@ -0,0 +1,18 @@ +// Copyright (C) 2023 Ron Buckton. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +esid: sec-properties-of-disposablestack-constructor +description: > + The prototype of DisposableStack is Function.prototype +info: | + The value of the [[Prototype]] internal slot of the DisposableStack object is the + intrinsic object %FunctionPrototype%. +features: [explicit-resource-management] +---*/ + +assert.sameValue( + Object.getPrototypeOf(DisposableStack), + Function.prototype, + 'Object.getPrototypeOf(DisposableStack) returns the value of `Function.prototype`' +); diff --git a/test/built-ins/DisposableStack/prototype/Symbol.dispose.js b/test/built-ins/DisposableStack/prototype/Symbol.dispose.js new file mode 100644 index 00000000000..befbc6bbd50 --- /dev/null +++ b/test/built-ins/DisposableStack/prototype/Symbol.dispose.js @@ -0,0 +1,21 @@ +// Copyright (C) 2023 Ron Buckton. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. +/*--- +esid: sec-disposablestack.prototype-@@dispose +description: Initial state of the Symbol.dispose property +info: | + The initial value of the @@dispose property is the same function object as + the initial value of the dispose property. + + Per ES6 section 17, the method should exist on the Array prototype, and it + should be writable and configurable, but not enumerable. +includes: [propertyHelper.js] +features: [explicit-resource-management] +---*/ + +assert.sameValue(DisposableStack.prototype[Symbol.dispose], DisposableStack.prototype.dispose); +verifyProperty(DisposableStack.prototype, Symbol.dispose, { + enumerable: false; + writable: true; + configurable: true; +}); diff --git a/test/built-ins/DisposableStack/prototype/adopt/this-does-not-have-internal-disposablestate-throws.js b/test/built-ins/DisposableStack/prototype/adopt/this-does-not-have-internal-disposablestate-throws.js new file mode 100644 index 00000000000..9211fd67d51 --- /dev/null +++ b/test/built-ins/DisposableStack/prototype/adopt/this-does-not-have-internal-disposablestate-throws.js @@ -0,0 +1,42 @@ +// Copyright (C) 2023 Ron Buckton. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +esid: sec-disposablestack.prototype.adopt +description: Throws a TypeError if this does not have a [[DisposableState]] internal slot +info: | + DisposableStack.prototype.adopt ( ) + + 1. Let disposableStack be the this value. + 2. Perform ? RequireInternalSlot(disposableStack, [[DisposableState]]). + 3. ... + + RequireInternalSlot ( O, internalSlot ) + + 1. If O is not an Object, throw a TypeError exception. + 2. If O does not have an internalSlot internal slot, throw a TypeError exception. + ... + +features: [explicit-resource-management] +---*/ + +assert.sameValue(typeof DisposableStack.prototype.adopt, 'function'); + +var adopt = DisposableStack.prototype.adopt; + +assert.throws(TypeError, function() { + adopt.call({ ['[[DisposableState]]']: {} }); +}, 'Ordinary object without [[DisposableState]]'); + +assert.throws(TypeError, function() { + adopt.call(DisposableStack.prototype); +}, 'DisposableStack.prototype does not have a [[DisposableState]] internal slot'); + +assert.throws(TypeError, function() { + adopt.call(DisposableStack); +}, 'DisposableStack does not have a [[DisposableState]] internal slot'); + +var asyncStack = new AsyncDisposableStack(function() {}); +assert.throws(TypeError, function() { + adopt.call(asyncStack); +}, 'AsyncDisposableStack instance'); diff --git a/test/built-ins/DisposableStack/prototype/adopt/this-not-object-throws.js b/test/built-ins/DisposableStack/prototype/adopt/this-not-object-throws.js new file mode 100644 index 00000000000..d375b61af9b --- /dev/null +++ b/test/built-ins/DisposableStack/prototype/adopt/this-not-object-throws.js @@ -0,0 +1,53 @@ +// Copyright (C) 2023 Ron Buckton. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +esid: sec-disposablestack.prototype.adopt +description: Throws a TypeError if this is not an Object +info: | + DisposableStack.prototype.adopt ( ) + + 1. Let disposableStack be the this value. + 2. Perform ? RequireInternalSlot(disposableStack, [[DisposableState]]). + ... + + RequireInternalSlot ( O, internalSlot ) + + 1. If O is not an Object, throw a TypeError exception. + ... + +features: [explicit-resource-management] +---*/ + +assert.sameValue(typeof DisposableStack.prototype.adopt, 'function'); + +var adopt = DisposableStack.prototype.adopt; + +assert.throws(TypeError, function() { + adopt.call(undefined); +}, 'undefined'); + +assert.throws(TypeError, function() { + adopt.call(null); +}, 'null'); + +assert.throws(TypeError, function() { + adopt.call(true); +}, 'true'); + +assert.throws(TypeError, function() { + adopt.call(false); +}, 'false'); + +assert.throws(TypeError, function() { + adopt.call(1); +}, 'number'); + +assert.throws(TypeError, function() { + adopt.call('object'); +}, 'string'); + +var s = Symbol(); +assert.throws(TypeError, function() { + adopt.call(s); +}, 'symbol'); diff --git a/test/built-ins/DisposableStack/prototype/defer/this-does-not-have-internal-disposablestate-throws.js b/test/built-ins/DisposableStack/prototype/defer/this-does-not-have-internal-disposablestate-throws.js new file mode 100644 index 00000000000..74d38d49e26 --- /dev/null +++ b/test/built-ins/DisposableStack/prototype/defer/this-does-not-have-internal-disposablestate-throws.js @@ -0,0 +1,42 @@ +// Copyright (C) 2023 Ron Buckton. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +esid: sec-disposablestack.prototype.defer +description: Throws a TypeError if this does not have a [[DisposableState]] internal slot +info: | + DisposableStack.prototype.defer ( ) + + 1. Let disposableStack be the this value. + 2. Perform ? RequireInternalSlot(disposableStack, [[DisposableState]]). + 3. ... + + RequireInternalSlot ( O, internalSlot ) + + 1. If O is not an Object, throw a TypeError exception. + 2. If O does not have an internalSlot internal slot, throw a TypeError exception. + ... + +features: [explicit-resource-management] +---*/ + +assert.sameValue(typeof DisposableStack.prototype.defer, 'function'); + +var defer = DisposableStack.prototype.defer; + +assert.throws(TypeError, function() { + defer.call({ ['[[DisposableState]]']: {} }); +}, 'Ordinary object without [[DisposableState]]'); + +assert.throws(TypeError, function() { + defer.call(DisposableStack.prototype); +}, 'DisposableStack.prototype does not have a [[DisposableState]] internal slot'); + +assert.throws(TypeError, function() { + defer.call(DisposableStack); +}, 'DisposableStack does not have a [[DisposableState]] internal slot'); + +var asyncStack = new AsyncDisposableStack(function() {}); +assert.throws(TypeError, function() { + defer.call(asyncStack); +}, 'AsyncDisposableStack instance'); diff --git a/test/built-ins/DisposableStack/prototype/defer/this-not-object-throws.js b/test/built-ins/DisposableStack/prototype/defer/this-not-object-throws.js new file mode 100644 index 00000000000..b02065bc07b --- /dev/null +++ b/test/built-ins/DisposableStack/prototype/defer/this-not-object-throws.js @@ -0,0 +1,53 @@ +// Copyright (C) 2023 Ron Buckton. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +esid: sec-disposablestack.prototype.defer +description: Throws a TypeError if this is not an Object +info: | + DisposableStack.prototype.defer ( ) + + 1. Let disposableStack be the this value. + 2. Perform ? RequireInternalSlot(disposableStack, [[DisposableState]]). + ... + + RequireInternalSlot ( O, internalSlot ) + + 1. If O is not an Object, throw a TypeError exception. + ... + +features: [explicit-resource-management] +---*/ + +assert.sameValue(typeof DisposableStack.prototype.defer, 'function'); + +var defer = DisposableStack.prototype.defer; + +assert.throws(TypeError, function() { + defer.call(undefined); +}, 'undefined'); + +assert.throws(TypeError, function() { + defer.call(null); +}, 'null'); + +assert.throws(TypeError, function() { + defer.call(true); +}, 'true'); + +assert.throws(TypeError, function() { + defer.call(false); +}, 'false'); + +assert.throws(TypeError, function() { + defer.call(1); +}, 'number'); + +assert.throws(TypeError, function() { + defer.call('object'); +}, 'string'); + +var s = Symbol(); +assert.throws(TypeError, function() { + defer.call(s); +}, 'symbol'); diff --git a/test/built-ins/DisposableStack/prototype/dispose/this-does-not-have-internal-disposablestate-throws.js b/test/built-ins/DisposableStack/prototype/dispose/this-does-not-have-internal-disposablestate-throws.js new file mode 100644 index 00000000000..8231e7296db --- /dev/null +++ b/test/built-ins/DisposableStack/prototype/dispose/this-does-not-have-internal-disposablestate-throws.js @@ -0,0 +1,42 @@ +// Copyright (C) 2023 Ron Buckton. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +esid: sec-disposablestack.prototype.dispose +description: Throws a TypeError if this does not have a [[DisposableState]] internal slot +info: | + DisposableStack.prototype.dispose ( ) + + 1. Let disposableStack be the this value. + 2. Perform ? RequireInternalSlot(disposableStack, [[DisposableState]]). + 3. ... + + RequireInternalSlot ( O, internalSlot ) + + 1. If O is not an Object, throw a TypeError exception. + 2. If O does not have an internalSlot internal slot, throw a TypeError exception. + ... + +features: [explicit-resource-management] +---*/ + +assert.sameValue(typeof DisposableStack.prototype.dispose, 'function'); + +var dispose = DisposableStack.prototype.dispose; + +assert.throws(TypeError, function() { + dispose.call({ ['[[DisposableState]]']: {} }); +}, 'Ordinary object without [[DisposableState]]'); + +assert.throws(TypeError, function() { + dispose.call(DisposableStack.prototype); +}, 'DisposableStack.prototype does not have a [[DisposableState]] internal slot'); + +assert.throws(TypeError, function() { + dispose.call(DisposableStack); +}, 'DisposableStack does not have a [[DisposableState]] internal slot'); + +var asyncStack = new AsyncDisposableStack(function() {}); +assert.throws(TypeError, function() { + dispose.call(asyncStack); +}, 'AsyncDisposableStack instance'); diff --git a/test/built-ins/DisposableStack/prototype/dispose/this-not-object-throws.js b/test/built-ins/DisposableStack/prototype/dispose/this-not-object-throws.js new file mode 100644 index 00000000000..3b966acb0e7 --- /dev/null +++ b/test/built-ins/DisposableStack/prototype/dispose/this-not-object-throws.js @@ -0,0 +1,53 @@ +// Copyright (C) 2023 Ron Buckton. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +esid: sec-disposablestack.prototype.dispose +description: Throws a TypeError if this is not an Object +info: | + DisposableStack.prototype.dispose ( ) + + 1. Let disposableStack be the this value. + 2. Perform ? RequireInternalSlot(disposableStack, [[DisposableState]]). + ... + + RequireInternalSlot ( O, internalSlot ) + + 1. If O is not an Object, throw a TypeError exception. + ... + +features: [explicit-resource-management] +---*/ + +assert.sameValue(typeof DisposableStack.prototype.dispose, 'function'); + +var dispose = DisposableStack.prototype.dispose; + +assert.throws(TypeError, function() { + dispose.call(undefined); +}, 'undefined'); + +assert.throws(TypeError, function() { + dispose.call(null); +}, 'null'); + +assert.throws(TypeError, function() { + dispose.call(true); +}, 'true'); + +assert.throws(TypeError, function() { + dispose.call(false); +}, 'false'); + +assert.throws(TypeError, function() { + dispose.call(1); +}, 'number'); + +assert.throws(TypeError, function() { + dispose.call('object'); +}, 'string'); + +var s = Symbol(); +assert.throws(TypeError, function() { + dispose.call(s); +}, 'symbol'); diff --git a/test/built-ins/DisposableStack/prototype/disposed/does-not-have-disposablestate-internal-slot.js b/test/built-ins/DisposableStack/prototype/disposed/does-not-have-disposablestate-internal-slot.js new file mode 100644 index 00000000000..aee0e3f3987 --- /dev/null +++ b/test/built-ins/DisposableStack/prototype/disposed/does-not-have-disposablestate-internal-slot.js @@ -0,0 +1,32 @@ +// Copyright (C) 2023 Ron Buckton. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. +/*--- +esid: sec-get-disposablestack.prototype.disposed +description: > + Throws a TypeError if `this` object does not have a [[DisposableState]] internal slot. +info: | + get DisposableStack.prototype.disposed + + 1. Let disposableStack be the this value. + 2. Perform ? RequireInternalSlot(disposableStack, [[DisposableState]]). + ... + + RequireInternalSlot ( O, internalSlot ) + + 1. If O is not an Object, throw a TypeError exception. + 2. If O does not have an internalSlot internal slot, throw a TypeError exception. + ... + +features: [explicit-resource-management] +---*/ + +var descriptor = Object.getOwnPropertyDescriptor(DisposableStack.prototype, 'disposed'); + +var stack = new DisposableStack(); + +// Does not throw +descriptor.get.call(stack); + +assert.throws(TypeError, function() { + descriptor.get.call([]); +}); diff --git a/test/built-ins/DisposableStack/prototype/disposed/getter.js b/test/built-ins/DisposableStack/prototype/disposed/getter.js new file mode 100644 index 00000000000..1878bd1234c --- /dev/null +++ b/test/built-ins/DisposableStack/prototype/disposed/getter.js @@ -0,0 +1,32 @@ +// Copyright (C) 2023 Ron Buckton. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. +/*--- +esid: sec-get-disposablestack.prototype.disposed +description: > + Property type and descriptor. +info: | + get DisposableStack.prototype.disposed + + 17 ECMAScript Standard Built-in Objects + +includes: [propertyHelper.js] +features: [explicit-resource-management] +---*/ + +var descriptor = Object.getOwnPropertyDescriptor(DisposableStack.prototype, 'disposed'); + +assert.sameValue( + typeof descriptor.get, + 'function', + 'typeof descriptor.get is function' +); +assert.sameValue( + typeof descriptor.set, + 'undefined', + 'typeof descriptor.set is undefined' +); + +verifyProperty(DisposableStack.prototype, 'disposed', { + enumerable: false; + configurable: true; +}); diff --git a/test/built-ins/DisposableStack/prototype/disposed/this-not-object-throw.js b/test/built-ins/DisposableStack/prototype/disposed/this-not-object-throw.js new file mode 100644 index 00000000000..d185b773965 --- /dev/null +++ b/test/built-ins/DisposableStack/prototype/disposed/this-not-object-throw.js @@ -0,0 +1,50 @@ +// Copyright (C) 2023 Ron Buckton. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. +/*--- +esid: sec-get-disposablestack.prototype.disposed +description: > + Throws a TypeError if `this` is not an Object. +info: | + get DisposableStack.prototype.disposed + + 1. Let disposableStack be the this value. + 2. Perform ? RequireInternalSlot(disposableStack, [[DisposableState]]). + ... + + RequireInternalSlot ( O, internalSlot ) + + 1. If O is not an Object, throw a TypeError exception. + ... + +features: [explicit-resource-management,Symbol] +---*/ + +var descriptor = Object.getOwnPropertyDescriptor(DisposableStack.prototype, 'disposed'); + +assert.throws(TypeError, function() { + descriptor.get.call(1); +}); + +assert.throws(TypeError, function() { + descriptor.get.call(false); +}); + +assert.throws(TypeError, function() { + descriptor.get.call(1); +}); + +assert.throws(TypeError, function() { + descriptor.get.call(''); +}); + +assert.throws(TypeError, function() { + descriptor.get.call(undefined); +}); + +assert.throws(TypeError, function() { + descriptor.get.call(null); +}); + +assert.throws(TypeError, function() { + descriptor.get.call(Symbol()); +}); diff --git a/test/built-ins/DisposableStack/prototype/move/this-does-not-have-internal-disposablestate-throws.js b/test/built-ins/DisposableStack/prototype/move/this-does-not-have-internal-disposablestate-throws.js new file mode 100644 index 00000000000..b39d5079523 --- /dev/null +++ b/test/built-ins/DisposableStack/prototype/move/this-does-not-have-internal-disposablestate-throws.js @@ -0,0 +1,42 @@ +// Copyright (C) 2023 Ron Buckton. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +esid: sec-disposablestack.prototype.move +description: Throws a TypeError if this does not have a [[DisposableState]] internal slot +info: | + DisposableStack.prototype.move ( ) + + 1. Let disposableStack be the this value. + 2. Perform ? RequireInternalSlot(disposableStack, [[DisposableState]]). + 3. ... + + RequireInternalSlot ( O, internalSlot ) + + 1. If O is not an Object, throw a TypeError exception. + 2. If O does not have an internalSlot internal slot, throw a TypeError exception. + ... + +features: [explicit-resource-management] +---*/ + +assert.sameValue(typeof DisposableStack.prototype.move, 'function'); + +var move = DisposableStack.prototype.move; + +assert.throws(TypeError, function() { + move.call({ ['[[DisposableState]]']: {} }); +}, 'Ordinary object without [[DisposableState]]'); + +assert.throws(TypeError, function() { + move.call(DisposableStack.prototype); +}, 'DisposableStack.prototype does not have a [[DisposableState]] internal slot'); + +assert.throws(TypeError, function() { + move.call(DisposableStack); +}, 'DisposableStack does not have a [[DisposableState]] internal slot'); + +var asyncStack = new AsyncDisposableStack(); +assert.throws(TypeError, function() { + move.call(asyncStack); +}, 'AsyncDisposableStack instance'); diff --git a/test/built-ins/DisposableStack/prototype/move/this-not-object-throws.js b/test/built-ins/DisposableStack/prototype/move/this-not-object-throws.js new file mode 100644 index 00000000000..973f7f01772 --- /dev/null +++ b/test/built-ins/DisposableStack/prototype/move/this-not-object-throws.js @@ -0,0 +1,53 @@ +// Copyright (C) 2023 Ron Buckton. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +esid: sec-disposablestack.prototype.move +description: Throws a TypeError if this is not an Object +info: | + DisposableStack.prototype.move ( ) + + 1. Let disposableStack be the this value. + 2. Perform ? RequireInternalSlot(disposableStack, [[DisposableState]]). + ... + + RequireInternalSlot ( O, internalSlot ) + + 1. If O is not an Object, throw a TypeError exception. + ... + +features: [explicit-resource-management] +---*/ + +assert.sameValue(typeof DisposableStack.prototype.move, 'function'); + +var move = DisposableStack.prototype.move; + +assert.throws(TypeError, function() { + move.call(undefined); +}, 'undefined'); + +assert.throws(TypeError, function() { + move.call(null); +}, 'null'); + +assert.throws(TypeError, function() { + move.call(true); +}, 'true'); + +assert.throws(TypeError, function() { + move.call(false); +}, 'false'); + +assert.throws(TypeError, function() { + move.call(1); +}, 'number'); + +assert.throws(TypeError, function() { + move.call('object'); +}, 'string'); + +var s = Symbol(); +assert.throws(TypeError, function() { + move.call(s); +}, 'symbol'); diff --git a/test/built-ins/DisposableStack/prototype/proto.js b/test/built-ins/DisposableStack/prototype/proto.js new file mode 100644 index 00000000000..b7b1f72a7d2 --- /dev/null +++ b/test/built-ins/DisposableStack/prototype/proto.js @@ -0,0 +1,14 @@ +// Copyright (C) 2023 Ron Buckton. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +description: The prototype of DisposableStack.prototype is Object.prototype +esid: sec-properties-of-the-disposablestack-prototype-object +info: | + The value of the [[Prototype]] internal slot of the DisposableStack prototype object + is the intrinsic object %Object.prototype%. +features: [explicit-resource-management] +---*/ + +var proto = Object.getPrototypeOf(DisposableStack.prototype); +assert.sameValue(proto, Object.prototype); diff --git a/test/built-ins/DisposableStack/prototype/use/this-does-not-have-internal-disposablestate-throws.js b/test/built-ins/DisposableStack/prototype/use/this-does-not-have-internal-disposablestate-throws.js new file mode 100644 index 00000000000..01283c7b618 --- /dev/null +++ b/test/built-ins/DisposableStack/prototype/use/this-does-not-have-internal-disposablestate-throws.js @@ -0,0 +1,44 @@ +// Copyright (C) 2023 Ron Buckton. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +esid: sec-disposablestack.prototype.use +description: Throws a TypeError if this does not have a [[DisposableState]] internal slot +info: | + DisposableStack.prototype.use ( value ) + + 1. Let disposableStack be the this value. + 2. Perform ? RequireInternalSlot(disposableStack, [[DisposableState]]). + 3. If disposableStack.[[DisposableState]] is disposed, throw a ReferenceError exception. + 4. Perform ? AddDisposableResource(disposableStack.[[DisposeCapability]], value, sync-dispose). + 5. Return value. + + RequireInternalSlot ( O, internalSlot ) + + 1. If O is not an Object, throw a TypeError exception. + 2. If O does not have an internalSlot internal slot, throw a TypeError exception. + ... + +features: [explicit-resource-management] +---*/ + +assert.sameValue(typeof DisposableStack.prototype.use, 'function'); + +var use = DisposableStack.prototype.use; + +assert.throws(TypeError, function() { + use.call({ ['[[DisposableState]]']: {} }); +}, 'Ordinary object without [[DisposableState]]'); + +assert.throws(TypeError, function() { + use.call(DisposableStack.prototype); +}, 'DisposableStack.prototype does not have a [[DisposableState]] internal slot'); + +assert.throws(TypeError, function() { + use.call(DisposableStack); +}, 'DisposableStack does not have a [[DisposableState]] internal slot'); + +var asyncStack = new AsyncDisposableStack(function() {}); +assert.throws(TypeError, function() { + use.call(asyncStack); +}, 'AsyncDisposableStack instance'); diff --git a/test/built-ins/DisposableStack/prototype/use/this-not-object-throws.js b/test/built-ins/DisposableStack/prototype/use/this-not-object-throws.js new file mode 100644 index 00000000000..cf960789ab6 --- /dev/null +++ b/test/built-ins/DisposableStack/prototype/use/this-not-object-throws.js @@ -0,0 +1,53 @@ +// Copyright (C) 2023 Ron Buckton. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +esid: sec-disposablestack.prototype.use +description: Throws a TypeError if this is not an Object +info: | + DisposableStack.prototype.use ( value ) + + 1. Let disposableStack be the this value. + 2. Perform ? RequireInternalSlot(disposableStack, [[DisposableState]]). + ... + + RequireInternalSlot ( O, internalSlot ) + + 1. If O is not an Object, throw a TypeError exception. + ... + +features: [explicit-resource-management] +---*/ + +assert.sameValue(typeof DisposableStack.prototype.use, 'function'); + +var use = DisposableStack.prototype.use; + +assert.throws(TypeError, function() { + use.call(undefined); +}, 'undefined'); + +assert.throws(TypeError, function() { + use.call(null); +}, 'null'); + +assert.throws(TypeError, function() { + use.call(true); +}, 'true'); + +assert.throws(TypeError, function() { + use.call(false); +}, 'false'); + +assert.throws(TypeError, function() { + use.call(1); +}, 'number'); + +assert.throws(TypeError, function() { + use.call('object'); +}, 'string'); + +var s = Symbol(); +assert.throws(TypeError, function() { + use.call(s); +}, 'symbol'); diff --git a/test/built-ins/DisposableStack/prototype/use/throws-if-value-not-object.js b/test/built-ins/DisposableStack/prototype/use/throws-if-value-not-object.js new file mode 100644 index 00000000000..84836a63159 --- /dev/null +++ b/test/built-ins/DisposableStack/prototype/use/throws-if-value-not-object.js @@ -0,0 +1,48 @@ +// Copyright (C) 2023 Ron Buckton. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +esid: sec-disposablestack.prototype.use +description: Throws if the argument is not an object and is neither null nor undefined. +info: | + DisposableStack.prototype.use ( value ) + + 1. Let disposableStack be the this value. + 2. Perform ? RequireInternalSlot(disposableStack, [[DisposableState]]). + 3. If disposableStack.[[DisposableState]] is disposed, throw a ReferenceError exception. + 4. Perform ? AddDisposableResource(disposableStack.[[DisposeCapability]], value, sync-dispose). + ... + + AddDisposableResource ( disposeCapability, V, hint [, method ] ) + + 1. If method is not present then, + a. If V is either null or undefined and hint is sync-dispose, then + i. Return unused + b. Let resource be ? CreateDisposableResource(V, hint). + ... + ... + +features: [explicit-resource-management] +---*/ + +var stack = new DisposableStack(); +assert.throws(TypeError, function() { + stack.use(true); +}, 'true'); + +assert.throws(TypeError, function() { + stack.use(false); +}, 'false'); + +assert.throws(TypeError, function() { + stack.use(1); +}, 'number'); + +assert.throws(TypeError, function() { + stack.use('object'); +}, 'string'); + +var s = Symbol(); +assert.throws(TypeError, function() { + stack.use(s); +}, 'symbol'); diff --git a/test/built-ins/FinalizationRegistry/gc-has-one-chance-to-call-cleanupCallback-for-object.js b/test/built-ins/FinalizationRegistry/gc-has-one-chance-to-call-cleanupCallback-for-object.js deleted file mode 100644 index 54a482e8c99..00000000000 --- a/test/built-ins/FinalizationRegistry/gc-has-one-chance-to-call-cleanupCallback-for-object.js +++ /dev/null @@ -1,96 +0,0 @@ -// Copyright (C) 2019 Leo Balter. All rights reserved. -// This code is governed by the BSD license found in the LICENSE file. - -/*--- -esid: sec-finalization-registry-target -description: > - cleanupCallback has only one optional chance to be called for a GC that cleans - up a registered Object target. -info: | - FinalizationRegistry.prototype.cleanupSome ( [ _callback_ ] ) - 3. If _callback_ is present and IsCallable(_callback_) is *false*, throw a - *TypeError* exception. - 4. Perform ? CleanupFinalizationRegistry(_finalizationRegistry_, _callback_). - 5. Return *undefined*. - - Execution - - At any time, if a set of objects and/or symbols _S_ is not live, an ECMAScript - implementation may perform the following steps atomically: - - 1. For each element _value_ of _S_, do - ... - b. For each FinalizationRegistry _fg_ such that _fg_.[[Cells]] contains a - Record _cell_ such that _cell_.[[WeakRefTarget]] is _value_, - i. Set _cell_.[[WeakRefTarget]] to ~empty~. - ii. Optionally, perform HostEnqueueFinalizationRegistryCleanupJob(_fg_). -features: [FinalizationRegistry.prototype.cleanupSome, FinalizationRegistry, async-functions, host-gc-required] -flags: [async, non-deterministic] -includes: [async-gc.js, compareArray.js] ----*/ - -let cleanupCallback = 0; -let holdings = []; -function cb(holding) { - holdings.push(holding); -} - -let finalizationRegistry = new FinalizationRegistry(function() { - cleanupCallback += 1; -}); - -function emptyCells() { - let target = {}; - finalizationRegistry.register(target, 'a'); - - let prom = asyncGC(target); - target = null; - - return prom; -} - -emptyCells().then(async function() { - await Promise.resolve(1); - - finalizationRegistry.cleanupSome(cb); - - // cleanupSome will be invoked if there are empty cells left. If the - // cleanupCallback already ran, then cb won't be called. - let expectedCalled = cleanupCallback === 1 ? 0 : 1; - // This asserts the registered object was emptied in the previous GC. - assert.sameValue(holdings.length, expectedCalled, 'cleanupSome callback for the first time'); - - // At this point, we can't assert if cleanupCallback was called, because it's - // optional. Although, we can finally assert it's not gonna be called anymore - // for the other executions of the Garbage Collector. - // The chance of having it called only happens right after the - // cell.[[WeakRefTarget]] is set to empty. - assert(cleanupCallback >= 0, 'cleanupCallback might be 0'); - assert(cleanupCallback <= 1, 'cleanupCallback might be 1'); - - // Restoring the cleanupCallback variable to 0 will help us asserting the - // finalizationRegistry callback is not called again. - cleanupCallback = 0; - - await $262.gc(); - await Promise.resolve(2); // tick - - finalizationRegistry.cleanupSome(cb); - - assert.sameValue(holdings.length, expectedCalled, 'cleanupSome callback is not called anymore, no empty cells'); - assert.sameValue(cleanupCallback, 0, 'cleanupCallback is not called again #1'); - - await $262.gc(); - await Promise.resolve(3); // tick - - finalizationRegistry.cleanupSome(cb); - - assert.sameValue(holdings.length, expectedCalled, 'cleanupSome callback is not called again #2'); - assert.sameValue(cleanupCallback, 0, 'cleanupCallback is not called again #2'); - - if (holdings.length) { - assert.compareArray(holdings, ['a']); - } - - await $262.gc(); -}).then($DONE, resolveAsyncGC); diff --git a/test/built-ins/FinalizationRegistry/prototype/cleanupSome/callback-not-callable-throws.js b/test/built-ins/FinalizationRegistry/prototype/cleanupSome/callback-not-callable-throws.js deleted file mode 100644 index 94bb62561a9..00000000000 --- a/test/built-ins/FinalizationRegistry/prototype/cleanupSome/callback-not-callable-throws.js +++ /dev/null @@ -1,53 +0,0 @@ -// Copyright (C) 2019 Leo Balter. All rights reserved. -// This code is governed by the BSD license found in the LICENSE file. - -/*--- -esid: sec-finalization-registry.prototype.cleanupSome -description: Throws a TypeError if callback is not callable -info: | - FinalizationRegistry.prototype.cleanupSome ( [ callback ] ) - - 1. Let finalizationRegistry be the this value. - 2. If Type(finalizationRegistry) is not Object, throw a TypeError exception. - 3. If finalizationRegistry does not have a [[Cells]] internal slot, throw a TypeError exception. - 4. If callback is not undefined and IsCallable(callback) is false, throw a TypeError exception. - ... -features: [FinalizationRegistry.prototype.cleanupSome, FinalizationRegistry] ----*/ - -assert.sameValue(typeof FinalizationRegistry.prototype.cleanupSome, 'function'); - -var finalizationRegistry = new FinalizationRegistry(function() {}); - -assert.throws(TypeError, function() { - finalizationRegistry.cleanupSome(null); -}, 'null'); - -assert.throws(TypeError, function() { - finalizationRegistry.cleanupSome(true); -}, 'true'); - -assert.throws(TypeError, function() { - finalizationRegistry.cleanupSome(false); -}, 'false'); - -assert.throws(TypeError, function() { - finalizationRegistry.cleanupSome(1); -}, 'number'); - -assert.throws(TypeError, function() { - finalizationRegistry.cleanupSome('object'); -}, 'string'); - -var s = Symbol(); -assert.throws(TypeError, function() { - finalizationRegistry.cleanupSome(s); -}, 'symbol'); - -assert.throws(TypeError, function() { - finalizationRegistry.cleanupSome({}); -}, 'object'); - -assert.throws(TypeError, function() { - finalizationRegistry.cleanupSome(FinalizationRegistry.prototype); -}, 'FinalizationRegistry.prototype'); diff --git a/test/built-ins/FinalizationRegistry/prototype/cleanupSome/cleanup-prevented-with-reference.js b/test/built-ins/FinalizationRegistry/prototype/cleanupSome/cleanup-prevented-with-reference.js deleted file mode 100644 index fbe6b2368d7..00000000000 --- a/test/built-ins/FinalizationRegistry/prototype/cleanupSome/cleanup-prevented-with-reference.js +++ /dev/null @@ -1,47 +0,0 @@ -// Copyright (C) 2019 Leo Balter. All rights reserved. -// This code is governed by the BSD license found in the LICENSE file. - -/*--- -esid: sec-finalization-registry.prototype.cleanupSome -description: Cleanup might be prevented with a reference usage; -info: | - FinalizationRegistry.prototype.cleanupSome ( [ callback ] ) - - 1. Let finalizationRegistry be the this value. - 2. If Type(finalizationRegistry) is not Object, throw a TypeError exception. - 3. If finalizationRegistry does not have a [[Cells]] internal slot, throw a TypeError exception. - 4. If callback is not undefined and IsCallable(callback) is false, throw a TypeError exception. - 5. Perform ? CleanupFinalizationRegistry(finalizationRegistry, callback). - 6. Return undefined. -features: [FinalizationRegistry.prototype.cleanupSome, FinalizationRegistry, host-gc-required] -includes: [async-gc.js] -flags: [async, non-deterministic] ----*/ - -var holdingsList = []; -function cb(holding) { - holdingsList.push(holding); -}; -var finalizationRegistry = new FinalizationRegistry(function() {}); - -var referenced = {}; - -function emptyCells() { - var target = {}; - finalizationRegistry.register(target, 'target!'); - finalizationRegistry.register(referenced, 'referenced'); - - var prom = asyncGC(target); - target = null; - - return prom; -} - -emptyCells().then(function() { - finalizationRegistry.cleanupSome(cb); - - assert.sameValue(holdingsList.length, 1); - assert.sameValue(holdingsList[0], 'target!'); - - assert.sameValue(typeof referenced, 'object', 'referenced preserved'); -}).then($DONE, resolveAsyncGC); diff --git a/test/built-ins/FinalizationRegistry/prototype/cleanupSome/cleanup-prevented-with-unregister.js b/test/built-ins/FinalizationRegistry/prototype/cleanupSome/cleanup-prevented-with-unregister.js deleted file mode 100644 index 808e57608c7..00000000000 --- a/test/built-ins/FinalizationRegistry/prototype/cleanupSome/cleanup-prevented-with-unregister.js +++ /dev/null @@ -1,54 +0,0 @@ -// Copyright (C) 2019 Leo Balter. All rights reserved. -// This code is governed by the BSD license found in the LICENSE file. - -/*--- -esid: sec-finalization-registry.prototype.cleanupSome -description: Cleanup might be prevented with an unregister usage -info: | - FinalizationRegistry.prototype.cleanupSome ( [ callback ] ) - - 1. Let finalizationRegistry be the this value. - 2. If Type(finalizationRegistry) is not Object, throw a TypeError exception. - 3. If finalizationRegistry does not have a [[Cells]] internal slot, throw a TypeError exception. - 4. If callback is not undefined and IsCallable(callback) is false, throw a TypeError exception. - 5. Perform ? CleanupFinalizationRegistry(finalizationRegistry, callback). - 6. Return undefined. - - FinalizationRegistry.prototype.unregister ( unregisterToken ) - - 1. Let removed be false. - 2. For each Record { [[Target]], [[Holdings]], [[UnregisterToken]] } cell that is an element of finalizationRegistry.[[Cells]], do - a. If SameValue(cell.[[UnregisterToken]], unregisterToken) is true, then - i. Remove cell from finalizationRegistry.[[Cells]]. - ii. Set removed to true. - 3. Return removed. -features: [FinalizationRegistry.prototype.cleanupSome, FinalizationRegistry, host-gc-required] -includes: [async-gc.js] -flags: [async, non-deterministic] ----*/ - -var token = {}; -var finalizationRegistry = new FinalizationRegistry(function() {}); - -function emptyCells() { - var target = {}; - finalizationRegistry.register(target, 'target!', token); - - var prom = asyncGC(target); - target = null; - - return prom; -} - -emptyCells().then(function() { - var called = 0; - - var res = finalizationRegistry.unregister(token); - assert.sameValue(res, true, 'unregister target before iterating over it in cleanup'); - - finalizationRegistry.cleanupSome(function cb(holding) { - called += 1; - }); - - assert.sameValue(called, 0, 'callback was not called'); -}).then($DONE, resolveAsyncGC); diff --git a/test/built-ins/FinalizationRegistry/prototype/cleanupSome/custom-this.js b/test/built-ins/FinalizationRegistry/prototype/cleanupSome/custom-this.js deleted file mode 100644 index 1ce10b3aade..00000000000 --- a/test/built-ins/FinalizationRegistry/prototype/cleanupSome/custom-this.js +++ /dev/null @@ -1,26 +0,0 @@ -// Copyright (C) 2019 Leo Balter. All rights reserved. -// This code is governed by the BSD license found in the LICENSE file. - -/*--- -esid: sec-finalization-registry.prototype.cleanupSome -description: Return values applying custom this -info: | - FinalizationRegistry.prototype.cleanupSome ( [ callback ] ) - - 1. Let finalizationRegistry be the this value. - 2. If Type(finalizationRegistry) is not Object, throw a TypeError exception. - 3. If finalizationRegistry does not have a [[Cells]] internal slot, throw a TypeError exception. - 4. If callback is not undefined and IsCallable(callback) is false, throw a TypeError exception. - 5. Perform ! CleanupFinalizationRegistry(finalizationRegistry, callback). - 6. Return undefined. -features: [FinalizationRegistry.prototype.cleanupSome, FinalizationRegistry] ----*/ - -var fn = function() {}; -var cleanupSome = FinalizationRegistry.prototype.cleanupSome; -var finalizationRegistry = new FinalizationRegistry(fn); - -var cb = function() {}; - -assert.sameValue(cleanupSome.call(finalizationRegistry, cb), undefined); -assert.sameValue(cleanupSome.call(finalizationRegistry, fn), undefined), 'reuse the same cleanup callback fn'; diff --git a/test/built-ins/FinalizationRegistry/prototype/cleanupSome/holdings-multiple-values.js b/test/built-ins/FinalizationRegistry/prototype/cleanupSome/holdings-multiple-values.js deleted file mode 100644 index e08cc91ee4c..00000000000 --- a/test/built-ins/FinalizationRegistry/prototype/cleanupSome/holdings-multiple-values.js +++ /dev/null @@ -1,69 +0,0 @@ -// Copyright (C) 2019 Leo Balter. All rights reserved. -// This code is governed by the BSD license found in the LICENSE file. - -/*--- -esid: sec-properties-of-the-finalization-registry-constructor -description: > - Iterates over different type values in holdings -info: | - FinalizationRegistry.prototype.cleanupSome ( [ callback ] ) - - 1. Let finalizationRegistry be the this value. - ... - 5. Perform ! CleanupFinalizationRegistry(finalizationRegistry, callback). - ... - - CleanupFinalizationRegistry ( finalizationRegistry [ , callback ] ) - - ... - 3. While finalizationRegistry.[[Cells]] contains a Record cell such that cell.[[WeakRefTarget]] is ~empty~, then an implementation may perform the following steps, - a. Choose any such cell. - b. Remove cell from finalizationRegistry.[[Cells]]. - c. Perform ? Call(callback, undefined, << cell.[[HeldValue]] >>). - ... - - -features: [FinalizationRegistry.prototype.cleanupSome, FinalizationRegistry, Symbol, host-gc-required] -includes: [async-gc.js] -flags: [async, non-deterministic] ----*/ - -function check(value, expectedName) { - var holdings = []; - var called = 0; - var finalizationRegistry = new FinalizationRegistry(function() {}); - - function callback(holding) { - called += 1; - holdings.push(holding); - } - - // This is internal to avoid conflicts - function emptyCells(value) { - var target = {}; - finalizationRegistry.register(target, value); - - var prom = asyncGC(target); - target = null; - - return prom; - } - - return emptyCells(value).then(function() { - finalizationRegistry.cleanupSome(callback); - assert.sameValue(called, 1, expectedName); - assert.sameValue(holdings.length, 1, expectedName); - assert.sameValue(holdings[0], value, expectedName); - }); -} - -Promise.all([ - check(undefined, 'undefined'), - check(null, 'null'), - check('', 'the empty string'), - check({}, 'object'), - check(42, 'number'), - check(true, 'true'), - check(false, 'false'), - check(Symbol(1), 'symbol'), -]).then(() => $DONE(), resolveAsyncGC); diff --git a/test/built-ins/FinalizationRegistry/prototype/cleanupSome/length.js b/test/built-ins/FinalizationRegistry/prototype/cleanupSome/length.js deleted file mode 100644 index 46adfedfecd..00000000000 --- a/test/built-ins/FinalizationRegistry/prototype/cleanupSome/length.js +++ /dev/null @@ -1,32 +0,0 @@ -// Copyright (C) 2019 Leo Balter. All rights reserved. -// This code is governed by the BSD license found in the LICENSE file. - -/*--- -esid: sec-finalization-registry.prototype.cleanupSome -description: FinalizationRegistry.prototype.cleanupSome.length property descriptor -info: | - FinalizationRegistry.prototype.cleanupSome ( [ callback ] ) - - 17 ECMAScript Standard Built-in Objects - - Every built-in function object, including constructors, has a length - property whose value is an integer. Unless otherwise specified, this - value is equal to the largest number of named arguments shown in the - subclause headings for the function description. Optional parameters - (which are indicated with brackets: [ ]) or rest parameters (which - are shown using the form «...name») are not included in the default - argument count. - - Unless otherwise specified, the length property of a built-in - function object has the attributes { [[Writable]]: false, - [[Enumerable]]: false, [[Configurable]]: true }. -includes: [propertyHelper.js] -features: [FinalizationRegistry.prototype.cleanupSome, FinalizationRegistry] ----*/ - -verifyProperty(FinalizationRegistry.prototype.cleanupSome, 'length', { - value: 0, - writable: false, - enumerable: false, - configurable: true -}); diff --git a/test/built-ins/FinalizationRegistry/prototype/cleanupSome/name.js b/test/built-ins/FinalizationRegistry/prototype/cleanupSome/name.js deleted file mode 100644 index 27dd5f67d3d..00000000000 --- a/test/built-ins/FinalizationRegistry/prototype/cleanupSome/name.js +++ /dev/null @@ -1,31 +0,0 @@ -// Copyright (C) 2019 Leo Balter. All rights reserved. -// This code is governed by the BSD license found in the LICENSE file. - -/*--- -esid: sec-finalization-registry.prototype.cleanupSome -description: FinalizationRegistry.prototype.cleanupSome.name property descriptor -info: | - FinalizationRegistry.prototype.cleanupSome.name value and property descriptor - - 17 ECMAScript Standard Built-in Objects - - Every built-in function object, including constructors, that is not - identified as an anonymous function has a name property whose value - is a String. Unless otherwise specified, this value is the name that - is given to the function in this specification. For functions that - are specified as properties of objects, the name value is the - property name string used to access the function. [...] - - Unless otherwise specified, the name property of a built-in function - object, if it exists, has the attributes { [[Writable]]: false, - [[Enumerable]]: false, [[Configurable]]: true }. -includes: [propertyHelper.js] -features: [FinalizationRegistry.prototype.cleanupSome, FinalizationRegistry] ----*/ - -verifyProperty(FinalizationRegistry.prototype.cleanupSome, 'name', { - value: 'cleanupSome', - writable: false, - enumerable: false, - configurable: true -}); diff --git a/test/built-ins/FinalizationRegistry/prototype/cleanupSome/not-a-constructor.js b/test/built-ins/FinalizationRegistry/prototype/cleanupSome/not-a-constructor.js deleted file mode 100644 index 136a9c471a7..00000000000 --- a/test/built-ins/FinalizationRegistry/prototype/cleanupSome/not-a-constructor.js +++ /dev/null @@ -1,33 +0,0 @@ -// Copyright (C) 2020 Rick Waldron. All rights reserved. -// This code is governed by the BSD license found in the LICENSE file. - -/*--- -esid: sec-ecmascript-standard-built-in-objects -description: > - FinalizationRegistry.prototype.cleanupSome does not implement [[Construct]], is not new-able -info: | - ECMAScript Function Objects - - Built-in function objects that are not identified as constructors do not - implement the [[Construct]] internal method unless otherwise specified in - the description of a particular function. - - sec-evaluatenew - - ... - 7. If IsConstructor(constructor) is false, throw a TypeError exception. - ... -includes: [isConstructor.js] -features: [Reflect.construct, FinalizationRegistry, FinalizationRegistry.prototype.cleanupSome, arrow-function] ----*/ - -assert.sameValue( - isConstructor(FinalizationRegistry.prototype.cleanupSome), - false, - 'isConstructor(FinalizationRegistry.prototype.cleanupSome) must return false' -); - -assert.throws(TypeError, () => { - let fr = new FinalizationRegistry(() => {}); new fr.cleanupSome(() => {}); -}); - diff --git a/test/built-ins/FinalizationRegistry/prototype/cleanupSome/prop-desc.js b/test/built-ins/FinalizationRegistry/prototype/cleanupSome/prop-desc.js deleted file mode 100644 index 18cd489e955..00000000000 --- a/test/built-ins/FinalizationRegistry/prototype/cleanupSome/prop-desc.js +++ /dev/null @@ -1,24 +0,0 @@ -// Copyright (C) 2019 Leo Balter. All rights reserved. -// This code is governed by the BSD license found in the LICENSE file. - -/*--- -esid: sec-finalization-registry.prototype.cleanupSome -description: > - Property descriptor of FinalizationRegistry.prototype.cleanupSome -info: | - 17 ECMAScript Standard Built-in Objects: - - Every other data property described in clauses 18 through 26 and in Annex B.2 - has the attributes { [[Writable]]: true, [[Enumerable]]: false, - [[Configurable]]: true } unless otherwise specified. -includes: [propertyHelper.js] -features: [FinalizationRegistry.prototype.cleanupSome, FinalizationRegistry] ----*/ - -assert.sameValue(typeof FinalizationRegistry.prototype.cleanupSome, 'function'); - -verifyProperty(FinalizationRegistry.prototype, 'cleanupSome', { - enumerable: false, - writable: true, - configurable: true -}); diff --git a/test/built-ins/FinalizationRegistry/prototype/cleanupSome/reentrancy.js b/test/built-ins/FinalizationRegistry/prototype/cleanupSome/reentrancy.js deleted file mode 100644 index 786f0093591..00000000000 --- a/test/built-ins/FinalizationRegistry/prototype/cleanupSome/reentrancy.js +++ /dev/null @@ -1,51 +0,0 @@ -// Copyright (C) 2019 Leo Balter. All rights reserved. -// This code is governed by the BSD license found in the LICENSE file. - -/*--- -esid: sec-properties-of-the-finalization-registry-constructor -description: > - The cleanupSome() method can be reentered -info: | - FinalizationRegistry.prototype.cleanupSome ( [ callback ] ) - -features: [FinalizationRegistry.prototype.cleanupSome, FinalizationRegistry, host-gc-required] -includes: [async-gc.js] -flags: [async, non-deterministic] ----*/ - -var called = 0; -var endOfCall = 0; -var finalizationRegistry = new FinalizationRegistry(function() {}); - -function callback(holding) { - called += 1; - - if (called === 1) { - // Atempt to re-enter the callback. - var nestedCallbackRan = false; - finalizationRegistry.cleanupSome(() => { nestedCallbackRan = true }); - assert.sameValue(nestedCallbackRan, true); - } - - endOfCall += 1; -} - -function emptyCells() { - var o1 = {}; - var o2 = {}; - // Register more than one objects to test reentrancy. - finalizationRegistry.register(o1, 'holdings 1'); - finalizationRegistry.register(o2, 'holdings 2'); - - var prom = asyncGC(o1); - o1 = null; - - return prom; -} - -emptyCells().then(function() { - finalizationRegistry.cleanupSome(callback); - - assert.sameValue(called, 1, 'callback was called'); - assert.sameValue(endOfCall, 1, 'callback finished'); -}).then($DONE, resolveAsyncGC); diff --git a/test/built-ins/FinalizationRegistry/prototype/cleanupSome/return-undefined-with-gc.js b/test/built-ins/FinalizationRegistry/prototype/cleanupSome/return-undefined-with-gc.js deleted file mode 100644 index 83d21071624..00000000000 --- a/test/built-ins/FinalizationRegistry/prototype/cleanupSome/return-undefined-with-gc.js +++ /dev/null @@ -1,66 +0,0 @@ -// Copyright (C) 2019 Leo Balter. All rights reserved. -// This code is governed by the BSD license found in the LICENSE file. - -/*--- -esid: sec-finalization-registry.prototype.cleanupSome -description: Return undefined regardless the result of CleanupFinalizationRegistry -info: | - FinalizationRegistry.prototype.cleanupSome ( [ callback ] ) - - 1. Let finalizationRegistry be the this value. - 2. If Type(finalizationRegistry) is not Object, throw a TypeError exception. - 3. If finalizationRegistry does not have a [[Cells]] internal slot, throw a TypeError exception. - 4. If callback is not undefined and IsCallable(callback) is false, throw a TypeError exception. - 5. Perform ? CleanupFinalizationRegistry(finalizationRegistry, callback). - 6. Return undefined. -features: [FinalizationRegistry.prototype.cleanupSome, FinalizationRegistry, arrow-function, async-functions, async-iteration, class, host-gc-required] -includes: [async-gc.js] -flags: [async, non-deterministic] ----*/ - -var called; -var fn = function() { - called += 1; - return 39; -}; -var cb = function() { - called += 1; - return 42; -}; -var finalizationRegistry = new FinalizationRegistry(fn); - -function emptyCells() { - var target = {}; - finalizationRegistry.register(target); - - var prom = asyncGC(target); - target = null; - - return prom; -} - -emptyCells().then(function() { - called = 0; - assert.sameValue(finalizationRegistry.cleanupSome(cb), undefined, 'regular callback'); - assert.sameValue(called, 1); -}).then(emptyCells).then(function() { - called = 0; - assert.sameValue(finalizationRegistry.cleanupSome(fn), undefined, 'regular callback, same FG cleanup function'); - assert.sameValue(called, 1); -}).then(emptyCells).then(function() { - called = 0; - assert.sameValue(finalizationRegistry.cleanupSome(), undefined, 'undefined (implicit) callback, defer to FB callback'); - assert.sameValue(called, 1); -}).then(emptyCells).then(function() { - called = 0; - assert.sameValue(finalizationRegistry.cleanupSome(undefined), undefined, 'undefined (explicit) callback, defer to FB callback'); - assert.sameValue(called, 1); -}).then(emptyCells).then(function() { - assert.sameValue(finalizationRegistry.cleanupSome(() => 1), undefined, 'arrow function'); -}).then(emptyCells).then(function() { - assert.sameValue(finalizationRegistry.cleanupSome(async function() {}), undefined, 'async function'); -}).then(emptyCells).then(function() { - assert.sameValue(finalizationRegistry.cleanupSome(function *() {}), undefined, 'generator'); -}).then(emptyCells).then(function() { - assert.sameValue(finalizationRegistry.cleanupSome(async function *() {}), undefined, 'async generator'); -}).then($DONE, resolveAsyncGC); diff --git a/test/built-ins/FinalizationRegistry/prototype/cleanupSome/return-undefined.js b/test/built-ins/FinalizationRegistry/prototype/cleanupSome/return-undefined.js deleted file mode 100644 index ba0b53914f9..00000000000 --- a/test/built-ins/FinalizationRegistry/prototype/cleanupSome/return-undefined.js +++ /dev/null @@ -1,41 +0,0 @@ -// Copyright (C) 2019 Leo Balter. All rights reserved. -// This code is governed by the BSD license found in the LICENSE file. - -/*--- -esid: sec-finalization-registry.prototype.cleanupSome -description: Return undefined regardless the result of CleanupFinalizationRegistry -info: | - FinalizationRegistry.prototype.cleanupSome ( [ callback ] ) - - 1. Let finalizationRegistry be the this value. - 2. If Type(finalizationRegistry) is not Object, throw a TypeError exception. - 3. If finalizationRegistry does not have a [[Cells]] internal slot, throw a TypeError exception. - 4. If callback is not undefined and IsCallable(callback) is false, throw a TypeError exception. - 5. Perform ? CleanupFinalizationRegistry(finalizationRegistry, callback). - 6. Return undefined. -features: [FinalizationRegistry.prototype.cleanupSome, FinalizationRegistry, arrow-function, async-functions, async-iteration, class] ----*/ - -var fn = function() {}; -var cb = function() {}; -var poisoned = function() { throw new Test262Error(); }; -var finalizationRegistry = new FinalizationRegistry(fn); - -assert.sameValue(finalizationRegistry.cleanupSome(cb), undefined, 'regular callback'); -assert.sameValue(finalizationRegistry.cleanupSome(fn), undefined, 'regular callback, same FG cleanup function'); - -assert.sameValue(finalizationRegistry.cleanupSome(() => {}), undefined, 'arrow function'); -assert.sameValue(finalizationRegistry.cleanupSome(finalizationRegistry.cleanupSome), undefined, 'cleanupSome itself'); -assert.sameValue(finalizationRegistry.cleanupSome(poisoned), undefined, 'poisoned'); -assert.sameValue(finalizationRegistry.cleanupSome(class {}), undefined, 'class expression'); -assert.sameValue(finalizationRegistry.cleanupSome(async function() {}), undefined, 'async function'); -assert.sameValue(finalizationRegistry.cleanupSome(function *() {}), undefined, 'generator'); -assert.sameValue(finalizationRegistry.cleanupSome(async function *() {}), undefined, 'async generator'); - -assert.sameValue(finalizationRegistry.cleanupSome(), undefined, 'undefined, implicit'); -assert.sameValue(finalizationRegistry.cleanupSome(undefined), undefined, 'undefined, explicit'); - -var poisonedFg = new FinalizationRegistry(poisoned); - -assert.sameValue(poisonedFg.cleanupSome(cb), undefined, 'regular callback on poisoned FG cleanup callback'); -assert.sameValue(poisonedFg.cleanupSome(poisoned), undefined, 'poisoned callback on poisoned FG cleanup callback'); diff --git a/test/built-ins/FinalizationRegistry/prototype/cleanupSome/this-does-not-have-internal-cells-throws.js b/test/built-ins/FinalizationRegistry/prototype/cleanupSome/this-does-not-have-internal-cells-throws.js deleted file mode 100644 index 0052bb494a6..00000000000 --- a/test/built-ins/FinalizationRegistry/prototype/cleanupSome/this-does-not-have-internal-cells-throws.js +++ /dev/null @@ -1,48 +0,0 @@ -// Copyright (C) 2019 Leo Balter. All rights reserved. -// This code is governed by the BSD license found in the LICENSE file. - -/*--- -esid: sec-finalization-registry.prototype.cleanupSome -description: Throws a TypeError if this does not have a [[Cells]] internal slot -info: | - FinalizationRegistry.prototype.cleanupSome ( [ callback ] ) - - 1. Let finalizationRegistry be the this value. - 2. If Type(finalizationRegistry) is not Object, throw a TypeError exception. - 3. If finalizationRegistry does not have a [[Cells]] internal slot, throw a TypeError exception. - 4. If callback is not undefined and IsCallable(callback) is false, throw a TypeError exception. - ... -features: [FinalizationRegistry.prototype.cleanupSome, WeakSet, WeakMap, FinalizationRegistry, WeakRef] ----*/ - -assert.sameValue(typeof FinalizationRegistry.prototype.cleanupSome, 'function'); - -var cleanupSome = FinalizationRegistry.prototype.cleanupSome; -var cb = function() {}; - -assert.throws(TypeError, function() { - cleanupSome.call({ ['[[Cells]]']: {} }, cb); -}, 'Ordinary object without [[Cells]]'); - -assert.throws(TypeError, function() { - cleanupSome.call(WeakRef.prototype, cb); -}, 'WeakRef.prototype does not have a [[Cells]] internal slot'); - -assert.throws(TypeError, function() { - cleanupSome.call(WeakRef, cb); -}, 'WeakRef does not have a [[Cells]] internal slot'); - -var wr = new WeakRef({}); -assert.throws(TypeError, function() { - cleanupSome.call(wr, cb); -}, 'WeakRef instance'); - -var wm = new WeakMap(); -assert.throws(TypeError, function() { - cleanupSome.call(wm, cb); -}, 'WeakMap instance'); - -var ws = new WeakSet(); -assert.throws(TypeError, function() { - cleanupSome.call(ws, cb); -}, 'WeakSet instance'); diff --git a/test/built-ins/FinalizationRegistry/prototype/cleanupSome/this-not-object-throws.js b/test/built-ins/FinalizationRegistry/prototype/cleanupSome/this-not-object-throws.js deleted file mode 100644 index e94692ddde3..00000000000 --- a/test/built-ins/FinalizationRegistry/prototype/cleanupSome/this-not-object-throws.js +++ /dev/null @@ -1,50 +0,0 @@ -// Copyright (C) 2019 Leo Balter. All rights reserved. -// This code is governed by the BSD license found in the LICENSE file. - -/*--- -esid: sec-finalization-registry.prototype.cleanupSome -description: Throws a TypeError if this is not an Object -info: | - FinalizationRegistry.prototype.cleanupSome ( [ callback ] ) - - 1. Let finalizationRegistry be the this value. - 2. If Type(finalizationRegistry) is not Object, throw a TypeError exception. - 3. If finalizationRegistry does not have a [[Cells]] internal slot, throw a TypeError exception. - 4. If callback is not undefined and IsCallable(callback) is false, throw a TypeError exception. - ... -features: [FinalizationRegistry.prototype.cleanupSome, FinalizationRegistry] ----*/ - -assert.sameValue(typeof FinalizationRegistry.prototype.cleanupSome, 'function'); - -var cleanupSome = FinalizationRegistry.prototype.cleanupSome; -var cb = function() {}; - -assert.throws(TypeError, function() { - cleanupSome.call(undefined, cb); -}, 'undefined'); - -assert.throws(TypeError, function() { - cleanupSome.call(null, cb); -}, 'null'); - -assert.throws(TypeError, function() { - cleanupSome.call(true, cb); -}, 'true'); - -assert.throws(TypeError, function() { - cleanupSome.call(false, cb); -}, 'false'); - -assert.throws(TypeError, function() { - cleanupSome.call(1, cb); -}, 'number'); - -assert.throws(TypeError, function() { - cleanupSome.call('object', cb); -}, 'string'); - -var s = Symbol(); -assert.throws(TypeError, function() { - cleanupSome.call(s, cb); -}, 'symbol'); diff --git a/test/built-ins/FinalizationRegistry/prototype/unregister/unregister-cleaned-up-object-cell.js b/test/built-ins/FinalizationRegistry/prototype/unregister/unregister-cleaned-up-object-cell.js deleted file mode 100644 index 89e47291bd4..00000000000 --- a/test/built-ins/FinalizationRegistry/prototype/unregister/unregister-cleaned-up-object-cell.js +++ /dev/null @@ -1,63 +0,0 @@ -// Copyright (C) 2019 Mathieu Hofman. All rights reserved. -// This code is governed by the BSD license found in the LICENSE file. - -/*--- -esid: sec-finalization-registry.prototype.unregister -description: > - Cannot unregister a cell referring to an Object that has been cleaned up -info: | - FinalizationRegistry.prototype.cleanupSome ( [ _callback_ ] ) - 4. Perform ? CleanupFinalizationRegistry(_finalizationRegistry_, _callback_). - - CleanupFinalizationRegistry ( _finalizationRegistry_ ): - 3. While _finalizationRegistry_.[[Cells]] contains a Record _cell_ such that - _cell_.[[WeakRefTarget]] is ~empty~, then an implementation may perform the - following steps: - a. Choose any such _cell_. - b. Remove _cell_ from _finalizationRegistry_.[[Cells]]. - c. Perform ? HostCallJobCallback(_callback_, *undefined*, - « _cell_.[[HeldValue]] »). - - FinalizationRegistry.prototype.unregister ( _unregisterToken_ ) - 4. Let _removed_ be *false*. - 5. For each Record { [[WeakRefTarget]], [[HeldValue]], [[UnregisterToken]] } - _cell_ of _finalizationRegistry_.[[Cells]], do - a. If _cell_.[[UnregisterToken]] is not ~empty~ and - SameValue(_cell_.[[UnregisterToken]], _unregisterToken_) is *true*, then - i. Remove _cell_ from _finalizationRegistry_.[[Cells]]. - ii. Set _removed_ to *true*. - 6. Return _removed_. -features: [FinalizationRegistry.prototype.cleanupSome, FinalizationRegistry, host-gc-required] -includes: [async-gc.js] -flags: [async, non-deterministic] ----*/ - -var value = 'target!'; -var token = {}; -var finalizationRegistry = new FinalizationRegistry(function() {}); - -function emptyCells() { - var target = {}; - finalizationRegistry.register(target, value, token); - - var prom = asyncGC(target); - target = null; - - return prom; -} - -emptyCells().then(function() { - var called = 0; - var holdings = []; - finalizationRegistry.cleanupSome(function cb(holding) { - called += 1; - holdings.push(holding); - }); - - assert.sameValue(called, 1); - assert.sameValue(holdings.length, 1); - assert.sameValue(holdings[0], value); - - var res = finalizationRegistry.unregister(token); - assert.sameValue(res, false, 'unregister after iterating over it in cleanup'); -}).then($DONE, resolveAsyncGC); diff --git a/test/staging/ArrayBuffer/resizable/function-apply.js b/test/built-ins/Function/prototype/apply/resizable-buffer.js similarity index 67% rename from test/staging/ArrayBuffer/resizable/function-apply.js rename to test/built-ins/Function/prototype/apply/resizable-buffer.js index c551f45ffe7..8a741dcc674 100644 --- a/test/staging/ArrayBuffer/resizable/function-apply.js +++ b/test/built-ins/Function/prototype/apply/resizable-buffer.js @@ -1,73 +1,15 @@ -// Copyright 2021 the V8 project authors. All rights reserved. +// Copyright 2023 the V8 project authors. All rights reserved. // This code is governed by the BSD license found in the LICENSE file. /*--- -esid: sec-arraybuffer-length +esid: sec-function.prototype.apply description: > - Automatically ported from FunctionApply test - in V8's mjsunit test typedarray-resizablearraybuffer.js -includes: [compareArray.js] + Function.p.apply behaves correctly when the argument array is a + TypedArray backed by resizable buffer +includes: [compareArray.js, resizableArrayBufferUtils.js] features: [resizable-arraybuffer] -flags: [onlyStrict] ---*/ -class MyUint8Array extends Uint8Array { -} - -class MyFloat32Array extends Float32Array { -} - -class MyBigInt64Array extends BigInt64Array { -} - -const builtinCtors = [ - Uint8Array, - Int8Array, - Uint16Array, - Int16Array, - Uint32Array, - Int32Array, - Float32Array, - Float64Array, - Uint8ClampedArray, - BigUint64Array, - BigInt64Array -]; - -const ctors = [ - ...builtinCtors, - MyUint8Array, - MyFloat32Array, - MyBigInt64Array -]; - -function CreateResizableArrayBuffer(byteLength, maxByteLength) { - return new ArrayBuffer(byteLength, { maxByteLength: maxByteLength }); -} - -function WriteToTypedArray(array, index, value) { - if (array instanceof BigInt64Array || array instanceof BigUint64Array) { - array[index] = BigInt(value); - } else { - array[index] = value; - } -} - -function Convert(item) { - if (typeof item == 'bigint') { - return Number(item); - } - return item; -} - -function ToNumbers(array) { - let result = []; - for (let item of array) { - result.push(Convert(item)); - } - return result; -} - for (let ctor of ctors) { const rab = CreateResizableArrayBuffer(4 * ctor.BYTES_PER_ELEMENT, 8 * ctor.BYTES_PER_ELEMENT); const fixedLength = new ctor(rab, 0, 4); @@ -76,7 +18,7 @@ for (let ctor of ctors) { const lengthTrackingWithOffset = new ctor(rab, 2 * ctor.BYTES_PER_ELEMENT); const taWrite = new ctor(rab); for (let i = 0; i < 4; ++i) { - WriteToTypedArray(taWrite, i, i); + taWrite[i] = MayNeedBigInt(taWrite, i); } function func(...args) { return [...args]; diff --git a/test/built-ins/GeneratorPrototype/return/try-finally-set-property-within-try.js b/test/built-ins/GeneratorPrototype/return/try-finally-set-property-within-try.js new file mode 100644 index 00000000000..cd5995a827a --- /dev/null +++ b/test/built-ins/GeneratorPrototype/return/try-finally-set-property-within-try.js @@ -0,0 +1,28 @@ +// Copyright (C) 2022 Bo Pang. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. +/*--- +esid: sec-generator.prototype.return +description: > + When a generator is paused within a `try` block of a `try..finally` + statement, `return` should interrupt control flow as if a `return` + statement had appeared at that location in the function body. + The `finally` block is still evaluated, and may override the return value. +features: [generators] +---*/ + + +var obj = { foo: 'not modified' }; +function* g() { + try { + obj.foo = yield; + } finally { + return 1; + } +} +var iter = g(); +var result; + +iter.next(); +result = iter.return(45).value; +assert.sameValue(obj.foo, 'not modified', '`obj.foo` must not be set'); +assert.sameValue(result, 1, 'finally block must supersede return value'); diff --git a/test/built-ins/Iterator/from/get-return-method-when-call-return.js b/test/built-ins/Iterator/from/get-return-method-when-call-return.js new file mode 100644 index 00000000000..18290f3e0b2 --- /dev/null +++ b/test/built-ins/Iterator/from/get-return-method-when-call-return.js @@ -0,0 +1,35 @@ +// Copyright (C) 2024 Sosuke Suzuki. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. +/*--- +esid: sec-iterator.from +description: > + Gets the base iterator return method when the wrapper return method is called. +info: | + %WrapForValidIteratorPrototype%.return ( ) + ... + 5. Let returnMethod be ? GetMethod(iterator, "return"). + +features: [iterator-helpers] +includes: [temporalHelpers.js, compareArray.js] +---*/ + +const calls = []; + +const iter = TemporalHelpers.propertyBagObserver(calls, { + return () { + return { value: 5, done: true }; + }, +}, "originalIter"); + +const wrapper = Iterator.from(iter); +assert.compareArray(calls, [ + "get originalIter[Symbol.iterator]", + "get originalIter.next", +]); + +wrapper.return(); +assert.compareArray(calls, [ + "get originalIter[Symbol.iterator]", + "get originalIter.next", + "get originalIter.return" +]); diff --git a/test/built-ins/Iterator/from/return-method-calls-base-return-method.js b/test/built-ins/Iterator/from/return-method-calls-base-return-method.js new file mode 100644 index 00000000000..01121f65ce2 --- /dev/null +++ b/test/built-ins/Iterator/from/return-method-calls-base-return-method.js @@ -0,0 +1,41 @@ +// Copyright (C) 2024 Sosuke Suzuki. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. +/*--- +esid: sec-iterator.from +description: > + %WrapForValidIteratorPrototype%.return() call base iterator's return method when it exists. +info: | + %WrapForValidIteratorPrototype%.return ( ) + 5. Let returnMethod be ? GetMethod(iterator, "return"). + 6. If returnMethod is undefined, then + ... + 7. Return ? Call(returnMethod, iterator). + +features: [iterator-helpers] +includes: [temporalHelpers.js, compareArray.js] +---*/ + +const calls = []; + +const expectedIteratorResult = { value: 5, done: true }; +const originalIter = { + return () { + return expectedIteratorResult; + }, +}; +TemporalHelpers.observeMethod(calls, originalIter, "return", "originalIter"); +const iter = TemporalHelpers.propertyBagObserver(calls, originalIter, "originalIter"); + +const wrapper = Iterator.from(iter); +assert.compareArray(calls, [ + "get originalIter[Symbol.iterator]", + "get originalIter.next", +]); + +assert.sameValue(wrapper.return(), expectedIteratorResult); +assert.compareArray(calls, [ + "get originalIter[Symbol.iterator]", + "get originalIter.next", + "get originalIter.return", + "call originalIter.return", +]); diff --git a/test/built-ins/Iterator/from/return-method-returns-iterator-result.js b/test/built-ins/Iterator/from/return-method-returns-iterator-result.js new file mode 100644 index 00000000000..36ada0f1a38 --- /dev/null +++ b/test/built-ins/Iterator/from/return-method-returns-iterator-result.js @@ -0,0 +1,23 @@ +// Copyright (C) 2024 Sosuke Suzuki. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. +/*--- +esid: sec-iterator.from +description: > + %WrapForValidIteratorPrototype%.return() should return an iterator result object that value is undefined when base object does not have return method. +info: | + %WrapForValidIteratorPrototype%.return ( ) + ... + 5. Let returnMethod be ? GetMethod(iterator, "return"). + 6. If returnMethod is undefined, then + a. Return CreateIterResultObject(undefined, true). + +features: [iterator-helpers] +---*/ + +const iter = {}; +const wrapper = Iterator.from(iter); + +const result = wrapper.return(); +assert(result.hasOwnProperty("value")); +assert.sameValue(result.value, undefined); +assert.sameValue(result.done, true); diff --git a/test/built-ins/Iterator/from/return-method-throws-for-invalid-this.js b/test/built-ins/Iterator/from/return-method-throws-for-invalid-this.js new file mode 100644 index 00000000000..a30bed4c655 --- /dev/null +++ b/test/built-ins/Iterator/from/return-method-throws-for-invalid-this.js @@ -0,0 +1,39 @@ +// Copyright (C) 2024 Sosuke Suzuki. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. +/*--- +esid: sec-iterator.from +description: > + %WrapForValidIteratorPrototype%.return() requires [[iterated]] internal slot +info: | + %WrapForValidIteratorPrototype%.return ( ) + ... + 2. Perform ? RequireInternalSlot(O, [[Iterated]]). + +features: [iterator-helpers] +includes: [temporalHelpers.js, compareArray.js] +---*/ + +const WrapForValidIteratorPrototype = Object.getPrototypeOf(Iterator.from({})); + +{ + assert.throws(TypeError, function() { + WrapForValidIteratorPrototype.return.call({}); + }); +} + +{ + const originalIter = { + return() { + return { value: 5, done: true }; + }, + }; + + const calls = []; + TemporalHelpers.observeMethod(calls, originalIter, "return", "originalIter"); + const iter = TemporalHelpers.propertyBagObserver(calls, originalIter, "originalIter"); + + assert.throws(TypeError, function() { + WrapForValidIteratorPrototype.return.call(iter); + }); + assert.compareArray(calls, []); +} diff --git a/test/built-ins/Iterator/prototype/Symbol.dispose/is-function.js b/test/built-ins/Iterator/prototype/Symbol.dispose/is-function.js new file mode 100644 index 00000000000..7e26b3f580e --- /dev/null +++ b/test/built-ins/Iterator/prototype/Symbol.dispose/is-function.js @@ -0,0 +1,13 @@ +// Copyright (C) 2023 Ron Buckton. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. +/*--- +esid: sec-%iteratorprototype%-@@dispose +description: > + Iterator.prototype[@@dispose] is a built-in function +features: [explicit-resource-management] +---*/ +const IteratorPrototype = Object.getPrototypeOf( + Object.getPrototypeOf([][Symbol.iterator]()) +); + +assert.sameValue(typeof IteratorPrototype[Symbol.dispose], 'function'); diff --git a/test/built-ins/NativeErrors/AggregateError/errors-iterabletolist.js b/test/built-ins/NativeErrors/AggregateError/errors-iterabletolist.js index 8cd4543a9ee..ca0997766d1 100644 --- a/test/built-ins/NativeErrors/AggregateError/errors-iterabletolist.js +++ b/test/built-ins/NativeErrors/AggregateError/errors-iterabletolist.js @@ -67,3 +67,7 @@ new AggregateError(case1); assert.sameValue(count, 3); assert.compareArray(values, [1, 2]); + +assert.throws(TypeError, () => { + new AggregateError(); +}, 'GetMethod(obj, @@iterator) returns undefined'); diff --git a/test/built-ins/NativeErrors/SuppressedError/message-undefined-no-prop.js b/test/built-ins/NativeErrors/SuppressedError/message-undefined-no-prop.js new file mode 100644 index 00000000000..7d5bd400030 --- /dev/null +++ b/test/built-ins/NativeErrors/SuppressedError/message-undefined-no-prop.js @@ -0,0 +1,33 @@ +// Copyright (C) 2023 Ron Buckton. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +esid: sec-suppressederror-constructor +description: > + If message is undefined, no property will be set to the new instance +info: | + SuppressedError ( error, suppressed, message ) + + ... + 5. If message is not undefined, then + a. Let msg be ? ToString(message). + b. Perform ! CreateMethodProperty(O, "message", msg). + 6. Return O. +features: [explicit-resource-management] +---*/ + +var case1 = new SuppressedError(undefined, undefined, undefined); + +assert.sameValue( + Object.prototype.hasOwnProperty.call(case1, 'message'), + false, + 'explicit' +); + +var case2 = new SuppressedError([]); + +assert.sameValue( + Object.prototype.hasOwnProperty.call(case2, 'message'), + false, + 'implicit' +); diff --git a/test/built-ins/NativeErrors/SuppressedError/proto-from-ctor-realm.js b/test/built-ins/NativeErrors/SuppressedError/proto-from-ctor-realm.js new file mode 100644 index 00000000000..05e1402c729 --- /dev/null +++ b/test/built-ins/NativeErrors/SuppressedError/proto-from-ctor-realm.js @@ -0,0 +1,58 @@ +// Copyright (C) 2023 Ron Buckton. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +esid: sec-suppressederror-constructor +description: Default [[Prototype]] value derived from realm of the NewTarget. +info: | + SuppressedError ( error, suppressed, message ) + + 1. If NewTarget is undefined, let newTarget be the active function object, else let newTarget be NewTarget. + 2. Let O be ? OrdinaryCreateFromConstructor(newTarget, "%SuppressedError.prototype%", « [[ErrorData]] »). + ... + 6. Return O. + + OrdinaryCreateFromConstructor ( constructor, intrinsicDefaultProto [ , internalSlotsList ] ) + + ... + 2. Let proto be ? GetPrototypeFromConstructor(constructor, intrinsicDefaultProto). + 3. Return ObjectCreate(proto, internalSlotsList). + + GetPrototypeFromConstructor ( constructor, intrinsicDefaultProto ) + + ... + 3. Let proto be ? Get(constructor, 'prototype'). + 4. If Type(proto) is not Object, then + a. Let realm be ? GetFunctionRealm(constructor). + b. Set proto to realm's intrinsic object named intrinsicDefaultProto. + 5. Return proto. +features: [explicit-resource-management, cross-realm, Reflect, Symbol] +---*/ + +var other = $262.createRealm().global; +var newTarget = new other.Function(); +var err; + +newTarget.prototype = undefined; +err = Reflect.construct(SuppressedError, [[]], newTarget); +assert.sameValue(Object.getPrototypeOf(err), other.SuppressedError.prototype, 'newTarget.prototype is undefined'); + +newTarget.prototype = null; +err = Reflect.construct(SuppressedError, [[]], newTarget); +assert.sameValue(Object.getPrototypeOf(err), other.SuppressedError.prototype, 'newTarget.prototype is null'); + +newTarget.prototype = true; +err = Reflect.construct(SuppressedError, [[]], newTarget); +assert.sameValue(Object.getPrototypeOf(err), other.SuppressedError.prototype, 'newTarget.prototype is a Boolean'); + +newTarget.prototype = ''; +err = Reflect.construct(SuppressedError, [[]], newTarget); +assert.sameValue(Object.getPrototypeOf(err), other.SuppressedError.prototype, 'newTarget.prototype is a String'); + +newTarget.prototype = Symbol(); +err = Reflect.construct(SuppressedError, [[]], newTarget); +assert.sameValue(Object.getPrototypeOf(err), other.SuppressedError.prototype, 'newTarget.prototype is a Symbol'); + +newTarget.prototype = -1; +err = Reflect.construct(SuppressedError, [[]], newTarget); +assert.sameValue(Object.getPrototypeOf(err), other.SuppressedError.prototype, 'newTarget.prototype is a Number'); diff --git a/test/built-ins/NativeErrors/SuppressedError/proto.js b/test/built-ins/NativeErrors/SuppressedError/proto.js new file mode 100644 index 00000000000..7b67009b24b --- /dev/null +++ b/test/built-ins/NativeErrors/SuppressedError/proto.js @@ -0,0 +1,16 @@ +// Copyright (C) 2023 Ron Buckton. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +description: The prototype of SuppressedError constructor is Error +esid: sec-properties-of-the-suppressederror-constructors +info: | + Properties of the SuppressedError Constructor + + - has a [[Prototype]] internal slot whose value is the intrinsic object %Error%. +features: [explicit-resource-management] +---*/ + +var proto = Object.getPrototypeOf(SuppressedError); + +assert.sameValue(proto, Error); diff --git a/test/built-ins/NativeErrors/SuppressedError/prototype/constructor.js b/test/built-ins/NativeErrors/SuppressedError/prototype/constructor.js new file mode 100644 index 00000000000..e6b794b4e30 --- /dev/null +++ b/test/built-ins/NativeErrors/SuppressedError/prototype/constructor.js @@ -0,0 +1,25 @@ +// Copyright (C) 2023 Ron Buckton. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +esid: sec-suppressederror.prototype.constructor +description: > + The `SuppressedError.prototype.constructor` property descriptor. +info: | + The initial value of SuppressedError.prototype.constructor is the intrinsic + object %SuppressedError%. + + 17 ECMAScript Standard Built-in Objects: + + Every other data property described (...) has the attributes { [[Writable]]: true, + [[Enumerable]]: false, [[Configurable]]: true } unless otherwise specified. +includes: [propertyHelper.js] +features: [explicit-resource-management] +---*/ + +verifyProperty(SuppressedError.prototype, 'constructor', { + value: SuppressedError, + enumerable: false, + writable: true, + configurable: true +}); diff --git a/test/built-ins/NativeErrors/SuppressedError/prototype/message.js b/test/built-ins/NativeErrors/SuppressedError/prototype/message.js new file mode 100644 index 00000000000..71d5cc10c0b --- /dev/null +++ b/test/built-ins/NativeErrors/SuppressedError/prototype/message.js @@ -0,0 +1,25 @@ +// Copyright (C) 2023 Ron Buckton. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +esid: sec-aggregate-error.prototype.message +description: > + The `SuppressedError.prototype.message` property descriptor. +info: | + The initial value of the message property of the prototype for a given SuppressedError + constructor is the empty String. + + 17 ECMAScript Standard Built-in Objects: + + Every other data property described (...) has the attributes { [[Writable]]: true, + [[Enumerable]]: false, [[Configurable]]: true } unless otherwise specified. +includes: [propertyHelper.js] +features: [explicit-resource-management] +---*/ + +verifyProperty(SuppressedError.prototype, 'message', { + value: '', + enumerable: false, + writable: true, + configurable: true +}); diff --git a/test/built-ins/NativeErrors/SuppressedError/prototype/proto.js b/test/built-ins/NativeErrors/SuppressedError/prototype/proto.js new file mode 100644 index 00000000000..3c77219a26e --- /dev/null +++ b/test/built-ins/NativeErrors/SuppressedError/prototype/proto.js @@ -0,0 +1,16 @@ +// Copyright (C) 2023 Ron Buckton. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +esid: sec-properties-of-the-suppressederror-prototype-objects +description: The prototype of SuppressedError.prototype constructor is Error.prototype +info: | + Properties of the SuppressedError Prototype Object + + - has a [[Prototype]] internal slot whose value is the intrinsic object %Error.prototype%. +features: [explicit-resource-management] +---*/ + +var proto = Object.getPrototypeOf(SuppressedError.prototype); + +assert.sameValue(proto, Error.prototype); diff --git a/test/built-ins/Object/defineProperties/typedarray-backed-by-resizable-buffer.js b/test/built-ins/Object/defineProperties/typedarray-backed-by-resizable-buffer.js new file mode 100644 index 00000000000..fa3c5977012 --- /dev/null +++ b/test/built-ins/Object/defineProperties/typedarray-backed-by-resizable-buffer.js @@ -0,0 +1,208 @@ +// Copyright 2023 the V8 project authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +esid: sec-object.defineproperties +description: > + Object.defineProperties behaves correctly on TypedArrays backed by + resizable buffers +includes: [compareArray.js, resizableArrayBufferUtils.js] +features: [resizable-arraybuffer] +---*/ + +function DefinePropertiesMayNeedBigInt(ta, index, value) { + const values = {}; + values[index] = { value: MayNeedBigInt(ta, value) }; + Object.defineProperties(ta, values); +} + +for (let ctor of ctors) { + const rab = CreateResizableArrayBuffer(4 * ctor.BYTES_PER_ELEMENT, 8 * ctor.BYTES_PER_ELEMENT); + const fixedLength = new ctor(rab, 0, 4); + const fixedLengthWithOffset = new ctor(rab, 2 * ctor.BYTES_PER_ELEMENT, 2); + const lengthTracking = new ctor(rab, 0); + const lengthTrackingWithOffset = new ctor(rab, 2 * ctor.BYTES_PER_ELEMENT); + const taFull = new ctor(rab, 0); + + // Orig. array: [0, 0, 0, 0] + // [0, 0, 0, 0] << fixedLength + // [0, 0] << fixedLengthWithOffset + // [0, 0, 0, 0, ...] << lengthTracking + // [0, 0, ...] << lengthTrackingWithOffset + + DefinePropertiesMayNeedBigInt(fixedLength, 0, 1); + assert.compareArray(ToNumbers(taFull), [ + 1, + 0, + 0, + 0 + ]); + DefinePropertiesMayNeedBigInt(fixedLengthWithOffset, 0, 2); + assert.compareArray(ToNumbers(taFull), [ + 1, + 0, + 2, + 0 + ]); + DefinePropertiesMayNeedBigInt(lengthTracking, 1, 3); + assert.compareArray(ToNumbers(taFull), [ + 1, + 3, + 2, + 0 + ]); + DefinePropertiesMayNeedBigInt(lengthTrackingWithOffset, 1, 4); + assert.compareArray(ToNumbers(taFull), [ + 1, + 3, + 2, + 4 + ]); + assert.throws(TypeError, () => { + DefinePropertiesMayNeedBigInt(fixedLength, 4, 8); + }); + assert.throws(TypeError, () => { + DefinePropertiesMayNeedBigInt(fixedLengthWithOffset, 2, 8); + }); + assert.throws(TypeError, () => { + DefinePropertiesMayNeedBigInt(lengthTracking, 4, 8); + }); + assert.throws(TypeError, () => { + DefinePropertiesMayNeedBigInt(lengthTrackingWithOffset, 2, 8); + }); + + // Shrink so that fixed length TAs go out of bounds. + rab.resize(3 * ctor.BYTES_PER_ELEMENT); + + // Orig. array: [1, 3, 2] + // [1, 3, 2, ...] << lengthTracking + // [2, ...] << lengthTrackingWithOffset + + assert.throws(TypeError, () => { + DefinePropertiesMayNeedBigInt(fixedLength, 0, 8); + }); + assert.throws(TypeError, () => { + DefinePropertiesMayNeedBigInt(fixedLengthWithOffset, 0, 8); + }); + assert.compareArray(ToNumbers(taFull), [ + 1, + 3, + 2 + ]); + DefinePropertiesMayNeedBigInt(lengthTracking, 0, 5); + assert.compareArray(ToNumbers(taFull), [ + 5, + 3, + 2 + ]); + DefinePropertiesMayNeedBigInt(lengthTrackingWithOffset, 0, 6); + assert.compareArray(ToNumbers(taFull), [ + 5, + 3, + 6 + ]); + + // Shrink so that the TAs with offset go out of bounds. + rab.resize(1 * ctor.BYTES_PER_ELEMENT); + assert.throws(TypeError, () => { + DefinePropertiesMayNeedBigInt(fixedLength, 0, 8); + }); + assert.throws(TypeError, () => { + DefinePropertiesMayNeedBigInt(fixedLengthWithOffset, 0, 8); + }); + assert.throws(TypeError, () => { + DefinePropertiesMayNeedBigInt(lengthTrackingWithOffset, 0, 8); + }); + assert.compareArray(ToNumbers(taFull), [5]); + DefinePropertiesMayNeedBigInt(lengthTracking, 0, 7); + assert.compareArray(ToNumbers(taFull), [7]); + + // Shrink to zero. + rab.resize(0); + assert.throws(TypeError, () => { + DefinePropertiesMayNeedBigInt(fixedLength, 0, 8); + }); + assert.throws(TypeError, () => { + DefinePropertiesMayNeedBigInt(fixedLengthWithOffset, 0, 8); + }); + assert.throws(TypeError, () => { + DefinePropertiesMayNeedBigInt(lengthTracking, 0, 8); + }); + assert.throws(TypeError, () => { + DefinePropertiesMayNeedBigInt(lengthTrackingWithOffset, 0, 8); + }); + assert.compareArray(ToNumbers(taFull), []); + + // Grow so that all TAs are back in-bounds. + rab.resize(6 * ctor.BYTES_PER_ELEMENT); + DefinePropertiesMayNeedBigInt(fixedLength, 0, 9); + assert.compareArray(ToNumbers(taFull), [ + 9, + 0, + 0, + 0, + 0, + 0 + ]); + DefinePropertiesMayNeedBigInt(fixedLengthWithOffset, 0, 10); + assert.compareArray(ToNumbers(taFull), [ + 9, + 0, + 10, + 0, + 0, + 0 + ]); + DefinePropertiesMayNeedBigInt(lengthTracking, 1, 11); + assert.compareArray(ToNumbers(taFull), [ + 9, + 11, + 10, + 0, + 0, + 0 + ]); + DefinePropertiesMayNeedBigInt(lengthTrackingWithOffset, 2, 12); + assert.compareArray(ToNumbers(taFull), [ + 9, + 11, + 10, + 0, + 12, + 0 + ]); + + // Trying to define properties out of the fixed-length bounds throws. + assert.throws(TypeError, () => { + DefinePropertiesMayNeedBigInt(fixedLength, 5, 13); + }); + assert.throws(TypeError, () => { + DefinePropertiesMayNeedBigInt(fixedLengthWithOffset, 3, 13); + }); + assert.compareArray(ToNumbers(taFull), [ + 9, + 11, + 10, + 0, + 12, + 0 + ]); + DefinePropertiesMayNeedBigInt(lengthTracking, 4, 14); + assert.compareArray(ToNumbers(taFull), [ + 9, + 11, + 10, + 0, + 14, + 0 + ]); + DefinePropertiesMayNeedBigInt(lengthTrackingWithOffset, 3, 15); + assert.compareArray(ToNumbers(taFull), [ + 9, + 11, + 10, + 0, + 14, + 15 + ]); +} diff --git a/test/built-ins/Object/defineProperty/coerced-P-grow.js b/test/built-ins/Object/defineProperty/coerced-P-grow.js new file mode 100644 index 00000000000..9a84f8770c8 --- /dev/null +++ b/test/built-ins/Object/defineProperty/coerced-P-grow.js @@ -0,0 +1,54 @@ +// Copyright 2023 the V8 project authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +esid: sec-object.defineproperty +description: > + Object.defineProperty behaves correctly when the object is a + TypedArray backed by a resizable buffer that's grown during argument + coercion +includes: [compareArray.js, resizableArrayBufferUtils.js] +features: [resizable-arraybuffer] +---*/ + +// Fixed length. +for (let ctor of ctors) { + const rab = CreateResizableArrayBuffer(4 * ctor.BYTES_PER_ELEMENT, 8 * ctor.BYTES_PER_ELEMENT); + const fixedLength = new ctor(rab, 0, 4); + // Make fixedLength go OOB. + rab.resize(2 * ctor.BYTES_PER_ELEMENT); + const evil = { + toString: () => { + rab.resize(6 * ctor.BYTES_PER_ELEMENT); + return 0; + } + }; + Object.defineProperty(fixedLength, evil, { value: MayNeedBigInt(fixedLength, 8) }); + assert.compareArray(ToNumbers(fixedLength), [ + 8, + 0, + 0, + 0 + ]); +} + +// Length tracking. +for (let ctor of ctors) { + const rab = CreateResizableArrayBuffer(4 * ctor.BYTES_PER_ELEMENT, 8 * ctor.BYTES_PER_ELEMENT); + const lengthTracking = new ctor(rab, 0); + const evil = { + toString: () => { + rab.resize(6 * ctor.BYTES_PER_ELEMENT); + return 4; // Index valid after resize. + } + }; + Object.defineProperty(lengthTracking, evil, { value: MayNeedBigInt(lengthTracking, 8) }); + assert.compareArray(ToNumbers(lengthTracking), [ + 0, + 0, + 0, + 0, + 8, + 0 + ]); +} diff --git a/test/built-ins/Object/defineProperty/coerced-P-shrink.js b/test/built-ins/Object/defineProperty/coerced-P-shrink.js new file mode 100644 index 00000000000..55ac63ae475 --- /dev/null +++ b/test/built-ins/Object/defineProperty/coerced-P-shrink.js @@ -0,0 +1,42 @@ +// Copyright 2023 the V8 project authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +esid: sec-object.defineproperty +description: > + Object.defineProperty behaves correctly when the object is a + TypedArray backed by a resizable buffer that's shrunk during argument + coercion +includes: [compareArray.js, resizableArrayBufferUtils.js] +features: [resizable-arraybuffer] +---*/ + +// Fixed length. +for (let ctor of ctors) { + const rab = CreateResizableArrayBuffer(4 * ctor.BYTES_PER_ELEMENT, 8 * ctor.BYTES_PER_ELEMENT); + const fixedLength = new ctor(rab, 0, 4); + const evil = { + toString: () => { + rab.resize(2 * ctor.BYTES_PER_ELEMENT); + return 0; + } + }; + assert.throws(TypeError, () => { + Object.defineProperty(fixedLength, evil, { value: MayNeedBigInt(fixedLength, 8) }); + }); +} + +// Length tracking. +for (let ctor of ctors) { + const rab = CreateResizableArrayBuffer(4 * ctor.BYTES_PER_ELEMENT, 8 * ctor.BYTES_PER_ELEMENT); + const lengthTracking = new ctor(rab, 0); + const evil = { + toString: () => { + rab.resize(2 * ctor.BYTES_PER_ELEMENT); + return 3; // Index too large after resize. + } + }; + assert.throws(TypeError, () => { + Object.defineProperty(lengthTracking, evil, { value: MayNeedBigInt(lengthTracking, 8) }); + }); +} diff --git a/test/built-ins/Object/defineProperty/typedarray-backed-by-resizable-buffer.js b/test/built-ins/Object/defineProperty/typedarray-backed-by-resizable-buffer.js new file mode 100644 index 00000000000..9c031dc4ac0 --- /dev/null +++ b/test/built-ins/Object/defineProperty/typedarray-backed-by-resizable-buffer.js @@ -0,0 +1,206 @@ +// Copyright 2023 the V8 project authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +esid: sec-object.defineproperty +description: > + Object.defineProperty behaves correctly on TypedArrays backed by + resizable buffers +includes: [compareArray.js, resizableArrayBufferUtils.js] +features: [resizable-arraybuffer] +---*/ + +function DefinePropertyMayNeedBigInt(ta, index, value) { + Object.defineProperty(ta, index, { value: MayNeedBigInt(ta, value) }); +} + +for (let ctor of ctors) { + const rab = CreateResizableArrayBuffer(4 * ctor.BYTES_PER_ELEMENT, 8 * ctor.BYTES_PER_ELEMENT); + const fixedLength = new ctor(rab, 0, 4); + const fixedLengthWithOffset = new ctor(rab, 2 * ctor.BYTES_PER_ELEMENT, 2); + const lengthTracking = new ctor(rab, 0); + const lengthTrackingWithOffset = new ctor(rab, 2 * ctor.BYTES_PER_ELEMENT); + const taFull = new ctor(rab, 0); + + // Orig. array: [0, 0, 0, 0] + // [0, 0, 0, 0] << fixedLength + // [0, 0] << fixedLengthWithOffset + // [0, 0, 0, 0, ...] << lengthTracking + // [0, 0, ...] << lengthTrackingWithOffset + + DefinePropertyMayNeedBigInt(fixedLength, 0, 1); + assert.compareArray(ToNumbers(taFull), [ + 1, + 0, + 0, + 0 + ]); + DefinePropertyMayNeedBigInt(fixedLengthWithOffset, 0, 2); + assert.compareArray(ToNumbers(taFull), [ + 1, + 0, + 2, + 0 + ]); + DefinePropertyMayNeedBigInt(lengthTracking, 1, 3); + assert.compareArray(ToNumbers(taFull), [ + 1, + 3, + 2, + 0 + ]); + DefinePropertyMayNeedBigInt(lengthTrackingWithOffset, 1, 4); + assert.compareArray(ToNumbers(taFull), [ + 1, + 3, + 2, + 4 + ]); + assert.throws(TypeError, () => { + DefinePropertyMayNeedBigInt(fixedLength, 4, 8); + }); + assert.throws(TypeError, () => { + DefinePropertyMayNeedBigInt(fixedLengthWithOffset, 2, 8); + }); + assert.throws(TypeError, () => { + DefinePropertyMayNeedBigInt(lengthTracking, 4, 8); + }); + assert.throws(TypeError, () => { + DefinePropertyMayNeedBigInt(lengthTrackingWithOffset, 2, 8); + }); + + // Shrink so that fixed length TAs go out of bounds. + rab.resize(3 * ctor.BYTES_PER_ELEMENT); + + // Orig. array: [1, 3, 2] + // [1, 3, 2, ...] << lengthTracking + // [2, ...] << lengthTrackingWithOffset + + assert.throws(TypeError, () => { + DefinePropertyMayNeedBigInt(fixedLength, 0, 8); + }); + assert.throws(TypeError, () => { + DefinePropertyMayNeedBigInt(fixedLengthWithOffset, 0, 8); + }); + assert.compareArray(ToNumbers(taFull), [ + 1, + 3, + 2 + ]); + DefinePropertyMayNeedBigInt(lengthTracking, 0, 5); + assert.compareArray(ToNumbers(taFull), [ + 5, + 3, + 2 + ]); + DefinePropertyMayNeedBigInt(lengthTrackingWithOffset, 0, 6); + assert.compareArray(ToNumbers(taFull), [ + 5, + 3, + 6 + ]); + + // Shrink so that the TAs with offset go out of bounds. + rab.resize(1 * ctor.BYTES_PER_ELEMENT); + assert.throws(TypeError, () => { + DefinePropertyMayNeedBigInt(fixedLength, 0, 8); + }); + assert.throws(TypeError, () => { + DefinePropertyMayNeedBigInt(fixedLengthWithOffset, 0, 8); + }); + assert.throws(TypeError, () => { + DefinePropertyMayNeedBigInt(lengthTrackingWithOffset, 0, 8); + }); + assert.compareArray(ToNumbers(taFull), [5]); + DefinePropertyMayNeedBigInt(lengthTracking, 0, 7); + assert.compareArray(ToNumbers(taFull), [7]); + + // Shrink to zero. + rab.resize(0); + assert.throws(TypeError, () => { + DefinePropertyMayNeedBigInt(fixedLength, 0, 8); + }); + assert.throws(TypeError, () => { + DefinePropertyMayNeedBigInt(fixedLengthWithOffset, 0, 8); + }); + assert.throws(TypeError, () => { + DefinePropertyMayNeedBigInt(lengthTracking, 0, 8); + }); + assert.throws(TypeError, () => { + DefinePropertyMayNeedBigInt(lengthTrackingWithOffset, 0, 8); + }); + assert.compareArray(ToNumbers(taFull), []); + + // Grow so that all TAs are back in-bounds. + rab.resize(6 * ctor.BYTES_PER_ELEMENT); + DefinePropertyMayNeedBigInt(fixedLength, 0, 9); + assert.compareArray(ToNumbers(taFull), [ + 9, + 0, + 0, + 0, + 0, + 0 + ]); + DefinePropertyMayNeedBigInt(fixedLengthWithOffset, 0, 10); + assert.compareArray(ToNumbers(taFull), [ + 9, + 0, + 10, + 0, + 0, + 0 + ]); + DefinePropertyMayNeedBigInt(lengthTracking, 1, 11); + assert.compareArray(ToNumbers(taFull), [ + 9, + 11, + 10, + 0, + 0, + 0 + ]); + DefinePropertyMayNeedBigInt(lengthTrackingWithOffset, 2, 12); + assert.compareArray(ToNumbers(taFull), [ + 9, + 11, + 10, + 0, + 12, + 0 + ]); + + // Trying to define properties out of the fixed-length bounds throws. + assert.throws(TypeError, () => { + DefinePropertyMayNeedBigInt(fixedLength, 5, 13); + }); + assert.throws(TypeError, () => { + DefinePropertyMayNeedBigInt(fixedLengthWithOffset, 3, 13); + }); + assert.compareArray(ToNumbers(taFull), [ + 9, + 11, + 10, + 0, + 12, + 0 + ]); + DefinePropertyMayNeedBigInt(lengthTracking, 4, 14); + assert.compareArray(ToNumbers(taFull), [ + 9, + 11, + 10, + 0, + 14, + 0 + ]); + DefinePropertyMayNeedBigInt(lengthTrackingWithOffset, 3, 15); + assert.compareArray(ToNumbers(taFull), [ + 9, + 11, + 10, + 0, + 14, + 15 + ]); +} diff --git a/test/staging/ArrayBuffer/resizable/object-freeze.js b/test/built-ins/Object/freeze/typedarray-backed-by-resizable-buffer.js similarity index 70% rename from test/staging/ArrayBuffer/resizable/object-freeze.js rename to test/built-ins/Object/freeze/typedarray-backed-by-resizable-buffer.js index 479ab4bd4f3..ced1de4672b 100644 --- a/test/staging/ArrayBuffer/resizable/object-freeze.js +++ b/test/built-ins/Object/freeze/typedarray-backed-by-resizable-buffer.js @@ -1,49 +1,15 @@ -// Copyright 2021 the V8 project authors. All rights reserved. +// Copyright 2023 the V8 project authors. All rights reserved. // This code is governed by the BSD license found in the LICENSE file. /*--- -esid: sec-arraybuffer-length +esid: sec-object.freeze description: > - Automatically ported from ObjectFreeze test - in V8's mjsunit test typedarray-resizablearraybuffer.js + Object.freeze throws on non-0-length TypedArrays backed by resizable + buffers but do not throw on 0-length ones features: [resizable-arraybuffer] -flags: [onlyStrict] +includes: [resizableArrayBufferUtils.js] ---*/ -class MyUint8Array extends Uint8Array { -} - -class MyFloat32Array extends Float32Array { -} - -class MyBigInt64Array extends BigInt64Array { -} - -const builtinCtors = [ - Uint8Array, - Int8Array, - Uint16Array, - Int16Array, - Uint32Array, - Int32Array, - Float32Array, - Float64Array, - Uint8ClampedArray, - BigUint64Array, - BigInt64Array -]; - -const ctors = [ - ...builtinCtors, - MyUint8Array, - MyFloat32Array, - MyBigInt64Array -]; - -function CreateResizableArrayBuffer(byteLength, maxByteLength) { - return new ArrayBuffer(byteLength, { maxByteLength: maxByteLength }); -} - // Freezing non-OOB non-zero-length TAs throws. for (let ctor of ctors) { const rab = CreateResizableArrayBuffer(4 * ctor.BYTES_PER_ELEMENT, 8 * ctor.BYTES_PER_ELEMENT); diff --git a/test/built-ins/RegExp/property-escapes/generated/ASCII.js b/test/built-ins/RegExp/property-escapes/generated/ASCII.js index ab71251912a..3a672eb8116 100644 --- a/test/built-ins/RegExp/property-escapes/generated/ASCII.js +++ b/test/built-ins/RegExp/property-escapes/generated/ASCII.js @@ -7,7 +7,7 @@ description: > Unicode property escapes for `ASCII` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.1.0 + Unicode v16.0.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/property-escapes/generated/ASCII_Hex_Digit.js b/test/built-ins/RegExp/property-escapes/generated/ASCII_Hex_Digit.js index ca629c533a9..152599ac77e 100644 --- a/test/built-ins/RegExp/property-escapes/generated/ASCII_Hex_Digit.js +++ b/test/built-ins/RegExp/property-escapes/generated/ASCII_Hex_Digit.js @@ -7,7 +7,7 @@ description: > Unicode property escapes for `ASCII_Hex_Digit` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.1.0 + Unicode v16.0.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/property-escapes/generated/Alphabetic.js b/test/built-ins/RegExp/property-escapes/generated/Alphabetic.js index 5b33cd74b19..14f6c8deb4c 100644 --- a/test/built-ins/RegExp/property-escapes/generated/Alphabetic.js +++ b/test/built-ins/RegExp/property-escapes/generated/Alphabetic.js @@ -7,7 +7,7 @@ description: > Unicode property escapes for `Alphabetic` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.1.0 + Unicode v16.0.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] @@ -29,6 +29,7 @@ const matchSymbols = buildString({ 0x0005C7, 0x0006FF, 0x0007FA, + 0x000897, 0x0009B2, 0x0009CE, 0x0009D7, @@ -85,6 +86,8 @@ const matchSymbols = buildString({ 0x00FB3E, 0x010808, 0x01083C, + 0x010D69, + 0x010EFC, 0x010F27, 0x0110C2, 0x011176, @@ -94,6 +97,12 @@ const matchSymbols = buildString({ 0x011288, 0x011350, 0x011357, + 0x01138B, + 0x01138E, + 0x0113C2, + 0x0113C5, + 0x0113D1, + 0x0113D3, 0x0114C7, 0x011640, 0x011644, @@ -115,6 +124,7 @@ const matchSymbols = buildString({ 0x01D546, 0x01E08F, 0x01E14E, + 0x01E5F0, 0x01E947, 0x01E94B, 0x01EE24, @@ -142,7 +152,7 @@ const matchSymbols = buildString({ [0x0000F8, 0x0002C1], [0x0002C6, 0x0002D1], [0x0002E0, 0x0002E4], - [0x000370, 0x000374], + [0x000363, 0x000374], [0x000376, 0x000377], [0x00037A, 0x00037D], [0x000388, 0x00038A], @@ -359,14 +369,14 @@ const matchSymbols = buildString({ [0x001C00, 0x001C36], [0x001C4D, 0x001C4F], [0x001C5A, 0x001C7D], - [0x001C80, 0x001C88], + [0x001C80, 0x001C8A], [0x001C90, 0x001CBA], [0x001CBD, 0x001CBF], [0x001CE9, 0x001CEC], [0x001CEE, 0x001CF3], [0x001CF5, 0x001CF6], [0x001D00, 0x001DBF], - [0x001DE7, 0x001DF4], + [0x001DD3, 0x001DF4], [0x001E00, 0x001F15], [0x001F18, 0x001F1D], [0x001F20, 0x001F45], @@ -429,9 +439,9 @@ const matchSymbols = buildString({ [0x00A67F, 0x00A6EF], [0x00A717, 0x00A71F], [0x00A722, 0x00A788], - [0x00A78B, 0x00A7CA], + [0x00A78B, 0x00A7CD], [0x00A7D0, 0x00A7D1], - [0x00A7D5, 0x00A7D9], + [0x00A7D5, 0x00A7DC], [0x00A7F2, 0x00A805], [0x00A807, 0x00A827], [0x00A840, 0x00A873], @@ -516,6 +526,7 @@ const matchSymbols = buildString({ [0x0105A3, 0x0105B1], [0x0105B3, 0x0105B9], [0x0105BB, 0x0105BC], + [0x0105C0, 0x0105F3], [0x010600, 0x010736], [0x010740, 0x010755], [0x010760, 0x010767], @@ -551,9 +562,12 @@ const matchSymbols = buildString({ [0x010C80, 0x010CB2], [0x010CC0, 0x010CF2], [0x010D00, 0x010D27], + [0x010D4A, 0x010D65], + [0x010D6F, 0x010D85], [0x010E80, 0x010EA9], [0x010EAB, 0x010EAC], [0x010EB0, 0x010EB1], + [0x010EC2, 0x010EC4], [0x010F00, 0x010F1C], [0x010F30, 0x010F45], [0x010F70, 0x010F81], @@ -588,6 +602,11 @@ const matchSymbols = buildString({ [0x011347, 0x011348], [0x01134B, 0x01134C], [0x01135D, 0x011363], + [0x011380, 0x011389], + [0x011390, 0x0113B5], + [0x0113B7, 0x0113C0], + [0x0113C7, 0x0113CA], + [0x0113CC, 0x0113CD], [0x011400, 0x011441], [0x011443, 0x011445], [0x011447, 0x01144A], @@ -619,6 +638,7 @@ const matchSymbols = buildString({ [0x011A35, 0x011A3E], [0x011A50, 0x011A97], [0x011AB0, 0x011AF8], + [0x011BC0, 0x011BE0], [0x011C00, 0x011C08], [0x011C0A, 0x011C36], [0x011C38, 0x011C3E], @@ -646,7 +666,9 @@ const matchSymbols = buildString({ [0x012F90, 0x012FF0], [0x013000, 0x01342F], [0x013441, 0x013446], + [0x013460, 0x0143FA], [0x014400, 0x014646], + [0x016100, 0x01612E], [0x016800, 0x016A38], [0x016A40, 0x016A5E], [0x016A70, 0x016ABE], @@ -655,6 +677,7 @@ const matchSymbols = buildString({ [0x016B40, 0x016B43], [0x016B63, 0x016B77], [0x016B7D, 0x016B8F], + [0x016D40, 0x016D6C], [0x016E40, 0x016E7F], [0x016F00, 0x016F4A], [0x016F4F, 0x016F87], @@ -663,7 +686,7 @@ const matchSymbols = buildString({ [0x016FF0, 0x016FF1], [0x017000, 0x0187F7], [0x018800, 0x018CD5], - [0x018D00, 0x018D08], + [0x018CFF, 0x018D08], [0x01AFF0, 0x01AFF3], [0x01AFF5, 0x01AFFB], [0x01AFFD, 0x01AFFE], @@ -715,6 +738,7 @@ const matchSymbols = buildString({ [0x01E290, 0x01E2AD], [0x01E2C0, 0x01E2EB], [0x01E4D0, 0x01E4EB], + [0x01E5D0, 0x01E5ED], [0x01E7E0, 0x01E7E6], [0x01E7E8, 0x01E7EB], [0x01E7ED, 0x01E7EE], @@ -946,6 +970,13 @@ const nonMatchSymbols = buildString({ 0x011329, 0x011331, 0x011334, + 0x01138A, + 0x01138F, + 0x0113B6, + 0x0113C1, + 0x0113C6, + 0x0113CB, + 0x0113D2, 0x011442, 0x011446, 0x0114C6, @@ -1043,7 +1074,7 @@ const nonMatchSymbols = buildString({ [0x0002D2, 0x0002DF], [0x0002E5, 0x0002EB], [0x0002EF, 0x000344], - [0x000346, 0x00036F], + [0x000346, 0x000362], [0x000378, 0x000379], [0x000380, 0x000385], [0x000482, 0x000489], @@ -1069,7 +1100,8 @@ const nonMatchSymbols = buildString({ [0x00082D, 0x00083F], [0x000859, 0x00085F], [0x00086B, 0x00086F], - [0x00088F, 0x00089F], + [0x00088F, 0x000896], + [0x000898, 0x00089F], [0x0008CA, 0x0008D3], [0x0008E0, 0x0008E2], [0x0008EA, 0x0008EF], @@ -1199,12 +1231,12 @@ const nonMatchSymbols = buildString({ [0x001C37, 0x001C4C], [0x001C50, 0x001C59], [0x001C7E, 0x001C7F], - [0x001C89, 0x001C8F], + [0x001C8B, 0x001C8F], [0x001CBB, 0x001CBC], [0x001CC0, 0x001CE8], [0x001CF7, 0x001CF9], [0x001CFB, 0x001CFF], - [0x001DC0, 0x001DE6], + [0x001DC0, 0x001DD2], [0x001DF5, 0x001DFF], [0x001F16, 0x001F17], [0x001F1E, 0x001F1F], @@ -1260,8 +1292,8 @@ const nonMatchSymbols = buildString({ [0x00A6F0, 0x00A716], [0x00A720, 0x00A721], [0x00A789, 0x00A78A], - [0x00A7CB, 0x00A7CF], - [0x00A7DA, 0x00A7F1], + [0x00A7CE, 0x00A7CF], + [0x00A7DD, 0x00A7F1], [0x00A828, 0x00A83F], [0x00A874, 0x00A87F], [0x00A8C6, 0x00A8F1], @@ -1323,7 +1355,8 @@ const nonMatchSymbols = buildString({ [0x0104FC, 0x0104FF], [0x010528, 0x01052F], [0x010564, 0x01056F], - [0x0105BD, 0x0105FF], + [0x0105BD, 0x0105BF], + [0x0105F4, 0x0105FF], [0x010737, 0x01073F], [0x010756, 0x01075F], [0x010768, 0x01077F], @@ -1351,9 +1384,14 @@ const nonMatchSymbols = buildString({ [0x010C49, 0x010C7F], [0x010CB3, 0x010CBF], [0x010CF3, 0x010CFF], - [0x010D28, 0x010E7F], + [0x010D28, 0x010D49], + [0x010D66, 0x010D68], + [0x010D6A, 0x010D6E], + [0x010D86, 0x010E7F], [0x010EAD, 0x010EAF], - [0x010EB2, 0x010EFF], + [0x010EB2, 0x010EC1], + [0x010EC5, 0x010EFB], + [0x010EFD, 0x010EFF], [0x010F1D, 0x010F26], [0x010F28, 0x010F2F], [0x010F46, 0x010F6F], @@ -1385,7 +1423,11 @@ const nonMatchSymbols = buildString({ [0x01134D, 0x01134F], [0x011351, 0x011356], [0x011358, 0x01135C], - [0x011364, 0x0113FF], + [0x011364, 0x01137F], + [0x01138C, 0x01138D], + [0x0113C3, 0x0113C4], + [0x0113CE, 0x0113D0], + [0x0113D4, 0x0113FF], [0x01144B, 0x01145E], [0x011462, 0x01147F], [0x0114C2, 0x0114C3], @@ -1414,7 +1456,8 @@ const nonMatchSymbols = buildString({ [0x011A3F, 0x011A4F], [0x011A98, 0x011A9C], [0x011A9E, 0x011AAF], - [0x011AF9, 0x011BFF], + [0x011AF9, 0x011BBF], + [0x011BE1, 0x011BFF], [0x011C41, 0x011C71], [0x011C90, 0x011C91], [0x011CB7, 0x011CFF], @@ -1431,8 +1474,10 @@ const nonMatchSymbols = buildString({ [0x012544, 0x012F8F], [0x012FF1, 0x012FFF], [0x013430, 0x013440], - [0x013447, 0x0143FF], - [0x014647, 0x0167FF], + [0x013447, 0x01345F], + [0x0143FB, 0x0143FF], + [0x014647, 0x0160FF], + [0x01612F, 0x0167FF], [0x016A39, 0x016A3F], [0x016A5F, 0x016A6F], [0x016ABF, 0x016ACF], @@ -1440,7 +1485,8 @@ const nonMatchSymbols = buildString({ [0x016B30, 0x016B3F], [0x016B44, 0x016B62], [0x016B78, 0x016B7C], - [0x016B90, 0x016E3F], + [0x016B90, 0x016D3F], + [0x016D6D, 0x016E3F], [0x016E80, 0x016EFF], [0x016F4B, 0x016F4E], [0x016F88, 0x016F8E], @@ -1448,7 +1494,7 @@ const nonMatchSymbols = buildString({ [0x016FE4, 0x016FEF], [0x016FF2, 0x016FFF], [0x0187F8, 0x0187FF], - [0x018CD6, 0x018CFF], + [0x018CD6, 0x018CFE], [0x018D09, 0x01AFEF], [0x01B123, 0x01B131], [0x01B133, 0x01B14F], @@ -1479,7 +1525,9 @@ const nonMatchSymbols = buildString({ [0x01E14F, 0x01E28F], [0x01E2AE, 0x01E2BF], [0x01E2EC, 0x01E4CF], - [0x01E4EC, 0x01E7DF], + [0x01E4EC, 0x01E5CF], + [0x01E5EE, 0x01E5EF], + [0x01E5F1, 0x01E7DF], [0x01E8C5, 0x01E8FF], [0x01E944, 0x01E946], [0x01E948, 0x01E94A], diff --git a/test/built-ins/RegExp/property-escapes/generated/Any.js b/test/built-ins/RegExp/property-escapes/generated/Any.js index cb154d3feb2..a137f765355 100644 --- a/test/built-ins/RegExp/property-escapes/generated/Any.js +++ b/test/built-ins/RegExp/property-escapes/generated/Any.js @@ -7,7 +7,7 @@ description: > Unicode property escapes for `Any` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.1.0 + Unicode v16.0.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/property-escapes/generated/Assigned.js b/test/built-ins/RegExp/property-escapes/generated/Assigned.js index 98fbf87edcd..c3a728c5d73 100644 --- a/test/built-ins/RegExp/property-escapes/generated/Assigned.js +++ b/test/built-ins/RegExp/property-escapes/generated/Assigned.js @@ -7,7 +7,7 @@ description: > Unicode property escapes for `Assigned` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.1.0 + Unicode v16.0.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] @@ -55,6 +55,10 @@ const matchSymbols = buildString({ 0x011288, 0x011350, 0x011357, + 0x01138B, + 0x01138E, + 0x0113C2, + 0x0113C5, 0x011909, 0x011D3A, 0x011FB0, @@ -65,6 +69,7 @@ const matchSymbols = buildString({ 0x01D546, 0x01E08F, 0x01E2FF, + 0x01E5FF, 0x01EE24, 0x01EE27, 0x01EE39, @@ -107,7 +112,7 @@ const matchSymbols = buildString({ [0x000860, 0x00086A], [0x000870, 0x00088E], [0x000890, 0x000891], - [0x000898, 0x000983], + [0x000897, 0x000983], [0x000985, 0x00098C], [0x00098F, 0x000990], [0x000993, 0x0009A8], @@ -278,11 +283,10 @@ const matchSymbols = buildString({ [0x001AA0, 0x001AAD], [0x001AB0, 0x001ACE], [0x001B00, 0x001B4C], - [0x001B50, 0x001B7E], - [0x001B80, 0x001BF3], + [0x001B4E, 0x001BF3], [0x001BFC, 0x001C37], [0x001C3B, 0x001C49], - [0x001C4D, 0x001C88], + [0x001C4D, 0x001C8A], [0x001C90, 0x001CBA], [0x001CBD, 0x001CC7], [0x001CD0, 0x001CFA], @@ -306,7 +310,7 @@ const matchSymbols = buildString({ [0x0020A0, 0x0020C0], [0x0020D0, 0x0020F0], [0x002100, 0x00218B], - [0x002190, 0x002426], + [0x002190, 0x002429], [0x002440, 0x00244A], [0x002460, 0x002B73], [0x002B76, 0x002B95], @@ -332,15 +336,15 @@ const matchSymbols = buildString({ [0x003099, 0x0030FF], [0x003105, 0x00312F], [0x003131, 0x00318E], - [0x003190, 0x0031E3], + [0x003190, 0x0031E5], [0x0031EF, 0x00321E], [0x003220, 0x00A48C], [0x00A490, 0x00A4C6], [0x00A4D0, 0x00A62B], [0x00A640, 0x00A6F7], - [0x00A700, 0x00A7CA], + [0x00A700, 0x00A7CD], [0x00A7D0, 0x00A7D1], - [0x00A7D5, 0x00A7D9], + [0x00A7D5, 0x00A7DC], [0x00A7F2, 0x00A82C], [0x00A830, 0x00A839], [0x00A840, 0x00A877], @@ -428,6 +432,7 @@ const matchSymbols = buildString({ [0x0105A3, 0x0105B1], [0x0105B3, 0x0105B9], [0x0105BB, 0x0105BC], + [0x0105C0, 0x0105F3], [0x010600, 0x010736], [0x010740, 0x010755], [0x010760, 0x010767], @@ -468,11 +473,15 @@ const matchSymbols = buildString({ [0x010CC0, 0x010CF2], [0x010CFA, 0x010D27], [0x010D30, 0x010D39], + [0x010D40, 0x010D65], + [0x010D69, 0x010D85], + [0x010D8E, 0x010D8F], [0x010E60, 0x010E7E], [0x010E80, 0x010EA9], [0x010EAB, 0x010EAD], [0x010EB0, 0x010EB1], - [0x010EFD, 0x010F27], + [0x010EC2, 0x010EC4], + [0x010EFC, 0x010F27], [0x010F30, 0x010F59], [0x010F70, 0x010F89], [0x010FB0, 0x010FCB], @@ -508,6 +517,13 @@ const matchSymbols = buildString({ [0x01135D, 0x011363], [0x011366, 0x01136C], [0x011370, 0x011374], + [0x011380, 0x011389], + [0x011390, 0x0113B5], + [0x0113B7, 0x0113C0], + [0x0113C7, 0x0113CA], + [0x0113CC, 0x0113D5], + [0x0113D7, 0x0113D8], + [0x0113E1, 0x0113E2], [0x011400, 0x01145B], [0x01145D, 0x011461], [0x011480, 0x0114C7], @@ -519,6 +535,7 @@ const matchSymbols = buildString({ [0x011660, 0x01166C], [0x011680, 0x0116B9], [0x0116C0, 0x0116C9], + [0x0116D0, 0x0116E3], [0x011700, 0x01171A], [0x01171D, 0x01172B], [0x011730, 0x011746], @@ -538,6 +555,8 @@ const matchSymbols = buildString({ [0x011A50, 0x011AA2], [0x011AB0, 0x011AF8], [0x011B00, 0x011B09], + [0x011BC0, 0x011BE1], + [0x011BF0, 0x011BF9], [0x011C00, 0x011C08], [0x011C0A, 0x011C36], [0x011C38, 0x011C45], @@ -560,7 +579,7 @@ const matchSymbols = buildString({ [0x011EE0, 0x011EF8], [0x011F00, 0x011F10], [0x011F12, 0x011F3A], - [0x011F3E, 0x011F59], + [0x011F3E, 0x011F5A], [0x011FC0, 0x011FF1], [0x011FFF, 0x012399], [0x012400, 0x01246E], @@ -568,7 +587,9 @@ const matchSymbols = buildString({ [0x012480, 0x012543], [0x012F90, 0x012FF2], [0x013000, 0x013455], + [0x013460, 0x0143FA], [0x014400, 0x014646], + [0x016100, 0x016139], [0x016800, 0x016A38], [0x016A40, 0x016A5E], [0x016A60, 0x016A69], @@ -581,6 +602,7 @@ const matchSymbols = buildString({ [0x016B5B, 0x016B61], [0x016B63, 0x016B77], [0x016B7D, 0x016B8F], + [0x016D40, 0x016D79], [0x016E40, 0x016E9A], [0x016F00, 0x016F4A], [0x016F4F, 0x016F87], @@ -589,7 +611,7 @@ const matchSymbols = buildString({ [0x016FF0, 0x016FF1], [0x017000, 0x0187F7], [0x018800, 0x018CD5], - [0x018D00, 0x018D08], + [0x018CFF, 0x018D08], [0x01AFF0, 0x01AFF3], [0x01AFF5, 0x01AFFB], [0x01AFFD, 0x01AFFE], @@ -602,6 +624,8 @@ const matchSymbols = buildString({ [0x01BC80, 0x01BC88], [0x01BC90, 0x01BC99], [0x01BC9C, 0x01BCA3], + [0x01CC00, 0x01CCF9], + [0x01CD00, 0x01CEB3], [0x01CF00, 0x01CF2D], [0x01CF30, 0x01CF46], [0x01CF50, 0x01CFC3], @@ -648,6 +672,7 @@ const matchSymbols = buildString({ [0x01E290, 0x01E2AE], [0x01E2C0, 0x01E2F9], [0x01E4D0, 0x01E4F9], + [0x01E5D0, 0x01E5FA], [0x01E7E0, 0x01E7E6], [0x01E7E8, 0x01E7EB], [0x01E7ED, 0x01E7EE], @@ -700,19 +725,18 @@ const matchSymbols = buildString({ [0x01F850, 0x01F859], [0x01F860, 0x01F887], [0x01F890, 0x01F8AD], - [0x01F8B0, 0x01F8B1], + [0x01F8B0, 0x01F8BB], + [0x01F8C0, 0x01F8C1], [0x01F900, 0x01FA53], [0x01FA60, 0x01FA6D], [0x01FA70, 0x01FA7C], - [0x01FA80, 0x01FA88], - [0x01FA90, 0x01FABD], - [0x01FABF, 0x01FAC5], - [0x01FACE, 0x01FADB], - [0x01FAE0, 0x01FAE8], + [0x01FA80, 0x01FA89], + [0x01FA8F, 0x01FAC6], + [0x01FACE, 0x01FADC], + [0x01FADF, 0x01FAE9], [0x01FAF0, 0x01FAF8], [0x01FB00, 0x01FB92], - [0x01FB94, 0x01FBCA], - [0x01FBF0, 0x01FBF9], + [0x01FB94, 0x01FBF9], [0x020000, 0x02A6DF], [0x02A700, 0x02B739], [0x02B740, 0x02B81D], @@ -825,7 +849,7 @@ const nonMatchSymbols = buildString({ 0x001771, 0x00191F, 0x001A5F, - 0x001B7F, + 0x001B4D, 0x001F58, 0x001F5A, 0x001F5C, @@ -904,6 +928,13 @@ const nonMatchSymbols = buildString({ 0x011331, 0x011334, 0x01133A, + 0x01138A, + 0x01138F, + 0x0113B6, + 0x0113C1, + 0x0113C6, + 0x0113CB, + 0x0113D6, 0x01145C, 0x011914, 0x011917, @@ -977,7 +1008,6 @@ const nonMatchSymbols = buildString({ 0x01EEAA, 0x01F0C0, 0x01F0D0, - 0x01FABE, 0x01FB93 ], ranges: [ @@ -994,7 +1024,7 @@ const nonMatchSymbols = buildString({ [0x00082E, 0x00082F], [0x00085C, 0x00085D], [0x00086B, 0x00086F], - [0x000892, 0x000897], + [0x000892, 0x000896], [0x00098D, 0x00098E], [0x000991, 0x000992], [0x0009B3, 0x0009B5], @@ -1106,11 +1136,10 @@ const nonMatchSymbols = buildString({ [0x001A9A, 0x001A9F], [0x001AAE, 0x001AAF], [0x001ACF, 0x001AFF], - [0x001B4D, 0x001B4F], [0x001BF4, 0x001BFB], [0x001C38, 0x001C3A], [0x001C4A, 0x001C4C], - [0x001C89, 0x001C8F], + [0x001C8B, 0x001C8F], [0x001CBB, 0x001CBC], [0x001CC8, 0x001CCF], [0x001CFB, 0x001CFF], @@ -1126,7 +1155,7 @@ const nonMatchSymbols = buildString({ [0x0020C1, 0x0020CF], [0x0020F1, 0x0020FF], [0x00218C, 0x00218F], - [0x002427, 0x00243F], + [0x00242A, 0x00243F], [0x00244B, 0x00245F], [0x002B74, 0x002B75], [0x002CF4, 0x002CF8], @@ -1140,13 +1169,13 @@ const nonMatchSymbols = buildString({ [0x002FD6, 0x002FEF], [0x003097, 0x003098], [0x003100, 0x003104], - [0x0031E4, 0x0031EE], + [0x0031E6, 0x0031EE], [0x00A48D, 0x00A48F], [0x00A4C7, 0x00A4CF], [0x00A62C, 0x00A63F], [0x00A6F8, 0x00A6FF], - [0x00A7CB, 0x00A7CF], - [0x00A7DA, 0x00A7F1], + [0x00A7CE, 0x00A7CF], + [0x00A7DD, 0x00A7F1], [0x00A82D, 0x00A82F], [0x00A83A, 0x00A83F], [0x00A878, 0x00A87F], @@ -1209,7 +1238,8 @@ const nonMatchSymbols = buildString({ [0x0104FC, 0x0104FF], [0x010528, 0x01052F], [0x010564, 0x01056E], - [0x0105BD, 0x0105FF], + [0x0105BD, 0x0105BF], + [0x0105F4, 0x0105FF], [0x010737, 0x01073F], [0x010756, 0x01075F], [0x010768, 0x01077F], @@ -1243,9 +1273,13 @@ const nonMatchSymbols = buildString({ [0x010CB3, 0x010CBF], [0x010CF3, 0x010CF9], [0x010D28, 0x010D2F], - [0x010D3A, 0x010E5F], + [0x010D3A, 0x010D3F], + [0x010D66, 0x010D68], + [0x010D86, 0x010D8D], + [0x010D90, 0x010E5F], [0x010EAE, 0x010EAF], - [0x010EB2, 0x010EFC], + [0x010EB2, 0x010EC1], + [0x010EC5, 0x010EFB], [0x010F28, 0x010F2F], [0x010F5A, 0x010F6F], [0x010F8A, 0x010FAF], @@ -1273,7 +1307,11 @@ const nonMatchSymbols = buildString({ [0x011358, 0x01135C], [0x011364, 0x011365], [0x01136D, 0x01136F], - [0x011375, 0x0113FF], + [0x011375, 0x01137F], + [0x01138C, 0x01138D], + [0x0113C3, 0x0113C4], + [0x0113D9, 0x0113E0], + [0x0113E3, 0x0113FF], [0x011462, 0x01147F], [0x0114C8, 0x0114CF], [0x0114DA, 0x01157F], @@ -1283,7 +1321,8 @@ const nonMatchSymbols = buildString({ [0x01165A, 0x01165F], [0x01166D, 0x01167F], [0x0116BA, 0x0116BF], - [0x0116CA, 0x0116FF], + [0x0116CA, 0x0116CF], + [0x0116E4, 0x0116FF], [0x01171B, 0x01171C], [0x01172C, 0x01172F], [0x011747, 0x0117FF], @@ -1300,7 +1339,9 @@ const nonMatchSymbols = buildString({ [0x011A48, 0x011A4F], [0x011AA3, 0x011AAF], [0x011AF9, 0x011AFF], - [0x011B0A, 0x011BFF], + [0x011B0A, 0x011BBF], + [0x011BE2, 0x011BEF], + [0x011BFA, 0x011BFF], [0x011C46, 0x011C4F], [0x011C6D, 0x011C6F], [0x011C90, 0x011C91], @@ -1312,15 +1353,17 @@ const nonMatchSymbols = buildString({ [0x011DAA, 0x011EDF], [0x011EF9, 0x011EFF], [0x011F3B, 0x011F3D], - [0x011F5A, 0x011FAF], + [0x011F5B, 0x011FAF], [0x011FB1, 0x011FBF], [0x011FF2, 0x011FFE], [0x01239A, 0x0123FF], [0x012475, 0x01247F], [0x012544, 0x012F8F], [0x012FF3, 0x012FFF], - [0x013456, 0x0143FF], - [0x014647, 0x0167FF], + [0x013456, 0x01345F], + [0x0143FB, 0x0143FF], + [0x014647, 0x0160FF], + [0x01613A, 0x0167FF], [0x016A39, 0x016A3F], [0x016A6A, 0x016A6D], [0x016ACA, 0x016ACF], @@ -1328,7 +1371,8 @@ const nonMatchSymbols = buildString({ [0x016AF6, 0x016AFF], [0x016B46, 0x016B4F], [0x016B78, 0x016B7C], - [0x016B90, 0x016E3F], + [0x016B90, 0x016D3F], + [0x016D7A, 0x016E3F], [0x016E9B, 0x016EFF], [0x016F4B, 0x016F4E], [0x016F88, 0x016F8E], @@ -1336,7 +1380,7 @@ const nonMatchSymbols = buildString({ [0x016FE5, 0x016FEF], [0x016FF2, 0x016FFF], [0x0187F8, 0x0187FF], - [0x018CD6, 0x018CFF], + [0x018CD6, 0x018CFE], [0x018D09, 0x01AFEF], [0x01B123, 0x01B131], [0x01B133, 0x01B14F], @@ -1348,7 +1392,9 @@ const nonMatchSymbols = buildString({ [0x01BC7D, 0x01BC7F], [0x01BC89, 0x01BC8F], [0x01BC9A, 0x01BC9B], - [0x01BCA4, 0x01CEFF], + [0x01BCA4, 0x01CBFF], + [0x01CCFA, 0x01CCFF], + [0x01CEB4, 0x01CEFF], [0x01CF2E, 0x01CF2F], [0x01CF47, 0x01CF4F], [0x01CFC4, 0x01CFFF], @@ -1382,7 +1428,9 @@ const nonMatchSymbols = buildString({ [0x01E2AF, 0x01E2BF], [0x01E2FA, 0x01E2FE], [0x01E300, 0x01E4CF], - [0x01E4FA, 0x01E7DF], + [0x01E4FA, 0x01E5CF], + [0x01E5FB, 0x01E5FE], + [0x01E600, 0x01E7DF], [0x01E8C5, 0x01E8C6], [0x01E8D7, 0x01E8FF], [0x01E94C, 0x01E94F], @@ -1420,16 +1468,16 @@ const nonMatchSymbols = buildString({ [0x01F85A, 0x01F85F], [0x01F888, 0x01F88F], [0x01F8AE, 0x01F8AF], - [0x01F8B2, 0x01F8FF], + [0x01F8BC, 0x01F8BF], + [0x01F8C2, 0x01F8FF], [0x01FA54, 0x01FA5F], [0x01FA6E, 0x01FA6F], [0x01FA7D, 0x01FA7F], - [0x01FA89, 0x01FA8F], - [0x01FAC6, 0x01FACD], - [0x01FADC, 0x01FADF], - [0x01FAE9, 0x01FAEF], + [0x01FA8A, 0x01FA8E], + [0x01FAC7, 0x01FACD], + [0x01FADD, 0x01FADE], + [0x01FAEA, 0x01FAEF], [0x01FAF9, 0x01FAFF], - [0x01FBCB, 0x01FBEF], [0x01FBFA, 0x01FFFF], [0x02A6E0, 0x02A6FF], [0x02B73A, 0x02B73F], diff --git a/test/built-ins/RegExp/property-escapes/generated/Bidi_Control.js b/test/built-ins/RegExp/property-escapes/generated/Bidi_Control.js index 533101df667..0b212978bba 100644 --- a/test/built-ins/RegExp/property-escapes/generated/Bidi_Control.js +++ b/test/built-ins/RegExp/property-escapes/generated/Bidi_Control.js @@ -7,7 +7,7 @@ description: > Unicode property escapes for `Bidi_Control` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.1.0 + Unicode v16.0.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/property-escapes/generated/Bidi_Mirrored.js b/test/built-ins/RegExp/property-escapes/generated/Bidi_Mirrored.js index a1b0161bf81..be94df512e1 100644 --- a/test/built-ins/RegExp/property-escapes/generated/Bidi_Mirrored.js +++ b/test/built-ins/RegExp/property-escapes/generated/Bidi_Mirrored.js @@ -7,7 +7,7 @@ description: > Unicode property escapes for `Bidi_Mirrored` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.1.0 + Unicode v16.0.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] @@ -72,7 +72,7 @@ const matchSymbols = buildString({ [0x002252, 0x002255], [0x00225F, 0x002260], [0x002264, 0x00226B], - [0x00226E, 0x00228C], + [0x00226D, 0x00228C], [0x00228F, 0x002292], [0x0022A2, 0x0022A3], [0x0022A6, 0x0022B8], @@ -155,6 +155,7 @@ const nonMatchSymbols = buildString({ 0x00223A, 0x002261, 0x002263, + 0x00226C, 0x0027C7, 0x0027CA, 0x0029A1, @@ -198,7 +199,6 @@ const nonMatchSymbols = buildString({ [0x002234, 0x002238], [0x00224D, 0x002251], [0x002256, 0x00225E], - [0x00226C, 0x00226D], [0x00228D, 0x00228E], [0x002293, 0x002297], [0x002299, 0x0022A1], diff --git a/test/built-ins/RegExp/property-escapes/generated/Case_Ignorable.js b/test/built-ins/RegExp/property-escapes/generated/Case_Ignorable.js index 33cfff9f9c4..e780d80620b 100644 --- a/test/built-ins/RegExp/property-escapes/generated/Case_Ignorable.js +++ b/test/built-ins/RegExp/property-escapes/generated/Case_Ignorable.js @@ -7,7 +7,7 @@ description: > Unicode property escapes for `Case_Ignorable` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.1.0 + Unicode v16.0.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] @@ -148,6 +148,8 @@ const matchSymbols = buildString({ 0x0101FD, 0x0102E0, 0x010A3F, + 0x010D4E, + 0x010D6F, 0x011001, 0x011070, 0x0110BD, @@ -160,6 +162,9 @@ const matchSymbols = buildString({ 0x011241, 0x0112DF, 0x011340, + 0x0113CE, + 0x0113D0, + 0x0113D2, 0x011446, 0x01145E, 0x0114BA, @@ -167,6 +172,8 @@ const matchSymbols = buildString({ 0x0116AB, 0x0116AD, 0x0116B7, + 0x01171D, + 0x01171F, 0x01193E, 0x011943, 0x0119E0, @@ -178,6 +185,7 @@ const matchSymbols = buildString({ 0x011D97, 0x011F40, 0x011F42, + 0x011F5A, 0x016F4F, 0x01DA75, 0x01DA84, @@ -206,7 +214,7 @@ const matchSymbols = buildString({ [0x000816, 0x00082D], [0x000859, 0x00085B], [0x000890, 0x000891], - [0x000898, 0x00089F], + [0x000897, 0x00089F], [0x0008C9, 0x000902], [0x000941, 0x000948], [0x000951, 0x000957], @@ -354,8 +362,9 @@ const matchSymbols = buildString({ [0x010A38, 0x010A3A], [0x010AE5, 0x010AE6], [0x010D24, 0x010D27], + [0x010D69, 0x010D6D], [0x010EAB, 0x010EAC], - [0x010EFD, 0x010EFF], + [0x010EFC, 0x010EFF], [0x010F46, 0x010F50], [0x010F82, 0x010F85], [0x011038, 0x011046], @@ -376,6 +385,8 @@ const matchSymbols = buildString({ [0x01133B, 0x01133C], [0x011366, 0x01136C], [0x011370, 0x011374], + [0x0113BB, 0x0113C0], + [0x0113E1, 0x0113E2], [0x011438, 0x01143F], [0x011442, 0x011444], [0x0114B3, 0x0114B8], @@ -388,7 +399,6 @@ const matchSymbols = buildString({ [0x011633, 0x01163A], [0x01163F, 0x011640], [0x0116B0, 0x0116B5], - [0x01171D, 0x01171F], [0x011722, 0x011725], [0x011727, 0x01172B], [0x01182F, 0x011837], @@ -418,9 +428,13 @@ const matchSymbols = buildString({ [0x011F36, 0x011F3A], [0x013430, 0x013440], [0x013447, 0x013455], + [0x01611E, 0x016129], + [0x01612D, 0x01612F], [0x016AF0, 0x016AF4], [0x016B30, 0x016B36], [0x016B40, 0x016B43], + [0x016D40, 0x016D42], + [0x016D6B, 0x016D6C], [0x016F8F, 0x016F9F], [0x016FE0, 0x016FE1], [0x016FE3, 0x016FE4], @@ -449,6 +463,7 @@ const matchSymbols = buildString({ [0x01E130, 0x01E13D], [0x01E2EC, 0x01E2EF], [0x01E4EB, 0x01E4EF], + [0x01E5EE, 0x01E5EF], [0x01E8D0, 0x01E8D6], [0x01E944, 0x01E94B], [0x01F3FB, 0x01F3FF], @@ -518,8 +533,11 @@ const nonMatchSymbols = buildString({ 0x010786, 0x0107B1, 0x010A04, + 0x010D6E, 0x01112C, 0x011235, + 0x0113CF, + 0x0113D1, 0x011445, 0x0114B9, 0x0114C1, @@ -527,6 +545,7 @@ const nonMatchSymbols = buildString({ 0x01163E, 0x0116AC, 0x0116B6, + 0x01171E, 0x011726, 0x011838, 0x01193D, @@ -584,7 +603,7 @@ const nonMatchSymbols = buildString({ [0x00082E, 0x000858], [0x00085C, 0x000887], [0x000889, 0x00088F], - [0x000892, 0x000897], + [0x000892, 0x000896], [0x0008A0, 0x0008C8], [0x000903, 0x000939], [0x00093D, 0x000940], @@ -804,8 +823,10 @@ const nonMatchSymbols = buildString({ [0x010A3B, 0x010A3E], [0x010A40, 0x010AE4], [0x010AE7, 0x010D23], - [0x010D28, 0x010EAA], - [0x010EAD, 0x010EFC], + [0x010D28, 0x010D4D], + [0x010D4F, 0x010D68], + [0x010D70, 0x010EAA], + [0x010EAD, 0x010EFB], [0x010F00, 0x010F45], [0x010F51, 0x010F81], [0x010F86, 0x011000], @@ -836,7 +857,10 @@ const nonMatchSymbols = buildString({ [0x01133D, 0x01133F], [0x011341, 0x011365], [0x01136D, 0x01136F], - [0x011375, 0x011437], + [0x011375, 0x0113BA], + [0x0113C1, 0x0113CD], + [0x0113D3, 0x0113E0], + [0x0113E3, 0x011437], [0x011440, 0x011441], [0x011447, 0x01145D], [0x01145F, 0x0114B2], @@ -874,12 +898,17 @@ const nonMatchSymbols = buildString({ [0x011EF5, 0x011EFF], [0x011F02, 0x011F35], [0x011F3B, 0x011F3F], - [0x011F43, 0x01342F], + [0x011F43, 0x011F59], + [0x011F5B, 0x01342F], [0x013441, 0x013446], - [0x013456, 0x016AEF], + [0x013456, 0x01611D], + [0x01612A, 0x01612C], + [0x016130, 0x016AEF], [0x016AF5, 0x016B2F], [0x016B37, 0x016B3F], - [0x016B44, 0x016F4E], + [0x016B44, 0x016D3F], + [0x016D43, 0x016D6A], + [0x016D6D, 0x016F4E], [0x016F50, 0x016F8E], [0x016FA0, 0x016FDF], [0x016FE5, 0x01AFEF], @@ -904,7 +933,8 @@ const nonMatchSymbols = buildString({ [0x01E13E, 0x01E2AD], [0x01E2AF, 0x01E2EB], [0x01E2F0, 0x01E4EA], - [0x01E4F0, 0x01E8CF], + [0x01E4F0, 0x01E5ED], + [0x01E5F0, 0x01E8CF], [0x01E8D7, 0x01E943], [0x01E94C, 0x01F3FA], [0x01F400, 0x0E0000], diff --git a/test/built-ins/RegExp/property-escapes/generated/Cased.js b/test/built-ins/RegExp/property-escapes/generated/Cased.js index 75393a0bef6..90ed8f51af1 100644 --- a/test/built-ins/RegExp/property-escapes/generated/Cased.js +++ b/test/built-ins/RegExp/property-escapes/generated/Cased.js @@ -7,7 +7,7 @@ description: > Unicode property escapes for `Cased` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.1.0 + Unicode v16.0.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] @@ -72,7 +72,7 @@ const matchSymbols = buildString({ [0x0010FC, 0x0010FF], [0x0013A0, 0x0013F5], [0x0013F8, 0x0013FD], - [0x001C80, 0x001C88], + [0x001C80, 0x001C8A], [0x001C90, 0x001CBA], [0x001CBD, 0x001CBF], [0x001D00, 0x001DBF], @@ -109,9 +109,9 @@ const matchSymbols = buildString({ [0x00A680, 0x00A69D], [0x00A722, 0x00A787], [0x00A78B, 0x00A78E], - [0x00A790, 0x00A7CA], + [0x00A790, 0x00A7CD], [0x00A7D0, 0x00A7D1], - [0x00A7D5, 0x00A7D9], + [0x00A7D5, 0x00A7DC], [0x00A7F2, 0x00A7F6], [0x00A7F8, 0x00A7FA], [0x00AB30, 0x00AB5A], @@ -137,6 +137,8 @@ const matchSymbols = buildString({ [0x0107B2, 0x0107BA], [0x010C80, 0x010CB2], [0x010CC0, 0x010CF2], + [0x010D50, 0x010D65], + [0x010D70, 0x010D85], [0x0118A0, 0x0118DF], [0x016E40, 0x016E7F], [0x01D400, 0x01D454], @@ -274,7 +276,7 @@ const nonMatchSymbols = buildString({ [0x001100, 0x00139F], [0x0013F6, 0x0013F7], [0x0013FE, 0x001C7F], - [0x001C89, 0x001C8F], + [0x001C8B, 0x001C8F], [0x001CBB, 0x001CBC], [0x001CC0, 0x001CFF], [0x001DC0, 0x001DFF], @@ -312,8 +314,8 @@ const nonMatchSymbols = buildString({ [0x00A66E, 0x00A67F], [0x00A69E, 0x00A721], [0x00A788, 0x00A78A], - [0x00A7CB, 0x00A7CF], - [0x00A7DA, 0x00A7F1], + [0x00A7CE, 0x00A7CF], + [0x00A7DD, 0x00A7F1], [0x00A7FB, 0x00AB2F], [0x00AB6A, 0x00AB6F], [0x00ABC0, 0x00DBFF], @@ -329,7 +331,9 @@ const nonMatchSymbols = buildString({ [0x010781, 0x010782], [0x0107BB, 0x010C7F], [0x010CB3, 0x010CBF], - [0x010CF3, 0x01189F], + [0x010CF3, 0x010D4F], + [0x010D66, 0x010D6F], + [0x010D86, 0x01189F], [0x0118E0, 0x016E3F], [0x016E80, 0x01D3FF], [0x01D4A0, 0x01D4A1], diff --git a/test/built-ins/RegExp/property-escapes/generated/Changes_When_Casefolded.js b/test/built-ins/RegExp/property-escapes/generated/Changes_When_Casefolded.js index cba13918bb1..d38d1af05c2 100644 --- a/test/built-ins/RegExp/property-escapes/generated/Changes_When_Casefolded.js +++ b/test/built-ins/RegExp/property-escapes/generated/Changes_When_Casefolded.js @@ -7,7 +7,7 @@ description: > Unicode property escapes for `Changes_When_Casefolded` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.1.0 + Unicode v16.0.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] @@ -553,6 +553,8 @@ const matchSymbols = buildString({ 0x00A7D0, 0x00A7D6, 0x00A7D8, + 0x00A7DA, + 0x00A7DC, 0x00A7F5 ], ranges: [ @@ -595,7 +597,7 @@ const matchSymbols = buildString({ [0x000531, 0x000556], [0x0010A0, 0x0010C5], [0x0013F8, 0x0013FD], - [0x001C80, 0x001C88], + [0x001C80, 0x001C89], [0x001C90, 0x001CBA], [0x001CBD, 0x001CBF], [0x001E9A, 0x001E9B], @@ -625,6 +627,7 @@ const matchSymbols = buildString({ [0x00A7AA, 0x00A7AE], [0x00A7B0, 0x00A7B4], [0x00A7C4, 0x00A7C7], + [0x00A7CB, 0x00A7CC], [0x00AB70, 0x00ABBF], [0x00FB00, 0x00FB06], [0x00FB13, 0x00FB17], @@ -636,6 +639,7 @@ const matchSymbols = buildString({ [0x01058C, 0x010592], [0x010594, 0x010595], [0x010C80, 0x010CB2], + [0x010D50, 0x010D65], [0x0118A0, 0x0118BF], [0x016E40, 0x016E5F], [0x01E900, 0x01E921] @@ -1183,7 +1187,10 @@ const nonMatchSymbols = buildString({ 0x00A7C1, 0x00A7C3, 0x00A7C8, + 0x00A7CA, 0x00A7D7, + 0x00A7D9, + 0x00A7DB, 0x01057B, 0x01058B, 0x010593 @@ -1223,7 +1230,7 @@ const nonMatchSymbols = buildString({ [0x0010C8, 0x0010CC], [0x0010CE, 0x0013F7], [0x0013FE, 0x001C7F], - [0x001C89, 0x001C8F], + [0x001C8A, 0x001C8F], [0x001CBB, 0x001CBC], [0x001CC0, 0x001DFF], [0x001E95, 0x001E99], @@ -1265,9 +1272,9 @@ const nonMatchSymbols = buildString({ [0x00A787, 0x00A78A], [0x00A78E, 0x00A78F], [0x00A793, 0x00A795], - [0x00A7CA, 0x00A7CF], + [0x00A7CD, 0x00A7CF], [0x00A7D1, 0x00A7D5], - [0x00A7D9, 0x00A7F4], + [0x00A7DD, 0x00A7F4], [0x00A7F6, 0x00AB6F], [0x00ABC0, 0x00DBFF], [0x00E000, 0x00FAFF], @@ -1277,7 +1284,8 @@ const nonMatchSymbols = buildString({ [0x010428, 0x0104AF], [0x0104D4, 0x01056F], [0x010596, 0x010C7F], - [0x010CB3, 0x01189F], + [0x010CB3, 0x010D4F], + [0x010D66, 0x01189F], [0x0118C0, 0x016E3F], [0x016E60, 0x01E8FF], [0x01E922, 0x10FFFF] diff --git a/test/built-ins/RegExp/property-escapes/generated/Changes_When_Casemapped.js b/test/built-ins/RegExp/property-escapes/generated/Changes_When_Casemapped.js index 1319fd21d76..2715aada55b 100644 --- a/test/built-ins/RegExp/property-escapes/generated/Changes_When_Casemapped.js +++ b/test/built-ins/RegExp/property-escapes/generated/Changes_When_Casemapped.js @@ -7,7 +7,7 @@ description: > Unicode property escapes for `Changes_When_Casemapped` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.1.0 + Unicode v16.0.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] @@ -18,7 +18,6 @@ const matchSymbols = buildString({ 0x0000B5, 0x0001BF, 0x000259, - 0x000263, 0x00026F, 0x000275, 0x00027D, @@ -52,8 +51,7 @@ const matchSymbols = buildString({ [0x0000D8, 0x0000F6], [0x0000F8, 0x000137], [0x000139, 0x00018C], - [0x00018E, 0x00019A], - [0x00019C, 0x0001A9], + [0x00018E, 0x0001A9], [0x0001AC, 0x0001B9], [0x0001BC, 0x0001BD], [0x0001C4, 0x000220], @@ -62,7 +60,7 @@ const matchSymbols = buildString({ [0x000256, 0x000257], [0x00025B, 0x00025C], [0x000260, 0x000261], - [0x000265, 0x000266], + [0x000263, 0x000266], [0x000268, 0x00026C], [0x000271, 0x000272], [0x000282, 0x000283], @@ -85,7 +83,7 @@ const matchSymbols = buildString({ [0x0010FD, 0x0010FF], [0x0013A0, 0x0013F5], [0x0013F8, 0x0013FD], - [0x001C80, 0x001C88], + [0x001C80, 0x001C8A], [0x001C90, 0x001CBA], [0x001CBD, 0x001CBF], [0x001E00, 0x001E9B], @@ -123,9 +121,9 @@ const matchSymbols = buildString({ [0x00A78B, 0x00A78D], [0x00A790, 0x00A794], [0x00A796, 0x00A7AE], - [0x00A7B0, 0x00A7CA], + [0x00A7B0, 0x00A7CD], [0x00A7D0, 0x00A7D1], - [0x00A7D6, 0x00A7D9], + [0x00A7D6, 0x00A7DC], [0x00A7F5, 0x00A7F6], [0x00AB70, 0x00ABBF], [0x00FB00, 0x00FB06], @@ -145,6 +143,8 @@ const matchSymbols = buildString({ [0x0105BB, 0x0105BC], [0x010C80, 0x010CB2], [0x010CC0, 0x010CF2], + [0x010D50, 0x010D65], + [0x010D70, 0x010D85], [0x0118A0, 0x0118DF], [0x016E40, 0x016E7F], [0x01E900, 0x01E943] @@ -167,14 +167,12 @@ const nonMatchSymbols = buildString({ 0x0000F7, 0x000138, 0x00018D, - 0x00019B, 0x0001BE, 0x000221, 0x000255, 0x000258, 0x00025A, 0x000262, - 0x000264, 0x000267, 0x000270, 0x000281, @@ -242,7 +240,7 @@ const nonMatchSymbols = buildString({ [0x001100, 0x00139F], [0x0013F6, 0x0013F7], [0x0013FE, 0x001C7F], - [0x001C89, 0x001C8F], + [0x001C8B, 0x001C8F], [0x001CBB, 0x001CBC], [0x001CC0, 0x001D78], [0x001D7A, 0x001D7C], @@ -279,9 +277,9 @@ const nonMatchSymbols = buildString({ [0x00A770, 0x00A778], [0x00A788, 0x00A78A], [0x00A78E, 0x00A78F], - [0x00A7CB, 0x00A7CF], + [0x00A7CE, 0x00A7CF], [0x00A7D2, 0x00A7D5], - [0x00A7DA, 0x00A7F4], + [0x00A7DD, 0x00A7F4], [0x00A7F7, 0x00AB52], [0x00AB54, 0x00AB6F], [0x00ABC0, 0x00DBFF], @@ -295,7 +293,9 @@ const nonMatchSymbols = buildString({ [0x0104FC, 0x01056F], [0x0105BD, 0x010C7F], [0x010CB3, 0x010CBF], - [0x010CF3, 0x01189F], + [0x010CF3, 0x010D4F], + [0x010D66, 0x010D6F], + [0x010D86, 0x01189F], [0x0118E0, 0x016E3F], [0x016E80, 0x01E8FF], [0x01E944, 0x10FFFF] diff --git a/test/built-ins/RegExp/property-escapes/generated/Changes_When_Lowercased.js b/test/built-ins/RegExp/property-escapes/generated/Changes_When_Lowercased.js index 7193f4e7f33..de36f95a901 100644 --- a/test/built-ins/RegExp/property-escapes/generated/Changes_When_Lowercased.js +++ b/test/built-ins/RegExp/property-escapes/generated/Changes_When_Lowercased.js @@ -7,7 +7,7 @@ description: > Unicode property escapes for `Changes_When_Lowercased` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.1.0 + Unicode v16.0.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] @@ -256,6 +256,7 @@ const matchSymbols = buildString({ 0x00052E, 0x0010C7, 0x0010CD, + 0x001C89, 0x001E00, 0x001E02, 0x001E04, @@ -551,6 +552,8 @@ const matchSymbols = buildString({ 0x00A7D0, 0x00A7D6, 0x00A7D8, + 0x00A7DA, + 0x00A7DC, 0x00A7F5 ], ranges: [ @@ -615,6 +618,7 @@ const matchSymbols = buildString({ [0x00A7AA, 0x00A7AE], [0x00A7B0, 0x00A7B4], [0x00A7C4, 0x00A7C7], + [0x00A7CB, 0x00A7CC], [0x00FF21, 0x00FF3A], [0x010400, 0x010427], [0x0104B0, 0x0104D3], @@ -623,6 +627,7 @@ const matchSymbols = buildString({ [0x01058C, 0x010592], [0x010594, 0x010595], [0x010C80, 0x010CB2], + [0x010D50, 0x010D65], [0x0118A0, 0x0118BF], [0x016E40, 0x016E5F], [0x01E900, 0x01E921] @@ -1164,7 +1169,10 @@ const nonMatchSymbols = buildString({ 0x00A7C1, 0x00A7C3, 0x00A7C8, + 0x00A7CA, 0x00A7D7, + 0x00A7D9, + 0x00A7DB, 0x01057B, 0x01058B, 0x010593 @@ -1202,7 +1210,8 @@ const nonMatchSymbols = buildString({ [0x000557, 0x00109F], [0x0010C8, 0x0010CC], [0x0010CE, 0x00139F], - [0x0013F6, 0x001C8F], + [0x0013F6, 0x001C88], + [0x001C8A, 0x001C8F], [0x001CBB, 0x001CBC], [0x001CC0, 0x001DFF], [0x001E95, 0x001E9D], @@ -1242,16 +1251,17 @@ const nonMatchSymbols = buildString({ [0x00A787, 0x00A78A], [0x00A78E, 0x00A78F], [0x00A793, 0x00A795], - [0x00A7CA, 0x00A7CF], + [0x00A7CD, 0x00A7CF], [0x00A7D1, 0x00A7D5], - [0x00A7D9, 0x00A7F4], + [0x00A7DD, 0x00A7F4], [0x00A7F6, 0x00DBFF], [0x00E000, 0x00FF20], [0x00FF3B, 0x0103FF], [0x010428, 0x0104AF], [0x0104D4, 0x01056F], [0x010596, 0x010C7F], - [0x010CB3, 0x01189F], + [0x010CB3, 0x010D4F], + [0x010D66, 0x01189F], [0x0118C0, 0x016E3F], [0x016E60, 0x01E8FF], [0x01E922, 0x10FFFF] diff --git a/test/built-ins/RegExp/property-escapes/generated/Changes_When_NFKC_Casefolded.js b/test/built-ins/RegExp/property-escapes/generated/Changes_When_NFKC_Casefolded.js index 83ba4637343..60ec78d5b39 100644 --- a/test/built-ins/RegExp/property-escapes/generated/Changes_When_NFKC_Casefolded.js +++ b/test/built-ins/RegExp/property-escapes/generated/Changes_When_NFKC_Casefolded.js @@ -7,7 +7,7 @@ description: > Unicode property escapes for `Changes_When_NFKC_Casefolded` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.1.0 + Unicode v16.0.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] @@ -602,6 +602,8 @@ const matchSymbols = buildString({ 0x00A7D0, 0x00A7D6, 0x00A7D8, + 0x00A7DA, + 0x00A7DC, 0x00AB69, 0x00FA10, 0x00FA12, @@ -690,7 +692,7 @@ const matchSymbols = buildString({ [0x0013F8, 0x0013FD], [0x0017B4, 0x0017B5], [0x00180B, 0x00180F], - [0x001C80, 0x001C88], + [0x001C80, 0x001C89], [0x001C90, 0x001CBA], [0x001CBD, 0x001CBF], [0x001D2C, 0x001D2E], @@ -757,6 +759,7 @@ const matchSymbols = buildString({ [0x00A7AA, 0x00A7AE], [0x00A7B0, 0x00A7B4], [0x00A7C4, 0x00A7C7], + [0x00A7CB, 0x00A7CC], [0x00A7F2, 0x00A7F5], [0x00A7F8, 0x00A7F9], [0x00AB5C, 0x00AB5F], @@ -802,9 +805,11 @@ const matchSymbols = buildString({ [0x010787, 0x0107B0], [0x0107B2, 0x0107BA], [0x010C80, 0x010CB2], + [0x010D50, 0x010D65], [0x0118A0, 0x0118BF], [0x016E40, 0x016E5F], [0x01BCA0, 0x01BCA3], + [0x01CCD6, 0x01CCF9], [0x01D15E, 0x01D164], [0x01D173, 0x01D17A], [0x01D1BB, 0x01D1C0], @@ -1434,7 +1439,10 @@ const nonMatchSymbols = buildString({ 0x00A7C1, 0x00A7C3, 0x00A7C8, + 0x00A7CA, 0x00A7D7, + 0x00A7D9, + 0x00A7DB, 0x00FA11, 0x00FA1F, 0x00FA21, @@ -1568,7 +1576,7 @@ const nonMatchSymbols = buildString({ [0x0013FE, 0x0017B3], [0x0017B6, 0x00180A], [0x001810, 0x001C7F], - [0x001C89, 0x001C8F], + [0x001C8A, 0x001C8F], [0x001CBB, 0x001CBC], [0x001CC0, 0x001D2B], [0x001D6B, 0x001D77], @@ -1644,9 +1652,9 @@ const nonMatchSymbols = buildString({ [0x00A787, 0x00A78A], [0x00A78E, 0x00A78F], [0x00A793, 0x00A795], - [0x00A7CA, 0x00A7CF], + [0x00A7CD, 0x00A7CF], [0x00A7D1, 0x00A7D5], - [0x00A7D9, 0x00A7F1], + [0x00A7DD, 0x00A7F1], [0x00A7F6, 0x00A7F7], [0x00A7FA, 0x00AB5B], [0x00AB60, 0x00AB68], @@ -1680,10 +1688,12 @@ const nonMatchSymbols = buildString({ [0x0104D4, 0x01056F], [0x010596, 0x010780], [0x0107BB, 0x010C7F], - [0x010CB3, 0x01189F], + [0x010CB3, 0x010D4F], + [0x010D66, 0x01189F], [0x0118C0, 0x016E3F], [0x016E60, 0x01BC9F], - [0x01BCA4, 0x01D15D], + [0x01BCA4, 0x01CCD5], + [0x01CCFA, 0x01D15D], [0x01D165, 0x01D172], [0x01D17B, 0x01D1BA], [0x01D1C1, 0x01D3FF], diff --git a/test/built-ins/RegExp/property-escapes/generated/Changes_When_Titlecased.js b/test/built-ins/RegExp/property-escapes/generated/Changes_When_Titlecased.js index 0157e775d83..1ef53756dfb 100644 --- a/test/built-ins/RegExp/property-escapes/generated/Changes_When_Titlecased.js +++ b/test/built-ins/RegExp/property-escapes/generated/Changes_When_Titlecased.js @@ -7,7 +7,7 @@ description: > Unicode property escapes for `Changes_When_Titlecased` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.1.0 + Unicode v16.0.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] @@ -149,7 +149,6 @@ const matchSymbols = buildString({ 0x00024B, 0x00024D, 0x000259, - 0x000263, 0x00026F, 0x000275, 0x00027D, @@ -272,6 +271,7 @@ const matchSymbols = buildString({ 0x00052B, 0x00052D, 0x00052F, + 0x001C8A, 0x001D79, 0x001D7D, 0x001D8E, @@ -564,9 +564,11 @@ const matchSymbols = buildString({ 0x00A7C3, 0x00A7C8, 0x00A7CA, + 0x00A7CD, 0x00A7D1, 0x00A7D7, 0x00A7D9, + 0x00A7DB, 0x00A7F6, 0x00AB53 ], @@ -576,7 +578,7 @@ const matchSymbols = buildString({ [0x0000F8, 0x0000FF], [0x000148, 0x000149], [0x00017E, 0x000180], - [0x000199, 0x00019A], + [0x000199, 0x00019B], [0x0001C6, 0x0001C7], [0x0001C9, 0x0001CA], [0x0001DC, 0x0001DD], @@ -586,7 +588,7 @@ const matchSymbols = buildString({ [0x000256, 0x000257], [0x00025B, 0x00025C], [0x000260, 0x000261], - [0x000265, 0x000266], + [0x000263, 0x000266], [0x000268, 0x00026C], [0x000271, 0x000272], [0x000282, 0x000283], @@ -640,6 +642,7 @@ const matchSymbols = buildString({ [0x0105B3, 0x0105B9], [0x0105BB, 0x0105BC], [0x010CC0, 0x010CF2], + [0x010D70, 0x010D85], [0x0118C0, 0x0118DF], [0x016E60, 0x016E7F], [0x01E922, 0x01E943] @@ -782,7 +785,6 @@ const nonMatchSymbols = buildString({ 0x000258, 0x00025A, 0x000262, - 0x000264, 0x000267, 0x000270, 0x000281, @@ -898,6 +900,7 @@ const nonMatchSymbols = buildString({ 0x00052A, 0x00052C, 0x00052E, + 0x001C89, 0x001E02, 0x001E04, 0x001E06, @@ -1172,6 +1175,7 @@ const nonMatchSymbols = buildString({ 0x00A7C2, 0x00A7C9, 0x00A7D8, + 0x00A7DA, 0x0105A2, 0x0105B2, 0x0105BA @@ -1189,7 +1193,7 @@ const nonMatchSymbols = buildString({ [0x00018D, 0x000191], [0x000193, 0x000194], [0x000196, 0x000198], - [0x00019B, 0x00019D], + [0x00019C, 0x00019D], [0x00019F, 0x0001A0], [0x0001A6, 0x0001A7], [0x0001A9, 0x0001AC], @@ -1226,7 +1230,7 @@ const nonMatchSymbols = buildString({ [0x000530, 0x000560], [0x000588, 0x0013F7], [0x0013FE, 0x001C7F], - [0x001C89, 0x001D78], + [0x001C8B, 0x001D78], [0x001D7A, 0x001D7C], [0x001D7E, 0x001D8D], [0x001D8F, 0x001E00], @@ -1272,9 +1276,10 @@ const nonMatchSymbols = buildString({ [0x00A795, 0x00A796], [0x00A7AA, 0x00A7B4], [0x00A7C4, 0x00A7C7], - [0x00A7CB, 0x00A7D0], + [0x00A7CB, 0x00A7CC], + [0x00A7CE, 0x00A7D0], [0x00A7D2, 0x00A7D6], - [0x00A7DA, 0x00A7F5], + [0x00A7DC, 0x00A7F5], [0x00A7F7, 0x00AB52], [0x00AB54, 0x00AB6F], [0x00ABC0, 0x00DBFF], @@ -1285,7 +1290,8 @@ const nonMatchSymbols = buildString({ [0x010450, 0x0104D7], [0x0104FC, 0x010596], [0x0105BD, 0x010CBF], - [0x010CF3, 0x0118BF], + [0x010CF3, 0x010D6F], + [0x010D86, 0x0118BF], [0x0118E0, 0x016E5F], [0x016E80, 0x01E921], [0x01E944, 0x10FFFF] diff --git a/test/built-ins/RegExp/property-escapes/generated/Changes_When_Uppercased.js b/test/built-ins/RegExp/property-escapes/generated/Changes_When_Uppercased.js index 7a25e896068..8cee757e01d 100644 --- a/test/built-ins/RegExp/property-escapes/generated/Changes_When_Uppercased.js +++ b/test/built-ins/RegExp/property-escapes/generated/Changes_When_Uppercased.js @@ -7,7 +7,7 @@ description: > Unicode property escapes for `Changes_When_Uppercased` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.1.0 + Unicode v16.0.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] @@ -146,7 +146,6 @@ const matchSymbols = buildString({ 0x00024B, 0x00024D, 0x000259, - 0x000263, 0x00026F, 0x000275, 0x00027D, @@ -269,6 +268,7 @@ const matchSymbols = buildString({ 0x00052B, 0x00052D, 0x00052F, + 0x001C8A, 0x001D79, 0x001D7D, 0x001D8E, @@ -564,9 +564,11 @@ const matchSymbols = buildString({ 0x00A7C3, 0x00A7C8, 0x00A7CA, + 0x00A7CD, 0x00A7D1, 0x00A7D7, 0x00A7D9, + 0x00A7DB, 0x00A7F6, 0x00AB53 ], @@ -576,7 +578,7 @@ const matchSymbols = buildString({ [0x0000F8, 0x0000FF], [0x000148, 0x000149], [0x00017E, 0x000180], - [0x000199, 0x00019A], + [0x000199, 0x00019B], [0x0001C5, 0x0001C6], [0x0001C8, 0x0001C9], [0x0001CB, 0x0001CC], @@ -588,7 +590,7 @@ const matchSymbols = buildString({ [0x000256, 0x000257], [0x00025B, 0x00025C], [0x000260, 0x000261], - [0x000265, 0x000266], + [0x000263, 0x000266], [0x000268, 0x00026C], [0x000271, 0x000272], [0x000282, 0x000283], @@ -641,6 +643,7 @@ const matchSymbols = buildString({ [0x0105B3, 0x0105B9], [0x0105BB, 0x0105BC], [0x010CC0, 0x010CF2], + [0x010D70, 0x010D85], [0x0118C0, 0x0118DF], [0x016E60, 0x016E7F], [0x01E922, 0x01E943] @@ -782,7 +785,6 @@ const nonMatchSymbols = buildString({ 0x000258, 0x00025A, 0x000262, - 0x000264, 0x000267, 0x000270, 0x000281, @@ -898,6 +900,7 @@ const nonMatchSymbols = buildString({ 0x00052A, 0x00052C, 0x00052E, + 0x001C89, 0x001E02, 0x001E04, 0x001E06, @@ -1173,6 +1176,7 @@ const nonMatchSymbols = buildString({ 0x00A7C2, 0x00A7C9, 0x00A7D8, + 0x00A7DA, 0x0105A2, 0x0105B2, 0x0105BA @@ -1190,7 +1194,7 @@ const nonMatchSymbols = buildString({ [0x00018D, 0x000191], [0x000193, 0x000194], [0x000196, 0x000198], - [0x00019B, 0x00019D], + [0x00019C, 0x00019D], [0x00019F, 0x0001A0], [0x0001A6, 0x0001A7], [0x0001A9, 0x0001AC], @@ -1229,7 +1233,7 @@ const nonMatchSymbols = buildString({ [0x0010FB, 0x0010FC], [0x001100, 0x0013F7], [0x0013FE, 0x001C7F], - [0x001C89, 0x001D78], + [0x001C8B, 0x001D78], [0x001D7A, 0x001D7C], [0x001D7E, 0x001D8D], [0x001D8F, 0x001E00], @@ -1274,9 +1278,10 @@ const nonMatchSymbols = buildString({ [0x00A795, 0x00A796], [0x00A7AA, 0x00A7B4], [0x00A7C4, 0x00A7C7], - [0x00A7CB, 0x00A7D0], + [0x00A7CB, 0x00A7CC], + [0x00A7CE, 0x00A7D0], [0x00A7D2, 0x00A7D6], - [0x00A7DA, 0x00A7F5], + [0x00A7DC, 0x00A7F5], [0x00A7F7, 0x00AB52], [0x00AB54, 0x00AB6F], [0x00ABC0, 0x00DBFF], @@ -1287,7 +1292,8 @@ const nonMatchSymbols = buildString({ [0x010450, 0x0104D7], [0x0104FC, 0x010596], [0x0105BD, 0x010CBF], - [0x010CF3, 0x0118BF], + [0x010CF3, 0x010D6F], + [0x010D86, 0x0118BF], [0x0118E0, 0x016E5F], [0x016E80, 0x01E921], [0x01E944, 0x10FFFF] diff --git a/test/built-ins/RegExp/property-escapes/generated/Dash.js b/test/built-ins/RegExp/property-escapes/generated/Dash.js index c1f77f4d1c8..a7d453d1863 100644 --- a/test/built-ins/RegExp/property-escapes/generated/Dash.js +++ b/test/built-ins/RegExp/property-escapes/generated/Dash.js @@ -7,7 +7,7 @@ description: > Unicode property escapes for `Dash` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.1.0 + Unicode v16.0.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] @@ -34,6 +34,7 @@ const matchSymbols = buildString({ 0x00FE58, 0x00FE63, 0x00FF0D, + 0x010D6E, 0x010EAD ], ranges: [ @@ -75,7 +76,8 @@ const nonMatchSymbols = buildString({ [0x00FE33, 0x00FE57], [0x00FE59, 0x00FE62], [0x00FE64, 0x00FF0C], - [0x00FF0E, 0x010EAC], + [0x00FF0E, 0x010D6D], + [0x010D6F, 0x010EAC], [0x010EAE, 0x10FFFF] ] }); diff --git a/test/built-ins/RegExp/property-escapes/generated/Default_Ignorable_Code_Point.js b/test/built-ins/RegExp/property-escapes/generated/Default_Ignorable_Code_Point.js index 710550084a1..011b39db1ae 100644 --- a/test/built-ins/RegExp/property-escapes/generated/Default_Ignorable_Code_Point.js +++ b/test/built-ins/RegExp/property-escapes/generated/Default_Ignorable_Code_Point.js @@ -7,7 +7,7 @@ description: > Unicode property escapes for `Default_Ignorable_Code_Point` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.1.0 + Unicode v16.0.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/property-escapes/generated/Deprecated.js b/test/built-ins/RegExp/property-escapes/generated/Deprecated.js index 951b52c24de..beb2c5574a9 100644 --- a/test/built-ins/RegExp/property-escapes/generated/Deprecated.js +++ b/test/built-ins/RegExp/property-escapes/generated/Deprecated.js @@ -7,7 +7,7 @@ description: > Unicode property escapes for `Deprecated` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.1.0 + Unicode v16.0.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/property-escapes/generated/Diacritic.js b/test/built-ins/RegExp/property-escapes/generated/Diacritic.js index fe2190e375b..7875a746328 100644 --- a/test/built-ins/RegExp/property-escapes/generated/Diacritic.js +++ b/test/built-ins/RegExp/property-escapes/generated/Diacritic.js @@ -7,7 +7,7 @@ description: > Unicode property escapes for `Diacritic` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.1.0 + Unicode v16.0.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] @@ -43,6 +43,7 @@ const matchSymbols = buildString({ 0x000CCD, 0x000D4D, 0x000DCA, + 0x000E3A, 0x000E4E, 0x000EBA, 0x000F35, @@ -51,10 +52,13 @@ const matchSymbols = buildString({ 0x000FC6, 0x001037, 0x00108F, + 0x001734, 0x0017DD, + 0x001A60, 0x001A7F, 0x001B34, 0x001B44, + 0x001BE6, 0x001CED, 0x001CF4, 0x001FBD, @@ -62,6 +66,8 @@ const matchSymbols = buildString({ 0x0030FC, 0x00A66F, 0x00A67F, + 0x00A806, + 0x00A82C, 0x00A8C4, 0x00A953, 0x00A9B3, @@ -74,11 +80,12 @@ const matchSymbols = buildString({ 0x00FF70, 0x00FFE3, 0x0102E0, + 0x010A3F, + 0x010D4E, 0x011046, 0x011070, 0x011173, 0x0111C0, - 0x01133C, 0x01134D, 0x011442, 0x011446, @@ -92,6 +99,8 @@ const matchSymbols = buildString({ 0x011C3F, 0x011D42, 0x011D97, + 0x011F5A, + 0x01612F, 0x01E2AE ], ranges: [ @@ -140,6 +149,7 @@ const matchSymbols = buildString({ [0x001AC1, 0x001ACB], [0x001B6B, 0x001B73], [0x001BAA, 0x001BAB], + [0x001BF2, 0x001BF3], [0x001C36, 0x001C37], [0x001C78, 0x001C7D], [0x001CD0, 0x001CE8], @@ -173,8 +183,10 @@ const matchSymbols = buildString({ [0x010780, 0x010785], [0x010787, 0x0107B0], [0x0107B2, 0x0107BA], + [0x010A38, 0x010A3A], [0x010AE5, 0x010AE6], [0x010D22, 0x010D27], + [0x010D69, 0x010D6D], [0x010EFD, 0x010EFF], [0x010F46, 0x010F50], [0x010F82, 0x010F85], @@ -183,17 +195,23 @@ const matchSymbols = buildString({ [0x0111CA, 0x0111CC], [0x011235, 0x011236], [0x0112E9, 0x0112EA], + [0x01133B, 0x01133C], [0x011366, 0x01136C], [0x011370, 0x011374], + [0x0113CE, 0x0113D0], + [0x0113D2, 0x0113D3], + [0x0113E1, 0x0113E2], [0x0114C2, 0x0114C3], [0x0115BF, 0x0115C0], [0x0116B6, 0x0116B7], [0x011839, 0x01183A], [0x01193D, 0x01193E], [0x011D44, 0x011D45], + [0x011F41, 0x011F42], [0x013447, 0x013455], [0x016AF0, 0x016AF4], [0x016B30, 0x016B36], + [0x016D6B, 0x016D6C], [0x016F8F, 0x016F9F], [0x016FF0, 0x016FF1], [0x01AFF0, 0x01AFF3], @@ -209,6 +227,7 @@ const matchSymbols = buildString({ [0x01E030, 0x01E06D], [0x01E130, 0x01E136], [0x01E2EC, 0x01E2EF], + [0x01E5EE, 0x01E5EF], [0x01E8D0, 0x01E8D6], [0x01E944, 0x01E946], [0x01E948, 0x01E94A] @@ -244,6 +263,7 @@ const nonMatchSymbols = buildString({ 0x00FF3F, 0x010786, 0x0107B1, + 0x0113D1, 0x011D43, 0x01AFF4, 0x01AFFC, @@ -298,7 +318,8 @@ const nonMatchSymbols = buildString({ [0x000CCE, 0x000D3A], [0x000D3D, 0x000D4C], [0x000D4E, 0x000DC9], - [0x000DCB, 0x000E46], + [0x000DCB, 0x000E39], + [0x000E3B, 0x000E46], [0x000E4F, 0x000EB9], [0x000EBB, 0x000EC7], [0x000ECD, 0x000F17], @@ -313,10 +334,12 @@ const nonMatchSymbols = buildString({ [0x001090, 0x001099], [0x00109C, 0x00135C], [0x001360, 0x001713], - [0x001716, 0x0017C8], + [0x001716, 0x001733], + [0x001735, 0x0017C8], [0x0017D4, 0x0017DC], [0x0017DE, 0x001938], - [0x00193C, 0x001A74], + [0x00193C, 0x001A5F], + [0x001A61, 0x001A74], [0x001A7D, 0x001A7E], [0x001A80, 0x001AAF], [0x001ABF, 0x001AC0], @@ -324,7 +347,9 @@ const nonMatchSymbols = buildString({ [0x001B35, 0x001B43], [0x001B45, 0x001B6A], [0x001B74, 0x001BA9], - [0x001BAC, 0x001C35], + [0x001BAC, 0x001BE5], + [0x001BE7, 0x001BF1], + [0x001BF4, 0x001C35], [0x001C38, 0x001C77], [0x001C7E, 0x001CCF], [0x001CE9, 0x001CEC], @@ -350,7 +375,9 @@ const nonMatchSymbols = buildString({ [0x00A6F2, 0x00A6FF], [0x00A722, 0x00A787], [0x00A78B, 0x00A7F7], - [0x00A7FA, 0x00A8C3], + [0x00A7FA, 0x00A805], + [0x00A807, 0x00A82B], + [0x00A82D, 0x00A8C3], [0x00A8C5, 0x00A8DF], [0x00A8F2, 0x00A92A], [0x00A92F, 0x00A952], @@ -372,9 +399,13 @@ const nonMatchSymbols = buildString({ [0x00FFA0, 0x00FFE2], [0x00FFE4, 0x0102DF], [0x0102E1, 0x01077F], - [0x0107BB, 0x010AE4], + [0x0107BB, 0x010A37], + [0x010A3B, 0x010A3E], + [0x010A40, 0x010AE4], [0x010AE7, 0x010D21], - [0x010D28, 0x010EFC], + [0x010D28, 0x010D4D], + [0x010D4F, 0x010D68], + [0x010D6E, 0x010EFC], [0x010F00, 0x010F45], [0x010F51, 0x010F81], [0x010F86, 0x011045], @@ -386,11 +417,13 @@ const nonMatchSymbols = buildString({ [0x0111C1, 0x0111C9], [0x0111CD, 0x011234], [0x011237, 0x0112E8], - [0x0112EB, 0x01133B], + [0x0112EB, 0x01133A], [0x01133D, 0x01134C], [0x01134E, 0x011365], [0x01136D, 0x01136F], - [0x011375, 0x011441], + [0x011375, 0x0113CD], + [0x0113D4, 0x0113E0], + [0x0113E3, 0x011441], [0x011443, 0x011445], [0x011447, 0x0114C1], [0x0114C4, 0x0115BE], @@ -407,10 +440,14 @@ const nonMatchSymbols = buildString({ [0x011A9A, 0x011C3E], [0x011C40, 0x011D41], [0x011D46, 0x011D96], - [0x011D98, 0x013446], - [0x013456, 0x016AEF], + [0x011D98, 0x011F40], + [0x011F43, 0x011F59], + [0x011F5B, 0x013446], + [0x013456, 0x01612E], + [0x016130, 0x016AEF], [0x016AF5, 0x016B2F], - [0x016B37, 0x016F8E], + [0x016B37, 0x016D6A], + [0x016D6D, 0x016F8E], [0x016FA0, 0x016FEF], [0x016FF2, 0x01AFEF], [0x01AFFF, 0x01CEFF], @@ -424,7 +461,8 @@ const nonMatchSymbols = buildString({ [0x01E06E, 0x01E12F], [0x01E137, 0x01E2AD], [0x01E2AF, 0x01E2EB], - [0x01E2F0, 0x01E8CF], + [0x01E2F0, 0x01E5ED], + [0x01E5F0, 0x01E8CF], [0x01E8D7, 0x01E943], [0x01E94B, 0x10FFFF] ] diff --git a/test/built-ins/RegExp/property-escapes/generated/Emoji.js b/test/built-ins/RegExp/property-escapes/generated/Emoji.js index 1bd2fd6c935..01587acc03e 100644 --- a/test/built-ins/RegExp/property-escapes/generated/Emoji.js +++ b/test/built-ins/RegExp/property-escapes/generated/Emoji.js @@ -7,7 +7,7 @@ description: > Unicode property escapes for `Emoji` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.1.0 + Unicode v16.0.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] @@ -162,11 +162,10 @@ const matchSymbols = buildString({ [0x01F93C, 0x01F945], [0x01F947, 0x01F9FF], [0x01FA70, 0x01FA7C], - [0x01FA80, 0x01FA88], - [0x01FA90, 0x01FABD], - [0x01FABF, 0x01FAC5], - [0x01FACE, 0x01FADB], - [0x01FAE0, 0x01FAE8], + [0x01FA80, 0x01FA89], + [0x01FA8F, 0x01FAC6], + [0x01FACE, 0x01FADC], + [0x01FADF, 0x01FAE9], [0x01FAF0, 0x01FAF8] ] }); @@ -202,8 +201,7 @@ const nonMatchSymbols = buildString({ 0x01F5E2, 0x01F6EA, 0x01F93B, - 0x01F946, - 0x01FABE + 0x01F946 ], ranges: [ [0x00DC00, 0x00DFFF], @@ -329,10 +327,10 @@ const nonMatchSymbols = buildString({ [0x01F7F1, 0x01F90B], [0x01FA00, 0x01FA6F], [0x01FA7D, 0x01FA7F], - [0x01FA89, 0x01FA8F], - [0x01FAC6, 0x01FACD], - [0x01FADC, 0x01FADF], - [0x01FAE9, 0x01FAEF], + [0x01FA8A, 0x01FA8E], + [0x01FAC7, 0x01FACD], + [0x01FADD, 0x01FADE], + [0x01FAEA, 0x01FAEF], [0x01FAF9, 0x10FFFF] ] }); diff --git a/test/built-ins/RegExp/property-escapes/generated/Emoji_Component.js b/test/built-ins/RegExp/property-escapes/generated/Emoji_Component.js index 24da213b43e..d7ef0b112ce 100644 --- a/test/built-ins/RegExp/property-escapes/generated/Emoji_Component.js +++ b/test/built-ins/RegExp/property-escapes/generated/Emoji_Component.js @@ -7,7 +7,7 @@ description: > Unicode property escapes for `Emoji_Component` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.1.0 + Unicode v16.0.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/property-escapes/generated/Emoji_Modifier.js b/test/built-ins/RegExp/property-escapes/generated/Emoji_Modifier.js index 26f011484f1..61060b7f4f8 100644 --- a/test/built-ins/RegExp/property-escapes/generated/Emoji_Modifier.js +++ b/test/built-ins/RegExp/property-escapes/generated/Emoji_Modifier.js @@ -7,7 +7,7 @@ description: > Unicode property escapes for `Emoji_Modifier` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.1.0 + Unicode v16.0.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/property-escapes/generated/Emoji_Modifier_Base.js b/test/built-ins/RegExp/property-escapes/generated/Emoji_Modifier_Base.js index 8545a605694..f26bf03a613 100644 --- a/test/built-ins/RegExp/property-escapes/generated/Emoji_Modifier_Base.js +++ b/test/built-ins/RegExp/property-escapes/generated/Emoji_Modifier_Base.js @@ -7,7 +7,7 @@ description: > Unicode property escapes for `Emoji_Modifier_Base` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.1.0 + Unicode v16.0.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/property-escapes/generated/Emoji_Presentation.js b/test/built-ins/RegExp/property-escapes/generated/Emoji_Presentation.js index 1e1ec1cd42e..2f2627e28bd 100644 --- a/test/built-ins/RegExp/property-escapes/generated/Emoji_Presentation.js +++ b/test/built-ins/RegExp/property-escapes/generated/Emoji_Presentation.js @@ -7,7 +7,7 @@ description: > Unicode property escapes for `Emoji_Presentation` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.1.0 + Unicode v16.0.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] @@ -92,11 +92,10 @@ const matchSymbols = buildString({ [0x01F93C, 0x01F945], [0x01F947, 0x01F9FF], [0x01FA70, 0x01FA7C], - [0x01FA80, 0x01FA88], - [0x01FA90, 0x01FABD], - [0x01FABF, 0x01FAC5], - [0x01FACE, 0x01FADB], - [0x01FAE0, 0x01FAE8], + [0x01FA80, 0x01FA89], + [0x01FA8F, 0x01FAC6], + [0x01FACE, 0x01FADC], + [0x01FADF, 0x01FAE9], [0x01FAF0, 0x01FAF8] ] }); @@ -124,8 +123,7 @@ const nonMatchSymbols = buildString({ 0x01F441, 0x01F54F, 0x01F93B, - 0x01F946, - 0x01FABE + 0x01F946 ], ranges: [ [0x00DC00, 0x00DFFF], @@ -194,10 +192,10 @@ const nonMatchSymbols = buildString({ [0x01F7F1, 0x01F90B], [0x01FA00, 0x01FA6F], [0x01FA7D, 0x01FA7F], - [0x01FA89, 0x01FA8F], - [0x01FAC6, 0x01FACD], - [0x01FADC, 0x01FADF], - [0x01FAE9, 0x01FAEF], + [0x01FA8A, 0x01FA8E], + [0x01FAC7, 0x01FACD], + [0x01FADD, 0x01FADE], + [0x01FAEA, 0x01FAEF], [0x01FAF9, 0x10FFFF] ] }); diff --git a/test/built-ins/RegExp/property-escapes/generated/Extended_Pictographic.js b/test/built-ins/RegExp/property-escapes/generated/Extended_Pictographic.js index 36801f2f744..5be44798b09 100644 --- a/test/built-ins/RegExp/property-escapes/generated/Extended_Pictographic.js +++ b/test/built-ins/RegExp/property-escapes/generated/Extended_Pictographic.js @@ -7,7 +7,7 @@ description: > Unicode property escapes for `Extended_Pictographic` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.1.0 + Unicode v16.0.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/property-escapes/generated/Extender.js b/test/built-ins/RegExp/property-escapes/generated/Extender.js index 45b1e5ca420..949f6c552e8 100644 --- a/test/built-ins/RegExp/property-escapes/generated/Extender.js +++ b/test/built-ins/RegExp/property-escapes/generated/Extender.js @@ -7,7 +7,7 @@ description: > Unicode property escapes for `Extender` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.1.0 + Unicode v16.0.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] @@ -18,6 +18,8 @@ const matchSymbols = buildString({ 0x0000B7, 0x000640, 0x0007FA, + 0x000A71, + 0x000AFB, 0x000B55, 0x000E46, 0x000EC6, @@ -34,9 +36,14 @@ const matchSymbols = buildString({ 0x00AA70, 0x00AADD, 0x00FF70, + 0x010D4E, + 0x010D6A, + 0x010D6F, + 0x011237, 0x01135D, 0x011A98, - 0x016FE3 + 0x016FE3, + 0x01E5EF ], ranges: [ [0x0002D0, 0x0002D1], @@ -45,6 +52,7 @@ const matchSymbols = buildString({ [0x0030FC, 0x0030FE], [0x00AAF3, 0x00AAF4], [0x010781, 0x010782], + [0x0113D2, 0x0113D3], [0x0115C6, 0x0115C8], [0x016B42, 0x016B43], [0x016FE0, 0x016FE1], @@ -73,7 +81,9 @@ const nonMatchSymbols = buildString({ [0x0000B8, 0x0002CF], [0x0002D2, 0x00063F], [0x000641, 0x0007F9], - [0x0007FB, 0x000B54], + [0x0007FB, 0x000A70], + [0x000A72, 0x000AFA], + [0x000AFC, 0x000B54], [0x000B56, 0x000E45], [0x000E47, 0x000EC5], [0x000EC7, 0x001809], @@ -95,13 +105,19 @@ const nonMatchSymbols = buildString({ [0x00AAF5, 0x00DBFF], [0x00E000, 0x00FF6F], [0x00FF71, 0x010780], - [0x010783, 0x01135C], - [0x01135E, 0x0115C5], + [0x010783, 0x010D4D], + [0x010D4F, 0x010D69], + [0x010D6B, 0x010D6E], + [0x010D70, 0x011236], + [0x011238, 0x01135C], + [0x01135E, 0x0113D1], + [0x0113D4, 0x0115C5], [0x0115C9, 0x011A97], [0x011A99, 0x016B41], [0x016B44, 0x016FDF], [0x016FE4, 0x01E13B], - [0x01E13E, 0x01E943], + [0x01E13E, 0x01E5EE], + [0x01E5F0, 0x01E943], [0x01E947, 0x10FFFF] ] }); diff --git a/test/built-ins/RegExp/property-escapes/generated/General_Category_-_Cased_Letter.js b/test/built-ins/RegExp/property-escapes/generated/General_Category_-_Cased_Letter.js index 090ec543dac..51c08f191b1 100644 --- a/test/built-ins/RegExp/property-escapes/generated/General_Category_-_Cased_Letter.js +++ b/test/built-ins/RegExp/property-escapes/generated/General_Category_-_Cased_Letter.js @@ -7,7 +7,7 @@ description: > Unicode property escapes for `General_Category=Cased_Letter` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.1.0 + Unicode v16.0.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] @@ -65,7 +65,7 @@ const matchSymbols = buildString({ [0x0010FD, 0x0010FF], [0x0013A0, 0x0013F5], [0x0013F8, 0x0013FD], - [0x001C80, 0x001C88], + [0x001C80, 0x001C8A], [0x001C90, 0x001CBA], [0x001CBD, 0x001CBF], [0x001D00, 0x001D2B], @@ -103,9 +103,9 @@ const matchSymbols = buildString({ [0x00A722, 0x00A76F], [0x00A771, 0x00A787], [0x00A78B, 0x00A78E], - [0x00A790, 0x00A7CA], + [0x00A790, 0x00A7CD], [0x00A7D0, 0x00A7D1], - [0x00A7D5, 0x00A7D9], + [0x00A7D5, 0x00A7DC], [0x00A7F5, 0x00A7F6], [0x00AB30, 0x00AB5A], [0x00AB60, 0x00AB68], @@ -127,6 +127,8 @@ const matchSymbols = buildString({ [0x0105BB, 0x0105BC], [0x010C80, 0x010CB2], [0x010CC0, 0x010CF2], + [0x010D50, 0x010D65], + [0x010D70, 0x010D85], [0x0118A0, 0x0118DF], [0x016E40, 0x016E7F], [0x01D400, 0x01D454], @@ -278,7 +280,7 @@ const nonMatchSymbols = buildString({ [0x001100, 0x00139F], [0x0013F6, 0x0013F7], [0x0013FE, 0x001C7F], - [0x001C89, 0x001C8F], + [0x001C8B, 0x001C8F], [0x001CBB, 0x001CBC], [0x001CC0, 0x001CFF], [0x001D2C, 0x001D6A], @@ -313,8 +315,8 @@ const nonMatchSymbols = buildString({ [0x00A66E, 0x00A67F], [0x00A69C, 0x00A721], [0x00A788, 0x00A78A], - [0x00A7CB, 0x00A7CF], - [0x00A7DA, 0x00A7F4], + [0x00A7CE, 0x00A7CF], + [0x00A7DD, 0x00A7F4], [0x00A7F7, 0x00A7F9], [0x00A7FB, 0x00AB2F], [0x00AB5B, 0x00AB5F], @@ -330,7 +332,9 @@ const nonMatchSymbols = buildString({ [0x0104FC, 0x01056F], [0x0105BD, 0x010C7F], [0x010CB3, 0x010CBF], - [0x010CF3, 0x01189F], + [0x010CF3, 0x010D4F], + [0x010D66, 0x010D6F], + [0x010D86, 0x01189F], [0x0118E0, 0x016E3F], [0x016E80, 0x01D3FF], [0x01D4A0, 0x01D4A1], diff --git a/test/built-ins/RegExp/property-escapes/generated/General_Category_-_Close_Punctuation.js b/test/built-ins/RegExp/property-escapes/generated/General_Category_-_Close_Punctuation.js index ab2a9a4536a..91627e9eac7 100644 --- a/test/built-ins/RegExp/property-escapes/generated/General_Category_-_Close_Punctuation.js +++ b/test/built-ins/RegExp/property-escapes/generated/General_Category_-_Close_Punctuation.js @@ -7,7 +7,7 @@ description: > Unicode property escapes for `General_Category=Close_Punctuation` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.1.0 + Unicode v16.0.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/property-escapes/generated/General_Category_-_Connector_Punctuation.js b/test/built-ins/RegExp/property-escapes/generated/General_Category_-_Connector_Punctuation.js index 8e8e073ad1a..ca82d3d7437 100644 --- a/test/built-ins/RegExp/property-escapes/generated/General_Category_-_Connector_Punctuation.js +++ b/test/built-ins/RegExp/property-escapes/generated/General_Category_-_Connector_Punctuation.js @@ -7,7 +7,7 @@ description: > Unicode property escapes for `General_Category=Connector_Punctuation` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.1.0 + Unicode v16.0.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/property-escapes/generated/General_Category_-_Control.js b/test/built-ins/RegExp/property-escapes/generated/General_Category_-_Control.js index 15edfc25e3e..c6616f08945 100644 --- a/test/built-ins/RegExp/property-escapes/generated/General_Category_-_Control.js +++ b/test/built-ins/RegExp/property-escapes/generated/General_Category_-_Control.js @@ -7,7 +7,7 @@ description: > Unicode property escapes for `General_Category=Control` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.1.0 + Unicode v16.0.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/property-escapes/generated/General_Category_-_Currency_Symbol.js b/test/built-ins/RegExp/property-escapes/generated/General_Category_-_Currency_Symbol.js index ee0aacab165..3b3bd68f50e 100644 --- a/test/built-ins/RegExp/property-escapes/generated/General_Category_-_Currency_Symbol.js +++ b/test/built-ins/RegExp/property-escapes/generated/General_Category_-_Currency_Symbol.js @@ -7,7 +7,7 @@ description: > Unicode property escapes for `General_Category=Currency_Symbol` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.1.0 + Unicode v16.0.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/property-escapes/generated/General_Category_-_Dash_Punctuation.js b/test/built-ins/RegExp/property-escapes/generated/General_Category_-_Dash_Punctuation.js index 250b22cb080..3d017a0ce4b 100644 --- a/test/built-ins/RegExp/property-escapes/generated/General_Category_-_Dash_Punctuation.js +++ b/test/built-ins/RegExp/property-escapes/generated/General_Category_-_Dash_Punctuation.js @@ -7,7 +7,7 @@ description: > Unicode property escapes for `General_Category=Dash_Punctuation` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.1.0 + Unicode v16.0.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] @@ -30,6 +30,7 @@ const matchSymbols = buildString({ 0x00FE58, 0x00FE63, 0x00FF0D, + 0x010D6E, 0x010EAD ], ranges: [ @@ -92,7 +93,8 @@ const nonMatchSymbols = buildString({ [0x00FE33, 0x00FE57], [0x00FE59, 0x00FE62], [0x00FE64, 0x00FF0C], - [0x00FF0E, 0x010EAC], + [0x00FF0E, 0x010D6D], + [0x010D6F, 0x010EAC], [0x010EAE, 0x10FFFF] ] }); diff --git a/test/built-ins/RegExp/property-escapes/generated/General_Category_-_Decimal_Number.js b/test/built-ins/RegExp/property-escapes/generated/General_Category_-_Decimal_Number.js index 433462e1972..a822a9dd922 100644 --- a/test/built-ins/RegExp/property-escapes/generated/General_Category_-_Decimal_Number.js +++ b/test/built-ins/RegExp/property-escapes/generated/General_Category_-_Decimal_Number.js @@ -7,7 +7,7 @@ description: > Unicode property escapes for `General_Category=Decimal_Number` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.1.0 + Unicode v16.0.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] @@ -55,6 +55,7 @@ const matchSymbols = buildString({ [0x00FF10, 0x00FF19], [0x0104A0, 0x0104A9], [0x010D30, 0x010D39], + [0x010D40, 0x010D49], [0x011066, 0x01106F], [0x0110F0, 0x0110F9], [0x011136, 0x01113F], @@ -64,20 +65,26 @@ const matchSymbols = buildString({ [0x0114D0, 0x0114D9], [0x011650, 0x011659], [0x0116C0, 0x0116C9], + [0x0116D0, 0x0116E3], [0x011730, 0x011739], [0x0118E0, 0x0118E9], [0x011950, 0x011959], + [0x011BF0, 0x011BF9], [0x011C50, 0x011C59], [0x011D50, 0x011D59], [0x011DA0, 0x011DA9], [0x011F50, 0x011F59], + [0x016130, 0x016139], [0x016A60, 0x016A69], [0x016AC0, 0x016AC9], [0x016B50, 0x016B59], + [0x016D70, 0x016D79], + [0x01CCF0, 0x01CCF9], [0x01D7CE, 0x01D7FF], [0x01E140, 0x01E149], [0x01E2F0, 0x01E2F9], [0x01E4F0, 0x01E4F9], + [0x01E5F1, 0x01E5FA], [0x01E950, 0x01E959], [0x01FBF0, 0x01FBF9] ] @@ -172,7 +179,8 @@ const nonMatchSymbols = buildString({ [0x00E000, 0x00FF0F], [0x00FF1A, 0x01049F], [0x0104AA, 0x010D2F], - [0x010D3A, 0x011065], + [0x010D3A, 0x010D3F], + [0x010D4A, 0x011065], [0x011070, 0x0110EF], [0x0110FA, 0x011135], [0x011140, 0x0111CF], @@ -181,21 +189,27 @@ const nonMatchSymbols = buildString({ [0x01145A, 0x0114CF], [0x0114DA, 0x01164F], [0x01165A, 0x0116BF], - [0x0116CA, 0x01172F], + [0x0116CA, 0x0116CF], + [0x0116E4, 0x01172F], [0x01173A, 0x0118DF], [0x0118EA, 0x01194F], - [0x01195A, 0x011C4F], + [0x01195A, 0x011BEF], + [0x011BFA, 0x011C4F], [0x011C5A, 0x011D4F], [0x011D5A, 0x011D9F], [0x011DAA, 0x011F4F], - [0x011F5A, 0x016A5F], + [0x011F5A, 0x01612F], + [0x01613A, 0x016A5F], [0x016A6A, 0x016ABF], [0x016ACA, 0x016B4F], - [0x016B5A, 0x01D7CD], + [0x016B5A, 0x016D6F], + [0x016D7A, 0x01CCEF], + [0x01CCFA, 0x01D7CD], [0x01D800, 0x01E13F], [0x01E14A, 0x01E2EF], [0x01E2FA, 0x01E4EF], - [0x01E4FA, 0x01E94F], + [0x01E4FA, 0x01E5F0], + [0x01E5FB, 0x01E94F], [0x01E95A, 0x01FBEF], [0x01FBFA, 0x10FFFF] ] diff --git a/test/built-ins/RegExp/property-escapes/generated/General_Category_-_Enclosing_Mark.js b/test/built-ins/RegExp/property-escapes/generated/General_Category_-_Enclosing_Mark.js index 1e35c4ff8ec..50cb93c8e7d 100644 --- a/test/built-ins/RegExp/property-escapes/generated/General_Category_-_Enclosing_Mark.js +++ b/test/built-ins/RegExp/property-escapes/generated/General_Category_-_Enclosing_Mark.js @@ -7,7 +7,7 @@ description: > Unicode property escapes for `General_Category=Enclosing_Mark` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.1.0 + Unicode v16.0.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/property-escapes/generated/General_Category_-_Final_Punctuation.js b/test/built-ins/RegExp/property-escapes/generated/General_Category_-_Final_Punctuation.js index a9410f8cd2d..5e70461a775 100644 --- a/test/built-ins/RegExp/property-escapes/generated/General_Category_-_Final_Punctuation.js +++ b/test/built-ins/RegExp/property-escapes/generated/General_Category_-_Final_Punctuation.js @@ -7,7 +7,7 @@ description: > Unicode property escapes for `General_Category=Final_Punctuation` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.1.0 + Unicode v16.0.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/property-escapes/generated/General_Category_-_Format.js b/test/built-ins/RegExp/property-escapes/generated/General_Category_-_Format.js index e7781fbbae5..6627e0ffc38 100644 --- a/test/built-ins/RegExp/property-escapes/generated/General_Category_-_Format.js +++ b/test/built-ins/RegExp/property-escapes/generated/General_Category_-_Format.js @@ -7,7 +7,7 @@ description: > Unicode property escapes for `General_Category=Format` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.1.0 + Unicode v16.0.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/property-escapes/generated/General_Category_-_Initial_Punctuation.js b/test/built-ins/RegExp/property-escapes/generated/General_Category_-_Initial_Punctuation.js index f966c42912f..2e2fdcbdb06 100644 --- a/test/built-ins/RegExp/property-escapes/generated/General_Category_-_Initial_Punctuation.js +++ b/test/built-ins/RegExp/property-escapes/generated/General_Category_-_Initial_Punctuation.js @@ -7,7 +7,7 @@ description: > Unicode property escapes for `General_Category=Initial_Punctuation` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.1.0 + Unicode v16.0.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/property-escapes/generated/General_Category_-_Letter.js b/test/built-ins/RegExp/property-escapes/generated/General_Category_-_Letter.js index 2339bddb773..6296fcf730b 100644 --- a/test/built-ins/RegExp/property-escapes/generated/General_Category_-_Letter.js +++ b/test/built-ins/RegExp/property-escapes/generated/General_Category_-_Letter.js @@ -7,7 +7,7 @@ description: > Unicode property escapes for `General_Category=Letter` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.1.0 + Unicode v16.0.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] @@ -110,6 +110,11 @@ const matchSymbols = buildString({ 0x011288, 0x01133D, 0x011350, + 0x01138B, + 0x01138E, + 0x0113B7, + 0x0113D1, + 0x0113D3, 0x0114C7, 0x011644, 0x0116B8, @@ -135,6 +140,7 @@ const matchSymbols = buildString({ 0x01D4BB, 0x01D546, 0x01E14E, + 0x01E5F0, 0x01E94B, 0x01EE24, 0x01EE27, @@ -324,7 +330,7 @@ const matchSymbols = buildString({ [0x001C00, 0x001C23], [0x001C4D, 0x001C4F], [0x001C5A, 0x001C7D], - [0x001C80, 0x001C88], + [0x001C80, 0x001C8A], [0x001C90, 0x001CBA], [0x001CBD, 0x001CBF], [0x001CE9, 0x001CEC], @@ -390,9 +396,9 @@ const matchSymbols = buildString({ [0x00A6A0, 0x00A6E5], [0x00A717, 0x00A71F], [0x00A722, 0x00A788], - [0x00A78B, 0x00A7CA], + [0x00A78B, 0x00A7CD], [0x00A7D0, 0x00A7D1], - [0x00A7D5, 0x00A7D9], + [0x00A7D5, 0x00A7DC], [0x00A7F2, 0x00A801], [0x00A803, 0x00A805], [0x00A807, 0x00A80A], @@ -481,6 +487,7 @@ const matchSymbols = buildString({ [0x0105A3, 0x0105B1], [0x0105B3, 0x0105B9], [0x0105BB, 0x0105BC], + [0x0105C0, 0x0105F3], [0x010600, 0x010736], [0x010740, 0x010755], [0x010760, 0x010767], @@ -514,8 +521,11 @@ const matchSymbols = buildString({ [0x010C80, 0x010CB2], [0x010CC0, 0x010CF2], [0x010D00, 0x010D23], + [0x010D4A, 0x010D65], + [0x010D6F, 0x010D85], [0x010E80, 0x010EA9], [0x010EB0, 0x010EB1], + [0x010EC2, 0x010EC4], [0x010F00, 0x010F1C], [0x010F30, 0x010F45], [0x010F70, 0x010F81], @@ -544,6 +554,8 @@ const matchSymbols = buildString({ [0x011332, 0x011333], [0x011335, 0x011339], [0x01135D, 0x011361], + [0x011380, 0x011389], + [0x011390, 0x0113B5], [0x011400, 0x011434], [0x011447, 0x01144A], [0x01145F, 0x011461], @@ -566,6 +578,7 @@ const matchSymbols = buildString({ [0x011A0B, 0x011A32], [0x011A5C, 0x011A89], [0x011AB0, 0x011AF8], + [0x011BC0, 0x011BE0], [0x011C00, 0x011C08], [0x011C0A, 0x011C2E], [0x011C72, 0x011C8F], @@ -583,7 +596,9 @@ const matchSymbols = buildString({ [0x012F90, 0x012FF0], [0x013000, 0x01342F], [0x013441, 0x013446], + [0x013460, 0x0143FA], [0x014400, 0x014646], + [0x016100, 0x01611D], [0x016800, 0x016A38], [0x016A40, 0x016A5E], [0x016A70, 0x016ABE], @@ -592,13 +607,14 @@ const matchSymbols = buildString({ [0x016B40, 0x016B43], [0x016B63, 0x016B77], [0x016B7D, 0x016B8F], + [0x016D40, 0x016D6C], [0x016E40, 0x016E7F], [0x016F00, 0x016F4A], [0x016F93, 0x016F9F], [0x016FE0, 0x016FE1], [0x017000, 0x0187F7], [0x018800, 0x018CD5], - [0x018D00, 0x018D08], + [0x018CFF, 0x018D08], [0x01AFF0, 0x01AFF3], [0x01AFF5, 0x01AFFB], [0x01AFFD, 0x01AFFE], @@ -645,6 +661,7 @@ const matchSymbols = buildString({ [0x01E290, 0x01E2AD], [0x01E2C0, 0x01E2EB], [0x01E4D0, 0x01E4EB], + [0x01E5D0, 0x01E5ED], [0x01E7E0, 0x01E7E6], [0x01E7E8, 0x01E7EB], [0x01E7ED, 0x01E7EE], @@ -860,6 +877,10 @@ const nonMatchSymbols = buildString({ 0x011329, 0x011331, 0x011334, + 0x01138A, + 0x01138F, + 0x0113B6, + 0x0113D2, 0x0114C6, 0x011914, 0x011917, @@ -1087,7 +1108,7 @@ const nonMatchSymbols = buildString({ [0x001C24, 0x001C4C], [0x001C50, 0x001C59], [0x001C7E, 0x001C7F], - [0x001C89, 0x001C8F], + [0x001C8B, 0x001C8F], [0x001CBB, 0x001CBC], [0x001CC0, 0x001CE8], [0x001CF7, 0x001CF9], @@ -1145,8 +1166,8 @@ const nonMatchSymbols = buildString({ [0x00A6E6, 0x00A716], [0x00A720, 0x00A721], [0x00A789, 0x00A78A], - [0x00A7CB, 0x00A7CF], - [0x00A7DA, 0x00A7F1], + [0x00A7CE, 0x00A7CF], + [0x00A7DD, 0x00A7F1], [0x00A823, 0x00A83F], [0x00A874, 0x00A881], [0x00A8B4, 0x00A8F1], @@ -1211,7 +1232,8 @@ const nonMatchSymbols = buildString({ [0x0104FC, 0x0104FF], [0x010528, 0x01052F], [0x010564, 0x01056F], - [0x0105BD, 0x0105FF], + [0x0105BD, 0x0105BF], + [0x0105F4, 0x0105FF], [0x010737, 0x01073F], [0x010756, 0x01075F], [0x010768, 0x01077F], @@ -1239,9 +1261,12 @@ const nonMatchSymbols = buildString({ [0x010C49, 0x010C7F], [0x010CB3, 0x010CBF], [0x010CF3, 0x010CFF], - [0x010D24, 0x010E7F], + [0x010D24, 0x010D49], + [0x010D66, 0x010D6E], + [0x010D86, 0x010E7F], [0x010EAA, 0x010EAF], - [0x010EB2, 0x010EFF], + [0x010EB2, 0x010EC1], + [0x010EC5, 0x010EFF], [0x010F1D, 0x010F26], [0x010F28, 0x010F2F], [0x010F46, 0x010F6F], @@ -1270,7 +1295,10 @@ const nonMatchSymbols = buildString({ [0x01133A, 0x01133C], [0x01133E, 0x01134F], [0x011351, 0x01135C], - [0x011362, 0x0113FF], + [0x011362, 0x01137F], + [0x01138C, 0x01138D], + [0x0113B8, 0x0113D0], + [0x0113D4, 0x0113FF], [0x011435, 0x011446], [0x01144B, 0x01145E], [0x011462, 0x01147F], @@ -1299,7 +1327,8 @@ const nonMatchSymbols = buildString({ [0x011A51, 0x011A5B], [0x011A8A, 0x011A9C], [0x011A9E, 0x011AAF], - [0x011AF9, 0x011BFF], + [0x011AF9, 0x011BBF], + [0x011BE1, 0x011BFF], [0x011C2F, 0x011C3F], [0x011C41, 0x011C71], [0x011C90, 0x011CFF], @@ -1314,8 +1343,10 @@ const nonMatchSymbols = buildString({ [0x012544, 0x012F8F], [0x012FF1, 0x012FFF], [0x013430, 0x013440], - [0x013447, 0x0143FF], - [0x014647, 0x0167FF], + [0x013447, 0x01345F], + [0x0143FB, 0x0143FF], + [0x014647, 0x0160FF], + [0x01611E, 0x0167FF], [0x016A39, 0x016A3F], [0x016A5F, 0x016A6F], [0x016ABF, 0x016ACF], @@ -1323,14 +1354,15 @@ const nonMatchSymbols = buildString({ [0x016B30, 0x016B3F], [0x016B44, 0x016B62], [0x016B78, 0x016B7C], - [0x016B90, 0x016E3F], + [0x016B90, 0x016D3F], + [0x016D6D, 0x016E3F], [0x016E80, 0x016EFF], [0x016F4B, 0x016F4F], [0x016F51, 0x016F92], [0x016FA0, 0x016FDF], [0x016FE4, 0x016FFF], [0x0187F8, 0x0187FF], - [0x018CD6, 0x018CFF], + [0x018CD6, 0x018CFE], [0x018D09, 0x01AFEF], [0x01B123, 0x01B131], [0x01B133, 0x01B14F], @@ -1357,7 +1389,9 @@ const nonMatchSymbols = buildString({ [0x01E14F, 0x01E28F], [0x01E2AE, 0x01E2BF], [0x01E2EC, 0x01E4CF], - [0x01E4EC, 0x01E7DF], + [0x01E4EC, 0x01E5CF], + [0x01E5EE, 0x01E5EF], + [0x01E5F1, 0x01E7DF], [0x01E8C5, 0x01E8FF], [0x01E944, 0x01E94A], [0x01E94C, 0x01EDFF], diff --git a/test/built-ins/RegExp/property-escapes/generated/General_Category_-_Letter_Number.js b/test/built-ins/RegExp/property-escapes/generated/General_Category_-_Letter_Number.js index d079b426dec..13057fe541f 100644 --- a/test/built-ins/RegExp/property-escapes/generated/General_Category_-_Letter_Number.js +++ b/test/built-ins/RegExp/property-escapes/generated/General_Category_-_Letter_Number.js @@ -7,7 +7,7 @@ description: > Unicode property escapes for `General_Category=Letter_Number` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.1.0 + Unicode v16.0.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/property-escapes/generated/General_Category_-_Line_Separator.js b/test/built-ins/RegExp/property-escapes/generated/General_Category_-_Line_Separator.js index 4dc25a5592a..9e4a72beb6c 100644 --- a/test/built-ins/RegExp/property-escapes/generated/General_Category_-_Line_Separator.js +++ b/test/built-ins/RegExp/property-escapes/generated/General_Category_-_Line_Separator.js @@ -7,7 +7,7 @@ description: > Unicode property escapes for `General_Category=Line_Separator` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.1.0 + Unicode v16.0.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/property-escapes/generated/General_Category_-_Lowercase_Letter.js b/test/built-ins/RegExp/property-escapes/generated/General_Category_-_Lowercase_Letter.js index 6214c660899..b3841f99571 100644 --- a/test/built-ins/RegExp/property-escapes/generated/General_Category_-_Lowercase_Letter.js +++ b/test/built-ins/RegExp/property-escapes/generated/General_Category_-_Lowercase_Letter.js @@ -7,7 +7,7 @@ description: > Unicode property escapes for `General_Category=Lowercase_Letter` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.1.0 + Unicode v16.0.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] @@ -259,6 +259,7 @@ const matchSymbols = buildString({ 0x00052B, 0x00052D, 0x00052F, + 0x001C8A, 0x001E01, 0x001E03, 0x001E05, @@ -553,11 +554,13 @@ const matchSymbols = buildString({ 0x00A7C3, 0x00A7C8, 0x00A7CA, + 0x00A7CD, 0x00A7D1, 0x00A7D3, 0x00A7D5, 0x00A7D7, 0x00A7D9, + 0x00A7DB, 0x00A7F6, 0x00A7FA, 0x01D4BB, @@ -643,6 +646,7 @@ const matchSymbols = buildString({ [0x0105B3, 0x0105B9], [0x0105BB, 0x0105BC], [0x010CC0, 0x010CF2], + [0x010D70, 0x010D85], [0x0118C0, 0x0118DF], [0x016E60, 0x016E7F], [0x01D41A, 0x01D433], @@ -943,6 +947,7 @@ const nonMatchSymbols = buildString({ 0x00052A, 0x00052C, 0x00052E, + 0x001C89, 0x001D78, 0x001E02, 0x001E04, @@ -1230,6 +1235,7 @@ const nonMatchSymbols = buildString({ 0x00A7D4, 0x00A7D6, 0x00A7D8, + 0x00A7DA, 0x0105A2, 0x0105B2, 0x0105BA, @@ -1288,7 +1294,7 @@ const nonMatchSymbols = buildString({ [0x0010FB, 0x0010FC], [0x001100, 0x0013F7], [0x0013FE, 0x001C7F], - [0x001C89, 0x001CFF], + [0x001C8B, 0x001CFF], [0x001D2C, 0x001D6A], [0x001D9B, 0x001E00], [0x001F08, 0x001F0F], @@ -1335,8 +1341,9 @@ const nonMatchSymbols = buildString({ [0x00A7AA, 0x00A7AE], [0x00A7B0, 0x00A7B4], [0x00A7C4, 0x00A7C7], - [0x00A7CB, 0x00A7D0], - [0x00A7DA, 0x00A7F5], + [0x00A7CB, 0x00A7CC], + [0x00A7CE, 0x00A7D0], + [0x00A7DC, 0x00A7F5], [0x00A7F7, 0x00A7F9], [0x00A7FB, 0x00AB2F], [0x00AB5B, 0x00AB5F], @@ -1349,7 +1356,8 @@ const nonMatchSymbols = buildString({ [0x010450, 0x0104D7], [0x0104FC, 0x010596], [0x0105BD, 0x010CBF], - [0x010CF3, 0x0118BF], + [0x010CF3, 0x010D6F], + [0x010D86, 0x0118BF], [0x0118E0, 0x016E5F], [0x016E80, 0x01D419], [0x01D434, 0x01D44D], diff --git a/test/built-ins/RegExp/property-escapes/generated/General_Category_-_Mark.js b/test/built-ins/RegExp/property-escapes/generated/General_Category_-_Mark.js index a8402a4d9ca..8b477744fd7 100644 --- a/test/built-ins/RegExp/property-escapes/generated/General_Category_-_Mark.js +++ b/test/built-ins/RegExp/property-escapes/generated/General_Category_-_Mark.js @@ -7,7 +7,7 @@ description: > Unicode property escapes for `General_Category=Mark` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.1.0 + Unicode v16.0.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] @@ -69,6 +69,9 @@ const matchSymbols = buildString({ 0x01123E, 0x011241, 0x011357, + 0x0113C2, + 0x0113C5, + 0x0113D2, 0x01145E, 0x011940, 0x0119E4, @@ -76,6 +79,7 @@ const matchSymbols = buildString({ 0x011D3A, 0x011D47, 0x011F03, + 0x011F5A, 0x013440, 0x016F4F, 0x016FE4, @@ -104,7 +108,7 @@ const matchSymbols = buildString({ [0x000825, 0x000827], [0x000829, 0x00082D], [0x000859, 0x00085B], - [0x000898, 0x00089F], + [0x000897, 0x00089F], [0x0008CA, 0x0008E1], [0x0008E3, 0x000903], [0x00093A, 0x00093C], @@ -237,8 +241,9 @@ const matchSymbols = buildString({ [0x010A38, 0x010A3A], [0x010AE5, 0x010AE6], [0x010D24, 0x010D27], + [0x010D69, 0x010D6D], [0x010EAB, 0x010EAC], - [0x010EFD, 0x010EFF], + [0x010EFC, 0x010EFF], [0x010F46, 0x010F50], [0x010F82, 0x010F85], [0x011000, 0x011002], @@ -263,6 +268,10 @@ const matchSymbols = buildString({ [0x011362, 0x011363], [0x011366, 0x01136C], [0x011370, 0x011374], + [0x0113B8, 0x0113C0], + [0x0113C7, 0x0113CA], + [0x0113CC, 0x0113D0], + [0x0113E1, 0x0113E2], [0x011435, 0x011446], [0x0114B0, 0x0114C3], [0x0115AF, 0x0115B5], @@ -298,6 +307,7 @@ const matchSymbols = buildString({ [0x011F34, 0x011F3A], [0x011F3E, 0x011F42], [0x013447, 0x013455], + [0x01611E, 0x01612F], [0x016AF0, 0x016AF4], [0x016B30, 0x016B36], [0x016F51, 0x016F87], @@ -324,6 +334,7 @@ const matchSymbols = buildString({ [0x01E130, 0x01E136], [0x01E2EC, 0x01E2EF], [0x01E4EC, 0x01E4EF], + [0x01E5EE, 0x01E5EF], [0x01E8D0, 0x01E8D6], [0x01E944, 0x01E94A], [0x0E0100, 0x0E01EF] @@ -423,6 +434,10 @@ const nonMatchSymbols = buildString({ 0x010A04, 0x0111CD, 0x01133D, + 0x0113C1, + 0x0113C6, + 0x0113CB, + 0x0113D1, 0x011936, 0x01193F, 0x011941, @@ -459,7 +474,7 @@ const nonMatchSymbols = buildString({ [0x0007F4, 0x0007FC], [0x0007FE, 0x000815], [0x00082E, 0x000858], - [0x00085C, 0x000897], + [0x00085C, 0x000896], [0x0008A0, 0x0008C9], [0x000904, 0x000939], [0x000958, 0x000961], @@ -600,8 +615,9 @@ const nonMatchSymbols = buildString({ [0x010A3B, 0x010A3E], [0x010A40, 0x010AE4], [0x010AE7, 0x010D23], - [0x010D28, 0x010EAA], - [0x010EAD, 0x010EFC], + [0x010D28, 0x010D68], + [0x010D6E, 0x010EAA], + [0x010EAD, 0x010EFB], [0x010F00, 0x010F45], [0x010F51, 0x010F81], [0x010F86, 0x010FFF], @@ -630,7 +646,10 @@ const nonMatchSymbols = buildString({ [0x011358, 0x011361], [0x011364, 0x011365], [0x01136D, 0x01136F], - [0x011375, 0x011434], + [0x011375, 0x0113B7], + [0x0113C3, 0x0113C4], + [0x0113D3, 0x0113E0], + [0x0113E3, 0x011434], [0x011447, 0x01145D], [0x01145F, 0x0114AF], [0x0114C4, 0x0115AE], @@ -659,9 +678,11 @@ const nonMatchSymbols = buildString({ [0x011EF7, 0x011EFF], [0x011F04, 0x011F33], [0x011F3B, 0x011F3D], - [0x011F43, 0x01343F], + [0x011F43, 0x011F59], + [0x011F5B, 0x01343F], [0x013441, 0x013446], - [0x013456, 0x016AEF], + [0x013456, 0x01611D], + [0x016130, 0x016AEF], [0x016AF5, 0x016B2F], [0x016B37, 0x016F4E], [0x016F88, 0x016F8E], @@ -688,7 +709,8 @@ const nonMatchSymbols = buildString({ [0x01E137, 0x01E2AD], [0x01E2AF, 0x01E2EB], [0x01E2F0, 0x01E4EB], - [0x01E4F0, 0x01E8CF], + [0x01E4F0, 0x01E5ED], + [0x01E5F0, 0x01E8CF], [0x01E8D7, 0x01E943], [0x01E94B, 0x0E00FF], [0x0E01F0, 0x10FFFF] diff --git a/test/built-ins/RegExp/property-escapes/generated/General_Category_-_Math_Symbol.js b/test/built-ins/RegExp/property-escapes/generated/General_Category_-_Math_Symbol.js index 8fe44454e8b..9aa05ac7602 100644 --- a/test/built-ins/RegExp/property-escapes/generated/General_Category_-_Math_Symbol.js +++ b/test/built-ins/RegExp/property-escapes/generated/General_Category_-_Math_Symbol.js @@ -7,7 +7,7 @@ description: > Unicode property escapes for `General_Category=Math_Symbol` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.1.0 + Unicode v16.0.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] @@ -80,6 +80,7 @@ const matchSymbols = buildString({ [0x00FE64, 0x00FE66], [0x00FF1C, 0x00FF1E], [0x00FFE9, 0x00FFEC], + [0x010D8E, 0x010D8F], [0x01EEF0, 0x01EEF1] ] }); @@ -173,7 +174,8 @@ const nonMatchSymbols = buildString({ [0x00FF1F, 0x00FF5B], [0x00FF5F, 0x00FFE1], [0x00FFE3, 0x00FFE8], - [0x00FFED, 0x01D6C0], + [0x00FFED, 0x010D8D], + [0x010D90, 0x01D6C0], [0x01D6C2, 0x01D6DA], [0x01D6DC, 0x01D6FA], [0x01D6FC, 0x01D714], diff --git a/test/built-ins/RegExp/property-escapes/generated/General_Category_-_Modifier_Letter.js b/test/built-ins/RegExp/property-escapes/generated/General_Category_-_Modifier_Letter.js index 6cb2dcb9aa1..6d54ee62cef 100644 --- a/test/built-ins/RegExp/property-escapes/generated/General_Category_-_Modifier_Letter.js +++ b/test/built-ins/RegExp/property-escapes/generated/General_Category_-_Modifier_Letter.js @@ -7,7 +7,7 @@ description: > Unicode property escapes for `General_Category=Modifier_Letter` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.1.0 + Unicode v16.0.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] @@ -51,6 +51,8 @@ const matchSymbols = buildString({ 0x00AADD, 0x00AB69, 0x00FF70, + 0x010D4E, + 0x010D6F, 0x016FE3, 0x01E4EB, 0x01E94B @@ -81,6 +83,8 @@ const matchSymbols = buildString({ [0x010787, 0x0107B0], [0x0107B2, 0x0107BA], [0x016B40, 0x016B43], + [0x016D40, 0x016D42], + [0x016D6B, 0x016D6C], [0x016F93, 0x016F9F], [0x016FE0, 0x016FE1], [0x01AFF0, 0x01AFF3], @@ -190,8 +194,12 @@ const nonMatchSymbols = buildString({ [0x00E000, 0x00FF6F], [0x00FF71, 0x00FF9D], [0x00FFA0, 0x01077F], - [0x0107BB, 0x016B3F], - [0x016B44, 0x016F92], + [0x0107BB, 0x010D4D], + [0x010D4F, 0x010D6E], + [0x010D70, 0x016B3F], + [0x016B44, 0x016D3F], + [0x016D43, 0x016D6A], + [0x016D6D, 0x016F92], [0x016FA0, 0x016FDF], [0x016FE4, 0x01AFEF], [0x01AFFF, 0x01E02F], diff --git a/test/built-ins/RegExp/property-escapes/generated/General_Category_-_Modifier_Symbol.js b/test/built-ins/RegExp/property-escapes/generated/General_Category_-_Modifier_Symbol.js index 3016613fc7d..b8aa11e7816 100644 --- a/test/built-ins/RegExp/property-escapes/generated/General_Category_-_Modifier_Symbol.js +++ b/test/built-ins/RegExp/property-escapes/generated/General_Category_-_Modifier_Symbol.js @@ -7,7 +7,7 @@ description: > Unicode property escapes for `General_Category=Modifier_Symbol` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.1.0 + Unicode v16.0.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/property-escapes/generated/General_Category_-_Nonspacing_Mark.js b/test/built-ins/RegExp/property-escapes/generated/General_Category_-_Nonspacing_Mark.js index 09a90c84f00..591a9b8ffd5 100644 --- a/test/built-ins/RegExp/property-escapes/generated/General_Category_-_Nonspacing_Mark.js +++ b/test/built-ins/RegExp/property-escapes/generated/General_Category_-_Nonspacing_Mark.js @@ -7,7 +7,7 @@ description: > Unicode property escapes for `General_Category=Nonspacing_Mark` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.1.0 + Unicode v16.0.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] @@ -109,6 +109,9 @@ const matchSymbols = buildString({ 0x011241, 0x0112DF, 0x011340, + 0x0113CE, + 0x0113D0, + 0x0113D2, 0x011446, 0x01145E, 0x0114BA, @@ -116,6 +119,8 @@ const matchSymbols = buildString({ 0x0116AB, 0x0116AD, 0x0116B7, + 0x01171D, + 0x01171F, 0x01193E, 0x011943, 0x0119E0, @@ -127,6 +132,7 @@ const matchSymbols = buildString({ 0x011D97, 0x011F40, 0x011F42, + 0x011F5A, 0x013440, 0x016F4F, 0x016FE4, @@ -155,7 +161,7 @@ const matchSymbols = buildString({ [0x000825, 0x000827], [0x000829, 0x00082D], [0x000859, 0x00085B], - [0x000898, 0x00089F], + [0x000897, 0x00089F], [0x0008CA, 0x0008E1], [0x0008E3, 0x000902], [0x000941, 0x000948], @@ -274,8 +280,9 @@ const matchSymbols = buildString({ [0x010A38, 0x010A3A], [0x010AE5, 0x010AE6], [0x010D24, 0x010D27], + [0x010D69, 0x010D6D], [0x010EAB, 0x010EAC], - [0x010EFD, 0x010EFF], + [0x010EFC, 0x010EFF], [0x010F46, 0x010F50], [0x010F82, 0x010F85], [0x011038, 0x011046], @@ -296,6 +303,8 @@ const matchSymbols = buildString({ [0x01133B, 0x01133C], [0x011366, 0x01136C], [0x011370, 0x011374], + [0x0113BB, 0x0113C0], + [0x0113E1, 0x0113E2], [0x011438, 0x01143F], [0x011442, 0x011444], [0x0114B3, 0x0114B8], @@ -308,7 +317,6 @@ const matchSymbols = buildString({ [0x011633, 0x01163A], [0x01163F, 0x011640], [0x0116B0, 0x0116B5], - [0x01171D, 0x01171F], [0x011722, 0x011725], [0x011727, 0x01172B], [0x01182F, 0x011837], @@ -337,6 +345,8 @@ const matchSymbols = buildString({ [0x011F00, 0x011F01], [0x011F36, 0x011F3A], [0x013447, 0x013455], + [0x01611E, 0x016129], + [0x01612D, 0x01612F], [0x016AF0, 0x016AF4], [0x016B30, 0x016B36], [0x016F8F, 0x016F92], @@ -360,6 +370,7 @@ const matchSymbols = buildString({ [0x01E130, 0x01E136], [0x01E2EC, 0x01E2EF], [0x01E4EC, 0x01E4EF], + [0x01E5EE, 0x01E5EF], [0x01E8D0, 0x01E8D6], [0x01E944, 0x01E94A], [0x0E0100, 0x0E01EF] @@ -439,6 +450,8 @@ const nonMatchSymbols = buildString({ 0x010A04, 0x01112C, 0x011235, + 0x0113CF, + 0x0113D1, 0x011445, 0x0114B9, 0x0114C1, @@ -446,6 +459,7 @@ const nonMatchSymbols = buildString({ 0x01163E, 0x0116AC, 0x0116B6, + 0x01171E, 0x011726, 0x011838, 0x01193D, @@ -482,7 +496,7 @@ const nonMatchSymbols = buildString({ [0x0007F4, 0x0007FC], [0x0007FE, 0x000815], [0x00082E, 0x000858], - [0x00085C, 0x000897], + [0x00085C, 0x000896], [0x0008A0, 0x0008C9], [0x000903, 0x000939], [0x00093D, 0x000940], @@ -650,8 +664,9 @@ const nonMatchSymbols = buildString({ [0x010A3B, 0x010A3E], [0x010A40, 0x010AE4], [0x010AE7, 0x010D23], - [0x010D28, 0x010EAA], - [0x010EAD, 0x010EFC], + [0x010D28, 0x010D68], + [0x010D6E, 0x010EAA], + [0x010EAD, 0x010EFB], [0x010F00, 0x010F45], [0x010F51, 0x010F81], [0x010F86, 0x011000], @@ -680,7 +695,10 @@ const nonMatchSymbols = buildString({ [0x01133D, 0x01133F], [0x011341, 0x011365], [0x01136D, 0x01136F], - [0x011375, 0x011437], + [0x011375, 0x0113BA], + [0x0113C1, 0x0113CD], + [0x0113D3, 0x0113E0], + [0x0113E3, 0x011437], [0x011440, 0x011441], [0x011447, 0x01145D], [0x01145F, 0x0114B2], @@ -718,9 +736,12 @@ const nonMatchSymbols = buildString({ [0x011EF5, 0x011EFF], [0x011F02, 0x011F35], [0x011F3B, 0x011F3F], - [0x011F43, 0x01343F], + [0x011F43, 0x011F59], + [0x011F5B, 0x01343F], [0x013441, 0x013446], - [0x013456, 0x016AEF], + [0x013456, 0x01611D], + [0x01612A, 0x01612C], + [0x016130, 0x016AEF], [0x016AF5, 0x016B2F], [0x016B37, 0x016F4E], [0x016F50, 0x016F8E], @@ -745,7 +766,8 @@ const nonMatchSymbols = buildString({ [0x01E137, 0x01E2AD], [0x01E2AF, 0x01E2EB], [0x01E2F0, 0x01E4EB], - [0x01E4F0, 0x01E8CF], + [0x01E4F0, 0x01E5ED], + [0x01E5F0, 0x01E8CF], [0x01E8D7, 0x01E943], [0x01E94B, 0x0E00FF], [0x0E01F0, 0x10FFFF] diff --git a/test/built-ins/RegExp/property-escapes/generated/General_Category_-_Number.js b/test/built-ins/RegExp/property-escapes/generated/General_Category_-_Number.js index 6985d18d8a0..b3d58c82ea5 100644 --- a/test/built-ins/RegExp/property-escapes/generated/General_Category_-_Number.js +++ b/test/built-ins/RegExp/property-escapes/generated/General_Category_-_Number.js @@ -7,7 +7,7 @@ description: > Unicode property escapes for `General_Category=Number` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.1.0 + Unicode v16.0.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] @@ -110,6 +110,7 @@ const matchSymbols = buildString({ [0x010BA9, 0x010BAF], [0x010CFA, 0x010CFF], [0x010D30, 0x010D39], + [0x010D40, 0x010D49], [0x010E60, 0x010E7E], [0x010F1D, 0x010F26], [0x010F51, 0x010F54], @@ -124,20 +125,25 @@ const matchSymbols = buildString({ [0x0114D0, 0x0114D9], [0x011650, 0x011659], [0x0116C0, 0x0116C9], + [0x0116D0, 0x0116E3], [0x011730, 0x01173B], [0x0118E0, 0x0118F2], [0x011950, 0x011959], + [0x011BF0, 0x011BF9], [0x011C50, 0x011C6C], [0x011D50, 0x011D59], [0x011DA0, 0x011DA9], [0x011F50, 0x011F59], [0x011FC0, 0x011FD4], [0x012400, 0x01246E], + [0x016130, 0x016139], [0x016A60, 0x016A69], [0x016AC0, 0x016AC9], [0x016B50, 0x016B59], [0x016B5B, 0x016B61], + [0x016D70, 0x016D79], [0x016E80, 0x016E96], + [0x01CCF0, 0x01CCF9], [0x01D2C0, 0x01D2D3], [0x01D2E0, 0x01D2F3], [0x01D360, 0x01D378], @@ -145,6 +151,7 @@ const matchSymbols = buildString({ [0x01E140, 0x01E149], [0x01E2F0, 0x01E2F9], [0x01E4F0, 0x01E4F9], + [0x01E5F1, 0x01E5FA], [0x01E8C7, 0x01E8CF], [0x01E950, 0x01E959], [0x01EC71, 0x01ECAB], @@ -290,7 +297,8 @@ const nonMatchSymbols = buildString({ [0x010B80, 0x010BA8], [0x010BB0, 0x010CF9], [0x010D00, 0x010D2F], - [0x010D3A, 0x010E5F], + [0x010D3A, 0x010D3F], + [0x010D4A, 0x010E5F], [0x010E7F, 0x010F1C], [0x010F27, 0x010F50], [0x010F55, 0x010FC4], @@ -304,27 +312,33 @@ const nonMatchSymbols = buildString({ [0x01145A, 0x0114CF], [0x0114DA, 0x01164F], [0x01165A, 0x0116BF], - [0x0116CA, 0x01172F], + [0x0116CA, 0x0116CF], + [0x0116E4, 0x01172F], [0x01173C, 0x0118DF], [0x0118F3, 0x01194F], - [0x01195A, 0x011C4F], + [0x01195A, 0x011BEF], + [0x011BFA, 0x011C4F], [0x011C6D, 0x011D4F], [0x011D5A, 0x011D9F], [0x011DAA, 0x011F4F], [0x011F5A, 0x011FBF], [0x011FD5, 0x0123FF], - [0x01246F, 0x016A5F], + [0x01246F, 0x01612F], + [0x01613A, 0x016A5F], [0x016A6A, 0x016ABF], [0x016ACA, 0x016B4F], - [0x016B62, 0x016E7F], - [0x016E97, 0x01D2BF], + [0x016B62, 0x016D6F], + [0x016D7A, 0x016E7F], + [0x016E97, 0x01CCEF], + [0x01CCFA, 0x01D2BF], [0x01D2D4, 0x01D2DF], [0x01D2F4, 0x01D35F], [0x01D379, 0x01D7CD], [0x01D800, 0x01E13F], [0x01E14A, 0x01E2EF], [0x01E2FA, 0x01E4EF], - [0x01E4FA, 0x01E8C6], + [0x01E4FA, 0x01E5F0], + [0x01E5FB, 0x01E8C6], [0x01E8D0, 0x01E94F], [0x01E95A, 0x01EC70], [0x01ECB5, 0x01ED00], diff --git a/test/built-ins/RegExp/property-escapes/generated/General_Category_-_Open_Punctuation.js b/test/built-ins/RegExp/property-escapes/generated/General_Category_-_Open_Punctuation.js index 73648c372c3..35196b4735f 100644 --- a/test/built-ins/RegExp/property-escapes/generated/General_Category_-_Open_Punctuation.js +++ b/test/built-ins/RegExp/property-escapes/generated/General_Category_-_Open_Punctuation.js @@ -7,7 +7,7 @@ description: > Unicode property escapes for `General_Category=Open_Punctuation` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.1.0 + Unicode v16.0.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/property-escapes/generated/General_Category_-_Other.js b/test/built-ins/RegExp/property-escapes/generated/General_Category_-_Other.js index fbabbd877a3..b5fed2dd62d 100644 --- a/test/built-ins/RegExp/property-escapes/generated/General_Category_-_Other.js +++ b/test/built-ins/RegExp/property-escapes/generated/General_Category_-_Other.js @@ -7,7 +7,7 @@ description: > Unicode property escapes for `General_Category=Other` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.1.0 + Unicode v16.0.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] @@ -107,7 +107,7 @@ const matchSymbols = buildString({ 0x00180E, 0x00191F, 0x001A5F, - 0x001B7F, + 0x001B4D, 0x001F58, 0x001F5A, 0x001F5C, @@ -185,6 +185,13 @@ const matchSymbols = buildString({ 0x011331, 0x011334, 0x01133A, + 0x01138A, + 0x01138F, + 0x0113B6, + 0x0113C1, + 0x0113C6, + 0x0113CB, + 0x0113D6, 0x01145C, 0x011914, 0x011917, @@ -258,7 +265,6 @@ const matchSymbols = buildString({ 0x01EEAA, 0x01F0C0, 0x01F0D0, - 0x01FABE, 0x01FB93 ], ranges: [ @@ -279,7 +285,7 @@ const matchSymbols = buildString({ [0x00082E, 0x00082F], [0x00085C, 0x00085D], [0x00086B, 0x00086F], - [0x00088F, 0x000897], + [0x00088F, 0x000896], [0x00098D, 0x00098E], [0x000991, 0x000992], [0x0009B3, 0x0009B5], @@ -391,11 +397,10 @@ const matchSymbols = buildString({ [0x001A9A, 0x001A9F], [0x001AAE, 0x001AAF], [0x001ACF, 0x001AFF], - [0x001B4D, 0x001B4F], [0x001BF4, 0x001BFB], [0x001C38, 0x001C3A], [0x001C4A, 0x001C4C], - [0x001C89, 0x001C8F], + [0x001C8B, 0x001C8F], [0x001CBB, 0x001CBC], [0x001CC8, 0x001CCF], [0x001CFB, 0x001CFF], @@ -414,7 +419,7 @@ const matchSymbols = buildString({ [0x0020C1, 0x0020CF], [0x0020F1, 0x0020FF], [0x00218C, 0x00218F], - [0x002427, 0x00243F], + [0x00242A, 0x00243F], [0x00244B, 0x00245F], [0x002B74, 0x002B75], [0x002CF4, 0x002CF8], @@ -428,13 +433,13 @@ const matchSymbols = buildString({ [0x002FD6, 0x002FEF], [0x003097, 0x003098], [0x003100, 0x003104], - [0x0031E4, 0x0031EE], + [0x0031E6, 0x0031EE], [0x00A48D, 0x00A48F], [0x00A4C7, 0x00A4CF], [0x00A62C, 0x00A63F], [0x00A6F8, 0x00A6FF], - [0x00A7CB, 0x00A7CF], - [0x00A7DA, 0x00A7F1], + [0x00A7CE, 0x00A7CF], + [0x00A7DD, 0x00A7F1], [0x00A82D, 0x00A82F], [0x00A83A, 0x00A83F], [0x00A878, 0x00A87F], @@ -498,7 +503,8 @@ const matchSymbols = buildString({ [0x0104FC, 0x0104FF], [0x010528, 0x01052F], [0x010564, 0x01056E], - [0x0105BD, 0x0105FF], + [0x0105BD, 0x0105BF], + [0x0105F4, 0x0105FF], [0x010737, 0x01073F], [0x010756, 0x01075F], [0x010768, 0x01077F], @@ -532,9 +538,13 @@ const matchSymbols = buildString({ [0x010CB3, 0x010CBF], [0x010CF3, 0x010CF9], [0x010D28, 0x010D2F], - [0x010D3A, 0x010E5F], + [0x010D3A, 0x010D3F], + [0x010D66, 0x010D68], + [0x010D86, 0x010D8D], + [0x010D90, 0x010E5F], [0x010EAE, 0x010EAF], - [0x010EB2, 0x010EFC], + [0x010EB2, 0x010EC1], + [0x010EC5, 0x010EFB], [0x010F28, 0x010F2F], [0x010F5A, 0x010F6F], [0x010F8A, 0x010FAF], @@ -561,7 +571,11 @@ const matchSymbols = buildString({ [0x011358, 0x01135C], [0x011364, 0x011365], [0x01136D, 0x01136F], - [0x011375, 0x0113FF], + [0x011375, 0x01137F], + [0x01138C, 0x01138D], + [0x0113C3, 0x0113C4], + [0x0113D9, 0x0113E0], + [0x0113E3, 0x0113FF], [0x011462, 0x01147F], [0x0114C8, 0x0114CF], [0x0114DA, 0x01157F], @@ -571,7 +585,8 @@ const matchSymbols = buildString({ [0x01165A, 0x01165F], [0x01166D, 0x01167F], [0x0116BA, 0x0116BF], - [0x0116CA, 0x0116FF], + [0x0116CA, 0x0116CF], + [0x0116E4, 0x0116FF], [0x01171B, 0x01171C], [0x01172C, 0x01172F], [0x011747, 0x0117FF], @@ -588,7 +603,9 @@ const matchSymbols = buildString({ [0x011A48, 0x011A4F], [0x011AA3, 0x011AAF], [0x011AF9, 0x011AFF], - [0x011B0A, 0x011BFF], + [0x011B0A, 0x011BBF], + [0x011BE2, 0x011BEF], + [0x011BFA, 0x011BFF], [0x011C46, 0x011C4F], [0x011C6D, 0x011C6F], [0x011C90, 0x011C91], @@ -600,7 +617,7 @@ const matchSymbols = buildString({ [0x011DAA, 0x011EDF], [0x011EF9, 0x011EFF], [0x011F3B, 0x011F3D], - [0x011F5A, 0x011FAF], + [0x011F5B, 0x011FAF], [0x011FB1, 0x011FBF], [0x011FF2, 0x011FFE], [0x01239A, 0x0123FF], @@ -608,8 +625,10 @@ const matchSymbols = buildString({ [0x012544, 0x012F8F], [0x012FF3, 0x012FFF], [0x013430, 0x01343F], - [0x013456, 0x0143FF], - [0x014647, 0x0167FF], + [0x013456, 0x01345F], + [0x0143FB, 0x0143FF], + [0x014647, 0x0160FF], + [0x01613A, 0x0167FF], [0x016A39, 0x016A3F], [0x016A6A, 0x016A6D], [0x016ACA, 0x016ACF], @@ -617,7 +636,8 @@ const matchSymbols = buildString({ [0x016AF6, 0x016AFF], [0x016B46, 0x016B4F], [0x016B78, 0x016B7C], - [0x016B90, 0x016E3F], + [0x016B90, 0x016D3F], + [0x016D7A, 0x016E3F], [0x016E9B, 0x016EFF], [0x016F4B, 0x016F4E], [0x016F88, 0x016F8E], @@ -625,7 +645,7 @@ const matchSymbols = buildString({ [0x016FE5, 0x016FEF], [0x016FF2, 0x016FFF], [0x0187F8, 0x0187FF], - [0x018CD6, 0x018CFF], + [0x018CD6, 0x018CFE], [0x018D09, 0x01AFEF], [0x01B123, 0x01B131], [0x01B133, 0x01B14F], @@ -637,7 +657,9 @@ const matchSymbols = buildString({ [0x01BC7D, 0x01BC7F], [0x01BC89, 0x01BC8F], [0x01BC9A, 0x01BC9B], - [0x01BCA0, 0x01CEFF], + [0x01BCA0, 0x01CBFF], + [0x01CCFA, 0x01CCFF], + [0x01CEB4, 0x01CEFF], [0x01CF2E, 0x01CF2F], [0x01CF47, 0x01CF4F], [0x01CFC4, 0x01CFFF], @@ -672,7 +694,9 @@ const matchSymbols = buildString({ [0x01E2AF, 0x01E2BF], [0x01E2FA, 0x01E2FE], [0x01E300, 0x01E4CF], - [0x01E4FA, 0x01E7DF], + [0x01E4FA, 0x01E5CF], + [0x01E5FB, 0x01E5FE], + [0x01E600, 0x01E7DF], [0x01E8C5, 0x01E8C6], [0x01E8D7, 0x01E8FF], [0x01E94C, 0x01E94F], @@ -710,16 +734,16 @@ const matchSymbols = buildString({ [0x01F85A, 0x01F85F], [0x01F888, 0x01F88F], [0x01F8AE, 0x01F8AF], - [0x01F8B2, 0x01F8FF], + [0x01F8BC, 0x01F8BF], + [0x01F8C2, 0x01F8FF], [0x01FA54, 0x01FA5F], [0x01FA6E, 0x01FA6F], [0x01FA7D, 0x01FA7F], - [0x01FA89, 0x01FA8F], - [0x01FAC6, 0x01FACD], - [0x01FADC, 0x01FADF], - [0x01FAE9, 0x01FAEF], + [0x01FA8A, 0x01FA8E], + [0x01FAC7, 0x01FACD], + [0x01FADD, 0x01FADE], + [0x01FAEA, 0x01FAEF], [0x01FAF9, 0x01FAFF], - [0x01FBCB, 0x01FBEF], [0x01FBFA, 0x01FFFF], [0x02A6E0, 0x02A6FF], [0x02B73A, 0x02B73F], @@ -804,6 +828,10 @@ const nonMatchSymbols = buildString({ 0x011288, 0x011350, 0x011357, + 0x01138B, + 0x01138E, + 0x0113C2, + 0x0113C5, 0x011909, 0x011D3A, 0x011FB0, @@ -814,6 +842,7 @@ const nonMatchSymbols = buildString({ 0x01D546, 0x01E08F, 0x01E2FF, + 0x01E5FF, 0x01EE24, 0x01EE27, 0x01EE39, @@ -857,7 +886,7 @@ const nonMatchSymbols = buildString({ [0x000840, 0x00085B], [0x000860, 0x00086A], [0x000870, 0x00088E], - [0x000898, 0x0008E1], + [0x000897, 0x0008E1], [0x0008E3, 0x000983], [0x000985, 0x00098C], [0x00098F, 0x000990], @@ -1030,11 +1059,10 @@ const nonMatchSymbols = buildString({ [0x001AA0, 0x001AAD], [0x001AB0, 0x001ACE], [0x001B00, 0x001B4C], - [0x001B50, 0x001B7E], - [0x001B80, 0x001BF3], + [0x001B4E, 0x001BF3], [0x001BFC, 0x001C37], [0x001C3B, 0x001C49], - [0x001C4D, 0x001C88], + [0x001C4D, 0x001C8A], [0x001C90, 0x001CBA], [0x001CBD, 0x001CC7], [0x001CD0, 0x001CFA], @@ -1060,7 +1088,7 @@ const nonMatchSymbols = buildString({ [0x0020A0, 0x0020C0], [0x0020D0, 0x0020F0], [0x002100, 0x00218B], - [0x002190, 0x002426], + [0x002190, 0x002429], [0x002440, 0x00244A], [0x002460, 0x002B73], [0x002B76, 0x002B95], @@ -1086,15 +1114,15 @@ const nonMatchSymbols = buildString({ [0x003099, 0x0030FF], [0x003105, 0x00312F], [0x003131, 0x00318E], - [0x003190, 0x0031E3], + [0x003190, 0x0031E5], [0x0031EF, 0x00321E], [0x003220, 0x00A48C], [0x00A490, 0x00A4C6], [0x00A4D0, 0x00A62B], [0x00A640, 0x00A6F7], - [0x00A700, 0x00A7CA], + [0x00A700, 0x00A7CD], [0x00A7D0, 0x00A7D1], - [0x00A7D5, 0x00A7D9], + [0x00A7D5, 0x00A7DC], [0x00A7F2, 0x00A82C], [0x00A830, 0x00A839], [0x00A840, 0x00A877], @@ -1181,6 +1209,7 @@ const nonMatchSymbols = buildString({ [0x0105A3, 0x0105B1], [0x0105B3, 0x0105B9], [0x0105BB, 0x0105BC], + [0x0105C0, 0x0105F3], [0x010600, 0x010736], [0x010740, 0x010755], [0x010760, 0x010767], @@ -1221,11 +1250,15 @@ const nonMatchSymbols = buildString({ [0x010CC0, 0x010CF2], [0x010CFA, 0x010D27], [0x010D30, 0x010D39], + [0x010D40, 0x010D65], + [0x010D69, 0x010D85], + [0x010D8E, 0x010D8F], [0x010E60, 0x010E7E], [0x010E80, 0x010EA9], [0x010EAB, 0x010EAD], [0x010EB0, 0x010EB1], - [0x010EFD, 0x010F27], + [0x010EC2, 0x010EC4], + [0x010EFC, 0x010F27], [0x010F30, 0x010F59], [0x010F70, 0x010F89], [0x010FB0, 0x010FCB], @@ -1262,6 +1295,13 @@ const nonMatchSymbols = buildString({ [0x01135D, 0x011363], [0x011366, 0x01136C], [0x011370, 0x011374], + [0x011380, 0x011389], + [0x011390, 0x0113B5], + [0x0113B7, 0x0113C0], + [0x0113C7, 0x0113CA], + [0x0113CC, 0x0113D5], + [0x0113D7, 0x0113D8], + [0x0113E1, 0x0113E2], [0x011400, 0x01145B], [0x01145D, 0x011461], [0x011480, 0x0114C7], @@ -1273,6 +1313,7 @@ const nonMatchSymbols = buildString({ [0x011660, 0x01166C], [0x011680, 0x0116B9], [0x0116C0, 0x0116C9], + [0x0116D0, 0x0116E3], [0x011700, 0x01171A], [0x01171D, 0x01172B], [0x011730, 0x011746], @@ -1292,6 +1333,8 @@ const nonMatchSymbols = buildString({ [0x011A50, 0x011AA2], [0x011AB0, 0x011AF8], [0x011B00, 0x011B09], + [0x011BC0, 0x011BE1], + [0x011BF0, 0x011BF9], [0x011C00, 0x011C08], [0x011C0A, 0x011C36], [0x011C38, 0x011C45], @@ -1314,7 +1357,7 @@ const nonMatchSymbols = buildString({ [0x011EE0, 0x011EF8], [0x011F00, 0x011F10], [0x011F12, 0x011F3A], - [0x011F3E, 0x011F59], + [0x011F3E, 0x011F5A], [0x011FC0, 0x011FF1], [0x011FFF, 0x012399], [0x012400, 0x01246E], @@ -1323,7 +1366,9 @@ const nonMatchSymbols = buildString({ [0x012F90, 0x012FF2], [0x013000, 0x01342F], [0x013440, 0x013455], + [0x013460, 0x0143FA], [0x014400, 0x014646], + [0x016100, 0x016139], [0x016800, 0x016A38], [0x016A40, 0x016A5E], [0x016A60, 0x016A69], @@ -1336,6 +1381,7 @@ const nonMatchSymbols = buildString({ [0x016B5B, 0x016B61], [0x016B63, 0x016B77], [0x016B7D, 0x016B8F], + [0x016D40, 0x016D79], [0x016E40, 0x016E9A], [0x016F00, 0x016F4A], [0x016F4F, 0x016F87], @@ -1344,7 +1390,7 @@ const nonMatchSymbols = buildString({ [0x016FF0, 0x016FF1], [0x017000, 0x0187F7], [0x018800, 0x018CD5], - [0x018D00, 0x018D08], + [0x018CFF, 0x018D08], [0x01AFF0, 0x01AFF3], [0x01AFF5, 0x01AFFB], [0x01AFFD, 0x01AFFE], @@ -1357,6 +1403,8 @@ const nonMatchSymbols = buildString({ [0x01BC80, 0x01BC88], [0x01BC90, 0x01BC99], [0x01BC9C, 0x01BC9F], + [0x01CC00, 0x01CCF9], + [0x01CD00, 0x01CEB3], [0x01CF00, 0x01CF2D], [0x01CF30, 0x01CF46], [0x01CF50, 0x01CFC3], @@ -1404,6 +1452,7 @@ const nonMatchSymbols = buildString({ [0x01E290, 0x01E2AE], [0x01E2C0, 0x01E2F9], [0x01E4D0, 0x01E4F9], + [0x01E5D0, 0x01E5FA], [0x01E7E0, 0x01E7E6], [0x01E7E8, 0x01E7EB], [0x01E7ED, 0x01E7EE], @@ -1456,19 +1505,18 @@ const nonMatchSymbols = buildString({ [0x01F850, 0x01F859], [0x01F860, 0x01F887], [0x01F890, 0x01F8AD], - [0x01F8B0, 0x01F8B1], + [0x01F8B0, 0x01F8BB], + [0x01F8C0, 0x01F8C1], [0x01F900, 0x01FA53], [0x01FA60, 0x01FA6D], [0x01FA70, 0x01FA7C], - [0x01FA80, 0x01FA88], - [0x01FA90, 0x01FABD], - [0x01FABF, 0x01FAC5], - [0x01FACE, 0x01FADB], - [0x01FAE0, 0x01FAE8], + [0x01FA80, 0x01FA89], + [0x01FA8F, 0x01FAC6], + [0x01FACE, 0x01FADC], + [0x01FADF, 0x01FAE9], [0x01FAF0, 0x01FAF8], [0x01FB00, 0x01FB92], - [0x01FB94, 0x01FBCA], - [0x01FBF0, 0x01FBF9], + [0x01FB94, 0x01FBF9], [0x020000, 0x02A6DF], [0x02A700, 0x02B739], [0x02B740, 0x02B81D], diff --git a/test/built-ins/RegExp/property-escapes/generated/General_Category_-_Other_Letter.js b/test/built-ins/RegExp/property-escapes/generated/General_Category_-_Other_Letter.js index 740d422f7ea..d488b1caf89 100644 --- a/test/built-ins/RegExp/property-escapes/generated/General_Category_-_Other_Letter.js +++ b/test/built-ins/RegExp/property-escapes/generated/General_Category_-_Other_Letter.js @@ -7,7 +7,7 @@ description: > Unicode property escapes for `General_Category=Other_Letter` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.1.0 + Unicode v16.0.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] @@ -75,6 +75,7 @@ const matchSymbols = buildString({ 0x010808, 0x01083C, 0x010A00, + 0x010D4F, 0x010F27, 0x011075, 0x011144, @@ -85,6 +86,11 @@ const matchSymbols = buildString({ 0x011288, 0x01133D, 0x011350, + 0x01138B, + 0x01138E, + 0x0113B7, + 0x0113D1, + 0x0113D3, 0x0114C7, 0x011644, 0x0116B8, @@ -107,6 +113,7 @@ const matchSymbols = buildString({ 0x01B155, 0x01DF0A, 0x01E14E, + 0x01E5F0, 0x01EE24, 0x01EE27, 0x01EE39, @@ -377,6 +384,7 @@ const matchSymbols = buildString({ [0x010450, 0x01049D], [0x010500, 0x010527], [0x010530, 0x010563], + [0x0105C0, 0x0105F3], [0x010600, 0x010736], [0x010740, 0x010755], [0x010760, 0x010767], @@ -405,8 +413,10 @@ const matchSymbols = buildString({ [0x010B80, 0x010B91], [0x010C00, 0x010C48], [0x010D00, 0x010D23], + [0x010D4A, 0x010D4D], [0x010E80, 0x010EA9], [0x010EB0, 0x010EB1], + [0x010EC2, 0x010EC4], [0x010F00, 0x010F1C], [0x010F30, 0x010F45], [0x010F70, 0x010F81], @@ -435,6 +445,8 @@ const matchSymbols = buildString({ [0x011332, 0x011333], [0x011335, 0x011339], [0x01135D, 0x011361], + [0x011380, 0x011389], + [0x011390, 0x0113B5], [0x011400, 0x011434], [0x011447, 0x01144A], [0x01145F, 0x011461], @@ -456,6 +468,7 @@ const matchSymbols = buildString({ [0x011A0B, 0x011A32], [0x011A5C, 0x011A89], [0x011AB0, 0x011AF8], + [0x011BC0, 0x011BE0], [0x011C00, 0x011C08], [0x011C0A, 0x011C2E], [0x011C72, 0x011C8F], @@ -473,7 +486,9 @@ const matchSymbols = buildString({ [0x012F90, 0x012FF0], [0x013000, 0x01342F], [0x013441, 0x013446], + [0x013460, 0x0143FA], [0x014400, 0x014646], + [0x016100, 0x01611D], [0x016800, 0x016A38], [0x016A40, 0x016A5E], [0x016A70, 0x016ABE], @@ -481,10 +496,11 @@ const matchSymbols = buildString({ [0x016B00, 0x016B2F], [0x016B63, 0x016B77], [0x016B7D, 0x016B8F], + [0x016D43, 0x016D6A], [0x016F00, 0x016F4A], [0x017000, 0x0187F7], [0x018800, 0x018CD5], - [0x018D00, 0x018D08], + [0x018CFF, 0x018D08], [0x01B000, 0x01B122], [0x01B150, 0x01B152], [0x01B164, 0x01B167], @@ -497,6 +513,7 @@ const matchSymbols = buildString({ [0x01E290, 0x01E2AD], [0x01E2C0, 0x01E2EB], [0x01E4D0, 0x01E4EA], + [0x01E5D0, 0x01E5ED], [0x01E7E0, 0x01E7E6], [0x01E7E8, 0x01E7EB], [0x01E7ED, 0x01E7EE], @@ -664,6 +681,7 @@ const nonMatchSymbols = buildString({ 0x010A14, 0x010A18, 0x010AC8, + 0x010D4E, 0x0111DB, 0x011212, 0x011287, @@ -673,6 +691,10 @@ const nonMatchSymbols = buildString({ 0x011329, 0x011331, 0x011334, + 0x01138A, + 0x01138F, + 0x0113B6, + 0x0113D2, 0x0114C6, 0x011914, 0x011917, @@ -933,7 +955,8 @@ const nonMatchSymbols = buildString({ [0x0103D0, 0x01044F], [0x01049E, 0x0104FF], [0x010528, 0x01052F], - [0x010564, 0x0105FF], + [0x010564, 0x0105BF], + [0x0105F4, 0x0105FF], [0x010737, 0x01073F], [0x010756, 0x01075F], [0x010768, 0x0107FF], @@ -958,9 +981,11 @@ const nonMatchSymbols = buildString({ [0x010B73, 0x010B7F], [0x010B92, 0x010BFF], [0x010C49, 0x010CFF], - [0x010D24, 0x010E7F], + [0x010D24, 0x010D49], + [0x010D50, 0x010E7F], [0x010EAA, 0x010EAF], - [0x010EB2, 0x010EFF], + [0x010EB2, 0x010EC1], + [0x010EC5, 0x010EFF], [0x010F1D, 0x010F26], [0x010F28, 0x010F2F], [0x010F46, 0x010F6F], @@ -989,7 +1014,10 @@ const nonMatchSymbols = buildString({ [0x01133A, 0x01133C], [0x01133E, 0x01134F], [0x011351, 0x01135C], - [0x011362, 0x0113FF], + [0x011362, 0x01137F], + [0x01138C, 0x01138D], + [0x0113B8, 0x0113D0], + [0x0113D4, 0x0113FF], [0x011435, 0x011446], [0x01144B, 0x01145E], [0x011462, 0x01147F], @@ -1017,7 +1045,8 @@ const nonMatchSymbols = buildString({ [0x011A51, 0x011A5B], [0x011A8A, 0x011A9C], [0x011A9E, 0x011AAF], - [0x011AF9, 0x011BFF], + [0x011AF9, 0x011BBF], + [0x011BE1, 0x011BFF], [0x011C2F, 0x011C3F], [0x011C41, 0x011C71], [0x011C90, 0x011CFF], @@ -1032,19 +1061,22 @@ const nonMatchSymbols = buildString({ [0x012544, 0x012F8F], [0x012FF1, 0x012FFF], [0x013430, 0x013440], - [0x013447, 0x0143FF], - [0x014647, 0x0167FF], + [0x013447, 0x01345F], + [0x0143FB, 0x0143FF], + [0x014647, 0x0160FF], + [0x01611E, 0x0167FF], [0x016A39, 0x016A3F], [0x016A5F, 0x016A6F], [0x016ABF, 0x016ACF], [0x016AEE, 0x016AFF], [0x016B30, 0x016B62], [0x016B78, 0x016B7C], - [0x016B90, 0x016EFF], + [0x016B90, 0x016D42], + [0x016D6B, 0x016EFF], [0x016F4B, 0x016F4F], [0x016F51, 0x016FFF], [0x0187F8, 0x0187FF], - [0x018CD6, 0x018CFF], + [0x018CD6, 0x018CFE], [0x018D09, 0x01AFFF], [0x01B123, 0x01B131], [0x01B133, 0x01B14F], @@ -1061,7 +1093,9 @@ const nonMatchSymbols = buildString({ [0x01E14F, 0x01E28F], [0x01E2AE, 0x01E2BF], [0x01E2EC, 0x01E4CF], - [0x01E4EB, 0x01E7DF], + [0x01E4EB, 0x01E5CF], + [0x01E5EE, 0x01E5EF], + [0x01E5F1, 0x01E7DF], [0x01E8C5, 0x01EDFF], [0x01EE25, 0x01EE26], [0x01EE3C, 0x01EE41], diff --git a/test/built-ins/RegExp/property-escapes/generated/General_Category_-_Other_Number.js b/test/built-ins/RegExp/property-escapes/generated/General_Category_-_Other_Number.js index c551c67a06e..98714fba575 100644 --- a/test/built-ins/RegExp/property-escapes/generated/General_Category_-_Other_Number.js +++ b/test/built-ins/RegExp/property-escapes/generated/General_Category_-_Other_Number.js @@ -7,7 +7,7 @@ description: > Unicode property escapes for `General_Category=Other_Number` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.1.0 + Unicode v16.0.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/property-escapes/generated/General_Category_-_Other_Punctuation.js b/test/built-ins/RegExp/property-escapes/generated/General_Category_-_Other_Punctuation.js index f2a301765cb..712a0d0e8ef 100644 --- a/test/built-ins/RegExp/property-escapes/generated/General_Category_-_Other_Punctuation.js +++ b/test/built-ins/RegExp/property-escapes/generated/General_Category_-_Other_Punctuation.js @@ -7,7 +7,7 @@ description: > Unicode property escapes for `General_Category=Other_Punctuation` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.1.0 + Unicode v16.0.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] @@ -77,11 +77,13 @@ const matchSymbols = buildString({ 0x0116B9, 0x01183B, 0x0119E2, + 0x011BE1, 0x011FFF, 0x016AF5, 0x016B44, 0x016FE2, - 0x01BC9F + 0x01BC9F, + 0x01E5FF ], ranges: [ [0x000021, 0x000023], @@ -116,8 +118,9 @@ const matchSymbols = buildString({ [0x001A1E, 0x001A1F], [0x001AA0, 0x001AA6], [0x001AA8, 0x001AAD], + [0x001B4E, 0x001B4F], [0x001B5A, 0x001B60], - [0x001B7D, 0x001B7E], + [0x001B7D, 0x001B7F], [0x001BFC, 0x001BFF], [0x001C3B, 0x001C3F], [0x001C7E, 0x001C7F], @@ -182,6 +185,8 @@ const matchSymbols = buildString({ [0x0111C5, 0x0111C8], [0x0111DD, 0x0111DF], [0x011238, 0x01123D], + [0x0113D4, 0x0113D5], + [0x0113D7, 0x0113D8], [0x01144B, 0x01144F], [0x01145A, 0x01145B], [0x0115C1, 0x0115D7], @@ -201,6 +206,7 @@ const matchSymbols = buildString({ [0x012FF1, 0x012FF2], [0x016A6E, 0x016A6F], [0x016B37, 0x016B3B], + [0x016D6D, 0x016D6F], [0x016E97, 0x016E9A], [0x01DA87, 0x01DA8B], [0x01E95E, 0x01E95F] @@ -264,6 +270,7 @@ const nonMatchSymbols = buildString({ 0x00FF0D, 0x0110BD, 0x0111DC, + 0x0113D6, 0x01145C, 0x011A9D ], @@ -319,9 +326,10 @@ const nonMatchSymbols = buildString({ [0x00180B, 0x001943], [0x001946, 0x001A1D], [0x001A20, 0x001A9F], - [0x001AAE, 0x001B59], + [0x001AAE, 0x001B4D], + [0x001B50, 0x001B59], [0x001B61, 0x001B7C], - [0x001B7F, 0x001BFB], + [0x001B80, 0x001BFB], [0x001C00, 0x001C3A], [0x001C40, 0x001C7D], [0x001C80, 0x001CBF], @@ -400,7 +408,8 @@ const nonMatchSymbols = buildString({ [0x0111CE, 0x0111DA], [0x0111E0, 0x011237], [0x01123E, 0x0112A8], - [0x0112AA, 0x01144A], + [0x0112AA, 0x0113D3], + [0x0113D9, 0x01144A], [0x011450, 0x011459], [0x01145E, 0x0114C5], [0x0114C7, 0x0115C0], @@ -414,7 +423,8 @@ const nonMatchSymbols = buildString({ [0x0119E3, 0x011A3E], [0x011A47, 0x011A99], [0x011AA3, 0x011AFF], - [0x011B0A, 0x011C40], + [0x011B0A, 0x011BE0], + [0x011BE2, 0x011C40], [0x011C46, 0x011C6F], [0x011C72, 0x011EF6], [0x011EF9, 0x011F42], @@ -425,11 +435,13 @@ const nonMatchSymbols = buildString({ [0x016A70, 0x016AF4], [0x016AF6, 0x016B36], [0x016B3C, 0x016B43], - [0x016B45, 0x016E96], + [0x016B45, 0x016D6C], + [0x016D70, 0x016E96], [0x016E9B, 0x016FE1], [0x016FE3, 0x01BC9E], [0x01BCA0, 0x01DA86], - [0x01DA8C, 0x01E95D], + [0x01DA8C, 0x01E5FE], + [0x01E600, 0x01E95D], [0x01E960, 0x10FFFF] ] }); diff --git a/test/built-ins/RegExp/property-escapes/generated/General_Category_-_Other_Symbol.js b/test/built-ins/RegExp/property-escapes/generated/General_Category_-_Other_Symbol.js index 5741ca4b31d..db9d008e04f 100644 --- a/test/built-ins/RegExp/property-escapes/generated/General_Category_-_Other_Symbol.js +++ b/test/built-ins/RegExp/property-escapes/generated/General_Category_-_Other_Symbol.js @@ -7,7 +7,7 @@ description: > Unicode property escapes for `General_Category=Other_Symbol` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.1.0 + Unicode v16.0.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] @@ -101,7 +101,7 @@ const matchSymbols = buildString({ [0x00232B, 0x00237B], [0x00237D, 0x00239A], [0x0023B4, 0x0023DB], - [0x0023E2, 0x002426], + [0x0023E2, 0x002429], [0x002440, 0x00244A], [0x00249C, 0x0024E9], [0x002500, 0x0025B6], @@ -127,7 +127,7 @@ const matchSymbols = buildString({ [0x00303E, 0x00303F], [0x003190, 0x003191], [0x003196, 0x00319F], - [0x0031C0, 0x0031E3], + [0x0031C0, 0x0031E5], [0x003200, 0x00321E], [0x00322A, 0x003247], [0x003260, 0x00327F], @@ -151,6 +151,8 @@ const matchSymbols = buildString({ [0x011FD5, 0x011FDC], [0x011FE1, 0x011FF1], [0x016B3C, 0x016B3F], + [0x01CC00, 0x01CCEF], + [0x01CD00, 0x01CEB3], [0x01CF50, 0x01CFC3], [0x01D000, 0x01D0F5], [0x01D100, 0x01D126], @@ -190,18 +192,18 @@ const matchSymbols = buildString({ [0x01F850, 0x01F859], [0x01F860, 0x01F887], [0x01F890, 0x01F8AD], - [0x01F8B0, 0x01F8B1], + [0x01F8B0, 0x01F8BB], + [0x01F8C0, 0x01F8C1], [0x01F900, 0x01FA53], [0x01FA60, 0x01FA6D], [0x01FA70, 0x01FA7C], - [0x01FA80, 0x01FA88], - [0x01FA90, 0x01FABD], - [0x01FABF, 0x01FAC5], - [0x01FACE, 0x01FADB], - [0x01FAE0, 0x01FAE8], + [0x01FA80, 0x01FA89], + [0x01FA8F, 0x01FAC6], + [0x01FACE, 0x01FADC], + [0x01FADF, 0x01FAE9], [0x01FAF0, 0x01FAF8], [0x01FB00, 0x01FB92], - [0x01FB94, 0x01FBCA] + [0x01FB94, 0x01FBEF] ] }); testPropertyEscapes( @@ -270,7 +272,6 @@ const nonMatchSymbols = buildString({ 0x01DA84, 0x01F0C0, 0x01F0D0, - 0x01FABE, 0x01FB93 ], ranges: [ @@ -320,7 +321,7 @@ const nonMatchSymbols = buildString({ [0x002329, 0x00232A], [0x00239B, 0x0023B3], [0x0023DC, 0x0023E1], - [0x002427, 0x00243F], + [0x00242A, 0x00243F], [0x00244B, 0x00249B], [0x0024EA, 0x0024FF], [0x0025F8, 0x0025FF], @@ -343,7 +344,7 @@ const nonMatchSymbols = buildString({ [0x003040, 0x00318F], [0x003192, 0x003195], [0x0031A0, 0x0031BF], - [0x0031E4, 0x0031EE], + [0x0031E6, 0x0031EE], [0x0031F0, 0x0031FF], [0x00321F, 0x003229], [0x003248, 0x00324F], @@ -376,7 +377,9 @@ const nonMatchSymbols = buildString({ [0x011FF2, 0x016B3B], [0x016B40, 0x016B44], [0x016B46, 0x01BC9B], - [0x01BC9D, 0x01CF4F], + [0x01BC9D, 0x01CBFF], + [0x01CCF0, 0x01CCFF], + [0x01CEB4, 0x01CF4F], [0x01CFC4, 0x01CFFF], [0x01D0F6, 0x01D0FF], [0x01D127, 0x01D128], @@ -417,16 +420,17 @@ const nonMatchSymbols = buildString({ [0x01F85A, 0x01F85F], [0x01F888, 0x01F88F], [0x01F8AE, 0x01F8AF], - [0x01F8B2, 0x01F8FF], + [0x01F8BC, 0x01F8BF], + [0x01F8C2, 0x01F8FF], [0x01FA54, 0x01FA5F], [0x01FA6E, 0x01FA6F], [0x01FA7D, 0x01FA7F], - [0x01FA89, 0x01FA8F], - [0x01FAC6, 0x01FACD], - [0x01FADC, 0x01FADF], - [0x01FAE9, 0x01FAEF], + [0x01FA8A, 0x01FA8E], + [0x01FAC7, 0x01FACD], + [0x01FADD, 0x01FADE], + [0x01FAEA, 0x01FAEF], [0x01FAF9, 0x01FAFF], - [0x01FBCB, 0x10FFFF] + [0x01FBF0, 0x10FFFF] ] }); testPropertyEscapes( diff --git a/test/built-ins/RegExp/property-escapes/generated/General_Category_-_Paragraph_Separator.js b/test/built-ins/RegExp/property-escapes/generated/General_Category_-_Paragraph_Separator.js index 0da1c303fbd..c22451afe15 100644 --- a/test/built-ins/RegExp/property-escapes/generated/General_Category_-_Paragraph_Separator.js +++ b/test/built-ins/RegExp/property-escapes/generated/General_Category_-_Paragraph_Separator.js @@ -7,7 +7,7 @@ description: > Unicode property escapes for `General_Category=Paragraph_Separator` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.1.0 + Unicode v16.0.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/property-escapes/generated/General_Category_-_Private_Use.js b/test/built-ins/RegExp/property-escapes/generated/General_Category_-_Private_Use.js index 6df3b85aaf7..3b8cab56efc 100644 --- a/test/built-ins/RegExp/property-escapes/generated/General_Category_-_Private_Use.js +++ b/test/built-ins/RegExp/property-escapes/generated/General_Category_-_Private_Use.js @@ -7,7 +7,7 @@ description: > Unicode property escapes for `General_Category=Private_Use` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.1.0 + Unicode v16.0.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/property-escapes/generated/General_Category_-_Punctuation.js b/test/built-ins/RegExp/property-escapes/generated/General_Category_-_Punctuation.js index f2f48169c8f..b9217a2168d 100644 --- a/test/built-ins/RegExp/property-escapes/generated/General_Category_-_Punctuation.js +++ b/test/built-ins/RegExp/property-escapes/generated/General_Category_-_Punctuation.js @@ -7,7 +7,7 @@ description: > Unicode property escapes for `General_Category=Punctuation` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.1.0 + Unicode v16.0.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] @@ -68,6 +68,7 @@ const matchSymbols = buildString({ 0x01091F, 0x01093F, 0x010A7F, + 0x010D6E, 0x010EAD, 0x0111CD, 0x0111DB, @@ -77,11 +78,13 @@ const matchSymbols = buildString({ 0x0116B9, 0x01183B, 0x0119E2, + 0x011BE1, 0x011FFF, 0x016AF5, 0x016B44, 0x016FE2, - 0x01BC9F + 0x01BC9F, + 0x01E5FF ], ranges: [ [0x000021, 0x000023], @@ -119,8 +122,9 @@ const matchSymbols = buildString({ [0x001A1E, 0x001A1F], [0x001AA0, 0x001AA6], [0x001AA8, 0x001AAD], + [0x001B4E, 0x001B4F], [0x001B5A, 0x001B60], - [0x001B7D, 0x001B7E], + [0x001B7D, 0x001B7F], [0x001BFC, 0x001BFF], [0x001C3B, 0x001C3F], [0x001C7E, 0x001C7F], @@ -186,6 +190,8 @@ const matchSymbols = buildString({ [0x0111C5, 0x0111C8], [0x0111DD, 0x0111DF], [0x011238, 0x01123D], + [0x0113D4, 0x0113D5], + [0x0113D7, 0x0113D8], [0x01144B, 0x01144F], [0x01145A, 0x01145B], [0x0115C1, 0x0115D7], @@ -205,6 +211,7 @@ const matchSymbols = buildString({ [0x012FF1, 0x012FF2], [0x016A6E, 0x016A6F], [0x016B37, 0x016B3B], + [0x016D6D, 0x016D6F], [0x016E97, 0x016E9A], [0x01DA87, 0x01DA8B], [0x01E95E, 0x01E95F] @@ -283,6 +290,7 @@ const nonMatchSymbols = buildString({ 0x00FF5E, 0x0110BD, 0x0111DC, + 0x0113D6, 0x01145C, 0x011A9D ], @@ -343,9 +351,10 @@ const nonMatchSymbols = buildString({ [0x00180B, 0x001943], [0x001946, 0x001A1D], [0x001A20, 0x001A9F], - [0x001AAE, 0x001B59], + [0x001AAE, 0x001B4D], + [0x001B50, 0x001B59], [0x001B61, 0x001B7C], - [0x001B7F, 0x001BFB], + [0x001B80, 0x001BFB], [0x001C00, 0x001C3A], [0x001C40, 0x001C7D], [0x001C80, 0x001CBF], @@ -411,7 +420,8 @@ const nonMatchSymbols = buildString({ [0x010A80, 0x010AEF], [0x010AF7, 0x010B38], [0x010B40, 0x010B98], - [0x010B9D, 0x010EAC], + [0x010B9D, 0x010D6D], + [0x010D6F, 0x010EAC], [0x010EAE, 0x010F54], [0x010F5A, 0x010F85], [0x010F8A, 0x011046], @@ -423,7 +433,8 @@ const nonMatchSymbols = buildString({ [0x0111CE, 0x0111DA], [0x0111E0, 0x011237], [0x01123E, 0x0112A8], - [0x0112AA, 0x01144A], + [0x0112AA, 0x0113D3], + [0x0113D9, 0x01144A], [0x011450, 0x011459], [0x01145E, 0x0114C5], [0x0114C7, 0x0115C0], @@ -437,7 +448,8 @@ const nonMatchSymbols = buildString({ [0x0119E3, 0x011A3E], [0x011A47, 0x011A99], [0x011AA3, 0x011AFF], - [0x011B0A, 0x011C40], + [0x011B0A, 0x011BE0], + [0x011BE2, 0x011C40], [0x011C46, 0x011C6F], [0x011C72, 0x011EF6], [0x011EF9, 0x011F42], @@ -448,11 +460,13 @@ const nonMatchSymbols = buildString({ [0x016A70, 0x016AF4], [0x016AF6, 0x016B36], [0x016B3C, 0x016B43], - [0x016B45, 0x016E96], + [0x016B45, 0x016D6C], + [0x016D70, 0x016E96], [0x016E9B, 0x016FE1], [0x016FE3, 0x01BC9E], [0x01BCA0, 0x01DA86], - [0x01DA8C, 0x01E95D], + [0x01DA8C, 0x01E5FE], + [0x01E600, 0x01E95D], [0x01E960, 0x10FFFF] ] }); diff --git a/test/built-ins/RegExp/property-escapes/generated/General_Category_-_Separator.js b/test/built-ins/RegExp/property-escapes/generated/General_Category_-_Separator.js index 5df2f6cacaf..38b37cce66b 100644 --- a/test/built-ins/RegExp/property-escapes/generated/General_Category_-_Separator.js +++ b/test/built-ins/RegExp/property-escapes/generated/General_Category_-_Separator.js @@ -7,7 +7,7 @@ description: > Unicode property escapes for `General_Category=Separator` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.1.0 + Unicode v16.0.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/property-escapes/generated/General_Category_-_Space_Separator.js b/test/built-ins/RegExp/property-escapes/generated/General_Category_-_Space_Separator.js index 9d7a20d1f04..2a747c6007b 100644 --- a/test/built-ins/RegExp/property-escapes/generated/General_Category_-_Space_Separator.js +++ b/test/built-ins/RegExp/property-escapes/generated/General_Category_-_Space_Separator.js @@ -7,7 +7,7 @@ description: > Unicode property escapes for `General_Category=Space_Separator` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.1.0 + Unicode v16.0.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/property-escapes/generated/General_Category_-_Spacing_Mark.js b/test/built-ins/RegExp/property-escapes/generated/General_Category_-_Spacing_Mark.js index 403f9dfcbcc..b0953567722 100644 --- a/test/built-ins/RegExp/property-escapes/generated/General_Category_-_Spacing_Mark.js +++ b/test/built-ins/RegExp/property-escapes/generated/General_Category_-_Spacing_Mark.js @@ -7,7 +7,7 @@ description: > Unicode property escapes for `General_Category=Spacing_Mark` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.1.0 + Unicode v16.0.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] @@ -64,6 +64,9 @@ const matchSymbols = buildString({ 0x0111CE, 0x011235, 0x011357, + 0x0113C2, + 0x0113C5, + 0x0113CF, 0x011445, 0x0114B9, 0x0114C1, @@ -71,6 +74,7 @@ const matchSymbols = buildString({ 0x01163E, 0x0116AC, 0x0116B6, + 0x01171E, 0x011726, 0x011838, 0x01193D, @@ -174,6 +178,9 @@ const matchSymbols = buildString({ [0x011347, 0x011348], [0x01134B, 0x01134D], [0x011362, 0x011363], + [0x0113B8, 0x0113BA], + [0x0113C7, 0x0113CA], + [0x0113CC, 0x0113CD], [0x011435, 0x011437], [0x011440, 0x011441], [0x0114B0, 0x0114B2], @@ -195,6 +202,7 @@ const matchSymbols = buildString({ [0x011EF5, 0x011EF6], [0x011F34, 0x011F35], [0x011F3E, 0x011F3F], + [0x01612A, 0x01612C], [0x016F51, 0x016F87], [0x016FF0, 0x016FF1], [0x01D165, 0x01D166], @@ -256,9 +264,13 @@ const nonMatchSymbols = buildString({ 0x011001, 0x011234, 0x011340, + 0x0113C6, + 0x0113CB, + 0x0113CE, 0x0114BA, 0x01163D, 0x0116AD, + 0x01171F, 0x011936, 0x011941, 0x011D95, @@ -379,7 +391,10 @@ const nonMatchSymbols = buildString({ [0x011349, 0x01134A], [0x01134E, 0x011356], [0x011358, 0x011361], - [0x011364, 0x011434], + [0x011364, 0x0113B7], + [0x0113BB, 0x0113C1], + [0x0113C3, 0x0113C4], + [0x0113D0, 0x011434], [0x011438, 0x01143F], [0x011442, 0x011444], [0x011446, 0x0114AF], @@ -392,7 +407,7 @@ const nonMatchSymbols = buildString({ [0x011633, 0x01163A], [0x01163F, 0x0116AB], [0x0116B0, 0x0116B5], - [0x0116B7, 0x01171F], + [0x0116B7, 0x01171D], [0x011722, 0x011725], [0x011727, 0x01182B], [0x01182F, 0x011837], @@ -416,7 +431,8 @@ const nonMatchSymbols = buildString({ [0x011EF7, 0x011F02], [0x011F04, 0x011F33], [0x011F36, 0x011F3D], - [0x011F42, 0x016F50], + [0x011F42, 0x016129], + [0x01612D, 0x016F50], [0x016F88, 0x016FEF], [0x016FF2, 0x01D164], [0x01D167, 0x01D16C], diff --git a/test/built-ins/RegExp/property-escapes/generated/General_Category_-_Surrogate.js b/test/built-ins/RegExp/property-escapes/generated/General_Category_-_Surrogate.js index 7d0c0dc8569..b0fac0ea164 100644 --- a/test/built-ins/RegExp/property-escapes/generated/General_Category_-_Surrogate.js +++ b/test/built-ins/RegExp/property-escapes/generated/General_Category_-_Surrogate.js @@ -7,7 +7,7 @@ description: > Unicode property escapes for `General_Category=Surrogate` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.1.0 + Unicode v16.0.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/property-escapes/generated/General_Category_-_Symbol.js b/test/built-ins/RegExp/property-escapes/generated/General_Category_-_Symbol.js index 23e3195b8cf..eb06ef425a6 100644 --- a/test/built-ins/RegExp/property-escapes/generated/General_Category_-_Symbol.js +++ b/test/built-ins/RegExp/property-escapes/generated/General_Category_-_Symbol.js @@ -7,7 +7,7 @@ description: > Unicode property escapes for `General_Category=Symbol` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.1.0 + Unicode v16.0.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] @@ -144,7 +144,7 @@ const matchSymbols = buildString({ [0x00218A, 0x00218B], [0x002190, 0x002307], [0x00230C, 0x002328], - [0x00232B, 0x002426], + [0x00232B, 0x002429], [0x002440, 0x00244A], [0x00249C, 0x0024E9], [0x002500, 0x002767], @@ -168,7 +168,7 @@ const matchSymbols = buildString({ [0x00309B, 0x00309C], [0x003190, 0x003191], [0x003196, 0x00319F], - [0x0031C0, 0x0031E3], + [0x0031C0, 0x0031E5], [0x003200, 0x00321E], [0x00322A, 0x003247], [0x003260, 0x00327F], @@ -197,8 +197,11 @@ const matchSymbols = buildString({ [0x010190, 0x01019C], [0x0101D0, 0x0101FC], [0x010877, 0x010878], + [0x010D8E, 0x010D8F], [0x011FD5, 0x011FF1], [0x016B3C, 0x016B3F], + [0x01CC00, 0x01CCEF], + [0x01CD00, 0x01CEB3], [0x01CF50, 0x01CFC3], [0x01D000, 0x01D0F5], [0x01D100, 0x01D126], @@ -238,18 +241,18 @@ const matchSymbols = buildString({ [0x01F850, 0x01F859], [0x01F860, 0x01F887], [0x01F890, 0x01F8AD], - [0x01F8B0, 0x01F8B1], + [0x01F8B0, 0x01F8BB], + [0x01F8C0, 0x01F8C1], [0x01F900, 0x01FA53], [0x01FA60, 0x01FA6D], [0x01FA70, 0x01FA7C], - [0x01FA80, 0x01FA88], - [0x01FA90, 0x01FABD], - [0x01FABF, 0x01FAC5], - [0x01FACE, 0x01FADB], - [0x01FAE0, 0x01FAE8], + [0x01FA80, 0x01FA89], + [0x01FA8F, 0x01FAC6], + [0x01FACE, 0x01FADC], + [0x01FADF, 0x01FAE9], [0x01FAF0, 0x01FAF8], [0x01FB00, 0x01FB92], - [0x01FB94, 0x01FBCA] + [0x01FB94, 0x01FBEF] ] }); testPropertyEscapes( @@ -315,7 +318,6 @@ const nonMatchSymbols = buildString({ 0x01DA84, 0x01F0C0, 0x01F0D0, - 0x01FABE, 0x01FB93 ], ranges: [ @@ -392,7 +394,7 @@ const nonMatchSymbols = buildString({ [0x00218C, 0x00218F], [0x002308, 0x00230B], [0x002329, 0x00232A], - [0x002427, 0x00243F], + [0x00242A, 0x00243F], [0x00244B, 0x00249B], [0x0024EA, 0x0024FF], [0x002768, 0x002793], @@ -416,7 +418,7 @@ const nonMatchSymbols = buildString({ [0x00309D, 0x00318F], [0x003192, 0x003195], [0x0031A0, 0x0031BF], - [0x0031E4, 0x0031EE], + [0x0031E6, 0x0031EE], [0x0031F0, 0x0031FF], [0x00321F, 0x003229], [0x003248, 0x00324F], @@ -455,12 +457,15 @@ const nonMatchSymbols = buildString({ [0x0101A1, 0x0101CF], [0x0101FD, 0x010876], [0x010879, 0x010AC7], - [0x010AC9, 0x01173E], + [0x010AC9, 0x010D8D], + [0x010D90, 0x01173E], [0x011740, 0x011FD4], [0x011FF2, 0x016B3B], [0x016B40, 0x016B44], [0x016B46, 0x01BC9B], - [0x01BC9D, 0x01CF4F], + [0x01BC9D, 0x01CBFF], + [0x01CCF0, 0x01CCFF], + [0x01CEB4, 0x01CF4F], [0x01CFC4, 0x01CFFF], [0x01D0F6, 0x01D0FF], [0x01D127, 0x01D128], @@ -513,16 +518,17 @@ const nonMatchSymbols = buildString({ [0x01F85A, 0x01F85F], [0x01F888, 0x01F88F], [0x01F8AE, 0x01F8AF], - [0x01F8B2, 0x01F8FF], + [0x01F8BC, 0x01F8BF], + [0x01F8C2, 0x01F8FF], [0x01FA54, 0x01FA5F], [0x01FA6E, 0x01FA6F], [0x01FA7D, 0x01FA7F], - [0x01FA89, 0x01FA8F], - [0x01FAC6, 0x01FACD], - [0x01FADC, 0x01FADF], - [0x01FAE9, 0x01FAEF], + [0x01FA8A, 0x01FA8E], + [0x01FAC7, 0x01FACD], + [0x01FADD, 0x01FADE], + [0x01FAEA, 0x01FAEF], [0x01FAF9, 0x01FAFF], - [0x01FBCB, 0x10FFFF] + [0x01FBF0, 0x10FFFF] ] }); testPropertyEscapes( diff --git a/test/built-ins/RegExp/property-escapes/generated/General_Category_-_Titlecase_Letter.js b/test/built-ins/RegExp/property-escapes/generated/General_Category_-_Titlecase_Letter.js index 382cbab96b1..8ffad22445d 100644 --- a/test/built-ins/RegExp/property-escapes/generated/General_Category_-_Titlecase_Letter.js +++ b/test/built-ins/RegExp/property-escapes/generated/General_Category_-_Titlecase_Letter.js @@ -7,7 +7,7 @@ description: > Unicode property escapes for `General_Category=Titlecase_Letter` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.1.0 + Unicode v16.0.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/property-escapes/generated/General_Category_-_Unassigned.js b/test/built-ins/RegExp/property-escapes/generated/General_Category_-_Unassigned.js index 5ba402045c5..301e65f69fb 100644 --- a/test/built-ins/RegExp/property-escapes/generated/General_Category_-_Unassigned.js +++ b/test/built-ins/RegExp/property-escapes/generated/General_Category_-_Unassigned.js @@ -7,7 +7,7 @@ description: > Unicode property escapes for `General_Category=Unassigned` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.1.0 + Unicode v16.0.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] @@ -104,7 +104,7 @@ const matchSymbols = buildString({ 0x001771, 0x00191F, 0x001A5F, - 0x001B7F, + 0x001B4D, 0x001F58, 0x001F5A, 0x001F5C, @@ -183,6 +183,13 @@ const matchSymbols = buildString({ 0x011331, 0x011334, 0x01133A, + 0x01138A, + 0x01138F, + 0x0113B6, + 0x0113C1, + 0x0113C6, + 0x0113CB, + 0x0113D6, 0x01145C, 0x011914, 0x011917, @@ -256,7 +263,6 @@ const matchSymbols = buildString({ 0x01EEAA, 0x01F0C0, 0x01F0D0, - 0x01FABE, 0x01FB93 ], ranges: [ @@ -273,7 +279,7 @@ const matchSymbols = buildString({ [0x00082E, 0x00082F], [0x00085C, 0x00085D], [0x00086B, 0x00086F], - [0x000892, 0x000897], + [0x000892, 0x000896], [0x00098D, 0x00098E], [0x000991, 0x000992], [0x0009B3, 0x0009B5], @@ -385,11 +391,10 @@ const matchSymbols = buildString({ [0x001A9A, 0x001A9F], [0x001AAE, 0x001AAF], [0x001ACF, 0x001AFF], - [0x001B4D, 0x001B4F], [0x001BF4, 0x001BFB], [0x001C38, 0x001C3A], [0x001C4A, 0x001C4C], - [0x001C89, 0x001C8F], + [0x001C8B, 0x001C8F], [0x001CBB, 0x001CBC], [0x001CC8, 0x001CCF], [0x001CFB, 0x001CFF], @@ -405,7 +410,7 @@ const matchSymbols = buildString({ [0x0020C1, 0x0020CF], [0x0020F1, 0x0020FF], [0x00218C, 0x00218F], - [0x002427, 0x00243F], + [0x00242A, 0x00243F], [0x00244B, 0x00245F], [0x002B74, 0x002B75], [0x002CF4, 0x002CF8], @@ -419,13 +424,13 @@ const matchSymbols = buildString({ [0x002FD6, 0x002FEF], [0x003097, 0x003098], [0x003100, 0x003104], - [0x0031E4, 0x0031EE], + [0x0031E6, 0x0031EE], [0x00A48D, 0x00A48F], [0x00A4C7, 0x00A4CF], [0x00A62C, 0x00A63F], [0x00A6F8, 0x00A6FF], - [0x00A7CB, 0x00A7CF], - [0x00A7DA, 0x00A7F1], + [0x00A7CE, 0x00A7CF], + [0x00A7DD, 0x00A7F1], [0x00A82D, 0x00A82F], [0x00A83A, 0x00A83F], [0x00A878, 0x00A87F], @@ -488,7 +493,8 @@ const matchSymbols = buildString({ [0x0104FC, 0x0104FF], [0x010528, 0x01052F], [0x010564, 0x01056E], - [0x0105BD, 0x0105FF], + [0x0105BD, 0x0105BF], + [0x0105F4, 0x0105FF], [0x010737, 0x01073F], [0x010756, 0x01075F], [0x010768, 0x01077F], @@ -522,9 +528,13 @@ const matchSymbols = buildString({ [0x010CB3, 0x010CBF], [0x010CF3, 0x010CF9], [0x010D28, 0x010D2F], - [0x010D3A, 0x010E5F], + [0x010D3A, 0x010D3F], + [0x010D66, 0x010D68], + [0x010D86, 0x010D8D], + [0x010D90, 0x010E5F], [0x010EAE, 0x010EAF], - [0x010EB2, 0x010EFC], + [0x010EB2, 0x010EC1], + [0x010EC5, 0x010EFB], [0x010F28, 0x010F2F], [0x010F5A, 0x010F6F], [0x010F8A, 0x010FAF], @@ -552,7 +562,11 @@ const matchSymbols = buildString({ [0x011358, 0x01135C], [0x011364, 0x011365], [0x01136D, 0x01136F], - [0x011375, 0x0113FF], + [0x011375, 0x01137F], + [0x01138C, 0x01138D], + [0x0113C3, 0x0113C4], + [0x0113D9, 0x0113E0], + [0x0113E3, 0x0113FF], [0x011462, 0x01147F], [0x0114C8, 0x0114CF], [0x0114DA, 0x01157F], @@ -562,7 +576,8 @@ const matchSymbols = buildString({ [0x01165A, 0x01165F], [0x01166D, 0x01167F], [0x0116BA, 0x0116BF], - [0x0116CA, 0x0116FF], + [0x0116CA, 0x0116CF], + [0x0116E4, 0x0116FF], [0x01171B, 0x01171C], [0x01172C, 0x01172F], [0x011747, 0x0117FF], @@ -579,7 +594,9 @@ const matchSymbols = buildString({ [0x011A48, 0x011A4F], [0x011AA3, 0x011AAF], [0x011AF9, 0x011AFF], - [0x011B0A, 0x011BFF], + [0x011B0A, 0x011BBF], + [0x011BE2, 0x011BEF], + [0x011BFA, 0x011BFF], [0x011C46, 0x011C4F], [0x011C6D, 0x011C6F], [0x011C90, 0x011C91], @@ -591,15 +608,17 @@ const matchSymbols = buildString({ [0x011DAA, 0x011EDF], [0x011EF9, 0x011EFF], [0x011F3B, 0x011F3D], - [0x011F5A, 0x011FAF], + [0x011F5B, 0x011FAF], [0x011FB1, 0x011FBF], [0x011FF2, 0x011FFE], [0x01239A, 0x0123FF], [0x012475, 0x01247F], [0x012544, 0x012F8F], [0x012FF3, 0x012FFF], - [0x013456, 0x0143FF], - [0x014647, 0x0167FF], + [0x013456, 0x01345F], + [0x0143FB, 0x0143FF], + [0x014647, 0x0160FF], + [0x01613A, 0x0167FF], [0x016A39, 0x016A3F], [0x016A6A, 0x016A6D], [0x016ACA, 0x016ACF], @@ -607,7 +626,8 @@ const matchSymbols = buildString({ [0x016AF6, 0x016AFF], [0x016B46, 0x016B4F], [0x016B78, 0x016B7C], - [0x016B90, 0x016E3F], + [0x016B90, 0x016D3F], + [0x016D7A, 0x016E3F], [0x016E9B, 0x016EFF], [0x016F4B, 0x016F4E], [0x016F88, 0x016F8E], @@ -615,7 +635,7 @@ const matchSymbols = buildString({ [0x016FE5, 0x016FEF], [0x016FF2, 0x016FFF], [0x0187F8, 0x0187FF], - [0x018CD6, 0x018CFF], + [0x018CD6, 0x018CFE], [0x018D09, 0x01AFEF], [0x01B123, 0x01B131], [0x01B133, 0x01B14F], @@ -627,7 +647,9 @@ const matchSymbols = buildString({ [0x01BC7D, 0x01BC7F], [0x01BC89, 0x01BC8F], [0x01BC9A, 0x01BC9B], - [0x01BCA4, 0x01CEFF], + [0x01BCA4, 0x01CBFF], + [0x01CCFA, 0x01CCFF], + [0x01CEB4, 0x01CEFF], [0x01CF2E, 0x01CF2F], [0x01CF47, 0x01CF4F], [0x01CFC4, 0x01CFFF], @@ -661,7 +683,9 @@ const matchSymbols = buildString({ [0x01E2AF, 0x01E2BF], [0x01E2FA, 0x01E2FE], [0x01E300, 0x01E4CF], - [0x01E4FA, 0x01E7DF], + [0x01E4FA, 0x01E5CF], + [0x01E5FB, 0x01E5FE], + [0x01E600, 0x01E7DF], [0x01E8C5, 0x01E8C6], [0x01E8D7, 0x01E8FF], [0x01E94C, 0x01E94F], @@ -699,16 +723,16 @@ const matchSymbols = buildString({ [0x01F85A, 0x01F85F], [0x01F888, 0x01F88F], [0x01F8AE, 0x01F8AF], - [0x01F8B2, 0x01F8FF], + [0x01F8BC, 0x01F8BF], + [0x01F8C2, 0x01F8FF], [0x01FA54, 0x01FA5F], [0x01FA6E, 0x01FA6F], [0x01FA7D, 0x01FA7F], - [0x01FA89, 0x01FA8F], - [0x01FAC6, 0x01FACD], - [0x01FADC, 0x01FADF], - [0x01FAE9, 0x01FAEF], + [0x01FA8A, 0x01FA8E], + [0x01FAC7, 0x01FACD], + [0x01FADD, 0x01FADE], + [0x01FAEA, 0x01FAEF], [0x01FAF9, 0x01FAFF], - [0x01FBCB, 0x01FBEF], [0x01FBFA, 0x01FFFF], [0x02A6E0, 0x02A6FF], [0x02B73A, 0x02B73F], @@ -799,6 +823,10 @@ const nonMatchSymbols = buildString({ 0x011288, 0x011350, 0x011357, + 0x01138B, + 0x01138E, + 0x0113C2, + 0x0113C5, 0x011909, 0x011D3A, 0x011FB0, @@ -809,6 +837,7 @@ const nonMatchSymbols = buildString({ 0x01D546, 0x01E08F, 0x01E2FF, + 0x01E5FF, 0x01EE24, 0x01EE27, 0x01EE39, @@ -851,7 +880,7 @@ const nonMatchSymbols = buildString({ [0x000860, 0x00086A], [0x000870, 0x00088E], [0x000890, 0x000891], - [0x000898, 0x000983], + [0x000897, 0x000983], [0x000985, 0x00098C], [0x00098F, 0x000990], [0x000993, 0x0009A8], @@ -1022,11 +1051,10 @@ const nonMatchSymbols = buildString({ [0x001AA0, 0x001AAD], [0x001AB0, 0x001ACE], [0x001B00, 0x001B4C], - [0x001B50, 0x001B7E], - [0x001B80, 0x001BF3], + [0x001B4E, 0x001BF3], [0x001BFC, 0x001C37], [0x001C3B, 0x001C49], - [0x001C4D, 0x001C88], + [0x001C4D, 0x001C8A], [0x001C90, 0x001CBA], [0x001CBD, 0x001CC7], [0x001CD0, 0x001CFA], @@ -1050,7 +1078,7 @@ const nonMatchSymbols = buildString({ [0x0020A0, 0x0020C0], [0x0020D0, 0x0020F0], [0x002100, 0x00218B], - [0x002190, 0x002426], + [0x002190, 0x002429], [0x002440, 0x00244A], [0x002460, 0x002B73], [0x002B76, 0x002B95], @@ -1076,15 +1104,15 @@ const nonMatchSymbols = buildString({ [0x003099, 0x0030FF], [0x003105, 0x00312F], [0x003131, 0x00318E], - [0x003190, 0x0031E3], + [0x003190, 0x0031E5], [0x0031EF, 0x00321E], [0x003220, 0x00A48C], [0x00A490, 0x00A4C6], [0x00A4D0, 0x00A62B], [0x00A640, 0x00A6F7], - [0x00A700, 0x00A7CA], + [0x00A700, 0x00A7CD], [0x00A7D0, 0x00A7D1], - [0x00A7D5, 0x00A7D9], + [0x00A7D5, 0x00A7DC], [0x00A7F2, 0x00A82C], [0x00A830, 0x00A839], [0x00A840, 0x00A877], @@ -1172,6 +1200,7 @@ const nonMatchSymbols = buildString({ [0x0105A3, 0x0105B1], [0x0105B3, 0x0105B9], [0x0105BB, 0x0105BC], + [0x0105C0, 0x0105F3], [0x010600, 0x010736], [0x010740, 0x010755], [0x010760, 0x010767], @@ -1212,11 +1241,15 @@ const nonMatchSymbols = buildString({ [0x010CC0, 0x010CF2], [0x010CFA, 0x010D27], [0x010D30, 0x010D39], + [0x010D40, 0x010D65], + [0x010D69, 0x010D85], + [0x010D8E, 0x010D8F], [0x010E60, 0x010E7E], [0x010E80, 0x010EA9], [0x010EAB, 0x010EAD], [0x010EB0, 0x010EB1], - [0x010EFD, 0x010F27], + [0x010EC2, 0x010EC4], + [0x010EFC, 0x010F27], [0x010F30, 0x010F59], [0x010F70, 0x010F89], [0x010FB0, 0x010FCB], @@ -1252,6 +1285,13 @@ const nonMatchSymbols = buildString({ [0x01135D, 0x011363], [0x011366, 0x01136C], [0x011370, 0x011374], + [0x011380, 0x011389], + [0x011390, 0x0113B5], + [0x0113B7, 0x0113C0], + [0x0113C7, 0x0113CA], + [0x0113CC, 0x0113D5], + [0x0113D7, 0x0113D8], + [0x0113E1, 0x0113E2], [0x011400, 0x01145B], [0x01145D, 0x011461], [0x011480, 0x0114C7], @@ -1263,6 +1303,7 @@ const nonMatchSymbols = buildString({ [0x011660, 0x01166C], [0x011680, 0x0116B9], [0x0116C0, 0x0116C9], + [0x0116D0, 0x0116E3], [0x011700, 0x01171A], [0x01171D, 0x01172B], [0x011730, 0x011746], @@ -1282,6 +1323,8 @@ const nonMatchSymbols = buildString({ [0x011A50, 0x011AA2], [0x011AB0, 0x011AF8], [0x011B00, 0x011B09], + [0x011BC0, 0x011BE1], + [0x011BF0, 0x011BF9], [0x011C00, 0x011C08], [0x011C0A, 0x011C36], [0x011C38, 0x011C45], @@ -1304,7 +1347,7 @@ const nonMatchSymbols = buildString({ [0x011EE0, 0x011EF8], [0x011F00, 0x011F10], [0x011F12, 0x011F3A], - [0x011F3E, 0x011F59], + [0x011F3E, 0x011F5A], [0x011FC0, 0x011FF1], [0x011FFF, 0x012399], [0x012400, 0x01246E], @@ -1312,7 +1355,9 @@ const nonMatchSymbols = buildString({ [0x012480, 0x012543], [0x012F90, 0x012FF2], [0x013000, 0x013455], + [0x013460, 0x0143FA], [0x014400, 0x014646], + [0x016100, 0x016139], [0x016800, 0x016A38], [0x016A40, 0x016A5E], [0x016A60, 0x016A69], @@ -1325,6 +1370,7 @@ const nonMatchSymbols = buildString({ [0x016B5B, 0x016B61], [0x016B63, 0x016B77], [0x016B7D, 0x016B8F], + [0x016D40, 0x016D79], [0x016E40, 0x016E9A], [0x016F00, 0x016F4A], [0x016F4F, 0x016F87], @@ -1333,7 +1379,7 @@ const nonMatchSymbols = buildString({ [0x016FF0, 0x016FF1], [0x017000, 0x0187F7], [0x018800, 0x018CD5], - [0x018D00, 0x018D08], + [0x018CFF, 0x018D08], [0x01AFF0, 0x01AFF3], [0x01AFF5, 0x01AFFB], [0x01AFFD, 0x01AFFE], @@ -1346,6 +1392,8 @@ const nonMatchSymbols = buildString({ [0x01BC80, 0x01BC88], [0x01BC90, 0x01BC99], [0x01BC9C, 0x01BCA3], + [0x01CC00, 0x01CCF9], + [0x01CD00, 0x01CEB3], [0x01CF00, 0x01CF2D], [0x01CF30, 0x01CF46], [0x01CF50, 0x01CFC3], @@ -1392,6 +1440,7 @@ const nonMatchSymbols = buildString({ [0x01E290, 0x01E2AE], [0x01E2C0, 0x01E2F9], [0x01E4D0, 0x01E4F9], + [0x01E5D0, 0x01E5FA], [0x01E7E0, 0x01E7E6], [0x01E7E8, 0x01E7EB], [0x01E7ED, 0x01E7EE], @@ -1444,19 +1493,18 @@ const nonMatchSymbols = buildString({ [0x01F850, 0x01F859], [0x01F860, 0x01F887], [0x01F890, 0x01F8AD], - [0x01F8B0, 0x01F8B1], + [0x01F8B0, 0x01F8BB], + [0x01F8C0, 0x01F8C1], [0x01F900, 0x01FA53], [0x01FA60, 0x01FA6D], [0x01FA70, 0x01FA7C], - [0x01FA80, 0x01FA88], - [0x01FA90, 0x01FABD], - [0x01FABF, 0x01FAC5], - [0x01FACE, 0x01FADB], - [0x01FAE0, 0x01FAE8], + [0x01FA80, 0x01FA89], + [0x01FA8F, 0x01FAC6], + [0x01FACE, 0x01FADC], + [0x01FADF, 0x01FAE9], [0x01FAF0, 0x01FAF8], [0x01FB00, 0x01FB92], - [0x01FB94, 0x01FBCA], - [0x01FBF0, 0x01FBF9], + [0x01FB94, 0x01FBF9], [0x020000, 0x02A6DF], [0x02A700, 0x02B739], [0x02B740, 0x02B81D], diff --git a/test/built-ins/RegExp/property-escapes/generated/General_Category_-_Uppercase_Letter.js b/test/built-ins/RegExp/property-escapes/generated/General_Category_-_Uppercase_Letter.js index dbe63b0ff54..e9807d6bf0b 100644 --- a/test/built-ins/RegExp/property-escapes/generated/General_Category_-_Uppercase_Letter.js +++ b/test/built-ins/RegExp/property-escapes/generated/General_Category_-_Uppercase_Letter.js @@ -7,7 +7,7 @@ description: > Unicode property escapes for `General_Category=Uppercase_Letter` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.1.0 + Unicode v16.0.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] @@ -260,6 +260,7 @@ const matchSymbols = buildString({ 0x00052E, 0x0010C7, 0x0010CD, + 0x001C89, 0x001E00, 0x001E02, 0x001E04, @@ -560,6 +561,8 @@ const matchSymbols = buildString({ 0x00A7D0, 0x00A7D6, 0x00A7D8, + 0x00A7DA, + 0x00A7DC, 0x00A7F5, 0x01D49C, 0x01D4A2, @@ -625,6 +628,7 @@ const matchSymbols = buildString({ [0x00A7AA, 0x00A7AE], [0x00A7B0, 0x00A7B4], [0x00A7C4, 0x00A7C7], + [0x00A7CB, 0x00A7CC], [0x00FF21, 0x00FF3A], [0x010400, 0x010427], [0x0104B0, 0x0104D3], @@ -633,6 +637,7 @@ const matchSymbols = buildString({ [0x01058C, 0x010592], [0x010594, 0x010595], [0x010C80, 0x010CB2], + [0x010D50, 0x010D65], [0x0118A0, 0x0118BF], [0x016E40, 0x016E5F], [0x01D400, 0x01D419], @@ -1220,7 +1225,10 @@ const nonMatchSymbols = buildString({ 0x00A7C1, 0x00A7C3, 0x00A7C8, + 0x00A7CA, 0x00A7D7, + 0x00A7D9, + 0x00A7DB, 0x01057B, 0x01058B, 0x010593, @@ -1270,7 +1278,8 @@ const nonMatchSymbols = buildString({ [0x000557, 0x00109F], [0x0010C8, 0x0010CC], [0x0010CE, 0x00139F], - [0x0013F6, 0x001C8F], + [0x0013F6, 0x001C88], + [0x001C8A, 0x001C8F], [0x001CBB, 0x001CBC], [0x001CC0, 0x001DFF], [0x001E95, 0x001E9D], @@ -1312,16 +1321,17 @@ const nonMatchSymbols = buildString({ [0x00A787, 0x00A78A], [0x00A78E, 0x00A78F], [0x00A793, 0x00A795], - [0x00A7CA, 0x00A7CF], + [0x00A7CD, 0x00A7CF], [0x00A7D1, 0x00A7D5], - [0x00A7D9, 0x00A7F4], + [0x00A7DD, 0x00A7F4], [0x00A7F6, 0x00DBFF], [0x00E000, 0x00FF20], [0x00FF3B, 0x0103FF], [0x010428, 0x0104AF], [0x0104D4, 0x01056F], [0x010596, 0x010C7F], - [0x010CB3, 0x01189F], + [0x010CB3, 0x010D4F], + [0x010D66, 0x01189F], [0x0118C0, 0x016E3F], [0x016E60, 0x01D3FF], [0x01D41A, 0x01D433], diff --git a/test/built-ins/RegExp/property-escapes/generated/Grapheme_Base.js b/test/built-ins/RegExp/property-escapes/generated/Grapheme_Base.js index ff2d8dd90d4..c6e3ab3f94f 100644 --- a/test/built-ins/RegExp/property-escapes/generated/Grapheme_Base.js +++ b/test/built-ins/RegExp/property-escapes/generated/Grapheme_Base.js @@ -7,7 +7,7 @@ description: > Unicode property escapes for `Grapheme_Base` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.1.0 + Unicode v16.0.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] @@ -48,6 +48,7 @@ const matchSymbols = buildString({ 0x000BD0, 0x000C3D, 0x000C5D, + 0x000CC1, 0x000D3D, 0x000DBD, 0x000E84, @@ -64,14 +65,11 @@ const matchSymbols = buildString({ 0x0010CD, 0x001258, 0x0012C0, - 0x001715, 0x0017B6, 0x0018AA, 0x001940, 0x001A57, 0x001A61, - 0x001B3B, - 0x001BAA, 0x001BE7, 0x001BEE, 0x001CD3, @@ -84,6 +82,7 @@ const matchSymbols = buildString({ 0x002D2D, 0x00A673, 0x00A7D3, + 0x00A952, 0x00AA4D, 0x00AAB1, 0x00AAC0, @@ -99,11 +98,16 @@ const matchSymbols = buildString({ 0x011000, 0x011075, 0x01112C, - 0x011235, + 0x0111BF, 0x011288, 0x01133D, 0x01133F, 0x011350, + 0x01138B, + 0x01138E, + 0x0113B7, + 0x0113CA, + 0x0113D1, 0x011445, 0x01145D, 0x0114B9, @@ -112,12 +116,11 @@ const matchSymbols = buildString({ 0x0115BE, 0x01163E, 0x0116AC, - 0x0116B6, + 0x01171E, 0x011726, 0x011838, 0x01183B, 0x011909, - 0x01193D, 0x011A00, 0x011A50, 0x011A97, @@ -128,19 +131,18 @@ const matchSymbols = buildString({ 0x011D46, 0x011D96, 0x011D98, - 0x011F41, 0x011FB0, 0x016AF5, 0x01B132, 0x01B155, 0x01BC9C, 0x01BC9F, - 0x01D166, 0x01D245, 0x01D4A2, 0x01D4BB, 0x01D546, 0x01E2FF, + 0x01E5FF, 0x01E94B, 0x01EE24, 0x01EE27, @@ -270,10 +272,7 @@ const matchSymbols = buildString({ [0x000CAA, 0x000CB3], [0x000CB5, 0x000CB9], [0x000CBD, 0x000CBE], - [0x000CC0, 0x000CC1], [0x000CC3, 0x000CC4], - [0x000CC7, 0x000CC8], - [0x000CCA, 0x000CCB], [0x000CDD, 0x000CDE], [0x000CE0, 0x000CE1], [0x000CE6, 0x000CEF], @@ -349,7 +348,7 @@ const matchSymbols = buildString({ [0x0016A0, 0x0016F8], [0x001700, 0x001711], [0x00171F, 0x001731], - [0x001734, 0x001736], + [0x001735, 0x001736], [0x001740, 0x001751], [0x001760, 0x00176C], [0x00176E, 0x001770], @@ -384,19 +383,18 @@ const matchSymbols = buildString({ [0x001A90, 0x001A99], [0x001AA0, 0x001AAD], [0x001B04, 0x001B33], - [0x001B3D, 0x001B41], - [0x001B43, 0x001B4C], - [0x001B50, 0x001B6A], - [0x001B74, 0x001B7E], + [0x001B3E, 0x001B41], + [0x001B45, 0x001B4C], + [0x001B4E, 0x001B6A], + [0x001B74, 0x001B7F], [0x001B82, 0x001BA1], [0x001BA6, 0x001BA7], [0x001BAE, 0x001BE5], [0x001BEA, 0x001BEC], - [0x001BF2, 0x001BF3], [0x001BFC, 0x001C2B], [0x001C34, 0x001C35], [0x001C3B, 0x001C49], - [0x001C4D, 0x001C88], + [0x001C4D, 0x001C8A], [0x001C90, 0x001CBA], [0x001CBD, 0x001CC7], [0x001CE9, 0x001CEC], @@ -424,7 +422,7 @@ const matchSymbols = buildString({ [0x002090, 0x00209C], [0x0020A0, 0x0020C0], [0x002100, 0x00218B], - [0x002190, 0x002426], + [0x002190, 0x002429], [0x002440, 0x00244A], [0x002460, 0x002B73], [0x002B76, 0x002B95], @@ -452,7 +450,7 @@ const matchSymbols = buildString({ [0x00309B, 0x0030FF], [0x003105, 0x00312F], [0x003131, 0x00318E], - [0x003190, 0x0031E3], + [0x003190, 0x0031E5], [0x0031EF, 0x00321E], [0x003220, 0x00A48C], [0x00A490, 0x00A4C6], @@ -461,9 +459,9 @@ const matchSymbols = buildString({ [0x00A67E, 0x00A69D], [0x00A6A0, 0x00A6EF], [0x00A6F2, 0x00A6F7], - [0x00A700, 0x00A7CA], + [0x00A700, 0x00A7CD], [0x00A7D0, 0x00A7D1], - [0x00A7D5, 0x00A7D9], + [0x00A7D5, 0x00A7DC], [0x00A7F2, 0x00A801], [0x00A803, 0x00A805], [0x00A807, 0x00A80A], @@ -476,12 +474,12 @@ const matchSymbols = buildString({ [0x00A8F2, 0x00A8FE], [0x00A900, 0x00A925], [0x00A92E, 0x00A946], - [0x00A952, 0x00A953], [0x00A95F, 0x00A97C], [0x00A983, 0x00A9B2], [0x00A9B4, 0x00A9B5], [0x00A9BA, 0x00A9BB], - [0x00A9BE, 0x00A9CD], + [0x00A9BE, 0x00A9BF], + [0x00A9C1, 0x00A9CD], [0x00A9CF, 0x00A9D9], [0x00A9DE, 0x00A9E4], [0x00A9E6, 0x00A9FE], @@ -572,6 +570,7 @@ const matchSymbols = buildString({ [0x0105A3, 0x0105B1], [0x0105B3, 0x0105B9], [0x0105BB, 0x0105BC], + [0x0105C0, 0x0105F3], [0x010600, 0x010736], [0x010740, 0x010755], [0x010760, 0x010767], @@ -610,9 +609,13 @@ const matchSymbols = buildString({ [0x010CC0, 0x010CF2], [0x010CFA, 0x010D23], [0x010D30, 0x010D39], + [0x010D40, 0x010D65], + [0x010D6E, 0x010D85], + [0x010D8E, 0x010D8F], [0x010E60, 0x010E7E], [0x010E80, 0x010EA9], [0x010EB0, 0x010EB1], + [0x010EC2, 0x010EC4], [0x010F00, 0x010F27], [0x010F30, 0x010F45], [0x010F51, 0x010F59], @@ -635,7 +638,7 @@ const matchSymbols = buildString({ [0x011150, 0x011172], [0x011174, 0x011176], [0x011182, 0x0111B5], - [0x0111BF, 0x0111C8], + [0x0111C1, 0x0111C8], [0x0111CD, 0x0111CE], [0x0111D0, 0x0111DF], [0x0111E1, 0x0111F4], @@ -660,8 +663,14 @@ const matchSymbols = buildString({ [0x011335, 0x011339], [0x011341, 0x011344], [0x011347, 0x011348], - [0x01134B, 0x01134D], + [0x01134B, 0x01134C], [0x01135D, 0x011363], + [0x011380, 0x011389], + [0x011390, 0x0113B5], + [0x0113B9, 0x0113BA], + [0x0113CC, 0x0113CD], + [0x0113D3, 0x0113D5], + [0x0113D7, 0x0113D8], [0x011400, 0x011437], [0x011440, 0x011441], [0x011447, 0x01145B], @@ -684,6 +693,7 @@ const matchSymbols = buildString({ [0x0116AE, 0x0116AF], [0x0116B8, 0x0116B9], [0x0116C0, 0x0116C9], + [0x0116D0, 0x0116E3], [0x011700, 0x01171A], [0x011720, 0x011721], [0x011730, 0x011746], @@ -710,6 +720,8 @@ const matchSymbols = buildString({ [0x011A9A, 0x011AA2], [0x011AB0, 0x011AF8], [0x011B00, 0x011B09], + [0x011BC0, 0x011BE1], + [0x011BF0, 0x011BF9], [0x011C00, 0x011C08], [0x011C0A, 0x011C2F], [0x011C40, 0x011C45], @@ -738,7 +750,11 @@ const matchSymbols = buildString({ [0x012F90, 0x012FF2], [0x013000, 0x01342F], [0x013441, 0x013446], + [0x013460, 0x0143FA], [0x014400, 0x014646], + [0x016100, 0x01611D], + [0x01612A, 0x01612C], + [0x016130, 0x016139], [0x016800, 0x016A38], [0x016A40, 0x016A5E], [0x016A60, 0x016A69], @@ -751,15 +767,15 @@ const matchSymbols = buildString({ [0x016B5B, 0x016B61], [0x016B63, 0x016B77], [0x016B7D, 0x016B8F], + [0x016D40, 0x016D79], [0x016E40, 0x016E9A], [0x016F00, 0x016F4A], [0x016F50, 0x016F87], [0x016F93, 0x016F9F], [0x016FE0, 0x016FE3], - [0x016FF0, 0x016FF1], [0x017000, 0x0187F7], [0x018800, 0x018CD5], - [0x018D00, 0x018D08], + [0x018CFF, 0x018D08], [0x01AFF0, 0x01AFF3], [0x01AFF5, 0x01AFFB], [0x01AFFD, 0x01AFFE], @@ -771,11 +787,13 @@ const matchSymbols = buildString({ [0x01BC70, 0x01BC7C], [0x01BC80, 0x01BC88], [0x01BC90, 0x01BC99], + [0x01CC00, 0x01CCF9], + [0x01CD00, 0x01CEB3], [0x01CF50, 0x01CFC3], [0x01D000, 0x01D0F5], [0x01D100, 0x01D126], [0x01D129, 0x01D164], - [0x01D16A, 0x01D16D], + [0x01D16A, 0x01D16C], [0x01D183, 0x01D184], [0x01D18C, 0x01D1A9], [0x01D1AE, 0x01D1EA], @@ -818,6 +836,8 @@ const matchSymbols = buildString({ [0x01E2F0, 0x01E2F9], [0x01E4D0, 0x01E4EB], [0x01E4F0, 0x01E4F9], + [0x01E5D0, 0x01E5ED], + [0x01E5F0, 0x01E5FA], [0x01E7E0, 0x01E7E6], [0x01E7E8, 0x01E7EB], [0x01E7ED, 0x01E7EE], @@ -870,19 +890,18 @@ const matchSymbols = buildString({ [0x01F850, 0x01F859], [0x01F860, 0x01F887], [0x01F890, 0x01F8AD], - [0x01F8B0, 0x01F8B1], + [0x01F8B0, 0x01F8BB], + [0x01F8C0, 0x01F8C1], [0x01F900, 0x01FA53], [0x01FA60, 0x01FA6D], [0x01FA70, 0x01FA7C], - [0x01FA80, 0x01FA88], - [0x01FA90, 0x01FABD], - [0x01FABF, 0x01FAC5], - [0x01FACE, 0x01FADB], - [0x01FAE0, 0x01FAE8], + [0x01FA80, 0x01FA89], + [0x01FA8F, 0x01FAC6], + [0x01FACE, 0x01FADC], + [0x01FADF, 0x01FAE9], [0x01FAF0, 0x01FAF8], [0x01FB00, 0x01FB92], - [0x01FB94, 0x01FBCA], - [0x01FBF0, 0x01FBF9], + [0x01FB94, 0x01FBF9], [0x020000, 0x02A6DF], [0x02A700, 0x02B739], [0x02B740, 0x02B81D], @@ -962,9 +981,7 @@ const nonMatchSymbols = buildString({ 0x000C91, 0x000CA9, 0x000CB4, - 0x000CBF, 0x000CC2, - 0x000CC9, 0x000CDF, 0x000CF0, 0x000D0D, @@ -1009,8 +1026,7 @@ const nonMatchSymbols = buildString({ 0x001932, 0x001A56, 0x001A62, - 0x001B3C, - 0x001B42, + 0x001B4D, 0x001BE6, 0x001BED, 0x001CED, @@ -1046,6 +1062,7 @@ const nonMatchSymbols = buildString({ 0x00A80B, 0x00A8FF, 0x00A9B3, + 0x00A9C0, 0x00A9CE, 0x00A9E5, 0x00A9FF, @@ -1094,10 +1111,10 @@ const nonMatchSymbols = buildString({ 0x011070, 0x0110BD, 0x011173, + 0x0111C0, 0x0111CF, 0x0111E0, 0x011212, - 0x011234, 0x01123E, 0x011287, 0x011289, @@ -1110,6 +1127,13 @@ const nonMatchSymbols = buildString({ 0x011334, 0x01133E, 0x011340, + 0x01138A, + 0x01138F, + 0x0113B6, + 0x0113B8, + 0x0113CB, + 0x0113D2, + 0x0113D6, 0x011446, 0x01145C, 0x01145E, @@ -1120,12 +1144,11 @@ const nonMatchSymbols = buildString({ 0x01163D, 0x0116AB, 0x0116AD, - 0x0116B7, + 0x01171F, 0x011914, 0x011917, 0x011930, 0x011936, - 0x01193E, 0x011943, 0x0119E0, 0x011C09, @@ -1137,8 +1160,6 @@ const nonMatchSymbols = buildString({ 0x011D95, 0x011D97, 0x011F11, - 0x011F40, - 0x011F42, 0x01246F, 0x016A5F, 0x016ABF, @@ -1147,7 +1168,6 @@ const nonMatchSymbols = buildString({ 0x01AFF4, 0x01AFFC, 0x01AFFF, - 0x01D165, 0x01D455, 0x01D49D, 0x01D4AD, @@ -1195,7 +1215,6 @@ const nonMatchSymbols = buildString({ 0x01EEAA, 0x01F0C0, 0x01F0D0, - 0x01FABE, 0x01FB93 ], ranges: [ @@ -1287,8 +1306,8 @@ const nonMatchSymbols = buildString({ [0x000C62, 0x000C65], [0x000C70, 0x000C76], [0x000CBA, 0x000CBC], - [0x000CC5, 0x000CC6], - [0x000CCC, 0x000CDC], + [0x000CBF, 0x000CC0], + [0x000CC5, 0x000CDC], [0x000CE2, 0x000CE5], [0x000CF4, 0x000D01], [0x000D3B, 0x000D3C], @@ -1340,9 +1359,8 @@ const nonMatchSymbols = buildString({ [0x0013FE, 0x0013FF], [0x00169D, 0x00169F], [0x0016F9, 0x0016FF], - [0x001712, 0x001714], - [0x001716, 0x00171E], - [0x001732, 0x001733], + [0x001712, 0x00171E], + [0x001732, 0x001734], [0x001737, 0x00173F], [0x001752, 0x00175F], [0x001771, 0x00177F], @@ -1376,20 +1394,18 @@ const nonMatchSymbols = buildString({ [0x001A8A, 0x001A8F], [0x001A9A, 0x001A9F], [0x001AAE, 0x001B03], - [0x001B34, 0x001B3A], - [0x001B4D, 0x001B4F], + [0x001B34, 0x001B3D], + [0x001B42, 0x001B44], [0x001B6B, 0x001B73], - [0x001B7F, 0x001B81], + [0x001B80, 0x001B81], [0x001BA2, 0x001BA5], - [0x001BA8, 0x001BA9], - [0x001BAB, 0x001BAD], + [0x001BA8, 0x001BAD], [0x001BE8, 0x001BE9], - [0x001BEF, 0x001BF1], - [0x001BF4, 0x001BFB], + [0x001BEF, 0x001BFB], [0x001C2C, 0x001C33], [0x001C36, 0x001C3A], [0x001C4A, 0x001C4C], - [0x001C89, 0x001C8F], + [0x001C8B, 0x001C8F], [0x001CBB, 0x001CBC], [0x001CC8, 0x001CD2], [0x001CD4, 0x001CE0], @@ -1411,7 +1427,7 @@ const nonMatchSymbols = buildString({ [0x00209D, 0x00209F], [0x0020C1, 0x0020FF], [0x00218C, 0x00218F], - [0x002427, 0x00243F], + [0x00242A, 0x00243F], [0x00244B, 0x00245F], [0x002B74, 0x002B75], [0x002CEF, 0x002CF1], @@ -1428,7 +1444,7 @@ const nonMatchSymbols = buildString({ [0x00302A, 0x00302F], [0x003097, 0x00309A], [0x003100, 0x003104], - [0x0031E4, 0x0031EE], + [0x0031E6, 0x0031EE], [0x00A48D, 0x00A48F], [0x00A4C7, 0x00A4CF], [0x00A62C, 0x00A63F], @@ -1437,8 +1453,8 @@ const nonMatchSymbols = buildString({ [0x00A69E, 0x00A69F], [0x00A6F0, 0x00A6F1], [0x00A6F8, 0x00A6FF], - [0x00A7CB, 0x00A7CF], - [0x00A7DA, 0x00A7F1], + [0x00A7CE, 0x00A7CF], + [0x00A7DD, 0x00A7F1], [0x00A825, 0x00A826], [0x00A82C, 0x00A82F], [0x00A83A, 0x00A83F], @@ -1447,7 +1463,7 @@ const nonMatchSymbols = buildString({ [0x00A8DA, 0x00A8F1], [0x00A926, 0x00A92D], [0x00A947, 0x00A951], - [0x00A954, 0x00A95E], + [0x00A953, 0x00A95E], [0x00A97D, 0x00A982], [0x00A9B6, 0x00A9B9], [0x00A9BC, 0x00A9BD], @@ -1515,7 +1531,8 @@ const nonMatchSymbols = buildString({ [0x0104FC, 0x0104FF], [0x010528, 0x01052F], [0x010564, 0x01056E], - [0x0105BD, 0x0105FF], + [0x0105BD, 0x0105BF], + [0x0105F4, 0x0105FF], [0x010737, 0x01073F], [0x010756, 0x01075F], [0x010768, 0x01077F], @@ -1548,10 +1565,14 @@ const nonMatchSymbols = buildString({ [0x010CB3, 0x010CBF], [0x010CF3, 0x010CF9], [0x010D24, 0x010D2F], - [0x010D3A, 0x010E5F], + [0x010D3A, 0x010D3F], + [0x010D66, 0x010D6D], + [0x010D86, 0x010D8D], + [0x010D90, 0x010E5F], [0x010EAA, 0x010EAC], [0x010EAE, 0x010EAF], - [0x010EB2, 0x010EFF], + [0x010EB2, 0x010EC1], + [0x010EC5, 0x010EFF], [0x010F28, 0x010F2F], [0x010F46, 0x010F50], [0x010F5A, 0x010F6F], @@ -1576,7 +1597,7 @@ const nonMatchSymbols = buildString({ [0x0111C9, 0x0111CC], [0x0111F5, 0x0111FF], [0x01122F, 0x011231], - [0x011236, 0x011237], + [0x011234, 0x011237], [0x011241, 0x01127F], [0x0112AA, 0x0112AF], [0x0112E3, 0x0112EF], @@ -1586,9 +1607,13 @@ const nonMatchSymbols = buildString({ [0x01133A, 0x01133C], [0x011345, 0x011346], [0x011349, 0x01134A], - [0x01134E, 0x01134F], + [0x01134D, 0x01134F], [0x011351, 0x01135C], - [0x011364, 0x0113FF], + [0x011364, 0x01137F], + [0x01138C, 0x01138D], + [0x0113BB, 0x0113C9], + [0x0113CE, 0x0113D0], + [0x0113D9, 0x0113FF], [0x011438, 0x01143F], [0x011442, 0x011444], [0x011462, 0x01147F], @@ -1606,10 +1631,11 @@ const nonMatchSymbols = buildString({ [0x011645, 0x01164F], [0x01165A, 0x01165F], [0x01166D, 0x01167F], - [0x0116B0, 0x0116B5], + [0x0116B0, 0x0116B7], [0x0116BA, 0x0116BF], - [0x0116CA, 0x0116FF], - [0x01171B, 0x01171F], + [0x0116CA, 0x0116CF], + [0x0116E4, 0x0116FF], + [0x01171B, 0x01171D], [0x011722, 0x011725], [0x011727, 0x01172F], [0x011747, 0x0117FF], @@ -1619,7 +1645,7 @@ const nonMatchSymbols = buildString({ [0x0118F3, 0x0118FE], [0x011907, 0x011908], [0x01190A, 0x01190B], - [0x011939, 0x01193C], + [0x011939, 0x01193E], [0x011947, 0x01194F], [0x01195A, 0x01199F], [0x0119A8, 0x0119A9], @@ -1635,7 +1661,9 @@ const nonMatchSymbols = buildString({ [0x011A98, 0x011A99], [0x011AA3, 0x011AAF], [0x011AF9, 0x011AFF], - [0x011B0A, 0x011BFF], + [0x011B0A, 0x011BBF], + [0x011BE2, 0x011BEF], + [0x011BFA, 0x011BFF], [0x011C30, 0x011C3D], [0x011C46, 0x011C4F], [0x011C6D, 0x011C6F], @@ -1652,6 +1680,7 @@ const nonMatchSymbols = buildString({ [0x011EF3, 0x011EF4], [0x011EF9, 0x011F01], [0x011F36, 0x011F3D], + [0x011F40, 0x011F42], [0x011F5A, 0x011FAF], [0x011FB1, 0x011FBF], [0x011FF2, 0x011FFE], @@ -1660,8 +1689,12 @@ const nonMatchSymbols = buildString({ [0x012544, 0x012F8F], [0x012FF3, 0x012FFF], [0x013430, 0x013440], - [0x013447, 0x0143FF], - [0x014647, 0x0167FF], + [0x013447, 0x01345F], + [0x0143FB, 0x0143FF], + [0x014647, 0x0160FF], + [0x01611E, 0x016129], + [0x01612D, 0x01612F], + [0x01613A, 0x0167FF], [0x016A39, 0x016A3F], [0x016A6A, 0x016A6D], [0x016ACA, 0x016ACF], @@ -1670,15 +1703,15 @@ const nonMatchSymbols = buildString({ [0x016B30, 0x016B36], [0x016B46, 0x016B4F], [0x016B78, 0x016B7C], - [0x016B90, 0x016E3F], + [0x016B90, 0x016D3F], + [0x016D7A, 0x016E3F], [0x016E9B, 0x016EFF], [0x016F4B, 0x016F4F], [0x016F88, 0x016F92], [0x016FA0, 0x016FDF], - [0x016FE4, 0x016FEF], - [0x016FF2, 0x016FFF], + [0x016FE4, 0x016FFF], [0x0187F8, 0x0187FF], - [0x018CD6, 0x018CFF], + [0x018CD6, 0x018CFE], [0x018D09, 0x01AFEF], [0x01B123, 0x01B131], [0x01B133, 0x01B14F], @@ -1691,12 +1724,14 @@ const nonMatchSymbols = buildString({ [0x01BC89, 0x01BC8F], [0x01BC9A, 0x01BC9B], [0x01BC9D, 0x01BC9E], - [0x01BCA0, 0x01CF4F], + [0x01BCA0, 0x01CBFF], + [0x01CCFA, 0x01CCFF], + [0x01CEB4, 0x01CF4F], [0x01CFC4, 0x01CFFF], [0x01D0F6, 0x01D0FF], [0x01D127, 0x01D128], - [0x01D167, 0x01D169], - [0x01D16E, 0x01D182], + [0x01D165, 0x01D169], + [0x01D16D, 0x01D182], [0x01D185, 0x01D18B], [0x01D1AA, 0x01D1AD], [0x01D1EB, 0x01D1FF], @@ -1728,7 +1763,10 @@ const nonMatchSymbols = buildString({ [0x01E2FA, 0x01E2FE], [0x01E300, 0x01E4CF], [0x01E4EC, 0x01E4EF], - [0x01E4FA, 0x01E7DF], + [0x01E4FA, 0x01E5CF], + [0x01E5EE, 0x01E5EF], + [0x01E5FB, 0x01E5FE], + [0x01E600, 0x01E7DF], [0x01E8C5, 0x01E8C6], [0x01E8D0, 0x01E8FF], [0x01E944, 0x01E94A], @@ -1767,16 +1805,16 @@ const nonMatchSymbols = buildString({ [0x01F85A, 0x01F85F], [0x01F888, 0x01F88F], [0x01F8AE, 0x01F8AF], - [0x01F8B2, 0x01F8FF], + [0x01F8BC, 0x01F8BF], + [0x01F8C2, 0x01F8FF], [0x01FA54, 0x01FA5F], [0x01FA6E, 0x01FA6F], [0x01FA7D, 0x01FA7F], - [0x01FA89, 0x01FA8F], - [0x01FAC6, 0x01FACD], - [0x01FADC, 0x01FADF], - [0x01FAE9, 0x01FAEF], + [0x01FA8A, 0x01FA8E], + [0x01FAC7, 0x01FACD], + [0x01FADD, 0x01FADE], + [0x01FAEA, 0x01FAEF], [0x01FAF9, 0x01FAFF], - [0x01FBCB, 0x01FBEF], [0x01FBFA, 0x01FFFF], [0x02A6E0, 0x02A6FF], [0x02B73A, 0x02B73F], diff --git a/test/built-ins/RegExp/property-escapes/generated/Grapheme_Extend.js b/test/built-ins/RegExp/property-escapes/generated/Grapheme_Extend.js index a8a3b07cefd..f35beeee243 100644 --- a/test/built-ins/RegExp/property-escapes/generated/Grapheme_Extend.js +++ b/test/built-ins/RegExp/property-escapes/generated/Grapheme_Extend.js @@ -7,7 +7,7 @@ description: > Unicode property escapes for `Grapheme_Extend` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.1.0 + Unicode v16.0.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] @@ -47,9 +47,7 @@ const matchSymbols = buildString({ 0x000C3C, 0x000C81, 0x000CBC, - 0x000CBF, 0x000CC2, - 0x000CC6, 0x000D3E, 0x000D4D, 0x000D57, @@ -77,8 +75,6 @@ const matchSymbols = buildString({ 0x001A60, 0x001A62, 0x001A7F, - 0x001B3C, - 0x001B42, 0x001BE6, 0x001BED, 0x001CED, @@ -90,7 +86,9 @@ const matchSymbols = buildString({ 0x00A80B, 0x00A82C, 0x00A8FF, + 0x00A953, 0x00A9B3, + 0x00A9C0, 0x00A9E5, 0x00AA43, 0x00AA4C, @@ -109,14 +107,19 @@ const matchSymbols = buildString({ 0x011070, 0x0110C2, 0x011173, + 0x0111C0, 0x0111CF, - 0x011234, 0x01123E, 0x011241, 0x0112DF, 0x01133E, 0x011340, + 0x01134D, 0x011357, + 0x0113B8, + 0x0113C2, + 0x0113C5, + 0x0113D2, 0x011446, 0x01145E, 0x0114B0, @@ -126,9 +129,9 @@ const matchSymbols = buildString({ 0x01163D, 0x0116AB, 0x0116AD, - 0x0116B7, + 0x01171D, + 0x01171F, 0x011930, - 0x01193E, 0x011943, 0x0119E0, 0x011A47, @@ -137,12 +140,10 @@ const matchSymbols = buildString({ 0x011D47, 0x011D95, 0x011D97, - 0x011F40, - 0x011F42, + 0x011F5A, 0x013440, 0x016F4F, 0x016FE4, - 0x01D165, 0x01DA75, 0x01DA84, 0x01E08F, @@ -168,7 +169,7 @@ const matchSymbols = buildString({ [0x000825, 0x000827], [0x000829, 0x00082D], [0x000859, 0x00085B], - [0x000898, 0x00089F], + [0x000897, 0x00089F], [0x0008CA, 0x0008E1], [0x0008E3, 0x000902], [0x000941, 0x000948], @@ -195,7 +196,9 @@ const matchSymbols = buildString({ [0x000C4A, 0x000C4D], [0x000C55, 0x000C56], [0x000C62, 0x000C63], - [0x000CCC, 0x000CCD], + [0x000CBF, 0x000CC0], + [0x000CC6, 0x000CC8], + [0x000CCA, 0x000CCD], [0x000CD5, 0x000CD6], [0x000CE2, 0x000CE3], [0x000D00, 0x000D01], @@ -222,8 +225,8 @@ const matchSymbols = buildString({ [0x001071, 0x001074], [0x001085, 0x001086], [0x00135D, 0x00135F], - [0x001712, 0x001714], - [0x001732, 0x001733], + [0x001712, 0x001715], + [0x001732, 0x001734], [0x001752, 0x001753], [0x001772, 0x001773], [0x0017B4, 0x0017B5], @@ -240,14 +243,14 @@ const matchSymbols = buildString({ [0x001A73, 0x001A7C], [0x001AB0, 0x001ACE], [0x001B00, 0x001B03], - [0x001B34, 0x001B3A], + [0x001B34, 0x001B3D], + [0x001B42, 0x001B44], [0x001B6B, 0x001B73], [0x001B80, 0x001B81], [0x001BA2, 0x001BA5], - [0x001BA8, 0x001BA9], - [0x001BAB, 0x001BAD], + [0x001BA8, 0x001BAD], [0x001BE8, 0x001BE9], - [0x001BEF, 0x001BF1], + [0x001BEF, 0x001BF3], [0x001C2C, 0x001C33], [0x001C36, 0x001C37], [0x001CD0, 0x001CD2], @@ -289,8 +292,9 @@ const matchSymbols = buildString({ [0x010A38, 0x010A3A], [0x010AE5, 0x010AE6], [0x010D24, 0x010D27], + [0x010D69, 0x010D6D], [0x010EAB, 0x010EAC], - [0x010EFD, 0x010EFF], + [0x010EFC, 0x010EFF], [0x010F46, 0x010F50], [0x010F82, 0x010F85], [0x011038, 0x011046], @@ -305,12 +309,16 @@ const matchSymbols = buildString({ [0x0111B6, 0x0111BE], [0x0111C9, 0x0111CC], [0x01122F, 0x011231], - [0x011236, 0x011237], + [0x011234, 0x011237], [0x0112E3, 0x0112EA], [0x011300, 0x011301], [0x01133B, 0x01133C], [0x011366, 0x01136C], [0x011370, 0x011374], + [0x0113BB, 0x0113C0], + [0x0113C7, 0x0113C9], + [0x0113CE, 0x0113D0], + [0x0113E1, 0x0113E2], [0x011438, 0x01143F], [0x011442, 0x011444], [0x0114B3, 0x0114B8], @@ -322,13 +330,12 @@ const matchSymbols = buildString({ [0x0115DC, 0x0115DD], [0x011633, 0x01163A], [0x01163F, 0x011640], - [0x0116B0, 0x0116B5], - [0x01171D, 0x01171F], + [0x0116B0, 0x0116B7], [0x011722, 0x011725], [0x011727, 0x01172B], [0x01182F, 0x011837], [0x011839, 0x01183A], - [0x01193B, 0x01193C], + [0x01193B, 0x01193E], [0x0119D4, 0x0119D7], [0x0119DA, 0x0119DB], [0x011A01, 0x011A0A], @@ -351,15 +358,19 @@ const matchSymbols = buildString({ [0x011EF3, 0x011EF4], [0x011F00, 0x011F01], [0x011F36, 0x011F3A], + [0x011F40, 0x011F42], [0x013447, 0x013455], + [0x01611E, 0x016129], + [0x01612D, 0x01612F], [0x016AF0, 0x016AF4], [0x016B30, 0x016B36], [0x016F8F, 0x016F92], + [0x016FF0, 0x016FF1], [0x01BC9D, 0x01BC9E], [0x01CF00, 0x01CF2D], [0x01CF30, 0x01CF46], - [0x01D167, 0x01D169], - [0x01D16E, 0x01D172], + [0x01D165, 0x01D169], + [0x01D16D, 0x01D172], [0x01D17B, 0x01D182], [0x01D185, 0x01D18B], [0x01D1AA, 0x01D1AD], @@ -376,6 +387,7 @@ const matchSymbols = buildString({ [0x01E130, 0x01E136], [0x01E2EC, 0x01E2EF], [0x01E4EC, 0x01E4EF], + [0x01E5EE, 0x01E5EF], [0x01E8D0, 0x01E8D6], [0x01E944, 0x01E94A], [0x0E0020, 0x0E007F], @@ -413,6 +425,8 @@ const nonMatchSymbols = buildString({ 0x000BBF, 0x000C3D, 0x000C49, + 0x000CC1, + 0x000CC9, 0x000D3D, 0x000DD5, 0x000F36, @@ -427,20 +441,22 @@ const nonMatchSymbols = buildString({ 0x001A57, 0x001A5F, 0x001A61, - 0x001B3B, - 0x001BAA, 0x001BE7, 0x001BEE, 0x001CD3, 0x001CE1, 0x00A673, + 0x00A952, 0x00AAB1, 0x00AAC0, 0x010A04, 0x01112C, - 0x011235, + 0x0111BF, 0x01133D, 0x01133F, + 0x0113C1, + 0x0113C6, + 0x0113D1, 0x011445, 0x0114B9, 0x0114BE, @@ -448,10 +464,9 @@ const nonMatchSymbols = buildString({ 0x0115BE, 0x01163E, 0x0116AC, - 0x0116B6, + 0x01171E, 0x011726, 0x011838, - 0x01193D, 0x011A97, 0x011C37, 0x011C3E, @@ -461,8 +476,6 @@ const nonMatchSymbols = buildString({ 0x011D3E, 0x011D46, 0x011D96, - 0x011F41, - 0x01D166, 0x01DAA0, 0x01E007, 0x01E022, @@ -486,7 +499,7 @@ const nonMatchSymbols = buildString({ [0x0007F4, 0x0007FC], [0x0007FE, 0x000815], [0x00082E, 0x000858], - [0x00085C, 0x000897], + [0x00085C, 0x000896], [0x0008A0, 0x0008C9], [0x000903, 0x000939], [0x00093D, 0x000940], @@ -531,9 +544,7 @@ const nonMatchSymbols = buildString({ [0x000C64, 0x000C80], [0x000C82, 0x000CBB], [0x000CBD, 0x000CBE], - [0x000CC0, 0x000CC1], [0x000CC3, 0x000CC5], - [0x000CC7, 0x000CCB], [0x000CCE, 0x000CD4], [0x000CD7, 0x000CE1], [0x000CE4, 0x000CFF], @@ -569,8 +580,8 @@ const nonMatchSymbols = buildString({ [0x00108E, 0x00109C], [0x00109E, 0x00135C], [0x001360, 0x001711], - [0x001715, 0x001731], - [0x001734, 0x001751], + [0x001716, 0x001731], + [0x001735, 0x001751], [0x001754, 0x001771], [0x001774, 0x0017B3], [0x0017BE, 0x0017C5], @@ -592,14 +603,14 @@ const nonMatchSymbols = buildString({ [0x001A80, 0x001AAF], [0x001ACF, 0x001AFF], [0x001B04, 0x001B33], - [0x001B3D, 0x001B41], - [0x001B43, 0x001B6A], + [0x001B3E, 0x001B41], + [0x001B45, 0x001B6A], [0x001B74, 0x001B7F], [0x001B82, 0x001BA1], [0x001BA6, 0x001BA7], [0x001BAE, 0x001BE5], [0x001BEA, 0x001BEC], - [0x001BF2, 0x001C2B], + [0x001BF4, 0x001C2B], [0x001C34, 0x001C35], [0x001C38, 0x001CCF], [0x001CE9, 0x001CEC], @@ -626,11 +637,12 @@ const nonMatchSymbols = buildString({ [0x00A8F2, 0x00A8FE], [0x00A900, 0x00A925], [0x00A92E, 0x00A946], - [0x00A952, 0x00A97F], + [0x00A954, 0x00A97F], [0x00A983, 0x00A9B2], [0x00A9B4, 0x00A9B5], [0x00A9BA, 0x00A9BB], - [0x00A9BE, 0x00A9E4], + [0x00A9BE, 0x00A9BF], + [0x00A9C1, 0x00A9E4], [0x00A9E6, 0x00AA28], [0x00AA2F, 0x00AA30], [0x00AA33, 0x00AA34], @@ -659,8 +671,9 @@ const nonMatchSymbols = buildString({ [0x010A3B, 0x010A3E], [0x010A40, 0x010AE4], [0x010AE7, 0x010D23], - [0x010D28, 0x010EAA], - [0x010EAD, 0x010EFC], + [0x010D28, 0x010D68], + [0x010D6E, 0x010EAA], + [0x010EAD, 0x010EFB], [0x010F00, 0x010F45], [0x010F51, 0x010F81], [0x010F86, 0x011000], @@ -676,7 +689,7 @@ const nonMatchSymbols = buildString({ [0x011135, 0x011172], [0x011174, 0x01117F], [0x011182, 0x0111B5], - [0x0111BF, 0x0111C8], + [0x0111C1, 0x0111C8], [0x0111CD, 0x0111CE], [0x0111D0, 0x01122E], [0x011232, 0x011233], @@ -686,10 +699,16 @@ const nonMatchSymbols = buildString({ [0x0112E0, 0x0112E2], [0x0112EB, 0x0112FF], [0x011302, 0x01133A], - [0x011341, 0x011356], + [0x011341, 0x01134C], + [0x01134E, 0x011356], [0x011358, 0x011365], [0x01136D, 0x01136F], - [0x011375, 0x011437], + [0x011375, 0x0113B7], + [0x0113B9, 0x0113BA], + [0x0113C3, 0x0113C4], + [0x0113CA, 0x0113CD], + [0x0113D3, 0x0113E0], + [0x0113E3, 0x011437], [0x011440, 0x011441], [0x011447, 0x01145D], [0x01145F, 0x0114AF], @@ -730,18 +749,22 @@ const nonMatchSymbols = buildString({ [0x011EF5, 0x011EFF], [0x011F02, 0x011F35], [0x011F3B, 0x011F3F], - [0x011F43, 0x01343F], + [0x011F43, 0x011F59], + [0x011F5B, 0x01343F], [0x013441, 0x013446], - [0x013456, 0x016AEF], + [0x013456, 0x01611D], + [0x01612A, 0x01612C], + [0x016130, 0x016AEF], [0x016AF5, 0x016B2F], [0x016B37, 0x016F4E], [0x016F50, 0x016F8E], [0x016F93, 0x016FE3], - [0x016FE5, 0x01BC9C], + [0x016FE5, 0x016FEF], + [0x016FF2, 0x01BC9C], [0x01BC9F, 0x01CEFF], [0x01CF2E, 0x01CF2F], [0x01CF47, 0x01D164], - [0x01D16A, 0x01D16D], + [0x01D16A, 0x01D16C], [0x01D173, 0x01D17A], [0x01D183, 0x01D184], [0x01D18C, 0x01D1A9], @@ -758,7 +781,8 @@ const nonMatchSymbols = buildString({ [0x01E137, 0x01E2AD], [0x01E2AF, 0x01E2EB], [0x01E2F0, 0x01E4EB], - [0x01E4F0, 0x01E8CF], + [0x01E4F0, 0x01E5ED], + [0x01E5F0, 0x01E8CF], [0x01E8D7, 0x01E943], [0x01E94B, 0x0E001F], [0x0E0080, 0x0E00FF], diff --git a/test/built-ins/RegExp/property-escapes/generated/Hex_Digit.js b/test/built-ins/RegExp/property-escapes/generated/Hex_Digit.js index dfcc78c2d4a..5b4f7250ecd 100644 --- a/test/built-ins/RegExp/property-escapes/generated/Hex_Digit.js +++ b/test/built-ins/RegExp/property-escapes/generated/Hex_Digit.js @@ -7,7 +7,7 @@ description: > Unicode property escapes for `Hex_Digit` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.1.0 + Unicode v16.0.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/property-escapes/generated/IDS_Binary_Operator.js b/test/built-ins/RegExp/property-escapes/generated/IDS_Binary_Operator.js index 23f33fda803..361241b6202 100644 --- a/test/built-ins/RegExp/property-escapes/generated/IDS_Binary_Operator.js +++ b/test/built-ins/RegExp/property-escapes/generated/IDS_Binary_Operator.js @@ -7,7 +7,7 @@ description: > Unicode property escapes for `IDS_Binary_Operator` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.1.0 + Unicode v16.0.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/property-escapes/generated/IDS_Trinary_Operator.js b/test/built-ins/RegExp/property-escapes/generated/IDS_Trinary_Operator.js index 3959cda3c2e..17a4ffad3da 100644 --- a/test/built-ins/RegExp/property-escapes/generated/IDS_Trinary_Operator.js +++ b/test/built-ins/RegExp/property-escapes/generated/IDS_Trinary_Operator.js @@ -7,7 +7,7 @@ description: > Unicode property escapes for `IDS_Trinary_Operator` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.1.0 + Unicode v16.0.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/property-escapes/generated/ID_Continue.js b/test/built-ins/RegExp/property-escapes/generated/ID_Continue.js index 5f17b8e322e..1eaf96651ac 100644 --- a/test/built-ins/RegExp/property-escapes/generated/ID_Continue.js +++ b/test/built-ins/RegExp/property-escapes/generated/ID_Continue.js @@ -7,7 +7,7 @@ description: > Unicode property escapes for `ID_Continue` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.1.0 + Unicode v16.0.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] @@ -95,6 +95,10 @@ const matchSymbols = buildString({ 0x011288, 0x011350, 0x011357, + 0x01138B, + 0x01138E, + 0x0113C2, + 0x0113C5, 0x0114C7, 0x011644, 0x011909, @@ -167,7 +171,7 @@ const matchSymbols = buildString({ [0x000860, 0x00086A], [0x000870, 0x000887], [0x000889, 0x00088E], - [0x000898, 0x0008E1], + [0x000897, 0x0008E1], [0x0008E3, 0x000963], [0x000966, 0x00096F], [0x000971, 0x000983], @@ -360,7 +364,7 @@ const matchSymbols = buildString({ [0x001C00, 0x001C37], [0x001C40, 0x001C49], [0x001C4D, 0x001C7D], - [0x001C80, 0x001C88], + [0x001C80, 0x001C8A], [0x001C90, 0x001CBA], [0x001CBD, 0x001CBF], [0x001CD0, 0x001CD2], @@ -426,9 +430,9 @@ const matchSymbols = buildString({ [0x00A67F, 0x00A6F1], [0x00A717, 0x00A71F], [0x00A722, 0x00A788], - [0x00A78B, 0x00A7CA], + [0x00A78B, 0x00A7CD], [0x00A7D0, 0x00A7D1], - [0x00A7D5, 0x00A7D9], + [0x00A7D5, 0x00A7DC], [0x00A7F2, 0x00A827], [0x00A840, 0x00A873], [0x00A880, 0x00A8C5], @@ -520,6 +524,7 @@ const matchSymbols = buildString({ [0x0105A3, 0x0105B1], [0x0105B3, 0x0105B9], [0x0105BB, 0x0105BC], + [0x0105C0, 0x0105F3], [0x010600, 0x010736], [0x010740, 0x010755], [0x010760, 0x010767], @@ -557,10 +562,14 @@ const matchSymbols = buildString({ [0x010CC0, 0x010CF2], [0x010D00, 0x010D27], [0x010D30, 0x010D39], + [0x010D40, 0x010D65], + [0x010D69, 0x010D6D], + [0x010D6F, 0x010D85], [0x010E80, 0x010EA9], [0x010EAB, 0x010EAC], [0x010EB0, 0x010EB1], - [0x010EFD, 0x010F1C], + [0x010EC2, 0x010EC4], + [0x010EFC, 0x010F1C], [0x010F30, 0x010F50], [0x010F70, 0x010F85], [0x010FB0, 0x010FC4], @@ -599,6 +608,12 @@ const matchSymbols = buildString({ [0x01135D, 0x011363], [0x011366, 0x01136C], [0x011370, 0x011374], + [0x011380, 0x011389], + [0x011390, 0x0113B5], + [0x0113B7, 0x0113C0], + [0x0113C7, 0x0113CA], + [0x0113CC, 0x0113D3], + [0x0113E1, 0x0113E2], [0x011400, 0x01144A], [0x011450, 0x011459], [0x01145E, 0x011461], @@ -611,6 +626,7 @@ const matchSymbols = buildString({ [0x011650, 0x011659], [0x011680, 0x0116B8], [0x0116C0, 0x0116C9], + [0x0116D0, 0x0116E3], [0x011700, 0x01171A], [0x01171D, 0x01172B], [0x011730, 0x011739], @@ -631,6 +647,8 @@ const matchSymbols = buildString({ [0x011A00, 0x011A3E], [0x011A50, 0x011A99], [0x011AB0, 0x011AF8], + [0x011BC0, 0x011BE0], + [0x011BF0, 0x011BF9], [0x011C00, 0x011C08], [0x011C0A, 0x011C36], [0x011C38, 0x011C40], @@ -654,14 +672,16 @@ const matchSymbols = buildString({ [0x011F00, 0x011F10], [0x011F12, 0x011F3A], [0x011F3E, 0x011F42], - [0x011F50, 0x011F59], + [0x011F50, 0x011F5A], [0x012000, 0x012399], [0x012400, 0x01246E], [0x012480, 0x012543], [0x012F90, 0x012FF0], [0x013000, 0x01342F], [0x013440, 0x013455], + [0x013460, 0x0143FA], [0x014400, 0x014646], + [0x016100, 0x016139], [0x016800, 0x016A38], [0x016A40, 0x016A5E], [0x016A60, 0x016A69], @@ -674,6 +694,8 @@ const matchSymbols = buildString({ [0x016B50, 0x016B59], [0x016B63, 0x016B77], [0x016B7D, 0x016B8F], + [0x016D40, 0x016D6C], + [0x016D70, 0x016D79], [0x016E40, 0x016E7F], [0x016F00, 0x016F4A], [0x016F4F, 0x016F87], @@ -683,7 +705,7 @@ const matchSymbols = buildString({ [0x016FF0, 0x016FF1], [0x017000, 0x0187F7], [0x018800, 0x018CD5], - [0x018D00, 0x018D08], + [0x018CFF, 0x018D08], [0x01AFF0, 0x01AFF3], [0x01AFF5, 0x01AFFB], [0x01AFFD, 0x01AFFE], @@ -696,6 +718,7 @@ const matchSymbols = buildString({ [0x01BC80, 0x01BC88], [0x01BC90, 0x01BC99], [0x01BC9D, 0x01BC9E], + [0x01CCF0, 0x01CCF9], [0x01CF00, 0x01CF2D], [0x01CF30, 0x01CF46], [0x01D165, 0x01D169], @@ -750,6 +773,7 @@ const matchSymbols = buildString({ [0x01E290, 0x01E2AE], [0x01E2C0, 0x01E2F9], [0x01E4D0, 0x01E4F9], + [0x01E5D0, 0x01E5FA], [0x01E7E0, 0x01E7E6], [0x01E7E8, 0x01E7EB], [0x01E7ED, 0x01E7EE], @@ -975,6 +999,7 @@ const nonMatchSymbols = buildString({ 0x010A14, 0x010A18, 0x010AC8, + 0x010D6E, 0x010EAA, 0x011135, 0x0111CD, @@ -989,6 +1014,12 @@ const nonMatchSymbols = buildString({ 0x011331, 0x011334, 0x01133A, + 0x01138A, + 0x01138F, + 0x0113B6, + 0x0113C1, + 0x0113C6, + 0x0113CB, 0x0114C6, 0x011914, 0x011917, @@ -1105,7 +1136,7 @@ const nonMatchSymbols = buildString({ [0x00082E, 0x00083F], [0x00085C, 0x00085F], [0x00086B, 0x00086F], - [0x00088F, 0x000897], + [0x00088F, 0x000896], [0x000964, 0x000965], [0x00098D, 0x00098E], [0x000991, 0x000992], @@ -1238,7 +1269,7 @@ const nonMatchSymbols = buildString({ [0x001C38, 0x001C3F], [0x001C4A, 0x001C4C], [0x001C7E, 0x001C7F], - [0x001C89, 0x001C8F], + [0x001C8B, 0x001C8F], [0x001CBB, 0x001CBC], [0x001CC0, 0x001CCF], [0x001CFB, 0x001CFF], @@ -1296,8 +1327,8 @@ const nonMatchSymbols = buildString({ [0x00A6F2, 0x00A716], [0x00A720, 0x00A721], [0x00A789, 0x00A78A], - [0x00A7CB, 0x00A7CF], - [0x00A7DA, 0x00A7F1], + [0x00A7CE, 0x00A7CF], + [0x00A7DD, 0x00A7F1], [0x00A828, 0x00A82B], [0x00A82D, 0x00A83F], [0x00A874, 0x00A87F], @@ -1369,7 +1400,8 @@ const nonMatchSymbols = buildString({ [0x0104FC, 0x0104FF], [0x010528, 0x01052F], [0x010564, 0x01056F], - [0x0105BD, 0x0105FF], + [0x0105BD, 0x0105BF], + [0x0105F4, 0x0105FF], [0x010737, 0x01073F], [0x010756, 0x01075F], [0x010768, 0x01077F], @@ -1400,9 +1432,12 @@ const nonMatchSymbols = buildString({ [0x010CB3, 0x010CBF], [0x010CF3, 0x010CFF], [0x010D28, 0x010D2F], - [0x010D3A, 0x010E7F], + [0x010D3A, 0x010D3F], + [0x010D66, 0x010D68], + [0x010D86, 0x010E7F], [0x010EAD, 0x010EAF], - [0x010EB2, 0x010EFC], + [0x010EB2, 0x010EC1], + [0x010EC5, 0x010EFB], [0x010F1D, 0x010F26], [0x010F28, 0x010F2F], [0x010F51, 0x010F6F], @@ -1435,7 +1470,11 @@ const nonMatchSymbols = buildString({ [0x011358, 0x01135C], [0x011364, 0x011365], [0x01136D, 0x01136F], - [0x011375, 0x0113FF], + [0x011375, 0x01137F], + [0x01138C, 0x01138D], + [0x0113C3, 0x0113C4], + [0x0113D4, 0x0113E0], + [0x0113E3, 0x0113FF], [0x01144B, 0x01144F], [0x01145A, 0x01145D], [0x011462, 0x01147F], @@ -1448,7 +1487,8 @@ const nonMatchSymbols = buildString({ [0x011645, 0x01164F], [0x01165A, 0x01167F], [0x0116B9, 0x0116BF], - [0x0116CA, 0x0116FF], + [0x0116CA, 0x0116CF], + [0x0116E4, 0x0116FF], [0x01171B, 0x01171C], [0x01172C, 0x01172F], [0x01173A, 0x01173F], @@ -1467,7 +1507,9 @@ const nonMatchSymbols = buildString({ [0x011A48, 0x011A4F], [0x011A9A, 0x011A9C], [0x011A9E, 0x011AAF], - [0x011AF9, 0x011BFF], + [0x011AF9, 0x011BBF], + [0x011BE1, 0x011BEF], + [0x011BFA, 0x011BFF], [0x011C41, 0x011C4F], [0x011C5A, 0x011C71], [0x011C90, 0x011C91], @@ -1480,15 +1522,17 @@ const nonMatchSymbols = buildString({ [0x011EF7, 0x011EFF], [0x011F3B, 0x011F3D], [0x011F43, 0x011F4F], - [0x011F5A, 0x011FAF], + [0x011F5B, 0x011FAF], [0x011FB1, 0x011FFF], [0x01239A, 0x0123FF], [0x01246F, 0x01247F], [0x012544, 0x012F8F], [0x012FF1, 0x012FFF], [0x013430, 0x01343F], - [0x013456, 0x0143FF], - [0x014647, 0x0167FF], + [0x013456, 0x01345F], + [0x0143FB, 0x0143FF], + [0x014647, 0x0160FF], + [0x01613A, 0x0167FF], [0x016A39, 0x016A3F], [0x016A6A, 0x016A6F], [0x016ACA, 0x016ACF], @@ -1498,7 +1542,9 @@ const nonMatchSymbols = buildString({ [0x016B44, 0x016B4F], [0x016B5A, 0x016B62], [0x016B78, 0x016B7C], - [0x016B90, 0x016E3F], + [0x016B90, 0x016D3F], + [0x016D6D, 0x016D6F], + [0x016D7A, 0x016E3F], [0x016E80, 0x016EFF], [0x016F4B, 0x016F4E], [0x016F88, 0x016F8E], @@ -1506,7 +1552,7 @@ const nonMatchSymbols = buildString({ [0x016FE5, 0x016FEF], [0x016FF2, 0x016FFF], [0x0187F8, 0x0187FF], - [0x018CD6, 0x018CFF], + [0x018CD6, 0x018CFE], [0x018D09, 0x01AFEF], [0x01B123, 0x01B131], [0x01B133, 0x01B14F], @@ -1518,7 +1564,8 @@ const nonMatchSymbols = buildString({ [0x01BC7D, 0x01BC7F], [0x01BC89, 0x01BC8F], [0x01BC9A, 0x01BC9C], - [0x01BC9F, 0x01CEFF], + [0x01BC9F, 0x01CCEF], + [0x01CCFA, 0x01CEFF], [0x01CF2E, 0x01CF2F], [0x01CF47, 0x01D164], [0x01D16A, 0x01D16C], @@ -1552,7 +1599,8 @@ const nonMatchSymbols = buildString({ [0x01E14F, 0x01E28F], [0x01E2AF, 0x01E2BF], [0x01E2FA, 0x01E4CF], - [0x01E4FA, 0x01E7DF], + [0x01E4FA, 0x01E5CF], + [0x01E5FB, 0x01E7DF], [0x01E8C5, 0x01E8CF], [0x01E8D7, 0x01E8FF], [0x01E94C, 0x01E94F], diff --git a/test/built-ins/RegExp/property-escapes/generated/ID_Start.js b/test/built-ins/RegExp/property-escapes/generated/ID_Start.js index 114728af7fd..9835d3b609a 100644 --- a/test/built-ins/RegExp/property-escapes/generated/ID_Start.js +++ b/test/built-ins/RegExp/property-escapes/generated/ID_Start.js @@ -7,7 +7,7 @@ description: > Unicode property escapes for `ID_Start` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.1.0 + Unicode v16.0.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] @@ -109,6 +109,11 @@ const matchSymbols = buildString({ 0x011288, 0x01133D, 0x011350, + 0x01138B, + 0x01138E, + 0x0113B7, + 0x0113D1, + 0x0113D3, 0x0114C7, 0x011644, 0x0116B8, @@ -134,6 +139,7 @@ const matchSymbols = buildString({ 0x01D4BB, 0x01D546, 0x01E14E, + 0x01E5F0, 0x01E94B, 0x01EE24, 0x01EE27, @@ -322,7 +328,7 @@ const matchSymbols = buildString({ [0x001C00, 0x001C23], [0x001C4D, 0x001C4F], [0x001C5A, 0x001C7D], - [0x001C80, 0x001C88], + [0x001C80, 0x001C8A], [0x001C90, 0x001CBA], [0x001CBD, 0x001CBF], [0x001CE9, 0x001CEC], @@ -388,9 +394,9 @@ const matchSymbols = buildString({ [0x00A6A0, 0x00A6EF], [0x00A717, 0x00A71F], [0x00A722, 0x00A788], - [0x00A78B, 0x00A7CA], + [0x00A78B, 0x00A7CD], [0x00A7D0, 0x00A7D1], - [0x00A7D5, 0x00A7D9], + [0x00A7D5, 0x00A7DC], [0x00A7F2, 0x00A801], [0x00A803, 0x00A805], [0x00A807, 0x00A80A], @@ -480,6 +486,7 @@ const matchSymbols = buildString({ [0x0105A3, 0x0105B1], [0x0105B3, 0x0105B9], [0x0105BB, 0x0105BC], + [0x0105C0, 0x0105F3], [0x010600, 0x010736], [0x010740, 0x010755], [0x010760, 0x010767], @@ -513,8 +520,11 @@ const matchSymbols = buildString({ [0x010C80, 0x010CB2], [0x010CC0, 0x010CF2], [0x010D00, 0x010D23], + [0x010D4A, 0x010D65], + [0x010D6F, 0x010D85], [0x010E80, 0x010EA9], [0x010EB0, 0x010EB1], + [0x010EC2, 0x010EC4], [0x010F00, 0x010F1C], [0x010F30, 0x010F45], [0x010F70, 0x010F81], @@ -543,6 +553,8 @@ const matchSymbols = buildString({ [0x011332, 0x011333], [0x011335, 0x011339], [0x01135D, 0x011361], + [0x011380, 0x011389], + [0x011390, 0x0113B5], [0x011400, 0x011434], [0x011447, 0x01144A], [0x01145F, 0x011461], @@ -565,6 +577,7 @@ const matchSymbols = buildString({ [0x011A0B, 0x011A32], [0x011A5C, 0x011A89], [0x011AB0, 0x011AF8], + [0x011BC0, 0x011BE0], [0x011C00, 0x011C08], [0x011C0A, 0x011C2E], [0x011C72, 0x011C8F], @@ -583,7 +596,9 @@ const matchSymbols = buildString({ [0x012F90, 0x012FF0], [0x013000, 0x01342F], [0x013441, 0x013446], + [0x013460, 0x0143FA], [0x014400, 0x014646], + [0x016100, 0x01611D], [0x016800, 0x016A38], [0x016A40, 0x016A5E], [0x016A70, 0x016ABE], @@ -592,13 +607,14 @@ const matchSymbols = buildString({ [0x016B40, 0x016B43], [0x016B63, 0x016B77], [0x016B7D, 0x016B8F], + [0x016D40, 0x016D6C], [0x016E40, 0x016E7F], [0x016F00, 0x016F4A], [0x016F93, 0x016F9F], [0x016FE0, 0x016FE1], [0x017000, 0x0187F7], [0x018800, 0x018CD5], - [0x018D00, 0x018D08], + [0x018CFF, 0x018D08], [0x01AFF0, 0x01AFF3], [0x01AFF5, 0x01AFFB], [0x01AFFD, 0x01AFFE], @@ -645,6 +661,7 @@ const matchSymbols = buildString({ [0x01E290, 0x01E2AD], [0x01E2C0, 0x01E2EB], [0x01E4D0, 0x01E4EB], + [0x01E5D0, 0x01E5ED], [0x01E7E0, 0x01E7E6], [0x01E7E8, 0x01E7EB], [0x01E7ED, 0x01E7EE], @@ -839,6 +856,10 @@ const nonMatchSymbols = buildString({ 0x011329, 0x011331, 0x011334, + 0x01138A, + 0x01138F, + 0x0113B6, + 0x0113D2, 0x0114C6, 0x011914, 0x011917, @@ -1065,7 +1086,7 @@ const nonMatchSymbols = buildString({ [0x001C24, 0x001C4C], [0x001C50, 0x001C59], [0x001C7E, 0x001C7F], - [0x001C89, 0x001C8F], + [0x001C8B, 0x001C8F], [0x001CBB, 0x001CBC], [0x001CC0, 0x001CE8], [0x001CF7, 0x001CF9], @@ -1123,8 +1144,8 @@ const nonMatchSymbols = buildString({ [0x00A6F0, 0x00A716], [0x00A720, 0x00A721], [0x00A789, 0x00A78A], - [0x00A7CB, 0x00A7CF], - [0x00A7DA, 0x00A7F1], + [0x00A7CE, 0x00A7CF], + [0x00A7DD, 0x00A7F1], [0x00A823, 0x00A83F], [0x00A874, 0x00A881], [0x00A8B4, 0x00A8F1], @@ -1190,7 +1211,8 @@ const nonMatchSymbols = buildString({ [0x0104FC, 0x0104FF], [0x010528, 0x01052F], [0x010564, 0x01056F], - [0x0105BD, 0x0105FF], + [0x0105BD, 0x0105BF], + [0x0105F4, 0x0105FF], [0x010737, 0x01073F], [0x010756, 0x01075F], [0x010768, 0x01077F], @@ -1218,9 +1240,12 @@ const nonMatchSymbols = buildString({ [0x010C49, 0x010C7F], [0x010CB3, 0x010CBF], [0x010CF3, 0x010CFF], - [0x010D24, 0x010E7F], + [0x010D24, 0x010D49], + [0x010D66, 0x010D6E], + [0x010D86, 0x010E7F], [0x010EAA, 0x010EAF], - [0x010EB2, 0x010EFF], + [0x010EB2, 0x010EC1], + [0x010EC5, 0x010EFF], [0x010F1D, 0x010F26], [0x010F28, 0x010F2F], [0x010F46, 0x010F6F], @@ -1249,7 +1274,10 @@ const nonMatchSymbols = buildString({ [0x01133A, 0x01133C], [0x01133E, 0x01134F], [0x011351, 0x01135C], - [0x011362, 0x0113FF], + [0x011362, 0x01137F], + [0x01138C, 0x01138D], + [0x0113B8, 0x0113D0], + [0x0113D4, 0x0113FF], [0x011435, 0x011446], [0x01144B, 0x01145E], [0x011462, 0x01147F], @@ -1278,7 +1306,8 @@ const nonMatchSymbols = buildString({ [0x011A51, 0x011A5B], [0x011A8A, 0x011A9C], [0x011A9E, 0x011AAF], - [0x011AF9, 0x011BFF], + [0x011AF9, 0x011BBF], + [0x011BE1, 0x011BFF], [0x011C2F, 0x011C3F], [0x011C41, 0x011C71], [0x011C90, 0x011CFF], @@ -1294,8 +1323,10 @@ const nonMatchSymbols = buildString({ [0x012544, 0x012F8F], [0x012FF1, 0x012FFF], [0x013430, 0x013440], - [0x013447, 0x0143FF], - [0x014647, 0x0167FF], + [0x013447, 0x01345F], + [0x0143FB, 0x0143FF], + [0x014647, 0x0160FF], + [0x01611E, 0x0167FF], [0x016A39, 0x016A3F], [0x016A5F, 0x016A6F], [0x016ABF, 0x016ACF], @@ -1303,14 +1334,15 @@ const nonMatchSymbols = buildString({ [0x016B30, 0x016B3F], [0x016B44, 0x016B62], [0x016B78, 0x016B7C], - [0x016B90, 0x016E3F], + [0x016B90, 0x016D3F], + [0x016D6D, 0x016E3F], [0x016E80, 0x016EFF], [0x016F4B, 0x016F4F], [0x016F51, 0x016F92], [0x016FA0, 0x016FDF], [0x016FE4, 0x016FFF], [0x0187F8, 0x0187FF], - [0x018CD6, 0x018CFF], + [0x018CD6, 0x018CFE], [0x018D09, 0x01AFEF], [0x01B123, 0x01B131], [0x01B133, 0x01B14F], @@ -1337,7 +1369,9 @@ const nonMatchSymbols = buildString({ [0x01E14F, 0x01E28F], [0x01E2AE, 0x01E2BF], [0x01E2EC, 0x01E4CF], - [0x01E4EC, 0x01E7DF], + [0x01E4EC, 0x01E5CF], + [0x01E5EE, 0x01E5EF], + [0x01E5F1, 0x01E7DF], [0x01E8C5, 0x01E8FF], [0x01E944, 0x01E94A], [0x01E94C, 0x01EDFF], diff --git a/test/built-ins/RegExp/property-escapes/generated/Ideographic.js b/test/built-ins/RegExp/property-escapes/generated/Ideographic.js index 5c3bfa021d9..881c1e08625 100644 --- a/test/built-ins/RegExp/property-escapes/generated/Ideographic.js +++ b/test/built-ins/RegExp/property-escapes/generated/Ideographic.js @@ -7,7 +7,7 @@ description: > Unicode property escapes for `Ideographic` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.1.0 + Unicode v16.0.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] @@ -27,7 +27,7 @@ const matchSymbols = buildString({ [0x00FA70, 0x00FAD9], [0x017000, 0x0187F7], [0x018800, 0x018CD5], - [0x018D00, 0x018D08], + [0x018CFF, 0x018D08], [0x01B170, 0x01B2FB], [0x020000, 0x02A6DF], [0x02A700, 0x02B739], @@ -66,7 +66,7 @@ const nonMatchSymbols = buildString({ [0x00FADA, 0x016FE3], [0x016FE5, 0x016FFF], [0x0187F8, 0x0187FF], - [0x018CD6, 0x018CFF], + [0x018CD6, 0x018CFE], [0x018D09, 0x01B16F], [0x01B2FC, 0x01FFFF], [0x02A6E0, 0x02A6FF], diff --git a/test/built-ins/RegExp/property-escapes/generated/Join_Control.js b/test/built-ins/RegExp/property-escapes/generated/Join_Control.js index c159a3c240d..477f724ee7b 100644 --- a/test/built-ins/RegExp/property-escapes/generated/Join_Control.js +++ b/test/built-ins/RegExp/property-escapes/generated/Join_Control.js @@ -7,7 +7,7 @@ description: > Unicode property escapes for `Join_Control` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.1.0 + Unicode v16.0.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/property-escapes/generated/Logical_Order_Exception.js b/test/built-ins/RegExp/property-escapes/generated/Logical_Order_Exception.js index 7e2f49f2344..95d654f3204 100644 --- a/test/built-ins/RegExp/property-escapes/generated/Logical_Order_Exception.js +++ b/test/built-ins/RegExp/property-escapes/generated/Logical_Order_Exception.js @@ -7,7 +7,7 @@ description: > Unicode property escapes for `Logical_Order_Exception` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.1.0 + Unicode v16.0.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/property-escapes/generated/Lowercase.js b/test/built-ins/RegExp/property-escapes/generated/Lowercase.js index 5a8678043b0..295c08d4635 100644 --- a/test/built-ins/RegExp/property-escapes/generated/Lowercase.js +++ b/test/built-ins/RegExp/property-escapes/generated/Lowercase.js @@ -7,7 +7,7 @@ description: > Unicode property escapes for `Lowercase` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.1.0 + Unicode v16.0.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] @@ -262,6 +262,7 @@ const matchSymbols = buildString({ 0x00052B, 0x00052D, 0x00052F, + 0x001C8A, 0x001E01, 0x001E03, 0x001E05, @@ -556,11 +557,13 @@ const matchSymbols = buildString({ 0x00A7C3, 0x00A7C8, 0x00A7CA, + 0x00A7CD, 0x00A7D1, 0x00A7D3, 0x00A7D5, 0x00A7D7, 0x00A7D9, + 0x00A7DB, 0x00A7F6, 0x010780, 0x01D4BB, @@ -655,6 +658,7 @@ const matchSymbols = buildString({ [0x010787, 0x0107B0], [0x0107B2, 0x0107BA], [0x010CC0, 0x010CF2], + [0x010D70, 0x010D85], [0x0118C0, 0x0118DF], [0x016E60, 0x016E7F], [0x01D41A, 0x01D433], @@ -937,6 +941,7 @@ const nonMatchSymbols = buildString({ 0x00052C, 0x00052E, 0x0010FB, + 0x001C89, 0x001E02, 0x001E04, 0x001E06, @@ -1222,6 +1227,7 @@ const nonMatchSymbols = buildString({ 0x00A7D4, 0x00A7D6, 0x00A7D8, + 0x00A7DA, 0x00A7F5, 0x00A7F7, 0x00AB5B, @@ -1289,7 +1295,7 @@ const nonMatchSymbols = buildString({ [0x000589, 0x0010CF], [0x001100, 0x0013F7], [0x0013FE, 0x001C7F], - [0x001C89, 0x001CFF], + [0x001C8B, 0x001CFF], [0x001DC0, 0x001E00], [0x001F08, 0x001F0F], [0x001F16, 0x001F1F], @@ -1340,8 +1346,9 @@ const nonMatchSymbols = buildString({ [0x00A7AA, 0x00A7AE], [0x00A7B0, 0x00A7B4], [0x00A7C4, 0x00A7C7], - [0x00A7CB, 0x00A7D0], - [0x00A7DA, 0x00A7F1], + [0x00A7CB, 0x00A7CC], + [0x00A7CE, 0x00A7D0], + [0x00A7DC, 0x00A7F1], [0x00A7FB, 0x00AB2F], [0x00AB6A, 0x00AB6F], [0x00ABC0, 0x00DBFF], @@ -1354,7 +1361,8 @@ const nonMatchSymbols = buildString({ [0x0105BD, 0x01077F], [0x010781, 0x010782], [0x0107BB, 0x010CBF], - [0x010CF3, 0x0118BF], + [0x010CF3, 0x010D6F], + [0x010D86, 0x0118BF], [0x0118E0, 0x016E5F], [0x016E80, 0x01D419], [0x01D434, 0x01D44D], diff --git a/test/built-ins/RegExp/property-escapes/generated/Math.js b/test/built-ins/RegExp/property-escapes/generated/Math.js index a8bcc36e3b9..7695556e4ba 100644 --- a/test/built-ins/RegExp/property-escapes/generated/Math.js +++ b/test/built-ins/RegExp/property-escapes/generated/Math.js @@ -7,7 +7,7 @@ description: > Unicode property escapes for `Math` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.1.0 + Unicode v16.0.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] @@ -119,6 +119,7 @@ const matchSymbols = buildString({ [0x00FE61, 0x00FE66], [0x00FF1C, 0x00FF1E], [0x00FFE9, 0x00FFEC], + [0x010D8E, 0x010D8F], [0x01D400, 0x01D454], [0x01D456, 0x01D49C], [0x01D49E, 0x01D49F], @@ -291,7 +292,8 @@ const nonMatchSymbols = buildString({ [0x00FF3F, 0x00FF5B], [0x00FF5F, 0x00FFE1], [0x00FFE3, 0x00FFE8], - [0x00FFED, 0x01D3FF], + [0x00FFED, 0x010D8D], + [0x010D90, 0x01D3FF], [0x01D4A0, 0x01D4A1], [0x01D4A3, 0x01D4A4], [0x01D4A7, 0x01D4A8], diff --git a/test/built-ins/RegExp/property-escapes/generated/Noncharacter_Code_Point.js b/test/built-ins/RegExp/property-escapes/generated/Noncharacter_Code_Point.js index 75992a337bd..7669a2acff4 100644 --- a/test/built-ins/RegExp/property-escapes/generated/Noncharacter_Code_Point.js +++ b/test/built-ins/RegExp/property-escapes/generated/Noncharacter_Code_Point.js @@ -7,7 +7,7 @@ description: > Unicode property escapes for `Noncharacter_Code_Point` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.1.0 + Unicode v16.0.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/property-escapes/generated/Pattern_Syntax.js b/test/built-ins/RegExp/property-escapes/generated/Pattern_Syntax.js index 8678b01094d..0b5581e4483 100644 --- a/test/built-ins/RegExp/property-escapes/generated/Pattern_Syntax.js +++ b/test/built-ins/RegExp/property-escapes/generated/Pattern_Syntax.js @@ -7,7 +7,7 @@ description: > Unicode property escapes for `Pattern_Syntax` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.1.0 + Unicode v16.0.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/property-escapes/generated/Pattern_White_Space.js b/test/built-ins/RegExp/property-escapes/generated/Pattern_White_Space.js index 00d72fd99f1..75f893a36ce 100644 --- a/test/built-ins/RegExp/property-escapes/generated/Pattern_White_Space.js +++ b/test/built-ins/RegExp/property-escapes/generated/Pattern_White_Space.js @@ -7,7 +7,7 @@ description: > Unicode property escapes for `Pattern_White_Space` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.1.0 + Unicode v16.0.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/property-escapes/generated/Quotation_Mark.js b/test/built-ins/RegExp/property-escapes/generated/Quotation_Mark.js index 9daa2c53198..fea177bd516 100644 --- a/test/built-ins/RegExp/property-escapes/generated/Quotation_Mark.js +++ b/test/built-ins/RegExp/property-escapes/generated/Quotation_Mark.js @@ -7,7 +7,7 @@ description: > Unicode property escapes for `Quotation_Mark` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.1.0 + Unicode v16.0.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/property-escapes/generated/Radical.js b/test/built-ins/RegExp/property-escapes/generated/Radical.js index 5b2b97eb45a..1481a76f285 100644 --- a/test/built-ins/RegExp/property-escapes/generated/Radical.js +++ b/test/built-ins/RegExp/property-escapes/generated/Radical.js @@ -7,7 +7,7 @@ description: > Unicode property escapes for `Radical` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.1.0 + Unicode v16.0.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/property-escapes/generated/Regional_Indicator.js b/test/built-ins/RegExp/property-escapes/generated/Regional_Indicator.js index 7b246605b28..9f710b7a1d1 100644 --- a/test/built-ins/RegExp/property-escapes/generated/Regional_Indicator.js +++ b/test/built-ins/RegExp/property-escapes/generated/Regional_Indicator.js @@ -7,7 +7,7 @@ description: > Unicode property escapes for `Regional_Indicator` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.1.0 + Unicode v16.0.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/property-escapes/generated/Script_-_Adlam.js b/test/built-ins/RegExp/property-escapes/generated/Script_-_Adlam.js index 3408e7d4254..129c85abf4d 100644 --- a/test/built-ins/RegExp/property-escapes/generated/Script_-_Adlam.js +++ b/test/built-ins/RegExp/property-escapes/generated/Script_-_Adlam.js @@ -7,7 +7,7 @@ description: > Unicode property escapes for `Script=Adlam` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.1.0 + Unicode v16.0.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/property-escapes/generated/Script_-_Ahom.js b/test/built-ins/RegExp/property-escapes/generated/Script_-_Ahom.js index e0ca26c05d3..7075cbcaee2 100644 --- a/test/built-ins/RegExp/property-escapes/generated/Script_-_Ahom.js +++ b/test/built-ins/RegExp/property-escapes/generated/Script_-_Ahom.js @@ -7,7 +7,7 @@ description: > Unicode property escapes for `Script=Ahom` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.1.0 + Unicode v16.0.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/property-escapes/generated/Script_-_Anatolian_Hieroglyphs.js b/test/built-ins/RegExp/property-escapes/generated/Script_-_Anatolian_Hieroglyphs.js index 7c26207688f..d7e4f36d001 100644 --- a/test/built-ins/RegExp/property-escapes/generated/Script_-_Anatolian_Hieroglyphs.js +++ b/test/built-ins/RegExp/property-escapes/generated/Script_-_Anatolian_Hieroglyphs.js @@ -7,7 +7,7 @@ description: > Unicode property escapes for `Script=Anatolian_Hieroglyphs` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.1.0 + Unicode v16.0.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/property-escapes/generated/Script_-_Arabic.js b/test/built-ins/RegExp/property-escapes/generated/Script_-_Arabic.js index b6777a13d9d..1b9463826fa 100644 --- a/test/built-ins/RegExp/property-escapes/generated/Script_-_Arabic.js +++ b/test/built-ins/RegExp/property-escapes/generated/Script_-_Arabic.js @@ -7,7 +7,7 @@ description: > Unicode property escapes for `Script=Arabic` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.1.0 + Unicode v16.0.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] @@ -46,7 +46,7 @@ const matchSymbols = buildString({ [0x000750, 0x00077F], [0x000870, 0x00088E], [0x000890, 0x000891], - [0x000898, 0x0008E1], + [0x000897, 0x0008E1], [0x0008E3, 0x0008FF], [0x00FB50, 0x00FBC2], [0x00FBD3, 0x00FD3D], @@ -56,7 +56,8 @@ const matchSymbols = buildString({ [0x00FE70, 0x00FE74], [0x00FE76, 0x00FEFC], [0x010E60, 0x010E7E], - [0x010EFD, 0x010EFF], + [0x010EC2, 0x010EC4], + [0x010EFC, 0x010EFF], [0x01EE00, 0x01EE03], [0x01EE05, 0x01EE1F], [0x01EE21, 0x01EE22], @@ -143,7 +144,7 @@ const nonMatchSymbols = buildString({ [0x00064B, 0x000655], [0x000700, 0x00074F], [0x000780, 0x00086F], - [0x000892, 0x000897], + [0x000892, 0x000896], [0x000900, 0x00DBFF], [0x00E000, 0x00FB4F], [0x00FBC3, 0x00FBD2], @@ -153,7 +154,8 @@ const nonMatchSymbols = buildString({ [0x00FDD0, 0x00FDEF], [0x00FE00, 0x00FE6F], [0x00FEFD, 0x010E5F], - [0x010E7F, 0x010EFC], + [0x010E7F, 0x010EC1], + [0x010EC5, 0x010EFB], [0x010F00, 0x01EDFF], [0x01EE25, 0x01EE26], [0x01EE3C, 0x01EE41], diff --git a/test/built-ins/RegExp/property-escapes/generated/Script_-_Armenian.js b/test/built-ins/RegExp/property-escapes/generated/Script_-_Armenian.js index 06dcf946a3f..13e861559e7 100644 --- a/test/built-ins/RegExp/property-escapes/generated/Script_-_Armenian.js +++ b/test/built-ins/RegExp/property-escapes/generated/Script_-_Armenian.js @@ -7,7 +7,7 @@ description: > Unicode property escapes for `Script=Armenian` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.1.0 + Unicode v16.0.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/property-escapes/generated/Script_-_Avestan.js b/test/built-ins/RegExp/property-escapes/generated/Script_-_Avestan.js index 5a63843625c..e47f346912f 100644 --- a/test/built-ins/RegExp/property-escapes/generated/Script_-_Avestan.js +++ b/test/built-ins/RegExp/property-escapes/generated/Script_-_Avestan.js @@ -7,7 +7,7 @@ description: > Unicode property escapes for `Script=Avestan` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.1.0 + Unicode v16.0.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/property-escapes/generated/Script_-_Balinese.js b/test/built-ins/RegExp/property-escapes/generated/Script_-_Balinese.js index 03a429d6a2d..887084b5a52 100644 --- a/test/built-ins/RegExp/property-escapes/generated/Script_-_Balinese.js +++ b/test/built-ins/RegExp/property-escapes/generated/Script_-_Balinese.js @@ -7,7 +7,7 @@ description: > Unicode property escapes for `Script=Balinese` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.1.0 + Unicode v16.0.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] @@ -17,7 +17,7 @@ const matchSymbols = buildString({ loneCodePoints: [], ranges: [ [0x001B00, 0x001B4C], - [0x001B50, 0x001B7E] + [0x001B4E, 0x001B7F] ] }); testPropertyEscapes( @@ -42,12 +42,13 @@ testPropertyEscapes( ); const nonMatchSymbols = buildString({ - loneCodePoints: [], + loneCodePoints: [ + 0x001B4D + ], ranges: [ [0x00DC00, 0x00DFFF], [0x000000, 0x001AFF], - [0x001B4D, 0x001B4F], - [0x001B7F, 0x00DBFF], + [0x001B80, 0x00DBFF], [0x00E000, 0x10FFFF] ] }); diff --git a/test/built-ins/RegExp/property-escapes/generated/Script_-_Bamum.js b/test/built-ins/RegExp/property-escapes/generated/Script_-_Bamum.js index 32078d6757f..401a99f52ed 100644 --- a/test/built-ins/RegExp/property-escapes/generated/Script_-_Bamum.js +++ b/test/built-ins/RegExp/property-escapes/generated/Script_-_Bamum.js @@ -7,7 +7,7 @@ description: > Unicode property escapes for `Script=Bamum` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.1.0 + Unicode v16.0.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/property-escapes/generated/Script_-_Bassa_Vah.js b/test/built-ins/RegExp/property-escapes/generated/Script_-_Bassa_Vah.js index 18dc5071f4f..5820eea166e 100644 --- a/test/built-ins/RegExp/property-escapes/generated/Script_-_Bassa_Vah.js +++ b/test/built-ins/RegExp/property-escapes/generated/Script_-_Bassa_Vah.js @@ -7,7 +7,7 @@ description: > Unicode property escapes for `Script=Bassa_Vah` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.1.0 + Unicode v16.0.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/property-escapes/generated/Script_-_Batak.js b/test/built-ins/RegExp/property-escapes/generated/Script_-_Batak.js index b3a03e74f28..8bd84f2b96a 100644 --- a/test/built-ins/RegExp/property-escapes/generated/Script_-_Batak.js +++ b/test/built-ins/RegExp/property-escapes/generated/Script_-_Batak.js @@ -7,7 +7,7 @@ description: > Unicode property escapes for `Script=Batak` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.1.0 + Unicode v16.0.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/property-escapes/generated/Script_-_Bengali.js b/test/built-ins/RegExp/property-escapes/generated/Script_-_Bengali.js index 10a628bcc28..ec45864102c 100644 --- a/test/built-ins/RegExp/property-escapes/generated/Script_-_Bengali.js +++ b/test/built-ins/RegExp/property-escapes/generated/Script_-_Bengali.js @@ -7,7 +7,7 @@ description: > Unicode property escapes for `Script=Bengali` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.1.0 + Unicode v16.0.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/property-escapes/generated/Script_-_Bhaiksuki.js b/test/built-ins/RegExp/property-escapes/generated/Script_-_Bhaiksuki.js index ed31932478c..c93726657ef 100644 --- a/test/built-ins/RegExp/property-escapes/generated/Script_-_Bhaiksuki.js +++ b/test/built-ins/RegExp/property-escapes/generated/Script_-_Bhaiksuki.js @@ -7,7 +7,7 @@ description: > Unicode property escapes for `Script=Bhaiksuki` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.1.0 + Unicode v16.0.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/property-escapes/generated/Script_-_Bopomofo.js b/test/built-ins/RegExp/property-escapes/generated/Script_-_Bopomofo.js index 0cd5b93115a..91f6a553d76 100644 --- a/test/built-ins/RegExp/property-escapes/generated/Script_-_Bopomofo.js +++ b/test/built-ins/RegExp/property-escapes/generated/Script_-_Bopomofo.js @@ -7,7 +7,7 @@ description: > Unicode property escapes for `Script=Bopomofo` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.1.0 + Unicode v16.0.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/property-escapes/generated/Script_-_Brahmi.js b/test/built-ins/RegExp/property-escapes/generated/Script_-_Brahmi.js index 2c02c47c82a..6b78dc62533 100644 --- a/test/built-ins/RegExp/property-escapes/generated/Script_-_Brahmi.js +++ b/test/built-ins/RegExp/property-escapes/generated/Script_-_Brahmi.js @@ -7,7 +7,7 @@ description: > Unicode property escapes for `Script=Brahmi` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.1.0 + Unicode v16.0.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/property-escapes/generated/Script_-_Braille.js b/test/built-ins/RegExp/property-escapes/generated/Script_-_Braille.js index b31f0cc0bee..c7f63d69850 100644 --- a/test/built-ins/RegExp/property-escapes/generated/Script_-_Braille.js +++ b/test/built-ins/RegExp/property-escapes/generated/Script_-_Braille.js @@ -7,7 +7,7 @@ description: > Unicode property escapes for `Script=Braille` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.1.0 + Unicode v16.0.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/property-escapes/generated/Script_-_Buginese.js b/test/built-ins/RegExp/property-escapes/generated/Script_-_Buginese.js index 67e35081d61..ee96d830616 100644 --- a/test/built-ins/RegExp/property-escapes/generated/Script_-_Buginese.js +++ b/test/built-ins/RegExp/property-escapes/generated/Script_-_Buginese.js @@ -7,7 +7,7 @@ description: > Unicode property escapes for `Script=Buginese` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.1.0 + Unicode v16.0.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/property-escapes/generated/Script_-_Buhid.js b/test/built-ins/RegExp/property-escapes/generated/Script_-_Buhid.js index a404578ca04..3d59aea1302 100644 --- a/test/built-ins/RegExp/property-escapes/generated/Script_-_Buhid.js +++ b/test/built-ins/RegExp/property-escapes/generated/Script_-_Buhid.js @@ -7,7 +7,7 @@ description: > Unicode property escapes for `Script=Buhid` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.1.0 + Unicode v16.0.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/property-escapes/generated/Script_-_Canadian_Aboriginal.js b/test/built-ins/RegExp/property-escapes/generated/Script_-_Canadian_Aboriginal.js index 9c6039638d1..15dad3cb9b6 100644 --- a/test/built-ins/RegExp/property-escapes/generated/Script_-_Canadian_Aboriginal.js +++ b/test/built-ins/RegExp/property-escapes/generated/Script_-_Canadian_Aboriginal.js @@ -7,7 +7,7 @@ description: > Unicode property escapes for `Script=Canadian_Aboriginal` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.1.0 + Unicode v16.0.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/property-escapes/generated/Script_-_Carian.js b/test/built-ins/RegExp/property-escapes/generated/Script_-_Carian.js index 9b275533b45..4917f9ad761 100644 --- a/test/built-ins/RegExp/property-escapes/generated/Script_-_Carian.js +++ b/test/built-ins/RegExp/property-escapes/generated/Script_-_Carian.js @@ -7,7 +7,7 @@ description: > Unicode property escapes for `Script=Carian` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.1.0 + Unicode v16.0.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/property-escapes/generated/Script_-_Caucasian_Albanian.js b/test/built-ins/RegExp/property-escapes/generated/Script_-_Caucasian_Albanian.js index be886bced0d..bd2398afbb1 100644 --- a/test/built-ins/RegExp/property-escapes/generated/Script_-_Caucasian_Albanian.js +++ b/test/built-ins/RegExp/property-escapes/generated/Script_-_Caucasian_Albanian.js @@ -7,7 +7,7 @@ description: > Unicode property escapes for `Script=Caucasian_Albanian` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.1.0 + Unicode v16.0.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/property-escapes/generated/Script_-_Chakma.js b/test/built-ins/RegExp/property-escapes/generated/Script_-_Chakma.js index 0cee8eab485..0111699629e 100644 --- a/test/built-ins/RegExp/property-escapes/generated/Script_-_Chakma.js +++ b/test/built-ins/RegExp/property-escapes/generated/Script_-_Chakma.js @@ -7,7 +7,7 @@ description: > Unicode property escapes for `Script=Chakma` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.1.0 + Unicode v16.0.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/property-escapes/generated/Script_-_Cham.js b/test/built-ins/RegExp/property-escapes/generated/Script_-_Cham.js index 3535f767e77..aeea9798af9 100644 --- a/test/built-ins/RegExp/property-escapes/generated/Script_-_Cham.js +++ b/test/built-ins/RegExp/property-escapes/generated/Script_-_Cham.js @@ -7,7 +7,7 @@ description: > Unicode property escapes for `Script=Cham` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.1.0 + Unicode v16.0.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/property-escapes/generated/Script_-_Cherokee.js b/test/built-ins/RegExp/property-escapes/generated/Script_-_Cherokee.js index 876fa1a534b..f69cd716fdb 100644 --- a/test/built-ins/RegExp/property-escapes/generated/Script_-_Cherokee.js +++ b/test/built-ins/RegExp/property-escapes/generated/Script_-_Cherokee.js @@ -7,7 +7,7 @@ description: > Unicode property escapes for `Script=Cherokee` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.1.0 + Unicode v16.0.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/property-escapes/generated/Script_-_Chorasmian.js b/test/built-ins/RegExp/property-escapes/generated/Script_-_Chorasmian.js index bb740ba3dec..a90304fc52c 100644 --- a/test/built-ins/RegExp/property-escapes/generated/Script_-_Chorasmian.js +++ b/test/built-ins/RegExp/property-escapes/generated/Script_-_Chorasmian.js @@ -7,7 +7,7 @@ description: > Unicode property escapes for `Script=Chorasmian` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.1.0 + Unicode v16.0.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/property-escapes/generated/Script_-_Common.js b/test/built-ins/RegExp/property-escapes/generated/Script_-_Common.js index 601771dba33..03e0c5b9e20 100644 --- a/test/built-ins/RegExp/property-escapes/generated/Script_-_Common.js +++ b/test/built-ins/RegExp/property-escapes/generated/Script_-_Common.js @@ -7,7 +7,7 @@ description: > Unicode property escapes for `Script=Common` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.1.0 + Unicode v16.0.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] @@ -78,7 +78,7 @@ const matchSymbols = buildString({ [0x002133, 0x00214D], [0x00214F, 0x00215F], [0x002189, 0x00218B], - [0x002190, 0x002426], + [0x002190, 0x002429], [0x002440, 0x00244A], [0x002460, 0x0027FF], [0x002900, 0x002B73], @@ -92,7 +92,7 @@ const matchSymbols = buildString({ [0x00309B, 0x00309C], [0x0030FB, 0x0030FC], [0x003190, 0x00319F], - [0x0031C0, 0x0031E3], + [0x0031C0, 0x0031E5], [0x003220, 0x00325F], [0x00327F, 0x0032CF], [0x003358, 0x0033FF], @@ -120,6 +120,8 @@ const matchSymbols = buildString({ [0x0101D0, 0x0101FC], [0x0102E1, 0x0102FB], [0x01BCA0, 0x01BCA3], + [0x01CC00, 0x01CCF9], + [0x01CD00, 0x01CEB3], [0x01CF50, 0x01CFC3], [0x01D000, 0x01D0F5], [0x01D100, 0x01D126], @@ -176,19 +178,18 @@ const matchSymbols = buildString({ [0x01F850, 0x01F859], [0x01F860, 0x01F887], [0x01F890, 0x01F8AD], - [0x01F8B0, 0x01F8B1], + [0x01F8B0, 0x01F8BB], + [0x01F8C0, 0x01F8C1], [0x01F900, 0x01FA53], [0x01FA60, 0x01FA6D], [0x01FA70, 0x01FA7C], - [0x01FA80, 0x01FA88], - [0x01FA90, 0x01FABD], - [0x01FABF, 0x01FAC5], - [0x01FACE, 0x01FADB], - [0x01FAE0, 0x01FAE8], + [0x01FA80, 0x01FA89], + [0x01FA8F, 0x01FAC6], + [0x01FACE, 0x01FADC], + [0x01FADF, 0x01FAE9], [0x01FAF0, 0x01FAF8], [0x01FB00, 0x01FB92], - [0x01FB94, 0x01FBCA], - [0x01FBF0, 0x01FBF9], + [0x01FB94, 0x01FBF9], [0x0E0020, 0x0E007F] ] }); @@ -249,7 +250,6 @@ const nonMatchSymbols = buildString({ 0x01F0C0, 0x01F0D0, 0x01F200, - 0x01FABE, 0x01FB93 ], ranges: [ @@ -290,7 +290,7 @@ const nonMatchSymbols = buildString({ [0x00212A, 0x00212B], [0x002160, 0x002188], [0x00218C, 0x00218F], - [0x002427, 0x00243F], + [0x00242A, 0x00243F], [0x00244B, 0x00245F], [0x002800, 0x0028FF], [0x002B74, 0x002B75], @@ -303,7 +303,7 @@ const nonMatchSymbols = buildString({ [0x0030A1, 0x0030FA], [0x0030FD, 0x00318F], [0x0031A0, 0x0031BF], - [0x0031E4, 0x0031EE], + [0x0031E6, 0x0031EE], [0x0031F0, 0x00321F], [0x003260, 0x00327E], [0x0032D0, 0x0032FE], @@ -334,7 +334,9 @@ const nonMatchSymbols = buildString({ [0x01019D, 0x0101CF], [0x0101FD, 0x0102E0], [0x0102FC, 0x01BC9F], - [0x01BCA4, 0x01CF4F], + [0x01BCA4, 0x01CBFF], + [0x01CCFA, 0x01CCFF], + [0x01CEB4, 0x01CF4F], [0x01CFC4, 0x01CFFF], [0x01D0F6, 0x01D0FF], [0x01D127, 0x01D128], @@ -379,16 +381,16 @@ const nonMatchSymbols = buildString({ [0x01F85A, 0x01F85F], [0x01F888, 0x01F88F], [0x01F8AE, 0x01F8AF], - [0x01F8B2, 0x01F8FF], + [0x01F8BC, 0x01F8BF], + [0x01F8C2, 0x01F8FF], [0x01FA54, 0x01FA5F], [0x01FA6E, 0x01FA6F], [0x01FA7D, 0x01FA7F], - [0x01FA89, 0x01FA8F], - [0x01FAC6, 0x01FACD], - [0x01FADC, 0x01FADF], - [0x01FAE9, 0x01FAEF], + [0x01FA8A, 0x01FA8E], + [0x01FAC7, 0x01FACD], + [0x01FADD, 0x01FADE], + [0x01FAEA, 0x01FAEF], [0x01FAF9, 0x01FAFF], - [0x01FBCB, 0x01FBEF], [0x01FBFA, 0x0E0000], [0x0E0002, 0x0E001F], [0x0E0080, 0x10FFFF] diff --git a/test/built-ins/RegExp/property-escapes/generated/Script_-_Coptic.js b/test/built-ins/RegExp/property-escapes/generated/Script_-_Coptic.js index e61b39b5dfb..ca5d32b5933 100644 --- a/test/built-ins/RegExp/property-escapes/generated/Script_-_Coptic.js +++ b/test/built-ins/RegExp/property-escapes/generated/Script_-_Coptic.js @@ -7,7 +7,7 @@ description: > Unicode property escapes for `Script=Coptic` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.1.0 + Unicode v16.0.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/property-escapes/generated/Script_-_Cuneiform.js b/test/built-ins/RegExp/property-escapes/generated/Script_-_Cuneiform.js index 236210e4696..4235d96bbcd 100644 --- a/test/built-ins/RegExp/property-escapes/generated/Script_-_Cuneiform.js +++ b/test/built-ins/RegExp/property-escapes/generated/Script_-_Cuneiform.js @@ -7,7 +7,7 @@ description: > Unicode property escapes for `Script=Cuneiform` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.1.0 + Unicode v16.0.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/property-escapes/generated/Script_-_Cypriot.js b/test/built-ins/RegExp/property-escapes/generated/Script_-_Cypriot.js index 307a6d27494..e8cb0cc90cf 100644 --- a/test/built-ins/RegExp/property-escapes/generated/Script_-_Cypriot.js +++ b/test/built-ins/RegExp/property-escapes/generated/Script_-_Cypriot.js @@ -7,7 +7,7 @@ description: > Unicode property escapes for `Script=Cypriot` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.1.0 + Unicode v16.0.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/property-escapes/generated/Script_-_Cypro_Minoan.js b/test/built-ins/RegExp/property-escapes/generated/Script_-_Cypro_Minoan.js index 1d38f55e8db..a6d5e817cdd 100644 --- a/test/built-ins/RegExp/property-escapes/generated/Script_-_Cypro_Minoan.js +++ b/test/built-ins/RegExp/property-escapes/generated/Script_-_Cypro_Minoan.js @@ -7,7 +7,7 @@ description: > Unicode property escapes for `Script=Cypro_Minoan` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.1.0 + Unicode v16.0.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/property-escapes/generated/Script_-_Cyrillic.js b/test/built-ins/RegExp/property-escapes/generated/Script_-_Cyrillic.js index 842c2526ecb..f188dbaa6c3 100644 --- a/test/built-ins/RegExp/property-escapes/generated/Script_-_Cyrillic.js +++ b/test/built-ins/RegExp/property-escapes/generated/Script_-_Cyrillic.js @@ -7,7 +7,7 @@ description: > Unicode property escapes for `Script=Cyrillic` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.1.0 + Unicode v16.0.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] @@ -22,7 +22,7 @@ const matchSymbols = buildString({ ranges: [ [0x000400, 0x000484], [0x000487, 0x00052F], - [0x001C80, 0x001C88], + [0x001C80, 0x001C8A], [0x002DE0, 0x002DFF], [0x00A640, 0x00A69F], [0x00FE2E, 0x00FE2F], @@ -57,7 +57,7 @@ const nonMatchSymbols = buildString({ [0x000000, 0x0003FF], [0x000485, 0x000486], [0x000530, 0x001C7F], - [0x001C89, 0x001D2A], + [0x001C8B, 0x001D2A], [0x001D2C, 0x001D77], [0x001D79, 0x002DDF], [0x002E00, 0x00A63F], diff --git a/test/built-ins/RegExp/property-escapes/generated/Script_-_Deseret.js b/test/built-ins/RegExp/property-escapes/generated/Script_-_Deseret.js index 295ce6f7c50..e3ca791c691 100644 --- a/test/built-ins/RegExp/property-escapes/generated/Script_-_Deseret.js +++ b/test/built-ins/RegExp/property-escapes/generated/Script_-_Deseret.js @@ -7,7 +7,7 @@ description: > Unicode property escapes for `Script=Deseret` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.1.0 + Unicode v16.0.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/property-escapes/generated/Script_-_Devanagari.js b/test/built-ins/RegExp/property-escapes/generated/Script_-_Devanagari.js index c354051a48a..1c7d310df91 100644 --- a/test/built-ins/RegExp/property-escapes/generated/Script_-_Devanagari.js +++ b/test/built-ins/RegExp/property-escapes/generated/Script_-_Devanagari.js @@ -7,7 +7,7 @@ description: > Unicode property escapes for `Script=Devanagari` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.1.0 + Unicode v16.0.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/property-escapes/generated/Script_-_Dives_Akuru.js b/test/built-ins/RegExp/property-escapes/generated/Script_-_Dives_Akuru.js index f16b0c8875e..f406e090ead 100644 --- a/test/built-ins/RegExp/property-escapes/generated/Script_-_Dives_Akuru.js +++ b/test/built-ins/RegExp/property-escapes/generated/Script_-_Dives_Akuru.js @@ -7,7 +7,7 @@ description: > Unicode property escapes for `Script=Dives_Akuru` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.1.0 + Unicode v16.0.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/property-escapes/generated/Script_-_Dogra.js b/test/built-ins/RegExp/property-escapes/generated/Script_-_Dogra.js index 253e79e96e3..78bc16501e0 100644 --- a/test/built-ins/RegExp/property-escapes/generated/Script_-_Dogra.js +++ b/test/built-ins/RegExp/property-escapes/generated/Script_-_Dogra.js @@ -7,7 +7,7 @@ description: > Unicode property escapes for `Script=Dogra` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.1.0 + Unicode v16.0.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/property-escapes/generated/Script_-_Duployan.js b/test/built-ins/RegExp/property-escapes/generated/Script_-_Duployan.js index d95132209c4..2af59767957 100644 --- a/test/built-ins/RegExp/property-escapes/generated/Script_-_Duployan.js +++ b/test/built-ins/RegExp/property-escapes/generated/Script_-_Duployan.js @@ -7,7 +7,7 @@ description: > Unicode property escapes for `Script=Duployan` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.1.0 + Unicode v16.0.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/property-escapes/generated/Script_-_Egyptian_Hieroglyphs.js b/test/built-ins/RegExp/property-escapes/generated/Script_-_Egyptian_Hieroglyphs.js index 6d42aaf4f73..eaa212847db 100644 --- a/test/built-ins/RegExp/property-escapes/generated/Script_-_Egyptian_Hieroglyphs.js +++ b/test/built-ins/RegExp/property-escapes/generated/Script_-_Egyptian_Hieroglyphs.js @@ -7,7 +7,7 @@ description: > Unicode property escapes for `Script=Egyptian_Hieroglyphs` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.1.0 + Unicode v16.0.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] @@ -16,7 +16,8 @@ includes: [regExpUtils.js] const matchSymbols = buildString({ loneCodePoints: [], ranges: [ - [0x013000, 0x013455] + [0x013000, 0x013455], + [0x013460, 0x0143FA] ] }); testPropertyEscapes( @@ -46,7 +47,8 @@ const nonMatchSymbols = buildString({ [0x00DC00, 0x00DFFF], [0x000000, 0x00DBFF], [0x00E000, 0x012FFF], - [0x013456, 0x10FFFF] + [0x013456, 0x01345F], + [0x0143FB, 0x10FFFF] ] }); testPropertyEscapes( diff --git a/test/built-ins/RegExp/property-escapes/generated/Script_-_Elbasan.js b/test/built-ins/RegExp/property-escapes/generated/Script_-_Elbasan.js index 7e228ac197b..d0fad5dffec 100644 --- a/test/built-ins/RegExp/property-escapes/generated/Script_-_Elbasan.js +++ b/test/built-ins/RegExp/property-escapes/generated/Script_-_Elbasan.js @@ -7,7 +7,7 @@ description: > Unicode property escapes for `Script=Elbasan` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.1.0 + Unicode v16.0.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/property-escapes/generated/Script_-_Elymaic.js b/test/built-ins/RegExp/property-escapes/generated/Script_-_Elymaic.js index 7b146a4cca7..f8334b851f7 100644 --- a/test/built-ins/RegExp/property-escapes/generated/Script_-_Elymaic.js +++ b/test/built-ins/RegExp/property-escapes/generated/Script_-_Elymaic.js @@ -7,7 +7,7 @@ description: > Unicode property escapes for `Script=Elymaic` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.1.0 + Unicode v16.0.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/property-escapes/generated/Script_-_Ethiopic.js b/test/built-ins/RegExp/property-escapes/generated/Script_-_Ethiopic.js index b3e34468b70..8b49463d5b4 100644 --- a/test/built-ins/RegExp/property-escapes/generated/Script_-_Ethiopic.js +++ b/test/built-ins/RegExp/property-escapes/generated/Script_-_Ethiopic.js @@ -7,7 +7,7 @@ description: > Unicode property escapes for `Script=Ethiopic` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.1.0 + Unicode v16.0.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/property-escapes/generated/Script_-_Garay.js b/test/built-ins/RegExp/property-escapes/generated/Script_-_Garay.js new file mode 100644 index 00000000000..f915b7ddbd7 --- /dev/null +++ b/test/built-ins/RegExp/property-escapes/generated/Script_-_Garay.js @@ -0,0 +1,75 @@ +// Copyright 2024 Mathias Bynens. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +author: Mathias Bynens +description: > + Unicode property escapes for `Script=Garay` +info: | + Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests + Unicode v16.0.0 +esid: sec-static-semantics-unicodematchproperty-p +features: [regexp-unicode-property-escapes] +includes: [regExpUtils.js] +---*/ + +const matchSymbols = buildString({ + loneCodePoints: [], + ranges: [ + [0x010D40, 0x010D65], + [0x010D69, 0x010D85], + [0x010D8E, 0x010D8F] + ] +}); +testPropertyEscapes( + /^\p{Script=Garay}+$/u, + matchSymbols, + "\\p{Script=Garay}" +); +testPropertyEscapes( + /^\p{Script=Gara}+$/u, + matchSymbols, + "\\p{Script=Gara}" +); +testPropertyEscapes( + /^\p{sc=Garay}+$/u, + matchSymbols, + "\\p{sc=Garay}" +); +testPropertyEscapes( + /^\p{sc=Gara}+$/u, + matchSymbols, + "\\p{sc=Gara}" +); + +const nonMatchSymbols = buildString({ + loneCodePoints: [], + ranges: [ + [0x00DC00, 0x00DFFF], + [0x000000, 0x00DBFF], + [0x00E000, 0x010D3F], + [0x010D66, 0x010D68], + [0x010D86, 0x010D8D], + [0x010D90, 0x10FFFF] + ] +}); +testPropertyEscapes( + /^\P{Script=Garay}+$/u, + nonMatchSymbols, + "\\P{Script=Garay}" +); +testPropertyEscapes( + /^\P{Script=Gara}+$/u, + nonMatchSymbols, + "\\P{Script=Gara}" +); +testPropertyEscapes( + /^\P{sc=Garay}+$/u, + nonMatchSymbols, + "\\P{sc=Garay}" +); +testPropertyEscapes( + /^\P{sc=Gara}+$/u, + nonMatchSymbols, + "\\P{sc=Gara}" +); diff --git a/test/built-ins/RegExp/property-escapes/generated/Script_-_Georgian.js b/test/built-ins/RegExp/property-escapes/generated/Script_-_Georgian.js index 39aca2bd9a7..b9b9a7dce41 100644 --- a/test/built-ins/RegExp/property-escapes/generated/Script_-_Georgian.js +++ b/test/built-ins/RegExp/property-escapes/generated/Script_-_Georgian.js @@ -7,7 +7,7 @@ description: > Unicode property escapes for `Script=Georgian` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.1.0 + Unicode v16.0.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/property-escapes/generated/Script_-_Glagolitic.js b/test/built-ins/RegExp/property-escapes/generated/Script_-_Glagolitic.js index 3f24487d38c..d3a0baf654b 100644 --- a/test/built-ins/RegExp/property-escapes/generated/Script_-_Glagolitic.js +++ b/test/built-ins/RegExp/property-escapes/generated/Script_-_Glagolitic.js @@ -7,7 +7,7 @@ description: > Unicode property escapes for `Script=Glagolitic` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.1.0 + Unicode v16.0.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/property-escapes/generated/Script_-_Gothic.js b/test/built-ins/RegExp/property-escapes/generated/Script_-_Gothic.js index a8c35167896..df472f2acd4 100644 --- a/test/built-ins/RegExp/property-escapes/generated/Script_-_Gothic.js +++ b/test/built-ins/RegExp/property-escapes/generated/Script_-_Gothic.js @@ -7,7 +7,7 @@ description: > Unicode property escapes for `Script=Gothic` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.1.0 + Unicode v16.0.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/property-escapes/generated/Script_-_Grantha.js b/test/built-ins/RegExp/property-escapes/generated/Script_-_Grantha.js index 1eb18815132..26f3f2ffee8 100644 --- a/test/built-ins/RegExp/property-escapes/generated/Script_-_Grantha.js +++ b/test/built-ins/RegExp/property-escapes/generated/Script_-_Grantha.js @@ -7,7 +7,7 @@ description: > Unicode property escapes for `Script=Grantha` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.1.0 + Unicode v16.0.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/property-escapes/generated/Script_-_Greek.js b/test/built-ins/RegExp/property-escapes/generated/Script_-_Greek.js index 40d554bbf94..0fe741bfcb3 100644 --- a/test/built-ins/RegExp/property-escapes/generated/Script_-_Greek.js +++ b/test/built-ins/RegExp/property-escapes/generated/Script_-_Greek.js @@ -7,7 +7,7 @@ description: > Unicode property escapes for `Script=Greek` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.1.0 + Unicode v16.0.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/property-escapes/generated/Script_-_Gujarati.js b/test/built-ins/RegExp/property-escapes/generated/Script_-_Gujarati.js index c3ca9efeb89..c3df87578bd 100644 --- a/test/built-ins/RegExp/property-escapes/generated/Script_-_Gujarati.js +++ b/test/built-ins/RegExp/property-escapes/generated/Script_-_Gujarati.js @@ -7,7 +7,7 @@ description: > Unicode property escapes for `Script=Gujarati` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.1.0 + Unicode v16.0.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/property-escapes/generated/Script_-_Gunjala_Gondi.js b/test/built-ins/RegExp/property-escapes/generated/Script_-_Gunjala_Gondi.js index 3b96ec41bb5..1f02b01ba92 100644 --- a/test/built-ins/RegExp/property-escapes/generated/Script_-_Gunjala_Gondi.js +++ b/test/built-ins/RegExp/property-escapes/generated/Script_-_Gunjala_Gondi.js @@ -7,7 +7,7 @@ description: > Unicode property escapes for `Script=Gunjala_Gondi` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.1.0 + Unicode v16.0.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/property-escapes/generated/Script_-_Gurmukhi.js b/test/built-ins/RegExp/property-escapes/generated/Script_-_Gurmukhi.js index d0bea1f511f..19c2c8df64d 100644 --- a/test/built-ins/RegExp/property-escapes/generated/Script_-_Gurmukhi.js +++ b/test/built-ins/RegExp/property-escapes/generated/Script_-_Gurmukhi.js @@ -7,7 +7,7 @@ description: > Unicode property escapes for `Script=Gurmukhi` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.1.0 + Unicode v16.0.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/property-escapes/generated/Script_-_Gurung_Khema.js b/test/built-ins/RegExp/property-escapes/generated/Script_-_Gurung_Khema.js new file mode 100644 index 00000000000..0e2b4a35274 --- /dev/null +++ b/test/built-ins/RegExp/property-escapes/generated/Script_-_Gurung_Khema.js @@ -0,0 +1,71 @@ +// Copyright 2024 Mathias Bynens. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +author: Mathias Bynens +description: > + Unicode property escapes for `Script=Gurung_Khema` +info: | + Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests + Unicode v16.0.0 +esid: sec-static-semantics-unicodematchproperty-p +features: [regexp-unicode-property-escapes] +includes: [regExpUtils.js] +---*/ + +const matchSymbols = buildString({ + loneCodePoints: [], + ranges: [ + [0x016100, 0x016139] + ] +}); +testPropertyEscapes( + /^\p{Script=Gurung_Khema}+$/u, + matchSymbols, + "\\p{Script=Gurung_Khema}" +); +testPropertyEscapes( + /^\p{Script=Gukh}+$/u, + matchSymbols, + "\\p{Script=Gukh}" +); +testPropertyEscapes( + /^\p{sc=Gurung_Khema}+$/u, + matchSymbols, + "\\p{sc=Gurung_Khema}" +); +testPropertyEscapes( + /^\p{sc=Gukh}+$/u, + matchSymbols, + "\\p{sc=Gukh}" +); + +const nonMatchSymbols = buildString({ + loneCodePoints: [], + ranges: [ + [0x00DC00, 0x00DFFF], + [0x000000, 0x00DBFF], + [0x00E000, 0x0160FF], + [0x01613A, 0x10FFFF] + ] +}); +testPropertyEscapes( + /^\P{Script=Gurung_Khema}+$/u, + nonMatchSymbols, + "\\P{Script=Gurung_Khema}" +); +testPropertyEscapes( + /^\P{Script=Gukh}+$/u, + nonMatchSymbols, + "\\P{Script=Gukh}" +); +testPropertyEscapes( + /^\P{sc=Gurung_Khema}+$/u, + nonMatchSymbols, + "\\P{sc=Gurung_Khema}" +); +testPropertyEscapes( + /^\P{sc=Gukh}+$/u, + nonMatchSymbols, + "\\P{sc=Gukh}" +); diff --git a/test/built-ins/RegExp/property-escapes/generated/Script_-_Han.js b/test/built-ins/RegExp/property-escapes/generated/Script_-_Han.js index 77d4eb87577..2dca158fe36 100644 --- a/test/built-ins/RegExp/property-escapes/generated/Script_-_Han.js +++ b/test/built-ins/RegExp/property-escapes/generated/Script_-_Han.js @@ -7,7 +7,7 @@ description: > Unicode property escapes for `Script=Han` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.1.0 + Unicode v16.0.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/property-escapes/generated/Script_-_Hangul.js b/test/built-ins/RegExp/property-escapes/generated/Script_-_Hangul.js index 2ac43c16de1..9f3a79117a5 100644 --- a/test/built-ins/RegExp/property-escapes/generated/Script_-_Hangul.js +++ b/test/built-ins/RegExp/property-escapes/generated/Script_-_Hangul.js @@ -7,7 +7,7 @@ description: > Unicode property escapes for `Script=Hangul` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.1.0 + Unicode v16.0.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/property-escapes/generated/Script_-_Hanifi_Rohingya.js b/test/built-ins/RegExp/property-escapes/generated/Script_-_Hanifi_Rohingya.js index 9a10747072e..a8e099c44ce 100644 --- a/test/built-ins/RegExp/property-escapes/generated/Script_-_Hanifi_Rohingya.js +++ b/test/built-ins/RegExp/property-escapes/generated/Script_-_Hanifi_Rohingya.js @@ -7,7 +7,7 @@ description: > Unicode property escapes for `Script=Hanifi_Rohingya` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.1.0 + Unicode v16.0.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/property-escapes/generated/Script_-_Hanunoo.js b/test/built-ins/RegExp/property-escapes/generated/Script_-_Hanunoo.js index 2cb433f5c9f..ac5de401275 100644 --- a/test/built-ins/RegExp/property-escapes/generated/Script_-_Hanunoo.js +++ b/test/built-ins/RegExp/property-escapes/generated/Script_-_Hanunoo.js @@ -7,7 +7,7 @@ description: > Unicode property escapes for `Script=Hanunoo` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.1.0 + Unicode v16.0.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/property-escapes/generated/Script_-_Hatran.js b/test/built-ins/RegExp/property-escapes/generated/Script_-_Hatran.js index 6d40da2dc78..58d3826607b 100644 --- a/test/built-ins/RegExp/property-escapes/generated/Script_-_Hatran.js +++ b/test/built-ins/RegExp/property-escapes/generated/Script_-_Hatran.js @@ -7,7 +7,7 @@ description: > Unicode property escapes for `Script=Hatran` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.1.0 + Unicode v16.0.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/property-escapes/generated/Script_-_Hebrew.js b/test/built-ins/RegExp/property-escapes/generated/Script_-_Hebrew.js index af3db4e9507..f565a9ddaf3 100644 --- a/test/built-ins/RegExp/property-escapes/generated/Script_-_Hebrew.js +++ b/test/built-ins/RegExp/property-escapes/generated/Script_-_Hebrew.js @@ -7,7 +7,7 @@ description: > Unicode property escapes for `Script=Hebrew` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.1.0 + Unicode v16.0.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/property-escapes/generated/Script_-_Hiragana.js b/test/built-ins/RegExp/property-escapes/generated/Script_-_Hiragana.js index 1c7e7863cca..c2deda64d1d 100644 --- a/test/built-ins/RegExp/property-escapes/generated/Script_-_Hiragana.js +++ b/test/built-ins/RegExp/property-escapes/generated/Script_-_Hiragana.js @@ -7,7 +7,7 @@ description: > Unicode property escapes for `Script=Hiragana` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.1.0 + Unicode v16.0.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/property-escapes/generated/Script_-_Imperial_Aramaic.js b/test/built-ins/RegExp/property-escapes/generated/Script_-_Imperial_Aramaic.js index 357809765ee..e158e3f23cd 100644 --- a/test/built-ins/RegExp/property-escapes/generated/Script_-_Imperial_Aramaic.js +++ b/test/built-ins/RegExp/property-escapes/generated/Script_-_Imperial_Aramaic.js @@ -7,7 +7,7 @@ description: > Unicode property escapes for `Script=Imperial_Aramaic` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.1.0 + Unicode v16.0.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/property-escapes/generated/Script_-_Inherited.js b/test/built-ins/RegExp/property-escapes/generated/Script_-_Inherited.js index 901d4d4f82e..96cd7eabc55 100644 --- a/test/built-ins/RegExp/property-escapes/generated/Script_-_Inherited.js +++ b/test/built-ins/RegExp/property-escapes/generated/Script_-_Inherited.js @@ -7,7 +7,7 @@ description: > Unicode property escapes for `Script=Inherited` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.1.0 + Unicode v16.0.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/property-escapes/generated/Script_-_Inscriptional_Pahlavi.js b/test/built-ins/RegExp/property-escapes/generated/Script_-_Inscriptional_Pahlavi.js index d873f3cbdb8..31dd576603e 100644 --- a/test/built-ins/RegExp/property-escapes/generated/Script_-_Inscriptional_Pahlavi.js +++ b/test/built-ins/RegExp/property-escapes/generated/Script_-_Inscriptional_Pahlavi.js @@ -7,7 +7,7 @@ description: > Unicode property escapes for `Script=Inscriptional_Pahlavi` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.1.0 + Unicode v16.0.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/property-escapes/generated/Script_-_Inscriptional_Parthian.js b/test/built-ins/RegExp/property-escapes/generated/Script_-_Inscriptional_Parthian.js index 92f0cfa931b..03c06958e0b 100644 --- a/test/built-ins/RegExp/property-escapes/generated/Script_-_Inscriptional_Parthian.js +++ b/test/built-ins/RegExp/property-escapes/generated/Script_-_Inscriptional_Parthian.js @@ -7,7 +7,7 @@ description: > Unicode property escapes for `Script=Inscriptional_Parthian` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.1.0 + Unicode v16.0.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/property-escapes/generated/Script_-_Javanese.js b/test/built-ins/RegExp/property-escapes/generated/Script_-_Javanese.js index 6a2da167f6d..b2f8d81bfc0 100644 --- a/test/built-ins/RegExp/property-escapes/generated/Script_-_Javanese.js +++ b/test/built-ins/RegExp/property-escapes/generated/Script_-_Javanese.js @@ -7,7 +7,7 @@ description: > Unicode property escapes for `Script=Javanese` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.1.0 + Unicode v16.0.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/property-escapes/generated/Script_-_Kaithi.js b/test/built-ins/RegExp/property-escapes/generated/Script_-_Kaithi.js index 7d02b43c028..a412236e305 100644 --- a/test/built-ins/RegExp/property-escapes/generated/Script_-_Kaithi.js +++ b/test/built-ins/RegExp/property-escapes/generated/Script_-_Kaithi.js @@ -7,7 +7,7 @@ description: > Unicode property escapes for `Script=Kaithi` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.1.0 + Unicode v16.0.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/property-escapes/generated/Script_-_Kannada.js b/test/built-ins/RegExp/property-escapes/generated/Script_-_Kannada.js index 0d41e0b3283..7ad25e30198 100644 --- a/test/built-ins/RegExp/property-escapes/generated/Script_-_Kannada.js +++ b/test/built-ins/RegExp/property-escapes/generated/Script_-_Kannada.js @@ -7,7 +7,7 @@ description: > Unicode property escapes for `Script=Kannada` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.1.0 + Unicode v16.0.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/property-escapes/generated/Script_-_Katakana.js b/test/built-ins/RegExp/property-escapes/generated/Script_-_Katakana.js index 75baa1a6acb..7500ef167ad 100644 --- a/test/built-ins/RegExp/property-escapes/generated/Script_-_Katakana.js +++ b/test/built-ins/RegExp/property-escapes/generated/Script_-_Katakana.js @@ -7,7 +7,7 @@ description: > Unicode property escapes for `Script=Katakana` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.1.0 + Unicode v16.0.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/property-escapes/generated/Script_-_Kawi.js b/test/built-ins/RegExp/property-escapes/generated/Script_-_Kawi.js index 920e8347879..2725adea3cb 100644 --- a/test/built-ins/RegExp/property-escapes/generated/Script_-_Kawi.js +++ b/test/built-ins/RegExp/property-escapes/generated/Script_-_Kawi.js @@ -7,7 +7,7 @@ description: > Unicode property escapes for `Script=Kawi` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.1.0 + Unicode v16.0.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] @@ -18,7 +18,7 @@ const matchSymbols = buildString({ ranges: [ [0x011F00, 0x011F10], [0x011F12, 0x011F3A], - [0x011F3E, 0x011F59] + [0x011F3E, 0x011F5A] ] }); testPropertyEscapes( @@ -51,7 +51,7 @@ const nonMatchSymbols = buildString({ [0x000000, 0x00DBFF], [0x00E000, 0x011EFF], [0x011F3B, 0x011F3D], - [0x011F5A, 0x10FFFF] + [0x011F5B, 0x10FFFF] ] }); testPropertyEscapes( diff --git a/test/built-ins/RegExp/property-escapes/generated/Script_-_Kayah_Li.js b/test/built-ins/RegExp/property-escapes/generated/Script_-_Kayah_Li.js index eea44545452..63a32768e83 100644 --- a/test/built-ins/RegExp/property-escapes/generated/Script_-_Kayah_Li.js +++ b/test/built-ins/RegExp/property-escapes/generated/Script_-_Kayah_Li.js @@ -7,7 +7,7 @@ description: > Unicode property escapes for `Script=Kayah_Li` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.1.0 + Unicode v16.0.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/property-escapes/generated/Script_-_Kharoshthi.js b/test/built-ins/RegExp/property-escapes/generated/Script_-_Kharoshthi.js index 4f443bd59ab..b38b8a2aeea 100644 --- a/test/built-ins/RegExp/property-escapes/generated/Script_-_Kharoshthi.js +++ b/test/built-ins/RegExp/property-escapes/generated/Script_-_Kharoshthi.js @@ -7,7 +7,7 @@ description: > Unicode property escapes for `Script=Kharoshthi` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.1.0 + Unicode v16.0.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/property-escapes/generated/Script_-_Khitan_Small_Script.js b/test/built-ins/RegExp/property-escapes/generated/Script_-_Khitan_Small_Script.js index 8060aeaf97a..57d4a3b281c 100644 --- a/test/built-ins/RegExp/property-escapes/generated/Script_-_Khitan_Small_Script.js +++ b/test/built-ins/RegExp/property-escapes/generated/Script_-_Khitan_Small_Script.js @@ -7,7 +7,7 @@ description: > Unicode property escapes for `Script=Khitan_Small_Script` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.1.0 + Unicode v16.0.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] @@ -15,7 +15,8 @@ includes: [regExpUtils.js] const matchSymbols = buildString({ loneCodePoints: [ - 0x016FE4 + 0x016FE4, + 0x018CFF ], ranges: [ [0x018B00, 0x018CD5] @@ -49,7 +50,8 @@ const nonMatchSymbols = buildString({ [0x000000, 0x00DBFF], [0x00E000, 0x016FE3], [0x016FE5, 0x018AFF], - [0x018CD6, 0x10FFFF] + [0x018CD6, 0x018CFE], + [0x018D00, 0x10FFFF] ] }); testPropertyEscapes( diff --git a/test/built-ins/RegExp/property-escapes/generated/Script_-_Khmer.js b/test/built-ins/RegExp/property-escapes/generated/Script_-_Khmer.js index d3ba5d8a23e..f9534adf4b7 100644 --- a/test/built-ins/RegExp/property-escapes/generated/Script_-_Khmer.js +++ b/test/built-ins/RegExp/property-escapes/generated/Script_-_Khmer.js @@ -7,7 +7,7 @@ description: > Unicode property escapes for `Script=Khmer` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.1.0 + Unicode v16.0.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/property-escapes/generated/Script_-_Khojki.js b/test/built-ins/RegExp/property-escapes/generated/Script_-_Khojki.js index fb70539c22d..24b57d04674 100644 --- a/test/built-ins/RegExp/property-escapes/generated/Script_-_Khojki.js +++ b/test/built-ins/RegExp/property-escapes/generated/Script_-_Khojki.js @@ -7,7 +7,7 @@ description: > Unicode property escapes for `Script=Khojki` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.1.0 + Unicode v16.0.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/property-escapes/generated/Script_-_Khudawadi.js b/test/built-ins/RegExp/property-escapes/generated/Script_-_Khudawadi.js index fad8a373bee..c4a37e512f4 100644 --- a/test/built-ins/RegExp/property-escapes/generated/Script_-_Khudawadi.js +++ b/test/built-ins/RegExp/property-escapes/generated/Script_-_Khudawadi.js @@ -7,7 +7,7 @@ description: > Unicode property escapes for `Script=Khudawadi` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.1.0 + Unicode v16.0.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/property-escapes/generated/Script_-_Kirat_Rai.js b/test/built-ins/RegExp/property-escapes/generated/Script_-_Kirat_Rai.js new file mode 100644 index 00000000000..e6a01eec787 --- /dev/null +++ b/test/built-ins/RegExp/property-escapes/generated/Script_-_Kirat_Rai.js @@ -0,0 +1,71 @@ +// Copyright 2024 Mathias Bynens. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +author: Mathias Bynens +description: > + Unicode property escapes for `Script=Kirat_Rai` +info: | + Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests + Unicode v16.0.0 +esid: sec-static-semantics-unicodematchproperty-p +features: [regexp-unicode-property-escapes] +includes: [regExpUtils.js] +---*/ + +const matchSymbols = buildString({ + loneCodePoints: [], + ranges: [ + [0x016D40, 0x016D79] + ] +}); +testPropertyEscapes( + /^\p{Script=Kirat_Rai}+$/u, + matchSymbols, + "\\p{Script=Kirat_Rai}" +); +testPropertyEscapes( + /^\p{Script=Krai}+$/u, + matchSymbols, + "\\p{Script=Krai}" +); +testPropertyEscapes( + /^\p{sc=Kirat_Rai}+$/u, + matchSymbols, + "\\p{sc=Kirat_Rai}" +); +testPropertyEscapes( + /^\p{sc=Krai}+$/u, + matchSymbols, + "\\p{sc=Krai}" +); + +const nonMatchSymbols = buildString({ + loneCodePoints: [], + ranges: [ + [0x00DC00, 0x00DFFF], + [0x000000, 0x00DBFF], + [0x00E000, 0x016D3F], + [0x016D7A, 0x10FFFF] + ] +}); +testPropertyEscapes( + /^\P{Script=Kirat_Rai}+$/u, + nonMatchSymbols, + "\\P{Script=Kirat_Rai}" +); +testPropertyEscapes( + /^\P{Script=Krai}+$/u, + nonMatchSymbols, + "\\P{Script=Krai}" +); +testPropertyEscapes( + /^\P{sc=Kirat_Rai}+$/u, + nonMatchSymbols, + "\\P{sc=Kirat_Rai}" +); +testPropertyEscapes( + /^\P{sc=Krai}+$/u, + nonMatchSymbols, + "\\P{sc=Krai}" +); diff --git a/test/built-ins/RegExp/property-escapes/generated/Script_-_Lao.js b/test/built-ins/RegExp/property-escapes/generated/Script_-_Lao.js index 92fbb00969e..420f2d33d55 100644 --- a/test/built-ins/RegExp/property-escapes/generated/Script_-_Lao.js +++ b/test/built-ins/RegExp/property-escapes/generated/Script_-_Lao.js @@ -7,7 +7,7 @@ description: > Unicode property escapes for `Script=Lao` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.1.0 + Unicode v16.0.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/property-escapes/generated/Script_-_Latin.js b/test/built-ins/RegExp/property-escapes/generated/Script_-_Latin.js index cfe2bdbd0f1..58ce878a2b7 100644 --- a/test/built-ins/RegExp/property-escapes/generated/Script_-_Latin.js +++ b/test/built-ins/RegExp/property-escapes/generated/Script_-_Latin.js @@ -7,7 +7,7 @@ description: > Unicode property escapes for `Script=Latin` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.1.0 + Unicode v16.0.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] @@ -41,9 +41,9 @@ const matchSymbols = buildString({ [0x002160, 0x002188], [0x002C60, 0x002C7F], [0x00A722, 0x00A787], - [0x00A78B, 0x00A7CA], + [0x00A78B, 0x00A7CD], [0x00A7D0, 0x00A7D1], - [0x00A7D5, 0x00A7D9], + [0x00A7D5, 0x00A7DC], [0x00A7F2, 0x00A7FF], [0x00AB30, 0x00AB5A], [0x00AB5C, 0x00AB64], @@ -114,8 +114,8 @@ const nonMatchSymbols = buildString({ [0x002189, 0x002C5F], [0x002C80, 0x00A721], [0x00A788, 0x00A78A], - [0x00A7CB, 0x00A7CF], - [0x00A7DA, 0x00A7F1], + [0x00A7CE, 0x00A7CF], + [0x00A7DD, 0x00A7F1], [0x00A800, 0x00AB2F], [0x00AB6A, 0x00DBFF], [0x00E000, 0x00FAFF], diff --git a/test/built-ins/RegExp/property-escapes/generated/Script_-_Lepcha.js b/test/built-ins/RegExp/property-escapes/generated/Script_-_Lepcha.js index 41690f1a0ce..19337941dc9 100644 --- a/test/built-ins/RegExp/property-escapes/generated/Script_-_Lepcha.js +++ b/test/built-ins/RegExp/property-escapes/generated/Script_-_Lepcha.js @@ -7,7 +7,7 @@ description: > Unicode property escapes for `Script=Lepcha` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.1.0 + Unicode v16.0.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/property-escapes/generated/Script_-_Limbu.js b/test/built-ins/RegExp/property-escapes/generated/Script_-_Limbu.js index c01baac352f..bc6c86e0f92 100644 --- a/test/built-ins/RegExp/property-escapes/generated/Script_-_Limbu.js +++ b/test/built-ins/RegExp/property-escapes/generated/Script_-_Limbu.js @@ -7,7 +7,7 @@ description: > Unicode property escapes for `Script=Limbu` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.1.0 + Unicode v16.0.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/property-escapes/generated/Script_-_Linear_A.js b/test/built-ins/RegExp/property-escapes/generated/Script_-_Linear_A.js index 42ca654c392..9c3c7638241 100644 --- a/test/built-ins/RegExp/property-escapes/generated/Script_-_Linear_A.js +++ b/test/built-ins/RegExp/property-escapes/generated/Script_-_Linear_A.js @@ -7,7 +7,7 @@ description: > Unicode property escapes for `Script=Linear_A` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.1.0 + Unicode v16.0.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/property-escapes/generated/Script_-_Linear_B.js b/test/built-ins/RegExp/property-escapes/generated/Script_-_Linear_B.js index f0475584fd3..e3e39380cd9 100644 --- a/test/built-ins/RegExp/property-escapes/generated/Script_-_Linear_B.js +++ b/test/built-ins/RegExp/property-escapes/generated/Script_-_Linear_B.js @@ -7,7 +7,7 @@ description: > Unicode property escapes for `Script=Linear_B` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.1.0 + Unicode v16.0.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/property-escapes/generated/Script_-_Lisu.js b/test/built-ins/RegExp/property-escapes/generated/Script_-_Lisu.js index b59c44bbbdf..9bb5cb047c5 100644 --- a/test/built-ins/RegExp/property-escapes/generated/Script_-_Lisu.js +++ b/test/built-ins/RegExp/property-escapes/generated/Script_-_Lisu.js @@ -7,7 +7,7 @@ description: > Unicode property escapes for `Script=Lisu` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.1.0 + Unicode v16.0.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/property-escapes/generated/Script_-_Lycian.js b/test/built-ins/RegExp/property-escapes/generated/Script_-_Lycian.js index ba375a8d179..ee71a947e81 100644 --- a/test/built-ins/RegExp/property-escapes/generated/Script_-_Lycian.js +++ b/test/built-ins/RegExp/property-escapes/generated/Script_-_Lycian.js @@ -7,7 +7,7 @@ description: > Unicode property escapes for `Script=Lycian` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.1.0 + Unicode v16.0.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/property-escapes/generated/Script_-_Lydian.js b/test/built-ins/RegExp/property-escapes/generated/Script_-_Lydian.js index aec7331cd7c..db159623095 100644 --- a/test/built-ins/RegExp/property-escapes/generated/Script_-_Lydian.js +++ b/test/built-ins/RegExp/property-escapes/generated/Script_-_Lydian.js @@ -7,7 +7,7 @@ description: > Unicode property escapes for `Script=Lydian` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.1.0 + Unicode v16.0.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/property-escapes/generated/Script_-_Mahajani.js b/test/built-ins/RegExp/property-escapes/generated/Script_-_Mahajani.js index abea641b0ee..7b78fa8b395 100644 --- a/test/built-ins/RegExp/property-escapes/generated/Script_-_Mahajani.js +++ b/test/built-ins/RegExp/property-escapes/generated/Script_-_Mahajani.js @@ -7,7 +7,7 @@ description: > Unicode property escapes for `Script=Mahajani` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.1.0 + Unicode v16.0.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/property-escapes/generated/Script_-_Makasar.js b/test/built-ins/RegExp/property-escapes/generated/Script_-_Makasar.js index a26498f1f67..afc0379fc19 100644 --- a/test/built-ins/RegExp/property-escapes/generated/Script_-_Makasar.js +++ b/test/built-ins/RegExp/property-escapes/generated/Script_-_Makasar.js @@ -7,7 +7,7 @@ description: > Unicode property escapes for `Script=Makasar` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.1.0 + Unicode v16.0.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/property-escapes/generated/Script_-_Malayalam.js b/test/built-ins/RegExp/property-escapes/generated/Script_-_Malayalam.js index 4203b6ee332..bfd2f238eea 100644 --- a/test/built-ins/RegExp/property-escapes/generated/Script_-_Malayalam.js +++ b/test/built-ins/RegExp/property-escapes/generated/Script_-_Malayalam.js @@ -7,7 +7,7 @@ description: > Unicode property escapes for `Script=Malayalam` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.1.0 + Unicode v16.0.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/property-escapes/generated/Script_-_Mandaic.js b/test/built-ins/RegExp/property-escapes/generated/Script_-_Mandaic.js index 547ba8de85f..8f526673ae4 100644 --- a/test/built-ins/RegExp/property-escapes/generated/Script_-_Mandaic.js +++ b/test/built-ins/RegExp/property-escapes/generated/Script_-_Mandaic.js @@ -7,7 +7,7 @@ description: > Unicode property escapes for `Script=Mandaic` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.1.0 + Unicode v16.0.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/property-escapes/generated/Script_-_Manichaean.js b/test/built-ins/RegExp/property-escapes/generated/Script_-_Manichaean.js index ed777dcb72f..79990661751 100644 --- a/test/built-ins/RegExp/property-escapes/generated/Script_-_Manichaean.js +++ b/test/built-ins/RegExp/property-escapes/generated/Script_-_Manichaean.js @@ -7,7 +7,7 @@ description: > Unicode property escapes for `Script=Manichaean` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.1.0 + Unicode v16.0.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/property-escapes/generated/Script_-_Marchen.js b/test/built-ins/RegExp/property-escapes/generated/Script_-_Marchen.js index 6c5193d7c70..3a7c1802f2a 100644 --- a/test/built-ins/RegExp/property-escapes/generated/Script_-_Marchen.js +++ b/test/built-ins/RegExp/property-escapes/generated/Script_-_Marchen.js @@ -7,7 +7,7 @@ description: > Unicode property escapes for `Script=Marchen` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.1.0 + Unicode v16.0.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/property-escapes/generated/Script_-_Masaram_Gondi.js b/test/built-ins/RegExp/property-escapes/generated/Script_-_Masaram_Gondi.js index cdf12e3a5b4..33b272cf90a 100644 --- a/test/built-ins/RegExp/property-escapes/generated/Script_-_Masaram_Gondi.js +++ b/test/built-ins/RegExp/property-escapes/generated/Script_-_Masaram_Gondi.js @@ -7,7 +7,7 @@ description: > Unicode property escapes for `Script=Masaram_Gondi` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.1.0 + Unicode v16.0.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/property-escapes/generated/Script_-_Medefaidrin.js b/test/built-ins/RegExp/property-escapes/generated/Script_-_Medefaidrin.js index c524e69b503..f7e10f82aa0 100644 --- a/test/built-ins/RegExp/property-escapes/generated/Script_-_Medefaidrin.js +++ b/test/built-ins/RegExp/property-escapes/generated/Script_-_Medefaidrin.js @@ -7,7 +7,7 @@ description: > Unicode property escapes for `Script=Medefaidrin` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.1.0 + Unicode v16.0.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/property-escapes/generated/Script_-_Meetei_Mayek.js b/test/built-ins/RegExp/property-escapes/generated/Script_-_Meetei_Mayek.js index 7eee3c7dd31..b406f183785 100644 --- a/test/built-ins/RegExp/property-escapes/generated/Script_-_Meetei_Mayek.js +++ b/test/built-ins/RegExp/property-escapes/generated/Script_-_Meetei_Mayek.js @@ -7,7 +7,7 @@ description: > Unicode property escapes for `Script=Meetei_Mayek` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.1.0 + Unicode v16.0.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/property-escapes/generated/Script_-_Mende_Kikakui.js b/test/built-ins/RegExp/property-escapes/generated/Script_-_Mende_Kikakui.js index 77e84ebaf58..dd5d0ec2ea1 100644 --- a/test/built-ins/RegExp/property-escapes/generated/Script_-_Mende_Kikakui.js +++ b/test/built-ins/RegExp/property-escapes/generated/Script_-_Mende_Kikakui.js @@ -7,7 +7,7 @@ description: > Unicode property escapes for `Script=Mende_Kikakui` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.1.0 + Unicode v16.0.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/property-escapes/generated/Script_-_Meroitic_Cursive.js b/test/built-ins/RegExp/property-escapes/generated/Script_-_Meroitic_Cursive.js index 9ef914633a4..b4ac1fe6e92 100644 --- a/test/built-ins/RegExp/property-escapes/generated/Script_-_Meroitic_Cursive.js +++ b/test/built-ins/RegExp/property-escapes/generated/Script_-_Meroitic_Cursive.js @@ -7,7 +7,7 @@ description: > Unicode property escapes for `Script=Meroitic_Cursive` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.1.0 + Unicode v16.0.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/property-escapes/generated/Script_-_Meroitic_Hieroglyphs.js b/test/built-ins/RegExp/property-escapes/generated/Script_-_Meroitic_Hieroglyphs.js index 8dcbdd08024..899ff4b3ea6 100644 --- a/test/built-ins/RegExp/property-escapes/generated/Script_-_Meroitic_Hieroglyphs.js +++ b/test/built-ins/RegExp/property-escapes/generated/Script_-_Meroitic_Hieroglyphs.js @@ -7,7 +7,7 @@ description: > Unicode property escapes for `Script=Meroitic_Hieroglyphs` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.1.0 + Unicode v16.0.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/property-escapes/generated/Script_-_Miao.js b/test/built-ins/RegExp/property-escapes/generated/Script_-_Miao.js index abb2336f284..3ee8fccbfb7 100644 --- a/test/built-ins/RegExp/property-escapes/generated/Script_-_Miao.js +++ b/test/built-ins/RegExp/property-escapes/generated/Script_-_Miao.js @@ -7,7 +7,7 @@ description: > Unicode property escapes for `Script=Miao` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.1.0 + Unicode v16.0.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/property-escapes/generated/Script_-_Modi.js b/test/built-ins/RegExp/property-escapes/generated/Script_-_Modi.js index 74ac0ab928b..e19f2a80b04 100644 --- a/test/built-ins/RegExp/property-escapes/generated/Script_-_Modi.js +++ b/test/built-ins/RegExp/property-escapes/generated/Script_-_Modi.js @@ -7,7 +7,7 @@ description: > Unicode property escapes for `Script=Modi` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.1.0 + Unicode v16.0.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/property-escapes/generated/Script_-_Mongolian.js b/test/built-ins/RegExp/property-escapes/generated/Script_-_Mongolian.js index f6726b18d8d..838a5cc1f4a 100644 --- a/test/built-ins/RegExp/property-escapes/generated/Script_-_Mongolian.js +++ b/test/built-ins/RegExp/property-escapes/generated/Script_-_Mongolian.js @@ -7,7 +7,7 @@ description: > Unicode property escapes for `Script=Mongolian` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.1.0 + Unicode v16.0.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/property-escapes/generated/Script_-_Mro.js b/test/built-ins/RegExp/property-escapes/generated/Script_-_Mro.js index 8c4d367a07a..d057f895efa 100644 --- a/test/built-ins/RegExp/property-escapes/generated/Script_-_Mro.js +++ b/test/built-ins/RegExp/property-escapes/generated/Script_-_Mro.js @@ -7,7 +7,7 @@ description: > Unicode property escapes for `Script=Mro` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.1.0 + Unicode v16.0.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/property-escapes/generated/Script_-_Multani.js b/test/built-ins/RegExp/property-escapes/generated/Script_-_Multani.js index de38fea45a8..087bc067d0a 100644 --- a/test/built-ins/RegExp/property-escapes/generated/Script_-_Multani.js +++ b/test/built-ins/RegExp/property-escapes/generated/Script_-_Multani.js @@ -7,7 +7,7 @@ description: > Unicode property escapes for `Script=Multani` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.1.0 + Unicode v16.0.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/property-escapes/generated/Script_-_Myanmar.js b/test/built-ins/RegExp/property-escapes/generated/Script_-_Myanmar.js index 141acab263d..9ea77915ea1 100644 --- a/test/built-ins/RegExp/property-escapes/generated/Script_-_Myanmar.js +++ b/test/built-ins/RegExp/property-escapes/generated/Script_-_Myanmar.js @@ -7,7 +7,7 @@ description: > Unicode property escapes for `Script=Myanmar` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.1.0 + Unicode v16.0.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] @@ -18,7 +18,8 @@ const matchSymbols = buildString({ ranges: [ [0x001000, 0x00109F], [0x00A9E0, 0x00A9FE], - [0x00AA60, 0x00AA7F] + [0x00AA60, 0x00AA7F], + [0x0116D0, 0x0116E3] ] }); testPropertyEscapes( @@ -50,7 +51,8 @@ const nonMatchSymbols = buildString({ [0x0010A0, 0x00A9DF], [0x00A9FF, 0x00AA5F], [0x00AA80, 0x00DBFF], - [0x00E000, 0x10FFFF] + [0x00E000, 0x0116CF], + [0x0116E4, 0x10FFFF] ] }); testPropertyEscapes( diff --git a/test/built-ins/RegExp/property-escapes/generated/Script_-_Nabataean.js b/test/built-ins/RegExp/property-escapes/generated/Script_-_Nabataean.js index 4b837a2fa9c..8013f4276fe 100644 --- a/test/built-ins/RegExp/property-escapes/generated/Script_-_Nabataean.js +++ b/test/built-ins/RegExp/property-escapes/generated/Script_-_Nabataean.js @@ -7,7 +7,7 @@ description: > Unicode property escapes for `Script=Nabataean` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.1.0 + Unicode v16.0.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/property-escapes/generated/Script_-_Nag_Mundari.js b/test/built-ins/RegExp/property-escapes/generated/Script_-_Nag_Mundari.js index a9804dc3fc3..b728db008a5 100644 --- a/test/built-ins/RegExp/property-escapes/generated/Script_-_Nag_Mundari.js +++ b/test/built-ins/RegExp/property-escapes/generated/Script_-_Nag_Mundari.js @@ -7,7 +7,7 @@ description: > Unicode property escapes for `Script=Nag_Mundari` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.1.0 + Unicode v16.0.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/property-escapes/generated/Script_-_Nandinagari.js b/test/built-ins/RegExp/property-escapes/generated/Script_-_Nandinagari.js index 73f832d9412..28bced9683c 100644 --- a/test/built-ins/RegExp/property-escapes/generated/Script_-_Nandinagari.js +++ b/test/built-ins/RegExp/property-escapes/generated/Script_-_Nandinagari.js @@ -7,7 +7,7 @@ description: > Unicode property escapes for `Script=Nandinagari` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.1.0 + Unicode v16.0.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/property-escapes/generated/Script_-_New_Tai_Lue.js b/test/built-ins/RegExp/property-escapes/generated/Script_-_New_Tai_Lue.js index aee19ad9d5b..7de259e138a 100644 --- a/test/built-ins/RegExp/property-escapes/generated/Script_-_New_Tai_Lue.js +++ b/test/built-ins/RegExp/property-escapes/generated/Script_-_New_Tai_Lue.js @@ -7,7 +7,7 @@ description: > Unicode property escapes for `Script=New_Tai_Lue` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.1.0 + Unicode v16.0.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/property-escapes/generated/Script_-_Newa.js b/test/built-ins/RegExp/property-escapes/generated/Script_-_Newa.js index afc9ea21457..2b907a632c7 100644 --- a/test/built-ins/RegExp/property-escapes/generated/Script_-_Newa.js +++ b/test/built-ins/RegExp/property-escapes/generated/Script_-_Newa.js @@ -7,7 +7,7 @@ description: > Unicode property escapes for `Script=Newa` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.1.0 + Unicode v16.0.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/property-escapes/generated/Script_-_Nko.js b/test/built-ins/RegExp/property-escapes/generated/Script_-_Nko.js index 082609745bf..9910f1ab84b 100644 --- a/test/built-ins/RegExp/property-escapes/generated/Script_-_Nko.js +++ b/test/built-ins/RegExp/property-escapes/generated/Script_-_Nko.js @@ -7,7 +7,7 @@ description: > Unicode property escapes for `Script=Nko` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.1.0 + Unicode v16.0.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/property-escapes/generated/Script_-_Nushu.js b/test/built-ins/RegExp/property-escapes/generated/Script_-_Nushu.js index 0093434ef7c..9b352d3c689 100644 --- a/test/built-ins/RegExp/property-escapes/generated/Script_-_Nushu.js +++ b/test/built-ins/RegExp/property-escapes/generated/Script_-_Nushu.js @@ -7,7 +7,7 @@ description: > Unicode property escapes for `Script=Nushu` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.1.0 + Unicode v16.0.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/property-escapes/generated/Script_-_Nyiakeng_Puachue_Hmong.js b/test/built-ins/RegExp/property-escapes/generated/Script_-_Nyiakeng_Puachue_Hmong.js index 6fd87fad9b0..8a0c3e5f7a9 100644 --- a/test/built-ins/RegExp/property-escapes/generated/Script_-_Nyiakeng_Puachue_Hmong.js +++ b/test/built-ins/RegExp/property-escapes/generated/Script_-_Nyiakeng_Puachue_Hmong.js @@ -7,7 +7,7 @@ description: > Unicode property escapes for `Script=Nyiakeng_Puachue_Hmong` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.1.0 + Unicode v16.0.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/property-escapes/generated/Script_-_Ogham.js b/test/built-ins/RegExp/property-escapes/generated/Script_-_Ogham.js index 8219315d8a1..ec49e071175 100644 --- a/test/built-ins/RegExp/property-escapes/generated/Script_-_Ogham.js +++ b/test/built-ins/RegExp/property-escapes/generated/Script_-_Ogham.js @@ -7,7 +7,7 @@ description: > Unicode property escapes for `Script=Ogham` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.1.0 + Unicode v16.0.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/property-escapes/generated/Script_-_Ol_Chiki.js b/test/built-ins/RegExp/property-escapes/generated/Script_-_Ol_Chiki.js index 3910547d16a..8886bfd7ab8 100644 --- a/test/built-ins/RegExp/property-escapes/generated/Script_-_Ol_Chiki.js +++ b/test/built-ins/RegExp/property-escapes/generated/Script_-_Ol_Chiki.js @@ -7,7 +7,7 @@ description: > Unicode property escapes for `Script=Ol_Chiki` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.1.0 + Unicode v16.0.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/property-escapes/generated/Script_-_Ol_Onal.js b/test/built-ins/RegExp/property-escapes/generated/Script_-_Ol_Onal.js new file mode 100644 index 00000000000..80a09fb14e0 --- /dev/null +++ b/test/built-ins/RegExp/property-escapes/generated/Script_-_Ol_Onal.js @@ -0,0 +1,74 @@ +// Copyright 2024 Mathias Bynens. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +author: Mathias Bynens +description: > + Unicode property escapes for `Script=Ol_Onal` +info: | + Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests + Unicode v16.0.0 +esid: sec-static-semantics-unicodematchproperty-p +features: [regexp-unicode-property-escapes] +includes: [regExpUtils.js] +---*/ + +const matchSymbols = buildString({ + loneCodePoints: [ + 0x01E5FF + ], + ranges: [ + [0x01E5D0, 0x01E5FA] + ] +}); +testPropertyEscapes( + /^\p{Script=Ol_Onal}+$/u, + matchSymbols, + "\\p{Script=Ol_Onal}" +); +testPropertyEscapes( + /^\p{Script=Onao}+$/u, + matchSymbols, + "\\p{Script=Onao}" +); +testPropertyEscapes( + /^\p{sc=Ol_Onal}+$/u, + matchSymbols, + "\\p{sc=Ol_Onal}" +); +testPropertyEscapes( + /^\p{sc=Onao}+$/u, + matchSymbols, + "\\p{sc=Onao}" +); + +const nonMatchSymbols = buildString({ + loneCodePoints: [], + ranges: [ + [0x00DC00, 0x00DFFF], + [0x000000, 0x00DBFF], + [0x00E000, 0x01E5CF], + [0x01E5FB, 0x01E5FE], + [0x01E600, 0x10FFFF] + ] +}); +testPropertyEscapes( + /^\P{Script=Ol_Onal}+$/u, + nonMatchSymbols, + "\\P{Script=Ol_Onal}" +); +testPropertyEscapes( + /^\P{Script=Onao}+$/u, + nonMatchSymbols, + "\\P{Script=Onao}" +); +testPropertyEscapes( + /^\P{sc=Ol_Onal}+$/u, + nonMatchSymbols, + "\\P{sc=Ol_Onal}" +); +testPropertyEscapes( + /^\P{sc=Onao}+$/u, + nonMatchSymbols, + "\\P{sc=Onao}" +); diff --git a/test/built-ins/RegExp/property-escapes/generated/Script_-_Old_Hungarian.js b/test/built-ins/RegExp/property-escapes/generated/Script_-_Old_Hungarian.js index cd0fea65cf7..2958b5f8d84 100644 --- a/test/built-ins/RegExp/property-escapes/generated/Script_-_Old_Hungarian.js +++ b/test/built-ins/RegExp/property-escapes/generated/Script_-_Old_Hungarian.js @@ -7,7 +7,7 @@ description: > Unicode property escapes for `Script=Old_Hungarian` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.1.0 + Unicode v16.0.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/property-escapes/generated/Script_-_Old_Italic.js b/test/built-ins/RegExp/property-escapes/generated/Script_-_Old_Italic.js index 6576b663d6a..2f290522871 100644 --- a/test/built-ins/RegExp/property-escapes/generated/Script_-_Old_Italic.js +++ b/test/built-ins/RegExp/property-escapes/generated/Script_-_Old_Italic.js @@ -7,7 +7,7 @@ description: > Unicode property escapes for `Script=Old_Italic` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.1.0 + Unicode v16.0.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/property-escapes/generated/Script_-_Old_North_Arabian.js b/test/built-ins/RegExp/property-escapes/generated/Script_-_Old_North_Arabian.js index 6e5635e5178..a19952d46c6 100644 --- a/test/built-ins/RegExp/property-escapes/generated/Script_-_Old_North_Arabian.js +++ b/test/built-ins/RegExp/property-escapes/generated/Script_-_Old_North_Arabian.js @@ -7,7 +7,7 @@ description: > Unicode property escapes for `Script=Old_North_Arabian` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.1.0 + Unicode v16.0.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/property-escapes/generated/Script_-_Old_Permic.js b/test/built-ins/RegExp/property-escapes/generated/Script_-_Old_Permic.js index 0f6187103dd..774226ee91c 100644 --- a/test/built-ins/RegExp/property-escapes/generated/Script_-_Old_Permic.js +++ b/test/built-ins/RegExp/property-escapes/generated/Script_-_Old_Permic.js @@ -7,7 +7,7 @@ description: > Unicode property escapes for `Script=Old_Permic` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.1.0 + Unicode v16.0.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/property-escapes/generated/Script_-_Old_Persian.js b/test/built-ins/RegExp/property-escapes/generated/Script_-_Old_Persian.js index 15cbdb9c44b..37ea0405ce7 100644 --- a/test/built-ins/RegExp/property-escapes/generated/Script_-_Old_Persian.js +++ b/test/built-ins/RegExp/property-escapes/generated/Script_-_Old_Persian.js @@ -7,7 +7,7 @@ description: > Unicode property escapes for `Script=Old_Persian` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.1.0 + Unicode v16.0.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/property-escapes/generated/Script_-_Old_Sogdian.js b/test/built-ins/RegExp/property-escapes/generated/Script_-_Old_Sogdian.js index 85a798aed6a..9fafd7bf759 100644 --- a/test/built-ins/RegExp/property-escapes/generated/Script_-_Old_Sogdian.js +++ b/test/built-ins/RegExp/property-escapes/generated/Script_-_Old_Sogdian.js @@ -7,7 +7,7 @@ description: > Unicode property escapes for `Script=Old_Sogdian` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.1.0 + Unicode v16.0.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/property-escapes/generated/Script_-_Old_South_Arabian.js b/test/built-ins/RegExp/property-escapes/generated/Script_-_Old_South_Arabian.js index abf1bc0d251..7f44f22eeb3 100644 --- a/test/built-ins/RegExp/property-escapes/generated/Script_-_Old_South_Arabian.js +++ b/test/built-ins/RegExp/property-escapes/generated/Script_-_Old_South_Arabian.js @@ -7,7 +7,7 @@ description: > Unicode property escapes for `Script=Old_South_Arabian` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.1.0 + Unicode v16.0.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/property-escapes/generated/Script_-_Old_Turkic.js b/test/built-ins/RegExp/property-escapes/generated/Script_-_Old_Turkic.js index f60817ca60f..089c0d82102 100644 --- a/test/built-ins/RegExp/property-escapes/generated/Script_-_Old_Turkic.js +++ b/test/built-ins/RegExp/property-escapes/generated/Script_-_Old_Turkic.js @@ -7,7 +7,7 @@ description: > Unicode property escapes for `Script=Old_Turkic` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.1.0 + Unicode v16.0.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/property-escapes/generated/Script_-_Old_Uyghur.js b/test/built-ins/RegExp/property-escapes/generated/Script_-_Old_Uyghur.js index 8f9951f4bad..d7fa0cdd1cb 100644 --- a/test/built-ins/RegExp/property-escapes/generated/Script_-_Old_Uyghur.js +++ b/test/built-ins/RegExp/property-escapes/generated/Script_-_Old_Uyghur.js @@ -7,7 +7,7 @@ description: > Unicode property escapes for `Script=Old_Uyghur` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.1.0 + Unicode v16.0.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/property-escapes/generated/Script_-_Oriya.js b/test/built-ins/RegExp/property-escapes/generated/Script_-_Oriya.js index c6a0790a300..0456bf0adfd 100644 --- a/test/built-ins/RegExp/property-escapes/generated/Script_-_Oriya.js +++ b/test/built-ins/RegExp/property-escapes/generated/Script_-_Oriya.js @@ -7,7 +7,7 @@ description: > Unicode property escapes for `Script=Oriya` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.1.0 + Unicode v16.0.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/property-escapes/generated/Script_-_Osage.js b/test/built-ins/RegExp/property-escapes/generated/Script_-_Osage.js index 946059455c2..fd7ae29ebb1 100644 --- a/test/built-ins/RegExp/property-escapes/generated/Script_-_Osage.js +++ b/test/built-ins/RegExp/property-escapes/generated/Script_-_Osage.js @@ -7,7 +7,7 @@ description: > Unicode property escapes for `Script=Osage` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.1.0 + Unicode v16.0.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/property-escapes/generated/Script_-_Osmanya.js b/test/built-ins/RegExp/property-escapes/generated/Script_-_Osmanya.js index 86d7ed38638..a70d851174b 100644 --- a/test/built-ins/RegExp/property-escapes/generated/Script_-_Osmanya.js +++ b/test/built-ins/RegExp/property-escapes/generated/Script_-_Osmanya.js @@ -7,7 +7,7 @@ description: > Unicode property escapes for `Script=Osmanya` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.1.0 + Unicode v16.0.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/property-escapes/generated/Script_-_Pahawh_Hmong.js b/test/built-ins/RegExp/property-escapes/generated/Script_-_Pahawh_Hmong.js index f2c26dc5c29..4720796f761 100644 --- a/test/built-ins/RegExp/property-escapes/generated/Script_-_Pahawh_Hmong.js +++ b/test/built-ins/RegExp/property-escapes/generated/Script_-_Pahawh_Hmong.js @@ -7,7 +7,7 @@ description: > Unicode property escapes for `Script=Pahawh_Hmong` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.1.0 + Unicode v16.0.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/property-escapes/generated/Script_-_Palmyrene.js b/test/built-ins/RegExp/property-escapes/generated/Script_-_Palmyrene.js index 7f0c1e55dae..1c3c0d17628 100644 --- a/test/built-ins/RegExp/property-escapes/generated/Script_-_Palmyrene.js +++ b/test/built-ins/RegExp/property-escapes/generated/Script_-_Palmyrene.js @@ -7,7 +7,7 @@ description: > Unicode property escapes for `Script=Palmyrene` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.1.0 + Unicode v16.0.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/property-escapes/generated/Script_-_Pau_Cin_Hau.js b/test/built-ins/RegExp/property-escapes/generated/Script_-_Pau_Cin_Hau.js index 4fc03d858d3..44896b4a1f3 100644 --- a/test/built-ins/RegExp/property-escapes/generated/Script_-_Pau_Cin_Hau.js +++ b/test/built-ins/RegExp/property-escapes/generated/Script_-_Pau_Cin_Hau.js @@ -7,7 +7,7 @@ description: > Unicode property escapes for `Script=Pau_Cin_Hau` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.1.0 + Unicode v16.0.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/property-escapes/generated/Script_-_Phags_Pa.js b/test/built-ins/RegExp/property-escapes/generated/Script_-_Phags_Pa.js index 3c8df822d9e..38611413469 100644 --- a/test/built-ins/RegExp/property-escapes/generated/Script_-_Phags_Pa.js +++ b/test/built-ins/RegExp/property-escapes/generated/Script_-_Phags_Pa.js @@ -7,7 +7,7 @@ description: > Unicode property escapes for `Script=Phags_Pa` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.1.0 + Unicode v16.0.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/property-escapes/generated/Script_-_Phoenician.js b/test/built-ins/RegExp/property-escapes/generated/Script_-_Phoenician.js index 3b59cc50975..f954483e5cb 100644 --- a/test/built-ins/RegExp/property-escapes/generated/Script_-_Phoenician.js +++ b/test/built-ins/RegExp/property-escapes/generated/Script_-_Phoenician.js @@ -7,7 +7,7 @@ description: > Unicode property escapes for `Script=Phoenician` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.1.0 + Unicode v16.0.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/property-escapes/generated/Script_-_Psalter_Pahlavi.js b/test/built-ins/RegExp/property-escapes/generated/Script_-_Psalter_Pahlavi.js index 919644e9e6c..347cd7f5b39 100644 --- a/test/built-ins/RegExp/property-escapes/generated/Script_-_Psalter_Pahlavi.js +++ b/test/built-ins/RegExp/property-escapes/generated/Script_-_Psalter_Pahlavi.js @@ -7,7 +7,7 @@ description: > Unicode property escapes for `Script=Psalter_Pahlavi` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.1.0 + Unicode v16.0.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/property-escapes/generated/Script_-_Rejang.js b/test/built-ins/RegExp/property-escapes/generated/Script_-_Rejang.js index 73510799129..4d49c602009 100644 --- a/test/built-ins/RegExp/property-escapes/generated/Script_-_Rejang.js +++ b/test/built-ins/RegExp/property-escapes/generated/Script_-_Rejang.js @@ -7,7 +7,7 @@ description: > Unicode property escapes for `Script=Rejang` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.1.0 + Unicode v16.0.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/property-escapes/generated/Script_-_Runic.js b/test/built-ins/RegExp/property-escapes/generated/Script_-_Runic.js index 9132da4aeee..29d6b0782d8 100644 --- a/test/built-ins/RegExp/property-escapes/generated/Script_-_Runic.js +++ b/test/built-ins/RegExp/property-escapes/generated/Script_-_Runic.js @@ -7,7 +7,7 @@ description: > Unicode property escapes for `Script=Runic` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.1.0 + Unicode v16.0.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/property-escapes/generated/Script_-_Samaritan.js b/test/built-ins/RegExp/property-escapes/generated/Script_-_Samaritan.js index 2c51ffaef98..bd36ddac144 100644 --- a/test/built-ins/RegExp/property-escapes/generated/Script_-_Samaritan.js +++ b/test/built-ins/RegExp/property-escapes/generated/Script_-_Samaritan.js @@ -7,7 +7,7 @@ description: > Unicode property escapes for `Script=Samaritan` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.1.0 + Unicode v16.0.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/property-escapes/generated/Script_-_Saurashtra.js b/test/built-ins/RegExp/property-escapes/generated/Script_-_Saurashtra.js index f40e8127ce6..f4ea4e86d44 100644 --- a/test/built-ins/RegExp/property-escapes/generated/Script_-_Saurashtra.js +++ b/test/built-ins/RegExp/property-escapes/generated/Script_-_Saurashtra.js @@ -7,7 +7,7 @@ description: > Unicode property escapes for `Script=Saurashtra` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.1.0 + Unicode v16.0.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/property-escapes/generated/Script_-_Sharada.js b/test/built-ins/RegExp/property-escapes/generated/Script_-_Sharada.js index c3eb129e67e..935383908b0 100644 --- a/test/built-ins/RegExp/property-escapes/generated/Script_-_Sharada.js +++ b/test/built-ins/RegExp/property-escapes/generated/Script_-_Sharada.js @@ -7,7 +7,7 @@ description: > Unicode property escapes for `Script=Sharada` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.1.0 + Unicode v16.0.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/property-escapes/generated/Script_-_Shavian.js b/test/built-ins/RegExp/property-escapes/generated/Script_-_Shavian.js index 4ceea4d5f59..c1635e1a589 100644 --- a/test/built-ins/RegExp/property-escapes/generated/Script_-_Shavian.js +++ b/test/built-ins/RegExp/property-escapes/generated/Script_-_Shavian.js @@ -7,7 +7,7 @@ description: > Unicode property escapes for `Script=Shavian` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.1.0 + Unicode v16.0.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/property-escapes/generated/Script_-_Siddham.js b/test/built-ins/RegExp/property-escapes/generated/Script_-_Siddham.js index 55b3346d375..7090d065f89 100644 --- a/test/built-ins/RegExp/property-escapes/generated/Script_-_Siddham.js +++ b/test/built-ins/RegExp/property-escapes/generated/Script_-_Siddham.js @@ -7,7 +7,7 @@ description: > Unicode property escapes for `Script=Siddham` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.1.0 + Unicode v16.0.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/property-escapes/generated/Script_-_SignWriting.js b/test/built-ins/RegExp/property-escapes/generated/Script_-_SignWriting.js index 509e5006b7f..01e24a9795a 100644 --- a/test/built-ins/RegExp/property-escapes/generated/Script_-_SignWriting.js +++ b/test/built-ins/RegExp/property-escapes/generated/Script_-_SignWriting.js @@ -7,7 +7,7 @@ description: > Unicode property escapes for `Script=SignWriting` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.1.0 + Unicode v16.0.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/property-escapes/generated/Script_-_Sinhala.js b/test/built-ins/RegExp/property-escapes/generated/Script_-_Sinhala.js index 3ffafb3aa11..7a033f4bad9 100644 --- a/test/built-ins/RegExp/property-escapes/generated/Script_-_Sinhala.js +++ b/test/built-ins/RegExp/property-escapes/generated/Script_-_Sinhala.js @@ -7,7 +7,7 @@ description: > Unicode property escapes for `Script=Sinhala` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.1.0 + Unicode v16.0.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/property-escapes/generated/Script_-_Sogdian.js b/test/built-ins/RegExp/property-escapes/generated/Script_-_Sogdian.js index fff34b39496..29dfd894a36 100644 --- a/test/built-ins/RegExp/property-escapes/generated/Script_-_Sogdian.js +++ b/test/built-ins/RegExp/property-escapes/generated/Script_-_Sogdian.js @@ -7,7 +7,7 @@ description: > Unicode property escapes for `Script=Sogdian` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.1.0 + Unicode v16.0.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/property-escapes/generated/Script_-_Sora_Sompeng.js b/test/built-ins/RegExp/property-escapes/generated/Script_-_Sora_Sompeng.js index 801ac772297..f5c29b3c7eb 100644 --- a/test/built-ins/RegExp/property-escapes/generated/Script_-_Sora_Sompeng.js +++ b/test/built-ins/RegExp/property-escapes/generated/Script_-_Sora_Sompeng.js @@ -7,7 +7,7 @@ description: > Unicode property escapes for `Script=Sora_Sompeng` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.1.0 + Unicode v16.0.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/property-escapes/generated/Script_-_Soyombo.js b/test/built-ins/RegExp/property-escapes/generated/Script_-_Soyombo.js index 5d44f842fb1..e9296f82253 100644 --- a/test/built-ins/RegExp/property-escapes/generated/Script_-_Soyombo.js +++ b/test/built-ins/RegExp/property-escapes/generated/Script_-_Soyombo.js @@ -7,7 +7,7 @@ description: > Unicode property escapes for `Script=Soyombo` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.1.0 + Unicode v16.0.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/property-escapes/generated/Script_-_Sundanese.js b/test/built-ins/RegExp/property-escapes/generated/Script_-_Sundanese.js index 7b7cd24679f..b024b55d47d 100644 --- a/test/built-ins/RegExp/property-escapes/generated/Script_-_Sundanese.js +++ b/test/built-ins/RegExp/property-escapes/generated/Script_-_Sundanese.js @@ -7,7 +7,7 @@ description: > Unicode property escapes for `Script=Sundanese` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.1.0 + Unicode v16.0.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/property-escapes/generated/Script_-_Sunuwar.js b/test/built-ins/RegExp/property-escapes/generated/Script_-_Sunuwar.js new file mode 100644 index 00000000000..d325b35976d --- /dev/null +++ b/test/built-ins/RegExp/property-escapes/generated/Script_-_Sunuwar.js @@ -0,0 +1,73 @@ +// Copyright 2024 Mathias Bynens. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +author: Mathias Bynens +description: > + Unicode property escapes for `Script=Sunuwar` +info: | + Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests + Unicode v16.0.0 +esid: sec-static-semantics-unicodematchproperty-p +features: [regexp-unicode-property-escapes] +includes: [regExpUtils.js] +---*/ + +const matchSymbols = buildString({ + loneCodePoints: [], + ranges: [ + [0x011BC0, 0x011BE1], + [0x011BF0, 0x011BF9] + ] +}); +testPropertyEscapes( + /^\p{Script=Sunuwar}+$/u, + matchSymbols, + "\\p{Script=Sunuwar}" +); +testPropertyEscapes( + /^\p{Script=Sunu}+$/u, + matchSymbols, + "\\p{Script=Sunu}" +); +testPropertyEscapes( + /^\p{sc=Sunuwar}+$/u, + matchSymbols, + "\\p{sc=Sunuwar}" +); +testPropertyEscapes( + /^\p{sc=Sunu}+$/u, + matchSymbols, + "\\p{sc=Sunu}" +); + +const nonMatchSymbols = buildString({ + loneCodePoints: [], + ranges: [ + [0x00DC00, 0x00DFFF], + [0x000000, 0x00DBFF], + [0x00E000, 0x011BBF], + [0x011BE2, 0x011BEF], + [0x011BFA, 0x10FFFF] + ] +}); +testPropertyEscapes( + /^\P{Script=Sunuwar}+$/u, + nonMatchSymbols, + "\\P{Script=Sunuwar}" +); +testPropertyEscapes( + /^\P{Script=Sunu}+$/u, + nonMatchSymbols, + "\\P{Script=Sunu}" +); +testPropertyEscapes( + /^\P{sc=Sunuwar}+$/u, + nonMatchSymbols, + "\\P{sc=Sunuwar}" +); +testPropertyEscapes( + /^\P{sc=Sunu}+$/u, + nonMatchSymbols, + "\\P{sc=Sunu}" +); diff --git a/test/built-ins/RegExp/property-escapes/generated/Script_-_Syloti_Nagri.js b/test/built-ins/RegExp/property-escapes/generated/Script_-_Syloti_Nagri.js index 23a48977efb..861506f925a 100644 --- a/test/built-ins/RegExp/property-escapes/generated/Script_-_Syloti_Nagri.js +++ b/test/built-ins/RegExp/property-escapes/generated/Script_-_Syloti_Nagri.js @@ -7,7 +7,7 @@ description: > Unicode property escapes for `Script=Syloti_Nagri` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.1.0 + Unicode v16.0.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/property-escapes/generated/Script_-_Syriac.js b/test/built-ins/RegExp/property-escapes/generated/Script_-_Syriac.js index 51dd65454e9..1cad5bf55fe 100644 --- a/test/built-ins/RegExp/property-escapes/generated/Script_-_Syriac.js +++ b/test/built-ins/RegExp/property-escapes/generated/Script_-_Syriac.js @@ -7,7 +7,7 @@ description: > Unicode property escapes for `Script=Syriac` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.1.0 + Unicode v16.0.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/property-escapes/generated/Script_-_Tagalog.js b/test/built-ins/RegExp/property-escapes/generated/Script_-_Tagalog.js index 9f070983dc9..082de53f55a 100644 --- a/test/built-ins/RegExp/property-escapes/generated/Script_-_Tagalog.js +++ b/test/built-ins/RegExp/property-escapes/generated/Script_-_Tagalog.js @@ -7,7 +7,7 @@ description: > Unicode property escapes for `Script=Tagalog` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.1.0 + Unicode v16.0.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/property-escapes/generated/Script_-_Tagbanwa.js b/test/built-ins/RegExp/property-escapes/generated/Script_-_Tagbanwa.js index b47fc28d9ef..bfe21ff247a 100644 --- a/test/built-ins/RegExp/property-escapes/generated/Script_-_Tagbanwa.js +++ b/test/built-ins/RegExp/property-escapes/generated/Script_-_Tagbanwa.js @@ -7,7 +7,7 @@ description: > Unicode property escapes for `Script=Tagbanwa` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.1.0 + Unicode v16.0.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/property-escapes/generated/Script_-_Tai_Le.js b/test/built-ins/RegExp/property-escapes/generated/Script_-_Tai_Le.js index 6628c191148..9455893586d 100644 --- a/test/built-ins/RegExp/property-escapes/generated/Script_-_Tai_Le.js +++ b/test/built-ins/RegExp/property-escapes/generated/Script_-_Tai_Le.js @@ -7,7 +7,7 @@ description: > Unicode property escapes for `Script=Tai_Le` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.1.0 + Unicode v16.0.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/property-escapes/generated/Script_-_Tai_Tham.js b/test/built-ins/RegExp/property-escapes/generated/Script_-_Tai_Tham.js index 10994c5ffde..91f1db54ef0 100644 --- a/test/built-ins/RegExp/property-escapes/generated/Script_-_Tai_Tham.js +++ b/test/built-ins/RegExp/property-escapes/generated/Script_-_Tai_Tham.js @@ -7,7 +7,7 @@ description: > Unicode property escapes for `Script=Tai_Tham` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.1.0 + Unicode v16.0.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/property-escapes/generated/Script_-_Tai_Viet.js b/test/built-ins/RegExp/property-escapes/generated/Script_-_Tai_Viet.js index 958d5b608ca..0e3f41fcdbb 100644 --- a/test/built-ins/RegExp/property-escapes/generated/Script_-_Tai_Viet.js +++ b/test/built-ins/RegExp/property-escapes/generated/Script_-_Tai_Viet.js @@ -7,7 +7,7 @@ description: > Unicode property escapes for `Script=Tai_Viet` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.1.0 + Unicode v16.0.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/property-escapes/generated/Script_-_Takri.js b/test/built-ins/RegExp/property-escapes/generated/Script_-_Takri.js index d8dacc60adb..56f718bc9e7 100644 --- a/test/built-ins/RegExp/property-escapes/generated/Script_-_Takri.js +++ b/test/built-ins/RegExp/property-escapes/generated/Script_-_Takri.js @@ -7,7 +7,7 @@ description: > Unicode property escapes for `Script=Takri` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.1.0 + Unicode v16.0.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/property-escapes/generated/Script_-_Tamil.js b/test/built-ins/RegExp/property-escapes/generated/Script_-_Tamil.js index f56959a30b7..cd22c01d669 100644 --- a/test/built-ins/RegExp/property-escapes/generated/Script_-_Tamil.js +++ b/test/built-ins/RegExp/property-escapes/generated/Script_-_Tamil.js @@ -7,7 +7,7 @@ description: > Unicode property escapes for `Script=Tamil` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.1.0 + Unicode v16.0.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/property-escapes/generated/Script_-_Tangsa.js b/test/built-ins/RegExp/property-escapes/generated/Script_-_Tangsa.js index ddf0e527e86..283aae457d0 100644 --- a/test/built-ins/RegExp/property-escapes/generated/Script_-_Tangsa.js +++ b/test/built-ins/RegExp/property-escapes/generated/Script_-_Tangsa.js @@ -7,7 +7,7 @@ description: > Unicode property escapes for `Script=Tangsa` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.1.0 + Unicode v16.0.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/property-escapes/generated/Script_-_Tangut.js b/test/built-ins/RegExp/property-escapes/generated/Script_-_Tangut.js index 8a8ec88a810..29a10f2823c 100644 --- a/test/built-ins/RegExp/property-escapes/generated/Script_-_Tangut.js +++ b/test/built-ins/RegExp/property-escapes/generated/Script_-_Tangut.js @@ -7,7 +7,7 @@ description: > Unicode property escapes for `Script=Tangut` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.1.0 + Unicode v16.0.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/property-escapes/generated/Script_-_Telugu.js b/test/built-ins/RegExp/property-escapes/generated/Script_-_Telugu.js index b042c7d4056..947d35c0422 100644 --- a/test/built-ins/RegExp/property-escapes/generated/Script_-_Telugu.js +++ b/test/built-ins/RegExp/property-escapes/generated/Script_-_Telugu.js @@ -7,7 +7,7 @@ description: > Unicode property escapes for `Script=Telugu` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.1.0 + Unicode v16.0.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/property-escapes/generated/Script_-_Thaana.js b/test/built-ins/RegExp/property-escapes/generated/Script_-_Thaana.js index 14886ce970f..c85f7222bd2 100644 --- a/test/built-ins/RegExp/property-escapes/generated/Script_-_Thaana.js +++ b/test/built-ins/RegExp/property-escapes/generated/Script_-_Thaana.js @@ -7,7 +7,7 @@ description: > Unicode property escapes for `Script=Thaana` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.1.0 + Unicode v16.0.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/property-escapes/generated/Script_-_Thai.js b/test/built-ins/RegExp/property-escapes/generated/Script_-_Thai.js index 4657d215a25..913c7e1d560 100644 --- a/test/built-ins/RegExp/property-escapes/generated/Script_-_Thai.js +++ b/test/built-ins/RegExp/property-escapes/generated/Script_-_Thai.js @@ -7,7 +7,7 @@ description: > Unicode property escapes for `Script=Thai` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.1.0 + Unicode v16.0.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/property-escapes/generated/Script_-_Tibetan.js b/test/built-ins/RegExp/property-escapes/generated/Script_-_Tibetan.js index c4842c2de92..525eb1af402 100644 --- a/test/built-ins/RegExp/property-escapes/generated/Script_-_Tibetan.js +++ b/test/built-ins/RegExp/property-escapes/generated/Script_-_Tibetan.js @@ -7,7 +7,7 @@ description: > Unicode property escapes for `Script=Tibetan` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.1.0 + Unicode v16.0.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/property-escapes/generated/Script_-_Tifinagh.js b/test/built-ins/RegExp/property-escapes/generated/Script_-_Tifinagh.js index 9eac108cdcf..0509988304a 100644 --- a/test/built-ins/RegExp/property-escapes/generated/Script_-_Tifinagh.js +++ b/test/built-ins/RegExp/property-escapes/generated/Script_-_Tifinagh.js @@ -7,7 +7,7 @@ description: > Unicode property escapes for `Script=Tifinagh` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.1.0 + Unicode v16.0.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/property-escapes/generated/Script_-_Tirhuta.js b/test/built-ins/RegExp/property-escapes/generated/Script_-_Tirhuta.js index b9d2925e594..be59a7b281d 100644 --- a/test/built-ins/RegExp/property-escapes/generated/Script_-_Tirhuta.js +++ b/test/built-ins/RegExp/property-escapes/generated/Script_-_Tirhuta.js @@ -7,7 +7,7 @@ description: > Unicode property escapes for `Script=Tirhuta` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.1.0 + Unicode v16.0.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/property-escapes/generated/Script_-_Todhri.js b/test/built-ins/RegExp/property-escapes/generated/Script_-_Todhri.js new file mode 100644 index 00000000000..4cd3028d856 --- /dev/null +++ b/test/built-ins/RegExp/property-escapes/generated/Script_-_Todhri.js @@ -0,0 +1,71 @@ +// Copyright 2024 Mathias Bynens. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +author: Mathias Bynens +description: > + Unicode property escapes for `Script=Todhri` +info: | + Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests + Unicode v16.0.0 +esid: sec-static-semantics-unicodematchproperty-p +features: [regexp-unicode-property-escapes] +includes: [regExpUtils.js] +---*/ + +const matchSymbols = buildString({ + loneCodePoints: [], + ranges: [ + [0x0105C0, 0x0105F3] + ] +}); +testPropertyEscapes( + /^\p{Script=Todhri}+$/u, + matchSymbols, + "\\p{Script=Todhri}" +); +testPropertyEscapes( + /^\p{Script=Todr}+$/u, + matchSymbols, + "\\p{Script=Todr}" +); +testPropertyEscapes( + /^\p{sc=Todhri}+$/u, + matchSymbols, + "\\p{sc=Todhri}" +); +testPropertyEscapes( + /^\p{sc=Todr}+$/u, + matchSymbols, + "\\p{sc=Todr}" +); + +const nonMatchSymbols = buildString({ + loneCodePoints: [], + ranges: [ + [0x00DC00, 0x00DFFF], + [0x000000, 0x00DBFF], + [0x00E000, 0x0105BF], + [0x0105F4, 0x10FFFF] + ] +}); +testPropertyEscapes( + /^\P{Script=Todhri}+$/u, + nonMatchSymbols, + "\\P{Script=Todhri}" +); +testPropertyEscapes( + /^\P{Script=Todr}+$/u, + nonMatchSymbols, + "\\P{Script=Todr}" +); +testPropertyEscapes( + /^\P{sc=Todhri}+$/u, + nonMatchSymbols, + "\\P{sc=Todhri}" +); +testPropertyEscapes( + /^\P{sc=Todr}+$/u, + nonMatchSymbols, + "\\P{sc=Todr}" +); diff --git a/test/built-ins/RegExp/property-escapes/generated/Script_-_Toto.js b/test/built-ins/RegExp/property-escapes/generated/Script_-_Toto.js index e0f9e0f85ba..2dd9fb00f37 100644 --- a/test/built-ins/RegExp/property-escapes/generated/Script_-_Toto.js +++ b/test/built-ins/RegExp/property-escapes/generated/Script_-_Toto.js @@ -7,7 +7,7 @@ description: > Unicode property escapes for `Script=Toto` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.1.0 + Unicode v16.0.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/property-escapes/generated/Script_-_Tulu_Tigalari.js b/test/built-ins/RegExp/property-escapes/generated/Script_-_Tulu_Tigalari.js new file mode 100644 index 00000000000..30ff7002afb --- /dev/null +++ b/test/built-ins/RegExp/property-escapes/generated/Script_-_Tulu_Tigalari.js @@ -0,0 +1,93 @@ +// Copyright 2024 Mathias Bynens. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +author: Mathias Bynens +description: > + Unicode property escapes for `Script=Tulu_Tigalari` +info: | + Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests + Unicode v16.0.0 +esid: sec-static-semantics-unicodematchproperty-p +features: [regexp-unicode-property-escapes] +includes: [regExpUtils.js] +---*/ + +const matchSymbols = buildString({ + loneCodePoints: [ + 0x01138B, + 0x01138E, + 0x0113C2, + 0x0113C5 + ], + ranges: [ + [0x011380, 0x011389], + [0x011390, 0x0113B5], + [0x0113B7, 0x0113C0], + [0x0113C7, 0x0113CA], + [0x0113CC, 0x0113D5], + [0x0113D7, 0x0113D8], + [0x0113E1, 0x0113E2] + ] +}); +testPropertyEscapes( + /^\p{Script=Tulu_Tigalari}+$/u, + matchSymbols, + "\\p{Script=Tulu_Tigalari}" +); +testPropertyEscapes( + /^\p{Script=Tutg}+$/u, + matchSymbols, + "\\p{Script=Tutg}" +); +testPropertyEscapes( + /^\p{sc=Tulu_Tigalari}+$/u, + matchSymbols, + "\\p{sc=Tulu_Tigalari}" +); +testPropertyEscapes( + /^\p{sc=Tutg}+$/u, + matchSymbols, + "\\p{sc=Tutg}" +); + +const nonMatchSymbols = buildString({ + loneCodePoints: [ + 0x01138A, + 0x01138F, + 0x0113B6, + 0x0113C1, + 0x0113C6, + 0x0113CB, + 0x0113D6 + ], + ranges: [ + [0x00DC00, 0x00DFFF], + [0x000000, 0x00DBFF], + [0x00E000, 0x01137F], + [0x01138C, 0x01138D], + [0x0113C3, 0x0113C4], + [0x0113D9, 0x0113E0], + [0x0113E3, 0x10FFFF] + ] +}); +testPropertyEscapes( + /^\P{Script=Tulu_Tigalari}+$/u, + nonMatchSymbols, + "\\P{Script=Tulu_Tigalari}" +); +testPropertyEscapes( + /^\P{Script=Tutg}+$/u, + nonMatchSymbols, + "\\P{Script=Tutg}" +); +testPropertyEscapes( + /^\P{sc=Tulu_Tigalari}+$/u, + nonMatchSymbols, + "\\P{sc=Tulu_Tigalari}" +); +testPropertyEscapes( + /^\P{sc=Tutg}+$/u, + nonMatchSymbols, + "\\P{sc=Tutg}" +); diff --git a/test/built-ins/RegExp/property-escapes/generated/Script_-_Ugaritic.js b/test/built-ins/RegExp/property-escapes/generated/Script_-_Ugaritic.js index d49b246cd81..33cf189be88 100644 --- a/test/built-ins/RegExp/property-escapes/generated/Script_-_Ugaritic.js +++ b/test/built-ins/RegExp/property-escapes/generated/Script_-_Ugaritic.js @@ -7,7 +7,7 @@ description: > Unicode property escapes for `Script=Ugaritic` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.1.0 + Unicode v16.0.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/property-escapes/generated/Script_-_Vai.js b/test/built-ins/RegExp/property-escapes/generated/Script_-_Vai.js index 91a6fc7c056..bb3436e275a 100644 --- a/test/built-ins/RegExp/property-escapes/generated/Script_-_Vai.js +++ b/test/built-ins/RegExp/property-escapes/generated/Script_-_Vai.js @@ -7,7 +7,7 @@ description: > Unicode property escapes for `Script=Vai` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.1.0 + Unicode v16.0.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/property-escapes/generated/Script_-_Vithkuqi.js b/test/built-ins/RegExp/property-escapes/generated/Script_-_Vithkuqi.js index aeeb161c3ef..ef67e5dee92 100644 --- a/test/built-ins/RegExp/property-escapes/generated/Script_-_Vithkuqi.js +++ b/test/built-ins/RegExp/property-escapes/generated/Script_-_Vithkuqi.js @@ -7,7 +7,7 @@ description: > Unicode property escapes for `Script=Vithkuqi` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.1.0 + Unicode v16.0.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/property-escapes/generated/Script_-_Wancho.js b/test/built-ins/RegExp/property-escapes/generated/Script_-_Wancho.js index e97f3755f19..0b5c21d15d4 100644 --- a/test/built-ins/RegExp/property-escapes/generated/Script_-_Wancho.js +++ b/test/built-ins/RegExp/property-escapes/generated/Script_-_Wancho.js @@ -7,7 +7,7 @@ description: > Unicode property escapes for `Script=Wancho` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.1.0 + Unicode v16.0.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/property-escapes/generated/Script_-_Warang_Citi.js b/test/built-ins/RegExp/property-escapes/generated/Script_-_Warang_Citi.js index 67f6a77c3fc..38158e825b2 100644 --- a/test/built-ins/RegExp/property-escapes/generated/Script_-_Warang_Citi.js +++ b/test/built-ins/RegExp/property-escapes/generated/Script_-_Warang_Citi.js @@ -7,7 +7,7 @@ description: > Unicode property escapes for `Script=Warang_Citi` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.1.0 + Unicode v16.0.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/property-escapes/generated/Script_-_Yezidi.js b/test/built-ins/RegExp/property-escapes/generated/Script_-_Yezidi.js index 66cad0aef64..9ee9d2c0e17 100644 --- a/test/built-ins/RegExp/property-escapes/generated/Script_-_Yezidi.js +++ b/test/built-ins/RegExp/property-escapes/generated/Script_-_Yezidi.js @@ -7,7 +7,7 @@ description: > Unicode property escapes for `Script=Yezidi` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.1.0 + Unicode v16.0.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/property-escapes/generated/Script_-_Yi.js b/test/built-ins/RegExp/property-escapes/generated/Script_-_Yi.js index 501ab6d5dc9..368c8f85fa9 100644 --- a/test/built-ins/RegExp/property-escapes/generated/Script_-_Yi.js +++ b/test/built-ins/RegExp/property-escapes/generated/Script_-_Yi.js @@ -7,7 +7,7 @@ description: > Unicode property escapes for `Script=Yi` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.1.0 + Unicode v16.0.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/property-escapes/generated/Script_-_Zanabazar_Square.js b/test/built-ins/RegExp/property-escapes/generated/Script_-_Zanabazar_Square.js index a4ea3e3498f..d2c841e2235 100644 --- a/test/built-ins/RegExp/property-escapes/generated/Script_-_Zanabazar_Square.js +++ b/test/built-ins/RegExp/property-escapes/generated/Script_-_Zanabazar_Square.js @@ -7,7 +7,7 @@ description: > Unicode property escapes for `Script=Zanabazar_Square` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.1.0 + Unicode v16.0.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Adlam.js b/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Adlam.js index e462c83c35f..6c8ed460d21 100644 --- a/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Adlam.js +++ b/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Adlam.js @@ -7,7 +7,7 @@ description: > Unicode property escapes for `Script_Extensions=Adlam` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.1.0 + Unicode v16.0.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] @@ -16,7 +16,9 @@ includes: [regExpUtils.js] const matchSymbols = buildString({ loneCodePoints: [ 0x00061F, - 0x000640 + 0x000640, + 0x00204F, + 0x002E41 ], ranges: [ [0x01E900, 0x01E94B], @@ -51,7 +53,9 @@ const nonMatchSymbols = buildString({ [0x00DC00, 0x00DFFF], [0x000000, 0x00061E], [0x000620, 0x00063F], - [0x000641, 0x00DBFF], + [0x000641, 0x00204E], + [0x002050, 0x002E40], + [0x002E42, 0x00DBFF], [0x00E000, 0x01E8FF], [0x01E94C, 0x01E94F], [0x01E95A, 0x01E95D], diff --git a/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Ahom.js b/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Ahom.js index dc39f1d8a66..5eac1552319 100644 --- a/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Ahom.js +++ b/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Ahom.js @@ -7,7 +7,7 @@ description: > Unicode property escapes for `Script_Extensions=Ahom` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.1.0 + Unicode v16.0.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Anatolian_Hieroglyphs.js b/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Anatolian_Hieroglyphs.js index f37b37f3ef7..8bfafec1597 100644 --- a/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Anatolian_Hieroglyphs.js +++ b/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Anatolian_Hieroglyphs.js @@ -7,7 +7,7 @@ description: > Unicode property escapes for `Script_Extensions=Anatolian_Hieroglyphs` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.1.0 + Unicode v16.0.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Arabic.js b/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Arabic.js index 3cedf318e5c..c7a499de2ad 100644 --- a/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Arabic.js +++ b/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Arabic.js @@ -7,7 +7,7 @@ description: > Unicode property escapes for `Script_Extensions=Arabic` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.1.0 + Unicode v16.0.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] @@ -15,6 +15,8 @@ includes: [regExpUtils.js] const matchSymbols = buildString({ loneCodePoints: [ + 0x00204F, + 0x002E41, 0x00FDCF, 0x01EE24, 0x01EE27, @@ -40,7 +42,7 @@ const matchSymbols = buildString({ [0x000750, 0x00077F], [0x000870, 0x00088E], [0x000890, 0x000891], - [0x000898, 0x0008E1], + [0x000897, 0x0008E1], [0x0008E3, 0x0008FF], [0x00FB50, 0x00FBC2], [0x00FBD3, 0x00FD8F], @@ -50,7 +52,8 @@ const matchSymbols = buildString({ [0x00FE76, 0x00FEFC], [0x0102E0, 0x0102FB], [0x010E60, 0x010E7E], - [0x010EFD, 0x010EFF], + [0x010EC2, 0x010EC4], + [0x010EFC, 0x010EFF], [0x01EE00, 0x01EE03], [0x01EE05, 0x01EE1F], [0x01EE21, 0x01EE22], @@ -131,8 +134,10 @@ const nonMatchSymbols = buildString({ [0x000000, 0x0005FF], [0x000700, 0x00074F], [0x000780, 0x00086F], - [0x000892, 0x000897], - [0x000900, 0x00DBFF], + [0x000892, 0x000896], + [0x000900, 0x00204E], + [0x002050, 0x002E40], + [0x002E42, 0x00DBFF], [0x00E000, 0x00FB4F], [0x00FBC3, 0x00FBD2], [0x00FD90, 0x00FD91], @@ -141,7 +146,8 @@ const nonMatchSymbols = buildString({ [0x00FE00, 0x00FE6F], [0x00FEFD, 0x0102DF], [0x0102FC, 0x010E5F], - [0x010E7F, 0x010EFC], + [0x010E7F, 0x010EC1], + [0x010EC5, 0x010EFB], [0x010F00, 0x01EDFF], [0x01EE25, 0x01EE26], [0x01EE3C, 0x01EE41], diff --git a/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Armenian.js b/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Armenian.js index 8ddc5ad052f..01f74360136 100644 --- a/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Armenian.js +++ b/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Armenian.js @@ -7,14 +7,16 @@ description: > Unicode property escapes for `Script_Extensions=Armenian` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.1.0 + Unicode v16.0.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] ---*/ const matchSymbols = buildString({ - loneCodePoints: [], + loneCodePoints: [ + 0x000308 + ], ranges: [ [0x000531, 0x000556], [0x000559, 0x00058A], @@ -47,7 +49,8 @@ const nonMatchSymbols = buildString({ loneCodePoints: [], ranges: [ [0x00DC00, 0x00DFFF], - [0x000000, 0x000530], + [0x000000, 0x000307], + [0x000309, 0x000530], [0x000557, 0x000558], [0x00058B, 0x00058C], [0x000590, 0x00DBFF], diff --git a/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Avestan.js b/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Avestan.js index f0f7d8796f6..a6f10919570 100644 --- a/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Avestan.js +++ b/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Avestan.js @@ -7,15 +7,18 @@ description: > Unicode property escapes for `Script_Extensions=Avestan` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.1.0 + Unicode v16.0.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] ---*/ const matchSymbols = buildString({ - loneCodePoints: [], + loneCodePoints: [ + 0x0000B7 + ], ranges: [ + [0x002E30, 0x002E31], [0x010B00, 0x010B35], [0x010B39, 0x010B3F] ] @@ -45,7 +48,9 @@ const nonMatchSymbols = buildString({ loneCodePoints: [], ranges: [ [0x00DC00, 0x00DFFF], - [0x000000, 0x00DBFF], + [0x000000, 0x0000B6], + [0x0000B8, 0x002E2F], + [0x002E32, 0x00DBFF], [0x00E000, 0x010AFF], [0x010B36, 0x010B38], [0x010B40, 0x10FFFF] diff --git a/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Balinese.js b/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Balinese.js index d1c58dbbf85..6f4b499447e 100644 --- a/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Balinese.js +++ b/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Balinese.js @@ -7,7 +7,7 @@ description: > Unicode property escapes for `Script_Extensions=Balinese` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.1.0 + Unicode v16.0.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] @@ -17,7 +17,7 @@ const matchSymbols = buildString({ loneCodePoints: [], ranges: [ [0x001B00, 0x001B4C], - [0x001B50, 0x001B7E] + [0x001B4E, 0x001B7F] ] }); testPropertyEscapes( @@ -42,12 +42,13 @@ testPropertyEscapes( ); const nonMatchSymbols = buildString({ - loneCodePoints: [], + loneCodePoints: [ + 0x001B4D + ], ranges: [ [0x00DC00, 0x00DFFF], [0x000000, 0x001AFF], - [0x001B4D, 0x001B4F], - [0x001B7F, 0x00DBFF], + [0x001B80, 0x00DBFF], [0x00E000, 0x10FFFF] ] }); diff --git a/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Bamum.js b/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Bamum.js index a0146cede76..94a957c279b 100644 --- a/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Bamum.js +++ b/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Bamum.js @@ -7,7 +7,7 @@ description: > Unicode property escapes for `Script_Extensions=Bamum` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.1.0 + Unicode v16.0.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Bassa_Vah.js b/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Bassa_Vah.js index d18614c6efb..5c13aea2683 100644 --- a/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Bassa_Vah.js +++ b/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Bassa_Vah.js @@ -7,7 +7,7 @@ description: > Unicode property escapes for `Script_Extensions=Bassa_Vah` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.1.0 + Unicode v16.0.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Batak.js b/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Batak.js index 889b0a7ead5..e71f2ef5ea7 100644 --- a/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Batak.js +++ b/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Batak.js @@ -7,7 +7,7 @@ description: > Unicode property escapes for `Script_Extensions=Batak` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.1.0 + Unicode v16.0.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Bengali.js b/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Bengali.js index 9754df14e1a..f1ecd935f81 100644 --- a/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Bengali.js +++ b/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Bengali.js @@ -7,7 +7,7 @@ description: > Unicode property escapes for `Script_Extensions=Bengali` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.1.0 + Unicode v16.0.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] @@ -15,6 +15,7 @@ includes: [regExpUtils.js] const matchSymbols = buildString({ loneCodePoints: [ + 0x0002BC, 0x0009B2, 0x0009D7, 0x001CD0, @@ -77,7 +78,8 @@ const nonMatchSymbols = buildString({ ], ranges: [ [0x00DC00, 0x00DFFF], - [0x000000, 0x000950], + [0x000000, 0x0002BB], + [0x0002BD, 0x000950], [0x000953, 0x000963], [0x000966, 0x00097F], [0x00098D, 0x00098E], diff --git a/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Bhaiksuki.js b/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Bhaiksuki.js index c5df7922460..5d0b2f9a34f 100644 --- a/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Bhaiksuki.js +++ b/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Bhaiksuki.js @@ -7,7 +7,7 @@ description: > Unicode property escapes for `Script_Extensions=Bhaiksuki` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.1.0 + Unicode v16.0.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Bopomofo.js b/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Bopomofo.js index c846efa3472..c073bc6c490 100644 --- a/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Bopomofo.js +++ b/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Bopomofo.js @@ -7,7 +7,7 @@ description: > Unicode property escapes for `Script_Extensions=Bopomofo` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.1.0 + Unicode v16.0.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] @@ -15,11 +15,14 @@ includes: [regExpUtils.js] const matchSymbols = buildString({ loneCodePoints: [ + 0x0002C7, + 0x0002D9, 0x003030, 0x003037, 0x0030FB ], ranges: [ + [0x0002C9, 0x0002CB], [0x0002EA, 0x0002EB], [0x003001, 0x003003], [0x003008, 0x003011], @@ -54,11 +57,14 @@ testPropertyEscapes( const nonMatchSymbols = buildString({ loneCodePoints: [ + 0x0002C8, 0x003012 ], ranges: [ [0x00DC00, 0x00DFFF], - [0x000000, 0x0002E9], + [0x000000, 0x0002C6], + [0x0002CC, 0x0002D8], + [0x0002DA, 0x0002E9], [0x0002EC, 0x003000], [0x003004, 0x003007], [0x003020, 0x003029], diff --git a/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Brahmi.js b/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Brahmi.js index 797a7d5d1eb..15203edd9c1 100644 --- a/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Brahmi.js +++ b/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Brahmi.js @@ -7,7 +7,7 @@ description: > Unicode property escapes for `Script_Extensions=Brahmi` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.1.0 + Unicode v16.0.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Braille.js b/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Braille.js index 0319111426d..18c5cb0249a 100644 --- a/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Braille.js +++ b/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Braille.js @@ -7,7 +7,7 @@ description: > Unicode property escapes for `Script_Extensions=Braille` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.1.0 + Unicode v16.0.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Buginese.js b/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Buginese.js index f80bc8c935f..f2cf2d1f0cb 100644 --- a/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Buginese.js +++ b/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Buginese.js @@ -7,7 +7,7 @@ description: > Unicode property escapes for `Script_Extensions=Buginese` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.1.0 + Unicode v16.0.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Buhid.js b/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Buhid.js index e15925b5121..3bcafbde4d5 100644 --- a/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Buhid.js +++ b/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Buhid.js @@ -7,7 +7,7 @@ description: > Unicode property escapes for `Script_Extensions=Buhid` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.1.0 + Unicode v16.0.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Canadian_Aboriginal.js b/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Canadian_Aboriginal.js index 7d96039bec9..32de7bd58b6 100644 --- a/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Canadian_Aboriginal.js +++ b/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Canadian_Aboriginal.js @@ -7,7 +7,7 @@ description: > Unicode property escapes for `Script_Extensions=Canadian_Aboriginal` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.1.0 + Unicode v16.0.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Carian.js b/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Carian.js index cd5d13778a1..29576a0e848 100644 --- a/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Carian.js +++ b/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Carian.js @@ -7,14 +7,19 @@ description: > Unicode property escapes for `Script_Extensions=Carian` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.1.0 + Unicode v16.0.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] ---*/ const matchSymbols = buildString({ - loneCodePoints: [], + loneCodePoints: [ + 0x0000B7, + 0x00205A, + 0x00205D, + 0x002E31 + ], ranges: [ [0x0102A0, 0x0102D0] ] @@ -44,7 +49,11 @@ const nonMatchSymbols = buildString({ loneCodePoints: [], ranges: [ [0x00DC00, 0x00DFFF], - [0x000000, 0x00DBFF], + [0x000000, 0x0000B6], + [0x0000B8, 0x002059], + [0x00205B, 0x00205C], + [0x00205E, 0x002E30], + [0x002E32, 0x00DBFF], [0x00E000, 0x01029F], [0x0102D1, 0x10FFFF] ] diff --git a/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Caucasian_Albanian.js b/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Caucasian_Albanian.js index 466949c56ca..7438be8bc85 100644 --- a/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Caucasian_Albanian.js +++ b/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Caucasian_Albanian.js @@ -7,7 +7,7 @@ description: > Unicode property escapes for `Script_Extensions=Caucasian_Albanian` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.1.0 + Unicode v16.0.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] @@ -15,6 +15,9 @@ includes: [regExpUtils.js] const matchSymbols = buildString({ loneCodePoints: [ + 0x000304, + 0x000331, + 0x00035E, 0x01056F ], ranges: [ @@ -46,7 +49,10 @@ const nonMatchSymbols = buildString({ loneCodePoints: [], ranges: [ [0x00DC00, 0x00DFFF], - [0x000000, 0x00DBFF], + [0x000000, 0x000303], + [0x000305, 0x000330], + [0x000332, 0x00035D], + [0x00035F, 0x00DBFF], [0x00E000, 0x01052F], [0x010564, 0x01056E], [0x010570, 0x10FFFF] diff --git a/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Chakma.js b/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Chakma.js index ba596c2b544..4ec622e44cb 100644 --- a/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Chakma.js +++ b/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Chakma.js @@ -7,7 +7,7 @@ description: > Unicode property escapes for `Script_Extensions=Chakma` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.1.0 + Unicode v16.0.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Cham.js b/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Cham.js index dbc2091c828..629d2694fad 100644 --- a/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Cham.js +++ b/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Cham.js @@ -7,7 +7,7 @@ description: > Unicode property escapes for `Script_Extensions=Cham` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.1.0 + Unicode v16.0.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Cherokee.js b/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Cherokee.js index 3e949517965..a3a0f7836d3 100644 --- a/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Cherokee.js +++ b/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Cherokee.js @@ -7,15 +7,21 @@ description: > Unicode property escapes for `Script_Extensions=Cherokee` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.1.0 + Unicode v16.0.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] ---*/ const matchSymbols = buildString({ - loneCodePoints: [], + loneCodePoints: [ + 0x000304 + ], ranges: [ + [0x000300, 0x000302], + [0x00030B, 0x00030C], + [0x000323, 0x000324], + [0x000330, 0x000331], [0x0013A0, 0x0013F5], [0x0013F8, 0x0013FD], [0x00AB70, 0x00ABBF] @@ -43,10 +49,16 @@ testPropertyEscapes( ); const nonMatchSymbols = buildString({ - loneCodePoints: [], + loneCodePoints: [ + 0x000303 + ], ranges: [ [0x00DC00, 0x00DFFF], - [0x000000, 0x00139F], + [0x000000, 0x0002FF], + [0x000305, 0x00030A], + [0x00030D, 0x000322], + [0x000325, 0x00032F], + [0x000332, 0x00139F], [0x0013F6, 0x0013F7], [0x0013FE, 0x00AB6F], [0x00ABC0, 0x00DBFF], diff --git a/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Chorasmian.js b/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Chorasmian.js index db5ca391fec..2d86ae717d3 100644 --- a/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Chorasmian.js +++ b/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Chorasmian.js @@ -7,7 +7,7 @@ description: > Unicode property escapes for `Script_Extensions=Chorasmian` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.1.0 + Unicode v16.0.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Common.js b/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Common.js index 6be4f281016..bd1e44493cd 100644 --- a/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Common.js +++ b/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Common.js @@ -7,7 +7,7 @@ description: > Unicode property escapes for `Script_Extensions=Common` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.1.0 + Unicode v16.0.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] @@ -17,7 +17,9 @@ const matchSymbols = buildString({ loneCodePoints: [ 0x0000D7, 0x0000F7, - 0x000374, + 0x0002C8, + 0x0002CC, + 0x0002D8, 0x00037E, 0x000385, 0x000387, @@ -25,11 +27,12 @@ const matchSymbols = buildString({ 0x0006DD, 0x0008E2, 0x000E3F, + 0x002E42, + 0x003000, 0x003004, 0x003012, 0x003020, 0x003036, - 0x0031EF, 0x00327F, 0x0033FF, 0x00AB5B, @@ -44,16 +47,22 @@ const matchSymbols = buildString({ [0x000000, 0x000040], [0x00005B, 0x000060], [0x00007B, 0x0000A9], - [0x0000AB, 0x0000B9], + [0x0000AB, 0x0000B6], + [0x0000B8, 0x0000B9], [0x0000BB, 0x0000BF], - [0x0002B9, 0x0002DF], + [0x0002B9, 0x0002BB], + [0x0002BD, 0x0002C6], + [0x0002CE, 0x0002D6], + [0x0002DA, 0x0002DF], [0x0002E5, 0x0002E9], [0x0002EC, 0x0002FF], [0x000FD5, 0x000FD8], - [0x0016EB, 0x0016ED], [0x002000, 0x00200B], [0x00200E, 0x00202E], - [0x002030, 0x002064], + [0x002030, 0x00204E], + [0x002050, 0x002059], + [0x00205B, 0x00205C], + [0x00205E, 0x002064], [0x002066, 0x002070], [0x002074, 0x00207E], [0x002080, 0x00208E], @@ -64,15 +73,17 @@ const matchSymbols = buildString({ [0x002133, 0x00214D], [0x00214F, 0x00215F], [0x002189, 0x00218B], - [0x002190, 0x002426], + [0x002190, 0x002429], [0x002440, 0x00244A], [0x002460, 0x0027FF], [0x002900, 0x002B73], [0x002B76, 0x002B95], [0x002B97, 0x002BFF], - [0x002E00, 0x002E42], + [0x002E00, 0x002E16], + [0x002E18, 0x002E2F], + [0x002E32, 0x002E3B], + [0x002E3D, 0x002E40], [0x002E44, 0x002E5D], - [0x002FF0, 0x003000], [0x003248, 0x00325F], [0x0032B1, 0x0032BF], [0x0032CC, 0x0032CF], @@ -95,6 +106,8 @@ const matchSymbols = buildString({ [0x00FFF9, 0x00FFFD], [0x010190, 0x01019C], [0x0101D0, 0x0101FC], + [0x01CC00, 0x01CCF9], + [0x01CD00, 0x01CEB3], [0x01CF50, 0x01CFC3], [0x01D000, 0x01D0F5], [0x01D100, 0x01D126], @@ -150,19 +163,18 @@ const matchSymbols = buildString({ [0x01F850, 0x01F859], [0x01F860, 0x01F887], [0x01F890, 0x01F8AD], - [0x01F8B0, 0x01F8B1], + [0x01F8B0, 0x01F8BB], + [0x01F8C0, 0x01F8C1], [0x01F900, 0x01FA53], [0x01FA60, 0x01FA6D], [0x01FA70, 0x01FA7C], - [0x01FA80, 0x01FA88], - [0x01FA90, 0x01FABD], - [0x01FABF, 0x01FAC5], - [0x01FACE, 0x01FADB], - [0x01FAE0, 0x01FAE8], + [0x01FA80, 0x01FA89], + [0x01FA8F, 0x01FAC6], + [0x01FACE, 0x01FADC], + [0x01FADF, 0x01FAE9], [0x01FAF0, 0x01FAF8], [0x01FB00, 0x01FB92], - [0x01FB94, 0x01FBCA], - [0x01FBF0, 0x01FBF9], + [0x01FB94, 0x01FBF9], [0x0E0020, 0x0E007F] ] }); @@ -190,15 +202,27 @@ testPropertyEscapes( const nonMatchSymbols = buildString({ loneCodePoints: [ 0x0000AA, + 0x0000B7, 0x0000BA, + 0x0002BC, + 0x0002C7, + 0x0002CD, + 0x0002D7, + 0x0002D9, 0x000386, 0x00202F, + 0x00204F, + 0x00205A, + 0x00205D, 0x002065, 0x00207F, 0x002126, 0x002132, 0x00214E, 0x002B96, + 0x002E17, + 0x002E3C, + 0x002E41, 0x002E43, 0x00FE53, 0x00FE67, @@ -220,7 +244,6 @@ const nonMatchSymbols = buildString({ 0x01F0C0, 0x01F0D0, 0x01F200, - 0x01FABE, 0x01FB93 ], ranges: [ @@ -230,18 +253,17 @@ const nonMatchSymbols = buildString({ [0x0000C0, 0x0000D6], [0x0000D8, 0x0000F6], [0x0000F8, 0x0002B8], + [0x0002C9, 0x0002CB], [0x0002E0, 0x0002E4], [0x0002EA, 0x0002EB], - [0x000300, 0x000373], - [0x000375, 0x00037D], + [0x000300, 0x00037D], [0x00037F, 0x000384], [0x000388, 0x000604], [0x000606, 0x0006DC], [0x0006DE, 0x0008E1], [0x0008E3, 0x000E3E], [0x000E40, 0x000FD4], - [0x000FD9, 0x0016EA], - [0x0016EE, 0x001FFF], + [0x000FD9, 0x001FFF], [0x00200C, 0x00200D], [0x002071, 0x002073], [0x00208F, 0x00209F], @@ -249,18 +271,18 @@ const nonMatchSymbols = buildString({ [0x00212A, 0x00212B], [0x002160, 0x002188], [0x00218C, 0x00218F], - [0x002427, 0x00243F], + [0x00242A, 0x00243F], [0x00244B, 0x00245F], [0x002800, 0x0028FF], [0x002B74, 0x002B75], [0x002C00, 0x002DFF], - [0x002E5E, 0x002FEF], + [0x002E30, 0x002E31], + [0x002E5E, 0x002FFF], [0x003001, 0x003003], [0x003005, 0x003011], [0x003013, 0x00301F], [0x003021, 0x003035], - [0x003037, 0x0031EE], - [0x0031F0, 0x003247], + [0x003037, 0x003247], [0x003260, 0x00327E], [0x003280, 0x0032B0], [0x0032C0, 0x0032CB], @@ -283,7 +305,9 @@ const nonMatchSymbols = buildString({ [0x00FFEF, 0x00FFF8], [0x00FFFE, 0x01018F], [0x01019D, 0x0101CF], - [0x0101FD, 0x01CF4F], + [0x0101FD, 0x01CBFF], + [0x01CCFA, 0x01CCFF], + [0x01CEB4, 0x01CF4F], [0x01CFC4, 0x01CFFF], [0x01D0F6, 0x01D0FF], [0x01D127, 0x01D128], @@ -327,16 +351,16 @@ const nonMatchSymbols = buildString({ [0x01F85A, 0x01F85F], [0x01F888, 0x01F88F], [0x01F8AE, 0x01F8AF], - [0x01F8B2, 0x01F8FF], + [0x01F8BC, 0x01F8BF], + [0x01F8C2, 0x01F8FF], [0x01FA54, 0x01FA5F], [0x01FA6E, 0x01FA6F], [0x01FA7D, 0x01FA7F], - [0x01FA89, 0x01FA8F], - [0x01FAC6, 0x01FACD], - [0x01FADC, 0x01FADF], - [0x01FAE9, 0x01FAEF], + [0x01FA8A, 0x01FA8E], + [0x01FAC7, 0x01FACD], + [0x01FADD, 0x01FADE], + [0x01FAEA, 0x01FAEF], [0x01FAF9, 0x01FAFF], - [0x01FBCB, 0x01FBEF], [0x01FBFA, 0x0E0000], [0x0E0002, 0x0E001F], [0x0E0080, 0x10FFFF] diff --git a/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Coptic.js b/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Coptic.js index 402adb9d9fa..78abf6aaa52 100644 --- a/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Coptic.js +++ b/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Coptic.js @@ -7,15 +7,22 @@ description: > Unicode property escapes for `Script_Extensions=Coptic` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.1.0 + Unicode v16.0.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] ---*/ const matchSymbols = buildString({ - loneCodePoints: [], + loneCodePoints: [ + 0x0000B7, + 0x000300, + 0x000307, + 0x002E17 + ], ranges: [ + [0x000304, 0x000305], + [0x000374, 0x000375], [0x0003E2, 0x0003EF], [0x002C80, 0x002CF3], [0x002CF9, 0x002CFF], @@ -54,13 +61,20 @@ testPropertyEscapes( ); const nonMatchSymbols = buildString({ - loneCodePoints: [], + loneCodePoints: [ + 0x000306 + ], ranges: [ [0x00DC00, 0x00DFFF], - [0x000000, 0x0003E1], + [0x000000, 0x0000B6], + [0x0000B8, 0x0002FF], + [0x000301, 0x000303], + [0x000308, 0x000373], + [0x000376, 0x0003E1], [0x0003F0, 0x002C7F], [0x002CF4, 0x002CF8], - [0x002D00, 0x00DBFF], + [0x002D00, 0x002E16], + [0x002E18, 0x00DBFF], [0x00E000, 0x0102DF], [0x0102FC, 0x10FFFF] ] diff --git a/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Cuneiform.js b/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Cuneiform.js index edf6d9d614d..23817b650f6 100644 --- a/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Cuneiform.js +++ b/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Cuneiform.js @@ -7,7 +7,7 @@ description: > Unicode property escapes for `Script_Extensions=Cuneiform` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.1.0 + Unicode v16.0.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Cypriot.js b/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Cypriot.js index f4f119915e0..9f9f40a5a97 100644 --- a/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Cypriot.js +++ b/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Cypriot.js @@ -7,7 +7,7 @@ description: > Unicode property escapes for `Script_Extensions=Cypriot` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.1.0 + Unicode v16.0.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Cypro_Minoan.js b/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Cypro_Minoan.js index 6faff40303f..d28c718a4ec 100644 --- a/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Cypro_Minoan.js +++ b/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Cypro_Minoan.js @@ -7,7 +7,7 @@ description: > Unicode property escapes for `Script_Extensions=Cypro_Minoan` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.1.0 + Unicode v16.0.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Cyrillic.js b/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Cyrillic.js index bc7a54d334f..3442ad3e3d0 100644 --- a/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Cyrillic.js +++ b/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Cyrillic.js @@ -7,7 +7,7 @@ description: > Unicode property escapes for `Script_Extensions=Cyrillic` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.1.0 + Unicode v16.0.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] @@ -15,6 +15,12 @@ includes: [regExpUtils.js] const matchSymbols = buildString({ loneCodePoints: [ + 0x0002BC, + 0x000304, + 0x000306, + 0x000308, + 0x00030B, + 0x000311, 0x001D2B, 0x001D78, 0x001DF8, @@ -22,8 +28,9 @@ const matchSymbols = buildString({ 0x01E08F ], ranges: [ + [0x000300, 0x000302], [0x000400, 0x00052F], - [0x001C80, 0x001C88], + [0x001C80, 0x001C8A], [0x002DE0, 0x002DFF], [0x00A640, 0x00A69F], [0x00FE2E, 0x00FE2F], @@ -52,12 +59,20 @@ testPropertyEscapes( ); const nonMatchSymbols = buildString({ - loneCodePoints: [], + loneCodePoints: [ + 0x000303, + 0x000305, + 0x000307 + ], ranges: [ [0x00DC00, 0x00DFFF], - [0x000000, 0x0003FF], + [0x000000, 0x0002BB], + [0x0002BD, 0x0002FF], + [0x000309, 0x00030A], + [0x00030C, 0x000310], + [0x000312, 0x0003FF], [0x000530, 0x001C7F], - [0x001C89, 0x001D2A], + [0x001C8B, 0x001D2A], [0x001D2C, 0x001D77], [0x001D79, 0x001DF7], [0x001DF9, 0x002DDF], diff --git a/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Deseret.js b/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Deseret.js index 8ea8123928a..128b2b5ef8c 100644 --- a/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Deseret.js +++ b/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Deseret.js @@ -7,7 +7,7 @@ description: > Unicode property escapes for `Script_Extensions=Deseret` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.1.0 + Unicode v16.0.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Devanagari.js b/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Devanagari.js index f4a929b22b6..ad9c67ced14 100644 --- a/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Devanagari.js +++ b/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Devanagari.js @@ -7,7 +7,7 @@ description: > Unicode property escapes for `Script_Extensions=Devanagari` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.1.0 + Unicode v16.0.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] @@ -15,6 +15,7 @@ includes: [regExpUtils.js] const matchSymbols = buildString({ loneCodePoints: [ + 0x0002BC, 0x0020F0 ], ranges: [ @@ -54,7 +55,8 @@ const nonMatchSymbols = buildString({ ], ranges: [ [0x00DC00, 0x00DFFF], - [0x000000, 0x0008FF], + [0x000000, 0x0002BB], + [0x0002BD, 0x0008FF], [0x000953, 0x000954], [0x000980, 0x001CCF], [0x001CFA, 0x0020EF], diff --git a/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Dives_Akuru.js b/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Dives_Akuru.js index f503e257cbd..e70917d858b 100644 --- a/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Dives_Akuru.js +++ b/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Dives_Akuru.js @@ -7,7 +7,7 @@ description: > Unicode property escapes for `Script_Extensions=Dives_Akuru` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.1.0 + Unicode v16.0.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Dogra.js b/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Dogra.js index 650d2d17dbc..847dc72234d 100644 --- a/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Dogra.js +++ b/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Dogra.js @@ -7,7 +7,7 @@ description: > Unicode property escapes for `Script_Extensions=Dogra` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.1.0 + Unicode v16.0.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Duployan.js b/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Duployan.js index e41fae8be4c..9145fb3c627 100644 --- a/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Duployan.js +++ b/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Duployan.js @@ -7,15 +7,21 @@ description: > Unicode property escapes for `Script_Extensions=Duployan` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.1.0 + Unicode v16.0.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] ---*/ const matchSymbols = buildString({ - loneCodePoints: [], + loneCodePoints: [ + 0x0000B7, + 0x00030A, + 0x002E3C + ], ranges: [ + [0x000307, 0x000308], + [0x000323, 0x000324], [0x01BC00, 0x01BC6A], [0x01BC70, 0x01BC7C], [0x01BC80, 0x01BC88], @@ -45,10 +51,16 @@ testPropertyEscapes( ); const nonMatchSymbols = buildString({ - loneCodePoints: [], + loneCodePoints: [ + 0x000309 + ], ranges: [ [0x00DC00, 0x00DFFF], - [0x000000, 0x00DBFF], + [0x000000, 0x0000B6], + [0x0000B8, 0x000306], + [0x00030B, 0x000322], + [0x000325, 0x002E3B], + [0x002E3D, 0x00DBFF], [0x00E000, 0x01BBFF], [0x01BC6B, 0x01BC6F], [0x01BC7D, 0x01BC7F], diff --git a/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Egyptian_Hieroglyphs.js b/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Egyptian_Hieroglyphs.js index af7afa6923e..a164528c1bf 100644 --- a/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Egyptian_Hieroglyphs.js +++ b/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Egyptian_Hieroglyphs.js @@ -7,7 +7,7 @@ description: > Unicode property escapes for `Script_Extensions=Egyptian_Hieroglyphs` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.1.0 + Unicode v16.0.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] @@ -16,7 +16,8 @@ includes: [regExpUtils.js] const matchSymbols = buildString({ loneCodePoints: [], ranges: [ - [0x013000, 0x013455] + [0x013000, 0x013455], + [0x013460, 0x0143FA] ] }); testPropertyEscapes( @@ -46,7 +47,8 @@ const nonMatchSymbols = buildString({ [0x00DC00, 0x00DFFF], [0x000000, 0x00DBFF], [0x00E000, 0x012FFF], - [0x013456, 0x10FFFF] + [0x013456, 0x01345F], + [0x0143FB, 0x10FFFF] ] }); testPropertyEscapes( diff --git a/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Elbasan.js b/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Elbasan.js index 654d7f92dac..1995316ed84 100644 --- a/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Elbasan.js +++ b/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Elbasan.js @@ -7,14 +7,17 @@ description: > Unicode property escapes for `Script_Extensions=Elbasan` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.1.0 + Unicode v16.0.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] ---*/ const matchSymbols = buildString({ - loneCodePoints: [], + loneCodePoints: [ + 0x0000B7, + 0x000305 + ], ranges: [ [0x010500, 0x010527] ] @@ -44,7 +47,9 @@ const nonMatchSymbols = buildString({ loneCodePoints: [], ranges: [ [0x00DC00, 0x00DFFF], - [0x000000, 0x00DBFF], + [0x000000, 0x0000B6], + [0x0000B8, 0x000304], + [0x000306, 0x00DBFF], [0x00E000, 0x0104FF], [0x010528, 0x10FFFF] ] diff --git a/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Elymaic.js b/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Elymaic.js index ad644cf2485..a3f27f3f52a 100644 --- a/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Elymaic.js +++ b/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Elymaic.js @@ -7,7 +7,7 @@ description: > Unicode property escapes for `Script_Extensions=Elymaic` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.1.0 + Unicode v16.0.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Ethiopic.js b/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Ethiopic.js index 5e654f90733..994100aa21c 100644 --- a/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Ethiopic.js +++ b/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Ethiopic.js @@ -7,7 +7,7 @@ description: > Unicode property escapes for `Script_Extensions=Ethiopic` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.1.0 + Unicode v16.0.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] @@ -15,6 +15,7 @@ includes: [regExpUtils.js] const matchSymbols = buildString({ loneCodePoints: [ + 0x00030E, 0x001258, 0x0012C0 ], @@ -101,7 +102,8 @@ const nonMatchSymbols = buildString({ ], ranges: [ [0x00DC00, 0x00DFFF], - [0x000000, 0x0011FF], + [0x000000, 0x00030D], + [0x00030F, 0x0011FF], [0x00124E, 0x00124F], [0x00125E, 0x00125F], [0x00128E, 0x00128F], diff --git a/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Garay.js b/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Garay.js new file mode 100644 index 00000000000..92a7200f5b0 --- /dev/null +++ b/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Garay.js @@ -0,0 +1,82 @@ +// Copyright 2024 Mathias Bynens. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +author: Mathias Bynens +description: > + Unicode property escapes for `Script_Extensions=Garay` +info: | + Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests + Unicode v16.0.0 +esid: sec-static-semantics-unicodematchproperty-p +features: [regexp-unicode-property-escapes] +includes: [regExpUtils.js] +---*/ + +const matchSymbols = buildString({ + loneCodePoints: [ + 0x00060C, + 0x00061B, + 0x00061F + ], + ranges: [ + [0x010D40, 0x010D65], + [0x010D69, 0x010D85], + [0x010D8E, 0x010D8F] + ] +}); +testPropertyEscapes( + /^\p{Script_Extensions=Garay}+$/u, + matchSymbols, + "\\p{Script_Extensions=Garay}" +); +testPropertyEscapes( + /^\p{Script_Extensions=Gara}+$/u, + matchSymbols, + "\\p{Script_Extensions=Gara}" +); +testPropertyEscapes( + /^\p{scx=Garay}+$/u, + matchSymbols, + "\\p{scx=Garay}" +); +testPropertyEscapes( + /^\p{scx=Gara}+$/u, + matchSymbols, + "\\p{scx=Gara}" +); + +const nonMatchSymbols = buildString({ + loneCodePoints: [], + ranges: [ + [0x00DC00, 0x00DFFF], + [0x000000, 0x00060B], + [0x00060D, 0x00061A], + [0x00061C, 0x00061E], + [0x000620, 0x00DBFF], + [0x00E000, 0x010D3F], + [0x010D66, 0x010D68], + [0x010D86, 0x010D8D], + [0x010D90, 0x10FFFF] + ] +}); +testPropertyEscapes( + /^\P{Script_Extensions=Garay}+$/u, + nonMatchSymbols, + "\\P{Script_Extensions=Garay}" +); +testPropertyEscapes( + /^\P{Script_Extensions=Gara}+$/u, + nonMatchSymbols, + "\\P{Script_Extensions=Gara}" +); +testPropertyEscapes( + /^\P{scx=Garay}+$/u, + nonMatchSymbols, + "\\P{scx=Garay}" +); +testPropertyEscapes( + /^\P{scx=Gara}+$/u, + nonMatchSymbols, + "\\P{scx=Gara}" +); diff --git a/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Georgian.js b/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Georgian.js index 4e44cb9058c..1937796e80b 100644 --- a/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Georgian.js +++ b/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Georgian.js @@ -7,7 +7,7 @@ description: > Unicode property escapes for `Script_Extensions=Georgian` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.1.0 + Unicode v16.0.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] @@ -15,10 +15,14 @@ includes: [regExpUtils.js] const matchSymbols = buildString({ loneCodePoints: [ + 0x0000B7, + 0x000589, 0x0010C7, 0x0010CD, + 0x00205A, 0x002D27, - 0x002D2D + 0x002D2D, + 0x002E31 ], ranges: [ [0x0010A0, 0x0010C5], @@ -56,14 +60,18 @@ const nonMatchSymbols = buildString({ ], ranges: [ [0x00DC00, 0x00DFFF], - [0x000000, 0x00109F], + [0x000000, 0x0000B6], + [0x0000B8, 0x000588], + [0x00058A, 0x00109F], [0x0010C8, 0x0010CC], [0x0010CE, 0x0010CF], [0x001100, 0x001C8F], [0x001CBB, 0x001CBC], - [0x001CC0, 0x002CFF], + [0x001CC0, 0x002059], + [0x00205B, 0x002CFF], [0x002D28, 0x002D2C], - [0x002D2E, 0x00DBFF], + [0x002D2E, 0x002E30], + [0x002E32, 0x00DBFF], [0x00E000, 0x10FFFF] ] }); diff --git a/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Glagolitic.js b/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Glagolitic.js index 8a62111945e..2f4e3aeabcc 100644 --- a/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Glagolitic.js +++ b/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Glagolitic.js @@ -7,7 +7,7 @@ description: > Unicode property escapes for `Script_Extensions=Glagolitic` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.1.0 + Unicode v16.0.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] @@ -15,8 +15,14 @@ includes: [regExpUtils.js] const matchSymbols = buildString({ loneCodePoints: [ + 0x0000B7, + 0x000303, + 0x000305, 0x000484, 0x000487, + 0x000589, + 0x0010FB, + 0x00205A, 0x002E43, 0x00A66F ], @@ -52,15 +58,21 @@ testPropertyEscapes( const nonMatchSymbols = buildString({ loneCodePoints: [ + 0x000304, 0x01E007, 0x01E022, 0x01E025 ], ranges: [ [0x00DC00, 0x00DFFF], - [0x000000, 0x000483], + [0x000000, 0x0000B6], + [0x0000B8, 0x000302], + [0x000306, 0x000483], [0x000485, 0x000486], - [0x000488, 0x002BFF], + [0x000488, 0x000588], + [0x00058A, 0x0010FA], + [0x0010FC, 0x002059], + [0x00205B, 0x002BFF], [0x002C60, 0x002E42], [0x002E44, 0x00A66E], [0x00A670, 0x00DBFF], diff --git a/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Gothic.js b/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Gothic.js index a941378bc91..1afa6b635b7 100644 --- a/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Gothic.js +++ b/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Gothic.js @@ -7,15 +7,20 @@ description: > Unicode property escapes for `Script_Extensions=Gothic` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.1.0 + Unicode v16.0.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] ---*/ const matchSymbols = buildString({ - loneCodePoints: [], + loneCodePoints: [ + 0x0000B7, + 0x000308, + 0x000331 + ], ranges: [ + [0x000304, 0x000305], [0x010330, 0x01034A] ] }); @@ -44,7 +49,11 @@ const nonMatchSymbols = buildString({ loneCodePoints: [], ranges: [ [0x00DC00, 0x00DFFF], - [0x000000, 0x00DBFF], + [0x000000, 0x0000B6], + [0x0000B8, 0x000303], + [0x000306, 0x000307], + [0x000309, 0x000330], + [0x000332, 0x00DBFF], [0x00E000, 0x01032F], [0x01034B, 0x10FFFF] ] diff --git a/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Grantha.js b/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Grantha.js index 492ecfbe5e2..1f7d815c864 100644 --- a/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Grantha.js +++ b/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Grantha.js @@ -7,7 +7,7 @@ description: > Unicode property escapes for `Script_Extensions=Grantha` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.1.0 + Unicode v16.0.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Greek.js b/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Greek.js index 3a3364fc238..3840b7e47de 100644 --- a/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Greek.js +++ b/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Greek.js @@ -7,7 +7,7 @@ description: > Unicode property escapes for `Script_Extensions=Greek` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.1.0 + Unicode v16.0.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] @@ -15,6 +15,11 @@ includes: [regExpUtils.js] const matchSymbols = buildString({ loneCodePoints: [ + 0x0000B7, + 0x000304, + 0x000306, + 0x000308, + 0x000313, 0x000342, 0x000345, 0x00037F, @@ -24,13 +29,14 @@ const matchSymbols = buildString({ 0x001F59, 0x001F5B, 0x001F5D, + 0x00205D, 0x002126, 0x00AB65, 0x0101A0 ], ranges: [ - [0x000370, 0x000373], - [0x000375, 0x000377], + [0x000300, 0x000301], + [0x000370, 0x000377], [0x00037A, 0x00037D], [0x000388, 0x00038A], [0x00038E, 0x0003A1], @@ -80,7 +86,8 @@ testPropertyEscapes( const nonMatchSymbols = buildString({ loneCodePoints: [ - 0x000374, + 0x000305, + 0x000307, 0x00037E, 0x000385, 0x000387, @@ -98,7 +105,11 @@ const nonMatchSymbols = buildString({ ], ranges: [ [0x00DC00, 0x00DFFF], - [0x000000, 0x000341], + [0x000000, 0x0000B6], + [0x0000B8, 0x0002FF], + [0x000302, 0x000303], + [0x000309, 0x000312], + [0x000314, 0x000341], [0x000343, 0x000344], [0x000346, 0x00036F], [0x000378, 0x000379], @@ -116,7 +127,8 @@ const nonMatchSymbols = buildString({ [0x001F7E, 0x001F7F], [0x001FD4, 0x001FD5], [0x001FF0, 0x001FF1], - [0x001FFF, 0x002125], + [0x001FFF, 0x00205C], + [0x00205E, 0x002125], [0x002127, 0x00AB64], [0x00AB66, 0x00DBFF], [0x00E000, 0x01013F], diff --git a/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Gujarati.js b/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Gujarati.js index fe04abc352e..5d2316f2d02 100644 --- a/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Gujarati.js +++ b/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Gujarati.js @@ -7,7 +7,7 @@ description: > Unicode property escapes for `Script_Extensions=Gujarati` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.1.0 + Unicode v16.0.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Gunjala_Gondi.js b/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Gunjala_Gondi.js index 02a5ced1f41..a15ab6e1898 100644 --- a/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Gunjala_Gondi.js +++ b/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Gunjala_Gondi.js @@ -7,14 +7,16 @@ description: > Unicode property escapes for `Script_Extensions=Gunjala_Gondi` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.1.0 + Unicode v16.0.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] ---*/ const matchSymbols = buildString({ - loneCodePoints: [], + loneCodePoints: [ + 0x0000B7 + ], ranges: [ [0x000964, 0x000965], [0x011D60, 0x011D65], @@ -55,7 +57,8 @@ const nonMatchSymbols = buildString({ ], ranges: [ [0x00DC00, 0x00DFFF], - [0x000000, 0x000963], + [0x000000, 0x0000B6], + [0x0000B8, 0x000963], [0x000966, 0x00DBFF], [0x00E000, 0x011D5F], [0x011D99, 0x011D9F], diff --git a/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Gurmukhi.js b/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Gurmukhi.js index 52708a1273c..70378e86819 100644 --- a/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Gurmukhi.js +++ b/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Gurmukhi.js @@ -7,7 +7,7 @@ description: > Unicode property escapes for `Script_Extensions=Gurmukhi` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.1.0 + Unicode v16.0.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Gurung_Khema.js b/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Gurung_Khema.js new file mode 100644 index 00000000000..3e50356f868 --- /dev/null +++ b/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Gurung_Khema.js @@ -0,0 +1,74 @@ +// Copyright 2024 Mathias Bynens. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +author: Mathias Bynens +description: > + Unicode property escapes for `Script_Extensions=Gurung_Khema` +info: | + Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests + Unicode v16.0.0 +esid: sec-static-semantics-unicodematchproperty-p +features: [regexp-unicode-property-escapes] +includes: [regExpUtils.js] +---*/ + +const matchSymbols = buildString({ + loneCodePoints: [ + 0x000965 + ], + ranges: [ + [0x016100, 0x016139] + ] +}); +testPropertyEscapes( + /^\p{Script_Extensions=Gurung_Khema}+$/u, + matchSymbols, + "\\p{Script_Extensions=Gurung_Khema}" +); +testPropertyEscapes( + /^\p{Script_Extensions=Gukh}+$/u, + matchSymbols, + "\\p{Script_Extensions=Gukh}" +); +testPropertyEscapes( + /^\p{scx=Gurung_Khema}+$/u, + matchSymbols, + "\\p{scx=Gurung_Khema}" +); +testPropertyEscapes( + /^\p{scx=Gukh}+$/u, + matchSymbols, + "\\p{scx=Gukh}" +); + +const nonMatchSymbols = buildString({ + loneCodePoints: [], + ranges: [ + [0x00DC00, 0x00DFFF], + [0x000000, 0x000964], + [0x000966, 0x00DBFF], + [0x00E000, 0x0160FF], + [0x01613A, 0x10FFFF] + ] +}); +testPropertyEscapes( + /^\P{Script_Extensions=Gurung_Khema}+$/u, + nonMatchSymbols, + "\\P{Script_Extensions=Gurung_Khema}" +); +testPropertyEscapes( + /^\P{Script_Extensions=Gukh}+$/u, + nonMatchSymbols, + "\\P{Script_Extensions=Gukh}" +); +testPropertyEscapes( + /^\P{scx=Gurung_Khema}+$/u, + nonMatchSymbols, + "\\P{scx=Gurung_Khema}" +); +testPropertyEscapes( + /^\P{scx=Gukh}+$/u, + nonMatchSymbols, + "\\P{scx=Gukh}" +); diff --git a/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Han.js b/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Han.js index a448bfd6b3d..185d660dd15 100644 --- a/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Han.js +++ b/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Han.js @@ -7,7 +7,7 @@ description: > Unicode property escapes for `Script_Extensions=Han` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.1.0 + Unicode v16.0.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] @@ -15,21 +15,24 @@ includes: [regExpUtils.js] const matchSymbols = buildString({ loneCodePoints: [ + 0x0000B7, 0x003030, 0x0030FB, + 0x0031EF, 0x0032FF ], ranges: [ [0x002E80, 0x002E99], [0x002E9B, 0x002EF3], [0x002F00, 0x002FD5], + [0x002FF0, 0x002FFF], [0x003001, 0x003003], [0x003005, 0x003011], [0x003013, 0x00301F], [0x003021, 0x00302D], [0x003037, 0x00303F], [0x003190, 0x00319F], - [0x0031C0, 0x0031E3], + [0x0031C0, 0x0031E5], [0x003220, 0x003247], [0x003280, 0x0032B0], [0x0032C0, 0x0032CB], @@ -82,6 +85,7 @@ testPropertyEscapes( const nonMatchSymbols = buildString({ loneCodePoints: [ 0x002E9A, + 0x003000, 0x003004, 0x003012, 0x003020, @@ -89,15 +93,17 @@ const nonMatchSymbols = buildString({ ], ranges: [ [0x00DC00, 0x00DFFF], - [0x000000, 0x002E7F], + [0x000000, 0x0000B6], + [0x0000B8, 0x002E7F], [0x002EF4, 0x002EFF], - [0x002FD6, 0x003000], + [0x002FD6, 0x002FEF], [0x00302E, 0x00302F], [0x003031, 0x003036], [0x003040, 0x0030FA], [0x0030FC, 0x00318F], [0x0031A0, 0x0031BF], - [0x0031E4, 0x00321F], + [0x0031E6, 0x0031EE], + [0x0031F0, 0x00321F], [0x003248, 0x00327F], [0x0032B1, 0x0032BF], [0x0032CC, 0x0032FE], diff --git a/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Hangul.js b/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Hangul.js index 763c696f19d..f49e8cd82a7 100644 --- a/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Hangul.js +++ b/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Hangul.js @@ -7,7 +7,7 @@ description: > Unicode property escapes for `Script_Extensions=Hangul` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.1.0 + Unicode v16.0.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Hanifi_Rohingya.js b/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Hanifi_Rohingya.js index 58bc1fc4ec7..d8b4284e4c0 100644 --- a/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Hanifi_Rohingya.js +++ b/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Hanifi_Rohingya.js @@ -7,7 +7,7 @@ description: > Unicode property escapes for `Script_Extensions=Hanifi_Rohingya` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.1.0 + Unicode v16.0.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Hanunoo.js b/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Hanunoo.js index ac7ab20f021..ee2713ca4ab 100644 --- a/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Hanunoo.js +++ b/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Hanunoo.js @@ -7,7 +7,7 @@ description: > Unicode property escapes for `Script_Extensions=Hanunoo` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.1.0 + Unicode v16.0.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Hatran.js b/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Hatran.js index aad64c2f9b6..f48c402be11 100644 --- a/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Hatran.js +++ b/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Hatran.js @@ -7,7 +7,7 @@ description: > Unicode property escapes for `Script_Extensions=Hatran` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.1.0 + Unicode v16.0.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Hebrew.js b/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Hebrew.js index b30bfb051fa..d92f524563c 100644 --- a/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Hebrew.js +++ b/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Hebrew.js @@ -7,7 +7,7 @@ description: > Unicode property escapes for `Script_Extensions=Hebrew` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.1.0 + Unicode v16.0.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] @@ -18,6 +18,7 @@ const matchSymbols = buildString({ 0x00FB3E ], ranges: [ + [0x000307, 0x000308], [0x000591, 0x0005C7], [0x0005D0, 0x0005EA], [0x0005EF, 0x0005F4], @@ -59,7 +60,8 @@ const nonMatchSymbols = buildString({ ], ranges: [ [0x00DC00, 0x00DFFF], - [0x000000, 0x000590], + [0x000000, 0x000306], + [0x000309, 0x000590], [0x0005C8, 0x0005CF], [0x0005EB, 0x0005EE], [0x0005F5, 0x00DBFF], diff --git a/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Hiragana.js b/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Hiragana.js index 6781b50fd9e..a6a8deda6a9 100644 --- a/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Hiragana.js +++ b/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Hiragana.js @@ -7,7 +7,7 @@ description: > Unicode property escapes for `Script_Extensions=Hiragana` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.1.0 + Unicode v16.0.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Imperial_Aramaic.js b/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Imperial_Aramaic.js index 0058e75c46a..6d4e283da44 100644 --- a/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Imperial_Aramaic.js +++ b/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Imperial_Aramaic.js @@ -7,7 +7,7 @@ description: > Unicode property escapes for `Script_Extensions=Imperial_Aramaic` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.1.0 + Unicode v16.0.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Inherited.js b/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Inherited.js index 40a1abc2e95..cb5ab2df37e 100644 --- a/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Inherited.js +++ b/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Inherited.js @@ -7,7 +7,7 @@ description: > Unicode property escapes for `Script_Extensions=Inherited` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.1.0 + Unicode v16.0.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] @@ -15,13 +15,21 @@ includes: [regExpUtils.js] const matchSymbols = buildString({ loneCodePoints: [ + 0x00030F, + 0x000312, + 0x00032F, 0x001DF9, 0x0101FD ], ranges: [ - [0x000300, 0x000341], + [0x000314, 0x00031F], + [0x000321, 0x000322], + [0x000326, 0x00032C], + [0x000332, 0x000341], [0x000343, 0x000344], - [0x000346, 0x000362], + [0x000346, 0x000357], + [0x000359, 0x00035D], + [0x00035F, 0x000362], [0x000953, 0x000954], [0x001AB0, 0x001ACE], [0x001DC2, 0x001DF7], @@ -72,14 +80,22 @@ testPropertyEscapes( const nonMatchSymbols = buildString({ loneCodePoints: [ + 0x000313, + 0x000320, 0x000342, 0x000345, + 0x000358, + 0x00035E, 0x001DF8, 0x001DFA ], ranges: [ [0x00DC00, 0x00DFFF], - [0x000000, 0x0002FF], + [0x000000, 0x00030E], + [0x000310, 0x000311], + [0x000323, 0x000325], + [0x00032D, 0x00032E], + [0x000330, 0x000331], [0x000363, 0x000952], [0x000955, 0x001AAF], [0x001ACF, 0x001DC1], diff --git a/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Inscriptional_Pahlavi.js b/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Inscriptional_Pahlavi.js index 21acf030460..ba6ed490e44 100644 --- a/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Inscriptional_Pahlavi.js +++ b/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Inscriptional_Pahlavi.js @@ -7,7 +7,7 @@ description: > Unicode property escapes for `Script_Extensions=Inscriptional_Pahlavi` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.1.0 + Unicode v16.0.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Inscriptional_Parthian.js b/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Inscriptional_Parthian.js index 030781f4f7e..9f52140c55c 100644 --- a/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Inscriptional_Parthian.js +++ b/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Inscriptional_Parthian.js @@ -7,7 +7,7 @@ description: > Unicode property escapes for `Script_Extensions=Inscriptional_Parthian` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.1.0 + Unicode v16.0.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Javanese.js b/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Javanese.js index 1964e805466..8d33ff4441f 100644 --- a/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Javanese.js +++ b/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Javanese.js @@ -7,7 +7,7 @@ description: > Unicode property escapes for `Script_Extensions=Javanese` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.1.0 + Unicode v16.0.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Kaithi.js b/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Kaithi.js index 3f5485dbf3c..effc406d647 100644 --- a/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Kaithi.js +++ b/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Kaithi.js @@ -7,7 +7,7 @@ description: > Unicode property escapes for `Script_Extensions=Kaithi` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.1.0 + Unicode v16.0.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] @@ -15,6 +15,7 @@ includes: [regExpUtils.js] const matchSymbols = buildString({ loneCodePoints: [ + 0x002E31, 0x0110CD ], ranges: [ @@ -49,7 +50,8 @@ const nonMatchSymbols = buildString({ ranges: [ [0x00DC00, 0x00DFFF], [0x000000, 0x000965], - [0x000970, 0x00A82F], + [0x000970, 0x002E30], + [0x002E32, 0x00A82F], [0x00A83A, 0x00DBFF], [0x00E000, 0x01107F], [0x0110C3, 0x0110CC], diff --git a/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Kannada.js b/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Kannada.js index 3be1f716509..af6d7bab217 100644 --- a/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Kannada.js +++ b/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Kannada.js @@ -7,7 +7,7 @@ description: > Unicode property escapes for `Script_Extensions=Kannada` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.1.0 + Unicode v16.0.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] @@ -16,7 +16,6 @@ includes: [regExpUtils.js] const matchSymbols = buildString({ loneCodePoints: [ 0x001CD0, - 0x001CD2, 0x001CDA, 0x001CF2, 0x001CF4 @@ -37,6 +36,7 @@ const matchSymbols = buildString({ [0x000CE0, 0x000CE3], [0x000CE6, 0x000CEF], [0x000CF1, 0x000CF3], + [0x001CD2, 0x001CD3], [0x00A830, 0x00A835] ] }); @@ -84,7 +84,7 @@ const nonMatchSymbols = buildString({ [0x000CD7, 0x000CDC], [0x000CE4, 0x000CE5], [0x000CF4, 0x001CCF], - [0x001CD3, 0x001CD9], + [0x001CD4, 0x001CD9], [0x001CDB, 0x001CF1], [0x001CF5, 0x00A82F], [0x00A836, 0x00DBFF], diff --git a/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Katakana.js b/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Katakana.js index 8e94a013b4e..a05c0f24490 100644 --- a/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Katakana.js +++ b/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Katakana.js @@ -7,7 +7,7 @@ description: > Unicode property escapes for `Script_Extensions=Katakana` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.1.0 + Unicode v16.0.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] @@ -15,6 +15,8 @@ includes: [regExpUtils.js] const matchSymbols = buildString({ loneCodePoints: [ + 0x000305, + 0x000323, 0x003037, 0x01B000, 0x01B155 @@ -71,7 +73,9 @@ const nonMatchSymbols = buildString({ ], ranges: [ [0x00DC00, 0x00DFFF], - [0x000000, 0x003000], + [0x000000, 0x000304], + [0x000306, 0x000322], + [0x000324, 0x003000], [0x003004, 0x003007], [0x003020, 0x00302F], [0x003038, 0x00303B], diff --git a/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Kawi.js b/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Kawi.js index ec7be36e510..2643decf2ee 100644 --- a/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Kawi.js +++ b/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Kawi.js @@ -7,7 +7,7 @@ description: > Unicode property escapes for `Script_Extensions=Kawi` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.1.0 + Unicode v16.0.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] @@ -18,7 +18,7 @@ const matchSymbols = buildString({ ranges: [ [0x011F00, 0x011F10], [0x011F12, 0x011F3A], - [0x011F3E, 0x011F59] + [0x011F3E, 0x011F5A] ] }); testPropertyEscapes( @@ -51,7 +51,7 @@ const nonMatchSymbols = buildString({ [0x000000, 0x00DBFF], [0x00E000, 0x011EFF], [0x011F3B, 0x011F3D], - [0x011F5A, 0x10FFFF] + [0x011F5B, 0x10FFFF] ] }); testPropertyEscapes( diff --git a/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Kayah_Li.js b/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Kayah_Li.js index 34041e4ba1b..9d69ef6dbaa 100644 --- a/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Kayah_Li.js +++ b/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Kayah_Li.js @@ -7,7 +7,7 @@ description: > Unicode property escapes for `Script_Extensions=Kayah_Li` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.1.0 + Unicode v16.0.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Kharoshthi.js b/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Kharoshthi.js index f2af77e4c6b..37880fdb0cc 100644 --- a/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Kharoshthi.js +++ b/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Kharoshthi.js @@ -7,7 +7,7 @@ description: > Unicode property escapes for `Script_Extensions=Kharoshthi` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.1.0 + Unicode v16.0.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Khitan_Small_Script.js b/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Khitan_Small_Script.js index 8dfa735ed5a..0b00efdc61f 100644 --- a/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Khitan_Small_Script.js +++ b/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Khitan_Small_Script.js @@ -7,7 +7,7 @@ description: > Unicode property escapes for `Script_Extensions=Khitan_Small_Script` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.1.0 + Unicode v16.0.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] @@ -15,7 +15,8 @@ includes: [regExpUtils.js] const matchSymbols = buildString({ loneCodePoints: [ - 0x016FE4 + 0x016FE4, + 0x018CFF ], ranges: [ [0x018B00, 0x018CD5] @@ -49,7 +50,8 @@ const nonMatchSymbols = buildString({ [0x000000, 0x00DBFF], [0x00E000, 0x016FE3], [0x016FE5, 0x018AFF], - [0x018CD6, 0x10FFFF] + [0x018CD6, 0x018CFE], + [0x018D00, 0x10FFFF] ] }); testPropertyEscapes( diff --git a/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Khmer.js b/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Khmer.js index b89a5c427be..4e55f85c2f7 100644 --- a/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Khmer.js +++ b/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Khmer.js @@ -7,7 +7,7 @@ description: > Unicode property escapes for `Script_Extensions=Khmer` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.1.0 + Unicode v16.0.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Khojki.js b/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Khojki.js index 1c2f08f2f16..3cebc23d2a1 100644 --- a/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Khojki.js +++ b/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Khojki.js @@ -7,7 +7,7 @@ description: > Unicode property escapes for `Script_Extensions=Khojki` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.1.0 + Unicode v16.0.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Khudawadi.js b/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Khudawadi.js index 3facbcdcd3c..f31bf2fc6d5 100644 --- a/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Khudawadi.js +++ b/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Khudawadi.js @@ -7,7 +7,7 @@ description: > Unicode property escapes for `Script_Extensions=Khudawadi` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.1.0 + Unicode v16.0.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Kirat_Rai.js b/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Kirat_Rai.js new file mode 100644 index 00000000000..52863377b9e --- /dev/null +++ b/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Kirat_Rai.js @@ -0,0 +1,71 @@ +// Copyright 2024 Mathias Bynens. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +author: Mathias Bynens +description: > + Unicode property escapes for `Script_Extensions=Kirat_Rai` +info: | + Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests + Unicode v16.0.0 +esid: sec-static-semantics-unicodematchproperty-p +features: [regexp-unicode-property-escapes] +includes: [regExpUtils.js] +---*/ + +const matchSymbols = buildString({ + loneCodePoints: [], + ranges: [ + [0x016D40, 0x016D79] + ] +}); +testPropertyEscapes( + /^\p{Script_Extensions=Kirat_Rai}+$/u, + matchSymbols, + "\\p{Script_Extensions=Kirat_Rai}" +); +testPropertyEscapes( + /^\p{Script_Extensions=Krai}+$/u, + matchSymbols, + "\\p{Script_Extensions=Krai}" +); +testPropertyEscapes( + /^\p{scx=Kirat_Rai}+$/u, + matchSymbols, + "\\p{scx=Kirat_Rai}" +); +testPropertyEscapes( + /^\p{scx=Krai}+$/u, + matchSymbols, + "\\p{scx=Krai}" +); + +const nonMatchSymbols = buildString({ + loneCodePoints: [], + ranges: [ + [0x00DC00, 0x00DFFF], + [0x000000, 0x00DBFF], + [0x00E000, 0x016D3F], + [0x016D7A, 0x10FFFF] + ] +}); +testPropertyEscapes( + /^\P{Script_Extensions=Kirat_Rai}+$/u, + nonMatchSymbols, + "\\P{Script_Extensions=Kirat_Rai}" +); +testPropertyEscapes( + /^\P{Script_Extensions=Krai}+$/u, + nonMatchSymbols, + "\\P{Script_Extensions=Krai}" +); +testPropertyEscapes( + /^\P{scx=Kirat_Rai}+$/u, + nonMatchSymbols, + "\\P{scx=Kirat_Rai}" +); +testPropertyEscapes( + /^\P{scx=Krai}+$/u, + nonMatchSymbols, + "\\P{scx=Krai}" +); diff --git a/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Lao.js b/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Lao.js index 0e7f9388ba1..85b1bf00a0b 100644 --- a/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Lao.js +++ b/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Lao.js @@ -7,7 +7,7 @@ description: > Unicode property escapes for `Script_Extensions=Lao` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.1.0 + Unicode v16.0.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Latin.js b/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Latin.js index 4c7fa1ec26f..3bbf9d25025 100644 --- a/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Latin.js +++ b/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Latin.js @@ -7,7 +7,7 @@ description: > Unicode property escapes for `Script_Extensions=Latin` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.1.0 + Unicode v16.0.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] @@ -16,14 +16,26 @@ includes: [regExpUtils.js] const matchSymbols = buildString({ loneCodePoints: [ 0x0000AA, + 0x0000B7, 0x0000BA, + 0x0002BC, + 0x0002C7, + 0x0002CD, + 0x0002D7, + 0x0002D9, + 0x000313, + 0x000320, + 0x000358, + 0x00035E, 0x0010FB, + 0x001DF8, 0x00202F, 0x002071, 0x00207F, 0x0020F0, 0x002132, 0x00214E, + 0x002E17, 0x00A7D3, 0x00A92E ], @@ -33,7 +45,13 @@ const matchSymbols = buildString({ [0x0000C0, 0x0000D6], [0x0000D8, 0x0000F6], [0x0000F8, 0x0002B8], + [0x0002C9, 0x0002CB], [0x0002E0, 0x0002E4], + [0x000300, 0x00030E], + [0x000310, 0x000311], + [0x000323, 0x000325], + [0x00032D, 0x00032E], + [0x000330, 0x000331], [0x000363, 0x00036F], [0x000485, 0x000486], [0x000951, 0x000952], @@ -49,9 +67,9 @@ const matchSymbols = buildString({ [0x002C60, 0x002C7F], [0x00A700, 0x00A707], [0x00A722, 0x00A787], - [0x00A78B, 0x00A7CA], + [0x00A78B, 0x00A7CD], [0x00A7D0, 0x00A7D1], - [0x00A7D5, 0x00A7D9], + [0x00A7D5, 0x00A7DC], [0x00A7F2, 0x00A7FF], [0x00AB30, 0x00AB5A], [0x00AB5C, 0x00AB64], @@ -91,6 +109,12 @@ const nonMatchSymbols = buildString({ loneCodePoints: [ 0x0000D7, 0x0000F7, + 0x0002C8, + 0x0002CC, + 0x0002D8, + 0x00030F, + 0x000312, + 0x00032F, 0x001D78, 0x00A7D2, 0x00A7D4, @@ -104,10 +128,20 @@ const nonMatchSymbols = buildString({ [0x000000, 0x000040], [0x00005B, 0x000060], [0x00007B, 0x0000A9], - [0x0000AB, 0x0000B9], + [0x0000AB, 0x0000B6], + [0x0000B8, 0x0000B9], [0x0000BB, 0x0000BF], - [0x0002B9, 0x0002DF], - [0x0002E5, 0x000362], + [0x0002B9, 0x0002BB], + [0x0002BD, 0x0002C6], + [0x0002CE, 0x0002D6], + [0x0002DA, 0x0002DF], + [0x0002E5, 0x0002FF], + [0x000314, 0x00031F], + [0x000321, 0x000322], + [0x000326, 0x00032C], + [0x000332, 0x000357], + [0x000359, 0x00035D], + [0x00035F, 0x000362], [0x000370, 0x000484], [0x000487, 0x000950], [0x000953, 0x0010FA], @@ -115,7 +149,8 @@ const nonMatchSymbols = buildString({ [0x001D26, 0x001D2B], [0x001D5D, 0x001D61], [0x001D66, 0x001D6A], - [0x001DBF, 0x001DFF], + [0x001DBF, 0x001DF7], + [0x001DF9, 0x001DFF], [0x001F00, 0x00202E], [0x002030, 0x002070], [0x002072, 0x00207E], @@ -126,11 +161,12 @@ const nonMatchSymbols = buildString({ [0x002133, 0x00214D], [0x00214F, 0x00215F], [0x002189, 0x002C5F], - [0x002C80, 0x00A6FF], + [0x002C80, 0x002E16], + [0x002E18, 0x00A6FF], [0x00A708, 0x00A721], [0x00A788, 0x00A78A], - [0x00A7CB, 0x00A7CF], - [0x00A7DA, 0x00A7F1], + [0x00A7CE, 0x00A7CF], + [0x00A7DD, 0x00A7F1], [0x00A800, 0x00A92D], [0x00A92F, 0x00AB2F], [0x00AB6A, 0x00DBFF], diff --git a/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Lepcha.js b/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Lepcha.js index 4477107f1ca..fd24f645ebe 100644 --- a/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Lepcha.js +++ b/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Lepcha.js @@ -7,7 +7,7 @@ description: > Unicode property escapes for `Script_Extensions=Lepcha` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.1.0 + Unicode v16.0.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Limbu.js b/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Limbu.js index a1f799157c4..2b254a3cd08 100644 --- a/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Limbu.js +++ b/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Limbu.js @@ -7,7 +7,7 @@ description: > Unicode property escapes for `Script_Extensions=Limbu` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.1.0 + Unicode v16.0.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Linear_A.js b/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Linear_A.js index 4715ff42320..f8ebaf53ab8 100644 --- a/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Linear_A.js +++ b/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Linear_A.js @@ -7,7 +7,7 @@ description: > Unicode property escapes for `Script_Extensions=Linear_A` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.1.0 + Unicode v16.0.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Linear_B.js b/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Linear_B.js index ec284397f6d..a965feb5e05 100644 --- a/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Linear_B.js +++ b/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Linear_B.js @@ -7,7 +7,7 @@ description: > Unicode property escapes for `Script_Extensions=Linear_B` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.1.0 + Unicode v16.0.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Lisu.js b/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Lisu.js index f685009e8de..075db504c70 100644 --- a/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Lisu.js +++ b/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Lisu.js @@ -7,7 +7,7 @@ description: > Unicode property escapes for `Script_Extensions=Lisu` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.1.0 + Unicode v16.0.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] @@ -15,9 +15,12 @@ includes: [regExpUtils.js] const matchSymbols = buildString({ loneCodePoints: [ + 0x0002BC, + 0x0002CD, 0x011FB0 ], ranges: [ + [0x00300A, 0x00300B], [0x00A4D0, 0x00A4FF] ] }); @@ -46,7 +49,10 @@ const nonMatchSymbols = buildString({ loneCodePoints: [], ranges: [ [0x00DC00, 0x00DFFF], - [0x000000, 0x00A4CF], + [0x000000, 0x0002BB], + [0x0002BD, 0x0002CC], + [0x0002CE, 0x003009], + [0x00300C, 0x00A4CF], [0x00A500, 0x00DBFF], [0x00E000, 0x011FAF], [0x011FB1, 0x10FFFF] diff --git a/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Lycian.js b/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Lycian.js index 931cb1d07d3..c4716c07459 100644 --- a/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Lycian.js +++ b/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Lycian.js @@ -7,14 +7,16 @@ description: > Unicode property escapes for `Script_Extensions=Lycian` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.1.0 + Unicode v16.0.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] ---*/ const matchSymbols = buildString({ - loneCodePoints: [], + loneCodePoints: [ + 0x00205A + ], ranges: [ [0x010280, 0x01029C] ] @@ -44,7 +46,8 @@ const nonMatchSymbols = buildString({ loneCodePoints: [], ranges: [ [0x00DC00, 0x00DFFF], - [0x000000, 0x00DBFF], + [0x000000, 0x002059], + [0x00205B, 0x00DBFF], [0x00E000, 0x01027F], [0x01029D, 0x10FFFF] ] diff --git a/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Lydian.js b/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Lydian.js index 1b4f8357b43..6d67805cb81 100644 --- a/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Lydian.js +++ b/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Lydian.js @@ -7,7 +7,7 @@ description: > Unicode property escapes for `Script_Extensions=Lydian` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.1.0 + Unicode v16.0.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] @@ -15,6 +15,8 @@ includes: [regExpUtils.js] const matchSymbols = buildString({ loneCodePoints: [ + 0x0000B7, + 0x002E31, 0x01093F ], ranges: [ @@ -46,7 +48,9 @@ const nonMatchSymbols = buildString({ loneCodePoints: [], ranges: [ [0x00DC00, 0x00DFFF], - [0x000000, 0x00DBFF], + [0x000000, 0x0000B6], + [0x0000B8, 0x002E30], + [0x002E32, 0x00DBFF], [0x00E000, 0x01091F], [0x01093A, 0x01093E], [0x010940, 0x10FFFF] diff --git a/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Mahajani.js b/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Mahajani.js index 010ffd6025a..6cffb5895e2 100644 --- a/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Mahajani.js +++ b/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Mahajani.js @@ -7,14 +7,16 @@ description: > Unicode property escapes for `Script_Extensions=Mahajani` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.1.0 + Unicode v16.0.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] ---*/ const matchSymbols = buildString({ - loneCodePoints: [], + loneCodePoints: [ + 0x0000B7 + ], ranges: [ [0x000964, 0x00096F], [0x00A830, 0x00A839], @@ -46,7 +48,8 @@ const nonMatchSymbols = buildString({ loneCodePoints: [], ranges: [ [0x00DC00, 0x00DFFF], - [0x000000, 0x000963], + [0x000000, 0x0000B6], + [0x0000B8, 0x000963], [0x000970, 0x00A82F], [0x00A83A, 0x00DBFF], [0x00E000, 0x01114F], diff --git a/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Makasar.js b/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Makasar.js index da376742921..1da1be92528 100644 --- a/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Makasar.js +++ b/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Makasar.js @@ -7,7 +7,7 @@ description: > Unicode property escapes for `Script_Extensions=Makasar` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.1.0 + Unicode v16.0.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Malayalam.js b/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Malayalam.js index 914127f51df..e2a5446dbf3 100644 --- a/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Malayalam.js +++ b/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Malayalam.js @@ -7,7 +7,7 @@ description: > Unicode property escapes for `Script_Extensions=Malayalam` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.1.0 + Unicode v16.0.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Mandaic.js b/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Mandaic.js index 9f255fe931f..603dd02f779 100644 --- a/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Mandaic.js +++ b/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Mandaic.js @@ -7,7 +7,7 @@ description: > Unicode property escapes for `Script_Extensions=Mandaic` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.1.0 + Unicode v16.0.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Manichaean.js b/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Manichaean.js index 1bfaa16802d..9ccf5904f45 100644 --- a/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Manichaean.js +++ b/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Manichaean.js @@ -7,7 +7,7 @@ description: > Unicode property escapes for `Script_Extensions=Manichaean` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.1.0 + Unicode v16.0.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Marchen.js b/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Marchen.js index de57a8245cb..30155407857 100644 --- a/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Marchen.js +++ b/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Marchen.js @@ -7,7 +7,7 @@ description: > Unicode property escapes for `Script_Extensions=Marchen` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.1.0 + Unicode v16.0.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Masaram_Gondi.js b/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Masaram_Gondi.js index 55d47ccd3d6..9daf2660916 100644 --- a/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Masaram_Gondi.js +++ b/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Masaram_Gondi.js @@ -7,7 +7,7 @@ description: > Unicode property escapes for `Script_Extensions=Masaram_Gondi` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.1.0 + Unicode v16.0.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Medefaidrin.js b/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Medefaidrin.js index 4648450cc1d..a2a8445c51e 100644 --- a/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Medefaidrin.js +++ b/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Medefaidrin.js @@ -7,7 +7,7 @@ description: > Unicode property escapes for `Script_Extensions=Medefaidrin` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.1.0 + Unicode v16.0.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Meetei_Mayek.js b/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Meetei_Mayek.js index d0cb4c26159..2e7dd64a3e1 100644 --- a/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Meetei_Mayek.js +++ b/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Meetei_Mayek.js @@ -7,7 +7,7 @@ description: > Unicode property escapes for `Script_Extensions=Meetei_Mayek` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.1.0 + Unicode v16.0.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Mende_Kikakui.js b/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Mende_Kikakui.js index 9cbc61a75b3..80cf71aa562 100644 --- a/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Mende_Kikakui.js +++ b/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Mende_Kikakui.js @@ -7,7 +7,7 @@ description: > Unicode property escapes for `Script_Extensions=Mende_Kikakui` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.1.0 + Unicode v16.0.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Meroitic_Cursive.js b/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Meroitic_Cursive.js index ddf44bb9639..9cb4c244a27 100644 --- a/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Meroitic_Cursive.js +++ b/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Meroitic_Cursive.js @@ -7,7 +7,7 @@ description: > Unicode property escapes for `Script_Extensions=Meroitic_Cursive` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.1.0 + Unicode v16.0.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Meroitic_Hieroglyphs.js b/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Meroitic_Hieroglyphs.js index 5a88d02fd0b..94c8af94577 100644 --- a/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Meroitic_Hieroglyphs.js +++ b/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Meroitic_Hieroglyphs.js @@ -7,14 +7,16 @@ description: > Unicode property escapes for `Script_Extensions=Meroitic_Hieroglyphs` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.1.0 + Unicode v16.0.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] ---*/ const matchSymbols = buildString({ - loneCodePoints: [], + loneCodePoints: [ + 0x00205D + ], ranges: [ [0x010980, 0x01099F] ] @@ -44,7 +46,8 @@ const nonMatchSymbols = buildString({ loneCodePoints: [], ranges: [ [0x00DC00, 0x00DFFF], - [0x000000, 0x00DBFF], + [0x000000, 0x00205C], + [0x00205E, 0x00DBFF], [0x00E000, 0x01097F], [0x0109A0, 0x10FFFF] ] diff --git a/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Miao.js b/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Miao.js index adb77922376..6453228c179 100644 --- a/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Miao.js +++ b/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Miao.js @@ -7,7 +7,7 @@ description: > Unicode property escapes for `Script_Extensions=Miao` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.1.0 + Unicode v16.0.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Modi.js b/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Modi.js index 552291fa713..b39b0e33170 100644 --- a/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Modi.js +++ b/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Modi.js @@ -7,7 +7,7 @@ description: > Unicode property escapes for `Script_Extensions=Modi` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.1.0 + Unicode v16.0.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Mongolian.js b/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Mongolian.js index aecd4905853..1fb6f638f9a 100644 --- a/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Mongolian.js +++ b/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Mongolian.js @@ -7,7 +7,7 @@ description: > Unicode property escapes for `Script_Extensions=Mongolian` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.1.0 + Unicode v16.0.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] @@ -21,6 +21,8 @@ const matchSymbols = buildString({ [0x001800, 0x001819], [0x001820, 0x001878], [0x001880, 0x0018AA], + [0x003001, 0x003002], + [0x003008, 0x00300B], [0x011660, 0x01166C] ] }); @@ -53,7 +55,9 @@ const nonMatchSymbols = buildString({ [0x00181A, 0x00181F], [0x001879, 0x00187F], [0x0018AB, 0x00202E], - [0x002030, 0x00DBFF], + [0x002030, 0x003000], + [0x003003, 0x003007], + [0x00300C, 0x00DBFF], [0x00E000, 0x01165F], [0x01166D, 0x10FFFF] ] diff --git a/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Mro.js b/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Mro.js index 871600e3906..337f4e5d41b 100644 --- a/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Mro.js +++ b/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Mro.js @@ -7,7 +7,7 @@ description: > Unicode property escapes for `Script_Extensions=Mro` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.1.0 + Unicode v16.0.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Multani.js b/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Multani.js index 0e85d672cbe..102dbfd44d7 100644 --- a/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Multani.js +++ b/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Multani.js @@ -7,7 +7,7 @@ description: > Unicode property escapes for `Script_Extensions=Multani` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.1.0 + Unicode v16.0.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Myanmar.js b/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Myanmar.js index ea17f824ea0..ddd12236bd4 100644 --- a/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Myanmar.js +++ b/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Myanmar.js @@ -7,7 +7,7 @@ description: > Unicode property escapes for `Script_Extensions=Myanmar` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.1.0 + Unicode v16.0.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] @@ -20,7 +20,8 @@ const matchSymbols = buildString({ ranges: [ [0x001000, 0x00109F], [0x00A9E0, 0x00A9FE], - [0x00AA60, 0x00AA7F] + [0x00AA60, 0x00AA7F], + [0x0116D0, 0x0116E3] ] }); testPropertyEscapes( @@ -53,7 +54,8 @@ const nonMatchSymbols = buildString({ [0x00A92F, 0x00A9DF], [0x00A9FF, 0x00AA5F], [0x00AA80, 0x00DBFF], - [0x00E000, 0x10FFFF] + [0x00E000, 0x0116CF], + [0x0116E4, 0x10FFFF] ] }); testPropertyEscapes( diff --git a/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Nabataean.js b/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Nabataean.js index 85720797a06..ebd227dbed5 100644 --- a/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Nabataean.js +++ b/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Nabataean.js @@ -7,7 +7,7 @@ description: > Unicode property escapes for `Script_Extensions=Nabataean` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.1.0 + Unicode v16.0.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Nag_Mundari.js b/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Nag_Mundari.js index 95a3aef38be..cdb07c3076d 100644 --- a/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Nag_Mundari.js +++ b/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Nag_Mundari.js @@ -7,7 +7,7 @@ description: > Unicode property escapes for `Script_Extensions=Nag_Mundari` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.1.0 + Unicode v16.0.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Nandinagari.js b/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Nandinagari.js index b9e0f5f3d63..7c5557a3cf4 100644 --- a/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Nandinagari.js +++ b/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Nandinagari.js @@ -7,7 +7,7 @@ description: > Unicode property escapes for `Script_Extensions=Nandinagari` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.1.0 + Unicode v16.0.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_New_Tai_Lue.js b/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_New_Tai_Lue.js index d1e30f93e7f..e34acceb4a1 100644 --- a/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_New_Tai_Lue.js +++ b/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_New_Tai_Lue.js @@ -7,7 +7,7 @@ description: > Unicode property escapes for `Script_Extensions=New_Tai_Lue` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.1.0 + Unicode v16.0.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Newa.js b/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Newa.js index 53d7bdad973..40cd431b151 100644 --- a/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Newa.js +++ b/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Newa.js @@ -7,7 +7,7 @@ description: > Unicode property escapes for `Script_Extensions=Newa` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.1.0 + Unicode v16.0.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Nko.js b/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Nko.js index 4e372529a8b..7b3f34a77fb 100644 --- a/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Nko.js +++ b/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Nko.js @@ -7,7 +7,7 @@ description: > Unicode property escapes for `Script_Extensions=Nko` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.1.0 + Unicode v16.0.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Nushu.js b/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Nushu.js index 706965c4447..aef09a74e8a 100644 --- a/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Nushu.js +++ b/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Nushu.js @@ -7,7 +7,7 @@ description: > Unicode property escapes for `Script_Extensions=Nushu` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.1.0 + Unicode v16.0.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Nyiakeng_Puachue_Hmong.js b/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Nyiakeng_Puachue_Hmong.js index af9823812d5..d1ce4af6749 100644 --- a/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Nyiakeng_Puachue_Hmong.js +++ b/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Nyiakeng_Puachue_Hmong.js @@ -7,7 +7,7 @@ description: > Unicode property escapes for `Script_Extensions=Nyiakeng_Puachue_Hmong` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.1.0 + Unicode v16.0.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Ogham.js b/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Ogham.js index d684b3d3bdc..973cbaa4f71 100644 --- a/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Ogham.js +++ b/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Ogham.js @@ -7,7 +7,7 @@ description: > Unicode property escapes for `Script_Extensions=Ogham` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.1.0 + Unicode v16.0.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Ol_Chiki.js b/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Ol_Chiki.js index 25194d68b9a..0ebe21e8735 100644 --- a/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Ol_Chiki.js +++ b/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Ol_Chiki.js @@ -7,7 +7,7 @@ description: > Unicode property escapes for `Script_Extensions=Ol_Chiki` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.1.0 + Unicode v16.0.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Ol_Onal.js b/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Ol_Onal.js new file mode 100644 index 00000000000..fc62418ed2c --- /dev/null +++ b/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Ol_Onal.js @@ -0,0 +1,76 @@ +// Copyright 2024 Mathias Bynens. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +author: Mathias Bynens +description: > + Unicode property escapes for `Script_Extensions=Ol_Onal` +info: | + Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests + Unicode v16.0.0 +esid: sec-static-semantics-unicodematchproperty-p +features: [regexp-unicode-property-escapes] +includes: [regExpUtils.js] +---*/ + +const matchSymbols = buildString({ + loneCodePoints: [ + 0x01E5FF + ], + ranges: [ + [0x000964, 0x000965], + [0x01E5D0, 0x01E5FA] + ] +}); +testPropertyEscapes( + /^\p{Script_Extensions=Ol_Onal}+$/u, + matchSymbols, + "\\p{Script_Extensions=Ol_Onal}" +); +testPropertyEscapes( + /^\p{Script_Extensions=Onao}+$/u, + matchSymbols, + "\\p{Script_Extensions=Onao}" +); +testPropertyEscapes( + /^\p{scx=Ol_Onal}+$/u, + matchSymbols, + "\\p{scx=Ol_Onal}" +); +testPropertyEscapes( + /^\p{scx=Onao}+$/u, + matchSymbols, + "\\p{scx=Onao}" +); + +const nonMatchSymbols = buildString({ + loneCodePoints: [], + ranges: [ + [0x00DC00, 0x00DFFF], + [0x000000, 0x000963], + [0x000966, 0x00DBFF], + [0x00E000, 0x01E5CF], + [0x01E5FB, 0x01E5FE], + [0x01E600, 0x10FFFF] + ] +}); +testPropertyEscapes( + /^\P{Script_Extensions=Ol_Onal}+$/u, + nonMatchSymbols, + "\\P{Script_Extensions=Ol_Onal}" +); +testPropertyEscapes( + /^\P{Script_Extensions=Onao}+$/u, + nonMatchSymbols, + "\\P{Script_Extensions=Onao}" +); +testPropertyEscapes( + /^\P{scx=Ol_Onal}+$/u, + nonMatchSymbols, + "\\P{scx=Ol_Onal}" +); +testPropertyEscapes( + /^\P{scx=Onao}+$/u, + nonMatchSymbols, + "\\P{scx=Onao}" +); diff --git a/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Old_Hungarian.js b/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Old_Hungarian.js index 6e3322072de..b5b08ad21cf 100644 --- a/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Old_Hungarian.js +++ b/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Old_Hungarian.js @@ -7,14 +7,19 @@ description: > Unicode property escapes for `Script_Extensions=Old_Hungarian` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.1.0 + Unicode v16.0.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] ---*/ const matchSymbols = buildString({ - loneCodePoints: [], + loneCodePoints: [ + 0x00205A, + 0x00205D, + 0x002E31, + 0x002E41 + ], ranges: [ [0x010C80, 0x010CB2], [0x010CC0, 0x010CF2], @@ -46,7 +51,11 @@ const nonMatchSymbols = buildString({ loneCodePoints: [], ranges: [ [0x00DC00, 0x00DFFF], - [0x000000, 0x00DBFF], + [0x000000, 0x002059], + [0x00205B, 0x00205C], + [0x00205E, 0x002E30], + [0x002E32, 0x002E40], + [0x002E42, 0x00DBFF], [0x00E000, 0x010C7F], [0x010CB3, 0x010CBF], [0x010CF3, 0x010CF9], diff --git a/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Old_Italic.js b/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Old_Italic.js index cb9244e1875..d98429980dd 100644 --- a/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Old_Italic.js +++ b/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Old_Italic.js @@ -7,7 +7,7 @@ description: > Unicode property escapes for `Script_Extensions=Old_Italic` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.1.0 + Unicode v16.0.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Old_North_Arabian.js b/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Old_North_Arabian.js index 8340a9d6366..76c9939c44e 100644 --- a/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Old_North_Arabian.js +++ b/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Old_North_Arabian.js @@ -7,7 +7,7 @@ description: > Unicode property escapes for `Script_Extensions=Old_North_Arabian` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.1.0 + Unicode v16.0.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Old_Permic.js b/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Old_Permic.js index 475557783ce..a77f1dfeea2 100644 --- a/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Old_Permic.js +++ b/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Old_Permic.js @@ -7,7 +7,7 @@ description: > Unicode property escapes for `Script_Extensions=Old_Permic` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.1.0 + Unicode v16.0.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] @@ -15,9 +15,13 @@ includes: [regExpUtils.js] const matchSymbols = buildString({ loneCodePoints: [ + 0x0000B7, + 0x000300, + 0x000313, 0x000483 ], ranges: [ + [0x000306, 0x000308], [0x010350, 0x01037A] ] }); @@ -46,7 +50,11 @@ const nonMatchSymbols = buildString({ loneCodePoints: [], ranges: [ [0x00DC00, 0x00DFFF], - [0x000000, 0x000482], + [0x000000, 0x0000B6], + [0x0000B8, 0x0002FF], + [0x000301, 0x000305], + [0x000309, 0x000312], + [0x000314, 0x000482], [0x000484, 0x00DBFF], [0x00E000, 0x01034F], [0x01037B, 0x10FFFF] diff --git a/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Old_Persian.js b/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Old_Persian.js index 31e694c5a99..aed6491e1a0 100644 --- a/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Old_Persian.js +++ b/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Old_Persian.js @@ -7,7 +7,7 @@ description: > Unicode property escapes for `Script_Extensions=Old_Persian` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.1.0 + Unicode v16.0.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Old_Sogdian.js b/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Old_Sogdian.js index aa8e60964f0..49ec796dab2 100644 --- a/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Old_Sogdian.js +++ b/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Old_Sogdian.js @@ -7,7 +7,7 @@ description: > Unicode property escapes for `Script_Extensions=Old_Sogdian` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.1.0 + Unicode v16.0.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Old_South_Arabian.js b/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Old_South_Arabian.js index e6ba0d5b0af..a69768454bf 100644 --- a/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Old_South_Arabian.js +++ b/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Old_South_Arabian.js @@ -7,7 +7,7 @@ description: > Unicode property escapes for `Script_Extensions=Old_South_Arabian` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.1.0 + Unicode v16.0.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Old_Turkic.js b/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Old_Turkic.js index 3dae818660c..526598b26d2 100644 --- a/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Old_Turkic.js +++ b/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Old_Turkic.js @@ -7,14 +7,17 @@ description: > Unicode property escapes for `Script_Extensions=Old_Turkic` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.1.0 + Unicode v16.0.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] ---*/ const matchSymbols = buildString({ - loneCodePoints: [], + loneCodePoints: [ + 0x00205A, + 0x002E30 + ], ranges: [ [0x010C00, 0x010C48] ] @@ -44,7 +47,9 @@ const nonMatchSymbols = buildString({ loneCodePoints: [], ranges: [ [0x00DC00, 0x00DFFF], - [0x000000, 0x00DBFF], + [0x000000, 0x002059], + [0x00205B, 0x002E2F], + [0x002E31, 0x00DBFF], [0x00E000, 0x010BFF], [0x010C49, 0x10FFFF] ] diff --git a/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Old_Uyghur.js b/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Old_Uyghur.js index f8bad939de4..f900ed745f0 100644 --- a/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Old_Uyghur.js +++ b/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Old_Uyghur.js @@ -7,7 +7,7 @@ description: > Unicode property escapes for `Script_Extensions=Old_Uyghur` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.1.0 + Unicode v16.0.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Oriya.js b/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Oriya.js index ec0c1800d3e..29baf38d4d6 100644 --- a/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Oriya.js +++ b/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Oriya.js @@ -7,7 +7,7 @@ description: > Unicode property escapes for `Script_Extensions=Oriya` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.1.0 + Unicode v16.0.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Osage.js b/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Osage.js index 43235cf116b..1188d3ee5aa 100644 --- a/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Osage.js +++ b/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Osage.js @@ -7,14 +7,19 @@ description: > Unicode property escapes for `Script_Extensions=Osage` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.1.0 + Unicode v16.0.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] ---*/ const matchSymbols = buildString({ - loneCodePoints: [], + loneCodePoints: [ + 0x000301, + 0x000304, + 0x00030B, + 0x000358 + ], ranges: [ [0x0104B0, 0x0104D3], [0x0104D8, 0x0104FB] @@ -45,7 +50,11 @@ const nonMatchSymbols = buildString({ loneCodePoints: [], ranges: [ [0x00DC00, 0x00DFFF], - [0x000000, 0x00DBFF], + [0x000000, 0x000300], + [0x000302, 0x000303], + [0x000305, 0x00030A], + [0x00030C, 0x000357], + [0x000359, 0x00DBFF], [0x00E000, 0x0104AF], [0x0104D4, 0x0104D7], [0x0104FC, 0x10FFFF] diff --git a/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Osmanya.js b/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Osmanya.js index f12380a4947..a9f5115c891 100644 --- a/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Osmanya.js +++ b/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Osmanya.js @@ -7,7 +7,7 @@ description: > Unicode property escapes for `Script_Extensions=Osmanya` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.1.0 + Unicode v16.0.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Pahawh_Hmong.js b/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Pahawh_Hmong.js index e9b8a4b421f..548ddb4718c 100644 --- a/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Pahawh_Hmong.js +++ b/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Pahawh_Hmong.js @@ -7,7 +7,7 @@ description: > Unicode property escapes for `Script_Extensions=Pahawh_Hmong` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.1.0 + Unicode v16.0.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Palmyrene.js b/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Palmyrene.js index 9d330c48e68..f8bc5fa9051 100644 --- a/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Palmyrene.js +++ b/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Palmyrene.js @@ -7,7 +7,7 @@ description: > Unicode property escapes for `Script_Extensions=Palmyrene` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.1.0 + Unicode v16.0.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Pau_Cin_Hau.js b/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Pau_Cin_Hau.js index 3ed707bafc3..1e5ba6f298e 100644 --- a/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Pau_Cin_Hau.js +++ b/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Pau_Cin_Hau.js @@ -7,7 +7,7 @@ description: > Unicode property escapes for `Script_Extensions=Pau_Cin_Hau` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.1.0 + Unicode v16.0.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Phags_Pa.js b/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Phags_Pa.js index 8d20d3b95e1..215856b2ea8 100644 --- a/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Phags_Pa.js +++ b/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Phags_Pa.js @@ -7,7 +7,7 @@ description: > Unicode property escapes for `Script_Extensions=Phags_Pa` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.1.0 + Unicode v16.0.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] @@ -15,7 +15,9 @@ includes: [regExpUtils.js] const matchSymbols = buildString({ loneCodePoints: [ - 0x001805 + 0x001805, + 0x00202F, + 0x003002 ], ranges: [ [0x001802, 0x001803], @@ -50,7 +52,9 @@ const nonMatchSymbols = buildString({ ranges: [ [0x00DC00, 0x00DFFF], [0x000000, 0x001801], - [0x001806, 0x00A83F], + [0x001806, 0x00202E], + [0x002030, 0x003001], + [0x003003, 0x00A83F], [0x00A878, 0x00DBFF], [0x00E000, 0x10FFFF] ] diff --git a/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Phoenician.js b/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Phoenician.js index 57b5c2f29ee..9a4ecb338d9 100644 --- a/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Phoenician.js +++ b/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Phoenician.js @@ -7,7 +7,7 @@ description: > Unicode property escapes for `Script_Extensions=Phoenician` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.1.0 + Unicode v16.0.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Psalter_Pahlavi.js b/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Psalter_Pahlavi.js index 3fa3f34aad6..bbfa8566453 100644 --- a/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Psalter_Pahlavi.js +++ b/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Psalter_Pahlavi.js @@ -7,7 +7,7 @@ description: > Unicode property escapes for `Script_Extensions=Psalter_Pahlavi` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.1.0 + Unicode v16.0.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Rejang.js b/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Rejang.js index d8de30d85eb..19f58b50d5a 100644 --- a/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Rejang.js +++ b/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Rejang.js @@ -7,7 +7,7 @@ description: > Unicode property escapes for `Script_Extensions=Rejang` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.1.0 + Unicode v16.0.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Runic.js b/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Runic.js index 885bc08b319..304dd6236ca 100644 --- a/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Runic.js +++ b/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Runic.js @@ -7,7 +7,7 @@ description: > Unicode property escapes for `Script_Extensions=Runic` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.1.0 + Unicode v16.0.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] @@ -16,8 +16,7 @@ includes: [regExpUtils.js] const matchSymbols = buildString({ loneCodePoints: [], ranges: [ - [0x0016A0, 0x0016EA], - [0x0016EE, 0x0016F8] + [0x0016A0, 0x0016F8] ] }); testPropertyEscapes( @@ -46,7 +45,6 @@ const nonMatchSymbols = buildString({ ranges: [ [0x00DC00, 0x00DFFF], [0x000000, 0x00169F], - [0x0016EB, 0x0016ED], [0x0016F9, 0x00DBFF], [0x00E000, 0x10FFFF] ] diff --git a/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Samaritan.js b/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Samaritan.js index d0041ab2ece..827f19ce28e 100644 --- a/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Samaritan.js +++ b/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Samaritan.js @@ -7,14 +7,16 @@ description: > Unicode property escapes for `Script_Extensions=Samaritan` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.1.0 + Unicode v16.0.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] ---*/ const matchSymbols = buildString({ - loneCodePoints: [], + loneCodePoints: [ + 0x002E31 + ], ranges: [ [0x000800, 0x00082D], [0x000830, 0x00083E] @@ -47,7 +49,8 @@ const nonMatchSymbols = buildString({ [0x00DC00, 0x00DFFF], [0x000000, 0x0007FF], [0x00082E, 0x00082F], - [0x00083F, 0x00DBFF], + [0x00083F, 0x002E30], + [0x002E32, 0x00DBFF], [0x00E000, 0x10FFFF] ] }); diff --git a/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Saurashtra.js b/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Saurashtra.js index ea74bd0c9c5..68c51a65196 100644 --- a/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Saurashtra.js +++ b/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Saurashtra.js @@ -7,7 +7,7 @@ description: > Unicode property escapes for `Script_Extensions=Saurashtra` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.1.0 + Unicode v16.0.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Sharada.js b/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Sharada.js index d9e7d9ddb81..c2debee47a6 100644 --- a/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Sharada.js +++ b/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Sharada.js @@ -7,7 +7,7 @@ description: > Unicode property escapes for `Script_Extensions=Sharada` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.1.0 + Unicode v16.0.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Shavian.js b/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Shavian.js index 1a0aaa944be..be8af4e63d4 100644 --- a/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Shavian.js +++ b/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Shavian.js @@ -7,14 +7,16 @@ description: > Unicode property escapes for `Script_Extensions=Shavian` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.1.0 + Unicode v16.0.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] ---*/ const matchSymbols = buildString({ - loneCodePoints: [], + loneCodePoints: [ + 0x0000B7 + ], ranges: [ [0x010450, 0x01047F] ] @@ -44,7 +46,8 @@ const nonMatchSymbols = buildString({ loneCodePoints: [], ranges: [ [0x00DC00, 0x00DFFF], - [0x000000, 0x00DBFF], + [0x000000, 0x0000B6], + [0x0000B8, 0x00DBFF], [0x00E000, 0x01044F], [0x010480, 0x10FFFF] ] diff --git a/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Siddham.js b/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Siddham.js index 76254970df5..aba5c70afd6 100644 --- a/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Siddham.js +++ b/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Siddham.js @@ -7,7 +7,7 @@ description: > Unicode property escapes for `Script_Extensions=Siddham` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.1.0 + Unicode v16.0.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_SignWriting.js b/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_SignWriting.js index 688ca83e63e..18f98b65974 100644 --- a/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_SignWriting.js +++ b/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_SignWriting.js @@ -7,7 +7,7 @@ description: > Unicode property escapes for `Script_Extensions=SignWriting` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.1.0 + Unicode v16.0.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Sinhala.js b/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Sinhala.js index b2cd8de3385..5789a750367 100644 --- a/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Sinhala.js +++ b/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Sinhala.js @@ -7,7 +7,7 @@ description: > Unicode property escapes for `Script_Extensions=Sinhala` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.1.0 + Unicode v16.0.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Sogdian.js b/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Sogdian.js index 46004c81268..0f961821276 100644 --- a/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Sogdian.js +++ b/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Sogdian.js @@ -7,7 +7,7 @@ description: > Unicode property escapes for `Script_Extensions=Sogdian` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.1.0 + Unicode v16.0.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Sora_Sompeng.js b/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Sora_Sompeng.js index dfba5a958ec..ff7505bc7c0 100644 --- a/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Sora_Sompeng.js +++ b/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Sora_Sompeng.js @@ -7,7 +7,7 @@ description: > Unicode property escapes for `Script_Extensions=Sora_Sompeng` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.1.0 + Unicode v16.0.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Soyombo.js b/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Soyombo.js index cd42a548e2d..8794e733ab4 100644 --- a/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Soyombo.js +++ b/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Soyombo.js @@ -7,7 +7,7 @@ description: > Unicode property escapes for `Script_Extensions=Soyombo` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.1.0 + Unicode v16.0.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Sundanese.js b/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Sundanese.js index 125ad9ef015..0559e80d48a 100644 --- a/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Sundanese.js +++ b/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Sundanese.js @@ -7,7 +7,7 @@ description: > Unicode property escapes for `Script_Extensions=Sundanese` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.1.0 + Unicode v16.0.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Sunuwar.js b/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Sunuwar.js new file mode 100644 index 00000000000..88cf8a8b933 --- /dev/null +++ b/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Sunuwar.js @@ -0,0 +1,87 @@ +// Copyright 2024 Mathias Bynens. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +author: Mathias Bynens +description: > + Unicode property escapes for `Script_Extensions=Sunuwar` +info: | + Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests + Unicode v16.0.0 +esid: sec-static-semantics-unicodematchproperty-p +features: [regexp-unicode-property-escapes] +includes: [regExpUtils.js] +---*/ + +const matchSymbols = buildString({ + loneCodePoints: [ + 0x000303, + 0x00030D, + 0x000310, + 0x00032D, + 0x000331 + ], + ranges: [ + [0x000300, 0x000301], + [0x011BC0, 0x011BE1], + [0x011BF0, 0x011BF9] + ] +}); +testPropertyEscapes( + /^\p{Script_Extensions=Sunuwar}+$/u, + matchSymbols, + "\\p{Script_Extensions=Sunuwar}" +); +testPropertyEscapes( + /^\p{Script_Extensions=Sunu}+$/u, + matchSymbols, + "\\p{Script_Extensions=Sunu}" +); +testPropertyEscapes( + /^\p{scx=Sunuwar}+$/u, + matchSymbols, + "\\p{scx=Sunuwar}" +); +testPropertyEscapes( + /^\p{scx=Sunu}+$/u, + matchSymbols, + "\\p{scx=Sunu}" +); + +const nonMatchSymbols = buildString({ + loneCodePoints: [ + 0x000302 + ], + ranges: [ + [0x00DC00, 0x00DFFF], + [0x000000, 0x0002FF], + [0x000304, 0x00030C], + [0x00030E, 0x00030F], + [0x000311, 0x00032C], + [0x00032E, 0x000330], + [0x000332, 0x00DBFF], + [0x00E000, 0x011BBF], + [0x011BE2, 0x011BEF], + [0x011BFA, 0x10FFFF] + ] +}); +testPropertyEscapes( + /^\P{Script_Extensions=Sunuwar}+$/u, + nonMatchSymbols, + "\\P{Script_Extensions=Sunuwar}" +); +testPropertyEscapes( + /^\P{Script_Extensions=Sunu}+$/u, + nonMatchSymbols, + "\\P{Script_Extensions=Sunu}" +); +testPropertyEscapes( + /^\P{scx=Sunuwar}+$/u, + nonMatchSymbols, + "\\P{scx=Sunuwar}" +); +testPropertyEscapes( + /^\P{scx=Sunu}+$/u, + nonMatchSymbols, + "\\P{scx=Sunu}" +); diff --git a/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Syloti_Nagri.js b/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Syloti_Nagri.js index cd9a0a57151..a2d1fa259b4 100644 --- a/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Syloti_Nagri.js +++ b/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Syloti_Nagri.js @@ -7,7 +7,7 @@ description: > Unicode property escapes for `Script_Extensions=Syloti_Nagri` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.1.0 + Unicode v16.0.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Syriac.js b/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Syriac.js index c9cfce1e3bb..abc354fff6a 100644 --- a/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Syriac.js +++ b/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Syriac.js @@ -7,7 +7,7 @@ description: > Unicode property escapes for `Script_Extensions=Syriac` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.1.0 + Unicode v16.0.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] @@ -15,6 +15,9 @@ includes: [regExpUtils.js] const matchSymbols = buildString({ loneCodePoints: [ + 0x00030A, + 0x000320, + 0x000330, 0x00060C, 0x00061F, 0x000640, @@ -23,6 +26,10 @@ const matchSymbols = buildString({ 0x001DFA ], ranges: [ + [0x000303, 0x000304], + [0x000307, 0x000308], + [0x000323, 0x000325], + [0x00032D, 0x00032E], [0x00061B, 0x00061C], [0x00064B, 0x000655], [0x000700, 0x00070D], @@ -54,12 +61,19 @@ testPropertyEscapes( const nonMatchSymbols = buildString({ loneCodePoints: [ + 0x000309, + 0x00032F, 0x00070E, 0x001DF9 ], ranges: [ [0x00DC00, 0x00DFFF], - [0x000000, 0x00060B], + [0x000000, 0x000302], + [0x000305, 0x000306], + [0x00030B, 0x00031F], + [0x000321, 0x000322], + [0x000326, 0x00032C], + [0x000331, 0x00060B], [0x00060D, 0x00061A], [0x00061D, 0x00061E], [0x000620, 0x00063F], diff --git a/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Tagalog.js b/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Tagalog.js index f97a272926a..82e950ce418 100644 --- a/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Tagalog.js +++ b/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Tagalog.js @@ -7,7 +7,7 @@ description: > Unicode property escapes for `Script_Extensions=Tagalog` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.1.0 + Unicode v16.0.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Tagbanwa.js b/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Tagbanwa.js index 87c00da179b..30f97533e2d 100644 --- a/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Tagbanwa.js +++ b/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Tagbanwa.js @@ -7,7 +7,7 @@ description: > Unicode property escapes for `Script_Extensions=Tagbanwa` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.1.0 + Unicode v16.0.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Tai_Le.js b/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Tai_Le.js index d5a91f06b2f..32de50dd61c 100644 --- a/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Tai_Le.js +++ b/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Tai_Le.js @@ -7,15 +7,19 @@ description: > Unicode property escapes for `Script_Extensions=Tai_Le` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.1.0 + Unicode v16.0.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] ---*/ const matchSymbols = buildString({ - loneCodePoints: [], + loneCodePoints: [ + 0x00030C + ], ranges: [ + [0x000300, 0x000301], + [0x000307, 0x000308], [0x001040, 0x001049], [0x001950, 0x00196D], [0x001970, 0x001974] @@ -46,7 +50,10 @@ const nonMatchSymbols = buildString({ loneCodePoints: [], ranges: [ [0x00DC00, 0x00DFFF], - [0x000000, 0x00103F], + [0x000000, 0x0002FF], + [0x000302, 0x000306], + [0x000309, 0x00030B], + [0x00030D, 0x00103F], [0x00104A, 0x00194F], [0x00196E, 0x00196F], [0x001975, 0x00DBFF], diff --git a/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Tai_Tham.js b/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Tai_Tham.js index 0282e277ba3..2036c657d17 100644 --- a/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Tai_Tham.js +++ b/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Tai_Tham.js @@ -7,7 +7,7 @@ description: > Unicode property escapes for `Script_Extensions=Tai_Tham` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.1.0 + Unicode v16.0.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Tai_Viet.js b/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Tai_Viet.js index 6be7841a86c..c67c80402cc 100644 --- a/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Tai_Viet.js +++ b/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Tai_Viet.js @@ -7,7 +7,7 @@ description: > Unicode property escapes for `Script_Extensions=Tai_Viet` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.1.0 + Unicode v16.0.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Takri.js b/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Takri.js index 77c3cb7d2b9..aa70f521f10 100644 --- a/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Takri.js +++ b/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Takri.js @@ -7,7 +7,7 @@ description: > Unicode property escapes for `Script_Extensions=Takri` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.1.0 + Unicode v16.0.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Tamil.js b/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Tamil.js index 8be781c546f..ebd95723441 100644 --- a/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Tamil.js +++ b/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Tamil.js @@ -7,7 +7,7 @@ description: > Unicode property escapes for `Script_Extensions=Tamil` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.1.0 + Unicode v16.0.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Tangsa.js b/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Tangsa.js index 24d10065cec..1d39cc35b6f 100644 --- a/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Tangsa.js +++ b/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Tangsa.js @@ -7,7 +7,7 @@ description: > Unicode property escapes for `Script_Extensions=Tangsa` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.1.0 + Unicode v16.0.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Tangut.js b/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Tangut.js index a6f42f9a5b4..708b9c2e0a1 100644 --- a/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Tangut.js +++ b/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Tangut.js @@ -7,7 +7,7 @@ description: > Unicode property escapes for `Script_Extensions=Tangut` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.1.0 + Unicode v16.0.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] @@ -15,9 +15,11 @@ includes: [regExpUtils.js] const matchSymbols = buildString({ loneCodePoints: [ + 0x0031EF, 0x016FE0 ], ranges: [ + [0x002FF0, 0x002FFF], [0x017000, 0x0187F7], [0x018800, 0x018AFF], [0x018D00, 0x018D08] @@ -48,7 +50,9 @@ const nonMatchSymbols = buildString({ loneCodePoints: [], ranges: [ [0x00DC00, 0x00DFFF], - [0x000000, 0x00DBFF], + [0x000000, 0x002FEF], + [0x003000, 0x0031EE], + [0x0031F0, 0x00DBFF], [0x00E000, 0x016FDF], [0x016FE1, 0x016FFF], [0x0187F8, 0x0187FF], diff --git a/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Telugu.js b/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Telugu.js index 335c878a9c4..b564e55d1b7 100644 --- a/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Telugu.js +++ b/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Telugu.js @@ -7,7 +7,7 @@ description: > Unicode property escapes for `Script_Extensions=Telugu` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.1.0 + Unicode v16.0.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Thaana.js b/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Thaana.js index 5eaec513c30..4b4fab3283f 100644 --- a/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Thaana.js +++ b/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Thaana.js @@ -7,7 +7,7 @@ description: > Unicode property escapes for `Script_Extensions=Thaana` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.1.0 + Unicode v16.0.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Thai.js b/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Thai.js index 6445313502d..b13cb523953 100644 --- a/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Thai.js +++ b/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Thai.js @@ -7,14 +7,19 @@ description: > Unicode property escapes for `Script_Extensions=Thai` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.1.0 + Unicode v16.0.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] ---*/ const matchSymbols = buildString({ - loneCodePoints: [], + loneCodePoints: [ + 0x0002BC, + 0x0002D7, + 0x000303, + 0x000331 + ], ranges: [ [0x000E01, 0x000E3A], [0x000E40, 0x000E5B] @@ -45,7 +50,11 @@ const nonMatchSymbols = buildString({ loneCodePoints: [], ranges: [ [0x00DC00, 0x00DFFF], - [0x000000, 0x000E00], + [0x000000, 0x0002BB], + [0x0002BD, 0x0002D6], + [0x0002D8, 0x000302], + [0x000304, 0x000330], + [0x000332, 0x000E00], [0x000E3B, 0x000E3F], [0x000E5C, 0x00DBFF], [0x00E000, 0x10FFFF] diff --git a/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Tibetan.js b/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Tibetan.js index 7dca18edfd0..a1fe977a499 100644 --- a/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Tibetan.js +++ b/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Tibetan.js @@ -7,7 +7,7 @@ description: > Unicode property escapes for `Script_Extensions=Tibetan` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.1.0 + Unicode v16.0.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] @@ -22,7 +22,8 @@ const matchSymbols = buildString({ [0x000F99, 0x000FBC], [0x000FBE, 0x000FCC], [0x000FCE, 0x000FD4], - [0x000FD9, 0x000FDA] + [0x000FD9, 0x000FDA], + [0x003008, 0x00300B] ] }); testPropertyEscapes( @@ -58,7 +59,8 @@ const nonMatchSymbols = buildString({ [0x000000, 0x000EFF], [0x000F6D, 0x000F70], [0x000FD5, 0x000FD8], - [0x000FDB, 0x00DBFF], + [0x000FDB, 0x003007], + [0x00300C, 0x00DBFF], [0x00E000, 0x10FFFF] ] }); diff --git a/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Tifinagh.js b/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Tifinagh.js index fdb94722230..4ca76556e35 100644 --- a/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Tifinagh.js +++ b/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Tifinagh.js @@ -7,7 +7,7 @@ description: > Unicode property escapes for `Script_Extensions=Tifinagh` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.1.0 + Unicode v16.0.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] @@ -15,6 +15,10 @@ includes: [regExpUtils.js] const matchSymbols = buildString({ loneCodePoints: [ + 0x000302, + 0x000304, + 0x000307, + 0x000309, 0x002D7F ], ranges: [ @@ -44,10 +48,15 @@ testPropertyEscapes( ); const nonMatchSymbols = buildString({ - loneCodePoints: [], + loneCodePoints: [ + 0x000303, + 0x000308 + ], ranges: [ [0x00DC00, 0x00DFFF], - [0x000000, 0x002D2F], + [0x000000, 0x000301], + [0x000305, 0x000306], + [0x00030A, 0x002D2F], [0x002D68, 0x002D6E], [0x002D71, 0x002D7E], [0x002D80, 0x00DBFF], diff --git a/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Tirhuta.js b/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Tirhuta.js index 87dc1be357c..0016c9557a2 100644 --- a/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Tirhuta.js +++ b/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Tirhuta.js @@ -7,7 +7,7 @@ description: > Unicode property escapes for `Script_Extensions=Tirhuta` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.1.0 + Unicode v16.0.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Todhri.js b/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Todhri.js new file mode 100644 index 00000000000..a5970ac5d1f --- /dev/null +++ b/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Todhri.js @@ -0,0 +1,85 @@ +// Copyright 2024 Mathias Bynens. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +author: Mathias Bynens +description: > + Unicode property escapes for `Script_Extensions=Todhri` +info: | + Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests + Unicode v16.0.0 +esid: sec-static-semantics-unicodematchproperty-p +features: [regexp-unicode-property-escapes] +includes: [regExpUtils.js] +---*/ + +const matchSymbols = buildString({ + loneCodePoints: [ + 0x000301, + 0x000304, + 0x000307, + 0x000311, + 0x000313, + 0x00035E + ], + ranges: [ + [0x0105C0, 0x0105F3] + ] +}); +testPropertyEscapes( + /^\p{Script_Extensions=Todhri}+$/u, + matchSymbols, + "\\p{Script_Extensions=Todhri}" +); +testPropertyEscapes( + /^\p{Script_Extensions=Todr}+$/u, + matchSymbols, + "\\p{Script_Extensions=Todr}" +); +testPropertyEscapes( + /^\p{scx=Todhri}+$/u, + matchSymbols, + "\\p{scx=Todhri}" +); +testPropertyEscapes( + /^\p{scx=Todr}+$/u, + matchSymbols, + "\\p{scx=Todr}" +); + +const nonMatchSymbols = buildString({ + loneCodePoints: [ + 0x000312 + ], + ranges: [ + [0x00DC00, 0x00DFFF], + [0x000000, 0x000300], + [0x000302, 0x000303], + [0x000305, 0x000306], + [0x000308, 0x000310], + [0x000314, 0x00035D], + [0x00035F, 0x00DBFF], + [0x00E000, 0x0105BF], + [0x0105F4, 0x10FFFF] + ] +}); +testPropertyEscapes( + /^\P{Script_Extensions=Todhri}+$/u, + nonMatchSymbols, + "\\P{Script_Extensions=Todhri}" +); +testPropertyEscapes( + /^\P{Script_Extensions=Todr}+$/u, + nonMatchSymbols, + "\\P{Script_Extensions=Todr}" +); +testPropertyEscapes( + /^\P{scx=Todhri}+$/u, + nonMatchSymbols, + "\\P{scx=Todhri}" +); +testPropertyEscapes( + /^\P{scx=Todr}+$/u, + nonMatchSymbols, + "\\P{scx=Todr}" +); diff --git a/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Toto.js b/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Toto.js index d6a6a02afa6..30732dd22ee 100644 --- a/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Toto.js +++ b/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Toto.js @@ -7,14 +7,16 @@ description: > Unicode property escapes for `Script_Extensions=Toto` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.1.0 + Unicode v16.0.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] ---*/ const matchSymbols = buildString({ - loneCodePoints: [], + loneCodePoints: [ + 0x0002BC + ], ranges: [ [0x01E290, 0x01E2AE] ] @@ -44,7 +46,8 @@ const nonMatchSymbols = buildString({ loneCodePoints: [], ranges: [ [0x00DC00, 0x00DFFF], - [0x000000, 0x00DBFF], + [0x000000, 0x0002BB], + [0x0002BD, 0x00DBFF], [0x00E000, 0x01E28F], [0x01E2AF, 0x10FFFF] ] diff --git a/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Tulu_Tigalari.js b/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Tulu_Tigalari.js new file mode 100644 index 00000000000..2fbb403ac5c --- /dev/null +++ b/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Tulu_Tigalari.js @@ -0,0 +1,103 @@ +// Copyright 2024 Mathias Bynens. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +author: Mathias Bynens +description: > + Unicode property escapes for `Script_Extensions=Tulu_Tigalari` +info: | + Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests + Unicode v16.0.0 +esid: sec-static-semantics-unicodematchproperty-p +features: [regexp-unicode-property-escapes] +includes: [regExpUtils.js] +---*/ + +const matchSymbols = buildString({ + loneCodePoints: [ + 0x001CF2, + 0x001CF4, + 0x00A8F1, + 0x01138B, + 0x01138E, + 0x0113C2, + 0x0113C5 + ], + ranges: [ + [0x000CE6, 0x000CEF], + [0x00A830, 0x00A835], + [0x011380, 0x011389], + [0x011390, 0x0113B5], + [0x0113B7, 0x0113C0], + [0x0113C7, 0x0113CA], + [0x0113CC, 0x0113D5], + [0x0113D7, 0x0113D8], + [0x0113E1, 0x0113E2] + ] +}); +testPropertyEscapes( + /^\p{Script_Extensions=Tulu_Tigalari}+$/u, + matchSymbols, + "\\p{Script_Extensions=Tulu_Tigalari}" +); +testPropertyEscapes( + /^\p{Script_Extensions=Tutg}+$/u, + matchSymbols, + "\\p{Script_Extensions=Tutg}" +); +testPropertyEscapes( + /^\p{scx=Tulu_Tigalari}+$/u, + matchSymbols, + "\\p{scx=Tulu_Tigalari}" +); +testPropertyEscapes( + /^\p{scx=Tutg}+$/u, + matchSymbols, + "\\p{scx=Tutg}" +); + +const nonMatchSymbols = buildString({ + loneCodePoints: [ + 0x001CF3, + 0x01138A, + 0x01138F, + 0x0113B6, + 0x0113C1, + 0x0113C6, + 0x0113CB, + 0x0113D6 + ], + ranges: [ + [0x00DC00, 0x00DFFF], + [0x000000, 0x000CE5], + [0x000CF0, 0x001CF1], + [0x001CF5, 0x00A82F], + [0x00A836, 0x00A8F0], + [0x00A8F2, 0x00DBFF], + [0x00E000, 0x01137F], + [0x01138C, 0x01138D], + [0x0113C3, 0x0113C4], + [0x0113D9, 0x0113E0], + [0x0113E3, 0x10FFFF] + ] +}); +testPropertyEscapes( + /^\P{Script_Extensions=Tulu_Tigalari}+$/u, + nonMatchSymbols, + "\\P{Script_Extensions=Tulu_Tigalari}" +); +testPropertyEscapes( + /^\P{Script_Extensions=Tutg}+$/u, + nonMatchSymbols, + "\\P{Script_Extensions=Tutg}" +); +testPropertyEscapes( + /^\P{scx=Tulu_Tigalari}+$/u, + nonMatchSymbols, + "\\P{scx=Tulu_Tigalari}" +); +testPropertyEscapes( + /^\P{scx=Tutg}+$/u, + nonMatchSymbols, + "\\P{scx=Tutg}" +); diff --git a/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Ugaritic.js b/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Ugaritic.js index cdabd35b164..6a8eee230bb 100644 --- a/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Ugaritic.js +++ b/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Ugaritic.js @@ -7,7 +7,7 @@ description: > Unicode property escapes for `Script_Extensions=Ugaritic` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.1.0 + Unicode v16.0.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Vai.js b/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Vai.js index 37198063d80..1ffe5c9fc36 100644 --- a/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Vai.js +++ b/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Vai.js @@ -7,7 +7,7 @@ description: > Unicode property escapes for `Script_Extensions=Vai` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.1.0 + Unicode v16.0.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Vithkuqi.js b/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Vithkuqi.js index 8a1708e4cd7..e74471f9b0c 100644 --- a/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Vithkuqi.js +++ b/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Vithkuqi.js @@ -7,7 +7,7 @@ description: > Unicode property escapes for `Script_Extensions=Vithkuqi` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.1.0 + Unicode v16.0.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Wancho.js b/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Wancho.js index 62edc14ece2..4e23f003a26 100644 --- a/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Wancho.js +++ b/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Wancho.js @@ -7,7 +7,7 @@ description: > Unicode property escapes for `Script_Extensions=Wancho` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.1.0 + Unicode v16.0.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Warang_Citi.js b/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Warang_Citi.js index 0ed932ea03a..bb4f4b25712 100644 --- a/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Warang_Citi.js +++ b/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Warang_Citi.js @@ -7,7 +7,7 @@ description: > Unicode property escapes for `Script_Extensions=Warang_Citi` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.1.0 + Unicode v16.0.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Yezidi.js b/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Yezidi.js index 599228d0c9b..9098b4a0105 100644 --- a/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Yezidi.js +++ b/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Yezidi.js @@ -7,7 +7,7 @@ description: > Unicode property escapes for `Script_Extensions=Yezidi` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.1.0 + Unicode v16.0.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Yi.js b/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Yi.js index 742ebcec13c..02a5a7e45a4 100644 --- a/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Yi.js +++ b/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Yi.js @@ -7,7 +7,7 @@ description: > Unicode property escapes for `Script_Extensions=Yi` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.1.0 + Unicode v16.0.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Zanabazar_Square.js b/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Zanabazar_Square.js index 219a759e1ac..dcf3779f6e3 100644 --- a/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Zanabazar_Square.js +++ b/test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Zanabazar_Square.js @@ -7,7 +7,7 @@ description: > Unicode property escapes for `Script_Extensions=Zanabazar_Square` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.1.0 + Unicode v16.0.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/property-escapes/generated/Sentence_Terminal.js b/test/built-ins/RegExp/property-escapes/generated/Sentence_Terminal.js index 4c53793af3a..63ab65860c4 100644 --- a/test/built-ins/RegExp/property-escapes/generated/Sentence_Terminal.js +++ b/test/built-ins/RegExp/property-escapes/generated/Sentence_Terminal.js @@ -7,7 +7,7 @@ description: > Unicode property escapes for `Sentence_Terminal` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.1.0 + Unicode v16.0.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] @@ -27,6 +27,7 @@ const matchSymbols = buildString({ 0x00166E, 0x001803, 0x001809, + 0x002024, 0x002E2E, 0x002E3C, 0x003002, @@ -35,6 +36,7 @@ const matchSymbols = buildString({ 0x00A6F7, 0x00A92F, 0x00ABEB, + 0x00FE12, 0x00FE52, 0x00FF01, 0x00FF0E, @@ -61,13 +63,15 @@ const matchSymbols = buildString({ [0x0017D4, 0x0017D5], [0x001944, 0x001945], [0x001AA8, 0x001AAB], + [0x001B4E, 0x001B4F], [0x001B5A, 0x001B5B], [0x001B5E, 0x001B5F], - [0x001B7D, 0x001B7E], + [0x001B7D, 0x001B7F], [0x001C3B, 0x001C3C], [0x001C7E, 0x001C7F], [0x00203C, 0x00203D], [0x002047, 0x002049], + [0x002CF9, 0x002CFB], [0x002E53, 0x002E54], [0x00A60E, 0x00A60F], [0x00A876, 0x00A877], @@ -75,6 +79,7 @@ const matchSymbols = buildString({ [0x00A9C8, 0x00A9C9], [0x00AA5D, 0x00AA5F], [0x00AAF0, 0x00AAF1], + [0x00FE15, 0x00FE16], [0x00FE56, 0x00FE57], [0x010A56, 0x010A57], [0x010F55, 0x010F59], @@ -86,6 +91,7 @@ const matchSymbols = buildString({ [0x0111DE, 0x0111DF], [0x011238, 0x011239], [0x01123B, 0x01123C], + [0x0113D4, 0x0113D5], [0x01144B, 0x01144C], [0x0115C2, 0x0115C3], [0x0115C9, 0x0115D7], @@ -97,7 +103,8 @@ const matchSymbols = buildString({ [0x011EF7, 0x011EF8], [0x011F43, 0x011F44], [0x016A6E, 0x016A6F], - [0x016B37, 0x016B38] + [0x016B37, 0x016B38], + [0x016D6E, 0x016D6F] ] }); testPropertyEscapes( @@ -140,14 +147,17 @@ const nonMatchSymbols = buildString({ [0x001804, 0x001808], [0x00180A, 0x001943], [0x001946, 0x001AA7], - [0x001AAC, 0x001B59], + [0x001AAC, 0x001B4D], + [0x001B50, 0x001B59], [0x001B5C, 0x001B5D], [0x001B60, 0x001B7C], - [0x001B7F, 0x001C3A], + [0x001B80, 0x001C3A], [0x001C3D, 0x001C7D], - [0x001C80, 0x00203B], + [0x001C80, 0x002023], + [0x002025, 0x00203B], [0x00203E, 0x002046], - [0x00204A, 0x002E2D], + [0x00204A, 0x002CF8], + [0x002CFC, 0x002E2D], [0x002E2F, 0x002E3B], [0x002E3D, 0x002E52], [0x002E55, 0x003001], @@ -163,7 +173,9 @@ const nonMatchSymbols = buildString({ [0x00AA60, 0x00AAEF], [0x00AAF2, 0x00ABEA], [0x00ABEC, 0x00DBFF], - [0x00E000, 0x00FE51], + [0x00E000, 0x00FE11], + [0x00FE13, 0x00FE14], + [0x00FE17, 0x00FE51], [0x00FE53, 0x00FE55], [0x00FE58, 0x00FF00], [0x00FF02, 0x00FF0D], @@ -180,7 +192,8 @@ const nonMatchSymbols = buildString({ [0x0111CE, 0x0111DD], [0x0111E0, 0x011237], [0x01123D, 0x0112A8], - [0x0112AA, 0x01144A], + [0x0112AA, 0x0113D3], + [0x0113D6, 0x01144A], [0x01144D, 0x0115C1], [0x0115C4, 0x0115C8], [0x0115D8, 0x011640], @@ -195,7 +208,8 @@ const nonMatchSymbols = buildString({ [0x016A70, 0x016AF4], [0x016AF6, 0x016B36], [0x016B39, 0x016B43], - [0x016B45, 0x016E97], + [0x016B45, 0x016D6D], + [0x016D70, 0x016E97], [0x016E99, 0x01BC9E], [0x01BCA0, 0x01DA87], [0x01DA89, 0x10FFFF] diff --git a/test/built-ins/RegExp/property-escapes/generated/Soft_Dotted.js b/test/built-ins/RegExp/property-escapes/generated/Soft_Dotted.js index a64cc75f56e..5aa6e8bd449 100644 --- a/test/built-ins/RegExp/property-escapes/generated/Soft_Dotted.js +++ b/test/built-ins/RegExp/property-escapes/generated/Soft_Dotted.js @@ -7,7 +7,7 @@ description: > Unicode property escapes for `Soft_Dotted` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.1.0 + Unicode v16.0.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/property-escapes/generated/Terminal_Punctuation.js b/test/built-ins/RegExp/property-escapes/generated/Terminal_Punctuation.js index 5e77097cb4f..b737182f632 100644 --- a/test/built-ins/RegExp/property-escapes/generated/Terminal_Punctuation.js +++ b/test/built-ins/RegExp/property-escapes/generated/Terminal_Punctuation.js @@ -7,7 +7,7 @@ description: > Unicode property escapes for `Terminal_Punctuation` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.1.0 + Unicode v16.0.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] @@ -31,6 +31,7 @@ const matchSymbols = buildString({ 0x000F08, 0x00166E, 0x0017DA, + 0x002024, 0x002E2E, 0x002E3C, 0x002E41, @@ -38,6 +39,7 @@ const matchSymbols = buildString({ 0x00A92F, 0x00AADF, 0x00ABEB, + 0x00FE12, 0x00FF01, 0x00FF0C, 0x00FF0E, @@ -62,7 +64,8 @@ const matchSymbols = buildString({ [0x00061D, 0x00061F], [0x000700, 0x00070A], [0x0007F8, 0x0007F9], - [0x000830, 0x00083E], + [0x000830, 0x000835], + [0x000837, 0x00083E], [0x000964, 0x000965], [0x000E5A, 0x000E5B], [0x000F0D, 0x000F12], @@ -75,13 +78,15 @@ const matchSymbols = buildString({ [0x001808, 0x001809], [0x001944, 0x001945], [0x001AA8, 0x001AAB], + [0x001B4E, 0x001B4F], [0x001B5A, 0x001B5B], [0x001B5D, 0x001B5F], - [0x001B7D, 0x001B7E], + [0x001B7D, 0x001B7F], [0x001C3B, 0x001C3F], [0x001C7E, 0x001C7F], [0x00203C, 0x00203D], [0x002047, 0x002049], + [0x002CF9, 0x002CFB], [0x002E4E, 0x002E4F], [0x002E53, 0x002E54], [0x003001, 0x003002], @@ -93,6 +98,7 @@ const matchSymbols = buildString({ [0x00A9C7, 0x00A9C9], [0x00AA5D, 0x00AA5F], [0x00AAF0, 0x00AAF1], + [0x00FE15, 0x00FE16], [0x00FE50, 0x00FE52], [0x00FE54, 0x00FE57], [0x00FF1A, 0x00FF1B], @@ -108,6 +114,7 @@ const matchSymbols = buildString({ [0x0111C5, 0x0111C6], [0x0111DE, 0x0111DF], [0x011238, 0x01123C], + [0x0113D4, 0x0113D5], [0x01144B, 0x01144D], [0x01145A, 0x01145B], [0x0115C2, 0x0115C5], @@ -123,6 +130,7 @@ const matchSymbols = buildString({ [0x012470, 0x012474], [0x016A6E, 0x016A6F], [0x016B37, 0x016B39], + [0x016D6E, 0x016D6F], [0x016E97, 0x016E98], [0x01DA87, 0x01DA8A] ] @@ -143,6 +151,7 @@ const nonMatchSymbols = buildString({ 0x00002D, 0x00061C, 0x00070B, + 0x000836, 0x001B5C, 0x002E4D, 0x00FE53, @@ -181,13 +190,16 @@ const nonMatchSymbols = buildString({ [0x001806, 0x001807], [0x00180A, 0x001943], [0x001946, 0x001AA7], - [0x001AAC, 0x001B59], + [0x001AAC, 0x001B4D], + [0x001B50, 0x001B59], [0x001B60, 0x001B7C], - [0x001B7F, 0x001C3A], + [0x001B80, 0x001C3A], [0x001C40, 0x001C7D], - [0x001C80, 0x00203B], + [0x001C80, 0x002023], + [0x002025, 0x00203B], [0x00203E, 0x002046], - [0x00204A, 0x002E2D], + [0x00204A, 0x002CF8], + [0x002CFC, 0x002E2D], [0x002E2F, 0x002E3B], [0x002E3D, 0x002E40], [0x002E42, 0x002E4B], @@ -205,7 +217,9 @@ const nonMatchSymbols = buildString({ [0x00AAE0, 0x00AAEF], [0x00AAF2, 0x00ABEA], [0x00ABEC, 0x00DBFF], - [0x00E000, 0x00FE4F], + [0x00E000, 0x00FE11], + [0x00FE13, 0x00FE14], + [0x00FE17, 0x00FE4F], [0x00FE58, 0x00FF00], [0x00FF02, 0x00FF0B], [0x00FF0F, 0x00FF19], @@ -230,7 +244,8 @@ const nonMatchSymbols = buildString({ [0x0111CE, 0x0111DD], [0x0111E0, 0x011237], [0x01123D, 0x0112A8], - [0x0112AA, 0x01144A], + [0x0112AA, 0x0113D3], + [0x0113D6, 0x01144A], [0x01144E, 0x011459], [0x01145C, 0x0115C1], [0x0115C6, 0x0115C8], @@ -249,7 +264,8 @@ const nonMatchSymbols = buildString({ [0x016A70, 0x016AF4], [0x016AF6, 0x016B36], [0x016B3A, 0x016B43], - [0x016B45, 0x016E96], + [0x016B45, 0x016D6D], + [0x016D70, 0x016E96], [0x016E99, 0x01BC9E], [0x01BCA0, 0x01DA86], [0x01DA8B, 0x10FFFF] diff --git a/test/built-ins/RegExp/property-escapes/generated/Unified_Ideograph.js b/test/built-ins/RegExp/property-escapes/generated/Unified_Ideograph.js index 68687894207..b2a555b9956 100644 --- a/test/built-ins/RegExp/property-escapes/generated/Unified_Ideograph.js +++ b/test/built-ins/RegExp/property-escapes/generated/Unified_Ideograph.js @@ -7,7 +7,7 @@ description: > Unicode property escapes for `Unified_Ideograph` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.1.0 + Unicode v16.0.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/property-escapes/generated/Uppercase.js b/test/built-ins/RegExp/property-escapes/generated/Uppercase.js index f23b3119927..584fb6210ca 100644 --- a/test/built-ins/RegExp/property-escapes/generated/Uppercase.js +++ b/test/built-ins/RegExp/property-escapes/generated/Uppercase.js @@ -7,7 +7,7 @@ description: > Unicode property escapes for `Uppercase` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.1.0 + Unicode v16.0.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] @@ -260,6 +260,7 @@ const matchSymbols = buildString({ 0x00052E, 0x0010C7, 0x0010CD, + 0x001C89, 0x001E00, 0x001E02, 0x001E04, @@ -560,6 +561,8 @@ const matchSymbols = buildString({ 0x00A7D0, 0x00A7D6, 0x00A7D8, + 0x00A7DA, + 0x00A7DC, 0x00A7F5, 0x01D49C, 0x01D4A2, @@ -627,6 +630,7 @@ const matchSymbols = buildString({ [0x00A7AA, 0x00A7AE], [0x00A7B0, 0x00A7B4], [0x00A7C4, 0x00A7C7], + [0x00A7CB, 0x00A7CC], [0x00FF21, 0x00FF3A], [0x010400, 0x010427], [0x0104B0, 0x0104D3], @@ -635,6 +639,7 @@ const matchSymbols = buildString({ [0x01058C, 0x010592], [0x010594, 0x010595], [0x010C80, 0x010CB2], + [0x010D50, 0x010D65], [0x0118A0, 0x0118BF], [0x016E40, 0x016E5F], [0x01D400, 0x01D419], @@ -1205,7 +1210,10 @@ const nonMatchSymbols = buildString({ 0x00A7C1, 0x00A7C3, 0x00A7C8, + 0x00A7CA, 0x00A7D7, + 0x00A7D9, + 0x00A7DB, 0x01057B, 0x01058B, 0x010593, @@ -1255,7 +1263,8 @@ const nonMatchSymbols = buildString({ [0x000557, 0x00109F], [0x0010C8, 0x0010CC], [0x0010CE, 0x00139F], - [0x0013F6, 0x001C8F], + [0x0013F6, 0x001C88], + [0x001C8A, 0x001C8F], [0x001CBB, 0x001CBC], [0x001CC0, 0x001DFF], [0x001E95, 0x001E9D], @@ -1299,16 +1308,17 @@ const nonMatchSymbols = buildString({ [0x00A787, 0x00A78A], [0x00A78E, 0x00A78F], [0x00A793, 0x00A795], - [0x00A7CA, 0x00A7CF], + [0x00A7CD, 0x00A7CF], [0x00A7D1, 0x00A7D5], - [0x00A7D9, 0x00A7F4], + [0x00A7DD, 0x00A7F4], [0x00A7F6, 0x00DBFF], [0x00E000, 0x00FF20], [0x00FF3B, 0x0103FF], [0x010428, 0x0104AF], [0x0104D4, 0x01056F], [0x010596, 0x010C7F], - [0x010CB3, 0x01189F], + [0x010CB3, 0x010D4F], + [0x010D66, 0x01189F], [0x0118C0, 0x016E3F], [0x016E60, 0x01D3FF], [0x01D41A, 0x01D433], diff --git a/test/built-ins/RegExp/property-escapes/generated/Variation_Selector.js b/test/built-ins/RegExp/property-escapes/generated/Variation_Selector.js index fbb8ba35e19..53bbbf861ec 100644 --- a/test/built-ins/RegExp/property-escapes/generated/Variation_Selector.js +++ b/test/built-ins/RegExp/property-escapes/generated/Variation_Selector.js @@ -7,7 +7,7 @@ description: > Unicode property escapes for `Variation_Selector` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.1.0 + Unicode v16.0.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/property-escapes/generated/White_Space.js b/test/built-ins/RegExp/property-escapes/generated/White_Space.js index 1c9abf3ef50..56b4ccea2dd 100644 --- a/test/built-ins/RegExp/property-escapes/generated/White_Space.js +++ b/test/built-ins/RegExp/property-escapes/generated/White_Space.js @@ -7,7 +7,7 @@ description: > Unicode property escapes for `White_Space` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.1.0 + Unicode v16.0.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/property-escapes/generated/XID_Continue.js b/test/built-ins/RegExp/property-escapes/generated/XID_Continue.js index 0b76983f821..6efd44d2cd6 100644 --- a/test/built-ins/RegExp/property-escapes/generated/XID_Continue.js +++ b/test/built-ins/RegExp/property-escapes/generated/XID_Continue.js @@ -7,7 +7,7 @@ description: > Unicode property escapes for `XID_Continue` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.1.0 + Unicode v16.0.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] @@ -101,6 +101,10 @@ const matchSymbols = buildString({ 0x011288, 0x011350, 0x011357, + 0x01138B, + 0x01138E, + 0x0113C2, + 0x0113C5, 0x0114C7, 0x011644, 0x011909, @@ -173,7 +177,7 @@ const matchSymbols = buildString({ [0x000860, 0x00086A], [0x000870, 0x000887], [0x000889, 0x00088E], - [0x000898, 0x0008E1], + [0x000897, 0x0008E1], [0x0008E3, 0x000963], [0x000966, 0x00096F], [0x000971, 0x000983], @@ -366,7 +370,7 @@ const matchSymbols = buildString({ [0x001C00, 0x001C37], [0x001C40, 0x001C49], [0x001C4D, 0x001C7D], - [0x001C80, 0x001C88], + [0x001C80, 0x001C8A], [0x001C90, 0x001CBA], [0x001CBD, 0x001CBF], [0x001CD0, 0x001CD2], @@ -433,9 +437,9 @@ const matchSymbols = buildString({ [0x00A67F, 0x00A6F1], [0x00A717, 0x00A71F], [0x00A722, 0x00A788], - [0x00A78B, 0x00A7CA], + [0x00A78B, 0x00A7CD], [0x00A7D0, 0x00A7D1], - [0x00A7D5, 0x00A7D9], + [0x00A7D5, 0x00A7DC], [0x00A7F2, 0x00A827], [0x00A840, 0x00A873], [0x00A880, 0x00A8C5], @@ -527,6 +531,7 @@ const matchSymbols = buildString({ [0x0105A3, 0x0105B1], [0x0105B3, 0x0105B9], [0x0105BB, 0x0105BC], + [0x0105C0, 0x0105F3], [0x010600, 0x010736], [0x010740, 0x010755], [0x010760, 0x010767], @@ -564,10 +569,14 @@ const matchSymbols = buildString({ [0x010CC0, 0x010CF2], [0x010D00, 0x010D27], [0x010D30, 0x010D39], + [0x010D40, 0x010D65], + [0x010D69, 0x010D6D], + [0x010D6F, 0x010D85], [0x010E80, 0x010EA9], [0x010EAB, 0x010EAC], [0x010EB0, 0x010EB1], - [0x010EFD, 0x010F1C], + [0x010EC2, 0x010EC4], + [0x010EFC, 0x010F1C], [0x010F30, 0x010F50], [0x010F70, 0x010F85], [0x010FB0, 0x010FC4], @@ -606,6 +615,12 @@ const matchSymbols = buildString({ [0x01135D, 0x011363], [0x011366, 0x01136C], [0x011370, 0x011374], + [0x011380, 0x011389], + [0x011390, 0x0113B5], + [0x0113B7, 0x0113C0], + [0x0113C7, 0x0113CA], + [0x0113CC, 0x0113D3], + [0x0113E1, 0x0113E2], [0x011400, 0x01144A], [0x011450, 0x011459], [0x01145E, 0x011461], @@ -618,6 +633,7 @@ const matchSymbols = buildString({ [0x011650, 0x011659], [0x011680, 0x0116B8], [0x0116C0, 0x0116C9], + [0x0116D0, 0x0116E3], [0x011700, 0x01171A], [0x01171D, 0x01172B], [0x011730, 0x011739], @@ -638,6 +654,8 @@ const matchSymbols = buildString({ [0x011A00, 0x011A3E], [0x011A50, 0x011A99], [0x011AB0, 0x011AF8], + [0x011BC0, 0x011BE0], + [0x011BF0, 0x011BF9], [0x011C00, 0x011C08], [0x011C0A, 0x011C36], [0x011C38, 0x011C40], @@ -661,14 +679,16 @@ const matchSymbols = buildString({ [0x011F00, 0x011F10], [0x011F12, 0x011F3A], [0x011F3E, 0x011F42], - [0x011F50, 0x011F59], + [0x011F50, 0x011F5A], [0x012000, 0x012399], [0x012400, 0x01246E], [0x012480, 0x012543], [0x012F90, 0x012FF0], [0x013000, 0x01342F], [0x013440, 0x013455], + [0x013460, 0x0143FA], [0x014400, 0x014646], + [0x016100, 0x016139], [0x016800, 0x016A38], [0x016A40, 0x016A5E], [0x016A60, 0x016A69], @@ -681,6 +701,8 @@ const matchSymbols = buildString({ [0x016B50, 0x016B59], [0x016B63, 0x016B77], [0x016B7D, 0x016B8F], + [0x016D40, 0x016D6C], + [0x016D70, 0x016D79], [0x016E40, 0x016E7F], [0x016F00, 0x016F4A], [0x016F4F, 0x016F87], @@ -690,7 +712,7 @@ const matchSymbols = buildString({ [0x016FF0, 0x016FF1], [0x017000, 0x0187F7], [0x018800, 0x018CD5], - [0x018D00, 0x018D08], + [0x018CFF, 0x018D08], [0x01AFF0, 0x01AFF3], [0x01AFF5, 0x01AFFB], [0x01AFFD, 0x01AFFE], @@ -703,6 +725,7 @@ const matchSymbols = buildString({ [0x01BC80, 0x01BC88], [0x01BC90, 0x01BC99], [0x01BC9D, 0x01BC9E], + [0x01CCF0, 0x01CCF9], [0x01CF00, 0x01CF2D], [0x01CF30, 0x01CF46], [0x01D165, 0x01D169], @@ -757,6 +780,7 @@ const matchSymbols = buildString({ [0x01E290, 0x01E2AE], [0x01E2C0, 0x01E2F9], [0x01E4D0, 0x01E4F9], + [0x01E5D0, 0x01E5FA], [0x01E7E0, 0x01E7E6], [0x01E7E8, 0x01E7EB], [0x01E7ED, 0x01E7EE], @@ -986,6 +1010,7 @@ const nonMatchSymbols = buildString({ 0x010A14, 0x010A18, 0x010AC8, + 0x010D6E, 0x010EAA, 0x011135, 0x0111CD, @@ -1000,6 +1025,12 @@ const nonMatchSymbols = buildString({ 0x011331, 0x011334, 0x01133A, + 0x01138A, + 0x01138F, + 0x0113B6, + 0x0113C1, + 0x0113C6, + 0x0113CB, 0x0114C6, 0x011914, 0x011917, @@ -1116,7 +1147,7 @@ const nonMatchSymbols = buildString({ [0x00082E, 0x00083F], [0x00085C, 0x00085F], [0x00086B, 0x00086F], - [0x00088F, 0x000897], + [0x00088F, 0x000896], [0x000964, 0x000965], [0x00098D, 0x00098E], [0x000991, 0x000992], @@ -1249,7 +1280,7 @@ const nonMatchSymbols = buildString({ [0x001C38, 0x001C3F], [0x001C4A, 0x001C4C], [0x001C7E, 0x001C7F], - [0x001C89, 0x001C8F], + [0x001C8B, 0x001C8F], [0x001CBB, 0x001CBC], [0x001CC0, 0x001CCF], [0x001CFB, 0x001CFF], @@ -1308,8 +1339,8 @@ const nonMatchSymbols = buildString({ [0x00A6F2, 0x00A716], [0x00A720, 0x00A721], [0x00A789, 0x00A78A], - [0x00A7CB, 0x00A7CF], - [0x00A7DA, 0x00A7F1], + [0x00A7CE, 0x00A7CF], + [0x00A7DD, 0x00A7F1], [0x00A828, 0x00A82B], [0x00A82D, 0x00A83F], [0x00A874, 0x00A87F], @@ -1383,7 +1414,8 @@ const nonMatchSymbols = buildString({ [0x0104FC, 0x0104FF], [0x010528, 0x01052F], [0x010564, 0x01056F], - [0x0105BD, 0x0105FF], + [0x0105BD, 0x0105BF], + [0x0105F4, 0x0105FF], [0x010737, 0x01073F], [0x010756, 0x01075F], [0x010768, 0x01077F], @@ -1414,9 +1446,12 @@ const nonMatchSymbols = buildString({ [0x010CB3, 0x010CBF], [0x010CF3, 0x010CFF], [0x010D28, 0x010D2F], - [0x010D3A, 0x010E7F], + [0x010D3A, 0x010D3F], + [0x010D66, 0x010D68], + [0x010D86, 0x010E7F], [0x010EAD, 0x010EAF], - [0x010EB2, 0x010EFC], + [0x010EB2, 0x010EC1], + [0x010EC5, 0x010EFB], [0x010F1D, 0x010F26], [0x010F28, 0x010F2F], [0x010F51, 0x010F6F], @@ -1449,7 +1484,11 @@ const nonMatchSymbols = buildString({ [0x011358, 0x01135C], [0x011364, 0x011365], [0x01136D, 0x01136F], - [0x011375, 0x0113FF], + [0x011375, 0x01137F], + [0x01138C, 0x01138D], + [0x0113C3, 0x0113C4], + [0x0113D4, 0x0113E0], + [0x0113E3, 0x0113FF], [0x01144B, 0x01144F], [0x01145A, 0x01145D], [0x011462, 0x01147F], @@ -1462,7 +1501,8 @@ const nonMatchSymbols = buildString({ [0x011645, 0x01164F], [0x01165A, 0x01167F], [0x0116B9, 0x0116BF], - [0x0116CA, 0x0116FF], + [0x0116CA, 0x0116CF], + [0x0116E4, 0x0116FF], [0x01171B, 0x01171C], [0x01172C, 0x01172F], [0x01173A, 0x01173F], @@ -1481,7 +1521,9 @@ const nonMatchSymbols = buildString({ [0x011A48, 0x011A4F], [0x011A9A, 0x011A9C], [0x011A9E, 0x011AAF], - [0x011AF9, 0x011BFF], + [0x011AF9, 0x011BBF], + [0x011BE1, 0x011BEF], + [0x011BFA, 0x011BFF], [0x011C41, 0x011C4F], [0x011C5A, 0x011C71], [0x011C90, 0x011C91], @@ -1494,15 +1536,17 @@ const nonMatchSymbols = buildString({ [0x011EF7, 0x011EFF], [0x011F3B, 0x011F3D], [0x011F43, 0x011F4F], - [0x011F5A, 0x011FAF], + [0x011F5B, 0x011FAF], [0x011FB1, 0x011FFF], [0x01239A, 0x0123FF], [0x01246F, 0x01247F], [0x012544, 0x012F8F], [0x012FF1, 0x012FFF], [0x013430, 0x01343F], - [0x013456, 0x0143FF], - [0x014647, 0x0167FF], + [0x013456, 0x01345F], + [0x0143FB, 0x0143FF], + [0x014647, 0x0160FF], + [0x01613A, 0x0167FF], [0x016A39, 0x016A3F], [0x016A6A, 0x016A6F], [0x016ACA, 0x016ACF], @@ -1512,7 +1556,9 @@ const nonMatchSymbols = buildString({ [0x016B44, 0x016B4F], [0x016B5A, 0x016B62], [0x016B78, 0x016B7C], - [0x016B90, 0x016E3F], + [0x016B90, 0x016D3F], + [0x016D6D, 0x016D6F], + [0x016D7A, 0x016E3F], [0x016E80, 0x016EFF], [0x016F4B, 0x016F4E], [0x016F88, 0x016F8E], @@ -1520,7 +1566,7 @@ const nonMatchSymbols = buildString({ [0x016FE5, 0x016FEF], [0x016FF2, 0x016FFF], [0x0187F8, 0x0187FF], - [0x018CD6, 0x018CFF], + [0x018CD6, 0x018CFE], [0x018D09, 0x01AFEF], [0x01B123, 0x01B131], [0x01B133, 0x01B14F], @@ -1532,7 +1578,8 @@ const nonMatchSymbols = buildString({ [0x01BC7D, 0x01BC7F], [0x01BC89, 0x01BC8F], [0x01BC9A, 0x01BC9C], - [0x01BC9F, 0x01CEFF], + [0x01BC9F, 0x01CCEF], + [0x01CCFA, 0x01CEFF], [0x01CF2E, 0x01CF2F], [0x01CF47, 0x01D164], [0x01D16A, 0x01D16C], @@ -1566,7 +1613,8 @@ const nonMatchSymbols = buildString({ [0x01E14F, 0x01E28F], [0x01E2AF, 0x01E2BF], [0x01E2FA, 0x01E4CF], - [0x01E4FA, 0x01E7DF], + [0x01E4FA, 0x01E5CF], + [0x01E5FB, 0x01E7DF], [0x01E8C5, 0x01E8CF], [0x01E8D7, 0x01E8FF], [0x01E94C, 0x01E94F], diff --git a/test/built-ins/RegExp/property-escapes/generated/XID_Start.js b/test/built-ins/RegExp/property-escapes/generated/XID_Start.js index 8cc0bc0ce24..4b25848fa3e 100644 --- a/test/built-ins/RegExp/property-escapes/generated/XID_Start.js +++ b/test/built-ins/RegExp/property-escapes/generated/XID_Start.js @@ -7,7 +7,7 @@ description: > Unicode property escapes for `XID_Start` info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.1.0 + Unicode v16.0.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes] includes: [regExpUtils.js] @@ -117,6 +117,11 @@ const matchSymbols = buildString({ 0x011288, 0x01133D, 0x011350, + 0x01138B, + 0x01138E, + 0x0113B7, + 0x0113D1, + 0x0113D3, 0x0114C7, 0x011644, 0x0116B8, @@ -142,6 +147,7 @@ const matchSymbols = buildString({ 0x01D4BB, 0x01D546, 0x01E14E, + 0x01E5F0, 0x01E94B, 0x01EE24, 0x01EE27, @@ -328,7 +334,7 @@ const matchSymbols = buildString({ [0x001C00, 0x001C23], [0x001C4D, 0x001C4F], [0x001C5A, 0x001C7D], - [0x001C80, 0x001C88], + [0x001C80, 0x001C8A], [0x001C90, 0x001CBA], [0x001CBD, 0x001CBF], [0x001CE9, 0x001CEC], @@ -394,9 +400,9 @@ const matchSymbols = buildString({ [0x00A6A0, 0x00A6EF], [0x00A717, 0x00A71F], [0x00A722, 0x00A788], - [0x00A78B, 0x00A7CA], + [0x00A78B, 0x00A7CD], [0x00A7D0, 0x00A7D1], - [0x00A7D5, 0x00A7D9], + [0x00A7D5, 0x00A7DC], [0x00A7F2, 0x00A801], [0x00A803, 0x00A805], [0x00A807, 0x00A80A], @@ -487,6 +493,7 @@ const matchSymbols = buildString({ [0x0105A3, 0x0105B1], [0x0105B3, 0x0105B9], [0x0105BB, 0x0105BC], + [0x0105C0, 0x0105F3], [0x010600, 0x010736], [0x010740, 0x010755], [0x010760, 0x010767], @@ -520,8 +527,11 @@ const matchSymbols = buildString({ [0x010C80, 0x010CB2], [0x010CC0, 0x010CF2], [0x010D00, 0x010D23], + [0x010D4A, 0x010D65], + [0x010D6F, 0x010D85], [0x010E80, 0x010EA9], [0x010EB0, 0x010EB1], + [0x010EC2, 0x010EC4], [0x010F00, 0x010F1C], [0x010F30, 0x010F45], [0x010F70, 0x010F81], @@ -550,6 +560,8 @@ const matchSymbols = buildString({ [0x011332, 0x011333], [0x011335, 0x011339], [0x01135D, 0x011361], + [0x011380, 0x011389], + [0x011390, 0x0113B5], [0x011400, 0x011434], [0x011447, 0x01144A], [0x01145F, 0x011461], @@ -572,6 +584,7 @@ const matchSymbols = buildString({ [0x011A0B, 0x011A32], [0x011A5C, 0x011A89], [0x011AB0, 0x011AF8], + [0x011BC0, 0x011BE0], [0x011C00, 0x011C08], [0x011C0A, 0x011C2E], [0x011C72, 0x011C8F], @@ -590,7 +603,9 @@ const matchSymbols = buildString({ [0x012F90, 0x012FF0], [0x013000, 0x01342F], [0x013441, 0x013446], + [0x013460, 0x0143FA], [0x014400, 0x014646], + [0x016100, 0x01611D], [0x016800, 0x016A38], [0x016A40, 0x016A5E], [0x016A70, 0x016ABE], @@ -599,13 +614,14 @@ const matchSymbols = buildString({ [0x016B40, 0x016B43], [0x016B63, 0x016B77], [0x016B7D, 0x016B8F], + [0x016D40, 0x016D6C], [0x016E40, 0x016E7F], [0x016F00, 0x016F4A], [0x016F93, 0x016F9F], [0x016FE0, 0x016FE1], [0x017000, 0x0187F7], [0x018800, 0x018CD5], - [0x018D00, 0x018D08], + [0x018CFF, 0x018D08], [0x01AFF0, 0x01AFF3], [0x01AFF5, 0x01AFFB], [0x01AFFD, 0x01AFFE], @@ -652,6 +668,7 @@ const matchSymbols = buildString({ [0x01E290, 0x01E2AD], [0x01E2C0, 0x01E2EB], [0x01E4D0, 0x01E4EB], + [0x01E5D0, 0x01E5ED], [0x01E7E0, 0x01E7E6], [0x01E7E8, 0x01E7EB], [0x01E7ED, 0x01E7EE], @@ -850,6 +867,10 @@ const nonMatchSymbols = buildString({ 0x011329, 0x011331, 0x011334, + 0x01138A, + 0x01138F, + 0x0113B6, + 0x0113D2, 0x0114C6, 0x011914, 0x011917, @@ -1076,7 +1097,7 @@ const nonMatchSymbols = buildString({ [0x001C24, 0x001C4C], [0x001C50, 0x001C59], [0x001C7E, 0x001C7F], - [0x001C89, 0x001C8F], + [0x001C8B, 0x001C8F], [0x001CBB, 0x001CBC], [0x001CC0, 0x001CE8], [0x001CF7, 0x001CF9], @@ -1134,8 +1155,8 @@ const nonMatchSymbols = buildString({ [0x00A6F0, 0x00A716], [0x00A720, 0x00A721], [0x00A789, 0x00A78A], - [0x00A7CB, 0x00A7CF], - [0x00A7DA, 0x00A7F1], + [0x00A7CE, 0x00A7CF], + [0x00A7DD, 0x00A7F1], [0x00A823, 0x00A83F], [0x00A874, 0x00A881], [0x00A8B4, 0x00A8F1], @@ -1204,7 +1225,8 @@ const nonMatchSymbols = buildString({ [0x0104FC, 0x0104FF], [0x010528, 0x01052F], [0x010564, 0x01056F], - [0x0105BD, 0x0105FF], + [0x0105BD, 0x0105BF], + [0x0105F4, 0x0105FF], [0x010737, 0x01073F], [0x010756, 0x01075F], [0x010768, 0x01077F], @@ -1232,9 +1254,12 @@ const nonMatchSymbols = buildString({ [0x010C49, 0x010C7F], [0x010CB3, 0x010CBF], [0x010CF3, 0x010CFF], - [0x010D24, 0x010E7F], + [0x010D24, 0x010D49], + [0x010D66, 0x010D6E], + [0x010D86, 0x010E7F], [0x010EAA, 0x010EAF], - [0x010EB2, 0x010EFF], + [0x010EB2, 0x010EC1], + [0x010EC5, 0x010EFF], [0x010F1D, 0x010F26], [0x010F28, 0x010F2F], [0x010F46, 0x010F6F], @@ -1263,7 +1288,10 @@ const nonMatchSymbols = buildString({ [0x01133A, 0x01133C], [0x01133E, 0x01134F], [0x011351, 0x01135C], - [0x011362, 0x0113FF], + [0x011362, 0x01137F], + [0x01138C, 0x01138D], + [0x0113B8, 0x0113D0], + [0x0113D4, 0x0113FF], [0x011435, 0x011446], [0x01144B, 0x01145E], [0x011462, 0x01147F], @@ -1292,7 +1320,8 @@ const nonMatchSymbols = buildString({ [0x011A51, 0x011A5B], [0x011A8A, 0x011A9C], [0x011A9E, 0x011AAF], - [0x011AF9, 0x011BFF], + [0x011AF9, 0x011BBF], + [0x011BE1, 0x011BFF], [0x011C2F, 0x011C3F], [0x011C41, 0x011C71], [0x011C90, 0x011CFF], @@ -1308,8 +1337,10 @@ const nonMatchSymbols = buildString({ [0x012544, 0x012F8F], [0x012FF1, 0x012FFF], [0x013430, 0x013440], - [0x013447, 0x0143FF], - [0x014647, 0x0167FF], + [0x013447, 0x01345F], + [0x0143FB, 0x0143FF], + [0x014647, 0x0160FF], + [0x01611E, 0x0167FF], [0x016A39, 0x016A3F], [0x016A5F, 0x016A6F], [0x016ABF, 0x016ACF], @@ -1317,14 +1348,15 @@ const nonMatchSymbols = buildString({ [0x016B30, 0x016B3F], [0x016B44, 0x016B62], [0x016B78, 0x016B7C], - [0x016B90, 0x016E3F], + [0x016B90, 0x016D3F], + [0x016D6D, 0x016E3F], [0x016E80, 0x016EFF], [0x016F4B, 0x016F4F], [0x016F51, 0x016F92], [0x016FA0, 0x016FDF], [0x016FE4, 0x016FFF], [0x0187F8, 0x0187FF], - [0x018CD6, 0x018CFF], + [0x018CD6, 0x018CFE], [0x018D09, 0x01AFEF], [0x01B123, 0x01B131], [0x01B133, 0x01B14F], @@ -1351,7 +1383,9 @@ const nonMatchSymbols = buildString({ [0x01E14F, 0x01E28F], [0x01E2AE, 0x01E2BF], [0x01E2EC, 0x01E4CF], - [0x01E4EC, 0x01E7DF], + [0x01E4EC, 0x01E5CF], + [0x01E5EE, 0x01E5EF], + [0x01E5F1, 0x01E7DF], [0x01E8C5, 0x01E8FF], [0x01E944, 0x01E94A], [0x01E94C, 0x01EDFF], diff --git a/test/built-ins/RegExp/property-escapes/generated/strings/Basic_Emoji-negative-CharacterClass.js b/test/built-ins/RegExp/property-escapes/generated/strings/Basic_Emoji-negative-CharacterClass.js index 3dbc0150b5d..88dee789e2e 100644 --- a/test/built-ins/RegExp/property-escapes/generated/strings/Basic_Emoji-negative-CharacterClass.js +++ b/test/built-ins/RegExp/property-escapes/generated/strings/Basic_Emoji-negative-CharacterClass.js @@ -7,7 +7,7 @@ description: > Negating Unicode property escapes for `Basic_Emoji` (property of strings) with `[^\p{…}]` throws an early error. info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.1.0 + Unicode v16.0.0 esid: sec-isvalidregularexpressionliteral features: [regexp-unicode-property-escapes, regexp-v-flag] negative: diff --git a/test/built-ins/RegExp/property-escapes/generated/strings/Basic_Emoji-negative-P.js b/test/built-ins/RegExp/property-escapes/generated/strings/Basic_Emoji-negative-P.js index 41c4fc867db..0ce62caabd8 100644 --- a/test/built-ins/RegExp/property-escapes/generated/strings/Basic_Emoji-negative-P.js +++ b/test/built-ins/RegExp/property-escapes/generated/strings/Basic_Emoji-negative-P.js @@ -7,7 +7,7 @@ description: > Negating Unicode property escapes for `Basic_Emoji` (property of strings) with `\P{…}` throws an early error. info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.1.0 + Unicode v16.0.0 esid: sec-isvalidregularexpressionliteral features: [regexp-unicode-property-escapes, regexp-v-flag] negative: diff --git a/test/built-ins/RegExp/property-escapes/generated/strings/Basic_Emoji-negative-u.js b/test/built-ins/RegExp/property-escapes/generated/strings/Basic_Emoji-negative-u.js index 1ce822949c6..4b0fc52edb0 100644 --- a/test/built-ins/RegExp/property-escapes/generated/strings/Basic_Emoji-negative-u.js +++ b/test/built-ins/RegExp/property-escapes/generated/strings/Basic_Emoji-negative-u.js @@ -7,7 +7,7 @@ description: > Unicode property escapes for `Basic_Emoji` (property of strings) with the `u` flag throws an early error. Properties of strings are only supported through the `v` flag. info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.1.0 + Unicode v16.0.0 esid: sec-patterns-static-semantics-early-errors features: [regexp-unicode-property-escapes, regexp-v-flag] negative: diff --git a/test/built-ins/RegExp/property-escapes/generated/strings/Basic_Emoji.js b/test/built-ins/RegExp/property-escapes/generated/strings/Basic_Emoji.js index e319e99918a..2f5b15eba30 100644 --- a/test/built-ins/RegExp/property-escapes/generated/strings/Basic_Emoji.js +++ b/test/built-ins/RegExp/property-escapes/generated/strings/Basic_Emoji.js @@ -7,7 +7,7 @@ description: > Unicode property escapes for `Basic_Emoji` (property of strings) info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.1.0 + Unicode v16.0.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes, regexp-v-flag] includes: [regExpUtils.js] @@ -1111,6 +1111,8 @@ testPropertyOfStrings({ "\u{1FA86}", "\u{1FA87}", "\u{1FA88}", + "\u{1FA89}", + "\u{1FA8F}", "\u{1FA90}", "\u{1FA91}", "\u{1FA92}", @@ -1157,6 +1159,7 @@ testPropertyOfStrings({ "\u{1FABB}", "\u{1FABC}", "\u{1FABD}", + "\u{1FABE}", "\u{1FABF}", "\u{1FAC0}", "\u{1FAC1}", @@ -1164,6 +1167,7 @@ testPropertyOfStrings({ "\u{1FAC3}", "\u{1FAC4}", "\u{1FAC5}", + "\u{1FAC6}", "\u{1FACE}", "\u{1FACF}", "\u{1FAD0}", @@ -1178,6 +1182,8 @@ testPropertyOfStrings({ "\u{1FAD9}", "\u{1FADA}", "\u{1FADB}", + "\u{1FADC}", + "\u{1FADF}", "\u{1FAE0}", "\u{1FAE1}", "\u{1FAE2}", @@ -1187,6 +1193,7 @@ testPropertyOfStrings({ "\u{1FAE6}", "\u{1FAE7}", "\u{1FAE8}", + "\u{1FAE9}", "\u{1FAF0}", "\u{1FAF1}", "\u{1FAF2}", diff --git a/test/built-ins/RegExp/property-escapes/generated/strings/Emoji_Keycap_Sequence-negative-CharacterClass.js b/test/built-ins/RegExp/property-escapes/generated/strings/Emoji_Keycap_Sequence-negative-CharacterClass.js index adb2500a756..1eb2354be2e 100644 --- a/test/built-ins/RegExp/property-escapes/generated/strings/Emoji_Keycap_Sequence-negative-CharacterClass.js +++ b/test/built-ins/RegExp/property-escapes/generated/strings/Emoji_Keycap_Sequence-negative-CharacterClass.js @@ -7,7 +7,7 @@ description: > Negating Unicode property escapes for `Emoji_Keycap_Sequence` (property of strings) with `[^\p{…}]` throws an early error. info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.1.0 + Unicode v16.0.0 esid: sec-isvalidregularexpressionliteral features: [regexp-unicode-property-escapes, regexp-v-flag] negative: diff --git a/test/built-ins/RegExp/property-escapes/generated/strings/Emoji_Keycap_Sequence-negative-P.js b/test/built-ins/RegExp/property-escapes/generated/strings/Emoji_Keycap_Sequence-negative-P.js index 2186bf19911..114ae54e069 100644 --- a/test/built-ins/RegExp/property-escapes/generated/strings/Emoji_Keycap_Sequence-negative-P.js +++ b/test/built-ins/RegExp/property-escapes/generated/strings/Emoji_Keycap_Sequence-negative-P.js @@ -7,7 +7,7 @@ description: > Negating Unicode property escapes for `Emoji_Keycap_Sequence` (property of strings) with `\P{…}` throws an early error. info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.1.0 + Unicode v16.0.0 esid: sec-isvalidregularexpressionliteral features: [regexp-unicode-property-escapes, regexp-v-flag] negative: diff --git a/test/built-ins/RegExp/property-escapes/generated/strings/Emoji_Keycap_Sequence-negative-u.js b/test/built-ins/RegExp/property-escapes/generated/strings/Emoji_Keycap_Sequence-negative-u.js index d168b0018b8..614571a5832 100644 --- a/test/built-ins/RegExp/property-escapes/generated/strings/Emoji_Keycap_Sequence-negative-u.js +++ b/test/built-ins/RegExp/property-escapes/generated/strings/Emoji_Keycap_Sequence-negative-u.js @@ -7,7 +7,7 @@ description: > Unicode property escapes for `Emoji_Keycap_Sequence` (property of strings) with the `u` flag throws an early error. Properties of strings are only supported through the `v` flag. info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.1.0 + Unicode v16.0.0 esid: sec-patterns-static-semantics-early-errors features: [regexp-unicode-property-escapes, regexp-v-flag] negative: diff --git a/test/built-ins/RegExp/property-escapes/generated/strings/Emoji_Keycap_Sequence.js b/test/built-ins/RegExp/property-escapes/generated/strings/Emoji_Keycap_Sequence.js index 4b4ae71882f..fddf84cf8a2 100644 --- a/test/built-ins/RegExp/property-escapes/generated/strings/Emoji_Keycap_Sequence.js +++ b/test/built-ins/RegExp/property-escapes/generated/strings/Emoji_Keycap_Sequence.js @@ -7,7 +7,7 @@ description: > Unicode property escapes for `Emoji_Keycap_Sequence` (property of strings) info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.1.0 + Unicode v16.0.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes, regexp-v-flag] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/property-escapes/generated/strings/RGI_Emoji-negative-CharacterClass.js b/test/built-ins/RegExp/property-escapes/generated/strings/RGI_Emoji-negative-CharacterClass.js index 33d8ce30fb0..d6bc14395b4 100644 --- a/test/built-ins/RegExp/property-escapes/generated/strings/RGI_Emoji-negative-CharacterClass.js +++ b/test/built-ins/RegExp/property-escapes/generated/strings/RGI_Emoji-negative-CharacterClass.js @@ -7,7 +7,7 @@ description: > Negating Unicode property escapes for `RGI_Emoji` (property of strings) with `[^\p{…}]` throws an early error. info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.1.0 + Unicode v16.0.0 esid: sec-isvalidregularexpressionliteral features: [regexp-unicode-property-escapes, regexp-v-flag] negative: diff --git a/test/built-ins/RegExp/property-escapes/generated/strings/RGI_Emoji-negative-P.js b/test/built-ins/RegExp/property-escapes/generated/strings/RGI_Emoji-negative-P.js index a6a4b3333f2..accb0a13014 100644 --- a/test/built-ins/RegExp/property-escapes/generated/strings/RGI_Emoji-negative-P.js +++ b/test/built-ins/RegExp/property-escapes/generated/strings/RGI_Emoji-negative-P.js @@ -7,7 +7,7 @@ description: > Negating Unicode property escapes for `RGI_Emoji` (property of strings) with `\P{…}` throws an early error. info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.1.0 + Unicode v16.0.0 esid: sec-isvalidregularexpressionliteral features: [regexp-unicode-property-escapes, regexp-v-flag] negative: diff --git a/test/built-ins/RegExp/property-escapes/generated/strings/RGI_Emoji-negative-u.js b/test/built-ins/RegExp/property-escapes/generated/strings/RGI_Emoji-negative-u.js index 102cb95e2ed..facc2483bcd 100644 --- a/test/built-ins/RegExp/property-escapes/generated/strings/RGI_Emoji-negative-u.js +++ b/test/built-ins/RegExp/property-escapes/generated/strings/RGI_Emoji-negative-u.js @@ -7,7 +7,7 @@ description: > Unicode property escapes for `RGI_Emoji` (property of strings) with the `u` flag throws an early error. Properties of strings are only supported through the `v` flag. info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.1.0 + Unicode v16.0.0 esid: sec-patterns-static-semantics-early-errors features: [regexp-unicode-property-escapes, regexp-v-flag] negative: diff --git a/test/built-ins/RegExp/property-escapes/generated/strings/RGI_Emoji.js b/test/built-ins/RegExp/property-escapes/generated/strings/RGI_Emoji.js index 7cc87a2e7a4..4aea81ac91a 100644 --- a/test/built-ins/RegExp/property-escapes/generated/strings/RGI_Emoji.js +++ b/test/built-ins/RegExp/property-escapes/generated/strings/RGI_Emoji.js @@ -7,7 +7,7 @@ description: > Unicode property escapes for `RGI_Emoji` (property of strings) info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.1.0 + Unicode v16.0.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes, regexp-v-flag] includes: [regExpUtils.js] @@ -312,6 +312,7 @@ testPropertyOfStrings({ "\u{1F1E8}\u{1F1F3}", "\u{1F1E8}\u{1F1F4}", "\u{1F1E8}\u{1F1F5}", + "\u{1F1E8}\u{1F1F6}", "\u{1F1E8}\u{1F1F7}", "\u{1F1E8}\u{1F1FA}", "\u{1F1E8}\u{1F1FB}", @@ -3634,6 +3635,8 @@ testPropertyOfStrings({ "\u{1FA86}", "\u{1FA87}", "\u{1FA88}", + "\u{1FA89}", + "\u{1FA8F}", "\u{1FA90}", "\u{1FA91}", "\u{1FA92}", @@ -3680,6 +3683,7 @@ testPropertyOfStrings({ "\u{1FABB}", "\u{1FABC}", "\u{1FABD}", + "\u{1FABE}", "\u{1FABF}", "\u{1FAC0}", "\u{1FAC1}", @@ -3702,6 +3706,7 @@ testPropertyOfStrings({ "\u{1FAC5}\u{1F3FD}", "\u{1FAC5}\u{1F3FE}", "\u{1FAC5}\u{1F3FF}", + "\u{1FAC6}", "\u{1FACE}", "\u{1FACF}", "\u{1FAD0}", @@ -3716,6 +3721,8 @@ testPropertyOfStrings({ "\u{1FAD9}", "\u{1FADA}", "\u{1FADB}", + "\u{1FADC}", + "\u{1FADF}", "\u{1FAE0}", "\u{1FAE1}", "\u{1FAE2}", @@ -3725,6 +3732,7 @@ testPropertyOfStrings({ "\u{1FAE6}", "\u{1FAE7}", "\u{1FAE8}", + "\u{1FAE9}", "\u{1FAF0}", "\u{1FAF0}\u{1F3FB}", "\u{1FAF0}\u{1F3FC}", diff --git a/test/built-ins/RegExp/property-escapes/generated/strings/RGI_Emoji_Flag_Sequence-negative-CharacterClass.js b/test/built-ins/RegExp/property-escapes/generated/strings/RGI_Emoji_Flag_Sequence-negative-CharacterClass.js index 9f4b33bb8b8..76a40d2ae8b 100644 --- a/test/built-ins/RegExp/property-escapes/generated/strings/RGI_Emoji_Flag_Sequence-negative-CharacterClass.js +++ b/test/built-ins/RegExp/property-escapes/generated/strings/RGI_Emoji_Flag_Sequence-negative-CharacterClass.js @@ -7,7 +7,7 @@ description: > Negating Unicode property escapes for `RGI_Emoji_Flag_Sequence` (property of strings) with `[^\p{…}]` throws an early error. info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.1.0 + Unicode v16.0.0 esid: sec-isvalidregularexpressionliteral features: [regexp-unicode-property-escapes, regexp-v-flag] negative: diff --git a/test/built-ins/RegExp/property-escapes/generated/strings/RGI_Emoji_Flag_Sequence-negative-P.js b/test/built-ins/RegExp/property-escapes/generated/strings/RGI_Emoji_Flag_Sequence-negative-P.js index bb015069eb1..1f642d28442 100644 --- a/test/built-ins/RegExp/property-escapes/generated/strings/RGI_Emoji_Flag_Sequence-negative-P.js +++ b/test/built-ins/RegExp/property-escapes/generated/strings/RGI_Emoji_Flag_Sequence-negative-P.js @@ -7,7 +7,7 @@ description: > Negating Unicode property escapes for `RGI_Emoji_Flag_Sequence` (property of strings) with `\P{…}` throws an early error. info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.1.0 + Unicode v16.0.0 esid: sec-isvalidregularexpressionliteral features: [regexp-unicode-property-escapes, regexp-v-flag] negative: diff --git a/test/built-ins/RegExp/property-escapes/generated/strings/RGI_Emoji_Flag_Sequence-negative-u.js b/test/built-ins/RegExp/property-escapes/generated/strings/RGI_Emoji_Flag_Sequence-negative-u.js index 3e3d6078d1c..d871101c5bc 100644 --- a/test/built-ins/RegExp/property-escapes/generated/strings/RGI_Emoji_Flag_Sequence-negative-u.js +++ b/test/built-ins/RegExp/property-escapes/generated/strings/RGI_Emoji_Flag_Sequence-negative-u.js @@ -7,7 +7,7 @@ description: > Unicode property escapes for `RGI_Emoji_Flag_Sequence` (property of strings) with the `u` flag throws an early error. Properties of strings are only supported through the `v` flag. info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.1.0 + Unicode v16.0.0 esid: sec-patterns-static-semantics-early-errors features: [regexp-unicode-property-escapes, regexp-v-flag] negative: diff --git a/test/built-ins/RegExp/property-escapes/generated/strings/RGI_Emoji_Flag_Sequence.js b/test/built-ins/RegExp/property-escapes/generated/strings/RGI_Emoji_Flag_Sequence.js index c1f0062e216..c5a0b9c7163 100644 --- a/test/built-ins/RegExp/property-escapes/generated/strings/RGI_Emoji_Flag_Sequence.js +++ b/test/built-ins/RegExp/property-escapes/generated/strings/RGI_Emoji_Flag_Sequence.js @@ -7,7 +7,7 @@ description: > Unicode property escapes for `RGI_Emoji_Flag_Sequence` (property of strings) info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.1.0 + Unicode v16.0.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes, regexp-v-flag] includes: [regExpUtils.js] @@ -68,6 +68,7 @@ testPropertyOfStrings({ "\u{1F1E8}\u{1F1F3}", "\u{1F1E8}\u{1F1F4}", "\u{1F1E8}\u{1F1F5}", + "\u{1F1E8}\u{1F1F6}", "\u{1F1E8}\u{1F1F7}", "\u{1F1E8}\u{1F1FA}", "\u{1F1E8}\u{1F1FB}", diff --git a/test/built-ins/RegExp/property-escapes/generated/strings/RGI_Emoji_Modifier_Sequence-negative-CharacterClass.js b/test/built-ins/RegExp/property-escapes/generated/strings/RGI_Emoji_Modifier_Sequence-negative-CharacterClass.js index 446ae111638..9ddf5b91936 100644 --- a/test/built-ins/RegExp/property-escapes/generated/strings/RGI_Emoji_Modifier_Sequence-negative-CharacterClass.js +++ b/test/built-ins/RegExp/property-escapes/generated/strings/RGI_Emoji_Modifier_Sequence-negative-CharacterClass.js @@ -7,7 +7,7 @@ description: > Negating Unicode property escapes for `RGI_Emoji_Modifier_Sequence` (property of strings) with `[^\p{…}]` throws an early error. info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.1.0 + Unicode v16.0.0 esid: sec-isvalidregularexpressionliteral features: [regexp-unicode-property-escapes, regexp-v-flag] negative: diff --git a/test/built-ins/RegExp/property-escapes/generated/strings/RGI_Emoji_Modifier_Sequence-negative-P.js b/test/built-ins/RegExp/property-escapes/generated/strings/RGI_Emoji_Modifier_Sequence-negative-P.js index e28f7c2b09f..eb91663c985 100644 --- a/test/built-ins/RegExp/property-escapes/generated/strings/RGI_Emoji_Modifier_Sequence-negative-P.js +++ b/test/built-ins/RegExp/property-escapes/generated/strings/RGI_Emoji_Modifier_Sequence-negative-P.js @@ -7,7 +7,7 @@ description: > Negating Unicode property escapes for `RGI_Emoji_Modifier_Sequence` (property of strings) with `\P{…}` throws an early error. info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.1.0 + Unicode v16.0.0 esid: sec-isvalidregularexpressionliteral features: [regexp-unicode-property-escapes, regexp-v-flag] negative: diff --git a/test/built-ins/RegExp/property-escapes/generated/strings/RGI_Emoji_Modifier_Sequence-negative-u.js b/test/built-ins/RegExp/property-escapes/generated/strings/RGI_Emoji_Modifier_Sequence-negative-u.js index 59c9007cb20..e7d8b53ece4 100644 --- a/test/built-ins/RegExp/property-escapes/generated/strings/RGI_Emoji_Modifier_Sequence-negative-u.js +++ b/test/built-ins/RegExp/property-escapes/generated/strings/RGI_Emoji_Modifier_Sequence-negative-u.js @@ -7,7 +7,7 @@ description: > Unicode property escapes for `RGI_Emoji_Modifier_Sequence` (property of strings) with the `u` flag throws an early error. Properties of strings are only supported through the `v` flag. info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.1.0 + Unicode v16.0.0 esid: sec-patterns-static-semantics-early-errors features: [regexp-unicode-property-escapes, regexp-v-flag] negative: diff --git a/test/built-ins/RegExp/property-escapes/generated/strings/RGI_Emoji_Modifier_Sequence.js b/test/built-ins/RegExp/property-escapes/generated/strings/RGI_Emoji_Modifier_Sequence.js index 6ca8112326a..538966cffdc 100644 --- a/test/built-ins/RegExp/property-escapes/generated/strings/RGI_Emoji_Modifier_Sequence.js +++ b/test/built-ins/RegExp/property-escapes/generated/strings/RGI_Emoji_Modifier_Sequence.js @@ -7,7 +7,7 @@ description: > Unicode property escapes for `RGI_Emoji_Modifier_Sequence` (property of strings) info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.1.0 + Unicode v16.0.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes, regexp-v-flag] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/property-escapes/generated/strings/RGI_Emoji_Tag_Sequence-negative-CharacterClass.js b/test/built-ins/RegExp/property-escapes/generated/strings/RGI_Emoji_Tag_Sequence-negative-CharacterClass.js index 5bbc66b1229..c9180566729 100644 --- a/test/built-ins/RegExp/property-escapes/generated/strings/RGI_Emoji_Tag_Sequence-negative-CharacterClass.js +++ b/test/built-ins/RegExp/property-escapes/generated/strings/RGI_Emoji_Tag_Sequence-negative-CharacterClass.js @@ -7,7 +7,7 @@ description: > Negating Unicode property escapes for `RGI_Emoji_Tag_Sequence` (property of strings) with `[^\p{…}]` throws an early error. info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.1.0 + Unicode v16.0.0 esid: sec-isvalidregularexpressionliteral features: [regexp-unicode-property-escapes, regexp-v-flag] negative: diff --git a/test/built-ins/RegExp/property-escapes/generated/strings/RGI_Emoji_Tag_Sequence-negative-P.js b/test/built-ins/RegExp/property-escapes/generated/strings/RGI_Emoji_Tag_Sequence-negative-P.js index 1aa05b245c6..a2f6eb8cc5c 100644 --- a/test/built-ins/RegExp/property-escapes/generated/strings/RGI_Emoji_Tag_Sequence-negative-P.js +++ b/test/built-ins/RegExp/property-escapes/generated/strings/RGI_Emoji_Tag_Sequence-negative-P.js @@ -7,7 +7,7 @@ description: > Negating Unicode property escapes for `RGI_Emoji_Tag_Sequence` (property of strings) with `\P{…}` throws an early error. info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.1.0 + Unicode v16.0.0 esid: sec-isvalidregularexpressionliteral features: [regexp-unicode-property-escapes, regexp-v-flag] negative: diff --git a/test/built-ins/RegExp/property-escapes/generated/strings/RGI_Emoji_Tag_Sequence-negative-u.js b/test/built-ins/RegExp/property-escapes/generated/strings/RGI_Emoji_Tag_Sequence-negative-u.js index db8698d07b4..fdf93446e37 100644 --- a/test/built-ins/RegExp/property-escapes/generated/strings/RGI_Emoji_Tag_Sequence-negative-u.js +++ b/test/built-ins/RegExp/property-escapes/generated/strings/RGI_Emoji_Tag_Sequence-negative-u.js @@ -7,7 +7,7 @@ description: > Unicode property escapes for `RGI_Emoji_Tag_Sequence` (property of strings) with the `u` flag throws an early error. Properties of strings are only supported through the `v` flag. info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.1.0 + Unicode v16.0.0 esid: sec-patterns-static-semantics-early-errors features: [regexp-unicode-property-escapes, regexp-v-flag] negative: diff --git a/test/built-ins/RegExp/property-escapes/generated/strings/RGI_Emoji_Tag_Sequence.js b/test/built-ins/RegExp/property-escapes/generated/strings/RGI_Emoji_Tag_Sequence.js index 95b9945a1ad..4905497a028 100644 --- a/test/built-ins/RegExp/property-escapes/generated/strings/RGI_Emoji_Tag_Sequence.js +++ b/test/built-ins/RegExp/property-escapes/generated/strings/RGI_Emoji_Tag_Sequence.js @@ -7,7 +7,7 @@ description: > Unicode property escapes for `RGI_Emoji_Tag_Sequence` (property of strings) info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.1.0 + Unicode v16.0.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes, regexp-v-flag] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/property-escapes/generated/strings/RGI_Emoji_ZWJ_Sequence-negative-CharacterClass.js b/test/built-ins/RegExp/property-escapes/generated/strings/RGI_Emoji_ZWJ_Sequence-negative-CharacterClass.js index e08bf08c5bb..3790cac4dd5 100644 --- a/test/built-ins/RegExp/property-escapes/generated/strings/RGI_Emoji_ZWJ_Sequence-negative-CharacterClass.js +++ b/test/built-ins/RegExp/property-escapes/generated/strings/RGI_Emoji_ZWJ_Sequence-negative-CharacterClass.js @@ -7,7 +7,7 @@ description: > Negating Unicode property escapes for `RGI_Emoji_ZWJ_Sequence` (property of strings) with `[^\p{…}]` throws an early error. info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.1.0 + Unicode v16.0.0 esid: sec-isvalidregularexpressionliteral features: [regexp-unicode-property-escapes, regexp-v-flag] negative: diff --git a/test/built-ins/RegExp/property-escapes/generated/strings/RGI_Emoji_ZWJ_Sequence-negative-P.js b/test/built-ins/RegExp/property-escapes/generated/strings/RGI_Emoji_ZWJ_Sequence-negative-P.js index 613470be796..38630b8b94b 100644 --- a/test/built-ins/RegExp/property-escapes/generated/strings/RGI_Emoji_ZWJ_Sequence-negative-P.js +++ b/test/built-ins/RegExp/property-escapes/generated/strings/RGI_Emoji_ZWJ_Sequence-negative-P.js @@ -7,7 +7,7 @@ description: > Negating Unicode property escapes for `RGI_Emoji_ZWJ_Sequence` (property of strings) with `\P{…}` throws an early error. info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.1.0 + Unicode v16.0.0 esid: sec-isvalidregularexpressionliteral features: [regexp-unicode-property-escapes, regexp-v-flag] negative: diff --git a/test/built-ins/RegExp/property-escapes/generated/strings/RGI_Emoji_ZWJ_Sequence-negative-u.js b/test/built-ins/RegExp/property-escapes/generated/strings/RGI_Emoji_ZWJ_Sequence-negative-u.js index 7c01ccf46b9..705386b8633 100644 --- a/test/built-ins/RegExp/property-escapes/generated/strings/RGI_Emoji_ZWJ_Sequence-negative-u.js +++ b/test/built-ins/RegExp/property-escapes/generated/strings/RGI_Emoji_ZWJ_Sequence-negative-u.js @@ -7,7 +7,7 @@ description: > Unicode property escapes for `RGI_Emoji_ZWJ_Sequence` (property of strings) with the `u` flag throws an early error. Properties of strings are only supported through the `v` flag. info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.1.0 + Unicode v16.0.0 esid: sec-patterns-static-semantics-early-errors features: [regexp-unicode-property-escapes, regexp-v-flag] negative: diff --git a/test/built-ins/RegExp/property-escapes/generated/strings/RGI_Emoji_ZWJ_Sequence.js b/test/built-ins/RegExp/property-escapes/generated/strings/RGI_Emoji_ZWJ_Sequence.js index b104c385d40..9fa0c3617e4 100644 --- a/test/built-ins/RegExp/property-escapes/generated/strings/RGI_Emoji_ZWJ_Sequence.js +++ b/test/built-ins/RegExp/property-escapes/generated/strings/RGI_Emoji_ZWJ_Sequence.js @@ -7,7 +7,7 @@ description: > Unicode property escapes for `RGI_Emoji_ZWJ_Sequence` (property of strings) info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v15.1.0 + Unicode v16.0.0 esid: sec-static-semantics-unicodematchproperty-p features: [regexp-unicode-property-escapes, regexp-v-flag] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/prototype/exec/regexp-builtin-exec-v-flag.js b/test/built-ins/RegExp/prototype/exec/regexp-builtin-exec-v-flag.js new file mode 100644 index 00000000000..f326e5692cd --- /dev/null +++ b/test/built-ins/RegExp/prototype/exec/regexp-builtin-exec-v-flag.js @@ -0,0 +1,27 @@ +// Copyright (C) 2024 Tan Meng. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. +/*--- +esid: sec-regexpbuiltinexec +description: RegExpBuiltinExec behavior with 'v' flag +features: [regexp-v-flag] +includes: [compareArray.js] +---*/ + +const text = '𠮷a𠮷b𠮷'; + +function doExec(regex) { + const result = regex.exec(text); + return result ? [result[0], result.index] : null; +} + +assert.compareArray(doExec(/𠮷/), ["𠮷", 0], "Basic exec without v flag"); +assert.compareArray(doExec(/𠮷/v), ["𠮷", 0], "Exec with v flag"); +assert.compareArray(doExec(/\p{Script=Han}/v), ["𠮷", 0], "Unicode property escapes with v flag"); +assert.compareArray(doExec(/./v), ["𠮷", 0], "Dot with v flag"); +assert.sameValue(doExec(/x/v), null, "Non-matching regex"); + +const regexWithGroups = /(\p{Script=Han})(.)/v; +const resultWithGroups = regexWithGroups.exec(text); +assert.sameValue(resultWithGroups[1], "𠮷", "Capture group 1"); +assert.sameValue(resultWithGroups[2], "a", "Capture group 2"); +assert.sameValue(resultWithGroups.index, 0, "Match index for groups"); diff --git a/test/built-ins/RegExp/unicodeSets/generated/character-class-difference-character-class-escape.js b/test/built-ins/RegExp/unicodeSets/generated/character-class-difference-character-class-escape.js index 8986d6f7ea0..a096709db0b 100644 --- a/test/built-ins/RegExp/unicodeSets/generated/character-class-difference-character-class-escape.js +++ b/test/built-ins/RegExp/unicodeSets/generated/character-class-difference-character-class-escape.js @@ -1,4 +1,4 @@ -// Copyright 2022 Mathias Bynens. All rights reserved. +// Copyright 2024 Mathias Bynens. All rights reserved. // This code is governed by the BSD license found in the LICENSE file. /*--- @@ -8,7 +8,7 @@ description: > properties of strings, string literals, and set operations info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v14.0.0 + Unicode v16.0.0 esid: sec-patterns features: [regexp-v-flag] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/unicodeSets/generated/character-class-difference-character-class.js b/test/built-ins/RegExp/unicodeSets/generated/character-class-difference-character-class.js index fabeaeff185..93a1593a10a 100644 --- a/test/built-ins/RegExp/unicodeSets/generated/character-class-difference-character-class.js +++ b/test/built-ins/RegExp/unicodeSets/generated/character-class-difference-character-class.js @@ -1,4 +1,4 @@ -// Copyright 2022 Mathias Bynens. All rights reserved. +// Copyright 2024 Mathias Bynens. All rights reserved. // This code is governed by the BSD license found in the LICENSE file. /*--- @@ -8,7 +8,7 @@ description: > properties of strings, string literals, and set operations info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v14.0.0 + Unicode v16.0.0 esid: sec-patterns features: [regexp-v-flag] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/unicodeSets/generated/character-class-difference-character-property-escape.js b/test/built-ins/RegExp/unicodeSets/generated/character-class-difference-character-property-escape.js index 01e89d2627a..ca52f9474cc 100644 --- a/test/built-ins/RegExp/unicodeSets/generated/character-class-difference-character-property-escape.js +++ b/test/built-ins/RegExp/unicodeSets/generated/character-class-difference-character-property-escape.js @@ -1,4 +1,4 @@ -// Copyright 2022 Mathias Bynens. All rights reserved. +// Copyright 2024 Mathias Bynens. All rights reserved. // This code is governed by the BSD license found in the LICENSE file. /*--- @@ -8,7 +8,7 @@ description: > properties of strings, string literals, and set operations info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v14.0.0 + Unicode v16.0.0 esid: sec-patterns features: [regexp-unicode-property-escapes, regexp-v-flag] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/unicodeSets/generated/character-class-difference-character.js b/test/built-ins/RegExp/unicodeSets/generated/character-class-difference-character.js index 600d7a26e0d..c040aadcd13 100644 --- a/test/built-ins/RegExp/unicodeSets/generated/character-class-difference-character.js +++ b/test/built-ins/RegExp/unicodeSets/generated/character-class-difference-character.js @@ -1,4 +1,4 @@ -// Copyright 2022 Mathias Bynens. All rights reserved. +// Copyright 2024 Mathias Bynens. All rights reserved. // This code is governed by the BSD license found in the LICENSE file. /*--- @@ -8,7 +8,7 @@ description: > properties of strings, string literals, and set operations info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v14.0.0 + Unicode v16.0.0 esid: sec-patterns features: [regexp-v-flag] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/unicodeSets/generated/character-class-difference-property-of-strings-escape.js b/test/built-ins/RegExp/unicodeSets/generated/character-class-difference-property-of-strings-escape.js index 274d1c8216a..f90eca1cc20 100644 --- a/test/built-ins/RegExp/unicodeSets/generated/character-class-difference-property-of-strings-escape.js +++ b/test/built-ins/RegExp/unicodeSets/generated/character-class-difference-property-of-strings-escape.js @@ -1,4 +1,4 @@ -// Copyright 2022 Mathias Bynens. All rights reserved. +// Copyright 2024 Mathias Bynens. All rights reserved. // This code is governed by the BSD license found in the LICENSE file. /*--- @@ -8,7 +8,7 @@ description: > properties of strings, string literals, and set operations info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v14.0.0 + Unicode v16.0.0 esid: sec-patterns features: [regexp-unicode-property-escapes, regexp-v-flag] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/unicodeSets/generated/character-class-difference-string-literal.js b/test/built-ins/RegExp/unicodeSets/generated/character-class-difference-string-literal.js index c04f00099b4..d76cc581de7 100644 --- a/test/built-ins/RegExp/unicodeSets/generated/character-class-difference-string-literal.js +++ b/test/built-ins/RegExp/unicodeSets/generated/character-class-difference-string-literal.js @@ -1,4 +1,4 @@ -// Copyright 2022 Mathias Bynens. All rights reserved. +// Copyright 2024 Mathias Bynens. All rights reserved. // This code is governed by the BSD license found in the LICENSE file. /*--- @@ -8,7 +8,7 @@ description: > properties of strings, string literals, and set operations info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v14.0.0 + Unicode v16.0.0 esid: sec-patterns features: [regexp-v-flag] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/unicodeSets/generated/character-class-escape-difference-character-class-escape.js b/test/built-ins/RegExp/unicodeSets/generated/character-class-escape-difference-character-class-escape.js index 5d8f873df09..8081ef92d7b 100644 --- a/test/built-ins/RegExp/unicodeSets/generated/character-class-escape-difference-character-class-escape.js +++ b/test/built-ins/RegExp/unicodeSets/generated/character-class-escape-difference-character-class-escape.js @@ -1,4 +1,4 @@ -// Copyright 2022 Mathias Bynens. All rights reserved. +// Copyright 2024 Mathias Bynens. All rights reserved. // This code is governed by the BSD license found in the LICENSE file. /*--- @@ -8,7 +8,7 @@ description: > properties of strings, string literals, and set operations info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v14.0.0 + Unicode v16.0.0 esid: sec-patterns features: [regexp-v-flag] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/unicodeSets/generated/character-class-escape-difference-character-class.js b/test/built-ins/RegExp/unicodeSets/generated/character-class-escape-difference-character-class.js index c3536a315e6..69f9e3e4836 100644 --- a/test/built-ins/RegExp/unicodeSets/generated/character-class-escape-difference-character-class.js +++ b/test/built-ins/RegExp/unicodeSets/generated/character-class-escape-difference-character-class.js @@ -1,4 +1,4 @@ -// Copyright 2022 Mathias Bynens. All rights reserved. +// Copyright 2024 Mathias Bynens. All rights reserved. // This code is governed by the BSD license found in the LICENSE file. /*--- @@ -8,7 +8,7 @@ description: > properties of strings, string literals, and set operations info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v14.0.0 + Unicode v16.0.0 esid: sec-patterns features: [regexp-v-flag] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/unicodeSets/generated/character-class-escape-difference-character-property-escape.js b/test/built-ins/RegExp/unicodeSets/generated/character-class-escape-difference-character-property-escape.js index ca42de791d2..cd5a490873a 100644 --- a/test/built-ins/RegExp/unicodeSets/generated/character-class-escape-difference-character-property-escape.js +++ b/test/built-ins/RegExp/unicodeSets/generated/character-class-escape-difference-character-property-escape.js @@ -1,4 +1,4 @@ -// Copyright 2022 Mathias Bynens. All rights reserved. +// Copyright 2024 Mathias Bynens. All rights reserved. // This code is governed by the BSD license found in the LICENSE file. /*--- @@ -8,7 +8,7 @@ description: > properties of strings, string literals, and set operations info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v14.0.0 + Unicode v16.0.0 esid: sec-patterns features: [regexp-unicode-property-escapes, regexp-v-flag] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/unicodeSets/generated/character-class-escape-difference-character.js b/test/built-ins/RegExp/unicodeSets/generated/character-class-escape-difference-character.js index 3dd4fd090f5..7fcbdb6481f 100644 --- a/test/built-ins/RegExp/unicodeSets/generated/character-class-escape-difference-character.js +++ b/test/built-ins/RegExp/unicodeSets/generated/character-class-escape-difference-character.js @@ -1,4 +1,4 @@ -// Copyright 2022 Mathias Bynens. All rights reserved. +// Copyright 2024 Mathias Bynens. All rights reserved. // This code is governed by the BSD license found in the LICENSE file. /*--- @@ -8,7 +8,7 @@ description: > properties of strings, string literals, and set operations info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v14.0.0 + Unicode v16.0.0 esid: sec-patterns features: [regexp-v-flag] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/unicodeSets/generated/character-class-escape-difference-property-of-strings-escape.js b/test/built-ins/RegExp/unicodeSets/generated/character-class-escape-difference-property-of-strings-escape.js index 915aed34294..1716ef814aa 100644 --- a/test/built-ins/RegExp/unicodeSets/generated/character-class-escape-difference-property-of-strings-escape.js +++ b/test/built-ins/RegExp/unicodeSets/generated/character-class-escape-difference-property-of-strings-escape.js @@ -1,4 +1,4 @@ -// Copyright 2022 Mathias Bynens. All rights reserved. +// Copyright 2024 Mathias Bynens. All rights reserved. // This code is governed by the BSD license found in the LICENSE file. /*--- @@ -8,7 +8,7 @@ description: > properties of strings, string literals, and set operations info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v14.0.0 + Unicode v16.0.0 esid: sec-patterns features: [regexp-unicode-property-escapes, regexp-v-flag] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/unicodeSets/generated/character-class-escape-difference-string-literal.js b/test/built-ins/RegExp/unicodeSets/generated/character-class-escape-difference-string-literal.js index 9a135820c0d..367b50999e7 100644 --- a/test/built-ins/RegExp/unicodeSets/generated/character-class-escape-difference-string-literal.js +++ b/test/built-ins/RegExp/unicodeSets/generated/character-class-escape-difference-string-literal.js @@ -1,4 +1,4 @@ -// Copyright 2022 Mathias Bynens. All rights reserved. +// Copyright 2024 Mathias Bynens. All rights reserved. // This code is governed by the BSD license found in the LICENSE file. /*--- @@ -8,7 +8,7 @@ description: > properties of strings, string literals, and set operations info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v14.0.0 + Unicode v16.0.0 esid: sec-patterns features: [regexp-v-flag] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/unicodeSets/generated/character-class-escape-intersection-character-class-escape.js b/test/built-ins/RegExp/unicodeSets/generated/character-class-escape-intersection-character-class-escape.js index e88c1834179..180f1add830 100644 --- a/test/built-ins/RegExp/unicodeSets/generated/character-class-escape-intersection-character-class-escape.js +++ b/test/built-ins/RegExp/unicodeSets/generated/character-class-escape-intersection-character-class-escape.js @@ -1,4 +1,4 @@ -// Copyright 2022 Mathias Bynens. All rights reserved. +// Copyright 2024 Mathias Bynens. All rights reserved. // This code is governed by the BSD license found in the LICENSE file. /*--- @@ -8,7 +8,7 @@ description: > properties of strings, string literals, and set operations info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v14.0.0 + Unicode v16.0.0 esid: sec-patterns features: [regexp-v-flag] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/unicodeSets/generated/character-class-escape-intersection-character-class.js b/test/built-ins/RegExp/unicodeSets/generated/character-class-escape-intersection-character-class.js index 8b3d9e059a0..bb7e07354f7 100644 --- a/test/built-ins/RegExp/unicodeSets/generated/character-class-escape-intersection-character-class.js +++ b/test/built-ins/RegExp/unicodeSets/generated/character-class-escape-intersection-character-class.js @@ -1,4 +1,4 @@ -// Copyright 2022 Mathias Bynens. All rights reserved. +// Copyright 2024 Mathias Bynens. All rights reserved. // This code is governed by the BSD license found in the LICENSE file. /*--- @@ -8,7 +8,7 @@ description: > properties of strings, string literals, and set operations info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v14.0.0 + Unicode v16.0.0 esid: sec-patterns features: [regexp-v-flag] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/unicodeSets/generated/character-class-escape-intersection-character-property-escape.js b/test/built-ins/RegExp/unicodeSets/generated/character-class-escape-intersection-character-property-escape.js index 63eb68b160c..0618f3e2fdf 100644 --- a/test/built-ins/RegExp/unicodeSets/generated/character-class-escape-intersection-character-property-escape.js +++ b/test/built-ins/RegExp/unicodeSets/generated/character-class-escape-intersection-character-property-escape.js @@ -1,4 +1,4 @@ -// Copyright 2022 Mathias Bynens. All rights reserved. +// Copyright 2024 Mathias Bynens. All rights reserved. // This code is governed by the BSD license found in the LICENSE file. /*--- @@ -8,7 +8,7 @@ description: > properties of strings, string literals, and set operations info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v14.0.0 + Unicode v16.0.0 esid: sec-patterns features: [regexp-unicode-property-escapes, regexp-v-flag] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/unicodeSets/generated/character-class-escape-intersection-character.js b/test/built-ins/RegExp/unicodeSets/generated/character-class-escape-intersection-character.js index 1c21e461e99..cd017ffc8bc 100644 --- a/test/built-ins/RegExp/unicodeSets/generated/character-class-escape-intersection-character.js +++ b/test/built-ins/RegExp/unicodeSets/generated/character-class-escape-intersection-character.js @@ -1,4 +1,4 @@ -// Copyright 2022 Mathias Bynens. All rights reserved. +// Copyright 2024 Mathias Bynens. All rights reserved. // This code is governed by the BSD license found in the LICENSE file. /*--- @@ -8,7 +8,7 @@ description: > properties of strings, string literals, and set operations info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v14.0.0 + Unicode v16.0.0 esid: sec-patterns features: [regexp-v-flag] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/unicodeSets/generated/character-class-escape-intersection-property-of-strings-escape.js b/test/built-ins/RegExp/unicodeSets/generated/character-class-escape-intersection-property-of-strings-escape.js index ec38cc3a55d..f658e996785 100644 --- a/test/built-ins/RegExp/unicodeSets/generated/character-class-escape-intersection-property-of-strings-escape.js +++ b/test/built-ins/RegExp/unicodeSets/generated/character-class-escape-intersection-property-of-strings-escape.js @@ -1,4 +1,4 @@ -// Copyright 2022 Mathias Bynens. All rights reserved. +// Copyright 2024 Mathias Bynens. All rights reserved. // This code is governed by the BSD license found in the LICENSE file. /*--- @@ -8,7 +8,7 @@ description: > properties of strings, string literals, and set operations info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v14.0.0 + Unicode v16.0.0 esid: sec-patterns features: [regexp-unicode-property-escapes, regexp-v-flag] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/unicodeSets/generated/character-class-escape-intersection-string-literal.js b/test/built-ins/RegExp/unicodeSets/generated/character-class-escape-intersection-string-literal.js index 8982a8dc34e..583e5001ed6 100644 --- a/test/built-ins/RegExp/unicodeSets/generated/character-class-escape-intersection-string-literal.js +++ b/test/built-ins/RegExp/unicodeSets/generated/character-class-escape-intersection-string-literal.js @@ -1,4 +1,4 @@ -// Copyright 2022 Mathias Bynens. All rights reserved. +// Copyright 2024 Mathias Bynens. All rights reserved. // This code is governed by the BSD license found in the LICENSE file. /*--- @@ -8,7 +8,7 @@ description: > properties of strings, string literals, and set operations info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v14.0.0 + Unicode v16.0.0 esid: sec-patterns features: [regexp-v-flag] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/unicodeSets/generated/character-class-escape-union-character-class-escape.js b/test/built-ins/RegExp/unicodeSets/generated/character-class-escape-union-character-class-escape.js index d355d6304d3..caa3bbdf56e 100644 --- a/test/built-ins/RegExp/unicodeSets/generated/character-class-escape-union-character-class-escape.js +++ b/test/built-ins/RegExp/unicodeSets/generated/character-class-escape-union-character-class-escape.js @@ -1,4 +1,4 @@ -// Copyright 2022 Mathias Bynens. All rights reserved. +// Copyright 2024 Mathias Bynens. All rights reserved. // This code is governed by the BSD license found in the LICENSE file. /*--- @@ -8,7 +8,7 @@ description: > properties of strings, string literals, and set operations info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v14.0.0 + Unicode v16.0.0 esid: sec-patterns features: [regexp-v-flag] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/unicodeSets/generated/character-class-escape-union-character-class.js b/test/built-ins/RegExp/unicodeSets/generated/character-class-escape-union-character-class.js index 0bd596ad58c..60a613570f8 100644 --- a/test/built-ins/RegExp/unicodeSets/generated/character-class-escape-union-character-class.js +++ b/test/built-ins/RegExp/unicodeSets/generated/character-class-escape-union-character-class.js @@ -1,4 +1,4 @@ -// Copyright 2022 Mathias Bynens. All rights reserved. +// Copyright 2024 Mathias Bynens. All rights reserved. // This code is governed by the BSD license found in the LICENSE file. /*--- @@ -8,7 +8,7 @@ description: > properties of strings, string literals, and set operations info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v14.0.0 + Unicode v16.0.0 esid: sec-patterns features: [regexp-v-flag] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/unicodeSets/generated/character-class-escape-union-character-property-escape.js b/test/built-ins/RegExp/unicodeSets/generated/character-class-escape-union-character-property-escape.js index 04bc5f2e378..edac97ad4af 100644 --- a/test/built-ins/RegExp/unicodeSets/generated/character-class-escape-union-character-property-escape.js +++ b/test/built-ins/RegExp/unicodeSets/generated/character-class-escape-union-character-property-escape.js @@ -1,4 +1,4 @@ -// Copyright 2022 Mathias Bynens. All rights reserved. +// Copyright 2024 Mathias Bynens. All rights reserved. // This code is governed by the BSD license found in the LICENSE file. /*--- @@ -8,7 +8,7 @@ description: > properties of strings, string literals, and set operations info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v14.0.0 + Unicode v16.0.0 esid: sec-patterns features: [regexp-unicode-property-escapes, regexp-v-flag] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/unicodeSets/generated/character-class-escape-union-character.js b/test/built-ins/RegExp/unicodeSets/generated/character-class-escape-union-character.js index 6c35369600e..5d24d7ae07c 100644 --- a/test/built-ins/RegExp/unicodeSets/generated/character-class-escape-union-character.js +++ b/test/built-ins/RegExp/unicodeSets/generated/character-class-escape-union-character.js @@ -1,4 +1,4 @@ -// Copyright 2022 Mathias Bynens. All rights reserved. +// Copyright 2024 Mathias Bynens. All rights reserved. // This code is governed by the BSD license found in the LICENSE file. /*--- @@ -8,7 +8,7 @@ description: > properties of strings, string literals, and set operations info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v14.0.0 + Unicode v16.0.0 esid: sec-patterns features: [regexp-v-flag] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/unicodeSets/generated/character-class-escape-union-property-of-strings-escape.js b/test/built-ins/RegExp/unicodeSets/generated/character-class-escape-union-property-of-strings-escape.js index 8b03022f851..f1165ec1bdc 100644 --- a/test/built-ins/RegExp/unicodeSets/generated/character-class-escape-union-property-of-strings-escape.js +++ b/test/built-ins/RegExp/unicodeSets/generated/character-class-escape-union-property-of-strings-escape.js @@ -1,4 +1,4 @@ -// Copyright 2022 Mathias Bynens. All rights reserved. +// Copyright 2024 Mathias Bynens. All rights reserved. // This code is governed by the BSD license found in the LICENSE file. /*--- @@ -8,7 +8,7 @@ description: > properties of strings, string literals, and set operations info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v14.0.0 + Unicode v16.0.0 esid: sec-patterns features: [regexp-unicode-property-escapes, regexp-v-flag] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/unicodeSets/generated/character-class-escape-union-string-literal.js b/test/built-ins/RegExp/unicodeSets/generated/character-class-escape-union-string-literal.js index 8c91776cefd..e53ea832f29 100644 --- a/test/built-ins/RegExp/unicodeSets/generated/character-class-escape-union-string-literal.js +++ b/test/built-ins/RegExp/unicodeSets/generated/character-class-escape-union-string-literal.js @@ -1,4 +1,4 @@ -// Copyright 2022 Mathias Bynens. All rights reserved. +// Copyright 2024 Mathias Bynens. All rights reserved. // This code is governed by the BSD license found in the LICENSE file. /*--- @@ -8,7 +8,7 @@ description: > properties of strings, string literals, and set operations info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v14.0.0 + Unicode v16.0.0 esid: sec-patterns features: [regexp-v-flag] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/unicodeSets/generated/character-class-intersection-character-class-escape.js b/test/built-ins/RegExp/unicodeSets/generated/character-class-intersection-character-class-escape.js index b41b660ca60..5ebabf53f85 100644 --- a/test/built-ins/RegExp/unicodeSets/generated/character-class-intersection-character-class-escape.js +++ b/test/built-ins/RegExp/unicodeSets/generated/character-class-intersection-character-class-escape.js @@ -1,4 +1,4 @@ -// Copyright 2022 Mathias Bynens. All rights reserved. +// Copyright 2024 Mathias Bynens. All rights reserved. // This code is governed by the BSD license found in the LICENSE file. /*--- @@ -8,7 +8,7 @@ description: > properties of strings, string literals, and set operations info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v14.0.0 + Unicode v16.0.0 esid: sec-patterns features: [regexp-v-flag] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/unicodeSets/generated/character-class-intersection-character-class.js b/test/built-ins/RegExp/unicodeSets/generated/character-class-intersection-character-class.js index f9644d6a8e5..90a3a709117 100644 --- a/test/built-ins/RegExp/unicodeSets/generated/character-class-intersection-character-class.js +++ b/test/built-ins/RegExp/unicodeSets/generated/character-class-intersection-character-class.js @@ -1,4 +1,4 @@ -// Copyright 2022 Mathias Bynens. All rights reserved. +// Copyright 2024 Mathias Bynens. All rights reserved. // This code is governed by the BSD license found in the LICENSE file. /*--- @@ -8,7 +8,7 @@ description: > properties of strings, string literals, and set operations info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v14.0.0 + Unicode v16.0.0 esid: sec-patterns features: [regexp-v-flag] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/unicodeSets/generated/character-class-intersection-character-property-escape.js b/test/built-ins/RegExp/unicodeSets/generated/character-class-intersection-character-property-escape.js index b0c42376166..7556c34eccd 100644 --- a/test/built-ins/RegExp/unicodeSets/generated/character-class-intersection-character-property-escape.js +++ b/test/built-ins/RegExp/unicodeSets/generated/character-class-intersection-character-property-escape.js @@ -1,4 +1,4 @@ -// Copyright 2022 Mathias Bynens. All rights reserved. +// Copyright 2024 Mathias Bynens. All rights reserved. // This code is governed by the BSD license found in the LICENSE file. /*--- @@ -8,7 +8,7 @@ description: > properties of strings, string literals, and set operations info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v14.0.0 + Unicode v16.0.0 esid: sec-patterns features: [regexp-unicode-property-escapes, regexp-v-flag] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/unicodeSets/generated/character-class-intersection-character.js b/test/built-ins/RegExp/unicodeSets/generated/character-class-intersection-character.js index b9b04575503..82133a0b5fd 100644 --- a/test/built-ins/RegExp/unicodeSets/generated/character-class-intersection-character.js +++ b/test/built-ins/RegExp/unicodeSets/generated/character-class-intersection-character.js @@ -1,4 +1,4 @@ -// Copyright 2022 Mathias Bynens. All rights reserved. +// Copyright 2024 Mathias Bynens. All rights reserved. // This code is governed by the BSD license found in the LICENSE file. /*--- @@ -8,7 +8,7 @@ description: > properties of strings, string literals, and set operations info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v14.0.0 + Unicode v16.0.0 esid: sec-patterns features: [regexp-v-flag] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/unicodeSets/generated/character-class-intersection-property-of-strings-escape.js b/test/built-ins/RegExp/unicodeSets/generated/character-class-intersection-property-of-strings-escape.js index e96d96c2162..6d047c37cda 100644 --- a/test/built-ins/RegExp/unicodeSets/generated/character-class-intersection-property-of-strings-escape.js +++ b/test/built-ins/RegExp/unicodeSets/generated/character-class-intersection-property-of-strings-escape.js @@ -1,4 +1,4 @@ -// Copyright 2022 Mathias Bynens. All rights reserved. +// Copyright 2024 Mathias Bynens. All rights reserved. // This code is governed by the BSD license found in the LICENSE file. /*--- @@ -8,7 +8,7 @@ description: > properties of strings, string literals, and set operations info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v14.0.0 + Unicode v16.0.0 esid: sec-patterns features: [regexp-unicode-property-escapes, regexp-v-flag] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/unicodeSets/generated/character-class-intersection-string-literal.js b/test/built-ins/RegExp/unicodeSets/generated/character-class-intersection-string-literal.js index 6593a49558d..59877d68cd9 100644 --- a/test/built-ins/RegExp/unicodeSets/generated/character-class-intersection-string-literal.js +++ b/test/built-ins/RegExp/unicodeSets/generated/character-class-intersection-string-literal.js @@ -1,4 +1,4 @@ -// Copyright 2022 Mathias Bynens. All rights reserved. +// Copyright 2024 Mathias Bynens. All rights reserved. // This code is governed by the BSD license found in the LICENSE file. /*--- @@ -8,7 +8,7 @@ description: > properties of strings, string literals, and set operations info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v14.0.0 + Unicode v16.0.0 esid: sec-patterns features: [regexp-v-flag] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/unicodeSets/generated/character-class-union-character-class-escape.js b/test/built-ins/RegExp/unicodeSets/generated/character-class-union-character-class-escape.js index 98928749c74..c184e59f86c 100644 --- a/test/built-ins/RegExp/unicodeSets/generated/character-class-union-character-class-escape.js +++ b/test/built-ins/RegExp/unicodeSets/generated/character-class-union-character-class-escape.js @@ -1,4 +1,4 @@ -// Copyright 2022 Mathias Bynens. All rights reserved. +// Copyright 2024 Mathias Bynens. All rights reserved. // This code is governed by the BSD license found in the LICENSE file. /*--- @@ -8,7 +8,7 @@ description: > properties of strings, string literals, and set operations info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v14.0.0 + Unicode v16.0.0 esid: sec-patterns features: [regexp-v-flag] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/unicodeSets/generated/character-class-union-character-class.js b/test/built-ins/RegExp/unicodeSets/generated/character-class-union-character-class.js index e2bed018c99..8228f853727 100644 --- a/test/built-ins/RegExp/unicodeSets/generated/character-class-union-character-class.js +++ b/test/built-ins/RegExp/unicodeSets/generated/character-class-union-character-class.js @@ -1,4 +1,4 @@ -// Copyright 2022 Mathias Bynens. All rights reserved. +// Copyright 2024 Mathias Bynens. All rights reserved. // This code is governed by the BSD license found in the LICENSE file. /*--- @@ -8,7 +8,7 @@ description: > properties of strings, string literals, and set operations info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v14.0.0 + Unicode v16.0.0 esid: sec-patterns features: [regexp-v-flag] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/unicodeSets/generated/character-class-union-character-property-escape.js b/test/built-ins/RegExp/unicodeSets/generated/character-class-union-character-property-escape.js index 1b5ecd67c9f..9790fdb7615 100644 --- a/test/built-ins/RegExp/unicodeSets/generated/character-class-union-character-property-escape.js +++ b/test/built-ins/RegExp/unicodeSets/generated/character-class-union-character-property-escape.js @@ -1,4 +1,4 @@ -// Copyright 2022 Mathias Bynens. All rights reserved. +// Copyright 2024 Mathias Bynens. All rights reserved. // This code is governed by the BSD license found in the LICENSE file. /*--- @@ -8,7 +8,7 @@ description: > properties of strings, string literals, and set operations info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v14.0.0 + Unicode v16.0.0 esid: sec-patterns features: [regexp-unicode-property-escapes, regexp-v-flag] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/unicodeSets/generated/character-class-union-character.js b/test/built-ins/RegExp/unicodeSets/generated/character-class-union-character.js index 0d42ecbbdcd..b7f97c2eede 100644 --- a/test/built-ins/RegExp/unicodeSets/generated/character-class-union-character.js +++ b/test/built-ins/RegExp/unicodeSets/generated/character-class-union-character.js @@ -1,4 +1,4 @@ -// Copyright 2022 Mathias Bynens. All rights reserved. +// Copyright 2024 Mathias Bynens. All rights reserved. // This code is governed by the BSD license found in the LICENSE file. /*--- @@ -8,7 +8,7 @@ description: > properties of strings, string literals, and set operations info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v14.0.0 + Unicode v16.0.0 esid: sec-patterns features: [regexp-v-flag] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/unicodeSets/generated/character-class-union-property-of-strings-escape.js b/test/built-ins/RegExp/unicodeSets/generated/character-class-union-property-of-strings-escape.js index 4fff7123f41..a02ded5b0fd 100644 --- a/test/built-ins/RegExp/unicodeSets/generated/character-class-union-property-of-strings-escape.js +++ b/test/built-ins/RegExp/unicodeSets/generated/character-class-union-property-of-strings-escape.js @@ -1,4 +1,4 @@ -// Copyright 2022 Mathias Bynens. All rights reserved. +// Copyright 2024 Mathias Bynens. All rights reserved. // This code is governed by the BSD license found in the LICENSE file. /*--- @@ -8,7 +8,7 @@ description: > properties of strings, string literals, and set operations info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v14.0.0 + Unicode v16.0.0 esid: sec-patterns features: [regexp-unicode-property-escapes, regexp-v-flag] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/unicodeSets/generated/character-class-union-string-literal.js b/test/built-ins/RegExp/unicodeSets/generated/character-class-union-string-literal.js index 68c78bdc0c2..a14fbb3438e 100644 --- a/test/built-ins/RegExp/unicodeSets/generated/character-class-union-string-literal.js +++ b/test/built-ins/RegExp/unicodeSets/generated/character-class-union-string-literal.js @@ -1,4 +1,4 @@ -// Copyright 2022 Mathias Bynens. All rights reserved. +// Copyright 2024 Mathias Bynens. All rights reserved. // This code is governed by the BSD license found in the LICENSE file. /*--- @@ -8,7 +8,7 @@ description: > properties of strings, string literals, and set operations info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v14.0.0 + Unicode v16.0.0 esid: sec-patterns features: [regexp-v-flag] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/unicodeSets/generated/character-difference-character-class-escape.js b/test/built-ins/RegExp/unicodeSets/generated/character-difference-character-class-escape.js index 183b6417e80..d0af7111588 100644 --- a/test/built-ins/RegExp/unicodeSets/generated/character-difference-character-class-escape.js +++ b/test/built-ins/RegExp/unicodeSets/generated/character-difference-character-class-escape.js @@ -1,4 +1,4 @@ -// Copyright 2022 Mathias Bynens. All rights reserved. +// Copyright 2024 Mathias Bynens. All rights reserved. // This code is governed by the BSD license found in the LICENSE file. /*--- @@ -8,7 +8,7 @@ description: > properties of strings, string literals, and set operations info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v14.0.0 + Unicode v16.0.0 esid: sec-patterns features: [regexp-v-flag] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/unicodeSets/generated/character-difference-character-class.js b/test/built-ins/RegExp/unicodeSets/generated/character-difference-character-class.js index 2d493a8db20..54dbd7d958a 100644 --- a/test/built-ins/RegExp/unicodeSets/generated/character-difference-character-class.js +++ b/test/built-ins/RegExp/unicodeSets/generated/character-difference-character-class.js @@ -1,4 +1,4 @@ -// Copyright 2022 Mathias Bynens. All rights reserved. +// Copyright 2024 Mathias Bynens. All rights reserved. // This code is governed by the BSD license found in the LICENSE file. /*--- @@ -8,7 +8,7 @@ description: > properties of strings, string literals, and set operations info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v14.0.0 + Unicode v16.0.0 esid: sec-patterns features: [regexp-v-flag] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/unicodeSets/generated/character-difference-character-property-escape.js b/test/built-ins/RegExp/unicodeSets/generated/character-difference-character-property-escape.js index 5aead91732d..b0e8de7e44a 100644 --- a/test/built-ins/RegExp/unicodeSets/generated/character-difference-character-property-escape.js +++ b/test/built-ins/RegExp/unicodeSets/generated/character-difference-character-property-escape.js @@ -1,4 +1,4 @@ -// Copyright 2022 Mathias Bynens. All rights reserved. +// Copyright 2024 Mathias Bynens. All rights reserved. // This code is governed by the BSD license found in the LICENSE file. /*--- @@ -8,7 +8,7 @@ description: > properties of strings, string literals, and set operations info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v14.0.0 + Unicode v16.0.0 esid: sec-patterns features: [regexp-unicode-property-escapes, regexp-v-flag] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/unicodeSets/generated/character-difference-character.js b/test/built-ins/RegExp/unicodeSets/generated/character-difference-character.js index 273e7b0d8f1..804c3275208 100644 --- a/test/built-ins/RegExp/unicodeSets/generated/character-difference-character.js +++ b/test/built-ins/RegExp/unicodeSets/generated/character-difference-character.js @@ -1,4 +1,4 @@ -// Copyright 2022 Mathias Bynens. All rights reserved. +// Copyright 2024 Mathias Bynens. All rights reserved. // This code is governed by the BSD license found in the LICENSE file. /*--- @@ -8,7 +8,7 @@ description: > properties of strings, string literals, and set operations info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v14.0.0 + Unicode v16.0.0 esid: sec-patterns features: [regexp-v-flag] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/unicodeSets/generated/character-difference-property-of-strings-escape.js b/test/built-ins/RegExp/unicodeSets/generated/character-difference-property-of-strings-escape.js index ddec1d20c4b..df8f42e8311 100644 --- a/test/built-ins/RegExp/unicodeSets/generated/character-difference-property-of-strings-escape.js +++ b/test/built-ins/RegExp/unicodeSets/generated/character-difference-property-of-strings-escape.js @@ -1,4 +1,4 @@ -// Copyright 2022 Mathias Bynens. All rights reserved. +// Copyright 2024 Mathias Bynens. All rights reserved. // This code is governed by the BSD license found in the LICENSE file. /*--- @@ -8,7 +8,7 @@ description: > properties of strings, string literals, and set operations info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v14.0.0 + Unicode v16.0.0 esid: sec-patterns features: [regexp-unicode-property-escapes, regexp-v-flag] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/unicodeSets/generated/character-difference-string-literal.js b/test/built-ins/RegExp/unicodeSets/generated/character-difference-string-literal.js index cfc19d52d2c..029d3fe875a 100644 --- a/test/built-ins/RegExp/unicodeSets/generated/character-difference-string-literal.js +++ b/test/built-ins/RegExp/unicodeSets/generated/character-difference-string-literal.js @@ -1,4 +1,4 @@ -// Copyright 2022 Mathias Bynens. All rights reserved. +// Copyright 2024 Mathias Bynens. All rights reserved. // This code is governed by the BSD license found in the LICENSE file. /*--- @@ -8,7 +8,7 @@ description: > properties of strings, string literals, and set operations info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v14.0.0 + Unicode v16.0.0 esid: sec-patterns features: [regexp-v-flag] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/unicodeSets/generated/character-intersection-character-class-escape.js b/test/built-ins/RegExp/unicodeSets/generated/character-intersection-character-class-escape.js index 3aad2d0f730..21eadb46ed4 100644 --- a/test/built-ins/RegExp/unicodeSets/generated/character-intersection-character-class-escape.js +++ b/test/built-ins/RegExp/unicodeSets/generated/character-intersection-character-class-escape.js @@ -1,4 +1,4 @@ -// Copyright 2022 Mathias Bynens. All rights reserved. +// Copyright 2024 Mathias Bynens. All rights reserved. // This code is governed by the BSD license found in the LICENSE file. /*--- @@ -8,7 +8,7 @@ description: > properties of strings, string literals, and set operations info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v14.0.0 + Unicode v16.0.0 esid: sec-patterns features: [regexp-v-flag] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/unicodeSets/generated/character-intersection-character-class.js b/test/built-ins/RegExp/unicodeSets/generated/character-intersection-character-class.js index 94c6066b815..ed22886c1d9 100644 --- a/test/built-ins/RegExp/unicodeSets/generated/character-intersection-character-class.js +++ b/test/built-ins/RegExp/unicodeSets/generated/character-intersection-character-class.js @@ -1,4 +1,4 @@ -// Copyright 2022 Mathias Bynens. All rights reserved. +// Copyright 2024 Mathias Bynens. All rights reserved. // This code is governed by the BSD license found in the LICENSE file. /*--- @@ -8,7 +8,7 @@ description: > properties of strings, string literals, and set operations info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v14.0.0 + Unicode v16.0.0 esid: sec-patterns features: [regexp-v-flag] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/unicodeSets/generated/character-intersection-character-property-escape.js b/test/built-ins/RegExp/unicodeSets/generated/character-intersection-character-property-escape.js index 27ad5a101b8..867984a7b3e 100644 --- a/test/built-ins/RegExp/unicodeSets/generated/character-intersection-character-property-escape.js +++ b/test/built-ins/RegExp/unicodeSets/generated/character-intersection-character-property-escape.js @@ -1,4 +1,4 @@ -// Copyright 2022 Mathias Bynens. All rights reserved. +// Copyright 2024 Mathias Bynens. All rights reserved. // This code is governed by the BSD license found in the LICENSE file. /*--- @@ -8,7 +8,7 @@ description: > properties of strings, string literals, and set operations info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v14.0.0 + Unicode v16.0.0 esid: sec-patterns features: [regexp-unicode-property-escapes, regexp-v-flag] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/unicodeSets/generated/character-intersection-character.js b/test/built-ins/RegExp/unicodeSets/generated/character-intersection-character.js index d3020599b50..8165f483f18 100644 --- a/test/built-ins/RegExp/unicodeSets/generated/character-intersection-character.js +++ b/test/built-ins/RegExp/unicodeSets/generated/character-intersection-character.js @@ -1,4 +1,4 @@ -// Copyright 2022 Mathias Bynens. All rights reserved. +// Copyright 2024 Mathias Bynens. All rights reserved. // This code is governed by the BSD license found in the LICENSE file. /*--- @@ -8,7 +8,7 @@ description: > properties of strings, string literals, and set operations info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v14.0.0 + Unicode v16.0.0 esid: sec-patterns features: [regexp-v-flag] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/unicodeSets/generated/character-intersection-property-of-strings-escape.js b/test/built-ins/RegExp/unicodeSets/generated/character-intersection-property-of-strings-escape.js index ba1e87442cc..f3c072556ab 100644 --- a/test/built-ins/RegExp/unicodeSets/generated/character-intersection-property-of-strings-escape.js +++ b/test/built-ins/RegExp/unicodeSets/generated/character-intersection-property-of-strings-escape.js @@ -1,4 +1,4 @@ -// Copyright 2022 Mathias Bynens. All rights reserved. +// Copyright 2024 Mathias Bynens. All rights reserved. // This code is governed by the BSD license found in the LICENSE file. /*--- @@ -8,7 +8,7 @@ description: > properties of strings, string literals, and set operations info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v14.0.0 + Unicode v16.0.0 esid: sec-patterns features: [regexp-unicode-property-escapes, regexp-v-flag] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/unicodeSets/generated/character-intersection-string-literal.js b/test/built-ins/RegExp/unicodeSets/generated/character-intersection-string-literal.js index fe2db70fdc8..3fdb87b4141 100644 --- a/test/built-ins/RegExp/unicodeSets/generated/character-intersection-string-literal.js +++ b/test/built-ins/RegExp/unicodeSets/generated/character-intersection-string-literal.js @@ -1,4 +1,4 @@ -// Copyright 2022 Mathias Bynens. All rights reserved. +// Copyright 2024 Mathias Bynens. All rights reserved. // This code is governed by the BSD license found in the LICENSE file. /*--- @@ -8,7 +8,7 @@ description: > properties of strings, string literals, and set operations info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v14.0.0 + Unicode v16.0.0 esid: sec-patterns features: [regexp-v-flag] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/unicodeSets/generated/character-property-escape-difference-character-class-escape.js b/test/built-ins/RegExp/unicodeSets/generated/character-property-escape-difference-character-class-escape.js index e5964f542d0..22b0e6e2ae5 100644 --- a/test/built-ins/RegExp/unicodeSets/generated/character-property-escape-difference-character-class-escape.js +++ b/test/built-ins/RegExp/unicodeSets/generated/character-property-escape-difference-character-class-escape.js @@ -1,4 +1,4 @@ -// Copyright 2022 Mathias Bynens. All rights reserved. +// Copyright 2024 Mathias Bynens. All rights reserved. // This code is governed by the BSD license found in the LICENSE file. /*--- @@ -8,7 +8,7 @@ description: > properties of strings, string literals, and set operations info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v14.0.0 + Unicode v16.0.0 esid: sec-patterns features: [regexp-unicode-property-escapes, regexp-v-flag] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/unicodeSets/generated/character-property-escape-difference-character-class.js b/test/built-ins/RegExp/unicodeSets/generated/character-property-escape-difference-character-class.js index 79f0276ae43..1c9cfecec23 100644 --- a/test/built-ins/RegExp/unicodeSets/generated/character-property-escape-difference-character-class.js +++ b/test/built-ins/RegExp/unicodeSets/generated/character-property-escape-difference-character-class.js @@ -1,4 +1,4 @@ -// Copyright 2022 Mathias Bynens. All rights reserved. +// Copyright 2024 Mathias Bynens. All rights reserved. // This code is governed by the BSD license found in the LICENSE file. /*--- @@ -8,7 +8,7 @@ description: > properties of strings, string literals, and set operations info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v14.0.0 + Unicode v16.0.0 esid: sec-patterns features: [regexp-unicode-property-escapes, regexp-v-flag] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/unicodeSets/generated/character-property-escape-difference-character-property-escape.js b/test/built-ins/RegExp/unicodeSets/generated/character-property-escape-difference-character-property-escape.js index 7ca28be7bb3..7a63a0bdf1c 100644 --- a/test/built-ins/RegExp/unicodeSets/generated/character-property-escape-difference-character-property-escape.js +++ b/test/built-ins/RegExp/unicodeSets/generated/character-property-escape-difference-character-property-escape.js @@ -1,4 +1,4 @@ -// Copyright 2022 Mathias Bynens. All rights reserved. +// Copyright 2024 Mathias Bynens. All rights reserved. // This code is governed by the BSD license found in the LICENSE file. /*--- @@ -8,7 +8,7 @@ description: > properties of strings, string literals, and set operations info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v14.0.0 + Unicode v16.0.0 esid: sec-patterns features: [regexp-unicode-property-escapes, regexp-v-flag] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/unicodeSets/generated/character-property-escape-difference-character.js b/test/built-ins/RegExp/unicodeSets/generated/character-property-escape-difference-character.js index 6156bd15032..961a73c5599 100644 --- a/test/built-ins/RegExp/unicodeSets/generated/character-property-escape-difference-character.js +++ b/test/built-ins/RegExp/unicodeSets/generated/character-property-escape-difference-character.js @@ -1,4 +1,4 @@ -// Copyright 2022 Mathias Bynens. All rights reserved. +// Copyright 2024 Mathias Bynens. All rights reserved. // This code is governed by the BSD license found in the LICENSE file. /*--- @@ -8,7 +8,7 @@ description: > properties of strings, string literals, and set operations info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v14.0.0 + Unicode v16.0.0 esid: sec-patterns features: [regexp-unicode-property-escapes, regexp-v-flag] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/unicodeSets/generated/character-property-escape-difference-property-of-strings-escape.js b/test/built-ins/RegExp/unicodeSets/generated/character-property-escape-difference-property-of-strings-escape.js index a17a3d759ea..447016775b0 100644 --- a/test/built-ins/RegExp/unicodeSets/generated/character-property-escape-difference-property-of-strings-escape.js +++ b/test/built-ins/RegExp/unicodeSets/generated/character-property-escape-difference-property-of-strings-escape.js @@ -1,4 +1,4 @@ -// Copyright 2022 Mathias Bynens. All rights reserved. +// Copyright 2024 Mathias Bynens. All rights reserved. // This code is governed by the BSD license found in the LICENSE file. /*--- @@ -8,7 +8,7 @@ description: > properties of strings, string literals, and set operations info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v14.0.0 + Unicode v16.0.0 esid: sec-patterns features: [regexp-unicode-property-escapes, regexp-v-flag] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/unicodeSets/generated/character-property-escape-difference-string-literal.js b/test/built-ins/RegExp/unicodeSets/generated/character-property-escape-difference-string-literal.js index 4ad9cb97b08..caf06d0d45e 100644 --- a/test/built-ins/RegExp/unicodeSets/generated/character-property-escape-difference-string-literal.js +++ b/test/built-ins/RegExp/unicodeSets/generated/character-property-escape-difference-string-literal.js @@ -1,4 +1,4 @@ -// Copyright 2022 Mathias Bynens. All rights reserved. +// Copyright 2024 Mathias Bynens. All rights reserved. // This code is governed by the BSD license found in the LICENSE file. /*--- @@ -8,7 +8,7 @@ description: > properties of strings, string literals, and set operations info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v14.0.0 + Unicode v16.0.0 esid: sec-patterns features: [regexp-unicode-property-escapes, regexp-v-flag] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/unicodeSets/generated/character-property-escape-intersection-character-class-escape.js b/test/built-ins/RegExp/unicodeSets/generated/character-property-escape-intersection-character-class-escape.js index 0bcc2ee577e..6457bf5cc4f 100644 --- a/test/built-ins/RegExp/unicodeSets/generated/character-property-escape-intersection-character-class-escape.js +++ b/test/built-ins/RegExp/unicodeSets/generated/character-property-escape-intersection-character-class-escape.js @@ -1,4 +1,4 @@ -// Copyright 2022 Mathias Bynens. All rights reserved. +// Copyright 2024 Mathias Bynens. All rights reserved. // This code is governed by the BSD license found in the LICENSE file. /*--- @@ -8,7 +8,7 @@ description: > properties of strings, string literals, and set operations info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v14.0.0 + Unicode v16.0.0 esid: sec-patterns features: [regexp-unicode-property-escapes, regexp-v-flag] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/unicodeSets/generated/character-property-escape-intersection-character-class.js b/test/built-ins/RegExp/unicodeSets/generated/character-property-escape-intersection-character-class.js index dc93c90cd88..e84deb0cb11 100644 --- a/test/built-ins/RegExp/unicodeSets/generated/character-property-escape-intersection-character-class.js +++ b/test/built-ins/RegExp/unicodeSets/generated/character-property-escape-intersection-character-class.js @@ -1,4 +1,4 @@ -// Copyright 2022 Mathias Bynens. All rights reserved. +// Copyright 2024 Mathias Bynens. All rights reserved. // This code is governed by the BSD license found in the LICENSE file. /*--- @@ -8,7 +8,7 @@ description: > properties of strings, string literals, and set operations info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v14.0.0 + Unicode v16.0.0 esid: sec-patterns features: [regexp-unicode-property-escapes, regexp-v-flag] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/unicodeSets/generated/character-property-escape-intersection-character-property-escape.js b/test/built-ins/RegExp/unicodeSets/generated/character-property-escape-intersection-character-property-escape.js index 0fbfed19a33..0b6a823b587 100644 --- a/test/built-ins/RegExp/unicodeSets/generated/character-property-escape-intersection-character-property-escape.js +++ b/test/built-ins/RegExp/unicodeSets/generated/character-property-escape-intersection-character-property-escape.js @@ -1,4 +1,4 @@ -// Copyright 2022 Mathias Bynens. All rights reserved. +// Copyright 2024 Mathias Bynens. All rights reserved. // This code is governed by the BSD license found in the LICENSE file. /*--- @@ -8,7 +8,7 @@ description: > properties of strings, string literals, and set operations info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v14.0.0 + Unicode v16.0.0 esid: sec-patterns features: [regexp-unicode-property-escapes, regexp-v-flag] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/unicodeSets/generated/character-property-escape-intersection-character.js b/test/built-ins/RegExp/unicodeSets/generated/character-property-escape-intersection-character.js index e433e20535f..6db7c0a4849 100644 --- a/test/built-ins/RegExp/unicodeSets/generated/character-property-escape-intersection-character.js +++ b/test/built-ins/RegExp/unicodeSets/generated/character-property-escape-intersection-character.js @@ -1,4 +1,4 @@ -// Copyright 2022 Mathias Bynens. All rights reserved. +// Copyright 2024 Mathias Bynens. All rights reserved. // This code is governed by the BSD license found in the LICENSE file. /*--- @@ -8,7 +8,7 @@ description: > properties of strings, string literals, and set operations info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v14.0.0 + Unicode v16.0.0 esid: sec-patterns features: [regexp-unicode-property-escapes, regexp-v-flag] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/unicodeSets/generated/character-property-escape-intersection-property-of-strings-escape.js b/test/built-ins/RegExp/unicodeSets/generated/character-property-escape-intersection-property-of-strings-escape.js index 2d3b3d34313..4221234d3fe 100644 --- a/test/built-ins/RegExp/unicodeSets/generated/character-property-escape-intersection-property-of-strings-escape.js +++ b/test/built-ins/RegExp/unicodeSets/generated/character-property-escape-intersection-property-of-strings-escape.js @@ -1,4 +1,4 @@ -// Copyright 2022 Mathias Bynens. All rights reserved. +// Copyright 2024 Mathias Bynens. All rights reserved. // This code is governed by the BSD license found in the LICENSE file. /*--- @@ -8,7 +8,7 @@ description: > properties of strings, string literals, and set operations info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v14.0.0 + Unicode v16.0.0 esid: sec-patterns features: [regexp-unicode-property-escapes, regexp-v-flag] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/unicodeSets/generated/character-property-escape-intersection-string-literal.js b/test/built-ins/RegExp/unicodeSets/generated/character-property-escape-intersection-string-literal.js index 00b99503eff..1fad98dec85 100644 --- a/test/built-ins/RegExp/unicodeSets/generated/character-property-escape-intersection-string-literal.js +++ b/test/built-ins/RegExp/unicodeSets/generated/character-property-escape-intersection-string-literal.js @@ -1,4 +1,4 @@ -// Copyright 2022 Mathias Bynens. All rights reserved. +// Copyright 2024 Mathias Bynens. All rights reserved. // This code is governed by the BSD license found in the LICENSE file. /*--- @@ -8,7 +8,7 @@ description: > properties of strings, string literals, and set operations info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v14.0.0 + Unicode v16.0.0 esid: sec-patterns features: [regexp-unicode-property-escapes, regexp-v-flag] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/unicodeSets/generated/character-property-escape-union-character-class-escape.js b/test/built-ins/RegExp/unicodeSets/generated/character-property-escape-union-character-class-escape.js index cd434339879..9cbd565fa0c 100644 --- a/test/built-ins/RegExp/unicodeSets/generated/character-property-escape-union-character-class-escape.js +++ b/test/built-ins/RegExp/unicodeSets/generated/character-property-escape-union-character-class-escape.js @@ -1,4 +1,4 @@ -// Copyright 2022 Mathias Bynens. All rights reserved. +// Copyright 2024 Mathias Bynens. All rights reserved. // This code is governed by the BSD license found in the LICENSE file. /*--- @@ -8,7 +8,7 @@ description: > properties of strings, string literals, and set operations info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v14.0.0 + Unicode v16.0.0 esid: sec-patterns features: [regexp-unicode-property-escapes, regexp-v-flag] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/unicodeSets/generated/character-property-escape-union-character-class.js b/test/built-ins/RegExp/unicodeSets/generated/character-property-escape-union-character-class.js index 2abf4d9cc36..04367d7df76 100644 --- a/test/built-ins/RegExp/unicodeSets/generated/character-property-escape-union-character-class.js +++ b/test/built-ins/RegExp/unicodeSets/generated/character-property-escape-union-character-class.js @@ -1,4 +1,4 @@ -// Copyright 2022 Mathias Bynens. All rights reserved. +// Copyright 2024 Mathias Bynens. All rights reserved. // This code is governed by the BSD license found in the LICENSE file. /*--- @@ -8,7 +8,7 @@ description: > properties of strings, string literals, and set operations info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v14.0.0 + Unicode v16.0.0 esid: sec-patterns features: [regexp-unicode-property-escapes, regexp-v-flag] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/unicodeSets/generated/character-property-escape-union-character-property-escape.js b/test/built-ins/RegExp/unicodeSets/generated/character-property-escape-union-character-property-escape.js index 28173f58a5a..9d79fed1eeb 100644 --- a/test/built-ins/RegExp/unicodeSets/generated/character-property-escape-union-character-property-escape.js +++ b/test/built-ins/RegExp/unicodeSets/generated/character-property-escape-union-character-property-escape.js @@ -1,4 +1,4 @@ -// Copyright 2022 Mathias Bynens. All rights reserved. +// Copyright 2024 Mathias Bynens. All rights reserved. // This code is governed by the BSD license found in the LICENSE file. /*--- @@ -8,7 +8,7 @@ description: > properties of strings, string literals, and set operations info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v14.0.0 + Unicode v16.0.0 esid: sec-patterns features: [regexp-unicode-property-escapes, regexp-v-flag] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/unicodeSets/generated/character-property-escape-union-character.js b/test/built-ins/RegExp/unicodeSets/generated/character-property-escape-union-character.js index 663fc7a8012..ba5e388f3e9 100644 --- a/test/built-ins/RegExp/unicodeSets/generated/character-property-escape-union-character.js +++ b/test/built-ins/RegExp/unicodeSets/generated/character-property-escape-union-character.js @@ -1,4 +1,4 @@ -// Copyright 2022 Mathias Bynens. All rights reserved. +// Copyright 2024 Mathias Bynens. All rights reserved. // This code is governed by the BSD license found in the LICENSE file. /*--- @@ -8,7 +8,7 @@ description: > properties of strings, string literals, and set operations info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v14.0.0 + Unicode v16.0.0 esid: sec-patterns features: [regexp-unicode-property-escapes, regexp-v-flag] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/unicodeSets/generated/character-property-escape-union-property-of-strings-escape.js b/test/built-ins/RegExp/unicodeSets/generated/character-property-escape-union-property-of-strings-escape.js index 2297b4f4bc3..e88adaeaae9 100644 --- a/test/built-ins/RegExp/unicodeSets/generated/character-property-escape-union-property-of-strings-escape.js +++ b/test/built-ins/RegExp/unicodeSets/generated/character-property-escape-union-property-of-strings-escape.js @@ -1,4 +1,4 @@ -// Copyright 2022 Mathias Bynens. All rights reserved. +// Copyright 2024 Mathias Bynens. All rights reserved. // This code is governed by the BSD license found in the LICENSE file. /*--- @@ -8,7 +8,7 @@ description: > properties of strings, string literals, and set operations info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v14.0.0 + Unicode v16.0.0 esid: sec-patterns features: [regexp-unicode-property-escapes, regexp-v-flag] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/unicodeSets/generated/character-property-escape-union-string-literal.js b/test/built-ins/RegExp/unicodeSets/generated/character-property-escape-union-string-literal.js index 14b7921a53e..a865b8662a9 100644 --- a/test/built-ins/RegExp/unicodeSets/generated/character-property-escape-union-string-literal.js +++ b/test/built-ins/RegExp/unicodeSets/generated/character-property-escape-union-string-literal.js @@ -1,4 +1,4 @@ -// Copyright 2022 Mathias Bynens. All rights reserved. +// Copyright 2024 Mathias Bynens. All rights reserved. // This code is governed by the BSD license found in the LICENSE file. /*--- @@ -8,7 +8,7 @@ description: > properties of strings, string literals, and set operations info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v14.0.0 + Unicode v16.0.0 esid: sec-patterns features: [regexp-unicode-property-escapes, regexp-v-flag] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/unicodeSets/generated/character-union-character-class-escape.js b/test/built-ins/RegExp/unicodeSets/generated/character-union-character-class-escape.js index 5be03e53696..3396870b102 100644 --- a/test/built-ins/RegExp/unicodeSets/generated/character-union-character-class-escape.js +++ b/test/built-ins/RegExp/unicodeSets/generated/character-union-character-class-escape.js @@ -1,4 +1,4 @@ -// Copyright 2022 Mathias Bynens. All rights reserved. +// Copyright 2024 Mathias Bynens. All rights reserved. // This code is governed by the BSD license found in the LICENSE file. /*--- @@ -8,7 +8,7 @@ description: > properties of strings, string literals, and set operations info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v14.0.0 + Unicode v16.0.0 esid: sec-patterns features: [regexp-v-flag] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/unicodeSets/generated/character-union-character-class.js b/test/built-ins/RegExp/unicodeSets/generated/character-union-character-class.js index 6ccf45aede7..c6beef4a505 100644 --- a/test/built-ins/RegExp/unicodeSets/generated/character-union-character-class.js +++ b/test/built-ins/RegExp/unicodeSets/generated/character-union-character-class.js @@ -1,4 +1,4 @@ -// Copyright 2022 Mathias Bynens. All rights reserved. +// Copyright 2024 Mathias Bynens. All rights reserved. // This code is governed by the BSD license found in the LICENSE file. /*--- @@ -8,7 +8,7 @@ description: > properties of strings, string literals, and set operations info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v14.0.0 + Unicode v16.0.0 esid: sec-patterns features: [regexp-v-flag] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/unicodeSets/generated/character-union-character-property-escape.js b/test/built-ins/RegExp/unicodeSets/generated/character-union-character-property-escape.js index 64e33ce9235..f7580492e9c 100644 --- a/test/built-ins/RegExp/unicodeSets/generated/character-union-character-property-escape.js +++ b/test/built-ins/RegExp/unicodeSets/generated/character-union-character-property-escape.js @@ -1,4 +1,4 @@ -// Copyright 2022 Mathias Bynens. All rights reserved. +// Copyright 2024 Mathias Bynens. All rights reserved. // This code is governed by the BSD license found in the LICENSE file. /*--- @@ -8,7 +8,7 @@ description: > properties of strings, string literals, and set operations info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v14.0.0 + Unicode v16.0.0 esid: sec-patterns features: [regexp-unicode-property-escapes, regexp-v-flag] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/unicodeSets/generated/character-union-character.js b/test/built-ins/RegExp/unicodeSets/generated/character-union-character.js index 46e2f5eac78..976d588c0af 100644 --- a/test/built-ins/RegExp/unicodeSets/generated/character-union-character.js +++ b/test/built-ins/RegExp/unicodeSets/generated/character-union-character.js @@ -1,4 +1,4 @@ -// Copyright 2022 Mathias Bynens. All rights reserved. +// Copyright 2024 Mathias Bynens. All rights reserved. // This code is governed by the BSD license found in the LICENSE file. /*--- @@ -8,7 +8,7 @@ description: > properties of strings, string literals, and set operations info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v14.0.0 + Unicode v16.0.0 esid: sec-patterns features: [regexp-v-flag] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/unicodeSets/generated/character-union-property-of-strings-escape.js b/test/built-ins/RegExp/unicodeSets/generated/character-union-property-of-strings-escape.js index 60cb484fc7f..1fbc646e6fe 100644 --- a/test/built-ins/RegExp/unicodeSets/generated/character-union-property-of-strings-escape.js +++ b/test/built-ins/RegExp/unicodeSets/generated/character-union-property-of-strings-escape.js @@ -1,4 +1,4 @@ -// Copyright 2022 Mathias Bynens. All rights reserved. +// Copyright 2024 Mathias Bynens. All rights reserved. // This code is governed by the BSD license found in the LICENSE file. /*--- @@ -8,7 +8,7 @@ description: > properties of strings, string literals, and set operations info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v14.0.0 + Unicode v16.0.0 esid: sec-patterns features: [regexp-unicode-property-escapes, regexp-v-flag] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/unicodeSets/generated/character-union-string-literal.js b/test/built-ins/RegExp/unicodeSets/generated/character-union-string-literal.js index 2be3f1a6b82..417d097d59b 100644 --- a/test/built-ins/RegExp/unicodeSets/generated/character-union-string-literal.js +++ b/test/built-ins/RegExp/unicodeSets/generated/character-union-string-literal.js @@ -1,4 +1,4 @@ -// Copyright 2022 Mathias Bynens. All rights reserved. +// Copyright 2024 Mathias Bynens. All rights reserved. // This code is governed by the BSD license found in the LICENSE file. /*--- @@ -8,7 +8,7 @@ description: > properties of strings, string literals, and set operations info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v14.0.0 + Unicode v16.0.0 esid: sec-patterns features: [regexp-v-flag] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/unicodeSets/generated/property-of-strings-escape-difference-character-class-escape.js b/test/built-ins/RegExp/unicodeSets/generated/property-of-strings-escape-difference-character-class-escape.js index cd7fd07ec60..aa660002f53 100644 --- a/test/built-ins/RegExp/unicodeSets/generated/property-of-strings-escape-difference-character-class-escape.js +++ b/test/built-ins/RegExp/unicodeSets/generated/property-of-strings-escape-difference-character-class-escape.js @@ -1,4 +1,4 @@ -// Copyright 2022 Mathias Bynens. All rights reserved. +// Copyright 2024 Mathias Bynens. All rights reserved. // This code is governed by the BSD license found in the LICENSE file. /*--- @@ -8,7 +8,7 @@ description: > properties of strings, string literals, and set operations info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v14.0.0 + Unicode v16.0.0 esid: sec-patterns features: [regexp-unicode-property-escapes, regexp-v-flag] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/unicodeSets/generated/property-of-strings-escape-difference-character-class.js b/test/built-ins/RegExp/unicodeSets/generated/property-of-strings-escape-difference-character-class.js index dc0887e4039..bf9a0f535d3 100644 --- a/test/built-ins/RegExp/unicodeSets/generated/property-of-strings-escape-difference-character-class.js +++ b/test/built-ins/RegExp/unicodeSets/generated/property-of-strings-escape-difference-character-class.js @@ -1,4 +1,4 @@ -// Copyright 2022 Mathias Bynens. All rights reserved. +// Copyright 2024 Mathias Bynens. All rights reserved. // This code is governed by the BSD license found in the LICENSE file. /*--- @@ -8,7 +8,7 @@ description: > properties of strings, string literals, and set operations info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v14.0.0 + Unicode v16.0.0 esid: sec-patterns features: [regexp-unicode-property-escapes, regexp-v-flag] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/unicodeSets/generated/property-of-strings-escape-difference-character-property-escape.js b/test/built-ins/RegExp/unicodeSets/generated/property-of-strings-escape-difference-character-property-escape.js index b324ea8b87e..8ae2b65b5cc 100644 --- a/test/built-ins/RegExp/unicodeSets/generated/property-of-strings-escape-difference-character-property-escape.js +++ b/test/built-ins/RegExp/unicodeSets/generated/property-of-strings-escape-difference-character-property-escape.js @@ -1,4 +1,4 @@ -// Copyright 2022 Mathias Bynens. All rights reserved. +// Copyright 2024 Mathias Bynens. All rights reserved. // This code is governed by the BSD license found in the LICENSE file. /*--- @@ -8,7 +8,7 @@ description: > properties of strings, string literals, and set operations info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v14.0.0 + Unicode v16.0.0 esid: sec-patterns features: [regexp-unicode-property-escapes, regexp-v-flag] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/unicodeSets/generated/property-of-strings-escape-difference-character.js b/test/built-ins/RegExp/unicodeSets/generated/property-of-strings-escape-difference-character.js index 5aedb51b100..ff5616292ff 100644 --- a/test/built-ins/RegExp/unicodeSets/generated/property-of-strings-escape-difference-character.js +++ b/test/built-ins/RegExp/unicodeSets/generated/property-of-strings-escape-difference-character.js @@ -1,4 +1,4 @@ -// Copyright 2022 Mathias Bynens. All rights reserved. +// Copyright 2024 Mathias Bynens. All rights reserved. // This code is governed by the BSD license found in the LICENSE file. /*--- @@ -8,7 +8,7 @@ description: > properties of strings, string literals, and set operations info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v14.0.0 + Unicode v16.0.0 esid: sec-patterns features: [regexp-unicode-property-escapes, regexp-v-flag] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/unicodeSets/generated/property-of-strings-escape-difference-property-of-strings-escape.js b/test/built-ins/RegExp/unicodeSets/generated/property-of-strings-escape-difference-property-of-strings-escape.js index a4328bfa113..6882b8d2d00 100644 --- a/test/built-ins/RegExp/unicodeSets/generated/property-of-strings-escape-difference-property-of-strings-escape.js +++ b/test/built-ins/RegExp/unicodeSets/generated/property-of-strings-escape-difference-property-of-strings-escape.js @@ -1,4 +1,4 @@ -// Copyright 2022 Mathias Bynens. All rights reserved. +// Copyright 2024 Mathias Bynens. All rights reserved. // This code is governed by the BSD license found in the LICENSE file. /*--- @@ -8,7 +8,7 @@ description: > properties of strings, string literals, and set operations info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v14.0.0 + Unicode v16.0.0 esid: sec-patterns features: [regexp-unicode-property-escapes, regexp-v-flag] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/unicodeSets/generated/property-of-strings-escape-difference-string-literal.js b/test/built-ins/RegExp/unicodeSets/generated/property-of-strings-escape-difference-string-literal.js index b59cc54a5d8..9b02550a574 100644 --- a/test/built-ins/RegExp/unicodeSets/generated/property-of-strings-escape-difference-string-literal.js +++ b/test/built-ins/RegExp/unicodeSets/generated/property-of-strings-escape-difference-string-literal.js @@ -1,4 +1,4 @@ -// Copyright 2022 Mathias Bynens. All rights reserved. +// Copyright 2024 Mathias Bynens. All rights reserved. // This code is governed by the BSD license found in the LICENSE file. /*--- @@ -8,7 +8,7 @@ description: > properties of strings, string literals, and set operations info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v14.0.0 + Unicode v16.0.0 esid: sec-patterns features: [regexp-unicode-property-escapes, regexp-v-flag] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/unicodeSets/generated/property-of-strings-escape-intersection-character-class-escape.js b/test/built-ins/RegExp/unicodeSets/generated/property-of-strings-escape-intersection-character-class-escape.js index 7461c2f4f59..ee235ed88a0 100644 --- a/test/built-ins/RegExp/unicodeSets/generated/property-of-strings-escape-intersection-character-class-escape.js +++ b/test/built-ins/RegExp/unicodeSets/generated/property-of-strings-escape-intersection-character-class-escape.js @@ -1,4 +1,4 @@ -// Copyright 2022 Mathias Bynens. All rights reserved. +// Copyright 2024 Mathias Bynens. All rights reserved. // This code is governed by the BSD license found in the LICENSE file. /*--- @@ -8,7 +8,7 @@ description: > properties of strings, string literals, and set operations info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v14.0.0 + Unicode v16.0.0 esid: sec-patterns features: [regexp-unicode-property-escapes, regexp-v-flag] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/unicodeSets/generated/property-of-strings-escape-intersection-character-class.js b/test/built-ins/RegExp/unicodeSets/generated/property-of-strings-escape-intersection-character-class.js index 6b275b35a97..2e1fe131cb1 100644 --- a/test/built-ins/RegExp/unicodeSets/generated/property-of-strings-escape-intersection-character-class.js +++ b/test/built-ins/RegExp/unicodeSets/generated/property-of-strings-escape-intersection-character-class.js @@ -1,4 +1,4 @@ -// Copyright 2022 Mathias Bynens. All rights reserved. +// Copyright 2024 Mathias Bynens. All rights reserved. // This code is governed by the BSD license found in the LICENSE file. /*--- @@ -8,7 +8,7 @@ description: > properties of strings, string literals, and set operations info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v14.0.0 + Unicode v16.0.0 esid: sec-patterns features: [regexp-unicode-property-escapes, regexp-v-flag] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/unicodeSets/generated/property-of-strings-escape-intersection-character-property-escape.js b/test/built-ins/RegExp/unicodeSets/generated/property-of-strings-escape-intersection-character-property-escape.js index 9f053f0735b..97a7ce4d3e3 100644 --- a/test/built-ins/RegExp/unicodeSets/generated/property-of-strings-escape-intersection-character-property-escape.js +++ b/test/built-ins/RegExp/unicodeSets/generated/property-of-strings-escape-intersection-character-property-escape.js @@ -1,4 +1,4 @@ -// Copyright 2022 Mathias Bynens. All rights reserved. +// Copyright 2024 Mathias Bynens. All rights reserved. // This code is governed by the BSD license found in the LICENSE file. /*--- @@ -8,7 +8,7 @@ description: > properties of strings, string literals, and set operations info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v14.0.0 + Unicode v16.0.0 esid: sec-patterns features: [regexp-unicode-property-escapes, regexp-v-flag] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/unicodeSets/generated/property-of-strings-escape-intersection-character.js b/test/built-ins/RegExp/unicodeSets/generated/property-of-strings-escape-intersection-character.js index cf439d8caef..f8f349e90b3 100644 --- a/test/built-ins/RegExp/unicodeSets/generated/property-of-strings-escape-intersection-character.js +++ b/test/built-ins/RegExp/unicodeSets/generated/property-of-strings-escape-intersection-character.js @@ -1,4 +1,4 @@ -// Copyright 2022 Mathias Bynens. All rights reserved. +// Copyright 2024 Mathias Bynens. All rights reserved. // This code is governed by the BSD license found in the LICENSE file. /*--- @@ -8,7 +8,7 @@ description: > properties of strings, string literals, and set operations info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v14.0.0 + Unicode v16.0.0 esid: sec-patterns features: [regexp-unicode-property-escapes, regexp-v-flag] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/unicodeSets/generated/property-of-strings-escape-intersection-property-of-strings-escape.js b/test/built-ins/RegExp/unicodeSets/generated/property-of-strings-escape-intersection-property-of-strings-escape.js index 4e810d322ba..5ae68cd3745 100644 --- a/test/built-ins/RegExp/unicodeSets/generated/property-of-strings-escape-intersection-property-of-strings-escape.js +++ b/test/built-ins/RegExp/unicodeSets/generated/property-of-strings-escape-intersection-property-of-strings-escape.js @@ -1,4 +1,4 @@ -// Copyright 2022 Mathias Bynens. All rights reserved. +// Copyright 2024 Mathias Bynens. All rights reserved. // This code is governed by the BSD license found in the LICENSE file. /*--- @@ -8,7 +8,7 @@ description: > properties of strings, string literals, and set operations info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v14.0.0 + Unicode v16.0.0 esid: sec-patterns features: [regexp-unicode-property-escapes, regexp-v-flag] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/unicodeSets/generated/property-of-strings-escape-intersection-string-literal.js b/test/built-ins/RegExp/unicodeSets/generated/property-of-strings-escape-intersection-string-literal.js index 0c654a52688..231ccbb038d 100644 --- a/test/built-ins/RegExp/unicodeSets/generated/property-of-strings-escape-intersection-string-literal.js +++ b/test/built-ins/RegExp/unicodeSets/generated/property-of-strings-escape-intersection-string-literal.js @@ -1,4 +1,4 @@ -// Copyright 2022 Mathias Bynens. All rights reserved. +// Copyright 2024 Mathias Bynens. All rights reserved. // This code is governed by the BSD license found in the LICENSE file. /*--- @@ -8,7 +8,7 @@ description: > properties of strings, string literals, and set operations info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v14.0.0 + Unicode v16.0.0 esid: sec-patterns features: [regexp-unicode-property-escapes, regexp-v-flag] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/unicodeSets/generated/property-of-strings-escape-union-character-class-escape.js b/test/built-ins/RegExp/unicodeSets/generated/property-of-strings-escape-union-character-class-escape.js index 672d3aaa113..28fb4ced04a 100644 --- a/test/built-ins/RegExp/unicodeSets/generated/property-of-strings-escape-union-character-class-escape.js +++ b/test/built-ins/RegExp/unicodeSets/generated/property-of-strings-escape-union-character-class-escape.js @@ -1,4 +1,4 @@ -// Copyright 2022 Mathias Bynens. All rights reserved. +// Copyright 2024 Mathias Bynens. All rights reserved. // This code is governed by the BSD license found in the LICENSE file. /*--- @@ -8,7 +8,7 @@ description: > properties of strings, string literals, and set operations info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v14.0.0 + Unicode v16.0.0 esid: sec-patterns features: [regexp-unicode-property-escapes, regexp-v-flag] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/unicodeSets/generated/property-of-strings-escape-union-character-class.js b/test/built-ins/RegExp/unicodeSets/generated/property-of-strings-escape-union-character-class.js index 29e410089d6..b9038054d53 100644 --- a/test/built-ins/RegExp/unicodeSets/generated/property-of-strings-escape-union-character-class.js +++ b/test/built-ins/RegExp/unicodeSets/generated/property-of-strings-escape-union-character-class.js @@ -1,4 +1,4 @@ -// Copyright 2022 Mathias Bynens. All rights reserved. +// Copyright 2024 Mathias Bynens. All rights reserved. // This code is governed by the BSD license found in the LICENSE file. /*--- @@ -8,7 +8,7 @@ description: > properties of strings, string literals, and set operations info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v14.0.0 + Unicode v16.0.0 esid: sec-patterns features: [regexp-unicode-property-escapes, regexp-v-flag] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/unicodeSets/generated/property-of-strings-escape-union-character-property-escape.js b/test/built-ins/RegExp/unicodeSets/generated/property-of-strings-escape-union-character-property-escape.js index 4ab194bb19e..aad9a7361e4 100644 --- a/test/built-ins/RegExp/unicodeSets/generated/property-of-strings-escape-union-character-property-escape.js +++ b/test/built-ins/RegExp/unicodeSets/generated/property-of-strings-escape-union-character-property-escape.js @@ -1,4 +1,4 @@ -// Copyright 2022 Mathias Bynens. All rights reserved. +// Copyright 2024 Mathias Bynens. All rights reserved. // This code is governed by the BSD license found in the LICENSE file. /*--- @@ -8,7 +8,7 @@ description: > properties of strings, string literals, and set operations info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v14.0.0 + Unicode v16.0.0 esid: sec-patterns features: [regexp-unicode-property-escapes, regexp-v-flag] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/unicodeSets/generated/property-of-strings-escape-union-character.js b/test/built-ins/RegExp/unicodeSets/generated/property-of-strings-escape-union-character.js index a219d6dc7b0..21dcf7b2141 100644 --- a/test/built-ins/RegExp/unicodeSets/generated/property-of-strings-escape-union-character.js +++ b/test/built-ins/RegExp/unicodeSets/generated/property-of-strings-escape-union-character.js @@ -1,4 +1,4 @@ -// Copyright 2022 Mathias Bynens. All rights reserved. +// Copyright 2024 Mathias Bynens. All rights reserved. // This code is governed by the BSD license found in the LICENSE file. /*--- @@ -8,7 +8,7 @@ description: > properties of strings, string literals, and set operations info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v14.0.0 + Unicode v16.0.0 esid: sec-patterns features: [regexp-unicode-property-escapes, regexp-v-flag] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/unicodeSets/generated/property-of-strings-escape-union-property-of-strings-escape.js b/test/built-ins/RegExp/unicodeSets/generated/property-of-strings-escape-union-property-of-strings-escape.js index 755211e0d56..4f4e93475c9 100644 --- a/test/built-ins/RegExp/unicodeSets/generated/property-of-strings-escape-union-property-of-strings-escape.js +++ b/test/built-ins/RegExp/unicodeSets/generated/property-of-strings-escape-union-property-of-strings-escape.js @@ -1,4 +1,4 @@ -// Copyright 2022 Mathias Bynens. All rights reserved. +// Copyright 2024 Mathias Bynens. All rights reserved. // This code is governed by the BSD license found in the LICENSE file. /*--- @@ -8,7 +8,7 @@ description: > properties of strings, string literals, and set operations info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v14.0.0 + Unicode v16.0.0 esid: sec-patterns features: [regexp-unicode-property-escapes, regexp-v-flag] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/unicodeSets/generated/property-of-strings-escape-union-string-literal.js b/test/built-ins/RegExp/unicodeSets/generated/property-of-strings-escape-union-string-literal.js index 0fcbca4102e..85723f19230 100644 --- a/test/built-ins/RegExp/unicodeSets/generated/property-of-strings-escape-union-string-literal.js +++ b/test/built-ins/RegExp/unicodeSets/generated/property-of-strings-escape-union-string-literal.js @@ -1,4 +1,4 @@ -// Copyright 2022 Mathias Bynens. All rights reserved. +// Copyright 2024 Mathias Bynens. All rights reserved. // This code is governed by the BSD license found in the LICENSE file. /*--- @@ -8,7 +8,7 @@ description: > properties of strings, string literals, and set operations info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v14.0.0 + Unicode v16.0.0 esid: sec-patterns features: [regexp-unicode-property-escapes, regexp-v-flag] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/unicodeSets/generated/rgi-emoji-13.1.js b/test/built-ins/RegExp/unicodeSets/generated/rgi-emoji-13.1.js index 89931c27fdc..2525d3d2b9d 100644 --- a/test/built-ins/RegExp/unicodeSets/generated/rgi-emoji-13.1.js +++ b/test/built-ins/RegExp/unicodeSets/generated/rgi-emoji-13.1.js @@ -1,4 +1,4 @@ -// Copyright 2023 Mathias Bynens. All rights reserved. +// Copyright 2024 Mathias Bynens. All rights reserved. // This code is governed by the BSD license found in the LICENSE file. /*--- diff --git a/test/built-ins/RegExp/unicodeSets/generated/rgi-emoji-14.0.js b/test/built-ins/RegExp/unicodeSets/generated/rgi-emoji-14.0.js index afab0c7affb..57c55b1e59b 100644 --- a/test/built-ins/RegExp/unicodeSets/generated/rgi-emoji-14.0.js +++ b/test/built-ins/RegExp/unicodeSets/generated/rgi-emoji-14.0.js @@ -1,4 +1,4 @@ -// Copyright 2023 Mathias Bynens. All rights reserved. +// Copyright 2024 Mathias Bynens. All rights reserved. // This code is governed by the BSD license found in the LICENSE file. /*--- diff --git a/test/built-ins/RegExp/unicodeSets/generated/rgi-emoji-15.0.js b/test/built-ins/RegExp/unicodeSets/generated/rgi-emoji-15.0.js index 1e218a0bc9b..6673e98fa0d 100644 --- a/test/built-ins/RegExp/unicodeSets/generated/rgi-emoji-15.0.js +++ b/test/built-ins/RegExp/unicodeSets/generated/rgi-emoji-15.0.js @@ -1,4 +1,4 @@ -// Copyright 2023 Mathias Bynens. All rights reserved. +// Copyright 2024 Mathias Bynens. All rights reserved. // This code is governed by the BSD license found in the LICENSE file. /*--- diff --git a/test/built-ins/RegExp/unicodeSets/generated/rgi-emoji-15.1.js b/test/built-ins/RegExp/unicodeSets/generated/rgi-emoji-15.1.js index 0004dd7e67e..58405d7997d 100644 --- a/test/built-ins/RegExp/unicodeSets/generated/rgi-emoji-15.1.js +++ b/test/built-ins/RegExp/unicodeSets/generated/rgi-emoji-15.1.js @@ -1,4 +1,4 @@ -// Copyright 2023 Mathias Bynens. All rights reserved. +// Copyright 2024 Mathias Bynens. All rights reserved. // This code is governed by the BSD license found in the LICENSE file. /*--- diff --git a/test/built-ins/RegExp/unicodeSets/generated/rgi-emoji-16.0.js b/test/built-ins/RegExp/unicodeSets/generated/rgi-emoji-16.0.js new file mode 100644 index 00000000000..ec74bcda2f3 --- /dev/null +++ b/test/built-ins/RegExp/unicodeSets/generated/rgi-emoji-16.0.js @@ -0,0 +1,29 @@ +// Copyright 2024 Mathias Bynens. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +author: Mathias Bynens +description: > + Test that Unicode property escapes for `RGI_Emoji` (property of strings) + match Emoji 16.0 strings. +info: | + Generated by https://github.com/mathiasbynens/caniunicode +esid: sec-static-semantics-unicodematchproperty-p +features: [regexp-unicode-property-escapes, regexp-v-flag] +includes: [regExpUtils.js] +---*/ + +testPropertyOfStrings({ + regExp: /^\p{RGI_Emoji}+$/v, + expression: "\\p{RGI_Emoji}", + matchStrings: [ + "\u{1F1E8}\u{1F1F6}", + "\u{1FA89}", + "\u{1FA8F}", + "\u{1FABE}", + "\u{1FAC6}", + "\u{1FADC}", + "\u{1FADF}", + "\u{1FAE9}" + ], +}); diff --git a/test/built-ins/RegExp/unicodeSets/generated/string-literal-difference-character-class-escape.js b/test/built-ins/RegExp/unicodeSets/generated/string-literal-difference-character-class-escape.js index 500ee969593..1d4651562af 100644 --- a/test/built-ins/RegExp/unicodeSets/generated/string-literal-difference-character-class-escape.js +++ b/test/built-ins/RegExp/unicodeSets/generated/string-literal-difference-character-class-escape.js @@ -1,4 +1,4 @@ -// Copyright 2022 Mathias Bynens. All rights reserved. +// Copyright 2024 Mathias Bynens. All rights reserved. // This code is governed by the BSD license found in the LICENSE file. /*--- @@ -8,7 +8,7 @@ description: > properties of strings, string literals, and set operations info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v14.0.0 + Unicode v16.0.0 esid: sec-patterns features: [regexp-v-flag] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/unicodeSets/generated/string-literal-difference-character-class.js b/test/built-ins/RegExp/unicodeSets/generated/string-literal-difference-character-class.js index f5021136015..5a02eb1ddd6 100644 --- a/test/built-ins/RegExp/unicodeSets/generated/string-literal-difference-character-class.js +++ b/test/built-ins/RegExp/unicodeSets/generated/string-literal-difference-character-class.js @@ -1,4 +1,4 @@ -// Copyright 2022 Mathias Bynens. All rights reserved. +// Copyright 2024 Mathias Bynens. All rights reserved. // This code is governed by the BSD license found in the LICENSE file. /*--- @@ -8,7 +8,7 @@ description: > properties of strings, string literals, and set operations info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v14.0.0 + Unicode v16.0.0 esid: sec-patterns features: [regexp-v-flag] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/unicodeSets/generated/string-literal-difference-character-property-escape.js b/test/built-ins/RegExp/unicodeSets/generated/string-literal-difference-character-property-escape.js index d2ebbce244d..be691a849f6 100644 --- a/test/built-ins/RegExp/unicodeSets/generated/string-literal-difference-character-property-escape.js +++ b/test/built-ins/RegExp/unicodeSets/generated/string-literal-difference-character-property-escape.js @@ -1,4 +1,4 @@ -// Copyright 2022 Mathias Bynens. All rights reserved. +// Copyright 2024 Mathias Bynens. All rights reserved. // This code is governed by the BSD license found in the LICENSE file. /*--- @@ -8,7 +8,7 @@ description: > properties of strings, string literals, and set operations info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v14.0.0 + Unicode v16.0.0 esid: sec-patterns features: [regexp-unicode-property-escapes, regexp-v-flag] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/unicodeSets/generated/string-literal-difference-character.js b/test/built-ins/RegExp/unicodeSets/generated/string-literal-difference-character.js index 1e2155aa13f..3dd5efecb9b 100644 --- a/test/built-ins/RegExp/unicodeSets/generated/string-literal-difference-character.js +++ b/test/built-ins/RegExp/unicodeSets/generated/string-literal-difference-character.js @@ -1,4 +1,4 @@ -// Copyright 2022 Mathias Bynens. All rights reserved. +// Copyright 2024 Mathias Bynens. All rights reserved. // This code is governed by the BSD license found in the LICENSE file. /*--- @@ -8,7 +8,7 @@ description: > properties of strings, string literals, and set operations info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v14.0.0 + Unicode v16.0.0 esid: sec-patterns features: [regexp-v-flag] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/unicodeSets/generated/string-literal-difference-property-of-strings-escape.js b/test/built-ins/RegExp/unicodeSets/generated/string-literal-difference-property-of-strings-escape.js index 4be056049e7..2ce2386c50e 100644 --- a/test/built-ins/RegExp/unicodeSets/generated/string-literal-difference-property-of-strings-escape.js +++ b/test/built-ins/RegExp/unicodeSets/generated/string-literal-difference-property-of-strings-escape.js @@ -1,4 +1,4 @@ -// Copyright 2022 Mathias Bynens. All rights reserved. +// Copyright 2024 Mathias Bynens. All rights reserved. // This code is governed by the BSD license found in the LICENSE file. /*--- @@ -8,7 +8,7 @@ description: > properties of strings, string literals, and set operations info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v14.0.0 + Unicode v16.0.0 esid: sec-patterns features: [regexp-unicode-property-escapes, regexp-v-flag] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/unicodeSets/generated/string-literal-difference-string-literal.js b/test/built-ins/RegExp/unicodeSets/generated/string-literal-difference-string-literal.js index 3c11a326840..527fdd0e5c5 100644 --- a/test/built-ins/RegExp/unicodeSets/generated/string-literal-difference-string-literal.js +++ b/test/built-ins/RegExp/unicodeSets/generated/string-literal-difference-string-literal.js @@ -1,4 +1,4 @@ -// Copyright 2022 Mathias Bynens. All rights reserved. +// Copyright 2024 Mathias Bynens. All rights reserved. // This code is governed by the BSD license found in the LICENSE file. /*--- @@ -8,7 +8,7 @@ description: > properties of strings, string literals, and set operations info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v14.0.0 + Unicode v16.0.0 esid: sec-patterns features: [regexp-v-flag] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/unicodeSets/generated/string-literal-intersection-character-class-escape.js b/test/built-ins/RegExp/unicodeSets/generated/string-literal-intersection-character-class-escape.js index c33dd37bebc..045b27ab4f5 100644 --- a/test/built-ins/RegExp/unicodeSets/generated/string-literal-intersection-character-class-escape.js +++ b/test/built-ins/RegExp/unicodeSets/generated/string-literal-intersection-character-class-escape.js @@ -1,4 +1,4 @@ -// Copyright 2022 Mathias Bynens. All rights reserved. +// Copyright 2024 Mathias Bynens. All rights reserved. // This code is governed by the BSD license found in the LICENSE file. /*--- @@ -8,7 +8,7 @@ description: > properties of strings, string literals, and set operations info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v14.0.0 + Unicode v16.0.0 esid: sec-patterns features: [regexp-v-flag] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/unicodeSets/generated/string-literal-intersection-character-class.js b/test/built-ins/RegExp/unicodeSets/generated/string-literal-intersection-character-class.js index ab3e31ec29a..d6bf499373f 100644 --- a/test/built-ins/RegExp/unicodeSets/generated/string-literal-intersection-character-class.js +++ b/test/built-ins/RegExp/unicodeSets/generated/string-literal-intersection-character-class.js @@ -1,4 +1,4 @@ -// Copyright 2022 Mathias Bynens. All rights reserved. +// Copyright 2024 Mathias Bynens. All rights reserved. // This code is governed by the BSD license found in the LICENSE file. /*--- @@ -8,7 +8,7 @@ description: > properties of strings, string literals, and set operations info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v14.0.0 + Unicode v16.0.0 esid: sec-patterns features: [regexp-v-flag] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/unicodeSets/generated/string-literal-intersection-character-property-escape.js b/test/built-ins/RegExp/unicodeSets/generated/string-literal-intersection-character-property-escape.js index beb11b47cbb..6119f72ac0a 100644 --- a/test/built-ins/RegExp/unicodeSets/generated/string-literal-intersection-character-property-escape.js +++ b/test/built-ins/RegExp/unicodeSets/generated/string-literal-intersection-character-property-escape.js @@ -1,4 +1,4 @@ -// Copyright 2022 Mathias Bynens. All rights reserved. +// Copyright 2024 Mathias Bynens. All rights reserved. // This code is governed by the BSD license found in the LICENSE file. /*--- @@ -8,7 +8,7 @@ description: > properties of strings, string literals, and set operations info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v14.0.0 + Unicode v16.0.0 esid: sec-patterns features: [regexp-unicode-property-escapes, regexp-v-flag] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/unicodeSets/generated/string-literal-intersection-character.js b/test/built-ins/RegExp/unicodeSets/generated/string-literal-intersection-character.js index ea5b48f694e..d679679c31b 100644 --- a/test/built-ins/RegExp/unicodeSets/generated/string-literal-intersection-character.js +++ b/test/built-ins/RegExp/unicodeSets/generated/string-literal-intersection-character.js @@ -1,4 +1,4 @@ -// Copyright 2022 Mathias Bynens. All rights reserved. +// Copyright 2024 Mathias Bynens. All rights reserved. // This code is governed by the BSD license found in the LICENSE file. /*--- @@ -8,7 +8,7 @@ description: > properties of strings, string literals, and set operations info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v14.0.0 + Unicode v16.0.0 esid: sec-patterns features: [regexp-v-flag] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/unicodeSets/generated/string-literal-intersection-property-of-strings-escape.js b/test/built-ins/RegExp/unicodeSets/generated/string-literal-intersection-property-of-strings-escape.js index 1b4ea0ff06b..4123f543815 100644 --- a/test/built-ins/RegExp/unicodeSets/generated/string-literal-intersection-property-of-strings-escape.js +++ b/test/built-ins/RegExp/unicodeSets/generated/string-literal-intersection-property-of-strings-escape.js @@ -1,4 +1,4 @@ -// Copyright 2022 Mathias Bynens. All rights reserved. +// Copyright 2024 Mathias Bynens. All rights reserved. // This code is governed by the BSD license found in the LICENSE file. /*--- @@ -8,7 +8,7 @@ description: > properties of strings, string literals, and set operations info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v14.0.0 + Unicode v16.0.0 esid: sec-patterns features: [regexp-unicode-property-escapes, regexp-v-flag] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/unicodeSets/generated/string-literal-intersection-string-literal.js b/test/built-ins/RegExp/unicodeSets/generated/string-literal-intersection-string-literal.js index cc10fa5e8f6..f3d39abe4c4 100644 --- a/test/built-ins/RegExp/unicodeSets/generated/string-literal-intersection-string-literal.js +++ b/test/built-ins/RegExp/unicodeSets/generated/string-literal-intersection-string-literal.js @@ -1,4 +1,4 @@ -// Copyright 2022 Mathias Bynens. All rights reserved. +// Copyright 2024 Mathias Bynens. All rights reserved. // This code is governed by the BSD license found in the LICENSE file. /*--- @@ -8,7 +8,7 @@ description: > properties of strings, string literals, and set operations info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v14.0.0 + Unicode v16.0.0 esid: sec-patterns features: [regexp-v-flag] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/unicodeSets/generated/string-literal-union-character-class-escape.js b/test/built-ins/RegExp/unicodeSets/generated/string-literal-union-character-class-escape.js index e9dcf9097ba..1e9ba374eee 100644 --- a/test/built-ins/RegExp/unicodeSets/generated/string-literal-union-character-class-escape.js +++ b/test/built-ins/RegExp/unicodeSets/generated/string-literal-union-character-class-escape.js @@ -1,4 +1,4 @@ -// Copyright 2022 Mathias Bynens. All rights reserved. +// Copyright 2024 Mathias Bynens. All rights reserved. // This code is governed by the BSD license found in the LICENSE file. /*--- @@ -8,7 +8,7 @@ description: > properties of strings, string literals, and set operations info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v14.0.0 + Unicode v16.0.0 esid: sec-patterns features: [regexp-v-flag] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/unicodeSets/generated/string-literal-union-character-class.js b/test/built-ins/RegExp/unicodeSets/generated/string-literal-union-character-class.js index f005189f75f..25c2524ba4b 100644 --- a/test/built-ins/RegExp/unicodeSets/generated/string-literal-union-character-class.js +++ b/test/built-ins/RegExp/unicodeSets/generated/string-literal-union-character-class.js @@ -1,4 +1,4 @@ -// Copyright 2022 Mathias Bynens. All rights reserved. +// Copyright 2024 Mathias Bynens. All rights reserved. // This code is governed by the BSD license found in the LICENSE file. /*--- @@ -8,7 +8,7 @@ description: > properties of strings, string literals, and set operations info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v14.0.0 + Unicode v16.0.0 esid: sec-patterns features: [regexp-v-flag] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/unicodeSets/generated/string-literal-union-character-property-escape.js b/test/built-ins/RegExp/unicodeSets/generated/string-literal-union-character-property-escape.js index 09af1a06e1e..129c52d624f 100644 --- a/test/built-ins/RegExp/unicodeSets/generated/string-literal-union-character-property-escape.js +++ b/test/built-ins/RegExp/unicodeSets/generated/string-literal-union-character-property-escape.js @@ -1,4 +1,4 @@ -// Copyright 2022 Mathias Bynens. All rights reserved. +// Copyright 2024 Mathias Bynens. All rights reserved. // This code is governed by the BSD license found in the LICENSE file. /*--- @@ -8,7 +8,7 @@ description: > properties of strings, string literals, and set operations info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v14.0.0 + Unicode v16.0.0 esid: sec-patterns features: [regexp-unicode-property-escapes, regexp-v-flag] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/unicodeSets/generated/string-literal-union-character.js b/test/built-ins/RegExp/unicodeSets/generated/string-literal-union-character.js index 37113429011..c0f9822d16f 100644 --- a/test/built-ins/RegExp/unicodeSets/generated/string-literal-union-character.js +++ b/test/built-ins/RegExp/unicodeSets/generated/string-literal-union-character.js @@ -1,4 +1,4 @@ -// Copyright 2022 Mathias Bynens. All rights reserved. +// Copyright 2024 Mathias Bynens. All rights reserved. // This code is governed by the BSD license found in the LICENSE file. /*--- @@ -8,7 +8,7 @@ description: > properties of strings, string literals, and set operations info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v14.0.0 + Unicode v16.0.0 esid: sec-patterns features: [regexp-v-flag] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/unicodeSets/generated/string-literal-union-property-of-strings-escape.js b/test/built-ins/RegExp/unicodeSets/generated/string-literal-union-property-of-strings-escape.js index f5ca5039702..5db90ca746a 100644 --- a/test/built-ins/RegExp/unicodeSets/generated/string-literal-union-property-of-strings-escape.js +++ b/test/built-ins/RegExp/unicodeSets/generated/string-literal-union-property-of-strings-escape.js @@ -1,4 +1,4 @@ -// Copyright 2022 Mathias Bynens. All rights reserved. +// Copyright 2024 Mathias Bynens. All rights reserved. // This code is governed by the BSD license found in the LICENSE file. /*--- @@ -8,7 +8,7 @@ description: > properties of strings, string literals, and set operations info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v14.0.0 + Unicode v16.0.0 esid: sec-patterns features: [regexp-unicode-property-escapes, regexp-v-flag] includes: [regExpUtils.js] diff --git a/test/built-ins/RegExp/unicodeSets/generated/string-literal-union-string-literal.js b/test/built-ins/RegExp/unicodeSets/generated/string-literal-union-string-literal.js index c0f7ba1ec22..d19eab1205a 100644 --- a/test/built-ins/RegExp/unicodeSets/generated/string-literal-union-string-literal.js +++ b/test/built-ins/RegExp/unicodeSets/generated/string-literal-union-string-literal.js @@ -1,4 +1,4 @@ -// Copyright 2022 Mathias Bynens. All rights reserved. +// Copyright 2024 Mathias Bynens. All rights reserved. // This code is governed by the BSD license found in the LICENSE file. /*--- @@ -8,7 +8,7 @@ description: > properties of strings, string literals, and set operations info: | Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests - Unicode v14.0.0 + Unicode v16.0.0 esid: sec-patterns features: [regexp-v-flag] includes: [regExpUtils.js] diff --git a/test/built-ins/String/prototype/match/regexp-prototype-match-v-flag.js b/test/built-ins/String/prototype/match/regexp-prototype-match-v-flag.js new file mode 100644 index 00000000000..c324559f93c --- /dev/null +++ b/test/built-ins/String/prototype/match/regexp-prototype-match-v-flag.js @@ -0,0 +1,20 @@ +// Copyright (C) 2024 Tan Meng. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. +/*--- +esid: sec-regexp.prototype-@@match +description: RegExp.prototype[@@match] behavior with 'v' flag +features: [Symbol.match, regexp-v-flag] +includes: [compareArray.js] +---*/ + +const text = '𠮷a𠮷b𠮷'; + +function doMatch(regex) { + return RegExp.prototype[Symbol.match].call(regex, text); +} + +assert.compareArray(doMatch(/𠮷/g), ["𠮷", "𠮷", "𠮷"], "Basic match with g flag"); +assert.compareArray(doMatch(/𠮷/v), ["𠮷"], "Match with v flag"); +assert.compareArray(doMatch(/\p{Script=Han}/gv), ["𠮷", "𠮷", "𠮷"], "Unicode property escapes with v flag"); +assert.compareArray(doMatch(/./gv), ["𠮷", "a", "𠮷", "b", "𠮷"], "Dot with v flag"); +assert.sameValue(doMatch(/x/v), null, "Non-matching regex"); diff --git a/test/built-ins/String/prototype/matchAll/regexp-prototype-matchAll-v-flag.js b/test/built-ins/String/prototype/matchAll/regexp-prototype-matchAll-v-flag.js new file mode 100644 index 00000000000..2ab6b28284f --- /dev/null +++ b/test/built-ins/String/prototype/matchAll/regexp-prototype-matchAll-v-flag.js @@ -0,0 +1,43 @@ +// Copyright (C) 2024 Tan Meng. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. +/*--- +esid: sec-regexp.prototype-@@matchall +description: RegExp.prototype[@@matchAll] behavior with 'v' flag +features: [Symbol.matchAll, regexp-v-flag] +---*/ + +const text = '𠮷a𠮷b𠮷'; + +function doMatchAll(regex) { + return Array.from(RegExp.prototype[Symbol.matchAll].call(regex, text), m => [m[0], m.index]); +} + +assert.sameValue( + doMatchAll(/𠮷/g).toString(), + "𠮷,0,𠮷,3,𠮷,6", + "Basic matchAll with g flag" +); + +assert.sameValue( + doMatchAll(/𠮷/gv).toString(), + "𠮷,0,𠮷,3,𠮷,6", + "matchAll with v flag" +); + +assert.sameValue( + doMatchAll(/\p{Script=Han}/gv).toString(), + "𠮷,0,𠮷,3,𠮷,6", + "Unicode property escapes with v flag" +); + +assert.sameValue( + doMatchAll(/./gv).toString(), + "𠮷,0,a,2,𠮷,3,b,5,𠮷,6", + "Dot with v flag" +); + +assert.sameValue( + doMatchAll(/(?:)/gv).length, + 6, + "Empty matches with v flag" +); diff --git a/test/built-ins/String/prototype/replace/regexp-prototype-replace-v-flag.js b/test/built-ins/String/prototype/replace/regexp-prototype-replace-v-flag.js new file mode 100644 index 00000000000..57d9e5db071 --- /dev/null +++ b/test/built-ins/String/prototype/replace/regexp-prototype-replace-v-flag.js @@ -0,0 +1,23 @@ +// Copyright (C) 2024 Tan Meng. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. +/*--- +esid: sec-regexp.prototype-@@replace +description: RegExp.prototype[@@replace] behavior with 'v' flag +features: [Symbol.replace, regexp-v-flag] +---*/ + +const text = '𠮷a𠮷b𠮷'; + +function doReplace(regex, replacement) { + return RegExp.prototype[Symbol.replace].call(regex, text, replacement); +} + +assert.sameValue(doReplace(/𠮷/g, '-'), "-a-b-", "Basic replace with g flag"); +assert.sameValue(doReplace(/𠮷/v, '-'), "-a𠮷b𠮷", "Replace with v flag"); +assert.sameValue(doReplace(/\p{Script=Han}/gv, 'X'), "XaXbX", "Unicode property escapes with v flag"); +assert.sameValue(doReplace(/./gv, '$&$&'), "𠮷𠮷aa𠮷𠮷bb𠮷𠮷", "Dot with v flag"); +assert.sameValue( + doReplace(/./gv, (match, index) => `[${match}:${index}]`), + "[𠮷:0][a:2][𠮷:3][b:5][𠮷:6]", + "Replace with function" +); diff --git a/test/built-ins/String/prototype/search/regexp-prototype-search-v-flag.js.js b/test/built-ins/String/prototype/search/regexp-prototype-search-v-flag.js.js new file mode 100644 index 00000000000..e59d60dc1e6 --- /dev/null +++ b/test/built-ins/String/prototype/search/regexp-prototype-search-v-flag.js.js @@ -0,0 +1,20 @@ +// Copyright (C) 2024 Tan Meng. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. +/*--- +esid: sec-regexp.prototype-@@search +description: RegExp.prototype[@@search] behavior with 'v' flag +features: [Symbol.search, regexp-v-flag] +---*/ + +const text = '𠮷a𠮷b𠮷'; + +function doSearch(regex) { + return RegExp.prototype[Symbol.search].call(regex, text); +} + +assert.sameValue(doSearch(/a/), 2, "Basic search without v flag"); +assert.sameValue(doSearch(/a/v), 2, "Search with v flag"); +assert.sameValue(doSearch(/𠮷/), 0, "Search for surrogate pair without v flag"); +assert.sameValue(doSearch(/𠮷/v), 0, "Search for surrogate pair with v flag"); +assert.sameValue(doSearch(/\p{Script=Han}/v), 0, "Unicode property escapes with v flag"); +assert.sameValue(doSearch(/b./v), 5, "Dot with v flag"); diff --git a/test/built-ins/Temporal/Duration/prototype/round/round-and-balance-calendar-units-with-increment-disallowed.js b/test/built-ins/Temporal/Duration/prototype/round/round-and-balance-calendar-units-with-increment-disallowed.js new file mode 100644 index 00000000000..279427eee12 --- /dev/null +++ b/test/built-ins/Temporal/Duration/prototype/round/round-and-balance-calendar-units-with-increment-disallowed.js @@ -0,0 +1,81 @@ +// Copyright (C) 2024 Igalia, S.L. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +esid: sec-temporal.duration.prototype.round +description: > + Disallow rounding to an increment of calendar units >1 if also balancing +includes: [temporalHelpers.js] +features: [Temporal] +---*/ + +const relativeTo = new Temporal.PlainDate(2024, 1, 1); + +const months = Temporal.Duration.from({ months: 9 }); + +TemporalHelpers.assertDuration(months.round({ + relativeTo, + smallestUnit: "months", + roundingIncrement: 8, + roundingMode: "ceil", +}), 0, 16, 0, 0, 0, 0, 0, 0, 0, 0, "OK to round to an increment of months"); + +TemporalHelpers.assertDuration(months.round({ + relativeTo, + largestUnit: "years", + smallestUnit: "months", +}), 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, "OK to balance to years while rounding to 1 month"); + +assert.throws(RangeError, () => months.round({ + relativeTo, + largestUnit: "years", + smallestUnit: "months", + roundingIncrement: 8, + roundingMode: "ceil", +}), "Cannot round to an increment of months while also balancing to years"); + +const weeks = Temporal.Duration.from({ weeks: 7 }); + +TemporalHelpers.assertDuration(weeks.round({ + relativeTo, + smallestUnit: "weeks", + roundingIncrement: 6, + roundingMode: "ceil", +}), 0, 0, 12, 0, 0, 0, 0, 0, 0, 0, "OK to round to an increment of weeks"); + +TemporalHelpers.assertDuration(weeks.round({ + relativeTo, + largestUnit: "months", + smallestUnit: "weeks", +}), 0, 1, 3, 0, 0, 0, 0, 0, 0, 0, "OK to balance to months while rounding to 1 week"); + +assert.throws(RangeError, () => weeks.round({ + relativeTo, + largestUnit: "months", + smallestUnit: "weeks", + roundingIncrement: 6, + roundingMode: "ceil", +}), "Cannot round to an increment of weeks while also balancing to months"); + +const days = Temporal.Duration.from({ days: 31 }); + +TemporalHelpers.assertDuration(days.round({ + relativeTo, + smallestUnit: "days", + roundingIncrement: 30, + roundingMode: "ceil", +}), 0, 0, 0, 60, 0, 0, 0, 0, 0, 0, "OK to round to an increment of days"); + +TemporalHelpers.assertDuration(days.round({ + relativeTo, + largestUnit: "weeks", + smallestUnit: "days", +}), 0, 0, 4, 3, 0, 0, 0, 0, 0, 0, "OK to balance to weeks while rounding to 1 day"); + +assert.throws(RangeError, () => days.round({ + relativeTo, + largestUnit: "weeks", + smallestUnit: "days", + roundingIncrement: 30, + roundingMode: "ceil", +}), "Cannot round to an increment of days while also balancing to weeks"); diff --git a/test/built-ins/TypedArray/out-of-bounds-behaves-like-detached.js b/test/built-ins/TypedArray/out-of-bounds-behaves-like-detached.js new file mode 100644 index 00000000000..7aa51819d2b --- /dev/null +++ b/test/built-ins/TypedArray/out-of-bounds-behaves-like-detached.js @@ -0,0 +1,21 @@ +// Copyright 2023 the V8 project authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +esid: sec-isvalidintegerindex +description: > + TypedArrays backed by resizable buffers that are out-of-bounds behave + as if they were detached +includes: [resizableArrayBufferUtils.js] +features: [resizable-arraybuffer] +---*/ + +const rab = CreateResizableArrayBuffer(16, 40); +const i8a = new Int8Array(rab, 0, 4); +i8a.__proto__ = { 2: 'wrong value' }; +i8a[2] = 10; +assert.sameValue(i8a[2], 10); +assert(2 in i8a); +rab.resize(0); +assert.sameValue(i8a[2], undefined); +assert(!(2 in i8a)); diff --git a/test/built-ins/TypedArray/out-of-bounds-get-and-set.js b/test/built-ins/TypedArray/out-of-bounds-get-and-set.js new file mode 100644 index 00000000000..4d7019ae3a9 --- /dev/null +++ b/test/built-ins/TypedArray/out-of-bounds-get-and-set.js @@ -0,0 +1,55 @@ +// Copyright 2023 the V8 project authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +esid: sec-isvalidintegerindex +description: > + Getting and setting in-bounds and out-of-bounds indices on TypedArrays backed + by resizable buffers. +includes: [resizableArrayBufferUtils.js] +features: [resizable-arraybuffer] +---*/ + +for (let ctor of ctors) { + const rab = CreateResizableArrayBuffer(4 * ctor.BYTES_PER_ELEMENT, 40 * ctor.BYTES_PER_ELEMENT); + const array = new ctor(rab, 0, 4); + // Initial values + for (let i = 0; i < 4; ++i) { + assert.sameValue(Convert(array[i]), 0); + } + // Within-bounds write + for (let i = 0; i < 4; ++i) { + array[i] = MayNeedBigInt(array, i); + } + // Within-bounds read + for (let i = 0; i < 4; ++i) { + assert.sameValue(Convert(array[i]), i, `${ctor} array fails within-bounds read`); + } + rab.resize(2 * ctor.BYTES_PER_ELEMENT); + // OOB read. If the RAB isn't large enough to fit the entire TypedArray, + // the length of the TypedArray is treated as 0. + for (let i = 0; i < 4; ++i) { + assert.sameValue(array[i], undefined); + } + // OOB write (has no effect) + for (let i = 0; i < 4; ++i) { + array[i] = MayNeedBigInt(array, 10); + } + rab.resize(4 * ctor.BYTES_PER_ELEMENT); + // Within-bounds read + for (let i = 0; i < 2; ++i) { + assert.sameValue(array[i], MayNeedBigInt(array, i)); + } + // The shrunk-and-regrown part got zeroed. + for (let i = 2; i < 4; ++i) { + assert.sameValue(array[i], MayNeedBigInt(array, 0)); + } + rab.resize(40 * ctor.BYTES_PER_ELEMENT); + // Within-bounds read + for (let i = 0; i < 2; ++i) { + assert.sameValue(array[i], MayNeedBigInt(array, i)); + } + for (let i = 2; i < 4; ++i) { + assert.sameValue(array[i], MayNeedBigInt(array, 0)); + } +} diff --git a/test/built-ins/TypedArray/out-of-bounds-has.js b/test/built-ins/TypedArray/out-of-bounds-has.js new file mode 100644 index 00000000000..513532ffd7a --- /dev/null +++ b/test/built-ins/TypedArray/out-of-bounds-has.js @@ -0,0 +1,41 @@ +// Copyright 2023 the V8 project authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +esid: sec-isvalidintegerindex +description: > + In-bound indices are testable with `in` on TypedArrays backed by resizable buffers. +info: | + IsValidIntegerIndex ( O, index ) + ... + 6. Let length be IntegerIndexedObjectLength(O, getBufferByteLength). + 7. If length is out-of-bounds or ℝ(index) < 0 or ℝ(index) ≥ length, return false. + ... +includes: [resizableArrayBufferUtils.js] +features: [resizable-arraybuffer] +---*/ + +for (let ctor of ctors) { + const rab = CreateResizableArrayBuffer(4 * ctor.BYTES_PER_ELEMENT, 40 * ctor.BYTES_PER_ELEMENT); + const array = new ctor(rab, 0, 4); + // Within-bounds read + for (let i = 0; i < 4; ++i) { + assert(i in array); + } + rab.resize(2 * ctor.BYTES_PER_ELEMENT); + // OOB read. If the RAB isn't large enough to fit the entire TypedArray, + // the length of the TypedArray is treated as 0. + for (let i = 0; i < 4; ++i) { + assert(!(i in array)); + } + rab.resize(4 * ctor.BYTES_PER_ELEMENT); + // Within-bounds read + for (let i = 0; i < 4; ++i) { + assert(i in array); + } + rab.resize(40 * ctor.BYTES_PER_ELEMENT); + // Within-bounds read + for (let i = 0; i < 4; ++i) { + assert(i in array); + } +} diff --git a/test/built-ins/TypedArray/prototype/at/resizable-buffer.js b/test/built-ins/TypedArray/prototype/at/resizable-buffer.js index 6379e403321..9fea7397d0e 100644 --- a/test/built-ins/TypedArray/prototype/at/resizable-buffer.js +++ b/test/built-ins/TypedArray/prototype/at/resizable-buffer.js @@ -24,7 +24,7 @@ for (let ctor of ctors) { // Write some data into the array. let ta_write = new ctor(rab); for (let i = 0; i < 4; ++i) { - WriteToTypedArray(ta_write, i, i); + ta_write[i] = MayNeedBigInt(ta_write, i); } assert.sameValue(TypedArrayAtHelper(fixedLength, -1), 3); assert.sameValue(TypedArrayAtHelper(lengthTracking, -1), 3); diff --git a/test/built-ins/TypedArray/prototype/copyWithin/coerced-target-start-end-shrink.js b/test/built-ins/TypedArray/prototype/copyWithin/coerced-target-start-end-shrink.js index 34e5ea74d0a..65270444add 100644 --- a/test/built-ins/TypedArray/prototype/copyWithin/coerced-target-start-end-shrink.js +++ b/test/built-ins/TypedArray/prototype/copyWithin/coerced-target-start-end-shrink.js @@ -34,7 +34,7 @@ for (let ctor of ctors) { const rab = CreateResizableArrayBuffer(4 * ctor.BYTES_PER_ELEMENT, 8 * ctor.BYTES_PER_ELEMENT); const lengthTracking = new ctor(rab); for (let i = 0; i < 4; ++i) { - WriteToTypedArray(lengthTracking, i, i); + lengthTracking[i] = MayNeedBigInt(lengthTracking, i); } // [0, 1, 2, 3] // ^ @@ -58,7 +58,7 @@ for (let ctor of ctors) { const rab = CreateResizableArrayBuffer(4 * ctor.BYTES_PER_ELEMENT, 8 * ctor.BYTES_PER_ELEMENT); const lengthTracking = new ctor(rab); for (let i = 0; i < 4; ++i) { - WriteToTypedArray(lengthTracking, i, i); + lengthTracking[i] = MayNeedBigInt(lengthTracking, i); } // [0, 1, 2, 3] // ^ diff --git a/test/built-ins/TypedArray/prototype/copyWithin/coerced-target-start-grow.js b/test/built-ins/TypedArray/prototype/copyWithin/coerced-target-start-grow.js index 6d1b3fc9d04..94495d35bd0 100644 --- a/test/built-ins/TypedArray/prototype/copyWithin/coerced-target-start-grow.js +++ b/test/built-ins/TypedArray/prototype/copyWithin/coerced-target-start-grow.js @@ -13,13 +13,13 @@ for (let ctor of ctors) { const rab = CreateResizableArrayBuffer(4 * ctor.BYTES_PER_ELEMENT, 8 * ctor.BYTES_PER_ELEMENT); const lengthTracking = new ctor(rab); for (let i = 0; i < 4; ++i) { - WriteToTypedArray(lengthTracking, i, i); + lengthTracking[i] = MayNeedBigInt(lengthTracking, i); } const evil = { valueOf: () => { rab.resize(6 * ctor.BYTES_PER_ELEMENT); - WriteToTypedArray(lengthTracking, 4, 4); - WriteToTypedArray(lengthTracking, 5, 5); + lengthTracking[4] = MayNeedBigInt(lengthTracking, 4); + lengthTracking[5] = MayNeedBigInt(lengthTracking, 5); return 0; } }; @@ -37,7 +37,7 @@ for (let ctor of ctors) { ]); rab.resize(4 * ctor.BYTES_PER_ELEMENT); for (let i = 0; i < 4; ++i) { - WriteToTypedArray(lengthTracking, i, i); + lengthTracking[i] = MayNeedBigInt(lengthTracking, i); } // Orig. array: [0, 1, 2, 3] [4, 5] diff --git a/test/built-ins/TypedArray/prototype/copyWithin/resizable-buffer.js b/test/built-ins/TypedArray/prototype/copyWithin/resizable-buffer.js index 7bd24ffc0b1..d86049c04e6 100644 --- a/test/built-ins/TypedArray/prototype/copyWithin/resizable-buffer.js +++ b/test/built-ins/TypedArray/prototype/copyWithin/resizable-buffer.js @@ -20,7 +20,7 @@ for (let ctor of ctors) { // Write some data into the array. const taWrite = new ctor(rab); for (let i = 0; i < 4; ++i) { - WriteToTypedArray(taWrite, i, i); + taWrite[i] = MayNeedBigInt(taWrite, i); } // Orig. array: [0, 1, 2, 3] @@ -37,7 +37,7 @@ for (let ctor of ctors) { 3 ]); for (let i = 0; i < 4; ++i) { - WriteToTypedArray(taWrite, i, i); + taWrite[i] = MayNeedBigInt(taWrite, i); } fixedLengthWithOffset.copyWithin(0, 1); assert.compareArray(ToNumbers(fixedLengthWithOffset), [ @@ -45,7 +45,7 @@ for (let ctor of ctors) { 3 ]); for (let i = 0; i < 4; ++i) { - WriteToTypedArray(taWrite, i, i); + taWrite[i] = MayNeedBigInt(taWrite, i); } lengthTracking.copyWithin(0, 2); assert.compareArray(ToNumbers(lengthTracking), [ @@ -63,7 +63,7 @@ for (let ctor of ctors) { // Shrink so that fixed length TAs go out of bounds. rab.resize(3 * ctor.BYTES_PER_ELEMENT); for (let i = 0; i < 3; ++i) { - WriteToTypedArray(taWrite, i, i); + taWrite[i] = MayNeedBigInt(taWrite, i); } // Orig. array: [0, 1, 2] @@ -92,7 +92,7 @@ for (let ctor of ctors) { // Shrink so that the TAs with offset go out of bounds. rab.resize(1 * ctor.BYTES_PER_ELEMENT); - WriteToTypedArray(taWrite, 0, 0); + taWrite[0] = MayNeedBigInt(taWrite, 0); assert.throws(TypeError, () => { fixedLength.copyWithin(0, 1, 1); }); @@ -124,7 +124,7 @@ for (let ctor of ctors) { // Grow so that all TAs are back in-bounds. rab.resize(6 * ctor.BYTES_PER_ELEMENT); for (let i = 0; i < 6; ++i) { - WriteToTypedArray(taWrite, i, i); + taWrite[i] = MayNeedBigInt(taWrite, i); } // Orig. array: [0, 1, 2, 3, 4, 5] @@ -141,7 +141,7 @@ for (let ctor of ctors) { 3 ]); for (let i = 0; i < 6; ++i) { - WriteToTypedArray(taWrite, i, i); + taWrite[i] = MayNeedBigInt(taWrite, i); } fixedLengthWithOffset.copyWithin(0, 1); assert.compareArray(ToNumbers(fixedLengthWithOffset), [ @@ -149,7 +149,7 @@ for (let ctor of ctors) { 3 ]); for (let i = 0; i < 6; ++i) { - WriteToTypedArray(taWrite, i, i); + taWrite[i] = MayNeedBigInt(taWrite, i); } // [0, 1, 2, 3, 4, 5, ...] << lengthTracking @@ -164,7 +164,7 @@ for (let ctor of ctors) { 5 ]); for (let i = 0; i < 6; ++i) { - WriteToTypedArray(taWrite, i, i); + taWrite[i] = MayNeedBigInt(taWrite, i); } // [2, 3, 4, 5, ...] << lengthTrackingWithOffset diff --git a/test/built-ins/TypedArray/prototype/entries/resizable-buffer.js b/test/built-ins/TypedArray/prototype/entries/resizable-buffer.js index a5fae1ba7bf..1124bb2a6e5 100644 --- a/test/built-ins/TypedArray/prototype/entries/resizable-buffer.js +++ b/test/built-ins/TypedArray/prototype/entries/resizable-buffer.js @@ -31,7 +31,7 @@ for (let ctor of ctors) { // Write some data into the array. const taWrite = new ctor(rab); for (let i = 0; i < 4; ++i) { - WriteToTypedArray(taWrite, i, 2 * i); + taWrite[i] = MayNeedBigInt(taWrite, 2 * i); } // Orig. array: [0, 2, 4, 6] @@ -140,7 +140,7 @@ for (let ctor of ctors) { // Grow so that all TAs are back in-bounds. rab.resize(6 * ctor.BYTES_PER_ELEMENT); for (let i = 0; i < 6; ++i) { - WriteToTypedArray(taWrite, i, 2 * i); + taWrite[i] = MayNeedBigInt(taWrite, 2 * i); } // Orig. array: [0, 2, 4, 6, 8, 10] diff --git a/test/built-ins/TypedArray/prototype/every/resizable-buffer.js b/test/built-ins/TypedArray/prototype/every/resizable-buffer.js index 22369d62715..37140219f38 100644 --- a/test/built-ins/TypedArray/prototype/every/resizable-buffer.js +++ b/test/built-ins/TypedArray/prototype/every/resizable-buffer.js @@ -20,7 +20,7 @@ for (let ctor of ctors) { // Write some data into the array. const taWrite = new ctor(rab); for (let i = 0; i < 4; ++i) { - WriteToTypedArray(taWrite, i, 2 * i); + taWrite[i] = MayNeedBigInt(taWrite, 2 * i); } // Orig. array: [0, 2, 4, 6] @@ -102,7 +102,7 @@ for (let ctor of ctors) { // Grow so that all TAs are back in-bounds. rab.resize(6 * ctor.BYTES_PER_ELEMENT); for (let i = 0; i < 6; ++i) { - WriteToTypedArray(taWrite, i, 2 * i); + taWrite[i] = MayNeedBigInt(taWrite, 2 * i); } // Orig. array: [0, 2, 4, 6, 8, 10] diff --git a/test/built-ins/TypedArray/prototype/filter/resizable-buffer.js b/test/built-ins/TypedArray/prototype/filter/resizable-buffer.js index de536e29129..b0700f2ed33 100644 --- a/test/built-ins/TypedArray/prototype/filter/resizable-buffer.js +++ b/test/built-ins/TypedArray/prototype/filter/resizable-buffer.js @@ -20,7 +20,7 @@ for (let ctor of ctors) { // Write some data into the array. const taWrite = new ctor(rab); for (let i = 0; i < 4; ++i) { - WriteToTypedArray(taWrite, i, i); + taWrite[i] = MayNeedBigInt(taWrite, i); } // Orig. array: [0, 1, 2, 3] @@ -94,7 +94,7 @@ for (let ctor of ctors) { // Grow so that all TAs are back in-bounds. rab.resize(6 * ctor.BYTES_PER_ELEMENT); for (let i = 0; i < 6; ++i) { - WriteToTypedArray(taWrite, i, i); + taWrite[i] = MayNeedBigInt(taWrite, i); } // Orig. array: [0, 1, 2, 3, 4, 5] diff --git a/test/built-ins/TypedArray/prototype/find/resizable-buffer.js b/test/built-ins/TypedArray/prototype/find/resizable-buffer.js index 128f4c1140f..98ac15257f7 100644 --- a/test/built-ins/TypedArray/prototype/find/resizable-buffer.js +++ b/test/built-ins/TypedArray/prototype/find/resizable-buffer.js @@ -20,7 +20,7 @@ for (let ctor of ctors) { // Write some data into the array. const taWrite = new ctor(rab); for (let i = 0; i < 4; ++i) { - WriteToTypedArray(taWrite, i, 2 * i); + taWrite[i] = MayNeedBigInt(taWrite, 2 * i); } // Orig. array: [0, 2, 4, 6] @@ -85,10 +85,10 @@ for (let ctor of ctors) { // Grow so that all TAs are back in-bounds. rab.resize(6 * ctor.BYTES_PER_ELEMENT); for (let i = 0; i < 4; ++i) { - WriteToTypedArray(taWrite, i, 0); + taWrite[i] = MayNeedBigInt(taWrite, 0); } - WriteToTypedArray(taWrite, 4, 2); - WriteToTypedArray(taWrite, 5, 4); + taWrite[4] = MayNeedBigInt(taWrite, 2); + taWrite[5] = MayNeedBigInt(taWrite, 4); // Orig. array: [0, 0, 0, 0, 2, 4] // [0, 0, 0, 0] << fixedLength diff --git a/test/built-ins/TypedArray/prototype/findIndex/resizable-buffer.js b/test/built-ins/TypedArray/prototype/findIndex/resizable-buffer.js index 645ff3369af..ef2b768a2d8 100644 --- a/test/built-ins/TypedArray/prototype/findIndex/resizable-buffer.js +++ b/test/built-ins/TypedArray/prototype/findIndex/resizable-buffer.js @@ -20,7 +20,7 @@ for (let ctor of ctors) { // Write some data into the array. const taWrite = new ctor(rab); for (let i = 0; i < 4; ++i) { - WriteToTypedArray(taWrite, i, 2 * i); + taWrite[i] = MayNeedBigInt(taWrite, 2 * i); } // Orig. array: [0, 2, 4, 6] @@ -84,10 +84,10 @@ for (let ctor of ctors) { // Grow so that all TAs are back in-bounds. rab.resize(6 * ctor.BYTES_PER_ELEMENT); for (let i = 0; i < 4; ++i) { - WriteToTypedArray(taWrite, i, 0); + taWrite[i] = MayNeedBigInt(taWrite, 0); } - WriteToTypedArray(taWrite, 4, 2); - WriteToTypedArray(taWrite, 5, 4); + taWrite[4] = MayNeedBigInt(taWrite, 2); + taWrite[5] = MayNeedBigInt(taWrite, 4); // Orig. array: [0, 0, 0, 0, 2, 4] // [0, 0, 0, 0] << fixedLength diff --git a/test/built-ins/TypedArray/prototype/findLast/resizable-buffer.js b/test/built-ins/TypedArray/prototype/findLast/resizable-buffer.js index 0b8bcc20442..7d842f18b2a 100644 --- a/test/built-ins/TypedArray/prototype/findLast/resizable-buffer.js +++ b/test/built-ins/TypedArray/prototype/findLast/resizable-buffer.js @@ -20,7 +20,7 @@ for (let ctor of ctors) { // Write some data into the array. const taWrite = new ctor(rab); for (let i = 0; i < 4; ++i) { - WriteToTypedArray(taWrite, i, 2 * i); + taWrite[i] = MayNeedBigInt(taWrite, 2 * i); } // Orig. array: [0, 2, 4, 6] @@ -85,10 +85,10 @@ for (let ctor of ctors) { // Grow so that all TAs are back in-bounds. rab.resize(6 * ctor.BYTES_PER_ELEMENT); for (let i = 0; i < 4; ++i) { - WriteToTypedArray(taWrite, i, 0); + taWrite[i] = MayNeedBigInt(taWrite, 0); } - WriteToTypedArray(taWrite, 4, 2); - WriteToTypedArray(taWrite, 5, 4); + taWrite[4] = MayNeedBigInt(taWrite, 2); + taWrite[5] = MayNeedBigInt(taWrite, 4); // Orig. array: [0, 0, 0, 0, 2, 4] // [0, 0, 0, 0] << fixedLength diff --git a/test/built-ins/TypedArray/prototype/findLastIndex/resizable-buffer.js b/test/built-ins/TypedArray/prototype/findLastIndex/resizable-buffer.js index 3adf4d0ebbd..0dad13566c4 100644 --- a/test/built-ins/TypedArray/prototype/findLastIndex/resizable-buffer.js +++ b/test/built-ins/TypedArray/prototype/findLastIndex/resizable-buffer.js @@ -20,7 +20,7 @@ for (let ctor of ctors) { // Write some data into the array. const taWrite = new ctor(rab); for (let i = 0; i < 4; ++i) { - WriteToTypedArray(taWrite, i, 2 * i); + taWrite[i] = MayNeedBigInt(taWrite, 2 * i); } // Orig. array: [0, 2, 4, 6] @@ -84,10 +84,10 @@ for (let ctor of ctors) { // Grow so that all TAs are back in-bounds. rab.resize(6 * ctor.BYTES_PER_ELEMENT); for (let i = 0; i < 4; ++i) { - WriteToTypedArray(taWrite, i, 0); + taWrite[i] = MayNeedBigInt(taWrite, 0); } - WriteToTypedArray(taWrite, 4, 2); - WriteToTypedArray(taWrite, 5, 4); + taWrite[4] = MayNeedBigInt(taWrite, 2); + taWrite[5] = MayNeedBigInt(taWrite, 4); // Orig. array: [0, 0, 0, 0, 2, 4] // [0, 0, 0, 0] << fixedLength diff --git a/test/built-ins/TypedArray/prototype/forEach/resizable-buffer.js b/test/built-ins/TypedArray/prototype/forEach/resizable-buffer.js index 74ab29bb238..411ae267f41 100644 --- a/test/built-ins/TypedArray/prototype/forEach/resizable-buffer.js +++ b/test/built-ins/TypedArray/prototype/forEach/resizable-buffer.js @@ -20,7 +20,7 @@ for (let ctor of ctors) { // Write some data into the array. const taWrite = new ctor(rab); for (let i = 0; i < 4; ++i) { - WriteToTypedArray(taWrite, i, 2 * i); + taWrite[i] = MayNeedBigInt(taWrite, 2 * i); } // Orig. array: [0, 2, 4, 6] @@ -109,7 +109,7 @@ for (let ctor of ctors) { // Grow so that all TAs are back in-bounds. rab.resize(6 * ctor.BYTES_PER_ELEMENT); for (let i = 0; i < 6; ++i) { - WriteToTypedArray(taWrite, i, 2 * i); + taWrite[i] = MayNeedBigInt(taWrite, 2 * i); } // Orig. array: [0, 2, 4, 6, 8, 10] diff --git a/test/built-ins/TypedArray/prototype/includes/coerced-searchelement-fromindex-resize.js b/test/built-ins/TypedArray/prototype/includes/coerced-searchelement-fromindex-resize.js index 8fed6fec140..8eeced9cb9b 100644 --- a/test/built-ins/TypedArray/prototype/includes/coerced-searchelement-fromindex-resize.js +++ b/test/built-ins/TypedArray/prototype/includes/coerced-searchelement-fromindex-resize.js @@ -10,13 +10,6 @@ includes: [resizableArrayBufferUtils.js] features: [resizable-arraybuffer, Array.prototype.includes] ---*/ -function MayNeedBigInt(ta, n) { - if (typeof n == 'number' && (ta instanceof BigInt64Array || ta instanceof BigUint64Array)) { - return BigInt(n); - } - return n; -} - for (let ctor of ctors) { const rab = CreateResizableArrayBuffer(4 * ctor.BYTES_PER_ELEMENT, 8 * ctor.BYTES_PER_ELEMENT); const fixedLength = new ctor(rab, 0, 4); @@ -61,7 +54,7 @@ for (let ctor of ctors) { const rab = CreateResizableArrayBuffer(4 * ctor.BYTES_PER_ELEMENT, 8 * ctor.BYTES_PER_ELEMENT); const lengthTracking = new ctor(rab); for (let i = 0; i < 4; ++i) { - WriteToTypedArray(lengthTracking, i, 1); + lengthTracking[i] = MayNeedBigInt(lengthTracking, 1); } let evil = { valueOf: () => { @@ -77,7 +70,7 @@ for (let ctor of ctors) { for (let ctor of ctors) { const rab = CreateResizableArrayBuffer(4 * ctor.BYTES_PER_ELEMENT, 8 * ctor.BYTES_PER_ELEMENT); const lengthTracking = new ctor(rab); - WriteToTypedArray(lengthTracking, 0, 1); + lengthTracking[0] = MayNeedBigInt(lengthTracking, 1); let evil = { valueOf: () => { rab.resize(6 * ctor.BYTES_PER_ELEMENT); diff --git a/test/built-ins/TypedArray/prototype/includes/resizable-buffer.js b/test/built-ins/TypedArray/prototype/includes/resizable-buffer.js index 8e99ce5db68..523422df226 100644 --- a/test/built-ins/TypedArray/prototype/includes/resizable-buffer.js +++ b/test/built-ins/TypedArray/prototype/includes/resizable-buffer.js @@ -10,13 +10,6 @@ includes: [resizableArrayBufferUtils.js] features: [resizable-arraybuffer, Array.prototype.includes] ---*/ -function MayNeedBigInt(ta, n) { - if (typeof n == 'number' && (ta instanceof BigInt64Array || ta instanceof BigUint64Array)) { - return BigInt(n); - } - return n; -} - for (let ctor of ctors) { const rab = CreateResizableArrayBuffer(4 * ctor.BYTES_PER_ELEMENT, 8 * ctor.BYTES_PER_ELEMENT); const fixedLength = new ctor(rab, 0, 4); @@ -27,7 +20,7 @@ for (let ctor of ctors) { // Write some data into the array. const taWrite = new ctor(rab); for (let i = 0; i < 4; ++i) { - WriteToTypedArray(taWrite, i, 2 * i); + taWrite[i] = MayNeedBigInt(taWrite, 2 * i); } // Orig. array: [0, 2, 4, 6] @@ -116,7 +109,7 @@ for (let ctor of ctors) { // Grow so that all TAs are back in-bounds. rab.resize(6 * ctor.BYTES_PER_ELEMENT); for (let i = 0; i < 6; ++i) { - WriteToTypedArray(taWrite, i, 2 * i); + taWrite[i] = MayNeedBigInt(taWrite, 2 * i); } // Orig. array: [0, 2, 4, 6, 8, 10] diff --git a/test/built-ins/TypedArray/prototype/indexOf/coerced-searchelement-fromindex-grow.js b/test/built-ins/TypedArray/prototype/indexOf/coerced-searchelement-fromindex-grow.js index 7b63c5009c0..f18ccf1a8ce 100644 --- a/test/built-ins/TypedArray/prototype/indexOf/coerced-searchelement-fromindex-grow.js +++ b/test/built-ins/TypedArray/prototype/indexOf/coerced-searchelement-fromindex-grow.js @@ -10,19 +10,12 @@ includes: [resizableArrayBufferUtils.js] features: [resizable-arraybuffer] ---*/ -function MayNeedBigInt(ta, n) { - if (typeof n == 'number' && (ta instanceof BigInt64Array || ta instanceof BigUint64Array)) { - return BigInt(n); - } - return n; -} - // Growing + length-tracking TA. for (let ctor of ctors) { const rab = CreateResizableArrayBuffer(4 * ctor.BYTES_PER_ELEMENT, 8 * ctor.BYTES_PER_ELEMENT); const lengthTracking = new ctor(rab); for (let i = 0; i < 4; ++i) { - WriteToTypedArray(lengthTracking, i, 1); + lengthTracking[i] = MayNeedBigInt(lengthTracking, 1); } let evil = { valueOf: () => { @@ -40,7 +33,7 @@ for (let ctor of ctors) { for (let ctor of ctors) { const rab = CreateResizableArrayBuffer(4 * ctor.BYTES_PER_ELEMENT, 8 * ctor.BYTES_PER_ELEMENT); const lengthTracking = new ctor(rab); - WriteToTypedArray(lengthTracking, 0, 1); + lengthTracking[0] = MayNeedBigInt(lengthTracking, 1); let evil = { valueOf: () => { rab.resize(6 * ctor.BYTES_PER_ELEMENT); diff --git a/test/built-ins/TypedArray/prototype/indexOf/coerced-searchelement-fromindex-shrink.js b/test/built-ins/TypedArray/prototype/indexOf/coerced-searchelement-fromindex-shrink.js index befab22a275..6a2ffce3f2f 100644 --- a/test/built-ins/TypedArray/prototype/indexOf/coerced-searchelement-fromindex-shrink.js +++ b/test/built-ins/TypedArray/prototype/indexOf/coerced-searchelement-fromindex-shrink.js @@ -10,13 +10,6 @@ includes: [resizableArrayBufferUtils.js] features: [resizable-arraybuffer] ---*/ -function MayNeedBigInt(ta, n) { - if (typeof n == 'number' && (ta instanceof BigInt64Array || ta instanceof BigUint64Array)) { - return BigInt(n); - } - return n; -} - // Shrinking + fixed-length TA. for (let ctor of ctors) { const rab = CreateResizableArrayBuffer(4 * ctor.BYTES_PER_ELEMENT, 8 * ctor.BYTES_PER_ELEMENT); @@ -52,7 +45,7 @@ for (let ctor of ctors) { const rab = CreateResizableArrayBuffer(4 * ctor.BYTES_PER_ELEMENT, 8 * ctor.BYTES_PER_ELEMENT); const lengthTracking = new ctor(rab); for (let i = 0; i < 4; ++i) { - WriteToTypedArray(lengthTracking, i, i); + lengthTracking[i] = MayNeedBigInt(lengthTracking, i); } let evil = { valueOf: () => { diff --git a/test/built-ins/TypedArray/prototype/indexOf/resizable-buffer.js b/test/built-ins/TypedArray/prototype/indexOf/resizable-buffer.js index 43519225f0e..16398b4e762 100644 --- a/test/built-ins/TypedArray/prototype/indexOf/resizable-buffer.js +++ b/test/built-ins/TypedArray/prototype/indexOf/resizable-buffer.js @@ -10,13 +10,6 @@ includes: [resizableArrayBufferUtils.js] features: [resizable-arraybuffer] ---*/ -function MayNeedBigInt(ta, n) { - if (typeof n == 'number' && (ta instanceof BigInt64Array || ta instanceof BigUint64Array)) { - return BigInt(n); - } - return n; -} - for (let ctor of ctors) { const rab = CreateResizableArrayBuffer(4 * ctor.BYTES_PER_ELEMENT, 8 * ctor.BYTES_PER_ELEMENT); const fixedLength = new ctor(rab, 0, 4); @@ -27,7 +20,7 @@ for (let ctor of ctors) { // Write some data into the array. const taWrite = new ctor(rab); for (let i = 0; i < 4; ++i) { - WriteToTypedArray(taWrite, i, Math.floor(i / 2)); + taWrite[i] = MayNeedBigInt(taWrite, Math.floor(i / 2)); } // Orig. array: [0, 0, 1, 1] @@ -116,7 +109,7 @@ for (let ctor of ctors) { // Grow so that all TAs are back in-bounds. rab.resize(6 * ctor.BYTES_PER_ELEMENT); for (let i = 0; i < 6; ++i) { - WriteToTypedArray(taWrite, i, Math.floor(i / 2)); + taWrite[i] = MayNeedBigInt(taWrite, Math.floor(i / 2)); } // Orig. array: [0, 0, 1, 1, 2, 2] diff --git a/test/built-ins/TypedArray/prototype/join/resizable-buffer.js b/test/built-ins/TypedArray/prototype/join/resizable-buffer.js index 02d96a4f0c4..cbe3ca744bd 100644 --- a/test/built-ins/TypedArray/prototype/join/resizable-buffer.js +++ b/test/built-ins/TypedArray/prototype/join/resizable-buffer.js @@ -20,7 +20,7 @@ for (let ctor of ctors) { // Write some data into the array. for (let i = 0; i < 4; ++i) { - WriteToTypedArray(taWrite, i, 2 * i); + taWrite[i] = MayNeedBigInt(taWrite, 2 * i); } // Orig. array: [0, 2, 4, 6] @@ -82,7 +82,7 @@ for (let ctor of ctors) { // Grow so that all TAs are back in-bounds. rab.resize(6 * ctor.BYTES_PER_ELEMENT); for (let i = 0; i < 6; ++i) { - WriteToTypedArray(taWrite, i, 2 * i); + taWrite[i] = MayNeedBigInt(taWrite, 2 * i); } // Orig. array: [0, 2, 4, 6, 8, 10] diff --git a/test/built-ins/TypedArray/prototype/keys/resizable-buffer.js b/test/built-ins/TypedArray/prototype/keys/resizable-buffer.js index 694087c7e82..21a2d34ec92 100644 --- a/test/built-ins/TypedArray/prototype/keys/resizable-buffer.js +++ b/test/built-ins/TypedArray/prototype/keys/resizable-buffer.js @@ -20,7 +20,7 @@ for (let ctor of ctors) { // Write some data into the array. const taWrite = new ctor(rab); for (let i = 0; i < 4; ++i) { - WriteToTypedArray(taWrite, i, 2 * i); + taWrite[i] = MayNeedBigInt(taWrite, 2 * i); } // Orig. array: [0, 2, 4, 6] @@ -105,7 +105,7 @@ for (let ctor of ctors) { // Grow so that all TAs are back in-bounds. rab.resize(6 * ctor.BYTES_PER_ELEMENT); for (let i = 0; i < 6; ++i) { - WriteToTypedArray(taWrite, i, 2 * i); + taWrite[i] = MayNeedBigInt(taWrite, 2 * i); } // Orig. array: [0, 2, 4, 6, 8, 10] diff --git a/test/built-ins/TypedArray/prototype/lastIndexOf/coerced-position-grow.js b/test/built-ins/TypedArray/prototype/lastIndexOf/coerced-position-grow.js index 8ac83875814..504642dbc09 100644 --- a/test/built-ins/TypedArray/prototype/lastIndexOf/coerced-position-grow.js +++ b/test/built-ins/TypedArray/prototype/lastIndexOf/coerced-position-grow.js @@ -10,19 +10,12 @@ includes: [resizableArrayBufferUtils.js] features: [resizable-arraybuffer] ---*/ -function MayNeedBigInt(ta, n) { - if (typeof n == 'number' && (ta instanceof BigInt64Array || ta instanceof BigUint64Array)) { - return BigInt(n); - } - return n; -} - // Growing + length-tracking TA. for (let ctor of ctors) { const rab = CreateResizableArrayBuffer(4 * ctor.BYTES_PER_ELEMENT, 8 * ctor.BYTES_PER_ELEMENT); const lengthTracking = new ctor(rab); for (let i = 0; i < 4; ++i) { - WriteToTypedArray(lengthTracking, i, 1); + lengthTracking[i] = MayNeedBigInt(lengthTracking, 1); } let evil = { valueOf: () => { diff --git a/test/built-ins/TypedArray/prototype/lastIndexOf/coerced-position-shrink.js b/test/built-ins/TypedArray/prototype/lastIndexOf/coerced-position-shrink.js index 2879e776ed6..ee5a88faa9f 100644 --- a/test/built-ins/TypedArray/prototype/lastIndexOf/coerced-position-shrink.js +++ b/test/built-ins/TypedArray/prototype/lastIndexOf/coerced-position-shrink.js @@ -10,13 +10,6 @@ includes: [resizableArrayBufferUtils.js] features: [resizable-arraybuffer] ---*/ -function MayNeedBigInt(ta, n) { - if (typeof n == 'number' && (ta instanceof BigInt64Array || ta instanceof BigUint64Array)) { - return BigInt(n); - } - return n; -} - // Shrinking + fixed-length TA. for (let ctor of ctors) { const rab = CreateResizableArrayBuffer(4 * ctor.BYTES_PER_ELEMENT, 8 * ctor.BYTES_PER_ELEMENT); @@ -52,7 +45,7 @@ for (let ctor of ctors) { const rab = CreateResizableArrayBuffer(4 * ctor.BYTES_PER_ELEMENT, 8 * ctor.BYTES_PER_ELEMENT); const lengthTracking = new ctor(rab); for (let i = 0; i < 4; ++i) { - WriteToTypedArray(lengthTracking, i, i); + lengthTracking[i] = MayNeedBigInt(lengthTracking, i); } let evil = { valueOf: () => { diff --git a/test/built-ins/TypedArray/prototype/lastIndexOf/resizable-buffer.js b/test/built-ins/TypedArray/prototype/lastIndexOf/resizable-buffer.js index bba8d75a979..4b2ac4536d8 100644 --- a/test/built-ins/TypedArray/prototype/lastIndexOf/resizable-buffer.js +++ b/test/built-ins/TypedArray/prototype/lastIndexOf/resizable-buffer.js @@ -10,13 +10,6 @@ includes: [resizableArrayBufferUtils.js] features: [resizable-arraybuffer] ---*/ -function MayNeedBigInt(ta, n) { - if (typeof n == 'number' && (ta instanceof BigInt64Array || ta instanceof BigUint64Array)) { - return BigInt(n); - } - return n; -} - for (let ctor of ctors) { const rab = CreateResizableArrayBuffer(4 * ctor.BYTES_PER_ELEMENT, 8 * ctor.BYTES_PER_ELEMENT); const fixedLength = new ctor(rab, 0, 4); @@ -27,7 +20,7 @@ for (let ctor of ctors) { // Write some data into the array. const taWrite = new ctor(rab); for (let i = 0; i < 4; ++i) { - WriteToTypedArray(taWrite, i, Math.floor(i / 2)); + taWrite[i] = MayNeedBigInt(taWrite, Math.floor(i / 2)); } // Orig. array: [0, 0, 1, 1] @@ -120,7 +113,7 @@ for (let ctor of ctors) { // Grow so that all TAs are back in-bounds. rab.resize(6 * ctor.BYTES_PER_ELEMENT); for (let i = 0; i < 6; ++i) { - WriteToTypedArray(taWrite, i, Math.floor(i / 2)); + taWrite[i] = MayNeedBigInt(taWrite, Math.floor(i / 2)); } // Orig. array: [0, 0, 1, 1, 2, 2] diff --git a/test/built-ins/TypedArray/prototype/map/resizable-buffer.js b/test/built-ins/TypedArray/prototype/map/resizable-buffer.js index 24c7cf1bb42..1f01829b168 100644 --- a/test/built-ins/TypedArray/prototype/map/resizable-buffer.js +++ b/test/built-ins/TypedArray/prototype/map/resizable-buffer.js @@ -20,7 +20,7 @@ for (let ctor of ctors) { // Write some data into the array. const taWrite = new ctor(rab); for (let i = 0; i < taWrite.length; ++i) { - WriteToTypedArray(taWrite, i, 2 * i); + taWrite[i] = MayNeedBigInt(taWrite, 2 * i); } // Orig. array: [0, 2, 4, 6] @@ -122,7 +122,7 @@ for (let ctor of ctors) { // Grow so that all TAs are back in-bounds. rab.resize(6 * ctor.BYTES_PER_ELEMENT); for (let i = 0; i < 6; ++i) { - WriteToTypedArray(taWrite, i, 2 * i); + taWrite[i] = MayNeedBigInt(taWrite, 2 * i); } // Orig. array: [0, 2, 4, 6, 8, 10] diff --git a/test/built-ins/TypedArray/prototype/map/speciesctor-resizable-buffer-grow.js b/test/built-ins/TypedArray/prototype/map/speciesctor-resizable-buffer-grow.js index d9999cb8a22..bc17496648a 100644 --- a/test/built-ins/TypedArray/prototype/map/speciesctor-resizable-buffer-grow.js +++ b/test/built-ins/TypedArray/prototype/map/speciesctor-resizable-buffer-grow.js @@ -32,7 +32,7 @@ for (let ctor of ctors) { const rab = CreateResizableArrayBuffer(4 * ctor.BYTES_PER_ELEMENT, 8 * ctor.BYTES_PER_ELEMENT); const taWrite = new ctor(rab); for (let i = 0; i < 4; ++i) { - WriteToTypedArray(taWrite, i, i); + taWrite[i] = MayNeedBigInt(taWrite, i); } let resizeWhenConstructorCalled = false; class MyArray extends ctor { @@ -59,7 +59,7 @@ for (let ctor of ctors) { const rab = CreateResizableArrayBuffer(4 * ctor.BYTES_PER_ELEMENT, 8 * ctor.BYTES_PER_ELEMENT); const taWrite = new ctor(rab); for (let i = 0; i < 4; ++i) { - WriteToTypedArray(taWrite, i, i); + taWrite[i] = MayNeedBigInt(taWrite, i); } let resizeWhenConstructorCalled = false; class MyArray extends ctor { diff --git a/test/built-ins/TypedArray/prototype/map/speciesctor-resizable-buffer-shrink.js b/test/built-ins/TypedArray/prototype/map/speciesctor-resizable-buffer-shrink.js index 7b4e47d99a2..50e43622f5e 100644 --- a/test/built-ins/TypedArray/prototype/map/speciesctor-resizable-buffer-shrink.js +++ b/test/built-ins/TypedArray/prototype/map/speciesctor-resizable-buffer-shrink.js @@ -56,7 +56,7 @@ for (let ctor of ctors) { const rab = CreateResizableArrayBuffer(4 * ctor.BYTES_PER_ELEMENT, 8 * ctor.BYTES_PER_ELEMENT); const taWrite = new ctor(rab); for (let i = 0; i < 4; ++i) { - WriteToTypedArray(taWrite, i, i); + taWrite[i] = MayNeedBigInt(taWrite, i); } let resizeWhenConstructorCalled = false; class MyArray extends ctor { diff --git a/test/built-ins/TypedArray/prototype/reduce/resizable-buffer.js b/test/built-ins/TypedArray/prototype/reduce/resizable-buffer.js index 4956887d17d..6891e9423b3 100644 --- a/test/built-ins/TypedArray/prototype/reduce/resizable-buffer.js +++ b/test/built-ins/TypedArray/prototype/reduce/resizable-buffer.js @@ -20,7 +20,7 @@ for (let ctor of ctors) { // Write some data into the array. const taWrite = new ctor(rab); for (let i = 0; i < 4; ++i) { - WriteToTypedArray(taWrite, i, 2 * i); + taWrite[i] = MayNeedBigInt(taWrite, 2 * i); } // Orig. array: [0, 2, 4, 6] @@ -109,7 +109,7 @@ for (let ctor of ctors) { // Grow so that all TAs are back in-bounds. rab.resize(6 * ctor.BYTES_PER_ELEMENT); for (let i = 0; i < 6; ++i) { - WriteToTypedArray(taWrite, i, 2 * i); + taWrite[i] = MayNeedBigInt(taWrite, 2 * i); } // Orig. array: [0, 2, 4, 6, 8, 10] diff --git a/test/built-ins/TypedArray/prototype/reduceRight/resizable-buffer.js b/test/built-ins/TypedArray/prototype/reduceRight/resizable-buffer.js index a3c2770c06d..305b072ba7c 100644 --- a/test/built-ins/TypedArray/prototype/reduceRight/resizable-buffer.js +++ b/test/built-ins/TypedArray/prototype/reduceRight/resizable-buffer.js @@ -20,7 +20,7 @@ for (let ctor of ctors) { // Write some data into the array. const taWrite = new ctor(rab); for (let i = 0; i < 4; ++i) { - WriteToTypedArray(taWrite, i, 2 * i); + taWrite[i] = MayNeedBigInt(taWrite, 2 * i); } // Orig. array: [0, 2, 4, 6] @@ -110,7 +110,7 @@ for (let ctor of ctors) { // Grow so that all TAs are back in-bounds. rab.resize(6 * ctor.BYTES_PER_ELEMENT); for (let i = 0; i < 6; ++i) { - WriteToTypedArray(taWrite, i, 2 * i); + taWrite[i] = MayNeedBigInt(taWrite, 2 * i); } // Orig. array: [0, 2, 4, 6, 8, 10] diff --git a/test/built-ins/TypedArray/prototype/resizable-and-fixed-have-same-prototype.js b/test/built-ins/TypedArray/prototype/resizable-and-fixed-have-same-prototype.js new file mode 100644 index 00000000000..fcf535b2218 --- /dev/null +++ b/test/built-ins/TypedArray/prototype/resizable-and-fixed-have-same-prototype.js @@ -0,0 +1,19 @@ +// Copyright 2023 the V8 project authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +esid: sec-%typedarray%.prototype +description: > + TypedArrays that are backed by resizable buffers have the same prototypes + as those backed by fixed-length buffers +includes: [resizableArrayBufferUtils.js] +features: [resizable-arraybuffer] +---*/ + +const rab = CreateResizableArrayBuffer(40, 80); +const ab = new ArrayBuffer(80); +for (let ctor of ctors) { + const ta_rab = new ctor(rab, 0, 3); + const ta_ab = new ctor(ab, 0, 3); + assert.sameValue(ta_ab.__proto__, ta_rab.__proto__); +} diff --git a/test/built-ins/TypedArray/prototype/reverse/resizable-buffer.js b/test/built-ins/TypedArray/prototype/reverse/resizable-buffer.js index 7c30bb0c1bc..ec0162b3a4d 100644 --- a/test/built-ins/TypedArray/prototype/reverse/resizable-buffer.js +++ b/test/built-ins/TypedArray/prototype/reverse/resizable-buffer.js @@ -20,7 +20,7 @@ for (let ctor of ctors) { function WriteData() { // Write some data into the array. for (let i = 0; i < wholeArrayView.length; ++i) { - WriteToTypedArray(wholeArrayView, i, 2 * i); + wholeArrayView[i] = MayNeedBigInt(wholeArrayView, 2 * i); } } WriteData(); diff --git a/test/built-ins/TypedArray/prototype/set/array-arg-value-conversion-resizes-array-buffer.js b/test/built-ins/TypedArray/prototype/set/array-arg-value-conversion-resizes-array-buffer.js new file mode 100644 index 00000000000..d61c28813b0 --- /dev/null +++ b/test/built-ins/TypedArray/prototype/set/array-arg-value-conversion-resizes-array-buffer.js @@ -0,0 +1,66 @@ +// Copyright (C) 2024 André Bargull. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +esid: sec-settypedarrayfromarraylike +description: > + Value conversion shrinks and then grows the array buffer. +info: | + 23.2.3.26.2 SetTypedArrayFromArrayLike ( target, targetOffset, source ) + ... + 9. Repeat, while k < srcLength, + a. Let Pk be ! ToString(𝔽(k)). + b. Let value be ? Get(src, Pk). + c. Let targetIndex be 𝔽(targetOffset + k). + d. Perform ? TypedArraySetElement(target, targetIndex, value). + e. Set k to k + 1. + +features: [resizable-arraybuffer] +includes: [compareArray.js] +---*/ + +var rab = new ArrayBuffer(5, {maxByteLength: 10}); +var typedArray = new Int8Array(rab); + +var log = []; + +var growNumber = 0 + +var grow = { + valueOf() { + log.push("grow"); + rab.resize(rab.byteLength + 1); + return --growNumber; + } +}; + +var shrinkNumber = 0 + +var shrink = { + valueOf() { + log.push("shrink"); + rab.resize(rab.byteLength - 1); + return ++shrinkNumber; + } +}; + +var array = { + get length() { + return 5; + }, + 0: shrink, + 1: shrink, + 2: shrink, + 3: grow, + 4: grow, +} + +typedArray.set(array); + +assert.compareArray(log, [ + "shrink", "shrink", "shrink", "grow", "grow", +]); + +assert.compareArray(typedArray, [ + 1, 2, 0, 0 +]); diff --git a/test/built-ins/TypedArray/prototype/set/typedarray-arg-src-backed-by-resizable-buffer.js b/test/built-ins/TypedArray/prototype/set/typedarray-arg-src-backed-by-resizable-buffer.js index 79aba4fb701..b11b759e6c0 100644 --- a/test/built-ins/TypedArray/prototype/set/typedarray-arg-src-backed-by-resizable-buffer.js +++ b/test/built-ins/TypedArray/prototype/set/typedarray-arg-src-backed-by-resizable-buffer.js @@ -42,7 +42,7 @@ for (let targetIsResizable of [ // Write some data into the array. const taFull = new sourceCtor(rab); for (let i = 0; i < 4; ++i) { - WriteToTypedArray(taFull, i, i + 1); + taFull[i] = MayNeedBigInt(taFull, i + 1); } // Orig. array: [1, 2, 3, 4] @@ -179,7 +179,7 @@ for (let targetIsResizable of [ // Grow so that all TAs are back in-bounds. rab.resize(6 * sourceCtor.BYTES_PER_ELEMENT); for (let i = 0; i < 6; ++i) { - WriteToTypedArray(taFull, i, i + 1); + taFull[i] = MayNeedBigInt(taFull, i + 1); } // Orig. array: [1, 2, 3, 4, 5, 6] diff --git a/test/built-ins/TypedArray/prototype/slice/coerced-start-end-grow.js b/test/built-ins/TypedArray/prototype/slice/coerced-start-end-grow.js index 4a927dd8aae..48cb09eb19b 100644 --- a/test/built-ins/TypedArray/prototype/slice/coerced-start-end-grow.js +++ b/test/built-ins/TypedArray/prototype/slice/coerced-start-end-grow.js @@ -15,7 +15,7 @@ for (let ctor of ctors) { const rab = CreateResizableArrayBuffer(4 * ctor.BYTES_PER_ELEMENT, 8 * ctor.BYTES_PER_ELEMENT); const lengthTracking = new ctor(rab); for (let i = 0; i < 4; ++i) { - WriteToTypedArray(lengthTracking, i, i + 1); + lengthTracking[i] = MayNeedBigInt(lengthTracking, i + 1); } const evil = { valueOf: () => { @@ -37,7 +37,7 @@ for (let ctor of ctors) { const rab = CreateResizableArrayBuffer(4 * ctor.BYTES_PER_ELEMENT, 8 * ctor.BYTES_PER_ELEMENT); const lengthTracking = new ctor(rab); for (let i = 0; i < 4; ++i) { - WriteToTypedArray(lengthTracking, i, i + 1); + lengthTracking[i] = MayNeedBigInt(lengthTracking, i + 1); } const evil = { valueOf: () => { diff --git a/test/built-ins/TypedArray/prototype/slice/coerced-start-end-shrink.js b/test/built-ins/TypedArray/prototype/slice/coerced-start-end-shrink.js index 1359f8ba340..750a78ca975 100644 --- a/test/built-ins/TypedArray/prototype/slice/coerced-start-end-shrink.js +++ b/test/built-ins/TypedArray/prototype/slice/coerced-start-end-shrink.js @@ -29,7 +29,7 @@ for (let ctor of ctors) { const rab = CreateResizableArrayBuffer(4 * ctor.BYTES_PER_ELEMENT, 8 * ctor.BYTES_PER_ELEMENT); const lengthTracking = new ctor(rab); for (let i = 0; i < 4; ++i) { - WriteToTypedArray(lengthTracking, i, i + 1); + lengthTracking[i] = MayNeedBigInt(lengthTracking, i + 1); } const evil = { valueOf: () => { @@ -69,7 +69,7 @@ for (let ctor of ctors) { const rab = CreateResizableArrayBuffer(4 * ctor.BYTES_PER_ELEMENT, 8 * ctor.BYTES_PER_ELEMENT); const lengthTracking = new ctor(rab); for (let i = 0; i < 4; ++i) { - WriteToTypedArray(lengthTracking, i, i + 1); + lengthTracking[i] = MayNeedBigInt(lengthTracking, i + 1); } const evil = { valueOf: () => { diff --git a/test/built-ins/TypedArray/prototype/slice/resizable-buffer.js b/test/built-ins/TypedArray/prototype/slice/resizable-buffer.js index db072bf3d5c..cc92b2f6165 100644 --- a/test/built-ins/TypedArray/prototype/slice/resizable-buffer.js +++ b/test/built-ins/TypedArray/prototype/slice/resizable-buffer.js @@ -20,7 +20,7 @@ for (let ctor of ctors) { // Write some data into the array. const taWrite = new ctor(rab); for (let i = 0; i < 4; ++i) { - WriteToTypedArray(taWrite, i, i); + taWrite[i] = MayNeedBigInt(taWrite, i); } const fixedLengthSlice = fixedLength.slice(); assert.compareArray(ToNumbers(fixedLengthSlice), [ diff --git a/test/built-ins/TypedArray/prototype/slice/speciesctor-resize.js b/test/built-ins/TypedArray/prototype/slice/speciesctor-resize.js index 280d8a3c13a..2da4d2a531d 100644 --- a/test/built-ins/TypedArray/prototype/slice/speciesctor-resize.js +++ b/test/built-ins/TypedArray/prototype/slice/speciesctor-resize.js @@ -36,7 +36,7 @@ for (let ctor of ctors) { const rab = CreateResizableArrayBuffer(4 * ctor.BYTES_PER_ELEMENT, 8 * ctor.BYTES_PER_ELEMENT); const taWrite = new ctor(rab); for (let i = 0; i < 4; ++i) { - WriteToTypedArray(taWrite, i, 1); + taWrite[i] = MayNeedBigInt(taWrite, 1); } let resizeWhenConstructorCalled = false; class MyArray extends ctor { @@ -69,7 +69,7 @@ for (let ctor of ctors) { const rab = CreateResizableArrayBuffer(4 * ctor.BYTES_PER_ELEMENT, 8 * ctor.BYTES_PER_ELEMENT); const taWrite = new ctor(rab); for (let i = 0; i < 4; ++i) { - WriteToTypedArray(taWrite, i, 1); + taWrite[i] = MayNeedBigInt(taWrite, 1); } let resizeWhenConstructorCalled = false; class MyArray extends ctor { @@ -99,7 +99,7 @@ for (let ctor of ctors) { const rab = CreateResizableArrayBuffer(8, 16); const taWrite = new Uint8Array(rab); for (let i = 0; i < 8; ++i) { - WriteToTypedArray(taWrite, i, 255); + taWrite[i] = MayNeedBigInt(taWrite, 255); } let resizeWhenConstructorCalled = false; class MyArray extends Uint16Array { diff --git a/test/built-ins/TypedArray/prototype/some/resizable-buffer.js b/test/built-ins/TypedArray/prototype/some/resizable-buffer.js index 6a4c08b55dd..dcb57bac937 100644 --- a/test/built-ins/TypedArray/prototype/some/resizable-buffer.js +++ b/test/built-ins/TypedArray/prototype/some/resizable-buffer.js @@ -19,7 +19,7 @@ for (let ctor of ctors) { // Write some data into the array. const taWrite = new ctor(rab); for (let i = 0; i < 4; ++i) { - WriteToTypedArray(taWrite, i, 2 * i); + taWrite[i] = MayNeedBigInt(taWrite, 2 * i); } // Orig. array: [0, 2, 4, 6] @@ -95,7 +95,7 @@ for (let ctor of ctors) { // Grow so that all TAs are back in-bounds. rab.resize(6 * ctor.BYTES_PER_ELEMENT); for (let i = 0; i < 6; ++i) { - WriteToTypedArray(taWrite, i, 2 * i); + taWrite[i] = MayNeedBigInt(taWrite, 2 * i); } // Orig. array: [0, 2, 4, 6, 8, 10] diff --git a/test/built-ins/TypedArray/prototype/sort/comparefn-grow.js b/test/built-ins/TypedArray/prototype/sort/comparefn-grow.js index 11f09bf4675..8a54fbd01b4 100644 --- a/test/built-ins/TypedArray/prototype/sort/comparefn-grow.js +++ b/test/built-ins/TypedArray/prototype/sort/comparefn-grow.js @@ -27,7 +27,7 @@ function ResizeAndCompare(rab, resizeTo) { function WriteUnsortedData(taFull) { for (let i = 0; i < taFull.length; ++i) { - WriteToTypedArray(taFull, i, 10 - i); + taFull[i] = MayNeedBigInt(taFull, 10 - i); } } diff --git a/test/built-ins/TypedArray/prototype/sort/comparefn-resizable-buffer.js b/test/built-ins/TypedArray/prototype/sort/comparefn-resizable-buffer.js index c3c8c933717..ded426ff1d7 100644 --- a/test/built-ins/TypedArray/prototype/sort/comparefn-resizable-buffer.js +++ b/test/built-ins/TypedArray/prototype/sort/comparefn-resizable-buffer.js @@ -20,7 +20,7 @@ for (let ctor of ctors) { function WriteUnsortedData() { // Write some data into the array. for (let i = 0; i < taFull.length; ++i) { - WriteToTypedArray(taFull, i, 10 - i); + taFull[i] = MayNeedBigInt(taFull, 10 - i); } } function OddBeforeEvenComparison(a, b) { diff --git a/test/built-ins/TypedArray/prototype/sort/comparefn-shrink.js b/test/built-ins/TypedArray/prototype/sort/comparefn-shrink.js index b0571790668..1daf665b9b7 100644 --- a/test/built-ins/TypedArray/prototype/sort/comparefn-shrink.js +++ b/test/built-ins/TypedArray/prototype/sort/comparefn-shrink.js @@ -27,7 +27,7 @@ function ResizeAndCompare(rab, resizeTo) { function WriteUnsortedData(taFull) { for (let i = 0; i < taFull.length; ++i) { - WriteToTypedArray(taFull, i, 10 - i); + taFull[i] = MayNeedBigInt(taFull, 10 - i); } } diff --git a/test/built-ins/TypedArray/prototype/sort/resizable-buffer-default-comparator.js b/test/built-ins/TypedArray/prototype/sort/resizable-buffer-default-comparator.js index f3386199bd2..a72343d783b 100644 --- a/test/built-ins/TypedArray/prototype/sort/resizable-buffer-default-comparator.js +++ b/test/built-ins/TypedArray/prototype/sort/resizable-buffer-default-comparator.js @@ -22,7 +22,7 @@ for (let ctor of ctors) { function WriteUnsortedData() { // Write some data into the array. for (let i = 0; i < taFull.length; ++i) { - WriteToTypedArray(taFull, i, 10 - 2 * i); + taFull[i] = MayNeedBigInt(taFull, 10 - 2 * i); } } // Orig. array: [10, 8, 6, 4] diff --git a/test/built-ins/TypedArray/prototype/subarray/resizable-buffer.js b/test/built-ins/TypedArray/prototype/subarray/resizable-buffer.js index d740f26b52d..6b0e4fc5cd1 100644 --- a/test/built-ins/TypedArray/prototype/subarray/resizable-buffer.js +++ b/test/built-ins/TypedArray/prototype/subarray/resizable-buffer.js @@ -19,7 +19,7 @@ for (let ctor of ctors) { // Write some data into the array. const taWrite = new ctor(rab); for (let i = 0; i < 4; ++i) { - WriteToTypedArray(taWrite, i, 2 * i); + taWrite[i] = MayNeedBigInt(taWrite, 2 * i); } // Orig. array: [0, 2, 4, 6] @@ -129,7 +129,7 @@ for (let ctor of ctors) { // Grow so that all TAs are back in-bounds. rab.resize(6 * ctor.BYTES_PER_ELEMENT); for (let i = 0; i < 6; ++i) { - WriteToTypedArray(taWrite, i, 2 * i); + taWrite[i] = MayNeedBigInt(taWrite, 2 * i); } // Orig. array: [0, 2, 4, 6, 8, 10] diff --git a/test/built-ins/TypedArray/prototype/toLocaleString/resizable-buffer.js b/test/built-ins/TypedArray/prototype/toLocaleString/resizable-buffer.js index d31c5f5a5bc..0cb4161acc3 100644 --- a/test/built-ins/TypedArray/prototype/toLocaleString/resizable-buffer.js +++ b/test/built-ins/TypedArray/prototype/toLocaleString/resizable-buffer.js @@ -36,7 +36,7 @@ for (let ctor of ctors) { // Write some data into the array. for (let i = 0; i < 4; ++i) { - WriteToTypedArray(taWrite, i, 2 * i); + taWrite[i] = MayNeedBigInt(taWrite, 2 * i); } // Orig. array: [0, 2, 4, 6] @@ -98,7 +98,7 @@ for (let ctor of ctors) { // Grow so that all TAs are back in-bounds. rab.resize(6 * ctor.BYTES_PER_ELEMENT); for (let i = 0; i < 6; ++i) { - WriteToTypedArray(taWrite, i, 2 * i); + taWrite[i] = MayNeedBigInt(taWrite, 2 * i); } // Orig. array: [0, 2, 4, 6, 8, 10] diff --git a/test/built-ins/TypedArray/prototype/values/resizable-buffer.js b/test/built-ins/TypedArray/prototype/values/resizable-buffer.js index e7eb2347ac1..55dfc162ab9 100644 --- a/test/built-ins/TypedArray/prototype/values/resizable-buffer.js +++ b/test/built-ins/TypedArray/prototype/values/resizable-buffer.js @@ -28,7 +28,7 @@ for (let ctor of ctors) { // Write some data into the array. const taWrite = new ctor(rab); for (let i = 0; i < 4; ++i) { - WriteToTypedArray(taWrite, i, 2 * i); + taWrite[i] = MayNeedBigInt(taWrite, 2 * i); } // Orig. array: [0, 2, 4, 6] @@ -113,7 +113,7 @@ for (let ctor of ctors) { // Grow so that all TAs are back in-bounds. rab.resize(6 * ctor.BYTES_PER_ELEMENT); for (let i = 0; i < 6; ++i) { - WriteToTypedArray(taWrite, i, 2 * i); + taWrite[i] = MayNeedBigInt(taWrite, 2 * i); } // Orig. array: [0, 2, 4, 6, 8, 10] diff --git a/test/staging/ArrayBuffer/resizable/length-tracking-1.js b/test/built-ins/TypedArray/resizable-buffer-length-tracking-1.js similarity index 65% rename from test/staging/ArrayBuffer/resizable/length-tracking-1.js rename to test/built-ins/TypedArray/resizable-buffer-length-tracking-1.js index de37b6b6b81..3a887cbdc3b 100644 --- a/test/staging/ArrayBuffer/resizable/length-tracking-1.js +++ b/test/built-ins/TypedArray/resizable-buffer-length-tracking-1.js @@ -1,49 +1,15 @@ -// Copyright 2021 the V8 project authors. All rights reserved. +// Copyright 2023 the V8 project authors. All rights reserved. // This code is governed by the BSD license found in the LICENSE file. /*--- esid: sec-arraybuffer-length description: > - Automatically ported from LengthTracking1 test - in V8's mjsunit test typedarray-resizablearraybuffer.js + Basic functionality of length-tracking TypedArrays backed by resizable + buffers +includes: [resizableArrayBufferUtils.js] features: [resizable-arraybuffer] -flags: [onlyStrict] ---*/ -class MyUint8Array extends Uint8Array { -} - -class MyFloat32Array extends Float32Array { -} - -class MyBigInt64Array extends BigInt64Array { -} - -const builtinCtors = [ - Uint8Array, - Int8Array, - Uint16Array, - Int16Array, - Uint32Array, - Int32Array, - Float32Array, - Float64Array, - Uint8ClampedArray, - BigUint64Array, - BigInt64Array -]; - -const ctors = [ - ...builtinCtors, - MyUint8Array, - MyFloat32Array, - MyBigInt64Array -]; - -function CreateResizableArrayBuffer(byteLength, maxByteLength) { - return new ArrayBuffer(byteLength, { maxByteLength: maxByteLength }); -} - const rab = CreateResizableArrayBuffer(16, 40); let tas = []; for (let ctor of ctors) { diff --git a/test/staging/ArrayBuffer/resizable/length-tracking-2.js b/test/built-ins/TypedArray/resizable-buffer-length-tracking-2.js similarity index 74% rename from test/staging/ArrayBuffer/resizable/length-tracking-2.js rename to test/built-ins/TypedArray/resizable-buffer-length-tracking-2.js index 796c7e5faf5..aa76518aaf1 100644 --- a/test/staging/ArrayBuffer/resizable/length-tracking-2.js +++ b/test/built-ins/TypedArray/resizable-buffer-length-tracking-2.js @@ -1,51 +1,17 @@ -// Copyright 2021 the V8 project authors. All rights reserved. +// Copyright 2023 the V8 project authors. All rights reserved. // This code is governed by the BSD license found in the LICENSE file. /*--- esid: sec-arraybuffer-length description: > - Automatically ported from LengthTracking2 test - in V8's mjsunit test typedarray-resizablearraybuffer.js + Length-tracking TypedArrays backed by resizable buffers with offsets + behave correctly +includes: [resizableArrayBufferUtils.js] features: [resizable-arraybuffer] -flags: [onlyStrict] ---*/ // length-tracking-1 but with offsets. -class MyUint8Array extends Uint8Array { -} - -class MyFloat32Array extends Float32Array { -} - -class MyBigInt64Array extends BigInt64Array { -} - -const builtinCtors = [ - Uint8Array, - Int8Array, - Uint16Array, - Int16Array, - Uint32Array, - Int32Array, - Float32Array, - Float64Array, - Uint8ClampedArray, - BigUint64Array, - BigInt64Array -]; - -const ctors = [ - ...builtinCtors, - MyUint8Array, - MyFloat32Array, - MyBigInt64Array -]; - -function CreateResizableArrayBuffer(byteLength, maxByteLength) { - return new ArrayBuffer(byteLength, { maxByteLength: maxByteLength }); -} - const rab = CreateResizableArrayBuffer(16, 40); const offset = 8; let tas = []; diff --git a/test/built-ins/TypedArrayConstructors/ctors/buffer-arg/resizable-out-of-bounds.js b/test/built-ins/TypedArrayConstructors/ctors/buffer-arg/resizable-out-of-bounds.js new file mode 100644 index 00000000000..4f19aabef33 --- /dev/null +++ b/test/built-ins/TypedArrayConstructors/ctors/buffer-arg/resizable-out-of-bounds.js @@ -0,0 +1,36 @@ +// Copyright 2023 the V8 project authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +esid: sec-initializetypedarrayfromarraybuffer +description: > + Creating a TypedArray from a resizable buffer with invalid bounds + throw RangedError +includes: [resizableArrayBufferUtils.js] +features: [resizable-arraybuffer] +---*/ + +const rab = CreateResizableArrayBuffer(40, 80); +for (let ctor of ctors) { + // Length too big. + assert.throws(RangeError, () => { + new ctor(rab, 0, 40 / ctor.BYTES_PER_ELEMENT + 1); + }); + // Offset too close to the end. + assert.throws(RangeError, () => { + new ctor(rab, 40 - ctor.BYTES_PER_ELEMENT, 2); + }); + // Offset beyond end. + assert.throws(RangeError, () => { + new ctor(rab, 40, 1); + }); + if (ctor.BYTES_PER_ELEMENT > 1) { + // Offset not a multiple of the byte size. + assert.throws(RangeError, () => { + new ctor(rab, 1, 1); + }); + assert.throws(RangeError, () => { + new ctor(rab, 1); + }); + } +} diff --git a/test/staging/ArrayBuffer/resizable/construct-from-typed-array.js b/test/built-ins/TypedArrayConstructors/ctors/typedarray-arg/src-typedarray-resizable-buffer.js similarity index 74% rename from test/staging/ArrayBuffer/resizable/construct-from-typed-array.js rename to test/built-ins/TypedArrayConstructors/ctors/typedarray-arg/src-typedarray-resizable-buffer.js index ce43c073546..c5bbd3ee6aa 100644 --- a/test/staging/ArrayBuffer/resizable/construct-from-typed-array.js +++ b/test/built-ins/TypedArrayConstructors/ctors/typedarray-arg/src-typedarray-resizable-buffer.js @@ -1,50 +1,15 @@ -// Copyright 2021 the V8 project authors. All rights reserved. +// Copyright 2023 the V8 project authors. All rights reserved. // This code is governed by the BSD license found in the LICENSE file. /*--- -esid: sec-arraybuffer-length +esid: sec-initializetypedarrayfromtypedarray description: > - Automatically ported from ConstructFromTypedArray test - in V8's mjsunit test typedarray-resizablearraybuffer.js -includes: [compareArray.js] + Initializing a TypedArray from another TypedArray that is backed by a + resizable buffer +includes: [compareArray.js, resizableArrayBufferUtils.js] features: [resizable-arraybuffer] -flags: [onlyStrict] ---*/ -class MyUint8Array extends Uint8Array { -} - -class MyFloat32Array extends Float32Array { -} - -class MyBigInt64Array extends BigInt64Array { -} - -const builtinCtors = [ - Uint8Array, - Int8Array, - Uint16Array, - Int16Array, - Uint32Array, - Int32Array, - Float32Array, - Float64Array, - Uint8ClampedArray, - BigUint64Array, - BigInt64Array -]; - -const ctors = [ - ...builtinCtors, - MyUint8Array, - MyFloat32Array, - MyBigInt64Array -]; - -function CreateResizableArrayBuffer(byteLength, maxByteLength) { - return new ArrayBuffer(byteLength, { maxByteLength: maxByteLength }); -} - function IsBigIntTypedArray(ta) { return ta instanceof BigInt64Array || ta instanceof BigUint64Array; } @@ -60,29 +25,6 @@ function AllBigIntMatchedCtorCombinations(test) { } } -function WriteToTypedArray(array, index, value) { - if (array instanceof BigInt64Array || array instanceof BigUint64Array) { - array[index] = BigInt(value); - } else { - array[index] = value; - } -} - -function Convert(item) { - if (typeof item == 'bigint') { - return Number(item); - } - return item; -} - -function ToNumbers(array) { - let result = []; - for (let item of array) { - result.push(Convert(item)); - } - return result; -} - AllBigIntMatchedCtorCombinations((targetCtor, sourceCtor) => { const rab = CreateResizableArrayBuffer(4 * sourceCtor.BYTES_PER_ELEMENT, 8 * sourceCtor.BYTES_PER_ELEMENT); const fixedLength = new sourceCtor(rab, 0, 4); @@ -93,7 +35,7 @@ AllBigIntMatchedCtorCombinations((targetCtor, sourceCtor) => { // Write some data into the array. const taFull = new sourceCtor(rab); for (let i = 0; i < 4; ++i) { - WriteToTypedArray(taFull, i, i + 1); + taFull[i] = MayNeedBigInt(taFull, i + 1); } // Orig. array: [1, 2, 3, 4] @@ -172,7 +114,7 @@ AllBigIntMatchedCtorCombinations((targetCtor, sourceCtor) => { // Grow so that all TAs are back in-bounds. rab.resize(6 * sourceCtor.BYTES_PER_ELEMENT); for (let i = 0; i < 6; ++i) { - WriteToTypedArray(taFull, i, i + 1); + taFull[i] = MayNeedBigInt(taFull, i + 1); } // Orig. array: [1, 2, 3, 4, 5, 6] diff --git a/test/built-ins/TypedArrayConstructors/internals/Set/key-is-in-bounds-receiver-is-not-typed-array.js b/test/built-ins/TypedArrayConstructors/internals/Set/key-is-in-bounds-receiver-is-not-typed-array.js new file mode 100644 index 00000000000..e1f5b0f82eb --- /dev/null +++ b/test/built-ins/TypedArrayConstructors/internals/Set/key-is-in-bounds-receiver-is-not-typed-array.js @@ -0,0 +1,36 @@ +// Copyright (C) 2024 André Bargull. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +esid: sec-typedarray-set +description: > + Receiver is not the typed array object. +info: | + 10.4.5.5 [[Set]] ( P, V, Receiver ) + ... + i. If SameValue(O, Receiver) is true, then + ... + ii. If IsValidIntegerIndex(O, numericIndex) is false, return true. + 2. Return ? OrdinarySet(O, P, V, Receiver). + +features: [TypedArray, Reflect.set] +---*/ + +let receiver = {}; + +let typedArray = new Int32Array(10); + +let valueOfCalled = 0; + +let value = { + valueOf() { + valueOfCalled++; + return 1; + } +}; + +assert(Reflect.set(typedArray, 0, value, receiver), "[[Set]] succeeeds"); + +assert.sameValue(valueOfCalled, 0, "valueOf is not called"); + +assert.sameValue(receiver[0], value, "value assigned to receiver[0]"); diff --git a/test/built-ins/TypedArrayConstructors/internals/Set/key-is-out-of-bounds-receiver-is-not-object.js b/test/built-ins/TypedArrayConstructors/internals/Set/key-is-out-of-bounds-receiver-is-not-object.js new file mode 100644 index 00000000000..7236a3d1d9c --- /dev/null +++ b/test/built-ins/TypedArrayConstructors/internals/Set/key-is-out-of-bounds-receiver-is-not-object.js @@ -0,0 +1,34 @@ +// Copyright (C) 2024 André Bargull. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +esid: sec-typedarray-set +description: > + Receiver is not an object. +info: | + 10.4.5.5 [[Set]] ( P, V, Receiver ) + ... + i. If SameValue(O, Receiver) is true, then + 1. Perform ? TypedArraySetElement(O, numericIndex, V). + 2. Return true. + ii. If IsValidIntegerIndex(O, numericIndex) is false, return true. + +features: [TypedArray, Reflect.set] +---*/ + +let receiver = "not an object"; + +let typedArray = new Int32Array(10); + +let valueOfCalled = 0; + +let value = { + valueOf() { + valueOfCalled++; + return 1; + } +}; + +assert(Reflect.set(typedArray, 100, value, receiver), "[[Set]] succeeeds"); + +assert.sameValue(valueOfCalled, 0, "valueOf is not called"); diff --git a/test/built-ins/TypedArrayConstructors/internals/Set/key-is-out-of-bounds-receiver-is-not-typed-array.js b/test/built-ins/TypedArrayConstructors/internals/Set/key-is-out-of-bounds-receiver-is-not-typed-array.js new file mode 100644 index 00000000000..2e772bdabc2 --- /dev/null +++ b/test/built-ins/TypedArrayConstructors/internals/Set/key-is-out-of-bounds-receiver-is-not-typed-array.js @@ -0,0 +1,34 @@ +// Copyright (C) 2024 André Bargull. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +esid: sec-typedarray-set +description: > + Receiver is not the typed array object. +info: | + 10.4.5.5 [[Set]] ( P, V, Receiver ) + ... + i. If SameValue(O, Receiver) is true, then + 1. Perform ? TypedArraySetElement(O, numericIndex, V). + 2. Return true. + ii. If IsValidIntegerIndex(O, numericIndex) is false, return true. + +features: [TypedArray, Reflect.set] +---*/ + +let receiver = {}; + +let typedArray = new Int32Array(10); + +let valueOfCalled = 0; + +let value = { + valueOf() { + valueOfCalled++; + return 1; + } +}; + +assert(Reflect.set(typedArray, 100, value, receiver), "[[Set]] succeeeds"); + +assert.sameValue(valueOfCalled, 0, "valueOf is not called"); diff --git a/test/built-ins/TypedArrayConstructors/internals/Set/key-is-out-of-bounds-receiver-is-proto.js b/test/built-ins/TypedArrayConstructors/internals/Set/key-is-out-of-bounds-receiver-is-proto.js new file mode 100644 index 00000000000..228982d33bb --- /dev/null +++ b/test/built-ins/TypedArrayConstructors/internals/Set/key-is-out-of-bounds-receiver-is-proto.js @@ -0,0 +1,40 @@ +// Copyright (C) 2024 André Bargull. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +esid: sec-typedarray-set +description: > + Receiver is an object in the prototype chain. +info: | + 10.4.5.5 [[Set]] ( P, V, Receiver ) + ... + i. If SameValue(O, Receiver) is true, then + 1. Perform ? TypedArraySetElement(O, numericIndex, V). + 2. Return true. + ii. If IsValidIntegerIndex(O, numericIndex) is false, return true. + + 10.4.5.16 TypedArraySetElement ( O, index, value ) + 1. If O.[[ContentType]] is bigint, let numValue be ? ToBigInt(value). + 2. Otherwise, let numValue be ? ToNumber(value). + ... + +features: [TypedArray, Reflect.set] +---*/ + +let receiver = new Int32Array(10); + +// |receiver| is in the prototype chain of |obj|. +let obj = Object.create(receiver); + +let valueOfCalled = 0; + +let value = { + valueOf() { + valueOfCalled++; + return 1; + } +}; + +assert(Reflect.set(obj, 100, value, receiver), "[[Set]] succeeeds"); + +assert.sameValue(valueOfCalled, 1, "valueOf is called exactly once"); diff --git a/test/built-ins/WeakRef/prototype/deref/gc-cleanup-not-prevented-with-wr-deref.js b/test/built-ins/WeakRef/prototype/deref/gc-cleanup-not-prevented-with-wr-deref.js deleted file mode 100644 index adcd3acb03e..00000000000 --- a/test/built-ins/WeakRef/prototype/deref/gc-cleanup-not-prevented-with-wr-deref.js +++ /dev/null @@ -1,37 +0,0 @@ -// Copyright (C) 2019 Leo Balter. All rights reserved. -// This code is governed by the BSD license found in the LICENSE file. - -/*--- -esid: sec-weak-ref.prototype.deref -description: WeakRef deref should not prevent a GC event -info: | - WeakRef.prototype.deref ( ) - - ... - 4. Let target be the value of weakRef.[[Target]]. - 5. If target is not empty, - a. Perform ! KeepDuringJob(target). - b. Return target. - 6. Return undefined. -features: [FinalizationRegistry.prototype.cleanupSome, WeakRef, host-gc-required] -includes: [async-gc.js] -flags: [async, non-deterministic] ----*/ - -var deref = false; -var wr; - -function emptyCells() { - var target = {}; - wr = new WeakRef(target); - - var prom = asyncGC(target); - target = null; - - return prom; -} - -emptyCells().then(function() { - deref = wr.deref(); - assert.sameValue(deref, undefined); -}).then($DONE, resolveAsyncGC); diff --git a/test/intl402/Temporal/PlainDate/from/calendar-not-supporting-eras.js b/test/intl402/Temporal/PlainDate/from/calendar-not-supporting-eras.js new file mode 100644 index 00000000000..3a399d93d02 --- /dev/null +++ b/test/intl402/Temporal/PlainDate/from/calendar-not-supporting-eras.js @@ -0,0 +1,48 @@ +// Copyright (C) 2024 Igalia, S.L. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +esid: sec-temporal.plaindate.from +description: era and eraYear are ignored (for calendars not using eras) +includes: [temporalHelpers.js] +features: [Temporal] +---*/ + +const result = Temporal.PlainDate.from({ + era: "foobar", + eraYear: 1, + year: 1970, + monthCode: "M01", + day: 1, + calendar: "iso8601", +}); +TemporalHelpers.assertPlainDate(result, 1970, 1, "M01", 1, + "era and eraYear are ignored for calendar not using eras (iso8601)"); + +assert.throws(TypeError, () => Temporal.PlainDate.from({ + era: "foobar", + eraYear: 1, + monthCode: "M01", + day: 1, + calendar: "iso8601", +}), "era and eraYear cannot replace year for calendar not using eras (iso8601)"); + +const resultHebrew = Temporal.PlainDate.from({ + era: "foobar", + eraYear: 1, + year: 5780, + monthCode: "M01", + day: 1, + calendar: "hebrew", +}); +TemporalHelpers.assertPlainDate(resultHebrew, 5780, 1, "M01", 1, + "era and eraYear are ignored for calendar not using eras (Hebrew)"); +assert.sameValue(resultHebrew.calendarId, "hebrew"); + +assert.throws(TypeError, () => Temporal.PlainDate.from({ + era: "foobar", + eraYear: 1, + monthCode: "M01", + day: 1, + calendar: "hebrew", +}), "era and eraYear cannot replace year for calendar not using eras (Hebrew)"); diff --git a/test/intl402/Temporal/PlainDate/from/canonicalize-era-codes.js b/test/intl402/Temporal/PlainDate/from/canonicalize-era-codes.js new file mode 100644 index 00000000000..491d81cf961 --- /dev/null +++ b/test/intl402/Temporal/PlainDate/from/canonicalize-era-codes.js @@ -0,0 +1,39 @@ +// Copyright (C) 2024 Igalia, S.L. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +esid: sec-temporal.plaindate.from +description: Calendar era code is canonicalized +includes: [temporalHelpers.js] +features: [Temporal] +---*/ + +const date1 = Temporal.PlainDate.from({ + calendar: "gregory", + era: "ce", + eraYear: 2024, + year: 2024, + month: 1, + day: 1 +}); +TemporalHelpers.assertPlainDate( + date1, + 2024, 1, "M01", 1, + "'ce' is accepted as alias for 'gregory'", + "gregory", 2024 +); + +const date2 = Temporal.PlainDate.from({ + calendar: "gregory", + era: "bce", + eraYear: 44, + year: -43, + month: 3, + day: 15 +}); +TemporalHelpers.assertPlainDate( + date2, + -43, 3, "M03", 15, + "'bce' is accepted as alias for 'gregory-inverse'", + "gregory-inverse", 44 +); diff --git a/test/intl402/Temporal/PlainDate/prototype/toZonedDateTime/dst-skipped-cross-midnight.js b/test/intl402/Temporal/PlainDate/prototype/toZonedDateTime/dst-skipped-cross-midnight.js new file mode 100644 index 00000000000..5833cc67838 --- /dev/null +++ b/test/intl402/Temporal/PlainDate/prototype/toZonedDateTime/dst-skipped-cross-midnight.js @@ -0,0 +1,33 @@ +// Copyright (C) 2024 Igalia, S.L. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. +/*--- +esid: sec-temporal.plaindate.prototype.tozoneddatetime +description: Test TZDB edge case where start of day is not 00:00 nor 01:00 +includes: [temporalHelpers.js] +features: [Temporal] +---*/ + +// DST spring-forward hour skipped from 1919-03-30T23:30 to 1919-03-31T00:30, so +// day starts at 00:30 +const instance = new Temporal.PlainDate(1919, 3, 31); +const startOfDay = instance.toZonedDateTime("America/Toronto"); +const midnightDisambiguated = instance.toZonedDateTime({ + timeZone: "America/Toronto", + plainTime: new Temporal.PlainTime(), +}); +TemporalHelpers.assertDuration( + startOfDay.until(midnightDisambiguated), + 0, 0, 0, 0, 0, /* minutes = */ 30, 0, 0, 0, 0, + "start of day is 30 minutes earlier than following the disambiguation strategy for midnight" +); + +assert.sameValue( + startOfDay.epochNanoseconds, + instance.toZonedDateTime({ timeZone: "America/Toronto" }).epochNanoseconds, + "omitted plainTime is the same result as using the string shorthand" +); +assert.sameValue( + startOfDay.epochNanoseconds, + instance.toZonedDateTime({ timeZone: "America/Toronto", plainTime: undefined }).epochNanoseconds, + "explicitly undefined plainTime is the same result as using the string shorthand" +); diff --git a/test/intl402/Temporal/PlainDateTime/from/calendar-not-supporting-eras.js b/test/intl402/Temporal/PlainDateTime/from/calendar-not-supporting-eras.js new file mode 100644 index 00000000000..b3f228ef3b0 --- /dev/null +++ b/test/intl402/Temporal/PlainDateTime/from/calendar-not-supporting-eras.js @@ -0,0 +1,48 @@ +// Copyright (C) 2024 Igalia, S.L. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +esid: sec-temporal.plaindatetime.from +description: era and eraYear are ignored (for calendars not using eras) +includes: [temporalHelpers.js] +features: [Temporal] +---*/ + +const result = Temporal.PlainDateTime.from({ + era: "foobar", + eraYear: 1, + year: 1970, + monthCode: "M01", + day: 1, + calendar: "iso8601", +}); +TemporalHelpers.assertPlainDateTime(result, 1970, 1, "M01", 1, 0, 0, 0, 0, 0, 0, + "era and eraYear are ignored for calendar not using eras (iso8601)"); + +assert.throws(TypeError, () => Temporal.PlainDateTime.from({ + era: "foobar", + eraYear: 1, + monthCode: "M01", + day: 1, + calendar: "iso8601", +}), "era and eraYear cannot replace year for calendar not using eras (iso8601)"); + +const resultHebrew = Temporal.PlainDateTime.from({ + era: "foobar", + eraYear: 1, + year: 5780, + monthCode: "M01", + day: 1, + calendar: "hebrew", +}); +TemporalHelpers.assertPlainDateTime(resultHebrew, 5780, 1, "M01", 1, 0, 0, 0, 0, 0, 0, + "era and eraYear are ignored for calendar not using eras (Hebrew)"); +assert.sameValue(resultHebrew.calendarId, "hebrew"); + +assert.throws(TypeError, () => Temporal.PlainDateTime.from({ + era: "foobar", + eraYear: 1, + monthCode: "M01", + day: 1, + calendar: "hebrew", +}), "era and eraYear cannot replace year for calendar not using eras (Hebrew)"); diff --git a/test/intl402/Temporal/PlainDateTime/from/canonicalize-era-codes.js b/test/intl402/Temporal/PlainDateTime/from/canonicalize-era-codes.js new file mode 100644 index 00000000000..116ee551c99 --- /dev/null +++ b/test/intl402/Temporal/PlainDateTime/from/canonicalize-era-codes.js @@ -0,0 +1,39 @@ +// Copyright (C) 2024 Igalia, S.L. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +esid: sec-temporal.plaindatetime.from +description: Calendar era code is canonicalized +includes: [temporalHelpers.js] +features: [Temporal] +---*/ + +const date1 = Temporal.PlainDateTime.from({ + calendar: "gregory", + era: "ce", + eraYear: 2024, + year: 2024, + month: 1, + day: 1 +}); +TemporalHelpers.assertPlainDateTime( + date1, + 2024, 1, "M01", 1, 0, 0, 0, 0, 0, 0, + "'ce' is accepted as alias for 'gregory'", + "gregory", 2024 +); + +const date2 = Temporal.PlainDateTime.from({ + calendar: "gregory", + era: "bce", + eraYear: 44, + year: -43, + month: 3, + day: 15 +}); +TemporalHelpers.assertPlainDateTime( + date2, + -43, 3, "M03", 15, 0, 0, 0, 0, 0, 0, + "'bce' is accepted as alias for 'gregory-inverse'", + "gregory-inverse", 44 +); diff --git a/test/intl402/Temporal/PlainMonthDay/from/calendar-not-supporting-eras.js b/test/intl402/Temporal/PlainMonthDay/from/calendar-not-supporting-eras.js new file mode 100644 index 00000000000..789b1381b8b --- /dev/null +++ b/test/intl402/Temporal/PlainMonthDay/from/calendar-not-supporting-eras.js @@ -0,0 +1,30 @@ +// Copyright (C) 2024 Igalia, S.L. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +esid: sec-temporal.plainmonthday.from +description: era and eraYear are ignored (for calendars not using eras) +includes: [temporalHelpers.js] +features: [Temporal] +---*/ + +const result = Temporal.PlainMonthDay.from({ + era: "foobar", + eraYear: 1, + monthCode: "M01", + day: 1, + calendar: "iso8601", +}); +TemporalHelpers.assertPlainMonthDay(result, "M01", 1, + "era and eraYear are ignored for calendar not using eras (iso8601)"); + +const resultHebrew = Temporal.PlainMonthDay.from({ + era: "foobar", + eraYear: 1, + monthCode: "M01", + day: 1, + calendar: "hebrew", +}); +TemporalHelpers.assertPlainMonthDay(resultHebrew, "M01", 1, + "era and eraYear are ignored for calendar not using eras (Hebrew)"); +assert.sameValue(resultHebrew.calendarId, "hebrew"); diff --git a/test/intl402/Temporal/PlainMonthDay/from/reference-year-1972.js b/test/intl402/Temporal/PlainMonthDay/from/reference-year-1972.js index e0a5b6cad4a..50b9094ea00 100644 --- a/test/intl402/Temporal/PlainMonthDay/from/reference-year-1972.js +++ b/test/intl402/Temporal/PlainMonthDay/from/reference-year-1972.js @@ -10,22 +10,28 @@ features: [Temporal] const result1 = Temporal.PlainMonthDay.from({ year: 2021, monthCode: "M02", day: 29, calendar: "gregory" }); TemporalHelpers.assertPlainMonthDay( - result1, "M02", 29, - "year is ignored and reference year should be 1972 if monthCode is given", + result1, "M02", 28, + "year and monthCode determine if calendar date exists, but reference year should be 1972", 1972 ); const result2 = Temporal.PlainMonthDay.from({ year: 2021, month: 2, day: 29, calendar: "gregory" }, { overflow: "constrain" }); TemporalHelpers.assertPlainMonthDay( result2, "M02", 28, - "if monthCode is not given, year is used to determine if calendar date exists, but reference year should still be 1972", + "year and month determine if calendar date exists, but reference year should be 1972", 1972 ); +assert.throws( + RangeError, + () => Temporal.PlainMonthDay.from({ year: 2021, monthCode: "M02", day: 29, calendar: "gregory" }, { overflow: "reject" }), + "RangeError thrown if monthCode and day does not exist in given year and overflow is reject" +); + assert.throws( RangeError, () => Temporal.PlainMonthDay.from({ year: 2021, month: 2, day: 29, calendar: "gregory" }, { overflow: "reject" }), - "RangeError thrown if calendar date does not exist in given year and overflow is reject" + "RangeError thrown if month and day does not exist in given year and overflow is reject" ); const result3 = Temporal.PlainMonthDay.from({ monthCode: "M01", day: 1, calendar: "hebrew" }); @@ -44,28 +50,41 @@ TemporalHelpers.assertPlainMonthDay( const result5 = Temporal.PlainMonthDay.from({ year: 5781, monthCode: "M02", day: 30, calendar: "hebrew" }); TemporalHelpers.assertPlainMonthDay( - result5, "M02", 30, - "year is ignored if monthCode is given (Cheshvan 5781 has 29 days)", - 1971 + result5, "M02", 29, + "year and monthCode determine if calendar date exists, and reference year must agree (Cheshvan 5781 has 29 days)", + 1972 ); const result6 = Temporal.PlainMonthDay.from({ year: 5781, month: 2, day: 30, calendar: "hebrew" }, { overflow: "constrain" }); TemporalHelpers.assertPlainMonthDay( result6, "M02", 29, - "if monthCode is not given, year is used to determine if calendar date exists, but reference year still correct", + "year and month determine if calendar date exists, and reference year must agree (Cheshvan 5781 has 29 days)", 1972 ); +const result7 = Temporal.PlainMonthDay.from({ monthCode: "M02", day: 30, calendar: "hebrew" }); +TemporalHelpers.assertPlainMonthDay( + result7, "M02", 30, + "reference year must be the latest ISO year at or before 1972 that includes monthCode and day (Cheshvan 5781 has 29 days)", + 1971 +); + +assert.throws( + RangeError, + () => Temporal.PlainMonthDay.from({ year: 5781, monthCode: "M02", day: 30, calendar: "hebrew" }, { overflow: "reject" }), + "RangeError thrown if monthCode and day does not exist in given year and overflow is reject" +); + assert.throws( RangeError, () => Temporal.PlainMonthDay.from({ year: 5781, month: 2, day: 30, calendar: "hebrew" }, { overflow: "reject" }), - "RangeError thrown if calendar date does not exist in given year and overflow is reject" + "RangeError thrown if month and day does not exist in given year and overflow is reject" ); -const result7 = Temporal.PlainMonthDay.from({ monthCode: "M04", day: 26, calendar: "hebrew" }); +const result8 = Temporal.PlainMonthDay.from({ monthCode: "M04", day: 26, calendar: "hebrew" }); TemporalHelpers.assertPlainMonthDay( - result7, "M04", 26, + result8, "M04", 26, "reference date should be the later one, if two options exist in ISO year 1972", 1972 ); -assert.sameValue(result7.toString(), "1972-12-31[u-ca=hebrew]", "reference date"); +assert.sameValue(result8.toString(), "1972-12-31[u-ca=hebrew]", "reference date"); diff --git a/test/intl402/Temporal/PlainYearMonth/from/calendar-not-supporting-eras.js b/test/intl402/Temporal/PlainYearMonth/from/calendar-not-supporting-eras.js new file mode 100644 index 00000000000..5e98b22d068 --- /dev/null +++ b/test/intl402/Temporal/PlainYearMonth/from/calendar-not-supporting-eras.js @@ -0,0 +1,46 @@ +// Copyright (C) 2024 Igalia, S.L. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +esid: sec-temporal.plainyearmonth.from +description: era and eraYear are ignored (for calendars not using eras) +includes: [temporalHelpers.js] +features: [Temporal] +---*/ + +const result = Temporal.PlainYearMonth.from({ + era: "foobar", + eraYear: 1, + year: 1970, + monthCode: "M01", + calendar: "iso8601", +}); +TemporalHelpers.assertPlainYearMonth(result, 1970, 1, "M01", + "era and eraYear are ignored for calendar not using eras (iso8601)"); + +assert.throws(TypeError, () => Temporal.PlainYearMonth.from({ + era: "foobar", + eraYear: 1, + monthCode: "M01", + calendar: "iso8601", +}), "era and eraYear cannot replace year for calendar not using eras (iso8601)"); + +const resultHebrew = Temporal.PlainYearMonth.from({ + era: "foobar", + eraYear: 1, + year: 5780, + monthCode: "M01", + calendar: "hebrew", +}); +TemporalHelpers.assertPlainYearMonth(resultHebrew, 5780, 1, "M01", + "era and eraYear are ignored for calendar not using eras (Hebrew)", + undefined, undefined, 30); +assert.sameValue(resultHebrew.calendarId, "hebrew"); + +assert.throws(TypeError, () => Temporal.PlainYearMonth.from({ + era: "foobar", + eraYear: 1, + monthCode: "M01", + day: 1, + calendar: "hebrew", +}), "era and eraYear cannot replace year for calendar not using eras (Hebrew)"); diff --git a/test/intl402/Temporal/PlainYearMonth/from/canonicalize-era-codes.js b/test/intl402/Temporal/PlainYearMonth/from/canonicalize-era-codes.js new file mode 100644 index 00000000000..553c07f7b8c --- /dev/null +++ b/test/intl402/Temporal/PlainYearMonth/from/canonicalize-era-codes.js @@ -0,0 +1,37 @@ +// Copyright (C) 2024 Igalia, S.L. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +esid: sec-temporal.plainyearmonth.from +description: Calendar era code is canonicalized +includes: [temporalHelpers.js] +features: [Temporal] +---*/ + +const date1 = Temporal.PlainYearMonth.from({ + calendar: "gregory", + era: "ce", + eraYear: 2024, + year: 2024, + month: 1, +}); +TemporalHelpers.assertPlainYearMonth( + date1, + 2024, 1, "M01", + "'ce' is accepted as alias for 'gregory'", + "gregory", 2024 +); + +const date2 = Temporal.PlainYearMonth.from({ + calendar: "gregory", + era: "bce", + eraYear: 44, + year: -43, + month: 3, +}); +TemporalHelpers.assertPlainYearMonth( + date2, + -43, 3, "M03", + "'bce' is accepted as alias for 'gregory-inverse'", + "gregory-inverse", 44 +); diff --git a/test/intl402/Temporal/ZonedDateTime/from/calendar-not-supporting-eras.js b/test/intl402/Temporal/ZonedDateTime/from/calendar-not-supporting-eras.js new file mode 100644 index 00000000000..cf6c7c65014 --- /dev/null +++ b/test/intl402/Temporal/ZonedDateTime/from/calendar-not-supporting-eras.js @@ -0,0 +1,51 @@ +// Copyright (C) 2024 Igalia, S.L. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +esid: sec-temporal.zoneddatetime.from +description: era and eraYear are ignored (for calendars not using eras) +features: [BigInt, Temporal] +---*/ + +const result = Temporal.ZonedDateTime.from({ + era: "foobar", + eraYear: 1, + year: 1970, + monthCode: "M01", + day: 1, + timeZone: "UTC", + calendar: "iso8601", +}); +assert.sameValue(result.epochNanoseconds, 0n, + "era and eraYear are ignored for calendar not using eras (iso8601)"); + +assert.throws(TypeError, () => Temporal.ZonedDateTime.from({ + era: "foobar", + eraYear: 1, + monthCode: "M01", + day: 1, + timeZone: "UTC", + calendar: "iso8601", +}), "era and eraYear cannot replace year for calendar not using eras (iso8601)"); + +const resultHebrew = Temporal.ZonedDateTime.from({ + era: "foobar", + eraYear: 1, + year: 5730, + monthCode: "M04", + day: 23, + timeZone: "UTC", + calendar: "hebrew", +}); +assert.sameValue(resultHebrew.epochNanoseconds, 0n, + "era and eraYear are ignored for calendar not using eras (Hebrew)"); +assert.sameValue(resultHebrew.calendarId, "hebrew"); + +assert.throws(TypeError, () => Temporal.ZonedDateTime.from({ + era: "foobar", + eraYear: 1, + monthCode: "M01", + day: 1, + timeZone: "UTC", + calendar: "hebrew", +}), "era and eraYear cannot replace year for calendar not using eras (Hebrew)"); diff --git a/test/intl402/Temporal/ZonedDateTime/from/canonicalize-era-codes.js b/test/intl402/Temporal/ZonedDateTime/from/canonicalize-era-codes.js new file mode 100644 index 00000000000..b47a4dbb21a --- /dev/null +++ b/test/intl402/Temporal/ZonedDateTime/from/canonicalize-era-codes.js @@ -0,0 +1,30 @@ +// Copyright (C) 2024 Igalia, S.L. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +esid: sec-temporal.zoneddatetime.from +description: Calendar era code is canonicalized +features: [Temporal] +---*/ + +const date1 = Temporal.ZonedDateTime.from({ + calendar: "gregory", + era: "ce", + eraYear: 2024, + year: 2024, + month: 1, + day: 1, + timeZone: "UTC", +}); +assert.sameValue(date1.era, "gregory", "'ce' is accepted as alias for 'gregory'"); + +const date2 = Temporal.ZonedDateTime.from({ + calendar: "gregory", + era: "bce", + eraYear: 44, + year: -43, + month: 3, + day: 15, + timeZone: "Europe/Rome", +}); +assert.sameValue(date2.era, "gregory-inverse", "'bce' is accepted as alias for 'gregory-inverse'"); diff --git a/test/intl402/Temporal/ZonedDateTime/from/dst-skipped-cross-midnight.js b/test/intl402/Temporal/ZonedDateTime/from/dst-skipped-cross-midnight.js new file mode 100644 index 00000000000..071de2c5868 --- /dev/null +++ b/test/intl402/Temporal/ZonedDateTime/from/dst-skipped-cross-midnight.js @@ -0,0 +1,24 @@ +// Copyright (C) 2024 Igalia, S.L. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. +/*--- +esid: sec-temporal.zoneddatetime.from +description: Test TZDB edge case where start of day is not 00:00 nor 01:00 +includes: [temporalHelpers.js] +features: [Temporal] +---*/ + +// DST spring-forward hour skipped from 1919-03-30T23:30 to 1919-03-31T00:30, so +// day starts at 00:30 +const startOfDay = Temporal.ZonedDateTime.from("1919-03-31[America/Toronto]"); +const midnightDisambiguated = Temporal.ZonedDateTime.from("1919-03-31T00[America/Toronto]"); +TemporalHelpers.assertDuration( + startOfDay.until(midnightDisambiguated), + 0, 0, 0, 0, 0, /* minutes = */ 30, 0, 0, 0, 0, + "start of day is 30 minutes earlier than following the disambiguation strategy for midnight" +); + +assert.sameValue( + midnightDisambiguated.epochNanoseconds, + Temporal.ZonedDateTime.from({ year: 1919, month: 3, day: 31, timeZone: "America/Toronto" }).epochNanoseconds, + "start of day magic doesn't happen with property bag, missing properties are zero" +); diff --git a/test/intl402/Temporal/ZonedDateTime/prototype/hoursInDay/dst-skipped-cross-midnight.js b/test/intl402/Temporal/ZonedDateTime/prototype/hoursInDay/dst-skipped-cross-midnight.js new file mode 100644 index 00000000000..7e434cef444 --- /dev/null +++ b/test/intl402/Temporal/ZonedDateTime/prototype/hoursInDay/dst-skipped-cross-midnight.js @@ -0,0 +1,27 @@ +// Copyright (C) 2024 Igalia, S.L. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. +/*--- +esid: sec-get-temporal.zoneddatetime.prototype.hoursinday +description: Test TZDB edge case where start of day is not 00:00 nor 01:00 +features: [Temporal] +---*/ + +// DST spring-forward hour skipped at 1919-03-30T23:30 (23.5 hour day) +const dayBefore = Temporal.ZonedDateTime.from({ + year: 1919, + month: 3, + day: 30, + hour: 12, + timeZone: "America/Toronto", +}); +assert.sameValue(dayBefore.hoursInDay, 23.5, "1919-03-30 had 23.5 hours in America/Toronto"); + +// Following day was also 23.5 hours +const dayAfter = Temporal.ZonedDateTime.from({ + year: 1919, + month: 3, + day: 31, + hour: 12, + timeZone: "America/Toronto", +}); +assert.sameValue(dayAfter.hoursInDay, 23.5, "1919-03-31 had 23.5 hours in America/Toronto"); diff --git a/test/intl402/Temporal/ZonedDateTime/prototype/round/dst-skipped-cross-midnight.js b/test/intl402/Temporal/ZonedDateTime/prototype/round/dst-skipped-cross-midnight.js new file mode 100644 index 00000000000..c36098c1a4f --- /dev/null +++ b/test/intl402/Temporal/ZonedDateTime/prototype/round/dst-skipped-cross-midnight.js @@ -0,0 +1,49 @@ +// Copyright (C) 2024 Igalia, S.L. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. +/*--- +esid: sec-get-temporal.zoneddatetime.prototype.round +description: Test TZDB edge case where start of day is not 00:00 nor 01:00 +includes: [temporalHelpers.js] +features: [Temporal] +---*/ + +// DST spring-forward hour skipped at 1919-03-30T23:30 (23.5 hour day) +// 11.75 hours is 0.5 +const dayBefore = Temporal.ZonedDateTime.from({ + year: 1919, + month: 3, + day: 30, + hour: 11, + minute: 45, + timeZone: "America/Toronto", +}); +TemporalHelpers.assertPlainDateTime( + dayBefore.round({ smallestUnit: "day" }).toPlainDateTime(), + 1919, 3, "M03", 31, 0, 30, 0, 0, 0, 0, + "1919-03-30T11:45 rounds up to start of next day with halfExpand" +); +TemporalHelpers.assertPlainDateTime( + dayBefore.round({ smallestUnit: "day", roundingMode: "halfTrunc" }).toPlainDateTime(), + 1919, 3, "M03", 30, 0, 0, 0, 0, 0, 0, + "1919-03-30T11:45 rounds down to start of this day with halfTrunc" +); + +// Following day was also 23.5 hours +const dayAfter = Temporal.ZonedDateTime.from({ + year: 1919, + month: 3, + day: 31, + hour: 12, + minute: 15, + timeZone: "America/Toronto", +}); +TemporalHelpers.assertPlainDateTime( + dayAfter.round({ smallestUnit: "day" }).toPlainDateTime(), + 1919, 4, "M04", 1, 0, 0, 0, 0, 0, 0, + "1919-03-31T12:15 rounds up to start of next day with halfExpand" +); +TemporalHelpers.assertPlainDateTime( + dayAfter.round({ smallestUnit: "day", roundingMode: "halfTrunc" }).toPlainDateTime(), + 1919, 3, "M03", 31, 0, 30, 0, 0, 0, 0, + "1919-03-31T12:15 rounds down to start of this day with halfTrunc" +); diff --git a/test/intl402/Temporal/ZonedDateTime/prototype/startOfDay/dst-skipped-cross-midnight.js b/test/intl402/Temporal/ZonedDateTime/prototype/startOfDay/dst-skipped-cross-midnight.js new file mode 100644 index 00000000000..ce4c5539ed8 --- /dev/null +++ b/test/intl402/Temporal/ZonedDateTime/prototype/startOfDay/dst-skipped-cross-midnight.js @@ -0,0 +1,20 @@ +// Copyright (C) 2024 Igalia, S.L. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. +/*--- +esid: sec-temporal.zoneddatetime.prototype.startofday +description: Test TZDB edge case where start of day is not 00:00 nor 01:00 +features: [Temporal] +---*/ + +// DST spring-forward hour skipped at 1919-03-30T23:30, so the following day +// started at 00:30 +const instance = Temporal.ZonedDateTime.from({ + year: 1919, + month: 3, + day: 31, + hour: 12, + timeZone: "America/Toronto", +}); +const result = instance.startOfDay(); +assert.sameValue(result.hour, 0, "1919-03-31 started at hour 0"); +assert.sameValue(result.minute, 30, "1919-03-31 started at minute 30"); diff --git a/test/intl402/Temporal/ZonedDateTime/prototype/withPlainTime/dst-skipped-cross-midnight.js b/test/intl402/Temporal/ZonedDateTime/prototype/withPlainTime/dst-skipped-cross-midnight.js new file mode 100644 index 00000000000..0f89fb9374c --- /dev/null +++ b/test/intl402/Temporal/ZonedDateTime/prototype/withPlainTime/dst-skipped-cross-midnight.js @@ -0,0 +1,25 @@ +// Copyright (C) 2024 Igalia, S.L. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. +/*--- +esid: sec-temporal.zoneddatetime.prototype.withplaintime +description: Test TZDB edge case where start of day is not 00:00 nor 01:00 +includes: [temporalHelpers.js] +features: [Temporal] +---*/ + +// DST spring-forward hour skipped from 1919-03-30T23:30 to 1919-03-31T00:30, so +// day starts at 00:30 +const instance = Temporal.ZonedDateTime.from({ + year: 1919, + month: 3, + day: 31, + hour: 12, + timeZone: "America/Toronto", +}); +const startOfDay = instance.withPlainTime(); +const midnightDisambiguated = instance.withPlainTime(new Temporal.PlainTime()); +TemporalHelpers.assertDuration( + startOfDay.until(midnightDisambiguated), + 0, 0, 0, 0, 0, /* minutes = */ 30, 0, 0, 0, 0, + "start of day is 30 minutes earlier than following the disambiguation strategy for midnight" +); diff --git a/test/language/computed-property-names/object/accessor/getter.js b/test/language/computed-property-names/object/accessor/getter.js index ba1e3b8b71c..740e18fc8e5 100644 --- a/test/language/computed-property-names/object/accessor/getter.js +++ b/test/language/computed-property-names/object/accessor/getter.js @@ -5,9 +5,18 @@ es6id: 12.2.5 description: > Computed property names for getters ---*/ +var s = Symbol(); var A = { get ["a"]() { return "A"; + }, + get [1]() { + return 1; + }, + get [s]() { + return s; } }; assert.sameValue(A.a, "A", "The value of `A.a` is `'A'`"); +assert.sameValue(A[1], 1, "The value of `A[1]` is `1`"); +assert.sameValue(A[s], s, "The value of `A[s]` is `Symbol()`"); diff --git a/test/language/computed-property-names/object/accessor/setter.js b/test/language/computed-property-names/object/accessor/setter.js index 9b49cb5985f..77048f50490 100644 --- a/test/language/computed-property-names/object/accessor/setter.js +++ b/test/language/computed-property-names/object/accessor/setter.js @@ -7,10 +7,19 @@ description: > that name, whose value is the value of the last property of that name. ---*/ var calls = 0; +var s = Symbol(); var A = { set ['a'](_) { calls++; + }, + set [1](_) { + calls++; + }, + set [s](_) { + calls++; } }; A.a = 'A'; -assert.sameValue(calls, 1, "The value of `calls` is `1`, after executing `A.a = 'A';`"); +A[1] = 1; +A[s] = s; +assert.sameValue(calls, 3, "The value of `calls` is `1`, after executing `A.a = 'A'; A[1] = 1; A[s] = s;`"); diff --git a/test/language/destructuring/binding/keyed-destructuring-property-reference-target-evaluation-order-with-bindings.js b/test/language/destructuring/binding/keyed-destructuring-property-reference-target-evaluation-order-with-bindings.js new file mode 100644 index 00000000000..164120d949c --- /dev/null +++ b/test/language/destructuring/binding/keyed-destructuring-property-reference-target-evaluation-order-with-bindings.js @@ -0,0 +1,88 @@ +// Copyright (C) 2024 André Bargull. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +esid: sec-destructuring-binding-patterns-runtime-semantics-propertybindinginitialization +description: > + Ensure correct evaluation order for binding lookups when destructuring target is var-binding. +info: | + 14.3.3.1 Runtime Semantics: PropertyBindingInitialization + + BindingProperty : PropertyName : BindingElement + + 1. Let P be ? Evaluation of PropertyName. + 2. Perform ? KeyedBindingInitialization of BindingElement with arguments value, environment, and P. + ... + + 14.3.3.3 Runtime Semantics: KeyedBindingInitialization + + SingleNameBinding : BindingIdentifier Initializer_opt + + 1. Let bindingId be the StringValue of BindingIdentifier. + 2. Let lhs be ? ResolveBinding(bindingId, environment). + 3. Let v be ? GetV(value, propertyName). + 4. If Initializer is present and v is undefined, then + ... + b. Else, + i. Let defaultValue be ? Evaluation of Initializer. + ii. Set v to ? GetValue(defaultValue). + ... + 6. Return ? InitializeReferencedBinding(lhs, v). + + 9.4.2 ResolveBinding ( name [ , env ] ) + + ... + 4. Return ? GetIdentifierReference(env, name, strict). + + 9.1.2.1 GetIdentifierReference ( env, name, strict ) + + ... + 2. Let exists be ? env.HasBinding(name). + ... + +includes: [compareArray.js] +features: [Proxy] +flags: [noStrict] +---*/ + +var log = []; + +var sourceKey = { + toString: () => { + log.push("sourceKey"); + return "p"; + } +}; + +var source = { + get p() { + log.push("get source"); + return undefined; + } +}; + +var env = new Proxy({}, { + has(t, pk) { + log.push("binding::" + pk); + return false; + } +}); + +var defaultValue = 0; + +var varTarget; + +with (env) { + var { + [sourceKey]: varTarget = defaultValue + } = source; +} + +assert.compareArray(log, [ + "binding::source", + "binding::sourceKey", + "sourceKey", + "binding::varTarget", + "get source", + "binding::defaultValue", +]); diff --git a/test/staging/ArrayBuffer/resizable/destructuring.js b/test/language/destructuring/binding/typedarray-backed-by-resizable-buffer.js similarity index 74% rename from test/staging/ArrayBuffer/resizable/destructuring.js rename to test/language/destructuring/binding/typedarray-backed-by-resizable-buffer.js index d2592e37f00..7eb24f2b0ef 100644 --- a/test/staging/ArrayBuffer/resizable/destructuring.js +++ b/test/language/destructuring/binding/typedarray-backed-by-resizable-buffer.js @@ -1,73 +1,14 @@ -// Copyright 2021 the V8 project authors. All rights reserved. +// Copyright 2023 the V8 project authors. All rights reserved. // This code is governed by the BSD license found in the LICENSE file. /*--- esid: sec-arraybuffer-length description: > - Automatically ported from Destructuring test - in V8's mjsunit test typedarray-resizablearraybuffer.js -includes: [compareArray.js] + Destructuring assignment on TypedArrays backed by resizable buffer +includes: [compareArray.js, resizableArrayBufferUtils.js] features: [resizable-arraybuffer] -flags: [onlyStrict] ---*/ -class MyUint8Array extends Uint8Array { -} - -class MyFloat32Array extends Float32Array { -} - -class MyBigInt64Array extends BigInt64Array { -} - -const builtinCtors = [ - Uint8Array, - Int8Array, - Uint16Array, - Int16Array, - Uint32Array, - Int32Array, - Float32Array, - Float64Array, - Uint8ClampedArray, - BigUint64Array, - BigInt64Array -]; - -const ctors = [ - ...builtinCtors, - MyUint8Array, - MyFloat32Array, - MyBigInt64Array -]; - -function CreateResizableArrayBuffer(byteLength, maxByteLength) { - return new ArrayBuffer(byteLength, { maxByteLength: maxByteLength }); -} - -function WriteToTypedArray(array, index, value) { - if (array instanceof BigInt64Array || array instanceof BigUint64Array) { - array[index] = BigInt(value); - } else { - array[index] = value; - } -} - -function Convert(item) { - if (typeof item == 'bigint') { - return Number(item); - } - return item; -} - -function ToNumbers(array) { - let result = []; - for (let item of array) { - result.push(Convert(item)); - } - return result; -} - for (let ctor of ctors) { const rab = CreateResizableArrayBuffer(4 * ctor.BYTES_PER_ELEMENT, 8 * ctor.BYTES_PER_ELEMENT); const fixedLength = new ctor(rab, 0, 4); @@ -78,7 +19,7 @@ for (let ctor of ctors) { // Write some data into the array. let ta_write = new ctor(rab); for (let i = 0; i < 4; ++i) { - WriteToTypedArray(ta_write, i, i); + ta_write[i] = MayNeedBigInt(ta_write, i); } { let [a, b, c, d, e] = fixedLength; diff --git a/test/language/expressions/assignment/destructuring/keyed-destructuring-property-reference-target-evaluation-order-with-bindings.js b/test/language/expressions/assignment/destructuring/keyed-destructuring-property-reference-target-evaluation-order-with-bindings.js new file mode 100644 index 00000000000..39549f1e794 --- /dev/null +++ b/test/language/expressions/assignment/destructuring/keyed-destructuring-property-reference-target-evaluation-order-with-bindings.js @@ -0,0 +1,90 @@ +// Copyright (C) 2024 André Bargull. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +esid: sec-runtime-semantics-propertydestructuringassignmentevaluation +description: > + Ensure correct evaluation order for binding lookups when destructuring target is var-binding. +info: | + 13.15.5.3 Runtime Semantics: PropertyDestructuringAssignmentEvaluation + + AssignmentProperty : PropertyName : AssignmentElement + + 1. Let name be ? Evaluation of PropertyName. + 2. Perform ? KeyedDestructuringAssignmentEvaluation of AssignmentElement with arguments value and name. + ... + + 13.15.5.6 Runtime Semantics: KeyedDestructuringAssignmentEvaluation + + AssignmentElement : DestructuringAssignmentTarget Initializer_opt + + 1. If DestructuringAssignmentTarget is neither an ObjectLiteral nor an ArrayLiteral, then + a. Let lRef be ? Evaluation of DestructuringAssignmentTarget. + 2. Let v be ? GetV(value, propertyName). + 3. If Initializer is present and v is undefined, then + ... + b. Else, + i. Let defaultValue be ? Evaluation of Initializer. + ii. Let rhsValue be ? GetValue(defaultValue). + ... + 6. Return ? PutValue(lRef, rhsValue). + +includes: [compareArray.js] +features: [Proxy] +flags: [noStrict] +---*/ + +var log = []; + +var targetKey = { + toString: () => { + log.push("targetKey"); + return "q"; + } +}; + +var sourceKey = { + toString: () => { + log.push("sourceKey"); + return "p"; + } +}; + +var source = { + get p() { + log.push("get source"); + return undefined; + } +}; + +var target = { + set q(v) { + log.push("set target"); + }, +}; + +var env = new Proxy({}, { + has(t, pk) { + log.push("binding::" + pk); + } +}); + +var defaultValue = 0; + +with (env) { + ({ + [sourceKey]: target[targetKey] = defaultValue + } = source); +} + +assert.compareArray(log, [ + "binding::source", + "binding::sourceKey", + "sourceKey", + "binding::target", + "binding::targetKey", + "get source", + "binding::defaultValue", + "targetKey", + "set target", +]); diff --git a/test/language/expressions/delete/super-property-topropertykey.js b/test/language/expressions/delete/super-property-topropertykey.js new file mode 100644 index 00000000000..d8019b64450 --- /dev/null +++ b/test/language/expressions/delete/super-property-topropertykey.js @@ -0,0 +1,32 @@ +// Copyright (C) 2024 André Bargull. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +esid: sec-delete-operator-runtime-semantics-evaluation +description: > + ToPropertyKey not performed when deleting a super reference. +info: | + 13.5.1.2 Runtime Semantics: Evaluation + + UnaryExpression : delete UnaryExpression + + 1. Let ref be ? Evaluation of UnaryExpression. + ... + 4. If IsPropertyReference(ref) is true, then + ... + b. If IsSuperReference(ref) is true, throw a ReferenceError exception. +---*/ + +var key = { + toString() { + throw new Test262Error("ToPropertyKey performed"); + } +}; + +var obj = { + m() { + delete super[key]; + } +}; + +assert.throws(ReferenceError, () => obj.m()); diff --git a/test/language/expressions/delete/super-property-uninitialized-this.js b/test/language/expressions/delete/super-property-uninitialized-this.js new file mode 100644 index 00000000000..56c0a72c61d --- /dev/null +++ b/test/language/expressions/delete/super-property-uninitialized-this.js @@ -0,0 +1,43 @@ +// Copyright (C) 2024 André Bargull. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +esid: sec-delete-operator-runtime-semantics-evaluation +description: > + Element expression in delete super not evaluated when this is uninitialized. +info: | + 13.5.1.2 Runtime Semantics: Evaluation + + UnaryExpression : delete UnaryExpression + + 1. Let ref be ? Evaluation of UnaryExpression. + ... + + 13.3.7.1 Runtime Semantics: Evaluation + + SuperProperty : super [ Expression ] + + ... + 2. Let actualThis be ? env.GetThisBinding(). + 3. Let propertyNameReference be ? Evaluation of Expression. + ... + + 9.1.1.3.4 GetThisBinding ( ) + ... + 2. If envRec.[[ThisBindingStatus]] is uninitialized, throw a ReferenceError exception. + ... +---*/ + +class Base { + constructor() { + throw new Test262Error("base constructor called"); + } +} + +class Derived extends Base { + constructor() { + delete super[(super(), 0)]; + } +} + +assert.throws(ReferenceError, () => new Derived); diff --git a/test/language/expressions/object/__proto__-fn-name.js b/test/language/expressions/object/__proto__-fn-name.js index a99d16e59a4..4a0c33a0a2c 100644 --- a/test/language/expressions/object/__proto__-fn-name.js +++ b/test/language/expressions/object/__proto__-fn-name.js @@ -2,25 +2,23 @@ // This code is governed by the BSD license found in the LICENSE file. /*--- -es6id: B.3.1 -description: Function name is not assigned based on the property name +esid: sec-runtime-semantics-propertydefinitionevaluation +description: Function name is not assigned based on the __proto__ property name info: | [...] - 6. If propKey is the String value "__proto__" and if - IsComputedPropertyKey(propKey) is false, then - a. If Type(propValue) is either Object or Null, then - i. Return object.[[SetPrototypeOf]](propValue). - b. Return NormalCompletion(empty). - 7. If IsAnonymousFunctionDefinition(AssignmentExpression) is true, then - a. Let hasNameProperty be HasOwnProperty(propValue, "name"). - b. ReturnIfAbrupt(hasNameProperty). - c. If hasNameProperty is false, perform SetFunctionName(propValue, propKey). + 3. Else if propKey is "__proto__" and IsComputedPropertyKey of PropertyName is false, then + a. Let isProtoSetter be true. + [...] + 5. If IsAnonymousFunctionDefinition(AssignmentExpression) is true and isProtoSetter is false, then + a. Let propValue be ? NamedEvaluation of AssignmentExpression with argument propKey. + 6. Else, + a. Let exprValueRef be ? Evaluation of AssignmentExpression. ---*/ var o; o = { - __proto__: function() {} + __proto__: function () {}, }; -assert(o.__proto__.name !== '__proto__'); +assert(Object.getPrototypeOf(o).name !== "__proto__"); diff --git a/test/language/expressions/object/computed-property-name-topropertykey-before-value-evaluation.js b/test/language/expressions/object/computed-property-name-topropertykey-before-value-evaluation.js new file mode 100644 index 00000000000..89844c85985 --- /dev/null +++ b/test/language/expressions/object/computed-property-name-topropertykey-before-value-evaluation.js @@ -0,0 +1,44 @@ +// Copyright (C) 2024 André Bargull. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +esid: sec-runtime-semantics-propertydefinitionevaluation +description: > + ToPropertyKey is performed before evaluating the value expression. +info: | + 13.2.5.5 Runtime Semantics: PropertyDefinitionEvaluation + + PropertyDefinition : PropertyName : AssignmentExpression + + 1. Let propKey be ? Evaluation of PropertyName. + ... + 6. Else, + a. Let exprValueRef be ? Evaluation of AssignmentExpression. + b. Let propValue be ? GetValue(exprValueRef). + ... + 9. Perform ! CreateDataPropertyOrThrow(object, propKey, propValue). + ... + + 13.2.5.4 Runtime Semantics: Evaluation + + ComputedPropertyName : [ AssignmentExpression ] + + 1. Let exprValue be ? Evaluation of AssignmentExpression. + 2. Let propName be ? GetValue(exprValue). + 3. Return ? ToPropertyKey(propName). +---*/ + +var value = "bad"; + +var key = { + toString() { + value = "ok"; + return "p"; + } +}; + +var obj = { + [key]: value +}; + +assert.sameValue(obj.p, "ok"); diff --git a/test/language/expressions/super/prop-expr-getsuperbase-before-topropertykey-getvalue.js b/test/language/expressions/super/prop-expr-getsuperbase-before-topropertykey-getvalue.js new file mode 100644 index 00000000000..a79f87c9122 --- /dev/null +++ b/test/language/expressions/super/prop-expr-getsuperbase-before-topropertykey-getvalue.js @@ -0,0 +1,60 @@ +// Copyright (C) 2024 André Bargull. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +esid: sec-super-keyword-runtime-semantics-evaluation +description: > + GetSuperBase is performed before ToPropertyKey in GetValue. +info: | + 13.3.7.1 Runtime Semantics: Evaluation + + SuperProperty : super [ Expression ] + + ... + 2. Let actualThis be ? env.GetThisBinding(). + 3. Let propertyNameReference be ? Evaluation of Expression. + 4. Let propertyNameValue be ? GetValue(propertyNameReference). + ... + 7. Return ? MakeSuperPropertyReference(actualThis, propertyNameValue, strict). + + 13.3.7.3 MakeSuperPropertyReference ( actualThis, propertyKey, strict ) + + 1. Let env be GetThisEnvironment(). + ... + 3. Let baseValue be ? env.GetSuperBase(). + ... + + 6.2.5.5 GetValue ( V ) + + ... + 3. If IsPropertyReference(V) is true, then + ... + c. If V.[[ReferencedName]] is not a property key, then + i. Set V.[[ReferencedName]] to ? ToPropertyKey(V.[[ReferencedName]]). + d. Return ? baseObj.[[Get]](V.[[ReferencedName]], GetThisValue(V)). + ... +---*/ + +var proto = { + p: "ok", +}; + +var proto2 = { + p: "bad", +}; + +var obj = { + __proto__: proto, + m() { + return super[key]; + } +}; + +var key = { + toString() { + Object.setPrototypeOf(obj, proto2); + return "p"; + } +}; + +assert.sameValue(obj.m(), "ok"); diff --git a/test/language/expressions/super/prop-expr-getsuperbase-before-topropertykey-putvalue-compound-assign.js b/test/language/expressions/super/prop-expr-getsuperbase-before-topropertykey-putvalue-compound-assign.js new file mode 100644 index 00000000000..7645e08adaf --- /dev/null +++ b/test/language/expressions/super/prop-expr-getsuperbase-before-topropertykey-putvalue-compound-assign.js @@ -0,0 +1,60 @@ +// Copyright (C) 2024 André Bargull. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +esid: sec-super-keyword-runtime-semantics-evaluation +description: > + GetSuperBase is performed before ToPropertyKey in PutValue with compound assignment. +info: | + 13.3.7.1 Runtime Semantics: Evaluation + + SuperProperty : super [ Expression ] + + ... + 2. Let actualThis be ? env.GetThisBinding(). + 3. Let propertyNameReference be ? Evaluation of Expression. + 4. Let propertyNameValue be ? GetValue(propertyNameReference). + ... + 7. Return ? MakeSuperPropertyReference(actualThis, propertyNameValue, strict). + + 13.3.7.3 MakeSuperPropertyReference ( actualThis, propertyKey, strict ) + + 1. Let env be GetThisEnvironment(). + ... + 3. Let baseValue be ? env.GetSuperBase(). + ... + + 6.2.5.6 PutValue ( V, W ) + + 3. If IsPropertyReference(V) is true, then + ... + c. If V.[[ReferencedName]] is not a property key, then + i. Set V.[[ReferencedName]] to ? ToPropertyKey(V.[[ReferencedName]]). + d. Let succeeded be ? baseObj.[[Set]](V.[[ReferencedName]], W, GetThisValue(V)). + ... + ... +---*/ + +var proto = { + p: 1, +}; + +var proto2 = { + p: -1, +}; + +var obj = { + __proto__: proto, + m() { + return super[key] += 1; + } +}; + +var key = { + toString() { + Object.setPrototypeOf(obj, proto2); + return "p"; + } +}; + +assert.sameValue(obj.m(), 2); diff --git a/test/language/expressions/super/prop-expr-getsuperbase-before-topropertykey-putvalue-increment.js b/test/language/expressions/super/prop-expr-getsuperbase-before-topropertykey-putvalue-increment.js new file mode 100644 index 00000000000..75e7b4d5401 --- /dev/null +++ b/test/language/expressions/super/prop-expr-getsuperbase-before-topropertykey-putvalue-increment.js @@ -0,0 +1,60 @@ +// Copyright (C) 2024 André Bargull. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +esid: sec-super-keyword-runtime-semantics-evaluation +description: > + GetSuperBase is performed before ToPropertyKey in PutValue with increment operator. +info: | + 13.3.7.1 Runtime Semantics: Evaluation + + SuperProperty : super [ Expression ] + + ... + 2. Let actualThis be ? env.GetThisBinding(). + 3. Let propertyNameReference be ? Evaluation of Expression. + 4. Let propertyNameValue be ? GetValue(propertyNameReference). + ... + 7. Return ? MakeSuperPropertyReference(actualThis, propertyNameValue, strict). + + 13.3.7.3 MakeSuperPropertyReference ( actualThis, propertyKey, strict ) + + 1. Let env be GetThisEnvironment(). + ... + 3. Let baseValue be ? env.GetSuperBase(). + ... + + 6.2.5.6 PutValue ( V, W ) + + 3. If IsPropertyReference(V) is true, then + ... + c. If V.[[ReferencedName]] is not a property key, then + i. Set V.[[ReferencedName]] to ? ToPropertyKey(V.[[ReferencedName]]). + d. Let succeeded be ? baseObj.[[Set]](V.[[ReferencedName]], W, GetThisValue(V)). + ... + ... +---*/ + +var proto = { + p: 1, +}; + +var proto2 = { + p: -1, +}; + +var obj = { + __proto__: proto, + m() { + return ++super[key]; + } +}; + +var key = { + toString() { + Object.setPrototypeOf(obj, proto2); + return "p"; + } +}; + +assert.sameValue(obj.m(), 2); diff --git a/test/language/expressions/super/prop-expr-getsuperbase-before-topropertykey-putvalue.js b/test/language/expressions/super/prop-expr-getsuperbase-before-topropertykey-putvalue.js new file mode 100644 index 00000000000..dc5d1126881 --- /dev/null +++ b/test/language/expressions/super/prop-expr-getsuperbase-before-topropertykey-putvalue.js @@ -0,0 +1,68 @@ +// Copyright (C) 2024 André Bargull. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +esid: sec-super-keyword-runtime-semantics-evaluation +description: > + GetSuperBase is performed before ToPropertyKey in PutValue. +info: | + 13.3.7.1 Runtime Semantics: Evaluation + + SuperProperty : super [ Expression ] + + ... + 2. Let actualThis be ? env.GetThisBinding(). + 3. Let propertyNameReference be ? Evaluation of Expression. + 4. Let propertyNameValue be ? GetValue(propertyNameReference). + ... + 7. Return ? MakeSuperPropertyReference(actualThis, propertyNameValue, strict). + + 13.3.7.3 MakeSuperPropertyReference ( actualThis, propertyKey, strict ) + + 1. Let env be GetThisEnvironment(). + ... + 3. Let baseValue be ? env.GetSuperBase(). + ... + + 6.2.5.6 PutValue ( V, W ) + + 3. If IsPropertyReference(V) is true, then + ... + c. If V.[[ReferencedName]] is not a property key, then + i. Set V.[[ReferencedName]] to ? ToPropertyKey(V.[[ReferencedName]]). + d. Let succeeded be ? baseObj.[[Set]](V.[[ReferencedName]], W, GetThisValue(V)). + ... + ... +---*/ + +var result; + +var proto = { + set p(v) { + result = "ok"; + }, +}; + +var proto2 = { + set p(v) { + result = "bad"; + }, +}; + +var obj = { + __proto__: proto, + m() { + super[key] = 10; + } +}; + +var key = { + toString() { + Object.setPrototypeOf(obj, proto2); + return "p"; + } +}; + +obj.m(); + +assert.sameValue(result, "ok"); diff --git a/test/language/expressions/super/prop-expr-uninitialized-this-getvalue.js b/test/language/expressions/super/prop-expr-uninitialized-this-getvalue.js new file mode 100644 index 00000000000..4ad32b3cfc3 --- /dev/null +++ b/test/language/expressions/super/prop-expr-uninitialized-this-getvalue.js @@ -0,0 +1,31 @@ +// Copyright (C) 2024 André Bargull. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +esid: sec-super-keyword-runtime-semantics-evaluation +description: > + Expression not evaluated when this binding is uninitialized in GetValue context. +info: | + 13.3.7.1 Runtime Semantics: Evaluation + + SuperProperty : super [ Expression ] + + ... + 2. Let actualThis be ? env.GetThisBinding(). + 3. Let propertyNameReference be ? Evaluation of Expression. + ... +---*/ + +class Base { + constructor() { + throw new Test262Error("base constructor"); + } +} + +class Derived extends Base { + constructor() { + return super[super()]; + } +} + +assert.throws(ReferenceError, () => new Derived); diff --git a/test/language/expressions/super/prop-expr-uninitialized-this-putvalue-compound-assign.js b/test/language/expressions/super/prop-expr-uninitialized-this-putvalue-compound-assign.js new file mode 100644 index 00000000000..1bb8e76148a --- /dev/null +++ b/test/language/expressions/super/prop-expr-uninitialized-this-putvalue-compound-assign.js @@ -0,0 +1,31 @@ +// Copyright (C) 2024 André Bargull. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +esid: sec-super-keyword-runtime-semantics-evaluation +description: > + Expression not evaluated when this binding is uninitialized in PutValue context with compound assignment. +info: | + 13.3.7.1 Runtime Semantics: Evaluation + + SuperProperty : super [ Expression ] + + ... + 2. Let actualThis be ? env.GetThisBinding(). + 3. Let propertyNameReference be ? Evaluation of Expression. + ... +---*/ + +class Base { + constructor() { + throw new Test262Error("base constructor"); + } +} + +class Derived extends Base { + constructor() { + super[super()] += 0; + } +} + +assert.throws(ReferenceError, () => new Derived); diff --git a/test/language/expressions/super/prop-expr-uninitialized-this-putvalue-increment.js b/test/language/expressions/super/prop-expr-uninitialized-this-putvalue-increment.js new file mode 100644 index 00000000000..b0821ab7f5e --- /dev/null +++ b/test/language/expressions/super/prop-expr-uninitialized-this-putvalue-increment.js @@ -0,0 +1,31 @@ +// Copyright (C) 2024 André Bargull. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +esid: sec-super-keyword-runtime-semantics-evaluation +description: > + Expression not evaluated when this binding is uninitialized in PutValue context with increment operator. +info: | + 13.3.7.1 Runtime Semantics: Evaluation + + SuperProperty : super [ Expression ] + + ... + 2. Let actualThis be ? env.GetThisBinding(). + 3. Let propertyNameReference be ? Evaluation of Expression. + ... +---*/ + +class Base { + constructor() { + throw new Test262Error("base constructor"); + } +} + +class Derived extends Base { + constructor() { + super[super()]++; + } +} + +assert.throws(ReferenceError, () => new Derived); diff --git a/test/language/expressions/super/prop-expr-uninitialized-this-putvalue.js b/test/language/expressions/super/prop-expr-uninitialized-this-putvalue.js new file mode 100644 index 00000000000..c6d10182ba0 --- /dev/null +++ b/test/language/expressions/super/prop-expr-uninitialized-this-putvalue.js @@ -0,0 +1,31 @@ +// Copyright (C) 2024 André Bargull. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +esid: sec-super-keyword-runtime-semantics-evaluation +description: > + Expression not evaluated when this binding is uninitialized in PutValue context. +info: | + 13.3.7.1 Runtime Semantics: Evaluation + + SuperProperty : super [ Expression ] + + ... + 2. Let actualThis be ? env.GetThisBinding(). + 3. Let propertyNameReference be ? Evaluation of Expression. + ... +---*/ + +class Base { + constructor() { + throw new Test262Error("base constructor"); + } +} + +class Derived extends Base { + constructor() { + super[super()] = 0; + } +} + +assert.throws(ReferenceError, () => new Derived); diff --git a/test/language/identifiers/part-unicode-10.0.0-class-escaped.js b/test/language/identifiers/part-unicode-10.0.0-class-escaped.js index 003bb252a26..ca383a75c49 100644 --- a/test/language/identifiers/part-unicode-10.0.0-class-escaped.js +++ b/test/language/identifiers/part-unicode-10.0.0-class-escaped.js @@ -1,4 +1,4 @@ -// Copyright 2022 Mathias Bynens. All rights reserved. +// Copyright 2024 Mathias Bynens. All rights reserved. // This code is governed by the BSD license found in the LICENSE file. /*--- diff --git a/test/language/identifiers/part-unicode-10.0.0-class.js b/test/language/identifiers/part-unicode-10.0.0-class.js index 3d392c3041c..e2f7f10e2ef 100644 --- a/test/language/identifiers/part-unicode-10.0.0-class.js +++ b/test/language/identifiers/part-unicode-10.0.0-class.js @@ -1,4 +1,4 @@ -// Copyright 2022 Mathias Bynens. All rights reserved. +// Copyright 2024 Mathias Bynens. All rights reserved. // This code is governed by the BSD license found in the LICENSE file. /*--- diff --git a/test/language/identifiers/part-unicode-10.0.0-escaped.js b/test/language/identifiers/part-unicode-10.0.0-escaped.js index 222ccfba4eb..139f27dcdc4 100644 --- a/test/language/identifiers/part-unicode-10.0.0-escaped.js +++ b/test/language/identifiers/part-unicode-10.0.0-escaped.js @@ -1,4 +1,4 @@ -// Copyright 2022 Mathias Bynens. All rights reserved. +// Copyright 2024 Mathias Bynens. All rights reserved. // This code is governed by the BSD license found in the LICENSE file. /*--- diff --git a/test/language/identifiers/part-unicode-10.0.0.js b/test/language/identifiers/part-unicode-10.0.0.js index 226e6a37620..f473025c3e6 100644 --- a/test/language/identifiers/part-unicode-10.0.0.js +++ b/test/language/identifiers/part-unicode-10.0.0.js @@ -1,4 +1,4 @@ -// Copyright 2022 Mathias Bynens. All rights reserved. +// Copyright 2024 Mathias Bynens. All rights reserved. // This code is governed by the BSD license found in the LICENSE file. /*--- diff --git a/test/language/identifiers/part-unicode-11.0.0-class-escaped.js b/test/language/identifiers/part-unicode-11.0.0-class-escaped.js index 710073ff5a9..6ab1ed9639e 100644 --- a/test/language/identifiers/part-unicode-11.0.0-class-escaped.js +++ b/test/language/identifiers/part-unicode-11.0.0-class-escaped.js @@ -1,4 +1,4 @@ -// Copyright 2022 Mathias Bynens. All rights reserved. +// Copyright 2024 Mathias Bynens. All rights reserved. // This code is governed by the BSD license found in the LICENSE file. /*--- diff --git a/test/language/identifiers/part-unicode-11.0.0-class.js b/test/language/identifiers/part-unicode-11.0.0-class.js index 2c837db50c2..faab6cffe27 100644 --- a/test/language/identifiers/part-unicode-11.0.0-class.js +++ b/test/language/identifiers/part-unicode-11.0.0-class.js @@ -1,4 +1,4 @@ -// Copyright 2022 Mathias Bynens. All rights reserved. +// Copyright 2024 Mathias Bynens. All rights reserved. // This code is governed by the BSD license found in the LICENSE file. /*--- diff --git a/test/language/identifiers/part-unicode-11.0.0-escaped.js b/test/language/identifiers/part-unicode-11.0.0-escaped.js index c1e8f3f787c..ae8cfc6c3c7 100644 --- a/test/language/identifiers/part-unicode-11.0.0-escaped.js +++ b/test/language/identifiers/part-unicode-11.0.0-escaped.js @@ -1,4 +1,4 @@ -// Copyright 2022 Mathias Bynens. All rights reserved. +// Copyright 2024 Mathias Bynens. All rights reserved. // This code is governed by the BSD license found in the LICENSE file. /*--- diff --git a/test/language/identifiers/part-unicode-11.0.0.js b/test/language/identifiers/part-unicode-11.0.0.js index 1f9429859f5..aeff8e37ff7 100644 --- a/test/language/identifiers/part-unicode-11.0.0.js +++ b/test/language/identifiers/part-unicode-11.0.0.js @@ -1,4 +1,4 @@ -// Copyright 2022 Mathias Bynens. All rights reserved. +// Copyright 2024 Mathias Bynens. All rights reserved. // This code is governed by the BSD license found in the LICENSE file. /*--- diff --git a/test/language/identifiers/part-unicode-12.0.0-class-escaped.js b/test/language/identifiers/part-unicode-12.0.0-class-escaped.js index 50f784657ec..639f8df2a86 100644 --- a/test/language/identifiers/part-unicode-12.0.0-class-escaped.js +++ b/test/language/identifiers/part-unicode-12.0.0-class-escaped.js @@ -1,4 +1,4 @@ -// Copyright 2022 Mathias Bynens. All rights reserved. +// Copyright 2024 Mathias Bynens. All rights reserved. // This code is governed by the BSD license found in the LICENSE file. /*--- diff --git a/test/language/identifiers/part-unicode-12.0.0-class.js b/test/language/identifiers/part-unicode-12.0.0-class.js index 809e5ccc4c4..af55a33f7db 100644 --- a/test/language/identifiers/part-unicode-12.0.0-class.js +++ b/test/language/identifiers/part-unicode-12.0.0-class.js @@ -1,4 +1,4 @@ -// Copyright 2022 Mathias Bynens. All rights reserved. +// Copyright 2024 Mathias Bynens. All rights reserved. // This code is governed by the BSD license found in the LICENSE file. /*--- diff --git a/test/language/identifiers/part-unicode-12.0.0-escaped.js b/test/language/identifiers/part-unicode-12.0.0-escaped.js index 0de0213149a..96d77fc1c3a 100644 --- a/test/language/identifiers/part-unicode-12.0.0-escaped.js +++ b/test/language/identifiers/part-unicode-12.0.0-escaped.js @@ -1,4 +1,4 @@ -// Copyright 2022 Mathias Bynens. All rights reserved. +// Copyright 2024 Mathias Bynens. All rights reserved. // This code is governed by the BSD license found in the LICENSE file. /*--- diff --git a/test/language/identifiers/part-unicode-12.0.0.js b/test/language/identifiers/part-unicode-12.0.0.js index 427a47d0af4..b97c919615d 100644 --- a/test/language/identifiers/part-unicode-12.0.0.js +++ b/test/language/identifiers/part-unicode-12.0.0.js @@ -1,4 +1,4 @@ -// Copyright 2022 Mathias Bynens. All rights reserved. +// Copyright 2024 Mathias Bynens. All rights reserved. // This code is governed by the BSD license found in the LICENSE file. /*--- diff --git a/test/language/identifiers/part-unicode-13.0.0-class-escaped.js b/test/language/identifiers/part-unicode-13.0.0-class-escaped.js index b11028d0326..441fbc0b9d1 100644 --- a/test/language/identifiers/part-unicode-13.0.0-class-escaped.js +++ b/test/language/identifiers/part-unicode-13.0.0-class-escaped.js @@ -1,4 +1,4 @@ -// Copyright 2022 Mathias Bynens. All rights reserved. +// Copyright 2024 Mathias Bynens. All rights reserved. // This code is governed by the BSD license found in the LICENSE file. /*--- diff --git a/test/language/identifiers/part-unicode-13.0.0-class.js b/test/language/identifiers/part-unicode-13.0.0-class.js index 100930e76f4..13f2df240c7 100644 --- a/test/language/identifiers/part-unicode-13.0.0-class.js +++ b/test/language/identifiers/part-unicode-13.0.0-class.js @@ -1,4 +1,4 @@ -// Copyright 2022 Mathias Bynens. All rights reserved. +// Copyright 2024 Mathias Bynens. All rights reserved. // This code is governed by the BSD license found in the LICENSE file. /*--- diff --git a/test/language/identifiers/part-unicode-13.0.0-escaped.js b/test/language/identifiers/part-unicode-13.0.0-escaped.js index 7e740d98f27..c87bb678c57 100644 --- a/test/language/identifiers/part-unicode-13.0.0-escaped.js +++ b/test/language/identifiers/part-unicode-13.0.0-escaped.js @@ -1,4 +1,4 @@ -// Copyright 2022 Mathias Bynens. All rights reserved. +// Copyright 2024 Mathias Bynens. All rights reserved. // This code is governed by the BSD license found in the LICENSE file. /*--- diff --git a/test/language/identifiers/part-unicode-13.0.0.js b/test/language/identifiers/part-unicode-13.0.0.js index 7e7411dd29d..0d85ecefa3f 100644 --- a/test/language/identifiers/part-unicode-13.0.0.js +++ b/test/language/identifiers/part-unicode-13.0.0.js @@ -1,4 +1,4 @@ -// Copyright 2022 Mathias Bynens. All rights reserved. +// Copyright 2024 Mathias Bynens. All rights reserved. // This code is governed by the BSD license found in the LICENSE file. /*--- diff --git a/test/language/identifiers/part-unicode-14.0.0-class-escaped.js b/test/language/identifiers/part-unicode-14.0.0-class-escaped.js index 4d12910470e..f7e928cd70f 100644 --- a/test/language/identifiers/part-unicode-14.0.0-class-escaped.js +++ b/test/language/identifiers/part-unicode-14.0.0-class-escaped.js @@ -1,4 +1,4 @@ -// Copyright 2022 Mathias Bynens. All rights reserved. +// Copyright 2024 Mathias Bynens. All rights reserved. // This code is governed by the BSD license found in the LICENSE file. /*--- diff --git a/test/language/identifiers/part-unicode-14.0.0-class.js b/test/language/identifiers/part-unicode-14.0.0-class.js index 15194740707..82f8cc7e8d1 100644 --- a/test/language/identifiers/part-unicode-14.0.0-class.js +++ b/test/language/identifiers/part-unicode-14.0.0-class.js @@ -1,4 +1,4 @@ -// Copyright 2022 Mathias Bynens. All rights reserved. +// Copyright 2024 Mathias Bynens. All rights reserved. // This code is governed by the BSD license found in the LICENSE file. /*--- diff --git a/test/language/identifiers/part-unicode-14.0.0-escaped.js b/test/language/identifiers/part-unicode-14.0.0-escaped.js index 6818792868f..b7a9a583f24 100644 --- a/test/language/identifiers/part-unicode-14.0.0-escaped.js +++ b/test/language/identifiers/part-unicode-14.0.0-escaped.js @@ -1,4 +1,4 @@ -// Copyright 2022 Mathias Bynens. All rights reserved. +// Copyright 2024 Mathias Bynens. All rights reserved. // This code is governed by the BSD license found in the LICENSE file. /*--- diff --git a/test/language/identifiers/part-unicode-14.0.0.js b/test/language/identifiers/part-unicode-14.0.0.js index 9171710a10b..2d7154864c7 100644 --- a/test/language/identifiers/part-unicode-14.0.0.js +++ b/test/language/identifiers/part-unicode-14.0.0.js @@ -1,4 +1,4 @@ -// Copyright 2022 Mathias Bynens. All rights reserved. +// Copyright 2024 Mathias Bynens. All rights reserved. // This code is governed by the BSD license found in the LICENSE file. /*--- diff --git a/test/language/identifiers/part-unicode-15.0.0-class-escaped.js b/test/language/identifiers/part-unicode-15.0.0-class-escaped.js index aecf6a9f507..887fb0c500e 100644 --- a/test/language/identifiers/part-unicode-15.0.0-class-escaped.js +++ b/test/language/identifiers/part-unicode-15.0.0-class-escaped.js @@ -1,4 +1,4 @@ -// Copyright 2022 Mathias Bynens. All rights reserved. +// Copyright 2024 Mathias Bynens. All rights reserved. // This code is governed by the BSD license found in the LICENSE file. /*--- diff --git a/test/language/identifiers/part-unicode-15.0.0-class.js b/test/language/identifiers/part-unicode-15.0.0-class.js index 40ed716f61e..3df93c13d3a 100644 --- a/test/language/identifiers/part-unicode-15.0.0-class.js +++ b/test/language/identifiers/part-unicode-15.0.0-class.js @@ -1,4 +1,4 @@ -// Copyright 2022 Mathias Bynens. All rights reserved. +// Copyright 2024 Mathias Bynens. All rights reserved. // This code is governed by the BSD license found in the LICENSE file. /*--- diff --git a/test/language/identifiers/part-unicode-15.0.0-escaped.js b/test/language/identifiers/part-unicode-15.0.0-escaped.js index ccb0279cb35..b60e26203b0 100644 --- a/test/language/identifiers/part-unicode-15.0.0-escaped.js +++ b/test/language/identifiers/part-unicode-15.0.0-escaped.js @@ -1,4 +1,4 @@ -// Copyright 2022 Mathias Bynens. All rights reserved. +// Copyright 2024 Mathias Bynens. All rights reserved. // This code is governed by the BSD license found in the LICENSE file. /*--- diff --git a/test/language/identifiers/part-unicode-15.0.0.js b/test/language/identifiers/part-unicode-15.0.0.js index 0dfef664262..734166965df 100644 --- a/test/language/identifiers/part-unicode-15.0.0.js +++ b/test/language/identifiers/part-unicode-15.0.0.js @@ -1,4 +1,4 @@ -// Copyright 2022 Mathias Bynens. All rights reserved. +// Copyright 2024 Mathias Bynens. All rights reserved. // This code is governed by the BSD license found in the LICENSE file. /*--- diff --git a/test/language/identifiers/part-unicode-15.1.0-class-escaped.js b/test/language/identifiers/part-unicode-15.1.0-class-escaped.js index 673fe5936f6..245d8bdbae9 100644 --- a/test/language/identifiers/part-unicode-15.1.0-class-escaped.js +++ b/test/language/identifiers/part-unicode-15.1.0-class-escaped.js @@ -1,4 +1,4 @@ -// Copyright 2023 Mathias Bynens. All rights reserved. +// Copyright 2024 Mathias Bynens. All rights reserved. // This code is governed by the BSD license found in the LICENSE file. /*--- @@ -16,5 +16,5 @@ features: [class, class-fields-private] ---*/ class _ { - #_\u200C\u200D; + #_\u200C\u200D\u30FB\uFF65; }; diff --git a/test/language/identifiers/part-unicode-15.1.0-class.js b/test/language/identifiers/part-unicode-15.1.0-class.js index de6e553b6b9..e26db18d8cc 100644 --- a/test/language/identifiers/part-unicode-15.1.0-class.js +++ b/test/language/identifiers/part-unicode-15.1.0-class.js @@ -1,4 +1,4 @@ -// Copyright 2023 Mathias Bynens. All rights reserved. +// Copyright 2024 Mathias Bynens. All rights reserved. // This code is governed by the BSD license found in the LICENSE file. /*--- @@ -13,5 +13,5 @@ features: [class, class-fields-private] ---*/ class _ { - #_‌‍; + #_‌‍・・; }; diff --git a/test/language/identifiers/part-unicode-15.1.0-escaped.js b/test/language/identifiers/part-unicode-15.1.0-escaped.js index 8c6db69485f..06f55dd0dfb 100644 --- a/test/language/identifiers/part-unicode-15.1.0-escaped.js +++ b/test/language/identifiers/part-unicode-15.1.0-escaped.js @@ -1,4 +1,4 @@ -// Copyright 2023 Mathias Bynens. All rights reserved. +// Copyright 2024 Mathias Bynens. All rights reserved. // This code is governed by the BSD license found in the LICENSE file. /*--- @@ -13,4 +13,4 @@ info: | Generated by https://github.com/mathiasbynens/caniunicode ---*/ -var _\u200C\u200D; +var _\u200C\u200D\u30FB\uFF65; diff --git a/test/language/identifiers/part-unicode-15.1.0.js b/test/language/identifiers/part-unicode-15.1.0.js index 072229bb61a..c048f510343 100644 --- a/test/language/identifiers/part-unicode-15.1.0.js +++ b/test/language/identifiers/part-unicode-15.1.0.js @@ -1,4 +1,4 @@ -// Copyright 2023 Mathias Bynens. All rights reserved. +// Copyright 2024 Mathias Bynens. All rights reserved. // This code is governed by the BSD license found in the LICENSE file. /*--- @@ -11,4 +11,4 @@ info: | Generated by https://github.com/mathiasbynens/caniunicode ---*/ -var _‌‍; +var _‌‍・・; diff --git a/test/language/identifiers/part-unicode-16.0.0-class-escaped.js b/test/language/identifiers/part-unicode-16.0.0-class-escaped.js new file mode 100644 index 00000000000..1bce9ddb2d6 --- /dev/null +++ b/test/language/identifiers/part-unicode-16.0.0-class-escaped.js @@ -0,0 +1,20 @@ +// Copyright 2024 Mathias Bynens. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +author: Mathias Bynens +esid: prod-PrivateIdentifier +description: | + Test that Unicode v16.0.0 ID_Continue characters are accepted as + identifier part characters in escaped form, i.e. + - \uXXXX or \u{XXXX} for BMP symbols + - \u{XXXXXX} for astral symbols + in private class fields. +info: | + Generated by https://github.com/mathiasbynens/caniunicode +features: [class, class-fields-private] +---*/ + +class _ { + #_\u0897\u{10D40}\u{10D41}\u{10D42}\u{10D43}\u{10D44}\u{10D45}\u{10D46}\u{10D47}\u{10D48}\u{10D49}\u{10D69}\u{10D6A}\u{10D6B}\u{10D6C}\u{10D6D}\u{10EFC}\u{113B8}\u{113B9}\u{113BA}\u{113BB}\u{113BC}\u{113BD}\u{113BE}\u{113BF}\u{113C0}\u{113C2}\u{113C5}\u{113C7}\u{113C8}\u{113C9}\u{113CA}\u{113CC}\u{113CD}\u{113CE}\u{113CF}\u{113D0}\u{113D2}\u{113E1}\u{113E2}\u{116D0}\u{116D1}\u{116D2}\u{116D3}\u{116D4}\u{116D5}\u{116D6}\u{116D7}\u{116D8}\u{116D9}\u{116DA}\u{116DB}\u{116DC}\u{116DD}\u{116DE}\u{116DF}\u{116E0}\u{116E1}\u{116E2}\u{116E3}\u{11BF0}\u{11BF1}\u{11BF2}\u{11BF3}\u{11BF4}\u{11BF5}\u{11BF6}\u{11BF7}\u{11BF8}\u{11BF9}\u{11F5A}\u{1611E}\u{1611F}\u{16120}\u{16121}\u{16122}\u{16123}\u{16124}\u{16125}\u{16126}\u{16127}\u{16128}\u{16129}\u{1612A}\u{1612B}\u{1612C}\u{1612D}\u{1612E}\u{1612F}\u{16130}\u{16131}\u{16132}\u{16133}\u{16134}\u{16135}\u{16136}\u{16137}\u{16138}\u{16139}\u{16D70}\u{16D71}\u{16D72}\u{16D73}\u{16D74}\u{16D75}\u{16D76}\u{16D77}\u{16D78}\u{16D79}\u{1CCF0}\u{1CCF1}\u{1CCF2}\u{1CCF3}\u{1CCF4}\u{1CCF5}\u{1CCF6}\u{1CCF7}\u{1CCF8}\u{1CCF9}\u{1E5EE}\u{1E5EF}\u{1E5F1}\u{1E5F2}\u{1E5F3}\u{1E5F4}\u{1E5F5}\u{1E5F6}\u{1E5F7}\u{1E5F8}\u{1E5F9}\u{1E5FA}; +}; diff --git a/test/language/identifiers/part-unicode-16.0.0-class.js b/test/language/identifiers/part-unicode-16.0.0-class.js new file mode 100644 index 00000000000..62a7ad9250f --- /dev/null +++ b/test/language/identifiers/part-unicode-16.0.0-class.js @@ -0,0 +1,17 @@ +// Copyright 2024 Mathias Bynens. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +author: Mathias Bynens +esid: prod-PrivateIdentifier +description: | + Test that Unicode v16.0.0 ID_Continue characters are accepted as + identifier part characters in private class fields. +info: | + Generated by https://github.com/mathiasbynens/caniunicode +features: [class, class-fields-private] +---*/ + +class _ { + #_ࢗ𐵀𐵁𐵂𐵃𐵄𐵅𐵆𐵇𐵈𐵉𐵩𐵪𐵫𐵬𐵭𐻼𑎸𑎹𑎺𑎻𑎼𑎽𑎾𑎿𑏀𑏅𑏅𑎸𑏈𑏉𑏊𑏌𑏍𑏎𑏏𑏐𑏒𑏡𑏢𑛐𑛑𑛒𑛓𑛔𑛕𑛖𑛗𑛘𑛙𑛚𑛛𑛜𑛝𑛞𑛟𑛠𑛡𑛢𑛣𑯰𑯱𑯲𑯳𑯴𑯵𑯶𑯷𑯸𑯹𑽚𖄣𖄠𖄡𖄢𖄣𖄤𖄥𖄦𖄧𖄨𖄩𖄪𖄫𖄬𖄭𖄮𖄯𖄰𖄱𖄲𖄳𖄴𖄵𖄶𖄷𖄸𖄹𖵰𖵱𖵲𖵳𖵴𖵵𖵶𖵷𖵸𖵹𜳰𜳱𜳲𜳳𜳴𜳵𜳶𜳷𜳸𜳹𞗯𞗮𞗱𞗲𞗳𞗴𞗵𞗶𞗷𞗸𞗹𞗺; +}; diff --git a/test/language/identifiers/part-unicode-16.0.0-escaped.js b/test/language/identifiers/part-unicode-16.0.0-escaped.js new file mode 100644 index 00000000000..b4b5d89add7 --- /dev/null +++ b/test/language/identifiers/part-unicode-16.0.0-escaped.js @@ -0,0 +1,16 @@ +// Copyright 2024 Mathias Bynens. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +author: Mathias Bynens +esid: sec-names-and-keywords +description: | + Test that Unicode v16.0.0 ID_Continue characters are accepted as + identifier part characters in escaped form, i.e. + - \uXXXX or \u{XXXX} for BMP symbols + - \u{XXXXXX} for astral symbols +info: | + Generated by https://github.com/mathiasbynens/caniunicode +---*/ + +var _\u0897\u{10D40}\u{10D41}\u{10D42}\u{10D43}\u{10D44}\u{10D45}\u{10D46}\u{10D47}\u{10D48}\u{10D49}\u{10D69}\u{10D6A}\u{10D6B}\u{10D6C}\u{10D6D}\u{10EFC}\u{113B8}\u{113B9}\u{113BA}\u{113BB}\u{113BC}\u{113BD}\u{113BE}\u{113BF}\u{113C0}\u{113C2}\u{113C5}\u{113C7}\u{113C8}\u{113C9}\u{113CA}\u{113CC}\u{113CD}\u{113CE}\u{113CF}\u{113D0}\u{113D2}\u{113E1}\u{113E2}\u{116D0}\u{116D1}\u{116D2}\u{116D3}\u{116D4}\u{116D5}\u{116D6}\u{116D7}\u{116D8}\u{116D9}\u{116DA}\u{116DB}\u{116DC}\u{116DD}\u{116DE}\u{116DF}\u{116E0}\u{116E1}\u{116E2}\u{116E3}\u{11BF0}\u{11BF1}\u{11BF2}\u{11BF3}\u{11BF4}\u{11BF5}\u{11BF6}\u{11BF7}\u{11BF8}\u{11BF9}\u{11F5A}\u{1611E}\u{1611F}\u{16120}\u{16121}\u{16122}\u{16123}\u{16124}\u{16125}\u{16126}\u{16127}\u{16128}\u{16129}\u{1612A}\u{1612B}\u{1612C}\u{1612D}\u{1612E}\u{1612F}\u{16130}\u{16131}\u{16132}\u{16133}\u{16134}\u{16135}\u{16136}\u{16137}\u{16138}\u{16139}\u{16D70}\u{16D71}\u{16D72}\u{16D73}\u{16D74}\u{16D75}\u{16D76}\u{16D77}\u{16D78}\u{16D79}\u{1CCF0}\u{1CCF1}\u{1CCF2}\u{1CCF3}\u{1CCF4}\u{1CCF5}\u{1CCF6}\u{1CCF7}\u{1CCF8}\u{1CCF9}\u{1E5EE}\u{1E5EF}\u{1E5F1}\u{1E5F2}\u{1E5F3}\u{1E5F4}\u{1E5F5}\u{1E5F6}\u{1E5F7}\u{1E5F8}\u{1E5F9}\u{1E5FA}; diff --git a/test/language/identifiers/part-unicode-16.0.0.js b/test/language/identifiers/part-unicode-16.0.0.js new file mode 100644 index 00000000000..044ce108850 --- /dev/null +++ b/test/language/identifiers/part-unicode-16.0.0.js @@ -0,0 +1,14 @@ +// Copyright 2024 Mathias Bynens. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +author: Mathias Bynens +esid: sec-names-and-keywords +description: | + Test that Unicode v16.0.0 ID_Continue characters are accepted as + identifier part characters. +info: | + Generated by https://github.com/mathiasbynens/caniunicode +---*/ + +var _ࢗ𐵀𐵁𐵂𐵃𐵄𐵅𐵆𐵇𐵈𐵉𐵩𐵪𐵫𐵬𐵭𐻼𑎸𑎹𑎺𑎻𑎼𑎽𑎾𑎿𑏀𑏅𑏅𑎸𑏈𑏉𑏊𑏌𑏍𑏎𑏏𑏐𑏒𑏡𑏢𑛐𑛑𑛒𑛓𑛔𑛕𑛖𑛗𑛘𑛙𑛚𑛛𑛜𑛝𑛞𑛟𑛠𑛡𑛢𑛣𑯰𑯱𑯲𑯳𑯴𑯵𑯶𑯷𑯸𑯹𑽚𖄣𖄠𖄡𖄢𖄣𖄤𖄥𖄦𖄧𖄨𖄩𖄪𖄫𖄬𖄭𖄮𖄯𖄰𖄱𖄲𖄳𖄴𖄵𖄶𖄷𖄸𖄹𖵰𖵱𖵲𖵳𖵴𖵵𖵶𖵷𖵸𖵹𜳰𜳱𜳲𜳳𜳴𜳵𜳶𜳷𜳸𜳹𞗯𞗮𞗱𞗲𞗳𞗴𞗵𞗶𞗷𞗸𞗹𞗺; diff --git a/test/language/identifiers/part-unicode-5.2.0-class-escaped.js b/test/language/identifiers/part-unicode-5.2.0-class-escaped.js index 8f9c2fc9495..8a2004dcfa5 100644 --- a/test/language/identifiers/part-unicode-5.2.0-class-escaped.js +++ b/test/language/identifiers/part-unicode-5.2.0-class-escaped.js @@ -1,4 +1,4 @@ -// Copyright 2022 Mathias Bynens. All rights reserved. +// Copyright 2024 Mathias Bynens. All rights reserved. // This code is governed by the BSD license found in the LICENSE file. /*--- diff --git a/test/language/identifiers/part-unicode-5.2.0-class.js b/test/language/identifiers/part-unicode-5.2.0-class.js index 4c06676e238..b46fc771fb9 100644 --- a/test/language/identifiers/part-unicode-5.2.0-class.js +++ b/test/language/identifiers/part-unicode-5.2.0-class.js @@ -1,4 +1,4 @@ -// Copyright 2022 Mathias Bynens. All rights reserved. +// Copyright 2024 Mathias Bynens. All rights reserved. // This code is governed by the BSD license found in the LICENSE file. /*--- diff --git a/test/language/identifiers/part-unicode-5.2.0-escaped.js b/test/language/identifiers/part-unicode-5.2.0-escaped.js index cf33289e34b..cba8153d990 100644 --- a/test/language/identifiers/part-unicode-5.2.0-escaped.js +++ b/test/language/identifiers/part-unicode-5.2.0-escaped.js @@ -1,4 +1,4 @@ -// Copyright 2022 Mathias Bynens. All rights reserved. +// Copyright 2024 Mathias Bynens. All rights reserved. // This code is governed by the BSD license found in the LICENSE file. /*--- diff --git a/test/language/identifiers/part-unicode-5.2.0.js b/test/language/identifiers/part-unicode-5.2.0.js index ef372664b08..9737cb65e6f 100644 --- a/test/language/identifiers/part-unicode-5.2.0.js +++ b/test/language/identifiers/part-unicode-5.2.0.js @@ -1,4 +1,4 @@ -// Copyright 2022 Mathias Bynens. All rights reserved. +// Copyright 2024 Mathias Bynens. All rights reserved. // This code is governed by the BSD license found in the LICENSE file. /*--- diff --git a/test/language/identifiers/part-unicode-6.0.0-class-escaped.js b/test/language/identifiers/part-unicode-6.0.0-class-escaped.js index 1beb1c12874..d3b1c218e4c 100644 --- a/test/language/identifiers/part-unicode-6.0.0-class-escaped.js +++ b/test/language/identifiers/part-unicode-6.0.0-class-escaped.js @@ -1,4 +1,4 @@ -// Copyright 2022 Mathias Bynens. All rights reserved. +// Copyright 2024 Mathias Bynens. All rights reserved. // This code is governed by the BSD license found in the LICENSE file. /*--- diff --git a/test/language/identifiers/part-unicode-6.0.0-class.js b/test/language/identifiers/part-unicode-6.0.0-class.js index 17fafa5c889..d2dff4bada1 100644 --- a/test/language/identifiers/part-unicode-6.0.0-class.js +++ b/test/language/identifiers/part-unicode-6.0.0-class.js @@ -1,4 +1,4 @@ -// Copyright 2022 Mathias Bynens. All rights reserved. +// Copyright 2024 Mathias Bynens. All rights reserved. // This code is governed by the BSD license found in the LICENSE file. /*--- diff --git a/test/language/identifiers/part-unicode-6.0.0-escaped.js b/test/language/identifiers/part-unicode-6.0.0-escaped.js index 85366f9b18b..91a09870412 100644 --- a/test/language/identifiers/part-unicode-6.0.0-escaped.js +++ b/test/language/identifiers/part-unicode-6.0.0-escaped.js @@ -1,4 +1,4 @@ -// Copyright 2022 Mathias Bynens. All rights reserved. +// Copyright 2024 Mathias Bynens. All rights reserved. // This code is governed by the BSD license found in the LICENSE file. /*--- diff --git a/test/language/identifiers/part-unicode-6.0.0.js b/test/language/identifiers/part-unicode-6.0.0.js index 8a5d5255cd4..d123acf72f6 100644 --- a/test/language/identifiers/part-unicode-6.0.0.js +++ b/test/language/identifiers/part-unicode-6.0.0.js @@ -1,4 +1,4 @@ -// Copyright 2022 Mathias Bynens. All rights reserved. +// Copyright 2024 Mathias Bynens. All rights reserved. // This code is governed by the BSD license found in the LICENSE file. /*--- diff --git a/test/language/identifiers/part-unicode-6.1.0-class-escaped.js b/test/language/identifiers/part-unicode-6.1.0-class-escaped.js index 53db752654f..16f86ef1f7e 100644 --- a/test/language/identifiers/part-unicode-6.1.0-class-escaped.js +++ b/test/language/identifiers/part-unicode-6.1.0-class-escaped.js @@ -1,4 +1,4 @@ -// Copyright 2022 Mathias Bynens. All rights reserved. +// Copyright 2024 Mathias Bynens. All rights reserved. // This code is governed by the BSD license found in the LICENSE file. /*--- diff --git a/test/language/identifiers/part-unicode-6.1.0-class.js b/test/language/identifiers/part-unicode-6.1.0-class.js index 8211b38956b..0f23706480c 100644 --- a/test/language/identifiers/part-unicode-6.1.0-class.js +++ b/test/language/identifiers/part-unicode-6.1.0-class.js @@ -1,4 +1,4 @@ -// Copyright 2022 Mathias Bynens. All rights reserved. +// Copyright 2024 Mathias Bynens. All rights reserved. // This code is governed by the BSD license found in the LICENSE file. /*--- diff --git a/test/language/identifiers/part-unicode-6.1.0-escaped.js b/test/language/identifiers/part-unicode-6.1.0-escaped.js index d4b6af6d345..3017facd680 100644 --- a/test/language/identifiers/part-unicode-6.1.0-escaped.js +++ b/test/language/identifiers/part-unicode-6.1.0-escaped.js @@ -1,4 +1,4 @@ -// Copyright 2022 Mathias Bynens. All rights reserved. +// Copyright 2024 Mathias Bynens. All rights reserved. // This code is governed by the BSD license found in the LICENSE file. /*--- diff --git a/test/language/identifiers/part-unicode-6.1.0.js b/test/language/identifiers/part-unicode-6.1.0.js index a43c83cb3d7..cf360caa748 100644 --- a/test/language/identifiers/part-unicode-6.1.0.js +++ b/test/language/identifiers/part-unicode-6.1.0.js @@ -1,4 +1,4 @@ -// Copyright 2022 Mathias Bynens. All rights reserved. +// Copyright 2024 Mathias Bynens. All rights reserved. // This code is governed by the BSD license found in the LICENSE file. /*--- diff --git a/test/language/identifiers/part-unicode-7.0.0-class-escaped.js b/test/language/identifiers/part-unicode-7.0.0-class-escaped.js index db03e13d6ab..59115d92d80 100644 --- a/test/language/identifiers/part-unicode-7.0.0-class-escaped.js +++ b/test/language/identifiers/part-unicode-7.0.0-class-escaped.js @@ -1,4 +1,4 @@ -// Copyright 2022 Mathias Bynens. All rights reserved. +// Copyright 2024 Mathias Bynens. All rights reserved. // This code is governed by the BSD license found in the LICENSE file. /*--- diff --git a/test/language/identifiers/part-unicode-7.0.0-class.js b/test/language/identifiers/part-unicode-7.0.0-class.js index 125e0df4db4..b8cacfbeb89 100644 --- a/test/language/identifiers/part-unicode-7.0.0-class.js +++ b/test/language/identifiers/part-unicode-7.0.0-class.js @@ -1,4 +1,4 @@ -// Copyright 2022 Mathias Bynens. All rights reserved. +// Copyright 2024 Mathias Bynens. All rights reserved. // This code is governed by the BSD license found in the LICENSE file. /*--- diff --git a/test/language/identifiers/part-unicode-7.0.0-escaped.js b/test/language/identifiers/part-unicode-7.0.0-escaped.js index 92bdfd37ed7..48578660b74 100644 --- a/test/language/identifiers/part-unicode-7.0.0-escaped.js +++ b/test/language/identifiers/part-unicode-7.0.0-escaped.js @@ -1,4 +1,4 @@ -// Copyright 2022 Mathias Bynens. All rights reserved. +// Copyright 2024 Mathias Bynens. All rights reserved. // This code is governed by the BSD license found in the LICENSE file. /*--- diff --git a/test/language/identifiers/part-unicode-7.0.0.js b/test/language/identifiers/part-unicode-7.0.0.js index be8e436ff96..96f0499f9de 100644 --- a/test/language/identifiers/part-unicode-7.0.0.js +++ b/test/language/identifiers/part-unicode-7.0.0.js @@ -1,4 +1,4 @@ -// Copyright 2022 Mathias Bynens. All rights reserved. +// Copyright 2024 Mathias Bynens. All rights reserved. // This code is governed by the BSD license found in the LICENSE file. /*--- diff --git a/test/language/identifiers/part-unicode-8.0.0-class-escaped.js b/test/language/identifiers/part-unicode-8.0.0-class-escaped.js index f4da43d1647..8cef6957c27 100644 --- a/test/language/identifiers/part-unicode-8.0.0-class-escaped.js +++ b/test/language/identifiers/part-unicode-8.0.0-class-escaped.js @@ -1,4 +1,4 @@ -// Copyright 2022 Mathias Bynens. All rights reserved. +// Copyright 2024 Mathias Bynens. All rights reserved. // This code is governed by the BSD license found in the LICENSE file. /*--- diff --git a/test/language/identifiers/part-unicode-8.0.0-class.js b/test/language/identifiers/part-unicode-8.0.0-class.js index 2bd1793f254..a602af60587 100644 --- a/test/language/identifiers/part-unicode-8.0.0-class.js +++ b/test/language/identifiers/part-unicode-8.0.0-class.js @@ -1,4 +1,4 @@ -// Copyright 2022 Mathias Bynens. All rights reserved. +// Copyright 2024 Mathias Bynens. All rights reserved. // This code is governed by the BSD license found in the LICENSE file. /*--- diff --git a/test/language/identifiers/part-unicode-8.0.0-escaped.js b/test/language/identifiers/part-unicode-8.0.0-escaped.js index 73b749df6a6..625b94effae 100644 --- a/test/language/identifiers/part-unicode-8.0.0-escaped.js +++ b/test/language/identifiers/part-unicode-8.0.0-escaped.js @@ -1,4 +1,4 @@ -// Copyright 2022 Mathias Bynens. All rights reserved. +// Copyright 2024 Mathias Bynens. All rights reserved. // This code is governed by the BSD license found in the LICENSE file. /*--- diff --git a/test/language/identifiers/part-unicode-8.0.0.js b/test/language/identifiers/part-unicode-8.0.0.js index c07ccbb90c0..a6e365b95ed 100644 --- a/test/language/identifiers/part-unicode-8.0.0.js +++ b/test/language/identifiers/part-unicode-8.0.0.js @@ -1,4 +1,4 @@ -// Copyright 2022 Mathias Bynens. All rights reserved. +// Copyright 2024 Mathias Bynens. All rights reserved. // This code is governed by the BSD license found in the LICENSE file. /*--- diff --git a/test/language/identifiers/part-unicode-9.0.0-class-escaped.js b/test/language/identifiers/part-unicode-9.0.0-class-escaped.js index ef4c0fc7b18..2a4a5601b0f 100644 --- a/test/language/identifiers/part-unicode-9.0.0-class-escaped.js +++ b/test/language/identifiers/part-unicode-9.0.0-class-escaped.js @@ -1,4 +1,4 @@ -// Copyright 2022 Mathias Bynens. All rights reserved. +// Copyright 2024 Mathias Bynens. All rights reserved. // This code is governed by the BSD license found in the LICENSE file. /*--- diff --git a/test/language/identifiers/part-unicode-9.0.0-class.js b/test/language/identifiers/part-unicode-9.0.0-class.js index 8bb67e12b4b..daf65cf53e6 100644 --- a/test/language/identifiers/part-unicode-9.0.0-class.js +++ b/test/language/identifiers/part-unicode-9.0.0-class.js @@ -1,4 +1,4 @@ -// Copyright 2022 Mathias Bynens. All rights reserved. +// Copyright 2024 Mathias Bynens. All rights reserved. // This code is governed by the BSD license found in the LICENSE file. /*--- diff --git a/test/language/identifiers/part-unicode-9.0.0-escaped.js b/test/language/identifiers/part-unicode-9.0.0-escaped.js index c16661ffaf6..0d3466c84cb 100644 --- a/test/language/identifiers/part-unicode-9.0.0-escaped.js +++ b/test/language/identifiers/part-unicode-9.0.0-escaped.js @@ -1,4 +1,4 @@ -// Copyright 2022 Mathias Bynens. All rights reserved. +// Copyright 2024 Mathias Bynens. All rights reserved. // This code is governed by the BSD license found in the LICENSE file. /*--- diff --git a/test/language/identifiers/part-unicode-9.0.0.js b/test/language/identifiers/part-unicode-9.0.0.js index 49ff30e536c..a34933422f6 100644 --- a/test/language/identifiers/part-unicode-9.0.0.js +++ b/test/language/identifiers/part-unicode-9.0.0.js @@ -1,4 +1,4 @@ -// Copyright 2022 Mathias Bynens. All rights reserved. +// Copyright 2024 Mathias Bynens. All rights reserved. // This code is governed by the BSD license found in the LICENSE file. /*--- diff --git a/test/language/identifiers/start-unicode-10.0.0-class-escaped.js b/test/language/identifiers/start-unicode-10.0.0-class-escaped.js index e99c0c047cd..dbff4e6c16b 100644 --- a/test/language/identifiers/start-unicode-10.0.0-class-escaped.js +++ b/test/language/identifiers/start-unicode-10.0.0-class-escaped.js @@ -1,4 +1,4 @@ -// Copyright 2022 Mathias Bynens. All rights reserved. +// Copyright 2024 Mathias Bynens. All rights reserved. // This code is governed by the BSD license found in the LICENSE file. /*--- diff --git a/test/language/identifiers/start-unicode-10.0.0-class.js b/test/language/identifiers/start-unicode-10.0.0-class.js index 7cc92740817..3d64791404b 100644 --- a/test/language/identifiers/start-unicode-10.0.0-class.js +++ b/test/language/identifiers/start-unicode-10.0.0-class.js @@ -1,4 +1,4 @@ -// Copyright 2022 Mathias Bynens. All rights reserved. +// Copyright 2024 Mathias Bynens. All rights reserved. // This code is governed by the BSD license found in the LICENSE file. /*--- diff --git a/test/language/identifiers/start-unicode-10.0.0-escaped.js b/test/language/identifiers/start-unicode-10.0.0-escaped.js index 8e55f181477..18821930d43 100644 --- a/test/language/identifiers/start-unicode-10.0.0-escaped.js +++ b/test/language/identifiers/start-unicode-10.0.0-escaped.js @@ -1,4 +1,4 @@ -// Copyright 2022 Mathias Bynens. All rights reserved. +// Copyright 2024 Mathias Bynens. All rights reserved. // This code is governed by the BSD license found in the LICENSE file. /*--- diff --git a/test/language/identifiers/start-unicode-10.0.0.js b/test/language/identifiers/start-unicode-10.0.0.js index 58e61c43b86..450d68b542b 100644 --- a/test/language/identifiers/start-unicode-10.0.0.js +++ b/test/language/identifiers/start-unicode-10.0.0.js @@ -1,4 +1,4 @@ -// Copyright 2022 Mathias Bynens. All rights reserved. +// Copyright 2024 Mathias Bynens. All rights reserved. // This code is governed by the BSD license found in the LICENSE file. /*--- diff --git a/test/language/identifiers/start-unicode-11.0.0-class-escaped.js b/test/language/identifiers/start-unicode-11.0.0-class-escaped.js index a6e3023abee..47189db769a 100644 --- a/test/language/identifiers/start-unicode-11.0.0-class-escaped.js +++ b/test/language/identifiers/start-unicode-11.0.0-class-escaped.js @@ -1,4 +1,4 @@ -// Copyright 2022 Mathias Bynens. All rights reserved. +// Copyright 2024 Mathias Bynens. All rights reserved. // This code is governed by the BSD license found in the LICENSE file. /*--- diff --git a/test/language/identifiers/start-unicode-11.0.0-class.js b/test/language/identifiers/start-unicode-11.0.0-class.js index 225f7eb1f06..72731d6e0ad 100644 --- a/test/language/identifiers/start-unicode-11.0.0-class.js +++ b/test/language/identifiers/start-unicode-11.0.0-class.js @@ -1,4 +1,4 @@ -// Copyright 2022 Mathias Bynens. All rights reserved. +// Copyright 2024 Mathias Bynens. All rights reserved. // This code is governed by the BSD license found in the LICENSE file. /*--- diff --git a/test/language/identifiers/start-unicode-11.0.0-escaped.js b/test/language/identifiers/start-unicode-11.0.0-escaped.js index c339e3534ba..d0a8b26caa1 100644 --- a/test/language/identifiers/start-unicode-11.0.0-escaped.js +++ b/test/language/identifiers/start-unicode-11.0.0-escaped.js @@ -1,4 +1,4 @@ -// Copyright 2022 Mathias Bynens. All rights reserved. +// Copyright 2024 Mathias Bynens. All rights reserved. // This code is governed by the BSD license found in the LICENSE file. /*--- diff --git a/test/language/identifiers/start-unicode-11.0.0.js b/test/language/identifiers/start-unicode-11.0.0.js index c025406aa88..87392824263 100644 --- a/test/language/identifiers/start-unicode-11.0.0.js +++ b/test/language/identifiers/start-unicode-11.0.0.js @@ -1,4 +1,4 @@ -// Copyright 2022 Mathias Bynens. All rights reserved. +// Copyright 2024 Mathias Bynens. All rights reserved. // This code is governed by the BSD license found in the LICENSE file. /*--- diff --git a/test/language/identifiers/start-unicode-12.0.0-class-escaped.js b/test/language/identifiers/start-unicode-12.0.0-class-escaped.js index 849dc5245b5..08fee3267ec 100644 --- a/test/language/identifiers/start-unicode-12.0.0-class-escaped.js +++ b/test/language/identifiers/start-unicode-12.0.0-class-escaped.js @@ -1,4 +1,4 @@ -// Copyright 2022 Mathias Bynens. All rights reserved. +// Copyright 2024 Mathias Bynens. All rights reserved. // This code is governed by the BSD license found in the LICENSE file. /*--- diff --git a/test/language/identifiers/start-unicode-12.0.0-class.js b/test/language/identifiers/start-unicode-12.0.0-class.js index 2d5a0346563..a14bd47f553 100644 --- a/test/language/identifiers/start-unicode-12.0.0-class.js +++ b/test/language/identifiers/start-unicode-12.0.0-class.js @@ -1,4 +1,4 @@ -// Copyright 2022 Mathias Bynens. All rights reserved. +// Copyright 2024 Mathias Bynens. All rights reserved. // This code is governed by the BSD license found in the LICENSE file. /*--- diff --git a/test/language/identifiers/start-unicode-12.0.0-escaped.js b/test/language/identifiers/start-unicode-12.0.0-escaped.js index 79ede8c6e7c..c3baaa3f377 100644 --- a/test/language/identifiers/start-unicode-12.0.0-escaped.js +++ b/test/language/identifiers/start-unicode-12.0.0-escaped.js @@ -1,4 +1,4 @@ -// Copyright 2022 Mathias Bynens. All rights reserved. +// Copyright 2024 Mathias Bynens. All rights reserved. // This code is governed by the BSD license found in the LICENSE file. /*--- diff --git a/test/language/identifiers/start-unicode-12.0.0.js b/test/language/identifiers/start-unicode-12.0.0.js index 18f01d17081..c18854059c7 100644 --- a/test/language/identifiers/start-unicode-12.0.0.js +++ b/test/language/identifiers/start-unicode-12.0.0.js @@ -1,4 +1,4 @@ -// Copyright 2022 Mathias Bynens. All rights reserved. +// Copyright 2024 Mathias Bynens. All rights reserved. // This code is governed by the BSD license found in the LICENSE file. /*--- diff --git a/test/language/identifiers/start-unicode-13.0.0-class-escaped.js b/test/language/identifiers/start-unicode-13.0.0-class-escaped.js index 8e3129a3657..a8e1bf34ed5 100644 --- a/test/language/identifiers/start-unicode-13.0.0-class-escaped.js +++ b/test/language/identifiers/start-unicode-13.0.0-class-escaped.js @@ -1,4 +1,4 @@ -// Copyright 2022 Mathias Bynens. All rights reserved. +// Copyright 2024 Mathias Bynens. All rights reserved. // This code is governed by the BSD license found in the LICENSE file. /*--- diff --git a/test/language/identifiers/start-unicode-13.0.0-class.js b/test/language/identifiers/start-unicode-13.0.0-class.js index e6c759f98c8..f0923e24e37 100644 --- a/test/language/identifiers/start-unicode-13.0.0-class.js +++ b/test/language/identifiers/start-unicode-13.0.0-class.js @@ -1,4 +1,4 @@ -// Copyright 2022 Mathias Bynens. All rights reserved. +// Copyright 2024 Mathias Bynens. All rights reserved. // This code is governed by the BSD license found in the LICENSE file. /*--- diff --git a/test/language/identifiers/start-unicode-13.0.0-escaped.js b/test/language/identifiers/start-unicode-13.0.0-escaped.js index 74c3025c289..60968e64810 100644 --- a/test/language/identifiers/start-unicode-13.0.0-escaped.js +++ b/test/language/identifiers/start-unicode-13.0.0-escaped.js @@ -1,4 +1,4 @@ -// Copyright 2022 Mathias Bynens. All rights reserved. +// Copyright 2024 Mathias Bynens. All rights reserved. // This code is governed by the BSD license found in the LICENSE file. /*--- diff --git a/test/language/identifiers/start-unicode-13.0.0.js b/test/language/identifiers/start-unicode-13.0.0.js index e2b1b2d92db..6d0576a73d7 100644 --- a/test/language/identifiers/start-unicode-13.0.0.js +++ b/test/language/identifiers/start-unicode-13.0.0.js @@ -1,4 +1,4 @@ -// Copyright 2022 Mathias Bynens. All rights reserved. +// Copyright 2024 Mathias Bynens. All rights reserved. // This code is governed by the BSD license found in the LICENSE file. /*--- diff --git a/test/language/identifiers/start-unicode-14.0.0-class-escaped.js b/test/language/identifiers/start-unicode-14.0.0-class-escaped.js index c39023bfc4f..b2306b35f05 100644 --- a/test/language/identifiers/start-unicode-14.0.0-class-escaped.js +++ b/test/language/identifiers/start-unicode-14.0.0-class-escaped.js @@ -1,4 +1,4 @@ -// Copyright 2022 Mathias Bynens. All rights reserved. +// Copyright 2024 Mathias Bynens. All rights reserved. // This code is governed by the BSD license found in the LICENSE file. /*--- diff --git a/test/language/identifiers/start-unicode-14.0.0-class.js b/test/language/identifiers/start-unicode-14.0.0-class.js index f0e6f2528ce..3ae1ab8313e 100644 --- a/test/language/identifiers/start-unicode-14.0.0-class.js +++ b/test/language/identifiers/start-unicode-14.0.0-class.js @@ -1,4 +1,4 @@ -// Copyright 2022 Mathias Bynens. All rights reserved. +// Copyright 2024 Mathias Bynens. All rights reserved. // This code is governed by the BSD license found in the LICENSE file. /*--- diff --git a/test/language/identifiers/start-unicode-14.0.0-escaped.js b/test/language/identifiers/start-unicode-14.0.0-escaped.js index 0b445ec46ec..0447510aa06 100644 --- a/test/language/identifiers/start-unicode-14.0.0-escaped.js +++ b/test/language/identifiers/start-unicode-14.0.0-escaped.js @@ -1,4 +1,4 @@ -// Copyright 2022 Mathias Bynens. All rights reserved. +// Copyright 2024 Mathias Bynens. All rights reserved. // This code is governed by the BSD license found in the LICENSE file. /*--- diff --git a/test/language/identifiers/start-unicode-14.0.0.js b/test/language/identifiers/start-unicode-14.0.0.js index 542225a0583..5b05be340aa 100644 --- a/test/language/identifiers/start-unicode-14.0.0.js +++ b/test/language/identifiers/start-unicode-14.0.0.js @@ -1,4 +1,4 @@ -// Copyright 2022 Mathias Bynens. All rights reserved. +// Copyright 2024 Mathias Bynens. All rights reserved. // This code is governed by the BSD license found in the LICENSE file. /*--- diff --git a/test/language/identifiers/start-unicode-15.0.0-class-escaped.js b/test/language/identifiers/start-unicode-15.0.0-class-escaped.js index b177d5de3b8..006ec272d6e 100644 --- a/test/language/identifiers/start-unicode-15.0.0-class-escaped.js +++ b/test/language/identifiers/start-unicode-15.0.0-class-escaped.js @@ -1,4 +1,4 @@ -// Copyright 2022 Mathias Bynens. All rights reserved. +// Copyright 2024 Mathias Bynens. All rights reserved. // This code is governed by the BSD license found in the LICENSE file. /*--- diff --git a/test/language/identifiers/start-unicode-15.0.0-class.js b/test/language/identifiers/start-unicode-15.0.0-class.js index 838f644c14b..ab22f318666 100644 --- a/test/language/identifiers/start-unicode-15.0.0-class.js +++ b/test/language/identifiers/start-unicode-15.0.0-class.js @@ -1,4 +1,4 @@ -// Copyright 2022 Mathias Bynens. All rights reserved. +// Copyright 2024 Mathias Bynens. All rights reserved. // This code is governed by the BSD license found in the LICENSE file. /*--- diff --git a/test/language/identifiers/start-unicode-15.0.0-escaped.js b/test/language/identifiers/start-unicode-15.0.0-escaped.js index b25b9586fda..b4493e29486 100644 --- a/test/language/identifiers/start-unicode-15.0.0-escaped.js +++ b/test/language/identifiers/start-unicode-15.0.0-escaped.js @@ -1,4 +1,4 @@ -// Copyright 2022 Mathias Bynens. All rights reserved. +// Copyright 2024 Mathias Bynens. All rights reserved. // This code is governed by the BSD license found in the LICENSE file. /*--- diff --git a/test/language/identifiers/start-unicode-15.0.0.js b/test/language/identifiers/start-unicode-15.0.0.js index 8b75cbe5937..d848d229746 100644 --- a/test/language/identifiers/start-unicode-15.0.0.js +++ b/test/language/identifiers/start-unicode-15.0.0.js @@ -1,4 +1,4 @@ -// Copyright 2022 Mathias Bynens. All rights reserved. +// Copyright 2024 Mathias Bynens. All rights reserved. // This code is governed by the BSD license found in the LICENSE file. /*--- diff --git a/test/language/identifiers/start-unicode-15.1.0-class-escaped.js b/test/language/identifiers/start-unicode-15.1.0-class-escaped.js new file mode 100644 index 00000000000..64d1f9e7754 --- /dev/null +++ b/test/language/identifiers/start-unicode-15.1.0-class-escaped.js @@ -0,0 +1,641 @@ +// Copyright 2024 Mathias Bynens. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +author: Mathias Bynens +esid: prod-PrivateIdentifier +description: | + Test that Unicode v15.1.0 ID_Start characters are accepted as + identifier start characters in escaped form, i.e. + - \uXXXX or \u{XXXX} for BMP symbols + - \u{XXXXXX} for astral symbols + in private class fields. +info: | + Generated by https://github.com/mathiasbynens/caniunicode +features: [class, class-fields-private] +---*/ + +class _ { + #\u{2EBF0}; + #\u{2EBF1}; + #\u{2EBF2}; + #\u{2EBF3}; + #\u{2EBF4}; + #\u{2EBF5}; + #\u{2EBF6}; + #\u{2EBF7}; + #\u{2EBF8}; + #\u{2EBF9}; + #\u{2EBFA}; + #\u{2EBFB}; + #\u{2EBFC}; + #\u{2EBFD}; + #\u{2EBFE}; + #\u{2EBFF}; + #\u{2EC00}; + #\u{2EC01}; + #\u{2EC02}; + #\u{2EC03}; + #\u{2EC04}; + #\u{2EC05}; + #\u{2EC06}; + #\u{2EC07}; + #\u{2EC08}; + #\u{2EC09}; + #\u{2EC0A}; + #\u{2EC0B}; + #\u{2EC0C}; + #\u{2EC0D}; + #\u{2EC0E}; + #\u{2EC0F}; + #\u{2EC10}; + #\u{2EC11}; + #\u{2EC12}; + #\u{2EC13}; + #\u{2EC14}; + #\u{2EC15}; + #\u{2EC16}; + #\u{2EC17}; + #\u{2EC18}; + #\u{2EC19}; + #\u{2EC1A}; + #\u{2EC1B}; + #\u{2EC1C}; + #\u{2EC1D}; + #\u{2EC1E}; + #\u{2EC1F}; + #\u{2EC20}; + #\u{2EC21}; + #\u{2EC22}; + #\u{2EC23}; + #\u{2EC24}; + #\u{2EC25}; + #\u{2EC26}; + #\u{2EC27}; + #\u{2EC28}; + #\u{2EC29}; + #\u{2EC2A}; + #\u{2EC2B}; + #\u{2EC2C}; + #\u{2EC2D}; + #\u{2EC2E}; + #\u{2EC2F}; + #\u{2EC30}; + #\u{2EC31}; + #\u{2EC32}; + #\u{2EC33}; + #\u{2EC34}; + #\u{2EC35}; + #\u{2EC36}; + #\u{2EC37}; + #\u{2EC38}; + #\u{2EC39}; + #\u{2EC3A}; + #\u{2EC3B}; + #\u{2EC3C}; + #\u{2EC3D}; + #\u{2EC3E}; + #\u{2EC3F}; + #\u{2EC40}; + #\u{2EC41}; + #\u{2EC42}; + #\u{2EC43}; + #\u{2EC44}; + #\u{2EC45}; + #\u{2EC46}; + #\u{2EC47}; + #\u{2EC48}; + #\u{2EC49}; + #\u{2EC4A}; + #\u{2EC4B}; + #\u{2EC4C}; + #\u{2EC4D}; + #\u{2EC4E}; + #\u{2EC4F}; + #\u{2EC50}; + #\u{2EC51}; + #\u{2EC52}; + #\u{2EC53}; + #\u{2EC54}; + #\u{2EC55}; + #\u{2EC56}; + #\u{2EC57}; + #\u{2EC58}; + #\u{2EC59}; + #\u{2EC5A}; + #\u{2EC5B}; + #\u{2EC5C}; + #\u{2EC5D}; + #\u{2EC5E}; + #\u{2EC5F}; + #\u{2EC60}; + #\u{2EC61}; + #\u{2EC62}; + #\u{2EC63}; + #\u{2EC64}; + #\u{2EC65}; + #\u{2EC66}; + #\u{2EC67}; + #\u{2EC68}; + #\u{2EC69}; + #\u{2EC6A}; + #\u{2EC6B}; + #\u{2EC6C}; + #\u{2EC6D}; + #\u{2EC6E}; + #\u{2EC6F}; + #\u{2EC70}; + #\u{2EC71}; + #\u{2EC72}; + #\u{2EC73}; + #\u{2EC74}; + #\u{2EC75}; + #\u{2EC76}; + #\u{2EC77}; + #\u{2EC78}; + #\u{2EC79}; + #\u{2EC7A}; + #\u{2EC7B}; + #\u{2EC7C}; + #\u{2EC7D}; + #\u{2EC7E}; + #\u{2EC7F}; + #\u{2EC80}; + #\u{2EC81}; + #\u{2EC82}; + #\u{2EC83}; + #\u{2EC84}; + #\u{2EC85}; + #\u{2EC86}; + #\u{2EC87}; + #\u{2EC88}; + #\u{2EC89}; + #\u{2EC8A}; + #\u{2EC8B}; + #\u{2EC8C}; + #\u{2EC8D}; + #\u{2EC8E}; + #\u{2EC8F}; + #\u{2EC90}; + #\u{2EC91}; + #\u{2EC92}; + #\u{2EC93}; + #\u{2EC94}; + #\u{2EC95}; + #\u{2EC96}; + #\u{2EC97}; + #\u{2EC98}; + #\u{2EC99}; + #\u{2EC9A}; + #\u{2EC9B}; + #\u{2EC9C}; + #\u{2EC9D}; + #\u{2EC9E}; + #\u{2EC9F}; + #\u{2ECA0}; + #\u{2ECA1}; + #\u{2ECA2}; + #\u{2ECA3}; + #\u{2ECA4}; + #\u{2ECA5}; + #\u{2ECA6}; + #\u{2ECA7}; + #\u{2ECA8}; + #\u{2ECA9}; + #\u{2ECAA}; + #\u{2ECAB}; + #\u{2ECAC}; + #\u{2ECAD}; + #\u{2ECAE}; + #\u{2ECAF}; + #\u{2ECB0}; + #\u{2ECB1}; + #\u{2ECB2}; + #\u{2ECB3}; + #\u{2ECB4}; + #\u{2ECB5}; + #\u{2ECB6}; + #\u{2ECB7}; + #\u{2ECB8}; + #\u{2ECB9}; + #\u{2ECBA}; + #\u{2ECBB}; + #\u{2ECBC}; + #\u{2ECBD}; + #\u{2ECBE}; + #\u{2ECBF}; + #\u{2ECC0}; + #\u{2ECC1}; + #\u{2ECC2}; + #\u{2ECC3}; + #\u{2ECC4}; + #\u{2ECC5}; + #\u{2ECC6}; + #\u{2ECC7}; + #\u{2ECC8}; + #\u{2ECC9}; + #\u{2ECCA}; + #\u{2ECCB}; + #\u{2ECCC}; + #\u{2ECCD}; + #\u{2ECCE}; + #\u{2ECCF}; + #\u{2ECD0}; + #\u{2ECD1}; + #\u{2ECD2}; + #\u{2ECD3}; + #\u{2ECD4}; + #\u{2ECD5}; + #\u{2ECD6}; + #\u{2ECD7}; + #\u{2ECD8}; + #\u{2ECD9}; + #\u{2ECDA}; + #\u{2ECDB}; + #\u{2ECDC}; + #\u{2ECDD}; + #\u{2ECDE}; + #\u{2ECDF}; + #\u{2ECE0}; + #\u{2ECE1}; + #\u{2ECE2}; + #\u{2ECE3}; + #\u{2ECE4}; + #\u{2ECE5}; + #\u{2ECE6}; + #\u{2ECE7}; + #\u{2ECE8}; + #\u{2ECE9}; + #\u{2ECEA}; + #\u{2ECEB}; + #\u{2ECEC}; + #\u{2ECED}; + #\u{2ECEE}; + #\u{2ECEF}; + #\u{2ECF0}; + #\u{2ECF1}; + #\u{2ECF2}; + #\u{2ECF3}; + #\u{2ECF4}; + #\u{2ECF5}; + #\u{2ECF6}; + #\u{2ECF7}; + #\u{2ECF8}; + #\u{2ECF9}; + #\u{2ECFA}; + #\u{2ECFB}; + #\u{2ECFC}; + #\u{2ECFD}; + #\u{2ECFE}; + #\u{2ECFF}; + #\u{2ED00}; + #\u{2ED01}; + #\u{2ED02}; + #\u{2ED03}; + #\u{2ED04}; + #\u{2ED05}; + #\u{2ED06}; + #\u{2ED07}; + #\u{2ED08}; + #\u{2ED09}; + #\u{2ED0A}; + #\u{2ED0B}; + #\u{2ED0C}; + #\u{2ED0D}; + #\u{2ED0E}; + #\u{2ED0F}; + #\u{2ED10}; + #\u{2ED11}; + #\u{2ED12}; + #\u{2ED13}; + #\u{2ED14}; + #\u{2ED15}; + #\u{2ED16}; + #\u{2ED17}; + #\u{2ED18}; + #\u{2ED19}; + #\u{2ED1A}; + #\u{2ED1B}; + #\u{2ED1C}; + #\u{2ED1D}; + #\u{2ED1E}; + #\u{2ED1F}; + #\u{2ED20}; + #\u{2ED21}; + #\u{2ED22}; + #\u{2ED23}; + #\u{2ED24}; + #\u{2ED25}; + #\u{2ED26}; + #\u{2ED27}; + #\u{2ED28}; + #\u{2ED29}; + #\u{2ED2A}; + #\u{2ED2B}; + #\u{2ED2C}; + #\u{2ED2D}; + #\u{2ED2E}; + #\u{2ED2F}; + #\u{2ED30}; + #\u{2ED31}; + #\u{2ED32}; + #\u{2ED33}; + #\u{2ED34}; + #\u{2ED35}; + #\u{2ED36}; + #\u{2ED37}; + #\u{2ED38}; + #\u{2ED39}; + #\u{2ED3A}; + #\u{2ED3B}; + #\u{2ED3C}; + #\u{2ED3D}; + #\u{2ED3E}; + #\u{2ED3F}; + #\u{2ED40}; + #\u{2ED41}; + #\u{2ED42}; + #\u{2ED43}; + #\u{2ED44}; + #\u{2ED45}; + #\u{2ED46}; + #\u{2ED47}; + #\u{2ED48}; + #\u{2ED49}; + #\u{2ED4A}; + #\u{2ED4B}; + #\u{2ED4C}; + #\u{2ED4D}; + #\u{2ED4E}; + #\u{2ED4F}; + #\u{2ED50}; + #\u{2ED51}; + #\u{2ED52}; + #\u{2ED53}; + #\u{2ED54}; + #\u{2ED55}; + #\u{2ED56}; + #\u{2ED57}; + #\u{2ED58}; + #\u{2ED59}; + #\u{2ED5A}; + #\u{2ED5B}; + #\u{2ED5C}; + #\u{2ED5D}; + #\u{2ED5E}; + #\u{2ED5F}; + #\u{2ED60}; + #\u{2ED61}; + #\u{2ED62}; + #\u{2ED63}; + #\u{2ED64}; + #\u{2ED65}; + #\u{2ED66}; + #\u{2ED67}; + #\u{2ED68}; + #\u{2ED69}; + #\u{2ED6A}; + #\u{2ED6B}; + #\u{2ED6C}; + #\u{2ED6D}; + #\u{2ED6E}; + #\u{2ED6F}; + #\u{2ED70}; + #\u{2ED71}; + #\u{2ED72}; + #\u{2ED73}; + #\u{2ED74}; + #\u{2ED75}; + #\u{2ED76}; + #\u{2ED77}; + #\u{2ED78}; + #\u{2ED79}; + #\u{2ED7A}; + #\u{2ED7B}; + #\u{2ED7C}; + #\u{2ED7D}; + #\u{2ED7E}; + #\u{2ED7F}; + #\u{2ED80}; + #\u{2ED81}; + #\u{2ED82}; + #\u{2ED83}; + #\u{2ED84}; + #\u{2ED85}; + #\u{2ED86}; + #\u{2ED87}; + #\u{2ED88}; + #\u{2ED89}; + #\u{2ED8A}; + #\u{2ED8B}; + #\u{2ED8C}; + #\u{2ED8D}; + #\u{2ED8E}; + #\u{2ED8F}; + #\u{2ED90}; + #\u{2ED91}; + #\u{2ED92}; + #\u{2ED93}; + #\u{2ED94}; + #\u{2ED95}; + #\u{2ED96}; + #\u{2ED97}; + #\u{2ED98}; + #\u{2ED99}; + #\u{2ED9A}; + #\u{2ED9B}; + #\u{2ED9C}; + #\u{2ED9D}; + #\u{2ED9E}; + #\u{2ED9F}; + #\u{2EDA0}; + #\u{2EDA1}; + #\u{2EDA2}; + #\u{2EDA3}; + #\u{2EDA4}; + #\u{2EDA5}; + #\u{2EDA6}; + #\u{2EDA7}; + #\u{2EDA8}; + #\u{2EDA9}; + #\u{2EDAA}; + #\u{2EDAB}; + #\u{2EDAC}; + #\u{2EDAD}; + #\u{2EDAE}; + #\u{2EDAF}; + #\u{2EDB0}; + #\u{2EDB1}; + #\u{2EDB2}; + #\u{2EDB3}; + #\u{2EDB4}; + #\u{2EDB5}; + #\u{2EDB6}; + #\u{2EDB7}; + #\u{2EDB8}; + #\u{2EDB9}; + #\u{2EDBA}; + #\u{2EDBB}; + #\u{2EDBC}; + #\u{2EDBD}; + #\u{2EDBE}; + #\u{2EDBF}; + #\u{2EDC0}; + #\u{2EDC1}; + #\u{2EDC2}; + #\u{2EDC3}; + #\u{2EDC4}; + #\u{2EDC5}; + #\u{2EDC6}; + #\u{2EDC7}; + #\u{2EDC8}; + #\u{2EDC9}; + #\u{2EDCA}; + #\u{2EDCB}; + #\u{2EDCC}; + #\u{2EDCD}; + #\u{2EDCE}; + #\u{2EDCF}; + #\u{2EDD0}; + #\u{2EDD1}; + #\u{2EDD2}; + #\u{2EDD3}; + #\u{2EDD4}; + #\u{2EDD5}; + #\u{2EDD6}; + #\u{2EDD7}; + #\u{2EDD8}; + #\u{2EDD9}; + #\u{2EDDA}; + #\u{2EDDB}; + #\u{2EDDC}; + #\u{2EDDD}; + #\u{2EDDE}; + #\u{2EDDF}; + #\u{2EDE0}; + #\u{2EDE1}; + #\u{2EDE2}; + #\u{2EDE3}; + #\u{2EDE4}; + #\u{2EDE5}; + #\u{2EDE6}; + #\u{2EDE7}; + #\u{2EDE8}; + #\u{2EDE9}; + #\u{2EDEA}; + #\u{2EDEB}; + #\u{2EDEC}; + #\u{2EDED}; + #\u{2EDEE}; + #\u{2EDEF}; + #\u{2EDF0}; + #\u{2EDF1}; + #\u{2EDF2}; + #\u{2EDF3}; + #\u{2EDF4}; + #\u{2EDF5}; + #\u{2EDF6}; + #\u{2EDF7}; + #\u{2EDF8}; + #\u{2EDF9}; + #\u{2EDFA}; + #\u{2EDFB}; + #\u{2EDFC}; + #\u{2EDFD}; + #\u{2EDFE}; + #\u{2EDFF}; + #\u{2EE00}; + #\u{2EE01}; + #\u{2EE02}; + #\u{2EE03}; + #\u{2EE04}; + #\u{2EE05}; + #\u{2EE06}; + #\u{2EE07}; + #\u{2EE08}; + #\u{2EE09}; + #\u{2EE0A}; + #\u{2EE0B}; + #\u{2EE0C}; + #\u{2EE0D}; + #\u{2EE0E}; + #\u{2EE0F}; + #\u{2EE10}; + #\u{2EE11}; + #\u{2EE12}; + #\u{2EE13}; + #\u{2EE14}; + #\u{2EE15}; + #\u{2EE16}; + #\u{2EE17}; + #\u{2EE18}; + #\u{2EE19}; + #\u{2EE1A}; + #\u{2EE1B}; + #\u{2EE1C}; + #\u{2EE1D}; + #\u{2EE1E}; + #\u{2EE1F}; + #\u{2EE20}; + #\u{2EE21}; + #\u{2EE22}; + #\u{2EE23}; + #\u{2EE24}; + #\u{2EE25}; + #\u{2EE26}; + #\u{2EE27}; + #\u{2EE28}; + #\u{2EE29}; + #\u{2EE2A}; + #\u{2EE2B}; + #\u{2EE2C}; + #\u{2EE2D}; + #\u{2EE2E}; + #\u{2EE2F}; + #\u{2EE30}; + #\u{2EE31}; + #\u{2EE32}; + #\u{2EE33}; + #\u{2EE34}; + #\u{2EE35}; + #\u{2EE36}; + #\u{2EE37}; + #\u{2EE38}; + #\u{2EE39}; + #\u{2EE3A}; + #\u{2EE3B}; + #\u{2EE3C}; + #\u{2EE3D}; + #\u{2EE3E}; + #\u{2EE3F}; + #\u{2EE40}; + #\u{2EE41}; + #\u{2EE42}; + #\u{2EE43}; + #\u{2EE44}; + #\u{2EE45}; + #\u{2EE46}; + #\u{2EE47}; + #\u{2EE48}; + #\u{2EE49}; + #\u{2EE4A}; + #\u{2EE4B}; + #\u{2EE4C}; + #\u{2EE4D}; + #\u{2EE4E}; + #\u{2EE4F}; + #\u{2EE50}; + #\u{2EE51}; + #\u{2EE52}; + #\u{2EE53}; + #\u{2EE54}; + #\u{2EE55}; + #\u{2EE56}; + #\u{2EE57}; + #\u{2EE58}; + #\u{2EE59}; + #\u{2EE5A}; + #\u{2EE5B}; + #\u{2EE5C}; + #\u{2EE5D}; +}; diff --git a/test/language/identifiers/start-unicode-15.1.0-class.js b/test/language/identifiers/start-unicode-15.1.0-class.js new file mode 100644 index 00000000000..8b3723154bf --- /dev/null +++ b/test/language/identifiers/start-unicode-15.1.0-class.js @@ -0,0 +1,638 @@ +// Copyright 2024 Mathias Bynens. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +author: Mathias Bynens +esid: prod-PrivateIdentifier +description: | + Test that Unicode v15.1.0 ID_Start characters are accepted as + identifier start characters in private class fields. +info: | + Generated by https://github.com/mathiasbynens/caniunicode +features: [class, class-fields-private] +---*/ + +class _ { + #𮯰; + #𮯱; + #𮯲; + #𮯳; + #𮯴; + #𮯵; + #𮯶; + #𮯷; + #𮯸; + #𮯹; + #𮯺; + #𮯻; + #𮯼; + #𮯽; + #𮯾; + #𮯿; + #𮰀; + #𮰁; + #𮰂; + #𮰃; + #𮰄; + #𮰅; + #𮰆; + #𮰇; + #𮰈; + #𮰉; + #𮰊; + #𮰋; + #𮰌; + #𮰍; + #𮰎; + #𮰏; + #𮰐; + #𮰑; + #𮰒; + #𮰓; + #𮰔; + #𮰕; + #𮰖; + #𮰗; + #𮰘; + #𮰙; + #𮰚; + #𮰛; + #𮰜; + #𮰝; + #𮰞; + #𮰟; + #𮰠; + #𮰡; + #𮰢; + #𮰣; + #𮰤; + #𮰥; + #𮰦; + #𮰧; + #𮰨; + #𮰩; + #𮰪; + #𮰫; + #𮰬; + #𮰭; + #𮰮; + #𮰯; + #𮰰; + #𮰱; + #𮰲; + #𮰳; + #𮰴; + #𮰵; + #𮰶; + #𮰷; + #𮰸; + #𮰹; + #𮰺; + #𮰻; + #𮰼; + #𮰽; + #𮰾; + #𮰿; + #𮱀; + #𮱁; + #𮱂; + #𮱃; + #𮱄; + #𮱅; + #𮱆; + #𮱇; + #𮱈; + #𮱉; + #𮱊; + #𮱋; + #𮱌; + #𮱍; + #𮱎; + #𮱏; + #𮱐; + #𮱑; + #𮱒; + #𮱓; + #𮱔; + #𮱕; + #𮱖; + #𮱗; + #𮱘; + #𮱙; + #𮱚; + #𮱛; + #𮱜; + #𮱝; + #𮱞; + #𮱟; + #𮱠; + #𮱡; + #𮱢; + #𮱣; + #𮱤; + #𮱥; + #𮱦; + #𮱧; + #𮱨; + #𮱩; + #𮱪; + #𮱫; + #𮱬; + #𮱭; + #𮱮; + #𮱯; + #𮱰; + #𮱱; + #𮱲; + #𮱳; + #𮱴; + #𮱵; + #𮱶; + #𮱷; + #𮱸; + #𮱹; + #𮱺; + #𮱻; + #𮱼; + #𮱽; + #𮱾; + #𮱿; + #𮲀; + #𮲁; + #𮲂; + #𮲃; + #𮲄; + #𮲅; + #𮲆; + #𮲇; + #𮲈; + #𮲉; + #𮲊; + #𮲋; + #𮲌; + #𮲍; + #𮲎; + #𮲏; + #𮲐; + #𮲑; + #𮲒; + #𮲓; + #𮲔; + #𮲕; + #𮲖; + #𮲗; + #𮲘; + #𮲙; + #𮲚; + #𮲛; + #𮲜; + #𮲝; + #𮲞; + #𮲟; + #𮲠; + #𮲡; + #𮲢; + #𮲣; + #𮲤; + #𮲥; + #𮲦; + #𮲧; + #𮲨; + #𮲩; + #𮲪; + #𮲫; + #𮲬; + #𮲭; + #𮲮; + #𮲯; + #𮲰; + #𮲱; + #𮲲; + #𮲳; + #𮲴; + #𮲵; + #𮲶; + #𮲷; + #𮲸; + #𮲹; + #𮲺; + #𮲻; + #𮲼; + #𮲽; + #𮲾; + #𮲿; + #𮳀; + #𮳁; + #𮳂; + #𮳃; + #𮳄; + #𮳅; + #𮳆; + #𮳇; + #𮳈; + #𮳉; + #𮳊; + #𮳋; + #𮳌; + #𮳍; + #𮳎; + #𮳏; + #𮳐; + #𮳑; + #𮳒; + #𮳓; + #𮳔; + #𮳕; + #𮳖; + #𮳗; + #𮳘; + #𮳙; + #𮳚; + #𮳛; + #𮳜; + #𮳝; + #𮳞; + #𮳟; + #𮳠; + #𮳡; + #𮳢; + #𮳣; + #𮳤; + #𮳥; + #𮳦; + #𮳧; + #𮳨; + #𮳩; + #𮳪; + #𮳫; + #𮳬; + #𮳭; + #𮳮; + #𮳯; + #𮳰; + #𮳱; + #𮳲; + #𮳳; + #𮳴; + #𮳵; + #𮳶; + #𮳷; + #𮳸; + #𮳹; + #𮳺; + #𮳻; + #𮳼; + #𮳽; + #𮳾; + #𮳿; + #𮴀; + #𮴁; + #𮴂; + #𮴃; + #𮴄; + #𮴅; + #𮴆; + #𮴇; + #𮴈; + #𮴉; + #𮴊; + #𮴋; + #𮴌; + #𮴍; + #𮴎; + #𮴏; + #𮴐; + #𮴑; + #𮴒; + #𮴓; + #𮴔; + #𮴕; + #𮴖; + #𮴗; + #𮴘; + #𮴙; + #𮴚; + #𮴛; + #𮴜; + #𮴝; + #𮴞; + #𮴟; + #𮴠; + #𮴡; + #𮴢; + #𮴣; + #𮴤; + #𮴥; + #𮴦; + #𮴧; + #𮴨; + #𮴩; + #𮴪; + #𮴫; + #𮴬; + #𮴭; + #𮴮; + #𮴯; + #𮴰; + #𮴱; + #𮴲; + #𮴳; + #𮴴; + #𮴵; + #𮴶; + #𮴷; + #𮴸; + #𮴹; + #𮴺; + #𮴻; + #𮴼; + #𮴽; + #𮴾; + #𮴿; + #𮵀; + #𮵁; + #𮵂; + #𮵃; + #𮵄; + #𮵅; + #𮵆; + #𮵇; + #𮵈; + #𮵉; + #𮵊; + #𮵋; + #𮵌; + #𮵍; + #𮵎; + #𮵏; + #𮵐; + #𮵑; + #𮵒; + #𮵓; + #𮵔; + #𮵕; + #𮵖; + #𮵗; + #𮵘; + #𮵙; + #𮵚; + #𮵛; + #𮵜; + #𮵝; + #𮵞; + #𮵟; + #𮵠; + #𮵡; + #𮵢; + #𮵣; + #𮵤; + #𮵥; + #𮵦; + #𮵧; + #𮵨; + #𮵩; + #𮵪; + #𮵫; + #𮵬; + #𮵭; + #𮵮; + #𮵯; + #𮵰; + #𮵱; + #𮵲; + #𮵳; + #𮵴; + #𮵵; + #𮵶; + #𮵷; + #𮵸; + #𮵹; + #𮵺; + #𮵻; + #𮵼; + #𮵽; + #𮵾; + #𮵿; + #𮶀; + #𮶁; + #𮶂; + #𮶃; + #𮶄; + #𮶅; + #𮶆; + #𮶇; + #𮶈; + #𮶉; + #𮶊; + #𮶋; + #𮶌; + #𮶍; + #𮶎; + #𮶏; + #𮶐; + #𮶑; + #𮶒; + #𮶓; + #𮶔; + #𮶕; + #𮶖; + #𮶗; + #𮶘; + #𮶙; + #𮶚; + #𮶛; + #𮶜; + #𮶝; + #𮶞; + #𮶟; + #𮶠; + #𮶡; + #𮶢; + #𮶣; + #𮶤; + #𮶥; + #𮶦; + #𮶧; + #𮶨; + #𮶩; + #𮶪; + #𮶫; + #𮶬; + #𮶭; + #𮶮; + #𮶯; + #𮶰; + #𮶱; + #𮶲; + #𮶳; + #𮶴; + #𮶵; + #𮶶; + #𮶷; + #𮶸; + #𮶹; + #𮶺; + #𮶻; + #𮶼; + #𮶽; + #𮶾; + #𮶿; + #𮷀; + #𮷁; + #𮷂; + #𮷃; + #𮷄; + #𮷅; + #𮷆; + #𮷇; + #𮷈; + #𮷉; + #𮷊; + #𮷋; + #𮷌; + #𮷍; + #𮷎; + #𮷏; + #𮷐; + #𮷑; + #𮷒; + #𮷓; + #𮷔; + #𮷕; + #𮷖; + #𮷗; + #𮷘; + #𮷙; + #𮷚; + #𮷛; + #𮷜; + #𮷝; + #𮷞; + #𮷟; + #𮷠; + #𮷡; + #𮷢; + #𮷣; + #𮷤; + #𮷥; + #𮷦; + #𮷧; + #𮷨; + #𮷩; + #𮷪; + #𮷫; + #𮷬; + #𮷭; + #𮷮; + #𮷯; + #𮷰; + #𮷱; + #𮷲; + #𮷳; + #𮷴; + #𮷵; + #𮷶; + #𮷷; + #𮷸; + #𮷹; + #𮷺; + #𮷻; + #𮷼; + #𮷽; + #𮷾; + #𮷿; + #𮸀; + #𮸁; + #𮸂; + #𮸃; + #𮸄; + #𮸅; + #𮸆; + #𮸇; + #𮸈; + #𮸉; + #𮸊; + #𮸋; + #𮸌; + #𮸍; + #𮸎; + #𮸏; + #𮸐; + #𮸑; + #𮸒; + #𮸓; + #𮸔; + #𮸕; + #𮸖; + #𮸗; + #𮸘; + #𮸙; + #𮸚; + #𮸛; + #𮸜; + #𮸝; + #𮸞; + #𮸟; + #𮸠; + #𮸡; + #𮸢; + #𮸣; + #𮸤; + #𮸥; + #𮸦; + #𮸧; + #𮸨; + #𮸩; + #𮸪; + #𮸫; + #𮸬; + #𮸭; + #𮸮; + #𮸯; + #𮸰; + #𮸱; + #𮸲; + #𮸳; + #𮸴; + #𮸵; + #𮸶; + #𮸷; + #𮸸; + #𮸹; + #𮸺; + #𮸻; + #𮸼; + #𮸽; + #𮸾; + #𮸿; + #𮹀; + #𮹁; + #𮹂; + #𮹃; + #𮹄; + #𮹅; + #𮹆; + #𮹇; + #𮹈; + #𮹉; + #𮹊; + #𮹋; + #𮹌; + #𮹍; + #𮹎; + #𮹏; + #𮹐; + #𮹑; + #𮹒; + #𮹓; + #𮹔; + #𮹕; + #𮹖; + #𮹗; + #𮹘; + #𮹙; + #𮹚; + #𮹛; + #𮹜; + #𮹝; +}; diff --git a/test/language/identifiers/start-unicode-15.1.0-escaped.js b/test/language/identifiers/start-unicode-15.1.0-escaped.js new file mode 100644 index 00000000000..23005f35b43 --- /dev/null +++ b/test/language/identifiers/start-unicode-15.1.0-escaped.js @@ -0,0 +1,637 @@ +// Copyright 2024 Mathias Bynens. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +author: Mathias Bynens +esid: sec-names-and-keywords +description: | + Test that Unicode v15.1.0 ID_Start characters are accepted as + identifier start characters in escaped form, i.e. + - \uXXXX or \u{XXXX} for BMP symbols + - \u{XXXXXX} for astral symbols +info: | + Generated by https://github.com/mathiasbynens/caniunicode +---*/ + +var \u{2EBF0}; +var \u{2EBF1}; +var \u{2EBF2}; +var \u{2EBF3}; +var \u{2EBF4}; +var \u{2EBF5}; +var \u{2EBF6}; +var \u{2EBF7}; +var \u{2EBF8}; +var \u{2EBF9}; +var \u{2EBFA}; +var \u{2EBFB}; +var \u{2EBFC}; +var \u{2EBFD}; +var \u{2EBFE}; +var \u{2EBFF}; +var \u{2EC00}; +var \u{2EC01}; +var \u{2EC02}; +var \u{2EC03}; +var \u{2EC04}; +var \u{2EC05}; +var \u{2EC06}; +var \u{2EC07}; +var \u{2EC08}; +var \u{2EC09}; +var \u{2EC0A}; +var \u{2EC0B}; +var \u{2EC0C}; +var \u{2EC0D}; +var \u{2EC0E}; +var \u{2EC0F}; +var \u{2EC10}; +var \u{2EC11}; +var \u{2EC12}; +var \u{2EC13}; +var \u{2EC14}; +var \u{2EC15}; +var \u{2EC16}; +var \u{2EC17}; +var \u{2EC18}; +var \u{2EC19}; +var \u{2EC1A}; +var \u{2EC1B}; +var \u{2EC1C}; +var \u{2EC1D}; +var \u{2EC1E}; +var \u{2EC1F}; +var \u{2EC20}; +var \u{2EC21}; +var \u{2EC22}; +var \u{2EC23}; +var \u{2EC24}; +var \u{2EC25}; +var \u{2EC26}; +var \u{2EC27}; +var \u{2EC28}; +var \u{2EC29}; +var \u{2EC2A}; +var \u{2EC2B}; +var \u{2EC2C}; +var \u{2EC2D}; +var \u{2EC2E}; +var \u{2EC2F}; +var \u{2EC30}; +var \u{2EC31}; +var \u{2EC32}; +var \u{2EC33}; +var \u{2EC34}; +var \u{2EC35}; +var \u{2EC36}; +var \u{2EC37}; +var \u{2EC38}; +var \u{2EC39}; +var \u{2EC3A}; +var \u{2EC3B}; +var \u{2EC3C}; +var \u{2EC3D}; +var \u{2EC3E}; +var \u{2EC3F}; +var \u{2EC40}; +var \u{2EC41}; +var \u{2EC42}; +var \u{2EC43}; +var \u{2EC44}; +var \u{2EC45}; +var \u{2EC46}; +var \u{2EC47}; +var \u{2EC48}; +var \u{2EC49}; +var \u{2EC4A}; +var \u{2EC4B}; +var \u{2EC4C}; +var \u{2EC4D}; +var \u{2EC4E}; +var \u{2EC4F}; +var \u{2EC50}; +var \u{2EC51}; +var \u{2EC52}; +var \u{2EC53}; +var \u{2EC54}; +var \u{2EC55}; +var \u{2EC56}; +var \u{2EC57}; +var \u{2EC58}; +var \u{2EC59}; +var \u{2EC5A}; +var \u{2EC5B}; +var \u{2EC5C}; +var \u{2EC5D}; +var \u{2EC5E}; +var \u{2EC5F}; +var \u{2EC60}; +var \u{2EC61}; +var \u{2EC62}; +var \u{2EC63}; +var \u{2EC64}; +var \u{2EC65}; +var \u{2EC66}; +var \u{2EC67}; +var \u{2EC68}; +var \u{2EC69}; +var \u{2EC6A}; +var \u{2EC6B}; +var \u{2EC6C}; +var \u{2EC6D}; +var \u{2EC6E}; +var \u{2EC6F}; +var \u{2EC70}; +var \u{2EC71}; +var \u{2EC72}; +var \u{2EC73}; +var \u{2EC74}; +var \u{2EC75}; +var \u{2EC76}; +var \u{2EC77}; +var \u{2EC78}; +var \u{2EC79}; +var \u{2EC7A}; +var \u{2EC7B}; +var \u{2EC7C}; +var \u{2EC7D}; +var \u{2EC7E}; +var \u{2EC7F}; +var \u{2EC80}; +var \u{2EC81}; +var \u{2EC82}; +var \u{2EC83}; +var \u{2EC84}; +var \u{2EC85}; +var \u{2EC86}; +var \u{2EC87}; +var \u{2EC88}; +var \u{2EC89}; +var \u{2EC8A}; +var \u{2EC8B}; +var \u{2EC8C}; +var \u{2EC8D}; +var \u{2EC8E}; +var \u{2EC8F}; +var \u{2EC90}; +var \u{2EC91}; +var \u{2EC92}; +var \u{2EC93}; +var \u{2EC94}; +var \u{2EC95}; +var \u{2EC96}; +var \u{2EC97}; +var \u{2EC98}; +var \u{2EC99}; +var \u{2EC9A}; +var \u{2EC9B}; +var \u{2EC9C}; +var \u{2EC9D}; +var \u{2EC9E}; +var \u{2EC9F}; +var \u{2ECA0}; +var \u{2ECA1}; +var \u{2ECA2}; +var \u{2ECA3}; +var \u{2ECA4}; +var \u{2ECA5}; +var \u{2ECA6}; +var \u{2ECA7}; +var \u{2ECA8}; +var \u{2ECA9}; +var \u{2ECAA}; +var \u{2ECAB}; +var \u{2ECAC}; +var \u{2ECAD}; +var \u{2ECAE}; +var \u{2ECAF}; +var \u{2ECB0}; +var \u{2ECB1}; +var \u{2ECB2}; +var \u{2ECB3}; +var \u{2ECB4}; +var \u{2ECB5}; +var \u{2ECB6}; +var \u{2ECB7}; +var \u{2ECB8}; +var \u{2ECB9}; +var \u{2ECBA}; +var \u{2ECBB}; +var \u{2ECBC}; +var \u{2ECBD}; +var \u{2ECBE}; +var \u{2ECBF}; +var \u{2ECC0}; +var \u{2ECC1}; +var \u{2ECC2}; +var \u{2ECC3}; +var \u{2ECC4}; +var \u{2ECC5}; +var \u{2ECC6}; +var \u{2ECC7}; +var \u{2ECC8}; +var \u{2ECC9}; +var \u{2ECCA}; +var \u{2ECCB}; +var \u{2ECCC}; +var \u{2ECCD}; +var \u{2ECCE}; +var \u{2ECCF}; +var \u{2ECD0}; +var \u{2ECD1}; +var \u{2ECD2}; +var \u{2ECD3}; +var \u{2ECD4}; +var \u{2ECD5}; +var \u{2ECD6}; +var \u{2ECD7}; +var \u{2ECD8}; +var \u{2ECD9}; +var \u{2ECDA}; +var \u{2ECDB}; +var \u{2ECDC}; +var \u{2ECDD}; +var \u{2ECDE}; +var \u{2ECDF}; +var \u{2ECE0}; +var \u{2ECE1}; +var \u{2ECE2}; +var \u{2ECE3}; +var \u{2ECE4}; +var \u{2ECE5}; +var \u{2ECE6}; +var \u{2ECE7}; +var \u{2ECE8}; +var \u{2ECE9}; +var \u{2ECEA}; +var \u{2ECEB}; +var \u{2ECEC}; +var \u{2ECED}; +var \u{2ECEE}; +var \u{2ECEF}; +var \u{2ECF0}; +var \u{2ECF1}; +var \u{2ECF2}; +var \u{2ECF3}; +var \u{2ECF4}; +var \u{2ECF5}; +var \u{2ECF6}; +var \u{2ECF7}; +var \u{2ECF8}; +var \u{2ECF9}; +var \u{2ECFA}; +var \u{2ECFB}; +var \u{2ECFC}; +var \u{2ECFD}; +var \u{2ECFE}; +var \u{2ECFF}; +var \u{2ED00}; +var \u{2ED01}; +var \u{2ED02}; +var \u{2ED03}; +var \u{2ED04}; +var \u{2ED05}; +var \u{2ED06}; +var \u{2ED07}; +var \u{2ED08}; +var \u{2ED09}; +var \u{2ED0A}; +var \u{2ED0B}; +var \u{2ED0C}; +var \u{2ED0D}; +var \u{2ED0E}; +var \u{2ED0F}; +var \u{2ED10}; +var \u{2ED11}; +var \u{2ED12}; +var \u{2ED13}; +var \u{2ED14}; +var \u{2ED15}; +var \u{2ED16}; +var \u{2ED17}; +var \u{2ED18}; +var \u{2ED19}; +var \u{2ED1A}; +var \u{2ED1B}; +var \u{2ED1C}; +var \u{2ED1D}; +var \u{2ED1E}; +var \u{2ED1F}; +var \u{2ED20}; +var \u{2ED21}; +var \u{2ED22}; +var \u{2ED23}; +var \u{2ED24}; +var \u{2ED25}; +var \u{2ED26}; +var \u{2ED27}; +var \u{2ED28}; +var \u{2ED29}; +var \u{2ED2A}; +var \u{2ED2B}; +var \u{2ED2C}; +var \u{2ED2D}; +var \u{2ED2E}; +var \u{2ED2F}; +var \u{2ED30}; +var \u{2ED31}; +var \u{2ED32}; +var \u{2ED33}; +var \u{2ED34}; +var \u{2ED35}; +var \u{2ED36}; +var \u{2ED37}; +var \u{2ED38}; +var \u{2ED39}; +var \u{2ED3A}; +var \u{2ED3B}; +var \u{2ED3C}; +var \u{2ED3D}; +var \u{2ED3E}; +var \u{2ED3F}; +var \u{2ED40}; +var \u{2ED41}; +var \u{2ED42}; +var \u{2ED43}; +var \u{2ED44}; +var \u{2ED45}; +var \u{2ED46}; +var \u{2ED47}; +var \u{2ED48}; +var \u{2ED49}; +var \u{2ED4A}; +var \u{2ED4B}; +var \u{2ED4C}; +var \u{2ED4D}; +var \u{2ED4E}; +var \u{2ED4F}; +var \u{2ED50}; +var \u{2ED51}; +var \u{2ED52}; +var \u{2ED53}; +var \u{2ED54}; +var \u{2ED55}; +var \u{2ED56}; +var \u{2ED57}; +var \u{2ED58}; +var \u{2ED59}; +var \u{2ED5A}; +var \u{2ED5B}; +var \u{2ED5C}; +var \u{2ED5D}; +var \u{2ED5E}; +var \u{2ED5F}; +var \u{2ED60}; +var \u{2ED61}; +var \u{2ED62}; +var \u{2ED63}; +var \u{2ED64}; +var \u{2ED65}; +var \u{2ED66}; +var \u{2ED67}; +var \u{2ED68}; +var \u{2ED69}; +var \u{2ED6A}; +var \u{2ED6B}; +var \u{2ED6C}; +var \u{2ED6D}; +var \u{2ED6E}; +var \u{2ED6F}; +var \u{2ED70}; +var \u{2ED71}; +var \u{2ED72}; +var \u{2ED73}; +var \u{2ED74}; +var \u{2ED75}; +var \u{2ED76}; +var \u{2ED77}; +var \u{2ED78}; +var \u{2ED79}; +var \u{2ED7A}; +var \u{2ED7B}; +var \u{2ED7C}; +var \u{2ED7D}; +var \u{2ED7E}; +var \u{2ED7F}; +var \u{2ED80}; +var \u{2ED81}; +var \u{2ED82}; +var \u{2ED83}; +var \u{2ED84}; +var \u{2ED85}; +var \u{2ED86}; +var \u{2ED87}; +var \u{2ED88}; +var \u{2ED89}; +var \u{2ED8A}; +var \u{2ED8B}; +var \u{2ED8C}; +var \u{2ED8D}; +var \u{2ED8E}; +var \u{2ED8F}; +var \u{2ED90}; +var \u{2ED91}; +var \u{2ED92}; +var \u{2ED93}; +var \u{2ED94}; +var \u{2ED95}; +var \u{2ED96}; +var \u{2ED97}; +var \u{2ED98}; +var \u{2ED99}; +var \u{2ED9A}; +var \u{2ED9B}; +var \u{2ED9C}; +var \u{2ED9D}; +var \u{2ED9E}; +var \u{2ED9F}; +var \u{2EDA0}; +var \u{2EDA1}; +var \u{2EDA2}; +var \u{2EDA3}; +var \u{2EDA4}; +var \u{2EDA5}; +var \u{2EDA6}; +var \u{2EDA7}; +var \u{2EDA8}; +var \u{2EDA9}; +var \u{2EDAA}; +var \u{2EDAB}; +var \u{2EDAC}; +var \u{2EDAD}; +var \u{2EDAE}; +var \u{2EDAF}; +var \u{2EDB0}; +var \u{2EDB1}; +var \u{2EDB2}; +var \u{2EDB3}; +var \u{2EDB4}; +var \u{2EDB5}; +var \u{2EDB6}; +var \u{2EDB7}; +var \u{2EDB8}; +var \u{2EDB9}; +var \u{2EDBA}; +var \u{2EDBB}; +var \u{2EDBC}; +var \u{2EDBD}; +var \u{2EDBE}; +var \u{2EDBF}; +var \u{2EDC0}; +var \u{2EDC1}; +var \u{2EDC2}; +var \u{2EDC3}; +var \u{2EDC4}; +var \u{2EDC5}; +var \u{2EDC6}; +var \u{2EDC7}; +var \u{2EDC8}; +var \u{2EDC9}; +var \u{2EDCA}; +var \u{2EDCB}; +var \u{2EDCC}; +var \u{2EDCD}; +var \u{2EDCE}; +var \u{2EDCF}; +var \u{2EDD0}; +var \u{2EDD1}; +var \u{2EDD2}; +var \u{2EDD3}; +var \u{2EDD4}; +var \u{2EDD5}; +var \u{2EDD6}; +var \u{2EDD7}; +var \u{2EDD8}; +var \u{2EDD9}; +var \u{2EDDA}; +var \u{2EDDB}; +var \u{2EDDC}; +var \u{2EDDD}; +var \u{2EDDE}; +var \u{2EDDF}; +var \u{2EDE0}; +var \u{2EDE1}; +var \u{2EDE2}; +var \u{2EDE3}; +var \u{2EDE4}; +var \u{2EDE5}; +var \u{2EDE6}; +var \u{2EDE7}; +var \u{2EDE8}; +var \u{2EDE9}; +var \u{2EDEA}; +var \u{2EDEB}; +var \u{2EDEC}; +var \u{2EDED}; +var \u{2EDEE}; +var \u{2EDEF}; +var \u{2EDF0}; +var \u{2EDF1}; +var \u{2EDF2}; +var \u{2EDF3}; +var \u{2EDF4}; +var \u{2EDF5}; +var \u{2EDF6}; +var \u{2EDF7}; +var \u{2EDF8}; +var \u{2EDF9}; +var \u{2EDFA}; +var \u{2EDFB}; +var \u{2EDFC}; +var \u{2EDFD}; +var \u{2EDFE}; +var \u{2EDFF}; +var \u{2EE00}; +var \u{2EE01}; +var \u{2EE02}; +var \u{2EE03}; +var \u{2EE04}; +var \u{2EE05}; +var \u{2EE06}; +var \u{2EE07}; +var \u{2EE08}; +var \u{2EE09}; +var \u{2EE0A}; +var \u{2EE0B}; +var \u{2EE0C}; +var \u{2EE0D}; +var \u{2EE0E}; +var \u{2EE0F}; +var \u{2EE10}; +var \u{2EE11}; +var \u{2EE12}; +var \u{2EE13}; +var \u{2EE14}; +var \u{2EE15}; +var \u{2EE16}; +var \u{2EE17}; +var \u{2EE18}; +var \u{2EE19}; +var \u{2EE1A}; +var \u{2EE1B}; +var \u{2EE1C}; +var \u{2EE1D}; +var \u{2EE1E}; +var \u{2EE1F}; +var \u{2EE20}; +var \u{2EE21}; +var \u{2EE22}; +var \u{2EE23}; +var \u{2EE24}; +var \u{2EE25}; +var \u{2EE26}; +var \u{2EE27}; +var \u{2EE28}; +var \u{2EE29}; +var \u{2EE2A}; +var \u{2EE2B}; +var \u{2EE2C}; +var \u{2EE2D}; +var \u{2EE2E}; +var \u{2EE2F}; +var \u{2EE30}; +var \u{2EE31}; +var \u{2EE32}; +var \u{2EE33}; +var \u{2EE34}; +var \u{2EE35}; +var \u{2EE36}; +var \u{2EE37}; +var \u{2EE38}; +var \u{2EE39}; +var \u{2EE3A}; +var \u{2EE3B}; +var \u{2EE3C}; +var \u{2EE3D}; +var \u{2EE3E}; +var \u{2EE3F}; +var \u{2EE40}; +var \u{2EE41}; +var \u{2EE42}; +var \u{2EE43}; +var \u{2EE44}; +var \u{2EE45}; +var \u{2EE46}; +var \u{2EE47}; +var \u{2EE48}; +var \u{2EE49}; +var \u{2EE4A}; +var \u{2EE4B}; +var \u{2EE4C}; +var \u{2EE4D}; +var \u{2EE4E}; +var \u{2EE4F}; +var \u{2EE50}; +var \u{2EE51}; +var \u{2EE52}; +var \u{2EE53}; +var \u{2EE54}; +var \u{2EE55}; +var \u{2EE56}; +var \u{2EE57}; +var \u{2EE58}; +var \u{2EE59}; +var \u{2EE5A}; +var \u{2EE5B}; +var \u{2EE5C}; +var \u{2EE5D}; diff --git a/test/language/identifiers/start-unicode-15.1.0.js b/test/language/identifiers/start-unicode-15.1.0.js new file mode 100644 index 00000000000..45d7a4510aa --- /dev/null +++ b/test/language/identifiers/start-unicode-15.1.0.js @@ -0,0 +1,635 @@ +// Copyright 2024 Mathias Bynens. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +author: Mathias Bynens +esid: sec-names-and-keywords +description: | + Test that Unicode v15.1.0 ID_Start characters are accepted as + identifier start characters. +info: | + Generated by https://github.com/mathiasbynens/caniunicode +---*/ + +var 𮯰; +var 𮯱; +var 𮯲; +var 𮯳; +var 𮯴; +var 𮯵; +var 𮯶; +var 𮯷; +var 𮯸; +var 𮯹; +var 𮯺; +var 𮯻; +var 𮯼; +var 𮯽; +var 𮯾; +var 𮯿; +var 𮰀; +var 𮰁; +var 𮰂; +var 𮰃; +var 𮰄; +var 𮰅; +var 𮰆; +var 𮰇; +var 𮰈; +var 𮰉; +var 𮰊; +var 𮰋; +var 𮰌; +var 𮰍; +var 𮰎; +var 𮰏; +var 𮰐; +var 𮰑; +var 𮰒; +var 𮰓; +var 𮰔; +var 𮰕; +var 𮰖; +var 𮰗; +var 𮰘; +var 𮰙; +var 𮰚; +var 𮰛; +var 𮰜; +var 𮰝; +var 𮰞; +var 𮰟; +var 𮰠; +var 𮰡; +var 𮰢; +var 𮰣; +var 𮰤; +var 𮰥; +var 𮰦; +var 𮰧; +var 𮰨; +var 𮰩; +var 𮰪; +var 𮰫; +var 𮰬; +var 𮰭; +var 𮰮; +var 𮰯; +var 𮰰; +var 𮰱; +var 𮰲; +var 𮰳; +var 𮰴; +var 𮰵; +var 𮰶; +var 𮰷; +var 𮰸; +var 𮰹; +var 𮰺; +var 𮰻; +var 𮰼; +var 𮰽; +var 𮰾; +var 𮰿; +var 𮱀; +var 𮱁; +var 𮱂; +var 𮱃; +var 𮱄; +var 𮱅; +var 𮱆; +var 𮱇; +var 𮱈; +var 𮱉; +var 𮱊; +var 𮱋; +var 𮱌; +var 𮱍; +var 𮱎; +var 𮱏; +var 𮱐; +var 𮱑; +var 𮱒; +var 𮱓; +var 𮱔; +var 𮱕; +var 𮱖; +var 𮱗; +var 𮱘; +var 𮱙; +var 𮱚; +var 𮱛; +var 𮱜; +var 𮱝; +var 𮱞; +var 𮱟; +var 𮱠; +var 𮱡; +var 𮱢; +var 𮱣; +var 𮱤; +var 𮱥; +var 𮱦; +var 𮱧; +var 𮱨; +var 𮱩; +var 𮱪; +var 𮱫; +var 𮱬; +var 𮱭; +var 𮱮; +var 𮱯; +var 𮱰; +var 𮱱; +var 𮱲; +var 𮱳; +var 𮱴; +var 𮱵; +var 𮱶; +var 𮱷; +var 𮱸; +var 𮱹; +var 𮱺; +var 𮱻; +var 𮱼; +var 𮱽; +var 𮱾; +var 𮱿; +var 𮲀; +var 𮲁; +var 𮲂; +var 𮲃; +var 𮲄; +var 𮲅; +var 𮲆; +var 𮲇; +var 𮲈; +var 𮲉; +var 𮲊; +var 𮲋; +var 𮲌; +var 𮲍; +var 𮲎; +var 𮲏; +var 𮲐; +var 𮲑; +var 𮲒; +var 𮲓; +var 𮲔; +var 𮲕; +var 𮲖; +var 𮲗; +var 𮲘; +var 𮲙; +var 𮲚; +var 𮲛; +var 𮲜; +var 𮲝; +var 𮲞; +var 𮲟; +var 𮲠; +var 𮲡; +var 𮲢; +var 𮲣; +var 𮲤; +var 𮲥; +var 𮲦; +var 𮲧; +var 𮲨; +var 𮲩; +var 𮲪; +var 𮲫; +var 𮲬; +var 𮲭; +var 𮲮; +var 𮲯; +var 𮲰; +var 𮲱; +var 𮲲; +var 𮲳; +var 𮲴; +var 𮲵; +var 𮲶; +var 𮲷; +var 𮲸; +var 𮲹; +var 𮲺; +var 𮲻; +var 𮲼; +var 𮲽; +var 𮲾; +var 𮲿; +var 𮳀; +var 𮳁; +var 𮳂; +var 𮳃; +var 𮳄; +var 𮳅; +var 𮳆; +var 𮳇; +var 𮳈; +var 𮳉; +var 𮳊; +var 𮳋; +var 𮳌; +var 𮳍; +var 𮳎; +var 𮳏; +var 𮳐; +var 𮳑; +var 𮳒; +var 𮳓; +var 𮳔; +var 𮳕; +var 𮳖; +var 𮳗; +var 𮳘; +var 𮳙; +var 𮳚; +var 𮳛; +var 𮳜; +var 𮳝; +var 𮳞; +var 𮳟; +var 𮳠; +var 𮳡; +var 𮳢; +var 𮳣; +var 𮳤; +var 𮳥; +var 𮳦; +var 𮳧; +var 𮳨; +var 𮳩; +var 𮳪; +var 𮳫; +var 𮳬; +var 𮳭; +var 𮳮; +var 𮳯; +var 𮳰; +var 𮳱; +var 𮳲; +var 𮳳; +var 𮳴; +var 𮳵; +var 𮳶; +var 𮳷; +var 𮳸; +var 𮳹; +var 𮳺; +var 𮳻; +var 𮳼; +var 𮳽; +var 𮳾; +var 𮳿; +var 𮴀; +var 𮴁; +var 𮴂; +var 𮴃; +var 𮴄; +var 𮴅; +var 𮴆; +var 𮴇; +var 𮴈; +var 𮴉; +var 𮴊; +var 𮴋; +var 𮴌; +var 𮴍; +var 𮴎; +var 𮴏; +var 𮴐; +var 𮴑; +var 𮴒; +var 𮴓; +var 𮴔; +var 𮴕; +var 𮴖; +var 𮴗; +var 𮴘; +var 𮴙; +var 𮴚; +var 𮴛; +var 𮴜; +var 𮴝; +var 𮴞; +var 𮴟; +var 𮴠; +var 𮴡; +var 𮴢; +var 𮴣; +var 𮴤; +var 𮴥; +var 𮴦; +var 𮴧; +var 𮴨; +var 𮴩; +var 𮴪; +var 𮴫; +var 𮴬; +var 𮴭; +var 𮴮; +var 𮴯; +var 𮴰; +var 𮴱; +var 𮴲; +var 𮴳; +var 𮴴; +var 𮴵; +var 𮴶; +var 𮴷; +var 𮴸; +var 𮴹; +var 𮴺; +var 𮴻; +var 𮴼; +var 𮴽; +var 𮴾; +var 𮴿; +var 𮵀; +var 𮵁; +var 𮵂; +var 𮵃; +var 𮵄; +var 𮵅; +var 𮵆; +var 𮵇; +var 𮵈; +var 𮵉; +var 𮵊; +var 𮵋; +var 𮵌; +var 𮵍; +var 𮵎; +var 𮵏; +var 𮵐; +var 𮵑; +var 𮵒; +var 𮵓; +var 𮵔; +var 𮵕; +var 𮵖; +var 𮵗; +var 𮵘; +var 𮵙; +var 𮵚; +var 𮵛; +var 𮵜; +var 𮵝; +var 𮵞; +var 𮵟; +var 𮵠; +var 𮵡; +var 𮵢; +var 𮵣; +var 𮵤; +var 𮵥; +var 𮵦; +var 𮵧; +var 𮵨; +var 𮵩; +var 𮵪; +var 𮵫; +var 𮵬; +var 𮵭; +var 𮵮; +var 𮵯; +var 𮵰; +var 𮵱; +var 𮵲; +var 𮵳; +var 𮵴; +var 𮵵; +var 𮵶; +var 𮵷; +var 𮵸; +var 𮵹; +var 𮵺; +var 𮵻; +var 𮵼; +var 𮵽; +var 𮵾; +var 𮵿; +var 𮶀; +var 𮶁; +var 𮶂; +var 𮶃; +var 𮶄; +var 𮶅; +var 𮶆; +var 𮶇; +var 𮶈; +var 𮶉; +var 𮶊; +var 𮶋; +var 𮶌; +var 𮶍; +var 𮶎; +var 𮶏; +var 𮶐; +var 𮶑; +var 𮶒; +var 𮶓; +var 𮶔; +var 𮶕; +var 𮶖; +var 𮶗; +var 𮶘; +var 𮶙; +var 𮶚; +var 𮶛; +var 𮶜; +var 𮶝; +var 𮶞; +var 𮶟; +var 𮶠; +var 𮶡; +var 𮶢; +var 𮶣; +var 𮶤; +var 𮶥; +var 𮶦; +var 𮶧; +var 𮶨; +var 𮶩; +var 𮶪; +var 𮶫; +var 𮶬; +var 𮶭; +var 𮶮; +var 𮶯; +var 𮶰; +var 𮶱; +var 𮶲; +var 𮶳; +var 𮶴; +var 𮶵; +var 𮶶; +var 𮶷; +var 𮶸; +var 𮶹; +var 𮶺; +var 𮶻; +var 𮶼; +var 𮶽; +var 𮶾; +var 𮶿; +var 𮷀; +var 𮷁; +var 𮷂; +var 𮷃; +var 𮷄; +var 𮷅; +var 𮷆; +var 𮷇; +var 𮷈; +var 𮷉; +var 𮷊; +var 𮷋; +var 𮷌; +var 𮷍; +var 𮷎; +var 𮷏; +var 𮷐; +var 𮷑; +var 𮷒; +var 𮷓; +var 𮷔; +var 𮷕; +var 𮷖; +var 𮷗; +var 𮷘; +var 𮷙; +var 𮷚; +var 𮷛; +var 𮷜; +var 𮷝; +var 𮷞; +var 𮷟; +var 𮷠; +var 𮷡; +var 𮷢; +var 𮷣; +var 𮷤; +var 𮷥; +var 𮷦; +var 𮷧; +var 𮷨; +var 𮷩; +var 𮷪; +var 𮷫; +var 𮷬; +var 𮷭; +var 𮷮; +var 𮷯; +var 𮷰; +var 𮷱; +var 𮷲; +var 𮷳; +var 𮷴; +var 𮷵; +var 𮷶; +var 𮷷; +var 𮷸; +var 𮷹; +var 𮷺; +var 𮷻; +var 𮷼; +var 𮷽; +var 𮷾; +var 𮷿; +var 𮸀; +var 𮸁; +var 𮸂; +var 𮸃; +var 𮸄; +var 𮸅; +var 𮸆; +var 𮸇; +var 𮸈; +var 𮸉; +var 𮸊; +var 𮸋; +var 𮸌; +var 𮸍; +var 𮸎; +var 𮸏; +var 𮸐; +var 𮸑; +var 𮸒; +var 𮸓; +var 𮸔; +var 𮸕; +var 𮸖; +var 𮸗; +var 𮸘; +var 𮸙; +var 𮸚; +var 𮸛; +var 𮸜; +var 𮸝; +var 𮸞; +var 𮸟; +var 𮸠; +var 𮸡; +var 𮸢; +var 𮸣; +var 𮸤; +var 𮸥; +var 𮸦; +var 𮸧; +var 𮸨; +var 𮸩; +var 𮸪; +var 𮸫; +var 𮸬; +var 𮸭; +var 𮸮; +var 𮸯; +var 𮸰; +var 𮸱; +var 𮸲; +var 𮸳; +var 𮸴; +var 𮸵; +var 𮸶; +var 𮸷; +var 𮸸; +var 𮸹; +var 𮸺; +var 𮸻; +var 𮸼; +var 𮸽; +var 𮸾; +var 𮸿; +var 𮹀; +var 𮹁; +var 𮹂; +var 𮹃; +var 𮹄; +var 𮹅; +var 𮹆; +var 𮹇; +var 𮹈; +var 𮹉; +var 𮹊; +var 𮹋; +var 𮹌; +var 𮹍; +var 𮹎; +var 𮹏; +var 𮹐; +var 𮹑; +var 𮹒; +var 𮹓; +var 𮹔; +var 𮹕; +var 𮹖; +var 𮹗; +var 𮹘; +var 𮹙; +var 𮹚; +var 𮹛; +var 𮹜; +var 𮹝; diff --git a/test/language/identifiers/start-unicode-16.0.0-class-escaped.js b/test/language/identifiers/start-unicode-16.0.0-class-escaped.js new file mode 100644 index 00000000000..8d3b8717a87 --- /dev/null +++ b/test/language/identifiers/start-unicode-16.0.0-class-escaped.js @@ -0,0 +1,4321 @@ +// Copyright 2024 Mathias Bynens. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +author: Mathias Bynens +esid: prod-PrivateIdentifier +description: | + Test that Unicode v16.0.0 ID_Start characters are accepted as + identifier start characters in escaped form, i.e. + - \uXXXX or \u{XXXX} for BMP symbols + - \u{XXXXXX} for astral symbols + in private class fields. +info: | + Generated by https://github.com/mathiasbynens/caniunicode +features: [class, class-fields-private] +---*/ + +class _ { + #\u1C89; + #\u1C8A; + #\uA7CB; + #\uA7CC; + #\uA7CD; + #\uA7DA; + #\uA7DB; + #\uA7DC; + #\u{105C0}; + #\u{105C1}; + #\u{105C2}; + #\u{105C3}; + #\u{105C4}; + #\u{105C5}; + #\u{105C6}; + #\u{105C7}; + #\u{105C8}; + #\u{105C9}; + #\u{105CA}; + #\u{105CB}; + #\u{105CC}; + #\u{105CD}; + #\u{105CE}; + #\u{105CF}; + #\u{105D0}; + #\u{105D1}; + #\u{105D2}; + #\u{105D3}; + #\u{105D4}; + #\u{105D5}; + #\u{105D6}; + #\u{105D7}; + #\u{105D8}; + #\u{105D9}; + #\u{105DA}; + #\u{105DB}; + #\u{105DC}; + #\u{105DD}; + #\u{105DE}; + #\u{105DF}; + #\u{105E0}; + #\u{105E1}; + #\u{105E2}; + #\u{105E3}; + #\u{105E4}; + #\u{105E5}; + #\u{105E6}; + #\u{105E7}; + #\u{105E8}; + #\u{105E9}; + #\u{105EA}; + #\u{105EB}; + #\u{105EC}; + #\u{105ED}; + #\u{105EE}; + #\u{105EF}; + #\u{105F0}; + #\u{105F1}; + #\u{105F2}; + #\u{105F3}; + #\u{10D4A}; + #\u{10D4B}; + #\u{10D4C}; + #\u{10D4D}; + #\u{10D4E}; + #\u{10D4F}; + #\u{10D50}; + #\u{10D51}; + #\u{10D52}; + #\u{10D53}; + #\u{10D54}; + #\u{10D55}; + #\u{10D56}; + #\u{10D57}; + #\u{10D58}; + #\u{10D59}; + #\u{10D5A}; + #\u{10D5B}; + #\u{10D5C}; + #\u{10D5D}; + #\u{10D5E}; + #\u{10D5F}; + #\u{10D60}; + #\u{10D61}; + #\u{10D62}; + #\u{10D63}; + #\u{10D64}; + #\u{10D65}; + #\u{10D6F}; + #\u{10D70}; + #\u{10D71}; + #\u{10D72}; + #\u{10D73}; + #\u{10D74}; + #\u{10D75}; + #\u{10D76}; + #\u{10D77}; + #\u{10D78}; + #\u{10D79}; + #\u{10D7A}; + #\u{10D7B}; + #\u{10D7C}; + #\u{10D7D}; + #\u{10D7E}; + #\u{10D7F}; + #\u{10D80}; + #\u{10D81}; + #\u{10D82}; + #\u{10D83}; + #\u{10D84}; + #\u{10D85}; + #\u{10EC2}; + #\u{10EC3}; + #\u{10EC4}; + #\u{11380}; + #\u{11381}; + #\u{11382}; + #\u{11383}; + #\u{11384}; + #\u{11385}; + #\u{11386}; + #\u{11387}; + #\u{11388}; + #\u{11389}; + #\u{1138B}; + #\u{1138E}; + #\u{11390}; + #\u{11391}; + #\u{11392}; + #\u{11393}; + #\u{11394}; + #\u{11395}; + #\u{11396}; + #\u{11397}; + #\u{11398}; + #\u{11399}; + #\u{1139A}; + #\u{1139B}; + #\u{1139C}; + #\u{1139D}; + #\u{1139E}; + #\u{1139F}; + #\u{113A0}; + #\u{113A1}; + #\u{113A2}; + #\u{113A3}; + #\u{113A4}; + #\u{113A5}; + #\u{113A6}; + #\u{113A7}; + #\u{113A8}; + #\u{113A9}; + #\u{113AA}; + #\u{113AB}; + #\u{113AC}; + #\u{113AD}; + #\u{113AE}; + #\u{113AF}; + #\u{113B0}; + #\u{113B1}; + #\u{113B2}; + #\u{113B3}; + #\u{113B4}; + #\u{113B5}; + #\u{113B7}; + #\u{113D1}; + #\u{113D3}; + #\u{11BC0}; + #\u{11BC1}; + #\u{11BC2}; + #\u{11BC3}; + #\u{11BC4}; + #\u{11BC5}; + #\u{11BC6}; + #\u{11BC7}; + #\u{11BC8}; + #\u{11BC9}; + #\u{11BCA}; + #\u{11BCB}; + #\u{11BCC}; + #\u{11BCD}; + #\u{11BCE}; + #\u{11BCF}; + #\u{11BD0}; + #\u{11BD1}; + #\u{11BD2}; + #\u{11BD3}; + #\u{11BD4}; + #\u{11BD5}; + #\u{11BD6}; + #\u{11BD7}; + #\u{11BD8}; + #\u{11BD9}; + #\u{11BDA}; + #\u{11BDB}; + #\u{11BDC}; + #\u{11BDD}; + #\u{11BDE}; + #\u{11BDF}; + #\u{11BE0}; + #\u{13460}; + #\u{13461}; + #\u{13462}; + #\u{13463}; + #\u{13464}; + #\u{13465}; + #\u{13466}; + #\u{13467}; + #\u{13468}; + #\u{13469}; + #\u{1346A}; + #\u{1346B}; + #\u{1346C}; + #\u{1346D}; + #\u{1346E}; + #\u{1346F}; + #\u{13470}; + #\u{13471}; + #\u{13472}; + #\u{13473}; + #\u{13474}; + #\u{13475}; + #\u{13476}; + #\u{13477}; + #\u{13478}; + #\u{13479}; + #\u{1347A}; + #\u{1347B}; + #\u{1347C}; + #\u{1347D}; + #\u{1347E}; + #\u{1347F}; + #\u{13480}; + #\u{13481}; + #\u{13482}; + #\u{13483}; + #\u{13484}; + #\u{13485}; + #\u{13486}; + #\u{13487}; + #\u{13488}; + #\u{13489}; + #\u{1348A}; + #\u{1348B}; + #\u{1348C}; + #\u{1348D}; + #\u{1348E}; + #\u{1348F}; + #\u{13490}; + #\u{13491}; + #\u{13492}; + #\u{13493}; + #\u{13494}; + #\u{13495}; + #\u{13496}; + #\u{13497}; + #\u{13498}; + #\u{13499}; + #\u{1349A}; + #\u{1349B}; + #\u{1349C}; + #\u{1349D}; + #\u{1349E}; + #\u{1349F}; + #\u{134A0}; + #\u{134A1}; + #\u{134A2}; + #\u{134A3}; + #\u{134A4}; + #\u{134A5}; + #\u{134A6}; + #\u{134A7}; + #\u{134A8}; + #\u{134A9}; + #\u{134AA}; + #\u{134AB}; + #\u{134AC}; + #\u{134AD}; + #\u{134AE}; + #\u{134AF}; + #\u{134B0}; + #\u{134B1}; + #\u{134B2}; + #\u{134B3}; + #\u{134B4}; + #\u{134B5}; + #\u{134B6}; + #\u{134B7}; + #\u{134B8}; + #\u{134B9}; + #\u{134BA}; + #\u{134BB}; + #\u{134BC}; + #\u{134BD}; + #\u{134BE}; + #\u{134BF}; + #\u{134C0}; + #\u{134C1}; + #\u{134C2}; + #\u{134C3}; + #\u{134C4}; + #\u{134C5}; + #\u{134C6}; + #\u{134C7}; + #\u{134C8}; + #\u{134C9}; + #\u{134CA}; + #\u{134CB}; + #\u{134CC}; + #\u{134CD}; + #\u{134CE}; + #\u{134CF}; + #\u{134D0}; + #\u{134D1}; + #\u{134D2}; + #\u{134D3}; + #\u{134D4}; + #\u{134D5}; + #\u{134D6}; + #\u{134D7}; + #\u{134D8}; + #\u{134D9}; + #\u{134DA}; + #\u{134DB}; + #\u{134DC}; + #\u{134DD}; + #\u{134DE}; + #\u{134DF}; + #\u{134E0}; + #\u{134E1}; + #\u{134E2}; + #\u{134E3}; + #\u{134E4}; + #\u{134E5}; + #\u{134E6}; + #\u{134E7}; + #\u{134E8}; + #\u{134E9}; + #\u{134EA}; + #\u{134EB}; + #\u{134EC}; + #\u{134ED}; + #\u{134EE}; + #\u{134EF}; + #\u{134F0}; + #\u{134F1}; + #\u{134F2}; + #\u{134F3}; + #\u{134F4}; + #\u{134F5}; + #\u{134F6}; + #\u{134F7}; + #\u{134F8}; + #\u{134F9}; + #\u{134FA}; + #\u{134FB}; + #\u{134FC}; + #\u{134FD}; + #\u{134FE}; + #\u{134FF}; + #\u{13500}; + #\u{13501}; + #\u{13502}; + #\u{13503}; + #\u{13504}; + #\u{13505}; + #\u{13506}; + #\u{13507}; + #\u{13508}; + #\u{13509}; + #\u{1350A}; + #\u{1350B}; + #\u{1350C}; + #\u{1350D}; + #\u{1350E}; + #\u{1350F}; + #\u{13510}; + #\u{13511}; + #\u{13512}; + #\u{13513}; + #\u{13514}; + #\u{13515}; + #\u{13516}; + #\u{13517}; + #\u{13518}; + #\u{13519}; + #\u{1351A}; + #\u{1351B}; + #\u{1351C}; + #\u{1351D}; + #\u{1351E}; + #\u{1351F}; + #\u{13520}; + #\u{13521}; + #\u{13522}; + #\u{13523}; + #\u{13524}; + #\u{13525}; + #\u{13526}; + #\u{13527}; + #\u{13528}; + #\u{13529}; + #\u{1352A}; + #\u{1352B}; + #\u{1352C}; + #\u{1352D}; + #\u{1352E}; + #\u{1352F}; + #\u{13530}; + #\u{13531}; + #\u{13532}; + #\u{13533}; + #\u{13534}; + #\u{13535}; + #\u{13536}; + #\u{13537}; + #\u{13538}; + #\u{13539}; + #\u{1353A}; + #\u{1353B}; + #\u{1353C}; + #\u{1353D}; + #\u{1353E}; + #\u{1353F}; + #\u{13540}; + #\u{13541}; + #\u{13542}; + #\u{13543}; + #\u{13544}; + #\u{13545}; + #\u{13546}; + #\u{13547}; + #\u{13548}; + #\u{13549}; + #\u{1354A}; + #\u{1354B}; + #\u{1354C}; + #\u{1354D}; + #\u{1354E}; + #\u{1354F}; + #\u{13550}; + #\u{13551}; + #\u{13552}; + #\u{13553}; + #\u{13554}; + #\u{13555}; + #\u{13556}; + #\u{13557}; + #\u{13558}; + #\u{13559}; + #\u{1355A}; + #\u{1355B}; + #\u{1355C}; + #\u{1355D}; + #\u{1355E}; + #\u{1355F}; + #\u{13560}; + #\u{13561}; + #\u{13562}; + #\u{13563}; + #\u{13564}; + #\u{13565}; + #\u{13566}; + #\u{13567}; + #\u{13568}; + #\u{13569}; + #\u{1356A}; + #\u{1356B}; + #\u{1356C}; + #\u{1356D}; + #\u{1356E}; + #\u{1356F}; + #\u{13570}; + #\u{13571}; + #\u{13572}; + #\u{13573}; + #\u{13574}; + #\u{13575}; + #\u{13576}; + #\u{13577}; + #\u{13578}; + #\u{13579}; + #\u{1357A}; + #\u{1357B}; + #\u{1357C}; + #\u{1357D}; + #\u{1357E}; + #\u{1357F}; + #\u{13580}; + #\u{13581}; + #\u{13582}; + #\u{13583}; + #\u{13584}; + #\u{13585}; + #\u{13586}; + #\u{13587}; + #\u{13588}; + #\u{13589}; + #\u{1358A}; + #\u{1358B}; + #\u{1358C}; + #\u{1358D}; + #\u{1358E}; + #\u{1358F}; + #\u{13590}; + #\u{13591}; + #\u{13592}; + #\u{13593}; + #\u{13594}; + #\u{13595}; + #\u{13596}; + #\u{13597}; + #\u{13598}; + #\u{13599}; + #\u{1359A}; + #\u{1359B}; + #\u{1359C}; + #\u{1359D}; + #\u{1359E}; + #\u{1359F}; + #\u{135A0}; + #\u{135A1}; + #\u{135A2}; + #\u{135A3}; + #\u{135A4}; + #\u{135A5}; + #\u{135A6}; + #\u{135A7}; + #\u{135A8}; + #\u{135A9}; + #\u{135AA}; + #\u{135AB}; + #\u{135AC}; + #\u{135AD}; + #\u{135AE}; + #\u{135AF}; + #\u{135B0}; + #\u{135B1}; + #\u{135B2}; + #\u{135B3}; + #\u{135B4}; + #\u{135B5}; + #\u{135B6}; + #\u{135B7}; + #\u{135B8}; + #\u{135B9}; + #\u{135BA}; + #\u{135BB}; + #\u{135BC}; + #\u{135BD}; + #\u{135BE}; + #\u{135BF}; + #\u{135C0}; + #\u{135C1}; + #\u{135C2}; + #\u{135C3}; + #\u{135C4}; + #\u{135C5}; + #\u{135C6}; + #\u{135C7}; + #\u{135C8}; + #\u{135C9}; + #\u{135CA}; + #\u{135CB}; + #\u{135CC}; + #\u{135CD}; + #\u{135CE}; + #\u{135CF}; + #\u{135D0}; + #\u{135D1}; + #\u{135D2}; + #\u{135D3}; + #\u{135D4}; + #\u{135D5}; + #\u{135D6}; + #\u{135D7}; + #\u{135D8}; + #\u{135D9}; + #\u{135DA}; + #\u{135DB}; + #\u{135DC}; + #\u{135DD}; + #\u{135DE}; + #\u{135DF}; + #\u{135E0}; + #\u{135E1}; + #\u{135E2}; + #\u{135E3}; + #\u{135E4}; + #\u{135E5}; + #\u{135E6}; + #\u{135E7}; + #\u{135E8}; + #\u{135E9}; + #\u{135EA}; + #\u{135EB}; + #\u{135EC}; + #\u{135ED}; + #\u{135EE}; + #\u{135EF}; + #\u{135F0}; + #\u{135F1}; + #\u{135F2}; + #\u{135F3}; + #\u{135F4}; + #\u{135F5}; + #\u{135F6}; + #\u{135F7}; + #\u{135F8}; + #\u{135F9}; + #\u{135FA}; + #\u{135FB}; + #\u{135FC}; + #\u{135FD}; + #\u{135FE}; + #\u{135FF}; + #\u{13600}; + #\u{13601}; + #\u{13602}; + #\u{13603}; + #\u{13604}; + #\u{13605}; + #\u{13606}; + #\u{13607}; + #\u{13608}; + #\u{13609}; + #\u{1360A}; + #\u{1360B}; + #\u{1360C}; + #\u{1360D}; + #\u{1360E}; + #\u{1360F}; + #\u{13610}; + #\u{13611}; + #\u{13612}; + #\u{13613}; + #\u{13614}; + #\u{13615}; + #\u{13616}; + #\u{13617}; + #\u{13618}; + #\u{13619}; + #\u{1361A}; + #\u{1361B}; + #\u{1361C}; + #\u{1361D}; + #\u{1361E}; + #\u{1361F}; + #\u{13620}; + #\u{13621}; + #\u{13622}; + #\u{13623}; + #\u{13624}; + #\u{13625}; + #\u{13626}; + #\u{13627}; + #\u{13628}; + #\u{13629}; + #\u{1362A}; + #\u{1362B}; + #\u{1362C}; + #\u{1362D}; + #\u{1362E}; + #\u{1362F}; + #\u{13630}; + #\u{13631}; + #\u{13632}; + #\u{13633}; + #\u{13634}; + #\u{13635}; + #\u{13636}; + #\u{13637}; + #\u{13638}; + #\u{13639}; + #\u{1363A}; + #\u{1363B}; + #\u{1363C}; + #\u{1363D}; + #\u{1363E}; + #\u{1363F}; + #\u{13640}; + #\u{13641}; + #\u{13642}; + #\u{13643}; + #\u{13644}; + #\u{13645}; + #\u{13646}; + #\u{13647}; + #\u{13648}; + #\u{13649}; + #\u{1364A}; + #\u{1364B}; + #\u{1364C}; + #\u{1364D}; + #\u{1364E}; + #\u{1364F}; + #\u{13650}; + #\u{13651}; + #\u{13652}; + #\u{13653}; + #\u{13654}; + #\u{13655}; + #\u{13656}; + #\u{13657}; + #\u{13658}; + #\u{13659}; + #\u{1365A}; + #\u{1365B}; + #\u{1365C}; + #\u{1365D}; + #\u{1365E}; + #\u{1365F}; + #\u{13660}; + #\u{13661}; + #\u{13662}; + #\u{13663}; + #\u{13664}; + #\u{13665}; + #\u{13666}; + #\u{13667}; + #\u{13668}; + #\u{13669}; + #\u{1366A}; + #\u{1366B}; + #\u{1366C}; + #\u{1366D}; + #\u{1366E}; + #\u{1366F}; + #\u{13670}; + #\u{13671}; + #\u{13672}; + #\u{13673}; + #\u{13674}; + #\u{13675}; + #\u{13676}; + #\u{13677}; + #\u{13678}; + #\u{13679}; + #\u{1367A}; + #\u{1367B}; + #\u{1367C}; + #\u{1367D}; + #\u{1367E}; + #\u{1367F}; + #\u{13680}; + #\u{13681}; + #\u{13682}; + #\u{13683}; + #\u{13684}; + #\u{13685}; + #\u{13686}; + #\u{13687}; + #\u{13688}; + #\u{13689}; + #\u{1368A}; + #\u{1368B}; + #\u{1368C}; + #\u{1368D}; + #\u{1368E}; + #\u{1368F}; + #\u{13690}; + #\u{13691}; + #\u{13692}; + #\u{13693}; + #\u{13694}; + #\u{13695}; + #\u{13696}; + #\u{13697}; + #\u{13698}; + #\u{13699}; + #\u{1369A}; + #\u{1369B}; + #\u{1369C}; + #\u{1369D}; + #\u{1369E}; + #\u{1369F}; + #\u{136A0}; + #\u{136A1}; + #\u{136A2}; + #\u{136A3}; + #\u{136A4}; + #\u{136A5}; + #\u{136A6}; + #\u{136A7}; + #\u{136A8}; + #\u{136A9}; + #\u{136AA}; + #\u{136AB}; + #\u{136AC}; + #\u{136AD}; + #\u{136AE}; + #\u{136AF}; + #\u{136B0}; + #\u{136B1}; + #\u{136B2}; + #\u{136B3}; + #\u{136B4}; + #\u{136B5}; + #\u{136B6}; + #\u{136B7}; + #\u{136B8}; + #\u{136B9}; + #\u{136BA}; + #\u{136BB}; + #\u{136BC}; + #\u{136BD}; + #\u{136BE}; + #\u{136BF}; + #\u{136C0}; + #\u{136C1}; + #\u{136C2}; + #\u{136C3}; + #\u{136C4}; + #\u{136C5}; + #\u{136C6}; + #\u{136C7}; + #\u{136C8}; + #\u{136C9}; + #\u{136CA}; + #\u{136CB}; + #\u{136CC}; + #\u{136CD}; + #\u{136CE}; + #\u{136CF}; + #\u{136D0}; + #\u{136D1}; + #\u{136D2}; + #\u{136D3}; + #\u{136D4}; + #\u{136D5}; + #\u{136D6}; + #\u{136D7}; + #\u{136D8}; + #\u{136D9}; + #\u{136DA}; + #\u{136DB}; + #\u{136DC}; + #\u{136DD}; + #\u{136DE}; + #\u{136DF}; + #\u{136E0}; + #\u{136E1}; + #\u{136E2}; + #\u{136E3}; + #\u{136E4}; + #\u{136E5}; + #\u{136E6}; + #\u{136E7}; + #\u{136E8}; + #\u{136E9}; + #\u{136EA}; + #\u{136EB}; + #\u{136EC}; + #\u{136ED}; + #\u{136EE}; + #\u{136EF}; + #\u{136F0}; + #\u{136F1}; + #\u{136F2}; + #\u{136F3}; + #\u{136F4}; + #\u{136F5}; + #\u{136F6}; + #\u{136F7}; + #\u{136F8}; + #\u{136F9}; + #\u{136FA}; + #\u{136FB}; + #\u{136FC}; + #\u{136FD}; + #\u{136FE}; + #\u{136FF}; + #\u{13700}; + #\u{13701}; + #\u{13702}; + #\u{13703}; + #\u{13704}; + #\u{13705}; + #\u{13706}; + #\u{13707}; + #\u{13708}; + #\u{13709}; + #\u{1370A}; + #\u{1370B}; + #\u{1370C}; + #\u{1370D}; + #\u{1370E}; + #\u{1370F}; + #\u{13710}; + #\u{13711}; + #\u{13712}; + #\u{13713}; + #\u{13714}; + #\u{13715}; + #\u{13716}; + #\u{13717}; + #\u{13718}; + #\u{13719}; + #\u{1371A}; + #\u{1371B}; + #\u{1371C}; + #\u{1371D}; + #\u{1371E}; + #\u{1371F}; + #\u{13720}; + #\u{13721}; + #\u{13722}; + #\u{13723}; + #\u{13724}; + #\u{13725}; + #\u{13726}; + #\u{13727}; + #\u{13728}; + #\u{13729}; + #\u{1372A}; + #\u{1372B}; + #\u{1372C}; + #\u{1372D}; + #\u{1372E}; + #\u{1372F}; + #\u{13730}; + #\u{13731}; + #\u{13732}; + #\u{13733}; + #\u{13734}; + #\u{13735}; + #\u{13736}; + #\u{13737}; + #\u{13738}; + #\u{13739}; + #\u{1373A}; + #\u{1373B}; + #\u{1373C}; + #\u{1373D}; + #\u{1373E}; + #\u{1373F}; + #\u{13740}; + #\u{13741}; + #\u{13742}; + #\u{13743}; + #\u{13744}; + #\u{13745}; + #\u{13746}; + #\u{13747}; + #\u{13748}; + #\u{13749}; + #\u{1374A}; + #\u{1374B}; + #\u{1374C}; + #\u{1374D}; + #\u{1374E}; + #\u{1374F}; + #\u{13750}; + #\u{13751}; + #\u{13752}; + #\u{13753}; + #\u{13754}; + #\u{13755}; + #\u{13756}; + #\u{13757}; + #\u{13758}; + #\u{13759}; + #\u{1375A}; + #\u{1375B}; + #\u{1375C}; + #\u{1375D}; + #\u{1375E}; + #\u{1375F}; + #\u{13760}; + #\u{13761}; + #\u{13762}; + #\u{13763}; + #\u{13764}; + #\u{13765}; + #\u{13766}; + #\u{13767}; + #\u{13768}; + #\u{13769}; + #\u{1376A}; + #\u{1376B}; + #\u{1376C}; + #\u{1376D}; + #\u{1376E}; + #\u{1376F}; + #\u{13770}; + #\u{13771}; + #\u{13772}; + #\u{13773}; + #\u{13774}; + #\u{13775}; + #\u{13776}; + #\u{13777}; + #\u{13778}; + #\u{13779}; + #\u{1377A}; + #\u{1377B}; + #\u{1377C}; + #\u{1377D}; + #\u{1377E}; + #\u{1377F}; + #\u{13780}; + #\u{13781}; + #\u{13782}; + #\u{13783}; + #\u{13784}; + #\u{13785}; + #\u{13786}; + #\u{13787}; + #\u{13788}; + #\u{13789}; + #\u{1378A}; + #\u{1378B}; + #\u{1378C}; + #\u{1378D}; + #\u{1378E}; + #\u{1378F}; + #\u{13790}; + #\u{13791}; + #\u{13792}; + #\u{13793}; + #\u{13794}; + #\u{13795}; + #\u{13796}; + #\u{13797}; + #\u{13798}; + #\u{13799}; + #\u{1379A}; + #\u{1379B}; + #\u{1379C}; + #\u{1379D}; + #\u{1379E}; + #\u{1379F}; + #\u{137A0}; + #\u{137A1}; + #\u{137A2}; + #\u{137A3}; + #\u{137A4}; + #\u{137A5}; + #\u{137A6}; + #\u{137A7}; + #\u{137A8}; + #\u{137A9}; + #\u{137AA}; + #\u{137AB}; + #\u{137AC}; + #\u{137AD}; + #\u{137AE}; + #\u{137AF}; + #\u{137B0}; + #\u{137B1}; + #\u{137B2}; + #\u{137B3}; + #\u{137B4}; + #\u{137B5}; + #\u{137B6}; + #\u{137B7}; + #\u{137B8}; + #\u{137B9}; + #\u{137BA}; + #\u{137BB}; + #\u{137BC}; + #\u{137BD}; + #\u{137BE}; + #\u{137BF}; + #\u{137C0}; + #\u{137C1}; + #\u{137C2}; + #\u{137C3}; + #\u{137C4}; + #\u{137C5}; + #\u{137C6}; + #\u{137C7}; + #\u{137C8}; + #\u{137C9}; + #\u{137CA}; + #\u{137CB}; + #\u{137CC}; + #\u{137CD}; + #\u{137CE}; + #\u{137CF}; + #\u{137D0}; + #\u{137D1}; + #\u{137D2}; + #\u{137D3}; + #\u{137D4}; + #\u{137D5}; + #\u{137D6}; + #\u{137D7}; + #\u{137D8}; + #\u{137D9}; + #\u{137DA}; + #\u{137DB}; + #\u{137DC}; + #\u{137DD}; + #\u{137DE}; + #\u{137DF}; + #\u{137E0}; + #\u{137E1}; + #\u{137E2}; + #\u{137E3}; + #\u{137E4}; + #\u{137E5}; + #\u{137E6}; + #\u{137E7}; + #\u{137E8}; + #\u{137E9}; + #\u{137EA}; + #\u{137EB}; + #\u{137EC}; + #\u{137ED}; + #\u{137EE}; + #\u{137EF}; + #\u{137F0}; + #\u{137F1}; + #\u{137F2}; + #\u{137F3}; + #\u{137F4}; + #\u{137F5}; + #\u{137F6}; + #\u{137F7}; + #\u{137F8}; + #\u{137F9}; + #\u{137FA}; + #\u{137FB}; + #\u{137FC}; + #\u{137FD}; + #\u{137FE}; + #\u{137FF}; + #\u{13800}; + #\u{13801}; + #\u{13802}; + #\u{13803}; + #\u{13804}; + #\u{13805}; + #\u{13806}; + #\u{13807}; + #\u{13808}; + #\u{13809}; + #\u{1380A}; + #\u{1380B}; + #\u{1380C}; + #\u{1380D}; + #\u{1380E}; + #\u{1380F}; + #\u{13810}; + #\u{13811}; + #\u{13812}; + #\u{13813}; + #\u{13814}; + #\u{13815}; + #\u{13816}; + #\u{13817}; + #\u{13818}; + #\u{13819}; + #\u{1381A}; + #\u{1381B}; + #\u{1381C}; + #\u{1381D}; + #\u{1381E}; + #\u{1381F}; + #\u{13820}; + #\u{13821}; + #\u{13822}; + #\u{13823}; + #\u{13824}; + #\u{13825}; + #\u{13826}; + #\u{13827}; + #\u{13828}; + #\u{13829}; + #\u{1382A}; + #\u{1382B}; + #\u{1382C}; + #\u{1382D}; + #\u{1382E}; + #\u{1382F}; + #\u{13830}; + #\u{13831}; + #\u{13832}; + #\u{13833}; + #\u{13834}; + #\u{13835}; + #\u{13836}; + #\u{13837}; + #\u{13838}; + #\u{13839}; + #\u{1383A}; + #\u{1383B}; + #\u{1383C}; + #\u{1383D}; + #\u{1383E}; + #\u{1383F}; + #\u{13840}; + #\u{13841}; + #\u{13842}; + #\u{13843}; + #\u{13844}; + #\u{13845}; + #\u{13846}; + #\u{13847}; + #\u{13848}; + #\u{13849}; + #\u{1384A}; + #\u{1384B}; + #\u{1384C}; + #\u{1384D}; + #\u{1384E}; + #\u{1384F}; + #\u{13850}; + #\u{13851}; + #\u{13852}; + #\u{13853}; + #\u{13854}; + #\u{13855}; + #\u{13856}; + #\u{13857}; + #\u{13858}; + #\u{13859}; + #\u{1385A}; + #\u{1385B}; + #\u{1385C}; + #\u{1385D}; + #\u{1385E}; + #\u{1385F}; + #\u{13860}; + #\u{13861}; + #\u{13862}; + #\u{13863}; + #\u{13864}; + #\u{13865}; + #\u{13866}; + #\u{13867}; + #\u{13868}; + #\u{13869}; + #\u{1386A}; + #\u{1386B}; + #\u{1386C}; + #\u{1386D}; + #\u{1386E}; + #\u{1386F}; + #\u{13870}; + #\u{13871}; + #\u{13872}; + #\u{13873}; + #\u{13874}; + #\u{13875}; + #\u{13876}; + #\u{13877}; + #\u{13878}; + #\u{13879}; + #\u{1387A}; + #\u{1387B}; + #\u{1387C}; + #\u{1387D}; + #\u{1387E}; + #\u{1387F}; + #\u{13880}; + #\u{13881}; + #\u{13882}; + #\u{13883}; + #\u{13884}; + #\u{13885}; + #\u{13886}; + #\u{13887}; + #\u{13888}; + #\u{13889}; + #\u{1388A}; + #\u{1388B}; + #\u{1388C}; + #\u{1388D}; + #\u{1388E}; + #\u{1388F}; + #\u{13890}; + #\u{13891}; + #\u{13892}; + #\u{13893}; + #\u{13894}; + #\u{13895}; + #\u{13896}; + #\u{13897}; + #\u{13898}; + #\u{13899}; + #\u{1389A}; + #\u{1389B}; + #\u{1389C}; + #\u{1389D}; + #\u{1389E}; + #\u{1389F}; + #\u{138A0}; + #\u{138A1}; + #\u{138A2}; + #\u{138A3}; + #\u{138A4}; + #\u{138A5}; + #\u{138A6}; + #\u{138A7}; + #\u{138A8}; + #\u{138A9}; + #\u{138AA}; + #\u{138AB}; + #\u{138AC}; + #\u{138AD}; + #\u{138AE}; + #\u{138AF}; + #\u{138B0}; + #\u{138B1}; + #\u{138B2}; + #\u{138B3}; + #\u{138B4}; + #\u{138B5}; + #\u{138B6}; + #\u{138B7}; + #\u{138B8}; + #\u{138B9}; + #\u{138BA}; + #\u{138BB}; + #\u{138BC}; + #\u{138BD}; + #\u{138BE}; + #\u{138BF}; + #\u{138C0}; + #\u{138C1}; + #\u{138C2}; + #\u{138C3}; + #\u{138C4}; + #\u{138C5}; + #\u{138C6}; + #\u{138C7}; + #\u{138C8}; + #\u{138C9}; + #\u{138CA}; + #\u{138CB}; + #\u{138CC}; + #\u{138CD}; + #\u{138CE}; + #\u{138CF}; + #\u{138D0}; + #\u{138D1}; + #\u{138D2}; + #\u{138D3}; + #\u{138D4}; + #\u{138D5}; + #\u{138D6}; + #\u{138D7}; + #\u{138D8}; + #\u{138D9}; + #\u{138DA}; + #\u{138DB}; + #\u{138DC}; + #\u{138DD}; + #\u{138DE}; + #\u{138DF}; + #\u{138E0}; + #\u{138E1}; + #\u{138E2}; + #\u{138E3}; + #\u{138E4}; + #\u{138E5}; + #\u{138E6}; + #\u{138E7}; + #\u{138E8}; + #\u{138E9}; + #\u{138EA}; + #\u{138EB}; + #\u{138EC}; + #\u{138ED}; + #\u{138EE}; + #\u{138EF}; + #\u{138F0}; + #\u{138F1}; + #\u{138F2}; + #\u{138F3}; + #\u{138F4}; + #\u{138F5}; + #\u{138F6}; + #\u{138F7}; + #\u{138F8}; + #\u{138F9}; + #\u{138FA}; + #\u{138FB}; + #\u{138FC}; + #\u{138FD}; + #\u{138FE}; + #\u{138FF}; + #\u{13900}; + #\u{13901}; + #\u{13902}; + #\u{13903}; + #\u{13904}; + #\u{13905}; + #\u{13906}; + #\u{13907}; + #\u{13908}; + #\u{13909}; + #\u{1390A}; + #\u{1390B}; + #\u{1390C}; + #\u{1390D}; + #\u{1390E}; + #\u{1390F}; + #\u{13910}; + #\u{13911}; + #\u{13912}; + #\u{13913}; + #\u{13914}; + #\u{13915}; + #\u{13916}; + #\u{13917}; + #\u{13918}; + #\u{13919}; + #\u{1391A}; + #\u{1391B}; + #\u{1391C}; + #\u{1391D}; + #\u{1391E}; + #\u{1391F}; + #\u{13920}; + #\u{13921}; + #\u{13922}; + #\u{13923}; + #\u{13924}; + #\u{13925}; + #\u{13926}; + #\u{13927}; + #\u{13928}; + #\u{13929}; + #\u{1392A}; + #\u{1392B}; + #\u{1392C}; + #\u{1392D}; + #\u{1392E}; + #\u{1392F}; + #\u{13930}; + #\u{13931}; + #\u{13932}; + #\u{13933}; + #\u{13934}; + #\u{13935}; + #\u{13936}; + #\u{13937}; + #\u{13938}; + #\u{13939}; + #\u{1393A}; + #\u{1393B}; + #\u{1393C}; + #\u{1393D}; + #\u{1393E}; + #\u{1393F}; + #\u{13940}; + #\u{13941}; + #\u{13942}; + #\u{13943}; + #\u{13944}; + #\u{13945}; + #\u{13946}; + #\u{13947}; + #\u{13948}; + #\u{13949}; + #\u{1394A}; + #\u{1394B}; + #\u{1394C}; + #\u{1394D}; + #\u{1394E}; + #\u{1394F}; + #\u{13950}; + #\u{13951}; + #\u{13952}; + #\u{13953}; + #\u{13954}; + #\u{13955}; + #\u{13956}; + #\u{13957}; + #\u{13958}; + #\u{13959}; + #\u{1395A}; + #\u{1395B}; + #\u{1395C}; + #\u{1395D}; + #\u{1395E}; + #\u{1395F}; + #\u{13960}; + #\u{13961}; + #\u{13962}; + #\u{13963}; + #\u{13964}; + #\u{13965}; + #\u{13966}; + #\u{13967}; + #\u{13968}; + #\u{13969}; + #\u{1396A}; + #\u{1396B}; + #\u{1396C}; + #\u{1396D}; + #\u{1396E}; + #\u{1396F}; + #\u{13970}; + #\u{13971}; + #\u{13972}; + #\u{13973}; + #\u{13974}; + #\u{13975}; + #\u{13976}; + #\u{13977}; + #\u{13978}; + #\u{13979}; + #\u{1397A}; + #\u{1397B}; + #\u{1397C}; + #\u{1397D}; + #\u{1397E}; + #\u{1397F}; + #\u{13980}; + #\u{13981}; + #\u{13982}; + #\u{13983}; + #\u{13984}; + #\u{13985}; + #\u{13986}; + #\u{13987}; + #\u{13988}; + #\u{13989}; + #\u{1398A}; + #\u{1398B}; + #\u{1398C}; + #\u{1398D}; + #\u{1398E}; + #\u{1398F}; + #\u{13990}; + #\u{13991}; + #\u{13992}; + #\u{13993}; + #\u{13994}; + #\u{13995}; + #\u{13996}; + #\u{13997}; + #\u{13998}; + #\u{13999}; + #\u{1399A}; + #\u{1399B}; + #\u{1399C}; + #\u{1399D}; + #\u{1399E}; + #\u{1399F}; + #\u{139A0}; + #\u{139A1}; + #\u{139A2}; + #\u{139A3}; + #\u{139A4}; + #\u{139A5}; + #\u{139A6}; + #\u{139A7}; + #\u{139A8}; + #\u{139A9}; + #\u{139AA}; + #\u{139AB}; + #\u{139AC}; + #\u{139AD}; + #\u{139AE}; + #\u{139AF}; + #\u{139B0}; + #\u{139B1}; + #\u{139B2}; + #\u{139B3}; + #\u{139B4}; + #\u{139B5}; + #\u{139B6}; + #\u{139B7}; + #\u{139B8}; + #\u{139B9}; + #\u{139BA}; + #\u{139BB}; + #\u{139BC}; + #\u{139BD}; + #\u{139BE}; + #\u{139BF}; + #\u{139C0}; + #\u{139C1}; + #\u{139C2}; + #\u{139C3}; + #\u{139C4}; + #\u{139C5}; + #\u{139C6}; + #\u{139C7}; + #\u{139C8}; + #\u{139C9}; + #\u{139CA}; + #\u{139CB}; + #\u{139CC}; + #\u{139CD}; + #\u{139CE}; + #\u{139CF}; + #\u{139D0}; + #\u{139D1}; + #\u{139D2}; + #\u{139D3}; + #\u{139D4}; + #\u{139D5}; + #\u{139D6}; + #\u{139D7}; + #\u{139D8}; + #\u{139D9}; + #\u{139DA}; + #\u{139DB}; + #\u{139DC}; + #\u{139DD}; + #\u{139DE}; + #\u{139DF}; + #\u{139E0}; + #\u{139E1}; + #\u{139E2}; + #\u{139E3}; + #\u{139E4}; + #\u{139E5}; + #\u{139E6}; + #\u{139E7}; + #\u{139E8}; + #\u{139E9}; + #\u{139EA}; + #\u{139EB}; + #\u{139EC}; + #\u{139ED}; + #\u{139EE}; + #\u{139EF}; + #\u{139F0}; + #\u{139F1}; + #\u{139F2}; + #\u{139F3}; + #\u{139F4}; + #\u{139F5}; + #\u{139F6}; + #\u{139F7}; + #\u{139F8}; + #\u{139F9}; + #\u{139FA}; + #\u{139FB}; + #\u{139FC}; + #\u{139FD}; + #\u{139FE}; + #\u{139FF}; + #\u{13A00}; + #\u{13A01}; + #\u{13A02}; + #\u{13A03}; + #\u{13A04}; + #\u{13A05}; + #\u{13A06}; + #\u{13A07}; + #\u{13A08}; + #\u{13A09}; + #\u{13A0A}; + #\u{13A0B}; + #\u{13A0C}; + #\u{13A0D}; + #\u{13A0E}; + #\u{13A0F}; + #\u{13A10}; + #\u{13A11}; + #\u{13A12}; + #\u{13A13}; + #\u{13A14}; + #\u{13A15}; + #\u{13A16}; + #\u{13A17}; + #\u{13A18}; + #\u{13A19}; + #\u{13A1A}; + #\u{13A1B}; + #\u{13A1C}; + #\u{13A1D}; + #\u{13A1E}; + #\u{13A1F}; + #\u{13A20}; + #\u{13A21}; + #\u{13A22}; + #\u{13A23}; + #\u{13A24}; + #\u{13A25}; + #\u{13A26}; + #\u{13A27}; + #\u{13A28}; + #\u{13A29}; + #\u{13A2A}; + #\u{13A2B}; + #\u{13A2C}; + #\u{13A2D}; + #\u{13A2E}; + #\u{13A2F}; + #\u{13A30}; + #\u{13A31}; + #\u{13A32}; + #\u{13A33}; + #\u{13A34}; + #\u{13A35}; + #\u{13A36}; + #\u{13A37}; + #\u{13A38}; + #\u{13A39}; + #\u{13A3A}; + #\u{13A3B}; + #\u{13A3C}; + #\u{13A3D}; + #\u{13A3E}; + #\u{13A3F}; + #\u{13A40}; + #\u{13A41}; + #\u{13A42}; + #\u{13A43}; + #\u{13A44}; + #\u{13A45}; + #\u{13A46}; + #\u{13A47}; + #\u{13A48}; + #\u{13A49}; + #\u{13A4A}; + #\u{13A4B}; + #\u{13A4C}; + #\u{13A4D}; + #\u{13A4E}; + #\u{13A4F}; + #\u{13A50}; + #\u{13A51}; + #\u{13A52}; + #\u{13A53}; + #\u{13A54}; + #\u{13A55}; + #\u{13A56}; + #\u{13A57}; + #\u{13A58}; + #\u{13A59}; + #\u{13A5A}; + #\u{13A5B}; + #\u{13A5C}; + #\u{13A5D}; + #\u{13A5E}; + #\u{13A5F}; + #\u{13A60}; + #\u{13A61}; + #\u{13A62}; + #\u{13A63}; + #\u{13A64}; + #\u{13A65}; + #\u{13A66}; + #\u{13A67}; + #\u{13A68}; + #\u{13A69}; + #\u{13A6A}; + #\u{13A6B}; + #\u{13A6C}; + #\u{13A6D}; + #\u{13A6E}; + #\u{13A6F}; + #\u{13A70}; + #\u{13A71}; + #\u{13A72}; + #\u{13A73}; + #\u{13A74}; + #\u{13A75}; + #\u{13A76}; + #\u{13A77}; + #\u{13A78}; + #\u{13A79}; + #\u{13A7A}; + #\u{13A7B}; + #\u{13A7C}; + #\u{13A7D}; + #\u{13A7E}; + #\u{13A7F}; + #\u{13A80}; + #\u{13A81}; + #\u{13A82}; + #\u{13A83}; + #\u{13A84}; + #\u{13A85}; + #\u{13A86}; + #\u{13A87}; + #\u{13A88}; + #\u{13A89}; + #\u{13A8A}; + #\u{13A8B}; + #\u{13A8C}; + #\u{13A8D}; + #\u{13A8E}; + #\u{13A8F}; + #\u{13A90}; + #\u{13A91}; + #\u{13A92}; + #\u{13A93}; + #\u{13A94}; + #\u{13A95}; + #\u{13A96}; + #\u{13A97}; + #\u{13A98}; + #\u{13A99}; + #\u{13A9A}; + #\u{13A9B}; + #\u{13A9C}; + #\u{13A9D}; + #\u{13A9E}; + #\u{13A9F}; + #\u{13AA0}; + #\u{13AA1}; + #\u{13AA2}; + #\u{13AA3}; + #\u{13AA4}; + #\u{13AA5}; + #\u{13AA6}; + #\u{13AA7}; + #\u{13AA8}; + #\u{13AA9}; + #\u{13AAA}; + #\u{13AAB}; + #\u{13AAC}; + #\u{13AAD}; + #\u{13AAE}; + #\u{13AAF}; + #\u{13AB0}; + #\u{13AB1}; + #\u{13AB2}; + #\u{13AB3}; + #\u{13AB4}; + #\u{13AB5}; + #\u{13AB6}; + #\u{13AB7}; + #\u{13AB8}; + #\u{13AB9}; + #\u{13ABA}; + #\u{13ABB}; + #\u{13ABC}; + #\u{13ABD}; + #\u{13ABE}; + #\u{13ABF}; + #\u{13AC0}; + #\u{13AC1}; + #\u{13AC2}; + #\u{13AC3}; + #\u{13AC4}; + #\u{13AC5}; + #\u{13AC6}; + #\u{13AC7}; + #\u{13AC8}; + #\u{13AC9}; + #\u{13ACA}; + #\u{13ACB}; + #\u{13ACC}; + #\u{13ACD}; + #\u{13ACE}; + #\u{13ACF}; + #\u{13AD0}; + #\u{13AD1}; + #\u{13AD2}; + #\u{13AD3}; + #\u{13AD4}; + #\u{13AD5}; + #\u{13AD6}; + #\u{13AD7}; + #\u{13AD8}; + #\u{13AD9}; + #\u{13ADA}; + #\u{13ADB}; + #\u{13ADC}; + #\u{13ADD}; + #\u{13ADE}; + #\u{13ADF}; + #\u{13AE0}; + #\u{13AE1}; + #\u{13AE2}; + #\u{13AE3}; + #\u{13AE4}; + #\u{13AE5}; + #\u{13AE6}; + #\u{13AE7}; + #\u{13AE8}; + #\u{13AE9}; + #\u{13AEA}; + #\u{13AEB}; + #\u{13AEC}; + #\u{13AED}; + #\u{13AEE}; + #\u{13AEF}; + #\u{13AF0}; + #\u{13AF1}; + #\u{13AF2}; + #\u{13AF3}; + #\u{13AF4}; + #\u{13AF5}; + #\u{13AF6}; + #\u{13AF7}; + #\u{13AF8}; + #\u{13AF9}; + #\u{13AFA}; + #\u{13AFB}; + #\u{13AFC}; + #\u{13AFD}; + #\u{13AFE}; + #\u{13AFF}; + #\u{13B00}; + #\u{13B01}; + #\u{13B02}; + #\u{13B03}; + #\u{13B04}; + #\u{13B05}; + #\u{13B06}; + #\u{13B07}; + #\u{13B08}; + #\u{13B09}; + #\u{13B0A}; + #\u{13B0B}; + #\u{13B0C}; + #\u{13B0D}; + #\u{13B0E}; + #\u{13B0F}; + #\u{13B10}; + #\u{13B11}; + #\u{13B12}; + #\u{13B13}; + #\u{13B14}; + #\u{13B15}; + #\u{13B16}; + #\u{13B17}; + #\u{13B18}; + #\u{13B19}; + #\u{13B1A}; + #\u{13B1B}; + #\u{13B1C}; + #\u{13B1D}; + #\u{13B1E}; + #\u{13B1F}; + #\u{13B20}; + #\u{13B21}; + #\u{13B22}; + #\u{13B23}; + #\u{13B24}; + #\u{13B25}; + #\u{13B26}; + #\u{13B27}; + #\u{13B28}; + #\u{13B29}; + #\u{13B2A}; + #\u{13B2B}; + #\u{13B2C}; + #\u{13B2D}; + #\u{13B2E}; + #\u{13B2F}; + #\u{13B30}; + #\u{13B31}; + #\u{13B32}; + #\u{13B33}; + #\u{13B34}; + #\u{13B35}; + #\u{13B36}; + #\u{13B37}; + #\u{13B38}; + #\u{13B39}; + #\u{13B3A}; + #\u{13B3B}; + #\u{13B3C}; + #\u{13B3D}; + #\u{13B3E}; + #\u{13B3F}; + #\u{13B40}; + #\u{13B41}; + #\u{13B42}; + #\u{13B43}; + #\u{13B44}; + #\u{13B45}; + #\u{13B46}; + #\u{13B47}; + #\u{13B48}; + #\u{13B49}; + #\u{13B4A}; + #\u{13B4B}; + #\u{13B4C}; + #\u{13B4D}; + #\u{13B4E}; + #\u{13B4F}; + #\u{13B50}; + #\u{13B51}; + #\u{13B52}; + #\u{13B53}; + #\u{13B54}; + #\u{13B55}; + #\u{13B56}; + #\u{13B57}; + #\u{13B58}; + #\u{13B59}; + #\u{13B5A}; + #\u{13B5B}; + #\u{13B5C}; + #\u{13B5D}; + #\u{13B5E}; + #\u{13B5F}; + #\u{13B60}; + #\u{13B61}; + #\u{13B62}; + #\u{13B63}; + #\u{13B64}; + #\u{13B65}; + #\u{13B66}; + #\u{13B67}; + #\u{13B68}; + #\u{13B69}; + #\u{13B6A}; + #\u{13B6B}; + #\u{13B6C}; + #\u{13B6D}; + #\u{13B6E}; + #\u{13B6F}; + #\u{13B70}; + #\u{13B71}; + #\u{13B72}; + #\u{13B73}; + #\u{13B74}; + #\u{13B75}; + #\u{13B76}; + #\u{13B77}; + #\u{13B78}; + #\u{13B79}; + #\u{13B7A}; + #\u{13B7B}; + #\u{13B7C}; + #\u{13B7D}; + #\u{13B7E}; + #\u{13B7F}; + #\u{13B80}; + #\u{13B81}; + #\u{13B82}; + #\u{13B83}; + #\u{13B84}; + #\u{13B85}; + #\u{13B86}; + #\u{13B87}; + #\u{13B88}; + #\u{13B89}; + #\u{13B8A}; + #\u{13B8B}; + #\u{13B8C}; + #\u{13B8D}; + #\u{13B8E}; + #\u{13B8F}; + #\u{13B90}; + #\u{13B91}; + #\u{13B92}; + #\u{13B93}; + #\u{13B94}; + #\u{13B95}; + #\u{13B96}; + #\u{13B97}; + #\u{13B98}; + #\u{13B99}; + #\u{13B9A}; + #\u{13B9B}; + #\u{13B9C}; + #\u{13B9D}; + #\u{13B9E}; + #\u{13B9F}; + #\u{13BA0}; + #\u{13BA1}; + #\u{13BA2}; + #\u{13BA3}; + #\u{13BA4}; + #\u{13BA5}; + #\u{13BA6}; + #\u{13BA7}; + #\u{13BA8}; + #\u{13BA9}; + #\u{13BAA}; + #\u{13BAB}; + #\u{13BAC}; + #\u{13BAD}; + #\u{13BAE}; + #\u{13BAF}; + #\u{13BB0}; + #\u{13BB1}; + #\u{13BB2}; + #\u{13BB3}; + #\u{13BB4}; + #\u{13BB5}; + #\u{13BB6}; + #\u{13BB7}; + #\u{13BB8}; + #\u{13BB9}; + #\u{13BBA}; + #\u{13BBB}; + #\u{13BBC}; + #\u{13BBD}; + #\u{13BBE}; + #\u{13BBF}; + #\u{13BC0}; + #\u{13BC1}; + #\u{13BC2}; + #\u{13BC3}; + #\u{13BC4}; + #\u{13BC5}; + #\u{13BC6}; + #\u{13BC7}; + #\u{13BC8}; + #\u{13BC9}; + #\u{13BCA}; + #\u{13BCB}; + #\u{13BCC}; + #\u{13BCD}; + #\u{13BCE}; + #\u{13BCF}; + #\u{13BD0}; + #\u{13BD1}; + #\u{13BD2}; + #\u{13BD3}; + #\u{13BD4}; + #\u{13BD5}; + #\u{13BD6}; + #\u{13BD7}; + #\u{13BD8}; + #\u{13BD9}; + #\u{13BDA}; + #\u{13BDB}; + #\u{13BDC}; + #\u{13BDD}; + #\u{13BDE}; + #\u{13BDF}; + #\u{13BE0}; + #\u{13BE1}; + #\u{13BE2}; + #\u{13BE3}; + #\u{13BE4}; + #\u{13BE5}; + #\u{13BE6}; + #\u{13BE7}; + #\u{13BE8}; + #\u{13BE9}; + #\u{13BEA}; + #\u{13BEB}; + #\u{13BEC}; + #\u{13BED}; + #\u{13BEE}; + #\u{13BEF}; + #\u{13BF0}; + #\u{13BF1}; + #\u{13BF2}; + #\u{13BF3}; + #\u{13BF4}; + #\u{13BF5}; + #\u{13BF6}; + #\u{13BF7}; + #\u{13BF8}; + #\u{13BF9}; + #\u{13BFA}; + #\u{13BFB}; + #\u{13BFC}; + #\u{13BFD}; + #\u{13BFE}; + #\u{13BFF}; + #\u{13C00}; + #\u{13C01}; + #\u{13C02}; + #\u{13C03}; + #\u{13C04}; + #\u{13C05}; + #\u{13C06}; + #\u{13C07}; + #\u{13C08}; + #\u{13C09}; + #\u{13C0A}; + #\u{13C0B}; + #\u{13C0C}; + #\u{13C0D}; + #\u{13C0E}; + #\u{13C0F}; + #\u{13C10}; + #\u{13C11}; + #\u{13C12}; + #\u{13C13}; + #\u{13C14}; + #\u{13C15}; + #\u{13C16}; + #\u{13C17}; + #\u{13C18}; + #\u{13C19}; + #\u{13C1A}; + #\u{13C1B}; + #\u{13C1C}; + #\u{13C1D}; + #\u{13C1E}; + #\u{13C1F}; + #\u{13C20}; + #\u{13C21}; + #\u{13C22}; + #\u{13C23}; + #\u{13C24}; + #\u{13C25}; + #\u{13C26}; + #\u{13C27}; + #\u{13C28}; + #\u{13C29}; + #\u{13C2A}; + #\u{13C2B}; + #\u{13C2C}; + #\u{13C2D}; + #\u{13C2E}; + #\u{13C2F}; + #\u{13C30}; + #\u{13C31}; + #\u{13C32}; + #\u{13C33}; + #\u{13C34}; + #\u{13C35}; + #\u{13C36}; + #\u{13C37}; + #\u{13C38}; + #\u{13C39}; + #\u{13C3A}; + #\u{13C3B}; + #\u{13C3C}; + #\u{13C3D}; + #\u{13C3E}; + #\u{13C3F}; + #\u{13C40}; + #\u{13C41}; + #\u{13C42}; + #\u{13C43}; + #\u{13C44}; + #\u{13C45}; + #\u{13C46}; + #\u{13C47}; + #\u{13C48}; + #\u{13C49}; + #\u{13C4A}; + #\u{13C4B}; + #\u{13C4C}; + #\u{13C4D}; + #\u{13C4E}; + #\u{13C4F}; + #\u{13C50}; + #\u{13C51}; + #\u{13C52}; + #\u{13C53}; + #\u{13C54}; + #\u{13C55}; + #\u{13C56}; + #\u{13C57}; + #\u{13C58}; + #\u{13C59}; + #\u{13C5A}; + #\u{13C5B}; + #\u{13C5C}; + #\u{13C5D}; + #\u{13C5E}; + #\u{13C5F}; + #\u{13C60}; + #\u{13C61}; + #\u{13C62}; + #\u{13C63}; + #\u{13C64}; + #\u{13C65}; + #\u{13C66}; + #\u{13C67}; + #\u{13C68}; + #\u{13C69}; + #\u{13C6A}; + #\u{13C6B}; + #\u{13C6C}; + #\u{13C6D}; + #\u{13C6E}; + #\u{13C6F}; + #\u{13C70}; + #\u{13C71}; + #\u{13C72}; + #\u{13C73}; + #\u{13C74}; + #\u{13C75}; + #\u{13C76}; + #\u{13C77}; + #\u{13C78}; + #\u{13C79}; + #\u{13C7A}; + #\u{13C7B}; + #\u{13C7C}; + #\u{13C7D}; + #\u{13C7E}; + #\u{13C7F}; + #\u{13C80}; + #\u{13C81}; + #\u{13C82}; + #\u{13C83}; + #\u{13C84}; + #\u{13C85}; + #\u{13C86}; + #\u{13C87}; + #\u{13C88}; + #\u{13C89}; + #\u{13C8A}; + #\u{13C8B}; + #\u{13C8C}; + #\u{13C8D}; + #\u{13C8E}; + #\u{13C8F}; + #\u{13C90}; + #\u{13C91}; + #\u{13C92}; + #\u{13C93}; + #\u{13C94}; + #\u{13C95}; + #\u{13C96}; + #\u{13C97}; + #\u{13C98}; + #\u{13C99}; + #\u{13C9A}; + #\u{13C9B}; + #\u{13C9C}; + #\u{13C9D}; + #\u{13C9E}; + #\u{13C9F}; + #\u{13CA0}; + #\u{13CA1}; + #\u{13CA2}; + #\u{13CA3}; + #\u{13CA4}; + #\u{13CA5}; + #\u{13CA6}; + #\u{13CA7}; + #\u{13CA8}; + #\u{13CA9}; + #\u{13CAA}; + #\u{13CAB}; + #\u{13CAC}; + #\u{13CAD}; + #\u{13CAE}; + #\u{13CAF}; + #\u{13CB0}; + #\u{13CB1}; + #\u{13CB2}; + #\u{13CB3}; + #\u{13CB4}; + #\u{13CB5}; + #\u{13CB6}; + #\u{13CB7}; + #\u{13CB8}; + #\u{13CB9}; + #\u{13CBA}; + #\u{13CBB}; + #\u{13CBC}; + #\u{13CBD}; + #\u{13CBE}; + #\u{13CBF}; + #\u{13CC0}; + #\u{13CC1}; + #\u{13CC2}; + #\u{13CC3}; + #\u{13CC4}; + #\u{13CC5}; + #\u{13CC6}; + #\u{13CC7}; + #\u{13CC8}; + #\u{13CC9}; + #\u{13CCA}; + #\u{13CCB}; + #\u{13CCC}; + #\u{13CCD}; + #\u{13CCE}; + #\u{13CCF}; + #\u{13CD0}; + #\u{13CD1}; + #\u{13CD2}; + #\u{13CD3}; + #\u{13CD4}; + #\u{13CD5}; + #\u{13CD6}; + #\u{13CD7}; + #\u{13CD8}; + #\u{13CD9}; + #\u{13CDA}; + #\u{13CDB}; + #\u{13CDC}; + #\u{13CDD}; + #\u{13CDE}; + #\u{13CDF}; + #\u{13CE0}; + #\u{13CE1}; + #\u{13CE2}; + #\u{13CE3}; + #\u{13CE4}; + #\u{13CE5}; + #\u{13CE6}; + #\u{13CE7}; + #\u{13CE8}; + #\u{13CE9}; + #\u{13CEA}; + #\u{13CEB}; + #\u{13CEC}; + #\u{13CED}; + #\u{13CEE}; + #\u{13CEF}; + #\u{13CF0}; + #\u{13CF1}; + #\u{13CF2}; + #\u{13CF3}; + #\u{13CF4}; + #\u{13CF5}; + #\u{13CF6}; + #\u{13CF7}; + #\u{13CF8}; + #\u{13CF9}; + #\u{13CFA}; + #\u{13CFB}; + #\u{13CFC}; + #\u{13CFD}; + #\u{13CFE}; + #\u{13CFF}; + #\u{13D00}; + #\u{13D01}; + #\u{13D02}; + #\u{13D03}; + #\u{13D04}; + #\u{13D05}; + #\u{13D06}; + #\u{13D07}; + #\u{13D08}; + #\u{13D09}; + #\u{13D0A}; + #\u{13D0B}; + #\u{13D0C}; + #\u{13D0D}; + #\u{13D0E}; + #\u{13D0F}; + #\u{13D10}; + #\u{13D11}; + #\u{13D12}; + #\u{13D13}; + #\u{13D14}; + #\u{13D15}; + #\u{13D16}; + #\u{13D17}; + #\u{13D18}; + #\u{13D19}; + #\u{13D1A}; + #\u{13D1B}; + #\u{13D1C}; + #\u{13D1D}; + #\u{13D1E}; + #\u{13D1F}; + #\u{13D20}; + #\u{13D21}; + #\u{13D22}; + #\u{13D23}; + #\u{13D24}; + #\u{13D25}; + #\u{13D26}; + #\u{13D27}; + #\u{13D28}; + #\u{13D29}; + #\u{13D2A}; + #\u{13D2B}; + #\u{13D2C}; + #\u{13D2D}; + #\u{13D2E}; + #\u{13D2F}; + #\u{13D30}; + #\u{13D31}; + #\u{13D32}; + #\u{13D33}; + #\u{13D34}; + #\u{13D35}; + #\u{13D36}; + #\u{13D37}; + #\u{13D38}; + #\u{13D39}; + #\u{13D3A}; + #\u{13D3B}; + #\u{13D3C}; + #\u{13D3D}; + #\u{13D3E}; + #\u{13D3F}; + #\u{13D40}; + #\u{13D41}; + #\u{13D42}; + #\u{13D43}; + #\u{13D44}; + #\u{13D45}; + #\u{13D46}; + #\u{13D47}; + #\u{13D48}; + #\u{13D49}; + #\u{13D4A}; + #\u{13D4B}; + #\u{13D4C}; + #\u{13D4D}; + #\u{13D4E}; + #\u{13D4F}; + #\u{13D50}; + #\u{13D51}; + #\u{13D52}; + #\u{13D53}; + #\u{13D54}; + #\u{13D55}; + #\u{13D56}; + #\u{13D57}; + #\u{13D58}; + #\u{13D59}; + #\u{13D5A}; + #\u{13D5B}; + #\u{13D5C}; + #\u{13D5D}; + #\u{13D5E}; + #\u{13D5F}; + #\u{13D60}; + #\u{13D61}; + #\u{13D62}; + #\u{13D63}; + #\u{13D64}; + #\u{13D65}; + #\u{13D66}; + #\u{13D67}; + #\u{13D68}; + #\u{13D69}; + #\u{13D6A}; + #\u{13D6B}; + #\u{13D6C}; + #\u{13D6D}; + #\u{13D6E}; + #\u{13D6F}; + #\u{13D70}; + #\u{13D71}; + #\u{13D72}; + #\u{13D73}; + #\u{13D74}; + #\u{13D75}; + #\u{13D76}; + #\u{13D77}; + #\u{13D78}; + #\u{13D79}; + #\u{13D7A}; + #\u{13D7B}; + #\u{13D7C}; + #\u{13D7D}; + #\u{13D7E}; + #\u{13D7F}; + #\u{13D80}; + #\u{13D81}; + #\u{13D82}; + #\u{13D83}; + #\u{13D84}; + #\u{13D85}; + #\u{13D86}; + #\u{13D87}; + #\u{13D88}; + #\u{13D89}; + #\u{13D8A}; + #\u{13D8B}; + #\u{13D8C}; + #\u{13D8D}; + #\u{13D8E}; + #\u{13D8F}; + #\u{13D90}; + #\u{13D91}; + #\u{13D92}; + #\u{13D93}; + #\u{13D94}; + #\u{13D95}; + #\u{13D96}; + #\u{13D97}; + #\u{13D98}; + #\u{13D99}; + #\u{13D9A}; + #\u{13D9B}; + #\u{13D9C}; + #\u{13D9D}; + #\u{13D9E}; + #\u{13D9F}; + #\u{13DA0}; + #\u{13DA1}; + #\u{13DA2}; + #\u{13DA3}; + #\u{13DA4}; + #\u{13DA5}; + #\u{13DA6}; + #\u{13DA7}; + #\u{13DA8}; + #\u{13DA9}; + #\u{13DAA}; + #\u{13DAB}; + #\u{13DAC}; + #\u{13DAD}; + #\u{13DAE}; + #\u{13DAF}; + #\u{13DB0}; + #\u{13DB1}; + #\u{13DB2}; + #\u{13DB3}; + #\u{13DB4}; + #\u{13DB5}; + #\u{13DB6}; + #\u{13DB7}; + #\u{13DB8}; + #\u{13DB9}; + #\u{13DBA}; + #\u{13DBB}; + #\u{13DBC}; + #\u{13DBD}; + #\u{13DBE}; + #\u{13DBF}; + #\u{13DC0}; + #\u{13DC1}; + #\u{13DC2}; + #\u{13DC3}; + #\u{13DC4}; + #\u{13DC5}; + #\u{13DC6}; + #\u{13DC7}; + #\u{13DC8}; + #\u{13DC9}; + #\u{13DCA}; + #\u{13DCB}; + #\u{13DCC}; + #\u{13DCD}; + #\u{13DCE}; + #\u{13DCF}; + #\u{13DD0}; + #\u{13DD1}; + #\u{13DD2}; + #\u{13DD3}; + #\u{13DD4}; + #\u{13DD5}; + #\u{13DD6}; + #\u{13DD7}; + #\u{13DD8}; + #\u{13DD9}; + #\u{13DDA}; + #\u{13DDB}; + #\u{13DDC}; + #\u{13DDD}; + #\u{13DDE}; + #\u{13DDF}; + #\u{13DE0}; + #\u{13DE1}; + #\u{13DE2}; + #\u{13DE3}; + #\u{13DE4}; + #\u{13DE5}; + #\u{13DE6}; + #\u{13DE7}; + #\u{13DE8}; + #\u{13DE9}; + #\u{13DEA}; + #\u{13DEB}; + #\u{13DEC}; + #\u{13DED}; + #\u{13DEE}; + #\u{13DEF}; + #\u{13DF0}; + #\u{13DF1}; + #\u{13DF2}; + #\u{13DF3}; + #\u{13DF4}; + #\u{13DF5}; + #\u{13DF6}; + #\u{13DF7}; + #\u{13DF8}; + #\u{13DF9}; + #\u{13DFA}; + #\u{13DFB}; + #\u{13DFC}; + #\u{13DFD}; + #\u{13DFE}; + #\u{13DFF}; + #\u{13E00}; + #\u{13E01}; + #\u{13E02}; + #\u{13E03}; + #\u{13E04}; + #\u{13E05}; + #\u{13E06}; + #\u{13E07}; + #\u{13E08}; + #\u{13E09}; + #\u{13E0A}; + #\u{13E0B}; + #\u{13E0C}; + #\u{13E0D}; + #\u{13E0E}; + #\u{13E0F}; + #\u{13E10}; + #\u{13E11}; + #\u{13E12}; + #\u{13E13}; + #\u{13E14}; + #\u{13E15}; + #\u{13E16}; + #\u{13E17}; + #\u{13E18}; + #\u{13E19}; + #\u{13E1A}; + #\u{13E1B}; + #\u{13E1C}; + #\u{13E1D}; + #\u{13E1E}; + #\u{13E1F}; + #\u{13E20}; + #\u{13E21}; + #\u{13E22}; + #\u{13E23}; + #\u{13E24}; + #\u{13E25}; + #\u{13E26}; + #\u{13E27}; + #\u{13E28}; + #\u{13E29}; + #\u{13E2A}; + #\u{13E2B}; + #\u{13E2C}; + #\u{13E2D}; + #\u{13E2E}; + #\u{13E2F}; + #\u{13E30}; + #\u{13E31}; + #\u{13E32}; + #\u{13E33}; + #\u{13E34}; + #\u{13E35}; + #\u{13E36}; + #\u{13E37}; + #\u{13E38}; + #\u{13E39}; + #\u{13E3A}; + #\u{13E3B}; + #\u{13E3C}; + #\u{13E3D}; + #\u{13E3E}; + #\u{13E3F}; + #\u{13E40}; + #\u{13E41}; + #\u{13E42}; + #\u{13E43}; + #\u{13E44}; + #\u{13E45}; + #\u{13E46}; + #\u{13E47}; + #\u{13E48}; + #\u{13E49}; + #\u{13E4A}; + #\u{13E4B}; + #\u{13E4C}; + #\u{13E4D}; + #\u{13E4E}; + #\u{13E4F}; + #\u{13E50}; + #\u{13E51}; + #\u{13E52}; + #\u{13E53}; + #\u{13E54}; + #\u{13E55}; + #\u{13E56}; + #\u{13E57}; + #\u{13E58}; + #\u{13E59}; + #\u{13E5A}; + #\u{13E5B}; + #\u{13E5C}; + #\u{13E5D}; + #\u{13E5E}; + #\u{13E5F}; + #\u{13E60}; + #\u{13E61}; + #\u{13E62}; + #\u{13E63}; + #\u{13E64}; + #\u{13E65}; + #\u{13E66}; + #\u{13E67}; + #\u{13E68}; + #\u{13E69}; + #\u{13E6A}; + #\u{13E6B}; + #\u{13E6C}; + #\u{13E6D}; + #\u{13E6E}; + #\u{13E6F}; + #\u{13E70}; + #\u{13E71}; + #\u{13E72}; + #\u{13E73}; + #\u{13E74}; + #\u{13E75}; + #\u{13E76}; + #\u{13E77}; + #\u{13E78}; + #\u{13E79}; + #\u{13E7A}; + #\u{13E7B}; + #\u{13E7C}; + #\u{13E7D}; + #\u{13E7E}; + #\u{13E7F}; + #\u{13E80}; + #\u{13E81}; + #\u{13E82}; + #\u{13E83}; + #\u{13E84}; + #\u{13E85}; + #\u{13E86}; + #\u{13E87}; + #\u{13E88}; + #\u{13E89}; + #\u{13E8A}; + #\u{13E8B}; + #\u{13E8C}; + #\u{13E8D}; + #\u{13E8E}; + #\u{13E8F}; + #\u{13E90}; + #\u{13E91}; + #\u{13E92}; + #\u{13E93}; + #\u{13E94}; + #\u{13E95}; + #\u{13E96}; + #\u{13E97}; + #\u{13E98}; + #\u{13E99}; + #\u{13E9A}; + #\u{13E9B}; + #\u{13E9C}; + #\u{13E9D}; + #\u{13E9E}; + #\u{13E9F}; + #\u{13EA0}; + #\u{13EA1}; + #\u{13EA2}; + #\u{13EA3}; + #\u{13EA4}; + #\u{13EA5}; + #\u{13EA6}; + #\u{13EA7}; + #\u{13EA8}; + #\u{13EA9}; + #\u{13EAA}; + #\u{13EAB}; + #\u{13EAC}; + #\u{13EAD}; + #\u{13EAE}; + #\u{13EAF}; + #\u{13EB0}; + #\u{13EB1}; + #\u{13EB2}; + #\u{13EB3}; + #\u{13EB4}; + #\u{13EB5}; + #\u{13EB6}; + #\u{13EB7}; + #\u{13EB8}; + #\u{13EB9}; + #\u{13EBA}; + #\u{13EBB}; + #\u{13EBC}; + #\u{13EBD}; + #\u{13EBE}; + #\u{13EBF}; + #\u{13EC0}; + #\u{13EC1}; + #\u{13EC2}; + #\u{13EC3}; + #\u{13EC4}; + #\u{13EC5}; + #\u{13EC6}; + #\u{13EC7}; + #\u{13EC8}; + #\u{13EC9}; + #\u{13ECA}; + #\u{13ECB}; + #\u{13ECC}; + #\u{13ECD}; + #\u{13ECE}; + #\u{13ECF}; + #\u{13ED0}; + #\u{13ED1}; + #\u{13ED2}; + #\u{13ED3}; + #\u{13ED4}; + #\u{13ED5}; + #\u{13ED6}; + #\u{13ED7}; + #\u{13ED8}; + #\u{13ED9}; + #\u{13EDA}; + #\u{13EDB}; + #\u{13EDC}; + #\u{13EDD}; + #\u{13EDE}; + #\u{13EDF}; + #\u{13EE0}; + #\u{13EE1}; + #\u{13EE2}; + #\u{13EE3}; + #\u{13EE4}; + #\u{13EE5}; + #\u{13EE6}; + #\u{13EE7}; + #\u{13EE8}; + #\u{13EE9}; + #\u{13EEA}; + #\u{13EEB}; + #\u{13EEC}; + #\u{13EED}; + #\u{13EEE}; + #\u{13EEF}; + #\u{13EF0}; + #\u{13EF1}; + #\u{13EF2}; + #\u{13EF3}; + #\u{13EF4}; + #\u{13EF5}; + #\u{13EF6}; + #\u{13EF7}; + #\u{13EF8}; + #\u{13EF9}; + #\u{13EFA}; + #\u{13EFB}; + #\u{13EFC}; + #\u{13EFD}; + #\u{13EFE}; + #\u{13EFF}; + #\u{13F00}; + #\u{13F01}; + #\u{13F02}; + #\u{13F03}; + #\u{13F04}; + #\u{13F05}; + #\u{13F06}; + #\u{13F07}; + #\u{13F08}; + #\u{13F09}; + #\u{13F0A}; + #\u{13F0B}; + #\u{13F0C}; + #\u{13F0D}; + #\u{13F0E}; + #\u{13F0F}; + #\u{13F10}; + #\u{13F11}; + #\u{13F12}; + #\u{13F13}; + #\u{13F14}; + #\u{13F15}; + #\u{13F16}; + #\u{13F17}; + #\u{13F18}; + #\u{13F19}; + #\u{13F1A}; + #\u{13F1B}; + #\u{13F1C}; + #\u{13F1D}; + #\u{13F1E}; + #\u{13F1F}; + #\u{13F20}; + #\u{13F21}; + #\u{13F22}; + #\u{13F23}; + #\u{13F24}; + #\u{13F25}; + #\u{13F26}; + #\u{13F27}; + #\u{13F28}; + #\u{13F29}; + #\u{13F2A}; + #\u{13F2B}; + #\u{13F2C}; + #\u{13F2D}; + #\u{13F2E}; + #\u{13F2F}; + #\u{13F30}; + #\u{13F31}; + #\u{13F32}; + #\u{13F33}; + #\u{13F34}; + #\u{13F35}; + #\u{13F36}; + #\u{13F37}; + #\u{13F38}; + #\u{13F39}; + #\u{13F3A}; + #\u{13F3B}; + #\u{13F3C}; + #\u{13F3D}; + #\u{13F3E}; + #\u{13F3F}; + #\u{13F40}; + #\u{13F41}; + #\u{13F42}; + #\u{13F43}; + #\u{13F44}; + #\u{13F45}; + #\u{13F46}; + #\u{13F47}; + #\u{13F48}; + #\u{13F49}; + #\u{13F4A}; + #\u{13F4B}; + #\u{13F4C}; + #\u{13F4D}; + #\u{13F4E}; + #\u{13F4F}; + #\u{13F50}; + #\u{13F51}; + #\u{13F52}; + #\u{13F53}; + #\u{13F54}; + #\u{13F55}; + #\u{13F56}; + #\u{13F57}; + #\u{13F58}; + #\u{13F59}; + #\u{13F5A}; + #\u{13F5B}; + #\u{13F5C}; + #\u{13F5D}; + #\u{13F5E}; + #\u{13F5F}; + #\u{13F60}; + #\u{13F61}; + #\u{13F62}; + #\u{13F63}; + #\u{13F64}; + #\u{13F65}; + #\u{13F66}; + #\u{13F67}; + #\u{13F68}; + #\u{13F69}; + #\u{13F6A}; + #\u{13F6B}; + #\u{13F6C}; + #\u{13F6D}; + #\u{13F6E}; + #\u{13F6F}; + #\u{13F70}; + #\u{13F71}; + #\u{13F72}; + #\u{13F73}; + #\u{13F74}; + #\u{13F75}; + #\u{13F76}; + #\u{13F77}; + #\u{13F78}; + #\u{13F79}; + #\u{13F7A}; + #\u{13F7B}; + #\u{13F7C}; + #\u{13F7D}; + #\u{13F7E}; + #\u{13F7F}; + #\u{13F80}; + #\u{13F81}; + #\u{13F82}; + #\u{13F83}; + #\u{13F84}; + #\u{13F85}; + #\u{13F86}; + #\u{13F87}; + #\u{13F88}; + #\u{13F89}; + #\u{13F8A}; + #\u{13F8B}; + #\u{13F8C}; + #\u{13F8D}; + #\u{13F8E}; + #\u{13F8F}; + #\u{13F90}; + #\u{13F91}; + #\u{13F92}; + #\u{13F93}; + #\u{13F94}; + #\u{13F95}; + #\u{13F96}; + #\u{13F97}; + #\u{13F98}; + #\u{13F99}; + #\u{13F9A}; + #\u{13F9B}; + #\u{13F9C}; + #\u{13F9D}; + #\u{13F9E}; + #\u{13F9F}; + #\u{13FA0}; + #\u{13FA1}; + #\u{13FA2}; + #\u{13FA3}; + #\u{13FA4}; + #\u{13FA5}; + #\u{13FA6}; + #\u{13FA7}; + #\u{13FA8}; + #\u{13FA9}; + #\u{13FAA}; + #\u{13FAB}; + #\u{13FAC}; + #\u{13FAD}; + #\u{13FAE}; + #\u{13FAF}; + #\u{13FB0}; + #\u{13FB1}; + #\u{13FB2}; + #\u{13FB3}; + #\u{13FB4}; + #\u{13FB5}; + #\u{13FB6}; + #\u{13FB7}; + #\u{13FB8}; + #\u{13FB9}; + #\u{13FBA}; + #\u{13FBB}; + #\u{13FBC}; + #\u{13FBD}; + #\u{13FBE}; + #\u{13FBF}; + #\u{13FC0}; + #\u{13FC1}; + #\u{13FC2}; + #\u{13FC3}; + #\u{13FC4}; + #\u{13FC5}; + #\u{13FC6}; + #\u{13FC7}; + #\u{13FC8}; + #\u{13FC9}; + #\u{13FCA}; + #\u{13FCB}; + #\u{13FCC}; + #\u{13FCD}; + #\u{13FCE}; + #\u{13FCF}; + #\u{13FD0}; + #\u{13FD1}; + #\u{13FD2}; + #\u{13FD3}; + #\u{13FD4}; + #\u{13FD5}; + #\u{13FD6}; + #\u{13FD7}; + #\u{13FD8}; + #\u{13FD9}; + #\u{13FDA}; + #\u{13FDB}; + #\u{13FDC}; + #\u{13FDD}; + #\u{13FDE}; + #\u{13FDF}; + #\u{13FE0}; + #\u{13FE1}; + #\u{13FE2}; + #\u{13FE3}; + #\u{13FE4}; + #\u{13FE5}; + #\u{13FE6}; + #\u{13FE7}; + #\u{13FE8}; + #\u{13FE9}; + #\u{13FEA}; + #\u{13FEB}; + #\u{13FEC}; + #\u{13FED}; + #\u{13FEE}; + #\u{13FEF}; + #\u{13FF0}; + #\u{13FF1}; + #\u{13FF2}; + #\u{13FF3}; + #\u{13FF4}; + #\u{13FF5}; + #\u{13FF6}; + #\u{13FF7}; + #\u{13FF8}; + #\u{13FF9}; + #\u{13FFA}; + #\u{13FFB}; + #\u{13FFC}; + #\u{13FFD}; + #\u{13FFE}; + #\u{13FFF}; + #\u{14000}; + #\u{14001}; + #\u{14002}; + #\u{14003}; + #\u{14004}; + #\u{14005}; + #\u{14006}; + #\u{14007}; + #\u{14008}; + #\u{14009}; + #\u{1400A}; + #\u{1400B}; + #\u{1400C}; + #\u{1400D}; + #\u{1400E}; + #\u{1400F}; + #\u{14010}; + #\u{14011}; + #\u{14012}; + #\u{14013}; + #\u{14014}; + #\u{14015}; + #\u{14016}; + #\u{14017}; + #\u{14018}; + #\u{14019}; + #\u{1401A}; + #\u{1401B}; + #\u{1401C}; + #\u{1401D}; + #\u{1401E}; + #\u{1401F}; + #\u{14020}; + #\u{14021}; + #\u{14022}; + #\u{14023}; + #\u{14024}; + #\u{14025}; + #\u{14026}; + #\u{14027}; + #\u{14028}; + #\u{14029}; + #\u{1402A}; + #\u{1402B}; + #\u{1402C}; + #\u{1402D}; + #\u{1402E}; + #\u{1402F}; + #\u{14030}; + #\u{14031}; + #\u{14032}; + #\u{14033}; + #\u{14034}; + #\u{14035}; + #\u{14036}; + #\u{14037}; + #\u{14038}; + #\u{14039}; + #\u{1403A}; + #\u{1403B}; + #\u{1403C}; + #\u{1403D}; + #\u{1403E}; + #\u{1403F}; + #\u{14040}; + #\u{14041}; + #\u{14042}; + #\u{14043}; + #\u{14044}; + #\u{14045}; + #\u{14046}; + #\u{14047}; + #\u{14048}; + #\u{14049}; + #\u{1404A}; + #\u{1404B}; + #\u{1404C}; + #\u{1404D}; + #\u{1404E}; + #\u{1404F}; + #\u{14050}; + #\u{14051}; + #\u{14052}; + #\u{14053}; + #\u{14054}; + #\u{14055}; + #\u{14056}; + #\u{14057}; + #\u{14058}; + #\u{14059}; + #\u{1405A}; + #\u{1405B}; + #\u{1405C}; + #\u{1405D}; + #\u{1405E}; + #\u{1405F}; + #\u{14060}; + #\u{14061}; + #\u{14062}; + #\u{14063}; + #\u{14064}; + #\u{14065}; + #\u{14066}; + #\u{14067}; + #\u{14068}; + #\u{14069}; + #\u{1406A}; + #\u{1406B}; + #\u{1406C}; + #\u{1406D}; + #\u{1406E}; + #\u{1406F}; + #\u{14070}; + #\u{14071}; + #\u{14072}; + #\u{14073}; + #\u{14074}; + #\u{14075}; + #\u{14076}; + #\u{14077}; + #\u{14078}; + #\u{14079}; + #\u{1407A}; + #\u{1407B}; + #\u{1407C}; + #\u{1407D}; + #\u{1407E}; + #\u{1407F}; + #\u{14080}; + #\u{14081}; + #\u{14082}; + #\u{14083}; + #\u{14084}; + #\u{14085}; + #\u{14086}; + #\u{14087}; + #\u{14088}; + #\u{14089}; + #\u{1408A}; + #\u{1408B}; + #\u{1408C}; + #\u{1408D}; + #\u{1408E}; + #\u{1408F}; + #\u{14090}; + #\u{14091}; + #\u{14092}; + #\u{14093}; + #\u{14094}; + #\u{14095}; + #\u{14096}; + #\u{14097}; + #\u{14098}; + #\u{14099}; + #\u{1409A}; + #\u{1409B}; + #\u{1409C}; + #\u{1409D}; + #\u{1409E}; + #\u{1409F}; + #\u{140A0}; + #\u{140A1}; + #\u{140A2}; + #\u{140A3}; + #\u{140A4}; + #\u{140A5}; + #\u{140A6}; + #\u{140A7}; + #\u{140A8}; + #\u{140A9}; + #\u{140AA}; + #\u{140AB}; + #\u{140AC}; + #\u{140AD}; + #\u{140AE}; + #\u{140AF}; + #\u{140B0}; + #\u{140B1}; + #\u{140B2}; + #\u{140B3}; + #\u{140B4}; + #\u{140B5}; + #\u{140B6}; + #\u{140B7}; + #\u{140B8}; + #\u{140B9}; + #\u{140BA}; + #\u{140BB}; + #\u{140BC}; + #\u{140BD}; + #\u{140BE}; + #\u{140BF}; + #\u{140C0}; + #\u{140C1}; + #\u{140C2}; + #\u{140C3}; + #\u{140C4}; + #\u{140C5}; + #\u{140C6}; + #\u{140C7}; + #\u{140C8}; + #\u{140C9}; + #\u{140CA}; + #\u{140CB}; + #\u{140CC}; + #\u{140CD}; + #\u{140CE}; + #\u{140CF}; + #\u{140D0}; + #\u{140D1}; + #\u{140D2}; + #\u{140D3}; + #\u{140D4}; + #\u{140D5}; + #\u{140D6}; + #\u{140D7}; + #\u{140D8}; + #\u{140D9}; + #\u{140DA}; + #\u{140DB}; + #\u{140DC}; + #\u{140DD}; + #\u{140DE}; + #\u{140DF}; + #\u{140E0}; + #\u{140E1}; + #\u{140E2}; + #\u{140E3}; + #\u{140E4}; + #\u{140E5}; + #\u{140E6}; + #\u{140E7}; + #\u{140E8}; + #\u{140E9}; + #\u{140EA}; + #\u{140EB}; + #\u{140EC}; + #\u{140ED}; + #\u{140EE}; + #\u{140EF}; + #\u{140F0}; + #\u{140F1}; + #\u{140F2}; + #\u{140F3}; + #\u{140F4}; + #\u{140F5}; + #\u{140F6}; + #\u{140F7}; + #\u{140F8}; + #\u{140F9}; + #\u{140FA}; + #\u{140FB}; + #\u{140FC}; + #\u{140FD}; + #\u{140FE}; + #\u{140FF}; + #\u{14100}; + #\u{14101}; + #\u{14102}; + #\u{14103}; + #\u{14104}; + #\u{14105}; + #\u{14106}; + #\u{14107}; + #\u{14108}; + #\u{14109}; + #\u{1410A}; + #\u{1410B}; + #\u{1410C}; + #\u{1410D}; + #\u{1410E}; + #\u{1410F}; + #\u{14110}; + #\u{14111}; + #\u{14112}; + #\u{14113}; + #\u{14114}; + #\u{14115}; + #\u{14116}; + #\u{14117}; + #\u{14118}; + #\u{14119}; + #\u{1411A}; + #\u{1411B}; + #\u{1411C}; + #\u{1411D}; + #\u{1411E}; + #\u{1411F}; + #\u{14120}; + #\u{14121}; + #\u{14122}; + #\u{14123}; + #\u{14124}; + #\u{14125}; + #\u{14126}; + #\u{14127}; + #\u{14128}; + #\u{14129}; + #\u{1412A}; + #\u{1412B}; + #\u{1412C}; + #\u{1412D}; + #\u{1412E}; + #\u{1412F}; + #\u{14130}; + #\u{14131}; + #\u{14132}; + #\u{14133}; + #\u{14134}; + #\u{14135}; + #\u{14136}; + #\u{14137}; + #\u{14138}; + #\u{14139}; + #\u{1413A}; + #\u{1413B}; + #\u{1413C}; + #\u{1413D}; + #\u{1413E}; + #\u{1413F}; + #\u{14140}; + #\u{14141}; + #\u{14142}; + #\u{14143}; + #\u{14144}; + #\u{14145}; + #\u{14146}; + #\u{14147}; + #\u{14148}; + #\u{14149}; + #\u{1414A}; + #\u{1414B}; + #\u{1414C}; + #\u{1414D}; + #\u{1414E}; + #\u{1414F}; + #\u{14150}; + #\u{14151}; + #\u{14152}; + #\u{14153}; + #\u{14154}; + #\u{14155}; + #\u{14156}; + #\u{14157}; + #\u{14158}; + #\u{14159}; + #\u{1415A}; + #\u{1415B}; + #\u{1415C}; + #\u{1415D}; + #\u{1415E}; + #\u{1415F}; + #\u{14160}; + #\u{14161}; + #\u{14162}; + #\u{14163}; + #\u{14164}; + #\u{14165}; + #\u{14166}; + #\u{14167}; + #\u{14168}; + #\u{14169}; + #\u{1416A}; + #\u{1416B}; + #\u{1416C}; + #\u{1416D}; + #\u{1416E}; + #\u{1416F}; + #\u{14170}; + #\u{14171}; + #\u{14172}; + #\u{14173}; + #\u{14174}; + #\u{14175}; + #\u{14176}; + #\u{14177}; + #\u{14178}; + #\u{14179}; + #\u{1417A}; + #\u{1417B}; + #\u{1417C}; + #\u{1417D}; + #\u{1417E}; + #\u{1417F}; + #\u{14180}; + #\u{14181}; + #\u{14182}; + #\u{14183}; + #\u{14184}; + #\u{14185}; + #\u{14186}; + #\u{14187}; + #\u{14188}; + #\u{14189}; + #\u{1418A}; + #\u{1418B}; + #\u{1418C}; + #\u{1418D}; + #\u{1418E}; + #\u{1418F}; + #\u{14190}; + #\u{14191}; + #\u{14192}; + #\u{14193}; + #\u{14194}; + #\u{14195}; + #\u{14196}; + #\u{14197}; + #\u{14198}; + #\u{14199}; + #\u{1419A}; + #\u{1419B}; + #\u{1419C}; + #\u{1419D}; + #\u{1419E}; + #\u{1419F}; + #\u{141A0}; + #\u{141A1}; + #\u{141A2}; + #\u{141A3}; + #\u{141A4}; + #\u{141A5}; + #\u{141A6}; + #\u{141A7}; + #\u{141A8}; + #\u{141A9}; + #\u{141AA}; + #\u{141AB}; + #\u{141AC}; + #\u{141AD}; + #\u{141AE}; + #\u{141AF}; + #\u{141B0}; + #\u{141B1}; + #\u{141B2}; + #\u{141B3}; + #\u{141B4}; + #\u{141B5}; + #\u{141B6}; + #\u{141B7}; + #\u{141B8}; + #\u{141B9}; + #\u{141BA}; + #\u{141BB}; + #\u{141BC}; + #\u{141BD}; + #\u{141BE}; + #\u{141BF}; + #\u{141C0}; + #\u{141C1}; + #\u{141C2}; + #\u{141C3}; + #\u{141C4}; + #\u{141C5}; + #\u{141C6}; + #\u{141C7}; + #\u{141C8}; + #\u{141C9}; + #\u{141CA}; + #\u{141CB}; + #\u{141CC}; + #\u{141CD}; + #\u{141CE}; + #\u{141CF}; + #\u{141D0}; + #\u{141D1}; + #\u{141D2}; + #\u{141D3}; + #\u{141D4}; + #\u{141D5}; + #\u{141D6}; + #\u{141D7}; + #\u{141D8}; + #\u{141D9}; + #\u{141DA}; + #\u{141DB}; + #\u{141DC}; + #\u{141DD}; + #\u{141DE}; + #\u{141DF}; + #\u{141E0}; + #\u{141E1}; + #\u{141E2}; + #\u{141E3}; + #\u{141E4}; + #\u{141E5}; + #\u{141E6}; + #\u{141E7}; + #\u{141E8}; + #\u{141E9}; + #\u{141EA}; + #\u{141EB}; + #\u{141EC}; + #\u{141ED}; + #\u{141EE}; + #\u{141EF}; + #\u{141F0}; + #\u{141F1}; + #\u{141F2}; + #\u{141F3}; + #\u{141F4}; + #\u{141F5}; + #\u{141F6}; + #\u{141F7}; + #\u{141F8}; + #\u{141F9}; + #\u{141FA}; + #\u{141FB}; + #\u{141FC}; + #\u{141FD}; + #\u{141FE}; + #\u{141FF}; + #\u{14200}; + #\u{14201}; + #\u{14202}; + #\u{14203}; + #\u{14204}; + #\u{14205}; + #\u{14206}; + #\u{14207}; + #\u{14208}; + #\u{14209}; + #\u{1420A}; + #\u{1420B}; + #\u{1420C}; + #\u{1420D}; + #\u{1420E}; + #\u{1420F}; + #\u{14210}; + #\u{14211}; + #\u{14212}; + #\u{14213}; + #\u{14214}; + #\u{14215}; + #\u{14216}; + #\u{14217}; + #\u{14218}; + #\u{14219}; + #\u{1421A}; + #\u{1421B}; + #\u{1421C}; + #\u{1421D}; + #\u{1421E}; + #\u{1421F}; + #\u{14220}; + #\u{14221}; + #\u{14222}; + #\u{14223}; + #\u{14224}; + #\u{14225}; + #\u{14226}; + #\u{14227}; + #\u{14228}; + #\u{14229}; + #\u{1422A}; + #\u{1422B}; + #\u{1422C}; + #\u{1422D}; + #\u{1422E}; + #\u{1422F}; + #\u{14230}; + #\u{14231}; + #\u{14232}; + #\u{14233}; + #\u{14234}; + #\u{14235}; + #\u{14236}; + #\u{14237}; + #\u{14238}; + #\u{14239}; + #\u{1423A}; + #\u{1423B}; + #\u{1423C}; + #\u{1423D}; + #\u{1423E}; + #\u{1423F}; + #\u{14240}; + #\u{14241}; + #\u{14242}; + #\u{14243}; + #\u{14244}; + #\u{14245}; + #\u{14246}; + #\u{14247}; + #\u{14248}; + #\u{14249}; + #\u{1424A}; + #\u{1424B}; + #\u{1424C}; + #\u{1424D}; + #\u{1424E}; + #\u{1424F}; + #\u{14250}; + #\u{14251}; + #\u{14252}; + #\u{14253}; + #\u{14254}; + #\u{14255}; + #\u{14256}; + #\u{14257}; + #\u{14258}; + #\u{14259}; + #\u{1425A}; + #\u{1425B}; + #\u{1425C}; + #\u{1425D}; + #\u{1425E}; + #\u{1425F}; + #\u{14260}; + #\u{14261}; + #\u{14262}; + #\u{14263}; + #\u{14264}; + #\u{14265}; + #\u{14266}; + #\u{14267}; + #\u{14268}; + #\u{14269}; + #\u{1426A}; + #\u{1426B}; + #\u{1426C}; + #\u{1426D}; + #\u{1426E}; + #\u{1426F}; + #\u{14270}; + #\u{14271}; + #\u{14272}; + #\u{14273}; + #\u{14274}; + #\u{14275}; + #\u{14276}; + #\u{14277}; + #\u{14278}; + #\u{14279}; + #\u{1427A}; + #\u{1427B}; + #\u{1427C}; + #\u{1427D}; + #\u{1427E}; + #\u{1427F}; + #\u{14280}; + #\u{14281}; + #\u{14282}; + #\u{14283}; + #\u{14284}; + #\u{14285}; + #\u{14286}; + #\u{14287}; + #\u{14288}; + #\u{14289}; + #\u{1428A}; + #\u{1428B}; + #\u{1428C}; + #\u{1428D}; + #\u{1428E}; + #\u{1428F}; + #\u{14290}; + #\u{14291}; + #\u{14292}; + #\u{14293}; + #\u{14294}; + #\u{14295}; + #\u{14296}; + #\u{14297}; + #\u{14298}; + #\u{14299}; + #\u{1429A}; + #\u{1429B}; + #\u{1429C}; + #\u{1429D}; + #\u{1429E}; + #\u{1429F}; + #\u{142A0}; + #\u{142A1}; + #\u{142A2}; + #\u{142A3}; + #\u{142A4}; + #\u{142A5}; + #\u{142A6}; + #\u{142A7}; + #\u{142A8}; + #\u{142A9}; + #\u{142AA}; + #\u{142AB}; + #\u{142AC}; + #\u{142AD}; + #\u{142AE}; + #\u{142AF}; + #\u{142B0}; + #\u{142B1}; + #\u{142B2}; + #\u{142B3}; + #\u{142B4}; + #\u{142B5}; + #\u{142B6}; + #\u{142B7}; + #\u{142B8}; + #\u{142B9}; + #\u{142BA}; + #\u{142BB}; + #\u{142BC}; + #\u{142BD}; + #\u{142BE}; + #\u{142BF}; + #\u{142C0}; + #\u{142C1}; + #\u{142C2}; + #\u{142C3}; + #\u{142C4}; + #\u{142C5}; + #\u{142C6}; + #\u{142C7}; + #\u{142C8}; + #\u{142C9}; + #\u{142CA}; + #\u{142CB}; + #\u{142CC}; + #\u{142CD}; + #\u{142CE}; + #\u{142CF}; + #\u{142D0}; + #\u{142D1}; + #\u{142D2}; + #\u{142D3}; + #\u{142D4}; + #\u{142D5}; + #\u{142D6}; + #\u{142D7}; + #\u{142D8}; + #\u{142D9}; + #\u{142DA}; + #\u{142DB}; + #\u{142DC}; + #\u{142DD}; + #\u{142DE}; + #\u{142DF}; + #\u{142E0}; + #\u{142E1}; + #\u{142E2}; + #\u{142E3}; + #\u{142E4}; + #\u{142E5}; + #\u{142E6}; + #\u{142E7}; + #\u{142E8}; + #\u{142E9}; + #\u{142EA}; + #\u{142EB}; + #\u{142EC}; + #\u{142ED}; + #\u{142EE}; + #\u{142EF}; + #\u{142F0}; + #\u{142F1}; + #\u{142F2}; + #\u{142F3}; + #\u{142F4}; + #\u{142F5}; + #\u{142F6}; + #\u{142F7}; + #\u{142F8}; + #\u{142F9}; + #\u{142FA}; + #\u{142FB}; + #\u{142FC}; + #\u{142FD}; + #\u{142FE}; + #\u{142FF}; + #\u{14300}; + #\u{14301}; + #\u{14302}; + #\u{14303}; + #\u{14304}; + #\u{14305}; + #\u{14306}; + #\u{14307}; + #\u{14308}; + #\u{14309}; + #\u{1430A}; + #\u{1430B}; + #\u{1430C}; + #\u{1430D}; + #\u{1430E}; + #\u{1430F}; + #\u{14310}; + #\u{14311}; + #\u{14312}; + #\u{14313}; + #\u{14314}; + #\u{14315}; + #\u{14316}; + #\u{14317}; + #\u{14318}; + #\u{14319}; + #\u{1431A}; + #\u{1431B}; + #\u{1431C}; + #\u{1431D}; + #\u{1431E}; + #\u{1431F}; + #\u{14320}; + #\u{14321}; + #\u{14322}; + #\u{14323}; + #\u{14324}; + #\u{14325}; + #\u{14326}; + #\u{14327}; + #\u{14328}; + #\u{14329}; + #\u{1432A}; + #\u{1432B}; + #\u{1432C}; + #\u{1432D}; + #\u{1432E}; + #\u{1432F}; + #\u{14330}; + #\u{14331}; + #\u{14332}; + #\u{14333}; + #\u{14334}; + #\u{14335}; + #\u{14336}; + #\u{14337}; + #\u{14338}; + #\u{14339}; + #\u{1433A}; + #\u{1433B}; + #\u{1433C}; + #\u{1433D}; + #\u{1433E}; + #\u{1433F}; + #\u{14340}; + #\u{14341}; + #\u{14342}; + #\u{14343}; + #\u{14344}; + #\u{14345}; + #\u{14346}; + #\u{14347}; + #\u{14348}; + #\u{14349}; + #\u{1434A}; + #\u{1434B}; + #\u{1434C}; + #\u{1434D}; + #\u{1434E}; + #\u{1434F}; + #\u{14350}; + #\u{14351}; + #\u{14352}; + #\u{14353}; + #\u{14354}; + #\u{14355}; + #\u{14356}; + #\u{14357}; + #\u{14358}; + #\u{14359}; + #\u{1435A}; + #\u{1435B}; + #\u{1435C}; + #\u{1435D}; + #\u{1435E}; + #\u{1435F}; + #\u{14360}; + #\u{14361}; + #\u{14362}; + #\u{14363}; + #\u{14364}; + #\u{14365}; + #\u{14366}; + #\u{14367}; + #\u{14368}; + #\u{14369}; + #\u{1436A}; + #\u{1436B}; + #\u{1436C}; + #\u{1436D}; + #\u{1436E}; + #\u{1436F}; + #\u{14370}; + #\u{14371}; + #\u{14372}; + #\u{14373}; + #\u{14374}; + #\u{14375}; + #\u{14376}; + #\u{14377}; + #\u{14378}; + #\u{14379}; + #\u{1437A}; + #\u{1437B}; + #\u{1437C}; + #\u{1437D}; + #\u{1437E}; + #\u{1437F}; + #\u{14380}; + #\u{14381}; + #\u{14382}; + #\u{14383}; + #\u{14384}; + #\u{14385}; + #\u{14386}; + #\u{14387}; + #\u{14388}; + #\u{14389}; + #\u{1438A}; + #\u{1438B}; + #\u{1438C}; + #\u{1438D}; + #\u{1438E}; + #\u{1438F}; + #\u{14390}; + #\u{14391}; + #\u{14392}; + #\u{14393}; + #\u{14394}; + #\u{14395}; + #\u{14396}; + #\u{14397}; + #\u{14398}; + #\u{14399}; + #\u{1439A}; + #\u{1439B}; + #\u{1439C}; + #\u{1439D}; + #\u{1439E}; + #\u{1439F}; + #\u{143A0}; + #\u{143A1}; + #\u{143A2}; + #\u{143A3}; + #\u{143A4}; + #\u{143A5}; + #\u{143A6}; + #\u{143A7}; + #\u{143A8}; + #\u{143A9}; + #\u{143AA}; + #\u{143AB}; + #\u{143AC}; + #\u{143AD}; + #\u{143AE}; + #\u{143AF}; + #\u{143B0}; + #\u{143B1}; + #\u{143B2}; + #\u{143B3}; + #\u{143B4}; + #\u{143B5}; + #\u{143B6}; + #\u{143B7}; + #\u{143B8}; + #\u{143B9}; + #\u{143BA}; + #\u{143BB}; + #\u{143BC}; + #\u{143BD}; + #\u{143BE}; + #\u{143BF}; + #\u{143C0}; + #\u{143C1}; + #\u{143C2}; + #\u{143C3}; + #\u{143C4}; + #\u{143C5}; + #\u{143C6}; + #\u{143C7}; + #\u{143C8}; + #\u{143C9}; + #\u{143CA}; + #\u{143CB}; + #\u{143CC}; + #\u{143CD}; + #\u{143CE}; + #\u{143CF}; + #\u{143D0}; + #\u{143D1}; + #\u{143D2}; + #\u{143D3}; + #\u{143D4}; + #\u{143D5}; + #\u{143D6}; + #\u{143D7}; + #\u{143D8}; + #\u{143D9}; + #\u{143DA}; + #\u{143DB}; + #\u{143DC}; + #\u{143DD}; + #\u{143DE}; + #\u{143DF}; + #\u{143E0}; + #\u{143E1}; + #\u{143E2}; + #\u{143E3}; + #\u{143E4}; + #\u{143E5}; + #\u{143E6}; + #\u{143E7}; + #\u{143E8}; + #\u{143E9}; + #\u{143EA}; + #\u{143EB}; + #\u{143EC}; + #\u{143ED}; + #\u{143EE}; + #\u{143EF}; + #\u{143F0}; + #\u{143F1}; + #\u{143F2}; + #\u{143F3}; + #\u{143F4}; + #\u{143F5}; + #\u{143F6}; + #\u{143F7}; + #\u{143F8}; + #\u{143F9}; + #\u{143FA}; + #\u{16100}; + #\u{16101}; + #\u{16102}; + #\u{16103}; + #\u{16104}; + #\u{16105}; + #\u{16106}; + #\u{16107}; + #\u{16108}; + #\u{16109}; + #\u{1610A}; + #\u{1610B}; + #\u{1610C}; + #\u{1610D}; + #\u{1610E}; + #\u{1610F}; + #\u{16110}; + #\u{16111}; + #\u{16112}; + #\u{16113}; + #\u{16114}; + #\u{16115}; + #\u{16116}; + #\u{16117}; + #\u{16118}; + #\u{16119}; + #\u{1611A}; + #\u{1611B}; + #\u{1611C}; + #\u{1611D}; + #\u{16D40}; + #\u{16D41}; + #\u{16D42}; + #\u{16D43}; + #\u{16D44}; + #\u{16D45}; + #\u{16D46}; + #\u{16D47}; + #\u{16D48}; + #\u{16D49}; + #\u{16D4A}; + #\u{16D4B}; + #\u{16D4C}; + #\u{16D4D}; + #\u{16D4E}; + #\u{16D4F}; + #\u{16D50}; + #\u{16D51}; + #\u{16D52}; + #\u{16D53}; + #\u{16D54}; + #\u{16D55}; + #\u{16D56}; + #\u{16D57}; + #\u{16D58}; + #\u{16D59}; + #\u{16D5A}; + #\u{16D5B}; + #\u{16D5C}; + #\u{16D5D}; + #\u{16D5E}; + #\u{16D5F}; + #\u{16D60}; + #\u{16D61}; + #\u{16D62}; + #\u{16D63}; + #\u{16D64}; + #\u{16D65}; + #\u{16D66}; + #\u{16D67}; + #\u{16D68}; + #\u{16D69}; + #\u{16D6A}; + #\u{16D6B}; + #\u{16D6C}; + #\u{18CFF}; + #\u{1E5D0}; + #\u{1E5D1}; + #\u{1E5D2}; + #\u{1E5D3}; + #\u{1E5D4}; + #\u{1E5D5}; + #\u{1E5D6}; + #\u{1E5D7}; + #\u{1E5D8}; + #\u{1E5D9}; + #\u{1E5DA}; + #\u{1E5DB}; + #\u{1E5DC}; + #\u{1E5DD}; + #\u{1E5DE}; + #\u{1E5DF}; + #\u{1E5E0}; + #\u{1E5E1}; + #\u{1E5E2}; + #\u{1E5E3}; + #\u{1E5E4}; + #\u{1E5E5}; + #\u{1E5E6}; + #\u{1E5E7}; + #\u{1E5E8}; + #\u{1E5E9}; + #\u{1E5EA}; + #\u{1E5EB}; + #\u{1E5EC}; + #\u{1E5ED}; + #\u{1E5F0}; +}; diff --git a/test/language/identifiers/start-unicode-16.0.0-class.js b/test/language/identifiers/start-unicode-16.0.0-class.js new file mode 100644 index 00000000000..4a5d63a7dac --- /dev/null +++ b/test/language/identifiers/start-unicode-16.0.0-class.js @@ -0,0 +1,4318 @@ +// Copyright 2024 Mathias Bynens. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +author: Mathias Bynens +esid: prod-PrivateIdentifier +description: | + Test that Unicode v16.0.0 ID_Start characters are accepted as + identifier start characters in private class fields. +info: | + Generated by https://github.com/mathiasbynens/caniunicode +features: [class, class-fields-private] +---*/ + +class _ { + #Ᲊ; + #ᲊ; + #Ɤ; + #Ꟍ; + #ꟍ; + #Ꟛ; + #ꟛ; + #Ƛ; + #𐗀; + #𐗁; + #𐗂; + #𐗃; + #𐗄; + #𐗅; + #𐗆; + #𐗇; + #𐗈; + #𐗉; + #𐗊; + #𐗋; + #𐗌; + #𐗍; + #𐗎; + #𐗏; + #𐗐; + #𐗑; + #𐗒; + #𐗓; + #𐗔; + #𐗕; + #𐗖; + #𐗗; + #𐗘; + #𐗙; + #𐗚; + #𐗛; + #𐗜; + #𐗝; + #𐗞; + #𐗟; + #𐗠; + #𐗡; + #𐗢; + #𐗣; + #𐗤; + #𐗥; + #𐗦; + #𐗧; + #𐗨; + #𐗩; + #𐗪; + #𐗫; + #𐗬; + #𐗭; + #𐗮; + #𐗯; + #𐗰; + #𐗱; + #𐗲; + #𐗳; + #𐵊; + #𐵋; + #𐵌; + #𐵍; + #𐵎; + #𐵏; + #𐵐; + #𐵑; + #𐵒; + #𐵓; + #𐵔; + #𐵕; + #𐵖; + #𐵗; + #𐵘; + #𐵙; + #𐵚; + #𐵛; + #𐵜; + #𐵝; + #𐵞; + #𐵟; + #𐵠; + #𐵡; + #𐵢; + #𐵣; + #𐵤; + #𐵥; + #𐵯; + #𐵰; + #𐵱; + #𐵲; + #𐵳; + #𐵴; + #𐵵; + #𐵶; + #𐵷; + #𐵸; + #𐵹; + #𐵺; + #𐵻; + #𐵼; + #𐵽; + #𐵾; + #𐵿; + #𐶀; + #𐶁; + #𐶂; + #𐶃; + #𐶄; + #𐶅; + #𐻂; + #𐻃; + #𐻄; + #𑎀; + #𑎁; + #𑎂; + #𑎃; + #𑎄; + #𑎅; + #𑎆; + #𑎇; + #𑎈; + #𑎉; + #𑎋; + #𑎎; + #𑎐; + #𑎑; + #𑎒; + #𑎓; + #𑎔; + #𑎕; + #𑎖; + #𑎗; + #𑎘; + #𑎙; + #𑎚; + #𑎛; + #𑎜; + #𑎝; + #𑎞; + #𑎟; + #𑎠; + #𑎡; + #𑎢; + #𑎣; + #𑎤; + #𑎥; + #𑎦; + #𑎧; + #𑎨; + #𑎩; + #𑎪; + #𑎫; + #𑎬; + #𑎭; + #𑎮; + #𑎯; + #𑎰; + #𑎱; + #𑎲; + #𑎳; + #𑎴; + #𑎵; + #𑎷; + #𑏑; + #𑏓; + #𑯀; + #𑯁; + #𑯂; + #𑯃; + #𑯄; + #𑯅; + #𑯆; + #𑯇; + #𑯈; + #𑯉; + #𑯊; + #𑯋; + #𑯌; + #𑯍; + #𑯎; + #𑯏; + #𑯐; + #𑯑; + #𑯒; + #𑯓; + #𑯔; + #𑯕; + #𑯖; + #𑯗; + #𑯘; + #𑯙; + #𑯚; + #𑯛; + #𑯜; + #𑯝; + #𑯞; + #𑯟; + #𑯠; + #𓑠; + #𓑡; + #𓑢; + #𓑣; + #𓑤; + #𓑥; + #𓑦; + #𓑧; + #𓑨; + #𓑩; + #𓑪; + #𓑫; + #𓑬; + #𓑭; + #𓑮; + #𓑯; + #𓑰; + #𓑱; + #𓑲; + #𓑳; + #𓑴; + #𓑵; + #𓑶; + #𓑷; + #𓑸; + #𓑹; + #𓑺; + #𓑻; + #𓑼; + #𓑽; + #𓑾; + #𓑿; + #𓒀; + #𓒁; + #𓒂; + #𓒃; + #𓒄; + #𓒅; + #𓒆; + #𓒇; + #𓒈; + #𓒉; + #𓒊; + #𓒋; + #𓒌; + #𓒍; + #𓒎; + #𓒏; + #𓒐; + #𓒑; + #𓒒; + #𓒓; + #𓒔; + #𓒕; + #𓒖; + #𓒗; + #𓒘; + #𓒙; + #𓒚; + #𓒛; + #𓒜; + #𓒝; + #𓒞; + #𓒟; + #𓒠; + #𓒡; + #𓒢; + #𓒣; + #𓒤; + #𓒥; + #𓒦; + #𓒧; + #𓒨; + #𓒩; + #𓒪; + #𓒫; + #𓒬; + #𓒭; + #𓒮; + #𓒯; + #𓒰; + #𓒱; + #𓒲; + #𓒳; + #𓒴; + #𓒵; + #𓒶; + #𓒷; + #𓒸; + #𓒹; + #𓒺; + #𓒻; + #𓒼; + #𓒽; + #𓒾; + #𓒿; + #𓓀; + #𓓁; + #𓓂; + #𓓃; + #𓓄; + #𓓅; + #𓓆; + #𓓇; + #𓓈; + #𓓉; + #𓓊; + #𓓋; + #𓓌; + #𓓍; + #𓓎; + #𓓏; + #𓓐; + #𓓑; + #𓓒; + #𓓓; + #𓓔; + #𓓕; + #𓓖; + #𓓗; + #𓓘; + #𓓙; + #𓓚; + #𓓛; + #𓓜; + #𓓝; + #𓓞; + #𓓟; + #𓓠; + #𓓡; + #𓓢; + #𓓣; + #𓓤; + #𓓥; + #𓓦; + #𓓧; + #𓓨; + #𓓩; + #𓓪; + #𓓫; + #𓓬; + #𓓭; + #𓓮; + #𓓯; + #𓓰; + #𓓱; + #𓓲; + #𓓳; + #𓓴; + #𓓵; + #𓓶; + #𓓷; + #𓓸; + #𓓹; + #𓓺; + #𓓻; + #𓓼; + #𓓽; + #𓓾; + #𓓿; + #𓔀; + #𓔁; + #𓔂; + #𓔃; + #𓔄; + #𓔅; + #𓔆; + #𓔇; + #𓔈; + #𓔉; + #𓔊; + #𓔋; + #𓔌; + #𓔍; + #𓔎; + #𓔏; + #𓔐; + #𓔑; + #𓔒; + #𓔓; + #𓔔; + #𓔕; + #𓔖; + #𓔗; + #𓔘; + #𓔙; + #𓔚; + #𓔛; + #𓔜; + #𓔝; + #𓔞; + #𓔟; + #𓔠; + #𓔡; + #𓔢; + #𓔣; + #𓔤; + #𓔥; + #𓔦; + #𓔧; + #𓔨; + #𓔩; + #𓔪; + #𓔫; + #𓔬; + #𓔭; + #𓔮; + #𓔯; + #𓔰; + #𓔱; + #𓔲; + #𓔳; + #𓔴; + #𓔵; + #𓔶; + #𓔷; + #𓔸; + #𓔹; + #𓔺; + #𓔻; + #𓔼; + #𓔽; + #𓔾; + #𓔿; + #𓕀; + #𓕁; + #𓕂; + #𓕃; + #𓕄; + #𓕅; + #𓕆; + #𓕇; + #𓕈; + #𓕉; + #𓕊; + #𓕋; + #𓕌; + #𓕍; + #𓕎; + #𓕏; + #𓕐; + #𓕑; + #𓕒; + #𓕓; + #𓕔; + #𓕕; + #𓕖; + #𓕗; + #𓕘; + #𓕙; + #𓕚; + #𓕛; + #𓕜; + #𓕝; + #𓕞; + #𓕟; + #𓕠; + #𓕡; + #𓕢; + #𓕣; + #𓕤; + #𓕥; + #𓕦; + #𓕧; + #𓕨; + #𓕩; + #𓕪; + #𓕫; + #𓕬; + #𓕭; + #𓕮; + #𓕯; + #𓕰; + #𓕱; + #𓕲; + #𓕳; + #𓕴; + #𓕵; + #𓕶; + #𓕷; + #𓕸; + #𓕹; + #𓕺; + #𓕻; + #𓕼; + #𓕽; + #𓕾; + #𓕿; + #𓖀; + #𓖁; + #𓖂; + #𓖃; + #𓖄; + #𓖅; + #𓖆; + #𓖇; + #𓖈; + #𓖉; + #𓖊; + #𓖋; + #𓖌; + #𓖍; + #𓖎; + #𓖏; + #𓖐; + #𓖑; + #𓖒; + #𓖓; + #𓖔; + #𓖕; + #𓖖; + #𓖗; + #𓖘; + #𓖙; + #𓖚; + #𓖛; + #𓖜; + #𓖝; + #𓖞; + #𓖟; + #𓖠; + #𓖡; + #𓖢; + #𓖣; + #𓖤; + #𓖥; + #𓖦; + #𓖧; + #𓖨; + #𓖩; + #𓖪; + #𓖫; + #𓖬; + #𓖭; + #𓖮; + #𓖯; + #𓖰; + #𓖱; + #𓖲; + #𓖳; + #𓖴; + #𓖵; + #𓖶; + #𓖷; + #𓖸; + #𓖹; + #𓖺; + #𓖻; + #𓖼; + #𓖽; + #𓖾; + #𓖿; + #𓗀; + #𓗁; + #𓗂; + #𓗃; + #𓗄; + #𓗅; + #𓗆; + #𓗇; + #𓗈; + #𓗉; + #𓗊; + #𓗋; + #𓗌; + #𓗍; + #𓗎; + #𓗏; + #𓗐; + #𓗑; + #𓗒; + #𓗓; + #𓗔; + #𓗕; + #𓗖; + #𓗗; + #𓗘; + #𓗙; + #𓗚; + #𓗛; + #𓗜; + #𓗝; + #𓗞; + #𓗟; + #𓗠; + #𓗡; + #𓗢; + #𓗣; + #𓗤; + #𓗥; + #𓗦; + #𓗧; + #𓗨; + #𓗩; + #𓗪; + #𓗫; + #𓗬; + #𓗭; + #𓗮; + #𓗯; + #𓗰; + #𓗱; + #𓗲; + #𓗳; + #𓗴; + #𓗵; + #𓗶; + #𓗷; + #𓗸; + #𓗹; + #𓗺; + #𓗻; + #𓗼; + #𓗽; + #𓗾; + #𓗿; + #𓘀; + #𓘁; + #𓘂; + #𓘃; + #𓘄; + #𓘅; + #𓘆; + #𓘇; + #𓘈; + #𓘉; + #𓘊; + #𓘋; + #𓘌; + #𓘍; + #𓘎; + #𓘏; + #𓘐; + #𓘑; + #𓘒; + #𓘓; + #𓘔; + #𓘕; + #𓘖; + #𓘗; + #𓘘; + #𓘙; + #𓘚; + #𓘛; + #𓘜; + #𓘝; + #𓘞; + #𓘟; + #𓘠; + #𓘡; + #𓘢; + #𓘣; + #𓘤; + #𓘥; + #𓘦; + #𓘧; + #𓘨; + #𓘩; + #𓘪; + #𓘫; + #𓘬; + #𓘭; + #𓘮; + #𓘯; + #𓘰; + #𓘱; + #𓘲; + #𓘳; + #𓘴; + #𓘵; + #𓘶; + #𓘷; + #𓘸; + #𓘹; + #𓘺; + #𓘻; + #𓘼; + #𓘽; + #𓘾; + #𓘿; + #𓙀; + #𓙁; + #𓙂; + #𓙃; + #𓙄; + #𓙅; + #𓙆; + #𓙇; + #𓙈; + #𓙉; + #𓙊; + #𓙋; + #𓙌; + #𓙍; + #𓙎; + #𓙏; + #𓙐; + #𓙑; + #𓙒; + #𓙓; + #𓙔; + #𓙕; + #𓙖; + #𓙗; + #𓙘; + #𓙙; + #𓙚; + #𓙛; + #𓙜; + #𓙝; + #𓙞; + #𓙟; + #𓙠; + #𓙡; + #𓙢; + #𓙣; + #𓙤; + #𓙥; + #𓙦; + #𓙧; + #𓙨; + #𓙩; + #𓙪; + #𓙫; + #𓙬; + #𓙭; + #𓙮; + #𓙯; + #𓙰; + #𓙱; + #𓙲; + #𓙳; + #𓙴; + #𓙵; + #𓙶; + #𓙷; + #𓙸; + #𓙹; + #𓙺; + #𓙻; + #𓙼; + #𓙽; + #𓙾; + #𓙿; + #𓚀; + #𓚁; + #𓚂; + #𓚃; + #𓚄; + #𓚅; + #𓚆; + #𓚇; + #𓚈; + #𓚉; + #𓚊; + #𓚋; + #𓚌; + #𓚍; + #𓚎; + #𓚏; + #𓚐; + #𓚑; + #𓚒; + #𓚓; + #𓚔; + #𓚕; + #𓚖; + #𓚗; + #𓚘; + #𓚙; + #𓚚; + #𓚛; + #𓚜; + #𓚝; + #𓚞; + #𓚟; + #𓚠; + #𓚡; + #𓚢; + #𓚣; + #𓚤; + #𓚥; + #𓚦; + #𓚧; + #𓚨; + #𓚩; + #𓚪; + #𓚫; + #𓚬; + #𓚭; + #𓚮; + #𓚯; + #𓚰; + #𓚱; + #𓚲; + #𓚳; + #𓚴; + #𓚵; + #𓚶; + #𓚷; + #𓚸; + #𓚹; + #𓚺; + #𓚻; + #𓚼; + #𓚽; + #𓚾; + #𓚿; + #𓛀; + #𓛁; + #𓛂; + #𓛃; + #𓛄; + #𓛅; + #𓛆; + #𓛇; + #𓛈; + #𓛉; + #𓛊; + #𓛋; + #𓛌; + #𓛍; + #𓛎; + #𓛏; + #𓛐; + #𓛑; + #𓛒; + #𓛓; + #𓛔; + #𓛕; + #𓛖; + #𓛗; + #𓛘; + #𓛙; + #𓛚; + #𓛛; + #𓛜; + #𓛝; + #𓛞; + #𓛟; + #𓛠; + #𓛡; + #𓛢; + #𓛣; + #𓛤; + #𓛥; + #𓛦; + #𓛧; + #𓛨; + #𓛩; + #𓛪; + #𓛫; + #𓛬; + #𓛭; + #𓛮; + #𓛯; + #𓛰; + #𓛱; + #𓛲; + #𓛳; + #𓛴; + #𓛵; + #𓛶; + #𓛷; + #𓛸; + #𓛹; + #𓛺; + #𓛻; + #𓛼; + #𓛽; + #𓛾; + #𓛿; + #𓜀; + #𓜁; + #𓜂; + #𓜃; + #𓜄; + #𓜅; + #𓜆; + #𓜇; + #𓜈; + #𓜉; + #𓜊; + #𓜋; + #𓜌; + #𓜍; + #𓜎; + #𓜏; + #𓜐; + #𓜑; + #𓜒; + #𓜓; + #𓜔; + #𓜕; + #𓜖; + #𓜗; + #𓜘; + #𓜙; + #𓜚; + #𓜛; + #𓜜; + #𓜝; + #𓜞; + #𓜟; + #𓜠; + #𓜡; + #𓜢; + #𓜣; + #𓜤; + #𓜥; + #𓜦; + #𓜧; + #𓜨; + #𓜩; + #𓜪; + #𓜫; + #𓜬; + #𓜭; + #𓜮; + #𓜯; + #𓜰; + #𓜱; + #𓜲; + #𓜳; + #𓜴; + #𓜵; + #𓜶; + #𓜷; + #𓜸; + #𓜹; + #𓜺; + #𓜻; + #𓜼; + #𓜽; + #𓜾; + #𓜿; + #𓝀; + #𓝁; + #𓝂; + #𓝃; + #𓝄; + #𓝅; + #𓝆; + #𓝇; + #𓝈; + #𓝉; + #𓝊; + #𓝋; + #𓝌; + #𓝍; + #𓝎; + #𓝏; + #𓝐; + #𓝑; + #𓝒; + #𓝓; + #𓝔; + #𓝕; + #𓝖; + #𓝗; + #𓝘; + #𓝙; + #𓝚; + #𓝛; + #𓝜; + #𓝝; + #𓝞; + #𓝟; + #𓝠; + #𓝡; + #𓝢; + #𓝣; + #𓝤; + #𓝥; + #𓝦; + #𓝧; + #𓝨; + #𓝩; + #𓝪; + #𓝫; + #𓝬; + #𓝭; + #𓝮; + #𓝯; + #𓝰; + #𓝱; + #𓝲; + #𓝳; + #𓝴; + #𓝵; + #𓝶; + #𓝷; + #𓝸; + #𓝹; + #𓝺; + #𓝻; + #𓝼; + #𓝽; + #𓝾; + #𓝿; + #𓞀; + #𓞁; + #𓞂; + #𓞃; + #𓞄; + #𓞅; + #𓞆; + #𓞇; + #𓞈; + #𓞉; + #𓞊; + #𓞋; + #𓞌; + #𓞍; + #𓞎; + #𓞏; + #𓞐; + #𓞑; + #𓞒; + #𓞓; + #𓞔; + #𓞕; + #𓞖; + #𓞗; + #𓞘; + #𓞙; + #𓞚; + #𓞛; + #𓞜; + #𓞝; + #𓞞; + #𓞟; + #𓞠; + #𓞡; + #𓞢; + #𓞣; + #𓞤; + #𓞥; + #𓞦; + #𓞧; + #𓞨; + #𓞩; + #𓞪; + #𓞫; + #𓞬; + #𓞭; + #𓞮; + #𓞯; + #𓞰; + #𓞱; + #𓞲; + #𓞳; + #𓞴; + #𓞵; + #𓞶; + #𓞷; + #𓞸; + #𓞹; + #𓞺; + #𓞻; + #𓞼; + #𓞽; + #𓞾; + #𓞿; + #𓟀; + #𓟁; + #𓟂; + #𓟃; + #𓟄; + #𓟅; + #𓟆; + #𓟇; + #𓟈; + #𓟉; + #𓟊; + #𓟋; + #𓟌; + #𓟍; + #𓟎; + #𓟏; + #𓟐; + #𓟑; + #𓟒; + #𓟓; + #𓟔; + #𓟕; + #𓟖; + #𓟗; + #𓟘; + #𓟙; + #𓟚; + #𓟛; + #𓟜; + #𓟝; + #𓟞; + #𓟟; + #𓟠; + #𓟡; + #𓟢; + #𓟣; + #𓟤; + #𓟥; + #𓟦; + #𓟧; + #𓟨; + #𓟩; + #𓟪; + #𓟫; + #𓟬; + #𓟭; + #𓟮; + #𓟯; + #𓟰; + #𓟱; + #𓟲; + #𓟳; + #𓟴; + #𓟵; + #𓟶; + #𓟷; + #𓟸; + #𓟹; + #𓟺; + #𓟻; + #𓟼; + #𓟽; + #𓟾; + #𓟿; + #𓠀; + #𓠁; + #𓠂; + #𓠃; + #𓠄; + #𓠅; + #𓠆; + #𓠇; + #𓠈; + #𓠉; + #𓠊; + #𓠋; + #𓠌; + #𓠍; + #𓠎; + #𓠏; + #𓠐; + #𓠑; + #𓠒; + #𓠓; + #𓠔; + #𓠕; + #𓠖; + #𓠗; + #𓠘; + #𓠙; + #𓠚; + #𓠛; + #𓠜; + #𓠝; + #𓠞; + #𓠟; + #𓠠; + #𓠡; + #𓠢; + #𓠣; + #𓠤; + #𓠥; + #𓠦; + #𓠧; + #𓠨; + #𓠩; + #𓠪; + #𓠫; + #𓠬; + #𓠭; + #𓠮; + #𓠯; + #𓠰; + #𓠱; + #𓠲; + #𓠳; + #𓠴; + #𓠵; + #𓠶; + #𓠷; + #𓠸; + #𓠹; + #𓠺; + #𓠻; + #𓠼; + #𓠽; + #𓠾; + #𓠿; + #𓡀; + #𓡁; + #𓡂; + #𓡃; + #𓡄; + #𓡅; + #𓡆; + #𓡇; + #𓡈; + #𓡉; + #𓡊; + #𓡋; + #𓡌; + #𓡍; + #𓡎; + #𓡏; + #𓡐; + #𓡑; + #𓡒; + #𓡓; + #𓡔; + #𓡕; + #𓡖; + #𓡗; + #𓡘; + #𓡙; + #𓡚; + #𓡛; + #𓡜; + #𓡝; + #𓡞; + #𓡟; + #𓡠; + #𓡡; + #𓡢; + #𓡣; + #𓡤; + #𓡥; + #𓡦; + #𓡧; + #𓡨; + #𓡩; + #𓡪; + #𓡫; + #𓡬; + #𓡭; + #𓡮; + #𓡯; + #𓡰; + #𓡱; + #𓡲; + #𓡳; + #𓡴; + #𓡵; + #𓡶; + #𓡷; + #𓡸; + #𓡹; + #𓡺; + #𓡻; + #𓡼; + #𓡽; + #𓡾; + #𓡿; + #𓢀; + #𓢁; + #𓢂; + #𓢃; + #𓢄; + #𓢅; + #𓢆; + #𓢇; + #𓢈; + #𓢉; + #𓢊; + #𓢋; + #𓢌; + #𓢍; + #𓢎; + #𓢏; + #𓢐; + #𓢑; + #𓢒; + #𓢓; + #𓢔; + #𓢕; + #𓢖; + #𓢗; + #𓢘; + #𓢙; + #𓢚; + #𓢛; + #𓢜; + #𓢝; + #𓢞; + #𓢟; + #𓢠; + #𓢡; + #𓢢; + #𓢣; + #𓢤; + #𓢥; + #𓢦; + #𓢧; + #𓢨; + #𓢩; + #𓢪; + #𓢫; + #𓢬; + #𓢭; + #𓢮; + #𓢯; + #𓢰; + #𓢱; + #𓢲; + #𓢳; + #𓢴; + #𓢵; + #𓢶; + #𓢷; + #𓢸; + #𓢹; + #𓢺; + #𓢻; + #𓢼; + #𓢽; + #𓢾; + #𓢿; + #𓣀; + #𓣁; + #𓣂; + #𓣃; + #𓣄; + #𓣅; + #𓣆; + #𓣇; + #𓣈; + #𓣉; + #𓣊; + #𓣋; + #𓣌; + #𓣍; + #𓣎; + #𓣏; + #𓣐; + #𓣑; + #𓣒; + #𓣓; + #𓣔; + #𓣕; + #𓣖; + #𓣗; + #𓣘; + #𓣙; + #𓣚; + #𓣛; + #𓣜; + #𓣝; + #𓣞; + #𓣟; + #𓣠; + #𓣡; + #𓣢; + #𓣣; + #𓣤; + #𓣥; + #𓣦; + #𓣧; + #𓣨; + #𓣩; + #𓣪; + #𓣫; + #𓣬; + #𓣭; + #𓣮; + #𓣯; + #𓣰; + #𓣱; + #𓣲; + #𓣳; + #𓣴; + #𓣵; + #𓣶; + #𓣷; + #𓣸; + #𓣹; + #𓣺; + #𓣻; + #𓣼; + #𓣽; + #𓣾; + #𓣿; + #𓤀; + #𓤁; + #𓤂; + #𓤃; + #𓤄; + #𓤅; + #𓤆; + #𓤇; + #𓤈; + #𓤉; + #𓤊; + #𓤋; + #𓤌; + #𓤍; + #𓤎; + #𓤏; + #𓤐; + #𓤑; + #𓤒; + #𓤓; + #𓤔; + #𓤕; + #𓤖; + #𓤗; + #𓤘; + #𓤙; + #𓤚; + #𓤛; + #𓤜; + #𓤝; + #𓤞; + #𓤟; + #𓤠; + #𓤡; + #𓤢; + #𓤣; + #𓤤; + #𓤥; + #𓤦; + #𓤧; + #𓤨; + #𓤩; + #𓤪; + #𓤫; + #𓤬; + #𓤭; + #𓤮; + #𓤯; + #𓤰; + #𓤱; + #𓤲; + #𓤳; + #𓤴; + #𓤵; + #𓤶; + #𓤷; + #𓤸; + #𓤹; + #𓤺; + #𓤻; + #𓤼; + #𓤽; + #𓤾; + #𓤿; + #𓥀; + #𓥁; + #𓥂; + #𓥃; + #𓥄; + #𓥅; + #𓥆; + #𓥇; + #𓥈; + #𓥉; + #𓥊; + #𓥋; + #𓥌; + #𓥍; + #𓥎; + #𓥏; + #𓥐; + #𓥑; + #𓥒; + #𓥓; + #𓥔; + #𓥕; + #𓥖; + #𓥗; + #𓥘; + #𓥙; + #𓥚; + #𓥛; + #𓥜; + #𓥝; + #𓥞; + #𓥟; + #𓥠; + #𓥡; + #𓥢; + #𓥣; + #𓥤; + #𓥥; + #𓥦; + #𓥧; + #𓥨; + #𓥩; + #𓥪; + #𓥫; + #𓥬; + #𓥭; + #𓥮; + #𓥯; + #𓥰; + #𓥱; + #𓥲; + #𓥳; + #𓥴; + #𓥵; + #𓥶; + #𓥷; + #𓥸; + #𓥹; + #𓥺; + #𓥻; + #𓥼; + #𓥽; + #𓥾; + #𓥿; + #𓦀; + #𓦁; + #𓦂; + #𓦃; + #𓦄; + #𓦅; + #𓦆; + #𓦇; + #𓦈; + #𓦉; + #𓦊; + #𓦋; + #𓦌; + #𓦍; + #𓦎; + #𓦏; + #𓦐; + #𓦑; + #𓦒; + #𓦓; + #𓦔; + #𓦕; + #𓦖; + #𓦗; + #𓦘; + #𓦙; + #𓦚; + #𓦛; + #𓦜; + #𓦝; + #𓦞; + #𓦟; + #𓦠; + #𓦡; + #𓦢; + #𓦣; + #𓦤; + #𓦥; + #𓦦; + #𓦧; + #𓦨; + #𓦩; + #𓦪; + #𓦫; + #𓦬; + #𓦭; + #𓦮; + #𓦯; + #𓦰; + #𓦱; + #𓦲; + #𓦳; + #𓦴; + #𓦵; + #𓦶; + #𓦷; + #𓦸; + #𓦹; + #𓦺; + #𓦻; + #𓦼; + #𓦽; + #𓦾; + #𓦿; + #𓧀; + #𓧁; + #𓧂; + #𓧃; + #𓧄; + #𓧅; + #𓧆; + #𓧇; + #𓧈; + #𓧉; + #𓧊; + #𓧋; + #𓧌; + #𓧍; + #𓧎; + #𓧏; + #𓧐; + #𓧑; + #𓧒; + #𓧓; + #𓧔; + #𓧕; + #𓧖; + #𓧗; + #𓧘; + #𓧙; + #𓧚; + #𓧛; + #𓧜; + #𓧝; + #𓧞; + #𓧟; + #𓧠; + #𓧡; + #𓧢; + #𓧣; + #𓧤; + #𓧥; + #𓧦; + #𓧧; + #𓧨; + #𓧩; + #𓧪; + #𓧫; + #𓧬; + #𓧭; + #𓧮; + #𓧯; + #𓧰; + #𓧱; + #𓧲; + #𓧳; + #𓧴; + #𓧵; + #𓧶; + #𓧷; + #𓧸; + #𓧹; + #𓧺; + #𓧻; + #𓧼; + #𓧽; + #𓧾; + #𓧿; + #𓨀; + #𓨁; + #𓨂; + #𓨃; + #𓨄; + #𓨅; + #𓨆; + #𓨇; + #𓨈; + #𓨉; + #𓨊; + #𓨋; + #𓨌; + #𓨍; + #𓨎; + #𓨏; + #𓨐; + #𓨑; + #𓨒; + #𓨓; + #𓨔; + #𓨕; + #𓨖; + #𓨗; + #𓨘; + #𓨙; + #𓨚; + #𓨛; + #𓨜; + #𓨝; + #𓨞; + #𓨟; + #𓨠; + #𓨡; + #𓨢; + #𓨣; + #𓨤; + #𓨥; + #𓨦; + #𓨧; + #𓨨; + #𓨩; + #𓨪; + #𓨫; + #𓨬; + #𓨭; + #𓨮; + #𓨯; + #𓨰; + #𓨱; + #𓨲; + #𓨳; + #𓨴; + #𓨵; + #𓨶; + #𓨷; + #𓨸; + #𓨹; + #𓨺; + #𓨻; + #𓨼; + #𓨽; + #𓨾; + #𓨿; + #𓩀; + #𓩁; + #𓩂; + #𓩃; + #𓩄; + #𓩅; + #𓩆; + #𓩇; + #𓩈; + #𓩉; + #𓩊; + #𓩋; + #𓩌; + #𓩍; + #𓩎; + #𓩏; + #𓩐; + #𓩑; + #𓩒; + #𓩓; + #𓩔; + #𓩕; + #𓩖; + #𓩗; + #𓩘; + #𓩙; + #𓩚; + #𓩛; + #𓩜; + #𓩝; + #𓩞; + #𓩟; + #𓩠; + #𓩡; + #𓩢; + #𓩣; + #𓩤; + #𓩥; + #𓩦; + #𓩧; + #𓩨; + #𓩩; + #𓩪; + #𓩫; + #𓩬; + #𓩭; + #𓩮; + #𓩯; + #𓩰; + #𓩱; + #𓩲; + #𓩳; + #𓩴; + #𓩵; + #𓩶; + #𓩷; + #𓩸; + #𓩹; + #𓩺; + #𓩻; + #𓩼; + #𓩽; + #𓩾; + #𓩿; + #𓪀; + #𓪁; + #𓪂; + #𓪃; + #𓪄; + #𓪅; + #𓪆; + #𓪇; + #𓪈; + #𓪉; + #𓪊; + #𓪋; + #𓪌; + #𓪍; + #𓪎; + #𓪏; + #𓪐; + #𓪑; + #𓪒; + #𓪓; + #𓪔; + #𓪕; + #𓪖; + #𓪗; + #𓪘; + #𓪙; + #𓪚; + #𓪛; + #𓪜; + #𓪝; + #𓪞; + #𓪟; + #𓪠; + #𓪡; + #𓪢; + #𓪣; + #𓪤; + #𓪥; + #𓪦; + #𓪧; + #𓪨; + #𓪩; + #𓪪; + #𓪫; + #𓪬; + #𓪭; + #𓪮; + #𓪯; + #𓪰; + #𓪱; + #𓪲; + #𓪳; + #𓪴; + #𓪵; + #𓪶; + #𓪷; + #𓪸; + #𓪹; + #𓪺; + #𓪻; + #𓪼; + #𓪽; + #𓪾; + #𓪿; + #𓫀; + #𓫁; + #𓫂; + #𓫃; + #𓫄; + #𓫅; + #𓫆; + #𓫇; + #𓫈; + #𓫉; + #𓫊; + #𓫋; + #𓫌; + #𓫍; + #𓫎; + #𓫏; + #𓫐; + #𓫑; + #𓫒; + #𓫓; + #𓫔; + #𓫕; + #𓫖; + #𓫗; + #𓫘; + #𓫙; + #𓫚; + #𓫛; + #𓫜; + #𓫝; + #𓫞; + #𓫟; + #𓫠; + #𓫡; + #𓫢; + #𓫣; + #𓫤; + #𓫥; + #𓫦; + #𓫧; + #𓫨; + #𓫩; + #𓫪; + #𓫫; + #𓫬; + #𓫭; + #𓫮; + #𓫯; + #𓫰; + #𓫱; + #𓫲; + #𓫳; + #𓫴; + #𓫵; + #𓫶; + #𓫷; + #𓫸; + #𓫹; + #𓫺; + #𓫻; + #𓫼; + #𓫽; + #𓫾; + #𓫿; + #𓬀; + #𓬁; + #𓬂; + #𓬃; + #𓬄; + #𓬅; + #𓬆; + #𓬇; + #𓬈; + #𓬉; + #𓬊; + #𓬋; + #𓬌; + #𓬍; + #𓬎; + #𓬏; + #𓬐; + #𓬑; + #𓬒; + #𓬓; + #𓬔; + #𓬕; + #𓬖; + #𓬗; + #𓬘; + #𓬙; + #𓬚; + #𓬛; + #𓬜; + #𓬝; + #𓬞; + #𓬟; + #𓬠; + #𓬡; + #𓬢; + #𓬣; + #𓬤; + #𓬥; + #𓬦; + #𓬧; + #𓬨; + #𓬩; + #𓬪; + #𓬫; + #𓬬; + #𓬭; + #𓬮; + #𓬯; + #𓬰; + #𓬱; + #𓬲; + #𓬳; + #𓬴; + #𓬵; + #𓬶; + #𓬷; + #𓬸; + #𓬹; + #𓬺; + #𓬻; + #𓬼; + #𓬽; + #𓬾; + #𓬿; + #𓭀; + #𓭁; + #𓭂; + #𓭃; + #𓭄; + #𓭅; + #𓭆; + #𓭇; + #𓭈; + #𓭉; + #𓭊; + #𓭋; + #𓭌; + #𓭍; + #𓭎; + #𓭏; + #𓭐; + #𓭑; + #𓭒; + #𓭓; + #𓭔; + #𓭕; + #𓭖; + #𓭗; + #𓭘; + #𓭙; + #𓭚; + #𓭛; + #𓭜; + #𓭝; + #𓭞; + #𓭟; + #𓭠; + #𓭡; + #𓭢; + #𓭣; + #𓭤; + #𓭥; + #𓭦; + #𓭧; + #𓭨; + #𓭩; + #𓭪; + #𓭫; + #𓭬; + #𓭭; + #𓭮; + #𓭯; + #𓭰; + #𓭱; + #𓭲; + #𓭳; + #𓭴; + #𓭵; + #𓭶; + #𓭷; + #𓭸; + #𓭹; + #𓭺; + #𓭻; + #𓭼; + #𓭽; + #𓭾; + #𓭿; + #𓮀; + #𓮁; + #𓮂; + #𓮃; + #𓮄; + #𓮅; + #𓮆; + #𓮇; + #𓮈; + #𓮉; + #𓮊; + #𓮋; + #𓮌; + #𓮍; + #𓮎; + #𓮏; + #𓮐; + #𓮑; + #𓮒; + #𓮓; + #𓮔; + #𓮕; + #𓮖; + #𓮗; + #𓮘; + #𓮙; + #𓮚; + #𓮛; + #𓮜; + #𓮝; + #𓮞; + #𓮟; + #𓮠; + #𓮡; + #𓮢; + #𓮣; + #𓮤; + #𓮥; + #𓮦; + #𓮧; + #𓮨; + #𓮩; + #𓮪; + #𓮫; + #𓮬; + #𓮭; + #𓮮; + #𓮯; + #𓮰; + #𓮱; + #𓮲; + #𓮳; + #𓮴; + #𓮵; + #𓮶; + #𓮷; + #𓮸; + #𓮹; + #𓮺; + #𓮻; + #𓮼; + #𓮽; + #𓮾; + #𓮿; + #𓯀; + #𓯁; + #𓯂; + #𓯃; + #𓯄; + #𓯅; + #𓯆; + #𓯇; + #𓯈; + #𓯉; + #𓯊; + #𓯋; + #𓯌; + #𓯍; + #𓯎; + #𓯏; + #𓯐; + #𓯑; + #𓯒; + #𓯓; + #𓯔; + #𓯕; + #𓯖; + #𓯗; + #𓯘; + #𓯙; + #𓯚; + #𓯛; + #𓯜; + #𓯝; + #𓯞; + #𓯟; + #𓯠; + #𓯡; + #𓯢; + #𓯣; + #𓯤; + #𓯥; + #𓯦; + #𓯧; + #𓯨; + #𓯩; + #𓯪; + #𓯫; + #𓯬; + #𓯭; + #𓯮; + #𓯯; + #𓯰; + #𓯱; + #𓯲; + #𓯳; + #𓯴; + #𓯵; + #𓯶; + #𓯷; + #𓯸; + #𓯹; + #𓯺; + #𓯻; + #𓯼; + #𓯽; + #𓯾; + #𓯿; + #𓰀; + #𓰁; + #𓰂; + #𓰃; + #𓰄; + #𓰅; + #𓰆; + #𓰇; + #𓰈; + #𓰉; + #𓰊; + #𓰋; + #𓰌; + #𓰍; + #𓰎; + #𓰏; + #𓰐; + #𓰑; + #𓰒; + #𓰓; + #𓰔; + #𓰕; + #𓰖; + #𓰗; + #𓰘; + #𓰙; + #𓰚; + #𓰛; + #𓰜; + #𓰝; + #𓰞; + #𓰟; + #𓰠; + #𓰡; + #𓰢; + #𓰣; + #𓰤; + #𓰥; + #𓰦; + #𓰧; + #𓰨; + #𓰩; + #𓰪; + #𓰫; + #𓰬; + #𓰭; + #𓰮; + #𓰯; + #𓰰; + #𓰱; + #𓰲; + #𓰳; + #𓰴; + #𓰵; + #𓰶; + #𓰷; + #𓰸; + #𓰹; + #𓰺; + #𓰻; + #𓰼; + #𓰽; + #𓰾; + #𓰿; + #𓱀; + #𓱁; + #𓱂; + #𓱃; + #𓱄; + #𓱅; + #𓱆; + #𓱇; + #𓱈; + #𓱉; + #𓱊; + #𓱋; + #𓱌; + #𓱍; + #𓱎; + #𓱏; + #𓱐; + #𓱑; + #𓱒; + #𓱓; + #𓱔; + #𓱕; + #𓱖; + #𓱗; + #𓱘; + #𓱙; + #𓱚; + #𓱛; + #𓱜; + #𓱝; + #𓱞; + #𓱟; + #𓱠; + #𓱡; + #𓱢; + #𓱣; + #𓱤; + #𓱥; + #𓱦; + #𓱧; + #𓱨; + #𓱩; + #𓱪; + #𓱫; + #𓱬; + #𓱭; + #𓱮; + #𓱯; + #𓱰; + #𓱱; + #𓱲; + #𓱳; + #𓱴; + #𓱵; + #𓱶; + #𓱷; + #𓱸; + #𓱹; + #𓱺; + #𓱻; + #𓱼; + #𓱽; + #𓱾; + #𓱿; + #𓲀; + #𓲁; + #𓲂; + #𓲃; + #𓲄; + #𓲅; + #𓲆; + #𓲇; + #𓲈; + #𓲉; + #𓲊; + #𓲋; + #𓲌; + #𓲍; + #𓲎; + #𓲏; + #𓲐; + #𓲑; + #𓲒; + #𓲓; + #𓲔; + #𓲕; + #𓲖; + #𓲗; + #𓲘; + #𓲙; + #𓲚; + #𓲛; + #𓲜; + #𓲝; + #𓲞; + #𓲟; + #𓲠; + #𓲡; + #𓲢; + #𓲣; + #𓲤; + #𓲥; + #𓲦; + #𓲧; + #𓲨; + #𓲩; + #𓲪; + #𓲫; + #𓲬; + #𓲭; + #𓲮; + #𓲯; + #𓲰; + #𓲱; + #𓲲; + #𓲳; + #𓲴; + #𓲵; + #𓲶; + #𓲷; + #𓲸; + #𓲹; + #𓲺; + #𓲻; + #𓲼; + #𓲽; + #𓲾; + #𓲿; + #𓳀; + #𓳁; + #𓳂; + #𓳃; + #𓳄; + #𓳅; + #𓳆; + #𓳇; + #𓳈; + #𓳉; + #𓳊; + #𓳋; + #𓳌; + #𓳍; + #𓳎; + #𓳏; + #𓳐; + #𓳑; + #𓳒; + #𓳓; + #𓳔; + #𓳕; + #𓳖; + #𓳗; + #𓳘; + #𓳙; + #𓳚; + #𓳛; + #𓳜; + #𓳝; + #𓳞; + #𓳟; + #𓳠; + #𓳡; + #𓳢; + #𓳣; + #𓳤; + #𓳥; + #𓳦; + #𓳧; + #𓳨; + #𓳩; + #𓳪; + #𓳫; + #𓳬; + #𓳭; + #𓳮; + #𓳯; + #𓳰; + #𓳱; + #𓳲; + #𓳳; + #𓳴; + #𓳵; + #𓳶; + #𓳷; + #𓳸; + #𓳹; + #𓳺; + #𓳻; + #𓳼; + #𓳽; + #𓳾; + #𓳿; + #𓴀; + #𓴁; + #𓴂; + #𓴃; + #𓴄; + #𓴅; + #𓴆; + #𓴇; + #𓴈; + #𓴉; + #𓴊; + #𓴋; + #𓴌; + #𓴍; + #𓴎; + #𓴏; + #𓴐; + #𓴑; + #𓴒; + #𓴓; + #𓴔; + #𓴕; + #𓴖; + #𓴗; + #𓴘; + #𓴙; + #𓴚; + #𓴛; + #𓴜; + #𓴝; + #𓴞; + #𓴟; + #𓴠; + #𓴡; + #𓴢; + #𓴣; + #𓴤; + #𓴥; + #𓴦; + #𓴧; + #𓴨; + #𓴩; + #𓴪; + #𓴫; + #𓴬; + #𓴭; + #𓴮; + #𓴯; + #𓴰; + #𓴱; + #𓴲; + #𓴳; + #𓴴; + #𓴵; + #𓴶; + #𓴷; + #𓴸; + #𓴹; + #𓴺; + #𓴻; + #𓴼; + #𓴽; + #𓴾; + #𓴿; + #𓵀; + #𓵁; + #𓵂; + #𓵃; + #𓵄; + #𓵅; + #𓵆; + #𓵇; + #𓵈; + #𓵉; + #𓵊; + #𓵋; + #𓵌; + #𓵍; + #𓵎; + #𓵏; + #𓵐; + #𓵑; + #𓵒; + #𓵓; + #𓵔; + #𓵕; + #𓵖; + #𓵗; + #𓵘; + #𓵙; + #𓵚; + #𓵛; + #𓵜; + #𓵝; + #𓵞; + #𓵟; + #𓵠; + #𓵡; + #𓵢; + #𓵣; + #𓵤; + #𓵥; + #𓵦; + #𓵧; + #𓵨; + #𓵩; + #𓵪; + #𓵫; + #𓵬; + #𓵭; + #𓵮; + #𓵯; + #𓵰; + #𓵱; + #𓵲; + #𓵳; + #𓵴; + #𓵵; + #𓵶; + #𓵷; + #𓵸; + #𓵹; + #𓵺; + #𓵻; + #𓵼; + #𓵽; + #𓵾; + #𓵿; + #𓶀; + #𓶁; + #𓶂; + #𓶃; + #𓶄; + #𓶅; + #𓶆; + #𓶇; + #𓶈; + #𓶉; + #𓶊; + #𓶋; + #𓶌; + #𓶍; + #𓶎; + #𓶏; + #𓶐; + #𓶑; + #𓶒; + #𓶓; + #𓶔; + #𓶕; + #𓶖; + #𓶗; + #𓶘; + #𓶙; + #𓶚; + #𓶛; + #𓶜; + #𓶝; + #𓶞; + #𓶟; + #𓶠; + #𓶡; + #𓶢; + #𓶣; + #𓶤; + #𓶥; + #𓶦; + #𓶧; + #𓶨; + #𓶩; + #𓶪; + #𓶫; + #𓶬; + #𓶭; + #𓶮; + #𓶯; + #𓶰; + #𓶱; + #𓶲; + #𓶳; + #𓶴; + #𓶵; + #𓶶; + #𓶷; + #𓶸; + #𓶹; + #𓶺; + #𓶻; + #𓶼; + #𓶽; + #𓶾; + #𓶿; + #𓷀; + #𓷁; + #𓷂; + #𓷃; + #𓷄; + #𓷅; + #𓷆; + #𓷇; + #𓷈; + #𓷉; + #𓷊; + #𓷋; + #𓷌; + #𓷍; + #𓷎; + #𓷏; + #𓷐; + #𓷑; + #𓷒; + #𓷓; + #𓷔; + #𓷕; + #𓷖; + #𓷗; + #𓷘; + #𓷙; + #𓷚; + #𓷛; + #𓷜; + #𓷝; + #𓷞; + #𓷟; + #𓷠; + #𓷡; + #𓷢; + #𓷣; + #𓷤; + #𓷥; + #𓷦; + #𓷧; + #𓷨; + #𓷩; + #𓷪; + #𓷫; + #𓷬; + #𓷭; + #𓷮; + #𓷯; + #𓷰; + #𓷱; + #𓷲; + #𓷳; + #𓷴; + #𓷵; + #𓷶; + #𓷷; + #𓷸; + #𓷹; + #𓷺; + #𓷻; + #𓷼; + #𓷽; + #𓷾; + #𓷿; + #𓸀; + #𓸁; + #𓸂; + #𓸃; + #𓸄; + #𓸅; + #𓸆; + #𓸇; + #𓸈; + #𓸉; + #𓸊; + #𓸋; + #𓸌; + #𓸍; + #𓸎; + #𓸏; + #𓸐; + #𓸑; + #𓸒; + #𓸓; + #𓸔; + #𓸕; + #𓸖; + #𓸗; + #𓸘; + #𓸙; + #𓸚; + #𓸛; + #𓸜; + #𓸝; + #𓸞; + #𓸟; + #𓸠; + #𓸡; + #𓸢; + #𓸣; + #𓸤; + #𓸥; + #𓸦; + #𓸧; + #𓸨; + #𓸩; + #𓸪; + #𓸫; + #𓸬; + #𓸭; + #𓸮; + #𓸯; + #𓸰; + #𓸱; + #𓸲; + #𓸳; + #𓸴; + #𓸵; + #𓸶; + #𓸷; + #𓸸; + #𓸹; + #𓸺; + #𓸻; + #𓸼; + #𓸽; + #𓸾; + #𓸿; + #𓹀; + #𓹁; + #𓹂; + #𓹃; + #𓹄; + #𓹅; + #𓹆; + #𓹇; + #𓹈; + #𓹉; + #𓹊; + #𓹋; + #𓹌; + #𓹍; + #𓹎; + #𓹏; + #𓹐; + #𓹑; + #𓹒; + #𓹓; + #𓹔; + #𓹕; + #𓹖; + #𓹗; + #𓹘; + #𓹙; + #𓹚; + #𓹛; + #𓹜; + #𓹝; + #𓹞; + #𓹟; + #𓹠; + #𓹡; + #𓹢; + #𓹣; + #𓹤; + #𓹥; + #𓹦; + #𓹧; + #𓹨; + #𓹩; + #𓹪; + #𓹫; + #𓹬; + #𓹭; + #𓹮; + #𓹯; + #𓹰; + #𓹱; + #𓹲; + #𓹳; + #𓹴; + #𓹵; + #𓹶; + #𓹷; + #𓹸; + #𓹹; + #𓹺; + #𓹻; + #𓹼; + #𓹽; + #𓹾; + #𓹿; + #𓺀; + #𓺁; + #𓺂; + #𓺃; + #𓺄; + #𓺅; + #𓺆; + #𓺇; + #𓺈; + #𓺉; + #𓺊; + #𓺋; + #𓺌; + #𓺍; + #𓺎; + #𓺏; + #𓺐; + #𓺑; + #𓺒; + #𓺓; + #𓺔; + #𓺕; + #𓺖; + #𓺗; + #𓺘; + #𓺙; + #𓺚; + #𓺛; + #𓺜; + #𓺝; + #𓺞; + #𓺟; + #𓺠; + #𓺡; + #𓺢; + #𓺣; + #𓺤; + #𓺥; + #𓺦; + #𓺧; + #𓺨; + #𓺩; + #𓺪; + #𓺫; + #𓺬; + #𓺭; + #𓺮; + #𓺯; + #𓺰; + #𓺱; + #𓺲; + #𓺳; + #𓺴; + #𓺵; + #𓺶; + #𓺷; + #𓺸; + #𓺹; + #𓺺; + #𓺻; + #𓺼; + #𓺽; + #𓺾; + #𓺿; + #𓻀; + #𓻁; + #𓻂; + #𓻃; + #𓻄; + #𓻅; + #𓻆; + #𓻇; + #𓻈; + #𓻉; + #𓻊; + #𓻋; + #𓻌; + #𓻍; + #𓻎; + #𓻏; + #𓻐; + #𓻑; + #𓻒; + #𓻓; + #𓻔; + #𓻕; + #𓻖; + #𓻗; + #𓻘; + #𓻙; + #𓻚; + #𓻛; + #𓻜; + #𓻝; + #𓻞; + #𓻟; + #𓻠; + #𓻡; + #𓻢; + #𓻣; + #𓻤; + #𓻥; + #𓻦; + #𓻧; + #𓻨; + #𓻩; + #𓻪; + #𓻫; + #𓻬; + #𓻭; + #𓻮; + #𓻯; + #𓻰; + #𓻱; + #𓻲; + #𓻳; + #𓻴; + #𓻵; + #𓻶; + #𓻷; + #𓻸; + #𓻹; + #𓻺; + #𓻻; + #𓻼; + #𓻽; + #𓻾; + #𓻿; + #𓼀; + #𓼁; + #𓼂; + #𓼃; + #𓼄; + #𓼅; + #𓼆; + #𓼇; + #𓼈; + #𓼉; + #𓼊; + #𓼋; + #𓼌; + #𓼍; + #𓼎; + #𓼏; + #𓼐; + #𓼑; + #𓼒; + #𓼓; + #𓼔; + #𓼕; + #𓼖; + #𓼗; + #𓼘; + #𓼙; + #𓼚; + #𓼛; + #𓼜; + #𓼝; + #𓼞; + #𓼟; + #𓼠; + #𓼡; + #𓼢; + #𓼣; + #𓼤; + #𓼥; + #𓼦; + #𓼧; + #𓼨; + #𓼩; + #𓼪; + #𓼫; + #𓼬; + #𓼭; + #𓼮; + #𓼯; + #𓼰; + #𓼱; + #𓼲; + #𓼳; + #𓼴; + #𓼵; + #𓼶; + #𓼷; + #𓼸; + #𓼹; + #𓼺; + #𓼻; + #𓼼; + #𓼽; + #𓼾; + #𓼿; + #𓽀; + #𓽁; + #𓽂; + #𓽃; + #𓽄; + #𓽅; + #𓽆; + #𓽇; + #𓽈; + #𓽉; + #𓽊; + #𓽋; + #𓽌; + #𓽍; + #𓽎; + #𓽏; + #𓽐; + #𓽑; + #𓽒; + #𓽓; + #𓽔; + #𓽕; + #𓽖; + #𓽗; + #𓽘; + #𓽙; + #𓽚; + #𓽛; + #𓽜; + #𓽝; + #𓽞; + #𓽟; + #𓽠; + #𓽡; + #𓽢; + #𓽣; + #𓽤; + #𓽥; + #𓽦; + #𓽧; + #𓽨; + #𓽩; + #𓽪; + #𓽫; + #𓽬; + #𓽭; + #𓽮; + #𓽯; + #𓽰; + #𓽱; + #𓽲; + #𓽳; + #𓽴; + #𓽵; + #𓽶; + #𓽷; + #𓽸; + #𓽹; + #𓽺; + #𓽻; + #𓽼; + #𓽽; + #𓽾; + #𓽿; + #𓾀; + #𓾁; + #𓾂; + #𓾃; + #𓾄; + #𓾅; + #𓾆; + #𓾇; + #𓾈; + #𓾉; + #𓾊; + #𓾋; + #𓾌; + #𓾍; + #𓾎; + #𓾏; + #𓾐; + #𓾑; + #𓾒; + #𓾓; + #𓾔; + #𓾕; + #𓾖; + #𓾗; + #𓾘; + #𓾙; + #𓾚; + #𓾛; + #𓾜; + #𓾝; + #𓾞; + #𓾟; + #𓾠; + #𓾡; + #𓾢; + #𓾣; + #𓾤; + #𓾥; + #𓾦; + #𓾧; + #𓾨; + #𓾩; + #𓾪; + #𓾫; + #𓾬; + #𓾭; + #𓾮; + #𓾯; + #𓾰; + #𓾱; + #𓾲; + #𓾳; + #𓾴; + #𓾵; + #𓾶; + #𓾷; + #𓾸; + #𓾹; + #𓾺; + #𓾻; + #𓾼; + #𓾽; + #𓾾; + #𓾿; + #𓿀; + #𓿁; + #𓿂; + #𓿃; + #𓿄; + #𓿅; + #𓿆; + #𓿇; + #𓿈; + #𓿉; + #𓿊; + #𓿋; + #𓿌; + #𓿍; + #𓿎; + #𓿏; + #𓿐; + #𓿑; + #𓿒; + #𓿓; + #𓿔; + #𓿕; + #𓿖; + #𓿗; + #𓿘; + #𓿙; + #𓿚; + #𓿛; + #𓿜; + #𓿝; + #𓿞; + #𓿟; + #𓿠; + #𓿡; + #𓿢; + #𓿣; + #𓿤; + #𓿥; + #𓿦; + #𓿧; + #𓿨; + #𓿩; + #𓿪; + #𓿫; + #𓿬; + #𓿭; + #𓿮; + #𓿯; + #𓿰; + #𓿱; + #𓿲; + #𓿳; + #𓿴; + #𓿵; + #𓿶; + #𓿷; + #𓿸; + #𓿹; + #𓿺; + #𓿻; + #𓿼; + #𓿽; + #𓿾; + #𓿿; + #𔀀; + #𔀁; + #𔀂; + #𔀃; + #𔀄; + #𔀅; + #𔀆; + #𔀇; + #𔀈; + #𔀉; + #𔀊; + #𔀋; + #𔀌; + #𔀍; + #𔀎; + #𔀏; + #𔀐; + #𔀑; + #𔀒; + #𔀓; + #𔀔; + #𔀕; + #𔀖; + #𔀗; + #𔀘; + #𔀙; + #𔀚; + #𔀛; + #𔀜; + #𔀝; + #𔀞; + #𔀟; + #𔀠; + #𔀡; + #𔀢; + #𔀣; + #𔀤; + #𔀥; + #𔀦; + #𔀧; + #𔀨; + #𔀩; + #𔀪; + #𔀫; + #𔀬; + #𔀭; + #𔀮; + #𔀯; + #𔀰; + #𔀱; + #𔀲; + #𔀳; + #𔀴; + #𔀵; + #𔀶; + #𔀷; + #𔀸; + #𔀹; + #𔀺; + #𔀻; + #𔀼; + #𔀽; + #𔀾; + #𔀿; + #𔁀; + #𔁁; + #𔁂; + #𔁃; + #𔁄; + #𔁅; + #𔁆; + #𔁇; + #𔁈; + #𔁉; + #𔁊; + #𔁋; + #𔁌; + #𔁍; + #𔁎; + #𔁏; + #𔁐; + #𔁑; + #𔁒; + #𔁓; + #𔁔; + #𔁕; + #𔁖; + #𔁗; + #𔁘; + #𔁙; + #𔁚; + #𔁛; + #𔁜; + #𔁝; + #𔁞; + #𔁟; + #𔁠; + #𔁡; + #𔁢; + #𔁣; + #𔁤; + #𔁥; + #𔁦; + #𔁧; + #𔁨; + #𔁩; + #𔁪; + #𔁫; + #𔁬; + #𔁭; + #𔁮; + #𔁯; + #𔁰; + #𔁱; + #𔁲; + #𔁳; + #𔁴; + #𔁵; + #𔁶; + #𔁷; + #𔁸; + #𔁹; + #𔁺; + #𔁻; + #𔁼; + #𔁽; + #𔁾; + #𔁿; + #𔂀; + #𔂁; + #𔂂; + #𔂃; + #𔂄; + #𔂅; + #𔂆; + #𔂇; + #𔂈; + #𔂉; + #𔂊; + #𔂋; + #𔂌; + #𔂍; + #𔂎; + #𔂏; + #𔂐; + #𔂑; + #𔂒; + #𔂓; + #𔂔; + #𔂕; + #𔂖; + #𔂗; + #𔂘; + #𔂙; + #𔂚; + #𔂛; + #𔂜; + #𔂝; + #𔂞; + #𔂟; + #𔂠; + #𔂡; + #𔂢; + #𔂣; + #𔂤; + #𔂥; + #𔂦; + #𔂧; + #𔂨; + #𔂩; + #𔂪; + #𔂫; + #𔂬; + #𔂭; + #𔂮; + #𔂯; + #𔂰; + #𔂱; + #𔂲; + #𔂳; + #𔂴; + #𔂵; + #𔂶; + #𔂷; + #𔂸; + #𔂹; + #𔂺; + #𔂻; + #𔂼; + #𔂽; + #𔂾; + #𔂿; + #𔃀; + #𔃁; + #𔃂; + #𔃃; + #𔃄; + #𔃅; + #𔃆; + #𔃇; + #𔃈; + #𔃉; + #𔃊; + #𔃋; + #𔃌; + #𔃍; + #𔃎; + #𔃏; + #𔃐; + #𔃑; + #𔃒; + #𔃓; + #𔃔; + #𔃕; + #𔃖; + #𔃗; + #𔃘; + #𔃙; + #𔃚; + #𔃛; + #𔃜; + #𔃝; + #𔃞; + #𔃟; + #𔃠; + #𔃡; + #𔃢; + #𔃣; + #𔃤; + #𔃥; + #𔃦; + #𔃧; + #𔃨; + #𔃩; + #𔃪; + #𔃫; + #𔃬; + #𔃭; + #𔃮; + #𔃯; + #𔃰; + #𔃱; + #𔃲; + #𔃳; + #𔃴; + #𔃵; + #𔃶; + #𔃷; + #𔃸; + #𔃹; + #𔃺; + #𔃻; + #𔃼; + #𔃽; + #𔃾; + #𔃿; + #𔄀; + #𔄁; + #𔄂; + #𔄃; + #𔄄; + #𔄅; + #𔄆; + #𔄇; + #𔄈; + #𔄉; + #𔄊; + #𔄋; + #𔄌; + #𔄍; + #𔄎; + #𔄏; + #𔄐; + #𔄑; + #𔄒; + #𔄓; + #𔄔; + #𔄕; + #𔄖; + #𔄗; + #𔄘; + #𔄙; + #𔄚; + #𔄛; + #𔄜; + #𔄝; + #𔄞; + #𔄟; + #𔄠; + #𔄡; + #𔄢; + #𔄣; + #𔄤; + #𔄥; + #𔄦; + #𔄧; + #𔄨; + #𔄩; + #𔄪; + #𔄫; + #𔄬; + #𔄭; + #𔄮; + #𔄯; + #𔄰; + #𔄱; + #𔄲; + #𔄳; + #𔄴; + #𔄵; + #𔄶; + #𔄷; + #𔄸; + #𔄹; + #𔄺; + #𔄻; + #𔄼; + #𔄽; + #𔄾; + #𔄿; + #𔅀; + #𔅁; + #𔅂; + #𔅃; + #𔅄; + #𔅅; + #𔅆; + #𔅇; + #𔅈; + #𔅉; + #𔅊; + #𔅋; + #𔅌; + #𔅍; + #𔅎; + #𔅏; + #𔅐; + #𔅑; + #𔅒; + #𔅓; + #𔅔; + #𔅕; + #𔅖; + #𔅗; + #𔅘; + #𔅙; + #𔅚; + #𔅛; + #𔅜; + #𔅝; + #𔅞; + #𔅟; + #𔅠; + #𔅡; + #𔅢; + #𔅣; + #𔅤; + #𔅥; + #𔅦; + #𔅧; + #𔅨; + #𔅩; + #𔅪; + #𔅫; + #𔅬; + #𔅭; + #𔅮; + #𔅯; + #𔅰; + #𔅱; + #𔅲; + #𔅳; + #𔅴; + #𔅵; + #𔅶; + #𔅷; + #𔅸; + #𔅹; + #𔅺; + #𔅻; + #𔅼; + #𔅽; + #𔅾; + #𔅿; + #𔆀; + #𔆁; + #𔆂; + #𔆃; + #𔆄; + #𔆅; + #𔆆; + #𔆇; + #𔆈; + #𔆉; + #𔆊; + #𔆋; + #𔆌; + #𔆍; + #𔆎; + #𔆏; + #𔆐; + #𔆑; + #𔆒; + #𔆓; + #𔆔; + #𔆕; + #𔆖; + #𔆗; + #𔆘; + #𔆙; + #𔆚; + #𔆛; + #𔆜; + #𔆝; + #𔆞; + #𔆟; + #𔆠; + #𔆡; + #𔆢; + #𔆣; + #𔆤; + #𔆥; + #𔆦; + #𔆧; + #𔆨; + #𔆩; + #𔆪; + #𔆫; + #𔆬; + #𔆭; + #𔆮; + #𔆯; + #𔆰; + #𔆱; + #𔆲; + #𔆳; + #𔆴; + #𔆵; + #𔆶; + #𔆷; + #𔆸; + #𔆹; + #𔆺; + #𔆻; + #𔆼; + #𔆽; + #𔆾; + #𔆿; + #𔇀; + #𔇁; + #𔇂; + #𔇃; + #𔇄; + #𔇅; + #𔇆; + #𔇇; + #𔇈; + #𔇉; + #𔇊; + #𔇋; + #𔇌; + #𔇍; + #𔇎; + #𔇏; + #𔇐; + #𔇑; + #𔇒; + #𔇓; + #𔇔; + #𔇕; + #𔇖; + #𔇗; + #𔇘; + #𔇙; + #𔇚; + #𔇛; + #𔇜; + #𔇝; + #𔇞; + #𔇟; + #𔇠; + #𔇡; + #𔇢; + #𔇣; + #𔇤; + #𔇥; + #𔇦; + #𔇧; + #𔇨; + #𔇩; + #𔇪; + #𔇫; + #𔇬; + #𔇭; + #𔇮; + #𔇯; + #𔇰; + #𔇱; + #𔇲; + #𔇳; + #𔇴; + #𔇵; + #𔇶; + #𔇷; + #𔇸; + #𔇹; + #𔇺; + #𔇻; + #𔇼; + #𔇽; + #𔇾; + #𔇿; + #𔈀; + #𔈁; + #𔈂; + #𔈃; + #𔈄; + #𔈅; + #𔈆; + #𔈇; + #𔈈; + #𔈉; + #𔈊; + #𔈋; + #𔈌; + #𔈍; + #𔈎; + #𔈏; + #𔈐; + #𔈑; + #𔈒; + #𔈓; + #𔈔; + #𔈕; + #𔈖; + #𔈗; + #𔈘; + #𔈙; + #𔈚; + #𔈛; + #𔈜; + #𔈝; + #𔈞; + #𔈟; + #𔈠; + #𔈡; + #𔈢; + #𔈣; + #𔈤; + #𔈥; + #𔈦; + #𔈧; + #𔈨; + #𔈩; + #𔈪; + #𔈫; + #𔈬; + #𔈭; + #𔈮; + #𔈯; + #𔈰; + #𔈱; + #𔈲; + #𔈳; + #𔈴; + #𔈵; + #𔈶; + #𔈷; + #𔈸; + #𔈹; + #𔈺; + #𔈻; + #𔈼; + #𔈽; + #𔈾; + #𔈿; + #𔉀; + #𔉁; + #𔉂; + #𔉃; + #𔉄; + #𔉅; + #𔉆; + #𔉇; + #𔉈; + #𔉉; + #𔉊; + #𔉋; + #𔉌; + #𔉍; + #𔉎; + #𔉏; + #𔉐; + #𔉑; + #𔉒; + #𔉓; + #𔉔; + #𔉕; + #𔉖; + #𔉗; + #𔉘; + #𔉙; + #𔉚; + #𔉛; + #𔉜; + #𔉝; + #𔉞; + #𔉟; + #𔉠; + #𔉡; + #𔉢; + #𔉣; + #𔉤; + #𔉥; + #𔉦; + #𔉧; + #𔉨; + #𔉩; + #𔉪; + #𔉫; + #𔉬; + #𔉭; + #𔉮; + #𔉯; + #𔉰; + #𔉱; + #𔉲; + #𔉳; + #𔉴; + #𔉵; + #𔉶; + #𔉷; + #𔉸; + #𔉹; + #𔉺; + #𔉻; + #𔉼; + #𔉽; + #𔉾; + #𔉿; + #𔊀; + #𔊁; + #𔊂; + #𔊃; + #𔊄; + #𔊅; + #𔊆; + #𔊇; + #𔊈; + #𔊉; + #𔊊; + #𔊋; + #𔊌; + #𔊍; + #𔊎; + #𔊏; + #𔊐; + #𔊑; + #𔊒; + #𔊓; + #𔊔; + #𔊕; + #𔊖; + #𔊗; + #𔊘; + #𔊙; + #𔊚; + #𔊛; + #𔊜; + #𔊝; + #𔊞; + #𔊟; + #𔊠; + #𔊡; + #𔊢; + #𔊣; + #𔊤; + #𔊥; + #𔊦; + #𔊧; + #𔊨; + #𔊩; + #𔊪; + #𔊫; + #𔊬; + #𔊭; + #𔊮; + #𔊯; + #𔊰; + #𔊱; + #𔊲; + #𔊳; + #𔊴; + #𔊵; + #𔊶; + #𔊷; + #𔊸; + #𔊹; + #𔊺; + #𔊻; + #𔊼; + #𔊽; + #𔊾; + #𔊿; + #𔋀; + #𔋁; + #𔋂; + #𔋃; + #𔋄; + #𔋅; + #𔋆; + #𔋇; + #𔋈; + #𔋉; + #𔋊; + #𔋋; + #𔋌; + #𔋍; + #𔋎; + #𔋏; + #𔋐; + #𔋑; + #𔋒; + #𔋓; + #𔋔; + #𔋕; + #𔋖; + #𔋗; + #𔋘; + #𔋙; + #𔋚; + #𔋛; + #𔋜; + #𔋝; + #𔋞; + #𔋟; + #𔋠; + #𔋡; + #𔋢; + #𔋣; + #𔋤; + #𔋥; + #𔋦; + #𔋧; + #𔋨; + #𔋩; + #𔋪; + #𔋫; + #𔋬; + #𔋭; + #𔋮; + #𔋯; + #𔋰; + #𔋱; + #𔋲; + #𔋳; + #𔋴; + #𔋵; + #𔋶; + #𔋷; + #𔋸; + #𔋹; + #𔋺; + #𔋻; + #𔋼; + #𔋽; + #𔋾; + #𔋿; + #𔌀; + #𔌁; + #𔌂; + #𔌃; + #𔌄; + #𔌅; + #𔌆; + #𔌇; + #𔌈; + #𔌉; + #𔌊; + #𔌋; + #𔌌; + #𔌍; + #𔌎; + #𔌏; + #𔌐; + #𔌑; + #𔌒; + #𔌓; + #𔌔; + #𔌕; + #𔌖; + #𔌗; + #𔌘; + #𔌙; + #𔌚; + #𔌛; + #𔌜; + #𔌝; + #𔌞; + #𔌟; + #𔌠; + #𔌡; + #𔌢; + #𔌣; + #𔌤; + #𔌥; + #𔌦; + #𔌧; + #𔌨; + #𔌩; + #𔌪; + #𔌫; + #𔌬; + #𔌭; + #𔌮; + #𔌯; + #𔌰; + #𔌱; + #𔌲; + #𔌳; + #𔌴; + #𔌵; + #𔌶; + #𔌷; + #𔌸; + #𔌹; + #𔌺; + #𔌻; + #𔌼; + #𔌽; + #𔌾; + #𔌿; + #𔍀; + #𔍁; + #𔍂; + #𔍃; + #𔍄; + #𔍅; + #𔍆; + #𔍇; + #𔍈; + #𔍉; + #𔍊; + #𔍋; + #𔍌; + #𔍍; + #𔍎; + #𔍏; + #𔍐; + #𔍑; + #𔍒; + #𔍓; + #𔍔; + #𔍕; + #𔍖; + #𔍗; + #𔍘; + #𔍙; + #𔍚; + #𔍛; + #𔍜; + #𔍝; + #𔍞; + #𔍟; + #𔍠; + #𔍡; + #𔍢; + #𔍣; + #𔍤; + #𔍥; + #𔍦; + #𔍧; + #𔍨; + #𔍩; + #𔍪; + #𔍫; + #𔍬; + #𔍭; + #𔍮; + #𔍯; + #𔍰; + #𔍱; + #𔍲; + #𔍳; + #𔍴; + #𔍵; + #𔍶; + #𔍷; + #𔍸; + #𔍹; + #𔍺; + #𔍻; + #𔍼; + #𔍽; + #𔍾; + #𔍿; + #𔎀; + #𔎁; + #𔎂; + #𔎃; + #𔎄; + #𔎅; + #𔎆; + #𔎇; + #𔎈; + #𔎉; + #𔎊; + #𔎋; + #𔎌; + #𔎍; + #𔎎; + #𔎏; + #𔎐; + #𔎑; + #𔎒; + #𔎓; + #𔎔; + #𔎕; + #𔎖; + #𔎗; + #𔎘; + #𔎙; + #𔎚; + #𔎛; + #𔎜; + #𔎝; + #𔎞; + #𔎟; + #𔎠; + #𔎡; + #𔎢; + #𔎣; + #𔎤; + #𔎥; + #𔎦; + #𔎧; + #𔎨; + #𔎩; + #𔎪; + #𔎫; + #𔎬; + #𔎭; + #𔎮; + #𔎯; + #𔎰; + #𔎱; + #𔎲; + #𔎳; + #𔎴; + #𔎵; + #𔎶; + #𔎷; + #𔎸; + #𔎹; + #𔎺; + #𔎻; + #𔎼; + #𔎽; + #𔎾; + #𔎿; + #𔏀; + #𔏁; + #𔏂; + #𔏃; + #𔏄; + #𔏅; + #𔏆; + #𔏇; + #𔏈; + #𔏉; + #𔏊; + #𔏋; + #𔏌; + #𔏍; + #𔏎; + #𔏏; + #𔏐; + #𔏑; + #𔏒; + #𔏓; + #𔏔; + #𔏕; + #𔏖; + #𔏗; + #𔏘; + #𔏙; + #𔏚; + #𔏛; + #𔏜; + #𔏝; + #𔏞; + #𔏟; + #𔏠; + #𔏡; + #𔏢; + #𔏣; + #𔏤; + #𔏥; + #𔏦; + #𔏧; + #𔏨; + #𔏩; + #𔏪; + #𔏫; + #𔏬; + #𔏭; + #𔏮; + #𔏯; + #𔏰; + #𔏱; + #𔏲; + #𔏳; + #𔏴; + #𔏵; + #𔏶; + #𔏷; + #𔏸; + #𔏹; + #𔏺; + #𖄀; + #𖄁; + #𖄂; + #𖄃; + #𖄄; + #𖄅; + #𖄆; + #𖄇; + #𖄈; + #𖄉; + #𖄊; + #𖄋; + #𖄌; + #𖄍; + #𖄎; + #𖄏; + #𖄐; + #𖄑; + #𖄒; + #𖄓; + #𖄔; + #𖄕; + #𖄖; + #𖄗; + #𖄘; + #𖄙; + #𖄚; + #𖄛; + #𖄜; + #𖄝; + #𖵀; + #𖵁; + #𖵂; + #𖵃; + #𖵄; + #𖵅; + #𖵆; + #𖵇; + #𖵈; + #𖵉; + #𖵊; + #𖵋; + #𖵌; + #𖵍; + #𖵎; + #𖵏; + #𖵐; + #𖵑; + #𖵒; + #𖵓; + #𖵔; + #𖵕; + #𖵖; + #𖵗; + #𖵘; + #𖵙; + #𖵚; + #𖵛; + #𖵜; + #𖵝; + #𖵞; + #𖵟; + #𖵠; + #𖵡; + #𖵢; + #𖵣; + #𖵤; + #𖵥; + #𖵦; + #𖵧; + #𖵨; + #𖵩; + #𖵪; + #𖵫; + #𖵬; + #𘳿; + #𞗐; + #𞗑; + #𞗒; + #𞗓; + #𞗔; + #𞗕; + #𞗖; + #𞗗; + #𞗘; + #𞗙; + #𞗚; + #𞗛; + #𞗜; + #𞗝; + #𞗞; + #𞗟; + #𞗠; + #𞗡; + #𞗢; + #𞗣; + #𞗤; + #𞗥; + #𞗦; + #𞗧; + #𞗨; + #𞗩; + #𞗪; + #𞗫; + #𞗬; + #𞗭; + #𞗰; +}; diff --git a/test/language/identifiers/start-unicode-16.0.0-escaped.js b/test/language/identifiers/start-unicode-16.0.0-escaped.js new file mode 100644 index 00000000000..9dd44e149fc --- /dev/null +++ b/test/language/identifiers/start-unicode-16.0.0-escaped.js @@ -0,0 +1,4317 @@ +// Copyright 2024 Mathias Bynens. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +author: Mathias Bynens +esid: sec-names-and-keywords +description: | + Test that Unicode v16.0.0 ID_Start characters are accepted as + identifier start characters in escaped form, i.e. + - \uXXXX or \u{XXXX} for BMP symbols + - \u{XXXXXX} for astral symbols +info: | + Generated by https://github.com/mathiasbynens/caniunicode +---*/ + +var \u1C89; +var \u1C8A; +var \uA7CB; +var \uA7CC; +var \uA7CD; +var \uA7DA; +var \uA7DB; +var \uA7DC; +var \u{105C0}; +var \u{105C1}; +var \u{105C2}; +var \u{105C3}; +var \u{105C4}; +var \u{105C5}; +var \u{105C6}; +var \u{105C7}; +var \u{105C8}; +var \u{105C9}; +var \u{105CA}; +var \u{105CB}; +var \u{105CC}; +var \u{105CD}; +var \u{105CE}; +var \u{105CF}; +var \u{105D0}; +var \u{105D1}; +var \u{105D2}; +var \u{105D3}; +var \u{105D4}; +var \u{105D5}; +var \u{105D6}; +var \u{105D7}; +var \u{105D8}; +var \u{105D9}; +var \u{105DA}; +var \u{105DB}; +var \u{105DC}; +var \u{105DD}; +var \u{105DE}; +var \u{105DF}; +var \u{105E0}; +var \u{105E1}; +var \u{105E2}; +var \u{105E3}; +var \u{105E4}; +var \u{105E5}; +var \u{105E6}; +var \u{105E7}; +var \u{105E8}; +var \u{105E9}; +var \u{105EA}; +var \u{105EB}; +var \u{105EC}; +var \u{105ED}; +var \u{105EE}; +var \u{105EF}; +var \u{105F0}; +var \u{105F1}; +var \u{105F2}; +var \u{105F3}; +var \u{10D4A}; +var \u{10D4B}; +var \u{10D4C}; +var \u{10D4D}; +var \u{10D4E}; +var \u{10D4F}; +var \u{10D50}; +var \u{10D51}; +var \u{10D52}; +var \u{10D53}; +var \u{10D54}; +var \u{10D55}; +var \u{10D56}; +var \u{10D57}; +var \u{10D58}; +var \u{10D59}; +var \u{10D5A}; +var \u{10D5B}; +var \u{10D5C}; +var \u{10D5D}; +var \u{10D5E}; +var \u{10D5F}; +var \u{10D60}; +var \u{10D61}; +var \u{10D62}; +var \u{10D63}; +var \u{10D64}; +var \u{10D65}; +var \u{10D6F}; +var \u{10D70}; +var \u{10D71}; +var \u{10D72}; +var \u{10D73}; +var \u{10D74}; +var \u{10D75}; +var \u{10D76}; +var \u{10D77}; +var \u{10D78}; +var \u{10D79}; +var \u{10D7A}; +var \u{10D7B}; +var \u{10D7C}; +var \u{10D7D}; +var \u{10D7E}; +var \u{10D7F}; +var \u{10D80}; +var \u{10D81}; +var \u{10D82}; +var \u{10D83}; +var \u{10D84}; +var \u{10D85}; +var \u{10EC2}; +var \u{10EC3}; +var \u{10EC4}; +var \u{11380}; +var \u{11381}; +var \u{11382}; +var \u{11383}; +var \u{11384}; +var \u{11385}; +var \u{11386}; +var \u{11387}; +var \u{11388}; +var \u{11389}; +var \u{1138B}; +var \u{1138E}; +var \u{11390}; +var \u{11391}; +var \u{11392}; +var \u{11393}; +var \u{11394}; +var \u{11395}; +var \u{11396}; +var \u{11397}; +var \u{11398}; +var \u{11399}; +var \u{1139A}; +var \u{1139B}; +var \u{1139C}; +var \u{1139D}; +var \u{1139E}; +var \u{1139F}; +var \u{113A0}; +var \u{113A1}; +var \u{113A2}; +var \u{113A3}; +var \u{113A4}; +var \u{113A5}; +var \u{113A6}; +var \u{113A7}; +var \u{113A8}; +var \u{113A9}; +var \u{113AA}; +var \u{113AB}; +var \u{113AC}; +var \u{113AD}; +var \u{113AE}; +var \u{113AF}; +var \u{113B0}; +var \u{113B1}; +var \u{113B2}; +var \u{113B3}; +var \u{113B4}; +var \u{113B5}; +var \u{113B7}; +var \u{113D1}; +var \u{113D3}; +var \u{11BC0}; +var \u{11BC1}; +var \u{11BC2}; +var \u{11BC3}; +var \u{11BC4}; +var \u{11BC5}; +var \u{11BC6}; +var \u{11BC7}; +var \u{11BC8}; +var \u{11BC9}; +var \u{11BCA}; +var \u{11BCB}; +var \u{11BCC}; +var \u{11BCD}; +var \u{11BCE}; +var \u{11BCF}; +var \u{11BD0}; +var \u{11BD1}; +var \u{11BD2}; +var \u{11BD3}; +var \u{11BD4}; +var \u{11BD5}; +var \u{11BD6}; +var \u{11BD7}; +var \u{11BD8}; +var \u{11BD9}; +var \u{11BDA}; +var \u{11BDB}; +var \u{11BDC}; +var \u{11BDD}; +var \u{11BDE}; +var \u{11BDF}; +var \u{11BE0}; +var \u{13460}; +var \u{13461}; +var \u{13462}; +var \u{13463}; +var \u{13464}; +var \u{13465}; +var \u{13466}; +var \u{13467}; +var \u{13468}; +var \u{13469}; +var \u{1346A}; +var \u{1346B}; +var \u{1346C}; +var \u{1346D}; +var \u{1346E}; +var \u{1346F}; +var \u{13470}; +var \u{13471}; +var \u{13472}; +var \u{13473}; +var \u{13474}; +var \u{13475}; +var \u{13476}; +var \u{13477}; +var \u{13478}; +var \u{13479}; +var \u{1347A}; +var \u{1347B}; +var \u{1347C}; +var \u{1347D}; +var \u{1347E}; +var \u{1347F}; +var \u{13480}; +var \u{13481}; +var \u{13482}; +var \u{13483}; +var \u{13484}; +var \u{13485}; +var \u{13486}; +var \u{13487}; +var \u{13488}; +var \u{13489}; +var \u{1348A}; +var \u{1348B}; +var \u{1348C}; +var \u{1348D}; +var \u{1348E}; +var \u{1348F}; +var \u{13490}; +var \u{13491}; +var \u{13492}; +var \u{13493}; +var \u{13494}; +var \u{13495}; +var \u{13496}; +var \u{13497}; +var \u{13498}; +var \u{13499}; +var \u{1349A}; +var \u{1349B}; +var \u{1349C}; +var \u{1349D}; +var \u{1349E}; +var \u{1349F}; +var \u{134A0}; +var \u{134A1}; +var \u{134A2}; +var \u{134A3}; +var \u{134A4}; +var \u{134A5}; +var \u{134A6}; +var \u{134A7}; +var \u{134A8}; +var \u{134A9}; +var \u{134AA}; +var \u{134AB}; +var \u{134AC}; +var \u{134AD}; +var \u{134AE}; +var \u{134AF}; +var \u{134B0}; +var \u{134B1}; +var \u{134B2}; +var \u{134B3}; +var \u{134B4}; +var \u{134B5}; +var \u{134B6}; +var \u{134B7}; +var \u{134B8}; +var \u{134B9}; +var \u{134BA}; +var \u{134BB}; +var \u{134BC}; +var \u{134BD}; +var \u{134BE}; +var \u{134BF}; +var \u{134C0}; +var \u{134C1}; +var \u{134C2}; +var \u{134C3}; +var \u{134C4}; +var \u{134C5}; +var \u{134C6}; +var \u{134C7}; +var \u{134C8}; +var \u{134C9}; +var \u{134CA}; +var \u{134CB}; +var \u{134CC}; +var \u{134CD}; +var \u{134CE}; +var \u{134CF}; +var \u{134D0}; +var \u{134D1}; +var \u{134D2}; +var \u{134D3}; +var \u{134D4}; +var \u{134D5}; +var \u{134D6}; +var \u{134D7}; +var \u{134D8}; +var \u{134D9}; +var \u{134DA}; +var \u{134DB}; +var \u{134DC}; +var \u{134DD}; +var \u{134DE}; +var \u{134DF}; +var \u{134E0}; +var \u{134E1}; +var \u{134E2}; +var \u{134E3}; +var \u{134E4}; +var \u{134E5}; +var \u{134E6}; +var \u{134E7}; +var \u{134E8}; +var \u{134E9}; +var \u{134EA}; +var \u{134EB}; +var \u{134EC}; +var \u{134ED}; +var \u{134EE}; +var \u{134EF}; +var \u{134F0}; +var \u{134F1}; +var \u{134F2}; +var \u{134F3}; +var \u{134F4}; +var \u{134F5}; +var \u{134F6}; +var \u{134F7}; +var \u{134F8}; +var \u{134F9}; +var \u{134FA}; +var \u{134FB}; +var \u{134FC}; +var \u{134FD}; +var \u{134FE}; +var \u{134FF}; +var \u{13500}; +var \u{13501}; +var \u{13502}; +var \u{13503}; +var \u{13504}; +var \u{13505}; +var \u{13506}; +var \u{13507}; +var \u{13508}; +var \u{13509}; +var \u{1350A}; +var \u{1350B}; +var \u{1350C}; +var \u{1350D}; +var \u{1350E}; +var \u{1350F}; +var \u{13510}; +var \u{13511}; +var \u{13512}; +var \u{13513}; +var \u{13514}; +var \u{13515}; +var \u{13516}; +var \u{13517}; +var \u{13518}; +var \u{13519}; +var \u{1351A}; +var \u{1351B}; +var \u{1351C}; +var \u{1351D}; +var \u{1351E}; +var \u{1351F}; +var \u{13520}; +var \u{13521}; +var \u{13522}; +var \u{13523}; +var \u{13524}; +var \u{13525}; +var \u{13526}; +var \u{13527}; +var \u{13528}; +var \u{13529}; +var \u{1352A}; +var \u{1352B}; +var \u{1352C}; +var \u{1352D}; +var \u{1352E}; +var \u{1352F}; +var \u{13530}; +var \u{13531}; +var \u{13532}; +var \u{13533}; +var \u{13534}; +var \u{13535}; +var \u{13536}; +var \u{13537}; +var \u{13538}; +var \u{13539}; +var \u{1353A}; +var \u{1353B}; +var \u{1353C}; +var \u{1353D}; +var \u{1353E}; +var \u{1353F}; +var \u{13540}; +var \u{13541}; +var \u{13542}; +var \u{13543}; +var \u{13544}; +var \u{13545}; +var \u{13546}; +var \u{13547}; +var \u{13548}; +var \u{13549}; +var \u{1354A}; +var \u{1354B}; +var \u{1354C}; +var \u{1354D}; +var \u{1354E}; +var \u{1354F}; +var \u{13550}; +var \u{13551}; +var \u{13552}; +var \u{13553}; +var \u{13554}; +var \u{13555}; +var \u{13556}; +var \u{13557}; +var \u{13558}; +var \u{13559}; +var \u{1355A}; +var \u{1355B}; +var \u{1355C}; +var \u{1355D}; +var \u{1355E}; +var \u{1355F}; +var \u{13560}; +var \u{13561}; +var \u{13562}; +var \u{13563}; +var \u{13564}; +var \u{13565}; +var \u{13566}; +var \u{13567}; +var \u{13568}; +var \u{13569}; +var \u{1356A}; +var \u{1356B}; +var \u{1356C}; +var \u{1356D}; +var \u{1356E}; +var \u{1356F}; +var \u{13570}; +var \u{13571}; +var \u{13572}; +var \u{13573}; +var \u{13574}; +var \u{13575}; +var \u{13576}; +var \u{13577}; +var \u{13578}; +var \u{13579}; +var \u{1357A}; +var \u{1357B}; +var \u{1357C}; +var \u{1357D}; +var \u{1357E}; +var \u{1357F}; +var \u{13580}; +var \u{13581}; +var \u{13582}; +var \u{13583}; +var \u{13584}; +var \u{13585}; +var \u{13586}; +var \u{13587}; +var \u{13588}; +var \u{13589}; +var \u{1358A}; +var \u{1358B}; +var \u{1358C}; +var \u{1358D}; +var \u{1358E}; +var \u{1358F}; +var \u{13590}; +var \u{13591}; +var \u{13592}; +var \u{13593}; +var \u{13594}; +var \u{13595}; +var \u{13596}; +var \u{13597}; +var \u{13598}; +var \u{13599}; +var \u{1359A}; +var \u{1359B}; +var \u{1359C}; +var \u{1359D}; +var \u{1359E}; +var \u{1359F}; +var \u{135A0}; +var \u{135A1}; +var \u{135A2}; +var \u{135A3}; +var \u{135A4}; +var \u{135A5}; +var \u{135A6}; +var \u{135A7}; +var \u{135A8}; +var \u{135A9}; +var \u{135AA}; +var \u{135AB}; +var \u{135AC}; +var \u{135AD}; +var \u{135AE}; +var \u{135AF}; +var \u{135B0}; +var \u{135B1}; +var \u{135B2}; +var \u{135B3}; +var \u{135B4}; +var \u{135B5}; +var \u{135B6}; +var \u{135B7}; +var \u{135B8}; +var \u{135B9}; +var \u{135BA}; +var \u{135BB}; +var \u{135BC}; +var \u{135BD}; +var \u{135BE}; +var \u{135BF}; +var \u{135C0}; +var \u{135C1}; +var \u{135C2}; +var \u{135C3}; +var \u{135C4}; +var \u{135C5}; +var \u{135C6}; +var \u{135C7}; +var \u{135C8}; +var \u{135C9}; +var \u{135CA}; +var \u{135CB}; +var \u{135CC}; +var \u{135CD}; +var \u{135CE}; +var \u{135CF}; +var \u{135D0}; +var \u{135D1}; +var \u{135D2}; +var \u{135D3}; +var \u{135D4}; +var \u{135D5}; +var \u{135D6}; +var \u{135D7}; +var \u{135D8}; +var \u{135D9}; +var \u{135DA}; +var \u{135DB}; +var \u{135DC}; +var \u{135DD}; +var \u{135DE}; +var \u{135DF}; +var \u{135E0}; +var \u{135E1}; +var \u{135E2}; +var \u{135E3}; +var \u{135E4}; +var \u{135E5}; +var \u{135E6}; +var \u{135E7}; +var \u{135E8}; +var \u{135E9}; +var \u{135EA}; +var \u{135EB}; +var \u{135EC}; +var \u{135ED}; +var \u{135EE}; +var \u{135EF}; +var \u{135F0}; +var \u{135F1}; +var \u{135F2}; +var \u{135F3}; +var \u{135F4}; +var \u{135F5}; +var \u{135F6}; +var \u{135F7}; +var \u{135F8}; +var \u{135F9}; +var \u{135FA}; +var \u{135FB}; +var \u{135FC}; +var \u{135FD}; +var \u{135FE}; +var \u{135FF}; +var \u{13600}; +var \u{13601}; +var \u{13602}; +var \u{13603}; +var \u{13604}; +var \u{13605}; +var \u{13606}; +var \u{13607}; +var \u{13608}; +var \u{13609}; +var \u{1360A}; +var \u{1360B}; +var \u{1360C}; +var \u{1360D}; +var \u{1360E}; +var \u{1360F}; +var \u{13610}; +var \u{13611}; +var \u{13612}; +var \u{13613}; +var \u{13614}; +var \u{13615}; +var \u{13616}; +var \u{13617}; +var \u{13618}; +var \u{13619}; +var \u{1361A}; +var \u{1361B}; +var \u{1361C}; +var \u{1361D}; +var \u{1361E}; +var \u{1361F}; +var \u{13620}; +var \u{13621}; +var \u{13622}; +var \u{13623}; +var \u{13624}; +var \u{13625}; +var \u{13626}; +var \u{13627}; +var \u{13628}; +var \u{13629}; +var \u{1362A}; +var \u{1362B}; +var \u{1362C}; +var \u{1362D}; +var \u{1362E}; +var \u{1362F}; +var \u{13630}; +var \u{13631}; +var \u{13632}; +var \u{13633}; +var \u{13634}; +var \u{13635}; +var \u{13636}; +var \u{13637}; +var \u{13638}; +var \u{13639}; +var \u{1363A}; +var \u{1363B}; +var \u{1363C}; +var \u{1363D}; +var \u{1363E}; +var \u{1363F}; +var \u{13640}; +var \u{13641}; +var \u{13642}; +var \u{13643}; +var \u{13644}; +var \u{13645}; +var \u{13646}; +var \u{13647}; +var \u{13648}; +var \u{13649}; +var \u{1364A}; +var \u{1364B}; +var \u{1364C}; +var \u{1364D}; +var \u{1364E}; +var \u{1364F}; +var \u{13650}; +var \u{13651}; +var \u{13652}; +var \u{13653}; +var \u{13654}; +var \u{13655}; +var \u{13656}; +var \u{13657}; +var \u{13658}; +var \u{13659}; +var \u{1365A}; +var \u{1365B}; +var \u{1365C}; +var \u{1365D}; +var \u{1365E}; +var \u{1365F}; +var \u{13660}; +var \u{13661}; +var \u{13662}; +var \u{13663}; +var \u{13664}; +var \u{13665}; +var \u{13666}; +var \u{13667}; +var \u{13668}; +var \u{13669}; +var \u{1366A}; +var \u{1366B}; +var \u{1366C}; +var \u{1366D}; +var \u{1366E}; +var \u{1366F}; +var \u{13670}; +var \u{13671}; +var \u{13672}; +var \u{13673}; +var \u{13674}; +var \u{13675}; +var \u{13676}; +var \u{13677}; +var \u{13678}; +var \u{13679}; +var \u{1367A}; +var \u{1367B}; +var \u{1367C}; +var \u{1367D}; +var \u{1367E}; +var \u{1367F}; +var \u{13680}; +var \u{13681}; +var \u{13682}; +var \u{13683}; +var \u{13684}; +var \u{13685}; +var \u{13686}; +var \u{13687}; +var \u{13688}; +var \u{13689}; +var \u{1368A}; +var \u{1368B}; +var \u{1368C}; +var \u{1368D}; +var \u{1368E}; +var \u{1368F}; +var \u{13690}; +var \u{13691}; +var \u{13692}; +var \u{13693}; +var \u{13694}; +var \u{13695}; +var \u{13696}; +var \u{13697}; +var \u{13698}; +var \u{13699}; +var \u{1369A}; +var \u{1369B}; +var \u{1369C}; +var \u{1369D}; +var \u{1369E}; +var \u{1369F}; +var \u{136A0}; +var \u{136A1}; +var \u{136A2}; +var \u{136A3}; +var \u{136A4}; +var \u{136A5}; +var \u{136A6}; +var \u{136A7}; +var \u{136A8}; +var \u{136A9}; +var \u{136AA}; +var \u{136AB}; +var \u{136AC}; +var \u{136AD}; +var \u{136AE}; +var \u{136AF}; +var \u{136B0}; +var \u{136B1}; +var \u{136B2}; +var \u{136B3}; +var \u{136B4}; +var \u{136B5}; +var \u{136B6}; +var \u{136B7}; +var \u{136B8}; +var \u{136B9}; +var \u{136BA}; +var \u{136BB}; +var \u{136BC}; +var \u{136BD}; +var \u{136BE}; +var \u{136BF}; +var \u{136C0}; +var \u{136C1}; +var \u{136C2}; +var \u{136C3}; +var \u{136C4}; +var \u{136C5}; +var \u{136C6}; +var \u{136C7}; +var \u{136C8}; +var \u{136C9}; +var \u{136CA}; +var \u{136CB}; +var \u{136CC}; +var \u{136CD}; +var \u{136CE}; +var \u{136CF}; +var \u{136D0}; +var \u{136D1}; +var \u{136D2}; +var \u{136D3}; +var \u{136D4}; +var \u{136D5}; +var \u{136D6}; +var \u{136D7}; +var \u{136D8}; +var \u{136D9}; +var \u{136DA}; +var \u{136DB}; +var \u{136DC}; +var \u{136DD}; +var \u{136DE}; +var \u{136DF}; +var \u{136E0}; +var \u{136E1}; +var \u{136E2}; +var \u{136E3}; +var \u{136E4}; +var \u{136E5}; +var \u{136E6}; +var \u{136E7}; +var \u{136E8}; +var \u{136E9}; +var \u{136EA}; +var \u{136EB}; +var \u{136EC}; +var \u{136ED}; +var \u{136EE}; +var \u{136EF}; +var \u{136F0}; +var \u{136F1}; +var \u{136F2}; +var \u{136F3}; +var \u{136F4}; +var \u{136F5}; +var \u{136F6}; +var \u{136F7}; +var \u{136F8}; +var \u{136F9}; +var \u{136FA}; +var \u{136FB}; +var \u{136FC}; +var \u{136FD}; +var \u{136FE}; +var \u{136FF}; +var \u{13700}; +var \u{13701}; +var \u{13702}; +var \u{13703}; +var \u{13704}; +var \u{13705}; +var \u{13706}; +var \u{13707}; +var \u{13708}; +var \u{13709}; +var \u{1370A}; +var \u{1370B}; +var \u{1370C}; +var \u{1370D}; +var \u{1370E}; +var \u{1370F}; +var \u{13710}; +var \u{13711}; +var \u{13712}; +var \u{13713}; +var \u{13714}; +var \u{13715}; +var \u{13716}; +var \u{13717}; +var \u{13718}; +var \u{13719}; +var \u{1371A}; +var \u{1371B}; +var \u{1371C}; +var \u{1371D}; +var \u{1371E}; +var \u{1371F}; +var \u{13720}; +var \u{13721}; +var \u{13722}; +var \u{13723}; +var \u{13724}; +var \u{13725}; +var \u{13726}; +var \u{13727}; +var \u{13728}; +var \u{13729}; +var \u{1372A}; +var \u{1372B}; +var \u{1372C}; +var \u{1372D}; +var \u{1372E}; +var \u{1372F}; +var \u{13730}; +var \u{13731}; +var \u{13732}; +var \u{13733}; +var \u{13734}; +var \u{13735}; +var \u{13736}; +var \u{13737}; +var \u{13738}; +var \u{13739}; +var \u{1373A}; +var \u{1373B}; +var \u{1373C}; +var \u{1373D}; +var \u{1373E}; +var \u{1373F}; +var \u{13740}; +var \u{13741}; +var \u{13742}; +var \u{13743}; +var \u{13744}; +var \u{13745}; +var \u{13746}; +var \u{13747}; +var \u{13748}; +var \u{13749}; +var \u{1374A}; +var \u{1374B}; +var \u{1374C}; +var \u{1374D}; +var \u{1374E}; +var \u{1374F}; +var \u{13750}; +var \u{13751}; +var \u{13752}; +var \u{13753}; +var \u{13754}; +var \u{13755}; +var \u{13756}; +var \u{13757}; +var \u{13758}; +var \u{13759}; +var \u{1375A}; +var \u{1375B}; +var \u{1375C}; +var \u{1375D}; +var \u{1375E}; +var \u{1375F}; +var \u{13760}; +var \u{13761}; +var \u{13762}; +var \u{13763}; +var \u{13764}; +var \u{13765}; +var \u{13766}; +var \u{13767}; +var \u{13768}; +var \u{13769}; +var \u{1376A}; +var \u{1376B}; +var \u{1376C}; +var \u{1376D}; +var \u{1376E}; +var \u{1376F}; +var \u{13770}; +var \u{13771}; +var \u{13772}; +var \u{13773}; +var \u{13774}; +var \u{13775}; +var \u{13776}; +var \u{13777}; +var \u{13778}; +var \u{13779}; +var \u{1377A}; +var \u{1377B}; +var \u{1377C}; +var \u{1377D}; +var \u{1377E}; +var \u{1377F}; +var \u{13780}; +var \u{13781}; +var \u{13782}; +var \u{13783}; +var \u{13784}; +var \u{13785}; +var \u{13786}; +var \u{13787}; +var \u{13788}; +var \u{13789}; +var \u{1378A}; +var \u{1378B}; +var \u{1378C}; +var \u{1378D}; +var \u{1378E}; +var \u{1378F}; +var \u{13790}; +var \u{13791}; +var \u{13792}; +var \u{13793}; +var \u{13794}; +var \u{13795}; +var \u{13796}; +var \u{13797}; +var \u{13798}; +var \u{13799}; +var \u{1379A}; +var \u{1379B}; +var \u{1379C}; +var \u{1379D}; +var \u{1379E}; +var \u{1379F}; +var \u{137A0}; +var \u{137A1}; +var \u{137A2}; +var \u{137A3}; +var \u{137A4}; +var \u{137A5}; +var \u{137A6}; +var \u{137A7}; +var \u{137A8}; +var \u{137A9}; +var \u{137AA}; +var \u{137AB}; +var \u{137AC}; +var \u{137AD}; +var \u{137AE}; +var \u{137AF}; +var \u{137B0}; +var \u{137B1}; +var \u{137B2}; +var \u{137B3}; +var \u{137B4}; +var \u{137B5}; +var \u{137B6}; +var \u{137B7}; +var \u{137B8}; +var \u{137B9}; +var \u{137BA}; +var \u{137BB}; +var \u{137BC}; +var \u{137BD}; +var \u{137BE}; +var \u{137BF}; +var \u{137C0}; +var \u{137C1}; +var \u{137C2}; +var \u{137C3}; +var \u{137C4}; +var \u{137C5}; +var \u{137C6}; +var \u{137C7}; +var \u{137C8}; +var \u{137C9}; +var \u{137CA}; +var \u{137CB}; +var \u{137CC}; +var \u{137CD}; +var \u{137CE}; +var \u{137CF}; +var \u{137D0}; +var \u{137D1}; +var \u{137D2}; +var \u{137D3}; +var \u{137D4}; +var \u{137D5}; +var \u{137D6}; +var \u{137D7}; +var \u{137D8}; +var \u{137D9}; +var \u{137DA}; +var \u{137DB}; +var \u{137DC}; +var \u{137DD}; +var \u{137DE}; +var \u{137DF}; +var \u{137E0}; +var \u{137E1}; +var \u{137E2}; +var \u{137E3}; +var \u{137E4}; +var \u{137E5}; +var \u{137E6}; +var \u{137E7}; +var \u{137E8}; +var \u{137E9}; +var \u{137EA}; +var \u{137EB}; +var \u{137EC}; +var \u{137ED}; +var \u{137EE}; +var \u{137EF}; +var \u{137F0}; +var \u{137F1}; +var \u{137F2}; +var \u{137F3}; +var \u{137F4}; +var \u{137F5}; +var \u{137F6}; +var \u{137F7}; +var \u{137F8}; +var \u{137F9}; +var \u{137FA}; +var \u{137FB}; +var \u{137FC}; +var \u{137FD}; +var \u{137FE}; +var \u{137FF}; +var \u{13800}; +var \u{13801}; +var \u{13802}; +var \u{13803}; +var \u{13804}; +var \u{13805}; +var \u{13806}; +var \u{13807}; +var \u{13808}; +var \u{13809}; +var \u{1380A}; +var \u{1380B}; +var \u{1380C}; +var \u{1380D}; +var \u{1380E}; +var \u{1380F}; +var \u{13810}; +var \u{13811}; +var \u{13812}; +var \u{13813}; +var \u{13814}; +var \u{13815}; +var \u{13816}; +var \u{13817}; +var \u{13818}; +var \u{13819}; +var \u{1381A}; +var \u{1381B}; +var \u{1381C}; +var \u{1381D}; +var \u{1381E}; +var \u{1381F}; +var \u{13820}; +var \u{13821}; +var \u{13822}; +var \u{13823}; +var \u{13824}; +var \u{13825}; +var \u{13826}; +var \u{13827}; +var \u{13828}; +var \u{13829}; +var \u{1382A}; +var \u{1382B}; +var \u{1382C}; +var \u{1382D}; +var \u{1382E}; +var \u{1382F}; +var \u{13830}; +var \u{13831}; +var \u{13832}; +var \u{13833}; +var \u{13834}; +var \u{13835}; +var \u{13836}; +var \u{13837}; +var \u{13838}; +var \u{13839}; +var \u{1383A}; +var \u{1383B}; +var \u{1383C}; +var \u{1383D}; +var \u{1383E}; +var \u{1383F}; +var \u{13840}; +var \u{13841}; +var \u{13842}; +var \u{13843}; +var \u{13844}; +var \u{13845}; +var \u{13846}; +var \u{13847}; +var \u{13848}; +var \u{13849}; +var \u{1384A}; +var \u{1384B}; +var \u{1384C}; +var \u{1384D}; +var \u{1384E}; +var \u{1384F}; +var \u{13850}; +var \u{13851}; +var \u{13852}; +var \u{13853}; +var \u{13854}; +var \u{13855}; +var \u{13856}; +var \u{13857}; +var \u{13858}; +var \u{13859}; +var \u{1385A}; +var \u{1385B}; +var \u{1385C}; +var \u{1385D}; +var \u{1385E}; +var \u{1385F}; +var \u{13860}; +var \u{13861}; +var \u{13862}; +var \u{13863}; +var \u{13864}; +var \u{13865}; +var \u{13866}; +var \u{13867}; +var \u{13868}; +var \u{13869}; +var \u{1386A}; +var \u{1386B}; +var \u{1386C}; +var \u{1386D}; +var \u{1386E}; +var \u{1386F}; +var \u{13870}; +var \u{13871}; +var \u{13872}; +var \u{13873}; +var \u{13874}; +var \u{13875}; +var \u{13876}; +var \u{13877}; +var \u{13878}; +var \u{13879}; +var \u{1387A}; +var \u{1387B}; +var \u{1387C}; +var \u{1387D}; +var \u{1387E}; +var \u{1387F}; +var \u{13880}; +var \u{13881}; +var \u{13882}; +var \u{13883}; +var \u{13884}; +var \u{13885}; +var \u{13886}; +var \u{13887}; +var \u{13888}; +var \u{13889}; +var \u{1388A}; +var \u{1388B}; +var \u{1388C}; +var \u{1388D}; +var \u{1388E}; +var \u{1388F}; +var \u{13890}; +var \u{13891}; +var \u{13892}; +var \u{13893}; +var \u{13894}; +var \u{13895}; +var \u{13896}; +var \u{13897}; +var \u{13898}; +var \u{13899}; +var \u{1389A}; +var \u{1389B}; +var \u{1389C}; +var \u{1389D}; +var \u{1389E}; +var \u{1389F}; +var \u{138A0}; +var \u{138A1}; +var \u{138A2}; +var \u{138A3}; +var \u{138A4}; +var \u{138A5}; +var \u{138A6}; +var \u{138A7}; +var \u{138A8}; +var \u{138A9}; +var \u{138AA}; +var \u{138AB}; +var \u{138AC}; +var \u{138AD}; +var \u{138AE}; +var \u{138AF}; +var \u{138B0}; +var \u{138B1}; +var \u{138B2}; +var \u{138B3}; +var \u{138B4}; +var \u{138B5}; +var \u{138B6}; +var \u{138B7}; +var \u{138B8}; +var \u{138B9}; +var \u{138BA}; +var \u{138BB}; +var \u{138BC}; +var \u{138BD}; +var \u{138BE}; +var \u{138BF}; +var \u{138C0}; +var \u{138C1}; +var \u{138C2}; +var \u{138C3}; +var \u{138C4}; +var \u{138C5}; +var \u{138C6}; +var \u{138C7}; +var \u{138C8}; +var \u{138C9}; +var \u{138CA}; +var \u{138CB}; +var \u{138CC}; +var \u{138CD}; +var \u{138CE}; +var \u{138CF}; +var \u{138D0}; +var \u{138D1}; +var \u{138D2}; +var \u{138D3}; +var \u{138D4}; +var \u{138D5}; +var \u{138D6}; +var \u{138D7}; +var \u{138D8}; +var \u{138D9}; +var \u{138DA}; +var \u{138DB}; +var \u{138DC}; +var \u{138DD}; +var \u{138DE}; +var \u{138DF}; +var \u{138E0}; +var \u{138E1}; +var \u{138E2}; +var \u{138E3}; +var \u{138E4}; +var \u{138E5}; +var \u{138E6}; +var \u{138E7}; +var \u{138E8}; +var \u{138E9}; +var \u{138EA}; +var \u{138EB}; +var \u{138EC}; +var \u{138ED}; +var \u{138EE}; +var \u{138EF}; +var \u{138F0}; +var \u{138F1}; +var \u{138F2}; +var \u{138F3}; +var \u{138F4}; +var \u{138F5}; +var \u{138F6}; +var \u{138F7}; +var \u{138F8}; +var \u{138F9}; +var \u{138FA}; +var \u{138FB}; +var \u{138FC}; +var \u{138FD}; +var \u{138FE}; +var \u{138FF}; +var \u{13900}; +var \u{13901}; +var \u{13902}; +var \u{13903}; +var \u{13904}; +var \u{13905}; +var \u{13906}; +var \u{13907}; +var \u{13908}; +var \u{13909}; +var \u{1390A}; +var \u{1390B}; +var \u{1390C}; +var \u{1390D}; +var \u{1390E}; +var \u{1390F}; +var \u{13910}; +var \u{13911}; +var \u{13912}; +var \u{13913}; +var \u{13914}; +var \u{13915}; +var \u{13916}; +var \u{13917}; +var \u{13918}; +var \u{13919}; +var \u{1391A}; +var \u{1391B}; +var \u{1391C}; +var \u{1391D}; +var \u{1391E}; +var \u{1391F}; +var \u{13920}; +var \u{13921}; +var \u{13922}; +var \u{13923}; +var \u{13924}; +var \u{13925}; +var \u{13926}; +var \u{13927}; +var \u{13928}; +var \u{13929}; +var \u{1392A}; +var \u{1392B}; +var \u{1392C}; +var \u{1392D}; +var \u{1392E}; +var \u{1392F}; +var \u{13930}; +var \u{13931}; +var \u{13932}; +var \u{13933}; +var \u{13934}; +var \u{13935}; +var \u{13936}; +var \u{13937}; +var \u{13938}; +var \u{13939}; +var \u{1393A}; +var \u{1393B}; +var \u{1393C}; +var \u{1393D}; +var \u{1393E}; +var \u{1393F}; +var \u{13940}; +var \u{13941}; +var \u{13942}; +var \u{13943}; +var \u{13944}; +var \u{13945}; +var \u{13946}; +var \u{13947}; +var \u{13948}; +var \u{13949}; +var \u{1394A}; +var \u{1394B}; +var \u{1394C}; +var \u{1394D}; +var \u{1394E}; +var \u{1394F}; +var \u{13950}; +var \u{13951}; +var \u{13952}; +var \u{13953}; +var \u{13954}; +var \u{13955}; +var \u{13956}; +var \u{13957}; +var \u{13958}; +var \u{13959}; +var \u{1395A}; +var \u{1395B}; +var \u{1395C}; +var \u{1395D}; +var \u{1395E}; +var \u{1395F}; +var \u{13960}; +var \u{13961}; +var \u{13962}; +var \u{13963}; +var \u{13964}; +var \u{13965}; +var \u{13966}; +var \u{13967}; +var \u{13968}; +var \u{13969}; +var \u{1396A}; +var \u{1396B}; +var \u{1396C}; +var \u{1396D}; +var \u{1396E}; +var \u{1396F}; +var \u{13970}; +var \u{13971}; +var \u{13972}; +var \u{13973}; +var \u{13974}; +var \u{13975}; +var \u{13976}; +var \u{13977}; +var \u{13978}; +var \u{13979}; +var \u{1397A}; +var \u{1397B}; +var \u{1397C}; +var \u{1397D}; +var \u{1397E}; +var \u{1397F}; +var \u{13980}; +var \u{13981}; +var \u{13982}; +var \u{13983}; +var \u{13984}; +var \u{13985}; +var \u{13986}; +var \u{13987}; +var \u{13988}; +var \u{13989}; +var \u{1398A}; +var \u{1398B}; +var \u{1398C}; +var \u{1398D}; +var \u{1398E}; +var \u{1398F}; +var \u{13990}; +var \u{13991}; +var \u{13992}; +var \u{13993}; +var \u{13994}; +var \u{13995}; +var \u{13996}; +var \u{13997}; +var \u{13998}; +var \u{13999}; +var \u{1399A}; +var \u{1399B}; +var \u{1399C}; +var \u{1399D}; +var \u{1399E}; +var \u{1399F}; +var \u{139A0}; +var \u{139A1}; +var \u{139A2}; +var \u{139A3}; +var \u{139A4}; +var \u{139A5}; +var \u{139A6}; +var \u{139A7}; +var \u{139A8}; +var \u{139A9}; +var \u{139AA}; +var \u{139AB}; +var \u{139AC}; +var \u{139AD}; +var \u{139AE}; +var \u{139AF}; +var \u{139B0}; +var \u{139B1}; +var \u{139B2}; +var \u{139B3}; +var \u{139B4}; +var \u{139B5}; +var \u{139B6}; +var \u{139B7}; +var \u{139B8}; +var \u{139B9}; +var \u{139BA}; +var \u{139BB}; +var \u{139BC}; +var \u{139BD}; +var \u{139BE}; +var \u{139BF}; +var \u{139C0}; +var \u{139C1}; +var \u{139C2}; +var \u{139C3}; +var \u{139C4}; +var \u{139C5}; +var \u{139C6}; +var \u{139C7}; +var \u{139C8}; +var \u{139C9}; +var \u{139CA}; +var \u{139CB}; +var \u{139CC}; +var \u{139CD}; +var \u{139CE}; +var \u{139CF}; +var \u{139D0}; +var \u{139D1}; +var \u{139D2}; +var \u{139D3}; +var \u{139D4}; +var \u{139D5}; +var \u{139D6}; +var \u{139D7}; +var \u{139D8}; +var \u{139D9}; +var \u{139DA}; +var \u{139DB}; +var \u{139DC}; +var \u{139DD}; +var \u{139DE}; +var \u{139DF}; +var \u{139E0}; +var \u{139E1}; +var \u{139E2}; +var \u{139E3}; +var \u{139E4}; +var \u{139E5}; +var \u{139E6}; +var \u{139E7}; +var \u{139E8}; +var \u{139E9}; +var \u{139EA}; +var \u{139EB}; +var \u{139EC}; +var \u{139ED}; +var \u{139EE}; +var \u{139EF}; +var \u{139F0}; +var \u{139F1}; +var \u{139F2}; +var \u{139F3}; +var \u{139F4}; +var \u{139F5}; +var \u{139F6}; +var \u{139F7}; +var \u{139F8}; +var \u{139F9}; +var \u{139FA}; +var \u{139FB}; +var \u{139FC}; +var \u{139FD}; +var \u{139FE}; +var \u{139FF}; +var \u{13A00}; +var \u{13A01}; +var \u{13A02}; +var \u{13A03}; +var \u{13A04}; +var \u{13A05}; +var \u{13A06}; +var \u{13A07}; +var \u{13A08}; +var \u{13A09}; +var \u{13A0A}; +var \u{13A0B}; +var \u{13A0C}; +var \u{13A0D}; +var \u{13A0E}; +var \u{13A0F}; +var \u{13A10}; +var \u{13A11}; +var \u{13A12}; +var \u{13A13}; +var \u{13A14}; +var \u{13A15}; +var \u{13A16}; +var \u{13A17}; +var \u{13A18}; +var \u{13A19}; +var \u{13A1A}; +var \u{13A1B}; +var \u{13A1C}; +var \u{13A1D}; +var \u{13A1E}; +var \u{13A1F}; +var \u{13A20}; +var \u{13A21}; +var \u{13A22}; +var \u{13A23}; +var \u{13A24}; +var \u{13A25}; +var \u{13A26}; +var \u{13A27}; +var \u{13A28}; +var \u{13A29}; +var \u{13A2A}; +var \u{13A2B}; +var \u{13A2C}; +var \u{13A2D}; +var \u{13A2E}; +var \u{13A2F}; +var \u{13A30}; +var \u{13A31}; +var \u{13A32}; +var \u{13A33}; +var \u{13A34}; +var \u{13A35}; +var \u{13A36}; +var \u{13A37}; +var \u{13A38}; +var \u{13A39}; +var \u{13A3A}; +var \u{13A3B}; +var \u{13A3C}; +var \u{13A3D}; +var \u{13A3E}; +var \u{13A3F}; +var \u{13A40}; +var \u{13A41}; +var \u{13A42}; +var \u{13A43}; +var \u{13A44}; +var \u{13A45}; +var \u{13A46}; +var \u{13A47}; +var \u{13A48}; +var \u{13A49}; +var \u{13A4A}; +var \u{13A4B}; +var \u{13A4C}; +var \u{13A4D}; +var \u{13A4E}; +var \u{13A4F}; +var \u{13A50}; +var \u{13A51}; +var \u{13A52}; +var \u{13A53}; +var \u{13A54}; +var \u{13A55}; +var \u{13A56}; +var \u{13A57}; +var \u{13A58}; +var \u{13A59}; +var \u{13A5A}; +var \u{13A5B}; +var \u{13A5C}; +var \u{13A5D}; +var \u{13A5E}; +var \u{13A5F}; +var \u{13A60}; +var \u{13A61}; +var \u{13A62}; +var \u{13A63}; +var \u{13A64}; +var \u{13A65}; +var \u{13A66}; +var \u{13A67}; +var \u{13A68}; +var \u{13A69}; +var \u{13A6A}; +var \u{13A6B}; +var \u{13A6C}; +var \u{13A6D}; +var \u{13A6E}; +var \u{13A6F}; +var \u{13A70}; +var \u{13A71}; +var \u{13A72}; +var \u{13A73}; +var \u{13A74}; +var \u{13A75}; +var \u{13A76}; +var \u{13A77}; +var \u{13A78}; +var \u{13A79}; +var \u{13A7A}; +var \u{13A7B}; +var \u{13A7C}; +var \u{13A7D}; +var \u{13A7E}; +var \u{13A7F}; +var \u{13A80}; +var \u{13A81}; +var \u{13A82}; +var \u{13A83}; +var \u{13A84}; +var \u{13A85}; +var \u{13A86}; +var \u{13A87}; +var \u{13A88}; +var \u{13A89}; +var \u{13A8A}; +var \u{13A8B}; +var \u{13A8C}; +var \u{13A8D}; +var \u{13A8E}; +var \u{13A8F}; +var \u{13A90}; +var \u{13A91}; +var \u{13A92}; +var \u{13A93}; +var \u{13A94}; +var \u{13A95}; +var \u{13A96}; +var \u{13A97}; +var \u{13A98}; +var \u{13A99}; +var \u{13A9A}; +var \u{13A9B}; +var \u{13A9C}; +var \u{13A9D}; +var \u{13A9E}; +var \u{13A9F}; +var \u{13AA0}; +var \u{13AA1}; +var \u{13AA2}; +var \u{13AA3}; +var \u{13AA4}; +var \u{13AA5}; +var \u{13AA6}; +var \u{13AA7}; +var \u{13AA8}; +var \u{13AA9}; +var \u{13AAA}; +var \u{13AAB}; +var \u{13AAC}; +var \u{13AAD}; +var \u{13AAE}; +var \u{13AAF}; +var \u{13AB0}; +var \u{13AB1}; +var \u{13AB2}; +var \u{13AB3}; +var \u{13AB4}; +var \u{13AB5}; +var \u{13AB6}; +var \u{13AB7}; +var \u{13AB8}; +var \u{13AB9}; +var \u{13ABA}; +var \u{13ABB}; +var \u{13ABC}; +var \u{13ABD}; +var \u{13ABE}; +var \u{13ABF}; +var \u{13AC0}; +var \u{13AC1}; +var \u{13AC2}; +var \u{13AC3}; +var \u{13AC4}; +var \u{13AC5}; +var \u{13AC6}; +var \u{13AC7}; +var \u{13AC8}; +var \u{13AC9}; +var \u{13ACA}; +var \u{13ACB}; +var \u{13ACC}; +var \u{13ACD}; +var \u{13ACE}; +var \u{13ACF}; +var \u{13AD0}; +var \u{13AD1}; +var \u{13AD2}; +var \u{13AD3}; +var \u{13AD4}; +var \u{13AD5}; +var \u{13AD6}; +var \u{13AD7}; +var \u{13AD8}; +var \u{13AD9}; +var \u{13ADA}; +var \u{13ADB}; +var \u{13ADC}; +var \u{13ADD}; +var \u{13ADE}; +var \u{13ADF}; +var \u{13AE0}; +var \u{13AE1}; +var \u{13AE2}; +var \u{13AE3}; +var \u{13AE4}; +var \u{13AE5}; +var \u{13AE6}; +var \u{13AE7}; +var \u{13AE8}; +var \u{13AE9}; +var \u{13AEA}; +var \u{13AEB}; +var \u{13AEC}; +var \u{13AED}; +var \u{13AEE}; +var \u{13AEF}; +var \u{13AF0}; +var \u{13AF1}; +var \u{13AF2}; +var \u{13AF3}; +var \u{13AF4}; +var \u{13AF5}; +var \u{13AF6}; +var \u{13AF7}; +var \u{13AF8}; +var \u{13AF9}; +var \u{13AFA}; +var \u{13AFB}; +var \u{13AFC}; +var \u{13AFD}; +var \u{13AFE}; +var \u{13AFF}; +var \u{13B00}; +var \u{13B01}; +var \u{13B02}; +var \u{13B03}; +var \u{13B04}; +var \u{13B05}; +var \u{13B06}; +var \u{13B07}; +var \u{13B08}; +var \u{13B09}; +var \u{13B0A}; +var \u{13B0B}; +var \u{13B0C}; +var \u{13B0D}; +var \u{13B0E}; +var \u{13B0F}; +var \u{13B10}; +var \u{13B11}; +var \u{13B12}; +var \u{13B13}; +var \u{13B14}; +var \u{13B15}; +var \u{13B16}; +var \u{13B17}; +var \u{13B18}; +var \u{13B19}; +var \u{13B1A}; +var \u{13B1B}; +var \u{13B1C}; +var \u{13B1D}; +var \u{13B1E}; +var \u{13B1F}; +var \u{13B20}; +var \u{13B21}; +var \u{13B22}; +var \u{13B23}; +var \u{13B24}; +var \u{13B25}; +var \u{13B26}; +var \u{13B27}; +var \u{13B28}; +var \u{13B29}; +var \u{13B2A}; +var \u{13B2B}; +var \u{13B2C}; +var \u{13B2D}; +var \u{13B2E}; +var \u{13B2F}; +var \u{13B30}; +var \u{13B31}; +var \u{13B32}; +var \u{13B33}; +var \u{13B34}; +var \u{13B35}; +var \u{13B36}; +var \u{13B37}; +var \u{13B38}; +var \u{13B39}; +var \u{13B3A}; +var \u{13B3B}; +var \u{13B3C}; +var \u{13B3D}; +var \u{13B3E}; +var \u{13B3F}; +var \u{13B40}; +var \u{13B41}; +var \u{13B42}; +var \u{13B43}; +var \u{13B44}; +var \u{13B45}; +var \u{13B46}; +var \u{13B47}; +var \u{13B48}; +var \u{13B49}; +var \u{13B4A}; +var \u{13B4B}; +var \u{13B4C}; +var \u{13B4D}; +var \u{13B4E}; +var \u{13B4F}; +var \u{13B50}; +var \u{13B51}; +var \u{13B52}; +var \u{13B53}; +var \u{13B54}; +var \u{13B55}; +var \u{13B56}; +var \u{13B57}; +var \u{13B58}; +var \u{13B59}; +var \u{13B5A}; +var \u{13B5B}; +var \u{13B5C}; +var \u{13B5D}; +var \u{13B5E}; +var \u{13B5F}; +var \u{13B60}; +var \u{13B61}; +var \u{13B62}; +var \u{13B63}; +var \u{13B64}; +var \u{13B65}; +var \u{13B66}; +var \u{13B67}; +var \u{13B68}; +var \u{13B69}; +var \u{13B6A}; +var \u{13B6B}; +var \u{13B6C}; +var \u{13B6D}; +var \u{13B6E}; +var \u{13B6F}; +var \u{13B70}; +var \u{13B71}; +var \u{13B72}; +var \u{13B73}; +var \u{13B74}; +var \u{13B75}; +var \u{13B76}; +var \u{13B77}; +var \u{13B78}; +var \u{13B79}; +var \u{13B7A}; +var \u{13B7B}; +var \u{13B7C}; +var \u{13B7D}; +var \u{13B7E}; +var \u{13B7F}; +var \u{13B80}; +var \u{13B81}; +var \u{13B82}; +var \u{13B83}; +var \u{13B84}; +var \u{13B85}; +var \u{13B86}; +var \u{13B87}; +var \u{13B88}; +var \u{13B89}; +var \u{13B8A}; +var \u{13B8B}; +var \u{13B8C}; +var \u{13B8D}; +var \u{13B8E}; +var \u{13B8F}; +var \u{13B90}; +var \u{13B91}; +var \u{13B92}; +var \u{13B93}; +var \u{13B94}; +var \u{13B95}; +var \u{13B96}; +var \u{13B97}; +var \u{13B98}; +var \u{13B99}; +var \u{13B9A}; +var \u{13B9B}; +var \u{13B9C}; +var \u{13B9D}; +var \u{13B9E}; +var \u{13B9F}; +var \u{13BA0}; +var \u{13BA1}; +var \u{13BA2}; +var \u{13BA3}; +var \u{13BA4}; +var \u{13BA5}; +var \u{13BA6}; +var \u{13BA7}; +var \u{13BA8}; +var \u{13BA9}; +var \u{13BAA}; +var \u{13BAB}; +var \u{13BAC}; +var \u{13BAD}; +var \u{13BAE}; +var \u{13BAF}; +var \u{13BB0}; +var \u{13BB1}; +var \u{13BB2}; +var \u{13BB3}; +var \u{13BB4}; +var \u{13BB5}; +var \u{13BB6}; +var \u{13BB7}; +var \u{13BB8}; +var \u{13BB9}; +var \u{13BBA}; +var \u{13BBB}; +var \u{13BBC}; +var \u{13BBD}; +var \u{13BBE}; +var \u{13BBF}; +var \u{13BC0}; +var \u{13BC1}; +var \u{13BC2}; +var \u{13BC3}; +var \u{13BC4}; +var \u{13BC5}; +var \u{13BC6}; +var \u{13BC7}; +var \u{13BC8}; +var \u{13BC9}; +var \u{13BCA}; +var \u{13BCB}; +var \u{13BCC}; +var \u{13BCD}; +var \u{13BCE}; +var \u{13BCF}; +var \u{13BD0}; +var \u{13BD1}; +var \u{13BD2}; +var \u{13BD3}; +var \u{13BD4}; +var \u{13BD5}; +var \u{13BD6}; +var \u{13BD7}; +var \u{13BD8}; +var \u{13BD9}; +var \u{13BDA}; +var \u{13BDB}; +var \u{13BDC}; +var \u{13BDD}; +var \u{13BDE}; +var \u{13BDF}; +var \u{13BE0}; +var \u{13BE1}; +var \u{13BE2}; +var \u{13BE3}; +var \u{13BE4}; +var \u{13BE5}; +var \u{13BE6}; +var \u{13BE7}; +var \u{13BE8}; +var \u{13BE9}; +var \u{13BEA}; +var \u{13BEB}; +var \u{13BEC}; +var \u{13BED}; +var \u{13BEE}; +var \u{13BEF}; +var \u{13BF0}; +var \u{13BF1}; +var \u{13BF2}; +var \u{13BF3}; +var \u{13BF4}; +var \u{13BF5}; +var \u{13BF6}; +var \u{13BF7}; +var \u{13BF8}; +var \u{13BF9}; +var \u{13BFA}; +var \u{13BFB}; +var \u{13BFC}; +var \u{13BFD}; +var \u{13BFE}; +var \u{13BFF}; +var \u{13C00}; +var \u{13C01}; +var \u{13C02}; +var \u{13C03}; +var \u{13C04}; +var \u{13C05}; +var \u{13C06}; +var \u{13C07}; +var \u{13C08}; +var \u{13C09}; +var \u{13C0A}; +var \u{13C0B}; +var \u{13C0C}; +var \u{13C0D}; +var \u{13C0E}; +var \u{13C0F}; +var \u{13C10}; +var \u{13C11}; +var \u{13C12}; +var \u{13C13}; +var \u{13C14}; +var \u{13C15}; +var \u{13C16}; +var \u{13C17}; +var \u{13C18}; +var \u{13C19}; +var \u{13C1A}; +var \u{13C1B}; +var \u{13C1C}; +var \u{13C1D}; +var \u{13C1E}; +var \u{13C1F}; +var \u{13C20}; +var \u{13C21}; +var \u{13C22}; +var \u{13C23}; +var \u{13C24}; +var \u{13C25}; +var \u{13C26}; +var \u{13C27}; +var \u{13C28}; +var \u{13C29}; +var \u{13C2A}; +var \u{13C2B}; +var \u{13C2C}; +var \u{13C2D}; +var \u{13C2E}; +var \u{13C2F}; +var \u{13C30}; +var \u{13C31}; +var \u{13C32}; +var \u{13C33}; +var \u{13C34}; +var \u{13C35}; +var \u{13C36}; +var \u{13C37}; +var \u{13C38}; +var \u{13C39}; +var \u{13C3A}; +var \u{13C3B}; +var \u{13C3C}; +var \u{13C3D}; +var \u{13C3E}; +var \u{13C3F}; +var \u{13C40}; +var \u{13C41}; +var \u{13C42}; +var \u{13C43}; +var \u{13C44}; +var \u{13C45}; +var \u{13C46}; +var \u{13C47}; +var \u{13C48}; +var \u{13C49}; +var \u{13C4A}; +var \u{13C4B}; +var \u{13C4C}; +var \u{13C4D}; +var \u{13C4E}; +var \u{13C4F}; +var \u{13C50}; +var \u{13C51}; +var \u{13C52}; +var \u{13C53}; +var \u{13C54}; +var \u{13C55}; +var \u{13C56}; +var \u{13C57}; +var \u{13C58}; +var \u{13C59}; +var \u{13C5A}; +var \u{13C5B}; +var \u{13C5C}; +var \u{13C5D}; +var \u{13C5E}; +var \u{13C5F}; +var \u{13C60}; +var \u{13C61}; +var \u{13C62}; +var \u{13C63}; +var \u{13C64}; +var \u{13C65}; +var \u{13C66}; +var \u{13C67}; +var \u{13C68}; +var \u{13C69}; +var \u{13C6A}; +var \u{13C6B}; +var \u{13C6C}; +var \u{13C6D}; +var \u{13C6E}; +var \u{13C6F}; +var \u{13C70}; +var \u{13C71}; +var \u{13C72}; +var \u{13C73}; +var \u{13C74}; +var \u{13C75}; +var \u{13C76}; +var \u{13C77}; +var \u{13C78}; +var \u{13C79}; +var \u{13C7A}; +var \u{13C7B}; +var \u{13C7C}; +var \u{13C7D}; +var \u{13C7E}; +var \u{13C7F}; +var \u{13C80}; +var \u{13C81}; +var \u{13C82}; +var \u{13C83}; +var \u{13C84}; +var \u{13C85}; +var \u{13C86}; +var \u{13C87}; +var \u{13C88}; +var \u{13C89}; +var \u{13C8A}; +var \u{13C8B}; +var \u{13C8C}; +var \u{13C8D}; +var \u{13C8E}; +var \u{13C8F}; +var \u{13C90}; +var \u{13C91}; +var \u{13C92}; +var \u{13C93}; +var \u{13C94}; +var \u{13C95}; +var \u{13C96}; +var \u{13C97}; +var \u{13C98}; +var \u{13C99}; +var \u{13C9A}; +var \u{13C9B}; +var \u{13C9C}; +var \u{13C9D}; +var \u{13C9E}; +var \u{13C9F}; +var \u{13CA0}; +var \u{13CA1}; +var \u{13CA2}; +var \u{13CA3}; +var \u{13CA4}; +var \u{13CA5}; +var \u{13CA6}; +var \u{13CA7}; +var \u{13CA8}; +var \u{13CA9}; +var \u{13CAA}; +var \u{13CAB}; +var \u{13CAC}; +var \u{13CAD}; +var \u{13CAE}; +var \u{13CAF}; +var \u{13CB0}; +var \u{13CB1}; +var \u{13CB2}; +var \u{13CB3}; +var \u{13CB4}; +var \u{13CB5}; +var \u{13CB6}; +var \u{13CB7}; +var \u{13CB8}; +var \u{13CB9}; +var \u{13CBA}; +var \u{13CBB}; +var \u{13CBC}; +var \u{13CBD}; +var \u{13CBE}; +var \u{13CBF}; +var \u{13CC0}; +var \u{13CC1}; +var \u{13CC2}; +var \u{13CC3}; +var \u{13CC4}; +var \u{13CC5}; +var \u{13CC6}; +var \u{13CC7}; +var \u{13CC8}; +var \u{13CC9}; +var \u{13CCA}; +var \u{13CCB}; +var \u{13CCC}; +var \u{13CCD}; +var \u{13CCE}; +var \u{13CCF}; +var \u{13CD0}; +var \u{13CD1}; +var \u{13CD2}; +var \u{13CD3}; +var \u{13CD4}; +var \u{13CD5}; +var \u{13CD6}; +var \u{13CD7}; +var \u{13CD8}; +var \u{13CD9}; +var \u{13CDA}; +var \u{13CDB}; +var \u{13CDC}; +var \u{13CDD}; +var \u{13CDE}; +var \u{13CDF}; +var \u{13CE0}; +var \u{13CE1}; +var \u{13CE2}; +var \u{13CE3}; +var \u{13CE4}; +var \u{13CE5}; +var \u{13CE6}; +var \u{13CE7}; +var \u{13CE8}; +var \u{13CE9}; +var \u{13CEA}; +var \u{13CEB}; +var \u{13CEC}; +var \u{13CED}; +var \u{13CEE}; +var \u{13CEF}; +var \u{13CF0}; +var \u{13CF1}; +var \u{13CF2}; +var \u{13CF3}; +var \u{13CF4}; +var \u{13CF5}; +var \u{13CF6}; +var \u{13CF7}; +var \u{13CF8}; +var \u{13CF9}; +var \u{13CFA}; +var \u{13CFB}; +var \u{13CFC}; +var \u{13CFD}; +var \u{13CFE}; +var \u{13CFF}; +var \u{13D00}; +var \u{13D01}; +var \u{13D02}; +var \u{13D03}; +var \u{13D04}; +var \u{13D05}; +var \u{13D06}; +var \u{13D07}; +var \u{13D08}; +var \u{13D09}; +var \u{13D0A}; +var \u{13D0B}; +var \u{13D0C}; +var \u{13D0D}; +var \u{13D0E}; +var \u{13D0F}; +var \u{13D10}; +var \u{13D11}; +var \u{13D12}; +var \u{13D13}; +var \u{13D14}; +var \u{13D15}; +var \u{13D16}; +var \u{13D17}; +var \u{13D18}; +var \u{13D19}; +var \u{13D1A}; +var \u{13D1B}; +var \u{13D1C}; +var \u{13D1D}; +var \u{13D1E}; +var \u{13D1F}; +var \u{13D20}; +var \u{13D21}; +var \u{13D22}; +var \u{13D23}; +var \u{13D24}; +var \u{13D25}; +var \u{13D26}; +var \u{13D27}; +var \u{13D28}; +var \u{13D29}; +var \u{13D2A}; +var \u{13D2B}; +var \u{13D2C}; +var \u{13D2D}; +var \u{13D2E}; +var \u{13D2F}; +var \u{13D30}; +var \u{13D31}; +var \u{13D32}; +var \u{13D33}; +var \u{13D34}; +var \u{13D35}; +var \u{13D36}; +var \u{13D37}; +var \u{13D38}; +var \u{13D39}; +var \u{13D3A}; +var \u{13D3B}; +var \u{13D3C}; +var \u{13D3D}; +var \u{13D3E}; +var \u{13D3F}; +var \u{13D40}; +var \u{13D41}; +var \u{13D42}; +var \u{13D43}; +var \u{13D44}; +var \u{13D45}; +var \u{13D46}; +var \u{13D47}; +var \u{13D48}; +var \u{13D49}; +var \u{13D4A}; +var \u{13D4B}; +var \u{13D4C}; +var \u{13D4D}; +var \u{13D4E}; +var \u{13D4F}; +var \u{13D50}; +var \u{13D51}; +var \u{13D52}; +var \u{13D53}; +var \u{13D54}; +var \u{13D55}; +var \u{13D56}; +var \u{13D57}; +var \u{13D58}; +var \u{13D59}; +var \u{13D5A}; +var \u{13D5B}; +var \u{13D5C}; +var \u{13D5D}; +var \u{13D5E}; +var \u{13D5F}; +var \u{13D60}; +var \u{13D61}; +var \u{13D62}; +var \u{13D63}; +var \u{13D64}; +var \u{13D65}; +var \u{13D66}; +var \u{13D67}; +var \u{13D68}; +var \u{13D69}; +var \u{13D6A}; +var \u{13D6B}; +var \u{13D6C}; +var \u{13D6D}; +var \u{13D6E}; +var \u{13D6F}; +var \u{13D70}; +var \u{13D71}; +var \u{13D72}; +var \u{13D73}; +var \u{13D74}; +var \u{13D75}; +var \u{13D76}; +var \u{13D77}; +var \u{13D78}; +var \u{13D79}; +var \u{13D7A}; +var \u{13D7B}; +var \u{13D7C}; +var \u{13D7D}; +var \u{13D7E}; +var \u{13D7F}; +var \u{13D80}; +var \u{13D81}; +var \u{13D82}; +var \u{13D83}; +var \u{13D84}; +var \u{13D85}; +var \u{13D86}; +var \u{13D87}; +var \u{13D88}; +var \u{13D89}; +var \u{13D8A}; +var \u{13D8B}; +var \u{13D8C}; +var \u{13D8D}; +var \u{13D8E}; +var \u{13D8F}; +var \u{13D90}; +var \u{13D91}; +var \u{13D92}; +var \u{13D93}; +var \u{13D94}; +var \u{13D95}; +var \u{13D96}; +var \u{13D97}; +var \u{13D98}; +var \u{13D99}; +var \u{13D9A}; +var \u{13D9B}; +var \u{13D9C}; +var \u{13D9D}; +var \u{13D9E}; +var \u{13D9F}; +var \u{13DA0}; +var \u{13DA1}; +var \u{13DA2}; +var \u{13DA3}; +var \u{13DA4}; +var \u{13DA5}; +var \u{13DA6}; +var \u{13DA7}; +var \u{13DA8}; +var \u{13DA9}; +var \u{13DAA}; +var \u{13DAB}; +var \u{13DAC}; +var \u{13DAD}; +var \u{13DAE}; +var \u{13DAF}; +var \u{13DB0}; +var \u{13DB1}; +var \u{13DB2}; +var \u{13DB3}; +var \u{13DB4}; +var \u{13DB5}; +var \u{13DB6}; +var \u{13DB7}; +var \u{13DB8}; +var \u{13DB9}; +var \u{13DBA}; +var \u{13DBB}; +var \u{13DBC}; +var \u{13DBD}; +var \u{13DBE}; +var \u{13DBF}; +var \u{13DC0}; +var \u{13DC1}; +var \u{13DC2}; +var \u{13DC3}; +var \u{13DC4}; +var \u{13DC5}; +var \u{13DC6}; +var \u{13DC7}; +var \u{13DC8}; +var \u{13DC9}; +var \u{13DCA}; +var \u{13DCB}; +var \u{13DCC}; +var \u{13DCD}; +var \u{13DCE}; +var \u{13DCF}; +var \u{13DD0}; +var \u{13DD1}; +var \u{13DD2}; +var \u{13DD3}; +var \u{13DD4}; +var \u{13DD5}; +var \u{13DD6}; +var \u{13DD7}; +var \u{13DD8}; +var \u{13DD9}; +var \u{13DDA}; +var \u{13DDB}; +var \u{13DDC}; +var \u{13DDD}; +var \u{13DDE}; +var \u{13DDF}; +var \u{13DE0}; +var \u{13DE1}; +var \u{13DE2}; +var \u{13DE3}; +var \u{13DE4}; +var \u{13DE5}; +var \u{13DE6}; +var \u{13DE7}; +var \u{13DE8}; +var \u{13DE9}; +var \u{13DEA}; +var \u{13DEB}; +var \u{13DEC}; +var \u{13DED}; +var \u{13DEE}; +var \u{13DEF}; +var \u{13DF0}; +var \u{13DF1}; +var \u{13DF2}; +var \u{13DF3}; +var \u{13DF4}; +var \u{13DF5}; +var \u{13DF6}; +var \u{13DF7}; +var \u{13DF8}; +var \u{13DF9}; +var \u{13DFA}; +var \u{13DFB}; +var \u{13DFC}; +var \u{13DFD}; +var \u{13DFE}; +var \u{13DFF}; +var \u{13E00}; +var \u{13E01}; +var \u{13E02}; +var \u{13E03}; +var \u{13E04}; +var \u{13E05}; +var \u{13E06}; +var \u{13E07}; +var \u{13E08}; +var \u{13E09}; +var \u{13E0A}; +var \u{13E0B}; +var \u{13E0C}; +var \u{13E0D}; +var \u{13E0E}; +var \u{13E0F}; +var \u{13E10}; +var \u{13E11}; +var \u{13E12}; +var \u{13E13}; +var \u{13E14}; +var \u{13E15}; +var \u{13E16}; +var \u{13E17}; +var \u{13E18}; +var \u{13E19}; +var \u{13E1A}; +var \u{13E1B}; +var \u{13E1C}; +var \u{13E1D}; +var \u{13E1E}; +var \u{13E1F}; +var \u{13E20}; +var \u{13E21}; +var \u{13E22}; +var \u{13E23}; +var \u{13E24}; +var \u{13E25}; +var \u{13E26}; +var \u{13E27}; +var \u{13E28}; +var \u{13E29}; +var \u{13E2A}; +var \u{13E2B}; +var \u{13E2C}; +var \u{13E2D}; +var \u{13E2E}; +var \u{13E2F}; +var \u{13E30}; +var \u{13E31}; +var \u{13E32}; +var \u{13E33}; +var \u{13E34}; +var \u{13E35}; +var \u{13E36}; +var \u{13E37}; +var \u{13E38}; +var \u{13E39}; +var \u{13E3A}; +var \u{13E3B}; +var \u{13E3C}; +var \u{13E3D}; +var \u{13E3E}; +var \u{13E3F}; +var \u{13E40}; +var \u{13E41}; +var \u{13E42}; +var \u{13E43}; +var \u{13E44}; +var \u{13E45}; +var \u{13E46}; +var \u{13E47}; +var \u{13E48}; +var \u{13E49}; +var \u{13E4A}; +var \u{13E4B}; +var \u{13E4C}; +var \u{13E4D}; +var \u{13E4E}; +var \u{13E4F}; +var \u{13E50}; +var \u{13E51}; +var \u{13E52}; +var \u{13E53}; +var \u{13E54}; +var \u{13E55}; +var \u{13E56}; +var \u{13E57}; +var \u{13E58}; +var \u{13E59}; +var \u{13E5A}; +var \u{13E5B}; +var \u{13E5C}; +var \u{13E5D}; +var \u{13E5E}; +var \u{13E5F}; +var \u{13E60}; +var \u{13E61}; +var \u{13E62}; +var \u{13E63}; +var \u{13E64}; +var \u{13E65}; +var \u{13E66}; +var \u{13E67}; +var \u{13E68}; +var \u{13E69}; +var \u{13E6A}; +var \u{13E6B}; +var \u{13E6C}; +var \u{13E6D}; +var \u{13E6E}; +var \u{13E6F}; +var \u{13E70}; +var \u{13E71}; +var \u{13E72}; +var \u{13E73}; +var \u{13E74}; +var \u{13E75}; +var \u{13E76}; +var \u{13E77}; +var \u{13E78}; +var \u{13E79}; +var \u{13E7A}; +var \u{13E7B}; +var \u{13E7C}; +var \u{13E7D}; +var \u{13E7E}; +var \u{13E7F}; +var \u{13E80}; +var \u{13E81}; +var \u{13E82}; +var \u{13E83}; +var \u{13E84}; +var \u{13E85}; +var \u{13E86}; +var \u{13E87}; +var \u{13E88}; +var \u{13E89}; +var \u{13E8A}; +var \u{13E8B}; +var \u{13E8C}; +var \u{13E8D}; +var \u{13E8E}; +var \u{13E8F}; +var \u{13E90}; +var \u{13E91}; +var \u{13E92}; +var \u{13E93}; +var \u{13E94}; +var \u{13E95}; +var \u{13E96}; +var \u{13E97}; +var \u{13E98}; +var \u{13E99}; +var \u{13E9A}; +var \u{13E9B}; +var \u{13E9C}; +var \u{13E9D}; +var \u{13E9E}; +var \u{13E9F}; +var \u{13EA0}; +var \u{13EA1}; +var \u{13EA2}; +var \u{13EA3}; +var \u{13EA4}; +var \u{13EA5}; +var \u{13EA6}; +var \u{13EA7}; +var \u{13EA8}; +var \u{13EA9}; +var \u{13EAA}; +var \u{13EAB}; +var \u{13EAC}; +var \u{13EAD}; +var \u{13EAE}; +var \u{13EAF}; +var \u{13EB0}; +var \u{13EB1}; +var \u{13EB2}; +var \u{13EB3}; +var \u{13EB4}; +var \u{13EB5}; +var \u{13EB6}; +var \u{13EB7}; +var \u{13EB8}; +var \u{13EB9}; +var \u{13EBA}; +var \u{13EBB}; +var \u{13EBC}; +var \u{13EBD}; +var \u{13EBE}; +var \u{13EBF}; +var \u{13EC0}; +var \u{13EC1}; +var \u{13EC2}; +var \u{13EC3}; +var \u{13EC4}; +var \u{13EC5}; +var \u{13EC6}; +var \u{13EC7}; +var \u{13EC8}; +var \u{13EC9}; +var \u{13ECA}; +var \u{13ECB}; +var \u{13ECC}; +var \u{13ECD}; +var \u{13ECE}; +var \u{13ECF}; +var \u{13ED0}; +var \u{13ED1}; +var \u{13ED2}; +var \u{13ED3}; +var \u{13ED4}; +var \u{13ED5}; +var \u{13ED6}; +var \u{13ED7}; +var \u{13ED8}; +var \u{13ED9}; +var \u{13EDA}; +var \u{13EDB}; +var \u{13EDC}; +var \u{13EDD}; +var \u{13EDE}; +var \u{13EDF}; +var \u{13EE0}; +var \u{13EE1}; +var \u{13EE2}; +var \u{13EE3}; +var \u{13EE4}; +var \u{13EE5}; +var \u{13EE6}; +var \u{13EE7}; +var \u{13EE8}; +var \u{13EE9}; +var \u{13EEA}; +var \u{13EEB}; +var \u{13EEC}; +var \u{13EED}; +var \u{13EEE}; +var \u{13EEF}; +var \u{13EF0}; +var \u{13EF1}; +var \u{13EF2}; +var \u{13EF3}; +var \u{13EF4}; +var \u{13EF5}; +var \u{13EF6}; +var \u{13EF7}; +var \u{13EF8}; +var \u{13EF9}; +var \u{13EFA}; +var \u{13EFB}; +var \u{13EFC}; +var \u{13EFD}; +var \u{13EFE}; +var \u{13EFF}; +var \u{13F00}; +var \u{13F01}; +var \u{13F02}; +var \u{13F03}; +var \u{13F04}; +var \u{13F05}; +var \u{13F06}; +var \u{13F07}; +var \u{13F08}; +var \u{13F09}; +var \u{13F0A}; +var \u{13F0B}; +var \u{13F0C}; +var \u{13F0D}; +var \u{13F0E}; +var \u{13F0F}; +var \u{13F10}; +var \u{13F11}; +var \u{13F12}; +var \u{13F13}; +var \u{13F14}; +var \u{13F15}; +var \u{13F16}; +var \u{13F17}; +var \u{13F18}; +var \u{13F19}; +var \u{13F1A}; +var \u{13F1B}; +var \u{13F1C}; +var \u{13F1D}; +var \u{13F1E}; +var \u{13F1F}; +var \u{13F20}; +var \u{13F21}; +var \u{13F22}; +var \u{13F23}; +var \u{13F24}; +var \u{13F25}; +var \u{13F26}; +var \u{13F27}; +var \u{13F28}; +var \u{13F29}; +var \u{13F2A}; +var \u{13F2B}; +var \u{13F2C}; +var \u{13F2D}; +var \u{13F2E}; +var \u{13F2F}; +var \u{13F30}; +var \u{13F31}; +var \u{13F32}; +var \u{13F33}; +var \u{13F34}; +var \u{13F35}; +var \u{13F36}; +var \u{13F37}; +var \u{13F38}; +var \u{13F39}; +var \u{13F3A}; +var \u{13F3B}; +var \u{13F3C}; +var \u{13F3D}; +var \u{13F3E}; +var \u{13F3F}; +var \u{13F40}; +var \u{13F41}; +var \u{13F42}; +var \u{13F43}; +var \u{13F44}; +var \u{13F45}; +var \u{13F46}; +var \u{13F47}; +var \u{13F48}; +var \u{13F49}; +var \u{13F4A}; +var \u{13F4B}; +var \u{13F4C}; +var \u{13F4D}; +var \u{13F4E}; +var \u{13F4F}; +var \u{13F50}; +var \u{13F51}; +var \u{13F52}; +var \u{13F53}; +var \u{13F54}; +var \u{13F55}; +var \u{13F56}; +var \u{13F57}; +var \u{13F58}; +var \u{13F59}; +var \u{13F5A}; +var \u{13F5B}; +var \u{13F5C}; +var \u{13F5D}; +var \u{13F5E}; +var \u{13F5F}; +var \u{13F60}; +var \u{13F61}; +var \u{13F62}; +var \u{13F63}; +var \u{13F64}; +var \u{13F65}; +var \u{13F66}; +var \u{13F67}; +var \u{13F68}; +var \u{13F69}; +var \u{13F6A}; +var \u{13F6B}; +var \u{13F6C}; +var \u{13F6D}; +var \u{13F6E}; +var \u{13F6F}; +var \u{13F70}; +var \u{13F71}; +var \u{13F72}; +var \u{13F73}; +var \u{13F74}; +var \u{13F75}; +var \u{13F76}; +var \u{13F77}; +var \u{13F78}; +var \u{13F79}; +var \u{13F7A}; +var \u{13F7B}; +var \u{13F7C}; +var \u{13F7D}; +var \u{13F7E}; +var \u{13F7F}; +var \u{13F80}; +var \u{13F81}; +var \u{13F82}; +var \u{13F83}; +var \u{13F84}; +var \u{13F85}; +var \u{13F86}; +var \u{13F87}; +var \u{13F88}; +var \u{13F89}; +var \u{13F8A}; +var \u{13F8B}; +var \u{13F8C}; +var \u{13F8D}; +var \u{13F8E}; +var \u{13F8F}; +var \u{13F90}; +var \u{13F91}; +var \u{13F92}; +var \u{13F93}; +var \u{13F94}; +var \u{13F95}; +var \u{13F96}; +var \u{13F97}; +var \u{13F98}; +var \u{13F99}; +var \u{13F9A}; +var \u{13F9B}; +var \u{13F9C}; +var \u{13F9D}; +var \u{13F9E}; +var \u{13F9F}; +var \u{13FA0}; +var \u{13FA1}; +var \u{13FA2}; +var \u{13FA3}; +var \u{13FA4}; +var \u{13FA5}; +var \u{13FA6}; +var \u{13FA7}; +var \u{13FA8}; +var \u{13FA9}; +var \u{13FAA}; +var \u{13FAB}; +var \u{13FAC}; +var \u{13FAD}; +var \u{13FAE}; +var \u{13FAF}; +var \u{13FB0}; +var \u{13FB1}; +var \u{13FB2}; +var \u{13FB3}; +var \u{13FB4}; +var \u{13FB5}; +var \u{13FB6}; +var \u{13FB7}; +var \u{13FB8}; +var \u{13FB9}; +var \u{13FBA}; +var \u{13FBB}; +var \u{13FBC}; +var \u{13FBD}; +var \u{13FBE}; +var \u{13FBF}; +var \u{13FC0}; +var \u{13FC1}; +var \u{13FC2}; +var \u{13FC3}; +var \u{13FC4}; +var \u{13FC5}; +var \u{13FC6}; +var \u{13FC7}; +var \u{13FC8}; +var \u{13FC9}; +var \u{13FCA}; +var \u{13FCB}; +var \u{13FCC}; +var \u{13FCD}; +var \u{13FCE}; +var \u{13FCF}; +var \u{13FD0}; +var \u{13FD1}; +var \u{13FD2}; +var \u{13FD3}; +var \u{13FD4}; +var \u{13FD5}; +var \u{13FD6}; +var \u{13FD7}; +var \u{13FD8}; +var \u{13FD9}; +var \u{13FDA}; +var \u{13FDB}; +var \u{13FDC}; +var \u{13FDD}; +var \u{13FDE}; +var \u{13FDF}; +var \u{13FE0}; +var \u{13FE1}; +var \u{13FE2}; +var \u{13FE3}; +var \u{13FE4}; +var \u{13FE5}; +var \u{13FE6}; +var \u{13FE7}; +var \u{13FE8}; +var \u{13FE9}; +var \u{13FEA}; +var \u{13FEB}; +var \u{13FEC}; +var \u{13FED}; +var \u{13FEE}; +var \u{13FEF}; +var \u{13FF0}; +var \u{13FF1}; +var \u{13FF2}; +var \u{13FF3}; +var \u{13FF4}; +var \u{13FF5}; +var \u{13FF6}; +var \u{13FF7}; +var \u{13FF8}; +var \u{13FF9}; +var \u{13FFA}; +var \u{13FFB}; +var \u{13FFC}; +var \u{13FFD}; +var \u{13FFE}; +var \u{13FFF}; +var \u{14000}; +var \u{14001}; +var \u{14002}; +var \u{14003}; +var \u{14004}; +var \u{14005}; +var \u{14006}; +var \u{14007}; +var \u{14008}; +var \u{14009}; +var \u{1400A}; +var \u{1400B}; +var \u{1400C}; +var \u{1400D}; +var \u{1400E}; +var \u{1400F}; +var \u{14010}; +var \u{14011}; +var \u{14012}; +var \u{14013}; +var \u{14014}; +var \u{14015}; +var \u{14016}; +var \u{14017}; +var \u{14018}; +var \u{14019}; +var \u{1401A}; +var \u{1401B}; +var \u{1401C}; +var \u{1401D}; +var \u{1401E}; +var \u{1401F}; +var \u{14020}; +var \u{14021}; +var \u{14022}; +var \u{14023}; +var \u{14024}; +var \u{14025}; +var \u{14026}; +var \u{14027}; +var \u{14028}; +var \u{14029}; +var \u{1402A}; +var \u{1402B}; +var \u{1402C}; +var \u{1402D}; +var \u{1402E}; +var \u{1402F}; +var \u{14030}; +var \u{14031}; +var \u{14032}; +var \u{14033}; +var \u{14034}; +var \u{14035}; +var \u{14036}; +var \u{14037}; +var \u{14038}; +var \u{14039}; +var \u{1403A}; +var \u{1403B}; +var \u{1403C}; +var \u{1403D}; +var \u{1403E}; +var \u{1403F}; +var \u{14040}; +var \u{14041}; +var \u{14042}; +var \u{14043}; +var \u{14044}; +var \u{14045}; +var \u{14046}; +var \u{14047}; +var \u{14048}; +var \u{14049}; +var \u{1404A}; +var \u{1404B}; +var \u{1404C}; +var \u{1404D}; +var \u{1404E}; +var \u{1404F}; +var \u{14050}; +var \u{14051}; +var \u{14052}; +var \u{14053}; +var \u{14054}; +var \u{14055}; +var \u{14056}; +var \u{14057}; +var \u{14058}; +var \u{14059}; +var \u{1405A}; +var \u{1405B}; +var \u{1405C}; +var \u{1405D}; +var \u{1405E}; +var \u{1405F}; +var \u{14060}; +var \u{14061}; +var \u{14062}; +var \u{14063}; +var \u{14064}; +var \u{14065}; +var \u{14066}; +var \u{14067}; +var \u{14068}; +var \u{14069}; +var \u{1406A}; +var \u{1406B}; +var \u{1406C}; +var \u{1406D}; +var \u{1406E}; +var \u{1406F}; +var \u{14070}; +var \u{14071}; +var \u{14072}; +var \u{14073}; +var \u{14074}; +var \u{14075}; +var \u{14076}; +var \u{14077}; +var \u{14078}; +var \u{14079}; +var \u{1407A}; +var \u{1407B}; +var \u{1407C}; +var \u{1407D}; +var \u{1407E}; +var \u{1407F}; +var \u{14080}; +var \u{14081}; +var \u{14082}; +var \u{14083}; +var \u{14084}; +var \u{14085}; +var \u{14086}; +var \u{14087}; +var \u{14088}; +var \u{14089}; +var \u{1408A}; +var \u{1408B}; +var \u{1408C}; +var \u{1408D}; +var \u{1408E}; +var \u{1408F}; +var \u{14090}; +var \u{14091}; +var \u{14092}; +var \u{14093}; +var \u{14094}; +var \u{14095}; +var \u{14096}; +var \u{14097}; +var \u{14098}; +var \u{14099}; +var \u{1409A}; +var \u{1409B}; +var \u{1409C}; +var \u{1409D}; +var \u{1409E}; +var \u{1409F}; +var \u{140A0}; +var \u{140A1}; +var \u{140A2}; +var \u{140A3}; +var \u{140A4}; +var \u{140A5}; +var \u{140A6}; +var \u{140A7}; +var \u{140A8}; +var \u{140A9}; +var \u{140AA}; +var \u{140AB}; +var \u{140AC}; +var \u{140AD}; +var \u{140AE}; +var \u{140AF}; +var \u{140B0}; +var \u{140B1}; +var \u{140B2}; +var \u{140B3}; +var \u{140B4}; +var \u{140B5}; +var \u{140B6}; +var \u{140B7}; +var \u{140B8}; +var \u{140B9}; +var \u{140BA}; +var \u{140BB}; +var \u{140BC}; +var \u{140BD}; +var \u{140BE}; +var \u{140BF}; +var \u{140C0}; +var \u{140C1}; +var \u{140C2}; +var \u{140C3}; +var \u{140C4}; +var \u{140C5}; +var \u{140C6}; +var \u{140C7}; +var \u{140C8}; +var \u{140C9}; +var \u{140CA}; +var \u{140CB}; +var \u{140CC}; +var \u{140CD}; +var \u{140CE}; +var \u{140CF}; +var \u{140D0}; +var \u{140D1}; +var \u{140D2}; +var \u{140D3}; +var \u{140D4}; +var \u{140D5}; +var \u{140D6}; +var \u{140D7}; +var \u{140D8}; +var \u{140D9}; +var \u{140DA}; +var \u{140DB}; +var \u{140DC}; +var \u{140DD}; +var \u{140DE}; +var \u{140DF}; +var \u{140E0}; +var \u{140E1}; +var \u{140E2}; +var \u{140E3}; +var \u{140E4}; +var \u{140E5}; +var \u{140E6}; +var \u{140E7}; +var \u{140E8}; +var \u{140E9}; +var \u{140EA}; +var \u{140EB}; +var \u{140EC}; +var \u{140ED}; +var \u{140EE}; +var \u{140EF}; +var \u{140F0}; +var \u{140F1}; +var \u{140F2}; +var \u{140F3}; +var \u{140F4}; +var \u{140F5}; +var \u{140F6}; +var \u{140F7}; +var \u{140F8}; +var \u{140F9}; +var \u{140FA}; +var \u{140FB}; +var \u{140FC}; +var \u{140FD}; +var \u{140FE}; +var \u{140FF}; +var \u{14100}; +var \u{14101}; +var \u{14102}; +var \u{14103}; +var \u{14104}; +var \u{14105}; +var \u{14106}; +var \u{14107}; +var \u{14108}; +var \u{14109}; +var \u{1410A}; +var \u{1410B}; +var \u{1410C}; +var \u{1410D}; +var \u{1410E}; +var \u{1410F}; +var \u{14110}; +var \u{14111}; +var \u{14112}; +var \u{14113}; +var \u{14114}; +var \u{14115}; +var \u{14116}; +var \u{14117}; +var \u{14118}; +var \u{14119}; +var \u{1411A}; +var \u{1411B}; +var \u{1411C}; +var \u{1411D}; +var \u{1411E}; +var \u{1411F}; +var \u{14120}; +var \u{14121}; +var \u{14122}; +var \u{14123}; +var \u{14124}; +var \u{14125}; +var \u{14126}; +var \u{14127}; +var \u{14128}; +var \u{14129}; +var \u{1412A}; +var \u{1412B}; +var \u{1412C}; +var \u{1412D}; +var \u{1412E}; +var \u{1412F}; +var \u{14130}; +var \u{14131}; +var \u{14132}; +var \u{14133}; +var \u{14134}; +var \u{14135}; +var \u{14136}; +var \u{14137}; +var \u{14138}; +var \u{14139}; +var \u{1413A}; +var \u{1413B}; +var \u{1413C}; +var \u{1413D}; +var \u{1413E}; +var \u{1413F}; +var \u{14140}; +var \u{14141}; +var \u{14142}; +var \u{14143}; +var \u{14144}; +var \u{14145}; +var \u{14146}; +var \u{14147}; +var \u{14148}; +var \u{14149}; +var \u{1414A}; +var \u{1414B}; +var \u{1414C}; +var \u{1414D}; +var \u{1414E}; +var \u{1414F}; +var \u{14150}; +var \u{14151}; +var \u{14152}; +var \u{14153}; +var \u{14154}; +var \u{14155}; +var \u{14156}; +var \u{14157}; +var \u{14158}; +var \u{14159}; +var \u{1415A}; +var \u{1415B}; +var \u{1415C}; +var \u{1415D}; +var \u{1415E}; +var \u{1415F}; +var \u{14160}; +var \u{14161}; +var \u{14162}; +var \u{14163}; +var \u{14164}; +var \u{14165}; +var \u{14166}; +var \u{14167}; +var \u{14168}; +var \u{14169}; +var \u{1416A}; +var \u{1416B}; +var \u{1416C}; +var \u{1416D}; +var \u{1416E}; +var \u{1416F}; +var \u{14170}; +var \u{14171}; +var \u{14172}; +var \u{14173}; +var \u{14174}; +var \u{14175}; +var \u{14176}; +var \u{14177}; +var \u{14178}; +var \u{14179}; +var \u{1417A}; +var \u{1417B}; +var \u{1417C}; +var \u{1417D}; +var \u{1417E}; +var \u{1417F}; +var \u{14180}; +var \u{14181}; +var \u{14182}; +var \u{14183}; +var \u{14184}; +var \u{14185}; +var \u{14186}; +var \u{14187}; +var \u{14188}; +var \u{14189}; +var \u{1418A}; +var \u{1418B}; +var \u{1418C}; +var \u{1418D}; +var \u{1418E}; +var \u{1418F}; +var \u{14190}; +var \u{14191}; +var \u{14192}; +var \u{14193}; +var \u{14194}; +var \u{14195}; +var \u{14196}; +var \u{14197}; +var \u{14198}; +var \u{14199}; +var \u{1419A}; +var \u{1419B}; +var \u{1419C}; +var \u{1419D}; +var \u{1419E}; +var \u{1419F}; +var \u{141A0}; +var \u{141A1}; +var \u{141A2}; +var \u{141A3}; +var \u{141A4}; +var \u{141A5}; +var \u{141A6}; +var \u{141A7}; +var \u{141A8}; +var \u{141A9}; +var \u{141AA}; +var \u{141AB}; +var \u{141AC}; +var \u{141AD}; +var \u{141AE}; +var \u{141AF}; +var \u{141B0}; +var \u{141B1}; +var \u{141B2}; +var \u{141B3}; +var \u{141B4}; +var \u{141B5}; +var \u{141B6}; +var \u{141B7}; +var \u{141B8}; +var \u{141B9}; +var \u{141BA}; +var \u{141BB}; +var \u{141BC}; +var \u{141BD}; +var \u{141BE}; +var \u{141BF}; +var \u{141C0}; +var \u{141C1}; +var \u{141C2}; +var \u{141C3}; +var \u{141C4}; +var \u{141C5}; +var \u{141C6}; +var \u{141C7}; +var \u{141C8}; +var \u{141C9}; +var \u{141CA}; +var \u{141CB}; +var \u{141CC}; +var \u{141CD}; +var \u{141CE}; +var \u{141CF}; +var \u{141D0}; +var \u{141D1}; +var \u{141D2}; +var \u{141D3}; +var \u{141D4}; +var \u{141D5}; +var \u{141D6}; +var \u{141D7}; +var \u{141D8}; +var \u{141D9}; +var \u{141DA}; +var \u{141DB}; +var \u{141DC}; +var \u{141DD}; +var \u{141DE}; +var \u{141DF}; +var \u{141E0}; +var \u{141E1}; +var \u{141E2}; +var \u{141E3}; +var \u{141E4}; +var \u{141E5}; +var \u{141E6}; +var \u{141E7}; +var \u{141E8}; +var \u{141E9}; +var \u{141EA}; +var \u{141EB}; +var \u{141EC}; +var \u{141ED}; +var \u{141EE}; +var \u{141EF}; +var \u{141F0}; +var \u{141F1}; +var \u{141F2}; +var \u{141F3}; +var \u{141F4}; +var \u{141F5}; +var \u{141F6}; +var \u{141F7}; +var \u{141F8}; +var \u{141F9}; +var \u{141FA}; +var \u{141FB}; +var \u{141FC}; +var \u{141FD}; +var \u{141FE}; +var \u{141FF}; +var \u{14200}; +var \u{14201}; +var \u{14202}; +var \u{14203}; +var \u{14204}; +var \u{14205}; +var \u{14206}; +var \u{14207}; +var \u{14208}; +var \u{14209}; +var \u{1420A}; +var \u{1420B}; +var \u{1420C}; +var \u{1420D}; +var \u{1420E}; +var \u{1420F}; +var \u{14210}; +var \u{14211}; +var \u{14212}; +var \u{14213}; +var \u{14214}; +var \u{14215}; +var \u{14216}; +var \u{14217}; +var \u{14218}; +var \u{14219}; +var \u{1421A}; +var \u{1421B}; +var \u{1421C}; +var \u{1421D}; +var \u{1421E}; +var \u{1421F}; +var \u{14220}; +var \u{14221}; +var \u{14222}; +var \u{14223}; +var \u{14224}; +var \u{14225}; +var \u{14226}; +var \u{14227}; +var \u{14228}; +var \u{14229}; +var \u{1422A}; +var \u{1422B}; +var \u{1422C}; +var \u{1422D}; +var \u{1422E}; +var \u{1422F}; +var \u{14230}; +var \u{14231}; +var \u{14232}; +var \u{14233}; +var \u{14234}; +var \u{14235}; +var \u{14236}; +var \u{14237}; +var \u{14238}; +var \u{14239}; +var \u{1423A}; +var \u{1423B}; +var \u{1423C}; +var \u{1423D}; +var \u{1423E}; +var \u{1423F}; +var \u{14240}; +var \u{14241}; +var \u{14242}; +var \u{14243}; +var \u{14244}; +var \u{14245}; +var \u{14246}; +var \u{14247}; +var \u{14248}; +var \u{14249}; +var \u{1424A}; +var \u{1424B}; +var \u{1424C}; +var \u{1424D}; +var \u{1424E}; +var \u{1424F}; +var \u{14250}; +var \u{14251}; +var \u{14252}; +var \u{14253}; +var \u{14254}; +var \u{14255}; +var \u{14256}; +var \u{14257}; +var \u{14258}; +var \u{14259}; +var \u{1425A}; +var \u{1425B}; +var \u{1425C}; +var \u{1425D}; +var \u{1425E}; +var \u{1425F}; +var \u{14260}; +var \u{14261}; +var \u{14262}; +var \u{14263}; +var \u{14264}; +var \u{14265}; +var \u{14266}; +var \u{14267}; +var \u{14268}; +var \u{14269}; +var \u{1426A}; +var \u{1426B}; +var \u{1426C}; +var \u{1426D}; +var \u{1426E}; +var \u{1426F}; +var \u{14270}; +var \u{14271}; +var \u{14272}; +var \u{14273}; +var \u{14274}; +var \u{14275}; +var \u{14276}; +var \u{14277}; +var \u{14278}; +var \u{14279}; +var \u{1427A}; +var \u{1427B}; +var \u{1427C}; +var \u{1427D}; +var \u{1427E}; +var \u{1427F}; +var \u{14280}; +var \u{14281}; +var \u{14282}; +var \u{14283}; +var \u{14284}; +var \u{14285}; +var \u{14286}; +var \u{14287}; +var \u{14288}; +var \u{14289}; +var \u{1428A}; +var \u{1428B}; +var \u{1428C}; +var \u{1428D}; +var \u{1428E}; +var \u{1428F}; +var \u{14290}; +var \u{14291}; +var \u{14292}; +var \u{14293}; +var \u{14294}; +var \u{14295}; +var \u{14296}; +var \u{14297}; +var \u{14298}; +var \u{14299}; +var \u{1429A}; +var \u{1429B}; +var \u{1429C}; +var \u{1429D}; +var \u{1429E}; +var \u{1429F}; +var \u{142A0}; +var \u{142A1}; +var \u{142A2}; +var \u{142A3}; +var \u{142A4}; +var \u{142A5}; +var \u{142A6}; +var \u{142A7}; +var \u{142A8}; +var \u{142A9}; +var \u{142AA}; +var \u{142AB}; +var \u{142AC}; +var \u{142AD}; +var \u{142AE}; +var \u{142AF}; +var \u{142B0}; +var \u{142B1}; +var \u{142B2}; +var \u{142B3}; +var \u{142B4}; +var \u{142B5}; +var \u{142B6}; +var \u{142B7}; +var \u{142B8}; +var \u{142B9}; +var \u{142BA}; +var \u{142BB}; +var \u{142BC}; +var \u{142BD}; +var \u{142BE}; +var \u{142BF}; +var \u{142C0}; +var \u{142C1}; +var \u{142C2}; +var \u{142C3}; +var \u{142C4}; +var \u{142C5}; +var \u{142C6}; +var \u{142C7}; +var \u{142C8}; +var \u{142C9}; +var \u{142CA}; +var \u{142CB}; +var \u{142CC}; +var \u{142CD}; +var \u{142CE}; +var \u{142CF}; +var \u{142D0}; +var \u{142D1}; +var \u{142D2}; +var \u{142D3}; +var \u{142D4}; +var \u{142D5}; +var \u{142D6}; +var \u{142D7}; +var \u{142D8}; +var \u{142D9}; +var \u{142DA}; +var \u{142DB}; +var \u{142DC}; +var \u{142DD}; +var \u{142DE}; +var \u{142DF}; +var \u{142E0}; +var \u{142E1}; +var \u{142E2}; +var \u{142E3}; +var \u{142E4}; +var \u{142E5}; +var \u{142E6}; +var \u{142E7}; +var \u{142E8}; +var \u{142E9}; +var \u{142EA}; +var \u{142EB}; +var \u{142EC}; +var \u{142ED}; +var \u{142EE}; +var \u{142EF}; +var \u{142F0}; +var \u{142F1}; +var \u{142F2}; +var \u{142F3}; +var \u{142F4}; +var \u{142F5}; +var \u{142F6}; +var \u{142F7}; +var \u{142F8}; +var \u{142F9}; +var \u{142FA}; +var \u{142FB}; +var \u{142FC}; +var \u{142FD}; +var \u{142FE}; +var \u{142FF}; +var \u{14300}; +var \u{14301}; +var \u{14302}; +var \u{14303}; +var \u{14304}; +var \u{14305}; +var \u{14306}; +var \u{14307}; +var \u{14308}; +var \u{14309}; +var \u{1430A}; +var \u{1430B}; +var \u{1430C}; +var \u{1430D}; +var \u{1430E}; +var \u{1430F}; +var \u{14310}; +var \u{14311}; +var \u{14312}; +var \u{14313}; +var \u{14314}; +var \u{14315}; +var \u{14316}; +var \u{14317}; +var \u{14318}; +var \u{14319}; +var \u{1431A}; +var \u{1431B}; +var \u{1431C}; +var \u{1431D}; +var \u{1431E}; +var \u{1431F}; +var \u{14320}; +var \u{14321}; +var \u{14322}; +var \u{14323}; +var \u{14324}; +var \u{14325}; +var \u{14326}; +var \u{14327}; +var \u{14328}; +var \u{14329}; +var \u{1432A}; +var \u{1432B}; +var \u{1432C}; +var \u{1432D}; +var \u{1432E}; +var \u{1432F}; +var \u{14330}; +var \u{14331}; +var \u{14332}; +var \u{14333}; +var \u{14334}; +var \u{14335}; +var \u{14336}; +var \u{14337}; +var \u{14338}; +var \u{14339}; +var \u{1433A}; +var \u{1433B}; +var \u{1433C}; +var \u{1433D}; +var \u{1433E}; +var \u{1433F}; +var \u{14340}; +var \u{14341}; +var \u{14342}; +var \u{14343}; +var \u{14344}; +var \u{14345}; +var \u{14346}; +var \u{14347}; +var \u{14348}; +var \u{14349}; +var \u{1434A}; +var \u{1434B}; +var \u{1434C}; +var \u{1434D}; +var \u{1434E}; +var \u{1434F}; +var \u{14350}; +var \u{14351}; +var \u{14352}; +var \u{14353}; +var \u{14354}; +var \u{14355}; +var \u{14356}; +var \u{14357}; +var \u{14358}; +var \u{14359}; +var \u{1435A}; +var \u{1435B}; +var \u{1435C}; +var \u{1435D}; +var \u{1435E}; +var \u{1435F}; +var \u{14360}; +var \u{14361}; +var \u{14362}; +var \u{14363}; +var \u{14364}; +var \u{14365}; +var \u{14366}; +var \u{14367}; +var \u{14368}; +var \u{14369}; +var \u{1436A}; +var \u{1436B}; +var \u{1436C}; +var \u{1436D}; +var \u{1436E}; +var \u{1436F}; +var \u{14370}; +var \u{14371}; +var \u{14372}; +var \u{14373}; +var \u{14374}; +var \u{14375}; +var \u{14376}; +var \u{14377}; +var \u{14378}; +var \u{14379}; +var \u{1437A}; +var \u{1437B}; +var \u{1437C}; +var \u{1437D}; +var \u{1437E}; +var \u{1437F}; +var \u{14380}; +var \u{14381}; +var \u{14382}; +var \u{14383}; +var \u{14384}; +var \u{14385}; +var \u{14386}; +var \u{14387}; +var \u{14388}; +var \u{14389}; +var \u{1438A}; +var \u{1438B}; +var \u{1438C}; +var \u{1438D}; +var \u{1438E}; +var \u{1438F}; +var \u{14390}; +var \u{14391}; +var \u{14392}; +var \u{14393}; +var \u{14394}; +var \u{14395}; +var \u{14396}; +var \u{14397}; +var \u{14398}; +var \u{14399}; +var \u{1439A}; +var \u{1439B}; +var \u{1439C}; +var \u{1439D}; +var \u{1439E}; +var \u{1439F}; +var \u{143A0}; +var \u{143A1}; +var \u{143A2}; +var \u{143A3}; +var \u{143A4}; +var \u{143A5}; +var \u{143A6}; +var \u{143A7}; +var \u{143A8}; +var \u{143A9}; +var \u{143AA}; +var \u{143AB}; +var \u{143AC}; +var \u{143AD}; +var \u{143AE}; +var \u{143AF}; +var \u{143B0}; +var \u{143B1}; +var \u{143B2}; +var \u{143B3}; +var \u{143B4}; +var \u{143B5}; +var \u{143B6}; +var \u{143B7}; +var \u{143B8}; +var \u{143B9}; +var \u{143BA}; +var \u{143BB}; +var \u{143BC}; +var \u{143BD}; +var \u{143BE}; +var \u{143BF}; +var \u{143C0}; +var \u{143C1}; +var \u{143C2}; +var \u{143C3}; +var \u{143C4}; +var \u{143C5}; +var \u{143C6}; +var \u{143C7}; +var \u{143C8}; +var \u{143C9}; +var \u{143CA}; +var \u{143CB}; +var \u{143CC}; +var \u{143CD}; +var \u{143CE}; +var \u{143CF}; +var \u{143D0}; +var \u{143D1}; +var \u{143D2}; +var \u{143D3}; +var \u{143D4}; +var \u{143D5}; +var \u{143D6}; +var \u{143D7}; +var \u{143D8}; +var \u{143D9}; +var \u{143DA}; +var \u{143DB}; +var \u{143DC}; +var \u{143DD}; +var \u{143DE}; +var \u{143DF}; +var \u{143E0}; +var \u{143E1}; +var \u{143E2}; +var \u{143E3}; +var \u{143E4}; +var \u{143E5}; +var \u{143E6}; +var \u{143E7}; +var \u{143E8}; +var \u{143E9}; +var \u{143EA}; +var \u{143EB}; +var \u{143EC}; +var \u{143ED}; +var \u{143EE}; +var \u{143EF}; +var \u{143F0}; +var \u{143F1}; +var \u{143F2}; +var \u{143F3}; +var \u{143F4}; +var \u{143F5}; +var \u{143F6}; +var \u{143F7}; +var \u{143F8}; +var \u{143F9}; +var \u{143FA}; +var \u{16100}; +var \u{16101}; +var \u{16102}; +var \u{16103}; +var \u{16104}; +var \u{16105}; +var \u{16106}; +var \u{16107}; +var \u{16108}; +var \u{16109}; +var \u{1610A}; +var \u{1610B}; +var \u{1610C}; +var \u{1610D}; +var \u{1610E}; +var \u{1610F}; +var \u{16110}; +var \u{16111}; +var \u{16112}; +var \u{16113}; +var \u{16114}; +var \u{16115}; +var \u{16116}; +var \u{16117}; +var \u{16118}; +var \u{16119}; +var \u{1611A}; +var \u{1611B}; +var \u{1611C}; +var \u{1611D}; +var \u{16D40}; +var \u{16D41}; +var \u{16D42}; +var \u{16D43}; +var \u{16D44}; +var \u{16D45}; +var \u{16D46}; +var \u{16D47}; +var \u{16D48}; +var \u{16D49}; +var \u{16D4A}; +var \u{16D4B}; +var \u{16D4C}; +var \u{16D4D}; +var \u{16D4E}; +var \u{16D4F}; +var \u{16D50}; +var \u{16D51}; +var \u{16D52}; +var \u{16D53}; +var \u{16D54}; +var \u{16D55}; +var \u{16D56}; +var \u{16D57}; +var \u{16D58}; +var \u{16D59}; +var \u{16D5A}; +var \u{16D5B}; +var \u{16D5C}; +var \u{16D5D}; +var \u{16D5E}; +var \u{16D5F}; +var \u{16D60}; +var \u{16D61}; +var \u{16D62}; +var \u{16D63}; +var \u{16D64}; +var \u{16D65}; +var \u{16D66}; +var \u{16D67}; +var \u{16D68}; +var \u{16D69}; +var \u{16D6A}; +var \u{16D6B}; +var \u{16D6C}; +var \u{18CFF}; +var \u{1E5D0}; +var \u{1E5D1}; +var \u{1E5D2}; +var \u{1E5D3}; +var \u{1E5D4}; +var \u{1E5D5}; +var \u{1E5D6}; +var \u{1E5D7}; +var \u{1E5D8}; +var \u{1E5D9}; +var \u{1E5DA}; +var \u{1E5DB}; +var \u{1E5DC}; +var \u{1E5DD}; +var \u{1E5DE}; +var \u{1E5DF}; +var \u{1E5E0}; +var \u{1E5E1}; +var \u{1E5E2}; +var \u{1E5E3}; +var \u{1E5E4}; +var \u{1E5E5}; +var \u{1E5E6}; +var \u{1E5E7}; +var \u{1E5E8}; +var \u{1E5E9}; +var \u{1E5EA}; +var \u{1E5EB}; +var \u{1E5EC}; +var \u{1E5ED}; +var \u{1E5F0}; diff --git a/test/language/identifiers/start-unicode-16.0.0.js b/test/language/identifiers/start-unicode-16.0.0.js new file mode 100644 index 00000000000..8c6617317eb --- /dev/null +++ b/test/language/identifiers/start-unicode-16.0.0.js @@ -0,0 +1,4315 @@ +// Copyright 2024 Mathias Bynens. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +author: Mathias Bynens +esid: sec-names-and-keywords +description: | + Test that Unicode v16.0.0 ID_Start characters are accepted as + identifier start characters. +info: | + Generated by https://github.com/mathiasbynens/caniunicode +---*/ + +var Ᲊ; +var ᲊ; +var Ɤ; +var Ꟍ; +var ꟍ; +var Ꟛ; +var ꟛ; +var Ƛ; +var 𐗀; +var 𐗁; +var 𐗂; +var 𐗃; +var 𐗄; +var 𐗅; +var 𐗆; +var 𐗇; +var 𐗈; +var 𐗉; +var 𐗊; +var 𐗋; +var 𐗌; +var 𐗍; +var 𐗎; +var 𐗏; +var 𐗐; +var 𐗑; +var 𐗒; +var 𐗓; +var 𐗔; +var 𐗕; +var 𐗖; +var 𐗗; +var 𐗘; +var 𐗙; +var 𐗚; +var 𐗛; +var 𐗜; +var 𐗝; +var 𐗞; +var 𐗟; +var 𐗠; +var 𐗡; +var 𐗢; +var 𐗣; +var 𐗤; +var 𐗥; +var 𐗦; +var 𐗧; +var 𐗨; +var 𐗩; +var 𐗪; +var 𐗫; +var 𐗬; +var 𐗭; +var 𐗮; +var 𐗯; +var 𐗰; +var 𐗱; +var 𐗲; +var 𐗳; +var 𐵊; +var 𐵋; +var 𐵌; +var 𐵍; +var 𐵎; +var 𐵏; +var 𐵐; +var 𐵑; +var 𐵒; +var 𐵓; +var 𐵔; +var 𐵕; +var 𐵖; +var 𐵗; +var 𐵘; +var 𐵙; +var 𐵚; +var 𐵛; +var 𐵜; +var 𐵝; +var 𐵞; +var 𐵟; +var 𐵠; +var 𐵡; +var 𐵢; +var 𐵣; +var 𐵤; +var 𐵥; +var 𐵯; +var 𐵰; +var 𐵱; +var 𐵲; +var 𐵳; +var 𐵴; +var 𐵵; +var 𐵶; +var 𐵷; +var 𐵸; +var 𐵹; +var 𐵺; +var 𐵻; +var 𐵼; +var 𐵽; +var 𐵾; +var 𐵿; +var 𐶀; +var 𐶁; +var 𐶂; +var 𐶃; +var 𐶄; +var 𐶅; +var 𐻂; +var 𐻃; +var 𐻄; +var 𑎀; +var 𑎁; +var 𑎂; +var 𑎃; +var 𑎄; +var 𑎅; +var 𑎆; +var 𑎇; +var 𑎈; +var 𑎉; +var 𑎋; +var 𑎎; +var 𑎐; +var 𑎑; +var 𑎒; +var 𑎓; +var 𑎔; +var 𑎕; +var 𑎖; +var 𑎗; +var 𑎘; +var 𑎙; +var 𑎚; +var 𑎛; +var 𑎜; +var 𑎝; +var 𑎞; +var 𑎟; +var 𑎠; +var 𑎡; +var 𑎢; +var 𑎣; +var 𑎤; +var 𑎥; +var 𑎦; +var 𑎧; +var 𑎨; +var 𑎩; +var 𑎪; +var 𑎫; +var 𑎬; +var 𑎭; +var 𑎮; +var 𑎯; +var 𑎰; +var 𑎱; +var 𑎲; +var 𑎳; +var 𑎴; +var 𑎵; +var 𑎷; +var 𑏑; +var 𑏓; +var 𑯀; +var 𑯁; +var 𑯂; +var 𑯃; +var 𑯄; +var 𑯅; +var 𑯆; +var 𑯇; +var 𑯈; +var 𑯉; +var 𑯊; +var 𑯋; +var 𑯌; +var 𑯍; +var 𑯎; +var 𑯏; +var 𑯐; +var 𑯑; +var 𑯒; +var 𑯓; +var 𑯔; +var 𑯕; +var 𑯖; +var 𑯗; +var 𑯘; +var 𑯙; +var 𑯚; +var 𑯛; +var 𑯜; +var 𑯝; +var 𑯞; +var 𑯟; +var 𑯠; +var 𓑠; +var 𓑡; +var 𓑢; +var 𓑣; +var 𓑤; +var 𓑥; +var 𓑦; +var 𓑧; +var 𓑨; +var 𓑩; +var 𓑪; +var 𓑫; +var 𓑬; +var 𓑭; +var 𓑮; +var 𓑯; +var 𓑰; +var 𓑱; +var 𓑲; +var 𓑳; +var 𓑴; +var 𓑵; +var 𓑶; +var 𓑷; +var 𓑸; +var 𓑹; +var 𓑺; +var 𓑻; +var 𓑼; +var 𓑽; +var 𓑾; +var 𓑿; +var 𓒀; +var 𓒁; +var 𓒂; +var 𓒃; +var 𓒄; +var 𓒅; +var 𓒆; +var 𓒇; +var 𓒈; +var 𓒉; +var 𓒊; +var 𓒋; +var 𓒌; +var 𓒍; +var 𓒎; +var 𓒏; +var 𓒐; +var 𓒑; +var 𓒒; +var 𓒓; +var 𓒔; +var 𓒕; +var 𓒖; +var 𓒗; +var 𓒘; +var 𓒙; +var 𓒚; +var 𓒛; +var 𓒜; +var 𓒝; +var 𓒞; +var 𓒟; +var 𓒠; +var 𓒡; +var 𓒢; +var 𓒣; +var 𓒤; +var 𓒥; +var 𓒦; +var 𓒧; +var 𓒨; +var 𓒩; +var 𓒪; +var 𓒫; +var 𓒬; +var 𓒭; +var 𓒮; +var 𓒯; +var 𓒰; +var 𓒱; +var 𓒲; +var 𓒳; +var 𓒴; +var 𓒵; +var 𓒶; +var 𓒷; +var 𓒸; +var 𓒹; +var 𓒺; +var 𓒻; +var 𓒼; +var 𓒽; +var 𓒾; +var 𓒿; +var 𓓀; +var 𓓁; +var 𓓂; +var 𓓃; +var 𓓄; +var 𓓅; +var 𓓆; +var 𓓇; +var 𓓈; +var 𓓉; +var 𓓊; +var 𓓋; +var 𓓌; +var 𓓍; +var 𓓎; +var 𓓏; +var 𓓐; +var 𓓑; +var 𓓒; +var 𓓓; +var 𓓔; +var 𓓕; +var 𓓖; +var 𓓗; +var 𓓘; +var 𓓙; +var 𓓚; +var 𓓛; +var 𓓜; +var 𓓝; +var 𓓞; +var 𓓟; +var 𓓠; +var 𓓡; +var 𓓢; +var 𓓣; +var 𓓤; +var 𓓥; +var 𓓦; +var 𓓧; +var 𓓨; +var 𓓩; +var 𓓪; +var 𓓫; +var 𓓬; +var 𓓭; +var 𓓮; +var 𓓯; +var 𓓰; +var 𓓱; +var 𓓲; +var 𓓳; +var 𓓴; +var 𓓵; +var 𓓶; +var 𓓷; +var 𓓸; +var 𓓹; +var 𓓺; +var 𓓻; +var 𓓼; +var 𓓽; +var 𓓾; +var 𓓿; +var 𓔀; +var 𓔁; +var 𓔂; +var 𓔃; +var 𓔄; +var 𓔅; +var 𓔆; +var 𓔇; +var 𓔈; +var 𓔉; +var 𓔊; +var 𓔋; +var 𓔌; +var 𓔍; +var 𓔎; +var 𓔏; +var 𓔐; +var 𓔑; +var 𓔒; +var 𓔓; +var 𓔔; +var 𓔕; +var 𓔖; +var 𓔗; +var 𓔘; +var 𓔙; +var 𓔚; +var 𓔛; +var 𓔜; +var 𓔝; +var 𓔞; +var 𓔟; +var 𓔠; +var 𓔡; +var 𓔢; +var 𓔣; +var 𓔤; +var 𓔥; +var 𓔦; +var 𓔧; +var 𓔨; +var 𓔩; +var 𓔪; +var 𓔫; +var 𓔬; +var 𓔭; +var 𓔮; +var 𓔯; +var 𓔰; +var 𓔱; +var 𓔲; +var 𓔳; +var 𓔴; +var 𓔵; +var 𓔶; +var 𓔷; +var 𓔸; +var 𓔹; +var 𓔺; +var 𓔻; +var 𓔼; +var 𓔽; +var 𓔾; +var 𓔿; +var 𓕀; +var 𓕁; +var 𓕂; +var 𓕃; +var 𓕄; +var 𓕅; +var 𓕆; +var 𓕇; +var 𓕈; +var 𓕉; +var 𓕊; +var 𓕋; +var 𓕌; +var 𓕍; +var 𓕎; +var 𓕏; +var 𓕐; +var 𓕑; +var 𓕒; +var 𓕓; +var 𓕔; +var 𓕕; +var 𓕖; +var 𓕗; +var 𓕘; +var 𓕙; +var 𓕚; +var 𓕛; +var 𓕜; +var 𓕝; +var 𓕞; +var 𓕟; +var 𓕠; +var 𓕡; +var 𓕢; +var 𓕣; +var 𓕤; +var 𓕥; +var 𓕦; +var 𓕧; +var 𓕨; +var 𓕩; +var 𓕪; +var 𓕫; +var 𓕬; +var 𓕭; +var 𓕮; +var 𓕯; +var 𓕰; +var 𓕱; +var 𓕲; +var 𓕳; +var 𓕴; +var 𓕵; +var 𓕶; +var 𓕷; +var 𓕸; +var 𓕹; +var 𓕺; +var 𓕻; +var 𓕼; +var 𓕽; +var 𓕾; +var 𓕿; +var 𓖀; +var 𓖁; +var 𓖂; +var 𓖃; +var 𓖄; +var 𓖅; +var 𓖆; +var 𓖇; +var 𓖈; +var 𓖉; +var 𓖊; +var 𓖋; +var 𓖌; +var 𓖍; +var 𓖎; +var 𓖏; +var 𓖐; +var 𓖑; +var 𓖒; +var 𓖓; +var 𓖔; +var 𓖕; +var 𓖖; +var 𓖗; +var 𓖘; +var 𓖙; +var 𓖚; +var 𓖛; +var 𓖜; +var 𓖝; +var 𓖞; +var 𓖟; +var 𓖠; +var 𓖡; +var 𓖢; +var 𓖣; +var 𓖤; +var 𓖥; +var 𓖦; +var 𓖧; +var 𓖨; +var 𓖩; +var 𓖪; +var 𓖫; +var 𓖬; +var 𓖭; +var 𓖮; +var 𓖯; +var 𓖰; +var 𓖱; +var 𓖲; +var 𓖳; +var 𓖴; +var 𓖵; +var 𓖶; +var 𓖷; +var 𓖸; +var 𓖹; +var 𓖺; +var 𓖻; +var 𓖼; +var 𓖽; +var 𓖾; +var 𓖿; +var 𓗀; +var 𓗁; +var 𓗂; +var 𓗃; +var 𓗄; +var 𓗅; +var 𓗆; +var 𓗇; +var 𓗈; +var 𓗉; +var 𓗊; +var 𓗋; +var 𓗌; +var 𓗍; +var 𓗎; +var 𓗏; +var 𓗐; +var 𓗑; +var 𓗒; +var 𓗓; +var 𓗔; +var 𓗕; +var 𓗖; +var 𓗗; +var 𓗘; +var 𓗙; +var 𓗚; +var 𓗛; +var 𓗜; +var 𓗝; +var 𓗞; +var 𓗟; +var 𓗠; +var 𓗡; +var 𓗢; +var 𓗣; +var 𓗤; +var 𓗥; +var 𓗦; +var 𓗧; +var 𓗨; +var 𓗩; +var 𓗪; +var 𓗫; +var 𓗬; +var 𓗭; +var 𓗮; +var 𓗯; +var 𓗰; +var 𓗱; +var 𓗲; +var 𓗳; +var 𓗴; +var 𓗵; +var 𓗶; +var 𓗷; +var 𓗸; +var 𓗹; +var 𓗺; +var 𓗻; +var 𓗼; +var 𓗽; +var 𓗾; +var 𓗿; +var 𓘀; +var 𓘁; +var 𓘂; +var 𓘃; +var 𓘄; +var 𓘅; +var 𓘆; +var 𓘇; +var 𓘈; +var 𓘉; +var 𓘊; +var 𓘋; +var 𓘌; +var 𓘍; +var 𓘎; +var 𓘏; +var 𓘐; +var 𓘑; +var 𓘒; +var 𓘓; +var 𓘔; +var 𓘕; +var 𓘖; +var 𓘗; +var 𓘘; +var 𓘙; +var 𓘚; +var 𓘛; +var 𓘜; +var 𓘝; +var 𓘞; +var 𓘟; +var 𓘠; +var 𓘡; +var 𓘢; +var 𓘣; +var 𓘤; +var 𓘥; +var 𓘦; +var 𓘧; +var 𓘨; +var 𓘩; +var 𓘪; +var 𓘫; +var 𓘬; +var 𓘭; +var 𓘮; +var 𓘯; +var 𓘰; +var 𓘱; +var 𓘲; +var 𓘳; +var 𓘴; +var 𓘵; +var 𓘶; +var 𓘷; +var 𓘸; +var 𓘹; +var 𓘺; +var 𓘻; +var 𓘼; +var 𓘽; +var 𓘾; +var 𓘿; +var 𓙀; +var 𓙁; +var 𓙂; +var 𓙃; +var 𓙄; +var 𓙅; +var 𓙆; +var 𓙇; +var 𓙈; +var 𓙉; +var 𓙊; +var 𓙋; +var 𓙌; +var 𓙍; +var 𓙎; +var 𓙏; +var 𓙐; +var 𓙑; +var 𓙒; +var 𓙓; +var 𓙔; +var 𓙕; +var 𓙖; +var 𓙗; +var 𓙘; +var 𓙙; +var 𓙚; +var 𓙛; +var 𓙜; +var 𓙝; +var 𓙞; +var 𓙟; +var 𓙠; +var 𓙡; +var 𓙢; +var 𓙣; +var 𓙤; +var 𓙥; +var 𓙦; +var 𓙧; +var 𓙨; +var 𓙩; +var 𓙪; +var 𓙫; +var 𓙬; +var 𓙭; +var 𓙮; +var 𓙯; +var 𓙰; +var 𓙱; +var 𓙲; +var 𓙳; +var 𓙴; +var 𓙵; +var 𓙶; +var 𓙷; +var 𓙸; +var 𓙹; +var 𓙺; +var 𓙻; +var 𓙼; +var 𓙽; +var 𓙾; +var 𓙿; +var 𓚀; +var 𓚁; +var 𓚂; +var 𓚃; +var 𓚄; +var 𓚅; +var 𓚆; +var 𓚇; +var 𓚈; +var 𓚉; +var 𓚊; +var 𓚋; +var 𓚌; +var 𓚍; +var 𓚎; +var 𓚏; +var 𓚐; +var 𓚑; +var 𓚒; +var 𓚓; +var 𓚔; +var 𓚕; +var 𓚖; +var 𓚗; +var 𓚘; +var 𓚙; +var 𓚚; +var 𓚛; +var 𓚜; +var 𓚝; +var 𓚞; +var 𓚟; +var 𓚠; +var 𓚡; +var 𓚢; +var 𓚣; +var 𓚤; +var 𓚥; +var 𓚦; +var 𓚧; +var 𓚨; +var 𓚩; +var 𓚪; +var 𓚫; +var 𓚬; +var 𓚭; +var 𓚮; +var 𓚯; +var 𓚰; +var 𓚱; +var 𓚲; +var 𓚳; +var 𓚴; +var 𓚵; +var 𓚶; +var 𓚷; +var 𓚸; +var 𓚹; +var 𓚺; +var 𓚻; +var 𓚼; +var 𓚽; +var 𓚾; +var 𓚿; +var 𓛀; +var 𓛁; +var 𓛂; +var 𓛃; +var 𓛄; +var 𓛅; +var 𓛆; +var 𓛇; +var 𓛈; +var 𓛉; +var 𓛊; +var 𓛋; +var 𓛌; +var 𓛍; +var 𓛎; +var 𓛏; +var 𓛐; +var 𓛑; +var 𓛒; +var 𓛓; +var 𓛔; +var 𓛕; +var 𓛖; +var 𓛗; +var 𓛘; +var 𓛙; +var 𓛚; +var 𓛛; +var 𓛜; +var 𓛝; +var 𓛞; +var 𓛟; +var 𓛠; +var 𓛡; +var 𓛢; +var 𓛣; +var 𓛤; +var 𓛥; +var 𓛦; +var 𓛧; +var 𓛨; +var 𓛩; +var 𓛪; +var 𓛫; +var 𓛬; +var 𓛭; +var 𓛮; +var 𓛯; +var 𓛰; +var 𓛱; +var 𓛲; +var 𓛳; +var 𓛴; +var 𓛵; +var 𓛶; +var 𓛷; +var 𓛸; +var 𓛹; +var 𓛺; +var 𓛻; +var 𓛼; +var 𓛽; +var 𓛾; +var 𓛿; +var 𓜀; +var 𓜁; +var 𓜂; +var 𓜃; +var 𓜄; +var 𓜅; +var 𓜆; +var 𓜇; +var 𓜈; +var 𓜉; +var 𓜊; +var 𓜋; +var 𓜌; +var 𓜍; +var 𓜎; +var 𓜏; +var 𓜐; +var 𓜑; +var 𓜒; +var 𓜓; +var 𓜔; +var 𓜕; +var 𓜖; +var 𓜗; +var 𓜘; +var 𓜙; +var 𓜚; +var 𓜛; +var 𓜜; +var 𓜝; +var 𓜞; +var 𓜟; +var 𓜠; +var 𓜡; +var 𓜢; +var 𓜣; +var 𓜤; +var 𓜥; +var 𓜦; +var 𓜧; +var 𓜨; +var 𓜩; +var 𓜪; +var 𓜫; +var 𓜬; +var 𓜭; +var 𓜮; +var 𓜯; +var 𓜰; +var 𓜱; +var 𓜲; +var 𓜳; +var 𓜴; +var 𓜵; +var 𓜶; +var 𓜷; +var 𓜸; +var 𓜹; +var 𓜺; +var 𓜻; +var 𓜼; +var 𓜽; +var 𓜾; +var 𓜿; +var 𓝀; +var 𓝁; +var 𓝂; +var 𓝃; +var 𓝄; +var 𓝅; +var 𓝆; +var 𓝇; +var 𓝈; +var 𓝉; +var 𓝊; +var 𓝋; +var 𓝌; +var 𓝍; +var 𓝎; +var 𓝏; +var 𓝐; +var 𓝑; +var 𓝒; +var 𓝓; +var 𓝔; +var 𓝕; +var 𓝖; +var 𓝗; +var 𓝘; +var 𓝙; +var 𓝚; +var 𓝛; +var 𓝜; +var 𓝝; +var 𓝞; +var 𓝟; +var 𓝠; +var 𓝡; +var 𓝢; +var 𓝣; +var 𓝤; +var 𓝥; +var 𓝦; +var 𓝧; +var 𓝨; +var 𓝩; +var 𓝪; +var 𓝫; +var 𓝬; +var 𓝭; +var 𓝮; +var 𓝯; +var 𓝰; +var 𓝱; +var 𓝲; +var 𓝳; +var 𓝴; +var 𓝵; +var 𓝶; +var 𓝷; +var 𓝸; +var 𓝹; +var 𓝺; +var 𓝻; +var 𓝼; +var 𓝽; +var 𓝾; +var 𓝿; +var 𓞀; +var 𓞁; +var 𓞂; +var 𓞃; +var 𓞄; +var 𓞅; +var 𓞆; +var 𓞇; +var 𓞈; +var 𓞉; +var 𓞊; +var 𓞋; +var 𓞌; +var 𓞍; +var 𓞎; +var 𓞏; +var 𓞐; +var 𓞑; +var 𓞒; +var 𓞓; +var 𓞔; +var 𓞕; +var 𓞖; +var 𓞗; +var 𓞘; +var 𓞙; +var 𓞚; +var 𓞛; +var 𓞜; +var 𓞝; +var 𓞞; +var 𓞟; +var 𓞠; +var 𓞡; +var 𓞢; +var 𓞣; +var 𓞤; +var 𓞥; +var 𓞦; +var 𓞧; +var 𓞨; +var 𓞩; +var 𓞪; +var 𓞫; +var 𓞬; +var 𓞭; +var 𓞮; +var 𓞯; +var 𓞰; +var 𓞱; +var 𓞲; +var 𓞳; +var 𓞴; +var 𓞵; +var 𓞶; +var 𓞷; +var 𓞸; +var 𓞹; +var 𓞺; +var 𓞻; +var 𓞼; +var 𓞽; +var 𓞾; +var 𓞿; +var 𓟀; +var 𓟁; +var 𓟂; +var 𓟃; +var 𓟄; +var 𓟅; +var 𓟆; +var 𓟇; +var 𓟈; +var 𓟉; +var 𓟊; +var 𓟋; +var 𓟌; +var 𓟍; +var 𓟎; +var 𓟏; +var 𓟐; +var 𓟑; +var 𓟒; +var 𓟓; +var 𓟔; +var 𓟕; +var 𓟖; +var 𓟗; +var 𓟘; +var 𓟙; +var 𓟚; +var 𓟛; +var 𓟜; +var 𓟝; +var 𓟞; +var 𓟟; +var 𓟠; +var 𓟡; +var 𓟢; +var 𓟣; +var 𓟤; +var 𓟥; +var 𓟦; +var 𓟧; +var 𓟨; +var 𓟩; +var 𓟪; +var 𓟫; +var 𓟬; +var 𓟭; +var 𓟮; +var 𓟯; +var 𓟰; +var 𓟱; +var 𓟲; +var 𓟳; +var 𓟴; +var 𓟵; +var 𓟶; +var 𓟷; +var 𓟸; +var 𓟹; +var 𓟺; +var 𓟻; +var 𓟼; +var 𓟽; +var 𓟾; +var 𓟿; +var 𓠀; +var 𓠁; +var 𓠂; +var 𓠃; +var 𓠄; +var 𓠅; +var 𓠆; +var 𓠇; +var 𓠈; +var 𓠉; +var 𓠊; +var 𓠋; +var 𓠌; +var 𓠍; +var 𓠎; +var 𓠏; +var 𓠐; +var 𓠑; +var 𓠒; +var 𓠓; +var 𓠔; +var 𓠕; +var 𓠖; +var 𓠗; +var 𓠘; +var 𓠙; +var 𓠚; +var 𓠛; +var 𓠜; +var 𓠝; +var 𓠞; +var 𓠟; +var 𓠠; +var 𓠡; +var 𓠢; +var 𓠣; +var 𓠤; +var 𓠥; +var 𓠦; +var 𓠧; +var 𓠨; +var 𓠩; +var 𓠪; +var 𓠫; +var 𓠬; +var 𓠭; +var 𓠮; +var 𓠯; +var 𓠰; +var 𓠱; +var 𓠲; +var 𓠳; +var 𓠴; +var 𓠵; +var 𓠶; +var 𓠷; +var 𓠸; +var 𓠹; +var 𓠺; +var 𓠻; +var 𓠼; +var 𓠽; +var 𓠾; +var 𓠿; +var 𓡀; +var 𓡁; +var 𓡂; +var 𓡃; +var 𓡄; +var 𓡅; +var 𓡆; +var 𓡇; +var 𓡈; +var 𓡉; +var 𓡊; +var 𓡋; +var 𓡌; +var 𓡍; +var 𓡎; +var 𓡏; +var 𓡐; +var 𓡑; +var 𓡒; +var 𓡓; +var 𓡔; +var 𓡕; +var 𓡖; +var 𓡗; +var 𓡘; +var 𓡙; +var 𓡚; +var 𓡛; +var 𓡜; +var 𓡝; +var 𓡞; +var 𓡟; +var 𓡠; +var 𓡡; +var 𓡢; +var 𓡣; +var 𓡤; +var 𓡥; +var 𓡦; +var 𓡧; +var 𓡨; +var 𓡩; +var 𓡪; +var 𓡫; +var 𓡬; +var 𓡭; +var 𓡮; +var 𓡯; +var 𓡰; +var 𓡱; +var 𓡲; +var 𓡳; +var 𓡴; +var 𓡵; +var 𓡶; +var 𓡷; +var 𓡸; +var 𓡹; +var 𓡺; +var 𓡻; +var 𓡼; +var 𓡽; +var 𓡾; +var 𓡿; +var 𓢀; +var 𓢁; +var 𓢂; +var 𓢃; +var 𓢄; +var 𓢅; +var 𓢆; +var 𓢇; +var 𓢈; +var 𓢉; +var 𓢊; +var 𓢋; +var 𓢌; +var 𓢍; +var 𓢎; +var 𓢏; +var 𓢐; +var 𓢑; +var 𓢒; +var 𓢓; +var 𓢔; +var 𓢕; +var 𓢖; +var 𓢗; +var 𓢘; +var 𓢙; +var 𓢚; +var 𓢛; +var 𓢜; +var 𓢝; +var 𓢞; +var 𓢟; +var 𓢠; +var 𓢡; +var 𓢢; +var 𓢣; +var 𓢤; +var 𓢥; +var 𓢦; +var 𓢧; +var 𓢨; +var 𓢩; +var 𓢪; +var 𓢫; +var 𓢬; +var 𓢭; +var 𓢮; +var 𓢯; +var 𓢰; +var 𓢱; +var 𓢲; +var 𓢳; +var 𓢴; +var 𓢵; +var 𓢶; +var 𓢷; +var 𓢸; +var 𓢹; +var 𓢺; +var 𓢻; +var 𓢼; +var 𓢽; +var 𓢾; +var 𓢿; +var 𓣀; +var 𓣁; +var 𓣂; +var 𓣃; +var 𓣄; +var 𓣅; +var 𓣆; +var 𓣇; +var 𓣈; +var 𓣉; +var 𓣊; +var 𓣋; +var 𓣌; +var 𓣍; +var 𓣎; +var 𓣏; +var 𓣐; +var 𓣑; +var 𓣒; +var 𓣓; +var 𓣔; +var 𓣕; +var 𓣖; +var 𓣗; +var 𓣘; +var 𓣙; +var 𓣚; +var 𓣛; +var 𓣜; +var 𓣝; +var 𓣞; +var 𓣟; +var 𓣠; +var 𓣡; +var 𓣢; +var 𓣣; +var 𓣤; +var 𓣥; +var 𓣦; +var 𓣧; +var 𓣨; +var 𓣩; +var 𓣪; +var 𓣫; +var 𓣬; +var 𓣭; +var 𓣮; +var 𓣯; +var 𓣰; +var 𓣱; +var 𓣲; +var 𓣳; +var 𓣴; +var 𓣵; +var 𓣶; +var 𓣷; +var 𓣸; +var 𓣹; +var 𓣺; +var 𓣻; +var 𓣼; +var 𓣽; +var 𓣾; +var 𓣿; +var 𓤀; +var 𓤁; +var 𓤂; +var 𓤃; +var 𓤄; +var 𓤅; +var 𓤆; +var 𓤇; +var 𓤈; +var 𓤉; +var 𓤊; +var 𓤋; +var 𓤌; +var 𓤍; +var 𓤎; +var 𓤏; +var 𓤐; +var 𓤑; +var 𓤒; +var 𓤓; +var 𓤔; +var 𓤕; +var 𓤖; +var 𓤗; +var 𓤘; +var 𓤙; +var 𓤚; +var 𓤛; +var 𓤜; +var 𓤝; +var 𓤞; +var 𓤟; +var 𓤠; +var 𓤡; +var 𓤢; +var 𓤣; +var 𓤤; +var 𓤥; +var 𓤦; +var 𓤧; +var 𓤨; +var 𓤩; +var 𓤪; +var 𓤫; +var 𓤬; +var 𓤭; +var 𓤮; +var 𓤯; +var 𓤰; +var 𓤱; +var 𓤲; +var 𓤳; +var 𓤴; +var 𓤵; +var 𓤶; +var 𓤷; +var 𓤸; +var 𓤹; +var 𓤺; +var 𓤻; +var 𓤼; +var 𓤽; +var 𓤾; +var 𓤿; +var 𓥀; +var 𓥁; +var 𓥂; +var 𓥃; +var 𓥄; +var 𓥅; +var 𓥆; +var 𓥇; +var 𓥈; +var 𓥉; +var 𓥊; +var 𓥋; +var 𓥌; +var 𓥍; +var 𓥎; +var 𓥏; +var 𓥐; +var 𓥑; +var 𓥒; +var 𓥓; +var 𓥔; +var 𓥕; +var 𓥖; +var 𓥗; +var 𓥘; +var 𓥙; +var 𓥚; +var 𓥛; +var 𓥜; +var 𓥝; +var 𓥞; +var 𓥟; +var 𓥠; +var 𓥡; +var 𓥢; +var 𓥣; +var 𓥤; +var 𓥥; +var 𓥦; +var 𓥧; +var 𓥨; +var 𓥩; +var 𓥪; +var 𓥫; +var 𓥬; +var 𓥭; +var 𓥮; +var 𓥯; +var 𓥰; +var 𓥱; +var 𓥲; +var 𓥳; +var 𓥴; +var 𓥵; +var 𓥶; +var 𓥷; +var 𓥸; +var 𓥹; +var 𓥺; +var 𓥻; +var 𓥼; +var 𓥽; +var 𓥾; +var 𓥿; +var 𓦀; +var 𓦁; +var 𓦂; +var 𓦃; +var 𓦄; +var 𓦅; +var 𓦆; +var 𓦇; +var 𓦈; +var 𓦉; +var 𓦊; +var 𓦋; +var 𓦌; +var 𓦍; +var 𓦎; +var 𓦏; +var 𓦐; +var 𓦑; +var 𓦒; +var 𓦓; +var 𓦔; +var 𓦕; +var 𓦖; +var 𓦗; +var 𓦘; +var 𓦙; +var 𓦚; +var 𓦛; +var 𓦜; +var 𓦝; +var 𓦞; +var 𓦟; +var 𓦠; +var 𓦡; +var 𓦢; +var 𓦣; +var 𓦤; +var 𓦥; +var 𓦦; +var 𓦧; +var 𓦨; +var 𓦩; +var 𓦪; +var 𓦫; +var 𓦬; +var 𓦭; +var 𓦮; +var 𓦯; +var 𓦰; +var 𓦱; +var 𓦲; +var 𓦳; +var 𓦴; +var 𓦵; +var 𓦶; +var 𓦷; +var 𓦸; +var 𓦹; +var 𓦺; +var 𓦻; +var 𓦼; +var 𓦽; +var 𓦾; +var 𓦿; +var 𓧀; +var 𓧁; +var 𓧂; +var 𓧃; +var 𓧄; +var 𓧅; +var 𓧆; +var 𓧇; +var 𓧈; +var 𓧉; +var 𓧊; +var 𓧋; +var 𓧌; +var 𓧍; +var 𓧎; +var 𓧏; +var 𓧐; +var 𓧑; +var 𓧒; +var 𓧓; +var 𓧔; +var 𓧕; +var 𓧖; +var 𓧗; +var 𓧘; +var 𓧙; +var 𓧚; +var 𓧛; +var 𓧜; +var 𓧝; +var 𓧞; +var 𓧟; +var 𓧠; +var 𓧡; +var 𓧢; +var 𓧣; +var 𓧤; +var 𓧥; +var 𓧦; +var 𓧧; +var 𓧨; +var 𓧩; +var 𓧪; +var 𓧫; +var 𓧬; +var 𓧭; +var 𓧮; +var 𓧯; +var 𓧰; +var 𓧱; +var 𓧲; +var 𓧳; +var 𓧴; +var 𓧵; +var 𓧶; +var 𓧷; +var 𓧸; +var 𓧹; +var 𓧺; +var 𓧻; +var 𓧼; +var 𓧽; +var 𓧾; +var 𓧿; +var 𓨀; +var 𓨁; +var 𓨂; +var 𓨃; +var 𓨄; +var 𓨅; +var 𓨆; +var 𓨇; +var 𓨈; +var 𓨉; +var 𓨊; +var 𓨋; +var 𓨌; +var 𓨍; +var 𓨎; +var 𓨏; +var 𓨐; +var 𓨑; +var 𓨒; +var 𓨓; +var 𓨔; +var 𓨕; +var 𓨖; +var 𓨗; +var 𓨘; +var 𓨙; +var 𓨚; +var 𓨛; +var 𓨜; +var 𓨝; +var 𓨞; +var 𓨟; +var 𓨠; +var 𓨡; +var 𓨢; +var 𓨣; +var 𓨤; +var 𓨥; +var 𓨦; +var 𓨧; +var 𓨨; +var 𓨩; +var 𓨪; +var 𓨫; +var 𓨬; +var 𓨭; +var 𓨮; +var 𓨯; +var 𓨰; +var 𓨱; +var 𓨲; +var 𓨳; +var 𓨴; +var 𓨵; +var 𓨶; +var 𓨷; +var 𓨸; +var 𓨹; +var 𓨺; +var 𓨻; +var 𓨼; +var 𓨽; +var 𓨾; +var 𓨿; +var 𓩀; +var 𓩁; +var 𓩂; +var 𓩃; +var 𓩄; +var 𓩅; +var 𓩆; +var 𓩇; +var 𓩈; +var 𓩉; +var 𓩊; +var 𓩋; +var 𓩌; +var 𓩍; +var 𓩎; +var 𓩏; +var 𓩐; +var 𓩑; +var 𓩒; +var 𓩓; +var 𓩔; +var 𓩕; +var 𓩖; +var 𓩗; +var 𓩘; +var 𓩙; +var 𓩚; +var 𓩛; +var 𓩜; +var 𓩝; +var 𓩞; +var 𓩟; +var 𓩠; +var 𓩡; +var 𓩢; +var 𓩣; +var 𓩤; +var 𓩥; +var 𓩦; +var 𓩧; +var 𓩨; +var 𓩩; +var 𓩪; +var 𓩫; +var 𓩬; +var 𓩭; +var 𓩮; +var 𓩯; +var 𓩰; +var 𓩱; +var 𓩲; +var 𓩳; +var 𓩴; +var 𓩵; +var 𓩶; +var 𓩷; +var 𓩸; +var 𓩹; +var 𓩺; +var 𓩻; +var 𓩼; +var 𓩽; +var 𓩾; +var 𓩿; +var 𓪀; +var 𓪁; +var 𓪂; +var 𓪃; +var 𓪄; +var 𓪅; +var 𓪆; +var 𓪇; +var 𓪈; +var 𓪉; +var 𓪊; +var 𓪋; +var 𓪌; +var 𓪍; +var 𓪎; +var 𓪏; +var 𓪐; +var 𓪑; +var 𓪒; +var 𓪓; +var 𓪔; +var 𓪕; +var 𓪖; +var 𓪗; +var 𓪘; +var 𓪙; +var 𓪚; +var 𓪛; +var 𓪜; +var 𓪝; +var 𓪞; +var 𓪟; +var 𓪠; +var 𓪡; +var 𓪢; +var 𓪣; +var 𓪤; +var 𓪥; +var 𓪦; +var 𓪧; +var 𓪨; +var 𓪩; +var 𓪪; +var 𓪫; +var 𓪬; +var 𓪭; +var 𓪮; +var 𓪯; +var 𓪰; +var 𓪱; +var 𓪲; +var 𓪳; +var 𓪴; +var 𓪵; +var 𓪶; +var 𓪷; +var 𓪸; +var 𓪹; +var 𓪺; +var 𓪻; +var 𓪼; +var 𓪽; +var 𓪾; +var 𓪿; +var 𓫀; +var 𓫁; +var 𓫂; +var 𓫃; +var 𓫄; +var 𓫅; +var 𓫆; +var 𓫇; +var 𓫈; +var 𓫉; +var 𓫊; +var 𓫋; +var 𓫌; +var 𓫍; +var 𓫎; +var 𓫏; +var 𓫐; +var 𓫑; +var 𓫒; +var 𓫓; +var 𓫔; +var 𓫕; +var 𓫖; +var 𓫗; +var 𓫘; +var 𓫙; +var 𓫚; +var 𓫛; +var 𓫜; +var 𓫝; +var 𓫞; +var 𓫟; +var 𓫠; +var 𓫡; +var 𓫢; +var 𓫣; +var 𓫤; +var 𓫥; +var 𓫦; +var 𓫧; +var 𓫨; +var 𓫩; +var 𓫪; +var 𓫫; +var 𓫬; +var 𓫭; +var 𓫮; +var 𓫯; +var 𓫰; +var 𓫱; +var 𓫲; +var 𓫳; +var 𓫴; +var 𓫵; +var 𓫶; +var 𓫷; +var 𓫸; +var 𓫹; +var 𓫺; +var 𓫻; +var 𓫼; +var 𓫽; +var 𓫾; +var 𓫿; +var 𓬀; +var 𓬁; +var 𓬂; +var 𓬃; +var 𓬄; +var 𓬅; +var 𓬆; +var 𓬇; +var 𓬈; +var 𓬉; +var 𓬊; +var 𓬋; +var 𓬌; +var 𓬍; +var 𓬎; +var 𓬏; +var 𓬐; +var 𓬑; +var 𓬒; +var 𓬓; +var 𓬔; +var 𓬕; +var 𓬖; +var 𓬗; +var 𓬘; +var 𓬙; +var 𓬚; +var 𓬛; +var 𓬜; +var 𓬝; +var 𓬞; +var 𓬟; +var 𓬠; +var 𓬡; +var 𓬢; +var 𓬣; +var 𓬤; +var 𓬥; +var 𓬦; +var 𓬧; +var 𓬨; +var 𓬩; +var 𓬪; +var 𓬫; +var 𓬬; +var 𓬭; +var 𓬮; +var 𓬯; +var 𓬰; +var 𓬱; +var 𓬲; +var 𓬳; +var 𓬴; +var 𓬵; +var 𓬶; +var 𓬷; +var 𓬸; +var 𓬹; +var 𓬺; +var 𓬻; +var 𓬼; +var 𓬽; +var 𓬾; +var 𓬿; +var 𓭀; +var 𓭁; +var 𓭂; +var 𓭃; +var 𓭄; +var 𓭅; +var 𓭆; +var 𓭇; +var 𓭈; +var 𓭉; +var 𓭊; +var 𓭋; +var 𓭌; +var 𓭍; +var 𓭎; +var 𓭏; +var 𓭐; +var 𓭑; +var 𓭒; +var 𓭓; +var 𓭔; +var 𓭕; +var 𓭖; +var 𓭗; +var 𓭘; +var 𓭙; +var 𓭚; +var 𓭛; +var 𓭜; +var 𓭝; +var 𓭞; +var 𓭟; +var 𓭠; +var 𓭡; +var 𓭢; +var 𓭣; +var 𓭤; +var 𓭥; +var 𓭦; +var 𓭧; +var 𓭨; +var 𓭩; +var 𓭪; +var 𓭫; +var 𓭬; +var 𓭭; +var 𓭮; +var 𓭯; +var 𓭰; +var 𓭱; +var 𓭲; +var 𓭳; +var 𓭴; +var 𓭵; +var 𓭶; +var 𓭷; +var 𓭸; +var 𓭹; +var 𓭺; +var 𓭻; +var 𓭼; +var 𓭽; +var 𓭾; +var 𓭿; +var 𓮀; +var 𓮁; +var 𓮂; +var 𓮃; +var 𓮄; +var 𓮅; +var 𓮆; +var 𓮇; +var 𓮈; +var 𓮉; +var 𓮊; +var 𓮋; +var 𓮌; +var 𓮍; +var 𓮎; +var 𓮏; +var 𓮐; +var 𓮑; +var 𓮒; +var 𓮓; +var 𓮔; +var 𓮕; +var 𓮖; +var 𓮗; +var 𓮘; +var 𓮙; +var 𓮚; +var 𓮛; +var 𓮜; +var 𓮝; +var 𓮞; +var 𓮟; +var 𓮠; +var 𓮡; +var 𓮢; +var 𓮣; +var 𓮤; +var 𓮥; +var 𓮦; +var 𓮧; +var 𓮨; +var 𓮩; +var 𓮪; +var 𓮫; +var 𓮬; +var 𓮭; +var 𓮮; +var 𓮯; +var 𓮰; +var 𓮱; +var 𓮲; +var 𓮳; +var 𓮴; +var 𓮵; +var 𓮶; +var 𓮷; +var 𓮸; +var 𓮹; +var 𓮺; +var 𓮻; +var 𓮼; +var 𓮽; +var 𓮾; +var 𓮿; +var 𓯀; +var 𓯁; +var 𓯂; +var 𓯃; +var 𓯄; +var 𓯅; +var 𓯆; +var 𓯇; +var 𓯈; +var 𓯉; +var 𓯊; +var 𓯋; +var 𓯌; +var 𓯍; +var 𓯎; +var 𓯏; +var 𓯐; +var 𓯑; +var 𓯒; +var 𓯓; +var 𓯔; +var 𓯕; +var 𓯖; +var 𓯗; +var 𓯘; +var 𓯙; +var 𓯚; +var 𓯛; +var 𓯜; +var 𓯝; +var 𓯞; +var 𓯟; +var 𓯠; +var 𓯡; +var 𓯢; +var 𓯣; +var 𓯤; +var 𓯥; +var 𓯦; +var 𓯧; +var 𓯨; +var 𓯩; +var 𓯪; +var 𓯫; +var 𓯬; +var 𓯭; +var 𓯮; +var 𓯯; +var 𓯰; +var 𓯱; +var 𓯲; +var 𓯳; +var 𓯴; +var 𓯵; +var 𓯶; +var 𓯷; +var 𓯸; +var 𓯹; +var 𓯺; +var 𓯻; +var 𓯼; +var 𓯽; +var 𓯾; +var 𓯿; +var 𓰀; +var 𓰁; +var 𓰂; +var 𓰃; +var 𓰄; +var 𓰅; +var 𓰆; +var 𓰇; +var 𓰈; +var 𓰉; +var 𓰊; +var 𓰋; +var 𓰌; +var 𓰍; +var 𓰎; +var 𓰏; +var 𓰐; +var 𓰑; +var 𓰒; +var 𓰓; +var 𓰔; +var 𓰕; +var 𓰖; +var 𓰗; +var 𓰘; +var 𓰙; +var 𓰚; +var 𓰛; +var 𓰜; +var 𓰝; +var 𓰞; +var 𓰟; +var 𓰠; +var 𓰡; +var 𓰢; +var 𓰣; +var 𓰤; +var 𓰥; +var 𓰦; +var 𓰧; +var 𓰨; +var 𓰩; +var 𓰪; +var 𓰫; +var 𓰬; +var 𓰭; +var 𓰮; +var 𓰯; +var 𓰰; +var 𓰱; +var 𓰲; +var 𓰳; +var 𓰴; +var 𓰵; +var 𓰶; +var 𓰷; +var 𓰸; +var 𓰹; +var 𓰺; +var 𓰻; +var 𓰼; +var 𓰽; +var 𓰾; +var 𓰿; +var 𓱀; +var 𓱁; +var 𓱂; +var 𓱃; +var 𓱄; +var 𓱅; +var 𓱆; +var 𓱇; +var 𓱈; +var 𓱉; +var 𓱊; +var 𓱋; +var 𓱌; +var 𓱍; +var 𓱎; +var 𓱏; +var 𓱐; +var 𓱑; +var 𓱒; +var 𓱓; +var 𓱔; +var 𓱕; +var 𓱖; +var 𓱗; +var 𓱘; +var 𓱙; +var 𓱚; +var 𓱛; +var 𓱜; +var 𓱝; +var 𓱞; +var 𓱟; +var 𓱠; +var 𓱡; +var 𓱢; +var 𓱣; +var 𓱤; +var 𓱥; +var 𓱦; +var 𓱧; +var 𓱨; +var 𓱩; +var 𓱪; +var 𓱫; +var 𓱬; +var 𓱭; +var 𓱮; +var 𓱯; +var 𓱰; +var 𓱱; +var 𓱲; +var 𓱳; +var 𓱴; +var 𓱵; +var 𓱶; +var 𓱷; +var 𓱸; +var 𓱹; +var 𓱺; +var 𓱻; +var 𓱼; +var 𓱽; +var 𓱾; +var 𓱿; +var 𓲀; +var 𓲁; +var 𓲂; +var 𓲃; +var 𓲄; +var 𓲅; +var 𓲆; +var 𓲇; +var 𓲈; +var 𓲉; +var 𓲊; +var 𓲋; +var 𓲌; +var 𓲍; +var 𓲎; +var 𓲏; +var 𓲐; +var 𓲑; +var 𓲒; +var 𓲓; +var 𓲔; +var 𓲕; +var 𓲖; +var 𓲗; +var 𓲘; +var 𓲙; +var 𓲚; +var 𓲛; +var 𓲜; +var 𓲝; +var 𓲞; +var 𓲟; +var 𓲠; +var 𓲡; +var 𓲢; +var 𓲣; +var 𓲤; +var 𓲥; +var 𓲦; +var 𓲧; +var 𓲨; +var 𓲩; +var 𓲪; +var 𓲫; +var 𓲬; +var 𓲭; +var 𓲮; +var 𓲯; +var 𓲰; +var 𓲱; +var 𓲲; +var 𓲳; +var 𓲴; +var 𓲵; +var 𓲶; +var 𓲷; +var 𓲸; +var 𓲹; +var 𓲺; +var 𓲻; +var 𓲼; +var 𓲽; +var 𓲾; +var 𓲿; +var 𓳀; +var 𓳁; +var 𓳂; +var 𓳃; +var 𓳄; +var 𓳅; +var 𓳆; +var 𓳇; +var 𓳈; +var 𓳉; +var 𓳊; +var 𓳋; +var 𓳌; +var 𓳍; +var 𓳎; +var 𓳏; +var 𓳐; +var 𓳑; +var 𓳒; +var 𓳓; +var 𓳔; +var 𓳕; +var 𓳖; +var 𓳗; +var 𓳘; +var 𓳙; +var 𓳚; +var 𓳛; +var 𓳜; +var 𓳝; +var 𓳞; +var 𓳟; +var 𓳠; +var 𓳡; +var 𓳢; +var 𓳣; +var 𓳤; +var 𓳥; +var 𓳦; +var 𓳧; +var 𓳨; +var 𓳩; +var 𓳪; +var 𓳫; +var 𓳬; +var 𓳭; +var 𓳮; +var 𓳯; +var 𓳰; +var 𓳱; +var 𓳲; +var 𓳳; +var 𓳴; +var 𓳵; +var 𓳶; +var 𓳷; +var 𓳸; +var 𓳹; +var 𓳺; +var 𓳻; +var 𓳼; +var 𓳽; +var 𓳾; +var 𓳿; +var 𓴀; +var 𓴁; +var 𓴂; +var 𓴃; +var 𓴄; +var 𓴅; +var 𓴆; +var 𓴇; +var 𓴈; +var 𓴉; +var 𓴊; +var 𓴋; +var 𓴌; +var 𓴍; +var 𓴎; +var 𓴏; +var 𓴐; +var 𓴑; +var 𓴒; +var 𓴓; +var 𓴔; +var 𓴕; +var 𓴖; +var 𓴗; +var 𓴘; +var 𓴙; +var 𓴚; +var 𓴛; +var 𓴜; +var 𓴝; +var 𓴞; +var 𓴟; +var 𓴠; +var 𓴡; +var 𓴢; +var 𓴣; +var 𓴤; +var 𓴥; +var 𓴦; +var 𓴧; +var 𓴨; +var 𓴩; +var 𓴪; +var 𓴫; +var 𓴬; +var 𓴭; +var 𓴮; +var 𓴯; +var 𓴰; +var 𓴱; +var 𓴲; +var 𓴳; +var 𓴴; +var 𓴵; +var 𓴶; +var 𓴷; +var 𓴸; +var 𓴹; +var 𓴺; +var 𓴻; +var 𓴼; +var 𓴽; +var 𓴾; +var 𓴿; +var 𓵀; +var 𓵁; +var 𓵂; +var 𓵃; +var 𓵄; +var 𓵅; +var 𓵆; +var 𓵇; +var 𓵈; +var 𓵉; +var 𓵊; +var 𓵋; +var 𓵌; +var 𓵍; +var 𓵎; +var 𓵏; +var 𓵐; +var 𓵑; +var 𓵒; +var 𓵓; +var 𓵔; +var 𓵕; +var 𓵖; +var 𓵗; +var 𓵘; +var 𓵙; +var 𓵚; +var 𓵛; +var 𓵜; +var 𓵝; +var 𓵞; +var 𓵟; +var 𓵠; +var 𓵡; +var 𓵢; +var 𓵣; +var 𓵤; +var 𓵥; +var 𓵦; +var 𓵧; +var 𓵨; +var 𓵩; +var 𓵪; +var 𓵫; +var 𓵬; +var 𓵭; +var 𓵮; +var 𓵯; +var 𓵰; +var 𓵱; +var 𓵲; +var 𓵳; +var 𓵴; +var 𓵵; +var 𓵶; +var 𓵷; +var 𓵸; +var 𓵹; +var 𓵺; +var 𓵻; +var 𓵼; +var 𓵽; +var 𓵾; +var 𓵿; +var 𓶀; +var 𓶁; +var 𓶂; +var 𓶃; +var 𓶄; +var 𓶅; +var 𓶆; +var 𓶇; +var 𓶈; +var 𓶉; +var 𓶊; +var 𓶋; +var 𓶌; +var 𓶍; +var 𓶎; +var 𓶏; +var 𓶐; +var 𓶑; +var 𓶒; +var 𓶓; +var 𓶔; +var 𓶕; +var 𓶖; +var 𓶗; +var 𓶘; +var 𓶙; +var 𓶚; +var 𓶛; +var 𓶜; +var 𓶝; +var 𓶞; +var 𓶟; +var 𓶠; +var 𓶡; +var 𓶢; +var 𓶣; +var 𓶤; +var 𓶥; +var 𓶦; +var 𓶧; +var 𓶨; +var 𓶩; +var 𓶪; +var 𓶫; +var 𓶬; +var 𓶭; +var 𓶮; +var 𓶯; +var 𓶰; +var 𓶱; +var 𓶲; +var 𓶳; +var 𓶴; +var 𓶵; +var 𓶶; +var 𓶷; +var 𓶸; +var 𓶹; +var 𓶺; +var 𓶻; +var 𓶼; +var 𓶽; +var 𓶾; +var 𓶿; +var 𓷀; +var 𓷁; +var 𓷂; +var 𓷃; +var 𓷄; +var 𓷅; +var 𓷆; +var 𓷇; +var 𓷈; +var 𓷉; +var 𓷊; +var 𓷋; +var 𓷌; +var 𓷍; +var 𓷎; +var 𓷏; +var 𓷐; +var 𓷑; +var 𓷒; +var 𓷓; +var 𓷔; +var 𓷕; +var 𓷖; +var 𓷗; +var 𓷘; +var 𓷙; +var 𓷚; +var 𓷛; +var 𓷜; +var 𓷝; +var 𓷞; +var 𓷟; +var 𓷠; +var 𓷡; +var 𓷢; +var 𓷣; +var 𓷤; +var 𓷥; +var 𓷦; +var 𓷧; +var 𓷨; +var 𓷩; +var 𓷪; +var 𓷫; +var 𓷬; +var 𓷭; +var 𓷮; +var 𓷯; +var 𓷰; +var 𓷱; +var 𓷲; +var 𓷳; +var 𓷴; +var 𓷵; +var 𓷶; +var 𓷷; +var 𓷸; +var 𓷹; +var 𓷺; +var 𓷻; +var 𓷼; +var 𓷽; +var 𓷾; +var 𓷿; +var 𓸀; +var 𓸁; +var 𓸂; +var 𓸃; +var 𓸄; +var 𓸅; +var 𓸆; +var 𓸇; +var 𓸈; +var 𓸉; +var 𓸊; +var 𓸋; +var 𓸌; +var 𓸍; +var 𓸎; +var 𓸏; +var 𓸐; +var 𓸑; +var 𓸒; +var 𓸓; +var 𓸔; +var 𓸕; +var 𓸖; +var 𓸗; +var 𓸘; +var 𓸙; +var 𓸚; +var 𓸛; +var 𓸜; +var 𓸝; +var 𓸞; +var 𓸟; +var 𓸠; +var 𓸡; +var 𓸢; +var 𓸣; +var 𓸤; +var 𓸥; +var 𓸦; +var 𓸧; +var 𓸨; +var 𓸩; +var 𓸪; +var 𓸫; +var 𓸬; +var 𓸭; +var 𓸮; +var 𓸯; +var 𓸰; +var 𓸱; +var 𓸲; +var 𓸳; +var 𓸴; +var 𓸵; +var 𓸶; +var 𓸷; +var 𓸸; +var 𓸹; +var 𓸺; +var 𓸻; +var 𓸼; +var 𓸽; +var 𓸾; +var 𓸿; +var 𓹀; +var 𓹁; +var 𓹂; +var 𓹃; +var 𓹄; +var 𓹅; +var 𓹆; +var 𓹇; +var 𓹈; +var 𓹉; +var 𓹊; +var 𓹋; +var 𓹌; +var 𓹍; +var 𓹎; +var 𓹏; +var 𓹐; +var 𓹑; +var 𓹒; +var 𓹓; +var 𓹔; +var 𓹕; +var 𓹖; +var 𓹗; +var 𓹘; +var 𓹙; +var 𓹚; +var 𓹛; +var 𓹜; +var 𓹝; +var 𓹞; +var 𓹟; +var 𓹠; +var 𓹡; +var 𓹢; +var 𓹣; +var 𓹤; +var 𓹥; +var 𓹦; +var 𓹧; +var 𓹨; +var 𓹩; +var 𓹪; +var 𓹫; +var 𓹬; +var 𓹭; +var 𓹮; +var 𓹯; +var 𓹰; +var 𓹱; +var 𓹲; +var 𓹳; +var 𓹴; +var 𓹵; +var 𓹶; +var 𓹷; +var 𓹸; +var 𓹹; +var 𓹺; +var 𓹻; +var 𓹼; +var 𓹽; +var 𓹾; +var 𓹿; +var 𓺀; +var 𓺁; +var 𓺂; +var 𓺃; +var 𓺄; +var 𓺅; +var 𓺆; +var 𓺇; +var 𓺈; +var 𓺉; +var 𓺊; +var 𓺋; +var 𓺌; +var 𓺍; +var 𓺎; +var 𓺏; +var 𓺐; +var 𓺑; +var 𓺒; +var 𓺓; +var 𓺔; +var 𓺕; +var 𓺖; +var 𓺗; +var 𓺘; +var 𓺙; +var 𓺚; +var 𓺛; +var 𓺜; +var 𓺝; +var 𓺞; +var 𓺟; +var 𓺠; +var 𓺡; +var 𓺢; +var 𓺣; +var 𓺤; +var 𓺥; +var 𓺦; +var 𓺧; +var 𓺨; +var 𓺩; +var 𓺪; +var 𓺫; +var 𓺬; +var 𓺭; +var 𓺮; +var 𓺯; +var 𓺰; +var 𓺱; +var 𓺲; +var 𓺳; +var 𓺴; +var 𓺵; +var 𓺶; +var 𓺷; +var 𓺸; +var 𓺹; +var 𓺺; +var 𓺻; +var 𓺼; +var 𓺽; +var 𓺾; +var 𓺿; +var 𓻀; +var 𓻁; +var 𓻂; +var 𓻃; +var 𓻄; +var 𓻅; +var 𓻆; +var 𓻇; +var 𓻈; +var 𓻉; +var 𓻊; +var 𓻋; +var 𓻌; +var 𓻍; +var 𓻎; +var 𓻏; +var 𓻐; +var 𓻑; +var 𓻒; +var 𓻓; +var 𓻔; +var 𓻕; +var 𓻖; +var 𓻗; +var 𓻘; +var 𓻙; +var 𓻚; +var 𓻛; +var 𓻜; +var 𓻝; +var 𓻞; +var 𓻟; +var 𓻠; +var 𓻡; +var 𓻢; +var 𓻣; +var 𓻤; +var 𓻥; +var 𓻦; +var 𓻧; +var 𓻨; +var 𓻩; +var 𓻪; +var 𓻫; +var 𓻬; +var 𓻭; +var 𓻮; +var 𓻯; +var 𓻰; +var 𓻱; +var 𓻲; +var 𓻳; +var 𓻴; +var 𓻵; +var 𓻶; +var 𓻷; +var 𓻸; +var 𓻹; +var 𓻺; +var 𓻻; +var 𓻼; +var 𓻽; +var 𓻾; +var 𓻿; +var 𓼀; +var 𓼁; +var 𓼂; +var 𓼃; +var 𓼄; +var 𓼅; +var 𓼆; +var 𓼇; +var 𓼈; +var 𓼉; +var 𓼊; +var 𓼋; +var 𓼌; +var 𓼍; +var 𓼎; +var 𓼏; +var 𓼐; +var 𓼑; +var 𓼒; +var 𓼓; +var 𓼔; +var 𓼕; +var 𓼖; +var 𓼗; +var 𓼘; +var 𓼙; +var 𓼚; +var 𓼛; +var 𓼜; +var 𓼝; +var 𓼞; +var 𓼟; +var 𓼠; +var 𓼡; +var 𓼢; +var 𓼣; +var 𓼤; +var 𓼥; +var 𓼦; +var 𓼧; +var 𓼨; +var 𓼩; +var 𓼪; +var 𓼫; +var 𓼬; +var 𓼭; +var 𓼮; +var 𓼯; +var 𓼰; +var 𓼱; +var 𓼲; +var 𓼳; +var 𓼴; +var 𓼵; +var 𓼶; +var 𓼷; +var 𓼸; +var 𓼹; +var 𓼺; +var 𓼻; +var 𓼼; +var 𓼽; +var 𓼾; +var 𓼿; +var 𓽀; +var 𓽁; +var 𓽂; +var 𓽃; +var 𓽄; +var 𓽅; +var 𓽆; +var 𓽇; +var 𓽈; +var 𓽉; +var 𓽊; +var 𓽋; +var 𓽌; +var 𓽍; +var 𓽎; +var 𓽏; +var 𓽐; +var 𓽑; +var 𓽒; +var 𓽓; +var 𓽔; +var 𓽕; +var 𓽖; +var 𓽗; +var 𓽘; +var 𓽙; +var 𓽚; +var 𓽛; +var 𓽜; +var 𓽝; +var 𓽞; +var 𓽟; +var 𓽠; +var 𓽡; +var 𓽢; +var 𓽣; +var 𓽤; +var 𓽥; +var 𓽦; +var 𓽧; +var 𓽨; +var 𓽩; +var 𓽪; +var 𓽫; +var 𓽬; +var 𓽭; +var 𓽮; +var 𓽯; +var 𓽰; +var 𓽱; +var 𓽲; +var 𓽳; +var 𓽴; +var 𓽵; +var 𓽶; +var 𓽷; +var 𓽸; +var 𓽹; +var 𓽺; +var 𓽻; +var 𓽼; +var 𓽽; +var 𓽾; +var 𓽿; +var 𓾀; +var 𓾁; +var 𓾂; +var 𓾃; +var 𓾄; +var 𓾅; +var 𓾆; +var 𓾇; +var 𓾈; +var 𓾉; +var 𓾊; +var 𓾋; +var 𓾌; +var 𓾍; +var 𓾎; +var 𓾏; +var 𓾐; +var 𓾑; +var 𓾒; +var 𓾓; +var 𓾔; +var 𓾕; +var 𓾖; +var 𓾗; +var 𓾘; +var 𓾙; +var 𓾚; +var 𓾛; +var 𓾜; +var 𓾝; +var 𓾞; +var 𓾟; +var 𓾠; +var 𓾡; +var 𓾢; +var 𓾣; +var 𓾤; +var 𓾥; +var 𓾦; +var 𓾧; +var 𓾨; +var 𓾩; +var 𓾪; +var 𓾫; +var 𓾬; +var 𓾭; +var 𓾮; +var 𓾯; +var 𓾰; +var 𓾱; +var 𓾲; +var 𓾳; +var 𓾴; +var 𓾵; +var 𓾶; +var 𓾷; +var 𓾸; +var 𓾹; +var 𓾺; +var 𓾻; +var 𓾼; +var 𓾽; +var 𓾾; +var 𓾿; +var 𓿀; +var 𓿁; +var 𓿂; +var 𓿃; +var 𓿄; +var 𓿅; +var 𓿆; +var 𓿇; +var 𓿈; +var 𓿉; +var 𓿊; +var 𓿋; +var 𓿌; +var 𓿍; +var 𓿎; +var 𓿏; +var 𓿐; +var 𓿑; +var 𓿒; +var 𓿓; +var 𓿔; +var 𓿕; +var 𓿖; +var 𓿗; +var 𓿘; +var 𓿙; +var 𓿚; +var 𓿛; +var 𓿜; +var 𓿝; +var 𓿞; +var 𓿟; +var 𓿠; +var 𓿡; +var 𓿢; +var 𓿣; +var 𓿤; +var 𓿥; +var 𓿦; +var 𓿧; +var 𓿨; +var 𓿩; +var 𓿪; +var 𓿫; +var 𓿬; +var 𓿭; +var 𓿮; +var 𓿯; +var 𓿰; +var 𓿱; +var 𓿲; +var 𓿳; +var 𓿴; +var 𓿵; +var 𓿶; +var 𓿷; +var 𓿸; +var 𓿹; +var 𓿺; +var 𓿻; +var 𓿼; +var 𓿽; +var 𓿾; +var 𓿿; +var 𔀀; +var 𔀁; +var 𔀂; +var 𔀃; +var 𔀄; +var 𔀅; +var 𔀆; +var 𔀇; +var 𔀈; +var 𔀉; +var 𔀊; +var 𔀋; +var 𔀌; +var 𔀍; +var 𔀎; +var 𔀏; +var 𔀐; +var 𔀑; +var 𔀒; +var 𔀓; +var 𔀔; +var 𔀕; +var 𔀖; +var 𔀗; +var 𔀘; +var 𔀙; +var 𔀚; +var 𔀛; +var 𔀜; +var 𔀝; +var 𔀞; +var 𔀟; +var 𔀠; +var 𔀡; +var 𔀢; +var 𔀣; +var 𔀤; +var 𔀥; +var 𔀦; +var 𔀧; +var 𔀨; +var 𔀩; +var 𔀪; +var 𔀫; +var 𔀬; +var 𔀭; +var 𔀮; +var 𔀯; +var 𔀰; +var 𔀱; +var 𔀲; +var 𔀳; +var 𔀴; +var 𔀵; +var 𔀶; +var 𔀷; +var 𔀸; +var 𔀹; +var 𔀺; +var 𔀻; +var 𔀼; +var 𔀽; +var 𔀾; +var 𔀿; +var 𔁀; +var 𔁁; +var 𔁂; +var 𔁃; +var 𔁄; +var 𔁅; +var 𔁆; +var 𔁇; +var 𔁈; +var 𔁉; +var 𔁊; +var 𔁋; +var 𔁌; +var 𔁍; +var 𔁎; +var 𔁏; +var 𔁐; +var 𔁑; +var 𔁒; +var 𔁓; +var 𔁔; +var 𔁕; +var 𔁖; +var 𔁗; +var 𔁘; +var 𔁙; +var 𔁚; +var 𔁛; +var 𔁜; +var 𔁝; +var 𔁞; +var 𔁟; +var 𔁠; +var 𔁡; +var 𔁢; +var 𔁣; +var 𔁤; +var 𔁥; +var 𔁦; +var 𔁧; +var 𔁨; +var 𔁩; +var 𔁪; +var 𔁫; +var 𔁬; +var 𔁭; +var 𔁮; +var 𔁯; +var 𔁰; +var 𔁱; +var 𔁲; +var 𔁳; +var 𔁴; +var 𔁵; +var 𔁶; +var 𔁷; +var 𔁸; +var 𔁹; +var 𔁺; +var 𔁻; +var 𔁼; +var 𔁽; +var 𔁾; +var 𔁿; +var 𔂀; +var 𔂁; +var 𔂂; +var 𔂃; +var 𔂄; +var 𔂅; +var 𔂆; +var 𔂇; +var 𔂈; +var 𔂉; +var 𔂊; +var 𔂋; +var 𔂌; +var 𔂍; +var 𔂎; +var 𔂏; +var 𔂐; +var 𔂑; +var 𔂒; +var 𔂓; +var 𔂔; +var 𔂕; +var 𔂖; +var 𔂗; +var 𔂘; +var 𔂙; +var 𔂚; +var 𔂛; +var 𔂜; +var 𔂝; +var 𔂞; +var 𔂟; +var 𔂠; +var 𔂡; +var 𔂢; +var 𔂣; +var 𔂤; +var 𔂥; +var 𔂦; +var 𔂧; +var 𔂨; +var 𔂩; +var 𔂪; +var 𔂫; +var 𔂬; +var 𔂭; +var 𔂮; +var 𔂯; +var 𔂰; +var 𔂱; +var 𔂲; +var 𔂳; +var 𔂴; +var 𔂵; +var 𔂶; +var 𔂷; +var 𔂸; +var 𔂹; +var 𔂺; +var 𔂻; +var 𔂼; +var 𔂽; +var 𔂾; +var 𔂿; +var 𔃀; +var 𔃁; +var 𔃂; +var 𔃃; +var 𔃄; +var 𔃅; +var 𔃆; +var 𔃇; +var 𔃈; +var 𔃉; +var 𔃊; +var 𔃋; +var 𔃌; +var 𔃍; +var 𔃎; +var 𔃏; +var 𔃐; +var 𔃑; +var 𔃒; +var 𔃓; +var 𔃔; +var 𔃕; +var 𔃖; +var 𔃗; +var 𔃘; +var 𔃙; +var 𔃚; +var 𔃛; +var 𔃜; +var 𔃝; +var 𔃞; +var 𔃟; +var 𔃠; +var 𔃡; +var 𔃢; +var 𔃣; +var 𔃤; +var 𔃥; +var 𔃦; +var 𔃧; +var 𔃨; +var 𔃩; +var 𔃪; +var 𔃫; +var 𔃬; +var 𔃭; +var 𔃮; +var 𔃯; +var 𔃰; +var 𔃱; +var 𔃲; +var 𔃳; +var 𔃴; +var 𔃵; +var 𔃶; +var 𔃷; +var 𔃸; +var 𔃹; +var 𔃺; +var 𔃻; +var 𔃼; +var 𔃽; +var 𔃾; +var 𔃿; +var 𔄀; +var 𔄁; +var 𔄂; +var 𔄃; +var 𔄄; +var 𔄅; +var 𔄆; +var 𔄇; +var 𔄈; +var 𔄉; +var 𔄊; +var 𔄋; +var 𔄌; +var 𔄍; +var 𔄎; +var 𔄏; +var 𔄐; +var 𔄑; +var 𔄒; +var 𔄓; +var 𔄔; +var 𔄕; +var 𔄖; +var 𔄗; +var 𔄘; +var 𔄙; +var 𔄚; +var 𔄛; +var 𔄜; +var 𔄝; +var 𔄞; +var 𔄟; +var 𔄠; +var 𔄡; +var 𔄢; +var 𔄣; +var 𔄤; +var 𔄥; +var 𔄦; +var 𔄧; +var 𔄨; +var 𔄩; +var 𔄪; +var 𔄫; +var 𔄬; +var 𔄭; +var 𔄮; +var 𔄯; +var 𔄰; +var 𔄱; +var 𔄲; +var 𔄳; +var 𔄴; +var 𔄵; +var 𔄶; +var 𔄷; +var 𔄸; +var 𔄹; +var 𔄺; +var 𔄻; +var 𔄼; +var 𔄽; +var 𔄾; +var 𔄿; +var 𔅀; +var 𔅁; +var 𔅂; +var 𔅃; +var 𔅄; +var 𔅅; +var 𔅆; +var 𔅇; +var 𔅈; +var 𔅉; +var 𔅊; +var 𔅋; +var 𔅌; +var 𔅍; +var 𔅎; +var 𔅏; +var 𔅐; +var 𔅑; +var 𔅒; +var 𔅓; +var 𔅔; +var 𔅕; +var 𔅖; +var 𔅗; +var 𔅘; +var 𔅙; +var 𔅚; +var 𔅛; +var 𔅜; +var 𔅝; +var 𔅞; +var 𔅟; +var 𔅠; +var 𔅡; +var 𔅢; +var 𔅣; +var 𔅤; +var 𔅥; +var 𔅦; +var 𔅧; +var 𔅨; +var 𔅩; +var 𔅪; +var 𔅫; +var 𔅬; +var 𔅭; +var 𔅮; +var 𔅯; +var 𔅰; +var 𔅱; +var 𔅲; +var 𔅳; +var 𔅴; +var 𔅵; +var 𔅶; +var 𔅷; +var 𔅸; +var 𔅹; +var 𔅺; +var 𔅻; +var 𔅼; +var 𔅽; +var 𔅾; +var 𔅿; +var 𔆀; +var 𔆁; +var 𔆂; +var 𔆃; +var 𔆄; +var 𔆅; +var 𔆆; +var 𔆇; +var 𔆈; +var 𔆉; +var 𔆊; +var 𔆋; +var 𔆌; +var 𔆍; +var 𔆎; +var 𔆏; +var 𔆐; +var 𔆑; +var 𔆒; +var 𔆓; +var 𔆔; +var 𔆕; +var 𔆖; +var 𔆗; +var 𔆘; +var 𔆙; +var 𔆚; +var 𔆛; +var 𔆜; +var 𔆝; +var 𔆞; +var 𔆟; +var 𔆠; +var 𔆡; +var 𔆢; +var 𔆣; +var 𔆤; +var 𔆥; +var 𔆦; +var 𔆧; +var 𔆨; +var 𔆩; +var 𔆪; +var 𔆫; +var 𔆬; +var 𔆭; +var 𔆮; +var 𔆯; +var 𔆰; +var 𔆱; +var 𔆲; +var 𔆳; +var 𔆴; +var 𔆵; +var 𔆶; +var 𔆷; +var 𔆸; +var 𔆹; +var 𔆺; +var 𔆻; +var 𔆼; +var 𔆽; +var 𔆾; +var 𔆿; +var 𔇀; +var 𔇁; +var 𔇂; +var 𔇃; +var 𔇄; +var 𔇅; +var 𔇆; +var 𔇇; +var 𔇈; +var 𔇉; +var 𔇊; +var 𔇋; +var 𔇌; +var 𔇍; +var 𔇎; +var 𔇏; +var 𔇐; +var 𔇑; +var 𔇒; +var 𔇓; +var 𔇔; +var 𔇕; +var 𔇖; +var 𔇗; +var 𔇘; +var 𔇙; +var 𔇚; +var 𔇛; +var 𔇜; +var 𔇝; +var 𔇞; +var 𔇟; +var 𔇠; +var 𔇡; +var 𔇢; +var 𔇣; +var 𔇤; +var 𔇥; +var 𔇦; +var 𔇧; +var 𔇨; +var 𔇩; +var 𔇪; +var 𔇫; +var 𔇬; +var 𔇭; +var 𔇮; +var 𔇯; +var 𔇰; +var 𔇱; +var 𔇲; +var 𔇳; +var 𔇴; +var 𔇵; +var 𔇶; +var 𔇷; +var 𔇸; +var 𔇹; +var 𔇺; +var 𔇻; +var 𔇼; +var 𔇽; +var 𔇾; +var 𔇿; +var 𔈀; +var 𔈁; +var 𔈂; +var 𔈃; +var 𔈄; +var 𔈅; +var 𔈆; +var 𔈇; +var 𔈈; +var 𔈉; +var 𔈊; +var 𔈋; +var 𔈌; +var 𔈍; +var 𔈎; +var 𔈏; +var 𔈐; +var 𔈑; +var 𔈒; +var 𔈓; +var 𔈔; +var 𔈕; +var 𔈖; +var 𔈗; +var 𔈘; +var 𔈙; +var 𔈚; +var 𔈛; +var 𔈜; +var 𔈝; +var 𔈞; +var 𔈟; +var 𔈠; +var 𔈡; +var 𔈢; +var 𔈣; +var 𔈤; +var 𔈥; +var 𔈦; +var 𔈧; +var 𔈨; +var 𔈩; +var 𔈪; +var 𔈫; +var 𔈬; +var 𔈭; +var 𔈮; +var 𔈯; +var 𔈰; +var 𔈱; +var 𔈲; +var 𔈳; +var 𔈴; +var 𔈵; +var 𔈶; +var 𔈷; +var 𔈸; +var 𔈹; +var 𔈺; +var 𔈻; +var 𔈼; +var 𔈽; +var 𔈾; +var 𔈿; +var 𔉀; +var 𔉁; +var 𔉂; +var 𔉃; +var 𔉄; +var 𔉅; +var 𔉆; +var 𔉇; +var 𔉈; +var 𔉉; +var 𔉊; +var 𔉋; +var 𔉌; +var 𔉍; +var 𔉎; +var 𔉏; +var 𔉐; +var 𔉑; +var 𔉒; +var 𔉓; +var 𔉔; +var 𔉕; +var 𔉖; +var 𔉗; +var 𔉘; +var 𔉙; +var 𔉚; +var 𔉛; +var 𔉜; +var 𔉝; +var 𔉞; +var 𔉟; +var 𔉠; +var 𔉡; +var 𔉢; +var 𔉣; +var 𔉤; +var 𔉥; +var 𔉦; +var 𔉧; +var 𔉨; +var 𔉩; +var 𔉪; +var 𔉫; +var 𔉬; +var 𔉭; +var 𔉮; +var 𔉯; +var 𔉰; +var 𔉱; +var 𔉲; +var 𔉳; +var 𔉴; +var 𔉵; +var 𔉶; +var 𔉷; +var 𔉸; +var 𔉹; +var 𔉺; +var 𔉻; +var 𔉼; +var 𔉽; +var 𔉾; +var 𔉿; +var 𔊀; +var 𔊁; +var 𔊂; +var 𔊃; +var 𔊄; +var 𔊅; +var 𔊆; +var 𔊇; +var 𔊈; +var 𔊉; +var 𔊊; +var 𔊋; +var 𔊌; +var 𔊍; +var 𔊎; +var 𔊏; +var 𔊐; +var 𔊑; +var 𔊒; +var 𔊓; +var 𔊔; +var 𔊕; +var 𔊖; +var 𔊗; +var 𔊘; +var 𔊙; +var 𔊚; +var 𔊛; +var 𔊜; +var 𔊝; +var 𔊞; +var 𔊟; +var 𔊠; +var 𔊡; +var 𔊢; +var 𔊣; +var 𔊤; +var 𔊥; +var 𔊦; +var 𔊧; +var 𔊨; +var 𔊩; +var 𔊪; +var 𔊫; +var 𔊬; +var 𔊭; +var 𔊮; +var 𔊯; +var 𔊰; +var 𔊱; +var 𔊲; +var 𔊳; +var 𔊴; +var 𔊵; +var 𔊶; +var 𔊷; +var 𔊸; +var 𔊹; +var 𔊺; +var 𔊻; +var 𔊼; +var 𔊽; +var 𔊾; +var 𔊿; +var 𔋀; +var 𔋁; +var 𔋂; +var 𔋃; +var 𔋄; +var 𔋅; +var 𔋆; +var 𔋇; +var 𔋈; +var 𔋉; +var 𔋊; +var 𔋋; +var 𔋌; +var 𔋍; +var 𔋎; +var 𔋏; +var 𔋐; +var 𔋑; +var 𔋒; +var 𔋓; +var 𔋔; +var 𔋕; +var 𔋖; +var 𔋗; +var 𔋘; +var 𔋙; +var 𔋚; +var 𔋛; +var 𔋜; +var 𔋝; +var 𔋞; +var 𔋟; +var 𔋠; +var 𔋡; +var 𔋢; +var 𔋣; +var 𔋤; +var 𔋥; +var 𔋦; +var 𔋧; +var 𔋨; +var 𔋩; +var 𔋪; +var 𔋫; +var 𔋬; +var 𔋭; +var 𔋮; +var 𔋯; +var 𔋰; +var 𔋱; +var 𔋲; +var 𔋳; +var 𔋴; +var 𔋵; +var 𔋶; +var 𔋷; +var 𔋸; +var 𔋹; +var 𔋺; +var 𔋻; +var 𔋼; +var 𔋽; +var 𔋾; +var 𔋿; +var 𔌀; +var 𔌁; +var 𔌂; +var 𔌃; +var 𔌄; +var 𔌅; +var 𔌆; +var 𔌇; +var 𔌈; +var 𔌉; +var 𔌊; +var 𔌋; +var 𔌌; +var 𔌍; +var 𔌎; +var 𔌏; +var 𔌐; +var 𔌑; +var 𔌒; +var 𔌓; +var 𔌔; +var 𔌕; +var 𔌖; +var 𔌗; +var 𔌘; +var 𔌙; +var 𔌚; +var 𔌛; +var 𔌜; +var 𔌝; +var 𔌞; +var 𔌟; +var 𔌠; +var 𔌡; +var 𔌢; +var 𔌣; +var 𔌤; +var 𔌥; +var 𔌦; +var 𔌧; +var 𔌨; +var 𔌩; +var 𔌪; +var 𔌫; +var 𔌬; +var 𔌭; +var 𔌮; +var 𔌯; +var 𔌰; +var 𔌱; +var 𔌲; +var 𔌳; +var 𔌴; +var 𔌵; +var 𔌶; +var 𔌷; +var 𔌸; +var 𔌹; +var 𔌺; +var 𔌻; +var 𔌼; +var 𔌽; +var 𔌾; +var 𔌿; +var 𔍀; +var 𔍁; +var 𔍂; +var 𔍃; +var 𔍄; +var 𔍅; +var 𔍆; +var 𔍇; +var 𔍈; +var 𔍉; +var 𔍊; +var 𔍋; +var 𔍌; +var 𔍍; +var 𔍎; +var 𔍏; +var 𔍐; +var 𔍑; +var 𔍒; +var 𔍓; +var 𔍔; +var 𔍕; +var 𔍖; +var 𔍗; +var 𔍘; +var 𔍙; +var 𔍚; +var 𔍛; +var 𔍜; +var 𔍝; +var 𔍞; +var 𔍟; +var 𔍠; +var 𔍡; +var 𔍢; +var 𔍣; +var 𔍤; +var 𔍥; +var 𔍦; +var 𔍧; +var 𔍨; +var 𔍩; +var 𔍪; +var 𔍫; +var 𔍬; +var 𔍭; +var 𔍮; +var 𔍯; +var 𔍰; +var 𔍱; +var 𔍲; +var 𔍳; +var 𔍴; +var 𔍵; +var 𔍶; +var 𔍷; +var 𔍸; +var 𔍹; +var 𔍺; +var 𔍻; +var 𔍼; +var 𔍽; +var 𔍾; +var 𔍿; +var 𔎀; +var 𔎁; +var 𔎂; +var 𔎃; +var 𔎄; +var 𔎅; +var 𔎆; +var 𔎇; +var 𔎈; +var 𔎉; +var 𔎊; +var 𔎋; +var 𔎌; +var 𔎍; +var 𔎎; +var 𔎏; +var 𔎐; +var 𔎑; +var 𔎒; +var 𔎓; +var 𔎔; +var 𔎕; +var 𔎖; +var 𔎗; +var 𔎘; +var 𔎙; +var 𔎚; +var 𔎛; +var 𔎜; +var 𔎝; +var 𔎞; +var 𔎟; +var 𔎠; +var 𔎡; +var 𔎢; +var 𔎣; +var 𔎤; +var 𔎥; +var 𔎦; +var 𔎧; +var 𔎨; +var 𔎩; +var 𔎪; +var 𔎫; +var 𔎬; +var 𔎭; +var 𔎮; +var 𔎯; +var 𔎰; +var 𔎱; +var 𔎲; +var 𔎳; +var 𔎴; +var 𔎵; +var 𔎶; +var 𔎷; +var 𔎸; +var 𔎹; +var 𔎺; +var 𔎻; +var 𔎼; +var 𔎽; +var 𔎾; +var 𔎿; +var 𔏀; +var 𔏁; +var 𔏂; +var 𔏃; +var 𔏄; +var 𔏅; +var 𔏆; +var 𔏇; +var 𔏈; +var 𔏉; +var 𔏊; +var 𔏋; +var 𔏌; +var 𔏍; +var 𔏎; +var 𔏏; +var 𔏐; +var 𔏑; +var 𔏒; +var 𔏓; +var 𔏔; +var 𔏕; +var 𔏖; +var 𔏗; +var 𔏘; +var 𔏙; +var 𔏚; +var 𔏛; +var 𔏜; +var 𔏝; +var 𔏞; +var 𔏟; +var 𔏠; +var 𔏡; +var 𔏢; +var 𔏣; +var 𔏤; +var 𔏥; +var 𔏦; +var 𔏧; +var 𔏨; +var 𔏩; +var 𔏪; +var 𔏫; +var 𔏬; +var 𔏭; +var 𔏮; +var 𔏯; +var 𔏰; +var 𔏱; +var 𔏲; +var 𔏳; +var 𔏴; +var 𔏵; +var 𔏶; +var 𔏷; +var 𔏸; +var 𔏹; +var 𔏺; +var 𖄀; +var 𖄁; +var 𖄂; +var 𖄃; +var 𖄄; +var 𖄅; +var 𖄆; +var 𖄇; +var 𖄈; +var 𖄉; +var 𖄊; +var 𖄋; +var 𖄌; +var 𖄍; +var 𖄎; +var 𖄏; +var 𖄐; +var 𖄑; +var 𖄒; +var 𖄓; +var 𖄔; +var 𖄕; +var 𖄖; +var 𖄗; +var 𖄘; +var 𖄙; +var 𖄚; +var 𖄛; +var 𖄜; +var 𖄝; +var 𖵀; +var 𖵁; +var 𖵂; +var 𖵃; +var 𖵄; +var 𖵅; +var 𖵆; +var 𖵇; +var 𖵈; +var 𖵉; +var 𖵊; +var 𖵋; +var 𖵌; +var 𖵍; +var 𖵎; +var 𖵏; +var 𖵐; +var 𖵑; +var 𖵒; +var 𖵓; +var 𖵔; +var 𖵕; +var 𖵖; +var 𖵗; +var 𖵘; +var 𖵙; +var 𖵚; +var 𖵛; +var 𖵜; +var 𖵝; +var 𖵞; +var 𖵟; +var 𖵠; +var 𖵡; +var 𖵢; +var 𖵣; +var 𖵤; +var 𖵥; +var 𖵦; +var 𖵧; +var 𖵨; +var 𖵩; +var 𖵪; +var 𖵫; +var 𖵬; +var 𘳿; +var 𞗐; +var 𞗑; +var 𞗒; +var 𞗓; +var 𞗔; +var 𞗕; +var 𞗖; +var 𞗗; +var 𞗘; +var 𞗙; +var 𞗚; +var 𞗛; +var 𞗜; +var 𞗝; +var 𞗞; +var 𞗟; +var 𞗠; +var 𞗡; +var 𞗢; +var 𞗣; +var 𞗤; +var 𞗥; +var 𞗦; +var 𞗧; +var 𞗨; +var 𞗩; +var 𞗪; +var 𞗫; +var 𞗬; +var 𞗭; +var 𞗰; diff --git a/test/language/identifiers/start-unicode-5.2.0-class-escaped.js b/test/language/identifiers/start-unicode-5.2.0-class-escaped.js index dffd19ca6da..f9b770baa89 100644 --- a/test/language/identifiers/start-unicode-5.2.0-class-escaped.js +++ b/test/language/identifiers/start-unicode-5.2.0-class-escaped.js @@ -1,4 +1,4 @@ -// Copyright 2022 Mathias Bynens. All rights reserved. +// Copyright 2024 Mathias Bynens. All rights reserved. // This code is governed by the BSD license found in the LICENSE file. /*--- diff --git a/test/language/identifiers/start-unicode-5.2.0-class.js b/test/language/identifiers/start-unicode-5.2.0-class.js index cc0fbd074c1..b30c5feb150 100644 --- a/test/language/identifiers/start-unicode-5.2.0-class.js +++ b/test/language/identifiers/start-unicode-5.2.0-class.js @@ -1,4 +1,4 @@ -// Copyright 2022 Mathias Bynens. All rights reserved. +// Copyright 2024 Mathias Bynens. All rights reserved. // This code is governed by the BSD license found in the LICENSE file. /*--- diff --git a/test/language/identifiers/start-unicode-5.2.0-escaped.js b/test/language/identifiers/start-unicode-5.2.0-escaped.js index e2bd3ed53d9..39da449107e 100644 --- a/test/language/identifiers/start-unicode-5.2.0-escaped.js +++ b/test/language/identifiers/start-unicode-5.2.0-escaped.js @@ -1,4 +1,4 @@ -// Copyright 2022 Mathias Bynens. All rights reserved. +// Copyright 2024 Mathias Bynens. All rights reserved. // This code is governed by the BSD license found in the LICENSE file. /*--- diff --git a/test/language/identifiers/start-unicode-5.2.0.js b/test/language/identifiers/start-unicode-5.2.0.js index 88c7bf39608..b30de5e17c1 100644 --- a/test/language/identifiers/start-unicode-5.2.0.js +++ b/test/language/identifiers/start-unicode-5.2.0.js @@ -1,4 +1,4 @@ -// Copyright 2022 Mathias Bynens. All rights reserved. +// Copyright 2024 Mathias Bynens. All rights reserved. // This code is governed by the BSD license found in the LICENSE file. /*--- diff --git a/test/language/identifiers/start-unicode-6.0.0-class-escaped.js b/test/language/identifiers/start-unicode-6.0.0-class-escaped.js index c2e4010ff13..2c39baf31a9 100644 --- a/test/language/identifiers/start-unicode-6.0.0-class-escaped.js +++ b/test/language/identifiers/start-unicode-6.0.0-class-escaped.js @@ -1,4 +1,4 @@ -// Copyright 2022 Mathias Bynens. All rights reserved. +// Copyright 2024 Mathias Bynens. All rights reserved. // This code is governed by the BSD license found in the LICENSE file. /*--- diff --git a/test/language/identifiers/start-unicode-6.0.0-class.js b/test/language/identifiers/start-unicode-6.0.0-class.js index 295ef52e2e9..b99dfd42f49 100644 --- a/test/language/identifiers/start-unicode-6.0.0-class.js +++ b/test/language/identifiers/start-unicode-6.0.0-class.js @@ -1,4 +1,4 @@ -// Copyright 2022 Mathias Bynens. All rights reserved. +// Copyright 2024 Mathias Bynens. All rights reserved. // This code is governed by the BSD license found in the LICENSE file. /*--- diff --git a/test/language/identifiers/start-unicode-6.0.0-escaped.js b/test/language/identifiers/start-unicode-6.0.0-escaped.js index e0b5c36575c..42e7d185b27 100644 --- a/test/language/identifiers/start-unicode-6.0.0-escaped.js +++ b/test/language/identifiers/start-unicode-6.0.0-escaped.js @@ -1,4 +1,4 @@ -// Copyright 2022 Mathias Bynens. All rights reserved. +// Copyright 2024 Mathias Bynens. All rights reserved. // This code is governed by the BSD license found in the LICENSE file. /*--- diff --git a/test/language/identifiers/start-unicode-6.0.0.js b/test/language/identifiers/start-unicode-6.0.0.js index f8b595ed443..325b29c7564 100644 --- a/test/language/identifiers/start-unicode-6.0.0.js +++ b/test/language/identifiers/start-unicode-6.0.0.js @@ -1,4 +1,4 @@ -// Copyright 2022 Mathias Bynens. All rights reserved. +// Copyright 2024 Mathias Bynens. All rights reserved. // This code is governed by the BSD license found in the LICENSE file. /*--- diff --git a/test/language/identifiers/start-unicode-6.1.0-class-escaped.js b/test/language/identifiers/start-unicode-6.1.0-class-escaped.js index 74a5f3e26c8..121de0607ed 100644 --- a/test/language/identifiers/start-unicode-6.1.0-class-escaped.js +++ b/test/language/identifiers/start-unicode-6.1.0-class-escaped.js @@ -1,4 +1,4 @@ -// Copyright 2022 Mathias Bynens. All rights reserved. +// Copyright 2024 Mathias Bynens. All rights reserved. // This code is governed by the BSD license found in the LICENSE file. /*--- diff --git a/test/language/identifiers/start-unicode-6.1.0-class.js b/test/language/identifiers/start-unicode-6.1.0-class.js index c275f45be17..e578056137b 100644 --- a/test/language/identifiers/start-unicode-6.1.0-class.js +++ b/test/language/identifiers/start-unicode-6.1.0-class.js @@ -1,4 +1,4 @@ -// Copyright 2022 Mathias Bynens. All rights reserved. +// Copyright 2024 Mathias Bynens. All rights reserved. // This code is governed by the BSD license found in the LICENSE file. /*--- diff --git a/test/language/identifiers/start-unicode-6.1.0-escaped.js b/test/language/identifiers/start-unicode-6.1.0-escaped.js index db3d49b92b7..fda61b9d461 100644 --- a/test/language/identifiers/start-unicode-6.1.0-escaped.js +++ b/test/language/identifiers/start-unicode-6.1.0-escaped.js @@ -1,4 +1,4 @@ -// Copyright 2022 Mathias Bynens. All rights reserved. +// Copyright 2024 Mathias Bynens. All rights reserved. // This code is governed by the BSD license found in the LICENSE file. /*--- diff --git a/test/language/identifiers/start-unicode-6.1.0.js b/test/language/identifiers/start-unicode-6.1.0.js index f4063963632..61fbcbd5b85 100644 --- a/test/language/identifiers/start-unicode-6.1.0.js +++ b/test/language/identifiers/start-unicode-6.1.0.js @@ -1,4 +1,4 @@ -// Copyright 2022 Mathias Bynens. All rights reserved. +// Copyright 2024 Mathias Bynens. All rights reserved. // This code is governed by the BSD license found in the LICENSE file. /*--- diff --git a/test/language/identifiers/start-unicode-7.0.0-class-escaped.js b/test/language/identifiers/start-unicode-7.0.0-class-escaped.js index 3738f251592..eefb39d08a4 100644 --- a/test/language/identifiers/start-unicode-7.0.0-class-escaped.js +++ b/test/language/identifiers/start-unicode-7.0.0-class-escaped.js @@ -1,4 +1,4 @@ -// Copyright 2022 Mathias Bynens. All rights reserved. +// Copyright 2024 Mathias Bynens. All rights reserved. // This code is governed by the BSD license found in the LICENSE file. /*--- diff --git a/test/language/identifiers/start-unicode-7.0.0-class.js b/test/language/identifiers/start-unicode-7.0.0-class.js index e4594f40395..54e0ddbc885 100644 --- a/test/language/identifiers/start-unicode-7.0.0-class.js +++ b/test/language/identifiers/start-unicode-7.0.0-class.js @@ -1,4 +1,4 @@ -// Copyright 2022 Mathias Bynens. All rights reserved. +// Copyright 2024 Mathias Bynens. All rights reserved. // This code is governed by the BSD license found in the LICENSE file. /*--- diff --git a/test/language/identifiers/start-unicode-7.0.0-escaped.js b/test/language/identifiers/start-unicode-7.0.0-escaped.js index 55a39ae75a7..926edf69ab4 100644 --- a/test/language/identifiers/start-unicode-7.0.0-escaped.js +++ b/test/language/identifiers/start-unicode-7.0.0-escaped.js @@ -1,4 +1,4 @@ -// Copyright 2022 Mathias Bynens. All rights reserved. +// Copyright 2024 Mathias Bynens. All rights reserved. // This code is governed by the BSD license found in the LICENSE file. /*--- diff --git a/test/language/identifiers/start-unicode-7.0.0.js b/test/language/identifiers/start-unicode-7.0.0.js index c5d4fb2749d..534dc71edc8 100644 --- a/test/language/identifiers/start-unicode-7.0.0.js +++ b/test/language/identifiers/start-unicode-7.0.0.js @@ -1,4 +1,4 @@ -// Copyright 2022 Mathias Bynens. All rights reserved. +// Copyright 2024 Mathias Bynens. All rights reserved. // This code is governed by the BSD license found in the LICENSE file. /*--- diff --git a/test/language/identifiers/start-unicode-8.0.0-class-escaped.js b/test/language/identifiers/start-unicode-8.0.0-class-escaped.js index cce53e0eae5..e1e13109bab 100644 --- a/test/language/identifiers/start-unicode-8.0.0-class-escaped.js +++ b/test/language/identifiers/start-unicode-8.0.0-class-escaped.js @@ -1,4 +1,4 @@ -// Copyright 2022 Mathias Bynens. All rights reserved. +// Copyright 2024 Mathias Bynens. All rights reserved. // This code is governed by the BSD license found in the LICENSE file. /*--- diff --git a/test/language/identifiers/start-unicode-8.0.0-class.js b/test/language/identifiers/start-unicode-8.0.0-class.js index 42cf910de39..437a6c9d9f0 100644 --- a/test/language/identifiers/start-unicode-8.0.0-class.js +++ b/test/language/identifiers/start-unicode-8.0.0-class.js @@ -1,4 +1,4 @@ -// Copyright 2022 Mathias Bynens. All rights reserved. +// Copyright 2024 Mathias Bynens. All rights reserved. // This code is governed by the BSD license found in the LICENSE file. /*--- diff --git a/test/language/identifiers/start-unicode-8.0.0-escaped.js b/test/language/identifiers/start-unicode-8.0.0-escaped.js index 49ec3076ca3..e0cbb10a06a 100644 --- a/test/language/identifiers/start-unicode-8.0.0-escaped.js +++ b/test/language/identifiers/start-unicode-8.0.0-escaped.js @@ -1,4 +1,4 @@ -// Copyright 2022 Mathias Bynens. All rights reserved. +// Copyright 2024 Mathias Bynens. All rights reserved. // This code is governed by the BSD license found in the LICENSE file. /*--- diff --git a/test/language/identifiers/start-unicode-8.0.0.js b/test/language/identifiers/start-unicode-8.0.0.js index 13ed9aa1694..b97096d76d5 100644 --- a/test/language/identifiers/start-unicode-8.0.0.js +++ b/test/language/identifiers/start-unicode-8.0.0.js @@ -1,4 +1,4 @@ -// Copyright 2022 Mathias Bynens. All rights reserved. +// Copyright 2024 Mathias Bynens. All rights reserved. // This code is governed by the BSD license found in the LICENSE file. /*--- diff --git a/test/language/identifiers/start-unicode-9.0.0-class-escaped.js b/test/language/identifiers/start-unicode-9.0.0-class-escaped.js index b2e7d3e8af1..a249fbcf4f7 100644 --- a/test/language/identifiers/start-unicode-9.0.0-class-escaped.js +++ b/test/language/identifiers/start-unicode-9.0.0-class-escaped.js @@ -1,4 +1,4 @@ -// Copyright 2022 Mathias Bynens. All rights reserved. +// Copyright 2024 Mathias Bynens. All rights reserved. // This code is governed by the BSD license found in the LICENSE file. /*--- diff --git a/test/language/identifiers/start-unicode-9.0.0-class.js b/test/language/identifiers/start-unicode-9.0.0-class.js index 2458f500cd0..78c66d6cfeb 100644 --- a/test/language/identifiers/start-unicode-9.0.0-class.js +++ b/test/language/identifiers/start-unicode-9.0.0-class.js @@ -1,4 +1,4 @@ -// Copyright 2022 Mathias Bynens. All rights reserved. +// Copyright 2024 Mathias Bynens. All rights reserved. // This code is governed by the BSD license found in the LICENSE file. /*--- diff --git a/test/language/identifiers/start-unicode-9.0.0-escaped.js b/test/language/identifiers/start-unicode-9.0.0-escaped.js index 96d2a027484..32cfd563d06 100644 --- a/test/language/identifiers/start-unicode-9.0.0-escaped.js +++ b/test/language/identifiers/start-unicode-9.0.0-escaped.js @@ -1,4 +1,4 @@ -// Copyright 2022 Mathias Bynens. All rights reserved. +// Copyright 2024 Mathias Bynens. All rights reserved. // This code is governed by the BSD license found in the LICENSE file. /*--- diff --git a/test/language/identifiers/start-unicode-9.0.0.js b/test/language/identifiers/start-unicode-9.0.0.js index 46481a87a1f..056f9bf51d5 100644 --- a/test/language/identifiers/start-unicode-9.0.0.js +++ b/test/language/identifiers/start-unicode-9.0.0.js @@ -1,4 +1,4 @@ -// Copyright 2022 Mathias Bynens. All rights reserved. +// Copyright 2024 Mathias Bynens. All rights reserved. // This code is governed by the BSD license found in the LICENSE file. /*--- diff --git a/test/language/statements/await-using/throws-if-initializer-not-object.js b/test/language/statements/await-using/throws-if-initializer-not-object.js new file mode 100644 index 00000000000..c669a8e6c29 --- /dev/null +++ b/test/language/statements/await-using/throws-if-initializer-not-object.js @@ -0,0 +1,75 @@ +// Copyright (C) 2023 Ron Buckton. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +esid: sec-let-and-const-declarations-runtime-semantics-evaluation +description: Throws if initialized value is not an Object +info: | + RS: Evaluation + AwaitUsingDeclaration : CoverAwaitExpressionAndAwaitUsingDeclarationHead BindingList ; + + 1. Perform ? BindingEvaluation of BindingList with argument async-dispose. + 2. Return empty. + + RS: BindingEvaluation + LexicalBinding : BindingIdentifier Initializer + + ... + 5. Return ? InitializeReferencedBinding(lhs, value, hint). + + InitializeReferencedBinding ( V, W ) + + ... + 4. Return ? base.InitializeBinding(V.[[ReferencedName]], W). + + InitializeBinding ( N, V, hint ) + + ... + 2. If hint is not normal, perform ? AddDisposableResource(envRec.[[DisposeCapability]], V, hint). + ... + + AddDisposableResource ( disposeCapability, V, hint [, method ] ) + + 1. If method is not present then, + a. If V is either null or undefined and hint is sync-dispose, then + i. Return unused. + b. Let resource be ? CreateDisposableResource(V, hint). + ... + + CreateDisposableResource ( V, hint [ , method ] ) + + 1. If method is not present, then + a. If V is either null or undefined, then + ... + b. Else, + i. If V is not an Object, throw a TypeError exception. + ... + ... + +flags: [async] +includes: [asyncHelpers.js] +features: [explicit-resource-management] +---*/ + +asyncTest(async function () { + await assert.throwsAsync(TypeError, async function() { + await using x = true; + }, 'true'); + + await assert.throwsAsync(TypeError, async function() { + await using x = false; + }, 'false'); + + await assert.throwsAsync(TypeError, async function() { + await using x = 1; + }, 'number'); + + await assert.throwsAsync(TypeError, async function() { + await using x = 'object'; + }, 'string'); + + var s = Symbol(); + await assert.throwsAsync(TypeError, async function() { + await using x = s; + }, 'symbol'); +}); diff --git a/test/language/statements/class/elements/syntax/valid/grammar-field-named-get-followed-by-generator-asi.js b/test/language/statements/class/elements/syntax/valid/grammar-field-named-get-followed-by-generator-asi.js new file mode 100644 index 00000000000..b8a2b5258a5 --- /dev/null +++ b/test/language/statements/class/elements/syntax/valid/grammar-field-named-get-followed-by-generator-asi.js @@ -0,0 +1,63 @@ +// Copyright (C) 2024 Igalia, S.L. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. +/*--- +description: ASI between a field named "get" and a generator method +esid: prod-ClassElement +features: [class-fields-public, class-static-fields-public, class, generators] +info: | + ClassElement : + MethodDefinition + FieldDefinition ; + static FieldDefinition ; + ; + + MethodDefinition : + GeneratorMethod + get ClassElementName () { FunctionBody } + + GeneratorMethod : + * ClassElementName ( UniqueFormalParameters ) { GeneratorBody } + + FieldDefinition : + ClassElementName Initializer _opt + + ClassElementName : + PropertyName + PrivateName + + PropertyName : + LiteralPropertyName + ComputedPropertyName + + LiteralPropertyName : + IdentifierName + StringLiteral + NumericLiteral +---*/ + +class A { + get + *a() {} +} + +class B { + static get + *a() {} +} + +assert( + A.prototype.hasOwnProperty("a"), + "(A) The generator is installed on the prototype" +); +assert( + new A().hasOwnProperty("get"), + "(A) The field is installed on class instances" +); +assert( + B.prototype.hasOwnProperty("a"), + "(B) The generator is installed on the prototype" +); +assert( + B.hasOwnProperty("get"), + "(B) The field is installed on class" +); diff --git a/test/language/statements/class/elements/syntax/valid/grammar-field-named-set-followed-by-generator-asi.js b/test/language/statements/class/elements/syntax/valid/grammar-field-named-set-followed-by-generator-asi.js new file mode 100644 index 00000000000..20643622cea --- /dev/null +++ b/test/language/statements/class/elements/syntax/valid/grammar-field-named-set-followed-by-generator-asi.js @@ -0,0 +1,63 @@ +// Copyright (C) 2024 Igalia, S.L. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. +/*--- +description: ASI between a field named "set" and a generator method +esid: prod-ClassElement +features: [class-fields-public, class] +info: | + ClassElement : + MethodDefinition + FieldDefinition ; + static FieldDefinition ; + ; + + MethodDefinition : + GeneratorMethod + set ClassElementName ( PropertySetParameterList ) { FunctionBody } + + GeneratorMethod : + * ClassElementName ( UniqueFormalParameters ) { GeneratorBody } + + FieldDefinition : + ClassElementName Initializer _opt + + ClassElementName : + PropertyName + PrivateName + + PropertyName : + LiteralPropertyName + ComputedPropertyName + + LiteralPropertyName : + IdentifierName + StringLiteral + NumericLiteral +---*/ + +class A { + set + *a(x) {} +} + +class B { + static set + *a(x) {} +} + +assert( + A.prototype.hasOwnProperty("a"), + "(A) The generator is installed on the prototype" +); +assert( + new A().hasOwnProperty("set"), + "(A) The field is installed on class instances" +); +assert( + B.prototype.hasOwnProperty("a"), + "(B) The generator is installed on the prototype" +); +assert( + B.hasOwnProperty("set"), + "(B) The field is installed on class" +); diff --git a/test/language/statements/for-in/resizable-buffer.js b/test/language/statements/for-in/resizable-buffer.js new file mode 100644 index 00000000000..b0624154013 --- /dev/null +++ b/test/language/statements/for-in/resizable-buffer.js @@ -0,0 +1,21 @@ +// Copyright 2023 the V8 project authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +esid: sec-arraybuffer-length +description: > + Indices of TypedArrays backed by resizable buffers are enumerable with + for-in +includes: [resizableArrayBufferUtils.js] +features: [resizable-arraybuffer] +---*/ + +let rab = CreateResizableArrayBuffer(100, 200); +for (let ctor of ctors) { + const ta = new ctor(rab, 0, 3); + let keys = ''; + for (const key in ta) { + keys += key; + } + assert.sameValue(keys, '012'); +} diff --git a/test/staging/ArrayBuffer/resizable/iterate-typed-array-and-grow-just-before-iteration-would-end.js b/test/language/statements/for-of/typedarray-backed-by-resizable-buffer-grow-before-end.js similarity index 50% rename from test/staging/ArrayBuffer/resizable/iterate-typed-array-and-grow-just-before-iteration-would-end.js rename to test/language/statements/for-of/typedarray-backed-by-resizable-buffer-grow-before-end.js index 24f30dfe6b4..c9b5108e461 100644 --- a/test/staging/ArrayBuffer/resizable/iterate-typed-array-and-grow-just-before-iteration-would-end.js +++ b/test/language/statements/for-of/typedarray-backed-by-resizable-buffer-grow-before-end.js @@ -1,93 +1,28 @@ -// Copyright 2021 the V8 project authors. All rights reserved. +// Copyright 2023 the V8 project authors. All rights reserved. // This code is governed by the BSD license found in the LICENSE file. /*--- esid: sec-arraybuffer-length description: > - Automatically ported from IterateTypedArrayAndGrowJustBeforeIterationWouldEnd test - in V8's mjsunit test typedarray-resizablearraybuffer.js + TypedArrays backed by resizable buffers are iterable with for-of and behave + correctly when the buffer is grown during iteration features: [resizable-arraybuffer] -includes: [compareArray.js] -flags: [onlyStrict] +includes: [compareArray.js, resizableArrayBufferUtils.js] ---*/ -class MyUint8Array extends Uint8Array { -} - -class MyFloat32Array extends Float32Array { -} - -class MyBigInt64Array extends BigInt64Array { -} - -const builtinCtors = [ - Uint8Array, - Int8Array, - Uint16Array, - Int16Array, - Uint32Array, - Int32Array, - Float32Array, - Float64Array, - Uint8ClampedArray, - BigUint64Array, - BigInt64Array -]; - -const ctors = [ - ...builtinCtors, - MyUint8Array, - MyFloat32Array, - MyBigInt64Array -]; - -function CreateResizableArrayBuffer(byteLength, maxByteLength) { - return new ArrayBuffer(byteLength, { maxByteLength: maxByteLength }); -} - -function WriteToTypedArray(array, index, value) { - if (array instanceof BigInt64Array || array instanceof BigUint64Array) { - array[index] = BigInt(value); - } else { - array[index] = value; - } -} - function CreateRab(buffer_byte_length, ctor) { const rab = CreateResizableArrayBuffer(buffer_byte_length, 2 * buffer_byte_length); let ta_write = new ctor(rab); for (let i = 0; i < buffer_byte_length / ctor.BYTES_PER_ELEMENT; ++i) { - WriteToTypedArray(ta_write, i, i % 128); + ta_write[i] = MayNeedBigInt(ta_write, i % 128); } return rab; } -function TestIterationAndResize(ta, expected, rab, resize_after, new_byte_length) { - let values = []; - let resized = false; - for (const value of ta) { - if (value instanceof Array) { - values.push([ - value[0], - Number(value[1]) - ]); - } else { - values.push(Number(value)); - } - if (!resized && values.length == resize_after) { - rab.resize(new_byte_length); - resized = true; - } - } - assert.compareArray(values, expected); - assert(resized); -} - -const no_elements = 10; -const offset = 2; - // We need to recreate the RAB between all TA tests, since we grow it. for (let ctor of ctors) { + const no_elements = 10; + const offset = 2; const buffer_byte_length = no_elements * ctor.BYTES_PER_ELEMENT; const byte_offset = offset * ctor.BYTES_PER_ELEMENT; diff --git a/test/staging/ArrayBuffer/resizable/iterate-typed-array-and-grow-mid-iteration.js b/test/language/statements/for-of/typedarray-backed-by-resizable-buffer-grow-mid-iteration.js similarity index 54% rename from test/staging/ArrayBuffer/resizable/iterate-typed-array-and-grow-mid-iteration.js rename to test/language/statements/for-of/typedarray-backed-by-resizable-buffer-grow-mid-iteration.js index 3441051af02..11e0017924a 100644 --- a/test/staging/ArrayBuffer/resizable/iterate-typed-array-and-grow-mid-iteration.js +++ b/test/language/statements/for-of/typedarray-backed-by-resizable-buffer-grow-mid-iteration.js @@ -1,91 +1,27 @@ -// Copyright 2021 the V8 project authors. All rights reserved. +// Copyright 2023 the V8 project authors. All rights reserved. // This code is governed by the BSD license found in the LICENSE file. /*--- esid: sec-arraybuffer-length description: > - Automatically ported from IterateTypedArrayAndGrowMidIteration test - in V8's mjsunit test typedarray-resizablearraybuffer.js + TypedArrays backed by resizable buffers are iterable with for-of and behave + correctly when the buffer is grown during iteration features: [resizable-arraybuffer] -includes: [compareArray.js] -flags: [onlyStrict] +includes: [compareArray.js, resizableArrayBufferUtils.js] ---*/ -class MyUint8Array extends Uint8Array { -} - -class MyFloat32Array extends Float32Array { -} - -class MyBigInt64Array extends BigInt64Array { -} - -const builtinCtors = [ - Uint8Array, - Int8Array, - Uint16Array, - Int16Array, - Uint32Array, - Int32Array, - Float32Array, - Float64Array, - Uint8ClampedArray, - BigUint64Array, - BigInt64Array -]; - -const ctors = [ - ...builtinCtors, - MyUint8Array, - MyFloat32Array, - MyBigInt64Array -]; - -function CreateResizableArrayBuffer(byteLength, maxByteLength) { - return new ArrayBuffer(byteLength, { maxByteLength: maxByteLength }); -} - -function WriteToTypedArray(array, index, value) { - if (array instanceof BigInt64Array || array instanceof BigUint64Array) { - array[index] = BigInt(value); - } else { - array[index] = value; - } -} - function CreateRab(buffer_byte_length, ctor) { const rab = CreateResizableArrayBuffer(buffer_byte_length, 2 * buffer_byte_length); let ta_write = new ctor(rab); for (let i = 0; i < buffer_byte_length / ctor.BYTES_PER_ELEMENT; ++i) { - WriteToTypedArray(ta_write, i, i % 128); + ta_write[i] = MayNeedBigInt(ta_write, i % 128); } return rab; } -function TestIterationAndResize(ta, expected, rab, resize_after, new_byte_length) { - let values = []; - let resized = false; - for (const value of ta) { - if (value instanceof Array) { - values.push([ - value[0], - Number(value[1]) - ]); - } else { - values.push(Number(value)); - } - if (!resized && values.length == resize_after) { - rab.resize(new_byte_length); - resized = true; - } - } - assert.compareArray(values, expected); - assert(resized); -} - -const no_elements = 10; -const offset = 2; for (let ctor of ctors) { + const no_elements = 10; + const offset = 2; const buffer_byte_length = no_elements * ctor.BYTES_PER_ELEMENT; const byte_offset = offset * ctor.BYTES_PER_ELEMENT; diff --git a/test/staging/ArrayBuffer/resizable/iterate-typed-array-and-shrink-mid-iteration.js b/test/language/statements/for-of/typedarray-backed-by-resizable-buffer-shrink-mid-iteration.js similarity index 61% rename from test/staging/ArrayBuffer/resizable/iterate-typed-array-and-shrink-mid-iteration.js rename to test/language/statements/for-of/typedarray-backed-by-resizable-buffer-shrink-mid-iteration.js index 8a10f0dbd81..a4862fd5c62 100644 --- a/test/staging/ArrayBuffer/resizable/iterate-typed-array-and-shrink-mid-iteration.js +++ b/test/language/statements/for-of/typedarray-backed-by-resizable-buffer-shrink-mid-iteration.js @@ -1,91 +1,27 @@ -// Copyright 2021 the V8 project authors. All rights reserved. +// Copyright 2023 the V8 project authors. All rights reserved. // This code is governed by the BSD license found in the LICENSE file. /*--- esid: sec-arraybuffer-length description: > - Automatically ported from IterateTypedArrayAndShrinkMidIteration test - in V8's mjsunit test typedarray-resizablearraybuffer.js + TypedArrays backed by resizable buffers are iterable with for-of and behave + correctly when the buffer is shrunk during iteration features: [resizable-arraybuffer] -includes: [compareArray.js] -flags: [onlyStrict] +includes: [compareArray.js, resizableArrayBufferUtils.js] ---*/ -class MyUint8Array extends Uint8Array { -} - -class MyFloat32Array extends Float32Array { -} - -class MyBigInt64Array extends BigInt64Array { -} - -const builtinCtors = [ - Uint8Array, - Int8Array, - Uint16Array, - Int16Array, - Uint32Array, - Int32Array, - Float32Array, - Float64Array, - Uint8ClampedArray, - BigUint64Array, - BigInt64Array -]; - -const ctors = [ - ...builtinCtors, - MyUint8Array, - MyFloat32Array, - MyBigInt64Array -]; - -function CreateResizableArrayBuffer(byteLength, maxByteLength) { - return new ArrayBuffer(byteLength, { maxByteLength: maxByteLength }); -} - -function WriteToTypedArray(array, index, value) { - if (array instanceof BigInt64Array || array instanceof BigUint64Array) { - array[index] = BigInt(value); - } else { - array[index] = value; - } -} - function CreateRab(buffer_byte_length, ctor) { const rab = CreateResizableArrayBuffer(buffer_byte_length, 2 * buffer_byte_length); let ta_write = new ctor(rab); for (let i = 0; i < buffer_byte_length / ctor.BYTES_PER_ELEMENT; ++i) { - WriteToTypedArray(ta_write, i, i % 128); + ta_write[i] = MayNeedBigInt(ta_write, i % 128); } return rab; } -function TestIterationAndResize(ta, expected, rab, resize_after, new_byte_length) { - let values = []; - let resized = false; - for (const value of ta) { - if (value instanceof Array) { - values.push([ - value[0], - Number(value[1]) - ]); - } else { - values.push(Number(value)); - } - if (!resized && values.length == resize_after) { - rab.resize(new_byte_length); - resized = true; - } - } - assert.compareArray(values, expected); - assert(resized); -} - -const no_elements = 10; -const offset = 2; for (let ctor of ctors) { + const no_elements = 10; + const offset = 2; const buffer_byte_length = no_elements * ctor.BYTES_PER_ELEMENT; const byte_offset = offset * ctor.BYTES_PER_ELEMENT; diff --git a/test/staging/ArrayBuffer/resizable/iterate-typed-array-and-shrink-to-zero-mid-iteration.js b/test/language/statements/for-of/typedarray-backed-by-resizable-buffer-shrink-to-zero-mid-iteration.js similarity index 51% rename from test/staging/ArrayBuffer/resizable/iterate-typed-array-and-shrink-to-zero-mid-iteration.js rename to test/language/statements/for-of/typedarray-backed-by-resizable-buffer-shrink-to-zero-mid-iteration.js index 4d4df1ad991..061b2e0ef8f 100644 --- a/test/staging/ArrayBuffer/resizable/iterate-typed-array-and-shrink-to-zero-mid-iteration.js +++ b/test/language/statements/for-of/typedarray-backed-by-resizable-buffer-shrink-to-zero-mid-iteration.js @@ -1,91 +1,27 @@ -// Copyright 2021 the V8 project authors. All rights reserved. +// Copyright 2023 the V8 project authors. All rights reserved. // This code is governed by the BSD license found in the LICENSE file. /*--- esid: sec-arraybuffer-length description: > - Automatically ported from IterateTypedArrayAndShrinkToZeroMidIteration test - in V8's mjsunit test typedarray-resizablearraybuffer.js + TypedArrays backed by resizable buffers are iterable with for-of and behave + correctly when the buffer is shrunk during iteration features: [resizable-arraybuffer] -includes: [compareArray.js] -flags: [onlyStrict] +includes: [compareArray.js, resizableArrayBufferUtils.js] ---*/ -class MyUint8Array extends Uint8Array { -} - -class MyFloat32Array extends Float32Array { -} - -class MyBigInt64Array extends BigInt64Array { -} - -const builtinCtors = [ - Uint8Array, - Int8Array, - Uint16Array, - Int16Array, - Uint32Array, - Int32Array, - Float32Array, - Float64Array, - Uint8ClampedArray, - BigUint64Array, - BigInt64Array -]; - -const ctors = [ - ...builtinCtors, - MyUint8Array, - MyFloat32Array, - MyBigInt64Array -]; - -function CreateResizableArrayBuffer(byteLength, maxByteLength) { - return new ArrayBuffer(byteLength, { maxByteLength: maxByteLength }); -} - -function WriteToTypedArray(array, index, value) { - if (array instanceof BigInt64Array || array instanceof BigUint64Array) { - array[index] = BigInt(value); - } else { - array[index] = value; - } -} - function CreateRab(buffer_byte_length, ctor) { const rab = CreateResizableArrayBuffer(buffer_byte_length, 2 * buffer_byte_length); let ta_write = new ctor(rab); for (let i = 0; i < buffer_byte_length / ctor.BYTES_PER_ELEMENT; ++i) { - WriteToTypedArray(ta_write, i, i % 128); + ta_write[i] = MayNeedBigInt(ta_write, i % 128); } return rab; } -function TestIterationAndResize(ta, expected, rab, resize_after, new_byte_length) { - let values = []; - let resized = false; - for (const value of ta) { - if (value instanceof Array) { - values.push([ - value[0], - Number(value[1]) - ]); - } else { - values.push(Number(value)); - } - if (!resized && values.length == resize_after) { - rab.resize(new_byte_length); - resized = true; - } - } - assert.compareArray(values, expected); - assert(resized); -} - -const no_elements = 10; -const offset = 2; for (let ctor of ctors) { + const no_elements = 10; + const offset = 2; const buffer_byte_length = no_elements * ctor.BYTES_PER_ELEMENT; const byte_offset = offset * ctor.BYTES_PER_ELEMENT; diff --git a/test/staging/ArrayBuffer/resizable/iterate-typed-array.js b/test/language/statements/for-of/typedarray-backed-by-resizable-buffer.js similarity index 50% rename from test/staging/ArrayBuffer/resizable/iterate-typed-array.js rename to test/language/statements/for-of/typedarray-backed-by-resizable-buffer.js index a11fc34de90..4d94f3badb9 100644 --- a/test/staging/ArrayBuffer/resizable/iterate-typed-array.js +++ b/test/language/statements/for-of/typedarray-backed-by-resizable-buffer.js @@ -1,68 +1,24 @@ -// Copyright 2021 the V8 project authors. All rights reserved. +// Copyright 2023 the V8 project authors. All rights reserved. // This code is governed by the BSD license found in the LICENSE file. /*--- esid: sec-arraybuffer-length description: > - Automatically ported from IterateTypedArray test - in V8's mjsunit test typedarray-resizablearraybuffer.js + TypedArrays backed by resizable buffers are iterable with for-of features: [resizable-arraybuffer] -includes: [compareArray.js] -flags: [onlyStrict] +includes: [compareArray.js, resizableArrayBufferUtils.js] ---*/ -class MyUint8Array extends Uint8Array { -} - -class MyFloat32Array extends Float32Array { -} - -class MyBigInt64Array extends BigInt64Array { -} - -const builtinCtors = [ - Uint8Array, - Int8Array, - Uint16Array, - Int16Array, - Uint32Array, - Int32Array, - Float32Array, - Float64Array, - Uint8ClampedArray, - BigUint64Array, - BigInt64Array -]; - -const ctors = [ - ...builtinCtors, - MyUint8Array, - MyFloat32Array, - MyBigInt64Array -]; - -function CreateResizableArrayBuffer(byteLength, maxByteLength) { - return new ArrayBuffer(byteLength, { maxByteLength: maxByteLength }); -} - -function WriteToTypedArray(array, index, value) { - if (array instanceof BigInt64Array || array instanceof BigUint64Array) { - array[index] = BigInt(value); - } else { - array[index] = value; - } -} - -const no_elements = 10; -const offset = 2; -function TestIteration(ta, expected) { +function CollectValues(ta) { let values = []; for (const value of ta) { values.push(Number(value)); } - assert.compareArray(values, expected); + return values; } for (let ctor of ctors) { + const no_elements = 10; + const offset = 2; const buffer_byte_length = no_elements * ctor.BYTES_PER_ELEMENT; // We can use the same RAB for all the TAs below, since we won't modify it // after writing the initial values. @@ -72,34 +28,34 @@ for (let ctor of ctors) { // Write some data into the array. let ta_write = new ctor(rab); for (let i = 0; i < no_elements; ++i) { - WriteToTypedArray(ta_write, i, i % 128); + ta_write[i] = MayNeedBigInt(ta_write, i % 128); } // Create various different styles of TypedArrays with the RAB as the // backing store and iterate them. const ta = new ctor(rab, 0, 3); - TestIteration(ta, [ + assert.compareArray(CollectValues(ta), [ 0, 1, 2 ]); const empty_ta = new ctor(rab, 0, 0); - TestIteration(empty_ta, []); + assert.compareArray(CollectValues(empty_ta), []); const ta_with_offset = new ctor(rab, byte_offset, 3); - TestIteration(ta_with_offset, [ + assert.compareArray(CollectValues(ta_with_offset), [ 2, 3, 4 ]); const empty_ta_with_offset = new ctor(rab, byte_offset, 0); - TestIteration(empty_ta_with_offset, []); + assert.compareArray(CollectValues(empty_ta_with_offset), []); const length_tracking_ta = new ctor(rab); { let expected = []; for (let i = 0; i < no_elements; ++i) { expected.push(i % 128); } - TestIteration(length_tracking_ta, expected); + assert.compareArray(CollectValues(length_tracking_ta), expected); } const length_tracking_ta_with_offset = new ctor(rab, byte_offset); { @@ -107,8 +63,8 @@ for (let ctor of ctors) { for (let i = offset; i < no_elements; ++i) { expected.push(i % 128); } - TestIteration(length_tracking_ta_with_offset, expected); + assert.compareArray(CollectValues(length_tracking_ta_with_offset), expected); } const empty_length_tracking_ta_with_offset = new ctor(rab, buffer_byte_length); - TestIteration(empty_length_tracking_ta_with_offset, []); + assert.compareArray(CollectValues(empty_length_tracking_ta_with_offset), []); } diff --git a/test/language/statements/using/throws-if-initializer-not-object.js b/test/language/statements/using/throws-if-initializer-not-object.js new file mode 100644 index 00000000000..d3934e8016f --- /dev/null +++ b/test/language/statements/using/throws-if-initializer-not-object.js @@ -0,0 +1,71 @@ +// Copyright (C) 2023 Ron Buckton. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +esid: sec-let-and-const-declarations-runtime-semantics-evaluation +description: Throws if initialized value is not an Object +info: | + RS: Evaluation + UsingDeclaration : using BindingList ; + + 1. Perform ? BindingEvaluation of BindingList with argument sync-dispose. + 2. Return empty. + + RS: BindingEvaluation + LexicalBinding : BindingIdentifier Initializer + + ... + 5. Return ? InitializeReferencedBinding(lhs, value, hint). + + InitializeReferencedBinding ( V, W ) + + ... + 4. Return ? base.InitializeBinding(V.[[ReferencedName]], W). + + InitializeBinding ( N, V, hint ) + + ... + 2. If hint is not normal, perform ? AddDisposableResource(envRec.[[DisposeCapability]], V, hint). + ... + + AddDisposableResource ( disposeCapability, V, hint [, method ] ) + + 1. If method is not present then, + a. If V is either null or undefined and hint is sync-dispose, then + i. Return unused. + b. Let resource be ? CreateDisposableResource(V, hint). + ... + + CreateDisposableResource ( V, hint [ , method ] ) + + 1. If method is not present, then + a. If V is either null or undefined, then + ... + b. Else, + i. If V is not an Object, throw a TypeError exception. + ... + ... + +features: [explicit-resource-management] +---*/ + +assert.throws(TypeError, function() { + using x = true; +}, 'true'); + +assert.throws(TypeError, function() { + using x = false; +}, 'false'); + +assert.throws(TypeError, function() { + using x = 1; +}, 'number'); + +assert.throws(TypeError, function() { + using x = 'object'; +}, 'string'); + +var s = Symbol(); +assert.throws(TypeError, function() { + using x = s; +}, 'symbol'); diff --git a/test/language/statements/with/get-binding-value-call-with-proxy-env.js b/test/language/statements/with/get-binding-value-call-with-proxy-env.js new file mode 100644 index 00000000000..a8fa7663b1d --- /dev/null +++ b/test/language/statements/with/get-binding-value-call-with-proxy-env.js @@ -0,0 +1,66 @@ +// Copyright (C) 2024 André Bargull. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +esid: sec-object-environment-records-getbindingvalue-n-s +description: > + Lookups in proxy binding object for call expression. +info: | + 9.1.1.2.1 HasBinding ( N ) + + 1. Let bindingObject be envRec.[[BindingObject]]. + 2. Let foundBinding be ? HasProperty(bindingObject, N). + 3. If foundBinding is false, return false. + ... + 5. Let unscopables be ? Get(bindingObject, %Symbol.unscopables%). + ... + 7. Return true. + + 9.1.1.2.6 GetBindingValue ( N, S ) + + 1. Let bindingObject be envRec.[[BindingObject]]. + 2. Let value be ? HasProperty(bindingObject, N). + 3. If value is false, then + a. If S is false, return undefined; otherwise throw a ReferenceError exception. + 4. Return ? Get(bindingObject, N). + +features: [Proxy, Reflect] +flags: [noStrict] +includes: [compareArray.js, proxyTrapsHelper.js] +---*/ + +var log = []; + +// Environment contains referenced binding. +var env = { + Object, +}; + +var proxy = new Proxy(env, allowProxyTraps({ + has(t, pk) { + log.push("has:" + String(pk)); + return Reflect.has(t, pk); + }, + get(t, pk, r) { + log.push("get:" + String(pk)); + return Reflect.get(t, pk, r); + }, +})); + +with (proxy) { + Object(); +} + +assert.compareArray(log, [ + // HasBinding, step 2. + "has:Object", + + // HasBinding, step 5. + "get:Symbol(Symbol.unscopables)", + + // GetBindingValue, step 2. + "has:Object", + + // GetBindingValue, step 4. + "get:Object", +]); diff --git a/test/language/statements/with/get-binding-value-idref-with-proxy-env.js b/test/language/statements/with/get-binding-value-idref-with-proxy-env.js new file mode 100644 index 00000000000..ab642634dbc --- /dev/null +++ b/test/language/statements/with/get-binding-value-idref-with-proxy-env.js @@ -0,0 +1,66 @@ +// Copyright (C) 2024 André Bargull. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +esid: sec-object-environment-records-getbindingvalue-n-s +description: > + Lookups in proxy binding object for identifier reference. +info: | + 9.1.1.2.1 HasBinding ( N ) + + 1. Let bindingObject be envRec.[[BindingObject]]. + 2. Let foundBinding be ? HasProperty(bindingObject, N). + 3. If foundBinding is false, return false. + ... + 5. Let unscopables be ? Get(bindingObject, %Symbol.unscopables%). + ... + 7. Return true. + + 9.1.1.2.6 GetBindingValue ( N, S ) + + 1. Let bindingObject be envRec.[[BindingObject]]. + 2. Let value be ? HasProperty(bindingObject, N). + 3. If value is false, then + a. If S is false, return undefined; otherwise throw a ReferenceError exception. + 4. Return ? Get(bindingObject, N). + +features: [Proxy, Reflect] +flags: [noStrict] +includes: [compareArray.js, proxyTrapsHelper.js] +---*/ + +var log = []; + +// Environment contains referenced binding. +var env = { + Object, +}; + +var proxy = new Proxy(env, allowProxyTraps({ + has(t, pk) { + log.push("has:" + String(pk)); + return Reflect.has(t, pk); + }, + get(t, pk, r) { + log.push("get:" + String(pk)); + return Reflect.get(t, pk, r); + }, +})); + +with (proxy) { + Object; +} + +assert.compareArray(log, [ + // HasBinding, step 2. + "has:Object", + + // HasBinding, step 5. + "get:Symbol(Symbol.unscopables)", + + // GetBindingValue, step 2. + "has:Object", + + // GetBindingValue, step 4. + "get:Object", +]); diff --git a/test/language/statements/with/get-mutable-binding-binding-deleted-in-get-unscopables-strict-mode.js b/test/language/statements/with/get-mutable-binding-binding-deleted-in-get-unscopables-strict-mode.js new file mode 100644 index 00000000000..68d3810aba9 --- /dev/null +++ b/test/language/statements/with/get-mutable-binding-binding-deleted-in-get-unscopables-strict-mode.js @@ -0,0 +1,42 @@ +// Copyright (C) 2024 André Bargull. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +esid: sec-object-environment-records-getbindingvalue-n-s +description: > + Binding deleted when retrieving unscopables. +info: | + 9.1.1.2.6 GetBindingValue ( N, S ) + + 1. Let bindingObject be envRec.[[BindingObject]]. + 2. Let value be ? HasProperty(bindingObject, N). + 3. If value is false, then + a. If S is false, return undefined; otherwise throw a ReferenceError exception. + ... + +flags: [noStrict] +features: [Symbol.unscopables] +---*/ + +var unscopablesCalled = 0; + +var env = { + binding: 0, + get [Symbol.unscopables]() { + unscopablesCalled++; + delete env.binding; + return null; + } +}; + +var result = null; +with (env) { + assert.throws(ReferenceError, function() { + "use strict"; + result = binding; + }); +} + +assert.sameValue(unscopablesCalled, 1, "get [Symbol.unscopables] called once"); + +assert.sameValue(result, null, "result not modified"); diff --git a/test/language/statements/with/get-mutable-binding-binding-deleted-in-get-unscopables.js b/test/language/statements/with/get-mutable-binding-binding-deleted-in-get-unscopables.js new file mode 100644 index 00000000000..7ebb6877bad --- /dev/null +++ b/test/language/statements/with/get-mutable-binding-binding-deleted-in-get-unscopables.js @@ -0,0 +1,39 @@ +// Copyright (C) 2024 André Bargull. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +esid: sec-object-environment-records-getbindingvalue-n-s +description: > + Binding deleted when retrieving unscopables. +info: | + 9.1.1.2.6 GetBindingValue ( N, S ) + + 1. Let bindingObject be envRec.[[BindingObject]]. + 2. Let value be ? HasProperty(bindingObject, N). + 3. If value is false, then + a. If S is false, return undefined; otherwise throw a ReferenceError exception. + ... + +flags: [noStrict] +features: [Symbol.unscopables] +---*/ + +var unscopablesCalled = 0; + +var env = { + binding: 0, + get [Symbol.unscopables]() { + unscopablesCalled++; + delete env.binding; + return null; + } +}; + +var result = null; +with (env) { + result = binding; +} + +assert.sameValue(unscopablesCalled, 1, "get [Symbol.unscopables] called once"); + +assert.sameValue(result, undefined, "result set to undefined"); diff --git a/test/language/statements/with/has-binding-call-with-proxy-env.js b/test/language/statements/with/has-binding-call-with-proxy-env.js new file mode 100644 index 00000000000..045fecb8ffd --- /dev/null +++ b/test/language/statements/with/has-binding-call-with-proxy-env.js @@ -0,0 +1,40 @@ +// Copyright (C) 2024 André Bargull. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +esid: sec-object-environment-records-hasbinding-n +description: > + Lookups in proxy binding object for call expression. +info: | + 9.1.1.2.1 HasBinding ( N ) + + 1. Let bindingObject be envRec.[[BindingObject]]. + 2. Let foundBinding be ? HasProperty(bindingObject, N). + 3. If foundBinding is false, return false. + ... + +features: [Proxy, Reflect] +flags: [noStrict] +includes: [compareArray.js, proxyTrapsHelper.js] +---*/ + +var log = []; + +// Empty environment. +var env = {}; + +var proxy = new Proxy(env, allowProxyTraps({ + has(t, pk) { + log.push("has:" + String(pk)); + return Reflect.has(t, pk); + }, +})); + +with (proxy) { + Object(); +} + +assert.compareArray(log, [ + // HasBinding, step 2. + "has:Object", +]); diff --git a/test/language/statements/with/has-binding-idref-with-proxy-env.js b/test/language/statements/with/has-binding-idref-with-proxy-env.js new file mode 100644 index 00000000000..26a3931a2a2 --- /dev/null +++ b/test/language/statements/with/has-binding-idref-with-proxy-env.js @@ -0,0 +1,40 @@ +// Copyright (C) 2024 André Bargull. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +esid: sec-object-environment-records-hasbinding-n +description: > + Lookups in proxy binding object for identifier reference. +info: | + 9.1.1.2.1 HasBinding ( N ) + + 1. Let bindingObject be envRec.[[BindingObject]]. + 2. Let foundBinding be ? HasProperty(bindingObject, N). + 3. If foundBinding is false, return false. + ... + +features: [Proxy, Reflect] +flags: [noStrict] +includes: [compareArray.js, proxyTrapsHelper.js] +---*/ + +var log = []; + +// Empty environment. +var env = {}; + +var proxy = new Proxy(env, allowProxyTraps({ + has(t, pk) { + log.push("has:" + String(pk)); + return Reflect.has(t, pk); + }, +})); + +with (proxy) { + Object; +} + +assert.compareArray(log, [ + // HasBinding, step 2. + "has:Object", +]); diff --git a/test/language/statements/with/set-mutable-binding-binding-deleted-in-get-unscopables-strict-mode.js b/test/language/statements/with/set-mutable-binding-binding-deleted-in-get-unscopables-strict-mode.js new file mode 100644 index 00000000000..d966990ae4a --- /dev/null +++ b/test/language/statements/with/set-mutable-binding-binding-deleted-in-get-unscopables-strict-mode.js @@ -0,0 +1,40 @@ +// Copyright (C) 2024 André Bargull. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +esid: sec-object-environment-records-setmutablebinding-n-v-s +description: > + Binding deleted when retrieving unscopables. +info: | + 9.1.1.2.5 SetMutableBinding ( N, V, S ) + + 1. Let bindingObject be envRec.[[BindingObject]]. + 2. Let stillExists be ? HasProperty(bindingObject, N). + 3. If stillExists is false and S is true, throw a ReferenceError exception. + ... + +flags: [noStrict] +features: [Symbol.unscopables] +---*/ + +var unscopablesCalled = 0; + +var env = { + binding: 0, + get [Symbol.unscopables]() { + unscopablesCalled++; + delete env.binding; + return null; + } +}; + +with (env) { + assert.throws(ReferenceError, function() { + "use strict"; + binding = 123; + }); +} + +assert.sameValue(unscopablesCalled, 1, "get [Symbol.unscopables] called once"); + +assert.sameValue(Object.getOwnPropertyDescriptor(env, "binding"), undefined, "binding deleted"); diff --git a/test/language/statements/with/set-mutable-binding-binding-deleted-in-get-unscopables.js b/test/language/statements/with/set-mutable-binding-binding-deleted-in-get-unscopables.js new file mode 100644 index 00000000000..ec40c10db2c --- /dev/null +++ b/test/language/statements/with/set-mutable-binding-binding-deleted-in-get-unscopables.js @@ -0,0 +1,44 @@ +// Copyright (C) 2024 André Bargull. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +esid: sec-object-environment-records-setmutablebinding-n-v-s +description: > + Binding deleted when retrieving unscopables. +info: | + 9.1.1.2.5 SetMutableBinding ( N, V, S ) + + 1. Let bindingObject be envRec.[[BindingObject]]. + 2. Let stillExists be ? HasProperty(bindingObject, N). + 3. If stillExists is false and S is true, throw a ReferenceError exception. + 4. Perform ? Set(bindingObject, N, V, S). + ... + +flags: [noStrict] +features: [Symbol.unscopables] +includes: [propertyHelper.js] +---*/ + +var unscopablesCalled = 0; + +var env = { + binding: 0, + get [Symbol.unscopables]() { + unscopablesCalled++; + delete env.binding; + return null; + } +}; + +with (env) { + binding = 123; +} + +assert.sameValue(unscopablesCalled, 1, "get [Symbol.unscopables] called once"); + +verifyProperty(env, "binding", { + value: 123, + writable: true, + enumerable: true, + configurable: true, +}); diff --git a/test/language/statements/with/set-mutable-binding-binding-deleted-with-typed-array-in-proto-chain-strict-mode.js b/test/language/statements/with/set-mutable-binding-binding-deleted-with-typed-array-in-proto-chain-strict-mode.js new file mode 100644 index 00000000000..75c732657fd --- /dev/null +++ b/test/language/statements/with/set-mutable-binding-binding-deleted-with-typed-array-in-proto-chain-strict-mode.js @@ -0,0 +1,36 @@ +// Copyright (C) 2024 André Bargull. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +esid: sec-object-environment-records-setmutablebinding-n-v-s +description: > + Typed Array index binding deleted from object. +info: | + 9.1.1.2.5 SetMutableBinding ( N, V, S ) + + 1. Let bindingObject be envRec.[[BindingObject]]. + 2. Let stillExists be ? HasProperty(bindingObject, N). + 3. If stillExists is false and S is true, throw a ReferenceError exception. + ... + +flags: [noStrict] +features: [TypedArray] +---*/ + +var typedArray = new Int32Array(10); + +var env = Object.create(typedArray); + +Object.defineProperty(env, "NaN", { + configurable: true, + value: 100, +}); + +with (env) { + assert.throws(ReferenceError, function() { + "use strict"; + NaN = (delete env.NaN, 0); + }); +} + +assert.sameValue(Object.getOwnPropertyDescriptor(env, "NaN"), undefined); diff --git a/test/language/statements/with/set-mutable-binding-binding-deleted-with-typed-array-in-proto-chain.js b/test/language/statements/with/set-mutable-binding-binding-deleted-with-typed-array-in-proto-chain.js new file mode 100644 index 00000000000..a3519982098 --- /dev/null +++ b/test/language/statements/with/set-mutable-binding-binding-deleted-with-typed-array-in-proto-chain.js @@ -0,0 +1,33 @@ +// Copyright (C) 2024 André Bargull. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +esid: sec-object-environment-records-setmutablebinding-n-v-s +description: > + Typed Array index binding deleted from object. +info: | + 9.1.1.2.5 SetMutableBinding ( N, V, S ) + + 1. Let bindingObject be envRec.[[BindingObject]]. + 2. Let stillExists be ? HasProperty(bindingObject, N). + 3. If stillExists is false and S is true, throw a ReferenceError exception. + 4. Perform ? Set(bindingObject, N, V, S). + +flags: [noStrict] +features: [TypedArray] +---*/ + +var typedArray = new Int32Array(10); + +var env = Object.create(typedArray); + +Object.defineProperty(env, "NaN", { + configurable: true, + value: 100, +}); + +with (env) { + NaN = (delete env.NaN, 0); +} + +assert.sameValue(Object.getOwnPropertyDescriptor(env, "NaN"), undefined); diff --git a/test/language/statements/with/set-mutable-binding-idref-compound-assign-with-proxy-env.js b/test/language/statements/with/set-mutable-binding-idref-compound-assign-with-proxy-env.js new file mode 100644 index 00000000000..166803d7529 --- /dev/null +++ b/test/language/statements/with/set-mutable-binding-idref-compound-assign-with-proxy-env.js @@ -0,0 +1,105 @@ +// Copyright (C) 2024 André Bargull. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +esid: sec-object-environment-records-setmutablebinding-n-v-s +description: > + Lookups in proxy binding object for identifier reference. +info: | + 9.1.1.2.1 HasBinding ( N ) + + 1. Let bindingObject be envRec.[[BindingObject]]. + 2. Let foundBinding be ? HasProperty(bindingObject, N). + 3. If foundBinding is false, return false. + ... + 5. Let unscopables be ? Get(bindingObject, %Symbol.unscopables%). + ... + 7. Return true. + + 9.1.1.2.6 GetBindingValue ( N, S ) + + 1. Let bindingObject be envRec.[[BindingObject]]. + 2. Let value be ? HasProperty(bindingObject, N). + 3. If value is false, then + a. If S is false, return undefined; otherwise throw a ReferenceError exception. + 4. Return ? Get(bindingObject, N). + + 9.1.1.2.5 SetMutableBinding ( N, V, S ) + + 1. Let bindingObject be envRec.[[BindingObject]]. + 2. Let stillExists be ? HasProperty(bindingObject, N). + ... + 4. Perform ? Set(bindingObject, N, V, S). + ... + + 10.1.9.2 OrdinarySetWithOwnDescriptor ( O, P, V, Receiver, ownDesc ) + + ... + 2. If IsDataDescriptor(ownDesc) is true, then + ... + c. Let existingDescriptor be ? Receiver.[[GetOwnProperty]](P). + d. If existingDescriptor is not undefined, then + ... + iv. Return ? Receiver.[[DefineOwnProperty]](P, valueDesc). + ... + +features: [Proxy, Reflect] +flags: [noStrict] +includes: [compareArray.js, proxyTrapsHelper.js] +---*/ + +var log = []; + +// Environment contains referenced binding. +var env = { + p: 0, +}; + +var proxy = new Proxy(env, allowProxyTraps({ + has(t, pk) { + log.push("has:" + String(pk)); + return Reflect.has(t, pk); + }, + get(t, pk, r) { + log.push("get:" + String(pk)); + return Reflect.get(t, pk, r); + }, + set(t, pk, v, r) { + log.push("set:" + String(pk)); + return Reflect.set(t, pk, v, r); + }, + getOwnPropertyDescriptor(t, pk) { + log.push("getOwnPropertyDescriptor:" + String(pk)); + return Reflect.getOwnPropertyDescriptor(t, pk); + }, + defineProperty(t, pk, d) { + log.push("defineProperty:" + String(pk)); + return Reflect.defineProperty(t, pk, d); + }, +})); + +with (proxy) { + p += 1; +} + +assert.compareArray(log, [ + // HasBinding, step 2. + "has:p", + + // HasBinding, step 5. + "get:Symbol(Symbol.unscopables)", + + // GetBindingValue, step 2. + "has:p", + + // GetBindingValue, step 4. + "get:p", + + // SetMutableBinding, step 2. + "has:p", + + // SetMutableBinding, step 4. + "set:p", + "getOwnPropertyDescriptor:p", + "defineProperty:p", +]); diff --git a/test/language/statements/with/set-mutable-binding-idref-with-proxy-env.js b/test/language/statements/with/set-mutable-binding-idref-with-proxy-env.js new file mode 100644 index 00000000000..e5f202eb508 --- /dev/null +++ b/test/language/statements/with/set-mutable-binding-idref-with-proxy-env.js @@ -0,0 +1,91 @@ +// Copyright (C) 2024 André Bargull. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +esid: sec-object-environment-records-setmutablebinding-n-v-s +description: > + Lookups in proxy binding object for identifier reference. +info: | + 9.1.1.2.1 HasBinding ( N ) + + 1. Let bindingObject be envRec.[[BindingObject]]. + 2. Let foundBinding be ? HasProperty(bindingObject, N). + 3. If foundBinding is false, return false. + ... + 5. Let unscopables be ? Get(bindingObject, %Symbol.unscopables%). + ... + 7. Return true. + + 9.1.1.2.5 SetMutableBinding ( N, V, S ) + + 1. Let bindingObject be envRec.[[BindingObject]]. + 2. Let stillExists be ? HasProperty(bindingObject, N). + ... + 4. Perform ? Set(bindingObject, N, V, S). + ... + + 10.1.9.2 OrdinarySetWithOwnDescriptor ( O, P, V, Receiver, ownDesc ) + + ... + 2. If IsDataDescriptor(ownDesc) is true, then + ... + c. Let existingDescriptor be ? Receiver.[[GetOwnProperty]](P). + d. If existingDescriptor is not undefined, then + ... + iv. Return ? Receiver.[[DefineOwnProperty]](P, valueDesc). + ... + +features: [Proxy, Reflect] +flags: [noStrict] +includes: [compareArray.js, proxyTrapsHelper.js] +---*/ + +var log = []; + +// Environment contains referenced binding. +var env = { + p: 0, +}; + +var proxy = new Proxy(env, allowProxyTraps({ + has(t, pk) { + log.push("has:" + String(pk)); + return Reflect.has(t, pk); + }, + get(t, pk, r) { + log.push("get:" + String(pk)); + return Reflect.get(t, pk, r); + }, + set(t, pk, v, r) { + log.push("set:" + String(pk)); + return Reflect.set(t, pk, v, r); + }, + getOwnPropertyDescriptor(t, pk) { + log.push("getOwnPropertyDescriptor:" + String(pk)); + return Reflect.getOwnPropertyDescriptor(t, pk); + }, + defineProperty(t, pk, d) { + log.push("defineProperty:" + String(pk)); + return Reflect.defineProperty(t, pk, d); + }, +})); + +with (proxy) { + p = 1; +} + +assert.compareArray(log, [ + // HasBinding, step 2. + "has:p", + + // HasBinding, step 5. + "get:Symbol(Symbol.unscopables)", + + // SetMutableBinding, step 2. + "has:p", + + // SetMutableBinding, step 4. + "set:p", + "getOwnPropertyDescriptor:p", + "defineProperty:p", +]); diff --git a/test/staging/ArrayBuffer/resizable/access-out-of-bounds-typed-array.js b/test/staging/ArrayBuffer/resizable/access-out-of-bounds-typed-array.js deleted file mode 100644 index 171de2396fe..00000000000 --- a/test/staging/ArrayBuffer/resizable/access-out-of-bounds-typed-array.js +++ /dev/null @@ -1,92 +0,0 @@ -// Copyright 2021 the V8 project authors. All rights reserved. -// This code is governed by the BSD license found in the LICENSE file. - -/*--- -esid: sec-arraybuffer-length -description: > - Automatically ported from AccessOutOfBoundsTypedArray test - in V8's mjsunit test typedarray-resizablearraybuffer.js -features: [resizable-arraybuffer] -flags: [onlyStrict] ----*/ - -class MyUint8Array extends Uint8Array { -} - -class MyFloat32Array extends Float32Array { -} - -class MyBigInt64Array extends BigInt64Array { -} - -const builtinCtors = [ - Uint8Array, - Int8Array, - Uint16Array, - Int16Array, - Uint32Array, - Int32Array, - Float32Array, - Float64Array, - Uint8ClampedArray, - BigUint64Array, - BigInt64Array -]; - -const ctors = [ - ...builtinCtors, - MyUint8Array, - MyFloat32Array, - MyBigInt64Array -]; - -function CreateResizableArrayBuffer(byteLength, maxByteLength) { - return new ArrayBuffer(byteLength, { maxByteLength: maxByteLength }); -} - -for (let ctor of ctors) { - if (ctor.BYTES_PER_ELEMENT != 1) { - continue; - } - const rab = CreateResizableArrayBuffer(16, 40); - const array = new ctor(rab, 0, 4); - // Initial values - for (let i = 0; i < 4; ++i) { - assert.sameValue(array[i], 0); - } - // Within-bounds write - for (let i = 0; i < 4; ++i) { - array[i] = i; - } - // Within-bounds read - for (let i = 0; i < 4; ++i) { - assert.sameValue(array[i], i); - } - rab.resize(2); - // OOB read. If the RAB isn't large enough to fit the entire TypedArray, - // the length of the TypedArray is treated as 0. - for (let i = 0; i < 4; ++i) { - assert.sameValue(array[i], undefined); - } - // OOB write (has no effect) - for (let i = 0; i < 4; ++i) { - array[i] = 10; - } - rab.resize(4); - // Within-bounds read - for (let i = 0; i < 2; ++i) { - assert.sameValue(array[i], i); - } - // The shrunk-and-regrown part got zeroed. - for (let i = 2; i < 4; ++i) { - assert.sameValue(array[i], 0); - } - rab.resize(40); - // Within-bounds read - for (let i = 0; i < 2; ++i) { - assert.sameValue(array[i], i); - } - for (let i = 2; i < 4; ++i) { - assert.sameValue(array[i], 0); - } -} diff --git a/test/staging/ArrayBuffer/resizable/array-fill-parameter-conversion-resizes.js b/test/staging/ArrayBuffer/resizable/array-fill-parameter-conversion-resizes.js deleted file mode 100644 index 6b7f838fc34..00000000000 --- a/test/staging/ArrayBuffer/resizable/array-fill-parameter-conversion-resizes.js +++ /dev/null @@ -1,109 +0,0 @@ -// Copyright 2021 the V8 project authors. All rights reserved. -// This code is governed by the BSD license found in the LICENSE file. - -/*--- -esid: sec-arraybuffer-length -description: > - Automatically ported from ArrayFillParameterConversionResizes test - in V8's mjsunit test typedarray-resizablearraybuffer.js -includes: [compareArray.js] -features: [resizable-arraybuffer] -flags: [onlyStrict] ----*/ - -class MyUint8Array extends Uint8Array { -} - -class MyFloat32Array extends Float32Array { -} - -class MyBigInt64Array extends BigInt64Array { -} - -const builtinCtors = [ - Uint8Array, - Int8Array, - Uint16Array, - Int16Array, - Uint32Array, - Int32Array, - Float32Array, - Float64Array, - Uint8ClampedArray, - BigUint64Array, - BigInt64Array -]; - -const ctors = [ - ...builtinCtors, - MyUint8Array, - MyFloat32Array, - MyBigInt64Array -]; - -function CreateResizableArrayBuffer(byteLength, maxByteLength) { - return new ArrayBuffer(byteLength, { maxByteLength: maxByteLength }); -} - -function ReadDataFromBuffer(ab, ctor) { - let result = []; - const ta = new ctor(ab, 0, ab.byteLength / ctor.BYTES_PER_ELEMENT); - for (let item of ta) { - result.push(Number(item)); - } - return result; -} - -function ArrayFillHelper(ta, n, start, end) { - if (ta instanceof BigInt64Array || ta instanceof BigUint64Array) { - Array.prototype.fill.call(ta, BigInt(n), start, end); - } else { - Array.prototype.fill.call(ta, n, start, end); - } -} - -for (let ctor of ctors) { - const rab = CreateResizableArrayBuffer(4 * ctor.BYTES_PER_ELEMENT, 8 * ctor.BYTES_PER_ELEMENT); - const fixedLength = new ctor(rab, 0, 4); - const evil = { - valueOf: () => { - rab.resize(2 * ctor.BYTES_PER_ELEMENT); - return 3; - } - }; - ArrayFillHelper(fixedLength, evil, 1, 2); - assert.compareArray(ReadDataFromBuffer(rab, ctor), [ - 0, - 0 - ]); -} -for (let ctor of ctors) { - const rab = CreateResizableArrayBuffer(4 * ctor.BYTES_PER_ELEMENT, 8 * ctor.BYTES_PER_ELEMENT); - const fixedLength = new ctor(rab, 0, 4); - const evil = { - valueOf: () => { - rab.resize(2 * ctor.BYTES_PER_ELEMENT); - return 1; - } - }; - ArrayFillHelper(fixedLength, 3, evil, 2); - assert.compareArray(ReadDataFromBuffer(rab, ctor), [ - 0, - 0 - ]); -} -for (let ctor of ctors) { - const rab = CreateResizableArrayBuffer(4 * ctor.BYTES_PER_ELEMENT, 8 * ctor.BYTES_PER_ELEMENT); - const fixedLength = new ctor(rab, 0, 4); - const evil = { - valueOf: () => { - rab.resize(2 * ctor.BYTES_PER_ELEMENT); - return 2; - } - }; - ArrayFillHelper(fixedLength, 3, 1, evil); - assert.compareArray(ReadDataFromBuffer(rab, ctor), [ - 0, - 0 - ]); -} diff --git a/test/staging/ArrayBuffer/resizable/array-sort-with-default-comparison.js b/test/staging/ArrayBuffer/resizable/array-sort-with-default-comparison.js deleted file mode 100644 index 50eaddcf839..00000000000 --- a/test/staging/ArrayBuffer/resizable/array-sort-with-default-comparison.js +++ /dev/null @@ -1,235 +0,0 @@ -// Copyright 2021 the V8 project authors. All rights reserved. -// This code is governed by the BSD license found in the LICENSE file. - -/*--- -esid: sec-arraybuffer-length -description: > - Automatically ported from ArraySortWithDefaultComparison test - in V8's mjsunit test typedarray-resizablearraybuffer.js -includes: [compareArray.js] -features: [resizable-arraybuffer] -flags: [onlyStrict] ----*/ - -// The default comparison function for Array.prototype.sort is the string sort. - -class MyUint8Array extends Uint8Array { -} - -class MyFloat32Array extends Float32Array { -} - -class MyBigInt64Array extends BigInt64Array { -} - -const builtinCtors = [ - Uint8Array, - Int8Array, - Uint16Array, - Int16Array, - Uint32Array, - Int32Array, - Float32Array, - Float64Array, - Uint8ClampedArray, - BigUint64Array, - BigInt64Array -]; - -const ctors = [ - ...builtinCtors, - MyUint8Array, - MyFloat32Array, - MyBigInt64Array -]; - -function CreateResizableArrayBuffer(byteLength, maxByteLength) { - return new ArrayBuffer(byteLength, { maxByteLength: maxByteLength }); -} - -function WriteToTypedArray(array, index, value) { - if (array instanceof BigInt64Array || array instanceof BigUint64Array) { - array[index] = BigInt(value); - } else { - array[index] = value; - } -} - -function Convert(item) { - if (typeof item == 'bigint') { - return Number(item); - } - return item; -} - -function ToNumbers(array) { - let result = []; - for (let item of array) { - result.push(Convert(item)); - } - return result; -} - -const ArraySortHelper = (ta, ...rest) => { - Array.prototype.sort.call(ta, ...rest); -}; - -for (let ctor of ctors) { - const rab = CreateResizableArrayBuffer(4 * ctor.BYTES_PER_ELEMENT, 8 * ctor.BYTES_PER_ELEMENT); - const fixedLength = new ctor(rab, 0, 4); - const fixedLengthWithOffset = new ctor(rab, 2 * ctor.BYTES_PER_ELEMENT, 2); - const lengthTracking = new ctor(rab, 0); - const lengthTrackingWithOffset = new ctor(rab, 2 * ctor.BYTES_PER_ELEMENT); - const taFull = new ctor(rab, 0); - function WriteUnsortedData() { - // Write some data into the array. - for (let i = 0; i < taFull.length; ++i) { - WriteToTypedArray(taFull, i, 10 - 2 * i); - } - } - // Orig. array: [10, 8, 6, 4] - // [10, 8, 6, 4] << fixedLength - // [6, 4] << fixedLengthWithOffset - // [10, 8, 6, 4, ...] << lengthTracking - // [6, 4, ...] << lengthTrackingWithOffset - - WriteUnsortedData(); - ArraySortHelper(fixedLength); - assert.compareArray(ToNumbers(taFull), [ - 10, - 4, - 6, - 8 - ]); - WriteUnsortedData(); - ArraySortHelper(fixedLengthWithOffset); - assert.compareArray(ToNumbers(taFull), [ - 10, - 8, - 4, - 6 - ]); - WriteUnsortedData(); - ArraySortHelper(lengthTracking); - assert.compareArray(ToNumbers(taFull), [ - 10, - 4, - 6, - 8 - ]); - WriteUnsortedData(); - ArraySortHelper(lengthTrackingWithOffset); - assert.compareArray(ToNumbers(taFull), [ - 10, - 8, - 4, - 6 - ]); - - // Shrink so that fixed length TAs go out of bounds. - rab.resize(3 * ctor.BYTES_PER_ELEMENT); - - // Orig. array: [10, 8, 6] - // [10, 8, 6, ...] << lengthTracking - // [6, ...] << lengthTrackingWithOffset - - WriteUnsortedData(); - ArraySortHelper(fixedLength); // OOB -> NOOP - assert.compareArray(ToNumbers(taFull), [ - 10, - 8, - 6 - ]); - ArraySortHelper(fixedLengthWithOffset); // OOB -> NOOP - assert.compareArray(ToNumbers(taFull), [ - 10, - 8, - 6 - ]); - ArraySortHelper(lengthTracking); - assert.compareArray(ToNumbers(taFull), [ - 10, - 6, - 8 - ]); - WriteUnsortedData(); - ArraySortHelper(lengthTrackingWithOffset); - assert.compareArray(ToNumbers(taFull), [ - 10, - 8, - 6 - ]); - - // Shrink so that the TAs with offset go out of bounds. - rab.resize(1 * ctor.BYTES_PER_ELEMENT); - WriteUnsortedData(); - ArraySortHelper(fixedLength); // OOB -> NOOP - assert.compareArray(ToNumbers(taFull), [10]); - ArraySortHelper(fixedLengthWithOffset); // OOB -> NOOP - assert.compareArray(ToNumbers(taFull), [10]); - ArraySortHelper(lengthTrackingWithOffset); // OOB -> NOOP - assert.compareArray(ToNumbers(taFull), [10]); - ArraySortHelper(lengthTracking); - assert.compareArray(ToNumbers(taFull), [10]); - - // Shrink to zero. - rab.resize(0); - ArraySortHelper(fixedLength); // OOB -> NOOP - assert.compareArray(ToNumbers(taFull), []); - ArraySortHelper(fixedLengthWithOffset); // OOB -> NOOP - assert.compareArray(ToNumbers(taFull), []); - ArraySortHelper(lengthTrackingWithOffset); // OOB -> NOOP - assert.compareArray(ToNumbers(taFull), []); - ArraySortHelper(lengthTracking); - assert.compareArray(ToNumbers(taFull), []); - - // Grow so that all TAs are back in-bounds. - rab.resize(6 * ctor.BYTES_PER_ELEMENT); - - // Orig. array: [10, 8, 6, 4, 2, 0] - // [10, 8, 6, 4] << fixedLength - // [6, 4] << fixedLengthWithOffset - // [10, 8, 6, 4, 2, 0, ...] << lengthTracking - // [6, 4, 2, 0, ...] << lengthTrackingWithOffset - - WriteUnsortedData(); - ArraySortHelper(fixedLength); - assert.compareArray(ToNumbers(taFull), [ - 10, - 4, - 6, - 8, - 2, - 0 - ]); - WriteUnsortedData(); - ArraySortHelper(fixedLengthWithOffset); - assert.compareArray(ToNumbers(taFull), [ - 10, - 8, - 4, - 6, - 2, - 0 - ]); - WriteUnsortedData(); - ArraySortHelper(lengthTracking); - assert.compareArray(ToNumbers(taFull), [ - 0, - 10, - 2, - 4, - 6, - 8 - ]); - WriteUnsortedData(); - ArraySortHelper(lengthTrackingWithOffset); - assert.compareArray(ToNumbers(taFull), [ - 10, - 8, - 0, - 2, - 4, - 6 - ]); -} diff --git a/test/staging/ArrayBuffer/resizable/at-parameter-conversion-resizes.js b/test/staging/ArrayBuffer/resizable/at-parameter-conversion-resizes.js deleted file mode 100644 index 84c074e5802..00000000000 --- a/test/staging/ArrayBuffer/resizable/at-parameter-conversion-resizes.js +++ /dev/null @@ -1,91 +0,0 @@ -// Copyright 2021 the V8 project authors. All rights reserved. -// This code is governed by the BSD license found in the LICENSE file. - -/*--- -esid: sec-arraybuffer-length -description: > - Automatically ported from AtParameterConversionResizes test - in V8's mjsunit test typedarray-resizablearraybuffer.js -features: [resizable-arraybuffer] -flags: [onlyStrict] ----*/ - -class MyUint8Array extends Uint8Array { -} - -class MyFloat32Array extends Float32Array { -} - -class MyBigInt64Array extends BigInt64Array { -} - -const builtinCtors = [ - Uint8Array, - Int8Array, - Uint16Array, - Int16Array, - Uint32Array, - Int32Array, - Float32Array, - Float64Array, - Uint8ClampedArray, - BigUint64Array, - BigInt64Array -]; - -const ctors = [ - ...builtinCtors, - MyUint8Array, - MyFloat32Array, - MyBigInt64Array -]; - -function CreateResizableArrayBuffer(byteLength, maxByteLength) { - return new ArrayBuffer(byteLength, { maxByteLength: maxByteLength }); -} - -function Convert(item) { - if (typeof item == 'bigint') { - return Number(item); - } - return item; -} - -function TypedArrayAtHelper(ta, index) { - const result = ta.at(index); - return Convert(result); -} - -function ArrayAtHelper(ta, index) { - const result = Array.prototype.at.call(ta, index); - return Convert(result); -} - -function AtParameterConversionResizes(atHelper) { - for (let ctor of ctors) { - const rab = CreateResizableArrayBuffer(4 * ctor.BYTES_PER_ELEMENT, 8 * ctor.BYTES_PER_ELEMENT); - const fixedLength = new ctor(rab, 0, 4); - let evil = { - valueOf: () => { - rab.resize(2); - return 0; - } - }; - assert.sameValue(atHelper(fixedLength, evil), undefined); - } - for (let ctor of ctors) { - const rab = CreateResizableArrayBuffer(4 * ctor.BYTES_PER_ELEMENT, 8 * ctor.BYTES_PER_ELEMENT); - const lengthTracking = new ctor(rab); - let evil = { - valueOf: () => { - rab.resize(2); - return -1; - } - }; - // The TypedArray is *not* out of bounds since it's length-tracking. - assert.sameValue(atHelper(lengthTracking, evil), undefined); - } -} - -AtParameterConversionResizes(TypedArrayAtHelper); -AtParameterConversionResizes(ArrayAtHelper); diff --git a/test/staging/ArrayBuffer/resizable/at.js b/test/staging/ArrayBuffer/resizable/at.js deleted file mode 100644 index 0cad148c027..00000000000 --- a/test/staging/ArrayBuffer/resizable/at.js +++ /dev/null @@ -1,135 +0,0 @@ -// Copyright 2021 the V8 project authors. All rights reserved. -// This code is governed by the BSD license found in the LICENSE file. - -/*--- -esid: sec-arraybuffer-length -description: > - Automatically ported from At test - in V8's mjsunit test typedarray-resizablearraybuffer.js -features: [resizable-arraybuffer] -flags: [onlyStrict] ----*/ - -class MyUint8Array extends Uint8Array { -} - -class MyFloat32Array extends Float32Array { -} - -class MyBigInt64Array extends BigInt64Array { -} - -const builtinCtors = [ - Uint8Array, - Int8Array, - Uint16Array, - Int16Array, - Uint32Array, - Int32Array, - Float32Array, - Float64Array, - Uint8ClampedArray, - BigUint64Array, - BigInt64Array -]; - -const ctors = [ - ...builtinCtors, - MyUint8Array, - MyFloat32Array, - MyBigInt64Array -]; - -function CreateResizableArrayBuffer(byteLength, maxByteLength) { - return new ArrayBuffer(byteLength, { maxByteLength: maxByteLength }); -} - -function WriteToTypedArray(array, index, value) { - if (array instanceof BigInt64Array || array instanceof BigUint64Array) { - array[index] = BigInt(value); - } else { - array[index] = value; - } -} - -function Convert(item) { - if (typeof item == 'bigint') { - return Number(item); - } - return item; -} - -function TypedArrayAtHelper(ta, index) { - const result = ta.at(index); - return Convert(result); -} - -function ArrayAtHelper(ta, index) { - const result = Array.prototype.at.call(ta, index); - return Convert(result); -} - -function At(atHelper, oobThrows) { - for (let ctor of ctors) { - const rab = CreateResizableArrayBuffer(4 * ctor.BYTES_PER_ELEMENT, 8 * ctor.BYTES_PER_ELEMENT); - const fixedLength = new ctor(rab, 0, 4); - const fixedLengthWithOffset = new ctor(rab, 2 * ctor.BYTES_PER_ELEMENT, 2); - const lengthTracking = new ctor(rab, 0); - const lengthTrackingWithOffset = new ctor(rab, 2 * ctor.BYTES_PER_ELEMENT); - - // Write some data into the array. - let ta_write = new ctor(rab); - for (let i = 0; i < 4; ++i) { - WriteToTypedArray(ta_write, i, i); - } - assert.sameValue(atHelper(fixedLength, -1), 3); - assert.sameValue(atHelper(lengthTracking, -1), 3); - assert.sameValue(atHelper(fixedLengthWithOffset, -1), 3); - assert.sameValue(atHelper(lengthTrackingWithOffset, -1), 3); - - // Shrink so that fixed length TAs go out of bounds. - rab.resize(3 * ctor.BYTES_PER_ELEMENT); - if (oobThrows) { - assert.throws(TypeError, () => { - atHelper(fixedLength, -1); - }); - assert.throws(TypeError, () => { - atHelper(fixedLengthWithOffset, -1); - }); - } else { - assert.sameValue(atHelper(fixedLength, -1), undefined); - assert.sameValue(atHelper(fixedLengthWithOffset, -1), undefined); - } - assert.sameValue(atHelper(lengthTracking, -1), 2); - assert.sameValue(atHelper(lengthTrackingWithOffset, -1), 2); - - // Shrink so that the TAs with offset go out of bounds. - rab.resize(1 * ctor.BYTES_PER_ELEMENT); - if (oobThrows) { - assert.throws(TypeError, () => { - atHelper(fixedLength, -1); - }); - assert.throws(TypeError, () => { - atHelper(fixedLengthWithOffset, -1); - }); - assert.throws(TypeError, () => { - atHelper(lengthTrackingWithOffset, -1); - }); - } else { - assert.sameValue(atHelper(fixedLength, -1), undefined); - assert.sameValue(atHelper(fixedLengthWithOffset, -1), undefined); - assert.sameValue(atHelper(lengthTrackingWithOffset, -1), undefined); - } - assert.sameValue(atHelper(lengthTracking, -1), 0); - - // Grow so that all TAs are back in-bounds. New memory is zeroed. - rab.resize(6 * ctor.BYTES_PER_ELEMENT); - assert.sameValue(atHelper(fixedLength, -1), 0); - assert.sameValue(atHelper(lengthTracking, -1), 0); - assert.sameValue(atHelper(fixedLengthWithOffset, -1), 0); - assert.sameValue(atHelper(lengthTrackingWithOffset, -1), 0); - } -} - -At(TypedArrayAtHelper, true); -At(ArrayAtHelper, false); diff --git a/test/staging/ArrayBuffer/resizable/construct-invalid.js b/test/staging/ArrayBuffer/resizable/construct-invalid.js deleted file mode 100644 index 04af75ce840..00000000000 --- a/test/staging/ArrayBuffer/resizable/construct-invalid.js +++ /dev/null @@ -1,70 +0,0 @@ -// Copyright 2021 the V8 project authors. All rights reserved. -// This code is governed by the BSD license found in the LICENSE file. - -/*--- -esid: sec-arraybuffer-length -description: > - Automatically ported from ConstructInvalid test - in V8's mjsunit test typedarray-resizablearraybuffer.js -features: [resizable-arraybuffer] -flags: [onlyStrict] ----*/ - -class MyUint8Array extends Uint8Array { -} - -class MyFloat32Array extends Float32Array { -} - -class MyBigInt64Array extends BigInt64Array { -} - -const builtinCtors = [ - Uint8Array, - Int8Array, - Uint16Array, - Int16Array, - Uint32Array, - Int32Array, - Float32Array, - Float64Array, - Uint8ClampedArray, - BigUint64Array, - BigInt64Array -]; - -const ctors = [ - ...builtinCtors, - MyUint8Array, - MyFloat32Array, - MyBigInt64Array -]; - -function CreateResizableArrayBuffer(byteLength, maxByteLength) { - return new ArrayBuffer(byteLength, { maxByteLength: maxByteLength }); -} - -const rab = CreateResizableArrayBuffer(40, 80); -for (let ctor of ctors) { - // Length too big. - assert.throws(RangeError, () => { - new ctor(rab, 0, 40 / ctor.BYTES_PER_ELEMENT + 1); - }); - // Offset too close to the end. - assert.throws(RangeError, () => { - new ctor(rab, 40 - ctor.BYTES_PER_ELEMENT, 2); - }); - // Offset beyond end. - assert.throws(RangeError, () => { - new ctor(rab, 40, 1); - }); - if (ctor.BYTES_PER_ELEMENT > 1) { - // Offset not a multiple of the byte size. - assert.throws(RangeError, () => { - new ctor(rab, 1, 1); - }); - assert.throws(RangeError, () => { - new ctor(rab, 1); - }); - } -} diff --git a/test/staging/ArrayBuffer/resizable/copy-within-parameter-conversion-grows.js b/test/staging/ArrayBuffer/resizable/copy-within-parameter-conversion-grows.js deleted file mode 100644 index 8de44e220bc..00000000000 --- a/test/staging/ArrayBuffer/resizable/copy-within-parameter-conversion-grows.js +++ /dev/null @@ -1,114 +0,0 @@ -// Copyright 2021 the V8 project authors. All rights reserved. -// This code is governed by the BSD license found in the LICENSE file. - -/*--- -esid: sec-arraybuffer-length -description: > - Automatically ported from CopyWithinParameterConversionGrows test - in V8's mjsunit test typedarray-resizablearraybuffer.js -includes: [compareArray.js] -features: [resizable-arraybuffer] -flags: [onlyStrict] ----*/ - -class MyUint8Array extends Uint8Array { -} - -class MyFloat32Array extends Float32Array { -} - -class MyBigInt64Array extends BigInt64Array { -} - -const builtinCtors = [ - Uint8Array, - Int8Array, - Uint16Array, - Int16Array, - Uint32Array, - Int32Array, - Float32Array, - Float64Array, - Uint8ClampedArray, - BigUint64Array, - BigInt64Array -]; - -const ctors = [ - ...builtinCtors, - MyUint8Array, - MyFloat32Array, - MyBigInt64Array -]; - -function CreateResizableArrayBuffer(byteLength, maxByteLength) { - return new ArrayBuffer(byteLength, { maxByteLength: maxByteLength }); -} - -function WriteToTypedArray(array, index, value) { - if (array instanceof BigInt64Array || array instanceof BigUint64Array) { - array[index] = BigInt(value); - } else { - array[index] = value; - } -} - -function Convert(item) { - if (typeof item == 'bigint') { - return Number(item); - } - return item; -} - -function ToNumbers(array) { - let result = []; - for (let item of array) { - result.push(Convert(item)); - } - return result; -} - -for (let ctor of ctors) { - const rab = CreateResizableArrayBuffer(4 * ctor.BYTES_PER_ELEMENT, 8 * ctor.BYTES_PER_ELEMENT); - const lengthTracking = new ctor(rab); - for (let i = 0; i < 4; ++i) { - WriteToTypedArray(lengthTracking, i, i); - } - const evil = { - valueOf: () => { - rab.resize(6 * ctor.BYTES_PER_ELEMENT); - WriteToTypedArray(lengthTracking, 4, 4); - WriteToTypedArray(lengthTracking, 5, 5); - return 0; - } - }; - // Orig. array: [0, 1, 2, 3] [4, 5] - // ^ ^ ^ new elements - // target start - lengthTracking.copyWithin(evil, 2); - assert.compareArray(ToNumbers(lengthTracking), [ - 2, - 3, - 2, - 3, - 4, - 5 - ]); - rab.resize(4 * ctor.BYTES_PER_ELEMENT); - for (let i = 0; i < 4; ++i) { - WriteToTypedArray(lengthTracking, i, i); - } - - // Orig. array: [0, 1, 2, 3] [4, 5] - // ^ ^ ^ new elements - // start target - lengthTracking.copyWithin(2, evil); - assert.compareArray(ToNumbers(lengthTracking), [ - 0, - 1, - 0, - 1, - 4, - 5 - ]); -} diff --git a/test/staging/ArrayBuffer/resizable/copy-within-parameter-conversion-shrinks.js b/test/staging/ArrayBuffer/resizable/copy-within-parameter-conversion-shrinks.js deleted file mode 100644 index cfd4e50c95f..00000000000 --- a/test/staging/ArrayBuffer/resizable/copy-within-parameter-conversion-shrinks.js +++ /dev/null @@ -1,139 +0,0 @@ -// Copyright 2021 the V8 project authors. All rights reserved. -// This code is governed by the BSD license found in the LICENSE file. - -/*--- -esid: sec-arraybuffer-length -description: > - Automatically ported from CopyWithinParameterConversionShrinks test - in V8's mjsunit test typedarray-resizablearraybuffer.js -includes: [compareArray.js] -features: [resizable-arraybuffer] -flags: [onlyStrict] ----*/ - -class MyUint8Array extends Uint8Array { -} - -class MyFloat32Array extends Float32Array { -} - -class MyBigInt64Array extends BigInt64Array { -} - -const builtinCtors = [ - Uint8Array, - Int8Array, - Uint16Array, - Int16Array, - Uint32Array, - Int32Array, - Float32Array, - Float64Array, - Uint8ClampedArray, - BigUint64Array, - BigInt64Array -]; - -const ctors = [ - ...builtinCtors, - MyUint8Array, - MyFloat32Array, - MyBigInt64Array -]; - -function CreateResizableArrayBuffer(byteLength, maxByteLength) { - return new ArrayBuffer(byteLength, { maxByteLength: maxByteLength }); -} - -function WriteToTypedArray(array, index, value) { - if (array instanceof BigInt64Array || array instanceof BigUint64Array) { - array[index] = BigInt(value); - } else { - array[index] = value; - } -} - -function Convert(item) { - if (typeof item == 'bigint') { - return Number(item); - } - return item; -} - -function ToNumbers(array) { - let result = []; - for (let item of array) { - result.push(Convert(item)); - } - return result; -} - -for (let ctor of ctors) { - const rab = CreateResizableArrayBuffer(4 * ctor.BYTES_PER_ELEMENT, 8 * ctor.BYTES_PER_ELEMENT); - const fixedLength = new ctor(rab, 0, 4); - const evil = { - valueOf: () => { - rab.resize(2 * ctor.BYTES_PER_ELEMENT); - return 2; - } - }; - assert.throws(TypeError, () => { - fixedLength.copyWithin(evil, 0, 1); - }); - rab.resize(4 * ctor.BYTES_PER_ELEMENT); - assert.throws(TypeError, () => { - fixedLength.copyWithin(0, evil, 3); - }); - rab.resize(4 * ctor.BYTES_PER_ELEMENT); - assert.throws(TypeError, () => { - fixedLength.copyWithin(0, 1, evil); - }); -} -for (let ctor of ctors) { - const rab = CreateResizableArrayBuffer(4 * ctor.BYTES_PER_ELEMENT, 8 * ctor.BYTES_PER_ELEMENT); - const lengthTracking = new ctor(rab); - for (let i = 0; i < 4; ++i) { - WriteToTypedArray(lengthTracking, i, i); - } - // [0, 1, 2, 3] - // ^ - // target - // ^ - // start - const evil = { - valueOf: () => { - rab.resize(3 * ctor.BYTES_PER_ELEMENT); - return 2; - } - }; - lengthTracking.copyWithin(evil, 0); - assert.compareArray(ToNumbers(lengthTracking), [ - 0, - 1, - 0 - ]); -} -for (let ctor of ctors) { - const rab = CreateResizableArrayBuffer(4 * ctor.BYTES_PER_ELEMENT, 8 * ctor.BYTES_PER_ELEMENT); - const lengthTracking = new ctor(rab); - for (let i = 0; i < 4; ++i) { - WriteToTypedArray(lengthTracking, i, i); - } - // [0, 1, 2, 3] - // ^ - // start - // ^ - // target - const evil = { - valueOf: () => { - rab.resize(3 * ctor.BYTES_PER_ELEMENT); - return 2; - } - }; - lengthTracking.copyWithin(0, evil); - assert.compareArray(ToNumbers(lengthTracking), [ - 2, - 1, - 2 - ]); -} diff --git a/test/staging/ArrayBuffer/resizable/entries-keys-values-grow-mid-iteration.js b/test/staging/ArrayBuffer/resizable/entries-keys-values-grow-mid-iteration.js deleted file mode 100644 index 8f47b1261d4..00000000000 --- a/test/staging/ArrayBuffer/resizable/entries-keys-values-grow-mid-iteration.js +++ /dev/null @@ -1,299 +0,0 @@ -// Copyright 2021 the V8 project authors. All rights reserved. -// This code is governed by the BSD license found in the LICENSE file. - -/*--- -esid: sec-arraybuffer-length -description: > - Automatically ported from EntriesKeysValuesGrowMidIteration test - in V8's mjsunit test typedarray-resizablearraybuffer.js -features: [resizable-arraybuffer] -includes: [compareArray.js] -flags: [onlyStrict] ----*/ - -class MyUint8Array extends Uint8Array { -} - -class MyFloat32Array extends Float32Array { -} - -class MyBigInt64Array extends BigInt64Array { -} - -const builtinCtors = [ - Uint8Array, - Int8Array, - Uint16Array, - Int16Array, - Uint32Array, - Int32Array, - Float32Array, - Float64Array, - Uint8ClampedArray, - BigUint64Array, - BigInt64Array -]; - -const ctors = [ - ...builtinCtors, - MyUint8Array, - MyFloat32Array, - MyBigInt64Array -]; - -function CreateResizableArrayBuffer(byteLength, maxByteLength) { - return new ArrayBuffer(byteLength, { maxByteLength: maxByteLength }); -} - -function WriteToTypedArray(array, index, value) { - if (array instanceof BigInt64Array || array instanceof BigUint64Array) { - array[index] = BigInt(value); - } else { - array[index] = value; - } -} - -function TypedArrayEntriesHelper(ta) { - return ta.entries(); -} - -function ArrayEntriesHelper(ta) { - return Array.prototype.entries.call(ta); -} - -function TypedArrayKeysHelper(ta) { - return ta.keys(); -} - -function ArrayKeysHelper(ta) { - return Array.prototype.keys.call(ta); -} - -function TypedArrayValuesHelper(ta) { - return ta.values(); -} - -function ArrayValuesHelper(ta) { - return Array.prototype.values.call(ta); -} - -function TestIterationAndResize(ta, expected, rab, resize_after, new_byte_length) { - let values = []; - let resized = false; - for (const value of ta) { - if (value instanceof Array) { - values.push([ - value[0], - Number(value[1]) - ]); - } else { - values.push(Number(value)); - } - if (!resized && values.length == resize_after) { - rab.resize(new_byte_length); - resized = true; - } - } - assert.compareArray(values.flat(), expected.flat()); - assert(resized); -} - -function EntriesKeysValuesGrowMidIteration(entriesHelper, keysHelper, valuesHelper) { - // Orig. array: [0, 2, 4, 6] - // [0, 2, 4, 6] << fixedLength - // [4, 6] << fixedLengthWithOffset - // [0, 2, 4, 6, ...] << lengthTracking - // [4, 6, ...] << lengthTrackingWithOffset - function CreateRabForTest(ctor) { - const rab = CreateResizableArrayBuffer(4 * ctor.BYTES_PER_ELEMENT, 8 * ctor.BYTES_PER_ELEMENT); - // Write some data into the array. - const taWrite = new ctor(rab); - for (let i = 0; i < 4; ++i) { - WriteToTypedArray(taWrite, i, 2 * i); - } - return rab; - } - - // Iterating with entries() (the 4 loops below). - for (let ctor of ctors) { - const rab = CreateRabForTest(ctor); - const fixedLength = new ctor(rab, 0, 4); - // The fixed length array is not affected by resizing. - TestIterationAndResize(entriesHelper(fixedLength), [ - [ - 0, - 0 - ], - [ - 1, - 2 - ], - [ - 2, - 4 - ], - [ - 3, - 6 - ] - ], rab, 2, 6 * ctor.BYTES_PER_ELEMENT); - } - for (let ctor of ctors) { - const rab = CreateRabForTest(ctor); - const fixedLengthWithOffset = new ctor(rab, 2 * ctor.BYTES_PER_ELEMENT, 2); - // The fixed length array is not affected by resizing. - TestIterationAndResize(entriesHelper(fixedLengthWithOffset), [ - [ - 0, - 4 - ], - [ - 1, - 6 - ] - ], rab, 2, 6 * ctor.BYTES_PER_ELEMENT); - } - for (let ctor of ctors) { - const rab = CreateRabForTest(ctor); - const lengthTracking = new ctor(rab, 0); - TestIterationAndResize(entriesHelper(lengthTracking), [ - [ - 0, - 0 - ], - [ - 1, - 2 - ], - [ - 2, - 4 - ], - [ - 3, - 6 - ], - [ - 4, - 0 - ], - [ - 5, - 0 - ] - ], rab, 2, 6 * ctor.BYTES_PER_ELEMENT); - } - for (let ctor of ctors) { - const rab = CreateRabForTest(ctor); - const lengthTrackingWithOffset = new ctor(rab, 2 * ctor.BYTES_PER_ELEMENT); - TestIterationAndResize(entriesHelper(lengthTrackingWithOffset), [ - [ - 0, - 4 - ], - [ - 1, - 6 - ], - [ - 2, - 0 - ], - [ - 3, - 0 - ] - ], rab, 2, 6 * ctor.BYTES_PER_ELEMENT); - } - - // Iterating with keys() (the 4 loops below). - for (let ctor of ctors) { - const rab = CreateRabForTest(ctor); - const fixedLength = new ctor(rab, 0, 4); - // The fixed length array is not affected by resizing. - TestIterationAndResize(keysHelper(fixedLength), [ - 0, - 1, - 2, - 3 - ], rab, 2, 6 * ctor.BYTES_PER_ELEMENT); - } - for (let ctor of ctors) { - const rab = CreateRabForTest(ctor); - const fixedLengthWithOffset = new ctor(rab, 2 * ctor.BYTES_PER_ELEMENT, 2); - // The fixed length array is not affected by resizing. - TestIterationAndResize(keysHelper(fixedLengthWithOffset), [ - 0, - 1 - ], rab, 2, 6 * ctor.BYTES_PER_ELEMENT); - } - for (let ctor of ctors) { - const rab = CreateRabForTest(ctor); - const lengthTracking = new ctor(rab, 0); - TestIterationAndResize(keysHelper(lengthTracking), [ - 0, - 1, - 2, - 3, - 4, - 5 - ], rab, 2, 6 * ctor.BYTES_PER_ELEMENT); - } - for (let ctor of ctors) { - const rab = CreateRabForTest(ctor); - const lengthTrackingWithOffset = new ctor(rab, 2 * ctor.BYTES_PER_ELEMENT); - TestIterationAndResize(keysHelper(lengthTrackingWithOffset), [ - 0, - 1, - 2, - 3 - ], rab, 2, 6 * ctor.BYTES_PER_ELEMENT); - } - - // Iterating with values() (the 4 loops below). - for (let ctor of ctors) { - const rab = CreateRabForTest(ctor); - const fixedLength = new ctor(rab, 0, 4); - // The fixed length array is not affected by resizing. - TestIterationAndResize(valuesHelper(fixedLength), [ - 0, - 2, - 4, - 6 - ], rab, 2, 6 * ctor.BYTES_PER_ELEMENT); - } - for (let ctor of ctors) { - const rab = CreateRabForTest(ctor); - const fixedLengthWithOffset = new ctor(rab, 2 * ctor.BYTES_PER_ELEMENT, 2); - // The fixed length array is not affected by resizing. - TestIterationAndResize(valuesHelper(fixedLengthWithOffset), [ - 4, - 6 - ], rab, 2, 6 * ctor.BYTES_PER_ELEMENT); - } - for (let ctor of ctors) { - const rab = CreateRabForTest(ctor); - const lengthTracking = new ctor(rab, 0); - TestIterationAndResize(valuesHelper(lengthTracking), [ - 0, - 2, - 4, - 6, - 0, - 0 - ], rab, 2, 6 * ctor.BYTES_PER_ELEMENT); - } - for (let ctor of ctors) { - const rab = CreateRabForTest(ctor); - const lengthTrackingWithOffset = new ctor(rab, 2 * ctor.BYTES_PER_ELEMENT); - TestIterationAndResize(valuesHelper(lengthTrackingWithOffset), [ - 4, - 6, - 0, - 0 - ], rab, 2, 6 * ctor.BYTES_PER_ELEMENT); - } -} - -EntriesKeysValuesGrowMidIteration(TypedArrayEntriesHelper, TypedArrayKeysHelper, TypedArrayValuesHelper); -EntriesKeysValuesGrowMidIteration(ArrayEntriesHelper, ArrayKeysHelper, ArrayValuesHelper); diff --git a/test/staging/ArrayBuffer/resizable/entries-keys-values-shrink-mid-iteration.js b/test/staging/ArrayBuffer/resizable/entries-keys-values-shrink-mid-iteration.js deleted file mode 100644 index ce8388466d0..00000000000 --- a/test/staging/ArrayBuffer/resizable/entries-keys-values-shrink-mid-iteration.js +++ /dev/null @@ -1,244 +0,0 @@ -// Copyright 2021 the V8 project authors. All rights reserved. -// This code is governed by the BSD license found in the LICENSE file. - -/*--- -esid: sec-arraybuffer-length -description: > - Automatically ported from EntriesKeysValuesShrinkMidIteration test - in V8's mjsunit test typedarray-resizablearraybuffer.js -features: [resizable-arraybuffer] -includes: [compareArray.js] -flags: [onlyStrict] ----*/ - -class MyUint8Array extends Uint8Array { -} - -class MyFloat32Array extends Float32Array { -} - -class MyBigInt64Array extends BigInt64Array { -} - -const builtinCtors = [ - Uint8Array, - Int8Array, - Uint16Array, - Int16Array, - Uint32Array, - Int32Array, - Float32Array, - Float64Array, - Uint8ClampedArray, - BigUint64Array, - BigInt64Array -]; - -const ctors = [ - ...builtinCtors, - MyUint8Array, - MyFloat32Array, - MyBigInt64Array -]; - -function CreateResizableArrayBuffer(byteLength, maxByteLength) { - return new ArrayBuffer(byteLength, { maxByteLength: maxByteLength }); -} - -function WriteToTypedArray(array, index, value) { - if (array instanceof BigInt64Array || array instanceof BigUint64Array) { - array[index] = BigInt(value); - } else { - array[index] = value; - } -} - -function TypedArrayEntriesHelper(ta) { - return ta.entries(); -} - -function ArrayEntriesHelper(ta) { - return Array.prototype.entries.call(ta); -} - -function TypedArrayKeysHelper(ta) { - return ta.keys(); -} - -function ArrayKeysHelper(ta) { - return Array.prototype.keys.call(ta); -} - -function TypedArrayValuesHelper(ta) { - return ta.values(); -} - -function ArrayValuesHelper(ta) { - return Array.prototype.values.call(ta); -} - -function TestIterationAndResize(ta, expected, rab, resize_after, new_byte_length) { - let values = []; - let resized = false; - for (const value of ta) { - if (value instanceof Array) { - values.push([ - value[0], - Number(value[1]) - ]); - } else { - values.push(Number(value)); - } - if (!resized && values.length == resize_after) { - rab.resize(new_byte_length); - resized = true; - } - } - assert.compareArray(values.flat(), expected.flat()); - assert(resized); -} - -function EntriesKeysValuesShrinkMidIteration(entriesHelper, keysHelper, valuesHelper) { - // Orig. array: [0, 2, 4, 6] - // [0, 2, 4, 6] << fixedLength - // [4, 6] << fixedLengthWithOffset - // [0, 2, 4, 6, ...] << lengthTracking - // [4, 6, ...] << lengthTrackingWithOffset - function CreateRabForTest(ctor) { - const rab = CreateResizableArrayBuffer(4 * ctor.BYTES_PER_ELEMENT, 8 * ctor.BYTES_PER_ELEMENT); - const taWrite = new ctor(rab); - for (let i = 0; i < 4; ++i) { - WriteToTypedArray(taWrite, i, 2 * i); - } - return rab; - } - - // Iterating with entries() (the 4 loops below). - for (let ctor of ctors) { - const rab = CreateRabForTest(ctor); - const fixedLength = new ctor(rab, 0, 4); - - // The fixed length array goes out of bounds when the RAB is resized. - assert.throws(TypeError, () => { - TestIterationAndResize(entriesHelper(fixedLength), null, rab, 2, 3 * ctor.BYTES_PER_ELEMENT); - }); - } - for (let ctor of ctors) { - const rab = CreateRabForTest(ctor); - const fixedLengthWithOffset = new ctor(rab, 2 * ctor.BYTES_PER_ELEMENT, 2); - - // The fixed length array goes out of bounds when the RAB is resized. - assert.throws(TypeError, () => { - TestIterationAndResize(entriesHelper(fixedLengthWithOffset), null, rab, 1, 3 * ctor.BYTES_PER_ELEMENT); - }); - } - for (let ctor of ctors) { - const rab = CreateRabForTest(ctor); - const lengthTracking = new ctor(rab, 0); - TestIterationAndResize(entriesHelper(lengthTracking), [ - [ - 0, - 0 - ], - [ - 1, - 2 - ], - [ - 2, - 4 - ] - ], rab, 2, 3 * ctor.BYTES_PER_ELEMENT); - } - for (let ctor of ctors) { - const rab = CreateRabForTest(ctor); - const lengthTrackingWithOffset = new ctor(rab, 2 * ctor.BYTES_PER_ELEMENT); - TestIterationAndResize(entriesHelper(lengthTrackingWithOffset), [ - [ - 0, - 4 - ], - [ - 1, - 6 - ] - ], rab, 2, 3 * ctor.BYTES_PER_ELEMENT); - } - - // Iterating with keys() (the 4 loops below). - for (let ctor of ctors) { - const rab = CreateRabForTest(ctor); - const fixedLength = new ctor(rab, 0, 4); - - // The fixed length array goes out of bounds when the RAB is resized. - assert.throws(TypeError, () => { - TestIterationAndResize(keysHelper(fixedLength), null, rab, 2, 3 * ctor.BYTES_PER_ELEMENT); - }); - } - for (let ctor of ctors) { - const rab = CreateRabForTest(ctor); - const fixedLengthWithOffset = new ctor(rab, 2 * ctor.BYTES_PER_ELEMENT, 2); - - // The fixed length array goes out of bounds when the RAB is resized. - assert.throws(TypeError, () => { - TestIterationAndResize(keysHelper(fixedLengthWithOffset), null, rab, 2, 3 * ctor.BYTES_PER_ELEMENT); - }); - } - for (let ctor of ctors) { - const rab = CreateRabForTest(ctor); - const lengthTracking = new ctor(rab, 0); - TestIterationAndResize(keysHelper(lengthTracking), [ - 0, - 1, - 2 - ], rab, 2, 3 * ctor.BYTES_PER_ELEMENT); - } - for (let ctor of ctors) { - const rab = CreateRabForTest(ctor); - const lengthTrackingWithOffset = new ctor(rab, 2 * ctor.BYTES_PER_ELEMENT); - TestIterationAndResize(keysHelper(lengthTrackingWithOffset), [ - 0, - 1 - ], rab, 2, 3 * ctor.BYTES_PER_ELEMENT); - } - - // Iterating with values() (the 4 loops below). - for (let ctor of ctors) { - const rab = CreateRabForTest(ctor); - const fixedLength = new ctor(rab, 0, 4); - - // The fixed length array goes out of bounds when the RAB is resized. - assert.throws(TypeError, () => { - TestIterationAndResize(valuesHelper(fixedLength), null, rab, 2, 3 * ctor.BYTES_PER_ELEMENT); - }); - } - for (let ctor of ctors) { - const rab = CreateRabForTest(ctor); - const fixedLengthWithOffset = new ctor(rab, 2 * ctor.BYTES_PER_ELEMENT, 2); - assert.throws(TypeError, () => { - TestIterationAndResize(valuesHelper(fixedLengthWithOffset), null, rab, 2, 3 * ctor.BYTES_PER_ELEMENT); - }); - } - for (let ctor of ctors) { - const rab = CreateRabForTest(ctor); - const lengthTracking = new ctor(rab, 0); - TestIterationAndResize(valuesHelper(lengthTracking), [ - 0, - 2, - 4 - ], rab, 2, 3 * ctor.BYTES_PER_ELEMENT); - } - for (let ctor of ctors) { - const rab = CreateRabForTest(ctor); - const lengthTrackingWithOffset = new ctor(rab, 2 * ctor.BYTES_PER_ELEMENT); - - // The fixed length array goes out of bounds when the RAB is resized. - TestIterationAndResize(valuesHelper(lengthTrackingWithOffset), [ - 4, - 6 - ], rab, 2, 3 * ctor.BYTES_PER_ELEMENT); - } -} - -EntriesKeysValuesShrinkMidIteration(TypedArrayEntriesHelper, TypedArrayKeysHelper, TypedArrayValuesHelper); -EntriesKeysValuesShrinkMidIteration(ArrayEntriesHelper, ArrayKeysHelper, ArrayValuesHelper); diff --git a/test/staging/ArrayBuffer/resizable/entries-keys-values.js b/test/staging/ArrayBuffer/resizable/entries-keys-values.js deleted file mode 100644 index b69274e9f3b..00000000000 --- a/test/staging/ArrayBuffer/resizable/entries-keys-values.js +++ /dev/null @@ -1,505 +0,0 @@ -// Copyright 2021 the V8 project authors. All rights reserved. -// This code is governed by the BSD license found in the LICENSE file. - -/*--- -esid: sec-arraybuffer-length -description: > - Automatically ported from EntriesKeysValues test - in V8's mjsunit test typedarray-resizablearraybuffer.js -includes: [compareArray.js] -features: [resizable-arraybuffer] -flags: [onlyStrict] ----*/ - -class MyUint8Array extends Uint8Array { -} - -class MyFloat32Array extends Float32Array { -} - -class MyBigInt64Array extends BigInt64Array { -} - -const builtinCtors = [ - Uint8Array, - Int8Array, - Uint16Array, - Int16Array, - Uint32Array, - Int32Array, - Float32Array, - Float64Array, - Uint8ClampedArray, - BigUint64Array, - BigInt64Array -]; - -const ctors = [ - ...builtinCtors, - MyUint8Array, - MyFloat32Array, - MyBigInt64Array -]; - -function CreateResizableArrayBuffer(byteLength, maxByteLength) { - return new ArrayBuffer(byteLength, { maxByteLength: maxByteLength }); -} - -function WriteToTypedArray(array, index, value) { - if (array instanceof BigInt64Array || array instanceof BigUint64Array) { - array[index] = BigInt(value); - } else { - array[index] = value; - } -} - -function TypedArrayEntriesHelper(ta) { - return ta.entries(); -} - -function ArrayEntriesHelper(ta) { - return Array.prototype.entries.call(ta); -} - -function ValuesFromTypedArrayEntries(ta) { - let result = []; - let expectedKey = 0; - for (let [key, value] of ta.entries()) { - assert.sameValue(key, expectedKey); - ++expectedKey; - result.push(Number(value)); - } - return result; -} - -function ValuesFromArrayEntries(ta) { - let result = []; - let expectedKey = 0; - for (let [key, value] of Array.prototype.entries.call(ta)) { - assert.sameValue(key, expectedKey); - ++expectedKey; - result.push(Number(value)); - } - return result; -} - -function TypedArrayKeysHelper(ta) { - return ta.keys(); -} - -function ArrayKeysHelper(ta) { - return Array.prototype.keys.call(ta); -} - -function TypedArrayValuesHelper(ta) { - return ta.values(); -} - -function ArrayValuesHelper(ta) { - return Array.prototype.values.call(ta); -} - -function ValuesFromTypedArrayValues(ta) { - let result = []; - for (let value of ta.values()) { - result.push(Number(value)); - } - return result; -} - -function ValuesFromArrayValues(ta) { - const result = []; - for (let value of Array.prototype.values.call(ta)) { - result.push(Number(value)); - } - return result; -} - -function EntriesKeysValues(entriesHelper, keysHelper, valuesHelper, valuesFromEntries, valuesFromValues, oobThrows) { - for (let ctor of ctors) { - const rab = CreateResizableArrayBuffer(4 * ctor.BYTES_PER_ELEMENT, 8 * ctor.BYTES_PER_ELEMENT); - const fixedLength = new ctor(rab, 0, 4); - const fixedLengthWithOffset = new ctor(rab, 2 * ctor.BYTES_PER_ELEMENT, 2); - const lengthTracking = new ctor(rab, 0); - const lengthTrackingWithOffset = new ctor(rab, 2 * ctor.BYTES_PER_ELEMENT); - - // Write some data into the array. - const taWrite = new ctor(rab); - for (let i = 0; i < 4; ++i) { - WriteToTypedArray(taWrite, i, 2 * i); - } - - // Orig. array: [0, 2, 4, 6] - // [0, 2, 4, 6] << fixedLength - // [4, 6] << fixedLengthWithOffset - // [0, 2, 4, 6, ...] << lengthTracking - // [4, 6, ...] << lengthTrackingWithOffset - - assert.compareArray(valuesFromEntries(fixedLength), [ - 0, - 2, - 4, - 6 - ]); - assert.compareArray(valuesFromValues(fixedLength), [ - 0, - 2, - 4, - 6 - ]); - assert.compareArray(Array.from(keysHelper(fixedLength)), [ - 0, - 1, - 2, - 3 - ]); - assert.compareArray(valuesFromEntries(fixedLengthWithOffset), [ - 4, - 6 - ]); - assert.compareArray(valuesFromValues(fixedLengthWithOffset), [ - 4, - 6 - ]); - assert.compareArray(Array.from(keysHelper(fixedLengthWithOffset)), [ - 0, - 1 - ]); - assert.compareArray(valuesFromEntries(lengthTracking), [ - 0, - 2, - 4, - 6 - ]); - assert.compareArray(valuesFromValues(lengthTracking), [ - 0, - 2, - 4, - 6 - ]); - assert.compareArray(Array.from(keysHelper(lengthTracking)), [ - 0, - 1, - 2, - 3 - ]); - assert.compareArray(valuesFromEntries(lengthTrackingWithOffset), [ - 4, - 6 - ]); - assert.compareArray(valuesFromValues(lengthTrackingWithOffset), [ - 4, - 6 - ]); - assert.compareArray(Array.from(keysHelper(lengthTrackingWithOffset)), [ - 0, - 1 - ]); - - // Shrink so that fixed length TAs go out of bounds. - rab.resize(3 * ctor.BYTES_PER_ELEMENT); - - // Orig. array: [0, 2, 4] - // [0, 2, 4, ...] << lengthTracking - // [4, ...] << lengthTrackingWithOffset - - // TypedArray.prototype.{entries, keys, values} throw right away when - // called. Array.prototype.{entries, keys, values} don't throw, but when - // we try to iterate the returned ArrayIterator, that throws. - if (oobThrows) { - assert.throws(TypeError, () => { - entriesHelper(fixedLength); - }); - assert.throws(TypeError, () => { - valuesHelper(fixedLength); - }); - assert.throws(TypeError, () => { - keysHelper(fixedLength); - }); - assert.throws(TypeError, () => { - entriesHelper(fixedLengthWithOffset); - }); - assert.throws(TypeError, () => { - valuesHelper(fixedLengthWithOffset); - }); - assert.throws(TypeError, () => { - keysHelper(fixedLengthWithOffset); - }); - } else { - entriesHelper(fixedLength); - valuesHelper(fixedLength); - keysHelper(fixedLength); - entriesHelper(fixedLengthWithOffset); - valuesHelper(fixedLengthWithOffset); - keysHelper(fixedLengthWithOffset); - } - assert.throws(TypeError, () => { - Array.from(entriesHelper(fixedLength)); - }); - assert.throws(TypeError, () => { - Array.from(valuesHelper(fixedLength)); - }); - assert.throws(TypeError, () => { - Array.from(keysHelper(fixedLength)); - }); - assert.throws(TypeError, () => { - Array.from(entriesHelper(fixedLengthWithOffset)); - }); - assert.throws(TypeError, () => { - Array.from(valuesHelper(fixedLengthWithOffset)); - }); - assert.throws(TypeError, () => { - Array.from(keysHelper(fixedLengthWithOffset)); - }); - assert.compareArray(valuesFromEntries(lengthTracking), [ - 0, - 2, - 4 - ]); - assert.compareArray(valuesFromValues(lengthTracking), [ - 0, - 2, - 4 - ]); - assert.compareArray(Array.from(keysHelper(lengthTracking)), [ - 0, - 1, - 2 - ]); - assert.compareArray(valuesFromEntries(lengthTrackingWithOffset), [4]); - assert.compareArray(valuesFromValues(lengthTrackingWithOffset), [4]); - assert.compareArray(Array.from(keysHelper(lengthTrackingWithOffset)), [0]); - - // Shrink so that the TAs with offset go out of bounds. - rab.resize(1 * ctor.BYTES_PER_ELEMENT); - if (oobThrows) { - assert.throws(TypeError, () => { - entriesHelper(fixedLength); - }); - assert.throws(TypeError, () => { - valuesHelper(fixedLength); - }); - assert.throws(TypeError, () => { - keysHelper(fixedLength); - }); - assert.throws(TypeError, () => { - entriesHelper(fixedLengthWithOffset); - }); - assert.throws(TypeError, () => { - valuesHelper(fixedLengthWithOffset); - }); - assert.throws(TypeError, () => { - keysHelper(fixedLengthWithOffset); - }); - assert.throws(TypeError, () => { - entriesHelper(lengthTrackingWithOffset); - }); - assert.throws(TypeError, () => { - valuesHelper(lengthTrackingWithOffset); - }); - assert.throws(TypeError, () => { - keysHelper(lengthTrackingWithOffset); - }); - } else { - entriesHelper(fixedLength); - valuesHelper(fixedLength); - keysHelper(fixedLength); - entriesHelper(fixedLengthWithOffset); - valuesHelper(fixedLengthWithOffset); - keysHelper(fixedLengthWithOffset); - entriesHelper(lengthTrackingWithOffset); - valuesHelper(lengthTrackingWithOffset); - keysHelper(lengthTrackingWithOffset); - } - assert.throws(TypeError, () => { - Array.from(entriesHelper(fixedLength)); - }); - assert.throws(TypeError, () => { - Array.from(valuesHelper(fixedLength)); - }); - assert.throws(TypeError, () => { - Array.from(keysHelper(fixedLength)); - }); - assert.throws(TypeError, () => { - Array.from(entriesHelper(fixedLengthWithOffset)); - }); - assert.throws(TypeError, () => { - Array.from(valuesHelper(fixedLengthWithOffset)); - }); - assert.throws(TypeError, () => { - Array.from(keysHelper(fixedLengthWithOffset)); - }); - assert.throws(TypeError, () => { - Array.from(entriesHelper(lengthTrackingWithOffset)); - }); - assert.throws(TypeError, () => { - Array.from(valuesHelper(lengthTrackingWithOffset)); - }); - assert.throws(TypeError, () => { - Array.from(keysHelper(lengthTrackingWithOffset)); - }); - assert.compareArray(valuesFromEntries(lengthTracking), [0]); - assert.compareArray(valuesFromValues(lengthTracking), [0]); - assert.compareArray(Array.from(keysHelper(lengthTracking)), [0]); - - // Shrink to zero. - rab.resize(0); - if (oobThrows) { - assert.throws(TypeError, () => { - entriesHelper(fixedLength); - }); - assert.throws(TypeError, () => { - valuesHelper(fixedLength); - }); - assert.throws(TypeError, () => { - keysHelper(fixedLength); - }); - assert.throws(TypeError, () => { - entriesHelper(fixedLengthWithOffset); - }); - assert.throws(TypeError, () => { - valuesHelper(fixedLengthWithOffset); - }); - assert.throws(TypeError, () => { - keysHelper(fixedLengthWithOffset); - }); - assert.throws(TypeError, () => { - entriesHelper(lengthTrackingWithOffset); - }); - assert.throws(TypeError, () => { - valuesHelper(lengthTrackingWithOffset); - }); - assert.throws(TypeError, () => { - keysHelper(lengthTrackingWithOffset); - }); - } else { - entriesHelper(fixedLength); - valuesHelper(fixedLength); - keysHelper(fixedLength); - entriesHelper(fixedLengthWithOffset); - valuesHelper(fixedLengthWithOffset); - keysHelper(fixedLengthWithOffset); - entriesHelper(lengthTrackingWithOffset); - valuesHelper(lengthTrackingWithOffset); - keysHelper(lengthTrackingWithOffset); - } - assert.throws(TypeError, () => { - Array.from(entriesHelper(fixedLength)); - }); - assert.throws(TypeError, () => { - Array.from(valuesHelper(fixedLength)); - }); - assert.throws(TypeError, () => { - Array.from(keysHelper(fixedLength)); - }); - assert.throws(TypeError, () => { - Array.from(entriesHelper(fixedLengthWithOffset)); - }); - assert.throws(TypeError, () => { - Array.from(valuesHelper(fixedLengthWithOffset)); - }); - assert.throws(TypeError, () => { - Array.from(keysHelper(fixedLengthWithOffset)); - }); - assert.throws(TypeError, () => { - Array.from(entriesHelper(lengthTrackingWithOffset)); - }); - assert.throws(TypeError, () => { - Array.from(valuesHelper(lengthTrackingWithOffset)); - }); - assert.throws(TypeError, () => { - Array.from(keysHelper(lengthTrackingWithOffset)); - }); - assert.compareArray(valuesFromEntries(lengthTracking), []); - assert.compareArray(valuesFromValues(lengthTracking), []); - assert.compareArray(Array.from(keysHelper(lengthTracking)), []); - - // Grow so that all TAs are back in-bounds. - rab.resize(6 * ctor.BYTES_PER_ELEMENT); - for (let i = 0; i < 6; ++i) { - WriteToTypedArray(taWrite, i, 2 * i); - } - - // Orig. array: [0, 2, 4, 6, 8, 10] - // [0, 2, 4, 6] << fixedLength - // [4, 6] << fixedLengthWithOffset - // [0, 2, 4, 6, 8, 10, ...] << lengthTracking - // [4, 6, 8, 10, ...] << lengthTrackingWithOffset - - assert.compareArray(valuesFromEntries(fixedLength), [ - 0, - 2, - 4, - 6 - ]); - assert.compareArray(valuesFromValues(fixedLength), [ - 0, - 2, - 4, - 6 - ]); - assert.compareArray(Array.from(keysHelper(fixedLength)), [ - 0, - 1, - 2, - 3 - ]); - assert.compareArray(valuesFromEntries(fixedLengthWithOffset), [ - 4, - 6 - ]); - assert.compareArray(valuesFromValues(fixedLengthWithOffset), [ - 4, - 6 - ]); - assert.compareArray(Array.from(keysHelper(fixedLengthWithOffset)), [ - 0, - 1 - ]); - assert.compareArray(valuesFromEntries(lengthTracking), [ - 0, - 2, - 4, - 6, - 8, - 10 - ]); - assert.compareArray(valuesFromValues(lengthTracking), [ - 0, - 2, - 4, - 6, - 8, - 10 - ]); - assert.compareArray(Array.from(keysHelper(lengthTracking)), [ - 0, - 1, - 2, - 3, - 4, - 5 - ]); - assert.compareArray(valuesFromEntries(lengthTrackingWithOffset), [ - 4, - 6, - 8, - 10 - ]); - assert.compareArray(valuesFromValues(lengthTrackingWithOffset), [ - 4, - 6, - 8, - 10 - ]); - assert.compareArray(Array.from(keysHelper(lengthTrackingWithOffset)), [ - 0, - 1, - 2, - 3 - ]); - } -} - -EntriesKeysValues(TypedArrayEntriesHelper, TypedArrayKeysHelper, TypedArrayValuesHelper, ValuesFromTypedArrayEntries, ValuesFromTypedArrayValues, true); -EntriesKeysValues(ArrayEntriesHelper, ArrayKeysHelper, ArrayValuesHelper, ValuesFromArrayEntries, ValuesFromArrayValues, false); diff --git a/test/staging/ArrayBuffer/resizable/enumerate-elements.js b/test/staging/ArrayBuffer/resizable/enumerate-elements.js deleted file mode 100644 index a0f776da6b0..00000000000 --- a/test/staging/ArrayBuffer/resizable/enumerate-elements.js +++ /dev/null @@ -1,55 +0,0 @@ -// Copyright 2021 the V8 project authors. All rights reserved. -// This code is governed by the BSD license found in the LICENSE file. - -/*--- -esid: sec-arraybuffer-length -description: > - Automatically ported from EnumerateElements test - in V8's mjsunit test typedarray-resizablearraybuffer.js -features: [resizable-arraybuffer] -flags: [onlyStrict] ----*/ - -class MyUint8Array extends Uint8Array { -} - -class MyFloat32Array extends Float32Array { -} - -class MyBigInt64Array extends BigInt64Array { -} - -const builtinCtors = [ - Uint8Array, - Int8Array, - Uint16Array, - Int16Array, - Uint32Array, - Int32Array, - Float32Array, - Float64Array, - Uint8ClampedArray, - BigUint64Array, - BigInt64Array -]; - -const ctors = [ - ...builtinCtors, - MyUint8Array, - MyFloat32Array, - MyBigInt64Array -]; - -function CreateResizableArrayBuffer(byteLength, maxByteLength) { - return new ArrayBuffer(byteLength, { maxByteLength: maxByteLength }); -} - -let rab = CreateResizableArrayBuffer(100, 200); -for (let ctor of ctors) { - const ta = new ctor(rab, 0, 3); - let keys = ''; - for (const key in ta) { - keys += key; - } - assert.sameValue(keys, '012'); -} diff --git a/test/staging/ArrayBuffer/resizable/every-grow-mid-iteration.js b/test/staging/ArrayBuffer/resizable/every-grow-mid-iteration.js deleted file mode 100644 index 6e5db41618f..00000000000 --- a/test/staging/ArrayBuffer/resizable/every-grow-mid-iteration.js +++ /dev/null @@ -1,149 +0,0 @@ -// Copyright 2021 the V8 project authors. All rights reserved. -// This code is governed by the BSD license found in the LICENSE file. - -/*--- -esid: sec-arraybuffer-length -description: > - Automatically ported from EveryGrowMidIteration test - in V8's mjsunit test typedarray-resizablearraybuffer.js -includes: [compareArray.js] -features: [resizable-arraybuffer] -flags: [onlyStrict] ----*/ - -class MyUint8Array extends Uint8Array { -} - -class MyFloat32Array extends Float32Array { -} - -class MyBigInt64Array extends BigInt64Array { -} - -const builtinCtors = [ - Uint8Array, - Int8Array, - Uint16Array, - Int16Array, - Uint32Array, - Int32Array, - Float32Array, - Float64Array, - Uint8ClampedArray, - BigUint64Array, - BigInt64Array -]; - -const ctors = [ - ...builtinCtors, - MyUint8Array, - MyFloat32Array, - MyBigInt64Array -]; - -function CreateResizableArrayBuffer(byteLength, maxByteLength) { - return new ArrayBuffer(byteLength, { maxByteLength: maxByteLength }); -} - -function WriteToTypedArray(array, index, value) { - if (array instanceof BigInt64Array || array instanceof BigUint64Array) { - array[index] = BigInt(value); - } else { - array[index] = value; - } -} - -const TypedArrayEveryHelper = (ta, ...rest) => { - return ta.every(...rest); -}; - -const ArrayEveryHelper = (ta, ...rest) => { - return Array.prototype.every.call(ta, ...rest); -}; - -function EveryGrowMidIteration(everyHelper) { - // Orig. array: [0, 2, 4, 6] - // [0, 2, 4, 6] << fixedLength - // [4, 6] << fixedLengthWithOffset - // [0, 2, 4, 6, ...] << lengthTracking - // [4, 6, ...] << lengthTrackingWithOffset - function CreateRabForTest(ctor) { - const rab = CreateResizableArrayBuffer(4 * ctor.BYTES_PER_ELEMENT, 8 * ctor.BYTES_PER_ELEMENT); - // Write some data into the array. - const taWrite = new ctor(rab); - for (let i = 0; i < 4; ++i) { - WriteToTypedArray(taWrite, i, 2 * i); - } - return rab; - } - let values; - let rab; - let resizeAfter; - let resizeTo; - function CollectValuesAndResize(n) { - if (typeof n == 'bigint') { - values.push(Number(n)); - } else { - values.push(n); - } - if (values.length == resizeAfter) { - rab.resize(resizeTo); - } - return true; - } - for (let ctor of ctors) { - rab = CreateRabForTest(ctor); - const fixedLength = new ctor(rab, 0, 4); - values = []; - resizeAfter = 2; - resizeTo = 5 * ctor.BYTES_PER_ELEMENT; - assert(everyHelper(fixedLength, CollectValuesAndResize)); - assert.compareArray(values, [ - 0, - 2, - 4, - 6 - ]); - } - for (let ctor of ctors) { - rab = CreateRabForTest(ctor); - const fixedLengthWithOffset = new ctor(rab, 2 * ctor.BYTES_PER_ELEMENT, 2); - values = []; - resizeAfter = 1; - resizeTo = 5 * ctor.BYTES_PER_ELEMENT; - assert(everyHelper(fixedLengthWithOffset, CollectValuesAndResize)); - assert.compareArray(values, [ - 4, - 6 - ]); - } - for (let ctor of ctors) { - rab = CreateRabForTest(ctor); - const lengthTracking = new ctor(rab, 0); - values = []; - resizeAfter = 2; - resizeTo = 5 * ctor.BYTES_PER_ELEMENT; - assert(everyHelper(lengthTracking, CollectValuesAndResize)); - assert.compareArray(values, [ - 0, - 2, - 4, - 6 - ]); - } - for (let ctor of ctors) { - rab = CreateRabForTest(ctor); - const lengthTrackingWithOffset = new ctor(rab, 2 * ctor.BYTES_PER_ELEMENT); - values = []; - resizeAfter = 1; - resizeTo = 5 * ctor.BYTES_PER_ELEMENT; - assert(everyHelper(lengthTrackingWithOffset, CollectValuesAndResize)); - assert.compareArray(values, [ - 4, - 6 - ]); - } -} - -EveryGrowMidIteration(TypedArrayEveryHelper); -EveryGrowMidIteration(ArrayEveryHelper); diff --git a/test/staging/ArrayBuffer/resizable/every-shrink-mid-iteration.js b/test/staging/ArrayBuffer/resizable/every-shrink-mid-iteration.js deleted file mode 100644 index 4d823fbbd4a..00000000000 --- a/test/staging/ArrayBuffer/resizable/every-shrink-mid-iteration.js +++ /dev/null @@ -1,172 +0,0 @@ -// Copyright 2021 the V8 project authors. All rights reserved. -// This code is governed by the BSD license found in the LICENSE file. - -/*--- -esid: sec-arraybuffer-length -description: > - Automatically ported from EveryShrinkMidIteration test - in V8's mjsunit test typedarray-resizablearraybuffer.js -includes: [compareArray.js] -features: [resizable-arraybuffer] -flags: [onlyStrict] ----*/ - -class MyUint8Array extends Uint8Array { -} - -class MyFloat32Array extends Float32Array { -} - -class MyBigInt64Array extends BigInt64Array { -} - -const builtinCtors = [ - Uint8Array, - Int8Array, - Uint16Array, - Int16Array, - Uint32Array, - Int32Array, - Float32Array, - Float64Array, - Uint8ClampedArray, - BigUint64Array, - BigInt64Array -]; - -const ctors = [ - ...builtinCtors, - MyUint8Array, - MyFloat32Array, - MyBigInt64Array -]; - -function CreateResizableArrayBuffer(byteLength, maxByteLength) { - return new ArrayBuffer(byteLength, { maxByteLength: maxByteLength }); -} - -function WriteToTypedArray(array, index, value) { - if (array instanceof BigInt64Array || array instanceof BigUint64Array) { - array[index] = BigInt(value); - } else { - array[index] = value; - } -} - -const TypedArrayEveryHelper = (ta, ...rest) => { - return ta.every(...rest); -}; - -const ArrayEveryHelper = (ta, ...rest) => { - return Array.prototype.every.call(ta, ...rest); -}; - -function EveryShrinkMidIteration(everyHelper, hasUndefined) { - // Orig. array: [0, 2, 4, 6] - // [0, 2, 4, 6] << fixedLength - // [4, 6] << fixedLengthWithOffset - // [0, 2, 4, 6, ...] << lengthTracking - // [4, 6, ...] << lengthTrackingWithOffset - function CreateRabForTest(ctor) { - const rab = CreateResizableArrayBuffer(4 * ctor.BYTES_PER_ELEMENT, 8 * ctor.BYTES_PER_ELEMENT); - // Write some data into the array. - const taWrite = new ctor(rab); - for (let i = 0; i < 4; ++i) { - WriteToTypedArray(taWrite, i, 2 * i); - } - return rab; - } - let values; - let rab; - let resizeAfter; - let resizeTo; - function CollectValuesAndResize(n) { - if (typeof n == 'bigint') { - values.push(Number(n)); - } else { - values.push(n); - } - if (values.length == resizeAfter) { - rab.resize(resizeTo); - } - return true; - } - for (let ctor of ctors) { - rab = CreateRabForTest(ctor); - const fixedLength = new ctor(rab, 0, 4); - values = []; - resizeAfter = 2; - resizeTo = 3 * ctor.BYTES_PER_ELEMENT; - assert(everyHelper(fixedLength, CollectValuesAndResize)); - if (hasUndefined) { - assert.compareArray(values, [ - 0, - 2, - undefined, - undefined - ]); - } else { - assert.compareArray(values, [ - 0, - 2 - ]); - } - } - for (let ctor of ctors) { - rab = CreateRabForTest(ctor); - const fixedLengthWithOffset = new ctor(rab, 2 * ctor.BYTES_PER_ELEMENT, 2); - values = []; - resizeAfter = 1; - resizeTo = 3 * ctor.BYTES_PER_ELEMENT; - assert(everyHelper(fixedLengthWithOffset, CollectValuesAndResize)); - if (hasUndefined) { - assert.compareArray(values, [ - 4, - undefined - ]); - } else { - assert.compareArray(values, [4]); - } - } - for (let ctor of ctors) { - rab = CreateRabForTest(ctor); - const lengthTracking = new ctor(rab, 0); - values = []; - resizeAfter = 2; - resizeTo = 3 * ctor.BYTES_PER_ELEMENT; - assert(everyHelper(lengthTracking, CollectValuesAndResize)); - if (hasUndefined) { - assert.compareArray(values, [ - 0, - 2, - 4, - undefined - ]); - } else { - assert.compareArray(values, [ - 0, - 2, - 4 - ]); - } - } - for (let ctor of ctors) { - rab = CreateRabForTest(ctor); - const lengthTrackingWithOffset = new ctor(rab, 2 * ctor.BYTES_PER_ELEMENT); - values = []; - resizeAfter = 1; - resizeTo = 3 * ctor.BYTES_PER_ELEMENT; - assert(everyHelper(lengthTrackingWithOffset, CollectValuesAndResize)); - if (hasUndefined) { - assert.compareArray(values, [ - 4, - undefined - ]); - } else { - assert.compareArray(values, [4]); - } - } -} - -EveryShrinkMidIteration(TypedArrayEveryHelper, true); -EveryShrinkMidIteration(ArrayEveryHelper, false); diff --git a/test/staging/ArrayBuffer/resizable/every-some.js b/test/staging/ArrayBuffer/resizable/every-some.js deleted file mode 100644 index 7b6a7f37f26..00000000000 --- a/test/staging/ArrayBuffer/resizable/every-some.js +++ /dev/null @@ -1,252 +0,0 @@ -// Copyright 2021 the V8 project authors. All rights reserved. -// This code is governed by the BSD license found in the LICENSE file. - -/*--- -esid: sec-arraybuffer-length -description: > - Automatically ported from EverySome test - in V8's mjsunit test typedarray-resizablearraybuffer.js -features: [resizable-arraybuffer] -flags: [onlyStrict] ----*/ - -class MyUint8Array extends Uint8Array { -} - -class MyFloat32Array extends Float32Array { -} - -class MyBigInt64Array extends BigInt64Array { -} - -const builtinCtors = [ - Uint8Array, - Int8Array, - Uint16Array, - Int16Array, - Uint32Array, - Int32Array, - Float32Array, - Float64Array, - Uint8ClampedArray, - BigUint64Array, - BigInt64Array -]; - -const ctors = [ - ...builtinCtors, - MyUint8Array, - MyFloat32Array, - MyBigInt64Array -]; - -function CreateResizableArrayBuffer(byteLength, maxByteLength) { - return new ArrayBuffer(byteLength, { maxByteLength: maxByteLength }); -} - -function WriteToTypedArray(array, index, value) { - if (array instanceof BigInt64Array || array instanceof BigUint64Array) { - array[index] = BigInt(value); - } else { - array[index] = value; - } -} - -const TypedArrayEveryHelper = (ta, ...rest) => { - return ta.every(...rest); -}; - -const ArrayEveryHelper = (ta, ...rest) => { - return Array.prototype.every.call(ta, ...rest); -}; - -const TypedArraySomeHelper = (ta, ...rest) => { - return ta.some(...rest); -}; - -const ArraySomeHelper = (ta, ...rest) => { - return Array.prototype.some.call(ta, ...rest); -}; - -function EverySome(everyHelper, someHelper, oobThrows) { - for (let ctor of ctors) { - const rab = CreateResizableArrayBuffer(4 * ctor.BYTES_PER_ELEMENT, 8 * ctor.BYTES_PER_ELEMENT); - const fixedLength = new ctor(rab, 0, 4); - const fixedLengthWithOffset = new ctor(rab, 2 * ctor.BYTES_PER_ELEMENT, 2); - const lengthTracking = new ctor(rab, 0); - const lengthTrackingWithOffset = new ctor(rab, 2 * ctor.BYTES_PER_ELEMENT); - - // Write some data into the array. - const taWrite = new ctor(rab); - for (let i = 0; i < 4; ++i) { - WriteToTypedArray(taWrite, i, 2 * i); - } - - // Orig. array: [0, 2, 4, 6] - // [0, 2, 4, 6] << fixedLength - // [4, 6] << fixedLengthWithOffset - // [0, 2, 4, 6, ...] << lengthTracking - // [4, 6, ...] << lengthTrackingWithOffset - - function div3(n) { - return Number(n) % 3 == 0; - } - function even(n) { - return Number(n) % 2 == 0; - } - function over10(n) { - return Number(n) > 10; - } - assert(!everyHelper(fixedLength, div3)); - assert(everyHelper(fixedLength, even)); - assert(someHelper(fixedLength, div3)); - assert(!someHelper(fixedLength, over10)); - assert(!everyHelper(fixedLengthWithOffset, div3)); - assert(everyHelper(fixedLengthWithOffset, even)); - assert(someHelper(fixedLengthWithOffset, div3)); - assert(!someHelper(fixedLengthWithOffset, over10)); - assert(!everyHelper(lengthTracking, div3)); - assert(everyHelper(lengthTracking, even)); - assert(someHelper(lengthTracking, div3)); - assert(!someHelper(lengthTracking, over10)); - assert(!everyHelper(lengthTrackingWithOffset, div3)); - assert(everyHelper(lengthTrackingWithOffset, even)); - assert(someHelper(lengthTrackingWithOffset, div3)); - assert(!someHelper(lengthTrackingWithOffset, over10)); - - // Shrink so that fixed length TAs go out of bounds. - rab.resize(3 * ctor.BYTES_PER_ELEMENT); - - // Orig. array: [0, 2, 4] - // [0, 2, 4, ...] << lengthTracking - // [4, ...] << lengthTrackingWithOffset - - if (oobThrows) { - assert.throws(TypeError, () => { - everyHelper(fixedLength, div3); - }); - assert.throws(TypeError, () => { - someHelper(fixedLength, div3); - }); - assert.throws(TypeError, () => { - everyHelper(fixedLengthWithOffset, div3); - }); - assert.throws(TypeError, () => { - someHelper(fixedLengthWithOffset, div3); - }); - } else { - assert(everyHelper(fixedLength, div3)); - assert(!someHelper(fixedLength, div3)); - assert(everyHelper(fixedLengthWithOffset, div3)); - assert(!someHelper(fixedLengthWithOffset, div3)); - } - assert(!everyHelper(lengthTracking, div3)); - assert(everyHelper(lengthTracking, even)); - assert(someHelper(lengthTracking, div3)); - assert(!someHelper(lengthTracking, over10)); - assert(!everyHelper(lengthTrackingWithOffset, div3)); - assert(everyHelper(lengthTrackingWithOffset, even)); - assert(!someHelper(lengthTrackingWithOffset, div3)); - assert(!someHelper(lengthTrackingWithOffset, over10)); - - // Shrink so that the TAs with offset go out of bounds. - rab.resize(1 * ctor.BYTES_PER_ELEMENT); - if (oobThrows) { - assert.throws(TypeError, () => { - everyHelper(fixedLength, div3); - }); - assert.throws(TypeError, () => { - someHelper(fixedLength, div3); - }); - assert.throws(TypeError, () => { - everyHelper(fixedLengthWithOffset, div3); - }); - assert.throws(TypeError, () => { - someHelper(fixedLengthWithOffset, div3); - }); - assert.throws(TypeError, () => { - everyHelper(lengthTrackingWithOffset, div3); - }); - assert.throws(TypeError, () => { - someHelper(lengthTrackingWithOffset, div3); - }); - } else { - assert(everyHelper(fixedLength, div3)); - assert(!someHelper(fixedLength, div3)); - assert(everyHelper(fixedLengthWithOffset, div3)); - assert(!someHelper(fixedLengthWithOffset, div3)); - assert(everyHelper(lengthTrackingWithOffset, div3)); - assert(!someHelper(lengthTrackingWithOffset, div3)); - } - assert(everyHelper(lengthTracking, div3)); - assert(everyHelper(lengthTracking, even)); - assert(someHelper(lengthTracking, div3)); - assert(!someHelper(lengthTracking, over10)); - - // Shrink to zero. - rab.resize(0); - if (oobThrows) { - assert.throws(TypeError, () => { - everyHelper(fixedLength, div3); - }); - assert.throws(TypeError, () => { - someHelper(fixedLength, div3); - }); - assert.throws(TypeError, () => { - everyHelper(fixedLengthWithOffset, div3); - }); - assert.throws(TypeError, () => { - someHelper(fixedLengthWithOffset, div3); - }); - assert.throws(TypeError, () => { - everyHelper(lengthTrackingWithOffset, div3); - }); - assert.throws(TypeError, () => { - someHelper(lengthTrackingWithOffset, div3); - }); - } else { - assert(everyHelper(fixedLength, div3)); - assert(!someHelper(fixedLength, div3)); - assert(everyHelper(fixedLengthWithOffset, div3)); - assert(!someHelper(fixedLengthWithOffset, div3)); - assert(everyHelper(lengthTrackingWithOffset, div3)); - assert(!someHelper(lengthTrackingWithOffset, div3)); - } - assert(everyHelper(lengthTracking, div3)); - assert(everyHelper(lengthTracking, even)); - assert(!someHelper(lengthTracking, div3)); - assert(!someHelper(lengthTracking, over10)); - - // Grow so that all TAs are back in-bounds. - rab.resize(6 * ctor.BYTES_PER_ELEMENT); - for (let i = 0; i < 6; ++i) { - WriteToTypedArray(taWrite, i, 2 * i); - } - - // Orig. array: [0, 2, 4, 6, 8, 10] - // [0, 2, 4, 6] << fixedLength - // [4, 6] << fixedLengthWithOffset - // [0, 2, 4, 6, 8, 10, ...] << lengthTracking - // [4, 6, 8, 10, ...] << lengthTrackingWithOffset - - assert(!everyHelper(fixedLength, div3)); - assert(everyHelper(fixedLength, even)); - assert(someHelper(fixedLength, div3)); - assert(!someHelper(fixedLength, over10)); - assert(!everyHelper(fixedLengthWithOffset, div3)); - assert(everyHelper(fixedLengthWithOffset, even)); - assert(someHelper(fixedLengthWithOffset, div3)); - assert(!someHelper(fixedLengthWithOffset, over10)); - assert(!everyHelper(lengthTracking, div3)); - assert(everyHelper(lengthTracking, even)); - assert(someHelper(lengthTracking, div3)); - assert(!someHelper(lengthTracking, over10)); - assert(!everyHelper(lengthTrackingWithOffset, div3)); - assert(everyHelper(lengthTrackingWithOffset, even)); - assert(someHelper(lengthTrackingWithOffset, div3)); - assert(!someHelper(lengthTrackingWithOffset, over10)); - } -} - -EverySome(TypedArrayEveryHelper, TypedArraySomeHelper, true); -EverySome(ArrayEveryHelper, ArraySomeHelper, false); diff --git a/test/staging/ArrayBuffer/resizable/fill-parameter-conversion-resizes.js b/test/staging/ArrayBuffer/resizable/fill-parameter-conversion-resizes.js deleted file mode 100644 index 487576b7142..00000000000 --- a/test/staging/ArrayBuffer/resizable/fill-parameter-conversion-resizes.js +++ /dev/null @@ -1,93 +0,0 @@ -// Copyright 2021 the V8 project authors. All rights reserved. -// This code is governed by the BSD license found in the LICENSE file. - -/*--- -esid: sec-arraybuffer-length -description: > - Automatically ported from FillParameterConversionResizes test - in V8's mjsunit test typedarray-resizablearraybuffer.js -features: [resizable-arraybuffer] -flags: [onlyStrict] ----*/ - -class MyUint8Array extends Uint8Array { -} - -class MyFloat32Array extends Float32Array { -} - -class MyBigInt64Array extends BigInt64Array { -} - -const builtinCtors = [ - Uint8Array, - Int8Array, - Uint16Array, - Int16Array, - Uint32Array, - Int32Array, - Float32Array, - Float64Array, - Uint8ClampedArray, - BigUint64Array, - BigInt64Array -]; - -const ctors = [ - ...builtinCtors, - MyUint8Array, - MyFloat32Array, - MyBigInt64Array -]; - -function CreateResizableArrayBuffer(byteLength, maxByteLength) { - return new ArrayBuffer(byteLength, { maxByteLength: maxByteLength }); -} - -function TypedArrayFillHelper(ta, n, start, end) { - if (ta instanceof BigInt64Array || ta instanceof BigUint64Array) { - ta.fill(BigInt(n), start, end); - } else { - ta.fill(n, start, end); - } -} - -for (let ctor of ctors) { - const rab = CreateResizableArrayBuffer(4 * ctor.BYTES_PER_ELEMENT, 8 * ctor.BYTES_PER_ELEMENT); - const fixedLength = new ctor(rab, 0, 4); - const evil = { - valueOf: () => { - rab.resize(2 * ctor.BYTES_PER_ELEMENT); - return 3; - } - }; - assert.throws(TypeError, () => { - TypedArrayFillHelper(fixedLength, evil, 1, 2); - }); -} -for (let ctor of ctors) { - const rab = CreateResizableArrayBuffer(4 * ctor.BYTES_PER_ELEMENT, 8 * ctor.BYTES_PER_ELEMENT); - const fixedLength = new ctor(rab, 0, 4); - const evil = { - valueOf: () => { - rab.resize(2 * ctor.BYTES_PER_ELEMENT); - return 1; - } - }; - assert.throws(TypeError, () => { - TypedArrayFillHelper(fixedLength, 3, evil, 2); - }); -} -for (let ctor of ctors) { - const rab = CreateResizableArrayBuffer(4 * ctor.BYTES_PER_ELEMENT, 8 * ctor.BYTES_PER_ELEMENT); - const fixedLength = new ctor(rab, 0, 4); - const evil = { - valueOf: () => { - rab.resize(2 * ctor.BYTES_PER_ELEMENT); - return 2; - } - }; - assert.throws(TypeError, () => { - TypedArrayFillHelper(fixedLength, 3, 1, evil); - }); -} diff --git a/test/staging/ArrayBuffer/resizable/filter-grow-mid-iteration.js b/test/staging/ArrayBuffer/resizable/filter-grow-mid-iteration.js deleted file mode 100644 index 5be5029ef1f..00000000000 --- a/test/staging/ArrayBuffer/resizable/filter-grow-mid-iteration.js +++ /dev/null @@ -1,164 +0,0 @@ -// Copyright 2021 the V8 project authors. All rights reserved. -// This code is governed by the BSD license found in the LICENSE file. - -/*--- -esid: sec-arraybuffer-length -description: > - Automatically ported from FilterGrowMidIteration test - in V8's mjsunit test typedarray-resizablearraybuffer.js -includes: [compareArray.js] -features: [resizable-arraybuffer] -flags: [onlyStrict] ----*/ - -class MyUint8Array extends Uint8Array { -} - -class MyFloat32Array extends Float32Array { -} - -class MyBigInt64Array extends BigInt64Array { -} - -const builtinCtors = [ - Uint8Array, - Int8Array, - Uint16Array, - Int16Array, - Uint32Array, - Int32Array, - Float32Array, - Float64Array, - Uint8ClampedArray, - BigUint64Array, - BigInt64Array -]; - -const ctors = [ - ...builtinCtors, - MyUint8Array, - MyFloat32Array, - MyBigInt64Array -]; - -function CreateResizableArrayBuffer(byteLength, maxByteLength) { - return new ArrayBuffer(byteLength, { maxByteLength: maxByteLength }); -} - -function WriteToTypedArray(array, index, value) { - if (array instanceof BigInt64Array || array instanceof BigUint64Array) { - array[index] = BigInt(value); - } else { - array[index] = value; - } -} - -function Convert(item) { - if (typeof item == 'bigint') { - return Number(item); - } - return item; -} - -function ToNumbers(array) { - let result = []; - for (let item of array) { - result.push(Convert(item)); - } - return result; -} - -const TypedArrayFilterHelper = (ta, ...rest) => { - return ta.filter(...rest); -}; - -const ArrayFilterHelper = (ta, ...rest) => { - return Array.prototype.filter.call(ta, ...rest); -}; - -function FilterGrowMidIteration(filterHelper) { - // Orig. array: [0, 2, 4, 6] - // [0, 2, 4, 6] << fixedLength - // [4, 6] << fixedLengthWithOffset - // [0, 2, 4, 6, ...] << lengthTracking - // [4, 6, ...] << lengthTrackingWithOffset - function CreateRabForTest(ctor) { - const rab = CreateResizableArrayBuffer(4 * ctor.BYTES_PER_ELEMENT, 8 * ctor.BYTES_PER_ELEMENT); - // Write some data into the array. - const taWrite = new ctor(rab); - for (let i = 0; i < 4; ++i) { - WriteToTypedArray(taWrite, i, 2 * i); - } - return rab; - } - let values; - let rab; - let resizeAfter; - let resizeTo; - function CollectValuesAndResize(n) { - if (typeof n == 'bigint') { - values.push(Number(n)); - } else { - values.push(n); - } - if (values.length == resizeAfter) { - rab.resize(resizeTo); - } - return false; - } - for (let ctor of ctors) { - rab = CreateRabForTest(ctor); - const fixedLength = new ctor(rab, 0, 4); - values = []; - resizeAfter = 2; - resizeTo = 5 * ctor.BYTES_PER_ELEMENT; - assert.compareArray(ToNumbers(filterHelper(fixedLength, CollectValuesAndResize)), []); - assert.compareArray(values, [ - 0, - 2, - 4, - 6 - ]); - } - for (let ctor of ctors) { - rab = CreateRabForTest(ctor); - const fixedLengthWithOffset = new ctor(rab, 2 * ctor.BYTES_PER_ELEMENT, 2); - values = []; - resizeAfter = 1; - resizeTo = 5 * ctor.BYTES_PER_ELEMENT; - assert.compareArray(ToNumbers(filterHelper(fixedLengthWithOffset, CollectValuesAndResize)), []); - assert.compareArray(values, [ - 4, - 6 - ]); - } - for (let ctor of ctors) { - rab = CreateRabForTest(ctor); - const lengthTracking = new ctor(rab, 0); - values = []; - resizeAfter = 2; - resizeTo = 5 * ctor.BYTES_PER_ELEMENT; - assert.compareArray(ToNumbers(filterHelper(lengthTracking, CollectValuesAndResize)), []); - assert.compareArray(values, [ - 0, - 2, - 4, - 6 - ]); - } - for (let ctor of ctors) { - rab = CreateRabForTest(ctor); - const lengthTrackingWithOffset = new ctor(rab, 2 * ctor.BYTES_PER_ELEMENT); - values = []; - resizeAfter = 1; - resizeTo = 5 * ctor.BYTES_PER_ELEMENT; - assert.compareArray(ToNumbers(filterHelper(lengthTrackingWithOffset, CollectValuesAndResize)), []); - assert.compareArray(values, [ - 4, - 6 - ]); - } -} - -FilterGrowMidIteration(TypedArrayFilterHelper); -FilterGrowMidIteration(ArrayFilterHelper); diff --git a/test/staging/ArrayBuffer/resizable/filter-shrink-mid-iteration.js b/test/staging/ArrayBuffer/resizable/filter-shrink-mid-iteration.js deleted file mode 100644 index 32d8a24d42f..00000000000 --- a/test/staging/ArrayBuffer/resizable/filter-shrink-mid-iteration.js +++ /dev/null @@ -1,151 +0,0 @@ -// Copyright 2021 the V8 project authors. All rights reserved. -// This code is governed by the BSD license found in the LICENSE file. - -/*--- -esid: sec-arraybuffer-length -description: > - Automatically ported from FilterShrinkMidIteration test - in V8's mjsunit test typedarray-resizablearraybuffer.js -includes: [compareArray.js] -features: [resizable-arraybuffer] -flags: [onlyStrict] ----*/ - -class MyUint8Array extends Uint8Array { -} - -class MyFloat32Array extends Float32Array { -} - -class MyBigInt64Array extends BigInt64Array { -} - -const builtinCtors = [ - Uint8Array, - Int8Array, - Uint16Array, - Int16Array, - Uint32Array, - Int32Array, - Float32Array, - Float64Array, - Uint8ClampedArray, - BigUint64Array, - BigInt64Array -]; - -const ctors = [ - ...builtinCtors, - MyUint8Array, - MyFloat32Array, - MyBigInt64Array -]; - -function CreateResizableArrayBuffer(byteLength, maxByteLength) { - return new ArrayBuffer(byteLength, { maxByteLength: maxByteLength }); -} - -function WriteToTypedArray(array, index, value) { - if (array instanceof BigInt64Array || array instanceof BigUint64Array) { - array[index] = BigInt(value); - } else { - array[index] = value; - } -} - -function Convert(item) { - if (typeof item == 'bigint') { - return Number(item); - } - return item; -} - -function ToNumbers(array) { - let result = []; - for (let item of array) { - result.push(Convert(item)); - } - return result; -} - -// Orig. array: [0, 2, 4, 6] -// [0, 2, 4, 6] << fixedLength -// [4, 6] << fixedLengthWithOffset -// [0, 2, 4, 6, ...] << lengthTracking -// [4, 6, ...] << lengthTrackingWithOffset -function CreateRabForTest(ctor) { - const rab = CreateResizableArrayBuffer(4 * ctor.BYTES_PER_ELEMENT, 8 * ctor.BYTES_PER_ELEMENT); - // Write some data into the array. - const taWrite = new ctor(rab); - for (let i = 0; i < 4; ++i) { - WriteToTypedArray(taWrite, i, 2 * i); - } - return rab; -} -let values; -let rab; -let resizeAfter; -let resizeTo; -function CollectValuesAndResize(n) { - if (typeof n == 'bigint') { - values.push(Number(n)); - } else { - values.push(n); - } - if (values.length == resizeAfter) { - rab.resize(resizeTo); - } - return false; -} -for (let ctor of ctors) { - rab = CreateRabForTest(ctor); - const fixedLength = new ctor(rab, 0, 4); - values = []; - resizeAfter = 2; - resizeTo = 3 * ctor.BYTES_PER_ELEMENT; - assert.compareArray(ToNumbers(fixedLength.filter(CollectValuesAndResize)), []); - assert.compareArray(values, [ - 0, - 2, - undefined, - undefined - ]); -} -for (let ctor of ctors) { - rab = CreateRabForTest(ctor); - const fixedLengthWithOffset = new ctor(rab, 2 * ctor.BYTES_PER_ELEMENT, 2); - values = []; - resizeAfter = 1; - resizeTo = 3 * ctor.BYTES_PER_ELEMENT; - assert.compareArray(ToNumbers(fixedLengthWithOffset.filter(CollectValuesAndResize)), []); - assert.compareArray(values, [ - 4, - undefined - ]); -} -for (let ctor of ctors) { - rab = CreateRabForTest(ctor); - const lengthTracking = new ctor(rab, 0); - values = []; - resizeAfter = 2; - resizeTo = 3 * ctor.BYTES_PER_ELEMENT; - assert.compareArray(ToNumbers(lengthTracking.filter(CollectValuesAndResize)), []); - assert.compareArray(values, [ - 0, - 2, - 4, - undefined - ]); -} -for (let ctor of ctors) { - rab = CreateRabForTest(ctor); - const lengthTrackingWithOffset = new ctor(rab, 2 * ctor.BYTES_PER_ELEMENT); - values = []; - resizeAfter = 1; - resizeTo = 3 * ctor.BYTES_PER_ELEMENT; - assert.compareArray(ToNumbers(lengthTrackingWithOffset.filter(CollectValuesAndResize)), []); - assert.compareArray(values, [ - 4, - undefined - ]); -} diff --git a/test/staging/ArrayBuffer/resizable/filter.js b/test/staging/ArrayBuffer/resizable/filter.js deleted file mode 100644 index 2ab1b78c2fc..00000000000 --- a/test/staging/ArrayBuffer/resizable/filter.js +++ /dev/null @@ -1,205 +0,0 @@ -// Copyright 2021 the V8 project authors. All rights reserved. -// This code is governed by the BSD license found in the LICENSE file. - -/*--- -esid: sec-arraybuffer-length -description: > - Automatically ported from Filter test - in V8's mjsunit test typedarray-resizablearraybuffer.js -includes: [compareArray.js] -features: [resizable-arraybuffer] -flags: [onlyStrict] ----*/ - -class MyUint8Array extends Uint8Array { -} - -class MyFloat32Array extends Float32Array { -} - -class MyBigInt64Array extends BigInt64Array { -} - -const builtinCtors = [ - Uint8Array, - Int8Array, - Uint16Array, - Int16Array, - Uint32Array, - Int32Array, - Float32Array, - Float64Array, - Uint8ClampedArray, - BigUint64Array, - BigInt64Array -]; - -const ctors = [ - ...builtinCtors, - MyUint8Array, - MyFloat32Array, - MyBigInt64Array -]; - -function CreateResizableArrayBuffer(byteLength, maxByteLength) { - return new ArrayBuffer(byteLength, { maxByteLength: maxByteLength }); -} - -function WriteToTypedArray(array, index, value) { - if (array instanceof BigInt64Array || array instanceof BigUint64Array) { - array[index] = BigInt(value); - } else { - array[index] = value; - } -} - -function Convert(item) { - if (typeof item == 'bigint') { - return Number(item); - } - return item; -} - -function ToNumbers(array) { - let result = []; - for (let item of array) { - result.push(Convert(item)); - } - return result; -} - -const TypedArrayFilterHelper = (ta, ...rest) => { - return ta.filter(...rest); -}; - -const ArrayFilterHelper = (ta, ...rest) => { - return Array.prototype.filter.call(ta, ...rest); -}; - -function Filter(filterHelper, oobThrows) { - for (let ctor of ctors) { - const rab = CreateResizableArrayBuffer(4 * ctor.BYTES_PER_ELEMENT, 8 * ctor.BYTES_PER_ELEMENT); - const fixedLength = new ctor(rab, 0, 4); - const fixedLengthWithOffset = new ctor(rab, 2 * ctor.BYTES_PER_ELEMENT, 2); - const lengthTracking = new ctor(rab, 0); - const lengthTrackingWithOffset = new ctor(rab, 2 * ctor.BYTES_PER_ELEMENT); - - // Write some data into the array. - const taWrite = new ctor(rab); - for (let i = 0; i < 4; ++i) { - WriteToTypedArray(taWrite, i, i); - } - - // Orig. array: [0, 1, 2, 3] - // [0, 1, 2, 3] << fixedLength - // [2, 3] << fixedLengthWithOffset - // [0, 1, 2, 3, ...] << lengthTracking - // [2, 3, ...] << lengthTrackingWithOffset - - function isEven(n) { - return n != undefined && Number(n) % 2 == 0; - } - assert.compareArray(ToNumbers(filterHelper(fixedLength, isEven)), [ - 0, - 2 - ]); - assert.compareArray(ToNumbers(filterHelper(fixedLengthWithOffset, isEven)), [2]); - assert.compareArray(ToNumbers(filterHelper(lengthTracking, isEven)), [ - 0, - 2 - ]); - assert.compareArray(ToNumbers(filterHelper(lengthTrackingWithOffset, isEven)), [2]); - - // Shrink so that fixed length TAs go out of bounds. - rab.resize(3 * ctor.BYTES_PER_ELEMENT); - - // Orig. array: [0, 1, 2] - // [0, 1, 2, ...] << lengthTracking - // [2, ...] << lengthTrackingWithOffset - - if (oobThrows) { - assert.throws(TypeError, () => { - filterHelper(fixedLength, isEven); - }); - assert.throws(TypeError, () => { - filterHelper(fixedLengthWithOffset, isEven); - }); - } else { - assert.compareArray(filterHelper(fixedLength, isEven), []); - assert.compareArray(filterHelper(fixedLengthWithOffset, isEven), []); - } - assert.compareArray(ToNumbers(filterHelper(lengthTracking, isEven)), [ - 0, - 2 - ]); - assert.compareArray(ToNumbers(filterHelper(lengthTrackingWithOffset, isEven)), [2]); - - // Shrink so that the TAs with offset go out of bounds. - rab.resize(1 * ctor.BYTES_PER_ELEMENT); - if (oobThrows) { - assert.throws(TypeError, () => { - filterHelper(fixedLength, isEven); - }); - assert.throws(TypeError, () => { - filterHelper(fixedLengthWithOffset, isEven); - }); - assert.throws(TypeError, () => { - filterHelper(lengthTrackingWithOffset, isEven); - }); - } else { - assert.compareArray(filterHelper(fixedLength, isEven), []); - assert.compareArray(filterHelper(fixedLengthWithOffset, isEven), []); - assert.compareArray(filterHelper(lengthTrackingWithOffset, isEven), []); - } - assert.compareArray(ToNumbers(filterHelper(lengthTracking, isEven)), [0]); - - // Shrink to zero. - rab.resize(0); - if (oobThrows) { - assert.throws(TypeError, () => { - filterHelper(fixedLength, isEven); - }); - assert.throws(TypeError, () => { - filterHelper(fixedLengthWithOffset, isEven); - }); - assert.throws(TypeError, () => { - filterHelper(lengthTrackingWithOffset, isEven); - }); - } else { - assert.compareArray(filterHelper(fixedLength, isEven), []); - assert.compareArray(filterHelper(fixedLengthWithOffset, isEven), []); - assert.compareArray(filterHelper(lengthTrackingWithOffset, isEven), []); - } - assert.compareArray(ToNumbers(filterHelper(lengthTracking, isEven)), []); - - // Grow so that all TAs are back in-bounds. - rab.resize(6 * ctor.BYTES_PER_ELEMENT); - for (let i = 0; i < 6; ++i) { - WriteToTypedArray(taWrite, i, i); - } - - // Orig. array: [0, 1, 2, 3, 4, 5] - // [0, 1, 2, 3] << fixedLength - // [2, 3] << fixedLengthWithOffset - // [0, 1, 2, 3, 4, 5, ...] << lengthTracking - // [2, 3, 4, 5, ...] << lengthTrackingWithOffset - - assert.compareArray(ToNumbers(filterHelper(fixedLength, isEven)), [ - 0, - 2 - ]); - assert.compareArray(ToNumbers(filterHelper(fixedLengthWithOffset, isEven)), [2]); - assert.compareArray(ToNumbers(filterHelper(lengthTracking, isEven)), [ - 0, - 2, - 4 - ]); - assert.compareArray(ToNumbers(filterHelper(lengthTrackingWithOffset, isEven)), [ - 2, - 4 - ]); - } -} - -Filter(TypedArrayFilterHelper, true); -Filter(ArrayFilterHelper, false); diff --git a/test/staging/ArrayBuffer/resizable/find-find-index-find-last-find-last-index.js b/test/staging/ArrayBuffer/resizable/find-find-index-find-last-find-last-index.js deleted file mode 100644 index abda8dd19a0..00000000000 --- a/test/staging/ArrayBuffer/resizable/find-find-index-find-last-find-last-index.js +++ /dev/null @@ -1,328 +0,0 @@ -// Copyright 2021 the V8 project authors. All rights reserved. -// This code is governed by the BSD license found in the LICENSE file. - -/*--- -esid: sec-arraybuffer-length -description: > - Automatically ported from FindFindIndexFindLastFindLastIndex test - in V8's mjsunit test typedarray-resizablearraybuffer.js -features: [resizable-arraybuffer] -flags: [onlyStrict] ----*/ - -class MyUint8Array extends Uint8Array { -} - -class MyFloat32Array extends Float32Array { -} - -class MyBigInt64Array extends BigInt64Array { -} - -const builtinCtors = [ - Uint8Array, - Int8Array, - Uint16Array, - Int16Array, - Uint32Array, - Int32Array, - Float32Array, - Float64Array, - Uint8ClampedArray, - BigUint64Array, - BigInt64Array -]; - -const ctors = [ - ...builtinCtors, - MyUint8Array, - MyFloat32Array, - MyBigInt64Array -]; - -function CreateResizableArrayBuffer(byteLength, maxByteLength) { - return new ArrayBuffer(byteLength, { maxByteLength: maxByteLength }); -} - -function WriteToTypedArray(array, index, value) { - if (array instanceof BigInt64Array || array instanceof BigUint64Array) { - array[index] = BigInt(value); - } else { - array[index] = value; - } -} - -function TypedArrayFindHelper(ta, p) { - return ta.find(p); -} - -function ArrayFindHelper(ta, p) { - return Array.prototype.find.call(ta, p); -} - -function TypedArrayFindIndexHelper(ta, p) { - return ta.findIndex(p); -} - -function ArrayFindIndexHelper(ta, p) { - return Array.prototype.findIndex.call(ta, p); -} - -function TypedArrayFindLastHelper(ta, p) { - return ta.findLast(p); -} - -function ArrayFindLastHelper(ta, p) { - return Array.prototype.findLast.call(ta, p); -} - -function TypedArrayFindLastIndexHelper(ta, p) { - return ta.findLastIndex(p); -} - -function ArrayFindLastIndexHelper(ta, p) { - return Array.prototype.findLastIndex.call(ta, p); -} - -function FindFindIndexFindLastFindLastIndex(findHelper, findIndexHelper, findLastHelper, findLastIndexHelper, oobThrows) { - for (let ctor of ctors) { - const rab = CreateResizableArrayBuffer(4 * ctor.BYTES_PER_ELEMENT, 8 * ctor.BYTES_PER_ELEMENT); - const fixedLength = new ctor(rab, 0, 4); - const fixedLengthWithOffset = new ctor(rab, 2 * ctor.BYTES_PER_ELEMENT, 2); - const lengthTracking = new ctor(rab, 0); - const lengthTrackingWithOffset = new ctor(rab, 2 * ctor.BYTES_PER_ELEMENT); - - // Write some data into the array. - const taWrite = new ctor(rab); - for (let i = 0; i < 4; ++i) { - WriteToTypedArray(taWrite, i, 2 * i); - } - - // Orig. array: [0, 2, 4, 6] - // [0, 2, 4, 6] << fixedLength - // [4, 6] << fixedLengthWithOffset - // [0, 2, 4, 6, ...] << lengthTracking - // [4, 6, ...] << lengthTrackingWithOffset - - function isTwoOrFour(n) { - return n == 2 || n == 4; - } - assert.sameValue(Number(findHelper(fixedLength, isTwoOrFour)), 2); - assert.sameValue(Number(findHelper(fixedLengthWithOffset, isTwoOrFour)), 4); - assert.sameValue(Number(findHelper(lengthTracking, isTwoOrFour)), 2); - assert.sameValue(Number(findHelper(lengthTrackingWithOffset, isTwoOrFour)), 4); - assert.sameValue(findIndexHelper(fixedLength, isTwoOrFour), 1); - assert.sameValue(findIndexHelper(fixedLengthWithOffset, isTwoOrFour), 0); - assert.sameValue(findIndexHelper(lengthTracking, isTwoOrFour), 1); - assert.sameValue(findIndexHelper(lengthTrackingWithOffset, isTwoOrFour), 0); - assert.sameValue(Number(findLastHelper(fixedLength, isTwoOrFour)), 4); - assert.sameValue(Number(findLastHelper(fixedLengthWithOffset, isTwoOrFour)), 4); - assert.sameValue(Number(findLastHelper(lengthTracking, isTwoOrFour)), 4); - assert.sameValue(Number(findLastHelper(lengthTrackingWithOffset, isTwoOrFour)), 4); - assert.sameValue(findLastIndexHelper(fixedLength, isTwoOrFour), 2); - assert.sameValue(findLastIndexHelper(fixedLengthWithOffset, isTwoOrFour), 0); - assert.sameValue(findLastIndexHelper(lengthTracking, isTwoOrFour), 2); - assert.sameValue(findLastIndexHelper(lengthTrackingWithOffset, isTwoOrFour), 0); - - // Shrink so that fixed length TAs go out of bounds. - rab.resize(3 * ctor.BYTES_PER_ELEMENT); - - // Orig. array: [0, 2, 4] - // [0, 2, 4, ...] << lengthTracking - // [4, ...] << lengthTrackingWithOffset - - if (oobThrows) { - assert.throws(TypeError, () => { - findHelper(fixedLength, isTwoOrFour); - }); - assert.throws(TypeError, () => { - findIndexHelper(fixedLength, isTwoOrFour); - }); - assert.throws(TypeError, () => { - findLastHelper(fixedLength, isTwoOrFour); - }); - assert.throws(TypeError, () => { - findLastIndexHelper(fixedLength, isTwoOrFour); - }); - assert.throws(TypeError, () => { - findHelper(fixedLengthWithOffset, isTwoOrFour); - }); - assert.throws(TypeError, () => { - findIndexHelper(fixedLengthWithOffset, isTwoOrFour); - }); - assert.throws(TypeError, () => { - findLastHelper(fixedLengthWithOffset, isTwoOrFour); - }); - assert.throws(TypeError, () => { - findLastIndexHelper(fixedLengthWithOffset, isTwoOrFour); - }); - } else { - assert.sameValue(findHelper(fixedLength, isTwoOrFour), undefined); - assert.sameValue(findIndexHelper(fixedLength, isTwoOrFour), -1); - assert.sameValue(findLastHelper(fixedLength, isTwoOrFour), undefined); - assert.sameValue(findLastIndexHelper(fixedLength, isTwoOrFour), -1); - assert.sameValue(findHelper(fixedLengthWithOffset, isTwoOrFour), undefined); - assert.sameValue(findIndexHelper(fixedLengthWithOffset, isTwoOrFour), -1); - assert.sameValue(findLastHelper(fixedLengthWithOffset, isTwoOrFour), undefined); - assert.sameValue(findLastIndexHelper(fixedLengthWithOffset, isTwoOrFour), -1); - } - assert.sameValue(Number(findHelper(lengthTracking, isTwoOrFour)), 2); - assert.sameValue(Number(findHelper(lengthTrackingWithOffset, isTwoOrFour)), 4); - assert.sameValue(findIndexHelper(lengthTracking, isTwoOrFour), 1); - assert.sameValue(findIndexHelper(lengthTrackingWithOffset, isTwoOrFour), 0); - assert.sameValue(Number(findLastHelper(lengthTracking, isTwoOrFour)), 4); - assert.sameValue(Number(findLastHelper(lengthTrackingWithOffset, isTwoOrFour)), 4); - assert.sameValue(findLastIndexHelper(lengthTracking, isTwoOrFour), 2); - assert.sameValue(findLastIndexHelper(lengthTrackingWithOffset, isTwoOrFour), 0); - - // Shrink so that the TAs with offset go out of bounds. - rab.resize(1 * ctor.BYTES_PER_ELEMENT); - if (oobThrows) { - assert.throws(TypeError, () => { - findHelper(fixedLength, isTwoOrFour); - }); - assert.throws(TypeError, () => { - findIndexHelper(fixedLength, isTwoOrFour); - }); - assert.throws(TypeError, () => { - findLastHelper(fixedLength, isTwoOrFour); - }); - assert.throws(TypeError, () => { - findLastIndexHelper(fixedLength, isTwoOrFour); - }); - assert.throws(TypeError, () => { - findHelper(fixedLengthWithOffset, isTwoOrFour); - }); - assert.throws(TypeError, () => { - findIndexHelper(fixedLengthWithOffset, isTwoOrFour); - }); - assert.throws(TypeError, () => { - findLastHelper(fixedLengthWithOffset, isTwoOrFour); - }); - assert.throws(TypeError, () => { - findLastIndexHelper(fixedLengthWithOffset, isTwoOrFour); - }); - assert.throws(TypeError, () => { - findHelper(lengthTrackingWithOffset, isTwoOrFour); - }); - assert.throws(TypeError, () => { - findIndexHelper(lengthTrackingWithOffset, isTwoOrFour); - }); - assert.throws(TypeError, () => { - findLastHelper(lengthTrackingWithOffset, isTwoOrFour); - }); - assert.throws(TypeError, () => { - findLastIndexHelper(lengthTrackingWithOffset, isTwoOrFour); - }); - } else { - assert.sameValue(findHelper(fixedLength, isTwoOrFour), undefined); - assert.sameValue(findIndexHelper(fixedLength, isTwoOrFour), -1); - assert.sameValue(findLastHelper(fixedLength, isTwoOrFour), undefined); - assert.sameValue(findLastIndexHelper(fixedLength, isTwoOrFour), -1); - assert.sameValue(findHelper(fixedLengthWithOffset, isTwoOrFour), undefined); - assert.sameValue(findIndexHelper(fixedLengthWithOffset, isTwoOrFour), -1); - assert.sameValue(findLastHelper(fixedLengthWithOffset, isTwoOrFour), undefined); - assert.sameValue(findLastIndexHelper(fixedLengthWithOffset, isTwoOrFour), -1); - assert.sameValue(findHelper(lengthTrackingWithOffset, isTwoOrFour), undefined); - assert.sameValue(findIndexHelper(lengthTrackingWithOffset, isTwoOrFour), -1); - assert.sameValue(findLastHelper(lengthTrackingWithOffset, isTwoOrFour), undefined); - assert.sameValue(findLastIndexHelper(lengthTrackingWithOffset, isTwoOrFour), -1); - } - assert.sameValue(findHelper(lengthTracking, isTwoOrFour), undefined); - assert.sameValue(findIndexHelper(lengthTracking, isTwoOrFour), -1); - assert.sameValue(findLastHelper(lengthTracking, isTwoOrFour), undefined); - assert.sameValue(findLastIndexHelper(lengthTracking, isTwoOrFour), -1); - - // Shrink to zero. - rab.resize(0); - if (oobThrows) { - assert.throws(TypeError, () => { - findHelper(fixedLength, isTwoOrFour); - }); - assert.throws(TypeError, () => { - findIndexHelper(fixedLength, isTwoOrFour); - }); - assert.throws(TypeError, () => { - findLastHelper(fixedLength, isTwoOrFour); - }); - assert.throws(TypeError, () => { - findLastIndexHelper(fixedLength, isTwoOrFour); - }); - assert.throws(TypeError, () => { - findHelper(fixedLengthWithOffset, isTwoOrFour); - }); - assert.throws(TypeError, () => { - findIndexHelper(fixedLengthWithOffset, isTwoOrFour); - }); - assert.throws(TypeError, () => { - findLastHelper(fixedLengthWithOffset, isTwoOrFour); - }); - assert.throws(TypeError, () => { - findLastIndexHelper(fixedLengthWithOffset, isTwoOrFour); - }); - assert.throws(TypeError, () => { - findHelper(lengthTrackingWithOffset, isTwoOrFour); - }); - assert.throws(TypeError, () => { - findIndexHelper(lengthTrackingWithOffset, isTwoOrFour); - }); - assert.throws(TypeError, () => { - findLastHelper(lengthTrackingWithOffset, isTwoOrFour); - }); - assert.throws(TypeError, () => { - findLastIndexHelper(lengthTrackingWithOffset, isTwoOrFour); - }); - } else { - assert.sameValue(findHelper(fixedLength, isTwoOrFour), undefined); - assert.sameValue(findIndexHelper(fixedLength, isTwoOrFour), -1); - assert.sameValue(findLastHelper(fixedLength, isTwoOrFour), undefined); - assert.sameValue(findLastIndexHelper(fixedLength, isTwoOrFour), -1); - assert.sameValue(findHelper(fixedLengthWithOffset, isTwoOrFour), undefined); - assert.sameValue(findIndexHelper(fixedLengthWithOffset, isTwoOrFour), -1); - assert.sameValue(findLastHelper(fixedLengthWithOffset, isTwoOrFour), undefined); - assert.sameValue(findLastIndexHelper(fixedLengthWithOffset, isTwoOrFour), -1); - assert.sameValue(findHelper(lengthTrackingWithOffset, isTwoOrFour), undefined); - assert.sameValue(findIndexHelper(lengthTrackingWithOffset, isTwoOrFour), -1); - assert.sameValue(findLastHelper(lengthTrackingWithOffset, isTwoOrFour), undefined); - assert.sameValue(findLastIndexHelper(lengthTrackingWithOffset, isTwoOrFour), -1); - } - assert.sameValue(findHelper(lengthTracking, isTwoOrFour), undefined); - assert.sameValue(findIndexHelper(lengthTracking, isTwoOrFour), -1); - assert.sameValue(findLastHelper(lengthTracking, isTwoOrFour), undefined); - assert.sameValue(findLastIndexHelper(lengthTracking, isTwoOrFour), -1); - - // Grow so that all TAs are back in-bounds. - rab.resize(6 * ctor.BYTES_PER_ELEMENT); - for (let i = 0; i < 4; ++i) { - WriteToTypedArray(taWrite, i, 0); - } - WriteToTypedArray(taWrite, 4, 2); - WriteToTypedArray(taWrite, 5, 4); - - // Orig. array: [0, 0, 0, 0, 2, 4] - // [0, 0, 0, 0] << fixedLength - // [0, 0] << fixedLengthWithOffset - // [0, 0, 0, 0, 2, 4, ...] << lengthTracking - // [0, 0, 2, 4, ...] << lengthTrackingWithOffset - - assert.sameValue(findHelper(fixedLength, isTwoOrFour), undefined); - assert.sameValue(findHelper(fixedLengthWithOffset, isTwoOrFour), undefined); - assert.sameValue(Number(findHelper(lengthTracking, isTwoOrFour)), 2); - assert.sameValue(Number(findHelper(lengthTrackingWithOffset, isTwoOrFour)), 2); - assert.sameValue(findIndexHelper(fixedLength, isTwoOrFour), -1); - assert.sameValue(findIndexHelper(fixedLengthWithOffset, isTwoOrFour), -1); - assert.sameValue(findIndexHelper(lengthTracking, isTwoOrFour), 4); - assert.sameValue(findIndexHelper(lengthTrackingWithOffset, isTwoOrFour), 2); - assert.sameValue(findLastHelper(fixedLength, isTwoOrFour), undefined); - assert.sameValue(findLastHelper(fixedLengthWithOffset, isTwoOrFour), undefined); - assert.sameValue(Number(findLastHelper(lengthTracking, isTwoOrFour)), 4); - assert.sameValue(Number(findLastHelper(lengthTrackingWithOffset, isTwoOrFour)), 4); - assert.sameValue(findLastIndexHelper(fixedLength, isTwoOrFour), -1); - assert.sameValue(findLastIndexHelper(fixedLengthWithOffset, isTwoOrFour), -1); - assert.sameValue(findLastIndexHelper(lengthTracking, isTwoOrFour), 5); - assert.sameValue(findLastIndexHelper(lengthTrackingWithOffset, isTwoOrFour), 3); - } -} - -FindFindIndexFindLastFindLastIndex(TypedArrayFindHelper, TypedArrayFindIndexHelper, TypedArrayFindLastHelper, TypedArrayFindLastIndexHelper, true); -FindFindIndexFindLastFindLastIndex(ArrayFindHelper, ArrayFindIndexHelper, ArrayFindLastHelper, ArrayFindLastIndexHelper, false); diff --git a/test/staging/ArrayBuffer/resizable/find-grow-mid-iteration.js b/test/staging/ArrayBuffer/resizable/find-grow-mid-iteration.js deleted file mode 100644 index b552fced261..00000000000 --- a/test/staging/ArrayBuffer/resizable/find-grow-mid-iteration.js +++ /dev/null @@ -1,149 +0,0 @@ -// Copyright 2021 the V8 project authors. All rights reserved. -// This code is governed by the BSD license found in the LICENSE file. - -/*--- -esid: sec-arraybuffer-length -description: > - Automatically ported from FindGrowMidIteration test - in V8's mjsunit test typedarray-resizablearraybuffer.js -includes: [compareArray.js] -features: [resizable-arraybuffer] -flags: [onlyStrict] ----*/ - -class MyUint8Array extends Uint8Array { -} - -class MyFloat32Array extends Float32Array { -} - -class MyBigInt64Array extends BigInt64Array { -} - -const builtinCtors = [ - Uint8Array, - Int8Array, - Uint16Array, - Int16Array, - Uint32Array, - Int32Array, - Float32Array, - Float64Array, - Uint8ClampedArray, - BigUint64Array, - BigInt64Array -]; - -const ctors = [ - ...builtinCtors, - MyUint8Array, - MyFloat32Array, - MyBigInt64Array -]; - -function CreateResizableArrayBuffer(byteLength, maxByteLength) { - return new ArrayBuffer(byteLength, { maxByteLength: maxByteLength }); -} - -function WriteToTypedArray(array, index, value) { - if (array instanceof BigInt64Array || array instanceof BigUint64Array) { - array[index] = BigInt(value); - } else { - array[index] = value; - } -} - -function TypedArrayFindHelper(ta, p) { - return ta.find(p); -} - -function ArrayFindHelper(ta, p) { - return Array.prototype.find.call(ta, p); -} - -function FindGrowMidIteration(findHelper) { - // Orig. array: [0, 2, 4, 6] - // [0, 2, 4, 6] << fixedLength - // [4, 6] << fixedLengthWithOffset - // [0, 2, 4, 6, ...] << lengthTracking - // [4, 6, ...] << lengthTrackingWithOffset - function CreateRabForTest(ctor) { - const rab = CreateResizableArrayBuffer(4 * ctor.BYTES_PER_ELEMENT, 8 * ctor.BYTES_PER_ELEMENT); - // Write some data into the array. - const taWrite = new ctor(rab); - for (let i = 0; i < 4; ++i) { - WriteToTypedArray(taWrite, i, 2 * i); - } - return rab; - } - let values; - let rab; - let resizeAfter; - let resizeTo; - function CollectValuesAndResize(n) { - if (typeof n == 'bigint') { - values.push(Number(n)); - } else { - values.push(n); - } - if (values.length == resizeAfter) { - rab.resize(resizeTo); - } - return false; - } - for (let ctor of ctors) { - rab = CreateRabForTest(ctor); - const fixedLength = new ctor(rab, 0, 4); - values = []; - resizeAfter = 2; - resizeTo = 5 * ctor.BYTES_PER_ELEMENT; - assert.sameValue(findHelper(fixedLength, CollectValuesAndResize), undefined); - assert.compareArray(values, [ - 0, - 2, - 4, - 6 - ]); - } - for (let ctor of ctors) { - rab = CreateRabForTest(ctor); - const fixedLengthWithOffset = new ctor(rab, 2 * ctor.BYTES_PER_ELEMENT, 2); - values = []; - resizeAfter = 1; - resizeTo = 5 * ctor.BYTES_PER_ELEMENT; - assert.sameValue(findHelper(fixedLengthWithOffset, CollectValuesAndResize), undefined); - assert.compareArray(values, [ - 4, - 6 - ]); - } - for (let ctor of ctors) { - rab = CreateRabForTest(ctor); - const lengthTracking = new ctor(rab, 0); - values = []; - resizeAfter = 2; - resizeTo = 5 * ctor.BYTES_PER_ELEMENT; - assert.sameValue(findHelper(lengthTracking, CollectValuesAndResize), undefined); - assert.compareArray(values, [ - 0, - 2, - 4, - 6 - ]); - } - for (let ctor of ctors) { - rab = CreateRabForTest(ctor); - const lengthTrackingWithOffset = new ctor(rab, 2 * ctor.BYTES_PER_ELEMENT); - values = []; - resizeAfter = 1; - resizeTo = 5 * ctor.BYTES_PER_ELEMENT; - assert.sameValue(findHelper(lengthTrackingWithOffset, CollectValuesAndResize), undefined); - assert.compareArray(values, [ - 4, - 6 - ]); - } -} - -FindGrowMidIteration(TypedArrayFindHelper); -FindGrowMidIteration(ArrayFindHelper); diff --git a/test/staging/ArrayBuffer/resizable/find-index-grow-mid-iteration.js b/test/staging/ArrayBuffer/resizable/find-index-grow-mid-iteration.js deleted file mode 100644 index 121215e14c2..00000000000 --- a/test/staging/ArrayBuffer/resizable/find-index-grow-mid-iteration.js +++ /dev/null @@ -1,149 +0,0 @@ -// Copyright 2021 the V8 project authors. All rights reserved. -// This code is governed by the BSD license found in the LICENSE file. - -/*--- -esid: sec-arraybuffer-length -description: > - Automatically ported from FindIndexGrowMidIteration test - in V8's mjsunit test typedarray-resizablearraybuffer.js -includes: [compareArray.js] -features: [resizable-arraybuffer] -flags: [onlyStrict] ----*/ - -class MyUint8Array extends Uint8Array { -} - -class MyFloat32Array extends Float32Array { -} - -class MyBigInt64Array extends BigInt64Array { -} - -const builtinCtors = [ - Uint8Array, - Int8Array, - Uint16Array, - Int16Array, - Uint32Array, - Int32Array, - Float32Array, - Float64Array, - Uint8ClampedArray, - BigUint64Array, - BigInt64Array -]; - -const ctors = [ - ...builtinCtors, - MyUint8Array, - MyFloat32Array, - MyBigInt64Array -]; - -function CreateResizableArrayBuffer(byteLength, maxByteLength) { - return new ArrayBuffer(byteLength, { maxByteLength: maxByteLength }); -} - -function WriteToTypedArray(array, index, value) { - if (array instanceof BigInt64Array || array instanceof BigUint64Array) { - array[index] = BigInt(value); - } else { - array[index] = value; - } -} - -function TypedArrayFindIndexHelper(ta, p) { - return ta.findIndex(p); -} - -function ArrayFindIndexHelper(ta, p) { - return Array.prototype.findIndex.call(ta, p); -} - -function FindIndexGrowMidIteration(findIndexHelper) { - // Orig. array: [0, 2, 4, 6] - // [0, 2, 4, 6] << fixedLength - // [4, 6] << fixedLengthWithOffset - // [0, 2, 4, 6, ...] << lengthTracking - // [4, 6, ...] << lengthTrackingWithOffset - function CreateRabForTest(ctor) { - const rab = CreateResizableArrayBuffer(4 * ctor.BYTES_PER_ELEMENT, 8 * ctor.BYTES_PER_ELEMENT); - // Write some data into the array. - const taWrite = new ctor(rab); - for (let i = 0; i < 4; ++i) { - WriteToTypedArray(taWrite, i, 2 * i); - } - return rab; - } - let values; - let rab; - let resizeAfter; - let resizeTo; - function CollectValuesAndResize(n) { - if (typeof n == 'bigint') { - values.push(Number(n)); - } else { - values.push(n); - } - if (values.length == resizeAfter) { - rab.resize(resizeTo); - } - return false; - } - for (let ctor of ctors) { - rab = CreateRabForTest(ctor); - const fixedLength = new ctor(rab, 0, 4); - values = []; - resizeAfter = 2; - resizeTo = 5 * ctor.BYTES_PER_ELEMENT; - assert.sameValue(findIndexHelper(fixedLength, CollectValuesAndResize), -1); - assert.compareArray(values, [ - 0, - 2, - 4, - 6 - ]); - } - for (let ctor of ctors) { - rab = CreateRabForTest(ctor); - const fixedLengthWithOffset = new ctor(rab, 2 * ctor.BYTES_PER_ELEMENT, 2); - values = []; - resizeAfter = 1; - resizeTo = 5 * ctor.BYTES_PER_ELEMENT; - assert.sameValue(findIndexHelper(fixedLengthWithOffset, CollectValuesAndResize), -1); - assert.compareArray(values, [ - 4, - 6 - ]); - } - for (let ctor of ctors) { - rab = CreateRabForTest(ctor); - const lengthTracking = new ctor(rab, 0); - values = []; - resizeAfter = 2; - resizeTo = 5 * ctor.BYTES_PER_ELEMENT; - assert.sameValue(findIndexHelper(lengthTracking, CollectValuesAndResize), -1); - assert.compareArray(values, [ - 0, - 2, - 4, - 6 - ]); - } - for (let ctor of ctors) { - rab = CreateRabForTest(ctor); - const lengthTrackingWithOffset = new ctor(rab, 2 * ctor.BYTES_PER_ELEMENT); - values = []; - resizeAfter = 1; - resizeTo = 5 * ctor.BYTES_PER_ELEMENT; - assert.sameValue(findIndexHelper(lengthTrackingWithOffset, CollectValuesAndResize), -1); - assert.compareArray(values, [ - 4, - 6 - ]); - } -} - -FindIndexGrowMidIteration(TypedArrayFindIndexHelper); -FindIndexGrowMidIteration(ArrayFindIndexHelper); diff --git a/test/staging/ArrayBuffer/resizable/find-index-shrink-mid-iteration.js b/test/staging/ArrayBuffer/resizable/find-index-shrink-mid-iteration.js deleted file mode 100644 index a3f8fa73398..00000000000 --- a/test/staging/ArrayBuffer/resizable/find-index-shrink-mid-iteration.js +++ /dev/null @@ -1,149 +0,0 @@ -// Copyright 2021 the V8 project authors. All rights reserved. -// This code is governed by the BSD license found in the LICENSE file. - -/*--- -esid: sec-arraybuffer-length -description: > - Automatically ported from FindIndexShrinkMidIteration test - in V8's mjsunit test typedarray-resizablearraybuffer.js -includes: [compareArray.js] -features: [resizable-arraybuffer] -flags: [onlyStrict] ----*/ - -class MyUint8Array extends Uint8Array { -} - -class MyFloat32Array extends Float32Array { -} - -class MyBigInt64Array extends BigInt64Array { -} - -const builtinCtors = [ - Uint8Array, - Int8Array, - Uint16Array, - Int16Array, - Uint32Array, - Int32Array, - Float32Array, - Float64Array, - Uint8ClampedArray, - BigUint64Array, - BigInt64Array -]; - -const ctors = [ - ...builtinCtors, - MyUint8Array, - MyFloat32Array, - MyBigInt64Array -]; - -function CreateResizableArrayBuffer(byteLength, maxByteLength) { - return new ArrayBuffer(byteLength, { maxByteLength: maxByteLength }); -} - -function WriteToTypedArray(array, index, value) { - if (array instanceof BigInt64Array || array instanceof BigUint64Array) { - array[index] = BigInt(value); - } else { - array[index] = value; - } -} - -function TypedArrayFindIndexHelper(ta, p) { - return ta.findIndex(p); -} - -function ArrayFindIndexHelper(ta, p) { - return Array.prototype.findIndex.call(ta, p); -} - -function FindIndexShrinkMidIteration(findIndexHelper) { - // Orig. array: [0, 2, 4, 6] - // [0, 2, 4, 6] << fixedLength - // [4, 6] << fixedLengthWithOffset - // [0, 2, 4, 6, ...] << lengthTracking - // [4, 6, ...] << lengthTrackingWithOffset - function CreateRabForTest(ctor) { - const rab = CreateResizableArrayBuffer(4 * ctor.BYTES_PER_ELEMENT, 8 * ctor.BYTES_PER_ELEMENT); - // Write some data into the array. - const taWrite = new ctor(rab); - for (let i = 0; i < 4; ++i) { - WriteToTypedArray(taWrite, i, 2 * i); - } - return rab; - } - let values; - let rab; - let resizeAfter; - let resizeTo; - function CollectValuesAndResize(n) { - if (typeof n == 'bigint') { - values.push(Number(n)); - } else { - values.push(n); - } - if (values.length == resizeAfter) { - rab.resize(resizeTo); - } - return false; - } - for (let ctor of ctors) { - rab = CreateRabForTest(ctor); - const fixedLength = new ctor(rab, 0, 4); - values = []; - resizeAfter = 2; - resizeTo = 3 * ctor.BYTES_PER_ELEMENT; - assert.sameValue(findIndexHelper(fixedLength, CollectValuesAndResize), -1); - assert.compareArray(values, [ - 0, - 2, - undefined, - undefined - ]); - } - for (let ctor of ctors) { - rab = CreateRabForTest(ctor); - const fixedLengthWithOffset = new ctor(rab, 2 * ctor.BYTES_PER_ELEMENT, 2); - values = []; - resizeAfter = 1; - resizeTo = 3 * ctor.BYTES_PER_ELEMENT; - assert.sameValue(findIndexHelper(fixedLengthWithOffset, CollectValuesAndResize), -1); - assert.compareArray(values, [ - 4, - undefined - ]); - } - for (let ctor of ctors) { - rab = CreateRabForTest(ctor); - const lengthTracking = new ctor(rab, 0); - values = []; - resizeAfter = 2; - resizeTo = 3 * ctor.BYTES_PER_ELEMENT; - assert.sameValue(findIndexHelper(lengthTracking, CollectValuesAndResize), -1); - assert.compareArray(values, [ - 0, - 2, - 4, - undefined - ]); - } - for (let ctor of ctors) { - rab = CreateRabForTest(ctor); - const lengthTrackingWithOffset = new ctor(rab, 2 * ctor.BYTES_PER_ELEMENT); - values = []; - resizeAfter = 1; - resizeTo = 3 * ctor.BYTES_PER_ELEMENT; - assert.sameValue(findIndexHelper(lengthTrackingWithOffset, CollectValuesAndResize), -1); - assert.compareArray(values, [ - 4, - undefined - ]); - } -} - -FindIndexShrinkMidIteration(TypedArrayFindIndexHelper); -FindIndexShrinkMidIteration(ArrayFindIndexHelper); diff --git a/test/staging/ArrayBuffer/resizable/find-last-grow-mid-iteration.js b/test/staging/ArrayBuffer/resizable/find-last-grow-mid-iteration.js deleted file mode 100644 index c2521464a8f..00000000000 --- a/test/staging/ArrayBuffer/resizable/find-last-grow-mid-iteration.js +++ /dev/null @@ -1,149 +0,0 @@ -// Copyright 2021 the V8 project authors. All rights reserved. -// This code is governed by the BSD license found in the LICENSE file. - -/*--- -esid: sec-arraybuffer-length -description: > - Automatically ported from FindLastGrowMidIteration test - in V8's mjsunit test typedarray-resizablearraybuffer.js -includes: [compareArray.js] -features: [resizable-arraybuffer] -flags: [onlyStrict] ----*/ - -class MyUint8Array extends Uint8Array { -} - -class MyFloat32Array extends Float32Array { -} - -class MyBigInt64Array extends BigInt64Array { -} - -const builtinCtors = [ - Uint8Array, - Int8Array, - Uint16Array, - Int16Array, - Uint32Array, - Int32Array, - Float32Array, - Float64Array, - Uint8ClampedArray, - BigUint64Array, - BigInt64Array -]; - -const ctors = [ - ...builtinCtors, - MyUint8Array, - MyFloat32Array, - MyBigInt64Array -]; - -function CreateResizableArrayBuffer(byteLength, maxByteLength) { - return new ArrayBuffer(byteLength, { maxByteLength: maxByteLength }); -} - -function WriteToTypedArray(array, index, value) { - if (array instanceof BigInt64Array || array instanceof BigUint64Array) { - array[index] = BigInt(value); - } else { - array[index] = value; - } -} - -function TypedArrayFindLastHelper(ta, p) { - return ta.findLast(p); -} - -function ArrayFindLastHelper(ta, p) { - return Array.prototype.findLast.call(ta, p); -} - -function FindLastGrowMidIteration(findLastHelper) { - // Orig. array: [0, 2, 4, 6] - // [0, 2, 4, 6] << fixedLength - // [4, 6] << fixedLengthWithOffset - // [0, 2, 4, 6, ...] << lengthTracking - // [4, 6, ...] << lengthTrackingWithOffset - function CreateRabForTest(ctor) { - const rab = CreateResizableArrayBuffer(4 * ctor.BYTES_PER_ELEMENT, 8 * ctor.BYTES_PER_ELEMENT); - // Write some data into the array. - const taWrite = new ctor(rab); - for (let i = 0; i < 4; ++i) { - WriteToTypedArray(taWrite, i, 2 * i); - } - return rab; - } - let values; - let rab; - let resizeAfter; - let resizeTo; - function CollectValuesAndResize(n) { - if (typeof n == 'bigint') { - values.push(Number(n)); - } else { - values.push(n); - } - if (values.length == resizeAfter) { - rab.resize(resizeTo); - } - return false; - } - for (let ctor of ctors) { - rab = CreateRabForTest(ctor); - const fixedLength = new ctor(rab, 0, 4); - values = []; - resizeAfter = 2; - resizeTo = 5 * ctor.BYTES_PER_ELEMENT; - assert.sameValue(findLastHelper(fixedLength, CollectValuesAndResize), undefined); - assert.compareArray(values, [ - 6, - 4, - 2, - 0 - ]); - } - for (let ctor of ctors) { - rab = CreateRabForTest(ctor); - const fixedLengthWithOffset = new ctor(rab, 2 * ctor.BYTES_PER_ELEMENT, 2); - values = []; - resizeAfter = 1; - resizeTo = 5 * ctor.BYTES_PER_ELEMENT; - assert.sameValue(findLastHelper(fixedLengthWithOffset, CollectValuesAndResize), undefined); - assert.compareArray(values, [ - 6, - 4 - ]); - } - for (let ctor of ctors) { - rab = CreateRabForTest(ctor); - const lengthTracking = new ctor(rab, 0); - values = []; - resizeAfter = 2; - resizeTo = 5 * ctor.BYTES_PER_ELEMENT; - assert.sameValue(findLastHelper(lengthTracking, CollectValuesAndResize), undefined); - assert.compareArray(values, [ - 6, - 4, - 2, - 0 - ]); - } - for (let ctor of ctors) { - rab = CreateRabForTest(ctor); - const lengthTrackingWithOffset = new ctor(rab, 2 * ctor.BYTES_PER_ELEMENT); - values = []; - resizeAfter = 1; - resizeTo = 5 * ctor.BYTES_PER_ELEMENT; - assert.sameValue(findLastHelper(lengthTrackingWithOffset, CollectValuesAndResize), undefined); - assert.compareArray(values, [ - 6, - 4 - ]); - } -} - -FindLastGrowMidIteration(TypedArrayFindLastHelper); -FindLastGrowMidIteration(ArrayFindLastHelper); diff --git a/test/staging/ArrayBuffer/resizable/find-last-index-grow-mid-iteration.js b/test/staging/ArrayBuffer/resizable/find-last-index-grow-mid-iteration.js deleted file mode 100644 index ddc7c21a3ff..00000000000 --- a/test/staging/ArrayBuffer/resizable/find-last-index-grow-mid-iteration.js +++ /dev/null @@ -1,149 +0,0 @@ -// Copyright 2021 the V8 project authors. All rights reserved. -// This code is governed by the BSD license found in the LICENSE file. - -/*--- -esid: sec-arraybuffer-length -description: > - Automatically ported from FindLastIndexGrowMidIteration test - in V8's mjsunit test typedarray-resizablearraybuffer.js -includes: [compareArray.js] -features: [resizable-arraybuffer] -flags: [onlyStrict] ----*/ - -class MyUint8Array extends Uint8Array { -} - -class MyFloat32Array extends Float32Array { -} - -class MyBigInt64Array extends BigInt64Array { -} - -const builtinCtors = [ - Uint8Array, - Int8Array, - Uint16Array, - Int16Array, - Uint32Array, - Int32Array, - Float32Array, - Float64Array, - Uint8ClampedArray, - BigUint64Array, - BigInt64Array -]; - -const ctors = [ - ...builtinCtors, - MyUint8Array, - MyFloat32Array, - MyBigInt64Array -]; - -function CreateResizableArrayBuffer(byteLength, maxByteLength) { - return new ArrayBuffer(byteLength, { maxByteLength: maxByteLength }); -} - -function WriteToTypedArray(array, index, value) { - if (array instanceof BigInt64Array || array instanceof BigUint64Array) { - array[index] = BigInt(value); - } else { - array[index] = value; - } -} - -function TypedArrayFindLastIndexHelper(ta, p) { - return ta.findLastIndex(p); -} - -function ArrayFindLastIndexHelper(ta, p) { - return Array.prototype.findLastIndex.call(ta, p); -} - -function FindLastIndexGrowMidIteration(findLastIndexHelper) { - // Orig. array: [0, 2, 4, 6] - // [0, 2, 4, 6] << fixedLength - // [4, 6] << fixedLengthWithOffset - // [0, 2, 4, 6, ...] << lengthTracking - // [4, 6, ...] << lengthTrackingWithOffset - function CreateRabForTest(ctor) { - const rab = CreateResizableArrayBuffer(4 * ctor.BYTES_PER_ELEMENT, 8 * ctor.BYTES_PER_ELEMENT); - // Write some data into the array. - const taWrite = new ctor(rab); - for (let i = 0; i < 4; ++i) { - WriteToTypedArray(taWrite, i, 2 * i); - } - return rab; - } - let values; - let rab; - let resizeAfter; - let resizeTo; - function CollectValuesAndResize(n) { - if (typeof n == 'bigint') { - values.push(Number(n)); - } else { - values.push(n); - } - if (values.length == resizeAfter) { - rab.resize(resizeTo); - } - return false; - } - for (let ctor of ctors) { - rab = CreateRabForTest(ctor); - const fixedLength = new ctor(rab, 0, 4); - values = []; - resizeAfter = 2; - resizeTo = 5 * ctor.BYTES_PER_ELEMENT; - assert.sameValue(findLastIndexHelper(fixedLength, CollectValuesAndResize), -1); - assert.compareArray(values, [ - 6, - 4, - 2, - 0 - ]); - } - for (let ctor of ctors) { - rab = CreateRabForTest(ctor); - const fixedLengthWithOffset = new ctor(rab, 2 * ctor.BYTES_PER_ELEMENT, 2); - values = []; - resizeAfter = 1; - resizeTo = 5 * ctor.BYTES_PER_ELEMENT; - assert.sameValue(findLastIndexHelper(fixedLengthWithOffset, CollectValuesAndResize), -1); - assert.compareArray(values, [ - 6, - 4 - ]); - } - for (let ctor of ctors) { - rab = CreateRabForTest(ctor); - const lengthTracking = new ctor(rab, 0); - values = []; - resizeAfter = 2; - resizeTo = 5 * ctor.BYTES_PER_ELEMENT; - assert.sameValue(findLastIndexHelper(lengthTracking, CollectValuesAndResize), -1); - assert.compareArray(values, [ - 6, - 4, - 2, - 0 - ]); - } - for (let ctor of ctors) { - rab = CreateRabForTest(ctor); - const lengthTrackingWithOffset = new ctor(rab, 2 * ctor.BYTES_PER_ELEMENT); - values = []; - resizeAfter = 1; - resizeTo = 5 * ctor.BYTES_PER_ELEMENT; - assert.sameValue(findLastIndexHelper(lengthTrackingWithOffset, CollectValuesAndResize), -1); - assert.compareArray(values, [ - 6, - 4 - ]); - } -} - -FindLastIndexGrowMidIteration(TypedArrayFindLastIndexHelper); -FindLastIndexGrowMidIteration(ArrayFindLastIndexHelper); diff --git a/test/staging/ArrayBuffer/resizable/find-last-index-shrink-mid-iteration.js b/test/staging/ArrayBuffer/resizable/find-last-index-shrink-mid-iteration.js deleted file mode 100644 index 82ce1f4188a..00000000000 --- a/test/staging/ArrayBuffer/resizable/find-last-index-shrink-mid-iteration.js +++ /dev/null @@ -1,163 +0,0 @@ -// Copyright 2021 the V8 project authors. All rights reserved. -// This code is governed by the BSD license found in the LICENSE file. - -/*--- -esid: sec-arraybuffer-length -description: > - Automatically ported from FindLastIndexShrinkMidIteration test - in V8's mjsunit test typedarray-resizablearraybuffer.js -includes: [compareArray.js] -features: [resizable-arraybuffer] -flags: [onlyStrict] ----*/ - -class MyUint8Array extends Uint8Array { -} - -class MyFloat32Array extends Float32Array { -} - -class MyBigInt64Array extends BigInt64Array { -} - -const builtinCtors = [ - Uint8Array, - Int8Array, - Uint16Array, - Int16Array, - Uint32Array, - Int32Array, - Float32Array, - Float64Array, - Uint8ClampedArray, - BigUint64Array, - BigInt64Array -]; - -const ctors = [ - ...builtinCtors, - MyUint8Array, - MyFloat32Array, - MyBigInt64Array -]; - -function CreateResizableArrayBuffer(byteLength, maxByteLength) { - return new ArrayBuffer(byteLength, { maxByteLength: maxByteLength }); -} - -function WriteToTypedArray(array, index, value) { - if (array instanceof BigInt64Array || array instanceof BigUint64Array) { - array[index] = BigInt(value); - } else { - array[index] = value; - } -} - -function TypedArrayFindLastIndexHelper(ta, p) { - return ta.findLastIndex(p); -} - -function ArrayFindLastIndexHelper(ta, p) { - return Array.prototype.findLastIndex.call(ta, p); -} - -function FindLastIndexShrinkMidIteration(findLastIndexHelper) { - // Orig. array: [0, 2, 4, 6] - // [0, 2, 4, 6] << fixedLength - // [4, 6] << fixedLengthWithOffset - // [0, 2, 4, 6, ...] << lengthTracking - // [4, 6, ...] << lengthTrackingWithOffset - function CreateRabForTest(ctor) { - const rab = CreateResizableArrayBuffer(4 * ctor.BYTES_PER_ELEMENT, 8 * ctor.BYTES_PER_ELEMENT); - // Write some data into the array. - const taWrite = new ctor(rab); - for (let i = 0; i < 4; ++i) { - WriteToTypedArray(taWrite, i, 2 * i); - } - return rab; - } - let values; - let rab; - let resizeAfter; - let resizeTo; - function CollectValuesAndResize(n) { - if (typeof n == 'bigint') { - values.push(Number(n)); - } else { - values.push(n); - } - if (values.length == resizeAfter) { - rab.resize(resizeTo); - } - return false; - } - for (let ctor of ctors) { - rab = CreateRabForTest(ctor); - const fixedLength = new ctor(rab, 0, 4); - values = []; - resizeAfter = 2; - resizeTo = 3 * ctor.BYTES_PER_ELEMENT; - assert.sameValue(findLastIndexHelper(fixedLength, CollectValuesAndResize), -1); - assert.compareArray(values, [ - 6, - 4, - undefined, - undefined - ]); - } - for (let ctor of ctors) { - rab = CreateRabForTest(ctor); - const fixedLengthWithOffset = new ctor(rab, 2 * ctor.BYTES_PER_ELEMENT, 2); - values = []; - resizeAfter = 1; - resizeTo = 3 * ctor.BYTES_PER_ELEMENT; - assert.sameValue(findLastIndexHelper(fixedLengthWithOffset, CollectValuesAndResize), -1); - assert.compareArray(values, [ - 6, - undefined - ]); - } - for (let ctor of ctors) { - rab = CreateRabForTest(ctor); - const lengthTracking = new ctor(rab, 0); - values = []; - resizeAfter = 2; - resizeTo = 3 * ctor.BYTES_PER_ELEMENT; - assert.sameValue(findLastIndexHelper(lengthTracking, CollectValuesAndResize), -1); - assert.compareArray(values, [ - 6, - 4, - 2, - 0 - ]); - } - for (let ctor of ctors) { - rab = CreateRabForTest(ctor); - const lengthTracking = new ctor(rab, 0); - values = []; - resizeAfter = 1; - resizeTo = 2 * ctor.BYTES_PER_ELEMENT; - assert.sameValue(findLastIndexHelper(lengthTracking, CollectValuesAndResize), -1); - assert.compareArray(values, [ - 6, - undefined, - 2, - 0 - ]); - } - for (let ctor of ctors) { - rab = CreateRabForTest(ctor); - const lengthTrackingWithOffset = new ctor(rab, 2 * ctor.BYTES_PER_ELEMENT); - values = []; - resizeAfter = 1; - resizeTo = 3 * ctor.BYTES_PER_ELEMENT; - assert.sameValue(findLastIndexHelper(lengthTrackingWithOffset, CollectValuesAndResize), -1); - assert.compareArray(values, [ - 6, - 4 - ]); - } -} - -FindLastIndexShrinkMidIteration(TypedArrayFindLastIndexHelper); -FindLastIndexShrinkMidIteration(ArrayFindLastIndexHelper); diff --git a/test/staging/ArrayBuffer/resizable/find-last-shrink-mid-iteration.js b/test/staging/ArrayBuffer/resizable/find-last-shrink-mid-iteration.js deleted file mode 100644 index 338dd6a5eb0..00000000000 --- a/test/staging/ArrayBuffer/resizable/find-last-shrink-mid-iteration.js +++ /dev/null @@ -1,149 +0,0 @@ -// Copyright 2021 the V8 project authors. All rights reserved. -// This code is governed by the BSD license found in the LICENSE file. - -/*--- -esid: sec-arraybuffer-length -description: > - Automatically ported from FindLastShrinkMidIteration test - in V8's mjsunit test typedarray-resizablearraybuffer.js -includes: [compareArray.js] -features: [resizable-arraybuffer] -flags: [onlyStrict] ----*/ - -class MyUint8Array extends Uint8Array { -} - -class MyFloat32Array extends Float32Array { -} - -class MyBigInt64Array extends BigInt64Array { -} - -const builtinCtors = [ - Uint8Array, - Int8Array, - Uint16Array, - Int16Array, - Uint32Array, - Int32Array, - Float32Array, - Float64Array, - Uint8ClampedArray, - BigUint64Array, - BigInt64Array -]; - -const ctors = [ - ...builtinCtors, - MyUint8Array, - MyFloat32Array, - MyBigInt64Array -]; - -function CreateResizableArrayBuffer(byteLength, maxByteLength) { - return new ArrayBuffer(byteLength, { maxByteLength: maxByteLength }); -} - -function WriteToTypedArray(array, index, value) { - if (array instanceof BigInt64Array || array instanceof BigUint64Array) { - array[index] = BigInt(value); - } else { - array[index] = value; - } -} - -function TypedArrayFindLastHelper(ta, p) { - return ta.findLast(p); -} - -function ArrayFindLastHelper(ta, p) { - return Array.prototype.findLast.call(ta, p); -} - -function FindLastShrinkMidIteration(findLastHelper) { - // Orig. array: [0, 2, 4, 6] - // [0, 2, 4, 6] << fixedLength - // [4, 6] << fixedLengthWithOffset - // [0, 2, 4, 6, ...] << lengthTracking - // [4, 6, ...] << lengthTrackingWithOffset - function CreateRabForTest(ctor) { - const rab = CreateResizableArrayBuffer(4 * ctor.BYTES_PER_ELEMENT, 8 * ctor.BYTES_PER_ELEMENT); - // Write some data into the array. - const taWrite = new ctor(rab); - for (let i = 0; i < 4; ++i) { - WriteToTypedArray(taWrite, i, 2 * i); - } - return rab; - } - let values; - let rab; - let resizeAfter; - let resizeTo; - function CollectValuesAndResize(n) { - if (typeof n == 'bigint') { - values.push(Number(n)); - } else { - values.push(n); - } - if (values.length == resizeAfter) { - rab.resize(resizeTo); - } - return false; - } - for (let ctor of ctors) { - rab = CreateRabForTest(ctor); - const fixedLength = new ctor(rab, 0, 4); - values = []; - resizeAfter = 2; - resizeTo = 3 * ctor.BYTES_PER_ELEMENT; - assert.sameValue(findLastHelper(fixedLength, CollectValuesAndResize), undefined); - assert.compareArray(values, [ - 6, - 4, - undefined, - undefined - ]); - } - for (let ctor of ctors) { - rab = CreateRabForTest(ctor); - const fixedLengthWithOffset = new ctor(rab, 2 * ctor.BYTES_PER_ELEMENT, 2); - values = []; - resizeAfter = 1; - resizeTo = 3 * ctor.BYTES_PER_ELEMENT; - assert.sameValue(findLastHelper(fixedLengthWithOffset, CollectValuesAndResize), undefined); - assert.compareArray(values, [ - 6, - undefined - ]); - } - for (let ctor of ctors) { - rab = CreateRabForTest(ctor); - const lengthTracking = new ctor(rab, 0); - values = []; - resizeAfter = 2; - resizeTo = 3 * ctor.BYTES_PER_ELEMENT; - assert.sameValue(findLastHelper(lengthTracking, CollectValuesAndResize), undefined); - assert.compareArray(values, [ - 6, - 4, - 2, - 0 - ]); - } - for (let ctor of ctors) { - rab = CreateRabForTest(ctor); - const lengthTrackingWithOffset = new ctor(rab, 2 * ctor.BYTES_PER_ELEMENT); - values = []; - resizeAfter = 1; - resizeTo = 3 * ctor.BYTES_PER_ELEMENT; - assert.sameValue(findLastHelper(lengthTrackingWithOffset, CollectValuesAndResize), undefined); - assert.compareArray(values, [ - 6, - 4 - ]); - } -} - -FindLastShrinkMidIteration(TypedArrayFindLastHelper); -FindLastShrinkMidIteration(ArrayFindLastHelper); diff --git a/test/staging/ArrayBuffer/resizable/find-shrink-mid-iteration.js b/test/staging/ArrayBuffer/resizable/find-shrink-mid-iteration.js deleted file mode 100644 index 65555e9eb56..00000000000 --- a/test/staging/ArrayBuffer/resizable/find-shrink-mid-iteration.js +++ /dev/null @@ -1,149 +0,0 @@ -// Copyright 2021 the V8 project authors. All rights reserved. -// This code is governed by the BSD license found in the LICENSE file. - -/*--- -esid: sec-arraybuffer-length -description: > - Automatically ported from FindShrinkMidIteration test - in V8's mjsunit test typedarray-resizablearraybuffer.js -includes: [compareArray.js] -features: [resizable-arraybuffer] -flags: [onlyStrict] ----*/ - -class MyUint8Array extends Uint8Array { -} - -class MyFloat32Array extends Float32Array { -} - -class MyBigInt64Array extends BigInt64Array { -} - -const builtinCtors = [ - Uint8Array, - Int8Array, - Uint16Array, - Int16Array, - Uint32Array, - Int32Array, - Float32Array, - Float64Array, - Uint8ClampedArray, - BigUint64Array, - BigInt64Array -]; - -const ctors = [ - ...builtinCtors, - MyUint8Array, - MyFloat32Array, - MyBigInt64Array -]; - -function CreateResizableArrayBuffer(byteLength, maxByteLength) { - return new ArrayBuffer(byteLength, { maxByteLength: maxByteLength }); -} - -function WriteToTypedArray(array, index, value) { - if (array instanceof BigInt64Array || array instanceof BigUint64Array) { - array[index] = BigInt(value); - } else { - array[index] = value; - } -} - -function TypedArrayFindHelper(ta, p) { - return ta.find(p); -} - -function ArrayFindHelper(ta, p) { - return Array.prototype.find.call(ta, p); -} - -function FindShrinkMidIteration(findHelper) { - // Orig. array: [0, 2, 4, 6] - // [0, 2, 4, 6] << fixedLength - // [4, 6] << fixedLengthWithOffset - // [0, 2, 4, 6, ...] << lengthTracking - // [4, 6, ...] << lengthTrackingWithOffset - function CreateRabForTest(ctor) { - const rab = CreateResizableArrayBuffer(4 * ctor.BYTES_PER_ELEMENT, 8 * ctor.BYTES_PER_ELEMENT); - // Write some data into the array. - const taWrite = new ctor(rab); - for (let i = 0; i < 4; ++i) { - WriteToTypedArray(taWrite, i, 2 * i); - } - return rab; - } - let values; - let rab; - let resizeAfter; - let resizeTo; - function CollectValuesAndResize(n) { - if (typeof n == 'bigint') { - values.push(Number(n)); - } else { - values.push(n); - } - if (values.length == resizeAfter) { - rab.resize(resizeTo); - } - return false; - } - for (let ctor of ctors) { - rab = CreateRabForTest(ctor); - const fixedLength = new ctor(rab, 0, 4); - values = []; - resizeAfter = 2; - resizeTo = 3 * ctor.BYTES_PER_ELEMENT; - assert.sameValue(findHelper(fixedLength, CollectValuesAndResize), undefined); - assert.compareArray(values, [ - 0, - 2, - undefined, - undefined - ]); - } - for (let ctor of ctors) { - rab = CreateRabForTest(ctor); - const fixedLengthWithOffset = new ctor(rab, 2 * ctor.BYTES_PER_ELEMENT, 2); - values = []; - resizeAfter = 1; - resizeTo = 3 * ctor.BYTES_PER_ELEMENT; - assert.sameValue(findHelper(fixedLengthWithOffset, CollectValuesAndResize), undefined); - assert.compareArray(values, [ - 4, - undefined - ]); - } - for (let ctor of ctors) { - rab = CreateRabForTest(ctor); - const lengthTracking = new ctor(rab, 0); - values = []; - resizeAfter = 2; - resizeTo = 3 * ctor.BYTES_PER_ELEMENT; - assert.sameValue(findHelper(lengthTracking, CollectValuesAndResize), undefined); - assert.compareArray(values, [ - 0, - 2, - 4, - undefined - ]); - } - for (let ctor of ctors) { - rab = CreateRabForTest(ctor); - const lengthTrackingWithOffset = new ctor(rab, 2 * ctor.BYTES_PER_ELEMENT); - values = []; - resizeAfter = 1; - resizeTo = 3 * ctor.BYTES_PER_ELEMENT; - assert.sameValue(findHelper(lengthTrackingWithOffset, CollectValuesAndResize), undefined); - assert.compareArray(values, [ - 4, - undefined - ]); - } -} - -FindShrinkMidIteration(TypedArrayFindHelper); -FindShrinkMidIteration(ArrayFindHelper); diff --git a/test/staging/ArrayBuffer/resizable/for-each-reduce-reduce-right-grow-mid-iteration.js b/test/staging/ArrayBuffer/resizable/for-each-reduce-reduce-right-grow-mid-iteration.js deleted file mode 100644 index f2e210f3a31..00000000000 --- a/test/staging/ArrayBuffer/resizable/for-each-reduce-reduce-right-grow-mid-iteration.js +++ /dev/null @@ -1,273 +0,0 @@ -// Copyright 2021 the V8 project authors. All rights reserved. -// This code is governed by the BSD license found in the LICENSE file. - -/*--- -esid: sec-arraybuffer-length -description: > - Automatically ported from ForEachReduceReduceRightGrowMidIteration test - in V8's mjsunit test typedarray-resizablearraybuffer.js -includes: [compareArray.js] -features: [resizable-arraybuffer] -flags: [onlyStrict] ----*/ - -class MyUint8Array extends Uint8Array { -} - -class MyFloat32Array extends Float32Array { -} - -class MyBigInt64Array extends BigInt64Array { -} - -const builtinCtors = [ - Uint8Array, - Int8Array, - Uint16Array, - Int16Array, - Uint32Array, - Int32Array, - Float32Array, - Float64Array, - Uint8ClampedArray, - BigUint64Array, - BigInt64Array -]; - -const ctors = [ - ...builtinCtors, - MyUint8Array, - MyFloat32Array, - MyBigInt64Array -]; - -function CreateResizableArrayBuffer(byteLength, maxByteLength) { - return new ArrayBuffer(byteLength, { maxByteLength: maxByteLength }); -} - -function WriteToTypedArray(array, index, value) { - if (array instanceof BigInt64Array || array instanceof BigUint64Array) { - array[index] = BigInt(value); - } else { - array[index] = value; - } -} - -const TypedArrayForEachHelper = (ta, ...rest) => { - return ta.forEach(...rest); -}; - -const ArrayForEachHelper = (ta, ...rest) => { - return Array.prototype.forEach.call(ta, ...rest); -}; - -const TypedArrayReduceHelper = (ta, ...rest) => { - return ta.reduce(...rest); -}; - -const ArrayReduceHelper = (ta, ...rest) => { - return Array.prototype.reduce.call(ta, ...rest); -}; - -const TypedArrayReduceRightHelper = (ta, ...rest) => { - return ta.reduceRight(...rest); -}; - -const ArrayReduceRightHelper = (ta, ...rest) => { - return Array.prototype.reduceRight.call(ta, ...rest); -}; - -function ForEachReduceReduceRightGrowMidIteration(forEachHelper, reduceHelper, reduceRightHelper) { - // Orig. array: [0, 2, 4, 6] - // [0, 2, 4, 6] << fixedLength - // [4, 6] << fixedLengthWithOffset - // [0, 2, 4, 6, ...] << lengthTracking - // [4, 6, ...] << lengthTrackingWithOffset - function CreateRabForTest(ctor) { - const rab = CreateResizableArrayBuffer(4 * ctor.BYTES_PER_ELEMENT, 8 * ctor.BYTES_PER_ELEMENT); - // Write some data into the array. - const taWrite = new ctor(rab); - for (let i = 0; i < 4; ++i) { - WriteToTypedArray(taWrite, i, 2 * i); - } - return rab; - } - let values; - let rab; - let resizeAfter; - let resizeTo; - function CollectValuesAndResize(n) { - if (typeof n == 'bigint') { - values.push(Number(n)); - } else { - values.push(n); - } - if (values.length == resizeAfter) { - rab.resize(resizeTo); - } - return true; - } - function ForEachHelper(array) { - values = []; - forEachHelper(array, CollectValuesAndResize); - return values; - } - function ReduceHelper(array) { - values = []; - reduceHelper(array, (acc, n) => { - CollectValuesAndResize(n); - }, 'initial value'); - return values; - } - function ReduceRightHelper(array) { - values = []; - reduceRightHelper(array, (acc, n) => { - CollectValuesAndResize(n); - }, 'initial value'); - return values; - } - - // Test for forEach. - - for (let ctor of ctors) { - rab = CreateRabForTest(ctor); - const fixedLength = new ctor(rab, 0, 4); - resizeAfter = 2; - resizeTo = 5 * ctor.BYTES_PER_ELEMENT; - assert.compareArray(ForEachHelper(fixedLength), [ - 0, - 2, - 4, - 6 - ]); - } - for (let ctor of ctors) { - rab = CreateRabForTest(ctor); - const fixedLengthWithOffset = new ctor(rab, 2 * ctor.BYTES_PER_ELEMENT, 2); - resizeAfter = 1; - resizeTo = 5 * ctor.BYTES_PER_ELEMENT; - assert.compareArray(ForEachHelper(fixedLengthWithOffset), [ - 4, - 6 - ]); - } - for (let ctor of ctors) { - rab = CreateRabForTest(ctor); - const lengthTracking = new ctor(rab, 0); - resizeAfter = 2; - resizeTo = 5 * ctor.BYTES_PER_ELEMENT; - assert.compareArray(ForEachHelper(lengthTracking), [ - 0, - 2, - 4, - 6 - ]); - } - for (let ctor of ctors) { - rab = CreateRabForTest(ctor); - const lengthTrackingWithOffset = new ctor(rab, 2 * ctor.BYTES_PER_ELEMENT); - resizeAfter = 1; - resizeTo = 5 * ctor.BYTES_PER_ELEMENT; - assert.compareArray(ForEachHelper(lengthTrackingWithOffset), [ - 4, - 6 - ]); - } - - // Test for reduce. - - for (let ctor of ctors) { - rab = CreateRabForTest(ctor); - const fixedLength = new ctor(rab, 0, 4); - resizeAfter = 2; - resizeTo = 5 * ctor.BYTES_PER_ELEMENT; - assert.compareArray(ReduceHelper(fixedLength), [ - 0, - 2, - 4, - 6 - ]); - } - for (let ctor of ctors) { - rab = CreateRabForTest(ctor); - const fixedLengthWithOffset = new ctor(rab, 2 * ctor.BYTES_PER_ELEMENT, 2); - resizeAfter = 1; - resizeTo = 5 * ctor.BYTES_PER_ELEMENT; - assert.compareArray(ReduceHelper(fixedLengthWithOffset), [ - 4, - 6 - ]); - } - for (let ctor of ctors) { - rab = CreateRabForTest(ctor); - const lengthTracking = new ctor(rab, 0); - resizeAfter = 2; - resizeTo = 5 * ctor.BYTES_PER_ELEMENT; - assert.compareArray(ReduceHelper(lengthTracking), [ - 0, - 2, - 4, - 6 - ]); - } - for (let ctor of ctors) { - rab = CreateRabForTest(ctor); - const lengthTrackingWithOffset = new ctor(rab, 2 * ctor.BYTES_PER_ELEMENT); - resizeAfter = 1; - resizeTo = 5 * ctor.BYTES_PER_ELEMENT; - assert.compareArray(ReduceHelper(lengthTrackingWithOffset), [ - 4, - 6 - ]); - } - - // Test for reduceRight. - - for (let ctor of ctors) { - rab = CreateRabForTest(ctor); - const fixedLength = new ctor(rab, 0, 4); - resizeAfter = 2; - resizeTo = 5 * ctor.BYTES_PER_ELEMENT; - assert.compareArray(ReduceRightHelper(fixedLength), [ - 6, - 4, - 2, - 0 - ]); - } - for (let ctor of ctors) { - rab = CreateRabForTest(ctor); - const fixedLengthWithOffset = new ctor(rab, 2 * ctor.BYTES_PER_ELEMENT, 2); - resizeAfter = 1; - resizeTo = 5 * ctor.BYTES_PER_ELEMENT; - assert.compareArray(ReduceRightHelper(fixedLengthWithOffset), [ - 6, - 4 - ]); - } - for (let ctor of ctors) { - rab = CreateRabForTest(ctor); - const lengthTracking = new ctor(rab, 0); - resizeAfter = 2; - resizeTo = 5 * ctor.BYTES_PER_ELEMENT; - assert.compareArray(ReduceRightHelper(lengthTracking), [ - 6, - 4, - 2, - 0 - ]); - } - for (let ctor of ctors) { - rab = CreateRabForTest(ctor); - const lengthTrackingWithOffset = new ctor(rab, 2 * ctor.BYTES_PER_ELEMENT); - resizeAfter = 1; - resizeTo = 5 * ctor.BYTES_PER_ELEMENT; - assert.compareArray(ReduceRightHelper(lengthTrackingWithOffset), [ - 6, - 4 - ]); - } -} - -ForEachReduceReduceRightGrowMidIteration(TypedArrayForEachHelper, TypedArrayReduceHelper, TypedArrayReduceRightHelper); -ForEachReduceReduceRightGrowMidIteration(ArrayForEachHelper, ArrayReduceHelper, ArrayReduceRightHelper); diff --git a/test/staging/ArrayBuffer/resizable/for-each-reduce-reduce-right-shrink-mid-iteration.js b/test/staging/ArrayBuffer/resizable/for-each-reduce-reduce-right-shrink-mid-iteration.js deleted file mode 100644 index 441c722e9e9..00000000000 --- a/test/staging/ArrayBuffer/resizable/for-each-reduce-reduce-right-shrink-mid-iteration.js +++ /dev/null @@ -1,258 +0,0 @@ -// Copyright 2021 the V8 project authors. All rights reserved. -// This code is governed by the BSD license found in the LICENSE file. - -/*--- -esid: sec-arraybuffer-length -description: > - Automatically ported from ForEachReduceReduceRightShrinkMidIteration test - in V8's mjsunit test typedarray-resizablearraybuffer.js -includes: [compareArray.js] -features: [resizable-arraybuffer] -flags: [onlyStrict] ----*/ - -class MyUint8Array extends Uint8Array { -} - -class MyFloat32Array extends Float32Array { -} - -class MyBigInt64Array extends BigInt64Array { -} - -const builtinCtors = [ - Uint8Array, - Int8Array, - Uint16Array, - Int16Array, - Uint32Array, - Int32Array, - Float32Array, - Float64Array, - Uint8ClampedArray, - BigUint64Array, - BigInt64Array -]; - -const ctors = [ - ...builtinCtors, - MyUint8Array, - MyFloat32Array, - MyBigInt64Array -]; - -function CreateResizableArrayBuffer(byteLength, maxByteLength) { - return new ArrayBuffer(byteLength, { maxByteLength: maxByteLength }); -} - -function WriteToTypedArray(array, index, value) { - if (array instanceof BigInt64Array || array instanceof BigUint64Array) { - array[index] = BigInt(value); - } else { - array[index] = value; - } -} - -// Orig. array: [0, 2, 4, 6] -// [0, 2, 4, 6] << fixedLength -// [4, 6] << fixedLengthWithOffset -// [0, 2, 4, 6, ...] << lengthTracking -// [4, 6, ...] << lengthTrackingWithOffset -function CreateRabForTest(ctor) { - const rab = CreateResizableArrayBuffer(4 * ctor.BYTES_PER_ELEMENT, 8 * ctor.BYTES_PER_ELEMENT); - // Write some data into the array. - const taWrite = new ctor(rab); - for (let i = 0; i < 4; ++i) { - WriteToTypedArray(taWrite, i, 2 * i); - } - return rab; -} -let values; -let rab; -let resizeAfter; -let resizeTo; -function CollectValuesAndResize(n) { - if (typeof n == 'bigint') { - values.push(Number(n)); - } else { - values.push(n); - } - if (values.length == resizeAfter) { - rab.resize(resizeTo); - } - return true; -} -function ForEachHelper(array) { - values = []; - array.forEach(CollectValuesAndResize); - return values; -} -function ReduceHelper(array) { - values = []; - array.reduce((acc, n) => { - CollectValuesAndResize(n); - }, 'initial value'); - return values; -} -function ReduceRightHelper(array) { - values = []; - array.reduceRight((acc, n) => { - CollectValuesAndResize(n); - }, 'initial value'); - return values; -} - -// Test for forEach. - -for (let ctor of ctors) { - rab = CreateRabForTest(ctor); - const fixedLength = new ctor(rab, 0, 4); - resizeAfter = 2; - resizeTo = 3 * ctor.BYTES_PER_ELEMENT; - assert.compareArray(ForEachHelper(fixedLength), [ - 0, - 2, - undefined, - undefined - ]); -} -for (let ctor of ctors) { - rab = CreateRabForTest(ctor); - const fixedLengthWithOffset = new ctor(rab, 2 * ctor.BYTES_PER_ELEMENT, 2); - resizeAfter = 1; - resizeTo = 3 * ctor.BYTES_PER_ELEMENT; - assert.compareArray(ForEachHelper(fixedLengthWithOffset), [ - 4, - undefined - ]); -} -for (let ctor of ctors) { - rab = CreateRabForTest(ctor); - const lengthTracking = new ctor(rab, 0); - resizeAfter = 2; - resizeTo = 3 * ctor.BYTES_PER_ELEMENT; - assert.compareArray(ForEachHelper(lengthTracking), [ - 0, - 2, - 4, - undefined - ]); -} -for (let ctor of ctors) { - rab = CreateRabForTest(ctor); - const lengthTrackingWithOffset = new ctor(rab, 2 * ctor.BYTES_PER_ELEMENT); - resizeAfter = 1; - resizeTo = 3 * ctor.BYTES_PER_ELEMENT; - assert.compareArray(ForEachHelper(lengthTrackingWithOffset), [ - 4, - undefined - ]); -} - -// Tests for reduce. - -for (let ctor of ctors) { - rab = CreateRabForTest(ctor); - const fixedLength = new ctor(rab, 0, 4); - resizeAfter = 2; - resizeTo = 3 * ctor.BYTES_PER_ELEMENT; - assert.compareArray(ReduceHelper(fixedLength), [ - 0, - 2, - undefined, - undefined - ]); -} -for (let ctor of ctors) { - rab = CreateRabForTest(ctor); - const fixedLengthWithOffset = new ctor(rab, 2 * ctor.BYTES_PER_ELEMENT, 2); - resizeAfter = 1; - resizeTo = 3 * ctor.BYTES_PER_ELEMENT; - assert.compareArray(ReduceHelper(fixedLengthWithOffset), [ - 4, - undefined - ]); -} -for (let ctor of ctors) { - rab = CreateRabForTest(ctor); - const lengthTracking = new ctor(rab, 0); - resizeAfter = 2; - resizeTo = 3 * ctor.BYTES_PER_ELEMENT; - assert.compareArray(ReduceHelper(lengthTracking), [ - 0, - 2, - 4, - undefined - ]); -} -for (let ctor of ctors) { - rab = CreateRabForTest(ctor); - const lengthTrackingWithOffset = new ctor(rab, 2 * ctor.BYTES_PER_ELEMENT); - resizeAfter = 1; - resizeTo = 3 * ctor.BYTES_PER_ELEMENT; - assert.compareArray(ReduceHelper(lengthTrackingWithOffset), [ - 4, - undefined - ]); -} - -// Tests for reduceRight. - -for (let ctor of ctors) { - rab = CreateRabForTest(ctor); - const fixedLength = new ctor(rab, 0, 4); - resizeAfter = 2; - resizeTo = 3 * ctor.BYTES_PER_ELEMENT; - assert.compareArray(ReduceRightHelper(fixedLength), [ - 6, - 4, - undefined, - undefined - ]); -} -for (let ctor of ctors) { - rab = CreateRabForTest(ctor); - const fixedLengthWithOffset = new ctor(rab, 2 * ctor.BYTES_PER_ELEMENT, 2); - resizeAfter = 1; - resizeTo = 3 * ctor.BYTES_PER_ELEMENT; - assert.compareArray(ReduceRightHelper(fixedLengthWithOffset), [ - 6, - undefined - ]); -} -for (let ctor of ctors) { - rab = CreateRabForTest(ctor); - const lengthTracking = new ctor(rab, 0); - resizeAfter = 2; - resizeTo = 3 * ctor.BYTES_PER_ELEMENT; - // Unaffected by the shrinking, since we've already iterated past the point. - assert.compareArray(ReduceRightHelper(lengthTracking), [ - 6, - 4, - 2, - 0 - ]); -} -for (let ctor of ctors) { - rab = CreateRabForTest(ctor); - const lengthTracking = new ctor(rab, 0); - resizeAfter = 1; - resizeTo = 2 * ctor.BYTES_PER_ELEMENT; - assert.compareArray(ReduceRightHelper(lengthTracking), [ - 6, - undefined, - 2, - 0 - ]); -} -for (let ctor of ctors) { - rab = CreateRabForTest(ctor); - const lengthTrackingWithOffset = new ctor(rab, 2 * ctor.BYTES_PER_ELEMENT); - resizeAfter = 1; - resizeTo = 3 * ctor.BYTES_PER_ELEMENT; - // Unaffected by the shrinking, since we've already iterated past the point. - assert.compareArray(ReduceRightHelper(lengthTrackingWithOffset), [ - 6, - 4 - ]); -} diff --git a/test/staging/ArrayBuffer/resizable/for-each-reduce-reduce-right.js b/test/staging/ArrayBuffer/resizable/for-each-reduce-reduce-right.js deleted file mode 100644 index 76d737f03c9..00000000000 --- a/test/staging/ArrayBuffer/resizable/for-each-reduce-reduce-right.js +++ /dev/null @@ -1,256 +0,0 @@ -// Copyright 2021 the V8 project authors. All rights reserved. -// This code is governed by the BSD license found in the LICENSE file. - -/*--- -esid: sec-arraybuffer-length -description: > - Automatically ported from ForEachReduceReduceRight test - in V8's mjsunit test typedarray-resizablearraybuffer.js -includes: [compareArray.js] -features: [resizable-arraybuffer] -flags: [onlyStrict] ----*/ - -class MyUint8Array extends Uint8Array { -} - -class MyFloat32Array extends Float32Array { -} - -class MyBigInt64Array extends BigInt64Array { -} - -const builtinCtors = [ - Uint8Array, - Int8Array, - Uint16Array, - Int16Array, - Uint32Array, - Int32Array, - Float32Array, - Float64Array, - Uint8ClampedArray, - BigUint64Array, - BigInt64Array -]; - -const ctors = [ - ...builtinCtors, - MyUint8Array, - MyFloat32Array, - MyBigInt64Array -]; - -function CreateResizableArrayBuffer(byteLength, maxByteLength) { - return new ArrayBuffer(byteLength, { maxByteLength: maxByteLength }); -} - -function WriteToTypedArray(array, index, value) { - if (array instanceof BigInt64Array || array instanceof BigUint64Array) { - array[index] = BigInt(value); - } else { - array[index] = value; - } -} - -function Convert(item) { - if (typeof item == 'bigint') { - return Number(item); - } - return item; -} - -function ToNumbers(array) { - let result = []; - for (let item of array) { - result.push(Convert(item)); - } - return result; -} - -const TypedArrayForEachHelper = (ta, ...rest) => { - return ta.forEach(...rest); -}; - -const ArrayForEachHelper = (ta, ...rest) => { - return Array.prototype.forEach.call(ta, ...rest); -}; - -const TypedArrayReduceHelper = (ta, ...rest) => { - return ta.reduce(...rest); -}; - -const ArrayReduceHelper = (ta, ...rest) => { - return Array.prototype.reduce.call(ta, ...rest); -}; - -const TypedArrayReduceRightHelper = (ta, ...rest) => { - return ta.reduceRight(...rest); -}; - -const ArrayReduceRightHelper = (ta, ...rest) => { - return Array.prototype.reduceRight.call(ta, ...rest); -}; - -function ForEachReduceReduceRight(forEachHelper, reduceHelper, reduceRightHelper, oobThrows) { - for (let ctor of ctors) { - const rab = CreateResizableArrayBuffer(4 * ctor.BYTES_PER_ELEMENT, 8 * ctor.BYTES_PER_ELEMENT); - const fixedLength = new ctor(rab, 0, 4); - const fixedLengthWithOffset = new ctor(rab, 2 * ctor.BYTES_PER_ELEMENT, 2); - const lengthTracking = new ctor(rab, 0); - const lengthTrackingWithOffset = new ctor(rab, 2 * ctor.BYTES_PER_ELEMENT); - - // Write some data into the array. - const taWrite = new ctor(rab); - for (let i = 0; i < 4; ++i) { - WriteToTypedArray(taWrite, i, 2 * i); - } - - // Orig. array: [0, 2, 4, 6] - // [0, 2, 4, 6] << fixedLength - // [4, 6] << fixedLengthWithOffset - // [0, 2, 4, 6, ...] << lengthTracking - // [4, 6, ...] << lengthTrackingWithOffset - - function Helper(array) { - const forEachValues = []; - const reduceValues = []; - const reduceRightValues = []; - forEachHelper(array, n => { - forEachValues.push(n); - }); - reduceHelper(array, (acc, n) => { - reduceValues.push(n); - }, 'initial value'); - reduceRightHelper(array, (acc, n) => { - reduceRightValues.push(n); - }, 'initial value'); - assert.compareArray(forEachValues, reduceValues); - reduceRightValues.reverse(); - assert.compareArray(reduceRightValues, reduceValues); - return ToNumbers(forEachValues); - } - assert.compareArray(Helper(fixedLength), [ - 0, - 2, - 4, - 6 - ]); - assert.compareArray(Helper(fixedLengthWithOffset), [ - 4, - 6 - ]); - assert.compareArray(Helper(lengthTracking), [ - 0, - 2, - 4, - 6 - ]); - assert.compareArray(Helper(lengthTrackingWithOffset), [ - 4, - 6 - ]); - - // Shrink so that fixed length TAs go out of bounds. - rab.resize(3 * ctor.BYTES_PER_ELEMENT); - - // Orig. array: [0, 2, 4] - // [0, 2, 4, ...] << lengthTracking - // [4, ...] << lengthTrackingWithOffset - - if (oobThrows) { - assert.throws(TypeError, () => { - Helper(fixedLength); - }); - assert.throws(TypeError, () => { - Helper(fixedLengthWithOffset); - }); - } else { - assert.compareArray(Helper(fixedLength), []); - assert.compareArray(Helper(fixedLengthWithOffset), []); - } - assert.compareArray(Helper(lengthTracking), [ - 0, - 2, - 4 - ]); - assert.compareArray(Helper(lengthTrackingWithOffset), [4]); - - // Shrink so that the TAs with offset go out of bounds. - rab.resize(1 * ctor.BYTES_PER_ELEMENT); - if (oobThrows) { - assert.throws(TypeError, () => { - Helper(fixedLength); - }); - assert.throws(TypeError, () => { - Helper(fixedLengthWithOffset); - }); - assert.throws(TypeError, () => { - Helper(lengthTrackingWithOffset); - }); - } else { - assert.compareArray(Helper(fixedLength), []); - assert.compareArray(Helper(fixedLengthWithOffset), []); - } - assert.compareArray(Helper(lengthTracking), [0]); - - // Shrink to zero. - rab.resize(0); - if (oobThrows) { - assert.throws(TypeError, () => { - Helper(fixedLength); - }); - assert.throws(TypeError, () => { - Helper(fixedLengthWithOffset); - }); - assert.throws(TypeError, () => { - Helper(lengthTrackingWithOffset); - }); - } else { - assert.compareArray(Helper(fixedLength), []); - assert.compareArray(Helper(fixedLengthWithOffset), []); - assert.compareArray(Helper(lengthTrackingWithOffset), []); - } - assert.compareArray(Helper(lengthTracking), []); - - // Grow so that all TAs are back in-bounds. - rab.resize(6 * ctor.BYTES_PER_ELEMENT); - for (let i = 0; i < 6; ++i) { - WriteToTypedArray(taWrite, i, 2 * i); - } - - // Orig. array: [0, 2, 4, 6, 8, 10] - // [0, 2, 4, 6] << fixedLength - // [4, 6] << fixedLengthWithOffset - // [0, 2, 4, 6, 8, 10, ...] << lengthTracking - // [4, 6, 8, 10, ...] << lengthTrackingWithOffset - - assert.compareArray(Helper(fixedLength), [ - 0, - 2, - 4, - 6 - ]); - assert.compareArray(Helper(fixedLengthWithOffset), [ - 4, - 6 - ]); - assert.compareArray(Helper(lengthTracking), [ - 0, - 2, - 4, - 6, - 8, - 10 - ]); - assert.compareArray(Helper(lengthTrackingWithOffset), [ - 4, - 6, - 8, - 10 - ]); - } -} - -ForEachReduceReduceRight(TypedArrayForEachHelper, TypedArrayReduceHelper, TypedArrayReduceRightHelper, true); -ForEachReduceReduceRight(ArrayForEachHelper, ArrayReduceHelper, ArrayReduceRightHelper, false); diff --git a/test/staging/ArrayBuffer/resizable/includes-parameter-conversion-resizes.js b/test/staging/ArrayBuffer/resizable/includes-parameter-conversion-resizes.js deleted file mode 100644 index 0e9b1beb698..00000000000 --- a/test/staging/ArrayBuffer/resizable/includes-parameter-conversion-resizes.js +++ /dev/null @@ -1,143 +0,0 @@ -// Copyright 2021 the V8 project authors. All rights reserved. -// This code is governed by the BSD license found in the LICENSE file. - -/*--- -esid: sec-arraybuffer-length -description: > - Automatically ported from IncludesParameterConversionResizes test - in V8's mjsunit test typedarray-resizablearraybuffer.js -features: [resizable-arraybuffer, Array.prototype.includes] -flags: [onlyStrict] ----*/ - -class MyUint8Array extends Uint8Array { -} - -class MyFloat32Array extends Float32Array { -} - -class MyBigInt64Array extends BigInt64Array { -} - -const builtinCtors = [ - Uint8Array, - Int8Array, - Uint16Array, - Int16Array, - Uint32Array, - Int32Array, - Float32Array, - Float64Array, - Uint8ClampedArray, - BigUint64Array, - BigInt64Array -]; - -const ctors = [ - ...builtinCtors, - MyUint8Array, - MyFloat32Array, - MyBigInt64Array -]; - -function CreateResizableArrayBuffer(byteLength, maxByteLength) { - return new ArrayBuffer(byteLength, { maxByteLength: maxByteLength }); -} - -function WriteToTypedArray(array, index, value) { - if (array instanceof BigInt64Array || array instanceof BigUint64Array) { - array[index] = BigInt(value); - } else { - array[index] = value; - } -} - -function TypedArrayIncludesHelper(array, n, fromIndex) { - if (typeof n == 'number' && (array instanceof BigInt64Array || array instanceof BigUint64Array)) { - return array.includes(BigInt(n), fromIndex); - } - return array.includes(n, fromIndex); -} - -function ArrayIncludesHelper(array, n, fromIndex) { - if (typeof n == 'number' && (array instanceof BigInt64Array || array instanceof BigUint64Array)) { - return Array.prototype.includes.call(array, BigInt(n), fromIndex); - } - return Array.prototype.includes.call(array, n, fromIndex); -} - -function IncludesParameterConversionResizes(helper) { - for (let ctor of ctors) { - const rab = CreateResizableArrayBuffer(4 * ctor.BYTES_PER_ELEMENT, 8 * ctor.BYTES_PER_ELEMENT); - const fixedLength = new ctor(rab, 0, 4); - let evil = { - valueOf: () => { - rab.resize(2 * ctor.BYTES_PER_ELEMENT); - return 0; - } - }; - assert(!helper(fixedLength, undefined)); - // The TA is OOB so it includes only "undefined". - assert(helper(fixedLength, undefined, evil)); - } - for (let ctor of ctors) { - const rab = CreateResizableArrayBuffer(4 * ctor.BYTES_PER_ELEMENT, 8 * ctor.BYTES_PER_ELEMENT); - const fixedLength = new ctor(rab, 0, 4); - let evil = { - valueOf: () => { - rab.resize(2 * ctor.BYTES_PER_ELEMENT); - return 0; - } - }; - assert(helper(fixedLength, 0)); - // The TA is OOB so it includes only "undefined". - assert(!helper(fixedLength, 0, evil)); - } - for (let ctor of ctors) { - const rab = CreateResizableArrayBuffer(4 * ctor.BYTES_PER_ELEMENT, 8 * ctor.BYTES_PER_ELEMENT); - const lengthTracking = new ctor(rab); - let evil = { - valueOf: () => { - rab.resize(2 * ctor.BYTES_PER_ELEMENT); - return 0; - } - }; - assert(!helper(lengthTracking, undefined)); - // "includes" iterates until the original length and sees "undefined"s. - assert(helper(lengthTracking, undefined, evil)); - } - for (let ctor of ctors) { - const rab = CreateResizableArrayBuffer(4 * ctor.BYTES_PER_ELEMENT, 8 * ctor.BYTES_PER_ELEMENT); - const lengthTracking = new ctor(rab); - for (let i = 0; i < 4; ++i) { - WriteToTypedArray(lengthTracking, i, 1); - } - let evil = { - valueOf: () => { - rab.resize(6 * ctor.BYTES_PER_ELEMENT); - return 0; - } - }; - assert(!helper(lengthTracking, 0)); - // The TA grew but we only look at the data until the original length. - assert(!helper(lengthTracking, 0, evil)); - } - for (let ctor of ctors) { - const rab = CreateResizableArrayBuffer(4 * ctor.BYTES_PER_ELEMENT, 8 * ctor.BYTES_PER_ELEMENT); - const lengthTracking = new ctor(rab); - WriteToTypedArray(lengthTracking, 0, 1); - let evil = { - valueOf: () => { - rab.resize(6 * ctor.BYTES_PER_ELEMENT); - return -4; - } - }; - assert(helper(lengthTracking, 1, -4)); - // The TA grew but the start index conversion is done based on the original - // length. - assert(helper(lengthTracking, 1, evil)); - } -} - -IncludesParameterConversionResizes(TypedArrayIncludesHelper); -IncludesParameterConversionResizes(ArrayIncludesHelper); diff --git a/test/staging/ArrayBuffer/resizable/includes-special-values.js b/test/staging/ArrayBuffer/resizable/includes-special-values.js deleted file mode 100644 index 5e3551e8afd..00000000000 --- a/test/staging/ArrayBuffer/resizable/includes-special-values.js +++ /dev/null @@ -1,35 +0,0 @@ -// Copyright 2021 the V8 project authors. All rights reserved. -// This code is governed by the BSD license found in the LICENSE file. - -/*--- -esid: sec-arraybuffer-length -description: > - Automatically ported from IncludesSpecialValues test - in V8's mjsunit test typedarray-resizablearraybuffer.js -features: [resizable-arraybuffer] -flags: [onlyStrict] ----*/ - -class MyFloat32Array extends Float32Array { -} - -const floatCtors = [ - Float32Array, - Float64Array, - MyFloat32Array -]; - -function CreateResizableArrayBuffer(byteLength, maxByteLength) { - return new ArrayBuffer(byteLength, { maxByteLength: maxByteLength }); -} - -for (let ctor of floatCtors) { - const rab = CreateResizableArrayBuffer(4 * ctor.BYTES_PER_ELEMENT, 8 * ctor.BYTES_PER_ELEMENT); - const lengthTracking = new ctor(rab); - lengthTracking[0] = -Infinity; - lengthTracking[1] = Infinity; - lengthTracking[2] = NaN; - assert(lengthTracking.includes(-Infinity)); - assert(lengthTracking.includes(Infinity)); - assert(lengthTracking.includes(NaN)); -} diff --git a/test/staging/ArrayBuffer/resizable/includes.js b/test/staging/ArrayBuffer/resizable/includes.js deleted file mode 100644 index a33c7ca29af..00000000000 --- a/test/staging/ArrayBuffer/resizable/includes.js +++ /dev/null @@ -1,208 +0,0 @@ -// Copyright 2021 the V8 project authors. All rights reserved. -// This code is governed by the BSD license found in the LICENSE file. - -/*--- -esid: sec-arraybuffer-length -description: > - Automatically ported from Includes test - in V8's mjsunit test typedarray-resizablearraybuffer.js -features: [resizable-arraybuffer, Array.prototype.includes] -flags: [onlyStrict] ----*/ - -class MyUint8Array extends Uint8Array { -} - -class MyFloat32Array extends Float32Array { -} - -class MyBigInt64Array extends BigInt64Array { -} - -const builtinCtors = [ - Uint8Array, - Int8Array, - Uint16Array, - Int16Array, - Uint32Array, - Int32Array, - Float32Array, - Float64Array, - Uint8ClampedArray, - BigUint64Array, - BigInt64Array -]; - -const ctors = [ - ...builtinCtors, - MyUint8Array, - MyFloat32Array, - MyBigInt64Array -]; - -function CreateResizableArrayBuffer(byteLength, maxByteLength) { - return new ArrayBuffer(byteLength, { maxByteLength: maxByteLength }); -} - -function WriteToTypedArray(array, index, value) { - if (array instanceof BigInt64Array || array instanceof BigUint64Array) { - array[index] = BigInt(value); - } else { - array[index] = value; - } -} - -function TypedArrayIncludesHelper(array, n, fromIndex) { - if (typeof n == 'number' && (array instanceof BigInt64Array || array instanceof BigUint64Array)) { - return array.includes(BigInt(n), fromIndex); - } - return array.includes(n, fromIndex); -} - -function ArrayIncludesHelper(array, n, fromIndex) { - if (typeof n == 'number' && (array instanceof BigInt64Array || array instanceof BigUint64Array)) { - return Array.prototype.includes.call(array, BigInt(n), fromIndex); - } - return Array.prototype.includes.call(array, n, fromIndex); -} - -function Includes(helper, oobThrows) { - for (let ctor of ctors) { - const rab = CreateResizableArrayBuffer(4 * ctor.BYTES_PER_ELEMENT, 8 * ctor.BYTES_PER_ELEMENT); - const fixedLength = new ctor(rab, 0, 4); - const fixedLengthWithOffset = new ctor(rab, 2 * ctor.BYTES_PER_ELEMENT, 2); - const lengthTracking = new ctor(rab, 0); - const lengthTrackingWithOffset = new ctor(rab, 2 * ctor.BYTES_PER_ELEMENT); - - // Write some data into the array. - const taWrite = new ctor(rab); - for (let i = 0; i < 4; ++i) { - WriteToTypedArray(taWrite, i, 2 * i); - } - - // Orig. array: [0, 2, 4, 6] - // [0, 2, 4, 6] << fixedLength - // [4, 6] << fixedLengthWithOffset - // [0, 2, 4, 6, ...] << lengthTracking - // [4, 6, ...] << lengthTrackingWithOffset - - assert(helper(fixedLength, 2)); - assert(!helper(fixedLength, undefined)); - assert(helper(fixedLength, 2, 1)); - assert(!helper(fixedLength, 2, 2)); - assert(helper(fixedLength, 2, -3)); - assert(!helper(fixedLength, 2, -2)); - assert(!helper(fixedLengthWithOffset, 2)); - assert(helper(fixedLengthWithOffset, 4)); - assert(!helper(fixedLengthWithOffset, undefined)); - assert(helper(fixedLengthWithOffset, 4, 0)); - assert(!helper(fixedLengthWithOffset, 4, 1)); - assert(helper(fixedLengthWithOffset, 4, -2)); - assert(!helper(fixedLengthWithOffset, 4, -1)); - assert(helper(lengthTracking, 2)); - assert(!helper(lengthTracking, undefined)); - assert(helper(lengthTracking, 2, 1)); - assert(!helper(lengthTracking, 2, 2)); - assert(helper(lengthTracking, 2, -3)); - assert(!helper(lengthTracking, 2, -2)); - assert(!helper(lengthTrackingWithOffset, 2)); - assert(helper(lengthTrackingWithOffset, 4)); - assert(!helper(lengthTrackingWithOffset, undefined)); - assert(helper(lengthTrackingWithOffset, 4, 0)); - assert(!helper(lengthTrackingWithOffset, 4, 1)); - assert(helper(lengthTrackingWithOffset, 4, -2)); - assert(!helper(lengthTrackingWithOffset, 4, -1)); - - // Shrink so that fixed length TAs go out of bounds. - rab.resize(3 * ctor.BYTES_PER_ELEMENT); - - // Orig. array: [0, 2, 4] - // [0, 2, 4, ...] << lengthTracking - // [4, ...] << lengthTrackingWithOffset - - if (oobThrows) { - assert.throws(TypeError, () => { - helper(fixedLength, 2); - }); - assert.throws(TypeError, () => { - helper(fixedLengthWithOffset, 2); - }); - } else { - assert(!helper(fixedLength, 2)); - assert(!helper(fixedLengthWithOffset, 2)); - } - assert(helper(lengthTracking, 2)); - assert(!helper(lengthTracking, undefined)); - assert(!helper(lengthTrackingWithOffset, 2)); - assert(helper(lengthTrackingWithOffset, 4)); - assert(!helper(lengthTrackingWithOffset, undefined)); - - // Shrink so that the TAs with offset go out of bounds. - rab.resize(1 * ctor.BYTES_PER_ELEMENT); - if (oobThrows) { - assert.throws(TypeError, () => { - helper(fixedLength, 2); - }); - assert.throws(TypeError, () => { - helper(fixedLengthWithOffset, 2); - }); - assert.throws(TypeError, () => { - helper(lengthTrackingWithOffset, 2); - }); - } else { - assert(!helper(fixedLength, 2)); - assert(!helper(fixedLengthWithOffset, 2)); - assert(!helper(lengthTrackingWithOffset, 2)); - } - - // Shrink to zero. - rab.resize(0); - if (oobThrows) { - assert.throws(TypeError, () => { - helper(fixedLength, 2); - }); - assert.throws(TypeError, () => { - helper(fixedLengthWithOffset, 2); - }); - assert.throws(TypeError, () => { - helper(lengthTrackingWithOffset, 2); - }); - } else { - assert(!helper(fixedLength, 2)); - assert(!helper(fixedLengthWithOffset, 2)); - assert(!helper(lengthTrackingWithOffset, 2)); - } - assert(!helper(lengthTracking, 2)); - assert(!helper(lengthTracking, undefined)); - - // Grow so that all TAs are back in-bounds. - rab.resize(6 * ctor.BYTES_PER_ELEMENT); - for (let i = 0; i < 6; ++i) { - WriteToTypedArray(taWrite, i, 2 * i); - } - - // Orig. array: [0, 2, 4, 6, 8, 10] - // [0, 2, 4, 6] << fixedLength - // [4, 6] << fixedLengthWithOffset - // [0, 2, 4, 6, 8, 10, ...] << lengthTracking - // [4, 6, 8, 10, ...] << lengthTrackingWithOffset - - assert(helper(fixedLength, 2)); - assert(!helper(fixedLength, undefined)); - assert(!helper(fixedLength, 8)); - assert(!helper(fixedLengthWithOffset, 2)); - assert(helper(fixedLengthWithOffset, 4)); - assert(!helper(fixedLengthWithOffset, undefined)); - assert(!helper(fixedLengthWithOffset, 8)); - assert(helper(lengthTracking, 2)); - assert(!helper(lengthTracking, undefined)); - assert(helper(lengthTracking, 8)); - assert(!helper(lengthTrackingWithOffset, 2)); - assert(helper(lengthTrackingWithOffset, 4)); - assert(!helper(lengthTrackingWithOffset, undefined)); - assert(helper(lengthTrackingWithOffset, 8)); - } -} - -Includes(TypedArrayIncludesHelper, true); -Includes(ArrayIncludesHelper, false); diff --git a/test/staging/ArrayBuffer/resizable/index-of-last-index-of-special-values.js b/test/staging/ArrayBuffer/resizable/index-of-last-index-of-special-values.js deleted file mode 100644 index 6b9350a4a45..00000000000 --- a/test/staging/ArrayBuffer/resizable/index-of-last-index-of-special-values.js +++ /dev/null @@ -1,42 +0,0 @@ -// Copyright 2021 the V8 project authors. All rights reserved. -// This code is governed by the BSD license found in the LICENSE file. - -/*--- -esid: sec-arraybuffer-length -description: > - Automatically ported from IndexOfLastIndexOfSpecialValues test - in V8's mjsunit test typedarray-resizablearraybuffer.js -features: [resizable-arraybuffer] -flags: [onlyStrict] ----*/ - -class MyFloat32Array extends Float32Array { -} - -const floatCtors = [ - Float32Array, - Float64Array, - MyFloat32Array -]; - -function CreateResizableArrayBuffer(byteLength, maxByteLength) { - return new ArrayBuffer(byteLength, { maxByteLength: maxByteLength }); -} - -for (let ctor of floatCtors) { - const rab = CreateResizableArrayBuffer(4 * ctor.BYTES_PER_ELEMENT, 8 * ctor.BYTES_PER_ELEMENT); - const lengthTracking = new ctor(rab); - lengthTracking[0] = -Infinity; - lengthTracking[1] = -Infinity; - lengthTracking[2] = Infinity; - lengthTracking[3] = Infinity; - lengthTracking[4] = NaN; - lengthTracking[5] = NaN; - assert.sameValue(lengthTracking.indexOf(-Infinity), 0); - assert.sameValue(lengthTracking.lastIndexOf(-Infinity), 1); - assert.sameValue(lengthTracking.indexOf(Infinity), 2); - assert.sameValue(lengthTracking.lastIndexOf(Infinity), 3); - // NaN is never found. - assert.sameValue(lengthTracking.indexOf(NaN), -1); - assert.sameValue(lengthTracking.lastIndexOf(NaN), -1); -} diff --git a/test/staging/ArrayBuffer/resizable/index-of-last-index-of.js b/test/staging/ArrayBuffer/resizable/index-of-last-index-of.js deleted file mode 100644 index bf216a74716..00000000000 --- a/test/staging/ArrayBuffer/resizable/index-of-last-index-of.js +++ /dev/null @@ -1,325 +0,0 @@ -// Copyright 2021 the V8 project authors. All rights reserved. -// This code is governed by the BSD license found in the LICENSE file. - -/*--- -esid: sec-arraybuffer-length -description: > - Automatically ported from IndexOfLastIndexOf test - in V8's mjsunit test typedarray-resizablearraybuffer.js -features: [resizable-arraybuffer] -flags: [onlyStrict] ----*/ - -class MyUint8Array extends Uint8Array { -} - -class MyFloat32Array extends Float32Array { -} - -class MyBigInt64Array extends BigInt64Array { -} - -const builtinCtors = [ - Uint8Array, - Int8Array, - Uint16Array, - Int16Array, - Uint32Array, - Int32Array, - Float32Array, - Float64Array, - Uint8ClampedArray, - BigUint64Array, - BigInt64Array -]; - -const ctors = [ - ...builtinCtors, - MyUint8Array, - MyFloat32Array, - MyBigInt64Array -]; - -function CreateResizableArrayBuffer(byteLength, maxByteLength) { - return new ArrayBuffer(byteLength, { maxByteLength: maxByteLength }); -} - -function WriteToTypedArray(array, index, value) { - if (array instanceof BigInt64Array || array instanceof BigUint64Array) { - array[index] = BigInt(value); - } else { - array[index] = value; - } -} - -function TypedArrayIndexOfHelper(ta, n, fromIndex) { - if (typeof n == 'number' && (ta instanceof BigInt64Array || ta instanceof BigUint64Array)) { - if (fromIndex == undefined) { - return ta.indexOf(BigInt(n)); - } - return ta.indexOf(BigInt(n), fromIndex); - } - if (fromIndex == undefined) { - return ta.indexOf(n); - } - return ta.indexOf(n, fromIndex); -} - -function ArrayIndexOfHelper(ta, n, fromIndex) { - if (typeof n == 'number' && (ta instanceof BigInt64Array || ta instanceof BigUint64Array)) { - if (fromIndex == undefined) { - return Array.prototype.indexOf.call(ta, BigInt(n)); - } - return Array.prototype.indexOf.call(ta, BigInt(n), fromIndex); - } - if (fromIndex == undefined) { - return Array.prototype.indexOf.call(ta, n); - } - return Array.prototype.indexOf.call(ta, n, fromIndex); -} - -function TypedArrayLastIndexOfHelper(ta, n, fromIndex) { - if (typeof n == 'number' && (ta instanceof BigInt64Array || ta instanceof BigUint64Array)) { - if (fromIndex == undefined) { - return ta.lastIndexOf(BigInt(n)); - } - return ta.lastIndexOf(BigInt(n), fromIndex); - } - if (fromIndex == undefined) { - return ta.lastIndexOf(n); - } - return ta.lastIndexOf(n, fromIndex); -} - -function ArrayLastIndexOfHelper(ta, n, fromIndex) { - if (typeof n == 'number' && (ta instanceof BigInt64Array || ta instanceof BigUint64Array)) { - if (fromIndex == undefined) { - return Array.prototype.lastIndexOf.call(ta, BigInt(n)); - } - return Array.prototype.lastIndexOf.call(ta, BigInt(n), fromIndex); - } - if (fromIndex == undefined) { - return Array.prototype.lastIndexOf.call(ta, n); - } - return Array.prototype.lastIndexOf.call(ta, n, fromIndex); -} - -function IndexOfLastIndexOf(indexOfHelper, lastIndexOfHelper, oobThrows) { - for (let ctor of ctors) { - const rab = CreateResizableArrayBuffer(4 * ctor.BYTES_PER_ELEMENT, 8 * ctor.BYTES_PER_ELEMENT); - const fixedLength = new ctor(rab, 0, 4); - const fixedLengthWithOffset = new ctor(rab, 2 * ctor.BYTES_PER_ELEMENT, 2); - const lengthTracking = new ctor(rab, 0); - const lengthTrackingWithOffset = new ctor(rab, 2 * ctor.BYTES_PER_ELEMENT); - - // Write some data into the array. - const taWrite = new ctor(rab); - for (let i = 0; i < 4; ++i) { - WriteToTypedArray(taWrite, i, Math.floor(i / 2)); - } - - // Orig. array: [0, 0, 1, 1] - // [0, 0, 1, 1] << fixedLength - // [1, 1] << fixedLengthWithOffset - // [0, 0, 1, 1, ...] << lengthTracking - // [1, 1, ...] << lengthTrackingWithOffset - - assert.sameValue(indexOfHelper(fixedLength, 0), 0); - assert.sameValue(indexOfHelper(fixedLength, 0, 1), 1); - assert.sameValue(indexOfHelper(fixedLength, 0, 2), -1); - assert.sameValue(indexOfHelper(fixedLength, 0, -2), -1); - assert.sameValue(indexOfHelper(fixedLength, 0, -3), 1); - assert.sameValue(indexOfHelper(fixedLength, 1, 1), 2); - assert.sameValue(indexOfHelper(fixedLength, 1, -3), 2); - assert.sameValue(indexOfHelper(fixedLength, 1, -2), 2); - assert.sameValue(indexOfHelper(fixedLength, undefined), -1); - assert.sameValue(lastIndexOfHelper(fixedLength, 0), 1); - assert.sameValue(lastIndexOfHelper(fixedLength, 0, 1), 1); - assert.sameValue(lastIndexOfHelper(fixedLength, 0, 2), 1); - assert.sameValue(lastIndexOfHelper(fixedLength, 0, -2), 1); - assert.sameValue(lastIndexOfHelper(fixedLength, 0, -3), 1); - assert.sameValue(lastIndexOfHelper(fixedLength, 1, 1), -1); - assert.sameValue(lastIndexOfHelper(fixedLength, 1, -2), 2); - assert.sameValue(lastIndexOfHelper(fixedLength, 1, -3), -1); - assert.sameValue(lastIndexOfHelper(fixedLength, undefined), -1); - assert.sameValue(indexOfHelper(fixedLengthWithOffset, 0), -1); - assert.sameValue(indexOfHelper(fixedLengthWithOffset, 1), 0); - assert.sameValue(indexOfHelper(fixedLengthWithOffset, 1, -2), 0); - assert.sameValue(indexOfHelper(fixedLengthWithOffset, 1, -1), 1); - assert.sameValue(indexOfHelper(fixedLengthWithOffset, undefined), -1); - assert.sameValue(lastIndexOfHelper(fixedLengthWithOffset, 0), -1); - assert.sameValue(lastIndexOfHelper(fixedLengthWithOffset, 1), 1); - assert.sameValue(lastIndexOfHelper(fixedLengthWithOffset, 1, -2), 0); - assert.sameValue(lastIndexOfHelper(fixedLengthWithOffset, 1, -1), 1); - assert.sameValue(lastIndexOfHelper(fixedLengthWithOffset, undefined), -1); - assert.sameValue(indexOfHelper(lengthTracking, 0), 0); - assert.sameValue(indexOfHelper(lengthTracking, 0, 2), -1); - assert.sameValue(indexOfHelper(lengthTracking, 1, -3), 2); - assert.sameValue(indexOfHelper(lengthTracking, undefined), -1); - assert.sameValue(lastIndexOfHelper(lengthTracking, 0), 1); - assert.sameValue(lastIndexOfHelper(lengthTracking, 0, 2), 1); - assert.sameValue(lastIndexOfHelper(lengthTracking, 0, -3), 1); - assert.sameValue(lastIndexOfHelper(lengthTracking, 1, 1), -1); - assert.sameValue(lastIndexOfHelper(lengthTracking, 1, 2), 2); - assert.sameValue(lastIndexOfHelper(lengthTracking, 1, -3), -1); - assert.sameValue(lastIndexOfHelper(lengthTracking, undefined), -1); - assert.sameValue(indexOfHelper(lengthTrackingWithOffset, 0), -1); - assert.sameValue(indexOfHelper(lengthTrackingWithOffset, 1), 0); - assert.sameValue(indexOfHelper(lengthTrackingWithOffset, 1, 1), 1); - assert.sameValue(indexOfHelper(lengthTrackingWithOffset, 1, -2), 0); - assert.sameValue(indexOfHelper(lengthTrackingWithOffset, undefined), -1); - assert.sameValue(lastIndexOfHelper(lengthTrackingWithOffset, 0), -1); - assert.sameValue(lastIndexOfHelper(lengthTrackingWithOffset, 1), 1); - assert.sameValue(lastIndexOfHelper(lengthTrackingWithOffset, 1, 1), 1); - assert.sameValue(lastIndexOfHelper(lengthTrackingWithOffset, 1, -2), 0); - assert.sameValue(lastIndexOfHelper(lengthTrackingWithOffset, 1, -1), 1); - assert.sameValue(lastIndexOfHelper(lengthTrackingWithOffset, undefined), -1); - - // Shrink so that fixed length TAs go out of bounds. - rab.resize(3 * ctor.BYTES_PER_ELEMENT); - - // Orig. array: [0, 0, 1] - // [0, 0, 1, ...] << lengthTracking - // [1, ...] << lengthTrackingWithOffset - - if (oobThrows) { - assert.throws(TypeError, () => { - indexOfHelper(fixedLength, 1); - }); - assert.throws(TypeError, () => { - indexOfHelper(fixedLengthWithOffset, 1); - }); - assert.throws(TypeError, () => { - lastIndexOfHelper(fixedLength, 1); - }); - assert.throws(TypeError, () => { - lastIndexOfHelper(fixedLengthWithOffset, 1); - }); - } else { - assert.sameValue(indexOfHelper(fixedLength, 1), -1); - assert.sameValue(indexOfHelper(fixedLengthWithOffset, 1), -1); - assert.sameValue(lastIndexOfHelper(fixedLength, 1), -1); - assert.sameValue(lastIndexOfHelper(fixedLengthWithOffset, 1), -1); - } - assert.sameValue(indexOfHelper(lengthTracking, 1), 2); - assert.sameValue(indexOfHelper(lengthTracking, undefined), -1); - assert.sameValue(lastIndexOfHelper(lengthTracking, 0), 1); - assert.sameValue(lastIndexOfHelper(lengthTracking, undefined), -1); - assert.sameValue(indexOfHelper(lengthTrackingWithOffset, 0), -1); - assert.sameValue(indexOfHelper(lengthTrackingWithOffset, 1), 0); - assert.sameValue(indexOfHelper(lengthTrackingWithOffset, undefined), -1); - assert.sameValue(lastIndexOfHelper(lengthTrackingWithOffset, 0), -1); - assert.sameValue(lastIndexOfHelper(lengthTrackingWithOffset, 1), 0); - assert.sameValue(lastIndexOfHelper(lengthTrackingWithOffset, undefined), -1); - - // Shrink so that the TAs with offset go out of bounds. - rab.resize(1 * ctor.BYTES_PER_ELEMENT); - if (oobThrows) { - assert.throws(TypeError, () => { - indexOfHelper(fixedLength, 0); - }); - assert.throws(TypeError, () => { - indexOfHelper(fixedLengthWithOffset, 0); - }); - assert.throws(TypeError, () => { - indexOfHelper(lengthTrackingWithOffset, 0); - }); - assert.throws(TypeError, () => { - lastIndexOfHelper(fixedLength, 0); - }); - assert.throws(TypeError, () => { - lastIndexOfHelper(fixedLengthWithOffset, 0); - }); - assert.throws(TypeError, () => { - lastIndexOfHelper(lengthTrackingWithOffset, 0); - }); - } else { - assert.sameValue(indexOfHelper(fixedLength, 0), -1); - assert.sameValue(indexOfHelper(fixedLengthWithOffset, 0), -1); - assert.sameValue(indexOfHelper(lengthTrackingWithOffset, 0), -1); - assert.sameValue(lastIndexOfHelper(fixedLength, 0), -1); - assert.sameValue(lastIndexOfHelper(fixedLengthWithOffset, 0), -1); - assert.sameValue(lastIndexOfHelper(lengthTrackingWithOffset, 0), -1); - } - assert.sameValue(indexOfHelper(lengthTracking, 0), 0); - assert.sameValue(lastIndexOfHelper(lengthTracking, 0), 0); - - // Shrink to zero. - rab.resize(0); - if (oobThrows) { - assert.throws(TypeError, () => { - indexOfHelper(fixedLength, 0); - }); - assert.throws(TypeError, () => { - indexOfHelper(fixedLengthWithOffset, 0); - }); - assert.throws(TypeError, () => { - indexOfHelper(lengthTrackingWithOffset, 0); - }); - assert.throws(TypeError, () => { - lastIndexOfHelper(fixedLength, 0); - }); - assert.throws(TypeError, () => { - lastIndexOfHelper(fixedLengthWithOffset, 0); - }); - assert.throws(TypeError, () => { - lastIndexOfHelper(lengthTrackingWithOffset, 0); - }); - } else { - assert.sameValue(indexOfHelper(fixedLength, 0), -1); - assert.sameValue(indexOfHelper(fixedLengthWithOffset, 0), -1); - assert.sameValue(indexOfHelper(lengthTrackingWithOffset, 0), -1); - assert.sameValue(lastIndexOfHelper(fixedLength, 0), -1); - assert.sameValue(lastIndexOfHelper(fixedLengthWithOffset, 0), -1); - assert.sameValue(lastIndexOfHelper(lengthTrackingWithOffset, 0), -1); - } - assert.sameValue(indexOfHelper(lengthTracking, 0), -1); - assert.sameValue(indexOfHelper(lengthTracking, undefined), -1); - assert.sameValue(lastIndexOfHelper(lengthTracking, 0), -1); - assert.sameValue(lastIndexOfHelper(lengthTracking, undefined), -1); - - // Grow so that all TAs are back in-bounds. - rab.resize(6 * ctor.BYTES_PER_ELEMENT); - for (let i = 0; i < 6; ++i) { - WriteToTypedArray(taWrite, i, Math.floor(i / 2)); - } - - // Orig. array: [0, 0, 1, 1, 2, 2] - // [0, 0, 1, 1] << fixedLength - // [1, 1] << fixedLengthWithOffset - // [0, 0, 1, 1, 2, 2, ...] << lengthTracking - // [1, 1, 2, 2, ...] << lengthTrackingWithOffset - - assert.sameValue(indexOfHelper(fixedLength, 1), 2); - assert.sameValue(indexOfHelper(fixedLength, 2), -1); - assert.sameValue(indexOfHelper(fixedLength, undefined), -1); - assert.sameValue(lastIndexOfHelper(fixedLength, 1), 3); - assert.sameValue(lastIndexOfHelper(fixedLength, 2), -1); - assert.sameValue(lastIndexOfHelper(fixedLength, undefined), -1); - assert.sameValue(indexOfHelper(fixedLengthWithOffset, 0), -1); - assert.sameValue(indexOfHelper(fixedLengthWithOffset, 1), 0); - assert.sameValue(indexOfHelper(fixedLengthWithOffset, 2), -1); - assert.sameValue(indexOfHelper(fixedLengthWithOffset, undefined), -1); - assert.sameValue(lastIndexOfHelper(fixedLengthWithOffset, 0), -1); - assert.sameValue(lastIndexOfHelper(fixedLengthWithOffset, 1), 1); - assert.sameValue(lastIndexOfHelper(fixedLengthWithOffset, 2), -1); - assert.sameValue(lastIndexOfHelper(fixedLengthWithOffset, undefined), -1); - assert.sameValue(indexOfHelper(lengthTracking, 1), 2); - assert.sameValue(indexOfHelper(lengthTracking, 2), 4); - assert.sameValue(indexOfHelper(lengthTracking, undefined), -1); - assert.sameValue(lastIndexOfHelper(lengthTracking, 1), 3); - assert.sameValue(lastIndexOfHelper(lengthTracking, 2), 5); - assert.sameValue(lastIndexOfHelper(lengthTracking, undefined), -1); - assert.sameValue(indexOfHelper(lengthTrackingWithOffset, 0), -1); - assert.sameValue(indexOfHelper(lengthTrackingWithOffset, 1), 0); - assert.sameValue(indexOfHelper(lengthTrackingWithOffset, 2), 2); - assert.sameValue(indexOfHelper(lengthTrackingWithOffset, undefined), -1); - assert.sameValue(lastIndexOfHelper(lengthTrackingWithOffset, 0), -1); - assert.sameValue(lastIndexOfHelper(lengthTrackingWithOffset, 1), 1); - assert.sameValue(lastIndexOfHelper(lengthTrackingWithOffset, 2), 3); - assert.sameValue(lastIndexOfHelper(lengthTrackingWithOffset, undefined), -1); - } -} - -IndexOfLastIndexOf(TypedArrayIndexOfHelper, TypedArrayLastIndexOfHelper, true); -IndexOfLastIndexOf(ArrayIndexOfHelper, ArrayLastIndexOfHelper, false); diff --git a/test/staging/ArrayBuffer/resizable/index-of-parameter-conversion-grows.js b/test/staging/ArrayBuffer/resizable/index-of-parameter-conversion-grows.js deleted file mode 100644 index dce585509ac..00000000000 --- a/test/staging/ArrayBuffer/resizable/index-of-parameter-conversion-grows.js +++ /dev/null @@ -1,119 +0,0 @@ -// Copyright 2021 the V8 project authors. All rights reserved. -// This code is governed by the BSD license found in the LICENSE file. - -/*--- -esid: sec-arraybuffer-length -description: > - Automatically ported from IndexOfParameterConversionGrows test - in V8's mjsunit test typedarray-resizablearraybuffer.js -features: [resizable-arraybuffer] -flags: [onlyStrict] ----*/ - -class MyUint8Array extends Uint8Array { -} - -class MyFloat32Array extends Float32Array { -} - -class MyBigInt64Array extends BigInt64Array { -} - -const builtinCtors = [ - Uint8Array, - Int8Array, - Uint16Array, - Int16Array, - Uint32Array, - Int32Array, - Float32Array, - Float64Array, - Uint8ClampedArray, - BigUint64Array, - BigInt64Array -]; - -const ctors = [ - ...builtinCtors, - MyUint8Array, - MyFloat32Array, - MyBigInt64Array -]; - -function CreateResizableArrayBuffer(byteLength, maxByteLength) { - return new ArrayBuffer(byteLength, { maxByteLength: maxByteLength }); -} - -function WriteToTypedArray(array, index, value) { - if (array instanceof BigInt64Array || array instanceof BigUint64Array) { - array[index] = BigInt(value); - } else { - array[index] = value; - } -} - -function TypedArrayIndexOfHelper(ta, n, fromIndex) { - if (typeof n == 'number' && (ta instanceof BigInt64Array || ta instanceof BigUint64Array)) { - if (fromIndex == undefined) { - return ta.indexOf(BigInt(n)); - } - return ta.indexOf(BigInt(n), fromIndex); - } - if (fromIndex == undefined) { - return ta.indexOf(n); - } - return ta.indexOf(n, fromIndex); -} - -function ArrayIndexOfHelper(ta, n, fromIndex) { - if (typeof n == 'number' && (ta instanceof BigInt64Array || ta instanceof BigUint64Array)) { - if (fromIndex == undefined) { - return Array.prototype.indexOf.call(ta, BigInt(n)); - } - return Array.prototype.indexOf.call(ta, BigInt(n), fromIndex); - } - if (fromIndex == undefined) { - return Array.prototype.indexOf.call(ta, n); - } - return Array.prototype.indexOf.call(ta, n, fromIndex); -} - -function IndexOfParameterConversionGrows(indexOfHelper) { - // Growing + length-tracking TA. - for (let ctor of ctors) { - const rab = CreateResizableArrayBuffer(4 * ctor.BYTES_PER_ELEMENT, 8 * ctor.BYTES_PER_ELEMENT); - const lengthTracking = new ctor(rab); - for (let i = 0; i < 4; ++i) { - WriteToTypedArray(lengthTracking, i, 1); - } - let evil = { - valueOf: () => { - rab.resize(6 * ctor.BYTES_PER_ELEMENT); - return 0; - } - }; - assert.sameValue(indexOfHelper(lengthTracking, 0), -1); - // The TA grew but we only look at the data until the original length. - assert.sameValue(indexOfHelper(lengthTracking, 0, evil), -1); - } - - // Growing + length-tracking TA, index conversion. - for (let ctor of ctors) { - const rab = CreateResizableArrayBuffer(4 * ctor.BYTES_PER_ELEMENT, 8 * ctor.BYTES_PER_ELEMENT); - const lengthTracking = new ctor(rab); - WriteToTypedArray(lengthTracking, 0, 1); - let evil = { - valueOf: () => { - rab.resize(6 * ctor.BYTES_PER_ELEMENT); - return -4; - } - }; - assert.sameValue(indexOfHelper(lengthTracking, 1, -4), 0); - // The TA grew but the start index conversion is done based on the original - // length. - assert.sameValue(indexOfHelper(lengthTracking, 1, evil), 0); - } -} - -IndexOfParameterConversionGrows(TypedArrayIndexOfHelper); -IndexOfParameterConversionGrows(ArrayIndexOfHelper); diff --git a/test/staging/ArrayBuffer/resizable/index-of-parameter-conversion-shrinks.js b/test/staging/ArrayBuffer/resizable/index-of-parameter-conversion-shrinks.js deleted file mode 100644 index 59f38781620..00000000000 --- a/test/staging/ArrayBuffer/resizable/index-of-parameter-conversion-shrinks.js +++ /dev/null @@ -1,130 +0,0 @@ -// Copyright 2021 the V8 project authors. All rights reserved. -// This code is governed by the BSD license found in the LICENSE file. - -/*--- -esid: sec-arraybuffer-length -description: > - Automatically ported from IndexOfParameterConversionShrinks test - in V8's mjsunit test typedarray-resizablearraybuffer.js -features: [resizable-arraybuffer] -flags: [onlyStrict] ----*/ - -class MyUint8Array extends Uint8Array { -} - -class MyFloat32Array extends Float32Array { -} - -class MyBigInt64Array extends BigInt64Array { -} - -const builtinCtors = [ - Uint8Array, - Int8Array, - Uint16Array, - Int16Array, - Uint32Array, - Int32Array, - Float32Array, - Float64Array, - Uint8ClampedArray, - BigUint64Array, - BigInt64Array -]; - -const ctors = [ - ...builtinCtors, - MyUint8Array, - MyFloat32Array, - MyBigInt64Array -]; - -function CreateResizableArrayBuffer(byteLength, maxByteLength) { - return new ArrayBuffer(byteLength, { maxByteLength: maxByteLength }); -} - -function WriteToTypedArray(array, index, value) { - if (array instanceof BigInt64Array || array instanceof BigUint64Array) { - array[index] = BigInt(value); - } else { - array[index] = value; - } -} - -function TypedArrayIndexOfHelper(ta, n, fromIndex) { - if (typeof n == 'number' && (ta instanceof BigInt64Array || ta instanceof BigUint64Array)) { - if (fromIndex == undefined) { - return ta.indexOf(BigInt(n)); - } - return ta.indexOf(BigInt(n), fromIndex); - } - if (fromIndex == undefined) { - return ta.indexOf(n); - } - return ta.indexOf(n, fromIndex); -} - -function ArrayIndexOfHelper(ta, n, fromIndex) { - if (typeof n == 'number' && (ta instanceof BigInt64Array || ta instanceof BigUint64Array)) { - if (fromIndex == undefined) { - return Array.prototype.indexOf.call(ta, BigInt(n)); - } - return Array.prototype.indexOf.call(ta, BigInt(n), fromIndex); - } - if (fromIndex == undefined) { - return Array.prototype.indexOf.call(ta, n); - } - return Array.prototype.indexOf.call(ta, n, fromIndex); -} - -function IndexOfParameterConversionShrinks(indexOfHelper, lastIndexOfHelper) { - // Shrinking + fixed-length TA. - for (let ctor of ctors) { - const rab = CreateResizableArrayBuffer(4 * ctor.BYTES_PER_ELEMENT, 8 * ctor.BYTES_PER_ELEMENT); - const fixedLength = new ctor(rab, 0, 4); - let evil = { - valueOf: () => { - rab.resize(2 * ctor.BYTES_PER_ELEMENT); - return 0; - } - }; - assert.sameValue(indexOfHelper(fixedLength, 0), 0); - // The TA is OOB so indexOf returns -1. - assert.sameValue(indexOfHelper(fixedLength, 0, evil), -1); - } - for (let ctor of ctors) { - const rab = CreateResizableArrayBuffer(4 * ctor.BYTES_PER_ELEMENT, 8 * ctor.BYTES_PER_ELEMENT); - const fixedLength = new ctor(rab, 0, 4); - let evil = { - valueOf: () => { - rab.resize(2 * ctor.BYTES_PER_ELEMENT); - return 0; - } - }; - assert.sameValue(indexOfHelper(fixedLength, 0), 0); - // The TA is OOB so indexOf returns -1, also for undefined). - assert.sameValue(indexOfHelper(fixedLength, undefined, evil), -1); - } - - // Shrinking + length-tracking TA. - for (let ctor of ctors) { - const rab = CreateResizableArrayBuffer(4 * ctor.BYTES_PER_ELEMENT, 8 * ctor.BYTES_PER_ELEMENT); - const lengthTracking = new ctor(rab); - for (let i = 0; i < 4; ++i) { - WriteToTypedArray(lengthTracking, i, i); - } - let evil = { - valueOf: () => { - rab.resize(2 * ctor.BYTES_PER_ELEMENT); - return 0; - } - }; - assert.sameValue(indexOfHelper(lengthTracking, 2), 2); - // 2 no longer found. - assert.sameValue(indexOfHelper(lengthTracking, 2, evil), -1); - } -} - -IndexOfParameterConversionShrinks(TypedArrayIndexOfHelper); -IndexOfParameterConversionShrinks(ArrayIndexOfHelper); diff --git a/test/staging/ArrayBuffer/resizable/join-parameter-conversion-grows.js b/test/staging/ArrayBuffer/resizable/join-parameter-conversion-grows.js deleted file mode 100644 index fe35f0061fd..00000000000 --- a/test/staging/ArrayBuffer/resizable/join-parameter-conversion-grows.js +++ /dev/null @@ -1,85 +0,0 @@ -// Copyright 2021 the V8 project authors. All rights reserved. -// This code is governed by the BSD license found in the LICENSE file. - -/*--- -esid: sec-arraybuffer-length -description: > - Automatically ported from JoinParameterConversionGrows test - in V8's mjsunit test typedarray-resizablearraybuffer.js -features: [resizable-arraybuffer] -flags: [onlyStrict] ----*/ - -class MyUint8Array extends Uint8Array { -} - -class MyFloat32Array extends Float32Array { -} - -class MyBigInt64Array extends BigInt64Array { -} - -const builtinCtors = [ - Uint8Array, - Int8Array, - Uint16Array, - Int16Array, - Uint32Array, - Int32Array, - Float32Array, - Float64Array, - Uint8ClampedArray, - BigUint64Array, - BigInt64Array -]; - -const ctors = [ - ...builtinCtors, - MyUint8Array, - MyFloat32Array, - MyBigInt64Array -]; - -function CreateResizableArrayBuffer(byteLength, maxByteLength) { - return new ArrayBuffer(byteLength, { maxByteLength: maxByteLength }); -} - -const TypedArrayJoinHelper = (ta, ...rest) => { - return ta.join(...rest); -}; - -const ArrayJoinHelper = (ta, ...rest) => { - return Array.prototype.join.call(ta, ...rest); -}; - -function JoinParameterConversionGrows(joinHelper) { - // Growing + fixed-length TA. - for (let ctor of ctors) { - const rab = CreateResizableArrayBuffer(4 * ctor.BYTES_PER_ELEMENT, 8 * ctor.BYTES_PER_ELEMENT); - const fixedLength = new ctor(rab, 0, 4); - let evil = { - toString: () => { - rab.resize(6 * ctor.BYTES_PER_ELEMENT); - return '.'; - } - }; - assert.sameValue(joinHelper(fixedLength, evil), '0.0.0.0'); - } - - // Growing + length-tracking TA. - for (let ctor of ctors) { - const rab = CreateResizableArrayBuffer(4 * ctor.BYTES_PER_ELEMENT, 8 * ctor.BYTES_PER_ELEMENT); - const lengthTracking = new ctor(rab); - let evil = { - toString: () => { - rab.resize(6 * ctor.BYTES_PER_ELEMENT); - return '.'; - } - }; - // We iterate 4 elements, since it was the starting length. - assert.sameValue(joinHelper(lengthTracking, evil), '0.0.0.0'); - } -} - -JoinParameterConversionGrows(TypedArrayJoinHelper); -JoinParameterConversionGrows(ArrayJoinHelper); diff --git a/test/staging/ArrayBuffer/resizable/join-parameter-conversion-shrinks.js b/test/staging/ArrayBuffer/resizable/join-parameter-conversion-shrinks.js deleted file mode 100644 index 584e3870d6c..00000000000 --- a/test/staging/ArrayBuffer/resizable/join-parameter-conversion-shrinks.js +++ /dev/null @@ -1,89 +0,0 @@ -// Copyright 2021 the V8 project authors. All rights reserved. -// This code is governed by the BSD license found in the LICENSE file. - -/*--- -esid: sec-arraybuffer-length -description: > - Automatically ported from JoinParameterConversionShrinks test - in V8's mjsunit test typedarray-resizablearraybuffer.js -features: [resizable-arraybuffer] -flags: [onlyStrict] ----*/ - -class MyUint8Array extends Uint8Array { -} - -class MyFloat32Array extends Float32Array { -} - -class MyBigInt64Array extends BigInt64Array { -} - -const builtinCtors = [ - Uint8Array, - Int8Array, - Uint16Array, - Int16Array, - Uint32Array, - Int32Array, - Float32Array, - Float64Array, - Uint8ClampedArray, - BigUint64Array, - BigInt64Array -]; - -const ctors = [ - ...builtinCtors, - MyUint8Array, - MyFloat32Array, - MyBigInt64Array -]; - -function CreateResizableArrayBuffer(byteLength, maxByteLength) { - return new ArrayBuffer(byteLength, { maxByteLength: maxByteLength }); -} - -const TypedArrayJoinHelper = (ta, ...rest) => { - return ta.join(...rest); -}; - -const ArrayJoinHelper = (ta, ...rest) => { - return Array.prototype.join.call(ta, ...rest); -}; - -function JoinParameterConversionShrinks(joinHelper) { - // Shrinking + fixed-length TA. - for (let ctor of ctors) { - const rab = CreateResizableArrayBuffer(4 * ctor.BYTES_PER_ELEMENT, 8 * ctor.BYTES_PER_ELEMENT); - const fixedLength = new ctor(rab, 0, 4); - let evil = { - toString: () => { - rab.resize(2 * ctor.BYTES_PER_ELEMENT); - return '.'; - } - }; - // We iterate 4 elements, since it was the starting length, but the TA is - // OOB right after parameter conversion, so all elements are converted to - // the empty string. - assert.sameValue(joinHelper(fixedLength, evil), '...'); - } - - // Shrinking + length-tracking TA. - for (let ctor of ctors) { - const rab = CreateResizableArrayBuffer(4 * ctor.BYTES_PER_ELEMENT, 8 * ctor.BYTES_PER_ELEMENT); - const lengthTracking = new ctor(rab); - let evil = { - toString: () => { - rab.resize(2 * ctor.BYTES_PER_ELEMENT); - return '.'; - } - }; - // We iterate 4 elements, since it was the starting length. Elements beyond - // the new length are converted to the empty string. - assert.sameValue(joinHelper(lengthTracking, evil), '0.0..'); - } -} - -JoinParameterConversionShrinks(TypedArrayJoinHelper); -JoinParameterConversionShrinks(ArrayJoinHelper); diff --git a/test/staging/ArrayBuffer/resizable/join-to-locale-string.js b/test/staging/ArrayBuffer/resizable/join-to-locale-string.js deleted file mode 100644 index 709dc0ec2cd..00000000000 --- a/test/staging/ArrayBuffer/resizable/join-to-locale-string.js +++ /dev/null @@ -1,219 +0,0 @@ -// Copyright 2021 the V8 project authors. All rights reserved. -// This code is governed by the BSD license found in the LICENSE file. - -/*--- -esid: sec-arraybuffer-length -description: > - Automatically ported from JoinToLocaleString test - in V8's mjsunit test typedarray-resizablearraybuffer.js -features: [resizable-arraybuffer] -flags: [onlyStrict] ----*/ - -class MyUint8Array extends Uint8Array { -} - -class MyFloat32Array extends Float32Array { -} - -class MyBigInt64Array extends BigInt64Array { -} - -const builtinCtors = [ - Uint8Array, - Int8Array, - Uint16Array, - Int16Array, - Uint32Array, - Int32Array, - Float32Array, - Float64Array, - Uint8ClampedArray, - BigUint64Array, - BigInt64Array -]; - -const ctors = [ - ...builtinCtors, - MyUint8Array, - MyFloat32Array, - MyBigInt64Array -]; - -function CreateResizableArrayBuffer(byteLength, maxByteLength) { - return new ArrayBuffer(byteLength, { maxByteLength: maxByteLength }); -} - -function WriteToTypedArray(array, index, value) { - if (array instanceof BigInt64Array || array instanceof BigUint64Array) { - array[index] = BigInt(value); - } else { - array[index] = value; - } -} - -const TypedArrayJoinHelper = (ta, ...rest) => { - return ta.join(...rest); -}; - -const ArrayJoinHelper = (ta, ...rest) => { - return Array.prototype.join.call(ta, ...rest); -}; - -const TypedArrayToLocaleStringHelper = (ta, ...rest) => { - return ta.toLocaleString(...rest); -}; - -const ArrayToLocaleStringHelper = (ta, ...rest) => { - return Array.prototype.toLocaleString.call(ta, ...rest); -}; - -function JoinToLocaleString(joinHelper, toLocaleStringHelper, oobThrows) { - for (let ctor of ctors) { - const rab = CreateResizableArrayBuffer(4 * ctor.BYTES_PER_ELEMENT, 8 * ctor.BYTES_PER_ELEMENT); - const fixedLength = new ctor(rab, 0, 4); - const fixedLengthWithOffset = new ctor(rab, 2 * ctor.BYTES_PER_ELEMENT, 2); - const lengthTracking = new ctor(rab, 0); - const lengthTrackingWithOffset = new ctor(rab, 2 * ctor.BYTES_PER_ELEMENT); - const taWrite = new ctor(rab); - - // Write some data into the array. - for (let i = 0; i < 4; ++i) { - WriteToTypedArray(taWrite, i, 2 * i); - } - - // Orig. array: [0, 2, 4, 6] - // [0, 2, 4, 6] << fixedLength - // [4, 6] << fixedLengthWithOffset - // [0, 2, 4, 6, ...] << lengthTracking - // [4, 6, ...] << lengthTrackingWithOffset - - assert.sameValue(joinHelper(fixedLength), '0,2,4,6'); - assert.sameValue(toLocaleStringHelper(fixedLength), '0,2,4,6'); - assert.sameValue(joinHelper(fixedLengthWithOffset), '4,6'); - assert.sameValue(toLocaleStringHelper(fixedLengthWithOffset), '4,6'); - assert.sameValue(joinHelper(lengthTracking), '0,2,4,6'); - assert.sameValue(toLocaleStringHelper(lengthTracking), '0,2,4,6'); - assert.sameValue(joinHelper(lengthTrackingWithOffset), '4,6'); - assert.sameValue(toLocaleStringHelper(lengthTrackingWithOffset), '4,6'); - - // Shrink so that fixed length TAs go out of bounds. - rab.resize(3 * ctor.BYTES_PER_ELEMENT); - - // Orig. array: [0, 2, 4] - // [0, 2, 4, ...] << lengthTracking - // [4, ...] << lengthTrackingWithOffset - - if (oobThrows) { - assert.throws(TypeError, () => { - joinHelper(fixedLength); - }); - assert.throws(TypeError, () => { - toLocaleStringHelper(fixedLength); - }); - assert.throws(TypeError, () => { - joinHelper(fixedLengthWithOffset); - }); - assert.throws(TypeError, () => { - toLocaleStringHelper(fixedLengthWithOffset); - }); - } else { - assert.sameValue(joinHelper(fixedLength), ''); - assert.sameValue(toLocaleStringHelper(fixedLength), ''); - assert.sameValue(joinHelper(fixedLengthWithOffset), ''); - assert.sameValue(toLocaleStringHelper(fixedLengthWithOffset), ''); - } - assert.sameValue(joinHelper(lengthTracking), '0,2,4'); - assert.sameValue(toLocaleStringHelper(lengthTracking), '0,2,4'); - assert.sameValue(joinHelper(lengthTrackingWithOffset), '4'); - assert.sameValue(toLocaleStringHelper(lengthTrackingWithOffset), '4'); - - // Shrink so that the TAs with offset go out of bounds. - rab.resize(1 * ctor.BYTES_PER_ELEMENT); - if (oobThrows) { - assert.throws(TypeError, () => { - joinHelper(fixedLength); - }); - assert.throws(TypeError, () => { - toLocaleStringHelper(fixedLength); - }); - assert.throws(TypeError, () => { - joinHelper(fixedLengthWithOffset); - }); - assert.throws(TypeError, () => { - toLocaleStringHelper(fixedLengthWithOffset); - }); - assert.throws(TypeError, () => { - joinHelper(lengthTrackingWithOffset); - }); - assert.throws(TypeError, () => { - toLocaleStringHelper(lengthTrackingWithOffset); - }); - } else { - assert.sameValue(joinHelper(fixedLength), ''); - assert.sameValue(toLocaleStringHelper(fixedLength), ''); - assert.sameValue(joinHelper(fixedLengthWithOffset), ''); - assert.sameValue(toLocaleStringHelper(fixedLengthWithOffset), ''); - assert.sameValue(joinHelper(lengthTrackingWithOffset), ''); - assert.sameValue(toLocaleStringHelper(lengthTrackingWithOffset), ''); - } - assert.sameValue(joinHelper(lengthTracking), '0'); - assert.sameValue(toLocaleStringHelper(lengthTracking), '0'); - - // Shrink to zero. - rab.resize(0); - if (oobThrows) { - assert.throws(TypeError, () => { - joinHelper(fixedLength); - }); - assert.throws(TypeError, () => { - toLocaleStringHelper(fixedLength); - }); - assert.throws(TypeError, () => { - joinHelper(fixedLengthWithOffset); - }); - assert.throws(TypeError, () => { - toLocaleStringHelper(fixedLengthWithOffset); - }); - assert.throws(TypeError, () => { - joinHelper(lengthTrackingWithOffset); - }); - assert.throws(TypeError, () => { - toLocaleStringHelper(lengthTrackingWithOffset); - }); - } else { - assert.sameValue(joinHelper(fixedLength), ''); - assert.sameValue(toLocaleStringHelper(fixedLength), ''); - assert.sameValue(joinHelper(fixedLengthWithOffset), ''); - assert.sameValue(toLocaleStringHelper(fixedLengthWithOffset), ''); - assert.sameValue(joinHelper(lengthTrackingWithOffset), ''); - assert.sameValue(toLocaleStringHelper(lengthTrackingWithOffset), ''); - } - assert.sameValue(joinHelper(lengthTracking), ''); - assert.sameValue(toLocaleStringHelper(lengthTracking), ''); - - // Grow so that all TAs are back in-bounds. - rab.resize(6 * ctor.BYTES_PER_ELEMENT); - for (let i = 0; i < 6; ++i) { - WriteToTypedArray(taWrite, i, 2 * i); - } - - // Orig. array: [0, 2, 4, 6, 8, 10] - // [0, 2, 4, 6] << fixedLength - // [4, 6] << fixedLengthWithOffset - // [0, 2, 4, 6, 8, 10, ...] << lengthTracking - // [4, 6, 8, 10, ...] << lengthTrackingWithOffset - - assert.sameValue(joinHelper(fixedLength), '0,2,4,6'); - assert.sameValue(toLocaleStringHelper(fixedLength), '0,2,4,6'); - assert.sameValue(joinHelper(fixedLengthWithOffset), '4,6'); - assert.sameValue(toLocaleStringHelper(fixedLengthWithOffset), '4,6'); - assert.sameValue(joinHelper(lengthTracking), '0,2,4,6,8,10'); - assert.sameValue(toLocaleStringHelper(lengthTracking), '0,2,4,6,8,10'); - assert.sameValue(joinHelper(lengthTrackingWithOffset), '4,6,8,10'); - assert.sameValue(toLocaleStringHelper(lengthTrackingWithOffset), '4,6,8,10'); - } -} - -JoinToLocaleString(TypedArrayJoinHelper, TypedArrayToLocaleStringHelper, true); -JoinToLocaleString(ArrayJoinHelper, ArrayToLocaleStringHelper, false); diff --git a/test/staging/ArrayBuffer/resizable/last-index-of-parameter-conversion-grows.js b/test/staging/ArrayBuffer/resizable/last-index-of-parameter-conversion-grows.js deleted file mode 100644 index 06ea1a64d1a..00000000000 --- a/test/staging/ArrayBuffer/resizable/last-index-of-parameter-conversion-grows.js +++ /dev/null @@ -1,121 +0,0 @@ -// Copyright 2021 the V8 project authors. All rights reserved. -// This code is governed by the BSD license found in the LICENSE file. - -/*--- -esid: sec-arraybuffer-length -description: > - Automatically ported from LastIndexOfParameterConversionGrows test - in V8's mjsunit test typedarray-resizablearraybuffer.js -features: [resizable-arraybuffer] -flags: [onlyStrict] ----*/ - -class MyUint8Array extends Uint8Array { -} - -class MyFloat32Array extends Float32Array { -} - -class MyBigInt64Array extends BigInt64Array { -} - -const builtinCtors = [ - Uint8Array, - Int8Array, - Uint16Array, - Int16Array, - Uint32Array, - Int32Array, - Float32Array, - Float64Array, - Uint8ClampedArray, - BigUint64Array, - BigInt64Array -]; - -const ctors = [ - ...builtinCtors, - MyUint8Array, - MyFloat32Array, - MyBigInt64Array -]; - -function CreateResizableArrayBuffer(byteLength, maxByteLength) { - return new ArrayBuffer(byteLength, { maxByteLength: maxByteLength }); -} - -function WriteToTypedArray(array, index, value) { - if (array instanceof BigInt64Array || array instanceof BigUint64Array) { - array[index] = BigInt(value); - } else { - array[index] = value; - } -} - -function TypedArrayLastIndexOfHelper(ta, n, fromIndex) { - if (typeof n == 'number' && (ta instanceof BigInt64Array || ta instanceof BigUint64Array)) { - if (fromIndex == undefined) { - return ta.lastIndexOf(BigInt(n)); - } - return ta.lastIndexOf(BigInt(n), fromIndex); - } - if (fromIndex == undefined) { - return ta.lastIndexOf(n); - } - return ta.lastIndexOf(n, fromIndex); -} - -function ArrayLastIndexOfHelper(ta, n, fromIndex) { - if (typeof n == 'number' && (ta instanceof BigInt64Array || ta instanceof BigUint64Array)) { - if (fromIndex == undefined) { - return Array.prototype.lastIndexOf.call(ta, BigInt(n)); - } - return Array.prototype.lastIndexOf.call(ta, BigInt(n), fromIndex); - } - if (fromIndex == undefined) { - return Array.prototype.lastIndexOf.call(ta, n); - } - return Array.prototype.lastIndexOf.call(ta, n, fromIndex); -} - -function LastIndexOfParameterConversionGrows(lastIndexOfHelper) { - // Growing + length-tracking TA. - for (let ctor of ctors) { - const rab = CreateResizableArrayBuffer(4 * ctor.BYTES_PER_ELEMENT, 8 * ctor.BYTES_PER_ELEMENT); - const lengthTracking = new ctor(rab); - for (let i = 0; i < 4; ++i) { - WriteToTypedArray(lengthTracking, i, 1); - } - let evil = { - valueOf: () => { - rab.resize(6 * ctor.BYTES_PER_ELEMENT); - return -1; - } - }; - assert.sameValue(lastIndexOfHelper(lengthTracking, 0), -1); - // Because lastIndexOf iterates from the given index downwards, it's not - // possible to test that "we only look at the data until the original - // length" without also testing that the index conversion happening with the - // original length. - assert.sameValue(lastIndexOfHelper(lengthTracking, 0, evil), -1); - } - - // Growing + length-tracking TA, index conversion. - for (let ctor of ctors) { - const rab = CreateResizableArrayBuffer(4 * ctor.BYTES_PER_ELEMENT, 8 * ctor.BYTES_PER_ELEMENT); - const lengthTracking = new ctor(rab); - let evil = { - valueOf: () => { - rab.resize(6 * ctor.BYTES_PER_ELEMENT); - return -4; - } - }; - assert.sameValue(lastIndexOfHelper(lengthTracking, 0, -4), 0); - // The TA grew but the start index conversion is done based on the original - // length. - assert.sameValue(lastIndexOfHelper(lengthTracking, 0, evil), 0); - } -} - -LastIndexOfParameterConversionGrows(TypedArrayLastIndexOfHelper); -LastIndexOfParameterConversionGrows(ArrayLastIndexOfHelper); diff --git a/test/staging/ArrayBuffer/resizable/last-index-of-parameter-conversion-shrinks.js b/test/staging/ArrayBuffer/resizable/last-index-of-parameter-conversion-shrinks.js deleted file mode 100644 index 9b77df0df2c..00000000000 --- a/test/staging/ArrayBuffer/resizable/last-index-of-parameter-conversion-shrinks.js +++ /dev/null @@ -1,130 +0,0 @@ -// Copyright 2021 the V8 project authors. All rights reserved. -// This code is governed by the BSD license found in the LICENSE file. - -/*--- -esid: sec-arraybuffer-length -description: > - Automatically ported from LastIndexOfParameterConversionShrinks test - in V8's mjsunit test typedarray-resizablearraybuffer.js -features: [resizable-arraybuffer] -flags: [onlyStrict] ----*/ - -class MyUint8Array extends Uint8Array { -} - -class MyFloat32Array extends Float32Array { -} - -class MyBigInt64Array extends BigInt64Array { -} - -const builtinCtors = [ - Uint8Array, - Int8Array, - Uint16Array, - Int16Array, - Uint32Array, - Int32Array, - Float32Array, - Float64Array, - Uint8ClampedArray, - BigUint64Array, - BigInt64Array -]; - -const ctors = [ - ...builtinCtors, - MyUint8Array, - MyFloat32Array, - MyBigInt64Array -]; - -function CreateResizableArrayBuffer(byteLength, maxByteLength) { - return new ArrayBuffer(byteLength, { maxByteLength: maxByteLength }); -} - -function WriteToTypedArray(array, index, value) { - if (array instanceof BigInt64Array || array instanceof BigUint64Array) { - array[index] = BigInt(value); - } else { - array[index] = value; - } -} - -function TypedArrayLastIndexOfHelper(ta, n, fromIndex) { - if (typeof n == 'number' && (ta instanceof BigInt64Array || ta instanceof BigUint64Array)) { - if (fromIndex == undefined) { - return ta.lastIndexOf(BigInt(n)); - } - return ta.lastIndexOf(BigInt(n), fromIndex); - } - if (fromIndex == undefined) { - return ta.lastIndexOf(n); - } - return ta.lastIndexOf(n, fromIndex); -} - -function ArrayLastIndexOfHelper(ta, n, fromIndex) { - if (typeof n == 'number' && (ta instanceof BigInt64Array || ta instanceof BigUint64Array)) { - if (fromIndex == undefined) { - return Array.prototype.lastIndexOf.call(ta, BigInt(n)); - } - return Array.prototype.lastIndexOf.call(ta, BigInt(n), fromIndex); - } - if (fromIndex == undefined) { - return Array.prototype.lastIndexOf.call(ta, n); - } - return Array.prototype.lastIndexOf.call(ta, n, fromIndex); -} - -function LastIndexOfParameterConversionShrinks(lastIndexOfHelper) { - // Shrinking + fixed-length TA. - for (let ctor of ctors) { - const rab = CreateResizableArrayBuffer(4 * ctor.BYTES_PER_ELEMENT, 8 * ctor.BYTES_PER_ELEMENT); - const fixedLength = new ctor(rab, 0, 4); - let evil = { - valueOf: () => { - rab.resize(2 * ctor.BYTES_PER_ELEMENT); - return 2; - } - }; - assert.sameValue(lastIndexOfHelper(fixedLength, 0), 3); - // The TA is OOB so lastIndexOf returns -1. - assert.sameValue(lastIndexOfHelper(fixedLength, 0, evil), -1); - } - for (let ctor of ctors) { - const rab = CreateResizableArrayBuffer(4 * ctor.BYTES_PER_ELEMENT, 8 * ctor.BYTES_PER_ELEMENT); - const fixedLength = new ctor(rab, 0, 4); - let evil = { - valueOf: () => { - rab.resize(2 * ctor.BYTES_PER_ELEMENT); - return 2; - } - }; - assert.sameValue(lastIndexOfHelper(fixedLength, 0), 3); - // The TA is OOB so lastIndexOf returns -1, also for undefined). - assert.sameValue(lastIndexOfHelper(fixedLength, undefined, evil), -1); - } - - // Shrinking + length-tracking TA. - for (let ctor of ctors) { - const rab = CreateResizableArrayBuffer(4 * ctor.BYTES_PER_ELEMENT, 8 * ctor.BYTES_PER_ELEMENT); - const lengthTracking = new ctor(rab); - for (let i = 0; i < 4; ++i) { - WriteToTypedArray(lengthTracking, i, i); - } - let evil = { - valueOf: () => { - rab.resize(2 * ctor.BYTES_PER_ELEMENT); - return 2; - } - }; - assert.sameValue(lastIndexOfHelper(lengthTracking, 2), 2); - // 2 no longer found. - assert.sameValue(lastIndexOfHelper(lengthTracking, 2, evil), -1); - } -} - -LastIndexOfParameterConversionShrinks(TypedArrayLastIndexOfHelper); -LastIndexOfParameterConversionShrinks(ArrayLastIndexOfHelper); diff --git a/test/staging/ArrayBuffer/resizable/map-grow-mid-iteration.js b/test/staging/ArrayBuffer/resizable/map-grow-mid-iteration.js deleted file mode 100644 index 03d75ab9e06..00000000000 --- a/test/staging/ArrayBuffer/resizable/map-grow-mid-iteration.js +++ /dev/null @@ -1,146 +0,0 @@ -// Copyright 2021 the V8 project authors. All rights reserved. -// This code is governed by the BSD license found in the LICENSE file. - -/*--- -esid: sec-arraybuffer-length -description: > - Automatically ported from MapGrowMidIteration test - in V8's mjsunit test typedarray-resizablearraybuffer.js -includes: [compareArray.js] -features: [resizable-arraybuffer] -flags: [onlyStrict] ----*/ - -class MyUint8Array extends Uint8Array { -} - -class MyFloat32Array extends Float32Array { -} - -class MyBigInt64Array extends BigInt64Array { -} - -const builtinCtors = [ - Uint8Array, - Int8Array, - Uint16Array, - Int16Array, - Uint32Array, - Int32Array, - Float32Array, - Float64Array, - Uint8ClampedArray, - BigUint64Array, - BigInt64Array -]; - -const ctors = [ - ...builtinCtors, - MyUint8Array, - MyFloat32Array, - MyBigInt64Array -]; - -function CreateResizableArrayBuffer(byteLength, maxByteLength) { - return new ArrayBuffer(byteLength, { maxByteLength: maxByteLength }); -} - -function WriteToTypedArray(array, index, value) { - if (array instanceof BigInt64Array || array instanceof BigUint64Array) { - array[index] = BigInt(value); - } else { - array[index] = value; - } -} - -const TypedArrayMapHelper = (ta, ...rest) => { - return ta.map(...rest); -}; - -const ArrayMapHelper = (ta, ...rest) => { - return Array.prototype.map.call(ta, ...rest); -}; - -function MapGrowMidIteration(mapHelper) { - // Orig. array: [0, 2, 4, 6] - // [0, 2, 4, 6] << fixedLength - // [4, 6] << fixedLengthWithOffset - // [0, 2, 4, 6, ...] << lengthTracking - // [4, 6, ...] << lengthTrackingWithOffset - function CreateRabForTest(ctor) { - const rab = CreateResizableArrayBuffer(4 * ctor.BYTES_PER_ELEMENT, 8 * ctor.BYTES_PER_ELEMENT); - // Write some data into the array. - const taWrite = new ctor(rab); - for (let i = 0; i < 4; ++i) { - WriteToTypedArray(taWrite, i, 2 * i); - } - return rab; - } - let values; - let rab; - let resizeAfter; - let resizeTo; - function CollectValuesAndResize(n) { - if (typeof n == 'bigint') { - values.push(Number(n)); - } else { - values.push(n); - } - if (values.length == resizeAfter) { - rab.resize(resizeTo); - } - return n; - } - function Helper(array) { - values = []; - mapHelper(array, CollectValuesAndResize); - return values; - } - for (let ctor of ctors) { - rab = CreateRabForTest(ctor); - const fixedLength = new ctor(rab, 0, 4); - resizeAfter = 2; - resizeTo = 5 * ctor.BYTES_PER_ELEMENT; - assert.compareArray(Helper(fixedLength), [ - 0, - 2, - 4, - 6 - ]); - } - for (let ctor of ctors) { - rab = CreateRabForTest(ctor); - const fixedLengthWithOffset = new ctor(rab, 2 * ctor.BYTES_PER_ELEMENT, 2); - resizeAfter = 1; - resizeTo = 5 * ctor.BYTES_PER_ELEMENT; - assert.compareArray(Helper(fixedLengthWithOffset), [ - 4, - 6 - ]); - } - for (let ctor of ctors) { - rab = CreateRabForTest(ctor); - const lengthTracking = new ctor(rab, 0); - resizeAfter = 2; - resizeTo = 5 * ctor.BYTES_PER_ELEMENT; - assert.compareArray(Helper(lengthTracking), [ - 0, - 2, - 4, - 6 - ]); - } - for (let ctor of ctors) { - rab = CreateRabForTest(ctor); - const lengthTrackingWithOffset = new ctor(rab, 2 * ctor.BYTES_PER_ELEMENT); - resizeAfter = 1; - resizeTo = 5 * ctor.BYTES_PER_ELEMENT; - assert.compareArray(Helper(lengthTrackingWithOffset), [ - 4, - 6 - ]); - } -} - -MapGrowMidIteration(TypedArrayMapHelper); -MapGrowMidIteration(ArrayMapHelper); diff --git a/test/staging/ArrayBuffer/resizable/map-shrink-mid-iteration.js b/test/staging/ArrayBuffer/resizable/map-shrink-mid-iteration.js deleted file mode 100644 index 81aef179861..00000000000 --- a/test/staging/ArrayBuffer/resizable/map-shrink-mid-iteration.js +++ /dev/null @@ -1,178 +0,0 @@ -// Copyright 2021 the V8 project authors. All rights reserved. -// This code is governed by the BSD license found in the LICENSE file. - -/*--- -esid: sec-arraybuffer-length -description: > - Automatically ported from MapShrinkMidIteration test - in V8's mjsunit test typedarray-resizablearraybuffer.js -includes: [compareArray.js] -features: [resizable-arraybuffer] -flags: [onlyStrict] ----*/ - -class MyUint8Array extends Uint8Array { -} - -class MyFloat32Array extends Float32Array { -} - -class MyBigInt64Array extends BigInt64Array { -} - -const builtinCtors = [ - Uint8Array, - Int8Array, - Uint16Array, - Int16Array, - Uint32Array, - Int32Array, - Float32Array, - Float64Array, - Uint8ClampedArray, - BigUint64Array, - BigInt64Array -]; - -const ctors = [ - ...builtinCtors, - MyUint8Array, - MyFloat32Array, - MyBigInt64Array -]; - -function CreateResizableArrayBuffer(byteLength, maxByteLength) { - return new ArrayBuffer(byteLength, { maxByteLength: maxByteLength }); -} - -function IsBigIntTypedArray(ta) { - return ta instanceof BigInt64Array || ta instanceof BigUint64Array; -} - -function WriteToTypedArray(array, index, value) { - if (array instanceof BigInt64Array || array instanceof BigUint64Array) { - array[index] = BigInt(value); - } else { - array[index] = value; - } -} - -const TypedArrayMapHelper = (ta, ...rest) => { - return ta.map(...rest); -}; - -const ArrayMapHelper = (ta, ...rest) => { - return Array.prototype.map.call(ta, ...rest); -}; - -function MapShrinkMidIteration(mapHelper, hasUndefined) { - // Orig. array: [0, 2, 4, 6] - // [0, 2, 4, 6] << fixedLength - // [4, 6] << fixedLengthWithOffset - // [0, 2, 4, 6, ...] << lengthTracking - // [4, 6, ...] << lengthTrackingWithOffset - function CreateRabForTest(ctor) { - const rab = CreateResizableArrayBuffer(4 * ctor.BYTES_PER_ELEMENT, 8 * ctor.BYTES_PER_ELEMENT); - // Write some data into the array. - const taWrite = new ctor(rab); - for (let i = 0; i < 4; ++i) { - WriteToTypedArray(taWrite, i, 2 * i); - } - return rab; - } - let values; - let rab; - let resizeAfter; - let resizeTo; - function CollectValuesAndResize(n, ix, ta) { - if (typeof n == 'bigint') { - values.push(Number(n)); - } else { - values.push(n); - } - if (values.length == resizeAfter) { - rab.resize(resizeTo); - } - // We still need to return a valid BigInt / non-BigInt, even if - // n is `undefined`. - if (IsBigIntTypedArray(ta)) { - return 0n; - } - return 0; - } - function Helper(array) { - values = []; - mapHelper(array, CollectValuesAndResize); - return values; - } - for (let ctor of ctors) { - rab = CreateRabForTest(ctor); - const fixedLength = new ctor(rab, 0, 4); - resizeAfter = 2; - resizeTo = 3 * ctor.BYTES_PER_ELEMENT; - if (hasUndefined) { - assert.compareArray(Helper(fixedLength), [ - 0, - 2, - undefined, - undefined - ]); - } else { - assert.compareArray(Helper(fixedLength), [ - 0, - 2 - ]); - } - } - for (let ctor of ctors) { - rab = CreateRabForTest(ctor); - const fixedLengthWithOffset = new ctor(rab, 2 * ctor.BYTES_PER_ELEMENT, 2); - resizeAfter = 1; - resizeTo = 3 * ctor.BYTES_PER_ELEMENT; - if (hasUndefined) { - assert.compareArray(Helper(fixedLengthWithOffset), [ - 4, - undefined - ]); - } else { - assert.compareArray(Helper(fixedLengthWithOffset), [4]); - } - } - for (let ctor of ctors) { - rab = CreateRabForTest(ctor); - const lengthTracking = new ctor(rab, 0); - resizeAfter = 2; - resizeTo = 3 * ctor.BYTES_PER_ELEMENT; - if (hasUndefined) { - assert.compareArray(Helper(lengthTracking), [ - 0, - 2, - 4, - undefined - ]); - } else { - assert.compareArray(Helper(lengthTracking), [ - 0, - 2, - 4 - ]); - } - } - for (let ctor of ctors) { - rab = CreateRabForTest(ctor); - const lengthTrackingWithOffset = new ctor(rab, 2 * ctor.BYTES_PER_ELEMENT); - resizeAfter = 1; - resizeTo = 3 * ctor.BYTES_PER_ELEMENT; - if (hasUndefined) { - assert.compareArray(Helper(lengthTrackingWithOffset), [ - 4, - undefined - ]); - } else { - assert.compareArray(Helper(lengthTrackingWithOffset), [4]); - } - } -} - -MapShrinkMidIteration(TypedArrayMapHelper, true); -MapShrinkMidIteration(ArrayMapHelper, false); diff --git a/test/staging/ArrayBuffer/resizable/map-species-create-grows.js b/test/staging/ArrayBuffer/resizable/map-species-create-grows.js deleted file mode 100644 index 5b02367323f..00000000000 --- a/test/staging/ArrayBuffer/resizable/map-species-create-grows.js +++ /dev/null @@ -1,131 +0,0 @@ -// Copyright 2021 the V8 project authors. All rights reserved. -// This code is governed by the BSD license found in the LICENSE file. - -/*--- -esid: sec-arraybuffer-length -description: > - Automatically ported from MapSpeciesCreateGrows test - in V8's mjsunit test typedarray-resizablearraybuffer.js -includes: [compareArray.js] -features: [resizable-arraybuffer] -flags: [onlyStrict] ----*/ - -class MyUint8Array extends Uint8Array { -} - -class MyFloat32Array extends Float32Array { -} - -class MyBigInt64Array extends BigInt64Array { -} - -const builtinCtors = [ - Uint8Array, - Int8Array, - Uint16Array, - Int16Array, - Uint32Array, - Int32Array, - Float32Array, - Float64Array, - Uint8ClampedArray, - BigUint64Array, - BigInt64Array -]; - -const ctors = [ - ...builtinCtors, - MyUint8Array, - MyFloat32Array, - MyBigInt64Array -]; - -function CreateResizableArrayBuffer(byteLength, maxByteLength) { - return new ArrayBuffer(byteLength, { maxByteLength: maxByteLength }); -} - -function IsBigIntTypedArray(ta) { - return ta instanceof BigInt64Array || ta instanceof BigUint64Array; -} - -function WriteToTypedArray(array, index, value) { - if (array instanceof BigInt64Array || array instanceof BigUint64Array) { - array[index] = BigInt(value); - } else { - array[index] = value; - } -} - -let values; -let rab; -function CollectValues(n, ix, ta) { - if (typeof n == 'bigint') { - values.push(Number(n)); - } else { - values.push(n); - } - // We still need to return a valid BigInt / non-BigInt, even if - // n is `undefined`. - if (IsBigIntTypedArray(ta)) { - return 0n; - } - return 0; -} -function Helper(array) { - values = []; - array.map(CollectValues); - return values; -} -for (let ctor of ctors) { - rab = CreateResizableArrayBuffer(4 * ctor.BYTES_PER_ELEMENT, 8 * ctor.BYTES_PER_ELEMENT); - const taWrite = new ctor(rab); - for (let i = 0; i < 4; ++i) { - WriteToTypedArray(taWrite, i, i); - } - let resizeWhenConstructorCalled = false; - class MyArray extends ctor { - constructor(...params) { - super(...params); - if (resizeWhenConstructorCalled) { - rab.resize(6 * ctor.BYTES_PER_ELEMENT); - } - } - } - ; - const fixedLength = new MyArray(rab, 0, 4); - resizeWhenConstructorCalled = true; - assert.compareArray(Helper(fixedLength), [ - 0, - 1, - 2, - 3 - ]); - assert.sameValue(rab.byteLength, 6 * ctor.BYTES_PER_ELEMENT); -} -for (let ctor of ctors) { - rab = CreateResizableArrayBuffer(4 * ctor.BYTES_PER_ELEMENT, 8 * ctor.BYTES_PER_ELEMENT); - const taWrite = new ctor(rab); - for (let i = 0; i < 4; ++i) { - WriteToTypedArray(taWrite, i, i); - } - let resizeWhenConstructorCalled = false; - class MyArray extends ctor { - constructor(...params) { - super(...params); - if (resizeWhenConstructorCalled) { - rab.resize(6 * ctor.BYTES_PER_ELEMENT); - } - } - } - ; - const lengthTracking = new MyArray(rab); - resizeWhenConstructorCalled = true; - assert.compareArray(Helper(lengthTracking), [ - 0, - 1, - 2, - 3 - ]); - assert.sameValue(rab.byteLength, 6 * ctor.BYTES_PER_ELEMENT); -} diff --git a/test/staging/ArrayBuffer/resizable/map-species-create-shrinks.js b/test/staging/ArrayBuffer/resizable/map-species-create-shrinks.js deleted file mode 100644 index efe107c2933..00000000000 --- a/test/staging/ArrayBuffer/resizable/map-species-create-shrinks.js +++ /dev/null @@ -1,127 +0,0 @@ -// Copyright 2021 the V8 project authors. All rights reserved. -// This code is governed by the BSD license found in the LICENSE file. - -/*--- -esid: sec-arraybuffer-length -description: > - Automatically ported from MapSpeciesCreateShrinks test - in V8's mjsunit test typedarray-resizablearraybuffer.js -includes: [compareArray.js] -features: [resizable-arraybuffer] -flags: [onlyStrict] ----*/ - -class MyUint8Array extends Uint8Array { -} - -class MyFloat32Array extends Float32Array { -} - -class MyBigInt64Array extends BigInt64Array { -} - -const builtinCtors = [ - Uint8Array, - Int8Array, - Uint16Array, - Int16Array, - Uint32Array, - Int32Array, - Float32Array, - Float64Array, - Uint8ClampedArray, - BigUint64Array, - BigInt64Array -]; - -const ctors = [ - ...builtinCtors, - MyUint8Array, - MyFloat32Array, - MyBigInt64Array -]; - -function CreateResizableArrayBuffer(byteLength, maxByteLength) { - return new ArrayBuffer(byteLength, { maxByteLength: maxByteLength }); -} - -function IsBigIntTypedArray(ta) { - return ta instanceof BigInt64Array || ta instanceof BigUint64Array; -} - -function WriteToTypedArray(array, index, value) { - if (array instanceof BigInt64Array || array instanceof BigUint64Array) { - array[index] = BigInt(value); - } else { - array[index] = value; - } -} - -let values; -let rab; -function CollectValues(n, ix, ta) { - if (typeof n == 'bigint') { - values.push(Number(n)); - } else { - values.push(n); - } - if (IsBigIntTypedArray(ta)) { - // We still need to return a valid BigInt / non-BigInt, even if - // n is `undefined`. - return 0n; - } - return 0; -} -function Helper(array) { - values = []; - array.map(CollectValues); - return values; -} -for (let ctor of ctors) { - rab = CreateResizableArrayBuffer(4 * ctor.BYTES_PER_ELEMENT, 8 * ctor.BYTES_PER_ELEMENT); - let resizeWhenConstructorCalled = false; - class MyArray extends ctor { - constructor(...params) { - super(...params); - if (resizeWhenConstructorCalled) { - rab.resize(2 * ctor.BYTES_PER_ELEMENT); - } - } - } - ; - const fixedLength = new MyArray(rab, 0, 4); - resizeWhenConstructorCalled = true; - assert.compareArray(Helper(fixedLength), [ - undefined, - undefined, - undefined, - undefined - ]); - assert.sameValue(rab.byteLength, 2 * ctor.BYTES_PER_ELEMENT); -} -for (let ctor of ctors) { - rab = CreateResizableArrayBuffer(4 * ctor.BYTES_PER_ELEMENT, 8 * ctor.BYTES_PER_ELEMENT); - const taWrite = new ctor(rab); - for (let i = 0; i < 4; ++i) { - WriteToTypedArray(taWrite, i, i); - } - let resizeWhenConstructorCalled = false; - class MyArray extends ctor { - constructor(...params) { - super(...params); - if (resizeWhenConstructorCalled) { - rab.resize(2 * ctor.BYTES_PER_ELEMENT); - } - } - } - ; - const lengthTracking = new MyArray(rab); - resizeWhenConstructorCalled = true; - assert.compareArray(Helper(lengthTracking), [ - 0, - 1, - undefined, - undefined - ]); - assert.sameValue(rab.byteLength, 2 * ctor.BYTES_PER_ELEMENT); -} diff --git a/test/staging/ArrayBuffer/resizable/object-define-property-define-properties.js b/test/staging/ArrayBuffer/resizable/object-define-property-define-properties.js deleted file mode 100644 index 295a4b57b74..00000000000 --- a/test/staging/ArrayBuffer/resizable/object-define-property-define-properties.js +++ /dev/null @@ -1,275 +0,0 @@ -// Copyright 2021 the V8 project authors. All rights reserved. -// This code is governed by the BSD license found in the LICENSE file. - -/*--- -esid: sec-arraybuffer-length -description: > - Automatically ported from ObjectDefinePropertyDefineProperties test - in V8's mjsunit test typedarray-resizablearraybuffer.js -includes: [compareArray.js] -features: [resizable-arraybuffer] -flags: [onlyStrict] ----*/ - -class MyUint8Array extends Uint8Array { -} - -class MyFloat32Array extends Float32Array { -} - -class MyBigInt64Array extends BigInt64Array { -} - -const builtinCtors = [ - Uint8Array, - Int8Array, - Uint16Array, - Int16Array, - Uint32Array, - Int32Array, - Float32Array, - Float64Array, - Uint8ClampedArray, - BigUint64Array, - BigInt64Array -]; - -const ctors = [ - ...builtinCtors, - MyUint8Array, - MyFloat32Array, - MyBigInt64Array -]; - -function CreateResizableArrayBuffer(byteLength, maxByteLength) { - return new ArrayBuffer(byteLength, { maxByteLength: maxByteLength }); -} - -function Convert(item) { - if (typeof item == 'bigint') { - return Number(item); - } - return item; -} - -function ToNumbers(array) { - let result = []; - for (let item of array) { - result.push(Convert(item)); - } - return result; -} - -function ObjectDefinePropertyHelper(ta, index, value) { - if (ta instanceof BigInt64Array || ta instanceof BigUint64Array) { - Object.defineProperty(ta, index, { value: BigInt(value) }); - } else { - Object.defineProperty(ta, index, { value: value }); - } -} - -function ObjectDefinePropertiesHelper(ta, index, value) { - const values = {}; - if (ta instanceof BigInt64Array || ta instanceof BigUint64Array) { - values[index] = { value: BigInt(value) }; - } else { - values[index] = { value: value }; - } - Object.defineProperties(ta, values); -} - -for (let helper of [ - ObjectDefinePropertyHelper, - ObjectDefinePropertiesHelper - ]) { - for (let ctor of ctors) { - const rab = CreateResizableArrayBuffer(4 * ctor.BYTES_PER_ELEMENT, 8 * ctor.BYTES_PER_ELEMENT); - const fixedLength = new ctor(rab, 0, 4); - const fixedLengthWithOffset = new ctor(rab, 2 * ctor.BYTES_PER_ELEMENT, 2); - const lengthTracking = new ctor(rab, 0); - const lengthTrackingWithOffset = new ctor(rab, 2 * ctor.BYTES_PER_ELEMENT); - const taFull = new ctor(rab, 0); - - // Orig. array: [0, 0, 0, 0] - // [0, 0, 0, 0] << fixedLength - // [0, 0] << fixedLengthWithOffset - // [0, 0, 0, 0, ...] << lengthTracking - // [0, 0, ...] << lengthTrackingWithOffset - - helper(fixedLength, 0, 1); - assert.compareArray(ToNumbers(taFull), [ - 1, - 0, - 0, - 0 - ]); - helper(fixedLengthWithOffset, 0, 2); - assert.compareArray(ToNumbers(taFull), [ - 1, - 0, - 2, - 0 - ]); - helper(lengthTracking, 1, 3); - assert.compareArray(ToNumbers(taFull), [ - 1, - 3, - 2, - 0 - ]); - helper(lengthTrackingWithOffset, 1, 4); - assert.compareArray(ToNumbers(taFull), [ - 1, - 3, - 2, - 4 - ]); - assert.throws(TypeError, () => { - helper(fixedLength, 4, 8); - }); - assert.throws(TypeError, () => { - helper(fixedLengthWithOffset, 2, 8); - }); - assert.throws(TypeError, () => { - helper(lengthTracking, 4, 8); - }); - assert.throws(TypeError, () => { - helper(lengthTrackingWithOffset, 2, 8); - }); - - // Shrink so that fixed length TAs go out of bounds. - rab.resize(3 * ctor.BYTES_PER_ELEMENT); - - // Orig. array: [1, 3, 2] - // [1, 3, 2, ...] << lengthTracking - // [2, ...] << lengthTrackingWithOffset - - assert.throws(TypeError, () => { - helper(fixedLength, 0, 8); - }); - assert.throws(TypeError, () => { - helper(fixedLengthWithOffset, 0, 8); - }); - assert.compareArray(ToNumbers(taFull), [ - 1, - 3, - 2 - ]); - helper(lengthTracking, 0, 5); - assert.compareArray(ToNumbers(taFull), [ - 5, - 3, - 2 - ]); - helper(lengthTrackingWithOffset, 0, 6); - assert.compareArray(ToNumbers(taFull), [ - 5, - 3, - 6 - ]); - - // Shrink so that the TAs with offset go out of bounds. - rab.resize(1 * ctor.BYTES_PER_ELEMENT); - assert.throws(TypeError, () => { - helper(fixedLength, 0, 8); - }); - assert.throws(TypeError, () => { - helper(fixedLengthWithOffset, 0, 8); - }); - assert.throws(TypeError, () => { - helper(lengthTrackingWithOffset, 0, 8); - }); - assert.compareArray(ToNumbers(taFull), [5]); - helper(lengthTracking, 0, 7); - assert.compareArray(ToNumbers(taFull), [7]); - - // Shrink to zero. - rab.resize(0); - assert.throws(TypeError, () => { - helper(fixedLength, 0, 8); - }); - assert.throws(TypeError, () => { - helper(fixedLengthWithOffset, 0, 8); - }); - assert.throws(TypeError, () => { - helper(lengthTracking, 0, 8); - }); - assert.throws(TypeError, () => { - helper(lengthTrackingWithOffset, 0, 8); - }); - assert.compareArray(ToNumbers(taFull), []); - - // Grow so that all TAs are back in-bounds. - rab.resize(6 * ctor.BYTES_PER_ELEMENT); - helper(fixedLength, 0, 9); - assert.compareArray(ToNumbers(taFull), [ - 9, - 0, - 0, - 0, - 0, - 0 - ]); - helper(fixedLengthWithOffset, 0, 10); - assert.compareArray(ToNumbers(taFull), [ - 9, - 0, - 10, - 0, - 0, - 0 - ]); - helper(lengthTracking, 1, 11); - assert.compareArray(ToNumbers(taFull), [ - 9, - 11, - 10, - 0, - 0, - 0 - ]); - helper(lengthTrackingWithOffset, 2, 12); - assert.compareArray(ToNumbers(taFull), [ - 9, - 11, - 10, - 0, - 12, - 0 - ]); - - // Trying to define properties out of the fixed-length bounds throws. - assert.throws(TypeError, () => { - helper(fixedLength, 5, 13); - }); - assert.throws(TypeError, () => { - helper(fixedLengthWithOffset, 3, 13); - }); - assert.compareArray(ToNumbers(taFull), [ - 9, - 11, - 10, - 0, - 12, - 0 - ]); - helper(lengthTracking, 4, 14); - assert.compareArray(ToNumbers(taFull), [ - 9, - 11, - 10, - 0, - 14, - 0 - ]); - helper(lengthTrackingWithOffset, 3, 15); - assert.compareArray(ToNumbers(taFull), [ - 9, - 11, - 10, - 0, - 14, - 15 - ]); - } -} diff --git a/test/staging/ArrayBuffer/resizable/object-define-property-parameter-conversion-grows.js b/test/staging/ArrayBuffer/resizable/object-define-property-parameter-conversion-grows.js deleted file mode 100644 index f5886f7ba33..00000000000 --- a/test/staging/ArrayBuffer/resizable/object-define-property-parameter-conversion-grows.js +++ /dev/null @@ -1,113 +0,0 @@ -// Copyright 2021 the V8 project authors. All rights reserved. -// This code is governed by the BSD license found in the LICENSE file. - -/*--- -esid: sec-arraybuffer-length -description: > - Automatically ported from ObjectDefinePropertyParameterConversionGrows test - in V8's mjsunit test typedarray-resizablearraybuffer.js -includes: [compareArray.js] -features: [resizable-arraybuffer] -flags: [onlyStrict] ----*/ - -class MyUint8Array extends Uint8Array { -} - -class MyFloat32Array extends Float32Array { -} - -class MyBigInt64Array extends BigInt64Array { -} - -const builtinCtors = [ - Uint8Array, - Int8Array, - Uint16Array, - Int16Array, - Uint32Array, - Int32Array, - Float32Array, - Float64Array, - Uint8ClampedArray, - BigUint64Array, - BigInt64Array -]; - -const ctors = [ - ...builtinCtors, - MyUint8Array, - MyFloat32Array, - MyBigInt64Array -]; - -function CreateResizableArrayBuffer(byteLength, maxByteLength) { - return new ArrayBuffer(byteLength, { maxByteLength: maxByteLength }); -} - -function Convert(item) { - if (typeof item == 'bigint') { - return Number(item); - } - return item; -} - -function ToNumbers(array) { - let result = []; - for (let item of array) { - result.push(Convert(item)); - } - return result; -} - -function ObjectDefinePropertyHelper(ta, index, value) { - if (ta instanceof BigInt64Array || ta instanceof BigUint64Array) { - Object.defineProperty(ta, index, { value: BigInt(value) }); - } else { - Object.defineProperty(ta, index, { value: value }); - } -} - -const helper = ObjectDefinePropertyHelper; - -// Fixed length. -for (let ctor of ctors) { - const rab = CreateResizableArrayBuffer(4 * ctor.BYTES_PER_ELEMENT, 8 * ctor.BYTES_PER_ELEMENT); - const fixedLength = new ctor(rab, 0, 4); - // Make fixedLength go OOB. - rab.resize(2 * ctor.BYTES_PER_ELEMENT); - const evil = { - toString: () => { - rab.resize(6 * ctor.BYTES_PER_ELEMENT); - return 0; - } - }; - helper(fixedLength, evil, 8); - assert.compareArray(ToNumbers(fixedLength), [ - 8, - 0, - 0, - 0 - ]); -} - -// Length tracking. -for (let ctor of ctors) { - const rab = CreateResizableArrayBuffer(4 * ctor.BYTES_PER_ELEMENT, 8 * ctor.BYTES_PER_ELEMENT); - const lengthTracking = new ctor(rab, 0); - const evil = { - toString: () => { - rab.resize(6 * ctor.BYTES_PER_ELEMENT); - return 4; // Index valid after resize. - } - }; - helper(lengthTracking, evil, 8); - assert.compareArray(ToNumbers(lengthTracking), [ - 0, - 0, - 0, - 0, - 8, - 0 - ]); -} diff --git a/test/staging/ArrayBuffer/resizable/object-define-property-parameter-conversion-shrinks.js b/test/staging/ArrayBuffer/resizable/object-define-property-parameter-conversion-shrinks.js deleted file mode 100644 index a8fb0657d39..00000000000 --- a/test/staging/ArrayBuffer/resizable/object-define-property-parameter-conversion-shrinks.js +++ /dev/null @@ -1,85 +0,0 @@ -// Copyright 2021 the V8 project authors. All rights reserved. -// This code is governed by the BSD license found in the LICENSE file. - -/*--- -esid: sec-arraybuffer-length -description: > - Automatically ported from ObjectDefinePropertyParameterConversionShrinks test - in V8's mjsunit test typedarray-resizablearraybuffer.js -features: [resizable-arraybuffer] -flags: [onlyStrict] ----*/ - -class MyUint8Array extends Uint8Array { -} - -class MyFloat32Array extends Float32Array { -} - -class MyBigInt64Array extends BigInt64Array { -} - -const builtinCtors = [ - Uint8Array, - Int8Array, - Uint16Array, - Int16Array, - Uint32Array, - Int32Array, - Float32Array, - Float64Array, - Uint8ClampedArray, - BigUint64Array, - BigInt64Array -]; - -const ctors = [ - ...builtinCtors, - MyUint8Array, - MyFloat32Array, - MyBigInt64Array -]; - -function CreateResizableArrayBuffer(byteLength, maxByteLength) { - return new ArrayBuffer(byteLength, { maxByteLength: maxByteLength }); -} - -function ObjectDefinePropertyHelper(ta, index, value) { - if (ta instanceof BigInt64Array || ta instanceof BigUint64Array) { - Object.defineProperty(ta, index, { value: BigInt(value) }); - } else { - Object.defineProperty(ta, index, { value: value }); - } -} - -const helper = ObjectDefinePropertyHelper; - -// Fixed length. -for (let ctor of ctors) { - const rab = CreateResizableArrayBuffer(4 * ctor.BYTES_PER_ELEMENT, 8 * ctor.BYTES_PER_ELEMENT); - const fixedLength = new ctor(rab, 0, 4); - const evil = { - toString: () => { - rab.resize(2 * ctor.BYTES_PER_ELEMENT); - return 0; - } - }; - assert.throws(TypeError, () => { - helper(fixedLength, evil, 8); - }); -} - -// Length tracking. -for (let ctor of ctors) { - const rab = CreateResizableArrayBuffer(4 * ctor.BYTES_PER_ELEMENT, 8 * ctor.BYTES_PER_ELEMENT); - const lengthTracking = new ctor(rab, 0); - const evil = { - toString: () => { - rab.resize(2 * ctor.BYTES_PER_ELEMENT); - return 3; // Index too large after resize. - } - }; - assert.throws(TypeError, () => { - helper(lengthTracking, evil, 8); - }); -} diff --git a/test/staging/ArrayBuffer/resizable/oobbehaves-like-detached.js b/test/staging/ArrayBuffer/resizable/oobbehaves-like-detached.js deleted file mode 100644 index 718ff60b584..00000000000 --- a/test/staging/ArrayBuffer/resizable/oobbehaves-like-detached.js +++ /dev/null @@ -1,31 +0,0 @@ -// Copyright 2021 the V8 project authors. All rights reserved. -// This code is governed by the BSD license found in the LICENSE file. - -/*--- -esid: sec-arraybuffer-length -description: > - Automatically ported from OOBBehavesLikeDetached test - in V8's mjsunit test typedarray-resizablearraybuffer.js -features: [resizable-arraybuffer] -flags: [onlyStrict] ----*/ - -function CreateResizableArrayBuffer(byteLength, maxByteLength) { - return new ArrayBuffer(byteLength, { maxByteLength: maxByteLength }); -} - -function ReadElement2(ta) { - return ta[2]; -} -function HasElement2(ta) { - return 2 in ta; -} -const rab = CreateResizableArrayBuffer(16, 40); -const i8a = new Int8Array(rab, 0, 4); -i8a.__proto__ = { 2: 'wrong value' }; -i8a[2] = 10; -assert.sameValue(ReadElement2(i8a), 10); -assert(HasElement2(i8a)); -rab.resize(0); -assert.sameValue(ReadElement2(i8a), undefined); -assert(!HasElement2(i8a)); diff --git a/test/staging/ArrayBuffer/resizable/out-of-bounds-typed-array-and-has.js b/test/staging/ArrayBuffer/resizable/out-of-bounds-typed-array-and-has.js deleted file mode 100644 index fb5944fd8c2..00000000000 --- a/test/staging/ArrayBuffer/resizable/out-of-bounds-typed-array-and-has.js +++ /dev/null @@ -1,73 +0,0 @@ -// Copyright 2021 the V8 project authors. All rights reserved. -// This code is governed by the BSD license found in the LICENSE file. - -/*--- -esid: sec-arraybuffer-length -description: > - Automatically ported from OutOfBoundsTypedArrayAndHas test - in V8's mjsunit test typedarray-resizablearraybuffer.js -features: [resizable-arraybuffer] -flags: [onlyStrict] ----*/ - -class MyUint8Array extends Uint8Array { -} - -class MyFloat32Array extends Float32Array { -} - -class MyBigInt64Array extends BigInt64Array { -} - -const builtinCtors = [ - Uint8Array, - Int8Array, - Uint16Array, - Int16Array, - Uint32Array, - Int32Array, - Float32Array, - Float64Array, - Uint8ClampedArray, - BigUint64Array, - BigInt64Array -]; - -const ctors = [ - ...builtinCtors, - MyUint8Array, - MyFloat32Array, - MyBigInt64Array -]; - -function CreateResizableArrayBuffer(byteLength, maxByteLength) { - return new ArrayBuffer(byteLength, { maxByteLength: maxByteLength }); -} - -for (let ctor of ctors) { - if (ctor.BYTES_PER_ELEMENT != 1) { - continue; - } - const rab = CreateResizableArrayBuffer(16, 40); - const array = new ctor(rab, 0, 4); - // Within-bounds read - for (let i = 0; i < 4; ++i) { - assert(i in array); - } - rab.resize(2); - // OOB read. If the RAB isn't large enough to fit the entire TypedArray, - // the length of the TypedArray is treated as 0. - for (let i = 0; i < 4; ++i) { - assert(!(i in array)); - } - rab.resize(4); - // Within-bounds read - for (let i = 0; i < 4; ++i) { - assert(i in array); - } - rab.resize(40); - // Within-bounds read - for (let i = 0; i < 4; ++i) { - assert(i in array); - } -} diff --git a/test/staging/ArrayBuffer/resizable/reverse.js b/test/staging/ArrayBuffer/resizable/reverse.js deleted file mode 100644 index c786ddf4c74..00000000000 --- a/test/staging/ArrayBuffer/resizable/reverse.js +++ /dev/null @@ -1,269 +0,0 @@ -// Copyright 2021 the V8 project authors. All rights reserved. -// This code is governed by the BSD license found in the LICENSE file. - -/*--- -esid: sec-arraybuffer-length -description: > - Automatically ported from Reverse test - in V8's mjsunit test typedarray-resizablearraybuffer.js -includes: [compareArray.js] -features: [resizable-arraybuffer] -flags: [onlyStrict] ----*/ - -class MyUint8Array extends Uint8Array { -} - -class MyFloat32Array extends Float32Array { -} - -class MyBigInt64Array extends BigInt64Array { -} - -const builtinCtors = [ - Uint8Array, - Int8Array, - Uint16Array, - Int16Array, - Uint32Array, - Int32Array, - Float32Array, - Float64Array, - Uint8ClampedArray, - BigUint64Array, - BigInt64Array -]; - -const ctors = [ - ...builtinCtors, - MyUint8Array, - MyFloat32Array, - MyBigInt64Array -]; - -function CreateResizableArrayBuffer(byteLength, maxByteLength) { - return new ArrayBuffer(byteLength, { maxByteLength: maxByteLength }); -} - -function WriteToTypedArray(array, index, value) { - if (array instanceof BigInt64Array || array instanceof BigUint64Array) { - array[index] = BigInt(value); - } else { - array[index] = value; - } -} - -function Convert(item) { - if (typeof item == 'bigint') { - return Number(item); - } - return item; -} - -function ToNumbers(array) { - let result = []; - for (let item of array) { - result.push(Convert(item)); - } - return result; -} - -const TypedArrayReverseHelper = ta => { - ta.reverse(); -}; - -const ArrayReverseHelper = ta => { - Array.prototype.reverse.call(ta); -}; - -function Reverse(reverseHelper, oobThrows) { - for (let ctor of ctors) { - const rab = CreateResizableArrayBuffer(4 * ctor.BYTES_PER_ELEMENT, 8 * ctor.BYTES_PER_ELEMENT); - const fixedLength = new ctor(rab, 0, 4); - const fixedLengthWithOffset = new ctor(rab, 2 * ctor.BYTES_PER_ELEMENT, 2); - const lengthTracking = new ctor(rab, 0); - const lengthTrackingWithOffset = new ctor(rab, 2 * ctor.BYTES_PER_ELEMENT); - const wholeArrayView = new ctor(rab); - function WriteData() { - // Write some data into the array. - for (let i = 0; i < wholeArrayView.length; ++i) { - WriteToTypedArray(wholeArrayView, i, 2 * i); - } - } - WriteData(); - - // Orig. array: [0, 2, 4, 6] - // [0, 2, 4, 6] << fixedLength - // [4, 6] << fixedLengthWithOffset - // [0, 2, 4, 6, ...] << lengthTracking - // [4, 6, ...] << lengthTrackingWithOffset - - reverseHelper(fixedLength); - assert.compareArray(ToNumbers(wholeArrayView), [ - 6, - 4, - 2, - 0 - ]); - reverseHelper(fixedLengthWithOffset); - assert.compareArray(ToNumbers(wholeArrayView), [ - 6, - 4, - 0, - 2 - ]); - reverseHelper(lengthTracking); - assert.compareArray(ToNumbers(wholeArrayView), [ - 2, - 0, - 4, - 6 - ]); - reverseHelper(lengthTrackingWithOffset); - assert.compareArray(ToNumbers(wholeArrayView), [ - 2, - 0, - 6, - 4 - ]); - - // Shrink so that fixed length TAs go out of bounds. - rab.resize(3 * ctor.BYTES_PER_ELEMENT); - WriteData(); - - // Orig. array: [0, 2, 4] - // [0, 2, 4, ...] << lengthTracking - // [4, ...] << lengthTrackingWithOffset - - if (oobThrows) { - assert.throws(TypeError, () => { - reverseHelper(fixedLength); - }); - assert.throws(TypeError, () => { - reverseHelper(fixedLengthWithOffset); - }); - } else { - reverseHelper(fixedLength); - assert.compareArray(ToNumbers(wholeArrayView), [ - 0, - 2, - 4 - ]); - reverseHelper(fixedLengthWithOffset); - assert.compareArray(ToNumbers(wholeArrayView), [ - 0, - 2, - 4 - ]); - } - reverseHelper(lengthTracking); - assert.compareArray(ToNumbers(wholeArrayView), [ - 4, - 2, - 0 - ]); - reverseHelper(lengthTrackingWithOffset); - assert.compareArray(ToNumbers(wholeArrayView), [ - 4, - 2, - 0 - ]); - - // Shrink so that the TAs with offset go out of bounds. - rab.resize(1 * ctor.BYTES_PER_ELEMENT); - WriteData(); - if (oobThrows) { - assert.throws(TypeError, () => { - reverseHelper(fixedLength); - }); - assert.throws(TypeError, () => { - reverseHelper(fixedLengthWithOffset); - }); - assert.throws(TypeError, () => { - reverseHelper(lengthTrackingWithOffset); - }); - } else { - reverseHelper(fixedLength); - assert.compareArray(ToNumbers(wholeArrayView), [0]); - reverseHelper(fixedLengthWithOffset); - assert.compareArray(ToNumbers(wholeArrayView), [0]); - reverseHelper(lengthTrackingWithOffset); - assert.compareArray(ToNumbers(wholeArrayView), [0]); - } - reverseHelper(lengthTracking); - assert.compareArray(ToNumbers(wholeArrayView), [0]); - - // Shrink to zero. - rab.resize(0); - if (oobThrows) { - assert.throws(TypeError, () => { - reverseHelper(fixedLength); - }); - assert.throws(TypeError, () => { - reverseHelper(fixedLengthWithOffset); - }); - assert.throws(TypeError, () => { - reverseHelper(lengthTrackingWithOffset); - }); - } else { - reverseHelper(fixedLength); - assert.compareArray(ToNumbers(wholeArrayView), []); - reverseHelper(fixedLengthWithOffset); - assert.compareArray(ToNumbers(wholeArrayView), []); - reverseHelper(lengthTrackingWithOffset); - assert.compareArray(ToNumbers(wholeArrayView), []); - } - reverseHelper(lengthTracking); - assert.compareArray(ToNumbers(wholeArrayView), []); - - // Grow so that all TAs are back in-bounds. - rab.resize(6 * ctor.BYTES_PER_ELEMENT); - WriteData(); - - // Orig. array: [0, 2, 4, 6, 8, 10] - // [0, 2, 4, 6] << fixedLength - // [4, 6] << fixedLengthWithOffset - // [0, 2, 4, 6, 8, 10, ...] << lengthTracking - // [4, 6, 8, 10, ...] << lengthTrackingWithOffset - - reverseHelper(fixedLength); - assert.compareArray(ToNumbers(wholeArrayView), [ - 6, - 4, - 2, - 0, - 8, - 10 - ]); - reverseHelper(fixedLengthWithOffset); - assert.compareArray(ToNumbers(wholeArrayView), [ - 6, - 4, - 0, - 2, - 8, - 10 - ]); - reverseHelper(lengthTracking); - assert.compareArray(ToNumbers(wholeArrayView), [ - 10, - 8, - 2, - 0, - 4, - 6 - ]); - reverseHelper(lengthTrackingWithOffset); - assert.compareArray(ToNumbers(wholeArrayView), [ - 10, - 8, - 6, - 4, - 0, - 2 - ]); - } -} - -Reverse(TypedArrayReverseHelper, true); -Reverse(ArrayReverseHelper, false); diff --git a/test/staging/ArrayBuffer/resizable/set-grow-target-mid-iteration.js b/test/staging/ArrayBuffer/resizable/set-grow-target-mid-iteration.js deleted file mode 100644 index 99d78b0335f..00000000000 --- a/test/staging/ArrayBuffer/resizable/set-grow-target-mid-iteration.js +++ /dev/null @@ -1,188 +0,0 @@ -// Copyright 2021 the V8 project authors. All rights reserved. -// This code is governed by the BSD license found in the LICENSE file. - -/*--- -esid: sec-arraybuffer-length -description: > - Automatically ported from SetGrowTargetMidIteration test - in V8's mjsunit test typedarray-resizablearraybuffer.js -includes: [compareArray.js] -features: [resizable-arraybuffer] -flags: [onlyStrict] ----*/ - -class MyUint8Array extends Uint8Array { -} - -class MyFloat32Array extends Float32Array { -} - -class MyBigInt64Array extends BigInt64Array { -} - -const builtinCtors = [ - Uint8Array, - Int8Array, - Uint16Array, - Int16Array, - Uint32Array, - Int32Array, - Float32Array, - Float64Array, - Uint8ClampedArray, - BigUint64Array, - BigInt64Array -]; - -const ctors = [ - ...builtinCtors, - MyUint8Array, - MyFloat32Array, - MyBigInt64Array -]; - -function CreateResizableArrayBuffer(byteLength, maxByteLength) { - return new ArrayBuffer(byteLength, { maxByteLength: maxByteLength }); -} - -function WriteToTypedArray(array, index, value) { - if (array instanceof BigInt64Array || array instanceof BigUint64Array) { - array[index] = BigInt(value); - } else { - array[index] = value; - } -} - -function Convert(item) { - if (typeof item == 'bigint') { - return Number(item); - } - return item; -} - -function ToNumbers(array) { - let result = []; - for (let item of array) { - result.push(Convert(item)); - } - return result; -} - -// Orig. array: [0, 2, 4, 6] -// [0, 2, 4, 6] << fixedLength -// [4, 6] << fixedLengthWithOffset -// [0, 2, 4, 6, ...] << lengthTracking -// [4, 6, ...] << lengthTrackingWithOffset -function CreateRabForTest(ctor) { - const rab = CreateResizableArrayBuffer(4 * ctor.BYTES_PER_ELEMENT, 8 * ctor.BYTES_PER_ELEMENT); - // Write some data into the array. - const taWrite = new ctor(rab); - for (let i = 0; i < 4; ++i) { - WriteToTypedArray(taWrite, i, 2 * i); - } - return rab; -} -let rab; -// Resizing will happen when we're calling Get for the `resizeAt`:th data -// element, but we haven't yet written it to the target. -let resizeAt; -let resizeTo; -function CreateSourceProxy(length) { - let requestedIndices = []; - return new Proxy({}, { - get(target, prop, receiver) { - if (prop == 'length') { - return length; - } - requestedIndices.push(prop); - if (requestedIndices.length == resizeAt) { - rab.resize(resizeTo); - } - return true; // Can be converted to both BigInt and Number. - } - }); -} -for (let ctor of ctors) { - rab = CreateRabForTest(ctor); - const fixedLength = new ctor(rab, 0, 4); - resizeAt = 2; - resizeTo = 6 * ctor.BYTES_PER_ELEMENT; - fixedLength.set(CreateSourceProxy(4)); - assert.compareArray(ToNumbers(fixedLength), [ - 1, - 1, - 1, - 1 - ]); - assert.compareArray(ToNumbers(new ctor(rab)), [ - 1, - 1, - 1, - 1, - 0, - 0 - ]); -} -for (let ctor of ctors) { - rab = CreateRabForTest(ctor); - const fixedLengthWithOffset = new ctor(rab, 2 * ctor.BYTES_PER_ELEMENT, 2); - resizeAt = 1; - resizeTo = 6 * ctor.BYTES_PER_ELEMENT; - fixedLengthWithOffset.set(CreateSourceProxy(2)); - assert.compareArray(ToNumbers(fixedLengthWithOffset), [ - 1, - 1 - ]); - assert.compareArray(ToNumbers(new ctor(rab)), [ - 0, - 2, - 1, - 1, - 0, - 0 - ]); -} -for (let ctor of ctors) { - rab = CreateRabForTest(ctor); - const lengthTracking = new ctor(rab, 0); - resizeAt = 2; - resizeTo = 6 * ctor.BYTES_PER_ELEMENT; - lengthTracking.set(CreateSourceProxy(2)); - assert.compareArray(ToNumbers(lengthTracking), [ - 1, - 1, - 4, - 6, - 0, - 0 - ]); - assert.compareArray(ToNumbers(new ctor(rab)), [ - 1, - 1, - 4, - 6, - 0, - 0 - ]); -} -for (let ctor of ctors) { - rab = CreateRabForTest(ctor); - const lengthTrackingWithOffset = new ctor(rab, 2 * ctor.BYTES_PER_ELEMENT); - resizeAt = 1; - resizeTo = 6 * ctor.BYTES_PER_ELEMENT; - lengthTrackingWithOffset.set(CreateSourceProxy(2)); - assert.compareArray(ToNumbers(lengthTrackingWithOffset), [ - 1, - 1, - 0, - 0 - ]); - assert.compareArray(ToNumbers(new ctor(rab)), [ - 0, - 2, - 1, - 1, - 0, - 0 - ]); -} diff --git a/test/staging/ArrayBuffer/resizable/set-shrink-target-mid-iteration.js b/test/staging/ArrayBuffer/resizable/set-shrink-target-mid-iteration.js deleted file mode 100644 index e0149dd7561..00000000000 --- a/test/staging/ArrayBuffer/resizable/set-shrink-target-mid-iteration.js +++ /dev/null @@ -1,168 +0,0 @@ -// Copyright 2021 the V8 project authors. All rights reserved. -// This code is governed by the BSD license found in the LICENSE file. - -/*--- -esid: sec-arraybuffer-length -description: > - Automatically ported from SetShrinkTargetMidIteration test - in V8's mjsunit test typedarray-resizablearraybuffer.js -includes: [compareArray.js] -features: [resizable-arraybuffer] -flags: [onlyStrict] ----*/ - -class MyUint8Array extends Uint8Array { -} - -class MyFloat32Array extends Float32Array { -} - -class MyBigInt64Array extends BigInt64Array { -} - -const builtinCtors = [ - Uint8Array, - Int8Array, - Uint16Array, - Int16Array, - Uint32Array, - Int32Array, - Float32Array, - Float64Array, - Uint8ClampedArray, - BigUint64Array, - BigInt64Array -]; - -const ctors = [ - ...builtinCtors, - MyUint8Array, - MyFloat32Array, - MyBigInt64Array -]; - -function CreateResizableArrayBuffer(byteLength, maxByteLength) { - return new ArrayBuffer(byteLength, { maxByteLength: maxByteLength }); -} - -function WriteToTypedArray(array, index, value) { - if (array instanceof BigInt64Array || array instanceof BigUint64Array) { - array[index] = BigInt(value); - } else { - array[index] = value; - } -} - -function Convert(item) { - if (typeof item == 'bigint') { - return Number(item); - } - return item; -} - -function ToNumbers(array) { - let result = []; - for (let item of array) { - result.push(Convert(item)); - } - return result; -} - -// Orig. array: [0, 2, 4, 6] -// [0, 2, 4, 6] << fixedLength -// [4, 6] << fixedLengthWithOffset -// [0, 2, 4, 6, ...] << lengthTracking -// [4, 6, ...] << lengthTrackingWithOffset -function CreateRabForTest(ctor) { - const rab = CreateResizableArrayBuffer(4 * ctor.BYTES_PER_ELEMENT, 8 * ctor.BYTES_PER_ELEMENT); - // Write some data into the array. - const taWrite = new ctor(rab); - for (let i = 0; i < 4; ++i) { - WriteToTypedArray(taWrite, i, 2 * i); - } - return rab; -} -let rab; -// Resizing will happen when we're calling Get for the `resizeAt`:th data -// element, but we haven't yet written it to the target. -let resizeAt; -let resizeTo; -function CreateSourceProxy(length) { - let requestedIndices = []; - return new Proxy({}, { - get(target, prop, receiver) { - if (prop == 'length') { - return length; - } - requestedIndices.push(prop); - if (requestedIndices.length == resizeAt) { - rab.resize(resizeTo); - } - return true; // Can be converted to both BigInt and Number. - } - }); -} -for (let ctor of ctors) { - rab = CreateRabForTest(ctor); - const fixedLength = new ctor(rab, 0, 4); - resizeAt = 2; - resizeTo = 3 * ctor.BYTES_PER_ELEMENT; - fixedLength.set(CreateSourceProxy(4)); - assert.compareArray(ToNumbers(new ctor(rab)), [ - 1, - 2, - 4 - ]); -} -for (let ctor of ctors) { - rab = CreateRabForTest(ctor); - const fixedLengthWithOffset = new ctor(rab, 2 * ctor.BYTES_PER_ELEMENT, 2); - resizeAt = 2; - resizeTo = 3 * ctor.BYTES_PER_ELEMENT; - fixedLengthWithOffset.set(CreateSourceProxy(2)); - assert.compareArray(ToNumbers(new ctor(rab)), [ - 0, - 2, - 1 - ]); -} -for (let ctor of ctors) { - rab = CreateRabForTest(ctor); - const lengthTracking = new ctor(rab, 0); - resizeAt = 2; - resizeTo = 3 * ctor.BYTES_PER_ELEMENT; - lengthTracking.set(CreateSourceProxy(2)); - assert.compareArray(ToNumbers(lengthTracking), [ - 1, - 1, - 4 - ]); - assert.compareArray(ToNumbers(new ctor(rab)), [ - 1, - 1, - 4 - ]); -} -for (let ctor of ctors) { - rab = CreateRabForTest(ctor); - const lengthTrackingWithOffset = new ctor(rab, 2 * ctor.BYTES_PER_ELEMENT); - resizeAt = 2; - resizeTo = 3 * ctor.BYTES_PER_ELEMENT; - lengthTrackingWithOffset.set(CreateSourceProxy(2)); - assert.compareArray(ToNumbers(lengthTrackingWithOffset), [1]); - assert.compareArray(ToNumbers(new ctor(rab)), [ - 0, - 2, - 1 - ]); -} - -// Length-tracking TA goes OOB because of the offset. -for (let ctor of ctors) { - rab = CreateRabForTest(ctor); - const lengthTrackingWithOffset = new ctor(rab, 2 * ctor.BYTES_PER_ELEMENT); - resizeAt = 1; - resizeTo = 1 * ctor.BYTES_PER_ELEMENT; - lengthTrackingWithOffset.set(CreateSourceProxy(2)); - assert.compareArray(ToNumbers(new ctor(rab)), [0]); -} diff --git a/test/staging/ArrayBuffer/resizable/set-source-length-getter-grows-target.js b/test/staging/ArrayBuffer/resizable/set-source-length-getter-grows-target.js deleted file mode 100644 index e991294df3a..00000000000 --- a/test/staging/ArrayBuffer/resizable/set-source-length-getter-grows-target.js +++ /dev/null @@ -1,133 +0,0 @@ -// Copyright 2021 the V8 project authors. All rights reserved. -// This code is governed by the BSD license found in the LICENSE file. - -/*--- -esid: sec-arraybuffer-length -description: > - Automatically ported from SetSourceLengthGetterGrowsTarget test - in V8's mjsunit test typedarray-resizablearraybuffer.js -includes: [compareArray.js] -features: [resizable-arraybuffer] -flags: [onlyStrict] ----*/ - -class MyUint8Array extends Uint8Array { -} - -class MyFloat32Array extends Float32Array { -} - -class MyBigInt64Array extends BigInt64Array { -} - -const builtinCtors = [ - Uint8Array, - Int8Array, - Uint16Array, - Int16Array, - Uint32Array, - Int32Array, - Float32Array, - Float64Array, - Uint8ClampedArray, - BigUint64Array, - BigInt64Array -]; - -const ctors = [ - ...builtinCtors, - MyUint8Array, - MyFloat32Array, - MyBigInt64Array -]; - -function CreateResizableArrayBuffer(byteLength, maxByteLength) { - return new ArrayBuffer(byteLength, { maxByteLength: maxByteLength }); -} - -function WriteToTypedArray(array, index, value) { - if (array instanceof BigInt64Array || array instanceof BigUint64Array) { - array[index] = BigInt(value); - } else { - array[index] = value; - } -} - -function Convert(item) { - if (typeof item == 'bigint') { - return Number(item); - } - return item; -} - -function ToNumbers(array) { - let result = []; - for (let item of array) { - result.push(Convert(item)); - } - return result; -} - -// Orig. array: [0, 2, 4, 6] -// [0, 2, 4, 6] << fixedLength -// [4, 6] << fixedLengthWithOffset -// [0, 2, 4, 6, ...] << lengthTracking -// [4, 6, ...] << lengthTrackingWithOffset -function CreateRabForTest(ctor) { - const rab = CreateResizableArrayBuffer(4 * ctor.BYTES_PER_ELEMENT, 8 * ctor.BYTES_PER_ELEMENT); - // Write some data into the array. - const taWrite = new ctor(rab); - for (let i = 0; i < 4; ++i) { - WriteToTypedArray(taWrite, i, 2 * i); - } - return rab; -} -let rab; -let resizeTo; -function CreateSourceProxy(length) { - return new Proxy({}, { - get(target, prop, receiver) { - if (prop == 'length') { - rab.resize(resizeTo); - return length; - } - return true; // Can be converted to both BigInt and Number. - } - }); -} - -// Test that we still throw for lengthTracking TAs if the source length is -// too large, even though we resized in the length getter (we check against -// the original length). -for (let ctor of ctors) { - rab = CreateRabForTest(ctor); - const lengthTracking = new ctor(rab, 0); - resizeTo = 6 * ctor.BYTES_PER_ELEMENT; - assert.throws(RangeError, () => { - lengthTracking.set(CreateSourceProxy(6)); - }); - assert.compareArray(ToNumbers(new ctor(rab)), [ - 0, - 2, - 4, - 6, - 0, - 0 - ]); -} -for (let ctor of ctors) { - rab = CreateRabForTest(ctor); - const lengthTrackingWithOffset = new ctor(rab, 2 * ctor.BYTES_PER_ELEMENT); - resizeTo = 6 * ctor.BYTES_PER_ELEMENT; - assert.throws(RangeError, () => { - lengthTrackingWithOffset.set(CreateSourceProxy(4)); - }); - assert.compareArray(ToNumbers(new ctor(rab)), [ - 0, - 2, - 4, - 6, - 0, - 0 - ]); -} diff --git a/test/staging/ArrayBuffer/resizable/set-source-length-getter-shrinks-target.js b/test/staging/ArrayBuffer/resizable/set-source-length-getter-shrinks-target.js deleted file mode 100644 index 9cb2a3d8336..00000000000 --- a/test/staging/ArrayBuffer/resizable/set-source-length-getter-shrinks-target.js +++ /dev/null @@ -1,215 +0,0 @@ -// Copyright 2021 the V8 project authors. All rights reserved. -// This code is governed by the BSD license found in the LICENSE file. - -/*--- -esid: sec-arraybuffer-length -description: > - Automatically ported from SetSourceLengthGetterShrinksTarget test - in V8's mjsunit test typedarray-resizablearraybuffer.js -includes: [compareArray.js] -features: [resizable-arraybuffer] -flags: [onlyStrict] ----*/ - -class MyUint8Array extends Uint8Array { -} - -class MyFloat32Array extends Float32Array { -} - -class MyBigInt64Array extends BigInt64Array { -} - -const builtinCtors = [ - Uint8Array, - Int8Array, - Uint16Array, - Int16Array, - Uint32Array, - Int32Array, - Float32Array, - Float64Array, - Uint8ClampedArray, - BigUint64Array, - BigInt64Array -]; - -const ctors = [ - ...builtinCtors, - MyUint8Array, - MyFloat32Array, - MyBigInt64Array -]; - -function CreateResizableArrayBuffer(byteLength, maxByteLength) { - return new ArrayBuffer(byteLength, { maxByteLength: maxByteLength }); -} - -function WriteToTypedArray(array, index, value) { - if (array instanceof BigInt64Array || array instanceof BigUint64Array) { - array[index] = BigInt(value); - } else { - array[index] = value; - } -} - -function Convert(item) { - if (typeof item == 'bigint') { - return Number(item); - } - return item; -} - -function ToNumbers(array) { - let result = []; - for (let item of array) { - result.push(Convert(item)); - } - return result; -} - -// Orig. array: [0, 2, 4, 6] -// [0, 2, 4, 6] << fixedLength -// [4, 6] << fixedLengthWithOffset -// [0, 2, 4, 6, ...] << lengthTracking -// [4, 6, ...] << lengthTrackingWithOffset -function CreateRabForTest(ctor) { - const rab = CreateResizableArrayBuffer(4 * ctor.BYTES_PER_ELEMENT, 8 * ctor.BYTES_PER_ELEMENT); - // Write some data into the array. - const taWrite = new ctor(rab); - for (let i = 0; i < 4; ++i) { - WriteToTypedArray(taWrite, i, 2 * i); - } - return rab; -} -let rab; -let resizeTo; -function CreateSourceProxy(length) { - return new Proxy({}, { - get(target, prop, receiver) { - if (prop == 'length') { - rab.resize(resizeTo); - return length; - } - return true; // Can be converted to both BigInt and Number. - } - }); -} - -// Tests where the length getter returns a non-zero value -> these are nop if -// the TA went OOB. -for (let ctor of ctors) { - rab = CreateRabForTest(ctor); - const fixedLength = new ctor(rab, 0, 4); - resizeTo = 3 * ctor.BYTES_PER_ELEMENT; - fixedLength.set(CreateSourceProxy(1)); - assert.compareArray(ToNumbers(new ctor(rab)), [ - 0, - 2, - 4 - ]); -} -for (let ctor of ctors) { - rab = CreateRabForTest(ctor); - const fixedLengthWithOffset = new ctor(rab, 2 * ctor.BYTES_PER_ELEMENT, 2); - resizeTo = 3 * ctor.BYTES_PER_ELEMENT; - fixedLengthWithOffset.set(CreateSourceProxy(1)); - assert.compareArray(ToNumbers(new ctor(rab)), [ - 0, - 2, - 4 - ]); -} -for (let ctor of ctors) { - rab = CreateRabForTest(ctor); - const lengthTracking = new ctor(rab, 0); - resizeTo = 3 * ctor.BYTES_PER_ELEMENT; - lengthTracking.set(CreateSourceProxy(1)); - assert.compareArray(ToNumbers(lengthTracking), [ - 1, - 2, - 4 - ]); - assert.compareArray(ToNumbers(new ctor(rab)), [ - 1, - 2, - 4 - ]); -} -for (let ctor of ctors) { - rab = CreateRabForTest(ctor); - const lengthTrackingWithOffset = new ctor(rab, 2 * ctor.BYTES_PER_ELEMENT); - resizeTo = 3 * ctor.BYTES_PER_ELEMENT; - lengthTrackingWithOffset.set(CreateSourceProxy(1)); - assert.compareArray(ToNumbers(lengthTrackingWithOffset), [1]); - assert.compareArray(ToNumbers(new ctor(rab)), [ - 0, - 2, - 1 - ]); -} - -// Length-tracking TA goes OOB because of the offset. -for (let ctor of ctors) { - rab = CreateRabForTest(ctor); - const lengthTrackingWithOffset = new ctor(rab, 2 * ctor.BYTES_PER_ELEMENT); - resizeTo = 1 * ctor.BYTES_PER_ELEMENT; - lengthTrackingWithOffset.set(CreateSourceProxy(1)); - assert.compareArray(ToNumbers(new ctor(rab)), [0]); -} - -// Tests where the length getter returns a zero -> these don't throw even if -// the TA went OOB. -for (let ctor of ctors) { - rab = CreateRabForTest(ctor); - const fixedLength = new ctor(rab, 0, 4); - resizeTo = 3 * ctor.BYTES_PER_ELEMENT; - fixedLength.set(CreateSourceProxy(0)); - assert.compareArray(ToNumbers(new ctor(rab)), [ - 0, - 2, - 4 - ]); -} -for (let ctor of ctors) { - rab = CreateRabForTest(ctor); - const fixedLengthWithOffset = new ctor(rab, 2 * ctor.BYTES_PER_ELEMENT, 2); - resizeTo = 3 * ctor.BYTES_PER_ELEMENT; - fixedLengthWithOffset.set(CreateSourceProxy(0)); - assert.compareArray(ToNumbers(new ctor(rab)), [ - 0, - 2, - 4 - ]); -} -for (let ctor of ctors) { - rab = CreateRabForTest(ctor); - const lengthTracking = new ctor(rab, 0); - resizeTo = 3 * ctor.BYTES_PER_ELEMENT; - lengthTracking.set(CreateSourceProxy(0)); - assert.compareArray(ToNumbers(new ctor(rab)), [ - 0, - 2, - 4 - ]); -} -for (let ctor of ctors) { - rab = CreateRabForTest(ctor); - const lengthTrackingWithOffset = new ctor(rab, 2 * ctor.BYTES_PER_ELEMENT); - resizeTo = 3 * ctor.BYTES_PER_ELEMENT; - lengthTrackingWithOffset.set(CreateSourceProxy(0)); - assert.compareArray(ToNumbers(new ctor(rab)), [ - 0, - 2, - 4 - ]); -} - -// Length-tracking TA goes OOB because of the offset. -for (let ctor of ctors) { - rab = CreateRabForTest(ctor); - const lengthTrackingWithOffset = new ctor(rab, 2 * ctor.BYTES_PER_ELEMENT); - resizeTo = 1 * ctor.BYTES_PER_ELEMENT; - lengthTrackingWithOffset.set(CreateSourceProxy(0)); - assert.compareArray(ToNumbers(new ctor(rab)), [0]); -} diff --git a/test/staging/ArrayBuffer/resizable/set-with-resizable-source.js b/test/staging/ArrayBuffer/resizable/set-with-resizable-source.js deleted file mode 100644 index ba5cfdcd577..00000000000 --- a/test/staging/ArrayBuffer/resizable/set-with-resizable-source.js +++ /dev/null @@ -1,288 +0,0 @@ -// Copyright 2021 the V8 project authors. All rights reserved. -// This code is governed by the BSD license found in the LICENSE file. - -/*--- -esid: sec-arraybuffer-length -description: > - Automatically ported from SetWithResizableSource test - in V8's mjsunit test typedarray-resizablearraybuffer.js -includes: [compareArray.js] -features: [resizable-arraybuffer] -flags: [onlyStrict] ----*/ - -class MyUint8Array extends Uint8Array { -} - -class MyFloat32Array extends Float32Array { -} - -class MyBigInt64Array extends BigInt64Array { -} - -const builtinCtors = [ - Uint8Array, - Int8Array, - Uint16Array, - Int16Array, - Uint32Array, - Int32Array, - Float32Array, - Float64Array, - Uint8ClampedArray, - BigUint64Array, - BigInt64Array -]; - -const ctors = [ - ...builtinCtors, - MyUint8Array, - MyFloat32Array, - MyBigInt64Array -]; - -function CreateResizableArrayBuffer(byteLength, maxByteLength) { - return new ArrayBuffer(byteLength, { maxByteLength: maxByteLength }); -} - -function IsBigIntTypedArray(ta) { - return ta instanceof BigInt64Array || ta instanceof BigUint64Array; -} - -function WriteToTypedArray(array, index, value) { - if (array instanceof BigInt64Array || array instanceof BigUint64Array) { - array[index] = BigInt(value); - } else { - array[index] = value; - } -} - -function Convert(item) { - if (typeof item == 'bigint') { - return Number(item); - } - return item; -} - -function ToNumbers(array) { - let result = []; - for (let item of array) { - result.push(Convert(item)); - } - return result; -} - -function SetHelper(target, source, offset) { - if (target instanceof BigInt64Array || target instanceof BigUint64Array) { - const bigIntSource = []; - for (const s of source) { - bigIntSource.push(BigInt(s)); - } - source = bigIntSource; - } - if (offset == undefined) { - return target.set(source); - } - return target.set(source, offset); -} - -for (let targetIsResizable of [ - false, - true - ]) { - for (let targetCtor of ctors) { - for (let sourceCtor of ctors) { - const rab = CreateResizableArrayBuffer(4 * sourceCtor.BYTES_PER_ELEMENT, 8 * sourceCtor.BYTES_PER_ELEMENT); - const fixedLength = new sourceCtor(rab, 0, 4); - const fixedLengthWithOffset = new sourceCtor(rab, 2 * sourceCtor.BYTES_PER_ELEMENT, 2); - const lengthTracking = new sourceCtor(rab, 0); - const lengthTrackingWithOffset = new sourceCtor(rab, 2 * sourceCtor.BYTES_PER_ELEMENT); - - // Write some data into the array. - const taFull = new sourceCtor(rab); - for (let i = 0; i < 4; ++i) { - WriteToTypedArray(taFull, i, i + 1); - } - - // Orig. array: [1, 2, 3, 4] - // [1, 2, 3, 4] << fixedLength - // [3, 4] << fixedLengthWithOffset - // [1, 2, 3, 4, ...] << lengthTracking - // [3, 4, ...] << lengthTrackingWithOffset - - const targetAb = targetIsResizable ? new ArrayBuffer(6 * targetCtor.BYTES_PER_ELEMENT) : new ArrayBuffer(6 * targetCtor.BYTES_PER_ELEMENT, { maxByteLength: 8 * targetCtor.BYTES_PER_ELEMENT }); - const target = new targetCtor(targetAb); - if (IsBigIntTypedArray(target) != IsBigIntTypedArray(taFull)) { - // Can't mix BigInt and non-BigInt types. - continue; - } - SetHelper(target, fixedLength); - assert.compareArray(ToNumbers(target), [ - 1, - 2, - 3, - 4, - 0, - 0 - ]); - SetHelper(target, fixedLengthWithOffset); - assert.compareArray(ToNumbers(target), [ - 3, - 4, - 3, - 4, - 0, - 0 - ]); - SetHelper(target, lengthTracking, 1); - assert.compareArray(ToNumbers(target), [ - 3, - 1, - 2, - 3, - 4, - 0 - ]); - SetHelper(target, lengthTrackingWithOffset, 1); - assert.compareArray(ToNumbers(target), [ - 3, - 3, - 4, - 3, - 4, - 0 - ]); - - // Shrink so that fixed length TAs go out of bounds. - rab.resize(3 * sourceCtor.BYTES_PER_ELEMENT); - - // Orig. array: [1, 2, 3] - // [1, 2, 3, ...] << lengthTracking - // [3, ...] << lengthTrackingWithOffset - - assert.throws(TypeError, () => { - SetHelper(target, fixedLength); - }); - assert.throws(TypeError, () => { - SetHelper(target, fixedLengthWithOffset); - }); - assert.compareArray(ToNumbers(target), [ - 3, - 3, - 4, - 3, - 4, - 0 - ]); - SetHelper(target, lengthTracking); - assert.compareArray(ToNumbers(target), [ - 1, - 2, - 3, - 3, - 4, - 0 - ]); - SetHelper(target, lengthTrackingWithOffset); - assert.compareArray(ToNumbers(target), [ - 3, - 2, - 3, - 3, - 4, - 0 - ]); - - // Shrink so that the TAs with offset go out of bounds. - rab.resize(1 * sourceCtor.BYTES_PER_ELEMENT); - assert.throws(TypeError, () => { - SetHelper(target, fixedLength); - }); - assert.throws(TypeError, () => { - SetHelper(target, fixedLengthWithOffset); - }); - assert.throws(TypeError, () => { - SetHelper(target, lengthTrackingWithOffset); - }); - SetHelper(target, lengthTracking, 3); - assert.compareArray(ToNumbers(target), [ - 3, - 2, - 3, - 1, - 4, - 0 - ]); - - // Shrink to zero. - rab.resize(0); - assert.throws(TypeError, () => { - SetHelper(target, fixedLength); - }); - assert.throws(TypeError, () => { - SetHelper(target, fixedLengthWithOffset); - }); - assert.throws(TypeError, () => { - SetHelper(target, lengthTrackingWithOffset); - }); - SetHelper(target, lengthTracking, 4); - assert.compareArray(ToNumbers(target), [ - 3, - 2, - 3, - 1, - 4, - 0 - ]); - - // Grow so that all TAs are back in-bounds. - rab.resize(6 * sourceCtor.BYTES_PER_ELEMENT); - for (let i = 0; i < 6; ++i) { - WriteToTypedArray(taFull, i, i + 1); - } - - // Orig. array: [1, 2, 3, 4, 5, 6] - // [1, 2, 3, 4] << fixedLength - // [3, 4] << fixedLengthWithOffset - // [1, 2, 3, 4, 5, 6, ...] << lengthTracking - // [3, 4, 5, 6, ...] << lengthTrackingWithOffset - - SetHelper(target, fixedLength); - assert.compareArray(ToNumbers(target), [ - 1, - 2, - 3, - 4, - 4, - 0 - ]); - SetHelper(target, fixedLengthWithOffset); - assert.compareArray(ToNumbers(target), [ - 3, - 4, - 3, - 4, - 4, - 0 - ]); - SetHelper(target, lengthTracking, 0); - assert.compareArray(ToNumbers(target), [ - 1, - 2, - 3, - 4, - 5, - 6 - ]); - SetHelper(target, lengthTrackingWithOffset, 1); - assert.compareArray(ToNumbers(target), [ - 1, - 3, - 4, - 5, - 6, - 6 - ]); - } - } -} diff --git a/test/staging/ArrayBuffer/resizable/set-with-resizable-target.js b/test/staging/ArrayBuffer/resizable/set-with-resizable-target.js deleted file mode 100644 index 8abe8e7292f..00000000000 --- a/test/staging/ArrayBuffer/resizable/set-with-resizable-target.js +++ /dev/null @@ -1,576 +0,0 @@ -// Copyright 2021 the V8 project authors. All rights reserved. -// This code is governed by the BSD license found in the LICENSE file. - -/*--- -esid: sec-arraybuffer-length -description: > - Automatically ported from SetWithResizableTarget test - in V8's mjsunit test typedarray-resizablearraybuffer.js -includes: [compareArray.js] -features: [resizable-arraybuffer] -flags: [onlyStrict] ----*/ - -class MyUint8Array extends Uint8Array { -} - -class MyFloat32Array extends Float32Array { -} - -class MyBigInt64Array extends BigInt64Array { -} - -const builtinCtors = [ - Uint8Array, - Int8Array, - Uint16Array, - Int16Array, - Uint32Array, - Int32Array, - Float32Array, - Float64Array, - Uint8ClampedArray, - BigUint64Array, - BigInt64Array -]; - -const ctors = [ - ...builtinCtors, - MyUint8Array, - MyFloat32Array, - MyBigInt64Array -]; - -function CreateResizableArrayBuffer(byteLength, maxByteLength) { - return new ArrayBuffer(byteLength, { maxByteLength: maxByteLength }); -} - -function Convert(item) { - if (typeof item == 'bigint') { - return Number(item); - } - return item; -} - -function ToNumbers(array) { - let result = []; - for (let item of array) { - result.push(Convert(item)); - } - return result; -} - -function SetHelper(target, source, offset) { - if (target instanceof BigInt64Array || target instanceof BigUint64Array) { - const bigIntSource = []; - for (const s of source) { - bigIntSource.push(BigInt(s)); - } - source = bigIntSource; - } - if (offset == undefined) { - return target.set(source); - } - return target.set(source, offset); -} - -for (let ctor of ctors) { - const rab = CreateResizableArrayBuffer(4 * ctor.BYTES_PER_ELEMENT, 8 * ctor.BYTES_PER_ELEMENT); - const fixedLength = new ctor(rab, 0, 4); - const fixedLengthWithOffset = new ctor(rab, 2 * ctor.BYTES_PER_ELEMENT, 2); - const lengthTracking = new ctor(rab, 0); - const lengthTrackingWithOffset = new ctor(rab, 2 * ctor.BYTES_PER_ELEMENT); - const taFull = new ctor(rab); - - // Orig. array: [0, 0, 0, 0] - // [0, 0, 0, 0] << fixedLength - // [0, 0] << fixedLengthWithOffset - // [0, 0, 0, 0, ...] << lengthTracking - // [0, 0, ...] << lengthTrackingWithOffset - - // For making sure we're not calling the source length or element getters - // if the target is OOB. - const throwingProxy = new Proxy({}, { - get(target, prop, receiver) { - throw new Error('Called getter for ' + prop); - } - }); - SetHelper(fixedLength, [ - 1, - 2 - ]); - assert.compareArray(ToNumbers(taFull), [ - 1, - 2, - 0, - 0 - ]); - SetHelper(fixedLength, [ - 3, - 4 - ], 1); - assert.compareArray(ToNumbers(taFull), [ - 1, - 3, - 4, - 0 - ]); - assert.throws(RangeError, () => { - SetHelper(fixedLength, [ - 0, - 0, - 0, - 0, - 0 - ]); - }); - assert.throws(RangeError, () => { - SetHelper(fixedLength, [ - 0, - 0, - 0, - 0 - ], 1); - }); - assert.compareArray(ToNumbers(taFull), [ - 1, - 3, - 4, - 0 - ]); - SetHelper(fixedLengthWithOffset, [ - 5, - 6 - ]); - assert.compareArray(ToNumbers(taFull), [ - 1, - 3, - 5, - 6 - ]); - SetHelper(fixedLengthWithOffset, [7], 1); - assert.compareArray(ToNumbers(taFull), [ - 1, - 3, - 5, - 7 - ]); - assert.throws(RangeError, () => { - SetHelper(fixedLengthWithOffset, [ - 0, - 0, - 0 - ]); - }); - assert.throws(RangeError, () => { - SetHelper(fixedLengthWithOffset, [ - 0, - 0 - ], 1); - }); - assert.compareArray(ToNumbers(taFull), [ - 1, - 3, - 5, - 7 - ]); - SetHelper(lengthTracking, [ - 8, - 9 - ]); - assert.compareArray(ToNumbers(taFull), [ - 8, - 9, - 5, - 7 - ]); - SetHelper(lengthTracking, [ - 10, - 11 - ], 1); - assert.compareArray(ToNumbers(taFull), [ - 8, - 10, - 11, - 7 - ]); - assert.throws(RangeError, () => { - SetHelper(lengthTracking, [ - 0, - 0, - 0, - 0, - 0 - ]); - }); - assert.throws(RangeError, () => { - SetHelper(lengthTracking, [ - 0, - 0, - 0, - 0 - ], 1); - }); - assert.compareArray(ToNumbers(taFull), [ - 8, - 10, - 11, - 7 - ]); - SetHelper(lengthTrackingWithOffset, [ - 12, - 13 - ]); - assert.compareArray(ToNumbers(taFull), [ - 8, - 10, - 12, - 13 - ]); - SetHelper(lengthTrackingWithOffset, [14], 1); - assert.compareArray(ToNumbers(taFull), [ - 8, - 10, - 12, - 14 - ]); - assert.throws(RangeError, () => { - SetHelper(lengthTrackingWithOffset, [ - 0, - 0, - 0 - ]); - }); - assert.throws(RangeError, () => { - SetHelper(lengthTrackingWithOffset, [ - 0, - 0 - ], 1); - }); - assert.compareArray(ToNumbers(taFull), [ - 8, - 10, - 12, - 14 - ]); - - // Shrink so that fixed length TAs go out of bounds. - rab.resize(3 * ctor.BYTES_PER_ELEMENT); - - // Orig. array: [8, 10, 12] - // [8, 10, 12, ...] << lengthTracking - // [12, ...] << lengthTrackingWithOffset - - assert.throws(TypeError, () => { - SetHelper(fixedLength, throwingProxy); - }); - assert.throws(TypeError, () => { - SetHelper(fixedLengthWithOffset, throwingProxy); - }); - assert.compareArray(ToNumbers(taFull), [ - 8, - 10, - 12 - ]); - SetHelper(lengthTracking, [ - 15, - 16 - ]); - assert.compareArray(ToNumbers(taFull), [ - 15, - 16, - 12 - ]); - SetHelper(lengthTracking, [ - 17, - 18 - ], 1); - assert.compareArray(ToNumbers(taFull), [ - 15, - 17, - 18 - ]); - assert.throws(RangeError, () => { - SetHelper(lengthTracking, [ - 0, - 0, - 0, - 0 - ]); - }); - assert.throws(RangeError, () => { - SetHelper(lengthTracking, [ - 0, - 0, - 0 - ], 1); - }); - assert.compareArray(ToNumbers(taFull), [ - 15, - 17, - 18 - ]); - SetHelper(lengthTrackingWithOffset, [19]); - assert.compareArray(ToNumbers(taFull), [ - 15, - 17, - 19 - ]); - assert.throws(RangeError, () => { - SetHelper(lengthTrackingWithOffset, [ - 0, - 0 - ]); - }); - assert.throws(RangeError, () => { - SetHelper(lengthTrackingWithOffset, [0], 1); - }); - assert.compareArray(ToNumbers(taFull), [ - 15, - 17, - 19 - ]); - - // Shrink so that the TAs with offset go out of bounds. - rab.resize(1 * ctor.BYTES_PER_ELEMENT); - assert.throws(TypeError, () => { - SetHelper(fixedLength, throwingProxy); - }); - assert.throws(TypeError, () => { - SetHelper(fixedLengthWithOffset, throwingProxy); - }); - assert.throws(TypeError, () => { - SetHelper(lengthTrackingWithOffset, throwingProxy); - }); - assert.compareArray(ToNumbers(taFull), [15]); - SetHelper(lengthTracking, [20]); - assert.compareArray(ToNumbers(taFull), [20]); - - // Shrink to zero. - rab.resize(0); - assert.throws(TypeError, () => { - SetHelper(fixedLength, throwingProxy); - }); - assert.throws(TypeError, () => { - SetHelper(fixedLengthWithOffset, throwingProxy); - }); - assert.throws(TypeError, () => { - SetHelper(lengthTrackingWithOffset, throwingProxy); - }); - assert.throws(RangeError, () => { - SetHelper(lengthTracking, [0]); - }); - assert.compareArray(ToNumbers(taFull), []); - - // Grow so that all TAs are back in-bounds. - rab.resize(6 * ctor.BYTES_PER_ELEMENT); - - // Orig. array: [0, 0, 0, 0, 0, 0] - // [0, 0, 0, 0] << fixedLength - // [0, 0] << fixedLengthWithOffset - // [0, 0, 0, 0, 0, 0, ...] << lengthTracking - // [0, 0, 0, 0, ...] << lengthTrackingWithOffset - SetHelper(fixedLength, [ - 21, - 22 - ]); - assert.compareArray(ToNumbers(taFull), [ - 21, - 22, - 0, - 0, - 0, - 0 - ]); - SetHelper(fixedLength, [ - 23, - 24 - ], 1); - assert.compareArray(ToNumbers(taFull), [ - 21, - 23, - 24, - 0, - 0, - 0 - ]); - assert.throws(RangeError, () => { - SetHelper(fixedLength, [ - 0, - 0, - 0, - 0, - 0 - ]); - }); - assert.throws(RangeError, () => { - SetHelper(fixedLength, [ - 0, - 0, - 0, - 0 - ], 1); - }); - assert.compareArray(ToNumbers(taFull), [ - 21, - 23, - 24, - 0, - 0, - 0 - ]); - SetHelper(fixedLengthWithOffset, [ - 25, - 26 - ]); - assert.compareArray(ToNumbers(taFull), [ - 21, - 23, - 25, - 26, - 0, - 0 - ]); - SetHelper(fixedLengthWithOffset, [27], 1); - assert.compareArray(ToNumbers(taFull), [ - 21, - 23, - 25, - 27, - 0, - 0 - ]); - assert.throws(RangeError, () => { - SetHelper(fixedLengthWithOffset, [ - 0, - 0, - 0 - ]); - }); - assert.throws(RangeError, () => { - SetHelper(fixedLengthWithOffset, [ - 0, - 0 - ], 1); - }); - assert.compareArray(ToNumbers(taFull), [ - 21, - 23, - 25, - 27, - 0, - 0 - ]); - SetHelper(lengthTracking, [ - 28, - 29, - 30, - 31, - 32, - 33 - ]); - assert.compareArray(ToNumbers(taFull), [ - 28, - 29, - 30, - 31, - 32, - 33 - ]); - SetHelper(lengthTracking, [ - 34, - 35, - 36, - 37, - 38 - ], 1); - assert.compareArray(ToNumbers(taFull), [ - 28, - 34, - 35, - 36, - 37, - 38 - ]); - assert.throws(RangeError, () => { - SetHelper(lengthTracking, [ - 0, - 0, - 0, - 0, - 0, - 0, - 0 - ]); - }); - assert.throws(RangeError, () => { - SetHelper(lengthTracking, [ - 0, - 0, - 0, - 0, - 0, - 0 - ], 1); - }); - assert.compareArray(ToNumbers(taFull), [ - 28, - 34, - 35, - 36, - 37, - 38 - ]); - SetHelper(lengthTrackingWithOffset, [ - 39, - 40, - 41, - 42 - ]); - assert.compareArray(ToNumbers(taFull), [ - 28, - 34, - 39, - 40, - 41, - 42 - ]); - SetHelper(lengthTrackingWithOffset, [ - 43, - 44, - 45 - ], 1); - assert.compareArray(ToNumbers(taFull), [ - 28, - 34, - 39, - 43, - 44, - 45 - ]); - assert.throws(RangeError, () => { - SetHelper(lengthTrackingWithOffset, [ - 0, - 0, - 0, - 0, - 0 - ]); - }); - assert.throws(RangeError, () => { - SetHelper(lengthTrackingWithOffset, [ - 0, - 0, - 0, - 0 - ], 1); - }); - assert.compareArray(ToNumbers(taFull), [ - 28, - 34, - 39, - 43, - 44, - 45 - ]); -} diff --git a/test/staging/ArrayBuffer/resizable/slice-parameter-conversion-grows.js b/test/staging/ArrayBuffer/resizable/slice-parameter-conversion-grows.js deleted file mode 100644 index 6e1d88344b1..00000000000 --- a/test/staging/ArrayBuffer/resizable/slice-parameter-conversion-grows.js +++ /dev/null @@ -1,103 +0,0 @@ -// Copyright 2021 the V8 project authors. All rights reserved. -// This code is governed by the BSD license found in the LICENSE file. - -/*--- -esid: sec-arraybuffer-length -description: > - Automatically ported from SliceParameterConversionGrows test - in V8's mjsunit test typedarray-resizablearraybuffer.js -includes: [compareArray.js] -features: [resizable-arraybuffer] -flags: [onlyStrict] ----*/ - -class MyUint8Array extends Uint8Array { -} - -class MyFloat32Array extends Float32Array { -} - -class MyBigInt64Array extends BigInt64Array { -} - -const builtinCtors = [ - Uint8Array, - Int8Array, - Uint16Array, - Int16Array, - Uint32Array, - Int32Array, - Float32Array, - Float64Array, - Uint8ClampedArray, - BigUint64Array, - BigInt64Array -]; - -const ctors = [ - ...builtinCtors, - MyUint8Array, - MyFloat32Array, - MyBigInt64Array -]; - -function CreateResizableArrayBuffer(byteLength, maxByteLength) { - return new ArrayBuffer(byteLength, { maxByteLength: maxByteLength }); -} - -function WriteToTypedArray(array, index, value) { - if (array instanceof BigInt64Array || array instanceof BigUint64Array) { - array[index] = BigInt(value); - } else { - array[index] = value; - } -} - -function Convert(item) { - if (typeof item == 'bigint') { - return Number(item); - } - return item; -} - -function ToNumbers(array) { - let result = []; - for (let item of array) { - result.push(Convert(item)); - } - return result; -} - -const TypedArraySliceHelper = (ta, ...rest) => { - return ta.slice(...rest); -}; - -const ArraySliceHelper = (ta, ...rest) => { - return Array.prototype.slice.call(ta, ...rest); -}; - -function SliceParameterConversionGrows(sliceHelper) { - for (let ctor of ctors) { - const rab = CreateResizableArrayBuffer(4 * ctor.BYTES_PER_ELEMENT, 8 * ctor.BYTES_PER_ELEMENT); - const lengthTracking = new ctor(rab); - for (let i = 0; i < 4; ++i) { - WriteToTypedArray(lengthTracking, i, i + 1); - } - const evil = { - valueOf: () => { - rab.resize(6 * ctor.BYTES_PER_ELEMENT); - return 0; - } - }; - assert.compareArray(ToNumbers(sliceHelper(lengthTracking, evil)), [ - 1, - 2, - 3, - 4 - ]); - assert.sameValue(rab.byteLength, 6 * ctor.BYTES_PER_ELEMENT); - } -} - -SliceParameterConversionGrows(TypedArraySliceHelper); -SliceParameterConversionGrows(ArraySliceHelper); diff --git a/test/staging/ArrayBuffer/resizable/slice-parameter-conversion-shrinks.js b/test/staging/ArrayBuffer/resizable/slice-parameter-conversion-shrinks.js deleted file mode 100644 index 611ba0bc4da..00000000000 --- a/test/staging/ArrayBuffer/resizable/slice-parameter-conversion-shrinks.js +++ /dev/null @@ -1,104 +0,0 @@ -// Copyright 2021 the V8 project authors. All rights reserved. -// This code is governed by the BSD license found in the LICENSE file. - -/*--- -esid: sec-arraybuffer-length -description: > - Automatically ported from SliceParameterConversionShrinks test - in V8's mjsunit test typedarray-resizablearraybuffer.js -includes: [compareArray.js] -features: [resizable-arraybuffer] -flags: [onlyStrict] ----*/ - -class MyUint8Array extends Uint8Array { -} - -class MyFloat32Array extends Float32Array { -} - -class MyBigInt64Array extends BigInt64Array { -} - -const builtinCtors = [ - Uint8Array, - Int8Array, - Uint16Array, - Int16Array, - Uint32Array, - Int32Array, - Float32Array, - Float64Array, - Uint8ClampedArray, - BigUint64Array, - BigInt64Array -]; - -const ctors = [ - ...builtinCtors, - MyUint8Array, - MyFloat32Array, - MyBigInt64Array -]; - -function CreateResizableArrayBuffer(byteLength, maxByteLength) { - return new ArrayBuffer(byteLength, { maxByteLength: maxByteLength }); -} - -function WriteToTypedArray(array, index, value) { - if (array instanceof BigInt64Array || array instanceof BigUint64Array) { - array[index] = BigInt(value); - } else { - array[index] = value; - } -} - -function Convert(item) { - if (typeof item == 'bigint') { - return Number(item); - } - return item; -} - -function ToNumbers(array) { - let result = []; - for (let item of array) { - result.push(Convert(item)); - } - return result; -} - -for (let ctor of ctors) { - const rab = CreateResizableArrayBuffer(4 * ctor.BYTES_PER_ELEMENT, 8 * ctor.BYTES_PER_ELEMENT); - const fixedLength = new ctor(rab, 0, 4); - const evil = { - valueOf: () => { - rab.resize(2 * ctor.BYTES_PER_ELEMENT); - return 0; - } - }; - assert.throws(TypeError, () => { - fixedLength.slice(evil); - }); - assert.sameValue(rab.byteLength, 2 * ctor.BYTES_PER_ELEMENT); -} -for (let ctor of ctors) { - const rab = CreateResizableArrayBuffer(4 * ctor.BYTES_PER_ELEMENT, 8 * ctor.BYTES_PER_ELEMENT); - const lengthTracking = new ctor(rab); - for (let i = 0; i < 4; ++i) { - WriteToTypedArray(lengthTracking, i, i + 1); - } - const evil = { - valueOf: () => { - rab.resize(2 * ctor.BYTES_PER_ELEMENT); - return 0; - } - }; - assert.compareArray(ToNumbers(lengthTracking.slice(evil)), [ - 1, - 2, - 0, - 0 - ]); - assert.sameValue(rab.byteLength, 2 * ctor.BYTES_PER_ELEMENT); -} diff --git a/test/staging/ArrayBuffer/resizable/slice-species-create-resizes.js b/test/staging/ArrayBuffer/resizable/slice-species-create-resizes.js deleted file mode 100644 index 2f0d0f47ccf..00000000000 --- a/test/staging/ArrayBuffer/resizable/slice-species-create-resizes.js +++ /dev/null @@ -1,187 +0,0 @@ -// Copyright 2021 the V8 project authors. All rights reserved. -// This code is governed by the BSD license found in the LICENSE file. - -/*--- -esid: sec-arraybuffer-length -description: > - Automatically ported from SliceSpeciesCreateResizes test - in V8's mjsunit test typedarray-resizablearraybuffer.js -includes: [compareArray.js] -features: [resizable-arraybuffer] -flags: [onlyStrict] ----*/ - -// The corresponding test for Array.prototype.slice is not possible, since it -// doesn't call the species constructor if the "original array" is not an Array. - -class MyUint8Array extends Uint8Array { -} - -class MyFloat32Array extends Float32Array { -} - -class MyBigInt64Array extends BigInt64Array { -} - -const builtinCtors = [ - Uint8Array, - Int8Array, - Uint16Array, - Int16Array, - Uint32Array, - Int32Array, - Float32Array, - Float64Array, - Uint8ClampedArray, - BigUint64Array, - BigInt64Array -]; - -const ctors = [ - ...builtinCtors, - MyUint8Array, - MyFloat32Array, - MyBigInt64Array -]; - -function CreateResizableArrayBuffer(byteLength, maxByteLength) { - return new ArrayBuffer(byteLength, { maxByteLength: maxByteLength }); -} - -function WriteToTypedArray(array, index, value) { - if (array instanceof BigInt64Array || array instanceof BigUint64Array) { - array[index] = BigInt(value); - } else { - array[index] = value; - } -} - -function Convert(item) { - if (typeof item == 'bigint') { - return Number(item); - } - return item; -} - -function ToNumbers(array) { - let result = []; - for (let item of array) { - result.push(Convert(item)); - } - return result; -} - -for (let ctor of ctors) { - const rab = CreateResizableArrayBuffer(4 * ctor.BYTES_PER_ELEMENT, 8 * ctor.BYTES_PER_ELEMENT); - let resizeWhenConstructorCalled = false; - class MyArray extends ctor { - constructor(...params) { - super(...params); - if (resizeWhenConstructorCalled) { - rab.resize(2 * ctor.BYTES_PER_ELEMENT); - } - } - } - ; - const fixedLength = new MyArray(rab, 0, 4); - resizeWhenConstructorCalled = true; - assert.throws(TypeError, () => { - fixedLength.slice(); - }); - assert.sameValue(rab.byteLength, 2 * ctor.BYTES_PER_ELEMENT); -} -for (let ctor of ctors) { - const rab = CreateResizableArrayBuffer(4 * ctor.BYTES_PER_ELEMENT, 8 * ctor.BYTES_PER_ELEMENT); - const taWrite = new ctor(rab); - for (let i = 0; i < 4; ++i) { - WriteToTypedArray(taWrite, i, 1); - } - let resizeWhenConstructorCalled = false; - class MyArray extends ctor { - constructor(...params) { - super(...params); - if (resizeWhenConstructorCalled) { - rab.resize(2 * ctor.BYTES_PER_ELEMENT); - } - } - } - ; - const lengthTracking = new MyArray(rab); - resizeWhenConstructorCalled = true; - const a = lengthTracking.slice(); - assert.sameValue(rab.byteLength, 2 * ctor.BYTES_PER_ELEMENT); - // The length of the resulting TypedArray is determined before - // TypedArraySpeciesCreate is called, and it doesn't change. - assert.sameValue(a.length, 4); - assert.compareArray(ToNumbers(a), [ - 1, - 1, - 0, - 0 - ]); -} - -// Test that the (start, end) parameters are computed based on the original -// length. -for (let ctor of ctors) { - const rab = CreateResizableArrayBuffer(4 * ctor.BYTES_PER_ELEMENT, 8 * ctor.BYTES_PER_ELEMENT); - const taWrite = new ctor(rab); - for (let i = 0; i < 4; ++i) { - WriteToTypedArray(taWrite, i, 1); - } - let resizeWhenConstructorCalled = false; - class MyArray extends ctor { - constructor(...params) { - super(...params); - if (resizeWhenConstructorCalled) { - rab.resize(2 * ctor.BYTES_PER_ELEMENT); - } - } - } - ; - const lengthTracking = new MyArray(rab); - resizeWhenConstructorCalled = true; - const a = lengthTracking.slice(-3, -1); - assert.sameValue(rab.byteLength, 2 * ctor.BYTES_PER_ELEMENT); - // The length of the resulting TypedArray is determined before - // TypedArraySpeciesCreate is called, and it doesn't change. - assert.sameValue(a.length, 2); - assert.compareArray(ToNumbers(a), [ - 1, - 0 - ]); -} - -// Test where the buffer gets resized "between elements". -{ - const rab = CreateResizableArrayBuffer(8, 16); - const taWrite = new Uint8Array(rab); - for (let i = 0; i < 8; ++i) { - WriteToTypedArray(taWrite, i, 255); - } - let resizeWhenConstructorCalled = false; - class MyArray extends Uint16Array { - constructor(...params) { - super(...params); - if (resizeWhenConstructorCalled) { - rab.resize(5); - } - } - } - ; - const lengthTracking = new MyArray(rab); - assert.compareArray(ToNumbers(lengthTracking), [ - 65535, - 65535, - 65535, - 65535 - ]); - resizeWhenConstructorCalled = true; - const a = lengthTracking.slice(); - assert.sameValue(rab.byteLength, 5); - assert.sameValue(a.length, 4); - assert.sameValue(a[0], 65535); - assert.sameValue(a[1], 65535); - assert.sameValue(a[2], 0); - assert.sameValue(a[3], 0); -} diff --git a/test/staging/ArrayBuffer/resizable/slice.js b/test/staging/ArrayBuffer/resizable/slice.js deleted file mode 100644 index 1d8c4518d58..00000000000 --- a/test/staging/ArrayBuffer/resizable/slice.js +++ /dev/null @@ -1,202 +0,0 @@ -// Copyright 2021 the V8 project authors. All rights reserved. -// This code is governed by the BSD license found in the LICENSE file. - -/*--- -esid: sec-arraybuffer-length -description: > - Automatically ported from Slice test - in V8's mjsunit test typedarray-resizablearraybuffer.js -includes: [compareArray.js] -features: [resizable-arraybuffer] -flags: [onlyStrict] ----*/ - -class MyUint8Array extends Uint8Array { -} - -class MyFloat32Array extends Float32Array { -} - -class MyBigInt64Array extends BigInt64Array { -} - -const builtinCtors = [ - Uint8Array, - Int8Array, - Uint16Array, - Int16Array, - Uint32Array, - Int32Array, - Float32Array, - Float64Array, - Uint8ClampedArray, - BigUint64Array, - BigInt64Array -]; - -const ctors = [ - ...builtinCtors, - MyUint8Array, - MyFloat32Array, - MyBigInt64Array -]; - -function CreateResizableArrayBuffer(byteLength, maxByteLength) { - return new ArrayBuffer(byteLength, { maxByteLength: maxByteLength }); -} - -function WriteToTypedArray(array, index, value) { - if (array instanceof BigInt64Array || array instanceof BigUint64Array) { - array[index] = BigInt(value); - } else { - array[index] = value; - } -} - -function Convert(item) { - if (typeof item == 'bigint') { - return Number(item); - } - return item; -} - -function ToNumbers(array) { - let result = []; - for (let item of array) { - result.push(Convert(item)); - } - return result; -} - -for (let ctor of ctors) { - const rab = CreateResizableArrayBuffer(4 * ctor.BYTES_PER_ELEMENT, 8 * ctor.BYTES_PER_ELEMENT); - const fixedLength = new ctor(rab, 0, 4); - const fixedLengthWithOffset = new ctor(rab, 2 * ctor.BYTES_PER_ELEMENT, 2); - const lengthTracking = new ctor(rab, 0); - const lengthTrackingWithOffset = new ctor(rab, 2 * ctor.BYTES_PER_ELEMENT); - - // Write some data into the array. - const taWrite = new ctor(rab); - for (let i = 0; i < 4; ++i) { - WriteToTypedArray(taWrite, i, i); - } - const fixedLengthSlice = fixedLength.slice(); - assert.compareArray(ToNumbers(fixedLengthSlice), [ - 0, - 1, - 2, - 3 - ]); - assert(!fixedLengthSlice.buffer.resizable); - const fixedLengthWithOffsetSlice = fixedLengthWithOffset.slice(); - assert.compareArray(ToNumbers(fixedLengthWithOffsetSlice), [ - 2, - 3 - ]); - assert(!fixedLengthWithOffsetSlice.buffer.resizable); - const lengthTrackingSlice = lengthTracking.slice(); - assert.compareArray(ToNumbers(lengthTrackingSlice), [ - 0, - 1, - 2, - 3 - ]); - assert(!lengthTrackingSlice.buffer.resizable); - const lengthTrackingWithOffsetSlice = lengthTrackingWithOffset.slice(); - assert.compareArray(ToNumbers(lengthTrackingWithOffsetSlice), [ - 2, - 3 - ]); - assert(!lengthTrackingWithOffsetSlice.buffer.resizable); - - // Shrink so that fixed length TAs go out of bounds. - rab.resize(3 * ctor.BYTES_PER_ELEMENT); - assert.throws(TypeError, () => { - fixedLength.slice(); - }); - assert.throws(TypeError, () => { - fixedLengthWithOffset.slice(); - }); - assert.compareArray(ToNumbers(lengthTracking.slice()), [ - 0, - 1, - 2 - ]); - assert.compareArray(ToNumbers(lengthTrackingWithOffset.slice()), [2]); - - // Shrink so that the TAs with offset go out of bounds. - rab.resize(1 * ctor.BYTES_PER_ELEMENT); - assert.throws(TypeError, () => { - fixedLength.slice(); - }); - assert.throws(TypeError, () => { - fixedLengthWithOffset.slice(); - }); - assert.compareArray(ToNumbers(lengthTracking.slice()), [0]); - assert.throws(TypeError, () => { - lengthTrackingWithOffset.slice(); - }); - - // Shrink to zero. - rab.resize(0); - assert.throws(TypeError, () => { - fixedLength.slice(); - }); - assert.throws(TypeError, () => { - fixedLengthWithOffset.slice(); - }); - assert.compareArray(ToNumbers(lengthTracking.slice()), []); - assert.throws(TypeError, () => { - lengthTrackingWithOffset.slice(); - }); - - // Verify that the previously created slices aren't affected by the - // shrinking. - assert.compareArray(ToNumbers(fixedLengthSlice), [ - 0, - 1, - 2, - 3 - ]); - assert.compareArray(ToNumbers(fixedLengthWithOffsetSlice), [ - 2, - 3 - ]); - assert.compareArray(ToNumbers(lengthTrackingSlice), [ - 0, - 1, - 2, - 3 - ]); - assert.compareArray(ToNumbers(lengthTrackingWithOffsetSlice), [ - 2, - 3 - ]); - - // Grow so that all TAs are back in-bounds. New memory is zeroed. - rab.resize(6 * ctor.BYTES_PER_ELEMENT); - assert.compareArray(ToNumbers(fixedLength.slice()), [ - 0, - 0, - 0, - 0 - ]); - assert.compareArray(ToNumbers(fixedLengthWithOffset.slice()), [ - 0, - 0 - ]); - assert.compareArray(ToNumbers(lengthTracking.slice()), [ - 0, - 0, - 0, - 0, - 0, - 0 - ]); - assert.compareArray(ToNumbers(lengthTrackingWithOffset.slice()), [ - 0, - 0, - 0, - 0 - ]); -} diff --git a/test/staging/ArrayBuffer/resizable/some-grow-mid-iteration.js b/test/staging/ArrayBuffer/resizable/some-grow-mid-iteration.js deleted file mode 100644 index e6fa4a92074..00000000000 --- a/test/staging/ArrayBuffer/resizable/some-grow-mid-iteration.js +++ /dev/null @@ -1,150 +0,0 @@ -// Copyright 2021 the V8 project authors. All rights reserved. -// This code is governed by the BSD license found in the LICENSE file. - -/*--- -esid: sec-arraybuffer-length -description: > - Automatically ported from SomeGrowMidIteration test - in V8's mjsunit test typedarray-resizablearraybuffer.js -includes: [compareArray.js] -features: [resizable-arraybuffer] -flags: [onlyStrict] ----*/ - -class MyUint8Array extends Uint8Array { -} - -class MyFloat32Array extends Float32Array { -} - -class MyBigInt64Array extends BigInt64Array { -} - -const builtinCtors = [ - Uint8Array, - Int8Array, - Uint16Array, - Int16Array, - Uint32Array, - Int32Array, - Float32Array, - Float64Array, - Uint8ClampedArray, - BigUint64Array, - BigInt64Array -]; - -const ctors = [ - ...builtinCtors, - MyUint8Array, - MyFloat32Array, - MyBigInt64Array -]; - -function CreateResizableArrayBuffer(byteLength, maxByteLength) { - return new ArrayBuffer(byteLength, { maxByteLength: maxByteLength }); -} - -function WriteToTypedArray(array, index, value) { - if (array instanceof BigInt64Array || array instanceof BigUint64Array) { - array[index] = BigInt(value); - } else { - array[index] = value; - } -} - -const TypedArraySomeHelper = (ta, ...rest) => { - return ta.some(...rest); -}; - -const ArraySomeHelper = (ta, ...rest) => { - return Array.prototype.some.call(ta, ...rest); -}; - -function SomeGrowMidIteration(someHelper) { - // Orig. array: [0, 2, 4, 6] - // [0, 2, 4, 6] << fixedLength - // [4, 6] << fixedLengthWithOffset - // [0, 2, 4, 6, ...] << lengthTracking - // [4, 6, ...] << lengthTrackingWithOffset - function CreateRabForTest(ctor) { - const rab = CreateResizableArrayBuffer(4 * ctor.BYTES_PER_ELEMENT, 8 * ctor.BYTES_PER_ELEMENT); - // Write some data into the array. - const taWrite = new ctor(rab); - for (let i = 0; i < 4; ++i) { - WriteToTypedArray(taWrite, i, 2 * i); - } - return rab; - } - let values = []; - let rab; - let resizeAfter; - let resizeTo; - function CollectValuesAndResize(n) { - if (typeof n == 'bigint') { - values.push(Number(n)); - } else { - values.push(n); - } - if (values.length == resizeAfter) { - rab.resize(resizeTo); - } - return false; - } - for (let ctor of ctors) { - rab = CreateRabForTest(ctor); - const fixedLength = new ctor(rab, 0, 4); - values = []; - resizeAfter = 2; - resizeTo = 5 * ctor.BYTES_PER_ELEMENT; - assert(!someHelper(fixedLength, CollectValuesAndResize)); - assert.compareArray(values, [ - 0, - 2, - 4, - 6 - ]); - } - for (let ctor of ctors) { - rab = CreateRabForTest(ctor); - const fixedLengthWithOffset = new ctor(rab, 2 * ctor.BYTES_PER_ELEMENT, 2); - values = []; - resizeAfter = 1; - resizeTo = 5 * ctor.BYTES_PER_ELEMENT; - assert(!someHelper(fixedLengthWithOffset, CollectValuesAndResize)); - assert.compareArray(values, [ - 4, - 6 - ]); - } - for (let ctor of ctors) { - rab = CreateRabForTest(ctor); - const lengthTracking = new ctor(rab, 0); - values = []; - resizeAfter = 2; - resizeTo = 5 * ctor.BYTES_PER_ELEMENT; - assert(!someHelper(lengthTracking, CollectValuesAndResize)); - assert.compareArray(values, [ - 0, - 2, - 4, - 6 - ]); - } - for (let ctor of ctors) { - rab = CreateRabForTest(ctor); - const lengthTrackingWithOffset = new ctor(rab, 2 * ctor.BYTES_PER_ELEMENT); - values = []; - rab = rab; - resizeAfter = 1; - resizeTo = 5 * ctor.BYTES_PER_ELEMENT; - assert(!someHelper(lengthTrackingWithOffset, CollectValuesAndResize)); - assert.compareArray(values, [ - 4, - 6 - ]); - } -} - -SomeGrowMidIteration(TypedArraySomeHelper); -SomeGrowMidIteration(ArraySomeHelper); diff --git a/test/staging/ArrayBuffer/resizable/some-shrink-mid-iteration.js b/test/staging/ArrayBuffer/resizable/some-shrink-mid-iteration.js deleted file mode 100644 index 61a4708826a..00000000000 --- a/test/staging/ArrayBuffer/resizable/some-shrink-mid-iteration.js +++ /dev/null @@ -1,172 +0,0 @@ -// Copyright 2021 the V8 project authors. All rights reserved. -// This code is governed by the BSD license found in the LICENSE file. - -/*--- -esid: sec-arraybuffer-length -description: > - Automatically ported from SomeShrinkMidIteration test - in V8's mjsunit test typedarray-resizablearraybuffer.js -includes: [compareArray.js] -features: [resizable-arraybuffer] -flags: [onlyStrict] ----*/ - -class MyUint8Array extends Uint8Array { -} - -class MyFloat32Array extends Float32Array { -} - -class MyBigInt64Array extends BigInt64Array { -} - -const builtinCtors = [ - Uint8Array, - Int8Array, - Uint16Array, - Int16Array, - Uint32Array, - Int32Array, - Float32Array, - Float64Array, - Uint8ClampedArray, - BigUint64Array, - BigInt64Array -]; - -const ctors = [ - ...builtinCtors, - MyUint8Array, - MyFloat32Array, - MyBigInt64Array -]; - -function CreateResizableArrayBuffer(byteLength, maxByteLength) { - return new ArrayBuffer(byteLength, { maxByteLength: maxByteLength }); -} - -function WriteToTypedArray(array, index, value) { - if (array instanceof BigInt64Array || array instanceof BigUint64Array) { - array[index] = BigInt(value); - } else { - array[index] = value; - } -} - -const TypedArraySomeHelper = (ta, ...rest) => { - return ta.some(...rest); -}; - -const ArraySomeHelper = (ta, ...rest) => { - return Array.prototype.some.call(ta, ...rest); -}; - -function SomeShrinkMidIteration(someHelper, hasUndefined) { - // Orig. array: [0, 2, 4, 6] - // [0, 2, 4, 6] << fixedLength - // [4, 6] << fixedLengthWithOffset - // [0, 2, 4, 6, ...] << lengthTracking - // [4, 6, ...] << lengthTrackingWithOffset - function CreateRabForTest(ctor) { - const rab = CreateResizableArrayBuffer(4 * ctor.BYTES_PER_ELEMENT, 8 * ctor.BYTES_PER_ELEMENT); - // Write some data into the array. - const taWrite = new ctor(rab); - for (let i = 0; i < 4; ++i) { - WriteToTypedArray(taWrite, i, 2 * i); - } - return rab; - } - let values; - let rab; - let resizeAfter; - let resizeTo; - function CollectValuesAndResize(n) { - if (typeof n == 'bigint') { - values.push(Number(n)); - } else { - values.push(n); - } - if (values.length == resizeAfter) { - rab.resize(resizeTo); - } - return false; - } - for (let ctor of ctors) { - rab = CreateRabForTest(ctor); - const fixedLength = new ctor(rab, 0, 4); - values = []; - resizeAfter = 2; - resizeTo = 3 * ctor.BYTES_PER_ELEMENT; - assert(!someHelper(fixedLength, CollectValuesAndResize)); - if (hasUndefined) { - assert.compareArray(values, [ - 0, - 2, - undefined, - undefined - ]); - } else { - assert.compareArray(values, [ - 0, - 2 - ]); - } - } - for (let ctor of ctors) { - rab = CreateRabForTest(ctor); - const fixedLengthWithOffset = new ctor(rab, 2 * ctor.BYTES_PER_ELEMENT, 2); - values = []; - resizeAfter = 1; - resizeTo = 3 * ctor.BYTES_PER_ELEMENT; - assert(!someHelper(fixedLengthWithOffset, CollectValuesAndResize)); - if (hasUndefined) { - assert.compareArray(values, [ - 4, - undefined - ]); - } else { - assert.compareArray(values, [4]); - } - } - for (let ctor of ctors) { - rab = CreateRabForTest(ctor); - const lengthTracking = new ctor(rab, 0); - values = []; - resizeAfter = 2; - resizeTo = 3 * ctor.BYTES_PER_ELEMENT; - assert(!someHelper(lengthTracking, CollectValuesAndResize)); - if (hasUndefined) { - assert.compareArray(values, [ - 0, - 2, - 4, - undefined - ]); - } else { - assert.compareArray(values, [ - 0, - 2, - 4 - ]); - } - } - for (let ctor of ctors) { - rab = CreateRabForTest(ctor); - const lengthTrackingWithOffset = new ctor(rab, 2 * ctor.BYTES_PER_ELEMENT); - values = []; - resizeAfter = 1; - resizeTo = 3 * ctor.BYTES_PER_ELEMENT; - assert(!someHelper(lengthTrackingWithOffset, CollectValuesAndResize)); - if (hasUndefined) { - assert.compareArray(values, [ - 4, - undefined - ]); - } else { - assert.compareArray(values, [4]); - } - } -} - -SomeShrinkMidIteration(TypedArraySomeHelper, true); -SomeShrinkMidIteration(ArraySomeHelper, false); diff --git a/test/staging/ArrayBuffer/resizable/sort-callback-grows.js b/test/staging/ArrayBuffer/resizable/sort-callback-grows.js deleted file mode 100644 index 154fcbaffc7..00000000000 --- a/test/staging/ArrayBuffer/resizable/sort-callback-grows.js +++ /dev/null @@ -1,139 +0,0 @@ -// Copyright 2021 the V8 project authors. All rights reserved. -// This code is governed by the BSD license found in the LICENSE file. - -/*--- -esid: sec-arraybuffer-length -description: > - Automatically ported from SortCallbackGrows test - in V8's mjsunit test typedarray-resizablearraybuffer.js -includes: [compareArray.js] -features: [resizable-arraybuffer] -flags: [onlyStrict] ----*/ - -class MyUint8Array extends Uint8Array { -} - -class MyFloat32Array extends Float32Array { -} - -class MyBigInt64Array extends BigInt64Array { -} - -const builtinCtors = [ - Uint8Array, - Int8Array, - Uint16Array, - Int16Array, - Uint32Array, - Int32Array, - Float32Array, - Float64Array, - Uint8ClampedArray, - BigUint64Array, - BigInt64Array -]; - -const ctors = [ - ...builtinCtors, - MyUint8Array, - MyFloat32Array, - MyBigInt64Array -]; - -function CreateResizableArrayBuffer(byteLength, maxByteLength) { - return new ArrayBuffer(byteLength, { maxByteLength: maxByteLength }); -} - -function WriteToTypedArray(array, index, value) { - if (array instanceof BigInt64Array || array instanceof BigUint64Array) { - array[index] = BigInt(value); - } else { - array[index] = value; - } -} - -function Convert(item) { - if (typeof item == 'bigint') { - return Number(item); - } - return item; -} - -function ToNumbers(array) { - let result = []; - for (let item of array) { - result.push(Convert(item)); - } - return result; -} - -const TypedArraySortHelper = (ta, ...rest) => { - ta.sort(...rest); -}; - -const ArraySortHelper = (ta, ...rest) => { - Array.prototype.sort.call(ta, ...rest); -}; - -function SortCallbackGrows(sortHelper) { - function WriteUnsortedData(taFull) { - for (let i = 0; i < taFull.length; ++i) { - WriteToTypedArray(taFull, i, 10 - i); - } - } - let rab; - let resizeTo; - function CustomComparison(a, b) { - rab.resize(resizeTo); - if (a < b) { - return -1; - } - if (a > b) { - return 1; - } - return 0; - } - - // Fixed length TA. - for (let ctor of ctors) { - rab = CreateResizableArrayBuffer(4 * ctor.BYTES_PER_ELEMENT, 8 * ctor.BYTES_PER_ELEMENT); - resizeTo = 6 * ctor.BYTES_PER_ELEMENT; - const fixedLength = new ctor(rab, 0, 4); - const taFull = new ctor(rab, 0); - WriteUnsortedData(taFull); - sortHelper(fixedLength, CustomComparison); - // Growing doesn't affect the sorting. - assert.compareArray(ToNumbers(taFull), [ - 7, - 8, - 9, - 10, - 0, - 0 - ]); - } - - // Length-tracking TA. - for (let ctor of ctors) { - rab = CreateResizableArrayBuffer(4 * ctor.BYTES_PER_ELEMENT, 8 * ctor.BYTES_PER_ELEMENT); - resizeTo = 6 * ctor.BYTES_PER_ELEMENT; - const lengthTracking = new ctor(rab, 0); - const taFull = new ctor(rab, 0); - WriteUnsortedData(taFull); - sortHelper(lengthTracking, CustomComparison); - // Growing doesn't affect the sorting. Only the elements that were part of - // the original TA are sorted. - assert.compareArray(ToNumbers(taFull), [ - 7, - 8, - 9, - 10, - 0, - 0 - ]); - } -} - -SortCallbackGrows(TypedArraySortHelper); -SortCallbackGrows(ArraySortHelper); diff --git a/test/staging/ArrayBuffer/resizable/sort-callback-shrinks.js b/test/staging/ArrayBuffer/resizable/sort-callback-shrinks.js deleted file mode 100644 index 0ba38348047..00000000000 --- a/test/staging/ArrayBuffer/resizable/sort-callback-shrinks.js +++ /dev/null @@ -1,141 +0,0 @@ -// Copyright 2021 the V8 project authors. All rights reserved. -// This code is governed by the BSD license found in the LICENSE file. - -/*--- -esid: sec-arraybuffer-length -description: > - Automatically ported from SortCallbackShrinks test - in V8's mjsunit test typedarray-resizablearraybuffer.js -includes: [compareArray.js] -features: [resizable-arraybuffer, Array.prototype.includes] -flags: [onlyStrict] ----*/ - -class MyUint8Array extends Uint8Array { -} - -class MyFloat32Array extends Float32Array { -} - -class MyBigInt64Array extends BigInt64Array { -} - -const builtinCtors = [ - Uint8Array, - Int8Array, - Uint16Array, - Int16Array, - Uint32Array, - Int32Array, - Float32Array, - Float64Array, - Uint8ClampedArray, - BigUint64Array, - BigInt64Array -]; - -const ctors = [ - ...builtinCtors, - MyUint8Array, - MyFloat32Array, - MyBigInt64Array -]; - -function CreateResizableArrayBuffer(byteLength, maxByteLength) { - return new ArrayBuffer(byteLength, { maxByteLength: maxByteLength }); -} - -function WriteToTypedArray(array, index, value) { - if (array instanceof BigInt64Array || array instanceof BigUint64Array) { - array[index] = BigInt(value); - } else { - array[index] = value; - } -} - -function Convert(item) { - if (typeof item == 'bigint') { - return Number(item); - } - return item; -} - -function ToNumbers(array) { - let result = []; - for (let item of array) { - result.push(Convert(item)); - } - return result; -} - -const TypedArraySortHelper = (ta, ...rest) => { - ta.sort(...rest); -}; - -const ArraySortHelper = (ta, ...rest) => { - Array.prototype.sort.call(ta, ...rest); -}; - -function SortCallbackShrinks(sortHelper) { - function WriteUnsortedData(taFull) { - for (let i = 0; i < taFull.length; ++i) { - WriteToTypedArray(taFull, i, 10 - i); - } - } - let rab; - let resizeTo; - function CustomComparison(a, b) { - rab.resize(resizeTo); - if (a < b) { - return -1; - } - if (a > b) { - return 1; - } - return 0; - } - - // Fixed length TA. - for (let ctor of ctors) { - rab = CreateResizableArrayBuffer(4 * ctor.BYTES_PER_ELEMENT, 8 * ctor.BYTES_PER_ELEMENT); - resizeTo = 2 * ctor.BYTES_PER_ELEMENT; - const fixedLength = new ctor(rab, 0, 4); - const taFull = new ctor(rab, 0); - WriteUnsortedData(taFull); - sortHelper(fixedLength, CustomComparison); - // The data is unchanged. - assert.compareArray(ToNumbers(taFull), [ - 10, - 9 - ]); - } - - // Length-tracking TA. - for (let ctor of ctors) { - rab = CreateResizableArrayBuffer(4 * ctor.BYTES_PER_ELEMENT, 8 * ctor.BYTES_PER_ELEMENT); - resizeTo = 2 * ctor.BYTES_PER_ELEMENT; - const lengthTracking = new ctor(rab, 0); - const taFull = new ctor(rab, 0); - WriteUnsortedData(taFull); - sortHelper(lengthTracking, CustomComparison); - // The sort result is implementation defined, but it contains 2 elements out - // of the 4 original ones. - const newData = ToNumbers(taFull); - assert.sameValue(newData.length, 2); - assert([ - 10, - 9, - 8, - 7 - ].includes(newData[0])); - assert([ - 10, - 9, - 8, - 7 - ].includes(newData[1])); - } -} - -SortCallbackShrinks(TypedArraySortHelper); -SortCallbackShrinks(ArraySortHelper); diff --git a/test/staging/ArrayBuffer/resizable/sort-with-custom-comparison.js b/test/staging/ArrayBuffer/resizable/sort-with-custom-comparison.js deleted file mode 100644 index 9e64c9fc9f3..00000000000 --- a/test/staging/ArrayBuffer/resizable/sort-with-custom-comparison.js +++ /dev/null @@ -1,305 +0,0 @@ -// Copyright 2021 the V8 project authors. All rights reserved. -// This code is governed by the BSD license found in the LICENSE file. - -/*--- -esid: sec-arraybuffer-length -description: > - Automatically ported from SortWithCustomComparison test - in V8's mjsunit test typedarray-resizablearraybuffer.js -includes: [compareArray.js] -features: [resizable-arraybuffer] -flags: [onlyStrict] ----*/ - -class MyUint8Array extends Uint8Array { -} - -class MyFloat32Array extends Float32Array { -} - -class MyBigInt64Array extends BigInt64Array { -} - -const builtinCtors = [ - Uint8Array, - Int8Array, - Uint16Array, - Int16Array, - Uint32Array, - Int32Array, - Float32Array, - Float64Array, - Uint8ClampedArray, - BigUint64Array, - BigInt64Array -]; - -const ctors = [ - ...builtinCtors, - MyUint8Array, - MyFloat32Array, - MyBigInt64Array -]; - -function CreateResizableArrayBuffer(byteLength, maxByteLength) { - return new ArrayBuffer(byteLength, { maxByteLength: maxByteLength }); -} - -function WriteToTypedArray(array, index, value) { - if (array instanceof BigInt64Array || array instanceof BigUint64Array) { - array[index] = BigInt(value); - } else { - array[index] = value; - } -} - -function Convert(item) { - if (typeof item == 'bigint') { - return Number(item); - } - return item; -} - -function ToNumbers(array) { - let result = []; - for (let item of array) { - result.push(Convert(item)); - } - return result; -} - -const TypedArraySortHelper = (ta, ...rest) => { - ta.sort(...rest); -}; - -const ArraySortHelper = (ta, ...rest) => { - Array.prototype.sort.call(ta, ...rest); -}; - -function SortWithCustomComparison(sortHelper, oobThrows) { - for (let ctor of ctors) { - const rab = CreateResizableArrayBuffer(4 * ctor.BYTES_PER_ELEMENT, 8 * ctor.BYTES_PER_ELEMENT); - const fixedLength = new ctor(rab, 0, 4); - const fixedLengthWithOffset = new ctor(rab, 2 * ctor.BYTES_PER_ELEMENT, 2); - const lengthTracking = new ctor(rab, 0); - const lengthTrackingWithOffset = new ctor(rab, 2 * ctor.BYTES_PER_ELEMENT); - const taFull = new ctor(rab, 0); - function WriteUnsortedData() { - // Write some data into the array. - for (let i = 0; i < taFull.length; ++i) { - WriteToTypedArray(taFull, i, 10 - i); - } - } - function CustomComparison(a, b) { - // Sort all odd numbers before even numbers. - a = Number(a); - b = Number(b); - if (a % 2 == 1 && b % 2 == 0) { - return -1; - } - if (a % 2 == 0 && b % 2 == 1) { - return 1; - } - if (a < b) { - return -1; - } - if (a > b) { - return 1; - } - return 0; - } - // Orig. array: [10, 9, 8, 7] - // [10, 9, 8, 7] << fixedLength - // [8, 7] << fixedLengthWithOffset - // [10, 9, 8, 7, ...] << lengthTracking - // [8, 7, ...] << lengthTrackingWithOffset - - WriteUnsortedData(); - sortHelper(fixedLength, CustomComparison); - assert.compareArray(ToNumbers(taFull), [ - 7, - 9, - 8, - 10 - ]); - WriteUnsortedData(); - sortHelper(fixedLengthWithOffset, CustomComparison); - assert.compareArray(ToNumbers(taFull), [ - 10, - 9, - 7, - 8 - ]); - WriteUnsortedData(); - sortHelper(lengthTracking, CustomComparison); - assert.compareArray(ToNumbers(taFull), [ - 7, - 9, - 8, - 10 - ]); - WriteUnsortedData(); - sortHelper(lengthTrackingWithOffset, CustomComparison); - assert.compareArray(ToNumbers(taFull), [ - 10, - 9, - 7, - 8 - ]); - - // Shrink so that fixed length TAs go out of bounds. - rab.resize(3 * ctor.BYTES_PER_ELEMENT); - - // Orig. array: [10, 9, 8] - // [10, 9, 8, ...] << lengthTracking - // [8, ...] << lengthTrackingWithOffset - - WriteUnsortedData(); - if (oobThrows) { - assert.throws(TypeError, () => { - sortHelper(fixedLength, CustomComparison); - }); - assert.compareArray(ToNumbers(taFull), [ - 10, - 9, - 8 - ]); - assert.throws(TypeError, () => { - sortHelper(fixedLengthWithOffset, CustomComparison); - }); - assert.compareArray(ToNumbers(taFull), [ - 10, - 9, - 8 - ]); - } else { - sortHelper(fixedLength, CustomComparison); - assert.compareArray(ToNumbers(taFull), [ - 10, - 9, - 8 - ]); - sortHelper(fixedLengthWithOffset, CustomComparison); - assert.compareArray(ToNumbers(taFull), [ - 10, - 9, - 8 - ]); - } - WriteUnsortedData(); - sortHelper(lengthTracking, CustomComparison); - assert.compareArray(ToNumbers(taFull), [ - 9, - 8, - 10 - ]); - WriteUnsortedData(); - sortHelper(lengthTrackingWithOffset, CustomComparison); - assert.compareArray(ToNumbers(taFull), [ - 10, - 9, - 8 - ]); - - // Shrink so that the TAs with offset go out of bounds. - rab.resize(1 * ctor.BYTES_PER_ELEMENT); - WriteUnsortedData(); - if (oobThrows) { - assert.throws(TypeError, () => { - sortHelper(fixedLength, CustomComparison); - }); - assert.compareArray(ToNumbers(taFull), [10]); - assert.throws(TypeError, () => { - sortHelper(fixedLengthWithOffset, CustomComparison); - }); - assert.compareArray(ToNumbers(taFull), [10]); - assert.throws(TypeError, () => { - sortHelper(lengthTrackingWithOffset, CustomComparison); - }); - assert.compareArray(ToNumbers(taFull), [10]); - } else { - sortHelper(fixedLength, CustomComparison); - assert.compareArray(ToNumbers(taFull), [10]); - sortHelper(fixedLengthWithOffset, CustomComparison); - assert.compareArray(ToNumbers(taFull), [10]); - sortHelper(lengthTrackingWithOffset, CustomComparison); - assert.compareArray(ToNumbers(taFull), [10]); - } - WriteUnsortedData(); - sortHelper(lengthTracking, CustomComparison); - assert.compareArray(ToNumbers(taFull), [10]); - - // Shrink to zero. - rab.resize(0); - if (oobThrows) { - assert.throws(TypeError, () => { - sortHelper(fixedLength, CustomComparison); - }); - assert.throws(TypeError, () => { - sortHelper(fixedLengthWithOffset, CustomComparison); - }); - assert.throws(TypeError, () => { - sortHelper(lengthTrackingWithOffset, CustomComparison); - }); - } else { - sortHelper(fixedLength, CustomComparison); - sortHelper(fixedLengthWithOffset, CustomComparison); - sortHelper(lengthTrackingWithOffset, CustomComparison); - } - sortHelper(lengthTracking, CustomComparison); - assert.compareArray(ToNumbers(taFull), []); - - // Grow so that all TAs are back in-bounds. - rab.resize(6 * ctor.BYTES_PER_ELEMENT); - - // Orig. array: [10, 9, 8, 7, 6, 5] - // [10, 9, 8, 7] << fixedLength - // [8, 7] << fixedLengthWithOffset - // [10, 9, 8, 7, 6, 5, ...] << lengthTracking - // [8, 7, 6, 5, ...] << lengthTrackingWithOffset - - WriteUnsortedData(); - sortHelper(fixedLength, CustomComparison); - assert.compareArray(ToNumbers(taFull), [ - 7, - 9, - 8, - 10, - 6, - 5 - ]); - WriteUnsortedData(); - sortHelper(fixedLengthWithOffset, CustomComparison); - assert.compareArray(ToNumbers(taFull), [ - 10, - 9, - 7, - 8, - 6, - 5 - ]); - WriteUnsortedData(); - sortHelper(lengthTracking, CustomComparison); - assert.compareArray(ToNumbers(taFull), [ - 5, - 7, - 9, - 6, - 8, - 10 - ]); - WriteUnsortedData(); - sortHelper(lengthTrackingWithOffset, CustomComparison); - assert.compareArray(ToNumbers(taFull), [ - 10, - 9, - 5, - 7, - 6, - 8 - ]); - } -} - -SortWithCustomComparison(TypedArraySortHelper, true); -SortWithCustomComparison(ArraySortHelper, false); diff --git a/test/staging/ArrayBuffer/resizable/sort-with-default-comparison.js b/test/staging/ArrayBuffer/resizable/sort-with-default-comparison.js deleted file mode 100644 index fd215855f48..00000000000 --- a/test/staging/ArrayBuffer/resizable/sort-with-default-comparison.js +++ /dev/null @@ -1,241 +0,0 @@ -// Copyright 2021 the V8 project authors. All rights reserved. -// This code is governed by the BSD license found in the LICENSE file. - -/*--- -esid: sec-arraybuffer-length -description: > - Automatically ported from SortWithDefaultComparison test - in V8's mjsunit test typedarray-resizablearraybuffer.js -includes: [compareArray.js] -features: [resizable-arraybuffer] -flags: [onlyStrict] ----*/ - -// This test cannot be reused between TypedArray.protoype.sort and -// Array.prototype.sort, since the default sorting functions differ. - -class MyUint8Array extends Uint8Array { -} - -class MyFloat32Array extends Float32Array { -} - -class MyBigInt64Array extends BigInt64Array { -} - -const builtinCtors = [ - Uint8Array, - Int8Array, - Uint16Array, - Int16Array, - Uint32Array, - Int32Array, - Float32Array, - Float64Array, - Uint8ClampedArray, - BigUint64Array, - BigInt64Array -]; - -const ctors = [ - ...builtinCtors, - MyUint8Array, - MyFloat32Array, - MyBigInt64Array -]; - -function CreateResizableArrayBuffer(byteLength, maxByteLength) { - return new ArrayBuffer(byteLength, { maxByteLength: maxByteLength }); -} - -function WriteToTypedArray(array, index, value) { - if (array instanceof BigInt64Array || array instanceof BigUint64Array) { - array[index] = BigInt(value); - } else { - array[index] = value; - } -} - -function Convert(item) { - if (typeof item == 'bigint') { - return Number(item); - } - return item; -} - -function ToNumbers(array) { - let result = []; - for (let item of array) { - result.push(Convert(item)); - } - return result; -} - -for (let ctor of ctors) { - const rab = CreateResizableArrayBuffer(4 * ctor.BYTES_PER_ELEMENT, 8 * ctor.BYTES_PER_ELEMENT); - const fixedLength = new ctor(rab, 0, 4); - const fixedLengthWithOffset = new ctor(rab, 2 * ctor.BYTES_PER_ELEMENT, 2); - const lengthTracking = new ctor(rab, 0); - const lengthTrackingWithOffset = new ctor(rab, 2 * ctor.BYTES_PER_ELEMENT); - const taFull = new ctor(rab, 0); - function WriteUnsortedData() { - // Write some data into the array. - for (let i = 0; i < taFull.length; ++i) { - WriteToTypedArray(taFull, i, 10 - 2 * i); - } - } - // Orig. array: [10, 8, 6, 4] - // [10, 8, 6, 4] << fixedLength - // [6, 4] << fixedLengthWithOffset - // [10, 8, 6, 4, ...] << lengthTracking - // [6, 4, ...] << lengthTrackingWithOffset - - WriteUnsortedData(); - fixedLength.sort(); - assert.compareArray(ToNumbers(taFull), [ - 4, - 6, - 8, - 10 - ]); - WriteUnsortedData(); - fixedLengthWithOffset.sort(); - assert.compareArray(ToNumbers(taFull), [ - 10, - 8, - 4, - 6 - ]); - WriteUnsortedData(); - lengthTracking.sort(); - assert.compareArray(ToNumbers(taFull), [ - 4, - 6, - 8, - 10 - ]); - WriteUnsortedData(); - lengthTrackingWithOffset.sort(); - assert.compareArray(ToNumbers(taFull), [ - 10, - 8, - 4, - 6 - ]); - - // Shrink so that fixed length TAs go out of bounds. - rab.resize(3 * ctor.BYTES_PER_ELEMENT); - - // Orig. array: [10, 8, 6] - // [10, 8, 6, ...] << lengthTracking - // [6, ...] << lengthTrackingWithOffset - - WriteUnsortedData(); - assert.throws(TypeError, () => { - fixedLength.sort(); - }); - WriteUnsortedData(); - assert.throws(TypeError, () => { - fixedLengthWithOffset.sort(); - }); - WriteUnsortedData(); - lengthTracking.sort(); - assert.compareArray(ToNumbers(taFull), [ - 6, - 8, - 10 - ]); - WriteUnsortedData(); - lengthTrackingWithOffset.sort(); - assert.compareArray(ToNumbers(taFull), [ - 10, - 8, - 6 - ]); - - // Shrink so that the TAs with offset go out of bounds. - rab.resize(1 * ctor.BYTES_PER_ELEMENT); - WriteUnsortedData(); - assert.throws(TypeError, () => { - fixedLength.sort(); - }); - WriteUnsortedData(); - assert.throws(TypeError, () => { - fixedLengthWithOffset.sort(); - }); - WriteUnsortedData(); - lengthTracking.sort(); - assert.compareArray(ToNumbers(taFull), [10]); - WriteUnsortedData(); - assert.throws(TypeError, () => { - lengthTrackingWithOffset.sort(); - }); - - // Shrink to zero. - rab.resize(0); - WriteUnsortedData(); - assert.throws(TypeError, () => { - fixedLength.sort(); - }); - WriteUnsortedData(); - assert.throws(TypeError, () => { - fixedLengthWithOffset.sort(); - }); - WriteUnsortedData(); - lengthTracking.sort(); - assert.compareArray(ToNumbers(taFull), []); - WriteUnsortedData(); - assert.throws(TypeError, () => { - lengthTrackingWithOffset.sort(); - }); - - // Grow so that all TAs are back in-bounds. - rab.resize(6 * ctor.BYTES_PER_ELEMENT); - - // Orig. array: [10, 8, 6, 4, 2, 0] - // [10, 8, 6, 4] << fixedLength - // [6, 4] << fixedLengthWithOffset - // [10, 8, 6, 4, 2, 0, ...] << lengthTracking - // [6, 4, 2, 0, ...] << lengthTrackingWithOffset - - WriteUnsortedData(); - fixedLength.sort(); - assert.compareArray(ToNumbers(taFull), [ - 4, - 6, - 8, - 10, - 2, - 0 - ]); - WriteUnsortedData(); - fixedLengthWithOffset.sort(); - assert.compareArray(ToNumbers(taFull), [ - 10, - 8, - 4, - 6, - 2, - 0 - ]); - WriteUnsortedData(); - lengthTracking.sort(); - assert.compareArray(ToNumbers(taFull), [ - 0, - 2, - 4, - 6, - 8, - 10 - ]); - WriteUnsortedData(); - lengthTrackingWithOffset.sort(); - assert.compareArray(ToNumbers(taFull), [ - 10, - 8, - 0, - 2, - 4, - 6 - ]); -} diff --git a/test/staging/ArrayBuffer/resizable/subarray-parameter-conversion-grows.js b/test/staging/ArrayBuffer/resizable/subarray-parameter-conversion-grows.js deleted file mode 100644 index 5a2c7ba47de..00000000000 --- a/test/staging/ArrayBuffer/resizable/subarray-parameter-conversion-grows.js +++ /dev/null @@ -1,137 +0,0 @@ -// Copyright 2021 the V8 project authors. All rights reserved. -// This code is governed by the BSD license found in the LICENSE file. - -/*--- -esid: sec-arraybuffer-length -description: > - Automatically ported from SubarrayParameterConversionGrows test - in V8's mjsunit test typedarray-resizablearraybuffer.js -includes: [compareArray.js] -features: [resizable-arraybuffer] -flags: [onlyStrict] ----*/ - -class MyUint8Array extends Uint8Array { -} - -class MyFloat32Array extends Float32Array { -} - -class MyBigInt64Array extends BigInt64Array { -} - -const builtinCtors = [ - Uint8Array, - Int8Array, - Uint16Array, - Int16Array, - Uint32Array, - Int32Array, - Float32Array, - Float64Array, - Uint8ClampedArray, - BigUint64Array, - BigInt64Array -]; - -const ctors = [ - ...builtinCtors, - MyUint8Array, - MyFloat32Array, - MyBigInt64Array -]; - -function CreateResizableArrayBuffer(byteLength, maxByteLength) { - return new ArrayBuffer(byteLength, { maxByteLength: maxByteLength }); -} - -function WriteToTypedArray(array, index, value) { - if (array instanceof BigInt64Array || array instanceof BigUint64Array) { - array[index] = BigInt(value); - } else { - array[index] = value; - } -} - -function Convert(item) { - if (typeof item == 'bigint') { - return Number(item); - } - return item; -} - -function ToNumbers(array) { - let result = []; - for (let item of array) { - result.push(Convert(item)); - } - return result; -} - -// Orig. array: [0, 2, 4, 6] -// [0, 2, 4, 6] << fixedLength -// [0, 2, 4, 6, ...] << lengthTracking -function CreateRabForTest(ctor) { - const rab = CreateResizableArrayBuffer(4 * ctor.BYTES_PER_ELEMENT, 8 * ctor.BYTES_PER_ELEMENT); - // Write some data into the array. - const taWrite = new ctor(rab); - for (let i = 0; i < 4; ++i) { - WriteToTypedArray(taWrite, i, 2 * i); - } - return rab; -} - -// Growing a fixed length TA back in bounds. -for (let ctor of ctors) { - const rab = CreateRabForTest(ctor); - const fixedLength = new ctor(rab, 0, 4); - // Make `fixedLength` OOB. - rab.resize(2 * ctor.BYTES_PER_ELEMENT); - const evil = { - valueOf: () => { - rab.resize(4 * ctor.BYTES_PER_ELEMENT); - return 0; - } - }; - // The length computation is done before parameter conversion. At that - // point, the length is 0, since the TA is OOB. - assert.compareArray(ToNumbers(fixedLength.subarray(evil, 0, 1)), []); -} - -// Growing + fixed-length TA. Growing won't affect anything. -for (let ctor of ctors) { - const rab = CreateRabForTest(ctor); - const fixedLength = new ctor(rab, 0, 4); - const evil = { - valueOf: () => { - rab.resize(6 * ctor.BYTES_PER_ELEMENT); - return 0; - } - }; - assert.compareArray(ToNumbers(fixedLength.subarray(evil)), [ - 0, - 2, - 4, - 6 - ]); -} - -// Growing + length-tracking TA. The length computation is done with the -// original length. -for (let ctor of ctors) { - const rab = CreateRabForTest(ctor); - const lengthTracking = new ctor(rab, 0); - const evil = { - valueOf: () => { - rab.resize(6 * ctor.BYTES_PER_ELEMENT); - return 0; - } - }; - assert.compareArray( - ToNumbers(lengthTracking.subarray(evil, lengthTracking.length)), [ - 0, - 2, - 4, - 6 - ]); -} diff --git a/test/staging/ArrayBuffer/resizable/subarray-parameter-conversion-shrinks.js b/test/staging/ArrayBuffer/resizable/subarray-parameter-conversion-shrinks.js deleted file mode 100644 index a282302d1c0..00000000000 --- a/test/staging/ArrayBuffer/resizable/subarray-parameter-conversion-shrinks.js +++ /dev/null @@ -1,219 +0,0 @@ -// Copyright 2021 the V8 project authors. All rights reserved. -// This code is governed by the BSD license found in the LICENSE file. - -/*--- -esid: sec-arraybuffer-length -description: > - Automatically ported from SubarrayParameterConversionShrinks test - in V8's mjsunit test typedarray-resizablearraybuffer.js -includes: [compareArray.js] -features: [resizable-arraybuffer] -flags: [onlyStrict] ----*/ - -class MyUint8Array extends Uint8Array { -} - -class MyFloat32Array extends Float32Array { -} - -class MyBigInt64Array extends BigInt64Array { -} - -const builtinCtors = [ - Uint8Array, - Int8Array, - Uint16Array, - Int16Array, - Uint32Array, - Int32Array, - Float32Array, - Float64Array, - Uint8ClampedArray, - BigUint64Array, - BigInt64Array -]; - -const ctors = [ - ...builtinCtors, - MyUint8Array, - MyFloat32Array, - MyBigInt64Array -]; - -function CreateResizableArrayBuffer(byteLength, maxByteLength) { - return new ArrayBuffer(byteLength, { maxByteLength: maxByteLength }); -} - -function WriteToTypedArray(array, index, value) { - if (array instanceof BigInt64Array || array instanceof BigUint64Array) { - array[index] = BigInt(value); - } else { - array[index] = value; - } -} - -function Convert(item) { - if (typeof item == 'bigint') { - return Number(item); - } - return item; -} - -function ToNumbers(array) { - let result = []; - for (let item of array) { - result.push(Convert(item)); - } - return result; -} - -// Orig. array: [0, 2, 4, 6] -// [0, 2, 4, 6] << fixedLength -// [0, 2, 4, 6, ...] << lengthTracking -function CreateRabForTest(ctor) { - const rab = CreateResizableArrayBuffer(4 * ctor.BYTES_PER_ELEMENT, 8 * ctor.BYTES_PER_ELEMENT); - // Write some data into the array. - const taWrite = new ctor(rab); - for (let i = 0; i < 4; ++i) { - WriteToTypedArray(taWrite, i, 2 * i); - } - return rab; -} - -// Fixed-length TA + first parameter conversion shrinks. The old length is -// used in the length computation, and the subarray construction fails. -for (let ctor of ctors) { - const rab = CreateRabForTest(ctor); - const fixedLength = new ctor(rab, 0, 4); - let evil = { - valueOf: () => { - rab.resize(2 * ctor.BYTES_PER_ELEMENT); - return 0; - } - }; - assert.throws(RangeError, () => { - fixedLength.subarray(evil); - }); -} - -// Like the previous test, but now we construct a smaller subarray and it -// succeeds. -for (let ctor of ctors) { - const rab = CreateRabForTest(ctor); - const fixedLength = new ctor(rab, 0, 4); - let evil = { - valueOf: () => { - rab.resize(2 * ctor.BYTES_PER_ELEMENT); - return 0; - } - }; - assert.compareArray(ToNumbers(fixedLength.subarray(evil, 1)), [0]); -} - -// Fixed-length TA + second parameter conversion shrinks. The old length is -// used in the length computation, and the subarray construction fails. -for (let ctor of ctors) { - const rab = CreateRabForTest(ctor); - const fixedLength = new ctor(rab, 0, 4); - let evil = { - valueOf: () => { - rab.resize(2 * ctor.BYTES_PER_ELEMENT); - return 3; - } - }; - assert.throws(RangeError, () => { - fixedLength.subarray(0, evil); - }); -} - -// Like the previous test, but now we construct a smaller subarray and it -// succeeds. -for (let ctor of ctors) { - const rab = CreateRabForTest(ctor); - const fixedLength = new ctor(rab, 0, 4); - let evil = { - valueOf: () => { - rab.resize(2 * ctor.BYTES_PER_ELEMENT); - return 1; - } - }; - assert.compareArray(ToNumbers(fixedLength.subarray(0, evil)), [0]); -} - -// Shrinking + fixed-length TA, subarray construction succeeds even though the -// TA goes OOB. -for (let ctor of ctors) { - const rab = CreateRabForTest(ctor); - const fixedLength = new ctor(rab, 0, 4); - const evil = { - valueOf: () => { - rab.resize(2 * ctor.BYTES_PER_ELEMENT); - return 0; - } - }; - assert.compareArray(ToNumbers(fixedLength.subarray(evil, 1)), [0]); -} - -// Length-tracking TA + first parameter conversion shrinks. The old length is -// used in the length computation, and the subarray construction fails. -for (let ctor of ctors) { - const rab = CreateRabForTest(ctor); - const lengthTracking = new ctor(rab); - let evil = { - valueOf: () => { - rab.resize(2 * ctor.BYTES_PER_ELEMENT); - return 0; - } - }; - assert.throws(RangeError, () => { - lengthTracking.subarray(evil, lengthTracking.length); - }); -} - -// Like the previous test, but now we construct a smaller subarray and it -// succeeds. -for (let ctor of ctors) { - const rab = CreateRabForTest(ctor); - const lengthTracking = new ctor(rab); - let evil = { - valueOf: () => { - rab.resize(2 * ctor.BYTES_PER_ELEMENT); - return 0; - } - }; - assert.compareArray(ToNumbers(lengthTracking.subarray(evil, 1)), [0]); -} - -// Length-tracking TA + first parameter conversion shrinks. The second -// parameter is negative -> the relative index is not recomputed, and the -// subarray construction fails. -for (let ctor of ctors) { - const rab = CreateRabForTest(ctor); - const lengthTracking = new ctor(rab); - let evil = { - valueOf: () => { - rab.resize(2 * ctor.BYTES_PER_ELEMENT); - return 0; - } - }; - assert.throws(RangeError, () => { - lengthTracking.subarray(evil, -1); - }); -} - -// Length-tracking TA + second parameter conversion shrinks. The second -// parameter is too large -> the subarray construction fails. -for (let ctor of ctors) { - const rab = CreateRabForTest(ctor); - const lengthTracking = new ctor(rab); - let evil = { - valueOf: () => { - rab.resize(2 * ctor.BYTES_PER_ELEMENT); - return 3; - } - }; - assert.throws(RangeError, () => { - lengthTracking.subarray(0, evil); - }); -} diff --git a/test/staging/ArrayBuffer/resizable/subarray.js b/test/staging/ArrayBuffer/resizable/subarray.js deleted file mode 100644 index 70bdca7148b..00000000000 --- a/test/staging/ArrayBuffer/resizable/subarray.js +++ /dev/null @@ -1,230 +0,0 @@ -// Copyright 2021 the V8 project authors. All rights reserved. -// This code is governed by the BSD license found in the LICENSE file. - -/*--- -esid: sec-arraybuffer-length -description: > - Automatically ported from Subarray test - in V8's mjsunit test typedarray-resizablearraybuffer.js -includes: [compareArray.js] -features: [resizable-arraybuffer] -flags: [onlyStrict] ----*/ - -class MyUint8Array extends Uint8Array { -} - -class MyFloat32Array extends Float32Array { -} - -class MyBigInt64Array extends BigInt64Array { -} - -const builtinCtors = [ - Uint8Array, - Int8Array, - Uint16Array, - Int16Array, - Uint32Array, - Int32Array, - Float32Array, - Float64Array, - Uint8ClampedArray, - BigUint64Array, - BigInt64Array -]; - -const ctors = [ - ...builtinCtors, - MyUint8Array, - MyFloat32Array, - MyBigInt64Array -]; - -function CreateResizableArrayBuffer(byteLength, maxByteLength) { - return new ArrayBuffer(byteLength, { maxByteLength: maxByteLength }); -} - -function WriteToTypedArray(array, index, value) { - if (array instanceof BigInt64Array || array instanceof BigUint64Array) { - array[index] = BigInt(value); - } else { - array[index] = value; - } -} - -function Convert(item) { - if (typeof item == 'bigint') { - return Number(item); - } - return item; -} - -function ToNumbers(array) { - let result = []; - for (let item of array) { - result.push(Convert(item)); - } - return result; -} - -for (let ctor of ctors) { - const rab = CreateResizableArrayBuffer(4 * ctor.BYTES_PER_ELEMENT, 8 * ctor.BYTES_PER_ELEMENT); - const fixedLength = new ctor(rab, 0, 4); - const fixedLengthWithOffset = new ctor(rab, 2 * ctor.BYTES_PER_ELEMENT, 2); - const lengthTracking = new ctor(rab, 0); - const lengthTrackingWithOffset = new ctor(rab, 2 * ctor.BYTES_PER_ELEMENT); - // Write some data into the array. - const taWrite = new ctor(rab); - for (let i = 0; i < 4; ++i) { - WriteToTypedArray(taWrite, i, 2 * i); - } - - // Orig. array: [0, 2, 4, 6] - // [0, 2, 4, 6] << fixedLength - // [4, 6] << fixedLengthWithOffset - // [0, 2, 4, 6, ...] << lengthTracking - // [4, 6, ...] << lengthTrackingWithOffset - - const fixedLengthSubFull = fixedLength.subarray(0); - assert.compareArray(ToNumbers(fixedLengthSubFull), [ - 0, - 2, - 4, - 6 - ]); - const fixedLengthWithOffsetSubFull = fixedLengthWithOffset.subarray(0); - assert.compareArray(ToNumbers(fixedLengthWithOffsetSubFull), [ - 4, - 6 - ]); - const lengthTrackingSubFull = lengthTracking.subarray(0); - assert.compareArray(ToNumbers(lengthTrackingSubFull), [ - 0, - 2, - 4, - 6 - ]); - const lengthTrackingWithOffsetSubFull = lengthTrackingWithOffset.subarray(0); - assert.compareArray(ToNumbers(lengthTrackingWithOffsetSubFull), [ - 4, - 6 - ]); - - // Relative offsets - assert.compareArray(ToNumbers(fixedLength.subarray(-2)), [ - 4, - 6 - ]); - assert.compareArray(ToNumbers(fixedLengthWithOffset.subarray(-1)), [6]); - assert.compareArray(ToNumbers(lengthTracking.subarray(-2)), [ - 4, - 6 - ]); - assert.compareArray(ToNumbers(lengthTrackingWithOffset.subarray(-1)), [6]); - - // Shrink so that fixed length TAs go out of bounds. - rab.resize(3 * ctor.BYTES_PER_ELEMENT); - - // Orig. array: [0, 2, 4] - // [0, 2, 4, ...] << lengthTracking - // [4, ...] << lengthTrackingWithOffset - - // We can create subarrays of OOB arrays (which have length 0), as long as - // the new arrays are not OOB. - assert.compareArray(ToNumbers(fixedLength.subarray(0)), []); - assert.compareArray(ToNumbers(fixedLengthWithOffset.subarray(0)), []); - assert.compareArray(ToNumbers(lengthTracking.subarray(0)), [ - 0, - 2, - 4 - ]); - assert.compareArray(ToNumbers(lengthTrackingWithOffset.subarray(0)), [4]); - - // Also the previously created subarrays are OOB. - assert.sameValue(fixedLengthSubFull.length, 0); - assert.sameValue(fixedLengthWithOffsetSubFull.length, 0); - - // Relative offsets - assert.compareArray(ToNumbers(lengthTracking.subarray(-2)), [ - 2, - 4 - ]); - assert.compareArray(ToNumbers(lengthTrackingWithOffset.subarray(-1)), [4]); - - // Shrink so that the TAs with offset go out of bounds. - rab.resize(1 * ctor.BYTES_PER_ELEMENT); - assert.compareArray(ToNumbers(fixedLength.subarray(0)), []); - assert.compareArray(ToNumbers(lengthTracking.subarray(0)), [0]); - - // Even the 0-length subarray of fixedLengthWithOffset would be OOB -> - // this throws. - assert.throws(RangeError, () => { - fixedLengthWithOffset.subarray(0); - }); - - // Also the previously created subarrays are OOB. - assert.sameValue(fixedLengthSubFull.length, 0); - assert.sameValue(fixedLengthWithOffsetSubFull.length, 0); - assert.sameValue(lengthTrackingWithOffsetSubFull.length, 0); - - // Shrink to zero. - rab.resize(0); - assert.compareArray(ToNumbers(fixedLength.subarray(0)), []); - assert.compareArray(ToNumbers(lengthTracking.subarray(0)), []); - assert.throws(RangeError, () => { - fixedLengthWithOffset.subarray(0); - }); - assert.throws(RangeError, () => { - lengthTrackingWithOffset.subarray(0); - }); - - // Also the previously created subarrays are OOB. - assert.sameValue(fixedLengthSubFull.length, 0); - assert.sameValue(fixedLengthWithOffsetSubFull.length, 0); - assert.sameValue(lengthTrackingWithOffsetSubFull.length, 0); - - // Grow so that all TAs are back in-bounds. - rab.resize(6 * ctor.BYTES_PER_ELEMENT); - for (let i = 0; i < 6; ++i) { - WriteToTypedArray(taWrite, i, 2 * i); - } - - // Orig. array: [0, 2, 4, 6, 8, 10] - // [0, 2, 4, 6] << fixedLength - // [4, 6] << fixedLengthWithOffset - // [0, 2, 4, 6, 8, 10, ...] << lengthTracking - // [4, 6, 8, 10, ...] << lengthTrackingWithOffset - - assert.compareArray(ToNumbers(fixedLength.subarray(0)), [ - 0, - 2, - 4, - 6 - ]); - assert.compareArray(ToNumbers(fixedLengthWithOffset.subarray(0)), [ - 4, - 6 - ]); - assert.compareArray(ToNumbers(lengthTracking.subarray(0)), [ - 0, - 2, - 4, - 6, - 8, - 10 - ]); - assert.compareArray(ToNumbers(lengthTrackingWithOffset.subarray(0)), [ - 4, - 6, - 8, - 10 - ]); - - // Also the previously created subarrays are no longer OOB. - assert.sameValue(fixedLengthSubFull.length, 4); - assert.sameValue(fixedLengthWithOffsetSubFull.length, 2); - // Subarrays of length-tracking TAs are also length-tracking. - assert.sameValue(lengthTrackingSubFull.length, 6); - assert.sameValue(lengthTrackingWithOffsetSubFull.length, 4); -} diff --git a/test/staging/ArrayBuffer/resizable/test-copy-within.js b/test/staging/ArrayBuffer/resizable/test-copy-within.js deleted file mode 100644 index b9945f8baa8..00000000000 --- a/test/staging/ArrayBuffer/resizable/test-copy-within.js +++ /dev/null @@ -1,268 +0,0 @@ -// Copyright 2021 the V8 project authors. All rights reserved. -// This code is governed by the BSD license found in the LICENSE file. - -/*--- -esid: sec-arraybuffer-length -description: > - Automatically ported from TestCopyWithin test - in V8's mjsunit test typedarray-resizablearraybuffer.js -includes: [compareArray.js] -features: [resizable-arraybuffer] -flags: [onlyStrict] ----*/ - -class MyUint8Array extends Uint8Array { -} - -class MyFloat32Array extends Float32Array { -} - -class MyBigInt64Array extends BigInt64Array { -} - -const builtinCtors = [ - Uint8Array, - Int8Array, - Uint16Array, - Int16Array, - Uint32Array, - Int32Array, - Float32Array, - Float64Array, - Uint8ClampedArray, - BigUint64Array, - BigInt64Array -]; - -const ctors = [ - ...builtinCtors, - MyUint8Array, - MyFloat32Array, - MyBigInt64Array -]; - -function CreateResizableArrayBuffer(byteLength, maxByteLength) { - return new ArrayBuffer(byteLength, { maxByteLength: maxByteLength }); -} - -function WriteToTypedArray(array, index, value) { - if (array instanceof BigInt64Array || array instanceof BigUint64Array) { - array[index] = BigInt(value); - } else { - array[index] = value; - } -} - -function Convert(item) { - if (typeof item == 'bigint') { - return Number(item); - } - return item; -} - -function ToNumbers(array) { - let result = []; - for (let item of array) { - result.push(Convert(item)); - } - return result; -} - -const TypedArrayCopyWithinHelper = (ta, ...rest) => { - ta.copyWithin(...rest); -}; - -const ArrayCopyWithinHelper = (ta, ...rest) => { - Array.prototype.copyWithin.call(ta, ...rest); -}; - -function TestCopyWithin(helper, oobThrows) { - for (let ctor of ctors) { - const rab = CreateResizableArrayBuffer(4 * ctor.BYTES_PER_ELEMENT, 8 * ctor.BYTES_PER_ELEMENT); - const fixedLength = new ctor(rab, 0, 4); - const fixedLengthWithOffset = new ctor(rab, 2 * ctor.BYTES_PER_ELEMENT, 2); - const lengthTracking = new ctor(rab, 0); - const lengthTrackingWithOffset = new ctor(rab, 2 * ctor.BYTES_PER_ELEMENT); - - // Write some data into the array. - const taWrite = new ctor(rab); - for (let i = 0; i < 4; ++i) { - WriteToTypedArray(taWrite, i, i); - } - - // Orig. array: [0, 1, 2, 3] - // [0, 1, 2, 3] << fixedLength - // [2, 3] << fixedLengthWithOffset - // [0, 1, 2, 3, ...] << lengthTracking - // [2, 3, ...] << lengthTrackingWithOffset - - helper(fixedLength, 0, 2); - assert.compareArray(ToNumbers(fixedLength), [ - 2, - 3, - 2, - 3 - ]); - for (let i = 0; i < 4; ++i) { - WriteToTypedArray(taWrite, i, i); - } - helper(fixedLengthWithOffset, 0, 1); - assert.compareArray(ToNumbers(fixedLengthWithOffset), [ - 3, - 3 - ]); - for (let i = 0; i < 4; ++i) { - WriteToTypedArray(taWrite, i, i); - } - helper(lengthTracking, 0, 2); - assert.compareArray(ToNumbers(lengthTracking), [ - 2, - 3, - 2, - 3 - ]); - helper(lengthTrackingWithOffset, 0, 1); - assert.compareArray(ToNumbers(lengthTrackingWithOffset), [ - 3, - 3 - ]); - - // Shrink so that fixed length TAs go out of bounds. - rab.resize(3 * ctor.BYTES_PER_ELEMENT); - for (let i = 0; i < 3; ++i) { - WriteToTypedArray(taWrite, i, i); - } - - // Orig. array: [0, 1, 2] - // [0, 1, 2, ...] << lengthTracking - // [2, ...] << lengthTrackingWithOffset - - if (oobThrows) { - assert.throws(TypeError, () => { - helper(fixedLength, 0, 1); - }); - assert.throws(TypeError, () => { - helper(fixedLengthWithOffset, 0, 1); - }); - } else { - helper(fixedLength, 0, 1); - helper(fixedLengthWithOffset, 0, 1); - // We'll check below that these were no-op. - } - assert.compareArray(ToNumbers(lengthTracking), [ - 0, - 1, - 2 - ]); - helper(lengthTracking, 0, 1); - assert.compareArray(ToNumbers(lengthTracking), [ - 1, - 2, - 2 - ]); - helper(lengthTrackingWithOffset, 0, 1); - assert.compareArray(ToNumbers(lengthTrackingWithOffset), [2]); - - // Shrink so that the TAs with offset go out of bounds. - rab.resize(1 * ctor.BYTES_PER_ELEMENT); - WriteToTypedArray(taWrite, 0, 0); - if (oobThrows) { - assert.throws(TypeError, () => { - helper(fixedLength, 0, 1, 1); - }); - assert.throws(TypeError, () => { - helper(fixedLengthWithOffset, 0, 1, 1); - }); - assert.throws(TypeError, () => { - helper(lengthTrackingWithOffset, 0, 1, 1); - }); - } else { - helper(fixedLength, 0, 1, 1); - helper(fixedLengthWithOffset, 0, 1, 1); - helper(lengthTrackingWithOffset, 0, 1, 1); - } - assert.compareArray(ToNumbers(lengthTracking), [0]); - helper(lengthTracking, 0, 0, 1); - assert.compareArray(ToNumbers(lengthTracking), [0]); - - // Shrink to zero. - rab.resize(0); - if (oobThrows) { - assert.throws(TypeError, () => { - helper(fixedLength, 0, 1, 1); - }); - assert.throws(TypeError, () => { - helper(fixedLengthWithOffset, 0, 1, 1); - }); - assert.throws(TypeError, () => { - helper(lengthTrackingWithOffset, 0, 1, 1); - }); - } else { - helper(fixedLength, 0, 1, 1); - helper(fixedLengthWithOffset, 0, 1, 1); - helper(lengthTrackingWithOffset, 0, 1, 1); - } - assert.compareArray(ToNumbers(lengthTracking), []); - helper(lengthTracking, 0, 0, 1); - assert.compareArray(ToNumbers(lengthTracking), []); - - // Grow so that all TAs are back in-bounds. - rab.resize(6 * ctor.BYTES_PER_ELEMENT); - for (let i = 0; i < 6; ++i) { - WriteToTypedArray(taWrite, i, i); - } - - // Orig. array: [0, 1, 2, 3, 4, 5] - // [0, 1, 2, 3] << fixedLength - // [2, 3] << fixedLengthWithOffset - // [0, 1, 2, 3, 4, 5, ...] << lengthTracking - // [2, 3, 4, 5, ...] << lengthTrackingWithOffset - - helper(fixedLength, 0, 2); - assert.compareArray(ToNumbers(fixedLength), [ - 2, - 3, - 2, - 3 - ]); - for (let i = 0; i < 6; ++i) { - WriteToTypedArray(taWrite, i, i); - } - helper(fixedLengthWithOffset, 0, 1); - assert.compareArray(ToNumbers(fixedLengthWithOffset), [ - 3, - 3 - ]); - for (let i = 0; i < 6; ++i) { - WriteToTypedArray(taWrite, i, i); - } - - // [0, 1, 2, 3, 4, 5, ...] << lengthTracking - // target ^ ^ start - helper(lengthTracking, 0, 2); - assert.compareArray(ToNumbers(lengthTracking), [ - 2, - 3, - 4, - 5, - 4, - 5 - ]); - for (let i = 0; i < 6; ++i) { - WriteToTypedArray(taWrite, i, i); - } - - // [2, 3, 4, 5, ...] << lengthTrackingWithOffset - // target ^ ^ start - helper(lengthTrackingWithOffset, 0, 1); - assert.compareArray(ToNumbers(lengthTrackingWithOffset), [ - 3, - 4, - 5, - 5 - ]); - } -} - -TestCopyWithin(TypedArrayCopyWithinHelper, true); -TestCopyWithin(ArrayCopyWithinHelper, false); diff --git a/test/staging/ArrayBuffer/resizable/test-fill.js b/test/staging/ArrayBuffer/resizable/test-fill.js deleted file mode 100644 index a9389e3d359..00000000000 --- a/test/staging/ArrayBuffer/resizable/test-fill.js +++ /dev/null @@ -1,239 +0,0 @@ -// Copyright 2021 the V8 project authors. All rights reserved. -// This code is governed by the BSD license found in the LICENSE file. - -/*--- -esid: sec-arraybuffer-length -description: > - Automatically ported from TestFill test - in V8's mjsunit test typedarray-resizablearraybuffer.js -includes: [compareArray.js] -features: [resizable-arraybuffer] -flags: [onlyStrict] ----*/ - -class MyUint8Array extends Uint8Array { -} - -class MyFloat32Array extends Float32Array { -} - -class MyBigInt64Array extends BigInt64Array { -} - -const builtinCtors = [ - Uint8Array, - Int8Array, - Uint16Array, - Int16Array, - Uint32Array, - Int32Array, - Float32Array, - Float64Array, - Uint8ClampedArray, - BigUint64Array, - BigInt64Array -]; - -const ctors = [ - ...builtinCtors, - MyUint8Array, - MyFloat32Array, - MyBigInt64Array -]; - -function CreateResizableArrayBuffer(byteLength, maxByteLength) { - return new ArrayBuffer(byteLength, { maxByteLength: maxByteLength }); -} - -function ReadDataFromBuffer(ab, ctor) { - let result = []; - const ta = new ctor(ab, 0, ab.byteLength / ctor.BYTES_PER_ELEMENT); - for (let item of ta) { - result.push(Number(item)); - } - return result; -} - -function TypedArrayFillHelper(ta, n, start, end) { - if (ta instanceof BigInt64Array || ta instanceof BigUint64Array) { - ta.fill(BigInt(n), start, end); - } else { - ta.fill(n, start, end); - } -} - -function ArrayFillHelper(ta, n, start, end) { - if (ta instanceof BigInt64Array || ta instanceof BigUint64Array) { - Array.prototype.fill.call(ta, BigInt(n), start, end); - } else { - Array.prototype.fill.call(ta, n, start, end); - } -} - -function TestFill(helper, oobThrows) { - for (let ctor of ctors) { - const rab = CreateResizableArrayBuffer(4 * ctor.BYTES_PER_ELEMENT, 8 * ctor.BYTES_PER_ELEMENT); - const fixedLength = new ctor(rab, 0, 4); - const fixedLengthWithOffset = new ctor(rab, 2 * ctor.BYTES_PER_ELEMENT, 2); - const lengthTracking = new ctor(rab, 0); - const lengthTrackingWithOffset = new ctor(rab, 2 * ctor.BYTES_PER_ELEMENT); - assert.compareArray(ReadDataFromBuffer(rab, ctor), [ - 0, - 0, - 0, - 0 - ]); - helper(fixedLength, 1); - assert.compareArray(ReadDataFromBuffer(rab, ctor), [ - 1, - 1, - 1, - 1 - ]); - helper(fixedLengthWithOffset, 2); - assert.compareArray(ReadDataFromBuffer(rab, ctor), [ - 1, - 1, - 2, - 2 - ]); - helper(lengthTracking, 3); - assert.compareArray(ReadDataFromBuffer(rab, ctor), [ - 3, - 3, - 3, - 3 - ]); - helper(lengthTrackingWithOffset, 4); - assert.compareArray(ReadDataFromBuffer(rab, ctor), [ - 3, - 3, - 4, - 4 - ]); - - // Shrink so that fixed length TAs go out of bounds. - rab.resize(3 * ctor.BYTES_PER_ELEMENT); - if (oobThrows) { - assert.throws(TypeError, () => helper(fixedLength, 5)); - assert.throws(TypeError, () => helper(fixedLengthWithOffset, 6)); - } else { - helper(fixedLength, 5); - helper(fixedLengthWithOffset, 6); - // We'll check below that these were no-op. - } - assert.compareArray(ReadDataFromBuffer(rab, ctor), [ - 3, - 3, - 4 - ]); - helper(lengthTracking, 7); - assert.compareArray(ReadDataFromBuffer(rab, ctor), [ - 7, - 7, - 7 - ]); - helper(lengthTrackingWithOffset, 8); - assert.compareArray(ReadDataFromBuffer(rab, ctor), [ - 7, - 7, - 8 - ]); - - // Shrink so that the TAs with offset go out of bounds. - rab.resize(1 * ctor.BYTES_PER_ELEMENT); - if (oobThrows) { - assert.throws(TypeError, () => helper(fixedLength, 9)); - assert.throws(TypeError, () => helper(fixedLengthWithOffset, 10)); - assert.throws(TypeError, () => helper(lengthTrackingWithOffset, 11)); - } else { - // We'll check below that these were no-op. - helper(fixedLength, 9); - helper(fixedLengthWithOffset, 10); - helper(lengthTrackingWithOffset, 11); - } - assert.compareArray(ReadDataFromBuffer(rab, ctor), [7]); - helper(lengthTracking, 12); - assert.compareArray(ReadDataFromBuffer(rab, ctor), [12]); - - // Grow so that all TAs are back in-bounds. - rab.resize(6 * ctor.BYTES_PER_ELEMENT); - helper(fixedLength, 13); - assert.compareArray(ReadDataFromBuffer(rab, ctor), [ - 13, - 13, - 13, - 13, - 0, - 0 - ]); - helper(fixedLengthWithOffset, 14); - assert.compareArray(ReadDataFromBuffer(rab, ctor), [ - 13, - 13, - 14, - 14, - 0, - 0 - ]); - helper(lengthTracking, 15); - assert.compareArray(ReadDataFromBuffer(rab, ctor), [ - 15, - 15, - 15, - 15, - 15, - 15 - ]); - helper(lengthTrackingWithOffset, 16); - assert.compareArray(ReadDataFromBuffer(rab, ctor), [ - 15, - 15, - 16, - 16, - 16, - 16 - ]); - - // Filling with non-undefined start & end. - helper(fixedLength, 17, 1, 3); - assert.compareArray(ReadDataFromBuffer(rab, ctor), [ - 15, - 17, - 17, - 16, - 16, - 16 - ]); - helper(fixedLengthWithOffset, 18, 1, 2); - assert.compareArray(ReadDataFromBuffer(rab, ctor), [ - 15, - 17, - 17, - 18, - 16, - 16 - ]); - helper(lengthTracking, 19, 1, 3); - assert.compareArray(ReadDataFromBuffer(rab, ctor), [ - 15, - 19, - 19, - 18, - 16, - 16 - ]); - helper(lengthTrackingWithOffset, 20, 1, 2); - assert.compareArray(ReadDataFromBuffer(rab, ctor), [ - 15, - 19, - 19, - 20, - 16, - 16 - ]); - } -} - -TestFill(TypedArrayFillHelper, true); -TestFill(ArrayFillHelper, false); diff --git a/test/staging/ArrayBuffer/resizable/test-map.js b/test/staging/ArrayBuffer/resizable/test-map.js deleted file mode 100644 index d0cd961c31a..00000000000 --- a/test/staging/ArrayBuffer/resizable/test-map.js +++ /dev/null @@ -1,243 +0,0 @@ -// Copyright 2021 the V8 project authors. All rights reserved. -// This code is governed by the BSD license found in the LICENSE file. - -/*--- -esid: sec-arraybuffer-length -description: > - Automatically ported from TestMap test - in V8's mjsunit test typedarray-resizablearraybuffer.js -includes: [compareArray.js] -features: [resizable-arraybuffer] -flags: [onlyStrict] ----*/ - -class MyUint8Array extends Uint8Array { -} - -class MyFloat32Array extends Float32Array { -} - -class MyBigInt64Array extends BigInt64Array { -} - -const builtinCtors = [ - Uint8Array, - Int8Array, - Uint16Array, - Int16Array, - Uint32Array, - Int32Array, - Float32Array, - Float64Array, - Uint8ClampedArray, - BigUint64Array, - BigInt64Array -]; - -const ctors = [ - ...builtinCtors, - MyUint8Array, - MyFloat32Array, - MyBigInt64Array -]; - -function CreateResizableArrayBuffer(byteLength, maxByteLength) { - return new ArrayBuffer(byteLength, { maxByteLength: maxByteLength }); -} - -function WriteToTypedArray(array, index, value) { - if (array instanceof BigInt64Array || array instanceof BigUint64Array) { - array[index] = BigInt(value); - } else { - array[index] = value; - } -} - -function Convert(item) { - if (typeof item == 'bigint') { - return Number(item); - } - return item; -} - -function ToNumbers(array) { - let result = []; - for (let item of array) { - result.push(Convert(item)); - } - return result; -} - -const TypedArrayMapHelper = (ta, ...rest) => { - return ta.map(...rest); -}; - -const ArrayMapHelper = (ta, ...rest) => { - return Array.prototype.map.call(ta, ...rest); -}; - -function TestMap(mapHelper, oobThrows) { - for (let ctor of ctors) { - const rab = CreateResizableArrayBuffer(4 * ctor.BYTES_PER_ELEMENT, 8 * ctor.BYTES_PER_ELEMENT); - const fixedLength = new ctor(rab, 0, 4); - const fixedLengthWithOffset = new ctor(rab, 2 * ctor.BYTES_PER_ELEMENT, 2); - const lengthTracking = new ctor(rab, 0); - const lengthTrackingWithOffset = new ctor(rab, 2 * ctor.BYTES_PER_ELEMENT); - - // Write some data into the array. - const taWrite = new ctor(rab); - for (let i = 0; i < taWrite.length; ++i) { - WriteToTypedArray(taWrite, i, 2 * i); - } - - // Orig. array: [0, 2, 4, 6] - // [0, 2, 4, 6] << fixedLength - // [4, 6] << fixedLengthWithOffset - // [0, 2, 4, 6, ...] << lengthTracking - // [4, 6, ...] << lengthTrackingWithOffset - - function Helper(array) { - const values = []; - function GatherValues(n, ix) { - assert.sameValue(ix, values.length); - values.push(n); - if (typeof n == 'bigint') { - return n + 1n; - } - return n + 1; - } - const newValues = mapHelper(array, GatherValues); - for (let i = 0; i < values.length; ++i) { - if (typeof values[i] == 'bigint') { - assert.sameValue(values[i] + 1n, newValues[i]); - } else { - assert.sameValue(values[i] + 1, newValues[i]); - } - } - return ToNumbers(values); - } - assert.compareArray(Helper(fixedLength), [ - 0, - 2, - 4, - 6 - ]); - assert.compareArray(Helper(fixedLengthWithOffset), [ - 4, - 6 - ]); - assert.compareArray(Helper(lengthTracking), [ - 0, - 2, - 4, - 6 - ]); - assert.compareArray(Helper(lengthTrackingWithOffset), [ - 4, - 6 - ]); - - // Shrink so that fixed length TAs go out of bounds. - rab.resize(3 * ctor.BYTES_PER_ELEMENT); - - // Orig. array: [0, 2, 4] - // [0, 2, 4, ...] << lengthTracking - // [4, ...] << lengthTrackingWithOffset - - if (oobThrows) { - assert.throws(TypeError, () => { - Helper(fixedLength); - }); - assert.throws(TypeError, () => { - Helper(fixedLengthWithOffset); - }); - } else { - assert.compareArray(Helper(fixedLength), []); - assert.compareArray(Helper(fixedLengthWithOffset), []); - } - assert.compareArray(Helper(lengthTracking), [ - 0, - 2, - 4 - ]); - assert.compareArray(Helper(lengthTrackingWithOffset), [4]); - - // Shrink so that the TAs with offset go out of bounds. - rab.resize(1 * ctor.BYTES_PER_ELEMENT); - if (oobThrows) { - assert.throws(TypeError, () => { - Helper(fixedLength); - }); - assert.throws(TypeError, () => { - Helper(fixedLengthWithOffset); - }); - assert.throws(TypeError, () => { - Helper(lengthTrackingWithOffset); - }); - } else { - assert.compareArray(Helper(fixedLength), []); - assert.compareArray(Helper(fixedLengthWithOffset), []); - assert.compareArray(Helper(lengthTrackingWithOffset), []); - } - assert.compareArray(Helper(lengthTracking), [0]); - - // Shrink to zero. - rab.resize(0); - if (oobThrows) { - assert.throws(TypeError, () => { - Helper(fixedLength); - }); - assert.throws(TypeError, () => { - Helper(fixedLengthWithOffset); - }); - assert.throws(TypeError, () => { - Helper(lengthTrackingWithOffset); - }); - } else { - assert.compareArray(Helper(fixedLength), []); - assert.compareArray(Helper(fixedLengthWithOffset), []); - assert.compareArray(Helper(lengthTrackingWithOffset), []); - } - assert.compareArray(Helper(lengthTracking), []); - - // Grow so that all TAs are back in-bounds. - rab.resize(6 * ctor.BYTES_PER_ELEMENT); - for (let i = 0; i < 6; ++i) { - WriteToTypedArray(taWrite, i, 2 * i); - } - - // Orig. array: [0, 2, 4, 6, 8, 10] - // [0, 2, 4, 6] << fixedLength - // [4, 6] << fixedLengthWithOffset - // [0, 2, 4, 6, 8, 10, ...] << lengthTracking - // [4, 6, 8, 10, ...] << lengthTrackingWithOffset - - assert.compareArray(Helper(fixedLength), [ - 0, - 2, - 4, - 6 - ]); - assert.compareArray(Helper(fixedLengthWithOffset), [ - 4, - 6 - ]); - assert.compareArray(Helper(lengthTracking), [ - 0, - 2, - 4, - 6, - 8, - 10 - ]); - assert.compareArray(Helper(lengthTrackingWithOffset), [ - 4, - 6, - 8, - 10 - ]); - } -} - -TestMap(TypedArrayMapHelper, true); -TestMap(ArrayMapHelper, false); diff --git a/test/staging/ArrayBuffer/resizable/to-locale-string-number-prototype-to-locale-string-grows.js b/test/staging/ArrayBuffer/resizable/to-locale-string-number-prototype-to-locale-string-grows.js deleted file mode 100644 index 2b376ddc888..00000000000 --- a/test/staging/ArrayBuffer/resizable/to-locale-string-number-prototype-to-locale-string-grows.js +++ /dev/null @@ -1,112 +0,0 @@ -// Copyright 2021 the V8 project authors. All rights reserved. -// This code is governed by the BSD license found in the LICENSE file. - -/*--- -esid: sec-arraybuffer-length -description: > - Automatically ported from ToLocaleStringNumberPrototypeToLocaleStringGrows test - in V8's mjsunit test typedarray-resizablearraybuffer.js -features: [resizable-arraybuffer] -flags: [onlyStrict] ----*/ - -class MyUint8Array extends Uint8Array { -} - -class MyFloat32Array extends Float32Array { -} - -class MyBigInt64Array extends BigInt64Array { -} - -const builtinCtors = [ - Uint8Array, - Int8Array, - Uint16Array, - Int16Array, - Uint32Array, - Int32Array, - Float32Array, - Float64Array, - Uint8ClampedArray, - BigUint64Array, - BigInt64Array -]; - -const ctors = [ - ...builtinCtors, - MyUint8Array, - MyFloat32Array, - MyBigInt64Array -]; - -function CreateResizableArrayBuffer(byteLength, maxByteLength) { - return new ArrayBuffer(byteLength, { maxByteLength: maxByteLength }); -} - -const TypedArrayToLocaleStringHelper = (ta, ...rest) => { - return ta.toLocaleString(...rest); -}; - -const ArrayToLocaleStringHelper = (ta, ...rest) => { - return Array.prototype.toLocaleString.call(ta, ...rest); -}; - -function ToLocaleStringNumberPrototypeToLocaleStringGrows(toLocaleStringHelper) { - const oldNumberPrototypeToLocaleString = Number.prototype.toLocaleString; - const oldBigIntPrototypeToLocaleString = BigInt.prototype.toLocaleString; - - // Growing + fixed-length TA. - for (let ctor of ctors) { - const rab = CreateResizableArrayBuffer(4 * ctor.BYTES_PER_ELEMENT, 8 * ctor.BYTES_PER_ELEMENT); - const fixedLength = new ctor(rab, 0, 4); - let resizeAfter = 2; - Number.prototype.toLocaleString = function () { - --resizeAfter; - if (resizeAfter == 0) { - rab.resize(6 * ctor.BYTES_PER_ELEMENT); - } - return oldNumberPrototypeToLocaleString.call(this); - }; - BigInt.prototype.toLocaleString = function () { - --resizeAfter; - if (resizeAfter == 0) { - rab.resize(6 * ctor.BYTES_PER_ELEMENT); - } - return oldBigIntPrototypeToLocaleString.call(this); - }; - - // We iterate 4 elements since it was the starting length. Resizing doesn't - // affect the TA. - assert.sameValue(toLocaleStringHelper(fixedLength), '0,0,0,0'); - } - - // Growing + length-tracking TA. - for (let ctor of ctors) { - const rab = CreateResizableArrayBuffer(4 * ctor.BYTES_PER_ELEMENT, 8 * ctor.BYTES_PER_ELEMENT); - const lengthTracking = new ctor(rab); - let resizeAfter = 2; - Number.prototype.toLocaleString = function () { - --resizeAfter; - if (resizeAfter == 0) { - rab.resize(6 * ctor.BYTES_PER_ELEMENT); - } - return oldNumberPrototypeToLocaleString.call(this); - }; - BigInt.prototype.toLocaleString = function () { - --resizeAfter; - if (resizeAfter == 0) { - rab.resize(6 * ctor.BYTES_PER_ELEMENT); - } - return oldBigIntPrototypeToLocaleString.call(this); - }; - - // We iterate 4 elements since it was the starting length. - assert.sameValue(toLocaleStringHelper(lengthTracking), '0,0,0,0'); - } - Number.prototype.toLocaleString = oldNumberPrototypeToLocaleString; - BigInt.prototype.toLocaleString = oldBigIntPrototypeToLocaleString; -} - -ToLocaleStringNumberPrototypeToLocaleStringGrows(TypedArrayToLocaleStringHelper); -ToLocaleStringNumberPrototypeToLocaleStringGrows(ArrayToLocaleStringHelper); diff --git a/test/staging/ArrayBuffer/resizable/to-locale-string-number-prototype-to-locale-string-shrinks.js b/test/staging/ArrayBuffer/resizable/to-locale-string-number-prototype-to-locale-string-shrinks.js deleted file mode 100644 index 54ee0fff209..00000000000 --- a/test/staging/ArrayBuffer/resizable/to-locale-string-number-prototype-to-locale-string-shrinks.js +++ /dev/null @@ -1,113 +0,0 @@ -// Copyright 2021 the V8 project authors. All rights reserved. -// This code is governed by the BSD license found in the LICENSE file. - -/*--- -esid: sec-arraybuffer-length -description: > - Automatically ported from ToLocaleStringNumberPrototypeToLocaleStringShrinks test - in V8's mjsunit test typedarray-resizablearraybuffer.js -features: [resizable-arraybuffer] -flags: [onlyStrict] ----*/ - -class MyUint8Array extends Uint8Array { -} - -class MyFloat32Array extends Float32Array { -} - -class MyBigInt64Array extends BigInt64Array { -} - -const builtinCtors = [ - Uint8Array, - Int8Array, - Uint16Array, - Int16Array, - Uint32Array, - Int32Array, - Float32Array, - Float64Array, - Uint8ClampedArray, - BigUint64Array, - BigInt64Array -]; - -const ctors = [ - ...builtinCtors, - MyUint8Array, - MyFloat32Array, - MyBigInt64Array -]; - -function CreateResizableArrayBuffer(byteLength, maxByteLength) { - return new ArrayBuffer(byteLength, { maxByteLength: maxByteLength }); -} - -const TypedArrayToLocaleStringHelper = (ta, ...rest) => { - return ta.toLocaleString(...rest); -}; - -const ArrayToLocaleStringHelper = (ta, ...rest) => { - return Array.prototype.toLocaleString.call(ta, ...rest); -}; - -function ToLocaleStringNumberPrototypeToLocaleStringShrinks(toLocaleStringHelper) { - const oldNumberPrototypeToLocaleString = Number.prototype.toLocaleString; - const oldBigIntPrototypeToLocaleString = BigInt.prototype.toLocaleString; - - // Shrinking + fixed-length TA. - for (let ctor of ctors) { - const rab = CreateResizableArrayBuffer(4 * ctor.BYTES_PER_ELEMENT, 8 * ctor.BYTES_PER_ELEMENT); - const fixedLength = new ctor(rab, 0, 4); - let resizeAfter = 2; - Number.prototype.toLocaleString = function () { - --resizeAfter; - if (resizeAfter == 0) { - rab.resize(2 * ctor.BYTES_PER_ELEMENT); - } - return oldNumberPrototypeToLocaleString.call(this); - }; - BigInt.prototype.toLocaleString = function () { - --resizeAfter; - if (resizeAfter == 0) { - rab.resize(2 * ctor.BYTES_PER_ELEMENT); - } - return oldBigIntPrototypeToLocaleString.call(this); - }; - - // We iterate 4 elements, since it was the starting length. The TA goes - // OOB after 2 elements. - assert.sameValue(toLocaleStringHelper(fixedLength), '0,0,,'); - } - - // Shrinking + length-tracking TA. - for (let ctor of ctors) { - const rab = CreateResizableArrayBuffer(4 * ctor.BYTES_PER_ELEMENT, 8 * ctor.BYTES_PER_ELEMENT); - const lengthTracking = new ctor(rab); - let resizeAfter = 2; - Number.prototype.toLocaleString = function () { - --resizeAfter; - if (resizeAfter == 0) { - rab.resize(2 * ctor.BYTES_PER_ELEMENT); - } - return oldNumberPrototypeToLocaleString.call(this); - }; - BigInt.prototype.toLocaleString = function () { - --resizeAfter; - if (resizeAfter == 0) { - rab.resize(2 * ctor.BYTES_PER_ELEMENT); - } - return oldBigIntPrototypeToLocaleString.call(this); - }; - - // We iterate 4 elements, since it was the starting length. Elements beyond - // the new length are converted to the empty string. - assert.sameValue(toLocaleStringHelper(lengthTracking), '0,0,,'); - } - Number.prototype.toLocaleString = oldNumberPrototypeToLocaleString; - BigInt.prototype.toLocaleString = oldBigIntPrototypeToLocaleString; -} - -ToLocaleStringNumberPrototypeToLocaleStringShrinks(TypedArrayToLocaleStringHelper); -ToLocaleStringNumberPrototypeToLocaleStringShrinks(ArrayToLocaleStringHelper); diff --git a/test/staging/ArrayBuffer/resizable/typed-array-length-and-byte-length.js b/test/staging/ArrayBuffer/resizable/typed-array-length-and-byte-length.js deleted file mode 100644 index 35a0f8485f9..00000000000 --- a/test/staging/ArrayBuffer/resizable/typed-array-length-and-byte-length.js +++ /dev/null @@ -1,79 +0,0 @@ -// Copyright 2021 the V8 project authors. All rights reserved. -// This code is governed by the BSD license found in the LICENSE file. - -/*--- -esid: sec-arraybuffer-length -description: > - Automatically ported from TypedArrayLengthAndByteLength test - in V8's mjsunit test typedarray-resizablearraybuffer.js -includes: [compareArray.js] -features: [resizable-arraybuffer] -flags: [onlyStrict] ----*/ - -class MyUint8Array extends Uint8Array { -} - -class MyFloat32Array extends Float32Array { -} - -class MyBigInt64Array extends BigInt64Array { -} - -const builtinCtors = [ - Uint8Array, - Int8Array, - Uint16Array, - Int16Array, - Uint32Array, - Int32Array, - Float32Array, - Float64Array, - Uint8ClampedArray, - BigUint64Array, - BigInt64Array -]; - -const ctors = [ - ...builtinCtors, - MyUint8Array, - MyFloat32Array, - MyBigInt64Array -]; - -function CreateResizableArrayBuffer(byteLength, maxByteLength) { - return new ArrayBuffer(byteLength, { maxByteLength: maxByteLength }); -} - -const rab = CreateResizableArrayBuffer(40, 80); -for (let ctor of ctors) { - const ta = new ctor(rab, 0, 3); - assert.compareArray(ta.buffer, rab); - assert.sameValue(ta.length, 3); - assert.sameValue(ta.byteLength, 3 * ctor.BYTES_PER_ELEMENT); - const empty_ta = new ctor(rab, 0, 0); - assert.compareArray(empty_ta.buffer, rab); - assert.sameValue(empty_ta.length, 0); - assert.sameValue(empty_ta.byteLength, 0); - const ta_with_offset = new ctor(rab, 2 * ctor.BYTES_PER_ELEMENT, 3); - assert.compareArray(ta_with_offset.buffer, rab); - assert.sameValue(ta_with_offset.length, 3); - assert.sameValue(ta_with_offset.byteLength, 3 * ctor.BYTES_PER_ELEMENT); - const empty_ta_with_offset = new ctor(rab, 2 * ctor.BYTES_PER_ELEMENT, 0); - assert.compareArray(empty_ta_with_offset.buffer, rab); - assert.sameValue(empty_ta_with_offset.length, 0); - assert.sameValue(empty_ta_with_offset.byteLength, 0); - const length_tracking_ta = new ctor(rab); - assert.compareArray(length_tracking_ta.buffer, rab); - assert.sameValue(length_tracking_ta.length, 40 / ctor.BYTES_PER_ELEMENT); - assert.sameValue(length_tracking_ta.byteLength, 40); - const offset = 8; - const length_tracking_ta_with_offset = new ctor(rab, offset); - assert.compareArray(length_tracking_ta_with_offset.buffer, rab); - assert.sameValue(length_tracking_ta_with_offset.length, (40 - offset) / ctor.BYTES_PER_ELEMENT); - assert.sameValue(length_tracking_ta_with_offset.byteLength, 40 - offset); - const empty_length_tracking_ta_with_offset = new ctor(rab, 40); - assert.compareArray(empty_length_tracking_ta_with_offset.buffer, rab); - assert.sameValue(empty_length_tracking_ta_with_offset.length, 0); - assert.sameValue(empty_length_tracking_ta_with_offset.byteLength, 0); -} diff --git a/test/staging/ArrayBuffer/resizable/typed-array-length-when-resized-out-of-bounds-1.js b/test/staging/ArrayBuffer/resizable/typed-array-length-when-resized-out-of-bounds-1.js deleted file mode 100644 index 1207cfe13c6..00000000000 --- a/test/staging/ArrayBuffer/resizable/typed-array-length-when-resized-out-of-bounds-1.js +++ /dev/null @@ -1,77 +0,0 @@ -// Copyright 2021 the V8 project authors. All rights reserved. -// This code is governed by the BSD license found in the LICENSE file. - -/*--- -esid: sec-arraybuffer-length -description: > - Automatically ported from TypedArrayLengthWhenResizedOutOfBounds1 test - in V8's mjsunit test typedarray-resizablearraybuffer.js -features: [resizable-arraybuffer] -flags: [onlyStrict] ----*/ - -class MyUint8Array extends Uint8Array { -} - -class MyFloat32Array extends Float32Array { -} - -class MyBigInt64Array extends BigInt64Array { -} - -const builtinCtors = [ - Uint8Array, - Int8Array, - Uint16Array, - Int16Array, - Uint32Array, - Int32Array, - Float32Array, - Float64Array, - Uint8ClampedArray, - BigUint64Array, - BigInt64Array -]; - -const ctors = [ - ...builtinCtors, - MyUint8Array, - MyFloat32Array, - MyBigInt64Array -]; - -function CreateResizableArrayBuffer(byteLength, maxByteLength) { - return new ArrayBuffer(byteLength, { maxByteLength: maxByteLength }); -} - -const rab = CreateResizableArrayBuffer(16, 40); - -// Create TAs which cover the bytes 0-7. -let tas_and_lengths = []; -for (let ctor of ctors) { - const length = 8 / ctor.BYTES_PER_ELEMENT; - tas_and_lengths.push([ - new ctor(rab, 0, length), - length - ]); -} -for (let [ta, length] of tas_and_lengths) { - assert.sameValue(ta.length, length); - assert.sameValue(ta.byteLength, length * ta.BYTES_PER_ELEMENT); -} -rab.resize(2); -for (let [ta, length] of tas_and_lengths) { - assert.sameValue(ta.length, 0); - assert.sameValue(ta.byteLength, 0); -} -// Resize the rab so that it just barely covers the needed 8 bytes. -rab.resize(8); -for (let [ta, length] of tas_and_lengths) { - assert.sameValue(ta.length, length); - assert.sameValue(ta.byteLength, length * ta.BYTES_PER_ELEMENT); -} -rab.resize(40); -for (let [ta, length] of tas_and_lengths) { - assert.sameValue(ta.length, length); - assert.sameValue(ta.byteLength, length * ta.BYTES_PER_ELEMENT); -} diff --git a/test/staging/ArrayBuffer/resizable/typed-array-length-when-resized-out-of-bounds-2.js b/test/staging/ArrayBuffer/resizable/typed-array-length-when-resized-out-of-bounds-2.js deleted file mode 100644 index a75d799f990..00000000000 --- a/test/staging/ArrayBuffer/resizable/typed-array-length-when-resized-out-of-bounds-2.js +++ /dev/null @@ -1,83 +0,0 @@ -// Copyright 2021 the V8 project authors. All rights reserved. -// This code is governed by the BSD license found in the LICENSE file. - -/*--- -esid: sec-arraybuffer-length -description: > - Automatically ported from TypedArrayLengthWhenResizedOutOfBounds2 test - in V8's mjsunit test typedarray-resizablearraybuffer.js -features: [resizable-arraybuffer] -flags: [onlyStrict] ----*/ - -// typed-array-length-when-resized-out-of-bounds-1 but with offsets. - -class MyUint8Array extends Uint8Array { -} - -class MyFloat32Array extends Float32Array { -} - -class MyBigInt64Array extends BigInt64Array { -} - -const builtinCtors = [ - Uint8Array, - Int8Array, - Uint16Array, - Int16Array, - Uint32Array, - Int32Array, - Float32Array, - Float64Array, - Uint8ClampedArray, - BigUint64Array, - BigInt64Array -]; - -const ctors = [ - ...builtinCtors, - MyUint8Array, - MyFloat32Array, - MyBigInt64Array -]; - -function CreateResizableArrayBuffer(byteLength, maxByteLength) { - return new ArrayBuffer(byteLength, { maxByteLength: maxByteLength }); -} - -const rab = CreateResizableArrayBuffer(20, 40); - -// Create TAs which cover the bytes 8-15. -let tas_and_lengths = []; -for (let ctor of ctors) { - const length = 8 / ctor.BYTES_PER_ELEMENT; - tas_and_lengths.push([ - new ctor(rab, 8, length), - length - ]); -} -for (let [ta, length] of tas_and_lengths) { - assert.sameValue(ta.length, length); - assert.sameValue(ta.byteLength, length * ta.BYTES_PER_ELEMENT); - assert.sameValue(ta.byteOffset, 8); -} -rab.resize(10); -for (let [ta, length] of tas_and_lengths) { - assert.sameValue(ta.length, 0); - assert.sameValue(ta.byteLength, 0); - assert.sameValue(ta.byteOffset, 0); -} -// Resize the rab so that it just barely covers the needed 8 bytes. -rab.resize(16); -for (let [ta, length] of tas_and_lengths) { - assert.sameValue(ta.length, length); - assert.sameValue(ta.byteLength, length * ta.BYTES_PER_ELEMENT); - assert.sameValue(ta.byteOffset, 8); -} -rab.resize(40); -for (let [ta, length] of tas_and_lengths) { - assert.sameValue(ta.length, length); - assert.sameValue(ta.byteLength, length * ta.BYTES_PER_ELEMENT); - assert.sameValue(ta.byteOffset, 8); -} diff --git a/test/staging/ArrayBuffer/resizable/typed-array-prototype.js b/test/staging/ArrayBuffer/resizable/typed-array-prototype.js deleted file mode 100644 index 504c5aeb424..00000000000 --- a/test/staging/ArrayBuffer/resizable/typed-array-prototype.js +++ /dev/null @@ -1,53 +0,0 @@ -// Copyright 2021 the V8 project authors. All rights reserved. -// This code is governed by the BSD license found in the LICENSE file. - -/*--- -esid: sec-arraybuffer-length -description: > - Automatically ported from TypedArrayPrototype test - in V8's mjsunit test typedarray-resizablearraybuffer.js -features: [resizable-arraybuffer] -flags: [onlyStrict] ----*/ - -class MyUint8Array extends Uint8Array { -} - -class MyFloat32Array extends Float32Array { -} - -class MyBigInt64Array extends BigInt64Array { -} - -const builtinCtors = [ - Uint8Array, - Int8Array, - Uint16Array, - Int16Array, - Uint32Array, - Int32Array, - Float32Array, - Float64Array, - Uint8ClampedArray, - BigUint64Array, - BigInt64Array -]; - -const ctors = [ - ...builtinCtors, - MyUint8Array, - MyFloat32Array, - MyBigInt64Array -]; - -function CreateResizableArrayBuffer(byteLength, maxByteLength) { - return new ArrayBuffer(byteLength, { maxByteLength: maxByteLength }); -} - -const rab = CreateResizableArrayBuffer(40, 80); -const ab = new ArrayBuffer(80); -for (let ctor of ctors) { - const ta_rab = new ctor(rab, 0, 3); - const ta_ab = new ctor(ab, 0, 3); - assert.sameValue(ta_ab.__proto__, ta_rab.__proto__); -} diff --git a/test/staging/Intl402/Temporal/old/japanese-before-era.js b/test/staging/Intl402/Temporal/old/japanese-before-era.js index c0bf973fc18..97aa7f874b9 100644 --- a/test/staging/Intl402/Temporal/old/japanese-before-era.js +++ b/test/staging/Intl402/Temporal/old/japanese-before-era.js @@ -59,5 +59,5 @@ date = Temporal.PlainDate.from({ calendar: "japanese" }); assert.sameValue(`${ date }`, "1868-01-01[u-ca=japanese]"); -assert.sameValue(date.era, "ce"); +assert.sameValue(date.era, "japanese"); assert.sameValue(date.eraYear, 1868); diff --git a/test/staging/explicit-resource-management/async-disposable-stack-adopt-and-defer-not-callable.js b/test/staging/explicit-resource-management/async-disposable-stack-adopt-and-defer-not-callable.js new file mode 100644 index 00000000000..e1050cad167 --- /dev/null +++ b/test/staging/explicit-resource-management/async-disposable-stack-adopt-and-defer-not-callable.js @@ -0,0 +1,26 @@ +// Copyright (C) 2024 the V8 project authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +description: | + Test developer exposed DisposableStack protype methods adopt() and defer(). +features: [explicit-resource-management] +---*/ + +// adopt() method when onDispose is not callable-------- +function TestAsyncDisposableStackAdoptWithNonCallableOnDispose() { + let stack = new AsyncDisposableStack(); + stack.adopt(42, 43); +}; +assert.throws( + TypeError, () => TestAsyncDisposableStackAdoptWithNonCallableOnDispose(), + 'onDispose is not callable'); + +// defer() method when onDispose is not callable-------- +function TestAsyncDisposableStackDeferWithNonCallableOnDispose() { + let stack = new AsyncDisposableStack(); + stack.defer(42); +}; +assert.throws( + TypeError, () => TestAsyncDisposableStackDeferWithNonCallableOnDispose(), + 'onDispose is not callable'); diff --git a/test/staging/explicit-resource-management/async-disposable-stack-adopt-on-disposed-stack.js b/test/staging/explicit-resource-management/async-disposable-stack-adopt-on-disposed-stack.js new file mode 100644 index 00000000000..31c07ba0ef9 --- /dev/null +++ b/test/staging/explicit-resource-management/async-disposable-stack-adopt-on-disposed-stack.js @@ -0,0 +1,22 @@ +// Copyright (C) 2024 the V8 project authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +description: Test adopt() on a disposed stack. +includes: [asyncHelpers.js] +flags: [async] +features: [explicit-resource-management] +---*/ + +asyncTest(async function() { + async function TestAsyncDisposableStackAdoptOnDisposedStack() { + let stack = new AsyncDisposableStack(); + await stack.disposeAsync(); + stack.adopt(42, function(v) { + return v + }); + }; + await assert.throwsAsync( + ReferenceError, () => TestAsyncDisposableStackAdoptOnDisposedStack(), + 'Cannot add values to a disposed stack!'); +}); diff --git a/test/staging/explicit-resource-management/async-disposable-stack-adopt.js b/test/staging/explicit-resource-management/async-disposable-stack-adopt.js new file mode 100644 index 00000000000..2844a4eb5f0 --- /dev/null +++ b/test/staging/explicit-resource-management/async-disposable-stack-adopt.js @@ -0,0 +1,35 @@ +// Copyright (C) 2024 the V8 project authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +description: | + Test developer exposed AsyncDisposableStack protype methods adopt(). +includes: [asyncHelpers.js, compareArray.js] +flags: [async] +features: [explicit-resource-management] +---*/ + +asyncTest(async function() { + let valuesNormal = []; + + async function TestAsyncDisposableStackAdopt() { + let stack = new AsyncDisposableStack(); + stack.adopt(42, function(v) { + valuesNormal.push(v) + }); + const disposable = { + value: 1, + [Symbol.asyncDispose]() { + valuesNormal.push(43); + } + }; + stack.use(disposable); + stack.adopt(44, function(v) { + valuesNormal.push(v) + }); + await stack.disposeAsync(); + }; + + await TestAsyncDisposableStackAdopt(); + assert.compareArray(valuesNormal, [44, 43, 42]); +}); diff --git a/test/staging/explicit-resource-management/async-disposable-stack-async-dispose-symbol-throws.js b/test/staging/explicit-resource-management/async-disposable-stack-async-dispose-symbol-throws.js new file mode 100644 index 00000000000..432c384dc06 --- /dev/null +++ b/test/staging/explicit-resource-management/async-disposable-stack-async-dispose-symbol-throws.js @@ -0,0 +1,29 @@ +// Copyright (C) 2024 the V8 project authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +description: | + Exposed AsyncDisposableStack protype methods disposeAsync() throws. +includes: [asyncHelpers.js] +flags: [async] +features: [explicit-resource-management] +---*/ + +asyncTest(async function() { + async function TestAsyncDisposableStackUseDisposeMethodThrows() { + { + let stack = new AsyncDisposableStack(); + const disposable = { + value: 1, + [Symbol.asyncDispose]() { + throw new Test262Error('Symbol.asyncDispose is throwing!'); + } + }; + stack.use(disposable); + await stack.disposeAsync(); + } + }; + await assert.throwsAsync( + Test262Error, () => TestAsyncDisposableStackUseDisposeMethodThrows(), + 'Symbol.asyncDisposeispose is throwing!'); +}); diff --git a/test/staging/explicit-resource-management/async-disposable-stack-constructor-and-prototype.js b/test/staging/explicit-resource-management/async-disposable-stack-constructor-and-prototype.js new file mode 100644 index 00000000000..82869db064d --- /dev/null +++ b/test/staging/explicit-resource-management/async-disposable-stack-constructor-and-prototype.js @@ -0,0 +1,21 @@ +// Copyright (C) 2024 the V8 project authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +description: Test AsyncDisposableStack constructor and prototype. +includes: [propertyHelper.js] +features: [globalThis, explicit-resource-management] +---*/ + +// constructor -------- +assert.sameValue( + typeof AsyncDisposableStack, 'function', + 'The value of `typeof AsyncDisposableStack` is "function"'); + +// prototype -------- +verifyProperty(AsyncDisposableStack, 'prototype', { + value: AsyncDisposableStack.prototype, + writable: false, + enumerable: false, + configurable: false, +}); diff --git a/test/staging/explicit-resource-management/async-disposable-stack-defer-on-disposed-stack.js b/test/staging/explicit-resource-management/async-disposable-stack-defer-on-disposed-stack.js new file mode 100644 index 00000000000..ecf337dc315 --- /dev/null +++ b/test/staging/explicit-resource-management/async-disposable-stack-defer-on-disposed-stack.js @@ -0,0 +1,21 @@ +// Copyright (C) 2024 the V8 project authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +description: Test defer() on disposed stack. +includes: [asyncHelpers.js] +flags: [async] +features: [explicit-resource-management] +---*/ + +asyncTest(async function() { + async function TestAsyncDisposableStackDeferOnDisposedStack() { + let stack = new AsyncDisposableStack(); + await stack.disposeAsync(); + stack.defer(() => {}); + }; + + await assert.throwsAsync( + ReferenceError, () => TestAsyncDisposableStackDeferOnDisposedStack(), + 'Cannot add values to a disposed stack!'); +}); diff --git a/test/staging/explicit-resource-management/async-disposable-stack-defer.js b/test/staging/explicit-resource-management/async-disposable-stack-defer.js new file mode 100644 index 00000000000..6bda41081df --- /dev/null +++ b/test/staging/explicit-resource-management/async-disposable-stack-defer.js @@ -0,0 +1,31 @@ +// Copyright (C) 2024 the V8 project authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +description: | + Test developer exposed AsyncDisposableStack protype method defer(). +includes: [asyncHelpers.js, compareArray.js] +flags: [async] +features: [explicit-resource-management] +---*/ + +asyncTest(async function() { + let deferValuesNormal = []; + + async function TestAsyncDisposableStackDefer() { + let stack = new AsyncDisposableStack(); + stack.defer(() => deferValuesNormal.push(42)); + const disposable = { + value: 1, + [Symbol.asyncDispose]() { + deferValuesNormal.push(43); + } + }; + stack.use(disposable); + stack.defer(() => deferValuesNormal.push(44)); + await stack.disposeAsync(); + }; + + await TestAsyncDisposableStackDefer(); + assert.compareArray(deferValuesNormal, [44, 43, 42]); +}); diff --git a/test/staging/explicit-resource-management/async-disposable-stack-dispose-on-disposed-stack.js b/test/staging/explicit-resource-management/async-disposable-stack-dispose-on-disposed-stack.js new file mode 100644 index 00000000000..1286c4eefa5 --- /dev/null +++ b/test/staging/explicit-resource-management/async-disposable-stack-dispose-on-disposed-stack.js @@ -0,0 +1,41 @@ +// Copyright (C) 2024 the V8 project authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +description: | + Call disposeAsync() on a disposed AsyncDisposableStack. +includes: [asyncHelpers.js, compareArray.js] +flags: [async] +features: [explicit-resource-management] +---*/ + +asyncTest(async function() { + let valuesNormal = []; + + async function TestAsyncDisposableStackUseDisposingTwice() { + let stack = new AsyncDisposableStack(); + const firstDisposable = { + value: 1, + [Symbol.asyncDispose]() { + valuesNormal.push(42); + } + }; + const secondDisposable = { + value: 2, + [Symbol.asyncDispose]() { + valuesNormal.push(43); + } + }; + stack.use(firstDisposable); + stack.use(secondDisposable); + let newStack = stack.move(); + await newStack.disposeAsync(); + assert.sameValue(newStack.disposed, true, 'disposed should be true'); + // stack is already disposed, so the next line should do nothing. + await newStack.disposeAsync(); + }; + + await TestAsyncDisposableStackUseDisposingTwice(); + + assert.compareArray(valuesNormal, [43, 42]); +}); diff --git a/test/staging/explicit-resource-management/async-disposable-stack-dispose-sync-calls.js b/test/staging/explicit-resource-management/async-disposable-stack-dispose-sync-calls.js new file mode 100644 index 00000000000..9b2ea4c077b --- /dev/null +++ b/test/staging/explicit-resource-management/async-disposable-stack-dispose-sync-calls.js @@ -0,0 +1,39 @@ +// Copyright (C) 2024 the V8 project authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +description: | + Call disposeAsync() twice without await. +includes: [asyncHelpers.js, compareArray.js] +flags: [async] +features: [explicit-resource-management] +---*/ + +asyncTest(async function() { + let valuesNormal = []; + + async function TestAsyncDisposableStackUseDisposingTwiceWithoutAwait() { + let stack = new AsyncDisposableStack(); + const firstDisposable = { + value: 1, + [Symbol.asyncDispose]() { + valuesNormal.push(42); + } + }; + const secondDisposable = { + value: 2, + [Symbol.asyncDispose]() { + valuesNormal.push(43); + } + }; + stack.use(firstDisposable); + stack.use(secondDisposable); + stack.disposeAsync(); + assert.sameValue(stack.disposed, true, 'disposed should be true'); + stack.disposeAsync(); + }; + + await TestAsyncDisposableStackUseDisposingTwiceWithoutAwait(); + + assert.compareArray(valuesNormal, [43, 42]); +}); diff --git a/test/staging/explicit-resource-management/async-disposable-stack-dispose-throws-suppressed-error.js b/test/staging/explicit-resource-management/async-disposable-stack-dispose-throws-suppressed-error.js new file mode 100644 index 00000000000..f200ff319b5 --- /dev/null +++ b/test/staging/explicit-resource-management/async-disposable-stack-dispose-throws-suppressed-error.js @@ -0,0 +1,56 @@ +// Copyright (C) 2024 the V8 project authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +description: disposeAsync() throws a suppressed error. +includes: [asyncHelpers.js] +flags: [async] +features: [explicit-resource-management] +---*/ + +asyncTest(async function() { + let firstDisposeError = + new Test262Error('The first Symbol.asyncDispose is throwing!'); + let secondDisposeError = + new Test262Error('The second Symbol.asyncDispose is throwing!'); + + async function TestAsyncDisposableStackUseTwoDisposeMethodsThrow() { + { + let stack = new AsyncDisposableStack(); + const firstDisposable = { + value: 1, + [Symbol.asyncDispose]() { + throw firstDisposeError; + } + }; + const secondDisposable = { + value: 1, + [Symbol.asyncDispose]() { + throw secondDisposeError; + } + }; + stack.use(firstDisposable); + stack.use(secondDisposable); + await stack.disposeAsync(); + } + }; + + await assert.throwsAsync( + SuppressedError, + () => TestAsyncDisposableStackUseTwoDisposeMethodsThrow(), + 'An error was suppressed during disposal'); + + async function RunTestAsyncDisposableStackUseTwoDisposeMethodsThrow() { + try { + await TestAsyncDisposableStackUseTwoDisposeMethodsThrow(); + } catch (error) { + assert( + error instanceof SuppressedError, + 'error is an instanceof SuppressedError'); + assert.sameValue(error.error, firstDisposeError, 'error.error'); + assert.sameValue( + error.suppressed, secondDisposeError, 'error.suppressed'); + } + } + await RunTestAsyncDisposableStackUseTwoDisposeMethodsThrow(); +}); diff --git a/test/staging/explicit-resource-management/async-disposable-stack-dispose.js b/test/staging/explicit-resource-management/async-disposable-stack-dispose.js new file mode 100644 index 00000000000..28785011fc1 --- /dev/null +++ b/test/staging/explicit-resource-management/async-disposable-stack-dispose.js @@ -0,0 +1,29 @@ +// Copyright (C) 2024 the V8 project authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +description: | + Test developer exposed AsyncDisposableStack protype methods disposeAsync(). +includes: [asyncHelpers.js, compareArray.js] +flags: [async] +features: [explicit-resource-management] +---*/ + +asyncTest(async function() { + let valuesNormal = []; + + async function TestAsyncDisposableStackUse() { + let stack = new AsyncDisposableStack(); + const disposable = { + value: 1, + [Symbol.asyncDispose]() { + valuesNormal.push(42); + } + }; + stack.use(disposable); + await stack.disposeAsync(); + }; + + await TestAsyncDisposableStackUse(); + assert.compareArray(valuesNormal, [42]); +}); diff --git a/test/staging/explicit-resource-management/async-disposable-stack-disposed-getter.js b/test/staging/explicit-resource-management/async-disposable-stack-disposed-getter.js new file mode 100644 index 00000000000..f13a8821f0c --- /dev/null +++ b/test/staging/explicit-resource-management/async-disposable-stack-disposed-getter.js @@ -0,0 +1,41 @@ +// Copyright (C) 2024 the V8 project authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +description: Test `disposed` accessor property of AsyncDisposableStack. +includes: [asyncHelpers.js] +flags: [async] +features: [explicit-resource-management] +---*/ + +asyncTest(async function() { + // disposed should be true -------- + async function TestDisposableStackDisposedTrue() { + let stack = new AsyncDisposableStack(); + const disposable = { + value: 1, + [Symbol.asyncDispose]() { + return 42; + } + }; + stack.use(disposable); + stack.dispose(); + assert.sameValue(stack.disposed, true, 'disposed should be true'); + }; + + TestDisposableStackDisposedTrue(); + + // disposed should be false -------- + async function TestDisposableStackDisposedFalse() { + let stack = new AsyncDisposableStack(); + const disposable = { + value: 1, + [Symbol.asyncDispose]() { + return 42; + } + }; + stack.use(disposable); + assert.sameValue(stack.disposed, false, 'disposed should be false'); + }; + TestDisposableStackDisposedFalse(); +}); diff --git a/test/staging/explicit-resource-management/async-disposable-stack-move-on-disposed-stack.js b/test/staging/explicit-resource-management/async-disposable-stack-move-on-disposed-stack.js new file mode 100644 index 00000000000..8671ed72d6e --- /dev/null +++ b/test/staging/explicit-resource-management/async-disposable-stack-move-on-disposed-stack.js @@ -0,0 +1,22 @@ +// Copyright (C) 2024 the V8 project authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +description: Test move() on a disposed-stack. +includes: [asyncHelpers.js] +flags: [async] +features: [explicit-resource-management] +---*/ + +// move() method on disposed stack -------- +asyncTest(async function() { + async function TestAsyncDisposableStackMoveOnDisposedStack() { + let stack = new AsyncDisposableStack(); + await stack.disposeAsync(); + let newStack = stack.move(); + }; + + await assert.throwsAsync( + ReferenceError, () => TestAsyncDisposableStackMoveOnDisposedStack(), + 'Cannot move elements from a disposed stack!'); +}); diff --git a/test/staging/explicit-resource-management/async-disposable-stack-move.js b/test/staging/explicit-resource-management/async-disposable-stack-move.js new file mode 100644 index 00000000000..99ebad349c5 --- /dev/null +++ b/test/staging/explicit-resource-management/async-disposable-stack-move.js @@ -0,0 +1,28 @@ +// Copyright (C) 2024 the V8 project authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +description: Test developer exposed AsyncDisposableStack protype method move. +features: [explicit-resource-management] +---*/ + +// Two stacks should not be the same -------- +(function TestAsyncDisposableStackMoveNotSameObjects() { + let stack = new AsyncDisposableStack(); + const firstDisposable = { + value: 1, + [Symbol.asyncDispose]() { + return 42; + } + }; + const secondDisposable = { + value: 2, + [Symbol.asyncDispose]() { + return 43; + } + }; + stack.use(firstDisposable); + stack.use(secondDisposable); + let newStack = stack.move(); + assert.notSameValue(stack, newStack); +})(); diff --git a/test/staging/explicit-resource-management/async-disposable-stack-use-on-disposed-stack.js b/test/staging/explicit-resource-management/async-disposable-stack-use-on-disposed-stack.js new file mode 100644 index 00000000000..f2d8c3d2647 --- /dev/null +++ b/test/staging/explicit-resource-management/async-disposable-stack-use-on-disposed-stack.js @@ -0,0 +1,27 @@ +// Copyright (C) 2024 the V8 project authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +description: Test use() on a disposed stack. +includes: [asyncHelpers.js] +flags: [async] +features: [explicit-resource-management] +---*/ + +asyncTest(async function() { + async function TestAsyncDisposableStackUseOnDisposedStack() { + let stack = new AsyncDisposableStack(); + const disposable = { + value: 1, + [Symbol.asyncDispose]() { + return 42; + } + }; + await stack.disposeAsync(); + stack.use(disposable); + }; + + await assert.throwsAsync( + ReferenceError, () => TestAsyncDisposableStackUseOnDisposedStack(), + 'Cannot add values to a disposed stack!'); +}); diff --git a/test/staging/explicit-resource-management/async-disposable-stack-use.js b/test/staging/explicit-resource-management/async-disposable-stack-use.js new file mode 100644 index 00000000000..9b26884a961 --- /dev/null +++ b/test/staging/explicit-resource-management/async-disposable-stack-use.js @@ -0,0 +1,56 @@ +// Copyright (C) 2024 the V8 project authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +description: | + Test developer exposed AsyncDisposableStack protype methods use(). +features: [explicit-resource-management] +---*/ + +// use() method on a non object -------- +function TestAsyncDisposableStackUseWithNonObject() { + let stack = new AsyncDisposableStack(); + stack.use(42); +}; +assert.throws( + TypeError, () => TestAsyncDisposableStackUseWithNonObject(), + 'use() is called on non-object'); + +// use() method with null [symbol.asyncDispose] -------- +function TestAsyncDisposableStackUseWithNullDispose() { + let stack = new AsyncDisposableStack(); + const disposable = { + value: 1, + [Symbol.asyncDispose]: null, + }; + stack.use(disposable); +}; +assert.throws( + TypeError, () => TestAsyncDisposableStackUseWithNullDispose(), + 'symbol.asyncDispose is null'); + +// use() method with undefined [symbol.asyncDispose] -------- +function TestAsyncDisposableStackUseWithUndefinedDispose() { + let stack = new AsyncDisposableStack(); + const disposable = { + value: 1, + [Symbol.asyncDispose]: undefined, + }; + stack.use(disposable); +}; +assert.throws( + TypeError, () => TestAsyncDisposableStackUseWithUndefinedDispose(), + 'symbol.asyncDispose is undefined'); + +// use() method when [symbol.asyncDispose] is not callable-------- +function TestAsyncDisposableStackUseWithNonCallableDispose() { + let stack = new AsyncDisposableStack(); + const disposable = { + value: 1, + [Symbol.asyncDispose]: 42, + }; + stack.use(disposable); +}; +assert.throws( + TypeError, () => TestAsyncDisposableStackUseWithNonCallableDispose(), + 'symbol.asyncDispose is not callable'); diff --git a/test/staging/explicit-resource-management/await-using-dispose-method-throws-after-await.js b/test/staging/explicit-resource-management/await-using-dispose-method-throws-after-await.js new file mode 100644 index 00000000000..a01d587cbf9 --- /dev/null +++ b/test/staging/explicit-resource-management/await-using-dispose-method-throws-after-await.js @@ -0,0 +1,25 @@ +// Copyright (C) 2024 the V8 project authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +description: Test exception handling when async dispose method throws. +includes: [asyncHelpers.js] +flags: [async] +features: [explicit-resource-management] +---*/ + +// Dispose method throws ----------------------------- +asyncTest(async function() { + async function TestDisposeMethodThrows() { + await using x = { + value: 1, + async [Symbol.asyncDispose]() { + await 0; + throw new Test262Error('Symbol.asyncDispose is throwing!'); + } + }; + }; + await assert.throwsAsync( + Test262Error, () => TestDisposeMethodThrows(), + 'Symbol.asyncDispose is throwing!'); +}); diff --git a/test/staging/explicit-resource-management/await-using-dispose-method-throws.js b/test/staging/explicit-resource-management/await-using-dispose-method-throws.js new file mode 100644 index 00000000000..40dbaa9c34c --- /dev/null +++ b/test/staging/explicit-resource-management/await-using-dispose-method-throws.js @@ -0,0 +1,24 @@ +// Copyright (C) 2024 the V8 project authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +description: Test exception handling when dispose method throws. +includes: [asyncHelpers.js] +flags: [async] +features: [explicit-resource-management] +---*/ + +// Dispose method throws ----------------------------- +asyncTest(async function() { + async function TestDisposeMethodThrows() { + await using x = { + value: 1, + [Symbol.asyncDispose]() { + throw new Test262Error('Symbol.asyncDispose is throwing!'); + } + }; + }; + await assert.throwsAsync( + Test262Error, () => TestDisposeMethodThrows(), + 'Symbol.asyncDispose is throwing!'); +}); diff --git a/test/staging/explicit-resource-management/await-using-in-async-function-call-with-await.js b/test/staging/explicit-resource-management/await-using-in-async-function-call-with-await.js new file mode 100644 index 00000000000..54b894748ae --- /dev/null +++ b/test/staging/explicit-resource-management/await-using-in-async-function-call-with-await.js @@ -0,0 +1,33 @@ +// Copyright (C) 2024 the V8 project authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +description: Test if disposed methods are called correctly in async function. +includes: [asyncHelpers.js, compareArray.js] +flags: [async] +features: [explicit-resource-management] +---*/ + +// FunctionBody -------------- +asyncTest(async function() { + let functionBodyValues = []; + + async function TestUsingInFunctionBody() { + await using x = { + value: 1, + [Symbol.asyncDispose]() { + functionBodyValues.push(42); + } + }; + await using y = { + value: 2, + [Symbol.asyncDispose]() { + functionBodyValues.push(43); + } + }; + } + + functionBodyValues = []; + await TestUsingInFunctionBody(); + assert.compareArray(functionBodyValues, [43, 42]); +}); diff --git a/test/staging/explicit-resource-management/await-using-in-async-function-call-without-await.js b/test/staging/explicit-resource-management/await-using-in-async-function-call-without-await.js new file mode 100644 index 00000000000..dd488037076 --- /dev/null +++ b/test/staging/explicit-resource-management/await-using-in-async-function-call-without-await.js @@ -0,0 +1,32 @@ +// Copyright (C) 2024 the V8 project authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +description: Test if disposed methods are called correctly in async function. +includes: [asyncHelpers.js, compareArray.js] +flags: [async] +features: [explicit-resource-management] +---*/ + +// FunctionBody -------------- +asyncTest(async function() { + let functionBodyValues = []; + + async function TestUsingInFunctionBody() { + await using x = { + value: 1, + [Symbol.asyncDispose]() { + functionBodyValues.push(42); + } + }; + await using y = { + value: 2, + [Symbol.asyncDispose]() { + functionBodyValues.push(43); + } + }; + } + + TestUsingInFunctionBody(); + assert.compareArray(functionBodyValues, [43]); +}); diff --git a/test/staging/explicit-resource-management/await-using-in-async-generator-body.js b/test/staging/explicit-resource-management/await-using-in-async-generator-body.js new file mode 100644 index 00000000000..894ec01bdef --- /dev/null +++ b/test/staging/explicit-resource-management/await-using-in-async-generator-body.js @@ -0,0 +1,33 @@ +// Copyright (C) 2024 the V8 project authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +description: Test if disposed methods are called correctly in generator body. +includes: [asyncHelpers.js, compareArray.js] +flags: [async] +features: [explicit-resource-management] +---*/ + +asyncTest(async function() { + let generatorBodyValues = []; + + async function* gen() { + await using x = { + value: 1, + [Symbol.asyncDispose]() { + generatorBodyValues.push(42); + } + }; + yield x; + } + + async function TestUsingInGeneratorBody() { + let iter = gen(); + await iter.next(); + assert.compareArray(generatorBodyValues, []); + iter.next().then((result) => assert.sameValue(result.value, 1)); + generatorBodyValues.push(43); + } + await TestUsingInGeneratorBody(); + assert.compareArray(generatorBodyValues, [42, 43]); + }); diff --git a/test/staging/explicit-resource-management/await-using-in-block.js b/test/staging/explicit-resource-management/await-using-in-block.js new file mode 100644 index 00000000000..be6b89fe250 --- /dev/null +++ b/test/staging/explicit-resource-management/await-using-in-block.js @@ -0,0 +1,32 @@ +// Copyright (C) 2024 the V8 project authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +description: Test if disposed methods are called correctly in a block. +includes: [asyncHelpers.js, compareArray.js] +flags: [async] +features: [explicit-resource-management] +---*/ + +// Block ---------------- +asyncTest(async function() { + let blockValues = []; + + { + await using x = { + value: 1, + [Symbol.asyncDispose]() { + blockValues.push(42); + } + }; + await using y = { + value: 1, + [Symbol.asyncDispose]() { + blockValues.push(43); + } + }; + blockValues.push(44); + } + + assert.compareArray(blockValues, [44, 43, 42]); +}); diff --git a/test/staging/explicit-resource-management/await-using-in-for-in-statement.js b/test/staging/explicit-resource-management/await-using-in-for-in-statement.js new file mode 100644 index 00000000000..24255cfda00 --- /dev/null +++ b/test/staging/explicit-resource-management/await-using-in-for-in-statement.js @@ -0,0 +1,26 @@ +// Copyright (C) 2024 the V8 project authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +description: Test if disposed methods are called correctly in for-in statement. +includes: [asyncHelpers.js, compareArray.js] +flags: [async] +features: [explicit-resource-management] +---*/ + +// ForInStatement -------------- +asyncTest(async function() { + let forInStatementValues = []; + + for (let i in [0, 1]) { + await using x = { + value: i, + [Symbol.asyncDispose]() { + forInStatementValues.push(this.value); + } + }; + } + forInStatementValues.push('2'); + + assert.compareArray(forInStatementValues, ['0', '1', '2']); +}); diff --git a/test/staging/explicit-resource-management/await-using-in-for-of-statement.js b/test/staging/explicit-resource-management/await-using-in-for-of-statement.js new file mode 100644 index 00000000000..a5f0cbdc1ea --- /dev/null +++ b/test/staging/explicit-resource-management/await-using-in-for-of-statement.js @@ -0,0 +1,27 @@ + +// Copyright (C) 2024 the V8 project authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +description: Test if disposed methods are called correctly in for-of statement. +includes: [asyncHelpers.js, compareArray.js] +flags: [async] +features: [explicit-resource-management] +---*/ + +// ForOfStatement -------------- +asyncTest(async function() { + let forOfStatementValues = []; + + for (let i of [0, 1]) { + await using x = { + value: i, + [Symbol.asyncDispose]() { + forOfStatementValues.push(this.value); + } + }; + } + forOfStatementValues.push(2); + + assert.compareArray(forOfStatementValues, [0, 1, 2]); +}); diff --git a/test/staging/explicit-resource-management/await-using-in-for-statement.js b/test/staging/explicit-resource-management/await-using-in-for-statement.js new file mode 100644 index 00000000000..626f2543dde --- /dev/null +++ b/test/staging/explicit-resource-management/await-using-in-for-statement.js @@ -0,0 +1,26 @@ +// Copyright (C) 2024 the V8 project authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +description: Test if disposed methods are called correctly in for statements. +includes: [asyncHelpers.js, compareArray.js] +flags: [async] +features: [explicit-resource-management] +---*/ + +// ForStatement -------------- +asyncTest(async function() { + let forStatementValues = []; + + for (let i = 0; i < 3; i++) { + await using x = { + value: i, + [Symbol.asyncDispose]() { + forStatementValues.push(this.value); + } + }; + } + forStatementValues.push(3); + + assert.compareArray(forStatementValues, [0, 1, 2, 3]); +}); diff --git a/test/staging/explicit-resource-management/await-using-in-switch-case-block.js b/test/staging/explicit-resource-management/await-using-in-switch-case-block.js new file mode 100644 index 00000000000..bdbee8a7bfa --- /dev/null +++ b/test/staging/explicit-resource-management/await-using-in-switch-case-block.js @@ -0,0 +1,28 @@ +// Copyright (C) 2024 the V8 project authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +description: Test if disposed methods are called correctly in switch cases. +includes: [asyncHelpers.js, compareArray.js] +flags: [async] +features: [explicit-resource-management] +---*/ + +// CaseBlock -------------- +asyncTest(async function() { + let caseBlockValues = []; + + let label = 1; + switch (label) { + case 1: + await using x = { + value: 1, + [Symbol.asyncDispose]() { + caseBlockValues.push(42); + } + }; + } + caseBlockValues.push(43); + + assert.compareArray(caseBlockValues, [42, 43]); +}); diff --git a/test/staging/explicit-resource-management/await-using-mixed-async-throws.js b/test/staging/explicit-resource-management/await-using-mixed-async-throws.js new file mode 100644 index 00000000000..d6f6f35882b --- /dev/null +++ b/test/staging/explicit-resource-management/await-using-mixed-async-throws.js @@ -0,0 +1,31 @@ +// Copyright (C) 2024 the V8 project authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +description: Test exception handling when dispose method throws. +includes: [asyncHelpers.js] +flags: [async] +features: [explicit-resource-management] +---*/ + +// Dispose method throws ----------------------------- +asyncTest(async function() { + async function TestDisposeMethodThrows() { + await using x = { + value: 1, + [Symbol.asyncDispose]() { + throw new Test262Error('Symbol.asyncDispose is throwing!'); + } + }; + + using y = { + value: 1, + [Symbol.dispose]() { + return 42; + } + }; + }; + await assert.throwsAsync( + Test262Error, () => TestDisposeMethodThrows(), + 'Symbol.asyncDispose is throwing!'); +}); diff --git a/test/staging/explicit-resource-management/await-using-mixed-sync-throws.js b/test/staging/explicit-resource-management/await-using-mixed-sync-throws.js new file mode 100644 index 00000000000..b6d105541b0 --- /dev/null +++ b/test/staging/explicit-resource-management/await-using-mixed-sync-throws.js @@ -0,0 +1,31 @@ +// Copyright (C) 2024 the V8 project authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +description: Test exception handling when dispose method throws. +includes: [asyncHelpers.js] +flags: [async] +features: [explicit-resource-management] +---*/ + +// Dispose method throws ----------------------------- +asyncTest(async function() { + async function TestDisposeMethodThrows() { + await using x = { + value: 1, + [Symbol.asyncDispose]() { + return 42; + } + }; + + using y = { + value: 1, + [Symbol.dispose]() { + throw new Test262Error('Symbol.dispose is throwing!'); + } + }; + }; + await assert.throwsAsync( + Test262Error, () => TestDisposeMethodThrows(), + 'Symbol.dispose is throwing!'); +}); diff --git a/test/staging/explicit-resource-management/await-using-mixed-throws-suppressed-error-from-sync-and-async-disposals.js b/test/staging/explicit-resource-management/await-using-mixed-throws-suppressed-error-from-sync-and-async-disposals.js new file mode 100644 index 00000000000..c484924f401 --- /dev/null +++ b/test/staging/explicit-resource-management/await-using-mixed-throws-suppressed-error-from-sync-and-async-disposals.js @@ -0,0 +1,48 @@ +// Copyright (C) 2024 the V8 project authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +description: Throws a suppressed error from errors in sync and async disposal. +includes: [asyncHelpers.js] +flags: [async] +features: [explicit-resource-management] +---*/ + +asyncTest(async function() { + let firstDisposeError = new Test262Error('The Symbol.dispose is throwing!'); + let secondDisposeError = + new Test262Error('The Symbol.asyncDispose is throwing!'); + + async function TestTwoDisposeMethodsThrow() { + using x = { + value: 1, + [Symbol.dispose]() { + throw firstDisposeError; + } + }; + await using y = { + value: 1, + async[Symbol.asyncDispose]() { + throw secondDisposeError; + } + }; + }; + + await assert.throwsAsync( + SuppressedError, () => TestTwoDisposeMethodsThrow(), + 'An error was suppressed during disposal'); + + async function RunTestTwoDisposeMethodsThrow() { + try { + TestTwoDisposeMethodsThrow(); + } catch (error) { + assert( + error instanceof SuppressedError, + 'error is an instanceof SuppressedError'); + assert.sameValue(error.error, firstDisposeError, 'error.error'); + assert.sameValue( + error.suppressed, secondDisposeError, 'error.suppressed'); + } + } + await RunTestTwoDisposeMethodsThrow(); +}); diff --git a/test/staging/explicit-resource-management/await-using-mixed-throws-suppressed-error.js b/test/staging/explicit-resource-management/await-using-mixed-throws-suppressed-error.js new file mode 100644 index 00000000000..9ed948b17ad --- /dev/null +++ b/test/staging/explicit-resource-management/await-using-mixed-throws-suppressed-error.js @@ -0,0 +1,49 @@ +// Copyright (C) 2024 the V8 project authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +description: Throws a suppressed error from errors in disposal. +includes: [asyncHelpers.js] +flags: [async] +features: [explicit-resource-management] +---*/ + +// A suppressed error from two errors in disposal ----------------------------- +asyncTest(async function() { + let firstDisposeError = new Test262Error('The Symbol.dispose is throwing!'); + let secondDisposeError = + new Test262Error('The Symbol.asyncDispose is throwing!'); + + async function TestTwoDisposeMethodsThrow() { + using x = { + value: 1, + [Symbol.dispose]() { + throw firstDisposeError; + } + }; + await using y = { + value: 1, + [Symbol.asyncDispose]() { + throw secondDisposeError; + } + }; + }; + + await assert.throwsAsync( + SuppressedError, () => TestTwoDisposeMethodsThrow(), + 'An error was suppressed during disposal'); + + async function RunTestTwoDisposeMethodsThrow() { + try { + TestTwoDisposeMethodsThrow(); + } catch (error) { + assert( + error instanceof SuppressedError, + 'error is an instanceof SuppressedError'); + assert.sameValue(error.error, firstDisposeError, 'error.error'); + assert.sameValue( + error.suppressed, secondDisposeError, 'error.suppressed'); + } + } + await RunTestTwoDisposeMethodsThrow(); +}); diff --git a/test/staging/explicit-resource-management/await-using-throws-from-symbol-dispose.js b/test/staging/explicit-resource-management/await-using-throws-from-symbol-dispose.js new file mode 100644 index 00000000000..44add3a68c0 --- /dev/null +++ b/test/staging/explicit-resource-management/await-using-throws-from-symbol-dispose.js @@ -0,0 +1,25 @@ +// Copyright (C) 2024 the V8 project authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +description: Test if exception handling is correct from Symbol.dispose. +includes: [asyncHelpers.js] +flags: [async] +features: [explicit-resource-management] +---*/ + +// sync dispose method throws ---------------- +asyncTest(async function() { + async function TestDisposeMethodThrows() { + await using x = { + value: 1, + [Symbol.dispose]() { + throw new Test262Error('Symbol.dispose is throwing!'); + } + }; + } + + await assert.throwsAsync( + Test262Error, () => TestDisposeMethodThrows(), + 'Symbol.dispose is throwing!'); +}); diff --git a/test/staging/explicit-resource-management/await-using-throws-suppressed-error-from-disposals.js b/test/staging/explicit-resource-management/await-using-throws-suppressed-error-from-disposals.js new file mode 100644 index 00000000000..d1942da51db --- /dev/null +++ b/test/staging/explicit-resource-management/await-using-throws-suppressed-error-from-disposals.js @@ -0,0 +1,50 @@ +// Copyright (C) 2024 the V8 project authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +description: Throws a suppressed error from errors in disposal. +includes: [asyncHelpers.js] +flags: [async] +features: [explicit-resource-management] +---*/ + +// A suppressed error from two errors in disposal ----------------------------- +asyncTest(async function() { + let firstDisposeError = + new Test262Error('The first Symbol.asyncDispose is throwing!'); + let secondDisposeError = + new Test262Error('The second Symbol.asyncDispose is throwing!'); + + async function TestTwoDisposeMethodsThrow() { + await using x = { + value: 1, + [Symbol.asyncDispose]() { + throw firstDisposeError; + } + }; + await using y = { + value: 1, + [Symbol.asyncDispose]() { + throw secondDisposeError; + } + }; + }; + + await assert.throwsAsync( + SuppressedError, () => TestTwoDisposeMethodsThrow(), + 'An error was suppressed during disposal'); + + async function RunTestTwoDisposeMethodsThrow() { + try { + TestTwoDisposeMethodsThrow(); + } catch (error) { + assert( + error instanceof SuppressedError, + 'error is an instanceof SuppressedError'); + assert.sameValue(error.error, firstDisposeError, 'error.error'); + assert.sameValue( + error.suppressed, secondDisposeError, 'error.suppressed'); + } + } + await RunTestTwoDisposeMethodsThrow(); +}); diff --git a/test/staging/explicit-resource-management/await-using-throws-suppressed-error-from-try-and-disposal.js b/test/staging/explicit-resource-management/await-using-throws-suppressed-error-from-try-and-disposal.js new file mode 100644 index 00000000000..90838fbc795 --- /dev/null +++ b/test/staging/explicit-resource-management/await-using-throws-suppressed-error-from-try-and-disposal.js @@ -0,0 +1,41 @@ +// Copyright (C) 2024 the V8 project authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +description: Throws a suppressed error from errors in try and in disposal +includes: [asyncHelpers.js] +flags: [async] +features: [explicit-resource-management] +---*/ + +// A suppressed error from an error in try block and an error in disposal +asyncTest(async function() { + let userCodeError = new Test262Error('User code is throwing!'); + let disposeError = new Test262Error('Symbol.asyncDispose is throwing!'); + async function TestDisposeMethodAndUserCodeThrow() { + await using x = { + value: 1, + [Symbol.asyncDispose]() { + throw disposeError; + } + }; + throw userCodeError; + }; + + await assert.throwsAsync( + SuppressedError, () => TestDisposeMethodAndUserCodeThrow(), + 'An error was suppressed during disposal'); + + async function RunTestDisposeMethodAndUserCodeThrow() { + try { + TestDisposeMethodAndUserCodeThrow(); + } catch (error) { + assert( + error instanceof SuppressedError, + 'error is an instanceof SuppressedError'); + assert.sameValue(error.error, disposeError, 'error.error'); + assert.sameValue(error.suppressed, userCodeError, 'error.suppressed'); + } + } + RunTestDisposeMethodAndUserCodeThrow(); +}); diff --git a/test/staging/explicit-resource-management/await-using-throws-suppressed-error-of-undefined.js b/test/staging/explicit-resource-management/await-using-throws-suppressed-error-of-undefined.js new file mode 100644 index 00000000000..947841ebed4 --- /dev/null +++ b/test/staging/explicit-resource-management/await-using-throws-suppressed-error-of-undefined.js @@ -0,0 +1,47 @@ +// Copyright (C) 2024 the V8 project authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +description: Throws a suppressed error from throwing undefined in disposal. +includes: [asyncHelpers.js] +flags: [async] +features: [explicit-resource-management] +---*/ + +asyncTest(async function() { + let firstDisposeError = undefined; + let secondDisposeError = undefined; + + async function TestTwoDisposeMethodsThrowUndefined() { + await using x = { + value: 1, + [Symbol.asyncDispose]() { + throw firstDisposeError; + } + }; + await using y = { + value: 1, + [Symbol.asyncDispose]() { + throw secondDisposeError; + } + }; + }; + + await assert.throwsAsync( + SuppressedError, () => TestTwoDisposeMethodsThrowUndefined(), + 'An error was suppressed during disposal'); + + async function RunTestTwoDisposeMethodsThrowUndefined() { + try { + TestTwoDisposeMethodsThrowUndefined(); + } catch (error) { + assert( + error instanceof SuppressedError, + 'error is an instanceof SuppressedError'); + assert.sameValue(error.error, firstDisposeError, 'error.error'); + assert.sameValue( + error.suppressed, secondDisposeError, 'error.suppressed'); + } + } + await RunTestTwoDisposeMethodsThrowUndefined(); +}); diff --git a/test/staging/explicit-resource-management/await-using-user-code-throws-after.js b/test/staging/explicit-resource-management/await-using-user-code-throws-after.js new file mode 100644 index 00000000000..13050932118 --- /dev/null +++ b/test/staging/explicit-resource-management/await-using-user-code-throws-after.js @@ -0,0 +1,25 @@ +// Copyright (C) 2024 the V8 project authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +description: Test exception handling when user code throws. +includes: [asyncHelpers.js] +flags: [async] +features: [explicit-resource-management] +---*/ + +// User code throws ----------------------------- +asyncTest(async function() { + async function TestUserCodeThrowsAfterUsingStatements() { + await using x = { + value: 1, + [Symbol.asyncDispose]() { + return 42; + } + }; + throw new Test262Error('User code is throwing!'); + }; + await assert.throwsAsync( + Test262Error, () => TestUserCodeThrowsAfterUsingStatements(), + 'User code is throwing!'); +}); diff --git a/test/staging/explicit-resource-management/await-using-user-code-throws-before.js b/test/staging/explicit-resource-management/await-using-user-code-throws-before.js new file mode 100644 index 00000000000..16344e2e191 --- /dev/null +++ b/test/staging/explicit-resource-management/await-using-user-code-throws-before.js @@ -0,0 +1,26 @@ +// Copyright (C) 2024 the V8 project authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +description: Test exception handling when user code throws. +includes: [asyncHelpers.js] +flags: [async] +features: [explicit-resource-management] +---*/ + +// User code throws ----------------------------- +asyncTest(async function() { + async function TestUserCodeThrowsBeforeUsingStatements() { + throw new Test262Error('User code is throwing!'); + await using x = { + value: 1, + [Symbol.asyncDispose]() { + return 42; + } + }; + }; + + await assert.throwsAsync( + Test262Error, () => TestUserCodeThrowsBeforeUsingStatements(), + 'User code is throwing!') +}); diff --git a/test/staging/explicit-resource-management/await-using-with-no-async-dispose-method.js b/test/staging/explicit-resource-management/await-using-with-no-async-dispose-method.js new file mode 100644 index 00000000000..0720b136be2 --- /dev/null +++ b/test/staging/explicit-resource-management/await-using-with-no-async-dispose-method.js @@ -0,0 +1,21 @@ +// Copyright (C) 2024 the V8 project authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +description: Test if exception is throwon when dispose method is missing. +includes: [asyncHelpers.js] +flags: [async] +features: [explicit-resource-management] +---*/ + +// Lack of dispose method -------- +asyncTest(async function() { + let values = []; + + async function TestUsingWithoutDisposeMethod() { + await using x = {value: 1}; + values.push(43); + }; + await assert.throwsAsync( + TypeError, () => TestUsingWithoutDisposeMethod(), 'No dispose method'); +}); diff --git a/test/staging/explicit-resource-management/await-using-with-sync-dispose-method.js b/test/staging/explicit-resource-management/await-using-with-sync-dispose-method.js new file mode 100644 index 00000000000..c7ce29dcef2 --- /dev/null +++ b/test/staging/explicit-resource-management/await-using-with-sync-dispose-method.js @@ -0,0 +1,32 @@ +// Copyright (C) 2024 the V8 project authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +description: Test if Symbol.dispose is called correctly. +includes: [asyncHelpers.js, compareArray.js] +flags: [async] +features: [explicit-resource-management] +---*/ + +// sync dispose method ---------------- +asyncTest(async function() { + let syncMethodValues = []; + + { + await using x = { + value: 1, + [Symbol.dispose]() { + syncMethodValues.push(42); + } + }; + await using y = { + value: 1, + [Symbol.dispose]() { + syncMethodValues.push(43); + } + }; + syncMethodValues.push(44); + } + + assert.compareArray(syncMethodValues, [44, 43, 42]); +}); diff --git a/test/staging/explicit-resource-management/mixed-call-dispose-methods.js b/test/staging/explicit-resource-management/mixed-call-dispose-methods.js new file mode 100644 index 00000000000..fb85b40391e --- /dev/null +++ b/test/staging/explicit-resource-management/mixed-call-dispose-methods.js @@ -0,0 +1,32 @@ +// Copyright (C) 2024 the V8 project authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +description: Test if disposed methods are called correctly with mixed resources +includes: [asyncHelpers.js, compareArray.js] +flags: [async] +features: [explicit-resource-management] +---*/ + +// Mix of sync and async resources ---------- +asyncTest(async function() { + let mixValues = []; + + { + await using x = { + value: 1, + [Symbol.asyncDispose]() { + mixValues.push(42); + } + }; + using y = { + value: 1, + [Symbol.dispose]() { + mixValues.push(43); + } + }; + mixValues.push(44); + } + + assert.compareArray(mixValues, [44, 43, 42]); +});