summaryrefslogtreecommitdiffstats
path: root/js/src/jit-test/tests/debug/Environment-module-02.js
diff options
context:
space:
mode:
Diffstat (limited to 'js/src/jit-test/tests/debug/Environment-module-02.js')
-rw-r--r--js/src/jit-test/tests/debug/Environment-module-02.js30
1 files changed, 30 insertions, 0 deletions
diff --git a/js/src/jit-test/tests/debug/Environment-module-02.js b/js/src/jit-test/tests/debug/Environment-module-02.js
new file mode 100644
index 0000000000..442116c0a9
--- /dev/null
+++ b/js/src/jit-test/tests/debug/Environment-module-02.js
@@ -0,0 +1,30 @@
+// Debug environments for module environments should be able to access closed
+// over variables after the module script has executed.
+
+var g = newGlobal({newCompartment: true});
+var dbg = Debugger(g);
+
+const m = g.parseModule(`
+ var x = 42;
+ export function foo() { return x; }
+ foo();
+`);
+m.declarationInstantiation();
+
+let fooFunction;
+dbg.onEnterFrame = function (frame) {
+ fooFunction = frame.callee;
+};
+
+m.evaluation();
+assertEq(fooFunction instanceof Debugger.Object, true);
+
+dbg.onEnterFrame = function (frame) {
+ const env = frame.environment.parent;
+ assertEq(env.names().join(','), "foo,x");
+ assertEq(env.getVariable('x'), 42);
+ env.setVariable('x', 3);
+ assertEq(env.getVariable('x'), 3);
+};
+
+fooFunction.call();