Remove DexProgramClass.synthesizedFrom

Bug: 168584485
Change-Id: I46556cf5666873f445d5dc97498ab4800e1ea8dc
diff --git a/src/main/java/com/android/tools/r8/graph/DexProgramClass.java b/src/main/java/com/android/tools/r8/graph/DexProgramClass.java
index 11e5957..aa724b4 100644
--- a/src/main/java/com/android/tools/r8/graph/DexProgramClass.java
+++ b/src/main/java/com/android/tools/r8/graph/DexProgramClass.java
@@ -28,9 +28,6 @@
 import com.google.common.collect.Iterables;
 import java.util.ArrayList;
 import java.util.Arrays;
-import java.util.Collection;
-import java.util.Collections;
-import java.util.HashSet;
 import java.util.Iterator;
 import java.util.List;
 import java.util.Set;
@@ -50,7 +47,6 @@
   public static final DexProgramClass[] EMPTY_ARRAY = {};
 
   private final ProgramResource.Kind originKind;
-  private final Collection<DexProgramClass> synthesizedFrom;
   private CfVersion initialClassFileVersion = null;
   private boolean deprecated = false;
   private KotlinClassLevelInfo kotlinInfo = NO_KOTLIN_INFO;
@@ -77,50 +73,6 @@
       DexEncodedMethod[] virtualMethods,
       boolean skipNameValidationForTesting,
       ChecksumSupplier checksumSupplier) {
-    this(
-        type,
-        originKind,
-        origin,
-        accessFlags,
-        superType,
-        interfaces,
-        sourceFile,
-        nestHost,
-        nestMembers,
-        enclosingMember,
-        innerClasses,
-        classSignature,
-        classAnnotations,
-        staticFields,
-        instanceFields,
-        directMethods,
-        virtualMethods,
-        skipNameValidationForTesting,
-        checksumSupplier,
-        Collections.emptyList());
-  }
-
-  public DexProgramClass(
-      DexType type,
-      Kind originKind,
-      Origin origin,
-      ClassAccessFlags accessFlags,
-      DexType superType,
-      DexTypeList interfaces,
-      DexString sourceFile,
-      NestHostClassAttribute nestHost,
-      List<NestMemberClassAttribute> nestMembers,
-      EnclosingMethodAttribute enclosingMember,
-      List<InnerClassAttribute> innerClasses,
-      ClassSignature classSignature,
-      DexAnnotationSet classAnnotations,
-      DexEncodedField[] staticFields,
-      DexEncodedField[] instanceFields,
-      DexEncodedMethod[] directMethods,
-      DexEncodedMethod[] virtualMethods,
-      boolean skipNameValidationForTesting,
-      ChecksumSupplier checksumSupplier,
-      Collection<DexProgramClass> synthesizedDirectlyFrom) {
     super(
         sourceFile,
         interfaces,
@@ -143,8 +95,6 @@
     assert classAnnotations != null;
     this.originKind = originKind;
     this.checksumSupplier = checksumSupplier;
-    this.synthesizedFrom = new HashSet<>();
-    synthesizedDirectlyFrom.forEach(this::addSynthesizedFrom);
   }
 
   @Override
@@ -185,9 +135,7 @@
         .withAssert(c -> c.classSignature == ClassSignature.noSignature())
         .withItemArray(c -> c.staticFields)
         .withItemArray(c -> c.instanceFields)
-        .withItemCollection(DexClass::allMethodsSorted)
-        // TODO(b/168584485): Synthesized-from is being removed (empty for new synthetics).
-        .withAssert(c -> c.synthesizedFrom.isEmpty());
+        .withItemCollection(DexClass::allMethodsSorted);
   }
 
   public void forEachProgramField(Consumer<? super ProgramField> consumer) {
@@ -383,10 +331,6 @@
     }
   }
 
-  public Collection<DexProgramClass> getSynthesizedFrom() {
-    return synthesizedFrom;
-  }
-
   @Override
   void collectMixedSectionItems(MixedSectionCollection mixedItems) {
     assert getEnclosingMethodAttribute() == null;
@@ -609,14 +553,6 @@
     }
   }
 
