Commit 23e4e103 authored by Simon Marlow's avatar Simon Marlow
Browse files

FIX #1617: reloading didn't change the :browse output as it should

The problem was that because the interface hadn't changed, we were
re-using the old ModIface.  Unfortunately the ModIface contains the
GlobalRdrEnv for the module, and that *had* changed.  The fix is to
put the new GlobalRdrEnv in the ModIface even if the interface has not
otherwise changed.

ModIface is not really the right place for the GlobalRdrEnv, but
neither is ModDetails, so we should think about a better way to do
this.
parent 427f3443
......@@ -423,7 +423,13 @@ mkIface_ hsc_env maybe_old_iface
; dumpIfSet_dyn dflags Opt_D_dump_hi "FINAL INTERFACE"
(pprModIface new_iface)
; return (new_iface, no_change_at_all) }
-- bug #1617: on reload we weren't updating the PrintUnqualified
-- correctly. This stems from the fact that the interface had
-- not changed, so addVersionInfo returns the old ModIface
-- with the old GlobalRdrEnv (mi_globals).
; let final_iface = new_iface{ mi_globals = Just rdr_env }
; return (final_iface, no_change_at_all) }
where
r1 `le_rule` r2 = ifRuleName r1 <= ifRuleName r2
i1 `le_inst` i2 = ifDFun i1 `le_occ` ifDFun i2
......
Supports Markdown
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