diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/main/java/com/google/devtools/build/lib/rules/AliasConfiguredTarget.java | 37 | ||||
-rw-r--r-- | src/test/java/com/google/devtools/build/lib/rules/AliasTest.java | 5 |
2 files changed, 17 insertions, 25 deletions
diff --git a/src/main/java/com/google/devtools/build/lib/rules/AliasConfiguredTarget.java b/src/main/java/com/google/devtools/build/lib/rules/AliasConfiguredTarget.java index 369976a5d6..42224f6d21 100644 --- a/src/main/java/com/google/devtools/build/lib/rules/AliasConfiguredTarget.java +++ b/src/main/java/com/google/devtools/build/lib/rules/AliasConfiguredTarget.java @@ -14,7 +14,6 @@ package com.google.devtools.build.lib.rules; import com.google.common.collect.ImmutableCollection; -import com.google.common.collect.ImmutableList; import com.google.common.collect.ImmutableMap; import com.google.devtools.build.lib.actions.Artifact; import com.google.devtools.build.lib.analysis.ConfiguredTarget; @@ -23,8 +22,6 @@ import com.google.devtools.build.lib.analysis.RuleContext; import com.google.devtools.build.lib.analysis.TransitiveInfoProvider; import com.google.devtools.build.lib.analysis.config.BuildConfiguration; import com.google.devtools.build.lib.cmdline.Label; -import com.google.devtools.build.lib.collect.nestedset.NestedSetBuilder; -import com.google.devtools.build.lib.collect.nestedset.Order; import com.google.devtools.build.lib.concurrent.ThreadSafety.Immutable; import com.google.devtools.build.lib.events.Location; import com.google.devtools.build.lib.packages.ClassObjectConstructor; @@ -53,11 +50,11 @@ public final class AliasConfiguredTarget implements ConfiguredTarget, ClassObjec public AliasConfiguredTarget( RuleContext ruleContext, - @Nullable ConfiguredTarget actual, + ConfiguredTarget actual, ImmutableMap<Class<? extends TransitiveInfoProvider>, TransitiveInfoProvider> overrides) { this.label = ruleContext.getLabel(); this.configuration = Preconditions.checkNotNull(ruleContext.getConfiguration()); - this.actual = actual; + this.actual = Preconditions.checkNotNull(actual); this.overrides = Preconditions.checkNotNull(overrides); } @@ -67,7 +64,7 @@ public final class AliasConfiguredTarget implements ConfiguredTarget, ClassObjec return provider.cast(overrides.get(provider)); } - return actual == null ? null : actual.getProvider(provider); + return actual.getProvider(provider); } @Override @@ -77,28 +74,28 @@ public final class AliasConfiguredTarget implements ConfiguredTarget, ClassObjec @Override public Object get(String providerKey) { - return actual == null ? null : actual.get(providerKey); + return actual.get(providerKey); } @Nullable @Override public SkylarkClassObject get(ClassObjectConstructor.Key providerKey) { - return actual == null ? null : actual.get(providerKey); + return actual.get(providerKey); } @Override public Object getIndex(Object key, Location loc) throws EvalException { - return actual == null ? null : actual.getIndex(key, loc); + return actual.getIndex(key, loc); } @Override public boolean containsKey(Object key, Location loc) throws EvalException { - return actual != null && actual.containsKey(key, loc); + return actual.containsKey(key, loc); } @Override public Target getTarget() { - return actual == null ? null : actual.getTarget(); + return actual.getTarget(); } @Override @@ -119,19 +116,14 @@ public final class AliasConfiguredTarget implements ConfiguredTarget, ClassObjec // A shortcut for files to build in Skylark. FileConfiguredTarget and RuleConfiguredTarget // always has FileProvider and Error- and PackageGroupConfiguredTarget-s shouldn't be // accessible in Skylark. - return SkylarkNestedSet.of(Artifact.class, actual == null - ? NestedSetBuilder.<Artifact>emptySet(Order.STABLE_ORDER) - : getProvider(FileProvider.class).getFilesToBuild()); + return SkylarkNestedSet.of(Artifact.class, getProvider(FileProvider.class).getFilesToBuild()); } - return actual == null ? null : actual.getValue(name); + return actual.getValue(name); } @Override public ImmutableCollection<String> getKeys() { - if (actual != null) { - return actual.getKeys(); - } - return ImmutableList.of(); + return actual.getKeys(); } @Override @@ -143,7 +135,6 @@ public final class AliasConfiguredTarget implements ConfiguredTarget, ClassObjec /** * Returns a target this target aliases. */ - @Nullable public ConfiguredTarget getActual() { return actual; } @@ -155,10 +146,6 @@ public final class AliasConfiguredTarget implements ConfiguredTarget, ClassObjec @Override public void repr(SkylarkPrinter printer) { - printer.append("<alias target " + label); - if (actual != null) { - printer.append(" of " + actual.getLabel()); - } - printer.append(">"); + printer.append("<alias target " + label + " of " + actual.getLabel() + ">"); } } diff --git a/src/test/java/com/google/devtools/build/lib/rules/AliasTest.java b/src/test/java/com/google/devtools/build/lib/rules/AliasTest.java index 029998968f..075d4e7c4c 100644 --- a/src/test/java/com/google/devtools/build/lib/rules/AliasTest.java +++ b/src/test/java/com/google/devtools/build/lib/rules/AliasTest.java @@ -247,4 +247,9 @@ public class AliasTest extends BuildViewTestCase { useConfiguration("--crosstool_top=//a:cc"); getConfiguredTarget("//a:a"); } + + @Test + public void testNoActual() throws Exception { + checkError("a", "a", "missing value for mandatory attribute 'actual'", "alias(name='a')"); + } } |