diff options
author | Tom Smeding <tom@tomsmeding.com> | 2024-01-27 13:14:22 +0100 |
---|---|---|
committer | Tom Smeding <tom@tomsmeding.com> | 2024-01-27 13:14:22 +0100 |
commit | 171393dc5abb31811d417dd8fc6cf818d3ba96bb (patch) | |
tree | f3e2780b78e0ce600fae3ce12e9fab4f444e26a7 | |
parent | fb7156b4aa11f154c3673504ac1f44407ccb0439 (diff) |
Less default case
-rw-r--r-- | src/CHAD.hs | 22 |
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 |