|
|
- '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;
- }
- };
|