mirror of
https://github.com/denoland/deno.git
synced 2025-01-03 12:58:54 -05:00
fix(cli/console): Catch and format getter errors (#7766)
This commit is contained in:
parent
290da280a8
commit
b689e60b60
2 changed files with 35 additions and 20 deletions
|
@ -762,29 +762,33 @@
|
|||
);
|
||||
}
|
||||
|
||||
const red = maybeColor(colors.red, inspectOptions);
|
||||
|
||||
for (const key of stringKeys) {
|
||||
entries.push(
|
||||
`${maybeQuoteString(key)}: ${
|
||||
inspectValueWithQuotes(
|
||||
value[key],
|
||||
ctx,
|
||||
level + 1,
|
||||
inspectOptions,
|
||||
)
|
||||
}`,
|
||||
);
|
||||
let propertyValue;
|
||||
let error = null;
|
||||
try {
|
||||
propertyValue = value[key];
|
||||
} catch (error_) {
|
||||
error = error_;
|
||||
}
|
||||
const inspectedValue = error == null
|
||||
? inspectValueWithQuotes(propertyValue, ctx, level + 1, inspectOptions)
|
||||
: red(`[Thrown ${error.name}: ${error.message}]`);
|
||||
entries.push(`${maybeQuoteString(key)}: ${inspectedValue}`);
|
||||
}
|
||||
for (const key of symbolKeys) {
|
||||
entries.push(
|
||||
`[${maybeQuoteSymbol(key)}]: ${
|
||||
inspectValueWithQuotes(
|
||||
value[key],
|
||||
ctx,
|
||||
level + 1,
|
||||
inspectOptions,
|
||||
)
|
||||
}`,
|
||||
);
|
||||
let propertyValue;
|
||||
let error;
|
||||
try {
|
||||
propertyValue = value[key];
|
||||
} catch (error_) {
|
||||
error = error_;
|
||||
}
|
||||
const inspectedValue = error == null
|
||||
? inspectValueWithQuotes(propertyValue, ctx, level + 1, inspectOptions)
|
||||
: red(`Thrown ${error.name}: ${error.message}`);
|
||||
entries.push(`[${maybeQuoteSymbol(key)}]: ${inspectedValue}`);
|
||||
}
|
||||
// Making sure color codes are ignored when calculating the total length
|
||||
const totalLength = entries.length + level +
|
||||
|
|
|
@ -1498,6 +1498,17 @@ unitTest(function inspectString(): void {
|
|||
);
|
||||
});
|
||||
|
||||
unitTest(function inspectGetterError(): void {
|
||||
assertEquals(
|
||||
Deno.inspect({
|
||||
get foo() {
|
||||
throw new Error("bar");
|
||||
},
|
||||
}),
|
||||
"{ foo: [Thrown Error: bar] }",
|
||||
);
|
||||
});
|
||||
|
||||
unitTest(function inspectSorted(): void {
|
||||
assertEquals(
|
||||
stripColor(Deno.inspect({ b: 2, a: 1 }, { sorted: true })),
|
||||
|
|
Loading…
Reference in a new issue