diff options
author | 2016-12-16 16:52:37 +0000 | |
---|---|---|
committer | 2016-12-16 17:08:09 +0000 | |
commit | 1575652972d80f224fb3f7398eef3439e4f5a5dd (patch) | |
tree | 419932b5b7e4379331953aa41e3b9a04b871f9f0 /src/main/java/com/google/devtools/build/lib/analysis/ConfiguredTargetFactory.java | |
parent | bb984fd26f0fc9b519eb11fe330852f8d1b708a7 (diff) |
Names of extra-action protos now take into account all aspect names.
If an Aspect registered an action that an extra-action is
shadowing, its name is used when creating the extra-action's ID and
name.
Since recently, an aspect can see other aspects applied to the same
target. This CL record the names of other aspects applied to the target
as well, disambiguating the action owners.
--
PiperOrigin-RevId: 142264153
MOS_MIGRATED_REVID=142264153
Diffstat (limited to 'src/main/java/com/google/devtools/build/lib/analysis/ConfiguredTargetFactory.java')
-rw-r--r-- | src/main/java/com/google/devtools/build/lib/analysis/ConfiguredTargetFactory.java | 19 |
1 files changed, 15 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 fdc0c74684..11d03fa117 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 @@ -14,7 +14,11 @@ package com.google.devtools.build.lib.analysis; +import static com.google.common.collect.Iterables.transform; + +import com.google.common.base.Function; import com.google.common.base.Joiner; +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.actions.ArtifactFactory; @@ -32,6 +36,7 @@ import com.google.devtools.build.lib.concurrent.ThreadSafety.ThreadSafe; import com.google.devtools.build.lib.events.Event; import com.google.devtools.build.lib.events.EventHandler; import com.google.devtools.build.lib.packages.Aspect; +import com.google.devtools.build.lib.packages.AspectDescriptor; import com.google.devtools.build.lib.packages.Attribute; import com.google.devtools.build.lib.packages.ConfigurationFragmentPolicy; import com.google.devtools.build.lib.packages.ConfigurationFragmentPolicy.MissingFragmentPolicy; @@ -227,8 +232,7 @@ public final class ConfiguredTargetFactory { new RuleContext.Builder( env, rule, - null, - null, + ImmutableList.<AspectDescriptor>of(), configuration, hostConfiguration, ruleClassProvider.getPrerequisiteValidator(), @@ -304,6 +308,13 @@ public final class ConfiguredTargetFactory { return result.toString(); } + private static final Function<Aspect, AspectDescriptor> ASPECT_TO_DESCRIPTOR = + new Function<Aspect, AspectDescriptor>() { + @Override + public AspectDescriptor apply(Aspect aspect) { + return aspect.getDescriptor(); + } + }; /** * Constructs an {@link ConfiguredAspect}. Returns null if an error occurs; in that case, * {@code aspectFactory} should call one of the error reporting methods of {@link RuleContext}. @@ -311,6 +322,7 @@ public final class ConfiguredTargetFactory { public ConfiguredAspect createAspect( AnalysisEnvironment env, ConfiguredTarget associatedTarget, + ImmutableList<Aspect> aspectPath, ConfiguredAspectFactory aspectFactory, Aspect aspect, OrderedSetMultimap<Attribute, ConfiguredTarget> prerequisiteMap, @@ -321,8 +333,7 @@ public final class ConfiguredTargetFactory { RuleContext.Builder builder = new RuleContext.Builder( env, associatedTarget.getTarget().getAssociatedRule(), - aspect.getAspectClass().getName(), - aspect.getParameters(), + ImmutableList.copyOf(transform(aspectPath, ASPECT_TO_DESCRIPTOR)), aspectConfiguration, hostConfiguration, ruleClassProvider.getPrerequisiteValidator(), |