summaryrefslogtreecommitdiffstats
path: root/js/src/jit-test/tests/realms/bug1610189.js
diff options
context:
space:
mode:
Diffstat (limited to 'js/src/jit-test/tests/realms/bug1610189.js')
-rw-r--r--js/src/jit-test/tests/realms/bug1610189.js15
1 files changed, 15 insertions, 0 deletions
diff --git a/js/src/jit-test/tests/realms/bug1610189.js b/js/src/jit-test/tests/realms/bug1610189.js
new file mode 100644
index 0000000000..c65f8120f8
--- /dev/null
+++ b/js/src/jit-test/tests/realms/bug1610189.js
@@ -0,0 +1,15 @@
+var g = newGlobal({sameCompartmentAs: this});
+var newTarget = g.Function();
+newTarget.prototype = undefined;
+
+// Reflect.construct returns an object in the current realm
+// but its prototype is g's Array.prototype.
+var arr1 = Reflect.construct(Array, [], newTarget);
+assertEq(objectGlobal(arr1), this);
+assertEq(arr1.__proto__, g.Array.prototype);
+
+// Calling cross-realm slice creates an object in that realm.
+for (var i = 0; i < 10; i++) {
+ var arr2 = arr1.slice();
+ assertEq(objectGlobal(arr2), g);
+}