| Index: tests/compiler/dart2js/js_backend_cps_ir_closures.dart
|
| diff --git a/tests/compiler/dart2js/js_backend_cps_ir_closures.dart b/tests/compiler/dart2js/js_backend_cps_ir_closures.dart
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..2e18e304acc63b061dd0f636a8fc74d921e937df
|
| --- /dev/null
|
| +++ b/tests/compiler/dart2js/js_backend_cps_ir_closures.dart
|
| @@ -0,0 +1,125 @@
|
| +// Copyright (c) 2014, the Dart project authors. Please see the AUTHORS file
|
| +// for details. All rights reserved. Use of this source code is governed by a
|
| +// BSD-style license that can be found in the LICENSE file.
|
| +
|
| +// Tests of interceptors.
|
| +
|
| +library closures_test;
|
| +
|
| +import 'js_backend_cps_ir_test.dart';
|
| +
|
| +const List<TestEntry> tests = const [
|
| + const TestEntry("""
|
| +main(x) {
|
| + a() {
|
| + return x;
|
| + }
|
| + x = x + '1';
|
| + print(a());
|
| +}
|
| +""",
|
| +r"""
|
| +function(x) {
|
| + var box_0, a, v0;
|
| + box_0 = {};
|
| + box_0.x_0 = x;
|
| + a = new V.main_a(box_0);
|
| + x = box_0.x_0;
|
| + v0 = "1";
|
| + box_0.x_0 = J.getInterceptor(x).$add(x, v0);
|
| + P.print(a.call$0());
|
| + return null;
|
| +}"""),
|
| +
|
| + const TestEntry("""
|
| +main(x) {
|
| + a() {
|
| + return x;
|
| + }
|
| + print(a());
|
| +}
|
| +""",
|
| +r"""
|
| +function(x) {
|
| + P.print(new V.main_a(x).call$0());
|
| + return null;
|
| +}"""),
|
| +
|
| + const TestEntry("""
|
| +main() {
|
| + var x = 122;
|
| + var a = () => x;
|
| + x = x + 1;
|
| + print(a());
|
| +}
|
| +""",
|
| +r"""
|
| +function() {
|
| + var box_0, a, x, v0;
|
| + box_0 = {};
|
| + box_0.x_0 = 122;
|
| + a = new V.main_closure(box_0);
|
| + x = box_0.x_0;
|
| + v0 = 1;
|
| + box_0.x_0 = J.getInterceptor(x).$add(x, v0);
|
| + P.print(a.call$0());
|
| + return null;
|
| +}"""),
|
| +
|
| + const TestEntry("""
|
| +main() {
|
| + var x = 122;
|
| + var a = () {
|
| + var y = x;
|
| + return () => y;
|
| + };
|
| + x = x + 1;
|
| + print(a()());
|
| +}
|
| +""",
|
| +r"""
|
| +function() {
|
| + var box_0, a, x, v0;
|
| + box_0 = {};
|
| + box_0.x_0 = 122;
|
| + a = new V.main_closure(box_0);
|
| + x = box_0.x_0;
|
| + v0 = 1;
|
| + box_0.x_0 = J.getInterceptor(x).$add(x, v0);
|
| + P.print(a.call$0().call$0());
|
| + return null;
|
| +}"""),
|
| +
|
| + const TestEntry("""
|
| +main() {
|
| + var a;
|
| + for (var i=0; i<10; i++) {
|
| + a = () => i;
|
| + }
|
| + print(a());
|
| +}
|
| +""",
|
| +r"""
|
| +function() {
|
| + var a, box_0, i, v0, box_01, v1;
|
| + a = null;
|
| + box_0 = {};
|
| + box_0.i_0 = 0;
|
| + while (true) {
|
| + i = box_0.i_0;
|
| + v0 = 10;
|
| + if (P.identical(J.getInterceptor(i).$lt(i, v0), true)) {
|
| + a = new V.main_closure(box_0);
|
| + box_01 = {};
|
| + box_01.i_0 = box_0.i_0;
|
| + i = box_01.i_0;
|
| + v1 = 1;
|
| + box_01.i_0 = J.getInterceptor(i).$add(i, v1);
|
| + box_0 = box_01;
|
| + } else {
|
| + P.print(a.call$0());
|
| + return null;
|
| + }
|
| + }
|
| +}"""),
|
| +];
|
|
|