From e5c6a18a05a47510e1cc7816184d39358abb0233 Mon Sep 17 00:00:00 2001
From: Chris <Christopher.Happe@uni-duesseldorf.de>
Date: Wed, 25 Nov 2020 08:12:39 +0100
Subject: [PATCH] =?UTF-8?q?Bugfix:=20Falsches=20Zur=C3=BCcksetzen=20der=20?=
 =?UTF-8?q?Zeilennummer=20und=20Position?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 info4/kapitel-8/Interpreter/gotointerpreter.py | 8 ++++++--
 1 file changed, 6 insertions(+), 2 deletions(-)

diff --git a/info4/kapitel-8/Interpreter/gotointerpreter.py b/info4/kapitel-8/Interpreter/gotointerpreter.py
index bcd6576..040b4d3 100644
--- a/info4/kapitel-8/Interpreter/gotointerpreter.py
+++ b/info4/kapitel-8/Interpreter/gotointerpreter.py
@@ -115,13 +115,17 @@ class GOTOInterpreter:
         if not self.next_nonempty_token('GOTO', 'SEMICOLON').k == 'SEMICOLON':
             self.error_handler.handle_error('SEMICOLON zum Abschluss eines GOTO erwartet')
         marker_number = int(marker_token.v[1:])
+        saved_position = marker_token.p
+        saved_line = self.error_handler.line_number
         current_token = self.next_token()
         while current_token is not None and max(self.marker_to_position.keys()) < int(marker_number):
             current_token = self.verify_line(current_token)
-        self.lex.current_position = self.marker_to_position.get(marker_number)
-        self.error_handler.line_number = self.marker_to_line.get(marker_number)
         if marker_number not in self.marker_to_position.keys():
+            self.lex.current_position = saved_position
+            self.error_handler.line_number = saved_line
             self.error_handler.handle_error('GOTO zu nicht vorhandener Markierung')
+        self.lex.current_position = self.marker_to_position.get(marker_number)
+        self.error_handler.line_number = self.marker_to_line.get(marker_number)
         return self.next_token()
 
     def verify_goto(self, goto_token):
-- 
GitLab