Commit 4f947115 authored by caitpotter88's avatar caitpotter88 Committed by Commit bot

[promise] make Promise.resolve match spec

Fixes a number of test262 tests, including

- built-ins/Promise/resolve/resolve-from-promise-capability.js
- built-ins/Promise/resolve/context-non-object-with-promise.js
- built-ins/Promise/executor-function-length.js

BUG=v8:4633
LOG=N
R=littledan@chromium.org, cbruni@chromium.org

Review URL: https://codereview.chromium.org/1536013002

Cr-Commit-Position: refs/heads/master@{#33094}
parent e9359a6d
......@@ -317,13 +317,13 @@ function PromiseCatch(onReject) {
function PromiseCast(x) {
if (!IS_RECEIVER(this)) {
throw MakeTypeError(kCalledOnNonObject, PromiseCast);
}
if (IsPromise(x) && x.constructor === this) {
return x;
} else {
return new this(function(resolve, reject) { resolve(x) });
throw MakeTypeError(kCalledOnNonObject, "Promise.resolve");
}
if (IsPromise(x) && x.constructor === this) return x;
var promiseCapability = NewPromiseCapability(this);
var resolveResult = %_Call(promiseCapability.resolve, UNDEFINED, x);
return promiseCapability.promise;
}
function PromiseAll(iterable) {
......
......@@ -47,6 +47,8 @@ function clear(o) {
clear(o.__proto__)
var properties = getOwnPropertyNames(o)
for (var i in properties) {
// Do not clobber Object.prototype.toString, which is used by tests.
if (properties[i] === "toString") continue;
clearProp(o, properties[i])
}
}
......@@ -1050,7 +1052,8 @@ function assertAsyncDone(iteration) {
log = ""
MyPromise.all([21, Promise.accept(22), 23, MyPromise.accept(24), 25, 26])
assertTrue(log === "nx24nnx21nnnnx23nnnx25nnx26n", "subclass/all/self")
assertTrue(log === "nx24nnx21nnx[object Promise]nnx23nnnx25nnx26n",
"subclass/all/self")
})();
(function() {
......
......@@ -423,7 +423,6 @@
'built-ins/Promise/all/same-reject-function': [FAIL],
# https://bugs.chromium.org/p/v8/issues/detail?id=4633
'built-ins/Promise/resolve/resolve-from-promise-capability': [FAIL],
'built-ins/Promise/resolve/capability-executor-not-callable': [FAIL],
'built-ins/Promise/reject/capability-executor-not-callable': [FAIL],
'built-ins/Promise/prototype/then/deferred-is-resolved-value': [SKIP],
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment