blob: 5dd5ec0ff896aa87174a15454bf2f3a438881b15 [file] [log] [blame]
// Copyright (c) 2019, 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.
package com.android.tools.r8.rewrite.enums;
import com.android.tools.r8.AssumeMayHaveSideEffects;
import com.android.tools.r8.ForceInline;
import com.android.tools.r8.NeverInline;
import java.util.concurrent.TimeUnit;
class Names {
enum Number {
ONE, TWO;
public static final Direction DOWN = Direction.DOWN;
public static final Number DEFAULT = TWO;
}
enum Direction {
UP, DOWN
}
@AssumeMayHaveSideEffects
@NeverInline
private static String simple() {
return Number.TWO.name();
}
@AssumeMayHaveSideEffects
@NeverInline
private static String local() {
Number two = Number.TWO;
return two.name();
}
@AssumeMayHaveSideEffects
@NeverInline
private static String multipleUsages() {
Number two = Number.TWO;
return two.ordinal() + two.name();
}
@AssumeMayHaveSideEffects
@NeverInline
private static String inlined() {
return inlined2(Number.TWO);
}
@ForceInline
private static String inlined2(Number number) {
return number.name();
}
@NeverInline
private static String libraryType() {
return TimeUnit.SECONDS.name();
}
@AssumeMayHaveSideEffects
@NeverInline
private static String differentTypeStaticField() {
return Number.DOWN.name();
}
@AssumeMayHaveSideEffects
@NeverInline
private static String nonValueStaticField() {
return Number.DEFAULT.name();
}
@NeverInline
private static String phi(boolean value) {
Number number = Number.ONE;
if (value) {
number = Number.TWO;
}
return number.name();
}
@AssumeMayHaveSideEffects
@NeverInline
private static String nonStaticGet() {
return new Names().two.name();
}
private final Number two = Number.TWO;
public static void main(String[] args) {
System.out.println(simple());
System.out.println(local());
System.out.println(multipleUsages());
System.out.println(inlined());
System.out.println(libraryType());
System.out.println(differentTypeStaticField());
System.out.println(nonValueStaticField());
System.out.println(phi(true));
System.out.println(nonStaticGet());
}
}