Ticket #2830: test4.hs

File test4.hs, 14.2 KB (added by nomeata, 7 years ago)

Test case with bug

Line 
1{-# LANGUAGE FlexibleContexts, MultiParamTypeClasses,
2    GADTs, TypeFamilies, FunctionalDependencies, TypeOperators #-}
3
4-- This file demonstrate an bug with HAppS, producing:
5--
6-- test2.o: In function `r4nX_info':
7--  (.text+0xf3c7): undefined reference to `base_DataziTuple_Z63T_con_info'
8--
9-- when linking it. The core seems to contain more hints.
10
11class (Serialize ev) => UpdateEvent ev res | ev -> res
12-- class (Serialize ev, Serialize res) => UpdateEvent ev res | ev -> res
13-- class UpdateEvent ev res | ev -> res
14
15-- type Update state = Ev (StateT state STM)
16type Update state = Maybe
17
18data Method st where
19    Update :: (UpdateEvent ev res) => (ev -> Update st res) -> Method st
20--    Query  :: (QueryEvent ev res) => (ev -> Query st res) -> Method st
21
22class Methods a where
23    methods :: [Method a]
24
25class Serialize a
26
27data MyState = MyState Int
28
29method1  :: (Monad m) => m ()
30method1 = undefined
31method2  :: (Monad m) => m ()
32method2 = undefined
33method3  :: (Monad m) => m ()
34method3 = undefined
35method4  :: (Monad m) => m ()
36method4 = undefined
37method5  :: (Monad m) => m ()
38method5 = undefined
39method6  :: (Monad m) => m ()
40method6 = undefined
41method7  :: (Monad m) => m ()
42method7 = undefined
43method8  :: (Monad m) => m ()
44method8 = undefined
45method9  :: (Monad m) => m ()
46method9 = undefined
47method10  :: (Monad m) => m ()
48method10 = undefined
49method11  :: (Monad m) => m ()
50method11 = undefined
51method12  :: (Monad m) => m ()
52method12 = undefined
53method13  :: (Monad m) => m ()
54method13 = undefined
55method14  :: (Monad m) => m ()
56method14 = undefined
57method15  :: (Monad m) => m ()
58method15 = undefined
59method16  :: (Monad m) => m ()
60method16 = undefined
61method17  :: (Monad m) => m ()
62method17 = undefined
63method18  :: (Monad m) => m ()
64method18 = undefined
65method19  :: (Monad m) => m ()
66method19 = undefined
67method20  :: (Monad m) => m ()
68method20 = undefined
69method21  :: (Monad m) => m ()
70method21 = undefined
71method22  :: (Monad m) => m ()
72method22 = undefined
73method23  :: (Monad m) => m ()
74method23 = undefined
75method24  :: (Monad m) => m ()
76method24 = undefined
77method25  :: (Monad m) => m ()
78method25 = undefined
79method26  :: (Monad m) => m ()
80method26 = undefined
81method27  :: (Monad m) => m ()
82method27 = undefined
83method28  :: (Monad m) => m ()
84method28 = undefined
85method29  :: (Monad m) => m ()
86method29 = undefined
87method30  :: (Monad m) => m ()
88method30 = undefined
89method31  :: (Monad m) => m ()
90method31 = undefined
91method32  :: (Monad m) => m ()
92method32 = undefined
93method33  :: (Monad m) => m ()
94method33 = undefined
95method34  :: (Monad m) => m ()
96method34 = undefined
97method35  :: (Monad m) => m ()
98method35 = undefined
99method36  :: (Monad m) => m ()
100method36 = undefined
101method37  :: (Monad m) => m ()
102method37 = undefined
103method38  :: (Monad m) => m ()
104method38 = undefined
105method39  :: (Monad m) => m ()
106method39 = undefined
107method40  :: (Monad m) => m ()
108method40 = undefined
109method41  :: (Monad m) => m ()
110method41 = undefined
111method42  :: (Monad m) => m ()
112method42 = undefined
113method43  :: (Monad m) => m ()
114method43 = undefined
115method44  :: (Monad m) => m ()
116method44 = undefined
117method45  :: (Monad m) => m ()
118method45 = undefined
119method46  :: (Monad m) => m ()
120method46 = undefined
121method47  :: (Monad m) => m ()
122method47 = undefined
123method48  :: (Monad m) => m ()
124method48 = undefined
125method49  :: (Monad m) => m ()
126method49 = undefined
127method50  :: (Monad m) => m ()
128method50 = undefined
129method51  :: (Monad m) => m ()
130method51 = undefined
131method52  :: (Monad m) => m ()
132method52 = undefined
133method53  :: (Monad m) => m ()
134method53 = undefined
135method54  :: (Monad m) => m ()
136method54 = undefined
137method55  :: (Monad m) => m ()
138method55 = undefined
139method56  :: (Monad m) => m ()
140method56 = undefined
141method57  :: (Monad m) => m ()
142method57 = undefined
143method58  :: (Monad m) => m ()
144method58 = undefined
145method59  :: (Monad m) => m ()
146method59 = undefined
147method60  :: (Monad m) => m ()
148method60 = undefined
149method61  :: (Monad m) => m ()
150method61 = undefined
151method62  :: (Monad m) => m ()
152method62 = undefined
153method63  :: (Monad m) => m ()
154method63 = undefined
155
156instance (Serialize Method1) => UpdateEvent Method1 ()
157instance (Serialize Method2) => UpdateEvent Method2 ()
158instance (Serialize Method3) => UpdateEvent Method3 ()
159instance (Serialize Method4) => UpdateEvent Method4 ()
160instance (Serialize Method5) => UpdateEvent Method5 ()
161instance (Serialize Method6) => UpdateEvent Method6 ()
162instance (Serialize Method7) => UpdateEvent Method7 ()
163instance (Serialize Method8) => UpdateEvent Method8 ()
164instance (Serialize Method9) => UpdateEvent Method9 ()
165instance (Serialize Method10) => UpdateEvent Method10 ()
166instance (Serialize Method11) => UpdateEvent Method11 ()
167instance (Serialize Method12) => UpdateEvent Method12 ()
168instance (Serialize Method13) => UpdateEvent Method13 ()
169instance (Serialize Method14) => UpdateEvent Method14 ()
170instance (Serialize Method15) => UpdateEvent Method15 ()
171instance (Serialize Method16) => UpdateEvent Method16 ()
172instance (Serialize Method17) => UpdateEvent Method17 ()
173instance (Serialize Method18) => UpdateEvent Method18 ()
174instance (Serialize Method19) => UpdateEvent Method19 ()
175instance (Serialize Method20) => UpdateEvent Method20 ()
176instance (Serialize Method21) => UpdateEvent Method21 ()
177instance (Serialize Method22) => UpdateEvent Method22 ()
178instance (Serialize Method23) => UpdateEvent Method23 ()
179instance (Serialize Method24) => UpdateEvent Method24 ()
180instance (Serialize Method25) => UpdateEvent Method25 ()
181instance (Serialize Method26) => UpdateEvent Method26 ()
182instance (Serialize Method27) => UpdateEvent Method27 ()
183instance (Serialize Method28) => UpdateEvent Method28 ()
184instance (Serialize Method29) => UpdateEvent Method29 ()
185instance (Serialize Method30) => UpdateEvent Method30 ()
186instance (Serialize Method31) => UpdateEvent Method31 ()
187instance (Serialize Method32) => UpdateEvent Method32 ()
188instance (Serialize Method33) => UpdateEvent Method33 ()
189instance (Serialize Method34) => UpdateEvent Method34 ()
190instance (Serialize Method35) => UpdateEvent Method35 ()
191instance (Serialize Method36) => UpdateEvent Method36 ()
192instance (Serialize Method37) => UpdateEvent Method37 ()
193instance (Serialize Method38) => UpdateEvent Method38 ()
194instance (Serialize Method39) => UpdateEvent Method39 ()
195instance (Serialize Method40) => UpdateEvent Method40 ()
196instance (Serialize Method41) => UpdateEvent Method41 ()
197instance (Serialize Method42) => UpdateEvent Method42 ()
198instance (Serialize Method43) => UpdateEvent Method43 ()
199instance (Serialize Method44) => UpdateEvent Method44 ()
200instance (Serialize Method45) => UpdateEvent Method45 ()
201instance (Serialize Method46) => UpdateEvent Method46 ()
202instance (Serialize Method47) => UpdateEvent Method47 ()
203instance (Serialize Method48) => UpdateEvent Method48 ()
204instance (Serialize Method49) => UpdateEvent Method49 ()
205instance (Serialize Method50) => UpdateEvent Method50 ()
206instance (Serialize Method51) => UpdateEvent Method51 ()
207instance (Serialize Method52) => UpdateEvent Method52 ()
208instance (Serialize Method53) => UpdateEvent Method53 ()
209instance (Serialize Method54) => UpdateEvent Method54 ()
210instance (Serialize Method55) => UpdateEvent Method55 ()
211instance (Serialize Method56) => UpdateEvent Method56 ()
212instance (Serialize Method57) => UpdateEvent Method57 ()
213instance (Serialize Method58) => UpdateEvent Method58 ()
214instance (Serialize Method59) => UpdateEvent Method59 ()
215instance (Serialize Method60) => UpdateEvent Method60 ()
216instance (Serialize Method61) => UpdateEvent Method61 ()
217instance (Serialize Method62) => UpdateEvent Method62 ()
218instance (Serialize Method63) => UpdateEvent Method63 ()
219
220instance Methods Main.MyState where
221    { methods = [      Update (\ Method1 -> Main.method1),
222                       Update (\ Method2 -> Main.method2),
223                       Update (\ Method3 -> Main.method3),
224                       Update (\ Method4 -> Main.method4),
225                       Update (\ Method5 -> Main.method5),
226                       Update (\ Method6 -> Main.method6),
227                       Update (\ Method7 -> Main.method7),
228                       Update (\ Method8 -> Main.method8),
229                       Update (\ Method9 -> Main.method9),
230                       Update (\ Method10 -> Main.method10),
231                       Update (\ Method11 -> Main.method11),
232                       Update (\ Method12 -> Main.method12),
233                       Update (\ Method13 -> Main.method13),
234                       Update (\ Method14 -> Main.method14),
235                       Update (\ Method15 -> Main.method15),
236                       Update (\ Method16 -> Main.method16),
237                       Update (\ Method17 -> Main.method17),
238                       Update (\ Method18 -> Main.method18),
239                       Update (\ Method19 -> Main.method19),
240                       Update (\ Method20 -> Main.method20),
241                       Update (\ Method21 -> Main.method21),
242                       Update (\ Method22 -> Main.method22),
243                       Update (\ Method23 -> Main.method23),
244                       Update (\ Method24 -> Main.method24),
245                       Update (\ Method25 -> Main.method25),
246                       Update (\ Method26 -> Main.method26),
247                       Update (\ Method27 -> Main.method27),
248                       Update (\ Method28 -> Main.method28),
249                       Update (\ Method29 -> Main.method29),
250                       Update (\ Method30 -> Main.method30),
251                       Update (\ Method31 -> Main.method31),
252                       Update (\ Method32 -> Main.method32),
253                       Update (\ Method33 -> Main.method33),
254                       Update (\ Method34 -> Main.method34),
255                       Update (\ Method35 -> Main.method35),
256                       Update (\ Method36 -> Main.method36),
257                       Update (\ Method37 -> Main.method37),
258                       Update (\ Method38 -> Main.method38),
259                       Update (\ Method39 -> Main.method39),
260                       Update (\ Method40 -> Main.method40),
261                       Update (\ Method41 -> Main.method41),
262                       Update (\ Method42 -> Main.method42),
263                       Update (\ Method43 -> Main.method43),
264                       Update (\ Method44 -> Main.method44),
265                       Update (\ Method45 -> Main.method45),
266                       Update (\ Method46 -> Main.method46),
267                       Update (\ Method47 -> Main.method47),
268                       Update (\ Method48 -> Main.method48),
269                       Update (\ Method49 -> Main.method49),
270                       Update (\ Method50 -> Main.method50),
271                       Update (\ Method51 -> Main.method51),
272                       Update (\ Method52 -> Main.method52),
273                       Update (\ Method53 -> Main.method53),
274                       Update (\ Method54 -> Main.method54),
275                       Update (\ Method55 -> Main.method55),
276                       Update (\ Method56 -> Main.method56),
277                       Update (\ Method57 -> Main.method57),
278                       Update (\ Method58 -> Main.method58),
279                       Update (\ Method59 -> Main.method59),
280                       Update (\ Method60 -> Main.method60),
281                       Update (\ Method61 -> Main.method61),
282                       Update (\ Method62 -> Main.method62),
283                       Update (\ Method63 -> Main.method63)] }
284data Method1 = Method1 
285data Method2 = Method2 
286data Method3 = Method3 
287data Method4 = Method4 
288data Method5 = Method5 
289data Method6 = Method6 
290data Method7 = Method7 
291data Method8 = Method8 
292data Method9 = Method9 
293data Method10 = Method10 
294data Method11 = Method11 
295data Method12 = Method12 
296data Method13 = Method13 
297data Method14 = Method14 
298data Method15 = Method15 
299data Method16 = Method16 
300data Method17 = Method17 
301data Method18 = Method18 
302data Method19 = Method19 
303data Method20 = Method20 
304data Method21 = Method21 
305data Method22 = Method22 
306data Method23 = Method23 
307data Method24 = Method24 
308data Method25 = Method25 
309data Method26 = Method26 
310data Method27 = Method27 
311data Method28 = Method28 
312data Method29 = Method29 
313data Method30 = Method30 
314data Method31 = Method31 
315data Method32 = Method32 
316data Method33 = Method33 
317data Method34 = Method34 
318data Method35 = Method35 
319data Method36 = Method36 
320data Method37 = Method37 
321data Method38 = Method38 
322data Method39 = Method39 
323data Method40 = Method40 
324data Method41 = Method41 
325data Method42 = Method42 
326data Method43 = Method43 
327data Method44 = Method44 
328data Method45 = Method45 
329data Method46 = Method46 
330data Method47 = Method47 
331data Method48 = Method48 
332data Method49 = Method49 
333data Method50 = Method50 
334data Method51 = Method51 
335data Method52 = Method52 
336data Method53 = Method53 
337data Method54 = Method54 
338data Method55 = Method55 
339data Method56 = Method56 
340data Method57 = Method57 
341data Method58 = Method58 
342data Method59 = Method59 
343data Method60 = Method60 
344data Method61 = Method61 
345data Method62 = Method62 
346data Method63 = Method63 
347
348instance Serialize Method1
349instance Serialize Method2
350instance Serialize Method3
351instance Serialize Method4
352instance Serialize Method5
353instance Serialize Method6
354instance Serialize Method7
355instance Serialize Method8
356instance Serialize Method9
357instance Serialize Method10
358instance Serialize Method11
359instance Serialize Method12
360instance Serialize Method13
361instance Serialize Method14
362instance Serialize Method15
363instance Serialize Method16
364instance Serialize Method17
365instance Serialize Method18
366instance Serialize Method19
367instance Serialize Method20
368instance Serialize Method21
369instance Serialize Method22
370instance Serialize Method23
371instance Serialize Method24
372instance Serialize Method25
373instance Serialize Method26
374instance Serialize Method27
375instance Serialize Method28
376instance Serialize Method29
377instance Serialize Method30
378instance Serialize Method31
379instance Serialize Method32
380instance Serialize Method33
381instance Serialize Method34
382instance Serialize Method35
383instance Serialize Method36
384instance Serialize Method37
385instance Serialize Method38
386instance Serialize Method39
387instance Serialize Method40
388instance Serialize Method41
389instance Serialize Method42
390instance Serialize Method43
391instance Serialize Method44
392instance Serialize Method45
393instance Serialize Method46
394instance Serialize Method47
395instance Serialize Method48
396instance Serialize Method49
397instance Serialize Method50
398instance Serialize Method51
399instance Serialize Method52
400instance Serialize Method53
401instance Serialize Method54
402instance Serialize Method55
403instance Serialize Method56
404instance Serialize Method57
405instance Serialize Method58
406instance Serialize Method59
407instance Serialize Method60
408instance Serialize Method61
409instance Serialize Method62
410instance Serialize Method63
411
412main = return ()