From afcb55b21f45258ce1bf1156b007a3e963d188d3 Mon Sep 17 00:00:00 2001 From: Florian Schroedl Date: Thu, 20 Jan 2022 17:00:00 +0100 Subject: [PATCH] Cap error on error line --- src/parser/parser.nim | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/src/parser/parser.nim b/src/parser/parser.nim index 9cabec2..f9606e7 100644 --- a/src/parser/parser.nim +++ b/src/parser/parser.nim @@ -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}"""