v8/test/mjsunit/harmony/async-generators-throw-caught.js
Shu-yu Guo 5594158c90 Add a synthetic return for async generator functions
Currently implicit returns do not correctly resolve the async generator
objects. This is observable via AsyncGenerator#throw as the implicit
return won't override the rejection.

Bug: v8:10238
Change-Id: I012fc3507d1e4106e7f35b21275be180a6e274c3
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2065343
Reviewed-by: Leszek Swirski <leszeks@chromium.org>
Commit-Queue: Shu-yu Guo <syg@chromium.org>
Cr-Commit-Position: refs/heads/master@{#66413}
2020-02-24 19:33:46 +00:00

25 lines
578 B
JavaScript

// Copyright 2020 the V8 project authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
let caught_in_gen = false;
async function* catch_gen() {
try {
yield 42;
} catch (e) {
caught_in_gen = true;
}
}
(async () => {
const g = catch_gen();
await g.next();
try {
await g.throw(new Error()); // Should be caught in catch_gen, then catch_gen
// completes normally.
} catch (e) {
assertUnreachable();
}
assertTrue(caught_in_gen);
})();