on master help sign in
Fix lambda lifting bug with uniqueness
eed5b88Edwin Brady
src/IRTS/Lang.hs+4−1
@@ -281,7 +281,10 @@ usedIn env (LLazyExp e) = usedIn env e
281usedIn env (LForce e) = usedIn env e
281usedIn env (LForce e) = usedIn env e
282usedIn env (LLet n v e) = usedIn env v ++ usedIn (env \\ [n]) e
282usedIn env (LLet n v e) = usedIn env v ++ usedIn (env \\ [n]) e
283usedIn env (LLam ns e) = usedIn (env \\ ns) e
283usedIn env (LLam ns e) = usedIn (env \\ ns) e
284−usedIn env (LCon loc i n args) = concatMap (usedIn env) args
284+usedIn env (LCon v i n args) = let rest = concatMap (usedIn env) args in
285+ case v of
286+ Nothing -> rest
287+ Just (Glob n) -> usedArg env n ++ rest
285usedIn env (LProj t i) = usedIn env t
288usedIn env (LProj t i) = usedIn env t
286usedIn env (LCase up e alts) = usedIn env e ++ concatMap (usedInA env) alts
289usedIn env (LCase up e alts) = usedIn env e ++ concatMap (usedInA env) alts
287 where usedInA env (LConCase i n ns e) = usedIn env e
290 where usedInA env (LConCase i n ns e) = usedIn env e