-
Simon Peyton Jones authored
---------------------------------------------- The CoreTidy/CorePrep/CoreToStg saga continues [actually, this commit mostly completes the job] ---------------------------------------------- DO NOT MERGE! * CorePrep injects implicit bindings, not the type checker, nor CgConTbls. (This way, all the code generators see them, so no need to fiddle with the byte code generator.) As a result, all bindings in the module are for LocalIds, at least until CoreTidy. This is a Big Win. Hence remove nasty isImplicitId test in update_bndr in SimplCore and DmdAnal * hasNoBinding is no longer true of a dataConId (worker). There's an implicit curried binding for it. * Remove yukky test in exprIsTrivial that did not regard a hasNoBinding Id as trivial; similarly in SimplUtils.tryEtaReduce * In CoreTidy, get the names to avoid from the type env. That way it includes implicit bindings too. * CoreTidy set the Arity of a top-level Id permanently; it's up to the rest of the compiler to respect it. Notably, CorePrep uses etaExpand to make the manifest arity match the claimed arity. * As a result, nuke CgArity, so that CgInfo now contains only CafInfo. The CafInfo is knot-tied as before. Other things * In Simplify.simplLazyBind, be a bit keener to float bindings out if it's a top-level binding.
685e04e4