diff options
author | Ruben Bridgewater <ruben@bridgewater.de> | 2018-12-28 02:27:14 +0100 |
---|---|---|
committer | Daniel Bevenius <daniel.bevenius@gmail.com> | 2019-01-11 07:31:55 +0100 |
commit | eca2760ab167a253bf57e43b1f3531404aaceef9 (patch) | |
tree | c404b57a45e4164b52babd560408f1e655260db6 /lib | |
parent | 7237eaa3353aacf284289c8b59b0a5e0fa5744bb (diff) | |
download | android-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.js | 23 |
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; |