From 97e0bef2150cb9fd5835fa2366934284334acfff Mon Sep 17 00:00:00 2001 From: Rezvan Mahdavi Hezaveh Date: Wed, 10 Jul 2024 10:19:19 -0700 Subject: [PATCH 01/37] [explicit-resource-management] Add await using to the bytecode generator This CL adds subtypes (SyncJSDisposableStack and AsyncDisposableStack) to JSDisposableStack as well as `await using` to the bytecode generator. Currently async generators are broken and the fix is left as a TODO in this CL. Also, exception handling (promise rejections) will be completed in a follow up CL. Bug: 42203814 Change-Id: I303a380b57fb4ab4662e4f55fb4dc9b14d18cd2a Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/5569647 Reviewed-by: Shu-yu Guo Commit-Queue: Rezvan Mahdavi Hezaveh Cr-Commit-Position: refs/heads/main@{#94944} --- ...using-in-async-function-call-with-await.js | 33 +++++++++++++++++++ ...ng-in-async-function-call-without-await.js | 32 ++++++++++++++++++ .../await-using-in-block.js | 32 ++++++++++++++++++ .../await-using-in-for-in-statement.js | 26 +++++++++++++++ .../await-using-in-for-of-statement.js | 27 +++++++++++++++ .../await-using-in-for-statement.js | 26 +++++++++++++++ .../await-using-in-switch-case-block.js | 28 ++++++++++++++++ ...wait-using-with-no-async-dispose-method.js | 23 +++++++++++++ .../await-using-with-sync-dispose-method.js | 32 ++++++++++++++++++ .../mixed-call-dispose-methods.js | 32 ++++++++++++++++++ 10 files changed, 291 insertions(+) create mode 100644 test/staging/explicit-resource-management/await-using-in-async-function-call-with-await.js create mode 100644 test/staging/explicit-resource-management/await-using-in-async-function-call-without-await.js create mode 100644 test/staging/explicit-resource-management/await-using-in-block.js create mode 100644 test/staging/explicit-resource-management/await-using-in-for-in-statement.js create mode 100644 test/staging/explicit-resource-management/await-using-in-for-of-statement.js create mode 100644 test/staging/explicit-resource-management/await-using-in-for-statement.js create mode 100644 test/staging/explicit-resource-management/await-using-in-switch-case-block.js create mode 100644 test/staging/explicit-resource-management/await-using-with-no-async-dispose-method.js create mode 100644 test/staging/explicit-resource-management/await-using-with-sync-dispose-method.js create mode 100644 test/staging/explicit-resource-management/mixed-call-dispose-methods.js 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-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-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..3bb5087a9be --- /dev/null +++ b/test/staging/explicit-resource-management/await-using-with-no-async-dispose-method.js @@ -0,0 +1,23 @@ +// 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]); +}); From b9ed8c920cec2654bbc39dd331da76656bc33f1f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andr=C3=A9=20Bargull?= Date: Tue, 27 Aug 2024 10:48:28 +0200 Subject: [PATCH 02/37] Add more tests for typed array indices in typed array set --- ...s-in-bounds-receiver-is-not-typed-array.js | 36 +++++++++++++++++ ...is-out-of-bounds-receiver-is-not-object.js | 34 ++++++++++++++++ ...t-of-bounds-receiver-is-not-typed-array.js | 34 ++++++++++++++++ .../key-is-out-of-bounds-receiver-is-proto.js | 40 +++++++++++++++++++ 4 files changed, 144 insertions(+) create mode 100644 test/built-ins/TypedArrayConstructors/internals/Set/key-is-in-bounds-receiver-is-not-typed-array.js create mode 100644 test/built-ins/TypedArrayConstructors/internals/Set/key-is-out-of-bounds-receiver-is-not-object.js create mode 100644 test/built-ins/TypedArrayConstructors/internals/Set/key-is-out-of-bounds-receiver-is-not-typed-array.js create mode 100644 test/built-ins/TypedArrayConstructors/internals/Set/key-is-out-of-bounds-receiver-is-proto.js 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"); From 18c8c85746c5caceafb9c976fc5a1d30aaf8f89c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andr=C3=A9=20Bargull?= Date: Tue, 27 Aug 2024 10:49:03 +0200 Subject: [PATCH 03/37] Add more tests for deleted bindings in object environments --- ...-deleted-in-get-unscopables-strict-mode.js | 42 ++++++++++++++++++ ...ding-binding-deleted-in-get-unscopables.js | 39 ++++++++++++++++ ...-deleted-in-get-unscopables-strict-mode.js | 40 +++++++++++++++++ ...ding-binding-deleted-in-get-unscopables.js | 44 +++++++++++++++++++ ...-typed-array-in-proto-chain-strict-mode.js | 36 +++++++++++++++ ...deleted-with-typed-array-in-proto-chain.js | 33 ++++++++++++++ 6 files changed, 234 insertions(+) create mode 100644 test/language/statements/with/get-mutable-binding-binding-deleted-in-get-unscopables-strict-mode.js create mode 100644 test/language/statements/with/get-mutable-binding-binding-deleted-in-get-unscopables.js create mode 100644 test/language/statements/with/set-mutable-binding-binding-deleted-in-get-unscopables-strict-mode.js create mode 100644 test/language/statements/with/set-mutable-binding-binding-deleted-in-get-unscopables.js create mode 100644 test/language/statements/with/set-mutable-binding-binding-deleted-with-typed-array-in-proto-chain-strict-mode.js create mode 100644 test/language/statements/with/set-mutable-binding-binding-deleted-with-typed-array-in-proto-chain.js 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/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); From a4443793b9c26ac8c11294682dd8d6c52634f2f7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andr=C3=A9=20Bargull?= Date: Tue, 27 Aug 2024 11:00:08 +0200 Subject: [PATCH 04/37] Add coverage when array buffer is resized in SetTypedArrayFromArrayLike --- ...g-value-conversion-resizes-array-buffer.js | 66 +++++++++++++++++++ 1 file changed, 66 insertions(+) create mode 100644 test/built-ins/TypedArray/prototype/set/array-arg-value-conversion-resizes-array-buffer.js 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 +]); From 3acb672d118bceca7aeed032fffc9f5144159f68 Mon Sep 17 00:00:00 2001 From: Ioanna M Dimitriou H <9728696+ioannad@users.noreply.github.com> Date: Tue, 27 Aug 2024 17:18:44 +0200 Subject: [PATCH 05/37] RAB: Integrate helper to rest of the tests (#4198) Co-authored-by: Philip Chimento --- .../prototype/apply/resizable-buffer.js | 99 ++++++++ .../typedarray-backed-by-resizable-buffer.js | 216 ++++++++++++++++++ .../Object/defineProperty/coerced-P-grow.js | 62 +++++ .../Object/defineProperty/coerced-P-shrink.js | 50 ++++ .../typedarray-backed-by-resizable-buffer.js | 214 +++++++++++++++++ .../typedarray-backed-by-resizable-buffer.js | 53 +++++ .../out-of-bounds-behaves-like-detached.js | 21 ++ .../TypedArray/out-of-bounds-get-and-set.js | 63 +++++ .../built-ins/TypedArray/out-of-bounds-has.js | 41 ++++ ...resizable-and-fixed-have-same-prototype.js | 19 ++ .../resizable-buffer-length-tracking-1.js | 58 +++++ .../resizable-buffer-length-tracking-2.js | 78 +++++++ .../buffer-arg/resizable-out-of-bounds.js | 36 +++ .../src-typedarray-resizable-buffer.js | 150 ++++++++++++ .../typedarray-backed-by-resizable-buffer.js | 199 ++++++++++++++++ .../statements/for-in/resizable-buffer.js | 21 ++ ...ked-by-resizable-buffer-grow-before-end.js | 57 +++++ ...-by-resizable-buffer-grow-mid-iteration.js | 71 ++++++ ...y-resizable-buffer-shrink-mid-iteration.js | 86 +++++++ ...ble-buffer-shrink-to-zero-mid-iteration.js | 58 +++++ .../typedarray-backed-by-resizable-buffer.js | 70 ++++++ 21 files changed, 1722 insertions(+) create mode 100644 test/built-ins/Function/prototype/apply/resizable-buffer.js create mode 100644 test/built-ins/Object/defineProperties/typedarray-backed-by-resizable-buffer.js create mode 100644 test/built-ins/Object/defineProperty/coerced-P-grow.js create mode 100644 test/built-ins/Object/defineProperty/coerced-P-shrink.js create mode 100644 test/built-ins/Object/defineProperty/typedarray-backed-by-resizable-buffer.js create mode 100644 test/built-ins/Object/freeze/typedarray-backed-by-resizable-buffer.js create mode 100644 test/built-ins/TypedArray/out-of-bounds-behaves-like-detached.js create mode 100644 test/built-ins/TypedArray/out-of-bounds-get-and-set.js create mode 100644 test/built-ins/TypedArray/out-of-bounds-has.js create mode 100644 test/built-ins/TypedArray/prototype/resizable-and-fixed-have-same-prototype.js create mode 100644 test/built-ins/TypedArray/resizable-buffer-length-tracking-1.js create mode 100644 test/built-ins/TypedArray/resizable-buffer-length-tracking-2.js create mode 100644 test/built-ins/TypedArrayConstructors/ctors/buffer-arg/resizable-out-of-bounds.js create mode 100644 test/built-ins/TypedArrayConstructors/ctors/typedarray-arg/src-typedarray-resizable-buffer.js create mode 100644 test/language/destructuring/binding/typedarray-backed-by-resizable-buffer.js create mode 100644 test/language/statements/for-in/resizable-buffer.js create mode 100644 test/language/statements/for-of/typedarray-backed-by-resizable-buffer-grow-before-end.js create mode 100644 test/language/statements/for-of/typedarray-backed-by-resizable-buffer-grow-mid-iteration.js create mode 100644 test/language/statements/for-of/typedarray-backed-by-resizable-buffer-shrink-mid-iteration.js create mode 100644 test/language/statements/for-of/typedarray-backed-by-resizable-buffer-shrink-to-zero-mid-iteration.js create mode 100644 test/language/statements/for-of/typedarray-backed-by-resizable-buffer.js diff --git a/test/built-ins/Function/prototype/apply/resizable-buffer.js b/test/built-ins/Function/prototype/apply/resizable-buffer.js new file mode 100644 index 00000000000..2e93f387cbc --- /dev/null +++ b/test/built-ins/Function/prototype/apply/resizable-buffer.js @@ -0,0 +1,99 @@ +// Copyright 2023 the V8 project authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +esid: sec-function.prototype.apply +description: > + Function.p.apply behaves correctly when the argument array is a + TypedArray backed by resizable buffer +includes: [compareArray.js, resizableArrayBufferUtils.js] +features: [resizable-arraybuffer] +---*/ + + +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); + for (let i = 0; i < 4; ++i) { + WriteToTypedArray(taWrite, i, i); + } + function func(...args) { + return [...args]; + } + assert.compareArray(ToNumbers(func.apply(null, fixedLength)), [ + 0, + 1, + 2, + 3 + ]); + assert.compareArray(ToNumbers(func.apply(null, fixedLengthWithOffset)), [ + 2, + 3 + ]); + assert.compareArray(ToNumbers(func.apply(null, lengthTracking)), [ + 0, + 1, + 2, + 3 + ]); + assert.compareArray(ToNumbers(func.apply(null, lengthTrackingWithOffset)), [ + 2, + 3 + ]); + + // Shrink so that fixed length TAs go out of bounds. + rab.resize(3 * ctor.BYTES_PER_ELEMENT); + assert.compareArray(ToNumbers(func.apply(null, fixedLength)), []); + assert.compareArray(ToNumbers(func.apply(null, fixedLengthWithOffset)), []); + assert.compareArray(ToNumbers(func.apply(null, lengthTracking)), [ + 0, + 1, + 2 + ]); + assert.compareArray(ToNumbers(func.apply(null, lengthTrackingWithOffset)), [2]); + + // Shrink so that the TAs with offset go out of bounds. + rab.resize(1 * ctor.BYTES_PER_ELEMENT); + assert.compareArray(ToNumbers(func.apply(null, fixedLength)), []); + assert.compareArray(ToNumbers(func.apply(null, fixedLengthWithOffset)), []); + assert.compareArray(ToNumbers(func.apply(null, lengthTracking)), [0]); + assert.compareArray(ToNumbers(func.apply(null, lengthTrackingWithOffset)), []); + + // Shrink to zero. + rab.resize(0); + assert.compareArray(ToNumbers(func.apply(null, fixedLength)), []); + assert.compareArray(ToNumbers(func.apply(null, fixedLengthWithOffset)), []); + assert.compareArray(ToNumbers(func.apply(null, lengthTracking)), []); + assert.compareArray(ToNumbers(func.apply(null, lengthTrackingWithOffset)), []); + + // Grow so that all TAs are back in-bounds. New memory is zeroed. + rab.resize(6 * ctor.BYTES_PER_ELEMENT); + assert.compareArray(ToNumbers(func.apply(null, fixedLength)), [ + 0, + 0, + 0, + 0 + ]); + assert.compareArray(ToNumbers(func.apply(null, fixedLengthWithOffset)), [ + 0, + 0 + ]); + assert.compareArray(ToNumbers(func.apply(null, lengthTracking)), [ + 0, + 0, + 0, + 0, + 0, + 0 + ]); + assert.compareArray(ToNumbers(func.apply(null, lengthTrackingWithOffset)), [ + 0, + 0, + 0, + 0 + ]); +} 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..46901a08749 --- /dev/null +++ b/test/built-ins/Object/defineProperties/typedarray-backed-by-resizable-buffer.js @@ -0,0 +1,216 @@ +// 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 MayNeedBigInt(ta, value) { + if (ta instanceof BigInt64Array || ta instanceof BigUint64Array) { + return BigInt(value); + } else { + return value; + } +} + +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..106de77d256 --- /dev/null +++ b/test/built-ins/Object/defineProperty/coerced-P-grow.js @@ -0,0 +1,62 @@ +// 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] +---*/ + +function MayNeedBigInt(ta, value) { + if (ta instanceof BigInt64Array || ta instanceof BigUint64Array) { + return BigInt(value); + } else { + return value; + } +} + +// 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..bcc3019d5a9 --- /dev/null +++ b/test/built-ins/Object/defineProperty/coerced-P-shrink.js @@ -0,0 +1,50 @@ +// 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] +---*/ + +function MayNeedBigInt(ta, value) { + if (ta instanceof BigInt64Array || ta instanceof BigUint64Array) { + return BigInt(value); + } else { + return value; + } +} + +// 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..155fd50445a --- /dev/null +++ b/test/built-ins/Object/defineProperty/typedarray-backed-by-resizable-buffer.js @@ -0,0 +1,214 @@ +// 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 MayNeedBigInt(ta, value) { + if (ta instanceof BigInt64Array || ta instanceof BigUint64Array) { + return BigInt(value); + } else { + return value; + } +} + +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/built-ins/Object/freeze/typedarray-backed-by-resizable-buffer.js b/test/built-ins/Object/freeze/typedarray-backed-by-resizable-buffer.js new file mode 100644 index 00000000000..ced1de4672b --- /dev/null +++ b/test/built-ins/Object/freeze/typedarray-backed-by-resizable-buffer.js @@ -0,0 +1,53 @@ +// 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.freeze +description: > + Object.freeze throws on non-0-length TypedArrays backed by resizable + buffers but do not throw on 0-length ones +features: [resizable-arraybuffer] +includes: [resizableArrayBufferUtils.js] +---*/ + +// 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); + 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.throws(TypeError, () => { + Object.freeze(fixedLength); + }); + assert.throws(TypeError, () => { + Object.freeze(fixedLengthWithOffset); + }); + assert.throws(TypeError, () => { + Object.freeze(lengthTracking); + }); + assert.throws(TypeError, () => { + Object.freeze(lengthTrackingWithOffset); + }); +} +// Freezing zero-length TAs doesn't throw. +for (let ctor of ctors) { + const rab = CreateResizableArrayBuffer(4 * ctor.BYTES_PER_ELEMENT, 8 * ctor.BYTES_PER_ELEMENT); + const fixedLength = new ctor(rab, 0, 0); + const fixedLengthWithOffset = new ctor(rab, 2 * ctor.BYTES_PER_ELEMENT, 0); + const lengthTrackingWithOffset = new ctor(rab, 4 * ctor.BYTES_PER_ELEMENT); + Object.freeze(fixedLength); + Object.freeze(fixedLengthWithOffset); + Object.freeze(lengthTrackingWithOffset); +} +// If the buffer has been resized to make length-tracking TAs zero-length, +// freezing them also doesn't throw. +for (let ctor of ctors) { + const rab = CreateResizableArrayBuffer(4 * ctor.BYTES_PER_ELEMENT, 8 * ctor.BYTES_PER_ELEMENT); + const lengthTracking = new ctor(rab); + const lengthTrackingWithOffset = new ctor(rab, 2 * ctor.BYTES_PER_ELEMENT); + rab.resize(2 * ctor.BYTES_PER_ELEMENT); + Object.freeze(lengthTrackingWithOffset); + rab.resize(0 * ctor.BYTES_PER_ELEMENT); + Object.freeze(lengthTracking); +} 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..5e3b59c49a0 --- /dev/null +++ b/test/built-ins/TypedArray/out-of-bounds-get-and-set.js @@ -0,0 +1,63 @@ +// 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] +---*/ + +function MayNeedBigInt(ta, num) { + if (ta instanceof BigInt64Array || ta instanceof BigUint64Array) { + return BigInt(num); + } else { + return num; + } +} + +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/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/resizable-buffer-length-tracking-1.js b/test/built-ins/TypedArray/resizable-buffer-length-tracking-1.js new file mode 100644 index 00000000000..3a887cbdc3b --- /dev/null +++ b/test/built-ins/TypedArray/resizable-buffer-length-tracking-1.js @@ -0,0 +1,58 @@ +// 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: > + Basic functionality of length-tracking TypedArrays backed by resizable + buffers +includes: [resizableArrayBufferUtils.js] +features: [resizable-arraybuffer] +---*/ + +const rab = CreateResizableArrayBuffer(16, 40); +let tas = []; +for (let ctor of ctors) { + tas.push(new ctor(rab)); +} +for (let ta of tas) { + assert.sameValue(ta.length, 16 / ta.BYTES_PER_ELEMENT); + assert.sameValue(ta.byteLength, 16); +} +rab.resize(40); +for (let ta of tas) { + assert.sameValue(ta.length, 40 / ta.BYTES_PER_ELEMENT); + assert.sameValue(ta.byteLength, 40); +} +// Resize to a number which is not a multiple of all byte_lengths. +rab.resize(19); +for (let ta of tas) { + const expected_length = Math.floor(19 / ta.BYTES_PER_ELEMENT); + assert.sameValue(ta.length, expected_length); + assert.sameValue(ta.byteLength, expected_length * ta.BYTES_PER_ELEMENT); +} +rab.resize(1); +for (let ta of tas) { + if (ta.BYTES_PER_ELEMENT == 1) { + assert.sameValue(ta.length, 1); + assert.sameValue(ta.byteLength, 1); + } else { + assert.sameValue(ta.length, 0); + assert.sameValue(ta.byteLength, 0); + } +} +rab.resize(0); +for (let ta of tas) { + assert.sameValue(ta.length, 0); + assert.sameValue(ta.byteLength, 0); +} +rab.resize(8); +for (let ta of tas) { + assert.sameValue(ta.length, 8 / ta.BYTES_PER_ELEMENT); + assert.sameValue(ta.byteLength, 8); +} +rab.resize(40); +for (let ta of tas) { + assert.sameValue(ta.length, 40 / ta.BYTES_PER_ELEMENT); + assert.sameValue(ta.byteLength, 40); +} diff --git a/test/built-ins/TypedArray/resizable-buffer-length-tracking-2.js b/test/built-ins/TypedArray/resizable-buffer-length-tracking-2.js new file mode 100644 index 00000000000..aa76518aaf1 --- /dev/null +++ b/test/built-ins/TypedArray/resizable-buffer-length-tracking-2.js @@ -0,0 +1,78 @@ +// 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: > + Length-tracking TypedArrays backed by resizable buffers with offsets + behave correctly +includes: [resizableArrayBufferUtils.js] +features: [resizable-arraybuffer] +---*/ + +// length-tracking-1 but with offsets. + +const rab = CreateResizableArrayBuffer(16, 40); +const offset = 8; +let tas = []; +for (let ctor of ctors) { + tas.push(new ctor(rab, offset)); +} +for (let ta of tas) { + assert.sameValue(ta.length, (16 - offset) / ta.BYTES_PER_ELEMENT); + assert.sameValue(ta.byteLength, 16 - offset); + assert.sameValue(ta.byteOffset, offset); +} +rab.resize(40); +for (let ta of tas) { + assert.sameValue(ta.length, (40 - offset) / ta.BYTES_PER_ELEMENT); + assert.sameValue(ta.byteLength, 40 - offset); + assert.sameValue(ta.byteOffset, offset); +} +// Resize to a number which is not a multiple of all byte_lengths. +rab.resize(20); +for (let ta of tas) { + const expected_length = Math.floor((20 - offset) / ta.BYTES_PER_ELEMENT); + assert.sameValue(ta.length, expected_length); + assert.sameValue(ta.byteLength, expected_length * ta.BYTES_PER_ELEMENT); + assert.sameValue(ta.byteOffset, offset); +} +// Resize so that all TypedArrays go out of bounds (because of the offset). +rab.resize(7); +for (let ta of tas) { + assert.sameValue(ta.length, 0); + assert.sameValue(ta.byteLength, 0); + assert.sameValue(ta.byteOffset, 0); +} +rab.resize(0); +for (let ta of tas) { + assert.sameValue(ta.length, 0); + assert.sameValue(ta.byteLength, 0); + assert.sameValue(ta.byteOffset, 0); +} +rab.resize(8); +for (let ta of tas) { + assert.sameValue(ta.length, 0); + assert.sameValue(ta.byteLength, 0); + assert.sameValue(ta.byteOffset, offset); +} +// Resize so that the TypedArrays which have element size > 1 go out of bounds +// (because less than 1 full element would fit). +rab.resize(offset + 1); +for (let ta of tas) { + if (ta.BYTES_PER_ELEMENT == 1) { + assert.sameValue(ta.length, 1); + assert.sameValue(ta.byteLength, 1); + assert.sameValue(ta.byteOffset, offset); + } else { + assert.sameValue(ta.length, 0); + assert.sameValue(ta.byteLength, 0); + assert.sameValue(ta.byteOffset, offset); + } +} +rab.resize(40); +for (let ta of tas) { + assert.sameValue(ta.length, (40 - offset) / ta.BYTES_PER_ELEMENT); + assert.sameValue(ta.byteLength, 40 - offset); + assert.sameValue(ta.byteOffset, offset); +} 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/built-ins/TypedArrayConstructors/ctors/typedarray-arg/src-typedarray-resizable-buffer.js b/test/built-ins/TypedArrayConstructors/ctors/typedarray-arg/src-typedarray-resizable-buffer.js new file mode 100644 index 00000000000..924d3e89439 --- /dev/null +++ b/test/built-ins/TypedArrayConstructors/ctors/typedarray-arg/src-typedarray-resizable-buffer.js @@ -0,0 +1,150 @@ +// Copyright 2023 the V8 project authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +esid: sec-initializetypedarrayfromtypedarray +description: > + Initializing a TypedArray from another TypedArray that is backed by a + resizable buffer +includes: [compareArray.js, resizableArrayBufferUtils.js] +features: [resizable-arraybuffer] +---*/ + +function IsBigIntTypedArray(ta) { + return ta instanceof BigInt64Array || ta instanceof BigUint64Array; +} + +function AllBigIntMatchedCtorCombinations(test) { + for (let targetCtor of ctors) { + for (let sourceCtor of ctors) { + if (IsBigIntTypedArray(new targetCtor()) != IsBigIntTypedArray(new sourceCtor())) { + continue; + } + test(targetCtor, sourceCtor); + } + } +} + +AllBigIntMatchedCtorCombinations((targetCtor, sourceCtor) => { + 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 + + assert.compareArray(ToNumbers(new targetCtor(fixedLength)), [ + 1, + 2, + 3, + 4 + ]); + assert.compareArray(ToNumbers(new targetCtor(fixedLengthWithOffset)), [ + 3, + 4 + ]); + assert.compareArray(ToNumbers(new targetCtor(lengthTracking)), [ + 1, + 2, + 3, + 4 + ]); + assert.compareArray(ToNumbers(new targetCtor(lengthTrackingWithOffset)), [ + 3, + 4 + ]); + + // 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, () => { + new targetCtor(fixedLength); + }); + assert.throws(TypeError, () => { + new targetCtor(fixedLengthWithOffset); + }); + assert.compareArray(ToNumbers(new targetCtor(lengthTracking)), [ + 1, + 2, + 3 + ]); + assert.compareArray(ToNumbers(new targetCtor(lengthTrackingWithOffset)), [3]); + + // Shrink so that the TAs with offset go out of bounds. + rab.resize(1 * sourceCtor.BYTES_PER_ELEMENT); + assert.throws(TypeError, () => { + new targetCtor(fixedLength); + }); + assert.throws(TypeError, () => { + new targetCtor(fixedLengthWithOffset); + }); + assert.compareArray(ToNumbers(new targetCtor(lengthTracking)), [1]); + assert.throws(TypeError, () => { + new targetCtor(lengthTrackingWithOffset); + }); + + // Shrink to zero. + rab.resize(0); + assert.throws(TypeError, () => { + new targetCtor(fixedLength); + }); + assert.throws(TypeError, () => { + new targetCtor(fixedLengthWithOffset); + }); + assert.compareArray(ToNumbers(new targetCtor(lengthTracking)), []); + assert.throws(TypeError, () => { + new targetCtor(lengthTrackingWithOffset); + }); + + // 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 + + assert.compareArray(ToNumbers(new targetCtor(fixedLength)), [ + 1, + 2, + 3, + 4 + ]); + assert.compareArray(ToNumbers(new targetCtor(fixedLengthWithOffset)), [ + 3, + 4 + ]); + assert.compareArray(ToNumbers(new targetCtor(lengthTracking)), [ + 1, + 2, + 3, + 4, + 5, + 6 + ]); + assert.compareArray(ToNumbers(new targetCtor(lengthTrackingWithOffset)), [ + 3, + 4, + 5, + 6 + ]); +}); diff --git a/test/language/destructuring/binding/typedarray-backed-by-resizable-buffer.js b/test/language/destructuring/binding/typedarray-backed-by-resizable-buffer.js new file mode 100644 index 00000000000..13e4df02217 --- /dev/null +++ b/test/language/destructuring/binding/typedarray-backed-by-resizable-buffer.js @@ -0,0 +1,199 @@ +// 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: > + Destructuring assignment on TypedArrays backed by resizable buffer +includes: [compareArray.js, resizableArrayBufferUtils.js] +features: [resizable-arraybuffer] +---*/ + +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); + } + { + let [a, b, c, d, e] = fixedLength; + assert.compareArray(ToNumbers([ + a, + b, + c, + d + ]), [ + 0, + 1, + 2, + 3 + ]); + assert.sameValue(e, undefined); + } + { + let [a, b, c] = fixedLengthWithOffset; + assert.compareArray(ToNumbers([ + a, + b + ]), [ + 2, + 3 + ]); + assert.sameValue(c, undefined); + } + { + let [a, b, c, d, e] = lengthTracking; + assert.compareArray(ToNumbers([ + a, + b, + c, + d + ]), [ + 0, + 1, + 2, + 3 + ]); + assert.sameValue(e, undefined); + } + { + let [a, b, c] = lengthTrackingWithOffset; + assert.compareArray(ToNumbers([ + a, + b + ]), [ + 2, + 3 + ]); + assert.sameValue(c, undefined); + } + + // Shrink so that fixed length TAs go out of bounds. + rab.resize(3 * ctor.BYTES_PER_ELEMENT); + assert.throws(TypeError, () => { + let [a, b, c] = fixedLength; + }); + assert.throws(TypeError, () => { + let [a, b, c] = fixedLengthWithOffset; + }); + { + let [a, b, c, d] = lengthTracking; + assert.compareArray(ToNumbers([ + a, + b, + c + ]), [ + 0, + 1, + 2 + ]); + assert.sameValue(d, undefined); + } + { + let [a, b] = lengthTrackingWithOffset; + assert.compareArray(ToNumbers([a]), [2]); + assert.sameValue(b, undefined); + } + + // Shrink so that the TAs with offset go out of bounds. + rab.resize(1 * ctor.BYTES_PER_ELEMENT); + assert.throws(TypeError, () => { + let [a, b, c] = fixedLength; + }); + assert.throws(TypeError, () => { + let [a, b, c] = fixedLengthWithOffset; + }); + assert.throws(TypeError, () => { + let [a, b, c] = lengthTrackingWithOffset; + }); + { + let [a, b] = lengthTracking; + assert.compareArray(ToNumbers([a]), [0]); + assert.sameValue(b, undefined); + } + + // Shrink to 0. + rab.resize(0); + assert.throws(TypeError, () => { + let [a, b, c] = fixedLength; + }); + assert.throws(TypeError, () => { + let [a, b, c] = fixedLengthWithOffset; + }); + assert.throws(TypeError, () => { + let [a, b, c] = lengthTrackingWithOffset; + }); + { + let [a] = lengthTracking; + assert.sameValue(a, undefined); + } + + // Grow so that all TAs are back in-bounds. The new memory is zeroed. + rab.resize(6 * ctor.BYTES_PER_ELEMENT); + { + let [a, b, c, d, e] = fixedLength; + assert.compareArray(ToNumbers([ + a, + b, + c, + d + ]), [ + 0, + 0, + 0, + 0 + ]); + assert.sameValue(e, undefined); + } + { + let [a, b, c] = fixedLengthWithOffset; + assert.compareArray(ToNumbers([ + a, + b + ]), [ + 0, + 0 + ]); + assert.sameValue(c, undefined); + } + { + let [a, b, c, d, e, f, g] = lengthTracking; + assert.compareArray(ToNumbers([ + a, + b, + c, + d, + e, + f + ]), [ + 0, + 0, + 0, + 0, + 0, + 0 + ]); + assert.sameValue(g, undefined); + } + { + let [a, b, c, d, e] = lengthTrackingWithOffset; + assert.compareArray(ToNumbers([ + a, + b, + c, + d + ]), [ + 0, + 0, + 0, + 0 + ]); + assert.sameValue(e, undefined); + } +} 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/language/statements/for-of/typedarray-backed-by-resizable-buffer-grow-before-end.js b/test/language/statements/for-of/typedarray-backed-by-resizable-buffer-grow-before-end.js new file mode 100644 index 00000000000..e8b56e2510c --- /dev/null +++ b/test/language/statements/for-of/typedarray-backed-by-resizable-buffer-grow-before-end.js @@ -0,0 +1,57 @@ +// 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: > + 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, resizableArrayBufferUtils.js] +---*/ + +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); + } + return rab; +} + +// 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; + + // Create various different styles of TypedArrays with the RAB as the + // backing store and iterate them. + + let rab = CreateRab(buffer_byte_length, ctor); + const length_tracking_ta = new ctor(rab); + { + let expected = []; + for (let i = 0; i < no_elements; ++i) { + expected.push(i % 128); + } + // After resizing, the new memory contains zeros. + for (let i = 0; i < no_elements; ++i) { + expected.push(0); + } + TestIterationAndResize(length_tracking_ta, expected, rab, no_elements, buffer_byte_length * 2); + } + rab = CreateRab(buffer_byte_length, ctor); + const length_tracking_ta_with_offset = new ctor(rab, byte_offset); + { + let expected = []; + for (let i = offset; i < no_elements; ++i) { + expected.push(i % 128); + } + for (let i = 0; i < no_elements; ++i) { + expected.push(0); + } + TestIterationAndResize(length_tracking_ta_with_offset, expected, rab, no_elements - offset, buffer_byte_length * 2); + } +} diff --git a/test/language/statements/for-of/typedarray-backed-by-resizable-buffer-grow-mid-iteration.js b/test/language/statements/for-of/typedarray-backed-by-resizable-buffer-grow-mid-iteration.js new file mode 100644 index 00000000000..243c67dd9e4 --- /dev/null +++ b/test/language/statements/for-of/typedarray-backed-by-resizable-buffer-grow-mid-iteration.js @@ -0,0 +1,71 @@ +// 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: > + 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, resizableArrayBufferUtils.js] +---*/ + +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); + } + return rab; +} + +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; + + // Create various different styles of TypedArrays with the RAB as the + // backing store and iterate them. + + // Fixed-length TAs aren't affected by resizing. + let rab = CreateRab(buffer_byte_length, ctor); + const ta = new ctor(rab, 0, 3); + TestIterationAndResize(ta, [ + 0, + 1, + 2 + ], rab, 2, buffer_byte_length * 2); + rab = CreateRab(buffer_byte_length, ctor); + const ta_with_offset = new ctor(rab, byte_offset, 3); + TestIterationAndResize(ta_with_offset, [ + 2, + 3, + 4 + ], rab, 2, buffer_byte_length * 2); + rab = CreateRab(buffer_byte_length, ctor); + const length_tracking_ta = new ctor(rab); + { + let expected = []; + for (let i = 0; i < no_elements; ++i) { + expected.push(i % 128); + } + for (let i = 0; i < no_elements; ++i) { + // After resizing, the new memory contains zeros. + expected.push(0); + } + TestIterationAndResize(length_tracking_ta, expected, rab, 2, buffer_byte_length * 2); + } + rab = CreateRab(buffer_byte_length, ctor); + const length_tracking_ta_with_offset = new ctor(rab, byte_offset); + { + let expected = []; + for (let i = offset; i < no_elements; ++i) { + expected.push(i % 128); + } + for (let i = 0; i < no_elements; ++i) { + expected.push(0); + } + TestIterationAndResize(length_tracking_ta_with_offset, expected, rab, 2, buffer_byte_length * 2); + } +} diff --git a/test/language/statements/for-of/typedarray-backed-by-resizable-buffer-shrink-mid-iteration.js b/test/language/statements/for-of/typedarray-backed-by-resizable-buffer-shrink-mid-iteration.js new file mode 100644 index 00000000000..53cf49f967c --- /dev/null +++ b/test/language/statements/for-of/typedarray-backed-by-resizable-buffer-shrink-mid-iteration.js @@ -0,0 +1,86 @@ +// 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: > + 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, resizableArrayBufferUtils.js] +---*/ + +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); + } + return rab; +} + +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; + + // Create various different styles of TypedArrays with the RAB as the + // backing store and iterate them. + + // Fixed-length TAs aren't affected by shrinking if they stay in-bounds. + // They appear detached after shrinking out of bounds. + let rab = CreateRab(buffer_byte_length, ctor); + const ta1 = new ctor(rab, 0, 3); + TestIterationAndResize(ta1, [ + 0, + 1, + 2 + ], rab, 2, buffer_byte_length / 2); + rab = CreateRab(buffer_byte_length, ctor); + const ta2 = new ctor(rab, 0, 3); + assert.throws(TypeError, () => { + TestIterationAndResize(ta2, null, rab, 2, 1); + }); + rab = CreateRab(buffer_byte_length, ctor); + const ta_with_offset1 = new ctor(rab, byte_offset, 3); + TestIterationAndResize(ta_with_offset1, [ + 2, + 3, + 4 + ], rab, 2, buffer_byte_length / 2); + rab = CreateRab(buffer_byte_length, ctor); + const ta_with_offset2 = new ctor(rab, byte_offset, 3); + assert.throws(TypeError, () => { + TestIterationAndResize(ta_with_offset2, null, rab, 2, 0); + }); + + // Length-tracking TA with offset 0 doesn't throw, but its length gracefully + // reduces too. + rab = CreateRab(buffer_byte_length, ctor); + const length_tracking_ta = new ctor(rab); + TestIterationAndResize(length_tracking_ta, [ + 0, + 1, + 2, + 3, + 4 + ], rab, 2, buffer_byte_length / 2); + + // Length-tracking TA appears detached when the buffer is resized beyond the + // offset. + rab = CreateRab(buffer_byte_length, ctor); + const length_tracking_ta_with_offset = new ctor(rab, byte_offset); + assert.throws(TypeError, () => { + TestIterationAndResize(length_tracking_ta_with_offset, null, rab, 2, byte_offset / 2); + }); + + // Length-tracking TA reduces its length gracefully when the buffer is + // resized to barely cover the offset. + rab = CreateRab(buffer_byte_length, ctor); + const length_tracking_ta_with_offset2 = new ctor(rab, byte_offset); + TestIterationAndResize(length_tracking_ta_with_offset2, [ + 2, + 3 + ], rab, 2, byte_offset); +} diff --git a/test/language/statements/for-of/typedarray-backed-by-resizable-buffer-shrink-to-zero-mid-iteration.js b/test/language/statements/for-of/typedarray-backed-by-resizable-buffer-shrink-to-zero-mid-iteration.js new file mode 100644 index 00000000000..05393f707db --- /dev/null +++ b/test/language/statements/for-of/typedarray-backed-by-resizable-buffer-shrink-to-zero-mid-iteration.js @@ -0,0 +1,58 @@ +// 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: > + 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, resizableArrayBufferUtils.js] +---*/ + +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); + } + return rab; +} + +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; + + // Create various different styles of TypedArrays with the RAB as the + // backing store and iterate them. + + // Fixed-length TAs appear detached after shrinking out of bounds. + let rab = CreateRab(buffer_byte_length, ctor); + const ta = new ctor(rab, 0, 3); + assert.throws(TypeError, () => { + TestIterationAndResize(ta, null, rab, 2, 0); + }); + rab = CreateRab(buffer_byte_length, ctor); + const ta_with_offset = new ctor(rab, byte_offset, 3); + assert.throws(TypeError, () => { + TestIterationAndResize(ta_with_offset, null, rab, 2, 0); + }); + + // Length-tracking TA with offset 0 doesn't throw, but its length gracefully + // goes to zero too. + rab = CreateRab(buffer_byte_length, ctor); + const length_tracking_ta = new ctor(rab); + TestIterationAndResize(length_tracking_ta, [ + 0, + 1 + ], rab, 2, 0); + + // Length-tracking TA which is resized beyond the offset appars detached. + rab = CreateRab(buffer_byte_length, ctor); + const length_tracking_ta_with_offset = new ctor(rab, byte_offset); + assert.throws(TypeError, () => { + TestIterationAndResize(length_tracking_ta_with_offset, null, rab, 2, 0); + }); +} diff --git a/test/language/statements/for-of/typedarray-backed-by-resizable-buffer.js b/test/language/statements/for-of/typedarray-backed-by-resizable-buffer.js new file mode 100644 index 00000000000..fcdfab5ceea --- /dev/null +++ b/test/language/statements/for-of/typedarray-backed-by-resizable-buffer.js @@ -0,0 +1,70 @@ +// 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: > + TypedArrays backed by resizable buffers are iterable with for-of +features: [resizable-arraybuffer] +includes: [compareArray.js, resizableArrayBufferUtils.js] +---*/ + +function CollectValues(ta) { + let values = []; + for (const value of ta) { + values.push(Number(value)); + } + 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. + const rab = CreateResizableArrayBuffer(buffer_byte_length, 2 * buffer_byte_length); + const byte_offset = offset * ctor.BYTES_PER_ELEMENT; + + // 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); + } + + // Create various different styles of TypedArrays with the RAB as the + // backing store and iterate them. + const ta = new ctor(rab, 0, 3); + assert.compareArray(CollectValues(ta), [ + 0, + 1, + 2 + ]); + const empty_ta = new ctor(rab, 0, 0); + assert.compareArray(CollectValues(empty_ta), []); + const ta_with_offset = new ctor(rab, byte_offset, 3); + assert.compareArray(CollectValues(ta_with_offset), [ + 2, + 3, + 4 + ]); + const empty_ta_with_offset = new ctor(rab, byte_offset, 0); + 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); + } + assert.compareArray(CollectValues(length_tracking_ta), expected); + } + const length_tracking_ta_with_offset = new ctor(rab, byte_offset); + { + let expected = []; + for (let i = offset; i < no_elements; ++i) { + expected.push(i % 128); + } + assert.compareArray(CollectValues(length_tracking_ta_with_offset), expected); + } + const empty_length_tracking_ta_with_offset = new ctor(rab, buffer_byte_length); + assert.compareArray(CollectValues(empty_length_tracking_ta_with_offset), []); +} From b69e9d5e722291dcb6ada5582c71887133626c63 Mon Sep 17 00:00:00 2001 From: Rezvan Mahdavi Hezaveh Date: Tue, 27 Aug 2024 11:24:40 -0700 Subject: [PATCH 06/37] [explicit-resource-management] Add AsyncDisposableStack builtins This CL adds builtin methods for developer exposed AsyncDisposableStack object. Bug: 42203814 Change-Id: I1f16a3bcb80c71a4f33e4ae028f1737c3502dabe Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/5715141 Reviewed-by: Shu-yu Guo Commit-Queue: Rezvan Mahdavi Hezaveh Cr-Commit-Position: refs/heads/main@{#95838} --- ...able-stack-adopt-and-defer-not-callable.js | 26 +++++++++ ...isposable-stack-adopt-on-disposed-stack.js | 22 ++++++++ .../async-disposable-stack-adopt.js | 35 ++++++++++++ ...sable-stack-async-dispose-symbol-throws.js | 29 ++++++++++ ...posable-stack-constructor-and-prototype.js | 21 +++++++ ...isposable-stack-defer-on-disposed-stack.js | 21 +++++++ .../async-disposable-stack-defer.js | 31 ++++++++++ ...posable-stack-dispose-on-disposed-stack.js | 41 ++++++++++++++ ...ync-disposable-stack-dispose-sync-calls.js | 39 +++++++++++++ ...e-stack-dispose-throws-suppressed-error.js | 56 +++++++++++++++++++ .../async-disposable-stack-dispose.js | 29 ++++++++++ .../async-disposable-stack-disposed-getter.js | 41 ++++++++++++++ ...disposable-stack-move-on-disposed-stack.js | 22 ++++++++ .../async-disposable-stack-move.js | 28 ++++++++++ ...-disposable-stack-use-on-disposed-stack.js | 27 +++++++++ .../async-disposable-stack-use.js | 56 +++++++++++++++++++ 16 files changed, 524 insertions(+) create mode 100644 test/staging/explicit-resource-management/async-disposable-stack-adopt-and-defer-not-callable.js create mode 100644 test/staging/explicit-resource-management/async-disposable-stack-adopt-on-disposed-stack.js create mode 100644 test/staging/explicit-resource-management/async-disposable-stack-adopt.js create mode 100644 test/staging/explicit-resource-management/async-disposable-stack-async-dispose-symbol-throws.js create mode 100644 test/staging/explicit-resource-management/async-disposable-stack-constructor-and-prototype.js create mode 100644 test/staging/explicit-resource-management/async-disposable-stack-defer-on-disposed-stack.js create mode 100644 test/staging/explicit-resource-management/async-disposable-stack-defer.js create mode 100644 test/staging/explicit-resource-management/async-disposable-stack-dispose-on-disposed-stack.js create mode 100644 test/staging/explicit-resource-management/async-disposable-stack-dispose-sync-calls.js create mode 100644 test/staging/explicit-resource-management/async-disposable-stack-dispose-throws-suppressed-error.js create mode 100644 test/staging/explicit-resource-management/async-disposable-stack-dispose.js create mode 100644 test/staging/explicit-resource-management/async-disposable-stack-disposed-getter.js create mode 100644 test/staging/explicit-resource-management/async-disposable-stack-move-on-disposed-stack.js create mode 100644 test/staging/explicit-resource-management/async-disposable-stack-move.js create mode 100644 test/staging/explicit-resource-management/async-disposable-stack-use-on-disposed-stack.js create mode 100644 test/staging/explicit-resource-management/async-disposable-stack-use.js 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'); From d62fa93c8f9ce5e687c0bbaa5d2b59670ab2ff60 Mon Sep 17 00:00:00 2001 From: Rezvan Mahdavi Hezaveh Date: Wed, 28 Aug 2024 10:23:32 -0700 Subject: [PATCH 07/37] [explicit-resource-management] Complete exception handling This CL completes the exception handling (promise rejection) for async explicit resource management. Bug: 42203814 Change-Id: Ide4f05df14f74e68b7aa120230f1b1ae33ce8adc Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/5692882 Commit-Queue: Rezvan Mahdavi Hezaveh Reviewed-by: Shu-yu Guo Cr-Commit-Position: refs/heads/main@{#95748} --- ...using-dispose-method-throws-after-await.js | 25 ++++++++++ .../await-using-dispose-method-throws.js | 24 +++++++++ .../await-using-mixed-async-throws.js | 31 ++++++++++++ .../await-using-mixed-sync-throws.js | 31 ++++++++++++ ...sed-error-from-sync-and-async-disposals.js | 48 ++++++++++++++++++ ...ait-using-mixed-throws-suppressed-error.js | 49 ++++++++++++++++++ .../await-using-throws-from-symbol-dispose.js | 25 ++++++++++ ...-throws-suppressed-error-from-disposals.js | 50 +++++++++++++++++++ ...-suppressed-error-from-try-and-disposal.js | 41 +++++++++++++++ ...ng-throws-suppressed-error-of-undefined.js | 47 +++++++++++++++++ .../await-using-user-code-throws-after.js | 25 ++++++++++ .../await-using-user-code-throws-before.js | 26 ++++++++++ ...wait-using-with-no-async-dispose-method.js | 2 - 13 files changed, 422 insertions(+), 2 deletions(-) create mode 100644 test/staging/explicit-resource-management/await-using-dispose-method-throws-after-await.js create mode 100644 test/staging/explicit-resource-management/await-using-dispose-method-throws.js create mode 100644 test/staging/explicit-resource-management/await-using-mixed-async-throws.js create mode 100644 test/staging/explicit-resource-management/await-using-mixed-sync-throws.js create mode 100644 test/staging/explicit-resource-management/await-using-mixed-throws-suppressed-error-from-sync-and-async-disposals.js create mode 100644 test/staging/explicit-resource-management/await-using-mixed-throws-suppressed-error.js create mode 100644 test/staging/explicit-resource-management/await-using-throws-from-symbol-dispose.js create mode 100644 test/staging/explicit-resource-management/await-using-throws-suppressed-error-from-disposals.js create mode 100644 test/staging/explicit-resource-management/await-using-throws-suppressed-error-from-try-and-disposal.js create mode 100644 test/staging/explicit-resource-management/await-using-throws-suppressed-error-of-undefined.js create mode 100644 test/staging/explicit-resource-management/await-using-user-code-throws-after.js create mode 100644 test/staging/explicit-resource-management/await-using-user-code-throws-before.js 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-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 index 3bb5087a9be..0720b136be2 100644 --- 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 @@ -13,10 +13,8 @@ asyncTest(async function() { let values = []; async function TestUsingWithoutDisposeMethod() { - { await using x = {value: 1}; values.push(43); - } }; await assert.throwsAsync( TypeError, () => TestUsingWithoutDisposeMethod(), 'No dispose method'); From d012a4d0eff091f3c8c8c538cc5ea50db046261f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Nicol=C3=B2=20Ribaudo?= Date: Mon, 2 Sep 2024 17:39:12 +0200 Subject: [PATCH 08/37] Add test for asi between `get`/`set` field and generator (#4189) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: André Bargull Co-authored-by: Linus Groh --- ...eld-named-get-followed-by-generator-asi.js | 63 +++++++++++++++++++ ...eld-named-set-followed-by-generator-asi.js | 63 +++++++++++++++++++ 2 files changed, 126 insertions(+) create mode 100644 test/language/statements/class/elements/syntax/valid/grammar-field-named-get-followed-by-generator-asi.js create mode 100644 test/language/statements/class/elements/syntax/valid/grammar-field-named-set-followed-by-generator-asi.js 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" +); From fc49c9ce163dcf501bb0457f0521900cd744cbda Mon Sep 17 00:00:00 2001 From: Ioanna M Dimitriou H Date: Tue, 3 Sep 2024 16:23:23 +0200 Subject: [PATCH 09/37] Move function MayNeedBigInt to RAB helper file and inline WriteToTypedArray. (#4211) --- harness/resizableArrayBufferUtils.js | 21 ++++++++++--------- .../at/typed-array-resizable-buffer.js | 2 +- .../prototype/copyWithin/resizable-buffer.js | 18 ++++++++-------- .../prototype/entries/resizable-buffer.js | 4 ++-- .../Array/prototype/every/resizable-buffer.js | 4 ++-- .../prototype/filter/resizable-buffer.js | 4 ++-- .../Array/prototype/find/resizable-buffer.js | 8 +++---- .../prototype/findIndex/resizable-buffer.js | 8 +++---- .../prototype/findLast/resizable-buffer.js | 8 +++---- .../findLastIndex/resizable-buffer.js | 8 +++---- .../prototype/forEach/resizable-buffer.js | 4 ++-- .../coerced-searchelement-fromindex-resize.js | 11 ++-------- .../prototype/includes/resizable-buffer.js | 11 ++-------- .../coerced-searchelement-fromindex-grow.js | 11 ++-------- .../coerced-searchelement-fromindex-shrink.js | 9 +------- .../prototype/indexOf/resizable-buffer.js | 11 ++-------- .../Array/prototype/join/resizable-buffer.js | 4 ++-- .../Array/prototype/keys/resizable-buffer.js | 4 ++-- .../lastIndexOf/coerced-position-grow.js | 9 +------- .../lastIndexOf/coerced-position-shrink.js | 9 +------- .../prototype/lastIndexOf/resizable-buffer.js | 11 ++-------- .../Array/prototype/map/resizable-buffer.js | 4 ++-- .../prototype/reduce/resizable-buffer.js | 4 ++-- .../prototype/reduceRight/resizable-buffer.js | 4 ++-- .../prototype/reverse/resizable-buffer.js | 2 +- .../prototype/slice/coerced-start-end-grow.js | 4 ++-- .../slice/coerced-start-end-shrink.js | 4 ++-- .../Array/prototype/slice/resizable-buffer.js | 2 +- .../Array/prototype/some/resizable-buffer.js | 4 ++-- .../Array/prototype/sort/comparefn-grow.js | 2 +- .../sort/comparefn-resizable-buffer.js | 2 +- .../Array/prototype/sort/comparefn-shrink.js | 2 +- .../resizable-buffer-default-comparator.js | 2 +- .../toLocaleString/resizable-buffer.js | 4 ++-- .../prototype/values/resizable-buffer.js | 4 ++-- .../prototype/apply/resizable-buffer.js | 2 +- .../typedarray-backed-by-resizable-buffer.js | 8 ------- .../Object/defineProperty/coerced-P-grow.js | 8 ------- .../Object/defineProperty/coerced-P-shrink.js | 8 ------- .../typedarray-backed-by-resizable-buffer.js | 8 ------- .../TypedArray/out-of-bounds-get-and-set.js | 8 ------- .../prototype/at/resizable-buffer.js | 2 +- .../coerced-target-start-end-shrink.js | 4 ++-- .../copyWithin/coerced-target-start-grow.js | 8 +++---- .../prototype/copyWithin/resizable-buffer.js | 18 ++++++++-------- .../prototype/entries/resizable-buffer.js | 4 ++-- .../prototype/every/resizable-buffer.js | 4 ++-- .../prototype/filter/resizable-buffer.js | 4 ++-- .../prototype/find/resizable-buffer.js | 8 +++---- .../prototype/findIndex/resizable-buffer.js | 8 +++---- .../prototype/findLast/resizable-buffer.js | 8 +++---- .../findLastIndex/resizable-buffer.js | 8 +++---- .../prototype/forEach/resizable-buffer.js | 4 ++-- .../coerced-searchelement-fromindex-resize.js | 11 ++-------- .../prototype/includes/resizable-buffer.js | 11 ++-------- .../coerced-searchelement-fromindex-grow.js | 11 ++-------- .../coerced-searchelement-fromindex-shrink.js | 9 +------- .../prototype/indexOf/resizable-buffer.js | 11 ++-------- .../prototype/join/resizable-buffer.js | 4 ++-- .../prototype/keys/resizable-buffer.js | 4 ++-- .../lastIndexOf/coerced-position-grow.js | 9 +------- .../lastIndexOf/coerced-position-shrink.js | 9 +------- .../prototype/lastIndexOf/resizable-buffer.js | 11 ++-------- .../prototype/map/resizable-buffer.js | 4 ++-- .../map/speciesctor-resizable-buffer-grow.js | 4 ++-- .../speciesctor-resizable-buffer-shrink.js | 2 +- .../prototype/reduce/resizable-buffer.js | 4 ++-- .../prototype/reduceRight/resizable-buffer.js | 4 ++-- .../prototype/reverse/resizable-buffer.js | 2 +- ...rray-arg-src-backed-by-resizable-buffer.js | 4 ++-- .../prototype/slice/coerced-start-end-grow.js | 4 ++-- .../slice/coerced-start-end-shrink.js | 4 ++-- .../prototype/slice/resizable-buffer.js | 2 +- .../prototype/slice/speciesctor-resize.js | 6 +++--- .../prototype/some/resizable-buffer.js | 4 ++-- .../prototype/sort/comparefn-grow.js | 2 +- .../sort/comparefn-resizable-buffer.js | 2 +- .../prototype/sort/comparefn-shrink.js | 2 +- .../resizable-buffer-default-comparator.js | 2 +- .../prototype/subarray/resizable-buffer.js | 4 ++-- .../toLocaleString/resizable-buffer.js | 4 ++-- .../prototype/values/resizable-buffer.js | 4 ++-- .../src-typedarray-resizable-buffer.js | 4 ++-- .../typedarray-backed-by-resizable-buffer.js | 2 +- ...ked-by-resizable-buffer-grow-before-end.js | 2 +- ...-by-resizable-buffer-grow-mid-iteration.js | 2 +- ...y-resizable-buffer-shrink-mid-iteration.js | 2 +- ...ble-buffer-shrink-to-zero-mid-iteration.js | 2 +- .../typedarray-backed-by-resizable-buffer.js | 2 +- 89 files changed, 182 insertions(+), 333 deletions(-) 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/Function/prototype/apply/resizable-buffer.js b/test/built-ins/Function/prototype/apply/resizable-buffer.js index 2e93f387cbc..2487870667c 100644 --- a/test/built-ins/Function/prototype/apply/resizable-buffer.js +++ b/test/built-ins/Function/prototype/apply/resizable-buffer.js @@ -19,7 +19,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/Object/defineProperties/typedarray-backed-by-resizable-buffer.js b/test/built-ins/Object/defineProperties/typedarray-backed-by-resizable-buffer.js index 46901a08749..fa3c5977012 100644 --- a/test/built-ins/Object/defineProperties/typedarray-backed-by-resizable-buffer.js +++ b/test/built-ins/Object/defineProperties/typedarray-backed-by-resizable-buffer.js @@ -10,14 +10,6 @@ includes: [compareArray.js, resizableArrayBufferUtils.js] features: [resizable-arraybuffer] ---*/ -function MayNeedBigInt(ta, value) { - if (ta instanceof BigInt64Array || ta instanceof BigUint64Array) { - return BigInt(value); - } else { - return value; - } -} - function DefinePropertiesMayNeedBigInt(ta, index, value) { const values = {}; values[index] = { value: MayNeedBigInt(ta, value) }; diff --git a/test/built-ins/Object/defineProperty/coerced-P-grow.js b/test/built-ins/Object/defineProperty/coerced-P-grow.js index 106de77d256..9a84f8770c8 100644 --- a/test/built-ins/Object/defineProperty/coerced-P-grow.js +++ b/test/built-ins/Object/defineProperty/coerced-P-grow.js @@ -11,14 +11,6 @@ includes: [compareArray.js, resizableArrayBufferUtils.js] features: [resizable-arraybuffer] ---*/ -function MayNeedBigInt(ta, value) { - if (ta instanceof BigInt64Array || ta instanceof BigUint64Array) { - return BigInt(value); - } else { - return value; - } -} - // Fixed length. for (let ctor of ctors) { const rab = CreateResizableArrayBuffer(4 * ctor.BYTES_PER_ELEMENT, 8 * ctor.BYTES_PER_ELEMENT); diff --git a/test/built-ins/Object/defineProperty/coerced-P-shrink.js b/test/built-ins/Object/defineProperty/coerced-P-shrink.js index bcc3019d5a9..55ac63ae475 100644 --- a/test/built-ins/Object/defineProperty/coerced-P-shrink.js +++ b/test/built-ins/Object/defineProperty/coerced-P-shrink.js @@ -11,14 +11,6 @@ includes: [compareArray.js, resizableArrayBufferUtils.js] features: [resizable-arraybuffer] ---*/ -function MayNeedBigInt(ta, value) { - if (ta instanceof BigInt64Array || ta instanceof BigUint64Array) { - return BigInt(value); - } else { - return value; - } -} - // Fixed length. for (let ctor of ctors) { const rab = CreateResizableArrayBuffer(4 * ctor.BYTES_PER_ELEMENT, 8 * ctor.BYTES_PER_ELEMENT); 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 index 155fd50445a..9c031dc4ac0 100644 --- a/test/built-ins/Object/defineProperty/typedarray-backed-by-resizable-buffer.js +++ b/test/built-ins/Object/defineProperty/typedarray-backed-by-resizable-buffer.js @@ -10,14 +10,6 @@ includes: [compareArray.js, resizableArrayBufferUtils.js] features: [resizable-arraybuffer] ---*/ -function MayNeedBigInt(ta, value) { - if (ta instanceof BigInt64Array || ta instanceof BigUint64Array) { - return BigInt(value); - } else { - return value; - } -} - function DefinePropertyMayNeedBigInt(ta, index, value) { Object.defineProperty(ta, index, { value: MayNeedBigInt(ta, value) }); } 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 index 5e3b59c49a0..4d7019ae3a9 100644 --- a/test/built-ins/TypedArray/out-of-bounds-get-and-set.js +++ b/test/built-ins/TypedArray/out-of-bounds-get-and-set.js @@ -10,14 +10,6 @@ includes: [resizableArrayBufferUtils.js] features: [resizable-arraybuffer] ---*/ -function MayNeedBigInt(ta, num) { - if (ta instanceof BigInt64Array || ta instanceof BigUint64Array) { - return BigInt(num); - } else { - return num; - } -} - 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); 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/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/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/built-ins/TypedArrayConstructors/ctors/typedarray-arg/src-typedarray-resizable-buffer.js b/test/built-ins/TypedArrayConstructors/ctors/typedarray-arg/src-typedarray-resizable-buffer.js index 924d3e89439..c5bbd3ee6aa 100644 --- a/test/built-ins/TypedArrayConstructors/ctors/typedarray-arg/src-typedarray-resizable-buffer.js +++ b/test/built-ins/TypedArrayConstructors/ctors/typedarray-arg/src-typedarray-resizable-buffer.js @@ -35,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] @@ -114,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/language/destructuring/binding/typedarray-backed-by-resizable-buffer.js b/test/language/destructuring/binding/typedarray-backed-by-resizable-buffer.js index 13e4df02217..7eb24f2b0ef 100644 --- a/test/language/destructuring/binding/typedarray-backed-by-resizable-buffer.js +++ b/test/language/destructuring/binding/typedarray-backed-by-resizable-buffer.js @@ -19,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/statements/for-of/typedarray-backed-by-resizable-buffer-grow-before-end.js b/test/language/statements/for-of/typedarray-backed-by-resizable-buffer-grow-before-end.js index e8b56e2510c..c9b5108e461 100644 --- a/test/language/statements/for-of/typedarray-backed-by-resizable-buffer-grow-before-end.js +++ b/test/language/statements/for-of/typedarray-backed-by-resizable-buffer-grow-before-end.js @@ -14,7 +14,7 @@ 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; } diff --git a/test/language/statements/for-of/typedarray-backed-by-resizable-buffer-grow-mid-iteration.js b/test/language/statements/for-of/typedarray-backed-by-resizable-buffer-grow-mid-iteration.js index 243c67dd9e4..11e0017924a 100644 --- a/test/language/statements/for-of/typedarray-backed-by-resizable-buffer-grow-mid-iteration.js +++ b/test/language/statements/for-of/typedarray-backed-by-resizable-buffer-grow-mid-iteration.js @@ -14,7 +14,7 @@ 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; } diff --git a/test/language/statements/for-of/typedarray-backed-by-resizable-buffer-shrink-mid-iteration.js b/test/language/statements/for-of/typedarray-backed-by-resizable-buffer-shrink-mid-iteration.js index 53cf49f967c..a4862fd5c62 100644 --- a/test/language/statements/for-of/typedarray-backed-by-resizable-buffer-shrink-mid-iteration.js +++ b/test/language/statements/for-of/typedarray-backed-by-resizable-buffer-shrink-mid-iteration.js @@ -14,7 +14,7 @@ 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; } diff --git a/test/language/statements/for-of/typedarray-backed-by-resizable-buffer-shrink-to-zero-mid-iteration.js b/test/language/statements/for-of/typedarray-backed-by-resizable-buffer-shrink-to-zero-mid-iteration.js index 05393f707db..061b2e0ef8f 100644 --- a/test/language/statements/for-of/typedarray-backed-by-resizable-buffer-shrink-to-zero-mid-iteration.js +++ b/test/language/statements/for-of/typedarray-backed-by-resizable-buffer-shrink-to-zero-mid-iteration.js @@ -14,7 +14,7 @@ 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; } diff --git a/test/language/statements/for-of/typedarray-backed-by-resizable-buffer.js b/test/language/statements/for-of/typedarray-backed-by-resizable-buffer.js index fcdfab5ceea..4d94f3badb9 100644 --- a/test/language/statements/for-of/typedarray-backed-by-resizable-buffer.js +++ b/test/language/statements/for-of/typedarray-backed-by-resizable-buffer.js @@ -28,7 +28,7 @@ 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 From c93ae0ac2f999abffac5989ecd192cb92dec7056 Mon Sep 17 00:00:00 2001 From: Philip Chimento Date: Mon, 15 Jul 2024 16:52:23 -0700 Subject: [PATCH 10/37] Temporal: Tests for disallowed corner case in rounding durations This test covers a normative change to disallow an ambiguous corner case in the options bag for Temporal.Duration.prototype.round(). See https://github.com/tc39/proposal-temporal/pull/2916 --- ...alendar-units-with-increment-disallowed.js | 81 +++++++++++++++++++ 1 file changed, 81 insertions(+) create mode 100644 test/built-ins/Temporal/Duration/prototype/round/round-and-balance-calendar-units-with-increment-disallowed.js 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"); From d9b10790bc4bb5b3e1aa895f11cbd2d31a5ec743 Mon Sep 17 00:00:00 2001 From: Philip Chimento Date: Tue, 16 Jul 2024 10:42:21 -0700 Subject: [PATCH 11/37] Temporal: Tests for corner case in TZDB involving DST transition in 1919 These tests add coverage for a corner case in the TZDB. In spring 1919, the America/Toronto time zone switched to DST at 23:30 on March 30th, skipping an hour ahead to 00:30 on March 31st. This meant that both March 30th and March 31st were 23.5-hour days. See: https://github.com/tc39/proposal-temporal/issues/2910 --- .../dst-skipped-cross-midnight.js | 33 +++++++++++++ .../from/dst-skipped-cross-midnight.js | 24 +++++++++ .../hoursInDay/dst-skipped-cross-midnight.js | 27 ++++++++++ .../round/dst-skipped-cross-midnight.js | 49 +++++++++++++++++++ .../startOfDay/dst-skipped-cross-midnight.js | 20 ++++++++ .../dst-skipped-cross-midnight.js | 25 ++++++++++ 6 files changed, 178 insertions(+) create mode 100644 test/intl402/Temporal/PlainDate/prototype/toZonedDateTime/dst-skipped-cross-midnight.js create mode 100644 test/intl402/Temporal/ZonedDateTime/from/dst-skipped-cross-midnight.js create mode 100644 test/intl402/Temporal/ZonedDateTime/prototype/hoursInDay/dst-skipped-cross-midnight.js create mode 100644 test/intl402/Temporal/ZonedDateTime/prototype/round/dst-skipped-cross-midnight.js create mode 100644 test/intl402/Temporal/ZonedDateTime/prototype/startOfDay/dst-skipped-cross-midnight.js create mode 100644 test/intl402/Temporal/ZonedDateTime/prototype/withPlainTime/dst-skipped-cross-midnight.js 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/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" +); From cff5a6012f23f049a36bd1f79207107b5f0f7f99 Mon Sep 17 00:00:00 2001 From: Aapo Alasuutari Date: Mon, 9 Sep 2024 15:37:00 +0300 Subject: [PATCH 12/37] fix: Use Object.getPrototypeOf to get prototype in `__proto__-fn-name.js` (#4205) --- .../expressions/object/__proto__-fn-name.js | 24 +++++++++---------- 1 file changed, 11 insertions(+), 13 deletions(-) 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__"); From 6f8f6b52613827a4a3d7393fd5aa5d0287296f8a Mon Sep 17 00:00:00 2001 From: Philip Chimento Date: Fri, 6 Sep 2024 12:34:43 -0700 Subject: [PATCH 13/37] Temporal: Tests for ignoring era and eraYear in calendars without eras This tests some of the prose requirements of CalendarResolveFields. See https://github.com/tc39/proposal-temporal/issues/2870 --- .../from/calendar-not-supporting-eras.js | 48 +++++++++++++++++ .../from/calendar-not-supporting-eras.js | 48 +++++++++++++++++ .../from/calendar-not-supporting-eras.js | 30 +++++++++++ .../from/calendar-not-supporting-eras.js | 46 +++++++++++++++++ .../from/calendar-not-supporting-eras.js | 51 +++++++++++++++++++ 5 files changed, 223 insertions(+) create mode 100644 test/intl402/Temporal/PlainDate/from/calendar-not-supporting-eras.js create mode 100644 test/intl402/Temporal/PlainDateTime/from/calendar-not-supporting-eras.js create mode 100644 test/intl402/Temporal/PlainMonthDay/from/calendar-not-supporting-eras.js create mode 100644 test/intl402/Temporal/PlainYearMonth/from/calendar-not-supporting-eras.js create mode 100644 test/intl402/Temporal/ZonedDateTime/from/calendar-not-supporting-eras.js 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/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/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/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/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)"); From 70cdc562e3b3c207843de485e2ffd72ee73978f2 Mon Sep 17 00:00:00 2001 From: Philip Chimento Date: Mon, 9 Sep 2024 11:59:25 -0700 Subject: [PATCH 14/37] Temporal: Adjust era code of Japanese pre-Meiji era As of the current state of the Intl Era and Month Codes proposal, https://tc39.es/proposal-intl-era-monthcode/#sec-temporal-canonicalizeeraincalendar the canonical name of this era is "japanese". See: https://github.com/tc39/proposal-temporal/issues/2901 --- test/staging/Intl402/Temporal/old/japanese-before-era.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) 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); From 98c7e9114e7eb663f895953c3750c6b270660a51 Mon Sep 17 00:00:00 2001 From: Paul Bakker Date: Wed, 11 Sep 2024 11:41:07 +0200 Subject: [PATCH 15/37] Test computed accessor properties and AggregateError constructor without arguments (#4222) --- .../AggregateError/errors-iterabletolist.js | 4 ++++ .../computed-property-names/object/accessor/getter.js | 9 +++++++++ .../computed-property-names/object/accessor/setter.js | 11 ++++++++++- 3 files changed, 23 insertions(+), 1 deletion(-) 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/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;`"); From a9c1c08852622691962bd7d8fd6302f5cfdc6dc2 Mon Sep 17 00:00:00 2001 From: Shu-yu Guo Date: Thu, 12 Sep 2024 05:26:33 -0400 Subject: [PATCH 16/37] Migrate resizable buffer tests out of staging (#3888) Co-authored-by: Ioanna M Dimitriou H --- .../resize/coerced-new-length-detach.js | 30 + .../prototype/apply/resizable-buffer.js | 1 - .../access-out-of-bounds-typed-array.js | 92 --- ...array-fill-parameter-conversion-resizes.js | 109 ---- .../array-sort-with-default-comparison.js | 235 ------- .../at-parameter-conversion-resizes.js | 91 --- test/staging/ArrayBuffer/resizable/at.js | 135 ---- .../resizable/construct-from-typed-array.js | 208 ------- .../resizable/construct-invalid.js | 70 --- .../copy-within-parameter-conversion-grows.js | 114 ---- ...opy-within-parameter-conversion-shrinks.js | 139 ----- .../ArrayBuffer/resizable/destructuring.js | 258 -------- .../entries-keys-values-grow-mid-iteration.js | 299 --------- ...ntries-keys-values-shrink-mid-iteration.js | 244 -------- .../resizable/entries-keys-values.js | 505 --------------- .../resizable/enumerate-elements.js | 55 -- .../resizable/every-grow-mid-iteration.js | 149 ----- .../resizable/every-shrink-mid-iteration.js | 172 ------ .../ArrayBuffer/resizable/every-some.js | 252 -------- .../fill-parameter-conversion-resizes.js | 93 --- .../resizable/filter-grow-mid-iteration.js | 164 ----- .../resizable/filter-shrink-mid-iteration.js | 151 ----- test/staging/ArrayBuffer/resizable/filter.js | 205 ------- ...nd-find-index-find-last-find-last-index.js | 328 ---------- .../resizable/find-grow-mid-iteration.js | 149 ----- .../find-index-grow-mid-iteration.js | 149 ----- .../find-index-shrink-mid-iteration.js | 149 ----- .../resizable/find-last-grow-mid-iteration.js | 149 ----- .../find-last-index-grow-mid-iteration.js | 149 ----- .../find-last-index-shrink-mid-iteration.js | 163 ----- .../find-last-shrink-mid-iteration.js | 149 ----- .../resizable/find-shrink-mid-iteration.js | 149 ----- ...-reduce-reduce-right-grow-mid-iteration.js | 273 --------- ...educe-reduce-right-shrink-mid-iteration.js | 258 -------- .../resizable/for-each-reduce-reduce-right.js | 256 -------- .../ArrayBuffer/resizable/function-apply.js | 156 ----- .../includes-parameter-conversion-resizes.js | 143 ----- .../resizable/includes-special-values.js | 35 -- .../staging/ArrayBuffer/resizable/includes.js | 208 ------- .../index-of-last-index-of-special-values.js | 42 -- .../resizable/index-of-last-index-of.js | 325 ---------- .../index-of-parameter-conversion-grows.js | 119 ---- .../index-of-parameter-conversion-shrinks.js | 130 ---- ...nd-grow-just-before-iteration-would-end.js | 122 ---- ...rate-typed-array-and-grow-mid-iteration.js | 135 ---- ...te-typed-array-and-shrink-mid-iteration.js | 150 ----- ...-array-and-shrink-to-zero-mid-iteration.js | 122 ---- .../resizable/iterate-typed-array.js | 114 ---- .../join-parameter-conversion-grows.js | 85 --- .../join-parameter-conversion-shrinks.js | 89 --- .../resizable/join-to-locale-string.js | 219 ------- ...ast-index-of-parameter-conversion-grows.js | 121 ---- ...t-index-of-parameter-conversion-shrinks.js | 130 ---- .../resizable/length-tracking-1.js | 92 --- .../resizable/length-tracking-2.js | 112 ---- .../resizable/map-grow-mid-iteration.js | 146 ----- .../resizable/map-shrink-mid-iteration.js | 178 ------ .../resizable/map-species-create-grows.js | 131 ---- .../resizable/map-species-create-shrinks.js | 127 ---- ...bject-define-property-define-properties.js | 275 --------- ...ine-property-parameter-conversion-grows.js | 113 ---- ...e-property-parameter-conversion-shrinks.js | 85 --- .../ArrayBuffer/resizable/object-freeze.js | 87 --- .../resizable/oobbehaves-like-detached.js | 31 - .../out-of-bounds-typed-array-and-has.js | 73 --- test/staging/ArrayBuffer/resizable/reverse.js | 269 -------- .../set-grow-target-mid-iteration.js | 188 ------ .../set-shrink-target-mid-iteration.js | 168 ----- .../set-source-length-getter-grows-target.js | 133 ---- ...set-source-length-getter-shrinks-target.js | 215 ------- .../resizable/set-with-resizable-source.js | 288 --------- .../resizable/set-with-resizable-target.js | 576 ------------------ .../slice-parameter-conversion-grows.js | 103 ---- .../slice-parameter-conversion-shrinks.js | 104 ---- .../resizable/slice-species-create-resizes.js | 187 ------ test/staging/ArrayBuffer/resizable/slice.js | 202 ------ .../resizable/some-grow-mid-iteration.js | 150 ----- .../resizable/some-shrink-mid-iteration.js | 172 ------ .../resizable/sort-callback-grows.js | 139 ----- .../resizable/sort-callback-shrinks.js | 141 ----- .../resizable/sort-with-custom-comparison.js | 305 ---------- .../resizable/sort-with-default-comparison.js | 241 -------- .../subarray-parameter-conversion-grows.js | 137 ----- .../subarray-parameter-conversion-shrinks.js | 219 ------- .../staging/ArrayBuffer/resizable/subarray.js | 230 ------- .../ArrayBuffer/resizable/test-copy-within.js | 268 -------- .../ArrayBuffer/resizable/test-fill.js | 239 -------- .../staging/ArrayBuffer/resizable/test-map.js | 243 -------- ...number-prototype-to-locale-string-grows.js | 112 ---- ...mber-prototype-to-locale-string-shrinks.js | 113 ---- .../typed-array-length-and-byte-length.js | 79 --- ...ray-length-when-resized-out-of-bounds-1.js | 77 --- ...ray-length-when-resized-out-of-bounds-2.js | 83 --- .../resizable/typed-array-prototype.js | 53 -- 94 files changed, 30 insertions(+), 15391 deletions(-) create mode 100644 test/built-ins/ArrayBuffer/prototype/resize/coerced-new-length-detach.js delete mode 100644 test/staging/ArrayBuffer/resizable/access-out-of-bounds-typed-array.js delete mode 100644 test/staging/ArrayBuffer/resizable/array-fill-parameter-conversion-resizes.js delete mode 100644 test/staging/ArrayBuffer/resizable/array-sort-with-default-comparison.js delete mode 100644 test/staging/ArrayBuffer/resizable/at-parameter-conversion-resizes.js delete mode 100644 test/staging/ArrayBuffer/resizable/at.js delete mode 100644 test/staging/ArrayBuffer/resizable/construct-from-typed-array.js delete mode 100644 test/staging/ArrayBuffer/resizable/construct-invalid.js delete mode 100644 test/staging/ArrayBuffer/resizable/copy-within-parameter-conversion-grows.js delete mode 100644 test/staging/ArrayBuffer/resizable/copy-within-parameter-conversion-shrinks.js delete mode 100644 test/staging/ArrayBuffer/resizable/destructuring.js delete mode 100644 test/staging/ArrayBuffer/resizable/entries-keys-values-grow-mid-iteration.js delete mode 100644 test/staging/ArrayBuffer/resizable/entries-keys-values-shrink-mid-iteration.js delete mode 100644 test/staging/ArrayBuffer/resizable/entries-keys-values.js delete mode 100644 test/staging/ArrayBuffer/resizable/enumerate-elements.js delete mode 100644 test/staging/ArrayBuffer/resizable/every-grow-mid-iteration.js delete mode 100644 test/staging/ArrayBuffer/resizable/every-shrink-mid-iteration.js delete mode 100644 test/staging/ArrayBuffer/resizable/every-some.js delete mode 100644 test/staging/ArrayBuffer/resizable/fill-parameter-conversion-resizes.js delete mode 100644 test/staging/ArrayBuffer/resizable/filter-grow-mid-iteration.js delete mode 100644 test/staging/ArrayBuffer/resizable/filter-shrink-mid-iteration.js delete mode 100644 test/staging/ArrayBuffer/resizable/filter.js delete mode 100644 test/staging/ArrayBuffer/resizable/find-find-index-find-last-find-last-index.js delete mode 100644 test/staging/ArrayBuffer/resizable/find-grow-mid-iteration.js delete mode 100644 test/staging/ArrayBuffer/resizable/find-index-grow-mid-iteration.js delete mode 100644 test/staging/ArrayBuffer/resizable/find-index-shrink-mid-iteration.js delete mode 100644 test/staging/ArrayBuffer/resizable/find-last-grow-mid-iteration.js delete mode 100644 test/staging/ArrayBuffer/resizable/find-last-index-grow-mid-iteration.js delete mode 100644 test/staging/ArrayBuffer/resizable/find-last-index-shrink-mid-iteration.js delete mode 100644 test/staging/ArrayBuffer/resizable/find-last-shrink-mid-iteration.js delete mode 100644 test/staging/ArrayBuffer/resizable/find-shrink-mid-iteration.js delete mode 100644 test/staging/ArrayBuffer/resizable/for-each-reduce-reduce-right-grow-mid-iteration.js delete mode 100644 test/staging/ArrayBuffer/resizable/for-each-reduce-reduce-right-shrink-mid-iteration.js delete mode 100644 test/staging/ArrayBuffer/resizable/for-each-reduce-reduce-right.js delete mode 100644 test/staging/ArrayBuffer/resizable/function-apply.js delete mode 100644 test/staging/ArrayBuffer/resizable/includes-parameter-conversion-resizes.js delete mode 100644 test/staging/ArrayBuffer/resizable/includes-special-values.js delete mode 100644 test/staging/ArrayBuffer/resizable/includes.js delete mode 100644 test/staging/ArrayBuffer/resizable/index-of-last-index-of-special-values.js delete mode 100644 test/staging/ArrayBuffer/resizable/index-of-last-index-of.js delete mode 100644 test/staging/ArrayBuffer/resizable/index-of-parameter-conversion-grows.js delete mode 100644 test/staging/ArrayBuffer/resizable/index-of-parameter-conversion-shrinks.js delete mode 100644 test/staging/ArrayBuffer/resizable/iterate-typed-array-and-grow-just-before-iteration-would-end.js delete mode 100644 test/staging/ArrayBuffer/resizable/iterate-typed-array-and-grow-mid-iteration.js delete mode 100644 test/staging/ArrayBuffer/resizable/iterate-typed-array-and-shrink-mid-iteration.js delete mode 100644 test/staging/ArrayBuffer/resizable/iterate-typed-array-and-shrink-to-zero-mid-iteration.js delete mode 100644 test/staging/ArrayBuffer/resizable/iterate-typed-array.js delete mode 100644 test/staging/ArrayBuffer/resizable/join-parameter-conversion-grows.js delete mode 100644 test/staging/ArrayBuffer/resizable/join-parameter-conversion-shrinks.js delete mode 100644 test/staging/ArrayBuffer/resizable/join-to-locale-string.js delete mode 100644 test/staging/ArrayBuffer/resizable/last-index-of-parameter-conversion-grows.js delete mode 100644 test/staging/ArrayBuffer/resizable/last-index-of-parameter-conversion-shrinks.js delete mode 100644 test/staging/ArrayBuffer/resizable/length-tracking-1.js delete mode 100644 test/staging/ArrayBuffer/resizable/length-tracking-2.js delete mode 100644 test/staging/ArrayBuffer/resizable/map-grow-mid-iteration.js delete mode 100644 test/staging/ArrayBuffer/resizable/map-shrink-mid-iteration.js delete mode 100644 test/staging/ArrayBuffer/resizable/map-species-create-grows.js delete mode 100644 test/staging/ArrayBuffer/resizable/map-species-create-shrinks.js delete mode 100644 test/staging/ArrayBuffer/resizable/object-define-property-define-properties.js delete mode 100644 test/staging/ArrayBuffer/resizable/object-define-property-parameter-conversion-grows.js delete mode 100644 test/staging/ArrayBuffer/resizable/object-define-property-parameter-conversion-shrinks.js delete mode 100644 test/staging/ArrayBuffer/resizable/object-freeze.js delete mode 100644 test/staging/ArrayBuffer/resizable/oobbehaves-like-detached.js delete mode 100644 test/staging/ArrayBuffer/resizable/out-of-bounds-typed-array-and-has.js delete mode 100644 test/staging/ArrayBuffer/resizable/reverse.js delete mode 100644 test/staging/ArrayBuffer/resizable/set-grow-target-mid-iteration.js delete mode 100644 test/staging/ArrayBuffer/resizable/set-shrink-target-mid-iteration.js delete mode 100644 test/staging/ArrayBuffer/resizable/set-source-length-getter-grows-target.js delete mode 100644 test/staging/ArrayBuffer/resizable/set-source-length-getter-shrinks-target.js delete mode 100644 test/staging/ArrayBuffer/resizable/set-with-resizable-source.js delete mode 100644 test/staging/ArrayBuffer/resizable/set-with-resizable-target.js delete mode 100644 test/staging/ArrayBuffer/resizable/slice-parameter-conversion-grows.js delete mode 100644 test/staging/ArrayBuffer/resizable/slice-parameter-conversion-shrinks.js delete mode 100644 test/staging/ArrayBuffer/resizable/slice-species-create-resizes.js delete mode 100644 test/staging/ArrayBuffer/resizable/slice.js delete mode 100644 test/staging/ArrayBuffer/resizable/some-grow-mid-iteration.js delete mode 100644 test/staging/ArrayBuffer/resizable/some-shrink-mid-iteration.js delete mode 100644 test/staging/ArrayBuffer/resizable/sort-callback-grows.js delete mode 100644 test/staging/ArrayBuffer/resizable/sort-callback-shrinks.js delete mode 100644 test/staging/ArrayBuffer/resizable/sort-with-custom-comparison.js delete mode 100644 test/staging/ArrayBuffer/resizable/sort-with-default-comparison.js delete mode 100644 test/staging/ArrayBuffer/resizable/subarray-parameter-conversion-grows.js delete mode 100644 test/staging/ArrayBuffer/resizable/subarray-parameter-conversion-shrinks.js delete mode 100644 test/staging/ArrayBuffer/resizable/subarray.js delete mode 100644 test/staging/ArrayBuffer/resizable/test-copy-within.js delete mode 100644 test/staging/ArrayBuffer/resizable/test-fill.js delete mode 100644 test/staging/ArrayBuffer/resizable/test-map.js delete mode 100644 test/staging/ArrayBuffer/resizable/to-locale-string-number-prototype-to-locale-string-grows.js delete mode 100644 test/staging/ArrayBuffer/resizable/to-locale-string-number-prototype-to-locale-string-shrinks.js delete mode 100644 test/staging/ArrayBuffer/resizable/typed-array-length-and-byte-length.js delete mode 100644 test/staging/ArrayBuffer/resizable/typed-array-length-when-resized-out-of-bounds-1.js delete mode 100644 test/staging/ArrayBuffer/resizable/typed-array-length-when-resized-out-of-bounds-2.js delete mode 100644 test/staging/ArrayBuffer/resizable/typed-array-prototype.js 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/Function/prototype/apply/resizable-buffer.js b/test/built-ins/Function/prototype/apply/resizable-buffer.js index 2487870667c..8a741dcc674 100644 --- a/test/built-ins/Function/prototype/apply/resizable-buffer.js +++ b/test/built-ins/Function/prototype/apply/resizable-buffer.js @@ -10,7 +10,6 @@ includes: [compareArray.js, resizableArrayBufferUtils.js] features: [resizable-arraybuffer] ---*/ - 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); 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-from-typed-array.js b/test/staging/ArrayBuffer/resizable/construct-from-typed-array.js deleted file mode 100644 index ce43c073546..00000000000 --- a/test/staging/ArrayBuffer/resizable/construct-from-typed-array.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 ConstructFromTypedArray 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 AllBigIntMatchedCtorCombinations(test) { - for (let targetCtor of ctors) { - for (let sourceCtor of ctors) { - if (IsBigIntTypedArray(new targetCtor()) != IsBigIntTypedArray(new sourceCtor())) { - continue; - } - test(targetCtor, sourceCtor); - } - } -} - -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); - 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 - - assert.compareArray(ToNumbers(new targetCtor(fixedLength)), [ - 1, - 2, - 3, - 4 - ]); - assert.compareArray(ToNumbers(new targetCtor(fixedLengthWithOffset)), [ - 3, - 4 - ]); - assert.compareArray(ToNumbers(new targetCtor(lengthTracking)), [ - 1, - 2, - 3, - 4 - ]); - assert.compareArray(ToNumbers(new targetCtor(lengthTrackingWithOffset)), [ - 3, - 4 - ]); - - // 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, () => { - new targetCtor(fixedLength); - }); - assert.throws(TypeError, () => { - new targetCtor(fixedLengthWithOffset); - }); - assert.compareArray(ToNumbers(new targetCtor(lengthTracking)), [ - 1, - 2, - 3 - ]); - assert.compareArray(ToNumbers(new targetCtor(lengthTrackingWithOffset)), [3]); - - // Shrink so that the TAs with offset go out of bounds. - rab.resize(1 * sourceCtor.BYTES_PER_ELEMENT); - assert.throws(TypeError, () => { - new targetCtor(fixedLength); - }); - assert.throws(TypeError, () => { - new targetCtor(fixedLengthWithOffset); - }); - assert.compareArray(ToNumbers(new targetCtor(lengthTracking)), [1]); - assert.throws(TypeError, () => { - new targetCtor(lengthTrackingWithOffset); - }); - - // Shrink to zero. - rab.resize(0); - assert.throws(TypeError, () => { - new targetCtor(fixedLength); - }); - assert.throws(TypeError, () => { - new targetCtor(fixedLengthWithOffset); - }); - assert.compareArray(ToNumbers(new targetCtor(lengthTracking)), []); - assert.throws(TypeError, () => { - new targetCtor(lengthTrackingWithOffset); - }); - - // 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 - - assert.compareArray(ToNumbers(new targetCtor(fixedLength)), [ - 1, - 2, - 3, - 4 - ]); - assert.compareArray(ToNumbers(new targetCtor(fixedLengthWithOffset)), [ - 3, - 4 - ]); - assert.compareArray(ToNumbers(new targetCtor(lengthTracking)), [ - 1, - 2, - 3, - 4, - 5, - 6 - ]); - assert.compareArray(ToNumbers(new targetCtor(lengthTrackingWithOffset)), [ - 3, - 4, - 5, - 6 - ]); -}); 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/destructuring.js b/test/staging/ArrayBuffer/resizable/destructuring.js deleted file mode 100644 index d2592e37f00..00000000000 --- a/test/staging/ArrayBuffer/resizable/destructuring.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 Destructuring 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. - let ta_write = new ctor(rab); - for (let i = 0; i < 4; ++i) { - WriteToTypedArray(ta_write, i, i); - } - { - let [a, b, c, d, e] = fixedLength; - assert.compareArray(ToNumbers([ - a, - b, - c, - d - ]), [ - 0, - 1, - 2, - 3 - ]); - assert.sameValue(e, undefined); - } - { - let [a, b, c] = fixedLengthWithOffset; - assert.compareArray(ToNumbers([ - a, - b - ]), [ - 2, - 3 - ]); - assert.sameValue(c, undefined); - } - { - let [a, b, c, d, e] = lengthTracking; - assert.compareArray(ToNumbers([ - a, - b, - c, - d - ]), [ - 0, - 1, - 2, - 3 - ]); - assert.sameValue(e, undefined); - } - { - let [a, b, c] = lengthTrackingWithOffset; - assert.compareArray(ToNumbers([ - a, - b - ]), [ - 2, - 3 - ]); - assert.sameValue(c, undefined); - } - - // Shrink so that fixed length TAs go out of bounds. - rab.resize(3 * ctor.BYTES_PER_ELEMENT); - assert.throws(TypeError, () => { - let [a, b, c] = fixedLength; - }); - assert.throws(TypeError, () => { - let [a, b, c] = fixedLengthWithOffset; - }); - { - let [a, b, c, d] = lengthTracking; - assert.compareArray(ToNumbers([ - a, - b, - c - ]), [ - 0, - 1, - 2 - ]); - assert.sameValue(d, undefined); - } - { - let [a, b] = lengthTrackingWithOffset; - assert.compareArray(ToNumbers([a]), [2]); - assert.sameValue(b, undefined); - } - - // Shrink so that the TAs with offset go out of bounds. - rab.resize(1 * ctor.BYTES_PER_ELEMENT); - assert.throws(TypeError, () => { - let [a, b, c] = fixedLength; - }); - assert.throws(TypeError, () => { - let [a, b, c] = fixedLengthWithOffset; - }); - assert.throws(TypeError, () => { - let [a, b, c] = lengthTrackingWithOffset; - }); - { - let [a, b] = lengthTracking; - assert.compareArray(ToNumbers([a]), [0]); - assert.sameValue(b, undefined); - } - - // Shrink to 0. - rab.resize(0); - assert.throws(TypeError, () => { - let [a, b, c] = fixedLength; - }); - assert.throws(TypeError, () => { - let [a, b, c] = fixedLengthWithOffset; - }); - assert.throws(TypeError, () => { - let [a, b, c] = lengthTrackingWithOffset; - }); - { - let [a] = lengthTracking; - assert.sameValue(a, undefined); - } - - // Grow so that all TAs are back in-bounds. The new memory is zeroed. - rab.resize(6 * ctor.BYTES_PER_ELEMENT); - { - let [a, b, c, d, e] = fixedLength; - assert.compareArray(ToNumbers([ - a, - b, - c, - d - ]), [ - 0, - 0, - 0, - 0 - ]); - assert.sameValue(e, undefined); - } - { - let [a, b, c] = fixedLengthWithOffset; - assert.compareArray(ToNumbers([ - a, - b - ]), [ - 0, - 0 - ]); - assert.sameValue(c, undefined); - } - { - let [a, b, c, d, e, f, g] = lengthTracking; - assert.compareArray(ToNumbers([ - a, - b, - c, - d, - e, - f - ]), [ - 0, - 0, - 0, - 0, - 0, - 0 - ]); - assert.sameValue(g, undefined); - } - { - let [a, b, c, d, e] = lengthTrackingWithOffset; - assert.compareArray(ToNumbers([ - a, - b, - c, - d - ]), [ - 0, - 0, - 0, - 0 - ]); - assert.sameValue(e, undefined); - } -} 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/function-apply.js b/test/staging/ArrayBuffer/resizable/function-apply.js deleted file mode 100644 index c551f45ffe7..00000000000 --- a/test/staging/ArrayBuffer/resizable/function-apply.js +++ /dev/null @@ -1,156 +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 FunctionApply 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); - const taWrite = new ctor(rab); - for (let i = 0; i < 4; ++i) { - WriteToTypedArray(taWrite, i, i); - } - function func(...args) { - return [...args]; - } - assert.compareArray(ToNumbers(func.apply(null, fixedLength)), [ - 0, - 1, - 2, - 3 - ]); - assert.compareArray(ToNumbers(func.apply(null, fixedLengthWithOffset)), [ - 2, - 3 - ]); - assert.compareArray(ToNumbers(func.apply(null, lengthTracking)), [ - 0, - 1, - 2, - 3 - ]); - assert.compareArray(ToNumbers(func.apply(null, lengthTrackingWithOffset)), [ - 2, - 3 - ]); - - // Shrink so that fixed length TAs go out of bounds. - rab.resize(3 * ctor.BYTES_PER_ELEMENT); - assert.compareArray(ToNumbers(func.apply(null, fixedLength)), []); - assert.compareArray(ToNumbers(func.apply(null, fixedLengthWithOffset)), []); - assert.compareArray(ToNumbers(func.apply(null, lengthTracking)), [ - 0, - 1, - 2 - ]); - assert.compareArray(ToNumbers(func.apply(null, lengthTrackingWithOffset)), [2]); - - // Shrink so that the TAs with offset go out of bounds. - rab.resize(1 * ctor.BYTES_PER_ELEMENT); - assert.compareArray(ToNumbers(func.apply(null, fixedLength)), []); - assert.compareArray(ToNumbers(func.apply(null, fixedLengthWithOffset)), []); - assert.compareArray(ToNumbers(func.apply(null, lengthTracking)), [0]); - assert.compareArray(ToNumbers(func.apply(null, lengthTrackingWithOffset)), []); - - // Shrink to zero. - rab.resize(0); - assert.compareArray(ToNumbers(func.apply(null, fixedLength)), []); - assert.compareArray(ToNumbers(func.apply(null, fixedLengthWithOffset)), []); - assert.compareArray(ToNumbers(func.apply(null, lengthTracking)), []); - assert.compareArray(ToNumbers(func.apply(null, lengthTrackingWithOffset)), []); - - // Grow so that all TAs are back in-bounds. New memory is zeroed. - rab.resize(6 * ctor.BYTES_PER_ELEMENT); - assert.compareArray(ToNumbers(func.apply(null, fixedLength)), [ - 0, - 0, - 0, - 0 - ]); - assert.compareArray(ToNumbers(func.apply(null, fixedLengthWithOffset)), [ - 0, - 0 - ]); - assert.compareArray(ToNumbers(func.apply(null, lengthTracking)), [ - 0, - 0, - 0, - 0, - 0, - 0 - ]); - assert.compareArray(ToNumbers(func.apply(null, lengthTrackingWithOffset)), [ - 0, - 0, - 0, - 0 - ]); -} 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/iterate-typed-array-and-grow-just-before-iteration-would-end.js b/test/staging/ArrayBuffer/resizable/iterate-typed-array-and-grow-just-before-iteration-would-end.js deleted file mode 100644 index 24f30dfe6b4..00000000000 --- a/test/staging/ArrayBuffer/resizable/iterate-typed-array-and-grow-just-before-iteration-would-end.js +++ /dev/null @@ -1,122 +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 IterateTypedArrayAndGrowJustBeforeIterationWouldEnd 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 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); - } - 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 buffer_byte_length = no_elements * ctor.BYTES_PER_ELEMENT; - const byte_offset = offset * ctor.BYTES_PER_ELEMENT; - - // Create various different styles of TypedArrays with the RAB as the - // backing store and iterate them. - - let rab = CreateRab(buffer_byte_length, ctor); - const length_tracking_ta = new ctor(rab); - { - let expected = []; - for (let i = 0; i < no_elements; ++i) { - expected.push(i % 128); - } - // After resizing, the new memory contains zeros. - for (let i = 0; i < no_elements; ++i) { - expected.push(0); - } - TestIterationAndResize(length_tracking_ta, expected, rab, no_elements, buffer_byte_length * 2); - } - rab = CreateRab(buffer_byte_length, ctor); - const length_tracking_ta_with_offset = new ctor(rab, byte_offset); - { - let expected = []; - for (let i = offset; i < no_elements; ++i) { - expected.push(i % 128); - } - for (let i = 0; i < no_elements; ++i) { - expected.push(0); - } - TestIterationAndResize(length_tracking_ta_with_offset, expected, rab, no_elements - offset, buffer_byte_length * 2); - } -} diff --git a/test/staging/ArrayBuffer/resizable/iterate-typed-array-and-grow-mid-iteration.js b/test/staging/ArrayBuffer/resizable/iterate-typed-array-and-grow-mid-iteration.js deleted file mode 100644 index 3441051af02..00000000000 --- a/test/staging/ArrayBuffer/resizable/iterate-typed-array-and-grow-mid-iteration.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 IterateTypedArrayAndGrowMidIteration 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 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); - } - 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 buffer_byte_length = no_elements * ctor.BYTES_PER_ELEMENT; - const byte_offset = offset * ctor.BYTES_PER_ELEMENT; - - // Create various different styles of TypedArrays with the RAB as the - // backing store and iterate them. - - // Fixed-length TAs aren't affected by resizing. - let rab = CreateRab(buffer_byte_length, ctor); - const ta = new ctor(rab, 0, 3); - TestIterationAndResize(ta, [ - 0, - 1, - 2 - ], rab, 2, buffer_byte_length * 2); - rab = CreateRab(buffer_byte_length, ctor); - const ta_with_offset = new ctor(rab, byte_offset, 3); - TestIterationAndResize(ta_with_offset, [ - 2, - 3, - 4 - ], rab, 2, buffer_byte_length * 2); - rab = CreateRab(buffer_byte_length, ctor); - const length_tracking_ta = new ctor(rab); - { - let expected = []; - for (let i = 0; i < no_elements; ++i) { - expected.push(i % 128); - } - for (let i = 0; i < no_elements; ++i) { - // After resizing, the new memory contains zeros. - expected.push(0); - } - TestIterationAndResize(length_tracking_ta, expected, rab, 2, buffer_byte_length * 2); - } - rab = CreateRab(buffer_byte_length, ctor); - const length_tracking_ta_with_offset = new ctor(rab, byte_offset); - { - let expected = []; - for (let i = offset; i < no_elements; ++i) { - expected.push(i % 128); - } - for (let i = 0; i < no_elements; ++i) { - expected.push(0); - } - TestIterationAndResize(length_tracking_ta_with_offset, expected, rab, 2, buffer_byte_length * 2); - } -} diff --git a/test/staging/ArrayBuffer/resizable/iterate-typed-array-and-shrink-mid-iteration.js b/test/staging/ArrayBuffer/resizable/iterate-typed-array-and-shrink-mid-iteration.js deleted file mode 100644 index 8a10f0dbd81..00000000000 --- a/test/staging/ArrayBuffer/resizable/iterate-typed-array-and-shrink-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 IterateTypedArrayAndShrinkMidIteration 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 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); - } - 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 buffer_byte_length = no_elements * ctor.BYTES_PER_ELEMENT; - const byte_offset = offset * ctor.BYTES_PER_ELEMENT; - - // Create various different styles of TypedArrays with the RAB as the - // backing store and iterate them. - - // Fixed-length TAs aren't affected by shrinking if they stay in-bounds. - // They appear detached after shrinking out of bounds. - let rab = CreateRab(buffer_byte_length, ctor); - const ta1 = new ctor(rab, 0, 3); - TestIterationAndResize(ta1, [ - 0, - 1, - 2 - ], rab, 2, buffer_byte_length / 2); - rab = CreateRab(buffer_byte_length, ctor); - const ta2 = new ctor(rab, 0, 3); - assert.throws(TypeError, () => { - TestIterationAndResize(ta2, null, rab, 2, 1); - }); - rab = CreateRab(buffer_byte_length, ctor); - const ta_with_offset1 = new ctor(rab, byte_offset, 3); - TestIterationAndResize(ta_with_offset1, [ - 2, - 3, - 4 - ], rab, 2, buffer_byte_length / 2); - rab = CreateRab(buffer_byte_length, ctor); - const ta_with_offset2 = new ctor(rab, byte_offset, 3); - assert.throws(TypeError, () => { - TestIterationAndResize(ta_with_offset2, null, rab, 2, 0); - }); - - // Length-tracking TA with offset 0 doesn't throw, but its length gracefully - // reduces too. - rab = CreateRab(buffer_byte_length, ctor); - const length_tracking_ta = new ctor(rab); - TestIterationAndResize(length_tracking_ta, [ - 0, - 1, - 2, - 3, - 4 - ], rab, 2, buffer_byte_length / 2); - - // Length-tracking TA appears detached when the buffer is resized beyond the - // offset. - rab = CreateRab(buffer_byte_length, ctor); - const length_tracking_ta_with_offset = new ctor(rab, byte_offset); - assert.throws(TypeError, () => { - TestIterationAndResize(length_tracking_ta_with_offset, null, rab, 2, byte_offset / 2); - }); - - // Length-tracking TA reduces its length gracefully when the buffer is - // resized to barely cover the offset. - rab = CreateRab(buffer_byte_length, ctor); - const length_tracking_ta_with_offset2 = new ctor(rab, byte_offset); - TestIterationAndResize(length_tracking_ta_with_offset2, [ - 2, - 3 - ], rab, 2, byte_offset); -} diff --git a/test/staging/ArrayBuffer/resizable/iterate-typed-array-and-shrink-to-zero-mid-iteration.js b/test/staging/ArrayBuffer/resizable/iterate-typed-array-and-shrink-to-zero-mid-iteration.js deleted file mode 100644 index 4d4df1ad991..00000000000 --- a/test/staging/ArrayBuffer/resizable/iterate-typed-array-and-shrink-to-zero-mid-iteration.js +++ /dev/null @@ -1,122 +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 IterateTypedArrayAndShrinkToZeroMidIteration 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 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); - } - 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 buffer_byte_length = no_elements * ctor.BYTES_PER_ELEMENT; - const byte_offset = offset * ctor.BYTES_PER_ELEMENT; - - // Create various different styles of TypedArrays with the RAB as the - // backing store and iterate them. - - // Fixed-length TAs appear detached after shrinking out of bounds. - let rab = CreateRab(buffer_byte_length, ctor); - const ta = new ctor(rab, 0, 3); - assert.throws(TypeError, () => { - TestIterationAndResize(ta, null, rab, 2, 0); - }); - rab = CreateRab(buffer_byte_length, ctor); - const ta_with_offset = new ctor(rab, byte_offset, 3); - assert.throws(TypeError, () => { - TestIterationAndResize(ta_with_offset, null, rab, 2, 0); - }); - - // Length-tracking TA with offset 0 doesn't throw, but its length gracefully - // goes to zero too. - rab = CreateRab(buffer_byte_length, ctor); - const length_tracking_ta = new ctor(rab); - TestIterationAndResize(length_tracking_ta, [ - 0, - 1 - ], rab, 2, 0); - - // Length-tracking TA which is resized beyond the offset appars detached. - rab = CreateRab(buffer_byte_length, ctor); - const length_tracking_ta_with_offset = new ctor(rab, byte_offset); - assert.throws(TypeError, () => { - TestIterationAndResize(length_tracking_ta_with_offset, null, rab, 2, 0); - }); -} diff --git a/test/staging/ArrayBuffer/resizable/iterate-typed-array.js b/test/staging/ArrayBuffer/resizable/iterate-typed-array.js deleted file mode 100644 index a11fc34de90..00000000000 --- a/test/staging/ArrayBuffer/resizable/iterate-typed-array.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 IterateTypedArray 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; - } -} - -const no_elements = 10; -const offset = 2; -function TestIteration(ta, expected) { - let values = []; - for (const value of ta) { - values.push(Number(value)); - } - assert.compareArray(values, expected); -} -for (let ctor of ctors) { - 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. - const rab = CreateResizableArrayBuffer(buffer_byte_length, 2 * buffer_byte_length); - const byte_offset = offset * ctor.BYTES_PER_ELEMENT; - - // 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); - } - - // 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, [ - 0, - 1, - 2 - ]); - const empty_ta = new ctor(rab, 0, 0); - TestIteration(empty_ta, []); - const ta_with_offset = new ctor(rab, byte_offset, 3); - TestIteration(ta_with_offset, [ - 2, - 3, - 4 - ]); - const empty_ta_with_offset = new ctor(rab, byte_offset, 0); - TestIteration(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); - } - const length_tracking_ta_with_offset = new ctor(rab, byte_offset); - { - let expected = []; - for (let i = offset; i < no_elements; ++i) { - expected.push(i % 128); - } - TestIteration(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, []); -} 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/length-tracking-1.js b/test/staging/ArrayBuffer/resizable/length-tracking-1.js deleted file mode 100644 index de37b6b6b81..00000000000 --- a/test/staging/ArrayBuffer/resizable/length-tracking-1.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 LengthTracking1 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); -let tas = []; -for (let ctor of ctors) { - tas.push(new ctor(rab)); -} -for (let ta of tas) { - assert.sameValue(ta.length, 16 / ta.BYTES_PER_ELEMENT); - assert.sameValue(ta.byteLength, 16); -} -rab.resize(40); -for (let ta of tas) { - assert.sameValue(ta.length, 40 / ta.BYTES_PER_ELEMENT); - assert.sameValue(ta.byteLength, 40); -} -// Resize to a number which is not a multiple of all byte_lengths. -rab.resize(19); -for (let ta of tas) { - const expected_length = Math.floor(19 / ta.BYTES_PER_ELEMENT); - assert.sameValue(ta.length, expected_length); - assert.sameValue(ta.byteLength, expected_length * ta.BYTES_PER_ELEMENT); -} -rab.resize(1); -for (let ta of tas) { - if (ta.BYTES_PER_ELEMENT == 1) { - assert.sameValue(ta.length, 1); - assert.sameValue(ta.byteLength, 1); - } else { - assert.sameValue(ta.length, 0); - assert.sameValue(ta.byteLength, 0); - } -} -rab.resize(0); -for (let ta of tas) { - assert.sameValue(ta.length, 0); - assert.sameValue(ta.byteLength, 0); -} -rab.resize(8); -for (let ta of tas) { - assert.sameValue(ta.length, 8 / ta.BYTES_PER_ELEMENT); - assert.sameValue(ta.byteLength, 8); -} -rab.resize(40); -for (let ta of tas) { - assert.sameValue(ta.length, 40 / ta.BYTES_PER_ELEMENT); - assert.sameValue(ta.byteLength, 40); -} diff --git a/test/staging/ArrayBuffer/resizable/length-tracking-2.js b/test/staging/ArrayBuffer/resizable/length-tracking-2.js deleted file mode 100644 index 796c7e5faf5..00000000000 --- a/test/staging/ArrayBuffer/resizable/length-tracking-2.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 LengthTracking2 test - in V8's mjsunit test typedarray-resizablearraybuffer.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 = []; -for (let ctor of ctors) { - tas.push(new ctor(rab, offset)); -} -for (let ta of tas) { - assert.sameValue(ta.length, (16 - offset) / ta.BYTES_PER_ELEMENT); - assert.sameValue(ta.byteLength, 16 - offset); - assert.sameValue(ta.byteOffset, offset); -} -rab.resize(40); -for (let ta of tas) { - assert.sameValue(ta.length, (40 - offset) / ta.BYTES_PER_ELEMENT); - assert.sameValue(ta.byteLength, 40 - offset); - assert.sameValue(ta.byteOffset, offset); -} -// Resize to a number which is not a multiple of all byte_lengths. -rab.resize(20); -for (let ta of tas) { - const expected_length = Math.floor((20 - offset) / ta.BYTES_PER_ELEMENT); - assert.sameValue(ta.length, expected_length); - assert.sameValue(ta.byteLength, expected_length * ta.BYTES_PER_ELEMENT); - assert.sameValue(ta.byteOffset, offset); -} -// Resize so that all TypedArrays go out of bounds (because of the offset). -rab.resize(7); -for (let ta of tas) { - assert.sameValue(ta.length, 0); - assert.sameValue(ta.byteLength, 0); - assert.sameValue(ta.byteOffset, 0); -} -rab.resize(0); -for (let ta of tas) { - assert.sameValue(ta.length, 0); - assert.sameValue(ta.byteLength, 0); - assert.sameValue(ta.byteOffset, 0); -} -rab.resize(8); -for (let ta of tas) { - assert.sameValue(ta.length, 0); - assert.sameValue(ta.byteLength, 0); - assert.sameValue(ta.byteOffset, offset); -} -// Resize so that the TypedArrays which have element size > 1 go out of bounds -// (because less than 1 full element would fit). -rab.resize(offset + 1); -for (let ta of tas) { - if (ta.BYTES_PER_ELEMENT == 1) { - assert.sameValue(ta.length, 1); - assert.sameValue(ta.byteLength, 1); - assert.sameValue(ta.byteOffset, offset); - } else { - assert.sameValue(ta.length, 0); - assert.sameValue(ta.byteLength, 0); - assert.sameValue(ta.byteOffset, offset); - } -} -rab.resize(40); -for (let ta of tas) { - assert.sameValue(ta.length, (40 - offset) / ta.BYTES_PER_ELEMENT); - assert.sameValue(ta.byteLength, 40 - offset); - assert.sameValue(ta.byteOffset, offset); -} 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/object-freeze.js b/test/staging/ArrayBuffer/resizable/object-freeze.js deleted file mode 100644 index 479ab4bd4f3..00000000000 --- a/test/staging/ArrayBuffer/resizable/object-freeze.js +++ /dev/null @@ -1,87 +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 ObjectFreeze 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 }); -} - -// 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); - 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.throws(TypeError, () => { - Object.freeze(fixedLength); - }); - assert.throws(TypeError, () => { - Object.freeze(fixedLengthWithOffset); - }); - assert.throws(TypeError, () => { - Object.freeze(lengthTracking); - }); - assert.throws(TypeError, () => { - Object.freeze(lengthTrackingWithOffset); - }); -} -// Freezing zero-length TAs doesn't throw. -for (let ctor of ctors) { - const rab = CreateResizableArrayBuffer(4 * ctor.BYTES_PER_ELEMENT, 8 * ctor.BYTES_PER_ELEMENT); - const fixedLength = new ctor(rab, 0, 0); - const fixedLengthWithOffset = new ctor(rab, 2 * ctor.BYTES_PER_ELEMENT, 0); - const lengthTrackingWithOffset = new ctor(rab, 4 * ctor.BYTES_PER_ELEMENT); - Object.freeze(fixedLength); - Object.freeze(fixedLengthWithOffset); - Object.freeze(lengthTrackingWithOffset); -} -// If the buffer has been resized to make length-tracking TAs zero-length, -// freezing them also doesn't throw. -for (let ctor of ctors) { - const rab = CreateResizableArrayBuffer(4 * ctor.BYTES_PER_ELEMENT, 8 * ctor.BYTES_PER_ELEMENT); - const lengthTracking = new ctor(rab); - const lengthTrackingWithOffset = new ctor(rab, 2 * ctor.BYTES_PER_ELEMENT); - rab.resize(2 * ctor.BYTES_PER_ELEMENT); - Object.freeze(lengthTrackingWithOffset); - rab.resize(0 * ctor.BYTES_PER_ELEMENT); - Object.freeze(lengthTracking); -} 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__); -} From 4bdf9782207d12dfd0551bb6f30a2021a6f987cd Mon Sep 17 00:00:00 2001 From: Mathias Bynens Date: Thu, 12 Sep 2024 13:49:27 +0200 Subject: [PATCH 17/37] Add tests for Unicode v16 Identifier{Start,Part} Issue: https://github.com/tc39/ecma262/issues/3425 . --- .../part-unicode-10.0.0-class-escaped.js | 2 +- .../identifiers/part-unicode-10.0.0-class.js | 2 +- .../part-unicode-10.0.0-escaped.js | 2 +- .../identifiers/part-unicode-10.0.0.js | 2 +- .../part-unicode-11.0.0-class-escaped.js | 2 +- .../identifiers/part-unicode-11.0.0-class.js | 2 +- .../part-unicode-11.0.0-escaped.js | 2 +- .../identifiers/part-unicode-11.0.0.js | 2 +- .../part-unicode-12.0.0-class-escaped.js | 2 +- .../identifiers/part-unicode-12.0.0-class.js | 2 +- .../part-unicode-12.0.0-escaped.js | 2 +- .../identifiers/part-unicode-12.0.0.js | 2 +- .../part-unicode-13.0.0-class-escaped.js | 2 +- .../identifiers/part-unicode-13.0.0-class.js | 2 +- .../part-unicode-13.0.0-escaped.js | 2 +- .../identifiers/part-unicode-13.0.0.js | 2 +- .../part-unicode-14.0.0-class-escaped.js | 2 +- .../identifiers/part-unicode-14.0.0-class.js | 2 +- .../part-unicode-14.0.0-escaped.js | 2 +- .../identifiers/part-unicode-14.0.0.js | 2 +- .../part-unicode-15.0.0-class-escaped.js | 2 +- .../identifiers/part-unicode-15.0.0-class.js | 2 +- .../part-unicode-15.0.0-escaped.js | 2 +- .../identifiers/part-unicode-15.0.0.js | 2 +- .../part-unicode-15.1.0-class-escaped.js | 4 +- .../identifiers/part-unicode-15.1.0-class.js | 4 +- .../part-unicode-15.1.0-escaped.js | 4 +- .../identifiers/part-unicode-15.1.0.js | 4 +- .../part-unicode-16.0.0-class-escaped.js | 20 + .../identifiers/part-unicode-16.0.0-class.js | 17 + .../part-unicode-16.0.0-escaped.js | 16 + .../identifiers/part-unicode-16.0.0.js | 14 + .../part-unicode-5.2.0-class-escaped.js | 2 +- .../identifiers/part-unicode-5.2.0-class.js | 2 +- .../identifiers/part-unicode-5.2.0-escaped.js | 2 +- .../identifiers/part-unicode-5.2.0.js | 2 +- .../part-unicode-6.0.0-class-escaped.js | 2 +- .../identifiers/part-unicode-6.0.0-class.js | 2 +- .../identifiers/part-unicode-6.0.0-escaped.js | 2 +- .../identifiers/part-unicode-6.0.0.js | 2 +- .../part-unicode-6.1.0-class-escaped.js | 2 +- .../identifiers/part-unicode-6.1.0-class.js | 2 +- .../identifiers/part-unicode-6.1.0-escaped.js | 2 +- .../identifiers/part-unicode-6.1.0.js | 2 +- .../part-unicode-7.0.0-class-escaped.js | 2 +- .../identifiers/part-unicode-7.0.0-class.js | 2 +- .../identifiers/part-unicode-7.0.0-escaped.js | 2 +- .../identifiers/part-unicode-7.0.0.js | 2 +- .../part-unicode-8.0.0-class-escaped.js | 2 +- .../identifiers/part-unicode-8.0.0-class.js | 2 +- .../identifiers/part-unicode-8.0.0-escaped.js | 2 +- .../identifiers/part-unicode-8.0.0.js | 2 +- .../part-unicode-9.0.0-class-escaped.js | 2 +- .../identifiers/part-unicode-9.0.0-class.js | 2 +- .../identifiers/part-unicode-9.0.0-escaped.js | 2 +- .../identifiers/part-unicode-9.0.0.js | 2 +- test/language/identifiers/rgi-emoji-13.1.js | 238 + test/language/identifiers/rgi-emoji-14.0.js | 133 + test/language/identifiers/rgi-emoji-15.0.js | 52 + test/language/identifiers/rgi-emoji-15.1.js | 139 + test/language/identifiers/rgi-emoji-16.0.js | 29 + .../start-unicode-10.0.0-class-escaped.js | 2 +- .../identifiers/start-unicode-10.0.0-class.js | 2 +- .../start-unicode-10.0.0-escaped.js | 2 +- .../identifiers/start-unicode-10.0.0.js | 2 +- .../start-unicode-11.0.0-class-escaped.js | 2 +- .../identifiers/start-unicode-11.0.0-class.js | 2 +- .../start-unicode-11.0.0-escaped.js | 2 +- .../identifiers/start-unicode-11.0.0.js | 2 +- .../start-unicode-12.0.0-class-escaped.js | 2 +- .../identifiers/start-unicode-12.0.0-class.js | 2 +- .../start-unicode-12.0.0-escaped.js | 2 +- .../identifiers/start-unicode-12.0.0.js | 2 +- .../start-unicode-13.0.0-class-escaped.js | 2 +- .../identifiers/start-unicode-13.0.0-class.js | 2 +- .../start-unicode-13.0.0-escaped.js | 2 +- .../identifiers/start-unicode-13.0.0.js | 2 +- .../start-unicode-14.0.0-class-escaped.js | 2 +- .../identifiers/start-unicode-14.0.0-class.js | 2 +- .../start-unicode-14.0.0-escaped.js | 2 +- .../identifiers/start-unicode-14.0.0.js | 2 +- .../start-unicode-15.0.0-class-escaped.js | 2 +- .../identifiers/start-unicode-15.0.0-class.js | 2 +- .../start-unicode-15.0.0-escaped.js | 2 +- .../identifiers/start-unicode-15.0.0.js | 2 +- .../start-unicode-15.1.0-class-escaped.js | 641 +++ .../identifiers/start-unicode-15.1.0-class.js | 638 +++ .../start-unicode-15.1.0-escaped.js | 637 +++ .../identifiers/start-unicode-15.1.0.js | 635 +++ .../start-unicode-16.0.0-class-escaped.js | 4321 +++++++++++++++++ .../identifiers/start-unicode-16.0.0-class.js | 4318 ++++++++++++++++ .../start-unicode-16.0.0-escaped.js | 4317 ++++++++++++++++ .../identifiers/start-unicode-16.0.0.js | 4315 ++++++++++++++++ .../start-unicode-5.2.0-class-escaped.js | 2 +- .../identifiers/start-unicode-5.2.0-class.js | 2 +- .../start-unicode-5.2.0-escaped.js | 2 +- .../identifiers/start-unicode-5.2.0.js | 2 +- .../start-unicode-6.0.0-class-escaped.js | 2 +- .../identifiers/start-unicode-6.0.0-class.js | 2 +- .../start-unicode-6.0.0-escaped.js | 2 +- .../identifiers/start-unicode-6.0.0.js | 2 +- .../start-unicode-6.1.0-class-escaped.js | 2 +- .../identifiers/start-unicode-6.1.0-class.js | 2 +- .../start-unicode-6.1.0-escaped.js | 2 +- .../identifiers/start-unicode-6.1.0.js | 2 +- .../start-unicode-7.0.0-class-escaped.js | 2 +- .../identifiers/start-unicode-7.0.0-class.js | 2 +- .../start-unicode-7.0.0-escaped.js | 2 +- .../identifiers/start-unicode-7.0.0.js | 2 +- .../start-unicode-8.0.0-class-escaped.js | 2 +- .../identifiers/start-unicode-8.0.0-class.js | 2 +- .../start-unicode-8.0.0-escaped.js | 2 +- .../identifiers/start-unicode-8.0.0.js | 2 +- .../start-unicode-9.0.0-class-escaped.js | 2 +- .../identifiers/start-unicode-9.0.0-class.js | 2 +- .../start-unicode-9.0.0-escaped.js | 2 +- .../identifiers/start-unicode-9.0.0.js | 2 +- 117 files changed, 20584 insertions(+), 104 deletions(-) create mode 100644 test/language/identifiers/part-unicode-16.0.0-class-escaped.js create mode 100644 test/language/identifiers/part-unicode-16.0.0-class.js create mode 100644 test/language/identifiers/part-unicode-16.0.0-escaped.js create mode 100644 test/language/identifiers/part-unicode-16.0.0.js create mode 100644 test/language/identifiers/rgi-emoji-13.1.js create mode 100644 test/language/identifiers/rgi-emoji-14.0.js create mode 100644 test/language/identifiers/rgi-emoji-15.0.js create mode 100644 test/language/identifiers/rgi-emoji-15.1.js create mode 100644 test/language/identifiers/rgi-emoji-16.0.js create mode 100644 test/language/identifiers/start-unicode-15.1.0-class-escaped.js create mode 100644 test/language/identifiers/start-unicode-15.1.0-class.js create mode 100644 test/language/identifiers/start-unicode-15.1.0-escaped.js create mode 100644 test/language/identifiers/start-unicode-15.1.0.js create mode 100644 test/language/identifiers/start-unicode-16.0.0-class-escaped.js create mode 100644 test/language/identifiers/start-unicode-16.0.0-class.js create mode 100644 test/language/identifiers/start-unicode-16.0.0-escaped.js create mode 100644 test/language/identifiers/start-unicode-16.0.0.js 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/rgi-emoji-13.1.js b/test/language/identifiers/rgi-emoji-13.1.js new file mode 100644 index 00000000000..2525d3d2b9d --- /dev/null +++ b/test/language/identifiers/rgi-emoji-13.1.js @@ -0,0 +1,238 @@ +// 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 13.1 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: [ + "\u2764\uFE0F\u200D\u{1F525}", + "\u2764\uFE0F\u200D\u{1FA79}", + "\u{1F468}\u{1F3FB}\u200D\u2764\uFE0F\u200D\u{1F468}\u{1F3FB}", + "\u{1F468}\u{1F3FB}\u200D\u2764\uFE0F\u200D\u{1F468}\u{1F3FC}", + "\u{1F468}\u{1F3FB}\u200D\u2764\uFE0F\u200D\u{1F468}\u{1F3FD}", + "\u{1F468}\u{1F3FB}\u200D\u2764\uFE0F\u200D\u{1F468}\u{1F3FE}", + "\u{1F468}\u{1F3FB}\u200D\u2764\uFE0F\u200D\u{1F468}\u{1F3FF}", + "\u{1F468}\u{1F3FB}\u200D\u2764\uFE0F\u200D\u{1F48B}\u200D\u{1F468}\u{1F3FB}", + "\u{1F468}\u{1F3FB}\u200D\u2764\uFE0F\u200D\u{1F48B}\u200D\u{1F468}\u{1F3FC}", + "\u{1F468}\u{1F3FB}\u200D\u2764\uFE0F\u200D\u{1F48B}\u200D\u{1F468}\u{1F3FD}", + "\u{1F468}\u{1F3FB}\u200D\u2764\uFE0F\u200D\u{1F48B}\u200D\u{1F468}\u{1F3FE}", + "\u{1F468}\u{1F3FB}\u200D\u2764\uFE0F\u200D\u{1F48B}\u200D\u{1F468}\u{1F3FF}", + "\u{1F468}\u{1F3FC}\u200D\u2764\uFE0F\u200D\u{1F468}\u{1F3FB}", + "\u{1F468}\u{1F3FC}\u200D\u2764\uFE0F\u200D\u{1F468}\u{1F3FC}", + "\u{1F468}\u{1F3FC}\u200D\u2764\uFE0F\u200D\u{1F468}\u{1F3FD}", + "\u{1F468}\u{1F3FC}\u200D\u2764\uFE0F\u200D\u{1F468}\u{1F3FE}", + "\u{1F468}\u{1F3FC}\u200D\u2764\uFE0F\u200D\u{1F468}\u{1F3FF}", + "\u{1F468}\u{1F3FC}\u200D\u2764\uFE0F\u200D\u{1F48B}\u200D\u{1F468}\u{1F3FB}", + "\u{1F468}\u{1F3FC}\u200D\u2764\uFE0F\u200D\u{1F48B}\u200D\u{1F468}\u{1F3FC}", + "\u{1F468}\u{1F3FC}\u200D\u2764\uFE0F\u200D\u{1F48B}\u200D\u{1F468}\u{1F3FD}", + "\u{1F468}\u{1F3FC}\u200D\u2764\uFE0F\u200D\u{1F48B}\u200D\u{1F468}\u{1F3FE}", + "\u{1F468}\u{1F3FC}\u200D\u2764\uFE0F\u200D\u{1F48B}\u200D\u{1F468}\u{1F3FF}", + "\u{1F468}\u{1F3FD}\u200D\u2764\uFE0F\u200D\u{1F468}\u{1F3FB}", + "\u{1F468}\u{1F3FD}\u200D\u2764\uFE0F\u200D\u{1F468}\u{1F3FC}", + "\u{1F468}\u{1F3FD}\u200D\u2764\uFE0F\u200D\u{1F468}\u{1F3FD}", + "\u{1F468}\u{1F3FD}\u200D\u2764\uFE0F\u200D\u{1F468}\u{1F3FE}", + "\u{1F468}\u{1F3FD}\u200D\u2764\uFE0F\u200D\u{1F468}\u{1F3FF}", + "\u{1F468}\u{1F3FD}\u200D\u2764\uFE0F\u200D\u{1F48B}\u200D\u{1F468}\u{1F3FB}", + "\u{1F468}\u{1F3FD}\u200D\u2764\uFE0F\u200D\u{1F48B}\u200D\u{1F468}\u{1F3FC}", + "\u{1F468}\u{1F3FD}\u200D\u2764\uFE0F\u200D\u{1F48B}\u200D\u{1F468}\u{1F3FD}", + "\u{1F468}\u{1F3FD}\u200D\u2764\uFE0F\u200D\u{1F48B}\u200D\u{1F468}\u{1F3FE}", + "\u{1F468}\u{1F3FD}\u200D\u2764\uFE0F\u200D\u{1F48B}\u200D\u{1F468}\u{1F3FF}", + "\u{1F468}\u{1F3FE}\u200D\u2764\uFE0F\u200D\u{1F468}\u{1F3FB}", + "\u{1F468}\u{1F3FE}\u200D\u2764\uFE0F\u200D\u{1F468}\u{1F3FC}", + "\u{1F468}\u{1F3FE}\u200D\u2764\uFE0F\u200D\u{1F468}\u{1F3FD}", + "\u{1F468}\u{1F3FE}\u200D\u2764\uFE0F\u200D\u{1F468}\u{1F3FE}", + "\u{1F468}\u{1F3FE}\u200D\u2764\uFE0F\u200D\u{1F468}\u{1F3FF}", + "\u{1F468}\u{1F3FE}\u200D\u2764\uFE0F\u200D\u{1F48B}\u200D\u{1F468}\u{1F3FB}", + "\u{1F468}\u{1F3FE}\u200D\u2764\uFE0F\u200D\u{1F48B}\u200D\u{1F468}\u{1F3FC}", + "\u{1F468}\u{1F3FE}\u200D\u2764\uFE0F\u200D\u{1F48B}\u200D\u{1F468}\u{1F3FD}", + "\u{1F468}\u{1F3FE}\u200D\u2764\uFE0F\u200D\u{1F48B}\u200D\u{1F468}\u{1F3FE}", + "\u{1F468}\u{1F3FE}\u200D\u2764\uFE0F\u200D\u{1F48B}\u200D\u{1F468}\u{1F3FF}", + "\u{1F468}\u{1F3FF}\u200D\u2764\uFE0F\u200D\u{1F468}\u{1F3FB}", + "\u{1F468}\u{1F3FF}\u200D\u2764\uFE0F\u200D\u{1F468}\u{1F3FC}", + "\u{1F468}\u{1F3FF}\u200D\u2764\uFE0F\u200D\u{1F468}\u{1F3FD}", + "\u{1F468}\u{1F3FF}\u200D\u2764\uFE0F\u200D\u{1F468}\u{1F3FE}", + "\u{1F468}\u{1F3FF}\u200D\u2764\uFE0F\u200D\u{1F468}\u{1F3FF}", + "\u{1F468}\u{1F3FF}\u200D\u2764\uFE0F\u200D\u{1F48B}\u200D\u{1F468}\u{1F3FB}", + "\u{1F468}\u{1F3FF}\u200D\u2764\uFE0F\u200D\u{1F48B}\u200D\u{1F468}\u{1F3FC}", + "\u{1F468}\u{1F3FF}\u200D\u2764\uFE0F\u200D\u{1F48B}\u200D\u{1F468}\u{1F3FD}", + "\u{1F468}\u{1F3FF}\u200D\u2764\uFE0F\u200D\u{1F48B}\u200D\u{1F468}\u{1F3FE}", + "\u{1F468}\u{1F3FF}\u200D\u2764\uFE0F\u200D\u{1F48B}\u200D\u{1F468}\u{1F3FF}", + "\u{1F469}\u{1F3FB}\u200D\u2764\uFE0F\u200D\u{1F468}\u{1F3FB}", + "\u{1F469}\u{1F3FB}\u200D\u2764\uFE0F\u200D\u{1F468}\u{1F3FC}", + "\u{1F469}\u{1F3FB}\u200D\u2764\uFE0F\u200D\u{1F468}\u{1F3FD}", + "\u{1F469}\u{1F3FB}\u200D\u2764\uFE0F\u200D\u{1F468}\u{1F3FE}", + "\u{1F469}\u{1F3FB}\u200D\u2764\uFE0F\u200D\u{1F468}\u{1F3FF}", + "\u{1F469}\u{1F3FB}\u200D\u2764\uFE0F\u200D\u{1F469}\u{1F3FB}", + "\u{1F469}\u{1F3FB}\u200D\u2764\uFE0F\u200D\u{1F469}\u{1F3FC}", + "\u{1F469}\u{1F3FB}\u200D\u2764\uFE0F\u200D\u{1F469}\u{1F3FD}", + "\u{1F469}\u{1F3FB}\u200D\u2764\uFE0F\u200D\u{1F469}\u{1F3FE}", + "\u{1F469}\u{1F3FB}\u200D\u2764\uFE0F\u200D\u{1F469}\u{1F3FF}", + "\u{1F469}\u{1F3FB}\u200D\u2764\uFE0F\u200D\u{1F48B}\u200D\u{1F468}\u{1F3FB}", + "\u{1F469}\u{1F3FB}\u200D\u2764\uFE0F\u200D\u{1F48B}\u200D\u{1F468}\u{1F3FC}", + "\u{1F469}\u{1F3FB}\u200D\u2764\uFE0F\u200D\u{1F48B}\u200D\u{1F468}\u{1F3FD}", + "\u{1F469}\u{1F3FB}\u200D\u2764\uFE0F\u200D\u{1F48B}\u200D\u{1F468}\u{1F3FE}", + "\u{1F469}\u{1F3FB}\u200D\u2764\uFE0F\u200D\u{1F48B}\u200D\u{1F468}\u{1F3FF}", + "\u{1F469}\u{1F3FB}\u200D\u2764\uFE0F\u200D\u{1F48B}\u200D\u{1F469}\u{1F3FB}", + "\u{1F469}\u{1F3FB}\u200D\u2764\uFE0F\u200D\u{1F48B}\u200D\u{1F469}\u{1F3FC}", + "\u{1F469}\u{1F3FB}\u200D\u2764\uFE0F\u200D\u{1F48B}\u200D\u{1F469}\u{1F3FD}", + "\u{1F469}\u{1F3FB}\u200D\u2764\uFE0F\u200D\u{1F48B}\u200D\u{1F469}\u{1F3FE}", + "\u{1F469}\u{1F3FB}\u200D\u2764\uFE0F\u200D\u{1F48B}\u200D\u{1F469}\u{1F3FF}", + "\u{1F469}\u{1F3FC}\u200D\u2764\uFE0F\u200D\u{1F468}\u{1F3FB}", + "\u{1F469}\u{1F3FC}\u200D\u2764\uFE0F\u200D\u{1F468}\u{1F3FC}", + "\u{1F469}\u{1F3FC}\u200D\u2764\uFE0F\u200D\u{1F468}\u{1F3FD}", + "\u{1F469}\u{1F3FC}\u200D\u2764\uFE0F\u200D\u{1F468}\u{1F3FE}", + "\u{1F469}\u{1F3FC}\u200D\u2764\uFE0F\u200D\u{1F468}\u{1F3FF}", + "\u{1F469}\u{1F3FC}\u200D\u2764\uFE0F\u200D\u{1F469}\u{1F3FB}", + "\u{1F469}\u{1F3FC}\u200D\u2764\uFE0F\u200D\u{1F469}\u{1F3FC}", + "\u{1F469}\u{1F3FC}\u200D\u2764\uFE0F\u200D\u{1F469}\u{1F3FD}", + "\u{1F469}\u{1F3FC}\u200D\u2764\uFE0F\u200D\u{1F469}\u{1F3FE}", + "\u{1F469}\u{1F3FC}\u200D\u2764\uFE0F\u200D\u{1F469}\u{1F3FF}", + "\u{1F469}\u{1F3FC}\u200D\u2764\uFE0F\u200D\u{1F48B}\u200D\u{1F468}\u{1F3FB}", + "\u{1F469}\u{1F3FC}\u200D\u2764\uFE0F\u200D\u{1F48B}\u200D\u{1F468}\u{1F3FC}", + "\u{1F469}\u{1F3FC}\u200D\u2764\uFE0F\u200D\u{1F48B}\u200D\u{1F468}\u{1F3FD}", + "\u{1F469}\u{1F3FC}\u200D\u2764\uFE0F\u200D\u{1F48B}\u200D\u{1F468}\u{1F3FE}", + "\u{1F469}\u{1F3FC}\u200D\u2764\uFE0F\u200D\u{1F48B}\u200D\u{1F468}\u{1F3FF}", + "\u{1F469}\u{1F3FC}\u200D\u2764\uFE0F\u200D\u{1F48B}\u200D\u{1F469}\u{1F3FB}", + "\u{1F469}\u{1F3FC}\u200D\u2764\uFE0F\u200D\u{1F48B}\u200D\u{1F469}\u{1F3FC}", + "\u{1F469}\u{1F3FC}\u200D\u2764\uFE0F\u200D\u{1F48B}\u200D\u{1F469}\u{1F3FD}", + "\u{1F469}\u{1F3FC}\u200D\u2764\uFE0F\u200D\u{1F48B}\u200D\u{1F469}\u{1F3FE}", + "\u{1F469}\u{1F3FC}\u200D\u2764\uFE0F\u200D\u{1F48B}\u200D\u{1F469}\u{1F3FF}", + "\u{1F469}\u{1F3FD}\u200D\u2764\uFE0F\u200D\u{1F468}\u{1F3FB}", + "\u{1F469}\u{1F3FD}\u200D\u2764\uFE0F\u200D\u{1F468}\u{1F3FC}", + "\u{1F469}\u{1F3FD}\u200D\u2764\uFE0F\u200D\u{1F468}\u{1F3FD}", + "\u{1F469}\u{1F3FD}\u200D\u2764\uFE0F\u200D\u{1F468}\u{1F3FE}", + "\u{1F469}\u{1F3FD}\u200D\u2764\uFE0F\u200D\u{1F468}\u{1F3FF}", + "\u{1F469}\u{1F3FD}\u200D\u2764\uFE0F\u200D\u{1F469}\u{1F3FB}", + "\u{1F469}\u{1F3FD}\u200D\u2764\uFE0F\u200D\u{1F469}\u{1F3FC}", + "\u{1F469}\u{1F3FD}\u200D\u2764\uFE0F\u200D\u{1F469}\u{1F3FD}", + "\u{1F469}\u{1F3FD}\u200D\u2764\uFE0F\u200D\u{1F469}\u{1F3FE}", + "\u{1F469}\u{1F3FD}\u200D\u2764\uFE0F\u200D\u{1F469}\u{1F3FF}", + "\u{1F469}\u{1F3FD}\u200D\u2764\uFE0F\u200D\u{1F48B}\u200D\u{1F468}\u{1F3FB}", + "\u{1F469}\u{1F3FD}\u200D\u2764\uFE0F\u200D\u{1F48B}\u200D\u{1F468}\u{1F3FC}", + "\u{1F469}\u{1F3FD}\u200D\u2764\uFE0F\u200D\u{1F48B}\u200D\u{1F468}\u{1F3FD}", + "\u{1F469}\u{1F3FD}\u200D\u2764\uFE0F\u200D\u{1F48B}\u200D\u{1F468}\u{1F3FE}", + "\u{1F469}\u{1F3FD}\u200D\u2764\uFE0F\u200D\u{1F48B}\u200D\u{1F468}\u{1F3FF}", + "\u{1F469}\u{1F3FD}\u200D\u2764\uFE0F\u200D\u{1F48B}\u200D\u{1F469}\u{1F3FB}", + "\u{1F469}\u{1F3FD}\u200D\u2764\uFE0F\u200D\u{1F48B}\u200D\u{1F469}\u{1F3FC}", + "\u{1F469}\u{1F3FD}\u200D\u2764\uFE0F\u200D\u{1F48B}\u200D\u{1F469}\u{1F3FD}", + "\u{1F469}\u{1F3FD}\u200D\u2764\uFE0F\u200D\u{1F48B}\u200D\u{1F469}\u{1F3FE}", + "\u{1F469}\u{1F3FD}\u200D\u2764\uFE0F\u200D\u{1F48B}\u200D\u{1F469}\u{1F3FF}", + "\u{1F469}\u{1F3FE}\u200D\u2764\uFE0F\u200D\u{1F468}\u{1F3FB}", + "\u{1F469}\u{1F3FE}\u200D\u2764\uFE0F\u200D\u{1F468}\u{1F3FC}", + "\u{1F469}\u{1F3FE}\u200D\u2764\uFE0F\u200D\u{1F468}\u{1F3FD}", + "\u{1F469}\u{1F3FE}\u200D\u2764\uFE0F\u200D\u{1F468}\u{1F3FE}", + "\u{1F469}\u{1F3FE}\u200D\u2764\uFE0F\u200D\u{1F468}\u{1F3FF}", + "\u{1F469}\u{1F3FE}\u200D\u2764\uFE0F\u200D\u{1F469}\u{1F3FB}", + "\u{1F469}\u{1F3FE}\u200D\u2764\uFE0F\u200D\u{1F469}\u{1F3FC}", + "\u{1F469}\u{1F3FE}\u200D\u2764\uFE0F\u200D\u{1F469}\u{1F3FD}", + "\u{1F469}\u{1F3FE}\u200D\u2764\uFE0F\u200D\u{1F469}\u{1F3FE}", + "\u{1F469}\u{1F3FE}\u200D\u2764\uFE0F\u200D\u{1F469}\u{1F3FF}", + "\u{1F469}\u{1F3FE}\u200D\u2764\uFE0F\u200D\u{1F48B}\u200D\u{1F468}\u{1F3FB}", + "\u{1F469}\u{1F3FE}\u200D\u2764\uFE0F\u200D\u{1F48B}\u200D\u{1F468}\u{1F3FC}", + "\u{1F469}\u{1F3FE}\u200D\u2764\uFE0F\u200D\u{1F48B}\u200D\u{1F468}\u{1F3FD}", + "\u{1F469}\u{1F3FE}\u200D\u2764\uFE0F\u200D\u{1F48B}\u200D\u{1F468}\u{1F3FE}", + "\u{1F469}\u{1F3FE}\u200D\u2764\uFE0F\u200D\u{1F48B}\u200D\u{1F468}\u{1F3FF}", + "\u{1F469}\u{1F3FE}\u200D\u2764\uFE0F\u200D\u{1F48B}\u200D\u{1F469}\u{1F3FB}", + "\u{1F469}\u{1F3FE}\u200D\u2764\uFE0F\u200D\u{1F48B}\u200D\u{1F469}\u{1F3FC}", + "\u{1F469}\u{1F3FE}\u200D\u2764\uFE0F\u200D\u{1F48B}\u200D\u{1F469}\u{1F3FD}", + "\u{1F469}\u{1F3FE}\u200D\u2764\uFE0F\u200D\u{1F48B}\u200D\u{1F469}\u{1F3FE}", + "\u{1F469}\u{1F3FE}\u200D\u2764\uFE0F\u200D\u{1F48B}\u200D\u{1F469}\u{1F3FF}", + "\u{1F469}\u{1F3FF}\u200D\u2764\uFE0F\u200D\u{1F468}\u{1F3FB}", + "\u{1F469}\u{1F3FF}\u200D\u2764\uFE0F\u200D\u{1F468}\u{1F3FC}", + "\u{1F469}\u{1F3FF}\u200D\u2764\uFE0F\u200D\u{1F468}\u{1F3FD}", + "\u{1F469}\u{1F3FF}\u200D\u2764\uFE0F\u200D\u{1F468}\u{1F3FE}", + "\u{1F469}\u{1F3FF}\u200D\u2764\uFE0F\u200D\u{1F468}\u{1F3FF}", + "\u{1F469}\u{1F3FF}\u200D\u2764\uFE0F\u200D\u{1F469}\u{1F3FB}", + "\u{1F469}\u{1F3FF}\u200D\u2764\uFE0F\u200D\u{1F469}\u{1F3FC}", + "\u{1F469}\u{1F3FF}\u200D\u2764\uFE0F\u200D\u{1F469}\u{1F3FD}", + "\u{1F469}\u{1F3FF}\u200D\u2764\uFE0F\u200D\u{1F469}\u{1F3FE}", + "\u{1F469}\u{1F3FF}\u200D\u2764\uFE0F\u200D\u{1F469}\u{1F3FF}", + "\u{1F469}\u{1F3FF}\u200D\u2764\uFE0F\u200D\u{1F48B}\u200D\u{1F468}\u{1F3FB}", + "\u{1F469}\u{1F3FF}\u200D\u2764\uFE0F\u200D\u{1F48B}\u200D\u{1F468}\u{1F3FC}", + "\u{1F469}\u{1F3FF}\u200D\u2764\uFE0F\u200D\u{1F48B}\u200D\u{1F468}\u{1F3FD}", + "\u{1F469}\u{1F3FF}\u200D\u2764\uFE0F\u200D\u{1F48B}\u200D\u{1F468}\u{1F3FE}", + "\u{1F469}\u{1F3FF}\u200D\u2764\uFE0F\u200D\u{1F48B}\u200D\u{1F468}\u{1F3FF}", + "\u{1F469}\u{1F3FF}\u200D\u2764\uFE0F\u200D\u{1F48B}\u200D\u{1F469}\u{1F3FB}", + "\u{1F469}\u{1F3FF}\u200D\u2764\uFE0F\u200D\u{1F48B}\u200D\u{1F469}\u{1F3FC}", + "\u{1F469}\u{1F3FF}\u200D\u2764\uFE0F\u200D\u{1F48B}\u200D\u{1F469}\u{1F3FD}", + "\u{1F469}\u{1F3FF}\u200D\u2764\uFE0F\u200D\u{1F48B}\u200D\u{1F469}\u{1F3FE}", + "\u{1F469}\u{1F3FF}\u200D\u2764\uFE0F\u200D\u{1F48B}\u200D\u{1F469}\u{1F3FF}", + "\u{1F48F}\u{1F3FB}", + "\u{1F48F}\u{1F3FC}", + "\u{1F48F}\u{1F3FD}", + "\u{1F48F}\u{1F3FE}", + "\u{1F48F}\u{1F3FF}", + "\u{1F491}\u{1F3FB}", + "\u{1F491}\u{1F3FC}", + "\u{1F491}\u{1F3FD}", + "\u{1F491}\u{1F3FE}", + "\u{1F491}\u{1F3FF}", + "\u{1F62E}\u200D\u{1F4A8}", + "\u{1F635}\u200D\u{1F4AB}", + "\u{1F636}\u200D\u{1F32B}\uFE0F", + "\u{1F9D1}\u{1F3FB}\u200D\u2764\uFE0F\u200D\u{1F48B}\u200D\u{1F9D1}\u{1F3FC}", + "\u{1F9D1}\u{1F3FB}\u200D\u2764\uFE0F\u200D\u{1F48B}\u200D\u{1F9D1}\u{1F3FD}", + "\u{1F9D1}\u{1F3FB}\u200D\u2764\uFE0F\u200D\u{1F48B}\u200D\u{1F9D1}\u{1F3FE}", + "\u{1F9D1}\u{1F3FB}\u200D\u2764\uFE0F\u200D\u{1F48B}\u200D\u{1F9D1}\u{1F3FF}", + "\u{1F9D1}\u{1F3FB}\u200D\u2764\uFE0F\u200D\u{1F9D1}\u{1F3FC}", + "\u{1F9D1}\u{1F3FB}\u200D\u2764\uFE0F\u200D\u{1F9D1}\u{1F3FD}", + "\u{1F9D1}\u{1F3FB}\u200D\u2764\uFE0F\u200D\u{1F9D1}\u{1F3FE}", + "\u{1F9D1}\u{1F3FB}\u200D\u2764\uFE0F\u200D\u{1F9D1}\u{1F3FF}", + "\u{1F9D1}\u{1F3FC}\u200D\u2764\uFE0F\u200D\u{1F48B}\u200D\u{1F9D1}\u{1F3FB}", + "\u{1F9D1}\u{1F3FC}\u200D\u2764\uFE0F\u200D\u{1F48B}\u200D\u{1F9D1}\u{1F3FD}", + "\u{1F9D1}\u{1F3FC}\u200D\u2764\uFE0F\u200D\u{1F48B}\u200D\u{1F9D1}\u{1F3FE}", + "\u{1F9D1}\u{1F3FC}\u200D\u2764\uFE0F\u200D\u{1F48B}\u200D\u{1F9D1}\u{1F3FF}", + "\u{1F9D1}\u{1F3FC}\u200D\u2764\uFE0F\u200D\u{1F9D1}\u{1F3FB}", + "\u{1F9D1}\u{1F3FC}\u200D\u2764\uFE0F\u200D\u{1F9D1}\u{1F3FD}", + "\u{1F9D1}\u{1F3FC}\u200D\u2764\uFE0F\u200D\u{1F9D1}\u{1F3FE}", + "\u{1F9D1}\u{1F3FC}\u200D\u2764\uFE0F\u200D\u{1F9D1}\u{1F3FF}", + "\u{1F9D1}\u{1F3FD}\u200D\u2764\uFE0F\u200D\u{1F48B}\u200D\u{1F9D1}\u{1F3FB}", + "\u{1F9D1}\u{1F3FD}\u200D\u2764\uFE0F\u200D\u{1F48B}\u200D\u{1F9D1}\u{1F3FC}", + "\u{1F9D1}\u{1F3FD}\u200D\u2764\uFE0F\u200D\u{1F48B}\u200D\u{1F9D1}\u{1F3FE}", + "\u{1F9D1}\u{1F3FD}\u200D\u2764\uFE0F\u200D\u{1F48B}\u200D\u{1F9D1}\u{1F3FF}", + "\u{1F9D1}\u{1F3FD}\u200D\u2764\uFE0F\u200D\u{1F9D1}\u{1F3FB}", + "\u{1F9D1}\u{1F3FD}\u200D\u2764\uFE0F\u200D\u{1F9D1}\u{1F3FC}", + "\u{1F9D1}\u{1F3FD}\u200D\u2764\uFE0F\u200D\u{1F9D1}\u{1F3FE}", + "\u{1F9D1}\u{1F3FD}\u200D\u2764\uFE0F\u200D\u{1F9D1}\u{1F3FF}", + "\u{1F9D1}\u{1F3FE}\u200D\u2764\uFE0F\u200D\u{1F48B}\u200D\u{1F9D1}\u{1F3FB}", + "\u{1F9D1}\u{1F3FE}\u200D\u2764\uFE0F\u200D\u{1F48B}\u200D\u{1F9D1}\u{1F3FC}", + "\u{1F9D1}\u{1F3FE}\u200D\u2764\uFE0F\u200D\u{1F48B}\u200D\u{1F9D1}\u{1F3FD}", + "\u{1F9D1}\u{1F3FE}\u200D\u2764\uFE0F\u200D\u{1F48B}\u200D\u{1F9D1}\u{1F3FF}", + "\u{1F9D1}\u{1F3FE}\u200D\u2764\uFE0F\u200D\u{1F9D1}\u{1F3FB}", + "\u{1F9D1}\u{1F3FE}\u200D\u2764\uFE0F\u200D\u{1F9D1}\u{1F3FC}", + "\u{1F9D1}\u{1F3FE}\u200D\u2764\uFE0F\u200D\u{1F9D1}\u{1F3FD}", + "\u{1F9D1}\u{1F3FE}\u200D\u2764\uFE0F\u200D\u{1F9D1}\u{1F3FF}", + "\u{1F9D1}\u{1F3FF}\u200D\u2764\uFE0F\u200D\u{1F48B}\u200D\u{1F9D1}\u{1F3FB}", + "\u{1F9D1}\u{1F3FF}\u200D\u2764\uFE0F\u200D\u{1F48B}\u200D\u{1F9D1}\u{1F3FC}", + "\u{1F9D1}\u{1F3FF}\u200D\u2764\uFE0F\u200D\u{1F48B}\u200D\u{1F9D1}\u{1F3FD}", + "\u{1F9D1}\u{1F3FF}\u200D\u2764\uFE0F\u200D\u{1F48B}\u200D\u{1F9D1}\u{1F3FE}", + "\u{1F9D1}\u{1F3FF}\u200D\u2764\uFE0F\u200D\u{1F9D1}\u{1F3FB}", + "\u{1F9D1}\u{1F3FF}\u200D\u2764\uFE0F\u200D\u{1F9D1}\u{1F3FC}", + "\u{1F9D1}\u{1F3FF}\u200D\u2764\uFE0F\u200D\u{1F9D1}\u{1F3FD}", + "\u{1F9D1}\u{1F3FF}\u200D\u2764\uFE0F\u200D\u{1F9D1}\u{1F3FE}", + "\u{1F9D4}\u200D\u2640\uFE0F", + "\u{1F9D4}\u200D\u2642\uFE0F", + "\u{1F9D4}\u{1F3FB}\u200D\u2640\uFE0F", + "\u{1F9D4}\u{1F3FB}\u200D\u2642\uFE0F", + "\u{1F9D4}\u{1F3FC}\u200D\u2640\uFE0F", + "\u{1F9D4}\u{1F3FC}\u200D\u2642\uFE0F", + "\u{1F9D4}\u{1F3FD}\u200D\u2640\uFE0F", + "\u{1F9D4}\u{1F3FD}\u200D\u2642\uFE0F", + "\u{1F9D4}\u{1F3FE}\u200D\u2640\uFE0F", + "\u{1F9D4}\u{1F3FE}\u200D\u2642\uFE0F", + "\u{1F9D4}\u{1F3FF}\u200D\u2640\uFE0F", + "\u{1F9D4}\u{1F3FF}\u200D\u2642\uFE0F" + ], +}); diff --git a/test/language/identifiers/rgi-emoji-14.0.js b/test/language/identifiers/rgi-emoji-14.0.js new file mode 100644 index 00000000000..57c55b1e59b --- /dev/null +++ b/test/language/identifiers/rgi-emoji-14.0.js @@ -0,0 +1,133 @@ +// 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 14.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{1F6DD}", + "\u{1F6DE}", + "\u{1F6DF}", + "\u{1F7F0}", + "\u{1F91D}\u{1F3FB}", + "\u{1F91D}\u{1F3FC}", + "\u{1F91D}\u{1F3FD}", + "\u{1F91D}\u{1F3FE}", + "\u{1F91D}\u{1F3FF}", + "\u{1F979}", + "\u{1F9CC}", + "\u{1FA7B}", + "\u{1FA7C}", + "\u{1FAA9}", + "\u{1FAAA}", + "\u{1FAAB}", + "\u{1FAAC}", + "\u{1FAB7}", + "\u{1FAB8}", + "\u{1FAB9}", + "\u{1FABA}", + "\u{1FAC3}", + "\u{1FAC3}\u{1F3FB}", + "\u{1FAC3}\u{1F3FC}", + "\u{1FAC3}\u{1F3FD}", + "\u{1FAC3}\u{1F3FE}", + "\u{1FAC3}\u{1F3FF}", + "\u{1FAC4}", + "\u{1FAC4}\u{1F3FB}", + "\u{1FAC4}\u{1F3FC}", + "\u{1FAC4}\u{1F3FD}", + "\u{1FAC4}\u{1F3FE}", + "\u{1FAC4}\u{1F3FF}", + "\u{1FAC5}", + "\u{1FAC5}\u{1F3FB}", + "\u{1FAC5}\u{1F3FC}", + "\u{1FAC5}\u{1F3FD}", + "\u{1FAC5}\u{1F3FE}", + "\u{1FAC5}\u{1F3FF}", + "\u{1FAD7}", + "\u{1FAD8}", + "\u{1FAD9}", + "\u{1FAE0}", + "\u{1FAE1}", + "\u{1FAE2}", + "\u{1FAE3}", + "\u{1FAE4}", + "\u{1FAE5}", + "\u{1FAE6}", + "\u{1FAE7}", + "\u{1FAF0}", + "\u{1FAF0}\u{1F3FB}", + "\u{1FAF0}\u{1F3FC}", + "\u{1FAF0}\u{1F3FD}", + "\u{1FAF0}\u{1F3FE}", + "\u{1FAF0}\u{1F3FF}", + "\u{1FAF1}", + "\u{1FAF1}\u{1F3FB}", + "\u{1FAF1}\u{1F3FB}\u200D\u{1FAF2}\u{1F3FC}", + "\u{1FAF1}\u{1F3FB}\u200D\u{1FAF2}\u{1F3FD}", + "\u{1FAF1}\u{1F3FB}\u200D\u{1FAF2}\u{1F3FE}", + "\u{1FAF1}\u{1F3FB}\u200D\u{1FAF2}\u{1F3FF}", + "\u{1FAF1}\u{1F3FC}", + "\u{1FAF1}\u{1F3FC}\u200D\u{1FAF2}\u{1F3FB}", + "\u{1FAF1}\u{1F3FC}\u200D\u{1FAF2}\u{1F3FD}", + "\u{1FAF1}\u{1F3FC}\u200D\u{1FAF2}\u{1F3FE}", + "\u{1FAF1}\u{1F3FC}\u200D\u{1FAF2}\u{1F3FF}", + "\u{1FAF1}\u{1F3FD}", + "\u{1FAF1}\u{1F3FD}\u200D\u{1FAF2}\u{1F3FB}", + "\u{1FAF1}\u{1F3FD}\u200D\u{1FAF2}\u{1F3FC}", + "\u{1FAF1}\u{1F3FD}\u200D\u{1FAF2}\u{1F3FE}", + "\u{1FAF1}\u{1F3FD}\u200D\u{1FAF2}\u{1F3FF}", + "\u{1FAF1}\u{1F3FE}", + "\u{1FAF1}\u{1F3FE}\u200D\u{1FAF2}\u{1F3FB}", + "\u{1FAF1}\u{1F3FE}\u200D\u{1FAF2}\u{1F3FC}", + "\u{1FAF1}\u{1F3FE}\u200D\u{1FAF2}\u{1F3FD}", + "\u{1FAF1}\u{1F3FE}\u200D\u{1FAF2}\u{1F3FF}", + "\u{1FAF1}\u{1F3FF}", + "\u{1FAF1}\u{1F3FF}\u200D\u{1FAF2}\u{1F3FB}", + "\u{1FAF1}\u{1F3FF}\u200D\u{1FAF2}\u{1F3FC}", + "\u{1FAF1}\u{1F3FF}\u200D\u{1FAF2}\u{1F3FD}", + "\u{1FAF1}\u{1F3FF}\u200D\u{1FAF2}\u{1F3FE}", + "\u{1FAF2}", + "\u{1FAF2}\u{1F3FB}", + "\u{1FAF2}\u{1F3FC}", + "\u{1FAF2}\u{1F3FD}", + "\u{1FAF2}\u{1F3FE}", + "\u{1FAF2}\u{1F3FF}", + "\u{1FAF3}", + "\u{1FAF3}\u{1F3FB}", + "\u{1FAF3}\u{1F3FC}", + "\u{1FAF3}\u{1F3FD}", + "\u{1FAF3}\u{1F3FE}", + "\u{1FAF3}\u{1F3FF}", + "\u{1FAF4}", + "\u{1FAF4}\u{1F3FB}", + "\u{1FAF4}\u{1F3FC}", + "\u{1FAF4}\u{1F3FD}", + "\u{1FAF4}\u{1F3FE}", + "\u{1FAF4}\u{1F3FF}", + "\u{1FAF5}", + "\u{1FAF5}\u{1F3FB}", + "\u{1FAF5}\u{1F3FC}", + "\u{1FAF5}\u{1F3FD}", + "\u{1FAF5}\u{1F3FE}", + "\u{1FAF5}\u{1F3FF}", + "\u{1FAF6}", + "\u{1FAF6}\u{1F3FB}", + "\u{1FAF6}\u{1F3FC}", + "\u{1FAF6}\u{1F3FD}", + "\u{1FAF6}\u{1F3FE}", + "\u{1FAF6}\u{1F3FF}" + ], +}); diff --git a/test/language/identifiers/rgi-emoji-15.0.js b/test/language/identifiers/rgi-emoji-15.0.js new file mode 100644 index 00000000000..6673e98fa0d --- /dev/null +++ b/test/language/identifiers/rgi-emoji-15.0.js @@ -0,0 +1,52 @@ +// 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 15.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{1F426}\u200D\u2B1B", + "\u{1F6DC}", + "\u{1FA75}", + "\u{1FA76}", + "\u{1FA77}", + "\u{1FA87}", + "\u{1FA88}", + "\u{1FAAD}", + "\u{1FAAE}", + "\u{1FAAF}", + "\u{1FABB}", + "\u{1FABC}", + "\u{1FABD}", + "\u{1FABF}", + "\u{1FACE}", + "\u{1FACF}", + "\u{1FADA}", + "\u{1FADB}", + "\u{1FAE8}", + "\u{1FAF7}", + "\u{1FAF7}\u{1F3FB}", + "\u{1FAF7}\u{1F3FC}", + "\u{1FAF7}\u{1F3FD}", + "\u{1FAF7}\u{1F3FE}", + "\u{1FAF7}\u{1F3FF}", + "\u{1FAF8}", + "\u{1FAF8}\u{1F3FB}", + "\u{1FAF8}\u{1F3FC}", + "\u{1FAF8}\u{1F3FD}", + "\u{1FAF8}\u{1F3FE}", + "\u{1FAF8}\u{1F3FF}" + ], +}); diff --git a/test/language/identifiers/rgi-emoji-15.1.js b/test/language/identifiers/rgi-emoji-15.1.js new file mode 100644 index 00000000000..58405d7997d --- /dev/null +++ b/test/language/identifiers/rgi-emoji-15.1.js @@ -0,0 +1,139 @@ +// 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 15.1 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: [ + "\u26D3\uFE0F\u200D\u{1F4A5}", + "\u{1F344}\u200D\u{1F7EB}", + "\u{1F34B}\u200D\u{1F7E9}", + "\u{1F3C3}\u200D\u2640\uFE0F\u200D\u27A1\uFE0F", + "\u{1F3C3}\u200D\u2642\uFE0F\u200D\u27A1\uFE0F", + "\u{1F3C3}\u200D\u27A1\uFE0F", + "\u{1F3C3}\u{1F3FB}\u200D\u2640\uFE0F\u200D\u27A1\uFE0F", + "\u{1F3C3}\u{1F3FB}\u200D\u2642\uFE0F\u200D\u27A1\uFE0F", + "\u{1F3C3}\u{1F3FB}\u200D\u27A1\uFE0F", + "\u{1F3C3}\u{1F3FC}\u200D\u2640\uFE0F\u200D\u27A1\uFE0F", + "\u{1F3C3}\u{1F3FC}\u200D\u2642\uFE0F\u200D\u27A1\uFE0F", + "\u{1F3C3}\u{1F3FC}\u200D\u27A1\uFE0F", + "\u{1F3C3}\u{1F3FD}\u200D\u2640\uFE0F\u200D\u27A1\uFE0F", + "\u{1F3C3}\u{1F3FD}\u200D\u2642\uFE0F\u200D\u27A1\uFE0F", + "\u{1F3C3}\u{1F3FD}\u200D\u27A1\uFE0F", + "\u{1F3C3}\u{1F3FE}\u200D\u2640\uFE0F\u200D\u27A1\uFE0F", + "\u{1F3C3}\u{1F3FE}\u200D\u2642\uFE0F\u200D\u27A1\uFE0F", + "\u{1F3C3}\u{1F3FE}\u200D\u27A1\uFE0F", + "\u{1F3C3}\u{1F3FF}\u200D\u2640\uFE0F\u200D\u27A1\uFE0F", + "\u{1F3C3}\u{1F3FF}\u200D\u2642\uFE0F\u200D\u27A1\uFE0F", + "\u{1F3C3}\u{1F3FF}\u200D\u27A1\uFE0F", + "\u{1F426}\u200D\u{1F525}", + "\u{1F468}\u200D\u{1F9AF}\u200D\u27A1\uFE0F", + "\u{1F468}\u200D\u{1F9BC}\u200D\u27A1\uFE0F", + "\u{1F468}\u200D\u{1F9BD}\u200D\u27A1\uFE0F", + "\u{1F468}\u{1F3FB}\u200D\u{1F9AF}\u200D\u27A1\uFE0F", + "\u{1F468}\u{1F3FB}\u200D\u{1F9BC}\u200D\u27A1\uFE0F", + "\u{1F468}\u{1F3FB}\u200D\u{1F9BD}\u200D\u27A1\uFE0F", + "\u{1F468}\u{1F3FC}\u200D\u{1F9AF}\u200D\u27A1\uFE0F", + "\u{1F468}\u{1F3FC}\u200D\u{1F9BC}\u200D\u27A1\uFE0F", + "\u{1F468}\u{1F3FC}\u200D\u{1F9BD}\u200D\u27A1\uFE0F", + "\u{1F468}\u{1F3FD}\u200D\u{1F9AF}\u200D\u27A1\uFE0F", + "\u{1F468}\u{1F3FD}\u200D\u{1F9BC}\u200D\u27A1\uFE0F", + "\u{1F468}\u{1F3FD}\u200D\u{1F9BD}\u200D\u27A1\uFE0F", + "\u{1F468}\u{1F3FE}\u200D\u{1F9AF}\u200D\u27A1\uFE0F", + "\u{1F468}\u{1F3FE}\u200D\u{1F9BC}\u200D\u27A1\uFE0F", + "\u{1F468}\u{1F3FE}\u200D\u{1F9BD}\u200D\u27A1\uFE0F", + "\u{1F468}\u{1F3FF}\u200D\u{1F9AF}\u200D\u27A1\uFE0F", + "\u{1F468}\u{1F3FF}\u200D\u{1F9BC}\u200D\u27A1\uFE0F", + "\u{1F468}\u{1F3FF}\u200D\u{1F9BD}\u200D\u27A1\uFE0F", + "\u{1F469}\u200D\u{1F9AF}\u200D\u27A1\uFE0F", + "\u{1F469}\u200D\u{1F9BC}\u200D\u27A1\uFE0F", + "\u{1F469}\u200D\u{1F9BD}\u200D\u27A1\uFE0F", + "\u{1F469}\u{1F3FB}\u200D\u{1F9AF}\u200D\u27A1\uFE0F", + "\u{1F469}\u{1F3FB}\u200D\u{1F9BC}\u200D\u27A1\uFE0F", + "\u{1F469}\u{1F3FB}\u200D\u{1F9BD}\u200D\u27A1\uFE0F", + "\u{1F469}\u{1F3FC}\u200D\u{1F9AF}\u200D\u27A1\uFE0F", + "\u{1F469}\u{1F3FC}\u200D\u{1F9BC}\u200D\u27A1\uFE0F", + "\u{1F469}\u{1F3FC}\u200D\u{1F9BD}\u200D\u27A1\uFE0F", + "\u{1F469}\u{1F3FD}\u200D\u{1F9AF}\u200D\u27A1\uFE0F", + "\u{1F469}\u{1F3FD}\u200D\u{1F9BC}\u200D\u27A1\uFE0F", + "\u{1F469}\u{1F3FD}\u200D\u{1F9BD}\u200D\u27A1\uFE0F", + "\u{1F469}\u{1F3FE}\u200D\u{1F9AF}\u200D\u27A1\uFE0F", + "\u{1F469}\u{1F3FE}\u200D\u{1F9BC}\u200D\u27A1\uFE0F", + "\u{1F469}\u{1F3FE}\u200D\u{1F9BD}\u200D\u27A1\uFE0F", + "\u{1F469}\u{1F3FF}\u200D\u{1F9AF}\u200D\u27A1\uFE0F", + "\u{1F469}\u{1F3FF}\u200D\u{1F9BC}\u200D\u27A1\uFE0F", + "\u{1F469}\u{1F3FF}\u200D\u{1F9BD}\u200D\u27A1\uFE0F", + "\u{1F642}\u200D\u2194\uFE0F", + "\u{1F642}\u200D\u2195\uFE0F", + "\u{1F6B6}\u200D\u2640\uFE0F\u200D\u27A1\uFE0F", + "\u{1F6B6}\u200D\u2642\uFE0F\u200D\u27A1\uFE0F", + "\u{1F6B6}\u200D\u27A1\uFE0F", + "\u{1F6B6}\u{1F3FB}\u200D\u2640\uFE0F\u200D\u27A1\uFE0F", + "\u{1F6B6}\u{1F3FB}\u200D\u2642\uFE0F\u200D\u27A1\uFE0F", + "\u{1F6B6}\u{1F3FB}\u200D\u27A1\uFE0F", + "\u{1F6B6}\u{1F3FC}\u200D\u2640\uFE0F\u200D\u27A1\uFE0F", + "\u{1F6B6}\u{1F3FC}\u200D\u2642\uFE0F\u200D\u27A1\uFE0F", + "\u{1F6B6}\u{1F3FC}\u200D\u27A1\uFE0F", + "\u{1F6B6}\u{1F3FD}\u200D\u2640\uFE0F\u200D\u27A1\uFE0F", + "\u{1F6B6}\u{1F3FD}\u200D\u2642\uFE0F\u200D\u27A1\uFE0F", + "\u{1F6B6}\u{1F3FD}\u200D\u27A1\uFE0F", + "\u{1F6B6}\u{1F3FE}\u200D\u2640\uFE0F\u200D\u27A1\uFE0F", + "\u{1F6B6}\u{1F3FE}\u200D\u2642\uFE0F\u200D\u27A1\uFE0F", + "\u{1F6B6}\u{1F3FE}\u200D\u27A1\uFE0F", + "\u{1F6B6}\u{1F3FF}\u200D\u2640\uFE0F\u200D\u27A1\uFE0F", + "\u{1F6B6}\u{1F3FF}\u200D\u2642\uFE0F\u200D\u27A1\uFE0F", + "\u{1F6B6}\u{1F3FF}\u200D\u27A1\uFE0F", + "\u{1F9CE}\u200D\u2640\uFE0F\u200D\u27A1\uFE0F", + "\u{1F9CE}\u200D\u2642\uFE0F\u200D\u27A1\uFE0F", + "\u{1F9CE}\u200D\u27A1\uFE0F", + "\u{1F9CE}\u{1F3FB}\u200D\u2640\uFE0F\u200D\u27A1\uFE0F", + "\u{1F9CE}\u{1F3FB}\u200D\u2642\uFE0F\u200D\u27A1\uFE0F", + "\u{1F9CE}\u{1F3FB}\u200D\u27A1\uFE0F", + "\u{1F9CE}\u{1F3FC}\u200D\u2640\uFE0F\u200D\u27A1\uFE0F", + "\u{1F9CE}\u{1F3FC}\u200D\u2642\uFE0F\u200D\u27A1\uFE0F", + "\u{1F9CE}\u{1F3FC}\u200D\u27A1\uFE0F", + "\u{1F9CE}\u{1F3FD}\u200D\u2640\uFE0F\u200D\u27A1\uFE0F", + "\u{1F9CE}\u{1F3FD}\u200D\u2642\uFE0F\u200D\u27A1\uFE0F", + "\u{1F9CE}\u{1F3FD}\u200D\u27A1\uFE0F", + "\u{1F9CE}\u{1F3FE}\u200D\u2640\uFE0F\u200D\u27A1\uFE0F", + "\u{1F9CE}\u{1F3FE}\u200D\u2642\uFE0F\u200D\u27A1\uFE0F", + "\u{1F9CE}\u{1F3FE}\u200D\u27A1\uFE0F", + "\u{1F9CE}\u{1F3FF}\u200D\u2640\uFE0F\u200D\u27A1\uFE0F", + "\u{1F9CE}\u{1F3FF}\u200D\u2642\uFE0F\u200D\u27A1\uFE0F", + "\u{1F9CE}\u{1F3FF}\u200D\u27A1\uFE0F", + "\u{1F9D1}\u200D\u{1F9AF}\u200D\u27A1\uFE0F", + "\u{1F9D1}\u200D\u{1F9BC}\u200D\u27A1\uFE0F", + "\u{1F9D1}\u200D\u{1F9BD}\u200D\u27A1\uFE0F", + "\u{1F9D1}\u200D\u{1F9D1}\u200D\u{1F9D2}", + "\u{1F9D1}\u200D\u{1F9D1}\u200D\u{1F9D2}\u200D\u{1F9D2}", + "\u{1F9D1}\u200D\u{1F9D2}", + "\u{1F9D1}\u200D\u{1F9D2}\u200D\u{1F9D2}", + "\u{1F9D1}\u{1F3FB}\u200D\u{1F9AF}\u200D\u27A1\uFE0F", + "\u{1F9D1}\u{1F3FB}\u200D\u{1F9BC}\u200D\u27A1\uFE0F", + "\u{1F9D1}\u{1F3FB}\u200D\u{1F9BD}\u200D\u27A1\uFE0F", + "\u{1F9D1}\u{1F3FC}\u200D\u{1F9AF}\u200D\u27A1\uFE0F", + "\u{1F9D1}\u{1F3FC}\u200D\u{1F9BC}\u200D\u27A1\uFE0F", + "\u{1F9D1}\u{1F3FC}\u200D\u{1F9BD}\u200D\u27A1\uFE0F", + "\u{1F9D1}\u{1F3FD}\u200D\u{1F9AF}\u200D\u27A1\uFE0F", + "\u{1F9D1}\u{1F3FD}\u200D\u{1F9BC}\u200D\u27A1\uFE0F", + "\u{1F9D1}\u{1F3FD}\u200D\u{1F9BD}\u200D\u27A1\uFE0F", + "\u{1F9D1}\u{1F3FE}\u200D\u{1F9AF}\u200D\u27A1\uFE0F", + "\u{1F9D1}\u{1F3FE}\u200D\u{1F9BC}\u200D\u27A1\uFE0F", + "\u{1F9D1}\u{1F3FE}\u200D\u{1F9BD}\u200D\u27A1\uFE0F", + "\u{1F9D1}\u{1F3FF}\u200D\u{1F9AF}\u200D\u27A1\uFE0F", + "\u{1F9D1}\u{1F3FF}\u200D\u{1F9BC}\u200D\u27A1\uFE0F", + "\u{1F9D1}\u{1F3FF}\u200D\u{1F9BD}\u200D\u27A1\uFE0F" + ], +}); diff --git a/test/language/identifiers/rgi-emoji-16.0.js b/test/language/identifiers/rgi-emoji-16.0.js new file mode 100644 index 00000000000..ec74bcda2f3 --- /dev/null +++ b/test/language/identifiers/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/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. /*--- From 83c58c505555e699ab00a39b56153ec781746a84 Mon Sep 17 00:00:00 2001 From: Mathias Bynens Date: Fri, 13 Sep 2024 13:32:47 +0200 Subject: [PATCH 18/37] Move updated `unicodeSets` tests to their appropriate location --- .../unicodeSets/generated/rgi-emoji-13.1.js | 2 +- .../unicodeSets/generated/rgi-emoji-14.0.js | 2 +- .../unicodeSets/generated/rgi-emoji-15.0.js | 2 +- .../unicodeSets/generated/rgi-emoji-15.1.js | 2 +- .../unicodeSets/generated}/rgi-emoji-16.0.js | 0 test/language/identifiers/rgi-emoji-13.1.js | 238 ------------------ test/language/identifiers/rgi-emoji-14.0.js | 133 ---------- test/language/identifiers/rgi-emoji-15.0.js | 52 ---- test/language/identifiers/rgi-emoji-15.1.js | 139 ---------- 9 files changed, 4 insertions(+), 566 deletions(-) rename test/{language/identifiers => built-ins/RegExp/unicodeSets/generated}/rgi-emoji-16.0.js (100%) delete mode 100644 test/language/identifiers/rgi-emoji-13.1.js delete mode 100644 test/language/identifiers/rgi-emoji-14.0.js delete mode 100644 test/language/identifiers/rgi-emoji-15.0.js delete mode 100644 test/language/identifiers/rgi-emoji-15.1.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/language/identifiers/rgi-emoji-16.0.js b/test/built-ins/RegExp/unicodeSets/generated/rgi-emoji-16.0.js similarity index 100% rename from test/language/identifiers/rgi-emoji-16.0.js rename to test/built-ins/RegExp/unicodeSets/generated/rgi-emoji-16.0.js diff --git a/test/language/identifiers/rgi-emoji-13.1.js b/test/language/identifiers/rgi-emoji-13.1.js deleted file mode 100644 index 2525d3d2b9d..00000000000 --- a/test/language/identifiers/rgi-emoji-13.1.js +++ /dev/null @@ -1,238 +0,0 @@ -// 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 13.1 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: [ - "\u2764\uFE0F\u200D\u{1F525}", - "\u2764\uFE0F\u200D\u{1FA79}", - "\u{1F468}\u{1F3FB}\u200D\u2764\uFE0F\u200D\u{1F468}\u{1F3FB}", - "\u{1F468}\u{1F3FB}\u200D\u2764\uFE0F\u200D\u{1F468}\u{1F3FC}", - "\u{1F468}\u{1F3FB}\u200D\u2764\uFE0F\u200D\u{1F468}\u{1F3FD}", - "\u{1F468}\u{1F3FB}\u200D\u2764\uFE0F\u200D\u{1F468}\u{1F3FE}", - "\u{1F468}\u{1F3FB}\u200D\u2764\uFE0F\u200D\u{1F468}\u{1F3FF}", - "\u{1F468}\u{1F3FB}\u200D\u2764\uFE0F\u200D\u{1F48B}\u200D\u{1F468}\u{1F3FB}", - "\u{1F468}\u{1F3FB}\u200D\u2764\uFE0F\u200D\u{1F48B}\u200D\u{1F468}\u{1F3FC}", - "\u{1F468}\u{1F3FB}\u200D\u2764\uFE0F\u200D\u{1F48B}\u200D\u{1F468}\u{1F3FD}", - "\u{1F468}\u{1F3FB}\u200D\u2764\uFE0F\u200D\u{1F48B}\u200D\u{1F468}\u{1F3FE}", - "\u{1F468}\u{1F3FB}\u200D\u2764\uFE0F\u200D\u{1F48B}\u200D\u{1F468}\u{1F3FF}", - "\u{1F468}\u{1F3FC}\u200D\u2764\uFE0F\u200D\u{1F468}\u{1F3FB}", - "\u{1F468}\u{1F3FC}\u200D\u2764\uFE0F\u200D\u{1F468}\u{1F3FC}", - "\u{1F468}\u{1F3FC}\u200D\u2764\uFE0F\u200D\u{1F468}\u{1F3FD}", - "\u{1F468}\u{1F3FC}\u200D\u2764\uFE0F\u200D\u{1F468}\u{1F3FE}", - "\u{1F468}\u{1F3FC}\u200D\u2764\uFE0F\u200D\u{1F468}\u{1F3FF}", - "\u{1F468}\u{1F3FC}\u200D\u2764\uFE0F\u200D\u{1F48B}\u200D\u{1F468}\u{1F3FB}", - "\u{1F468}\u{1F3FC}\u200D\u2764\uFE0F\u200D\u{1F48B}\u200D\u{1F468}\u{1F3FC}", - "\u{1F468}\u{1F3FC}\u200D\u2764\uFE0F\u200D\u{1F48B}\u200D\u{1F468}\u{1F3FD}", - "\u{1F468}\u{1F3FC}\u200D\u2764\uFE0F\u200D\u{1F48B}\u200D\u{1F468}\u{1F3FE}", - "\u{1F468}\u{1F3FC}\u200D\u2764\uFE0F\u200D\u{1F48B}\u200D\u{1F468}\u{1F3FF}", - "\u{1F468}\u{1F3FD}\u200D\u2764\uFE0F\u200D\u{1F468}\u{1F3FB}", - "\u{1F468}\u{1F3FD}\u200D\u2764\uFE0F\u200D\u{1F468}\u{1F3FC}", - "\u{1F468}\u{1F3FD}\u200D\u2764\uFE0F\u200D\u{1F468}\u{1F3FD}", - "\u{1F468}\u{1F3FD}\u200D\u2764\uFE0F\u200D\u{1F468}\u{1F3FE}", - "\u{1F468}\u{1F3FD}\u200D\u2764\uFE0F\u200D\u{1F468}\u{1F3FF}", - "\u{1F468}\u{1F3FD}\u200D\u2764\uFE0F\u200D\u{1F48B}\u200D\u{1F468}\u{1F3FB}", - "\u{1F468}\u{1F3FD}\u200D\u2764\uFE0F\u200D\u{1F48B}\u200D\u{1F468}\u{1F3FC}", - "\u{1F468}\u{1F3FD}\u200D\u2764\uFE0F\u200D\u{1F48B}\u200D\u{1F468}\u{1F3FD}", - "\u{1F468}\u{1F3FD}\u200D\u2764\uFE0F\u200D\u{1F48B}\u200D\u{1F468}\u{1F3FE}", - "\u{1F468}\u{1F3FD}\u200D\u2764\uFE0F\u200D\u{1F48B}\u200D\u{1F468}\u{1F3FF}", - "\u{1F468}\u{1F3FE}\u200D\u2764\uFE0F\u200D\u{1F468}\u{1F3FB}", - "\u{1F468}\u{1F3FE}\u200D\u2764\uFE0F\u200D\u{1F468}\u{1F3FC}", - "\u{1F468}\u{1F3FE}\u200D\u2764\uFE0F\u200D\u{1F468}\u{1F3FD}", - "\u{1F468}\u{1F3FE}\u200D\u2764\uFE0F\u200D\u{1F468}\u{1F3FE}", - "\u{1F468}\u{1F3FE}\u200D\u2764\uFE0F\u200D\u{1F468}\u{1F3FF}", - "\u{1F468}\u{1F3FE}\u200D\u2764\uFE0F\u200D\u{1F48B}\u200D\u{1F468}\u{1F3FB}", - "\u{1F468}\u{1F3FE}\u200D\u2764\uFE0F\u200D\u{1F48B}\u200D\u{1F468}\u{1F3FC}", - "\u{1F468}\u{1F3FE}\u200D\u2764\uFE0F\u200D\u{1F48B}\u200D\u{1F468}\u{1F3FD}", - "\u{1F468}\u{1F3FE}\u200D\u2764\uFE0F\u200D\u{1F48B}\u200D\u{1F468}\u{1F3FE}", - "\u{1F468}\u{1F3FE}\u200D\u2764\uFE0F\u200D\u{1F48B}\u200D\u{1F468}\u{1F3FF}", - "\u{1F468}\u{1F3FF}\u200D\u2764\uFE0F\u200D\u{1F468}\u{1F3FB}", - "\u{1F468}\u{1F3FF}\u200D\u2764\uFE0F\u200D\u{1F468}\u{1F3FC}", - "\u{1F468}\u{1F3FF}\u200D\u2764\uFE0F\u200D\u{1F468}\u{1F3FD}", - "\u{1F468}\u{1F3FF}\u200D\u2764\uFE0F\u200D\u{1F468}\u{1F3FE}", - "\u{1F468}\u{1F3FF}\u200D\u2764\uFE0F\u200D\u{1F468}\u{1F3FF}", - "\u{1F468}\u{1F3FF}\u200D\u2764\uFE0F\u200D\u{1F48B}\u200D\u{1F468}\u{1F3FB}", - "\u{1F468}\u{1F3FF}\u200D\u2764\uFE0F\u200D\u{1F48B}\u200D\u{1F468}\u{1F3FC}", - "\u{1F468}\u{1F3FF}\u200D\u2764\uFE0F\u200D\u{1F48B}\u200D\u{1F468}\u{1F3FD}", - "\u{1F468}\u{1F3FF}\u200D\u2764\uFE0F\u200D\u{1F48B}\u200D\u{1F468}\u{1F3FE}", - "\u{1F468}\u{1F3FF}\u200D\u2764\uFE0F\u200D\u{1F48B}\u200D\u{1F468}\u{1F3FF}", - "\u{1F469}\u{1F3FB}\u200D\u2764\uFE0F\u200D\u{1F468}\u{1F3FB}", - "\u{1F469}\u{1F3FB}\u200D\u2764\uFE0F\u200D\u{1F468}\u{1F3FC}", - "\u{1F469}\u{1F3FB}\u200D\u2764\uFE0F\u200D\u{1F468}\u{1F3FD}", - "\u{1F469}\u{1F3FB}\u200D\u2764\uFE0F\u200D\u{1F468}\u{1F3FE}", - "\u{1F469}\u{1F3FB}\u200D\u2764\uFE0F\u200D\u{1F468}\u{1F3FF}", - "\u{1F469}\u{1F3FB}\u200D\u2764\uFE0F\u200D\u{1F469}\u{1F3FB}", - "\u{1F469}\u{1F3FB}\u200D\u2764\uFE0F\u200D\u{1F469}\u{1F3FC}", - "\u{1F469}\u{1F3FB}\u200D\u2764\uFE0F\u200D\u{1F469}\u{1F3FD}", - "\u{1F469}\u{1F3FB}\u200D\u2764\uFE0F\u200D\u{1F469}\u{1F3FE}", - "\u{1F469}\u{1F3FB}\u200D\u2764\uFE0F\u200D\u{1F469}\u{1F3FF}", - "\u{1F469}\u{1F3FB}\u200D\u2764\uFE0F\u200D\u{1F48B}\u200D\u{1F468}\u{1F3FB}", - "\u{1F469}\u{1F3FB}\u200D\u2764\uFE0F\u200D\u{1F48B}\u200D\u{1F468}\u{1F3FC}", - "\u{1F469}\u{1F3FB}\u200D\u2764\uFE0F\u200D\u{1F48B}\u200D\u{1F468}\u{1F3FD}", - "\u{1F469}\u{1F3FB}\u200D\u2764\uFE0F\u200D\u{1F48B}\u200D\u{1F468}\u{1F3FE}", - "\u{1F469}\u{1F3FB}\u200D\u2764\uFE0F\u200D\u{1F48B}\u200D\u{1F468}\u{1F3FF}", - "\u{1F469}\u{1F3FB}\u200D\u2764\uFE0F\u200D\u{1F48B}\u200D\u{1F469}\u{1F3FB}", - "\u{1F469}\u{1F3FB}\u200D\u2764\uFE0F\u200D\u{1F48B}\u200D\u{1F469}\u{1F3FC}", - "\u{1F469}\u{1F3FB}\u200D\u2764\uFE0F\u200D\u{1F48B}\u200D\u{1F469}\u{1F3FD}", - "\u{1F469}\u{1F3FB}\u200D\u2764\uFE0F\u200D\u{1F48B}\u200D\u{1F469}\u{1F3FE}", - "\u{1F469}\u{1F3FB}\u200D\u2764\uFE0F\u200D\u{1F48B}\u200D\u{1F469}\u{1F3FF}", - "\u{1F469}\u{1F3FC}\u200D\u2764\uFE0F\u200D\u{1F468}\u{1F3FB}", - "\u{1F469}\u{1F3FC}\u200D\u2764\uFE0F\u200D\u{1F468}\u{1F3FC}", - "\u{1F469}\u{1F3FC}\u200D\u2764\uFE0F\u200D\u{1F468}\u{1F3FD}", - "\u{1F469}\u{1F3FC}\u200D\u2764\uFE0F\u200D\u{1F468}\u{1F3FE}", - "\u{1F469}\u{1F3FC}\u200D\u2764\uFE0F\u200D\u{1F468}\u{1F3FF}", - "\u{1F469}\u{1F3FC}\u200D\u2764\uFE0F\u200D\u{1F469}\u{1F3FB}", - "\u{1F469}\u{1F3FC}\u200D\u2764\uFE0F\u200D\u{1F469}\u{1F3FC}", - "\u{1F469}\u{1F3FC}\u200D\u2764\uFE0F\u200D\u{1F469}\u{1F3FD}", - "\u{1F469}\u{1F3FC}\u200D\u2764\uFE0F\u200D\u{1F469}\u{1F3FE}", - "\u{1F469}\u{1F3FC}\u200D\u2764\uFE0F\u200D\u{1F469}\u{1F3FF}", - "\u{1F469}\u{1F3FC}\u200D\u2764\uFE0F\u200D\u{1F48B}\u200D\u{1F468}\u{1F3FB}", - "\u{1F469}\u{1F3FC}\u200D\u2764\uFE0F\u200D\u{1F48B}\u200D\u{1F468}\u{1F3FC}", - "\u{1F469}\u{1F3FC}\u200D\u2764\uFE0F\u200D\u{1F48B}\u200D\u{1F468}\u{1F3FD}", - "\u{1F469}\u{1F3FC}\u200D\u2764\uFE0F\u200D\u{1F48B}\u200D\u{1F468}\u{1F3FE}", - "\u{1F469}\u{1F3FC}\u200D\u2764\uFE0F\u200D\u{1F48B}\u200D\u{1F468}\u{1F3FF}", - "\u{1F469}\u{1F3FC}\u200D\u2764\uFE0F\u200D\u{1F48B}\u200D\u{1F469}\u{1F3FB}", - "\u{1F469}\u{1F3FC}\u200D\u2764\uFE0F\u200D\u{1F48B}\u200D\u{1F469}\u{1F3FC}", - "\u{1F469}\u{1F3FC}\u200D\u2764\uFE0F\u200D\u{1F48B}\u200D\u{1F469}\u{1F3FD}", - "\u{1F469}\u{1F3FC}\u200D\u2764\uFE0F\u200D\u{1F48B}\u200D\u{1F469}\u{1F3FE}", - "\u{1F469}\u{1F3FC}\u200D\u2764\uFE0F\u200D\u{1F48B}\u200D\u{1F469}\u{1F3FF}", - "\u{1F469}\u{1F3FD}\u200D\u2764\uFE0F\u200D\u{1F468}\u{1F3FB}", - "\u{1F469}\u{1F3FD}\u200D\u2764\uFE0F\u200D\u{1F468}\u{1F3FC}", - "\u{1F469}\u{1F3FD}\u200D\u2764\uFE0F\u200D\u{1F468}\u{1F3FD}", - "\u{1F469}\u{1F3FD}\u200D\u2764\uFE0F\u200D\u{1F468}\u{1F3FE}", - "\u{1F469}\u{1F3FD}\u200D\u2764\uFE0F\u200D\u{1F468}\u{1F3FF}", - "\u{1F469}\u{1F3FD}\u200D\u2764\uFE0F\u200D\u{1F469}\u{1F3FB}", - "\u{1F469}\u{1F3FD}\u200D\u2764\uFE0F\u200D\u{1F469}\u{1F3FC}", - "\u{1F469}\u{1F3FD}\u200D\u2764\uFE0F\u200D\u{1F469}\u{1F3FD}", - "\u{1F469}\u{1F3FD}\u200D\u2764\uFE0F\u200D\u{1F469}\u{1F3FE}", - "\u{1F469}\u{1F3FD}\u200D\u2764\uFE0F\u200D\u{1F469}\u{1F3FF}", - "\u{1F469}\u{1F3FD}\u200D\u2764\uFE0F\u200D\u{1F48B}\u200D\u{1F468}\u{1F3FB}", - "\u{1F469}\u{1F3FD}\u200D\u2764\uFE0F\u200D\u{1F48B}\u200D\u{1F468}\u{1F3FC}", - "\u{1F469}\u{1F3FD}\u200D\u2764\uFE0F\u200D\u{1F48B}\u200D\u{1F468}\u{1F3FD}", - "\u{1F469}\u{1F3FD}\u200D\u2764\uFE0F\u200D\u{1F48B}\u200D\u{1F468}\u{1F3FE}", - "\u{1F469}\u{1F3FD}\u200D\u2764\uFE0F\u200D\u{1F48B}\u200D\u{1F468}\u{1F3FF}", - "\u{1F469}\u{1F3FD}\u200D\u2764\uFE0F\u200D\u{1F48B}\u200D\u{1F469}\u{1F3FB}", - "\u{1F469}\u{1F3FD}\u200D\u2764\uFE0F\u200D\u{1F48B}\u200D\u{1F469}\u{1F3FC}", - "\u{1F469}\u{1F3FD}\u200D\u2764\uFE0F\u200D\u{1F48B}\u200D\u{1F469}\u{1F3FD}", - "\u{1F469}\u{1F3FD}\u200D\u2764\uFE0F\u200D\u{1F48B}\u200D\u{1F469}\u{1F3FE}", - "\u{1F469}\u{1F3FD}\u200D\u2764\uFE0F\u200D\u{1F48B}\u200D\u{1F469}\u{1F3FF}", - "\u{1F469}\u{1F3FE}\u200D\u2764\uFE0F\u200D\u{1F468}\u{1F3FB}", - "\u{1F469}\u{1F3FE}\u200D\u2764\uFE0F\u200D\u{1F468}\u{1F3FC}", - "\u{1F469}\u{1F3FE}\u200D\u2764\uFE0F\u200D\u{1F468}\u{1F3FD}", - "\u{1F469}\u{1F3FE}\u200D\u2764\uFE0F\u200D\u{1F468}\u{1F3FE}", - "\u{1F469}\u{1F3FE}\u200D\u2764\uFE0F\u200D\u{1F468}\u{1F3FF}", - "\u{1F469}\u{1F3FE}\u200D\u2764\uFE0F\u200D\u{1F469}\u{1F3FB}", - "\u{1F469}\u{1F3FE}\u200D\u2764\uFE0F\u200D\u{1F469}\u{1F3FC}", - "\u{1F469}\u{1F3FE}\u200D\u2764\uFE0F\u200D\u{1F469}\u{1F3FD}", - "\u{1F469}\u{1F3FE}\u200D\u2764\uFE0F\u200D\u{1F469}\u{1F3FE}", - "\u{1F469}\u{1F3FE}\u200D\u2764\uFE0F\u200D\u{1F469}\u{1F3FF}", - "\u{1F469}\u{1F3FE}\u200D\u2764\uFE0F\u200D\u{1F48B}\u200D\u{1F468}\u{1F3FB}", - "\u{1F469}\u{1F3FE}\u200D\u2764\uFE0F\u200D\u{1F48B}\u200D\u{1F468}\u{1F3FC}", - "\u{1F469}\u{1F3FE}\u200D\u2764\uFE0F\u200D\u{1F48B}\u200D\u{1F468}\u{1F3FD}", - "\u{1F469}\u{1F3FE}\u200D\u2764\uFE0F\u200D\u{1F48B}\u200D\u{1F468}\u{1F3FE}", - "\u{1F469}\u{1F3FE}\u200D\u2764\uFE0F\u200D\u{1F48B}\u200D\u{1F468}\u{1F3FF}", - "\u{1F469}\u{1F3FE}\u200D\u2764\uFE0F\u200D\u{1F48B}\u200D\u{1F469}\u{1F3FB}", - "\u{1F469}\u{1F3FE}\u200D\u2764\uFE0F\u200D\u{1F48B}\u200D\u{1F469}\u{1F3FC}", - "\u{1F469}\u{1F3FE}\u200D\u2764\uFE0F\u200D\u{1F48B}\u200D\u{1F469}\u{1F3FD}", - "\u{1F469}\u{1F3FE}\u200D\u2764\uFE0F\u200D\u{1F48B}\u200D\u{1F469}\u{1F3FE}", - "\u{1F469}\u{1F3FE}\u200D\u2764\uFE0F\u200D\u{1F48B}\u200D\u{1F469}\u{1F3FF}", - "\u{1F469}\u{1F3FF}\u200D\u2764\uFE0F\u200D\u{1F468}\u{1F3FB}", - "\u{1F469}\u{1F3FF}\u200D\u2764\uFE0F\u200D\u{1F468}\u{1F3FC}", - "\u{1F469}\u{1F3FF}\u200D\u2764\uFE0F\u200D\u{1F468}\u{1F3FD}", - "\u{1F469}\u{1F3FF}\u200D\u2764\uFE0F\u200D\u{1F468}\u{1F3FE}", - "\u{1F469}\u{1F3FF}\u200D\u2764\uFE0F\u200D\u{1F468}\u{1F3FF}", - "\u{1F469}\u{1F3FF}\u200D\u2764\uFE0F\u200D\u{1F469}\u{1F3FB}", - "\u{1F469}\u{1F3FF}\u200D\u2764\uFE0F\u200D\u{1F469}\u{1F3FC}", - "\u{1F469}\u{1F3FF}\u200D\u2764\uFE0F\u200D\u{1F469}\u{1F3FD}", - "\u{1F469}\u{1F3FF}\u200D\u2764\uFE0F\u200D\u{1F469}\u{1F3FE}", - "\u{1F469}\u{1F3FF}\u200D\u2764\uFE0F\u200D\u{1F469}\u{1F3FF}", - "\u{1F469}\u{1F3FF}\u200D\u2764\uFE0F\u200D\u{1F48B}\u200D\u{1F468}\u{1F3FB}", - "\u{1F469}\u{1F3FF}\u200D\u2764\uFE0F\u200D\u{1F48B}\u200D\u{1F468}\u{1F3FC}", - "\u{1F469}\u{1F3FF}\u200D\u2764\uFE0F\u200D\u{1F48B}\u200D\u{1F468}\u{1F3FD}", - "\u{1F469}\u{1F3FF}\u200D\u2764\uFE0F\u200D\u{1F48B}\u200D\u{1F468}\u{1F3FE}", - "\u{1F469}\u{1F3FF}\u200D\u2764\uFE0F\u200D\u{1F48B}\u200D\u{1F468}\u{1F3FF}", - "\u{1F469}\u{1F3FF}\u200D\u2764\uFE0F\u200D\u{1F48B}\u200D\u{1F469}\u{1F3FB}", - "\u{1F469}\u{1F3FF}\u200D\u2764\uFE0F\u200D\u{1F48B}\u200D\u{1F469}\u{1F3FC}", - "\u{1F469}\u{1F3FF}\u200D\u2764\uFE0F\u200D\u{1F48B}\u200D\u{1F469}\u{1F3FD}", - "\u{1F469}\u{1F3FF}\u200D\u2764\uFE0F\u200D\u{1F48B}\u200D\u{1F469}\u{1F3FE}", - "\u{1F469}\u{1F3FF}\u200D\u2764\uFE0F\u200D\u{1F48B}\u200D\u{1F469}\u{1F3FF}", - "\u{1F48F}\u{1F3FB}", - "\u{1F48F}\u{1F3FC}", - "\u{1F48F}\u{1F3FD}", - "\u{1F48F}\u{1F3FE}", - "\u{1F48F}\u{1F3FF}", - "\u{1F491}\u{1F3FB}", - "\u{1F491}\u{1F3FC}", - "\u{1F491}\u{1F3FD}", - "\u{1F491}\u{1F3FE}", - "\u{1F491}\u{1F3FF}", - "\u{1F62E}\u200D\u{1F4A8}", - "\u{1F635}\u200D\u{1F4AB}", - "\u{1F636}\u200D\u{1F32B}\uFE0F", - "\u{1F9D1}\u{1F3FB}\u200D\u2764\uFE0F\u200D\u{1F48B}\u200D\u{1F9D1}\u{1F3FC}", - "\u{1F9D1}\u{1F3FB}\u200D\u2764\uFE0F\u200D\u{1F48B}\u200D\u{1F9D1}\u{1F3FD}", - "\u{1F9D1}\u{1F3FB}\u200D\u2764\uFE0F\u200D\u{1F48B}\u200D\u{1F9D1}\u{1F3FE}", - "\u{1F9D1}\u{1F3FB}\u200D\u2764\uFE0F\u200D\u{1F48B}\u200D\u{1F9D1}\u{1F3FF}", - "\u{1F9D1}\u{1F3FB}\u200D\u2764\uFE0F\u200D\u{1F9D1}\u{1F3FC}", - "\u{1F9D1}\u{1F3FB}\u200D\u2764\uFE0F\u200D\u{1F9D1}\u{1F3FD}", - "\u{1F9D1}\u{1F3FB}\u200D\u2764\uFE0F\u200D\u{1F9D1}\u{1F3FE}", - "\u{1F9D1}\u{1F3FB}\u200D\u2764\uFE0F\u200D\u{1F9D1}\u{1F3FF}", - "\u{1F9D1}\u{1F3FC}\u200D\u2764\uFE0F\u200D\u{1F48B}\u200D\u{1F9D1}\u{1F3FB}", - "\u{1F9D1}\u{1F3FC}\u200D\u2764\uFE0F\u200D\u{1F48B}\u200D\u{1F9D1}\u{1F3FD}", - "\u{1F9D1}\u{1F3FC}\u200D\u2764\uFE0F\u200D\u{1F48B}\u200D\u{1F9D1}\u{1F3FE}", - "\u{1F9D1}\u{1F3FC}\u200D\u2764\uFE0F\u200D\u{1F48B}\u200D\u{1F9D1}\u{1F3FF}", - "\u{1F9D1}\u{1F3FC}\u200D\u2764\uFE0F\u200D\u{1F9D1}\u{1F3FB}", - "\u{1F9D1}\u{1F3FC}\u200D\u2764\uFE0F\u200D\u{1F9D1}\u{1F3FD}", - "\u{1F9D1}\u{1F3FC}\u200D\u2764\uFE0F\u200D\u{1F9D1}\u{1F3FE}", - "\u{1F9D1}\u{1F3FC}\u200D\u2764\uFE0F\u200D\u{1F9D1}\u{1F3FF}", - "\u{1F9D1}\u{1F3FD}\u200D\u2764\uFE0F\u200D\u{1F48B}\u200D\u{1F9D1}\u{1F3FB}", - "\u{1F9D1}\u{1F3FD}\u200D\u2764\uFE0F\u200D\u{1F48B}\u200D\u{1F9D1}\u{1F3FC}", - "\u{1F9D1}\u{1F3FD}\u200D\u2764\uFE0F\u200D\u{1F48B}\u200D\u{1F9D1}\u{1F3FE}", - "\u{1F9D1}\u{1F3FD}\u200D\u2764\uFE0F\u200D\u{1F48B}\u200D\u{1F9D1}\u{1F3FF}", - "\u{1F9D1}\u{1F3FD}\u200D\u2764\uFE0F\u200D\u{1F9D1}\u{1F3FB}", - "\u{1F9D1}\u{1F3FD}\u200D\u2764\uFE0F\u200D\u{1F9D1}\u{1F3FC}", - "\u{1F9D1}\u{1F3FD}\u200D\u2764\uFE0F\u200D\u{1F9D1}\u{1F3FE}", - "\u{1F9D1}\u{1F3FD}\u200D\u2764\uFE0F\u200D\u{1F9D1}\u{1F3FF}", - "\u{1F9D1}\u{1F3FE}\u200D\u2764\uFE0F\u200D\u{1F48B}\u200D\u{1F9D1}\u{1F3FB}", - "\u{1F9D1}\u{1F3FE}\u200D\u2764\uFE0F\u200D\u{1F48B}\u200D\u{1F9D1}\u{1F3FC}", - "\u{1F9D1}\u{1F3FE}\u200D\u2764\uFE0F\u200D\u{1F48B}\u200D\u{1F9D1}\u{1F3FD}", - "\u{1F9D1}\u{1F3FE}\u200D\u2764\uFE0F\u200D\u{1F48B}\u200D\u{1F9D1}\u{1F3FF}", - "\u{1F9D1}\u{1F3FE}\u200D\u2764\uFE0F\u200D\u{1F9D1}\u{1F3FB}", - "\u{1F9D1}\u{1F3FE}\u200D\u2764\uFE0F\u200D\u{1F9D1}\u{1F3FC}", - "\u{1F9D1}\u{1F3FE}\u200D\u2764\uFE0F\u200D\u{1F9D1}\u{1F3FD}", - "\u{1F9D1}\u{1F3FE}\u200D\u2764\uFE0F\u200D\u{1F9D1}\u{1F3FF}", - "\u{1F9D1}\u{1F3FF}\u200D\u2764\uFE0F\u200D\u{1F48B}\u200D\u{1F9D1}\u{1F3FB}", - "\u{1F9D1}\u{1F3FF}\u200D\u2764\uFE0F\u200D\u{1F48B}\u200D\u{1F9D1}\u{1F3FC}", - "\u{1F9D1}\u{1F3FF}\u200D\u2764\uFE0F\u200D\u{1F48B}\u200D\u{1F9D1}\u{1F3FD}", - "\u{1F9D1}\u{1F3FF}\u200D\u2764\uFE0F\u200D\u{1F48B}\u200D\u{1F9D1}\u{1F3FE}", - "\u{1F9D1}\u{1F3FF}\u200D\u2764\uFE0F\u200D\u{1F9D1}\u{1F3FB}", - "\u{1F9D1}\u{1F3FF}\u200D\u2764\uFE0F\u200D\u{1F9D1}\u{1F3FC}", - "\u{1F9D1}\u{1F3FF}\u200D\u2764\uFE0F\u200D\u{1F9D1}\u{1F3FD}", - "\u{1F9D1}\u{1F3FF}\u200D\u2764\uFE0F\u200D\u{1F9D1}\u{1F3FE}", - "\u{1F9D4}\u200D\u2640\uFE0F", - "\u{1F9D4}\u200D\u2642\uFE0F", - "\u{1F9D4}\u{1F3FB}\u200D\u2640\uFE0F", - "\u{1F9D4}\u{1F3FB}\u200D\u2642\uFE0F", - "\u{1F9D4}\u{1F3FC}\u200D\u2640\uFE0F", - "\u{1F9D4}\u{1F3FC}\u200D\u2642\uFE0F", - "\u{1F9D4}\u{1F3FD}\u200D\u2640\uFE0F", - "\u{1F9D4}\u{1F3FD}\u200D\u2642\uFE0F", - "\u{1F9D4}\u{1F3FE}\u200D\u2640\uFE0F", - "\u{1F9D4}\u{1F3FE}\u200D\u2642\uFE0F", - "\u{1F9D4}\u{1F3FF}\u200D\u2640\uFE0F", - "\u{1F9D4}\u{1F3FF}\u200D\u2642\uFE0F" - ], -}); diff --git a/test/language/identifiers/rgi-emoji-14.0.js b/test/language/identifiers/rgi-emoji-14.0.js deleted file mode 100644 index 57c55b1e59b..00000000000 --- a/test/language/identifiers/rgi-emoji-14.0.js +++ /dev/null @@ -1,133 +0,0 @@ -// 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 14.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{1F6DD}", - "\u{1F6DE}", - "\u{1F6DF}", - "\u{1F7F0}", - "\u{1F91D}\u{1F3FB}", - "\u{1F91D}\u{1F3FC}", - "\u{1F91D}\u{1F3FD}", - "\u{1F91D}\u{1F3FE}", - "\u{1F91D}\u{1F3FF}", - "\u{1F979}", - "\u{1F9CC}", - "\u{1FA7B}", - "\u{1FA7C}", - "\u{1FAA9}", - "\u{1FAAA}", - "\u{1FAAB}", - "\u{1FAAC}", - "\u{1FAB7}", - "\u{1FAB8}", - "\u{1FAB9}", - "\u{1FABA}", - "\u{1FAC3}", - "\u{1FAC3}\u{1F3FB}", - "\u{1FAC3}\u{1F3FC}", - "\u{1FAC3}\u{1F3FD}", - "\u{1FAC3}\u{1F3FE}", - "\u{1FAC3}\u{1F3FF}", - "\u{1FAC4}", - "\u{1FAC4}\u{1F3FB}", - "\u{1FAC4}\u{1F3FC}", - "\u{1FAC4}\u{1F3FD}", - "\u{1FAC4}\u{1F3FE}", - "\u{1FAC4}\u{1F3FF}", - "\u{1FAC5}", - "\u{1FAC5}\u{1F3FB}", - "\u{1FAC5}\u{1F3FC}", - "\u{1FAC5}\u{1F3FD}", - "\u{1FAC5}\u{1F3FE}", - "\u{1FAC5}\u{1F3FF}", - "\u{1FAD7}", - "\u{1FAD8}", - "\u{1FAD9}", - "\u{1FAE0}", - "\u{1FAE1}", - "\u{1FAE2}", - "\u{1FAE3}", - "\u{1FAE4}", - "\u{1FAE5}", - "\u{1FAE6}", - "\u{1FAE7}", - "\u{1FAF0}", - "\u{1FAF0}\u{1F3FB}", - "\u{1FAF0}\u{1F3FC}", - "\u{1FAF0}\u{1F3FD}", - "\u{1FAF0}\u{1F3FE}", - "\u{1FAF0}\u{1F3FF}", - "\u{1FAF1}", - "\u{1FAF1}\u{1F3FB}", - "\u{1FAF1}\u{1F3FB}\u200D\u{1FAF2}\u{1F3FC}", - "\u{1FAF1}\u{1F3FB}\u200D\u{1FAF2}\u{1F3FD}", - "\u{1FAF1}\u{1F3FB}\u200D\u{1FAF2}\u{1F3FE}", - "\u{1FAF1}\u{1F3FB}\u200D\u{1FAF2}\u{1F3FF}", - "\u{1FAF1}\u{1F3FC}", - "\u{1FAF1}\u{1F3FC}\u200D\u{1FAF2}\u{1F3FB}", - "\u{1FAF1}\u{1F3FC}\u200D\u{1FAF2}\u{1F3FD}", - "\u{1FAF1}\u{1F3FC}\u200D\u{1FAF2}\u{1F3FE}", - "\u{1FAF1}\u{1F3FC}\u200D\u{1FAF2}\u{1F3FF}", - "\u{1FAF1}\u{1F3FD}", - "\u{1FAF1}\u{1F3FD}\u200D\u{1FAF2}\u{1F3FB}", - "\u{1FAF1}\u{1F3FD}\u200D\u{1FAF2}\u{1F3FC}", - "\u{1FAF1}\u{1F3FD}\u200D\u{1FAF2}\u{1F3FE}", - "\u{1FAF1}\u{1F3FD}\u200D\u{1FAF2}\u{1F3FF}", - "\u{1FAF1}\u{1F3FE}", - "\u{1FAF1}\u{1F3FE}\u200D\u{1FAF2}\u{1F3FB}", - "\u{1FAF1}\u{1F3FE}\u200D\u{1FAF2}\u{1F3FC}", - "\u{1FAF1}\u{1F3FE}\u200D\u{1FAF2}\u{1F3FD}", - "\u{1FAF1}\u{1F3FE}\u200D\u{1FAF2}\u{1F3FF}", - "\u{1FAF1}\u{1F3FF}", - "\u{1FAF1}\u{1F3FF}\u200D\u{1FAF2}\u{1F3FB}", - "\u{1FAF1}\u{1F3FF}\u200D\u{1FAF2}\u{1F3FC}", - "\u{1FAF1}\u{1F3FF}\u200D\u{1FAF2}\u{1F3FD}", - "\u{1FAF1}\u{1F3FF}\u200D\u{1FAF2}\u{1F3FE}", - "\u{1FAF2}", - "\u{1FAF2}\u{1F3FB}", - "\u{1FAF2}\u{1F3FC}", - "\u{1FAF2}\u{1F3FD}", - "\u{1FAF2}\u{1F3FE}", - "\u{1FAF2}\u{1F3FF}", - "\u{1FAF3}", - "\u{1FAF3}\u{1F3FB}", - "\u{1FAF3}\u{1F3FC}", - "\u{1FAF3}\u{1F3FD}", - "\u{1FAF3}\u{1F3FE}", - "\u{1FAF3}\u{1F3FF}", - "\u{1FAF4}", - "\u{1FAF4}\u{1F3FB}", - "\u{1FAF4}\u{1F3FC}", - "\u{1FAF4}\u{1F3FD}", - "\u{1FAF4}\u{1F3FE}", - "\u{1FAF4}\u{1F3FF}", - "\u{1FAF5}", - "\u{1FAF5}\u{1F3FB}", - "\u{1FAF5}\u{1F3FC}", - "\u{1FAF5}\u{1F3FD}", - "\u{1FAF5}\u{1F3FE}", - "\u{1FAF5}\u{1F3FF}", - "\u{1FAF6}", - "\u{1FAF6}\u{1F3FB}", - "\u{1FAF6}\u{1F3FC}", - "\u{1FAF6}\u{1F3FD}", - "\u{1FAF6}\u{1F3FE}", - "\u{1FAF6}\u{1F3FF}" - ], -}); diff --git a/test/language/identifiers/rgi-emoji-15.0.js b/test/language/identifiers/rgi-emoji-15.0.js deleted file mode 100644 index 6673e98fa0d..00000000000 --- a/test/language/identifiers/rgi-emoji-15.0.js +++ /dev/null @@ -1,52 +0,0 @@ -// 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 15.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{1F426}\u200D\u2B1B", - "\u{1F6DC}", - "\u{1FA75}", - "\u{1FA76}", - "\u{1FA77}", - "\u{1FA87}", - "\u{1FA88}", - "\u{1FAAD}", - "\u{1FAAE}", - "\u{1FAAF}", - "\u{1FABB}", - "\u{1FABC}", - "\u{1FABD}", - "\u{1FABF}", - "\u{1FACE}", - "\u{1FACF}", - "\u{1FADA}", - "\u{1FADB}", - "\u{1FAE8}", - "\u{1FAF7}", - "\u{1FAF7}\u{1F3FB}", - "\u{1FAF7}\u{1F3FC}", - "\u{1FAF7}\u{1F3FD}", - "\u{1FAF7}\u{1F3FE}", - "\u{1FAF7}\u{1F3FF}", - "\u{1FAF8}", - "\u{1FAF8}\u{1F3FB}", - "\u{1FAF8}\u{1F3FC}", - "\u{1FAF8}\u{1F3FD}", - "\u{1FAF8}\u{1F3FE}", - "\u{1FAF8}\u{1F3FF}" - ], -}); diff --git a/test/language/identifiers/rgi-emoji-15.1.js b/test/language/identifiers/rgi-emoji-15.1.js deleted file mode 100644 index 58405d7997d..00000000000 --- a/test/language/identifiers/rgi-emoji-15.1.js +++ /dev/null @@ -1,139 +0,0 @@ -// 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 15.1 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: [ - "\u26D3\uFE0F\u200D\u{1F4A5}", - "\u{1F344}\u200D\u{1F7EB}", - "\u{1F34B}\u200D\u{1F7E9}", - "\u{1F3C3}\u200D\u2640\uFE0F\u200D\u27A1\uFE0F", - "\u{1F3C3}\u200D\u2642\uFE0F\u200D\u27A1\uFE0F", - "\u{1F3C3}\u200D\u27A1\uFE0F", - "\u{1F3C3}\u{1F3FB}\u200D\u2640\uFE0F\u200D\u27A1\uFE0F", - "\u{1F3C3}\u{1F3FB}\u200D\u2642\uFE0F\u200D\u27A1\uFE0F", - "\u{1F3C3}\u{1F3FB}\u200D\u27A1\uFE0F", - "\u{1F3C3}\u{1F3FC}\u200D\u2640\uFE0F\u200D\u27A1\uFE0F", - "\u{1F3C3}\u{1F3FC}\u200D\u2642\uFE0F\u200D\u27A1\uFE0F", - "\u{1F3C3}\u{1F3FC}\u200D\u27A1\uFE0F", - "\u{1F3C3}\u{1F3FD}\u200D\u2640\uFE0F\u200D\u27A1\uFE0F", - "\u{1F3C3}\u{1F3FD}\u200D\u2642\uFE0F\u200D\u27A1\uFE0F", - "\u{1F3C3}\u{1F3FD}\u200D\u27A1\uFE0F", - "\u{1F3C3}\u{1F3FE}\u200D\u2640\uFE0F\u200D\u27A1\uFE0F", - "\u{1F3C3}\u{1F3FE}\u200D\u2642\uFE0F\u200D\u27A1\uFE0F", - "\u{1F3C3}\u{1F3FE}\u200D\u27A1\uFE0F", - "\u{1F3C3}\u{1F3FF}\u200D\u2640\uFE0F\u200D\u27A1\uFE0F", - "\u{1F3C3}\u{1F3FF}\u200D\u2642\uFE0F\u200D\u27A1\uFE0F", - "\u{1F3C3}\u{1F3FF}\u200D\u27A1\uFE0F", - "\u{1F426}\u200D\u{1F525}", - "\u{1F468}\u200D\u{1F9AF}\u200D\u27A1\uFE0F", - "\u{1F468}\u200D\u{1F9BC}\u200D\u27A1\uFE0F", - "\u{1F468}\u200D\u{1F9BD}\u200D\u27A1\uFE0F", - "\u{1F468}\u{1F3FB}\u200D\u{1F9AF}\u200D\u27A1\uFE0F", - "\u{1F468}\u{1F3FB}\u200D\u{1F9BC}\u200D\u27A1\uFE0F", - "\u{1F468}\u{1F3FB}\u200D\u{1F9BD}\u200D\u27A1\uFE0F", - "\u{1F468}\u{1F3FC}\u200D\u{1F9AF}\u200D\u27A1\uFE0F", - "\u{1F468}\u{1F3FC}\u200D\u{1F9BC}\u200D\u27A1\uFE0F", - "\u{1F468}\u{1F3FC}\u200D\u{1F9BD}\u200D\u27A1\uFE0F", - "\u{1F468}\u{1F3FD}\u200D\u{1F9AF}\u200D\u27A1\uFE0F", - "\u{1F468}\u{1F3FD}\u200D\u{1F9BC}\u200D\u27A1\uFE0F", - "\u{1F468}\u{1F3FD}\u200D\u{1F9BD}\u200D\u27A1\uFE0F", - "\u{1F468}\u{1F3FE}\u200D\u{1F9AF}\u200D\u27A1\uFE0F", - "\u{1F468}\u{1F3FE}\u200D\u{1F9BC}\u200D\u27A1\uFE0F", - "\u{1F468}\u{1F3FE}\u200D\u{1F9BD}\u200D\u27A1\uFE0F", - "\u{1F468}\u{1F3FF}\u200D\u{1F9AF}\u200D\u27A1\uFE0F", - "\u{1F468}\u{1F3FF}\u200D\u{1F9BC}\u200D\u27A1\uFE0F", - "\u{1F468}\u{1F3FF}\u200D\u{1F9BD}\u200D\u27A1\uFE0F", - "\u{1F469}\u200D\u{1F9AF}\u200D\u27A1\uFE0F", - "\u{1F469}\u200D\u{1F9BC}\u200D\u27A1\uFE0F", - "\u{1F469}\u200D\u{1F9BD}\u200D\u27A1\uFE0F", - "\u{1F469}\u{1F3FB}\u200D\u{1F9AF}\u200D\u27A1\uFE0F", - "\u{1F469}\u{1F3FB}\u200D\u{1F9BC}\u200D\u27A1\uFE0F", - "\u{1F469}\u{1F3FB}\u200D\u{1F9BD}\u200D\u27A1\uFE0F", - "\u{1F469}\u{1F3FC}\u200D\u{1F9AF}\u200D\u27A1\uFE0F", - "\u{1F469}\u{1F3FC}\u200D\u{1F9BC}\u200D\u27A1\uFE0F", - "\u{1F469}\u{1F3FC}\u200D\u{1F9BD}\u200D\u27A1\uFE0F", - "\u{1F469}\u{1F3FD}\u200D\u{1F9AF}\u200D\u27A1\uFE0F", - "\u{1F469}\u{1F3FD}\u200D\u{1F9BC}\u200D\u27A1\uFE0F", - "\u{1F469}\u{1F3FD}\u200D\u{1F9BD}\u200D\u27A1\uFE0F", - "\u{1F469}\u{1F3FE}\u200D\u{1F9AF}\u200D\u27A1\uFE0F", - "\u{1F469}\u{1F3FE}\u200D\u{1F9BC}\u200D\u27A1\uFE0F", - "\u{1F469}\u{1F3FE}\u200D\u{1F9BD}\u200D\u27A1\uFE0F", - "\u{1F469}\u{1F3FF}\u200D\u{1F9AF}\u200D\u27A1\uFE0F", - "\u{1F469}\u{1F3FF}\u200D\u{1F9BC}\u200D\u27A1\uFE0F", - "\u{1F469}\u{1F3FF}\u200D\u{1F9BD}\u200D\u27A1\uFE0F", - "\u{1F642}\u200D\u2194\uFE0F", - "\u{1F642}\u200D\u2195\uFE0F", - "\u{1F6B6}\u200D\u2640\uFE0F\u200D\u27A1\uFE0F", - "\u{1F6B6}\u200D\u2642\uFE0F\u200D\u27A1\uFE0F", - "\u{1F6B6}\u200D\u27A1\uFE0F", - "\u{1F6B6}\u{1F3FB}\u200D\u2640\uFE0F\u200D\u27A1\uFE0F", - "\u{1F6B6}\u{1F3FB}\u200D\u2642\uFE0F\u200D\u27A1\uFE0F", - "\u{1F6B6}\u{1F3FB}\u200D\u27A1\uFE0F", - "\u{1F6B6}\u{1F3FC}\u200D\u2640\uFE0F\u200D\u27A1\uFE0F", - "\u{1F6B6}\u{1F3FC}\u200D\u2642\uFE0F\u200D\u27A1\uFE0F", - "\u{1F6B6}\u{1F3FC}\u200D\u27A1\uFE0F", - "\u{1F6B6}\u{1F3FD}\u200D\u2640\uFE0F\u200D\u27A1\uFE0F", - "\u{1F6B6}\u{1F3FD}\u200D\u2642\uFE0F\u200D\u27A1\uFE0F", - "\u{1F6B6}\u{1F3FD}\u200D\u27A1\uFE0F", - "\u{1F6B6}\u{1F3FE}\u200D\u2640\uFE0F\u200D\u27A1\uFE0F", - "\u{1F6B6}\u{1F3FE}\u200D\u2642\uFE0F\u200D\u27A1\uFE0F", - "\u{1F6B6}\u{1F3FE}\u200D\u27A1\uFE0F", - "\u{1F6B6}\u{1F3FF}\u200D\u2640\uFE0F\u200D\u27A1\uFE0F", - "\u{1F6B6}\u{1F3FF}\u200D\u2642\uFE0F\u200D\u27A1\uFE0F", - "\u{1F6B6}\u{1F3FF}\u200D\u27A1\uFE0F", - "\u{1F9CE}\u200D\u2640\uFE0F\u200D\u27A1\uFE0F", - "\u{1F9CE}\u200D\u2642\uFE0F\u200D\u27A1\uFE0F", - "\u{1F9CE}\u200D\u27A1\uFE0F", - "\u{1F9CE}\u{1F3FB}\u200D\u2640\uFE0F\u200D\u27A1\uFE0F", - "\u{1F9CE}\u{1F3FB}\u200D\u2642\uFE0F\u200D\u27A1\uFE0F", - "\u{1F9CE}\u{1F3FB}\u200D\u27A1\uFE0F", - "\u{1F9CE}\u{1F3FC}\u200D\u2640\uFE0F\u200D\u27A1\uFE0F", - "\u{1F9CE}\u{1F3FC}\u200D\u2642\uFE0F\u200D\u27A1\uFE0F", - "\u{1F9CE}\u{1F3FC}\u200D\u27A1\uFE0F", - "\u{1F9CE}\u{1F3FD}\u200D\u2640\uFE0F\u200D\u27A1\uFE0F", - "\u{1F9CE}\u{1F3FD}\u200D\u2642\uFE0F\u200D\u27A1\uFE0F", - "\u{1F9CE}\u{1F3FD}\u200D\u27A1\uFE0F", - "\u{1F9CE}\u{1F3FE}\u200D\u2640\uFE0F\u200D\u27A1\uFE0F", - "\u{1F9CE}\u{1F3FE}\u200D\u2642\uFE0F\u200D\u27A1\uFE0F", - "\u{1F9CE}\u{1F3FE}\u200D\u27A1\uFE0F", - "\u{1F9CE}\u{1F3FF}\u200D\u2640\uFE0F\u200D\u27A1\uFE0F", - "\u{1F9CE}\u{1F3FF}\u200D\u2642\uFE0F\u200D\u27A1\uFE0F", - "\u{1F9CE}\u{1F3FF}\u200D\u27A1\uFE0F", - "\u{1F9D1}\u200D\u{1F9AF}\u200D\u27A1\uFE0F", - "\u{1F9D1}\u200D\u{1F9BC}\u200D\u27A1\uFE0F", - "\u{1F9D1}\u200D\u{1F9BD}\u200D\u27A1\uFE0F", - "\u{1F9D1}\u200D\u{1F9D1}\u200D\u{1F9D2}", - "\u{1F9D1}\u200D\u{1F9D1}\u200D\u{1F9D2}\u200D\u{1F9D2}", - "\u{1F9D1}\u200D\u{1F9D2}", - "\u{1F9D1}\u200D\u{1F9D2}\u200D\u{1F9D2}", - "\u{1F9D1}\u{1F3FB}\u200D\u{1F9AF}\u200D\u27A1\uFE0F", - "\u{1F9D1}\u{1F3FB}\u200D\u{1F9BC}\u200D\u27A1\uFE0F", - "\u{1F9D1}\u{1F3FB}\u200D\u{1F9BD}\u200D\u27A1\uFE0F", - "\u{1F9D1}\u{1F3FC}\u200D\u{1F9AF}\u200D\u27A1\uFE0F", - "\u{1F9D1}\u{1F3FC}\u200D\u{1F9BC}\u200D\u27A1\uFE0F", - "\u{1F9D1}\u{1F3FC}\u200D\u{1F9BD}\u200D\u27A1\uFE0F", - "\u{1F9D1}\u{1F3FD}\u200D\u{1F9AF}\u200D\u27A1\uFE0F", - "\u{1F9D1}\u{1F3FD}\u200D\u{1F9BC}\u200D\u27A1\uFE0F", - "\u{1F9D1}\u{1F3FD}\u200D\u{1F9BD}\u200D\u27A1\uFE0F", - "\u{1F9D1}\u{1F3FE}\u200D\u{1F9AF}\u200D\u27A1\uFE0F", - "\u{1F9D1}\u{1F3FE}\u200D\u{1F9BC}\u200D\u27A1\uFE0F", - "\u{1F9D1}\u{1F3FE}\u200D\u{1F9BD}\u200D\u27A1\uFE0F", - "\u{1F9D1}\u{1F3FF}\u200D\u{1F9AF}\u200D\u27A1\uFE0F", - "\u{1F9D1}\u{1F3FF}\u200D\u{1F9BC}\u200D\u27A1\uFE0F", - "\u{1F9D1}\u{1F3FF}\u200D\u{1F9BD}\u200D\u27A1\uFE0F" - ], -}); From 77e98fb683e93df997393e2b6feabb9bc0321532 Mon Sep 17 00:00:00 2001 From: Mathias Bynens Date: Fri, 13 Sep 2024 13:42:46 +0200 Subject: [PATCH 19/37] Add tests for Unicode v16 property escapes Issue: https://github.com/tc39/ecma262/issues/3425 --- .../property-escapes/generated/ASCII.js | 2 +- .../generated/ASCII_Hex_Digit.js | 2 +- .../property-escapes/generated/Alphabetic.js | 94 ++++++-- .../RegExp/property-escapes/generated/Any.js | 2 +- .../property-escapes/generated/Assigned.js | 144 +++++++---- .../generated/Bidi_Control.js | 2 +- .../generated/Bidi_Mirrored.js | 6 +- .../generated/Case_Ignorable.js | 54 ++++- .../property-escapes/generated/Cased.js | 20 +- .../generated/Changes_When_Casefolded.js | 20 +- .../generated/Changes_When_Casemapped.js | 28 +-- .../generated/Changes_When_Lowercased.js | 20 +- .../generated/Changes_When_NFKC_Casefolded.js | 24 +- .../generated/Changes_When_Titlecased.js | 26 +- .../generated/Changes_When_Uppercased.js | 26 +- .../RegExp/property-escapes/generated/Dash.js | 6 +- .../generated/Default_Ignorable_Code_Point.js | 2 +- .../property-escapes/generated/Deprecated.js | 2 +- .../property-escapes/generated/Diacritic.js | 68 ++++-- .../property-escapes/generated/Emoji.js | 22 +- .../generated/Emoji_Component.js | 2 +- .../generated/Emoji_Modifier.js | 2 +- .../generated/Emoji_Modifier_Base.js | 2 +- .../generated/Emoji_Presentation.js | 22 +- .../generated/Extended_Pictographic.js | 2 +- .../property-escapes/generated/Extender.js | 28 ++- .../General_Category_-_Cased_Letter.js | 20 +- .../General_Category_-_Close_Punctuation.js | 2 +- ...eneral_Category_-_Connector_Punctuation.js | 2 +- .../generated/General_Category_-_Control.js | 2 +- .../General_Category_-_Currency_Symbol.js | 2 +- .../General_Category_-_Dash_Punctuation.js | 6 +- .../General_Category_-_Decimal_Number.js | 28 ++- .../General_Category_-_Enclosing_Mark.js | 2 +- .../General_Category_-_Final_Punctuation.js | 2 +- .../generated/General_Category_-_Format.js | 2 +- .../General_Category_-_Initial_Punctuation.js | 2 +- .../generated/General_Category_-_Letter.js | 70 ++++-- .../General_Category_-_Letter_Number.js | 2 +- .../General_Category_-_Line_Separator.js | 2 +- .../General_Category_-_Lowercase_Letter.js | 18 +- .../generated/General_Category_-_Mark.js | 42 +++- .../General_Category_-_Math_Symbol.js | 6 +- .../General_Category_-_Modifier_Letter.js | 14 +- .../General_Category_-_Modifier_Symbol.js | 2 +- .../General_Category_-_Nonspacing_Mark.js | 44 +++- .../generated/General_Category_-_Number.js | 30 ++- .../General_Category_-_Open_Punctuation.js | 2 +- .../generated/General_Category_-_Other.js | 144 +++++++---- .../General_Category_-_Other_Letter.js | 58 ++++- .../General_Category_-_Other_Number.js | 2 +- .../General_Category_-_Other_Punctuation.js | 30 ++- .../General_Category_-_Other_Symbol.js | 44 ++-- .../General_Category_-_Paragraph_Separator.js | 2 +- .../General_Category_-_Private_Use.js | 2 +- .../General_Category_-_Punctuation.js | 34 ++- .../generated/General_Category_-_Separator.js | 2 +- .../General_Category_-_Space_Separator.js | 2 +- .../General_Category_-_Spacing_Mark.js | 24 +- .../generated/General_Category_-_Surrogate.js | 2 +- .../generated/General_Category_-_Symbol.js | 48 ++-- .../General_Category_-_Titlecase_Letter.js | 2 +- .../General_Category_-_Unassigned.js | 144 +++++++---- .../General_Category_-_Uppercase_Letter.js | 20 +- .../generated/Grapheme_Base.js | 226 ++++++++++-------- .../generated/Grapheme_Extend.js | 130 ++++++---- .../property-escapes/generated/Hex_Digit.js | 2 +- .../generated/IDS_Binary_Operator.js | 2 +- .../generated/IDS_Trinary_Operator.js | 2 +- .../property-escapes/generated/ID_Continue.js | 98 ++++++-- .../property-escapes/generated/ID_Start.js | 70 ++++-- .../property-escapes/generated/Ideographic.js | 6 +- .../generated/Join_Control.js | 2 +- .../generated/Logical_Order_Exception.js | 2 +- .../property-escapes/generated/Lowercase.js | 18 +- .../RegExp/property-escapes/generated/Math.js | 6 +- .../generated/Noncharacter_Code_Point.js | 2 +- .../generated/Pattern_Syntax.js | 2 +- .../generated/Pattern_White_Space.js | 2 +- .../generated/Quotation_Mark.js | 2 +- .../property-escapes/generated/Radical.js | 2 +- .../generated/Regional_Indicator.js | 2 +- .../generated/Script_-_Adlam.js | 2 +- .../generated/Script_-_Ahom.js | 2 +- .../Script_-_Anatolian_Hieroglyphs.js | 2 +- .../generated/Script_-_Arabic.js | 12 +- .../generated/Script_-_Armenian.js | 2 +- .../generated/Script_-_Avestan.js | 2 +- .../generated/Script_-_Balinese.js | 11 +- .../generated/Script_-_Bamum.js | 2 +- .../generated/Script_-_Bassa_Vah.js | 2 +- .../generated/Script_-_Batak.js | 2 +- .../generated/Script_-_Bengali.js | 2 +- .../generated/Script_-_Bhaiksuki.js | 2 +- .../generated/Script_-_Bopomofo.js | 2 +- .../generated/Script_-_Brahmi.js | 2 +- .../generated/Script_-_Braille.js | 2 +- .../generated/Script_-_Buginese.js | 2 +- .../generated/Script_-_Buhid.js | 2 +- .../generated/Script_-_Canadian_Aboriginal.js | 2 +- .../generated/Script_-_Carian.js | 2 +- .../generated/Script_-_Caucasian_Albanian.js | 2 +- .../generated/Script_-_Chakma.js | 2 +- .../generated/Script_-_Cham.js | 2 +- .../generated/Script_-_Cherokee.js | 2 +- .../generated/Script_-_Chorasmian.js | 2 +- .../generated/Script_-_Common.js | 44 ++-- .../generated/Script_-_Coptic.js | 2 +- .../generated/Script_-_Cuneiform.js | 2 +- .../generated/Script_-_Cypriot.js | 2 +- .../generated/Script_-_Cypro_Minoan.js | 2 +- .../generated/Script_-_Cyrillic.js | 6 +- .../generated/Script_-_Deseret.js | 2 +- .../generated/Script_-_Devanagari.js | 2 +- .../generated/Script_-_Dives_Akuru.js | 2 +- .../generated/Script_-_Dogra.js | 2 +- .../generated/Script_-_Duployan.js | 2 +- .../Script_-_Egyptian_Hieroglyphs.js | 8 +- .../generated/Script_-_Elbasan.js | 2 +- .../generated/Script_-_Elymaic.js | 2 +- .../generated/Script_-_Ethiopic.js | 2 +- .../generated/Script_-_Garay.js | 75 ++++++ .../generated/Script_-_Georgian.js | 2 +- .../generated/Script_-_Glagolitic.js | 2 +- .../generated/Script_-_Gothic.js | 2 +- .../generated/Script_-_Grantha.js | 2 +- .../generated/Script_-_Greek.js | 2 +- .../generated/Script_-_Gujarati.js | 2 +- .../generated/Script_-_Gunjala_Gondi.js | 2 +- .../generated/Script_-_Gurmukhi.js | 2 +- .../generated/Script_-_Gurung_Khema.js | 71 ++++++ .../generated/Script_-_Han.js | 2 +- .../generated/Script_-_Hangul.js | 2 +- .../generated/Script_-_Hanifi_Rohingya.js | 2 +- .../generated/Script_-_Hanunoo.js | 2 +- .../generated/Script_-_Hatran.js | 2 +- .../generated/Script_-_Hebrew.js | 2 +- .../generated/Script_-_Hiragana.js | 2 +- .../generated/Script_-_Imperial_Aramaic.js | 2 +- .../generated/Script_-_Inherited.js | 2 +- .../Script_-_Inscriptional_Pahlavi.js | 2 +- .../Script_-_Inscriptional_Parthian.js | 2 +- .../generated/Script_-_Javanese.js | 2 +- .../generated/Script_-_Kaithi.js | 2 +- .../generated/Script_-_Kannada.js | 2 +- .../generated/Script_-_Katakana.js | 2 +- .../generated/Script_-_Kawi.js | 6 +- .../generated/Script_-_Kayah_Li.js | 2 +- .../generated/Script_-_Kharoshthi.js | 2 +- .../generated/Script_-_Khitan_Small_Script.js | 8 +- .../generated/Script_-_Khmer.js | 2 +- .../generated/Script_-_Khojki.js | 2 +- .../generated/Script_-_Khudawadi.js | 2 +- .../generated/Script_-_Kirat_Rai.js | 71 ++++++ .../generated/Script_-_Lao.js | 2 +- .../generated/Script_-_Latin.js | 10 +- .../generated/Script_-_Lepcha.js | 2 +- .../generated/Script_-_Limbu.js | 2 +- .../generated/Script_-_Linear_A.js | 2 +- .../generated/Script_-_Linear_B.js | 2 +- .../generated/Script_-_Lisu.js | 2 +- .../generated/Script_-_Lycian.js | 2 +- .../generated/Script_-_Lydian.js | 2 +- .../generated/Script_-_Mahajani.js | 2 +- .../generated/Script_-_Makasar.js | 2 +- .../generated/Script_-_Malayalam.js | 2 +- .../generated/Script_-_Mandaic.js | 2 +- .../generated/Script_-_Manichaean.js | 2 +- .../generated/Script_-_Marchen.js | 2 +- .../generated/Script_-_Masaram_Gondi.js | 2 +- .../generated/Script_-_Medefaidrin.js | 2 +- .../generated/Script_-_Meetei_Mayek.js | 2 +- .../generated/Script_-_Mende_Kikakui.js | 2 +- .../generated/Script_-_Meroitic_Cursive.js | 2 +- .../Script_-_Meroitic_Hieroglyphs.js | 2 +- .../generated/Script_-_Miao.js | 2 +- .../generated/Script_-_Modi.js | 2 +- .../generated/Script_-_Mongolian.js | 2 +- .../generated/Script_-_Mro.js | 2 +- .../generated/Script_-_Multani.js | 2 +- .../generated/Script_-_Myanmar.js | 8 +- .../generated/Script_-_Nabataean.js | 2 +- .../generated/Script_-_Nag_Mundari.js | 2 +- .../generated/Script_-_Nandinagari.js | 2 +- .../generated/Script_-_New_Tai_Lue.js | 2 +- .../generated/Script_-_Newa.js | 2 +- .../generated/Script_-_Nko.js | 2 +- .../generated/Script_-_Nushu.js | 2 +- .../Script_-_Nyiakeng_Puachue_Hmong.js | 2 +- .../generated/Script_-_Ogham.js | 2 +- .../generated/Script_-_Ol_Chiki.js | 2 +- .../generated/Script_-_Ol_Onal.js | 74 ++++++ .../generated/Script_-_Old_Hungarian.js | 2 +- .../generated/Script_-_Old_Italic.js | 2 +- .../generated/Script_-_Old_North_Arabian.js | 2 +- .../generated/Script_-_Old_Permic.js | 2 +- .../generated/Script_-_Old_Persian.js | 2 +- .../generated/Script_-_Old_Sogdian.js | 2 +- .../generated/Script_-_Old_South_Arabian.js | 2 +- .../generated/Script_-_Old_Turkic.js | 2 +- .../generated/Script_-_Old_Uyghur.js | 2 +- .../generated/Script_-_Oriya.js | 2 +- .../generated/Script_-_Osage.js | 2 +- .../generated/Script_-_Osmanya.js | 2 +- .../generated/Script_-_Pahawh_Hmong.js | 2 +- .../generated/Script_-_Palmyrene.js | 2 +- .../generated/Script_-_Pau_Cin_Hau.js | 2 +- .../generated/Script_-_Phags_Pa.js | 2 +- .../generated/Script_-_Phoenician.js | 2 +- .../generated/Script_-_Psalter_Pahlavi.js | 2 +- .../generated/Script_-_Rejang.js | 2 +- .../generated/Script_-_Runic.js | 2 +- .../generated/Script_-_Samaritan.js | 2 +- .../generated/Script_-_Saurashtra.js | 2 +- .../generated/Script_-_Sharada.js | 2 +- .../generated/Script_-_Shavian.js | 2 +- .../generated/Script_-_Siddham.js | 2 +- .../generated/Script_-_SignWriting.js | 2 +- .../generated/Script_-_Sinhala.js | 2 +- .../generated/Script_-_Sogdian.js | 2 +- .../generated/Script_-_Sora_Sompeng.js | 2 +- .../generated/Script_-_Soyombo.js | 2 +- .../generated/Script_-_Sundanese.js | 2 +- .../generated/Script_-_Sunuwar.js | 73 ++++++ .../generated/Script_-_Syloti_Nagri.js | 2 +- .../generated/Script_-_Syriac.js | 2 +- .../generated/Script_-_Tagalog.js | 2 +- .../generated/Script_-_Tagbanwa.js | 2 +- .../generated/Script_-_Tai_Le.js | 2 +- .../generated/Script_-_Tai_Tham.js | 2 +- .../generated/Script_-_Tai_Viet.js | 2 +- .../generated/Script_-_Takri.js | 2 +- .../generated/Script_-_Tamil.js | 2 +- .../generated/Script_-_Tangsa.js | 2 +- .../generated/Script_-_Tangut.js | 2 +- .../generated/Script_-_Telugu.js | 2 +- .../generated/Script_-_Thaana.js | 2 +- .../generated/Script_-_Thai.js | 2 +- .../generated/Script_-_Tibetan.js | 2 +- .../generated/Script_-_Tifinagh.js | 2 +- .../generated/Script_-_Tirhuta.js | 2 +- .../generated/Script_-_Todhri.js | 71 ++++++ .../generated/Script_-_Toto.js | 2 +- .../generated/Script_-_Tulu_Tigalari.js | 93 +++++++ .../generated/Script_-_Ugaritic.js | 2 +- .../generated/Script_-_Vai.js | 2 +- .../generated/Script_-_Vithkuqi.js | 2 +- .../generated/Script_-_Wancho.js | 2 +- .../generated/Script_-_Warang_Citi.js | 2 +- .../generated/Script_-_Yezidi.js | 2 +- .../property-escapes/generated/Script_-_Yi.js | 2 +- .../generated/Script_-_Zanabazar_Square.js | 2 +- .../generated/Script_Extensions_-_Adlam.js | 10 +- .../generated/Script_Extensions_-_Ahom.js | 2 +- ...ript_Extensions_-_Anatolian_Hieroglyphs.js | 2 +- .../generated/Script_Extensions_-_Arabic.js | 18 +- .../generated/Script_Extensions_-_Armenian.js | 9 +- .../generated/Script_Extensions_-_Avestan.js | 11 +- .../generated/Script_Extensions_-_Balinese.js | 11 +- .../generated/Script_Extensions_-_Bamum.js | 2 +- .../Script_Extensions_-_Bassa_Vah.js | 2 +- .../generated/Script_Extensions_-_Batak.js | 2 +- .../generated/Script_Extensions_-_Bengali.js | 6 +- .../Script_Extensions_-_Bhaiksuki.js | 2 +- .../generated/Script_Extensions_-_Bopomofo.js | 10 +- .../generated/Script_Extensions_-_Brahmi.js | 2 +- .../generated/Script_Extensions_-_Braille.js | 2 +- .../generated/Script_Extensions_-_Buginese.js | 2 +- .../generated/Script_Extensions_-_Buhid.js | 2 +- ...Script_Extensions_-_Canadian_Aboriginal.js | 2 +- .../generated/Script_Extensions_-_Carian.js | 15 +- .../Script_Extensions_-_Caucasian_Albanian.js | 10 +- .../generated/Script_Extensions_-_Chakma.js | 2 +- .../generated/Script_Extensions_-_Cham.js | 2 +- .../generated/Script_Extensions_-_Cherokee.js | 20 +- .../Script_Extensions_-_Chorasmian.js | 2 +- .../generated/Script_Extensions_-_Common.js | 92 ++++--- .../generated/Script_Extensions_-_Coptic.js | 24 +- .../Script_Extensions_-_Cuneiform.js | 2 +- .../generated/Script_Extensions_-_Cypriot.js | 2 +- .../Script_Extensions_-_Cypro_Minoan.js | 2 +- .../generated/Script_Extensions_-_Cyrillic.js | 25 +- .../generated/Script_Extensions_-_Deseret.js | 2 +- .../Script_Extensions_-_Devanagari.js | 6 +- .../Script_Extensions_-_Dives_Akuru.js | 2 +- .../generated/Script_Extensions_-_Dogra.js | 2 +- .../generated/Script_Extensions_-_Duployan.js | 20 +- ...cript_Extensions_-_Egyptian_Hieroglyphs.js | 8 +- .../generated/Script_Extensions_-_Elbasan.js | 11 +- .../generated/Script_Extensions_-_Elymaic.js | 2 +- .../generated/Script_Extensions_-_Ethiopic.js | 6 +- .../generated/Script_Extensions_-_Garay.js | 82 +++++++ .../generated/Script_Extensions_-_Georgian.js | 18 +- .../Script_Extensions_-_Glagolitic.js | 18 +- .../generated/Script_Extensions_-_Gothic.js | 15 +- .../generated/Script_Extensions_-_Grantha.js | 2 +- .../generated/Script_Extensions_-_Greek.js | 24 +- .../generated/Script_Extensions_-_Gujarati.js | 2 +- .../Script_Extensions_-_Gunjala_Gondi.js | 9 +- .../generated/Script_Extensions_-_Gurmukhi.js | 2 +- .../Script_Extensions_-_Gurung_Khema.js | 74 ++++++ .../generated/Script_Extensions_-_Han.js | 16 +- .../generated/Script_Extensions_-_Hangul.js | 2 +- .../Script_Extensions_-_Hanifi_Rohingya.js | 2 +- .../generated/Script_Extensions_-_Hanunoo.js | 2 +- .../generated/Script_Extensions_-_Hatran.js | 2 +- .../generated/Script_Extensions_-_Hebrew.js | 6 +- .../generated/Script_Extensions_-_Hiragana.js | 2 +- .../Script_Extensions_-_Imperial_Aramaic.js | 2 +- .../Script_Extensions_-_Inherited.js | 24 +- ...ript_Extensions_-_Inscriptional_Pahlavi.js | 2 +- ...ipt_Extensions_-_Inscriptional_Parthian.js | 2 +- .../generated/Script_Extensions_-_Javanese.js | 2 +- .../generated/Script_Extensions_-_Kaithi.js | 6 +- .../generated/Script_Extensions_-_Kannada.js | 6 +- .../generated/Script_Extensions_-_Katakana.js | 8 +- .../generated/Script_Extensions_-_Kawi.js | 6 +- .../generated/Script_Extensions_-_Kayah_Li.js | 2 +- .../Script_Extensions_-_Kharoshthi.js | 2 +- ...Script_Extensions_-_Khitan_Small_Script.js | 8 +- .../generated/Script_Extensions_-_Khmer.js | 2 +- .../generated/Script_Extensions_-_Khojki.js | 2 +- .../Script_Extensions_-_Khudawadi.js | 2 +- .../Script_Extensions_-_Kirat_Rai.js | 71 ++++++ .../generated/Script_Extensions_-_Lao.js | 2 +- .../generated/Script_Extensions_-_Latin.js | 56 ++++- .../generated/Script_Extensions_-_Lepcha.js | 2 +- .../generated/Script_Extensions_-_Limbu.js | 2 +- .../generated/Script_Extensions_-_Linear_A.js | 2 +- .../generated/Script_Extensions_-_Linear_B.js | 2 +- .../generated/Script_Extensions_-_Lisu.js | 10 +- .../generated/Script_Extensions_-_Lycian.js | 9 +- .../generated/Script_Extensions_-_Lydian.js | 8 +- .../generated/Script_Extensions_-_Mahajani.js | 9 +- .../generated/Script_Extensions_-_Makasar.js | 2 +- .../Script_Extensions_-_Malayalam.js | 2 +- .../generated/Script_Extensions_-_Mandaic.js | 2 +- .../Script_Extensions_-_Manichaean.js | 2 +- .../generated/Script_Extensions_-_Marchen.js | 2 +- .../Script_Extensions_-_Masaram_Gondi.js | 2 +- .../Script_Extensions_-_Medefaidrin.js | 2 +- .../Script_Extensions_-_Meetei_Mayek.js | 2 +- .../Script_Extensions_-_Mende_Kikakui.js | 2 +- .../Script_Extensions_-_Meroitic_Cursive.js | 2 +- ...cript_Extensions_-_Meroitic_Hieroglyphs.js | 9 +- .../generated/Script_Extensions_-_Miao.js | 2 +- .../generated/Script_Extensions_-_Modi.js | 2 +- .../Script_Extensions_-_Mongolian.js | 8 +- .../generated/Script_Extensions_-_Mro.js | 2 +- .../generated/Script_Extensions_-_Multani.js | 2 +- .../generated/Script_Extensions_-_Myanmar.js | 8 +- .../Script_Extensions_-_Nabataean.js | 2 +- .../Script_Extensions_-_Nag_Mundari.js | 2 +- .../Script_Extensions_-_Nandinagari.js | 2 +- .../Script_Extensions_-_New_Tai_Lue.js | 2 +- .../generated/Script_Extensions_-_Newa.js | 2 +- .../generated/Script_Extensions_-_Nko.js | 2 +- .../generated/Script_Extensions_-_Nushu.js | 2 +- ...ipt_Extensions_-_Nyiakeng_Puachue_Hmong.js | 2 +- .../generated/Script_Extensions_-_Ogham.js | 2 +- .../generated/Script_Extensions_-_Ol_Chiki.js | 2 +- .../generated/Script_Extensions_-_Ol_Onal.js | 76 ++++++ .../Script_Extensions_-_Old_Hungarian.js | 15 +- .../Script_Extensions_-_Old_Italic.js | 2 +- .../Script_Extensions_-_Old_North_Arabian.js | 2 +- .../Script_Extensions_-_Old_Permic.js | 12 +- .../Script_Extensions_-_Old_Persian.js | 2 +- .../Script_Extensions_-_Old_Sogdian.js | 2 +- .../Script_Extensions_-_Old_South_Arabian.js | 2 +- .../Script_Extensions_-_Old_Turkic.js | 11 +- .../Script_Extensions_-_Old_Uyghur.js | 2 +- .../generated/Script_Extensions_-_Oriya.js | 2 +- .../generated/Script_Extensions_-_Osage.js | 15 +- .../generated/Script_Extensions_-_Osmanya.js | 2 +- .../Script_Extensions_-_Pahawh_Hmong.js | 2 +- .../Script_Extensions_-_Palmyrene.js | 2 +- .../Script_Extensions_-_Pau_Cin_Hau.js | 2 +- .../generated/Script_Extensions_-_Phags_Pa.js | 10 +- .../Script_Extensions_-_Phoenician.js | 2 +- .../Script_Extensions_-_Psalter_Pahlavi.js | 2 +- .../generated/Script_Extensions_-_Rejang.js | 2 +- .../generated/Script_Extensions_-_Runic.js | 6 +- .../Script_Extensions_-_Samaritan.js | 9 +- .../Script_Extensions_-_Saurashtra.js | 2 +- .../generated/Script_Extensions_-_Sharada.js | 2 +- .../generated/Script_Extensions_-_Shavian.js | 9 +- .../generated/Script_Extensions_-_Siddham.js | 2 +- .../Script_Extensions_-_SignWriting.js | 2 +- .../generated/Script_Extensions_-_Sinhala.js | 2 +- .../generated/Script_Extensions_-_Sogdian.js | 2 +- .../Script_Extensions_-_Sora_Sompeng.js | 2 +- .../generated/Script_Extensions_-_Soyombo.js | 2 +- .../Script_Extensions_-_Sundanese.js | 2 +- .../generated/Script_Extensions_-_Sunuwar.js | 87 +++++++ .../Script_Extensions_-_Syloti_Nagri.js | 2 +- .../generated/Script_Extensions_-_Syriac.js | 18 +- .../generated/Script_Extensions_-_Tagalog.js | 2 +- .../generated/Script_Extensions_-_Tagbanwa.js | 2 +- .../generated/Script_Extensions_-_Tai_Le.js | 13 +- .../generated/Script_Extensions_-_Tai_Tham.js | 2 +- .../generated/Script_Extensions_-_Tai_Viet.js | 2 +- .../generated/Script_Extensions_-_Takri.js | 2 +- .../generated/Script_Extensions_-_Tamil.js | 2 +- .../generated/Script_Extensions_-_Tangsa.js | 2 +- .../generated/Script_Extensions_-_Tangut.js | 8 +- .../generated/Script_Extensions_-_Telugu.js | 2 +- .../generated/Script_Extensions_-_Thaana.js | 2 +- .../generated/Script_Extensions_-_Thai.js | 15 +- .../generated/Script_Extensions_-_Tibetan.js | 8 +- .../generated/Script_Extensions_-_Tifinagh.js | 15 +- .../generated/Script_Extensions_-_Tirhuta.js | 2 +- .../generated/Script_Extensions_-_Todhri.js | 85 +++++++ .../generated/Script_Extensions_-_Toto.js | 9 +- .../Script_Extensions_-_Tulu_Tigalari.js | 103 ++++++++ .../generated/Script_Extensions_-_Ugaritic.js | 2 +- .../generated/Script_Extensions_-_Vai.js | 2 +- .../generated/Script_Extensions_-_Vithkuqi.js | 2 +- .../generated/Script_Extensions_-_Wancho.js | 2 +- .../Script_Extensions_-_Warang_Citi.js | 2 +- .../generated/Script_Extensions_-_Yezidi.js | 2 +- .../generated/Script_Extensions_-_Yi.js | 2 +- .../Script_Extensions_-_Zanabazar_Square.js | 2 +- .../generated/Sentence_Terminal.js | 34 ++- .../property-escapes/generated/Soft_Dotted.js | 2 +- .../generated/Terminal_Punctuation.js | 36 ++- .../generated/Unified_Ideograph.js | 2 +- .../property-escapes/generated/Uppercase.js | 20 +- .../generated/Variation_Selector.js | 2 +- .../property-escapes/generated/White_Space.js | 2 +- .../generated/XID_Continue.js | 98 ++++++-- .../property-escapes/generated/XID_Start.js | 70 ++++-- .../Basic_Emoji-negative-CharacterClass.js | 2 +- .../strings/Basic_Emoji-negative-P.js | 2 +- .../strings/Basic_Emoji-negative-u.js | 2 +- .../generated/strings/Basic_Emoji.js | 9 +- ...Keycap_Sequence-negative-CharacterClass.js | 2 +- .../Emoji_Keycap_Sequence-negative-P.js | 2 +- .../Emoji_Keycap_Sequence-negative-u.js | 2 +- .../strings/Emoji_Keycap_Sequence.js | 2 +- .../RGI_Emoji-negative-CharacterClass.js | 2 +- .../generated/strings/RGI_Emoji-negative-P.js | 2 +- .../generated/strings/RGI_Emoji-negative-u.js | 2 +- .../generated/strings/RGI_Emoji.js | 10 +- ...i_Flag_Sequence-negative-CharacterClass.js | 2 +- .../RGI_Emoji_Flag_Sequence-negative-P.js | 2 +- .../RGI_Emoji_Flag_Sequence-negative-u.js | 2 +- .../strings/RGI_Emoji_Flag_Sequence.js | 3 +- ...difier_Sequence-negative-CharacterClass.js | 2 +- .../RGI_Emoji_Modifier_Sequence-negative-P.js | 2 +- .../RGI_Emoji_Modifier_Sequence-negative-u.js | 2 +- .../strings/RGI_Emoji_Modifier_Sequence.js | 2 +- ...ji_Tag_Sequence-negative-CharacterClass.js | 2 +- .../RGI_Emoji_Tag_Sequence-negative-P.js | 2 +- .../RGI_Emoji_Tag_Sequence-negative-u.js | 2 +- .../strings/RGI_Emoji_Tag_Sequence.js | 2 +- ...ji_ZWJ_Sequence-negative-CharacterClass.js | 2 +- .../RGI_Emoji_ZWJ_Sequence-negative-P.js | 2 +- .../RGI_Emoji_ZWJ_Sequence-negative-u.js | 2 +- .../strings/RGI_Emoji_ZWJ_Sequence.js | 2 +- ...class-difference-character-class-escape.js | 4 +- ...racter-class-difference-character-class.js | 4 +- ...ss-difference-character-property-escape.js | 4 +- .../character-class-difference-character.js | 4 +- ...s-difference-property-of-strings-escape.js | 4 +- ...aracter-class-difference-string-literal.js | 4 +- ...scape-difference-character-class-escape.js | 4 +- ...class-escape-difference-character-class.js | 4 +- ...pe-difference-character-property-escape.js | 4 +- ...acter-class-escape-difference-character.js | 4 +- ...e-difference-property-of-strings-escape.js | 4 +- ...-class-escape-difference-string-literal.js | 4 +- ...ape-intersection-character-class-escape.js | 4 +- ...ass-escape-intersection-character-class.js | 4 +- ...-intersection-character-property-escape.js | 4 +- ...ter-class-escape-intersection-character.js | 4 +- ...intersection-property-of-strings-escape.js | 4 +- ...lass-escape-intersection-string-literal.js | 4 +- ...ass-escape-union-character-class-escape.js | 4 +- ...cter-class-escape-union-character-class.js | 4 +- ...-escape-union-character-property-escape.js | 4 +- .../character-class-escape-union-character.js | 4 +- ...escape-union-property-of-strings-escape.js | 4 +- ...acter-class-escape-union-string-literal.js | 4 +- ...ass-intersection-character-class-escape.js | 4 +- ...cter-class-intersection-character-class.js | 4 +- ...-intersection-character-property-escape.js | 4 +- .../character-class-intersection-character.js | 4 +- ...intersection-property-of-strings-escape.js | 4 +- ...acter-class-intersection-string-literal.js | 4 +- ...cter-class-union-character-class-escape.js | 4 +- .../character-class-union-character-class.js | 4 +- ...r-class-union-character-property-escape.js | 4 +- .../character-class-union-character.js | 4 +- ...-class-union-property-of-strings-escape.js | 4 +- .../character-class-union-string-literal.js | 4 +- ...acter-difference-character-class-escape.js | 4 +- .../character-difference-character-class.js | 4 +- ...er-difference-character-property-escape.js | 4 +- .../character-difference-character.js | 4 +- ...r-difference-property-of-strings-escape.js | 4 +- .../character-difference-string-literal.js | 4 +- ...ter-intersection-character-class-escape.js | 4 +- .../character-intersection-character-class.js | 4 +- ...-intersection-character-property-escape.js | 4 +- .../character-intersection-character.js | 4 +- ...intersection-property-of-strings-escape.js | 4 +- .../character-intersection-string-literal.js | 4 +- ...scape-difference-character-class-escape.js | 4 +- ...perty-escape-difference-character-class.js | 4 +- ...pe-difference-character-property-escape.js | 4 +- ...er-property-escape-difference-character.js | 4 +- ...e-difference-property-of-strings-escape.js | 4 +- ...operty-escape-difference-string-literal.js | 4 +- ...ape-intersection-character-class-escape.js | 4 +- ...rty-escape-intersection-character-class.js | 4 +- ...-intersection-character-property-escape.js | 4 +- ...-property-escape-intersection-character.js | 4 +- ...intersection-property-of-strings-escape.js | 4 +- ...erty-escape-intersection-string-literal.js | 4 +- ...rty-escape-union-character-class-escape.js | 4 +- ...r-property-escape-union-character-class.js | 4 +- ...-escape-union-character-property-escape.js | 4 +- ...aracter-property-escape-union-character.js | 4 +- ...escape-union-property-of-strings-escape.js | 4 +- ...er-property-escape-union-string-literal.js | 4 +- .../character-union-character-class-escape.js | 4 +- .../character-union-character-class.js | 4 +- ...aracter-union-character-property-escape.js | 4 +- .../generated/character-union-character.js | 4 +- ...racter-union-property-of-strings-escape.js | 4 +- .../character-union-string-literal.js | 4 +- ...scape-difference-character-class-escape.js | 4 +- ...rings-escape-difference-character-class.js | 4 +- ...pe-difference-character-property-escape.js | 4 +- ...-of-strings-escape-difference-character.js | 4 +- ...e-difference-property-of-strings-escape.js | 4 +- ...trings-escape-difference-string-literal.js | 4 +- ...ape-intersection-character-class-escape.js | 4 +- ...ngs-escape-intersection-character-class.js | 4 +- ...-intersection-character-property-escape.js | 4 +- ...f-strings-escape-intersection-character.js | 4 +- ...intersection-property-of-strings-escape.js | 4 +- ...ings-escape-intersection-string-literal.js | 4 +- ...ngs-escape-union-character-class-escape.js | 4 +- ...of-strings-escape-union-character-class.js | 4 +- ...-escape-union-character-property-escape.js | 4 +- ...perty-of-strings-escape-union-character.js | 4 +- ...escape-union-property-of-strings-escape.js | 4 +- ...-of-strings-escape-union-string-literal.js | 4 +- ...teral-difference-character-class-escape.js | 4 +- ...ring-literal-difference-character-class.js | 4 +- ...al-difference-character-property-escape.js | 4 +- .../string-literal-difference-character.js | 4 +- ...l-difference-property-of-strings-escape.js | 4 +- ...tring-literal-difference-string-literal.js | 4 +- ...ral-intersection-character-class-escape.js | 4 +- ...ng-literal-intersection-character-class.js | 4 +- ...-intersection-character-property-escape.js | 4 +- .../string-literal-intersection-character.js | 4 +- ...intersection-property-of-strings-escape.js | 4 +- ...ing-literal-intersection-string-literal.js | 4 +- ...ng-literal-union-character-class-escape.js | 4 +- .../string-literal-union-character-class.js | 4 +- ...literal-union-character-property-escape.js | 4 +- .../string-literal-union-character.js | 4 +- ...iteral-union-property-of-strings-escape.js | 4 +- .../string-literal-union-string-literal.js | 4 +- 567 files changed, 3827 insertions(+), 1520 deletions(-) create mode 100644 test/built-ins/RegExp/property-escapes/generated/Script_-_Garay.js create mode 100644 test/built-ins/RegExp/property-escapes/generated/Script_-_Gurung_Khema.js create mode 100644 test/built-ins/RegExp/property-escapes/generated/Script_-_Kirat_Rai.js create mode 100644 test/built-ins/RegExp/property-escapes/generated/Script_-_Ol_Onal.js create mode 100644 test/built-ins/RegExp/property-escapes/generated/Script_-_Sunuwar.js create mode 100644 test/built-ins/RegExp/property-escapes/generated/Script_-_Todhri.js create mode 100644 test/built-ins/RegExp/property-escapes/generated/Script_-_Tulu_Tigalari.js create mode 100644 test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Garay.js create mode 100644 test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Gurung_Khema.js create mode 100644 test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Kirat_Rai.js create mode 100644 test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Ol_Onal.js create mode 100644 test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Sunuwar.js create mode 100644 test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Todhri.js create mode 100644 test/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Tulu_Tigalari.js 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/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/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] From 8cbcc309e65ce90c91054efb5ce91881ec636542 Mon Sep 17 00:00:00 2001 From: SUZUKI Sosuke Date: Sat, 14 Sep 2024 03:41:43 +0900 Subject: [PATCH 20/37] Add tests for `%WrapForValidIteratorPrototype%.return()` from Iterator Helpers Proposal (#4214) * Add tests for `%WrapForValidIteratorPrototype%.return()` * Address review - Remove unused `flags - Do not use `deepEqual.js` - Assert `return` never got when `this` value is invalid - Use `TemporalHelpers` to observer get / call --- .../get-return-method-when-call-return.js | 35 ++++++++++++++++ .../return-method-calls-base-return-method.js | 41 +++++++++++++++++++ .../return-method-returns-iterator-result.js | 23 +++++++++++ .../return-method-throws-for-invalid-this.js | 39 ++++++++++++++++++ 4 files changed, 138 insertions(+) create mode 100644 test/built-ins/Iterator/from/get-return-method-when-call-return.js create mode 100644 test/built-ins/Iterator/from/return-method-calls-base-return-method.js create mode 100644 test/built-ins/Iterator/from/return-method-returns-iterator-result.js create mode 100644 test/built-ins/Iterator/from/return-method-throws-for-invalid-this.js 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, []); +} From 867ca540d6cc991a82b41a3b7f9ccb9e93efe803 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andr=C3=A9=20Bargull?= Date: Tue, 10 Sep 2024 15:35:30 +0200 Subject: [PATCH 21/37] Add test coverage for correct binding object MOP executions in with-environment --- .../get-binding-value-call-with-proxy-env.js | 66 +++++++++++ .../get-binding-value-idref-with-proxy-env.js | 66 +++++++++++ .../with/has-binding-call-with-proxy-env.js | 40 +++++++ .../with/has-binding-idref-with-proxy-env.js | 40 +++++++ ...ng-idref-compound-assign-with-proxy-env.js | 105 ++++++++++++++++++ ...et-mutable-binding-idref-with-proxy-env.js | 91 +++++++++++++++ 6 files changed, 408 insertions(+) create mode 100644 test/language/statements/with/get-binding-value-call-with-proxy-env.js create mode 100644 test/language/statements/with/get-binding-value-idref-with-proxy-env.js create mode 100644 test/language/statements/with/has-binding-call-with-proxy-env.js create mode 100644 test/language/statements/with/has-binding-idref-with-proxy-env.js create mode 100644 test/language/statements/with/set-mutable-binding-idref-compound-assign-with-proxy-env.js create mode 100644 test/language/statements/with/set-mutable-binding-idref-with-proxy-env.js 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/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-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", +]); From dfece8cfc5a7dde260c68dffac7bbfc842fabfc7 Mon Sep 17 00:00:00 2001 From: Rezvan Mahdavi Hezaveh Date: Tue, 17 Sep 2024 12:19:35 -0700 Subject: [PATCH 22/37] [explicit-resource-management] Add test for async generator body This cl adds a test for having `await using` in the async generator function body. Bug: 42203814 Change-Id: I30c0d2fe354a3047f67a4a71f7c6472c3d832bbf Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/5867651 Commit-Queue: Rezvan Mahdavi Hezaveh Reviewed-by: Shu-yu Guo Cr-Commit-Position: refs/heads/main@{#96146} --- .../await-using-in-async-generator-body.js | 33 +++++++++++++++++++ 1 file changed, 33 insertions(+) create mode 100644 test/staging/explicit-resource-management/await-using-in-async-generator-body.js 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]); + }); From de3a117f02e26a53f8b7cb41f6b4a0b8473c5db4 Mon Sep 17 00:00:00 2001 From: Richard Gibson Date: Wed, 18 Sep 2024 17:35:38 -0400 Subject: [PATCH 23/37] Temporal: Update tests to account for use of year in ToTemporalMonthDay Ref https://github.com/tc39/proposal-temporal/issues/2863 Normative PR: https://github.com/tc39/proposal-temporal/pull/2940 --- .../PlainMonthDay/from/reference-year-1972.js | 43 +++++++++++++------ 1 file changed, 31 insertions(+), 12 deletions(-) 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"); From 18ae34d8f2eaf3497124fec538ebb9c05253b68d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andr=C3=A9=20Bargull?= Date: Mon, 2 Sep 2024 17:05:27 +0200 Subject: [PATCH 24/37] Improve coverage for reference type in various contexts Missing coverage encountered while implementing in SpiderMonkey. Ensure environment lookups are performed in the correct order: - keyed-destructuring-property-reference-target-evaluation-order-with-bindings.js Ensure `delete super[elem]` steps are correctly performed: - delete/super-property-topropertykey.js - delete/super-property-uninitialized-this.js Ensure ToPropertyKey for computed property names in object literals correctly performed: - object/computed-property-name-topropertykey-before-value-evaluation.js Ensure `GetSuperBase` is executed before `ToPropertKey`: - super/prop-expr-getsuperbase-before-topropertykey-* Ensure `GetThisBinding` is executed first: - super/prop-expr-uninitialized-this-* --- ...e-target-evaluation-order-with-bindings.js | 88 ++++++++++++++++++ ...e-target-evaluation-order-with-bindings.js | 90 +++++++++++++++++++ .../delete/super-property-topropertykey.js | 32 +++++++ .../super-property-uninitialized-this.js | 43 +++++++++ ...e-topropertykey-before-value-evaluation.js | 44 +++++++++ ...superbase-before-topropertykey-getvalue.js | 60 +++++++++++++ ...-topropertykey-putvalue-compound-assign.js | 60 +++++++++++++ ...before-topropertykey-putvalue-increment.js | 60 +++++++++++++ ...superbase-before-topropertykey-putvalue.js | 68 ++++++++++++++ .../prop-expr-uninitialized-this-getvalue.js | 31 +++++++ ...itialized-this-putvalue-compound-assign.js | 31 +++++++ ...r-uninitialized-this-putvalue-increment.js | 31 +++++++ .../prop-expr-uninitialized-this-putvalue.js | 31 +++++++ 13 files changed, 669 insertions(+) create mode 100644 test/language/destructuring/binding/keyed-destructuring-property-reference-target-evaluation-order-with-bindings.js create mode 100644 test/language/expressions/assignment/destructuring/keyed-destructuring-property-reference-target-evaluation-order-with-bindings.js create mode 100644 test/language/expressions/delete/super-property-topropertykey.js create mode 100644 test/language/expressions/delete/super-property-uninitialized-this.js create mode 100644 test/language/expressions/object/computed-property-name-topropertykey-before-value-evaluation.js create mode 100644 test/language/expressions/super/prop-expr-getsuperbase-before-topropertykey-getvalue.js create mode 100644 test/language/expressions/super/prop-expr-getsuperbase-before-topropertykey-putvalue-compound-assign.js create mode 100644 test/language/expressions/super/prop-expr-getsuperbase-before-topropertykey-putvalue-increment.js create mode 100644 test/language/expressions/super/prop-expr-getsuperbase-before-topropertykey-putvalue.js create mode 100644 test/language/expressions/super/prop-expr-uninitialized-this-getvalue.js create mode 100644 test/language/expressions/super/prop-expr-uninitialized-this-putvalue-compound-assign.js create mode 100644 test/language/expressions/super/prop-expr-uninitialized-this-putvalue-increment.js create mode 100644 test/language/expressions/super/prop-expr-uninitialized-this-putvalue.js 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/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/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); From e46b317b18271635802606a1fda1de65a404bc4c Mon Sep 17 00:00:00 2001 From: Philip Chimento Date: Thu, 19 Sep 2024 18:37:40 -0700 Subject: [PATCH 25/37] Temporal: Add test coverage for canonicalizing era codes in from() There was a coverage gap for converting calendar fields to a date when the provided era was an alias. See https://github.com/tc39/proposal-temporal/pull/2940#discussion_r1767508659 --- .../PlainDate/from/canonicalize-era-codes.js | 39 +++++++++++++++++++ .../from/canonicalize-era-codes.js | 39 +++++++++++++++++++ .../from/canonicalize-era-codes.js | 37 ++++++++++++++++++ .../from/canonicalize-era-codes.js | 30 ++++++++++++++ 4 files changed, 145 insertions(+) create mode 100644 test/intl402/Temporal/PlainDate/from/canonicalize-era-codes.js create mode 100644 test/intl402/Temporal/PlainDateTime/from/canonicalize-era-codes.js create mode 100644 test/intl402/Temporal/PlainYearMonth/from/canonicalize-era-codes.js create mode 100644 test/intl402/Temporal/ZonedDateTime/from/canonicalize-era-codes.js 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/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/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/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'"); From dc7a22dd286da9f6ef5589de77550e9fe9e85cb2 Mon Sep 17 00:00:00 2001 From: Ron Buckton Date: Mon, 2 Sep 2024 22:11:10 +0200 Subject: [PATCH 26/37] Function branding boilerplate tests from PR #3866 --- .../newtarget-prototype-is-not-object.js | 58 ++++++++++++++ ...ve-internal-asyncdisposablestate-throws.js | 42 +++++++++++ .../prototype/adopt/this-not-object-throws.js | 53 +++++++++++++ ...ve-internal-asyncdisposablestate-throws.js | 42 +++++++++++ .../prototype/defer/this-not-object-throws.js | 53 +++++++++++++ ...e-internal-asyncdisposablestate-rejects.js | 46 ++++++++++++ .../disposeAsync/this-not-object-rejects.js | 57 ++++++++++++++ ...have-asyncdisposablestate-internal-slot.js | 32 ++++++++ .../disposed/this-not-object-throw.js | 50 +++++++++++++ ...ve-internal-asyncdisposablestate-throws.js | 42 +++++++++++ .../prototype/move/this-not-object-throws.js | 53 +++++++++++++ ...ve-internal-asyncdisposablestate-throws.js | 44 +++++++++++ .../prototype/use/this-not-object-throws.js | 53 +++++++++++++ .../use/throws-if-value-not-object.js | 48 ++++++++++++ .../newtarget-prototype-is-not-object.js | 58 ++++++++++++++ ...ot-have-internal-disposablestate-throws.js | 42 +++++++++++ .../prototype/adopt/this-not-object-throws.js | 53 +++++++++++++ ...ot-have-internal-disposablestate-throws.js | 42 +++++++++++ .../prototype/defer/this-not-object-throws.js | 53 +++++++++++++ ...ot-have-internal-disposablestate-throws.js | 42 +++++++++++ .../dispose/this-not-object-throws.js | 53 +++++++++++++ ...-not-have-disposablestate-internal-slot.js | 32 ++++++++ .../disposed/this-not-object-throw.js | 50 +++++++++++++ ...ot-have-internal-disposablestate-throws.js | 42 +++++++++++ .../prototype/move/this-not-object-throws.js | 53 +++++++++++++ ...ot-have-internal-disposablestate-throws.js | 44 +++++++++++ .../prototype/use/this-not-object-throws.js | 53 +++++++++++++ .../use/throws-if-value-not-object.js | 48 ++++++++++++ .../message-undefined-no-prop.js | 33 ++++++++ .../throws-if-initializer-not-object.js | 75 +++++++++++++++++++ .../using/throws-if-initializer-not-object.js | 71 ++++++++++++++++++ 31 files changed, 1517 insertions(+) create mode 100644 test/built-ins/AsyncDisposableStack/newtarget-prototype-is-not-object.js create mode 100644 test/built-ins/AsyncDisposableStack/prototype/adopt/this-does-not-have-internal-asyncdisposablestate-throws.js create mode 100644 test/built-ins/AsyncDisposableStack/prototype/adopt/this-not-object-throws.js create mode 100644 test/built-ins/AsyncDisposableStack/prototype/defer/this-does-not-have-internal-asyncdisposablestate-throws.js create mode 100644 test/built-ins/AsyncDisposableStack/prototype/defer/this-not-object-throws.js create mode 100644 test/built-ins/AsyncDisposableStack/prototype/disposeAsync/this-does-not-have-internal-asyncdisposablestate-rejects.js create mode 100644 test/built-ins/AsyncDisposableStack/prototype/disposeAsync/this-not-object-rejects.js create mode 100644 test/built-ins/AsyncDisposableStack/prototype/disposed/does-not-have-asyncdisposablestate-internal-slot.js create mode 100644 test/built-ins/AsyncDisposableStack/prototype/disposed/this-not-object-throw.js create mode 100644 test/built-ins/AsyncDisposableStack/prototype/move/this-does-not-have-internal-asyncdisposablestate-throws.js create mode 100644 test/built-ins/AsyncDisposableStack/prototype/move/this-not-object-throws.js create mode 100644 test/built-ins/AsyncDisposableStack/prototype/use/this-does-not-have-internal-asyncdisposablestate-throws.js create mode 100644 test/built-ins/AsyncDisposableStack/prototype/use/this-not-object-throws.js create mode 100644 test/built-ins/AsyncDisposableStack/prototype/use/throws-if-value-not-object.js create mode 100644 test/built-ins/DisposableStack/newtarget-prototype-is-not-object.js create mode 100644 test/built-ins/DisposableStack/prototype/adopt/this-does-not-have-internal-disposablestate-throws.js create mode 100644 test/built-ins/DisposableStack/prototype/adopt/this-not-object-throws.js create mode 100644 test/built-ins/DisposableStack/prototype/defer/this-does-not-have-internal-disposablestate-throws.js create mode 100644 test/built-ins/DisposableStack/prototype/defer/this-not-object-throws.js create mode 100644 test/built-ins/DisposableStack/prototype/dispose/this-does-not-have-internal-disposablestate-throws.js create mode 100644 test/built-ins/DisposableStack/prototype/dispose/this-not-object-throws.js create mode 100644 test/built-ins/DisposableStack/prototype/disposed/does-not-have-disposablestate-internal-slot.js create mode 100644 test/built-ins/DisposableStack/prototype/disposed/this-not-object-throw.js create mode 100644 test/built-ins/DisposableStack/prototype/move/this-does-not-have-internal-disposablestate-throws.js create mode 100644 test/built-ins/DisposableStack/prototype/move/this-not-object-throws.js create mode 100644 test/built-ins/DisposableStack/prototype/use/this-does-not-have-internal-disposablestate-throws.js create mode 100644 test/built-ins/DisposableStack/prototype/use/this-not-object-throws.js create mode 100644 test/built-ins/DisposableStack/prototype/use/throws-if-value-not-object.js create mode 100644 test/built-ins/NativeErrors/SuppressedError/message-undefined-no-prop.js create mode 100644 test/language/statements/await-using/throws-if-initializer-not-object.js create mode 100644 test/language/statements/using/throws-if-initializer-not-object.js 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/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/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/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/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/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/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/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/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/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/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'); From 474af832507d1f7183648a2ca875bd8570f21ec6 Mon Sep 17 00:00:00 2001 From: tannal Date: Fri, 13 Sep 2024 10:33:07 +0800 Subject: [PATCH 27/37] Add more tests for v flag --- .../exec/regexp-builtin-exec-v-flag.js | 27 ++++++++++++ .../match/regexp-prototype-match-v-flag.js | 20 +++++++++ .../regexp-prototype-matchAll-v-flag.js | 43 +++++++++++++++++++ .../regexp-prototype-replace-v-flag.js | 23 ++++++++++ .../regexp-prototype-search-v-flag.js.js | 20 +++++++++ 5 files changed, 133 insertions(+) create mode 100644 test/built-ins/RegExp/prototype/exec/regexp-builtin-exec-v-flag.js create mode 100644 test/built-ins/String/prototype/match/regexp-prototype-match-v-flag.js create mode 100644 test/built-ins/String/prototype/matchAll/regexp-prototype-matchAll-v-flag.js create mode 100644 test/built-ins/String/prototype/replace/regexp-prototype-replace-v-flag.js create mode 100644 test/built-ins/String/prototype/search/regexp-prototype-search-v-flag.js.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/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"); From fcfb11da777eb1b18307113ab347703d256458d0 Mon Sep 17 00:00:00 2001 From: Shu-yu Guo Date: Fri, 20 Sep 2024 13:14:53 -0700 Subject: [PATCH 28/37] Remove test for old behavior for Atomics.pause --- .../pause/negative-iterationnumber-throws.js | 19 ------------------- 1 file changed, 19 deletions(-) delete mode 100644 test/built-ins/Atomics/pause/negative-iterationnumber-throws.js 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`); -} From 07a2c2501e598bce12e54f6cf929f270f8950ea8 Mon Sep 17 00:00:00 2001 From: Richard Gibson Date: Mon, 23 Sep 2024 12:09:59 -0400 Subject: [PATCH 29/37] harness/propertyHelper.js: Capture primordials that might be affected at runtime by verification Ref https://github.com/tc39/test262/pull/4234#discussion_r1771684267 --- harness/propertyHelper.js | 48 +++++++++++++++++++++++---------------- 1 file changed, 28 insertions(+), 20 deletions(-) diff --git a/harness/propertyHelper.js b/harness/propertyHelper.js index 0e0e86f4453..d2359cd8367 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,13 +164,12 @@ 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; From 0c7af4685fcefb0f6c8b293a508084eea63c70d3 Mon Sep 17 00:00:00 2001 From: Richard Gibson Date: Mon, 23 Sep 2024 12:15:23 -0400 Subject: [PATCH 30/37] harness/propertyHelper.js: Check the new property value chosen by isWritable for collision --- harness/propertyHelper.js | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/harness/propertyHelper.js b/harness/propertyHelper.js index d2359cd8367..8dbed5aee61 100644 --- a/harness/propertyHelper.js +++ b/harness/propertyHelper.js @@ -173,6 +173,10 @@ function isWritable(obj, name, verifyProp, value) { var oldValue = obj[name]; var writeSucceeded; + if (arguments.length < 4 && newValue === oldValue) { + newValue = newValue + "2"; + } + try { obj[name] = newValue; } catch (e) { From c63d53ad9c764e71543dc8f46a8110d85dee689b Mon Sep 17 00:00:00 2001 From: Ioanna M Dimitriou H Date: Tue, 24 Sep 2024 14:04:28 +0200 Subject: [PATCH 31/37] Builtin boilerplate tests from PR #3866 (#4236) Includes some proto-from-ctor-realm.js tests that look like standard tests for prototypes. Co-authored-by: Ron Buckton Co-authored-by: Philip Chimento --- .../instance-extensible.js | 31 ++++++++++ .../proto-from-ctor-realm.js | 59 +++++++++++++++++++ test/built-ins/AsyncDisposableStack/proto.js | 18 ++++++ .../prototype/Symbol.asyncDispose.js | 21 +++++++ .../prototype/disposed/getter.js | 32 ++++++++++ .../AsyncDisposableStack/prototype/proto.js | 14 +++++ .../Symbol.asyncDispose/is-function.js | 13 ++++ .../DisposableStack/instance-extensible.js | 31 ++++++++++ .../DisposableStack/proto-from-ctor-realm.js | 59 +++++++++++++++++++ test/built-ins/DisposableStack/proto.js | 18 ++++++ .../prototype/Symbol.dispose.js | 21 +++++++ .../prototype/disposed/getter.js | 32 ++++++++++ .../DisposableStack/prototype/proto.js | 14 +++++ .../prototype/Symbol.dispose/is-function.js | 13 ++++ .../SuppressedError/proto-from-ctor-realm.js | 58 ++++++++++++++++++ .../NativeErrors/SuppressedError/proto.js | 16 +++++ .../SuppressedError/prototype/constructor.js | 25 ++++++++ .../SuppressedError/prototype/message.js | 25 ++++++++ .../SuppressedError/prototype/proto.js | 16 +++++ 19 files changed, 516 insertions(+) create mode 100644 test/built-ins/AsyncDisposableStack/instance-extensible.js create mode 100644 test/built-ins/AsyncDisposableStack/proto-from-ctor-realm.js create mode 100644 test/built-ins/AsyncDisposableStack/proto.js create mode 100644 test/built-ins/AsyncDisposableStack/prototype/Symbol.asyncDispose.js create mode 100644 test/built-ins/AsyncDisposableStack/prototype/disposed/getter.js create mode 100644 test/built-ins/AsyncDisposableStack/prototype/proto.js create mode 100644 test/built-ins/AsyncIteratorPrototype/Symbol.asyncDispose/is-function.js create mode 100644 test/built-ins/DisposableStack/instance-extensible.js create mode 100644 test/built-ins/DisposableStack/proto-from-ctor-realm.js create mode 100644 test/built-ins/DisposableStack/proto.js create mode 100644 test/built-ins/DisposableStack/prototype/Symbol.dispose.js create mode 100644 test/built-ins/DisposableStack/prototype/disposed/getter.js create mode 100644 test/built-ins/DisposableStack/prototype/proto.js create mode 100644 test/built-ins/Iterator/prototype/Symbol.dispose/is-function.js create mode 100644 test/built-ins/NativeErrors/SuppressedError/proto-from-ctor-realm.js create mode 100644 test/built-ins/NativeErrors/SuppressedError/proto.js create mode 100644 test/built-ins/NativeErrors/SuppressedError/prototype/constructor.js create mode 100644 test/built-ins/NativeErrors/SuppressedError/prototype/message.js create mode 100644 test/built-ins/NativeErrors/SuppressedError/prototype/proto.js 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/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/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/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/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/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/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/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/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/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/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); From 957ab22773f621282c8ae5a4a479aa44447886c9 Mon Sep 17 00:00:00 2001 From: SkyCrystal Date: Thu, 26 Sep 2024 00:58:24 +0800 Subject: [PATCH 32/37] Add a test for Generator (#3729) --- .../try-finally-set-property-within-try.js | 28 +++++++++++++++++++ 1 file changed, 28 insertions(+) create mode 100644 test/built-ins/GeneratorPrototype/return/try-finally-set-property-within-try.js 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'); From 3bed2c446f9982575c9e562264b013c66bdbbb3c Mon Sep 17 00:00:00 2001 From: Philip Chimento Date: Wed, 11 Sep 2024 11:10:23 -0700 Subject: [PATCH 33/37] Remove tests for FinalizationRegistry.prototype.cleanupSome This proposal was split off from FinalizationRegistry at stage 2, and then withdrawn. Given that status, it should not be part of the test suite. --- features.txt | 4 -- .../callback-not-callable-throws.js | 53 -------------- .../cleanup-prevented-with-reference.js | 47 ------------- .../cleanup-prevented-with-unregister.js | 54 --------------- .../prototype/cleanupSome/custom-this.js | 26 ------- .../cleanupSome/holdings-multiple-values.js | 69 ------------------- .../prototype/cleanupSome/length.js | 32 --------- .../prototype/cleanupSome/name.js | 31 --------- .../cleanupSome/not-a-constructor.js | 33 --------- .../prototype/cleanupSome/prop-desc.js | 24 ------- .../prototype/cleanupSome/reentrancy.js | 51 -------------- .../cleanupSome/return-undefined-with-gc.js | 66 ------------------ .../prototype/cleanupSome/return-undefined.js | 41 ----------- ...his-does-not-have-internal-cells-throws.js | 48 ------------- .../cleanupSome/this-not-object-throws.js | 50 -------------- 15 files changed, 629 deletions(-) delete mode 100644 test/built-ins/FinalizationRegistry/prototype/cleanupSome/callback-not-callable-throws.js delete mode 100644 test/built-ins/FinalizationRegistry/prototype/cleanupSome/cleanup-prevented-with-reference.js delete mode 100644 test/built-ins/FinalizationRegistry/prototype/cleanupSome/cleanup-prevented-with-unregister.js delete mode 100644 test/built-ins/FinalizationRegistry/prototype/cleanupSome/custom-this.js delete mode 100644 test/built-ins/FinalizationRegistry/prototype/cleanupSome/holdings-multiple-values.js delete mode 100644 test/built-ins/FinalizationRegistry/prototype/cleanupSome/length.js delete mode 100644 test/built-ins/FinalizationRegistry/prototype/cleanupSome/name.js delete mode 100644 test/built-ins/FinalizationRegistry/prototype/cleanupSome/not-a-constructor.js delete mode 100644 test/built-ins/FinalizationRegistry/prototype/cleanupSome/prop-desc.js delete mode 100644 test/built-ins/FinalizationRegistry/prototype/cleanupSome/reentrancy.js delete mode 100644 test/built-ins/FinalizationRegistry/prototype/cleanupSome/return-undefined-with-gc.js delete mode 100644 test/built-ins/FinalizationRegistry/prototype/cleanupSome/return-undefined.js delete mode 100644 test/built-ins/FinalizationRegistry/prototype/cleanupSome/this-does-not-have-internal-cells-throws.js delete mode 100644 test/built-ins/FinalizationRegistry/prototype/cleanupSome/this-not-object-throws.js 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/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'); From 77b1c787e8ea1ed2997b7330137564604bc3e10c Mon Sep 17 00:00:00 2001 From: Philip Chimento Date: Wed, 11 Sep 2024 12:19:52 -0700 Subject: [PATCH 34/37] Remove WeakRef/prototype/deref/gc-cleanup-not-prevented-with-wr-deref.js On all engines that still support cleanupSome, this test was hitting the asyncGC.notCollected check in resolveAsyncGC(). That means that it was just skipped, and the deref() part was never actually executed. Given that it is not testing anything in practice, remove it. --- .../gc-cleanup-not-prevented-with-wr-deref.js | 37 ------------------- 1 file changed, 37 deletions(-) delete mode 100644 test/built-ins/WeakRef/prototype/deref/gc-cleanup-not-prevented-with-wr-deref.js 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); From f225229f85da668440266da34a18ae9f0ddfd959 Mon Sep 17 00:00:00 2001 From: Philip Chimento Date: Wed, 25 Sep 2024 09:43:10 -0700 Subject: [PATCH 35/37] Remove FinalizationRegistry tests that depend on nondeterministic GC In these tests, cleanupSome() would have optionally emptied the FinalizationRegistry synchronously and called the finalization callbacks. Without cleanupSome(), there is no way to observe a FinalizationRegistry being emptied using "pure" ECMAScript: FinalizationRegistry doesn't get cleaned up until the microtask queue is empty, and without external APIs such as setTimeout() there is no way to pause execution until after the microtask queue is empty. Non-deterministic tests are not that useful anyway; these tests are probably better left to implementations' internal testing strategies. --- ...ance-to-call-cleanupCallback-for-object.js | 96 ------------------- .../unregister-cleaned-up-object-cell.js | 63 ------------ 2 files changed, 159 deletions(-) delete mode 100644 test/built-ins/FinalizationRegistry/gc-has-one-chance-to-call-cleanupCallback-for-object.js delete mode 100644 test/built-ins/FinalizationRegistry/prototype/unregister/unregister-cleaned-up-object-cell.js 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/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); From 0c784ef9541fad7e38036a5e6019990ddad81659 Mon Sep 17 00:00:00 2001 From: Philip Chimento Date: Wed, 25 Sep 2024 09:43:58 -0700 Subject: [PATCH 36/37] Remove async-gc harness This is now unused, and there is no way to implement it without using the cleanupSome proposal (see previous commit) which has been withdrawn. Closes: #3920 --- harness/async-gc.js | 57 --------------------------------------------- 1 file changed, 57 deletions(-) delete mode 100644 harness/async-gc.js 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); -} From 72ff7d1269df40ca9c9a1076447f8f349a892825 Mon Sep 17 00:00:00 2001 From: Marko Lahma Date: Wed, 25 Sep 2024 22:52:23 +0300 Subject: [PATCH 37/37] Add names for expected outcomes in compareArray.js --- harness/compareArray.js | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) 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}`); } };