> TyVarTemplate
> )
> import Digraph ( dfs )
-> import Id ( idType, toplevelishId, updateIdType,
-> getIdInfo, replaceIdInfo, eqId, Id
+> import Id ( idType, updateIdType,
+> addIdDeforestInfo, eqId, Id
> )
> import IdInfo
-> import Maybes ( Maybe(..) )
> import Outputable
> import Pretty
> import UniqSupply
> loop ls (Var (Label e e1))
> =
> d2c e `thenUs` \core_e ->
->-- trace ("loop:\n" ++ ppShow 80 (ppr PprDebug core_e)) $
+>-- trace ("loop:\n" ++ show (ppr PprDebug core_e)) $
> mapUs (\(f,e',val_args,ty_args) ->
> renameExprs e' e `thenUs` \r ->
>
> newDefId type_of_f `thenUs` \f' ->
> let
-> f = replaceIdInfo f'
-> (addInfo (getIdInfo f') DoDeforest)
+> f = addIdDeforestInfo f' DoDeforest
> in
> loop ((f,e,val_args,ty_args):ls) e1
> `thenUs` \res@(ls',bs,bls,e') ->
> if f `elem` ls' then
> d2c e' `thenUs` \core_e' ->
> trace ("In Forward Loop " ++
-> ppShow 80 (ppr PprDebug f) ++ "\n" ++
-> ppShow 80 (ppr PprDebug core_e')) $
+> show (ppr PprDebug f) ++ "\n" ++
+> show (ppr PprDebug core_e')) $
> if f `notElem` (freeVars (head back_loops)) then
> returnUs (ls', bs, bls, head back_loops)
> else
> if not (null back_loops) then
> d2c e' `thenUs` \core_e ->
> trace ("Floating back loop:\n"
-> ++ ppShow 80 (ppr PprDebug core_e))
+> ++ show (ppr PprDebug core_e))
> returnUs (ls', bs, back_loops ++ bls, e')
> else
> returnUs res
> t = foldl App (Var (DefArgVar new_id))
> (map mkVar fvs)
> in
-> trace ("adding " ++ show (length fvs) ++ " args to " ++ ppShow 80 (ppr PprDebug id)) $
+> trace ("adding " ++ show (length fvs) ++ " args to " ++ show (ppr PprDebug id)) $
> ((new_id, mkValLam fvs e), [(id,t)])
> where
> fvs = case e of