Enable R8 partial in constant dynamic desugaring tests

Fixes: b/414327631
Change-Id: I88d929bb6e7b18078275013ee23e533be419b3fb
diff --git a/src/main/java/com/android/tools/r8/ir/desugar/constantdynamic/ConstantDynamicClass.java b/src/main/java/com/android/tools/r8/ir/desugar/constantdynamic/ConstantDynamicClass.java
index 7a72b2d..31d4a1c 100644
--- a/src/main/java/com/android/tools/r8/ir/desugar/constantdynamic/ConstantDynamicClass.java
+++ b/src/main/java/com/android/tools/r8/ir/desugar/constantdynamic/ConstantDynamicClass.java
@@ -57,8 +57,10 @@
 import com.android.tools.r8.ir.optimize.UtilityMethodsForCodeOptimizations;
 import com.android.tools.r8.ir.optimize.UtilityMethodsForCodeOptimizations.MethodSynthesizerConsumer;
 import com.android.tools.r8.ir.optimize.UtilityMethodsForCodeOptimizations.UtilityMethodForCodeOptimizations;
+import com.android.tools.r8.partial.R8PartialSubCompilationConfiguration;
 import com.android.tools.r8.synthesis.SyntheticProgramClassBuilder;
 import com.android.tools.r8.utils.AndroidApiLevel;
+import com.android.tools.r8.utils.InternalOptions;
 import com.android.tools.r8.utils.ListUtils;
 import com.google.common.collect.ImmutableList;
 import java.util.Collection;
@@ -391,8 +393,7 @@
     if (finalDefinition != null) {
       // Since we've copied the code object from an existing method, the code should already be
       // processed, and thus we don't need to schedule it for processing in D8.
-      assert !appView.options().isGeneratingClassFiles() || finalDefinition.getCode().isCfCode();
-      assert !appView.options().isGeneratingDex() || finalDefinition.getCode().isDexCode();
+      assert verifyCodeMatchesBackend(appView, finalDefinition);
       finalMethod = finalDefinition.asProgramMethod(bootstrapMethodHolder);
       eventConsumer.acceptConstantDynamicRewrittenBootstrapMethod(
           finalMethod, bootstrapMethodReference);
@@ -405,6 +406,21 @@
     assert finalMethod.getDefinition().isPublicMethod();
   }
 
+  private boolean verifyCodeMatchesBackend(AppView<?> appView, DexEncodedMethod method) {
+    InternalOptions options = appView.options();
+    if (options.isGeneratingClassFiles()) {
+      assert method.getCode().isCfCode();
+    } else if (options.isGeneratingDex()) {
+      R8PartialSubCompilationConfiguration subCompilationConfiguration =
+          options.partialSubCompilationConfiguration;
+      assert method.getCode().isDexCode()
+          || (subCompilationConfiguration != null
+              && subCompilationConfiguration.isD8()
+              && method.getCode().isLirCode());
+    }
+    return true;
+  }
+
   @SuppressWarnings("ReferenceEquality")
   private DexType mapLookupTypeToObject(DexType type) {
     return type == appView.dexItemFactory().lookupType ? appView.dexItemFactory().objectType : type;
@@ -412,25 +428,26 @@
 
   private Code adaptCode(DexEncodedMethod method) {
     assert behaviour == CACHE_CONSTANT;
-    if (method.getCode().isDexCode()) {
-      return method.getCode();
+    Code code = method.getCode();
+    if (code.isDexCode() || code.isLirCode()) {
+      return code;
     }
-    CfCode code = method.getCode().asCfCode();
+    CfCode cfCode = code.asCfCode();
     List<CfInstruction> newInstructions =
         ListUtils.mapOrElse(
-            code.getInstructions(),
+            cfCode.getInstructions(),
             instruction ->
                 instruction.isFrame()
                     ? instruction.asFrame().mapReferenceTypes(this::mapLookupTypeToObject)
                     : instruction);
-    return code.getInstructions() != newInstructions
+    return cfCode.getInstructions() != newInstructions
         ? new CfCode(
             method.getHolderType(),
-            code.getMaxStack(),
-            code.getMaxLocals(),
+            cfCode.getMaxStack(),
+            cfCode.getMaxLocals(),
             newInstructions,
-            code.getTryCatchRanges(),
-            code.getLocalVariables())
-        : code;
+            cfCode.getTryCatchRanges(),
+            cfCode.getLocalVariables())
+        : cfCode;
   }
 }
