The Backpack patch.
[ghc.git] / testsuite / tests / backpack / should_compile / bkp32.bkp
1 {-# LANGUAGE RoleAnnotations #-}
2 {-# LANGUAGE ScopedTypeVariables #-}
3 unit prelude-sig where
4     signature Prel where
5         data List a = Nil | Cons a (List a)
6
7 unit arrays-sig where
8     dependency prelude-sig[Prel=<Prel>]
9     signature Array where
10         import Prel
11         data Arr i e
12         something :: List (Arr i e)
13
14 unit structures where
15     dependency arrays-sig[Prel=<Prel>, Array=<Array>]
16     module Set where
17         import Prel
18         data S a = S (List a)
19     module Graph where
20         import Prel
21         import Array
22         data G = G (Arr Int [Int])
23     module Tree where
24         import Prel
25         import Graph
26         data T = T G
27
28 unit arrays-a where
29     dependency prelude-sig[Prel=<Prel>]
30     module Array where
31         import qualified Prel as P
32         type role Arr representational representational
33         data Arr i e = MkArr ()
34         something :: P.List (Arr i e)
35         something = P.Nil
36
37 unit arrays-b where
38     dependency prelude-sig[Prel=<Prel>]
39     module Array where
40         import Prel
41         data Arr i e = ANil | ACons i e (Arr i e)
42         -- NB: If you uncomment this, GHC decides to order the
43         -- quantifiers the other way, and you are a sad panda.
44         something :: Prel.List (Arr i e)
45         something = Cons ANil Nil
46
47 unit graph-a where
48     dependency arrays-a[Prel=<Prel>]
49     dependency structures[Prel=<Prel>,Array=arrays-a[Prel=<Prel>]:Array] (Graph)
50
51 unit graph-b where
52     dependency arrays-b[Prel=<Prel>]
53     dependency structures[Prel=<Prel>,Array=arrays-b[Prel=<Prel>]:Array] (Graph)
54
55 unit multiinst where
56     dependency arrays-a[Prel=<Prel>] (Array as AA)
57     dependency arrays-b[Prel=<Prel>] (Array as AB)
58     dependency structures[Prel=<Prel>,Array=arrays-a[Prel=<Prel>]:Array] (Graph as GA)
59     dependency structures[Prel=<Prel>,Array=arrays-b[Prel=<Prel>]:Array] (Graph as GB)
60     module Client where
61         import qualified GA
62         import qualified GB
63         x = GA.G
64         y = GB.G
65         instance Show GA.G where
66             show = undefined
67         instance Show GB.G where
68             show = undefined
69
70 unit applic-left where
71     dependency arrays-a[Prel=<Prel>]
72     dependency structures[Prel=<Prel>,Array=arrays-a[Prel=<Prel>]:Array] (Graph)
73     module Left where
74         import Graph
75         x :: G
76         x = undefined
77
78 unit applic-right where
79     dependency arrays-a[Prel=<Prel>]
80     dependency structures[Prel=<Prel>,Array=arrays-a[Prel=<Prel>]:Array] (Graph)
81     module Right where
82         import Graph
83         f :: G -> G
84         f = id
85
86 unit applic-bot where
87     dependency applic-left[Prel=<Prel>]
88     dependency applic-right[Prel=<Prel>]
89     module Bot where
90         import Left
91         import Right
92         g = f x