Chromium Code Reviews| Index: tests/compiler/dart2js/switch_empty_default_test.dart |
| diff --git a/tests/compiler/dart2js/switch_empty_default_test.dart b/tests/compiler/dart2js/switch_empty_default_test.dart |
| new file mode 100644 |
| index 0000000000000000000000000000000000000000..877d64fd117a62438f651f655afd12f783236451 |
| --- /dev/null |
| +++ b/tests/compiler/dart2js/switch_empty_default_test.dart |
| @@ -0,0 +1,112 @@ |
| +// 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/expect.dart"; |
| +import '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: |
|
karlklose
2014/03/12 14:43:45
I think we usually write the label as indented pre
herhut
2014/03/13 13:27:45
Done.
|
| + case 3: |
| + b = 19; |
| + 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); |
| +} |
| +"""; |
| + |
| +main() { |
| + var def = new RegExp(r"default:"); |
| + var defOrCase3 = new RegExp(r"(default:|case 3):"); |
| + var case3 = new RegExp(r"case 3:"); |
| + |
| + compileAndDoNotMatch( SIMPLY_EMPTY, 'main', def); |
|
karlklose
2014/03/12 14:43:45
Remove spaces before first arguments (here and bel
herhut
2014/03/13 13:27:45
Done.
|
| + compileAndDoNotMatch( TOTAL, 'main', defOrCase3); |
| + compileAndDoNotMatch( OPTIMIZED, 'main', def); |
| + compileAndMatch( LABEL, 'main', case3); |
| + compileAndMatch( DEFLABEL, 'main', def); |
| +} |