| // 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 'package:expect/async_helper.dart'; | |
| import '../helpers/compiler_helper.dart'; | |
| const String TEST_ONE = r""" | |
| void foo(bar) { | |
| var a = 1; | |
| if (bar) { | |
| a = 2; | |
| } else { | |
| a = 3; | |
| } | |
| print(a); | |
| print(a); | |
| } | |
| """; | |
| const String TEST_TWO = r""" | |
| void main() { | |
| var t = 0; | |
| for (var i = 0; i == 0; i = i + 1) { | |
| t = t + 10; | |
| } | |
| print(t); | |
| } | |
| """; | |
| const String TEST_THREE = r""" | |
| foo(b, c, d) { | |
| var val = 42; | |
| if (b) { | |
| c = c && d; | |
| if (c) { | |
| val = 43; | |
| } | |
| } | |
| return val; | |
| } | |
| """; | |
| const String TEST_FOUR = r""" | |
| foo() { | |
| var a = true; | |
| var b = false; | |
| for (var i = 0; a; i = i + 1) { | |
| if (i == 9) a = false; | |
| for (var j = 0; b; j = j + 1) { | |
| if (j == 9) b = false; | |
| } | |
| } | |
| print(a); | |
| print(b); | |
| } | |
| """; | |
| const String TEST_FIVE = r""" | |
| void main() { | |
| var hash = 0; | |
| for (var i = 0; i == 0; i = i + 1) { | |
| hash = hash + 10; | |
| hash = hash + 42; | |
| } | |
| print(hash); | |
| } | |
| """; | |
| main() { | |
| runTests() async { | |
| await compileAndMatchFuzzy(TEST_ONE, 'foo', "var x = x \\? 2 : 3;"); | |
| await compileAndMatchFuzzy(TEST_ONE, 'foo', "print\\(x\\);"); | |
| await compileAndMatchFuzzy(TEST_TWO, 'main', "x \\+= 10"); | |
| await compileAndMatchFuzzy(TEST_TWO, 'main', "\\+\\+x"); | |
| // Check that we don't have 'd = d' (using regexp back references). | |
| await compileAndDoNotMatchFuzzy(TEST_THREE, 'foo', '(x) = \1'); | |
| await compileAndMatchFuzzy(TEST_THREE, 'foo', 'return x'); | |
| // Check that a store just after the declaration of the local | |
| // only generates one instruction. | |
| await compileAndMatchFuzzy(TEST_THREE, 'foo', 'x = 42'); | |
| await compileAndDoNotMatchFuzzy(TEST_FOUR, 'foo', '(x) = \1;'); | |
| await compileAndDoNotMatch(TEST_FIVE, 'main', RegExp('hash0')); | |
| } | |
| asyncTest(() async { | |
| print('--test from kernel------------------------------------------------'); | |
| await runTests(); | |
| }); | |
| } |