aboutsummaryrefslogtreecommitdiff
path: root/stdlib
diff options
context:
space:
mode:
Diffstat (limited to 'stdlib')
-rw-r--r--stdlib/source/library/lux/control/try.lux16
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'"}))