We were calling the setter for Object.prototype.promise if it existed
when calling PromiseAll.
BUG=v9:4232
LOG=N
R=rossberg@chromium.org, adamk@chromium.org
Review URL: https://codereview.chromium.org/
1219623005
Cr-Commit-Position: refs/heads/master@{#29357}
reject: function(r) { PromiseReject(promise, r) }
};
} else {
- var result = {};
+ var result = {promise: UNDEFINED, reject: UNDEFINED, resolve: UNDEFINED};
result.promise = new this(function(resolve, reject) {
result.resolve = resolve;
result.reject = reject;
- })
+ });
return result;
}
}
--- /dev/null
+// Copyright 2015 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.
+
+'use strict';
+
+Object.defineProperties(Object.prototype, {
+ promise: {set: assertUnreachable},
+ reject: {set: assertUnreachable},
+ resolve: {set: assertUnreachable},
+});
+
+class P extends Promise {}
+
+P.all([Promise.resolve('ok')]);
+P.race([Promise.resolve('ok')]);
+P.defer();