Validate the outputs of transitions on build settings.
This means ensuring that all (non native) outputs of Starlark-defined transitions exist, are build settings, and are set to the correct type of value.
Wins along the way:
- properly propagate TransitionException through ConfiguredTargetFunction
- consolidate instances of COMMAND_LINE_OPTION_PREFIX
PiperOrigin-RevId: 239457521
diff --git a/src/main/java/com/google/devtools/build/lib/skyframe/ConfiguredTargetFunction.java b/src/main/java/com/google/devtools/build/lib/skyframe/ConfiguredTargetFunction.java
index d6c6995..5ee9ab4 100644
--- a/src/main/java/com/google/devtools/build/lib/skyframe/ConfiguredTargetFunction.java
+++ b/src/main/java/com/google/devtools/build/lib/skyframe/ConfiguredTargetFunction.java
@@ -395,6 +395,11 @@
throw new ConfiguredTargetFunctionException(
new ConfiguredValueCreationException(
cause.getMessage(), target.getLabel(), configuration));
+ } else if (e.getCause() instanceof TransitionException) {
+ TransitionException cause = (TransitionException) e.getCause();
+ env.getListener().handle(Event.error(cause.getMessage()));
+ throw new ConfiguredTargetFunctionException(
+ new ConfiguredValueCreationException(e.getMessage(), target.getLabel(), configuration));
} else {
// Unknown exception type.
throw new ConfiguredTargetFunctionException(