Remove signature from companion class

Bug: b/280356274
Change-Id: I93fe7f58a8b9760859ff651b60e373c8c6b68a0f
diff --git a/src/main/java/com/android/tools/r8/graph/GenericSignature.java b/src/main/java/com/android/tools/r8/graph/GenericSignature.java
index 920fbc1..f1122b8 100644
--- a/src/main/java/com/android/tools/r8/graph/GenericSignature.java
+++ b/src/main/java/com/android/tools/r8/graph/GenericSignature.java
@@ -259,6 +259,9 @@
     }
 
     public ClassSignature visit(GenericSignatureVisitor visitor) {
+      if (hasNoSignature()) {
+        return this;
+      }
       List<FormalTypeParameter> rewrittenParameters =
           visitor.visitFormalTypeParameters(formalTypeParameters);
       ClassTypeSignature rewrittenSuperClass = visitor.visitSuperClass(superClassSignature);
@@ -291,10 +294,6 @@
       return NO_CLASS_SIGNATURE;
     }
 
-    public ClassSignature toObjectBoundWithSameFormals(ClassTypeSignature objectBound) {
-      return new ClassSignature(formalTypeParameters, objectBound, getEmptySuperInterfaces());
-    }
-
     public List<FieldTypeSignature> getGenericArgumentsToSuperType(DexType type) {
       assert hasSignature();
       if (superClassSignature.type == type) {
@@ -314,9 +313,9 @@
 
     public static class ClassSignatureBuilder {
 
-      private List<FormalTypeParameter> formalTypeParameters = new ArrayList<>();
+      private final List<FormalTypeParameter> formalTypeParameters = new ArrayList<>();
       private ClassTypeSignature superClassSignature = null;
-      private List<ClassTypeSignature> superInterfaceSignatures = new ArrayList<>();
+      private final List<ClassTypeSignature> superInterfaceSignatures = new ArrayList<>();
 
       private ClassSignatureBuilder() {}
 
@@ -336,9 +335,8 @@
       }
 
       public ClassSignature build() {
-        ClassSignature classSignature =
-            new ClassSignature(formalTypeParameters, superClassSignature, superInterfaceSignatures);
-        return classSignature;
+        return new ClassSignature(
+            formalTypeParameters, superClassSignature, superInterfaceSignatures);
       }
     }
   }
@@ -628,6 +626,9 @@
     }
 
     public ClassTypeSignature visit(GenericSignatureVisitor visitor) {
+      if (hasNoSignature()) {
+        return this;
+      }
       DexType visitedType = visitor.visitType(type);
       if (visitedType == null) {
         return null;
@@ -855,6 +856,9 @@
     }
 
     public MethodTypeSignature visit(GenericSignatureVisitor visitor) {
+      if (hasNoSignature()) {
+        return this;
+      }
       List<FormalTypeParameter> rewrittenParameters =
           visitor.visitFormalTypeParameters(formalTypeParameters);
       List<TypeSignature> rewrittenSignatures = visitor.visitMethodTypeSignatures(typeSignatures);
diff --git a/src/main/java/com/android/tools/r8/ir/desugar/itf/InterfaceProcessor.java b/src/main/java/com/android/tools/r8/ir/desugar/itf/InterfaceProcessor.java
index 31037b9..422dc72 100644
--- a/src/main/java/com/android/tools/r8/ir/desugar/itf/InterfaceProcessor.java
+++ b/src/main/java/com/android/tools/r8/ir/desugar/itf/InterfaceProcessor.java
@@ -23,7 +23,6 @@
 import com.android.tools.r8.graph.DexProto;
 import com.android.tools.r8.graph.DexString;
 import com.android.tools.r8.graph.DexType;
-import com.android.tools.r8.graph.GenericSignature.ClassTypeSignature;
 import com.android.tools.r8.graph.InvalidCode;
 import com.android.tools.r8.graph.MethodCollection;
 import com.android.tools.r8.graph.ProgramMethod;
@@ -139,14 +138,7 @@
             kinds -> kinds.COMPANION_CLASS,
             iface,
             appView,
-            builder ->
-                builder
-                    .setSourceFile(iface.sourceFile)
-                    .setGenericSignature(
-                        iface
-                            .getClassSignature()
-                            .toObjectBoundWithSameFormals(
-                                new ClassTypeSignature(appView.dexItemFactory().objectType))),
+            builder -> builder.setSourceFile(iface.sourceFile),
             methodBuilderCallback,
             newMethodCallback);
   }
diff --git a/src/test/java/com/android/tools/r8/desugaring/interfacemethods/CompanionClassNoSignatureTest.java b/src/test/java/com/android/tools/r8/desugaring/interfacemethods/CompanionClassNoSignatureTest.java
index 5e471fd..47b8383 100644
--- a/src/test/java/com/android/tools/r8/desugaring/interfacemethods/CompanionClassNoSignatureTest.java
+++ b/src/test/java/com/android/tools/r8/desugaring/interfacemethods/CompanionClassNoSignatureTest.java
@@ -4,12 +4,13 @@
 
 package com.android.tools.r8.desugaring.interfacemethods;
 
+import static org.junit.Assert.assertTrue;
+
 import com.android.tools.r8.TestBase;
 import com.android.tools.r8.TestParameters;
 import com.android.tools.r8.TestParametersCollection;
 import com.android.tools.r8.graph.GenericSignature.ClassSignature;
 import com.android.tools.r8.utils.StringUtils;
-import org.junit.Assert;
 import org.junit.Test;
 import org.junit.runner.RunWith;
 import org.junit.runners.Parameterized;
@@ -44,10 +45,9 @@
                   .isLessThan(apiLevelWithDefaultInterfaceMethodsSupport())) {
                 ClassSignature signature =
                     inspector.companionClassFor(I.class).getDexProgramClass().getClassSignature();
-                // TODO(b/280356274): There should be no signature on I$-CC.
-                Assert.assertTrue(
+                assertTrue(
                     "Expected no signature, got: " + signature.toString(),
-                    signature.hasSignature());
+                    signature.hasNoSignature());
               }
             });
   }
diff --git a/src/test/java/com/android/tools/r8/desugaring/interfacemethods/CompanionClassWithSignatureTest.java b/src/test/java/com/android/tools/r8/desugaring/interfacemethods/CompanionClassWithSignatureTest.java
index 9f1e097..060af3f 100644
--- a/src/test/java/com/android/tools/r8/desugaring/interfacemethods/CompanionClassWithSignatureTest.java
+++ b/src/test/java/com/android/tools/r8/desugaring/interfacemethods/CompanionClassWithSignatureTest.java
@@ -41,8 +41,7 @@
     assumeFalse(
         "Art 7 crashes when resolving the default method on I.",
         parameters.isDexRuntimeVersion(Version.V7_0_0) && !isDesugaring());
-    // TODO(b/280356274): There should be no signature on I$-CC.
-    boolean resolvedBug280356274 = false;
+    boolean resolvedBug280356274 = true;
     String expected = StringUtils.lines(resolvedBug280356274 && isDesugaring() ? "[]" : "[T]");
     testForD8(parameters.getBackend())
         .setMinApi(parameters)
@@ -58,10 +57,9 @@
               if (isDesugaring()) {
                 ClassSignature signature =
                     inspector.companionClassFor(I.class).getDexProgramClass().getClassSignature();
-                // TODO(b/280356274): There should be no signature on I$-CC.
                 assertTrue(
                     "Expected no signature, got: " + signature.toString(),
-                    signature.hasSignature());
+                    signature.hasNoSignature());
               }
             });
   }