Fix Pay-as-you-go emulated interfaces

Bug: 182381011
Change-Id: I0a31212bc4fcb0cb100723e075fd127dbd396bd9
diff --git a/src/main/java/com/android/tools/r8/ir/desugar/ClassProcessor.java b/src/main/java/com/android/tools/r8/ir/desugar/ClassProcessor.java
index 04b702a..3e665db 100644
--- a/src/main/java/com/android/tools/r8/ir/desugar/ClassProcessor.java
+++ b/src/main/java/com/android/tools/r8/ir/desugar/ClassProcessor.java
@@ -126,7 +126,7 @@
         ClassInfo parent,
         ImmutableList<DexClassAndMethod> forwardedMethodTargets,
         EmulatedInterfaceInfo emulatedInterfaceInfo) {
-      return forwardedMethodTargets.isEmpty()
+      return forwardedMethodTargets.isEmpty() && emulatedInterfaceInfo.isEmpty()
           ? parent
           : new ClassInfo(parent, forwardedMethodTargets, emulatedInterfaceInfo);
     }
@@ -725,8 +725,8 @@
     SignaturesInfo signatures = visitLibraryClassInfo(clazz.superType);
     // The class may inherit emulated interface info from its program superclass if the latter
     // did not require to resolve the forwarding methods for emualted interfaces.
-    signatures = signatures.withEmulatedInterfaceInfo(superInfo.emulatedInterfaceInfo);
     assert superInfo.isEmpty() || signatures.isEmpty();
+    signatures = signatures.withEmulatedInterfaceInfo(superInfo.emulatedInterfaceInfo);
     for (DexType iface : clazz.interfaces.values) {
       signatures = signatures.merge(visitInterfaceInfo(iface, thisContext));
     }
diff --git a/src/test/java/com/android/tools/r8/desugar/desugaredlibrary/CustomMapHierarchyTest.java b/src/test/java/com/android/tools/r8/desugar/desugaredlibrary/CustomMapHierarchyTest.java
index 9984eb3..57d8867 100644
--- a/src/test/java/com/android/tools/r8/desugar/desugaredlibrary/CustomMapHierarchyTest.java
+++ b/src/test/java/com/android/tools/r8/desugar/desugaredlibrary/CustomMapHierarchyTest.java
@@ -24,10 +24,13 @@
 @RunWith(Parameterized.class)
 public class CustomMapHierarchyTest extends DesugaredLibraryTestBase {
 
+  private static final String EXPECTED =
+      StringUtils.lines("B::getOrDefault", "default 1", "B::getOrDefault", "default 2");
+
   private final TestParameters parameters;
   private final boolean shrinkDesugaredLibrary;
 
-  @Parameters(name = "{1}, shrinkDesugaredLibrary: {0}")
+  @Parameters(name = "{0}, shrinkDesugaredLibrary: {1}")
   public static List<Object[]> data() {
     return buildParameters(
         getTestParameters().withAllRuntimes().withAllApiLevelsAlsoForCf().build(),
@@ -67,13 +70,7 @@
             keepRuleConsumer.get(),
             shrinkDesugaredLibrary)
         .run(parameters.getRuntime(), Main.class)
-        // TODO(b/182381011): Should always be EXPECTED.
-        .assertSuccessWithOutput(
-            parameters
-                    .getApiLevel()
-                    .isGreaterThanOrEqualTo(TestBase.apiLevelWithDefaultInterfaceMethodsSupport())
-                ? EXPECTED
-                : NOT_EXPECTED);
+        .assertSuccessWithOutput(EXPECTED);
   }
 
   @Test
@@ -109,25 +106,13 @@
               desugaredLibraryKeepRules,
               shrinkDesugaredLibrary)
           .run(parameters.getRuntime(), Main.class)
-          // TODO(b/182381011): Should always be EXPECTED.
-          .assertSuccessWithOutput(
-              parameters
-                      .getApiLevel()
-                      .isGreaterThanOrEqualTo(TestBase.apiLevelWithDefaultInterfaceMethodsSupport())
-                  ? EXPECTED
-                  : NOT_EXPECTED);
+          .assertSuccessWithOutput(EXPECTED);
     } else {
       testForJvm()
           .addProgramFiles(jar)
           .addRunClasspathFiles(getDesugaredLibraryInCF(parameters, options -> {}))
           .run(parameters.getRuntime(), Main.class)
-          // TODO(b/182381011): Should always be EXPECTED.
-          .assertSuccessWithOutput(
-              parameters
-                      .getApiLevel()
-                      .isGreaterThanOrEqualTo(TestBase.apiLevelWithDefaultInterfaceMethodsSupport())
-                  ? EXPECTED
-                  : NOT_EXPECTED);
+          .assertSuccessWithOutput(EXPECTED);
     }
   }
 
@@ -145,12 +130,6 @@
             ProguardKeepAttributes.ENCLOSING_METHOD)
         .setMinApi(parameters.getApiLevel())
         .enableCoreLibraryDesugaring(parameters.getApiLevel(), keepRuleConsumer)
-        // TODO(b/182381011): Should not happen.
-        .applyIf(
-            parameters
-                .getApiLevel()
-                .isLessThan(TestBase.apiLevelWithDefaultInterfaceMethodsSupport()),
-            b -> b.addDontWarn("java.util.Map$-CC"))
         .compile()
         .addDesugaredCoreLibraryRunClassPath(
             this::buildDesugaredLibrary,
@@ -158,19 +137,9 @@
             keepRuleConsumer.get(),
             shrinkDesugaredLibrary)
         .run(parameters.getRuntime(), Main.class)
-        // TODO(b/182381011): Should always be EXPECTED.
-        .assertSuccessWithOutput(
-            parameters
-                    .getApiLevel()
-                    .isGreaterThanOrEqualTo(TestBase.apiLevelWithDefaultInterfaceMethodsSupport())
-                ? EXPECTED
-                : NOT_EXPECTED);
+        .assertSuccessWithOutput(EXPECTED);
   }
 
-  final String EXPECTED =
-      StringUtils.lines("B::getOrDefault", "default 1", "B::getOrDefault", "default 2");
-  final String NOT_EXPECTED = StringUtils.lines("B::getOrDefault", "default 1", "default 2");
-
   public static class Main {
     public static void main(String[] args) {
       System.out.println(new B<String>().getOrDefault("Not found", "default 1"));