diff --git a/src/main/java/com/google/devtools/build/lib/analysis/ConfiguredTarget.java b/src/main/java/com/google/devtools/build/lib/analysis/ConfiguredTarget.java index a53fea14973223..19da56f205364c 100644 --- a/src/main/java/com/google/devtools/build/lib/analysis/ConfiguredTarget.java +++ b/src/main/java/com/google/devtools/build/lib/analysis/ConfiguredTarget.java @@ -39,6 +39,9 @@ public interface ConfiguredTarget extends TransitiveInfoCollection, Structure { /** All ConfiguredTargets have a "label" field. */ String LABEL_FIELD = "label"; + /** All ConfiguredTargets have an "alias_label" field. */ + String ALIAS_LABEL_FIELD = "alias_label"; + /** All ConfiguredTargets have a "files" field. */ String FILES_FIELD = "files"; diff --git a/src/main/java/com/google/devtools/build/lib/analysis/configuredtargets/AbstractConfiguredTarget.java b/src/main/java/com/google/devtools/build/lib/analysis/configuredtargets/AbstractConfiguredTarget.java index 0c3330d0f5586c..8d1515a651d5ab 100644 --- a/src/main/java/com/google/devtools/build/lib/analysis/configuredtargets/AbstractConfiguredTarget.java +++ b/src/main/java/com/google/devtools/build/lib/analysis/configuredtargets/AbstractConfiguredTarget.java @@ -66,6 +66,7 @@ public abstract class AbstractConfiguredTarget implements ConfiguredTarget, Visi // attributed to normal user-specified providers). private static final ImmutableSet SPECIAL_FIELD_NAMES = ImmutableSet.of( + ALIAS_LABEL_FIELD, LABEL_FIELD, FILES_FIELD, DEFAULT_RUNFILES_FIELD, @@ -141,6 +142,9 @@ public Object getValue(String name) { switch (name) { case LABEL_FIELD: return getLabel(); + case ALIAS_LABEL_FIELD: + // Overridden in AliasConfiguredTarget. + return Starlark.NONE; case ACTIONS_FIELD_NAME: // Depending on subclass, the 'actions' field will either be unsupported or of type // java.util.List, which needs to be converted to Sequence before being returned. 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 14711711471c24..ab4a9033169844 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 @@ -163,15 +163,19 @@ public BuildConfigurationKey getConfigurationKey() { @Override public Object getValue(String name) { - if (name.equals(LABEL_FIELD)) { - return getLabel(); - } else if (name.equals(FILES_FIELD)) { - // A shortcut for files to build in Starlark. FileConfiguredTarget and RuleConfiguredTarget - // always has FileProvider and Error- and PackageGroupConfiguredTarget-s shouldn't be - // accessible in Starlark. - return Depset.of(Artifact.class, getProvider(FileProvider.class).getFilesToBuild()); + switch (name) { + case LABEL_FIELD: + return getLabel(); + case ALIAS_LABEL_FIELD: + return getOriginalLabel(); + case FILES_FIELD: + // A shortcut for files to build in Starlark. FileConfiguredTarget and RuleConfiguredTarget + // always has FileProvider and Error- and PackageGroupConfiguredTarget-s shouldn't be + // accessible in Starlark. + return Depset.of(Artifact.class, getProvider(FileProvider.class).getFilesToBuild()); + default: + return actual.getValue(name); } - return actual.getValue(name); } @Override diff --git a/src/main/java/com/google/devtools/build/lib/starlarkbuildapi/core/TransitiveInfoCollectionApi.java b/src/main/java/com/google/devtools/build/lib/starlarkbuildapi/core/TransitiveInfoCollectionApi.java index 3b7485c5b79712..ecbe5312405939 100644 --- a/src/main/java/com/google/devtools/build/lib/starlarkbuildapi/core/TransitiveInfoCollectionApi.java +++ b/src/main/java/com/google/devtools/build/lib/starlarkbuildapi/core/TransitiveInfoCollectionApi.java @@ -33,7 +33,14 @@ + "