Print the stack trace for exception diagnostics by default.
Change-Id: I2c594d707e5d1a9cfb2a1296ad9f0713424f4ec3
diff --git a/src/main/java/com/android/tools/r8/utils/ExceptionDiagnostic.java b/src/main/java/com/android/tools/r8/utils/ExceptionDiagnostic.java
index 3e4a44d..78d47c2 100644
--- a/src/main/java/com/android/tools/r8/utils/ExceptionDiagnostic.java
+++ b/src/main/java/com/android/tools/r8/utils/ExceptionDiagnostic.java
@@ -9,6 +9,8 @@
import com.android.tools.r8.origin.Origin;
import com.android.tools.r8.position.Position;
import java.io.FileNotFoundException;
+import java.io.PrintWriter;
+import java.io.StringWriter;
import java.nio.file.FileAlreadyExistsException;
import java.nio.file.NoSuchFileException;
@@ -45,6 +47,11 @@
if (e instanceof FileAlreadyExistsException) {
return "File already exists: " + e.getMessage();
}
- return e.getMessage();
+ StringWriter stack = new StringWriter();
+ e.printStackTrace(new PrintWriter(stack));
+ String message = e.getMessage();
+ return message != null
+ ? StringUtils.joinLines(message, "Stack trace:", stack.toString())
+ : StringUtils.joinLines(stack.toString());
}
}
diff --git a/src/main/java/com/android/tools/r8/utils/ExceptionUtils.java b/src/main/java/com/android/tools/r8/utils/ExceptionUtils.java
index ee11bcf..d77adfd 100644
--- a/src/main/java/com/android/tools/r8/utils/ExceptionUtils.java
+++ b/src/main/java/com/android/tools/r8/utils/ExceptionUtils.java
@@ -11,8 +11,6 @@
import com.android.tools.r8.origin.Origin;
import com.android.tools.r8.origin.PathOrigin;
import java.io.IOException;
-import java.io.PrintWriter;
-import java.io.StringWriter;
import java.nio.file.FileSystemException;
import java.nio.file.Paths;
import java.util.function.Consumer;
@@ -67,14 +65,7 @@
} catch (ResourceException e) {
throw reporter.fatalError(new ExceptionDiagnostic(e, e.getOrigin()));
} catch (AssertionError e) {
- // Most of our assertions don't have a message, create a wrapper that has the stack as the
- // message.
- if (e.getMessage() == null) {
- StringWriter stack = new StringWriter();
- e.printStackTrace(new PrintWriter(stack));
- e = new AssertionError(stack.toString(), e);
- }
- throw reporter.fatalError(new ExceptionDiagnostic(e, Origin.unknown()), e);
+ throw reporter.fatalError(new ExceptionDiagnostic(e, Origin.unknown()));
}
reporter.failIfPendingErrors();
} catch (AbortException e) {