Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(514)

Unified Diff: compiler/java/com/google/dart/compiler/PrettyErrorFormatter.java

Issue 8476005: Support for --machine-problems, tests for PrettyErrorFormatter (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: Created 9 years, 1 month ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: compiler/java/com/google/dart/compiler/PrettyErrorFormatter.java
diff --git a/compiler/java/com/google/dart/compiler/PrettyErrorFormatter.java b/compiler/java/com/google/dart/compiler/PrettyErrorFormatter.java
index 2ca3984d588d6d608201d466411f66cc3258ac50..9afef168e0eeff06929cf0d4aa9d45b1c351a8ca 100644
--- a/compiler/java/com/google/dart/compiler/PrettyErrorFormatter.java
+++ b/compiler/java/com/google/dart/compiler/PrettyErrorFormatter.java
@@ -8,6 +8,7 @@ import com.google.common.io.Closeables;
import java.io.BufferedReader;
import java.io.IOException;
+import java.io.PrintStream;
import java.io.Reader;
/**
@@ -23,9 +24,14 @@ public class PrettyErrorFormatter extends DefaultErrorFormatter {
private static String NO_COLOR = "\033[0m";
private final boolean useColor;
+ private final boolean printMachineProblems;
- public PrettyErrorFormatter(boolean useColor) {
+ public PrettyErrorFormatter(PrintStream outputStream,
+ boolean useColor,
+ boolean printMachineProblems) {
+ super(outputStream);
this.useColor = useColor;
+ this.printMachineProblems = printMachineProblems;
}
@Override
@@ -63,21 +69,38 @@ public class PrettyErrorFormatter extends DefaultErrorFormatter {
// get column/length and ensure they are within the line limits.
int col = event.getColumnNumber() - 1;
- // TODO(ngeoffray): if length is 0, we may want to expand it in order
- // to highlight something.
int length = event.getLength();
col = between(col, 0, lineText.length());
length = between(length, 0, lineText.length() - col);
+ length = length == 0 ? lineText.length() - col : length;
// print the error message
StringBuilder buf = new StringBuilder();
- buf.append(String.format("%s%s:%d: %s%s\n",
- useColor ? RED_BOLD_COLOR : "",
+ if (useColor) {
+ buf.append(RED_BOLD_COLOR);
+ }
+ if (printMachineProblems) {
+ buf.append(String.format(
+ "%s:%s:%s:%s:%d:%d:%d: %s",
+ event.getErrorCode().getErrorSeverity(),
+ event.getErrorCode().getSubSystem(),
+ event.getErrorCode(),
sourceFile.getName(),
event.getLineNumber(),
- event.getMessage(),
- useColor ? NO_COLOR : ""));
-
+ 1 + col,
+ length,
+ event.getMessage()));
+ } else {
+ buf.append(String.format(
+ "%s:%d: %s",
+ sourceFile.getName(),
+ event.getLineNumber(),
+ event.getMessage()));
+ }
+ if (useColor) {
+ buf.append(NO_COLOR);
+ }
+ buf.append("\n");
// show the previous line for context
if (lineBefore != null) {
buf.append(String.format("%6d: %s\n", line - 1, lineBefore));
@@ -111,7 +134,7 @@ public class PrettyErrorFormatter extends DefaultErrorFormatter {
buf.append('\n');
}
- outputStream.println(buf.toString());
+ outputStream.print(buf.toString());
} catch (IOException ex) {
super.format(event);
} finally {

Powered by Google App Engine
This is Rietveld 408576698