Allow all global synthetics to have nested synthetics
Change from special casing DesugarVarHandle.
Bug: b/247076137
Change-Id: Ie384e3da937f1227ed25713665a9147e50242e52
diff --git a/src/main/java/com/android/tools/r8/synthesis/SyntheticFinalization.java b/src/main/java/com/android/tools/r8/synthesis/SyntheticFinalization.java
index 5e95467..e46ea51 100644
--- a/src/main/java/com/android/tools/r8/synthesis/SyntheticFinalization.java
+++ b/src/main/java/com/android/tools/r8/synthesis/SyntheticFinalization.java
@@ -354,7 +354,7 @@
assert !prefix.contains(SyntheticNaming.getPhaseSeparator(Phase.INTERNAL));
DexType context =
dexItemFactory.createType(DescriptorUtils.getDescriptorFromClassBinaryName(prefix));
- assert isNotSyntheticType(context) || context == dexItemFactory.desugarVarHandleType;
+ assert isNotSyntheticType(context) || synthetics.isGlobalSyntheticClass(context);
});
return true;
}
diff --git a/src/main/java/com/android/tools/r8/synthesis/SyntheticItems.java b/src/main/java/com/android/tools/r8/synthesis/SyntheticItems.java
index 323c745..4ea11dc 100644
--- a/src/main/java/com/android/tools/r8/synthesis/SyntheticItems.java
+++ b/src/main/java/com/android/tools/r8/synthesis/SyntheticItems.java
@@ -401,12 +401,16 @@
return isSyntheticClass(clazz.type);
}
- public boolean isGlobalSyntheticClass(DexProgramClass clazz) {
- SyntheticDefinition<?, ?, ?> definition = pending.definitions.get(clazz.type);
+ public boolean isGlobalSyntheticClass(DexType type) {
+ SyntheticDefinition<?, ?, ?> definition = pending.definitions.get(type);
if (definition != null) {
return definition.getKind().isGlobal();
}
- return isGlobalReferences(committed.getClasses().get(clazz.type));
+ return isGlobalReferences(committed.getClasses().get(type));
+ }
+
+ public boolean isGlobalSyntheticClass(DexProgramClass clazz) {
+ return isGlobalSyntheticClass(clazz.getType());
}
private static boolean isGlobalReferences(List<SyntheticProgramClassReference> references) {