From 2459a4e3e8c8fe0f7f6f08f604bedbbd296c5b09 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jos=C3=A9=20Miguel=20S=C3=A1nchez=20Garc=C3=ADa?= Date: Sat, 6 Jun 2020 21:48:09 +0200 Subject: [PATCH] Improve error reporting format Now it points location with character-level accuracy (instead of line-level). --- learnbot_dsl/learnbotCode/LearnBlock.py | 9 +++++---- learnbot_dsl/learnbotCode/Parser.py | 6 ++++-- 2 files changed, 9 insertions(+), 6 deletions(-) diff --git a/learnbot_dsl/learnbotCode/LearnBlock.py b/learnbot_dsl/learnbotCode/LearnBlock.py index ac2d62e0..0896b0fb 100755 --- a/learnbot_dsl/learnbotCode/LearnBlock.py +++ b/learnbot_dsl/learnbotCode/LearnBlock.py @@ -923,16 +923,17 @@ def textCodeToPython(self, name_Client): def formatError(error): level = error['level'] message = error['message'] - start, end = error['span'] + start = error['from'] + end = error['to'] if (start == None and end == None): spanMsg = "somewhere" elif (end == None): - spanMsg = f"from line {start}" + spanMsg = f"from {start[0]}:{start[1]}" elif (start == end): - spanMsg = f"line {start}" + spanMsg = f"at {start[0]}:{start[1]}" else: - spanMsg = f"lines {start}-{end}" + spanMsg = f"from {start[0]}:{start[1]} to {end[0]}{end[1]}" return f"{level}: {message} ({spanMsg})" diff --git a/learnbot_dsl/learnbotCode/Parser.py b/learnbot_dsl/learnbotCode/Parser.py index 649a1e0b..aeea3de8 100755 --- a/learnbot_dsl/learnbotCode/Parser.py +++ b/learnbot_dsl/learnbotCode/Parser.py @@ -882,7 +882,8 @@ def parserLearntBotCode(inputFile, outputFile, client_name): errors.append({ 'level': 'error', 'message': "Parse error", - 'span': (output.lineno, None), + 'from': (output.lineno, output.col), + 'to': None, }) return None, errors @@ -908,7 +909,8 @@ def parserLearntBotCodeFromCode(code, name_client): errors.append({ 'level': 'error', 'message': "Parse error", - 'span': (output.lineno, None), + 'from': (output.lineno, output.col), + 'to': None, }) return None, errors