diff options
Diffstat (limited to 'stdlib')
-rw-r--r-- | stdlib/source/library/lux/control/try.lux | 16 |
1 files changed, 15 insertions, 1 deletions
diff --git a/stdlib/source/library/lux/control/try.lux b/stdlib/source/library/lux/control/try.lux index 4da14bb92..d00d15d28 100644 --- a/stdlib/source/library/lux/control/try.lux +++ b/stdlib/source/library/lux/control/try.lux @@ -150,4 +150,18 @@ (~ else))))]} _ - {#Failure "Wrong syntax for else"})) + {#Failure "Wrong syntax for 'else'"})) + +(macro: .public (when tokens state) + (case tokens + (pattern (.list test then)) + (let [code#encoded ("lux in-module" "library/lux" .code#encoded) + text$ ("lux in-module" "library/lux" .text$)] + {.#Right [state (.list (` (.if (~ test) + (~ then) + {..#Failure (~ (text$ ($_ "lux text concat" + "[" (code#encoded (` .when)) "]" + " " "Invalid condition:")))})))]}) + + _ + {.#Left "Wrong syntax for 'when'"})) |