#16077: AvailTC Invariant being violated -------------------------------------+------------------------------------- Reporter: harpocrates | Owner: (none) Type: bug | Status: patch Priority: normal | Milestone: Component: Compiler | Version: 8.6.3 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: | https://gitlab.haskell.org/ghc/ghc/merge_requests/276 -------------------------------------+------------------------------------- Comment (by Alec Theriault <alec.theriault@…>): In [changeset:"2a431640d199b164ca5d233684d4f4bdaf5ca021/ghc" 2a43164/ghc]: {{{ #!CommitTicketReference repository="ghc" revision="2a431640d199b164ca5d233684d4f4bdaf5ca021" Uphold AvailTC Invariant for associated data fams The AvailTC was not be upheld for explicit export module export lists when the module contains associated data families. module A (module A) where class C a where { data T a } instance C () where { data T () = D } Used to (incorrectly) report avails as `[C{C, T;}, T{D;}]`. Note that although `T` is exported, the avail where it is the parent does _not_ list it as its first element. This avail is now correctly listed as `[C{C, T;}, T{T, D;}]`. This was induces a [crash in Haddock][0]. See #16077. [0]: https://github.com/haskell/haddock/issues/979 }}} -- Ticket URL: <http://ghc.haskell.org/trac/ghc/ticket/16077#comment:4> GHC <http://www.haskell.org/ghc/> The Glasgow Haskell Compiler