diff --git a/src/test/java/com/android/tools/r8/desugar/constantdynamic/BasicConstantDynamicTest.java b/src/test/java/com/android/tools/r8/desugar/constantdynamic/BasicConstantDynamicTest.java
index 9146b3e..6ed7eb2 100644
--- a/src/test/java/com/android/tools/r8/desugar/constantdynamic/BasicConstantDynamicTest.java
+++ b/src/test/java/com/android/tools/r8/desugar/constantdynamic/BasicConstantDynamicTest.java
@@ -54,8 +54,6 @@
 
   @Test
   public void testDesugaring() throws Exception {
-    // TODO(b/414327631): Fixme.
-    parameters.assumeNoPartialCompilation();
     testForDesugaring(parameters)
         .addProgramClassFileData(getTransformedClasses())
         .run(parameters.getRuntime(), MAIN_CLASS)
diff --git a/src/test/java/com/android/tools/r8/desugar/constantdynamic/ConstantDynamicGetDeclaredMethodsTest.java b/src/test/java/com/android/tools/r8/desugar/constantdynamic/ConstantDynamicGetDeclaredMethodsTest.java
index 41e90c1..13615a0 100644
--- a/src/test/java/com/android/tools/r8/desugar/constantdynamic/ConstantDynamicGetDeclaredMethodsTest.java
+++ b/src/test/java/com/android/tools/r8/desugar/constantdynamic/ConstantDynamicGetDeclaredMethodsTest.java
@@ -70,8 +70,6 @@
 
   @Test
   public void testDesugaring() throws Exception {
-    // TODO(b/414327631): Fixme.
-    parameters.assumeNoPartialCompilation();
     testForDesugaring(parameters)
         .addProgramClassFileData(getTransformedClasses())
         .run(parameters.getRuntime(), MAIN_CLASS)
diff --git a/src/test/java/com/android/tools/r8/desugar/constantdynamic/ConstantDynamicInDefaultInterfaceMethodTest.java b/src/test/java/com/android/tools/r8/desugar/constantdynamic/ConstantDynamicInDefaultInterfaceMethodTest.java
index b63dc47..02fedef 100644
--- a/src/test/java/com/android/tools/r8/desugar/constantdynamic/ConstantDynamicInDefaultInterfaceMethodTest.java
+++ b/src/test/java/com/android/tools/r8/desugar/constantdynamic/ConstantDynamicInDefaultInterfaceMethodTest.java
@@ -54,8 +54,6 @@
 
   @Test
   public void testDesugaring() throws Exception {
-    // TODO(b/414327631): Fixme.
-    parameters.assumeNoPartialCompilation();
     testForDesugaring(parameters)
         .addProgramClasses(MAIN_CLASS)
         .addProgramClassFileData(getTransformedClasses())
diff --git a/src/test/java/com/android/tools/r8/desugar/constantdynamic/ConstantDynamicMultipleConstantsUsingSameSymbolicReferenceTest.java b/src/test/java/com/android/tools/r8/desugar/constantdynamic/ConstantDynamicMultipleConstantsUsingSameSymbolicReferenceTest.java
index 583f63f..bf8b736 100644
--- a/src/test/java/com/android/tools/r8/desugar/constantdynamic/ConstantDynamicMultipleConstantsUsingSameSymbolicReferenceTest.java
+++ b/src/test/java/com/android/tools/r8/desugar/constantdynamic/ConstantDynamicMultipleConstantsUsingSameSymbolicReferenceTest.java
@@ -55,8 +55,6 @@
 
   @Test
   public void testDesugaring() throws Exception {
-    // TODO(b/414327631): Fixme.
-    parameters.assumeNoPartialCompilation();
     testForDesugaring(parameters)
         .addProgramClassFileData(getTransformedClasses())
         .addProgramClasses(Main.class)
diff --git a/src/test/java/com/android/tools/r8/desugar/constantdynamic/ConstantDynamicMultipleConstantsWithDifferentSymbolicReferenceUsingSameBSMAndArgumentsTest.java b/src/test/java/com/android/tools/r8/desugar/constantdynamic/ConstantDynamicMultipleConstantsWithDifferentSymbolicReferenceUsingSameBSMAndArgumentsTest.java
index 6b63a17..4d005cc 100644
--- a/src/test/java/com/android/tools/r8/desugar/constantdynamic/ConstantDynamicMultipleConstantsWithDifferentSymbolicReferenceUsingSameBSMAndArgumentsTest.java
+++ b/src/test/java/com/android/tools/r8/desugar/constantdynamic/ConstantDynamicMultipleConstantsWithDifferentSymbolicReferenceUsingSameBSMAndArgumentsTest.java
@@ -56,8 +56,6 @@
 
   @Test
   public void testDesugaring() throws Exception {
-    // TODO(b/414327631): Fixme.
-    parameters.assumeNoPartialCompilation();
     testForDesugaring(parameters)
         .addProgramClassFileData(classFileData)
         .run(parameters.getRuntime(), MAIN_CLASS)
diff --git a/src/test/java/com/android/tools/r8/desugar/constantdynamic/ConstantDynamicRegress272346803Test.java b/src/test/java/com/android/tools/r8/desugar/constantdynamic/ConstantDynamicRegress272346803Test.java
index b9c1aaf..e7a842c 100644
--- a/src/test/java/com/android/tools/r8/desugar/constantdynamic/ConstantDynamicRegress272346803Test.java
+++ b/src/test/java/com/android/tools/r8/desugar/constantdynamic/ConstantDynamicRegress272346803Test.java
@@ -57,8 +57,6 @@
 
   @Test
   public void testDesugaring() throws Exception {
-    // TODO(b/414327631): Fixme.
-    parameters.assumeNoPartialCompilation();
     testForDesugaring(parameters)
         .addProgramClasses(Main.class)
         .addProgramClassFileData(getTransformedClasses())
diff --git a/src/test/java/com/android/tools/r8/desugar/constantdynamic/MultipleBootstrapMethodConstantDynamicTest.java b/src/test/java/com/android/tools/r8/desugar/constantdynamic/MultipleBootstrapMethodConstantDynamicTest.java
index eeae7ed..0e09283 100644
--- a/src/test/java/com/android/tools/r8/desugar/constantdynamic/MultipleBootstrapMethodConstantDynamicTest.java
+++ b/src/test/java/com/android/tools/r8/desugar/constantdynamic/MultipleBootstrapMethodConstantDynamicTest.java
@@ -55,8 +55,6 @@
 
   @Test
   public void testDesugaring() throws Exception {
-    // TODO(b/414327631): Fixme.
-    parameters.assumeNoPartialCompilation();
     testForDesugaring(parameters)
         .addProgramClassFileData(getTransformedClasses())
         .run(parameters.getRuntime(), MAIN_CLASS)
diff --git a/src/test/java/com/android/tools/r8/desugar/constantdynamic/MultipleNamedConstantDynamicTest.java b/src/test/java/com/android/tools/r8/desugar/constantdynamic/MultipleNamedConstantDynamicTest.java
index c88a149..c63486f 100644
--- a/src/test/java/com/android/tools/r8/desugar/constantdynamic/MultipleNamedConstantDynamicTest.java
+++ b/src/test/java/com/android/tools/r8/desugar/constantdynamic/MultipleNamedConstantDynamicTest.java
@@ -56,8 +56,6 @@
 
   @Test
   public void testDesugaring() throws Exception {
-    // TODO(b/414327631): Fixme.
-    parameters.assumeNoPartialCompilation();
     testForDesugaring(parameters)
         .addProgramClassFileData(getTransformedClasses())
         .run(parameters.getRuntime(), MAIN_CLASS)
diff --git a/src/test/java/com/android/tools/r8/desugar/constantdynamic/MultipleTypesConstantDynamicTest.java b/src/test/java/com/android/tools/r8/desugar/constantdynamic/MultipleTypesConstantDynamicTest.java
index d307e81..9871533 100644
--- a/src/test/java/com/android/tools/r8/desugar/constantdynamic/MultipleTypesConstantDynamicTest.java
+++ b/src/test/java/com/android/tools/r8/desugar/constantdynamic/MultipleTypesConstantDynamicTest.java
@@ -55,8 +55,6 @@
 
   @Test
   public void testDesugaring() throws Exception {
-    // TODO(b/414327631): Fixme.
-    parameters.assumeNoPartialCompilation();
     testForDesugaring(parameters)
         .addProgramClassFileData(getTransformedClasses())
         .run(parameters.getRuntime(), MAIN_CLASS)