Chromium Code Reviews| Index: frog/tests/leg_only/switch_test.dart |
| diff --git a/frog/tests/leg_only/switch_test.dart b/frog/tests/leg_only/switch_test.dart |
| index 520e435b3bdf81d6c9c6e064242891e55d7d7c73..31d50b0eb652fb347734de57e02a26d1c026bb41 100644 |
| --- a/frog/tests/leg_only/switch_test.dart |
| +++ b/frog/tests/leg_only/switch_test.dart |
| @@ -21,9 +21,63 @@ switcher(val) { |
| return x; |
| } |
| + |
| +// Check unambiguated grammar allowing multiple lables per case/default. |
| +switcher2(val) { |
| + var x = 0; |
| + switch (val) { |
| + foo: |
| + bar: |
| + case 1: |
| + baz: |
| + case 2: |
| + fubar: { |
| + x = 100; |
| + break fubar; |
|
ahe
2012/05/14 09:24:25
That is a cuss word. It means "F'ed up beyond all
Lasse Reichstein Nielsen
2012/05/14 10:34:58
Or "beyond all repair", even.
Will change.
|
| + } |
| + break; |
| + hest: |
| + fisk: |
| + case 3: |
| + case 4: |
| + svin: |
| + default: |
| + barber: { |
| + if (val > 2) { |
| + x = 200; |
| + break; |
| + } else { |
| + // Enable when continue to switch-case is implemented. |
| + continue hest; /// 03: compile-time error |
| + } |
| + } |
| + } |
| + return x; |
| +} |
| + |
| + |
| +badswitches(val) { |
| + // Test some badly formed switch bodies. |
| + // 01 - a label/statement without a following case/default. |
| + // 02 - a label without a following case/default or statement. |
| + switch (val) { |
| + foo: break; /// 01: compile-time error |
| + case 2: /// 02: compile-time error |
| + foo: /// 02: continued |
| + } |
| +} |
| + |
| main() { |
| Expect.equals(100, switcher(1)); |
| Expect.equals(200, switcher(2)); |
| Expect.equals(300, switcher(3)); |
| Expect.equals(400, switcher(4)); |
| + |
| + Expect.equals(100, switcher2(1)); |
| + Expect.equals(100, switcher2(2)); |
| + Expect.equals(200, switcher2(3)); |
| + Expect.equals(200, switcher2(4)); |
| + Expect.equals(200, switcher2(5)); |
| + |
| + badswitches(42); |
| } |