diff options
author | 2017-07-03 11:05:53 -0400 | |
---|---|---|
committer | 2017-07-05 10:57:00 -0400 | |
commit | 2ebe1fc7bbd646efdb43eb68a37c1ffb97dbd5af (patch) | |
tree | 06cd27ca30e255c6fd5b38390330efbae020abcc | |
parent | a72c7eef5f40258fc59f57625cf41d26918d7abc (diff) |
Gracefully handle exceptions in java_common.default_javac_opts.
Replacing checkNotNulls (which throws NPE) with throwing EvalExceptions in java_common, in order for blaze to output a nice error message instead of crashing.
PiperOrigin-RevId: 160830397
-rw-r--r-- | src/main/java/com/google/devtools/build/lib/rules/java/JavaSkylarkCommon.java | 14 |
1 files changed, 9 insertions, 5 deletions
diff --git a/src/main/java/com/google/devtools/build/lib/rules/java/JavaSkylarkCommon.java b/src/main/java/com/google/devtools/build/lib/rules/java/JavaSkylarkCommon.java index 50d6962bf3..7ac14a5c4e 100644 --- a/src/main/java/com/google/devtools/build/lib/rules/java/JavaSkylarkCommon.java +++ b/src/main/java/com/google/devtools/build/lib/rules/java/JavaSkylarkCommon.java @@ -13,8 +13,6 @@ // limitations under the License. package com.google.devtools.build.lib.rules.java; -import static com.google.common.base.Preconditions.checkNotNull; - import com.google.common.collect.ImmutableList; import com.google.common.collect.Iterables; import com.google.devtools.build.lib.actions.Artifact; @@ -343,7 +341,10 @@ public class JavaSkylarkCommon { ? NestedSetBuilder.<Artifact>emptySet(Order.STABLE_ORDER) : hostJavabaseProvider.getMiddlemanArtifact(); JavaToolchainProvider javaToolchainProvider = - checkNotNull(javaToolchain.getProvider(JavaToolchainProvider.class)); + javaToolchain.getProvider(JavaToolchainProvider.class); + if (javaToolchain == null) { + throw new EvalException(null, javaToolchain.getLabel() + " is not a java_toolchain rule."); + } JavaCompilationArtifacts artifacts = helper.build( javaSemantics, @@ -400,9 +401,12 @@ public class JavaSkylarkCommon { SkylarkRuleContext skylarkRuleContext, String javaToolchainAttr) throws EvalException { RuleContext ruleContext = skylarkRuleContext.getRuleContext(); ConfiguredTarget javaToolchainConfigTarget = - (ConfiguredTarget) checkNotNull(skylarkRuleContext.getAttr().getValue(javaToolchainAttr)); + (ConfiguredTarget) skylarkRuleContext.getAttr().getValue(javaToolchainAttr); JavaToolchainProvider toolchain = - checkNotNull(javaToolchainConfigTarget.getProvider(JavaToolchainProvider.class)); + javaToolchainConfigTarget.getProvider(JavaToolchainProvider.class); + if (toolchain == null) { + throw new EvalException(null, javaToolchainAttr + " is not a java_toolchain rule label"); + } return ImmutableList.copyOf(Iterables.concat( toolchain.getJavacOptions(), ruleContext.getTokenizedStringListAttr("javacopts"))); } |