diff options
author | Yoshiya Hinosawa <stibium121@gmail.com> | 2020-10-12 05:04:26 +0900 |
---|---|---|
committer | GitHub <noreply@github.com> | 2020-10-11 22:04:26 +0200 |
commit | 265a9fb9323a11067b4b826acc7624f2e62f1102 (patch) | |
tree | 60abd5c4fd490f237db2d2c52e51ee0f95518d33 /cli/tests/unit/console_test.ts | |
parent | 86dc55134ef25c1bc4f8db6c3c0dc635c1660ea4 (diff) |
fix(console): fix inspection of Function (#7930)
This commit fixes the inspection of functions. The current
implementation gets the name of the type of the function
from "f.__proto__.constructor.name", and it throws when
the prototype is set to null.
This commit checks the prototype before accessing its
constructor name and uses the generic name 'Function'
if the prototype is not available.
Diffstat (limited to 'cli/tests/unit/console_test.ts')
-rw-r--r-- | cli/tests/unit/console_test.ts | 15 |
1 files changed, 15 insertions, 0 deletions
diff --git a/cli/tests/unit/console_test.ts b/cli/tests/unit/console_test.ts index df1420345..00a5927b1 100644 --- a/cli/tests/unit/console_test.ts +++ b/cli/tests/unit/console_test.ts @@ -347,6 +347,21 @@ unitTest(function consoleTestStringifyCircular(): void { }); /* eslint-enable @typescript-eslint/explicit-function-return-type */ +unitTest(function consoleTestStringifyFunctionWithPrototypeRemoved(): void { + const f = function f() {}; + Reflect.setPrototypeOf(f, null); + assertEquals(stringify(f), "[Function: f]"); + const af = async function af() {}; + Reflect.setPrototypeOf(af, null); + assertEquals(stringify(af), "[Function: af]"); + const gf = function gf() {}; + Reflect.setPrototypeOf(gf, null); + assertEquals(stringify(gf), "[Function: gf]"); + const agf = function agf() {}; + Reflect.setPrototypeOf(agf, null); + assertEquals(stringify(agf), "[Function: agf]"); +}); + unitTest(function consoleTestStringifyWithDepth(): void { // eslint-disable-next-line @typescript-eslint/no-explicit-any const nestedObj: any = { a: { b: { c: { d: { e: { f: 42 } } } } } }; |