зеркало из https://github.com/mozilla/gecko-dev.git
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:
Родитель
17090782fb
Коммит
6489c8fc7e
|
@ -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;
|
||||
}
|
||||
}
|
||||
|
|
Загрузка…
Ссылка в новой задаче