| // Copyright (c) 2012, 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. | |
| // Test that parameters keep their names in the output. | |
| import 'dart:async'; | |
| import "package:expect/async_helper.dart"; | |
| import "package:expect/expect.dart"; | |
| import '../helpers/compiler_helper.dart'; | |
| const String TEST_ONE = r""" | |
| class A { foo() => 499; } | |
| class B { bar() => 42; } | |
| main() { | |
| A().foo(); | |
| B().bar(); | |
| } | |
| """; | |
| const String TEST_TWO = r""" | |
| class A { | |
| foo() => 499; | |
| bar() => 42; | |
| } | |
| main() { | |
| A().foo(); | |
| A().bar(); | |
| } | |
| """; | |
| const String TEST_THREE = r""" | |
| class A { | |
| foo() => 499; | |
| bar() => 42; | |
| } | |
| class B extends A { | |
| foo() => -499; | |
| bar() => -42; | |
| } | |
| var y; | |
| foo(i) { | |
| if (0 != i) { | |
| y--; | |
| foo(i - 1); | |
| y++; | |
| } | |
| } | |
| makeStaticInliningHard() { | |
| y = 0; | |
| foo(10); | |
| return 0 == y; | |
| } | |
| // id returns [x] in a way that should be difficult to predict statically. | |
| id(x) { | |
| y = x; | |
| foo(10); | |
| return y; | |
| } | |
| main() { | |
| var a = A(); | |
| var b = B(); | |
| var x = a; | |
| if (makeStaticInliningHard()) x = b; | |
| x.foo(); | |
| x.bar(); | |
| } | |
| """; | |
| const String TEST_FOUR = r""" | |
| class A { foo() => 499; } | |
| foo(f) { f(); } | |
| main() { | |
| foo(new A().foo); | |
| } | |
| """; | |
| main() { | |
| // At some point Dart2js generated bad object literals with dangling commas: | |
| // { a: true, }. Make sure this doesn't happen again. | |
| RegExp danglingComma = RegExp(r',[ \n]*}'); | |
| Future runTests() async { | |
| for (String test in [TEST_ONE, TEST_TWO, TEST_THREE, TEST_FOUR]) { | |
| String generated = await compileAll(test); | |
| Expect.isFalse(danglingComma.hasMatch(generated)); | |
| } | |
| } | |
| asyncTest(() async { | |
| print('--test from kernel------------------------------------------------'); | |
| await runTests(); | |
| }); | |
| } |