diff --git a/packages/shared/__tests__/toDisplayString.spec.ts b/packages/shared/__tests__/toDisplayString.spec.ts index 8e76c4322f9..385e40e35c9 100644 --- a/packages/shared/__tests__/toDisplayString.spec.ts +++ b/packages/shared/__tests__/toDisplayString.spec.ts @@ -19,6 +19,9 @@ describe('toDisplayString', () => { expect(toDisplayString(obj)).toBe(JSON.stringify(obj, null, 2)) const arr = [obj] expect(toDisplayString(arr)).toBe(JSON.stringify(arr, null, 2)) + const foo = Object.create(null) + foo.bar = 1 + expect(toDisplayString(foo)).toBe(JSON.stringify(foo, null, 2)) }) test('refs', () => { @@ -31,7 +34,7 @@ describe('toDisplayString', () => { }) ).toBe(JSON.stringify({ n: 1, np: 2 }, null, 2)) }) - + test('objects with custom toString', () => { class TestClass { toString() { diff --git a/packages/shared/src/toDisplayString.ts b/packages/shared/src/toDisplayString.ts index a374f525d6b..62a042bea47 100644 --- a/packages/shared/src/toDisplayString.ts +++ b/packages/shared/src/toDisplayString.ts @@ -2,6 +2,7 @@ import { isArray, isMap, isObject, + isFunction, isPlainObject, isSet, objectToString @@ -14,7 +15,9 @@ import { export const toDisplayString = (val: unknown): string => { return val == null ? '' - : isArray(val) || (isObject(val) && val.toString === objectToString) + : isArray(val) || + (isObject(val) && + (val.toString === objectToString || !isFunction(val.toString))) ? JSON.stringify(val, replacer, 2) : String(val) }