Allow signature removal when having -dontoptimize

Bug: 221404266
Change-Id: Ib29bbab33516e3d18b5cf2574b8c617ce04732ff
diff --git a/src/main/java/com/android/tools/r8/shaking/KeepInfo.java b/src/main/java/com/android/tools/r8/shaking/KeepInfo.java
index c3165ad..5325d08 100644
--- a/src/main/java/com/android/tools/r8/shaking/KeepInfo.java
+++ b/src/main/java/com/android/tools/r8/shaking/KeepInfo.java
@@ -156,7 +156,8 @@
     if (!configuration.isKeepAttributesSignatureEnabled()) {
       return true;
     }
-    return !(configuration.isForceProguardCompatibilityEnabled() || isPinned(configuration));
+    return !(configuration.isForceProguardCompatibilityEnabled()
+        || !isShrinkingAllowed(configuration));
   }
 
   public boolean isEnclosingMethodAttributeRemovalAllowed(
diff --git a/src/test/java/com/android/tools/r8/graph/genericsignature/GenericSignatureDontOptimizeTest.java b/src/test/java/com/android/tools/r8/graph/genericsignature/GenericSignatureDontOptimizeTest.java
index 7c55472..94adea2 100644
--- a/src/test/java/com/android/tools/r8/graph/genericsignature/GenericSignatureDontOptimizeTest.java
+++ b/src/test/java/com/android/tools/r8/graph/genericsignature/GenericSignatureDontOptimizeTest.java
@@ -7,6 +7,7 @@
 import static com.android.tools.r8.utils.codeinspector.Matchers.isPresent;
 import static org.hamcrest.MatcherAssert.assertThat;
 import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertNull;
 
 import com.android.tools.r8.TestBase;
 import com.android.tools.r8.TestParameters;
@@ -45,11 +46,10 @@
         .addKeepClassRules(Foo.class)
         .addKeepMainRule(Main.class)
         .addDontOptimize()
-        .run(parameters.getRuntime(), Main.class)
+        .compile()
         .inspect(this::inspect)
-        // TODO(b/221404266): We should fail with an exception since the parameterized generic type
-        //   should be removed.
-        .assertSuccessWithOutputLines(EXPECTED);
+        .run(parameters.getRuntime(), Main.class)
+        .assertFailureWithErrorThatThrows(ClassCastException.class);
   }
 
   private void inspect(CodeInspector inspector) {
@@ -57,11 +57,9 @@
     assertThat(foo, isPresent());
     assertEquals("<T:Ljava/lang/Object;>Ljava/lang/Object;", foo.getFinalSignatureAttribute());
 
-    // TODO(b/221404266): We should not keep generic signatures when having -dontoptimize
     ClassSubject main$1 = inspector.clazz(Main.class.getTypeName() + "$1");
     assertThat(main$1, isPresent());
-    assertEquals(
-        "L" + binaryName(Foo.class) + "<Ljava/lang/String;>;", main$1.getFinalSignatureAttribute());
+    assertNull(main$1.getFinalSignatureAttribute());
   }
 
   public static class Foo<T> {