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

Side by Side Diff: test/mjsunit/harmony/async-await-species.js

Issue 2596553002: [promises] Move Promise.prototype.catch to TF (Closed)
Patch Set: fix nits Created 4 years 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 | « src/js/promise.js ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2016 the V8 project authors. All rights reserved. 1 // Copyright 2016 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 // Flags: --harmony-async-await --allow-natives-syntax 5 // Flags: --harmony-async-await --allow-natives-syntax
6 6
7 function assertEqualsAsync(expected, run, msg) { 7 function assertEqualsAsync(expected, run, msg) {
8 var actual; 8 var actual;
9 var hadValue = false; 9 var hadValue = false;
10 var hadError = false; 10 var hadError = false;
(...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after
42 } 42 }
43 43
44 function getStack(error) { 44 function getStack(error) {
45 var stack = error.stack.split('\n'). 45 var stack = error.stack.split('\n').
46 filter(function(line) { 46 filter(function(line) {
47 return /^\s*at @?[a-zA-Z0-9_]/.test(line); 47 return /^\s*at @?[a-zA-Z0-9_]/.test(line);
48 }). 48 }).
49 map(line => line.replace(/^\s*at (@?[a-zA-Z0-9_\.\[\]]+)(.*)/, "$1")); 49 map(line => line.replace(/^\s*at (@?[a-zA-Z0-9_\.\[\]]+)(.*)/, "$1"));
50 50
51 // remove `Promise.then()` invocation by assertEqualsAsync() 51 // remove `Promise.then()` invocation by assertEqualsAsync()
52 if (stack[1] === "assertEqualsAsync") return []; 52 if (stack[2] === "assertEqualsAsync") return [];
53 53
54 return stack.reverse(); 54 return stack.reverse();
55 } 55 }
56 56
57 var log = []; 57 var log = [];
58 class FakePromise extends Promise { 58 class FakePromise extends Promise {
59 constructor(executor) { 59 constructor(executor) {
60 var stack = getStack(new Error("Getting Callstack")); 60 var stack = getStack(new Error("Getting Callstack"));
61 if (stack.length) { 61 if (stack.length) {
62 var first = -1; 62 var first = -1;
(...skipping 26 matching lines...) Expand all
89 assertEquals([], log); 89 assertEquals([], log);
90 90
91 log.length = 0; 91 log.length = 0;
92 assertEqualsAsync( 92 assertEqualsAsync(
93 "foo", 93 "foo",
94 test(function testThenOnReturnedPromise() { 94 test(function testThenOnReturnedPromise() {
95 return asyncFn().then(x => (log.push("Then: " + x), x)); 95 return asyncFn().then(x => (log.push("Then: " + x), x));
96 }), 96 }),
97 "should call Promise[@@Species] after non-internal Then"); 97 "should call Promise[@@Species] after non-internal Then");
98 assertEquals([ 98 assertEquals([
99 "@@Species: [@testThenOnReturnedPromise > FakePromise]", 99 "@@Species: [@testThenOnReturnedPromise > Promise.then > FakePromise]",
100 "Then: foo" 100 "Then: foo"
101 ], log); 101 ], log);
OLDNEW
« no previous file with comments | « src/js/promise.js ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698