summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTom Smeding <tom@tomsmeding.com>2024-01-27 13:14:22 +0100
committerTom Smeding <tom@tomsmeding.com>2024-01-27 13:14:22 +0100
commit171393dc5abb31811d417dd8fc6cf818d3ba96bb (patch)
treef3e2780b78e0ce600fae3ce12e9fab4f444e26a7
parentfb7156b4aa11f154c3673504ac1f44407ccb0439 (diff)
Less default case
-rw-r--r--src/CHAD.hs22
1 files changed, 21 insertions, 1 deletions
diff --git a/src/CHAD.hs b/src/CHAD.hs
index cc435db..5ae1a07 100644
--- a/src/CHAD.hs
+++ b/src/CHAD.hs
@@ -809,7 +809,27 @@ drev des policy = \case
(EVar ext (d2 (opt2 op)) IZ))
(weakenExpr (WCopy (wSinks' @[_,_])) e2))
- e -> error $ "CHAD: unsupported " ++ takeWhile (/= ' ') (show e)
+ EError t s ->
+ Ret BTop
+ (EError (d1 t) s)
+ (subenvNone (select SMerge des))
+ (EMReturn d2acc (ENil ext))
+
+ -- These should be the next to be implemented, I think
+ EBuild1{} -> err_unsupported "EBuild1"
+ EFold1{} -> err_unsupported "EFold1"
+ EIdx1{} -> err_unsupported "EIdx1"
+
+ EBuild{} -> err_unsupported "EBuild"
+ EIdx{} -> err_unsupported "EIdx"
+
+ EMOne{} -> err_evm
+ EMScope{} -> err_evm
+ EMReturn{} -> err_evm
+ EMBind{} -> err_evm
where
d2acc = d2e (select SAccum des)
+
+ err_evm = error "EVM operations unsupported in the source program"
+ err_unsupported s = error $ "CHAD: unsupported " ++ s