Report info level diagnostic for art profile rules that don't parse

This ensures that invalid 3p rules does not break the build of clients.

Fixes: b/265768286
Change-Id: If97c0b7d20130b3895c042e01e70f9778aebac3d
diff --git a/src/main/java/com/android/tools/r8/profile/art/ArtProfile.java b/src/main/java/com/android/tools/r8/profile/art/ArtProfile.java
index c55157d..f894976 100644
--- a/src/main/java/com/android/tools/r8/profile/art/ArtProfile.java
+++ b/src/main/java/com/android/tools/r8/profile/art/ArtProfile.java
@@ -295,7 +295,10 @@
         TextInputStream textInputStream,
         Consumer<HumanReadableArtProfileParserBuilder> parserBuilderConsumer) {
       HumanReadableArtProfileParser.Builder parserBuilder =
-          HumanReadableArtProfileParser.builder().setReporter(reporter).setProfileBuilder(this);
+          HumanReadableArtProfileParser.builder()
+              .setDiagnosticConsumer(reporter::info)
+              .setReporter(reporter)
+              .setProfileBuilder(this);
       parserBuilderConsumer.accept(parserBuilder);
       HumanReadableArtProfileParser parser = parserBuilder.build();
       parser.parse(textInputStream, artProfileProvider.getOrigin());
diff --git a/src/main/java/com/android/tools/r8/profile/art/HumanReadableArtProfileParser.java b/src/main/java/com/android/tools/r8/profile/art/HumanReadableArtProfileParser.java
index cc39eb9..85cca78 100644
--- a/src/main/java/com/android/tools/r8/profile/art/HumanReadableArtProfileParser.java
+++ b/src/main/java/com/android/tools/r8/profile/art/HumanReadableArtProfileParser.java
@@ -18,15 +18,21 @@
 import java.io.IOException;
 import java.io.InputStreamReader;
 import java.io.UncheckedIOException;
+import java.util.function.Consumer;
 
 public class HumanReadableArtProfileParser {
 
+  private final Consumer<HumanReadableArtProfileParserErrorDiagnostic> diagnosticConsumer;
   private final ArtProfileBuilder profileBuilder;
   private final ArtProfileRulePredicate rulePredicate;
   private final Reporter reporter;
 
   HumanReadableArtProfileParser(
-      ArtProfileBuilder profileBuilder, ArtProfileRulePredicate rulePredicate, Reporter reporter) {
+      Consumer<HumanReadableArtProfileParserErrorDiagnostic> diagnosticConsumer,
+      ArtProfileBuilder profileBuilder,
+      ArtProfileRulePredicate rulePredicate,
+      Reporter reporter) {
+    this.diagnosticConsumer = diagnosticConsumer;
     this.profileBuilder = profileBuilder;
     this.rulePredicate = rulePredicate;
     this.reporter = reporter;
@@ -60,8 +66,9 @@
   }
 
   private void parseError(String rule, int lineNumber, Origin origin) {
-    if (reporter != null) {
-      reporter.error(new HumanReadableArtProfileParserErrorDiagnostic(rule, lineNumber, origin));
+    if (diagnosticConsumer != null) {
+      diagnosticConsumer.accept(
+          new HumanReadableArtProfileParserErrorDiagnostic(rule, lineNumber, origin));
     }
   }
 
@@ -143,10 +150,17 @@
 
   public static class Builder implements HumanReadableArtProfileParserBuilder {
 
+    private Consumer<HumanReadableArtProfileParserErrorDiagnostic> diagnosticConsumer;
     private ArtProfileBuilder profileBuilder;
     private ArtProfileRulePredicate rulePredicate = new AlwaysTrueArtProfileRulePredicate();
     private Reporter reporter;
 
+    public Builder setDiagnosticConsumer(
+        Consumer<HumanReadableArtProfileParserErrorDiagnostic> diagnosticConsumer) {
+      this.diagnosticConsumer = diagnosticConsumer;
+      return this;
+    }
+
     public Builder setReporter(Reporter reporter) {
       this.reporter = reporter;
       return this;
@@ -164,7 +178,11 @@
     }
 
     public HumanReadableArtProfileParser build() {
-      return new HumanReadableArtProfileParser(profileBuilder, rulePredicate, reporter);
+      if (diagnosticConsumer == null && reporter != null) {
+        diagnosticConsumer = reporter::error;
+      }
+      return new HumanReadableArtProfileParser(
+          diagnosticConsumer, profileBuilder, rulePredicate, reporter);
     }
   }
 }
diff --git a/src/test/java/com/android/tools/r8/TestDiagnosticMessages.java b/src/test/java/com/android/tools/r8/TestDiagnosticMessages.java
index a15b915..1205acc 100644
--- a/src/test/java/com/android/tools/r8/TestDiagnosticMessages.java
+++ b/src/test/java/com/android/tools/r8/TestDiagnosticMessages.java
@@ -112,6 +112,11 @@
     return assertInfosMatch(Collections.singletonList(matcher));
   }
 
+  @SafeVarargs
+  public final TestDiagnosticMessages assertInfosMatch(Matcher<Diagnostic>... matchers) {
+    return assertInfosMatch(Arrays.asList(matchers));
+  }
+
   public abstract TestDiagnosticMessages assertInfosMatch(Collection<Matcher<Diagnostic>> matchers);
 
   public final TestDiagnosticMessages assertWarningsMatch(Matcher<Diagnostic> matcher) {
diff --git a/src/test/java/com/android/tools/r8/profile/art/diagnostic/HumanReadableArtProfileParserErrorDiagnosticFromArtProfileTest.java b/src/test/java/com/android/tools/r8/profile/art/diagnostic/HumanReadableArtProfileParserErrorDiagnosticFromArtProfileTest.java
index c22ad2a..ba1ca12 100644
--- a/src/test/java/com/android/tools/r8/profile/art/diagnostic/HumanReadableArtProfileParserErrorDiagnosticFromArtProfileTest.java
+++ b/src/test/java/com/android/tools/r8/profile/art/diagnostic/HumanReadableArtProfileParserErrorDiagnosticFromArtProfileTest.java
@@ -9,7 +9,6 @@
 import static org.hamcrest.CoreMatchers.allOf;
 import static org.hamcrest.CoreMatchers.equalTo;
 
-import com.android.tools.r8.CompilationFailedException;
 import com.android.tools.r8.TestBase;
 import com.android.tools.r8.TestDiagnosticMessages;
 import com.android.tools.r8.TestParameters;
@@ -38,7 +37,7 @@
     return getTestParameters().withNoneRuntime().build();
   }
 
-  @Test(expected = CompilationFailedException.class)
+  @Test
   public void testD8() throws Exception {
     testForD8()
         .addProgramClasses(Main.class)
@@ -48,12 +47,13 @@
         .compileWithExpectedDiagnostics(this::inspectDiagnostics);
   }
 
-  @Test(expected = CompilationFailedException.class)
+  @Test
   public void testR8() throws Exception {
     testForR8(Backend.DEX)
         .addProgramClasses(Main.class)
         .addKeepMainRule(Main.class)
         .addArtProfileForRewriting(createArtProfileProvider())
+        .allowDiagnosticInfoMessages()
         .release()
         .setMinApi(AndroidApiLevel.LATEST)
         .compileWithExpectedDiagnostics(this::inspectDiagnostics);
@@ -77,7 +77,7 @@
   }
 
   private void inspectDiagnostics(TestDiagnosticMessages diagnostics) {
-    diagnostics.assertErrorsMatch(
+    diagnostics.assertInfosMatch(
         allOf(
             diagnosticType(HumanReadableArtProfileParserErrorDiagnostic.class),
             diagnosticMessage(