util: reconstruct constructor in more cases
This makes sure the constructor is reconstructed in cases where we otherwise would not be able to detect the actual constructor anymore. That way some `util.inspect` output is improved. PR-URL: https://github.com/nodejs/node/pull/27668 Reviewed-By: Anna Henningsen <anna@addaleax.net> Reviewed-By: Rich Trott <rtrott@gmail.com> Reviewed-By: Anto Aravinth <anto.aravinth.cse@gmail.com>
This commit is contained in:
parent
35fc1b4e96
commit
a92ad36894
@ -727,12 +727,20 @@ function formatRaw(ctx, value, recurseTimes, typedArray) {
|
||||
braces = getIteratorBraces('Set', tag);
|
||||
formatter = formatIterator;
|
||||
// Handle other regular objects again.
|
||||
} else if (keys.length === 0) {
|
||||
if (isExternal(value))
|
||||
return ctx.stylize('[External]', 'special');
|
||||
return `${getPrefix(constructor, tag, 'Object')}{}`;
|
||||
} else {
|
||||
braces[0] = `${getPrefix(constructor, tag, 'Object')}{`;
|
||||
let fallback = '';
|
||||
if (constructor === null) {
|
||||
fallback = internalGetConstructorName(value);
|
||||
if (fallback === tag) {
|
||||
fallback = 'Object';
|
||||
}
|
||||
}
|
||||
if (keys.length === 0) {
|
||||
if (isExternal(value))
|
||||
return ctx.stylize('[External]', 'special');
|
||||
return `${getPrefix(constructor, tag, fallback)}{}`;
|
||||
}
|
||||
braces[0] = `${getPrefix(constructor, tag, fallback)}{`;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -1156,6 +1156,10 @@ if (typeof Symbol !== 'undefined') {
|
||||
util.inspect({ a: { b: new ArraySubclass([1, [2], 3]) } }, { depth: 1 }),
|
||||
'{ a: { b: [ArraySubclass] } }'
|
||||
);
|
||||
assert.strictEqual(
|
||||
util.inspect(Object.setPrototypeOf(x, null)),
|
||||
'[ObjectSubclass: null prototype] { foo: 42 }'
|
||||
);
|
||||
}
|
||||
|
||||
// Empty and circular before depth.
|
||||
|
Loading…
x
Reference in New Issue
Block a user