Fail loudly when there's an error parsing an API XML file.

We were previously using the same error code for a missing
version on a member (shouldn't be fatal) and a broken XML file
(should be fatal).

This makes the broken XML case fatal, and includes the reason
why.

Change-Id: Ia65d07544b8cb8ac95896cd451930ed37d69ee57
diff --git a/src/com/google/doclava/Errors.java b/src/com/google/doclava/Errors.java
index 15921d2..ddcfafb 100644
--- a/src/com/google/doclava/Errors.java
+++ b/src/com/google/doclava/Errors.java
@@ -166,6 +166,7 @@
   public static final Error IO_ERROR = new Error(115, HIDDEN);
   public static final Error NO_SINCE_DATA = new Error(116, HIDDEN);
   public static final Error NO_FEDERATION_DATA = new Error(117, WARNING);
+  public static final Error BROKEN_SINCE_FILE = new Error(118, ERROR);
 
   public static final Error[] ERRORS =
       {UNRESOLVED_LINK, BAD_INCLUDE_TAG, UNKNOWN_TAG, UNKNOWN_PARAM_TAG_NAME,
@@ -176,7 +177,7 @@
           REMOVED_METHOD, REMOVED_FIELD, REMOVED_INTERFACE, CHANGED_STATIC, CHANGED_FINAL,
           CHANGED_TRANSIENT, CHANGED_VOLATILE, CHANGED_TYPE, CHANGED_VALUE, CHANGED_SUPERCLASS,
           CHANGED_SCOPE, CHANGED_ABSTRACT, CHANGED_THROWS, CHANGED_NATIVE, CHANGED_CLASS,
-          CHANGED_DEPRECATED, CHANGED_SYNCHRONIZED};
+          CHANGED_DEPRECATED, CHANGED_SYNCHRONIZED, BROKEN_SINCE_FILE};
 
   public static boolean setErrorLevel(int code, int level) {
     for (Error e : ERRORS) {
diff --git a/src/com/google/doclava/SinceTagger.java b/src/com/google/doclava/SinceTagger.java
index 4832499..e324e95 100644
--- a/src/com/google/doclava/SinceTagger.java
+++ b/src/com/google/doclava/SinceTagger.java
@@ -20,11 +20,11 @@
 import com.google.doclava.apicheck.ApiCheck;
 import com.google.doclava.apicheck.ApiInfo;
 import com.google.doclava.apicheck.ApiParseException;
-
+import java.io.PrintWriter;
+import java.io.StringWriter;
 import java.util.ArrayList;
 import java.util.Collections;
 import java.util.LinkedHashMap;
-import java.util.LinkedList;
 import java.util.List;
 import java.util.Map;
 
@@ -64,7 +64,10 @@
       try {
         specApi = new ApiCheck().parseApi(xmlFile);
       } catch (ApiParseException e) {
-        Errors.error(Errors.NO_SINCE_DATA, null, "Could not add since data for " + versionName);
+        StringWriter stackTraceWriter = new StringWriter();
+        e.printStackTrace(new PrintWriter(stackTraceWriter));
+        Errors.error(Errors.BROKEN_SINCE_FILE, null, "Failed to parse " + xmlFile
+                + " for " + versionName + " since data.\n" + stackTraceWriter.toString());
         continue;
       }