Make okConIdOcc recognize unboxed tuples
[ghc.git] / testsuite / tests / th / all.T
1 # NOTICE TO DEVELOPERS
2 # ~~~~~~~~~~~~~~~~~~~~
3 # Adding a TemplateHaskell test?  If it only contains (non-quasi) quotes
4 # and no splices, consider adding it to the quotes/ directory instead
5 # of the th/ directory; this way, we can test it on the stage 1 compiler too!
6
7 def f(name, opts):
8     opts.extra_hc_opts = '-XTemplateHaskell -package template-haskell'
9 setTestOpts(f)
10 setTestOpts(req_interp)
11 # TH should work with -fexternal-interpreter too
12 setTestOpts(extra_ways(['ext-interp']))
13 setTestOpts(only_ways(['normal','ghci','ext-interp']))
14
15 test('TH_mkName', normal, compile, ['-v0'])
16 test('TH_1tuple', normal, compile_fail, ['-v0'])
17
18 test('TH_repE2', normal, compile_and_run, [''])
19 test('TH_repPrim', normal, compile, ['-v0'])
20 test('TH_repPrim2', normal, compile, ['-v0'])
21 test('TH_repUnboxedTuples', normal, compile, ['-v0'])
22 test('TH_spliceGuard', normal, compile, ['-v0'])
23 test('TH_repPrimOutput', normal, compile_and_run, [''])
24 test('TH_repPrimOutput2', normal, compile_and_run, [''])
25 test('TH_repGuard', normal, compile, ['-v0'])
26 test('TH_repGuardOutput', normal, compile_and_run, [''])
27 test('TH_repPatSig', normal, compile_fail, [''])
28
29 test('TH_overlaps', normal, compile, ['-v0'])
30
31 test('TH_spliceE5',
32      extra_clean(['TH_spliceE5_Lib.hi', 'TH_spliceE5_Lib.o']),
33      multimod_compile_and_run,
34      ['TH_spliceE5.hs', '-v0 ' + config.ghc_th_way_flags])
35
36 test('TH_spliceE6', normal, compile, ['-v0'])
37
38 test('TH_NestedSplices',
39      extra_clean(['TH_NestedSplices_Lib.hi', 'TH_NestedSplices_Lib.o']),
40      multimod_compile,
41      ['TH_NestedSplices.hs', '-v0 ' + config.ghc_th_way_flags])
42
43 # Testing profiling with TH is a bit tricky (when not using
44 # -fexternal-interpreter); we've already disabled
45 # the prof way above, and also we want to add options specifically for
46 # profiling (-osuf p.o) because this is necessary when mixing
47 # profiling w/ TH.  Furthermore we must have built the program the
48 # normal way first, which is why the work is done by a Makefile rule.
49 test('TH_spliceE5_prof',
50      [req_profiling,
51       only_ways(['normal']),
52       when(ghc_dynamic(), expect_broken(11495)),
53       extra_clean(['TH_spliceE5_prof_Lib.p.o', 'TH_spliceE5_prof_Lib.hi',
54                    'TH_spliceE5_prof_Lib.dyn_o', 'TH_spliceE5_prof_Lib.dyn_hi',
55                    'TH_spliceE5_prof.dyn_o', 'TH_spliceE5_prof.dyn_hi',
56                    'TH_spliceE5_prof_Lib.o','TH_spliceE5_prof.p.o'])],
57      run_command,
58      ['$MAKE -s --no-print-directory TH_spliceE5_prof'])
59
60 test('TH_spliceE5_prof_ext',
61      [req_profiling,
62       only_ways(['normal']),
63       extra_clean(['TH_spliceE5_prof_ext_Lib.hi',
64                    'TH_spliceE5_prof_ext_Lib.o'])],
65      run_command,
66      ['$MAKE -s --no-print-directory TH_spliceE5_prof_ext'])
67
68 test('TH_spliceD1',
69      extra_clean(['TH_spliceD1_Lib.hi', 'TH_spliceD1_Lib.o']),
70      multimod_compile_fail,
71      ['TH_spliceD1', '-v0 ' + config.ghc_th_way_flags])
72
73 test('TH_spliceD2',
74      extra_clean(['TH_spliceD2_Lib.hi', 'TH_spliceD2_Lib.o']),
75      multimod_compile,
76      ['TH_spliceD2', '-v0'])
77
78 test('TH_reifyDecl1', normal, compile, ['-v0'])
79 test('TH_reifyDecl2', normal, compile, ['-v0'])
80 test('TH_reifyLocalDefs', normal, compile, ['-v0'])
81
82 test('TH_reifyMkName', normal, compile, ['-v0'])
83
84 test('TH_reifyInstances', normal, compile, ['-v0'])
85
86 test('TH_spliceDecl1', normal, compile, ['-v0'])
87 test('TH_spliceDecl2', normal, compile, ['-v0'])
88 test('TH_spliceDecl3',
89      extra_clean(['TH_spliceDecl3_Lib.hi', 'TH_spliceDecl3_Lib.o']),
90      multimod_compile,
91      ['TH_spliceDecl3', '-v0 ' + config.ghc_th_way_flags])
92 test('TH_spliceDecl4',
93      extra_clean(['TH_spliceDecl4_Lib.hi', 'TH_spliceDecl4_Lib.o']),
94      multimod_compile,
95      ['TH_spliceDecl4', '-v0 ' + config.ghc_th_way_flags])
96
97 test('T2597a',
98      extra_clean(['T2597a_Lib.hi', 'T2597a_Lib.o']),
99      multimod_compile,
100      ['T2597a', '-v0 ' + config.ghc_th_way_flags])
101
102 test('T2597b',
103      extra_clean(['T2597b_Lib.hi', 'T2597b_Lib.o']),
104      multimod_compile_fail,
105      ['T2597b', '-v0 ' + config.ghc_th_way_flags])
106
107 test('TH_spliceE1', normal, compile_and_run, [''])
108 test('TH_spliceExpr1', normal, compile, ['-v0'])
109 test('TH_spliceE3', normal, compile, ['-v0'])
110 test('TH_spliceE4', normal, compile_and_run, [''])
111
112 test('TH_class1', normal, compile, ['-v0'])
113 test('TH_tuple1', normal, compile, ['-v0'])
114 test('TH_genEx',
115      extra_clean(['TH_genExLib.hi', 'TH_genExLib.o']),
116      multimod_compile,
117      ['TH_genEx', '-v0 ' + config.ghc_th_way_flags])
118
119 test('TH_where', normal, compile_and_run, [''])
120
121 test('TH_spliceInst', normal, compile, ['-v0'])
122
123 test('TH_exn1', normal, compile_fail, ['-v0'])
124
125 test('TH_dupdecl', normal, compile_fail, ['-v0'])
126 test('TH_exn2', normal, compile_fail, ['-v0'])
127
128 test('TH_recover', normal, compile_and_run, [''])
129 test('TH_dataD1', normal, compile_fail, ['-v0'])
130
131 test('TH_fail', normal, compile_fail, ['-v0'])
132 test('TH_scopedTvs', normal, compile, ['-v0'])
133
134 test('TH_runIO', normal, compile_fail, ['-v0'])
135
136 test('TH_ghci1', only_ways(['ghci']), ghci_script, ['TH_ghci1.script'])
137
138 test('TH_linePragma', normal, compile_fail, ['-v0'])
139
140 test('T1830_3',
141      extra_clean(['T1830_3a.o','T1830_3a.hi']),
142      multimod_compile_and_run,
143      ['T1830_3', '-v0 ' + config.ghc_th_way_flags])
144 test('T2700', normal, compile, ['-v0'])
145 test('T2817', normal, compile, ['-v0'])
146 test('T2713', normal, compile_fail, ['-v0'])
147 test('T2674', normal, compile_fail, ['-v0'])
148 test('TH_emptycase', normal, compile, ['-v0'])
149
150 test('T2386', [ extra_clean(['T2386_Lib.hi', 'T2386_Lib.o']),
151                 only_ways(['normal']) ],
152               run_command,
153               ['$MAKE -s --no-print-directory T2386'] )
154
155 test('T2685', extra_clean(['T2685a.hi','T2685a.o']),
156               multimod_compile, ['T2685', '-v0 ' + config.ghc_th_way_flags])
157
158 test('TH_sections', normal, compile, ['-v0'])
159
160 test('TH_tf1', normal, compile, ['-v0'])
161 test('TH_tf3', normal, compile, ['-v0'])
162
163 test('TH_pragma', normal, compile, ['-v0 -dsuppress-uniques'])
164 test('T3177', normal, compile, ['-v0'])
165 test('T3177a', normal, compile_fail, ['-v0'])
166
167 test('T3319', normal, compile, ['-ddump-splices -v0'])
168 test('TH_foreignInterruptible', normal, compile, ['-ddump-splices -v0'])
169 test('TH_foreignCallingConventions', normal,
170                                      compile,
171                                      ['-ddump-splices -dsuppress-uniques -v0'])
172
173 test('T3395', normal, compile_fail, ['-v0'])
174 test('T3467', normal, compile, [''])
175 test('T3100', normal, compile, ['-v0'])
176 test('T3920', normal, compile_and_run, ['-v0'])
177
178 test('T3600', extra_clean(['T3600a.hi','T3600a.o']),
179               multimod_compile, ['T3600', '-v0 ' + config.ghc_th_way_flags])
180 test('T3845', normal, compile, ['-v0'])
181 test('T3899', extra_clean(['T3899a.hi','T3899a.o']),
182               multimod_compile,
183               ['T3899','-v0 -ddump-splices -dsuppress-uniques ' + config.ghc_th_way_flags])
184 test('T4188', normal, compile, ['-v0'])
185 test('T4233', normal, compile, ['-v0'])
186 test('T1835', normal, compile_and_run, ['-v0'])
187
188 test('TH_viewPatPrint', normal, compile_and_run, [''])
189 test('T4436', normal, compile, ['-v0 -ddump-splices'])
190 test('T4949', normal, compile, ['-v0'])
191 test('T5126', normal, compile, ['-v0'])
192 test('T5217', normal, compile, ['-v0 -dsuppress-uniques -ddump-splices'])
193 test('T5037', normal, compile, ['-v0'])
194 test('TH_unboxedSingleton', normal, compile, ['-v0'])
195 test('T5290', normal, compile, ['-v0 -ddump-splices -dsuppress-uniques'])
196 test('T5362', normal, compile, ['-v0'])
197
198 test('TH_unresolvedInfix',
199      extra_clean(['TH_unresolvedInfix_Lib.hi', 'TH_unresolvedInfix_Lib.o']),
200      multimod_compile_and_run,
201      ['TH_unresolvedInfix.hs', '-v0 ' + config.ghc_th_way_flags])
202 test('TH_unresolvedInfix2',
203      normal,
204      compile_fail,
205      ['-v0'])
206
207 test('T5358', normal, compile_fail, [' -v0'])
208 test('T5379', normal, compile_and_run, [''])
209 test('T5404', normal, compile, ['-v0'])
210 test('T5410', normal, compile_and_run, ['-v0'])
211 test('TH_lookupName',
212      extra_clean(['TH_lookupName_Lib.hi', 'TH_lookupName_Lib.o']),
213      multimod_compile_and_run,
214      ['TH_lookupName.hs', config.ghc_th_way_flags])
215 test('T5452', normal, compile, ['-v0'])
216 test('T5434', extra_clean(['T5434a.hi','T5434a.o']),
217               multimod_compile,
218               ['T5434','-v0 -Wall ' + config.ghc_th_way_flags])
219 test('T5508', normal, compile, ['-v0 -ddump-splices -dsuppress-uniques'])
220 test('TH_Depends',
221      [extra_clean(['TH_Depends_External.o', 'TH_Depends_External.hi',
222                    'TH_Depends_external.txt']),
223       only_ways(['normal']),
224      ],
225      run_command,
226      ['$MAKE -s --no-print-directory TH_Depends'])
227 test('T5597', extra_clean(['T5597a.hi','T5597a.o']),
228               multimod_compile, ['T5597', '-v0 ' + config.ghc_th_way_flags])
229 test('T5665', extra_clean(['T5665a.hi','T5665a.o']),
230               multimod_compile, ['T5665', '-v0 ' + config.ghc_th_way_flags])
231 test('T5700', extra_clean(['T5700a.hi','T5700a.o']),
232               multimod_compile,
233               ['T5700','-v0 -ddump-splices ' + config.ghc_th_way_flags])
234
235 test('TH_PromotedTuple', normal, compile, ['-v0 -ddump-splices -dsuppress-uniques'])
236 test('TH_PromotedList', normal, compile, ['-v0'])
237 test('TH_Promoted1Tuple', normal, compile_fail, ['-v0'])
238 test('TH_RichKinds', normal, compile, ['-v0'])
239 test('TH_RichKinds2', normal, compile, ['-v0'])
240
241 test('T1541', normal, compile, ['-v0'])
242 test('T5883', normal, compile, ['-v0 -dsuppress-uniques -ddump-splices'])
243 test('T5882', normal, compile, ['-v0'])
244 test('T5886', extra_clean(['T5886a.hi','T5886a.o']),
245               multimod_compile, ['T5886','-v0 ' + config.ghc_th_way_flags])
246 test('T4135',  normal, compile, ['-v0'])
247 test('T4135a', normal, compile, ['-v0'])
248 test('T5971', normal, compile_fail, ['-v0 -dsuppress-uniques'])
249 test('T5968', normal, compile, ['-v0'])
250 test('T5984', extra_clean(['T5984_Lib.hi', 'T5984_Lib.o']),
251               multimod_compile,
252               ['T5984', '-v0 -ddump-splices ' + config.ghc_th_way_flags])
253 test('T5555', extra_clean(['T5555_Lib.hi', 'T5555_Lib.o']),
254               multimod_compile, ['T5555', '-v0 ' + config.ghc_th_way_flags])
255 test('T5976', normal, compile_fail, ['-v0'])
256 test('T5795', normal, compile_fail, ['-v0'])
257 test('T6005', normal, compile, ['-v0'])
258 test('T6005a', normal, compile, ['-v0'])
259 test('T5737', normal, compile, ['-v0'])
260 test('T6114', normal, compile, ['-v0'])
261 test('TH_StringPrimL', normal, compile_and_run, [''])
262 test('T7064',
263      extra_clean(['T7064a.hi', 'T7064a.o']),
264      multimod_compile_and_run,
265      ['T7064.hs', '-v0 ' + config.ghc_th_way_flags])
266 test('T7092', extra_clean(['T7092a.hi','T7092a.o']),
267               multimod_compile, ['T7092', '-v0 ' + config.ghc_th_way_flags])
268 test('T7276', normal, compile_fail, ['-v0'])
269 test('T7276a', [ only_ways(['ghci']), combined_output ],
270                ghci_script, ['T7276a.script'])
271
272 test('TH_TyInstWhere1', normal, compile, ['-v0 -ddump-splices -dsuppress-uniques'])
273 test('TH_TyInstWhere2', normal, compile, ['-v0'])
274
275 test('T7445', [ extra_clean(['T7445a.hi', 'T7445a.o']),
276                 only_ways(['normal']),
277               ],
278               run_command,
279               ['$MAKE -s --no-print-directory T7445'] )
280 test('T7532',
281      extra_clean(['T7532a.hi', 'T7532a.o']),
282      multimod_compile,
283      ['T7532', '-v0 ' + config.ghc_th_way_flags])
284 test('T2222', normal, compile, ['-v0'])
285 test('T1849', only_ways(['ghci']), ghci_script, ['T1849.script'])
286 test('T7681', normal, compile, ['-v0'])
287 test('T7910', normal, compile_and_run, ['-v0'])
288
289 test('ClosedFam1TH', normal, compile, ['-dsuppress-uniques -v0'])
290 test('ClosedFam2TH', normal, compile, ['-v0'])
291
292 test('T8028',
293      extra_clean(['T8028a.hi', 'T8028a.o']),
294      multimod_compile,
295      ['T8028', '-v0 ' + config.ghc_th_way_flags])
296
297 test('TH_Roles1', normal, compile_fail, ['-v0'])
298 test('TH_Roles2', normalise_version('array', 'base', 'deepseq', 'ghc-prim',
299                                     'ghc-boot', 'ghc-boot-th',
300                                     'integer-gmp', 'pretty', 'template-haskell',
301                                     'binary', 'bytestring', 'containers'
302                                     ), compile, ['-v0 -ddump-tc'])
303 test('TH_Roles3', normal, compile, ['-v0 -dsuppress-uniques'])
304 test('TH_Roles4', normal, compile, ['-v0'])
305
306 test('T8186', normal, compile_and_run, ['-v0'])
307
308 test('T8333',
309      only_ways(['normal']),
310      run_command,
311      ['$MAKE -s --no-print-directory T8333'])
312
313 test('T4124', normal, compile, ['-v0'])
314 test('T4128', normal, compile, ['-v0'])
315 test('T4364', normal, compile, ['-v0'])
316 test('T8412', normal, compile_fail, ['-v0'])
317 test('T7667', normal, compile, ['-v0'])
318 test('T7667a', normal, compile_fail, ['-v0'])
319 test('T8499', normal, compile, ['-v0'])
320 test('T7477', normal, compile, ['-v0'])
321 test('T8507', normal, compile, ['-v0'])
322 test('T8540',
323      extra_clean(['T8540a.hi', 'T8540a.o']),
324      multimod_compile,
325      ['T8540', '-v0 ' + config.ghc_th_way_flags])
326 test('T8577',
327      extra_clean(['T8577a.hi', 'T8577a.o']),
328      multimod_compile_fail,
329      ['T8577', '-v0 ' + config.ghc_th_way_flags])
330 test('T8625', only_ways(['ghci']), ghci_script, ['T8625.script'])
331 test('TH_StaticPointers', [when(doing_ghci(), extra_hc_opts('-fobject-code'))],
332      compile_and_run, [''])
333 test('TH_StaticPointers02', [], compile_fail, [''])
334 test('T8759', normal, compile, ['-v0'])
335 test('T7021',
336      extra_clean(['T7021a.hi', 'T7021a.o']), multimod_compile,
337      ['T7021','-v0 ' + config.ghc_th_way_flags])
338 test('T8807', normal, compile, ['-v0'])
339 test('T8884', normal, compile, ['-v0'])
340 test('T8954', normal, compile, ['-v0'])
341 test('T8932', normal, compile_fail, ['-v0'])
342 test('T8987', normal, compile_fail, ['-v0'])
343 test('T7241', normal, compile_fail, ['-v0'])
344 test('T9262', normal, compile, ['-v0'])
345 test('T9199', normal, compile, ['-v0'])
346 test('T9692', normal, compile, ['-v0'])
347 test('T8953', normal, compile, ['-v0'])
348 test('T9084', normal, compile_fail, ['-v0'])
349 test('T9738', normal, compile, ['-v0'])
350 test('T9081', normal, compile, ['-v0'])
351 test('T9066', normal, compile, ['-v0'])
352 test('T8100', normal, compile, ['-v0'])
353 test('T9064', normal, compile, ['-v0'])
354 test('T9209', normal, compile_fail, ['-v0'])
355 test('T7484', normal, compile_fail, ['-v0'])
356 test('T1476', normal, compile, ['-v0'])
357 test('T1476b', normal, compile, ['-v0'])
358 test('T8031', normal, compile, ['-v0'])
359 test('T8624', only_ways(['normal']),
360               run_command,
361               ['$MAKE -s --no-print-directory T8624'])
362 test('TH_Lift', normal, compile, ['-v0'])
363 test('T10047', only_ways(['ghci']), ghci_script, ['T10047.script'])
364 test('T10019', only_ways(['ghci']), ghci_script, ['T10019.script'])
365 test('T10267', extra_clean(['T10267a.hi', 'T10267a.o']),
366                multimod_compile_fail,
367                ['T10267', '-dsuppress-uniques -v0 ' + config.ghc_th_way_flags])
368 test('T10279', normal, compile_fail, ['-v0'])
369 test('T10306', normal, compile, ['-v0'])
370 test('T10596', normal, compile, ['-v0'])
371 test('T10620', normal, compile_and_run, ['-v0'])
372 test('T10638', normal, compile_fail, ['-v0'])
373 test('T10697_decided_1', normal, compile_and_run, ['-v0'])
374 test('T10697_decided_2', normal, compile_and_run, ['-XStrictData -v0'])
375 test('T10697_decided_3', omit_ways(['ghci']),  # ghci doesn't support -O(2)
376                          compile_and_run,
377                          ['-XStrictData -funbox-strict-fields -O2 -v0'])
378 test('T10697_source',
379      extra_clean(['T10697_sourceUtil.hi', 'T10697_sourceUtil.o']),
380      multimod_compile_and_run,
381      ['T10697_source', '-w ' + config.ghc_th_way_flags])
382 test('T10704',
383      extra_clean(['T10704a.o','T10704a.hi']),
384      multimod_compile_and_run,
385      ['T10704', '-v0 ' + config.ghc_th_way_flags])
386 test('T6018th', normal, compile_fail, ['-v0'])
387 test('TH_namePackage', normal, compile_and_run, ['-v0'])
388 test('TH_nameSpace', normal, compile_and_run, ['-v0'])
389 test('T10796a', normal, compile, ['-v0'])
390 test('T10796b', normal, compile_fail, ['-v0'])
391 test('T10811', normal, compile, ['-v0'])
392 test('T10810', normal, compile, ['-v0'])
393 test('T10828', normal, compile, ['-v0 -dsuppress-uniques'])
394 test('T10828a', normal, compile_fail, ['-v0'])
395 test('T10828b', normal, compile_fail, ['-v0'])
396 test('T10891', normal, compile, ['-v0'])
397 test('T10945', normal, compile_fail, ['-v0'])
398 test('T10946', expect_broken(10946), compile, ['-v0'])
399 test('T10734', normal, compile_and_run, ['-v0'])
400 test('T10819',
401      extra_clean(['T10819_Lib.hi', 'T10819_Lib.o']),
402      multimod_compile,
403      ['T10819.hs', '-v0 ' + config.ghc_th_way_flags])
404 test('T10820', normal, compile_and_run, ['-v0'])
405 test('T11341', normal, compile, ['-v0 -dsuppress-uniques'])
406 test('T11345', normal, compile_and_run, ['-v0 -dsuppress-uniques'])
407 test('TH_finalizer', normal, compile, ['-v0'])
408 test('T10603', normal, compile, ['-ddump-splices -dsuppress-uniques'])
409 test('T11452', normal, compile_fail, ['-v0'])
410 test('T9022', normal, compile_and_run, ['-v0'])
411 test('T11145', normal, compile_fail, ['-v0 -dsuppress-uniques'])
412 test('T11463', normal, compile_and_run, ['-v0 -dsuppress-uniques'])
413 test('T11680', normal, compile_fail, ['-v0'])
414 test('T11809', normal, compile, ['-v0'])
415 test('T11797', normal, compile, ['-v0 -dsuppress-uniques'])
416 test('T11941', normal, compile_fail, ['-v0'])
417 test('T11484', normal, compile, ['-v0'])
418 test('T8761', normal, compile, ['-v0 -ddump-splices -dsuppress-uniques'])
419 test('T12130', extra_clean(['T12130a.hi','T12130a.o']),
420               multimod_compile, ['T12130', '-v0 ' + config.ghc_th_way_flags])
421 test('T12403', omit_ways(['ghci']),
422               compile_and_run, ['-v0 -ddump-splices -dsuppress-uniques'])
423 test('T12407', omit_ways(['ghci']), compile, ['-v0'])