| 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..7d0876b46a78cbfd4d723b02b4af124ad686e11f 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:
|
| + fez: {
|
| + x = 100;
|
| + break fez;
|
| + }
|
| + 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);
|
| }
|
|
|