Skip to content

Commit

Permalink
util: switch recurseTimes counter
Browse files Browse the repository at this point in the history
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: nodejs#25255
Reviewed-By: James M Snell <jasnell@gmail.com>
  • Loading branch information
BridgeAR committed Jan 16, 2019
1 parent 613d2b3 commit c7cffca
Showing 1 changed file with 12 additions and 11 deletions.
23 changes: 12 additions & 11 deletions lib/internal/util/inspect.js
Original file line number Diff line number Diff line change
Expand Up @@ -192,7 +192,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;

Expand Down Expand Up @@ -406,11 +406,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),
Expand Down Expand Up @@ -525,7 +524,10 @@ function formatValue(ctx, value, recurseTimes) {
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.
Expand Down Expand Up @@ -642,7 +644,7 @@ function formatRaw(ctx, value, recurseTimes) {
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
Expand Down Expand Up @@ -753,11 +755,10 @@ function formatRaw(ctx, value, recurseTimes) {
}
}

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;
Expand Down

0 comments on commit c7cffca

Please sign in to comment.