Commit bc115352 authored by simonpj@microsoft.com's avatar simonpj@microsoft.com
Browse files

Find the correct external ids when there's a wrapper

We were failing to externalise the wrapper id for a function
that had one.
parent 241b0013
......@@ -709,10 +709,17 @@ addExternal expose_all id = (new_needed_ids, show_unfold)
mb_unfold_ids :: Maybe (IdSet, [Id]) -- Nothing => don't unfold
mb_unfold_ids = case unfoldingInfo idinfo of
CoreUnfolding { uf_tmpl = unf_rhs, uf_src = src, uf_guidance = guide }
| show_unfolding src guide
-> Just (exprFvsInOrder unf_rhs)
| show_unfolding src guide
-> Just (unf_ext_ids src unf_rhs)
DFunUnfolding _ ops -> Just (exprsFvsInOrder ops)
_ -> Nothing
where
unf_ext_ids (InlineWrapper v) _ = (unitVarSet v, [v])
unf_ext_ids _ unf_rhs = exprFvsInOrder unf_rhs
-- For a wrapper, externalise the wrapper id rather than the
-- fvs of the rhs. The two usually come down to the same thing
-- but I've seen cases where we had a wrapper id $w but a
-- rhs where $w had been inlined; see Trac #3922
show_unfolding unf_source unf_guidance
= expose_all -- 'expose_all' says to expose all
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment