Split AnalysisResult into a top-level class

PiperOrigin-RevId: 200363345
diff --git a/src/main/java/com/google/devtools/build/lib/analysis/AnalysisResult.java b/src/main/java/com/google/devtools/build/lib/analysis/AnalysisResult.java
new file mode 100644
index 0000000..6239328
--- /dev/null
+++ b/src/main/java/com/google/devtools/build/lib/analysis/AnalysisResult.java
@@ -0,0 +1,156 @@
+// Copyright 2018 The Bazel Authors. All rights reserved.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//    http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+package com.google.devtools.build.lib.analysis;
+
+import com.google.common.collect.ImmutableList;
+import com.google.common.collect.ImmutableSet;
+import com.google.devtools.build.lib.actions.ActionGraph;
+import com.google.devtools.build.lib.actions.Artifact;
+import com.google.devtools.build.lib.actions.PackageRoots;
+import com.google.devtools.build.lib.skyframe.AspectValue;
+import java.util.Collection;
+import java.util.List;
+import javax.annotation.Nullable;
+
+/**
+ * Return value for {@link com.google.devtools.build.lib.buildtool.AnalysisPhaseRunner}.
+ */
+public final class AnalysisResult {
+  private final ImmutableSet<ConfiguredTarget> targetsToBuild;
+  @Nullable private final ImmutableList<ConfiguredTarget> targetsToTest;
+  private final ImmutableSet<ConfiguredTarget> targetsToSkip;
+  @Nullable private final String error;
+  private final ActionGraph actionGraph;
+  private final ImmutableSet<Artifact> artifactsToBuild;
+  private final ImmutableSet<ConfiguredTarget> parallelTests;
+  private final ImmutableSet<ConfiguredTarget> exclusiveTests;
+  @Nullable private final TopLevelArtifactContext topLevelContext;
+  private final ImmutableSet<AspectValue> aspects;
+  private final PackageRoots packageRoots;
+  private final String workspaceName;
+  private final List<TargetAndConfiguration> topLevelTargetsWithConfigs;
+
+  AnalysisResult(
+      Collection<ConfiguredTarget> targetsToBuild,
+      ImmutableSet<AspectValue> aspects,
+      Collection<ConfiguredTarget> targetsToTest,
+      Collection<ConfiguredTarget> targetsToSkip,
+      @Nullable String error,
+      ActionGraph actionGraph,
+      Collection<Artifact> artifactsToBuild,
+      Collection<ConfiguredTarget> parallelTests,
+      Collection<ConfiguredTarget> exclusiveTests,
+      TopLevelArtifactContext topLevelContext,
+      PackageRoots packageRoots,
+      String workspaceName,
+      List<TargetAndConfiguration> topLevelTargetsWithConfigs) {
+    this.targetsToBuild = ImmutableSet.copyOf(targetsToBuild);
+    this.aspects = aspects;
+    this.targetsToTest = targetsToTest == null ? null : ImmutableList.copyOf(targetsToTest);
+    this.targetsToSkip = ImmutableSet.copyOf(targetsToSkip);
+    this.error = error;
+    this.actionGraph = actionGraph;
+    this.artifactsToBuild = ImmutableSet.copyOf(artifactsToBuild);
+    this.parallelTests = ImmutableSet.copyOf(parallelTests);
+    this.exclusiveTests = ImmutableSet.copyOf(exclusiveTests);
+    this.topLevelContext = topLevelContext;
+    this.packageRoots = packageRoots;
+    this.workspaceName = workspaceName;
+    this.topLevelTargetsWithConfigs = topLevelTargetsWithConfigs;
+  }
+
+  /**
+   * Returns configured targets to build.
+   */
+  public ImmutableSet<ConfiguredTarget> getTargetsToBuild() {
+    return targetsToBuild;
+  }
+
+  /** @see PackageRoots */
+  public PackageRoots getPackageRoots() {
+    return packageRoots;
+  }
+
+  /**
+   * Returns aspects of configured targets to build.
+   *
+   * <p>If this list is empty, build the targets returned by {@code getTargetsToBuild()}.
+   * Otherwise, only build these aspects of the targets returned by {@code getTargetsToBuild()}.
+   */
+  public ImmutableSet<AspectValue> getAspects() {
+    return aspects;
+  }
+
+  /**
+   * Returns the configured targets to run as tests, or {@code null} if testing was not
+   * requested (e.g. "build" command rather than "test" command).
+   */
+  @Nullable
+  public Collection<ConfiguredTarget> getTargetsToTest() {
+    return targetsToTest;
+  }
+
+  /**
+   * Returns the configured targets that should not be executed because they're not
+   * platform-compatible with the current build.
+   *
+   * <p>For example: tests that aren't intended for the designated CPU.
+   */
+  public ImmutableSet<ConfiguredTarget> getTargetsToSkip() {
+    return targetsToSkip;
+  }
+
+  public ImmutableSet<Artifact> getAdditionalArtifactsToBuild() {
+    return artifactsToBuild;
+  }
+
+  public ImmutableSet<ConfiguredTarget> getExclusiveTests() {
+    return exclusiveTests;
+  }
+
+  public ImmutableSet<ConfiguredTarget> getParallelTests() {
+    return parallelTests;
+  }
+
+  /**
+   * Returns an error description (if any).
+   */
+  @Nullable public String getError() {
+    return error;
+  }
+
+  public boolean hasError() {
+    return error != null;
+  }
+
+  /**
+   * Returns the action graph.
+   */
+  public ActionGraph getActionGraph() {
+    return actionGraph;
+  }
+
+  public TopLevelArtifactContext getTopLevelContext() {
+    return topLevelContext;
+  }
+
+  public String getWorkspaceName() {
+    return workspaceName;
+  }
+
+  public List<TargetAndConfiguration> getTopLevelTargetsWithConfigs() {
+    return topLevelTargetsWithConfigs;
+  }
+}
diff --git a/src/main/java/com/google/devtools/build/lib/analysis/BuildView.java b/src/main/java/com/google/devtools/build/lib/analysis/BuildView.java
index a78ccea..002c1fc 100644
--- a/src/main/java/com/google/devtools/build/lib/analysis/BuildView.java
+++ b/src/main/java/com/google/devtools/build/lib/analysis/BuildView.java
@@ -304,137 +304,6 @@
     throw new UnsupportedOperationException();  // avoid nondeterminism
   }
 
