Don't assume marked synthetics derive directly from Object

Bug: b/286001996
Change-Id: Ic0ae6b569a7cc2366f98ecb093d4751285558260
diff --git a/src/main/java/com/android/tools/r8/synthesis/SyntheticMarker.java b/src/main/java/com/android/tools/r8/synthesis/SyntheticMarker.java
index cf548f9..9e8ec26 100644
--- a/src/main/java/com/android/tools/r8/synthesis/SyntheticMarker.java
+++ b/src/main/java/com/android/tools/r8/synthesis/SyntheticMarker.java
@@ -112,6 +112,7 @@
       DexProgramClass clazz, SyntheticKind kind, AppView<?> appView) {
     // TODO(b/158159959): Consider moving this to the dex writer similar to the CF case.
     assert !appView.options().isGeneratingClassFiles();
+    assert !isDefinitelyNotSyntheticProgramClass(clazz);
     clazz.setAnnotations(
         clazz
             .annotations()
@@ -148,9 +149,6 @@
 
   private static SyntheticMarker internalStripMarkerFromClass(
       DexProgramClass clazz, AppView<?> appView) {
-    if (clazz.superType != appView.dexItemFactory().objectType) {
-      return NO_MARKER;
-    }
     if (isDefinitelyNotSyntheticProgramClass(clazz)) {
       return NO_MARKER;
     }
diff --git a/src/test/java/com/android/tools/r8/desugar/backports/ThreadLocalBackportTest.java b/src/test/java/com/android/tools/r8/desugar/backports/ThreadLocalBackportTest.java
index 3c6e599..8fbadfa 100644
--- a/src/test/java/com/android/tools/r8/desugar/backports/ThreadLocalBackportTest.java
+++ b/src/test/java/com/android/tools/r8/desugar/backports/ThreadLocalBackportTest.java
@@ -8,6 +8,8 @@
 import static com.android.tools.r8.utils.AndroidApiLevel.LATEST;
 import static org.hamcrest.CoreMatchers.containsString;
 
+import com.android.tools.r8.D8TestCompileResult;
+import com.android.tools.r8.OutputMode;
 import com.android.tools.r8.TestDiagnosticMessages;
 import com.android.tools.r8.TestParameters;
 import com.android.tools.r8.TestParametersCollection;
@@ -56,6 +58,24 @@
   }
 
   @Test
+  public void testIntermediateD8() throws Exception {
+    D8TestCompileResult intermediate =
+        testForD8(parameters.getBackend())
+            .addInnerClasses(getClass())
+            .setOutputMode(
+                parameters.isCfRuntime() ? OutputMode.ClassFile : OutputMode.DexFilePerClass)
+            .setMinApi(parameters)
+            .compileWithExpectedDiagnostics(this::checkDiagnostics);
+
+    testForD8(parameters.getBackend())
+        .addProgramFiles(intermediate.writeToZip())
+        .setMinApi(parameters)
+        .compile()
+        .run(parameters.getRuntime(), TestClass.class)
+        .apply(this::checkExpected);
+  }
+
+  @Test
   public void testR8() throws Exception {
     parameters.assumeR8TestParameters();
     testForR8(parameters.getBackend())