Skip to content

Commit 02d01fb

Browse files
committed
util: inspect: enumerable Symbols no longer have square brackets
Implements https://github.com/orgs/nodejs/discussions/41283#discussioncomment-11188239
1 parent f33d6bb commit 02d01fb

File tree

2 files changed

+28
-31
lines changed

2 files changed

+28
-31
lines changed

lib/internal/util/inspect.js

Lines changed: 6 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1999,21 +1999,16 @@ function formatProperty(ctx, value, recurseTimes, key, type, desc,
19991999
SymbolPrototypeToString(key),
20002000
escapeFn,
20012001
);
2002-
name = `[${ctx.stylize(tmp, 'symbol')}]`;
2003-
} else if (key === '__proto__') {
2004-
name = "['__proto__']";
2005-
} else if (desc.enumerable === false) {
2006-
const tmp = RegExpPrototypeSymbolReplace(
2007-
strEscapeSequencesReplacer,
2008-
key,
2009-
escapeFn,
2010-
);
2011-
name = `[${tmp}]`;
2002+
name = ctx.stylize(tmp, 'symbol');
20122003
} else if (RegExpPrototypeExec(keyStrRegExp, key) !== null) {
2013-
name = ctx.stylize(key, 'name');
2004+
name = key === '__proto__' ? "['__proto__']" : ctx.stylize(key, 'name');
20142005
} else {
20152006
name = ctx.stylize(strEscape(key), 'string');
20162007
}
2008+
2009+
if (desc.enumerable === false) {
2010+
name = `[${name}]`;
2011+
}
20172012
return `${name}:${extra}${str}`;
20182013
}
20192014

test/parallel/test-util-inspect.js

Lines changed: 22 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -145,7 +145,7 @@ assert.strictEqual(
145145
Object.assign(new String('hello'), { [Symbol('foo')]: 123 }),
146146
{ showHidden: true }
147147
),
148-
"[String: 'hello'] { [length]: 5, [Symbol(foo)]: 123 }"
148+
"[String: 'hello'] { [length]: 5, Symbol(foo): 123 }"
149149
);
150150

151151
assert.match(util.inspect((new JSStream())._externalStream),
@@ -823,7 +823,7 @@ assert.strictEqual(util.inspect({ __proto__: Date.prototype }), 'Date {}');
823823
{
824824
const x = { [util.inspect.custom]: util.inspect };
825825
assert(util.inspect(x).includes(
826-
'[Symbol(nodejs.util.inspect.custom)]: [Function: inspect] {\n'));
826+
'Symbol(nodejs.util.inspect.custom): [Function: inspect] {\n'));
827827
}
828828

829829
// `util.inspect` should display the escaped value of a key.
@@ -1045,7 +1045,7 @@ util.inspect({ hasOwnProperty: null });
10451045
const UIC = 'nodejs.util.inspect.custom';
10461046
assert.strictEqual(
10471047
util.inspect(subject),
1048-
`{\n a: 123,\n [Symbol(${UIC})]: [Function: [${UIC}]]\n}`
1048+
`{\n a: 123,\n Symbol(${UIC}): [Function: [${UIC}]]\n}`
10491049
);
10501050
}
10511051

@@ -1145,27 +1145,29 @@ if (typeof Symbol !== 'undefined') {
11451145

11461146
subject[Symbol('sym\nbol')] = 42;
11471147

1148-
assert.strictEqual(util.inspect(subject), '{ [Symbol(sym\\nbol)]: 42 }');
1148+
assert.strictEqual(util.inspect(subject), '{ Symbol(sym\\nbol): 42 }');
11491149
assert.strictEqual(
11501150
util.inspect(subject, options),
1151-
'{ [Symbol(sym\\nbol)]: 42 }'
1151+
'{ Symbol(sym\\nbol): 42 }'
11521152
);
11531153

11541154
Object.defineProperty(
11551155
subject,
11561156
Symbol(),
11571157
{ enumerable: false, value: 'non-enum' });
1158-
assert.strictEqual(util.inspect(subject), '{ [Symbol(sym\\nbol)]: 42 }');
1158+
assert.strictEqual(util.inspect(subject), '{ Symbol(sym\\nbol): 42 }');
11591159
assert.strictEqual(
11601160
util.inspect(subject, options),
1161-
"{ [Symbol(sym\\nbol)]: 42, [Symbol()]: 'non-enum' }"
1161+
"{ Symbol(sym\\nbol): 42, [Symbol()]: 'non-enum' }"
11621162
);
11631163

11641164
subject = [1, 2, 3];
11651165
subject[Symbol('symbol')] = 42;
11661166

1167-
assert.strictEqual(util.inspect(subject),
1168-
'[ 1, 2, 3, [Symbol(symbol)]: 42 ]');
1167+
assert.strictEqual(
1168+
util.inspect(subject),
1169+
'[ 1, 2, 3, Symbol(symbol): 42 ]'
1170+
);
11691171
}
11701172

