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");