aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/main/java/com/google/devtools/build/lib/packages/Attribute.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/java/com/google/devtools/build/lib/packages/Attribute.java')
-rw-r--r--src/main/java/com/google/devtools/build/lib/packages/Attribute.java19
1 files changed, 17 insertions, 2 deletions
diff --git a/src/main/java/com/google/devtools/build/lib/packages/Attribute.java b/src/main/java/com/google/devtools/build/lib/packages/Attribute.java
index 9877ea4054..d0ed2195f3 100644
--- a/src/main/java/com/google/devtools/build/lib/packages/Attribute.java
+++ b/src/main/java/com/google/devtools/build/lib/packages/Attribute.java
@@ -150,6 +150,12 @@ public final class Attribute implements Comparable<Attribute> {
* A configuration transition.
*/
public interface Transition {
+ /**
+ * Does this transition switch to a "host" configuration?
+ */
+ default boolean isHostTransition() {
+ return false;
+ }
}
/**
@@ -171,13 +177,22 @@ public final class Attribute implements Comparable<Attribute> {
/**
* Declaration how the configuration should change when following a label or label list attribute.
+ *
+ * <p>Do not add to this. Use {@link
+ * com.google.devtools.build.lib.analysis.config.PatchTransition} or {@link SplitTransition}
+ * instead.
*/
public enum ConfigurationTransition implements Transition {
/** No transition, i.e., the same configuration as the current. */
NONE,
/** Transition to the host configuration. */
- HOST,
+ HOST {
+ @Override
+ public boolean isHostTransition() {
+ return true;
+ }
+ },
/** Transition to a null configuration (applies to, e.g., input files). */
NULL,
@@ -1860,7 +1875,7 @@ public final class Attribute implements Comparable<Attribute> {
if (isLateBound(name)) {
LateBoundDefault<?, ?> lateBoundDefault = (LateBoundDefault<?, ?>) defaultValue;
Preconditions.checkArgument(!lateBoundDefault.useHostConfiguration()
- || (configTransition == ConfigurationTransition.HOST),
+ || (configTransition.isHostTransition()),
"a late bound default value using the host configuration must use the host transition");
}