Disable all doclint checks in JavacTurbine, since javadoc doesn't matter for header compilation. Unbreaks doclint:reference errors from {@link}s to classes not on the reduced classpath.

(+ drive-by typo fix)

PiperOrigin-RevId: 266257916
diff --git a/src/java_tools/buildjar/java/com/google/devtools/build/java/turbine/javac/JavacTurbine.java b/src/java_tools/buildjar/java/com/google/devtools/build/java/turbine/javac/JavacTurbine.java
index d6e3cdf..f4055e7 100644
--- a/src/java_tools/buildjar/java/com/google/devtools/build/java/turbine/javac/JavacTurbine.java
+++ b/src/java_tools/buildjar/java/com/google/devtools/build/java/turbine/javac/JavacTurbine.java
@@ -22,6 +22,7 @@
 import com.google.common.collect.ImmutableMap;
 import com.google.common.collect.ImmutableSet;
 import com.google.devtools.build.buildjar.javac.JavacOptions;
+import com.google.devtools.build.buildjar.javac.JavacOptions.JavacOptionNormalizer;
 import com.google.devtools.build.buildjar.javac.plugins.dependency.DependencyModule;
 import com.google.devtools.build.buildjar.javac.plugins.dependency.StrictJavaDepsPlugin;
 import com.google.turbine.options.TurbineOptions;
@@ -44,6 +45,8 @@
 import java.nio.file.attribute.BasicFileAttributes;
 import java.util.Arrays;
 import java.util.HashMap;
+import java.util.Iterator;
+import java.util.List;
 import java.util.Map;
 import java.util.jar.Attributes;
 import java.util.jar.JarFile;
@@ -223,13 +226,27 @@
     this.turbineOptions = turbineOptions;
   }
 
+  /** Throw away all doclint options to leave it disabled, since we don't care about javadoc. */
+  public static final class DoclintOptionNormalizer implements JavacOptionNormalizer {
+
+    @Override
+    public boolean processOption(String option, Iterator<String> remaining) {
+      return option.startsWith("-Xdoclint");
+    }
+
+    @Override
+    public void normalize(List<String> normalized) {}
+  }
+
   /** Creates the compilation javacopts from {@link TurbineOptions}. */
   @VisibleForTesting
   static ImmutableList<String> processJavacopts(TurbineOptions turbineOptions) {
     ImmutableList<String> javacopts =
         JavacOptions.removeBazelSpecificFlags(
             JavacOptions.normalizeOptionsWithNormalizers(
-                turbineOptions.javacOpts(), new JavacOptions.ReleaseOptionNormalizer()));
+                turbineOptions.javacOpts(),
+                new DoclintOptionNormalizer(),
+                new JavacOptions.ReleaseOptionNormalizer()));
 
     ImmutableList.Builder<String> builder = ImmutableList.builder();
     builder.addAll(javacopts);
diff --git a/src/java_tools/buildjar/javatests/com/google/devtools/build/java/turbine/javac/JavacTurbineTest.java b/src/java_tools/buildjar/javatests/com/google/devtools/build/java/turbine/javac/JavacTurbineTest.java
index 985e7cd..800a640 100644
--- a/src/java_tools/buildjar/javatests/com/google/devtools/build/java/turbine/javac/JavacTurbineTest.java
+++ b/src/java_tools/buildjar/javatests/com/google/devtools/build/java/turbine/javac/JavacTurbineTest.java
@@ -1054,7 +1054,7 @@
   }
 
   @Test
-  public void processorReadsNonexistantFile() throws Exception {
+  public void processorReadsNonexistentFile() throws Exception {
     addSourceLines("Hello.java", "@Deprecated class Hello {}");
     optionsBuilder.addProcessors(ImmutableList.of(NoSuchFileProcessor.class.getName()));
     optionsBuilder.addProcessorPathEntries(HOST_CLASSPATH);
@@ -1446,6 +1446,29 @@
   }
 
   @Test
+  public void noDoclint() throws Exception {
+    addSourceLines(
+        "A.java", //
+        "/** {@link Invalid} **/",
+        "public class A {",
+        "}");
+
+    optionsBuilder.addAllJavacOpts(
+        ImmutableList.of("-source", "8", "-target", "8", "-Xdoclint:reference"));
+    optionsBuilder.addSources(ImmutableList.copyOf(Iterables.transform(sources, TO_STRING)));
+
+    StringWriter output = new StringWriter();
+    Result result;
+    try (JavacTurbine turbine =
+        new JavacTurbine(new PrintWriter(output, true), optionsBuilder.build())) {
+      result = turbine.compile();
+    }
+
+    assertThat(output.toString()).isEmpty();
+    assertThat(result).isEqualTo(Result.OK_WITH_REDUCED_CLASSPATH);
+  }
+
+  @Test
   public void processJavacopts_useSourceByDefault() {
     TurbineOptions options = TurbineOptions.builder().setOutput("/out").setTempDir("/tmp").build();
     ImmutableList<String> javacopts = JavacTurbine.processJavacopts(options);
@@ -1479,6 +1502,19 @@
   }
 
   @Test
+  public void processJavacopts_filtersDoclint() {
+    TurbineOptions options =
+        TurbineOptions.builder()
+            .setOutput("/out")
+            .setTempDir("/tmp")
+            .addAllJavacOpts(ImmutableList.of("-Xmyopt", "-Xdoclint:reference"))
+            .build();
+    ImmutableList<String> javacopts = JavacTurbine.processJavacopts(options);
+    assertThat(javacopts).contains("-Xmyopt");
+    assertThat(javacopts).doesNotContain("-Xdoclint:reference");
+  }
+
+  @Test
   public void testManifestEntries() throws Exception {
     optionsBuilder.setTargetLabel("//foo:foo");
     optionsBuilder.setInjectingRuleKind("foo_library");