Fix #3067: GHCi panics with 'initTc:LIE' while :stepping on code with funny types
authorpepe iborra <mnislaih@gmail.com>
Tue, 3 Mar 2009 19:37:06 +0000 (19:37 +0000)
committerpepe iborra <mnislaih@gmail.com>
Tue, 3 Mar 2009 19:37:06 +0000 (19:37 +0000)
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

index beb7b58..a003fc3 100644 (file)
@@ -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