aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/main/java/com/google/devtools/build/lib/skyframe/TargetPatternFunction.java
diff options
context:
space:
mode:
authorGravatar Nathan Harmata <nharmata@google.com>2015-04-22 20:10:48 +0000
committerGravatar Laszlo Csomor <laszlocsomor@google.com>2015-04-23 09:18:16 +0000
commit3fae3664ea09d36d40d9ad271f02c452f4a94cea (patch)
tree584e76ae8d41761c38733d5cd7b5b949f0dd31c3 /src/main/java/com/google/devtools/build/lib/skyframe/TargetPatternFunction.java
parentcaf6732d122e7993dff277924f0a75af14369603 (diff)
Similar to TargetMarkerValue, have TargetPatternValue *not* embed Targets.
[]TESTED: See -- MOS_MIGRATED_REVID=91816612
Diffstat (limited to 'src/main/java/com/google/devtools/build/lib/skyframe/TargetPatternFunction.java')
-rw-r--r--src/main/java/com/google/devtools/build/lib/skyframe/TargetPatternFunction.java16
1 files changed, 15 insertions, 1 deletions
diff --git a/src/main/java/com/google/devtools/build/lib/skyframe/TargetPatternFunction.java b/src/main/java/com/google/devtools/build/lib/skyframe/TargetPatternFunction.java
index 9322998c13..1f4a91e08a 100644
--- a/src/main/java/com/google/devtools/build/lib/skyframe/TargetPatternFunction.java
+++ b/src/main/java/com/google/devtools/build/lib/skyframe/TargetPatternFunction.java
@@ -13,10 +13,14 @@
// limitations under the License.
package com.google.devtools.build.lib.skyframe;
+import com.google.common.base.Preconditions;
+import com.google.devtools.build.lib.cmdline.ResolvedTargets;
import com.google.devtools.build.lib.cmdline.TargetParsingException;
import com.google.devtools.build.lib.cmdline.TargetPattern;
+import com.google.devtools.build.lib.packages.Target;
import com.google.devtools.build.lib.pkgcache.PathPackageLocator;
import com.google.devtools.build.lib.skyframe.EnvironmentBackedRecursivePackageProvider.MissingDepException;
+import com.google.devtools.build.lib.syntax.Label;
import com.google.devtools.build.skyframe.SkyFunction;
import com.google.devtools.build.skyframe.SkyFunctionException;
import com.google.devtools.build.skyframe.SkyKey;
@@ -44,6 +48,7 @@ public class TargetPatternFunction implements SkyFunction {
TargetPatternValue.TargetPattern patternKey =
((TargetPatternValue.TargetPattern) key.argument());
TargetPattern.Parser parser = new TargetPattern.Parser(patternKey.getOffset());
+ ResolvedTargets<Target> resolvedTargets = null;
try {
EnvironmentBackedRecursivePackageProvider provider =
new EnvironmentBackedRecursivePackageProvider(env);
@@ -51,7 +56,7 @@ public class TargetPatternFunction implements SkyFunction {
new RecursivePackageProviderBackedTargetPatternResolver(provider, env.getListener(),
patternKey.getPolicy(), pkgPath.get());
TargetPattern resolvedPattern = parser.parse(patternKey.getPattern());
- return new TargetPatternValue(resolvedPattern.eval(resolver));
+ resolvedTargets = resolvedPattern.eval(resolver);
} catch (TargetParsingException e) {
throw new TargetPatternFunctionException(e);
} catch (MissingDepException e) {
@@ -62,6 +67,15 @@ public class TargetPatternFunction implements SkyFunction {
// implementations that are unconcerned with MissingDepExceptions.
return null;
}
+ Preconditions.checkNotNull(resolvedTargets, key);
+ ResolvedTargets.Builder<Label> resolvedLabelsBuilder = ResolvedTargets.builder();
+ for (Target target : resolvedTargets.getTargets()) {
+ resolvedLabelsBuilder.add(target.getLabel());
+ }
+ for (Target target : resolvedTargets.getFilteredTargets()) {
+ resolvedLabelsBuilder.remove(target.getLabel());
+ }
+ return new TargetPatternValue(resolvedLabelsBuilder.build());
}
@Nullable