Soong: support Errorprone javacflags

Add support for an errorprone block in Java modules that accepts
additional javacflags for the errorprone build.

Sample:

    errorprone: {
        javacflags: ["-Xep:EqualsNaN:WARN"],
    },

Bug: 72004718
Test: m RUN_ERROR_PRONE=true
Test: manual - add block with ERROR to a project
Test: androidmk_test
Change-Id: I502248fe76c26aa19102f413af72a7324c35b7f4
diff --git a/java/builder.go b/java/builder.go
index bf826e1..7273290 100644
--- a/java/builder.go
+++ b/java/builder.go
@@ -155,6 +155,8 @@
 	aidlFlags     string
 	javaVersion   string
 
+	errorProneExtraJavacFlags string
+
 	kotlincFlags     string
 	kotlincClasspath classpath
 
@@ -210,6 +212,14 @@
 		ctx.ModuleErrorf("cannot build with Error Prone, missing external/error_prone?")
 	}
 
+	if len(flags.errorProneExtraJavacFlags) > 0 {
+		if len(flags.javacFlags) > 0 {
+			flags.javacFlags = flags.errorProneExtraJavacFlags + " " + flags.javacFlags
+		} else {
+			flags.javacFlags = flags.errorProneExtraJavacFlags
+		}
+	}
+
 	transformJavaToClasses(ctx, outputFile, -1, srcFiles, srcJars, flags, nil,
 		"errorprone", "errorprone", errorprone)
 }
diff --git a/java/java.go b/java/java.go
index 65e3b41..a6769e7 100644
--- a/java/java.go
+++ b/java/java.go
@@ -142,6 +142,11 @@
 		Exclude_filter []string
 	}
 
+	Errorprone struct {
+		// List of javac flags that should only be used when running errorprone.
+		Javacflags []string
+	}
+
 	Proto struct {
 		// List of extra options that will be passed to the proto generator.
 		Output_params []string
@@ -646,6 +651,10 @@
 		flags.javacFlags = "$javacFlags"
 	}
 
+	if len(j.properties.Errorprone.Javacflags) > 0 {
+		flags.errorProneExtraJavacFlags = strings.Join(j.properties.Errorprone.Javacflags, " ")
+	}
+
 	// javaVersion flag.
 	sdk := sdkStringToNumber(ctx, String(j.deviceProperties.Sdk_version))
 	if j.properties.Java_version != nil {