aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/main/java/com/google/devtools/build/lib/rules/proto/ProtoCompileActionBuilder.java
diff options
context:
space:
mode:
authorGravatar Carmi Grushko <carmi@google.com>2016-12-22 18:20:26 +0000
committerGravatar Klaus Aehlig <aehlig@google.com>2016-12-23 09:43:10 +0000
commit985f343ea5c5400bd45743b10c4fb85233113c61 (patch)
tree5e6b735a7ac1f01330383813b7aea71a38713570 /src/main/java/com/google/devtools/build/lib/rules/proto/ProtoCompileActionBuilder.java
parent92a1eb7232c44baf8db485755967efcd4fd1629a (diff)
Do not crash when there's an error in the rule.
In ProtoCompileActionBuilder.registerActions(), we check for rule errors immediately after retrieving the value of :proto_compiler. However, this picks-up existing errors, not necessarily from retrieving the value of :proto_compiler. -- PiperOrigin-RevId: 142777231 MOS_MIGRATED_REVID=142777231
Diffstat (limited to 'src/main/java/com/google/devtools/build/lib/rules/proto/ProtoCompileActionBuilder.java')
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/proto/ProtoCompileActionBuilder.java17
1 files changed, 9 insertions, 8 deletions
diff --git a/src/main/java/com/google/devtools/build/lib/rules/proto/ProtoCompileActionBuilder.java b/src/main/java/com/google/devtools/build/lib/rules/proto/ProtoCompileActionBuilder.java
index 8936c24d29..39896b6652 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/proto/ProtoCompileActionBuilder.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/proto/ProtoCompileActionBuilder.java
@@ -211,7 +211,7 @@ public class ProtoCompileActionBuilder {
}
}
- private SpawnAction.Builder createAction() {
+ private SpawnAction.Builder createAction() throws MissingPrerequisiteException {
SpawnAction.Builder result =
new SpawnAction.Builder().addTransitiveInputs(supportData.getTransitiveImports());
@@ -222,7 +222,7 @@ public class ProtoCompileActionBuilder {
FilesToRunProvider compilerTarget =
ruleContext.getExecutablePrerequisite(":proto_compiler", RuleConfiguredTarget.Mode.HOST);
- if (ruleContext.hasErrors()) {
+ if (compilerTarget == null) {
throw new MissingPrerequisiteException();
}
@@ -246,20 +246,21 @@ public class ProtoCompileActionBuilder {
}
@Nullable
- private FilesToRunProvider getLangPluginTarget() {
+ private FilesToRunProvider getLangPluginTarget() throws MissingPrerequisiteException {
if (langPluginName == null) {
return null;
}
FilesToRunProvider result =
ruleContext.getExecutablePrerequisite(langPluginName, RuleConfiguredTarget.Mode.HOST);
- if (ruleContext.hasErrors()) {
+ if (result == null) {
throw new MissingPrerequisiteException();
}
return result;
}
/** Commandline generator for protoc invocations. */
- private CustomCommandLine.Builder createProtoCompilerCommandLine() {
+ private CustomCommandLine.Builder createProtoCompilerCommandLine()
+ throws MissingPrerequisiteException {
CustomCommandLine.Builder result = CustomCommandLine.builder();
if (langPluginName == null) {
@@ -351,7 +352,7 @@ public class ProtoCompileActionBuilder {
}
/** Signifies that a prerequisite could not be satisfied. */
- private static class MissingPrerequisiteException extends RuntimeException {}
+ private static class MissingPrerequisiteException extends Exception {}
public static void writeDescriptorSet(
RuleContext ruleContext,
@@ -421,8 +422,8 @@ public class ProtoCompileActionBuilder {
FilesToRunProvider compilerTarget =
ruleContext.getExecutablePrerequisite(":proto_compiler", RuleConfiguredTarget.Mode.HOST);
- if (ruleContext.hasErrors()) {
- throw new MissingPrerequisiteException();
+ if (compilerTarget == null) {
+ return;
}
result