blob: 588e541474df9a0a1ae2584b1e0eefebd2cc49b2 [file] [log] [blame] [edit]
// 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);
}
}