Only use source supertype for generic signature if not interface

Bug: 191349005
Change-Id: Ica10beca480a333610e65567e071fd40f1214afd
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 a1d2c30..6fd7c76 100644
--- a/src/main/java/com/android/tools/r8/shaking/VerticalClassMerger.java
+++ b/src/main/java/com/android/tools/r8/shaking/VerticalClassMerger.java
@@ -1197,12 +1197,14 @@
       // The variables in the class signature is now rewritten to use the targets argument.
       ClassSignatureBuilder builder = ClassSignature.builder();
       builder.addFormalTypeParameters(targetSignature.getFormalTypeParameters());
-      if (rewrittenSource.hasSignature()) {
-        builder.setSuperClassSignature(rewrittenSource.superClassSignature());
-      } else if (source.isInterface()) {
-        builder.setSuperClassSignature(targetSignature.superClassSignature());
+      if (!source.isInterface()) {
+        if (rewrittenSource.hasSignature()) {
+          builder.setSuperClassSignature(rewrittenSource.superClassSignature());
+        } else {
+          builder.setSuperClassSignature(new ClassTypeSignature(source.superType));
+        }
       } else {
-        builder.setSuperClassSignature(new ClassTypeSignature(source.superType));
+        builder.setSuperClassSignature(targetSignature.superClassSignature());
       }
       // Compute the seen set for interfaces to add. This is similar to the merging of interfaces
       // but allow us to maintain the type arguments.