[es6] Make sure we do not invoke setter when calling Promise.all
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}
This commit is contained in:
parent
ba08cc8c15
commit
473badf5fa
@ -189,11 +189,11 @@ function PromiseDeferred() {
|
||||
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;
|
||||
}
|
||||
}
|
||||
|
17
test/mjsunit/es6/promise-internal-setter.js
Normal file
17
test/mjsunit/es6/promise-internal-setter.js
Normal file
@ -0,0 +1,17 @@
|
||||
// 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();
|
Loading…
Reference in New Issue
Block a user