| 'use strict'; | |
| var callBound = require('../helpers/callBound'); | |
| var $SymbolValueOf = callBound('Symbol.prototype.valueOf', true); | |
| var Type = require('./Type'); | |
| // https://ecma-international.org/ecma-262/9.0/#sec-thissymbolvalue | |
| module.exports = function thisSymbolValue(value) { | |
| if (!$SymbolValueOf) { | |
| throw new SyntaxError('Symbols are not supported; thisSymbolValue requires that `value` be a Symbol or a Symbol object'); | |
| } | |
| if (Type(value) === 'Symbol') { | |
| return value; | |
| } | |
| return $SymbolValueOf(value); | |
| }; |