# Args to vtc are: extra compile flags

def f( name, opts ):
  opts.extra_hc_opts = '-fno-warn-incomplete-patterns'

setTestOpts(f)

test('tc001', normal, compile, [''])
test('tc002', normal, compile, [''])
test('tc003', normal, compile, [''])
test('tc004', normal, compile, [''])
test('tc005', normal, compile, [''])
test('tc006', normal, compile, [''])
test('tc007', normal, compile, [''])
test('tc008', normal, compile, [''])
test('tc009', normal, compile, [''])
test('tc010', normal, compile, [''])
test('tc011', normal, compile, [''])
test('tc012', normal, compile, [''])
test('tc013', normal, compile, [''])
test('tc014', normal, compile, [''])
test('tc015', normal, compile, [''])
test('tc016', normal, compile, [''])
test('tc017', normal, compile, [''])
test('tc018', normal, compile, [''])
test('tc019', normal, compile, [''])
test('tc020', normal, compile, [''])
test('tc021', normal, compile, [''])
test('tc022', normal, compile, [''])
test('tc023', normal, compile, [''])
test('tc024', normal, compile, [''])
test('tc025', normal, compile, [''])
test('tc026', normal, compile, [''])
test('tc027', normal, compile, [''])
test('tc028', normal, compile, [''])
test('tc029', normal, compile, [''])
test('tc030', normal, compile, [''])
test('tc031', normal, compile, [''])
test('tc032', normal, compile, [''])
test('tc033', normal, compile, [''])
test('tc034', normal, compile, [''])
test('tc035', normal, compile, [''])
test('tc036', normal, compile, [''])
test('tc037', normal, compile, [''])
test('tc038', normal, compile, [''])
test('tc039', normal, compile, [''])
test('tc040', normal, compile, [''])
test('tc041', normal, compile, [''])
test('tc042', normal, compile, [''])
test('tc043', normal, compile, [''])
test('tc044', normal, compile, [''])
test('tc045', normal, compile, [''])
test('tc046', normal, compile, [''])
test('tc047', normal, compile, [''])
test('tc048', normal, compile, [''])
test('tc049', normal, compile, [''])
test('tc050', normal, compile, [''])
test('tc051', normal, compile, [''])
test('tc052', normal, compile, [''])
test('tc053', normal, compile, [''])
test('tc054', normal, compile, [''])
test('tc055', normal, compile, [''])
test('tc056', normal, compile, [''])
test('tc057', normal, compile, [''])
test('tc058', normal, compile, [''])
test('tc059', normal, compile, [''])
test('tc060', normal, compile, [''])
test('tc061', normal, compile, [''])
test('tc062', normal, compile, [''])
test('tc063', normal, compile, [''])
test('tc064', normal, compile, [''])
test('tc065', normal, compile, [''])
test('tc066', normal, compile, [''])
test('tc067', normal, compile, [''])
test('tc068', normal, compile, [''])
test('tc069', normal, compile, [''])
test('tc070', normal, compile, [''])
test('tc073', normal, compile, [''])
test('tc074', normal, compile, [''])
test('tc076', normal, compile, [''])
test('tc077', normal, compile, [''])
test('tc078', normal, compile, [''])
test('tc079', normal, compile, [''])
test('tc080', normal, compile, [''])
test('tc081', normal, compile, [''])
test('tc082', normal, compile, [''])
test('tc084', when(compiler_type('hugs'), expect_fail), compile, [''])
test('tc085', only_compiler_types(['ghc']), compile, [''])
test('tc086', normal, compile, [''])
test('tc087', normal, compile, [''])
test('tc088', normal, compile, [''])
test('tc089', normal, compile, [''])
test('tc090', normal, compile, [''])
test('tc091', normal, compile, [''])
test('tc092', normal, compile, [''])
test('tc093', normal, compile, [''])
test('tc094', normal, compile, [''])
test('tc095', normal, compile, [''])
test('tc096', when(compiler_type('hugs'), expect_fail), compile, [''])
test('tc097', normal, compile, [''])
test('tc098', normal, compile, [''])
test('tc099', normal, compile, [''])
test('tc100', normal, compile, [''])
test('tc101', normal, compile, [''])
test('tc102', normal, compile, [''])
# tc103 free
test('tc104', normal, compile, [''])
test('tc105', normal, compile, [''])
test('tc106', normal, compile, [''])
test('tc107', normal, compile, [''])
test('tc108', normal, compile, [''])
test('tc109', normal, compile, [''])
test('tc111', normal, compile, [''])
test('tc112', normal, compile, [''])
test('tc113', normal, compile, [''])
test('tc114', normal, compile, [''])
test('tc115', normal, compile, [''])
test('tc116', normal, compile, [''])
test('tc117', normal, compile, [''])
test('tc118', normal, compile, [''])
test('tc119', normal, compile, [''])
test('tc120', normal, compile, [''])
test('tc121', normal, compile, [''])
test('tc122', normal, compile, [''])
test('tc123', normal, compile, [''])
test('tc124', normal, compile, [''])
test('tc125', normal, compile, [''])
test('tc126', normal, compile, [''])
test('tc127', normal, compile, [''])
test('tc128', normal, compile, [''])
test('tc129', normal, compile, [''])
test('tc130', normal, compile, [''])
test('tc131', normal, compile, [''])
test('tc132', normal, compile, [''])
test('tc133', normal, compile, [''])

