[GHC] #14396: Hs-boot woes during family instance consistency checks
GHC
ghc-devs at haskell.org
Sun Oct 29 04:57:40 UTC 2017
#14396: Hs-boot woes during family instance consistency checks
-------------------------------------+-------------------------------------
Reporter: simonpj | Owner: (none)
Type: bug | Status: new
Priority: normal | Milestone:
Component: Compiler | Version: 8.2.1
Resolution: | Keywords:
Operating System: Unknown/Multiple | Architecture:
| Unknown/Multiple
Type of failure: None/Unknown | Test Case:
Blocked By: | Blocking:
Related Tickets: | Differential Rev(s):
Wiki Page: |
-------------------------------------+-------------------------------------
Comment (by ezyang):
Going back to #11062
In this ticket, we decided to fix one particular version of the problem by
*deferring* checking a boot-declared type family for conflicts until after
we actually typechecked the type family. But as subsequent tickets
demonstrated, it is not only the type family which can be defined too
early: types referenced inside the LHS and RHS of the instance can also be
referenced too early. So let's revisit the fix from before. Here is my
proposal:
For every axiom, check it for consistency with the environment after all
hs-boot types it mentions on the LHS or RHS (I am not sure if this has to
be transitive) are finished being typechecked. The most expedient way to
implement this is probably to extend `FamInst` to also record a list of
"involved" Names, which we can key off of (we can't actually poke `fi_tys`
or `fi_rhs` because they would trigger typechecking of the hs-boot type.)
--
Ticket URL: <http://ghc.haskell.org/trac/ghc/ticket/14396#comment:2>
GHC <http://www.haskell.org/ghc/>
The Glasgow Haskell Compiler
More information about the ghc-tickets
mailing list