Specialize exceptions in desugared lib test infrastructure
Now we can remove "Throwable" in each test method and instead use the more specialized exception.
Change-Id: Icab45ee98fd92287bd390cb929d0103a5a40d5a4
diff --git a/src/test/java/com/android/tools/r8/L8TestCompileResult.java b/src/test/java/com/android/tools/r8/L8TestCompileResult.java
index fd5af1c..30744c3 100644
--- a/src/test/java/com/android/tools/r8/L8TestCompileResult.java
+++ b/src/test/java/com/android/tools/r8/L8TestCompileResult.java
@@ -77,7 +77,7 @@
}
public <E extends Throwable> L8TestCompileResult inspectKeepRules(
- ThrowingConsumer<List<String>, E> consumer) throws Throwable {
+ ThrowingConsumer<List<String>, E> consumer) throws E {
consumer.accept(allKeepRules);
return self();
}
diff --git a/src/test/java/com/android/tools/r8/desugar/desugaredlibrary/test/DesugaredLibraryTestBuilder.java b/src/test/java/com/android/tools/r8/desugar/desugaredlibrary/test/DesugaredLibraryTestBuilder.java
index b67d511..6ef6b8b 100644
--- a/src/test/java/com/android/tools/r8/desugar/desugaredlibrary/test/DesugaredLibraryTestBuilder.java
+++ b/src/test/java/com/android/tools/r8/desugar/desugaredlibrary/test/DesugaredLibraryTestBuilder.java
@@ -38,6 +38,7 @@
import java.util.ArrayList;
import java.util.Collection;
import java.util.List;
+import java.util.concurrent.ExecutionException;
import java.util.function.Consumer;
import java.util.function.Function;
import org.junit.Assume;
@@ -344,14 +345,16 @@
builder.addLibraryFiles(libraryDesugaringSpecification.getLibraryFiles());
}
- public DesugaredLibraryTestCompileResult<T> compile() throws Exception {
+ public DesugaredLibraryTestCompileResult<T> compile()
+ throws CompilationFailedException, IOException, ExecutionException {
prepareCompilation();
TestCompileResult<?, ? extends SingleTestRunResult<?>> compile = builder.compile();
return internalCompile(compile);
}
public DesugaredLibraryTestCompileResult<T> compileWithExpectedDiagnostics(
- DiagnosticsConsumer consumer) throws Exception {
+ DiagnosticsConsumer consumer)
+ throws CompilationFailedException, IOException, ExecutionException {
prepareCompilation();
TestCompileResult<?, ? extends SingleTestRunResult<?>> compile =
builder.compileWithExpectedDiagnostics(consumer);
@@ -359,7 +362,8 @@
}
private DesugaredLibraryTestCompileResult<T> internalCompile(
- TestCompileResult<?, ? extends SingleTestRunResult<?>> compile) throws Exception {
+ TestCompileResult<?, ? extends SingleTestRunResult<?>> compile)
+ throws CompilationFailedException, IOException, ExecutionException {
L8TestCompileResult l8Compile = compileDesugaredLibrary(compile, keepRuleConsumer);
D8TestCompileResult customLibCompile = compileCustomLib();
return new DesugaredLibraryTestCompileResult<>(
@@ -382,7 +386,7 @@
private L8TestCompileResult compileDesugaredLibrary(
TestCompileResult<?, ? extends SingleTestRunResult<?>> compile,
KeepRuleConsumer keepRuleConsumer)
- throws Exception {
+ throws CompilationFailedException, IOException, ExecutionException {
if (!compilationSpecification.isL8Shrink()) {
return compileDesugaredLibrary(null);
}
@@ -401,7 +405,8 @@
return compileDesugaredLibrary(keepRules);
}
- private L8TestCompileResult compileDesugaredLibrary(String keepRule) throws Exception {
+ private L8TestCompileResult compileDesugaredLibrary(String keepRule)
+ throws CompilationFailedException, IOException, ExecutionException {
assert !compilationSpecification.isL8Shrink() || keepRule != null;
return test.testForL8(parameters.getApiLevel(), parameters.getBackend())
.apply(
@@ -427,7 +432,8 @@
}
public String collectKeepRulesWithTraceReferences(
- Path desugaredProgramClassFile, Path desugaredLibraryClassFile) throws Exception {
+ Path desugaredProgramClassFile, Path desugaredLibraryClassFile)
+ throws CompilationFailedException, IOException {
Path generatedKeepRules = test.temp.newFile().toPath();
ArrayList<String> args = new ArrayList<>();
args.add("--keep-rules");
@@ -449,12 +455,12 @@
}
public SingleTestRunResult<?> run(TestRuntime runtime, Class<?> mainClass, String... args)
- throws Exception {
+ throws ExecutionException, IOException, CompilationFailedException {
return compile().run(runtime, mainClass.getTypeName(), args);
}
public SingleTestRunResult<?> run(TestRuntime runtime, String mainClass, String... args)
- throws Exception {
+ throws ExecutionException, IOException, CompilationFailedException {
return compile().run(runtime, mainClass, args);
}
diff --git a/src/test/java/com/android/tools/r8/desugar/desugaredlibrary/test/DesugaredLibraryTestCompileResult.java b/src/test/java/com/android/tools/r8/desugar/desugaredlibrary/test/DesugaredLibraryTestCompileResult.java
index bd11465..3172876 100644
--- a/src/test/java/com/android/tools/r8/desugar/desugaredlibrary/test/DesugaredLibraryTestCompileResult.java
+++ b/src/test/java/com/android/tools/r8/desugar/desugaredlibrary/test/DesugaredLibraryTestCompileResult.java
@@ -18,6 +18,7 @@
import java.io.IOException;
import java.nio.file.Path;
import java.util.List;
+import java.util.concurrent.ExecutionException;
import java.util.function.Consumer;
public class DesugaredLibraryTestCompileResult<T extends DesugaredLibraryTestBase> {
@@ -41,7 +42,7 @@
CompilationSpecification compilationSpecification,
D8TestCompileResult customLibCompile,
L8TestCompileResult l8Compile)
- throws Exception {
+ throws CompilationFailedException, IOException {
this.test = test;
this.compileResult = compileResult;
this.parameters = parameters;
@@ -53,26 +54,26 @@
}
public <E extends Throwable> DesugaredLibraryTestCompileResult<T> inspectCustomLib(
- ThrowingConsumer<CodeInspector, E> consumer) throws Throwable {
+ ThrowingConsumer<CodeInspector, E> consumer) throws IOException, E {
assert customLibCompile != null;
customLibCompile.inspect(consumer);
return this;
}
public <E extends Throwable> DesugaredLibraryTestCompileResult<T> inspectL8(
- ThrowingConsumer<CodeInspector, E> consumer) throws Throwable {
+ ThrowingConsumer<CodeInspector, E> consumer) throws IOException, E {
l8Compile.inspect(consumer);
return this;
}
public <E extends Throwable> DesugaredLibraryTestCompileResult<T> inspect(
- ThrowingConsumer<CodeInspector, E> consumer) throws Throwable {
+ ThrowingConsumer<CodeInspector, E> consumer) throws IOException, E {
compileResult.inspect(consumer);
return this;
}
public <E extends Throwable> DesugaredLibraryTestCompileResult<T> inspectKeepRules(
- ThrowingConsumer<List<String>, E> consumer) throws Throwable {
+ ThrowingConsumer<List<String>, E> consumer) throws E {
if (compilationSpecification.isL8Shrink()) {
l8Compile.inspectKeepRules(consumer);
}
@@ -80,21 +81,21 @@
}
public <E extends Throwable> DesugaredLibraryTestCompileResult<T> apply(
- ThrowingConsumer<DesugaredLibraryTestCompileResult<T>, E> consumer) throws Throwable {
+ ThrowingConsumer<DesugaredLibraryTestCompileResult<T>, E> consumer) throws E {
consumer.accept(this);
return this;
}
- public CodeInspector customLibInspector() throws Throwable {
+ public CodeInspector customLibInspector() throws IOException {
assert customLibCompile != null;
return customLibCompile.inspector();
}
- public CodeInspector l8Inspector() throws Throwable {
+ public CodeInspector l8Inspector() throws IOException {
return l8Compile.inspector();
}
- public CodeInspector inspector() throws Throwable {
+ public CodeInspector inspector() throws IOException {
return compileResult.inspector();
}
@@ -105,17 +106,17 @@
}
public SingleTestRunResult<?> run(TestRuntime runtime, Class<?> mainClass, String... args)
- throws Exception {
+ throws ExecutionException, IOException {
return run(runtime, mainClass.getTypeName(), args);
}
public SingleTestRunResult<?> run(TestRuntime runtime, String mainClassName, String... args)
- throws Exception {
+ throws ExecutionException, IOException {
return runnableCompiledResult.run(runtime, mainClassName, args);
}
private TestCompileResult<?, ? extends SingleTestRunResult<?>> computeRunnableCompiledResult()
- throws Exception {
+ throws CompilationFailedException, IOException {
TestCompileResult<?, ? extends SingleTestRunResult<?>> runnable = convertToDexIfNeeded();
if (customLibCompile != null) {
runnable.addRunClasspathFiles(customLibCompile.writeToZip());