summaryrefslogtreecommitdiff
path: root/lib/lace/builtin.lua
diff options
context:
space:
mode:
Diffstat (limited to 'lib/lace/builtin.lua')
-rw-r--r--lib/lace/builtin.lua21
1 files changed, 16 insertions, 5 deletions
diff --git a/lib/lace/builtin.lua b/lib/lace/builtin.lua
index a45051f..e99105b 100644
--- a/lib/lace/builtin.lua
+++ b/lib/lace/builtin.lua
@@ -15,6 +15,14 @@ end
--[ Allow and Deny ]------------------------------------------------
+local unconditional_result = nil
+
+local function get_set_last_unconditional_result(newv)
+ local ret = unconditional_result
+ unconditional_result = newv
+ return ret
+end
+
local function _do_return(exec_context, result, reason, cond)
if #cond > 0 then
-- Run the conditions
@@ -29,13 +37,15 @@ local function _return(compcontext, result, reason, ...)
if type(reason) ~= "string" then
return compiler().error("Expected reason, got nothing")
end
+
+ local cond = {...}
+ if #cond == 0 then
+ unconditional_result = result
+ end
+
return {
fn = _do_return,
- args = {
- result,
- reason,
- {...}
- }
+ args = { result, reason, cond }
}
end
@@ -73,4 +83,5 @@ end
return {
commands = builtin,
+ get_set_last_unconditional_result = get_set_last_unconditional_result,
}