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