Class ParseIssue

java.lang.Object
java.lang.Throwable
java.lang.Exception
gw.lang.parser.exceptions.ParseIssue
All Implemented Interfaces:
IParseIssue, Serializable
Direct Known Subclasses:
ParseException, ParseWarning

public abstract class ParseIssue extends Exception implements IParseIssue
See Also:
  • Field Details

  • Constructor Details

  • Method Details

    • debug

      private void debug()
    • fillInStackTrace

      public Throwable fillInStackTrace()
      Don't fill in stack trace since parse issues are not really "exceptional" in terms of the parser's Java implementation; we don't care much about the Java stack trace when these are thrown. Rather parse issues provide a means to tag parsed elements with issues discovered during parsing, such as syntax warnings and errors. Hence, the ParseIssue interface.

      Note this method is otherwise very costly from a performance standpoint.

      Overrides:
      fillInStackTrace in class Throwable
    • initFieldsFromParserState

      private void initFieldsFromParserState(IParserState parserState)
    • normalizeMessageArgs

      private Object[] normalizeMessageArgs(Object[] args)
      Normalize all non string & non number args to string types to prevent race conditions wrt/ the TypeSystem lock when the message is formatted.
    • formatError

      protected static String formatError(ResourceKey key, Object... msgArgs)
    • getLineNumber

      public Integer getLineNumber()
    • getLineOffset

      public Integer getLineOffset()
    • addLineOffset

      public void addLineOffset(int offset)
    • getTokenColumn

      public Integer getTokenColumn()
    • getTokenEnd

      public Integer getTokenEnd()
      Specified by:
      getTokenEnd in interface IParseIssue
    • getTokenStart

      public Integer getTokenStart()
      Specified by:
      getTokenStart in interface IParseIssue
    • getContextString

      public String getContextString()
    • getContextStringNoLineNumbers

      public String getContextStringNoLineNumbers()
    • getStateSource

      public String getStateSource()
    • setStateSource

      public void setStateSource(String parserSource)
    • getMyMessage

      private String getMyMessage()
    • getPlainMessage

      public String getPlainMessage()
      Specified by:
      getPlainMessage in interface IParseIssue
      Returns:
      the raw message for this parse issue, with no formatting
    • getConsoleMessage

      public String getConsoleMessage()
      Specified by:
      getConsoleMessage in interface IParseIssue
      Returns:
      the message for this parse issue formatted for printing out to a console
    • makeContextString

      public static String makeContextString(int lineOfError, String source, int lineReportingOffset)
    • makeContextString

      private static String makeContextString(int lineOfError, String source, int lineReportingOffset, boolean showLineNumbers)
    • getUIMessage

      public String getUIMessage()
      Specified by:
      getUIMessage in interface IParseIssue
      Returns:
      the message formatted for use by an IDE
    • getLine

      public int getLine()
      Specified by:
      getLine in interface IParseIssue
      Returns:
      the line that this issue is on
    • getColumn

      public int getColumn()
      Specified by:
      getColumn in interface IParseIssue
    • getSource

      public IParsedElement getSource()
      Warning: Only valid if called from the parser thread. Otherwise we null it out.
      Specified by:
      getSource in interface IParseIssue
      Returns:
      the parsed element that this issue is associated with
    • setSource

      public void setSource(IParsedElement sourceOfError)
    • getSymbolTable

      public ISymbolTable getSymbolTable()
      Warning: Only valid if called from the parser thread. Otherwise we null it out.
      Specified by:
      getSymbolTable in interface IParseIssue
      Returns:
      the symbol table state at the creation of this issue. Can return null if no symbol table is present.
    • appliesToPosition

      public boolean appliesToPosition(int iPos)
      Description copied from interface: IParseIssue
      Returns true if this issue is relevant to the given position
      Specified by:
      appliesToPosition in interface IParseIssue
    • getMessageKey

      public ResourceKey getMessageKey()
      Specified by:
      getMessageKey in interface IParseIssue
      Returns:
      the resource key for this ParseIssue, which can be used as a kind of identifier for the type of issue.
    • resolve

      public void resolve(IParserPart parserBase)
      Specified by:
      resolve in interface IParseIssue
    • resetPositions

      public void resetPositions()
      Specified by:
      resetPositions in interface IParseIssue
    • adjustOffset

      public void adjustOffset(int offset, int lineNumOffset, int columnOffset)
    • setMessage

      public void setMessage(ResourceKey key, Object... args)
    • getMessageArgs

      public Object[] getMessageArgs()
      Specified by:
      getMessageArgs in interface IParseIssue
    • getLineReportingOffset

      public int getLineReportingOffset()
    • getExpectedType

      public IType getExpectedType()
      Specified by:
      getExpectedType in interface IParseIssue