aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/java_tools
diff options
context:
space:
mode:
Diffstat (limited to 'src/java_tools')
-rw-r--r--src/java_tools/buildjar/java/com/google/devtools/build/buildjar/javac/plugins/dependency/DependencyModule.java22
-rw-r--r--src/java_tools/buildjar/java/com/google/devtools/build/buildjar/javac/plugins/dependency/StrictJavaDepsPlugin.java19
-rw-r--r--src/java_tools/buildjar/java/com/google/devtools/build/java/turbine/javac/JavacTurbine.java8
-rw-r--r--src/java_tools/buildjar/javatests/com/google/devtools/build/java/turbine/javac/JavacTurbineTest.java31
4 files changed, 45 insertions, 35 deletions
diff --git a/src/java_tools/buildjar/java/com/google/devtools/build/buildjar/javac/plugins/dependency/DependencyModule.java b/src/java_tools/buildjar/java/com/google/devtools/build/buildjar/javac/plugins/dependency/DependencyModule.java
index f3e7cc7a56..6319df0c28 100644
--- a/src/java_tools/buildjar/java/com/google/devtools/build/buildjar/javac/plugins/dependency/DependencyModule.java
+++ b/src/java_tools/buildjar/java/com/google/devtools/build/buildjar/javac/plugins/dependency/DependencyModule.java
@@ -57,22 +57,11 @@ public final class DependencyModule {
public static enum StrictJavaDeps {
/** Legacy behavior: Silently allow referencing transitive dependencies. */
- OFF(false),
+ OFF,
/** Warn about transitive dependencies being used directly. */
- WARN(true),
+ WARN,
/** Fail the build when transitive dependencies are used directly. */
- ERROR(true);
-
- private final boolean enabled;
-
- StrictJavaDeps(boolean enabled) {
- this.enabled = enabled;
- }
-
- /** Convenience method for just checking if it's not OFF */
- public boolean isEnabled() {
- return enabled;
- }
+ ERROR
}
private final StrictJavaDeps strictJavaDeps;
@@ -169,11 +158,6 @@ public final class DependencyModule {
return deps.build();
}
- /** Returns whether strict dependency checks (strictJavaDeps) are enabled. */
- public boolean isStrictDepsEnabled() {
- return strictJavaDeps.isEnabled();
- }
-
/** Returns the paths of direct dependencies. */
public ImmutableSet<Path> directJars() {
return directJars;
diff --git a/src/java_tools/buildjar/java/com/google/devtools/build/buildjar/javac/plugins/dependency/StrictJavaDepsPlugin.java b/src/java_tools/buildjar/java/com/google/devtools/build/buildjar/javac/plugins/dependency/StrictJavaDepsPlugin.java
index 5fcb35d606..ca8d007065 100644
--- a/src/java_tools/buildjar/java/com/google/devtools/build/buildjar/javac/plugins/dependency/StrictJavaDepsPlugin.java
+++ b/src/java_tools/buildjar/java/com/google/devtools/build/buildjar/javac/plugins/dependency/StrictJavaDepsPlugin.java
@@ -22,7 +22,6 @@ import com.google.auto.value.AutoValue;
import com.google.common.collect.ImmutableSet;
import com.google.devtools.build.buildjar.JarOwner;
import com.google.devtools.build.buildjar.javac.plugins.BlazeJavaCompilerPlugin;
-import com.google.devtools.build.buildjar.javac.plugins.dependency.DependencyModule.StrictJavaDeps;
import com.google.devtools.build.lib.view.proto.Deps;
import com.google.devtools.build.lib.view.proto.Deps.Dependency;
import com.sun.tools.javac.code.Flags;
@@ -172,10 +171,14 @@ public final class StrictJavaDepsPlugin extends BlazeJavaCompilerPlugin {
for (SjdDiagnostic diagnostic : diagnostics) {
JavaFileObject prev = log.useSource(diagnostic.source());
try {
- if (dependencyModule.getStrictJavaDeps() == ERROR) {
- log.error(diagnostic.pos(), "proc.messager", diagnostic.message());
- } else {
- log.warning(diagnostic.pos(), "proc.messager", diagnostic.message());
+ switch (dependencyModule.getStrictJavaDeps()) {
+ case ERROR:
+ log.error(diagnostic.pos(), "proc.messager", diagnostic.message());
+ break;
+ case WARN:
+ log.warning(diagnostic.pos(), "proc.messager", diagnostic.message());
+ break;
+ case OFF: // continue below
}
} finally {
log.useSource(prev);
@@ -214,9 +217,6 @@ public final class StrictJavaDepsPlugin extends BlazeJavaCompilerPlugin {
/** Strict deps diagnostics. */
private final List<SjdDiagnostic> diagnostics;
- /** The strict_java_deps mode */
- private final StrictJavaDeps strictJavaDepsMode;
-
/** Missing targets */
private final Set<JarOwner> missingTargets;
@@ -245,7 +245,6 @@ public final class StrictJavaDepsPlugin extends BlazeJavaCompilerPlugin {
Set<JarOwner> missingTargets,
Set<Path> platformJars) {
this.directJars = dependencyModule.directJars();
- this.strictJavaDepsMode = dependencyModule.getStrictJavaDeps();
this.diagnostics = diagnostics;
this.missingTargets = missingTargets;
this.directDependenciesMap = dependencyModule.getExplicitDependenciesMap();
@@ -275,7 +274,7 @@ public final class StrictJavaDepsPlugin extends BlazeJavaCompilerPlugin {
* strict_java_deps is enabled, it emits a [strict] compiler warning/error.
*/
private void collectExplicitDependency(Path jarPath, JCTree node, Symbol sym) {
- if (strictJavaDepsMode.isEnabled() && !isStrictDepsExempt) {
+ if (!isStrictDepsExempt) {
// Does it make sense to emit a warning/error for this pair of (type, owner)?
// We want to emit only one error/warning per owner.
if (!directJars.contains(jarPath) && seenStrictDepsViolatingJars.add(jarPath)) {
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 1cc9391ca3..dd61582bd2 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
@@ -23,7 +23,6 @@ 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.plugins.dependency.DependencyModule;
-import com.google.devtools.build.buildjar.javac.plugins.dependency.DependencyModule.StrictJavaDeps;
import com.google.devtools.build.buildjar.javac.plugins.dependency.StrictJavaDepsPlugin;
import com.google.turbine.binder.ClassPathBinder;
import com.google.turbine.options.TurbineOptions;
@@ -115,8 +114,7 @@ public class JavacTurbine implements AutoCloseable {
// To avoid having to apply the same exemptions here, we just ignore strict deps errors
// and leave enforcement to JavaBuilder.
ImmutableSet<Path> platformJars = ImmutableSet.copyOf(asPaths(turbineOptions.bootClassPath()));
- DependencyModule dependencyModule =
- buildDependencyModule(turbineOptions, StrictJavaDeps.WARN, platformJars);
+ DependencyModule dependencyModule = buildDependencyModule(turbineOptions, platformJars);
if (sources.isEmpty()) {
// accept compilations with an empty source list for compatibility with JavaBuilder
@@ -261,15 +259,13 @@ public class JavacTurbine implements AutoCloseable {
private static DependencyModule buildDependencyModule(
TurbineOptions turbineOptions,
- StrictJavaDeps strictDepsMode,
ImmutableSet<Path> platformJars) {
DependencyModule.Builder dependencyModuleBuilder =
new DependencyModule.Builder()
.setReduceClasspath()
.setTargetLabel(turbineOptions.targetLabel().orNull())
.addDepsArtifacts(asPaths(turbineOptions.depsArtifacts()))
- .setPlatformJars(platformJars)
- .setStrictJavaDeps(strictDepsMode.toString());
+ .setPlatformJars(platformJars);
ImmutableSet.Builder<Path> directJars = ImmutableSet.builder();
for (String path : turbineOptions.directJars()) {
directJars.add(Paths.get(path));
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 b7b8250f17..c598edf538 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
@@ -1208,6 +1208,37 @@ public class JavacTurbineTest extends AbstractJavacTurbineCompilationTest {
}
@Test
+ public void ignoreStrictDepsErrorsForFailingCompilations() throws Exception {
+
+ Path lib =
+ createClassJar(
+ "deps.jar",
+ AbstractJavacTurbineCompilationTest.class,
+ JavacTurbineTest.class,
+ Lib.class);
+
+ addSourceLines(
+ "Hello.java",
+ "import " + Lib.class.getCanonicalName() + ";",
+ "import no.such.Class;",
+ "class Hello extends Lib {",
+ "}");
+
+ optionsBuilder.addClassPathEntries(ImmutableList.of(lib.toString()));
+
+ optionsBuilder.addSources(ImmutableList.copyOf(Iterables.transform(sources, TO_STRING)));
+
+ StringWriter errOutput = new StringWriter();
+ Result result;
+ try (JavacTurbine turbine =
+ new JavacTurbine(new PrintWriter(errOutput, true), optionsBuilder.build())) {
+ result = turbine.compile();
+ }
+ assertThat(errOutput.toString()).doesNotContain("[strict]");
+ assertThat(result).isEqualTo(Result.ERROR);
+ }
+
+ @Test
public void clinit() throws Exception {
addSourceLines(
"Hello.java",