🐐 Various fixes

This commit is contained in:
2026-04-01 14:57:43 +02:00
parent f76a1fcfd4
commit 6d3ded49bf
2 changed files with 34 additions and 2 deletions

View File

@@ -683,9 +683,13 @@ class SiStatement(Node):
if cond:
for statement in self.statements:
vtable, last_val = statement.eval(vtable)
if vtable["#return"] is not None:
break
elif self.else_part:
for statement in self.else_part:
vtable, last_val = statement.eval(vtable)
if vtable["#return"] is not None:
break
return vtable, last_val
@@ -713,12 +717,14 @@ class DumStatement(Node):
while not cond:
for statement in self.statements:
vtable, val = statement.eval(vtable)
if vtable["#break"]:
if vtable["#break"] or vtable["#return"] is not None:
break
last_val = val
if vtable["#break"]:
vtable["#break"] = False
break
if vtable["#return"] is not None:
break
vtable, cond = self.test.eval(vtable)
return vtable, last_val
@@ -753,12 +759,14 @@ class PerStatement(Node):
vtable[variable_name] = item
for statement in self.statements:
vtable, val = statement.eval(vtable)
if vtable["#break"]:
if vtable["#break"] or vtable["#return"] is not None:
break
last_val = val
if vtable["#break"]:
vtable["#break"] = False
break
if vtable["#return"] is not None:
break
return vtable, last_val