1
Fork 0
mirror of https://github.com/RGBCube/serenity synced 2025-07-27 15:37:46 +00:00

LibJS: Fix return value of TryStatement with finalizer

Previously we would always return the result of executing the finalizer,
however the spec dictates the finalizer result must only be returned for
a non-normal completion.
I added some more comments along the way, which should make it more
clear what's going on - the unwinding and exception flow isn't super
straightforward here.
This commit is contained in:
Linus Groh 2021-04-13 00:57:17 +02:00 committed by Andreas Kling
parent e8cbcc2fbf
commit 7cbede4342
2 changed files with 34 additions and 7 deletions

View file

@ -32,3 +32,15 @@ test("return from finally block", () => {
}
expect(foo()).toBe("baz");
});
test("return from catch block with empty finally", () => {
function foo() {
try {
throw "foo";
} catch {
return "bar";
} finally {
}
}
expect(foo()).toBe("bar");
});