Skip to content

Commit 94abb5d

Browse files
committed
[Refactor] use has-tostringtag to behave correctly in the presence of symbol shams
1 parent dcee6ed commit 94abb5d

File tree

6 files changed

+13
-8
lines changed

6 files changed

+13
-8
lines changed

Diff for: index.js

+4-1
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,10 @@ var bigIntValueOf = typeof BigInt === 'function' ? BigInt.prototype.valueOf : nu
2020
var gOPS = Object.getOwnPropertySymbols;
2121
var symToString = typeof Symbol === 'function' && typeof Symbol.iterator === 'symbol' ? Symbol.prototype.toString : null;
2222
var hasShammedSymbols = typeof Symbol === 'function' && typeof Symbol.iterator === 'object';
23+
// ie, `has-tostringtag/shams
24+
var toStringTag = typeof Symbol === 'function' && Symbol.toStringTag && (typeof Symbol.toStringTag === hasShammedSymbols ? 'object' : 'symbol')
25+
? Symbol.toStringTag
26+
: null;
2327
var isEnumerable = Object.prototype.propertyIsEnumerable;
2428

2529
var gPO = (typeof Reflect === 'function' ? Reflect.getPrototypeOf : Object.getPrototypeOf) || (
@@ -32,7 +36,6 @@ var gPO = (typeof Reflect === 'function' ? Reflect.getPrototypeOf : Object.getPr
3236

3337
var inspectCustom = require('./util.inspect').custom;
3438
var inspectSymbol = inspectCustom && isSymbol(inspectCustom) ? inspectCustom : null;
35-
var toStringTag = typeof Symbol === 'function' && typeof Symbol.toStringTag !== 'undefined' ? Symbol.toStringTag : null;
3639

3740
module.exports = function inspect_(obj, options, depth, seen) {
3841
var opts = options || {};

Diff for: package.json

+1
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@
1010
"eslint": "^7.30.0",
1111
"for-each": "^0.3.3",
1212
"functions-have-names": "^1.2.2",
13+
"has-tostringtag": "^1.0.0",
1314
"make-arrow-function": "^1.2.0",
1415
"nyc": "^10.3.2",
1516
"safe-publish-latest": "^1.1.4",

Diff for: test/bigint.js

+2-2
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22

33
var inspect = require('../');
44
var test = require('tape');
5-
var hasSymbols = require('has-symbols/shams')();
5+
var hasToStringTag = require('has-tostringtag/shams')();
66

77
test('bigint', { skip: typeof BigInt === 'undefined' }, function (t) {
88
t.test('primitives', function (st) {
@@ -30,7 +30,7 @@ test('bigint', { skip: typeof BigInt === 'undefined' }, function (t) {
3030
st.equal(inspect(Function('return 256n')()), '256n');
3131
});
3232

33-
t.test('toStringTag', { skip: !hasSymbols || typeof Symbol.toStringTag === 'undefined' }, function (st) {
33+
t.test('toStringTag', { skip: !hasToStringTag }, function (st) {
3434
st.plan(1);
3535

3636
var faker = {};

Diff for: test/fakes.js

+2-2
Original file line numberDiff line numberDiff line change
@@ -2,10 +2,10 @@
22

33
var inspect = require('../');
44
var test = require('tape');
5-
var hasSymbols = require('has-symbols/shams')();
5+
var hasToStringTag = require('has-tostringtag/shams')();
66
var forEach = require('for-each');
77

8-
test('fakes', { skip: !hasSymbols || typeof Symbol.toStringTag === 'undefined' }, function (t) {
8+
test('fakes', { skip: !hasToStringTag }, function (t) {
99
forEach([
1010
'Array',
1111
'Boolean',

Diff for: test/toStringTag.js

+2-2
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,11 @@
11
'use strict';
22

33
var test = require('tape');
4-
var hasSymbols = require('has-symbols/shams')();
4+
var hasToStringTag = require('has-tostringtag/shams')();
55

66
var inspect = require('../');
77

8-
test('Symbol.toStringTag', { skip: !hasSymbols || typeof Symbol.toStringTag === 'undefined' }, function (t) {
8+
test('Symbol.toStringTag', { skip: !hasToStringTag }, function (t) {
99
t.plan(4);
1010

1111
var obj = { a: 1 };

Diff for: test/values.js

+2-1
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
var inspect = require('../');
44
var test = require('tape');
55
var hasSymbols = require('has-symbols/shams')();
6+
var hasToStringTag = require('has-tostringtag/shams')();
67

78
test('values', function (t) {
89
t.plan(1);
@@ -76,7 +77,7 @@ test('symbols', { skip: !hasSymbols }, function (t) {
7677
t.equal(inspect(Object(sym)), 'Object(Symbol(foo))', 'Object(Symbol("foo")) should be "Object(Symbol(foo))"');
7778
}
7879

79-
t.test('toStringTag', { skip: !hasSymbols || typeof Symbol.toStringTag === 'undefined' }, function (st) {
80+
t.test('toStringTag', { skip: !hasToStringTag }, function (st) {
8081
st.plan(1);
8182

8283
var faker = {};

0 commit comments

Comments
 (0)