Clear nest attributes after desugaring

Bug: 188075969
Change-Id: I5ba177ee11184cbb878818144914b3e3b1a06702
diff --git a/src/main/java/com/android/tools/r8/ir/conversion/IRConverter.java b/src/main/java/com/android/tools/r8/ir/conversion/IRConverter.java
index 13dab34..0243104 100644
--- a/src/main/java/com/android/tools/r8/ir/conversion/IRConverter.java
+++ b/src/main/java/com/android/tools/r8/ir/conversion/IRConverter.java
@@ -367,6 +367,11 @@
         D8NestBasedAccessDesugaring::reportDesugarDependencies);
   }
 
+  private void clearNestAttributes() {
+    instructionDesugaring.withD8NestBasedAccessDesugaring(
+        D8NestBasedAccessDesugaring::clearNestAttributes);
+  }
+
   private void staticizeClasses(
       OptimizationFeedback feedback, ExecutorService executorService, GraphLens applied)
       throws ExecutionException {
@@ -424,6 +429,7 @@
     convertClasses(executor);
 
     reportNestDesugarDependencies();
+    clearNestAttributes();
 
     if (appView.getSyntheticItems().hasPendingSyntheticClasses()) {
       appView.setAppInfo(
diff --git a/src/main/java/com/android/tools/r8/ir/desugar/nest/D8NestBasedAccessDesugaring.java b/src/main/java/com/android/tools/r8/ir/desugar/nest/D8NestBasedAccessDesugaring.java
index b622057..430d8ad 100644
--- a/src/main/java/com/android/tools/r8/ir/desugar/nest/D8NestBasedAccessDesugaring.java
+++ b/src/main/java/com/android/tools/r8/ir/desugar/nest/D8NestBasedAccessDesugaring.java
@@ -55,6 +55,17 @@
         });
   }
 
+  public void clearNestAttributes() {
+    forEachNest(
+        nest -> {
+          nest.getHostClass().clearNestMembers();
+          nest.getMembers().forEach(DexClass::clearNestHost);
+        },
+        classWithoutHost -> {
+          // Do Nothing
+        });
+  }
+
   public void synthesizeBridgesForNestBasedAccessesOnClasspath(
       MethodProcessor methodProcessor, ExecutorService executorService) throws ExecutionException {
     List<DexClasspathClass> classpathClassesInNests = new ArrayList<>();
diff --git a/src/test/java/com/android/tools/r8/desugar/nestaccesscontrol/Java11D8CompilationTest.java b/src/test/java/com/android/tools/r8/desugar/nestaccesscontrol/Java11D8CompilationTest.java
index 4a4a861..a4c0ca7 100644
--- a/src/test/java/com/android/tools/r8/desugar/nestaccesscontrol/Java11D8CompilationTest.java
+++ b/src/test/java/com/android/tools/r8/desugar/nestaccesscontrol/Java11D8CompilationTest.java
@@ -8,6 +8,7 @@
 import static com.android.tools.r8.utils.InternalOptions.ASM_VERSION;
 import static junit.framework.TestCase.assertEquals;
 import static junit.framework.TestCase.assertTrue;
+import static junit.framework.TestCase.fail;
 
 import com.android.tools.r8.TestBase;
 import com.android.tools.r8.TestParameters;
@@ -64,8 +65,7 @@
             .addLibraryFiles(ToolHelper.getJava8RuntimeJar())
             .setMinApi(AndroidApiLevel.B)
             .compile()
-            // TODO(b/188075969): Enable this. Left out for now to enable the iteration below.
-            // .inspect(Java11D8CompilationTest::assertNoNests)
+            .inspect(Java11D8CompilationTest::assertNoNests)
             .writeToZip();
 
     // Check that the desugared classes has the expected class file versions and that no nest
@@ -116,16 +116,16 @@
 
       @Override
       public void visitNestHost(String nestHost) {
-        // ASM will report the NestHost attribute independently of class file version.
-        // TODO(b/188075969): Enable this.
-        // assert false;
+        // ASM will always report the NestHost attribute if present (independently of class
+        // file version).
+        fail();
       }
 
       @Override
       public void visitNestMember(String nestMember) {
-        // ASM will report the NestMembers attribute independently of class file version.
-        // TODO(b/188075969): Enable this.
-        // assert false;
+        // ASM will always report the NestHost attribute if present (independently of class
+        // file version).
+        fail();
       }
     }