'use strict'; var GetIntrinsic = require('../GetIntrinsic'); var callBound = require('./callBound'); var $SyntaxError = GetIntrinsic('%SyntaxError%'); var symToStr = callBound('Symbol.prototype.toString', true); var getInferredName = require('./getInferredName'); module.exports = function getSymbolDescription(symbol) { if (!symToStr) { throw new $SyntaxError('Symbols are not supported in this environment'); } var str = symToStr(symbol); // will throw if not a symbol if (getInferredName) { var name = getInferredName(symbol); if (name === '') { return; } // eslint-disable-next-line consistent-return return name.slice(1, -1); // name.slice('['.length, -']'.length); } var desc = str.slice(7, -1); // str.slice('Symbol('.length, -')'.length); if (desc) { // eslint-disable-next-line consistent-return return desc; } };