// 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(); }); }