# tc134 tested result type signatures, which aren't supported any more
# test('tc134', only_compiler_types(['ghc']), compile_fail, [''])

test('tc135', only_compiler_types(['ghc']), compile, [''])
test('tc136', normal, compile, [''])
test('tc137', normal, compile, [''])
test('tc140', normal, compile, [''])
test('tc141', normal, compile_fail, [''])
test('tc142', normal, compile, [''])
test('tc143', normal, compile, [''])
test('tc144', omit_compiler_types(['hugs']), compile, [''])	# Hugs loops
test('tc145', normal, compile, [''])
test('tc146', normal, compile, [''])
test('tc147', normal, compile, [''])
test('tc148', only_compiler_types(['ghc']), compile, [''])
test('tc149', only_compiler_types(['ghc']), compile, [''])
test('tc150', normal, compile, [''])
test('tc151', normal, compile, [''])
test('tc152', only_compiler_types(['ghc']), compile, [''])
test('tc153', normal, compile, [''])
test('tc154', normal, compile, [''])
test('tc155', normal, compile, [''])
test('tc156', only_compiler_types(['ghc']), compile, [''])
test('tc157', normal, compile, [''])
test('tc158', only_compiler_types(['ghc']), compile, [''])
test('tc159', normal, compile_and_run, [''])
test('tc160', only_compiler_types(['ghc']), compile, [''])
test('tc161', normal, compile, [''])
test('tc162', only_compiler_types(['ghc']), compile, [''])
test('tc163', only_compiler_types(['ghc']), compile, [''])
test('tc164', normal, compile, [''])
test('tc165', normal, compile, [''])
test('tc166', only_compiler_types(['ghc']), compile, [''])
test('tc167', only_compiler_types(['ghc']), compile_fail, [''])
test('tc168', only_compiler_types(['ghc']), compile_fail, [''])
test('tc169', normal, compile, [''])

test('tc170',
     extra_clean(['Tc170_Aux.hi', 'Tc170_Aux.o']),
     run_command,
     ['$MAKE -s --no-print-directory tc170'])

test('tc171', normal, compile, [''])
test('tc172', normal, compile, [''])

# The point about this test is that it compiles Tc173a and Tc173b *separately*
test('tc173',
     extra_clean(['Tc173a.hi', 'Tc173a.o', 'Tc173b.hi', 'Tc173b.o']),
     run_command,
     ['$MAKE -s --no-print-directory tc173'])

