Update test expectation in presence of enum unboxing

Bug: 160939354
Change-Id: Iff8be86178653ab7a6fbb4f9e34194d810b62ad2
diff --git a/src/main/java/com/android/tools/r8/ir/synthetic/EnumUnboxingCfCodeProvider.java b/src/main/java/com/android/tools/r8/ir/synthetic/EnumUnboxingCfCodeProvider.java
index 5e9d63f..5a50ca4 100644
--- a/src/main/java/com/android/tools/r8/ir/synthetic/EnumUnboxingCfCodeProvider.java
+++ b/src/main/java/com/android/tools/r8/ir/synthetic/EnumUnboxingCfCodeProvider.java
@@ -68,6 +68,8 @@
             instructions.add(new CfLoad(ValueType.fromDexType(factory.intType), 0));
             instructions.add(new CfConstNumber(enumValueInfo.convertToInt(), ValueType.INT));
             instructions.add(new CfIfCmp(If.Type.NE, ValueType.INT, dest));
+            // TODO(b/160939354): Should use the value passed to the enum constructor, since this
+            //  value may be different from the enum field name.
             instructions.add(new CfConstString(field.name));
             instructions.add(new CfReturn(ValueType.OBJECT));
             instructions.add(dest);
@@ -123,6 +125,8 @@
           (field, enumValueInfo) -> {
             CfLabel dest = new CfLabel();
             instructions.add(new CfLoad(ValueType.fromDexType(factory.stringType), 0));
+            // TODO(b/160939354): Should use the value passed to the enum constructor, since this
+            //  value may be different from the enum field name.
             instructions.add(new CfConstString(field.name));
             instructions.add(
                 new CfInvoke(Opcodes.INVOKEVIRTUAL, factory.stringMembers.equals, false));
diff --git a/src/test/java/com/android/tools/r8/enumunboxing/EnumToStringLibTest.java b/src/test/java/com/android/tools/r8/enumunboxing/EnumToStringLibTest.java
index 83393bf..1a440cb 100644
--- a/src/test/java/com/android/tools/r8/enumunboxing/EnumToStringLibTest.java
+++ b/src/test/java/com/android/tools/r8/enumunboxing/EnumToStringLibTest.java
@@ -65,6 +65,7 @@
             .addKeepMainRule(AlwaysCorrectProgram.class)
             .addKeepMainRule(AlwaysCorrectProgram2.class)
             .addKeepRules(enumKeepRules.getKeepRules())
+            .addKeepAttributeLineNumberTable()
             .addOptionsModification(
                 options -> {
                   options.enableEnumUnboxing = enumUnboxing;
@@ -75,19 +76,26 @@
             .allowDiagnosticInfoMessages(enumUnboxing)
             .setMinApi(parameters.getApiLevel())
             .compile();
-    compile
-        .run(parameters.getRuntime(), AlwaysCorrectProgram.class)
-        .assertSuccessWithOutputLines("0", "1", "2", "0", "1", "2", "0", "1", "2");
+    if (enumKeepRules.isStudio() && enumValueOptimization && enumUnboxing) {
+      // TODO(b/160939354): Enum unboxing synthesizes a toString() method based on field names.
+      compile
+          .run(parameters.getRuntime(), AlwaysCorrectProgram.class)
+          .assertFailureWithErrorThatMatches(containsString("IllegalArgumentException"));
+    } else {
+      compile
+          .run(parameters.getRuntime(), AlwaysCorrectProgram.class)
+          .assertSuccessWithOutputLines("0", "1", "2", "0", "1", "2", "0", "1", "2");
+    }
     if (!enumKeepRules.isSnap() && enumUnboxing) {
-      // TODO(b/160667929): Fix toString and enum unboxing.
+      // TODO(b/160939354): Enum unboxing synthesizes a toString() method based on field names.
       compile
           .run(parameters.getRuntime(), AlwaysCorrectProgram2.class)
           .assertFailureWithErrorThatMatches(containsString("IllegalArgumentException"));
-      return;
+    } else {
+      compile
+          .run(parameters.getRuntime(), AlwaysCorrectProgram2.class)
+          .assertSuccessWithOutputLines("0", "1", "2", "0", "1", "2");
     }
-    compile
-        .run(parameters.getRuntime(), AlwaysCorrectProgram2.class)
-        .assertSuccessWithOutputLines("0", "1", "2", "0", "1", "2");
   }
 
   private void assertEnumFieldsMinified(CodeInspector codeInspector) throws Exception {
diff --git a/src/test/java/com/android/tools/r8/enumunboxing/EnumUnboxingTestBase.java b/src/test/java/com/android/tools/r8/enumunboxing/EnumUnboxingTestBase.java
index 65aee25..02b5a5f 100644
--- a/src/test/java/com/android/tools/r8/enumunboxing/EnumUnboxingTestBase.java
+++ b/src/test/java/com/android/tools/r8/enumunboxing/EnumUnboxingTestBase.java
@@ -42,6 +42,10 @@
       return keepRules;
     }
 
+    public boolean isStudio() {
+      return this == STUDIO;
+    }
+
     public boolean isSnap() {
       return this == SNAP;
     }