Cap error on error line
This commit is contained in:
@@ -7,6 +7,7 @@ import std/collections/tables
|
||||
import results
|
||||
import fusion/matching
|
||||
import fp/maybe
|
||||
import ../utils/str
|
||||
|
||||
{.experimental: "caseStmtMacros".}
|
||||
|
||||
@@ -106,23 +107,30 @@ proc `$`*(x: ParserError): string =
|
||||
of charMismatchErr(expected: @expected, parser: @parser, index: @index, unexpected: @unexpected):
|
||||
# TODO: Only works for single line right now
|
||||
let original = parser.state.stream
|
||||
.deleteAfterNewline(parser.state.position)
|
||||
let errSpace = " ".repeat(max(0, index))
|
||||
|
||||
|
||||
$index & $parser &
|
||||
&"""Parsing Error (Character Mismatch Error):
|
||||
{original}
|
||||
{errSpace}^ Expected '{expected}' but got '{unexpected}'"""
|
||||
of choiceMismatchErr(expected: @expected, parser: @parser, index: @index, unexpected: @unexpected):
|
||||
let original = parser.state.stream
|
||||
.deleteAfterNewline(parser.state.position)
|
||||
let errSpace = " ".repeat(max(0, index))
|
||||
|
||||
$index & $parser &
|
||||
&"""Parsing Error (Character Mismatch Error):
|
||||
{original}
|
||||
{errSpace}^ Expected '{expected}' but got '{unexpected}'"""
|
||||
|
||||
of endOfStringErr(parser: @parser, index: @index):
|
||||
let original = parser.state.stream
|
||||
.deleteAfterNewline(parser.state.position)
|
||||
let errSpace = " ".repeat(max(0, index))
|
||||
|
||||
$index & $parser &
|
||||
&"""Parsing Error (EndOfString Expected):
|
||||
{original}
|
||||
{errSpace}^ Expected 'EndOfString' at {index} but got {original.len - 1}"""
|
||||
|
||||
Reference in New Issue
Block a user