| // 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. | |
| // Test nested switch statement using labels. | |
| // VMOptions= | |
| // VMOptions=--force-switch-dispatch-type=0 | |
| // VMOptions=--force-switch-dispatch-type=1 | |
| // VMOptions=--force-switch-dispatch-type=2 | |
| library nested_switch_label; | |
| import "package:expect/expect.dart"; | |
| void main() { | |
| doSwitch(0, ['0', '2:0', '1', 'default']); | |
| doSwitch(2, ['2:2', '2:1', '2', '1', 'default']); | |
| } | |
| void doSwitch(int target, List expect) { | |
| List list = []; | |
| switch (target) { | |
| outer0: | |
| case 0: | |
| list.add('0'); | |
| continue outer2; | |
| outer1: | |
| case 1: | |
| list.add('1'); | |
| continue outerDefault; | |
| outer2: | |
| case 2: | |
| switch (target) { | |
| inner0: | |
| case 0: | |
| list.add('2:0'); | |
| continue outer1; | |
| inner2: | |
| case 2: | |
| list.add('2:2'); | |
| continue inner1; | |
| inner1: | |
| case 1: | |
| list.add('2:1'); | |
| } | |
| list.add('2'); | |
| continue outer1; | |
| outerDefault: | |
| default: | |
| list.add('default'); | |
| } | |
| Expect.listEquals(expect, list); | |
| } |