X-Git-Url: http://git.megacz.com/?a=blobdiff_plain;f=compiler%2Fghci%2FDebugger.hs;h=e13b8a809a8648d50c7c7dd91c33e01ae99fe4da;hb=d755f7e69b58791faf56345c2dbaa7793c3700ab;hp=72688ddd515fedf202d94c6475586286a3b1cab1;hpb=f4d6209d11ba41d3bfdd7e14e9859b890915abdb;p=ghc-hetmet.git diff --git a/compiler/ghci/Debugger.hs b/compiler/ghci/Debugger.hs index 72688dd..e13b8a8 100644 --- a/compiler/ghci/Debugger.hs +++ b/compiler/ghci/Debugger.hs @@ -73,12 +73,14 @@ pprintClosureCommand session bindThings force str = do go cms id = do term_ <- GHC.obtainTerm cms force id term <- tidyTermTyVars cms term_ - term' <- if not bindThings then return term - else bindSuspensions cms term + term' <- if bindThings && + False == isUnliftedTypeKind (termType term) + then bindSuspensions cms term + else return term -- Before leaving, we compare the type obtained to see if it's more specific -- Then, we extract a substitution, -- mapping the old tyvars to the reconstructed types. - let Just reconstructed_type = termType term + let reconstructed_type = termType term subst = unifyRTTI (idType id) (reconstructed_type) return (term',subst) @@ -135,11 +137,10 @@ bindSuspensions cms@(Session ref) t = do (term, names) <- t return (RefWrap ty term, names) } - doSuspension freeNames ct mb_ty hval _name = do + doSuspension freeNames ct ty hval _name = do name <- atomicModifyIORef freeNames (\x->(tail x, head x)) n <- newGrimName name - let ty' = fromMaybe (error "unexpected") mb_ty - return (Suspension ct mb_ty hval (Just n), [(n,ty',hval)]) + return (Suspension ct ty hval (Just n), [(n,ty,hval)]) -- A custom Term printer to enable the use of Show instances