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);
|
braces = getIteratorBraces('Set', tag);
|
||||||
formatter = formatIterator;
|
formatter = formatIterator;
|
||||||
// Handle other regular objects again.
|
// Handle other regular objects again.
|
||||||
} else if (keys.length === 0) {
|
|
||||||
if (isExternal(value))
|
|
||||||
return ctx.stylize('[External]', 'special');
|
|
||||||
return `${getPrefix(constructor, tag, 'Object')}{}`;
|
|
||||||
} else {
|
} 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 }),
|
util.inspect({ a: { b: new ArraySubclass([1, [2], 3]) } }, { depth: 1 }),
|
||||||
'{ a: { b: [ArraySubclass] } }'
|
'{ a: { b: [ArraySubclass] } }'
|
||||||
);
|
);
|
||||||
|
assert.strictEqual(
|
||||||
|
util.inspect(Object.setPrototypeOf(x, null)),
|
||||||
|
'[ObjectSubclass: null prototype] { foo: 42 }'
|
||||||
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Empty and circular before depth.
|
// Empty and circular before depth.
|
||||||
|
Loading…
x
Reference in New Issue
Block a user