summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorColin Ihrig <cjihrig@gmail.com>2022-06-13 10:59:22 -0400
committerGitHub <noreply@github.com>2022-06-13 10:59:22 -0400
commit64abb65f0514afc1f10c426561e5150d9cae6b45 (patch)
tree33bb5a45945acbb8335cfae7719334d038621f60
parent7b1662a8e648d01a1f4af4623f3deea7ab8d1432 (diff)
feat(console): pass options and depth to custom inspects (#14855)
This commit updates Deno.inspect() to pass inspect options and the current inspect depth to custom inspect functions. Refs: https://github.com/denoland/deno/issues/8099 Refs: https://github.com/denoland/deno/issues/14171
-rw-r--r--cli/tests/unit/console_test.ts9
-rw-r--r--ext/console/02_console.js8
2 files changed, 13 insertions, 4 deletions
diff --git a/cli/tests/unit/console_test.ts b/cli/tests/unit/console_test.ts
index d349266e8..fbaba9e43 100644
--- a/cli/tests/unit/console_test.ts
+++ b/cli/tests/unit/console_test.ts
@@ -884,7 +884,14 @@ Deno.test(async function consoleTestStringifyPromises() {
Deno.test(function consoleTestWithCustomInspector() {
class A {
- [customInspect](): string {
+ [customInspect](
+ inspect: unknown,
+ options: Deno.InspectOptions,
+ depth: number,
+ ): string {
+ assertEquals(typeof inspect, "function");
+ assertEquals(typeof options, "object");
+ assertEquals(depth, 0);
return "b";
}
}
diff --git a/ext/console/02_console.js b/ext/console/02_console.js
index 638047b3a..71eb58198 100644
--- a/ext/console/02_console.js
+++ b/ext/console/02_console.js
@@ -335,7 +335,7 @@
ReflectHas(value, customInspect) &&
typeof value[customInspect] === "function"
) {
- return String(value[customInspect](inspect));
+ return String(value[customInspect](inspect, inspectOptions, level));
}
// Might be Function/AsyncFunction/GeneratorFunction/AsyncGeneratorFunction
let cstrName = ObjectGetPrototypeOf(value)?.constructor?.name;
@@ -1258,7 +1258,7 @@
ReflectHas(value, customInspect) &&
typeof value[customInspect] === "function"
) {
- return String(value[customInspect](inspect));
+ return String(value[customInspect](inspect, inspectOptions, level));
}
// This non-unique symbol is used to support op_crates, ie.
// in extensions/web we don't want to depend on public
@@ -1273,7 +1273,9 @@
// inspect implementations in `extensions` need it, but may not have access
// to the `Deno` namespace in web workers. Remove when the `Deno`
// namespace is always enabled.
- return String(value[privateCustomInspect](inspect));
+ return String(
+ value[privateCustomInspect](inspect, inspectOptions, level),
+ );
}
if (ObjectPrototypeIsPrototypeOf(ErrorPrototype, value)) {
return inspectError(value, maybeColor(colors.cyan, inspectOptions));