Account for array results in memberrebinding

Bug: b/233048876
Change-Id: Ifef024aa5f3ad677c13ce344f59d223f0620cc43
diff --git a/src/main/java/com/android/tools/r8/optimize/MemberRebindingAnalysis.java b/src/main/java/com/android/tools/r8/optimize/MemberRebindingAnalysis.java
index a03ff91..0f67814 100644
--- a/src/main/java/com/android/tools/r8/optimize/MemberRebindingAnalysis.java
+++ b/src/main/java/com/android/tools/r8/optimize/MemberRebindingAnalysis.java
@@ -291,6 +291,14 @@
             return;
           }
 
+          if (method.getHolderType().isArrayType()) {
+            assert resolutionResult.getResolvedHolder().getType()
+                == appView.dexItemFactory().objectType;
+            lensBuilder.map(
+                method, resolutionResult.getResolvedMethod().getReference(), invokeType);
+            return;
+          }
+
           // TODO(b/128404854) Rebind to the lowest library class or program class. For now we allow
           //  searching in library for methods, but this should be done on classpath instead.
           DexClassAndMethod resolvedMethod = resolutionResult.getResolutionPair();
diff --git a/src/test/java/com/android/tools/r8/memberrebinding/MemberRebindingArrayTest.java b/src/test/java/com/android/tools/r8/memberrebinding/MemberRebindingArrayTest.java
index 8e0f6e8..62de8e6 100644
--- a/src/test/java/com/android/tools/r8/memberrebinding/MemberRebindingArrayTest.java
+++ b/src/test/java/com/android/tools/r8/memberrebinding/MemberRebindingArrayTest.java
@@ -4,10 +4,6 @@
 
 package com.android.tools.r8.memberrebinding;
 
-import static org.hamcrest.core.StringContains.containsString;
-import static org.junit.Assert.assertThrows;
-
-import com.android.tools.r8.CompilationFailedException;
 import com.android.tools.r8.TestBase;
 import com.android.tools.r8.TestParameters;
 import com.android.tools.r8.TestParametersCollection;
@@ -40,21 +36,14 @@
 
   @Test
   public void testR8() throws Exception {
-    // TODO(b/233048876): We should not fail for arrays.
-    assertThrows(
-        CompilationFailedException.class,
-        () -> {
-          testForR8(parameters.getBackend())
-              .addProgramClassFileData(getMainWithRewrittenEqualsAndHashCode())
-              .addKeepMainRule(Main.class)
-              .setMinApi(parameters.getApiLevel())
-              .addOptionsModification(
-                  options -> options.apiModelingOptions().disableApiCallerIdentification())
-              .compileWithExpectedDiagnostics(
-                  diagnostics ->
-                      diagnostics.assertErrorMessageThatMatches(
-                          containsString("Cannot lookup definition for type: java.lang.String[]")));
-        });
+    testForR8(parameters.getBackend())
+        .addProgramClassFileData(getMainWithRewrittenEqualsAndHashCode())
+        .addKeepMainRule(Main.class)
+        .setMinApi(parameters.getApiLevel())
+        .addOptionsModification(
+            options -> options.apiModelingOptions().disableApiCallerIdentification())
+        .run(parameters.getRuntime(), Main.class)
+        .assertSuccessWithOutputLines(EXPECTED);
   }
 
   private byte[] getMainWithRewrittenEqualsAndHashCode() throws Exception {