Update MissingClassThrowingTest to use new missing class reporting
Bug: 128885552
Change-Id: I66ed872daa2173d43ce426ee8b2f76777b024899
diff --git a/src/main/java/com/android/tools/r8/shaking/MissingClasses.java b/src/main/java/com/android/tools/r8/shaking/MissingClasses.java
index ea52668..d3cd164 100644
--- a/src/main/java/com/android/tools/r8/shaking/MissingClasses.java
+++ b/src/main/java/com/android/tools/r8/shaking/MissingClasses.java
@@ -4,9 +4,11 @@
package com.android.tools.r8.shaking;
+import com.android.tools.r8.graph.DexItemFactory;
import com.android.tools.r8.graph.DexType;
import com.android.tools.r8.synthesis.CommittedItems;
import com.android.tools.r8.utils.InternalOptions;
+import com.google.common.collect.ImmutableList;
import com.google.common.collect.Sets;
import java.util.Collection;
import java.util.Set;
@@ -91,6 +93,8 @@
public MissingClasses reportMissingClasses(InternalOptions options) {
Set<DexType> newMissingClassesWithoutDontWarn =
options.getProguardConfiguration().getDontWarnPatterns().getNonMatches(newMissingClasses);
+ newMissingClassesWithoutDontWarn.removeAll(
+ getAllowedMissingClasses(options.dexItemFactory()));
if (!newMissingClassesWithoutDontWarn.isEmpty()) {
MissingClassesDiagnostic diagnostic =
new MissingClassesDiagnostic.Builder()
@@ -106,6 +110,10 @@
return build();
}
+ private static Collection<DexType> getAllowedMissingClasses(DexItemFactory dexItemFactory) {
+ return ImmutableList.of(dexItemFactory.annotationThrows);
+ }
+
/** Intentionally private, use {@link Builder#reportMissingClasses(InternalOptions)}. */
private MissingClasses build() {
// Extend the newMissingClasses set with all other missing classes.
diff --git a/src/test/java/com/android/tools/r8/graph/MissingClassThrowingTest.java b/src/test/java/com/android/tools/r8/graph/MissingClassThrowingTest.java
index 41de6d3..213db97 100644
--- a/src/test/java/com/android/tools/r8/graph/MissingClassThrowingTest.java
+++ b/src/test/java/com/android/tools/r8/graph/MissingClassThrowingTest.java
@@ -4,7 +4,8 @@
package com.android.tools.r8.graph;
-import static org.hamcrest.core.StringContains.containsString;
+import static com.android.tools.r8.DiagnosticsMatcher.diagnosticType;
+import static org.junit.Assert.assertEquals;
import com.android.tools.r8.NeverInline;
import com.android.tools.r8.NoStaticClassMerging;
@@ -12,8 +13,10 @@
import com.android.tools.r8.TestParameters;
import com.android.tools.r8.TestParametersCollection;
import com.android.tools.r8.TestRuntime.CfVm;
+import com.android.tools.r8.shaking.MissingClassesDiagnostic;
+import com.android.tools.r8.utils.InternalOptions.TestingOptions;
+import com.android.tools.r8.utils.codeinspector.AssertUtils;
import java.io.IOException;
-import org.junit.Ignore;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.junit.runners.Parameterized;
@@ -61,21 +64,32 @@
this.parameters = parameters;
}
- @Ignore("b/128885552")
@Test
public void testSuperTypeOfExceptions() throws Exception {
- testForR8(parameters.getBackend())
- .addProgramClasses(Program.class)
- .noMinification()
- .noTreeShaking()
- .enableInliningAnnotations()
- .enableNoStaticClassMergingAnnotations()
- .debug()
- .addKeepRules("-keep class ** { *; }", "-keepattributes *")
- .compile()
- .addRunClasspathClasses(MissingException.class)
- .run(parameters.getRuntime(), Program.class)
- .assertFailureWithErrorThatMatches(
- containsString("Missing class " + MissingException.class.getTypeName()));
+ AssertUtils.assertFailsCompilation(
+ () ->
+ testForR8(parameters.getBackend())
+ .addProgramClasses(Program.class)
+ .addKeepAllClassesRule()
+ .addKeepAllAttributes()
+ .addOptionsModification(TestingOptions::enableExperimentalMissingClassesReporting)
+ .noMinification()
+ .noTreeShaking()
+ .enableInliningAnnotations()
+ .enableNoStaticClassMergingAnnotations()
+ .debug()
+ .compileWithExpectedDiagnostics(
+ diagnostics -> {
+ diagnostics
+ .assertOnlyErrors()
+ .assertErrorsMatch(diagnosticType(MissingClassesDiagnostic.class));
+
+ MissingClassesDiagnostic diagnostic =
+ (MissingClassesDiagnostic) diagnostics.getErrors().get(0);
+ assertEquals(1, diagnostic.getMissingClasses().size());
+ assertEquals(
+ MissingException.class.getTypeName(),
+ diagnostic.getMissingClasses().iterator().next().getTypeName());
+ }));
}
}
diff --git a/src/test/java/com/android/tools/r8/ir/optimize/uninstantiatedtypes/ParameterRewritingTest.java b/src/test/java/com/android/tools/r8/ir/optimize/uninstantiatedtypes/ParameterRewritingTest.java
index 167c17b..8cc815b 100644
--- a/src/test/java/com/android/tools/r8/ir/optimize/uninstantiatedtypes/ParameterRewritingTest.java
+++ b/src/test/java/com/android/tools/r8/ir/optimize/uninstantiatedtypes/ParameterRewritingTest.java
@@ -54,8 +54,8 @@
.addKeepMainRule(TestClass.class)
.enableInliningAnnotations()
.enableNoStaticClassMergingAnnotations()
- .addKeepRules("-dontobfuscate")
.addOptionsModification(options -> options.enableClassInlining = false)
+ .noMinification()
.run(TestClass.class)
.assertSuccessWithOutput(expected)
.inspector();