aboutsummaryrefslogtreecommitdiff
path: root/lux-jvm/source/luxc/lang/translation/jvm/case.lux
diff options
context:
space:
mode:
Diffstat (limited to 'lux-jvm/source/luxc/lang/translation/jvm/case.lux')
-rw-r--r--lux-jvm/source/luxc/lang/translation/jvm/case.lux18
1 files changed, 10 insertions, 8 deletions
diff --git a/lux-jvm/source/luxc/lang/translation/jvm/case.lux b/lux-jvm/source/luxc/lang/translation/jvm/case.lux
index 9a5172966..8e90b4510 100644
--- a/lux-jvm/source/luxc/lang/translation/jvm/case.lux
+++ b/lux-jvm/source/luxc/lang/translation/jvm/case.lux
@@ -9,6 +9,8 @@
[data
[collection
["[0]" list ("[1]@[0]" mix)]]]
+ [macro
+ ["^" pattern]]
[math
[number
["n" nat]]]
@@ -128,7 +130,7 @@
(_.label @else)
elseG))))
- (^template [<tag> <unwrap> <dup> <pop> <test> <comparison> <if>]
+ (^.template [<tag> <unwrap> <dup> <pop> <test> <comparison> <if>]
[{<tag> cons}
(do [@ phase.monad]
[forkG (: (Operation Inst)
@@ -163,8 +165,8 @@
bodyI
(_.GOTO @end))))
- (^template [<pattern> <right?>]
- [(^ (<pattern> lefts))
+ (^.template [<pattern> <right?>]
+ [(pattern (<pattern> lefts))
(operation@in (<| _.with_label (function (_ @success))
_.with_label (function (_ @fail))
(|>> peekI
@@ -184,15 +186,15 @@
[synthesis.side/right true])
... Extra optimization
- (^template [<path> <projection>]
- [(^ (<path> lefts))
+ (^.template [<path> <projection>]
+ [(pattern (<path> lefts))
(operation@in (|>> peekI
(<projection> lefts)
pushI))
- (^ (synthesis.path/seq
- (<path> lefts)
- (synthesis.!bind_top register thenP)))
+ (pattern (synthesis.path/seq
+ (<path> lefts)
+ (synthesis.!bind_top register thenP)))
(do phase.monad
[then! (path' stack_depth @else @end phase archive thenP)]
(in (|>> peekI