From 10084dec239bb5ea3edc4a047f1b53fb0cec08ce Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=89tienne=20Reuh=20Fildadut?= Date: Thu, 28 Dec 2023 14:51:52 +0100 Subject: [PATCH] Return break while loops --- stdlib/conditionals.lua | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/stdlib/conditionals.lua b/stdlib/conditionals.lua index 75a341d..c5e731b 100644 --- a/stdlib/conditionals.lua +++ b/stdlib/conditionals.lua @@ -1,5 +1,5 @@ local ast = require("ast") -local ArgumentTuple, Nil, Boolean, Identifier = ast.ArgumentTuple, ast.Nil, ast.Boolean, ast.Identifier +local ArgumentTuple, Nil, Boolean, Identifier, Return = ast.ArgumentTuple, ast.Nil, ast.Boolean, ast.Identifier, ast.Return local if_identifier = Identifier:new("_if_status") local if_symbol = if_identifier:to_symbol() @@ -58,6 +58,7 @@ return { end while cond:truthy() do r = expression:call(state, ArgumentTuple:new()) + if Return:is(r) then break end cond = condition:call(state, ArgumentTuple:new()) end return r