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

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

Issue 20722006: Removed compiler/ directory from repository (Closed) Base URL: http://dart.googlecode.com/svn/branches/bleeding_edge
Patch Set: Created 7 years, 5 months 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: 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));
- }
-}

Powered by Google App Engine
This is Rietveld 408576698