-  public void addSynthesizedFrom(DexProgramClass clazz) {
-    if (clazz.synthesizedFrom.isEmpty()) {
-      synthesizedFrom.add(clazz);
-    } else {
-      clazz.synthesizedFrom.forEach(this::addSynthesizedFrom);
-    }
-  }
-
   public DexEncodedArray computeStaticValuesArray(NamingLens namingLens) {
     // Fast path to avoid sorting and collection allocation when no non-default values exist.
     if (!hasNonDefaultStaticFieldValues()) {
diff --git a/src/main/java/com/android/tools/r8/graph/TreeFixerBase.java b/src/main/java/com/android/tools/r8/graph/TreeFixerBase.java
index 89d0bd7..27f3251 100644
--- a/src/main/java/com/android/tools/r8/graph/TreeFixerBase.java
+++ b/src/main/java/com/android/tools/r8/graph/TreeFixerBase.java
@@ -113,8 +113,7 @@
             DexEncodedMethod.EMPTY_ARRAY,
             DexEncodedMethod.EMPTY_ARRAY,
             dexItemFactory.getSkipNameValidationForTesting(),
-            clazz.getChecksumSupplier(),
-            fixupSynthesizedFrom(clazz.getSynthesizedFrom()));
+            clazz.getChecksumSupplier());
     newClass.setInstanceFields(fixupFields(clazz.instanceFields()));
     newClass.setStaticFields(fixupFields(clazz.staticFields()));
     newClass.setDirectMethods(
diff --git a/src/main/java/com/android/tools/r8/ir/desugar/InterfaceMethodRewriter.java b/src/main/java/com/android/tools/r8/ir/desugar/InterfaceMethodRewriter.java
index 68fe801..a1c0d58 100644
--- a/src/main/java/com/android/tools/r8/ir/desugar/InterfaceMethodRewriter.java
+++ b/src/main/java/com/android/tools/r8/ir/desugar/InterfaceMethodRewriter.java
@@ -979,8 +979,7 @@
             emulationMethods.toArray(DexEncodedMethod.EMPTY_ARRAY),
             DexEncodedMethod.EMPTY_ARRAY,
             factory.getSkipNameValidationForTesting(),
-            DexProgramClass::checksumFromType,
-            Collections.singletonList(theInterface));
+            DexProgramClass::checksumFromType);
     clazz.forEachProgramMethod(synthesizedMethods::add);
     return clazz;
   }
diff --git a/src/main/java/com/android/tools/r8/ir/desugar/InterfaceProcessor.java b/src/main/java/com/android/tools/r8/ir/desugar/InterfaceProcessor.java
index e40251c..d20eee7 100644
--- a/src/main/java/com/android/tools/r8/ir/desugar/InterfaceProcessor.java
+++ b/src/main/java/com/android/tools/r8/ir/desugar/InterfaceProcessor.java
@@ -135,8 +135,7 @@
             companionMethods.toArray(DexEncodedMethod.EMPTY_ARRAY),
             DexEncodedMethod.EMPTY_ARRAY,
             rewriter.factory.getSkipNameValidationForTesting(),
-            getChecksumSupplier(iface),
-            Collections.singletonList(iface));
+            getChecksumSupplier(iface));
     syntheticClasses.put(iface, companionClass);
     if (companionClass.hasClassInitializer()) {
       newSynthesizedMethodConsumer.accept(companionClass.getProgramClassInitializer());
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 2e70db6..2b24294 100644
--- a/src/main/java/com/android/tools/r8/synthesis/SyntheticFinalization.java
+++ b/src/main/java/com/android/tools/r8/synthesis/SyntheticFinalization.java
@@ -46,7 +46,6 @@
 import java.util.Map.Entry;
 import java.util.Set;
 import java.util.function.BiConsumer;
-import java.util.function.Function;
 
 public class SyntheticFinalization {
 
@@ -454,10 +453,7 @@
                   externalSyntheticClass.type));
           for (SyntheticProgramClassDefinition member : syntheticGroup.getMembers()) {
             addMainDexAndSynthesizedFromForMember(
-                member,
-                externalSyntheticClass,
-                appView.appInfo().getMainDexInfo(),
-                appForLookup::programDefinitionFor);
+                member, externalSyntheticClass, appView.appInfo().getMainDexInfo());
           }
         });
     syntheticMethodGroups.forEach(
@@ -475,10 +471,7 @@
                       .withHolder(externalSyntheticClass.type, factory)));
           for (SyntheticMethodDefinition member : syntheticGroup.getMembers()) {
             addMainDexAndSynthesizedFromForMember(
-                member,
-                externalSyntheticClass,
-                appView.appInfo().getMainDexInfo(),
-                appForLookup::programDefinitionFor);
+                member, externalSyntheticClass, appView.appInfo().getMainDexInfo());
           }
         });
 
@@ -526,14 +519,8 @@
   private static void addMainDexAndSynthesizedFromForMember(
       SyntheticDefinition<?, ?, ?> member,
       DexProgramClass externalSyntheticClass,
-      MainDexInfo mainDexInfo,
-      Function<DexType, DexProgramClass> definitions) {
+      MainDexInfo mainDexInfo) {
     member.getContext().addIfDerivedFromMainDexClass(externalSyntheticClass, mainDexInfo);
-    // TODO(b/168584485): Remove this once class-mapping support is removed.
-    DexProgramClass from = definitions.apply(member.getContext().getSynthesizingContextType());
-    if (from != null) {
-      externalSyntheticClass.addSynthesizedFrom(from);
-    }
   }
 
   private static boolean shouldAnnotateSynthetics(InternalOptions options) {
diff --git a/src/test/java/com/android/tools/r8/dex/SharedClassWritingTest.java b/src/test/java/com/android/tools/r8/dex/SharedClassWritingTest.java
index 538d1f0..1584f41 100644
--- a/src/test/java/com/android/tools/r8/dex/SharedClassWritingTest.java
+++ b/src/test/java/com/android/tools/r8/dex/SharedClassWritingTest.java
@@ -122,8 +122,7 @@
             DexEncodedMethod.EMPTY_ARRAY,
             new DexEncodedMethod[] {makeMethod(type, stringCount, startOffset)},
             false,
-            DexProgramClass::invalidChecksumRequest,
-            synthesizedFrom);
+            DexProgramClass::invalidChecksumRequest);
     return programClass;
   }