Error out if loading phase error encountered even if we skip analysis. Also change error messages in these cases to not assume there was an execution phase.

--
MOS_MIGRATED_REVID=129723717
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 e3cf5f6..1afacf9 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
@@ -269,21 +269,6 @@
    * Return value for {@link BuildView#update} and {@code BuildTool.prepareToBuild}.
    */
   public static final class AnalysisResult {
-
-    public static final AnalysisResult EMPTY =
-        new AnalysisResult(
-            ImmutableList.<ConfiguredTarget>of(),
-            ImmutableList.<AspectValue>of(),
-            null,
-            null,
-            null,
-            ImmutableList.<Artifact>of(),
-            ImmutableList.<ConfiguredTarget>of(),
-            ImmutableList.<ConfiguredTarget>of(),
-            null,
-            ImmutableMap.<PackageIdentifier, Path>of(),
-            "");
-
     private final ImmutableList<ConfiguredTarget> targetsToBuild;
     @Nullable private final ImmutableList<ConfiguredTarget> targetsToTest;
     @Nullable private final String error;
@@ -576,13 +561,7 @@
     // Tests. This must come last, so that the exclusive tests are scheduled after everything else.
     scheduleTestsIfRequested(parallelTests, exclusiveTests, topLevelOptions, allTargetsToTest);
 
-    String error = loadingResult.hasTargetPatternError()
-        ? "execution phase successful, but there were errors parsing the target pattern"
-        : loadingResult.hasLoadingError() || skyframeAnalysisResult.hasLoadingError()
-            ? "execution phase succeeded, but there were loading phase errors"
-            : skyframeAnalysisResult.hasAnalysisError()
-                ? "execution phase succeeded, but not all targets were analyzed"
-                : null;
+    String error = createErrorMessage(loadingResult, skyframeAnalysisResult);
 
     final WalkableGraph graph = skyframeAnalysisResult.getWalkableGraph();
     final ActionGraph actionGraph = new ActionGraph() {
@@ -612,6 +591,19 @@
         loadingResult.getWorkspaceName());
   }
 
+  @Nullable
+  public static String createErrorMessage(
+      LoadingResult loadingResult, @Nullable SkyframeAnalysisResult skyframeAnalysisResult) {
+    return loadingResult.hasTargetPatternError()
+        ? "command succeeded, but there were errors parsing the target pattern"
+        : loadingResult.hasLoadingError()
+                || (skyframeAnalysisResult != null && skyframeAnalysisResult.hasLoadingError())
+            ? "command succeeded, but there were loading phase errors"
+            : (skyframeAnalysisResult != null && skyframeAnalysisResult.hasAnalysisError())
+                ? "command succeeded, but not all targets were analyzed"
+                : null;
+  }
+
   private static NestedSet<Artifact> getBaselineCoverageArtifacts(
       Collection<ConfiguredTarget> configuredTargets) {
     NestedSetBuilder<Artifact> baselineCoverageArtifacts = NestedSetBuilder.stableOrder();