From 88006e957373bbd72ec68897474303964885fc68 Mon Sep 17 00:00:00 2001 From: Eduardo Julian Date: Wed, 1 Nov 2017 13:36:15 -0400 Subject: - Minor refactorings. - Fixed some bugs. - Enabled macro-expansion for statements. --- new-luxc/source/luxc/lang/synthesis/case.lux | 17 +++++++++++------ 1 file changed, 11 insertions(+), 6 deletions(-) (limited to 'new-luxc/source/luxc/lang/synthesis/case.lux') 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] [text "text/" Eq] + text/format [number] (coll [list "list/" Fold])) (meta [code "code/" Eq])) @@ -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)) -- cgit v1.2.3