Add annotation lens to annotation rewriter
Change-Id: Ie111b351f5bf3b3e80a2c20c850ce696de8e9898
diff --git a/src/main/java/com/android/tools/r8/horizontalclassmerging/TreeFixer.java b/src/main/java/com/android/tools/r8/horizontalclassmerging/TreeFixer.java
index 55aad86d..a12baa2 100644
--- a/src/main/java/com/android/tools/r8/horizontalclassmerging/TreeFixer.java
+++ b/src/main/java/com/android/tools/r8/horizontalclassmerging/TreeFixer.java
@@ -139,7 +139,7 @@
for (DexProgramClass root : subtypingForrest.getProgramRoots()) {
subtypingForrest.traverseNodeDepthFirst(root, HashBiMap.create(), this::fixupProgramClass);
}
- new AnnotationFixer(lens).run(appView.appInfo().classes());
+ new AnnotationFixer(lens, appView.graphLens()).run(appView.appInfo().classes());
}
return lens;
}
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 00e55a7..cffb1cf 100644
--- a/src/main/java/com/android/tools/r8/repackaging/Repackaging.java
+++ b/src/main/java/com/android/tools/r8/repackaging/Repackaging.java
@@ -151,7 +151,7 @@
repackagingTreeFixer.fixupClasses(appView.appInfo().classesWithDeterministicOrder()));
appBuilder.replaceProgramClasses(newProgramClasses);
RepackagingLens lens = lensBuilder.build(appView, packageMappings);
- new AnnotationFixer(lens).run(appBuilder.getProgramClasses());
+ new AnnotationFixer(lens, appView.graphLens()).run(appBuilder.getProgramClasses());
return lens;
}
diff --git a/src/main/java/com/android/tools/r8/shaking/AnnotationFixer.java b/src/main/java/com/android/tools/r8/shaking/AnnotationFixer.java
index c1a8677..dc9c163 100644
--- a/src/main/java/com/android/tools/r8/shaking/AnnotationFixer.java
+++ b/src/main/java/com/android/tools/r8/shaking/AnnotationFixer.java
@@ -26,9 +26,15 @@
public class AnnotationFixer {
private final GraphLens lens;
+ private final GraphLens annotationLens;
- public AnnotationFixer(GraphLens lens) {
+ public AnnotationFixer(GraphLens lens, GraphLens annotationLens) {
this.lens = lens;
+ this.annotationLens = annotationLens;
+ }
+
+ private DexType lookupType(DexType type) {
+ return lens.lookupType(type, annotationLens);
}
public void run(Iterable<DexProgramClass> classes) {
@@ -54,7 +60,7 @@
private DexEncodedAnnotation rewriteEncodedAnnotation(DexEncodedAnnotation original) {
DexEncodedAnnotation rewritten =
- original.rewrite(lens::lookupType, this::rewriteAnnotationElement);
+ original.rewrite(this::lookupType, this::rewriteAnnotationElement);
assert rewritten != null;
return rewritten;
}
@@ -96,7 +102,7 @@
}
} else if (value.isDexValueEnum()) {
DexField original = value.asDexValueEnum().value;
- DexField rewritten = lens.lookupField(original);
+ DexField rewritten = lens.lookupField(original, annotationLens);
if (original != rewritten) {
return new DexValueEnum(rewritten);
}
@@ -112,7 +118,7 @@
// If we identified references in the string it would be a DexItemBasedValueString.
} else if (value.isDexValueType()) {
DexType originalType = value.asDexValueType().value;
- DexType rewrittenType = lens.lookupType(originalType);
+ DexType rewrittenType = lookupType(originalType);
if (rewrittenType != originalType) {
return new DexValueType(rewrittenType);
}
diff --git a/src/main/java/com/android/tools/r8/shaking/VerticalClassMerger.java b/src/main/java/com/android/tools/r8/shaking/VerticalClassMerger.java
index 91c86e3..2397d02 100644
--- a/src/main/java/com/android/tools/r8/shaking/VerticalClassMerger.java
+++ b/src/main/java/com/android/tools/r8/shaking/VerticalClassMerger.java
@@ -1690,7 +1690,7 @@
}
VerticalClassMergerGraphLens lens = lensBuilder.build(appView, mergedClasses);
if (lens != null) {
- new AnnotationFixer(lens).run(appView.appInfo().classes());
+ new AnnotationFixer(lens, appView.graphLens()).run(appView.appInfo().classes());
}
return lens;
}