diff --git a/src/collapsed.js b/src/collapsed.js index 408e7cc..9d47071 100644 --- a/src/collapsed.js +++ b/src/collapsed.js @@ -21,11 +21,21 @@ export default function inspectCollapsed(object, shallow, name, proto) { let tag, fields, next, n; if (object instanceof Map) { - tag = `Map(${object.size})`; - fields = iterateMap; + if (object instanceof object.constructor) { + tag = `Map(${object.size})`; + fields = iterateMap; + } else { // avoid incompatible receiver error for prototype + tag = "Map()"; + fields = iterateObject; + } } else if (object instanceof Set) { - tag = `Set(${object.size})`; - fields = iterateSet; + if (object instanceof object.constructor) { + tag = `Set(${object.size})`; + fields = iterateSet; + } else { // avoid incompatible receiver error for prototype + tag = "Set()"; + fields = iterateObject; + } } else if (arrayish) { tag = `${object.constructor.name}(${object.length})`; fields = iterateArray; diff --git a/src/expanded.js b/src/expanded.js index 756c5db..a04f7db 100644 --- a/src/expanded.js +++ b/src/expanded.js @@ -15,11 +15,21 @@ export default function inspectExpanded(object, _, name, proto) { let tag, fields, next, n; if (object instanceof Map) { - tag = `Map(${object.size})`; - fields = iterateMap; + if (object instanceof object.constructor) { + tag = `Map(${object.size})`; + fields = iterateMap; + } else { // avoid incompatible receiver error for prototype + tag = "Map()"; + fields = iterateObject; + } } else if (object instanceof Set) { - tag = `Set(${object.size})`; - fields = iterateSet; + if (object instanceof object.constructor) { + tag = `Set(${object.size})`; + fields = iterateSet; + } else { // avoid incompatible receiver error for prototype + tag = "Set()"; + fields = iterateObject; + } } else if (arrayish) { tag = `${object.constructor.name}(${object.length})`; fields = iterateArray; diff --git a/test/__snapshots__/inspector.test.js.snap b/test/__snapshots__/inspector.test.js.snap index cd62978..a4faa55 100644 --- a/test/__snapshots__/inspector.test.js.snap +++ b/test/__snapshots__/inspector.test.js.snap @@ -774,3 +774,65 @@ hi `; + +exports[`map and set proto map proto 1`] = ` +