diff options
author | Googler <noreply@google.com> | 2018-08-10 09:03:26 -0700 |
---|---|---|
committer | Copybara-Service <copybara-piper@google.com> | 2018-08-10 09:04:58 -0700 |
commit | 3df620a1ef16e81780d7af40cd2dfa3251d40668 (patch) | |
tree | f1bd2797215caa3c0e8c6693b32211c98cdbf9f2 /src/main/java/com/google/devtools/build/lib/skyframe/TargetPatternPhaseFunction.java | |
parent | fc0654ff3798309c8b412220b1202f12059fd1ff (diff) |
Persist mappings from original command line patterns to expanded labels in TargetParsingCompleteEvent.
PiperOrigin-RevId: 208217102
Diffstat (limited to 'src/main/java/com/google/devtools/build/lib/skyframe/TargetPatternPhaseFunction.java')
-rw-r--r-- | src/main/java/com/google/devtools/build/lib/skyframe/TargetPatternPhaseFunction.java | 23 |
1 files changed, 22 insertions, 1 deletions
diff --git a/src/main/java/com/google/devtools/build/lib/skyframe/TargetPatternPhaseFunction.java b/src/main/java/com/google/devtools/build/lib/skyframe/TargetPatternPhaseFunction.java index 955649065e..afd09b5781 100644 --- a/src/main/java/com/google/devtools/build/lib/skyframe/TargetPatternPhaseFunction.java +++ b/src/main/java/com/google/devtools/build/lib/skyframe/TargetPatternPhaseFunction.java @@ -13,10 +13,13 @@ // limitations under the License. package com.google.devtools.build.lib.skyframe; +import static com.google.common.collect.ImmutableSetMultimap.flatteningToImmutableSetMultimap; + import com.google.auto.value.AutoValue; import com.google.common.base.Preconditions; import com.google.common.base.Predicates; import com.google.common.collect.ImmutableSet; +import com.google.common.collect.ImmutableSetMultimap; import com.google.common.collect.Iterables; import com.google.common.collect.Sets; import com.google.devtools.build.lib.cmdline.Label; @@ -218,7 +221,8 @@ final class TargetPatternPhaseFunction implements SkyFunction { testFilteredTargets, options.getTargetPatterns(), expandedTargets.getTargets(), - failedPatterns)); + failedPatterns, + mapOriginalPatternsToLabels(expandedPatterns, targets.getTargets()))); env.getListener() .post(new LoadingPhaseCompleteEvent(result.getTargetLabels(), removedTargetLabels)); return result; @@ -436,6 +440,23 @@ final class TargetPatternPhaseFunction implements SkyFunction { return testTargetsBuilder.build(); } + private static ImmutableSetMultimap<String, Label> mapOriginalPatternsToLabels( + List<ExpandedPattern> expandedPatterns, Set<Target> includedTargets) { + return expandedPatterns + .stream() + .filter(expansion -> !expansion.pattern().isNegative()) + .collect( + flatteningToImmutableSetMultimap( + expansion -> expansion.pattern().getPattern(), + expansion -> + expansion + .resolvedTargets() + .getTargets() + .stream() + .filter(includedTargets::contains) + .map(Target::getLabel))); + } + @Nullable @Override public String extractTag(SkyKey skyKey) { |