| Index: dart/compiler/java/com/google/dart/compiler/PrettyErrorFormatter.java
|
| diff --git a/dart/compiler/java/com/google/dart/compiler/PrettyErrorFormatter.java b/dart/compiler/java/com/google/dart/compiler/PrettyErrorFormatter.java
|
| deleted file mode 100644
|
| index 0baa65174e68e71d25a723d2fbdde7380f532f0e..0000000000000000000000000000000000000000
|
| --- a/dart/compiler/java/com/google/dart/compiler/PrettyErrorFormatter.java
|
| +++ /dev/null
|
| @@ -1,156 +0,0 @@
|
| -// Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file
|
| -// for details. All rights reserved. Use of this source code is governed by a
|
| -// BSD-style license that can be found in the LICENSE file.
|
| -
|
| -package com.google.dart.compiler;
|
| -
|
| -import com.google.common.io.Closeables;
|
| -import com.google.dart.compiler.CompilerConfiguration.ErrorFormat;
|
| -
|
| -import java.io.BufferedReader;
|
| -import java.io.IOException;
|
| -import java.io.PrintStream;
|
| -import java.io.Reader;
|
| -
|
| -/**
|
| - * An error formatter that scans the source file and prints the error line and
|
| - * some context around it. This formatter has two modes: with or without color.
|
| - * When using colors, it prints the error message in red, and it highlights the
|
| - * portion of the line containing the error in red. Without colors, it prints an
|
| - * extra line underlying the portion of the line containing the error.
|
| - */
|
| -public class PrettyErrorFormatter extends DefaultErrorFormatter {
|
| - public static final String ERROR_BOLD_COLOR = "\033[31;1m";
|
| - public static final String ERROR_COLOR = "\033[31m";
|
| -
|
| - // Mix ANSI with xterm colors, giving ANSI priority. The terminal should ignore xterm codes
|
| - // if it doesn't support them.
|
| - public static final String WARNING_BOLD_COLOR = "\033[33;1m\033[38;5;202m";
|
| - public static final String WARNING_COLOR = "\033[33m\033[38;5;208m";
|
| -
|
| - public static final String NO_COLOR = "\033[0m";
|
| -
|
| - private final boolean useColor;
|
| -
|
| - public PrettyErrorFormatter(PrintStream outputStream,
|
| - boolean useColor,
|
| - ErrorFormat errorFormat) {
|
| - super(outputStream, errorFormat);
|
| - this.useColor = useColor;
|
| - }
|
| -
|
| - @Override
|
| - public void format(DartCompilationError event) {
|
| - Source sourceFile = event.getSource();
|
| -
|
| - // if this is an unknown source type, default to the basic error formatter
|
| - if (!(sourceFile instanceof DartSource) && !(sourceFile instanceof LibrarySource)) {
|
| - super.format(event);
|
| - return;
|
| - }
|
| -
|
| - BufferedReader reader = null;
|
| - try {
|
| - Reader sourceReader = sourceFile.getSourceReader();
|
| - if (sourceReader != null) {
|
| - reader = new BufferedReader(sourceReader);
|
| - }
|
| -
|
| - // get the error line and the line above it (note: line starts at 1)
|
| - int line = event.getLineNumber();
|
| - String lineBefore = null;
|
| - String lineText = null;
|
| -
|
| - if (reader != null) {
|
| - lineBefore = getLineAt(reader, line - 1);
|
| - lineText = getLineAt(reader, 1);
|
| - }
|
| -
|
| - // if there is no line to highlight, default to the basic error formatter
|
| - if (lineText == null) {
|
| - super.format(event);
|
| - return;
|
| - }
|
| -
|
| - // get column/length and ensure they are within the line limits.
|
| - int col = event.getColumnNumber() - 1;
|
| - 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();
|
| - if (useColor) {
|
| - buf.append(event.getErrorCode().getErrorSeverity() == ErrorSeverity.WARNING
|
| - ? WARNING_BOLD_COLOR : ERROR_BOLD_COLOR);
|
| - }
|
| - appendError(buf, event);
|
| - 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));
|
| - }
|
| -
|
| - if (useColor) {
|
| - // highlight error in red
|
| - buf.append(String.format("%6d: %s%s%s%s%s\n",
|
| - line,
|
| - lineText.substring(0, col),
|
| - event.getErrorCode().getErrorSeverity() == ErrorSeverity.WARNING
|
| - ? WARNING_COLOR : ERROR_COLOR,
|
| - lineText.substring(col, col + length),
|
| - NO_COLOR,
|
| - lineText.substring(col + length)));
|
| - } else {
|
| - // print the error line without formatting
|
| - buf.append(String.format("%6d: %s\n", line, lineText));
|
| -
|
| - // underline error portion
|
| - buf.append(" ");
|
| - for (int i = 0; i < col; ++i) {
|
| - buf.append(' ');
|
| - }
|
| - buf.append('~');
|
| - if (length > 1) {
|
| - for (int i = 0; i < length - 2; ++i) {
|
| - buf.append('~');
|
| - }
|
| - buf.append('~');
|
| - }
|
| - buf.append('\n');
|
| - }
|
| -
|
| - outputStream.print(buf.toString());
|
| - } catch (IOException ex) {
|
| - super.format(event);
|
| - } finally {
|
| - if (reader != null) {
|
| - Closeables.closeQuietly(reader);
|
| - }
|
| - }
|
| - }
|
| -
|
| - private String getLineAt(BufferedReader reader, int line) throws IOException {
|
| - if (line <= 0) {
|
| - return null;
|
| - }
|
| - String currentLine = null;
|
| - // TODO(sigmund): do something more efficient - we currently do a linear
|
| - // scan of the file every time an error is reported. This will not scale
|
| - // when many errors are reported on the same file.
|
| - while ((currentLine = reader.readLine()) != null && line-- > 1){}
|
| - return currentLine;
|
| - }
|
| -
|
| - /**
|
| - * Returns the closest value in {@code [start,end]} to the given value. If
|
| - * the given range is entirely empty, then {@code start} is returned.
|
| - */
|
| - private static int between(int val, int start, int end) {
|
| - return Math.max(start, Math.min(val, end));
|
| - }
|
| -}
|
|
|