Diff
Modified: trunk/JSTests/ChangeLog (271224 => 271225)
--- trunk/JSTests/ChangeLog 2021-01-07 06:11:42 UTC (rev 271224)
+++ trunk/JSTests/ChangeLog 2021-01-07 06:28:36 UTC (rev 271225)
@@ -1,5 +1,68 @@
2021-01-06 Yusuke Suzuki <[email protected]>
+ [JSC] Update test262
+ https://bugs.webkit.org/show_bug.cgi?id=220398
+
+ Reviewed by Mark Lam.
+
+ * test262/expectations.yaml:
+ * test262/harness/testIntl.js:
+ * test262/latest-changes-summary.txt:
+ * test262/test/built-ins/TypedArray/prototype/includes/BigInt/detached-buffer-during-fromIndex-returns-false-for-zero.js: Added.
+ (testWithBigIntTypedArrayConstructors):
+ * test262/test/built-ins/TypedArray/prototype/includes/BigInt/detached-buffer-during-fromIndex-returns-true-for-undefined.js: Added.
+ (testWithBigIntTypedArrayConstructors):
+ * test262/test/built-ins/TypedArray/prototype/includes/detached-buffer-during-fromIndex-returns-false-for-zero.js: Added.
+ (testWithTypedArrayConstructors):
+ * test262/test/built-ins/TypedArray/prototype/includes/detached-buffer-during-fromIndex-returns-true-for-undefined.js: Added.
+ (testWithTypedArrayConstructors):
+ * test262/test/built-ins/TypedArray/prototype/includes/detached-buffer-tointeger.js: Removed.
+ * test262/test/built-ins/TypedArray/prototype/indexOf/BigInt/detached-buffer-during-fromIndex-returns-minus-one-for-undefined.js: Added.
+ (testWithBigIntTypedArrayConstructors):
+ * test262/test/built-ins/TypedArray/prototype/indexOf/BigInt/detached-buffer-during-fromIndex-returns-minus-one-for-zero.js: Added.
+ (testWithBigIntTypedArrayConstructors):
+ * test262/test/built-ins/TypedArray/prototype/indexOf/detached-buffer-during-fromIndex-returns-minus-one-for-undefined.js: Added.
+ (testWithTypedArrayConstructors):
+ * test262/test/built-ins/TypedArray/prototype/indexOf/detached-buffer-during-fromIndex-returns-minus-one-for-zero.js: Added.
+ (testWithTypedArrayConstructors):
+ * test262/test/built-ins/TypedArray/prototype/join/BigInt/detached-buffer-during-fromIndex-returns-single-comma.js: Added.
+ (testWithBigIntTypedArrayConstructors):
+ * test262/test/built-ins/TypedArray/prototype/join/BigInt/detached-buffer.js:
+ (let.obj.toString):
+ (testWithBigIntTypedArrayConstructors):
+ (obj.toString): Deleted.
+ * test262/test/built-ins/TypedArray/prototype/join/detached-buffer-during-fromIndex-returns-single-comma.js: Added.
+ (testWithTypedArrayConstructors):
+ * test262/test/built-ins/TypedArray/prototype/join/detached-buffer.js:
+ (let.obj.toString):
+ (testWithTypedArrayConstructors):
+ (obj.toString): Deleted.
+ * test262/test/built-ins/TypedArray/prototype/lastIndexOf/BigInt/detached-buffer-during-fromIndex-returns-minus-one-for-undefined.js: Added.
+ (testWithBigIntTypedArrayConstructors):
+ * test262/test/built-ins/TypedArray/prototype/lastIndexOf/BigInt/detached-buffer-during-fromIndex-returns-minus-one-for-zero.js: Added.
+ (testWithBigIntTypedArrayConstructors):
+ * test262/test/built-ins/TypedArray/prototype/lastIndexOf/detached-buffer-during-fromIndex-returns-minus-one-for-undefined.js: Added.
+ (testWithTypedArrayConstructors):
+ * test262/test/built-ins/TypedArray/prototype/lastIndexOf/detached-buffer-during-fromIndex-returns-minus-one-for-zero.js: Added.
+ (testWithTypedArrayConstructors):
+ * test262/test/built-ins/TypedArrayConstructors/internals/GetOwnProperty/BigInt/index-prop-desc.js:
+ (testWithBigIntTypedArrayConstructors):
+ * test262/test/built-ins/TypedArrayConstructors/internals/Set/detached-buffer.js:
+ (testWithTypedArrayConstructors):
+ * test262/test/intl402/DateTimeFormat/prototype/formatRange/date-same-returns-single-date.js: Added.
+ * test262/test/intl402/DateTimeFormat/prototype/formatRangeToParts/date-same-returns-single-date.js: Added.
+ (zip):
+ (compare):
+ * test262/test/intl402/Intl/getCanonicalLocales/canonicalized-tags.js:
+ * test262/test/intl402/Intl/getCanonicalLocales/preferred-grandfathered.js:
+ * test262/test/intl402/Intl/getCanonicalLocales/preferred-variant.js:
+ * test262/test/intl402/Locale/extensions-grandfathered.js:
+ * test262/test/intl402/Locale/likely-subtags-grandfathered.js:
+ (of.regularGrandfathered.const.extra.of.extras.i.test):
+ * test262/test262-Revision.txt:
+
+2021-01-06 Yusuke Suzuki <[email protected]>
+
[JSC] DateTimeFormat#formatRange should generate the same output to DateTimeFormat#format if startDate and endDate are "practically-equal"
https://bugs.webkit.org/show_bug.cgi?id=220395
Modified: trunk/JSTests/test262/expectations.yaml (271224 => 271225)
--- trunk/JSTests/test262/expectations.yaml 2021-01-07 06:11:42 UTC (rev 271224)
+++ trunk/JSTests/test262/expectations.yaml 2021-01-07 06:28:36 UTC (rev 271225)
@@ -848,11 +848,8 @@
default: 'Test262Error: The value of Intl.getCanonicalLocales(tag)[0] equals the value of `canonical` Expected SameValue(«en-US-u-va-posix», «posix») to be true'
strict mode: 'Test262Error: The value of Intl.getCanonicalLocales(tag)[0] equals the value of `canonical` Expected SameValue(«en-US-u-va-posix», «posix») to be true'
test/intl402/Intl/getCanonicalLocales/preferred-grandfathered.js:
- default: 'Test262Error: Expected SameValue(«cmn», «zh») to be true'
- strict mode: 'Test262Error: Expected SameValue(«cmn», «zh») to be true'
-test/intl402/Intl/getCanonicalLocales/preferred-variant.js:
- default: 'Test262Error: Expected SameValue(«ja-Latn-alalc97», «ja-Latn-alalc97-hepburn») to be true'
- strict mode: 'Test262Error: Expected SameValue(«ja-Latn-alalc97», «ja-Latn-alalc97-hepburn») to be true'
+ default: 'Test262Error: Expected SameValue(«xtg-x-cel-gaulish», «xtg») to be true'
+ strict mode: 'Test262Error: Expected SameValue(«xtg-x-cel-gaulish», «xtg») to be true'
test/intl402/Intl/getCanonicalLocales/transformed-ext-canonical.js:
default: 'Test262Error: Expected SameValue(«sl-t-sl-rozaj-biske-1994», «sl-t-sl-1994-biske-rozaj») to be true'
strict mode: 'Test262Error: Expected SameValue(«sl-t-sl-rozaj-biske-1994», «sl-t-sl-1994-biske-rozaj») to be true'
@@ -877,9 +874,12 @@
test/intl402/Locale/constructor-tag.js:
default: 'Test262Error: new Intl.Locale("sl-ROZAJ-BISKE-1994").toString() returns "sl-1994-biske-rozaj" Expected SameValue(«sl-rozaj-biske-1994», «sl-1994-biske-rozaj») to be true'
strict mode: 'Test262Error: new Intl.Locale("sl-ROZAJ-BISKE-1994").toString() returns "sl-1994-biske-rozaj" Expected SameValue(«sl-rozaj-biske-1994», «sl-1994-biske-rozaj») to be true'
+test/intl402/Locale/extensions-grandfathered.js:
+ default: 'Test262Error: Expected SameValue(«fr-Cyrl-FR-u-nu-latn-x-cel-gaulish», «fr-Cyrl-FR-u-nu-latn») to be true'
+ strict mode: 'Test262Error: Expected SameValue(«fr-Cyrl-FR-u-nu-latn-x-cel-gaulish», «fr-Cyrl-FR-u-nu-latn») to be true'
test/intl402/Locale/likely-subtags-grandfathered.js:
- default: 'Test262Error: Expected SameValue(«cmn», «zh») to be true'
- strict mode: 'Test262Error: Expected SameValue(«cmn», «zh») to be true'
+ default: 'Test262Error: Expected SameValue(«xtg-x-cel-gaulish», «xtg») to be true'
+ strict mode: 'Test262Error: Expected SameValue(«xtg-x-cel-gaulish», «xtg») to be true'
test/intl402/Locale/likely-subtags.js:
default: 'Test262Error: "en-u-co".maximize() should be "en-Latn-US-u-co" Expected SameValue(«en-Latn-US-u-co-yes», «en-Latn-US-u-co») to be true'
strict mode: 'Test262Error: "en-u-co".maximize() should be "en-Latn-US-u-co" Expected SameValue(«en-Latn-US-u-co-yes», «en-Latn-US-u-co») to be true'
Modified: trunk/JSTests/test262/harness/testIntl.js (271224 => 271225)
--- trunk/JSTests/test262/harness/testIntl.js 2021-01-07 06:11:42 UTC (rev 271224)
+++ trunk/JSTests/test262/harness/testIntl.js 2021-01-07 06:28:36 UTC (rev 271225)
@@ -328,7 +328,7 @@
// property names must be in lower case; values in canonical form
"art-lojban": "jbo",
- "cel-gaulish": "xtg-x-cel-gaulish",
+ "cel-gaulish": "xtg",
"zh-guoyu": "zh",
"zh-hakka": "hak",
"zh-xiang": "hsn",
Modified: trunk/JSTests/test262/latest-changes-summary.txt (271224 => 271225)
--- trunk/JSTests/test262/latest-changes-summary.txt 2021-01-07 06:11:42 UTC (rev 271224)
+++ trunk/JSTests/test262/latest-changes-summary.txt 2021-01-07 06:28:36 UTC (rev 271225)
@@ -1,104 +1,27 @@
-A test/built-ins/Array/prototype/reverse/array-has-one-entry.js
-M test/built-ins/Array/prototype/sort/bug_596_1.js
-A test/built-ins/Math/max/Math.max_each-element-coerced.js
-A test/built-ins/Math/min/Math.min_each-element-coerced.js
-M test/built-ins/String/prototype/at/prop-desc.js
-M test/built-ins/TypedArray/prototype/at/prop-desc.js
-M test/built-ins/TypedArray/prototype/fill/BigInt/fill-values-non-numeric-throw.js
-M test/built-ins/TypedArray/prototype/fill/BigInt/fill-values-non-numeric.js
-M test/built-ins/TypedArray/prototype/fill/BigInt/fill-values-symbol-throws.js
-M test/built-ins/TypedArray/prototype/fill/BigInt/return-abrupt-from-set-value.js
-M test/built-ins/TypedArray/prototype/fill/fill-values-non-numeric.js
-M test/built-ins/TypedArray/prototype/fill/fill-values-symbol-throws.js
-M test/built-ins/TypedArray/prototype/fill/return-abrupt-from-set-value.js
-M test/built-ins/TypedArray/prototype/includes/detached-buffer-tointeger.js
-M test/built-ins/TypedArray/prototype/map/return-new-typedarray-conversion-operation-consistent-nan.js
-M test/built-ins/TypedArray/prototype/map/return-new-typedarray-conversion-operation.js
-M test/built-ins/TypedArrayConstructors/ctors/object-arg/conversion-operation-consistent-nan.js
-M test/built-ins/TypedArrayConstructors/ctors/object-arg/conversion-operation.js
-M test/built-ins/TypedArrayConstructors/ctors/object-arg/throws-setting-obj-to-primitive-typeerror.js
-M test/built-ins/TypedArrayConstructors/ctors/object-arg/throws-setting-obj-to-primitive.js
-M test/built-ins/TypedArrayConstructors/ctors/object-arg/throws-setting-obj-tostring.js
-M test/built-ins/TypedArrayConstructors/ctors/object-arg/throws-setting-obj-valueof-typeerror.js
-M test/built-ins/TypedArrayConstructors/ctors/object-arg/throws-setting-obj-valueof.js
-M test/built-ins/TypedArrayConstructors/ctors-bigint/object-arg/bigint-tobigint64.js
-M test/built-ins/TypedArrayConstructors/ctors-bigint/object-arg/bigint-tobiguint64.js
-M test/built-ins/TypedArrayConstructors/ctors-bigint/object-arg/boolean-tobigint.js
-M test/built-ins/TypedArrayConstructors/ctors-bigint/object-arg/null-tobigint.js
-M test/built-ins/TypedArrayConstructors/ctors-bigint/object-arg/number-tobigint.js
-M test/built-ins/TypedArrayConstructors/ctors-bigint/object-arg/string-nan-tobigint.js
-M test/built-ins/TypedArrayConstructors/ctors-bigint/object-arg/string-tobigint.js
-M test/built-ins/TypedArrayConstructors/ctors-bigint/object-arg/symbol-tobigint.js
-M test/built-ins/TypedArrayConstructors/ctors-bigint/object-arg/throws-setting-obj-to-primitive-typeerror.js
-M test/built-ins/TypedArrayConstructors/ctors-bigint/object-arg/throws-setting-obj-to-primitive.js
-M test/built-ins/TypedArrayConstructors/ctors-bigint/object-arg/throws-setting-obj-tostring.js
-M test/built-ins/TypedArrayConstructors/ctors-bigint/object-arg/throws-setting-obj-valueof-typeerror.js
-M test/built-ins/TypedArrayConstructors/ctors-bigint/object-arg/throws-setting-obj-valueof.js
-M test/built-ins/TypedArrayConstructors/ctors-bigint/object-arg/undefined-tobigint.js
-M test/built-ins/TypedArrayConstructors/from/BigInt/source-value-is-symbol-throws.js
-M test/built-ins/TypedArrayConstructors/from/nan-conversion.js
-M test/built-ins/TypedArrayConstructors/from/source-value-is-symbol-throws.js
-M test/built-ins/TypedArrayConstructors/internals/DefineOwnProperty/BigInt/desc-value-throws.js
-M test/built-ins/TypedArrayConstructors/internals/DefineOwnProperty/BigInt/detached-buffer-realm.js
-M test/built-ins/TypedArrayConstructors/internals/DefineOwnProperty/BigInt/detached-buffer.js
-M test/built-ins/TypedArrayConstructors/internals/DefineOwnProperty/BigInt/set-value.js
-M test/built-ins/TypedArrayConstructors/internals/DefineOwnProperty/BigInt/tonumber-value-detached-buffer.js
-M test/built-ins/TypedArrayConstructors/internals/DefineOwnProperty/conversion-operation.js
-M test/built-ins/TypedArrayConstructors/internals/DefineOwnProperty/desc-value-throws.js
-M test/built-ins/TypedArrayConstructors/internals/DefineOwnProperty/detached-buffer-realm.js
-M test/built-ins/TypedArrayConstructors/internals/DefineOwnProperty/detached-buffer.js
-M test/built-ins/TypedArrayConstructors/internals/DefineOwnProperty/set-value.js
-M test/built-ins/TypedArrayConstructors/internals/DefineOwnProperty/tonumber-value-detached-buffer.js
-M test/built-ins/TypedArrayConstructors/internals/Set/BigInt/detached-buffer-realm.js
-M test/built-ins/TypedArrayConstructors/internals/Set/BigInt/indexed-value.js
-M test/built-ins/TypedArrayConstructors/internals/Set/BigInt/key-is-minus-zero.js
-M test/built-ins/TypedArrayConstructors/internals/Set/BigInt/key-is-not-integer.js
-M test/built-ins/TypedArrayConstructors/internals/Set/BigInt/key-is-out-of-bounds.js
-M test/built-ins/TypedArrayConstructors/internals/Set/BigInt/tonumber-value-detached-buffer.js
-M test/built-ins/TypedArrayConstructors/internals/Set/BigInt/tonumber-value-throws.js
-M test/built-ins/TypedArrayConstructors/internals/Set/conversion-operation-consistent-nan.js
-M test/built-ins/TypedArrayConstructors/internals/Set/conversion-operation.js
-M test/built-ins/TypedArrayConstructors/internals/Set/detached-buffer-realm.js
-M test/built-ins/TypedArrayConstructors/internals/Set/indexed-value.js
-M test/built-ins/TypedArrayConstructors/internals/Set/key-is-minus-zero.js
-M test/built-ins/TypedArrayConstructors/internals/Set/key-is-not-integer.js
-M test/built-ins/TypedArrayConstructors/internals/Set/key-is-out-of-bounds.js
-M test/built-ins/TypedArrayConstructors/internals/Set/tonumber-value-detached-buffer.js
-M test/built-ins/TypedArrayConstructors/internals/Set/tonumber-value-throws.js
-M test/built-ins/TypedArrayConstructors/of/BigInt/argument-is-symbol-throws.js
-M test/built-ins/TypedArrayConstructors/of/BigInt/new-instance.js
-M test/built-ins/TypedArrayConstructors/of/argument-is-symbol-throws.js
-M test/built-ins/TypedArrayConstructors/of/nan-conversion.js
-M test/built-ins/TypedArrayConstructors/of/new-instance.js
-M test/built-ins/parseInt/S15.1.2.2_A2_T2.js
-M test/intl402/DateTimeFormat/prototype/formatRange/date-x-greater-than-y-throws.js
-M test/intl402/DateTimeFormat/prototype/formatRangeToParts/date-x-greater-than-y-throws.js
-A test/language/arguments-object/mapped/enumerable-configurable-accessor-descriptor.js
-A test/language/arguments-object/mapped/nonconfigurable-descriptors-define-failure.js
-A test/language/arguments-object/mapped/writable-enumerable-configurable-descriptor.js
-A test/language/destructuring/binding/syntax/destructuring-array-parameters-function-arguments-length.js
-A test/language/destructuring/binding/syntax/destructuring-object-parameters-function-arguments-length.js
-A test/language/expressions/async-function/named-reassign-fn-name-in-body-in-arrow.js
-A test/language/expressions/async-function/named-reassign-fn-name-in-body-in-eval.js
-A test/language/expressions/async-function/named-reassign-fn-name-in-body.js
-A test/language/expressions/async-function/named-strict-error-reassign-fn-name-in-body-in-arrow.js
-A test/language/expressions/async-function/named-strict-error-reassign-fn-name-in-body-in-eval.js
-A test/language/expressions/async-function/named-strict-error-reassign-fn-name-in-body.js
-A test/language/expressions/async-generator/named-no-strict-reassign-fn-name-in-body-in-arrow.js
-A test/language/expressions/async-generator/named-no-strict-reassign-fn-name-in-body-in-eval.js
-A test/language/expressions/async-generator/named-no-strict-reassign-fn-name-in-body.js
-A test/language/expressions/async-generator/named-strict-error-reassign-fn-name-in-body-in-arrow.js
-A test/language/expressions/async-generator/named-strict-error-reassign-fn-name-in-body-in-eval.js
-A test/language/expressions/async-generator/named-strict-error-reassign-fn-name-in-body.js
-A test/language/expressions/function/named-no-strict-reassign-fn-name-in-body-in-arrow.js
-A test/language/expressions/function/named-no-strict-reassign-fn-name-in-body-in-eval.js
-A test/language/expressions/function/named-no-strict-reassign-fn-name-in-body.js
-A test/language/expressions/function/named-strict-error-reassign-fn-name-in-body-in-arrow.js
-A test/language/expressions/function/named-strict-error-reassign-fn-name-in-body-in-eval.js
-A test/language/expressions/function/named-strict-error-reassign-fn-name-in-body.js
-A test/language/expressions/generators/named-no-strict-reassign-fn-name-in-body-in-arrow.js
-A test/language/expressions/generators/named-no-strict-reassign-fn-name-in-body-in-eval.js
-A test/language/expressions/generators/named-no-strict-reassign-fn-name-in-body.js
-A test/language/expressions/generators/named-strict-error-reassign-fn-name-in-body-in-arrow.js
-A test/language/expressions/generators/named-strict-error-reassign-fn-name-in-body-in-eval.js
-A test/language/expressions/generators/named-strict-error-reassign-fn-name-in-body.js
\ No newline at end of file
+M harness/testIntl.js
+A test/built-ins/TypedArray/prototype/includes/BigInt/detached-buffer-during-fromIndex-returns-false-for-zero.js
+A test/built-ins/TypedArray/prototype/includes/BigInt/detached-buffer-during-fromIndex-returns-true-for-undefined.js
+A test/built-ins/TypedArray/prototype/includes/detached-buffer-during-fromIndex-returns-false-for-zero.js
+A test/built-ins/TypedArray/prototype/includes/detached-buffer-during-fromIndex-returns-true-for-undefined.js
+D test/built-ins/TypedArray/prototype/includes/detached-buffer-tointeger.js
+A test/built-ins/TypedArray/prototype/indexOf/BigInt/detached-buffer-during-fromIndex-returns-minus-one-for-undefined.js
+A test/built-ins/TypedArray/prototype/indexOf/BigInt/detached-buffer-during-fromIndex-returns-minus-one-for-zero.js
+A test/built-ins/TypedArray/prototype/indexOf/detached-buffer-during-fromIndex-returns-minus-one-for-undefined.js
+A test/built-ins/TypedArray/prototype/indexOf/detached-buffer-during-fromIndex-returns-minus-one-for-zero.js
+A test/built-ins/TypedArray/prototype/join/BigInt/detached-buffer-during-fromIndex-returns-single-comma.js
+M test/built-ins/TypedArray/prototype/join/BigInt/detached-buffer.js
+A test/built-ins/TypedArray/prototype/join/detached-buffer-during-fromIndex-returns-single-comma.js
+M test/built-ins/TypedArray/prototype/join/detached-buffer.js
+A test/built-ins/TypedArray/prototype/lastIndexOf/BigInt/detached-buffer-during-fromIndex-returns-minus-one-for-undefined.js
+A test/built-ins/TypedArray/prototype/lastIndexOf/BigInt/detached-buffer-during-fromIndex-returns-minus-one-for-zero.js
+A test/built-ins/TypedArray/prototype/lastIndexOf/detached-buffer-during-fromIndex-returns-minus-one-for-undefined.js
+A test/built-ins/TypedArray/prototype/lastIndexOf/detached-buffer-during-fromIndex-returns-minus-one-for-zero.js
+M test/built-ins/TypedArrayConstructors/internals/GetOwnProperty/BigInt/index-prop-desc.js
+M test/built-ins/TypedArrayConstructors/internals/Set/detached-buffer.js
+A test/intl402/DateTimeFormat/prototype/formatRange/date-same-returns-single-date.js
+A test/intl402/DateTimeFormat/prototype/formatRangeToParts/date-same-returns-single-date.js
+M test/intl402/Intl/getCanonicalLocales/canonicalized-tags.js
+M test/intl402/Intl/getCanonicalLocales/preferred-grandfathered.js
+M test/intl402/Intl/getCanonicalLocales/preferred-variant.js
+M test/intl402/Locale/extensions-grandfathered.js
+M test/intl402/Locale/likely-subtags-grandfathered.js
\ No newline at end of file
Added: trunk/JSTests/test262/test/built-ins/TypedArray/prototype/includes/BigInt/detached-buffer-during-fromIndex-returns-false-for-zero.js (0 => 271225)
--- trunk/JSTests/test262/test/built-ins/TypedArray/prototype/includes/BigInt/detached-buffer-during-fromIndex-returns-false-for-zero.js (rev 0)
+++ trunk/JSTests/test262/test/built-ins/TypedArray/prototype/includes/BigInt/detached-buffer-during-fromIndex-returns-false-for-zero.js 2021-01-07 06:28:36 UTC (rev 271225)
@@ -0,0 +1,46 @@
+// Copyright (C) 2020 Rick Waldron. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+/*---
+esid: sec-%typedarray%.prototype.includes
+description: Returns -1 if buffer is detached after ValidateTypedArray
+info: |
+ %TypedArray%.prototype.includes ( searchElement [ , fromIndex ] )
+
+ The interpretation and use of the arguments of %TypedArray%.prototype.includes are the same as for Array.prototype.includes as defined in 22.1.3.13.
+
+ When the includes method is called with one or two arguments, the following steps are taken:
+
+ Let O be the this value.
+ Perform ? ValidateTypedArray(O).
+ Let len be O.[[ArrayLength]].
+ If len is 0, return false.
+ Let n be ? ToIntegerOrInfinity(fromIndex).
+ Assert: If fromIndex is undefined, then n is 0.
+ If n is +∞, return false.
+ Else if n is -∞, set n to 0.
+ If n ≥ 0, then
+ Let k be n.
+ Else,
+ Let k be len + n.
+ If k < 0, set k to 0.
+ Repeat, while k < len,
+ Let elementK be the result of ! Get(O, ! ToString(F(k))).
+ If SameValueZero(searchElement, elementK) is true, return true.
+ Set k to k + 1.
+ Return false.
+
+includes: [testBigIntTypedArray.js, detachArrayBuffer.js]
+features: [align-detached-buffer-semantics-with-web-reality, BigInt, TypedArray]
+---*/
+
+testWithBigIntTypedArrayConstructors(function(TA) {
+ const sample = new TA(1);
+ const fromIndex = {
+ valueOf() {
+ $DETACHBUFFER(sample.buffer);
+ return 0;
+ }
+ };
+
+ assert.sameValue(sample.includes(0n, fromIndex), false);
+});
Added: trunk/JSTests/test262/test/built-ins/TypedArray/prototype/includes/BigInt/detached-buffer-during-fromIndex-returns-true-for-undefined.js (0 => 271225)
--- trunk/JSTests/test262/test/built-ins/TypedArray/prototype/includes/BigInt/detached-buffer-during-fromIndex-returns-true-for-undefined.js (rev 0)
+++ trunk/JSTests/test262/test/built-ins/TypedArray/prototype/includes/BigInt/detached-buffer-during-fromIndex-returns-true-for-undefined.js 2021-01-07 06:28:36 UTC (rev 271225)
@@ -0,0 +1,47 @@
+// Copyright (C) 2020 Rick Waldron. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+/*---
+esid: sec-%typedarray%.prototype.includes
+description: >
+ Returns false if buffer is detached after ValidateTypedArray and searchElement is a value
+info: |
+ %TypedArray%.prototype.includes ( searchElement [ , fromIndex ] )
+
+ The interpretation and use of the arguments of %TypedArray%.prototype.includes are the same as for Array.prototype.includes as defined in 22.1.3.13.
+
+ When the includes method is called with one or two arguments, the following steps are taken:
+
+ Let O be the this value.
+ Perform ? ValidateTypedArray(O).
+ Let len be O.[[ArrayLength]].
+ If len is 0, return false.
+ Let n be ? ToIntegerOrInfinity(fromIndex).
+ Assert: If fromIndex is undefined, then n is 0.
+ If n is +∞, return false.
+ Else if n is -∞, set n to 0.
+ If n ≥ 0, then
+ Let k be n.
+ Else,
+ Let k be len + n.
+ If k < 0, set k to 0.
+ Repeat, while k < len,
+ Let elementK be the result of ! Get(O, ! ToString(F(k))).
+ If SameValueZero(searchElement, elementK) is true, return true.
+ Set k to k + 1.
+ Return false.
+
+includes: [testBigIntTypedArray.js, detachArrayBuffer.js]
+features: [align-detached-buffer-semantics-with-web-reality, BigInt, TypedArray]
+---*/
+
+testWithBigIntTypedArrayConstructors(function(TA) {
+ const sample = new TA(1);
+ const fromIndex = {
+ valueOf() {
+ $DETACHBUFFER(sample.buffer);
+ return 0;
+ }
+ };
+
+ assert.sameValue(sample.includes(undefined, fromIndex), true);
+});
Added: trunk/JSTests/test262/test/built-ins/TypedArray/prototype/includes/detached-buffer-during-fromIndex-returns-false-for-zero.js (0 => 271225)
--- trunk/JSTests/test262/test/built-ins/TypedArray/prototype/includes/detached-buffer-during-fromIndex-returns-false-for-zero.js (rev 0)
+++ trunk/JSTests/test262/test/built-ins/TypedArray/prototype/includes/detached-buffer-during-fromIndex-returns-false-for-zero.js 2021-01-07 06:28:36 UTC (rev 271225)
@@ -0,0 +1,47 @@
+// Copyright (C) 2020 Rick Waldron. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+/*---
+esid: sec-%typedarray%.prototype.includes
+description: >
+ Returns false if buffer is detached after ValidateTypedArray and searchElement is a value
+info: |
+ %TypedArray%.prototype.includes ( searchElement [ , fromIndex ] )
+
+ The interpretation and use of the arguments of %TypedArray%.prototype.includes are the same as for Array.prototype.includes as defined in 22.1.3.13.
+
+ When the includes method is called with one or two arguments, the following steps are taken:
+
+ Let O be the this value.
+ Perform ? ValidateTypedArray(O).
+ Let len be O.[[ArrayLength]].
+ If len is 0, return false.
+ Let n be ? ToIntegerOrInfinity(fromIndex).
+ Assert: If fromIndex is undefined, then n is 0.
+ If n is +∞, return false.
+ Else if n is -∞, set n to 0.
+ If n ≥ 0, then
+ Let k be n.
+ Else,
+ Let k be len + n.
+ If k < 0, set k to 0.
+ Repeat, while k < len,
+ Let elementK be the result of ! Get(O, ! ToString(F(k))).
+ If SameValueZero(searchElement, elementK) is true, return true.
+ Set k to k + 1.
+ Return false.
+
+includes: [testTypedArray.js, detachArrayBuffer.js]
+features: [align-detached-buffer-semantics-with-web-reality, TypedArray]
+---*/
+
+testWithTypedArrayConstructors(function(TA) {
+ const sample = new TA(1);
+ const fromIndex = {
+ valueOf() {
+ $DETACHBUFFER(sample.buffer);
+ return 0;
+ }
+ };
+
+ assert.sameValue(sample.includes(0, fromIndex), false);
+});
Added: trunk/JSTests/test262/test/built-ins/TypedArray/prototype/includes/detached-buffer-during-fromIndex-returns-true-for-undefined.js (0 => 271225)
--- trunk/JSTests/test262/test/built-ins/TypedArray/prototype/includes/detached-buffer-during-fromIndex-returns-true-for-undefined.js (rev 0)
+++ trunk/JSTests/test262/test/built-ins/TypedArray/prototype/includes/detached-buffer-during-fromIndex-returns-true-for-undefined.js 2021-01-07 06:28:36 UTC (rev 271225)
@@ -0,0 +1,47 @@
+// Copyright (C) 2020 Rick Waldron. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+/*---
+esid: sec-%typedarray%.prototype.includes
+description: >
+ Returns true if buffer is detached after ValidateTypedArray and searchElement is undefined
+info: |
+ %TypedArray%.prototype.includes ( searchElement [ , fromIndex ] )
+
+ The interpretation and use of the arguments of %TypedArray%.prototype.includes are the same as for Array.prototype.includes as defined in 22.1.3.13.
+
+ When the includes method is called with one or two arguments, the following steps are taken:
+
+ Let O be the this value.
+ Perform ? ValidateTypedArray(O).
+ Let len be O.[[ArrayLength]].
+ If len is 0, return false.
+ Let n be ? ToIntegerOrInfinity(fromIndex).
+ Assert: If fromIndex is undefined, then n is 0.
+ If n is +∞, return false.
+ Else if n is -∞, set n to 0.
+ If n ≥ 0, then
+ Let k be n.
+ Else,
+ Let k be len + n.
+ If k < 0, set k to 0.
+ Repeat, while k < len,
+ Let elementK be the result of ! Get(O, ! ToString(F(k))).
+ If SameValueZero(searchElement, elementK) is true, return true.
+ Set k to k + 1.
+ Return false.
+
+includes: [testTypedArray.js, detachArrayBuffer.js]
+features: [align-detached-buffer-semantics-with-web-reality, TypedArray]
+---*/
+
+testWithTypedArrayConstructors(function(TA) {
+ const sample = new TA(1);
+ const fromIndex = {
+ valueOf() {
+ $DETACHBUFFER(sample.buffer);
+ return 0;
+ }
+ };
+
+ assert.sameValue(sample.includes(undefined, fromIndex), true);
+});
Deleted: trunk/JSTests/test262/test/built-ins/TypedArray/prototype/includes/detached-buffer-tointeger.js (271224 => 271225)
--- trunk/JSTests/test262/test/built-ins/TypedArray/prototype/includes/detached-buffer-tointeger.js 2021-01-07 06:11:42 UTC (rev 271224)
+++ trunk/JSTests/test262/test/built-ins/TypedArray/prototype/includes/detached-buffer-tointeger.js 2021-01-07 06:28:36 UTC (rev 271225)
@@ -1,37 +0,0 @@
-// Copyright (C) 2020 Google. All rights reserved.
-// This code is governed by the BSD license found in the LICENSE file.
-/*---
-esid: sec-%typedarray%.prototype.includes
-description: >
- Does not throw a TypeError if this has a detached buffer after index coercion,
- because ValidateTypedArray has already successfully completed.
-
-info: |
- 22.2.3.14 %TypedArray%.prototype.includes ( searchElement [ , fromIndex ] )
-
- The interpretation and use of the arguments of %TypedArray%.prototype.includes are the same as for Array.prototype.includes as defined in 22.1.3.13.
-
- When the includes method is called with one or two arguments, the following steps are taken:
-
- Let O be the this value.
- Perform ? ValidateTypedArray(O).
- Let len be O.[[ArrayLength]].
- If len is 0, return false.
- Let n be ? ToIntegerOrInfinity(fromIndex).
- ...
-
-includes: [testTypedArray.js, detachArrayBuffer.js]
-features: [align-detached-buffer-semantics-with-web-reality, TypedArray]
----*/
-
-testWithTypedArrayConstructors(function(TA) {
- const sample = new TA(10);
- let isDetached = false;
- function valueOf(){
- $DETACHBUFFER(sample.buffer);
- isDetached = true;
- return 0;
- }
- assert.sameValue(sample.includes(0, {valueOf}), false);
- assert.sameValue(isDetached, true);
-});
Added: trunk/JSTests/test262/test/built-ins/TypedArray/prototype/indexOf/BigInt/detached-buffer-during-fromIndex-returns-minus-one-for-undefined.js (0 => 271225)
--- trunk/JSTests/test262/test/built-ins/TypedArray/prototype/indexOf/BigInt/detached-buffer-during-fromIndex-returns-minus-one-for-undefined.js (rev 0)
+++ trunk/JSTests/test262/test/built-ins/TypedArray/prototype/indexOf/BigInt/detached-buffer-during-fromIndex-returns-minus-one-for-undefined.js 2021-01-07 06:28:36 UTC (rev 271225)
@@ -0,0 +1,49 @@
+// Copyright (C) 2020 Rick Waldron. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+/*---
+esid: sec-%typedarray%.prototype.indexof
+description: Throws a TypeError if this has a detached buffer
+info: |
+ %TypedArray%.prototype.indexOf ( searchElement [ , fromIndex ] )
+
+ The interpretation and use of the arguments of %TypedArray%.prototype.indexOf are the same as for Array.prototype.indexOf as defined in 22.1.3.14.
+
+ When the indexOf method is called with one or two arguments, the following steps are taken:
+
+ Let O be the this value.
+ Perform ? ValidateTypedArray(O).
+ Let len be O.[[ArrayLength]].
+ If len is 0, return -1F.
+ Let n be ? ToIntegerOrInfinity(fromIndex).
+ Assert: If fromIndex is undefined, then n is 0.
+ If n is +∞, return -1F.
+ Else if n is -∞, set n to 0.
+ If n ≥ 0, then
+ Let k be n.
+ Else,
+ Let k be len + n.
+ If k < 0, set k to 0.
+ Repeat, while k < len,
+ Let kPresent be ! HasProperty(O, ! ToString(F(k))).
+ If kPresent is true, then
+ Let elementK be ! Get(O, ! ToString(F(k))).
+ Let same be the result of performing Strict Equality Comparison searchElement === elementK.
+ If same is true, return F(k).
+ Set k to k + 1.
+ Return -1F.
+
+includes: [testBigIntTypedArray.js, detachArrayBuffer.js]
+features: [align-detached-buffer-semantics-with-web-reality, BigInt, TypedArray]
+---*/
+
+testWithBigIntTypedArrayConstructors(function(TA) {
+ const sample = new TA(1);
+ const fromIndex = {
+ valueOf() {
+ $DETACHBUFFER(sample.buffer);
+ return 0;
+ }
+ };
+
+ assert.sameValue(sample.indexOf(undefined, fromIndex), -1);
+});
Added: trunk/JSTests/test262/test/built-ins/TypedArray/prototype/indexOf/BigInt/detached-buffer-during-fromIndex-returns-minus-one-for-zero.js (0 => 271225)
--- trunk/JSTests/test262/test/built-ins/TypedArray/prototype/indexOf/BigInt/detached-buffer-during-fromIndex-returns-minus-one-for-zero.js (rev 0)
+++ trunk/JSTests/test262/test/built-ins/TypedArray/prototype/indexOf/BigInt/detached-buffer-during-fromIndex-returns-minus-one-for-zero.js 2021-01-07 06:28:36 UTC (rev 271225)
@@ -0,0 +1,49 @@
+// Copyright (C) 2020 Rick Waldron. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+/*---
+esid: sec-%typedarray%.prototype.indexof
+description: Throws a TypeError if this has a detached buffer
+info: |
+ %TypedArray%.prototype.indexOf ( searchElement [ , fromIndex ] )
+
+ The interpretation and use of the arguments of %TypedArray%.prototype.indexOf are the same as for Array.prototype.indexOf as defined in 22.1.3.14.
+
+ When the indexOf method is called with one or two arguments, the following steps are taken:
+
+ Let O be the this value.
+ Perform ? ValidateTypedArray(O).
+ Let len be O.[[ArrayLength]].
+ If len is 0, return -1F.
+ Let n be ? ToIntegerOrInfinity(fromIndex).
+ Assert: If fromIndex is undefined, then n is 0.
+ If n is +∞, return -1F.
+ Else if n is -∞, set n to 0.
+ If n ≥ 0, then
+ Let k be n.
+ Else,
+ Let k be len + n.
+ If k < 0, set k to 0.
+ Repeat, while k < len,
+ Let kPresent be ! HasProperty(O, ! ToString(F(k))).
+ If kPresent is true, then
+ Let elementK be ! Get(O, ! ToString(F(k))).
+ Let same be the result of performing Strict Equality Comparison searchElement === elementK.
+ If same is true, return F(k).
+ Set k to k + 1.
+ Return -1F.
+
+includes: [testBigIntTypedArray.js, detachArrayBuffer.js]
+features: [align-detached-buffer-semantics-with-web-reality, BigInt, TypedArray]
+---*/
+
+testWithBigIntTypedArrayConstructors(function(TA) {
+ const sample = new TA(1);
+ const fromIndex = {
+ valueOf() {
+ $DETACHBUFFER(sample.buffer);
+ return 0;
+ }
+ };
+
+ assert.sameValue(sample.indexOf(0n, fromIndex), -1);
+});
Added: trunk/JSTests/test262/test/built-ins/TypedArray/prototype/indexOf/detached-buffer-during-fromIndex-returns-minus-one-for-undefined.js (0 => 271225)
--- trunk/JSTests/test262/test/built-ins/TypedArray/prototype/indexOf/detached-buffer-during-fromIndex-returns-minus-one-for-undefined.js (rev 0)
+++ trunk/JSTests/test262/test/built-ins/TypedArray/prototype/indexOf/detached-buffer-during-fromIndex-returns-minus-one-for-undefined.js 2021-01-07 06:28:36 UTC (rev 271225)
@@ -0,0 +1,49 @@
+// Copyright (C) 2020 Rick Waldron. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+/*---
+esid: sec-%typedarray%.prototype.indexof
+description: Returns -1 if buffer is detached after ValidateTypedArray
+info: |
+ %TypedArray%.prototype.indexOf ( searchElement [ , fromIndex ] )
+
+ The interpretation and use of the arguments of %TypedArray%.prototype.indexOf are the same as for Array.prototype.indexOf as defined in 22.1.3.14.
+
+ When the indexOf method is called with one or two arguments, the following steps are taken:
+
+ Let O be the this value.
+ Perform ? ValidateTypedArray(O).
+ Let len be O.[[ArrayLength]].
+ If len is 0, return -1F.
+ Let n be ? ToIntegerOrInfinity(fromIndex).
+ Assert: If fromIndex is undefined, then n is 0.
+ If n is +∞, return -1F.
+ Else if n is -∞, set n to 0.
+ If n ≥ 0, then
+ Let k be n.
+ Else,
+ Let k be len + n.
+ If k < 0, set k to 0.
+ Repeat, while k < len,
+ Let kPresent be ! HasProperty(O, ! ToString(F(k))).
+ If kPresent is true, then
+ Let elementK be ! Get(O, ! ToString(F(k))).
+ Let same be the result of performing Strict Equality Comparison searchElement === elementK.
+ If same is true, return F(k).
+ Set k to k + 1.
+ Return -1F.
+
+includes: [testTypedArray.js, detachArrayBuffer.js]
+features: [align-detached-buffer-semantics-with-web-reality, TypedArray]
+---*/
+
+testWithTypedArrayConstructors(function(TA) {
+ const sample = new TA(1);
+ const fromIndex = {
+ valueOf() {
+ $DETACHBUFFER(sample.buffer);
+ return 0;
+ }
+ };
+
+ assert.sameValue(sample.indexOf(undefined, fromIndex), -1);
+});
Added: trunk/JSTests/test262/test/built-ins/TypedArray/prototype/indexOf/detached-buffer-during-fromIndex-returns-minus-one-for-zero.js (0 => 271225)
--- trunk/JSTests/test262/test/built-ins/TypedArray/prototype/indexOf/detached-buffer-during-fromIndex-returns-minus-one-for-zero.js (rev 0)
+++ trunk/JSTests/test262/test/built-ins/TypedArray/prototype/indexOf/detached-buffer-during-fromIndex-returns-minus-one-for-zero.js 2021-01-07 06:28:36 UTC (rev 271225)
@@ -0,0 +1,49 @@
+// Copyright (C) 2020 Rick Waldron. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+/*---
+esid: sec-%typedarray%.prototype.indexof
+description: Returns -1 if buffer is detached after ValidateTypedArray
+info: |
+ %TypedArray%.prototype.indexOf ( searchElement [ , fromIndex ] )
+
+ The interpretation and use of the arguments of %TypedArray%.prototype.indexOf are the same as for Array.prototype.indexOf as defined in 22.1.3.14.
+
+ When the indexOf method is called with one or two arguments, the following steps are taken:
+
+ Let O be the this value.
+ Perform ? ValidateTypedArray(O).
+ Let len be O.[[ArrayLength]].
+ If len is 0, return -1F.
+ Let n be ? ToIntegerOrInfinity(fromIndex).
+ Assert: If fromIndex is undefined, then n is 0.
+ If n is +∞, return -1F.
+ Else if n is -∞, set n to 0.
+ If n ≥ 0, then
+ Let k be n.
+ Else,
+ Let k be len + n.
+ If k < 0, set k to 0.
+ Repeat, while k < len,
+ Let kPresent be ! HasProperty(O, ! ToString(F(k))).
+ If kPresent is true, then
+ Let elementK be ! Get(O, ! ToString(F(k))).
+ Let same be the result of performing Strict Equality Comparison searchElement === elementK.
+ If same is true, return F(k).
+ Set k to k + 1.
+ Return -1F.
+
+includes: [testTypedArray.js, detachArrayBuffer.js]
+features: [align-detached-buffer-semantics-with-web-reality, TypedArray]
+---*/
+
+testWithTypedArrayConstructors(function(TA) {
+ const sample = new TA(1);
+ const fromIndex = {
+ valueOf() {
+ $DETACHBUFFER(sample.buffer);
+ return 0;
+ }
+ };
+
+ assert.sameValue(sample.indexOf(0, fromIndex), -1);
+});
Added: trunk/JSTests/test262/test/built-ins/TypedArray/prototype/join/BigInt/detached-buffer-during-fromIndex-returns-single-comma.js (0 => 271225)
--- trunk/JSTests/test262/test/built-ins/TypedArray/prototype/join/BigInt/detached-buffer-during-fromIndex-returns-single-comma.js (rev 0)
+++ trunk/JSTests/test262/test/built-ins/TypedArray/prototype/join/BigInt/detached-buffer-during-fromIndex-returns-single-comma.js 2021-01-07 06:28:36 UTC (rev 271225)
@@ -0,0 +1,42 @@
+// Copyright (C) 2020 Rick Waldron. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+/*---
+esid: sec-%typedarray%.prototype.join
+description: Returns single separator if buffer is detached after ValidateTypedArray
+info: |
+ %TypedArray%.prototype.join ( separator )
+
+ The interpretation and use of the arguments of %TypedArray%.prototype.join are the same as for Array.prototype.join as defined in 22.1.3.15.
+
+ When the join method is called with one argument separator, the following steps are taken:
+
+ Let O be the this value.
+ Perform ? ValidateTypedArray(O).
+ Let len be O.[[ArrayLength]].
+ If separator is undefined, let sep be the single-element String ",".
+ Else, let sep be ? ToString(separator).
+ Let R be the empty String.
+ Let k be 0.
+ Repeat, while k < len,
+ If k > 0, set R to the string-concatenation of R and sep.
+ Let element be ! Get(O, ! ToString(𝔽(k))).
+ If element is undefined or null, let next be the empty String; otherwise, let next be ! ToString(element).
+ Set R to the string-concatenation of R and next.
+ Set k to k + 1.
+ Return R.
+
+includes: [testBigIntTypedArray.js, detachArrayBuffer.js]
+features: [align-detached-buffer-semantics-with-web-reality, BigInt, TypedArray]
+---*/
+
+testWithBigIntTypedArrayConstructors(function(TA) {
+ const sample = new TA([1n,2n,3n]);
+ const separator = {
+ toString() {
+ $DETACHBUFFER(sample.buffer);
+ return ',';
+ }
+ };
+
+ assert.sameValue(sample.join(separator), ',,');
+});
Modified: trunk/JSTests/test262/test/built-ins/TypedArray/prototype/join/BigInt/detached-buffer.js (271224 => 271225)
--- trunk/JSTests/test262/test/built-ins/TypedArray/prototype/join/BigInt/detached-buffer.js 2021-01-07 06:11:42 UTC (rev 271224)
+++ trunk/JSTests/test262/test/built-ins/TypedArray/prototype/join/BigInt/detached-buffer.js 2021-01-07 06:28:36 UTC (rev 271225)
@@ -4,31 +4,30 @@
esid: sec-%typedarray%.prototype.join
description: Throws a TypeError if this has a detached buffer
info: |
- 22.2.3.15 %TypedArray%.prototype.join ( separator )
+ %TypedArray%.prototype.join ( separator )
- This function is not generic. ValidateTypedArray is applied to the this value
- prior to evaluating the algorithm. If its result is an abrupt completion that
- exception is thrown instead of evaluating the algorithm.
+ The interpretation and use of the arguments of %TypedArray%.prototype.join are the same as for Array.prototype.join as defined in 22.1.3.15.
- 22.2.3.5.1 Runtime Semantics: ValidateTypedArray ( O )
+ When the join method is called with one argument separator, the following steps are taken:
+ Let O be the this value.
+ Perform ? ValidateTypedArray(O).
...
- 5. If IsDetachedBuffer(buffer) is true, throw a TypeError exception.
- ...
+
includes: [testBigIntTypedArray.js, detachArrayBuffer.js]
features: [BigInt, TypedArray]
---*/
-var obj = {
- toString: function() {
+let obj = {
+ toString() {
throw new Test262Error();
}
};
testWithBigIntTypedArrayConstructors(function(TA) {
- var sample = new TA(1);
+ let sample = new TA(1);
$DETACHBUFFER(sample.buffer);
- assert.throws(TypeError, function() {
+ assert.throws(TypeError, () => {
sample.join(obj);
});
});
Added: trunk/JSTests/test262/test/built-ins/TypedArray/prototype/join/detached-buffer-during-fromIndex-returns-single-comma.js (0 => 271225)
--- trunk/JSTests/test262/test/built-ins/TypedArray/prototype/join/detached-buffer-during-fromIndex-returns-single-comma.js (rev 0)
+++ trunk/JSTests/test262/test/built-ins/TypedArray/prototype/join/detached-buffer-during-fromIndex-returns-single-comma.js 2021-01-07 06:28:36 UTC (rev 271225)
@@ -0,0 +1,42 @@
+// Copyright (C) 2020 Rick Waldron. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+/*---
+esid: sec-%typedarray%.prototype.join
+description: Returns single separator if buffer is detached after ValidateTypedArray
+info: |
+ %TypedArray%.prototype.join ( separator )
+
+ The interpretation and use of the arguments of %TypedArray%.prototype.join are the same as for Array.prototype.join as defined in 22.1.3.15.
+
+ When the join method is called with one argument separator, the following steps are taken:
+
+ Let O be the this value.
+ Perform ? ValidateTypedArray(O).
+ Let len be O.[[ArrayLength]].
+ If separator is undefined, let sep be the single-element String ",".
+ Else, let sep be ? ToString(separator).
+ Let R be the empty String.
+ Let k be 0.
+ Repeat, while k < len,
+ If k > 0, set R to the string-concatenation of R and sep.
+ Let element be ! Get(O, ! ToString(𝔽(k))).
+ If element is undefined or null, let next be the empty String; otherwise, let next be ! ToString(element).
+ Set R to the string-concatenation of R and next.
+ Set k to k + 1.
+ Return R.
+
+includes: [testTypedArray.js, detachArrayBuffer.js]
+features: [align-detached-buffer-semantics-with-web-reality, TypedArray]
+---*/
+
+testWithTypedArrayConstructors(function(TA) {
+ const sample = new TA([1,2,3]);
+ const separator = {
+ toString() {
+ $DETACHBUFFER(sample.buffer);
+ return ',';
+ }
+ };
+
+ assert.sameValue(sample.join(separator), ',,');
+});
Modified: trunk/JSTests/test262/test/built-ins/TypedArray/prototype/join/detached-buffer.js (271224 => 271225)
--- trunk/JSTests/test262/test/built-ins/TypedArray/prototype/join/detached-buffer.js 2021-01-07 06:11:42 UTC (rev 271224)
+++ trunk/JSTests/test262/test/built-ins/TypedArray/prototype/join/detached-buffer.js 2021-01-07 06:28:36 UTC (rev 271225)
@@ -4,31 +4,30 @@
esid: sec-%typedarray%.prototype.join
description: Throws a TypeError if this has a detached buffer
info: |
- 22.2.3.15 %TypedArray%.prototype.join ( separator )
+ %TypedArray%.prototype.join ( separator )
- This function is not generic. ValidateTypedArray is applied to the this value
- prior to evaluating the algorithm. If its result is an abrupt completion that
- exception is thrown instead of evaluating the algorithm.
+ The interpretation and use of the arguments of %TypedArray%.prototype.join are the same as for Array.prototype.join as defined in 22.1.3.15.
- 22.2.3.5.1 Runtime Semantics: ValidateTypedArray ( O )
+ When the join method is called with one argument separator, the following steps are taken:
+ Let O be the this value.
+ Perform ? ValidateTypedArray(O).
...
- 5. If IsDetachedBuffer(buffer) is true, throw a TypeError exception.
- ...
+
includes: [testTypedArray.js, detachArrayBuffer.js]
features: [TypedArray]
---*/
-var obj = {
- toString: function() {
+let obj = {
+ toString() {
throw new Test262Error();
}
};
testWithTypedArrayConstructors(function(TA) {
- var sample = new TA(1);
+ let sample = new TA(1);
$DETACHBUFFER(sample.buffer);
- assert.throws(TypeError, function() {
+ assert.throws(TypeError, () => {
sample.join(obj);
});
});
Added: trunk/JSTests/test262/test/built-ins/TypedArray/prototype/lastIndexOf/BigInt/detached-buffer-during-fromIndex-returns-minus-one-for-undefined.js (0 => 271225)
--- trunk/JSTests/test262/test/built-ins/TypedArray/prototype/lastIndexOf/BigInt/detached-buffer-during-fromIndex-returns-minus-one-for-undefined.js (rev 0)
+++ trunk/JSTests/test262/test/built-ins/TypedArray/prototype/lastIndexOf/BigInt/detached-buffer-during-fromIndex-returns-minus-one-for-undefined.js 2021-01-07 06:28:36 UTC (rev 271225)
@@ -0,0 +1,46 @@
+// Copyright (C) 2020 Rick Waldron. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+/*---
+esid: sec-%typedarray%.prototype.lastindexof
+description: Returns -1 if buffer is detached after ValidateTypedArray
+info: |
+ %TypedArray%.prototype.lastIndexOf ( searchElement [ , fromIndex ] )
+
+ The interpretation and use of the arguments of %TypedArray%.prototype.lastIndexOf are the same as for Array.prototype.lastIndexOf as defined in 22.1.3.17.
+
+ When the lastIndexOf method is called with one or two arguments, the following steps are taken:
+
+ Let O be the this value.
+ Perform ? ValidateTypedArray(O).
+ Let len be O.[[ArrayLength]].
+ If len is 0, return -1F.
+ If fromIndex is present, let n be ? ToIntegerOrInfinity(fromIndex); else let n be len - 1.
+ If n is -∞, return -1F.
+ If n ≥ 0, then
+ Let k be min(n, len - 1).
+ Else,
+ Let k be len + n.
+ Repeat, while k ≥ 0,
+ Let kPresent be ! HasProperty(O, ! ToString(F(k))).
+ If kPresent is true, then
+ Let elementK be ! Get(O, ! ToString(F(k))).
+ Let same be the result of performing Strict Equality Comparison searchElement === elementK.
+ If same is true, return F(k).
+ Set k to k - 1.
+ Return -1F.
+
+includes: [testBigIntTypedArray.js, detachArrayBuffer.js]
+features: [align-detached-buffer-semantics-with-web-reality, BigInt, TypedArray]
+---*/
+
+testWithBigIntTypedArrayConstructors(function(TA) {
+ const sample = new TA(1);
+ const fromIndex = {
+ valueOf() {
+ $DETACHBUFFER(sample.buffer);
+ return 0;
+ }
+ };
+
+ assert.sameValue(sample.lastIndexOf(undefined, fromIndex), -1);
+});
Added: trunk/JSTests/test262/test/built-ins/TypedArray/prototype/lastIndexOf/BigInt/detached-buffer-during-fromIndex-returns-minus-one-for-zero.js (0 => 271225)
--- trunk/JSTests/test262/test/built-ins/TypedArray/prototype/lastIndexOf/BigInt/detached-buffer-during-fromIndex-returns-minus-one-for-zero.js (rev 0)
+++ trunk/JSTests/test262/test/built-ins/TypedArray/prototype/lastIndexOf/BigInt/detached-buffer-during-fromIndex-returns-minus-one-for-zero.js 2021-01-07 06:28:36 UTC (rev 271225)
@@ -0,0 +1,46 @@
+// Copyright (C) 2020 Rick Waldron. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+/*---
+esid: sec-%typedarray%.prototype.lastindexof
+description: Returns -1 if buffer is detached after ValidateTypedArray
+info: |
+ %TypedArray%.prototype.lastIndexOf ( searchElement [ , fromIndex ] )
+
+ The interpretation and use of the arguments of %TypedArray%.prototype.lastIndexOf are the same as for Array.prototype.lastIndexOf as defined in 22.1.3.17.
+
+ When the lastIndexOf method is called with one or two arguments, the following steps are taken:
+
+ Let O be the this value.
+ Perform ? ValidateTypedArray(O).
+ Let len be O.[[ArrayLength]].
+ If len is 0, return -1F.
+ If fromIndex is present, let n be ? ToIntegerOrInfinity(fromIndex); else let n be len - 1.
+ If n is -∞, return -1F.
+ If n ≥ 0, then
+ Let k be min(n, len - 1).
+ Else,
+ Let k be len + n.
+ Repeat, while k ≥ 0,
+ Let kPresent be ! HasProperty(O, ! ToString(F(k))).
+ If kPresent is true, then
+ Let elementK be ! Get(O, ! ToString(F(k))).
+ Let same be the result of performing Strict Equality Comparison searchElement === elementK.
+ If same is true, return F(k).
+ Set k to k - 1.
+ Return -1F.
+
+includes: [testBigIntTypedArray.js, detachArrayBuffer.js]
+features: [align-detached-buffer-semantics-with-web-reality, BigInt, TypedArray]
+---*/
+
+testWithBigIntTypedArrayConstructors(function(TA) {
+ const sample = new TA(1);
+ const fromIndex = {
+ valueOf() {
+ $DETACHBUFFER(sample.buffer);
+ return 0;
+ }
+ };
+
+ assert.sameValue(sample.lastIndexOf(0n, fromIndex), -1);
+});
Added: trunk/JSTests/test262/test/built-ins/TypedArray/prototype/lastIndexOf/detached-buffer-during-fromIndex-returns-minus-one-for-undefined.js (0 => 271225)
--- trunk/JSTests/test262/test/built-ins/TypedArray/prototype/lastIndexOf/detached-buffer-during-fromIndex-returns-minus-one-for-undefined.js (rev 0)
+++ trunk/JSTests/test262/test/built-ins/TypedArray/prototype/lastIndexOf/detached-buffer-during-fromIndex-returns-minus-one-for-undefined.js 2021-01-07 06:28:36 UTC (rev 271225)
@@ -0,0 +1,46 @@
+// Copyright (C) 2020 Rick Waldron. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+/*---
+esid: sec-%typedarray%.prototype.lastindexof
+description: Returns -1 if buffer is detached after ValidateTypedArray
+info: |
+ %TypedArray%.prototype.lastIndexOf ( searchElement [ , fromIndex ] )
+
+ The interpretation and use of the arguments of %TypedArray%.prototype.lastIndexOf are the same as for Array.prototype.lastIndexOf as defined in 22.1.3.17.
+
+ When the lastIndexOf method is called with one or two arguments, the following steps are taken:
+
+ Let O be the this value.
+ Perform ? ValidateTypedArray(O).
+ Let len be O.[[ArrayLength]].
+ If len is 0, return -1F.
+ If fromIndex is present, let n be ? ToIntegerOrInfinity(fromIndex); else let n be len - 1.
+ If n is -∞, return -1F.
+ If n ≥ 0, then
+ Let k be min(n, len - 1).
+ Else,
+ Let k be len + n.
+ Repeat, while k ≥ 0,
+ Let kPresent be ! HasProperty(O, ! ToString(F(k))).
+ If kPresent is true, then
+ Let elementK be ! Get(O, ! ToString(F(k))).
+ Let same be the result of performing Strict Equality Comparison searchElement === elementK.
+ If same is true, return F(k).
+ Set k to k - 1.
+ Return -1F.
+
+includes: [testTypedArray.js, detachArrayBuffer.js]
+features: [align-detached-buffer-semantics-with-web-reality, TypedArray]
+---*/
+
+testWithTypedArrayConstructors(function(TA) {
+ const sample = new TA(1);
+ const fromIndex = {
+ valueOf() {
+ $DETACHBUFFER(sample.buffer);
+ return 0;
+ }
+ };
+
+ assert.sameValue(sample.lastIndexOf(undefined, fromIndex), -1);
+});
Added: trunk/JSTests/test262/test/built-ins/TypedArray/prototype/lastIndexOf/detached-buffer-during-fromIndex-returns-minus-one-for-zero.js (0 => 271225)
--- trunk/JSTests/test262/test/built-ins/TypedArray/prototype/lastIndexOf/detached-buffer-during-fromIndex-returns-minus-one-for-zero.js (rev 0)
+++ trunk/JSTests/test262/test/built-ins/TypedArray/prototype/lastIndexOf/detached-buffer-during-fromIndex-returns-minus-one-for-zero.js 2021-01-07 06:28:36 UTC (rev 271225)
@@ -0,0 +1,46 @@
+// Copyright (C) 2020 Rick Waldron. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+/*---
+esid: sec-%typedarray%.prototype.lastindexof
+description: Returns -1 if buffer is detached after ValidateTypedArray
+info: |
+ %TypedArray%.prototype.lastIndexOf ( searchElement [ , fromIndex ] )
+
+ The interpretation and use of the arguments of %TypedArray%.prototype.lastIndexOf are the same as for Array.prototype.lastIndexOf as defined in 22.1.3.17.
+
+ When the lastIndexOf method is called with one or two arguments, the following steps are taken:
+
+ Let O be the this value.
+ Perform ? ValidateTypedArray(O).
+ Let len be O.[[ArrayLength]].
+ If len is 0, return -1F.
+ If fromIndex is present, let n be ? ToIntegerOrInfinity(fromIndex); else let n be len - 1.
+ If n is -∞, return -1F.
+ If n ≥ 0, then
+ Let k be min(n, len - 1).
+ Else,
+ Let k be len + n.
+ Repeat, while k ≥ 0,
+ Let kPresent be ! HasProperty(O, ! ToString(F(k))).
+ If kPresent is true, then
+ Let elementK be ! Get(O, ! ToString(F(k))).
+ Let same be the result of performing Strict Equality Comparison searchElement === elementK.
+ If same is true, return F(k).
+ Set k to k - 1.
+ Return -1F.
+
+includes: [testTypedArray.js, detachArrayBuffer.js]
+features: [align-detached-buffer-semantics-with-web-reality, TypedArray]
+---*/
+
+testWithTypedArrayConstructors(function(TA) {
+ const sample = new TA(1);
+ const fromIndex = {
+ valueOf() {
+ $DETACHBUFFER(sample.buffer);
+ return 0;
+ }
+ };
+
+ assert.sameValue(sample.lastIndexOf(0, fromIndex), -1);
+});
Modified: trunk/JSTests/test262/test/built-ins/TypedArrayConstructors/internals/GetOwnProperty/BigInt/index-prop-desc.js (271224 => 271225)
--- trunk/JSTests/test262/test/built-ins/TypedArrayConstructors/internals/GetOwnProperty/BigInt/index-prop-desc.js 2021-01-07 06:11:42 UTC (rev 271224)
+++ trunk/JSTests/test262/test/built-ins/TypedArrayConstructors/internals/GetOwnProperty/BigInt/index-prop-desc.js 2021-01-07 06:28:36 UTC (rev 271225)
@@ -29,7 +29,7 @@
assert.sameValue(descriptor0.enumerable, true);
assert.sameValue(descriptor0.writable, true);
- assert.sameValue(descriptor1.value, 42n);
+ assert.sameValue(descriptor1.value, 43n);
assert.sameValue(descriptor1.configurable, true);
assert.sameValue(descriptor1.enumerable, true);
assert.sameValue(descriptor1.writable, true);
Modified: trunk/JSTests/test262/test/built-ins/TypedArrayConstructors/internals/Set/detached-buffer.js (271224 => 271225)
--- trunk/JSTests/test262/test/built-ins/TypedArrayConstructors/internals/Set/detached-buffer.js 2021-01-07 06:11:42 UTC (rev 271224)
+++ trunk/JSTests/test262/test/built-ins/TypedArrayConstructors/internals/Set/detached-buffer.js 2021-01-07 06:28:36 UTC (rev 271225)
@@ -30,6 +30,7 @@
let sample = new TA([42]);
$DETACHBUFFER(sample.buffer);
sample[0] = 1;
+
assert.sameValue(sample[0], undefined, '`sample[0] = 1` is undefined');
sample['1.1'] = 1;
assert.sameValue(sample['1.1'], undefined, '`sample[\'1.1\'] = 1` is undefined');
Added: trunk/JSTests/test262/test/intl402/DateTimeFormat/prototype/formatRange/date-same-returns-single-date.js (0 => 271225)
--- trunk/JSTests/test262/test/intl402/DateTimeFormat/prototype/formatRange/date-same-returns-single-date.js (rev 0)
+++ trunk/JSTests/test262/test/intl402/DateTimeFormat/prototype/formatRange/date-same-returns-single-date.js 2021-01-07 06:28:36 UTC (rev 271225)
@@ -0,0 +1,42 @@
+// Copyright 2021 Google Inc. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+esid: sec-partitiondatetimerangepattern
+description: >
+ When startDate is equal to endDate, the output should be a string equal
+ to the output of Intl.DateTimeFormat.prototype.format.
+info: |
+ Intl.DateTimeFormat.prototype.formatRange ( startDate , endDate )
+
+ 4. Let x be ? ToNumber(startDate).
+ 5. Let y be ? ToNumber(endDate).
+ 6. Return ? FormatDateTimeRange(dtf, x, y).
+
+ PartitionDateTimeRangePattern ( dateTimeFormat, x, y )
+
+ 13. If dateFieldsPracticallyEqual is true, then
+ a. Let pattern be dateTimeFormat.[[Pattern]].
+ b. Let patternParts be PartitionPattern(pattern).
+ c. Let result be ? FormatDateTimePattern(dateTimeFormat, patternParts, tm1).
+ d. For each r in result do
+ i. Set r.[[Source]] to "shared".
+ e. Return result.
+
+features: [Intl.DateTimeFormat-formatRange]
+locale: [en-US]
+---*/
+
+const date = new Date(2019, 7, 10, 1, 2, 3, 234);
+
+let dtf = new Intl.DateTimeFormat("en", { year: "numeric", month: "short", day: "numeric" });
+assert.sameValue(dtf.formatRange(date, date), dtf.format(date), "same output with date options");
+
+dtf = new Intl.DateTimeFormat("en", { minute: "numeric", second: "numeric" });
+assert.sameValue(dtf.formatRange(date, date), dtf.format(date), "same output with time options");
+
+dtf = new Intl.DateTimeFormat("en", { month: "short", day: "numeric", minute: "numeric" });
+assert.sameValue(dtf.formatRange(date, date), dtf.format(date), "same output with date-time options");
+
+dtf = new Intl.DateTimeFormat("en", { dateStyle: "long", timeStyle: "short" });
+assert.sameValue(dtf.formatRange(date, date), dtf.format(date), "same output with dateStyle/timeStyle");
Added: trunk/JSTests/test262/test/intl402/DateTimeFormat/prototype/formatRangeToParts/date-same-returns-single-date.js (0 => 271225)
--- trunk/JSTests/test262/test/intl402/DateTimeFormat/prototype/formatRangeToParts/date-same-returns-single-date.js (rev 0)
+++ trunk/JSTests/test262/test/intl402/DateTimeFormat/prototype/formatRangeToParts/date-same-returns-single-date.js 2021-01-07 06:28:36 UTC (rev 271225)
@@ -0,0 +1,57 @@
+// Copyright 2021 Google Inc. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+esid: sec-partitiondatetimerangepattern
+description: >
+ When startDate is equal to endDate, the output should be an Array of objects with the
+ same value for the `type` and `value` fields as in the Array returned by
+ Intl.DateTimeFormat.prototype.formatToParts.
+info: |
+ Intl.DateTimeFormat.prototype.formatRangeToParts ( startDate , endDate )
+
+ 4. Let x be ? ToNumber(startDate).
+ 5. Let y be ? ToNumber(endDate).
+ 6. Return ? FormatDateTimeRange(dtf, x, y).
+
+ PartitionDateTimeRangePattern ( dateTimeFormat, x, y )
+
+ 13. If dateFieldsPracticallyEqual is true, then
+ a. Let pattern be dateTimeFormat.[[Pattern]].
+ b. Let patternParts be PartitionPattern(pattern).
+ c. Let result be ? FormatDateTimePattern(dateTimeFormat, patternParts, tm1).
+ d. For each r in result do
+ i. Set r.[[Source]] to "shared".
+ e. Return result.
+
+features: [Intl.DateTimeFormat-formatRange]
+locale: [en-US]
+---*/
+
+function* zip(a, b) {
+ assert.sameValue(a.length, b.length);
+ for (let i = 0; i < a.length; ++i) {
+ yield [i, a[i], b[i]];
+ }
+}
+
+function compare(actual, expected) {
+ for (const [i, actualEntry, expectedEntry] of zip(actual, expected)) {
+ assert.sameValue(actualEntry.type, expectedEntry.type, `type for entry ${i}`);
+ assert.sameValue(actualEntry.value, expectedEntry.value, `value for entry ${i}`);
+ }
+}
+
+const date = new Date(2019, 7, 10, 1, 2, 3, 234);
+
+let dtf = new Intl.DateTimeFormat("en", { year: "numeric", month: "short", day: "numeric" });
+compare(dtf.formatRange(date, date), dtf.format(date), "same output with date options");
+
+dtf = new Intl.DateTimeFormat("en", { minute: "numeric", second: "numeric" });
+compare(dtf.formatRange(date, date), dtf.format(date), "same output with time options");
+
+dtf = new Intl.DateTimeFormat("en", { month: "short", day: "numeric", minute: "numeric" });
+compare(dtf.formatRange(date, date), dtf.format(date), "same output with date-time options");
+
+dtf = new Intl.DateTimeFormat("en", { dateStyle: "long", timeStyle: "short" });
+compare(dtf.formatRange(date, date), dtf.format(date), "same output with dateStyle/timeStyle");
Modified: trunk/JSTests/test262/test/intl402/Intl/getCanonicalLocales/canonicalized-tags.js (271224 => 271225)
--- trunk/JSTests/test262/test/intl402/Intl/getCanonicalLocales/canonicalized-tags.js 2021-01-07 06:11:42 UTC (rev 271224)
+++ trunk/JSTests/test262/test/intl402/Intl/getCanonicalLocales/canonicalized-tags.js 2021-01-07 06:28:36 UTC (rev 271225)
@@ -37,7 +37,7 @@
"es-419-u-nu-latn": "es-419-u-nu-latn",
"cmn-hans-cn-u-ca-t-ca-x-t-u": "zh-Hans-CN-t-ca-u-ca-x-t-u",
"de-gregory-u-ca-gregory": "de-gregory-u-ca-gregory",
- "sgn-GR": "sgn-GR",
+ "sgn-GR": "gss",
"ji": "yi",
"de-DD": "de-DE",
"in": "id",
Modified: trunk/JSTests/test262/test/intl402/Intl/getCanonicalLocales/preferred-grandfathered.js (271224 => 271225)
--- trunk/JSTests/test262/test/intl402/Intl/getCanonicalLocales/preferred-grandfathered.js 2021-01-07 06:11:42 UTC (rev 271224)
+++ trunk/JSTests/test262/test/intl402/Intl/getCanonicalLocales/preferred-grandfathered.js 2021-01-07 06:28:36 UTC (rev 271225)
@@ -62,7 +62,7 @@
var regularGrandfatheredUTS35 = {
"art-lojban": "jbo",
- "cel-gaulish": "xtg-x-cel-gaulish",
+ "cel-gaulish": "xtg",
"zh-guoyu": "zh",
"zh-hakka": "hak",
"zh-xiang": "hsn",
Modified: trunk/JSTests/test262/test/intl402/Intl/getCanonicalLocales/preferred-variant.js (271224 => 271225)
--- trunk/JSTests/test262/test/intl402/Intl/getCanonicalLocales/preferred-variant.js 2021-01-07 06:11:42 UTC (rev 271224)
+++ trunk/JSTests/test262/test/intl402/Intl/getCanonicalLocales/preferred-variant.js 2021-01-07 06:28:36 UTC (rev 271225)
@@ -36,10 +36,10 @@
includes: [testIntl.js]
---*/
-// Generated from https://github.com/unicode-org/cldr/blob/master/common/supplemental/supplementalMetadata.xml
-// File-Date: 2020-03-30
+// https://github.com/unicode-org/cldr/blame/master/common/supplemental/supplementalMetadata.xml#L531
+// http://unicode.org/reports/tr35/#LocaleId_Canonicalization
var canonicalizedTags = {
- "ja-latn-hepburn-heploc": "ja-Latn-alalc97-hepburn",
+ "ja-latn-hepburn-heploc": "ja-Latn-alalc97",
};
// make sure the data above is correct
Modified: trunk/JSTests/test262/test/intl402/Locale/extensions-grandfathered.js (271224 => 271225)
--- trunk/JSTests/test262/test/intl402/Locale/extensions-grandfathered.js 2021-01-07 06:11:42 UTC (rev 271224)
+++ trunk/JSTests/test262/test/intl402/Locale/extensions-grandfathered.js 2021-01-07 06:28:36 UTC (rev 271225)
@@ -31,7 +31,7 @@
region: "FR",
numberingSystem: "latn",
},
- canonical: "fr-Cyrl-FR-u-nu-latn-x-cel-gaulish",
+ canonical: "fr-Cyrl-FR-u-nu-latn",
},
// Regular grandfathered with modern replacement.
Modified: trunk/JSTests/test262/test/intl402/Locale/likely-subtags-grandfathered.js (271224 => 271225)
--- trunk/JSTests/test262/test/intl402/Locale/likely-subtags-grandfathered.js 2021-01-07 06:11:42 UTC (rev 271224)
+++ trunk/JSTests/test262/test/intl402/Locale/likely-subtags-grandfathered.js 2021-01-07 06:28:36 UTC (rev 271225)
@@ -68,7 +68,7 @@
},
{
tag: "cel-gaulish",
- canonical: "xtg-x-cel-gaulish",
+ canonical: "xtg",
},
{
tag: "zh-guoyu",
@@ -123,15 +123,15 @@
"x-private",
];
-for (const {tag} of regularGrandfathered) {
+for (const {tag, canonical} of regularGrandfathered) {
const priv = "-x-0";
- const tagMax = new Intl.Locale(tag + priv).maximize().toString().slice(0, -priv.length);
- const tagMin = new Intl.Locale(tag + priv).minimize().toString().slice(0, -priv.length);
+ const tagMax = new Intl.Locale(canonical + priv).maximize().toString().slice(0, -priv.length);
+ const tagMin = new Intl.Locale(canonical + priv).minimize().toString().slice(0, -priv.length);
for (const extra of extras) {
const loc = new Intl.Locale(tag + "-" + extra);
- let canonical = tag + "-" + extra;
+ let canonicalWithExtra = canonical + "-" + extra;
let canonicalMax = tagMax + "-" + extra;
let canonicalMin = tagMin + "-" + extra;
@@ -139,7 +139,7 @@
if (/^[a-z0-9]{5,8}|[0-9][a-z0-9]{3}$/i.test(extra)) {
const sorted = s => s.replace(/(-([a-z0-9]{5,8}|[0-9][a-z0-9]{3}))+$/i,
m => m.split("-").sort().join("-"));
- canonical = sorted(canonical);
+ canonicalWithExtra = sorted(canonicalWithExtra);
canonicalMax = sorted(canonicalMax);
canonicalMin = sorted(canonicalMin);
}
@@ -156,21 +156,18 @@
// what needs to happen next.
//
// From <http://unicode.org/reports/tr35/#Language_Tag_to_Locale_Identifier>:
+ //
+ // > A valid [BCP47] language tag can be converted to a valid Unicode BCP 47 locale
+ // > identifier according to Annex C. LocaleId Canonicalization
+ //
+ // From <http://unicode.org/reports/tr35/#LocaleId_Canonicalization>
+ // > The languageAlias, scriptAlias, territoryAlias, and variantAlias elements are used
+ // > as rules to transform an input source localeId. The first step is to transform the
+ // > languageId portion of the localeId.
//
- // > If the BCP 47 primary language subtag matches the type attribute of a languageAlias
- // > element in Supplemental Data, replace the language subtag with the replacement value.
- // > 1. ...
- // > 2. Five special deprecated grandfathered codes (such as i-default) are in type
- // attributes, and are also replaced.
- // > 3. ...
+ // For regular grandfathered tags, "lojban", "gaulish", "guoyu", "hakka", and "xiang" will
+ // therefore be considered as the "variant" subtag and be replaced by rules in languageAlias.
//
- // So let's assume grandfathered tags are treated as 'primary language subtag' if and only
- // if no additional subtags are present. Because in all other cases, we don't really have a
- // grandfathered tag, but only some arbitrary combination of random subtags.
- //
- // Basically what we expect here is that only grandfathered without any additional subtags
- // are canonicalised to their modern form and in all other cases they're left as is.
- //
// Not all language tag processor will pass this test, for example because they don't order
// variant subtags in alphabetical order or they're too eager when detecting grandfathered
// tags. For example "zh-hakka-hakka" is accepted in some language tag processors, because
@@ -187,7 +184,7 @@
//
// So, if your implementation fails this assertion, but you still like to test the rest of
// this file, a pull request to split this file seems the way to go!
- assert.sameValue(loc.toString(), canonical);
+ assert.sameValue(loc.toString(), canonicalWithExtra);
assert.sameValue(loc.maximize().toString(), canonicalMax);
assert.sameValue(loc.maximize().maximize().toString(), canonicalMax);
Modified: trunk/JSTests/test262/test262-Revision.txt (271224 => 271225)
--- trunk/JSTests/test262/test262-Revision.txt 2021-01-07 06:11:42 UTC (rev 271224)
+++ trunk/JSTests/test262/test262-Revision.txt 2021-01-07 06:28:36 UTC (rev 271225)
@@ -1,2 +1,2 @@
test262 remote url: [email protected]:tc39/test262.git
-test262 revision: 51666c5315ee674d3157544497d933310e2cd6b8
+test262 revision: 6cf3433cf8f44c471a7e4f47e5ba36d32ebb7b69