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.java33
1 files changed, 8 insertions, 25 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 b736613863..38fdda7317 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
@@ -29,8 +29,8 @@ import com.google.common.collect.Iterables;
import com.google.common.collect.Ordering;
import com.google.common.collect.Sets;
import com.google.devtools.build.lib.analysis.TransitiveInfoProvider;
+import com.google.devtools.build.lib.analysis.config.transitions.SplitTransition;
import com.google.devtools.build.lib.analysis.config.transitions.Transition;
-import com.google.devtools.build.lib.concurrent.ThreadSafety;
import com.google.devtools.build.lib.events.EventHandler;
import com.google.devtools.build.lib.events.Location;
import com.google.devtools.build.lib.packages.RuleClass.Builder.RuleClassNamePredicate;
@@ -148,23 +148,6 @@ public final class Attribute implements Comparable<Attribute> {
}
/**
- * A configuration split transition; this should be used to transition to multiple configurations
- * simultaneously. Note that the corresponding rule implementations must have special support to
- * handle this.
- *
- * <p>{@code T} must always be {@code BuildOptions}, but it can't be defined that way because
- * the symbol isn't available here.
- */
- // TODO(bazel-team): Serializability constraints?
- @ThreadSafety.Immutable
- public interface SplitTransition<T> extends Transition {
- /**
- * Return the list of {@code BuildOptions} after splitting; empty if not applicable.
- */
- List<T> split(T buildOptions);
- }
-
- /**
* Declaration how the configuration should change when following a label or label list attribute.
*
* <p>Do not add to this. Use {@link
@@ -316,7 +299,7 @@ public final class Attribute implements Comparable<Attribute> {
/**
* Returns the {@link SplitTransition} given the attribute mapper of the originating rule.
*/
- SplitTransition<?> apply(AttributeMap attributeMap);
+ SplitTransition apply(AttributeMap attributeMap);
}
/**
@@ -325,14 +308,14 @@ public final class Attribute implements Comparable<Attribute> {
*/
private static class BasicSplitTransitionProvider implements SplitTransitionProvider {
- private final SplitTransition<?> splitTransition;
+ private final SplitTransition splitTransition;
- BasicSplitTransitionProvider(SplitTransition<?> splitTransition) {
+ BasicSplitTransitionProvider(SplitTransition splitTransition) {
this.splitTransition = splitTransition;
}
@Override
- public SplitTransition<?> apply(AttributeMap attributeMap) {
+ public SplitTransition apply(AttributeMap attributeMap) {
return splitTransition;
}
}
@@ -533,7 +516,7 @@ public final class Attribute implements Comparable<Attribute> {
* Defines the configuration transition for this attribute. Defaults to
* {@code NONE}.
*/
- public Builder<TYPE> cfg(SplitTransition<?> configTransition) {
+ public Builder<TYPE> cfg(SplitTransition configTransition) {
return cfg(new BasicSplitTransitionProvider(Preconditions.checkNotNull(configTransition)));
}
@@ -547,7 +530,7 @@ public final class Attribute implements Comparable<Attribute> {
Preconditions.checkArgument(configTransition != ConfigurationTransition.SPLIT,
"split transitions must be defined using the SplitTransition object");
if (configTransition instanceof SplitTransition) {
- return cfg((SplitTransition<?>) configTransition);
+ return cfg((SplitTransition) configTransition);
} else {
this.configTransition = configTransition;
return this;
@@ -1971,7 +1954,7 @@ public final class Attribute implements Comparable<Attribute> {
* @return a SplitTransition<BuildOptions> object
* @throws IllegalStateException if {@link #hasSplitConfigurationTransition} is not true
*/
- public SplitTransition<?> getSplitTransition(AttributeMap attributeMapper) {
+ public SplitTransition getSplitTransition(AttributeMap attributeMapper) {
Preconditions.checkState(hasSplitConfigurationTransition());
return splitTransitionProvider.apply(attributeMapper);
}