
#10270: inconsistent semantics of type class instance visibility outside recursive modules -------------------------------------+------------------------------------- Reporter: skilpat | Owner: Type: bug | Status: new Priority: normal | Milestone: Component: Compiler | Version: 7.10.1 Resolution: | Keywords: Operating System: MacOS X | Architecture: x86_64 Type of failure: GHC rejects | (amd64) valid program | Test Case: Blocked By: | Blocking: Related Tickets: #9562 | Differential Revisions: -------------------------------------+------------------------------------- Comment (by ezyang): The plan was for orphan instances, to check if any given instance was in the set of orphan modules which are transitively imported from this module. We did implement it. Unfortunately, this doesn't directly help here because the instance in A.hs is NOT an orphan, so we just assume that it's in scope. So in some sense, this is the same problem that we were grappling with hsigs: sometimes, a non-orphan instance should NOT be visible, because it was not defined in the hs-boot/hsig file. We ''also'' spent a bit of time thinking about how to solve this, but all of our solutions boiled down to some variant of "put the set of transitively imported modules (including non- orphan modules)" into the interface, with various schemes for optimizing this since this results in quadratic growth of interface files. -- Ticket URL: http://ghc.haskell.org/trac/ghc/ticket/10270#comment:4 GHC http://www.haskell.org/ghc/ The Glasgow Haskell Compiler