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) { ...@@ -317,13 +317,13 @@ function PromiseCatch(onReject) {
function PromiseCast(x) { function PromiseCast(x) {
if (!IS_RECEIVER(this)) { if (!IS_RECEIVER(this)) {
throw MakeTypeError(kCalledOnNonObject, PromiseCast); throw MakeTypeError(kCalledOnNonObject, "Promise.resolve");
}
if (IsPromise(x) && x.constructor === this) {
return x;
} else {
return new this(function(resolve, reject) { resolve(x) });
} }
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) { function PromiseAll(iterable) {
......
...@@ -47,6 +47,8 @@ function clear(o) { ...@@ -47,6 +47,8 @@ function clear(o) {
clear(o.__proto__) clear(o.__proto__)
var properties = getOwnPropertyNames(o) var properties = getOwnPropertyNames(o)
for (var i in properties) { 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]) clearProp(o, properties[i])
} }
} }
...@@ -1050,7 +1052,8 @@ function assertAsyncDone(iteration) { ...@@ -1050,7 +1052,8 @@ function assertAsyncDone(iteration) {
log = "" log = ""
MyPromise.all([21, Promise.accept(22), 23, MyPromise.accept(24), 25, 26]) 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() { (function() {
......
...@@ -423,7 +423,6 @@ ...@@ -423,7 +423,6 @@
'built-ins/Promise/all/same-reject-function': [FAIL], 'built-ins/Promise/all/same-reject-function': [FAIL],
# https://bugs.chromium.org/p/v8/issues/detail?id=4633 # 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/resolve/capability-executor-not-callable': [FAIL],
'built-ins/Promise/reject/capability-executor-not-callable': [FAIL], 'built-ins/Promise/reject/capability-executor-not-callable': [FAIL],
'built-ins/Promise/prototype/then/deferred-is-resolved-value': [SKIP], '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