Worker/wrapper generation sometimes has to add a dummy void (State#) argument
to retain laziness. But when generating the strictness signature for the
worker, I forgot to take account of the extra argument, resulting in a
bogus strictness signature.
Result, chaos. Trac 317 shows this up, and this patch fixes it.
returnUs (id, id, res_ty)
) `thenUs` \ (wrap_fn_cpr, work_fn_cpr, _cpr_res_ty) ->
- returnUs ([idNewDemandInfo v | v <- work_args, isId v],
+ returnUs ([idNewDemandInfo v | v <- work_call_args, isId v],
Note InlineMe . wrap_fn_args . wrap_fn_cpr . wrap_fn_str . applyToVars work_call_args . Var,
mkLams work_lam_args. work_fn_str . work_fn_cpr . work_fn_args)
-- We use an INLINE unconditionally, even if the wrapper turns out to be