| // Copyright (c) 2013, 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. |
| |
| // @dart = 2.9 |
| |
| // Test nested switch statement using labels. |
| |
| library nested_switch_label; |
| |
| import "package:expect/expect.dart"; |
| |
| void main() { |
| Expect.throws(() => doSwitch(0), (list) { |
| Expect.listEquals([0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0], list); |
| return true; |
| }); |
| Expect.throws(() => doSwitch(2), (list) { |
| Expect.listEquals([2, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0], list); |
| return true; |
| }); |
| } |
| |
| void doSwitch(int target) { |
| List list = []; |
| switch (target) { |
| l0: |
| case 0: |
| if (list.length > 10) throw list; |
| list.add(0); |
| continue l1; |
| l1: |
| case 1: |
| if (list.length > 10) throw list; |
| list.add(1); |
| continue l0; |
| default: |
| list.add(2); |
| continue l1; |
| } |
| } |