Actually fail the compile if a permutation fails (with an ICE, perhaps).

Review by: bobv (desk)


git-svn-id: https://google-web-toolkit.googlecode.com/svn/releases/1.6@4405 8db76d5a-ed1c-0410-87a9-c151d255dfc7
diff --git a/dev/core/src/com/google/gwt/dev/PermutationWorker.java b/dev/core/src/com/google/gwt/dev/PermutationWorker.java
index f24d35f..80e69cd 100644
--- a/dev/core/src/com/google/gwt/dev/PermutationWorker.java
+++ b/dev/core/src/com/google/gwt/dev/PermutationWorker.java
@@ -33,6 +33,7 @@
    * @throws TransientWorkerException if the Permutation should be tried again
    *           on another worker
    * @throws UnableToCompleteException due to a fatal error
+   * @return <code>null</code> if the compile failed
    */
   PermutationResult compile(TreeLogger logger, Permutation permutation)
       throws TransientWorkerException, UnableToCompleteException;
diff --git a/dev/core/src/com/google/gwt/dev/PermutationWorkerFactory.java b/dev/core/src/com/google/gwt/dev/PermutationWorkerFactory.java
index 0322072..507f9ba 100644
--- a/dev/core/src/com/google/gwt/dev/PermutationWorkerFactory.java
+++ b/dev/core/src/com/google/gwt/dev/PermutationWorkerFactory.java
@@ -70,9 +70,15 @@
             TreeLogger logger = work.getLogger();
             try {
               PermutationResult result = worker.compile(logger, work.getPerm());
-              Util.writeObjectAsFile(logger, work.getResultFile(), result);
-              logger.log(TreeLogger.DEBUG, "Successfully compiled permutation");
-              resultsQueue.put(Result.SUCCESS);
+              if (result == null) {
+                logger.log(TreeLogger.ERROR, "Compilation failed");
+                return;
+              } else {
+                Util.writeObjectAsFile(logger, work.getResultFile(), result);
+                logger.log(TreeLogger.DEBUG,
+                    "Successfully compiled permutation");
+                resultsQueue.put(Result.SUCCESS);
+              }
             } catch (TransientWorkerException e) {
               logger.log(TreeLogger.DEBUG,
                   "Worker died, will retry Permutation", e);
@@ -82,7 +88,6 @@
             } catch (UnableToCompleteException e) {
               logger.log(TreeLogger.ERROR,
                   "Unrecoverable exception, shutting down", e);
-              threadDeathResult = Result.FAIL;
               return;
             }
           }