Revert "Fail early if malformed inner names are found."

This reverts commit 4a7946db6fe3dd3d49d08ca3c4ed6cb9a0eb4bc7.

Reason for revert: breaks targets in google3

Bug: 120597515, 130706685

Change-Id: I89ccf6e2ee5af8e7c2564c74110b0c236e7ff0d6
diff --git a/src/main/java/com/android/tools/r8/graph/JarClassFileReader.java b/src/main/java/com/android/tools/r8/graph/JarClassFileReader.java
index 78a0ba9..4aa5b7c 100644
--- a/src/main/java/com/android/tools/r8/graph/JarClassFileReader.java
+++ b/src/main/java/com/android/tools/r8/graph/JarClassFileReader.java
@@ -12,7 +12,6 @@
 import com.android.tools.r8.ProgramResource.Kind;
 import com.android.tools.r8.dex.Constants;
 import com.android.tools.r8.errors.CompilationError;
-import com.android.tools.r8.errors.InternalCompilerError;
 import com.android.tools.r8.errors.Unreachable;
 import com.android.tools.r8.graph.DexValue.DexValueAnnotation;
 import com.android.tools.r8.graph.DexValue.DexValueArray;
@@ -31,7 +30,6 @@
 import com.android.tools.r8.jar.CfApplicationWriter;
 import com.android.tools.r8.origin.Origin;
 import com.android.tools.r8.shaking.ProguardKeepAttributes;
-import com.android.tools.r8.utils.DescriptorUtils;
 import com.android.tools.r8.utils.FieldSignatureEquivalence;
 import com.android.tools.r8.utils.InternalOptions;
 import com.android.tools.r8.utils.MethodSignatureEquivalence;
