Upgrade test262 to May 24 version
authorutatane.tea@gmail.com <utatane.tea@gmail.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Sat, 26 May 2018 10:55:47 +0000 (10:55 +0000)
committerutatane.tea@gmail.com <utatane.tea@gmail.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Sat, 26 May 2018 10:55:47 +0000 (10:55 +0000)
https://bugs.webkit.org/show_bug.cgi?id=185937

Reviewed by Darin Adler.

* test262/expectations.yaml:
* test262/harness/doneprintHandle.js:
(DONE):
* test262/latest-changes-summary.txt:
* test262/test/annexB/language/eval-code/direct/global-block-decl-eval-global-existing-global-init.js:
* test262/test/annexB/language/eval-code/direct/global-block-decl-eval-global-existing-non-enumerable-global-init.js: Added.
* test262/test/annexB/language/eval-code/direct/global-if-decl-else-decl-a-eval-global-existing-global-init.js:
* test262/test/annexB/language/eval-code/direct/global-if-decl-else-decl-a-eval-global-existing-non-enumerable-global-init.js: Copied from JSTests/test262/test/annexB/language/eval-code/direct/global-if-decl-else-decl-a-eval-global-existing-global-init.js.
* test262/test/annexB/language/eval-code/direct/global-if-decl-else-decl-b-eval-global-existing-global-init.js:
* test262/test/annexB/language/eval-code/direct/global-if-decl-else-decl-b-eval-global-existing-non-enumerable-global-init.js: Copied from JSTests/test262/test/annexB/language/eval-code/direct/global-if-decl-else-decl-b-eval-global-existing-global-init.js.
* test262/test/annexB/language/eval-code/direct/global-if-decl-else-stmt-eval-global-existing-global-init.js:
* test262/test/annexB/language/eval-code/direct/global-if-decl-else-stmt-eval-global-existing-non-enumerable-global-init.js: Copied from JSTests/test262/test/annexB/language/eval-code/direct/global-if-decl-else-stmt-eval-global-existing-global-init.js.
* test262/test/annexB/language/eval-code/direct/global-if-decl-no-else-eval-global-existing-global-init.js:
* test262/test/annexB/language/eval-code/direct/global-if-decl-no-else-eval-global-existing-non-enumerable-global-init.js: Copied from JSTests/test262/test/annexB/language/eval-code/direct/global-if-decl-no-else-eval-global-existing-global-init.js.
* test262/test/annexB/language/eval-code/direct/global-if-stmt-else-decl-eval-global-existing-global-init.js:
* test262/test/annexB/language/eval-code/direct/global-if-stmt-else-decl-eval-global-existing-non-enumerable-global-init.js: Copied from JSTests/test262/test/annexB/language/eval-code/direct/global-if-stmt-else-decl-eval-global-existing-global-init.js.
* test262/test/annexB/language/eval-code/direct/global-switch-case-eval-global-existing-global-init.js:
* test262/test/annexB/language/eval-code/direct/global-switch-case-eval-global-existing-non-enumerable-global-init.js: Added.
* test262/test/annexB/language/eval-code/direct/global-switch-dflt-eval-global-existing-global-init.js:
* test262/test/annexB/language/eval-code/direct/global-switch-dflt-eval-global-existing-non-enumerable-global-init.js: Added.
* test262/test/annexB/language/eval-code/indirect/global-block-decl-eval-global-existing-global-init.js:
* test262/test/annexB/language/eval-code/indirect/global-block-decl-eval-global-existing-non-enumerable-global-init.js: Added.
* test262/test/annexB/language/eval-code/indirect/global-if-decl-else-decl-a-eval-global-existing-global-init.js:
* test262/test/annexB/language/eval-code/indirect/global-if-decl-else-decl-a-eval-global-existing-non-enumerable-global-init.js: Copied from JSTests/test262/test/annexB/language/eval-code/indirect/global-if-decl-else-decl-a-eval-global-existing-global-init.js.
* test262/test/annexB/language/eval-code/indirect/global-if-decl-else-decl-b-eval-global-existing-global-init.js:
* test262/test/annexB/language/eval-code/indirect/global-if-decl-else-decl-b-eval-global-existing-non-enumerable-global-init.js: Copied from JSTests/test262/test/annexB/language/eval-code/indirect/global-if-decl-else-decl-b-eval-global-existing-global-init.js.
* test262/test/annexB/language/eval-code/indirect/global-if-decl-else-stmt-eval-global-existing-global-init.js:
* test262/test/annexB/language/eval-code/indirect/global-if-decl-else-stmt-eval-global-existing-non-enumerable-global-init.js: Copied from JSTests/test262/test/annexB/language/eval-code/indirect/global-if-decl-else-stmt-eval-global-existing-global-init.js.
* test262/test/annexB/language/eval-code/indirect/global-if-decl-no-else-eval-global-existing-global-init.js:
* test262/test/annexB/language/eval-code/indirect/global-if-decl-no-else-eval-global-existing-non-enumerable-global-init.js: Copied from JSTests/test262/test/annexB/language/eval-code/indirect/global-if-decl-no-else-eval-global-existing-global-init.js.
* test262/test/annexB/language/eval-code/indirect/global-if-stmt-else-decl-eval-global-existing-global-init.js:
* test262/test/annexB/language/eval-code/indirect/global-if-stmt-else-decl-eval-global-existing-non-enumerable-global-init.js: Copied from JSTests/test262/test/annexB/language/eval-code/indirect/global-if-stmt-else-decl-eval-global-existing-global-init.js.
* test262/test/annexB/language/eval-code/indirect/global-switch-case-eval-global-existing-global-init.js:
* test262/test/annexB/language/eval-code/indirect/global-switch-case-eval-global-existing-non-enumerable-global-init.js: Added.
* test262/test/annexB/language/eval-code/indirect/global-switch-dflt-eval-global-existing-global-init.js:
* test262/test/annexB/language/eval-code/indirect/global-switch-dflt-eval-global-existing-non-enumerable-global-init.js: Added.
* test262/test/annexB/language/global-code/block-decl-global-existing-global-init.js: Added.
(262.evalScript.f):
* test262/test/annexB/language/global-code/block-decl-global-existing-non-enumerable-global-init.js: Added.
(262.evalScript.f):
* test262/test/annexB/language/global-code/if-decl-else-decl-a-global-existing-global-init.js: Added.
(262.evalScript.true.f):
(else._f):
* test262/test/annexB/language/global-code/if-decl-else-decl-a-global-existing-non-enumerable-global-init.js: Added.
(262.evalScript.true.f):
(else._f):
* test262/test/annexB/language/global-code/if-decl-else-decl-b-global-existing-global-init.js: Added.
(262.evalScript.false._f):
(else.f):
* test262/test/annexB/language/global-code/if-decl-else-decl-b-global-existing-non-enumerable-global-init.js: Added.
(262.evalScript.false._f):
(else.f):
* test262/test/annexB/language/global-code/if-decl-else-stmt-global-existing-global-init.js: Added.
(262.evalScript.true.f):
* test262/test/annexB/language/global-code/if-decl-else-stmt-global-existing-non-enumerable-global-init.js: Added.
(262.evalScript.true.f):
* test262/test/annexB/language/global-code/if-decl-no-else-global-existing-global-init.js: Added.
(262.evalScript.true.f):
* test262/test/annexB/language/global-code/if-decl-no-else-global-existing-non-enumerable-global-init.js: Added.
(262.evalScript.true.f):
* test262/test/annexB/language/global-code/if-stmt-else-decl-global-existing-global-init.js: Added.
(else.f):
* test262/test/annexB/language/global-code/if-stmt-else-decl-global-existing-non-enumerable-global-init.js: Added.
(else.f):
* test262/test/annexB/language/global-code/switch-case-global-existing-global-init.js: Added.
(262.evalScript.switch.case.1):
(262.evalScript.switch):
* test262/test/annexB/language/global-code/switch-case-global-existing-non-enumerable-global-init.js: Added.
(262.evalScript.switch.case.1):
(262.evalScript.switch):
* test262/test/annexB/language/global-code/switch-dflt-global-existing-global-init.js: Added.
(262.evalScript.switch.default):
(262.evalScript.switch):
* test262/test/annexB/language/global-code/switch-dflt-global-existing-non-enumerable-global-init.js: Added.
(262.evalScript.switch.default):
(262.evalScript.switch):
* test262/test/built-ins/Array/prototype/flat/array-like-objects.js: Renamed from JSTests/test262/test/built-ins/Array/prototype/flatten/array-like-objects.js.
* test262/test/built-ins/Array/prototype/flat/bound-function-call.js: Renamed from JSTests/test262/test/built-ins/Array/prototype/flatten/bound-function-call.js.
* test262/test/built-ins/Array/prototype/flat/empty-array-elements.js: Renamed from JSTests/test262/test/built-ins/Array/prototype/flatten/empty-array-elements.js.
* test262/test/built-ins/Array/prototype/flat/empty-object-elements.js: Renamed from JSTests/test262/test/built-ins/Array/prototype/flatten/empty-object-elements.js.
* test262/test/built-ins/Array/prototype/flat/length.js: Added.
* test262/test/built-ins/Array/prototype/flat/name.js: Added.
* test262/test/built-ins/Array/prototype/flat/non-numeric-depth-should-not-throw.js: Renamed from JSTests/test262/test/built-ins/Array/prototype/flatten/non-numeric-depth-should-not-throw.js.
* test262/test/built-ins/Array/prototype/flat/non-object-ctor-throws.js: Renamed from JSTests/test262/test/built-ins/Array/prototype/flatten/non-object-ctor-throws.js.
* test262/test/built-ins/Array/prototype/flat/null-undefined-elements.js: Added.
* test262/test/built-ins/Array/prototype/flat/null-undefined-input-throws.js: Renamed from JSTests/test262/test/built-ins/Array/prototype/flatten/null-undefined-input-throws.js.
* test262/test/built-ins/Array/prototype/flat/positive-infinity.js: Renamed from JSTests/test262/test/built-ins/Array/prototype/flatten/positive-infinity.js.
* test262/test/built-ins/Array/prototype/flat/prop-desc.js: Renamed from JSTests/test262/test/built-ins/Array/prototype/flatten/prop-desc.js.
* test262/test/built-ins/Array/prototype/flat/symbol-object-create-null-depth-throws.js: Renamed from JSTests/test262/test/built-ins/Array/prototype/flatten/symbol-object-create-null-depth-throws.js.
* test262/test/built-ins/Array/prototype/flatten/length.js: Removed.
* test262/test/built-ins/Array/prototype/flatten/name.js: Removed.
* test262/test/built-ins/Array/prototype/flatten/null-undefined-elements.js: Removed.
* test262/test/built-ins/AsyncGeneratorPrototype/next/name.js:
* test262/test/built-ins/AsyncGeneratorPrototype/return/name.js:
* test262/test/built-ins/AsyncGeneratorPrototype/throw/name.js:
* test262/test/built-ins/Math/acosh/nan-returns.js:
* test262/test/built-ins/Math/asinh/asinh-specialVals.js:
* test262/test/built-ins/Math/atanh/atanh-specialVals.js:
* test262/test/built-ins/Math/cbrt/cbrt-specialValues.js:
* test262/test/built-ins/Math/cbrt/prop-desc.js:
* test262/test/built-ins/Math/cosh/cosh-specialVals.js:
* test262/test/built-ins/Math/expm1/expm1-specialVals.js:
* test262/test/built-ins/Math/log10/Log10-specialVals.js:
* test262/test/built-ins/Math/log2/log2-basicTests.js:
* test262/test/built-ins/Math/sign/sign-specialVals.js:
* test262/test/built-ins/Math/sinh/sinh-specialVals.js:
* test262/test/built-ins/Math/tanh/tanh-specialVals.js:
* test262/test/built-ins/Math/trunc/trunc-sampleTests.js:
* test262/test/built-ins/Math/trunc/trunc-specialVals.js:
* test262/test/built-ins/Object/internals/DefineOwnProperty/consistent-value-regexp-dollar1.js: Added.
* test262/test/built-ins/Object/internals/DefineOwnProperty/consistent-writable-regexp-dollar1.js: Added.
* test262/test/intl402/Intl/getCanonicalLocales/descriptor.js:
* test262/test/intl402/Intl/getCanonicalLocales/duplicates.js:
* test262/test/intl402/Locale/constructor-getter-order.js: Added.
(new.Intl.Locale.toString):
(get language):
(get script):
(get region):
(get calendar):
(get collation):
(get hourCycle):
(get caseFirst):
(get numeric):
(get numberingSystem):
* test262/test/intl402/Locale/constructor-locale-object.js: Added.
* test262/test/intl402/Locale/constructor-non-iana-canon.js: Added.
* test262/test/intl402/Locale/constructor-options-casefirst-invalid.js: Added.
(valueOf):
(const.invalidCaseFirstOption.of.invalidCaseFirstOptions.new.Intl.Locale):
* test262/test/intl402/Locale/constructor-options-casefirst-valid.js: Added.
(toString):
* test262/test/intl402/Locale/constructor-options-collation-invalid.js: Added.
(const.invalidCollationOption.of.invalidCollationOptions.new.Intl.Locale):
* test262/test/intl402/Locale/constructor-options-collation-valid.js: Added.
* test262/test/intl402/Locale/constructor-options-hourcycle-invalid.js: Added.
(const.invalidHourCycleOption.of.invalidHourCycleOptions.new.Intl.Locale):
* test262/test/intl402/Locale/constructor-options-hourcycle-valid.js: Added.
(toString):
* test262/test/intl402/Locale/constructor-options-language-grandfathered.js: Added.
* test262/test/intl402/Locale/constructor-options-language-valid.js:
(toString):
* test262/test/intl402/Locale/constructor-options-numberingsystem-invalid.js: Added.
(const.invalidNumberingSystemOption.of.invalidNumberingSystemOptions.new.Intl.Locale):
* test262/test/intl402/Locale/constructor-options-numberingsystem-valid.js: Added.
* test262/test/intl402/Locale/constructor-options-numeric-valid.js: Added.
(valueOf):
* test262/test/intl402/Locale/constructor-options-region-valid.js:
* test262/test/intl402/Locale/constructor-options-script-valid.js:
(toString):
* test262/test/intl402/Locale/constructor-parse-twice.js: Added.
* test262/test/intl402/Locale/constructor-tag-tostring.js: Added.
(CustomError):
(WrongCustomError):
(const.errors.get Symbol):
(throw.new.CustomError):
(throw.new.CustomError.get toString):
(throw.new.CustomError.get valueOf):
(throw.new.WrongCustomError.get valueOf):
(throw.new.WrongCustomError):
* test262/test/intl402/Locale/constructor-unicode-ext-invalid.js: Added.
* test262/test/intl402/Locale/constructor-unicode-ext-valid.js: Added.
(canonical.of.Object.entries):
* test262/test/intl402/Locale/extensions-grandfathered.js: Added.
(of.testData.value.of.Object.entries):
* test262/test/intl402/Locale/extensions-private.js: Added.
* test262/test/intl402/Locale/getters-grandfathered.js: Added.
* test262/test/intl402/Locale/getters-missing.js: Added.
* test262/test/intl402/Locale/getters-privateuse.js: Added.
* test262/test/intl402/Locale/getters.js: Added.
* test262/test/intl402/Locale/invalid-tag-throws-symbol.js:
* test262/test/intl402/Locale/likely-subtags-grandfathered.js: Added.
* test262/test/intl402/Locale/prop-desc.js:
* test262/test/intl402/Locale/prototype/baseName/prop-desc.js: Added.
* test262/test/intl402/Locale/prototype/calendar/prop-desc.js: Added.
* test262/test/intl402/Locale/prototype/caseFirst/prop-desc.js: Added.
* test262/test/intl402/Locale/prototype/collation/prop-desc.js: Added.
* test262/test/intl402/Locale/prototype/constructor/prop-desc.js: Copied from JSTests/test262/test/intl402/Locale/prototype/constructor.js.
* test262/test/intl402/Locale/prototype/hourCycle/prop-desc.js: Added.
* test262/test/intl402/Locale/prototype/language/prop-desc.js: Added.
* test262/test/intl402/Locale/prototype/maximize/length.js:
* test262/test/intl402/Locale/prototype/maximize/prop-desc.js:
* test262/test/intl402/Locale/prototype/minimize/length.js: Copied from JSTests/test262/test/intl402/Locale/prototype/maximize/length.js.
* test262/test/intl402/Locale/prototype/minimize/name.js: Added.
* test262/test/intl402/Locale/prototype/minimize/prop-desc.js: Copied from JSTests/test262/test/intl402/Locale/prototype/constructor.js.
* test262/test/intl402/Locale/prototype/numberingSystem/prop-desc.js: Added.
* test262/test/intl402/Locale/prototype/numeric/prop-desc.js: Added.
* test262/test/intl402/Locale/prototype/region/prop-desc.js: Added.
* test262/test/intl402/Locale/prototype/script/prop-desc.js: Added.
* test262/test/intl402/Locale/prototype/toString/prop-desc.js: Renamed from JSTests/test262/test/intl402/Locale/prototype/constructor.js.
* test262/test/intl402/Locale/prototype/toStringTag/toStringTag.js: Renamed from JSTests/test262/test/intl402/Locale/prototype/toStringTag.js.
* test262/test/intl402/Number/prototype/toLocaleString/length.js:
* test262/test/intl402/NumberFormat/length.js:
* test262/test/intl402/NumberFormat/name.js:
* test262/test/intl402/NumberFormat/prop-desc.js:
* test262/test/intl402/PluralRules/length.js:
* test262/test/intl402/PluralRules/name.js:
* test262/test/intl402/PluralRules/prop-desc.js: Copied from JSTests/test262/test/intl402/NumberFormat/prop-desc.js.
* test262/test/language/expressions/addition/bigint-and-number.js:
* test262/test/language/expressions/addition/bigint-arithmetic.js:
(testAdd): Deleted.
* test262/test/language/expressions/addition/bigint-errors.js:
(Symbol.toPrimitive):
(0n.Symbol.toPrimitive):
(valueOf):
(0n.valueOf):
(toString):
(0n.toString):
* test262/test/language/expressions/addition/bigint-toprimitive.js:
* test262/test/language/expressions/addition/bigint-wrapped-values.js:
* test262/test/language/expressions/bitwise-and/bigint-and-number.js:
* test262/test/language/expressions/bitwise-and/bigint-errors.js:
(Symbol.toPrimitive):
(0n.Symbol.toPrimitive):
(valueOf):
(0n.valueOf):
(toString):
(0n.toString):
* test262/test/language/expressions/bitwise-and/bigint-non-primitive.js:
(assert.sameValue.Symbol.toPrimitive):
(assert.sameValue.0b011n.Symbol.toPrimitive):
(assert.sameValue.valueOf):
(assert.sameValue.0b011n.valueOf):
(assert.sameValue.toString):
(assert.sameValue.0b011n.toString):
* test262/test/language/expressions/bitwise-and/bigint-toprimitive.js:
* test262/test/language/expressions/bitwise-and/bigint-wrapped-values.js:
* test262/test/language/expressions/bitwise-not/bigint-non-primitive.js:
(assert.sameValue.Symbol.toPrimitive):
(assert.sameValue.valueOf):
(assert.sameValue.toString):
* test262/test/language/expressions/bitwise-or/bigint-and-number.js:
* test262/test/language/expressions/bitwise-or/bigint-errors.js:
(Symbol.toPrimitive):
(0n.Symbol.toPrimitive):
(valueOf):
(0n.valueOf):
(toString):
(0n.toString):
* test262/test/language/expressions/bitwise-or/bigint-non-primitive.js:
(assert.sameValue.Symbol.toPrimitive):
(assert.sameValue.0b011n.Symbol.toPrimitive):
(assert.sameValue.valueOf):
(assert.sameValue.0b011n.valueOf):
(assert.sameValue.toString):
(assert.sameValue.0b011n.toString):
* test262/test/language/expressions/bitwise-or/bigint-toprimitive.js:
* test262/test/language/expressions/bitwise-or/bigint-wrapped-values.js:
* test262/test/language/expressions/bitwise-xor/bigint-and-number.js:
* test262/test/language/expressions/bitwise-xor/bigint-errors.js:
(Symbol.toPrimitive):
(0n.Symbol.toPrimitive):
(valueOf):
(0n.valueOf):
(toString):
(0n.toString):
* test262/test/language/expressions/bitwise-xor/bigint-non-primitive.js:
(assert.sameValue.Symbol.toPrimitive):
(assert.sameValue.0b011n.Symbol.toPrimitive):
(assert.sameValue.valueOf):
(assert.sameValue.0b011n.valueOf):
(assert.sameValue.toString):
(assert.sameValue.0b011n.toString):
* test262/test/language/expressions/bitwise-xor/bigint-toprimitive.js:
* test262/test/language/expressions/bitwise-xor/bigint-wrapped-values.js:
* test262/test/language/expressions/division/bigint-and-number.js:
* test262/test/language/expressions/division/bigint-arithmetic.js:
(testDiv): Deleted.
* test262/test/language/expressions/division/bigint-complex-infinity.js:
* test262/test/language/expressions/division/bigint-errors.js:
(Symbol.toPrimitive):
(0n.Symbol.toPrimitive):
(valueOf):
(0n.valueOf):
(toString):
(0n.toString):
* test262/test/language/expressions/division/bigint-toprimitive.js:
* test262/test/language/expressions/division/bigint-wrapped-values.js:
* test262/test/language/expressions/does-not-equals/bigint-and-bigint.js:
* test262/test/language/expressions/does-not-equals/bigint-and-boolean.js:
* test262/test/language/expressions/does-not-equals/bigint-and-incomparable-primitive.js:
* test262/test/language/expressions/does-not-equals/bigint-and-non-finite.js:
* test262/test/language/expressions/does-not-equals/bigint-and-number-extremes.js:
* test262/test/language/expressions/does-not-equals/bigint-and-number.js:
* test262/test/language/expressions/does-not-equals/bigint-and-object.js:
(assert.sameValue.0n.valueOf):
(assert.sameValue.valueOf):
(assert.sameValue.0n.toString):
(assert.sameValue.toString):
(assert.sameValue.900719925474099101n.valueOf):
(assert.sameValue.900719925474099101n.toString):
* test262/test/language/expressions/does-not-equals/bigint-and-string.js:
* test262/test/language/expressions/equals/bigint-and-bigint.js:
* test262/test/language/expressions/equals/bigint-and-boolean.js:
* test262/test/language/expressions/equals/bigint-and-incomparable-primitive.js:
* test262/test/language/expressions/equals/bigint-and-non-finite.js:
* test262/test/language/expressions/equals/bigint-and-number-extremes.js:
* test262/test/language/expressions/equals/bigint-and-number.js:
* test262/test/language/expressions/equals/bigint-and-object.js:
(assert.sameValue.0n.valueOf):
(assert.sameValue.valueOf):
(assert.sameValue.0n.toString):
(assert.sameValue.toString):
(assert.sameValue.900719925474099101n.valueOf):
(assert.sameValue.900719925474099101n.toString):
* test262/test/language/expressions/equals/bigint-and-string.js:
* test262/test/language/expressions/exponentiation/bigint-and-number.js:
* test262/test/language/expressions/exponentiation/bigint-arithmetic.js:
(testExpt): Deleted.
* test262/test/language/expressions/exponentiation/bigint-errors.js:
(Symbol.toPrimitive):
(0n.Symbol.toPrimitive):
(valueOf):
(0n.valueOf):
(toString):
(0n.toString):
* test262/test/language/expressions/exponentiation/bigint-negative-exponent-throws.js: Renamed from JSTests/test262/test/language/expressions/exponentiation/bigint-exp-operator-negative-throws.js.
* test262/test/language/expressions/exponentiation/bigint-toprimitive.js:
* test262/test/language/expressions/exponentiation/bigint-wrapped-values.js:
* test262/test/language/expressions/exponentiation/bigint-zero-base-zero-exponent.js:
* test262/test/language/expressions/greater-than-or-equal/bigint-and-bigint.js:
* test262/test/language/expressions/greater-than-or-equal/bigint-and-incomparable-string.js:
* test262/test/language/expressions/greater-than-or-equal/bigint-and-non-finite.js:
* test262/test/language/expressions/greater-than-or-equal/bigint-and-number-extremes.js:
* test262/test/language/expressions/greater-than-or-equal/bigint-and-number.js:
* test262/test/language/expressions/greater-than-or-equal/bigint-and-string.js:
* test262/test/language/expressions/greater-than/11.8.2-1.js:
(obj1.valueOf):
(obj2.valueOf):
* test262/test/language/expressions/greater-than/11.8.2-2.js:
(obj1.valueOf):
(obj2.toString):
* test262/test/language/expressions/greater-than/11.8.2-3.js:
(obj1.toString):
(obj2.valueOf):
* test262/test/language/expressions/greater-than/11.8.2-4.js:
(obj1.toString):
(obj2.toString):
* test262/test/language/expressions/greater-than/bigint-and-bigint.js:
* test262/test/language/expressions/greater-than/bigint-and-boolean.js:
* test262/test/language/expressions/greater-than/bigint-and-incomparable-string.js:
* test262/test/language/expressions/greater-than/bigint-and-non-finite.js:
* test262/test/language/expressions/greater-than/bigint-and-number-extremes.js:
* test262/test/language/expressions/greater-than/bigint-and-number.js:
* test262/test/language/expressions/greater-than/bigint-and-string.js:
* test262/test/language/expressions/greater-than/bigint-and-symbol.js: Added.
* test262/test/language/expressions/left-shift/bigint-and-number.js:
* test262/test/language/expressions/left-shift/bigint-errors.js:
(Symbol.toPrimitive):
(0n.Symbol.toPrimitive):
(valueOf):
(0n.valueOf):
(toString):
(0n.toString):
* test262/test/language/expressions/left-shift/bigint-non-primitive.js:
(assert.sameValue.Symbol.toPrimitive):
(assert.sameValue.valueOf):
(assert.sameValue.toString):
(assert.sameValue.0b101n.Symbol.toPrimitive):
(assert.sameValue.0b101n.valueOf):
(assert.sameValue.0b101n.toString):
(valueOf):
* test262/test/language/expressions/left-shift/bigint-toprimitive.js:
* test262/test/language/expressions/left-shift/bigint-wrapped-values.js:
* test262/test/language/expressions/less-than-or-equal/11.8.3-1.js:
(obj1.valueOf):
(obj2.valueOf):
* test262/test/language/expressions/less-than-or-equal/11.8.3-2.js:
(obj1.valueOf):
(obj2.toString):
* test262/test/language/expressions/less-than-or-equal/11.8.3-3.js:
(obj1.toString):
(obj2.valueOf):
* test262/test/language/expressions/less-than-or-equal/11.8.3-4.js:
(obj1.toString):
(obj2.toString):
* test262/test/language/expressions/less-than-or-equal/11.8.3-5.js: Removed.
* test262/test/language/expressions/less-than-or-equal/bigint-and-bigint.js:
* test262/test/language/expressions/less-than-or-equal/bigint-and-incomparable-string.js:
* test262/test/language/expressions/less-than-or-equal/bigint-and-non-finite.js:
* test262/test/language/expressions/less-than-or-equal/bigint-and-number-extremes.js:
* test262/test/language/expressions/less-than-or-equal/bigint-and-number.js:
* test262/test/language/expressions/less-than-or-equal/bigint-and-string.js:
* test262/test/language/expressions/less-than/bigint-and-bigint.js:
* test262/test/language/expressions/less-than/bigint-and-boolean.js:
* test262/test/language/expressions/less-than/bigint-and-incomparable-string.js:
* test262/test/language/expressions/less-than/bigint-and-non-finite.js:
* test262/test/language/expressions/less-than/bigint-and-number-extremes.js:
* test262/test/language/expressions/less-than/bigint-and-number.js:
* test262/test/language/expressions/less-than/bigint-and-string.js:
* test262/test/language/expressions/less-than/bigint-and-symbol.js: Added.
* test262/test/language/expressions/modulus/bigint-and-number.js:
* test262/test/language/expressions/modulus/bigint-arithmetic.js:
(testMod): Deleted.
* test262/test/language/expressions/modulus/bigint-errors.js:
(Symbol.toPrimitive):
(0n.Symbol.toPrimitive):
(valueOf):
(0n.valueOf):
(toString):
(0n.toString):
* test262/test/language/expressions/modulus/bigint-modulo-zero.js:
* test262/test/language/expressions/modulus/bigint-toprimitive.js:
* test262/test/language/expressions/modulus/bigint-wrapped-values.js:
* test262/test/language/expressions/multiplication/bigint-and-number.js:
* test262/test/language/expressions/multiplication/bigint-arithmetic.js:
(testMul): Deleted.
* test262/test/language/expressions/multiplication/bigint-errors.js:
(Symbol.toPrimitive):
(0n.Symbol.toPrimitive):
(valueOf):
(0n.valueOf):
(toString):
(0n.toString):
* test262/test/language/expressions/multiplication/bigint-toprimitive.js:
* test262/test/language/expressions/multiplication/bigint-wrapped-values.js:
* test262/test/language/expressions/right-shift/bigint-and-number.js:
* test262/test/language/expressions/right-shift/bigint-errors.js:
(Symbol.toPrimitive):
(0n.Symbol.toPrimitive):
(valueOf):
(0n.valueOf):
(toString):
(0n.toString):
* test262/test/language/expressions/right-shift/bigint-non-primitive.js:
(assert.sameValue.Symbol.toPrimitive):
(assert.sameValue.valueOf):
(assert.sameValue.toString):
(assert.sameValue.0b101n.Symbol.toPrimitive):
(assert.sameValue.0b101n.valueOf):
(assert.sameValue.0b101n.toString):
(valueOf):
* test262/test/language/expressions/right-shift/bigint-toprimitive.js:
* test262/test/language/expressions/right-shift/bigint-wrapped-values.js:
* test262/test/language/expressions/strict-does-not-equals/bigint-and-bigint.js:
* test262/test/language/expressions/strict-does-not-equals/bigint-and-boolean.js:
* test262/test/language/expressions/strict-does-not-equals/bigint-and-incomparable-primitive.js:
* test262/test/language/expressions/strict-does-not-equals/bigint-and-non-finite.js:
* test262/test/language/expressions/strict-does-not-equals/bigint-and-number-extremes.js:
* test262/test/language/expressions/strict-does-not-equals/bigint-and-number.js:
* test262/test/language/expressions/strict-does-not-equals/bigint-and-object.js:
(assert.sameValue.0n.valueOf):
(assert.sameValue.valueOf):
(assert.sameValue.0n.toString):
(assert.sameValue.toString):
(assert.sameValue.900719925474099101n.valueOf):
(assert.sameValue.900719925474099101n.toString):
* test262/test/language/expressions/strict-does-not-equals/bigint-and-string.js:
* test262/test/language/expressions/strict-equals/bigint-and-bigint.js:
* test262/test/language/expressions/strict-equals/bigint-and-boolean.js:
* test262/test/language/expressions/strict-equals/bigint-and-incomparable-primitive.js:
* test262/test/language/expressions/strict-equals/bigint-and-non-finite.js:
* test262/test/language/expressions/strict-equals/bigint-and-number-extremes.js:
* test262/test/language/expressions/strict-equals/bigint-and-number.js:
* test262/test/language/expressions/strict-equals/bigint-and-object.js:
(assert.sameValue.0n.valueOf):
(assert.sameValue.valueOf):
(assert.sameValue.0n.toString):
(assert.sameValue.toString):
(assert.sameValue.900719925474099101n.valueOf):
(assert.sameValue.900719925474099101n.toString):
* test262/test/language/expressions/strict-equals/bigint-and-string.js:
* test262/test/language/expressions/subtraction/bigint-and-number.js:
* test262/test/language/expressions/subtraction/bigint-arithmetic.js:
(testSub): Deleted.
* test262/test/language/expressions/subtraction/bigint-errors.js:
(Symbol.toPrimitive):
(0n.Symbol.toPrimitive):
(valueOf):
(0n.valueOf):
(toString):
(0n.toString):
* test262/test/language/expressions/subtraction/bigint-toprimitive.js:
* test262/test/language/expressions/subtraction/bigint-wrapped-values.js:
* test262/test/language/expressions/unary-minus/bigint-non-primitive.js:
(assert.sameValue.Symbol.toPrimitive):
(assert.sameValue.valueOf):
(assert.sameValue.toString):
* test262/test/language/expressions/unary-plus/bigint-throws.js:
* test262/test/language/expressions/unsigned-right-shift/bigint-and-number.js:
* test262/test/language/expressions/unsigned-right-shift/bigint-errors.js:
(Symbol.toPrimitive):
(0n.Symbol.toPrimitive):
(valueOf):
(0n.valueOf):
(toString):
(0n.toString):
* test262/test/language/expressions/unsigned-right-shift/bigint-non-primitive.js:
(Symbol.toPrimitive):
(valueOf):
(toString):
(0b101n.Symbol.toPrimitive):
(0b101n.valueOf):
(0b101n.toString):
(valueOf.valueOf):
* test262/test/language/expressions/unsigned-right-shift/bigint-toprimitive.js:
* test262/test/language/expressions/unsigned-right-shift/bigint-wrapped-values.js:
* test262/test/language/literals/numeric/numeric-followed-by-ident.js: Added.
* test262/test/language/literals/string/line-continuation-double.js: Added.
* test262/test/language/literals/string/line-continuation-single.js: Added.
* test262/test262-Revision.txt:

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@232224 268f45cc-cd09-0410-ab3c-d52691b4dbfc

283 files changed:
JSTests/ChangeLog
JSTests/test262/expectations.yaml
JSTests/test262/harness/doneprintHandle.js
JSTests/test262/latest-changes-summary.txt
JSTests/test262/test/annexB/language/eval-code/direct/global-block-decl-eval-global-existing-global-init.js
JSTests/test262/test/annexB/language/eval-code/direct/global-block-decl-eval-global-existing-non-enumerable-global-init.js [new file with mode: 0644]
JSTests/test262/test/annexB/language/eval-code/direct/global-if-decl-else-decl-a-eval-global-existing-global-init.js
JSTests/test262/test/annexB/language/eval-code/direct/global-if-decl-else-decl-a-eval-global-existing-non-enumerable-global-init.js [new file with mode: 0644]
JSTests/test262/test/annexB/language/eval-code/direct/global-if-decl-else-decl-b-eval-global-existing-global-init.js
JSTests/test262/test/annexB/language/eval-code/direct/global-if-decl-else-decl-b-eval-global-existing-non-enumerable-global-init.js [new file with mode: 0644]
JSTests/test262/test/annexB/language/eval-code/direct/global-if-decl-else-stmt-eval-global-existing-global-init.js
JSTests/test262/test/annexB/language/eval-code/direct/global-if-decl-else-stmt-eval-global-existing-non-enumerable-global-init.js [new file with mode: 0644]
JSTests/test262/test/annexB/language/eval-code/direct/global-if-decl-no-else-eval-global-existing-global-init.js
JSTests/test262/test/annexB/language/eval-code/direct/global-if-decl-no-else-eval-global-existing-non-enumerable-global-init.js [new file with mode: 0644]
JSTests/test262/test/annexB/language/eval-code/direct/global-if-stmt-else-decl-eval-global-existing-global-init.js
JSTests/test262/test/annexB/language/eval-code/direct/global-if-stmt-else-decl-eval-global-existing-non-enumerable-global-init.js [new file with mode: 0644]
JSTests/test262/test/annexB/language/eval-code/direct/global-switch-case-eval-global-existing-global-init.js
JSTests/test262/test/annexB/language/eval-code/direct/global-switch-case-eval-global-existing-non-enumerable-global-init.js [new file with mode: 0644]
JSTests/test262/test/annexB/language/eval-code/direct/global-switch-dflt-eval-global-existing-global-init.js
JSTests/test262/test/annexB/language/eval-code/direct/global-switch-dflt-eval-global-existing-non-enumerable-global-init.js [new file with mode: 0644]
JSTests/test262/test/annexB/language/eval-code/indirect/global-block-decl-eval-global-existing-global-init.js
JSTests/test262/test/annexB/language/eval-code/indirect/global-block-decl-eval-global-existing-non-enumerable-global-init.js [new file with mode: 0644]
JSTests/test262/test/annexB/language/eval-code/indirect/global-if-decl-else-decl-a-eval-global-existing-global-init.js
JSTests/test262/test/annexB/language/eval-code/indirect/global-if-decl-else-decl-a-eval-global-existing-non-enumerable-global-init.js [new file with mode: 0644]
JSTests/test262/test/annexB/language/eval-code/indirect/global-if-decl-else-decl-b-eval-global-existing-global-init.js
JSTests/test262/test/annexB/language/eval-code/indirect/global-if-decl-else-decl-b-eval-global-existing-non-enumerable-global-init.js [new file with mode: 0644]
JSTests/test262/test/annexB/language/eval-code/indirect/global-if-decl-else-stmt-eval-global-existing-global-init.js
JSTests/test262/test/annexB/language/eval-code/indirect/global-if-decl-else-stmt-eval-global-existing-non-enumerable-global-init.js [new file with mode: 0644]
JSTests/test262/test/annexB/language/eval-code/indirect/global-if-decl-no-else-eval-global-existing-global-init.js
JSTests/test262/test/annexB/language/eval-code/indirect/global-if-decl-no-else-eval-global-existing-non-enumerable-global-init.js [new file with mode: 0644]
JSTests/test262/test/annexB/language/eval-code/indirect/global-if-stmt-else-decl-eval-global-existing-global-init.js
JSTests/test262/test/annexB/language/eval-code/indirect/global-if-stmt-else-decl-eval-global-existing-non-enumerable-global-init.js [new file with mode: 0644]
JSTests/test262/test/annexB/language/eval-code/indirect/global-switch-case-eval-global-existing-global-init.js
JSTests/test262/test/annexB/language/eval-code/indirect/global-switch-case-eval-global-existing-non-enumerable-global-init.js [new file with mode: 0644]
JSTests/test262/test/annexB/language/eval-code/indirect/global-switch-dflt-eval-global-existing-global-init.js
JSTests/test262/test/annexB/language/eval-code/indirect/global-switch-dflt-eval-global-existing-non-enumerable-global-init.js [new file with mode: 0644]
JSTests/test262/test/annexB/language/global-code/block-decl-global-existing-global-init.js [new file with mode: 0644]
JSTests/test262/test/annexB/language/global-code/block-decl-global-existing-non-enumerable-global-init.js [new file with mode: 0644]
JSTests/test262/test/annexB/language/global-code/if-decl-else-decl-a-global-existing-global-init.js [new file with mode: 0644]
JSTests/test262/test/annexB/language/global-code/if-decl-else-decl-a-global-existing-non-enumerable-global-init.js [new file with mode: 0644]
JSTests/test262/test/annexB/language/global-code/if-decl-else-decl-b-global-existing-global-init.js [new file with mode: 0644]
JSTests/test262/test/annexB/language/global-code/if-decl-else-decl-b-global-existing-non-enumerable-global-init.js [new file with mode: 0644]
JSTests/test262/test/annexB/language/global-code/if-decl-else-stmt-global-existing-global-init.js [new file with mode: 0644]
JSTests/test262/test/annexB/language/global-code/if-decl-else-stmt-global-existing-non-enumerable-global-init.js [new file with mode: 0644]
JSTests/test262/test/annexB/language/global-code/if-decl-no-else-global-existing-global-init.js [new file with mode: 0644]
JSTests/test262/test/annexB/language/global-code/if-decl-no-else-global-existing-non-enumerable-global-init.js [new file with mode: 0644]
JSTests/test262/test/annexB/language/global-code/if-stmt-else-decl-global-existing-global-init.js [new file with mode: 0644]
JSTests/test262/test/annexB/language/global-code/if-stmt-else-decl-global-existing-non-enumerable-global-init.js [new file with mode: 0644]
JSTests/test262/test/annexB/language/global-code/switch-case-global-existing-global-init.js [new file with mode: 0644]
JSTests/test262/test/annexB/language/global-code/switch-case-global-existing-non-enumerable-global-init.js [new file with mode: 0644]
JSTests/test262/test/annexB/language/global-code/switch-dflt-global-existing-global-init.js [new file with mode: 0644]
JSTests/test262/test/annexB/language/global-code/switch-dflt-global-existing-non-enumerable-global-init.js [new file with mode: 0644]
JSTests/test262/test/built-ins/Array/prototype/flat/array-like-objects.js [moved from JSTests/test262/test/built-ins/Array/prototype/flatten/array-like-objects.js with 78% similarity]
JSTests/test262/test/built-ins/Array/prototype/flat/bound-function-call.js [moved from JSTests/test262/test/built-ins/Array/prototype/flatten/bound-function-call.js with 61% similarity]
JSTests/test262/test/built-ins/Array/prototype/flat/empty-array-elements.js [moved from JSTests/test262/test/built-ins/Array/prototype/flatten/empty-array-elements.js with 68% similarity]
JSTests/test262/test/built-ins/Array/prototype/flat/empty-object-elements.js [moved from JSTests/test262/test/built-ins/Array/prototype/flatten/empty-object-elements.js with 61% similarity]
JSTests/test262/test/built-ins/Array/prototype/flat/length.js [new file with mode: 0644]
JSTests/test262/test/built-ins/Array/prototype/flat/name.js [new file with mode: 0644]
JSTests/test262/test/built-ins/Array/prototype/flat/non-numeric-depth-should-not-throw.js [moved from JSTests/test262/test/built-ins/Array/prototype/flatten/non-numeric-depth-should-not-throw.js with 80% similarity]
JSTests/test262/test/built-ins/Array/prototype/flat/non-object-ctor-throws.js [moved from JSTests/test262/test/built-ins/Array/prototype/flatten/non-object-ctor-throws.js with 84% similarity]
JSTests/test262/test/built-ins/Array/prototype/flat/null-undefined-elements.js [new file with mode: 0644]
JSTests/test262/test/built-ins/Array/prototype/flat/null-undefined-input-throws.js [moved from JSTests/test262/test/built-ins/Array/prototype/flatten/null-undefined-input-throws.js with 73% similarity]
JSTests/test262/test/built-ins/Array/prototype/flat/positive-infinity.js [moved from JSTests/test262/test/built-ins/Array/prototype/flatten/positive-infinity.js with 64% similarity]
JSTests/test262/test/built-ins/Array/prototype/flat/prop-desc.js [moved from JSTests/test262/test/built-ins/Array/prototype/flatten/prop-desc.js with 52% similarity]
JSTests/test262/test/built-ins/Array/prototype/flat/symbol-object-create-null-depth-throws.js [moved from JSTests/test262/test/built-ins/Array/prototype/flatten/symbol-object-create-null-depth-throws.js with 73% similarity]
JSTests/test262/test/built-ins/Array/prototype/flatten/length.js [deleted file]
JSTests/test262/test/built-ins/Array/prototype/flatten/name.js [deleted file]
JSTests/test262/test/built-ins/Array/prototype/flatten/null-undefined-elements.js [deleted file]
JSTests/test262/test/built-ins/AsyncGeneratorPrototype/next/name.js
JSTests/test262/test/built-ins/AsyncGeneratorPrototype/return/name.js
JSTests/test262/test/built-ins/AsyncGeneratorPrototype/throw/name.js
JSTests/test262/test/built-ins/Math/acosh/nan-returns.js
JSTests/test262/test/built-ins/Math/asinh/asinh-specialVals.js
JSTests/test262/test/built-ins/Math/atanh/atanh-specialVals.js
JSTests/test262/test/built-ins/Math/cbrt/cbrt-specialValues.js
JSTests/test262/test/built-ins/Math/cbrt/prop-desc.js
JSTests/test262/test/built-ins/Math/cosh/cosh-specialVals.js
JSTests/test262/test/built-ins/Math/expm1/expm1-specialVals.js
JSTests/test262/test/built-ins/Math/log10/Log10-specialVals.js
JSTests/test262/test/built-ins/Math/log2/log2-basicTests.js
JSTests/test262/test/built-ins/Math/sign/sign-specialVals.js
JSTests/test262/test/built-ins/Math/sinh/sinh-specialVals.js
JSTests/test262/test/built-ins/Math/tanh/tanh-specialVals.js
JSTests/test262/test/built-ins/Math/trunc/trunc-sampleTests.js
JSTests/test262/test/built-ins/Math/trunc/trunc-specialVals.js
JSTests/test262/test/built-ins/Object/internals/DefineOwnProperty/consistent-value-regexp-dollar1.js [moved from JSTests/test262/test/built-ins/Object/internals/DefineOwnProperty/consistent-value-regexp-$1.js with 100% similarity]
JSTests/test262/test/built-ins/Object/internals/DefineOwnProperty/consistent-writable-regexp-dollar1.js [moved from JSTests/test262/test/built-ins/Object/internals/DefineOwnProperty/consistent-writable-regexp-$1.js with 100% similarity]
JSTests/test262/test/intl402/Intl/getCanonicalLocales/descriptor.js
JSTests/test262/test/intl402/Intl/getCanonicalLocales/duplicates.js
JSTests/test262/test/intl402/Locale/constructor-getter-order.js [new file with mode: 0644]
JSTests/test262/test/intl402/Locale/constructor-locale-object.js [new file with mode: 0644]
JSTests/test262/test/intl402/Locale/constructor-non-iana-canon.js [new file with mode: 0644]
JSTests/test262/test/intl402/Locale/constructor-options-casefirst-invalid.js [new file with mode: 0644]
JSTests/test262/test/intl402/Locale/constructor-options-casefirst-valid.js [new file with mode: 0644]
JSTests/test262/test/intl402/Locale/constructor-options-collation-invalid.js [new file with mode: 0644]
JSTests/test262/test/intl402/Locale/constructor-options-collation-valid.js [new file with mode: 0644]
JSTests/test262/test/intl402/Locale/constructor-options-hourcycle-invalid.js [new file with mode: 0644]
JSTests/test262/test/intl402/Locale/constructor-options-hourcycle-valid.js [new file with mode: 0644]
JSTests/test262/test/intl402/Locale/constructor-options-language-grandfathered.js [new file with mode: 0644]
JSTests/test262/test/intl402/Locale/constructor-options-language-valid.js
JSTests/test262/test/intl402/Locale/constructor-options-numberingsystem-invalid.js [new file with mode: 0644]
JSTests/test262/test/intl402/Locale/constructor-options-numberingsystem-valid.js [new file with mode: 0644]
JSTests/test262/test/intl402/Locale/constructor-options-numeric-valid.js [new file with mode: 0644]
JSTests/test262/test/intl402/Locale/constructor-options-region-valid.js
JSTests/test262/test/intl402/Locale/constructor-options-script-valid.js
JSTests/test262/test/intl402/Locale/constructor-parse-twice.js [new file with mode: 0644]
JSTests/test262/test/intl402/Locale/constructor-tag-tostring.js [new file with mode: 0644]
JSTests/test262/test/intl402/Locale/constructor-unicode-ext-invalid.js [new file with mode: 0644]
JSTests/test262/test/intl402/Locale/constructor-unicode-ext-valid.js [new file with mode: 0644]
JSTests/test262/test/intl402/Locale/extensions-grandfathered.js [new file with mode: 0644]
JSTests/test262/test/intl402/Locale/extensions-private.js [new file with mode: 0644]
JSTests/test262/test/intl402/Locale/getters-grandfathered.js [new file with mode: 0644]
JSTests/test262/test/intl402/Locale/getters-missing.js [new file with mode: 0644]
JSTests/test262/test/intl402/Locale/getters-privateuse.js [new file with mode: 0644]
JSTests/test262/test/intl402/Locale/getters.js [new file with mode: 0644]
JSTests/test262/test/intl402/Locale/invalid-tag-throws-symbol.js
JSTests/test262/test/intl402/Locale/likely-subtags-grandfathered.js [new file with mode: 0644]
JSTests/test262/test/intl402/Locale/prop-desc.js
JSTests/test262/test/intl402/Locale/prototype/baseName/prop-desc.js [new file with mode: 0644]
JSTests/test262/test/intl402/Locale/prototype/calendar/prop-desc.js [new file with mode: 0644]
JSTests/test262/test/intl402/Locale/prototype/caseFirst/prop-desc.js [new file with mode: 0644]
JSTests/test262/test/intl402/Locale/prototype/collation/prop-desc.js [new file with mode: 0644]
JSTests/test262/test/intl402/Locale/prototype/constructor/prop-desc.js [moved from JSTests/test262/test/intl402/Locale/prototype/constructor.js with 100% similarity]
JSTests/test262/test/intl402/Locale/prototype/hourCycle/prop-desc.js [new file with mode: 0644]
JSTests/test262/test/intl402/Locale/prototype/language/prop-desc.js [new file with mode: 0644]
JSTests/test262/test/intl402/Locale/prototype/maximize/length.js
JSTests/test262/test/intl402/Locale/prototype/maximize/prop-desc.js
JSTests/test262/test/intl402/Locale/prototype/minimize/length.js [new file with mode: 0644]
JSTests/test262/test/intl402/Locale/prototype/minimize/name.js [new file with mode: 0644]
JSTests/test262/test/intl402/Locale/prototype/minimize/prop-desc.js [new file with mode: 0644]
JSTests/test262/test/intl402/Locale/prototype/numberingSystem/prop-desc.js [new file with mode: 0644]
JSTests/test262/test/intl402/Locale/prototype/numeric/prop-desc.js [new file with mode: 0644]
JSTests/test262/test/intl402/Locale/prototype/region/prop-desc.js [new file with mode: 0644]
JSTests/test262/test/intl402/Locale/prototype/script/prop-desc.js [new file with mode: 0644]
JSTests/test262/test/intl402/Locale/prototype/toString/prop-desc.js [new file with mode: 0644]
JSTests/test262/test/intl402/Locale/prototype/toStringTag/toStringTag.js [moved from JSTests/test262/test/intl402/Locale/prototype/toStringTag.js with 100% similarity]
JSTests/test262/test/intl402/Number/prototype/toLocaleString/length.js
JSTests/test262/test/intl402/NumberFormat/length.js
JSTests/test262/test/intl402/NumberFormat/name.js
JSTests/test262/test/intl402/NumberFormat/prop-desc.js
JSTests/test262/test/intl402/PluralRules/length.js
JSTests/test262/test/intl402/PluralRules/name.js
JSTests/test262/test/intl402/PluralRules/prop-desc.js [new file with mode: 0644]
JSTests/test262/test/language/expressions/addition/bigint-and-number.js
JSTests/test262/test/language/expressions/addition/bigint-arithmetic.js
JSTests/test262/test/language/expressions/addition/bigint-errors.js
JSTests/test262/test/language/expressions/addition/bigint-toprimitive.js
JSTests/test262/test/language/expressions/addition/bigint-wrapped-values.js
JSTests/test262/test/language/expressions/bitwise-and/bigint-and-number.js
JSTests/test262/test/language/expressions/bitwise-and/bigint-errors.js
JSTests/test262/test/language/expressions/bitwise-and/bigint-non-primitive.js
JSTests/test262/test/language/expressions/bitwise-and/bigint-toprimitive.js
JSTests/test262/test/language/expressions/bitwise-and/bigint-wrapped-values.js
JSTests/test262/test/language/expressions/bitwise-not/bigint-non-primitive.js
JSTests/test262/test/language/expressions/bitwise-or/bigint-and-number.js
JSTests/test262/test/language/expressions/bitwise-or/bigint-errors.js
JSTests/test262/test/language/expressions/bitwise-or/bigint-non-primitive.js
JSTests/test262/test/language/expressions/bitwise-or/bigint-toprimitive.js
JSTests/test262/test/language/expressions/bitwise-or/bigint-wrapped-values.js
JSTests/test262/test/language/expressions/bitwise-xor/bigint-and-number.js
JSTests/test262/test/language/expressions/bitwise-xor/bigint-errors.js
JSTests/test262/test/language/expressions/bitwise-xor/bigint-non-primitive.js
JSTests/test262/test/language/expressions/bitwise-xor/bigint-toprimitive.js
JSTests/test262/test/language/expressions/bitwise-xor/bigint-wrapped-values.js
JSTests/test262/test/language/expressions/division/bigint-and-number.js
JSTests/test262/test/language/expressions/division/bigint-arithmetic.js
JSTests/test262/test/language/expressions/division/bigint-complex-infinity.js
JSTests/test262/test/language/expressions/division/bigint-errors.js
JSTests/test262/test/language/expressions/division/bigint-toprimitive.js
JSTests/test262/test/language/expressions/division/bigint-wrapped-values.js
JSTests/test262/test/language/expressions/does-not-equals/bigint-and-bigint.js
JSTests/test262/test/language/expressions/does-not-equals/bigint-and-boolean.js
JSTests/test262/test/language/expressions/does-not-equals/bigint-and-incomparable-primitive.js
JSTests/test262/test/language/expressions/does-not-equals/bigint-and-non-finite.js
JSTests/test262/test/language/expressions/does-not-equals/bigint-and-number-extremes.js
JSTests/test262/test/language/expressions/does-not-equals/bigint-and-number.js
JSTests/test262/test/language/expressions/does-not-equals/bigint-and-object.js
JSTests/test262/test/language/expressions/does-not-equals/bigint-and-string.js
JSTests/test262/test/language/expressions/equals/bigint-and-bigint.js
JSTests/test262/test/language/expressions/equals/bigint-and-boolean.js
JSTests/test262/test/language/expressions/equals/bigint-and-incomparable-primitive.js
JSTests/test262/test/language/expressions/equals/bigint-and-non-finite.js
JSTests/test262/test/language/expressions/equals/bigint-and-number-extremes.js
JSTests/test262/test/language/expressions/equals/bigint-and-number.js
JSTests/test262/test/language/expressions/equals/bigint-and-object.js
JSTests/test262/test/language/expressions/equals/bigint-and-string.js
JSTests/test262/test/language/expressions/exponentiation/bigint-and-number.js
JSTests/test262/test/language/expressions/exponentiation/bigint-arithmetic.js
JSTests/test262/test/language/expressions/exponentiation/bigint-errors.js
JSTests/test262/test/language/expressions/exponentiation/bigint-negative-exponent-throws.js [moved from JSTests/test262/test/language/expressions/exponentiation/bigint-exp-operator-negative-throws.js with 74% similarity]
JSTests/test262/test/language/expressions/exponentiation/bigint-toprimitive.js
JSTests/test262/test/language/expressions/exponentiation/bigint-wrapped-values.js
JSTests/test262/test/language/expressions/exponentiation/bigint-zero-base-zero-exponent.js
JSTests/test262/test/language/expressions/greater-than-or-equal/bigint-and-bigint.js
JSTests/test262/test/language/expressions/greater-than-or-equal/bigint-and-incomparable-string.js
JSTests/test262/test/language/expressions/greater-than-or-equal/bigint-and-non-finite.js
JSTests/test262/test/language/expressions/greater-than-or-equal/bigint-and-number-extremes.js
JSTests/test262/test/language/expressions/greater-than-or-equal/bigint-and-number.js
JSTests/test262/test/language/expressions/greater-than-or-equal/bigint-and-string.js
JSTests/test262/test/language/expressions/greater-than/11.8.2-1.js
JSTests/test262/test/language/expressions/greater-than/11.8.2-2.js
JSTests/test262/test/language/expressions/greater-than/11.8.2-3.js
JSTests/test262/test/language/expressions/greater-than/11.8.2-4.js
JSTests/test262/test/language/expressions/greater-than/bigint-and-bigint.js
JSTests/test262/test/language/expressions/greater-than/bigint-and-boolean.js
JSTests/test262/test/language/expressions/greater-than/bigint-and-incomparable-string.js
JSTests/test262/test/language/expressions/greater-than/bigint-and-non-finite.js
JSTests/test262/test/language/expressions/greater-than/bigint-and-number-extremes.js
JSTests/test262/test/language/expressions/greater-than/bigint-and-number.js
JSTests/test262/test/language/expressions/greater-than/bigint-and-string.js
JSTests/test262/test/language/expressions/greater-than/bigint-and-symbol.js [new file with mode: 0644]
JSTests/test262/test/language/expressions/left-shift/bigint-and-number.js
JSTests/test262/test/language/expressions/left-shift/bigint-errors.js
JSTests/test262/test/language/expressions/left-shift/bigint-non-primitive.js
JSTests/test262/test/language/expressions/left-shift/bigint-toprimitive.js
JSTests/test262/test/language/expressions/left-shift/bigint-wrapped-values.js
JSTests/test262/test/language/expressions/less-than-or-equal/11.8.3-1.js
JSTests/test262/test/language/expressions/less-than-or-equal/11.8.3-2.js
JSTests/test262/test/language/expressions/less-than-or-equal/11.8.3-3.js
JSTests/test262/test/language/expressions/less-than-or-equal/11.8.3-4.js
JSTests/test262/test/language/expressions/less-than-or-equal/11.8.3-5.js [deleted file]
JSTests/test262/test/language/expressions/less-than-or-equal/bigint-and-bigint.js
JSTests/test262/test/language/expressions/less-than-or-equal/bigint-and-incomparable-string.js
JSTests/test262/test/language/expressions/less-than-or-equal/bigint-and-non-finite.js
JSTests/test262/test/language/expressions/less-than-or-equal/bigint-and-number-extremes.js
JSTests/test262/test/language/expressions/less-than-or-equal/bigint-and-number.js
JSTests/test262/test/language/expressions/less-than-or-equal/bigint-and-string.js
JSTests/test262/test/language/expressions/less-than/bigint-and-bigint.js
JSTests/test262/test/language/expressions/less-than/bigint-and-boolean.js
JSTests/test262/test/language/expressions/less-than/bigint-and-incomparable-string.js
JSTests/test262/test/language/expressions/less-than/bigint-and-non-finite.js
JSTests/test262/test/language/expressions/less-than/bigint-and-number-extremes.js
JSTests/test262/test/language/expressions/less-than/bigint-and-number.js
JSTests/test262/test/language/expressions/less-than/bigint-and-string.js
JSTests/test262/test/language/expressions/less-than/bigint-and-symbol.js [new file with mode: 0644]
JSTests/test262/test/language/expressions/modulus/bigint-and-number.js
JSTests/test262/test/language/expressions/modulus/bigint-arithmetic.js
JSTests/test262/test/language/expressions/modulus/bigint-errors.js
JSTests/test262/test/language/expressions/modulus/bigint-modulo-zero.js
JSTests/test262/test/language/expressions/modulus/bigint-toprimitive.js
JSTests/test262/test/language/expressions/modulus/bigint-wrapped-values.js
JSTests/test262/test/language/expressions/multiplication/bigint-and-number.js
JSTests/test262/test/language/expressions/multiplication/bigint-arithmetic.js
JSTests/test262/test/language/expressions/multiplication/bigint-errors.js
JSTests/test262/test/language/expressions/multiplication/bigint-toprimitive.js
JSTests/test262/test/language/expressions/multiplication/bigint-wrapped-values.js
JSTests/test262/test/language/expressions/right-shift/bigint-and-number.js
JSTests/test262/test/language/expressions/right-shift/bigint-errors.js
JSTests/test262/test/language/expressions/right-shift/bigint-non-primitive.js
JSTests/test262/test/language/expressions/right-shift/bigint-toprimitive.js
JSTests/test262/test/language/expressions/right-shift/bigint-wrapped-values.js
JSTests/test262/test/language/expressions/strict-does-not-equals/bigint-and-bigint.js
JSTests/test262/test/language/expressions/strict-does-not-equals/bigint-and-boolean.js
JSTests/test262/test/language/expressions/strict-does-not-equals/bigint-and-incomparable-primitive.js
JSTests/test262/test/language/expressions/strict-does-not-equals/bigint-and-non-finite.js
JSTests/test262/test/language/expressions/strict-does-not-equals/bigint-and-number-extremes.js
JSTests/test262/test/language/expressions/strict-does-not-equals/bigint-and-number.js
JSTests/test262/test/language/expressions/strict-does-not-equals/bigint-and-object.js
JSTests/test262/test/language/expressions/strict-does-not-equals/bigint-and-string.js
JSTests/test262/test/language/expressions/strict-equals/bigint-and-bigint.js
JSTests/test262/test/language/expressions/strict-equals/bigint-and-boolean.js
JSTests/test262/test/language/expressions/strict-equals/bigint-and-incomparable-primitive.js
JSTests/test262/test/language/expressions/strict-equals/bigint-and-non-finite.js
JSTests/test262/test/language/expressions/strict-equals/bigint-and-number-extremes.js
JSTests/test262/test/language/expressions/strict-equals/bigint-and-number.js
JSTests/test262/test/language/expressions/strict-equals/bigint-and-object.js
JSTests/test262/test/language/expressions/strict-equals/bigint-and-string.js
JSTests/test262/test/language/expressions/subtraction/bigint-and-number.js
JSTests/test262/test/language/expressions/subtraction/bigint-arithmetic.js
JSTests/test262/test/language/expressions/subtraction/bigint-errors.js
JSTests/test262/test/language/expressions/subtraction/bigint-toprimitive.js
JSTests/test262/test/language/expressions/subtraction/bigint-wrapped-values.js
JSTests/test262/test/language/expressions/unary-minus/bigint-non-primitive.js
JSTests/test262/test/language/expressions/unary-plus/bigint-throws.js
JSTests/test262/test/language/expressions/unsigned-right-shift/bigint-and-number.js
JSTests/test262/test/language/expressions/unsigned-right-shift/bigint-errors.js
JSTests/test262/test/language/expressions/unsigned-right-shift/bigint-non-primitive.js
JSTests/test262/test/language/expressions/unsigned-right-shift/bigint-toprimitive.js
JSTests/test262/test/language/expressions/unsigned-right-shift/bigint-wrapped-values.js
JSTests/test262/test/language/literals/numeric/numeric-followed-by-ident.js [new file with mode: 0644]
JSTests/test262/test/language/literals/string/line-continuation-double.js [new file with mode: 0644]
JSTests/test262/test/language/literals/string/line-continuation-single.js [new file with mode: 0644]
JSTests/test262/test262-Revision.txt

index 8406835..ca954df 100644 (file)
@@ -1,3 +1,511 @@
+2018-05-23  Yusuke Suzuki  <utatane.tea@gmail.com>
+
+        Upgrade test262 to May 24 version
+        https://bugs.webkit.org/show_bug.cgi?id=185937
+
+        Reviewed by Darin Adler.
+
+        * test262/expectations.yaml:
+        * test262/harness/doneprintHandle.js:
+        (DONE):
+        * test262/latest-changes-summary.txt:
+        * test262/test/annexB/language/eval-code/direct/global-block-decl-eval-global-existing-global-init.js:
+        * test262/test/annexB/language/eval-code/direct/global-block-decl-eval-global-existing-non-enumerable-global-init.js: Added.
+        * test262/test/annexB/language/eval-code/direct/global-if-decl-else-decl-a-eval-global-existing-global-init.js:
+        * test262/test/annexB/language/eval-code/direct/global-if-decl-else-decl-a-eval-global-existing-non-enumerable-global-init.js: Copied from JSTests/test262/test/annexB/language/eval-code/direct/global-if-decl-else-decl-a-eval-global-existing-global-init.js.
+        * test262/test/annexB/language/eval-code/direct/global-if-decl-else-decl-b-eval-global-existing-global-init.js:
+        * test262/test/annexB/language/eval-code/direct/global-if-decl-else-decl-b-eval-global-existing-non-enumerable-global-init.js: Copied from JSTests/test262/test/annexB/language/eval-code/direct/global-if-decl-else-decl-b-eval-global-existing-global-init.js.
+        * test262/test/annexB/language/eval-code/direct/global-if-decl-else-stmt-eval-global-existing-global-init.js:
+        * test262/test/annexB/language/eval-code/direct/global-if-decl-else-stmt-eval-global-existing-non-enumerable-global-init.js: Copied from JSTests/test262/test/annexB/language/eval-code/direct/global-if-decl-else-stmt-eval-global-existing-global-init.js.
+        * test262/test/annexB/language/eval-code/direct/global-if-decl-no-else-eval-global-existing-global-init.js:
+        * test262/test/annexB/language/eval-code/direct/global-if-decl-no-else-eval-global-existing-non-enumerable-global-init.js: Copied from JSTests/test262/test/annexB/language/eval-code/direct/global-if-decl-no-else-eval-global-existing-global-init.js.
+        * test262/test/annexB/language/eval-code/direct/global-if-stmt-else-decl-eval-global-existing-global-init.js:
+        * test262/test/annexB/language/eval-code/direct/global-if-stmt-else-decl-eval-global-existing-non-enumerable-global-init.js: Copied from JSTests/test262/test/annexB/language/eval-code/direct/global-if-stmt-else-decl-eval-global-existing-global-init.js.
+        * test262/test/annexB/language/eval-code/direct/global-switch-case-eval-global-existing-global-init.js:
+        * test262/test/annexB/language/eval-code/direct/global-switch-case-eval-global-existing-non-enumerable-global-init.js: Added.
+        * test262/test/annexB/language/eval-code/direct/global-switch-dflt-eval-global-existing-global-init.js:
+        * test262/test/annexB/language/eval-code/direct/global-switch-dflt-eval-global-existing-non-enumerable-global-init.js: Added.
+        * test262/test/annexB/language/eval-code/indirect/global-block-decl-eval-global-existing-global-init.js:
+        * test262/test/annexB/language/eval-code/indirect/global-block-decl-eval-global-existing-non-enumerable-global-init.js: Added.
+        * test262/test/annexB/language/eval-code/indirect/global-if-decl-else-decl-a-eval-global-existing-global-init.js:
+        * test262/test/annexB/language/eval-code/indirect/global-if-decl-else-decl-a-eval-global-existing-non-enumerable-global-init.js: Copied from JSTests/test262/test/annexB/language/eval-code/indirect/global-if-decl-else-decl-a-eval-global-existing-global-init.js.
+        * test262/test/annexB/language/eval-code/indirect/global-if-decl-else-decl-b-eval-global-existing-global-init.js:
+        * test262/test/annexB/language/eval-code/indirect/global-if-decl-else-decl-b-eval-global-existing-non-enumerable-global-init.js: Copied from JSTests/test262/test/annexB/language/eval-code/indirect/global-if-decl-else-decl-b-eval-global-existing-global-init.js.
+        * test262/test/annexB/language/eval-code/indirect/global-if-decl-else-stmt-eval-global-existing-global-init.js:
+        * test262/test/annexB/language/eval-code/indirect/global-if-decl-else-stmt-eval-global-existing-non-enumerable-global-init.js: Copied from JSTests/test262/test/annexB/language/eval-code/indirect/global-if-decl-else-stmt-eval-global-existing-global-init.js.
+        * test262/test/annexB/language/eval-code/indirect/global-if-decl-no-else-eval-global-existing-global-init.js:
+        * test262/test/annexB/language/eval-code/indirect/global-if-decl-no-else-eval-global-existing-non-enumerable-global-init.js: Copied from JSTests/test262/test/annexB/language/eval-code/indirect/global-if-decl-no-else-eval-global-existing-global-init.js.
+        * test262/test/annexB/language/eval-code/indirect/global-if-stmt-else-decl-eval-global-existing-global-init.js:
+        * test262/test/annexB/language/eval-code/indirect/global-if-stmt-else-decl-eval-global-existing-non-enumerable-global-init.js: Copied from JSTests/test262/test/annexB/language/eval-code/indirect/global-if-stmt-else-decl-eval-global-existing-global-init.js.
+        * test262/test/annexB/language/eval-code/indirect/global-switch-case-eval-global-existing-global-init.js:
+        * test262/test/annexB/language/eval-code/indirect/global-switch-case-eval-global-existing-non-enumerable-global-init.js: Added.
+        * test262/test/annexB/language/eval-code/indirect/global-switch-dflt-eval-global-existing-global-init.js:
+        * test262/test/annexB/language/eval-code/indirect/global-switch-dflt-eval-global-existing-non-enumerable-global-init.js: Added.
+        * test262/test/annexB/language/global-code/block-decl-global-existing-global-init.js: Added.
+        (262.evalScript.f):
+        * test262/test/annexB/language/global-code/block-decl-global-existing-non-enumerable-global-init.js: Added.
+        (262.evalScript.f):
+        * test262/test/annexB/language/global-code/if-decl-else-decl-a-global-existing-global-init.js: Added.
+        (262.evalScript.true.f):
+        (else._f):
+        * test262/test/annexB/language/global-code/if-decl-else-decl-a-global-existing-non-enumerable-global-init.js: Added.
+        (262.evalScript.true.f):
+        (else._f):
+        * test262/test/annexB/language/global-code/if-decl-else-decl-b-global-existing-global-init.js: Added.
+        (262.evalScript.false._f):
+        (else.f):
+        * test262/test/annexB/language/global-code/if-decl-else-decl-b-global-existing-non-enumerable-global-init.js: Added.
+        (262.evalScript.false._f):
+        (else.f):
+        * test262/test/annexB/language/global-code/if-decl-else-stmt-global-existing-global-init.js: Added.
+        (262.evalScript.true.f):
+        * test262/test/annexB/language/global-code/if-decl-else-stmt-global-existing-non-enumerable-global-init.js: Added.
+        (262.evalScript.true.f):
+        * test262/test/annexB/language/global-code/if-decl-no-else-global-existing-global-init.js: Added.
+        (262.evalScript.true.f):
+        * test262/test/annexB/language/global-code/if-decl-no-else-global-existing-non-enumerable-global-init.js: Added.
+        (262.evalScript.true.f):
+        * test262/test/annexB/language/global-code/if-stmt-else-decl-global-existing-global-init.js: Added.
+        (else.f):
+        * test262/test/annexB/language/global-code/if-stmt-else-decl-global-existing-non-enumerable-global-init.js: Added.
+        (else.f):
+        * test262/test/annexB/language/global-code/switch-case-global-existing-global-init.js: Added.
+        (262.evalScript.switch.case.1):
+        (262.evalScript.switch):
+        * test262/test/annexB/language/global-code/switch-case-global-existing-non-enumerable-global-init.js: Added.
+        (262.evalScript.switch.case.1):
+        (262.evalScript.switch):
+        * test262/test/annexB/language/global-code/switch-dflt-global-existing-global-init.js: Added.
+        (262.evalScript.switch.default):
+        (262.evalScript.switch):
+        * test262/test/annexB/language/global-code/switch-dflt-global-existing-non-enumerable-global-init.js: Added.
+        (262.evalScript.switch.default):
+        (262.evalScript.switch):
+        * test262/test/built-ins/Array/prototype/flat/array-like-objects.js: Renamed from JSTests/test262/test/built-ins/Array/prototype/flatten/array-like-objects.js.
+        * test262/test/built-ins/Array/prototype/flat/bound-function-call.js: Renamed from JSTests/test262/test/built-ins/Array/prototype/flatten/bound-function-call.js.
+        * test262/test/built-ins/Array/prototype/flat/empty-array-elements.js: Renamed from JSTests/test262/test/built-ins/Array/prototype/flatten/empty-array-elements.js.
+        * test262/test/built-ins/Array/prototype/flat/empty-object-elements.js: Renamed from JSTests/test262/test/built-ins/Array/prototype/flatten/empty-object-elements.js.
+        * test262/test/built-ins/Array/prototype/flat/length.js: Added.
+        * test262/test/built-ins/Array/prototype/flat/name.js: Added.
+        * test262/test/built-ins/Array/prototype/flat/non-numeric-depth-should-not-throw.js: Renamed from JSTests/test262/test/built-ins/Array/prototype/flatten/non-numeric-depth-should-not-throw.js.
+        * test262/test/built-ins/Array/prototype/flat/non-object-ctor-throws.js: Renamed from JSTests/test262/test/built-ins/Array/prototype/flatten/non-object-ctor-throws.js.
+        * test262/test/built-ins/Array/prototype/flat/null-undefined-elements.js: Added.
+        * test262/test/built-ins/Array/prototype/flat/null-undefined-input-throws.js: Renamed from JSTests/test262/test/built-ins/Array/prototype/flatten/null-undefined-input-throws.js.
+        * test262/test/built-ins/Array/prototype/flat/positive-infinity.js: Renamed from JSTests/test262/test/built-ins/Array/prototype/flatten/positive-infinity.js.
+        * test262/test/built-ins/Array/prototype/flat/prop-desc.js: Renamed from JSTests/test262/test/built-ins/Array/prototype/flatten/prop-desc.js.
+        * test262/test/built-ins/Array/prototype/flat/symbol-object-create-null-depth-throws.js: Renamed from JSTests/test262/test/built-ins/Array/prototype/flatten/symbol-object-create-null-depth-throws.js.
+        * test262/test/built-ins/Array/prototype/flatten/length.js: Removed.
+        * test262/test/built-ins/Array/prototype/flatten/name.js: Removed.
+        * test262/test/built-ins/Array/prototype/flatten/null-undefined-elements.js: Removed.
+        * test262/test/built-ins/AsyncGeneratorPrototype/next/name.js:
+        * test262/test/built-ins/AsyncGeneratorPrototype/return/name.js:
+        * test262/test/built-ins/AsyncGeneratorPrototype/throw/name.js:
+        * test262/test/built-ins/Math/acosh/nan-returns.js:
+        * test262/test/built-ins/Math/asinh/asinh-specialVals.js:
+        * test262/test/built-ins/Math/atanh/atanh-specialVals.js:
+        * test262/test/built-ins/Math/cbrt/cbrt-specialValues.js:
+        * test262/test/built-ins/Math/cbrt/prop-desc.js:
+        * test262/test/built-ins/Math/cosh/cosh-specialVals.js:
+        * test262/test/built-ins/Math/expm1/expm1-specialVals.js:
+        * test262/test/built-ins/Math/log10/Log10-specialVals.js:
+        * test262/test/built-ins/Math/log2/log2-basicTests.js:
+        * test262/test/built-ins/Math/sign/sign-specialVals.js:
+        * test262/test/built-ins/Math/sinh/sinh-specialVals.js:
+        * test262/test/built-ins/Math/tanh/tanh-specialVals.js:
+        * test262/test/built-ins/Math/trunc/trunc-sampleTests.js:
+        * test262/test/built-ins/Math/trunc/trunc-specialVals.js:
+        * test262/test/built-ins/Object/internals/DefineOwnProperty/consistent-value-regexp-dollar1.js: Added.
+        * test262/test/built-ins/Object/internals/DefineOwnProperty/consistent-writable-regexp-dollar1.js: Added.
+        * test262/test/intl402/Intl/getCanonicalLocales/descriptor.js:
+        * test262/test/intl402/Intl/getCanonicalLocales/duplicates.js:
+        * test262/test/intl402/Locale/constructor-getter-order.js: Added.
+        (new.Intl.Locale.toString):
+        (get language):
+        (get script):
+        (get region):
+        (get calendar):
+        (get collation):
+        (get hourCycle):
+        (get caseFirst):
+        (get numeric):
+        (get numberingSystem):
+        * test262/test/intl402/Locale/constructor-locale-object.js: Added.
+        * test262/test/intl402/Locale/constructor-non-iana-canon.js: Added.
+        * test262/test/intl402/Locale/constructor-options-casefirst-invalid.js: Added.
+        (valueOf):
+        (const.invalidCaseFirstOption.of.invalidCaseFirstOptions.new.Intl.Locale):
+        * test262/test/intl402/Locale/constructor-options-casefirst-valid.js: Added.
+        (toString):
+        * test262/test/intl402/Locale/constructor-options-collation-invalid.js: Added.
+        (const.invalidCollationOption.of.invalidCollationOptions.new.Intl.Locale):
+        * test262/test/intl402/Locale/constructor-options-collation-valid.js: Added.
+        * test262/test/intl402/Locale/constructor-options-hourcycle-invalid.js: Added.
+        (const.invalidHourCycleOption.of.invalidHourCycleOptions.new.Intl.Locale):
+        * test262/test/intl402/Locale/constructor-options-hourcycle-valid.js: Added.
+        (toString):
+        * test262/test/intl402/Locale/constructor-options-language-grandfathered.js: Added.
+        * test262/test/intl402/Locale/constructor-options-language-valid.js:
+        (toString):
+        * test262/test/intl402/Locale/constructor-options-numberingsystem-invalid.js: Added.
+        (const.invalidNumberingSystemOption.of.invalidNumberingSystemOptions.new.Intl.Locale):
+        * test262/test/intl402/Locale/constructor-options-numberingsystem-valid.js: Added.
+        * test262/test/intl402/Locale/constructor-options-numeric-valid.js: Added.
+        (valueOf):
+        * test262/test/intl402/Locale/constructor-options-region-valid.js:
+        * test262/test/intl402/Locale/constructor-options-script-valid.js:
+        (toString):
+        * test262/test/intl402/Locale/constructor-parse-twice.js: Added.
+        * test262/test/intl402/Locale/constructor-tag-tostring.js: Added.
+        (CustomError):
+        (WrongCustomError):
+        (const.errors.get Symbol):
+        (throw.new.CustomError):
+        (throw.new.CustomError.get toString):
+        (throw.new.CustomError.get valueOf):
+        (throw.new.WrongCustomError.get valueOf):
+        (throw.new.WrongCustomError):
+        * test262/test/intl402/Locale/constructor-unicode-ext-invalid.js: Added.
+        * test262/test/intl402/Locale/constructor-unicode-ext-valid.js: Added.
+        (canonical.of.Object.entries):
+        * test262/test/intl402/Locale/extensions-grandfathered.js: Added.
+        (of.testData.value.of.Object.entries):
+        * test262/test/intl402/Locale/extensions-private.js: Added.
+        * test262/test/intl402/Locale/getters-grandfathered.js: Added.
+        * test262/test/intl402/Locale/getters-missing.js: Added.
+        * test262/test/intl402/Locale/getters-privateuse.js: Added.
+        * test262/test/intl402/Locale/getters.js: Added.
+        * test262/test/intl402/Locale/invalid-tag-throws-symbol.js:
+        * test262/test/intl402/Locale/likely-subtags-grandfathered.js: Added.
+        * test262/test/intl402/Locale/prop-desc.js:
+        * test262/test/intl402/Locale/prototype/baseName/prop-desc.js: Added.
+        * test262/test/intl402/Locale/prototype/calendar/prop-desc.js: Added.
+        * test262/test/intl402/Locale/prototype/caseFirst/prop-desc.js: Added.
+        * test262/test/intl402/Locale/prototype/collation/prop-desc.js: Added.
+        * test262/test/intl402/Locale/prototype/constructor/prop-desc.js: Copied from JSTests/test262/test/intl402/Locale/prototype/constructor.js.
+        * test262/test/intl402/Locale/prototype/hourCycle/prop-desc.js: Added.
+        * test262/test/intl402/Locale/prototype/language/prop-desc.js: Added.
+        * test262/test/intl402/Locale/prototype/maximize/length.js:
+        * test262/test/intl402/Locale/prototype/maximize/prop-desc.js:
+        * test262/test/intl402/Locale/prototype/minimize/length.js: Copied from JSTests/test262/test/intl402/Locale/prototype/maximize/length.js.
+        * test262/test/intl402/Locale/prototype/minimize/name.js: Added.
+        * test262/test/intl402/Locale/prototype/minimize/prop-desc.js: Copied from JSTests/test262/test/intl402/Locale/prototype/constructor.js.
+        * test262/test/intl402/Locale/prototype/numberingSystem/prop-desc.js: Added.
+        * test262/test/intl402/Locale/prototype/numeric/prop-desc.js: Added.
+        * test262/test/intl402/Locale/prototype/region/prop-desc.js: Added.
+        * test262/test/intl402/Locale/prototype/script/prop-desc.js: Added.
+        * test262/test/intl402/Locale/prototype/toString/prop-desc.js: Renamed from JSTests/test262/test/intl402/Locale/prototype/constructor.js.
+        * test262/test/intl402/Locale/prototype/toStringTag/toStringTag.js: Renamed from JSTests/test262/test/intl402/Locale/prototype/toStringTag.js.
+        * test262/test/intl402/Number/prototype/toLocaleString/length.js:
+        * test262/test/intl402/NumberFormat/length.js:
+        * test262/test/intl402/NumberFormat/name.js:
+        * test262/test/intl402/NumberFormat/prop-desc.js:
+        * test262/test/intl402/PluralRules/length.js:
+        * test262/test/intl402/PluralRules/name.js:
+        * test262/test/intl402/PluralRules/prop-desc.js: Copied from JSTests/test262/test/intl402/NumberFormat/prop-desc.js.
+        * test262/test/language/expressions/addition/bigint-and-number.js:
+        * test262/test/language/expressions/addition/bigint-arithmetic.js:
+        (testAdd): Deleted.
+        * test262/test/language/expressions/addition/bigint-errors.js:
+        (Symbol.toPrimitive):
+        (0n.Symbol.toPrimitive):
+        (valueOf):
+        (0n.valueOf):
+        (toString):
+        (0n.toString):
+        * test262/test/language/expressions/addition/bigint-toprimitive.js:
+        * test262/test/language/expressions/addition/bigint-wrapped-values.js:
+        * test262/test/language/expressions/bitwise-and/bigint-and-number.js:
+        * test262/test/language/expressions/bitwise-and/bigint-errors.js:
+        (Symbol.toPrimitive):
+        (0n.Symbol.toPrimitive):
+        (valueOf):
+        (0n.valueOf):
+        (toString):
+        (0n.toString):
+        * test262/test/language/expressions/bitwise-and/bigint-non-primitive.js:
+        (assert.sameValue.Symbol.toPrimitive):
+        (assert.sameValue.0b011n.Symbol.toPrimitive):
+        (assert.sameValue.valueOf):
+        (assert.sameValue.0b011n.valueOf):
+        (assert.sameValue.toString):
+        (assert.sameValue.0b011n.toString):
+        * test262/test/language/expressions/bitwise-and/bigint-toprimitive.js:
+        * test262/test/language/expressions/bitwise-and/bigint-wrapped-values.js:
+        * test262/test/language/expressions/bitwise-not/bigint-non-primitive.js:
+        (assert.sameValue.Symbol.toPrimitive):
+        (assert.sameValue.valueOf):
+        (assert.sameValue.toString):
+        * test262/test/language/expressions/bitwise-or/bigint-and-number.js:
+        * test262/test/language/expressions/bitwise-or/bigint-errors.js:
+        (Symbol.toPrimitive):
+        (0n.Symbol.toPrimitive):
+        (valueOf):
+        (0n.valueOf):
+        (toString):
+        (0n.toString):
+        * test262/test/language/expressions/bitwise-or/bigint-non-primitive.js:
+        (assert.sameValue.Symbol.toPrimitive):
+        (assert.sameValue.0b011n.Symbol.toPrimitive):
+        (assert.sameValue.valueOf):
+        (assert.sameValue.0b011n.valueOf):
+        (assert.sameValue.toString):
+        (assert.sameValue.0b011n.toString):
+        * test262/test/language/expressions/bitwise-or/bigint-toprimitive.js:
+        * test262/test/language/expressions/bitwise-or/bigint-wrapped-values.js:
+        * test262/test/language/expressions/bitwise-xor/bigint-and-number.js:
+        * test262/test/language/expressions/bitwise-xor/bigint-errors.js:
+        (Symbol.toPrimitive):
+        (0n.Symbol.toPrimitive):
+        (valueOf):
+        (0n.valueOf):
+        (toString):
+        (0n.toString):
+        * test262/test/language/expressions/bitwise-xor/bigint-non-primitive.js:
+        (assert.sameValue.Symbol.toPrimitive):
+        (assert.sameValue.0b011n.Symbol.toPrimitive):
+        (assert.sameValue.valueOf):
+        (assert.sameValue.0b011n.valueOf):
+        (assert.sameValue.toString):
+        (assert.sameValue.0b011n.toString):
+        * test262/test/language/expressions/bitwise-xor/bigint-toprimitive.js:
+        * test262/test/language/expressions/bitwise-xor/bigint-wrapped-values.js:
+        * test262/test/language/expressions/division/bigint-and-number.js:
+        * test262/test/language/expressions/division/bigint-arithmetic.js:
+        (testDiv): Deleted.
+        * test262/test/language/expressions/division/bigint-complex-infinity.js:
+        * test262/test/language/expressions/division/bigint-errors.js:
+        (Symbol.toPrimitive):
+        (0n.Symbol.toPrimitive):
+        (valueOf):
+        (0n.valueOf):
+        (toString):
+        (0n.toString):
+        * test262/test/language/expressions/division/bigint-toprimitive.js:
+        * test262/test/language/expressions/division/bigint-wrapped-values.js:
+        * test262/test/language/expressions/does-not-equals/bigint-and-bigint.js:
+        * test262/test/language/expressions/does-not-equals/bigint-and-boolean.js:
+        * test262/test/language/expressions/does-not-equals/bigint-and-incomparable-primitive.js:
+        * test262/test/language/expressions/does-not-equals/bigint-and-non-finite.js:
+        * test262/test/language/expressions/does-not-equals/bigint-and-number-extremes.js:
+        * test262/test/language/expressions/does-not-equals/bigint-and-number.js:
+        * test262/test/language/expressions/does-not-equals/bigint-and-object.js:
+        (assert.sameValue.0n.valueOf):
+        (assert.sameValue.valueOf):
+        (assert.sameValue.0n.toString):
+        (assert.sameValue.toString):
+        (assert.sameValue.900719925474099101n.valueOf):
+        (assert.sameValue.900719925474099101n.toString):
+        * test262/test/language/expressions/does-not-equals/bigint-and-string.js:
+        * test262/test/language/expressions/equals/bigint-and-bigint.js:
+        * test262/test/language/expressions/equals/bigint-and-boolean.js:
+        * test262/test/language/expressions/equals/bigint-and-incomparable-primitive.js:
+        * test262/test/language/expressions/equals/bigint-and-non-finite.js:
+        * test262/test/language/expressions/equals/bigint-and-number-extremes.js:
+        * test262/test/language/expressions/equals/bigint-and-number.js:
+        * test262/test/language/expressions/equals/bigint-and-object.js:
+        (assert.sameValue.0n.valueOf):
+        (assert.sameValue.valueOf):
+        (assert.sameValue.0n.toString):
+        (assert.sameValue.toString):
+        (assert.sameValue.900719925474099101n.valueOf):
+        (assert.sameValue.900719925474099101n.toString):
+        * test262/test/language/expressions/equals/bigint-and-string.js:
+        * test262/test/language/expressions/exponentiation/bigint-and-number.js:
+        * test262/test/language/expressions/exponentiation/bigint-arithmetic.js:
+        (testExpt): Deleted.
+        * test262/test/language/expressions/exponentiation/bigint-errors.js:
+        (Symbol.toPrimitive):
+        (0n.Symbol.toPrimitive):
+        (valueOf):
+        (0n.valueOf):
+        (toString):
+        (0n.toString):
+        * test262/test/language/expressions/exponentiation/bigint-negative-exponent-throws.js: Renamed from JSTests/test262/test/language/expressions/exponentiation/bigint-exp-operator-negative-throws.js.
+        * test262/test/language/expressions/exponentiation/bigint-toprimitive.js:
+        * test262/test/language/expressions/exponentiation/bigint-wrapped-values.js:
+        * test262/test/language/expressions/exponentiation/bigint-zero-base-zero-exponent.js:
+        * test262/test/language/expressions/greater-than-or-equal/bigint-and-bigint.js:
+        * test262/test/language/expressions/greater-than-or-equal/bigint-and-incomparable-string.js:
+        * test262/test/language/expressions/greater-than-or-equal/bigint-and-non-finite.js:
+        * test262/test/language/expressions/greater-than-or-equal/bigint-and-number-extremes.js:
+        * test262/test/language/expressions/greater-than-or-equal/bigint-and-number.js:
+        * test262/test/language/expressions/greater-than-or-equal/bigint-and-string.js:
+        * test262/test/language/expressions/greater-than/11.8.2-1.js:
+        (obj1.valueOf):
+        (obj2.valueOf):
+        * test262/test/language/expressions/greater-than/11.8.2-2.js:
+        (obj1.valueOf):
+        (obj2.toString):
+        * test262/test/language/expressions/greater-than/11.8.2-3.js:
+        (obj1.toString):
+        (obj2.valueOf):
+        * test262/test/language/expressions/greater-than/11.8.2-4.js:
+        (obj1.toString):
+        (obj2.toString):
+        * test262/test/language/expressions/greater-than/bigint-and-bigint.js:
+        * test262/test/language/expressions/greater-than/bigint-and-boolean.js:
+        * test262/test/language/expressions/greater-than/bigint-and-incomparable-string.js:
+        * test262/test/language/expressions/greater-than/bigint-and-non-finite.js:
+        * test262/test/language/expressions/greater-than/bigint-and-number-extremes.js:
+        * test262/test/language/expressions/greater-than/bigint-and-number.js:
+        * test262/test/language/expressions/greater-than/bigint-and-string.js:
+        * test262/test/language/expressions/greater-than/bigint-and-symbol.js: Added.
+        * test262/test/language/expressions/left-shift/bigint-and-number.js:
+        * test262/test/language/expressions/left-shift/bigint-errors.js:
+        (Symbol.toPrimitive):
+        (0n.Symbol.toPrimitive):
+        (valueOf):
+        (0n.valueOf):
+        (toString):
+        (0n.toString):
+        * test262/test/language/expressions/left-shift/bigint-non-primitive.js:
+        (assert.sameValue.Symbol.toPrimitive):
+        (assert.sameValue.valueOf):
+        (assert.sameValue.toString):
+        (assert.sameValue.0b101n.Symbol.toPrimitive):
+        (assert.sameValue.0b101n.valueOf):
+        (assert.sameValue.0b101n.toString):
+        (valueOf):
+        * test262/test/language/expressions/left-shift/bigint-toprimitive.js:
+        * test262/test/language/expressions/left-shift/bigint-wrapped-values.js:
+        * test262/test/language/expressions/less-than-or-equal/11.8.3-1.js:
+        (obj1.valueOf):
+        (obj2.valueOf):
+        * test262/test/language/expressions/less-than-or-equal/11.8.3-2.js:
+        (obj1.valueOf):
+        (obj2.toString):
+        * test262/test/language/expressions/less-than-or-equal/11.8.3-3.js:
+        (obj1.toString):
+        (obj2.valueOf):
+        * test262/test/language/expressions/less-than-or-equal/11.8.3-4.js:
+        (obj1.toString):
+        (obj2.toString):
+        * test262/test/language/expressions/less-than-or-equal/11.8.3-5.js: Removed.
+        * test262/test/language/expressions/less-than-or-equal/bigint-and-bigint.js:
+        * test262/test/language/expressions/less-than-or-equal/bigint-and-incomparable-string.js:
+        * test262/test/language/expressions/less-than-or-equal/bigint-and-non-finite.js:
+        * test262/test/language/expressions/less-than-or-equal/bigint-and-number-extremes.js:
+        * test262/test/language/expressions/less-than-or-equal/bigint-and-number.js:
+        * test262/test/language/expressions/less-than-or-equal/bigint-and-string.js:
+        * test262/test/language/expressions/less-than/bigint-and-bigint.js:
+        * test262/test/language/expressions/less-than/bigint-and-boolean.js:
+        * test262/test/language/expressions/less-than/bigint-and-incomparable-string.js:
+        * test262/test/language/expressions/less-than/bigint-and-non-finite.js:
+        * test262/test/language/expressions/less-than/bigint-and-number-extremes.js:
+        * test262/test/language/expressions/less-than/bigint-and-number.js:
+        * test262/test/language/expressions/less-than/bigint-and-string.js:
+        * test262/test/language/expressions/less-than/bigint-and-symbol.js: Added.
+        * test262/test/language/expressions/modulus/bigint-and-number.js:
+        * test262/test/language/expressions/modulus/bigint-arithmetic.js:
+        (testMod): Deleted.
+        * test262/test/language/expressions/modulus/bigint-errors.js:
+        (Symbol.toPrimitive):
+        (0n.Symbol.toPrimitive):
+        (valueOf):
+        (0n.valueOf):
+        (toString):
+        (0n.toString):
+        * test262/test/language/expressions/modulus/bigint-modulo-zero.js:
+        * test262/test/language/expressions/modulus/bigint-toprimitive.js:
+        * test262/test/language/expressions/modulus/bigint-wrapped-values.js:
+        * test262/test/language/expressions/multiplication/bigint-and-number.js:
+        * test262/test/language/expressions/multiplication/bigint-arithmetic.js:
+        (testMul): Deleted.
+        * test262/test/language/expressions/multiplication/bigint-errors.js:
+        (Symbol.toPrimitive):
+        (0n.Symbol.toPrimitive):
+        (valueOf):
+        (0n.valueOf):
+        (toString):
+        (0n.toString):
+        * test262/test/language/expressions/multiplication/bigint-toprimitive.js:
+        * test262/test/language/expressions/multiplication/bigint-wrapped-values.js:
+        * test262/test/language/expressions/right-shift/bigint-and-number.js:
+        * test262/test/language/expressions/right-shift/bigint-errors.js:
+        (Symbol.toPrimitive):
+        (0n.Symbol.toPrimitive):
+        (valueOf):
+        (0n.valueOf):
+        (toString):
+        (0n.toString):
+        * test262/test/language/expressions/right-shift/bigint-non-primitive.js:
+        (assert.sameValue.Symbol.toPrimitive):
+        (assert.sameValue.valueOf):
+        (assert.sameValue.toString):
+        (assert.sameValue.0b101n.Symbol.toPrimitive):
+        (assert.sameValue.0b101n.valueOf):
+        (assert.sameValue.0b101n.toString):
+        (valueOf):
+        * test262/test/language/expressions/right-shift/bigint-toprimitive.js:
+        * test262/test/language/expressions/right-shift/bigint-wrapped-values.js:
+        * test262/test/language/expressions/strict-does-not-equals/bigint-and-bigint.js:
+        * test262/test/language/expressions/strict-does-not-equals/bigint-and-boolean.js:
+        * test262/test/language/expressions/strict-does-not-equals/bigint-and-incomparable-primitive.js:
+        * test262/test/language/expressions/strict-does-not-equals/bigint-and-non-finite.js:
+        * test262/test/language/expressions/strict-does-not-equals/bigint-and-number-extremes.js:
+        * test262/test/language/expressions/strict-does-not-equals/bigint-and-number.js:
+        * test262/test/language/expressions/strict-does-not-equals/bigint-and-object.js:
+        (assert.sameValue.0n.valueOf):
+        (assert.sameValue.valueOf):
+        (assert.sameValue.0n.toString):
+        (assert.sameValue.toString):
+        (assert.sameValue.900719925474099101n.valueOf):
+        (assert.sameValue.900719925474099101n.toString):
+        * test262/test/language/expressions/strict-does-not-equals/bigint-and-string.js:
+        * test262/test/language/expressions/strict-equals/bigint-and-bigint.js:
+        * test262/test/language/expressions/strict-equals/bigint-and-boolean.js:
+        * test262/test/language/expressions/strict-equals/bigint-and-incomparable-primitive.js:
+        * test262/test/language/expressions/strict-equals/bigint-and-non-finite.js:
+        * test262/test/language/expressions/strict-equals/bigint-and-number-extremes.js:
+        * test262/test/language/expressions/strict-equals/bigint-and-number.js:
+        * test262/test/language/expressions/strict-equals/bigint-and-object.js:
+        (assert.sameValue.0n.valueOf):
+        (assert.sameValue.valueOf):
+        (assert.sameValue.0n.toString):
+        (assert.sameValue.toString):
+        (assert.sameValue.900719925474099101n.valueOf):
+        (assert.sameValue.900719925474099101n.toString):
+        * test262/test/language/expressions/strict-equals/bigint-and-string.js:
+        * test262/test/language/expressions/subtraction/bigint-and-number.js:
+        * test262/test/language/expressions/subtraction/bigint-arithmetic.js:
+        (testSub): Deleted.
+        * test262/test/language/expressions/subtraction/bigint-errors.js:
+        (Symbol.toPrimitive):
+        (0n.Symbol.toPrimitive):
+        (valueOf):
+        (0n.valueOf):
+        (toString):
+        (0n.toString):
+        * test262/test/language/expressions/subtraction/bigint-toprimitive.js:
+        * test262/test/language/expressions/subtraction/bigint-wrapped-values.js:
+        * test262/test/language/expressions/unary-minus/bigint-non-primitive.js:
+        (assert.sameValue.Symbol.toPrimitive):
+        (assert.sameValue.valueOf):
+        (assert.sameValue.toString):
+        * test262/test/language/expressions/unary-plus/bigint-throws.js:
+        * test262/test/language/expressions/unsigned-right-shift/bigint-and-number.js:
+        * test262/test/language/expressions/unsigned-right-shift/bigint-errors.js:
+        (Symbol.toPrimitive):
+        (0n.Symbol.toPrimitive):
+        (valueOf):
+        (0n.valueOf):
+        (toString):
+        (0n.toString):
+        * test262/test/language/expressions/unsigned-right-shift/bigint-non-primitive.js:
+        (Symbol.toPrimitive):
+        (valueOf):
+        (toString):
+        (0b101n.Symbol.toPrimitive):
+        (0b101n.valueOf):
+        (0b101n.toString):
+        (valueOf.valueOf):
+        * test262/test/language/expressions/unsigned-right-shift/bigint-toprimitive.js:
+        * test262/test/language/expressions/unsigned-right-shift/bigint-wrapped-values.js:
+        * test262/test/language/literals/numeric/numeric-followed-by-ident.js: Added.
+        * test262/test/language/literals/string/line-continuation-double.js: Added.
+        * test262/test/language/literals/string/line-continuation-single.js: Added.
+        * test262/test262-Revision.txt:
+
 2018-05-25  Mark Lam  <mark.lam@apple.com>
 
         for-in loops should preserve and restore the TDZ stack for each of its internal loops.
index 2ae0564..495ccc4 100644 (file)
@@ -110,8 +110,6 @@ test/annexB/language/eval-code/direct/func-switch-dflt-eval-func-skip-early-err-
   default: 'Test262Error: An initialized binding is not created prior to evaluation Expected a ReferenceError to be thrown but no exception was thrown at all'
 test/annexB/language/eval-code/direct/func-switch-dflt-eval-func-skip-early-err-try.js:
   default: 'Test262Error: An initialized binding is not created prior to evaluation Expected a ReferenceError to be thrown but no exception was thrown at all'
-test/annexB/language/eval-code/direct/global-block-decl-eval-global-existing-global-init.js:
-  default: 'Test262Error: binding is initialized to `undefined` Expected SameValue(«x», Â«undefined») to be true'
 test/annexB/language/eval-code/direct/global-block-decl-eval-global-skip-early-err-block.js:
   default: 'Test262Error: An initialized binding is not created following evaluation Expected a ReferenceError to be thrown but no exception was thrown at all'
 test/annexB/language/eval-code/direct/global-block-decl-eval-global-skip-early-err-for-in.js:
@@ -124,8 +122,6 @@ test/annexB/language/eval-code/direct/global-block-decl-eval-global-skip-early-e
   default: 'Test262Error: An initialized binding is not created following evaluation Expected a ReferenceError to be thrown but no exception was thrown at all'
 test/annexB/language/eval-code/direct/global-block-decl-eval-global-skip-early-err-try.js:
   default: 'Test262Error: An initialized binding is not created prior to evaluation Expected a ReferenceError to be thrown but no exception was thrown at all'
-test/annexB/language/eval-code/direct/global-if-decl-else-decl-a-eval-global-existing-global-init.js:
-  default: 'Test262Error: binding is initialized to `undefined` Expected SameValue(«x», Â«undefined») to be true'
 test/annexB/language/eval-code/direct/global-if-decl-else-decl-a-eval-global-skip-early-err-block.js:
   default: 'Test262Error: An initialized binding is not created following evaluation Expected a ReferenceError to be thrown but no exception was thrown at all'
 test/annexB/language/eval-code/direct/global-if-decl-else-decl-a-eval-global-skip-early-err-for-in.js:
@@ -138,8 +134,6 @@ test/annexB/language/eval-code/direct/global-if-decl-else-decl-a-eval-global-ski
   default: 'Test262Error: An initialized binding is not created following evaluation Expected a ReferenceError to be thrown but no exception was thrown at all'
 test/annexB/language/eval-code/direct/global-if-decl-else-decl-a-eval-global-skip-early-err-try.js:
   default: 'Test262Error: An initialized binding is not created prior to evaluation Expected a ReferenceError to be thrown but no exception was thrown at all'
-test/annexB/language/eval-code/direct/global-if-decl-else-decl-b-eval-global-existing-global-init.js:
-  default: 'Test262Error: binding is initialized to `undefined` Expected SameValue(«x», Â«undefined») to be true'
 test/annexB/language/eval-code/direct/global-if-decl-else-decl-b-eval-global-skip-early-err-block.js:
   default: 'Test262Error: An initialized binding is not created following evaluation Expected a ReferenceError to be thrown but no exception was thrown at all'
 test/annexB/language/eval-code/direct/global-if-decl-else-decl-b-eval-global-skip-early-err-for-in.js:
@@ -152,8 +146,6 @@ test/annexB/language/eval-code/direct/global-if-decl-else-decl-b-eval-global-ski
   default: 'Test262Error: An initialized binding is not created following evaluation Expected a ReferenceError to be thrown but no exception was thrown at all'
 test/annexB/language/eval-code/direct/global-if-decl-else-decl-b-eval-global-skip-early-err-try.js:
   default: 'Test262Error: An initialized binding is not created prior to evaluation Expected a ReferenceError to be thrown but no exception was thrown at all'
-test/annexB/language/eval-code/direct/global-if-decl-else-stmt-eval-global-existing-global-init.js:
-  default: 'Test262Error: binding is initialized to `undefined` Expected SameValue(«x», Â«undefined») to be true'
 test/annexB/language/eval-code/direct/global-if-decl-else-stmt-eval-global-skip-early-err-block.js:
   default: 'Test262Error: An initialized binding is not created following evaluation Expected a ReferenceError to be thrown but no exception was thrown at all'
 test/annexB/language/eval-code/direct/global-if-decl-else-stmt-eval-global-skip-early-err-for-in.js:
@@ -166,8 +158,6 @@ test/annexB/language/eval-code/direct/global-if-decl-else-stmt-eval-global-skip-
   default: 'Test262Error: An initialized binding is not created following evaluation Expected a ReferenceError to be thrown but no exception was thrown at all'
 test/annexB/language/eval-code/direct/global-if-decl-else-stmt-eval-global-skip-early-err-try.js:
   default: 'Test262Error: An initialized binding is not created prior to evaluation Expected a ReferenceError to be thrown but no exception was thrown at all'
-test/annexB/language/eval-code/direct/global-if-decl-no-else-eval-global-existing-global-init.js:
-  default: 'Test262Error: binding is initialized to `undefined` Expected SameValue(«x», Â«undefined») to be true'
 test/annexB/language/eval-code/direct/global-if-decl-no-else-eval-global-skip-early-err-block.js:
   default: 'Test262Error: An initialized binding is not created following evaluation Expected a ReferenceError to be thrown but no exception was thrown at all'
 test/annexB/language/eval-code/direct/global-if-decl-no-else-eval-global-skip-early-err-for-in.js:
@@ -180,8 +170,6 @@ test/annexB/language/eval-code/direct/global-if-decl-no-else-eval-global-skip-ea
   default: 'Test262Error: An initialized binding is not created following evaluation Expected a ReferenceError to be thrown but no exception was thrown at all'
 test/annexB/language/eval-code/direct/global-if-decl-no-else-eval-global-skip-early-err-try.js:
   default: 'Test262Error: An initialized binding is not created prior to evaluation Expected a ReferenceError to be thrown but no exception was thrown at all'
-test/annexB/language/eval-code/direct/global-if-stmt-else-decl-eval-global-existing-global-init.js:
-  default: 'Test262Error: binding is initialized to `undefined` Expected SameValue(«x», Â«undefined») to be true'
 test/annexB/language/eval-code/direct/global-if-stmt-else-decl-eval-global-skip-early-err-block.js:
   default: 'Test262Error: An initialized binding is not created following evaluation Expected a ReferenceError to be thrown but no exception was thrown at all'
 test/annexB/language/eval-code/direct/global-if-stmt-else-decl-eval-global-skip-early-err-for-in.js:
@@ -194,8 +182,6 @@ test/annexB/language/eval-code/direct/global-if-stmt-else-decl-eval-global-skip-
   default: 'Test262Error: An initialized binding is not created following evaluation Expected a ReferenceError to be thrown but no exception was thrown at all'
 test/annexB/language/eval-code/direct/global-if-stmt-else-decl-eval-global-skip-early-err-try.js:
   default: 'Test262Error: An initialized binding is not created prior to evaluation Expected a ReferenceError to be thrown but no exception was thrown at all'
-test/annexB/language/eval-code/direct/global-switch-case-eval-global-existing-global-init.js:
-  default: 'Test262Error: binding is initialized to `undefined` Expected SameValue(«x», Â«undefined») to be true'
 test/annexB/language/eval-code/direct/global-switch-case-eval-global-skip-early-err-block.js:
   default: 'Test262Error: An initialized binding is not created following evaluation Expected a ReferenceError to be thrown but no exception was thrown at all'
 test/annexB/language/eval-code/direct/global-switch-case-eval-global-skip-early-err-for-in.js:
@@ -208,8 +194,6 @@ test/annexB/language/eval-code/direct/global-switch-case-eval-global-skip-early-
   default: 'Test262Error: An initialized binding is not created following evaluation Expected a ReferenceError to be thrown but no exception was thrown at all'
 test/annexB/language/eval-code/direct/global-switch-case-eval-global-skip-early-err-try.js:
   default: 'Test262Error: An initialized binding is not created prior to evaluation Expected a ReferenceError to be thrown but no exception was thrown at all'
-test/annexB/language/eval-code/direct/global-switch-dflt-eval-global-existing-global-init.js:
-  default: 'Test262Error: binding is initialized to `undefined` Expected SameValue(«x», Â«undefined») to be true'
 test/annexB/language/eval-code/direct/global-switch-dflt-eval-global-skip-early-err-block.js:
   default: 'Test262Error: An initialized binding is not created following evaluation Expected a ReferenceError to be thrown but no exception was thrown at all'
 test/annexB/language/eval-code/direct/global-switch-dflt-eval-global-skip-early-err-for-in.js:
@@ -224,8 +208,6 @@ test/annexB/language/eval-code/direct/global-switch-dflt-eval-global-skip-early-
   default: 'Test262Error: An initialized binding is not created prior to evaluation Expected a ReferenceError to be thrown but no exception was thrown at all'
 test/annexB/language/eval-code/direct/var-env-lower-lex-catch-non-strict.js:
   default: "SyntaxError: Can't create duplicate variable in eval: 'err'"
-test/annexB/language/eval-code/indirect/global-block-decl-eval-global-existing-global-init.js:
-  default: 'Test262Error: binding is initialized to `undefined` Expected SameValue(«x», Â«undefined») to be true'
 test/annexB/language/eval-code/indirect/global-block-decl-eval-global-skip-early-err-block.js:
   default: 'Test262Error: An initialized binding is not created following evaluation Expected a ReferenceError to be thrown but no exception was thrown at all'
 test/annexB/language/eval-code/indirect/global-block-decl-eval-global-skip-early-err-for-in.js:
@@ -238,8 +220,6 @@ test/annexB/language/eval-code/indirect/global-block-decl-eval-global-skip-early
   default: 'Test262Error: An initialized binding is not created following evaluation Expected a ReferenceError to be thrown but no exception was thrown at all'
 test/annexB/language/eval-code/indirect/global-block-decl-eval-global-skip-early-err-try.js:
   default: 'Test262Error: An initialized binding is not created prior to evaluation Expected a ReferenceError to be thrown but no exception was thrown at all'
-test/annexB/language/eval-code/indirect/global-if-decl-else-decl-a-eval-global-existing-global-init.js:
-  default: 'Test262Error: binding is initialized to `undefined` Expected SameValue(«x», Â«undefined») to be true'
 test/annexB/language/eval-code/indirect/global-if-decl-else-decl-a-eval-global-skip-early-err-block.js:
   default: 'Test262Error: An initialized binding is not created following evaluation Expected a ReferenceError to be thrown but no exception was thrown at all'
 test/annexB/language/eval-code/indirect/global-if-decl-else-decl-a-eval-global-skip-early-err-for-in.js:
@@ -252,8 +232,6 @@ test/annexB/language/eval-code/indirect/global-if-decl-else-decl-a-eval-global-s
   default: 'Test262Error: An initialized binding is not created following evaluation Expected a ReferenceError to be thrown but no exception was thrown at all'
 test/annexB/language/eval-code/indirect/global-if-decl-else-decl-a-eval-global-skip-early-err-try.js:
   default: 'Test262Error: An initialized binding is not created prior to evaluation Expected a ReferenceError to be thrown but no exception was thrown at all'
-test/annexB/language/eval-code/indirect/global-if-decl-else-decl-b-eval-global-existing-global-init.js:
-  default: 'Test262Error: binding is initialized to `undefined` Expected SameValue(«x», Â«undefined») to be true'
 test/annexB/language/eval-code/indirect/global-if-decl-else-decl-b-eval-global-skip-early-err-block.js:
   default: 'Test262Error: An initialized binding is not created following evaluation Expected a ReferenceError to be thrown but no exception was thrown at all'
 test/annexB/language/eval-code/indirect/global-if-decl-else-decl-b-eval-global-skip-early-err-for-in.js:
@@ -266,8 +244,6 @@ test/annexB/language/eval-code/indirect/global-if-decl-else-decl-b-eval-global-s
   default: 'Test262Error: An initialized binding is not created following evaluation Expected a ReferenceError to be thrown but no exception was thrown at all'
 test/annexB/language/eval-code/indirect/global-if-decl-else-decl-b-eval-global-skip-early-err-try.js:
   default: 'Test262Error: An initialized binding is not created prior to evaluation Expected a ReferenceError to be thrown but no exception was thrown at all'
-test/annexB/language/eval-code/indirect/global-if-decl-else-stmt-eval-global-existing-global-init.js:
-  default: 'Test262Error: binding is initialized to `undefined` Expected SameValue(«x», Â«undefined») to be true'
 test/annexB/language/eval-code/indirect/global-if-decl-else-stmt-eval-global-skip-early-err-block.js:
   default: 'Test262Error: An initialized binding is not created following evaluation Expected a ReferenceError to be thrown but no exception was thrown at all'
 test/annexB/language/eval-code/indirect/global-if-decl-else-stmt-eval-global-skip-early-err-for-in.js:
@@ -280,8 +256,6 @@ test/annexB/language/eval-code/indirect/global-if-decl-else-stmt-eval-global-ski
   default: 'Test262Error: An initialized binding is not created following evaluation Expected a ReferenceError to be thrown but no exception was thrown at all'
 test/annexB/language/eval-code/indirect/global-if-decl-else-stmt-eval-global-skip-early-err-try.js:
   default: 'Test262Error: An initialized binding is not created prior to evaluation Expected a ReferenceError to be thrown but no exception was thrown at all'
-test/annexB/language/eval-code/indirect/global-if-decl-no-else-eval-global-existing-global-init.js:
-  default: 'Test262Error: binding is initialized to `undefined` Expected SameValue(«x», Â«undefined») to be true'
 test/annexB/language/eval-code/indirect/global-if-decl-no-else-eval-global-skip-early-err-block.js:
   default: 'Test262Error: An initialized binding is not created following evaluation Expected a ReferenceError to be thrown but no exception was thrown at all'
 test/annexB/language/eval-code/indirect/global-if-decl-no-else-eval-global-skip-early-err-for-in.js:
@@ -294,8 +268,6 @@ test/annexB/language/eval-code/indirect/global-if-decl-no-else-eval-global-skip-
   default: 'Test262Error: An initialized binding is not created following evaluation Expected a ReferenceError to be thrown but no exception was thrown at all'
 test/annexB/language/eval-code/indirect/global-if-decl-no-else-eval-global-skip-early-err-try.js:
   default: 'Test262Error: An initialized binding is not created prior to evaluation Expected a ReferenceError to be thrown but no exception was thrown at all'
-test/annexB/language/eval-code/indirect/global-if-stmt-else-decl-eval-global-existing-global-init.js:
-  default: 'Test262Error: binding is initialized to `undefined` Expected SameValue(«x», Â«undefined») to be true'
 test/annexB/language/eval-code/indirect/global-if-stmt-else-decl-eval-global-skip-early-err-block.js:
   default: 'Test262Error: An initialized binding is not created following evaluation Expected a ReferenceError to be thrown but no exception was thrown at all'
 test/annexB/language/eval-code/indirect/global-if-stmt-else-decl-eval-global-skip-early-err-for-in.js:
@@ -308,8 +280,6 @@ test/annexB/language/eval-code/indirect/global-if-stmt-else-decl-eval-global-ski
   default: 'Test262Error: An initialized binding is not created following evaluation Expected a ReferenceError to be thrown but no exception was thrown at all'
 test/annexB/language/eval-code/indirect/global-if-stmt-else-decl-eval-global-skip-early-err-try.js:
   default: 'Test262Error: An initialized binding is not created prior to evaluation Expected a ReferenceError to be thrown but no exception was thrown at all'
-test/annexB/language/eval-code/indirect/global-switch-case-eval-global-existing-global-init.js:
-  default: 'Test262Error: binding is initialized to `undefined` Expected SameValue(«x», Â«undefined») to be true'
 test/annexB/language/eval-code/indirect/global-switch-case-eval-global-skip-early-err-block.js:
   default: 'Test262Error: An initialized binding is not created following evaluation Expected a ReferenceError to be thrown but no exception was thrown at all'
 test/annexB/language/eval-code/indirect/global-switch-case-eval-global-skip-early-err-for-in.js:
@@ -322,8 +292,6 @@ test/annexB/language/eval-code/indirect/global-switch-case-eval-global-skip-earl
   default: 'Test262Error: An initialized binding is not created following evaluation Expected a ReferenceError to be thrown but no exception was thrown at all'
 test/annexB/language/eval-code/indirect/global-switch-case-eval-global-skip-early-err-try.js:
   default: 'Test262Error: An initialized binding is not created prior to evaluation Expected a ReferenceError to be thrown but no exception was thrown at all'
-test/annexB/language/eval-code/indirect/global-switch-dflt-eval-global-existing-global-init.js:
-  default: 'Test262Error: binding is initialized to `undefined` Expected SameValue(«x», Â«undefined») to be true'
 test/annexB/language/eval-code/indirect/global-switch-dflt-eval-global-skip-early-err-block.js:
   default: 'Test262Error: An initialized binding is not created following evaluation Expected a ReferenceError to be thrown but no exception was thrown at all'
 test/annexB/language/eval-code/indirect/global-switch-dflt-eval-global-skip-early-err-for-in.js:
@@ -445,6 +413,8 @@ test/annexB/language/global-code/block-decl-global-existing-block-fn-no-init.js:
   default: 'Test262Error: Expected SameValue(«function f() {  }», Â«undefined») to be true'
 test/annexB/language/global-code/block-decl-global-existing-fn-update.js:
   default: 'Test262Error: Expected SameValue(«outer declaration», Â«inner declaration») to be true'
+test/annexB/language/global-code/block-decl-global-existing-non-enumerable-global-init.js:
+  default: 'Test262Error: descriptor should not be enumerable; descriptor should be configurable'
 test/annexB/language/global-code/block-decl-global-init.js:
   default: 'Test262Error: binding is initialized to `undefined` Expected SameValue(«function f() {  }», Â«undefined») to be true'
 test/annexB/language/global-code/block-decl-global-no-skip-try.js:
@@ -469,6 +439,8 @@ test/annexB/language/global-code/if-decl-else-decl-a-global-existing-block-fn-no
   default: 'Test262Error: Expected SameValue(«function f() {  }», Â«undefined») to be true'
 test/annexB/language/global-code/if-decl-else-decl-a-global-existing-fn-update.js:
   default: 'Test262Error: Expected SameValue(«outer declaration», Â«inner declaration») to be true'
+test/annexB/language/global-code/if-decl-else-decl-a-global-existing-non-enumerable-global-init.js:
+  default: 'Test262Error: descriptor should not be enumerable; descriptor should be configurable'
 test/annexB/language/global-code/if-decl-else-decl-a-global-init.js:
   default: 'Test262Error: binding is initialized to `undefined` Expected SameValue(«function f() {  }», Â«undefined») to be true'
 test/annexB/language/global-code/if-decl-else-decl-a-global-no-skip-try.js:
@@ -493,6 +465,8 @@ test/annexB/language/global-code/if-decl-else-decl-b-global-existing-block-fn-no
   default: 'Test262Error: Expected SameValue(«function f() {  }», Â«undefined») to be true'
 test/annexB/language/global-code/if-decl-else-decl-b-global-existing-fn-update.js:
   default: 'Test262Error: Expected SameValue(«outer declaration», Â«inner declaration») to be true'
+test/annexB/language/global-code/if-decl-else-decl-b-global-existing-non-enumerable-global-init.js:
+  default: 'Test262Error: descriptor should not be enumerable; descriptor should be configurable'
 test/annexB/language/global-code/if-decl-else-decl-b-global-init.js:
   default: 'Test262Error: binding is initialized to `undefined` Expected SameValue(«function f() {  }», Â«undefined») to be true'
 test/annexB/language/global-code/if-decl-else-decl-b-global-no-skip-try.js:
@@ -517,6 +491,8 @@ test/annexB/language/global-code/if-decl-else-stmt-global-existing-block-fn-no-i
   default: 'Test262Error: Expected SameValue(«function f() {  }», Â«undefined») to be true'
 test/annexB/language/global-code/if-decl-else-stmt-global-existing-fn-update.js:
   default: 'Test262Error: Expected SameValue(«outer declaration», Â«inner declaration») to be true'
+test/annexB/language/global-code/if-decl-else-stmt-global-existing-non-enumerable-global-init.js:
+  default: 'Test262Error: descriptor should not be enumerable; descriptor should be configurable'
 test/annexB/language/global-code/if-decl-else-stmt-global-init.js:
   default: 'Test262Error: binding is initialized to `undefined` Expected SameValue(«function f() {  }», Â«undefined») to be true'
 test/annexB/language/global-code/if-decl-else-stmt-global-no-skip-try.js:
@@ -541,6 +517,8 @@ test/annexB/language/global-code/if-decl-no-else-global-existing-block-fn-no-ini
   default: 'Test262Error: Expected SameValue(«function f() {  }», Â«undefined») to be true'
 test/annexB/language/global-code/if-decl-no-else-global-existing-fn-update.js:
   default: 'Test262Error: Expected SameValue(«outer declaration», Â«inner declaration») to be true'
+test/annexB/language/global-code/if-decl-no-else-global-existing-non-enumerable-global-init.js:
+  default: 'Test262Error: descriptor should not be enumerable; descriptor should be configurable'
 test/annexB/language/global-code/if-decl-no-else-global-init.js:
   default: 'Test262Error: binding is initialized to `undefined` Expected SameValue(«function f() {  }», Â«undefined») to be true'
 test/annexB/language/global-code/if-decl-no-else-global-no-skip-try.js:
@@ -565,6 +543,8 @@ test/annexB/language/global-code/if-stmt-else-decl-global-existing-block-fn-no-i
   default: 'Test262Error: Expected SameValue(«function f() {  }», Â«undefined») to be true'
 test/annexB/language/global-code/if-stmt-else-decl-global-existing-fn-update.js:
   default: 'Test262Error: Expected SameValue(«outer declaration», Â«inner declaration») to be true'
+test/annexB/language/global-code/if-stmt-else-decl-global-existing-non-enumerable-global-init.js:
+  default: 'Test262Error: descriptor should not be enumerable; descriptor should be configurable'
 test/annexB/language/global-code/if-stmt-else-decl-global-init.js:
   default: 'Test262Error: binding is initialized to `undefined` Expected SameValue(«function f() {  }», Â«undefined») to be true'
 test/annexB/language/global-code/if-stmt-else-decl-global-no-skip-try.js:
@@ -589,6 +569,8 @@ test/annexB/language/global-code/switch-case-global-existing-block-fn-no-init.js
   default: 'Test262Error: Expected SameValue(«function f() {  }», Â«undefined») to be true'
 test/annexB/language/global-code/switch-case-global-existing-fn-update.js:
   default: 'Test262Error: Expected SameValue(«outer declaration», Â«inner declaration») to be true'
+test/annexB/language/global-code/switch-case-global-existing-non-enumerable-global-init.js:
+  default: 'Test262Error: descriptor should not be enumerable; descriptor should be configurable'
 test/annexB/language/global-code/switch-case-global-init.js:
   default: 'Test262Error: binding is initialized to `undefined` Expected SameValue(«function f() {  }», Â«undefined») to be true'
 test/annexB/language/global-code/switch-case-global-no-skip-try.js:
@@ -613,6 +595,8 @@ test/annexB/language/global-code/switch-dflt-global-existing-block-fn-no-init.js
   default: 'Test262Error: Expected SameValue(«function f() {  }», Â«undefined») to be true'
 test/annexB/language/global-code/switch-dflt-global-existing-fn-update.js:
   default: 'Test262Error: Expected SameValue(«outer declaration», Â«inner declaration») to be true'
+test/annexB/language/global-code/switch-dflt-global-existing-non-enumerable-global-init.js:
+  default: 'Test262Error: descriptor should not be enumerable; descriptor should be configurable'
 test/annexB/language/global-code/switch-dflt-global-init.js:
   default: 'Test262Error: binding is initialized to `undefined` Expected SameValue(«function f() {  }», Â«undefined») to be true'
 test/annexB/language/global-code/switch-dflt-global-no-skip-try.js:
@@ -649,6 +633,36 @@ test/built-ins/Array/prototype/concat/is-concat-spreadable-proxy.js:
 test/built-ins/Array/prototype/filter/target-array-with-non-writable-property.js:
   default: 'TypeError: Attempted to assign to readonly property.'
   strict mode: 'TypeError: Attempted to assign to readonly property.'
+test/built-ins/Array/prototype/flat/array-like-objects.js:
+  default: "TypeError: undefined is not an object (evaluating '[].flat.call')"
+  strict mode: "TypeError: undefined is not an object (evaluating '[].flat.call')"
+test/built-ins/Array/prototype/flat/bound-function-call.js:
+  default: "TypeError: undefined is not an object (evaluating '[].flat.bind')"
+  strict mode: "TypeError: undefined is not an object (evaluating '[].flat.bind')"
+test/built-ins/Array/prototype/flat/empty-array-elements.js:
+  default: "TypeError: [].flat is not a function. (In '[].flat()', '[].flat' is undefined)"
+  strict mode: "TypeError: [].flat is not a function. (In '[].flat()', '[].flat' is undefined)"
+test/built-ins/Array/prototype/flat/empty-object-elements.js:
+  default: "TypeError: [a].flat is not a function. (In '[a].flat()', '[a].flat' is undefined)"
+  strict mode: "TypeError: [a].flat is not a function. (In '[a].flat()', '[a].flat' is undefined)"
+test/built-ins/Array/prototype/flat/length.js:
+  default: "TypeError: undefined is not an object (evaluating 'Array.prototype.flat.length')"
+  strict mode: "TypeError: undefined is not an object (evaluating 'Array.prototype.flat.length')"
+test/built-ins/Array/prototype/flat/name.js:
+  default: "TypeError: undefined is not an object (evaluating 'Array.prototype.flat.name')"
+  strict mode: "TypeError: undefined is not an object (evaluating 'Array.prototype.flat.name')"
+test/built-ins/Array/prototype/flat/non-numeric-depth-should-not-throw.js:
+  default: "TypeError: a.flat is not a function. (In 'a.flat(depthNum)', 'a.flat' is undefined)"
+  strict mode: "TypeError: a.flat is not a function. (In 'a.flat(depthNum)', 'a.flat' is undefined)"
+test/built-ins/Array/prototype/flat/null-undefined-elements.js:
+  default: "TypeError: [1, null, void 0].flat is not a function. (In '[1, null, void 0].flat()', '[1, null, void 0].flat' is undefined)"
+  strict mode: "TypeError: [1, null, void 0].flat is not a function. (In '[1, null, void 0].flat()', '[1, null, void 0].flat' is undefined)"
+test/built-ins/Array/prototype/flat/positive-infinity.js:
+  default: "TypeError: a.flat is not a function. (In 'a.flat(Number.POSITIVE_INFINITY)', 'a.flat' is undefined)"
+  strict mode: "TypeError: a.flat is not a function. (In 'a.flat(Number.POSITIVE_INFINITY)', 'a.flat' is undefined)"
+test/built-ins/Array/prototype/flat/prop-desc.js:
+  default: 'Test262Error: `typeof Array.prototype.flat` is `function` Expected SameValue(«undefined», Â«function») to be true'
+  strict mode: 'Test262Error: `typeof Array.prototype.flat` is `function` Expected SameValue(«undefined», Â«function») to be true'
 test/built-ins/Array/prototype/indexOf/15.4.4.14-3-28.js:
   default: 'Test262Error: Array.prototype.indexOf.call(obj, targetObj) Expected SameValue(«-1», Â«0») to be true'
   strict mode: 'Test262Error: Array.prototype.indexOf.call(obj, targetObj) Expected SameValue(«-1», Â«0») to be true'
@@ -1201,7 +1215,7 @@ test/built-ins/Object/internals/DefineOwnProperty/consistent-value-function-argu
   default: 'Test262Error: Expected SameValue(«null», Â«[object Arguments]») to be true'
 test/built-ins/Object/internals/DefineOwnProperty/consistent-value-function-caller.js:
   default: 'Test262Error: Expected SameValue(«null», Â«function g() {'
-test/built-ins/Object/internals/DefineOwnProperty/consistent-value-regexp-$1.js:
+test/built-ins/Object/internals/DefineOwnProperty/consistent-value-regexp-dollar1.js:
   default: 'Test262Error: Expected SameValue(«», Â«x») to be true'
   strict mode: 'Test262Error: Expected SameValue(«», Â«x») to be true'
 test/built-ins/Object/keys/property-traps-order-with-proxied-array.js:
@@ -1886,18 +1900,57 @@ test/intl402/Intl/getCanonicalLocales/preferred-grandfathered.js:
 test/intl402/Intl/getCanonicalLocales/preferred-variant.js:
   default: 'Test262Error: Expected SameValue(«ja-Latn-hepburn-heploc», Â«ja-Latn-alalc97») to be true'
   strict mode: 'Test262Error: Expected SameValue(«ja-Latn-hepburn-heploc», Â«ja-Latn-alalc97») to be true'
+test/intl402/Locale/constructor-getter-order.js:
+  default: "TypeError: undefined is not a constructor (evaluating 'new Intl.Locale')"
+  strict mode: "TypeError: undefined is not a constructor (evaluating 'new Intl.Locale')"
+test/intl402/Locale/constructor-locale-object.js:
+  default: "TypeError: undefined is not a constructor (evaluating 'new Intl.Locale(\"en-US\")')"
+  strict mode: "TypeError: undefined is not a constructor (evaluating 'new Intl.Locale(\"en-US\")')"
+test/intl402/Locale/constructor-non-iana-canon.js:
+  default: 'Test262Error: Expected SameValue(«mo», Â«ro») to be true'
+  strict mode: 'Test262Error: Expected SameValue(«mo», Â«ro») to be true'
 test/intl402/Locale/constructor-options-calendar-invalid.js:
   default: 'Test262Error:  is an invalid calendar option value Expected a RangeError but got a TypeError'
   strict mode: 'Test262Error:  is an invalid calendar option value Expected a RangeError but got a TypeError'
 test/intl402/Locale/constructor-options-calendar-valid.js:
   default: "TypeError: undefined is not a constructor (evaluating 'new Intl.Locale('en', options)')"
   strict mode: "TypeError: undefined is not a constructor (evaluating 'new Intl.Locale('en', options)')"
+test/intl402/Locale/constructor-options-casefirst-invalid.js:
+  default: 'Test262Error:  is an invalid caseFirst option value Expected a RangeError but got a TypeError'
+  strict mode: 'Test262Error:  is an invalid caseFirst option value Expected a RangeError but got a TypeError'
+test/intl402/Locale/constructor-options-casefirst-valid.js:
+  default: "TypeError: undefined is not a constructor (evaluating 'new Intl.Locale('en', options)')"
+  strict mode: "TypeError: undefined is not a constructor (evaluating 'new Intl.Locale('en', options)')"
+test/intl402/Locale/constructor-options-collation-invalid.js:
+  default: 'Test262Error: a is an invalid collation option value Expected a RangeError but got a TypeError'
+  strict mode: 'Test262Error: a is an invalid collation option value Expected a RangeError but got a TypeError'
+test/intl402/Locale/constructor-options-collation-valid.js:
+  default: "TypeError: undefined is not a constructor (evaluating 'new Intl.Locale('en', options)')"
+  strict mode: "TypeError: undefined is not a constructor (evaluating 'new Intl.Locale('en', options)')"
+test/intl402/Locale/constructor-options-hourcycle-invalid.js:
+  default: 'Test262Error:  is an invalid hourCycle option value Expected a RangeError but got a TypeError'
+  strict mode: 'Test262Error:  is an invalid hourCycle option value Expected a RangeError but got a TypeError'
+test/intl402/Locale/constructor-options-hourcycle-valid.js:
+  default: "TypeError: undefined is not a constructor (evaluating 'new Intl.Locale('en', options)')"
+  strict mode: "TypeError: undefined is not a constructor (evaluating 'new Intl.Locale('en', options)')"
+test/intl402/Locale/constructor-options-language-grandfathered.js:
+  default: 'Test262Error: Expected a RangeError but got a TypeError'
+  strict mode: 'Test262Error: Expected a RangeError but got a TypeError'
 test/intl402/Locale/constructor-options-language-invalid.js:
   default: 'Test262Error:  is an invalid language option value Expected a RangeError but got a TypeError'
   strict mode: 'Test262Error:  is an invalid language option value Expected a RangeError but got a TypeError'
 test/intl402/Locale/constructor-options-language-valid.js:
   default: "TypeError: undefined is not a constructor (evaluating 'new Intl.Locale('en', options)')"
   strict mode: "TypeError: undefined is not a constructor (evaluating 'new Intl.Locale('en', options)')"
+test/intl402/Locale/constructor-options-numberingsystem-invalid.js:
+  default: 'Test262Error: a is an invalid numberingSystem option value Expected a RangeError but got a TypeError'
+  strict mode: 'Test262Error: a is an invalid numberingSystem option value Expected a RangeError but got a TypeError'
+test/intl402/Locale/constructor-options-numberingsystem-valid.js:
+  default: "TypeError: undefined is not a constructor (evaluating 'new Intl.Locale('en', options)')"
+  strict mode: "TypeError: undefined is not a constructor (evaluating 'new Intl.Locale('en', options)')"
+test/intl402/Locale/constructor-options-numeric-valid.js:
+  default: "TypeError: undefined is not a constructor (evaluating 'new Intl.Locale('en', options)')"
+  strict mode: "TypeError: undefined is not a constructor (evaluating 'new Intl.Locale('en', options)')"
 test/intl402/Locale/constructor-options-region-invalid.js:
   default: 'Test262Error:  is an invalid region option value Expected a RangeError but got a TypeError'
   strict mode: 'Test262Error:  is an invalid region option value Expected a RangeError but got a TypeError'
@@ -1908,11 +1961,41 @@ test/intl402/Locale/constructor-options-script-invalid.js:
   default: 'Test262Error:  is an invalid script option value Expected a RangeError but got a TypeError'
   strict mode: 'Test262Error:  is an invalid script option value Expected a RangeError but got a TypeError'
 test/intl402/Locale/constructor-options-script-valid.js:
-  default: "TypeError: undefined is not a constructor (evaluating 'new Intl.Locale(\"en\", options)')"
-  strict mode: "TypeError: undefined is not a constructor (evaluating 'new Intl.Locale(\"en\", options)')"
+  default: "TypeError: undefined is not a constructor (evaluating 'new Intl.Locale('en', options)')"
+  strict mode: "TypeError: undefined is not a constructor (evaluating 'new Intl.Locale('en', options)')"
+test/intl402/Locale/constructor-parse-twice.js:
+  default: "TypeError: undefined is not a constructor (evaluating 'new Intl.Locale(tag, options)')"
+  strict mode: "TypeError: undefined is not a constructor (evaluating 'new Intl.Locale(tag, options)')"
+test/intl402/Locale/constructor-tag-tostring.js:
+  default: 'Test262Error: Expected a CustomError but got a TypeError'
+  strict mode: 'Test262Error: Expected a CustomError but got a TypeError'
+test/intl402/Locale/constructor-unicode-ext-invalid.js:
+  default: 'Test262Error: Expected a RangeError but got a TypeError'
+  strict mode: 'Test262Error: Expected a RangeError but got a TypeError'
+test/intl402/Locale/constructor-unicode-ext-valid.js:
+  default: "TypeError: undefined is not a constructor (evaluating 'new Intl.Locale(langtag)')"
+  strict mode: "TypeError: undefined is not a constructor (evaluating 'new Intl.Locale(langtag)')"
+test/intl402/Locale/extensions-grandfathered.js:
+  default: "TypeError: undefined is not a constructor (evaluating 'new Intl.Locale(tag, options)')"
+  strict mode: "TypeError: undefined is not a constructor (evaluating 'new Intl.Locale(tag, options)')"
+test/intl402/Locale/extensions-private.js:
+  default: "TypeError: undefined is not a constructor (evaluating 'new Intl.Locale(\"x-default\", {"
+  strict mode: "TypeError: undefined is not a constructor (evaluating 'new Intl.Locale(\"x-default\", {"
 test/intl402/Locale/function-prototype.js:
   default: "TypeError: undefined is not an object (evaluating 'Object.getPrototypeOf(Intl.Locale)')"
   strict mode: "TypeError: undefined is not an object (evaluating 'Object.getPrototypeOf(Intl.Locale)')"
+test/intl402/Locale/getters-grandfathered.js:
+  default: "TypeError: undefined is not a constructor (evaluating 'new Intl.Locale(\"i-default\")')"
+  strict mode: "TypeError: undefined is not a constructor (evaluating 'new Intl.Locale(\"i-default\")')"
+test/intl402/Locale/getters-missing.js:
+  default: "TypeError: undefined is not a constructor (evaluating 'new Intl.Locale(\"sv\")')"
+  strict mode: "TypeError: undefined is not a constructor (evaluating 'new Intl.Locale(\"sv\")')"
+test/intl402/Locale/getters-privateuse.js:
+  default: "TypeError: undefined is not a constructor (evaluating 'new Intl.Locale(\"x-private\")')"
+  strict mode: "TypeError: undefined is not a constructor (evaluating 'new Intl.Locale(\"x-private\")')"
+test/intl402/Locale/getters.js:
+  default: "TypeError: undefined is not a constructor (evaluating 'new Intl.Locale(langtag)')"
+  strict mode: "TypeError: undefined is not a constructor (evaluating 'new Intl.Locale(langtag)')"
 test/intl402/Locale/instance-extensibility.js:
   default: "TypeError: undefined is not a constructor (evaluating 'new Intl.Locale('en')')"
   strict mode: "TypeError: undefined is not a constructor (evaluating 'new Intl.Locale('en')')"
@@ -1925,13 +2008,34 @@ test/intl402/Locale/invalid-tag-throws.js:
 test/intl402/Locale/length.js:
   default: "TypeError: undefined is not an object (evaluating 'Object.getOwnPropertyDescriptor(obj, name)')"
   strict mode: "TypeError: undefined is not an object (evaluating 'Object.getOwnPropertyDescriptor(obj, name)')"
+test/intl402/Locale/likely-subtags-grandfathered.js:
+  default: 'Test262Error: Expected SameValue(«en-GB-oed», Â«en-GB-oxendict») to be true'
+  strict mode: 'Test262Error: Expected SameValue(«en-GB-oed», Â«en-GB-oxendict») to be true'
 test/intl402/Locale/name.js:
   default: "TypeError: undefined is not an object (evaluating 'Object.getOwnPropertyDescriptor(obj, name)')"
   strict mode: "TypeError: undefined is not an object (evaluating 'Object.getOwnPropertyDescriptor(obj, name)')"
 test/intl402/Locale/prop-desc.js:
-  default: 'Test262Error: typeof Intl.Locale is function Expected SameValue(«undefined», Â«function») to be true'
-  strict mode: 'Test262Error: typeof Intl.Locale is function Expected SameValue(«undefined», Â«function») to be true'
-test/intl402/Locale/prototype/constructor.js:
+  default: 'Test262Error: obj should have an own property Locale'
+  strict mode: 'Test262Error: obj should have an own property Locale'
+test/intl402/Locale/prototype/baseName/prop-desc.js:
+  default: "TypeError: undefined is not an object (evaluating 'Intl.Locale.prototype')"
+  strict mode: "TypeError: undefined is not an object (evaluating 'Intl.Locale.prototype')"
+test/intl402/Locale/prototype/calendar/prop-desc.js:
+  default: "TypeError: undefined is not an object (evaluating 'Intl.Locale.prototype')"
+  strict mode: "TypeError: undefined is not an object (evaluating 'Intl.Locale.prototype')"
+test/intl402/Locale/prototype/caseFirst/prop-desc.js:
+  default: "TypeError: undefined is not an object (evaluating 'Intl.Locale.prototype')"
+  strict mode: "TypeError: undefined is not an object (evaluating 'Intl.Locale.prototype')"
+test/intl402/Locale/prototype/collation/prop-desc.js:
+  default: "TypeError: undefined is not an object (evaluating 'Intl.Locale.prototype')"
+  strict mode: "TypeError: undefined is not an object (evaluating 'Intl.Locale.prototype')"
+test/intl402/Locale/prototype/constructor/prop-desc.js:
+  default: "TypeError: undefined is not an object (evaluating 'Intl.Locale.prototype')"
+  strict mode: "TypeError: undefined is not an object (evaluating 'Intl.Locale.prototype')"
+test/intl402/Locale/prototype/hourCycle/prop-desc.js:
+  default: "TypeError: undefined is not an object (evaluating 'Intl.Locale.prototype')"
+  strict mode: "TypeError: undefined is not an object (evaluating 'Intl.Locale.prototype')"
+test/intl402/Locale/prototype/language/prop-desc.js:
   default: "TypeError: undefined is not an object (evaluating 'Intl.Locale.prototype')"
   strict mode: "TypeError: undefined is not an object (evaluating 'Intl.Locale.prototype')"
 test/intl402/Locale/prototype/maximize/length.js:
@@ -1943,10 +2047,34 @@ test/intl402/Locale/prototype/maximize/name.js:
 test/intl402/Locale/prototype/maximize/prop-desc.js:
   default: "TypeError: undefined is not an object (evaluating 'Intl.Locale.prototype')"
   strict mode: "TypeError: undefined is not an object (evaluating 'Intl.Locale.prototype')"
+test/intl402/Locale/prototype/minimize/length.js:
+  default: "TypeError: undefined is not an object (evaluating 'Intl.Locale.prototype')"
+  strict mode: "TypeError: undefined is not an object (evaluating 'Intl.Locale.prototype')"
+test/intl402/Locale/prototype/minimize/name.js:
+  default: "TypeError: undefined is not an object (evaluating 'Intl.Locale.prototype')"
+  strict mode: "TypeError: undefined is not an object (evaluating 'Intl.Locale.prototype')"
+test/intl402/Locale/prototype/minimize/prop-desc.js:
+  default: "TypeError: undefined is not an object (evaluating 'Intl.Locale.prototype')"
+  strict mode: "TypeError: undefined is not an object (evaluating 'Intl.Locale.prototype')"
+test/intl402/Locale/prototype/numberingSystem/prop-desc.js:
+  default: "TypeError: undefined is not an object (evaluating 'Intl.Locale.prototype')"
+  strict mode: "TypeError: undefined is not an object (evaluating 'Intl.Locale.prototype')"
+test/intl402/Locale/prototype/numeric/prop-desc.js:
+  default: "TypeError: undefined is not an object (evaluating 'Intl.Locale.prototype')"
+  strict mode: "TypeError: undefined is not an object (evaluating 'Intl.Locale.prototype')"
 test/intl402/Locale/prototype/prop-desc.js:
   default: "TypeError: undefined is not an object (evaluating 'Object.getOwnPropertyDescriptor(obj, name)')"
   strict mode: "TypeError: undefined is not an object (evaluating 'Object.getOwnPropertyDescriptor(obj, name)')"
-test/intl402/Locale/prototype/toStringTag.js:
+test/intl402/Locale/prototype/region/prop-desc.js:
+  default: "TypeError: undefined is not an object (evaluating 'Intl.Locale.prototype')"
+  strict mode: "TypeError: undefined is not an object (evaluating 'Intl.Locale.prototype')"
+test/intl402/Locale/prototype/script/prop-desc.js:
+  default: "TypeError: undefined is not an object (evaluating 'Intl.Locale.prototype')"
+  strict mode: "TypeError: undefined is not an object (evaluating 'Intl.Locale.prototype')"
+test/intl402/Locale/prototype/toString/prop-desc.js:
+  default: "TypeError: undefined is not an object (evaluating 'Intl.Locale.prototype')"
+  strict mode: "TypeError: undefined is not an object (evaluating 'Intl.Locale.prototype')"
+test/intl402/Locale/prototype/toStringTag/toStringTag.js:
   default: "TypeError: undefined is not an object (evaluating 'Intl.Locale.prototype')"
   strict mode: "TypeError: undefined is not an object (evaluating 'Intl.Locale.prototype')"
 test/intl402/Number/prototype/toLocaleString/returns-same-results-as-NumberFormat.js:
@@ -1992,8 +2120,8 @@ test/intl402/PluralRules/default-options-object-prototype.js:
   default: 'Test262Error: Expected SameValue(«ordinal», Â«cardinal») to be true'
   strict mode: 'Test262Error: Expected SameValue(«ordinal», Â«cardinal») to be true'
 test/intl402/PluralRules/length.js:
-  default: 'Test262Error: Expected obj[length] to have configurable:true.'
-  strict mode: 'Test262Error: Expected obj[length] to have configurable:true.'
+  default: 'Test262Error: descriptor should be configurable'
+  strict mode: 'Test262Error: descriptor should be configurable'
 test/intl402/TypedArray/prototype/toLocaleString/calls-toLocaleString-number-elements.js:
   default: 'Test262Error: Expected SameValue(«0», Â«à¹\90.à¹\90à¹\90à¹\90») to be true (Testing with Float64Array.)'
   strict mode: 'Test262Error: Expected SameValue(«0», Â«à¹\90.à¹\90à¹\90à¹\90») to be true (Testing with Float64Array.)'
index 625feef..2b4ab88 100644 (file)
@@ -13,5 +13,5 @@ function $DONE(){
   if(!arguments[0])
     __consolePrintHandle__('Test262:AsyncTestComplete');
   else
-    __consolePrintHandle__('Error: ' + arguments[0]);
+    __consolePrintHandle__('Test262:AsyncTestFailure:' + arguments[0]);
 }
index 349b604..6e922f2 100644 (file)
-A harness/compareIterator.js
-M harness/nativeFunctionMatcher.js
-M harness/regExpUtils.js
-M harness/testIntl.js
-M harness/testTypedArray.js
-A harness/wellKnownIntrinsicObjects.js
-A test/annexB/language/eval-code/direct/block-decl-nostrict.js
-A test/annexB/language/eval-code/direct/switch-case-decl-nostrict.js
-A test/annexB/language/eval-code/direct/switch-dflt-decl-nostrict.js
-A test/annexB/language/function-code/block-decl-nested-blocks-with-fun-decl.js
-A test/annexB/language/function-code/block-decl-nostrict.js
-A test/annexB/language/function-code/switch-case-decl-nostrict.js
-A test/annexB/language/function-code/switch-dflt-decl-nostrict.js
-A test/built-ins/Array/prototype/filter/target-array-with-non-writable-property.js
-A test/built-ins/Array/prototype/indexOf/calls-only-has-on-prototype-after-length-zeroed.js
-A test/built-ins/Array/prototype/lastIndexOf/calls-only-has-on-prototype-after-length-zeroed.js
-A test/built-ins/Array/prototype/map/target-array-with-non-writable-property.js
-A test/built-ins/Array/prototype/slice/target-array-with-non-writable-property.js
-A test/built-ins/Array/prototype/splice/property-traps-order-with-species.js
-A test/built-ins/Array/prototype/splice/target-array-with-non-writable-property.js
-M test/built-ins/Atomics/Symbol.toStringTag.js
-M test/built-ins/Atomics/add/bad-range.js
-M test/built-ins/Atomics/add/good-views.js
-M test/built-ins/Atomics/add/non-views.js
-M test/built-ins/Atomics/add/nonshared-int-views.js
-M test/built-ins/Atomics/add/shared-nonint-views.js
-M test/built-ins/Atomics/and/bad-range.js
-M test/built-ins/Atomics/and/good-views.js
-M test/built-ins/Atomics/and/non-views.js
-M test/built-ins/Atomics/and/nonshared-int-views.js
-M test/built-ins/Atomics/and/shared-nonint-views.js
-M test/built-ins/Atomics/compareExchange/bad-range.js
-M test/built-ins/Atomics/compareExchange/good-views.js
-M test/built-ins/Atomics/compareExchange/non-views.js
-M test/built-ins/Atomics/compareExchange/nonshared-int-views.js
-M test/built-ins/Atomics/compareExchange/shared-nonint-views.js
-M test/built-ins/Atomics/exchange/bad-range.js
-M test/built-ins/Atomics/exchange/good-views.js
-M test/built-ins/Atomics/exchange/non-views.js
-M test/built-ins/Atomics/exchange/nonshared-int-views.js
-M test/built-ins/Atomics/exchange/shared-nonint-views.js
-M test/built-ins/Atomics/isLockFree/corner-cases.js
-M test/built-ins/Atomics/isLockFree/value.js
-M test/built-ins/Atomics/load/bad-range.js
-M test/built-ins/Atomics/load/good-views.js
-M test/built-ins/Atomics/load/non-views.js
-M test/built-ins/Atomics/load/nonshared-int-views.js
-M test/built-ins/Atomics/load/shared-nonint-views.js
-M test/built-ins/Atomics/or/bad-range.js
-M test/built-ins/Atomics/or/good-views.js
-M test/built-ins/Atomics/or/non-views.js
-M test/built-ins/Atomics/or/nonshared-int-views.js
-M test/built-ins/Atomics/or/shared-nonint-views.js
-M test/built-ins/Atomics/prop-desc.js
-M test/built-ins/Atomics/proto.js
-M test/built-ins/Atomics/store/bad-range.js
-M test/built-ins/Atomics/store/good-views.js
-M test/built-ins/Atomics/store/non-views.js
-M test/built-ins/Atomics/store/nonshared-int-views.js
-M test/built-ins/Atomics/store/shared-nonint-views.js
-M test/built-ins/Atomics/sub/bad-range.js
-M test/built-ins/Atomics/sub/good-views.js
-M test/built-ins/Atomics/sub/non-views.js
-M test/built-ins/Atomics/sub/nonshared-int-views.js
-M test/built-ins/Atomics/sub/shared-nonint-views.js
-A test/built-ins/Atomics/wait/bad-range.js
-M test/built-ins/Atomics/wait/cannot-suspend-throws.js
-M test/built-ins/Atomics/wait/did-timeout.js
-A test/built-ins/Atomics/wait/false-for-timeout-agent.js
-M test/built-ins/Atomics/wait/false-for-timeout.js
-M test/built-ins/Atomics/wait/good-views.js
-M test/built-ins/Atomics/wait/nan-for-timeout.js
-M test/built-ins/Atomics/wait/negative-index-throws.js
-A test/built-ins/Atomics/wait/negative-timeout-agent.js
-M test/built-ins/Atomics/wait/negative-timeout.js
-M test/built-ins/Atomics/wait/no-spurious-wakeup.js
-M test/built-ins/Atomics/wait/non-int32-typedarray-throws.js
-R069 test/built-ins/Atomics/wait/nonshared-bufferdata-throws.js test/built-ins/Atomics/wait/non-shared-bufferdata-throws.js
-M test/built-ins/Atomics/wait/not-a-typedarray-throws.js
-M test/built-ins/Atomics/wait/not-an-object-throws.js
-M test/built-ins/Atomics/wait/null-bufferdata-throws.js
-A test/built-ins/Atomics/wait/null-for-timeout-agent.js
-M test/built-ins/Atomics/wait/null-for-timeout.js
-A test/built-ins/Atomics/wait/object-for-timeout-agent.js
-M test/built-ins/Atomics/wait/object-for-timeout.js
-M test/built-ins/Atomics/wait/out-of-range-index-throws.js
-A test/built-ins/Atomics/wait/poisoned-object-for-timeout-throws-agent.js
-M test/built-ins/Atomics/wait/poisoned-object-for-timeout-throws.js
-A test/built-ins/Atomics/wait/symbol-for-index-throws-agent.js
-M test/built-ins/Atomics/wait/symbol-for-index-throws.js
-A test/built-ins/Atomics/wait/symbol-for-timeout-throws-agent.js
-M test/built-ins/Atomics/wait/symbol-for-timeout-throws.js
-A test/built-ins/Atomics/wait/symbol-for-value-throws-agent.js
-A test/built-ins/Atomics/wait/symbol-for-value-throws.js
-A test/built-ins/Atomics/wait/true-for-timeout-agent.js
-M test/built-ins/Atomics/wait/true-for-timeout.js
-M test/built-ins/Atomics/wait/undefined-for-timeout.js
-M test/built-ins/Atomics/wait/undefined-index-defaults-to-zero.js
-A test/built-ins/Atomics/wait/value-not-equal.js
-M test/built-ins/Atomics/wait/wait-index-value-not-equal.js
-A test/built-ins/Atomics/wait/waiterlist-block-indexedposition-wake.js
-A test/built-ins/Atomics/wait/waiterlist-order-of-operations-is-fifo.js
-M test/built-ins/Atomics/wait/was-woken-before-timeout.js
-M test/built-ins/Atomics/wait/was-woken.js
-M test/built-ins/Atomics/wake/bad-range.js
-R051 test/built-ins/Atomics/wake/counts.js test/built-ins/Atomics/wake/count-boundary-cases.js
-A test/built-ins/Atomics/wake/count-defaults-to-infinity-missing.js
-A test/built-ins/Atomics/wake/count-defaults-to-infinity-undefined.js
-A test/built-ins/Atomics/wake/count-from-nans.js
-A test/built-ins/Atomics/wake/count-symbol-throws.js
-A test/built-ins/Atomics/wake/count-tointeger-throws-then-wake-throws.js
-M test/built-ins/Atomics/wake/good-views.js
-R094 test/built-ins/Atomics/wake/wake-negative.js test/built-ins/Atomics/wake/negative-count.js
-A test/built-ins/Atomics/wake/negative-index-throws.js
-A test/built-ins/Atomics/wake/non-int32-typedarray-throws.js
-A test/built-ins/Atomics/wake/non-shared-bufferdata-throws.js
-M test/built-ins/Atomics/wake/non-views.js
-M test/built-ins/Atomics/wake/nonshared-int-views.js
-A test/built-ins/Atomics/wake/not-a-typedarray-throws.js
-A test/built-ins/Atomics/wake/not-an-object-throws.js
-A test/built-ins/Atomics/wake/null-bufferdata-throws.js
-A test/built-ins/Atomics/wake/out-of-range-index-throws.js
-M test/built-ins/Atomics/wake/shared-nonint-views.js
-A test/built-ins/Atomics/wake/symbol-for-index-throws.js
-A test/built-ins/Atomics/wake/undefined-index-defaults-to-zero.js
-M test/built-ins/Atomics/wake/wake-all-on-loc.js
-M test/built-ins/Atomics/wake/wake-all.js
-M test/built-ins/Atomics/wake/wake-in-order.js
-M test/built-ins/Atomics/wake/wake-nan.js
-M test/built-ins/Atomics/wake/wake-one.js
-A test/built-ins/Atomics/wake/wake-rewake-noop.js
-M test/built-ins/Atomics/wake/wake-two.js
-A test/built-ins/Atomics/wake/wake-with-no-agents-waiting.js
-A test/built-ins/Atomics/wake/wake-with-no-matching-agents-waiting.js
-M test/built-ins/Atomics/wake/wake-zero.js
-M test/built-ins/Atomics/xor/bad-range.js
-M test/built-ins/Atomics/xor/good-views.js
-M test/built-ins/Atomics/xor/non-views.js
-M test/built-ins/Atomics/xor/nonshared-int-views.js
-M test/built-ins/Atomics/xor/shared-nonint-views.js
-M test/built-ins/BigInt/asIntN/bigint-tobigint-errors.js
-M test/built-ins/BigInt/asIntN/bigint-tobigint-toprimitive.js
-M test/built-ins/BigInt/asIntN/bigint-tobigint-wrapped-values.js
-M test/built-ins/BigInt/asIntN/bits-toindex-errors.js
-M test/built-ins/BigInt/asIntN/bits-toindex-toprimitive.js
-M test/built-ins/BigInt/asIntN/bits-toindex-wrapped-values.js
-M test/built-ins/BigInt/asUintN/bigint-tobigint-errors.js
-M test/built-ins/BigInt/asUintN/bigint-tobigint-toprimitive.js
-M test/built-ins/BigInt/asUintN/bigint-tobigint-wrapped-values.js
-M test/built-ins/BigInt/asUintN/bits-toindex-errors.js
-M test/built-ins/BigInt/asUintN/bits-toindex-toprimitive.js
-M test/built-ins/BigInt/asUintN/bits-toindex-wrapped-values.js
-M test/built-ins/BigInt/constructor-empty-string.js
-M test/built-ins/BigInt/constructor-from-binary-string.js
-M test/built-ins/BigInt/constructor-from-decimal-string.js
-M test/built-ins/BigInt/constructor-from-hex-string.js
-M test/built-ins/BigInt/constructor-from-octal-string.js
-M test/built-ins/BigInt/constructor-from-string-syntax-errors.js
-A test/built-ins/BigInt/constructor-integer.js
-M test/built-ins/BigInt/constructor-trailing-leading-spaces.js
-D test/built-ins/BigInt/issafeinteger-true.js
-D test/built-ins/BigInt/out-of-bounds-integer-rangeerror.js
-M test/built-ins/BigInt/prototype/Symbol.toStringTag.js
-A test/built-ins/BigInt/prototype/toString/default-radix.js
-M test/built-ins/BigInt/prototype/toString/thisbigintvalue-not-valid-throws.js
-A test/built-ins/BigInt/prototype/valueOf/cross-realm.js
-R072 test/built-ins/BigInt/value-of-throws.js test/built-ins/BigInt/tostring-throws.js
-A test/built-ins/BigInt/valueof-throws.js
-M test/built-ins/DataView/prototype/setBigInt64/set-values-return-undefined.js
-A test/built-ins/Function/prototype/bind/length-exceeds-int32.js
-D test/built-ins/Function/prototype/toString/anonymous-intrinsics.js
-M test/built-ins/Function/prototype/toString/bound-function.js
-A test/built-ins/Function/prototype/toString/built-in-function-object.js
-D test/built-ins/Function/prototype/toString/intrinsics.js
-A test/built-ins/Function/prototype/toString/proxy-arrow-function.js
-A test/built-ins/Function/prototype/toString/proxy-async-function.js
-A test/built-ins/Function/prototype/toString/proxy-async-generator-function.js
-A test/built-ins/Function/prototype/toString/proxy-async-generator-method-definition.js
-A test/built-ins/Function/prototype/toString/proxy-async-method-definition.js
-A test/built-ins/Function/prototype/toString/proxy-bound-function.js
-A test/built-ins/Function/prototype/toString/proxy-class.js
-A test/built-ins/Function/prototype/toString/proxy-function-expression.js
-A test/built-ins/Function/prototype/toString/proxy-generator-function.js
-A test/built-ins/Function/prototype/toString/proxy-method-definition.js
-A test/built-ins/Function/prototype/toString/proxy-non-callable-throws.js
-D test/built-ins/Function/prototype/toString/proxy.js
-A test/built-ins/Function/prototype/toString/well-known-intrinsic-object-functions.js
-A test/built-ins/JSON/prop-desc.js
+M harness/doneprintHandle.js
+M test/annexB/language/eval-code/direct/global-block-decl-eval-global-existing-global-init.js
+A test/annexB/language/eval-code/direct/global-block-decl-eval-global-existing-non-enumerable-global-init.js
+M test/annexB/language/eval-code/direct/global-if-decl-else-decl-a-eval-global-existing-global-init.js
+A test/annexB/language/eval-code/direct/global-if-decl-else-decl-a-eval-global-existing-non-enumerable-global-init.js
+M test/annexB/language/eval-code/direct/global-if-decl-else-decl-b-eval-global-existing-global-init.js
+A test/annexB/language/eval-code/direct/global-if-decl-else-decl-b-eval-global-existing-non-enumerable-global-init.js
+M test/annexB/language/eval-code/direct/global-if-decl-else-stmt-eval-global-existing-global-init.js
+A test/annexB/language/eval-code/direct/global-if-decl-else-stmt-eval-global-existing-non-enumerable-global-init.js
+M test/annexB/language/eval-code/direct/global-if-decl-no-else-eval-global-existing-global-init.js
+A test/annexB/language/eval-code/direct/global-if-decl-no-else-eval-global-existing-non-enumerable-global-init.js
+M test/annexB/language/eval-code/direct/global-if-stmt-else-decl-eval-global-existing-global-init.js
+A test/annexB/language/eval-code/direct/global-if-stmt-else-decl-eval-global-existing-non-enumerable-global-init.js
+M test/annexB/language/eval-code/direct/global-switch-case-eval-global-existing-global-init.js
+A test/annexB/language/eval-code/direct/global-switch-case-eval-global-existing-non-enumerable-global-init.js
+M test/annexB/language/eval-code/direct/global-switch-dflt-eval-global-existing-global-init.js
+A test/annexB/language/eval-code/direct/global-switch-dflt-eval-global-existing-non-enumerable-global-init.js
+M test/annexB/language/eval-code/indirect/global-block-decl-eval-global-existing-global-init.js
+A test/annexB/language/eval-code/indirect/global-block-decl-eval-global-existing-non-enumerable-global-init.js
+M test/annexB/language/eval-code/indirect/global-if-decl-else-decl-a-eval-global-existing-global-init.js
+A test/annexB/language/eval-code/indirect/global-if-decl-else-decl-a-eval-global-existing-non-enumerable-global-init.js
+M test/annexB/language/eval-code/indirect/global-if-decl-else-decl-b-eval-global-existing-global-init.js
+A test/annexB/language/eval-code/indirect/global-if-decl-else-decl-b-eval-global-existing-non-enumerable-global-init.js
+M test/annexB/language/eval-code/indirect/global-if-decl-else-stmt-eval-global-existing-global-init.js
+A test/annexB/language/eval-code/indirect/global-if-decl-else-stmt-eval-global-existing-non-enumerable-global-init.js
+M test/annexB/language/eval-code/indirect/global-if-decl-no-else-eval-global-existing-global-init.js
+A test/annexB/language/eval-code/indirect/global-if-decl-no-else-eval-global-existing-non-enumerable-global-init.js
+M test/annexB/language/eval-code/indirect/global-if-stmt-else-decl-eval-global-existing-global-init.js
+A test/annexB/language/eval-code/indirect/global-if-stmt-else-decl-eval-global-existing-non-enumerable-global-init.js
+M test/annexB/language/eval-code/indirect/global-switch-case-eval-global-existing-global-init.js
+A test/annexB/language/eval-code/indirect/global-switch-case-eval-global-existing-non-enumerable-global-init.js
+M test/annexB/language/eval-code/indirect/global-switch-dflt-eval-global-existing-global-init.js
+A test/annexB/language/eval-code/indirect/global-switch-dflt-eval-global-existing-non-enumerable-global-init.js
+A test/annexB/language/global-code/block-decl-global-existing-global-init.js
+A test/annexB/language/global-code/block-decl-global-existing-non-enumerable-global-init.js
+A test/annexB/language/global-code/if-decl-else-decl-a-global-existing-global-init.js
+A test/annexB/language/global-code/if-decl-else-decl-a-global-existing-non-enumerable-global-init.js
+A test/annexB/language/global-code/if-decl-else-decl-b-global-existing-global-init.js
+A test/annexB/language/global-code/if-decl-else-decl-b-global-existing-non-enumerable-global-init.js
+A test/annexB/language/global-code/if-decl-else-stmt-global-existing-global-init.js
+A test/annexB/language/global-code/if-decl-else-stmt-global-existing-non-enumerable-global-init.js
+A test/annexB/language/global-code/if-decl-no-else-global-existing-global-init.js
+A test/annexB/language/global-code/if-decl-no-else-global-existing-non-enumerable-global-init.js
+A test/annexB/language/global-code/if-stmt-else-decl-global-existing-global-init.js
+A test/annexB/language/global-code/if-stmt-else-decl-global-existing-non-enumerable-global-init.js
+A test/annexB/language/global-code/switch-case-global-existing-global-init.js
+A test/annexB/language/global-code/switch-case-global-existing-non-enumerable-global-init.js
+A test/annexB/language/global-code/switch-dflt-global-existing-global-init.js
+A test/annexB/language/global-code/switch-dflt-global-existing-non-enumerable-global-init.js
+R078 test/built-ins/Array/prototype/flatten/array-like-objects.js test/built-ins/Array/prototype/flat/array-like-objects.js
+R061 test/built-ins/Array/prototype/flatten/bound-function-call.js test/built-ins/Array/prototype/flat/bound-function-call.js
+R068 test/built-ins/Array/prototype/flatten/empty-array-elements.js test/built-ins/Array/prototype/flat/empty-array-elements.js
+R061 test/built-ins/Array/prototype/flatten/empty-object-elements.js test/built-ins/Array/prototype/flat/empty-object-elements.js
+A test/built-ins/Array/prototype/flat/length.js
+A test/built-ins/Array/prototype/flat/name.js
+R080 test/built-ins/Array/prototype/flatten/non-numeric-depth-should-not-throw.js test/built-ins/Array/prototype/flat/non-numeric-depth-should-not-throw.js
+R084 test/built-ins/Array/prototype/flatten/non-object-ctor-throws.js test/built-ins/Array/prototype/flat/non-object-ctor-throws.js
+A test/built-ins/Array/prototype/flat/null-undefined-elements.js
+R073 test/built-ins/Array/prototype/flatten/null-undefined-input-throws.js test/built-ins/Array/prototype/flat/null-undefined-input-throws.js
+R064 test/built-ins/Array/prototype/flatten/positive-infinity.js test/built-ins/Array/prototype/flat/positive-infinity.js
+R052 test/built-ins/Array/prototype/flatten/prop-desc.js test/built-ins/Array/prototype/flat/prop-desc.js
+R073 test/built-ins/Array/prototype/flatten/symbol-object-create-null-depth-throws.js test/built-ins/Array/prototype/flat/symbol-object-create-null-depth-throws.js
+D test/built-ins/Array/prototype/flatten/length.js
+D test/built-ins/Array/prototype/flatten/name.js
+D test/built-ins/Array/prototype/flatten/null-undefined-elements.js
+M test/built-ins/AsyncGeneratorPrototype/next/name.js
+M test/built-ins/AsyncGeneratorPrototype/return/name.js
+M test/built-ins/AsyncGeneratorPrototype/throw/name.js
 M test/built-ins/Math/acosh/nan-returns.js
 M test/built-ins/Math/asinh/asinh-specialVals.js
 M test/built-ins/Math/atanh/atanh-specialVals.js
@@ -195,207 +75,205 @@ M test/built-ins/Math/cosh/cosh-specialVals.js
 M test/built-ins/Math/expm1/expm1-specialVals.js
 M test/built-ins/Math/log10/Log10-specialVals.js
 M test/built-ins/Math/log2/log2-basicTests.js
-M test/built-ins/Math/prop-desc.js
 M test/built-ins/Math/sign/sign-specialVals.js
 M test/built-ins/Math/sinh/sinh-specialVals.js
 M test/built-ins/Math/tanh/tanh-specialVals.js
 M test/built-ins/Math/trunc/trunc-sampleTests.js
 M test/built-ins/Math/trunc/trunc-specialVals.js
-A test/built-ins/Object/assign/strings-and-symbol-order.js
-A test/built-ins/Object/keys/property-traps-order-with-proxied-array.js
-D test/built-ins/Reflect/Reflect.js
-A test/built-ins/Reflect/prop-desc.js
-D test/built-ins/Reflect/properties.js
-A test/built-ins/RegExp/prototype/Symbol.matchAll/internal-regexp-lastindex-not-zero.js
-A test/built-ins/RegExp/prototype/Symbol.matchAll/isregexp-internal-regexp-is-false.js
-A test/built-ins/RegExp/prototype/Symbol.matchAll/isregexp-internal-regexp-throws.js
-A test/built-ins/RegExp/prototype/Symbol.matchAll/isregexp-this-throws.js
-A test/built-ins/RegExp/prototype/Symbol.matchAll/length.js
-A test/built-ins/RegExp/prototype/Symbol.matchAll/name.js
-A test/built-ins/RegExp/prototype/Symbol.matchAll/prop-desc.js
-A test/built-ins/RegExp/prototype/Symbol.matchAll/regexpcreate-this-throws.js
-A test/built-ins/RegExp/prototype/Symbol.matchAll/species-constructor-get-constructor-throws.js
-A test/built-ins/RegExp/prototype/Symbol.matchAll/species-constructor-get-species-throws.js
-A test/built-ins/RegExp/prototype/Symbol.matchAll/species-constructor-is-not-object-throws.js
-A test/built-ins/RegExp/prototype/Symbol.matchAll/species-constructor-is-undefined.js
-A test/built-ins/RegExp/prototype/Symbol.matchAll/species-constructor-species-is-not-constructor.js
-A test/built-ins/RegExp/prototype/Symbol.matchAll/species-constructor-species-is-null-or-undefined.js
-A test/built-ins/RegExp/prototype/Symbol.matchAll/species-constructor-species-throws.js
-A test/built-ins/RegExp/prototype/Symbol.matchAll/species-constructor.js
-A test/built-ins/RegExp/prototype/Symbol.matchAll/species-regexp-get-global-throws.js
-A test/built-ins/RegExp/prototype/Symbol.matchAll/species-regexp-get-unicode-throws.js
-A test/built-ins/RegExp/prototype/Symbol.matchAll/string-tostring-throws.js
-A test/built-ins/RegExp/prototype/Symbol.matchAll/string-tostring.js
-A test/built-ins/RegExp/prototype/Symbol.matchAll/this-get-flags-throws.js
-A test/built-ins/RegExp/prototype/Symbol.matchAll/this-get-flags.js
-A test/built-ins/RegExp/prototype/Symbol.matchAll/this-lastindex-cached.js
-A test/built-ins/RegExp/prototype/Symbol.matchAll/this-not-object-throws.js
-A test/built-ins/RegExp/prototype/Symbol.matchAll/this-tolength-lastindex-throws.js
-A test/built-ins/RegExp/prototype/Symbol.matchAll/this-tostring-flags-throws.js
-A test/built-ins/RegExp/prototype/Symbol.matchAll/this-tostring-flags.js
-A test/built-ins/RegExpStringIteratorPrototype/Symbol.toStringTag.js
-A test/built-ins/RegExpStringIteratorPrototype/ancestry.js
-A test/built-ins/RegExpStringIteratorPrototype/next/custom-regexpexec-call-throws.js
-A test/built-ins/RegExpStringIteratorPrototype/next/custom-regexpexec-get-throws.js
-A test/built-ins/RegExpStringIteratorPrototype/next/custom-regexpexec-match-get-0-throws.js
-A test/built-ins/RegExpStringIteratorPrototype/next/custom-regexpexec-match-get-0-tostring-throws.js
-A test/built-ins/RegExpStringIteratorPrototype/next/custom-regexpexec-match-get-0-tostring.js
-A test/built-ins/RegExpStringIteratorPrototype/next/custom-regexpexec-not-callable.js
-A test/built-ins/RegExpStringIteratorPrototype/next/custom-regexpexec.js
-A test/built-ins/RegExpStringIteratorPrototype/next/length.js
-A test/built-ins/RegExpStringIteratorPrototype/next/name.js
-A test/built-ins/RegExpStringIteratorPrototype/next/next-iteration-global.js
-A test/built-ins/RegExpStringIteratorPrototype/next/next-iteration.js
-A test/built-ins/RegExpStringIteratorPrototype/next/next-missing-internal-slots.js
-A test/built-ins/RegExpStringIteratorPrototype/next/prop-desc.js
-A test/built-ins/RegExpStringIteratorPrototype/next/regexp-tolength-lastindex-throws.js
-A test/built-ins/RegExpStringIteratorPrototype/next/this-is-not-object-throws.js
-A test/built-ins/String/prototype/matchAll/length.js
-A test/built-ins/String/prototype/matchAll/name.js
-A test/built-ins/String/prototype/matchAll/prop-desc.js
-A test/built-ins/String/prototype/matchAll/regexp-get-matchAll-throws.js
-A test/built-ins/String/prototype/matchAll/regexp-is-null.js
-A test/built-ins/String/prototype/matchAll/regexp-is-undefined.js
-A test/built-ins/String/prototype/matchAll/regexp-matchAll-invocation.js
-A test/built-ins/String/prototype/matchAll/regexp-matchAll-throws.js
-A test/built-ins/String/prototype/matchAll/regexp-prototype-get-matchAll-throws.js
-A test/built-ins/String/prototype/matchAll/regexp-prototype-has-no-matchAll.js
-A test/built-ins/String/prototype/matchAll/regexp-prototype-matchAll-invocation.js
-A test/built-ins/String/prototype/matchAll/regexp-prototype-matchAll-throws.js
-A test/built-ins/String/prototype/matchAll/this-val-non-obj-coercible.js
-A test/built-ins/Symbol/matchAll/cross-realm.js
-A test/built-ins/Symbol/matchAll/prop-desc.js
-M test/harness/testTypedArray.js
-A test/intl402/Array/prototype/toLocaleString/calls-toLocaleString-number-elements.js
-M test/intl402/Intl/getCanonicalLocales/invalid-tags.js
-A test/intl402/Locale/constructor-newtarget-undefined.js
-A test/intl402/Locale/constructor-options-calendar-invalid.js
-A test/intl402/Locale/constructor-options-calendar-valid.js
-A test/intl402/Locale/constructor-options-language-invalid.js
-A test/intl402/Locale/constructor-options-language-valid.js
-A test/intl402/Locale/constructor-options-region-invalid.js
-A test/intl402/Locale/constructor-options-region-valid.js
-A test/intl402/Locale/constructor-options-script-invalid.js
-A test/intl402/Locale/constructor-options-script-valid.js
-A test/intl402/Locale/function-prototype.js
-A test/intl402/Locale/instance-extensibility.js
-A test/intl402/Locale/instance.js
-A test/intl402/Locale/invalid-tag-throws-boolean.js
-A test/intl402/Locale/invalid-tag-throws-null.js
-A test/intl402/Locale/invalid-tag-throws-number.js
-A test/intl402/Locale/invalid-tag-throws-symbol.js
-A test/intl402/Locale/invalid-tag-throws-undefined.js
-A test/intl402/Locale/invalid-tag-throws.js
-A test/intl402/Locale/length.js
-A test/intl402/Locale/name.js
-A test/intl402/Locale/prop-desc.js
-A test/intl402/Locale/prototype/constructor.js
-A test/intl402/Locale/prototype/maximize/length.js
-A test/intl402/Locale/prototype/maximize/name.js
-A test/intl402/Locale/prototype/maximize/prop-desc.js
-A test/intl402/Locale/prototype/prop-desc.js
-A test/intl402/Locale/prototype/toStringTag.js
-A test/intl402/TypedArray/prototype/toLocaleString/calls-toLocaleString-number-elements.js
-M test/language/asi/S7.9_A11_T8.js
-M test/language/asi/S7.9_A4.js
-M test/language/asi/S7.9_A5.1_T1.js
-M test/language/asi/S7.9_A5.3_T1.js
-A test/language/block-scope/syntax/redeclaration/function-declaration-attempt-to-redeclare-with-var-declaration-nested-in-function.js
-M test/language/destructuring/binding/initialization-requires-object-coercible-null.js
-M test/language/destructuring/binding/initialization-requires-object-coercible-undefined.js
-M test/language/destructuring/binding/initialization-returns-normal-completion-for-empty-objects.js
-M test/language/destructuring/binding/syntax/array-elements-with-initializer.js
-M test/language/destructuring/binding/syntax/array-elements-with-object-patterns.js
-M test/language/destructuring/binding/syntax/array-elements-without-initializer.js
-M test/language/destructuring/binding/syntax/array-pattern-with-elisions.js
-M test/language/destructuring/binding/syntax/array-pattern-with-no-elements.js
-M test/language/destructuring/binding/syntax/array-rest-elements.js
-M test/language/destructuring/binding/syntax/object-pattern-with-no-property-list.js
-M test/language/destructuring/binding/syntax/property-list-bindings-elements.js
-M test/language/destructuring/binding/syntax/property-list-followed-by-a-single-comma.js
-M test/language/destructuring/binding/syntax/property-list-single-name-bindings.js
-M test/language/destructuring/binding/syntax/property-list-with-property-list.js
-M test/language/destructuring/binding/syntax/recursive-array-and-object-patterns.js
-R065 test/language/eval-code/direct/block-decl-strict-source.js test/language/eval-code/direct/block-decl-eval-source-is-strict-nostrict.js
-A test/language/eval-code/direct/block-decl-eval-source-is-strict-onlystrict.js
-R068 test/language/eval-code/direct/block-decl-strict-caller.js test/language/eval-code/direct/block-decl-onlystrict.js
-R066 test/language/eval-code/direct/switch-case-decl-strict-source.js test/language/eval-code/direct/switch-case-decl-eval-source-is-strict-nostrict.js
-A test/language/eval-code/direct/switch-case-decl-eval-source-is-strict-onlystrict.js
-R068 test/language/eval-code/direct/switch-case-decl-strict-caller.js test/language/eval-code/direct/switch-case-decl-onlystrict.js
-R066 test/language/eval-code/direct/switch-dflt-decl-strict-source.js test/language/eval-code/direct/switch-dflt-decl-eval-source-is-strict-nostrict.js
-A test/language/eval-code/direct/switch-dflt-decl-eval-source-is-strict-onlystrict.js
-R068 test/language/eval-code/direct/switch-dflt-decl-strict-caller.js test/language/eval-code/direct/switch-dflt-decl-onlystrict.js
-A test/language/expressions/async-arrow-function/await-as-param-ident-nested-arrow-parameter-position.js
-A test/language/expressions/async-arrow-function/await-as-param-nested-arrow-body-position.js
-A test/language/expressions/async-arrow-function/await-as-param-nested-arrow-parameter-position.js
-A test/language/expressions/async-arrow-function/await-as-param-rest-nested-arrow-parameter-position.js
-A test/language/expressions/async-arrow-function/escaped-async-line-terminator.js
-A test/language/expressions/async-generator/generator-created-after-decl-inst.js
-A test/language/expressions/class/class-name-ident-await-escaped-module.js
-A test/language/expressions/class/class-name-ident-await-escaped.js
-A test/language/expressions/class/class-name-ident-await-module.js
-A test/language/expressions/class/class-name-ident-await.js
-A test/language/expressions/class/class-name-ident-let-escaped.js
-A test/language/expressions/class/class-name-ident-let.js
-A test/language/expressions/class/class-name-ident-static-escaped.js
-A test/language/expressions/class/class-name-ident-static.js
-A test/language/expressions/class/class-name-ident-yield-escaped.js
-A test/language/expressions/class/class-name-ident-yield.js
-A test/language/expressions/class/constructor-this-tdz-during-initializers.js
-A test/language/expressions/class/fields-run-once-on-double-super.js
-A test/language/expressions/generators/generator-created-after-decl-inst.js
-A test/language/expressions/greater-than/bigint-and-boolean.js
-A test/language/expressions/greater-than/bigint-and-incomparable-string.js
-A test/language/expressions/greater-than/bigint-and-string.js
+R100 test/built-ins/Object/internals/DefineOwnProperty/consistent-value-regexp-$1.js test/built-ins/Object/internals/DefineOwnProperty/consistent-value-regexp-dollar1.js
+R100 test/built-ins/Object/internals/DefineOwnProperty/consistent-writable-regexp-$1.js test/built-ins/Object/internals/DefineOwnProperty/consistent-writable-regexp-dollar1.js
+M test/intl402/Intl/getCanonicalLocales/descriptor.js
+M test/intl402/Intl/getCanonicalLocales/duplicates.js
+A test/intl402/Locale/constructor-getter-order.js
+A test/intl402/Locale/constructor-locale-object.js
+A test/intl402/Locale/constructor-non-iana-canon.js
+A test/intl402/Locale/constructor-options-casefirst-invalid.js
+A test/intl402/Locale/constructor-options-casefirst-valid.js
+A test/intl402/Locale/constructor-options-collation-invalid.js
+A test/intl402/Locale/constructor-options-collation-valid.js
+A test/intl402/Locale/constructor-options-hourcycle-invalid.js
+A test/intl402/Locale/constructor-options-hourcycle-valid.js
+A test/intl402/Locale/constructor-options-language-grandfathered.js
+M test/intl402/Locale/constructor-options-language-valid.js
+A test/intl402/Locale/constructor-options-numberingsystem-invalid.js
+A test/intl402/Locale/constructor-options-numberingsystem-valid.js
+A test/intl402/Locale/constructor-options-numeric-valid.js
+M test/intl402/Locale/constructor-options-region-valid.js
+M test/intl402/Locale/constructor-options-script-valid.js
+A test/intl402/Locale/constructor-parse-twice.js
+A test/intl402/Locale/constructor-tag-tostring.js
+A test/intl402/Locale/constructor-unicode-ext-invalid.js
+A test/intl402/Locale/constructor-unicode-ext-valid.js
+A test/intl402/Locale/extensions-grandfathered.js
+A test/intl402/Locale/extensions-private.js
+A test/intl402/Locale/getters-grandfathered.js
+A test/intl402/Locale/getters-missing.js
+A test/intl402/Locale/getters-privateuse.js
+A test/intl402/Locale/getters.js
+M test/intl402/Locale/invalid-tag-throws-symbol.js
+A test/intl402/Locale/likely-subtags-grandfathered.js
+M test/intl402/Locale/prop-desc.js
+A test/intl402/Locale/prototype/baseName/prop-desc.js
+A test/intl402/Locale/prototype/calendar/prop-desc.js
+A test/intl402/Locale/prototype/caseFirst/prop-desc.js
+A test/intl402/Locale/prototype/collation/prop-desc.js
+R100 test/intl402/Locale/prototype/constructor.js test/intl402/Locale/prototype/constructor/prop-desc.js
+A test/intl402/Locale/prototype/hourCycle/prop-desc.js
+A test/intl402/Locale/prototype/language/prop-desc.js
+M test/intl402/Locale/prototype/maximize/length.js
+M test/intl402/Locale/prototype/maximize/prop-desc.js
+A test/intl402/Locale/prototype/minimize/length.js
+A test/intl402/Locale/prototype/minimize/name.js
+A test/intl402/Locale/prototype/minimize/prop-desc.js
+A test/intl402/Locale/prototype/numberingSystem/prop-desc.js
+A test/intl402/Locale/prototype/numeric/prop-desc.js
+A test/intl402/Locale/prototype/region/prop-desc.js
+A test/intl402/Locale/prototype/script/prop-desc.js
+A test/intl402/Locale/prototype/toString/prop-desc.js
+R100 test/intl402/Locale/prototype/toStringTag.js test/intl402/Locale/prototype/toStringTag/toStringTag.js
+M test/intl402/Number/prototype/toLocaleString/length.js
+M test/intl402/NumberFormat/length.js
+M test/intl402/NumberFormat/name.js
+M test/intl402/NumberFormat/prop-desc.js
+M test/intl402/PluralRules/length.js
+M test/intl402/PluralRules/name.js
+A test/intl402/PluralRules/prop-desc.js
+M test/language/expressions/addition/bigint-and-number.js
+M test/language/expressions/addition/bigint-arithmetic.js
+M test/language/expressions/addition/bigint-errors.js
+M test/language/expressions/addition/bigint-toprimitive.js
+M test/language/expressions/addition/bigint-wrapped-values.js
+M test/language/expressions/bitwise-and/bigint-and-number.js
+M test/language/expressions/bitwise-and/bigint-errors.js
+M test/language/expressions/bitwise-and/bigint-non-primitive.js
+M test/language/expressions/bitwise-and/bigint-toprimitive.js
+M test/language/expressions/bitwise-and/bigint-wrapped-values.js
+M test/language/expressions/bitwise-not/bigint-non-primitive.js
+M test/language/expressions/bitwise-or/bigint-and-number.js
+M test/language/expressions/bitwise-or/bigint-errors.js
+M test/language/expressions/bitwise-or/bigint-non-primitive.js
+M test/language/expressions/bitwise-or/bigint-toprimitive.js
+M test/language/expressions/bitwise-or/bigint-wrapped-values.js
+M test/language/expressions/bitwise-xor/bigint-and-number.js
+M test/language/expressions/bitwise-xor/bigint-errors.js
+M test/language/expressions/bitwise-xor/bigint-non-primitive.js
+M test/language/expressions/bitwise-xor/bigint-toprimitive.js
+M test/language/expressions/bitwise-xor/bigint-wrapped-values.js
+M test/language/expressions/division/bigint-and-number.js
+M test/language/expressions/division/bigint-arithmetic.js
+M test/language/expressions/division/bigint-complex-infinity.js
+M test/language/expressions/division/bigint-errors.js
+M test/language/expressions/division/bigint-toprimitive.js
+M test/language/expressions/division/bigint-wrapped-values.js
+M test/language/expressions/does-not-equals/bigint-and-bigint.js
+M test/language/expressions/does-not-equals/bigint-and-boolean.js
+M test/language/expressions/does-not-equals/bigint-and-incomparable-primitive.js
+M test/language/expressions/does-not-equals/bigint-and-non-finite.js
+M test/language/expressions/does-not-equals/bigint-and-number-extremes.js
+M test/language/expressions/does-not-equals/bigint-and-number.js
+M test/language/expressions/does-not-equals/bigint-and-object.js
+M test/language/expressions/does-not-equals/bigint-and-string.js
+M test/language/expressions/equals/bigint-and-bigint.js
+M test/language/expressions/equals/bigint-and-boolean.js
+M test/language/expressions/equals/bigint-and-incomparable-primitive.js
+M test/language/expressions/equals/bigint-and-non-finite.js
+M test/language/expressions/equals/bigint-and-number-extremes.js
+M test/language/expressions/equals/bigint-and-number.js
+M test/language/expressions/equals/bigint-and-object.js
+M test/language/expressions/equals/bigint-and-string.js
+M test/language/expressions/exponentiation/bigint-and-number.js
+M test/language/expressions/exponentiation/bigint-arithmetic.js
+M test/language/expressions/exponentiation/bigint-errors.js
+R074 test/language/expressions/exponentiation/bigint-exp-operator-negative-throws.js test/language/expressions/exponentiation/bigint-negative-exponent-throws.js
+M test/language/expressions/exponentiation/bigint-toprimitive.js
+M test/language/expressions/exponentiation/bigint-wrapped-values.js
+M test/language/expressions/exponentiation/bigint-zero-base-zero-exponent.js
+M test/language/expressions/greater-than/11.8.2-1.js
+M test/language/expressions/greater-than/11.8.2-2.js
+M test/language/expressions/greater-than/11.8.2-3.js
+M test/language/expressions/greater-than/11.8.2-4.js
+M test/language/expressions/greater-than/bigint-and-bigint.js
+M test/language/expressions/greater-than/bigint-and-boolean.js
+M test/language/expressions/greater-than/bigint-and-incomparable-string.js
+M test/language/expressions/greater-than/bigint-and-non-finite.js
+M test/language/expressions/greater-than/bigint-and-number-extremes.js
+M test/language/expressions/greater-than/bigint-and-number.js
+M test/language/expressions/greater-than/bigint-and-string.js
 A test/language/expressions/greater-than/bigint-and-symbol.js
-A test/language/expressions/greater-than-or-equal/bigint-and-incomparable-string.js
-A test/language/expressions/greater-than-or-equal/bigint-and-string.js
-A test/language/expressions/less-than/bigint-and-boolean.js
-A test/language/expressions/less-than/bigint-and-incomparable-string.js
-A test/language/expressions/less-than/bigint-and-string.js
+M test/language/expressions/greater-than-or-equal/bigint-and-bigint.js
+M test/language/expressions/greater-than-or-equal/bigint-and-incomparable-string.js
+M test/language/expressions/greater-than-or-equal/bigint-and-non-finite.js
+M test/language/expressions/greater-than-or-equal/bigint-and-number-extremes.js
+M test/language/expressions/greater-than-or-equal/bigint-and-number.js
+M test/language/expressions/greater-than-or-equal/bigint-and-string.js
+M test/language/expressions/left-shift/bigint-and-number.js
+M test/language/expressions/left-shift/bigint-errors.js
+M test/language/expressions/left-shift/bigint-non-primitive.js
+M test/language/expressions/left-shift/bigint-toprimitive.js
+M test/language/expressions/left-shift/bigint-wrapped-values.js
+M test/language/expressions/less-than/bigint-and-bigint.js
+M test/language/expressions/less-than/bigint-and-boolean.js
+M test/language/expressions/less-than/bigint-and-incomparable-string.js
+M test/language/expressions/less-than/bigint-and-non-finite.js
+M test/language/expressions/less-than/bigint-and-number-extremes.js
+M test/language/expressions/less-than/bigint-and-number.js
+M test/language/expressions/less-than/bigint-and-string.js
 A test/language/expressions/less-than/bigint-and-symbol.js
-A test/language/expressions/less-than-or-equal/bigint-and-incomparable-string.js
-A test/language/expressions/less-than-or-equal/bigint-and-string.js
-M test/language/expressions/object/method-definition/generator-super-prop-param.js
-R074 test/language/function-code/block-decl-strict.js test/language/function-code/block-decl-onlystrict.js
-R073 test/language/function-code/switch-case-decl-strict.js test/language/function-code/switch-case-decl-onlystrict.js
-R073 test/language/function-code/switch-dflt-decl-strict.js test/language/function-code/switch-dflt-decl-onlystrict.js
-D test/language/line-terminators/S7.3_A2.3.js
-D test/language/line-terminators/S7.3_A2.4.js
-A test/language/literals/regexp/invalid-optional-lookbehind.js
-A test/language/literals/regexp/invalid-optional-negative-lookbehind.js
-A test/language/literals/regexp/invalid-range-lookbehind.js
-A test/language/literals/regexp/invalid-range-negative-lookbehind.js
-R100 test/language/literals/regexp/u-invalid-quantifiable-assertion.js test/language/literals/regexp/u-invalid-optional-lookahead.js
-A test/language/literals/regexp/u-invalid-optional-lookbehind.js
-A test/language/literals/regexp/u-invalid-optional-negative-lookahead.js
-A test/language/literals/regexp/u-invalid-optional-negative-lookbehind.js
-A test/language/literals/regexp/u-invalid-range-lookahead.js
-A test/language/literals/regexp/u-invalid-range-lookbehind.js
-A test/language/literals/regexp/u-invalid-range-negative-lookahead.js
-A test/language/literals/regexp/u-invalid-range-negative-lookbehind.js
-A test/language/literals/string/line-separator-eval.js
-A test/language/literals/string/line-separator.js
-A test/language/literals/string/paragraph-separator-eval.js
-A test/language/literals/string/paragraph-separator.js
-M test/language/module-code/early-strict-mode.js
-A test/language/statements/async-generator/generator-created-after-decl-inst.js
-M test/language/statements/break/S12.8_A8_T1.js
-M test/language/statements/break/S12.8_A8_T2.js
-A test/language/statements/class/class-name-ident-await-escaped-module.js
-A test/language/statements/class/class-name-ident-await-escaped.js
-A test/language/statements/class/class-name-ident-await-module.js
-A test/language/statements/class/class-name-ident-await.js
-A test/language/statements/class/class-name-ident-let-escaped.js
-A test/language/statements/class/class-name-ident-let.js
-A test/language/statements/class/class-name-ident-static-escaped.js
-A test/language/statements/class/class-name-ident-static.js
-A test/language/statements/class/class-name-ident-yield-escaped.js
-A test/language/statements/class/class-name-ident-yield.js
-M test/language/statements/continue/S12.7_A8_T1.js
-M test/language/statements/continue/S12.7_A8_T2.js
-A test/language/statements/generators/generator-created-after-decl-inst.js
-M test/language/statements/try/early-catch-duplicates.js
-A test/language/statements/try/early-catch-function.js
-M test/language/statements/try/early-catch-lex.js
-M test/language/statements/try/early-catch-var.js
\ No newline at end of file
+M test/language/expressions/less-than-or-equal/11.8.3-1.js
+M test/language/expressions/less-than-or-equal/11.8.3-2.js
+M test/language/expressions/less-than-or-equal/11.8.3-3.js
+M test/language/expressions/less-than-or-equal/11.8.3-4.js
+D test/language/expressions/less-than-or-equal/11.8.3-5.js
+M test/language/expressions/less-than-or-equal/bigint-and-bigint.js
+M test/language/expressions/less-than-or-equal/bigint-and-incomparable-string.js
+M test/language/expressions/less-than-or-equal/bigint-and-non-finite.js
+M test/language/expressions/less-than-or-equal/bigint-and-number-extremes.js
+M test/language/expressions/less-than-or-equal/bigint-and-number.js
+M test/language/expressions/less-than-or-equal/bigint-and-string.js
+M test/language/expressions/modulus/bigint-and-number.js
+M test/language/expressions/modulus/bigint-arithmetic.js
+M test/language/expressions/modulus/bigint-errors.js
+M test/language/expressions/modulus/bigint-modulo-zero.js
+M test/language/expressions/modulus/bigint-toprimitive.js
+M test/language/expressions/modulus/bigint-wrapped-values.js
+M test/language/expressions/multiplication/bigint-and-number.js
+M test/language/expressions/multiplication/bigint-arithmetic.js
+M test/language/expressions/multiplication/bigint-errors.js
+M test/language/expressions/multiplication/bigint-toprimitive.js
+M test/language/expressions/multiplication/bigint-wrapped-values.js
+M test/language/expressions/right-shift/bigint-and-number.js
+M test/language/expressions/right-shift/bigint-errors.js
+M test/language/expressions/right-shift/bigint-non-primitive.js
+M test/language/expressions/right-shift/bigint-toprimitive.js
+M test/language/expressions/right-shift/bigint-wrapped-values.js
+M test/language/expressions/strict-does-not-equals/bigint-and-bigint.js
+M test/language/expressions/strict-does-not-equals/bigint-and-boolean.js
+M test/language/expressions/strict-does-not-equals/bigint-and-incomparable-primitive.js
+M test/language/expressions/strict-does-not-equals/bigint-and-non-finite.js
+M test/language/expressions/strict-does-not-equals/bigint-and-number-extremes.js
+M test/language/expressions/strict-does-not-equals/bigint-and-number.js
+M test/language/expressions/strict-does-not-equals/bigint-and-object.js
+M test/language/expressions/strict-does-not-equals/bigint-and-string.js
+M test/language/expressions/strict-equals/bigint-and-bigint.js
+M test/language/expressions/strict-equals/bigint-and-boolean.js
+M test/language/expressions/strict-equals/bigint-and-incomparable-primitive.js
+M test/language/expressions/strict-equals/bigint-and-non-finite.js
+M test/language/expressions/strict-equals/bigint-and-number-extremes.js
+M test/language/expressions/strict-equals/bigint-and-number.js
+M test/language/expressions/strict-equals/bigint-and-object.js
+M test/language/expressions/strict-equals/bigint-and-string.js
+M test/language/expressions/subtraction/bigint-and-number.js
+M test/language/expressions/subtraction/bigint-arithmetic.js
+M test/language/expressions/subtraction/bigint-errors.js
+M test/language/expressions/subtraction/bigint-toprimitive.js
+M test/language/expressions/subtraction/bigint-wrapped-values.js
+M test/language/expressions/unary-minus/bigint-non-primitive.js
+M test/language/expressions/unary-plus/bigint-throws.js
+M test/language/expressions/unsigned-right-shift/bigint-and-number.js
+M test/language/expressions/unsigned-right-shift/bigint-errors.js
+M test/language/expressions/unsigned-right-shift/bigint-non-primitive.js
+M test/language/expressions/unsigned-right-shift/bigint-toprimitive.js
+M test/language/expressions/unsigned-right-shift/bigint-wrapped-values.js
+A test/language/literals/numeric/numeric-followed-by-ident.js
+A test/language/literals/string/line-continuation-double.js
+A test/language/literals/string/line-continuation-single.js
\ No newline at end of file
index 2a13d17..896d68f 100644 (file)
@@ -2,7 +2,7 @@
 // - src/annex-b-fns/eval-global-existing-global-init.case
 // - src/annex-b-fns/eval-global/direct-block.template
 /*---
-description: Variable binding is set to `undefined` (Block statement in eval code containing a function declaration)
+description: Variable binding is left in place by legacy function hoisting (Block statement in eval code containing a function declaration)
 esid: sec-web-compat-evaldeclarationinstantiation
 es6id: B.3.3.3
 flags: [generated, noStrict]
@@ -12,17 +12,7 @@ info: |
 
     [...]
     i. If varEnvRec is a global Environment Record, then
-       i. Perform ? varEnvRec.CreateGlobalFunctionBinding(F, undefined, true).
-    [...]
-
-    8.1.1.4.18 CreateGlobalFunctionBinding
-
-    [...]
-    5. If existingProp is undefined or existingProp.[[Configurable]] is true,
-       then
-       [...]
-    6. Else,
-       a. Let desc be the PropertyDescriptor{[[Value]]: V }.
+       i. Perform ? varEnvRec.CreateGlobalVarBinding(F, true).
     [...]
 
 ---*/
@@ -35,11 +25,18 @@ Object.defineProperty(fnGlobalObject(), 'f', {
 
 eval(
   'var global = fnGlobalObject();\
-  assert.sameValue(f, undefined, "binding is initialized to `undefined`");\
+  assert.sameValue(f, "x", "binding is not reinitialized");\
   \
   verifyProperty(global, "f", {\
     enumerable: true,\
     writable: true,\
     configurable: false\
-  });{ function f() {  } }'
+  }, { restore: true });{ function f() {  } }'
 );
+
+assert.sameValue(typeof f, "function");
+verifyProperty(global, "f", {
+  enumerable: true,
+  writable: true,
+  configurable: false
+});
diff --git a/JSTests/test262/test/annexB/language/eval-code/direct/global-block-decl-eval-global-existing-non-enumerable-global-init.js b/JSTests/test262/test/annexB/language/eval-code/direct/global-block-decl-eval-global-existing-non-enumerable-global-init.js
new file mode 100644 (file)
index 0000000..b243c84
--- /dev/null
@@ -0,0 +1,42 @@
+// This file was procedurally generated from the following sources:
+// - src/annex-b-fns/eval-global-existing-non-enumerable-global-init.case
+// - src/annex-b-fns/eval-global/direct-block.template
+/*---
+description: Variable binding is left in place by legacy function hoisting. CreateGlobalVariableBinding leaves the binding as non-enumerable even if it has the chance to change it to be enumerable. (Block statement in eval code containing a function declaration)
+esid: sec-web-compat-evaldeclarationinstantiation
+es6id: B.3.3.3
+flags: [generated, noStrict]
+includes: [fnGlobalObject.js, propertyHelper.js]
+info: |
+    B.3.3.3 Changes to EvalDeclarationInstantiation
+
+    [...]
+    i. If varEnvRec is a global Environment Record, then
+       i. Perform ? varEnvRec.CreateGlobalVarBinding(F, true).
+    [...]
+
+---*/
+Object.defineProperty(fnGlobalObject(), 'f', {
+  value: 'x',
+  enumerable: false,
+  writable: true,
+  configurable: true
+});
+
+eval(
+  'var global = fnGlobalObject();\
+  assert.sameValue(f, "x", "binding is not reinitialized");\
+  \
+  verifyProperty(global, "f", {\
+    enumerable: false,\
+    writable: true,\
+    configurable: true\
+  }, { restore: true });{ function f() {  } }'
+);
+
+assert.sameValue(typeof f, "function");
+verifyProperty(global, 'f', {
+  enumerable: false,
+  writable: true,
+  configurable: true
+});
index 00ea957..3f71625 100644 (file)
@@ -2,7 +2,7 @@
 // - src/annex-b-fns/eval-global-existing-global-init.case
 // - src/annex-b-fns/eval-global/direct-if-decl-else-decl-a.template
 /*---
-description: Variable binding is set to `undefined` (IfStatement with a declaration in both statement positions in eval code)
+description: Variable binding is left in place by legacy function hoisting (IfStatement with a declaration in both statement positions in eval code)
 esid: sec-functiondeclarations-in-ifstatement-statement-clauses
 es6id: B.3.3
 flags: [generated, noStrict]
@@ -21,17 +21,7 @@ info: |
 
     [...]
     i. If varEnvRec is a global Environment Record, then
-       i. Perform ? varEnvRec.CreateGlobalFunctionBinding(F, undefined, true).
-    [...]
-
-    8.1.1.4.18 CreateGlobalFunctionBinding
-
-    [...]
-    5. If existingProp is undefined or existingProp.[[Configurable]] is true,
-       then
-       [...]
-    6. Else,
-       a. Let desc be the PropertyDescriptor{[[Value]]: V }.
+       i. Perform ? varEnvRec.CreateGlobalVarBinding(F, true).
     [...]
 
 ---*/
@@ -44,11 +34,18 @@ Object.defineProperty(fnGlobalObject(), 'f', {
 
 eval(
   'var global = fnGlobalObject();\
-  assert.sameValue(f, undefined, "binding is initialized to `undefined`");\
+  assert.sameValue(f, "x", "binding is not reinitialized");\
   \
   verifyProperty(global, "f", {\
     enumerable: true,\
     writable: true,\
     configurable: false\
-  });if (true) function f() {  } else function _f() {}'
+  }, { restore: true });if (true) function f() {  } else function _f() {}'
 );
+
+assert.sameValue(typeof f, "function");
+verifyProperty(global, "f", {
+  enumerable: true,
+  writable: true,
+  configurable: false
+});
diff --git a/JSTests/test262/test/annexB/language/eval-code/direct/global-if-decl-else-decl-a-eval-global-existing-non-enumerable-global-init.js b/JSTests/test262/test/annexB/language/eval-code/direct/global-if-decl-else-decl-a-eval-global-existing-non-enumerable-global-init.js
new file mode 100644 (file)
index 0000000..af2ad02
--- /dev/null
@@ -0,0 +1,51 @@
+// This file was procedurally generated from the following sources:
+// - src/annex-b-fns/eval-global-existing-non-enumerable-global-init.case
+// - src/annex-b-fns/eval-global/direct-if-decl-else-decl-a.template
+/*---
+description: Variable binding is left in place by legacy function hoisting. CreateGlobalVariableBinding leaves the binding as non-enumerable even if it has the chance to change it to be enumerable. (IfStatement with a declaration in both statement positions in eval code)
+esid: sec-functiondeclarations-in-ifstatement-statement-clauses
+es6id: B.3.3
+flags: [generated, noStrict]
+includes: [fnGlobalObject.js, propertyHelper.js]
+info: |
+    The following rules for IfStatement augment those in 13.6:
+
+    IfStatement[Yield, Return]:
+        if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] else Statement[?Yield, ?Return]
+        if ( Expression[In, ?Yield] ) Statement[?Yield, ?Return] else FunctionDeclaration[?Yield]
+        if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] else FunctionDeclaration[?Yield]
+        if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield]
+
+
+    B.3.3.3 Changes to EvalDeclarationInstantiation
+
+    [...]
+    i. If varEnvRec is a global Environment Record, then
+       i. Perform ? varEnvRec.CreateGlobalVarBinding(F, true).
+    [...]
+
+---*/
+Object.defineProperty(fnGlobalObject(), 'f', {
+  value: 'x',
+  enumerable: false,
+  writable: true,
+  configurable: true
+});
+
+eval(
+  'var global = fnGlobalObject();\
+  assert.sameValue(f, "x", "binding is not reinitialized");\
+  \
+  verifyProperty(global, "f", {\
+    enumerable: false,\
+    writable: true,\
+    configurable: true\
+  }, { restore: true });if (true) function f() {  } else function _f() {}'
+);
+
+assert.sameValue(typeof f, "function");
+verifyProperty(global, 'f', {
+  enumerable: false,
+  writable: true,
+  configurable: true
+});
index 5f7133f..4b76578 100644 (file)
@@ -2,7 +2,7 @@
 // - src/annex-b-fns/eval-global-existing-global-init.case
 // - src/annex-b-fns/eval-global/direct-if-decl-else-decl-b.template
 /*---
-description: Variable binding is set to `undefined` (IfStatement with a declaration in both statement positions in eval code)
+description: Variable binding is left in place by legacy function hoisting (IfStatement with a declaration in both statement positions in eval code)
 esid: sec-functiondeclarations-in-ifstatement-statement-clauses
 es6id: B.3.4
 flags: [generated, noStrict]
@@ -21,17 +21,7 @@ info: |
 
     [...]
     i. If varEnvRec is a global Environment Record, then
-       i. Perform ? varEnvRec.CreateGlobalFunctionBinding(F, undefined, true).
-    [...]
-
-    8.1.1.4.18 CreateGlobalFunctionBinding
-
-    [...]
-    5. If existingProp is undefined or existingProp.[[Configurable]] is true,
-       then
-       [...]
-    6. Else,
-       a. Let desc be the PropertyDescriptor{[[Value]]: V }.
+       i. Perform ? varEnvRec.CreateGlobalVarBinding(F, true).
     [...]
 
 ---*/
@@ -44,11 +34,18 @@ Object.defineProperty(fnGlobalObject(), 'f', {
 
 eval(
   'var global = fnGlobalObject();\
-  assert.sameValue(f, undefined, "binding is initialized to `undefined`");\
+  assert.sameValue(f, "x", "binding is not reinitialized");\
   \
   verifyProperty(global, "f", {\
     enumerable: true,\
     writable: true,\
     configurable: false\
-  });if (false) function _f() {} else function f() {  }'
+  }, { restore: true });if (false) function _f() {} else function f() {  }'
 );
+
+assert.sameValue(typeof f, "function");
+verifyProperty(global, "f", {
+  enumerable: true,
+  writable: true,
+  configurable: false
+});
diff --git a/JSTests/test262/test/annexB/language/eval-code/direct/global-if-decl-else-decl-b-eval-global-existing-non-enumerable-global-init.js b/JSTests/test262/test/annexB/language/eval-code/direct/global-if-decl-else-decl-b-eval-global-existing-non-enumerable-global-init.js
new file mode 100644 (file)
index 0000000..86b22c6
--- /dev/null
@@ -0,0 +1,51 @@
+// This file was procedurally generated from the following sources:
+// - src/annex-b-fns/eval-global-existing-non-enumerable-global-init.case
+// - src/annex-b-fns/eval-global/direct-if-decl-else-decl-b.template
+/*---
+description: Variable binding is left in place by legacy function hoisting. CreateGlobalVariableBinding leaves the binding as non-enumerable even if it has the chance to change it to be enumerable. (IfStatement with a declaration in both statement positions in eval code)
+esid: sec-functiondeclarations-in-ifstatement-statement-clauses
+es6id: B.3.4
+flags: [generated, noStrict]
+includes: [fnGlobalObject.js, propertyHelper.js]
+info: |
+    The following rules for IfStatement augment those in 13.6:
+
+    IfStatement[Yield, Return]:
+        if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] else Statement[?Yield, ?Return]
+        if ( Expression[In, ?Yield] ) Statement[?Yield, ?Return] else FunctionDeclaration[?Yield]
+        if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] else FunctionDeclaration[?Yield]
+        if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield]
+
+
+    B.3.3.3 Changes to EvalDeclarationInstantiation
+
+    [...]
+    i. If varEnvRec is a global Environment Record, then
+       i. Perform ? varEnvRec.CreateGlobalVarBinding(F, true).
+    [...]
+
+---*/
+Object.defineProperty(fnGlobalObject(), 'f', {
+  value: 'x',
+  enumerable: false,
+  writable: true,
+  configurable: true
+});
+
+eval(
+  'var global = fnGlobalObject();\
+  assert.sameValue(f, "x", "binding is not reinitialized");\
+  \
+  verifyProperty(global, "f", {\
+    enumerable: false,\
+    writable: true,\
+    configurable: true\
+  }, { restore: true });if (false) function _f() {} else function f() {  }'
+);
+
+assert.sameValue(typeof f, "function");
+verifyProperty(global, 'f', {
+  enumerable: false,
+  writable: true,
+  configurable: true
+});
index 43d20ce..04cc949 100644 (file)
@@ -2,7 +2,7 @@
 // - src/annex-b-fns/eval-global-existing-global-init.case
 // - src/annex-b-fns/eval-global/direct-if-decl-else-stmt.template
 /*---
-description: Variable binding is set to `undefined` (IfStatement with a declaration in the first statement position in eval code)
+description: Variable binding is left in place by legacy function hoisting (IfStatement with a declaration in the first statement position in eval code)
 esid: sec-functiondeclarations-in-ifstatement-statement-clauses
 es6id: B.3.4
 flags: [generated, noStrict]
@@ -21,17 +21,7 @@ info: |
 
     [...]
     i. If varEnvRec is a global Environment Record, then
-       i. Perform ? varEnvRec.CreateGlobalFunctionBinding(F, undefined, true).
-    [...]
-
-    8.1.1.4.18 CreateGlobalFunctionBinding
-
-    [...]
-    5. If existingProp is undefined or existingProp.[[Configurable]] is true,
-       then
-       [...]
-    6. Else,
-       a. Let desc be the PropertyDescriptor{[[Value]]: V }.
+       i. Perform ? varEnvRec.CreateGlobalVarBinding(F, true).
     [...]
 
 ---*/
@@ -44,11 +34,18 @@ Object.defineProperty(fnGlobalObject(), 'f', {
 
 eval(
   'var global = fnGlobalObject();\
-  assert.sameValue(f, undefined, "binding is initialized to `undefined`");\
+  assert.sameValue(f, "x", "binding is not reinitialized");\
   \
   verifyProperty(global, "f", {\
     enumerable: true,\
     writable: true,\
     configurable: false\
-  });if (true) function f() {  } else ;'
+  }, { restore: true });if (true) function f() {  } else ;'
 );
+
+assert.sameValue(typeof f, "function");
+verifyProperty(global, "f", {
+  enumerable: true,
+  writable: true,
+  configurable: false
+});
diff --git a/JSTests/test262/test/annexB/language/eval-code/direct/global-if-decl-else-stmt-eval-global-existing-non-enumerable-global-init.js b/JSTests/test262/test/annexB/language/eval-code/direct/global-if-decl-else-stmt-eval-global-existing-non-enumerable-global-init.js
new file mode 100644 (file)
index 0000000..93a54c8
--- /dev/null
@@ -0,0 +1,51 @@
+// This file was procedurally generated from the following sources:
+// - src/annex-b-fns/eval-global-existing-non-enumerable-global-init.case
+// - src/annex-b-fns/eval-global/direct-if-decl-else-stmt.template
+/*---
+description: Variable binding is left in place by legacy function hoisting. CreateGlobalVariableBinding leaves the binding as non-enumerable even if it has the chance to change it to be enumerable. (IfStatement with a declaration in the first statement position in eval code)
+esid: sec-functiondeclarations-in-ifstatement-statement-clauses
+es6id: B.3.4
+flags: [generated, noStrict]
+includes: [fnGlobalObject.js, propertyHelper.js]
+info: |
+    The following rules for IfStatement augment those in 13.6:
+
+    IfStatement[Yield, Return]:
+        if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] else Statement[?Yield, ?Return]
+        if ( Expression[In, ?Yield] ) Statement[?Yield, ?Return] else FunctionDeclaration[?Yield]
+        if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] else FunctionDeclaration[?Yield]
+        if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield]
+
+
+    B.3.3.3 Changes to EvalDeclarationInstantiation
+
+    [...]
+    i. If varEnvRec is a global Environment Record, then
+       i. Perform ? varEnvRec.CreateGlobalVarBinding(F, true).
+    [...]
+
+---*/
+Object.defineProperty(fnGlobalObject(), 'f', {
+  value: 'x',
+  enumerable: false,
+  writable: true,
+  configurable: true
+});
+
+eval(
+  'var global = fnGlobalObject();\
+  assert.sameValue(f, "x", "binding is not reinitialized");\
+  \
+  verifyProperty(global, "f", {\
+    enumerable: false,\
+    writable: true,\
+    configurable: true\
+  }, { restore: true });if (true) function f() {  } else ;'
+);
+
+assert.sameValue(typeof f, "function");
+verifyProperty(global, 'f', {
+  enumerable: false,
+  writable: true,
+  configurable: true
+});
index 00018f0..84f8eaa 100644 (file)
@@ -2,7 +2,7 @@
 // - src/annex-b-fns/eval-global-existing-global-init.case
 // - src/annex-b-fns/eval-global/direct-if-decl-no-else.template
 /*---
-description: Variable binding is set to `undefined` (IfStatement without an else clause in eval code)
+description: Variable binding is left in place by legacy function hoisting (IfStatement without an else clause in eval code)
 esid: sec-functiondeclarations-in-ifstatement-statement-clauses
 es6id: B.3.4
 flags: [generated, noStrict]
@@ -21,17 +21,7 @@ info: |
 
     [...]
     i. If varEnvRec is a global Environment Record, then
-       i. Perform ? varEnvRec.CreateGlobalFunctionBinding(F, undefined, true).
-    [...]
-
-    8.1.1.4.18 CreateGlobalFunctionBinding
-
-    [...]
-    5. If existingProp is undefined or existingProp.[[Configurable]] is true,
-       then
-       [...]
-    6. Else,
-       a. Let desc be the PropertyDescriptor{[[Value]]: V }.
+       i. Perform ? varEnvRec.CreateGlobalVarBinding(F, true).
     [...]
 
 ---*/
@@ -44,11 +34,18 @@ Object.defineProperty(fnGlobalObject(), 'f', {
 
 eval(
   'var global = fnGlobalObject();\
-  assert.sameValue(f, undefined, "binding is initialized to `undefined`");\
+  assert.sameValue(f, "x", "binding is not reinitialized");\
   \
   verifyProperty(global, "f", {\
     enumerable: true,\
     writable: true,\
     configurable: false\
-  });if (true) function f() {  }'
+  }, { restore: true });if (true) function f() {  }'
 );
+
+assert.sameValue(typeof f, "function");
+verifyProperty(global, "f", {
+  enumerable: true,
+  writable: true,
+  configurable: false
+});
diff --git a/JSTests/test262/test/annexB/language/eval-code/direct/global-if-decl-no-else-eval-global-existing-non-enumerable-global-init.js b/JSTests/test262/test/annexB/language/eval-code/direct/global-if-decl-no-else-eval-global-existing-non-enumerable-global-init.js
new file mode 100644 (file)
index 0000000..3a8fb4c
--- /dev/null
@@ -0,0 +1,51 @@
+// This file was procedurally generated from the following sources:
+// - src/annex-b-fns/eval-global-existing-non-enumerable-global-init.case
+// - src/annex-b-fns/eval-global/direct-if-decl-no-else.template
+/*---
+description: Variable binding is left in place by legacy function hoisting. CreateGlobalVariableBinding leaves the binding as non-enumerable even if it has the chance to change it to be enumerable. (IfStatement without an else clause in eval code)
+esid: sec-functiondeclarations-in-ifstatement-statement-clauses
+es6id: B.3.4
+flags: [generated, noStrict]
+includes: [fnGlobalObject.js, propertyHelper.js]
+info: |
+    The following rules for IfStatement augment those in 13.6:
+
+    IfStatement[Yield, Return]:
+        if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] else Statement[?Yield, ?Return]
+        if ( Expression[In, ?Yield] ) Statement[?Yield, ?Return] else FunctionDeclaration[?Yield]
+        if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] else FunctionDeclaration[?Yield]
+        if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield]
+
+
+    B.3.3.3 Changes to EvalDeclarationInstantiation
+
+    [...]
+    i. If varEnvRec is a global Environment Record, then
+       i. Perform ? varEnvRec.CreateGlobalVarBinding(F, true).
+    [...]
+
+---*/
+Object.defineProperty(fnGlobalObject(), 'f', {
+  value: 'x',
+  enumerable: false,
+  writable: true,
+  configurable: true
+});
+
+eval(
+  'var global = fnGlobalObject();\
+  assert.sameValue(f, "x", "binding is not reinitialized");\
+  \
+  verifyProperty(global, "f", {\
+    enumerable: false,\
+    writable: true,\
+    configurable: true\
+  }, { restore: true });if (true) function f() {  }'
+);
+
+assert.sameValue(typeof f, "function");
+verifyProperty(global, 'f', {
+  enumerable: false,
+  writable: true,
+  configurable: true
+});
index 6162b8f..c921002 100644 (file)
@@ -2,7 +2,7 @@
 // - src/annex-b-fns/eval-global-existing-global-init.case
 // - src/annex-b-fns/eval-global/direct-if-stmt-else-decl.template
 /*---
-description: Variable binding is set to `undefined` (IfStatement with a declaration in the second statement position in eval code)
+description: Variable binding is left in place by legacy function hoisting (IfStatement with a declaration in the second statement position in eval code)
 esid: sec-functiondeclarations-in-ifstatement-statement-clauses
 es6id: B.3.4
 flags: [generated, noStrict]
@@ -21,17 +21,7 @@ info: |
 
     [...]
     i. If varEnvRec is a global Environment Record, then
-       i. Perform ? varEnvRec.CreateGlobalFunctionBinding(F, undefined, true).
-    [...]
-
-    8.1.1.4.18 CreateGlobalFunctionBinding
-
-    [...]
-    5. If existingProp is undefined or existingProp.[[Configurable]] is true,
-       then
-       [...]
-    6. Else,
-       a. Let desc be the PropertyDescriptor{[[Value]]: V }.
+       i. Perform ? varEnvRec.CreateGlobalVarBinding(F, true).
     [...]
 
 ---*/
@@ -44,11 +34,18 @@ Object.defineProperty(fnGlobalObject(), 'f', {
 
 eval(
   'var global = fnGlobalObject();\
-  assert.sameValue(f, undefined, "binding is initialized to `undefined`");\
+  assert.sameValue(f, "x", "binding is not reinitialized");\
   \
   verifyProperty(global, "f", {\
     enumerable: true,\
     writable: true,\
     configurable: false\
-  });if (false) ; else function f() {  }'
+  }, { restore: true });if (false) ; else function f() {  }'
 );
+
+assert.sameValue(typeof f, "function");
+verifyProperty(global, "f", {
+  enumerable: true,
+  writable: true,
+  configurable: false
+});
diff --git a/JSTests/test262/test/annexB/language/eval-code/direct/global-if-stmt-else-decl-eval-global-existing-non-enumerable-global-init.js b/JSTests/test262/test/annexB/language/eval-code/direct/global-if-stmt-else-decl-eval-global-existing-non-enumerable-global-init.js
new file mode 100644 (file)
index 0000000..a94cd19
--- /dev/null
@@ -0,0 +1,51 @@
+// This file was procedurally generated from the following sources:
+// - src/annex-b-fns/eval-global-existing-non-enumerable-global-init.case
+// - src/annex-b-fns/eval-global/direct-if-stmt-else-decl.template
+/*---
+description: Variable binding is left in place by legacy function hoisting. CreateGlobalVariableBinding leaves the binding as non-enumerable even if it has the chance to change it to be enumerable. (IfStatement with a declaration in the second statement position in eval code)
+esid: sec-functiondeclarations-in-ifstatement-statement-clauses
+es6id: B.3.4
+flags: [generated, noStrict]
+includes: [fnGlobalObject.js, propertyHelper.js]
+info: |
+    The following rules for IfStatement augment those in 13.6:
+
+    IfStatement[Yield, Return]:
+        if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] else Statement[?Yield, ?Return]
+        if ( Expression[In, ?Yield] ) Statement[?Yield, ?Return] else FunctionDeclaration[?Yield]
+        if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] else FunctionDeclaration[?Yield]
+        if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield]
+
+
+    B.3.3.3 Changes to EvalDeclarationInstantiation
+
+    [...]
+    i. If varEnvRec is a global Environment Record, then
+       i. Perform ? varEnvRec.CreateGlobalVarBinding(F, true).
+    [...]
+
+---*/
+Object.defineProperty(fnGlobalObject(), 'f', {
+  value: 'x',
+  enumerable: false,
+  writable: true,
+  configurable: true
+});
+
+eval(
+  'var global = fnGlobalObject();\
+  assert.sameValue(f, "x", "binding is not reinitialized");\
+  \
+  verifyProperty(global, "f", {\
+    enumerable: false,\
+    writable: true,\
+    configurable: true\
+  }, { restore: true });if (false) ; else function f() {  }'
+);
+
+assert.sameValue(typeof f, "function");
+verifyProperty(global, 'f', {
+  enumerable: false,
+  writable: true,
+  configurable: true
+});
index 2fcad46..64f56aa 100644 (file)
@@ -2,7 +2,7 @@
 // - src/annex-b-fns/eval-global-existing-global-init.case
 // - src/annex-b-fns/eval-global/direct-switch-case.template
 /*---
-description: Variable binding is set to `undefined` (Function declaration in the `case` clause of a `switch` statement in eval code)
+description: Variable binding is left in place by legacy function hoisting (Function declaration in the `case` clause of a `switch` statement in eval code)
 esid: sec-web-compat-evaldeclarationinstantiation
 es6id: B.3.3.3
 flags: [generated, noStrict]
@@ -12,17 +12,7 @@ info: |
 
     [...]
     i. If varEnvRec is a global Environment Record, then
-       i. Perform ? varEnvRec.CreateGlobalFunctionBinding(F, undefined, true).
-    [...]
-
-    8.1.1.4.18 CreateGlobalFunctionBinding
-
-    [...]
-    5. If existingProp is undefined or existingProp.[[Configurable]] is true,
-       then
-       [...]
-    6. Else,
-       a. Let desc be the PropertyDescriptor{[[Value]]: V }.
+       i. Perform ? varEnvRec.CreateGlobalVarBinding(F, true).
     [...]
 
 ---*/
@@ -35,15 +25,22 @@ Object.defineProperty(fnGlobalObject(), 'f', {
 
 eval(
   'var global = fnGlobalObject();\
-  assert.sameValue(f, undefined, "binding is initialized to `undefined`");\
+  assert.sameValue(f, "x", "binding is not reinitialized");\
   \
   verifyProperty(global, "f", {\
     enumerable: true,\
     writable: true,\
     configurable: false\
-  });switch (1) {' +
+  }, { restore: true });switch (1) {' +
   '  case 1:' +
   '    function f() {  }' +
   '}\
   '
 );
+
+assert.sameValue(typeof f, "function");
+verifyProperty(global, "f", {
+  enumerable: true,
+  writable: true,
+  configurable: false
+});
diff --git a/JSTests/test262/test/annexB/language/eval-code/direct/global-switch-case-eval-global-existing-non-enumerable-global-init.js b/JSTests/test262/test/annexB/language/eval-code/direct/global-switch-case-eval-global-existing-non-enumerable-global-init.js
new file mode 100644 (file)
index 0000000..eef493c
--- /dev/null
@@ -0,0 +1,46 @@
+// This file was procedurally generated from the following sources:
+// - src/annex-b-fns/eval-global-existing-non-enumerable-global-init.case
+// - src/annex-b-fns/eval-global/direct-switch-case.template
+/*---
+description: Variable binding is left in place by legacy function hoisting. CreateGlobalVariableBinding leaves the binding as non-enumerable even if it has the chance to change it to be enumerable. (Function declaration in the `case` clause of a `switch` statement in eval code)
+esid: sec-web-compat-evaldeclarationinstantiation
+es6id: B.3.3.3
+flags: [generated, noStrict]
+includes: [fnGlobalObject.js, propertyHelper.js]
+info: |
+    B.3.3.3 Changes to EvalDeclarationInstantiation
+
+    [...]
+    i. If varEnvRec is a global Environment Record, then
+       i. Perform ? varEnvRec.CreateGlobalVarBinding(F, true).
+    [...]
+
+---*/
+Object.defineProperty(fnGlobalObject(), 'f', {
+  value: 'x',
+  enumerable: false,
+  writable: true,
+  configurable: true
+});
+
+eval(
+  'var global = fnGlobalObject();\
+  assert.sameValue(f, "x", "binding is not reinitialized");\
+  \
+  verifyProperty(global, "f", {\
+    enumerable: false,\
+    writable: true,\
+    configurable: true\
+  }, { restore: true });switch (1) {' +
+  '  case 1:' +
+  '    function f() {  }' +
+  '}\
+  '
+);
+
+assert.sameValue(typeof f, "function");
+verifyProperty(global, 'f', {
+  enumerable: false,
+  writable: true,
+  configurable: true
+});
index 2648596..663804a 100644 (file)
@@ -2,7 +2,7 @@
 // - src/annex-b-fns/eval-global-existing-global-init.case
 // - src/annex-b-fns/eval-global/direct-switch-dflt.template
 /*---
-description: Variable binding is set to `undefined` (Funtion declaration in the `default` clause of a `switch` statement in eval code in the global scope)
+description: Variable binding is left in place by legacy function hoisting (Funtion declaration in the `default` clause of a `switch` statement in eval code in the global scope)
 esid: sec-web-compat-evaldeclarationinstantiation
 es6id: B.3.3.3
 flags: [generated, noStrict]
@@ -12,17 +12,7 @@ info: |
 
     [...]
     i. If varEnvRec is a global Environment Record, then
-       i. Perform ? varEnvRec.CreateGlobalFunctionBinding(F, undefined, true).
-    [...]
-
-    8.1.1.4.18 CreateGlobalFunctionBinding
-
-    [...]
-    5. If existingProp is undefined or existingProp.[[Configurable]] is true,
-       then
-       [...]
-    6. Else,
-       a. Let desc be the PropertyDescriptor{[[Value]]: V }.
+       i. Perform ? varEnvRec.CreateGlobalVarBinding(F, true).
     [...]
 
 ---*/
@@ -35,15 +25,22 @@ Object.defineProperty(fnGlobalObject(), 'f', {
 
 eval(
   'var global = fnGlobalObject();\
-  assert.sameValue(f, undefined, "binding is initialized to `undefined`");\
+  assert.sameValue(f, "x", "binding is not reinitialized");\
   \
   verifyProperty(global, "f", {\
     enumerable: true,\
     writable: true,\
     configurable: false\
-  });switch (1) {' +
+  }, { restore: true });switch (1) {' +
   '  default:' +
   '    function f() {  }' +
   '}\
   '
 );
+
+assert.sameValue(typeof f, "function");
+verifyProperty(global, "f", {
+  enumerable: true,
+  writable: true,
+  configurable: false
+});
diff --git a/JSTests/test262/test/annexB/language/eval-code/direct/global-switch-dflt-eval-global-existing-non-enumerable-global-init.js b/JSTests/test262/test/annexB/language/eval-code/direct/global-switch-dflt-eval-global-existing-non-enumerable-global-init.js
new file mode 100644 (file)
index 0000000..e00f662
--- /dev/null
@@ -0,0 +1,46 @@
+// This file was procedurally generated from the following sources:
+// - src/annex-b-fns/eval-global-existing-non-enumerable-global-init.case
+// - src/annex-b-fns/eval-global/direct-switch-dflt.template
+/*---
+description: Variable binding is left in place by legacy function hoisting. CreateGlobalVariableBinding leaves the binding as non-enumerable even if it has the chance to change it to be enumerable. (Funtion declaration in the `default` clause of a `switch` statement in eval code in the global scope)
+esid: sec-web-compat-evaldeclarationinstantiation
+es6id: B.3.3.3
+flags: [generated, noStrict]
+includes: [fnGlobalObject.js, propertyHelper.js]
+info: |
+    B.3.3.3 Changes to EvalDeclarationInstantiation
+
+    [...]
+    i. If varEnvRec is a global Environment Record, then
+       i. Perform ? varEnvRec.CreateGlobalVarBinding(F, true).
+    [...]
+
+---*/
+Object.defineProperty(fnGlobalObject(), 'f', {
+  value: 'x',
+  enumerable: false,
+  writable: true,
+  configurable: true
+});
+
+eval(
+  'var global = fnGlobalObject();\
+  assert.sameValue(f, "x", "binding is not reinitialized");\
+  \
+  verifyProperty(global, "f", {\
+    enumerable: false,\
+    writable: true,\
+    configurable: true\
+  }, { restore: true });switch (1) {' +
+  '  default:' +
+  '    function f() {  }' +
+  '}\
+  '
+);
+
+assert.sameValue(typeof f, "function");
+verifyProperty(global, 'f', {
+  enumerable: false,
+  writable: true,
+  configurable: true
+});
index e4b70a4..cbed95c 100644 (file)
@@ -2,7 +2,7 @@
 // - src/annex-b-fns/eval-global-existing-global-init.case
 // - src/annex-b-fns/eval-global/indirect-block.template
 /*---
-description: Variable binding is set to `undefined` (Block statement in eval code containing a function declaration)
+description: Variable binding is left in place by legacy function hoisting (Block statement in eval code containing a function declaration)
 esid: sec-web-compat-evaldeclarationinstantiation
 es6id: B.3.3.3
 flags: [generated, noStrict]
@@ -12,17 +12,7 @@ info: |
 
     [...]
     i. If varEnvRec is a global Environment Record, then
-       i. Perform ? varEnvRec.CreateGlobalFunctionBinding(F, undefined, true).
-    [...]
-
-    8.1.1.4.18 CreateGlobalFunctionBinding
-
-    [...]
-    5. If existingProp is undefined or existingProp.[[Configurable]] is true,
-       then
-       [...]
-    6. Else,
-       a. Let desc be the PropertyDescriptor{[[Value]]: V }.
+       i. Perform ? varEnvRec.CreateGlobalVarBinding(F, true).
     [...]
 
 ---*/
@@ -35,11 +25,18 @@ Object.defineProperty(fnGlobalObject(), 'f', {
 
 (0,eval)(
   'var global = fnGlobalObject();\
-  assert.sameValue(f, undefined, "binding is initialized to `undefined`");\
+  assert.sameValue(f, "x", "binding is not reinitialized");\
   \
   verifyProperty(global, "f", {\
     enumerable: true,\
     writable: true,\
     configurable: false\
-  });{ function f() {  } }'
+  }, { restore: true });{ function f() {  } }'
 );
+
+assert.sameValue(typeof f, "function");
+verifyProperty(global, "f", {
+  enumerable: true,
+  writable: true,
+  configurable: false
+});
diff --git a/JSTests/test262/test/annexB/language/eval-code/indirect/global-block-decl-eval-global-existing-non-enumerable-global-init.js b/JSTests/test262/test/annexB/language/eval-code/indirect/global-block-decl-eval-global-existing-non-enumerable-global-init.js
new file mode 100644 (file)
index 0000000..30384c1
--- /dev/null
@@ -0,0 +1,42 @@
+// This file was procedurally generated from the following sources:
+// - src/annex-b-fns/eval-global-existing-non-enumerable-global-init.case
+// - src/annex-b-fns/eval-global/indirect-block.template
+/*---
+description: Variable binding is left in place by legacy function hoisting. CreateGlobalVariableBinding leaves the binding as non-enumerable even if it has the chance to change it to be enumerable. (Block statement in eval code containing a function declaration)
+esid: sec-web-compat-evaldeclarationinstantiation
+es6id: B.3.3.3
+flags: [generated, noStrict]
+includes: [fnGlobalObject.js, propertyHelper.js]
+info: |
+    B.3.3.3 Changes to EvalDeclarationInstantiation
+
+    [...]
+    i. If varEnvRec is a global Environment Record, then
+       i. Perform ? varEnvRec.CreateGlobalVarBinding(F, true).
+    [...]
+
+---*/
+Object.defineProperty(fnGlobalObject(), 'f', {
+  value: 'x',
+  enumerable: false,
+  writable: true,
+  configurable: true
+});
+
+(0,eval)(
+  'var global = fnGlobalObject();\
+  assert.sameValue(f, "x", "binding is not reinitialized");\
+  \
+  verifyProperty(global, "f", {\
+    enumerable: false,\
+    writable: true,\
+    configurable: true\
+  }, { restore: true });{ function f() {  } }'
+);
+
+assert.sameValue(typeof f, "function");
+verifyProperty(global, 'f', {
+  enumerable: false,
+  writable: true,
+  configurable: true
+});
index c4bfe80..6be3b2c 100644 (file)
@@ -2,7 +2,7 @@
 // - src/annex-b-fns/eval-global-existing-global-init.case
 // - src/annex-b-fns/eval-global/indirect-if-decl-else-decl-a.template
 /*---
-description: Variable binding is set to `undefined` (IfStatement with a declaration in both statement positions in eval code)
+description: Variable binding is left in place by legacy function hoisting (IfStatement with a declaration in both statement positions in eval code)
 esid: sec-functiondeclarations-in-ifstatement-statement-clauses
 es6id: B.3.3
 flags: [generated, noStrict]
@@ -21,17 +21,7 @@ info: |
 
     [...]
     i. If varEnvRec is a global Environment Record, then
-       i. Perform ? varEnvRec.CreateGlobalFunctionBinding(F, undefined, true).
-    [...]
-
-    8.1.1.4.18 CreateGlobalFunctionBinding
-
-    [...]
-    5. If existingProp is undefined or existingProp.[[Configurable]] is true,
-       then
-       [...]
-    6. Else,
-       a. Let desc be the PropertyDescriptor{[[Value]]: V }.
+       i. Perform ? varEnvRec.CreateGlobalVarBinding(F, true).
     [...]
 
 ---*/
@@ -44,11 +34,18 @@ Object.defineProperty(fnGlobalObject(), 'f', {
 
 (0,eval)(
   'var global = fnGlobalObject();\
-  assert.sameValue(f, undefined, "binding is initialized to `undefined`");\
+  assert.sameValue(f, "x", "binding is not reinitialized");\
   \
   verifyProperty(global, "f", {\
     enumerable: true,\
     writable: true,\
     configurable: false\
-  });if (true) function f() {  } else function _f() {}'
+  }, { restore: true });if (true) function f() {  } else function _f() {}'
 );
+
+assert.sameValue(typeof f, "function");
+verifyProperty(global, "f", {
+  enumerable: true,
+  writable: true,
+  configurable: false
+});
diff --git a/JSTests/test262/test/annexB/language/eval-code/indirect/global-if-decl-else-decl-a-eval-global-existing-non-enumerable-global-init.js b/JSTests/test262/test/annexB/language/eval-code/indirect/global-if-decl-else-decl-a-eval-global-existing-non-enumerable-global-init.js
new file mode 100644 (file)
index 0000000..2b74b79
--- /dev/null
@@ -0,0 +1,51 @@
+// This file was procedurally generated from the following sources:
+// - src/annex-b-fns/eval-global-existing-non-enumerable-global-init.case
+// - src/annex-b-fns/eval-global/indirect-if-decl-else-decl-a.template
+/*---
+description: Variable binding is left in place by legacy function hoisting. CreateGlobalVariableBinding leaves the binding as non-enumerable even if it has the chance to change it to be enumerable. (IfStatement with a declaration in both statement positions in eval code)
+esid: sec-functiondeclarations-in-ifstatement-statement-clauses
+es6id: B.3.3
+flags: [generated, noStrict]
+includes: [fnGlobalObject.js, propertyHelper.js]
+info: |
+    The following rules for IfStatement augment those in 13.6:
+
+    IfStatement[Yield, Return]:
+        if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] else Statement[?Yield, ?Return]
+        if ( Expression[In, ?Yield] ) Statement[?Yield, ?Return] else FunctionDeclaration[?Yield]
+        if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] else FunctionDeclaration[?Yield]
+        if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield]
+
+
+    B.3.3.3 Changes to EvalDeclarationInstantiation
+
+    [...]
+    i. If varEnvRec is a global Environment Record, then
+       i. Perform ? varEnvRec.CreateGlobalVarBinding(F, true).
+    [...]
+
+---*/
+Object.defineProperty(fnGlobalObject(), 'f', {
+  value: 'x',
+  enumerable: false,
+  writable: true,
+  configurable: true
+});
+
+(0,eval)(
+  'var global = fnGlobalObject();\
+  assert.sameValue(f, "x", "binding is not reinitialized");\
+  \
+  verifyProperty(global, "f", {\
+    enumerable: false,\
+    writable: true,\
+    configurable: true\
+  }, { restore: true });if (true) function f() {  } else function _f() {}'
+);
+
+assert.sameValue(typeof f, "function");
+verifyProperty(global, 'f', {
+  enumerable: false,
+  writable: true,
+  configurable: true
+});
index c5944b8..9e5a5e5 100644 (file)
@@ -2,7 +2,7 @@
 // - src/annex-b-fns/eval-global-existing-global-init.case
 // - src/annex-b-fns/eval-global/indirect-if-decl-else-decl-b.template
 /*---
-description: Variable binding is set to `undefined` (IfStatement with a declaration in both statement positions in eval code)
+description: Variable binding is left in place by legacy function hoisting (IfStatement with a declaration in both statement positions in eval code)
 esid: sec-functiondeclarations-in-ifstatement-statement-clauses
 es6id: B.3.4
 flags: [generated, noStrict]
@@ -21,17 +21,7 @@ info: |
 
     [...]
     i. If varEnvRec is a global Environment Record, then
-       i. Perform ? varEnvRec.CreateGlobalFunctionBinding(F, undefined, true).
-    [...]
-
-    8.1.1.4.18 CreateGlobalFunctionBinding
-
-    [...]
-    5. If existingProp is undefined or existingProp.[[Configurable]] is true,
-       then
-       [...]
-    6. Else,
-       a. Let desc be the PropertyDescriptor{[[Value]]: V }.
+       i. Perform ? varEnvRec.CreateGlobalVarBinding(F, true).
     [...]
 
 ---*/
@@ -44,11 +34,18 @@ Object.defineProperty(fnGlobalObject(), 'f', {
 
 (0,eval)(
   'var global = fnGlobalObject();\
-  assert.sameValue(f, undefined, "binding is initialized to `undefined`");\
+  assert.sameValue(f, "x", "binding is not reinitialized");\
   \
   verifyProperty(global, "f", {\
     enumerable: true,\
     writable: true,\
     configurable: false\
-  });if (false) function _f() {} else function f() {  }'
+  }, { restore: true });if (false) function _f() {} else function f() {  }'
 );
+
+assert.sameValue(typeof f, "function");
+verifyProperty(global, "f", {
+  enumerable: true,
+  writable: true,
+  configurable: false
+});
diff --git a/JSTests/test262/test/annexB/language/eval-code/indirect/global-if-decl-else-decl-b-eval-global-existing-non-enumerable-global-init.js b/JSTests/test262/test/annexB/language/eval-code/indirect/global-if-decl-else-decl-b-eval-global-existing-non-enumerable-global-init.js
new file mode 100644 (file)
index 0000000..8836f45
--- /dev/null
@@ -0,0 +1,51 @@
+// This file was procedurally generated from the following sources:
+// - src/annex-b-fns/eval-global-existing-non-enumerable-global-init.case
+// - src/annex-b-fns/eval-global/indirect-if-decl-else-decl-b.template
+/*---
+description: Variable binding is left in place by legacy function hoisting. CreateGlobalVariableBinding leaves the binding as non-enumerable even if it has the chance to change it to be enumerable. (IfStatement with a declaration in both statement positions in eval code)
+esid: sec-functiondeclarations-in-ifstatement-statement-clauses
+es6id: B.3.4
+flags: [generated, noStrict]
+includes: [fnGlobalObject.js, propertyHelper.js]
+info: |
+    The following rules for IfStatement augment those in 13.6:
+
+    IfStatement[Yield, Return]:
+        if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] else Statement[?Yield, ?Return]
+        if ( Expression[In, ?Yield] ) Statement[?Yield, ?Return] else FunctionDeclaration[?Yield]
+        if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] else FunctionDeclaration[?Yield]
+        if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield]
+
+
+    B.3.3.3 Changes to EvalDeclarationInstantiation
+
+    [...]
+    i. If varEnvRec is a global Environment Record, then
+       i. Perform ? varEnvRec.CreateGlobalVarBinding(F, true).
+    [...]
+
+---*/
+Object.defineProperty(fnGlobalObject(), 'f', {
+  value: 'x',
+  enumerable: false,
+  writable: true,
+  configurable: true
+});
+
+(0,eval)(
+  'var global = fnGlobalObject();\
+  assert.sameValue(f, "x", "binding is not reinitialized");\
+  \
+  verifyProperty(global, "f", {\
+    enumerable: false,\
+    writable: true,\
+    configurable: true\
+  }, { restore: true });if (false) function _f() {} else function f() {  }'
+);
+
+assert.sameValue(typeof f, "function");
+verifyProperty(global, 'f', {
+  enumerable: false,
+  writable: true,
+  configurable: true
+});
index 380d46b..fd2cc3d 100644 (file)
@@ -2,7 +2,7 @@
 // - src/annex-b-fns/eval-global-existing-global-init.case
 // - src/annex-b-fns/eval-global/indirect-if-decl-else-stmt.template
 /*---
-description: Variable binding is set to `undefined` (IfStatement with a declaration in the first statement position in eval code)
+description: Variable binding is left in place by legacy function hoisting (IfStatement with a declaration in the first statement position in eval code)
 esid: sec-functiondeclarations-in-ifstatement-statement-clauses
 es6id: B.3.4
 flags: [generated, noStrict]
@@ -21,17 +21,7 @@ info: |
 
     [...]
     i. If varEnvRec is a global Environment Record, then
-       i. Perform ? varEnvRec.CreateGlobalFunctionBinding(F, undefined, true).
-    [...]
-
-    8.1.1.4.18 CreateGlobalFunctionBinding
-
-    [...]
-    5. If existingProp is undefined or existingProp.[[Configurable]] is true,
-       then
-       [...]
-    6. Else,
-       a. Let desc be the PropertyDescriptor{[[Value]]: V }.
+       i. Perform ? varEnvRec.CreateGlobalVarBinding(F, true).
     [...]
 
 ---*/
@@ -44,11 +34,18 @@ Object.defineProperty(fnGlobalObject(), 'f', {
 
 (0,eval)(
   'var global = fnGlobalObject();\
-  assert.sameValue(f, undefined, "binding is initialized to `undefined`");\
+  assert.sameValue(f, "x", "binding is not reinitialized");\
   \
   verifyProperty(global, "f", {\
     enumerable: true,\
     writable: true,\
     configurable: false\
-  });if (true) function f() {  } else ;'
+  }, { restore: true });if (true) function f() {  } else ;'
 );
+
+assert.sameValue(typeof f, "function");
+verifyProperty(global, "f", {
+  enumerable: true,
+  writable: true,
+  configurable: false
+});
diff --git a/JSTests/test262/test/annexB/language/eval-code/indirect/global-if-decl-else-stmt-eval-global-existing-non-enumerable-global-init.js b/JSTests/test262/test/annexB/language/eval-code/indirect/global-if-decl-else-stmt-eval-global-existing-non-enumerable-global-init.js
new file mode 100644 (file)
index 0000000..4e4e14b
--- /dev/null
@@ -0,0 +1,51 @@
+// This file was procedurally generated from the following sources:
+// - src/annex-b-fns/eval-global-existing-non-enumerable-global-init.case
+// - src/annex-b-fns/eval-global/indirect-if-decl-else-stmt.template
+/*---
+description: Variable binding is left in place by legacy function hoisting. CreateGlobalVariableBinding leaves the binding as non-enumerable even if it has the chance to change it to be enumerable. (IfStatement with a declaration in the first statement position in eval code)
+esid: sec-functiondeclarations-in-ifstatement-statement-clauses
+es6id: B.3.4
+flags: [generated, noStrict]
+includes: [fnGlobalObject.js, propertyHelper.js]
+info: |
+    The following rules for IfStatement augment those in 13.6:
+
+    IfStatement[Yield, Return]:
+        if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] else Statement[?Yield, ?Return]
+        if ( Expression[In, ?Yield] ) Statement[?Yield, ?Return] else FunctionDeclaration[?Yield]
+        if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] else FunctionDeclaration[?Yield]
+        if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield]
+
+
+    B.3.3.3 Changes to EvalDeclarationInstantiation
+
+    [...]
+    i. If varEnvRec is a global Environment Record, then
+       i. Perform ? varEnvRec.CreateGlobalVarBinding(F, true).
+    [...]
+
+---*/
+Object.defineProperty(fnGlobalObject(), 'f', {
+  value: 'x',
+  enumerable: false,
+  writable: true,
+  configurable: true
+});
+
+(0,eval)(
+  'var global = fnGlobalObject();\
+  assert.sameValue(f, "x", "binding is not reinitialized");\
+  \
+  verifyProperty(global, "f", {\
+    enumerable: false,\
+    writable: true,\
+    configurable: true\
+  }, { restore: true });if (true) function f() {  } else ;'
+);
+
+assert.sameValue(typeof f, "function");
+verifyProperty(global, 'f', {
+  enumerable: false,
+  writable: true,
+  configurable: true
+});
index 7663f96..624f423 100644 (file)
@@ -2,7 +2,7 @@
 // - src/annex-b-fns/eval-global-existing-global-init.case
 // - src/annex-b-fns/eval-global/indirect-if-decl-no-else.template
 /*---
-description: Variable binding is set to `undefined` (IfStatement without an else clause in eval code)
+description: Variable binding is left in place by legacy function hoisting (IfStatement without an else clause in eval code)
 esid: sec-functiondeclarations-in-ifstatement-statement-clauses
 es6id: B.3.4
 flags: [generated, noStrict]
@@ -21,17 +21,7 @@ info: |
 
     [...]
     i. If varEnvRec is a global Environment Record, then
-       i. Perform ? varEnvRec.CreateGlobalFunctionBinding(F, undefined, true).
-    [...]
-
-    8.1.1.4.18 CreateGlobalFunctionBinding
-
-    [...]
-    5. If existingProp is undefined or existingProp.[[Configurable]] is true,
-       then
-       [...]
-    6. Else,
-       a. Let desc be the PropertyDescriptor{[[Value]]: V }.
+       i. Perform ? varEnvRec.CreateGlobalVarBinding(F, true).
     [...]
 
 ---*/
@@ -44,11 +34,18 @@ Object.defineProperty(fnGlobalObject(), 'f', {
 
 (0,eval)(
   'var global = fnGlobalObject();\
-  assert.sameValue(f, undefined, "binding is initialized to `undefined`");\
+  assert.sameValue(f, "x", "binding is not reinitialized");\
   \
   verifyProperty(global, "f", {\
     enumerable: true,\
     writable: true,\
     configurable: false\
-  });if (true) function f() {  }'
+  }, { restore: true });if (true) function f() {  }'
 );
+
+assert.sameValue(typeof f, "function");
+verifyProperty(global, "f", {
+  enumerable: true,
+  writable: true,
+  configurable: false
+});
diff --git a/JSTests/test262/test/annexB/language/eval-code/indirect/global-if-decl-no-else-eval-global-existing-non-enumerable-global-init.js b/JSTests/test262/test/annexB/language/eval-code/indirect/global-if-decl-no-else-eval-global-existing-non-enumerable-global-init.js
new file mode 100644 (file)
index 0000000..d381e30
--- /dev/null
@@ -0,0 +1,51 @@
+// This file was procedurally generated from the following sources:
+// - src/annex-b-fns/eval-global-existing-non-enumerable-global-init.case
+// - src/annex-b-fns/eval-global/indirect-if-decl-no-else.template
+/*---
+description: Variable binding is left in place by legacy function hoisting. CreateGlobalVariableBinding leaves the binding as non-enumerable even if it has the chance to change it to be enumerable. (IfStatement without an else clause in eval code)
+esid: sec-functiondeclarations-in-ifstatement-statement-clauses
+es6id: B.3.4
+flags: [generated, noStrict]
+includes: [fnGlobalObject.js, propertyHelper.js]
+info: |
+    The following rules for IfStatement augment those in 13.6:
+
+    IfStatement[Yield, Return]:
+        if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] else Statement[?Yield, ?Return]
+        if ( Expression[In, ?Yield] ) Statement[?Yield, ?Return] else FunctionDeclaration[?Yield]
+        if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] else FunctionDeclaration[?Yield]
+        if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield]
+
+
+    B.3.3.3 Changes to EvalDeclarationInstantiation
+
+    [...]
+    i. If varEnvRec is a global Environment Record, then
+       i. Perform ? varEnvRec.CreateGlobalVarBinding(F, true).
+    [...]
+
+---*/
+Object.defineProperty(fnGlobalObject(), 'f', {
+  value: 'x',
+  enumerable: false,
+  writable: true,
+  configurable: true
+});
+
+(0,eval)(
+  'var global = fnGlobalObject();\
+  assert.sameValue(f, "x", "binding is not reinitialized");\
+  \
+  verifyProperty(global, "f", {\
+    enumerable: false,\
+    writable: true,\
+    configurable: true\
+  }, { restore: true });if (true) function f() {  }'
+);
+
+assert.sameValue(typeof f, "function");
+verifyProperty(global, 'f', {
+  enumerable: false,
+  writable: true,
+  configurable: true
+});
index d78d1c1..e8e7b15 100644 (file)
@@ -2,7 +2,7 @@
 // - src/annex-b-fns/eval-global-existing-global-init.case
 // - src/annex-b-fns/eval-global/indirect-if-stmt-else-decl.template
 /*---
-description: Variable binding is set to `undefined` (IfStatement with a declaration in the second statement position in eval code)
+description: Variable binding is left in place by legacy function hoisting (IfStatement with a declaration in the second statement position in eval code)
 esid: sec-functiondeclarations-in-ifstatement-statement-clauses
 es6id: B.3.4
 flags: [generated, noStrict]
@@ -21,17 +21,7 @@ info: |
 
     [...]
     i. If varEnvRec is a global Environment Record, then
-       i. Perform ? varEnvRec.CreateGlobalFunctionBinding(F, undefined, true).
-    [...]
-
-    8.1.1.4.18 CreateGlobalFunctionBinding
-
-    [...]
-    5. If existingProp is undefined or existingProp.[[Configurable]] is true,
-       then
-       [...]
-    6. Else,
-       a. Let desc be the PropertyDescriptor{[[Value]]: V }.
+       i. Perform ? varEnvRec.CreateGlobalVarBinding(F, true).
     [...]
 
 ---*/
@@ -44,11 +34,18 @@ Object.defineProperty(fnGlobalObject(), 'f', {
 
 (0,eval)(
   'var global = fnGlobalObject();\
-  assert.sameValue(f, undefined, "binding is initialized to `undefined`");\
+  assert.sameValue(f, "x", "binding is not reinitialized");\
   \
   verifyProperty(global, "f", {\
     enumerable: true,\
     writable: true,\
     configurable: false\
-  });if (false) ; else function f() {  }'
+  }, { restore: true });if (false) ; else function f() {  }'
 );
+
+assert.sameValue(typeof f, "function");
+verifyProperty(global, "f", {
+  enumerable: true,
+  writable: true,
+  configurable: false
+});
diff --git a/JSTests/test262/test/annexB/language/eval-code/indirect/global-if-stmt-else-decl-eval-global-existing-non-enumerable-global-init.js b/JSTests/test262/test/annexB/language/eval-code/indirect/global-if-stmt-else-decl-eval-global-existing-non-enumerable-global-init.js
new file mode 100644 (file)
index 0000000..5729a46
--- /dev/null
@@ -0,0 +1,51 @@
+// This file was procedurally generated from the following sources:
+// - src/annex-b-fns/eval-global-existing-non-enumerable-global-init.case
+// - src/annex-b-fns/eval-global/indirect-if-stmt-else-decl.template
+/*---
+description: Variable binding is left in place by legacy function hoisting. CreateGlobalVariableBinding leaves the binding as non-enumerable even if it has the chance to change it to be enumerable. (IfStatement with a declaration in the second statement position in eval code)
+esid: sec-functiondeclarations-in-ifstatement-statement-clauses
+es6id: B.3.4
+flags: [generated, noStrict]
+includes: [fnGlobalObject.js, propertyHelper.js]
+info: |
+    The following rules for IfStatement augment those in 13.6:
+
+    IfStatement[Yield, Return]:
+        if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] else Statement[?Yield, ?Return]
+        if ( Expression[In, ?Yield] ) Statement[?Yield, ?Return] else FunctionDeclaration[?Yield]
+        if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] else FunctionDeclaration[?Yield]
+        if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield]
+
+
+    B.3.3.3 Changes to EvalDeclarationInstantiation
+
+    [...]
+    i. If varEnvRec is a global Environment Record, then
+       i. Perform ? varEnvRec.CreateGlobalVarBinding(F, true).
+    [...]
+
+---*/
+Object.defineProperty(fnGlobalObject(), 'f', {
+  value: 'x',
+  enumerable: false,
+  writable: true,
+  configurable: true
+});
+
+(0,eval)(
+  'var global = fnGlobalObject();\
+  assert.sameValue(f, "x", "binding is not reinitialized");\
+  \
+  verifyProperty(global, "f", {\
+    enumerable: false,\
+    writable: true,\
+    configurable: true\
+  }, { restore: true });if (false) ; else function f() {  }'
+);
+
+assert.sameValue(typeof f, "function");
+verifyProperty(global, 'f', {
+  enumerable: false,
+  writable: true,
+  configurable: true
+});
index 8efb7cf..ec8d209 100644 (file)
@@ -2,7 +2,7 @@
 // - src/annex-b-fns/eval-global-existing-global-init.case
 // - src/annex-b-fns/eval-global/indirect-switch-case.template
 /*---
-description: Variable binding is set to `undefined` (Function declaration in the `case` clause of a `switch` statement in eval code)
+description: Variable binding is left in place by legacy function hoisting (Function declaration in the `case` clause of a `switch` statement in eval code)
 esid: sec-web-compat-evaldeclarationinstantiation
 es6id: B.3.3.3
 flags: [generated, noStrict]
@@ -12,17 +12,7 @@ info: |
 
     [...]
     i. If varEnvRec is a global Environment Record, then
-       i. Perform ? varEnvRec.CreateGlobalFunctionBinding(F, undefined, true).
-    [...]
-
-    8.1.1.4.18 CreateGlobalFunctionBinding
-
-    [...]
-    5. If existingProp is undefined or existingProp.[[Configurable]] is true,
-       then
-       [...]
-    6. Else,
-       a. Let desc be the PropertyDescriptor{[[Value]]: V }.
+       i. Perform ? varEnvRec.CreateGlobalVarBinding(F, true).
     [...]
 
 ---*/
@@ -35,15 +25,22 @@ Object.defineProperty(fnGlobalObject(), 'f', {
 
 (0,eval)(
   'var global = fnGlobalObject();\
-  assert.sameValue(f, undefined, "binding is initialized to `undefined`");\
+  assert.sameValue(f, "x", "binding is not reinitialized");\
   \
   verifyProperty(global, "f", {\
     enumerable: true,\
     writable: true,\
     configurable: false\
-  });switch (1) {' +
+  }, { restore: true });switch (1) {' +
   '  case 1:' +
   '    function f() {  }' +
   '}\
   '
 );
+
+assert.sameValue(typeof f, "function");
+verifyProperty(global, "f", {
+  enumerable: true,
+  writable: true,
+  configurable: false
+});
diff --git a/JSTests/test262/test/annexB/language/eval-code/indirect/global-switch-case-eval-global-existing-non-enumerable-global-init.js b/JSTests/test262/test/annexB/language/eval-code/indirect/global-switch-case-eval-global-existing-non-enumerable-global-init.js
new file mode 100644 (file)
index 0000000..61c6015
--- /dev/null
@@ -0,0 +1,46 @@
+// This file was procedurally generated from the following sources:
+// - src/annex-b-fns/eval-global-existing-non-enumerable-global-init.case
+// - src/annex-b-fns/eval-global/indirect-switch-case.template
+/*---
+description: Variable binding is left in place by legacy function hoisting. CreateGlobalVariableBinding leaves the binding as non-enumerable even if it has the chance to change it to be enumerable. (Function declaration in the `case` clause of a `switch` statement in eval code)
+esid: sec-web-compat-evaldeclarationinstantiation
+es6id: B.3.3.3
+flags: [generated, noStrict]
+includes: [fnGlobalObject.js, propertyHelper.js]
+info: |
+    B.3.3.3 Changes to EvalDeclarationInstantiation
+
+    [...]
+    i. If varEnvRec is a global Environment Record, then
+       i. Perform ? varEnvRec.CreateGlobalVarBinding(F, true).
+    [...]
+
+---*/
+Object.defineProperty(fnGlobalObject(), 'f', {
+  value: 'x',
+  enumerable: false,
+  writable: true,
+  configurable: true
+});
+
+(0,eval)(
+  'var global = fnGlobalObject();\
+  assert.sameValue(f, "x", "binding is not reinitialized");\
+  \
+  verifyProperty(global, "f", {\
+    enumerable: false,\
+    writable: true,\
+    configurable: true\
+  }, { restore: true });switch (1) {' +
+  '  case 1:' +
+  '    function f() {  }' +
+  '}\
+  '
+);
+
+assert.sameValue(typeof f, "function");
+verifyProperty(global, 'f', {
+  enumerable: false,
+  writable: true,
+  configurable: true
+});
index 5f48593..a145b01 100644 (file)
@@ -2,7 +2,7 @@
 // - src/annex-b-fns/eval-global-existing-global-init.case
 // - src/annex-b-fns/eval-global/indirect-switch-dflt.template
 /*---
-description: Variable binding is set to `undefined` (Funtion declaration in the `default` clause of a `switch` statement in eval code in the global scope)
+description: Variable binding is left in place by legacy function hoisting (Funtion declaration in the `default` clause of a `switch` statement in eval code in the global scope)
 esid: sec-web-compat-evaldeclarationinstantiation
 es6id: B.3.3.3
 flags: [generated, noStrict]
@@ -12,17 +12,7 @@ info: |
 
     [...]
     i. If varEnvRec is a global Environment Record, then
-       i. Perform ? varEnvRec.CreateGlobalFunctionBinding(F, undefined, true).
-    [...]
-
-    8.1.1.4.18 CreateGlobalFunctionBinding
-
-    [...]
-    5. If existingProp is undefined or existingProp.[[Configurable]] is true,
-       then
-       [...]
-    6. Else,
-       a. Let desc be the PropertyDescriptor{[[Value]]: V }.
+       i. Perform ? varEnvRec.CreateGlobalVarBinding(F, true).
     [...]
 
 ---*/
@@ -35,15 +25,22 @@ Object.defineProperty(fnGlobalObject(), 'f', {
 
 (0,eval)(
   'var global = fnGlobalObject();\
-  assert.sameValue(f, undefined, "binding is initialized to `undefined`");\
+  assert.sameValue(f, "x", "binding is not reinitialized");\
   \
   verifyProperty(global, "f", {\
     enumerable: true,\
     writable: true,\
     configurable: false\
-  });switch (1) {' +
+  }, { restore: true });switch (1) {' +
   '  default:' +
   '    function f() {  }' +
   '}\
   '
 );
+
+assert.sameValue(typeof f, "function");
+verifyProperty(global, "f", {
+  enumerable: true,
+  writable: true,
+  configurable: false
+});
diff --git a/JSTests/test262/test/annexB/language/eval-code/indirect/global-switch-dflt-eval-global-existing-non-enumerable-global-init.js b/JSTests/test262/test/annexB/language/eval-code/indirect/global-switch-dflt-eval-global-existing-non-enumerable-global-init.js
new file mode 100644 (file)
index 0000000..3ccfd9d
--- /dev/null
@@ -0,0 +1,46 @@
+// This file was procedurally generated from the following sources:
+// - src/annex-b-fns/eval-global-existing-non-enumerable-global-init.case
+// - src/annex-b-fns/eval-global/indirect-switch-dflt.template
+/*---
+description: Variable binding is left in place by legacy function hoisting. CreateGlobalVariableBinding leaves the binding as non-enumerable even if it has the chance to change it to be enumerable. (Funtion declaration in the `default` clause of a `switch` statement in eval code in the global scope)
+esid: sec-web-compat-evaldeclarationinstantiation
+es6id: B.3.3.3
+flags: [generated, noStrict]
+includes: [fnGlobalObject.js, propertyHelper.js]
+info: |
+    B.3.3.3 Changes to EvalDeclarationInstantiation
+
+    [...]
+    i. If varEnvRec is a global Environment Record, then
+       i. Perform ? varEnvRec.CreateGlobalVarBinding(F, true).
+    [...]
+
+---*/
+Object.defineProperty(fnGlobalObject(), 'f', {
+  value: 'x',
+  enumerable: false,
+  writable: true,
+  configurable: true
+});
+
+(0,eval)(
+  'var global = fnGlobalObject();\
+  assert.sameValue(f, "x", "binding is not reinitialized");\
+  \
+  verifyProperty(global, "f", {\
+    enumerable: false,\
+    writable: true,\
+    configurable: true\
+  }, { restore: true });switch (1) {' +
+  '  default:' +
+  '    function f() {  }' +
+  '}\
+  '
+);
+
+assert.sameValue(typeof f, "function");
+verifyProperty(global, 'f', {
+  enumerable: false,
+  writable: true,
+  configurable: true
+});
diff --git a/JSTests/test262/test/annexB/language/global-code/block-decl-global-existing-global-init.js b/JSTests/test262/test/annexB/language/global-code/block-decl-global-existing-global-init.js
new file mode 100644 (file)
index 0000000..9b0bdad
--- /dev/null
@@ -0,0 +1,49 @@
+// This file was procedurally generated from the following sources:
+// - src/annex-b-fns/global-existing-global-init.case
+// - src/annex-b-fns/global/block.template
+/*---
+description: Variable binding is left in place by legacy function hoisting. CreateGlobalVariableBinding leaves the binding as non-enumerable even if it has the chance to change it to be enumerable. (Block statement in the global scope containing a function declaration)
+esid: sec-web-compat-globaldeclarationinstantiation
+es6id: B.3.3.2
+flags: [generated, noStrict]
+includes: [fnGlobalObject.js, propertyHelper.js]
+info: |
+    B.3.3.3 Changes to GlobalDeclarationInstantiation
+
+    [...]
+    Perform ? varEnvRec.CreateGlobalVarBinding(F, true).
+    [...]
+
+---*/
+var global = fnGlobalObject();
+Object.defineProperty(global, 'f', {
+  value: 'x',
+  enumerable: true,
+  writable: true,
+  configurable: false
+});
+
+$262.evalScript(`
+assert.sameValue(f, 'x');
+verifyProperty(global, 'f', {
+  enumerable: true,
+  writable: true,
+  configurable: false
+}, { restore: true });
+`);
+
+$262.evalScript(`
+
+{
+  function f() { return 'inner declaration'; }
+}
+
+`);
+
+$262.evalScript(`
+verifyProperty(global, 'f', {
+  enumerable: true,
+  writable: true,
+  configurable: false
+});
+`);
diff --git a/JSTests/test262/test/annexB/language/global-code/block-decl-global-existing-non-enumerable-global-init.js b/JSTests/test262/test/annexB/language/global-code/block-decl-global-existing-non-enumerable-global-init.js
new file mode 100644 (file)
index 0000000..3c58d28
--- /dev/null
@@ -0,0 +1,50 @@
+// This file was procedurally generated from the following sources:
+// - src/annex-b-fns/global-existing-non-enumerable-global-init.case
+// - src/annex-b-fns/global/block.template
+/*---
+description: Variable binding is left in place by legacy function hoisting. CreateGlobalVariableBinding leaves the binding as non-enumerable even if it has the chance to change it to be enumerable. (Block statement in the global scope containing a function declaration)
+esid: sec-web-compat-globaldeclarationinstantiation
+es6id: B.3.3.2
+flags: [generated, noStrict]
+includes: [fnGlobalObject.js, propertyHelper.js]
+info: |
+    B.3.3.3 Changes to GlobalDeclarationInstantiation
+
+    [...]
+    Perform ? varEnvRec.CreateGlobalVarBinding(F, true).
+    [...]
+
+---*/
+var global = fnGlobalObject();
+Object.defineProperty(global, 'f', {
+  value: 'x',
+  enumerable: false,
+  writable: true,
+  configurable: true
+});
+
+$262.evalScript(`
+assert.sameValue(f, 'x');
+verifyProperty(global, 'f', {
+  enumerable: false,
+  writable: true,
+  configurable: true
+}, { restore: true });
+`);
+
+$262.evalScript(`
+
+{
+  function f() { return 'inner declaration'; }
+}
+
+`);
+
+$262.evalScript(`
+assert.sameValue(f(), 'inner declaration');
+verifyProperty(global, 'f', {
+  enumerable: false,
+  writable: true,
+  configurable: true
+});
+`);
diff --git a/JSTests/test262/test/annexB/language/global-code/if-decl-else-decl-a-global-existing-global-init.js b/JSTests/test262/test/annexB/language/global-code/if-decl-else-decl-a-global-existing-global-init.js
new file mode 100644 (file)
index 0000000..4c929b5
--- /dev/null
@@ -0,0 +1,56 @@
+// This file was procedurally generated from the following sources:
+// - src/annex-b-fns/global-existing-global-init.case
+// - src/annex-b-fns/global/if-decl-else-decl-a.template
+/*---
+description: Variable binding is left in place by legacy function hoisting. CreateGlobalVariableBinding leaves the binding as non-enumerable even if it has the chance to change it to be enumerable. (IfStatement with a declaration in both statement positions in the global scope)
+esid: sec-functiondeclarations-in-ifstatement-statement-clauses
+es6id: B.3.4
+flags: [generated, noStrict]
+includes: [fnGlobalObject.js, propertyHelper.js]
+info: |
+    The following rules for IfStatement augment those in 13.6:
+
+    IfStatement[Yield, Return]:
+        if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] else Statement[?Yield, ?Return]
+        if ( Expression[In, ?Yield] ) Statement[?Yield, ?Return] else FunctionDeclaration[?Yield]
+        if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] else FunctionDeclaration[?Yield]
+        if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield]
+
+
+    B.3.3.3 Changes to GlobalDeclarationInstantiation
+
+    [...]
+    Perform ? varEnvRec.CreateGlobalVarBinding(F, true).
+    [...]
+
+---*/
+var global = fnGlobalObject();
+Object.defineProperty(global, 'f', {
+  value: 'x',
+  enumerable: true,
+  writable: true,
+  configurable: false
+});
+
+$262.evalScript(`
+assert.sameValue(f, 'x');
+verifyProperty(global, 'f', {
+  enumerable: true,
+  writable: true,
+  configurable: false
+}, { restore: true });
+`);
+
+$262.evalScript(`
+
+if (true) function f() { return 'inner declaration'; } else function _f() {}
+
+`);
+
+$262.evalScript(`
+verifyProperty(global, 'f', {
+  enumerable: true,
+  writable: true,
+  configurable: false
+});
+`);
diff --git a/JSTests/test262/test/annexB/language/global-code/if-decl-else-decl-a-global-existing-non-enumerable-global-init.js b/JSTests/test262/test/annexB/language/global-code/if-decl-else-decl-a-global-existing-non-enumerable-global-init.js
new file mode 100644 (file)
index 0000000..b4fc5f1
--- /dev/null
@@ -0,0 +1,57 @@
+// This file was procedurally generated from the following sources:
+// - src/annex-b-fns/global-existing-non-enumerable-global-init.case
+// - src/annex-b-fns/global/if-decl-else-decl-a.template
+/*---
+description: Variable binding is left in place by legacy function hoisting. CreateGlobalVariableBinding leaves the binding as non-enumerable even if it has the chance to change it to be enumerable. (IfStatement with a declaration in both statement positions in the global scope)
+esid: sec-functiondeclarations-in-ifstatement-statement-clauses
+es6id: B.3.4
+flags: [generated, noStrict]
+includes: [fnGlobalObject.js, propertyHelper.js]
+info: |
+    The following rules for IfStatement augment those in 13.6:
+
+    IfStatement[Yield, Return]:
+        if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] else Statement[?Yield, ?Return]
+        if ( Expression[In, ?Yield] ) Statement[?Yield, ?Return] else FunctionDeclaration[?Yield]
+        if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] else FunctionDeclaration[?Yield]
+        if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield]
+
+
+    B.3.3.3 Changes to GlobalDeclarationInstantiation
+
+    [...]
+    Perform ? varEnvRec.CreateGlobalVarBinding(F, true).
+    [...]
+
+---*/
+var global = fnGlobalObject();
+Object.defineProperty(global, 'f', {
+  value: 'x',
+  enumerable: false,
+  writable: true,
+  configurable: true
+});
+
+$262.evalScript(`
+assert.sameValue(f, 'x');
+verifyProperty(global, 'f', {
+  enumerable: false,
+  writable: true,
+  configurable: true
+}, { restore: true });
+`);
+
+$262.evalScript(`
+
+if (true) function f() { return 'inner declaration'; } else function _f() {}
+
+`);
+
+$262.evalScript(`
+assert.sameValue(f(), 'inner declaration');
+verifyProperty(global, 'f', {
+  enumerable: false,
+  writable: true,
+  configurable: true
+});
+`);
diff --git a/JSTests/test262/test/annexB/language/global-code/if-decl-else-decl-b-global-existing-global-init.js b/JSTests/test262/test/annexB/language/global-code/if-decl-else-decl-b-global-existing-global-init.js
new file mode 100644 (file)
index 0000000..f8381f9
--- /dev/null
@@ -0,0 +1,56 @@
+// This file was procedurally generated from the following sources:
+// - src/annex-b-fns/global-existing-global-init.case
+// - src/annex-b-fns/global/if-decl-else-decl-b.template
+/*---
+description: Variable binding is left in place by legacy function hoisting. CreateGlobalVariableBinding leaves the binding as non-enumerable even if it has the chance to change it to be enumerable. (IfStatement with a declaration in both statement positions in the global scope)
+esid: sec-functiondeclarations-in-ifstatement-statement-clauses
+es6id: B.3.4
+flags: [generated, noStrict]
+includes: [fnGlobalObject.js, propertyHelper.js]
+info: |
+    The following rules for IfStatement augment those in 13.6:
+
+    IfStatement[Yield, Return]:
+        if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] else Statement[?Yield, ?Return]
+        if ( Expression[In, ?Yield] ) Statement[?Yield, ?Return] else FunctionDeclaration[?Yield]
+        if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] else FunctionDeclaration[?Yield]
+        if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield]
+
+
+    B.3.3.3 Changes to GlobalDeclarationInstantiation
+
+    [...]
+    Perform ? varEnvRec.CreateGlobalVarBinding(F, true).
+    [...]
+
+---*/
+var global = fnGlobalObject();
+Object.defineProperty(global, 'f', {
+  value: 'x',
+  enumerable: true,
+  writable: true,
+  configurable: false
+});
+
+$262.evalScript(`
+assert.sameValue(f, 'x');
+verifyProperty(global, 'f', {
+  enumerable: true,
+  writable: true,
+  configurable: false
+}, { restore: true });
+`);
+
+$262.evalScript(`
+
+if (false) function _f() {} else function f() { return 'inner declaration'; }
+
+`);
+
+$262.evalScript(`
+verifyProperty(global, 'f', {
+  enumerable: true,
+  writable: true,
+  configurable: false
+});
+`);
diff --git a/JSTests/test262/test/annexB/language/global-code/if-decl-else-decl-b-global-existing-non-enumerable-global-init.js b/JSTests/test262/test/annexB/language/global-code/if-decl-else-decl-b-global-existing-non-enumerable-global-init.js
new file mode 100644 (file)
index 0000000..17f8257
--- /dev/null
@@ -0,0 +1,57 @@
+// This file was procedurally generated from the following sources:
+// - src/annex-b-fns/global-existing-non-enumerable-global-init.case
+// - src/annex-b-fns/global/if-decl-else-decl-b.template
+/*---
+description: Variable binding is left in place by legacy function hoisting. CreateGlobalVariableBinding leaves the binding as non-enumerable even if it has the chance to change it to be enumerable. (IfStatement with a declaration in both statement positions in the global scope)
+esid: sec-functiondeclarations-in-ifstatement-statement-clauses
+es6id: B.3.4
+flags: [generated, noStrict]
+includes: [fnGlobalObject.js, propertyHelper.js]
+info: |
+    The following rules for IfStatement augment those in 13.6:
+
+    IfStatement[Yield, Return]:
+        if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] else Statement[?Yield, ?Return]
+        if ( Expression[In, ?Yield] ) Statement[?Yield, ?Return] else FunctionDeclaration[?Yield]
+        if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] else FunctionDeclaration[?Yield]
+        if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield]
+
+
+    B.3.3.3 Changes to GlobalDeclarationInstantiation
+
+    [...]
+    Perform ? varEnvRec.CreateGlobalVarBinding(F, true).
+    [...]
+
+---*/
+var global = fnGlobalObject();
+Object.defineProperty(global, 'f', {
+  value: 'x',
+  enumerable: false,
+  writable: true,
+  configurable: true
+});
+
+$262.evalScript(`
+assert.sameValue(f, 'x');
+verifyProperty(global, 'f', {
+  enumerable: false,
+  writable: true,
+  configurable: true
+}, { restore: true });
+`);
+
+$262.evalScript(`
+
+if (false) function _f() {} else function f() { return 'inner declaration'; }
+
+`);
+
+$262.evalScript(`
+assert.sameValue(f(), 'inner declaration');
+verifyProperty(global, 'f', {
+  enumerable: false,
+  writable: true,
+  configurable: true
+});
+`);
diff --git a/JSTests/test262/test/annexB/language/global-code/if-decl-else-stmt-global-existing-global-init.js b/JSTests/test262/test/annexB/language/global-code/if-decl-else-stmt-global-existing-global-init.js
new file mode 100644 (file)
index 0000000..1d6b9f3
--- /dev/null
@@ -0,0 +1,56 @@
+// This file was procedurally generated from the following sources:
+// - src/annex-b-fns/global-existing-global-init.case
+// - src/annex-b-fns/global/if-decl-else-stmt.template
+/*---
+description: Variable binding is left in place by legacy function hoisting. CreateGlobalVariableBinding leaves the binding as non-enumerable even if it has the chance to change it to be enumerable. (IfStatement with a declaration in the first statement position in the global scope)
+esid: sec-functiondeclarations-in-ifstatement-statement-clauses
+es6id: B.3.4
+flags: [generated, noStrict]
+includes: [fnGlobalObject.js, propertyHelper.js]
+info: |
+    The following rules for IfStatement augment those in 13.6:
+
+    IfStatement[Yield, Return]:
+        if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] else Statement[?Yield, ?Return]
+        if ( Expression[In, ?Yield] ) Statement[?Yield, ?Return] else FunctionDeclaration[?Yield]
+        if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] else FunctionDeclaration[?Yield]
+        if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield]
+
+
+    B.3.3.3 Changes to GlobalDeclarationInstantiation
+
+    [...]
+    Perform ? varEnvRec.CreateGlobalVarBinding(F, true).
+    [...]
+
+---*/
+var global = fnGlobalObject();
+Object.defineProperty(global, 'f', {
+  value: 'x',
+  enumerable: true,
+  writable: true,
+  configurable: false
+});
+
+$262.evalScript(`
+assert.sameValue(f, 'x');
+verifyProperty(global, 'f', {
+  enumerable: true,
+  writable: true,
+  configurable: false
+}, { restore: true });
+`);
+
+$262.evalScript(`
+
+if (true) function f() { return 'inner declaration'; } else ;
+
+`);
+
+$262.evalScript(`
+verifyProperty(global, 'f', {
+  enumerable: true,
+  writable: true,
+  configurable: false
+});
+`);
diff --git a/JSTests/test262/test/annexB/language/global-code/if-decl-else-stmt-global-existing-non-enumerable-global-init.js b/JSTests/test262/test/annexB/language/global-code/if-decl-else-stmt-global-existing-non-enumerable-global-init.js
new file mode 100644 (file)
index 0000000..cbaccf7
--- /dev/null
@@ -0,0 +1,57 @@
+// This file was procedurally generated from the following sources:
+// - src/annex-b-fns/global-existing-non-enumerable-global-init.case
+// - src/annex-b-fns/global/if-decl-else-stmt.template
+/*---
+description: Variable binding is left in place by legacy function hoisting. CreateGlobalVariableBinding leaves the binding as non-enumerable even if it has the chance to change it to be enumerable. (IfStatement with a declaration in the first statement position in the global scope)
+esid: sec-functiondeclarations-in-ifstatement-statement-clauses
+es6id: B.3.4
+flags: [generated, noStrict]
+includes: [fnGlobalObject.js, propertyHelper.js]
+info: |
+    The following rules for IfStatement augment those in 13.6:
+
+    IfStatement[Yield, Return]:
+        if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] else Statement[?Yield, ?Return]
+        if ( Expression[In, ?Yield] ) Statement[?Yield, ?Return] else FunctionDeclaration[?Yield]
+        if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] else FunctionDeclaration[?Yield]
+        if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield]
+
+
+    B.3.3.3 Changes to GlobalDeclarationInstantiation
+
+    [...]
+    Perform ? varEnvRec.CreateGlobalVarBinding(F, true).
+    [...]
+
+---*/
+var global = fnGlobalObject();
+Object.defineProperty(global, 'f', {
+  value: 'x',
+  enumerable: false,
+  writable: true,
+  configurable: true
+});
+
+$262.evalScript(`
+assert.sameValue(f, 'x');
+verifyProperty(global, 'f', {
+  enumerable: false,
+  writable: true,
+  configurable: true
+}, { restore: true });
+`);
+
+$262.evalScript(`
+
+if (true) function f() { return 'inner declaration'; } else ;
+
+`);
+
+$262.evalScript(`
+assert.sameValue(f(), 'inner declaration');
+verifyProperty(global, 'f', {
+  enumerable: false,
+  writable: true,
+  configurable: true
+});
+`);
diff --git a/JSTests/test262/test/annexB/language/global-code/if-decl-no-else-global-existing-global-init.js b/JSTests/test262/test/annexB/language/global-code/if-decl-no-else-global-existing-global-init.js
new file mode 100644 (file)
index 0000000..f3b9413
--- /dev/null
@@ -0,0 +1,56 @@
+// This file was procedurally generated from the following sources:
+// - src/annex-b-fns/global-existing-global-init.case
+// - src/annex-b-fns/global/if-decl-no-else.template
+/*---
+description: Variable binding is left in place by legacy function hoisting. CreateGlobalVariableBinding leaves the binding as non-enumerable even if it has the chance to change it to be enumerable. (IfStatement without an else clause in the global scope)
+esid: sec-functiondeclarations-in-ifstatement-statement-clauses
+es6id: B.3.4
+flags: [generated, noStrict]
+includes: [fnGlobalObject.js, propertyHelper.js]
+info: |
+    The following rules for IfStatement augment those in 13.6:
+
+    IfStatement[Yield, Return]:
+        if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] else Statement[?Yield, ?Return]
+        if ( Expression[In, ?Yield] ) Statement[?Yield, ?Return] else FunctionDeclaration[?Yield]
+        if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] else FunctionDeclaration[?Yield]
+        if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield]
+
+
+    B.3.3.3 Changes to GlobalDeclarationInstantiation
+
+    [...]
+    Perform ? varEnvRec.CreateGlobalVarBinding(F, true).
+    [...]
+
+---*/
+var global = fnGlobalObject();
+Object.defineProperty(global, 'f', {
+  value: 'x',
+  enumerable: true,
+  writable: true,
+  configurable: false
+});
+
+$262.evalScript(`
+assert.sameValue(f, 'x');
+verifyProperty(global, 'f', {
+  enumerable: true,
+  writable: true,
+  configurable: false
+}, { restore: true });
+`);
+
+$262.evalScript(`
+
+if (true) function f() { return 'inner declaration'; }
+
+`);
+
+$262.evalScript(`
+verifyProperty(global, 'f', {
+  enumerable: true,
+  writable: true,
+  configurable: false
+});
+`);
diff --git a/JSTests/test262/test/annexB/language/global-code/if-decl-no-else-global-existing-non-enumerable-global-init.js b/JSTests/test262/test/annexB/language/global-code/if-decl-no-else-global-existing-non-enumerable-global-init.js
new file mode 100644 (file)
index 0000000..f3767e6
--- /dev/null
@@ -0,0 +1,57 @@
+// This file was procedurally generated from the following sources:
+// - src/annex-b-fns/global-existing-non-enumerable-global-init.case
+// - src/annex-b-fns/global/if-decl-no-else.template
+/*---
+description: Variable binding is left in place by legacy function hoisting. CreateGlobalVariableBinding leaves the binding as non-enumerable even if it has the chance to change it to be enumerable. (IfStatement without an else clause in the global scope)
+esid: sec-functiondeclarations-in-ifstatement-statement-clauses
+es6id: B.3.4
+flags: [generated, noStrict]
+includes: [fnGlobalObject.js, propertyHelper.js]
+info: |
+    The following rules for IfStatement augment those in 13.6:
+
+    IfStatement[Yield, Return]:
+        if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] else Statement[?Yield, ?Return]
+        if ( Expression[In, ?Yield] ) Statement[?Yield, ?Return] else FunctionDeclaration[?Yield]
+        if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] else FunctionDeclaration[?Yield]
+        if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield]
+
+
+    B.3.3.3 Changes to GlobalDeclarationInstantiation
+
+    [...]
+    Perform ? varEnvRec.CreateGlobalVarBinding(F, true).
+    [...]
+
+---*/
+var global = fnGlobalObject();
+Object.defineProperty(global, 'f', {
+  value: 'x',
+  enumerable: false,
+  writable: true,
+  configurable: true
+});
+
+$262.evalScript(`
+assert.sameValue(f, 'x');
+verifyProperty(global, 'f', {
+  enumerable: false,
+  writable: true,
+  configurable: true
+}, { restore: true });
+`);
+
+$262.evalScript(`
+
+if (true) function f() { return 'inner declaration'; }
+
+`);
+
+$262.evalScript(`
+assert.sameValue(f(), 'inner declaration');
+verifyProperty(global, 'f', {
+  enumerable: false,
+  writable: true,
+  configurable: true
+});
+`);
diff --git a/JSTests/test262/test/annexB/language/global-code/if-stmt-else-decl-global-existing-global-init.js b/JSTests/test262/test/annexB/language/global-code/if-stmt-else-decl-global-existing-global-init.js
new file mode 100644 (file)
index 0000000..7c3cfcd
--- /dev/null
@@ -0,0 +1,56 @@
+// This file was procedurally generated from the following sources:
+// - src/annex-b-fns/global-existing-global-init.case
+// - src/annex-b-fns/global/if-stmt-else-decl.template
+/*---
+description: Variable binding is left in place by legacy function hoisting. CreateGlobalVariableBinding leaves the binding as non-enumerable even if it has the chance to change it to be enumerable. (IfStatement with a declaration in the second statement position in the global scope)
+esid: sec-functiondeclarations-in-ifstatement-statement-clauses
+es6id: B.3.4
+flags: [generated, noStrict]
+includes: [fnGlobalObject.js, propertyHelper.js]
+info: |
+    The following rules for IfStatement augment those in 13.6:
+
+    IfStatement[Yield, Return]:
+        if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] else Statement[?Yield, ?Return]
+        if ( Expression[In, ?Yield] ) Statement[?Yield, ?Return] else FunctionDeclaration[?Yield]
+        if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] else FunctionDeclaration[?Yield]
+        if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield]
+
+
+    B.3.3.3 Changes to GlobalDeclarationInstantiation
+
+    [...]
+    Perform ? varEnvRec.CreateGlobalVarBinding(F, true).
+    [...]
+
+---*/
+var global = fnGlobalObject();
+Object.defineProperty(global, 'f', {
+  value: 'x',
+  enumerable: true,
+  writable: true,
+  configurable: false
+});
+
+$262.evalScript(`
+assert.sameValue(f, 'x');
+verifyProperty(global, 'f', {
+  enumerable: true,
+  writable: true,
+  configurable: false
+}, { restore: true });
+`);
+
+$262.evalScript(`
+
+if (false) ; else function f() { return 'inner declaration'; }
+
+`);
+
+$262.evalScript(`
+verifyProperty(global, 'f', {
+  enumerable: true,
+  writable: true,
+  configurable: false
+});
+`);
diff --git a/JSTests/test262/test/annexB/language/global-code/if-stmt-else-decl-global-existing-non-enumerable-global-init.js b/JSTests/test262/test/annexB/language/global-code/if-stmt-else-decl-global-existing-non-enumerable-global-init.js
new file mode 100644 (file)
index 0000000..6a1a8b4
--- /dev/null
@@ -0,0 +1,57 @@
+// This file was procedurally generated from the following sources:
+// - src/annex-b-fns/global-existing-non-enumerable-global-init.case
+// - src/annex-b-fns/global/if-stmt-else-decl.template
+/*---
+description: Variable binding is left in place by legacy function hoisting. CreateGlobalVariableBinding leaves the binding as non-enumerable even if it has the chance to change it to be enumerable. (IfStatement with a declaration in the second statement position in the global scope)
+esid: sec-functiondeclarations-in-ifstatement-statement-clauses
+es6id: B.3.4
+flags: [generated, noStrict]
+includes: [fnGlobalObject.js, propertyHelper.js]
+info: |
+    The following rules for IfStatement augment those in 13.6:
+
+    IfStatement[Yield, Return]:
+        if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] else Statement[?Yield, ?Return]
+        if ( Expression[In, ?Yield] ) Statement[?Yield, ?Return] else FunctionDeclaration[?Yield]
+        if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield] else FunctionDeclaration[?Yield]
+        if ( Expression[In, ?Yield] ) FunctionDeclaration[?Yield]
+
+
+    B.3.3.3 Changes to GlobalDeclarationInstantiation
+
+    [...]
+    Perform ? varEnvRec.CreateGlobalVarBinding(F, true).
+    [...]
+
+---*/
+var global = fnGlobalObject();
+Object.defineProperty(global, 'f', {
+  value: 'x',
+  enumerable: false,
+  writable: true,
+  configurable: true
+});
+
+$262.evalScript(`
+assert.sameValue(f, 'x');
+verifyProperty(global, 'f', {
+  enumerable: false,
+  writable: true,
+  configurable: true
+}, { restore: true });
+`);
+
+$262.evalScript(`
+
+if (false) ; else function f() { return 'inner declaration'; }
+
+`);
+
+$262.evalScript(`
+assert.sameValue(f(), 'inner declaration');
+verifyProperty(global, 'f', {
+  enumerable: false,
+  writable: true,
+  configurable: true
+});
+`);
diff --git a/JSTests/test262/test/annexB/language/global-code/switch-case-global-existing-global-init.js b/JSTests/test262/test/annexB/language/global-code/switch-case-global-existing-global-init.js
new file mode 100644 (file)
index 0000000..5feed4c
--- /dev/null
@@ -0,0 +1,50 @@
+// This file was procedurally generated from the following sources:
+// - src/annex-b-fns/global-existing-global-init.case
+// - src/annex-b-fns/global/switch-case.template
+/*---
+description: Variable binding is left in place by legacy function hoisting. CreateGlobalVariableBinding leaves the binding as non-enumerable even if it has the chance to change it to be enumerable. (Function declaration in the `case` clause of a `switch` statement in the global scope)
+esid: sec-web-compat-globaldeclarationinstantiation
+es6id: B.3.3.2
+flags: [generated, noStrict]
+includes: [fnGlobalObject.js, propertyHelper.js]
+info: |
+    B.3.3.3 Changes to GlobalDeclarationInstantiation
+
+    [...]
+    Perform ? varEnvRec.CreateGlobalVarBinding(F, true).
+    [...]
+
+---*/
+var global = fnGlobalObject();
+Object.defineProperty(global, 'f', {
+  value: 'x',
+  enumerable: true,
+  writable: true,
+  configurable: false
+});
+
+$262.evalScript(`
+assert.sameValue(f, 'x');
+verifyProperty(global, 'f', {
+  enumerable: true,
+  writable: true,
+  configurable: false
+}, { restore: true });
+`);
+
+$262.evalScript(`
+
+switch (1) {
+  case 1:
+    function f() { return 'inner declaration'; }
+}
+
+`);
+
+$262.evalScript(`
+verifyProperty(global, 'f', {
+  enumerable: true,
+  writable: true,
+  configurable: false
+});
+`);
diff --git a/JSTests/test262/test/annexB/language/global-code/switch-case-global-existing-non-enumerable-global-init.js b/JSTests/test262/test/annexB/language/global-code/switch-case-global-existing-non-enumerable-global-init.js
new file mode 100644 (file)
index 0000000..f448c0c
--- /dev/null
@@ -0,0 +1,51 @@
+// This file was procedurally generated from the following sources:
+// - src/annex-b-fns/global-existing-non-enumerable-global-init.case
+// - src/annex-b-fns/global/switch-case.template
+/*---
+description: Variable binding is left in place by legacy function hoisting. CreateGlobalVariableBinding leaves the binding as non-enumerable even if it has the chance to change it to be enumerable. (Function declaration in the `case` clause of a `switch` statement in the global scope)
+esid: sec-web-compat-globaldeclarationinstantiation
+es6id: B.3.3.2
+flags: [generated, noStrict]
+includes: [fnGlobalObject.js, propertyHelper.js]
+info: |
+    B.3.3.3 Changes to GlobalDeclarationInstantiation
+
+    [...]
+    Perform ? varEnvRec.CreateGlobalVarBinding(F, true).
+    [...]
+
+---*/
+var global = fnGlobalObject();
+Object.defineProperty(global, 'f', {
+  value: 'x',
+  enumerable: false,
+  writable: true,
+  configurable: true
+});
+
+$262.evalScript(`
+assert.sameValue(f, 'x');
+verifyProperty(global, 'f', {
+  enumerable: false,
+  writable: true,
+  configurable: true
+}, { restore: true });
+`);
+
+$262.evalScript(`
+
+switch (1) {
+  case 1:
+    function f() { return 'inner declaration'; }
+}
+
+`);
+
+$262.evalScript(`
+assert.sameValue(f(), 'inner declaration');
+verifyProperty(global, 'f', {
+  enumerable: false,
+  writable: true,
+  configurable: true
+});
+`);
diff --git a/JSTests/test262/test/annexB/language/global-code/switch-dflt-global-existing-global-init.js b/JSTests/test262/test/annexB/language/global-code/switch-dflt-global-existing-global-init.js
new file mode 100644 (file)
index 0000000..bfccf69
--- /dev/null
@@ -0,0 +1,50 @@
+// This file was procedurally generated from the following sources:
+// - src/annex-b-fns/global-existing-global-init.case
+// - src/annex-b-fns/global/switch-dflt.template
+/*---
+description: Variable binding is left in place by legacy function hoisting. CreateGlobalVariableBinding leaves the binding as non-enumerable even if it has the chance to change it to be enumerable. (Funtion declaration in the `default` clause of a `switch` statement in the global scope)
+esid: sec-web-compat-globaldeclarationinstantiation
+es6id: B.3.3.2
+flags: [generated, noStrict]
+includes: [fnGlobalObject.js, propertyHelper.js]
+info: |
+    B.3.3.3 Changes to GlobalDeclarationInstantiation
+
+    [...]
+    Perform ? varEnvRec.CreateGlobalVarBinding(F, true).
+    [...]
+
+---*/
+var global = fnGlobalObject();
+Object.defineProperty(global, 'f', {
+  value: 'x',
+  enumerable: true,
+  writable: true,
+  configurable: false
+});
+
+$262.evalScript(`
+assert.sameValue(f, 'x');
+verifyProperty(global, 'f', {
+  enumerable: true,
+  writable: true,
+  configurable: false
+}, { restore: true });
+`);
+
+$262.evalScript(`
+
+switch (1) {
+  default:
+    function f() { return 'inner declaration'; }
+}
+
+`);
+
+$262.evalScript(`
+verifyProperty(global, 'f', {
+  enumerable: true,
+  writable: true,
+  configurable: false
+});
+`);
diff --git a/JSTests/test262/test/annexB/language/global-code/switch-dflt-global-existing-non-enumerable-global-init.js b/JSTests/test262/test/annexB/language/global-code/switch-dflt-global-existing-non-enumerable-global-init.js
new file mode 100644 (file)
index 0000000..c6bd5d8
--- /dev/null
@@ -0,0 +1,51 @@
+// This file was procedurally generated from the following sources:
+// - src/annex-b-fns/global-existing-non-enumerable-global-init.case
+// - src/annex-b-fns/global/switch-dflt.template
+/*---
+description: Variable binding is left in place by legacy function hoisting. CreateGlobalVariableBinding leaves the binding as non-enumerable even if it has the chance to change it to be enumerable. (Funtion declaration in the `default` clause of a `switch` statement in the global scope)
+esid: sec-web-compat-globaldeclarationinstantiation
+es6id: B.3.3.2
+flags: [generated, noStrict]
+includes: [fnGlobalObject.js, propertyHelper.js]
+info: |
+    B.3.3.3 Changes to GlobalDeclarationInstantiation
+
+    [...]
+    Perform ? varEnvRec.CreateGlobalVarBinding(F, true).
+    [...]
+
+---*/
+var global = fnGlobalObject();
+Object.defineProperty(global, 'f', {
+  value: 'x',
+  enumerable: false,
+  writable: true,
+  configurable: true
+});
+
+$262.evalScript(`
+assert.sameValue(f, 'x');
+verifyProperty(global, 'f', {
+  enumerable: false,
+  writable: true,
+  configurable: true
+}, { restore: true });
+`);
+
+$262.evalScript(`
+
+switch (1) {
+  default:
+    function f() { return 'inner declaration'; }
+}
+
+`);
+
+$262.evalScript(`
+assert.sameValue(f(), 'inner declaration');
+verifyProperty(global, 'f', {
+  enumerable: false,
+  writable: true,
+  configurable: true
+});
+`);
@@ -1,11 +1,11 @@
 // Copyright (C) 2018 Shilpi Jain and Michael Ficarra. All rights reserved.
 // This code is governed by the BSD license found in the LICENSE file.
 /*---
-esid: sec-array.prototype.flatten
+esid: sec-array.prototype.flat
 description: >
     array-like objects can be flattened
 includes: [compareArray.js]
-features: [Array.prototype.flatten]
+features: [Array.prototype.flat]
 ---*/
 
 function getArgumentsObject() {
@@ -13,19 +13,19 @@ function getArgumentsObject() {
 }
 
 var a = getArgumentsObject([1], [2]);
-var actual = [].flatten.call(a);
+var actual = [].flat.call(a);
 assert.compareArray(actual, [1, 2], 'arguments objects');
 
 var a = {
   length: 1,
   0: [1],
 };
-var actual = [].flatten.call(a);
+var actual = [].flat.call(a);
 assert.compareArray(actual, [1], 'array-like objects');
 
 var a = {
   length: undefined,
   0: [1],
 };
-var actual = [].flatten.call(a);
+var actual = [].flat.call(a);
 assert.compareArray(actual, [], 'array-like objects; undefined length');
@@ -1,17 +1,17 @@
 // Copyright (C) 2018 Shilpi Jain and Michael Ficarra. All rights reserved.
 // This code is governed by the BSD license found in the LICENSE file.
 /*---
-esid: sec-array.prototype.flatten
+esid: sec-array.prototype.flat
 description: >
     using bound functions
 includes: [compareArray.js]
-features: [Array.prototype.flatten]
+features: [Array.prototype.flat]
 ---*/
 
 var a = [
   [0],
   [1]
 ];
-var actual = [].flatten.bind(a)();
+var actual = [].flat.bind(a)();
 
-assert.compareArray(actual, [0, 1], 'bound flatten');
+assert.compareArray(actual, [0, 1], 'bound flat');
@@ -1,24 +1,24 @@
 // Copyright (C) 2018 Shilpi Jain and Michael Ficarra. All rights reserved.
 // This code is governed by the BSD license found in the LICENSE file.
 /*---
-esid: sec-array.prototype.flatten
+esid: sec-array.prototype.flat
 description: >
     arrays with empty arrays elements
 includes: [compareArray.js]
-features: [Array.prototype.flatten]
+features: [Array.prototype.flat]
 ---*/
 
 var a = {};
-assert.compareArray([].flatten(), []);
+assert.compareArray([].flat(), []);
 assert.compareArray([
   [],
   []
-].flatten(), []);
+].flat(), []);
 assert.compareArray([
   [],
   [1]
-].flatten(), [1]);
+].flat(), [1]);
 assert.compareArray([
   [],
   [1, a]
-].flatten(), [1, a]);
+].flat(), [1, a]);
@@ -1,22 +1,22 @@
 // Copyright (C) 2018 Shilpi Jain and Michael Ficarra. All rights reserved.
 // This code is governed by the BSD license found in the LICENSE file.
 /*---
-esid: sec-array.prototype.flatten
+esid: sec-array.prototype.flat
 description: >
     arrays with empty object elements
 includes: [compareArray.js]
-features: [Array.prototype.flatten]
+features: [Array.prototype.flat]
 ---*/
 
 var a = {},
   b = {};
 
-assert.compareArray([a].flatten(), [a]);
-assert.compareArray([a, [b]].flatten(), [a, b]);
+assert.compareArray([a].flat(), [a]);
+assert.compareArray([a, [b]].flat(), [a, b]);
 assert.compareArray([
   [a], b
-].flatten(), [a, b]);
+].flat(), [a, b]);
 assert.compareArray([
   [a],
   [b]
-].flatten(), [a, b]);
+].flat(), [a, b]);
diff --git a/JSTests/test262/test/built-ins/Array/prototype/flat/length.js b/JSTests/test262/test/built-ins/Array/prototype/flat/length.js
new file mode 100644 (file)
index 0000000..4c0896f
--- /dev/null
@@ -0,0 +1,19 @@
+// Copyright (C) 2018 Shilpi Jain and Michael Ficarra. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+/*---
+esid: sec-array.prototype.flat
+description: Array.prototype.flat.length value and descriptor.
+info: >
+  17 ECMAScript Standard Built-in Objects
+includes: [propertyHelper.js]
+features: [Array.prototype.flat]
+---*/
+
+assert.sameValue(
+  Array.prototype.flat.length, 0,
+  'The value of `Array.prototype.flat.length` is `0`'
+);
+
+verifyNotEnumerable(Array.prototype.flat, 'length');
+verifyNotWritable(Array.prototype.flat, 'length');
+verifyConfigurable(Array.prototype.flat, 'length');
diff --git a/JSTests/test262/test/built-ins/Array/prototype/flat/name.js b/JSTests/test262/test/built-ins/Array/prototype/flat/name.js
new file mode 100644 (file)
index 0000000..312827b
--- /dev/null
@@ -0,0 +1,20 @@
+// Copyright (C) 2018 Shilpi Jain and Michael Ficarra. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+/*---
+esid: sec-array.prototype.flat
+description: >
+  Array.prototype.flat.name value and descriptor.
+info: >
+  17 ECMAScript Standard Built-in Objects
+includes: [propertyHelper.js]
+features: [Array.prototype.flat]
+---*/
+
+assert.sameValue(
+  Array.prototype.flat.name, 'flat',
+  'The value of `Array.prototype.flat.name` is `"flat"`'
+);
+
+verifyNotEnumerable(Array.prototype.flat, 'name');
+verifyNotWritable(Array.prototype.flat, 'name');
+verifyConfigurable(Array.prototype.flat, 'name');
@@ -1,11 +1,11 @@
 // Copyright (C) 2018 Shilpi Jain and Michael Ficarra. All rights reserved.
 // This code is governed by the BSD license found in the LICENSE file.
 /*---
-esid: sec-array.prototype.flatten
+esid: sec-array.prototype.flat
 description: >
     if the argument is a string or object, the depthNum is 0
 includes: [compareArray.js]
-features: [Array.prototype.flatten]
+features: [Array.prototype.flat]
 ---*/
 
 var a = [1, [2]];
@@ -13,31 +13,31 @@ var expected = a;
 
 // non integral string depthNum is converted to 0
 var depthNum = 'TestString';
-var actual = a.flatten(depthNum);
+var actual = a.flat(depthNum);
 assert(compareArray(actual, expected), 'non integral string depthNum');
 
 // object type depthNum is converted to 0
 var depthNum = {};
-var actual = a.flatten(depthNum);
+var actual = a.flat(depthNum);
 assert(compareArray(actual, expected), 'object type depthNum');
 
 // negative infinity depthNum is converted to 0
 var depthNum = Number.NEGATIVE_INFINITY;
-var actual = a.flatten(depthNum);
+var actual = a.flat(depthNum);
 assert(compareArray(actual, expected), 'negative infinity depthNum');
 
 // positive zero depthNum is converted to 0
 var depthNum = +0;
-var actual = a.flatten(depthNum);
+var actual = a.flat(depthNum);
 assert(compareArray(actual, expected), 'positive zero depthNum');
 
 // negative zero depthNum is converted to 0
 var depthNum = -0;
-var actual = a.flatten(depthNum);
+var actual = a.flat(depthNum);
 assert(compareArray(actual, expected), 'negative zero depthNum');
 
 // integral string depthNum is converted to an integer
 var depthNum = '1';
-var actual = a.flatten(depthNum);
+var actual = a.flat(depthNum);
 var expected = [1, 2]
 assert(compareArray(actual, expected), 'integral string depthNum');
@@ -1,33 +1,33 @@
 // Copyright (C) 2018 Shilpi Jain and Michael Ficarra. All rights reserved.
 // This code is governed by the BSD license found in the LICENSE file.
 /*---
-esid: sec-array.prototype.flatten
+esid: sec-array.prototype.flat
 description: >
     Behavior when `constructor` property is neither an Object nor undefined
     - if IsConstructor(C) is false, throw a TypeError exception.
-features: [Array.prototype.flatten]
+features: [Array.prototype.flat]
 ---*/
 
 var a = [];
 a.constructor = null;
 assert.throws(TypeError, function() {
-  a.flatten();
+  a.flat();
 }, 'null value');
 
 var a = [];
 a.constructor = 1;
 assert.throws(TypeError, function() {
-  a.flatten();
+  a.flat();
 }, 'number value');
 
 var a = [];
 a.constructor = 'string';
 assert.throws(TypeError, function() {
-  a.flatten();
+  a.flat();
 }, 'string value');
 
 var a = [];
 a.constructor = true;
 assert.throws(TypeError, function() {
-  a.flatten();
+  a.flat();
 }, 'boolean value');
diff --git a/JSTests/test262/test/built-ins/Array/prototype/flat/null-undefined-elements.js b/JSTests/test262/test/built-ins/Array/prototype/flat/null-undefined-elements.js
new file mode 100644 (file)
index 0000000..a252f10
--- /dev/null
@@ -0,0 +1,20 @@
+// Copyright (C) 2018 Shilpi Jain and Michael Ficarra. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+/*---
+esid: sec-array.prototype.flat
+description: >
+    arrays with null, and undefined
+includes: [compareArray.js]
+features: [Array.prototype.flat]
+---*/
+
+var a = [void 0];
+
+assert(compareArray([1, null, void 0].flat(), [1, null, undefined]));
+assert(compareArray([1, [null, void 0]].flat(), [1, null, undefined]));
+assert(compareArray([
+  [null, void 0],
+  [null, void 0]
+].flat(), [null, undefined, null, undefined]));
+assert(compareArray([1, [null, a]].flat(1), [1, null, a]));
+assert(compareArray([1, [null, a]].flat(2), [1, null, undefined]));
@@ -1,20 +1,20 @@
 // Copyright (C) 2018 Shilpi Jain and Michael Ficarra. All rights reserved.
 // This code is governed by the BSD license found in the LICENSE file.
 /*---
-esid: sec-array.prototype.flatten
+esid: sec-array.prototype.flat
 description: >
     null or undefined should throw TypeError Exception
-features: [Array.prototype.flatten]
+features: [Array.prototype.flat]
 ---*/
 
 assert.throws(TypeError, function() {
-  [].flatten.call(null);
+  [].flat.call(null);
 }, 'null value');
 
 assert.throws(TypeError, function() {
-  [].flatten.call();
+  [].flat.call();
 }, 'missing');
 
 assert.throws(TypeError, function() {
-  [].flatten.call(void 0);
+  [].flat.call(void 0);
 }, 'undefined');
@@ -1,12 +1,12 @@
 // Copyright (C) 2018 Shilpi Jain and Michael Ficarra. All rights reserved.
 // This code is governed by the BSD license found in the LICENSE file.
 /*---
-esid: sec-array.prototype.flatten
+esid: sec-array.prototype.flat
 description: >
     if the argument is a positive infinity, the depthNum is max depth of the array
 includes: [compareArray.js]
-features: [Array.prototype.flatten]
+features: [Array.prototype.flat]
 ---*/
 
 var a = [1, [2, [3, [4]]]]
-assert(compareArray(a.flatten(Number.POSITIVE_INFINITY), [1, 2, 3, 4]), 'positive infinity depthNum');
+assert(compareArray(a.flat(Number.POSITIVE_INFINITY), [1, 2, 3, 4]), 'positive infinity depthNum');
@@ -1,21 +1,21 @@
 // Copyright (C) 2018 Shilpi Jain and Michael Ficarra. All rights reserved.
 // This code is governed by the BSD license found in the LICENSE file.
 /*---
-esid: sec-array.prototype.flatten
+esid: sec-array.prototype.flat
 es6id: 22.1.3
 description: Property type and descriptor.
 info: >
   17 ECMAScript Standard Built-in Objects
 includes: [propertyHelper.js]
-features: [Array.prototype.flatten]
+features: [Array.prototype.flat]
 ---*/
 
 assert.sameValue(
-  typeof Array.prototype.flatten,
+  typeof Array.prototype.flat,
   'function',
-  '`typeof Array.prototype.flatten` is `function`'
+  '`typeof Array.prototype.flat` is `function`'
 );
 
-verifyNotEnumerable(Array.prototype, 'flatten');
-verifyWritable(Array.prototype, 'flatten');
-verifyConfigurable(Array.prototype, 'flatten');
+verifyNotEnumerable(Array.prototype, 'flat');
+verifyWritable(Array.prototype, 'flat');
+verifyConfigurable(Array.prototype, 'flat');
@@ -1,16 +1,16 @@
 // Copyright (C) 2018 Shilpi Jain and Michael Ficarra. All rights reserved.
 // This code is governed by the BSD license found in the LICENSE file.
 /*---
-esid: sec-array.prototype.flatten
+esid: sec-array.prototype.flat
 description: >
     if the argument is a Symbol or Object null, it throws exception
-features: [Array.prototype.flatten]
+features: [Array.prototype.flat]
 ---*/
 
 assert.throws(TypeError, function() {
-  [].flatten(Symbol());
+  [].flat(Symbol());
 }, 'symbol value');
 
 assert.throws(TypeError, function() {
-  [].flatten(Object.create(null));
+  [].flat(Object.create(null));
 }, 'object create null');
diff --git a/JSTests/test262/test/built-ins/Array/prototype/flatten/length.js b/JSTests/test262/test/built-ins/Array/prototype/flatten/length.js
deleted file mode 100644 (file)
index 0e13e5e..0000000
+++ /dev/null
@@ -1,19 +0,0 @@
-// Copyright (C) 2018 Shilpi Jain and Michael Ficarra. All rights reserved.
-// This code is governed by the BSD license found in the LICENSE file.
-/*---
-esid: sec-array.prototype.flatten
-description: Array.prototype.flatten.length value and descriptor.
-info: >
-  17 ECMAScript Standard Built-in Objects
-includes: [propertyHelper.js]
-features: [Array.prototype.flatten]
----*/
-
-assert.sameValue(
-  Array.prototype.flatten.length, 0,
-  'The value of `Array.prototype.flatten.length` is `0`'
-);
-
-verifyNotEnumerable(Array.prototype.flatten, 'length');
-verifyNotWritable(Array.prototype.flatten, 'length');
-verifyConfigurable(Array.prototype.flatten, 'length');
diff --git a/JSTests/test262/test/built-ins/Array/prototype/flatten/name.js b/JSTests/test262/test/built-ins/Array/prototype/flatten/name.js
deleted file mode 100644 (file)
index 6d89ae6..0000000
+++ /dev/null
@@ -1,20 +0,0 @@
-// Copyright (C) 2018 Shilpi Jain and Michael Ficarra. All rights reserved.
-// This code is governed by the BSD license found in the LICENSE file.
-/*---
-esid: sec-array.prototype.flatten
-description: >
-  Array.prototype.flatten.name value and descriptor.
-info: >
-  17 ECMAScript Standard Built-in Objects
-includes: [propertyHelper.js]
-features: [Array.prototype.flatten]
----*/
-
-assert.sameValue(
-  Array.prototype.flatten.name, 'flatten',
-  'The value of `Array.prototype.flatten.name` is `"flatten"`'
-);
-
-verifyNotEnumerable(Array.prototype.flatten, 'name');
-verifyNotWritable(Array.prototype.flatten, 'name');
-verifyConfigurable(Array.prototype.flatten, 'name');
diff --git a/JSTests/test262/test/built-ins/Array/prototype/flatten/null-undefined-elements.js b/JSTests/test262/test/built-ins/Array/prototype/flatten/null-undefined-elements.js
deleted file mode 100644 (file)
index 8211fdc..0000000
+++ /dev/null
@@ -1,20 +0,0 @@
-// Copyright (C) 2018 Shilpi Jain and Michael Ficarra. All rights reserved.
-// This code is governed by the BSD license found in the LICENSE file.
-/*---
-esid: sec-array.prototype.flatten
-description: >
-    arrays with null, and undefined
-includes: [compareArray.js]
-features: [Array.prototype.flatten]
----*/
-
-var a = [void 0];
-
-assert(compareArray([1, null, void 0].flatten(), [1, null, undefined]));
-assert(compareArray([1, [null, void 0]].flatten(), [1, null, undefined]));
-assert(compareArray([
-  [null, void 0],
-  [null, void 0]
-].flatten(), [null, undefined, null, undefined]));
-assert(compareArray([1, [null, a]].flatten(1), [1, null, a]));
-assert(compareArray([1, [null, a]].flatten(2), [1, null, undefined]));
index f292515..4ce8bb9 100644 (file)
@@ -17,7 +17,7 @@ info: |
     object, if it exists, has the attributes { [[Writable]]: false,
     [[Enumerable]]: false, [[Configurable]]: true }.
 includes: [propertyHelper.js]
-features: [generators]
+features: [async-iteration]
 ---*/
 
 async function* g() {}
index c14f4ee..3817020 100644 (file)
@@ -17,7 +17,7 @@ info: |
     object, if it exists, has the attributes { [[Writable]]: false,
     [[Enumerable]]: false, [[Configurable]]: true }.
 includes: [propertyHelper.js]
-features: [generators]
+features: [async-iteration]
 ---*/
 
 async function* g() {}
index d15df4e..9e7ec93 100644 (file)
@@ -17,7 +17,7 @@ info: |
     object, if it exists, has the attributes { [[Writable]]: false,
     [[Enumerable]]: false, [[Configurable]]: true }.
 includes: [propertyHelper.js]
-features: [generators]
+features: [async-iteration]
 ---*/
 
 async function* g() {}
index 4917b49..b58e45d 100644 (file)
@@ -1,18 +1,18 @@
-// Copyright 2015 Microsoft Corporation. All rights reserved.\r
-// This code is governed by the license found in the LICENSE file.\r
-\r
-/*---\r
-description: Math.acosh with special values\r
-es6id: 20.2.2.3\r
-info: |\r
-  Math.acosh ( x )\r
-\r
-  - If x is NaN, the result is NaN.\r
-  - If x is less than 1, the result is NaN.\r
----*/\r
-\r
-assert.sameValue(Math.acosh(NaN), NaN, "NaN");\r
-assert.sameValue(Math.acosh(0.999999), NaN, "0.999999");\r
-assert.sameValue(Math.acosh(0), NaN, "0");\r
-assert.sameValue(Math.acosh(-1), NaN, "-1");\r
-assert.sameValue(Math.acosh(-Infinity), NaN, "-Infinity");\r
+// Copyright 2015 Microsoft Corporation. All rights reserved.
+// This code is governed by the license found in the LICENSE file.
+
+/*---
+description: Math.acosh with special values
+es6id: 20.2.2.3
+info: |
+  Math.acosh ( x )
+
+  - If x is NaN, the result is NaN.
+  - If x is less than 1, the result is NaN.
+---*/
+
+assert.sameValue(Math.acosh(NaN), NaN, "NaN");
+assert.sameValue(Math.acosh(0.999999), NaN, "0.999999");
+assert.sameValue(Math.acosh(0), NaN, "0");
+assert.sameValue(Math.acosh(-1), NaN, "-1");
+assert.sameValue(Math.acosh(-Infinity), NaN, "-Infinity");
index 38d8c35..33d8820 100644 (file)
@@ -1,18 +1,18 @@
-// Copyright 2015 Microsoft Corporation. All rights reserved.\r
-// This code is governed by the license found in the LICENSE file.\r
-\r
-/*---\r
-description: Math.asinh with special values\r
-es6id: 20.2.2.5\r
----*/\r
-\r
-assert.sameValue(Math.asinh(NaN), Number.NaN,\r
-  "Math.asinh produces incorrect output for NaN");\r
-assert.sameValue(Math.asinh(Number.NEGATIVE_INFINITY), Number.NEGATIVE_INFINITY,\r
-  "Math.asinh should produce negative infinity for Number.NEGATIVE_INFINITY");\r
-assert.sameValue(Math.asinh(Number.POSITIVE_INFINITY), Number.POSITIVE_INFINITY,\r
-  "Math.asinh should produce positive infinity for Number.POSITIVE_INFINITY");\r
-assert.sameValue(1 / Math.asinh(-0), Number.NEGATIVE_INFINITY,\r
-  "Math.asinh should produce -0 for -0");\r
-assert.sameValue(1 / Math.asinh(0), Number.POSITIVE_INFINITY,\r
-  "Math.asinh should produce +0 for +0");\r
+// Copyright 2015 Microsoft Corporation. All rights reserved.
+// This code is governed by the license found in the LICENSE file.
+
+/*---
+description: Math.asinh with special values
+es6id: 20.2.2.5
+---*/
+
+assert.sameValue(Math.asinh(NaN), Number.NaN,
+  "Math.asinh produces incorrect output for NaN");
+assert.sameValue(Math.asinh(Number.NEGATIVE_INFINITY), Number.NEGATIVE_INFINITY,
+  "Math.asinh should produce negative infinity for Number.NEGATIVE_INFINITY");
+assert.sameValue(Math.asinh(Number.POSITIVE_INFINITY), Number.POSITIVE_INFINITY,
+  "Math.asinh should produce positive infinity for Number.POSITIVE_INFINITY");
+assert.sameValue(1 / Math.asinh(-0), Number.NEGATIVE_INFINITY,
+  "Math.asinh should produce -0 for -0");
+assert.sameValue(1 / Math.asinh(0), Number.POSITIVE_INFINITY,
+  "Math.asinh should produce +0 for +0");
index 0a961af..9148c1b 100644 (file)
@@ -1,31 +1,31 @@
-// Copyright 2015 Microsoft Corporation. All rights reserved.\r
-// This code is governed by the license found in the LICENSE file.\r
-\r
-/*---\r
-description: Math.atanh with special values\r
-es6id: 20.2.2.7\r
----*/\r
-\r
-assert.sameValue(Math.atanh(-1.9), Number.NaN,\r
-  "Math.atanh produces incorrect output for -1.9");\r
-assert.sameValue(Math.atanh(NaN), Number.NaN,\r
-  "Math.atanh produces incorrect output for NaN");\r
-assert.sameValue(Math.atanh(-10), Number.NaN,\r
-  "Math.atanh produces incorrect output for -10");\r
-assert.sameValue(Math.atanh(-Infinity), Number.NaN,\r
-  "Math.atanh produces incorrect output for -Infinity");\r
-assert.sameValue(Math.atanh(1.9), Number.NaN,\r
-  "Math.atanh produces incorrect output for 1.9");\r
-assert.sameValue(Math.atanh(10), Number.NaN,\r
-  "Math.atanh produces incorrect output for 10");\r
-assert.sameValue(Math.atanh(Number.POSITIVE_INFINITY), Number.NaN,\r
-  "Math.atanh produces incorrect output for Number.POSITIVE_INFINITY");\r
-\r
-assert.sameValue(Math.atanh(-1), Number.NEGATIVE_INFINITY,\r
-  "Math.atanh should produce negative infinity for -1");\r
-assert.sameValue(Math.atanh(+1), Number.POSITIVE_INFINITY,\r
-  "Math.atanh should produce positive infinity for +1");\r
-assert.sameValue(1 / Math.atanh(-0), Number.NEGATIVE_INFINITY,\r
-  "Math.atanh should produce -0 for -0");\r
-assert.sameValue(1 / Math.atanh(0), Number.POSITIVE_INFINITY,\r
-  "Math.atanh should produce +0 for +0");\r
+// Copyright 2015 Microsoft Corporation. All rights reserved.
+// This code is governed by the license found in the LICENSE file.
+
+/*---
+description: Math.atanh with special values
+es6id: 20.2.2.7
+---*/
+
+assert.sameValue(Math.atanh(-1.9), Number.NaN,
+  "Math.atanh produces incorrect output for -1.9");
+assert.sameValue(Math.atanh(NaN), Number.NaN,
+  "Math.atanh produces incorrect output for NaN");
+assert.sameValue(Math.atanh(-10), Number.NaN,
+  "Math.atanh produces incorrect output for -10");
+assert.sameValue(Math.atanh(-Infinity), Number.NaN,
+  "Math.atanh produces incorrect output for -Infinity");
+assert.sameValue(Math.atanh(1.9), Number.NaN,
+  "Math.atanh produces incorrect output for 1.9");
+assert.sameValue(Math.atanh(10), Number.NaN,
+  "Math.atanh produces incorrect output for 10");
+assert.sameValue(Math.atanh(Number.POSITIVE_INFINITY), Number.NaN,
+  "Math.atanh produces incorrect output for Number.POSITIVE_INFINITY");
+
+assert.sameValue(Math.atanh(-1), Number.NEGATIVE_INFINITY,
+  "Math.atanh should produce negative infinity for -1");
+assert.sameValue(Math.atanh(+1), Number.POSITIVE_INFINITY,
+  "Math.atanh should produce positive infinity for +1");
+assert.sameValue(1 / Math.atanh(-0), Number.NEGATIVE_INFINITY,
+  "Math.atanh should produce -0 for -0");
+assert.sameValue(1 / Math.atanh(0), Number.POSITIVE_INFINITY,
+  "Math.atanh should produce +0 for +0");
index 271c60c..9ac640c 100644 (file)
@@ -1,18 +1,18 @@
-// Copyright 2015 Microsoft Corporation. All rights reserved.\r
-// This code is governed by the license found in the LICENSE file.\r
-\r
-/*---\r
-description: Math.cbrt with special values\r
-es6id: 20.2.2.9\r
----*/\r
-\r
-assert.sameValue(Math.cbrt(NaN), Number.NaN,\r
-  "Math.cbrt produces incorrect output for NaN");\r
-assert.sameValue(Math.cbrt(Number.NEGATIVE_INFINITY), Number.NEGATIVE_INFINITY,\r
-  "Math.cbrt should produce negative infinity for Number.NEGATIVE_INFINITY");\r
-assert.sameValue(Math.cbrt(Number.POSITIVE_INFINITY), Number.POSITIVE_INFINITY,\r
-  "Math.cbrt should produce positive infinity for Number.POSITIVE_INFINITY");\r
-assert.sameValue(1 / Math.cbrt(-0), Number.NEGATIVE_INFINITY,\r
-  "Math.cbrt should produce -0 for -0");\r
-assert.sameValue(1 / Math.cbrt(0), Number.POSITIVE_INFINITY,\r
-  "Math.cbrt should produce +0 for +0");\r
+// Copyright 2015 Microsoft Corporation. All rights reserved.
+// This code is governed by the license found in the LICENSE file.
+
+/*---
+description: Math.cbrt with special values
+es6id: 20.2.2.9
+---*/
+
+assert.sameValue(Math.cbrt(NaN), Number.NaN,
+  "Math.cbrt produces incorrect output for NaN");
+assert.sameValue(Math.cbrt(Number.NEGATIVE_INFINITY), Number.NEGATIVE_INFINITY,
+  "Math.cbrt should produce negative infinity for Number.NEGATIVE_INFINITY");
+assert.sameValue(Math.cbrt(Number.POSITIVE_INFINITY), Number.POSITIVE_INFINITY,
+  "Math.cbrt should produce positive infinity for Number.POSITIVE_INFINITY");
+assert.sameValue(1 / Math.cbrt(-0), Number.NEGATIVE_INFINITY,
+  "Math.cbrt should produce -0 for -0");
+assert.sameValue(1 / Math.cbrt(0), Number.POSITIVE_INFINITY,
+  "Math.cbrt should produce +0 for +0");
index 0a5a265..e7d83a7 100644 (file)
@@ -1,12 +1,12 @@
-// Copyright 2015 Microsoft Corporation. All rights reserved.\r
-// This code is governed by the license found in the LICENSE file.\r
-\r
-/*---\r
-description: Testing descriptor property of Math.cbrt\r
-includes: [propertyHelper.js]\r
-es6id: 20.2.2.9\r
----*/\r
-\r
-verifyNotEnumerable(Math, "cbrt");\r
-verifyWritable(Math, "cbrt");\r
-verifyConfigurable(Math, "cbrt");\r
+// Copyright 2015 Microsoft Corporation. All rights reserved.
+// This code is governed by the license found in the LICENSE file.
+
+/*---
+description: Testing descriptor property of Math.cbrt
+includes: [propertyHelper.js]
+es6id: 20.2.2.9
+---*/
+
+verifyNotEnumerable(Math, "cbrt");
+verifyWritable(Math, "cbrt");
+verifyConfigurable(Math, "cbrt");
index 09bde42..ddb5445 100644 (file)
@@ -1,16 +1,16 @@
-// Copyright 2015 Microsoft Corporation. All rights reserved.\r
-// This code is governed by the license found in the LICENSE file.\r
-\r
-/*---\r
-description: Math.cosh with special values\r
-es6id: 20.2.2.13\r
----*/\r
-\r
-assert.sameValue(Math.cosh(NaN), Number.NaN,\r
-  "Math.cosh produces incorrect output for NaN");\r
-assert.sameValue(Math.cosh(0), 1, "Math.cosh should produce 1 for input = 0");\r
-assert.sameValue(Math.cosh(-0), 1, "Math.cosh should produce 1 for input = -0");\r
-assert.sameValue(Math.cosh(Number.NEGATIVE_INFINITY), Number.POSITIVE_INFINITY,\r
-  "Math.cosh should produce Number.POSITIVE_INFINITY for Number.NEGATIVE_INFINITY");\r
-assert.sameValue(Math.cosh(Number.POSITIVE_INFINITY), Number.POSITIVE_INFINITY,\r
-  "Math.cosh should produce Number.POSITIVE_INFINITY for Number.POSITIVE_INFINITY");\r
+// Copyright 2015 Microsoft Corporation. All rights reserved.
+// This code is governed by the license found in the LICENSE file.
+
+/*---
+description: Math.cosh with special values
+es6id: 20.2.2.13
+---*/
+
+assert.sameValue(Math.cosh(NaN), Number.NaN,
+  "Math.cosh produces incorrect output for NaN");
+assert.sameValue(Math.cosh(0), 1, "Math.cosh should produce 1 for input = 0");
+assert.sameValue(Math.cosh(-0), 1, "Math.cosh should produce 1 for input = -0");
+assert.sameValue(Math.cosh(Number.NEGATIVE_INFINITY), Number.POSITIVE_INFINITY,
+  "Math.cosh should produce Number.POSITIVE_INFINITY for Number.NEGATIVE_INFINITY");
+assert.sameValue(Math.cosh(Number.POSITIVE_INFINITY), Number.POSITIVE_INFINITY,
+  "Math.cosh should produce Number.POSITIVE_INFINITY for Number.POSITIVE_INFINITY");
index 1ca16ba..65aa979 100644 (file)
@@ -1,18 +1,18 @@
-// Copyright 2015 Microsoft Corporation. All rights reserved.\r
-// This code is governed by the license found in the LICENSE file.\r
-\r
-/*---\r
-description: Math.expm1 with sample values.\r
-es6id: 20.2.2.15\r
----*/\r
-\r
-assert.sameValue(Math.expm1(NaN), Number.NaN,\r
-  "Math.expm1 produces incorrect output for NaN");\r
-assert.sameValue(Math.expm1(Number.NEGATIVE_INFINITY), -1,\r
-  "Math.expm1 should produce -1 for Number.NEGATIVE_INFINITY");\r
-assert.sameValue(Math.expm1(Number.POSITIVE_INFINITY), Number.POSITIVE_INFINITY,\r
-  "Math.expm1 should produce POSITIVE infinity for Number.POSITIVE_INFINITY");\r
-assert.sameValue(1 / Math.expm1(-0), Number.NEGATIVE_INFINITY,\r
-  "Math.expm1 should produce -0 for -0");\r
-assert.sameValue(1 / Math.expm1(0), Number.POSITIVE_INFINITY,\r
-  "Math.expm1 should produce +0 for +0");\r
+// Copyright 2015 Microsoft Corporation. All rights reserved.
+// This code is governed by the license found in the LICENSE file.
+
+/*---
+description: Math.expm1 with sample values.
+es6id: 20.2.2.15
+---*/
+
+assert.sameValue(Math.expm1(NaN), Number.NaN,
+  "Math.expm1 produces incorrect output for NaN");
+assert.sameValue(Math.expm1(Number.NEGATIVE_INFINITY), -1,
+  "Math.expm1 should produce -1 for Number.NEGATIVE_INFINITY");
+assert.sameValue(Math.expm1(Number.POSITIVE_INFINITY), Number.POSITIVE_INFINITY,
+  "Math.expm1 should produce POSITIVE infinity for Number.POSITIVE_INFINITY");
+assert.sameValue(1 / Math.expm1(-0), Number.NEGATIVE_INFINITY,
+  "Math.expm1 should produce -0 for -0");
+assert.sameValue(1 / Math.expm1(0), Number.POSITIVE_INFINITY,
+  "Math.expm1 should produce +0 for +0");
index e208dd0..341ea36 100644 (file)
@@ -1,32 +1,32 @@
-// Copyright 2015 Microsoft Corporation. All rights reserved.\r
-// This code is governed by the license found in the LICENSE file.\r
-\r
-/*---\r
-description: Math.Log10 with sample values.\r
-es6id: 20.2.2.20\r
----*/\r
-\r
-assert.sameValue(Math.log10(-0), Number.NEGATIVE_INFINITY,\r
-  "Math.log10 produces incorrect output for -0");\r
-assert.sameValue(Math.log10(+0), Number.NEGATIVE_INFINITY,\r
-  "Math.log10 produces incorrect output for +0");\r
-assert.sameValue(Math.log10(-0.9), Number.NaN,\r
-  "Math.log10 produces incorrect output for -0.9");\r
-assert.sameValue(Math.log10(NaN), Number.NaN,\r
-  "Math.log10 produces incorrect output for NaN");\r
-assert.sameValue(Math.log10(-10), Number.NaN,\r
-  "Math.log10 produces incorrect output for -10");\r
-assert.sameValue(Math.log10(null), Number.NEGATIVE_INFINITY,\r
-  "Math.log10 produces incorrect output for null");\r
-assert.sameValue(Math.log10(undefined), Number.NaN,\r
-  "Math.log10 produces incorrect output for undefined");\r
-assert.sameValue(Math.log10(Number.POSITIVE_INFINITY), Number.POSITIVE_INFINITY,\r
-  "Math.log10 produces incorrect output for Number.POSITIVE_INFINITY");\r
-assert.sameValue(Math.log10(1), 0,\r
-  "Math.log10 produces incorrect output for 1");\r
-assert.sameValue(Math.log10(10.00), 1,\r
-  "Math.log10 produces incorrect output for 10.00");\r
-assert.sameValue(Math.log10(100.00), 2,\r
-  "Math.log10 produces incorrect output for 100.00");\r
-assert.sameValue(Math.log10(1000.00), 3,\r
-  "Math.log10 produces incorrect output for 1000.00");\r
+// Copyright 2015 Microsoft Corporation. All rights reserved.
+// This code is governed by the license found in the LICENSE file.
+
+/*---
+description: Math.Log10 with sample values.
+es6id: 20.2.2.20
+---*/
+
+assert.sameValue(Math.log10(-0), Number.NEGATIVE_INFINITY,
+  "Math.log10 produces incorrect output for -0");
+assert.sameValue(Math.log10(+0), Number.NEGATIVE_INFINITY,
+  "Math.log10 produces incorrect output for +0");
+assert.sameValue(Math.log10(-0.9), Number.NaN,
+  "Math.log10 produces incorrect output for -0.9");
+assert.sameValue(Math.log10(NaN), Number.NaN,
+  "Math.log10 produces incorrect output for NaN");
+assert.sameValue(Math.log10(-10), Number.NaN,
+  "Math.log10 produces incorrect output for -10");
+assert.sameValue(Math.log10(null), Number.NEGATIVE_INFINITY,
+  "Math.log10 produces incorrect output for null");
+assert.sameValue(Math.log10(undefined), Number.NaN,
+  "Math.log10 produces incorrect output for undefined");
+assert.sameValue(Math.log10(Number.POSITIVE_INFINITY), Number.POSITIVE_INFINITY,
+  "Math.log10 produces incorrect output for Number.POSITIVE_INFINITY");
+assert.sameValue(Math.log10(1), 0,
+  "Math.log10 produces incorrect output for 1");
+assert.sameValue(Math.log10(10.00), 1,
+  "Math.log10 produces incorrect output for 10.00");
+assert.sameValue(Math.log10(100.00), 2,
+  "Math.log10 produces incorrect output for 100.00");
+assert.sameValue(Math.log10(1000.00), 3,
+  "Math.log10 produces incorrect output for 1000.00");
index 59b5c9d..bd3bb51 100644 (file)
@@ -1,34 +1,34 @@
-// Copyright 2015 Microsoft Corporation. All rights reserved.\r
-// This code is governed by the license found in the LICENSE file.\r
-\r
-/*---\r
-description: Math.Log2 with sample values.\r
-es6id: 20.2.2.23\r
----*/\r
-\r
-assert.sameValue(Math.log2(-0), Number.NEGATIVE_INFINITY,\r
-  "Math.log2 produces incorrect output for -0");\r
-assert.sameValue(Math.log2(+0), Number.NEGATIVE_INFINITY,\r
-  "Math.log2 produces incorrect output for +0");\r
-assert.sameValue(Math.log2(-0.9), NaN,\r
-  "Math.log2 produces incorrect output for -0.9");\r
-assert.sameValue(Math.log2(NaN), NaN,\r
-  "Math.log2 produces incorrect output for NaN");\r
-assert.sameValue(Math.log2(-10), NaN,\r
-  "Math.log2 produces incorrect output for -10");\r
-assert.sameValue(Math.log2(-Infinity), NaN,\r
-  "Math.log2 produces incorrect output for -Infinity");\r
-assert.sameValue(Math.log2(null), Number.NEGATIVE_INFINITY,\r
-  "Math.log2 produces incorrect output for null");\r
-assert.sameValue(Math.log2(undefined), NaN,\r
-  "Math.log2 produces incorrect output for undefined");\r
-assert.sameValue(Math.log2(Number.POSITIVE_INFINITY), Number.POSITIVE_INFINITY,\r
-  "Math.log2 produces incorrect output for Number.POSITIVE_INFINITY");\r
-assert.sameValue(Math.log2(1), 0,\r
-  "Math.log2 produces incorrect output for 1");\r
-assert.sameValue(Math.log2(2.00), 1,\r
-  "Math.log2 produces incorrect output for 2.00");\r
-assert.sameValue(Math.log2(4.00), 2,\r
-  "Math.log2 produces incorrect output for 4.00");\r
-assert.sameValue(Math.log2(8.00), 3,\r
-  "Math.log2 produces incorrect output for 8.00");\r
+// Copyright 2015 Microsoft Corporation. All rights reserved.
+// This code is governed by the license found in the LICENSE file.
+
+/*---
+description: Math.Log2 with sample values.
+es6id: 20.2.2.23
+---*/
+
+assert.sameValue(Math.log2(-0), Number.NEGATIVE_INFINITY,
+  "Math.log2 produces incorrect output for -0");
+assert.sameValue(Math.log2(+0), Number.NEGATIVE_INFINITY,
+  "Math.log2 produces incorrect output for +0");
+assert.sameValue(Math.log2(-0.9), NaN,
+  "Math.log2 produces incorrect output for -0.9");
+assert.sameValue(Math.log2(NaN), NaN,
+  "Math.log2 produces incorrect output for NaN");
+assert.sameValue(Math.log2(-10), NaN,
+  "Math.log2 produces incorrect output for -10");
+assert.sameValue(Math.log2(-Infinity), NaN,
+  "Math.log2 produces incorrect output for -Infinity");
+assert.sameValue(Math.log2(null), Number.NEGATIVE_INFINITY,
+  "Math.log2 produces incorrect output for null");
+assert.sameValue(Math.log2(undefined), NaN,
+  "Math.log2 produces incorrect output for undefined");
+assert.sameValue(Math.log2(Number.POSITIVE_INFINITY), Number.POSITIVE_INFINITY,
+  "Math.log2 produces incorrect output for Number.POSITIVE_INFINITY");
+assert.sameValue(Math.log2(1), 0,
+  "Math.log2 produces incorrect output for 1");
+assert.sameValue(Math.log2(2.00), 1,
+  "Math.log2 produces incorrect output for 2.00");
+assert.sameValue(Math.log2(4.00), 2,
+  "Math.log2 produces incorrect output for 4.00");
+assert.sameValue(Math.log2(8.00), 3,
+  "Math.log2 produces incorrect output for 8.00");
index 0e63fe8..9026c22 100644 (file)
@@ -1,20 +1,20 @@
-// Copyright 2015 Microsoft Corporation. All rights reserved.\r
-// This code is governed by the license found in the LICENSE file.\r
-\r
-/*---\r
-description: >\r
-  Returns the sign of the x, indicating whether x is positive, negative or zero.\r
-es6id: 20.2.2.29\r
----*/\r
-\r
-assert.sameValue(Math.sign(NaN), NaN, "NaN");\r
-assert.sameValue(Math.sign(-0), -0, "-0");\r
-assert.sameValue(Math.sign(0), 0, "0");\r
-\r
-assert.sameValue(Math.sign(-0.000001), -1, "-0.000001");\r
-assert.sameValue(Math.sign(-1), -1, "-1");\r
-assert.sameValue(Math.sign(-Infinity), -1, "-Infinity");\r
-\r
-assert.sameValue(Math.sign(0.000001), 1, "0.000001");\r
-assert.sameValue(Math.sign(1), 1, "1");\r
-assert.sameValue(Math.sign(Infinity), 1, "Infinity");\r
+// Copyright 2015 Microsoft Corporation. All rights reserved.
+// This code is governed by the license found in the LICENSE file.
+
+/*---
+description: >
+  Returns the sign of the x, indicating whether x is positive, negative or zero.
+es6id: 20.2.2.29
+---*/
+
+assert.sameValue(Math.sign(NaN), NaN, "NaN");
+assert.sameValue(Math.sign(-0), -0, "-0");
+assert.sameValue(Math.sign(0), 0, "0");
+
+assert.sameValue(Math.sign(-0.000001), -1, "-0.000001");
+assert.sameValue(Math.sign(-1), -1, "-1");
+assert.sameValue(Math.sign(-Infinity), -1, "-Infinity");
+
+assert.sameValue(Math.sign(0.000001), 1, "0.000001");
+assert.sameValue(Math.sign(1), 1, "1");
+assert.sameValue(Math.sign(Infinity), 1, "Infinity");
index 9f0b5e2..beda3cd 100644 (file)
@@ -1,18 +1,18 @@
-// Copyright 2015 Microsoft Corporation. All rights reserved.\r
-// This code is governed by the license found in the LICENSE file.\r
-\r
-/*---\r
-description: Math.sinh with special values\r
-es6id: 20.2.2.31\r
----*/\r
-\r
-assert.sameValue(Math.sinh(NaN), Number.NaN,\r
-  "Math.sinh produces incorrect output for NaN");\r
-assert.sameValue(Math.sinh(Number.NEGATIVE_INFINITY), Number.NEGATIVE_INFINITY,\r
-  "Math.sinh should produce negative infinity for Number.NEGATIVE_INFINITY");\r
-assert.sameValue(Math.sinh(Number.POSITIVE_INFINITY), Number.POSITIVE_INFINITY,\r
-  "Math.sinh should produce positive infinity for Number.POSITIVE_INFINITY");\r
-assert.sameValue(1 / Math.sinh(-0), Number.NEGATIVE_INFINITY,\r
-  "Math.sinh should produce -0 for -0");\r
-assert.sameValue(1 / Math.sinh(0), Number.POSITIVE_INFINITY,\r
-  "Math.sinh should produce +0 for +0");\r
+// Copyright 2015 Microsoft Corporation. All rights reserved.
+// This code is governed by the license found in the LICENSE file.
+
+/*---
+description: Math.sinh with special values
+es6id: 20.2.2.31
+---*/
+
+assert.sameValue(Math.sinh(NaN), Number.NaN,
+  "Math.sinh produces incorrect output for NaN");
+assert.sameValue(Math.sinh(Number.NEGATIVE_INFINITY), Number.NEGATIVE_INFINITY,
+  "Math.sinh should produce negative infinity for Number.NEGATIVE_INFINITY");
+assert.sameValue(Math.sinh(Number.POSITIVE_INFINITY), Number.POSITIVE_INFINITY,
+  "Math.sinh should produce positive infinity for Number.POSITIVE_INFINITY");
+assert.sameValue(1 / Math.sinh(-0), Number.NEGATIVE_INFINITY,
+  "Math.sinh should produce -0 for -0");
+assert.sameValue(1 / Math.sinh(0), Number.POSITIVE_INFINITY,
+  "Math.sinh should produce +0 for +0");
index 4b1a729..a26b2af 100644 (file)
@@ -1,18 +1,18 @@
-// Copyright 2015 Microsoft Corporation. All rights reserved.\r
-// This code is governed by the license found in the LICENSE file.\r
-\r
-/*---\r
-description: Math.tanh with special values\r
-es6id: 20.2.2.34\r
----*/\r
-\r
-assert.sameValue(Math.tanh(NaN), Number.NaN,\r
-  "Math.tanh produces incorrect output for NaN");\r
-assert.sameValue(Math.tanh(Number.NEGATIVE_INFINITY), -1,\r
-  "Math.tanh should produce -1 for Number.NEGATIVE_INFINITY");\r
-assert.sameValue(Math.tanh(Number.POSITIVE_INFINITY), 1,\r
-  "Math.tanh should produce 1 for Number.POSITIVE_INFINITY");\r
-assert.sameValue(1 / Math.tanh(-0), Number.NEGATIVE_INFINITY,\r
-  "Math.tanh should produce -0 for -0");\r
-assert.sameValue(1 / Math.tanh(0), Number.POSITIVE_INFINITY,\r
-  "Math.tanh should produce +0 for +0");\r
+// Copyright 2015 Microsoft Corporation. All rights reserved.
+// This code is governed by the license found in the LICENSE file.
+
+/*---
+description: Math.tanh with special values
+es6id: 20.2.2.34
+---*/
+
+assert.sameValue(Math.tanh(NaN), Number.NaN,
+  "Math.tanh produces incorrect output for NaN");
+assert.sameValue(Math.tanh(Number.NEGATIVE_INFINITY), -1,
+  "Math.tanh should produce -1 for Number.NEGATIVE_INFINITY");
+assert.sameValue(Math.tanh(Number.POSITIVE_INFINITY), 1,
+  "Math.tanh should produce 1 for Number.POSITIVE_INFINITY");
+assert.sameValue(1 / Math.tanh(-0), Number.NEGATIVE_INFINITY,
+  "Math.tanh should produce -0 for -0");
+assert.sameValue(1 / Math.tanh(0), Number.POSITIVE_INFINITY,
+  "Math.tanh should produce +0 for +0");
index 59d3d8d..a99c6cb 100644 (file)
@@ -1,47 +1,47 @@
-// Copyright 2015 Microsoft Corporation. All rights reserved.\r
-// This code is governed by the license found in the LICENSE file.\r
-\r
-/*---\r
-description: sample tests for trunc\r
-es6id: 20.2.2.35\r
----*/\r
-\r
-assert.sameValue(1 / Math.trunc(0.02047410048544407), Number.POSITIVE_INFINITY,\r
-  "Math.trunc should produce +0 for values between 0 and 1");\r
-assert.sameValue(1 / Math.trunc(0.00000000000000001), Number.POSITIVE_INFINITY,\r
-  "Math.trunc should produce +0 for values between 0 and 1");\r
-assert.sameValue(1 / Math.trunc(0.9999999999999999), Number.POSITIVE_INFINITY,\r
-  "Math.trunc should produce +0 for values between 0 and 1");\r
-assert.sameValue(1 / Math.trunc(Number.EPSILON), Number.POSITIVE_INFINITY,\r
-  "Math.trunc should produce +0 for values between 0 and 1");\r
-assert.sameValue(1 / Math.trunc(Number.MIN_VALUE), Number.POSITIVE_INFINITY,\r
-  "Math.trunc should produce +0 for values between 0 and 1");\r
-\r
-assert.sameValue(1 / Math.trunc(-0.02047410048544407), Number.NEGATIVE_INFINITY,\r
-  "Math.trunc should produce -0 for values between -1 and 0");\r
-assert.sameValue(1 / Math.trunc(-0.00000000000000001), Number.NEGATIVE_INFINITY,\r
-  "Math.trunc should produce -0 for values between -1 and 0");\r
-assert.sameValue(1 / Math.trunc(-0.9999999999999999), Number.NEGATIVE_INFINITY,\r
-  "Math.trunc should produce -0 for values between -1 and 0");\r
-assert.sameValue(1 / Math.trunc(-Number.EPSILON), Number.NEGATIVE_INFINITY,\r
-  "Math.trunc should produce -0 for values between -1 and 0");\r
-assert.sameValue(1 / Math.trunc(-Number.MIN_VALUE), Number.NEGATIVE_INFINITY,\r
-  "Math.trunc should produce -0 for values between -1 and 0");\r
-\r
-assert.sameValue(Math.trunc(Number.MAX_VALUE), Math.floor(Number.MAX_VALUE),\r
-  "Math.trunc produces incorrect result for Number.MAX_VALUE");\r
-assert.sameValue(Math.trunc(10), Math.floor(10),\r
-  "Math.trunc produces incorrect result for 10");\r
-assert.sameValue(Math.trunc(3.9), Math.floor(3.9),\r
-  "Math.trunc produces incorrect result for 3.9");\r
-assert.sameValue(Math.trunc(4.9), Math.floor(4.9),\r
-  "Math.trunc produces incorrect result for 4.9");\r
-\r
-assert.sameValue(Math.trunc(-Number.MAX_VALUE), Math.ceil(-Number.MAX_VALUE),\r
-  "Math.trunc produces incorrect result for -Number.MAX_VALUE");\r
-assert.sameValue(Math.trunc(-10), Math.ceil(-10),\r
-  "Math.trunc produces incorrect result for -10");\r
-assert.sameValue(Math.trunc(-3.9), Math.ceil(-3.9),\r
-  "Math.trunc produces incorrect result for -3.9");\r
-assert.sameValue(Math.trunc(-4.9), Math.ceil(-4.9),\r
-  "Math.trunc produces incorrect result for -4.9");\r
+// Copyright 2015 Microsoft Corporation. All rights reserved.
+// This code is governed by the license found in the LICENSE file.
+
+/*---
+description: sample tests for trunc
+es6id: 20.2.2.35
+---*/
+
+assert.sameValue(1 / Math.trunc(0.02047410048544407), Number.POSITIVE_INFINITY,
+  "Math.trunc should produce +0 for values between 0 and 1");
+assert.sameValue(1 / Math.trunc(0.00000000000000001), Number.POSITIVE_INFINITY,
+  "Math.trunc should produce +0 for values between 0 and 1");
+assert.sameValue(1 / Math.trunc(0.9999999999999999), Number.POSITIVE_INFINITY,
+  "Math.trunc should produce +0 for values between 0 and 1");
+assert.sameValue(1 / Math.trunc(Number.EPSILON), Number.POSITIVE_INFINITY,
+  "Math.trunc should produce +0 for values between 0 and 1");
+assert.sameValue(1 / Math.trunc(Number.MIN_VALUE), Number.POSITIVE_INFINITY,
+  "Math.trunc should produce +0 for values between 0 and 1");
+
+assert.sameValue(1 / Math.trunc(-0.02047410048544407), Number.NEGATIVE_INFINITY,
+  "Math.trunc should produce -0 for values between -1 and 0");
+assert.sameValue(1 / Math.trunc(-0.00000000000000001), Number.NEGATIVE_INFINITY,
+  "Math.trunc should produce -0 for values between -1 and 0");
+assert.sameValue(1 / Math.trunc(-0.9999999999999999), Number.NEGATIVE_INFINITY,
+  "Math.trunc should produce -0 for values between -1 and 0");
+assert.sameValue(1 / Math.trunc(-Number.EPSILON), Number.NEGATIVE_INFINITY,
+  "Math.trunc should produce -0 for values between -1 and 0");
+assert.sameValue(1 / Math.trunc(-Number.MIN_VALUE), Number.NEGATIVE_INFINITY,
+  "Math.trunc should produce -0 for values between -1 and 0");
+
+assert.sameValue(Math.trunc(Number.MAX_VALUE), Math.floor(Number.MAX_VALUE),
+  "Math.trunc produces incorrect result for Number.MAX_VALUE");
+assert.sameValue(Math.trunc(10), Math.floor(10),
+  "Math.trunc produces incorrect result for 10");
+assert.sameValue(Math.trunc(3.9), Math.floor(3.9),
+  "Math.trunc produces incorrect result for 3.9");
+assert.sameValue(Math.trunc(4.9), Math.floor(4.9),
+  "Math.trunc produces incorrect result for 4.9");
+
+assert.sameValue(Math.trunc(-Number.MAX_VALUE), Math.ceil(-Number.MAX_VALUE),
+  "Math.trunc produces incorrect result for -Number.MAX_VALUE");
+assert.sameValue(Math.trunc(-10), Math.ceil(-10),
+  "Math.trunc produces incorrect result for -10");
+assert.sameValue(Math.trunc(-3.9), Math.ceil(-3.9),
+  "Math.trunc produces incorrect result for -3.9");
+assert.sameValue(Math.trunc(-4.9), Math.ceil(-4.9),
+  "Math.trunc produces incorrect result for -4.9");
index 4339aba..19efbf6 100644 (file)
@@ -1,16 +1,16 @@
-// Copyright 2015 Microsoft Corporation. All rights reserved.\r
-// This code is governed by the license found in the LICENSE file.\r
-\r
-/*---\r
-description: Math.trunc with sample values.\r
-es6id: 20.2.2.35\r
----*/\r
-\r
-assert.sameValue(Math.trunc(Number.NEGATIVE_INFINITY), Number.NEGATIVE_INFINITY,\r
-  "Math.trunc should produce negative infinity for Number.NEGATIVE_INFINITY");\r
-assert.sameValue(Math.trunc(Number.POSITIVE_INFINITY), Number.POSITIVE_INFINITY,\r
-  "Math.trunc should produce positive infinity for Number.POSITIVE_INFINITY");\r
-assert.sameValue(1 / Math.trunc(-0), Number.NEGATIVE_INFINITY,\r
-  "Math.trunc should produce -0 for -0");\r
-assert.sameValue(1 / Math.trunc(0), Number.POSITIVE_INFINITY,\r
-  "Math.trunc should produce +0 for +0");\r
+// Copyright 2015 Microsoft Corporation. All rights reserved.
+// This code is governed by the license found in the LICENSE file.
+
+/*---
+description: Math.trunc with sample values.
+es6id: 20.2.2.35
+---*/
+
+assert.sameValue(Math.trunc(Number.NEGATIVE_INFINITY), Number.NEGATIVE_INFINITY,
+  "Math.trunc should produce negative infinity for Number.NEGATIVE_INFINITY");
+assert.sameValue(Math.trunc(Number.POSITIVE_INFINITY), Number.POSITIVE_INFINITY,
+  "Math.trunc should produce positive infinity for Number.POSITIVE_INFINITY");
+assert.sameValue(1 / Math.trunc(-0), Number.NEGATIVE_INFINITY,
+  "Math.trunc should produce -0 for -0");
+assert.sameValue(1 / Math.trunc(0), Number.POSITIVE_INFINITY,
+  "Math.trunc should produce +0 for +0");
index 1cf400c..e1f3232 100644 (file)
@@ -15,6 +15,8 @@ info: |
 includes: [propertyHelper.js]
 ---*/
 
-verifyNotEnumerable(Intl, "getCanonicalLocales");
-verifyWritable(Intl, "getCanonicalLocales");
-verifyConfigurable(Intl, "getCanonicalLocales");
+verifyProperty(Intl, 'getCanonicalLocales', {
+  writable: true,
+  enumerable: false,
+  configurable: true,
+});
index 74fc645..cff587c 100644 (file)
@@ -15,5 +15,5 @@ assert(compareArray(
   Intl.getCanonicalLocales(
     ['ab-cd', 'ff', 'de-rt', 'ab-Cd']), ['ab-CD', 'ff', 'de-RT']));
 
-var locales = Intl.getCanonicalLocales(["en-US", "en-US"]);
+var locales = Intl.getCanonicalLocales(['en-US', 'en-US']);
 assert(compareArray(locales, ['en-US']), 'en-US');
diff --git a/JSTests/test262/test/intl402/Locale/constructor-getter-order.js b/JSTests/test262/test/intl402/Locale/constructor-getter-order.js
new file mode 100644 (file)
index 0000000..b12ae8b
--- /dev/null
@@ -0,0 +1,125 @@
+// Copyright 2018 Igalia, S.L. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+esid: sec-intl.locale
+description: >
+    Checks the order of evaluations of arguments and options for the Locale
+    constructor.
+features: [Intl.Locale]
+includes: [compareArray.js]
+---*/
+
+const order = [];
+new Intl.Locale(
+  { toString() { order.push("tag toString"); return "en"; } },
+  {
+    get language() {
+      order.push("get language");
+      return {
+        toString() {
+          order.push("toString language");
+          return "de";
+        }
+      }
+    },
+
+    get script() {
+      order.push("get script");
+      return {
+        toString() {
+          order.push("toString script");
+          return "Latn";
+        }
+      }
+    },
+
+    get region() {
+      order.push("get region");
+      return {
+        toString() {
+          order.push("toString region");
+          return "DE";
+        }
+      }
+    },
+
+    get calendar() {
+      order.push("get calendar");
+      return {
+        toString() {
+          order.push("toString calendar");
+          return "gregory";
+        }
+      }
+    },
+
+    get collation() {
+      order.push("get collation");
+      return {
+        toString() {
+          order.push("toString collation");
+          return "zhuyin";
+        }
+      }
+    },
+
+    get hourCycle() {
+      order.push("get hourCycle");
+      return {
+        toS