зеркало из https://github.com/mozilla/gecko-dev.git
Bug 1571791 - "Step in" across an await expression jumps to unexpected places. r=loganfsmyth
Differential Revision: https://phabricator.services.mozilla.com/D42723 --HG-- extra : moz-landing-system : lando
This commit is contained in:
Родитель
986525129a
Коммит
ef037077c5
|
@ -834,6 +834,7 @@ const ThreadActor = ActorClassWithSpec(threadSpec, {
|
|||
if (completion.await || completion.yield) {
|
||||
thread.suspendedFrame = this;
|
||||
this.waitingOnStep = true;
|
||||
thread.dbg.onEnterFrame = undefined;
|
||||
return undefined;
|
||||
}
|
||||
|
||||
|
|
|
@ -0,0 +1,55 @@
|
|||
/* Any copyright is dedicated to the Public Domain.
|
||||
http://creativecommons.org/publicdomain/zero/1.0/ */
|
||||
|
||||
"use strict";
|
||||
|
||||
/*
|
||||
* Check that is possible to step into both the inner and outer function
|
||||
* calls.
|
||||
*/
|
||||
|
||||
add_task(
|
||||
threadFrontTest(async ({ threadFront, targetFront, debuggee }) => {
|
||||
dumpn("Evaluating test code and waiting for first debugger statement");
|
||||
|
||||
const consoleFront = await targetFront.getFront("console");
|
||||
consoleFront.evaluateJSAsync(
|
||||
`(function () {
|
||||
async function f() {
|
||||
const p = Promise.resolve(43);
|
||||
await p;
|
||||
return p;
|
||||
}
|
||||
|
||||
function call_f() {
|
||||
Promise.resolve(42).then(forty_two => {
|
||||
return forty_two;
|
||||
});
|
||||
|
||||
f().then(v => {
|
||||
return v;
|
||||
});
|
||||
}
|
||||
debugger;
|
||||
call_f();
|
||||
})()`
|
||||
);
|
||||
|
||||
const packet = await waitForEvent(threadFront, "paused");
|
||||
const location = {
|
||||
sourceId: packet.frame.where.actor,
|
||||
line: 4,
|
||||
column: 10,
|
||||
};
|
||||
|
||||
await threadFront.setBreakpoint(location, {});
|
||||
|
||||
const packet2 = await resumeAndWaitForPause(threadFront);
|
||||
Assert.equal(packet2.frame.where.line, 4, "landed at await");
|
||||
|
||||
const packet3 = await stepIn(threadFront);
|
||||
Assert.equal(packet3.frame.where.line, 5, "step to the next line");
|
||||
|
||||
await threadFront.resume();
|
||||
})
|
||||
);
|
|
@ -195,6 +195,7 @@ skip-if = true # breakpoint sliding is not supported bug 1525685
|
|||
[test_stepping-11.js]
|
||||
[test_stepping-12.js]
|
||||
[test_stepping-13.js]
|
||||
[test_stepping-14.js]
|
||||
[test_stepping-with-skip-breakpoints.js]
|
||||
[test_framebindings-01.js]
|
||||
[test_framebindings-02.js]
|
||||
|
|
Загрузка…
Ссылка в новой задаче