summaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
authorRuben Bridgewater <ruben@bridgewater.de>2018-12-28 02:27:14 +0100
committerDaniel Bevenius <daniel.bevenius@gmail.com>2019-01-11 07:31:55 +0100
commiteca2760ab167a253bf57e43b1f3531404aaceef9 (patch)
treec404b57a45e4164b52babd560408f1e655260db6 /lib
parent7237eaa3353aacf284289c8b59b0a5e0fa5744bb (diff)
downloadandroid-node-v8-eca2760ab167a253bf57e43b1f3531404aaceef9.tar.gz
android-node-v8-eca2760ab167a253bf57e43b1f3531404aaceef9.tar.bz2
android-node-v8-eca2760ab167a253bf57e43b1f3531404aaceef9.zip
util: switch recurseTimes counter
This makes sure the counter goes up instead of going down. This allows to properly track the current inspection depth no matter what the `depth` option was set to. PR-URL: https://github.com/nodejs/node/pull/25255 Reviewed-By: James M Snell <jasnell@gmail.com>
Diffstat (limited to 'lib')
-rw-r--r--lib/internal/util/inspect.js23
1 files changed, 12 insertions, 11 deletions
diff --git a/lib/internal/util/inspect.js b/lib/internal/util/inspect.js
index 3a41f781e0..1c77738975 100644
--- a/lib/internal/util/inspect.js
+++ b/lib/internal/util/inspect.js
@@ -193,7 +193,7 @@ function inspect(value, opts) {
}
if (ctx.colors) ctx.stylize = stylizeWithColor;
if (ctx.maxArrayLength === null) ctx.maxArrayLength = Infinity;
- return formatValue(ctx, value, ctx.depth);
+ return formatValue(ctx, value, 0);
}
inspect.custom = customInspectSymbol;
@@ -407,11 +407,10 @@ function getCtxStyle(constructor, tag) {
}
function formatProxy(ctx, proxy, recurseTimes) {
- if (recurseTimes != null) {
- if (recurseTimes < 0)
- return ctx.stylize('Proxy [Array]', 'special');
- recurseTimes -= 1;
+ if (recurseTimes > ctx.depth && ctx.depth !== null) {
+ return ctx.stylize('Proxy [Array]', 'special');
}
+ recurseTimes += 1;
ctx.indentationLvl += 2;
const res = [
formatValue(ctx, proxy[0], recurseTimes),
@@ -526,7 +525,10 @@ function formatValue(ctx, value, recurseTimes, typedArray) {
maybeCustom !== inspect &&
// Also filter out any prototype objects using the circular check.
!(value.constructor && value.constructor.prototype === value)) {
- const ret = maybeCustom.call(value, recurseTimes, ctx);
+ // This makes sure the recurseTimes are reported as before while using
+ // a counter internally.
+ const depth = ctx.depth === null ? null : ctx.depth - recurseTimes;
+ const ret = maybeCustom.call(value, depth, ctx);
// If the custom inspection method returned `this`, don't go into
// infinite recursion.
@@ -643,7 +645,7 @@ function formatRaw(ctx, value, recurseTimes, typedArray) {
const prefix = getPrefix(constructor, tag, 'RegExp');
if (prefix !== 'RegExp ')
base = `${prefix}${base}`;
- if (keys.length === 0 || recurseTimes < 0)
+ if (keys.length === 0 || recurseTimes > ctx.depth && ctx.depth !== null)
return ctx.stylize(base, 'regexp');
} else if (isDate(value)) {
// Make dates with properties first say the date
@@ -757,11 +759,10 @@ function formatRaw(ctx, value, recurseTimes, typedArray) {
}
}
- if (recurseTimes != null) {
- if (recurseTimes < 0)
- return ctx.stylize(`[${getCtxStyle(constructor, tag)}]`, 'special');
- recurseTimes -= 1;
+ if (recurseTimes > ctx.depth && ctx.depth !== null) {
+ return ctx.stylize(`[${getCtxStyle(constructor, tag)}]`, 'special');
}
+ recurseTimes += 1;
ctx.seen.push(value);
let output;