aboutsummaryrefslogtreecommitdiff
path: root/new-luxc/source/luxc/lang/synthesis/case.lux
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--new-luxc/source/luxc/lang/synthesis/case.lux17
1 files changed, 11 insertions, 6 deletions
diff --git a/new-luxc/source/luxc/lang/synthesis/case.lux b/new-luxc/source/luxc/lang/synthesis/case.lux
index 15cb6eca3..e66bbf3a8 100644
--- a/new-luxc/source/luxc/lang/synthesis/case.lux
+++ b/new-luxc/source/luxc/lang/synthesis/case.lux
@@ -2,6 +2,7 @@
lux
(lux (data [bool "bool/" Eq<Bool>]
[text "text/" Eq<Text>]
+ text/format
[number]
(coll [list "list/" Fold<List>]))
(meta [code "code/" Eq<Code>]))
@@ -11,7 +12,7 @@
(def: #export (path pattern)
(-> la;Pattern ls;Path)
(case pattern
- (^code [(~@ membersP)])
+ (^code ("lux case tuple" [(~@ membersP)]))
(case (list;reverse membersP)
#;Nil
(' ("lux case pop"))
@@ -30,12 +31,16 @@
[(n.dec last-idx)
(` ("lux case tuple right" (~ (code;nat last-idx)) (~ (path lastP))))]
prevsP)]
- tuple-path))
+ (` ("lux case seq"
+ (~ tuple-path)
+ ("lux case pop")))))
- (^code ((~ [_ (#;Nat tag)]) (~ [_ (#;Nat num-tags)]) (~ memberP)))
- (if (n.= (n.dec num-tags) tag)
- (` ("lux case variant right" (~ (code;nat tag)) (~ (path memberP))))
- (` ("lux case variant left" (~ (code;nat tag)) (~ (path memberP)))))
+ (^code ("lux case variant" (~ [_ (#;Nat tag)]) (~ [_ (#;Nat num-tags)]) (~ memberP)))
+ (` ("lux case seq"
+ (~ (if (n.= (n.dec num-tags) tag)
+ (` ("lux case variant right" (~ (code;nat tag)) (~ (path memberP))))
+ (` ("lux case variant left" (~ (code;nat tag)) (~ (path memberP))))))
+ ("lux case pop")))
_
pattern))