From af1d426f4af813afdb110f339a7d3490432fc8f5 Mon Sep 17 00:00:00 2001 From: Lukasz Czajka Date: Thu, 30 Mar 2023 19:25:38 +0200 Subject: [PATCH] fix closure traversal bug --- src/Juvix/Compiler/Core/Extra/Base.hs | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/Juvix/Compiler/Core/Extra/Base.hs b/src/Juvix/Compiler/Core/Extra/Base.hs index e59dccbf99..27e27d9d30 100644 --- a/src/Juvix/Compiler/Core/Extra/Base.hs +++ b/src/Juvix/Compiler/Core/Extra/Base.hs @@ -714,10 +714,12 @@ destruct = \case NodeDetails { _nodeInfo = i, _nodeSubinfos = [], - _nodeChildren = oneBinder bi b : map noBinders env, + _nodeChildren = manyBinders binders b : map noBinders env, _nodeReassemble = someChildren $ \i' (b' :| env') -> Closure env' (Lambda i' bi b') } + where + binders = replicate (length env) (mkBinder' mkDynamic') ++ [bi] reassembleDetails :: NodeDetails -> [Node] -> Node reassembleDetails d ns = (d ^. nodeReassemble) (d ^. nodeInfo) (d ^. nodeSubinfos) ns