Rewrite generic signatures after repackaging

This is a prerequisite for being able to run vertical class merging afterwards (as this must fixup generic signatures after merging).

This also fixes a bug where the generic signature type rewriter did not pass in the correct "applied" lens.

Bug: b/315445393
Change-Id: Ib7c79ac34a88c6ece9d103411998423f54fc731b
diff --git a/src/main/java/com/android/tools/r8/graph/AppView.java b/src/main/java/com/android/tools/r8/graph/AppView.java
index 691680c..9ceb56c 100644
--- a/src/main/java/com/android/tools/r8/graph/AppView.java
+++ b/src/main/java/com/android/tools/r8/graph/AppView.java
@@ -101,6 +101,7 @@
   private final WholeProgramOptimizations wholeProgramOptimizations;
   private GraphLens codeLens = GraphLens.getIdentityLens();
   private GraphLens graphLens = GraphLens.getIdentityLens();
+  private GraphLens genericSignaturesLens = GraphLens.getIdentityLens();
   private InitClassLens initClassLens;
   private GraphLens kotlinMetadataLens = GraphLens.getIdentityLens();
   private NamingLens namingLens = NamingLens.getIdentityLens();
@@ -678,6 +679,14 @@
     return false;
   }
 
+  public GraphLens getGenericSignaturesLens() {
+    return genericSignaturesLens;
+  }
+
+  public void setGenericSignaturesLens(GraphLens genericSignaturesLens) {
+    this.genericSignaturesLens = genericSignaturesLens;
+  }
+
   private boolean disallowFurtherInitClassUses = false;
 
   public void dissallowFurtherInitClassUses() {
diff --git a/src/main/java/com/android/tools/r8/graph/GenericSignatureTypeRewriter.java b/src/main/java/com/android/tools/r8/graph/GenericSignatureTypeRewriter.java
index d519324..916a8e2 100644
--- a/src/main/java/com/android/tools/r8/graph/GenericSignatureTypeRewriter.java
+++ b/src/main/java/com/android/tools/r8/graph/GenericSignatureTypeRewriter.java
@@ -38,7 +38,7 @@
         appView.appInfo().hasLiveness()
             ? appView.appInfo().withLiveness()::wasPruned
             : alwaysFalse(),
-        appView.graphLens()::lookupType,
+        type -> appView.graphLens().lookupType(type, appView.getGenericSignaturesLens()),
         context,
         hasGenericTypeVariables);
   }
diff --git a/src/main/java/com/android/tools/r8/naming/signature/GenericSignatureRewriter.java b/src/main/java/com/android/tools/r8/naming/signature/GenericSignatureRewriter.java
index 7e91d18..9e966d0 100644
--- a/src/main/java/com/android/tools/r8/naming/signature/GenericSignatureRewriter.java
+++ b/src/main/java/com/android/tools/r8/naming/signature/GenericSignatureRewriter.java
@@ -116,5 +116,6 @@
         },
         appView.options().getThreadingModule(),
         executorService);
+    appView.setGenericSignaturesLens(appView.graphLens());
   }
 }
diff --git a/src/main/java/com/android/tools/r8/repackaging/Repackaging.java b/src/main/java/com/android/tools/r8/repackaging/Repackaging.java
index 3d6fc32..5272500 100644
--- a/src/main/java/com/android/tools/r8/repackaging/Repackaging.java
+++ b/src/main/java/com/android/tools/r8/repackaging/Repackaging.java
@@ -24,6 +24,7 @@
 import com.android.tools.r8.graph.fixup.TreeFixerBase;
 import com.android.tools.r8.graph.lens.NestedGraphLens;
 import com.android.tools.r8.naming.Minifier.MinificationPackageNamingStrategy;
+import com.android.tools.r8.naming.signature.GenericSignatureRewriter;
 import com.android.tools.r8.repackaging.RepackagingLens.Builder;
 import com.android.tools.r8.shaking.AnnotationFixer;
 import com.android.tools.r8.shaking.AppInfoWithLiveness;
@@ -78,6 +79,7 @@
     if (lens != null) {
       appView.rewriteWithLensAndApplication(lens, appBuilder.build(), executorService, timing);
       appView.testing().repackagingLensConsumer.accept(appView.dexItemFactory(), lens);
+      new GenericSignatureRewriter(appView).run(appView.appInfo().classes(), executorService);
     }
     appView.notifyOptimizationFinishedForTesting();
     timing.end();