-  /**
-   * Return value for {@link BuildView#update} and {@code BuildTool.prepareToBuild}.
-   */
-  public static final class AnalysisResult {
-    private final ImmutableSet<ConfiguredTarget> targetsToBuild;
-    @Nullable private final ImmutableList<ConfiguredTarget> targetsToTest;
-    private final ImmutableSet<ConfiguredTarget> targetsToSkip;
-    @Nullable private final String error;
-    private final ActionGraph actionGraph;
-    private final ImmutableSet<Artifact> artifactsToBuild;
-    private final ImmutableSet<ConfiguredTarget> parallelTests;
-    private final ImmutableSet<ConfiguredTarget> exclusiveTests;
-    @Nullable private final TopLevelArtifactContext topLevelContext;
-    private final ImmutableSet<AspectValue> aspects;
-    private final PackageRoots packageRoots;
-    private final String workspaceName;
-    List<TargetAndConfiguration> topLevelTargetsWithConfigs;
-
-    private AnalysisResult(
-        Collection<ConfiguredTarget> targetsToBuild,
-        ImmutableSet<AspectValue> aspects,
-        Collection<ConfiguredTarget> targetsToTest,
-        Collection<ConfiguredTarget> targetsToSkip,
-        @Nullable String error,
-        ActionGraph actionGraph,
-        Collection<Artifact> artifactsToBuild,
-        Collection<ConfiguredTarget> parallelTests,
-        Collection<ConfiguredTarget> exclusiveTests,
-        TopLevelArtifactContext topLevelContext,
-        PackageRoots packageRoots,
-        String workspaceName,
-        List<TargetAndConfiguration> topLevelTargetsWithConfigs) {
-      this.targetsToBuild = ImmutableSet.copyOf(targetsToBuild);
-      this.aspects = aspects;
-      this.targetsToTest = targetsToTest == null ? null : ImmutableList.copyOf(targetsToTest);
-      this.targetsToSkip = ImmutableSet.copyOf(targetsToSkip);
-      this.error = error;
-      this.actionGraph = actionGraph;
-      this.artifactsToBuild = ImmutableSet.copyOf(artifactsToBuild);
-      this.parallelTests = ImmutableSet.copyOf(parallelTests);
-      this.exclusiveTests = ImmutableSet.copyOf(exclusiveTests);
-      this.topLevelContext = topLevelContext;
-      this.packageRoots = packageRoots;
-      this.workspaceName = workspaceName;
-      this.topLevelTargetsWithConfigs = topLevelTargetsWithConfigs;
-    }
-
-    /**
-     * Returns configured targets to build.
-     */
-    public ImmutableSet<ConfiguredTarget> getTargetsToBuild() {
-      return targetsToBuild;
-    }
-
-    /** @see PackageRoots */
-    public PackageRoots getPackageRoots() {
-      return packageRoots;
-    }
-
-    /**
-     * Returns aspects of configured targets to build.
-     *
-     * <p>If this list is empty, build the targets returned by {@code getTargetsToBuild()}.
-     * Otherwise, only build these aspects of the targets returned by {@code getTargetsToBuild()}.
-     */
-    public ImmutableSet<AspectValue> getAspects() {
-      return aspects;
-    }
-
-    /**
-     * Returns the configured targets to run as tests, or {@code null} if testing was not
-     * requested (e.g. "build" command rather than "test" command).
-     */
-    @Nullable
-    public Collection<ConfiguredTarget> getTargetsToTest() {
-      return targetsToTest;
-    }
-
-    /**
-     * Returns the configured targets that should not be executed because they're not
-     * platform-compatible with the current build.
-     *
-     * <p>For example: tests that aren't intended for the designated CPU.
-     */
-    public ImmutableSet<ConfiguredTarget> getTargetsToSkip() {
-      return targetsToSkip;
-    }
-
-    public ImmutableSet<Artifact> getAdditionalArtifactsToBuild() {
-      return artifactsToBuild;
-    }
-
-    public ImmutableSet<ConfiguredTarget> getExclusiveTests() {
-      return exclusiveTests;
-    }
-
-    public ImmutableSet<ConfiguredTarget> getParallelTests() {
-      return parallelTests;
-    }
-
-    /**
-     * Returns an error description (if any).
-     */
-    @Nullable public String getError() {
-      return error;
-    }
-
-    public boolean hasError() {
-      return error != null;
-    }
-
-    /**
-     * Returns the action graph.
-     */
-    public ActionGraph getActionGraph() {
-      return actionGraph;
-    }
-
-    public TopLevelArtifactContext getTopLevelContext() {
-      return topLevelContext;
-    }
-
-    public String getWorkspaceName() {
-      return workspaceName;
-    }
-
-    public List<TargetAndConfiguration> getTopLevelTargetsWithConfigs() {
-      return topLevelTargetsWithConfigs;
-    }
-  }
-
   /** Returns the collection of configured targets corresponding to any of the provided targets. */
   @VisibleForTesting
   static Iterable<? extends ConfiguredTarget> filterTestsByTargets(
diff --git a/src/main/java/com/google/devtools/build/lib/buildtool/BuildTool.java b/src/main/java/com/google/devtools/build/lib/buildtool/BuildTool.java
index 55eed1a..32307e0 100644
--- a/src/main/java/com/google/devtools/build/lib/buildtool/BuildTool.java
+++ b/src/main/java/com/google/devtools/build/lib/buildtool/BuildTool.java
@@ -22,9 +22,9 @@
 import com.google.devtools.build.lib.actions.BuildFailedException;
 import com.google.devtools.build.lib.actions.TestExecException;
 import com.google.devtools.build.lib.analysis.AnalysisPhaseCompleteEvent;
+import com.google.devtools.build.lib.analysis.AnalysisResult;
 import com.google.devtools.build.lib.analysis.BuildInfoEvent;
 import com.google.devtools.build.lib.analysis.BuildView;
-import com.google.devtools.build.lib.analysis.BuildView.AnalysisResult;
 import com.google.devtools.build.lib.analysis.ConfiguredTarget;
 import com.google.devtools.build.lib.analysis.LicensesProvider;
 import com.google.devtools.build.lib.analysis.LicensesProvider.TargetLicense;
diff --git a/src/main/java/com/google/devtools/build/lib/buildtool/ExecutionTool.java b/src/main/java/com/google/devtools/build/lib/buildtool/ExecutionTool.java
index a149b1a..94cba7c 100644
--- a/src/main/java/com/google/devtools/build/lib/buildtool/ExecutionTool.java
+++ b/src/main/java/com/google/devtools/build/lib/buildtool/ExecutionTool.java
@@ -40,7 +40,7 @@
 import com.google.devtools.build.lib.actions.TestExecException;
 import com.google.devtools.build.lib.actions.cache.ActionCache;
 import com.google.devtools.build.lib.actions.cache.Protos.ActionCacheStatistics;
-import com.google.devtools.build.lib.analysis.BuildView.AnalysisResult;
+import com.google.devtools.build.lib.analysis.AnalysisResult;
 import com.google.devtools.build.lib.analysis.ConfiguredTarget;
 import com.google.devtools.build.lib.analysis.TopLevelArtifactContext;
 import com.google.devtools.build.lib.analysis.TopLevelArtifactHelper;
diff --git a/src/main/java/com/google/devtools/build/lib/buildtool/PostAnalysisQueryBuildTool.java b/src/main/java/com/google/devtools/build/lib/buildtool/PostAnalysisQueryBuildTool.java
index df5205e..941f53e 100644
--- a/src/main/java/com/google/devtools/build/lib/buildtool/PostAnalysisQueryBuildTool.java
+++ b/src/main/java/com/google/devtools/build/lib/buildtool/PostAnalysisQueryBuildTool.java
@@ -13,7 +13,7 @@
 // limitations under the License.
 package com.google.devtools.build.lib.buildtool;
 
-import com.google.devtools.build.lib.analysis.BuildView.AnalysisResult;
+import com.google.devtools.build.lib.analysis.AnalysisResult;
 import com.google.devtools.build.lib.analysis.TargetAndConfiguration;
 import com.google.devtools.build.lib.analysis.ViewCreationFailedException;
 import com.google.devtools.build.lib.analysis.config.BuildConfiguration;
diff --git a/src/test/java/com/google/devtools/build/lib/analysis/AnalysisFailureReportingTest.java b/src/test/java/com/google/devtools/build/lib/analysis/AnalysisFailureReportingTest.java
index 2783c61..2c84679 100644
--- a/src/test/java/com/google/devtools/build/lib/analysis/AnalysisFailureReportingTest.java
+++ b/src/test/java/com/google/devtools/build/lib/analysis/AnalysisFailureReportingTest.java
@@ -20,7 +20,6 @@
 import com.google.common.collect.Iterables;
 import com.google.common.collect.Multimap;
 import com.google.common.eventbus.Subscribe;
-import com.google.devtools.build.lib.analysis.BuildView.AnalysisResult;
 import com.google.devtools.build.lib.analysis.config.BuildConfiguration;
 import com.google.devtools.build.lib.analysis.util.AnalysisTestCase;
 import com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.ConfigurationId;
diff --git a/src/test/java/com/google/devtools/build/lib/analysis/AspectTest.java b/src/test/java/com/google/devtools/build/lib/analysis/AspectTest.java
index 2294258..fe64dbd 100644
--- a/src/test/java/com/google/devtools/build/lib/analysis/AspectTest.java
+++ b/src/test/java/com/google/devtools/build/lib/analysis/AspectTest.java
@@ -26,7 +26,6 @@
 import com.google.common.eventbus.EventBus;
 import com.google.devtools.build.lib.actions.Artifact;
 import com.google.devtools.build.lib.actions.util.ActionsTestUtil.NullAction;
-import com.google.devtools.build.lib.analysis.BuildView.AnalysisResult;
 import com.google.devtools.build.lib.analysis.config.HostTransition;
 import com.google.devtools.build.lib.analysis.util.AnalysisTestCase;
 import com.google.devtools.build.lib.analysis.util.MockRule;
@@ -610,7 +609,7 @@
 
     // Sanity check: //x:d injects an aspect which produces some extra-action.
     {
-      BuildView.AnalysisResult analysisResult = update("//x:d");
+      AnalysisResult analysisResult = update("//x:d");
 
       // Get owners of all extra-action artifacts.
       List<Label> extraArtifactOwners = new ArrayList<>();
@@ -624,7 +623,7 @@
 
     // Actual test: //x:a reports actions registered by the aspect it injects.
     {
-      BuildView.AnalysisResult analysisResult = update("//x:a");
+      AnalysisResult analysisResult = update("//x:a");
 
       // Get owners of all extra-action artifacts.
       List<Label> extraArtifactOwners = new ArrayList<>();
diff --git a/src/test/java/com/google/devtools/build/lib/analysis/BuildViewTest.java b/src/test/java/com/google/devtools/build/lib/analysis/BuildViewTest.java
index fdd3418..d5f8771 100644
--- a/src/test/java/com/google/devtools/build/lib/analysis/BuildViewTest.java
+++ b/src/test/java/com/google/devtools/build/lib/analysis/BuildViewTest.java
@@ -30,7 +30,6 @@
 import com.google.devtools.build.lib.actions.Actions;
 import com.google.devtools.build.lib.actions.Artifact;
 import com.google.devtools.build.lib.actions.FailAction;
-import com.google.devtools.build.lib.analysis.BuildView.AnalysisResult;
 import com.google.devtools.build.lib.analysis.config.BuildConfiguration;
 import com.google.devtools.build.lib.analysis.config.InvalidConfigurationException;
 import com.google.devtools.build.lib.analysis.config.transitions.NoTransition;
@@ -1287,7 +1286,7 @@
         "extra_action(name='xa', cmd='echo dont-care')",
         "action_listener(name='listener', mnemonics=['Mnemonic'], extra_actions=[':xa'])");
 
-    BuildView.AnalysisResult analysisResult = update("//x:a");
+    AnalysisResult analysisResult = update("//x:a");
 
     List<String> owners = new ArrayList<>();
     for (Artifact artifact : analysisResult.getAdditionalArtifactsToBuild()) {
diff --git a/src/test/java/com/google/devtools/build/lib/analysis/util/AnalysisTestCase.java b/src/test/java/com/google/devtools/build/lib/analysis/util/AnalysisTestCase.java
index 750a265..3249aa2 100644
--- a/src/test/java/com/google/devtools/build/lib/analysis/util/AnalysisTestCase.java
+++ b/src/test/java/com/google/devtools/build/lib/analysis/util/AnalysisTestCase.java
@@ -24,9 +24,9 @@
 import com.google.devtools.build.lib.actions.ActionGraph;
 import com.google.devtools.build.lib.actions.ActionKeyContext;
 import com.google.devtools.build.lib.actions.Artifact;
+import com.google.devtools.build.lib.analysis.AnalysisResult;
 import com.google.devtools.build.lib.analysis.BlazeDirectories;
 import com.google.devtools.build.lib.analysis.BuildView;
-import com.google.devtools.build.lib.analysis.BuildView.AnalysisResult;
 import com.google.devtools.build.lib.analysis.ConfiguredRuleClassProvider;
 import com.google.devtools.build.lib.analysis.ConfiguredTarget;
 import com.google.devtools.build.lib.analysis.RuleDefinition;
diff --git a/src/test/java/com/google/devtools/build/lib/analysis/util/BuildViewTestBase.java b/src/test/java/com/google/devtools/build/lib/analysis/util/BuildViewTestBase.java
index c5d5eee..071c486 100644
--- a/src/test/java/com/google/devtools/build/lib/analysis/util/BuildViewTestBase.java
+++ b/src/test/java/com/google/devtools/build/lib/analysis/util/BuildViewTestBase.java
@@ -21,7 +21,7 @@
 import com.google.devtools.build.lib.actions.Artifact;
 import com.google.devtools.build.lib.actions.util.ActionsTestUtil;
 import com.google.devtools.build.lib.analysis.AnalysisFailureEvent;
-import com.google.devtools.build.lib.analysis.BuildView.AnalysisResult;
+import com.google.devtools.build.lib.analysis.AnalysisResult;
 import com.google.devtools.build.lib.analysis.ConfiguredTarget;
 import com.google.devtools.build.lib.analysis.RunfilesProvider;
 import com.google.devtools.build.lib.events.Event;
diff --git a/src/test/java/com/google/devtools/build/lib/analysis/util/BuildViewTestCase.java b/src/test/java/com/google/devtools/build/lib/analysis/util/BuildViewTestCase.java
index a243790..abe57a3 100644
--- a/src/test/java/com/google/devtools/build/lib/analysis/util/BuildViewTestCase.java
+++ b/src/test/java/com/google/devtools/build/lib/analysis/util/BuildViewTestCase.java
@@ -55,10 +55,10 @@
 import com.google.devtools.build.lib.actions.util.ActionsTestUtil;
 import com.google.devtools.build.lib.actions.util.DummyExecutor;
 import com.google.devtools.build.lib.analysis.AnalysisEnvironment;
+import com.google.devtools.build.lib.analysis.AnalysisResult;
 import com.google.devtools.build.lib.analysis.AnalysisUtils;
 import com.google.devtools.build.lib.analysis.BlazeDirectories;
 import com.google.devtools.build.lib.analysis.BuildView;
-import com.google.devtools.build.lib.analysis.BuildView.AnalysisResult;
 import com.google.devtools.build.lib.analysis.CachingAnalysisEnvironment;
 import com.google.devtools.build.lib.analysis.ConfiguredRuleClassProvider;
 import com.google.devtools.build.lib.analysis.ConfiguredTarget;
diff --git a/src/test/java/com/google/devtools/build/lib/skylark/SkylarkActionProviderTest.java b/src/test/java/com/google/devtools/build/lib/skylark/SkylarkActionProviderTest.java
index b101eec..e3afc4e 100644
--- a/src/test/java/com/google/devtools/build/lib/skylark/SkylarkActionProviderTest.java
+++ b/src/test/java/com/google/devtools/build/lib/skylark/SkylarkActionProviderTest.java
@@ -19,7 +19,7 @@
 import com.google.common.collect.Iterables;
 import com.google.devtools.build.lib.actions.ActionAnalysisMetadata;
 import com.google.devtools.build.lib.actions.Artifact;
-import com.google.devtools.build.lib.analysis.BuildView.AnalysisResult;
+import com.google.devtools.build.lib.analysis.AnalysisResult;
 import com.google.devtools.build.lib.analysis.ConfiguredAspect;
 import com.google.devtools.build.lib.analysis.util.AnalysisTestCase;
 import com.google.devtools.build.lib.cmdline.Label;
diff --git a/src/test/java/com/google/devtools/build/lib/skylark/SkylarkDefinedAspectsTest.java b/src/test/java/com/google/devtools/build/lib/skylark/SkylarkDefinedAspectsTest.java
index 998cf66..57170f8 100644
--- a/src/test/java/com/google/devtools/build/lib/skylark/SkylarkDefinedAspectsTest.java
+++ b/src/test/java/com/google/devtools/build/lib/skylark/SkylarkDefinedAspectsTest.java
@@ -22,7 +22,7 @@
 import com.google.common.collect.ImmutableList;
 import com.google.common.collect.Iterables;
 import com.google.devtools.build.lib.actions.Artifact;
-import com.google.devtools.build.lib.analysis.BuildView.AnalysisResult;
+import com.google.devtools.build.lib.analysis.AnalysisResult;
 import com.google.devtools.build.lib.analysis.ConfiguredAspect;
 import com.google.devtools.build.lib.analysis.ConfiguredTarget;
 import com.google.devtools.build.lib.analysis.OutputGroupInfo;