From 43213e90f8f17b0fd55f030aac64453249a3af16 Mon Sep 17 00:00:00 2001 From: pepe iborra Date: Tue, 3 Mar 2009 19:37:06 +0000 Subject: [PATCH] Fix #3067: GHCi panics with 'initTc:LIE' while :stepping on code with funny types The problem is that calls to boxyUnify would panic if the types involved contained type functions. It looks like one should wrap these calls with getLIE, although I don't really know what I am doing here --- compiler/ghci/RtClosureInspect.hs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/compiler/ghci/RtClosureInspect.hs b/compiler/ghci/RtClosureInspect.hs index beb7b58..a003fc3 100644 --- a/compiler/ghci/RtClosureInspect.hs +++ b/compiler/ghci/RtClosureInspect.hs @@ -585,7 +585,7 @@ addConstraint actual expected = do recoverTR (traceTR $ fsep [text "Failed to unify", ppr actual, text "with", ppr expected]) (congruenceNewtypes actual expected >>= - uncurry boxyUnify >> return ()) + (getLIE . uncurry boxyUnify) >> return ()) -- TOMDO: what about the coercion? -- we should consider family instances @@ -842,7 +842,7 @@ improveRTTIType hsc_env _ty rtti_ty = runTR_maybe hsc_env $ do (ty_tvs, _, _) <- tcInstType return ty (ty_tvs', _, ty') <- tcInstType (mapM tcInstTyVar) ty (_, _, rtti_ty') <- tcInstType (mapM tcInstTyVar) (sigmaType rtti_ty) - boxyUnify rtti_ty' ty' + getLIE(boxyUnify rtti_ty' ty') tvs1_contents <- zonkTcTyVars ty_tvs' let subst = (uncurry zipTopTvSubst . unzip) [(tv,ty) | (tv,ty) <- zip ty_tvs tvs1_contents -- 1.7.10.4