test('tc174', only_compiler_types(['ghc']), compile, [''])
test('tc175', normal, compile, [''])
test('tc176', normal, compile, [''])
test('tc177', normal, compile, [''])
test('tc178', normal, compile, [''])
test('tc179', normal, compile, [''])
test('tc180', normal, compile, [''])
test('tc181', normal, compile, [''])
test('tc182', normal, compile, [''])
test('tc183', reqlib('mtl'), compile, [''])
test('tc184', normal, compile, [''])
test('tc185', only_compiler_types(['ghc']), compile, [''])
test('tc186', normal, compile, [''])
test('tc187', normal, compile, [''])
test('tc188', only_compiler_types(['ghc']), compile, [''])
test('tc189', normal, compile, [''])
test('tc190', only_compiler_types(['ghc']), compile, [''])
test('tc191', [only_compiler_types(['ghc']), reqlib('syb')], compile, [''])
test('tc192', only_compiler_types(['ghc']), compile, [''])
test('tc193', only_compiler_types(['ghc']), compile, [''])
test('tc194', normal, compile, [''])
test('tc195', only_compiler_types(['ghc']), compile, [''])
test('tc196', normal, compile, [''])
test('tc197', normal, compile, [''])
test('tc198', normal, compile, [''])
test('tc199', normal, compile, [''])
test('tc200', normal, compile, [''])
test('tc201', normal, compile, [''])
test('tc202', normal, compile, [''])
test('tc203', normal, compile, [''])
test('tc204', normal, compile, [''])
test('tc205', normal, compile, [''])
test('tc206', normal, compile, [''])
test('tc207', normal, compile, [''])
test('tc208', normal, compile, [''])
test('tc209', normal, compile, [''])
test('tc210', normal, compile, [''])
test('tc211', normal, compile_fail, [''])
test('tc212', normal, compile, [''])
test('tc213', normal, compile, [''])
test('tc214', normal, compile, [''])
test('tc215', normal, compile, [''])

# This one is very delicate, but I don't think the result really matters
test('tc216', normal, compile, [''])

test('tc217', reqlib('mtl'), compile, [''])
test('tc218', normal, compile, [''])
test('tc219', normal, compile, [''])
test('tc220', [reqlib('mtl'), reqlib('syb')], compile, [''])
test('tc221', normal, compile, [''])
test('tc222', normal, compile, [''])
test('tc223', reqlib('mtl'), compile, [''])
test('tc224', normal, compile, [''])
test('tc225', normal, compile, [''])
test('tc226', normal, compile, [''])
test('tc227', normal, compile, [''])
test('tc228', normal, compile, [''])
test('tc229', normal, compile, [''])
test('tc230', normal, compile, [''])
test('tc231', normal, compile, [''])
test('tc232', reqlib('mtl'), compile, [''])
test('tc233', normal, compile, [''])
test('tc234', normal, compile, [''])
test('tc235', normal, compile, [''])
test('tc236', normal, compile, [''])
test('tc237', normal, compile, [''])
test('tc238', normal, compile, [''])

test('tc239', extra_clean(['Tc239_Help.hi', 'Tc239_Help.o']), 
     multimod_compile, ['tc239', '-v0'])
     
test('tc240', normal, compile, [''])
test('tc241', normal, compile, [''])
test('tc242', normal, compile, [''])
test('tc243', normal, compile, [''])
test('tc244', normal, compile, [''])
test('tc245',
     extra_clean(['Tc245_A.hi', 'Tc245_A.o', 'tc245.hi', 'tc245.o']),
     run_command,
     ['$MAKE -s --no-print-directory tc245'])
test('tc246', normal, compile, [''])
test('tc247', normal, compile, [''])
test('tc248', normal, compile, [''])

test('FD1', normal, compile_fail, [''])
test('FD2', normal, compile_fail, [''])
test('FD3', normal, compile_fail, [''])
test('FD4', normal, compile, [''])

