Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(338)

Side by Side Diff: src/promise.js

Issue 1362773002: [es6] Align Promise.resolve with the spec (Closed) Base URL: https://chromium.googlesource.com/v8/v8.git@master
Patch Set: remove corresponding entry from patch262.status (that scenario is now passing) Created 5 years, 2 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « no previous file | test/mjsunit/es6/promises.js » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2012 the V8 project authors. All rights reserved. 1 // Copyright 2012 the V8 project authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 (function(global, utils, extrasUtils) { 5 (function(global, utils, extrasUtils) {
6 6
7 "use strict"; 7 "use strict";
8 8
9 %CheckIsBootstrapping(); 9 %CheckIsBootstrapping();
10 10
(...skipping 267 matching lines...) Expand 10 before | Expand all | Expand 10 after
278 } 278 }
279 }, 279 },
280 onReject, 280 onReject,
281 PromiseChain 281 PromiseChain
282 ); 282 );
283 } 283 }
284 284
285 // Combinators. 285 // Combinators.
286 286
287 function PromiseCast(x) { 287 function PromiseCast(x) {
288 // TODO(rossberg): cannot do better until we support @@create. 288 if (IsPromise(x) && x.constructor === this) {
289 return IsPromise(x) ? x : new this(function(resolve) { resolve(x) }); 289 return x;
290 } else {
291 return new this(function(resolve) { resolve(x) });
292 }
290 } 293 }
291 294
292 function PromiseAll(iterable) { 295 function PromiseAll(iterable) {
293 var deferred = %_CallFunction(this, PromiseDeferred); 296 var deferred = %_CallFunction(this, PromiseDeferred);
294 var resolutions = []; 297 var resolutions = [];
295 try { 298 try {
296 var count = 0; 299 var count = 0;
297 var i = 0; 300 var i = 0;
298 for (var value of iterable) { 301 for (var value of iterable) {
299 this.resolve(value).then( 302 this.resolve(value).then(
(...skipping 91 matching lines...) Expand 10 before | Expand all | Expand 10 after
391 // This allows extras to create promises quickly without building extra 394 // This allows extras to create promises quickly without building extra
392 // resolve/reject closures, and allows them to later resolve and reject any 395 // resolve/reject closures, and allows them to later resolve and reject any
393 // promise without having to hold on to those closures forever. 396 // promise without having to hold on to those closures forever.
394 utils.InstallFunctions(extrasUtils, 0, [ 397 utils.InstallFunctions(extrasUtils, 0, [
395 "createPromise", PromiseCreate, 398 "createPromise", PromiseCreate,
396 "resolvePromise", PromiseResolve, 399 "resolvePromise", PromiseResolve,
397 "rejectPromise", PromiseReject 400 "rejectPromise", PromiseReject
398 ]); 401 ]);
399 402
400 }) 403 })
OLDNEW
« no previous file with comments | « no previous file | test/mjsunit/es6/promises.js » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698