|  | // Copyright (c) 2016, the R8 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. | 
|  |  | 
|  | // This code is not run directly. It needs to be compiled to dex code. | 
|  | // 'switches.dex' is what is run. | 
|  |  | 
|  | package switches; | 
|  |  | 
|  | class Switches { | 
|  |  | 
|  | public static void packedSwitch(int value) { | 
|  | System.out.print("packedSwitch cases: "); | 
|  | switch (value) { | 
|  | case 0: | 
|  | System.out.print("0 "); | 
|  | case 1: | 
|  | case 2: | 
|  | System.out.print("1 2 "); | 
|  | break; | 
|  | case 3: | 
|  | System.out.print("3 "); | 
|  | break; | 
|  | } | 
|  | System.out.println("after switch " + value); | 
|  | } | 
|  |  | 
|  | public static void sparseSwitch(int value) { | 
|  | switch (value) { | 
|  | case 0: | 
|  | System.out.println("0 "); | 
|  | case 100: | 
|  | System.out.println("100 "); | 
|  | break; | 
|  | case 200: | 
|  | System.out.println("200 "); | 
|  | break; | 
|  | } | 
|  | System.out.println("after switch " + value); | 
|  | } | 
|  |  | 
|  | public static void switchWithLocals(int value) { | 
|  | switch (value) { | 
|  | case 0: { | 
|  | int i = 42; | 
|  | System.out.println(" " + i + value); | 
|  | break; | 
|  | } | 
|  | case 2: { | 
|  | double d = 1.0; | 
|  | System.out.println(" " + d + value); | 
|  | break; | 
|  | } | 
|  | } | 
|  | } | 
|  |  | 
|  | public static void maybePackedSwitch(int value) { | 
|  | switch (value) { | 
|  | case 0: | 
|  | case 1: | 
|  | case 2: | 
|  | case 3: | 
|  | case 4: | 
|  | case 5: | 
|  | case 6: | 
|  | case 7: | 
|  | case 8: | 
|  | case 10: | 
|  | case 11: | 
|  | case 12: | 
|  | case 13: | 
|  | case 14: | 
|  | case 15: | 
|  | case 16: | 
|  | case 17: | 
|  | case 18: | 
|  | case 19: | 
|  | case 20: | 
|  | case 21: | 
|  | System.out.print("0-21 "); | 
|  | break; | 
|  | case 60: | 
|  | System.out.print("60 "); | 
|  | break; | 
|  | } | 
|  | System.out.println("after switch " + value); | 
|  | } | 
|  |  | 
|  | public static void main(String[] args) { | 
|  | packedSwitch(0); | 
|  | packedSwitch(1); | 
|  | packedSwitch(2); | 
|  | packedSwitch(-1);  // No such case, use fallthrough. | 
|  | sparseSwitch(0); | 
|  | sparseSwitch(100); | 
|  | sparseSwitch(200); | 
|  | sparseSwitch(-1);  // No such case, use fallthrough. | 
|  | switchWithLocals(0); | 
|  | switchWithLocals(2); | 
|  | maybePackedSwitch(1); | 
|  | maybePackedSwitch(10); | 
|  | maybePackedSwitch(40);  // Fallthrough. | 
|  | maybePackedSwitch(60); | 
|  | } | 
|  | } |