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;
}
}