import CoreSyn
import CoreUtils ( applyTypeToArgs )
import CoreFVs ( exprFreeVars, exprsFreeVars )
-import CoreTidy ( tidyIdRules )
+import CoreTidy ( pprTidyIdRules )
import CoreLint ( showPass, endPass )
-import PprCore ( pprIdRules )
import Rules ( addIdSpecialisations, lookupRule )
import UniqSupply ( UniqSupply,
import Bag
import List ( partition )
import Util ( zipEqual, zipWithEqual, cmpList, lengthIs,
- equalLength, lengthAtLeast )
+ equalLength, lengthAtLeast, notNull )
import Outputable
endPass dflags "Specialise" Opt_D_dump_spec binds'
dumpIfSet_dyn dflags Opt_D_dump_rules "Top-level specialisations"
- (vcat (map dump_specs (concat (map bindersOf binds'))))
+ (vcat (map pprTidyIdRules (concat (map bindersOf binds'))))
return binds'
where
- dump_specs var = pprIdRules (tidyIdRules var)
-
-- We need to start with a Subst that knows all the things
-- that are in scope, so that the substitution engine doesn't
-- accidentally re-use a unique that's already in use
-- The first case is the interesting one
| rhs_tyvars `lengthIs` n_tyvars -- Rhs of fn's defn has right number of big lambdas
&& rhs_bndrs `lengthAtLeast` n_dicts -- and enough dict args
- && not (null calls_for_me) -- And there are some calls to specialise
+ && notNull calls_for_me -- And there are some calls to specialise
&& not (isDataConWrapId fn) -- And it's not a data con wrapper, which have
-- stupid overloading that simply discard the dictionary