@@ -211,14 +209,6 @@
 
     @Override
     public void visitInnerClass(String name, String outerName, String innerName, int access) {
-      if (outerName != null && innerName != null) {
-        String separator =
-            DescriptorUtils.computeInnerClassSeparator(
-                outerName, name, innerName, application.options);
-        if (separator == null) {
-          throw new InternalCompilerError("Malformed class name: " + name);
-        }
-      }
       innerClasses.add(
           new InnerClassAttribute(
               access,
diff --git a/src/main/java/com/android/tools/r8/utils/DescriptorUtils.java b/src/main/java/com/android/tools/r8/utils/DescriptorUtils.java
index 21c7903..40c0236 100644
--- a/src/main/java/com/android/tools/r8/utils/DescriptorUtils.java
+++ b/src/main/java/com/android/tools/r8/utils/DescriptorUtils.java
@@ -311,26 +311,18 @@
 
   public static String computeInnerClassSeparator(
       DexType outerClass, DexType innerClass, String innerName, InternalOptions options) {
-    return computeInnerClassSeparator(
-        outerClass.getInternalName(), innerClass.getInternalName(), innerName, options);
-  }
-
-  public static String computeInnerClassSeparator(
-      String outerDescriptor, String innerDescriptor, String innerName, InternalOptions options) {
+    String outerInternalRaw = outerClass.getInternalName();
+    String innerInternalRaw = innerClass.getInternalName();
     // outer-internal<separator>inner-name == inner-internal
-    if (outerDescriptor.length() + innerName.length() > innerDescriptor.length()) {
-      // But, if the minification is enabled, we can choose $ separator.
-      if (options.isMinifying()) {
-        return String.valueOf(INNER_CLASS_SEPARATOR);
-      }
+    if (outerInternalRaw.length() + innerName.length() > innerInternalRaw.length()) {
       return null;
     }
     String separator =
-        innerDescriptor.substring(
-            outerDescriptor.length(), innerDescriptor.length() - innerName.length());
+        innerInternalRaw.substring(
+            outerInternalRaw.length(), innerInternalRaw.length() - innerName.length());
     // Any non-$ separator results in a runtime exception in getCanonicalName.
     if (!separator.startsWith(String.valueOf(INNER_CLASS_SEPARATOR))) {
-      // Again, if the minification is enabled, we can choose $ separator.
+      // But, if the minification is enabled, we can choose $ separator.
       if (options.isMinifying()) {
         return String.valueOf(INNER_CLASS_SEPARATOR);
       }
diff --git a/src/test/java/com/android/tools/r8/ir/optimize/reflection/InnerClassNameTestRunner.java b/src/test/java/com/android/tools/r8/ir/optimize/reflection/InnerClassNameTestRunner.java
index 4ac1d9a..7d44d4b 100644
--- a/src/test/java/com/android/tools/r8/ir/optimize/reflection/InnerClassNameTestRunner.java
+++ b/src/test/java/com/android/tools/r8/ir/optimize/reflection/InnerClassNameTestRunner.java
@@ -4,8 +4,6 @@
 package com.android.tools.r8.ir.optimize.reflection;
 
 import static org.hamcrest.CoreMatchers.containsString;
-import static org.hamcrest.MatcherAssert.assertThat;
-import static org.junit.Assert.assertFalse;
 import static org.junit.Assert.assertTrue;
 
 import com.android.tools.r8.CompilationFailedException;
@@ -16,7 +14,6 @@
 import com.android.tools.r8.TestParameters;
 import com.android.tools.r8.TestRuntime.CfVm;
 import com.android.tools.r8.ToolHelper.DexVm;
-import com.android.tools.r8.errors.InternalCompilerError;
 import com.android.tools.r8.errors.Unreachable;
 import com.android.tools.r8.utils.BooleanUtils;
 import com.android.tools.r8.utils.DescriptorUtils;
@@ -174,15 +171,9 @@
             .minification(minify)
             .setMinApi(parameters.getRuntime())
             .compile();
-    } catch (InternalCompilerError e) {
-      assertThat(e.getMessage(), containsString("Malformed class name"));
-      assertThat(e.getMessage(), containsString(config.getInnerTypeRaw()));
-      assertTrue(
-          "b/120597515",
-          config == TestNamingConfig.EMTPY_SEPARATOR
-              || config == TestNamingConfig.UNDERBAR_SEPARATOR
-              || config == TestNamingConfig.NON_NESTED_INNER);
-      assertFalse("b/120597515", minify);
+    } catch (CompilationFailedException e) {
+      assertTrue("b/120597515", config == TestNamingConfig.NON_NESTED_INNER);
+      assertTrue("b/120597515", minify);
       return;
     }
     CodeInspector inspector = r8CompileResult.inspector();
@@ -214,9 +205,32 @@
         break;
       case EMTPY_SEPARATOR:
       case UNDERBAR_SEPARATOR:
+        if (!minify
+            && parameters.isCfRuntime()
+            && parameters.getRuntime().asCf().getVm().lessThanOrEqual(CfVm.JDK8)) {
+          // Any non-$ separator results in a runtime exception in getCanonicalName.
+          r8RunResult.assertFailureWithErrorThatMatches(containsString("Malformed class name"));
+        } else {
+          assert minify
+              || parameters.isDexRuntime()
+              || !parameters.getRuntime().asCf().getVm().lessThanOrEqual(CfVm.JDK8);
+          r8RunResult.assertSuccessWithOutput(getExpectedMinified(inspector));
+        }
+        break;
       case NON_NESTED_INNER:
-        assertTrue("Expect to see compilation error", minify);
-        r8RunResult.assertSuccessWithOutput(getExpectedMinified(inspector));
+        if (minify) {
+          // TODO(b/120597515): better fail early while reading class file.
+          throw new Unreachable("Expect to see compilation error: " + config);
+        }
+        if (parameters.isCfRuntime()
+            && parameters.getRuntime().asCf().getVm().lessThanOrEqual(CfVm.JDK8)) {
+          // Any non-$ separator results in a runtime exception in getCanonicalName.
+          r8RunResult.assertFailureWithErrorThatMatches(containsString("Malformed class name"));
+        } else {
+          assert parameters.isDexRuntime()
+              || !parameters.getRuntime().asCf().getVm().lessThanOrEqual(CfVm.JDK8);
+          r8RunResult.assertSuccessWithOutput(getExpectedMinified(inspector));
+        }
         break;
       default:
         throw new Unreachable("Unexpected test configuration: " + config);