Bug 1584538 - Allow debug environment proxy to access aliased module variables after the module script executes, r=jonco.

Differential Revision: https://phabricator.services.mozilla.com/D50747

--HG--
extra : moz-landing-system : lando
This commit is contained in:
Brian Hackett 2019-10-28 10:44:15 +00:00
Родитель 17090782fb
Коммит 6489c8fc7e
2 изменённых файлов: 30 добавлений и 1 удалений

Просмотреть файл

@ -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();

Просмотреть файл

@ -1497,7 +1497,6 @@ class DebugEnvironmentProxyHandler : public BaseProxyHandler {
} else {
script = env->as<ModuleEnvironmentObject>().module().maybeScript();
if (!script) {
*accessResult = ACCESS_LOST;
return true;
}
}