
#8338: Incoherent instances without -XIncoherentInstances ------------------------------------+------------------------------------- Reporter: goldfire | Owner: Type: bug | Status: new Priority: normal | Milestone: Component: Compiler | Version: 7.6.3 Keywords: | Operating System: Unknown/Multiple Architecture: Unknown/Multiple | Type of failure: None/Unknown Difficulty: Unknown | Test Case: Blocked By: | Blocking: Related Tickets: | ------------------------------------+------------------------------------- Consider the following 4 modules: {{{ {-# LANGUAGE GADTs #-} module A where data One = One data ShowInstFor a = Show a => MkSIF incoherent :: ShowInstFor One -> ShowInstFor One -> String incoherent MkSIF MkSIF = show One }}} {{{ module B where import A instance Show One where show _ = "from module B" fromB :: ShowInstFor One fromB = MkSIF }}} {{{ module C where import A instance Show One where show _ = "from module C" fromC :: ShowInstFor One fromC = MkSIF }}} {{{ module D where import A import B import C oops1 = incoherent fromB fromC oops2 = incoherent fromC fromB }}} According to ghci, `oops1` is `"from moduleB"` and `oops2` is `"from module C"`. This seems bad. -- Ticket URL: http://ghc.haskell.org/trac/ghc/ticket/8338 GHC http://www.haskell.org/ghc/ The Glasgow Haskell Compiler