View Javadoc

    1   package org.codehaus.groovy.control.messages;
    2
    3   import java.io.PrintWriter;
    4
    5   import org.codehaus.groovy.control.Janitor;
    6   import org.codehaus.groovy.control.SourceUnit;
    7   import org.codehaus.groovy.syntax.SyntaxException;
    8
    9
    10  /***
    11   * A class for error messages produced by the parser system.
    12   *
    13   * @author <a href="mailto:cpoirier@dreaming.org">Chris Poirier</a>
    14   * @version $Id: SyntaxErrorMessage.java,v 1.5 2005/07/01 03:01:19 fraz Exp $
    15   */
    16
    17  public class SyntaxErrorMessage extends Message {
    18      protected SyntaxException cause = null;
    19      protected SourceUnit source;
    20
    21      public SyntaxErrorMessage(SyntaxException cause, SourceUnit source) {
    22          this.cause = cause;
    23          this.source = source;
    24          cause.setSourceLocator(source.getName());
    25      }
    26
    27
    28      /***
    29       * Returns the underlying SyntaxException.
    30       */
    31
    32      public SyntaxException getCause() {
    33          return this.cause;
    34      }
    35
    36
    37      /***
    38       * Writes out a nicely formatted summary of the syntax error.
    39       */
    40
    41      public void write(PrintWriter output, Janitor janitor) {
    42          String name = source.getName();
    43          int line = getCause().getStartLine();
    44          int column = getCause().getStartColumn();
    45          String sample = source.getSample(line, column, janitor);
    46
    47          output.print(name + ": " + line + ": " + getCause().getMessage());
    48          if (sample != null) {
    49              output.println();
    50              output.print(sample);
    51              output.println();
    52          }
    53      }
    54
    55
    56  }
    57
    58
    59