76e9ace8119154e2fbc88c4036ea0837e7ee75da
[ghc.git] / testsuite / tests / backpack / should_compile / bkp35.bkp
1 {-# LANGUAGE FlexibleInstances #-}
2 unit p where
3     signature A where
4         data K a
5         instance Read a => Show (K a)
6 unit q where
7     signature A where
8         data K a
9         instance Show a => Show (K a)
10 unit r where
11     dependency p[A=<A>]
12     dependency q[A=<A>]
13     -- At the moment, the merge arbitrarily picks one of the
14     -- instances to make available, so only one of these statements
15     -- will typecheck.  Somehow need an OR constraint (but type
16     -- class solver doesn't backtrack, so that ain't gonna work).
17     --
18     -- It's actually a bit interesting to decide what this should
19     -- be: "instance Show a" would satisfy both of these, but
20     -- nothing else seems to work (incoherent instance is not
21     -- enough because GHC could pick the wrong instance and then
22     -- fail to solve the constraint.)
23     module R where
24         import A
25         f :: Show a => K a -> String
26         f = show
27         g :: Read a => K a -> String
28         g = show