diff options
Diffstat (limited to 'src/main/java/com/google/devtools/build/lib/analysis')
4 files changed, 51 insertions, 4 deletions
diff --git a/src/main/java/com/google/devtools/build/lib/analysis/ConfiguredTargetFactory.java b/src/main/java/com/google/devtools/build/lib/analysis/ConfiguredTargetFactory.java index e1c0defd2a..1a2488f881 100644 --- a/src/main/java/com/google/devtools/build/lib/analysis/ConfiguredTargetFactory.java +++ b/src/main/java/com/google/devtools/build/lib/analysis/ConfiguredTargetFactory.java @@ -35,6 +35,7 @@ import com.google.devtools.build.lib.events.EventHandler; import com.google.devtools.build.lib.packages.AspectParameters; import com.google.devtools.build.lib.packages.Attribute; import com.google.devtools.build.lib.packages.ConstantRuleVisibility; +import com.google.devtools.build.lib.packages.EnvironmentGroup; import com.google.devtools.build.lib.packages.InputFile; import com.google.devtools.build.lib.packages.OutputFile; import com.google.devtools.build.lib.packages.PackageGroup; @@ -201,6 +202,8 @@ public final class ConfiguredTargetFactory { } else if (target instanceof PackageGroup) { PackageGroup packageGroup = (PackageGroup) target; return new PackageGroupConfiguredTarget(targetContext, packageGroup); + } else if (target instanceof EnvironmentGroup) { + return new EnvironmentGroupConfiguredTarget(targetContext, (EnvironmentGroup) target); } else { throw new AssertionError("Unexpected target class: " + target.getClass().getName()); } diff --git a/src/main/java/com/google/devtools/build/lib/analysis/EnvironmentGroupConfiguredTarget.java b/src/main/java/com/google/devtools/build/lib/analysis/EnvironmentGroupConfiguredTarget.java new file mode 100644 index 0000000000..41741c7201 --- /dev/null +++ b/src/main/java/com/google/devtools/build/lib/analysis/EnvironmentGroupConfiguredTarget.java @@ -0,0 +1,46 @@ +// Copyright 2015 The Bazel Authors. All rights reserved. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +package com.google.devtools.build.lib.analysis; + +import com.google.common.base.Preconditions; +import com.google.common.collect.UnmodifiableIterator; +import com.google.devtools.build.lib.packages.EnvironmentGroup; + +/** + * Dummy ConfiguredTarget for environment groups. Contains no functionality, since + * environment groups are not really first-class Targets. + */ +public final class EnvironmentGroupConfiguredTarget extends AbstractConfiguredTarget { + EnvironmentGroupConfiguredTarget(TargetContext targetContext, EnvironmentGroup envGroup) { + super(targetContext); + Preconditions.checkArgument(targetContext.getConfiguration() == null); + } + + @Override + public EnvironmentGroup getTarget() { + return (EnvironmentGroup) super.getTarget(); + } + + @Override + public Object get(String providerKey) { + // No providers. + return null; + } + + @Override + public UnmodifiableIterator<TransitiveInfoProvider> iterator() { + throw new UnsupportedOperationException(); + } +} diff --git a/src/main/java/com/google/devtools/build/lib/analysis/PackageGroupConfiguredTarget.java b/src/main/java/com/google/devtools/build/lib/analysis/PackageGroupConfiguredTarget.java index c238b74ea5..d0382dc967 100644 --- a/src/main/java/com/google/devtools/build/lib/analysis/PackageGroupConfiguredTarget.java +++ b/src/main/java/com/google/devtools/build/lib/analysis/PackageGroupConfiguredTarget.java @@ -73,6 +73,6 @@ public final class PackageGroupConfiguredTarget extends AbstractConfiguredTarget @Override public UnmodifiableIterator<TransitiveInfoProvider> iterator() { - throw new IllegalStateException(); + throw new UnsupportedOperationException(); } } diff --git a/src/main/java/com/google/devtools/build/lib/analysis/config/BuildConfigurationCollection.java b/src/main/java/com/google/devtools/build/lib/analysis/config/BuildConfigurationCollection.java index 6fada4c226..82d8e49bb9 100644 --- a/src/main/java/com/google/devtools/build/lib/analysis/config/BuildConfigurationCollection.java +++ b/src/main/java/com/google/devtools/build/lib/analysis/config/BuildConfigurationCollection.java @@ -23,8 +23,6 @@ import com.google.devtools.build.lib.concurrent.ThreadSafety.ThreadSafe; import com.google.devtools.build.lib.packages.Attribute; import com.google.devtools.build.lib.packages.Attribute.SplitTransition; import com.google.devtools.build.lib.packages.Attribute.Transition; -import com.google.devtools.build.lib.packages.InputFile; -import com.google.devtools.build.lib.packages.PackageGroup; import com.google.devtools.build.lib.packages.Rule; import com.google.devtools.build.lib.packages.Target; @@ -77,7 +75,7 @@ public final class BuildConfigurationCollection { public static BuildConfiguration configureTopLevelTarget(BuildConfiguration topLevelConfiguration, Target toTarget) { - if (toTarget instanceof InputFile || toTarget instanceof PackageGroup) { + if (!toTarget.isConfigurable()) { return null; } return topLevelConfiguration.getTransitions().toplevelConfigurationHook(toTarget); |