Fix lens rewriting of synthetic inputs
Change-Id: I35217adaff35472ed6f4ca9cc8d927377ad101cf
diff --git a/src/main/java/com/android/tools/r8/synthesis/CommittedItems.java b/src/main/java/com/android/tools/r8/synthesis/CommittedItems.java
index adc1298..f71c94e 100644
--- a/src/main/java/com/android/tools/r8/synthesis/CommittedItems.java
+++ b/src/main/java/com/android/tools/r8/synthesis/CommittedItems.java
@@ -38,7 +38,7 @@
this.application = application;
this.committed = committed;
this.committedProgramTypes = committedProgramTypes;
- committed.verifyTypesAreInApp(application);
+ assert committed.verifyTypesAreInApp(application);
}
// Conversion to a mutable synthetic items collection. Should only be used in AppInfo creation.
diff --git a/src/main/java/com/android/tools/r8/synthesis/CommittedSyntheticsCollection.java b/src/main/java/com/android/tools/r8/synthesis/CommittedSyntheticsCollection.java
index f8c56fa..cd80b53 100644
--- a/src/main/java/com/android/tools/r8/synthesis/CommittedSyntheticsCollection.java
+++ b/src/main/java/com/android/tools/r8/synthesis/CommittedSyntheticsCollection.java
@@ -298,23 +298,18 @@
}
CommittedSyntheticsCollection rewriteWithLens(NonIdentityGraphLens lens) {
+ ImmutableSet.Builder<DexType> syntheticInputsBuilder = ImmutableSet.builder();
return new CommittedSyntheticsCollection(
- rewriteItems(legacyTypes, lens),
- rewriteItems(nonLegacyMethods, lens),
- rewriteItems(nonLegacyClasses, lens),
- rewriteItems(syntheticInputs, lens));
- }
-
- private static ImmutableSet<DexType> rewriteItems(Set<DexType> items, NonIdentityGraphLens lens) {
- ImmutableSet.Builder<DexType> rewrittenItems = ImmutableSet.builder();
- for (DexType item : items) {
- rewrittenItems.add(lens.lookupType(item));
- }
- return rewrittenItems.build();
+ rewriteItems(legacyTypes, lens, syntheticInputsBuilder),
+ rewriteItems(nonLegacyMethods, lens, syntheticInputsBuilder),
+ rewriteItems(nonLegacyClasses, lens, syntheticInputsBuilder),
+ syntheticInputsBuilder.build());
}
private <R extends Rewritable<R>> ImmutableMap<DexType, List<R>> rewriteItems(
- Map<DexType, List<R>> items, NonIdentityGraphLens lens) {
+ Map<DexType, List<R>> items,
+ NonIdentityGraphLens lens,
+ ImmutableSet.Builder<DexType> syntheticInputsBuilder) {
Map<DexType, List<R>> rewrittenItems = new IdentityHashMap<>();
for (R reference : IterableUtils.flatten(items.values())) {
R rewritten = reference.rewrite(lens);
@@ -322,6 +317,9 @@
rewrittenItems
.computeIfAbsent(rewritten.getHolder(), ignore -> new ArrayList<>())
.add(rewritten);
+ if (syntheticInputs.contains(reference.getHolder())) {
+ syntheticInputsBuilder.add(rewritten.getHolder());
+ }
}
}
return ImmutableMap.copyOf(rewrittenItems);