diff options
Diffstat (limited to 'js/src/tests/test262/built-ins/Symbol/prototype/Symbol.toPrimitive/redefined-symbol-wrapper-ordinary-toprimitive.js')
-rw-r--r-- | js/src/tests/test262/built-ins/Symbol/prototype/Symbol.toPrimitive/redefined-symbol-wrapper-ordinary-toprimitive.js | 33 |
1 files changed, 33 insertions, 0 deletions
diff --git a/js/src/tests/test262/built-ins/Symbol/prototype/Symbol.toPrimitive/redefined-symbol-wrapper-ordinary-toprimitive.js b/js/src/tests/test262/built-ins/Symbol/prototype/Symbol.toPrimitive/redefined-symbol-wrapper-ordinary-toprimitive.js new file mode 100644 index 0000000000..365b97f782 --- /dev/null +++ b/js/src/tests/test262/built-ins/Symbol/prototype/Symbol.toPrimitive/redefined-symbol-wrapper-ordinary-toprimitive.js @@ -0,0 +1,33 @@ +// Copyright (C) 2021 Alexey Shvayka. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. +/*--- +esid: sec-symbol.prototype-@@toprimitive +description: > + If redefined to nullish value, Symbol wrapper object is converted to primitive + via OrdinaryToPrimitive. +info: | + ToPrimitive ( input [ , preferredType ] ) + + [...] + 2. If Type(input) is Object, then + a. Let exoticToPrim be ? GetMethod(input, @@toPrimitive). + b. If exoticToPrim is not undefined, then + [...] + c. If preferredType is not present, let preferredType be number. + d. Return ? OrdinaryToPrimitive(input, preferredType). +features: [Symbol.toPrimitive] +---*/ + +Object.defineProperty(Symbol.prototype, Symbol.toPrimitive, { value: null }); + +assert.sameValue(Object(Symbol()) == "Symbol()", false, "hint: default"); +assert.throws(TypeError, () => { +Object(Symbol()); }, "hint: number"); +assert.sameValue(`${Object(Symbol())}`, "Symbol()", "hint: string"); + +Object.defineProperty(Symbol.prototype, Symbol.toPrimitive, { value: undefined }); + +assert(Object(Symbol.iterator) == Symbol.iterator, "hint: default"); +assert.throws(TypeError, () => { Object(Symbol()) <= ""; }, "hint: number"); +assert.sameValue({ "Symbol()": 1 }[Object(Symbol())], 1, "hint: string"); + +reportCompare(0, 0); |