| Index: tests/compiler/dart2js/async_await_js_transform_test.dart
|
| diff --git a/tests/compiler/dart2js/async_await_js_transform_test.dart b/tests/compiler/dart2js/async_await_js_transform_test.dart
|
| index f5df58cb8cfaf9fb8f6c85587f1b33a0d0a30677..0a11fbb11920fff8218c28925200501c477ae300 100644
|
| --- a/tests/compiler/dart2js/async_await_js_transform_test.dart
|
| +++ b/tests/compiler/dart2js/async_await_js_transform_test.dart
|
| @@ -20,40 +20,47 @@ void testTransform(String source, String expected, AsyncRewriterBase rewriter) {
|
| }
|
|
|
| void testAsyncTransform(String source, String expected) {
|
| - testTransform(source, expected, new AsyncRewriter(
|
| - null, // The diagnostic helper should not be used in these tests.
|
| - null,
|
| - asyncHelper: new VariableUse("thenHelper"),
|
| - newCompleter: new VariableUse("Completer"),
|
| - wrapBody: new VariableUse("_wrapJsFunctionForAsync"),
|
| - safeVariableName: (String name) => "__$name",
|
| - bodyName: new StringBackedName("body")));
|
| + testTransform(
|
| + source,
|
| + expected,
|
| + new AsyncRewriter(
|
| + null, // The diagnostic helper should not be used in these tests.
|
| + null,
|
| + asyncHelper: new VariableUse("thenHelper"),
|
| + newCompleter: new VariableUse("Completer"),
|
| + wrapBody: new VariableUse("_wrapJsFunctionForAsync"),
|
| + safeVariableName: (String name) => "__$name",
|
| + bodyName: new StringBackedName("body")));
|
| }
|
|
|
| void testSyncStarTransform(String source, String expected) {
|
| - testTransform(source, expected, new SyncStarRewriter(
|
| - null,
|
| - null,
|
| - endOfIteration: new VariableUse("endOfIteration"),
|
| - newIterable: new VariableUse("newIterable"),
|
| - yieldStarExpression: new VariableUse("yieldStar"),
|
| - uncaughtErrorExpression: new VariableUse("uncaughtError"),
|
| - safeVariableName: (String name) => "__$name",
|
| - bodyName: new StringBackedName("body")));
|
| + testTransform(
|
| + source,
|
| + expected,
|
| + new SyncStarRewriter(null, null,
|
| + endOfIteration: new VariableUse("endOfIteration"),
|
| + newIterable: new VariableUse("newIterable"),
|
| + yieldStarExpression: new VariableUse("yieldStar"),
|
| + uncaughtErrorExpression: new VariableUse("uncaughtError"),
|
| + safeVariableName: (String name) => "__$name",
|
| + bodyName: new StringBackedName("body")));
|
| }
|
|
|
| main() {
|
| - testAsyncTransform( /// 01: ok
|
| -r"""function() async {
|
| + testAsyncTransform(
|
| +
|
| + /// 01: ok
|
| + r"""function() async {
|
| var closures = [new A.main_closure()], v0 = await closures, v1 = 0, v2, v3;
|
| if (v1 < 0 || v1 >= v0.length)
|
| H.ioore(v0, v1);
|
| v2 = 4;
|
| v3 = 2;
|
| P.print(v0[v1].call$2(v2, v3));
|
| -}"""
|
| -, /// 01: ok
|
| - r"""function() {
|
| +}""",
|
| +
|
| + /// 01: ok
|
| + r"""function() {
|
| var __goto = 0, __completer = new Completer(), __handler = 1, __currentError, closures, v0, v1, v2, v3;
|
| var body = _wrapJsFunctionForAsync(function(__errorCode, __result) {
|
| if (__errorCode === 1) {
|
| @@ -84,15 +91,18 @@ r"""function() async {
|
| }
|
| });
|
| return thenHelper(null, body, __completer);
|
| -}"""
|
| - ) /// 01: ok
|
| - ;
|
| +}""")
|
| +
|
| + /// 01: ok
|
| + ;
|
|
|
| - testAsyncTransform("""
|
| + testAsyncTransform(
|
| + """
|
| function(a) async {
|
| print(this.x); // Ensure `this` is translated in the helper function.
|
| await foo();
|
| -}""", """
|
| +}""",
|
| + """
|
| function(a) {
|
| var __goto = 0, __completer = new Completer(), __handler = 1, __currentError, __self = this;
|
| var body = _wrapJsFunctionForAsync(function(__errorCode, __result) {
|
| @@ -119,7 +129,8 @@ function(a) {
|
| return thenHelper(null, body, __completer);
|
| }""");
|
|
|
| - testAsyncTransform("""
|
| + testAsyncTransform(
|
| + """
|
| function(b) async {
|
| try {
|
| __outer: while (true) { // Overlapping label name.
|
| @@ -142,7 +153,8 @@ function(a) {
|
| return 3; // Return from finally with no pending finally.
|
| }
|
| return 4;
|
| - }""", """
|
| + }""",
|
| + """
|
| function(b) {
|
| var __goto = 0, __completer = new Completer(), __returnValue, __handler = 2, __currentError, __next = [], __helper;
|
| var body = _wrapJsFunctionForAsync(function(__errorCode, __result) {
|
| @@ -243,7 +255,8 @@ function(b) {
|
| return thenHelper(null, body, __completer);
|
| }""");
|
|
|
| - testAsyncTransform("""
|
| + testAsyncTransform(
|
| + """
|
| function(c) async {
|
| var a, b, c, d, e, f;
|
| a = b++; // post- and preincrements.
|
| @@ -252,7 +265,8 @@ function(c) async {
|
| d = ++(await foo()).a;
|
| e = foo1()[await foo2()]--;
|
| f = --foo1()[await foo2()];
|
| -}""", """
|
| +}""",
|
| + """
|
| function(c) {
|
| var __goto = 0, __completer = new Completer(), __handler = 1, __currentError, a, b, c, d, e, f, __temp1;
|
| var body = _wrapJsFunctionForAsync(function(__errorCode, __result) {
|
| @@ -298,7 +312,8 @@ function(c) {
|
| return thenHelper(null, body, __completer);
|
| }""");
|
|
|
| - testAsyncTransform("""
|
| + testAsyncTransform(
|
| + """
|
| function(d2) async {
|
| var a, b, c, d, e, f, g, h; // empty initializer
|
| a = foo1() || await foo2(); // short circuiting operators
|
| @@ -309,7 +324,8 @@ function(c) {
|
| f = await foo1() && foo2();
|
| g = await foo1() && await foo2();
|
| h = foo1() && foo2();
|
| - }""", """
|
| + }""",
|
| + """
|
| function(d2) {
|
| var __goto = 0, __completer = new Completer(), __handler = 1, __currentError, a, b, c, d, e, f, g, h, __temp1;
|
| var body = _wrapJsFunctionForAsync(function(__errorCode, __result) {
|
| @@ -431,7 +447,8 @@ function(d2) {
|
| return thenHelper(null, body, __completer);
|
| }""");
|
|
|
| - testAsyncTransform("""
|
| + testAsyncTransform(
|
| + """
|
| function(x, y) async {
|
| while (true) {
|
| switch(y) { // Switch with no awaits in case key expressions
|
| @@ -446,7 +463,8 @@ function(x, y) async {
|
| foo(); // No default
|
| }
|
| }
|
| -}""", """
|
| +}""",
|
| + """
|
| function(x, y) {
|
| var __goto = 0, __completer = new Completer(), __handler = 1, __currentError;
|
| var body = _wrapJsFunctionForAsync(function(__errorCode, __result) {
|
| @@ -525,7 +543,8 @@ function(x, y) {
|
| return thenHelper(null, body, __completer);
|
| }""");
|
|
|
| - testAsyncTransform("""
|
| + testAsyncTransform(
|
| + """
|
| function(f) async {
|
| do {
|
| var a = await foo();
|
| @@ -535,7 +554,8 @@ function(x, y) {
|
| continue;
|
| } while (await foo());
|
| }
|
| - """, """
|
| + """,
|
| + """
|
| function(f) {
|
| var __goto = 0, __completer = new Completer(), __handler = 1, __currentError, a;
|
| var body = _wrapJsFunctionForAsync(function(__errorCode, __result) {
|
| @@ -586,7 +606,8 @@ function(f) {
|
| return thenHelper(null, body, __completer);
|
| }""");
|
|
|
| - testAsyncTransform("""
|
| + testAsyncTransform(
|
| + """
|
| function(g) async {
|
| for (var i = 0; i < await foo1(); i += await foo2()) {
|
| if (foo(i))
|
| @@ -600,7 +621,8 @@ function(g) async {
|
| print(await(foo(i)));
|
| }
|
| }
|
| -""", """
|
| +""",
|
| + """
|
| function(g) {
|
| var __goto = 0, __completer = new Completer(), __returnValue, __handler = 2, __currentError, i, __temp1;
|
| var body = _wrapJsFunctionForAsync(function(__errorCode, __result) {
|
| @@ -676,7 +698,8 @@ function(g) {
|
| return thenHelper(null, body, __completer);
|
| }""");
|
|
|
| - testAsyncTransform("""
|
| + testAsyncTransform(
|
| + """
|
| function(a, h) async {
|
| var x = {"a": foo1(), "b": await foo2(), "c": foo3()};
|
| x["a"] = 2; // Different assignments
|
| @@ -685,7 +708,8 @@ function(g) {
|
| x[(await foo1()).a = await foo2()] = 5;
|
| (await foo1())[await foo2()] = await foo3(6);
|
| }
|
| - """, """
|
| + """,
|
| + """
|
| function(a, h) {
|
| var __goto = 0, __completer = new Completer(), __handler = 1, __currentError, x, __temp1, __temp2;
|
| var body = _wrapJsFunctionForAsync(function(__errorCode, __result) {
|
| @@ -751,7 +775,8 @@ function(a, h) {
|
| return thenHelper(null, body, __completer);
|
| }""");
|
|
|
| - testAsyncTransform("""
|
| + testAsyncTransform(
|
| + """
|
| function(c, i) async {
|
| try {
|
| var x = c ? await foo() : foo(); // conditional
|
| @@ -766,7 +791,8 @@ function(c, i) async {
|
| }
|
| }
|
| }
|
| -""", """
|
| +""",
|
| + """
|
| function(c, i) {
|
| var __goto = 0, __completer = new Completer(), __handler = 1, __currentError, __next = [], x, y, __error, __error1;
|
| var body = _wrapJsFunctionForAsync(function(__errorCode, __result) {
|
| @@ -868,7 +894,8 @@ function(c, i) {
|
| return thenHelper(null, body, __completer);
|
| }""");
|
|
|
| - testAsyncTransform("""
|
| + testAsyncTransform(
|
| + """
|
| function(x, y, j) async {
|
| print(await(foo(x))); // calls
|
| (await print)(foo(x));
|
| @@ -876,7 +903,8 @@ function(c, i) {
|
| await (print(foo(await x)));
|
| print(foo(x, await y, z));
|
| }
|
| - """, """
|
| + """,
|
| + """
|
| function(x, y, j) {
|
| var __goto = 0, __completer = new Completer(), __handler = 1, __currentError, __temp1, __temp2, __temp3;
|
| var body = _wrapJsFunctionForAsync(function(__errorCode, __result) {
|
| @@ -934,7 +962,8 @@ function(x, y, j) {
|
| return thenHelper(null, body, __completer);
|
| }""");
|
|
|
| - testAsyncTransform("""
|
| + testAsyncTransform(
|
| + """
|
| function(x, y, k) async {
|
| while (await(foo())) {
|
| lab: { // labelled statement
|
| @@ -959,7 +988,8 @@ function(x, y, k) async {
|
| foo();
|
| }
|
| }
|
| -}""", """
|
| +}""",
|
| + """
|
| function(x, y, k) {
|
| var __goto = 0, __completer = new Completer(), __returnValue, __handler = 2, __currentError, __temp1;
|
| var body = _wrapJsFunctionForAsync(function(__errorCode, __result) {
|
| @@ -1074,7 +1104,8 @@ function(x, y, k) {
|
| return thenHelper(null, body, __completer);
|
| }""");
|
|
|
| - testAsyncTransform("""
|
| + testAsyncTransform(
|
| + """
|
| function(l) async {
|
| switch(await l) {
|
| case 1:
|
| @@ -1087,7 +1118,8 @@ function(x, y, k) {
|
| print(2);
|
| break;
|
| }
|
| - }""", """
|
| + }""",
|
| + """
|
| function(l) {
|
| var __goto = 0, __completer = new Completer(), __handler = 1, __currentError;
|
| var body = _wrapJsFunctionForAsync(function(__errorCode, __result) {
|
| @@ -1123,7 +1155,8 @@ function(l) {
|
| return thenHelper(null, body, __completer);
|
| }""");
|
|
|
| - testAsyncTransform("""
|
| + testAsyncTransform(
|
| + """
|
| function(m) async {
|
| var exception = 1;
|
| try {
|
| @@ -1139,7 +1172,8 @@ function(l) {
|
| exception += 10;
|
| }
|
| print(exception);
|
| - }""", """
|
| + }""",
|
| + """
|
| function(m) {
|
| var __goto = 0, __completer = new Completer(), __handler = 1, __currentError, __next = [], exception, __exception;
|
| var body = _wrapJsFunctionForAsync(function(__errorCode, __result) {
|
| @@ -1202,12 +1236,14 @@ function(m) {
|
| return thenHelper(null, body, __completer);
|
| }""");
|
|
|
| - testSyncStarTransform("""
|
| + testSyncStarTransform(
|
| + """
|
| function(a) sync* {
|
| // Ensure that return of a value is treated as first evaluating the value, and
|
| // then returning.
|
| return foo();
|
| -}""", """
|
| +}""",
|
| + """
|
| function(__a) {
|
| return new newIterable(function() {
|
| var a = __a;
|
|
|