exprIsBottom should look through type lambdas
authorJoachim Breitner <mail@joachim-breitner.de>
Mon, 23 Mar 2015 09:17:25 +0000 (10:17 +0100)
committerJoachim Breitner <mail@joachim-breitner.de>
Mon, 23 Mar 2015 19:33:35 +0000 (20:33 +0100)
as evaluting (\ (@ a) -> e) diverges if and only if evaluating e
diverges. This was found in the context of #10180.

compiler/coreSyn/CoreUtils.hs

index 08f4fcd..b385576 100644 (file)
@@ -702,6 +702,7 @@ exprIsBottom e
     go n (Tick _ e)              = go n e
     go n (Cast e _)              = go n e
     go n (Let _ e)               = go n e
+    go n (Lam v e) | isTyVar v   = go n e
     go _ _                       = False
 
 {-