test('faxen', normal, compile, [''])
test('T1495', normal, compile, [''])
test('T2045', normal, compile, [''])   # Needs -fhpc
test('T2478', normal, compile, ['']) 
test('T2433', extra_clean(['T2433_Help.hi', 'T2433_Help.o']), 
     multimod_compile, ['T2433', '-v0'])
test('T2494', normal, compile_fail, ['']) 
test('T2494-2', normal, compile, ['']) 
test('T2497', normal, compile, ['']) 
     

# Omitting temporarily
test('syn-perf', normal, compile, ['-fcontext-stack=30'])
test('syn-perf2', normal, compile, [''])

test('LoopOfTheDay1', normal, compile, [''])
test('LoopOfTheDay2', normal, compile, [''])
test('LoopOfTheDay3', normal, compile, [''])

test('T1470', normal, compile, [''])
test('T2572', normal, compile, [''])
test('T2735', normal, compile, [''])
test('T2799', normal, compile, [''])
test('T3219', normal, compile, [''])
test('T3342', normal, compile, [''])
test('T3346', normal, compile, [''])
test('T3409', normal, compile, [''])
test('T3955', normal, compile, [''])
test('PolyRec', normal, compile, [''])
test('twins', normal, compile, [''])

test('T2412',
     extra_clean(['T2412.hi-boot', 'T2412.o-boot',
                  'T2412A.hi', 'T2412A.o',
                  'T2412.hi', 'T2412.o']),
     run_command,
     ['$MAKE --no-print-directory -s T2412'])

test('T2846', normal, compile, [''])
test('T4284', normal, compile, [''])
test('T2683', normal, compile, [''])
test('T3696', normal, compile, [''])
test('T1123', normal, compile, [''])
test('T3692', normal, compile, [''])
test('T700',  normal, compile, [''])
test('T4361', normal, compile, [''])
test('T4355', reqlib('mtl'), compile, [''])
test('T1634', normal, compile, [''])
test('T4401', normal, compile, [''])
test('T4404', normal, compile, ['-Wall'])
test('HasKey', normal, compile, [''])
test('T4418', normal, compile, [''])
test('T4444', normal, compile, [''])
test('T4498', normal, compile, [''])
test('T4524', normal, compile, [''])
test('T4917', normal, compile, [''])

test('T4912', extra_clean(['T4912a.hi', 'T4912a.o']), 
     multimod_compile, ['T4912', '-v0'])

test('T4952', normal, compile, [''])
test('T4969', normal, compile, [''])
test('T5120', normal, compile, [''])
test('mc18', normal, compile, [''])
test('tc249', normal, compile, [''])
test('tc250', normal, compile, [''])
test('tc251', extra_clean(['Tc251_Help.hi', 'Tc251_Help.o']),
              multi_compile, ['tc251', [('Tc251_Help.hs', '')], '-v0'])
test('tc252', normal, compile, [''])
test('tc253', normal, compile, [''])
test('tc254', normal, compile, [''])
test('tc255', normal, compile, [''])
test('tc256', normal, compile, [''])
test('tc257', normal, compile, [''])
test('tc258', normal, compile, [''])
test('tc259', normal, compile, [''])
test('tc260', normal, compile, [''])
test('tc261', normal, compile, [''])
test('tc262', normal, compile, [''])
test('tc263',
    extra_clean(['Tc263_Help.o','Tc263_Help.hi']),
    multimod_compile, ['tc263','-v0'])
test('tc264', normal, multimod_compile, ['tc264.hsig', '-sig-of base:Data.STRef'])