11711173
// Test Set.
@@ -1589,7 +1591,7 @@ util.inspect(process);
15891591
const obj = { [util.inspect.custom]: 'fhqwhgads' };
15901592
assert.strictEqual(
15911593
util.inspect(obj),
1592-
"{ [Symbol(nodejs.util.inspect.custom)]: 'fhqwhgads' }"
1594+
"{ Symbol(nodejs.util.inspect.custom): 'fhqwhgads' }"
15931595
);
15941596
}
15951597

@@ -1598,7 +1600,7 @@ util.inspect(process);
15981600
const obj = { [Symbol.toStringTag]: 'a' };
15991601
assert.strictEqual(
16001602
util.inspect(obj),
1601-
"{ [Symbol(Symbol.toStringTag)]: 'a' }"
1603+
"{ Symbol(Symbol.toStringTag): 'a' }"
16021604
);
16031605
Object.defineProperty(obj, Symbol.toStringTag, {
16041606
value: 'a',
@@ -2268,7 +2270,7 @@ assert.strictEqual(util.inspect('"\'${a}'), "'\"\\'${a}'");
22682270
value[Symbol('foo')] = 'yeah';
22692271
res = util.inspect(value);
22702272
assert.notStrictEqual(res, expectedWithoutProto);
2271-
assert.match(res, /\[Symbol\(foo\)]: 'yeah'/);
2273+
assert.match(res, /Symbol\(foo\): 'yeah'/);
22722274
});
22732275

22742276
assert.strictEqual(inspect(1n), '1n');
@@ -2284,7 +2286,7 @@ assert.strictEqual(
22842286
Object.defineProperty(obj, 'Non\nenumerable\tkey', { value: true });
22852287
assert.strictEqual(
22862288
util.inspect(obj, { showHidden: true }),
2287-
'{ [Non\\nenumerable\\tkey]: true }'
2289+
'{ [\'Non\\nenumerable\\tkey\']: true }'
22882290
);
22892291
}
22902292

@@ -2375,7 +2377,7 @@ assert.strictEqual(
23752377
arr[Symbol('a')] = false;
23762378
assert.strictEqual(
23772379
inspect(arr, { sorted: true }),
2378-
'[ 3, 2, 1, [Symbol(a)]: false, [Symbol(b)]: true, a: 1, b: 2, c: 3 ]'
2380+
'[ 3, 2, 1, Symbol(a): false, Symbol(b): true, a: 1, b: 2, c: 3 ]'
23792381
);
23802382
}
23812383

@@ -3263,7 +3265,7 @@ assert.strictEqual(
32633265
Object.defineProperty(o, '__proto__', { enumerable: false });
32643266
assert.strictEqual(
32653267
util.inspect(o, { showHidden: true }),
3266-
"{ ['__proto__']: { a: 1 } }"
3268+
"{ [['__proto__']]: { a: 1 } }"
32673269
);
32683270
}
32693271

@@ -3328,11 +3330,11 @@ assert.strictEqual(
33283330
get [Symbol.iterator]() {
33293331
throw new Error();
33303332
}
3331-
}), '{ [Symbol(Symbol.iterator)]: [Getter] }');
3333+
}), '{ Symbol(Symbol.iterator): [Getter] }');
33323334
}
33333335

33343336
{
3335-
const sym = Symbol('bar');
3337+
const sym = Symbol('bar()');
33363338
const o = {
33373339
foo: 0,
33383340
'Symbol(foo)': 0,
@@ -3347,9 +3349,9 @@ assert.strictEqual(
33473349
'{\n' +
33483350
' foo: 0,\n' +
33493351
" 'Symbol(foo)': 0,\n" +
3350-
' [Symbol(foo)]: 0,\n' +
3351-
' [Symbol(foo())]: 0,\n' +
3352-
' [Symbol(bar)]: 0\n' +
3352+
' Symbol(foo): 0,\n' +
3353+
' Symbol(foo()): 0,\n' +
3354+
' [Symbol(bar())]: 0\n' +
33533355
'}'
33543356
)
33553357
}

0 commit comments

Comments
 (0)