// 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. // Test constant folding on numbers. import 'package:expect/async_helper.dart'; import '../helpers/compiler_helper.dart'; const String SIMPLY_EMPTY = """ int foo(x) => x; void main() { var a = foo(4); var b = 1; switch (a) { case 1: b += 2; a = 0; } print(a); } """; const String TOTAL = """ void main() { for (int a = 0; a < 3; a++) { switch (a) { case 0: a = 99; break; case 1: a = 2; break; case 2: a = 1; break; default: a = 33; } print(a); } } """; const String OPTIMIZED = """ void main() { var b; for (int a = 0; a < 3; a++) { switch (a) { case 1: case 2: b = 0; ++a; break; default: b = 0; } print(a+b); } } """; const String LABEL = """ void main() { var b; for (int a = 0; a < 3; a++) { switch (a) { case 1: break; case 2: b = 0; continue K; K: case 3: default: b = 5; } print(a+b); } } """; const String DEFLABEL = """ void main() { var b; for (int a = 0; a < 3; a++) { switch (a) { case 1: continue L; case 2: b = 0; break; L: default: b = 5; } print(a+b); } } """; const String EMPTYDEFLABEL = """ void main() { var b; for (int a = 0; a < 3; a++) { switch (a) { case 1: continue L; case 2: b = 0; break; L: default: } print(a+b); } } """; main() { var def = RegExp(r"default:"); var defOrCase3 = RegExp(r"(default:|case 3):"); var case3 = RegExp(r"case 3:"); runTests() async { await compileAndDoNotMatch(SIMPLY_EMPTY, 'main', def); await compileAndDoNotMatch(TOTAL, 'main', defOrCase3); await compileAndDoNotMatch(OPTIMIZED, 'main', def); await compileAndMatch(LABEL, 'main', case3); await compileAndMatch(DEFLABEL, 'main', def); await compileAndMatch(EMPTYDEFLABEL, 'main', def); } asyncTest(() async { print('--test from kernel------------------------------------------------'); await runTests(); }); }