Extend testing utilities for diagnostic inspection.

Change-Id: I7c5578ad608b1dd180a8cf3965581c48d4a543c6
diff --git a/src/test/java/com/android/tools/r8/TestCompilerBuilder.java b/src/test/java/com/android/tools/r8/TestCompilerBuilder.java
index 111bc20..cdb2452 100644
--- a/src/test/java/com/android/tools/r8/TestCompilerBuilder.java
+++ b/src/test/java/com/android/tools/r8/TestCompilerBuilder.java
@@ -86,6 +86,19 @@
     }
   }
 
+  public CR compileWithExpectedDiagnostics(
+      Consumer<TestDiagnosticMessages> diagnosticsConsumer) throws CompilationFailedException {
+    TestDiagnosticMessages diagnosticsHandler = getState().getDiagnosticsMessages();
+    try {
+      CR result = compile();
+      diagnosticsConsumer.accept(diagnosticsHandler);
+      return result;
+    } catch (CompilationFailedException e) {
+      diagnosticsConsumer.accept(diagnosticsHandler);
+      throw e;
+    }
+  }
+
   @Override
   public RR run(String mainClass)
       throws CompilationFailedException, ExecutionException, IOException {
diff --git a/src/test/java/com/android/tools/r8/TestDiagnosticMessages.java b/src/test/java/com/android/tools/r8/TestDiagnosticMessages.java
index 125329b..5759c3a 100644
--- a/src/test/java/com/android/tools/r8/TestDiagnosticMessages.java
+++ b/src/test/java/com/android/tools/r8/TestDiagnosticMessages.java
@@ -21,6 +21,8 @@
 
   public TestDiagnosticMessages assertOnlyWarnings();
 
+  public TestDiagnosticMessages assertOnlyErrors();
+
   public TestDiagnosticMessages assertInfosCount(int count);
 
   public TestDiagnosticMessages assertWarningsCount(int count);
diff --git a/src/test/java/com/android/tools/r8/TestDiagnosticMessagesImpl.java b/src/test/java/com/android/tools/r8/TestDiagnosticMessagesImpl.java
index 8737581..aea4b4a 100644
--- a/src/test/java/com/android/tools/r8/TestDiagnosticMessagesImpl.java
+++ b/src/test/java/com/android/tools/r8/TestDiagnosticMessagesImpl.java
@@ -76,6 +76,13 @@
     return this;
   }
 
+  public TestDiagnosticMessages assertOnlyErrors() {
+    assertEmpty("info", getInfos());
+    assertEmpty("warning", getWarnings());
+    assertNotEquals(0, getErrors().size());
+    return this;
+  }
+
   public TestDiagnosticMessages assertInfosCount(int count) {
     assertEquals(count, getInfos().size());
     return this;