Ticket #2830: test5.hs

File test5.hs, 12.7 KB (added by nomeata, 7 years ago)

Modified test4.hs, without the 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 UpdateEvent Method1 ()
157instance UpdateEvent Method2 ()
158instance UpdateEvent Method3 ()
159instance UpdateEvent Method4 ()
160instance UpdateEvent Method5 ()
161instance UpdateEvent Method6 ()
162instance UpdateEvent Method7 ()
163instance UpdateEvent Method8 ()
164instance UpdateEvent Method9 ()
165instance  UpdateEvent Method10 ()
166instance  UpdateEvent Method11 ()
167instance  UpdateEvent Method12 ()
168instance  UpdateEvent Method13 ()
169instance  UpdateEvent Method14 ()
170instance  UpdateEvent Method15 ()
171instance  UpdateEvent Method16 ()
172instance  UpdateEvent Method17 ()
173instance  UpdateEvent Method18 ()
174instance  UpdateEvent Method19 ()
175instance  UpdateEvent Method20 ()
176instance  UpdateEvent Method21 ()
177instance  UpdateEvent Method22 ()
178instance  UpdateEvent Method23 ()
179instance  UpdateEvent Method24 ()
180instance  UpdateEvent Method25 ()
181instance  UpdateEvent Method26 ()
182instance  UpdateEvent Method27 ()
183instance  UpdateEvent Method28 ()
184instance  UpdateEvent Method29 ()
185instance  UpdateEvent Method30 ()
186instance  UpdateEvent Method31 ()
187instance  UpdateEvent Method32 ()
188instance  UpdateEvent Method33 ()
189instance  UpdateEvent Method34 ()
190instance  UpdateEvent Method35 ()
191instance  UpdateEvent Method36 ()
192instance  UpdateEvent Method37 ()
193instance  UpdateEvent Method38 ()
194instance  UpdateEvent Method39 ()
195instance  UpdateEvent Method40 ()
196instance  UpdateEvent Method41 ()
197instance  UpdateEvent Method42 ()
198instance  UpdateEvent Method43 ()
199instance  UpdateEvent Method44 ()
200instance  UpdateEvent Method45 ()
201instance  UpdateEvent Method46 ()
202instance  UpdateEvent Method47 ()
203instance  UpdateEvent Method48 ()
204instance  UpdateEvent Method49 ()
205instance  UpdateEvent Method50 ()
206instance  UpdateEvent Method51 ()
207instance  UpdateEvent Method52 ()
208instance  UpdateEvent Method53 ()
209instance  UpdateEvent Method54 ()
210instance  UpdateEvent Method55 ()
211instance  UpdateEvent Method56 ()
212instance  UpdateEvent Method57 ()
213instance  UpdateEvent Method58 ()
214instance  UpdateEvent Method59 ()
215instance  UpdateEvent Method60 ()
216instance  UpdateEvent Method61 ()
217instance  UpdateEvent Method62 ()
218instance  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 ()