|  | // 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); | 
|  | } |