summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--lib/util.js5
-rw-r--r--test/parallel/test-util-inspect.js13
2 files changed, 17 insertions, 1 deletions
diff --git a/lib/util.js b/lib/util.js
index 7b2bfd2b3c..401a0ed3c7 100644
--- a/lib/util.js
+++ b/lib/util.js
@@ -292,7 +292,10 @@ function formatValue(ctx, value, recurseTimes) {
var base = '', empty = false, braces, formatter;
if (Array.isArray(value)) {
- if (constructor === Array)
+ // We can't use `constructor === Array` because this could
+ // have come from a Debug context.
+ // Otherwise, an Array will print "Array [...]".
+ if (constructor && constructor.name === 'Array')
constructor = null;
braces = ['[', ']'];
empty = value.length === 0;
diff --git a/test/parallel/test-util-inspect.js b/test/parallel/test-util-inspect.js
index 58a4c8a2f2..aa6c764491 100644
--- a/test/parallel/test-util-inspect.js
+++ b/test/parallel/test-util-inspect.js
@@ -23,6 +23,19 @@ assert.equal(util.inspect(a), '[ \'foo\', , \'baz\' ]');
assert.equal(util.inspect(a, true), '[ \'foo\', , \'baz\', [length]: 3 ]');
assert.equal(util.inspect(new Array(5)), '[ , , , , ]');
+// test for Array constructor in different context
+const Debug = require('vm').runInDebugContext('Debug');
+var map = new Map();
+map.set(1, 2);
+var mirror = Debug.MakeMirror(map.entries(), true);
+var vals = mirror.preview();
+var valsOutput = [];
+for (let o of vals) {
+ valsOutput.push(o);
+}
+
+assert.strictEqual(util.inspect(valsOutput), '[ [ 1, 2 ] ]');
+
// test for property descriptors
var getter = Object.create(null, {
a: {