Fix red tests
Change-Id: I134f04a1a425553ec6afec613358fdc06f56fa0c
diff --git a/src/main/java/com/android/tools/r8/ir/optimize/enums/EnumValueOptimizer.java b/src/main/java/com/android/tools/r8/ir/optimize/enums/EnumValueOptimizer.java
index 06f4eae..908d125 100644
--- a/src/main/java/com/android/tools/r8/ir/optimize/enums/EnumValueOptimizer.java
+++ b/src/main/java/com/android/tools/r8/ir/optimize/enums/EnumValueOptimizer.java
@@ -10,6 +10,7 @@
import com.android.tools.r8.graph.DexField;
import com.android.tools.r8.graph.DexItemFactory;
import com.android.tools.r8.graph.DexMethod;
+import com.android.tools.r8.graph.DexProgramClass;
import com.android.tools.r8.graph.DexType;
import com.android.tools.r8.graph.EnumValueInfoMapCollection.EnumValueInfo;
import com.android.tools.r8.graph.EnumValueInfoMapCollection.EnumValueInfoMap;
@@ -119,8 +120,10 @@
Instruction arrayDefinition = current.asArrayLength().array().definition;
if (arrayDefinition != null && arrayDefinition.isInvokeStatic()) {
DexMethod invokedMethod = arrayDefinition.asInvokeStatic().getInvokedMethod();
- if (factory.enumMethods.isValuesMethod(
- invokedMethod, appView.definitionForProgramType(invokedMethod.holder))) {
+ DexProgramClass enumClass = appView.definitionForProgramType(invokedMethod.holder);
+ if (enumClass != null
+ && enumClass.isEnum()
+ && factory.enumMethods.isValuesMethod(invokedMethod, enumClass)) {
EnumValueInfoMap enumValueInfoMap =
appView.appInfo().withLiveness().getEnumValueInfoMap(invokedMethod.holder);
if (enumValueInfoMap != null) {
diff --git a/src/test/java/com/android/tools/r8/enumunboxing/SwitchEnumUnboxingTest.java b/src/test/java/com/android/tools/r8/enumunboxing/SwitchEnumUnboxingTest.java
index 4bfa568..b7c7005 100644
--- a/src/test/java/com/android/tools/r8/enumunboxing/SwitchEnumUnboxingTest.java
+++ b/src/test/java/com/android/tools/r8/enumunboxing/SwitchEnumUnboxingTest.java
@@ -50,7 +50,13 @@
.setMinApi(parameters.getApiLevel())
.compile()
.inspectDiagnosticMessages(
- m -> assertEnumIsBoxed(ENUM_CLASS, classToTest.getSimpleName(), m))
+ m -> {
+ if (enumValueOptimization) {
+ assertEnumIsUnboxed(ENUM_CLASS, classToTest.getSimpleName(), m);
+ } else {
+ assertEnumIsBoxed(ENUM_CLASS, classToTest.getSimpleName(), m);
+ }
+ })
.run(parameters.getRuntime(), classToTest)
.assertSuccess();
assertLines2By2Correct(run.getStdOut());