diff options
author | 2018-06-12 04:56:24 -0700 | |
---|---|---|
committer | 2018-06-12 04:57:48 -0700 | |
commit | ede315264b2191baf76d4cb76bbcf5db85da2630 (patch) | |
tree | fa8c1c7435d3893f014e7c93cbfac9ed815faf49 /src/main/java/com/google/devtools/build/lib/skyframe/SkyframeTargetPatternEvaluator.java | |
parent | 6abc7497941dd81c27674d6636090867ea13101f (diff) |
Split TargetPatternEvaluator into two interfaces
- the TargetPatternPreloader is still used for query in all its forms
- the remaining TargetPatternEvaluator part is no longer used except in tests
- also make both implementations stateless and pass the offset to the methods
instead; note that they both modify the underlying skyframe graph, so there
are side effects to the calls even if there's no direct state anymore
The intent is to migrate the relevant tests to LoadingPhaseRunnerTest (which
could also now be renamed since it's not doing a loading phase), and then
delete the TargetPatternEvaluator interface.
This depends on the previous commit that removed the last direct use of TPE
from an internal command.
PiperOrigin-RevId: 200198067
Diffstat (limited to 'src/main/java/com/google/devtools/build/lib/skyframe/SkyframeTargetPatternEvaluator.java')
-rw-r--r-- | src/main/java/com/google/devtools/build/lib/skyframe/SkyframeTargetPatternEvaluator.java | 44 |
1 files changed, 20 insertions, 24 deletions
diff --git a/src/main/java/com/google/devtools/build/lib/skyframe/SkyframeTargetPatternEvaluator.java b/src/main/java/com/google/devtools/build/lib/skyframe/SkyframeTargetPatternEvaluator.java index 4c8cf80a27..01d68f4cc7 100644 --- a/src/main/java/com/google/devtools/build/lib/skyframe/SkyframeTargetPatternEvaluator.java +++ b/src/main/java/com/google/devtools/build/lib/skyframe/SkyframeTargetPatternEvaluator.java @@ -27,6 +27,7 @@ import com.google.devtools.build.lib.pkgcache.FilteringPolicies; import com.google.devtools.build.lib.pkgcache.FilteringPolicy; import com.google.devtools.build.lib.pkgcache.ParsingFailedEvent; import com.google.devtools.build.lib.pkgcache.TargetPatternEvaluator; +import com.google.devtools.build.lib.pkgcache.TargetPatternPreloader; import com.google.devtools.build.lib.skyframe.TargetPatternValue.TargetPatternKey; import com.google.devtools.build.lib.skyframe.TargetPatternValue.TargetPatternSkyKeyOrException; import com.google.devtools.build.lib.vfs.PathFragment; @@ -40,47 +41,38 @@ import java.util.Map; /** * Skyframe-based target pattern parsing. */ -final class SkyframeTargetPatternEvaluator implements TargetPatternEvaluator { +final class SkyframeTargetPatternEvaluator + implements TargetPatternEvaluator, TargetPatternPreloader { private final SkyframeExecutor skyframeExecutor; - private String offset = ""; SkyframeTargetPatternEvaluator(SkyframeExecutor skyframeExecutor) { this.skyframeExecutor = skyframeExecutor; } + // Only used by AnalyzeCommand at this point. All build commands use SkyframeLoadingPhaseRunner. @Override public ResolvedTargets<Target> parseTargetPatternList( + PathFragment relativeWorkingDirectory, ExtendedEventHandler eventHandler, List<String> targetPatterns, FilteringPolicy policy, boolean keepGoing) throws TargetParsingException, InterruptedException { return parseTargetPatternList( - offset, eventHandler, ImmutableList.copyOf(targetPatterns), policy, keepGoing); - } - - @Override - public ResolvedTargets<Target> parseTargetPattern( - ExtendedEventHandler eventHandler, String pattern, boolean keepGoing) - throws TargetParsingException, InterruptedException { - return parseTargetPatternList(eventHandler, ImmutableList.of(pattern), - DEFAULT_FILTERING_POLICY, keepGoing); - } - - @Override - public void updateOffset(PathFragment relativeWorkingDirectory) { - offset = relativeWorkingDirectory.getPathString(); - } - - @Override - public String getOffset() { - return offset; + relativeWorkingDirectory.getPathString(), + eventHandler, + ImmutableList.copyOf(targetPatterns), + policy, + keepGoing); } @Override public Map<String, ResolvedTargets<Target>> preloadTargetPatterns( - ExtendedEventHandler eventHandler, Collection<String> patterns, boolean keepGoing) - throws TargetParsingException, InterruptedException { + ExtendedEventHandler eventHandler, + PathFragment relativeWorkingDirectory, + Collection<String> patterns, + boolean keepGoing) + throws TargetParsingException, InterruptedException { // TODO(bazel-team): This is used only in "blaze query". There are plans to dramatically change // how query works on Skyframe, in which case this method is likely to go away. ImmutableList.Builder<TargetPatternsAndKeysAndResultBuilder> @@ -91,7 +83,11 @@ final class SkyframeTargetPatternEvaluator implements TargetPatternEvaluator { targetPatternsAndKeysAndResultListBuilder.add(new TargetPatternsAndKeysAndResultBuilder( singletonPatternList, getTargetPatternKeys( - offset, eventHandler, singletonPatternList, policy, keepGoing), + relativeWorkingDirectory.getPathString(), + eventHandler, + singletonPatternList, + policy, + keepGoing), createTargetPatternEvaluatorUtil(policy, eventHandler, keepGoing))); } |