9867aa3f2a
The assertion was intended to verify that the function is only called at appropriate times (at a point when it was called both by by other builtins, and by desugarings added in the parser and during bytecode generation) --- However, it didn't account for the case where the wrapper Promise is resolved with another JSPromise with a non-callable "then" method. (Step 12 of https://tc39.github.io/ecma262/#sec-promise-resolve-functions): "If IsCallable(thenAction) is false, then Return FulfillPromise(promise, resolution)." It would be observable to verify this behaviour by loading the "then" value and asserting that it's non-callable, so instead the CSA_ASSERT is just removed and replaced with a comment explaining the appropriate use of the function. BUG=chromium:897436, v8:5855 R=bmeurer@chromium.org Change-Id: Ib4b11abfe3339409b57ccfda9c3f75a34e0db532 Reviewed-on: https://chromium-review.googlesource.com/c/1296909 Commit-Queue: Caitlin Potter <caitp@igalia.com> Reviewed-by: Benedikt Meurer <bmeurer@chromium.org> Cr-Commit-Position: refs/heads/master@{#56916}
13 lines
355 B
JavaScript
13 lines
355 B
JavaScript
// Copyright 2018 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.
|
|
|
|
// Flags: --enable-slow-asserts
|
|
|
|
async function* gen() {
|
|
const alwaysPending = new Promise(() => {});
|
|
alwaysPending.then = "non-callable then";
|
|
yield alwaysPending;
|
|
}
|
|
gen().next();
|