test('GivenOverlapping', normal, compile, [''])
test('GivenTypeSynonym', normal, compile, [''])
test('T3018', normal, compile, [''])
test('T5032', normal, compile, [''])
test('T2357', normal, compile, [''])
test('T5481', normal, compile_fail, [''])
test('T3743', normal, compile, [''])
test('T5490', normal, compile, [''])
test('T5514', normal, compile, [''])
test('T5581', normal, compile, [''])
test('T5655', normal, compile, [''])
test('T5643', normal, compile, [''])
test('T5595', normal, compile, [''])
test('T5676', normal, compile, [''])
test('T4310', normal, compile, [''])
test('T3108', normal, compile, [''])

test('T5792',normal,run_command,
     ['$MAKE -s --no-print-directory T5792'])

test('PolytypeDecomp', normal, compile, [''])
test('T6011', normal, compile, [''])
test('T6055', normal, compile, [''])
test('DfltProb1', normal, compile, [''])
test('DfltProb2', normal, compile, [''])
test('T6134', normal, compile, [''])
test('TcLambdaCase', when(compiler_lt('ghc', '7.5'), skip), compile, [''])
test('T7147', normal, compile, [''])
test('T7171',normal,run_command,
     ['$MAKE -s --no-print-directory T7171'])
test('T7173', normal, compile, [''])
test('T7196', normal, compile, [''])
test('T7050', normal, compile, ['-O'])
test('T7312', normal, compile, [''])
test('T7384', normal, compile, [''])
test('T7451', normal, compile, [''])
test('holes', normal, compile, ['-fdefer-type-errors'])
test('holes2', normal, compile, ['-fdefer-type-errors'])
test('holes3', normal, compile_fail, [''])
test('T7408', normal, compile, [''])
test('UnboxStrictPrimitiveFields', normal, compile, [''])
test('T7541', normal, compile, [''])
test('T7562', normal, compile, [''])
test('T7641', normal, compile, [''])
test('T7827', normal, compile, [''])
test('T7875', normal, compile, [''])
test('T7268', normal, compile, [''])
test('T7888', normal, compile, [''])
test('T7891', normal, compile, [''])
test('T7903', normal, compile, [''])
test('TcTypeNatSimple', normal, compile, [''])
test('TcCoercibleCompile', when(compiler_lt('ghc', '7.7'), skip), compile, [''])
test('T8392', normal, compile, [''])
test('T8474', normal, compile, [''])
test('T8563', normal, compile, [''])
test('T8565', normal, compile, [''])
test('T8644', normal, compile, [''])
test('TcStaticPointers01', when(compiler_lt('ghc', '7.9'), skip), compile, [''])
test('TcStaticPointers02', when(compiler_lt('ghc', '7.9'), skip), compile, [''])
test('T8762', normal, compile, [''])
test('MutRec', normal, compile, [''])
test('T8856', normal, compile, [''])
test('T9569a', normal, compile, [''])
test('T9117', normal, compile, [''])
test('T9117_2', normal, compile, [''])
test('T9117_3', normal, compile, [''])
test('T9708', expect_broken(9708), compile, [''])
test('T9404', normal, compile, [''])
test('T9404b', normal, compile, [''])
test('T7220', normal, compile, [''])
test('T7220a', normal, compile_fail, [''])
test('T9151', normal, compile, [''])
test('T9497a', normal, compile, ['-fdefer-typed-holes'])
test('T9497b', normal, compile, ['-fdefer-typed-holes -fno-warn-typed-holes'])
test('T9497c', normal, compile, ['-fdefer-type-errors -fno-warn-typed-holes'])
test('T7643', normal, compile, [''])
test('T9834', normal, compile, [''])
test('T9892', normal, compile, [''])
test('T9971', normal, compile, [''])
test('T10031', normal, compile, [''])
test('T10072', normal, compile_fail, [''])
test('T10177', normal, compile, [''])
test('T10195', normal, compile, [''])
test('T10109', normal, compile, [''])
test('T10335', normal, compile, [''])
test('T10489', unless(compiler_debugged(), skip), compile, [''])
test('T10564', normal, compile, [''])
test('T10390', normal, compile, [''])
