summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--testsuite/.gitignore1055
-rw-r--r--testsuite/Makefile4
-rw-r--r--testsuite/config/ghc48
-rw-r--r--testsuite/driver/runtests.py6
-rw-r--r--testsuite/driver/testglobals.py22
-rw-r--r--testsuite/driver/testlib.py106
-rw-r--r--testsuite/mk/boilerplate.mk52
-rw-r--r--testsuite/mk/ghc-config.hs35
-rw-r--r--testsuite/mk/test.mk17
-rw-r--r--testsuite/tests/annotations/should_fail/annfail08.stderr29
-rw-r--r--testsuite/tests/annotations/should_fail/annfail10.stderr29
-rw-r--r--testsuite/tests/array/should_run/all.T1
-rw-r--r--testsuite/tests/array/should_run/arr020.hs132
-rw-r--r--testsuite/tests/array/should_run/arr020.stdout (renamed from testsuite/tests/lib/IO/hGetChar001.stdin)2
-rw-r--r--testsuite/tests/arrows/should_compile/T5022.hs19
-rw-r--r--testsuite/tests/arrows/should_compile/all.T1
-rw-r--r--testsuite/tests/arrows/should_fail/T5380.stderr8
-rw-r--r--testsuite/tests/codeGen/should_run/5747.hs1
-rw-r--r--testsuite/tests/codeGen/should_run/5747.stdout1
-rw-r--r--testsuite/tests/codeGen/should_run/5785.hs40
-rw-r--r--testsuite/tests/codeGen/should_run/5785.stdout24
-rw-r--r--testsuite/tests/codeGen/should_run/all.T3
-rw-r--r--testsuite/tests/concurrent/2317/all.T2
-rw-r--r--testsuite/tests/concurrent/prog002/all.T9
-rw-r--r--testsuite/tests/concurrent/should_run/5238.hs2
-rw-r--r--testsuite/tests/concurrent/should_run/5866.hs10
-rw-r--r--testsuite/tests/concurrent/should_run/5866.stderr1
-rw-r--r--testsuite/tests/concurrent/should_run/all.T60
-rw-r--r--testsuite/tests/concurrent/should_run/setnumcapabilities001.hs34
-rw-r--r--testsuite/tests/concurrent/should_run/setnumcapabilities001.stdout1
-rw-r--r--testsuite/tests/deSugar/should_compile/T5001.hs10
-rw-r--r--testsuite/tests/deSugar/should_compile/T5001a.hs16
-rw-r--r--testsuite/tests/deSugar/should_compile/all.T6
-rw-r--r--testsuite/tests/deSugar/should_run/T5472.stdout1
-rw-r--r--testsuite/tests/deSugar/should_run/T5742.hs105
-rw-r--r--testsuite/tests/deSugar/should_run/T5742.stdout1
-rw-r--r--testsuite/tests/deSugar/should_run/all.T1
-rw-r--r--testsuite/tests/deSugar/should_run/dsrun017.hs6
-rw-r--r--testsuite/tests/deSugar/should_run/dsrun022.hs4
-rw-r--r--testsuite/tests/deSugar/should_run/mc01.hs4
-rw-r--r--testsuite/tests/deSugar/should_run/mc08.hs6
-rw-r--r--testsuite/tests/deriving/should_compile/T3057.hs4
-rw-r--r--testsuite/tests/deriving/should_compile/T3057A.hs4
-rw-r--r--testsuite/tests/deriving/should_compile/all.T2
-rw-r--r--testsuite/tests/deriving/should_fail/T2604.stderr2
-rw-r--r--testsuite/tests/deriving/should_fail/T2701.stderr10
-rw-r--r--testsuite/tests/deriving/should_fail/T3101.stderr12
-rw-r--r--testsuite/tests/deriving/should_fail/T5287.stderr15
-rw-r--r--testsuite/tests/deriving/should_fail/T5478.stderr10
-rw-r--r--testsuite/tests/deriving/should_fail/T5686.hs7
-rw-r--r--testsuite/tests/deriving/should_fail/T5686.stderr5
-rw-r--r--testsuite/tests/deriving/should_fail/T5922.hs3
-rw-r--r--testsuite/tests/deriving/should_fail/T5922.stderr4
-rw-r--r--testsuite/tests/deriving/should_fail/all.T2
-rw-r--r--testsuite/tests/deriving/should_fail/drvfail-foldable-traversable1.hs4
-rw-r--r--testsuite/tests/deriving/should_fail/drvfail-foldable-traversable1.stderr66
-rw-r--r--testsuite/tests/deriving/should_fail/drvfail-functor1.stderr2
-rw-r--r--testsuite/tests/deriving/should_fail/drvfail-functor2.stderr64
-rw-r--r--testsuite/tests/deriving/should_fail/drvfail005.stderr2
-rw-r--r--testsuite/tests/deriving/should_fail/drvfail010.stderr22
-rw-r--r--testsuite/tests/deriving/should_fail/drvfail011.stderr4
-rw-r--r--testsuite/tests/deriving/should_fail/drvfail014.stderr18
-rw-r--r--testsuite/tests/deriving/should_fail/drvfail016.hs-boot2
-rw-r--r--testsuite/tests/deriving/should_fail/drvfail016.stderr8
-rw-r--r--testsuite/tests/deriving/should_run/T5712.hs14
-rw-r--r--testsuite/tests/deriving/should_run/T5712.stdout1
-rw-r--r--testsuite/tests/deriving/should_run/all.T1
-rw-r--r--testsuite/tests/dph/classes/DefsVect.hs53
-rw-r--r--testsuite/tests/dph/classes/Main.hs15
-rw-r--r--testsuite/tests/dph/classes/Makefile (renamed from testsuite/tests/lib/CPUTime/Makefile)0
-rw-r--r--testsuite/tests/dph/classes/dph-classes-copy-fast.stdout1
-rw-r--r--testsuite/tests/dph/classes/dph-classes-vseg-fast.stdout1
-rw-r--r--testsuite/tests/dph/classes/dph-classes.T9
-rw-r--r--testsuite/tests/dph/diophantine/DiophantineVect.hs10
-rw-r--r--testsuite/tests/dph/diophantine/dph-diophantine-copy-fast.stdout (renamed from testsuite/tests/dph/diophantine/dph-diophantine-fast.stdout)0
-rw-r--r--testsuite/tests/dph/diophantine/dph-diophantine-copy-opt.stdout (renamed from testsuite/tests/dph/diophantine/dph-diophantine-opt.stdout)0
-rw-r--r--testsuite/tests/dph/diophantine/dph-diophantine.T9
-rw-r--r--testsuite/tests/dph/dotp/DotPVect.hs2
-rw-r--r--testsuite/tests/dph/dotp/Main.hs2
-rw-r--r--testsuite/tests/dph/dotp/dph-dotp-copy-fast.stdout (renamed from testsuite/tests/dph/dotp/dph-dotp-fast.stdout)0
-rw-r--r--testsuite/tests/dph/dotp/dph-dotp-copy-opt.stdout (renamed from testsuite/tests/dph/dotp/dph-dotp-opt.stdout)0
-rw-r--r--testsuite/tests/dph/dotp/dph-dotp-vseg-fast.stdout2
-rw-r--r--testsuite/tests/dph/dotp/dph-dotp-vseg-opt.stdout2
-rw-r--r--testsuite/tests/dph/dotp/dph-dotp.T28
-rw-r--r--testsuite/tests/dph/nbody/Body.hs85
-rw-r--r--testsuite/tests/dph/nbody/Config.hs50
-rw-r--r--testsuite/tests/dph/nbody/Dump.hs46
-rw-r--r--testsuite/tests/dph/nbody/Generate.hs98
-rw-r--r--testsuite/tests/dph/nbody/Main.hs103
-rw-r--r--testsuite/tests/dph/nbody/Makefile (renamed from testsuite/tests/lib/Char/Makefile)0
-rw-r--r--testsuite/tests/dph/nbody/Randomish.hs82
-rw-r--r--testsuite/tests/dph/nbody/Solver.hs156
-rw-r--r--testsuite/tests/dph/nbody/Types.hs52
-rw-r--r--testsuite/tests/dph/nbody/Util.hs18
-rw-r--r--testsuite/tests/dph/nbody/World.hs47
-rw-r--r--testsuite/tests/dph/nbody/dph-nbody-copy-fast.stdout100
-rw-r--r--testsuite/tests/dph/nbody/dph-nbody-copy-opt.stdout100
-rw-r--r--testsuite/tests/dph/nbody/dph-nbody-vseg-fast.stdout100
-rw-r--r--testsuite/tests/dph/nbody/dph-nbody-vseg-opt.stdout100
-rw-r--r--testsuite/tests/dph/nbody/dph-nbody.T81
-rw-r--r--testsuite/tests/dph/primespj/dph-primespj-copy-fast.stdout (renamed from testsuite/tests/dph/primespj/dph-primespj-fast.stdout)0
-rw-r--r--testsuite/tests/dph/primespj/dph-primespj-copy-opt.stdout (renamed from testsuite/tests/dph/primespj/dph-primespj-opt.stdout)0
-rw-r--r--testsuite/tests/dph/primespj/dph-primespj-vseg-fast.stdout3
-rw-r--r--testsuite/tests/dph/primespj/dph-primespj-vseg-opt.stdout3
-rw-r--r--testsuite/tests/dph/primespj/dph-primespj.T8
-rw-r--r--testsuite/tests/dph/quickhull/Main.hs2
-rw-r--r--testsuite/tests/dph/quickhull/QuickHullVect.hs6
-rw-r--r--testsuite/tests/dph/quickhull/TestData.hs4
-rw-r--r--testsuite/tests/dph/quickhull/dph-quickhull-copy-fast.stdout (renamed from testsuite/tests/dph/quickhull/dph-quickhull-fast.stdout)0
-rw-r--r--testsuite/tests/dph/quickhull/dph-quickhull-copy-opt.stdout (renamed from testsuite/tests/dph/quickhull/dph-quickhull-opt.stdout)0
-rw-r--r--testsuite/tests/dph/quickhull/dph-quickhull-vseg-fast.stdout1019
-rw-r--r--testsuite/tests/dph/quickhull/dph-quickhull-vseg-opt.stdout1019
-rw-r--r--testsuite/tests/dph/quickhull/dph-quickhull.T41
-rw-r--r--testsuite/tests/dph/smvm/dph-smvm-copy.stdout (renamed from testsuite/tests/dph/smvm/dph-smvm.stdout)0
-rw-r--r--testsuite/tests/dph/smvm/dph-smvm-vseg.stdout (renamed from testsuite/tests/lib/IO/4808.stdout)0
-rw-r--r--testsuite/tests/dph/smvm/dph-smvm.T14
-rw-r--r--testsuite/tests/dph/sumnats/SumNatsVect.hs8
-rw-r--r--testsuite/tests/dph/sumnats/dph-sumnats-copy.stdout (renamed from testsuite/tests/dph/sumnats/dph-sumnats.stdout)0
-rw-r--r--testsuite/tests/dph/sumnats/dph-sumnats-vseg.stdout3
-rw-r--r--testsuite/tests/dph/sumnats/dph-sumnats.T16
-rw-r--r--testsuite/tests/dph/words/Main.hs2
-rw-r--r--testsuite/tests/dph/words/WordsVect.hs38
-rw-r--r--testsuite/tests/dph/words/dph-words-copy-fast.stdout (renamed from testsuite/tests/dph/words/dph-words-fast.stdout)0
-rw-r--r--testsuite/tests/dph/words/dph-words-copy-opt.stdout (renamed from testsuite/tests/dph/words/dph-words-opt.stdout)0
-rw-r--r--testsuite/tests/dph/words/dph-words-vseg-fast.stdout3
-rw-r--r--testsuite/tests/dph/words/dph-words-vseg-opt.stdout3
-rw-r--r--testsuite/tests/dph/words/dph-words.T34
-rw-r--r--testsuite/tests/driver/1372/Makefile6
-rw-r--r--testsuite/tests/driver/1959/Makefile14
-rw-r--r--testsuite/tests/driver/437/437.stdout8
-rw-r--r--testsuite/tests/driver/437/Makefile12
-rw-r--r--testsuite/tests/driver/Makefile156
-rw-r--r--testsuite/tests/driver/T4437.hs6
-rw-r--r--testsuite/tests/driver/T5147/Makefile8
-rw-r--r--testsuite/tests/driver/T5147/T5147.stderr3
-rw-r--r--testsuite/tests/driver/T5198.hs6
-rw-r--r--testsuite/tests/driver/all.T3
-rw-r--r--testsuite/tests/driver/objc/all.T10
-rw-r--r--testsuite/tests/driver/recomp001/Makefile8
-rw-r--r--testsuite/tests/driver/recomp002/Makefile8
-rw-r--r--testsuite/tests/driver/recomp003/Makefile10
-rw-r--r--testsuite/tests/driver/recomp004/Makefile12
-rw-r--r--testsuite/tests/driver/recomp005/Makefile8
-rw-r--r--testsuite/tests/driver/recomp005/recomp005.stdout4
-rw-r--r--testsuite/tests/driver/recomp006/Makefile8
-rw-r--r--testsuite/tests/driver/recomp006/recomp006.stderr11
-rw-r--r--testsuite/tests/driver/recomp006/recomp006.stdout2
-rw-r--r--testsuite/tests/driver/recomp007/recomp007.stderr1
-rw-r--r--testsuite/tests/driver/recomp007/recomp007.stdout5
-rw-r--r--testsuite/tests/driver/recomp008/Makefile8
-rw-r--r--testsuite/tests/driver/recomp009/Makefile8
-rw-r--r--testsuite/tests/driver/recomp010/Makefile8
-rw-r--r--testsuite/tests/driver/recomp011/Main.hs5
-rw-r--r--testsuite/tests/driver/recomp011/Makefile32
-rw-r--r--testsuite/tests/driver/recomp011/all.T7
-rw-r--r--testsuite/tests/driver/recomp011/recomp011.stdout10
-rw-r--r--testsuite/tests/dynlibs/Makefile12
-rw-r--r--testsuite/tests/ffi/should_compile/cc004.hs37
-rw-r--r--testsuite/tests/ffi/should_compile/cc005.hs2
-rw-r--r--testsuite/tests/ffi/should_compile/cc008.hs2
-rw-r--r--testsuite/tests/ffi/should_compile/cc010.hs2
-rw-r--r--testsuite/tests/ffi/should_fail/T5664.hs25
-rw-r--r--testsuite/tests/ffi/should_fail/T5664.stderr13
-rw-r--r--testsuite/tests/ffi/should_fail/all.T3
-rw-r--r--testsuite/tests/ffi/should_fail/capi_value_function.hs9
-rw-r--r--testsuite/tests/ffi/should_fail/capi_value_function.stderr6
-rw-r--r--testsuite/tests/ffi/should_fail/ccall_value.hs12
-rw-r--r--testsuite/tests/ffi/should_fail/ccall_value.stderr2
-rw-r--r--testsuite/tests/ffi/should_fail/ccall_value_c.h3
-rw-r--r--testsuite/tests/ffi/should_fail/ccfail004.stderr2
-rw-r--r--testsuite/tests/ffi/should_run/Capi_Ctype_001.hsc46
-rw-r--r--testsuite/tests/ffi/should_run/Capi_Ctype_001.stdout2
-rw-r--r--testsuite/tests/ffi/should_run/Capi_Ctype_002.hs19
-rw-r--r--testsuite/tests/ffi/should_run/Capi_Ctype_002.stdout1
-rw-r--r--testsuite/tests/ffi/should_run/Capi_Ctype_A_001.hsc27
-rw-r--r--testsuite/tests/ffi/should_run/Capi_Ctype_A_002.hsc28
-rw-r--r--testsuite/tests/ffi/should_run/Makefile18
-rw-r--r--testsuite/tests/ffi/should_run/all.T24
-rw-r--r--testsuite/tests/ffi/should_run/capi_ctype_001.h16
-rw-r--r--testsuite/tests/ffi/should_run/capi_ctype_001_c.c7
-rw-r--r--testsuite/tests/ffi/should_run/capi_ctype_002_A.h12
-rw-r--r--testsuite/tests/ffi/should_run/capi_ctype_002_B.h8
-rw-r--r--testsuite/tests/ffi/should_run/capi_value.hs14
-rw-r--r--testsuite/tests/ffi/should_run/capi_value.stdout2
-rw-r--r--testsuite/tests/ffi/should_run/capi_value_c.c4
-rw-r--r--testsuite/tests/ffi/should_run/capi_value_c.h3
-rw-r--r--testsuite/tests/ffi/should_run/ffi_parsing_001.hs8
-rw-r--r--testsuite/tests/ffi/should_run/ffi_parsing_001.stdout1
-rw-r--r--testsuite/tests/ffi/should_run/ffi_parsing_001_c.c8
-rw-r--r--testsuite/tests/gadt/T3163.stderr10
-rw-r--r--testsuite/tests/gadt/T3169.stderr39
-rw-r--r--testsuite/tests/gadt/T3651.stderr56
-rw-r--r--testsuite/tests/gadt/gadt10.stderr13
-rw-r--r--testsuite/tests/gadt/gadt11.stderr12
-rw-r--r--testsuite/tests/gadt/gadtSyntaxFail001.stderr12
-rw-r--r--testsuite/tests/gadt/gadtSyntaxFail002.stderr12
-rw-r--r--testsuite/tests/gadt/gadtSyntaxFail003.stderr12
-rw-r--r--testsuite/tests/gadt/records-fail1.stderr10
-rw-r--r--testsuite/tests/gadt/rw.stderr40
-rw-r--r--testsuite/tests/generics/GenCannotDoRep0.stderr10
-rw-r--r--testsuite/tests/generics/GenCannotDoRep1.stderr16
-rw-r--r--testsuite/tests/generics/GenDerivOutput.stderr29
-rw-r--r--testsuite/tests/ghc-api/apirecomp001/apirecomp001.stderr40
-rw-r--r--testsuite/tests/ghc-api/apirecomp001/myghc.hs2
-rw-r--r--testsuite/tests/ghci.debugger/scripts/break003.stderr3
-rw-r--r--testsuite/tests/ghci.debugger/scripts/break006.stderr20
-rw-r--r--testsuite/tests/ghci.debugger/scripts/break007.stdout2
-rw-r--r--testsuite/tests/ghci.debugger/scripts/break018.stderr6
-rw-r--r--testsuite/tests/ghci.debugger/scripts/dynbrk004.stderr6
-rw-r--r--testsuite/tests/ghci.debugger/scripts/print006.stdout2
-rw-r--r--testsuite/tests/ghci.debugger/scripts/print007.stderr4
-rw-r--r--testsuite/tests/ghci.debugger/scripts/print019.stderr10
-rw-r--r--testsuite/tests/ghci/linking/Makefile4
-rw-r--r--testsuite/tests/ghci/linking/all.T8
-rwxr-xr-xtestsuite/tests/ghci/scripts/Defer02.script14
-rw-r--r--testsuite/tests/ghci/scripts/Defer02.stderr91
-rw-r--r--testsuite/tests/ghci/scripts/Defer02.stdout59
-rw-r--r--testsuite/tests/ghci/scripts/Makefile9
-rw-r--r--testsuite/tests/ghci/scripts/T2766.script4
-rw-r--r--testsuite/tests/ghci/scripts/T2766.stdout5
-rw-r--r--testsuite/tests/ghci/scripts/T3263.stderr8
-rw-r--r--testsuite/tests/ghci/scripts/T5130.stderr2
-rw-r--r--testsuite/tests/ghci/scripts/T5820.hs3
-rw-r--r--testsuite/tests/ghci/scripts/T5820.script4
-rw-r--r--testsuite/tests/ghci/scripts/T5820.stdout4
-rw-r--r--testsuite/tests/ghci/scripts/T5836.script1
-rw-r--r--testsuite/tests/ghci/scripts/T5836.stderr4
-rw-r--r--testsuite/tests/ghci/scripts/T5975a.script1
-rw-r--r--testsuite/tests/ghci/scripts/T5975b.script (renamed from testsuite/tests/lib/IO/misc001.stdout)0
-rw-r--r--testsuite/tests/ghci/scripts/T5979.script4
-rw-r--r--testsuite/tests/ghci/scripts/T5979.stderr4
-rw-r--r--testsuite/tests/ghci/scripts/T5979.stdout (renamed from testsuite/tests/lib/IOExts/performGC001.stdout)0
-rwxr-xr-x[-rw-r--r--]testsuite/tests/ghci/scripts/all.T15
-rw-r--r--testsuite/tests/ghci/scripts/ghci011.stdout1
-rw-r--r--testsuite/tests/ghci/scripts/ghci020.stdout2
-rw-r--r--testsuite/tests/ghci/scripts/ghci024.stdout25
-rw-r--r--testsuite/tests/ghci/scripts/ghci031.stderr4
-rw-r--r--testsuite/tests/ghci/scripts/ghci047.stderr4
-rw-r--r--testsuite/tests/ghci/scripts/ghci050.stderr5
-rw-r--r--testsuite/tests/ghci/scripts/ghci051.stderr4
-rw-r--r--testsuite/tests/ghci/scripts/ghci057.hs4
-rw-r--r--testsuite/tests/ghci/scripts/ghci057.script27
-rw-r--r--testsuite/tests/ghci/scripts/ghci057.stderr17
-rw-r--r--testsuite/tests/ghci/scripts/ghci057.stdout53
-rw-r--r--testsuite/tests/haddock/haddock_examples/haddock.Test.stderr332
-rw-r--r--testsuite/tests/haddock/should_compile_flag_haddock/haddockA028.hs2
-rw-r--r--testsuite/tests/haddock/should_compile_flag_haddock/haddockA028.stderr1
-rw-r--r--testsuite/tests/haddock/should_compile_noflag_haddock/haddockC028.hs2
-rw-r--r--testsuite/tests/indexed-types/should_compile/Class3.stderr2
-rw-r--r--testsuite/tests/indexed-types/should_compile/Makefile5
-rw-r--r--testsuite/tests/indexed-types/should_compile/Simple14.stderr4
-rw-r--r--testsuite/tests/indexed-types/should_compile/Simple2.stderr20
-rw-r--r--testsuite/tests/indexed-types/should_compile/T2850.hs2
-rw-r--r--testsuite/tests/indexed-types/should_compile/T3017.stderr46
-rw-r--r--testsuite/tests/indexed-types/should_compile/T3208b.stderr14
-rw-r--r--testsuite/tests/indexed-types/should_compile/T4120.stderr8
-rw-r--r--testsuite/tests/indexed-types/should_compile/T5955.hs7
-rw-r--r--testsuite/tests/indexed-types/should_compile/T5955a.hs13
-rw-r--r--testsuite/tests/indexed-types/should_compile/all.T10
-rw-r--r--testsuite/tests/indexed-types/should_fail/GADTwrong1.stderr6
-rw-r--r--testsuite/tests/indexed-types/should_fail/NoMatchErr.stderr6
-rw-r--r--testsuite/tests/indexed-types/should_fail/NotRelaxedExamples.stderr36
-rw-r--r--testsuite/tests/indexed-types/should_fail/SimpleFail11a.stderr8
-rw-r--r--testsuite/tests/indexed-types/should_fail/SimpleFail11b.stderr8
-rw-r--r--testsuite/tests/indexed-types/should_fail/SimpleFail11c.stderr4
-rw-r--r--testsuite/tests/indexed-types/should_fail/SimpleFail11d.stderr4
-rw-r--r--testsuite/tests/indexed-types/should_fail/SimpleFail12.stderr8
-rw-r--r--testsuite/tests/indexed-types/should_fail/SimpleFail13.stderr16
-rw-r--r--testsuite/tests/indexed-types/should_fail/SimpleFail14.stderr13
-rw-r--r--testsuite/tests/indexed-types/should_fail/SimpleFail15.stderr12
-rw-r--r--testsuite/tests/indexed-types/should_fail/SimpleFail16.stderr7
-rw-r--r--testsuite/tests/indexed-types/should_fail/SimpleFail1a.stderr8
-rw-r--r--testsuite/tests/indexed-types/should_fail/SimpleFail1b.stderr8
-rw-r--r--testsuite/tests/indexed-types/should_fail/SimpleFail2a.stderr12
-rw-r--r--testsuite/tests/indexed-types/should_fail/SimpleFail3a.stderr10
-rw-r--r--testsuite/tests/indexed-types/should_fail/SimpleFail5a.stderr20
-rw-r--r--testsuite/tests/indexed-types/should_fail/SimpleFail5b.stderr2
-rw-r--r--testsuite/tests/indexed-types/should_fail/SimpleFail6.stderr5
-rw-r--r--testsuite/tests/indexed-types/should_fail/SimpleFail7.stderr8
-rw-r--r--testsuite/tests/indexed-types/should_fail/SimpleFail9.stderr12
-rw-r--r--testsuite/tests/indexed-types/should_fail/SkolemOccursLoop.hs2
-rw-r--r--testsuite/tests/indexed-types/should_fail/SkolemOccursLoop.stderr11
-rw-r--r--testsuite/tests/indexed-types/should_fail/T1897b.stderr28
-rw-r--r--testsuite/tests/indexed-types/should_fail/T1900.stderr37
-rw-r--r--testsuite/tests/indexed-types/should_fail/T2157.stderr8
-rw-r--r--testsuite/tests/indexed-types/should_fail/T2239.stderr20
-rw-r--r--testsuite/tests/indexed-types/should_fail/T2334.stderr4
-rw-r--r--testsuite/tests/indexed-types/should_fail/T2544.stderr35
-rw-r--r--testsuite/tests/indexed-types/should_fail/T2664.stderr40
-rw-r--r--testsuite/tests/indexed-types/should_fail/T2677.stderr4
-rw-r--r--testsuite/tests/indexed-types/should_fail/T2693.stderr49
-rw-r--r--testsuite/tests/indexed-types/should_fail/T3092.stderr20
-rw-r--r--testsuite/tests/indexed-types/should_fail/T3330a.hs4
-rw-r--r--testsuite/tests/indexed-types/should_fail/T3330a.stderr31
-rw-r--r--testsuite/tests/indexed-types/should_fail/T3330c.stderr28
-rw-r--r--testsuite/tests/indexed-types/should_fail/T3440.stderr38
-rw-r--r--testsuite/tests/indexed-types/should_fail/T4093a.stderr28
-rw-r--r--testsuite/tests/indexed-types/should_fail/T4093b.stderr4
-rw-r--r--testsuite/tests/indexed-types/should_fail/T4099.stderr30
-rw-r--r--testsuite/tests/indexed-types/should_fail/T4174.stderr2
-rw-r--r--testsuite/tests/indexed-types/should_fail/T4179.stderr77
-rw-r--r--testsuite/tests/indexed-types/should_fail/T4246.stderr4
-rw-r--r--testsuite/tests/indexed-types/should_fail/T4272.hs2
-rw-r--r--testsuite/tests/indexed-types/should_fail/T4272.stderr25
-rw-r--r--testsuite/tests/indexed-types/should_fail/T4485.stderr12
-rw-r--r--testsuite/tests/indexed-types/should_fail/T5439.stderr10
-rw-r--r--testsuite/tests/indexed-types/should_fail/T5934.hs12
-rw-r--r--testsuite/tests/indexed-types/should_fail/T5934.stderr8
-rw-r--r--testsuite/tests/indexed-types/should_fail/TyFamArity1.stderr8
-rw-r--r--testsuite/tests/indexed-types/should_fail/TyFamArity2.stderr8
-rw-r--r--testsuite/tests/indexed-types/should_fail/TyFamUndec.stderr36
-rw-r--r--testsuite/tests/indexed-types/should_fail/all.T5
-rw-r--r--testsuite/tests/indexed-types/should_run/T5719.hs28
-rw-r--r--testsuite/tests/indexed-types/should_run/T5719.stdout2
-rw-r--r--testsuite/tests/indexed-types/should_run/all.T1
-rw-r--r--testsuite/tests/layout/layout001.stdout2
-rw-r--r--testsuite/tests/layout/layout003.stdout2
-rw-r--r--testsuite/tests/layout/layout006.stdout2
-rw-r--r--testsuite/tests/lib/CPUTime/CPUTime001.hs26
-rw-r--r--testsuite/tests/lib/CPUTime/CPUTime001.stdout4
-rw-r--r--testsuite/tests/lib/CPUTime/all.T1
-rw-r--r--testsuite/tests/lib/Char/all.T10
-rw-r--r--testsuite/tests/lib/Char/readLitChar.hs12
-rw-r--r--testsuite/tests/lib/Char/readLitChar.stdout4
-rw-r--r--testsuite/tests/lib/Char/unicode001.hs46
-rw-r--r--testsuite/tests/lib/Char/unicode001.stdout14
-rw-r--r--testsuite/tests/lib/Char/unicode001.stdout-hugs14
-rw-r--r--testsuite/tests/lib/Char/unicode002.hs44
-rw-r--r--testsuite/tests/lib/Char/unicode002.stdout6555
-rw-r--r--testsuite/tests/lib/Concurrent/4876.hs19
-rw-r--r--testsuite/tests/lib/Concurrent/4876.stdout1
-rw-r--r--testsuite/tests/lib/Concurrent/Chan001.hs109
-rw-r--r--testsuite/tests/lib/Concurrent/Chan001.stdout3
-rw-r--r--testsuite/tests/lib/Concurrent/MVar001.hs148
-rw-r--r--testsuite/tests/lib/Concurrent/MVar001.stdout6
-rw-r--r--testsuite/tests/lib/Concurrent/QSem001.hs93
-rw-r--r--testsuite/tests/lib/Concurrent/QSem001.stdout2
-rw-r--r--testsuite/tests/lib/Concurrent/QSemN001.hs96
-rw-r--r--testsuite/tests/lib/Concurrent/QSemN001.stdout2
-rw-r--r--testsuite/tests/lib/Concurrent/SampleVar001.hs132
-rw-r--r--testsuite/tests/lib/Concurrent/SampleVar001.stdout6
-rw-r--r--testsuite/tests/lib/Concurrent/ThreadDelay001.hs26
-rw-r--r--testsuite/tests/lib/Concurrent/all.T10
-rw-r--r--testsuite/tests/lib/Data.ByteString/Makefile3
-rw-r--r--testsuite/tests/lib/Data.ByteString/all.T18
-rw-r--r--testsuite/tests/lib/Data.ByteString/bytestring001.hs948
-rw-r--r--testsuite/tests/lib/Data.ByteString/bytestring001.stdout185
-rw-r--r--testsuite/tests/lib/Data.ByteString/bytestring002.hs6
-rw-r--r--testsuite/tests/lib/Data.ByteString/bytestring002.stdin1000
-rw-r--r--testsuite/tests/lib/Data.ByteString/bytestring002.stdout1
-rw-r--r--testsuite/tests/lib/Data.ByteString/bytestring003.hs36
-rw-r--r--testsuite/tests/lib/Data.ByteString/bytestring003.stdin1000
-rw-r--r--testsuite/tests/lib/Data.ByteString/bytestring003.stdout1
-rw-r--r--testsuite/tests/lib/Data.ByteString/bytestring004.hs564
-rw-r--r--testsuite/tests/lib/Data.ByteString/bytestring004.stdout45
-rw-r--r--testsuite/tests/lib/Data.ByteString/bytestring005.hs1138
-rw-r--r--testsuite/tests/lib/Data.ByteString/bytestring005.stdout226
-rw-r--r--testsuite/tests/lib/Data.ByteString/bytestring006.hs10
-rw-r--r--testsuite/tests/lib/Data.ByteString/bytestring006.stdout2
-rw-r--r--testsuite/tests/lib/Data.Fixed/Makefile3
-rw-r--r--testsuite/tests/lib/Data.Fixed/all.T1
-rw-r--r--testsuite/tests/lib/Data.Fixed/data-fixed-show-read.hs22
-rw-r--r--testsuite/tests/lib/Data.Fixed/data-fixed-show-read.stdout18
-rw-r--r--testsuite/tests/lib/Data.HashTable/Makefile3
-rw-r--r--testsuite/tests/lib/Data.HashTable/all.T1
-rw-r--r--testsuite/tests/lib/Data.HashTable/hash001.hs14
-rw-r--r--testsuite/tests/lib/Data.Ix/Makefile3
-rw-r--r--testsuite/tests/lib/Data.Ix/all.T1
-rw-r--r--testsuite/tests/lib/Data.Ix/ix001.hs4
-rw-r--r--testsuite/tests/lib/Data.Ix/ix001.stdout1
-rw-r--r--testsuite/tests/lib/Data.List/Makefile3
-rw-r--r--testsuite/tests/lib/Data.List/all.T2
-rw-r--r--testsuite/tests/lib/Data.List/genericNegative001.hs8
-rw-r--r--testsuite/tests/lib/Data.List/genericNegative001.stdout3
-rw-r--r--testsuite/tests/lib/Data.List/take001.hs5
-rw-r--r--testsuite/tests/lib/Data.List/take001.stdout1
-rw-r--r--testsuite/tests/lib/IO/2122.hs76
-rw-r--r--testsuite/tests/lib/IO/3307.hs52
-rw-r--r--testsuite/tests/lib/IO/3307.stdout12
-rw-r--r--testsuite/tests/lib/IO/4808.hs13
-rw-r--r--testsuite/tests/lib/IO/4808.stderr1
-rw-r--r--testsuite/tests/lib/IO/4855.hs3
-rw-r--r--testsuite/tests/lib/IO/4855.stderr1
-rw-r--r--testsuite/tests/lib/IO/4895.hs9
-rw-r--r--testsuite/tests/lib/IO/4895.stdout1
-rw-r--r--testsuite/tests/lib/IO/IOError001.hs7
-rw-r--r--testsuite/tests/lib/IO/IOError001.stdout2
-rw-r--r--testsuite/tests/lib/IO/IOError001.stdout-hugs2
-rw-r--r--testsuite/tests/lib/IO/IOError002.hs5
-rw-r--r--testsuite/tests/lib/IO/IOError002.stdout1
-rw-r--r--testsuite/tests/lib/IO/Makefile48
-rw-r--r--testsuite/tests/lib/IO/T4113.hs20
-rw-r--r--testsuite/tests/lib/IO/T4113.stdout2
-rw-r--r--testsuite/tests/lib/IO/T4113.stdout-i386-unknown-mingw322
-rw-r--r--testsuite/tests/lib/IO/T4144.hs115
-rw-r--r--testsuite/tests/lib/IO/T4144.stdout1
-rw-r--r--testsuite/tests/lib/IO/all.T157
-rw-r--r--testsuite/tests/lib/IO/concio001.hs6
-rw-r--r--testsuite/tests/lib/IO/concio001.stdout2
-rw-r--r--testsuite/tests/lib/IO/concio001.thr.stdout2
-rw-r--r--testsuite/tests/lib/IO/concio002.hs14
-rw-r--r--testsuite/tests/lib/IO/concio002.stdout4
-rw-r--r--testsuite/tests/lib/IO/countReaders001.hs17
-rw-r--r--testsuite/tests/lib/IO/countReaders001.stdout1
-rw-r--r--testsuite/tests/lib/IO/countReaders001.stdout-i386-unknown-mingw321
-rw-r--r--testsuite/tests/lib/IO/decodingerror001.hs22
-rw-r--r--testsuite/tests/lib/IO/decodingerror001.in11
-rw-r--r--testsuite/tests/lib/IO/decodingerror001.in21
-rw-r--r--testsuite/tests/lib/IO/decodingerror001.stdout10
-rw-r--r--testsuite/tests/lib/IO/decodingerror002.hs23
-rw-r--r--testsuite/tests/lib/IO/decodingerror002.in1
-rw-r--r--testsuite/tests/lib/IO/decodingerror002.stdout4
-rw-r--r--testsuite/tests/lib/IO/encoding001.hs71
-rw-r--r--testsuite/tests/lib/IO/encoding002.hs67
-rw-r--r--testsuite/tests/lib/IO/encoding002.stdout61
-rw-r--r--testsuite/tests/lib/IO/encodingerror001.hs27
-rw-r--r--testsuite/tests/lib/IO/encodingerror001.stdout36
-rw-r--r--testsuite/tests/lib/IO/environment001.hs16
-rw-r--r--testsuite/tests/lib/IO/environment001.stdout6
-rw-r--r--testsuite/tests/lib/IO/finalization001.hs26
-rw-r--r--testsuite/tests/lib/IO/finalization001.stdout200
-rw-r--r--testsuite/tests/lib/IO/hClose001.hs8
-rw-r--r--testsuite/tests/lib/IO/hClose001.stdout1
-rw-r--r--testsuite/tests/lib/IO/hClose002.hs32
-rw-r--r--testsuite/tests/lib/IO/hClose002.stdout4
-rw-r--r--testsuite/tests/lib/IO/hClose002.stdout-i386-unknown-solaris24
-rw-r--r--testsuite/tests/lib/IO/hClose003.hs42
-rw-r--r--testsuite/tests/lib/IO/hClose003.stdout4
-rw-r--r--testsuite/tests/lib/IO/hDuplicateTo001.hs24
-rw-r--r--testsuite/tests/lib/IO/hDuplicateTo001.stderr2
-rw-r--r--testsuite/tests/lib/IO/hFileSize001.hs8
-rw-r--r--testsuite/tests/lib/IO/hFileSize001.stdout1
-rw-r--r--testsuite/tests/lib/IO/hFileSize001.stdout-mingw1
-rw-r--r--testsuite/tests/lib/IO/hFileSize002.hs35
-rw-r--r--testsuite/tests/lib/IO/hFileSize002.stdout5
-rw-r--r--testsuite/tests/lib/IO/hFlush001.hs31
-rw-r--r--testsuite/tests/lib/IO/hFlush001.stdout2
-rw-r--r--testsuite/tests/lib/IO/hGetBuf001.hs218
-rw-r--r--testsuite/tests/lib/IO/hGetBuf001.stdout117
-rw-r--r--testsuite/tests/lib/IO/hGetBuffering001.hs21
-rw-r--r--testsuite/tests/lib/IO/hGetBuffering001.stdout7
-rw-r--r--testsuite/tests/lib/IO/hGetChar001.hs18
-rw-r--r--testsuite/tests/lib/IO/hGetChar001.stdout1
-rw-r--r--testsuite/tests/lib/IO/hGetLine001.hs25
-rw-r--r--testsuite/tests/lib/IO/hGetLine001.stdout100
-rw-r--r--testsuite/tests/lib/IO/hGetLine002.hs16
-rw-r--r--testsuite/tests/lib/IO/hGetLine002.stdin1
-rw-r--r--testsuite/tests/lib/IO/hGetLine002.stdout2
-rw-r--r--testsuite/tests/lib/IO/hGetLine002.stdout-hugs2
-rw-r--r--testsuite/tests/lib/IO/hGetLine003.hs9
-rw-r--r--testsuite/tests/lib/IO/hGetLine003.stdin1
-rw-r--r--testsuite/tests/lib/IO/hGetLine003.stdout2
-rw-r--r--testsuite/tests/lib/IO/hGetPosn001.hs28
-rw-r--r--testsuite/tests/lib/IO/hGetPosn001.in2
-rw-r--r--testsuite/tests/lib/IO/hGetPosn001.stdout5
-rw-r--r--testsuite/tests/lib/IO/hGetPosn001.stdout-hugs5
-rw-r--r--testsuite/tests/lib/IO/hIsEOF001.hs7
-rw-r--r--testsuite/tests/lib/IO/hIsEOF001.stdout2
-rw-r--r--testsuite/tests/lib/IO/hIsEOF002.hs48
-rw-r--r--testsuite/tests/lib/IO/hIsEOF002.stdout16
-rw-r--r--testsuite/tests/lib/IO/hReady001.hs11
-rw-r--r--testsuite/tests/lib/IO/hReady001.stdout2
-rw-r--r--testsuite/tests/lib/IO/hReady002.hs10
-rw-r--r--testsuite/tests/lib/IO/hReady002.stdout1
-rw-r--r--testsuite/tests/lib/IO/hSeek001.hs30
-rw-r--r--testsuite/tests/lib/IO/hSeek001.in1
-rw-r--r--testsuite/tests/lib/IO/hSeek001.stdout7
-rw-r--r--testsuite/tests/lib/IO/hSeek002.hs25
-rw-r--r--testsuite/tests/lib/IO/hSeek002.stdout5
-rw-r--r--testsuite/tests/lib/IO/hSeek003.hs51
-rw-r--r--testsuite/tests/lib/IO/hSeek003.stdout24
-rw-r--r--testsuite/tests/lib/IO/hSeek004.hs8
-rw-r--r--testsuite/tests/lib/IO/hSeek004.stdout1
-rw-r--r--testsuite/tests/lib/IO/hSeek004.stdout-mingw5
-rw-r--r--testsuite/tests/lib/IO/hSetBuffering002.hs6
-rw-r--r--testsuite/tests/lib/IO/hSetBuffering002.stdout6
-rw-r--r--testsuite/tests/lib/IO/hSetBuffering003.hs79
-rw-r--r--testsuite/tests/lib/IO/hSetBuffering003.stderr1
-rw-r--r--testsuite/tests/lib/IO/hSetBuffering003.stdout22
-rw-r--r--testsuite/tests/lib/IO/hSetBuffering004.hs9
-rw-r--r--testsuite/tests/lib/IO/hSetBuffering004.stdout1
-rw-r--r--testsuite/tests/lib/IO/hSetEncoding001.hs49
-rw-r--r--testsuite/tests/lib/IO/hSetEncoding001.inbin2076 -> 0 bytes
-rw-r--r--testsuite/tests/lib/IO/hSetEncoding001.stdout90
-rw-r--r--testsuite/tests/lib/IO/hSetEncoding002.hs13
-rw-r--r--testsuite/tests/lib/IO/hSetEncoding002.stdout1
-rw-r--r--testsuite/tests/lib/IO/ioeGetErrorString001.hs13
-rw-r--r--testsuite/tests/lib/IO/ioeGetErrorString001.stdout1
-rw-r--r--testsuite/tests/lib/IO/ioeGetFileName001.hs12
-rw-r--r--testsuite/tests/lib/IO/ioeGetFileName001.stdout1
-rw-r--r--testsuite/tests/lib/IO/ioeGetHandle001.hs13
-rw-r--r--testsuite/tests/lib/IO/ioeGetHandle001.stdout1
-rw-r--r--testsuite/tests/lib/IO/isEOF001.hs3
-rw-r--r--testsuite/tests/lib/IO/isEOF001.stdout1
-rw-r--r--testsuite/tests/lib/IO/latin15
-rw-r--r--testsuite/tests/lib/IO/misc001.hs24
-rw-r--r--testsuite/tests/lib/IO/newline001.hs121
-rw-r--r--testsuite/tests/lib/IO/openFile001.hs11
-rw-r--r--testsuite/tests/lib/IO/openFile001.stdout1
-rw-r--r--testsuite/tests/lib/IO/openFile002.hs6
-rw-r--r--testsuite/tests/lib/IO/openFile002.stderr1
-rw-r--r--testsuite/tests/lib/IO/openFile002.stderr-hugs1
-rw-r--r--testsuite/tests/lib/IO/openFile003.hs17
-rw-r--r--testsuite/tests/lib/IO/openFile003.stdout4
-rw-r--r--testsuite/tests/lib/IO/openFile003.stdout-i386-unknown-mingw324
-rw-r--r--testsuite/tests/lib/IO/openFile003.stdout-i386-unknown-solaris24
-rw-r--r--testsuite/tests/lib/IO/openFile003.stdout-mingw16
-rw-r--r--testsuite/tests/lib/IO/openFile003.stdout-mips-sgi-irix4
-rw-r--r--testsuite/tests/lib/IO/openFile003.stdout-sparc-sun-solaris24
-rw-r--r--testsuite/tests/lib/IO/openFile004.hs23
-rw-r--r--testsuite/tests/lib/IO/openFile005.hs45
-rw-r--r--testsuite/tests/lib/IO/openFile005.stdout12
-rw-r--r--testsuite/tests/lib/IO/openFile005.stdout-i386-unknown-mingw3212
-rw-r--r--testsuite/tests/lib/IO/openFile006.hs14
-rw-r--r--testsuite/tests/lib/IO/openFile006.stdout2
-rw-r--r--testsuite/tests/lib/IO/openFile007.hs18
-rw-r--r--testsuite/tests/lib/IO/openFile007.stdout2
-rw-r--r--testsuite/tests/lib/IO/openFile007.stdout-i386-unknown-mingw322
-rw-r--r--testsuite/tests/lib/IO/openFile008.hs22
-rw-r--r--testsuite/tests/lib/IO/openTempFile001.hs13
-rw-r--r--testsuite/tests/lib/IO/putStr001.hs6
-rw-r--r--testsuite/tests/lib/IO/putStr001.stdout1
-rw-r--r--testsuite/tests/lib/IO/readFile001.hs26
-rw-r--r--testsuite/tests/lib/IO/readFile001.stdout30
-rw-r--r--testsuite/tests/lib/IO/readFile001.stdout-i386-unknown-mingw3230
-rw-r--r--testsuite/tests/lib/IO/readwrite001.hs23
-rw-r--r--testsuite/tests/lib/IO/readwrite001.stdout3
-rw-r--r--testsuite/tests/lib/IO/readwrite002.hs49
-rw-r--r--testsuite/tests/lib/IO/readwrite002.stdout9
-rw-r--r--testsuite/tests/lib/IO/readwrite003.hs12
-rw-r--r--testsuite/tests/lib/IO/readwrite003.stdout4
-rw-r--r--testsuite/tests/lib/IO/utf8-test3
-rw-r--r--testsuite/tests/lib/IOExts/Makefile3
-rw-r--r--testsuite/tests/lib/IOExts/all.T15
-rw-r--r--testsuite/tests/lib/IOExts/echo001.hs13
-rw-r--r--testsuite/tests/lib/IOExts/echo001.stdout14
-rw-r--r--testsuite/tests/lib/IOExts/hGetBuf002.hs22
-rw-r--r--testsuite/tests/lib/IOExts/hGetBuf002.stdout44
-rw-r--r--testsuite/tests/lib/IOExts/hGetBuf003.hs26
-rw-r--r--testsuite/tests/lib/IOExts/hGetBuf003.stdout52
-rw-r--r--testsuite/tests/lib/IOExts/hPutBuf001.hs7
-rw-r--r--testsuite/tests/lib/IOExts/hPutBuf001.stdout1
-rw-r--r--testsuite/tests/lib/IOExts/hPutBuf002.hs9
-rw-r--r--testsuite/tests/lib/IOExts/hPutBuf002.stdout1
-rw-r--r--testsuite/tests/lib/IOExts/hTell001.hs63
-rw-r--r--testsuite/tests/lib/IOExts/hTell001.stdout38
-rw-r--r--testsuite/tests/lib/IOExts/hTell002.hs33
-rw-r--r--testsuite/tests/lib/IOExts/hTell002.stdoutbin51 -> 0 bytes
-rw-r--r--testsuite/tests/lib/IOExts/performGC001.hs5
-rw-r--r--testsuite/tests/lib/IOExts/trace001.hs10
-rw-r--r--testsuite/tests/lib/IOExts/trace001.stderr14
-rw-r--r--testsuite/tests/lib/IOExts/trace001.stdout1
-rw-r--r--testsuite/tests/lib/IORef/Makefile3
-rw-r--r--testsuite/tests/lib/IORef/all.T4
-rw-r--r--testsuite/tests/lib/IORef/ioref001.hs9
-rw-r--r--testsuite/tests/lib/IORef/ioref001.stdout1
-rw-r--r--testsuite/tests/lib/Lex/Makefile3
-rw-r--r--testsuite/tests/lib/Lex/all.T2
-rw-r--r--testsuite/tests/lib/Lex/lexNum.hs28
-rw-r--r--testsuite/tests/lib/Lex/lexNum.stdout17
-rw-r--r--testsuite/tests/lib/Numeric/Makefile3
-rw-r--r--testsuite/tests/lib/Numeric/all.T10
-rw-r--r--testsuite/tests/lib/Numeric/num001.hs6
-rw-r--r--testsuite/tests/lib/Numeric/num001.stdout1
-rw-r--r--testsuite/tests/lib/Numeric/num002.hs20
-rw-r--r--testsuite/tests/lib/Numeric/num002.stdout6
-rw-r--r--testsuite/tests/lib/Numeric/num002.stdout-alpha-dec-osf36
-rw-r--r--testsuite/tests/lib/Numeric/num002.stdout-mips-sgi-irix6
-rw-r--r--testsuite/tests/lib/Numeric/num002.stdout-ws-646
-rw-r--r--testsuite/tests/lib/Numeric/num002.stdout-x86_64-unknown-openbsd6
-rw-r--r--testsuite/tests/lib/Numeric/num003.hs20
-rw-r--r--testsuite/tests/lib/Numeric/num003.stdout6
-rw-r--r--testsuite/tests/lib/Numeric/num003.stdout-alpha-dec-osf36
-rw-r--r--testsuite/tests/lib/Numeric/num003.stdout-mips-sgi-irix6
-rw-r--r--testsuite/tests/lib/Numeric/num003.stdout-ws-646
-rw-r--r--testsuite/tests/lib/Numeric/num003.stdout-x86_64-unknown-openbsd6
-rw-r--r--testsuite/tests/lib/Numeric/num004.hs20
-rw-r--r--testsuite/tests/lib/Numeric/num004.stdout6
-rw-r--r--testsuite/tests/lib/Numeric/num004.stdout-alpha-dec-osf36
-rw-r--r--testsuite/tests/lib/Numeric/num004.stdout-mips-sgi-irix6
-rw-r--r--testsuite/tests/lib/Numeric/num004.stdout-ws-646
-rw-r--r--testsuite/tests/lib/Numeric/num004.stdout-x86_64-unknown-openbsd6
-rw-r--r--testsuite/tests/lib/Numeric/num005.hs23
-rw-r--r--testsuite/tests/lib/Numeric/num005.stdout55
-rw-r--r--testsuite/tests/lib/Numeric/num005.stdout-alpha-dec-osf355
-rw-r--r--testsuite/tests/lib/Numeric/num005.stdout-mips-sgi-irix55
-rw-r--r--testsuite/tests/lib/Numeric/num005.stdout-ws-6455
-rw-r--r--testsuite/tests/lib/Numeric/num005.stdout-x86_64-unknown-openbsd55
-rw-r--r--testsuite/tests/lib/Numeric/num006.hs28
-rw-r--r--testsuite/tests/lib/Numeric/num006.stdout6
-rw-r--r--testsuite/tests/lib/Numeric/num007.hs17
-rw-r--r--testsuite/tests/lib/Numeric/num007.stdout9
-rw-r--r--testsuite/tests/lib/Numeric/num008.hs57
-rw-r--r--testsuite/tests/lib/Numeric/num008.stdout148
-rw-r--r--testsuite/tests/lib/Numeric/num009.hs39
-rw-r--r--testsuite/tests/lib/Numeric/num009.stdout1
-rw-r--r--testsuite/tests/lib/Numeric/num010.hs29
-rw-r--r--testsuite/tests/lib/Numeric/num010.stdout189
-rw-r--r--testsuite/tests/lib/OldException/OldException001.hs22
-rw-r--r--testsuite/tests/lib/OldException/OldException001.stdout2
-rw-r--r--testsuite/tests/lib/OldException/all.T3
-rw-r--r--testsuite/tests/lib/PrettyPrint/Makefile3
-rw-r--r--testsuite/tests/lib/PrettyPrint/T3911.hs23
-rw-r--r--testsuite/tests/lib/PrettyPrint/T3911.stdout4
-rw-r--r--testsuite/tests/lib/PrettyPrint/all.T2
-rw-r--r--testsuite/tests/lib/PrettyPrint/pp1.hs18
-rw-r--r--testsuite/tests/lib/PrettyPrint/pp1.stdout4
-rw-r--r--testsuite/tests/lib/Regex/Makefile3
-rw-r--r--testsuite/tests/lib/Regex/all.T3
-rw-r--r--testsuite/tests/lib/Regex/regex001.hs11
-rw-r--r--testsuite/tests/lib/Regex/regex002.hs13
-rw-r--r--testsuite/tests/lib/Regex/regex002.stdout3
-rw-r--r--testsuite/tests/lib/Regex/regex003.hs43
-rw-r--r--testsuite/tests/lib/Regex/regex003.stdout8
-rw-r--r--testsuite/tests/lib/Show/Makefile3
-rw-r--r--testsuite/tests/lib/Show/all.T2
-rw-r--r--testsuite/tests/lib/Show/showDouble.hs41
-rw-r--r--testsuite/tests/lib/Show/showDouble.stdout22
-rw-r--r--testsuite/tests/lib/System/Makefile3
-rw-r--r--testsuite/tests/lib/System/all.T8
-rw-r--r--testsuite/tests/lib/System/exitWith001.hs3
-rw-r--r--testsuite/tests/lib/System/getArgs001.hs9
-rw-r--r--testsuite/tests/lib/System/getArgs001.stdout1
-rw-r--r--testsuite/tests/lib/System/getEnv001.hs15
-rw-r--r--testsuite/tests/lib/System/getEnv001.stdout2
-rw-r--r--testsuite/tests/lib/System/system001.hs14
-rw-r--r--testsuite/tests/lib/System/system001.stdout14
-rw-r--r--testsuite/tests/lib/Text.Printf/1548.hs11
-rw-r--r--testsuite/tests/lib/Text.Printf/1548.stdout3
-rw-r--r--testsuite/tests/lib/Text.Printf/Makefile3
-rw-r--r--testsuite/tests/lib/Text.Printf/all.T1
-rw-r--r--testsuite/tests/lib/Time/Makefile3
-rw-r--r--testsuite/tests/lib/Time/T5430.hs8
-rw-r--r--testsuite/tests/lib/Time/T5430.stdout1
-rw-r--r--testsuite/tests/lib/Time/all.T4
-rw-r--r--testsuite/tests/lib/Time/time002.hs16
-rw-r--r--testsuite/tests/lib/Time/time002.stdout1
-rw-r--r--testsuite/tests/lib/Time/time003.hs24
-rw-r--r--testsuite/tests/lib/Time/time003.stdout2
-rw-r--r--testsuite/tests/lib/Time/time004.hs10
-rw-r--r--testsuite/tests/lib/Time/time004.stdout1
-rw-r--r--testsuite/tests/lib/exceptions/Makefile3
-rw-r--r--testsuite/tests/lib/exceptions/all.T1
-rw-r--r--testsuite/tests/lib/exceptions/exceptions001.hs7
-rw-r--r--testsuite/tests/lib/haskell98/Makefile3
-rw-r--r--testsuite/tests/lib/haskell98/all.T1
-rw-r--r--testsuite/tests/lib/haskell98/instance-leaks.hs27
-rw-r--r--testsuite/tests/lib/integer/Makefile15
-rw-r--r--testsuite/tests/lib/integer/all.T4
-rw-r--r--testsuite/tests/lib/integer/fromToInteger.hs14
-rw-r--r--testsuite/tests/lib/integer/integerConstantFolding.hs28
-rw-r--r--testsuite/tests/lib/integer/integerConstantFolding.stdout6
-rw-r--r--testsuite/tests/lib/libposix/Makefile3
-rw-r--r--testsuite/tests/lib/libposix/posix001.hs24
-rw-r--r--testsuite/tests/lib/libposix/posix001.stdout4
-rw-r--r--testsuite/tests/lib/libposix/posix002.hs4
-rw-r--r--testsuite/tests/lib/libposix/posix002.stdout2
-rw-r--r--testsuite/tests/lib/libposix/posix003.hs6
-rw-r--r--testsuite/tests/lib/libposix/posix003.stdout0
-rw-r--r--testsuite/tests/lib/libposix/posix004.hs58
-rw-r--r--testsuite/tests/lib/libposix/posix004.stdout1
-rw-r--r--testsuite/tests/lib/libposix/posix005.hs25
-rw-r--r--testsuite/tests/lib/libposix/posix005.stdout7
-rw-r--r--testsuite/tests/lib/libposix/posix006.hs14
-rw-r--r--testsuite/tests/lib/libposix/posix006.stdout6
-rw-r--r--testsuite/tests/lib/libposix/posix007.hs34
-rw-r--r--testsuite/tests/lib/libposix/posix007.stdout2
-rw-r--r--testsuite/tests/lib/libposix/posix008.hs12
-rw-r--r--testsuite/tests/lib/libposix/posix008.stdout3
-rw-r--r--testsuite/tests/lib/libposix/posix009.hs15
-rw-r--r--testsuite/tests/lib/libposix/posix009.stdout0
-rw-r--r--testsuite/tests/lib/libposix/posix010.hs24
-rw-r--r--testsuite/tests/lib/libposix/posix010.stdout4
-rw-r--r--testsuite/tests/lib/libposix/posix011.hs22
-rw-r--r--testsuite/tests/lib/libposix/posix011.stdout4
-rw-r--r--testsuite/tests/lib/libposix/posix012.hs59
-rw-r--r--testsuite/tests/lib/libposix/posix012.stdout0
-rw-r--r--testsuite/tests/lib/libposix/posix013.hs21
-rw-r--r--testsuite/tests/lib/libposix/posix014.hs19
-rw-r--r--testsuite/tests/lib/should_run/4006.hs8
-rw-r--r--testsuite/tests/lib/should_run/4006.stdout2
-rw-r--r--testsuite/tests/lib/should_run/Makefile3
-rw-r--r--testsuite/tests/lib/should_run/Memo1.lhs142
-rw-r--r--testsuite/tests/lib/should_run/Memo2.lhs142
-rw-r--r--testsuite/tests/lib/should_run/addr001.hs10
-rw-r--r--testsuite/tests/lib/should_run/addr001.stdout2
-rw-r--r--testsuite/tests/lib/should_run/addr001.stdout-alpha-dec-osf32
-rw-r--r--testsuite/tests/lib/should_run/addr001.stdout-mips-sgi-irix2
-rw-r--r--testsuite/tests/lib/should_run/addr001.stdout-ws-642
-rw-r--r--testsuite/tests/lib/should_run/addr001.stdout-x86_64-unknown-openbsd2
-rw-r--r--testsuite/tests/lib/should_run/all.T70
-rw-r--r--testsuite/tests/lib/should_run/array001.hs34
-rw-r--r--testsuite/tests/lib/should_run/array001.stdout2
-rw-r--r--testsuite/tests/lib/should_run/char001.hs43
-rw-r--r--testsuite/tests/lib/should_run/char001.stdout18
-rw-r--r--testsuite/tests/lib/should_run/char002.hs7
-rw-r--r--testsuite/tests/lib/should_run/char002.stdout4
-rw-r--r--testsuite/tests/lib/should_run/cstring001.hs18
-rw-r--r--testsuite/tests/lib/should_run/dynamic001.hs107
-rw-r--r--testsuite/tests/lib/should_run/dynamic001.stdout42
-rw-r--r--testsuite/tests/lib/should_run/dynamic002.hs91
-rw-r--r--testsuite/tests/lib/should_run/dynamic002.stdout64
-rw-r--r--testsuite/tests/lib/should_run/dynamic003.hs12
-rw-r--r--testsuite/tests/lib/should_run/dynamic003.stdout1
-rw-r--r--testsuite/tests/lib/should_run/dynamic004.hs36
-rw-r--r--testsuite/tests/lib/should_run/dynamic004.stdout1
-rw-r--r--testsuite/tests/lib/should_run/dynamic005.hs14
-rw-r--r--testsuite/tests/lib/should_run/dynamic005.stdout1
-rw-r--r--testsuite/tests/lib/should_run/enum01.hs526
-rw-r--r--testsuite/tests/lib/should_run/enum01.stdout246
-rw-r--r--testsuite/tests/lib/should_run/enum01.stdout-alpha-dec-osf3230
-rw-r--r--testsuite/tests/lib/should_run/enum01.stdout-hugs246
-rw-r--r--testsuite/tests/lib/should_run/enum01.stdout-ws-64246
-rw-r--r--testsuite/tests/lib/should_run/enum02.hs263
-rw-r--r--testsuite/tests/lib/should_run/enum02.stdout141
-rw-r--r--testsuite/tests/lib/should_run/enum02.stdout-alpha-dec-osf3141
-rw-r--r--testsuite/tests/lib/should_run/enum02.stdout-hugs141
-rw-r--r--testsuite/tests/lib/should_run/enum02.stdout-mips-sgi-irix141
-rw-r--r--testsuite/tests/lib/should_run/enum02.stdout-ws-64141
-rw-r--r--testsuite/tests/lib/should_run/enum02.stdout-x86_64-unknown-openbsd141
-rw-r--r--testsuite/tests/lib/should_run/enum03.hs266
-rw-r--r--testsuite/tests/lib/should_run/enum03.stdout142
-rw-r--r--testsuite/tests/lib/should_run/enum03.stdout-alpha-dec-osf3142
-rw-r--r--testsuite/tests/lib/should_run/enum03.stdout-hugs142
-rw-r--r--testsuite/tests/lib/should_run/enum03.stdout-mips-sgi-irix142
-rw-r--r--testsuite/tests/lib/should_run/enum03.stdout-ws-64142
-rw-r--r--testsuite/tests/lib/should_run/enum03.stdout-x86_64-unknown-openbsd142
-rw-r--r--testsuite/tests/lib/should_run/enum04.hs15
-rw-r--r--testsuite/tests/lib/should_run/enum04.stdout4
-rw-r--r--testsuite/tests/lib/should_run/exceptionsrun001.hs56
-rw-r--r--testsuite/tests/lib/should_run/exceptionsrun001.stdout6
-rw-r--r--testsuite/tests/lib/should_run/exceptionsrun002.hs105
-rw-r--r--testsuite/tests/lib/should_run/exceptionsrun002.stdout40
-rw-r--r--testsuite/tests/lib/should_run/length001.hs8
-rw-r--r--testsuite/tests/lib/should_run/length001.stdout2
-rw-r--r--testsuite/tests/lib/should_run/list001.hs152
-rw-r--r--testsuite/tests/lib/should_run/list001.stdout54
-rw-r--r--testsuite/tests/lib/should_run/list001.stdout-ghc54
-rw-r--r--testsuite/tests/lib/should_run/list002.hs6
-rw-r--r--testsuite/tests/lib/should_run/list002.stdout1
-rw-r--r--testsuite/tests/lib/should_run/list003.hs7
-rw-r--r--testsuite/tests/lib/should_run/list003.stdout1
-rw-r--r--testsuite/tests/lib/should_run/memo001.hs19
-rw-r--r--testsuite/tests/lib/should_run/memo001.stdout1
-rw-r--r--testsuite/tests/lib/should_run/memo002.hs30
-rw-r--r--testsuite/tests/lib/should_run/memo002.stdout44
-rw-r--r--testsuite/tests/lib/should_run/packedstring001.hs11
-rw-r--r--testsuite/tests/lib/should_run/packedstring001.stdout1
-rw-r--r--testsuite/tests/lib/should_run/rand001.hs22
-rw-r--r--testsuite/tests/lib/should_run/rand001.stdout5
-rw-r--r--testsuite/tests/lib/should_run/ratio001.hs4
-rw-r--r--testsuite/tests/lib/should_run/ratio001.stdout1
-rw-r--r--testsuite/tests/lib/should_run/ratio001.stdout-ghc1
-rw-r--r--testsuite/tests/lib/should_run/reads001.hs10
-rw-r--r--testsuite/tests/lib/should_run/reads001.stdout4
-rw-r--r--testsuite/tests/lib/should_run/show001.hs24
-rw-r--r--testsuite/tests/lib/should_run/show001.stdout15
-rw-r--r--testsuite/tests/lib/should_run/stableptr001.hs19
-rw-r--r--testsuite/tests/lib/should_run/stableptr001.stdout1
-rw-r--r--testsuite/tests/lib/should_run/stableptr003.hs16
-rw-r--r--testsuite/tests/lib/should_run/stableptr004.hs12
-rw-r--r--testsuite/tests/lib/should_run/stableptr004.stdout2
-rw-r--r--testsuite/tests/lib/should_run/stableptr005.hs22
-rw-r--r--testsuite/tests/lib/should_run/stableptr005.stdout1
-rw-r--r--testsuite/tests/lib/should_run/text001.hs15
-rw-r--r--testsuite/tests/lib/should_run/text001.stdout1
-rw-r--r--testsuite/tests/lib/should_run/tup001.hs33
-rw-r--r--testsuite/tests/lib/should_run/tup001.stdout7
-rw-r--r--testsuite/tests/lib/should_run/weak001.hs12
-rw-r--r--testsuite/tests/lib/socket/Makefile3
-rw-r--r--testsuite/tests/lib/socket/socket001.hs58
-rw-r--r--testsuite/tests/lib/socket/socket001.stdout0
-rw-r--r--testsuite/tests/lib/socket/socket002.hs45
-rw-r--r--testsuite/tests/lib/socket/socket002.stdout0
-rw-r--r--testsuite/tests/lib/socket/socket003.hs43
-rw-r--r--testsuite/tests/lib/socket/socket003.stdout0
-rw-r--r--testsuite/tests/lib/socket/socket004.hs38
-rw-r--r--testsuite/tests/lib/socket/socket004.stdout0
-rw-r--r--testsuite/tests/lib/socket/socket005.hs37
-rw-r--r--testsuite/tests/lib/socket/socket005.stdout0
-rw-r--r--testsuite/tests/lib/socket/socket006.hs27
-rw-r--r--testsuite/tests/lib/socket/socket006.stdout0
-rw-r--r--testsuite/tests/lib/socket/socket007.hs44
-rw-r--r--testsuite/tests/lib/socket/socket007.stdout0
-rw-r--r--testsuite/tests/lib/socket/socket008.hs21
-rw-r--r--testsuite/tests/lib/socket/socket008.stdout0
-rw-r--r--testsuite/tests/lib/socket/socket009.hs28
-rw-r--r--testsuite/tests/lib/socket/socket009.stdout0
-rw-r--r--testsuite/tests/llvm/should_compile/5486.hs124
-rw-r--r--testsuite/tests/llvm/should_compile/5681.hs14
-rw-r--r--testsuite/tests/llvm/should_compile/all.T2
-rw-r--r--testsuite/tests/module/T1074.stderr8
-rw-r--r--testsuite/tests/module/base01/Makefile4
-rw-r--r--testsuite/tests/module/mod175/all.T5
-rw-r--r--testsuite/tests/module/mod45.stderr6
-rw-r--r--testsuite/tests/module/mod53.stderr2
-rw-r--r--testsuite/tests/module/mod55.stderr12
-rw-r--r--testsuite/tests/module/mod56.stderr16
-rw-r--r--testsuite/tests/module/mod89.stderr2
-rw-r--r--testsuite/tests/numeric/should_run/add2.hs26
-rw-r--r--testsuite/tests/numeric/should_run/add2.stdout15
-rw-r--r--testsuite/tests/numeric/should_run/add2.stdout-ws-3215
-rw-r--r--testsuite/tests/numeric/should_run/all.T11
-rw-r--r--testsuite/tests/numeric/should_run/mul2.hs26
-rw-r--r--testsuite/tests/numeric/should_run/mul2.stdout15
-rw-r--r--testsuite/tests/numeric/should_run/mul2.stdout-ws-3215
-rw-r--r--testsuite/tests/parser/should_compile/T2245.stderr16
-rw-r--r--testsuite/tests/parser/should_compile/mc16.hs2
-rw-r--r--testsuite/tests/parser/should_compile/read014.stderr-ghc56
-rw-r--r--testsuite/tests/parser/should_compile/read062.hs2
-rw-r--r--testsuite/tests/parser/should_compile/read063.hs8
-rw-r--r--testsuite/tests/parser/should_compile/read064.stderr2
-rw-r--r--testsuite/tests/parser/should_compile/read066.stderr2
-rw-r--r--testsuite/tests/parser/should_fail/readFail001.stderr2
-rw-r--r--testsuite/tests/parser/should_fail/readFail003.stderr48
-rw-r--r--testsuite/tests/parser/should_fail/readFail035.stderr8
-rw-r--r--testsuite/tests/parser/should_fail/readFail036.stderr5
-rw-r--r--testsuite/tests/parser/should_fail/readFail043.hs2
-rw-r--r--testsuite/tests/parser/should_fail/readFail043.stderr2
-rw-r--r--testsuite/tests/perf/compiler/T3064.hs20
-rw-r--r--testsuite/tests/perf/compiler/T5321FD.hs102
-rw-r--r--testsuite/tests/perf/compiler/T5321Fun.hs109
-rw-r--r--testsuite/tests/perf/compiler/T5631.hs1120
-rw-r--r--testsuite/tests/perf/compiler/T5642.hs985
-rw-r--r--testsuite/tests/perf/compiler/T783.hs503
-rw-r--r--testsuite/tests/perf/compiler/all.T122
-rw-r--r--testsuite/tests/perf/should_run/T4474a.hs40
-rw-r--r--testsuite/tests/perf/should_run/T4474a.stdout1
-rw-r--r--testsuite/tests/perf/should_run/T4474b.hs40
-rw-r--r--testsuite/tests/perf/should_run/T4474b.stdout1
-rw-r--r--testsuite/tests/perf/should_run/T4474c.hs40
-rw-r--r--testsuite/tests/perf/should_run/T4474c.stdout1
-rw-r--r--testsuite/tests/perf/should_run/T5237.hs15
-rw-r--r--testsuite/tests/perf/should_run/T5237.stdout1
-rw-r--r--testsuite/tests/perf/should_run/T5536.hs5
-rw-r--r--testsuite/tests/perf/should_run/all.T70
-rw-r--r--testsuite/tests/perf/space_leaks/T4018.hs27
-rw-r--r--testsuite/tests/perf/space_leaks/all.T9
-rw-r--r--testsuite/tests/plugins/all.T10
-rw-r--r--testsuite/tests/polykinds/Freeman.hs259
-rw-r--r--testsuite/tests/polykinds/Freeman.stdout1
-rw-r--r--testsuite/tests/polykinds/Makefile8
-rw-r--r--testsuite/tests/polykinds/MonoidsFD.hs106
-rw-r--r--testsuite/tests/polykinds/MonoidsFD.stdout8
-rw-r--r--testsuite/tests/polykinds/MonoidsTF.hs116
-rw-r--r--testsuite/tests/polykinds/MonoidsTF.stdout8
-rw-r--r--testsuite/tests/polykinds/PolyKinds01.hs3
-rw-r--r--testsuite/tests/polykinds/PolyKinds02.hs3
-rw-r--r--testsuite/tests/polykinds/PolyKinds02.stderr2
-rw-r--r--testsuite/tests/polykinds/PolyKinds04.stderr14
-rw-r--r--testsuite/tests/polykinds/PolyKinds05.hs2
-rw-r--r--testsuite/tests/polykinds/PolyKinds06.hs2
-rw-r--r--testsuite/tests/polykinds/PolyKinds06.stderr10
-rw-r--r--testsuite/tests/polykinds/PolyKinds07.hs2
-rw-r--r--testsuite/tests/polykinds/PolyKinds07.stderr12
-rw-r--r--testsuite/tests/polykinds/PolyKinds09.hs2
-rw-r--r--testsuite/tests/polykinds/PolyKinds10.hs2
-rw-r--r--testsuite/tests/polykinds/PolyKinds11.hs12
-rw-r--r--testsuite/tests/polykinds/PolyKinds12.hs34
-rw-r--r--testsuite/tests/polykinds/PolyKinds13.hs29
-rw-r--r--testsuite/tests/polykinds/T5716.hs13
-rw-r--r--testsuite/tests/polykinds/T5716.stderr6
-rw-r--r--testsuite/tests/polykinds/T5717.hs20
-rw-r--r--testsuite/tests/polykinds/T5770.hs21
-rw-r--r--testsuite/tests/polykinds/T5771.hs29
-rw-r--r--testsuite/tests/polykinds/T5798.hs8
-rw-r--r--testsuite/tests/polykinds/T5862.hs27
-rw-r--r--testsuite/tests/polykinds/T5881.hs5
-rw-r--r--testsuite/tests/polykinds/T5881a.hs4
-rw-r--r--testsuite/tests/polykinds/T5912.hs12
-rw-r--r--testsuite/tests/polykinds/T5935.hs13
-rw-r--r--testsuite/tests/polykinds/T5937.hs6
-rw-r--r--testsuite/tests/polykinds/T5948.hs7
-rw-r--r--testsuite/tests/polykinds/all.T20
-rw-r--r--testsuite/tests/profiling/should_run/2592.stderr2
-rw-r--r--testsuite/tests/profiling/should_run/T5363.hs12
-rw-r--r--testsuite/tests/profiling/should_run/T5363.stdout1
-rw-r--r--testsuite/tests/profiling/should_run/T5363.stdout-ws-321
-rw-r--r--testsuite/tests/profiling/should_run/all.T43
-rw-r--r--testsuite/tests/profiling/should_run/callstack001.hs18
-rw-r--r--testsuite/tests/profiling/should_run/callstack001.stdout2
-rw-r--r--testsuite/tests/profiling/should_run/callstack002.hs21
-rw-r--r--testsuite/tests/profiling/should_run/callstack002.stderr16
-rw-r--r--testsuite/tests/profiling/should_run/callstack002.stdout9
-rw-r--r--testsuite/tests/profiling/should_run/scc002.hs2
-rw-r--r--testsuite/tests/profiling/should_run/scc002.prof.sample36
-rw-r--r--testsuite/tests/profiling/should_run/scc004.hs10
-rw-r--r--testsuite/tests/profiling/should_run/scc004.prof.sample28
-rw-r--r--testsuite/tests/rebindable/DoParamM.stderr17
-rw-r--r--testsuite/tests/rebindable/rebindable6.stderr30
-rw-r--r--testsuite/tests/rename/should_compile/T3103/test.T2
-rw-r--r--testsuite/tests/rename/should_compile/T3901.hs10
-rw-r--r--testsuite/tests/rename/should_compile/T4239.stdout2
-rw-r--r--testsuite/tests/rename/should_compile/mc11.hs10
-rw-r--r--testsuite/tests/rename/should_fail/T5211.stderr10
-rw-r--r--testsuite/tests/rename/should_fail/T5657.hs3
-rw-r--r--testsuite/tests/rename/should_fail/T5657.stderr5
-rw-r--r--testsuite/tests/rename/should_fail/T5745.hs6
-rw-r--r--testsuite/tests/rename/should_fail/T5745.stderr2
-rw-r--r--testsuite/tests/rename/should_fail/T5745a.hs3
-rw-r--r--testsuite/tests/rename/should_fail/T5745b.hs4
-rw-r--r--testsuite/tests/rename/should_fail/T5892a.hs12
-rw-r--r--testsuite/tests/rename/should_fail/T5892a.stderr10
-rw-r--r--testsuite/tests/rename/should_fail/T5892b.hs11
-rw-r--r--testsuite/tests/rename/should_fail/T5892b.stderr4
-rw-r--r--testsuite/tests/rename/should_fail/T5951.hs11
-rw-r--r--testsuite/tests/rename/should_fail/T5951.stderr2
-rw-r--r--testsuite/tests/rename/should_fail/all.T7
-rw-r--r--testsuite/tests/rename/should_fail/rnfail055.stderr26
-rw-r--r--testsuite/tests/rts/5644/5644.stderr3
-rw-r--r--testsuite/tests/rts/5644/Conf.hs7
-rw-r--r--testsuite/tests/rts/5644/Makefile (renamed from testsuite/tests/lib/Concurrent/Makefile)0
-rw-r--r--testsuite/tests/rts/5644/ManyQueue.hs82
-rw-r--r--testsuite/tests/rts/5644/Util.hs29
-rw-r--r--testsuite/tests/rts/5644/all.T7
-rw-r--r--testsuite/tests/rts/5644/heap-overflow.hs8
-rw-r--r--testsuite/tests/rts/5993.hs6
-rw-r--r--testsuite/tests/rts/5993.stdout1
-rw-r--r--testsuite/tests/rts/Makefile2
-rw-r--r--testsuite/tests/rts/all.T6
-rw-r--r--testsuite/tests/rts/outofmem2.stderr2
-rw-r--r--testsuite/tests/rts/rtsflags002.hs1
-rw-r--r--testsuite/tests/rts/rtsflags002.stderr1
-rw-r--r--testsuite/tests/safeHaskell/check/Check01.hs2
-rw-r--r--testsuite/tests/safeHaskell/check/Check05.hs7
-rw-r--r--testsuite/tests/safeHaskell/check/Check05.stderr3
-rw-r--r--testsuite/tests/safeHaskell/check/Check06.hs13
-rw-r--r--testsuite/tests/safeHaskell/check/Check06.stderr5
-rw-r--r--testsuite/tests/safeHaskell/check/Check06_A.hs6
-rw-r--r--testsuite/tests/safeHaskell/check/Check07.hs14
-rw-r--r--testsuite/tests/safeHaskell/check/Check07.stderr3
-rw-r--r--testsuite/tests/safeHaskell/check/Check07_A.hs8
-rw-r--r--testsuite/tests/safeHaskell/check/Check07_B.hs8
-rw-r--r--testsuite/tests/safeHaskell/check/Check08.hs14
-rw-r--r--testsuite/tests/safeHaskell/check/Check08.stderr6
-rw-r--r--testsuite/tests/safeHaskell/check/Check08_A.hs8
-rw-r--r--testsuite/tests/safeHaskell/check/Check08_B.hs8
-rw-r--r--testsuite/tests/safeHaskell/check/Check09.hs8
-rw-r--r--testsuite/tests/safeHaskell/check/Check09.stderr4
-rw-r--r--testsuite/tests/safeHaskell/check/Check10.hs8
-rw-r--r--testsuite/tests/safeHaskell/check/all.T25
-rw-r--r--testsuite/tests/safeHaskell/check/pkg01/ImpSafe01.stderr3
-rw-r--r--testsuite/tests/safeHaskell/check/pkg01/ImpSafeOnly03.stderr3
-rw-r--r--testsuite/tests/safeHaskell/check/pkg01/M_SafePkg5.hs14
-rw-r--r--testsuite/tests/safeHaskell/check/pkg01/Makefile3
-rw-r--r--testsuite/tests/safeHaskell/check/pkg01/p.cabal1
-rw-r--r--testsuite/tests/safeHaskell/check/pkg01/safePkg01.stdout5
-rw-r--r--testsuite/tests/safeHaskell/flags/SafeFlags17.stderr3
-rw-r--r--testsuite/tests/safeHaskell/flags/SafeFlags18.stderr6
-rw-r--r--testsuite/tests/safeHaskell/flags/SafeFlags22.stderr4
-rw-r--r--testsuite/tests/safeHaskell/flags/SafeFlags23.stderr4
-rw-r--r--testsuite/tests/safeHaskell/flags/SafeFlags28.hs9
-rw-r--r--testsuite/tests/safeHaskell/flags/SafeFlags28.stderr12
-rw-r--r--testsuite/tests/safeHaskell/flags/SafeFlags29.hs10
-rw-r--r--testsuite/tests/safeHaskell/flags/SafeFlags29.stderr12
-rw-r--r--testsuite/tests/safeHaskell/flags/all.T6
-rw-r--r--testsuite/tests/safeHaskell/ghci/A.hs10
-rw-r--r--testsuite/tests/safeHaskell/ghci/B.hs8
-rw-r--r--testsuite/tests/safeHaskell/ghci/C.hs13
-rw-r--r--testsuite/tests/safeHaskell/ghci/D.hs8
-rw-r--r--testsuite/tests/safeHaskell/ghci/E.hs7
-rw-r--r--testsuite/tests/safeHaskell/ghci/Makefile (renamed from testsuite/tests/lib/OldException/Makefile)0
-rw-r--r--testsuite/tests/safeHaskell/ghci/P13_A.hs9
-rw-r--r--testsuite/tests/safeHaskell/ghci/all.T20
-rw-r--r--testsuite/tests/safeHaskell/ghci/p1.script8
-rw-r--r--testsuite/tests/safeHaskell/ghci/p1.stderr6
-rw-r--r--testsuite/tests/safeHaskell/ghci/p10.script10
-rw-r--r--testsuite/tests/safeHaskell/ghci/p10.stderr2
-rw-r--r--testsuite/tests/safeHaskell/ghci/p10.stdout1
-rw-r--r--testsuite/tests/safeHaskell/ghci/p11.script6
-rw-r--r--testsuite/tests/safeHaskell/ghci/p11.stderr4
-rw-r--r--testsuite/tests/safeHaskell/ghci/p12.script10
-rw-r--r--testsuite/tests/safeHaskell/ghci/p12.stderr4
-rw-r--r--testsuite/tests/safeHaskell/ghci/p12.stdout2
-rw-r--r--testsuite/tests/safeHaskell/ghci/p13.script14
-rw-r--r--testsuite/tests/safeHaskell/ghci/p13.stderr13
-rw-r--r--testsuite/tests/safeHaskell/ghci/p13.stdout (renamed from testsuite/tests/lib/System/exitWith001.stdout)0
-rw-r--r--testsuite/tests/safeHaskell/ghci/p14.script10
-rw-r--r--testsuite/tests/safeHaskell/ghci/p14.stderr2
-rw-r--r--testsuite/tests/safeHaskell/ghci/p15.script23
-rw-r--r--testsuite/tests/safeHaskell/ghci/p15.stderr11
-rw-r--r--testsuite/tests/safeHaskell/ghci/p15.stdout2
-rw-r--r--testsuite/tests/safeHaskell/ghci/p16.script22
-rw-r--r--testsuite/tests/safeHaskell/ghci/p16.stderr15
-rw-r--r--testsuite/tests/safeHaskell/ghci/p16.stdout1
-rw-r--r--testsuite/tests/safeHaskell/ghci/p17.script10
-rw-r--r--testsuite/tests/safeHaskell/ghci/p17.stderr4
-rw-r--r--testsuite/tests/safeHaskell/ghci/p2.script10
-rw-r--r--testsuite/tests/safeHaskell/ghci/p2.stderr2
-rw-r--r--testsuite/tests/safeHaskell/ghci/p2.stdout2
-rw-r--r--testsuite/tests/safeHaskell/ghci/p3.script12
-rw-r--r--testsuite/tests/safeHaskell/ghci/p3.stderr8
-rw-r--r--testsuite/tests/safeHaskell/ghci/p3.stdout1
-rw-r--r--testsuite/tests/safeHaskell/ghci/p4.script8
-rw-r--r--testsuite/tests/safeHaskell/ghci/p4.stderr6
-rw-r--r--testsuite/tests/safeHaskell/ghci/p5.script13
-rw-r--r--testsuite/tests/safeHaskell/ghci/p5.stdout7
-rw-r--r--testsuite/tests/safeHaskell/ghci/p6.script13
-rw-r--r--testsuite/tests/safeHaskell/ghci/p6.stderr10
-rw-r--r--testsuite/tests/safeHaskell/ghci/p6.stdout1
-rw-r--r--testsuite/tests/safeHaskell/ghci/p7.script6
-rw-r--r--testsuite/tests/safeHaskell/ghci/p7.stdout2
-rw-r--r--testsuite/tests/safeHaskell/ghci/p8.script6
-rw-r--r--testsuite/tests/safeHaskell/ghci/p8.stdout2
-rw-r--r--testsuite/tests/safeHaskell/ghci/p9.script10
-rw-r--r--testsuite/tests/safeHaskell/ghci/p9.stderr2
-rw-r--r--testsuite/tests/safeHaskell/ghci/p9.stdout1
-rw-r--r--testsuite/tests/safeHaskell/safeInfered/UnsafeInfered01.stderr3
-rw-r--r--testsuite/tests/safeHaskell/safeInfered/UnsafeInfered02.stderr3
-rw-r--r--testsuite/tests/safeHaskell/safeInfered/UnsafeInfered03.stderr3
-rw-r--r--testsuite/tests/safeHaskell/safeInfered/UnsafeInfered05.stderr3
-rw-r--r--testsuite/tests/safeHaskell/safeInfered/UnsafeInfered06.stderr3
-rw-r--r--testsuite/tests/safeHaskell/safeInfered/UnsafeInfered07.stderr3
-rw-r--r--testsuite/tests/safeHaskell/safeInfered/UnsafeInfered08.stderr3
-rw-r--r--testsuite/tests/safeHaskell/safeInfered/UnsafeInfered09.stderr3
-rw-r--r--testsuite/tests/safeHaskell/safeInfered/UnsafeInfered10.stderr3
-rw-r--r--testsuite/tests/safeHaskell/safeInfered/UnsafeInfered11.stderr12
-rw-r--r--testsuite/tests/safeHaskell/safeInfered/UnsafeInfered12.hs7
-rw-r--r--testsuite/tests/safeHaskell/safeInfered/UnsafeInfered12.stderr9
-rw-r--r--testsuite/tests/safeHaskell/safeInfered/all.T3
-rw-r--r--testsuite/tests/safeHaskell/safeLanguage/SafeLang03.stderr2
-rw-r--r--testsuite/tests/safeHaskell/unsafeLibs/BadImport01.stderr3
-rw-r--r--testsuite/tests/safeHaskell/unsafeLibs/BadImport04.stderr2
-rw-r--r--testsuite/tests/safeHaskell/unsafeLibs/BadImport05.stderr3
-rw-r--r--testsuite/tests/safeHaskell/unsafeLibs/BadImport06.stderr3
-rw-r--r--testsuite/tests/safeHaskell/unsafeLibs/BadImport07.stderr3
-rw-r--r--testsuite/tests/safeHaskell/unsafeLibs/BadImport08.stderr3
-rw-r--r--testsuite/tests/safeHaskell/unsafeLibs/BadImport09.stderr3
-rw-r--r--testsuite/tests/safeHaskell/unsafeLibs/Dep05.stderr2
-rw-r--r--testsuite/tests/safeHaskell/unsafeLibs/Dep06.stderr2
-rw-r--r--testsuite/tests/safeHaskell/unsafeLibs/Dep07.stderr3
-rw-r--r--testsuite/tests/safeHaskell/unsafeLibs/Dep08.stderr3
-rw-r--r--testsuite/tests/safeHaskell/unsafeLibs/Dep09.stderr2
-rw-r--r--testsuite/tests/safeHaskell/unsafeLibs/Dep10.stderr2
-rw-r--r--testsuite/tests/safeHaskell/unsafeLibs/GoodImport03.hs2
-rw-r--r--testsuite/tests/safeHaskell/unsafeLibs/GoodImport03.stderr4
-rw-r--r--testsuite/tests/simplCore/should_compile/Makefile18
-rw-r--r--testsuite/tests/simplCore/should_compile/T3016.hs4
-rw-r--r--testsuite/tests/simplCore/should_compile/T3772.stdout2
-rw-r--r--testsuite/tests/simplCore/should_compile/T5327.hs12
-rw-r--r--testsuite/tests/simplCore/should_compile/T5327.stdout1
-rw-r--r--testsuite/tests/simplCore/should_compile/T5359b.stderr3
-rw-r--r--testsuite/tests/simplCore/should_compile/T5658b.hs17
-rw-r--r--testsuite/tests/simplCore/should_compile/T5658b.stdout1
-rw-r--r--testsuite/tests/simplCore/should_compile/T5776.hs28
-rw-r--r--testsuite/tests/simplCore/should_compile/T5776.stdout1
-rw-r--r--testsuite/tests/simplCore/should_compile/all.T9
-rw-r--r--testsuite/tests/simplCore/should_compile/rule2.stderr4
-rw-r--r--testsuite/tests/simplCore/should_compile/simpl017.stderr16
-rw-r--r--testsuite/tests/simplCore/should_compile/simpl020.stderr4
-rw-r--r--testsuite/tests/simplCore/should_run/T5915.hs5
-rw-r--r--testsuite/tests/simplCore/should_run/T5915.stdout1
-rw-r--r--testsuite/tests/simplCore/should_run/all.T3
-rw-r--r--testsuite/tests/th/Makefile7
-rw-r--r--testsuite/tests/th/T1541.hs11
-rw-r--r--testsuite/tests/th/T3177a.stderr5
-rw-r--r--testsuite/tests/th/T4135.hs16
-rw-r--r--testsuite/tests/th/T4135.stderr2
-rw-r--r--testsuite/tests/th/T5358.stderr11
-rw-r--r--testsuite/tests/th/T5362.stderr8
-rw-r--r--testsuite/tests/th/T5555.hs8
-rw-r--r--testsuite/tests/th/T5555.stdout (renamed from testsuite/tests/lib/IO/openFile004.stdout)0
-rw-r--r--testsuite/tests/th/T5555_Lib.hs10
-rw-r--r--testsuite/tests/th/T5597.hs5
-rw-r--r--testsuite/tests/th/T5597a.hs6
-rw-r--r--testsuite/tests/th/T5665.hs9
-rw-r--r--testsuite/tests/th/T5665a.hs6
-rw-r--r--testsuite/tests/th/T5700.hs8
-rw-r--r--testsuite/tests/th/T5700.stderr7
-rw-r--r--testsuite/tests/th/T5700a.hs15
-rw-r--r--testsuite/tests/th/T5721.hs7
-rw-r--r--testsuite/tests/th/T5795.hs10
-rw-r--r--testsuite/tests/th/T5795.stderr7
-rw-r--r--testsuite/tests/th/T5882.hs11
-rw-r--r--testsuite/tests/th/T5883.hs12
-rw-r--r--testsuite/tests/th/T5883.stderr12
-rw-r--r--testsuite/tests/th/T5886.hs8
-rw-r--r--testsuite/tests/th/T5886a.hs14
-rw-r--r--testsuite/tests/th/T5968.hs6
-rw-r--r--testsuite/tests/th/T5971.hs6
-rw-r--r--testsuite/tests/th/T5971.stderr11
-rw-r--r--testsuite/tests/th/T5976.hs3
-rw-r--r--testsuite/tests/th/T5976.stderr5
-rw-r--r--testsuite/tests/th/T5984.hs8
-rw-r--r--testsuite/tests/th/T5984.stderr10
-rw-r--r--testsuite/tests/th/T5984_Lib.hs13
-rw-r--r--testsuite/tests/th/TH_reifyDecl1.hs3
-rw-r--r--testsuite/tests/th/TH_reifyDecl1.stderr66
-rw-r--r--testsuite/tests/th/TH_reifyMkName.hs3
-rw-r--r--testsuite/tests/th/TH_reifyMkName.stderr4
-rw-r--r--testsuite/tests/th/TH_scopedTvs.stderr4
-rw-r--r--testsuite/tests/th/all.T23
-rw-r--r--testsuite/tests/typecheck/prog001/typecheck.prog001.stderr-ghc3
-rw-r--r--testsuite/tests/typecheck/should_compile/FD1.stderr24
-rw-r--r--testsuite/tests/typecheck/should_compile/FD2.stderr50
-rw-r--r--testsuite/tests/typecheck/should_compile/FD3.stderr4
-rw-r--r--testsuite/tests/typecheck/should_compile/Makefile10
-rw-r--r--testsuite/tests/typecheck/should_compile/PolytypeDecomp.hs32
-rw-r--r--testsuite/tests/typecheck/should_compile/T2494.stderr46
-rw-r--r--testsuite/tests/typecheck/should_compile/T3108.hs37
-rw-r--r--testsuite/tests/typecheck/should_compile/T4310.hs11
-rw-r--r--testsuite/tests/typecheck/should_compile/T4912.stderr4
-rw-r--r--testsuite/tests/typecheck/should_compile/T5595.hs14
-rw-r--r--testsuite/tests/typecheck/should_compile/T5643.hs22
-rw-r--r--testsuite/tests/typecheck/should_compile/T5655.hs26
-rw-r--r--testsuite/tests/typecheck/should_compile/T5676.hs19
-rw-r--r--testsuite/tests/typecheck/should_compile/T5792.hs10
-rw-r--r--testsuite/tests/typecheck/should_compile/all.T12
-rw-r--r--testsuite/tests/typecheck/should_compile/tc115.stderr-ghc4
-rw-r--r--testsuite/tests/typecheck/should_compile/tc116.stderr-ghc4
-rw-r--r--testsuite/tests/typecheck/should_compile/tc125.stderr-ghc20
-rw-r--r--testsuite/tests/typecheck/should_compile/tc126.stderr-ghc6
-rw-r--r--testsuite/tests/typecheck/should_compile/tc141.stderr43
-rw-r--r--testsuite/tests/typecheck/should_compile/tc145.hs2
-rw-r--r--testsuite/tests/typecheck/should_compile/tc158.hs2
-rw-r--r--testsuite/tests/typecheck/should_compile/tc161.stderr-ghc4
-rw-r--r--testsuite/tests/typecheck/should_compile/tc167.stderr2
-rw-r--r--testsuite/tests/typecheck/should_compile/tc168.stderr2
-rw-r--r--testsuite/tests/typecheck/should_compile/tc192.hs48
-rw-r--r--testsuite/tests/typecheck/should_compile/tc211.stderr31
-rw-r--r--testsuite/tests/typecheck/should_compile/tc230.hs2
-rw-r--r--testsuite/tests/typecheck/should_compile/tc231.stderr2
-rw-r--r--testsuite/tests/typecheck/should_compile/tc254.stderr2
-rw-r--r--testsuite/tests/typecheck/should_compile/tc261.hs4
-rw-r--r--testsuite/tests/typecheck/should_fail/AssocTyDef03.stderr10
-rw-r--r--testsuite/tests/typecheck/should_fail/AssocTyDef04.stderr13
-rw-r--r--testsuite/tests/typecheck/should_fail/AssocTyDef05.stderr10
-rw-r--r--testsuite/tests/typecheck/should_fail/AssocTyDef06.stderr10
-rw-r--r--testsuite/tests/typecheck/should_fail/FailDueToGivenOverlapping.stderr9
-rw-r--r--testsuite/tests/typecheck/should_fail/FrozenErrorTests.stderr143
-rw-r--r--testsuite/tests/typecheck/should_fail/IPFail.stderr7
-rw-r--r--testsuite/tests/typecheck/should_fail/T1897a.stderr10
-rw-r--r--testsuite/tests/typecheck/should_fail/T1899.stderr19
-rw-r--r--testsuite/tests/typecheck/should_fail/T2414.stderr1
-rw-r--r--testsuite/tests/typecheck/should_fail/T2538.stderr28
-rw-r--r--testsuite/tests/typecheck/should_fail/T2688.stderr25
-rw-r--r--testsuite/tests/typecheck/should_fail/T2714.hs2
-rw-r--r--testsuite/tests/typecheck/should_fail/T2714.stderr42
-rw-r--r--testsuite/tests/typecheck/should_fail/T2846b.stderr3
-rw-r--r--testsuite/tests/typecheck/should_fail/T2994.stderr8
-rw-r--r--testsuite/tests/typecheck/should_fail/T3102.stderr1
-rw-r--r--testsuite/tests/typecheck/should_fail/T3468.stderr2
-rw-r--r--testsuite/tests/typecheck/should_fail/T3540.stderr5
-rw-r--r--testsuite/tests/typecheck/should_fail/T3592.stderr28
-rw-r--r--testsuite/tests/typecheck/should_fail/T3613.stderr8
-rw-r--r--testsuite/tests/typecheck/should_fail/T3950.stderr5
-rw-r--r--testsuite/tests/typecheck/should_fail/T3966.stderr17
-rw-r--r--testsuite/tests/typecheck/should_fail/T5236.stderr30
-rw-r--r--testsuite/tests/typecheck/should_fail/T5300.stderr11
-rw-r--r--testsuite/tests/typecheck/should_fail/T5573a.stderr12
-rw-r--r--testsuite/tests/typecheck/should_fail/T5573b.stderr14
-rwxr-xr-xtestsuite/tests/typecheck/should_fail/T5684.hs62
-rw-r--r--testsuite/tests/typecheck/should_fail/T5684.stderr10
-rw-r--r--testsuite/tests/typecheck/should_fail/T5689.hs15
-rw-r--r--testsuite/tests/typecheck/should_fail/T5689.stderr7
-rw-r--r--testsuite/tests/typecheck/should_fail/T5858.hs11
-rw-r--r--testsuite/tests/typecheck/should_fail/T5858.stderr13
-rw-r--r--testsuite/tests/typecheck/should_fail/T5957.hs4
-rw-r--r--testsuite/tests/typecheck/should_fail/T5957.stderr6
-rw-r--r--testsuite/tests/typecheck/should_fail/T6001.hs9
-rw-r--r--testsuite/tests/typecheck/should_fail/T6001.stderr5
-rw-r--r--testsuite/tests/typecheck/should_fail/all.T9
-rw-r--r--testsuite/tests/typecheck/should_fail/mc19.stderr7
-rw-r--r--testsuite/tests/typecheck/should_fail/mc20.hs6
-rw-r--r--testsuite/tests/typecheck/should_fail/mc20.stderr11
-rw-r--r--testsuite/tests/typecheck/should_fail/mc21.stderr3
-rw-r--r--testsuite/tests/typecheck/should_fail/mc22.stderr26
-rw-r--r--testsuite/tests/typecheck/should_fail/mc23.stderr45
-rw-r--r--testsuite/tests/typecheck/should_fail/mc24.stderr48
-rw-r--r--testsuite/tests/typecheck/should_fail/mc25.stderr47
-rw-r--r--testsuite/tests/typecheck/should_fail/tcfail001.stderr1
-rw-r--r--testsuite/tests/typecheck/should_fail/tcfail005.stderr2
-rw-r--r--testsuite/tests/typecheck/should_fail/tcfail008.stderr17
-rw-r--r--testsuite/tests/typecheck/should_fail/tcfail010.stderr15
-rw-r--r--testsuite/tests/typecheck/should_fail/tcfail016.stderr13
-rw-r--r--testsuite/tests/typecheck/should_fail/tcfail017.stderr4
-rw-r--r--testsuite/tests/typecheck/should_fail/tcfail018.stderr3
-rw-r--r--testsuite/tests/typecheck/should_fail/tcfail020.stderr4
-rw-r--r--testsuite/tests/typecheck/should_fail/tcfail028.stderr13
-rw-r--r--testsuite/tests/typecheck/should_fail/tcfail034.stderr2
-rw-r--r--testsuite/tests/typecheck/should_fail/tcfail036.stderr4
-rw-r--r--testsuite/tests/typecheck/should_fail/tcfail040.stderr18
-rw-r--r--testsuite/tests/typecheck/should_fail/tcfail043.stderr25
-rw-r--r--testsuite/tests/typecheck/should_fail/tcfail057.stderr1
-rw-r--r--testsuite/tests/typecheck/should_fail/tcfail058.stderr3
-rw-r--r--testsuite/tests/typecheck/should_fail/tcfail063.stderr3
-rw-r--r--testsuite/tests/typecheck/should_fail/tcfail065.stderr13
-rw-r--r--testsuite/tests/typecheck/should_fail/tcfail067.stderr25
-rw-r--r--testsuite/tests/typecheck/should_fail/tcfail068.stderr43
-rw-r--r--testsuite/tests/typecheck/should_fail/tcfail070.stderr10
-rw-r--r--testsuite/tests/typecheck/should_fail/tcfail072.stderr23
-rw-r--r--testsuite/tests/typecheck/should_fail/tcfail076.stderr1
-rw-r--r--testsuite/tests/typecheck/should_fail/tcfail079.stderr1
-rw-r--r--testsuite/tests/typecheck/should_fail/tcfail080.hs4
-rw-r--r--testsuite/tests/typecheck/should_fail/tcfail080.stderr14
-rw-r--r--testsuite/tests/typecheck/should_fail/tcfail086.stderr12
-rw-r--r--testsuite/tests/typecheck/should_fail/tcfail087.stderr14
-rw-r--r--testsuite/tests/typecheck/should_fail/tcfail094.stderr3
-rw-r--r--testsuite/tests/typecheck/should_fail/tcfail097.stderr12
-rw-r--r--testsuite/tests/typecheck/should_fail/tcfail099.stderr6
-rw-r--r--testsuite/tests/typecheck/should_fail/tcfail100.stderr8
-rw-r--r--testsuite/tests/typecheck/should_fail/tcfail101.stderr2
-rw-r--r--testsuite/tests/typecheck/should_fail/tcfail102.stderr32
-rw-r--r--testsuite/tests/typecheck/should_fail/tcfail103.stderr13
-rw-r--r--testsuite/tests/typecheck/should_fail/tcfail104.stderr2
-rw-r--r--testsuite/tests/typecheck/should_fail/tcfail107.stderr2
-rw-r--r--testsuite/tests/typecheck/should_fail/tcfail110.stderr3
-rw-r--r--testsuite/tests/typecheck/should_fail/tcfail113.stderr12
-rw-r--r--testsuite/tests/typecheck/should_fail/tcfail115.stderr4
-rw-r--r--testsuite/tests/typecheck/should_fail/tcfail117.stderr26
-rw-r--r--testsuite/tests/typecheck/should_fail/tcfail125.stderr10
-rw-r--r--testsuite/tests/typecheck/should_fail/tcfail127.stderr10
-rw-r--r--testsuite/tests/typecheck/should_fail/tcfail128.stderr5
-rw-r--r--testsuite/tests/typecheck/should_fail/tcfail129.stderr4
-rw-r--r--testsuite/tests/typecheck/should_fail/tcfail131.stderr4
-rw-r--r--testsuite/tests/typecheck/should_fail/tcfail132.stderr14
-rw-r--r--testsuite/tests/typecheck/should_fail/tcfail133.stderr20
-rw-r--r--testsuite/tests/typecheck/should_fail/tcfail134.stderr3
-rw-r--r--testsuite/tests/typecheck/should_fail/tcfail135.stderr3
-rw-r--r--testsuite/tests/typecheck/should_fail/tcfail136.stderr13
-rw-r--r--testsuite/tests/typecheck/should_fail/tcfail140.stderr5
-rw-r--r--testsuite/tests/typecheck/should_fail/tcfail142.stderr5
-rw-r--r--testsuite/tests/typecheck/should_fail/tcfail143.stderr33
-rw-r--r--testsuite/tests/typecheck/should_fail/tcfail146.stderr13
-rw-r--r--testsuite/tests/typecheck/should_fail/tcfail147.stderr13
-rw-r--r--testsuite/tests/typecheck/should_fail/tcfail148.stderr13
-rw-r--r--testsuite/tests/typecheck/should_fail/tcfail151.stderr15
-rw-r--r--testsuite/tests/typecheck/should_fail/tcfail152.hs18
-rw-r--r--testsuite/tests/typecheck/should_fail/tcfail152.stderr5
-rw-r--r--testsuite/tests/typecheck/should_fail/tcfail153.stderr8
-rw-r--r--testsuite/tests/typecheck/should_fail/tcfail155.stderr12
-rw-r--r--testsuite/tests/typecheck/should_fail/tcfail158.stderr6
-rw-r--r--testsuite/tests/typecheck/should_fail/tcfail161.stderr6
-rw-r--r--testsuite/tests/typecheck/should_fail/tcfail162.stderr13
-rw-r--r--testsuite/tests/typecheck/should_fail/tcfail168.hs1
-rw-r--r--testsuite/tests/typecheck/should_fail/tcfail168.stderr15
-rw-r--r--testsuite/tests/typecheck/should_fail/tcfail171.stderr6
-rw-r--r--testsuite/tests/typecheck/should_fail/tcfail173.stderr5
-rw-r--r--testsuite/tests/typecheck/should_fail/tcfail174.stderr54
-rw-r--r--testsuite/tests/typecheck/should_fail/tcfail175.stderr15
-rw-r--r--testsuite/tests/typecheck/should_fail/tcfail177.stderr162
-rw-r--r--testsuite/tests/typecheck/should_fail/tcfail178.stderr3
-rw-r--r--testsuite/tests/typecheck/should_fail/tcfail179.stderr11
-rw-r--r--testsuite/tests/typecheck/should_fail/tcfail181.stderr11
-rw-r--r--testsuite/tests/typecheck/should_fail/tcfail186.stderr5
-rw-r--r--testsuite/tests/typecheck/should_fail/tcfail189.stderr5
-rw-r--r--testsuite/tests/typecheck/should_fail/tcfail190.hs6
-rw-r--r--testsuite/tests/typecheck/should_fail/tcfail190.stderr11
-rw-r--r--testsuite/tests/typecheck/should_fail/tcfail191.stderr3
-rw-r--r--testsuite/tests/typecheck/should_fail/tcfail192.stderr39
-rw-r--r--testsuite/tests/typecheck/should_fail/tcfail193.stderr7
-rw-r--r--testsuite/tests/typecheck/should_fail/tcfail194.stderr31
-rw-r--r--testsuite/tests/typecheck/should_fail/tcfail195.stderr10
-rw-r--r--testsuite/tests/typecheck/should_fail/tcfail196.stderr10
-rw-r--r--testsuite/tests/typecheck/should_fail/tcfail197.stderr5
-rw-r--r--testsuite/tests/typecheck/should_fail/tcfail198.stderr6
-rw-r--r--testsuite/tests/typecheck/should_fail/tcfail201.stderr29
-rw-r--r--testsuite/tests/typecheck/should_fail/tcfail206.hs4
-rw-r--r--testsuite/tests/typecheck/should_fail/tcfail206.stderr95
-rw-r--r--testsuite/tests/typecheck/should_fail/tcfail207.stderr2
-rw-r--r--testsuite/tests/typecheck/should_fail/tcfail208.stderr7
-rw-r--r--testsuite/tests/typecheck/should_fail/tcfail209.stderr9
-rw-r--r--testsuite/tests/typecheck/should_fail/tcfail212.stderr6
-rw-r--r--testsuite/tests/typecheck/should_fail/tcfail215.stderr2
-rwxr-xr-xtestsuite/tests/typecheck/should_run/Defer01.hs53
-rw-r--r--testsuite/tests/typecheck/should_run/Defer01.stdout1
-rw-r--r--testsuite/tests/typecheck/should_run/T5759.hs19
-rw-r--r--testsuite/tests/typecheck/should_run/T5759.stdout1
-rwxr-xr-x[-rw-r--r--]testsuite/tests/typecheck/should_run/all.T2
-rw-r--r--testsuite/tests/typecheck/should_run/tcrun035.stderr11
-rw-r--r--testsuite/tests/typecheck/should_run/tcrun041.hs3
-rw-r--r--testsuite/timeout/Makefile2
1272 files changed, 15101 insertions, 26336 deletions
diff --git a/testsuite/.gitignore b/testsuite/.gitignore
index 6b69bd43bc..b4cd2d536e 100644
--- a/testsuite/.gitignore
+++ b/testsuite/.gitignore
@@ -12,10 +12,16 @@ Thumbs.db
*.BAK
*.orig
*.prof
+*.aux
+
+*_stub.h
+*_stub.c
*.exe
*.hi
+*.hi-boot
*.o
+*.o-boot
*.pyc
*.normalised
*.eventlog
@@ -29,6 +35,8 @@ Thumbs.db
*.run.stdout
*.run.stderr
+*bindisttest_install___dir_bin_ghc.mk
+
# -----------------------------------------------------------------------------
# specific generated files
@@ -95,8 +103,6 @@ tests/perf/compiler/T4801.comp.stats
tests/perf/should_run/speed.f32
tests/rename/prog006/local.package.conf
tests/rts/4059
-tests/rts/4059_stub.c
-tests/rts/4059_stub.h
tests/rts/prep.out
tests/th/TH_import_loop/ModuleA.hi-boot
tests/th/TH_import_loop/ModuleA.o-boot
@@ -124,4 +130,1047 @@ timeout/dist/
/tests/safeHaskell/check/pkg01/dist/
/tests/safeHaskell/check/pkg01/install/
/tests/safeHaskell/check/pkg01/local.db/
-/tests/safeHaskell/check/pkg01/setup \ No newline at end of file
+/tests/safeHaskell/check/pkg01/setup
+tests/dph/classes/dph-classes-fast
+tests/dph/dotp/dph-dotp-opt
+tests/dph/primespj/dph-primespj-opt
+tests/dph/words/dph-words-opt
+tests/array/should_run/arr020
+tests/dph/diophantine/dph-diophantine-copy-fast
+tests/dph/sumnats/dph-sumnats-copy
+tests/dph/sumnats/dph-sumnats-vseg
+tests/dph/diophantine/dph-diophantine-copy-opt
+tests/dph/classes/dph-classes-copy-fast
+tests/dph/dotp/dph-dotp-copy-fast
+tests/dph/dotp/dph-dotp-vseg-fast
+tests/dph/nbody/dph-nbody-vseg-fast
+tests/dph/primespj/dph-primespj-copy-fast
+tests/dph/quickhull/dph-quickhull-copy-fast
+tests/dph/quickhull/dph-quickhull-vseg-fast
+tests/dph/words/dph-words-copy-fast
+tests/dph/words/dph-words-vseg-fast
+tests/dph/classes/dph-classes-vseg-fast
+
+mk/ghc-config
+mk/ghcconfig_home_davidt_Ghc_head_inplace_bin_ghc-stage2.mk
+tests/annotations/should_run/Config.hs
+tests/annotations/should_run/annrun01
+tests/array/should_run/arr001
+tests/array/should_run/arr002
+tests/array/should_run/arr003
+tests/array/should_run/arr004
+tests/array/should_run/arr005
+tests/array/should_run/arr006
+tests/array/should_run/arr007
+tests/array/should_run/arr008
+tests/array/should_run/arr009
+tests/array/should_run/arr010
+tests/array/should_run/arr011
+tests/array/should_run/arr012
+tests/array/should_run/arr013
+tests/array/should_run/arr014
+tests/array/should_run/arr015
+tests/array/should_run/arr016
+tests/array/should_run/arr017
+tests/array/should_run/arr018
+tests/array/should_run/arr019
+tests/arrows/should_run/T3822
+tests/arrows/should_run/arrowrun001
+tests/arrows/should_run/arrowrun002
+tests/arrows/should_run/arrowrun003
+tests/arrows/should_run/arrowrun004
+tests/boxy/T2193
+tests/cabal/1750.hs
+tests/cabal/1750.out
+tests/cabal/cabal01/dist/
+tests/cabal/cabal01/install/
+tests/cabal/cabal01/local.db/
+tests/cabal/cabal01/setup
+tests/cabal/cabal03/Setup
+tests/cabal/cabal03/p/dist/
+tests/cabal/cabal03/q/dist/
+tests/cabal/cabal03/tmp.d/
+tests/cabal/cabal04/Setup
+tests/cabal/cabal04/dist/
+tests/cabal/cabal04/err
+tests/cabal/shadow.hs
+tests/codeGen/should_compile/2578
+tests/codeGen/should_run/1852
+tests/codeGen/should_run/1861
+tests/codeGen/should_run/2080
+tests/codeGen/should_run/2838
+tests/codeGen/should_run/3207
+tests/codeGen/should_run/3561
+tests/codeGen/should_run/3677
+tests/codeGen/should_run/4441
+tests/codeGen/should_run/5129
+tests/codeGen/should_run/5149
+tests/codeGen/should_run/5626
+tests/codeGen/should_run/5747
+tests/codeGen/should_run/cgrun001
+tests/codeGen/should_run/cgrun002
+tests/codeGen/should_run/cgrun003
+tests/codeGen/should_run/cgrun004
+tests/codeGen/should_run/cgrun005
+tests/codeGen/should_run/cgrun006
+tests/codeGen/should_run/cgrun007
+tests/codeGen/should_run/cgrun008
+tests/codeGen/should_run/cgrun009
+tests/codeGen/should_run/cgrun010
+tests/codeGen/should_run/cgrun011
+tests/codeGen/should_run/cgrun012
+tests/codeGen/should_run/cgrun013
+tests/codeGen/should_run/cgrun014
+tests/codeGen/should_run/cgrun015
+tests/codeGen/should_run/cgrun016
+tests/codeGen/should_run/cgrun017
+tests/codeGen/should_run/cgrun018
+tests/codeGen/should_run/cgrun019
+tests/codeGen/should_run/cgrun020
+tests/codeGen/should_run/cgrun021
+tests/codeGen/should_run/cgrun022
+tests/codeGen/should_run/cgrun024
+tests/codeGen/should_run/cgrun026
+tests/codeGen/should_run/cgrun027
+tests/codeGen/should_run/cgrun028
+tests/codeGen/should_run/cgrun031
+tests/codeGen/should_run/cgrun032
+tests/codeGen/should_run/cgrun033
+tests/codeGen/should_run/cgrun034
+tests/codeGen/should_run/cgrun035
+tests/codeGen/should_run/cgrun036
+tests/codeGen/should_run/cgrun037
+tests/codeGen/should_run/cgrun038
+tests/codeGen/should_run/cgrun039
+tests/codeGen/should_run/cgrun040
+tests/codeGen/should_run/cgrun043
+tests/codeGen/should_run/cgrun044
+tests/codeGen/should_run/cgrun045
+tests/codeGen/should_run/cgrun046
+tests/codeGen/should_run/cgrun047
+tests/codeGen/should_run/cgrun048
+tests/codeGen/should_run/cgrun049
+tests/codeGen/should_run/cgrun050
+tests/codeGen/should_run/cgrun051
+tests/codeGen/should_run/cgrun052
+tests/codeGen/should_run/cgrun053
+tests/codeGen/should_run/cgrun054
+tests/codeGen/should_run/cgrun055
+tests/codeGen/should_run/cgrun056
+tests/codeGen/should_run/cgrun057
+tests/codeGen/should_run/cgrun058
+tests/codeGen/should_run/cgrun059
+tests/codeGen/should_run/cgrun060
+tests/codeGen/should_run/cgrun061
+tests/codeGen/should_run/cgrun062
+tests/codeGen/should_run/cgrun063
+tests/codeGen/should_run/cgrun064
+tests/codeGen/should_run/cgrun065
+tests/codeGen/should_run/cgrun066
+tests/codeGen/should_run/cgrun067
+tests/codeGen/should_run/cgrun068
+tests/codeGen/should_run/cgrun069
+tests/codeGen/should_run/cgrun070
+tests/codeGen/should_run/cgrun071
+tests/concurrent/prog001/concprog001
+tests/concurrent/prog002/concprog002
+tests/concurrent/prog002/concprog002.aux
+tests/concurrent/prog002/concprog002.hp
+tests/concurrent/prog002/concprog002.ps
+tests/concurrent/prog003/concprog003
+tests/concurrent/should_run/1980
+tests/concurrent/should_run/2910
+tests/concurrent/should_run/2910a
+tests/concurrent/should_run/3279
+tests/concurrent/should_run/3429
+tests/concurrent/should_run/4030
+tests/concurrent/should_run/4811
+tests/concurrent/should_run/4813
+tests/concurrent/should_run/5238
+tests/concurrent/should_run/5421
+tests/concurrent/should_run/5558
+tests/concurrent/should_run/5611
+tests/concurrent/should_run/allowinterrupt001
+tests/concurrent/should_run/async001
+tests/concurrent/should_run/conc001
+tests/concurrent/should_run/conc002
+tests/concurrent/should_run/conc003
+tests/concurrent/should_run/conc004
+tests/concurrent/should_run/conc006
+tests/concurrent/should_run/conc007
+tests/concurrent/should_run/conc008
+tests/concurrent/should_run/conc009
+tests/concurrent/should_run/conc010
+tests/concurrent/should_run/conc012
+tests/concurrent/should_run/conc013
+tests/concurrent/should_run/conc014
+tests/concurrent/should_run/conc015
+tests/concurrent/should_run/conc015a
+tests/concurrent/should_run/conc016
+tests/concurrent/should_run/conc017
+tests/concurrent/should_run/conc017a
+tests/concurrent/should_run/conc018
+tests/concurrent/should_run/conc019
+tests/concurrent/should_run/conc020
+tests/concurrent/should_run/conc021
+tests/concurrent/should_run/conc022
+tests/concurrent/should_run/conc023
+tests/concurrent/should_run/conc024
+tests/concurrent/should_run/conc025
+tests/concurrent/should_run/conc026
+tests/concurrent/should_run/conc027
+tests/concurrent/should_run/conc028
+tests/concurrent/should_run/conc029
+tests/concurrent/should_run/conc030
+tests/concurrent/should_run/conc031
+tests/concurrent/should_run/conc032
+tests/concurrent/should_run/conc033
+tests/concurrent/should_run/conc034
+tests/concurrent/should_run/conc035
+tests/concurrent/should_run/conc036
+tests/concurrent/should_run/conc037
+tests/concurrent/should_run/conc038
+tests/concurrent/should_run/conc039
+tests/concurrent/should_run/conc040
+tests/concurrent/should_run/conc041
+tests/concurrent/should_run/conc042
+tests/concurrent/should_run/conc043
+tests/concurrent/should_run/conc044
+tests/concurrent/should_run/conc045
+tests/concurrent/should_run/conc051
+tests/concurrent/should_run/conc058
+tests/concurrent/should_run/conc059
+tests/concurrent/should_run/conc064
+tests/concurrent/should_run/conc065
+tests/concurrent/should_run/conc066
+tests/concurrent/should_run/conc067
+tests/concurrent/should_run/conc068
+tests/concurrent/should_run/conc071
+tests/concurrent/should_run/conc072
+tests/concurrent/should_run/conc073
+tests/concurrent/should_run/foreignInterruptible
+tests/concurrent/should_run/mask001
+tests/concurrent/should_run/mask002
+tests/concurrent/should_run/numsparks001
+tests/concurrent/should_run/throwto001
+tests/concurrent/should_run/throwto002
+tests/concurrent/should_run/throwto003
+tests/deSugar/should_run/T246
+tests/deSugar/should_run/T3126
+tests/deSugar/should_run/T3382
+tests/deSugar/should_run/dsrun001
+tests/deSugar/should_run/dsrun002
+tests/deSugar/should_run/dsrun003
+tests/deSugar/should_run/dsrun004
+tests/deSugar/should_run/dsrun005
+tests/deSugar/should_run/dsrun006
+tests/deSugar/should_run/dsrun007
+tests/deSugar/should_run/dsrun008
+tests/deSugar/should_run/dsrun009
+tests/deSugar/should_run/dsrun010
+tests/deSugar/should_run/dsrun011
+tests/deSugar/should_run/dsrun012
+tests/deSugar/should_run/dsrun013
+tests/deSugar/should_run/dsrun014
+tests/deSugar/should_run/dsrun015
+tests/deSugar/should_run/dsrun016
+tests/deSugar/should_run/dsrun017
+tests/deSugar/should_run/dsrun018
+tests/deSugar/should_run/dsrun019
+tests/deSugar/should_run/dsrun020
+tests/deSugar/should_run/dsrun021
+tests/deSugar/should_run/dsrun022
+tests/deSugar/should_run/dsrun023
+tests/deSugar/should_run/mc01
+tests/deSugar/should_run/mc02
+tests/deSugar/should_run/mc03
+tests/deSugar/should_run/mc04
+tests/deSugar/should_run/mc05
+tests/deSugar/should_run/mc06
+tests/deSugar/should_run/mc07
+tests/deSugar/should_run/mc08
+tests/deriving/should_run/T2529
+tests/deriving/should_run/T4136
+tests/deriving/should_run/T4528a
+tests/deriving/should_run/T5041
+tests/deriving/should_run/T5628
+tests/deriving/should_run/T5712
+tests/deriving/should_run/drvrun-foldable1
+tests/deriving/should_run/drvrun-functor1
+tests/deriving/should_run/drvrun001
+tests/deriving/should_run/drvrun002
+tests/deriving/should_run/drvrun003
+tests/deriving/should_run/drvrun004
+tests/deriving/should_run/drvrun005
+tests/deriving/should_run/drvrun006
+tests/deriving/should_run/drvrun007
+tests/deriving/should_run/drvrun008
+tests/deriving/should_run/drvrun009
+tests/deriving/should_run/drvrun010
+tests/deriving/should_run/drvrun011
+tests/deriving/should_run/drvrun012
+tests/deriving/should_run/drvrun013
+tests/deriving/should_run/drvrun014
+tests/deriving/should_run/drvrun015
+tests/deriving/should_run/drvrun016
+tests/deriving/should_run/drvrun017
+tests/deriving/should_run/drvrun018
+tests/deriving/should_run/drvrun019
+tests/deriving/should_run/drvrun020
+tests/deriving/should_run/drvrun021
+tests/dph/quickhull/dph-quickhull-opt
+tests/driver/1959/E.hs
+tests/driver/1959/prog
+tests/driver/437/Test
+tests/driver/437/Test2
+tests/driver/5313
+tests/driver/A061a.s
+tests/driver/A061b.s
+tests/driver/A064.hspp
+tests/driver/A065.hspp
+tests/driver/A066.tmp
+tests/driver/A067.tmp
+tests/driver/A070.s
+tests/driver/A071.tmp
+tests/driver/B062d/
+tests/driver/B062e/
+tests/driver/Hello062a.hs
+tests/driver/Hello062b.hs
+tests/driver/Hello062c.hs
+tests/driver/T3007/A/Setup
+tests/driver/T3007/A/dist/
+tests/driver/T3007/B/Setup
+tests/driver/T3007/B/dist/
+tests/driver/T3007/package.conf
+tests/driver/T3389
+tests/driver/T4437
+tests/driver/T5147/B.hs
+tests/driver/T5198dump/
+tests/driver/T5584/A.hi-boot
+tests/driver/T5584_out/
+tests/driver/depend200
+tests/driver/dynHelloWorld
+tests/driver/dynamic_flags_001/C
+tests/driver/recomp001/B.hs
+tests/driver/recomp001/C
+tests/driver/recomp003/Data/
+tests/driver/recomp003/err
+tests/driver/recomp004/MainX
+tests/driver/recomp004/MainX.hs
+tests/driver/recomp004/c.c
+tests/driver/recomp005/C.hs
+tests/driver/recomp006/B.hs
+tests/driver/recomp006/err
+tests/driver/recomp006/out
+tests/driver/recomp007/Setup
+tests/driver/recomp007/a1/dist/
+tests/driver/recomp007/a2/dist/
+tests/driver/recomp007/b/dist/
+tests/driver/recomp007/local.package.conf/
+tests/driver/recomp008/A.hs
+tests/driver/recomp008/prog
+tests/driver/recomp010/Main
+tests/driver/recomp010/X.hs
+tests/driver/recomp011/A.hsinc
+tests/driver/recomp011/B.hsinc
+tests/driver/recomp011/Main
+tests/driver/rtsopts002
+tests/driver/spacesInArgs
+tests/driver/withRtsOpts
+tests/driver/withRtsOpts.out
+tests/dynlibs/T3807-load
+tests/dynlibs/T3807test.so
+tests/dynlibs/T5373A
+tests/dynlibs/T5373B
+tests/dynlibs/T5373C
+tests/dynlibs/T5373D
+tests/ffi/should_run/1288
+tests/ffi/should_run/1679
+tests/ffi/should_run/2276
+tests/ffi/should_run/2469
+tests/ffi/should_run/2594
+tests/ffi/should_run/2917a
+tests/ffi/should_run/4038
+tests/ffi/should_run/4221
+tests/ffi/should_run/5402
+tests/ffi/should_run/5594
+tests/ffi/should_run/fed001
+tests/ffi/should_run/ffi001
+tests/ffi/should_run/ffi002
+tests/ffi/should_run/ffi003
+tests/ffi/should_run/ffi005
+tests/ffi/should_run/ffi006
+tests/ffi/should_run/ffi007
+tests/ffi/should_run/ffi008
+tests/ffi/should_run/ffi009
+tests/ffi/should_run/ffi010
+tests/ffi/should_run/ffi011
+tests/ffi/should_run/ffi013
+tests/ffi/should_run/ffi014
+tests/ffi/should_run/ffi015
+tests/ffi/should_run/ffi016
+tests/ffi/should_run/ffi017
+tests/ffi/should_run/ffi018
+tests/ffi/should_run/ffi019
+tests/ffi/should_run/ffi020
+tests/ffi/should_run/ffi021
+tests/ffi/should_run/ffi022
+tests/ffi/should_run/fptr01
+tests/ffi/should_run/fptr02
+tests/ffi/should_run/fptrfail01
+tests/gadt/CasePrune
+tests/gadt/Session
+tests/gadt/gadt2
+tests/gadt/gadt23
+tests/gadt/gadt4
+tests/gadt/gadt5
+tests/gadt/records
+tests/gadt/tc
+tests/gadt/type-rep
+tests/gadt/ubx-records
+tests/gadt/while
+tests/generics/GEq/GEq1
+tests/generics/GEq/GEq2
+tests/generics/GShow/GShow1
+tests/generics/Uniplate/GUniplate1
+tests/ghc-api/T4891/T4891
+tests/ghc-api/apirecomp001/myghc
+tests/ghc-api/dynCompileExpr/dynCompileExpr
+tests/ghci.debugger/scripts/break022/A.hs
+tests/ghci.debugger/scripts/break023/A.hs
+tests/ghci/linking/dir001/
+tests/ghci/linking/dir002/
+tests/ghci/linking/dir004/
+tests/ghci/linking/dir005/
+tests/ghci/linking/dir006/
+tests/ghci/prog001/C.hs
+tests/ghci/prog002/A.hs
+tests/ghci/prog003/D.hs
+tests/ghci/prog004/ctest.c
+tests/ghci/prog005/A.hs
+tests/ghci/prog006/Boot.hs
+tests/ghci/prog009/A.hs
+tests/ghci/scripts/T1914A.hs
+tests/ghci/scripts/T1914B.hs
+tests/ghci/scripts/ghci027.hs
+tests/hsc2hs/3837.hs
+tests/hsc2hs/hsc2hs001.hs
+tests/hsc2hs/hsc2hs002.hs
+tests/hsc2hs/hsc2hs003
+tests/hsc2hs/hsc2hs003.hs
+tests/hsc2hs/hsc2hs004
+tests/hsc2hs/hsc2hs004.hs
+tests/indexed-types/should_run/GMapAssoc
+tests/indexed-types/should_run/GMapTop
+tests/indexed-types/should_run/T2985
+tests/indexed-types/should_run/T4235
+tests/indexed-types/should_run/T5719
+tests/lib/Concurrent/4876
+tests/lib/Concurrent/ThreadDelay001
+tests/lib/Data.ByteString/bytestring002
+tests/lib/Data.ByteString/bytestring003
+tests/lib/Data.ByteString/bytestring006
+tests/lib/IO/2122
+tests/lib/IO/2122-test
+tests/lib/IO/3307
+tests/lib/IO/4808
+tests/lib/IO/4808.test
+tests/lib/IO/4855
+tests/lib/IO/4895
+tests/lib/IO/IOError001
+tests/lib/IO/IOError002
+tests/lib/IO/T4113
+tests/lib/IO/T4144
+tests/lib/IO/chinese-name
+tests/lib/IO/concio002
+tests/lib/IO/countReaders001
+tests/lib/IO/countReaders001.txt
+tests/lib/IO/decodingerror001
+tests/lib/IO/decodingerror002
+tests/lib/IO/encoding001
+tests/lib/IO/encoding001.utf16
+tests/lib/IO/encoding001.utf16.utf16be
+tests/lib/IO/encoding001.utf16.utf16le
+tests/lib/IO/encoding001.utf16.utf32
+tests/lib/IO/encoding001.utf16.utf32be
+tests/lib/IO/encoding001.utf16.utf32le
+tests/lib/IO/encoding001.utf16.utf8
+tests/lib/IO/encoding001.utf16be
+tests/lib/IO/encoding001.utf16be.utf16
+tests/lib/IO/encoding001.utf16be.utf16le
+tests/lib/IO/encoding001.utf16be.utf32
+tests/lib/IO/encoding001.utf16be.utf32be
+tests/lib/IO/encoding001.utf16be.utf32le
+tests/lib/IO/encoding001.utf16be.utf8
+tests/lib/IO/encoding001.utf16le
+tests/lib/IO/encoding001.utf16le.utf16
+tests/lib/IO/encoding001.utf16le.utf16be
+tests/lib/IO/encoding001.utf16le.utf32
+tests/lib/IO/encoding001.utf16le.utf32be
+tests/lib/IO/encoding001.utf16le.utf32le
+tests/lib/IO/encoding001.utf16le.utf8
+tests/lib/IO/encoding001.utf32
+tests/lib/IO/encoding001.utf32.utf16
+tests/lib/IO/encoding001.utf32.utf16be
+tests/lib/IO/encoding001.utf32.utf16le
+tests/lib/IO/encoding001.utf32.utf32be
+tests/lib/IO/encoding001.utf32.utf32le
+tests/lib/IO/encoding001.utf32.utf8
+tests/lib/IO/encoding001.utf32be
+tests/lib/IO/encoding001.utf32be.utf16
+tests/lib/IO/encoding001.utf32be.utf16be
+tests/lib/IO/encoding001.utf32be.utf16le
+tests/lib/IO/encoding001.utf32be.utf32
+tests/lib/IO/encoding001.utf32be.utf32le
+tests/lib/IO/encoding001.utf32be.utf8
+tests/lib/IO/encoding001.utf32le
+tests/lib/IO/encoding001.utf32le.utf16
+tests/lib/IO/encoding001.utf32le.utf16be
+tests/lib/IO/encoding001.utf32le.utf16le
+tests/lib/IO/encoding001.utf32le.utf32
+tests/lib/IO/encoding001.utf32le.utf32be
+tests/lib/IO/encoding001.utf32le.utf8
+tests/lib/IO/encoding001.utf8
+tests/lib/IO/encoding001.utf8.utf16
+tests/lib/IO/encoding001.utf8.utf16be
+tests/lib/IO/encoding001.utf8.utf16le
+tests/lib/IO/encoding001.utf8.utf32
+tests/lib/IO/encoding001.utf8.utf32be
+tests/lib/IO/encoding001.utf8.utf32le
+tests/lib/IO/encoding002
+tests/lib/IO/encodingerror001
+tests/lib/IO/environment001
+tests/lib/IO/finalization001
+tests/lib/IO/hClose001
+tests/lib/IO/hClose001.tmp
+tests/lib/IO/hClose002
+tests/lib/IO/hClose002.tmp
+tests/lib/IO/hClose003
+tests/lib/IO/hDuplicateTo001
+tests/lib/IO/hFileSize001
+tests/lib/IO/hFileSize002
+tests/lib/IO/hFileSize002.out
+tests/lib/IO/hFlush001
+tests/lib/IO/hFlush001.out
+tests/lib/IO/hGetBuf001
+tests/lib/IO/hGetBuffering001
+tests/lib/IO/hGetChar001
+tests/lib/IO/hGetLine001
+tests/lib/IO/hGetLine002
+tests/lib/IO/hGetLine003
+tests/lib/IO/hGetPosn001
+tests/lib/IO/hGetPosn001.out
+tests/lib/IO/hIsEOF001
+tests/lib/IO/hIsEOF002
+tests/lib/IO/hIsEOF002.out
+tests/lib/IO/hReady001
+tests/lib/IO/hReady002
+tests/lib/IO/hSeek001
+tests/lib/IO/hSeek002
+tests/lib/IO/hSeek003
+tests/lib/IO/hSeek004
+tests/lib/IO/hSeek004.out
+tests/lib/IO/hSetBuffering002
+tests/lib/IO/hSetBuffering003
+tests/lib/IO/hSetBuffering004
+tests/lib/IO/hSetEncoding001
+tests/lib/IO/ioeGetErrorString001
+tests/lib/IO/ioeGetFileName001
+tests/lib/IO/ioeGetHandle001
+tests/lib/IO/isEOF001
+tests/lib/IO/misc001
+tests/lib/IO/misc001.out
+tests/lib/IO/newline001
+tests/lib/IO/newline001.out
+tests/lib/IO/openFile001
+tests/lib/IO/openFile002
+tests/lib/IO/openFile003
+tests/lib/IO/openFile004
+tests/lib/IO/openFile004.out
+tests/lib/IO/openFile005
+tests/lib/IO/openFile005.out1
+tests/lib/IO/openFile005.out2
+tests/lib/IO/openFile006
+tests/lib/IO/openFile006.out
+tests/lib/IO/openFile007
+tests/lib/IO/openFile007.out
+tests/lib/IO/openFile008
+tests/lib/IO/openTempFile001
+tests/lib/IO/putStr001
+tests/lib/IO/readFile001
+tests/lib/IO/readFile001.out
+tests/lib/IO/readwrite001
+tests/lib/IO/readwrite001.inout
+tests/lib/IO/readwrite002
+tests/lib/IO/readwrite002.inout
+tests/lib/IO/readwrite003
+tests/lib/IO/readwrite003.txt
+tests/lib/IO/tmp
+tests/lib/IOExts/echo001
+tests/lib/IOExts/hGetBuf002
+tests/lib/IOExts/hGetBuf003
+tests/lib/IOExts/hPutBuf001
+tests/lib/IOExts/hPutBuf002
+tests/lib/IOExts/hPutBuf002.out
+tests/lib/IOExts/hTell001
+tests/lib/IOExts/hTell002
+tests/lib/IOExts/performGC001
+tests/lib/IOExts/trace001
+tests/lib/IORef/
+tests/lib/Numeric/
+tests/lib/OldException/OldException001
+tests/lib/PrettyPrint/T3911
+tests/lib/PrettyPrint/pp1
+tests/lib/Text.Printf/1548
+tests/lib/Time/T5430
+tests/lib/Time/time002
+tests/lib/Time/time003
+tests/lib/Time/time004
+tests/lib/exceptions/exceptions001
+tests/lib/integer/integerBits
+tests/lib/integer/integerConstantFolding
+tests/lib/integer/integerConstantFolding.simpl
+tests/lib/integer/integerConversions
+tests/lib/libposix/po003.out
+tests/lib/libposix/posix002
+tests/lib/libposix/posix003
+tests/lib/libposix/posix004
+tests/lib/libposix/posix006
+tests/lib/libposix/posix009
+tests/lib/libposix/posix010
+tests/lib/libposix/posix014
+tests/lib/should_run/4006
+tests/lib/should_run/addr001
+tests/lib/should_run/array001
+tests/lib/should_run/char001
+tests/lib/should_run/char002
+tests/lib/should_run/cstring001
+tests/lib/should_run/dynamic001
+tests/lib/should_run/dynamic002
+tests/lib/should_run/dynamic003
+tests/lib/should_run/dynamic004
+tests/lib/should_run/dynamic005
+tests/lib/should_run/enum01
+tests/lib/should_run/enum02
+tests/lib/should_run/enum03
+tests/lib/should_run/enum04
+tests/lib/should_run/exceptionsrun001
+tests/lib/should_run/exceptionsrun002
+tests/lib/should_run/length001
+tests/lib/should_run/list001
+tests/lib/should_run/list002
+tests/lib/should_run/list003
+tests/lib/should_run/memo001
+tests/lib/should_run/memo002
+tests/lib/should_run/rand001
+tests/lib/should_run/ratio001
+tests/lib/should_run/reads001
+tests/lib/should_run/show001
+tests/lib/should_run/stableptr001
+tests/lib/should_run/stableptr003
+tests/lib/should_run/stableptr004
+tests/lib/should_run/stableptr005
+tests/lib/should_run/text001
+tests/lib/should_run/tup001
+tests/lib/should_run/weak001
+tests/mdo/should_compile/mdo001
+tests/mdo/should_compile/mdo002
+tests/mdo/should_compile/mdo003
+tests/mdo/should_compile/mdo004
+tests/mdo/should_compile/mdo005
+tests/mdo/should_run/mdorun001
+tests/mdo/should_run/mdorun002
+tests/mdo/should_run/mdorun003
+tests/module/Mod145_A.mod146_hi
+tests/module/Mod145_A.mod146_o
+tests/module/Mod157_A.mod158_hi
+tests/module/Mod157_A.mod158_o
+tests/module/Mod157_B.mod158_hi
+tests/module/Mod157_B.mod158_o
+tests/module/Mod157_C.mod158_hi
+tests/module/Mod157_C.mod158_o
+tests/module/Mod157_D.mod158_hi
+tests/module/Mod157_D.mod158_o
+tests/module/Mod159_A.mod160_hi
+tests/module/Mod159_A.mod160_o
+tests/module/Mod159_B.mod160_hi
+tests/module/Mod159_B.mod160_o
+tests/module/Mod159_C.mod160_hi
+tests/module/Mod159_C.mod160_o
+tests/module/Mod159_D.mod160_hi
+tests/module/Mod159_D.mod160_o
+tests/module/Mod164_A.mod165_hi
+tests/module/Mod164_A.mod165_o
+tests/module/Mod164_A.mod166_hi
+tests/module/Mod164_A.mod166_o
+tests/module/Mod164_A.mod167_hi
+tests/module/Mod164_A.mod167_o
+tests/module/Mod164_B.mod165_hi
+tests/module/Mod164_B.mod165_o
+tests/module/Mod164_B.mod166_hi
+tests/module/Mod164_B.mod166_o
+tests/module/Mod164_B.mod167_hi
+tests/module/Mod164_B.mod167_o
+tests/module/mod166.mod166_hi
+tests/module/mod166.mod166_o
+tests/module/mod167.mod167_hi
+tests/module/mod167.mod167_o
+tests/module/mod175/test
+tests/module/mod175/test2
+tests/module/mod179
+tests/numeric/should_run/3676
+tests/numeric/should_run/4381
+tests/numeric/should_run/4383
+tests/numeric/should_run/arith001
+tests/numeric/should_run/arith002
+tests/numeric/should_run/arith003
+tests/numeric/should_run/arith004
+tests/numeric/should_run/arith005
+tests/numeric/should_run/arith006
+tests/numeric/should_run/arith007
+tests/numeric/should_run/arith008
+tests/numeric/should_run/arith009
+tests/numeric/should_run/arith010
+tests/numeric/should_run/arith011
+tests/numeric/should_run/arith012
+tests/numeric/should_run/arith013
+tests/numeric/should_run/arith014
+tests/numeric/should_run/arith015
+tests/numeric/should_run/arith016
+tests/numeric/should_run/arith017
+tests/numeric/should_run/arith018
+tests/numeric/should_run/arith019
+tests/numeric/should_run/expfloat
+tests/numeric/should_run/numrun009
+tests/numeric/should_run/numrun010
+tests/numeric/should_run/numrun011
+tests/numeric/should_run/numrun012
+tests/numeric/should_run/numrun013
+tests/numeric/should_run/numrun014
+tests/parser/should_compile/T5243
+tests/parser/should_run/T1344
+tests/parser/should_run/operator
+tests/parser/should_run/operator2
+tests/parser/should_run/readRun001
+tests/parser/should_run/readRun002
+tests/parser/should_run/readRun003
+tests/parser/should_run/readRun004
+tests/parser/unicode/1744
+tests/parser/unicode/utf8_024
+tests/perf/compiler/T5030.comp.stats
+tests/perf/compiler/T5321FD.comp.stats
+tests/perf/compiler/T5321Fun.comp.stats
+tests/perf/compiler/T5631.comp.stats
+tests/perf/compiler/T783.comp.stats
+tests/perf/compiler/parsing001.comp.stats
+tests/perf/should_run/3586
+tests/perf/should_run/3586.stats
+tests/perf/should_run/MethSharing
+tests/perf/should_run/MethSharing.stats
+tests/perf/should_run/T149_A
+tests/perf/should_run/T149_B
+tests/perf/should_run/T2902_A
+tests/perf/should_run/T2902_B
+tests/perf/should_run/T3245
+tests/perf/should_run/T3736
+tests/perf/should_run/T3736.speed.f32
+tests/perf/should_run/T3738
+tests/perf/should_run/T3738.stats
+tests/perf/should_run/T4321
+tests/perf/should_run/T4474a
+tests/perf/should_run/T4474a.stats
+tests/perf/should_run/T4474b
+tests/perf/should_run/T4474b.stats
+tests/perf/should_run/T4474c
+tests/perf/should_run/T4474c.stats
+tests/perf/should_run/T4830
+tests/perf/should_run/T4830.stats
+tests/perf/should_run/T4978
+tests/perf/should_run/T4978.stats
+tests/perf/should_run/T5113
+tests/perf/should_run/T5113.stats
+tests/perf/should_run/T5205
+tests/perf/should_run/T5205.stats
+tests/perf/should_run/T5237
+tests/perf/should_run/T5237.stats
+tests/perf/should_run/T5549
+tests/perf/should_run/T5549.stats
+tests/perf/should_run/lazy-bs-alloc
+tests/perf/should_run/lazy-bs-alloc.stats
+tests/perf/space_leaks/T2762
+tests/perf/space_leaks/T2762.stats
+tests/perf/space_leaks/T4018
+tests/perf/space_leaks/T4334
+tests/perf/space_leaks/T4334.stats
+tests/perf/space_leaks/space_leak_001
+tests/perf/space_leaks/space_leak_001.stats
+tests/plugins/plugins01
+tests/plugins/plugins05
+tests/plugins/plugins06
+tests/polykinds/PolyKinds09
+tests/polykinds/PolyKinds10
+tests/profiling/should_run/2592
+tests/profiling/should_run/2592.aux
+tests/profiling/should_run/2592.hp
+tests/profiling/should_run/2592.ps
+tests/profiling/should_run/test.bin
+tests/programs/10queens/10queens
+tests/programs/Queens/queens
+tests/programs/andre_monad/andre_monad
+tests/programs/andy_cherry/andy_cherry
+tests/programs/barton-mangler-bug/barton-mangler-bug
+tests/programs/cholewo-eval/cholewo-eval
+tests/programs/cvh_unboxing/cvh_unboxing
+tests/programs/fast2haskell/fast2haskell
+tests/programs/fun_insts/fun_insts
+tests/programs/jl_defaults/jl_defaults
+tests/programs/joao-circular/joao-circular
+tests/programs/jq_readsPrec/jq_readsPrec
+tests/programs/jtod_circint/jtod_circint
+tests/programs/jules_xref/jules_xref
+tests/programs/jules_xref2/jules_xref2
+tests/programs/launchbury/launchbury
+tests/programs/lennart_range/lennart_range
+tests/programs/lex/lex
+tests/programs/life_space_leak/life_space_leak
+tests/programs/north_array/north_array
+tests/programs/record_upd/record_upd
+tests/programs/rittri/rittri
+tests/programs/sanders_array/sanders_array
+tests/programs/seward-space-leak/seward-space-leak
+tests/programs/strict_anns/strict_anns
+tests/programs/thurston-modular-arith/thurston-modular-arith
+tests/quasiquotation/T4491/T4491
+tests/rebindable/T5038
+tests/rebindable/rebindable10
+tests/rebindable/rebindable2
+tests/rebindable/rebindable3
+tests/rebindable/rebindable4
+tests/rebindable/rebindable5
+tests/rebindable/rebindable7
+tests/rename/prog006/pkg.conf
+tests/rename/prog006/pwd
+tests/rename/should_compile/T1792_imports.imports
+tests/rename/should_compile/T4239.imports
+tests/rename/should_compile/T4240.imports
+tests/rename/should_compile/T5592
+tests/rts/2047
+tests/rts/2783
+tests/rts/3236
+tests/rts/3424
+tests/rts/4850
+tests/rts/5250
+tests/rts/5644/5644
+tests/rts/T2615
+tests/rts/T4059
+tests/rts/T5423
+tests/rts/atomicinc
+tests/rts/bug1010
+tests/rts/derefnull
+tests/rts/divbyzero
+tests/rts/exec_signals
+tests/rts/exec_signals_child
+tests/rts/exec_signals_prepare
+tests/rts/libfoo_T2615.so
+tests/rts/outofmem
+tests/rts/outofmem2
+tests/rts/return_mem_to_os
+tests/rts/rtsflags001
+tests/rts/rtsflags002
+tests/rts/stack001
+tests/rts/stack002
+tests/rts/stack003
+tests/rts/testblockalloc
+tests/rts/testwsdeque
+tests/rts/traceEvent
+tests/safeHaskell/check/Check04
+tests/safeHaskell/safeLanguage/SafeLang04
+tests/safeHaskell/safeLanguage/SafeLang05
+tests/safeHaskell/safeLanguage/SafeLang06
+tests/safeHaskell/safeLanguage/SafeLang09
+tests/safeHaskell/safeLanguage/SafeLang11
+tests/safeHaskell/safeLanguage/SafeLang13
+tests/safeHaskell/safeLanguage/SafeLang15
+tests/safeHaskell/unsafeLibs/BadImport02
+tests/simplCore/should_compile/T3055.simpl
+tests/simplCore/should_run/SeqRule
+tests/simplCore/should_run/T2756
+tests/simplCore/should_run/T3403
+tests/simplCore/should_run/T3437
+tests/simplCore/should_run/T3591
+tests/simplCore/should_run/T3959
+tests/simplCore/should_run/T3972
+tests/simplCore/should_run/T3983
+tests/simplCore/should_run/T4814
+tests/simplCore/should_run/T5315
+tests/simplCore/should_run/T5441
+tests/simplCore/should_run/T5453
+tests/simplCore/should_run/T5587
+tests/simplCore/should_run/T5603
+tests/simplCore/should_run/T5625
+tests/simplCore/should_run/simplrun001
+tests/simplCore/should_run/simplrun002
+tests/simplCore/should_run/simplrun003
+tests/simplCore/should_run/simplrun004
+tests/simplCore/should_run/simplrun005
+tests/simplCore/should_run/simplrun007
+tests/simplCore/should_run/simplrun008
+tests/simplCore/should_run/simplrun009
+tests/simplCore/should_run/simplrun010
+tests/stranal/should_run/T2756b
+tests/stranal/should_run/strun001
+tests/stranal/should_run/strun002
+tests/stranal/should_run/strun003
+tests/stranal/should_run/strun004
+tests/th/T1835
+tests/th/T3572
+tests/th/T3920
+tests/th/T5379
+tests/th/T5410
+tests/th/TH_Depends
+tests/th/TH_Depends_external.txt
+tests/th/TH_lookupName
+tests/th/TH_ppr1
+tests/th/TH_recover
+tests/th/TH_repE2
+tests/th/TH_repGuardOutput
+tests/th/TH_repPrimOutput
+tests/th/TH_repPrimOutput2
+tests/th/TH_spliceE1
+tests/th/TH_spliceE4
+tests/th/TH_spliceE5
+tests/th/TH_spliceViewPat/TH_spliceViewPat
+tests/th/TH_unresolvedInfix
+tests/th/TH_viewPatPrint
+tests/th/TH_where
+tests/typecheck/should_compile/tc159
+tests/typecheck/should_fail/tcfail149
+tests/typecheck/should_run/Defer01
+tests/typecheck/should_run/IPRun
+tests/typecheck/should_run/T1624
+tests/typecheck/should_run/T1735
+tests/typecheck/should_run/T2722
+tests/typecheck/should_run/T3500a
+tests/typecheck/should_run/T3500b
+tests/typecheck/should_run/T3731
+tests/typecheck/should_run/T3731-short
+tests/typecheck/should_run/T4809
+tests/typecheck/should_run/T5759
+tests/typecheck/should_run/church
+tests/typecheck/should_run/mc17
+tests/typecheck/should_run/tcrun001
+tests/typecheck/should_run/tcrun002
+tests/typecheck/should_run/tcrun003
+tests/typecheck/should_run/tcrun004
+tests/typecheck/should_run/tcrun005
+tests/typecheck/should_run/tcrun006
+tests/typecheck/should_run/tcrun008
+tests/typecheck/should_run/tcrun009
+tests/typecheck/should_run/tcrun010
+tests/typecheck/should_run/tcrun011
+tests/typecheck/should_run/tcrun012
+tests/typecheck/should_run/tcrun013
+tests/typecheck/should_run/tcrun014
+tests/typecheck/should_run/tcrun015
+tests/typecheck/should_run/tcrun016
+tests/typecheck/should_run/tcrun017
+tests/typecheck/should_run/tcrun018
+tests/typecheck/should_run/tcrun019
+tests/typecheck/should_run/tcrun020
+tests/typecheck/should_run/tcrun021
+tests/typecheck/should_run/tcrun022
+tests/typecheck/should_run/tcrun023
+tests/typecheck/should_run/tcrun024
+tests/typecheck/should_run/tcrun025
+tests/typecheck/should_run/tcrun026
+tests/typecheck/should_run/tcrun027
+tests/typecheck/should_run/tcrun028
+tests/typecheck/should_run/tcrun029
+tests/typecheck/should_run/tcrun030
+tests/typecheck/should_run/tcrun031
+tests/typecheck/should_run/tcrun032
+tests/typecheck/should_run/tcrun033
+tests/typecheck/should_run/tcrun034
+tests/typecheck/should_run/tcrun036
+tests/typecheck/should_run/tcrun037
+tests/typecheck/should_run/tcrun038
+tests/typecheck/should_run/tcrun039
+tests/typecheck/should_run/tcrun040
+tests/typecheck/should_run/tcrun041
+tests/typecheck/should_run/tcrun042
+tests/typecheck/should_run/tcrun043
+tests/typecheck/should_run/tcrun044
+tests/typecheck/should_run/tcrun045
+tests/typecheck/should_run/tcrun046
+tests/typecheck/should_run/testeq2
+tests/typecheck/testeq1/typecheck.testeq1
+
+tests/lib/IO/chinese-file-*
+
+tests/codeGen/should_run/5785
+tests/concurrent/should_run/conc069
+tests/concurrent/should_run/conc069a
+tests/concurrent/should_run/conc070
+tests/deSugar/should_run/T5742
+tests/dph/dotp/dph-dotp-copy-opt
+tests/dph/dotp/dph-dotp-vseg-opt
+tests/dph/nbody/dph-nbody-vseg-opt
+tests/dph/primespj/dph-primespj-copy-opt
+tests/dph/quickhull/dph-quickhull-copy-opt
+tests/dph/quickhull/dph-quickhull-vseg-opt
+tests/dph/smvm/dph-smvm-copy
+tests/dph/smvm/dph-smvm-vseg
+tests/dph/words/dph-words-copy-opt
+tests/dph/words/dph-words-vseg-opt
+tests/lib/integer/fromToInteger.simpl
+tests/perf/compiler/T5642.comp.stats
+tests/perf/should_run/T5536
+tests/perf/should_run/T5536.data
+tests/perf/should_run/T5536.stats
+
+tests/concurrent/should_run/5866
+tests/ffi/should_run/Capi_Ctype_001
+tests/ffi/should_run/Capi_Ctype_001.hs
+tests/ffi/should_run/Capi_Ctype_002
+tests/ffi/should_run/Capi_Ctype_A_001.hs
+tests/ffi/should_run/Capi_Ctype_A_002.hs
+tests/ffi/should_run/capi_value
+tests/ffi/should_run/ffi_parsing_001
+tests/numeric/should_run/add2
+tests/numeric/should_run/mul2
+
+tests/polykinds/Freeman
+tests/polykinds/MonoidsFD
+tests/polykinds/MonoidsTF
+tests/profiling/should_compile/prof001
+tests/profiling/should_compile/prof002
+tests/profiling/should_run/5314
+tests/profiling/should_run/5314.hp
+tests/profiling/should_run/5314.ps
+tests/profiling/should_run/T2552
+tests/profiling/should_run/T3001
+tests/profiling/should_run/T3001-2
+tests/profiling/should_run/T3001-2.hp
+tests/profiling/should_run/T3001-2.ps
+tests/profiling/should_run/T3001.hp
+tests/profiling/should_run/T3001.ps
+tests/profiling/should_run/T5363
+tests/profiling/should_run/T5559
+tests/profiling/should_run/T680
+tests/profiling/should_run/T949
+tests/profiling/should_run/T949.hp
+tests/profiling/should_run/T949.ps
+tests/profiling/should_run/callstack001
+tests/profiling/should_run/callstack002
+tests/profiling/should_run/heapprof001
+tests/profiling/should_run/heapprof001.hp
+tests/profiling/should_run/heapprof001.ps
+tests/profiling/should_run/ioprof
+tests/profiling/should_run/prof-doc-fib
+tests/profiling/should_run/prof-doc-last
+tests/profiling/should_run/scc001
+tests/profiling/should_run/scc002
+tests/profiling/should_run/scc003
+tests/profiling/should_run/scc004
+tests/th/TH_spliceE5_prof
+
diff --git a/testsuite/Makefile b/testsuite/Makefile
index 9bb1c7d11e..c3db8db960 100644
--- a/testsuite/Makefile
+++ b/testsuite/Makefile
@@ -7,6 +7,7 @@ TOP = .
# being defined.
ifneq "$(MAKECMDGOALS)" "clean"
ifneq "$(MAKECMDGOALS)" "distclean"
+ifneq "$(MAKECMDGOALS)" "maintainer-clean"
include $(TOP)/mk/boilerplate.mk
@@ -18,7 +19,8 @@ all:
endif
endif
+endif
clean distclean maintainer-clean:
$(MAKE) -C $(TOP)/timeout $@
-
+ $(RM) -f mk/*.o mk/*.hi mk/ghc-config mk/ghc-config.exe mk/ghcconfig*.mk
diff --git a/testsuite/config/ghc b/testsuite/config/ghc
index 36f74e4935..4f4544139b 100644
--- a/testsuite/config/ghc
+++ b/testsuite/config/ghc
@@ -7,7 +7,7 @@ import re
#
config.compiler_type = 'ghc'
config.compiler = 'ghc'
-config.compiler_always_flags = ['-fforce-recomp', '-dcore-lint', '-dcmm-lint', '-dno-debug-output', '-no-user-package-conf', '-rtsopts']
+config.compiler_always_flags = ghc_compiler_always_flags.split()
config.hp2ps = 'hp2ps'
config.hpc = 'hpc'
@@ -26,7 +26,7 @@ config.other_ways = ['extcore','optextcore',
'prof_hc_hb','prof_hb',
'prof_hd','prof_hy','prof_hr',
'threaded1_ls', 'threaded2_hT',
- 'llvm', 'debugllvm']
+ 'llvm', 'debugllvm', 'optllvm']
if (ghc_with_native_codegen == 1):
config.compile_ways.append('optasm')
@@ -46,6 +46,7 @@ config.unregisterised = (ghc_unregisterised == 1)
if (ghc_with_threaded_rts == 1):
config.run_ways.append('threaded1')
if (ghc_with_smp == 1):
+ config.have_smp = True
config.run_ways.append('threaded2')
if (ghc_with_dynamic_rts == 1):
@@ -65,27 +66,27 @@ config.clean_only = clean_only
config.way_flags = {
'normal' : [],
'g1' : [],
- 'optasm' : ['-O -fasm'],
+ 'optasm' : ['-O', '-fasm'],
'llvm' : ['-fllvm'],
- 'optllvm' : ['-O -fllvm'],
- 'debugllvm' : ['-fllvm -keep-llvm-files'],
- 'prof' : ['-prof -auto-all -fasm'],
- 'profasm' : ['-O -prof -auto-all'],
- 'profthreaded' : ['-O -prof -auto-all -threaded'],
+ 'optllvm' : ['-O', '-fllvm'],
+ 'debugllvm' : ['-fllvm', '-keep-llvm-files'],
+ 'prof' : ['-prof', '-auto-all', '-fasm'],
+ 'profasm' : ['-O', '-prof', '-auto-all'],
+ 'profthreaded' : ['-O', '-prof', '-auto-all', '-threaded'],
'ghci' : ['--interactive', '-v0', '-ignore-dot-ghci', '+RTS', '-I0.1', '-RTS'],
'extcore' : ['-fext-core'],
- 'optextcore' : ['-O -fext-core'],
+ 'optextcore' : ['-O', '-fext-core'],
'threaded1' : ['-threaded', '-debug'],
'threaded1_ls' : ['-threaded', '-debug'],
'threaded2' : ['-O', '-threaded', '-eventlog'],
'threaded2_hT' : ['-O', '-threaded'],
'hpc' : ['-O', '-fhpc' ],
- 'prof_hc_hb' : ['-O -prof -auto-all'],
- 'prof_hb' : ['-O -prof -auto-all'],
- 'prof_hd' : ['-O -prof -auto-all'],
- 'prof_hy' : ['-O -prof -auto-all'],
- 'prof_hr' : ['-O -prof -auto-all'],
- 'dyn' : ['-O -dynamic']
+ 'prof_hc_hb' : ['-O', '-prof', '-auto-all'],
+ 'prof_hb' : ['-O', '-prof', '-auto-all'],
+ 'prof_hd' : ['-O', '-prof', '-auto-all'],
+ 'prof_hy' : ['-O', '-prof', '-auto-all'],
+ 'prof_hr' : ['-O', '-prof', '-auto-all'],
+ 'dyn' : ['-O', '-dynamic']
}
config.way_rts_flags = {
@@ -114,13 +115,20 @@ config.way_rts_flags = {
'dyn' : []
}
-# Useful classes of ways:
+# Useful classes of ways that can be used with only_ways() and
+# expect_broken_for().
-prof_ways = filter(lambda x: x in config.run_ways,
- ['prof', 'profasm','profthreaded'])
+prof_ways = map (lambda x: x[0], \
+ filter(lambda x: '-prof' in x[1], \
+ config.way_flags.items()))
-threaded_ways = filter(lambda x: x in config.run_ways,
- ['threaded1','threaded2','ghci','profthreaded'])
+threaded_ways = map (lambda x: x[0], \
+ filter(lambda x: '-threaded' in x[1] or 'ghci' == x[0], \
+ config.way_flags.items()))
+
+opt_ways = map (lambda x: x[0], \
+ filter(lambda x: '-O' in x[1], \
+ config.way_flags.items()))
def get_compiler_info():
# This should really not go through the shell
diff --git a/testsuite/driver/runtests.py b/testsuite/driver/runtests.py
index ec1c046077..301344ea86 100644
--- a/testsuite/driver/runtests.py
+++ b/testsuite/driver/runtests.py
@@ -102,6 +102,12 @@ if config.use_threads == 1:
if (maj, min, pat) < (2, 5, 2):
print "Warning: Ignoring request to use threads as python version < 2.5.2"
config.use_threads = 0
+ # We also need to disable threads for python 2.7.2, because of
+ # this bug: http://bugs.python.org/issue13817
+ elif (maj, min, pat) == (2, 7, 2):
+ print "Warning: Ignoring request to use threads as python version is 2.7.2"
+ print "See http://bugs.python.org/issue13817 for details."
+ config.use_threads = 0
if windows:
print "Warning: Ignoring request to use threads as running on Windows"
config.use_threads = 0
diff --git a/testsuite/driver/testglobals.py b/testsuite/driver/testglobals.py
index 3da3774c81..d3b566c493 100644
--- a/testsuite/driver/testglobals.py
+++ b/testsuite/driver/testglobals.py
@@ -87,6 +87,9 @@ class TestConfig:
# Do we have shared libraries?
self.have_shared_libs = False
+ # Do we have SMP support?
+ self.have_smp = False
+
# Are we testing an in-tree compiler?
self.in_tree_compiler = True
@@ -123,6 +126,8 @@ class TestRun:
self.expected_passes = {}
self.n_expected_failures = 0
self.expected_failures = {}
+ self.n_missing_libs = 0
+ self.missing_libs = {}
self.n_unexpected_passes = 0
self.unexpected_passes = {}
self.n_unexpected_failures = 0
@@ -174,6 +179,11 @@ class TestOptions:
# compile this test to .hc only
self.compile_to_hc = 0
+ # We sometimes want to modify the compiler_always_flags, so
+ # they are copied from config.compiler_always_flags when we
+ # make a new instance of TestOptions.
+ self.compiler_always_flags = []
+
# extra compiler opts for this test
self.extra_hc_opts = ''
@@ -194,6 +204,18 @@ class TestOptions:
# Elements of these lists should be things like
# ('bytes allocated',
# 9300000000,
+ # 10)
+ # To allow a 10% deviation from 9300000000.
+ self.compiler_stats_range_fields = {}
+ self.stats_range_fields = {}
+
+ # TODO: deprecate this in favour of compiler_stats_range_fields
+ #
+ # which -t numeric fields do we want to look at, and what bounds must
+ # they fall within?
+ # Elements of these lists should be things like
+ # ('bytes allocated',
+ # 9300000000,
# 9400000000)
self.compiler_stats_num_fields = {}
self.stats_num_fields = {}
diff --git a/testsuite/driver/testlib.py b/testsuite/driver/testlib.py
index 78cef9bb2f..15b6d4eb66 100644
--- a/testsuite/driver/testlib.py
+++ b/testsuite/driver/testlib.py
@@ -111,7 +111,7 @@ def _reqlib( opts, lib ):
have_lib[lib] = got_it
if not got_it:
- opts.expect = 'fail'
+ opts.expect = 'missing-lib'
def req_profiling( opts ):
if not config.have_profiling:
@@ -125,6 +125,10 @@ def req_interp( opts ):
if not config.have_interp:
opts.expect = 'fail'
+def req_smp( opts ):
+ if not config.have_smp:
+ opts.expect = 'fail'
+
def expect_broken( bug ):
return lambda opts, b=bug: _expect_broken (opts, b )
@@ -219,6 +223,14 @@ def _extra_run_opts( opts, v ):
# -----
+def extra_hc_opts( val ):
+ return lambda opts, v=val: _extra_hc_opts(opts, v);
+
+def _extra_hc_opts( opts, v ):
+ opts.extra_hc_opts = v
+
+# -----
+
def extra_clean( files ):
return lambda opts, v=files: _extra_clean(opts, v);
@@ -245,6 +257,24 @@ def _compiler_stats_num_field( opts, f, x, y ):
# -----
+def stats_range_field( field, min, max ):
+ return lambda opts, f=field, x=min, y=max: _stats_range_field(opts, f, x, y);
+
+def _stats_range_field( opts, f, x, y ):
+ # copy the dictionary, as the config gets shared between all tests
+ opts.stats_range_fields = opts.stats_range_fields.copy()
+ opts.stats_range_fields[f] = (x, y)
+
+def compiler_stats_range_field( field, min, max ):
+ return lambda opts, f=field, x=min, y=max: _compiler_stats_range_field(opts, f, x, y);
+
+def _compiler_stats_range_field( opts, f, x, y ):
+ # copy the dictionary, as the config gets shared between all tests
+ opts.compiler_stats_range_fields = opts.compiler_stats_range_fields.copy()
+ opts.compiler_stats_range_fields[f] = (x, y)
+
+# -----
+
def skip_if_no_ghci(opts):
if not ('ghci' in config.run_ways):
opts.skip = 1
@@ -447,6 +477,9 @@ def _compile_cmd_prefix( opts, prefix ):
def normalise_slashes( opts ):
opts.extra_normaliser = normalise_slashes_
+def normalise_exe( opts ):
+ opts.extra_normaliser = normalise_exe_
+
def normalise_fun( fun ):
return lambda opts, f=fun: _normalise_fun(opts, f)
@@ -483,6 +516,7 @@ def newTestDir( dir ):
# reset the options for this test directory
thisdir_testopts = copy.copy(default_testopts)
thisdir_testopts.testdir = dir
+ thisdir_testopts.compiler_always_flags = config.compiler_always_flags
# -----------------------------------------------------------------------------
# Actually doing tests
@@ -699,7 +733,9 @@ def do_test(name, way, func, args):
if config.use_threads:
t.lock.acquire()
- if getTestOpts().expect != 'pass' and getTestOpts().expect != 'fail':
+ if getTestOpts().expect != 'pass' and \
+ getTestOpts().expect != 'fail' and \
+ getTestOpts().expect != 'missing-lib':
framework_fail(name, way, 'bad expected ' + getTestOpts().expect)
try:
@@ -727,11 +763,18 @@ def do_test(name, way, func, args):
reason = result['reason']
addFailingTestInfo(t.unexpected_failures, getTestOpts().testdir, name, reason, way)
else:
- t.n_expected_failures = t.n_expected_failures + 1
- if name in t.expected_failures:
- t.expected_failures[name].append(way)
+ if getTestOpts().expect == 'missing-lib':
+ t.n_missing_libs = t.n_missing_libs + 1
+ if name in t.missing_libs:
+ t.missing_libs[name].append(way)
+ else:
+ t.missing_libs[name] = [way]
else:
- t.expected_failures[name] = [way]
+ t.n_expected_failures = t.n_expected_failures + 1
+ if name in t.expected_failures:
+ t.expected_failures[name].append(way)
+ else:
+ t.expected_failures[name] = [way]
else:
framework_fail(name, way, 'bad result ' + passFail)
except:
@@ -814,7 +857,7 @@ def run_command( name, way, cmd ):
def ghci_script( name, way, script ):
# filter out -fforce-recomp from compiler_always_flags, because we're
# actually testing the recompilation behaviour in the GHCi tests.
- flags = filter(lambda f: f != '-fforce-recomp', config.compiler_always_flags)
+ flags = filter(lambda f: f != '-fforce-recomp', getTestOpts().compiler_always_flags)
flags.append(getTestOpts().extra_hc_opts)
# We pass HC and HC_OPTS as environment variables, so that the
@@ -928,13 +971,34 @@ def multi_compile_and_run( name, way, top_mod, extra_mods, extra_hc_opts ):
# -----------------------------------------------------------------------------
# Check -t stats info
-def checkStats(stats_file, num_fields):
+def checkStats(stats_file, range_fields, num_fields):
result = passed()
if len(num_fields) > 0:
f = open(in_testdir(stats_file))
contents = f.read()
f.close()
+ for (field, (expected, dev)) in range_fields.items():
+ m = re.search('\("' + field + '", "([0-9]+)"\)', contents)
+ if m == None:
+ print 'Failed to find field: ', field
+ result = failBecause('no such stats field')
+ val = int(m.group(1))
+
+ min = expected * ((100 - float(dev))/100);
+ max = expected * ((100 + float(dev))/100);
+
+ if val < min:
+ print field, val, 'is more than ' + repr(dev) + '%'
+ print 'less than the exepected value', expected
+ print 'If this is because you have improved GHC, please'
+ print 'update the test so that GHC doesn\'t regress again'
+ result = failBecause('stat too good')
+ if val > max:
+ print field, val, 'is more than ' + repr(dev) + '% greater than the expected value,', expected, max
+ result = failBecause('stat not good enough')
+
+ # ToDo: remove all uses of this, and delete it
for (field, (min, max)) in num_fields.items():
m = re.search('\("' + field + '", "([0-9]+)"\)', contents)
if m == None:
@@ -1015,7 +1079,7 @@ def simple_build( name, way, extra_hc_opts, should_fail, top_mod, link, addsuf,
else:
cmd_prefix = getTestOpts().compile_cmd_prefix + ' '
- comp_flags = config.compiler_always_flags
+ comp_flags = getTestOpts().compiler_always_flags
if noforce:
comp_flags = filter(lambda f: f != '-fforce-recomp', comp_flags)
@@ -1037,7 +1101,8 @@ def simple_build( name, way, extra_hc_opts, should_fail, top_mod, link, addsuf,
# ToDo: if the sub-shell was killed by ^C, then exit
- statsResult = checkStats(stats_file, opts.compiler_stats_num_fields)
+ statsResult = checkStats(stats_file, opts.compiler_stats_range_fields
+ , opts.compiler_stats_num_fields)
if badResult(statsResult):
return statsResult
@@ -1128,7 +1193,8 @@ def simple_run( name, way, prog, args ):
if check_prof and not check_prof_ok(name):
return failBecause('bad profile')
- return checkStats(stats_file, opts.stats_num_fields)
+ return checkStats(stats_file, opts.stats_range_fields
+ , opts.stats_num_fields)
def rts_flags(way):
if (way == ''):
@@ -1192,7 +1258,7 @@ def interpreter_run( name, way, extra_hc_opts, compile_only, top_mod ):
script.close()
cmd = "'" + config.compiler + "' " \
- + join(config.compiler_always_flags,' ') + ' ' \
+ + join(getTestOpts().compiler_always_flags,' ') + ' ' \
+ srcname + ' ' \
+ join(config.way_flags[way],' ') + ' ' \
+ extra_hc_opts + ' ' \
@@ -1286,7 +1352,7 @@ def extcore_run( name, way, extra_hc_opts, compile_only, top_mod ):
cmd = 'cd ' + getTestOpts().testdir + " && '" \
+ config.compiler + "' " \
- + join(config.compiler_always_flags,' ') + ' ' \
+ + join(getTestOpts().compiler_always_flags,' ') + ' ' \
+ join(config.way_flags[way],' ') + ' ' \
+ extra_hc_opts + ' ' \
+ getTestOpts().extra_hc_opts \
@@ -1316,7 +1382,7 @@ def extcore_run( name, way, extra_hc_opts, compile_only, top_mod ):
cmd = 'cd ' + getTestOpts().testdir + " && '" \
+ config.compiler + "' " \
- + join(config.compiler_always_flags,' ') + ' ' \
+ + join(getTestOpts().compiler_always_flags,' ') + ' ' \
+ to_compile + ' ' \
+ extra_hc_opts + ' ' \
+ getTestOpts().extra_hc_opts + ' ' \
@@ -1521,10 +1587,6 @@ def normalise_errmsg( str ):
str = re.sub('([^\\s])\\.exe', '\\1', str)
# normalise slashes, minimise Windows/Unix filename differences
str = re.sub('\\\\', '/', str)
- # The inplace ghc's are called ghc-bin-stage[123] to avoid filename
- # collisions, so we need to normalise that to just "ghc"
- # (this is for the old build system, I think, so should be removable)
- str = re.sub('ghc-bin-stage[123]', 'ghc', str)
# The inplace ghc's are called ghc-stage[123] to avoid filename
# collisions, so we need to normalise that to just "ghc"
str = re.sub('ghc-stage[123]', 'ghc', str)
@@ -1542,7 +1604,7 @@ def normalise_prof (str):
str = re.sub('^(.*\n)*COST CENTRE[^\n]*\n','',str)
# strip results for CAFs, these tend to change unpredictably
- str = re.sub('[ \t]*CAF.*\n','',str)
+ str = re.sub('[ \t]*(CAF|IDLE).*\n','',str)
# XXX Ignore Main.main. Sometimes this appears under CAF, and
# sometimes under MAIN.
@@ -1570,6 +1632,10 @@ def normalise_slashes_( str ):
str = re.sub('\\\\', '/', str)
return str
+def normalise_exe_( str ):
+ str = re.sub('\.exe', '', str)
+ return str
+
def normalise_output( str ):
# Remove a .exe extension (for Windows)
# This can occur in error messages generated by the program.
@@ -1974,6 +2040,8 @@ def summary(t, file):
+ ' were skipped\n\n' \
+ string.rjust(`t.n_expected_passes`, 8)
+ ' expected passes\n' \
+ + string.rjust(`t.n_missing_libs`, 8)
+ + ' had missing libraries\n' \
+ string.rjust(`t.n_expected_failures`, 8) \
+ ' expected failures\n' \
+ string.rjust(`t.n_unexpected_passes`, 8) \
diff --git a/testsuite/mk/boilerplate.mk b/testsuite/mk/boilerplate.mk
index 4eeb1aa251..ad794985f5 100644
--- a/testsuite/mk/boilerplate.mk
+++ b/testsuite/mk/boilerplate.mk
@@ -35,26 +35,6 @@ endif
$(call canonicalise,$1)
endef
-define get-ghc-rts-field # $1 = result variable, $2 = field name
-$1 := $$(shell '$$(TEST_HC)' +RTS --info | grep '^ .("$2",' | tr -d '\r' | sed -e 's/.*", *"//' -e 's/")$$$$//')
-endef
-
-define get-ghc-field # $1 = result variable, $2 = field name
-$1 := $$(shell '$$(TEST_HC)' --info | grep '^ .("$2",' | tr -d '\r' | sed -e 's/.*", *"//' -e 's/")$$$$//')
-endef
-
-define get-ghc-feature-bool # $1 = result variable, $2 = field name
-SHELL_RES := $$(shell '$$(TEST_HC)' --info | grep '^ .("$2",' | tr -d '\r' | sed -e 's/.*", *"//' -e 's/")$$$$//')
-$1 := $$(strip \
- $$(if $$(SHELL_RES), \
- $$(if $$(subst YES,,$$(SHELL_RES)), \
- $$(if $$(subst NO,,$$(SHELL_RES)), \
- $$(warning ghc info field not YES or NO: $2: $$(SHELL_RES)), \
- NO), \
- YES), \
- $$(warning ghc info field not found: $2)))
-endef
-
ifeq "$(TEST_HC)" ""
STAGE1_GHC := $(abspath $(TOP)/../inplace/bin/ghc-stage1)
@@ -65,7 +45,7 @@ ifneq "$(wildcard $(STAGE1_GHC) $(STAGE1_GHC).exe)" ""
IN_TREE_COMPILER = YES
ifeq "$(BINDIST)" "YES"
-TEST_HC := $(abspath $(TOP)/../)/bindisttest/install dir/bin/ghc
+TEST_HC := $(abspath $(TOP)/../)/bindisttest/install dir/bin/ghc
else ifeq "$(stage)" "1"
TEST_HC := $(STAGE1_GHC)
else ifeq "$(stage)" "3"
@@ -136,8 +116,13 @@ ifeq "$(shell test -x '$(HPC)' && echo exists)" ""
$(error Cannot find hpc: $(HPC))
endif
-$(eval $(call get-ghc-field,GhcRTSWays,RTS ways))
+ifeq "$(AR)" ""
+AR = ar
+endif
+# Be careful when using this. On Windows it ends up looking like
+# c:/foo/bar which confuses make, as make thinks that the : is Makefile
+# syntax
TOP_ABS := $(abspath $(TOP))
$(eval $(call canonicalise,TOP_ABS))
@@ -146,7 +131,28 @@ CP = cp
RM = rm -f
PYTHON = python
-$(eval $(call get-ghc-rts-field,HostOS,Host OS))
+# -----------------------------------------------------------------------------
+# configuration of TEST_HC
+
+# ghc-config.hs is a short Haskell program that runs ghc --info, parses
+# the results, and emits a little .mk file with make bindings for the values.
+# This way we cache the results for different values of $(TEST_HC)
+
+$(TOP)/mk/ghc-config : $(TOP)/mk/ghc-config.hs
+ "$(TEST_HC)" --make -o $@ $<
+
+empty=
+space=$(empty) $(empty)
+ghc-config-mk = $(TOP)/mk/ghcconfig$(subst $(space),_,$(subst :,_,$(subst /,_,$(subst \,_,$(TEST_HC))))).mk
+
+$(ghc-config-mk) : $(TOP)/mk/ghc-config
+ $(TOP)/mk/ghc-config "$(TEST_HC)" >"$@"; if [ $$? != 0 ]; then $(RM) "$@"; exit 1; fi
+# If the ghc-config fails, remove $@, and fail
+
+include $(ghc-config-mk)
+
+# -----------------------------------------------------------------------------
+
ifeq "$(HostOS)" "mingw32"
WINDOWS = YES
else
diff --git a/testsuite/mk/ghc-config.hs b/testsuite/mk/ghc-config.hs
new file mode 100644
index 0000000000..e0b8954638
--- /dev/null
+++ b/testsuite/mk/ghc-config.hs
@@ -0,0 +1,35 @@
+import System.Environment
+import System.Process
+
+main = do
+ [ghc] <- getArgs
+
+ info <- readProcess ghc ["+RTS", "--info"] ""
+ let fields = read info :: [(String,String)]
+ getGhcField fields "HostOS" "Host OS"
+ getGhcField fields "WORDSIZE" "Word size"
+ getGhcField fields "TARGETPLATFORM" "Target platform"
+ getGhcField fields "TargetOS_CPP" "Target OS"
+ getGhcField fields "TargetARCH_CPP" "Target architecture"
+
+ info <- readProcess ghc ["--info"] ""
+ let fields = read info :: [(String,String)]
+ getGhcField fields "GhcStage" "Stage"
+ getGhcField fields "GhcWithNativeCodeGen" "Have native code generator"
+ getGhcField fields "GhcWithInterpreter" "Have interpreter"
+ getGhcField fields "GhcUnregisterised" "Unregisterised"
+ getGhcField fields "GhcWithSMP" "Support SMP"
+ getGhcField fields "GhcRTSWays" "RTS ways"
+ getGhcFieldWithDefault fields "AR" "ar command" "ar"
+
+getGhcField :: [(String,String)] -> String -> String -> IO ()
+getGhcField fields mkvar key =
+ case lookup key fields of
+ Nothing -> fail ("No field: " ++ key)
+ Just val -> putStrLn (mkvar ++ '=':val)
+
+getGhcFieldWithDefault :: [(String,String)] -> String -> String -> String -> IO ()
+getGhcFieldWithDefault fields mkvar key deflt = do
+ case lookup key fields of
+ Nothing -> putStrLn (mkvar ++ '=':deflt)
+ Just val -> putStrLn (mkvar ++ '=':val)
diff --git a/testsuite/mk/test.mk b/testsuite/mk/test.mk
index 95b29c53da..e6873cbeb8 100644
--- a/testsuite/mk/test.mk
+++ b/testsuite/mk/test.mk
@@ -27,21 +27,18 @@ CONFIG = $(CONFIGDIR)/$(COMPILER)
# TEST_HC_OPTS is passed to every invocation of TEST_HC
# in nested Makefiles
-TEST_HC_OPTS = -dno-debug-output $(EXTRA_HC_OPTS)
+TEST_HC_OPTS = -fforce-recomp -dcore-lint -dcmm-lint -dno-debug-output -no-user-package-conf -rtsopts $(EXTRA_HC_OPTS)
RUNTEST_OPTS =
-$(eval $(call get-ghc-rts-field,WORDSIZE,Word size))
-$(eval $(call get-ghc-rts-field,TARGETPLATFORM,Target platform))
-$(eval $(call get-ghc-rts-field,TargetOS_CPP,Target OS))
-$(eval $(call get-ghc-rts-field,TargetARCH_CPP,Target architecture))
ifeq "$(filter $(TargetOS_CPP), cygwin32 mingw32)" ""
exeext =
else
exeext = .exe
endif
-$(eval $(call get-ghc-feature-bool,GhcWithNativeCodeGen,Have native code generator))
+RUNTEST_OPTS += -e ghc_compiler_always_flags="'$(TEST_HC_OPTS)'"
+
ifeq "$(GhcWithNativeCodeGen)" "YES"
RUNTEST_OPTS += -e ghc_with_native_codegen=1
else
@@ -49,7 +46,7 @@ RUNTEST_OPTS += -e ghc_with_native_codegen=0
endif
HASKELL98_LIBDIR := $(shell "$(GHC_PKG)" field haskell98 library-dirs | sed 's/^[^:]*: *//')
-HAVE_PROFILING := $(shell if [ -f $(HASKELL98_LIBDIR)/libHShaskell98-*_p.a ]; then echo YES; else echo NO; fi)
+HAVE_PROFILING := $(shell if [ -f $(subst \,/,$(HASKELL98_LIBDIR))/libHShaskell98-*_p.a ]; then echo YES; else echo NO; fi)
ifeq "$(HAVE_PROFILING)" "YES"
RUNTEST_OPTS += -e ghc_with_profiling=1
@@ -69,8 +66,6 @@ else
RUNTEST_OPTS += -e ghc_with_dynamic_rts=0
endif
-$(eval $(call get-ghc-field,GhcStage,Stage))
-$(eval $(call get-ghc-feature-bool,GhcWithInterpreter,Have interpreter))
ifeq "$(GhcWithInterpreter)" "NO"
RUNTEST_OPTS += -e ghc_with_interpreter=0
else ifeq "$(GhcStage)" "1"
@@ -79,21 +74,19 @@ else
RUNTEST_OPTS += -e ghc_with_interpreter=1
endif
-$(eval $(call get-ghc-feature-bool,GhcUnregisterised,Unregisterised))
ifeq "$(GhcUnregisterised)" "YES"
RUNTEST_OPTS += -e ghc_unregisterised=1
else
RUNTEST_OPTS += -e ghc_unregisterised=0
endif
-$(eval $(call get-ghc-feature-bool,GhcWithSMP,Support SMP))
ifeq "$(GhcWithSMP)" "YES"
RUNTEST_OPTS += -e ghc_with_smp=1
else
RUNTEST_OPTS += -e ghc_with_smp=0
endif
-ifneq "$(shell $(SHELL) -c 'llvmc --version | grep version' 2> /dev/null)" ""
+ifneq "$(shell $(SHELL) -c 'llc --version | grep version' 2> /dev/null)" ""
RUNTEST_OPTS += -e ghc_with_llvm=1
else
RUNTEST_OPTS += -e ghc_with_llvm=0
diff --git a/testsuite/tests/annotations/should_fail/annfail08.stderr b/testsuite/tests/annotations/should_fail/annfail08.stderr
index a97ca4e2b5..d10fbe55d6 100644
--- a/testsuite/tests/annotations/should_fail/annfail08.stderr
+++ b/testsuite/tests/annotations/should_fail/annfail08.stderr
@@ -1,15 +1,14 @@
-
-annfail08.hs:9:1:
- No instance for (Data.Data.Data (a0 -> a0))
- arising from an annotation
- Possible fix:
- add an instance declaration for (Data.Data.Data (a0 -> a0))
- In the expression: (id + 1)
- In the annotation: {-# ANN f (id + 1) #-}
-
-annfail08.hs:9:15:
- No instance for (Num (a0 -> a0))
- arising from a use of `+'
- Possible fix: add an instance declaration for (Num (a0 -> a0))
- In the expression: (id + 1)
- In the annotation: {-# ANN f (id + 1) #-}
+
+annfail08.hs:9:1:
+ No instance for (Data.Data.Data (a0 -> a0))
+ arising from an annotation
+ Possible fix:
+ add an instance declaration for (Data.Data.Data (a0 -> a0))
+ In the expression: (id + 1)
+ In the annotation: {-# ANN f (id + 1) #-}
+
+annfail08.hs:9:15:
+ No instance for (Num (a0 -> a0)) arising from a use of `+'
+ Possible fix: add an instance declaration for (Num (a0 -> a0))
+ In the expression: (id + 1)
+ In the annotation: {-# ANN f (id + 1) #-}
diff --git a/testsuite/tests/annotations/should_fail/annfail10.stderr b/testsuite/tests/annotations/should_fail/annfail10.stderr
index eac3002efa..8b2e59375b 100644
--- a/testsuite/tests/annotations/should_fail/annfail10.stderr
+++ b/testsuite/tests/annotations/should_fail/annfail10.stderr
@@ -1,9 +1,28 @@
annfail10.hs:9:1:
- Ambiguous type variable `a0' in the constraints:
- (Data.Data.Data a0) arising from an annotation
- at annfail10.hs:9:1-15
- (Num a0) arising from the literal `1' at annfail10.hs:9:11
- Probable fix: add a type signature that fixes these type variable(s)
+ No instance for (Data.Data.Data a0) arising from an annotation
+ The type variable `a0' is ambiguous
+ Possible fix: add a type signature that fixes these type variable(s)
+ Note: there are several potential instances:
+ instance Data.Data.Data () -- Defined in `Data.Data'
+ instance (Data.Data.Data a, Data.Data.Data b) =>
+ Data.Data.Data (a, b)
+ -- Defined in `Data.Data'
+ instance (Data.Data.Data a, Data.Data.Data b, Data.Data.Data c) =>
+ Data.Data.Data (a, b, c)
+ -- Defined in `Data.Data'
+ ...plus 27 others
+ In the expression: 1
+ In the annotation: {-# ANN f 1 #-}
+
+annfail10.hs:9:11:
+ No instance for (Num a0) arising from the literal `1'
+ The type variable `a0' is ambiguous
+ Possible fix: add a type signature that fixes these type variable(s)
+ Note: there are several potential instances:
+ instance Num Double -- Defined in `GHC.Float'
+ instance Num Float -- Defined in `GHC.Float'
+ instance Num Int -- Defined in `GHC.Num'
+ ...plus 11 others
In the expression: 1
In the annotation: {-# ANN f 1 #-}
diff --git a/testsuite/tests/array/should_run/all.T b/testsuite/tests/array/should_run/all.T
index 8b1ab2dd4d..eee3b123d2 100644
--- a/testsuite/tests/array/should_run/all.T
+++ b/testsuite/tests/array/should_run/all.T
@@ -23,3 +23,4 @@ test('arr016', reqlib('random'), compile_and_run, [''])
test('arr017', skip_if_fast, compile_and_run, [''])
test('arr018', skip_if_fast, compile_and_run, [''])
test('arr019', normal, compile_and_run, [''])
+test('arr020', normal, compile_and_run, [''])
diff --git a/testsuite/tests/array/should_run/arr020.hs b/testsuite/tests/array/should_run/arr020.hs
new file mode 100644
index 0000000000..bb025eff03
--- /dev/null
+++ b/testsuite/tests/array/should_run/arr020.hs
@@ -0,0 +1,132 @@
+{-# LANGUAGE MagicHash, UnboxedTuples, ScopedTypeVariables #-}
+
+module Main where
+
+import GHC.Prim
+import GHC.Base
+import GHC.ST
+import GHC.Word
+import Control.Monad
+import System.Mem
+
+data MutableByteArray s = MutableByteArray (MutableByteArray# s)
+
+data ByteArray e = ByteArray ByteArray#
+
+newByteArray :: Int -> ST s (MutableByteArray s)
+newByteArray (I# n#)
+ = ST $ \s# -> case newByteArray# n# s# of
+ (# s'#, arr# #) -> (# s'#, MutableByteArray arr# #)
+
+writeByteArray :: MutableByteArray s -> Int -> Word32 -> ST s ()
+writeByteArray (MutableByteArray mba#) (I# i#) (W32# w#)
+ = ST $ \s# -> case writeWord32Array# mba# i# w# s# of
+ s'# -> (# s'#, () #)
+
+indexArray :: ByteArray Word32 -> Int -> Word32
+indexArray (ByteArray arr#) (I# i#)
+ = W32# (indexWord32Array# arr# i#)
+
+unsafeFreezeByteArray :: MutableByteArray s -> ST s (ByteArray e)
+unsafeFreezeByteArray (MutableByteArray mba#)
+ = ST $ \s# -> case unsafeFreezeByteArray# mba# s# of
+ (# s'#, ba# #) -> (# s'#, ByteArray ba# #)
+
+data MutableArrayArray s e = MutableArrayArray (MutableArrayArray# s)
+
+data ArrayArray e = ArrayArray ArrayArray#
+
+newArrayArray :: Int -> ST s (MutableArrayArray s e)
+newArrayArray (I# n#)
+ = ST $ \s# -> case newArrayArray# n# s# of
+ (# s'#, arr# #) -> (# s'#, MutableArrayArray arr# #)
+
+writeArrayArrayMut :: MutableArrayArray s (MutableByteArray s) -> Int -> MutableByteArray s
+ -> ST s ()
+writeArrayArrayMut (MutableArrayArray arrs#) (I# i#) (MutableByteArray mba#)
+ = ST $ \s# -> case writeMutableByteArrayArray# arrs# i# mba# s# of
+ s'# -> (# s'#, () #)
+
+writeArrayArray :: MutableArrayArray s (ByteArray s) -> Int -> ByteArray s
+ -> ST s ()
+writeArrayArray (MutableArrayArray arrs#) (I# i#) (ByteArray ba#)
+ = ST $ \s# -> case writeByteArrayArray# arrs# i# ba# s# of
+ s'# -> (# s'#, () #)
+
+readArrayArray :: MutableArrayArray s (MutableByteArray s) -> Int -> ST s (MutableByteArray s)
+readArrayArray (MutableArrayArray arrs#) (I# i#)
+ = ST $ \s# -> case readMutableByteArrayArray# arrs# i# s# of
+ (# s'#, mba# #) -> (# s'#, MutableByteArray mba# #)
+
+indexArrayArray :: ArrayArray (ByteArray e) -> Int -> ByteArray e
+indexArrayArray (ArrayArray arrs#) (I# i#)
+ = ByteArray (indexByteArrayArray# arrs# i#)
+
+unsafeFreezeArrayArray :: MutableArrayArray s e -> ST s (ArrayArray e)
+unsafeFreezeArrayArray (MutableArrayArray marrs#)
+ = ST $ \s# -> case unsafeFreezeArrayArray# marrs# s# of
+ (# s'#, arrs# #) -> (# s'#, ArrayArray arrs# #)
+
+unsafeDeepFreezeArrayArray :: forall s e
+ . MutableArrayArray s (MutableByteArray s)
+ -> ST s (ArrayArray (ByteArray e))
+unsafeDeepFreezeArrayArray marrs@(MutableArrayArray marrs#)
+ = do { let n = I# (sizeofMutableArrayArray# marrs#)
+ marrs_halfFrozen = MutableArrayArray marrs# -- :: MutableArrayArray s (ByteArray e)
+ ; mapM_ (freezeSubArray marrs_halfFrozen) [0..n - 1]
+ ; unsafeFreezeArrayArray marrs_halfFrozen
+ }
+ where
+ freezeSubArray marrs_halfFrozen i
+ = do { mba <- readArrayArray marrs i
+ ; ba <- unsafeFreezeByteArray mba
+ ; writeArrayArray marrs_halfFrozen i ba
+ }
+
+newByteArrays :: [Int] -> ST s (MutableArrayArray s (MutableByteArray s))
+newByteArrays ns
+ = do { arrs <- newArrayArray (length ns)
+ ; zipWithM_ (writeNewByteArray arrs) ns [0..]
+ ; return arrs
+ }
+ where
+ writeNewByteArray arrs n i
+ = do { mba <- newByteArray (n * 4) -- we store 32-bit words
+ ; writeArrayArrayMut arrs i mba
+ }
+
+type UnboxedArray2D e = ArrayArray (ByteArray e)
+
+newUnboxedArray2D :: [[Word32]] -> UnboxedArray2D Word32
+newUnboxedArray2D values
+ = runST $
+ do { marrs <- newByteArrays (map length values)
+ ; zipWithM_ (fill marrs) values [0..]
+ ; arrs <- unsafeDeepFreezeArrayArray marrs
+ ; return arrs
+ }
+ where
+ fill marrs vs i
+ = do { mba <- readArrayArray marrs i
+ ; zipWithM_ (writeByteArray mba) [0..] vs
+ }
+
+unboxedArray2D :: UnboxedArray2D Word32
+unboxedArray2D
+ = newUnboxedArray2D
+ [ [1..10]
+ , [11..200]
+ , []
+ , [1..1000] ++ [42] ++ [1001..2000]
+ , [1..100000]
+ ]
+
+indexUnboxedArray2D :: UnboxedArray2D Word32 -> (Int, Int) -> Word32
+indexUnboxedArray2D arr (i, j)
+ = indexArrayArray arr i `indexArray` j
+
+main
+ = do { print $ unboxedArray2D `indexUnboxedArray2D` (3, 1000)
+ ; performGC
+ ; print $ unboxedArray2D `indexUnboxedArray2D` (3, 1000)
+ }
diff --git a/testsuite/tests/lib/IO/hGetChar001.stdin b/testsuite/tests/array/should_run/arr020.stdout
index 2510fcaec3..daaac9e303 100644
--- a/testsuite/tests/lib/IO/hGetChar001.stdin
+++ b/testsuite/tests/array/should_run/arr020.stdout
@@ -1,2 +1,2 @@
42
--7
+42
diff --git a/testsuite/tests/arrows/should_compile/T5022.hs b/testsuite/tests/arrows/should_compile/T5022.hs
new file mode 100644
index 0000000000..d0213397e3
--- /dev/null
+++ b/testsuite/tests/arrows/should_compile/T5022.hs
@@ -0,0 +1,19 @@
+{-# LANGUAGE Arrows #-}
+module T5022 ( pIterate ) where
+
+import Prelude hiding ( init )
+
+returnA :: b -> b
+returnA = id
+
+------------
+newtype State s a = State { unState :: [a] }
+
+------------
+pIterate :: a -> [a]
+pIterate =
+ proc x -> do
+ rec
+ as <- unState -< s
+ let s = State (x:as)
+ returnA -< as
diff --git a/testsuite/tests/arrows/should_compile/all.T b/testsuite/tests/arrows/should_compile/all.T
index ab40907b5c..24e95e8ef6 100644
--- a/testsuite/tests/arrows/should_compile/all.T
+++ b/testsuite/tests/arrows/should_compile/all.T
@@ -17,3 +17,4 @@ test('arrowpat', normal, compile, [''])
test('T3964', normal, compile, [''])
test('T5283', normal, compile, [''])
test('T5267', expect_broken(5605), compile, [''])
+test('T5022', normal, compile, [''])
diff --git a/testsuite/tests/arrows/should_fail/T5380.stderr b/testsuite/tests/arrows/should_fail/T5380.stderr
index 07b89eef84..7e0004f95d 100644
--- a/testsuite/tests/arrows/should_fail/T5380.stderr
+++ b/testsuite/tests/arrows/should_fail/T5380.stderr
@@ -1,10 +1,10 @@
T5380.hs:7:27:
- Couldn't match type `not_bool' with `Bool'
+ Couldn't match expected type `not_bool' with actual type `Bool'
`not_bool' is a rigid type variable bound by
the type signature for
testB :: not_bool -> (() -> ()) -> () -> not_unit
- at T5380.hs:7:1
+ at T5380.hs:6:10
In the expression: b
In the expression: proc () -> if b then f -< () else f -< ()
In an equation for `testB':
@@ -15,8 +15,10 @@ T5380.hs:7:34:
`not_unit' is a rigid type variable bound by
the type signature for
testB :: not_bool -> (() -> ()) -> () -> not_unit
- at T5380.hs:7:1
+ at T5380.hs:6:10
Expected type: () -> not_unit
Actual type: () -> ()
In the expression: f
In the expression: proc () -> if b then f -< () else f -< ()
+ In an equation for `testB':
+ testB b f = proc () -> if b then f -< () else f -< ()
diff --git a/testsuite/tests/codeGen/should_run/5747.hs b/testsuite/tests/codeGen/should_run/5747.hs
new file mode 100644
index 0000000000..2975b55f07
--- /dev/null
+++ b/testsuite/tests/codeGen/should_run/5747.hs
@@ -0,0 +1 @@
+main = print (cos 0)
diff --git a/testsuite/tests/codeGen/should_run/5747.stdout b/testsuite/tests/codeGen/should_run/5747.stdout
new file mode 100644
index 0000000000..d3827e75a5
--- /dev/null
+++ b/testsuite/tests/codeGen/should_run/5747.stdout
@@ -0,0 +1 @@
+1.0
diff --git a/testsuite/tests/codeGen/should_run/5785.hs b/testsuite/tests/codeGen/should_run/5785.hs
new file mode 100644
index 0000000000..1b27f10a15
--- /dev/null
+++ b/testsuite/tests/codeGen/should_run/5785.hs
@@ -0,0 +1,40 @@
+module Main where
+
+import Data.Int
+import Data.Word
+
+-- Test case for bug #5785. The cause of this was that the LLVM backend
+-- converted all Int constants using (fromInteger :: Int) and so on 32bit a
+-- Int64 or Word32 would be truncated to 32bit! value before printing out.
+main :: IO ()
+main = do
+ -- first two should print as big numbers (as unsigned)
+ print (-1 :: Word8)
+ print (-1 :: Word16)
+ print (-1 :: Word32)
+ print (-1 :: Word64)
+ print (-1 :: Int8)
+ print (-1 :: Int16)
+ print (-1 :: Int32)
+ print (-1 :: Int64)
+
+ -- only requires 32 bits (unsigned)
+ print (2316287658 :: Word8)
+ print (2316287658 :: Word16)
+ print (2316287658 :: Word32)
+ print (2316287658 :: Word64)
+ print (2316287658 :: Int8)
+ print (2316287658 :: Int16)
+ print (2316287658 :: Int32)
+ print (2316287658 :: Int64)
+
+ -- this requries a 64 (unsigned) bit word to store correctly
+ print (32342316287658 :: Word8)
+ print (32342316287658 :: Word16)
+ print (32342316287658 :: Word32)
+ print (32342316287658 :: Word64)
+ print (32342316287658 :: Int8)
+ print (32342316287658 :: Int16)
+ print (32342316287658 :: Int32)
+ print (32342316287658 :: Int64)
+
diff --git a/testsuite/tests/codeGen/should_run/5785.stdout b/testsuite/tests/codeGen/should_run/5785.stdout
new file mode 100644
index 0000000000..f3d21155e5
--- /dev/null
+++ b/testsuite/tests/codeGen/should_run/5785.stdout
@@ -0,0 +1,24 @@
+255
+65535
+4294967295
+18446744073709551615
+-1
+-1
+-1
+-1
+170
+48810
+2316287658
+2316287658
+-86
+-16726
+-1978679638
+2316287658
+170
+1706
+1212548778
+32342316287658
+-86
+1706
+1212548778
+32342316287658
diff --git a/testsuite/tests/codeGen/should_run/all.T b/testsuite/tests/codeGen/should_run/all.T
index fcaf11b673..0df805df3b 100644
--- a/testsuite/tests/codeGen/should_run/all.T
+++ b/testsuite/tests/codeGen/should_run/all.T
@@ -87,3 +87,6 @@ test('5149', omit_ways(['ghci']), multi_compile_and_run,
['5149', [('5149_cmm.cmm', '')], ''])
test('5129', normal, compile_and_run, [''])
test('5626', exit_code(1), compile_and_run, [''])
+test('5747', if_arch('i386', extra_hc_opts('-msse2')), compile_and_run, ['-O2'])
+test('5785', normal, compile_and_run, [''])
+
diff --git a/testsuite/tests/concurrent/2317/all.T b/testsuite/tests/concurrent/2317/all.T
index 80b46f8c75..ab4e890721 100644
--- a/testsuite/tests/concurrent/2317/all.T
+++ b/testsuite/tests/concurrent/2317/all.T
@@ -1,5 +1,5 @@
test('2317',
[skip_if_fast,
- reqlib('parallel')],
+ reqlib('parallel'), reqlib('random')],
multimod_compile_and_run,
['2317',''])
diff --git a/testsuite/tests/concurrent/prog002/all.T b/testsuite/tests/concurrent/prog002/all.T
index de90966b0f..bef9de3bb7 100644
--- a/testsuite/tests/concurrent/prog002/all.T
+++ b/testsuite/tests/concurrent/prog002/all.T
@@ -1,12 +1,17 @@
# Test for bug #713, results in crashes in GHC prior to 20060315 with +RTS -N2
+# Add 'threaded2_hT' so that we have at least one test for bug #5127
+if (ghc_with_threaded_rts == 1 and ghc_with_smp == 1):
+ ways = ['threaded2_hT']
+else:
+ ways = []
+
# the conditions are fairly delicate. It must be compiled without optimisation,
# hence -O0:
test('concprog002',
- # Add 'threaded2_hT' so that we have at least one test for bug #5127
[only_ways(['threaded2','threaded2_hT']),
- extra_ways(['threaded2_hT']),
+ extra_ways(ways),
exit_code(1),
skip_if_fast,
reqlib('random'),
diff --git a/testsuite/tests/concurrent/should_run/5238.hs b/testsuite/tests/concurrent/should_run/5238.hs
index 87c15308ed..1de60c4e80 100644
--- a/testsuite/tests/concurrent/should_run/5238.hs
+++ b/testsuite/tests/concurrent/should_run/5238.hs
@@ -2,7 +2,7 @@
{-# LANGUAGE ScopedTypeVariables #-}
import Control.Exception
-import Control.Concurrent.STM
+import GHC.Conc
main = do
ms1 ↠getMaskingState
diff --git a/testsuite/tests/concurrent/should_run/5866.hs b/testsuite/tests/concurrent/should_run/5866.hs
new file mode 100644
index 0000000000..4650ea66e9
--- /dev/null
+++ b/testsuite/tests/concurrent/should_run/5866.hs
@@ -0,0 +1,10 @@
+import GHC.Conc
+import Control.Exception
+import System.IO.Unsafe
+import System.Timeout
+
+main :: IO ()
+main = do
+ x <- unsafeInterleaveIO $ atomically retry
+ _ <- timeout 500000 $ evaluate x
+ evaluate x
diff --git a/testsuite/tests/concurrent/should_run/5866.stderr b/testsuite/tests/concurrent/should_run/5866.stderr
new file mode 100644
index 0000000000..a4774f25ab
--- /dev/null
+++ b/testsuite/tests/concurrent/should_run/5866.stderr
@@ -0,0 +1 @@
+5866: thread blocked indefinitely in an STM transaction
diff --git a/testsuite/tests/concurrent/should_run/all.T b/testsuite/tests/concurrent/should_run/all.T
index 1daa7f2727..fc5ad45181 100644
--- a/testsuite/tests/concurrent/should_run/all.T
+++ b/testsuite/tests/concurrent/should_run/all.T
@@ -27,11 +27,10 @@ test('2910a', normal, compile_and_run, [''])
test('3279', normal, compile_and_run, [''])
# This test takes a long time with the default context switch interval
-test('3429', extra_run_opts('+RTS -i0.001 -RTS'), compile_and_run, [''])
+test('3429', extra_run_opts('+RTS -C0.001 -RTS'), compile_and_run, [''])
# without -O, goes into an infinite loop
-# GHCi cannot deterct the infinite loop, because the thread is always reachable
-# (see also conc033 and others). We should really fix this.
+# GHCi does not detect the infinite loop. We should really fix this.
test('4030', omit_ways('ghci'), compile_and_run, ['-O'])
# each of these runs for about a second
@@ -41,8 +40,7 @@ test('throwto002', [reqlib('random')], compile_and_run, [''])
test('throwto003', normal, compile_and_run, [''])
test('mask001', normal, compile_and_run, [''])
-# ghci does not generate the BlockedIndefinitely exceptions, so omit:
-test('mask002', omit_ways(['ghci']), compile_and_run, [''])
+test('mask002', normal, compile_and_run, [''])
test('async001', normal, compile_and_run, [''])
@@ -68,6 +66,7 @@ test('5558',
test('5421', normal, compile_and_run, [''])
test('5611', normal, compile_and_run, [''])
test('5238', normal, compile_and_run, [''])
+test('5866', exit_code(1), compile_and_run, [''])
# -----------------------------------------------------------------------------
# These tests we only do for a full run
@@ -109,8 +108,7 @@ test('conc019', compose(only_compiler_types(['ghc']),
extra_run_opts('+RTS -K16m -RTS')),
compile_and_run, [''])
test('conc020', only_compiler_types(['ghc']), compile_and_run, [''])
-test('conc021', compose(omit_ways(['ghci']), exit_code(1)),
- compile_and_run, [''])
+test('conc021', [ omit_ways(['ghci']), exit_code(1) ], compile_and_run, [''])
test('conc022', only_compiler_types(['ghc']), compile_and_run, [''])
# On Windows, the non-threaded RTS creates a real OS thread for each
@@ -140,9 +138,7 @@ test('conc030', compose(only_compiler_types(['ghc']),
test('conc031', normal, compile_and_run, [''])
test('conc032', only_compiler_types(['ghc']), compile_and_run, [''])
-
-# Omit for GHCi, because it just sits there waiting for you to press ^C
-test('conc033', omit_ways(['ghci']), compile_and_run, [''])
+test('conc033', normal, compile_and_run, [''])
# Omit for GHCi, because it just sits there waiting for you to press ^C
test('conc034', compose(only_compiler_types(['ghc']),
@@ -152,18 +148,29 @@ test('conc034', compose(only_compiler_types(['ghc']),
test('conc035', only_compiler_types(['ghc']), compile_and_run, [''])
-# Omit for GHCi: firstly GHCi doesn't have unsafe FFI calls, and secondly
-# the main thread cannot receive the deadlock exception because it can be
-# woken up by ^C.
-# Omit for threaded2: this test is really bogus and fails to do anything
-# sensible for more than one CPU.
-test('conc036', compose(skip_if_fast,
- compose(omit_ways(['ghci','threaded2']),
- only_compiler_types(['ghc']))), compile_and_run, [''])
+# conc036: now skipped entirely. This test attempts to check that
+# unsafe foreign calls block other threads, but doing that reliably is
+# probably impossible. The last straw was when it started failing on
+# Windows around 7.4.x.
+#
+# OLD comments about hacks we tried to make it work:
+# Omit for GHCi: firstly GHCi doesn't have unsafe FFI calls, and secondly
+# the main thread cannot receive the deadlock exception because it can be
+# woken up by ^C.
+# Omit for threaded2: this test is really bogus and fails to do anything
+# sensible for more than one CPU.
+#
+test('conc036', skip, compile_and_run, [''])
+
+
# Interrupting foreign calls only makes sense if we are threaded
-test('foreignInterruptible', composes([skip_if_fast,
- only_threaded_ways,
- only_compiler_types(['ghc'])]), compile_and_run, [''])
+test('foreignInterruptible', [skip_if_fast,
+ if_os('mingw32',expect_fail),
+ # I don't think we support interrupting Sleep()
+ # on Windows. --SDM
+ only_threaded_ways,
+ only_compiler_types(['ghc'])],
+ compile_and_run, [''])
test('conc037', only_ways(['threaded1','threaded2']), compile_and_run, [''])
test('conc038', only_ways(['threaded1','threaded2']), compile_and_run, [''])
@@ -210,3 +217,14 @@ test('conc067', ignore_output, compile_and_run, [''])
# than one CPU.
test('conc068', [ omit_ways('threaded2'), exit_code(1) ], compile_and_run, [''])
+if (ghc_with_smp == 0):
+ skip_if_not_smp = skip
+else:
+ skip_if_not_smp = normal
+
+test('setnumcapabilities001',
+ [ only_ways(['threaded1','threaded2']),
+ extra_run_opts('4 12 2000'),
+ reqlib('parallel'),
+ skip_if_not_smp ],
+ compile_and_run, [''])
diff --git a/testsuite/tests/concurrent/should_run/setnumcapabilities001.hs b/testsuite/tests/concurrent/should_run/setnumcapabilities001.hs
new file mode 100644
index 0000000000..1927cd8a62
--- /dev/null
+++ b/testsuite/tests/concurrent/should_run/setnumcapabilities001.hs
@@ -0,0 +1,34 @@
+import GHC.Conc
+import Control.Parallel
+import Control.Parallel.Strategies
+import System.Environment
+import System.IO
+import Control.Monad
+import Text.Printf
+import Data.Time.Clock
+
+main = do
+ [n,q,t] <- fmap (fmap read) getArgs
+ forkIO $ do
+ forM_ (cycle ([n,n-1..1] ++ [2..n-1])) $ \m -> do
+ setNumCapabilities m
+ threadDelay t
+ printf "%d" (nqueens q)
+
+nqueens :: Int -> Int
+nqueens nq = length (pargen 0 [])
+ where
+ safe :: Int -> Int -> [Int] -> Bool
+ safe x d [] = True
+ safe x d (q:l) = x /= q && x /= q+d && x /= q-d && safe x (d+1) l
+
+ gen :: [[Int]] -> [[Int]]
+ gen bs = [ (q:b) | b <- bs, q <- [1..nq], safe q 1 b ]
+
+ pargen :: Int -> [Int] -> [[Int]]
+ pargen n b
+ | n >= threshold = iterate gen [b] !! (nq - n)
+ | otherwise = concat bs
+ where bs = map (pargen (n+1)) (gen [b]) `using` parList rdeepseq
+
+ threshold = 3
diff --git a/testsuite/tests/concurrent/should_run/setnumcapabilities001.stdout b/testsuite/tests/concurrent/should_run/setnumcapabilities001.stdout
new file mode 100644
index 0000000000..6335c61df4
--- /dev/null
+++ b/testsuite/tests/concurrent/should_run/setnumcapabilities001.stdout
@@ -0,0 +1 @@
+14200 \ No newline at end of file
diff --git a/testsuite/tests/deSugar/should_compile/T5001.hs b/testsuite/tests/deSugar/should_compile/T5001.hs
new file mode 100644
index 0000000000..3b644cd8ad
--- /dev/null
+++ b/testsuite/tests/deSugar/should_compile/T5001.hs
@@ -0,0 +1,10 @@
+{-# LANGUAGE MultiParamTypeClasses #-}
+
+module T5001 where
+
+import T5001a
+
+data T = T
+
+instance Comorphism Float Int Char T
+
diff --git a/testsuite/tests/deSugar/should_compile/T5001a.hs b/testsuite/tests/deSugar/should_compile/T5001a.hs
new file mode 100644
index 0000000000..08c245cd61
--- /dev/null
+++ b/testsuite/tests/deSugar/should_compile/T5001a.hs
@@ -0,0 +1,16 @@
+{-# LANGUAGE MultiParamTypeClasses #-}
+
+module T5001a (Comorphism(..)) where
+
+class Show a => Comorphism a b c d where
+ map_sentence :: a -> b -> c -> Result d
+ map_sentence = f
+
+f :: Comorphism a b c d => a -> b -> c -> Result d
+f x _ _ = fatal_error ("Unsupported sentence translation " ++ show x)
+
+data Result a = Result String
+
+fatal_error :: String -> Result a
+fatal_error s = Result s
+
diff --git a/testsuite/tests/deSugar/should_compile/all.T b/testsuite/tests/deSugar/should_compile/all.T
index 40a4c242cb..35d5325fb9 100644
--- a/testsuite/tests/deSugar/should_compile/all.T
+++ b/testsuite/tests/deSugar/should_compile/all.T
@@ -89,3 +89,9 @@ test('T5252',
run_command,
['$MAKE -s --no-print-directory T5252'])
test('T5455', normal, compile, [''])
+test('T5001',
+ [only_ways(['optasm']),
+ only_compiler_types(['ghc']),
+ extra_clean(['T5001a.hi', 'T5001a.o'])],
+ multimod_compile,
+ ['T5001', '-v0'])
diff --git a/testsuite/tests/deSugar/should_run/T5472.stdout b/testsuite/tests/deSugar/should_run/T5472.stdout
new file mode 100644
index 0000000000..0519ecba6e
--- /dev/null
+++ b/testsuite/tests/deSugar/should_run/T5472.stdout
@@ -0,0 +1 @@
+ \ No newline at end of file
diff --git a/testsuite/tests/deSugar/should_run/T5742.hs b/testsuite/tests/deSugar/should_run/T5742.hs
new file mode 100644
index 0000000000..957b7c961d
--- /dev/null
+++ b/testsuite/tests/deSugar/should_run/T5742.hs
@@ -0,0 +1,105 @@
+{-# LANGUAGE DoRec #-}
+
+module Main where
+
+main = do { x <- foo; print x }
+foo :: IO Int
+foo = do rec
+ a1 <- return a2
+ a2 <- return a3
+ a3 <- return a4
+ a4 <- return a5
+ a5 <- return b1
+
+ b1 <- return b2
+ b2 <- return b3
+ b3 <- return b4
+ b4 <- return b5
+ b5 <- return c1
+
+ c1 <- return c2
+ c2 <- return c3
+ c3 <- return c4
+ c4 <- return c5
+ c5 <- return d1
+
+ d1 <- return d2
+ d2 <- return d3
+ d3 <- return d4
+ d4 <- return d5
+ d5 <- return a1x
+
+ a1x <- return a2x
+ a2x <- return a3x
+ a3x <- return a4x
+ a4x <- return a5x
+ a5x <- return b1x
+
+ b1x <- return b2x
+ b2x <- return b3x
+ b3x <- return b4x
+ b4x <- return b5x
+ b5x <- return c1x
+
+ c1x <- return c2x
+ c2x <- return c3x
+ c3x <- return c4x
+ c4x <- return c5x
+ c5x <- return d1x
+
+ d1x <- return d2x
+ d2x <- return d3x
+ d3x <- return d4x
+ d4x <- return d5x
+ d5x <- return a1y
+
+ a1y <- return a2y
+ a2y <- return a3y
+ a3y <- return a4y
+ a4y <- return a5y
+ a5y <- return b1y
+
+ b1y <- return b2y
+ b2y <- return b3y
+ b3y <- return b4y
+ b4y <- return b5y
+ b5y <- return c1y
+
+ c1y <- return c2y
+ c2y <- return c3y
+ c3y <- return c4y
+ c4y <- return c5y
+ c5y <- return d1y
+
+ d1y <- return d2y
+ d2y <- return d3y
+ d3y <- return d4y
+ d4y <- return d5y
+ d5y <- return a1z
+
+ a1z <- return a2z
+ a2z <- return a3z
+ a3z <- return a4z
+ a4z <- return a5z
+ a5z <- return b1z
+
+ b1z <- return b2z
+ b2z <- return b3z
+ b3z <- return b4z
+ b4z <- return b5z
+ b5z <- return c1z
+
+ c1z <- return c2z
+ c2z <- return c3z
+ c3z <- return c4z
+ c4z <- return c5z
+ c5z <- return d1z
+
+ d1z <- return d2z
+ d2z <- return d3z
+ d3z <- return d4z
+ d4z <- return d5z
+ d5z <- return 1
+
+ return a4
+
diff --git a/testsuite/tests/deSugar/should_run/T5742.stdout b/testsuite/tests/deSugar/should_run/T5742.stdout
new file mode 100644
index 0000000000..d00491fd7e
--- /dev/null
+++ b/testsuite/tests/deSugar/should_run/T5742.stdout
@@ -0,0 +1 @@
+1
diff --git a/testsuite/tests/deSugar/should_run/all.T b/testsuite/tests/deSugar/should_run/all.T
index 9c8664d64b..92666b8877 100644
--- a/testsuite/tests/deSugar/should_run/all.T
+++ b/testsuite/tests/deSugar/should_run/all.T
@@ -37,3 +37,4 @@ test('mc05', normal, compile_and_run, [''])
test('mc06', normal, compile_and_run, [''])
test('mc07', normal, compile_and_run, [''])
test('mc08', normal, compile_and_run, [''])
+test('T5742', normal, compile_and_run, [''])
diff --git a/testsuite/tests/deSugar/should_run/dsrun017.hs b/testsuite/tests/deSugar/should_run/dsrun017.hs
index 877db7823c..7a8d16efe5 100644
--- a/testsuite/tests/deSugar/should_run/dsrun017.hs
+++ b/testsuite/tests/deSugar/should_run/dsrun017.hs
@@ -1,13 +1,13 @@
--- Tests grouping WITH a by clause but WITHOUT a using clause
+-- Tests grouping WITH a by clause
{-# OPTIONS_GHC -XTransformListComp #-}
module Main where
-import GHC.Exts(the)
+import GHC.Exts(the,groupWith)
main = putStrLn (show output)
where
output = [ (the dept, sum salary, name)
| (dept, salary, name) <- [("A", 1, "Bob"), ("B", 2, "Fred"), ("A", 5, "Jim"), ("A", 9, "Jim")]
- , then group by dept ] \ No newline at end of file
+ , then group by dept using groupWith ] \ No newline at end of file
diff --git a/testsuite/tests/deSugar/should_run/dsrun022.hs b/testsuite/tests/deSugar/should_run/dsrun022.hs
index dbbd906ce8..6119675e98 100644
--- a/testsuite/tests/deSugar/should_run/dsrun022.hs
+++ b/testsuite/tests/deSugar/should_run/dsrun022.hs
@@ -4,7 +4,7 @@
module Main where
-import GHC.Exts(sortWith, the)
+import GHC.Exts(sortWith, the, groupWith)
employees = [ ("Simon", "MS", 80)
, ("Erik", "MS", 100)
@@ -16,7 +16,7 @@ main = putStrLn (show can_still_use_group_function) >> putStrLn (show output)
where
output = [ (the dept, map sum salary, (show x) ++ " and " ++ (show y))
| (name, dept, salary) <- employees
- , then group by dept
+ , then group by dept using groupWith
, x <- [1, 2, 3]
, y <- [4, 5, 6]
, then sortWith by sum salary
diff --git a/testsuite/tests/deSugar/should_run/mc01.hs b/testsuite/tests/deSugar/should_run/mc01.hs
index cf5ca1a0e9..63db170197 100644
--- a/testsuite/tests/deSugar/should_run/mc01.hs
+++ b/testsuite/tests/deSugar/should_run/mc01.hs
@@ -4,7 +4,7 @@
module Main where
-import GHC.Exts(sortWith, the)
+import GHC.Exts(sortWith, the, groupWith)
employees = [ ("Simon", "MS", 80)
, ("Erik", "MS", 100)
@@ -16,7 +16,7 @@ main = putStrLn (show can_still_use_group_function) >> putStrLn (show output)
where
output = [ (the dept, map sum salary, (show x) ++ " and " ++ (show y))
| (name, dept, salary) <- employees
- , then group by dept
+ , then group by dept using groupWith
, x <- [1, 2, 3]
, y <- [4, 5, 6]
, then sortWith by sum salary
diff --git a/testsuite/tests/deSugar/should_run/mc08.hs b/testsuite/tests/deSugar/should_run/mc08.hs
index 24dd3beb4c..d146bf909f 100644
--- a/testsuite/tests/deSugar/should_run/mc08.hs
+++ b/testsuite/tests/deSugar/should_run/mc08.hs
@@ -1,13 +1,13 @@
--- Tests grouping WITH a by clause but WITHOUT a using clause
+-- Tests grouping WITH a by clause
{-# OPTIONS_GHC -XMonadComprehensions -XTransformListComp #-}
module Main where
-import GHC.Exts(the)
+import GHC.Exts(the, groupWith)
main = putStrLn (show output)
where
output = [ (the dept, sum salary, name)
| (dept, salary, name) <- [("A", 1, "Bob"), ("B", 2, "Fred"), ("A", 5, "Jim"), ("A", 9, "Jim")]
- , then group by dept ]
+ , then group by dept using groupWith]
diff --git a/testsuite/tests/deriving/should_compile/T3057.hs b/testsuite/tests/deriving/should_compile/T3057.hs
index 0e9aef7814..c0b064eefe 100644
--- a/testsuite/tests/deriving/should_compile/T3057.hs
+++ b/testsuite/tests/deriving/should_compile/T3057.hs
@@ -1,6 +1,8 @@
{-# LANGUAGE StandaloneDeriving, DeriveFunctor #-}
module T3057 where
-deriving instance Functor (Either a)
+import T3057A
+
+deriving instance Functor (MyType a)
diff --git a/testsuite/tests/deriving/should_compile/T3057A.hs b/testsuite/tests/deriving/should_compile/T3057A.hs
new file mode 100644
index 0000000000..410615db0c
--- /dev/null
+++ b/testsuite/tests/deriving/should_compile/T3057A.hs
@@ -0,0 +1,4 @@
+
+module T3057A where
+
+data MyType a b = C1 a | C2 b
diff --git a/testsuite/tests/deriving/should_compile/all.T b/testsuite/tests/deriving/should_compile/all.T
index 22353ab2ea..f6b1ef401e 100644
--- a/testsuite/tests/deriving/should_compile/all.T
+++ b/testsuite/tests/deriving/should_compile/all.T
@@ -18,7 +18,7 @@ test('drv021', normal, compile, [''])
test('deriving-1935', normal, compile, [''])
test('T2378', normal, compile, [''])
test('T2856', normal, compile, [''])
-test('T3057', normal, compile, [''])
+test('T3057', extra_clean(['T3057A.o', 'T3057A.hi']), multimod_compile, ['T3057', '-v0'])
test('T3012', normal, compile, [''])
test('T3965', normal, compile, [''])
test('T4220', normal, compile, [''])
diff --git a/testsuite/tests/deriving/should_fail/T2604.stderr b/testsuite/tests/deriving/should_fail/T2604.stderr
index fa09654c5b..6cda6c36c6 100644
--- a/testsuite/tests/deriving/should_fail/T2604.stderr
+++ b/testsuite/tests/deriving/should_fail/T2604.stderr
@@ -2,7 +2,7 @@
T2604.hs:7:35:
Can't make a derived instance of `Typeable (DList a)':
You need -XDeriveDataTypeable to derive an instance for this class
- In the data type declaration for `DList'
+ In the data declaration for `DList'
T2604.hs:9:38:
Can't make a derived instance of `Typeable (NList a)':
diff --git a/testsuite/tests/deriving/should_fail/T2701.stderr b/testsuite/tests/deriving/should_fail/T2701.stderr
index d1a291336c..150add58c6 100644
--- a/testsuite/tests/deriving/should_fail/T2701.stderr
+++ b/testsuite/tests/deriving/should_fail/T2701.stderr
@@ -1,5 +1,5 @@
-
-T2701.hs:10:32:
- Can't make a derived instance of `Data Foo':
- Don't know how to derive `Data' for type `Int#'
- In the data type declaration for `Foo'
+
+T2701.hs:10:32:
+ Can't make a derived instance of `Data Foo':
+ Don't know how to derive `Data' for type `Int#'
+ In the data declaration for `Foo'
diff --git a/testsuite/tests/deriving/should_fail/T3101.stderr b/testsuite/tests/deriving/should_fail/T3101.stderr
index 34f423daff..b491759381 100644
--- a/testsuite/tests/deriving/should_fail/T3101.stderr
+++ b/testsuite/tests/deriving/should_fail/T3101.stderr
@@ -1,6 +1,6 @@
-
-T3101.hs:9:12:
- Can't make a derived instance of `Show Boom':
- Constructor `Boom' must have a Haskell-98 type
- Possible fix: use a standalone deriving declaration instead
- In the data type declaration for `Boom'
+
+T3101.hs:9:12:
+ Can't make a derived instance of `Show Boom':
+ Constructor `Boom' must have a Haskell-98 type
+ Possible fix: use a standalone deriving declaration instead
+ In the data declaration for `Boom'
diff --git a/testsuite/tests/deriving/should_fail/T5287.stderr b/testsuite/tests/deriving/should_fail/T5287.stderr
index 4067522580..93ea7d6cb7 100644
--- a/testsuite/tests/deriving/should_fail/T5287.stderr
+++ b/testsuite/tests/deriving/should_fail/T5287.stderr
@@ -1,7 +1,8 @@
-
-T5287.hs:6:29:
- Ambiguous type variable `oops' in the constraint:
- (A e oops)
- arising from the 'deriving' clause of a data type declaration
- Probable fix: use a 'standalone deriving' declaration instead
- When deriving the instance for (Read (E e))
+
+T5287.hs:6:29:
+ No instance for (A e oops)
+ arising from the 'deriving' clause of a data type declaration
+ Possible fix:
+ use a standalone 'deriving instance' declaration,
+ so you can specify the instance context yourself
+ When deriving the instance for (Read (E e))
diff --git a/testsuite/tests/deriving/should_fail/T5478.stderr b/testsuite/tests/deriving/should_fail/T5478.stderr
index f6f00d5364..a49b188da7 100644
--- a/testsuite/tests/deriving/should_fail/T5478.stderr
+++ b/testsuite/tests/deriving/should_fail/T5478.stderr
@@ -1,5 +1,5 @@
-
-T5478.hs:6:38:
- Can't make a derived instance of `Show Foo':
- Don't know how to derive `Show' for type `ByteArray#'
- In the data type declaration for `Foo'
+
+T5478.hs:6:38:
+ Can't make a derived instance of `Show Foo':
+ Don't know how to derive `Show' for type `ByteArray#'
+ In the data declaration for `Foo'
diff --git a/testsuite/tests/deriving/should_fail/T5686.hs b/testsuite/tests/deriving/should_fail/T5686.hs
new file mode 100644
index 0000000000..425a13c839
--- /dev/null
+++ b/testsuite/tests/deriving/should_fail/T5686.hs
@@ -0,0 +1,7 @@
+{-# LANGUAGE TypeFamilies, DeriveFunctor #-}
+module Main where
+
+data U a = U (G a) deriving Functor
+
+class A a where
+ type G a
diff --git a/testsuite/tests/deriving/should_fail/T5686.stderr b/testsuite/tests/deriving/should_fail/T5686.stderr
new file mode 100644
index 0000000000..27f998fe9d
--- /dev/null
+++ b/testsuite/tests/deriving/should_fail/T5686.stderr
@@ -0,0 +1,5 @@
+
+T5686.hs:4:29:
+ Can't make a derived instance of `Functor U':
+ Constructor `U' must use the type variable only as the last argument of a data type
+ In the data declaration for `U'
diff --git a/testsuite/tests/deriving/should_fail/T5922.hs b/testsuite/tests/deriving/should_fail/T5922.hs
new file mode 100644
index 0000000000..c7162caf96
--- /dev/null
+++ b/testsuite/tests/deriving/should_fail/T5922.hs
@@ -0,0 +1,3 @@
+module T5922 where
+
+data Proposition = Proposition deriving (show)
diff --git a/testsuite/tests/deriving/should_fail/T5922.stderr b/testsuite/tests/deriving/should_fail/T5922.stderr
new file mode 100644
index 0000000000..8b8de18d28
--- /dev/null
+++ b/testsuite/tests/deriving/should_fail/T5922.stderr
@@ -0,0 +1,4 @@
+
+T5922.hs:3:42:
+ Illegal deriving item `show'
+ In the data declaration for `Proposition'
diff --git a/testsuite/tests/deriving/should_fail/all.T b/testsuite/tests/deriving/should_fail/all.T
index ff6503784a..5ddb2bd373 100644
--- a/testsuite/tests/deriving/should_fail/all.T
+++ b/testsuite/tests/deriving/should_fail/all.T
@@ -34,4 +34,6 @@ test('T3834', normal, compile_fail, [''])
test('T4528', normal, compile_fail, [''])
test('T5287', normal, compile_fail, [''])
test('T5478', normal, compile_fail, [''])
+test('T5686', normal, compile_fail, [''])
+test('T5922', normal, compile_fail, [''])
diff --git a/testsuite/tests/deriving/should_fail/drvfail-foldable-traversable1.hs b/testsuite/tests/deriving/should_fail/drvfail-foldable-traversable1.hs
index ced3f98c63..84a0d75993 100644
--- a/testsuite/tests/deriving/should_fail/drvfail-foldable-traversable1.hs
+++ b/testsuite/tests/deriving/should_fail/drvfail-foldable-traversable1.hs
@@ -14,8 +14,8 @@ data Trivial2 a = Trivial2 a
-- Foldable with function type
data Infinite a = Infinite (Int -> a)
- deriving (Functor,Foldable,Traversable)
+ deriving (Functor,Foldable)
-- Foldable with function type
data Cont r a = Cont ((a -> r) -> r)
- deriving (Functor,Foldable,Traversable)
+ deriving (Functor,Traversable)
diff --git a/testsuite/tests/deriving/should_fail/drvfail-foldable-traversable1.stderr b/testsuite/tests/deriving/should_fail/drvfail-foldable-traversable1.stderr
index ecd20e8372..b9d1eb5591 100644
--- a/testsuite/tests/deriving/should_fail/drvfail-foldable-traversable1.stderr
+++ b/testsuite/tests/deriving/should_fail/drvfail-foldable-traversable1.stderr
@@ -1,38 +1,28 @@
-
-drvfail-foldable-traversable1.hs:9:23:
- No instance for (Functor Trivial1)
- arising from the 'deriving' clause of a data type declaration
- Possible fix:
- add an instance declaration for (Functor Trivial1)
- or use a standalone 'deriving instance' declaration,
- so you can specify the instance context yourself
- When deriving the instance for (Traversable Trivial1)
-
-drvfail-foldable-traversable1.hs:13:22:
- No instance for (Foldable Trivial2)
- arising from the 'deriving' clause of a data type declaration
- Possible fix:
- add an instance declaration for (Foldable Trivial2)
- or use a standalone 'deriving instance' declaration,
- so you can specify the instance context yourself
- When deriving the instance for (Traversable Trivial2)
-
-drvfail-foldable-traversable1.hs:17:22:
- Can't make a derived instance of `Foldable Infinite':
- Constructor `Infinite' must not contain function types
- In the data type declaration for `Infinite'
-
-drvfail-foldable-traversable1.hs:17:31:
- Can't make a derived instance of `Traversable Infinite':
- Constructor `Infinite' must not contain function types
- In the data type declaration for `Infinite'
-
-drvfail-foldable-traversable1.hs:21:22:
- Can't make a derived instance of `Foldable (Cont r)':
- Constructor `Cont' must not contain function types
- In the data type declaration for `Cont'
-
-drvfail-foldable-traversable1.hs:21:31:
- Can't make a derived instance of `Traversable (Cont r)':
- Constructor `Cont' must not contain function types
- In the data type declaration for `Cont'
+
+drvfail-foldable-traversable1.hs:9:23:
+ No instance for (Functor Trivial1)
+ arising from the 'deriving' clause of a data type declaration
+ Possible fix:
+ add an instance declaration for (Functor Trivial1)
+ or use a standalone 'deriving instance' declaration,
+ so you can specify the instance context yourself
+ When deriving the instance for (Traversable Trivial1)
+
+drvfail-foldable-traversable1.hs:13:22:
+ No instance for (Foldable Trivial2)
+ arising from the 'deriving' clause of a data type declaration
+ Possible fix:
+ add an instance declaration for (Foldable Trivial2)
+ or use a standalone 'deriving instance' declaration,
+ so you can specify the instance context yourself
+ When deriving the instance for (Traversable Trivial2)
+
+drvfail-foldable-traversable1.hs:17:22:
+ Can't make a derived instance of `Foldable Infinite':
+ Constructor `Infinite' must not contain function types
+ In the data declaration for `Infinite'
+
+drvfail-foldable-traversable1.hs:21:22:
+ Can't make a derived instance of `Traversable (Cont r)':
+ Constructor `Cont' must not contain function types
+ In the data declaration for `Cont'
diff --git a/testsuite/tests/deriving/should_fail/drvfail-functor1.stderr b/testsuite/tests/deriving/should_fail/drvfail-functor1.stderr
index d221f99f9d..54632ba05e 100644
--- a/testsuite/tests/deriving/should_fail/drvfail-functor1.stderr
+++ b/testsuite/tests/deriving/should_fail/drvfail-functor1.stderr
@@ -2,4 +2,4 @@
drvfail-functor1.hs:6:14:
Can't make a derived instance of `Functor List':
You need -XDeriveFunctor to derive an instance for this class
- In the data type declaration for `List'
+ In the data declaration for `List'
diff --git a/testsuite/tests/deriving/should_fail/drvfail-functor2.stderr b/testsuite/tests/deriving/should_fail/drvfail-functor2.stderr
index 7ce404666f..9c830aaec4 100644
--- a/testsuite/tests/deriving/should_fail/drvfail-functor2.stderr
+++ b/testsuite/tests/deriving/should_fail/drvfail-functor2.stderr
@@ -1,32 +1,32 @@
-
-drvfail-functor2.hs:1:29:
- Warning: -XDatatypeContexts is deprecated: It was widely considered a misfeature, and has been removed from the Haskell language.
-
-drvfail-functor2.hs:7:14:
- Can't make a derived instance of `Functor InFunctionArgument':
- Constructor `InFunctionArgument' must not use the type variable in a function argument
- In the newtype declaration for `InFunctionArgument'
-
-drvfail-functor2.hs:10:14:
- Can't make a derived instance of `Functor OnSecondArg':
- Constructor `OnSecondArg' must not use the type variable in an argument other than the last
- In the newtype declaration for `OnSecondArg'
-
-drvfail-functor2.hs:15:14:
- Cannot derive well-kinded instance of form `Functor (NoArguments ...)'
- Class `Functor' expects an argument of kind `* -> *'
- In the newtype declaration for `NoArguments'
-
-drvfail-functor2.hs:20:14:
- Can't make a derived instance of `Functor StupidConstraint':
- Data type `StupidConstraint' must not have a class context (Eq a)
- In the data type declaration for `StupidConstraint'
-
-drvfail-functor2.hs:26:14:
- No instance for (Functor NoFunctor)
- arising from the 'deriving' clause of a data type declaration
- Possible fix:
- add an instance declaration for (Functor NoFunctor)
- or use a standalone 'deriving instance' declaration,
- so you can specify the instance context yourself
- When deriving the instance for (Functor UseNoFunctor)
+
+drvfail-functor2.hs:1:29: Warning:
+ -XDatatypeContexts is deprecated: It was widely considered a misfeature, and has been removed from the Haskell language.
+
+drvfail-functor2.hs:7:14:
+ Can't make a derived instance of `Functor InFunctionArgument':
+ Constructor `InFunctionArgument' must not use the type variable in a function argument
+ In the newtype declaration for `InFunctionArgument'
+
+drvfail-functor2.hs:10:14:
+ Can't make a derived instance of `Functor OnSecondArg':
+ Constructor `OnSecondArg' must use the type variable only as the last argument of a data type
+ In the newtype declaration for `OnSecondArg'
+
+drvfail-functor2.hs:15:14:
+ Cannot derive well-kinded instance of form `Functor (NoArguments ...)'
+ Class `Functor' expects an argument of kind `* -> *'
+ In the newtype declaration for `NoArguments'
+
+drvfail-functor2.hs:20:14:
+ Can't make a derived instance of `Functor StupidConstraint':
+ Data type `StupidConstraint' must not have a class context (Eq a)
+ In the data declaration for `StupidConstraint'
+
+drvfail-functor2.hs:26:14:
+ No instance for (Functor NoFunctor)
+ arising from the 'deriving' clause of a data type declaration
+ Possible fix:
+ add an instance declaration for (Functor NoFunctor)
+ or use a standalone 'deriving instance' declaration,
+ so you can specify the instance context yourself
+ When deriving the instance for (Functor UseNoFunctor)
diff --git a/testsuite/tests/deriving/should_fail/drvfail005.stderr b/testsuite/tests/deriving/should_fail/drvfail005.stderr
index e27f3c1fd2..327eb7c3ce 100644
--- a/testsuite/tests/deriving/should_fail/drvfail005.stderr
+++ b/testsuite/tests/deriving/should_fail/drvfail005.stderr
@@ -2,4 +2,4 @@
drvfail005.hs:4:13:
Can't make a derived instance of `Show a (Test a)':
`Show a' is not a class
- In the data type declaration for `Test'
+ In the data declaration for `Test'
diff --git a/testsuite/tests/deriving/should_fail/drvfail010.stderr b/testsuite/tests/deriving/should_fail/drvfail010.stderr
index a61fb4892f..cf2baa644e 100644
--- a/testsuite/tests/deriving/should_fail/drvfail010.stderr
+++ b/testsuite/tests/deriving/should_fail/drvfail010.stderr
@@ -1,11 +1,11 @@
-
-drvfail010.hs:6:42:
- Can't make a derived instance of
- `Typeable (A a b c d e f g h i j)':
- `A' must have 7 or fewer arguments
- In the data type declaration for `A'
-
-drvfail010.hs:9:32:
- Can't make a derived instance of `Typeable (B a b)':
- `B' must only have arguments of kind `*'
- In the data type declaration for `B'
+
+drvfail010.hs:6:42:
+ Can't make a derived instance of
+ `Typeable (A a b c d e f g h i j)':
+ `A' must have 7 or fewer arguments
+ In the data declaration for `A'
+
+drvfail010.hs:9:32:
+ Can't make a derived instance of `Typeable (B a b)':
+ `B' must only have arguments of kind `*'
+ In the data declaration for `B'
diff --git a/testsuite/tests/deriving/should_fail/drvfail011.stderr b/testsuite/tests/deriving/should_fail/drvfail011.stderr
index 80e486628b..9bb04bfde7 100644
--- a/testsuite/tests/deriving/should_fail/drvfail011.stderr
+++ b/testsuite/tests/deriving/should_fail/drvfail011.stderr
@@ -1,7 +1,7 @@
drvfail011.hs:8:1:
- No instance for (Eq a)
- arising from a use of `=='
+ No instance for (Eq a) arising from a use of `=='
+ Possible fix: add (Eq a) to the context of the instance declaration
In the expression: ((a1 == b1))
In an equation for `==': == (T1 a1) (T1 b1) = ((a1 == b1))
When typechecking the code for `=='
diff --git a/testsuite/tests/deriving/should_fail/drvfail014.stderr b/testsuite/tests/deriving/should_fail/drvfail014.stderr
index 865a78c44e..47b4aabf4b 100644
--- a/testsuite/tests/deriving/should_fail/drvfail014.stderr
+++ b/testsuite/tests/deriving/should_fail/drvfail014.stderr
@@ -1,9 +1,9 @@
-
-drvfail014.hs:8:28:
- Use deriving( Typeable ) on a data type declaration
- In the data type declaration for `T1'
-
-drvfail014.hs:12:1:
- Derived typeable instance must be of form (Typeable2 T2)
- In the stand-alone deriving instance for
- `(Typeable a, Typeable b) => Typeable (T2 a b)'
+
+drvfail014.hs:8:28:
+ Use deriving( Typeable ) on a data type declaration
+ In the data declaration for `T1'
+
+drvfail014.hs:12:1:
+ Derived typeable instance must be of form (Typeable2 T2)
+ In the stand-alone deriving instance for
+ `(Typeable a, Typeable b) => Typeable (T2 a b)'
diff --git a/testsuite/tests/deriving/should_fail/drvfail016.hs-boot b/testsuite/tests/deriving/should_fail/drvfail016.hs-boot
index b3a388f736..6f3ed16636 100644
--- a/testsuite/tests/deriving/should_fail/drvfail016.hs-boot
+++ b/testsuite/tests/deriving/should_fail/drvfail016.hs-boot
@@ -3,5 +3,5 @@
module A where
-data D
+data D = D
deriving Show
diff --git a/testsuite/tests/deriving/should_fail/drvfail016.stderr b/testsuite/tests/deriving/should_fail/drvfail016.stderr
index 1bcb7363b1..bba7d0f0c4 100644
--- a/testsuite/tests/deriving/should_fail/drvfail016.stderr
+++ b/testsuite/tests/deriving/should_fail/drvfail016.stderr
@@ -1,4 +1,4 @@
-
-drvfail016.hs-boot:6:1:
- Deriving not permitted in hs-boot file
- Use an instance declaration instead
+
+drvfail016.hs-boot:7:14:
+ Deriving not permitted in hs-boot file
+ Use an instance declaration instead
diff --git a/testsuite/tests/deriving/should_run/T5712.hs b/testsuite/tests/deriving/should_run/T5712.hs
new file mode 100644
index 0000000000..a582b10e20
--- /dev/null
+++ b/testsuite/tests/deriving/should_run/T5712.hs
@@ -0,0 +1,14 @@
+{-# LANGUAGE GADTs #-}
+
+module Main where
+
+infix 5 :*:
+data T a where
+ (:*:) :: Int -> a -> T a
+ (:+:) :: Char -> T a -> T a
+ deriving( Show )
+
+ -- The Show should print (:*:) infix, but (:+:) prefix,
+ -- since it lacks a fixity declaration
+
+main = print ('x' :+: (3 :*: True))
diff --git a/testsuite/tests/deriving/should_run/T5712.stdout b/testsuite/tests/deriving/should_run/T5712.stdout
new file mode 100644
index 0000000000..42f8ceada1
--- /dev/null
+++ b/testsuite/tests/deriving/should_run/T5712.stdout
@@ -0,0 +1 @@
+(:+:) 'x' (3 :*: True)
diff --git a/testsuite/tests/deriving/should_run/all.T b/testsuite/tests/deriving/should_run/all.T
index dba61e0ec3..480bdbada8 100644
--- a/testsuite/tests/deriving/should_run/all.T
+++ b/testsuite/tests/deriving/should_run/all.T
@@ -33,4 +33,5 @@ test('T4136', normal, compile_and_run, [''])
test('T4528a', normal, compile_and_run, [''])
test('T5041', normal, compile_and_run, [''])
test('T5628', exit_code(1), compile_and_run, [''])
+test('T5712', normal, compile_and_run, [''])
diff --git a/testsuite/tests/dph/classes/DefsVect.hs b/testsuite/tests/dph/classes/DefsVect.hs
new file mode 100644
index 0000000000..f6ed5544e2
--- /dev/null
+++ b/testsuite/tests/dph/classes/DefsVect.hs
@@ -0,0 +1,53 @@
+{-# LANGUAGE ParallelArrays #-}
+{-# OPTIONS_GHC -fvectorise #-}
+
+module DefsVect where
+
+import Data.Array.Parallel
+
+
+-- {-# VECTORISE SCALAR instance Eq Char #-}
+-- {-# VECTORISE SCALAR instance Eq Float #-}
+-- {-# VECTORISE SCALAR instance Ord Char #-}
+-- {-# VECTORISE SCALAR instance Ord Float #-}
+
+
+data MyBool = MyTrue | MyFalse
+
+class Eq a => Cmp a where
+ cmp :: a -> a -> Bool
+
+-- FIXME:
+-- instance Cmp Int where
+-- cmp = (==)
+
+-- isFive :: (Eq a, Num a) => a -> Bool
+isFive :: Int -> Bool
+isFive x = x == 5
+
+isEq :: Eq a => a -> Bool
+isEq x = x == x
+
+fiveEq :: Int -> Bool
+fiveEq x = isFive x && isEq x
+
+cmpArrs :: PArray Int -> PArray Int -> Bool
+{-# NOINLINE cmpArrs #-}
+cmpArrs v w = cmpArrs' (fromPArrayP v) (fromPArrayP w)
+
+cmpArrs' :: [:Int:] -> [:Int:] -> Bool
+cmpArrs' xs ys = andP [:x == y | x <- xs | y <- ys:]
+
+isFives :: PArray Int -> Bool
+{-# NOINLINE isFives #-}
+isFives xs = isFives' (fromPArrayP xs)
+
+isFives' :: [:Int:] -> Bool
+isFives' xs = andP (mapP isFive xs)
+
+isEqs :: PArray Int -> Bool
+{-# NOINLINE isEqs #-}
+isEqs xs = isEqs' (fromPArrayP xs)
+
+isEqs' :: [:Int:] -> Bool
+isEqs' xs = andP (mapP isEq xs)
diff --git a/testsuite/tests/dph/classes/Main.hs b/testsuite/tests/dph/classes/Main.hs
new file mode 100644
index 0000000000..471c0cc8e0
--- /dev/null
+++ b/testsuite/tests/dph/classes/Main.hs
@@ -0,0 +1,15 @@
+module Main where
+
+import Data.Array.Parallel.PArray (PArray, fromList)
+
+import DefsVect
+
+main
+ = let v = fromList [1..10]
+ w = fromList [11..20]
+ in
+ print $ [ fiveEq 5
+ , cmpArrs v w
+ , isFives (fromList $ replicate 10 5)
+ , isEqs v
+ ]
diff --git a/testsuite/tests/lib/CPUTime/Makefile b/testsuite/tests/dph/classes/Makefile
index 9101fbd40a..9101fbd40a 100644
--- a/testsuite/tests/lib/CPUTime/Makefile
+++ b/testsuite/tests/dph/classes/Makefile
diff --git a/testsuite/tests/dph/classes/dph-classes-copy-fast.stdout b/testsuite/tests/dph/classes/dph-classes-copy-fast.stdout
new file mode 100644
index 0000000000..bf8e7b9e4b
--- /dev/null
+++ b/testsuite/tests/dph/classes/dph-classes-copy-fast.stdout
@@ -0,0 +1 @@
+[True,False,True,True]
diff --git a/testsuite/tests/dph/classes/dph-classes-vseg-fast.stdout b/testsuite/tests/dph/classes/dph-classes-vseg-fast.stdout
new file mode 100644
index 0000000000..bf8e7b9e4b
--- /dev/null
+++ b/testsuite/tests/dph/classes/dph-classes-vseg-fast.stdout
@@ -0,0 +1 @@
+[True,False,True,True]
diff --git a/testsuite/tests/dph/classes/dph-classes.T b/testsuite/tests/dph/classes/dph-classes.T
new file mode 100644
index 0000000000..425d6ab10c
--- /dev/null
+++ b/testsuite/tests/dph/classes/dph-classes.T
@@ -0,0 +1,9 @@
+test ('dph-classes-vseg-fast'
+ , [ alone
+ , extra_clean(['Main.o', 'Main.hi', 'DefsVect.hi', 'DefsVect.o'])
+ , reqlib('dph-lifted-vseg')
+ , reqlib('dph-prim-par')
+ , only_ways(['normal', 'threaded1', 'threaded2']) ]
+ , multimod_compile_and_run
+ , [ 'Main'
+ , '-O -fno-enable-rewrite-rules -package dph-lifted-vseg'])
diff --git a/testsuite/tests/dph/diophantine/DiophantineVect.hs b/testsuite/tests/dph/diophantine/DiophantineVect.hs
index b6f34eb397..5851eb5e39 100644
--- a/testsuite/tests/dph/diophantine/DiophantineVect.hs
+++ b/testsuite/tests/dph/diophantine/DiophantineVect.hs
@@ -3,7 +3,7 @@
module DiophantineVect (solution3) where
import Data.Array.Parallel
-import Data.Array.Parallel.Prelude.Int
+import Data.Array.Parallel.Prelude.Int as I
import qualified Prelude as P
@@ -13,19 +13,19 @@ solution3'
primes = [: 2,3,5,7,11,13,17,19,23,29,31,37,41,43,47,53,59,61,67,71,73 :]
a `cutTo` b = sliceP 0 (lengthP b) a
sumpri xx = productP [: pow p x | p <- primes `cutTo` xx | x <- xx :]
- distinct xx = productP [: x + 1 | x <- xx :]
+ distinct xx = productP [: x I.+ 1 | x <- xx :]
series :: [:Int:] -> Int -> [:[:Int:]:]
series xs n
| n == 1 = [: [: 0 :] :]
| otherwise = [: [: x :] +:+ ps
| x <- xs
- , ps <- series (enumFromToP 0 x) (n-1) :]
+ , ps <- series (I.enumFromToP 0 x) (n I.- 1) :]
prob x y
= let xx = [: (sumpri m ,m)
- | m <- series (enumFromToP 1 3) x
- , distinct [: x * 2 | x <- m :] > y :]
+ | m <- series (I.enumFromToP 1 3) x
+ , distinct [: x I.* 2 | x <- m :] > y :]
i = minIndexP [: a | (a, b) <- xx :]
in xx !: i
in
diff --git a/testsuite/tests/dph/diophantine/dph-diophantine-fast.stdout b/testsuite/tests/dph/diophantine/dph-diophantine-copy-fast.stdout
index 3fe0f66bd1..3fe0f66bd1 100644
--- a/testsuite/tests/dph/diophantine/dph-diophantine-fast.stdout
+++ b/testsuite/tests/dph/diophantine/dph-diophantine-copy-fast.stdout
diff --git a/testsuite/tests/dph/diophantine/dph-diophantine-opt.stdout b/testsuite/tests/dph/diophantine/dph-diophantine-copy-opt.stdout
index 3fe0f66bd1..3fe0f66bd1 100644
--- a/testsuite/tests/dph/diophantine/dph-diophantine-opt.stdout
+++ b/testsuite/tests/dph/diophantine/dph-diophantine-copy-opt.stdout
diff --git a/testsuite/tests/dph/diophantine/dph-diophantine.T b/testsuite/tests/dph/diophantine/dph-diophantine.T
index b926181d15..036c594e72 100644
--- a/testsuite/tests/dph/diophantine/dph-diophantine.T
+++ b/testsuite/tests/dph/diophantine/dph-diophantine.T
@@ -1,21 +1,20 @@
-test ('dph-diophantine-opt'
+test ('dph-diophantine-copy-opt'
, [ alone
, skip_if_fast
, reqlib('dph-lifted-copy')
, reqlib('dph-prim-par')
- , expect_broken(5065)
, only_ways(['normal', 'threaded1', 'threaded2']) ]
, multimod_compile_and_run
, [ 'Main'
, '-Odph -package dph-lifted-copy'])
-test ('dph-diophantine-fast'
- , [ reqlib('dph-lifted-copy')
+test ('dph-diophantine-copy-fast'
+ , [ alone
+ , reqlib('dph-lifted-copy')
, reqlib('dph-prim-par')
, extra_clean(['DiophantineVect.hi', 'DiophantineVect.o',
'Main.hi', 'Main.o'])
- , expect_broken(5613)
, only_ways(['normal', 'threaded1', 'threaded2']) ]
, multimod_compile_and_run
, [ 'Main'
diff --git a/testsuite/tests/dph/dotp/DotPVect.hs b/testsuite/tests/dph/dotp/DotPVect.hs
index 5b623017d9..3fc9084245 100644
--- a/testsuite/tests/dph/dotp/DotPVect.hs
+++ b/testsuite/tests/dph/dotp/DotPVect.hs
@@ -12,4 +12,4 @@ dotp :: PArray Double -> PArray Double -> Double
dotp v w = dotp' (fromPArrayP v) (fromPArrayP w)
dotp' :: [:Double:] -> [:Double:] -> Double
-dotp' v w = D.sumP (zipWithP (*) v w)
+dotp' v w = D.sumP (zipWithP (D.*) v w)
diff --git a/testsuite/tests/dph/dotp/Main.hs b/testsuite/tests/dph/dotp/Main.hs
index ea21f395c4..c6d4f1e91c 100644
--- a/testsuite/tests/dph/dotp/Main.hs
+++ b/testsuite/tests/dph/dotp/Main.hs
@@ -18,7 +18,7 @@ generateVectorU n =
let -- The std random function is too slow to generate really big vectors
-- with. Instead, we generate a short random vector and repeat that.
randvec = U.randomRs k (-100, 100) rg
- vec = U.map (\i -> randvec U.!: (i `mod` k)) (U.enumFromTo 0 (n-1))
+ vec = U.map (\i -> U.index "generateVectorU" randvec (i `mod` k)) (U.enumFromTo 0 (n-1))
evaluate vec
return vec
where
diff --git a/testsuite/tests/dph/dotp/dph-dotp-fast.stdout b/testsuite/tests/dph/dotp/dph-dotp-copy-fast.stdout
index e8f012cbc6..e8f012cbc6 100644
--- a/testsuite/tests/dph/dotp/dph-dotp-fast.stdout
+++ b/testsuite/tests/dph/dotp/dph-dotp-copy-fast.stdout
diff --git a/testsuite/tests/dph/dotp/dph-dotp-opt.stdout b/testsuite/tests/dph/dotp/dph-dotp-copy-opt.stdout
index e8f012cbc6..e8f012cbc6 100644
--- a/testsuite/tests/dph/dotp/dph-dotp-opt.stdout
+++ b/testsuite/tests/dph/dotp/dph-dotp-copy-opt.stdout
diff --git a/testsuite/tests/dph/dotp/dph-dotp-vseg-fast.stdout b/testsuite/tests/dph/dotp/dph-dotp-vseg-fast.stdout
new file mode 100644
index 0000000000..e8f012cbc6
--- /dev/null
+++ b/testsuite/tests/dph/dotp/dph-dotp-vseg-fast.stdout
@@ -0,0 +1,2 @@
+3.3659625259
+3.3659625259
diff --git a/testsuite/tests/dph/dotp/dph-dotp-vseg-opt.stdout b/testsuite/tests/dph/dotp/dph-dotp-vseg-opt.stdout
new file mode 100644
index 0000000000..e8f012cbc6
--- /dev/null
+++ b/testsuite/tests/dph/dotp/dph-dotp-vseg-opt.stdout
@@ -0,0 +1,2 @@
+3.3659625259
+3.3659625259
diff --git a/testsuite/tests/dph/dotp/dph-dotp.T b/testsuite/tests/dph/dotp/dph-dotp.T
index 57c9e72ce1..124c7728ff 100644
--- a/testsuite/tests/dph/dotp/dph-dotp.T
+++ b/testsuite/tests/dph/dotp/dph-dotp.T
@@ -1,5 +1,5 @@
-test ('dph-dotp-opt'
+test ('dph-dotp-copy-opt'
, [ alone
, skip_if_fast
, extra_clean(['Main.o', 'Main.hi', 'DotPVect.hi', 'DotPVect.o'])
@@ -10,8 +10,20 @@ test ('dph-dotp-opt'
, [ 'Main'
, '-Odph -package dph-lifted-copy -package dph-prim-par'])
-test ('dph-dotp-fast'
- , [ extra_clean(['Main.o', 'Main.hi', 'DotPVect.hi', 'DotPVect.o'])
+test ('dph-dotp-vseg-opt'
+ , [ alone
+ , skip_if_fast
+ , extra_clean(['Main.o', 'Main.hi', 'DotPVect.hi', 'DotPVect.o'])
+ , reqlib('dph-lifted-vseg')
+ , reqlib('dph-prim-par')
+ , only_ways(['normal', 'threaded1', 'threaded2']) ]
+ , multimod_compile_and_run
+ , [ 'Main'
+ , '-Odph -package dph-lifted-vseg -package dph-prim-par'])
+
+test ('dph-dotp-copy-fast'
+ , [ alone
+ , extra_clean(['Main.o', 'Main.hi', 'DotPVect.hi', 'DotPVect.o'])
, reqlib('dph-lifted-copy')
, reqlib('dph-prim-par')
, only_ways(['normal', 'threaded1', 'threaded2']) ]
@@ -19,3 +31,13 @@ test ('dph-dotp-fast'
, [ 'Main'
, '-O -fno-enable-rewrite-rules -package dph-lifted-copy -package dph-prim-par'])
+test ('dph-dotp-vseg-fast'
+ , [ alone
+ , extra_clean(['Main.o', 'Main.hi', 'DotPVect.hi', 'DotPVect.o'])
+ , reqlib('dph-lifted-vseg')
+ , reqlib('dph-prim-par')
+ , only_ways(['normal', 'threaded1', 'threaded2']) ]
+ , multimod_compile_and_run
+ , [ 'Main'
+ , '-O -fno-enable-rewrite-rules -package dph-lifted-vseg -package dph-prim-par'])
+
diff --git a/testsuite/tests/dph/nbody/Body.hs b/testsuite/tests/dph/nbody/Body.hs
new file mode 100644
index 0000000000..3ba2149533
--- /dev/null
+++ b/testsuite/tests/dph/nbody/Body.hs
@@ -0,0 +1,85 @@
+{-# LANGUAGE BangPatterns #-}
+
+-- | Massful bodies in the simulation.
+module Body
+ ( Velocity
+ , Accel
+ , MassPoint
+ , Body
+
+ , unitBody
+ , massPointOfBody
+ , setMassOfBody
+ , setAccelOfBody
+ , setStartVelOfBody
+ , advanceBody)
+where
+import Util
+
+
+-- Types ----------------------------------------------------------------------
+-- We're using tuples instead of ADTs so we can put them in unboxed vectors.
+
+-- | The velocity of a point.
+type Velocity = (Double, Double)
+
+-- | The acceleration of a point.
+type Accel = (Double, Double)
+
+-- | A point in 2D space with its mass.
+type MassPoint = (Double, Double, Double)
+
+-- | Bodies consist of a MassPoint, but also carry their velocity
+-- and acceleration between steps of the simulation.
+type Body = (MassPoint, Velocity, Accel)
+
+
+-- Body -----------------------------------------------------------------------
+-- | Make a body with unit mass and zero vel and acc.
+unitBody :: Double -> Double -> Body
+unitBody x y
+ = ((x, y, 1), (0, 0), (0, 0))
+
+
+-- | Take the MassPoint of a body.
+massPointOfBody :: Body -> MassPoint
+massPointOfBody (mp, vel, acc)
+ = mp
+
+
+-- | Set the mass of a body.
+setMassOfBody :: Double -> Body -> Body
+setMassOfBody mass ((x, y, _), vel, acc)
+ = ((x, y, mass), vel, acc)
+
+
+-- | Set the acceleration of a body.
+setAccelOfBody :: Accel -> Body -> Body
+setAccelOfBody acc' (mp, vel, _)
+ = (mp, vel, acc')
+
+
+-- | Set the starting velocity of a body.
+-- It is set to rotate around the origin, with the speed proportional
+-- to the sqrt of the distance from it. This seems to make nice simulations.
+setStartVelOfBody :: Double -> Body -> Body
+setStartVelOfBody startVel (mp@(x, y, mass), vel, acc)
+ = let pos = (x, y)
+ (x', y') = normaliseV (x, y)
+ vel' = (y', -x')
+ vel'' = mulSV (sqrt (magV pos) * startVel) vel'
+
+ in (mp, vel'', acc)
+
+
+-- | Advance a body forwards in time.
+advanceBody :: Double -> Body -> Body
+advanceBody time
+ ( (px, py, mass)
+ , (vx, vy)
+ , acc@(ax, ay))
+
+ = ( (px + time * vx, py + time * vy, mass)
+ , (vx + time * ax, vy + time * ay)
+ , acc)
+
diff --git a/testsuite/tests/dph/nbody/Config.hs b/testsuite/tests/dph/nbody/Config.hs
new file mode 100644
index 0000000000..1fc93a8164
--- /dev/null
+++ b/testsuite/tests/dph/nbody/Config.hs
@@ -0,0 +1,50 @@
+
+module Config
+ ( Config(..)
+ , defaultConfig)
+where
+
+-- | Program config
+data Config
+ = Config {
+ -- What solver to use
+ configSolverName :: String
+
+ -- System setup
+ , configBodyCount :: Int
+ , configBodyMass :: Double
+ , configTimeStep :: Double
+ , configEpsilon :: Double
+
+ -- Initial conditions.
+ , configStartDiscSize :: Double
+ , configStartSpeed :: Double
+
+ -- Terminating conditions.
+ , configMaxSteps :: Int
+
+ -- Dump points to file
+ , configDumpFinal :: Maybe FilePath
+
+ -- Print points to stdout
+ , configPrintFinal :: Bool
+
+ -- Print timings to stdout
+ , configPrintTimings :: Bool }
+
+
+defaultConfig :: Config
+defaultConfig
+ = Config
+ { configSolverName = "nested-bh"
+ , configBodyCount = 100
+ , configBodyMass = 10
+ , configTimeStep = 1
+ , configEpsilon = 100
+ , configStartDiscSize = 50
+ , configStartSpeed = 0.5
+ , configMaxSteps = 10
+ , configDumpFinal = Nothing
+ , configPrintFinal = True
+ , configPrintTimings = False }
+
diff --git a/testsuite/tests/dph/nbody/Dump.hs b/testsuite/tests/dph/nbody/Dump.hs
new file mode 100644
index 0000000000..b436e3c07a
--- /dev/null
+++ b/testsuite/tests/dph/nbody/Dump.hs
@@ -0,0 +1,46 @@
+{-# LANGUAGE ScopedTypeVariables #-}
+module Dump
+ ( dumpWorld
+ , printWorld)
+where
+import Body
+import World
+import System.IO
+import Data.List
+import Text.Printf
+import qualified Data.Vector.Unboxed as V
+
+
+-- | Dump the bodies in a world to a file.
+dumpWorld :: World -> FilePath -> IO ()
+dumpWorld world filePath
+ = do h <- openFile filePath WriteMode
+ mapM_ (hWriteBody h)
+ $ V.toList
+ $ worldBodies world
+ hClose h
+
+
+-- | Print the bodies in a world to stdout
+printWorld :: World -> IO ()
+printWorld world
+ = do mapM_ (hWriteBody stdout)
+ $ V.toList
+ $ worldBodies world
+
+
+-- | Write a single body to a file.
+hWriteBody :: Handle -> Body -> IO ()
+hWriteBody h ((px, py, mass), (vx, vy), (ax, ay))
+ = hPutStrLn h
+ $ concat
+ $ ( (padRc 8 ' ' $ show mass)
+ : " "
+ : (intersperse " "
+ $ map (\f -> printf "%15.8f" f) [ px, py, vx, vy, ax, ay ]))
+
+
+-- | Right justify a doc, padding with a given character.
+padRc :: Int -> Char -> String -> String
+padRc n c str
+ = replicate (n - length str) c ++ str
diff --git a/testsuite/tests/dph/nbody/Generate.hs b/testsuite/tests/dph/nbody/Generate.hs
new file mode 100644
index 0000000000..808ab8e6bf
--- /dev/null
+++ b/testsuite/tests/dph/nbody/Generate.hs
@@ -0,0 +1,98 @@
+{-# LANGUAGE TypeOperators #-}
+module Generate
+ ( genPointsUniform
+ , genPointsUniformWithSeed
+ , genPointsDisc
+ , genPointsCombo
+ , pointsPArrayOfUArray )
+where
+import Types
+import Randomish
+import qualified Data.Array.Parallel.Unlifted as U
+import qualified Data.Array.Parallel as P
+import qualified Data.Array.Parallel.PArray as P
+import Data.Array.Parallel.PArray (PArray)
+import Control.Exception
+
+-- Random points generation
+-- IMPORTANT: We use the same seed with the same random generator in all
+-- quickhull codes. The asymptotic work complexity of quickhull
+-- is between O (N) and O (N^2) depending on the input.
+-- To compare benchmark results, they always need to use the same
+-- input.
+seed :: Int
+seed = 42742
+
+-- | Some uniformly distributed points
+genPointsUniform
+ :: Int -- ^ number of points
+ -> Double -- ^ minimum coordinate
+ -> Double -- ^ maximum coordinate
+ -> U.Array (Double, Double)
+
+genPointsUniform n pointMin pointMax
+ = let pts = randomishDoubles (n*2) pointMin pointMax seed
+ xs = U.extract pts 0 n
+ ys = U.extract pts n n
+ in U.zip xs ys
+
+
+-- | Some uniformly distributed points
+genPointsUniformWithSeed
+ :: Int -- ^ seed
+ -> Int -- ^ number of points
+ -> Double -- ^ minimum coordinate
+ -> Double -- ^ maximum coordinate
+ -> U.Array (Double, Double)
+
+genPointsUniformWithSeed seed' n pointMin pointMax
+ = let pts = randomishDoubles (n*2) pointMin pointMax seed'
+ xs = U.extract pts 0 n
+ ys = U.extract pts n n
+ in U.zip xs ys
+
+
+-- | Some points distributed as a disc
+genPointsDisc
+ :: Int -- ^ number of points
+ -> (Double, Double) -- ^ center of disc
+ -> Double -- ^ radius of disc
+ -> U.Array (Double, Double)
+
+genPointsDisc n (originX, originY) radiusMax
+ = let radius = randomishDoubles n 0 radiusMax seed
+ angle = randomishDoubles n (-pi) pi (seed + 1234)
+
+ makeXY r a
+ = ( originX + r * cos a
+ , originY + r * sin a)
+
+ in originX `seq` originY `seq` U.zipWith makeXY radius angle
+
+
+-- | A point cloud with areas of high an low density
+genPointsCombo
+ :: Int -- ^ number of points
+ -> U.Array (Double, Double)
+
+genPointsCombo n
+ = genPointsDisc (n `div` 5) (250, 250) 200
+ U.+:+ genPointsDisc (n `div` 5) (100, 100) 80
+ U.+:+ genPointsDisc (n `div` 5) (150, 300) 30
+ U.+:+ genPointsDisc (n `div` 5) (500, 120) 30
+ U.+:+ genPointsDisc (n `div` 5) (300, 200) 150
+
+
+-- | Convert a list of points to a PArray
+pointsPArrayOfUArray
+ :: U.Array (Double, Double)
+ -> IO (PArray Point)
+
+pointsPArrayOfUArray ps
+ = do
+ let pts = makePointsPA
+ (P.fromUArray (U.fsts ps))
+ (P.fromUArray (U.snds ps))
+ evaluate $ P.nf pts
+ return pts
+
diff --git a/testsuite/tests/dph/nbody/Main.hs b/testsuite/tests/dph/nbody/Main.hs
new file mode 100644
index 0000000000..ad2c809a1c
--- /dev/null
+++ b/testsuite/tests/dph/nbody/Main.hs
@@ -0,0 +1,103 @@
+{-# LANGUAGE ParallelListComp, BangPatterns #-}
+
+import Config
+import Dump
+import World
+import Body
+import Util
+import Solver
+import Generate
+import Control.Monad
+import Data.Maybe
+import qualified Data.Vector.Unboxed as V
+import qualified Data.Array.Parallel as P
+import qualified Data.Array.Parallel.PArray as P
+
+
+main :: IO ()
+main
+ = let config = defaultConfig
+ calcAccels = calcAccels_nb
+
+ -- Setup initial world
+ vPoints = genPointsDisc
+ (configBodyCount config)
+ (0, 0)
+ (configStartDiscSize config)
+
+ vBodies = V.map (setStartVelOfBody $ configStartSpeed config)
+ $ V.map (setMassOfBody $ configBodyMass config)
+ $ V.map (uncurry unitBody)
+ $ vPoints
+
+ worldStart = World
+ { worldBodies = vBodies
+ , worldSteps = 0 }
+
+ in mainBatch config calcAccels worldStart
+
+
+-- | Run the simulation in batch mode.
+mainBatch :: Config -> Solver -> World -> IO ()
+mainBatch config calcAccels worldStart
+ = do let world' = mainBatchRun config calcAccels worldStart
+ mainEnd (configDumpFinal config)
+ (configPrintFinal config)
+ world'
+
+
+mainBatchRun config calcAccels worldStart
+ = go worldStart
+ where go !world
+ = let world' = advanceWorld
+ (calcAccels $ configEpsilon config)
+ (configTimeStep config)
+ world
+
+ in if worldSteps world' < configMaxSteps config
+ then go world'
+ else world'
+
+
+-- | Called at end of run to dump final world state.
+mainEnd :: Maybe FilePath -- ^ Write final bodies to this file.
+ -> Bool -- ^ Print final bodies to stdout
+ -> World -- ^ Final world state.
+ -> IO ()
+
+mainEnd mDumpFinal printFinal world
+ = do -- Dump the final world state to file if requested.
+ maybe (return ()) (dumpWorld world) mDumpFinal
+ when printFinal (printWorld world)
+
+
+-- Solver ---------------------------------------------------------------------
+type Solver = Double -> V.Vector MassPoint -> V.Vector Accel
+
+-- | Nested Data Parallelism + Barnes-Hut algorithm.
+calcAccels_nb :: Solver
+calcAccels_nb epsilon mpts
+ = let
+ -- bounds finding isn't vectorised yet.
+ (llx, lly, rux, ruy) = findBounds mpts
+
+ mpts' = P.fromList $ V.toList mpts
+ accels' = calcAccelsWithBoxPA epsilon llx lly rux ruy mpts'
+
+ in V.fromList $ P.toList accels'
+
+
+-- | Find the coordinates of the bounding box that contains these points.
+findBounds :: V.Vector MassPoint -> (Double, Double, Double, Double)
+{-# INLINE findBounds #-}
+findBounds bounds
+ = V.foldl' acc (x1, y1, x1, y1) bounds
+ where
+ (x1, y1, _) = bounds V.! 0
+
+ acc (!llx, !lly, !rux, !ruy) (x, y, _)
+ = let !llx' = min llx x
+ !lly' = min lly y
+ !rux' = max rux x
+ !ruy' = max ruy y
+ in (llx', lly', rux', ruy')
diff --git a/testsuite/tests/lib/Char/Makefile b/testsuite/tests/dph/nbody/Makefile
index 9101fbd40a..9101fbd40a 100644
--- a/testsuite/tests/lib/Char/Makefile
+++ b/testsuite/tests/dph/nbody/Makefile
diff --git a/testsuite/tests/dph/nbody/Randomish.hs b/testsuite/tests/dph/nbody/Randomish.hs
new file mode 100644
index 0000000000..7aeefa33d8
--- /dev/null
+++ b/testsuite/tests/dph/nbody/Randomish.hs
@@ -0,0 +1,82 @@
+{-# LANGUAGE BangPatterns #-}
+
+module Randomish
+ ( randomishInts
+ , randomishDoubles)
+where
+import Data.Word
+import Data.Vector.Unboxed (Vector)
+import qualified Data.Vector.Unboxed.Mutable as MV
+import qualified Data.Vector.Unboxed as V
+import qualified Data.Vector.Generic as G
+
+
+-- | Use the "minimal standard" Lehmer generator to quickly generate some random
+-- numbers with reasonable statistical properties. By "reasonable" we mean good
+-- enough for games and test data, but not cryptography or anything where the
+-- quality of the randomness really matters.
+--
+-- From "Random Number Generators: Good ones are hard to find"
+-- Stephen K. Park and Keith W. Miller.
+-- Communications of the ACM, Oct 1988, Volume 31, Number 10.
+--
+randomishInts
+ :: Int -- Length of vector.
+ -> Int -- Minumum value in output.
+ -> Int -- Maximum value in output.
+ -> Int -- Random seed.
+ -> Vector Int -- Vector of random numbers.
+
+randomishInts !len !valMin' !valMax' !seed'
+
+ = let -- a magic number (don't change it)
+ multiplier :: Word64
+ multiplier = 16807
+
+ -- a merzenne prime (don't change it)
+ modulus :: Word64
+ modulus = 2^(31 :: Integer) - 1
+
+ -- if the seed is 0 all the numbers in the sequence are also 0.
+ seed
+ | seed' == 0 = 1
+ | otherwise = seed'
+
+ !valMin = fromIntegral valMin'
+ !valMax = fromIntegral valMax' + 1
+ !range = valMax - valMin
+
+ {-# INLINE f #-}
+ f x = multiplier * x `mod` modulus
+ in G.create
+ $ do
+ vec <- MV.new len
+
+ let go !ix !x
+ | ix == len = return ()
+ | otherwise
+ = do let x' = f x
+ MV.write vec ix $ fromIntegral $ (x `mod` range) + valMin
+ go (ix + 1) x'
+
+ go 0 (f $ f $ f $ fromIntegral seed)
+ return vec
+
+
+-- | Generate some randomish doubles with terrible statistical properties.
+-- This is good enough for test data, but not much else.
+randomishDoubles
+ :: Int -- Length of vector
+ -> Double -- Minimum value in output
+ -> Double -- Maximum value in output
+ -> Int -- Random seed.
+ -> Vector Double -- Vector of randomish doubles.
+
+randomishDoubles !len !valMin !valMax !seed
+ = let range = valMax - valMin
+
+ mx = 2^(30 :: Integer) - 1
+ mxf = fromIntegral mx
+ ints = randomishInts len 0 mx seed
+
+ in V.map (\n -> valMin + (fromIntegral n / mxf) * range) ints
diff --git a/testsuite/tests/dph/nbody/Solver.hs b/testsuite/tests/dph/nbody/Solver.hs
new file mode 100644
index 0000000000..a5545b3f2f
--- /dev/null
+++ b/testsuite/tests/dph/nbody/Solver.hs
@@ -0,0 +1,156 @@
+{-# LANGUAGE ParallelArrays #-}
+{-# OPTIONS -fvectorise #-}
+module Solver
+ (calcAccelsWithBoxPA)
+where
+import Data.Array.Parallel
+import Data.Array.Parallel.Prelude.Bool
+import Data.Array.Parallel.Prelude.Double as D
+import qualified Data.Array.Parallel.Prelude.Int as I
+import qualified Prelude
+
+data BoundingBox
+ = Box Double -- lower left X
+ Double -- lower left Y
+ Double -- upper right X
+ Double -- upper right Y
+
+data MassPoint
+ = MP Double -- pos X
+ Double -- pos Y
+ Double -- mass
+
+type Accel
+ = (Double, Double)
+
+data BHTree
+ = BHT Double -- size of cell
+ Double -- centroid X
+ Double -- centroid Y
+ Double -- centroid mass
+ [:BHTree:] -- children
+
+
+calcAccelsWithBoxPA
+ :: Double
+ -> Double -> Double -> Double -> Double
+ -> PArray (Double, Double, Double)
+ -> PArray (Double, Double)
+
+calcAccelsWithBoxPA epsilon llx lly rux ruy mpts
+ = let mpts' = [: MP x y m | (x, y, m) <- fromPArrayP mpts :]
+ accs' = calcAccelsWithBox epsilon llx lly rux ruy mpts'
+ in toPArrayP accs'
+{-# NOINLINE calcAccelsWithBoxPA #-}
+
+-- | Given the extend of a bounding box containing all the points,
+-- calculate the accelerations on all of them.
+calcAccelsWithBox
+ :: Double
+ -> Double -> Double -> Double -> Double
+ -> [: MassPoint :]
+ -> [: Accel :]
+
+calcAccelsWithBox epsilon llx lly rux ruy mspts
+ = accs
+ where accs = [: calcAccel epsilon m tree | m <- mspts :]
+ tree = buildTree (Box llx lly rux ruy) mspts
+
+
+-- | Build the Barnes-Hut quadtree tree.
+buildTree :: BoundingBox -> [: MassPoint :] -> BHTree
+buildTree bb particles
+ | lengthP particles I.<= 1 = BHT s x y m emptyP
+ | otherwise = BHT s x y m subTrees
+ where (MP x y m) = calcCentroid particles
+ (boxes, splitPnts) = splitPoints bb particles
+ subTrees = [:buildTree bb' ps | (bb', ps) <- zipP boxes splitPnts:]
+
+ (Box llx lly rux ruy) = bb
+ sx = rux D.- llx
+ sy = ruy D.- lly
+ s = if sx D.< sy then sx else sy
+
+
+-- | Split massPoints according to their locations in the quadrants.
+splitPoints
+ :: BoundingBox
+ -> [: MassPoint :]
+ -> ([:BoundingBox:], [:[: MassPoint :]:])
+
+splitPoints b@(Box llx lly rux ruy) particles
+ | noOfPoints I.<= 1 = (singletonP b, singletonP particles)
+ | otherwise
+ = unzipP [: (b,p) | (b,p) <- zipP boxes splitPars, lengthP p I.> 0:]
+ where noOfPoints = lengthP particles
+ lls = [: p | p <- particles, inBox b1 p :]
+ lus = [: p | p <- particles, inBox b2 p :]
+ rus = [: p | p <- particles, inBox b3 p :]
+ rls = [: p | p <- particles, inBox b4 p :]
+ b1 = Box llx lly midx midy
+ b2 = Box llx midy midx ruy
+ b3 = Box midx midy rux ruy
+ b4 = Box midx lly rux midy
+ boxes = singletonP b1 +:+ singletonP b2 +:+ singletonP b3 +:+ singletonP b4
+ splitPars = singletonP lls +:+ singletonP lus +:+ singletonP rus +:+ singletonP rls
+ (midx, midy) = ((llx D.+ rux) D./ 2.0 , (lly D.+ ruy) D./ 2.0)
+
+
+-- | Checks if particle is in box (excluding left and lower border)
+inBox :: BoundingBox -> MassPoint -> Bool
+inBox (Box llx lly rux ruy) (MP px py _)
+ = (px D.> llx) && (px D.<= rux) && (py D.> lly) && (py D.<= ruy)
+
+
+-- | Calculate the centroid of some points.
+calcCentroid:: [:MassPoint:] -> MassPoint
+calcCentroid mpts
+ = MP (sumP xs / mass) (sumP ys / mass) mass
+ where mass = sumP [: m | MP _ _ m <- mpts :]
+ (xs, ys) = unzipP [: (m D.* x, m D.* y) | MP x y m <- mpts :]
+
+
+-- | Calculate the accelleration of a point due to the points in the given tree.
+calcAccel :: Double -> MassPoint -> BHTree -> (Double, Double)
+calcAccel epsilon mpt (BHT s x y m subtrees)
+ | lengthP subtrees I.== 0
+ = accel epsilon mpt (MP x y m)
+
+ | isFar mpt s x y
+ = accel epsilon mpt (MP x y m)
+
+ | otherwise
+ = let (xs, ys) = unzipP [: calcAccel epsilon mpt st | st <- subtrees :]
+ in (sumP xs, sumP ys)
+
+
+-- | Calculate the acceleration on a point due to some other point.
+accel :: Double -- ^ If the distance between the points is smaller than this
+ -- then ignore the forces between them.
+ -> MassPoint -- ^ The point being acclerated.
+ -> MassPoint -- ^ Neibouring point.
+ -> Accel
+
+accel epsilon (MP x1 y1 _) (MP x2 y2 m)
+ = (aabs D.* dx D./ r , aabs D.* dy D./ r)
+ where rsqr = (dx D.* dx) D.+ (dy D.* dy) D.+ epsilon D.* epsilon
+ r = sqrt rsqr
+ dx = x1 D.- x2
+ dy = y1 D.- y2
+ aabs = m D./ rsqr
+
+
+-- | If the point is far from a cell in the tree then we can use
+-- it's centroid as an approximation of all the points in the region.
+isFar :: MassPoint -- point being accelerated
+ -> Double -- size of region
+ -> Double -- position of center of mass of cell
+ -> Double -- position of center of mass of cell
+ -> Bool
+
+isFar (MP x1 y1 m) s x2 y2
+ = let dx = x2 D.- x1
+ dy = y2 D.- y1
+ dist = sqrt (dx D.* dx D.+ dy D.* dy)
+ in (s D./ dist) D.< 1
+
diff --git a/testsuite/tests/dph/nbody/Types.hs b/testsuite/tests/dph/nbody/Types.hs
new file mode 100644
index 0000000000..5ebd849a62
--- /dev/null
+++ b/testsuite/tests/dph/nbody/Types.hs
@@ -0,0 +1,52 @@
+{-# LANGUAGE ParallelArrays #-}
+{-# OPTIONS -fvectorise #-}
+
+module Types
+ ( Point
+ , Line
+ , makePoints, makePointsPA
+ , xsOf, xsOfPA
+ , ysOf, ysOfPA)
+where
+import Data.Array.Parallel
+import Data.Array.Parallel.Prelude.Double
+import qualified Data.Array.Parallel.Prelude.Double as D
+import qualified Prelude as P
+
+type Point = (Double, Double)
+type Line = (Point, Point)
+
+-- | Make some points from their components.
+makePoints :: [:Double:] -> [:Double:] -> [:Point:]
+makePoints = zipP
+
+
+-- | Make some points from their components, as a `PArray`.
+makePointsPA :: PArray Double -> PArray Double -> PArray Point
+{-# NOINLINE makePointsPA #-}
+makePointsPA xs ys
+ = toPArrayP (makePoints (fromPArrayP xs) (fromPArrayP ys))
+
+
+-- | Take the x values of some points.
+xsOf :: [:Point:] -> [:Double:]
+xsOf ps = [: x | (x, _) <- ps :]
+
+
+-- | Take the x values of some points as a `PArray`.
+xsOfPA :: PArray Point -> PArray Double
+{-# NOINLINE xsOfPA #-}
+xsOfPA ps = toPArrayP (xsOf (fromPArrayP ps))
+
+
+-- | Take the y values of some points.
+ysOf :: [:Point:] -> [:Double:]
+ysOf ps = [: y | (_, y) <- ps :]
+
+
+-- | Take the y values of some points as a `PArray`.
+ysOfPA :: PArray Point -> PArray Double
+{-# NOINLINE ysOfPA #-}
+ysOfPA ps = toPArrayP (ysOf (fromPArrayP ps))
+
+
diff --git a/testsuite/tests/dph/nbody/Util.hs b/testsuite/tests/dph/nbody/Util.hs
new file mode 100644
index 0000000000..5f78802c83
--- /dev/null
+++ b/testsuite/tests/dph/nbody/Util.hs
@@ -0,0 +1,18 @@
+
+module Util
+ ( magV
+ , mulSV
+ , normaliseV)
+where
+
+-- | The magnitude of a vector.
+magV :: (Double, Double) -> Double
+magV (x, y) = sqrt (x * x + y * y)
+
+-- | Multiply a vector by a scalar.
+mulSV :: Double -> (Double, Double) -> (Double, Double)
+mulSV s (x, y) = (s * x, s * y)
+
+-- | Normalise a vector, so it has a magnitude of 1.
+normaliseV :: (Double, Double) -> (Double, Double)
+normaliseV v = mulSV (1 / magV v) v
diff --git a/testsuite/tests/dph/nbody/World.hs b/testsuite/tests/dph/nbody/World.hs
new file mode 100644
index 0000000000..d858ffb928
--- /dev/null
+++ b/testsuite/tests/dph/nbody/World.hs
@@ -0,0 +1,47 @@
+{-# LANGUAGE BangPatterns #-}
+
+module World
+ ( World(..)
+ , advanceWorld)
+where
+import Body
+import qualified Data.Vector.Unboxed as V
+
+data World
+ = World
+ { -- | Bodies in the simulation.
+ worldBodies :: !(V.Vector Body)
+
+ -- | Number of steps taken in the simulation so far.
+ , worldSteps :: !Int }
+
+
+-- | Advance the world forward in time.
+advanceWorld
+ :: (V.Vector MassPoint -> V.Vector Accel)
+ -- ^ Fn to compute accelerations of each point.
+ -> Double -- ^ Time step.
+ -> World
+ -> World
+
+advanceWorld calcAccels timeStep world
+ = let -- Calculate the accelerations on each body.
+ accels = calcAccels
+ $ V.map massPointOfBody
+ $ worldBodies world
+
+ -- Apply the accelerations to the bodies and advance them.
+ bodies' = V.zipWith
+ (\body (ax, ay)
+ -> advanceBody timeStep
+ (setAccelOfBody (-ax, -ay) body))
+ (worldBodies world)
+ accels
+
+ -- Update the world.
+ steps' = worldSteps world + 1
+
+ in world { worldBodies = bodies'
+ , worldSteps = steps' }
+
+ \ No newline at end of file
diff --git a/testsuite/tests/dph/nbody/dph-nbody-copy-fast.stdout b/testsuite/tests/dph/nbody/dph-nbody-copy-fast.stdout
new file mode 100644
index 0000000000..69fdd8b303
--- /dev/null
+++ b/testsuite/tests/dph/nbody/dph-nbody-copy-fast.stdout
@@ -0,0 +1,100 @@
+ 10.0 -7.88876745 14.40403609 0.07781862 1.41725313 0.00728077 -0.00615418
+ 10.0 -20.39602554 -5.40256368 -1.56824530 0.67893475 0.01493099 0.00782011
+ 10.0 -0.05794753 10.34183386 0.35651327 0.89460951 0.00188899 -0.00356931
+ 10.0 -4.75609397 34.74782948 1.61195437 1.87077953 0.00587195 -0.01975082
+ 10.0 36.25896362 10.82337782 2.14170846 -1.41319743 -0.02163268 -0.00507727
+ 10.0 4.02674361 -9.00872919 0.03617254 -0.88316283 -0.00122400 0.00926493
+ 10.0 42.00406508 -40.85785845 -0.76014767 -3.29738763 -0.02191949 0.02332737
+ 10.0 -22.63186030 5.80994447 -1.07420146 1.51160117 0.01670201 0.00006355
+ 10.0 16.53870540 16.94639077 1.84926442 0.20378411 -0.00879785 -0.00880553
+ 10.0 39.92854878 29.06425991 2.88523318 -1.01552251 -0.02189971 -0.01632925
+ 10.0 -17.45501954 11.39301477 -0.56641470 1.60906365 0.01371008 -0.00396360
+ 10.0 26.25934753 8.00486951 1.85024443 -0.89918952 -0.01562756 -0.00309898
+ 10.0 -9.33900099 9.24549389 -0.36060159 1.12461927 0.00801307 -0.00255620
+ 10.0 -46.47873679 -28.36980232 -2.92763912 1.44708065 0.02528654 0.01949016
+ 10.0 -12.54370842 34.21722863 1.24120256 2.21072951 0.01080973 -0.01869097
+ 10.0 -7.14048930 7.10420057 -0.36081624 0.86670872 0.00647863 -0.00118788
+ 10.0 -49.88492485 -23.33817148 -2.76602163 1.78294227 0.02720067 0.01682362
+ 10.0 -19.81399282 53.52954568 2.07232227 2.65936299 0.01424146 -0.02727658
+ 10.0 23.77418551 14.68227128 2.04725863 -0.41772276 -0.01379116 -0.00752371
+ 10.0 -5.73673778 8.93192786 -0.16259409 0.97138466 0.00562305 -0.00245174
+ 10.0 10.54277542 -1.02674862 0.84834041 -0.44100517 -0.00531874 0.00383461
+ 10.0 23.01197723 21.12299112 2.25990543 -0.12607295 -0.01291140 -0.01176114
+ 10.0 -44.78532667 12.05197921 -1.02696812 2.77848076 0.02808850 -0.00298275
+ 10.0 31.46388060 -49.75461307 -1.52046945 -3.03579919 -0.01637469 0.02786471
+ 10.0 24.84943257 -25.92687211 -0.24060772 -2.45045466 -0.01484349 0.01860299
+ 10.0 25.91948874 -30.60444211 -0.52684367 -2.60005186 -0.01516185 0.02084074
+ 10.0 -10.85946929 20.87407647 0.39902427 1.82589346 0.00972306 -0.01062660
+ 10.0 -38.51435867 1.59076858 -1.56374573 2.10935343 0.02533138 0.00325720
+ 10.0 48.51766969 -21.77175738 0.49039776 -3.14884736 -0.02642908 0.01352300
+ 10.0 5.74566172 46.44110258 2.61301762 1.41963745 -0.00049448 -0.02602402
+ 10.0 -22.88917903 -27.97906439 -2.49898486 -0.03157484 0.01438842 0.02110301
+ 10.0 31.73261776 -6.28614087 1.21728705 -1.94829313 -0.01955786 0.00624200
+ 10.0 4.24232124 19.44671943 1.21964188 1.10199242 -0.00052277 -0.01009959
+ 10.0 0.91334970 48.66777413 2.53737735 1.69247032 0.00244742 -0.02680742
+ 10.0 10.67139892 31.69558668 2.17625638 0.97201541 -0.00424894 -0.01856619
+ 10.0 12.94163719 58.29627746 3.27732262 1.10311871 -0.00411829 -0.03016643
+ 10.0 39.19514702 34.09017661 3.04651632 -0.83806079 -0.02092181 -0.01899392
+ 10.0 -24.13067759 -32.16302812 -2.68262548 -0.04506858 0.01454248 0.02301772
+ 10.0 51.78333979 -13.45956325 1.00920828 -3.03719366 -0.02816357 0.00875884
+ 10.0 -18.73188233 -17.30379387 -1.95701398 -0.00677590 0.01307052 0.01538889
+ 10.0 24.70514705 -49.06503148 -1.67808526 -2.78661149 -0.01337746 0.02867654
+ 10.0 -51.06940692 -15.61458174 -2.46357376 2.08982818 0.02835174 0.01252356
+ 10.0 -4.29154911 -29.69366786 -1.77081329 -1.27717018 0.00330457 0.02241695
+ 10.0 2.11752441 33.61609431 1.87012243 1.50451828 0.00141129 -0.01940596
+ 10.0 37.73902003 -20.32722331 0.42253535 -2.74138534 -0.02210996 0.01412198
+ 10.0 18.24940441 16.13909492 1.89723284 0.04723628 -0.00993771 -0.00831431
+ 10.0 -0.86685880 -26.00179392 -1.38458807 -1.39913472 0.00136531 0.02041813
+ 10.0 -14.99514725 -9.73327401 -1.49412678 0.04580994 0.01096177 0.01022804
+ 10.0 7.00887790 1.98168034 0.68812772 0.00896544 -0.00293511 0.00198547
+ 10.0 14.82165676 -26.61468332 -0.63832974 -2.10322539 -0.00891726 0.01991691
+ 10.0 36.97393038 41.34508248 3.24972457 -0.53759403 -0.01886630 -0.02264741
+ 10.0 13.20164819 -5.94173158 0.74976608 -0.99205532 -0.00725503 0.00697320
+ 10.0 -27.55525109 11.38230453 -0.82867230 2.04896832 0.02021279 -0.00334846
+ 10.0 44.22611452 7.91205992 2.08170876 -1.97441862 -0.02553919 -0.00334242
+ 10.0 -30.78228408 -9.00330845 -1.98277752 1.19492292 0.02083894 0.00999898
+ 10.0 21.23162596 1.68817791 1.43493089 -0.91572699 -0.01244008 0.00145281
+ 10.0 43.83049777 17.41111171 2.48943804 -1.60943360 -0.02478736 -0.00913389
+ 10.0 18.27076095 14.11054567 1.82221570 -0.03605102 -0.01008131 -0.00688670
+ 10.0 -23.16386718 14.98115804 -0.48627528 2.03701218 0.01725857 -0.00604352
+ 10.0 17.66869644 37.69009924 2.68456831 0.61313519 -0.00829888 -0.02182563
+ 10.0 -13.13453980 43.06229834 1.74152194 2.32880687 0.01088136 -0.02345547
+ 10.0 17.04551969 -8.51968300 0.74199110 -1.36393081 -0.00992090 0.00843742
+ 10.0 -12.74957582 2.86610039 -0.88706993 0.76014301 0.01004519 0.00183585
+ 10.0 -11.57352997 -3.93218467 -1.08155095 0.15539312 0.00900597 0.00634724
+ 10.0 -0.43691930 11.99128730 0.42464351 1.00896428 0.00223775 -0.00474195
+ 10.0 -18.84718297 2.59155114 -1.14765946 1.09328119 0.01395275 0.00224813
+ 10.0 26.50822037 34.91831202 2.84251996 -0.01459342 -0.01374681 -0.02010543
+ 10.0 -1.83862732 -27.40591387 -1.51844281 -1.37417813 0.00190638 0.02119551
+ 10.0 -29.61534814 -11.34773579 -2.05992588 1.01365241 0.02001716 0.01147311
+ 10.0 -1.58282077 2.69811157 -0.11418406 0.29617314 0.00265977 0.00167764
+ 10.0 2.81028701 8.79669118 0.52804717 0.69094215 -0.00005422 -0.00258329
+ 10.0 -46.98701557 11.56383052 -1.07690408 2.84555950 0.02883999 -0.00259972
+ 10.0 -3.40737443 -56.06838909 -2.91291405 -1.56839602 0.00150420 0.03217266
+ 10.0 -19.98158539 39.46428514 1.28835283 2.57214878 0.01493065 -0.02105105
+ 10.0 -44.66881930 12.46139603 -1.00158524 2.78765137 0.02804667 -0.00323063
+ 10.0 -16.39650937 23.16371517 0.32747014 2.11248239 0.01323682 -0.01177621
+ 10.0 21.95611509 7.76064067 1.72075828 -0.61228724 -0.01269236 -0.00269100
+ 10.0 -10.50904475 12.60669705 -0.19243723 1.40501570 0.00897813 -0.00484325
+ 10.0 -14.30586541 -0.91198946 -1.12740574 0.55739977 0.01090470 0.00440092
+ 10.0 -46.00705467 -6.85206507 -2.04591400 2.14319881 0.02767905 0.00814089
+ 10.0 30.41289215 -6.97966533 1.15654150 -1.91885498 -0.01852614 0.00680537
+ 10.0 -48.27660341 27.60241976 -0.13762372 3.31622222 0.02879885 -0.01161224
+ 10.0 -17.74747450 10.50189167 -0.63686673 1.56720699 0.01384037 -0.00328594
+ 10.0 54.39641806 -0.37738366 1.72976962 -2.73607215 -0.02940059 0.00129876
+ 10.0 6.47050061 -29.43922970 -1.20659479 -1.82090480 -0.00359394 0.02244751
+ 10.0 0.58954963 -13.25292294 -0.49482500 -1.03808365 0.00082873 0.01218738
+ 10.0 -12.31468078 -40.73604077 -2.60912850 -0.94516629 0.00720515 0.02765879
+ 10.0 38.13312568 24.34484548 2.69648135 -1.04260079 -0.02152543 -0.01341969
+ 10.0 -13.70564154 27.92937950 0.77625108 2.14221048 0.01158560 -0.01492998
+ 10.0 40.53583366 -0.14911602 1.65704468 -2.10583120 -0.02408788 0.00179315
+ 10.0 8.39984292 -15.41302717 -0.12676090 -1.44483730 -0.00437128 0.01330585
+ 10.0 22.44930397 -38.06973908 -1.11496697 -2.59958621 -0.01287940 0.02515562
+ 10.0 47.41809427 3.44198464 1.88610439 -2.29818650 -0.02696432 -0.00068958
+ 10.0 27.36675414 46.97814868 3.25532655 0.14568231 -0.01291442 -0.02560627
+ 10.0 -10.16897115 -22.40458265 -1.73420047 -0.76737649 0.00741932 0.01846132
+ 10.0 40.36029012 -18.88517950 0.55513182 -2.79063722 -0.02344201 0.01302615
+ 10.0 -14.39025584 20.54575351 0.21589623 1.94610689 0.01196694 -0.01021320
+ 10.0 19.64156343 34.26658662 2.62377284 0.42861126 -0.00976569 -0.01997954
+ 10.0 -33.50298072 43.14541702 1.10503992 3.09224158 0.02172220 -0.02121984
+ 10.0 -20.79202850 -24.09713162 -2.28882549 -0.07479119 0.01364036 0.01919977
diff --git a/testsuite/tests/dph/nbody/dph-nbody-copy-opt.stdout b/testsuite/tests/dph/nbody/dph-nbody-copy-opt.stdout
new file mode 100644
index 0000000000..69fdd8b303
--- /dev/null
+++ b/testsuite/tests/dph/nbody/dph-nbody-copy-opt.stdout
@@ -0,0 +1,100 @@
+ 10.0 -7.88876745 14.40403609 0.07781862 1.41725313 0.00728077 -0.00615418
+ 10.0 -20.39602554 -5.40256368 -1.56824530 0.67893475 0.01493099 0.00782011
+ 10.0 -0.05794753 10.34183386 0.35651327 0.89460951 0.00188899 -0.00356931
+ 10.0 -4.75609397 34.74782948 1.61195437 1.87077953 0.00587195 -0.01975082
+ 10.0 36.25896362 10.82337782 2.14170846 -1.41319743 -0.02163268 -0.00507727
+ 10.0 4.02674361 -9.00872919 0.03617254 -0.88316283 -0.00122400 0.00926493
+ 10.0 42.00406508 -40.85785845 -0.76014767 -3.29738763 -0.02191949 0.02332737
+ 10.0 -22.63186030 5.80994447 -1.07420146 1.51160117 0.01670201 0.00006355
+ 10.0 16.53870540 16.94639077 1.84926442 0.20378411 -0.00879785 -0.00880553
+ 10.0 39.92854878 29.06425991 2.88523318 -1.01552251 -0.02189971 -0.01632925
+ 10.0 -17.45501954 11.39301477 -0.56641470 1.60906365 0.01371008 -0.00396360
+ 10.0 26.25934753 8.00486951 1.85024443 -0.89918952 -0.01562756 -0.00309898
+ 10.0 -9.33900099 9.24549389 -0.36060159 1.12461927 0.00801307 -0.00255620
+ 10.0 -46.47873679 -28.36980232 -2.92763912 1.44708065 0.02528654 0.01949016
+ 10.0 -12.54370842 34.21722863 1.24120256 2.21072951 0.01080973 -0.01869097
+ 10.0 -7.14048930 7.10420057 -0.36081624 0.86670872 0.00647863 -0.00118788
+ 10.0 -49.88492485 -23.33817148 -2.76602163 1.78294227 0.02720067 0.01682362
+ 10.0 -19.81399282 53.52954568 2.07232227 2.65936299 0.01424146 -0.02727658
+ 10.0 23.77418551 14.68227128 2.04725863 -0.41772276 -0.01379116 -0.00752371
+ 10.0 -5.73673778 8.93192786 -0.16259409 0.97138466 0.00562305 -0.00245174
+ 10.0 10.54277542 -1.02674862 0.84834041 -0.44100517 -0.00531874 0.00383461
+ 10.0 23.01197723 21.12299112 2.25990543 -0.12607295 -0.01291140 -0.01176114
+ 10.0 -44.78532667 12.05197921 -1.02696812 2.77848076 0.02808850 -0.00298275
+ 10.0 31.46388060 -49.75461307 -1.52046945 -3.03579919 -0.01637469 0.02786471
+ 10.0 24.84943257 -25.92687211 -0.24060772 -2.45045466 -0.01484349 0.01860299
+ 10.0 25.91948874 -30.60444211 -0.52684367 -2.60005186 -0.01516185 0.02084074
+ 10.0 -10.85946929 20.87407647 0.39902427 1.82589346 0.00972306 -0.01062660
+ 10.0 -38.51435867 1.59076858 -1.56374573 2.10935343 0.02533138 0.00325720
+ 10.0 48.51766969 -21.77175738 0.49039776 -3.14884736 -0.02642908 0.01352300
+ 10.0 5.74566172 46.44110258 2.61301762 1.41963745 -0.00049448 -0.02602402
+ 10.0 -22.88917903 -27.97906439 -2.49898486 -0.03157484 0.01438842 0.02110301
+ 10.0 31.73261776 -6.28614087 1.21728705 -1.94829313 -0.01955786 0.00624200
+ 10.0 4.24232124 19.44671943 1.21964188 1.10199242 -0.00052277 -0.01009959
+ 10.0 0.91334970 48.66777413 2.53737735 1.69247032 0.00244742 -0.02680742
+ 10.0 10.67139892 31.69558668 2.17625638 0.97201541 -0.00424894 -0.01856619
+ 10.0 12.94163719 58.29627746 3.27732262 1.10311871 -0.00411829 -0.03016643
+ 10.0 39.19514702 34.09017661 3.04651632 -0.83806079 -0.02092181 -0.01899392
+ 10.0 -24.13067759 -32.16302812 -2.68262548 -0.04506858 0.01454248 0.02301772
+ 10.0 51.78333979 -13.45956325 1.00920828 -3.03719366 -0.02816357 0.00875884
+ 10.0 -18.73188233 -17.30379387 -1.95701398 -0.00677590 0.01307052 0.01538889
+ 10.0 24.70514705 -49.06503148 -1.67808526 -2.78661149 -0.01337746 0.02867654
+ 10.0 -51.06940692 -15.61458174 -2.46357376 2.08982818 0.02835174 0.01252356
+ 10.0 -4.29154911 -29.69366786 -1.77081329 -1.27717018 0.00330457 0.02241695
+ 10.0 2.11752441 33.61609431 1.87012243 1.50451828 0.00141129 -0.01940596
+ 10.0 37.73902003 -20.32722331 0.42253535 -2.74138534 -0.02210996 0.01412198
+ 10.0 18.24940441 16.13909492 1.89723284 0.04723628 -0.00993771 -0.00831431
+ 10.0 -0.86685880 -26.00179392 -1.38458807 -1.39913472 0.00136531 0.02041813
+ 10.0 -14.99514725 -9.73327401 -1.49412678 0.04580994 0.01096177 0.01022804
+ 10.0 7.00887790 1.98168034 0.68812772 0.00896544 -0.00293511 0.00198547
+ 10.0 14.82165676 -26.61468332 -0.63832974 -2.10322539 -0.00891726 0.01991691
+ 10.0 36.97393038 41.34508248 3.24972457 -0.53759403 -0.01886630 -0.02264741
+ 10.0 13.20164819 -5.94173158 0.74976608 -0.99205532 -0.00725503 0.00697320
+ 10.0 -27.55525109 11.38230453 -0.82867230 2.04896832 0.02021279 -0.00334846
+ 10.0 44.22611452 7.91205992 2.08170876 -1.97441862 -0.02553919 -0.00334242
+ 10.0 -30.78228408 -9.00330845 -1.98277752 1.19492292 0.02083894 0.00999898
+ 10.0 21.23162596 1.68817791 1.43493089 -0.91572699 -0.01244008 0.00145281
+ 10.0 43.83049777 17.41111171 2.48943804 -1.60943360 -0.02478736 -0.00913389
+ 10.0 18.27076095 14.11054567 1.82221570 -0.03605102 -0.01008131 -0.00688670
+ 10.0 -23.16386718 14.98115804 -0.48627528 2.03701218 0.01725857 -0.00604352
+ 10.0 17.66869644 37.69009924 2.68456831 0.61313519 -0.00829888 -0.02182563
+ 10.0 -13.13453980 43.06229834 1.74152194 2.32880687 0.01088136 -0.02345547
+ 10.0 17.04551969 -8.51968300 0.74199110 -1.36393081 -0.00992090 0.00843742
+ 10.0 -12.74957582 2.86610039 -0.88706993 0.76014301 0.01004519 0.00183585
+ 10.0 -11.57352997 -3.93218467 -1.08155095 0.15539312 0.00900597 0.00634724
+ 10.0 -0.43691930 11.99128730 0.42464351 1.00896428 0.00223775 -0.00474195
+ 10.0 -18.84718297 2.59155114 -1.14765946 1.09328119 0.01395275 0.00224813
+ 10.0 26.50822037 34.91831202 2.84251996 -0.01459342 -0.01374681 -0.02010543
+ 10.0 -1.83862732 -27.40591387 -1.51844281 -1.37417813 0.00190638 0.02119551
+ 10.0 -29.61534814 -11.34773579 -2.05992588 1.01365241 0.02001716 0.01147311
+ 10.0 -1.58282077 2.69811157 -0.11418406 0.29617314 0.00265977 0.00167764
+ 10.0 2.81028701 8.79669118 0.52804717 0.69094215 -0.00005422 -0.00258329
+ 10.0 -46.98701557 11.56383052 -1.07690408 2.84555950 0.02883999 -0.00259972
+ 10.0 -3.40737443 -56.06838909 -2.91291405 -1.56839602 0.00150420 0.03217266
+ 10.0 -19.98158539 39.46428514 1.28835283 2.57214878 0.01493065 -0.02105105
+ 10.0 -44.66881930 12.46139603 -1.00158524 2.78765137 0.02804667 -0.00323063
+ 10.0 -16.39650937 23.16371517 0.32747014 2.11248239 0.01323682 -0.01177621
+ 10.0 21.95611509 7.76064067 1.72075828 -0.61228724 -0.01269236 -0.00269100
+ 10.0 -10.50904475 12.60669705 -0.19243723 1.40501570 0.00897813 -0.00484325
+ 10.0 -14.30586541 -0.91198946 -1.12740574 0.55739977 0.01090470 0.00440092
+ 10.0 -46.00705467 -6.85206507 -2.04591400 2.14319881 0.02767905 0.00814089
+ 10.0 30.41289215 -6.97966533 1.15654150 -1.91885498 -0.01852614 0.00680537
+ 10.0 -48.27660341 27.60241976 -0.13762372 3.31622222 0.02879885 -0.01161224
+ 10.0 -17.74747450 10.50189167 -0.63686673 1.56720699 0.01384037 -0.00328594
+ 10.0 54.39641806 -0.37738366 1.72976962 -2.73607215 -0.02940059 0.00129876
+ 10.0 6.47050061 -29.43922970 -1.20659479 -1.82090480 -0.00359394 0.02244751
+ 10.0 0.58954963 -13.25292294 -0.49482500 -1.03808365 0.00082873 0.01218738
+ 10.0 -12.31468078 -40.73604077 -2.60912850 -0.94516629 0.00720515 0.02765879
+ 10.0 38.13312568 24.34484548 2.69648135 -1.04260079 -0.02152543 -0.01341969
+ 10.0 -13.70564154 27.92937950 0.77625108 2.14221048 0.01158560 -0.01492998
+ 10.0 40.53583366 -0.14911602 1.65704468 -2.10583120 -0.02408788 0.00179315
+ 10.0 8.39984292 -15.41302717 -0.12676090 -1.44483730 -0.00437128 0.01330585
+ 10.0 22.44930397 -38.06973908 -1.11496697 -2.59958621 -0.01287940 0.02515562
+ 10.0 47.41809427 3.44198464 1.88610439 -2.29818650 -0.02696432 -0.00068958
+ 10.0 27.36675414 46.97814868 3.25532655 0.14568231 -0.01291442 -0.02560627
+ 10.0 -10.16897115 -22.40458265 -1.73420047 -0.76737649 0.00741932 0.01846132
+ 10.0 40.36029012 -18.88517950 0.55513182 -2.79063722 -0.02344201 0.01302615
+ 10.0 -14.39025584 20.54575351 0.21589623 1.94610689 0.01196694 -0.01021320
+ 10.0 19.64156343 34.26658662 2.62377284 0.42861126 -0.00976569 -0.01997954
+ 10.0 -33.50298072 43.14541702 1.10503992 3.09224158 0.02172220 -0.02121984
+ 10.0 -20.79202850 -24.09713162 -2.28882549 -0.07479119 0.01364036 0.01919977
diff --git a/testsuite/tests/dph/nbody/dph-nbody-vseg-fast.stdout b/testsuite/tests/dph/nbody/dph-nbody-vseg-fast.stdout
new file mode 100644
index 0000000000..69fdd8b303
--- /dev/null
+++ b/testsuite/tests/dph/nbody/dph-nbody-vseg-fast.stdout
@@ -0,0 +1,100 @@
+ 10.0 -7.88876745 14.40403609 0.07781862 1.41725313 0.00728077 -0.00615418
+ 10.0 -20.39602554 -5.40256368 -1.56824530 0.67893475 0.01493099 0.00782011
+ 10.0 -0.05794753 10.34183386 0.35651327 0.89460951 0.00188899 -0.00356931
+ 10.0 -4.75609397 34.74782948 1.61195437 1.87077953 0.00587195 -0.01975082
+ 10.0 36.25896362 10.82337782 2.14170846 -1.41319743 -0.02163268 -0.00507727
+ 10.0 4.02674361 -9.00872919 0.03617254 -0.88316283 -0.00122400 0.00926493
+ 10.0 42.00406508 -40.85785845 -0.76014767 -3.29738763 -0.02191949 0.02332737
+ 10.0 -22.63186030 5.80994447 -1.07420146 1.51160117 0.01670201 0.00006355
+ 10.0 16.53870540 16.94639077 1.84926442 0.20378411 -0.00879785 -0.00880553
+ 10.0 39.92854878 29.06425991 2.88523318 -1.01552251 -0.02189971 -0.01632925
+ 10.0 -17.45501954 11.39301477 -0.56641470 1.60906365 0.01371008 -0.00396360
+ 10.0 26.25934753 8.00486951 1.85024443 -0.89918952 -0.01562756 -0.00309898
+ 10.0 -9.33900099 9.24549389 -0.36060159 1.12461927 0.00801307 -0.00255620
+ 10.0 -46.47873679 -28.36980232 -2.92763912 1.44708065 0.02528654 0.01949016
+ 10.0 -12.54370842 34.21722863 1.24120256 2.21072951 0.01080973 -0.01869097
+ 10.0 -7.14048930 7.10420057 -0.36081624 0.86670872 0.00647863 -0.00118788
+ 10.0 -49.88492485 -23.33817148 -2.76602163 1.78294227 0.02720067 0.01682362
+ 10.0 -19.81399282 53.52954568 2.07232227 2.65936299 0.01424146 -0.02727658
+ 10.0 23.77418551 14.68227128 2.04725863 -0.41772276 -0.01379116 -0.00752371
+ 10.0 -5.73673778 8.93192786 -0.16259409 0.97138466 0.00562305 -0.00245174
+ 10.0 10.54277542 -1.02674862 0.84834041 -0.44100517 -0.00531874 0.00383461
+ 10.0 23.01197723 21.12299112 2.25990543 -0.12607295 -0.01291140 -0.01176114
+ 10.0 -44.78532667 12.05197921 -1.02696812 2.77848076 0.02808850 -0.00298275
+ 10.0 31.46388060 -49.75461307 -1.52046945 -3.03579919 -0.01637469 0.02786471
+ 10.0 24.84943257 -25.92687211 -0.24060772 -2.45045466 -0.01484349 0.01860299
+ 10.0 25.91948874 -30.60444211 -0.52684367 -2.60005186 -0.01516185 0.02084074
+ 10.0 -10.85946929 20.87407647 0.39902427 1.82589346 0.00972306 -0.01062660
+ 10.0 -38.51435867 1.59076858 -1.56374573 2.10935343 0.02533138 0.00325720
+ 10.0 48.51766969 -21.77175738 0.49039776 -3.14884736 -0.02642908 0.01352300
+ 10.0 5.74566172 46.44110258 2.61301762 1.41963745 -0.00049448 -0.02602402
+ 10.0 -22.88917903 -27.97906439 -2.49898486 -0.03157484 0.01438842 0.02110301
+ 10.0 31.73261776 -6.28614087 1.21728705 -1.94829313 -0.01955786 0.00624200
+ 10.0 4.24232124 19.44671943 1.21964188 1.10199242 -0.00052277 -0.01009959
+ 10.0 0.91334970 48.66777413 2.53737735 1.69247032 0.00244742 -0.02680742
+ 10.0 10.67139892 31.69558668 2.17625638 0.97201541 -0.00424894 -0.01856619
+ 10.0 12.94163719 58.29627746 3.27732262 1.10311871 -0.00411829 -0.03016643
+ 10.0 39.19514702 34.09017661 3.04651632 -0.83806079 -0.02092181 -0.01899392
+ 10.0 -24.13067759 -32.16302812 -2.68262548 -0.04506858 0.01454248 0.02301772
+ 10.0 51.78333979 -13.45956325 1.00920828 -3.03719366 -0.02816357 0.00875884
+ 10.0 -18.73188233 -17.30379387 -1.95701398 -0.00677590 0.01307052 0.01538889
+ 10.0 24.70514705 -49.06503148 -1.67808526 -2.78661149 -0.01337746 0.02867654
+ 10.0 -51.06940692 -15.61458174 -2.46357376 2.08982818 0.02835174 0.01252356
+ 10.0 -4.29154911 -29.69366786 -1.77081329 -1.27717018 0.00330457 0.02241695
+ 10.0 2.11752441 33.61609431 1.87012243 1.50451828 0.00141129 -0.01940596
+ 10.0 37.73902003 -20.32722331 0.42253535 -2.74138534 -0.02210996 0.01412198
+ 10.0 18.24940441 16.13909492 1.89723284 0.04723628 -0.00993771 -0.00831431
+ 10.0 -0.86685880 -26.00179392 -1.38458807 -1.39913472 0.00136531 0.02041813
+ 10.0 -14.99514725 -9.73327401 -1.49412678 0.04580994 0.01096177 0.01022804
+ 10.0 7.00887790 1.98168034 0.68812772 0.00896544 -0.00293511 0.00198547
+ 10.0 14.82165676 -26.61468332 -0.63832974 -2.10322539 -0.00891726 0.01991691
+ 10.0 36.97393038 41.34508248 3.24972457 -0.53759403 -0.01886630 -0.02264741
+ 10.0 13.20164819 -5.94173158 0.74976608 -0.99205532 -0.00725503 0.00697320
+ 10.0 -27.55525109 11.38230453 -0.82867230 2.04896832 0.02021279 -0.00334846
+ 10.0 44.22611452 7.91205992 2.08170876 -1.97441862 -0.02553919 -0.00334242
+ 10.0 -30.78228408 -9.00330845 -1.98277752 1.19492292 0.02083894 0.00999898
+ 10.0 21.23162596 1.68817791 1.43493089 -0.91572699 -0.01244008 0.00145281
+ 10.0 43.83049777 17.41111171 2.48943804 -1.60943360 -0.02478736 -0.00913389
+ 10.0 18.27076095 14.11054567 1.82221570 -0.03605102 -0.01008131 -0.00688670
+ 10.0 -23.16386718 14.98115804 -0.48627528 2.03701218 0.01725857 -0.00604352
+ 10.0 17.66869644 37.69009924 2.68456831 0.61313519 -0.00829888 -0.02182563
+ 10.0 -13.13453980 43.06229834 1.74152194 2.32880687 0.01088136 -0.02345547
+ 10.0 17.04551969 -8.51968300 0.74199110 -1.36393081 -0.00992090 0.00843742
+ 10.0 -12.74957582 2.86610039 -0.88706993 0.76014301 0.01004519 0.00183585
+ 10.0 -11.57352997 -3.93218467 -1.08155095 0.15539312 0.00900597 0.00634724
+ 10.0 -0.43691930 11.99128730 0.42464351 1.00896428 0.00223775 -0.00474195
+ 10.0 -18.84718297 2.59155114 -1.14765946 1.09328119 0.01395275 0.00224813
+ 10.0 26.50822037 34.91831202 2.84251996 -0.01459342 -0.01374681 -0.02010543
+ 10.0 -1.83862732 -27.40591387 -1.51844281 -1.37417813 0.00190638 0.02119551
+ 10.0 -29.61534814 -11.34773579 -2.05992588 1.01365241 0.02001716 0.01147311
+ 10.0 -1.58282077 2.69811157 -0.11418406 0.29617314 0.00265977 0.00167764
+ 10.0 2.81028701 8.79669118 0.52804717 0.69094215 -0.00005422 -0.00258329
+ 10.0 -46.98701557 11.56383052 -1.07690408 2.84555950 0.02883999 -0.00259972
+ 10.0 -3.40737443 -56.06838909 -2.91291405 -1.56839602 0.00150420 0.03217266
+ 10.0 -19.98158539 39.46428514 1.28835283 2.57214878 0.01493065 -0.02105105
+ 10.0 -44.66881930 12.46139603 -1.00158524 2.78765137 0.02804667 -0.00323063
+ 10.0 -16.39650937 23.16371517 0.32747014 2.11248239 0.01323682 -0.01177621
+ 10.0 21.95611509 7.76064067 1.72075828 -0.61228724 -0.01269236 -0.00269100
+ 10.0 -10.50904475 12.60669705 -0.19243723 1.40501570 0.00897813 -0.00484325
+ 10.0 -14.30586541 -0.91198946 -1.12740574 0.55739977 0.01090470 0.00440092
+ 10.0 -46.00705467 -6.85206507 -2.04591400 2.14319881 0.02767905 0.00814089
+ 10.0 30.41289215 -6.97966533 1.15654150 -1.91885498 -0.01852614 0.00680537
+ 10.0 -48.27660341 27.60241976 -0.13762372 3.31622222 0.02879885 -0.01161224
+ 10.0 -17.74747450 10.50189167 -0.63686673 1.56720699 0.01384037 -0.00328594
+ 10.0 54.39641806 -0.37738366 1.72976962 -2.73607215 -0.02940059 0.00129876
+ 10.0 6.47050061 -29.43922970 -1.20659479 -1.82090480 -0.00359394 0.02244751
+ 10.0 0.58954963 -13.25292294 -0.49482500 -1.03808365 0.00082873 0.01218738
+ 10.0 -12.31468078 -40.73604077 -2.60912850 -0.94516629 0.00720515 0.02765879
+ 10.0 38.13312568 24.34484548 2.69648135 -1.04260079 -0.02152543 -0.01341969
+ 10.0 -13.70564154 27.92937950 0.77625108 2.14221048 0.01158560 -0.01492998
+ 10.0 40.53583366 -0.14911602 1.65704468 -2.10583120 -0.02408788 0.00179315
+ 10.0 8.39984292 -15.41302717 -0.12676090 -1.44483730 -0.00437128 0.01330585
+ 10.0 22.44930397 -38.06973908 -1.11496697 -2.59958621 -0.01287940 0.02515562
+ 10.0 47.41809427 3.44198464 1.88610439 -2.29818650 -0.02696432 -0.00068958
+ 10.0 27.36675414 46.97814868 3.25532655 0.14568231 -0.01291442 -0.02560627
+ 10.0 -10.16897115 -22.40458265 -1.73420047 -0.76737649 0.00741932 0.01846132
+ 10.0 40.36029012 -18.88517950 0.55513182 -2.79063722 -0.02344201 0.01302615
+ 10.0 -14.39025584 20.54575351 0.21589623 1.94610689 0.01196694 -0.01021320
+ 10.0 19.64156343 34.26658662 2.62377284 0.42861126 -0.00976569 -0.01997954
+ 10.0 -33.50298072 43.14541702 1.10503992 3.09224158 0.02172220 -0.02121984
+ 10.0 -20.79202850 -24.09713162 -2.28882549 -0.07479119 0.01364036 0.01919977
diff --git a/testsuite/tests/dph/nbody/dph-nbody-vseg-opt.stdout b/testsuite/tests/dph/nbody/dph-nbody-vseg-opt.stdout
new file mode 100644
index 0000000000..69fdd8b303
--- /dev/null
+++ b/testsuite/tests/dph/nbody/dph-nbody-vseg-opt.stdout
@@ -0,0 +1,100 @@
+ 10.0 -7.88876745 14.40403609 0.07781862 1.41725313 0.00728077 -0.00615418
+ 10.0 -20.39602554 -5.40256368 -1.56824530 0.67893475 0.01493099 0.00782011
+ 10.0 -0.05794753 10.34183386 0.35651327 0.89460951 0.00188899 -0.00356931
+ 10.0 -4.75609397 34.74782948 1.61195437 1.87077953 0.00587195 -0.01975082
+ 10.0 36.25896362 10.82337782 2.14170846 -1.41319743 -0.02163268 -0.00507727
+ 10.0 4.02674361 -9.00872919 0.03617254 -0.88316283 -0.00122400 0.00926493
+ 10.0 42.00406508 -40.85785845 -0.76014767 -3.29738763 -0.02191949 0.02332737
+ 10.0 -22.63186030 5.80994447 -1.07420146 1.51160117 0.01670201 0.00006355
+ 10.0 16.53870540 16.94639077 1.84926442 0.20378411 -0.00879785 -0.00880553
+ 10.0 39.92854878 29.06425991 2.88523318 -1.01552251 -0.02189971 -0.01632925
+ 10.0 -17.45501954 11.39301477 -0.56641470 1.60906365 0.01371008 -0.00396360
+ 10.0 26.25934753 8.00486951 1.85024443 -0.89918952 -0.01562756 -0.00309898
+ 10.0 -9.33900099 9.24549389 -0.36060159 1.12461927 0.00801307 -0.00255620
+ 10.0 -46.47873679 -28.36980232 -2.92763912 1.44708065 0.02528654 0.01949016
+ 10.0 -12.54370842 34.21722863 1.24120256 2.21072951 0.01080973 -0.01869097
+ 10.0 -7.14048930 7.10420057 -0.36081624 0.86670872 0.00647863 -0.00118788
+ 10.0 -49.88492485 -23.33817148 -2.76602163 1.78294227 0.02720067 0.01682362
+ 10.0 -19.81399282 53.52954568 2.07232227 2.65936299 0.01424146 -0.02727658
+ 10.0 23.77418551 14.68227128 2.04725863 -0.41772276 -0.01379116 -0.00752371
+ 10.0 -5.73673778 8.93192786 -0.16259409 0.97138466 0.00562305 -0.00245174
+ 10.0 10.54277542 -1.02674862 0.84834041 -0.44100517 -0.00531874 0.00383461
+ 10.0 23.01197723 21.12299112 2.25990543 -0.12607295 -0.01291140 -0.01176114
+ 10.0 -44.78532667 12.05197921 -1.02696812 2.77848076 0.02808850 -0.00298275
+ 10.0 31.46388060 -49.75461307 -1.52046945 -3.03579919 -0.01637469 0.02786471
+ 10.0 24.84943257 -25.92687211 -0.24060772 -2.45045466 -0.01484349 0.01860299
+ 10.0 25.91948874 -30.60444211 -0.52684367 -2.60005186 -0.01516185 0.02084074
+ 10.0 -10.85946929 20.87407647 0.39902427 1.82589346 0.00972306 -0.01062660
+ 10.0 -38.51435867 1.59076858 -1.56374573 2.10935343 0.02533138 0.00325720
+ 10.0 48.51766969 -21.77175738 0.49039776 -3.14884736 -0.02642908 0.01352300
+ 10.0 5.74566172 46.44110258 2.61301762 1.41963745 -0.00049448 -0.02602402
+ 10.0 -22.88917903 -27.97906439 -2.49898486 -0.03157484 0.01438842 0.02110301
+ 10.0 31.73261776 -6.28614087 1.21728705 -1.94829313 -0.01955786 0.00624200
+ 10.0 4.24232124 19.44671943 1.21964188 1.10199242 -0.00052277 -0.01009959
+ 10.0 0.91334970 48.66777413 2.53737735 1.69247032 0.00244742 -0.02680742
+ 10.0 10.67139892 31.69558668 2.17625638 0.97201541 -0.00424894 -0.01856619
+ 10.0 12.94163719 58.29627746 3.27732262 1.10311871 -0.00411829 -0.03016643
+ 10.0 39.19514702 34.09017661 3.04651632 -0.83806079 -0.02092181 -0.01899392
+ 10.0 -24.13067759 -32.16302812 -2.68262548 -0.04506858 0.01454248 0.02301772
+ 10.0 51.78333979 -13.45956325 1.00920828 -3.03719366 -0.02816357 0.00875884
+ 10.0 -18.73188233 -17.30379387 -1.95701398 -0.00677590 0.01307052 0.01538889
+ 10.0 24.70514705 -49.06503148 -1.67808526 -2.78661149 -0.01337746 0.02867654
+ 10.0 -51.06940692 -15.61458174 -2.46357376 2.08982818 0.02835174 0.01252356
+ 10.0 -4.29154911 -29.69366786 -1.77081329 -1.27717018 0.00330457 0.02241695
+ 10.0 2.11752441 33.61609431 1.87012243 1.50451828 0.00141129 -0.01940596
+ 10.0 37.73902003 -20.32722331 0.42253535 -2.74138534 -0.02210996 0.01412198
+ 10.0 18.24940441 16.13909492 1.89723284 0.04723628 -0.00993771 -0.00831431
+ 10.0 -0.86685880 -26.00179392 -1.38458807 -1.39913472 0.00136531 0.02041813
+ 10.0 -14.99514725 -9.73327401 -1.49412678 0.04580994 0.01096177 0.01022804
+ 10.0 7.00887790 1.98168034 0.68812772 0.00896544 -0.00293511 0.00198547
+ 10.0 14.82165676 -26.61468332 -0.63832974 -2.10322539 -0.00891726 0.01991691
+ 10.0 36.97393038 41.34508248 3.24972457 -0.53759403 -0.01886630 -0.02264741
+ 10.0 13.20164819 -5.94173158 0.74976608 -0.99205532 -0.00725503 0.00697320
+ 10.0 -27.55525109 11.38230453 -0.82867230 2.04896832 0.02021279 -0.00334846
+ 10.0 44.22611452 7.91205992 2.08170876 -1.97441862 -0.02553919 -0.00334242
+ 10.0 -30.78228408 -9.00330845 -1.98277752 1.19492292 0.02083894 0.00999898
+ 10.0 21.23162596 1.68817791 1.43493089 -0.91572699 -0.01244008 0.00145281
+ 10.0 43.83049777 17.41111171 2.48943804 -1.60943360 -0.02478736 -0.00913389
+ 10.0 18.27076095 14.11054567 1.82221570 -0.03605102 -0.01008131 -0.00688670
+ 10.0 -23.16386718 14.98115804 -0.48627528 2.03701218 0.01725857 -0.00604352
+ 10.0 17.66869644 37.69009924 2.68456831 0.61313519 -0.00829888 -0.02182563
+ 10.0 -13.13453980 43.06229834 1.74152194 2.32880687 0.01088136 -0.02345547
+ 10.0 17.04551969 -8.51968300 0.74199110 -1.36393081 -0.00992090 0.00843742
+ 10.0 -12.74957582 2.86610039 -0.88706993 0.76014301 0.01004519 0.00183585
+ 10.0 -11.57352997 -3.93218467 -1.08155095 0.15539312 0.00900597 0.00634724
+ 10.0 -0.43691930 11.99128730 0.42464351 1.00896428 0.00223775 -0.00474195
+ 10.0 -18.84718297 2.59155114 -1.14765946 1.09328119 0.01395275 0.00224813
+ 10.0 26.50822037 34.91831202 2.84251996 -0.01459342 -0.01374681 -0.02010543
+ 10.0 -1.83862732 -27.40591387 -1.51844281 -1.37417813 0.00190638 0.02119551
+ 10.0 -29.61534814 -11.34773579 -2.05992588 1.01365241 0.02001716 0.01147311
+ 10.0 -1.58282077 2.69811157 -0.11418406 0.29617314 0.00265977 0.00167764
+ 10.0 2.81028701 8.79669118 0.52804717 0.69094215 -0.00005422 -0.00258329
+ 10.0 -46.98701557 11.56383052 -1.07690408 2.84555950 0.02883999 -0.00259972
+ 10.0 -3.40737443 -56.06838909 -2.91291405 -1.56839602 0.00150420 0.03217266
+ 10.0 -19.98158539 39.46428514 1.28835283 2.57214878 0.01493065 -0.02105105
+ 10.0 -44.66881930 12.46139603 -1.00158524 2.78765137 0.02804667 -0.00323063
+ 10.0 -16.39650937 23.16371517 0.32747014 2.11248239 0.01323682 -0.01177621
+ 10.0 21.95611509 7.76064067 1.72075828 -0.61228724 -0.01269236 -0.00269100
+ 10.0 -10.50904475 12.60669705 -0.19243723 1.40501570 0.00897813 -0.00484325
+ 10.0 -14.30586541 -0.91198946 -1.12740574 0.55739977 0.01090470 0.00440092
+ 10.0 -46.00705467 -6.85206507 -2.04591400 2.14319881 0.02767905 0.00814089
+ 10.0 30.41289215 -6.97966533 1.15654150 -1.91885498 -0.01852614 0.00680537
+ 10.0 -48.27660341 27.60241976 -0.13762372 3.31622222 0.02879885 -0.01161224
+ 10.0 -17.74747450 10.50189167 -0.63686673 1.56720699 0.01384037 -0.00328594
+ 10.0 54.39641806 -0.37738366 1.72976962 -2.73607215 -0.02940059 0.00129876
+ 10.0 6.47050061 -29.43922970 -1.20659479 -1.82090480 -0.00359394 0.02244751
+ 10.0 0.58954963 -13.25292294 -0.49482500 -1.03808365 0.00082873 0.01218738
+ 10.0 -12.31468078 -40.73604077 -2.60912850 -0.94516629 0.00720515 0.02765879
+ 10.0 38.13312568 24.34484548 2.69648135 -1.04260079 -0.02152543 -0.01341969
+ 10.0 -13.70564154 27.92937950 0.77625108 2.14221048 0.01158560 -0.01492998
+ 10.0 40.53583366 -0.14911602 1.65704468 -2.10583120 -0.02408788 0.00179315
+ 10.0 8.39984292 -15.41302717 -0.12676090 -1.44483730 -0.00437128 0.01330585
+ 10.0 22.44930397 -38.06973908 -1.11496697 -2.59958621 -0.01287940 0.02515562
+ 10.0 47.41809427 3.44198464 1.88610439 -2.29818650 -0.02696432 -0.00068958
+ 10.0 27.36675414 46.97814868 3.25532655 0.14568231 -0.01291442 -0.02560627
+ 10.0 -10.16897115 -22.40458265 -1.73420047 -0.76737649 0.00741932 0.01846132
+ 10.0 40.36029012 -18.88517950 0.55513182 -2.79063722 -0.02344201 0.01302615
+ 10.0 -14.39025584 20.54575351 0.21589623 1.94610689 0.01196694 -0.01021320
+ 10.0 19.64156343 34.26658662 2.62377284 0.42861126 -0.00976569 -0.01997954
+ 10.0 -33.50298072 43.14541702 1.10503992 3.09224158 0.02172220 -0.02121984
+ 10.0 -20.79202850 -24.09713162 -2.28882549 -0.07479119 0.01364036 0.01919977
diff --git a/testsuite/tests/dph/nbody/dph-nbody.T b/testsuite/tests/dph/nbody/dph-nbody.T
new file mode 100644
index 0000000000..c250f2461f
--- /dev/null
+++ b/testsuite/tests/dph/nbody/dph-nbody.T
@@ -0,0 +1,81 @@
+
+test ('dph-nbody-vseg-opt'
+ , [ alone
+ , skip_if_fast
+ , extra_clean(['Main.hi', 'Main.o',
+ 'Body.hi', 'Body.o',
+ 'Config.hi', 'Config.o',
+ 'Dump.hi', 'Dump.o',
+ 'Solver.hi', 'Solver.o',
+ 'Util.hi', 'Util.o',
+ 'World.hi', 'World.o',
+ 'Types.hi', 'Types.o',
+ 'Generate.hi', 'Generate.o',
+ 'Randomish.hi', 'Randomish.o'])
+ , reqlib('dph-lifted-vseg')
+ , reqlib('dph-prim-par')
+ , only_ways(['normal', 'threaded1', 'threaded2']) ]
+ , multimod_compile_and_run
+ , [ 'Main'
+ , '-Odph -fno-liberate-case -package dph-lifted-vseg -package dph-prim-par'])
+
+
+test ('dph-nbody-copy-opt'
+ , [ alone
+ , skip_if_fast
+ , extra_clean(['Main.hi', 'Main.o',
+ 'Body.hi', 'Body.o',
+ 'Config.hi', 'Config.o',
+ 'Dump.hi', 'Dump.o',
+ 'Solver.hi', 'Solver.o',
+ 'Util.hi', 'Util.o',
+ 'World.hi', 'World.o',
+ 'Types.hi', 'Types.o',
+ 'Generate.hi', 'Generate.o',
+ 'Randomish.hi', 'Randomish.o'])
+ , reqlib('dph-lifted-copy')
+ , reqlib('dph-prim-par')
+ , only_ways(['normal', 'threaded1', 'threaded2']) ]
+ , multimod_compile_and_run
+ , [ 'Main'
+ , '-Odph -fno-liberate-case -package dph-lifted-copy -package dph-prim-par'])
+
+
+test ('dph-nbody-vseg-fast'
+ , [ alone
+ , extra_clean(['Main.hi', 'Main.o',
+ 'Body.hi', 'Body.o',
+ 'Config.hi', 'Config.o',
+ 'Dump.hi', 'Dump.o',
+ 'Solver.hi', 'Solver.o',
+ 'Util.hi', 'Util.o',
+ 'World.hi', 'World.o',
+ 'Types.hi', 'Types.o',
+ 'Generate.hi', 'Generate.o',
+ 'Randomish.hi', 'Randomish.o'])
+ , reqlib('dph-lifted-vseg')
+ , reqlib('dph-prim-par')
+ , only_ways(['normal', 'threaded1', 'threaded2']) ]
+ , multimod_compile_and_run
+ , [ 'Main'
+ , '-O0 -package dph-lifted-vseg -package dph-prim-par'])
+
+
+test ('dph-nbody-copy-fast'
+ , [ alone
+ , extra_clean(['Main.hi', 'Main.o',
+ 'Body.hi', 'Body.o',
+ 'Config.hi', 'Config.o',
+ 'Dump.hi', 'Dump.o',
+ 'Solver.hi', 'Solver.o',
+ 'Util.hi', 'Util.o',
+ 'World.hi', 'World.o',
+ 'Types.hi', 'Types.o',
+ 'Generate.hi', 'Generate.o',
+ 'Randomish.hi', 'Randomish.o'])
+ , reqlib('dph-lifted-copy')
+ , reqlib('dph-prim-par')
+ , only_ways(['normal', 'threaded1', 'threaded2']) ]
+ , multimod_compile_and_run
+ , [ 'Main'
+ , '-O0 -package dph-lifted-copy -package dph-prim-par'])
diff --git a/testsuite/tests/dph/primespj/dph-primespj-fast.stdout b/testsuite/tests/dph/primespj/dph-primespj-copy-fast.stdout
index d935f68b11..d935f68b11 100644
--- a/testsuite/tests/dph/primespj/dph-primespj-fast.stdout
+++ b/testsuite/tests/dph/primespj/dph-primespj-copy-fast.stdout
diff --git a/testsuite/tests/dph/primespj/dph-primespj-opt.stdout b/testsuite/tests/dph/primespj/dph-primespj-copy-opt.stdout
index d935f68b11..d935f68b11 100644
--- a/testsuite/tests/dph/primespj/dph-primespj-opt.stdout
+++ b/testsuite/tests/dph/primespj/dph-primespj-copy-opt.stdout
diff --git a/testsuite/tests/dph/primespj/dph-primespj-vseg-fast.stdout b/testsuite/tests/dph/primespj/dph-primespj-vseg-fast.stdout
new file mode 100644
index 0000000000..d935f68b11
--- /dev/null
+++ b/testsuite/tests/dph/primespj/dph-primespj-vseg-fast.stdout
@@ -0,0 +1,3 @@
+[2,3,5,7,11,13,17,19,23,29,31,37,41,43,47,53,59,61,67,71,73,79,83,89,97,101,103,107,109,113,127,131,137,139,149,151,157,163,167,173,179,181,191,193,197,199,211,223,227,229,233,239,241,251,257,263,269,271,277,281,283,293,307,311,313,317,331,337,347,349,353,359,367,373,379,383,389,397,401,409,419,421,431,433,439,443,449,457,461,463,467,479,487,491,499,503,509,521,523,541,547,557,563,569,571,577,587,593,599,601,607,613,617,619,631,641,643,647,653,659,661,673,677,683,691,701,709,719,727,733,739,743,751,757,761,769,773,787,797,809,811,821,823,827,829,839,853,857,859,863,877,881,883,887,907,911,919,929,937,941,947,953,967,971,977,983,991,997]
+[2,3,5,7,11,13,17,19,23,29,31,37,41,43,47,53,59,61,67,71,73,79,83,89,97,101,103,107,109,113,127,131,137,139,149,151,157,163,167,173,179,181,191,193,197,199,211,223,227,229,233,239,241,251,257,263,269,271,277,281,283,293,307,311,313,317,331,337,347,349,353,359,367,373,379,383,389,397,401,409,419,421,431,433,439,443,449,457,461,463,467,479,487,491,499,503,509,521,523,541,547,557,563,569,571,577,587,593,599,601,607,613,617,619,631,641,643,647,653,659,661,673,677,683,691,701,709,719,727,733,739,743,751,757,761,769,773,787,797,809,811,821,823,827,829,839,853,857,859,863,877,881,883,887,907,911,919,929,937,941,947,953,967,971,977,983,991,997]
+True
diff --git a/testsuite/tests/dph/primespj/dph-primespj-vseg-opt.stdout b/testsuite/tests/dph/primespj/dph-primespj-vseg-opt.stdout
new file mode 100644
index 0000000000..d935f68b11
--- /dev/null
+++ b/testsuite/tests/dph/primespj/dph-primespj-vseg-opt.stdout
@@ -0,0 +1,3 @@
+[2,3,5,7,11,13,17,19,23,29,31,37,41,43,47,53,59,61,67,71,73,79,83,89,97,101,103,107,109,113,127,131,137,139,149,151,157,163,167,173,179,181,191,193,197,199,211,223,227,229,233,239,241,251,257,263,269,271,277,281,283,293,307,311,313,317,331,337,347,349,353,359,367,373,379,383,389,397,401,409,419,421,431,433,439,443,449,457,461,463,467,479,487,491,499,503,509,521,523,541,547,557,563,569,571,577,587,593,599,601,607,613,617,619,631,641,643,647,653,659,661,673,677,683,691,701,709,719,727,733,739,743,751,757,761,769,773,787,797,809,811,821,823,827,829,839,853,857,859,863,877,881,883,887,907,911,919,929,937,941,947,953,967,971,977,983,991,997]
+[2,3,5,7,11,13,17,19,23,29,31,37,41,43,47,53,59,61,67,71,73,79,83,89,97,101,103,107,109,113,127,131,137,139,149,151,157,163,167,173,179,181,191,193,197,199,211,223,227,229,233,239,241,251,257,263,269,271,277,281,283,293,307,311,313,317,331,337,347,349,353,359,367,373,379,383,389,397,401,409,419,421,431,433,439,443,449,457,461,463,467,479,487,491,499,503,509,521,523,541,547,557,563,569,571,577,587,593,599,601,607,613,617,619,631,641,643,647,653,659,661,673,677,683,691,701,709,719,727,733,739,743,751,757,761,769,773,787,797,809,811,821,823,827,829,839,853,857,859,863,877,881,883,887,907,911,919,929,937,941,947,953,967,971,977,983,991,997]
+True
diff --git a/testsuite/tests/dph/primespj/dph-primespj.T b/testsuite/tests/dph/primespj/dph-primespj.T
index 4d24861118..46b744439e 100644
--- a/testsuite/tests/dph/primespj/dph-primespj.T
+++ b/testsuite/tests/dph/primespj/dph-primespj.T
@@ -1,5 +1,5 @@
-test ('dph-primespj-opt'
+test ('dph-primespj-copy-opt'
, [ alone
, skip_if_fast
, extra_clean(['Main.hi', 'Main.o', 'PrimesVect.hi', 'PrimesVect.o'])
@@ -10,8 +10,9 @@ test ('dph-primespj-opt'
, [ 'Main'
, '-Odph -package dph-lifted-copy'])
-test ('dph-primespj-fast'
- , [ extra_clean(['Main.hi', 'Main.o', 'PrimesVect.hi', 'PrimesVect.o'])
+test ('dph-primespj-copy-fast'
+ , [ alone
+ , extra_clean(['Main.hi', 'Main.o', 'PrimesVect.hi', 'PrimesVect.o'])
, reqlib('dph-lifted-copy')
, reqlib('dph-prim-par')
, only_ways(['normal', 'threaded1', 'threaded2']) ]
@@ -19,3 +20,4 @@ test ('dph-primespj-fast'
, [ 'Main'
, '-O -fno-enable-rewrite-rules -package dph-lifted-copy'])
+
diff --git a/testsuite/tests/dph/quickhull/Main.hs b/testsuite/tests/dph/quickhull/Main.hs
index 5c1f9e6b01..718a1630ef 100644
--- a/testsuite/tests/dph/quickhull/Main.hs
+++ b/testsuite/tests/dph/quickhull/Main.hs
@@ -21,7 +21,7 @@ runQuickhull pts
= let result = quickhull pts
resxs = P.toUArray (QH.xsOf result)
resys = P.toUArray (QH.ysOf result)
- in resxs U.!: 0 `seq` (zip (U.toList resxs) (U.toList resys))
+ in U.index "runQuickhull" resxs 0 `seq` (zip (U.toList resxs) (U.toList resys))
-- Main Program ---------------------------------------------------------------
diff --git a/testsuite/tests/dph/quickhull/QuickHullVect.hs b/testsuite/tests/dph/quickhull/QuickHullVect.hs
index 29aaa4a823..e0ad75858d 100644
--- a/testsuite/tests/dph/quickhull/QuickHullVect.hs
+++ b/testsuite/tests/dph/quickhull/QuickHullVect.hs
@@ -6,14 +6,14 @@ module QuickHullVect (quickhull) where
import Types
import Data.Array.Parallel
-import Data.Array.Parallel.Prelude.Double
+import Data.Array.Parallel.Prelude.Double as D
import qualified Data.Array.Parallel.Prelude.Int as Int
import qualified Prelude as P
distance :: Point -> Line -> Double
distance (xo, yo) ((x1, y1), (x2, y2))
- = (x1-xo) * (y2 - yo) - (y1 - yo) * (x2 - xo)
+ = (x1 D.- xo) D.* (y2 D.- yo) D.- (y1 D.- yo) D.* (x2 D.- xo)
hsplit :: [:Point:] -> Line -> [:Point:]
hsplit points line@(p1, p2)
@@ -22,7 +22,7 @@ hsplit points line@(p1, p2)
= concatP [: hsplit packed ends | ends <- [:(p1, pm), (pm, p2):] :]
where
cross = [: distance p line | p <- points :]
- packed = [: p | (p,c) <- zipP points cross, c > 0.0 :]
+ packed = [: p | (p,c) <- zipP points cross, c D.> 0.0 :]
pm = points !: maxIndexP cross
quickHull' :: [:Point:] -> [:Point:]
diff --git a/testsuite/tests/dph/quickhull/TestData.hs b/testsuite/tests/dph/quickhull/TestData.hs
index da112f1c99..2d07354de7 100644
--- a/testsuite/tests/dph/quickhull/TestData.hs
+++ b/testsuite/tests/dph/quickhull/TestData.hs
@@ -86,7 +86,7 @@ toPArrayPoints ps
-- | Force points to be evaluated
force pts
- = P.toUArray (QH.xsOf pts) U.!: 0 D.+
- P.toUArray (QH.ysOf pts) U.!: 0
+ = U.index "TestData" (P.toUArray (QH.xsOf pts)) 0 D.+
+ U.index "TestData" (P.toUArray (QH.ysOf pts)) 0
diff --git a/testsuite/tests/dph/quickhull/dph-quickhull-fast.stdout b/testsuite/tests/dph/quickhull/dph-quickhull-copy-fast.stdout
index f6b2d92e9a..f6b2d92e9a 100644
--- a/testsuite/tests/dph/quickhull/dph-quickhull-fast.stdout
+++ b/testsuite/tests/dph/quickhull/dph-quickhull-copy-fast.stdout
diff --git a/testsuite/tests/dph/quickhull/dph-quickhull-opt.stdout b/testsuite/tests/dph/quickhull/dph-quickhull-copy-opt.stdout
index f6b2d92e9a..f6b2d92e9a 100644
--- a/testsuite/tests/dph/quickhull/dph-quickhull-opt.stdout
+++ b/testsuite/tests/dph/quickhull/dph-quickhull-copy-opt.stdout
diff --git a/testsuite/tests/dph/quickhull/dph-quickhull-vseg-fast.stdout b/testsuite/tests/dph/quickhull/dph-quickhull-vseg-fast.stdout
new file mode 100644
index 0000000000..f6b2d92e9a
--- /dev/null
+++ b/testsuite/tests/dph/quickhull/dph-quickhull-vseg-fast.stdout
@@ -0,0 +1,1019 @@
+<svg width="100%" height="100%" version="1.1" xmlns="http://www.w3.org/2000/svg">
+<polygon points="20,98 50,246 83,354 164,416 236,434 343,427 366,412 379,402 519,143 528,126 529,115 510,96 506,95 117,33 85,28 40,64 " style="fill:#d0d0ff;stroke:#000000;stroke-width:1"/>
+<circle cx="217" cy="201" r="0.5" style="stroke:#000000"/>
+<circle cx="310" cy="266" r="0.5" style="stroke:#000000"/>
+<circle cx="191" cy="353" r="0.5" style="stroke:#000000"/>
+<circle cx="164" cy="416" r="0.5" style="stroke:#000000"/>
+<circle cx="232" cy="257" r="0.5" style="stroke:#000000"/>
+<circle cx="266" cy="398" r="0.5" style="stroke:#000000"/>
+<circle cx="350" cy="201" r="0.5" style="stroke:#000000"/>
+<circle cx="334" cy="202" r="0.5" style="stroke:#000000"/>
+<circle cx="189" cy="151" r="0.5" style="stroke:#000000"/>
+<circle cx="308" cy="307" r="0.5" style="stroke:#000000"/>
+<circle cx="347" cy="160" r="0.5" style="stroke:#000000"/>
+<circle cx="251" cy="251" r="0.5" style="stroke:#000000"/>
+<circle cx="275" cy="241" r="0.5" style="stroke:#000000"/>
+<circle cx="275" cy="398" r="0.5" style="stroke:#000000"/>
+<circle cx="167" cy="292" r="0.5" style="stroke:#000000"/>
+<circle cx="351" cy="397" r="0.5" style="stroke:#000000"/>
+<circle cx="257" cy="254" r="0.5" style="stroke:#000000"/>
+<circle cx="248" cy="220" r="0.5" style="stroke:#000000"/>
+<circle cx="250" cy="252" r="0.5" style="stroke:#000000"/>
+<circle cx="191" cy="222" r="0.5" style="stroke:#000000"/>
+<circle cx="93" cy="200" r="0.5" style="stroke:#000000"/>
+<circle cx="155" cy="195" r="0.5" style="stroke:#000000"/>
+<circle cx="287" cy="84" r="0.5" style="stroke:#000000"/>
+<circle cx="90" cy="198" r="0.5" style="stroke:#000000"/>
+<circle cx="149" cy="175" r="0.5" style="stroke:#000000"/>
+<circle cx="342" cy="311" r="0.5" style="stroke:#000000"/>
+<circle cx="391" cy="360" r="0.5" style="stroke:#000000"/>
+<circle cx="277" cy="310" r="0.5" style="stroke:#000000"/>
+<circle cx="341" cy="421" r="0.5" style="stroke:#000000"/>
+<circle cx="274" cy="136" r="0.5" style="stroke:#000000"/>
+<circle cx="187" cy="278" r="0.5" style="stroke:#000000"/>
+<circle cx="343" cy="427" r="0.5" style="stroke:#000000"/>
+<circle cx="255" cy="170" r="0.5" style="stroke:#000000"/>
+<circle cx="158" cy="329" r="0.5" style="stroke:#000000"/>
+<circle cx="306" cy="196" r="0.5" style="stroke:#000000"/>
+<circle cx="315" cy="261" r="0.5" style="stroke:#000000"/>
+<circle cx="214" cy="361" r="0.5" style="stroke:#000000"/>
+<circle cx="306" cy="304" r="0.5" style="stroke:#000000"/>
+<circle cx="229" cy="219" r="0.5" style="stroke:#000000"/>
+<circle cx="227" cy="351" r="0.5" style="stroke:#000000"/>
+<circle cx="228" cy="196" r="0.5" style="stroke:#000000"/>
+<circle cx="314" cy="280" r="0.5" style="stroke:#000000"/>
+<circle cx="209" cy="195" r="0.5" style="stroke:#000000"/>
+<circle cx="367" cy="217" r="0.5" style="stroke:#000000"/>
+<circle cx="176" cy="212" r="0.5" style="stroke:#000000"/>
+<circle cx="117" cy="194" r="0.5" style="stroke:#000000"/>
+<circle cx="318" cy="116" r="0.5" style="stroke:#000000"/>
+<circle cx="250" cy="251" r="0.5" style="stroke:#000000"/>
+<circle cx="355" cy="406" r="0.5" style="stroke:#000000"/>
+<circle cx="252" cy="246" r="0.5" style="stroke:#000000"/>
+<circle cx="219" cy="299" r="0.5" style="stroke:#000000"/>
+<circle cx="217" cy="232" r="0.5" style="stroke:#000000"/>
+<circle cx="283" cy="220" r="0.5" style="stroke:#000000"/>
+<circle cx="239" cy="207" r="0.5" style="stroke:#000000"/>
+<circle cx="266" cy="255" r="0.5" style="stroke:#000000"/>
+<circle cx="310" cy="324" r="0.5" style="stroke:#000000"/>
+<circle cx="200" cy="248" r="0.5" style="stroke:#000000"/>
+<circle cx="387" cy="360" r="0.5" style="stroke:#000000"/>
+<circle cx="147" cy="186" r="0.5" style="stroke:#000000"/>
+<circle cx="126" cy="236" r="0.5" style="stroke:#000000"/>
+<circle cx="257" cy="300" r="0.5" style="stroke:#000000"/>
+<circle cx="255" cy="250" r="0.5" style="stroke:#000000"/>
+<circle cx="50" cy="246" r="0.5" style="stroke:#000000"/>
+<circle cx="231" cy="340" r="0.5" style="stroke:#000000"/>
+<circle cx="189" cy="287" r="0.5" style="stroke:#000000"/>
+<circle cx="188" cy="186" r="0.5" style="stroke:#000000"/>
+<circle cx="366" cy="412" r="0.5" style="stroke:#000000"/>
+<circle cx="183" cy="139" r="0.5" style="stroke:#000000"/>
+<circle cx="305" cy="113" r="0.5" style="stroke:#000000"/>
+<circle cx="286" cy="146" r="0.5" style="stroke:#000000"/>
+<circle cx="399" cy="241" r="0.5" style="stroke:#000000"/>
+<circle cx="289" cy="404" r="0.5" style="stroke:#000000"/>
+<circle cx="346" cy="157" r="0.5" style="stroke:#000000"/>
+<circle cx="287" cy="143" r="0.5" style="stroke:#000000"/>
+<circle cx="223" cy="236" r="0.5" style="stroke:#000000"/>
+<circle cx="181" cy="159" r="0.5" style="stroke:#000000"/>
+<circle cx="134" cy="249" r="0.5" style="stroke:#000000"/>
+<circle cx="238" cy="274" r="0.5" style="stroke:#000000"/>
+<circle cx="246" cy="250" r="0.5" style="stroke:#000000"/>
+<circle cx="201" cy="395" r="0.5" style="stroke:#000000"/>
+<circle cx="192" cy="116" r="0.5" style="stroke:#000000"/>
+<circle cx="260" cy="296" r="0.5" style="stroke:#000000"/>
+<circle cx="244" cy="399" r="0.5" style="stroke:#000000"/>
+<circle cx="256" cy="303" r="0.5" style="stroke:#000000"/>
+<circle cx="202" cy="221" r="0.5" style="stroke:#000000"/>
+<circle cx="361" cy="406" r="0.5" style="stroke:#000000"/>
+<circle cx="275" cy="235" r="0.5" style="stroke:#000000"/>
+<circle cx="180" cy="305" r="0.5" style="stroke:#000000"/>
+<circle cx="258" cy="241" r="0.5" style="stroke:#000000"/>
+<circle cx="253" cy="237" r="0.5" style="stroke:#000000"/>
+<circle cx="239" cy="408" r="0.5" style="stroke:#000000"/>
+<circle cx="247" cy="254" r="0.5" style="stroke:#000000"/>
+<circle cx="223" cy="265" r="0.5" style="stroke:#000000"/>
+<circle cx="244" cy="253" r="0.5" style="stroke:#000000"/>
+<circle cx="174" cy="346" r="0.5" style="stroke:#000000"/>
+<circle cx="373" cy="334" r="0.5" style="stroke:#000000"/>
+<circle cx="292" cy="82" r="0.5" style="stroke:#000000"/>
+<circle cx="240" cy="388" r="0.5" style="stroke:#000000"/>
+<circle cx="263" cy="225" r="0.5" style="stroke:#000000"/>
+<circle cx="252" cy="207" r="0.5" style="stroke:#000000"/>
+<circle cx="233" cy="287" r="0.5" style="stroke:#000000"/>
+<circle cx="234" cy="245" r="0.5" style="stroke:#000000"/>
+<circle cx="285" cy="264" r="0.5" style="stroke:#000000"/>
+<circle cx="176" cy="259" r="0.5" style="stroke:#000000"/>
+<circle cx="284" cy="256" r="0.5" style="stroke:#000000"/>
+<circle cx="233" cy="258" r="0.5" style="stroke:#000000"/>
+<circle cx="108" cy="336" r="0.5" style="stroke:#000000"/>
+<circle cx="379" cy="402" r="0.5" style="stroke:#000000"/>
+<circle cx="260" cy="256" r="0.5" style="stroke:#000000"/>
+<circle cx="232" cy="265" r="0.5" style="stroke:#000000"/>
+<circle cx="432" cy="286" r="0.5" style="stroke:#000000"/>
+<circle cx="347" cy="197" r="0.5" style="stroke:#000000"/>
+<circle cx="248" cy="249" r="0.5" style="stroke:#000000"/>
+<circle cx="176" cy="213" r="0.5" style="stroke:#000000"/>
+<circle cx="330" cy="370" r="0.5" style="stroke:#000000"/>
+<circle cx="249" cy="253" r="0.5" style="stroke:#000000"/>
+<circle cx="249" cy="243" r="0.5" style="stroke:#000000"/>
+<circle cx="119" cy="320" r="0.5" style="stroke:#000000"/>
+<circle cx="280" cy="263" r="0.5" style="stroke:#000000"/>
+<circle cx="317" cy="287" r="0.5" style="stroke:#000000"/>
+<circle cx="304" cy="209" r="0.5" style="stroke:#000000"/>
+<circle cx="315" cy="193" r="0.5" style="stroke:#000000"/>
+<circle cx="304" cy="109" r="0.5" style="stroke:#000000"/>
+<circle cx="119" cy="179" r="0.5" style="stroke:#000000"/>
+<circle cx="188" cy="215" r="0.5" style="stroke:#000000"/>
+<circle cx="263" cy="218" r="0.5" style="stroke:#000000"/>
+<circle cx="196" cy="228" r="0.5" style="stroke:#000000"/>
+<circle cx="371" cy="307" r="0.5" style="stroke:#000000"/>
+<circle cx="285" cy="263" r="0.5" style="stroke:#000000"/>
+<circle cx="130" cy="217" r="0.5" style="stroke:#000000"/>
+<circle cx="250" cy="250" r="0.5" style="stroke:#000000"/>
+<circle cx="335" cy="201" r="0.5" style="stroke:#000000"/>
+<circle cx="211" cy="145" r="0.5" style="stroke:#000000"/>
+<circle cx="242" cy="182" r="0.5" style="stroke:#000000"/>
+<circle cx="221" cy="256" r="0.5" style="stroke:#000000"/>
+<circle cx="177" cy="398" r="0.5" style="stroke:#000000"/>
+<circle cx="333" cy="158" r="0.5" style="stroke:#000000"/>
+<circle cx="199" cy="297" r="0.5" style="stroke:#000000"/>
+<circle cx="342" cy="153" r="0.5" style="stroke:#000000"/>
+<circle cx="273" cy="419" r="0.5" style="stroke:#000000"/>
+<circle cx="227" cy="173" r="0.5" style="stroke:#000000"/>
+<circle cx="169" cy="242" r="0.5" style="stroke:#000000"/>
+<circle cx="294" cy="292" r="0.5" style="stroke:#000000"/>
+<circle cx="303" cy="155" r="0.5" style="stroke:#000000"/>
+<circle cx="211" cy="124" r="0.5" style="stroke:#000000"/>
+<circle cx="253" cy="116" r="0.5" style="stroke:#000000"/>
+<circle cx="254" cy="246" r="0.5" style="stroke:#000000"/>
+<circle cx="377" cy="388" r="0.5" style="stroke:#000000"/>
+<circle cx="130" cy="285" r="0.5" style="stroke:#000000"/>
+<circle cx="273" cy="215" r="0.5" style="stroke:#000000"/>
+<circle cx="438" cy="229" r="0.5" style="stroke:#000000"/>
+<circle cx="446" cy="216" r="0.5" style="stroke:#000000"/>
+<circle cx="242" cy="238" r="0.5" style="stroke:#000000"/>
+<circle cx="224" cy="229" r="0.5" style="stroke:#000000"/>
+<circle cx="133" cy="181" r="0.5" style="stroke:#000000"/>
+<circle cx="270" cy="222" r="0.5" style="stroke:#000000"/>
+<circle cx="275" cy="237" r="0.5" style="stroke:#000000"/>
+<circle cx="160" cy="202" r="0.5" style="stroke:#000000"/>
+<circle cx="416" cy="302" r="0.5" style="stroke:#000000"/>
+<circle cx="366" cy="244" r="0.5" style="stroke:#000000"/>
+<circle cx="279" cy="186" r="0.5" style="stroke:#000000"/>
+<circle cx="134" cy="353" r="0.5" style="stroke:#000000"/>
+<circle cx="99" cy="159" r="0.5" style="stroke:#000000"/>
+<circle cx="177" cy="198" r="0.5" style="stroke:#000000"/>
+<circle cx="239" cy="253" r="0.5" style="stroke:#000000"/>
+<circle cx="298" cy="190" r="0.5" style="stroke:#000000"/>
+<circle cx="213" cy="70" r="0.5" style="stroke:#000000"/>
+<circle cx="122" cy="236" r="0.5" style="stroke:#000000"/>
+<circle cx="318" cy="92" r="0.5" style="stroke:#000000"/>
+<circle cx="196" cy="362" r="0.5" style="stroke:#000000"/>
+<circle cx="234" cy="235" r="0.5" style="stroke:#000000"/>
+<circle cx="250" cy="250" r="0.5" style="stroke:#000000"/>
+<circle cx="321" cy="367" r="0.5" style="stroke:#000000"/>
+<circle cx="251" cy="249" r="0.5" style="stroke:#000000"/>
+<circle cx="141" cy="154" r="0.5" style="stroke:#000000"/>
+<circle cx="152" cy="308" r="0.5" style="stroke:#000000"/>
+<circle cx="110" cy="178" r="0.5" style="stroke:#000000"/>
+<circle cx="229" cy="216" r="0.5" style="stroke:#000000"/>
+<circle cx="421" cy="250" r="0.5" style="stroke:#000000"/>
+<circle cx="215" cy="269" r="0.5" style="stroke:#000000"/>
+<circle cx="131" cy="157" r="0.5" style="stroke:#000000"/>
+<circle cx="238" cy="245" r="0.5" style="stroke:#000000"/>
+<circle cx="264" cy="224" r="0.5" style="stroke:#000000"/>
+<circle cx="79" cy="327" r="0.5" style="stroke:#000000"/>
+<circle cx="424" cy="266" r="0.5" style="stroke:#000000"/>
+<circle cx="237" cy="232" r="0.5" style="stroke:#000000"/>
+<circle cx="142" cy="253" r="0.5" style="stroke:#000000"/>
+<circle cx="156" cy="355" r="0.5" style="stroke:#000000"/>
+<circle cx="239" cy="239" r="0.5" style="stroke:#000000"/>
+<circle cx="238" cy="322" r="0.5" style="stroke:#000000"/>
+<circle cx="177" cy="396" r="0.5" style="stroke:#000000"/>
+<circle cx="310" cy="152" r="0.5" style="stroke:#000000"/>
+<circle cx="83" cy="354" r="0.5" style="stroke:#000000"/>
+<circle cx="236" cy="434" r="0.5" style="stroke:#000000"/>
+<circle cx="439" cy="287" r="0.5" style="stroke:#000000"/>
+<circle cx="173" cy="232" r="0.5" style="stroke:#000000"/>
+<circle cx="181" cy="143" r="0.5" style="stroke:#000000"/>
+<circle cx="404" cy="232" r="0.5" style="stroke:#000000"/>
+<circle cx="173" cy="177" r="0.5" style="stroke:#000000"/>
+<circle cx="362" cy="161" r="0.5" style="stroke:#000000"/>
+<circle cx="87" cy="81" r="0.5" style="stroke:#000000"/>
+<circle cx="124" cy="106" r="0.5" style="stroke:#000000"/>
+<circle cx="76" cy="141" r="0.5" style="stroke:#000000"/>
+<circle cx="65" cy="166" r="0.5" style="stroke:#000000"/>
+<circle cx="93" cy="103" r="0.5" style="stroke:#000000"/>
+<circle cx="107" cy="159" r="0.5" style="stroke:#000000"/>
+<circle cx="140" cy="80" r="0.5" style="stroke:#000000"/>
+<circle cx="134" cy="81" r="0.5" style="stroke:#000000"/>
+<circle cx="76" cy="60" r="0.5" style="stroke:#000000"/>
+<circle cx="123" cy="123" r="0.5" style="stroke:#000000"/>
+<circle cx="139" cy="64" r="0.5" style="stroke:#000000"/>
+<circle cx="100" cy="100" r="0.5" style="stroke:#000000"/>
+<circle cx="110" cy="96" r="0.5" style="stroke:#000000"/>
+<circle cx="110" cy="159" r="0.5" style="stroke:#000000"/>
+<circle cx="67" cy="117" r="0.5" style="stroke:#000000"/>
+<circle cx="140" cy="159" r="0.5" style="stroke:#000000"/>
+<circle cx="103" cy="101" r="0.5" style="stroke:#000000"/>
+<circle cx="99" cy="88" r="0.5" style="stroke:#000000"/>
+<circle cx="100" cy="101" r="0.5" style="stroke:#000000"/>
+<circle cx="76" cy="89" r="0.5" style="stroke:#000000"/>
+<circle cx="37" cy="80" r="0.5" style="stroke:#000000"/>
+<circle cx="62" cy="78" r="0.5" style="stroke:#000000"/>
+<circle cx="115" cy="34" r="0.5" style="stroke:#000000"/>
+<circle cx="36" cy="79" r="0.5" style="stroke:#000000"/>
+<circle cx="60" cy="70" r="0.5" style="stroke:#000000"/>
+<circle cx="137" cy="124" r="0.5" style="stroke:#000000"/>
+<circle cx="156" cy="144" r="0.5" style="stroke:#000000"/>
+<circle cx="111" cy="124" r="0.5" style="stroke:#000000"/>
+<circle cx="137" cy="168" r="0.5" style="stroke:#000000"/>
+<circle cx="110" cy="55" r="0.5" style="stroke:#000000"/>
+<circle cx="75" cy="111" r="0.5" style="stroke:#000000"/>
+<circle cx="137" cy="171" r="0.5" style="stroke:#000000"/>
+<circle cx="102" cy="68" r="0.5" style="stroke:#000000"/>
+<circle cx="63" cy="131" r="0.5" style="stroke:#000000"/>
+<circle cx="122" cy="78" r="0.5" style="stroke:#000000"/>
+<circle cx="126" cy="104" r="0.5" style="stroke:#000000"/>
+<circle cx="86" cy="144" r="0.5" style="stroke:#000000"/>
+<circle cx="123" cy="122" r="0.5" style="stroke:#000000"/>
+<circle cx="92" cy="88" r="0.5" style="stroke:#000000"/>
+<circle cx="91" cy="140" r="0.5" style="stroke:#000000"/>
+<circle cx="91" cy="78" r="0.5" style="stroke:#000000"/>
+<circle cx="126" cy="112" r="0.5" style="stroke:#000000"/>
+<circle cx="84" cy="78" r="0.5" style="stroke:#000000"/>
+<circle cx="147" cy="87" r="0.5" style="stroke:#000000"/>
+<circle cx="70" cy="85" r="0.5" style="stroke:#000000"/>
+<circle cx="47" cy="77" r="0.5" style="stroke:#000000"/>
+<circle cx="127" cy="46" r="0.5" style="stroke:#000000"/>
+<circle cx="100" cy="100" r="0.5" style="stroke:#000000"/>
+<circle cx="142" cy="163" r="0.5" style="stroke:#000000"/>
+<circle cx="101" cy="99" r="0.5" style="stroke:#000000"/>
+<circle cx="88" cy="119" r="0.5" style="stroke:#000000"/>
+<circle cx="87" cy="93" r="0.5" style="stroke:#000000"/>
+<circle cx="113" cy="88" r="0.5" style="stroke:#000000"/>
+<circle cx="96" cy="83" r="0.5" style="stroke:#000000"/>
+<circle cx="106" cy="102" r="0.5" style="stroke:#000000"/>
+<circle cx="124" cy="130" r="0.5" style="stroke:#000000"/>
+<circle cx="80" cy="99" r="0.5" style="stroke:#000000"/>
+<circle cx="155" cy="144" r="0.5" style="stroke:#000000"/>
+<circle cx="59" cy="74" r="0.5" style="stroke:#000000"/>
+<circle cx="50" cy="94" r="0.5" style="stroke:#000000"/>
+<circle cx="103" cy="120" r="0.5" style="stroke:#000000"/>
+<circle cx="102" cy="100" r="0.5" style="stroke:#000000"/>
+<circle cx="20" cy="98" r="0.5" style="stroke:#000000"/>
+<circle cx="92" cy="136" r="0.5" style="stroke:#000000"/>
+<circle cx="75" cy="115" r="0.5" style="stroke:#000000"/>
+<circle cx="75" cy="74" r="0.5" style="stroke:#000000"/>
+<circle cx="146" cy="165" r="0.5" style="stroke:#000000"/>
+<circle cx="73" cy="56" r="0.5" style="stroke:#000000"/>
+<circle cx="122" cy="45" r="0.5" style="stroke:#000000"/>
+<circle cx="115" cy="59" r="0.5" style="stroke:#000000"/>
+<circle cx="160" cy="97" r="0.5" style="stroke:#000000"/>
+<circle cx="116" cy="161" r="0.5" style="stroke:#000000"/>
+<circle cx="139" cy="63" r="0.5" style="stroke:#000000"/>
+<circle cx="115" cy="57" r="0.5" style="stroke:#000000"/>
+<circle cx="89" cy="94" r="0.5" style="stroke:#000000"/>
+<circle cx="72" cy="64" r="0.5" style="stroke:#000000"/>
+<circle cx="53" cy="99" r="0.5" style="stroke:#000000"/>
+<circle cx="95" cy="110" r="0.5" style="stroke:#000000"/>
+<circle cx="99" cy="100" r="0.5" style="stroke:#000000"/>
+<circle cx="81" cy="158" r="0.5" style="stroke:#000000"/>
+<circle cx="77" cy="46" r="0.5" style="stroke:#000000"/>
+<circle cx="104" cy="118" r="0.5" style="stroke:#000000"/>
+<circle cx="98" cy="160" r="0.5" style="stroke:#000000"/>
+<circle cx="102" cy="121" r="0.5" style="stroke:#000000"/>
+<circle cx="81" cy="88" r="0.5" style="stroke:#000000"/>
+<circle cx="145" cy="163" r="0.5" style="stroke:#000000"/>
+<circle cx="110" cy="94" r="0.5" style="stroke:#000000"/>
+<circle cx="72" cy="122" r="0.5" style="stroke:#000000"/>
+<circle cx="103" cy="96" r="0.5" style="stroke:#000000"/>
+<circle cx="101" cy="95" r="0.5" style="stroke:#000000"/>
+<circle cx="95" cy="163" r="0.5" style="stroke:#000000"/>
+<circle cx="99" cy="101" r="0.5" style="stroke:#000000"/>
+<circle cx="89" cy="106" r="0.5" style="stroke:#000000"/>
+<circle cx="98" cy="101" r="0.5" style="stroke:#000000"/>
+<circle cx="70" cy="138" r="0.5" style="stroke:#000000"/>
+<circle cx="149" cy="134" r="0.5" style="stroke:#000000"/>
+<circle cx="117" cy="33" r="0.5" style="stroke:#000000"/>
+<circle cx="96" cy="155" r="0.5" style="stroke:#000000"/>
+<circle cx="105" cy="90" r="0.5" style="stroke:#000000"/>
+<circle cx="101" cy="83" r="0.5" style="stroke:#000000"/>
+<circle cx="93" cy="115" r="0.5" style="stroke:#000000"/>
+<circle cx="94" cy="98" r="0.5" style="stroke:#000000"/>
+<circle cx="114" cy="105" r="0.5" style="stroke:#000000"/>
+<circle cx="70" cy="103" r="0.5" style="stroke:#000000"/>
+<circle cx="114" cy="103" r="0.5" style="stroke:#000000"/>
+<circle cx="93" cy="103" r="0.5" style="stroke:#000000"/>
+<circle cx="43" cy="135" r="0.5" style="stroke:#000000"/>
+<circle cx="152" cy="161" r="0.5" style="stroke:#000000"/>
+<circle cx="104" cy="102" r="0.5" style="stroke:#000000"/>
+<circle cx="93" cy="106" r="0.5" style="stroke:#000000"/>
+<circle cx="173" cy="115" r="0.5" style="stroke:#000000"/>
+<circle cx="139" cy="79" r="0.5" style="stroke:#000000"/>
+<circle cx="99" cy="99" r="0.5" style="stroke:#000000"/>
+<circle cx="70" cy="85" r="0.5" style="stroke:#000000"/>
+<circle cx="132" cy="148" r="0.5" style="stroke:#000000"/>
+<circle cx="99" cy="101" r="0.5" style="stroke:#000000"/>
+<circle cx="100" cy="97" r="0.5" style="stroke:#000000"/>
+<circle cx="47" cy="128" r="0.5" style="stroke:#000000"/>
+<circle cx="112" cy="105" r="0.5" style="stroke:#000000"/>
+<circle cx="127" cy="115" r="0.5" style="stroke:#000000"/>
+<circle cx="122" cy="84" r="0.5" style="stroke:#000000"/>
+<circle cx="126" cy="77" r="0.5" style="stroke:#000000"/>
+<circle cx="121" cy="44" r="0.5" style="stroke:#000000"/>
+<circle cx="48" cy="72" r="0.5" style="stroke:#000000"/>
+<circle cx="75" cy="86" r="0.5" style="stroke:#000000"/>
+<circle cx="105" cy="87" r="0.5" style="stroke:#000000"/>
+<circle cx="79" cy="91" r="0.5" style="stroke:#000000"/>
+<circle cx="148" cy="123" r="0.5" style="stroke:#000000"/>
+<circle cx="114" cy="105" r="0.5" style="stroke:#000000"/>
+<circle cx="52" cy="87" r="0.5" style="stroke:#000000"/>
+<circle cx="100" cy="100" r="0.5" style="stroke:#000000"/>
+<circle cx="134" cy="80" r="0.5" style="stroke:#000000"/>
+<circle cx="84" cy="58" r="0.5" style="stroke:#000000"/>
+<circle cx="97" cy="73" r="0.5" style="stroke:#000000"/>
+<circle cx="88" cy="102" r="0.5" style="stroke:#000000"/>
+<circle cx="71" cy="159" r="0.5" style="stroke:#000000"/>
+<circle cx="133" cy="63" r="0.5" style="stroke:#000000"/>
+<circle cx="80" cy="119" r="0.5" style="stroke:#000000"/>
+<circle cx="137" cy="61" r="0.5" style="stroke:#000000"/>
+<circle cx="109" cy="168" r="0.5" style="stroke:#000000"/>
+<circle cx="91" cy="69" r="0.5" style="stroke:#000000"/>
+<circle cx="68" cy="97" r="0.5" style="stroke:#000000"/>
+<circle cx="117" cy="117" r="0.5" style="stroke:#000000"/>
+<circle cx="121" cy="62" r="0.5" style="stroke:#000000"/>
+<circle cx="84" cy="50" r="0.5" style="stroke:#000000"/>
+<circle cx="101" cy="46" r="0.5" style="stroke:#000000"/>
+<circle cx="102" cy="98" r="0.5" style="stroke:#000000"/>
+<circle cx="151" cy="155" r="0.5" style="stroke:#000000"/>
+<circle cx="52" cy="114" r="0.5" style="stroke:#000000"/>
+<circle cx="109" cy="86" r="0.5" style="stroke:#000000"/>
+<circle cx="175" cy="91" r="0.5" style="stroke:#000000"/>
+<circle cx="178" cy="87" r="0.5" style="stroke:#000000"/>
+<circle cx="97" cy="95" r="0.5" style="stroke:#000000"/>
+<circle cx="90" cy="92" r="0.5" style="stroke:#000000"/>
+<circle cx="53" cy="72" r="0.5" style="stroke:#000000"/>
+<circle cx="108" cy="89" r="0.5" style="stroke:#000000"/>
+<circle cx="110" cy="95" r="0.5" style="stroke:#000000"/>
+<circle cx="64" cy="81" r="0.5" style="stroke:#000000"/>
+<circle cx="166" cy="121" r="0.5" style="stroke:#000000"/>
+<circle cx="146" cy="97" r="0.5" style="stroke:#000000"/>
+<circle cx="112" cy="74" r="0.5" style="stroke:#000000"/>
+<circle cx="54" cy="141" r="0.5" style="stroke:#000000"/>
+<circle cx="40" cy="64" r="0.5" style="stroke:#000000"/>
+<circle cx="71" cy="79" r="0.5" style="stroke:#000000"/>
+<circle cx="96" cy="101" r="0.5" style="stroke:#000000"/>
+<circle cx="119" cy="76" r="0.5" style="stroke:#000000"/>
+<circle cx="85" cy="28" r="0.5" style="stroke:#000000"/>
+<circle cx="49" cy="94" r="0.5" style="stroke:#000000"/>
+<circle cx="127" cy="37" r="0.5" style="stroke:#000000"/>
+<circle cx="78" cy="145" r="0.5" style="stroke:#000000"/>
+<circle cx="94" cy="94" r="0.5" style="stroke:#000000"/>
+<circle cx="100" cy="100" r="0.5" style="stroke:#000000"/>
+<circle cx="128" cy="147" r="0.5" style="stroke:#000000"/>
+<circle cx="101" cy="100" r="0.5" style="stroke:#000000"/>
+<circle cx="56" cy="62" r="0.5" style="stroke:#000000"/>
+<circle cx="61" cy="123" r="0.5" style="stroke:#000000"/>
+<circle cx="44" cy="71" r="0.5" style="stroke:#000000"/>
+<circle cx="92" cy="86" r="0.5" style="stroke:#000000"/>
+<circle cx="169" cy="100" r="0.5" style="stroke:#000000"/>
+<circle cx="86" cy="107" r="0.5" style="stroke:#000000"/>
+<circle cx="52" cy="63" r="0.5" style="stroke:#000000"/>
+<circle cx="95" cy="98" r="0.5" style="stroke:#000000"/>
+<circle cx="106" cy="89" r="0.5" style="stroke:#000000"/>
+<circle cx="32" cy="131" r="0.5" style="stroke:#000000"/>
+<circle cx="170" cy="106" r="0.5" style="stroke:#000000"/>
+<circle cx="95" cy="93" r="0.5" style="stroke:#000000"/>
+<circle cx="57" cy="101" r="0.5" style="stroke:#000000"/>
+<circle cx="62" cy="142" r="0.5" style="stroke:#000000"/>
+<circle cx="95" cy="95" r="0.5" style="stroke:#000000"/>
+<circle cx="95" cy="129" r="0.5" style="stroke:#000000"/>
+<circle cx="71" cy="158" r="0.5" style="stroke:#000000"/>
+<circle cx="124" cy="61" r="0.5" style="stroke:#000000"/>
+<circle cx="33" cy="142" r="0.5" style="stroke:#000000"/>
+<circle cx="94" cy="174" r="0.5" style="stroke:#000000"/>
+<circle cx="176" cy="115" r="0.5" style="stroke:#000000"/>
+<circle cx="69" cy="93" r="0.5" style="stroke:#000000"/>
+<circle cx="73" cy="57" r="0.5" style="stroke:#000000"/>
+<circle cx="162" cy="93" r="0.5" style="stroke:#000000"/>
+<circle cx="69" cy="71" r="0.5" style="stroke:#000000"/>
+<circle cx="145" cy="64" r="0.5" style="stroke:#000000"/>
+<circle cx="145" cy="293" r="0.5" style="stroke:#000000"/>
+<circle cx="159" cy="302" r="0.5" style="stroke:#000000"/>
+<circle cx="141" cy="315" r="0.5" style="stroke:#000000"/>
+<circle cx="137" cy="325" r="0.5" style="stroke:#000000"/>
+<circle cx="147" cy="301" r="0.5" style="stroke:#000000"/>
+<circle cx="152" cy="322" r="0.5" style="stroke:#000000"/>
+<circle cx="165" cy="293" r="0.5" style="stroke:#000000"/>
+<circle cx="163" cy="293" r="0.5" style="stroke:#000000"/>
+<circle cx="141" cy="285" r="0.5" style="stroke:#000000"/>
+<circle cx="159" cy="309" r="0.5" style="stroke:#000000"/>
+<circle cx="164" cy="287" r="0.5" style="stroke:#000000"/>
+<circle cx="150" cy="300" r="0.5" style="stroke:#000000"/>
+<circle cx="154" cy="299" r="0.5" style="stroke:#000000"/>
+<circle cx="154" cy="322" r="0.5" style="stroke:#000000"/>
+<circle cx="138" cy="306" r="0.5" style="stroke:#000000"/>
+<circle cx="165" cy="322" r="0.5" style="stroke:#000000"/>
+<circle cx="151" cy="301" r="0.5" style="stroke:#000000"/>
+<circle cx="150" cy="295" r="0.5" style="stroke:#000000"/>
+<circle cx="150" cy="300" r="0.5" style="stroke:#000000"/>
+<circle cx="141" cy="296" r="0.5" style="stroke:#000000"/>
+<circle cx="126" cy="292" r="0.5" style="stroke:#000000"/>
+<circle cx="136" cy="292" r="0.5" style="stroke:#000000"/>
+<circle cx="156" cy="275" r="0.5" style="stroke:#000000"/>
+<circle cx="126" cy="292" r="0.5" style="stroke:#000000"/>
+<circle cx="135" cy="289" r="0.5" style="stroke:#000000"/>
+<circle cx="164" cy="309" r="0.5" style="stroke:#000000"/>
+<circle cx="171" cy="316" r="0.5" style="stroke:#000000"/>
+<circle cx="154" cy="309" r="0.5" style="stroke:#000000"/>
+<circle cx="164" cy="326" r="0.5" style="stroke:#000000"/>
+<circle cx="154" cy="283" r="0.5" style="stroke:#000000"/>
+<circle cx="141" cy="304" r="0.5" style="stroke:#000000"/>
+<circle cx="164" cy="326" r="0.5" style="stroke:#000000"/>
+<circle cx="151" cy="288" r="0.5" style="stroke:#000000"/>
+<circle cx="136" cy="312" r="0.5" style="stroke:#000000"/>
+<circle cx="158" cy="292" r="0.5" style="stroke:#000000"/>
+<circle cx="160" cy="302" r="0.5" style="stroke:#000000"/>
+<circle cx="145" cy="317" r="0.5" style="stroke:#000000"/>
+<circle cx="158" cy="308" r="0.5" style="stroke:#000000"/>
+<circle cx="147" cy="295" r="0.5" style="stroke:#000000"/>
+<circle cx="147" cy="315" r="0.5" style="stroke:#000000"/>
+<circle cx="147" cy="292" r="0.5" style="stroke:#000000"/>
+<circle cx="160" cy="304" r="0.5" style="stroke:#000000"/>
+<circle cx="144" cy="292" r="0.5" style="stroke:#000000"/>
+<circle cx="168" cy="295" r="0.5" style="stroke:#000000"/>
+<circle cx="139" cy="294" r="0.5" style="stroke:#000000"/>
+<circle cx="130" cy="292" r="0.5" style="stroke:#000000"/>
+<circle cx="160" cy="280" r="0.5" style="stroke:#000000"/>
+<circle cx="150" cy="300" r="0.5" style="stroke:#000000"/>
+<circle cx="166" cy="323" r="0.5" style="stroke:#000000"/>
+<circle cx="150" cy="299" r="0.5" style="stroke:#000000"/>
+<circle cx="145" cy="307" r="0.5" style="stroke:#000000"/>
+<circle cx="145" cy="297" r="0.5" style="stroke:#000000"/>
+<circle cx="155" cy="296" r="0.5" style="stroke:#000000"/>
+<circle cx="148" cy="294" r="0.5" style="stroke:#000000"/>
+<circle cx="152" cy="301" r="0.5" style="stroke:#000000"/>
+<circle cx="159" cy="311" r="0.5" style="stroke:#000000"/>
+<circle cx="142" cy="300" r="0.5" style="stroke:#000000"/>
+<circle cx="171" cy="317" r="0.5" style="stroke:#000000"/>
+<circle cx="135" cy="290" r="0.5" style="stroke:#000000"/>
+<circle cx="131" cy="298" r="0.5" style="stroke:#000000"/>
+<circle cx="151" cy="307" r="0.5" style="stroke:#000000"/>
+<circle cx="151" cy="300" r="0.5" style="stroke:#000000"/>
+<circle cx="120" cy="299" r="0.5" style="stroke:#000000"/>
+<circle cx="147" cy="314" r="0.5" style="stroke:#000000"/>
+<circle cx="141" cy="305" r="0.5" style="stroke:#000000"/>
+<circle cx="141" cy="290" r="0.5" style="stroke:#000000"/>
+<circle cx="167" cy="324" r="0.5" style="stroke:#000000"/>
+<circle cx="140" cy="283" r="0.5" style="stroke:#000000"/>
+<circle cx="158" cy="279" r="0.5" style="stroke:#000000"/>
+<circle cx="155" cy="284" r="0.5" style="stroke:#000000"/>
+<circle cx="172" cy="299" r="0.5" style="stroke:#000000"/>
+<circle cx="156" cy="323" r="0.5" style="stroke:#000000"/>
+<circle cx="164" cy="286" r="0.5" style="stroke:#000000"/>
+<circle cx="156" cy="284" r="0.5" style="stroke:#000000"/>
+<circle cx="146" cy="298" r="0.5" style="stroke:#000000"/>
+<circle cx="140" cy="286" r="0.5" style="stroke:#000000"/>
+<circle cx="133" cy="300" r="0.5" style="stroke:#000000"/>
+<circle cx="148" cy="304" r="0.5" style="stroke:#000000"/>
+<circle cx="149" cy="300" r="0.5" style="stroke:#000000"/>
+<circle cx="143" cy="322" r="0.5" style="stroke:#000000"/>
+<circle cx="141" cy="280" r="0.5" style="stroke:#000000"/>
+<circle cx="152" cy="307" r="0.5" style="stroke:#000000"/>
+<circle cx="149" cy="322" r="0.5" style="stroke:#000000"/>
+<circle cx="151" cy="308" r="0.5" style="stroke:#000000"/>
+<circle cx="143" cy="296" r="0.5" style="stroke:#000000"/>
+<circle cx="167" cy="323" r="0.5" style="stroke:#000000"/>
+<circle cx="154" cy="298" r="0.5" style="stroke:#000000"/>
+<circle cx="139" cy="308" r="0.5" style="stroke:#000000"/>
+<circle cx="151" cy="299" r="0.5" style="stroke:#000000"/>
+<circle cx="150" cy="298" r="0.5" style="stroke:#000000"/>
+<circle cx="148" cy="324" r="0.5" style="stroke:#000000"/>
+<circle cx="150" cy="301" r="0.5" style="stroke:#000000"/>
+<circle cx="146" cy="302" r="0.5" style="stroke:#000000"/>
+<circle cx="149" cy="300" r="0.5" style="stroke:#000000"/>
+<circle cx="139" cy="314" r="0.5" style="stroke:#000000"/>
+<circle cx="168" cy="313" r="0.5" style="stroke:#000000"/>
+<circle cx="156" cy="275" r="0.5" style="stroke:#000000"/>
+<circle cx="148" cy="321" r="0.5" style="stroke:#000000"/>
+<circle cx="152" cy="296" r="0.5" style="stroke:#000000"/>
+<circle cx="150" cy="294" r="0.5" style="stroke:#000000"/>
+<circle cx="147" cy="305" r="0.5" style="stroke:#000000"/>
+<circle cx="148" cy="299" r="0.5" style="stroke:#000000"/>
+<circle cx="155" cy="302" r="0.5" style="stroke:#000000"/>
+<circle cx="139" cy="301" r="0.5" style="stroke:#000000"/>
+<circle cx="155" cy="301" r="0.5" style="stroke:#000000"/>
+<circle cx="147" cy="301" r="0.5" style="stroke:#000000"/>
+<circle cx="129" cy="313" r="0.5" style="stroke:#000000"/>
+<circle cx="169" cy="323" r="0.5" style="stroke:#000000"/>
+<circle cx="151" cy="301" r="0.5" style="stroke:#000000"/>
+<circle cx="147" cy="302" r="0.5" style="stroke:#000000"/>
+<circle cx="177" cy="305" r="0.5" style="stroke:#000000"/>
+<circle cx="165" cy="292" r="0.5" style="stroke:#000000"/>
+<circle cx="150" cy="300" r="0.5" style="stroke:#000000"/>
+<circle cx="139" cy="294" r="0.5" style="stroke:#000000"/>
+<circle cx="162" cy="318" r="0.5" style="stroke:#000000"/>
+<circle cx="150" cy="300" r="0.5" style="stroke:#000000"/>
+<circle cx="150" cy="299" r="0.5" style="stroke:#000000"/>
+<circle cx="130" cy="310" r="0.5" style="stroke:#000000"/>
+<circle cx="155" cy="302" r="0.5" style="stroke:#000000"/>
+<circle cx="160" cy="306" r="0.5" style="stroke:#000000"/>
+<circle cx="158" cy="294" r="0.5" style="stroke:#000000"/>
+<circle cx="160" cy="291" r="0.5" style="stroke:#000000"/>
+<circle cx="158" cy="279" r="0.5" style="stroke:#000000"/>
+<circle cx="130" cy="289" r="0.5" style="stroke:#000000"/>
+<circle cx="141" cy="295" r="0.5" style="stroke:#000000"/>
+<circle cx="152" cy="295" r="0.5" style="stroke:#000000"/>
+<circle cx="142" cy="297" r="0.5" style="stroke:#000000"/>
+<circle cx="168" cy="309" r="0.5" style="stroke:#000000"/>
+<circle cx="155" cy="302" r="0.5" style="stroke:#000000"/>
+<circle cx="132" cy="295" r="0.5" style="stroke:#000000"/>
+<circle cx="150" cy="300" r="0.5" style="stroke:#000000"/>
+<circle cx="163" cy="293" r="0.5" style="stroke:#000000"/>
+<circle cx="144" cy="284" r="0.5" style="stroke:#000000"/>
+<circle cx="149" cy="290" r="0.5" style="stroke:#000000"/>
+<circle cx="146" cy="301" r="0.5" style="stroke:#000000"/>
+<circle cx="139" cy="322" r="0.5" style="stroke:#000000"/>
+<circle cx="163" cy="286" r="0.5" style="stroke:#000000"/>
+<circle cx="142" cy="307" r="0.5" style="stroke:#000000"/>
+<circle cx="164" cy="286" r="0.5" style="stroke:#000000"/>
+<circle cx="153" cy="325" r="0.5" style="stroke:#000000"/>
+<circle cx="147" cy="289" r="0.5" style="stroke:#000000"/>
+<circle cx="138" cy="299" r="0.5" style="stroke:#000000"/>
+<circle cx="157" cy="306" r="0.5" style="stroke:#000000"/>
+<circle cx="158" cy="286" r="0.5" style="stroke:#000000"/>
+<circle cx="144" cy="281" r="0.5" style="stroke:#000000"/>
+<circle cx="150" cy="280" r="0.5" style="stroke:#000000"/>
+<circle cx="151" cy="299" r="0.5" style="stroke:#000000"/>
+<circle cx="169" cy="321" r="0.5" style="stroke:#000000"/>
+<circle cx="132" cy="305" r="0.5" style="stroke:#000000"/>
+<circle cx="153" cy="295" r="0.5" style="stroke:#000000"/>
+<circle cx="178" cy="297" r="0.5" style="stroke:#000000"/>
+<circle cx="179" cy="295" r="0.5" style="stroke:#000000"/>
+<circle cx="149" cy="298" r="0.5" style="stroke:#000000"/>
+<circle cx="146" cy="297" r="0.5" style="stroke:#000000"/>
+<circle cx="132" cy="290" r="0.5" style="stroke:#000000"/>
+<circle cx="153" cy="296" r="0.5" style="stroke:#000000"/>
+<circle cx="154" cy="298" r="0.5" style="stroke:#000000"/>
+<circle cx="136" cy="293" r="0.5" style="stroke:#000000"/>
+<circle cx="175" cy="308" r="0.5" style="stroke:#000000"/>
+<circle cx="167" cy="299" r="0.5" style="stroke:#000000"/>
+<circle cx="154" cy="290" r="0.5" style="stroke:#000000"/>
+<circle cx="133" cy="316" r="0.5" style="stroke:#000000"/>
+<circle cx="127" cy="286" r="0.5" style="stroke:#000000"/>
+<circle cx="139" cy="292" r="0.5" style="stroke:#000000"/>
+<circle cx="148" cy="300" r="0.5" style="stroke:#000000"/>
+<circle cx="157" cy="291" r="0.5" style="stroke:#000000"/>
+<circle cx="144" cy="273" r="0.5" style="stroke:#000000"/>
+<circle cx="131" cy="298" r="0.5" style="stroke:#000000"/>
+<circle cx="160" cy="276" r="0.5" style="stroke:#000000"/>
+<circle cx="142" cy="317" r="0.5" style="stroke:#000000"/>
+<circle cx="148" cy="298" r="0.5" style="stroke:#000000"/>
+<circle cx="150" cy="300" r="0.5" style="stroke:#000000"/>
+<circle cx="161" cy="318" r="0.5" style="stroke:#000000"/>
+<circle cx="150" cy="300" r="0.5" style="stroke:#000000"/>
+<circle cx="134" cy="286" r="0.5" style="stroke:#000000"/>
+<circle cx="135" cy="309" r="0.5" style="stroke:#000000"/>
+<circle cx="129" cy="289" r="0.5" style="stroke:#000000"/>
+<circle cx="147" cy="295" r="0.5" style="stroke:#000000"/>
+<circle cx="176" cy="300" r="0.5" style="stroke:#000000"/>
+<circle cx="145" cy="303" r="0.5" style="stroke:#000000"/>
+<circle cx="132" cy="286" r="0.5" style="stroke:#000000"/>
+<circle cx="148" cy="299" r="0.5" style="stroke:#000000"/>
+<circle cx="152" cy="296" r="0.5" style="stroke:#000000"/>
+<circle cx="124" cy="311" r="0.5" style="stroke:#000000"/>
+<circle cx="176" cy="302" r="0.5" style="stroke:#000000"/>
+<circle cx="148" cy="297" r="0.5" style="stroke:#000000"/>
+<circle cx="134" cy="301" r="0.5" style="stroke:#000000"/>
+<circle cx="136" cy="316" r="0.5" style="stroke:#000000"/>
+<circle cx="148" cy="298" r="0.5" style="stroke:#000000"/>
+<circle cx="148" cy="311" r="0.5" style="stroke:#000000"/>
+<circle cx="139" cy="322" r="0.5" style="stroke:#000000"/>
+<circle cx="159" cy="285" r="0.5" style="stroke:#000000"/>
+<circle cx="125" cy="316" r="0.5" style="stroke:#000000"/>
+<circle cx="148" cy="328" r="0.5" style="stroke:#000000"/>
+<circle cx="178" cy="306" r="0.5" style="stroke:#000000"/>
+<circle cx="138" cy="297" r="0.5" style="stroke:#000000"/>
+<circle cx="140" cy="284" r="0.5" style="stroke:#000000"/>
+<circle cx="173" cy="297" r="0.5" style="stroke:#000000"/>
+<circle cx="138" cy="289" r="0.5" style="stroke:#000000"/>
+<circle cx="167" cy="287" r="0.5" style="stroke:#000000"/>
+<circle cx="495" cy="113" r="0.5" style="stroke:#000000"/>
+<circle cx="509" cy="122" r="0.5" style="stroke:#000000"/>
+<circle cx="491" cy="135" r="0.5" style="stroke:#000000"/>
+<circle cx="487" cy="145" r="0.5" style="stroke:#000000"/>
+<circle cx="497" cy="121" r="0.5" style="stroke:#000000"/>
+<circle cx="502" cy="142" r="0.5" style="stroke:#000000"/>
+<circle cx="515" cy="113" r="0.5" style="stroke:#000000"/>
+<circle cx="513" cy="113" r="0.5" style="stroke:#000000"/>
+<circle cx="491" cy="105" r="0.5" style="stroke:#000000"/>
+<circle cx="509" cy="129" r="0.5" style="stroke:#000000"/>
+<circle cx="514" cy="107" r="0.5" style="stroke:#000000"/>
+<circle cx="500" cy="120" r="0.5" style="stroke:#000000"/>
+<circle cx="504" cy="119" r="0.5" style="stroke:#000000"/>
+<circle cx="504" cy="142" r="0.5" style="stroke:#000000"/>
+<circle cx="488" cy="126" r="0.5" style="stroke:#000000"/>
+<circle cx="515" cy="142" r="0.5" style="stroke:#000000"/>
+<circle cx="501" cy="121" r="0.5" style="stroke:#000000"/>
+<circle cx="500" cy="115" r="0.5" style="stroke:#000000"/>
+<circle cx="500" cy="120" r="0.5" style="stroke:#000000"/>
+<circle cx="491" cy="116" r="0.5" style="stroke:#000000"/>
+<circle cx="476" cy="112" r="0.5" style="stroke:#000000"/>
+<circle cx="486" cy="112" r="0.5" style="stroke:#000000"/>
+<circle cx="506" cy="95" r="0.5" style="stroke:#000000"/>
+<circle cx="476" cy="112" r="0.5" style="stroke:#000000"/>
+<circle cx="485" cy="109" r="0.5" style="stroke:#000000"/>
+<circle cx="514" cy="129" r="0.5" style="stroke:#000000"/>
+<circle cx="521" cy="136" r="0.5" style="stroke:#000000"/>
+<circle cx="504" cy="129" r="0.5" style="stroke:#000000"/>
+<circle cx="514" cy="146" r="0.5" style="stroke:#000000"/>
+<circle cx="504" cy="103" r="0.5" style="stroke:#000000"/>
+<circle cx="491" cy="124" r="0.5" style="stroke:#000000"/>
+<circle cx="514" cy="146" r="0.5" style="stroke:#000000"/>
+<circle cx="501" cy="108" r="0.5" style="stroke:#000000"/>
+<circle cx="486" cy="132" r="0.5" style="stroke:#000000"/>
+<circle cx="508" cy="112" r="0.5" style="stroke:#000000"/>
+<circle cx="510" cy="122" r="0.5" style="stroke:#000000"/>
+<circle cx="495" cy="137" r="0.5" style="stroke:#000000"/>
+<circle cx="508" cy="128" r="0.5" style="stroke:#000000"/>
+<circle cx="497" cy="115" r="0.5" style="stroke:#000000"/>
+<circle cx="497" cy="135" r="0.5" style="stroke:#000000"/>
+<circle cx="497" cy="112" r="0.5" style="stroke:#000000"/>
+<circle cx="510" cy="124" r="0.5" style="stroke:#000000"/>
+<circle cx="494" cy="112" r="0.5" style="stroke:#000000"/>
+<circle cx="518" cy="115" r="0.5" style="stroke:#000000"/>
+<circle cx="489" cy="114" r="0.5" style="stroke:#000000"/>
+<circle cx="480" cy="112" r="0.5" style="stroke:#000000"/>
+<circle cx="510" cy="100" r="0.5" style="stroke:#000000"/>
+<circle cx="500" cy="120" r="0.5" style="stroke:#000000"/>
+<circle cx="516" cy="143" r="0.5" style="stroke:#000000"/>
+<circle cx="500" cy="119" r="0.5" style="stroke:#000000"/>
+<circle cx="495" cy="127" r="0.5" style="stroke:#000000"/>
+<circle cx="495" cy="117" r="0.5" style="stroke:#000000"/>
+<circle cx="505" cy="116" r="0.5" style="stroke:#000000"/>
+<circle cx="498" cy="114" r="0.5" style="stroke:#000000"/>
+<circle cx="502" cy="121" r="0.5" style="stroke:#000000"/>
+<circle cx="509" cy="131" r="0.5" style="stroke:#000000"/>
+<circle cx="492" cy="120" r="0.5" style="stroke:#000000"/>
+<circle cx="521" cy="137" r="0.5" style="stroke:#000000"/>
+<circle cx="485" cy="110" r="0.5" style="stroke:#000000"/>
+<circle cx="481" cy="118" r="0.5" style="stroke:#000000"/>
+<circle cx="501" cy="127" r="0.5" style="stroke:#000000"/>
+<circle cx="501" cy="120" r="0.5" style="stroke:#000000"/>
+<circle cx="470" cy="119" r="0.5" style="stroke:#000000"/>
+<circle cx="497" cy="134" r="0.5" style="stroke:#000000"/>
+<circle cx="491" cy="125" r="0.5" style="stroke:#000000"/>
+<circle cx="491" cy="110" r="0.5" style="stroke:#000000"/>
+<circle cx="517" cy="144" r="0.5" style="stroke:#000000"/>
+<circle cx="490" cy="103" r="0.5" style="stroke:#000000"/>
+<circle cx="508" cy="99" r="0.5" style="stroke:#000000"/>
+<circle cx="505" cy="104" r="0.5" style="stroke:#000000"/>
+<circle cx="522" cy="119" r="0.5" style="stroke:#000000"/>
+<circle cx="506" cy="143" r="0.5" style="stroke:#000000"/>
+<circle cx="514" cy="106" r="0.5" style="stroke:#000000"/>
+<circle cx="506" cy="104" r="0.5" style="stroke:#000000"/>
+<circle cx="496" cy="118" r="0.5" style="stroke:#000000"/>
+<circle cx="490" cy="106" r="0.5" style="stroke:#000000"/>
+<circle cx="483" cy="120" r="0.5" style="stroke:#000000"/>
+<circle cx="498" cy="124" r="0.5" style="stroke:#000000"/>
+<circle cx="499" cy="120" r="0.5" style="stroke:#000000"/>
+<circle cx="493" cy="142" r="0.5" style="stroke:#000000"/>
+<circle cx="491" cy="100" r="0.5" style="stroke:#000000"/>
+<circle cx="502" cy="127" r="0.5" style="stroke:#000000"/>
+<circle cx="499" cy="142" r="0.5" style="stroke:#000000"/>
+<circle cx="501" cy="128" r="0.5" style="stroke:#000000"/>
+<circle cx="493" cy="116" r="0.5" style="stroke:#000000"/>
+<circle cx="517" cy="143" r="0.5" style="stroke:#000000"/>
+<circle cx="504" cy="118" r="0.5" style="stroke:#000000"/>
+<circle cx="489" cy="128" r="0.5" style="stroke:#000000"/>
+<circle cx="501" cy="119" r="0.5" style="stroke:#000000"/>
+<circle cx="500" cy="118" r="0.5" style="stroke:#000000"/>
+<circle cx="498" cy="144" r="0.5" style="stroke:#000000"/>
+<circle cx="500" cy="121" r="0.5" style="stroke:#000000"/>
+<circle cx="496" cy="122" r="0.5" style="stroke:#000000"/>
+<circle cx="499" cy="120" r="0.5" style="stroke:#000000"/>
+<circle cx="489" cy="134" r="0.5" style="stroke:#000000"/>
+<circle cx="518" cy="133" r="0.5" style="stroke:#000000"/>
+<circle cx="506" cy="95" r="0.5" style="stroke:#000000"/>
+<circle cx="498" cy="141" r="0.5" style="stroke:#000000"/>
+<circle cx="502" cy="116" r="0.5" style="stroke:#000000"/>
+<circle cx="500" cy="114" r="0.5" style="stroke:#000000"/>
+<circle cx="497" cy="125" r="0.5" style="stroke:#000000"/>
+<circle cx="498" cy="119" r="0.5" style="stroke:#000000"/>
+<circle cx="505" cy="122" r="0.5" style="stroke:#000000"/>
+<circle cx="489" cy="121" r="0.5" style="stroke:#000000"/>
+<circle cx="505" cy="121" r="0.5" style="stroke:#000000"/>
+<circle cx="497" cy="121" r="0.5" style="stroke:#000000"/>
+<circle cx="479" cy="133" r="0.5" style="stroke:#000000"/>
+<circle cx="519" cy="143" r="0.5" style="stroke:#000000"/>
+<circle cx="501" cy="121" r="0.5" style="stroke:#000000"/>
+<circle cx="497" cy="122" r="0.5" style="stroke:#000000"/>
+<circle cx="527" cy="125" r="0.5" style="stroke:#000000"/>
+<circle cx="515" cy="112" r="0.5" style="stroke:#000000"/>
+<circle cx="500" cy="120" r="0.5" style="stroke:#000000"/>
+<circle cx="489" cy="114" r="0.5" style="stroke:#000000"/>
+<circle cx="512" cy="138" r="0.5" style="stroke:#000000"/>
+<circle cx="500" cy="120" r="0.5" style="stroke:#000000"/>
+<circle cx="500" cy="119" r="0.5" style="stroke:#000000"/>
+<circle cx="480" cy="130" r="0.5" style="stroke:#000000"/>
+<circle cx="505" cy="122" r="0.5" style="stroke:#000000"/>
+<circle cx="510" cy="126" r="0.5" style="stroke:#000000"/>
+<circle cx="508" cy="114" r="0.5" style="stroke:#000000"/>
+<circle cx="510" cy="111" r="0.5" style="stroke:#000000"/>
+<circle cx="508" cy="99" r="0.5" style="stroke:#000000"/>
+<circle cx="480" cy="109" r="0.5" style="stroke:#000000"/>
+<circle cx="491" cy="115" r="0.5" style="stroke:#000000"/>
+<circle cx="502" cy="115" r="0.5" style="stroke:#000000"/>
+<circle cx="492" cy="117" r="0.5" style="stroke:#000000"/>
+<circle cx="518" cy="129" r="0.5" style="stroke:#000000"/>
+<circle cx="505" cy="122" r="0.5" style="stroke:#000000"/>
+<circle cx="482" cy="115" r="0.5" style="stroke:#000000"/>
+<circle cx="500" cy="120" r="0.5" style="stroke:#000000"/>
+<circle cx="513" cy="113" r="0.5" style="stroke:#000000"/>
+<circle cx="494" cy="104" r="0.5" style="stroke:#000000"/>
+<circle cx="499" cy="110" r="0.5" style="stroke:#000000"/>
+<circle cx="496" cy="121" r="0.5" style="stroke:#000000"/>
+<circle cx="489" cy="142" r="0.5" style="stroke:#000000"/>
+<circle cx="513" cy="106" r="0.5" style="stroke:#000000"/>
+<circle cx="492" cy="127" r="0.5" style="stroke:#000000"/>
+<circle cx="514" cy="106" r="0.5" style="stroke:#000000"/>
+<circle cx="503" cy="145" r="0.5" style="stroke:#000000"/>
+<circle cx="497" cy="109" r="0.5" style="stroke:#000000"/>
+<circle cx="488" cy="119" r="0.5" style="stroke:#000000"/>
+<circle cx="507" cy="126" r="0.5" style="stroke:#000000"/>
+<circle cx="508" cy="106" r="0.5" style="stroke:#000000"/>
+<circle cx="494" cy="101" r="0.5" style="stroke:#000000"/>
+<circle cx="500" cy="100" r="0.5" style="stroke:#000000"/>
+<circle cx="501" cy="119" r="0.5" style="stroke:#000000"/>
+<circle cx="519" cy="141" r="0.5" style="stroke:#000000"/>
+<circle cx="482" cy="125" r="0.5" style="stroke:#000000"/>
+<circle cx="503" cy="115" r="0.5" style="stroke:#000000"/>
+<circle cx="528" cy="117" r="0.5" style="stroke:#000000"/>
+<circle cx="529" cy="115" r="0.5" style="stroke:#000000"/>
+<circle cx="499" cy="118" r="0.5" style="stroke:#000000"/>
+<circle cx="496" cy="117" r="0.5" style="stroke:#000000"/>
+<circle cx="482" cy="110" r="0.5" style="stroke:#000000"/>
+<circle cx="503" cy="116" r="0.5" style="stroke:#000000"/>
+<circle cx="504" cy="118" r="0.5" style="stroke:#000000"/>
+<circle cx="486" cy="113" r="0.5" style="stroke:#000000"/>
+<circle cx="525" cy="128" r="0.5" style="stroke:#000000"/>
+<circle cx="517" cy="119" r="0.5" style="stroke:#000000"/>
+<circle cx="504" cy="110" r="0.5" style="stroke:#000000"/>
+<circle cx="483" cy="136" r="0.5" style="stroke:#000000"/>
+<circle cx="477" cy="106" r="0.5" style="stroke:#000000"/>
+<circle cx="489" cy="112" r="0.5" style="stroke:#000000"/>
+<circle cx="498" cy="120" r="0.5" style="stroke:#000000"/>
+<circle cx="507" cy="111" r="0.5" style="stroke:#000000"/>
+<circle cx="494" cy="93" r="0.5" style="stroke:#000000"/>
+<circle cx="481" cy="118" r="0.5" style="stroke:#000000"/>
+<circle cx="510" cy="96" r="0.5" style="stroke:#000000"/>
+<circle cx="492" cy="137" r="0.5" style="stroke:#000000"/>
+<circle cx="498" cy="118" r="0.5" style="stroke:#000000"/>
+<circle cx="500" cy="120" r="0.5" style="stroke:#000000"/>
+<circle cx="511" cy="138" r="0.5" style="stroke:#000000"/>
+<circle cx="500" cy="120" r="0.5" style="stroke:#000000"/>
+<circle cx="484" cy="106" r="0.5" style="stroke:#000000"/>
+<circle cx="485" cy="129" r="0.5" style="stroke:#000000"/>
+<circle cx="479" cy="109" r="0.5" style="stroke:#000000"/>
+<circle cx="497" cy="115" r="0.5" style="stroke:#000000"/>
+<circle cx="526" cy="120" r="0.5" style="stroke:#000000"/>
+<circle cx="495" cy="123" r="0.5" style="stroke:#000000"/>
+<circle cx="482" cy="106" r="0.5" style="stroke:#000000"/>
+<circle cx="498" cy="119" r="0.5" style="stroke:#000000"/>
+<circle cx="502" cy="116" r="0.5" style="stroke:#000000"/>
+<circle cx="474" cy="131" r="0.5" style="stroke:#000000"/>
+<circle cx="526" cy="122" r="0.5" style="stroke:#000000"/>
+<circle cx="498" cy="117" r="0.5" style="stroke:#000000"/>
+<circle cx="484" cy="121" r="0.5" style="stroke:#000000"/>
+<circle cx="486" cy="136" r="0.5" style="stroke:#000000"/>
+<circle cx="498" cy="118" r="0.5" style="stroke:#000000"/>
+<circle cx="498" cy="131" r="0.5" style="stroke:#000000"/>
+<circle cx="489" cy="142" r="0.5" style="stroke:#000000"/>
+<circle cx="509" cy="105" r="0.5" style="stroke:#000000"/>
+<circle cx="475" cy="136" r="0.5" style="stroke:#000000"/>
+<circle cx="498" cy="148" r="0.5" style="stroke:#000000"/>
+<circle cx="528" cy="126" r="0.5" style="stroke:#000000"/>
+<circle cx="488" cy="117" r="0.5" style="stroke:#000000"/>
+<circle cx="490" cy="104" r="0.5" style="stroke:#000000"/>
+<circle cx="523" cy="117" r="0.5" style="stroke:#000000"/>
+<circle cx="488" cy="109" r="0.5" style="stroke:#000000"/>
+<circle cx="517" cy="107" r="0.5" style="stroke:#000000"/>
+<circle cx="275" cy="163" r="0.5" style="stroke:#000000"/>
+<circle cx="345" cy="212" r="0.5" style="stroke:#000000"/>
+<circle cx="256" cy="277" r="0.5" style="stroke:#000000"/>
+<circle cx="235" cy="324" r="0.5" style="stroke:#000000"/>
+<circle cx="286" cy="206" r="0.5" style="stroke:#000000"/>
+<circle cx="312" cy="311" r="0.5" style="stroke:#000000"/>
+<circle cx="375" cy="163" r="0.5" style="stroke:#000000"/>
+<circle cx="363" cy="164" r="0.5" style="stroke:#000000"/>
+<circle cx="254" cy="126" r="0.5" style="stroke:#000000"/>
+<circle cx="343" cy="243" r="0.5" style="stroke:#000000"/>
+<circle cx="372" cy="133" r="0.5" style="stroke:#000000"/>
+<circle cx="301" cy="201" r="0.5" style="stroke:#000000"/>
+<circle cx="319" cy="193" r="0.5" style="stroke:#000000"/>
+<circle cx="319" cy="311" r="0.5" style="stroke:#000000"/>
+<circle cx="238" cy="232" r="0.5" style="stroke:#000000"/>
+<circle cx="376" cy="310" r="0.5" style="stroke:#000000"/>
+<circle cx="305" cy="203" r="0.5" style="stroke:#000000"/>
+<circle cx="299" cy="177" r="0.5" style="stroke:#000000"/>
+<circle cx="300" cy="201" r="0.5" style="stroke:#000000"/>
+<circle cx="256" cy="179" r="0.5" style="stroke:#000000"/>
+<circle cx="182" cy="162" r="0.5" style="stroke:#000000"/>
+<circle cx="229" cy="158" r="0.5" style="stroke:#000000"/>
+<circle cx="328" cy="75" r="0.5" style="stroke:#000000"/>
+<circle cx="180" cy="161" r="0.5" style="stroke:#000000"/>
+<circle cx="225" cy="144" r="0.5" style="stroke:#000000"/>
+<circle cx="369" cy="245" r="0.5" style="stroke:#000000"/>
+<circle cx="406" cy="282" r="0.5" style="stroke:#000000"/>
+<circle cx="320" cy="245" r="0.5" style="stroke:#000000"/>
+<circle cx="369" cy="328" r="0.5" style="stroke:#000000"/>
+<circle cx="318" cy="115" r="0.5" style="stroke:#000000"/>
+<circle cx="253" cy="221" r="0.5" style="stroke:#000000"/>
+<circle cx="369" cy="332" r="0.5" style="stroke:#000000"/>
+<circle cx="303" cy="140" r="0.5" style="stroke:#000000"/>
+<circle cx="231" cy="259" r="0.5" style="stroke:#000000"/>
+<circle cx="342" cy="159" r="0.5" style="stroke:#000000"/>
+<circle cx="348" cy="208" r="0.5" style="stroke:#000000"/>
+<circle cx="273" cy="283" r="0.5" style="stroke:#000000"/>
+<circle cx="342" cy="241" r="0.5" style="stroke:#000000"/>
+<circle cx="284" cy="177" r="0.5" style="stroke:#000000"/>
+<circle cx="283" cy="276" r="0.5" style="stroke:#000000"/>
+<circle cx="284" cy="159" r="0.5" style="stroke:#000000"/>
+<circle cx="348" cy="222" r="0.5" style="stroke:#000000"/>
+<circle cx="269" cy="159" r="0.5" style="stroke:#000000"/>
+<circle cx="388" cy="175" r="0.5" style="stroke:#000000"/>
+<circle cx="245" cy="172" r="0.5" style="stroke:#000000"/>
+<circle cx="200" cy="158" r="0.5" style="stroke:#000000"/>
+<circle cx="351" cy="99" r="0.5" style="stroke:#000000"/>
+<circle cx="300" cy="201" r="0.5" style="stroke:#000000"/>
+<circle cx="379" cy="317" r="0.5" style="stroke:#000000"/>
+<circle cx="301" cy="197" r="0.5" style="stroke:#000000"/>
+<circle cx="277" cy="236" r="0.5" style="stroke:#000000"/>
+<circle cx="275" cy="187" r="0.5" style="stroke:#000000"/>
+<circle cx="324" cy="178" r="0.5" style="stroke:#000000"/>
+<circle cx="292" cy="168" r="0.5" style="stroke:#000000"/>
+<circle cx="312" cy="204" r="0.5" style="stroke:#000000"/>
+<circle cx="345" cy="255" r="0.5" style="stroke:#000000"/>
+<circle cx="262" cy="198" r="0.5" style="stroke:#000000"/>
+<circle cx="403" cy="283" r="0.5" style="stroke:#000000"/>
+<circle cx="223" cy="152" r="0.5" style="stroke:#000000"/>
+<circle cx="207" cy="189" r="0.5" style="stroke:#000000"/>
+<circle cx="305" cy="237" r="0.5" style="stroke:#000000"/>
+<circle cx="303" cy="200" r="0.5" style="stroke:#000000"/>
+<circle cx="150" cy="197" r="0.5" style="stroke:#000000"/>
+<circle cx="286" cy="268" r="0.5" style="stroke:#000000"/>
+<circle cx="254" cy="227" r="0.5" style="stroke:#000000"/>
+<circle cx="254" cy="152" r="0.5" style="stroke:#000000"/>
+<circle cx="387" cy="322" r="0.5" style="stroke:#000000"/>
+<circle cx="250" cy="117" r="0.5" style="stroke:#000000"/>
+<circle cx="341" cy="97" r="0.5" style="stroke:#000000"/>
+<circle cx="327" cy="122" r="0.5" style="stroke:#000000"/>
+<circle cx="412" cy="193" r="0.5" style="stroke:#000000"/>
+<circle cx="329" cy="315" r="0.5" style="stroke:#000000"/>
+<circle cx="372" cy="130" r="0.5" style="stroke:#000000"/>
+<circle cx="328" cy="120" r="0.5" style="stroke:#000000"/>
+<circle cx="279" cy="190" r="0.5" style="stroke:#000000"/>
+<circle cx="248" cy="132" r="0.5" style="stroke:#000000"/>
+<circle cx="213" cy="199" r="0.5" style="stroke:#000000"/>
+<circle cx="291" cy="218" r="0.5" style="stroke:#000000"/>
+<circle cx="297" cy="200" r="0.5" style="stroke:#000000"/>
+<circle cx="264" cy="309" r="0.5" style="stroke:#000000"/>
+<circle cx="257" cy="100" r="0.5" style="stroke:#000000"/>
+<circle cx="308" cy="235" r="0.5" style="stroke:#000000"/>
+<circle cx="296" cy="312" r="0.5" style="stroke:#000000"/>
+<circle cx="305" cy="240" r="0.5" style="stroke:#000000"/>
+<circle cx="264" cy="178" r="0.5" style="stroke:#000000"/>
+<circle cx="383" cy="317" r="0.5" style="stroke:#000000"/>
+<circle cx="319" cy="189" r="0.5" style="stroke:#000000"/>
+<circle cx="247" cy="241" r="0.5" style="stroke:#000000"/>
+<circle cx="306" cy="193" r="0.5" style="stroke:#000000"/>
+<circle cx="302" cy="190" r="0.5" style="stroke:#000000"/>
+<circle cx="292" cy="319" r="0.5" style="stroke:#000000"/>
+<circle cx="298" cy="203" r="0.5" style="stroke:#000000"/>
+<circle cx="280" cy="211" r="0.5" style="stroke:#000000"/>
+<circle cx="296" cy="202" r="0.5" style="stroke:#000000"/>
+<circle cx="243" cy="272" r="0.5" style="stroke:#000000"/>
+<circle cx="392" cy="263" r="0.5" style="stroke:#000000"/>
+<circle cx="331" cy="74" r="0.5" style="stroke:#000000"/>
+<circle cx="292" cy="303" r="0.5" style="stroke:#000000"/>
+<circle cx="310" cy="181" r="0.5" style="stroke:#000000"/>
+<circle cx="302" cy="168" r="0.5" style="stroke:#000000"/>
+<circle cx="287" cy="227" r="0.5" style="stroke:#000000"/>
+<circle cx="288" cy="196" r="0.5" style="stroke:#000000"/>
+<circle cx="326" cy="210" r="0.5" style="stroke:#000000"/>
+<circle cx="244" cy="206" r="0.5" style="stroke:#000000"/>
+<circle cx="325" cy="205" r="0.5" style="stroke:#000000"/>
+<circle cx="287" cy="206" r="0.5" style="stroke:#000000"/>
+<circle cx="194" cy="265" r="0.5" style="stroke:#000000"/>
+<circle cx="397" cy="314" r="0.5" style="stroke:#000000"/>
+<circle cx="307" cy="204" r="0.5" style="stroke:#000000"/>
+<circle cx="286" cy="212" r="0.5" style="stroke:#000000"/>
+<circle cx="436" cy="227" r="0.5" style="stroke:#000000"/>
+<circle cx="373" cy="161" r="0.5" style="stroke:#000000"/>
+<circle cx="298" cy="199" r="0.5" style="stroke:#000000"/>
+<circle cx="244" cy="172" r="0.5" style="stroke:#000000"/>
+<circle cx="360" cy="290" r="0.5" style="stroke:#000000"/>
+<circle cx="299" cy="202" r="0.5" style="stroke:#000000"/>
+<circle cx="300" cy="195" r="0.5" style="stroke:#000000"/>
+<circle cx="201" cy="252" r="0.5" style="stroke:#000000"/>
+<circle cx="323" cy="210" r="0.5" style="stroke:#000000"/>
+<circle cx="350" cy="228" r="0.5" style="stroke:#000000"/>
+<circle cx="341" cy="170" r="0.5" style="stroke:#000000"/>
+<circle cx="349" cy="157" r="0.5" style="stroke:#000000"/>
+<circle cx="340" cy="94" r="0.5" style="stroke:#000000"/>
+<circle cx="202" cy="147" r="0.5" style="stroke:#000000"/>
+<circle cx="254" cy="174" r="0.5" style="stroke:#000000"/>
+<circle cx="309" cy="176" r="0.5" style="stroke:#000000"/>
+<circle cx="260" cy="183" r="0.5" style="stroke:#000000"/>
+<circle cx="391" cy="243" r="0.5" style="stroke:#000000"/>
+<circle cx="326" cy="210" r="0.5" style="stroke:#000000"/>
+<circle cx="210" cy="175" r="0.5" style="stroke:#000000"/>
+<circle cx="300" cy="200" r="0.5" style="stroke:#000000"/>
+<circle cx="364" cy="163" r="0.5" style="stroke:#000000"/>
+<circle cx="271" cy="121" r="0.5" style="stroke:#000000"/>
+<circle cx="294" cy="149" r="0.5" style="stroke:#000000"/>
+<circle cx="278" cy="205" r="0.5" style="stroke:#000000"/>
+<circle cx="245" cy="311" r="0.5" style="stroke:#000000"/>
+<circle cx="363" cy="131" r="0.5" style="stroke:#000000"/>
+<circle cx="262" cy="236" r="0.5" style="stroke:#000000"/>
+<circle cx="369" cy="128" r="0.5" style="stroke:#000000"/>
+<circle cx="317" cy="327" r="0.5" style="stroke:#000000"/>
+<circle cx="283" cy="143" r="0.5" style="stroke:#000000"/>
+<circle cx="239" cy="194" r="0.5" style="stroke:#000000"/>
+<circle cx="333" cy="231" r="0.5" style="stroke:#000000"/>
+<circle cx="340" cy="129" r="0.5" style="stroke:#000000"/>
+<circle cx="271" cy="105" r="0.5" style="stroke:#000000"/>
+<circle cx="302" cy="100" r="0.5" style="stroke:#000000"/>
+<circle cx="303" cy="197" r="0.5" style="stroke:#000000"/>
+<circle cx="395" cy="303" r="0.5" style="stroke:#000000"/>
+<circle cx="210" cy="227" r="0.5" style="stroke:#000000"/>
+<circle cx="317" cy="174" r="0.5" style="stroke:#000000"/>
+<circle cx="441" cy="184" r="0.5" style="stroke:#000000"/>
+<circle cx="447" cy="175" r="0.5" style="stroke:#000000"/>
+<circle cx="294" cy="191" r="0.5" style="stroke:#000000"/>
+<circle cx="281" cy="184" r="0.5" style="stroke:#000000"/>
+<circle cx="212" cy="148" r="0.5" style="stroke:#000000"/>
+<circle cx="315" cy="179" r="0.5" style="stroke:#000000"/>
+<circle cx="318" cy="190" r="0.5" style="stroke:#000000"/>
+<circle cx="232" cy="164" r="0.5" style="stroke:#000000"/>
+<circle cx="425" cy="239" r="0.5" style="stroke:#000000"/>
+<circle cx="387" cy="195" r="0.5" style="stroke:#000000"/>
+<circle cx="322" cy="152" r="0.5" style="stroke:#000000"/>
+<circle cx="213" cy="278" r="0.5" style="stroke:#000000"/>
+<circle cx="187" cy="132" r="0.5" style="stroke:#000000"/>
+<circle cx="245" cy="161" r="0.5" style="stroke:#000000"/>
+<circle cx="292" cy="202" r="0.5" style="stroke:#000000"/>
+<circle cx="336" cy="155" r="0.5" style="stroke:#000000"/>
+<circle cx="272" cy="65" r="0.5" style="stroke:#000000"/>
+<circle cx="204" cy="190" r="0.5" style="stroke:#000000"/>
+<circle cx="351" cy="82" r="0.5" style="stroke:#000000"/>
+<circle cx="259" cy="284" r="0.5" style="stroke:#000000"/>
+<circle cx="288" cy="189" r="0.5" style="stroke:#000000"/>
+<circle cx="300" cy="200" r="0.5" style="stroke:#000000"/>
+<circle cx="353" cy="288" r="0.5" style="stroke:#000000"/>
+<circle cx="301" cy="199" r="0.5" style="stroke:#000000"/>
+<circle cx="218" cy="128" r="0.5" style="stroke:#000000"/>
+<circle cx="226" cy="243" r="0.5" style="stroke:#000000"/>
+<circle cx="195" cy="146" r="0.5" style="stroke:#000000"/>
+<circle cx="284" cy="174" r="0.5" style="stroke:#000000"/>
+<circle cx="428" cy="200" r="0.5" style="stroke:#000000"/>
+<circle cx="274" cy="214" r="0.5" style="stroke:#000000"/>
+<circle cx="211" cy="131" r="0.5" style="stroke:#000000"/>
+<circle cx="291" cy="196" r="0.5" style="stroke:#000000"/>
+<circle cx="310" cy="180" r="0.5" style="stroke:#000000"/>
+<circle cx="172" cy="257" r="0.5" style="stroke:#000000"/>
+<circle cx="431" cy="212" r="0.5" style="stroke:#000000"/>
+<circle cx="290" cy="187" r="0.5" style="stroke:#000000"/>
+<circle cx="219" cy="203" r="0.5" style="stroke:#000000"/>
+<circle cx="230" cy="279" r="0.5" style="stroke:#000000"/>
+<circle cx="291" cy="192" r="0.5" style="stroke:#000000"/>
+<circle cx="291" cy="254" r="0.5" style="stroke:#000000"/>
+<circle cx="245" cy="309" r="0.5" style="stroke:#000000"/>
+<circle cx="345" cy="126" r="0.5" style="stroke:#000000"/>
+<circle cx="175" cy="278" r="0.5" style="stroke:#000000"/>
+<circle cx="289" cy="338" r="0.5" style="stroke:#000000"/>
+<circle cx="442" cy="228" r="0.5" style="stroke:#000000"/>
+<circle cx="242" cy="186" r="0.5" style="stroke:#000000"/>
+<circle cx="249" cy="120" r="0.5" style="stroke:#000000"/>
+<circle cx="415" cy="186" r="0.5" style="stroke:#000000"/>
+<circle cx="242" cy="145" r="0.5" style="stroke:#000000"/>
+<circle cx="384" cy="133" r="0.5" style="stroke:#000000"/>
+<circle cx="20" cy="98" r="1" style="stroke:#ff0000"/>
+<circle cx="50" cy="246" r="1" style="stroke:#ff0000"/>
+<circle cx="83" cy="354" r="1" style="stroke:#ff0000"/>
+<circle cx="164" cy="416" r="1" style="stroke:#ff0000"/>
+<circle cx="236" cy="434" r="1" style="stroke:#ff0000"/>
+<circle cx="343" cy="427" r="1" style="stroke:#ff0000"/>
+<circle cx="366" cy="412" r="1" style="stroke:#ff0000"/>
+<circle cx="379" cy="402" r="1" style="stroke:#ff0000"/>
+<circle cx="519" cy="143" r="1" style="stroke:#ff0000"/>
+<circle cx="528" cy="126" r="1" style="stroke:#ff0000"/>
+<circle cx="529" cy="115" r="1" style="stroke:#ff0000"/>
+<circle cx="510" cy="96" r="1" style="stroke:#ff0000"/>
+<circle cx="506" cy="95" r="1" style="stroke:#ff0000"/>
+<circle cx="117" cy="33" r="1" style="stroke:#ff0000"/>
+<circle cx="85" cy="28" r="1" style="stroke:#ff0000"/>
+<circle cx="40" cy="64" r="1" style="stroke:#ff0000"/>
+</svg>
diff --git a/testsuite/tests/dph/quickhull/dph-quickhull-vseg-opt.stdout b/testsuite/tests/dph/quickhull/dph-quickhull-vseg-opt.stdout
new file mode 100644
index 0000000000..f6b2d92e9a
--- /dev/null
+++ b/testsuite/tests/dph/quickhull/dph-quickhull-vseg-opt.stdout
@@ -0,0 +1,1019 @@
+<svg width="100%" height="100%" version="1.1" xmlns="http://www.w3.org/2000/svg">
+<polygon points="20,98 50,246 83,354 164,416 236,434 343,427 366,412 379,402 519,143 528,126 529,115 510,96 506,95 117,33 85,28 40,64 " style="fill:#d0d0ff;stroke:#000000;stroke-width:1"/>
+<circle cx="217" cy="201" r="0.5" style="stroke:#000000"/>
+<circle cx="310" cy="266" r="0.5" style="stroke:#000000"/>
+<circle cx="191" cy="353" r="0.5" style="stroke:#000000"/>
+<circle cx="164" cy="416" r="0.5" style="stroke:#000000"/>
+<circle cx="232" cy="257" r="0.5" style="stroke:#000000"/>
+<circle cx="266" cy="398" r="0.5" style="stroke:#000000"/>
+<circle cx="350" cy="201" r="0.5" style="stroke:#000000"/>
+<circle cx="334" cy="202" r="0.5" style="stroke:#000000"/>
+<circle cx="189" cy="151" r="0.5" style="stroke:#000000"/>
+<circle cx="308" cy="307" r="0.5" style="stroke:#000000"/>
+<circle cx="347" cy="160" r="0.5" style="stroke:#000000"/>
+<circle cx="251" cy="251" r="0.5" style="stroke:#000000"/>
+<circle cx="275" cy="241" r="0.5" style="stroke:#000000"/>
+<circle cx="275" cy="398" r="0.5" style="stroke:#000000"/>
+<circle cx="167" cy="292" r="0.5" style="stroke:#000000"/>
+<circle cx="351" cy="397" r="0.5" style="stroke:#000000"/>
+<circle cx="257" cy="254" r="0.5" style="stroke:#000000"/>
+<circle cx="248" cy="220" r="0.5" style="stroke:#000000"/>
+<circle cx="250" cy="252" r="0.5" style="stroke:#000000"/>
+<circle cx="191" cy="222" r="0.5" style="stroke:#000000"/>
+<circle cx="93" cy="200" r="0.5" style="stroke:#000000"/>
+<circle cx="155" cy="195" r="0.5" style="stroke:#000000"/>
+<circle cx="287" cy="84" r="0.5" style="stroke:#000000"/>
+<circle cx="90" cy="198" r="0.5" style="stroke:#000000"/>
+<circle cx="149" cy="175" r="0.5" style="stroke:#000000"/>
+<circle cx="342" cy="311" r="0.5" style="stroke:#000000"/>
+<circle cx="391" cy="360" r="0.5" style="stroke:#000000"/>
+<circle cx="277" cy="310" r="0.5" style="stroke:#000000"/>
+<circle cx="341" cy="421" r="0.5" style="stroke:#000000"/>
+<circle cx="274" cy="136" r="0.5" style="stroke:#000000"/>
+<circle cx="187" cy="278" r="0.5" style="stroke:#000000"/>
+<circle cx="343" cy="427" r="0.5" style="stroke:#000000"/>
+<circle cx="255" cy="170" r="0.5" style="stroke:#000000"/>
+<circle cx="158" cy="329" r="0.5" style="stroke:#000000"/>
+<circle cx="306" cy="196" r="0.5" style="stroke:#000000"/>
+<circle cx="315" cy="261" r="0.5" style="stroke:#000000"/>
+<circle cx="214" cy="361" r="0.5" style="stroke:#000000"/>
+<circle cx="306" cy="304" r="0.5" style="stroke:#000000"/>
+<circle cx="229" cy="219" r="0.5" style="stroke:#000000"/>
+<circle cx="227" cy="351" r="0.5" style="stroke:#000000"/>
+<circle cx="228" cy="196" r="0.5" style="stroke:#000000"/>
+<circle cx="314" cy="280" r="0.5" style="stroke:#000000"/>
+<circle cx="209" cy="195" r="0.5" style="stroke:#000000"/>
+<circle cx="367" cy="217" r="0.5" style="stroke:#000000"/>
+<circle cx="176" cy="212" r="0.5" style="stroke:#000000"/>
+<circle cx="117" cy="194" r="0.5" style="stroke:#000000"/>
+<circle cx="318" cy="116" r="0.5" style="stroke:#000000"/>
+<circle cx="250" cy="251" r="0.5" style="stroke:#000000"/>
+<circle cx="355" cy="406" r="0.5" style="stroke:#000000"/>
+<circle cx="252" cy="246" r="0.5" style="stroke:#000000"/>
+<circle cx="219" cy="299" r="0.5" style="stroke:#000000"/>
+<circle cx="217" cy="232" r="0.5" style="stroke:#000000"/>
+<circle cx="283" cy="220" r="0.5" style="stroke:#000000"/>
+<circle cx="239" cy="207" r="0.5" style="stroke:#000000"/>
+<circle cx="266" cy="255" r="0.5" style="stroke:#000000"/>
+<circle cx="310" cy="324" r="0.5" style="stroke:#000000"/>
+<circle cx="200" cy="248" r="0.5" style="stroke:#000000"/>
+<circle cx="387" cy="360" r="0.5" style="stroke:#000000"/>
+<circle cx="147" cy="186" r="0.5" style="stroke:#000000"/>
+<circle cx="126" cy="236" r="0.5" style="stroke:#000000"/>
+<circle cx="257" cy="300" r="0.5" style="stroke:#000000"/>
+<circle cx="255" cy="250" r="0.5" style="stroke:#000000"/>
+<circle cx="50" cy="246" r="0.5" style="stroke:#000000"/>
+<circle cx="231" cy="340" r="0.5" style="stroke:#000000"/>
+<circle cx="189" cy="287" r="0.5" style="stroke:#000000"/>
+<circle cx="188" cy="186" r="0.5" style="stroke:#000000"/>
+<circle cx="366" cy="412" r="0.5" style="stroke:#000000"/>
+<circle cx="183" cy="139" r="0.5" style="stroke:#000000"/>
+<circle cx="305" cy="113" r="0.5" style="stroke:#000000"/>
+<circle cx="286" cy="146" r="0.5" style="stroke:#000000"/>
+<circle cx="399" cy="241" r="0.5" style="stroke:#000000"/>
+<circle cx="289" cy="404" r="0.5" style="stroke:#000000"/>
+<circle cx="346" cy="157" r="0.5" style="stroke:#000000"/>
+<circle cx="287" cy="143" r="0.5" style="stroke:#000000"/>
+<circle cx="223" cy="236" r="0.5" style="stroke:#000000"/>
+<circle cx="181" cy="159" r="0.5" style="stroke:#000000"/>
+<circle cx="134" cy="249" r="0.5" style="stroke:#000000"/>
+<circle cx="238" cy="274" r="0.5" style="stroke:#000000"/>
+<circle cx="246" cy="250" r="0.5" style="stroke:#000000"/>
+<circle cx="201" cy="395" r="0.5" style="stroke:#000000"/>
+<circle cx="192" cy="116" r="0.5" style="stroke:#000000"/>
+<circle cx="260" cy="296" r="0.5" style="stroke:#000000"/>
+<circle cx="244" cy="399" r="0.5" style="stroke:#000000"/>
+<circle cx="256" cy="303" r="0.5" style="stroke:#000000"/>
+<circle cx="202" cy="221" r="0.5" style="stroke:#000000"/>
+<circle cx="361" cy="406" r="0.5" style="stroke:#000000"/>
+<circle cx="275" cy="235" r="0.5" style="stroke:#000000"/>
+<circle cx="180" cy="305" r="0.5" style="stroke:#000000"/>
+<circle cx="258" cy="241" r="0.5" style="stroke:#000000"/>
+<circle cx="253" cy="237" r="0.5" style="stroke:#000000"/>
+<circle cx="239" cy="408" r="0.5" style="stroke:#000000"/>
+<circle cx="247" cy="254" r="0.5" style="stroke:#000000"/>
+<circle cx="223" cy="265" r="0.5" style="stroke:#000000"/>
+<circle cx="244" cy="253" r="0.5" style="stroke:#000000"/>
+<circle cx="174" cy="346" r="0.5" style="stroke:#000000"/>
+<circle cx="373" cy="334" r="0.5" style="stroke:#000000"/>
+<circle cx="292" cy="82" r="0.5" style="stroke:#000000"/>
+<circle cx="240" cy="388" r="0.5" style="stroke:#000000"/>
+<circle cx="263" cy="225" r="0.5" style="stroke:#000000"/>
+<circle cx="252" cy="207" r="0.5" style="stroke:#000000"/>
+<circle cx="233" cy="287" r="0.5" style="stroke:#000000"/>
+<circle cx="234" cy="245" r="0.5" style="stroke:#000000"/>
+<circle cx="285" cy="264" r="0.5" style="stroke:#000000"/>
+<circle cx="176" cy="259" r="0.5" style="stroke:#000000"/>
+<circle cx="284" cy="256" r="0.5" style="stroke:#000000"/>
+<circle cx="233" cy="258" r="0.5" style="stroke:#000000"/>
+<circle cx="108" cy="336" r="0.5" style="stroke:#000000"/>
+<circle cx="379" cy="402" r="0.5" style="stroke:#000000"/>
+<circle cx="260" cy="256" r="0.5" style="stroke:#000000"/>
+<circle cx="232" cy="265" r="0.5" style="stroke:#000000"/>
+<circle cx="432" cy="286" r="0.5" style="stroke:#000000"/>
+<circle cx="347" cy="197" r="0.5" style="stroke:#000000"/>
+<circle cx="248" cy="249" r="0.5" style="stroke:#000000"/>
+<circle cx="176" cy="213" r="0.5" style="stroke:#000000"/>
+<circle cx="330" cy="370" r="0.5" style="stroke:#000000"/>
+<circle cx="249" cy="253" r="0.5" style="stroke:#000000"/>
+<circle cx="249" cy="243" r="0.5" style="stroke:#000000"/>
+<circle cx="119" cy="320" r="0.5" style="stroke:#000000"/>
+<circle cx="280" cy="263" r="0.5" style="stroke:#000000"/>
+<circle cx="317" cy="287" r="0.5" style="stroke:#000000"/>
+<circle cx="304" cy="209" r="0.5" style="stroke:#000000"/>
+<circle cx="315" cy="193" r="0.5" style="stroke:#000000"/>
+<circle cx="304" cy="109" r="0.5" style="stroke:#000000"/>
+<circle cx="119" cy="179" r="0.5" style="stroke:#000000"/>
+<circle cx="188" cy="215" r="0.5" style="stroke:#000000"/>
+<circle cx="263" cy="218" r="0.5" style="stroke:#000000"/>
+<circle cx="196" cy="228" r="0.5" style="stroke:#000000"/>
+<circle cx="371" cy="307" r="0.5" style="stroke:#000000"/>
+<circle cx="285" cy="263" r="0.5" style="stroke:#000000"/>
+<circle cx="130" cy="217" r="0.5" style="stroke:#000000"/>
+<circle cx="250" cy="250" r="0.5" style="stroke:#000000"/>
+<circle cx="335" cy="201" r="0.5" style="stroke:#000000"/>
+<circle cx="211" cy="145" r="0.5" style="stroke:#000000"/>
+<circle cx="242" cy="182" r="0.5" style="stroke:#000000"/>
+<circle cx="221" cy="256" r="0.5" style="stroke:#000000"/>
+<circle cx="177" cy="398" r="0.5" style="stroke:#000000"/>
+<circle cx="333" cy="158" r="0.5" style="stroke:#000000"/>
+<circle cx="199" cy="297" r="0.5" style="stroke:#000000"/>
+<circle cx="342" cy="153" r="0.5" style="stroke:#000000"/>
+<circle cx="273" cy="419" r="0.5" style="stroke:#000000"/>
+<circle cx="227" cy="173" r="0.5" style="stroke:#000000"/>
+<circle cx="169" cy="242" r="0.5" style="stroke:#000000"/>
+<circle cx="294" cy="292" r="0.5" style="stroke:#000000"/>
+<circle cx="303" cy="155" r="0.5" style="stroke:#000000"/>
+<circle cx="211" cy="124" r="0.5" style="stroke:#000000"/>
+<circle cx="253" cy="116" r="0.5" style="stroke:#000000"/>
+<circle cx="254" cy="246" r="0.5" style="stroke:#000000"/>
+<circle cx="377" cy="388" r="0.5" style="stroke:#000000"/>
+<circle cx="130" cy="285" r="0.5" style="stroke:#000000"/>
+<circle cx="273" cy="215" r="0.5" style="stroke:#000000"/>
+<circle cx="438" cy="229" r="0.5" style="stroke:#000000"/>
+<circle cx="446" cy="216" r="0.5" style="stroke:#000000"/>
+<circle cx="242" cy="238" r="0.5" style="stroke:#000000"/>
+<circle cx="224" cy="229" r="0.5" style="stroke:#000000"/>
+<circle cx="133" cy="181" r="0.5" style="stroke:#000000"/>
+<circle cx="270" cy="222" r="0.5" style="stroke:#000000"/>
+<circle cx="275" cy="237" r="0.5" style="stroke:#000000"/>
+<circle cx="160" cy="202" r="0.5" style="stroke:#000000"/>
+<circle cx="416" cy="302" r="0.5" style="stroke:#000000"/>
+<circle cx="366" cy="244" r="0.5" style="stroke:#000000"/>
+<circle cx="279" cy="186" r="0.5" style="stroke:#000000"/>
+<circle cx="134" cy="353" r="0.5" style="stroke:#000000"/>
+<circle cx="99" cy="159" r="0.5" style="stroke:#000000"/>
+<circle cx="177" cy="198" r="0.5" style="stroke:#000000"/>
+<circle cx="239" cy="253" r="0.5" style="stroke:#000000"/>
+<circle cx="298" cy="190" r="0.5" style="stroke:#000000"/>
+<circle cx="213" cy="70" r="0.5" style="stroke:#000000"/>
+<circle cx="122" cy="236" r="0.5" style="stroke:#000000"/>
+<circle cx="318" cy="92" r="0.5" style="stroke:#000000"/>
+<circle cx="196" cy="362" r="0.5" style="stroke:#000000"/>
+<circle cx="234" cy="235" r="0.5" style="stroke:#000000"/>
+<circle cx="250" cy="250" r="0.5" style="stroke:#000000"/>
+<circle cx="321" cy="367" r="0.5" style="stroke:#000000"/>
+<circle cx="251" cy="249" r="0.5" style="stroke:#000000"/>
+<circle cx="141" cy="154" r="0.5" style="stroke:#000000"/>
+<circle cx="152" cy="308" r="0.5" style="stroke:#000000"/>
+<circle cx="110" cy="178" r="0.5" style="stroke:#000000"/>
+<circle cx="229" cy="216" r="0.5" style="stroke:#000000"/>
+<circle cx="421" cy="250" r="0.5" style="stroke:#000000"/>
+<circle cx="215" cy="269" r="0.5" style="stroke:#000000"/>
+<circle cx="131" cy="157" r="0.5" style="stroke:#000000"/>
+<circle cx="238" cy="245" r="0.5" style="stroke:#000000"/>
+<circle cx="264" cy="224" r="0.5" style="stroke:#000000"/>
+<circle cx="79" cy="327" r="0.5" style="stroke:#000000"/>
+<circle cx="424" cy="266" r="0.5" style="stroke:#000000"/>
+<circle cx="237" cy="232" r="0.5" style="stroke:#000000"/>
+<circle cx="142" cy="253" r="0.5" style="stroke:#000000"/>
+<circle cx="156" cy="355" r="0.5" style="stroke:#000000"/>
+<circle cx="239" cy="239" r="0.5" style="stroke:#000000"/>
+<circle cx="238" cy="322" r="0.5" style="stroke:#000000"/>
+<circle cx="177" cy="396" r="0.5" style="stroke:#000000"/>
+<circle cx="310" cy="152" r="0.5" style="stroke:#000000"/>
+<circle cx="83" cy="354" r="0.5" style="stroke:#000000"/>
+<circle cx="236" cy="434" r="0.5" style="stroke:#000000"/>
+<circle cx="439" cy="287" r="0.5" style="stroke:#000000"/>
+<circle cx="173" cy="232" r="0.5" style="stroke:#000000"/>
+<circle cx="181" cy="143" r="0.5" style="stroke:#000000"/>
+<circle cx="404" cy="232" r="0.5" style="stroke:#000000"/>
+<circle cx="173" cy="177" r="0.5" style="stroke:#000000"/>
+<circle cx="362" cy="161" r="0.5" style="stroke:#000000"/>
+<circle cx="87" cy="81" r="0.5" style="stroke:#000000"/>
+<circle cx="124" cy="106" r="0.5" style="stroke:#000000"/>
+<circle cx="76" cy="141" r="0.5" style="stroke:#000000"/>
+<circle cx="65" cy="166" r="0.5" style="stroke:#000000"/>
+<circle cx="93" cy="103" r="0.5" style="stroke:#000000"/>
+<circle cx="107" cy="159" r="0.5" style="stroke:#000000"/>
+<circle cx="140" cy="80" r="0.5" style="stroke:#000000"/>
+<circle cx="134" cy="81" r="0.5" style="stroke:#000000"/>
+<circle cx="76" cy="60" r="0.5" style="stroke:#000000"/>
+<circle cx="123" cy="123" r="0.5" style="stroke:#000000"/>
+<circle cx="139" cy="64" r="0.5" style="stroke:#000000"/>
+<circle cx="100" cy="100" r="0.5" style="stroke:#000000"/>
+<circle cx="110" cy="96" r="0.5" style="stroke:#000000"/>
+<circle cx="110" cy="159" r="0.5" style="stroke:#000000"/>
+<circle cx="67" cy="117" r="0.5" style="stroke:#000000"/>
+<circle cx="140" cy="159" r="0.5" style="stroke:#000000"/>
+<circle cx="103" cy="101" r="0.5" style="stroke:#000000"/>
+<circle cx="99" cy="88" r="0.5" style="stroke:#000000"/>
+<circle cx="100" cy="101" r="0.5" style="stroke:#000000"/>
+<circle cx="76" cy="89" r="0.5" style="stroke:#000000"/>
+<circle cx="37" cy="80" r="0.5" style="stroke:#000000"/>
+<circle cx="62" cy="78" r="0.5" style="stroke:#000000"/>
+<circle cx="115" cy="34" r="0.5" style="stroke:#000000"/>
+<circle cx="36" cy="79" r="0.5" style="stroke:#000000"/>
+<circle cx="60" cy="70" r="0.5" style="stroke:#000000"/>
+<circle cx="137" cy="124" r="0.5" style="stroke:#000000"/>
+<circle cx="156" cy="144" r="0.5" style="stroke:#000000"/>
+<circle cx="111" cy="124" r="0.5" style="stroke:#000000"/>
+<circle cx="137" cy="168" r="0.5" style="stroke:#000000"/>
+<circle cx="110" cy="55" r="0.5" style="stroke:#000000"/>
+<circle cx="75" cy="111" r="0.5" style="stroke:#000000"/>
+<circle cx="137" cy="171" r="0.5" style="stroke:#000000"/>
+<circle cx="102" cy="68" r="0.5" style="stroke:#000000"/>
+<circle cx="63" cy="131" r="0.5" style="stroke:#000000"/>
+<circle cx="122" cy="78" r="0.5" style="stroke:#000000"/>
+<circle cx="126" cy="104" r="0.5" style="stroke:#000000"/>
+<circle cx="86" cy="144" r="0.5" style="stroke:#000000"/>
+<circle cx="123" cy="122" r="0.5" style="stroke:#000000"/>
+<circle cx="92" cy="88" r="0.5" style="stroke:#000000"/>
+<circle cx="91" cy="140" r="0.5" style="stroke:#000000"/>
+<circle cx="91" cy="78" r="0.5" style="stroke:#000000"/>
+<circle cx="126" cy="112" r="0.5" style="stroke:#000000"/>
+<circle cx="84" cy="78" r="0.5" style="stroke:#000000"/>
+<circle cx="147" cy="87" r="0.5" style="stroke:#000000"/>
+<circle cx="70" cy="85" r="0.5" style="stroke:#000000"/>
+<circle cx="47" cy="77" r="0.5" style="stroke:#000000"/>
+<circle cx="127" cy="46" r="0.5" style="stroke:#000000"/>
+<circle cx="100" cy="100" r="0.5" style="stroke:#000000"/>
+<circle cx="142" cy="163" r="0.5" style="stroke:#000000"/>
+<circle cx="101" cy="99" r="0.5" style="stroke:#000000"/>
+<circle cx="88" cy="119" r="0.5" style="stroke:#000000"/>
+<circle cx="87" cy="93" r="0.5" style="stroke:#000000"/>
+<circle cx="113" cy="88" r="0.5" style="stroke:#000000"/>
+<circle cx="96" cy="83" r="0.5" style="stroke:#000000"/>
+<circle cx="106" cy="102" r="0.5" style="stroke:#000000"/>
+<circle cx="124" cy="130" r="0.5" style="stroke:#000000"/>
+<circle cx="80" cy="99" r="0.5" style="stroke:#000000"/>
+<circle cx="155" cy="144" r="0.5" style="stroke:#000000"/>
+<circle cx="59" cy="74" r="0.5" style="stroke:#000000"/>
+<circle cx="50" cy="94" r="0.5" style="stroke:#000000"/>
+<circle cx="103" cy="120" r="0.5" style="stroke:#000000"/>
+<circle cx="102" cy="100" r="0.5" style="stroke:#000000"/>
+<circle cx="20" cy="98" r="0.5" style="stroke:#000000"/>
+<circle cx="92" cy="136" r="0.5" style="stroke:#000000"/>
+<circle cx="75" cy="115" r="0.5" style="stroke:#000000"/>
+<circle cx="75" cy="74" r="0.5" style="stroke:#000000"/>
+<circle cx="146" cy="165" r="0.5" style="stroke:#000000"/>
+<circle cx="73" cy="56" r="0.5" style="stroke:#000000"/>
+<circle cx="122" cy="45" r="0.5" style="stroke:#000000"/>
+<circle cx="115" cy="59" r="0.5" style="stroke:#000000"/>
+<circle cx="160" cy="97" r="0.5" style="stroke:#000000"/>
+<circle cx="116" cy="161" r="0.5" style="stroke:#000000"/>
+<circle cx="139" cy="63" r="0.5" style="stroke:#000000"/>
+<circle cx="115" cy="57" r="0.5" style="stroke:#000000"/>
+<circle cx="89" cy="94" r="0.5" style="stroke:#000000"/>
+<circle cx="72" cy="64" r="0.5" style="stroke:#000000"/>
+<circle cx="53" cy="99" r="0.5" style="stroke:#000000"/>
+<circle cx="95" cy="110" r="0.5" style="stroke:#000000"/>
+<circle cx="99" cy="100" r="0.5" style="stroke:#000000"/>
+<circle cx="81" cy="158" r="0.5" style="stroke:#000000"/>
+<circle cx="77" cy="46" r="0.5" style="stroke:#000000"/>
+<circle cx="104" cy="118" r="0.5" style="stroke:#000000"/>
+<circle cx="98" cy="160" r="0.5" style="stroke:#000000"/>
+<circle cx="102" cy="121" r="0.5" style="stroke:#000000"/>
+<circle cx="81" cy="88" r="0.5" style="stroke:#000000"/>
+<circle cx="145" cy="163" r="0.5" style="stroke:#000000"/>
+<circle cx="110" cy="94" r="0.5" style="stroke:#000000"/>
+<circle cx="72" cy="122" r="0.5" style="stroke:#000000"/>
+<circle cx="103" cy="96" r="0.5" style="stroke:#000000"/>
+<circle cx="101" cy="95" r="0.5" style="stroke:#000000"/>
+<circle cx="95" cy="163" r="0.5" style="stroke:#000000"/>
+<circle cx="99" cy="101" r="0.5" style="stroke:#000000"/>
+<circle cx="89" cy="106" r="0.5" style="stroke:#000000"/>
+<circle cx="98" cy="101" r="0.5" style="stroke:#000000"/>
+<circle cx="70" cy="138" r="0.5" style="stroke:#000000"/>
+<circle cx="149" cy="134" r="0.5" style="stroke:#000000"/>
+<circle cx="117" cy="33" r="0.5" style="stroke:#000000"/>
+<circle cx="96" cy="155" r="0.5" style="stroke:#000000"/>
+<circle cx="105" cy="90" r="0.5" style="stroke:#000000"/>
+<circle cx="101" cy="83" r="0.5" style="stroke:#000000"/>
+<circle cx="93" cy="115" r="0.5" style="stroke:#000000"/>
+<circle cx="94" cy="98" r="0.5" style="stroke:#000000"/>
+<circle cx="114" cy="105" r="0.5" style="stroke:#000000"/>
+<circle cx="70" cy="103" r="0.5" style="stroke:#000000"/>
+<circle cx="114" cy="103" r="0.5" style="stroke:#000000"/>
+<circle cx="93" cy="103" r="0.5" style="stroke:#000000"/>
+<circle cx="43" cy="135" r="0.5" style="stroke:#000000"/>
+<circle cx="152" cy="161" r="0.5" style="stroke:#000000"/>
+<circle cx="104" cy="102" r="0.5" style="stroke:#000000"/>
+<circle cx="93" cy="106" r="0.5" style="stroke:#000000"/>
+<circle cx="173" cy="115" r="0.5" style="stroke:#000000"/>
+<circle cx="139" cy="79" r="0.5" style="stroke:#000000"/>
+<circle cx="99" cy="99" r="0.5" style="stroke:#000000"/>
+<circle cx="70" cy="85" r="0.5" style="stroke:#000000"/>
+<circle cx="132" cy="148" r="0.5" style="stroke:#000000"/>
+<circle cx="99" cy="101" r="0.5" style="stroke:#000000"/>
+<circle cx="100" cy="97" r="0.5" style="stroke:#000000"/>
+<circle cx="47" cy="128" r="0.5" style="stroke:#000000"/>
+<circle cx="112" cy="105" r="0.5" style="stroke:#000000"/>
+<circle cx="127" cy="115" r="0.5" style="stroke:#000000"/>
+<circle cx="122" cy="84" r="0.5" style="stroke:#000000"/>
+<circle cx="126" cy="77" r="0.5" style="stroke:#000000"/>
+<circle cx="121" cy="44" r="0.5" style="stroke:#000000"/>
+<circle cx="48" cy="72" r="0.5" style="stroke:#000000"/>
+<circle cx="75" cy="86" r="0.5" style="stroke:#000000"/>
+<circle cx="105" cy="87" r="0.5" style="stroke:#000000"/>
+<circle cx="79" cy="91" r="0.5" style="stroke:#000000"/>
+<circle cx="148" cy="123" r="0.5" style="stroke:#000000"/>
+<circle cx="114" cy="105" r="0.5" style="stroke:#000000"/>
+<circle cx="52" cy="87" r="0.5" style="stroke:#000000"/>
+<circle cx="100" cy="100" r="0.5" style="stroke:#000000"/>
+<circle cx="134" cy="80" r="0.5" style="stroke:#000000"/>
+<circle cx="84" cy="58" r="0.5" style="stroke:#000000"/>
+<circle cx="97" cy="73" r="0.5" style="stroke:#000000"/>
+<circle cx="88" cy="102" r="0.5" style="stroke:#000000"/>
+<circle cx="71" cy="159" r="0.5" style="stroke:#000000"/>
+<circle cx="133" cy="63" r="0.5" style="stroke:#000000"/>
+<circle cx="80" cy="119" r="0.5" style="stroke:#000000"/>
+<circle cx="137" cy="61" r="0.5" style="stroke:#000000"/>
+<circle cx="109" cy="168" r="0.5" style="stroke:#000000"/>
+<circle cx="91" cy="69" r="0.5" style="stroke:#000000"/>
+<circle cx="68" cy="97" r="0.5" style="stroke:#000000"/>
+<circle cx="117" cy="117" r="0.5" style="stroke:#000000"/>
+<circle cx="121" cy="62" r="0.5" style="stroke:#000000"/>
+<circle cx="84" cy="50" r="0.5" style="stroke:#000000"/>
+<circle cx="101" cy="46" r="0.5" style="stroke:#000000"/>
+<circle cx="102" cy="98" r="0.5" style="stroke:#000000"/>
+<circle cx="151" cy="155" r="0.5" style="stroke:#000000"/>
+<circle cx="52" cy="114" r="0.5" style="stroke:#000000"/>
+<circle cx="109" cy="86" r="0.5" style="stroke:#000000"/>
+<circle cx="175" cy="91" r="0.5" style="stroke:#000000"/>
+<circle cx="178" cy="87" r="0.5" style="stroke:#000000"/>
+<circle cx="97" cy="95" r="0.5" style="stroke:#000000"/>
+<circle cx="90" cy="92" r="0.5" style="stroke:#000000"/>
+<circle cx="53" cy="72" r="0.5" style="stroke:#000000"/>
+<circle cx="108" cy="89" r="0.5" style="stroke:#000000"/>
+<circle cx="110" cy="95" r="0.5" style="stroke:#000000"/>
+<circle cx="64" cy="81" r="0.5" style="stroke:#000000"/>
+<circle cx="166" cy="121" r="0.5" style="stroke:#000000"/>
+<circle cx="146" cy="97" r="0.5" style="stroke:#000000"/>
+<circle cx="112" cy="74" r="0.5" style="stroke:#000000"/>
+<circle cx="54" cy="141" r="0.5" style="stroke:#000000"/>
+<circle cx="40" cy="64" r="0.5" style="stroke:#000000"/>
+<circle cx="71" cy="79" r="0.5" style="stroke:#000000"/>
+<circle cx="96" cy="101" r="0.5" style="stroke:#000000"/>
+<circle cx="119" cy="76" r="0.5" style="stroke:#000000"/>
+<circle cx="85" cy="28" r="0.5" style="stroke:#000000"/>
+<circle cx="49" cy="94" r="0.5" style="stroke:#000000"/>
+<circle cx="127" cy="37" r="0.5" style="stroke:#000000"/>
+<circle cx="78" cy="145" r="0.5" style="stroke:#000000"/>
+<circle cx="94" cy="94" r="0.5" style="stroke:#000000"/>
+<circle cx="100" cy="100" r="0.5" style="stroke:#000000"/>
+<circle cx="128" cy="147" r="0.5" style="stroke:#000000"/>
+<circle cx="101" cy="100" r="0.5" style="stroke:#000000"/>
+<circle cx="56" cy="62" r="0.5" style="stroke:#000000"/>
+<circle cx="61" cy="123" r="0.5" style="stroke:#000000"/>
+<circle cx="44" cy="71" r="0.5" style="stroke:#000000"/>
+<circle cx="92" cy="86" r="0.5" style="stroke:#000000"/>
+<circle cx="169" cy="100" r="0.5" style="stroke:#000000"/>
+<circle cx="86" cy="107" r="0.5" style="stroke:#000000"/>
+<circle cx="52" cy="63" r="0.5" style="stroke:#000000"/>
+<circle cx="95" cy="98" r="0.5" style="stroke:#000000"/>
+<circle cx="106" cy="89" r="0.5" style="stroke:#000000"/>
+<circle cx="32" cy="131" r="0.5" style="stroke:#000000"/>
+<circle cx="170" cy="106" r="0.5" style="stroke:#000000"/>
+<circle cx="95" cy="93" r="0.5" style="stroke:#000000"/>
+<circle cx="57" cy="101" r="0.5" style="stroke:#000000"/>
+<circle cx="62" cy="142" r="0.5" style="stroke:#000000"/>
+<circle cx="95" cy="95" r="0.5" style="stroke:#000000"/>
+<circle cx="95" cy="129" r="0.5" style="stroke:#000000"/>
+<circle cx="71" cy="158" r="0.5" style="stroke:#000000"/>
+<circle cx="124" cy="61" r="0.5" style="stroke:#000000"/>
+<circle cx="33" cy="142" r="0.5" style="stroke:#000000"/>
+<circle cx="94" cy="174" r="0.5" style="stroke:#000000"/>
+<circle cx="176" cy="115" r="0.5" style="stroke:#000000"/>
+<circle cx="69" cy="93" r="0.5" style="stroke:#000000"/>
+<circle cx="73" cy="57" r="0.5" style="stroke:#000000"/>
+<circle cx="162" cy="93" r="0.5" style="stroke:#000000"/>
+<circle cx="69" cy="71" r="0.5" style="stroke:#000000"/>
+<circle cx="145" cy="64" r="0.5" style="stroke:#000000"/>
+<circle cx="145" cy="293" r="0.5" style="stroke:#000000"/>
+<circle cx="159" cy="302" r="0.5" style="stroke:#000000"/>
+<circle cx="141" cy="315" r="0.5" style="stroke:#000000"/>
+<circle cx="137" cy="325" r="0.5" style="stroke:#000000"/>
+<circle cx="147" cy="301" r="0.5" style="stroke:#000000"/>
+<circle cx="152" cy="322" r="0.5" style="stroke:#000000"/>
+<circle cx="165" cy="293" r="0.5" style="stroke:#000000"/>
+<circle cx="163" cy="293" r="0.5" style="stroke:#000000"/>
+<circle cx="141" cy="285" r="0.5" style="stroke:#000000"/>
+<circle cx="159" cy="309" r="0.5" style="stroke:#000000"/>
+<circle cx="164" cy="287" r="0.5" style="stroke:#000000"/>
+<circle cx="150" cy="300" r="0.5" style="stroke:#000000"/>
+<circle cx="154" cy="299" r="0.5" style="stroke:#000000"/>
+<circle cx="154" cy="322" r="0.5" style="stroke:#000000"/>
+<circle cx="138" cy="306" r="0.5" style="stroke:#000000"/>
+<circle cx="165" cy="322" r="0.5" style="stroke:#000000"/>
+<circle cx="151" cy="301" r="0.5" style="stroke:#000000"/>
+<circle cx="150" cy="295" r="0.5" style="stroke:#000000"/>
+<circle cx="150" cy="300" r="0.5" style="stroke:#000000"/>
+<circle cx="141" cy="296" r="0.5" style="stroke:#000000"/>
+<circle cx="126" cy="292" r="0.5" style="stroke:#000000"/>
+<circle cx="136" cy="292" r="0.5" style="stroke:#000000"/>
+<circle cx="156" cy="275" r="0.5" style="stroke:#000000"/>
+<circle cx="126" cy="292" r="0.5" style="stroke:#000000"/>
+<circle cx="135" cy="289" r="0.5" style="stroke:#000000"/>
+<circle cx="164" cy="309" r="0.5" style="stroke:#000000"/>
+<circle cx="171" cy="316" r="0.5" style="stroke:#000000"/>
+<circle cx="154" cy="309" r="0.5" style="stroke:#000000"/>
+<circle cx="164" cy="326" r="0.5" style="stroke:#000000"/>
+<circle cx="154" cy="283" r="0.5" style="stroke:#000000"/>
+<circle cx="141" cy="304" r="0.5" style="stroke:#000000"/>
+<circle cx="164" cy="326" r="0.5" style="stroke:#000000"/>
+<circle cx="151" cy="288" r="0.5" style="stroke:#000000"/>
+<circle cx="136" cy="312" r="0.5" style="stroke:#000000"/>
+<circle cx="158" cy="292" r="0.5" style="stroke:#000000"/>
+<circle cx="160" cy="302" r="0.5" style="stroke:#000000"/>
+<circle cx="145" cy="317" r="0.5" style="stroke:#000000"/>
+<circle cx="158" cy="308" r="0.5" style="stroke:#000000"/>
+<circle cx="147" cy="295" r="0.5" style="stroke:#000000"/>
+<circle cx="147" cy="315" r="0.5" style="stroke:#000000"/>
+<circle cx="147" cy="292" r="0.5" style="stroke:#000000"/>
+<circle cx="160" cy="304" r="0.5" style="stroke:#000000"/>
+<circle cx="144" cy="292" r="0.5" style="stroke:#000000"/>
+<circle cx="168" cy="295" r="0.5" style="stroke:#000000"/>
+<circle cx="139" cy="294" r="0.5" style="stroke:#000000"/>
+<circle cx="130" cy="292" r="0.5" style="stroke:#000000"/>
+<circle cx="160" cy="280" r="0.5" style="stroke:#000000"/>
+<circle cx="150" cy="300" r="0.5" style="stroke:#000000"/>
+<circle cx="166" cy="323" r="0.5" style="stroke:#000000"/>
+<circle cx="150" cy="299" r="0.5" style="stroke:#000000"/>
+<circle cx="145" cy="307" r="0.5" style="stroke:#000000"/>
+<circle cx="145" cy="297" r="0.5" style="stroke:#000000"/>
+<circle cx="155" cy="296" r="0.5" style="stroke:#000000"/>
+<circle cx="148" cy="294" r="0.5" style="stroke:#000000"/>
+<circle cx="152" cy="301" r="0.5" style="stroke:#000000"/>
+<circle cx="159" cy="311" r="0.5" style="stroke:#000000"/>
+<circle cx="142" cy="300" r="0.5" style="stroke:#000000"/>
+<circle cx="171" cy="317" r="0.5" style="stroke:#000000"/>
+<circle cx="135" cy="290" r="0.5" style="stroke:#000000"/>
+<circle cx="131" cy="298" r="0.5" style="stroke:#000000"/>
+<circle cx="151" cy="307" r="0.5" style="stroke:#000000"/>
+<circle cx="151" cy="300" r="0.5" style="stroke:#000000"/>
+<circle cx="120" cy="299" r="0.5" style="stroke:#000000"/>
+<circle cx="147" cy="314" r="0.5" style="stroke:#000000"/>
+<circle cx="141" cy="305" r="0.5" style="stroke:#000000"/>
+<circle cx="141" cy="290" r="0.5" style="stroke:#000000"/>
+<circle cx="167" cy="324" r="0.5" style="stroke:#000000"/>
+<circle cx="140" cy="283" r="0.5" style="stroke:#000000"/>
+<circle cx="158" cy="279" r="0.5" style="stroke:#000000"/>
+<circle cx="155" cy="284" r="0.5" style="stroke:#000000"/>
+<circle cx="172" cy="299" r="0.5" style="stroke:#000000"/>
+<circle cx="156" cy="323" r="0.5" style="stroke:#000000"/>
+<circle cx="164" cy="286" r="0.5" style="stroke:#000000"/>
+<circle cx="156" cy="284" r="0.5" style="stroke:#000000"/>
+<circle cx="146" cy="298" r="0.5" style="stroke:#000000"/>
+<circle cx="140" cy="286" r="0.5" style="stroke:#000000"/>
+<circle cx="133" cy="300" r="0.5" style="stroke:#000000"/>
+<circle cx="148" cy="304" r="0.5" style="stroke:#000000"/>
+<circle cx="149" cy="300" r="0.5" style="stroke:#000000"/>
+<circle cx="143" cy="322" r="0.5" style="stroke:#000000"/>
+<circle cx="141" cy="280" r="0.5" style="stroke:#000000"/>
+<circle cx="152" cy="307" r="0.5" style="stroke:#000000"/>
+<circle cx="149" cy="322" r="0.5" style="stroke:#000000"/>
+<circle cx="151" cy="308" r="0.5" style="stroke:#000000"/>
+<circle cx="143" cy="296" r="0.5" style="stroke:#000000"/>
+<circle cx="167" cy="323" r="0.5" style="stroke:#000000"/>
+<circle cx="154" cy="298" r="0.5" style="stroke:#000000"/>
+<circle cx="139" cy="308" r="0.5" style="stroke:#000000"/>
+<circle cx="151" cy="299" r="0.5" style="stroke:#000000"/>
+<circle cx="150" cy="298" r="0.5" style="stroke:#000000"/>
+<circle cx="148" cy="324" r="0.5" style="stroke:#000000"/>
+<circle cx="150" cy="301" r="0.5" style="stroke:#000000"/>
+<circle cx="146" cy="302" r="0.5" style="stroke:#000000"/>
+<circle cx="149" cy="300" r="0.5" style="stroke:#000000"/>
+<circle cx="139" cy="314" r="0.5" style="stroke:#000000"/>
+<circle cx="168" cy="313" r="0.5" style="stroke:#000000"/>
+<circle cx="156" cy="275" r="0.5" style="stroke:#000000"/>
+<circle cx="148" cy="321" r="0.5" style="stroke:#000000"/>
+<circle cx="152" cy="296" r="0.5" style="stroke:#000000"/>
+<circle cx="150" cy="294" r="0.5" style="stroke:#000000"/>
+<circle cx="147" cy="305" r="0.5" style="stroke:#000000"/>
+<circle cx="148" cy="299" r="0.5" style="stroke:#000000"/>
+<circle cx="155" cy="302" r="0.5" style="stroke:#000000"/>
+<circle cx="139" cy="301" r="0.5" style="stroke:#000000"/>
+<circle cx="155" cy="301" r="0.5" style="stroke:#000000"/>
+<circle cx="147" cy="301" r="0.5" style="stroke:#000000"/>
+<circle cx="129" cy="313" r="0.5" style="stroke:#000000"/>
+<circle cx="169" cy="323" r="0.5" style="stroke:#000000"/>
+<circle cx="151" cy="301" r="0.5" style="stroke:#000000"/>
+<circle cx="147" cy="302" r="0.5" style="stroke:#000000"/>
+<circle cx="177" cy="305" r="0.5" style="stroke:#000000"/>
+<circle cx="165" cy="292" r="0.5" style="stroke:#000000"/>
+<circle cx="150" cy="300" r="0.5" style="stroke:#000000"/>
+<circle cx="139" cy="294" r="0.5" style="stroke:#000000"/>
+<circle cx="162" cy="318" r="0.5" style="stroke:#000000"/>
+<circle cx="150" cy="300" r="0.5" style="stroke:#000000"/>
+<circle cx="150" cy="299" r="0.5" style="stroke:#000000"/>
+<circle cx="130" cy="310" r="0.5" style="stroke:#000000"/>
+<circle cx="155" cy="302" r="0.5" style="stroke:#000000"/>
+<circle cx="160" cy="306" r="0.5" style="stroke:#000000"/>
+<circle cx="158" cy="294" r="0.5" style="stroke:#000000"/>
+<circle cx="160" cy="291" r="0.5" style="stroke:#000000"/>
+<circle cx="158" cy="279" r="0.5" style="stroke:#000000"/>
+<circle cx="130" cy="289" r="0.5" style="stroke:#000000"/>
+<circle cx="141" cy="295" r="0.5" style="stroke:#000000"/>
+<circle cx="152" cy="295" r="0.5" style="stroke:#000000"/>
+<circle cx="142" cy="297" r="0.5" style="stroke:#000000"/>
+<circle cx="168" cy="309" r="0.5" style="stroke:#000000"/>
+<circle cx="155" cy="302" r="0.5" style="stroke:#000000"/>
+<circle cx="132" cy="295" r="0.5" style="stroke:#000000"/>
+<circle cx="150" cy="300" r="0.5" style="stroke:#000000"/>
+<circle cx="163" cy="293" r="0.5" style="stroke:#000000"/>
+<circle cx="144" cy="284" r="0.5" style="stroke:#000000"/>
+<circle cx="149" cy="290" r="0.5" style="stroke:#000000"/>
+<circle cx="146" cy="301" r="0.5" style="stroke:#000000"/>
+<circle cx="139" cy="322" r="0.5" style="stroke:#000000"/>
+<circle cx="163" cy="286" r="0.5" style="stroke:#000000"/>
+<circle cx="142" cy="307" r="0.5" style="stroke:#000000"/>
+<circle cx="164" cy="286" r="0.5" style="stroke:#000000"/>
+<circle cx="153" cy="325" r="0.5" style="stroke:#000000"/>
+<circle cx="147" cy="289" r="0.5" style="stroke:#000000"/>
+<circle cx="138" cy="299" r="0.5" style="stroke:#000000"/>
+<circle cx="157" cy="306" r="0.5" style="stroke:#000000"/>
+<circle cx="158" cy="286" r="0.5" style="stroke:#000000"/>
+<circle cx="144" cy="281" r="0.5" style="stroke:#000000"/>
+<circle cx="150" cy="280" r="0.5" style="stroke:#000000"/>
+<circle cx="151" cy="299" r="0.5" style="stroke:#000000"/>
+<circle cx="169" cy="321" r="0.5" style="stroke:#000000"/>
+<circle cx="132" cy="305" r="0.5" style="stroke:#000000"/>
+<circle cx="153" cy="295" r="0.5" style="stroke:#000000"/>
+<circle cx="178" cy="297" r="0.5" style="stroke:#000000"/>
+<circle cx="179" cy="295" r="0.5" style="stroke:#000000"/>
+<circle cx="149" cy="298" r="0.5" style="stroke:#000000"/>
+<circle cx="146" cy="297" r="0.5" style="stroke:#000000"/>
+<circle cx="132" cy="290" r="0.5" style="stroke:#000000"/>
+<circle cx="153" cy="296" r="0.5" style="stroke:#000000"/>
+<circle cx="154" cy="298" r="0.5" style="stroke:#000000"/>
+<circle cx="136" cy="293" r="0.5" style="stroke:#000000"/>
+<circle cx="175" cy="308" r="0.5" style="stroke:#000000"/>
+<circle cx="167" cy="299" r="0.5" style="stroke:#000000"/>
+<circle cx="154" cy="290" r="0.5" style="stroke:#000000"/>
+<circle cx="133" cy="316" r="0.5" style="stroke:#000000"/>
+<circle cx="127" cy="286" r="0.5" style="stroke:#000000"/>
+<circle cx="139" cy="292" r="0.5" style="stroke:#000000"/>
+<circle cx="148" cy="300" r="0.5" style="stroke:#000000"/>
+<circle cx="157" cy="291" r="0.5" style="stroke:#000000"/>
+<circle cx="144" cy="273" r="0.5" style="stroke:#000000"/>
+<circle cx="131" cy="298" r="0.5" style="stroke:#000000"/>
+<circle cx="160" cy="276" r="0.5" style="stroke:#000000"/>
+<circle cx="142" cy="317" r="0.5" style="stroke:#000000"/>
+<circle cx="148" cy="298" r="0.5" style="stroke:#000000"/>
+<circle cx="150" cy="300" r="0.5" style="stroke:#000000"/>
+<circle cx="161" cy="318" r="0.5" style="stroke:#000000"/>
+<circle cx="150" cy="300" r="0.5" style="stroke:#000000"/>
+<circle cx="134" cy="286" r="0.5" style="stroke:#000000"/>
+<circle cx="135" cy="309" r="0.5" style="stroke:#000000"/>
+<circle cx="129" cy="289" r="0.5" style="stroke:#000000"/>
+<circle cx="147" cy="295" r="0.5" style="stroke:#000000"/>
+<circle cx="176" cy="300" r="0.5" style="stroke:#000000"/>
+<circle cx="145" cy="303" r="0.5" style="stroke:#000000"/>
+<circle cx="132" cy="286" r="0.5" style="stroke:#000000"/>
+<circle cx="148" cy="299" r="0.5" style="stroke:#000000"/>
+<circle cx="152" cy="296" r="0.5" style="stroke:#000000"/>
+<circle cx="124" cy="311" r="0.5" style="stroke:#000000"/>
+<circle cx="176" cy="302" r="0.5" style="stroke:#000000"/>
+<circle cx="148" cy="297" r="0.5" style="stroke:#000000"/>
+<circle cx="134" cy="301" r="0.5" style="stroke:#000000"/>
+<circle cx="136" cy="316" r="0.5" style="stroke:#000000"/>
+<circle cx="148" cy="298" r="0.5" style="stroke:#000000"/>
+<circle cx="148" cy="311" r="0.5" style="stroke:#000000"/>
+<circle cx="139" cy="322" r="0.5" style="stroke:#000000"/>
+<circle cx="159" cy="285" r="0.5" style="stroke:#000000"/>
+<circle cx="125" cy="316" r="0.5" style="stroke:#000000"/>
+<circle cx="148" cy="328" r="0.5" style="stroke:#000000"/>
+<circle cx="178" cy="306" r="0.5" style="stroke:#000000"/>
+<circle cx="138" cy="297" r="0.5" style="stroke:#000000"/>
+<circle cx="140" cy="284" r="0.5" style="stroke:#000000"/>
+<circle cx="173" cy="297" r="0.5" style="stroke:#000000"/>
+<circle cx="138" cy="289" r="0.5" style="stroke:#000000"/>
+<circle cx="167" cy="287" r="0.5" style="stroke:#000000"/>
+<circle cx="495" cy="113" r="0.5" style="stroke:#000000"/>
+<circle cx="509" cy="122" r="0.5" style="stroke:#000000"/>
+<circle cx="491" cy="135" r="0.5" style="stroke:#000000"/>
+<circle cx="487" cy="145" r="0.5" style="stroke:#000000"/>
+<circle cx="497" cy="121" r="0.5" style="stroke:#000000"/>
+<circle cx="502" cy="142" r="0.5" style="stroke:#000000"/>
+<circle cx="515" cy="113" r="0.5" style="stroke:#000000"/>
+<circle cx="513" cy="113" r="0.5" style="stroke:#000000"/>
+<circle cx="491" cy="105" r="0.5" style="stroke:#000000"/>
+<circle cx="509" cy="129" r="0.5" style="stroke:#000000"/>
+<circle cx="514" cy="107" r="0.5" style="stroke:#000000"/>
+<circle cx="500" cy="120" r="0.5" style="stroke:#000000"/>
+<circle cx="504" cy="119" r="0.5" style="stroke:#000000"/>
+<circle cx="504" cy="142" r="0.5" style="stroke:#000000"/>
+<circle cx="488" cy="126" r="0.5" style="stroke:#000000"/>
+<circle cx="515" cy="142" r="0.5" style="stroke:#000000"/>
+<circle cx="501" cy="121" r="0.5" style="stroke:#000000"/>
+<circle cx="500" cy="115" r="0.5" style="stroke:#000000"/>
+<circle cx="500" cy="120" r="0.5" style="stroke:#000000"/>
+<circle cx="491" cy="116" r="0.5" style="stroke:#000000"/>
+<circle cx="476" cy="112" r="0.5" style="stroke:#000000"/>
+<circle cx="486" cy="112" r="0.5" style="stroke:#000000"/>
+<circle cx="506" cy="95" r="0.5" style="stroke:#000000"/>
+<circle cx="476" cy="112" r="0.5" style="stroke:#000000"/>
+<circle cx="485" cy="109" r="0.5" style="stroke:#000000"/>
+<circle cx="514" cy="129" r="0.5" style="stroke:#000000"/>
+<circle cx="521" cy="136" r="0.5" style="stroke:#000000"/>
+<circle cx="504" cy="129" r="0.5" style="stroke:#000000"/>
+<circle cx="514" cy="146" r="0.5" style="stroke:#000000"/>
+<circle cx="504" cy="103" r="0.5" style="stroke:#000000"/>
+<circle cx="491" cy="124" r="0.5" style="stroke:#000000"/>
+<circle cx="514" cy="146" r="0.5" style="stroke:#000000"/>
+<circle cx="501" cy="108" r="0.5" style="stroke:#000000"/>
+<circle cx="486" cy="132" r="0.5" style="stroke:#000000"/>
+<circle cx="508" cy="112" r="0.5" style="stroke:#000000"/>
+<circle cx="510" cy="122" r="0.5" style="stroke:#000000"/>
+<circle cx="495" cy="137" r="0.5" style="stroke:#000000"/>
+<circle cx="508" cy="128" r="0.5" style="stroke:#000000"/>
+<circle cx="497" cy="115" r="0.5" style="stroke:#000000"/>
+<circle cx="497" cy="135" r="0.5" style="stroke:#000000"/>
+<circle cx="497" cy="112" r="0.5" style="stroke:#000000"/>
+<circle cx="510" cy="124" r="0.5" style="stroke:#000000"/>
+<circle cx="494" cy="112" r="0.5" style="stroke:#000000"/>
+<circle cx="518" cy="115" r="0.5" style="stroke:#000000"/>
+<circle cx="489" cy="114" r="0.5" style="stroke:#000000"/>
+<circle cx="480" cy="112" r="0.5" style="stroke:#000000"/>
+<circle cx="510" cy="100" r="0.5" style="stroke:#000000"/>
+<circle cx="500" cy="120" r="0.5" style="stroke:#000000"/>
+<circle cx="516" cy="143" r="0.5" style="stroke:#000000"/>
+<circle cx="500" cy="119" r="0.5" style="stroke:#000000"/>
+<circle cx="495" cy="127" r="0.5" style="stroke:#000000"/>
+<circle cx="495" cy="117" r="0.5" style="stroke:#000000"/>
+<circle cx="505" cy="116" r="0.5" style="stroke:#000000"/>
+<circle cx="498" cy="114" r="0.5" style="stroke:#000000"/>
+<circle cx="502" cy="121" r="0.5" style="stroke:#000000"/>
+<circle cx="509" cy="131" r="0.5" style="stroke:#000000"/>
+<circle cx="492" cy="120" r="0.5" style="stroke:#000000"/>
+<circle cx="521" cy="137" r="0.5" style="stroke:#000000"/>
+<circle cx="485" cy="110" r="0.5" style="stroke:#000000"/>
+<circle cx="481" cy="118" r="0.5" style="stroke:#000000"/>
+<circle cx="501" cy="127" r="0.5" style="stroke:#000000"/>
+<circle cx="501" cy="120" r="0.5" style="stroke:#000000"/>
+<circle cx="470" cy="119" r="0.5" style="stroke:#000000"/>
+<circle cx="497" cy="134" r="0.5" style="stroke:#000000"/>
+<circle cx="491" cy="125" r="0.5" style="stroke:#000000"/>
+<circle cx="491" cy="110" r="0.5" style="stroke:#000000"/>
+<circle cx="517" cy="144" r="0.5" style="stroke:#000000"/>
+<circle cx="490" cy="103" r="0.5" style="stroke:#000000"/>
+<circle cx="508" cy="99" r="0.5" style="stroke:#000000"/>
+<circle cx="505" cy="104" r="0.5" style="stroke:#000000"/>
+<circle cx="522" cy="119" r="0.5" style="stroke:#000000"/>
+<circle cx="506" cy="143" r="0.5" style="stroke:#000000"/>
+<circle cx="514" cy="106" r="0.5" style="stroke:#000000"/>
+<circle cx="506" cy="104" r="0.5" style="stroke:#000000"/>
+<circle cx="496" cy="118" r="0.5" style="stroke:#000000"/>
+<circle cx="490" cy="106" r="0.5" style="stroke:#000000"/>
+<circle cx="483" cy="120" r="0.5" style="stroke:#000000"/>
+<circle cx="498" cy="124" r="0.5" style="stroke:#000000"/>
+<circle cx="499" cy="120" r="0.5" style="stroke:#000000"/>
+<circle cx="493" cy="142" r="0.5" style="stroke:#000000"/>
+<circle cx="491" cy="100" r="0.5" style="stroke:#000000"/>
+<circle cx="502" cy="127" r="0.5" style="stroke:#000000"/>
+<circle cx="499" cy="142" r="0.5" style="stroke:#000000"/>
+<circle cx="501" cy="128" r="0.5" style="stroke:#000000"/>
+<circle cx="493" cy="116" r="0.5" style="stroke:#000000"/>
+<circle cx="517" cy="143" r="0.5" style="stroke:#000000"/>
+<circle cx="504" cy="118" r="0.5" style="stroke:#000000"/>
+<circle cx="489" cy="128" r="0.5" style="stroke:#000000"/>
+<circle cx="501" cy="119" r="0.5" style="stroke:#000000"/>
+<circle cx="500" cy="118" r="0.5" style="stroke:#000000"/>
+<circle cx="498" cy="144" r="0.5" style="stroke:#000000"/>
+<circle cx="500" cy="121" r="0.5" style="stroke:#000000"/>
+<circle cx="496" cy="122" r="0.5" style="stroke:#000000"/>
+<circle cx="499" cy="120" r="0.5" style="stroke:#000000"/>
+<circle cx="489" cy="134" r="0.5" style="stroke:#000000"/>
+<circle cx="518" cy="133" r="0.5" style="stroke:#000000"/>
+<circle cx="506" cy="95" r="0.5" style="stroke:#000000"/>
+<circle cx="498" cy="141" r="0.5" style="stroke:#000000"/>
+<circle cx="502" cy="116" r="0.5" style="stroke:#000000"/>
+<circle cx="500" cy="114" r="0.5" style="stroke:#000000"/>
+<circle cx="497" cy="125" r="0.5" style="stroke:#000000"/>
+<circle cx="498" cy="119" r="0.5" style="stroke:#000000"/>
+<circle cx="505" cy="122" r="0.5" style="stroke:#000000"/>
+<circle cx="489" cy="121" r="0.5" style="stroke:#000000"/>
+<circle cx="505" cy="121" r="0.5" style="stroke:#000000"/>
+<circle cx="497" cy="121" r="0.5" style="stroke:#000000"/>
+<circle cx="479" cy="133" r="0.5" style="stroke:#000000"/>
+<circle cx="519" cy="143" r="0.5" style="stroke:#000000"/>
+<circle cx="501" cy="121" r="0.5" style="stroke:#000000"/>
+<circle cx="497" cy="122" r="0.5" style="stroke:#000000"/>
+<circle cx="527" cy="125" r="0.5" style="stroke:#000000"/>
+<circle cx="515" cy="112" r="0.5" style="stroke:#000000"/>
+<circle cx="500" cy="120" r="0.5" style="stroke:#000000"/>
+<circle cx="489" cy="114" r="0.5" style="stroke:#000000"/>
+<circle cx="512" cy="138" r="0.5" style="stroke:#000000"/>
+<circle cx="500" cy="120" r="0.5" style="stroke:#000000"/>
+<circle cx="500" cy="119" r="0.5" style="stroke:#000000"/>
+<circle cx="480" cy="130" r="0.5" style="stroke:#000000"/>
+<circle cx="505" cy="122" r="0.5" style="stroke:#000000"/>
+<circle cx="510" cy="126" r="0.5" style="stroke:#000000"/>
+<circle cx="508" cy="114" r="0.5" style="stroke:#000000"/>
+<circle cx="510" cy="111" r="0.5" style="stroke:#000000"/>
+<circle cx="508" cy="99" r="0.5" style="stroke:#000000"/>
+<circle cx="480" cy="109" r="0.5" style="stroke:#000000"/>
+<circle cx="491" cy="115" r="0.5" style="stroke:#000000"/>
+<circle cx="502" cy="115" r="0.5" style="stroke:#000000"/>
+<circle cx="492" cy="117" r="0.5" style="stroke:#000000"/>
+<circle cx="518" cy="129" r="0.5" style="stroke:#000000"/>
+<circle cx="505" cy="122" r="0.5" style="stroke:#000000"/>
+<circle cx="482" cy="115" r="0.5" style="stroke:#000000"/>
+<circle cx="500" cy="120" r="0.5" style="stroke:#000000"/>
+<circle cx="513" cy="113" r="0.5" style="stroke:#000000"/>
+<circle cx="494" cy="104" r="0.5" style="stroke:#000000"/>
+<circle cx="499" cy="110" r="0.5" style="stroke:#000000"/>
+<circle cx="496" cy="121" r="0.5" style="stroke:#000000"/>
+<circle cx="489" cy="142" r="0.5" style="stroke:#000000"/>
+<circle cx="513" cy="106" r="0.5" style="stroke:#000000"/>
+<circle cx="492" cy="127" r="0.5" style="stroke:#000000"/>
+<circle cx="514" cy="106" r="0.5" style="stroke:#000000"/>
+<circle cx="503" cy="145" r="0.5" style="stroke:#000000"/>
+<circle cx="497" cy="109" r="0.5" style="stroke:#000000"/>
+<circle cx="488" cy="119" r="0.5" style="stroke:#000000"/>
+<circle cx="507" cy="126" r="0.5" style="stroke:#000000"/>
+<circle cx="508" cy="106" r="0.5" style="stroke:#000000"/>
+<circle cx="494" cy="101" r="0.5" style="stroke:#000000"/>
+<circle cx="500" cy="100" r="0.5" style="stroke:#000000"/>
+<circle cx="501" cy="119" r="0.5" style="stroke:#000000"/>
+<circle cx="519" cy="141" r="0.5" style="stroke:#000000"/>
+<circle cx="482" cy="125" r="0.5" style="stroke:#000000"/>
+<circle cx="503" cy="115" r="0.5" style="stroke:#000000"/>
+<circle cx="528" cy="117" r="0.5" style="stroke:#000000"/>
+<circle cx="529" cy="115" r="0.5" style="stroke:#000000"/>
+<circle cx="499" cy="118" r="0.5" style="stroke:#000000"/>
+<circle cx="496" cy="117" r="0.5" style="stroke:#000000"/>
+<circle cx="482" cy="110" r="0.5" style="stroke:#000000"/>
+<circle cx="503" cy="116" r="0.5" style="stroke:#000000"/>
+<circle cx="504" cy="118" r="0.5" style="stroke:#000000"/>
+<circle cx="486" cy="113" r="0.5" style="stroke:#000000"/>
+<circle cx="525" cy="128" r="0.5" style="stroke:#000000"/>
+<circle cx="517" cy="119" r="0.5" style="stroke:#000000"/>
+<circle cx="504" cy="110" r="0.5" style="stroke:#000000"/>
+<circle cx="483" cy="136" r="0.5" style="stroke:#000000"/>
+<circle cx="477" cy="106" r="0.5" style="stroke:#000000"/>
+<circle cx="489" cy="112" r="0.5" style="stroke:#000000"/>
+<circle cx="498" cy="120" r="0.5" style="stroke:#000000"/>
+<circle cx="507" cy="111" r="0.5" style="stroke:#000000"/>
+<circle cx="494" cy="93" r="0.5" style="stroke:#000000"/>
+<circle cx="481" cy="118" r="0.5" style="stroke:#000000"/>
+<circle cx="510" cy="96" r="0.5" style="stroke:#000000"/>
+<circle cx="492" cy="137" r="0.5" style="stroke:#000000"/>
+<circle cx="498" cy="118" r="0.5" style="stroke:#000000"/>
+<circle cx="500" cy="120" r="0.5" style="stroke:#000000"/>
+<circle cx="511" cy="138" r="0.5" style="stroke:#000000"/>
+<circle cx="500" cy="120" r="0.5" style="stroke:#000000"/>
+<circle cx="484" cy="106" r="0.5" style="stroke:#000000"/>
+<circle cx="485" cy="129" r="0.5" style="stroke:#000000"/>
+<circle cx="479" cy="109" r="0.5" style="stroke:#000000"/>
+<circle cx="497" cy="115" r="0.5" style="stroke:#000000"/>
+<circle cx="526" cy="120" r="0.5" style="stroke:#000000"/>
+<circle cx="495" cy="123" r="0.5" style="stroke:#000000"/>
+<circle cx="482" cy="106" r="0.5" style="stroke:#000000"/>
+<circle cx="498" cy="119" r="0.5" style="stroke:#000000"/>
+<circle cx="502" cy="116" r="0.5" style="stroke:#000000"/>
+<circle cx="474" cy="131" r="0.5" style="stroke:#000000"/>
+<circle cx="526" cy="122" r="0.5" style="stroke:#000000"/>
+<circle cx="498" cy="117" r="0.5" style="stroke:#000000"/>
+<circle cx="484" cy="121" r="0.5" style="stroke:#000000"/>
+<circle cx="486" cy="136" r="0.5" style="stroke:#000000"/>
+<circle cx="498" cy="118" r="0.5" style="stroke:#000000"/>
+<circle cx="498" cy="131" r="0.5" style="stroke:#000000"/>
+<circle cx="489" cy="142" r="0.5" style="stroke:#000000"/>
+<circle cx="509" cy="105" r="0.5" style="stroke:#000000"/>
+<circle cx="475" cy="136" r="0.5" style="stroke:#000000"/>
+<circle cx="498" cy="148" r="0.5" style="stroke:#000000"/>
+<circle cx="528" cy="126" r="0.5" style="stroke:#000000"/>
+<circle cx="488" cy="117" r="0.5" style="stroke:#000000"/>
+<circle cx="490" cy="104" r="0.5" style="stroke:#000000"/>
+<circle cx="523" cy="117" r="0.5" style="stroke:#000000"/>
+<circle cx="488" cy="109" r="0.5" style="stroke:#000000"/>
+<circle cx="517" cy="107" r="0.5" style="stroke:#000000"/>
+<circle cx="275" cy="163" r="0.5" style="stroke:#000000"/>
+<circle cx="345" cy="212" r="0.5" style="stroke:#000000"/>
+<circle cx="256" cy="277" r="0.5" style="stroke:#000000"/>
+<circle cx="235" cy="324" r="0.5" style="stroke:#000000"/>
+<circle cx="286" cy="206" r="0.5" style="stroke:#000000"/>
+<circle cx="312" cy="311" r="0.5" style="stroke:#000000"/>
+<circle cx="375" cy="163" r="0.5" style="stroke:#000000"/>
+<circle cx="363" cy="164" r="0.5" style="stroke:#000000"/>
+<circle cx="254" cy="126" r="0.5" style="stroke:#000000"/>
+<circle cx="343" cy="243" r="0.5" style="stroke:#000000"/>
+<circle cx="372" cy="133" r="0.5" style="stroke:#000000"/>
+<circle cx="301" cy="201" r="0.5" style="stroke:#000000"/>
+<circle cx="319" cy="193" r="0.5" style="stroke:#000000"/>
+<circle cx="319" cy="311" r="0.5" style="stroke:#000000"/>
+<circle cx="238" cy="232" r="0.5" style="stroke:#000000"/>
+<circle cx="376" cy="310" r="0.5" style="stroke:#000000"/>
+<circle cx="305" cy="203" r="0.5" style="stroke:#000000"/>
+<circle cx="299" cy="177" r="0.5" style="stroke:#000000"/>
+<circle cx="300" cy="201" r="0.5" style="stroke:#000000"/>
+<circle cx="256" cy="179" r="0.5" style="stroke:#000000"/>
+<circle cx="182" cy="162" r="0.5" style="stroke:#000000"/>
+<circle cx="229" cy="158" r="0.5" style="stroke:#000000"/>
+<circle cx="328" cy="75" r="0.5" style="stroke:#000000"/>
+<circle cx="180" cy="161" r="0.5" style="stroke:#000000"/>
+<circle cx="225" cy="144" r="0.5" style="stroke:#000000"/>
+<circle cx="369" cy="245" r="0.5" style="stroke:#000000"/>
+<circle cx="406" cy="282" r="0.5" style="stroke:#000000"/>
+<circle cx="320" cy="245" r="0.5" style="stroke:#000000"/>
+<circle cx="369" cy="328" r="0.5" style="stroke:#000000"/>
+<circle cx="318" cy="115" r="0.5" style="stroke:#000000"/>
+<circle cx="253" cy="221" r="0.5" style="stroke:#000000"/>
+<circle cx="369" cy="332" r="0.5" style="stroke:#000000"/>
+<circle cx="303" cy="140" r="0.5" style="stroke:#000000"/>
+<circle cx="231" cy="259" r="0.5" style="stroke:#000000"/>
+<circle cx="342" cy="159" r="0.5" style="stroke:#000000"/>
+<circle cx="348" cy="208" r="0.5" style="stroke:#000000"/>
+<circle cx="273" cy="283" r="0.5" style="stroke:#000000"/>
+<circle cx="342" cy="241" r="0.5" style="stroke:#000000"/>
+<circle cx="284" cy="177" r="0.5" style="stroke:#000000"/>
+<circle cx="283" cy="276" r="0.5" style="stroke:#000000"/>
+<circle cx="284" cy="159" r="0.5" style="stroke:#000000"/>
+<circle cx="348" cy="222" r="0.5" style="stroke:#000000"/>
+<circle cx="269" cy="159" r="0.5" style="stroke:#000000"/>
+<circle cx="388" cy="175" r="0.5" style="stroke:#000000"/>
+<circle cx="245" cy="172" r="0.5" style="stroke:#000000"/>
+<circle cx="200" cy="158" r="0.5" style="stroke:#000000"/>
+<circle cx="351" cy="99" r="0.5" style="stroke:#000000"/>
+<circle cx="300" cy="201" r="0.5" style="stroke:#000000"/>
+<circle cx="379" cy="317" r="0.5" style="stroke:#000000"/>
+<circle cx="301" cy="197" r="0.5" style="stroke:#000000"/>
+<circle cx="277" cy="236" r="0.5" style="stroke:#000000"/>
+<circle cx="275" cy="187" r="0.5" style="stroke:#000000"/>
+<circle cx="324" cy="178" r="0.5" style="stroke:#000000"/>
+<circle cx="292" cy="168" r="0.5" style="stroke:#000000"/>
+<circle cx="312" cy="204" r="0.5" style="stroke:#000000"/>
+<circle cx="345" cy="255" r="0.5" style="stroke:#000000"/>
+<circle cx="262" cy="198" r="0.5" style="stroke:#000000"/>
+<circle cx="403" cy="283" r="0.5" style="stroke:#000000"/>
+<circle cx="223" cy="152" r="0.5" style="stroke:#000000"/>
+<circle cx="207" cy="189" r="0.5" style="stroke:#000000"/>
+<circle cx="305" cy="237" r="0.5" style="stroke:#000000"/>
+<circle cx="303" cy="200" r="0.5" style="stroke:#000000"/>
+<circle cx="150" cy="197" r="0.5" style="stroke:#000000"/>
+<circle cx="286" cy="268" r="0.5" style="stroke:#000000"/>
+<circle cx="254" cy="227" r="0.5" style="stroke:#000000"/>
+<circle cx="254" cy="152" r="0.5" style="stroke:#000000"/>
+<circle cx="387" cy="322" r="0.5" style="stroke:#000000"/>
+<circle cx="250" cy="117" r="0.5" style="stroke:#000000"/>
+<circle cx="341" cy="97" r="0.5" style="stroke:#000000"/>
+<circle cx="327" cy="122" r="0.5" style="stroke:#000000"/>
+<circle cx="412" cy="193" r="0.5" style="stroke:#000000"/>
+<circle cx="329" cy="315" r="0.5" style="stroke:#000000"/>
+<circle cx="372" cy="130" r="0.5" style="stroke:#000000"/>
+<circle cx="328" cy="120" r="0.5" style="stroke:#000000"/>
+<circle cx="279" cy="190" r="0.5" style="stroke:#000000"/>
+<circle cx="248" cy="132" r="0.5" style="stroke:#000000"/>
+<circle cx="213" cy="199" r="0.5" style="stroke:#000000"/>
+<circle cx="291" cy="218" r="0.5" style="stroke:#000000"/>
+<circle cx="297" cy="200" r="0.5" style="stroke:#000000"/>
+<circle cx="264" cy="309" r="0.5" style="stroke:#000000"/>
+<circle cx="257" cy="100" r="0.5" style="stroke:#000000"/>
+<circle cx="308" cy="235" r="0.5" style="stroke:#000000"/>
+<circle cx="296" cy="312" r="0.5" style="stroke:#000000"/>
+<circle cx="305" cy="240" r="0.5" style="stroke:#000000"/>
+<circle cx="264" cy="178" r="0.5" style="stroke:#000000"/>
+<circle cx="383" cy="317" r="0.5" style="stroke:#000000"/>
+<circle cx="319" cy="189" r="0.5" style="stroke:#000000"/>
+<circle cx="247" cy="241" r="0.5" style="stroke:#000000"/>
+<circle cx="306" cy="193" r="0.5" style="stroke:#000000"/>
+<circle cx="302" cy="190" r="0.5" style="stroke:#000000"/>
+<circle cx="292" cy="319" r="0.5" style="stroke:#000000"/>
+<circle cx="298" cy="203" r="0.5" style="stroke:#000000"/>
+<circle cx="280" cy="211" r="0.5" style="stroke:#000000"/>
+<circle cx="296" cy="202" r="0.5" style="stroke:#000000"/>
+<circle cx="243" cy="272" r="0.5" style="stroke:#000000"/>
+<circle cx="392" cy="263" r="0.5" style="stroke:#000000"/>
+<circle cx="331" cy="74" r="0.5" style="stroke:#000000"/>
+<circle cx="292" cy="303" r="0.5" style="stroke:#000000"/>
+<circle cx="310" cy="181" r="0.5" style="stroke:#000000"/>
+<circle cx="302" cy="168" r="0.5" style="stroke:#000000"/>
+<circle cx="287" cy="227" r="0.5" style="stroke:#000000"/>
+<circle cx="288" cy="196" r="0.5" style="stroke:#000000"/>
+<circle cx="326" cy="210" r="0.5" style="stroke:#000000"/>
+<circle cx="244" cy="206" r="0.5" style="stroke:#000000"/>
+<circle cx="325" cy="205" r="0.5" style="stroke:#000000"/>
+<circle cx="287" cy="206" r="0.5" style="stroke:#000000"/>
+<circle cx="194" cy="265" r="0.5" style="stroke:#000000"/>
+<circle cx="397" cy="314" r="0.5" style="stroke:#000000"/>
+<circle cx="307" cy="204" r="0.5" style="stroke:#000000"/>
+<circle cx="286" cy="212" r="0.5" style="stroke:#000000"/>
+<circle cx="436" cy="227" r="0.5" style="stroke:#000000"/>
+<circle cx="373" cy="161" r="0.5" style="stroke:#000000"/>
+<circle cx="298" cy="199" r="0.5" style="stroke:#000000"/>
+<circle cx="244" cy="172" r="0.5" style="stroke:#000000"/>
+<circle cx="360" cy="290" r="0.5" style="stroke:#000000"/>
+<circle cx="299" cy="202" r="0.5" style="stroke:#000000"/>
+<circle cx="300" cy="195" r="0.5" style="stroke:#000000"/>
+<circle cx="201" cy="252" r="0.5" style="stroke:#000000"/>
+<circle cx="323" cy="210" r="0.5" style="stroke:#000000"/>
+<circle cx="350" cy="228" r="0.5" style="stroke:#000000"/>
+<circle cx="341" cy="170" r="0.5" style="stroke:#000000"/>
+<circle cx="349" cy="157" r="0.5" style="stroke:#000000"/>
+<circle cx="340" cy="94" r="0.5" style="stroke:#000000"/>
+<circle cx="202" cy="147" r="0.5" style="stroke:#000000"/>
+<circle cx="254" cy="174" r="0.5" style="stroke:#000000"/>
+<circle cx="309" cy="176" r="0.5" style="stroke:#000000"/>
+<circle cx="260" cy="183" r="0.5" style="stroke:#000000"/>
+<circle cx="391" cy="243" r="0.5" style="stroke:#000000"/>
+<circle cx="326" cy="210" r="0.5" style="stroke:#000000"/>
+<circle cx="210" cy="175" r="0.5" style="stroke:#000000"/>
+<circle cx="300" cy="200" r="0.5" style="stroke:#000000"/>
+<circle cx="364" cy="163" r="0.5" style="stroke:#000000"/>
+<circle cx="271" cy="121" r="0.5" style="stroke:#000000"/>
+<circle cx="294" cy="149" r="0.5" style="stroke:#000000"/>
+<circle cx="278" cy="205" r="0.5" style="stroke:#000000"/>
+<circle cx="245" cy="311" r="0.5" style="stroke:#000000"/>
+<circle cx="363" cy="131" r="0.5" style="stroke:#000000"/>
+<circle cx="262" cy="236" r="0.5" style="stroke:#000000"/>
+<circle cx="369" cy="128" r="0.5" style="stroke:#000000"/>
+<circle cx="317" cy="327" r="0.5" style="stroke:#000000"/>
+<circle cx="283" cy="143" r="0.5" style="stroke:#000000"/>
+<circle cx="239" cy="194" r="0.5" style="stroke:#000000"/>
+<circle cx="333" cy="231" r="0.5" style="stroke:#000000"/>
+<circle cx="340" cy="129" r="0.5" style="stroke:#000000"/>
+<circle cx="271" cy="105" r="0.5" style="stroke:#000000"/>
+<circle cx="302" cy="100" r="0.5" style="stroke:#000000"/>
+<circle cx="303" cy="197" r="0.5" style="stroke:#000000"/>
+<circle cx="395" cy="303" r="0.5" style="stroke:#000000"/>
+<circle cx="210" cy="227" r="0.5" style="stroke:#000000"/>
+<circle cx="317" cy="174" r="0.5" style="stroke:#000000"/>
+<circle cx="441" cy="184" r="0.5" style="stroke:#000000"/>
+<circle cx="447" cy="175" r="0.5" style="stroke:#000000"/>
+<circle cx="294" cy="191" r="0.5" style="stroke:#000000"/>
+<circle cx="281" cy="184" r="0.5" style="stroke:#000000"/>
+<circle cx="212" cy="148" r="0.5" style="stroke:#000000"/>
+<circle cx="315" cy="179" r="0.5" style="stroke:#000000"/>
+<circle cx="318" cy="190" r="0.5" style="stroke:#000000"/>
+<circle cx="232" cy="164" r="0.5" style="stroke:#000000"/>
+<circle cx="425" cy="239" r="0.5" style="stroke:#000000"/>
+<circle cx="387" cy="195" r="0.5" style="stroke:#000000"/>
+<circle cx="322" cy="152" r="0.5" style="stroke:#000000"/>
+<circle cx="213" cy="278" r="0.5" style="stroke:#000000"/>
+<circle cx="187" cy="132" r="0.5" style="stroke:#000000"/>
+<circle cx="245" cy="161" r="0.5" style="stroke:#000000"/>
+<circle cx="292" cy="202" r="0.5" style="stroke:#000000"/>
+<circle cx="336" cy="155" r="0.5" style="stroke:#000000"/>
+<circle cx="272" cy="65" r="0.5" style="stroke:#000000"/>
+<circle cx="204" cy="190" r="0.5" style="stroke:#000000"/>
+<circle cx="351" cy="82" r="0.5" style="stroke:#000000"/>
+<circle cx="259" cy="284" r="0.5" style="stroke:#000000"/>
+<circle cx="288" cy="189" r="0.5" style="stroke:#000000"/>
+<circle cx="300" cy="200" r="0.5" style="stroke:#000000"/>
+<circle cx="353" cy="288" r="0.5" style="stroke:#000000"/>
+<circle cx="301" cy="199" r="0.5" style="stroke:#000000"/>
+<circle cx="218" cy="128" r="0.5" style="stroke:#000000"/>
+<circle cx="226" cy="243" r="0.5" style="stroke:#000000"/>
+<circle cx="195" cy="146" r="0.5" style="stroke:#000000"/>
+<circle cx="284" cy="174" r="0.5" style="stroke:#000000"/>
+<circle cx="428" cy="200" r="0.5" style="stroke:#000000"/>
+<circle cx="274" cy="214" r="0.5" style="stroke:#000000"/>
+<circle cx="211" cy="131" r="0.5" style="stroke:#000000"/>
+<circle cx="291" cy="196" r="0.5" style="stroke:#000000"/>
+<circle cx="310" cy="180" r="0.5" style="stroke:#000000"/>
+<circle cx="172" cy="257" r="0.5" style="stroke:#000000"/>
+<circle cx="431" cy="212" r="0.5" style="stroke:#000000"/>
+<circle cx="290" cy="187" r="0.5" style="stroke:#000000"/>
+<circle cx="219" cy="203" r="0.5" style="stroke:#000000"/>
+<circle cx="230" cy="279" r="0.5" style="stroke:#000000"/>
+<circle cx="291" cy="192" r="0.5" style="stroke:#000000"/>
+<circle cx="291" cy="254" r="0.5" style="stroke:#000000"/>
+<circle cx="245" cy="309" r="0.5" style="stroke:#000000"/>
+<circle cx="345" cy="126" r="0.5" style="stroke:#000000"/>
+<circle cx="175" cy="278" r="0.5" style="stroke:#000000"/>
+<circle cx="289" cy="338" r="0.5" style="stroke:#000000"/>
+<circle cx="442" cy="228" r="0.5" style="stroke:#000000"/>
+<circle cx="242" cy="186" r="0.5" style="stroke:#000000"/>
+<circle cx="249" cy="120" r="0.5" style="stroke:#000000"/>
+<circle cx="415" cy="186" r="0.5" style="stroke:#000000"/>
+<circle cx="242" cy="145" r="0.5" style="stroke:#000000"/>
+<circle cx="384" cy="133" r="0.5" style="stroke:#000000"/>
+<circle cx="20" cy="98" r="1" style="stroke:#ff0000"/>
+<circle cx="50" cy="246" r="1" style="stroke:#ff0000"/>
+<circle cx="83" cy="354" r="1" style="stroke:#ff0000"/>
+<circle cx="164" cy="416" r="1" style="stroke:#ff0000"/>
+<circle cx="236" cy="434" r="1" style="stroke:#ff0000"/>
+<circle cx="343" cy="427" r="1" style="stroke:#ff0000"/>
+<circle cx="366" cy="412" r="1" style="stroke:#ff0000"/>
+<circle cx="379" cy="402" r="1" style="stroke:#ff0000"/>
+<circle cx="519" cy="143" r="1" style="stroke:#ff0000"/>
+<circle cx="528" cy="126" r="1" style="stroke:#ff0000"/>
+<circle cx="529" cy="115" r="1" style="stroke:#ff0000"/>
+<circle cx="510" cy="96" r="1" style="stroke:#ff0000"/>
+<circle cx="506" cy="95" r="1" style="stroke:#ff0000"/>
+<circle cx="117" cy="33" r="1" style="stroke:#ff0000"/>
+<circle cx="85" cy="28" r="1" style="stroke:#ff0000"/>
+<circle cx="40" cy="64" r="1" style="stroke:#ff0000"/>
+</svg>
diff --git a/testsuite/tests/dph/quickhull/dph-quickhull.T b/testsuite/tests/dph/quickhull/dph-quickhull.T
index 2decdefc3b..b3b136c274 100644
--- a/testsuite/tests/dph/quickhull/dph-quickhull.T
+++ b/testsuite/tests/dph/quickhull/dph-quickhull.T
@@ -1,5 +1,5 @@
-test ('dph-quickhull-opt'
+test ('dph-quickhull-copy-opt'
, [ alone
, skip_if_fast
, extra_clean(['Main.hi', 'Main.o',
@@ -14,8 +14,26 @@ test ('dph-quickhull-opt'
, [ 'Main'
, '-Odph -funfolding-use-threshold30 -package dph-lifted-copy -package dph-prim-par'])
-test ('dph-quickhull-fast'
- , [ extra_clean(['Main.hi', 'Main.o',
+
+test ('dph-quickhull-vseg-opt'
+ , [ alone
+ , skip_if_fast
+ , extra_clean(['Main.hi', 'Main.o',
+ 'QuickHullVect.hi', 'QuickHullVect.o',
+ 'SVG.hi', 'SVG.o',
+ 'TestData.hi', 'TestData.o',
+ 'Types.hi', 'Types.o'])
+ , reqlib('dph-lifted-vseg')
+ , reqlib('dph-prim-par')
+ , only_ways(['normal', 'threaded1', 'threaded2']) ]
+ , multimod_compile_and_run
+ , [ 'Main'
+ , '-Odph -package dph-lifted-vseg -package dph-prim-par'])
+
+
+test ('dph-quickhull-copy-fast'
+ , [ alone
+ , extra_clean(['Main.hi', 'Main.o',
'QuickHullVect.hi', 'QuickHullVect.o',
'SVG.hi', 'SVG.o',
'TestData.hi', 'TestData.o',
@@ -25,5 +43,20 @@ test ('dph-quickhull-fast'
, only_ways(['normal', 'threaded1', 'threaded2']) ]
, multimod_compile_and_run
, [ 'Main'
- , '-O -fno-enable-rewrite-rules -package dph-lifted-copy -package dph-prim-par'])
+ , '-O0 -package dph-lifted-copy -package dph-prim-par'])
+
+
+test ('dph-quickhull-vseg-fast'
+ , [ alone
+ , extra_clean(['Main.hi', 'Main.o',
+ 'QuickHullVect.hi', 'QuickHullVect.o',
+ 'SVG.hi', 'SVG.o',
+ 'TestData.hi', 'TestData.o',
+ 'Types.hi', 'Types.o'])
+ , reqlib('dph-lifted-vseg')
+ , reqlib('dph-prim-par')
+ , only_ways(['normal', 'threaded1', 'threaded2']) ]
+ , multimod_compile_and_run
+ , [ 'Main'
+ , '-O0 -package dph-lifted-vseg -package dph-prim-par'])
diff --git a/testsuite/tests/dph/smvm/dph-smvm.stdout b/testsuite/tests/dph/smvm/dph-smvm-copy.stdout
index 0ca95142bb..0ca95142bb 100644
--- a/testsuite/tests/dph/smvm/dph-smvm.stdout
+++ b/testsuite/tests/dph/smvm/dph-smvm-copy.stdout
diff --git a/testsuite/tests/lib/IO/4808.stdout b/testsuite/tests/dph/smvm/dph-smvm-vseg.stdout
index 0ca95142bb..0ca95142bb 100644
--- a/testsuite/tests/lib/IO/4808.stdout
+++ b/testsuite/tests/dph/smvm/dph-smvm-vseg.stdout
diff --git a/testsuite/tests/dph/smvm/dph-smvm.T b/testsuite/tests/dph/smvm/dph-smvm.T
index 7f7e390e5c..9bb9c97ef2 100644
--- a/testsuite/tests/dph/smvm/dph-smvm.T
+++ b/testsuite/tests/dph/smvm/dph-smvm.T
@@ -15,7 +15,7 @@ elif config.platform.startswith('sparc-'):
if testFile != 'nothing':
- test ('dph-smvm'
+ test ('dph-smvm-copy'
, [ alone
, skip_if_fast
, reqlib('dph-lifted-copy')
@@ -27,3 +27,15 @@ if testFile != 'nothing':
, [ 'Main'
, '-Odph -package dph-lifted-copy -package dph-prim-par'])
+ test ('dph-smvm-vseg'
+ , [ alone
+ , skip_if_fast
+ , reqlib('dph-lifted-vseg')
+ , reqlib('dph-prim-par')
+ , only_ways(['normal', 'threaded1', 'threaded2'])
+ , extra_run_opts(testFile + " " + outFile)
+ ]
+ , multimod_compile_and_run
+ , [ 'Main'
+ , '-Odph -package dph-lifted-vseg -package dph-prim-par'])
+
diff --git a/testsuite/tests/dph/sumnats/SumNatsVect.hs b/testsuite/tests/dph/sumnats/SumNatsVect.hs
index f51f207d0c..187946da4e 100644
--- a/testsuite/tests/dph/sumnats/SumNatsVect.hs
+++ b/testsuite/tests/dph/sumnats/SumNatsVect.hs
@@ -3,12 +3,12 @@
module SumNatsVect (sumNats) where
import Data.Array.Parallel.Prelude
-import Data.Array.Parallel.Prelude.Int
+import Data.Array.Parallel.Prelude.Int as I
import qualified Prelude as P
sumNats :: Int -> Int
sumNats maxN
- = sumP [: x | x <- enumFromToP 0 (maxN - 1)
- , (x `mod` 3 == 0) || (x `mod` 5 == 0) :]
-
+ = sumP [: x | x <- enumFromToP 0 (maxN I.- 1)
+ , (x `mod` 3 I.== 0) || (x `mod` 5 I.== 0) :]
+
diff --git a/testsuite/tests/dph/sumnats/dph-sumnats.stdout b/testsuite/tests/dph/sumnats/dph-sumnats-copy.stdout
index 8858be2164..8858be2164 100644
--- a/testsuite/tests/dph/sumnats/dph-sumnats.stdout
+++ b/testsuite/tests/dph/sumnats/dph-sumnats-copy.stdout
diff --git a/testsuite/tests/dph/sumnats/dph-sumnats-vseg.stdout b/testsuite/tests/dph/sumnats/dph-sumnats-vseg.stdout
new file mode 100644
index 0000000000..8858be2164
--- /dev/null
+++ b/testsuite/tests/dph/sumnats/dph-sumnats-vseg.stdout
@@ -0,0 +1,3 @@
+233168
+233168
+233168
diff --git a/testsuite/tests/dph/sumnats/dph-sumnats.T b/testsuite/tests/dph/sumnats/dph-sumnats.T
index 182b85d796..df70955ae2 100644
--- a/testsuite/tests/dph/sumnats/dph-sumnats.T
+++ b/testsuite/tests/dph/sumnats/dph-sumnats.T
@@ -1,6 +1,7 @@
-test ('dph-sumnats'
- , [ extra_clean(['Main.hi', 'Main.o',
+test ('dph-sumnats-copy'
+ , [ alone
+ , extra_clean(['Main.hi', 'Main.o',
'SumNatsVect.hi', 'SumNatsVect.o'])
, reqlib('dph-lifted-copy')
, reqlib('dph-prim-par')
@@ -9,3 +10,14 @@ test ('dph-sumnats'
, [ 'Main'
, '-Odph -package dph-lifted-copy'])
+test ('dph-sumnats-vseg'
+ , [ alone
+ , extra_clean(['Main.hi', 'Main.o',
+ 'SumNatsVect.hi', 'SumNatsVect.o'])
+ , reqlib('dph-lifted-vseg')
+ , reqlib('dph-prim-par')
+ , only_ways(['normal', 'threaded1', 'threaded2']) ]
+ , multimod_compile_and_run
+ , [ 'Main'
+ , '-Odph -package dph-lifted-vseg'])
+
diff --git a/testsuite/tests/dph/words/Main.hs b/testsuite/tests/dph/words/Main.hs
index 50804a6fe3..094a2ceb7d 100644
--- a/testsuite/tests/dph/words/Main.hs
+++ b/testsuite/tests/dph/words/Main.hs
@@ -1,6 +1,6 @@
import WordsVect
-import Data.Array.Parallel.Prelude
+import Data.Array.Parallel
import qualified Data.Array.Parallel.Prelude.Word8 as W
import qualified Data.Array.Parallel.PArray as P
import qualified Data.Array.Parallel.Unlifted as U
diff --git a/testsuite/tests/dph/words/WordsVect.hs b/testsuite/tests/dph/words/WordsVect.hs
index abf416e763..ba4abc5d39 100644
--- a/testsuite/tests/dph/words/WordsVect.hs
+++ b/testsuite/tests/dph/words/WordsVect.hs
@@ -14,12 +14,12 @@
{-# OPTIONS -fvectorise #-}
module WordsVect
- ( wordsOfPArray
- , wordCountOfPArray )
+ ( wordsOfPArray
+ , wordCountOfPArray )
where
-import qualified Data.Array.Parallel.Prelude.Word8 as W
-import Data.Array.Parallel.Prelude.Word8 (Word8)
-import Data.Array.Parallel.Prelude.Int
+import qualified Data.Array.Parallel.Prelude.Word8 as W
+import Data.Array.Parallel.Prelude.Word8 (Word8)
+import Data.Array.Parallel.Prelude.Int as I
import Data.Array.Parallel
import qualified Prelude as Prel
@@ -34,24 +34,24 @@ type String = [: Char :]
-- | Word state
data State
- = Chunk String
- | Seg String -- initial word chunk
- [:String:] -- complete words in the middle of the segment
- String -- final word chunk
+ = Chunk String
+ | Seg String -- initial word chunk
+ [:String:] -- complete words in the middle of the segment
+ String -- final word chunk
-- | Compose two wordstates.
plusState :: State -> State -> State
plusState str1 str2
= case (str1, str2) of
- (Chunk as, Chunk bs) -> Chunk (as +:+ bs)
- (Chunk as, Seg bl bss br) -> Seg (as +:+ bl) bss br
- (Seg al ass ar, Chunk bs) -> Seg al ass (ar +:+ bs)
- (Seg al ass ar, Seg bl bss br) -> Seg al (ass +:+ joinEmpty [:ar +:+ bl:] +:+ bss) br
+ (Chunk as, Chunk bs) -> Chunk (as +:+ bs)
+ (Chunk as, Seg bl bss br) -> Seg (as +:+ bl) bss br
+ (Seg al ass ar, Chunk bs) -> Seg al ass (ar +:+ bs)
+ (Seg al ass ar, Seg bl bss br) -> Seg al (ass +:+ joinEmpty [:ar +:+ bl:] +:+ bss) br
joinEmpty :: [:[:Word8:]:] -> [:[:Word8:]:]
joinEmpty ws
- | lengthP ws == 1 && lengthP (ws !: 0) == 0 = [::]
+ | lengthP ws I.== 1 && lengthP (ws !: 0) I.== 0 = [::]
| otherwise = ws
@@ -67,12 +67,12 @@ stateOfString :: String -> State
stateOfString str
= let len = lengthP str
result
- | len == 0 = Chunk [::]
- | len == 1 = stateOfChar (str !: 0)
+ | len I.== 0 = Chunk [::]
+ | len I.== 1 = stateOfChar (str !: 0)
| otherwise
= let half = len `div` 2
s1 = sliceP 0 half str
- s2 = sliceP half (len-half) str
+ s2 = sliceP half (len I.- half) str
in plusState (stateOfString s1) (stateOfString s2)
in result
@@ -82,11 +82,11 @@ countWordsOfState :: State -> Int
countWordsOfState state
= case state of
Chunk c -> wordsInChunkArr c
- Seg c1 ws c2 -> wordsInChunkArr c1 + lengthP ws + wordsInChunkArr c2
+ Seg c1 ws c2 -> wordsInChunkArr c1 I.+ lengthP ws I.+ wordsInChunkArr c2
wordsInChunkArr :: [:Word8:] -> Int
wordsInChunkArr arr
- | lengthP arr == 0 = 0
+ | lengthP arr I.== 0 = 0
| otherwise = 1
diff --git a/testsuite/tests/dph/words/dph-words-fast.stdout b/testsuite/tests/dph/words/dph-words-copy-fast.stdout
index a7ad9be6b6..a7ad9be6b6 100644
--- a/testsuite/tests/dph/words/dph-words-fast.stdout
+++ b/testsuite/tests/dph/words/dph-words-copy-fast.stdout
diff --git a/testsuite/tests/dph/words/dph-words-opt.stdout b/testsuite/tests/dph/words/dph-words-copy-opt.stdout
index a7ad9be6b6..a7ad9be6b6 100644
--- a/testsuite/tests/dph/words/dph-words-opt.stdout
+++ b/testsuite/tests/dph/words/dph-words-copy-opt.stdout
diff --git a/testsuite/tests/dph/words/dph-words-vseg-fast.stdout b/testsuite/tests/dph/words/dph-words-vseg-fast.stdout
new file mode 100644
index 0000000000..a7ad9be6b6
--- /dev/null
+++ b/testsuite/tests/dph/words/dph-words-vseg-fast.stdout
@@ -0,0 +1,3 @@
+"When I look into the looking glass I'm always sure to see no matter how I dodge about, me looking back at me."
+word count vect = 23
+word count lists = 23
diff --git a/testsuite/tests/dph/words/dph-words-vseg-opt.stdout b/testsuite/tests/dph/words/dph-words-vseg-opt.stdout
new file mode 100644
index 0000000000..a7ad9be6b6
--- /dev/null
+++ b/testsuite/tests/dph/words/dph-words-vseg-opt.stdout
@@ -0,0 +1,3 @@
+"When I look into the looking glass I'm always sure to see no matter how I dodge about, me looking back at me."
+word count vect = 23
+word count lists = 23
diff --git a/testsuite/tests/dph/words/dph-words.T b/testsuite/tests/dph/words/dph-words.T
index cd30f3d7a8..7ed66f6ec3 100644
--- a/testsuite/tests/dph/words/dph-words.T
+++ b/testsuite/tests/dph/words/dph-words.T
@@ -1,5 +1,5 @@
-test ('dph-words-opt'
+test ('dph-words-copy-opt'
, [ alone
, skip_if_fast
, extra_clean(['Main.hi', 'Main.o', 'WordsVect.hi', 'WordsVect.o'])
@@ -8,15 +8,39 @@ test ('dph-words-opt'
, only_ways(['normal']) ]
, multimod_compile_and_run
, [ 'Main'
- , '-Odph -package dph-lifted-copy -package dph-prim-par -fno-liberate-case'])
+ , '-Odph -package dph-lifted-copy -package dph-prim-par -fno-liberate-case -fno-spec-constr'])
-test ('dph-words-fast'
- , [ extra_clean(['Main.hi', 'Main.o', 'WordsVect.hi', 'WordsVect.o'])
+test ('dph-words-vseg-opt'
+ , [ alone
+ , skip_if_fast
+ , extra_clean(['Main.hi', 'Main.o', 'WordsVect.hi', 'WordsVect.o'])
+ , reqlib('dph-lifted-vseg')
+ , reqlib('dph-prim-par')
+ , only_ways(['normal']) ]
+ , multimod_compile_and_run
+ , [ 'Main'
+ , '-Odph -package dph-lifted-vseg -package dph-prim-par -fno-liberate-case -fno-spec-constr'])
+
+
+test ('dph-words-copy-fast'
+ , [ alone
+ , extra_clean(['Main.hi', 'Main.o', 'WordsVect.hi', 'WordsVect.o'])
, reqlib('dph-lifted-copy')
, reqlib('dph-prim-par')
, only_ways(['normal']) ]
, multimod_compile_and_run
, [ 'Main'
- , '-O -fno-enable-rewrite-rules -package dph-lifted-copy -package dph-prim-par'])
+ , '-O0 -package dph-lifted-copy -package dph-prim-par'])
+
+
+test ('dph-words-vseg-fast'
+ , [ alone
+ , extra_clean(['Main.hi', 'Main.o', 'WordsVect.hi', 'WordsVect.o'])
+ , reqlib('dph-lifted-vseg')
+ , reqlib('dph-prim-par')
+ , only_ways(['normal']) ]
+ , multimod_compile_and_run
+ , [ 'Main'
+ , '-O0 -package dph-lifted-vseg -package dph-prim-par'])
diff --git a/testsuite/tests/driver/1372/Makefile b/testsuite/tests/driver/1372/Makefile
index f55a4a407d..c93bb5e0d5 100644
--- a/testsuite/tests/driver/1372/Makefile
+++ b/testsuite/tests/driver/1372/Makefile
@@ -2,6 +2,10 @@ TOP=../../..
include $(TOP)/mk/boilerplate.mk
include $(TOP)/mk/test.mk
+# -fforce-recomp makes lots of driver tests trivially pass, so we
+# filter it out from $(TEST_HC_OPTS).
+TEST_HC_OPTS_NO_RECOMP = $(filter-out -fforce-recomp,$(TEST_HC_OPTS))
+
LOCAL_PKGCONF=local.package.conf
clean:
@@ -30,7 +34,7 @@ prep:
cd p1 && ./setup build -v0
prep.%:
- cd $* && "$(TEST_HC)" $(TEST_HC_OPTS) -v0 --make -o setup Setup.hs
+ cd $* && "$(TEST_HC)" $(TEST_HC_OPTS_NO_RECOMP) -v0 --make -o setup Setup.hs
cd $* && ./setup configure -v0 --with-compiler="$(TEST_HC)" --with-hc-pkg="$(GHC_PKG)" --package-db=../$(LOCAL_PKGCONF)
cd $* && ./setup build -v0
cd $* && ./setup register -v0 --inplace
diff --git a/testsuite/tests/driver/1959/Makefile b/testsuite/tests/driver/1959/Makefile
index 844a442afa..f7db491d96 100644
--- a/testsuite/tests/driver/1959/Makefile
+++ b/testsuite/tests/driver/1959/Makefile
@@ -2,14 +2,18 @@ TOP=../../..
include $(TOP)/mk/boilerplate.mk
include $(TOP)/mk/test.mk
+# -fforce-recomp makes lots of driver tests trivially pass, so we
+# filter it out from $(TEST_HC_OPTS).
+TEST_HC_OPTS_NO_RECOMP = $(filter-out -fforce-recomp,$(TEST_HC_OPTS))
+
# Test recompilation bug #1959, which failed in 6.8.1 (and earlier)
compile ::
- '$(TEST_HC)' $(TEST_HC_OPTS) -c -O E.hs
- '$(TEST_HC)' $(TEST_HC_OPTS) -c -O D.hs
- '$(TEST_HC)' $(TEST_HC_OPTS) -c -O -funfolding-use-threshold=0 C.hs
- '$(TEST_HC)' $(TEST_HC_OPTS) -c -O B.hs
- '$(TEST_HC)' $(TEST_HC_OPTS) E.o D.o C.o B.o -o prog
+ '$(TEST_HC)' $(TEST_HC_OPTS_NO_RECOMP) -c -O E.hs
+ '$(TEST_HC)' $(TEST_HC_OPTS_NO_RECOMP) -c -O D.hs
+ '$(TEST_HC)' $(TEST_HC_OPTS_NO_RECOMP) -c -O -funfolding-use-threshold=0 C.hs
+ '$(TEST_HC)' $(TEST_HC_OPTS_NO_RECOMP) -c -O B.hs
+ '$(TEST_HC)' $(TEST_HC_OPTS_NO_RECOMP) E.o D.o C.o B.o -o prog
clean ::
rm -f *.o *.hi E.hs
diff --git a/testsuite/tests/driver/437/437.stdout b/testsuite/tests/driver/437/437.stdout
index 99bfbaffa5..7508a5f9e0 100644
--- a/testsuite/tests/driver/437/437.stdout
+++ b/testsuite/tests/driver/437/437.stdout
@@ -1,2 +1,10 @@
+[1 of 2] Compiling Test2 ( Test2.hs, Test2.o )
+[2 of 2] Compiling Test ( Test.hs, Test.o )
+Linking Test ...
+[1 of 1] Compiling Test2 ( Test2.hs, Test2.o ) [flags changed]
+Linking Test2 ...
"Test2.doit"
"Test2.main"
+[1 of 1] Compiling Test2 ( Test2.hs, Test2.o ) [flags changed]
+Linking Test2 ...
+"Test2.doit"
diff --git a/testsuite/tests/driver/437/Makefile b/testsuite/tests/driver/437/Makefile
index 26f0f08bc9..649d462b1e 100644
--- a/testsuite/tests/driver/437/Makefile
+++ b/testsuite/tests/driver/437/Makefile
@@ -2,6 +2,10 @@ TOP=../../..
include $(TOP)/mk/boilerplate.mk
include $(TOP)/mk/test.mk
+# -fforce-recomp makes lots of driver tests trivially pass, so we
+# filter it out from $(TEST_HC_OPTS).
+TEST_HC_OPTS_NO_RECOMP = $(filter-out -fforce-recomp,$(TEST_HC_OPTS))
+
# Recompilation tests
clean:
@@ -12,8 +16,12 @@ clean:
# bug #437
437: clean
- '$(TEST_HC)' $(TEST_HC_OPTS) -v0 --make -main-is Test.main Test.hs
- '$(TEST_HC)' $(TEST_HC_OPTS) -v0 --make -main-is Test2.main Test2.hs
+ '$(TEST_HC)' $(TEST_HC_OPTS_NO_RECOMP) --make -main-is Test.main Test.hs
+ '$(TEST_HC)' $(TEST_HC_OPTS_NO_RECOMP) --make -main-is Test2.main Test2.hs
./Test
./Test2
+ sleep 1
+ # Test that changing the main function name forces recomp of Test2
+ '$(TEST_HC)' $(TEST_HC_OPTS_NO_RECOMP) --make -main-is Test2.doit Test2.hs
+ ./Test2
diff --git a/testsuite/tests/driver/Makefile b/testsuite/tests/driver/Makefile
index 472daa6716..14d1d265bd 100644
--- a/testsuite/tests/driver/Makefile
+++ b/testsuite/tests/driver/Makefile
@@ -14,13 +14,17 @@ include $(TOP)/mk/test.mk
OBJSUFFIX = .o
+# -fforce-recomp makes lots of driver tests trivially pass, so we
+# filter it out from $(TEST_HC_OPTS).
+TEST_HC_OPTS_NO_RECOMP = $(filter-out -fforce-recomp,$(TEST_HC_OPTS))
+
# -----------------------------------------------------------------------------
# One-shot compilations, non-hierarchical modules
test011:
$(RM) A011.hi
$(RM) A011$(OBJSUFFIX)
- "$(TEST_HC)" $(TEST_HC_OPTS) $(TEST_HC_OPTS) -c A011.hs
+ "$(TEST_HC)" $(TEST_HC_OPTS_NO_RECOMP) -c A011.hs
test -f A011.hi
test -f A011$(OBJSUFFIX)
@@ -28,14 +32,14 @@ test011:
test012:
$(RM) A012.hi
$(RM) A012$(OBJSUFFIX)oo
- "$(TEST_HC)" $(TEST_HC_OPTS) -c A012.hs -o A012$(OBJSUFFIX)oo
+ "$(TEST_HC)" $(TEST_HC_OPTS_NO_RECOMP) -c A012.hs -o A012$(OBJSUFFIX)oo
test -f A012$(OBJSUFFIX)oo
# test -ohi
test013:
$(RM) A013.xhi
$(RM) A013$(OBJSUFFIX)
- "$(TEST_HC)" $(TEST_HC_OPTS) -c A013.hs -ohi A013.xhi
+ "$(TEST_HC)" $(TEST_HC_OPTS_NO_RECOMP) -c A013.hs -ohi A013.xhi
test -f A013.xhi
# test -odir
@@ -43,7 +47,7 @@ test014:
$(RM) -f A014.hi
$(RM) -rf obj014
mkdir obj014
- "$(TEST_HC)" $(TEST_HC_OPTS) -c A014.hs -odir obj014
+ "$(TEST_HC)" $(TEST_HC_OPTS_NO_RECOMP) -c A014.hs -odir obj014
test -f obj014/A014$(OBJSUFFIX)
test -f A014.hi
@@ -52,20 +56,20 @@ test015:
$(RM) -f A015$(OBJSUFFIX)
$(RM) -rf hi015
mkdir hi015
- "$(TEST_HC)" $(TEST_HC_OPTS) -c A015.hs -hidir hi015
+ "$(TEST_HC)" $(TEST_HC_OPTS_NO_RECOMP) -c A015.hs -hidir hi015
test -f A015$(OBJSUFFIX)
test -f hi015/A015.hi
# test stub generation
test016:
$(RM) F016.hi F016$(OBJSUFFIX) F016_stub.h
- "$(TEST_HC)" $(TEST_HC_OPTS) -c F016.hs
+ "$(TEST_HC)" $(TEST_HC_OPTS_NO_RECOMP) -c F016.hs
test -f F016_stub.h
# test -stubdir (filename differs from module name)
test017:
$(RM) F017.hi F017$(OBJSUFFIX)
- "$(TEST_HC)" $(TEST_HC_OPTS) -c F017.hs -stubdir stub017
+ "$(TEST_HC)" $(TEST_HC_OPTS_NO_RECOMP) -c F017.hs -stubdir stub017
test -f stub017/TestStub017_stub.h
# test -odir with stubs (filename differs from module name)
@@ -73,18 +77,18 @@ test018:
$(RM) -f F018.hi F018$(OBJSUFFIX) F018_stub.h
$(RM) -rf obj018
mkdir obj018
- "$(TEST_HC)" $(TEST_HC_OPTS) -c F018.hs -odir obj018
+ "$(TEST_HC)" $(TEST_HC_OPTS_NO_RECOMP) -c F018.hs -odir obj018
# test for bug #3093
test018a:
$(RM) -f F018a.hi F018a_stub.h *.obj.018
- "$(TEST_HC)" $(TEST_HC_OPTS) -c F018a.hs -osuf obj.018
+ "$(TEST_HC)" $(TEST_HC_OPTS_NO_RECOMP) -c F018a.hs -osuf obj.018
test -f F018a.obj.018
# test -outputdir
test019:
$(RM) -rf out019
- "$(TEST_HC)" $(TEST_HC_OPTS) -c F019.hs -outputdir out019
+ "$(TEST_HC)" $(TEST_HC_OPTS_NO_RECOMP) -c F019.hs -outputdir out019
test -f out019/TestStub019.hi
test -f out019/TestStub019_stub.h
@@ -94,7 +98,7 @@ test019:
test021:
$(RM) B021/C.hi
$(RM) B021/C$(OBJSUFFIX)
- "$(TEST_HC)" $(TEST_HC_OPTS) -c B021/C.hs
+ "$(TEST_HC)" $(TEST_HC_OPTS_NO_RECOMP) -c B021/C.hs
test -f B021/C.hi
test -f B021/C$(OBJSUFFIX)
@@ -102,14 +106,14 @@ test021:
test022:
$(RM) B022/C.hi
$(RM) B022/C$(OBJSUFFIX)oo
- "$(TEST_HC)" $(TEST_HC_OPTS) -c B022/C.hs -o B022/C$(OBJSUFFIX)oo
+ "$(TEST_HC)" $(TEST_HC_OPTS_NO_RECOMP) -c B022/C.hs -o B022/C$(OBJSUFFIX)oo
test -f B022/C$(OBJSUFFIX)oo
# test -ohi
test023:
$(RM) B023/C.xhi
$(RM) B023/C$(OBJSUFFIX)
- "$(TEST_HC)" $(TEST_HC_OPTS) -c B023/C.hs -ohi B023/C.xhi
+ "$(TEST_HC)" $(TEST_HC_OPTS_NO_RECOMP) -c B023/C.hs -ohi B023/C.xhi
test -f B023/C.xhi
# test -odir
@@ -117,7 +121,7 @@ test024:
$(RM) -f B024/C.hi
$(RM) -rf obj024
mkdir obj024
- "$(TEST_HC)" $(TEST_HC_OPTS) -c B024/C.hs -odir obj024
+ "$(TEST_HC)" $(TEST_HC_OPTS_NO_RECOMP) -c B024/C.hs -odir obj024
test -f obj024/B024/C$(OBJSUFFIX)
# test -odir with non-Haskell compilation
@@ -127,7 +131,7 @@ test024a:
mkdir B024a
mkdir obj024a
echo >B024a/stub.c
- "$(TEST_HC)" $(TEST_HC_OPTS) -c B024a/stub.c -odir obj024a
+ "$(TEST_HC)" $(TEST_HC_OPTS_NO_RECOMP) -c B024a/stub.c -odir obj024a
test -f obj024a/B024a/stub$(OBJSUFFIX)
# test -hidir
@@ -135,14 +139,14 @@ test025:
$(RM) -rf hi025
mkdir hi025
$(RM) B025/C$(OBJSUFFIX)
- "$(TEST_HC)" $(TEST_HC_OPTS) -c B025/C.hs -hidir hi025
+ "$(TEST_HC)" $(TEST_HC_OPTS_NO_RECOMP) -c B025/C.hs -hidir hi025
test -f hi025/B025/C.hi
# This is a hierarchical module that lives in a subdirectory.
test026:
$(RM) d026/P/Q.hi
$(RM) d026/P/Q$(OBJSUFFIX)
- "$(TEST_HC)" $(TEST_HC_OPTS) -c d026/P/Q.hs
+ "$(TEST_HC)" $(TEST_HC_OPTS_NO_RECOMP) -c d026/P/Q.hs
test -f d026/P/Q.hi
test -f d026/P/Q$(OBJSUFFIX)
@@ -150,7 +154,7 @@ test026:
# -fvia-C, because we want to check that the .hc file can #include the stub.h
test027:
$(RM) B027/F.hi B027/F$(OBJSUFFIX) B027/F_stub.h
- "$(TEST_HC)" $(TEST_HC_OPTS) -c B027/F.hs -fno-warn-deprecated-flags -fvia-C
+ "$(TEST_HC)" $(TEST_HC_OPTS_NO_RECOMP) -c B027/F.hs -fno-warn-deprecated-flags -fvia-C
test -f B027/F_stub.h
# test -stubdir
@@ -158,7 +162,7 @@ test027:
test028:
$(RM) B028/F.hi B028/F$(OBJSUFFIX)
$(RM) stub028/B028/F_stub.h
- "$(TEST_HC)" $(TEST_HC_OPTS) -c B028/F.hs -stubdir stub028 -fno-warn-deprecated-flags -fvia-C
+ "$(TEST_HC)" $(TEST_HC_OPTS_NO_RECOMP) -c B028/F.hs -stubdir stub028 -fno-warn-deprecated-flags -fvia-C
test -f stub028/B028/F_stub.h
# -----------------------------------------------------------------------------
@@ -167,7 +171,7 @@ test028:
test031:
$(RM) A031.hi
$(RM) A031$(OBJSUFFIX)
- "$(TEST_HC)" $(TEST_HC_OPTS) -v0 --make A031.hs
+ "$(TEST_HC)" $(TEST_HC_OPTS_NO_RECOMP) -v0 --make A031.hs
test -f A031.hi
test -f A031$(OBJSUFFIX)
@@ -176,7 +180,7 @@ test032:
$(RM) A032.hi
$(RM) -rf obj032
mkdir obj032
- "$(TEST_HC)" $(TEST_HC_OPTS) -v0 --make A032.hs -odir obj032
+ "$(TEST_HC)" $(TEST_HC_OPTS_NO_RECOMP) -v0 --make A032.hs -odir obj032
test -f obj032/A032$(OBJSUFFIX)
# test -hidir
@@ -184,19 +188,19 @@ test033:
$(RM) -rf hi033
$(RM) A033$(OBJSUFFIX)
mkdir hi033
- "$(TEST_HC)" $(TEST_HC_OPTS) -v0 --make A033.hs -hidir hi033
+ "$(TEST_HC)" $(TEST_HC_OPTS_NO_RECOMP) -v0 --make A033.hs -hidir hi033
test -f hi033/A033.hi
# test stub generation
test034:
$(RM) F034.hi F034$(OBJSUFFIX) F034_stub.h
- "$(TEST_HC)" $(TEST_HC_OPTS) -v0 --make F034.hs
+ "$(TEST_HC)" $(TEST_HC_OPTS_NO_RECOMP) -v0 --make F034.hs
test -f F034_stub.h
# test -stubdir (filename differs from module name)
test035:
$(RM) F035.hi F$(OBJSUFFIX) stub035/Stubs_stub.h
- "$(TEST_HC)" $(TEST_HC_OPTS) -v0 --make F035.hs -stubdir stub035
+ "$(TEST_HC)" $(TEST_HC_OPTS_NO_RECOMP) -v0 --make F035.hs -stubdir stub035
test -f stub035/TestStub035_stub.h
# -----------------------------------------------------------------------------
@@ -205,7 +209,7 @@ test035:
test041:
$(RM) B041/C.hi
$(RM) B041/C$(OBJSUFFIX)
- "$(TEST_HC)" $(TEST_HC_OPTS) -v0 --make B041/C.hs
+ "$(TEST_HC)" $(TEST_HC_OPTS_NO_RECOMP) -v0 --make B041/C.hs
test -f B041/C.hi
test -f B041/C$(OBJSUFFIX)
@@ -214,7 +218,7 @@ test042:
$(RM) -rf obj042
mkdir obj042
$(RM) B042/C.hi
- "$(TEST_HC)" $(TEST_HC_OPTS) -v0 --make B042/C.hs -odir obj042
+ "$(TEST_HC)" $(TEST_HC_OPTS_NO_RECOMP) -v0 --make B042/C.hs -odir obj042
test -f obj042/B042/C$(OBJSUFFIX)
# test -hidir
@@ -222,20 +226,20 @@ test043:
$(RM) -f B043/C$(OBJSUFFIX)
$(RM) -rf hi043
mkdir hi043
- "$(TEST_HC)" $(TEST_HC_OPTS) -v0 --make B043/C.hs -hidir hi043
+ "$(TEST_HC)" $(TEST_HC_OPTS_NO_RECOMP) -v0 --make B043/C.hs -hidir hi043
test -f hi043/B043/C.hi
# test stub generation
test044:
$(RM) B044/F.hi B044/F$(OBJSUFFIX) B044/F_stub.h
- "$(TEST_HC)" $(TEST_HC_OPTS) -v0 --make B044/F.hs
+ "$(TEST_HC)" $(TEST_HC_OPTS_NO_RECOMP) -v0 --make B044/F.hs
test -f B044/F_stub.h
# test -stubdir
test045:
$(RM) B045/F.hi B045/F$(OBJSUFFIX)
$(RM) stub045/B045/F_stub.h
- "$(TEST_HC)" $(TEST_HC_OPTS) -v0 --make B045/F.hs -stubdir stub045
+ "$(TEST_HC)" $(TEST_HC_OPTS_NO_RECOMP) -v0 --make B045/F.hs -stubdir stub045
test -f stub045/B045/F_stub.h
# -----------------------------------------------------------------------------
@@ -246,7 +250,7 @@ test051:
$(RM) d051_2/R/S$(OBJSUFFIX)
$(RM) d051_1/P/Q.hi
$(RM) d051_1/P/Q$(OBJSUFFIX)
- "$(TEST_HC)" $(TEST_HC_OPTS) -v0 --make -id051_1 -id051_2 R.S
+ "$(TEST_HC)" $(TEST_HC_OPTS_NO_RECOMP) -v0 --make -id051_1 -id051_2 R.S
test -f d051_2/R/S.hi
test -f d051_2/R/S$(OBJSUFFIX)
test -f d051_1/P/Q.hi
@@ -258,7 +262,7 @@ test052:
$(RM) d052_1/P/Q.hi
$(RM) -rf obj052
mkdir obj052
- "$(TEST_HC)" $(TEST_HC_OPTS) -v0 --make -id052_1 -id052_2 -odir obj052 R.S
+ "$(TEST_HC)" $(TEST_HC_OPTS_NO_RECOMP) -v0 --make -id052_1 -id052_2 -odir obj052 R.S
test -f d052_2/R/S.hi
test -f obj052/R/S$(OBJSUFFIX)
test -f d052_1/P/Q.hi
@@ -270,7 +274,7 @@ test053:
$(RM) d053_2/R/S$(OBJSUFFIX)
$(RM) hi053/P/Q.hi
$(RM) d053_1/P/Q$(OBJSUFFIX)
- "$(TEST_HC)" $(TEST_HC_OPTS) -v0 --make -id053_1 -id053_2 -hidir hi053 R.S
+ "$(TEST_HC)" $(TEST_HC_OPTS_NO_RECOMP) -v0 --make -id053_1 -id053_2 -hidir hi053 R.S
test -f hi053/R/S.hi
test -f d053_2/R/S$(OBJSUFFIX)
test -f hi053/P/Q.hi
@@ -282,44 +286,44 @@ test053:
# Test that -keep-s-files works with --make and -fvia-C
test061a:
$(RM) A061a.hi A061a$(OBJSUFFIX) A061a.s
- "$(TEST_HC)" $(TEST_HC_OPTS) -v0 --make -keep-s-files -fno-warn-deprecated-flags -fvia-C A061a.hs
+ "$(TEST_HC)" $(TEST_HC_OPTS_NO_RECOMP) -v0 --make -keep-s-files -fno-warn-deprecated-flags -fvia-C A061a.hs
test -f A061a.s
# Test that -keep-s-files works without --make
test061b:
$(RM) A061b.hi A061b$(OBJSUFFIX) A061b.s
- "$(TEST_HC)" $(TEST_HC_OPTS) -c -keep-s-files -fno-warn-deprecated-flags -fvia-C A061b.hs
+ "$(TEST_HC)" $(TEST_HC_OPTS_NO_RECOMP) -c -keep-s-files -fno-warn-deprecated-flags -fvia-C A061b.hs
test -f A061b.s
# Test that -main-is works with --make
test062a:
$(RM) Hello062a.hs Hello062a.hi Hello062a$(OBJSUFFIX) Hello062a.hc hello062a
echo "module Hello062a where { hello062a = putStrLn \"ok\" }" >Hello062a.hs
- "$(TEST_HC)" $(TEST_HC_OPTS) -v0 --make -main-is Hello062a.hello062a Hello062a -o hello062a
+ "$(TEST_HC)" $(TEST_HC_OPTS_NO_RECOMP) -v0 --make -main-is Hello062a.hello062a Hello062a -o hello062a
./hello062a
test062b:
$(RM) Hello062b.hs Hello062b.hi Hello062b$(OBJSUFFIX) Hello062b.hc hello062b
echo "module Hello062b where { main = putStrLn \"ok\" }" >Hello062b.hs
- "$(TEST_HC)" $(TEST_HC_OPTS) -v0 --make -main-is Hello062b Hello062b -o hello062b
+ "$(TEST_HC)" $(TEST_HC_OPTS_NO_RECOMP) -v0 --make -main-is Hello062b Hello062b -o hello062b
./hello062b
test062c:
$(RM) Hello062c.hs Hello062c.hi Hello062c$(OBJSUFFIX) Hello062c.hc hello062c
echo "module Main (hello062c) where { hello062c = putStrLn \"ok\" }" >Hello062c.hs
- "$(TEST_HC)" $(TEST_HC_OPTS) -v0 --make -main-is hello062c Hello062c.hs -o hello062c
+ "$(TEST_HC)" $(TEST_HC_OPTS_NO_RECOMP) -v0 --make -main-is hello062c Hello062c.hs -o hello062c
./hello062c
test062d:
$(RM) -rf B062d
$(RM) hello062d
mkdir B062d
echo "module B062d.Hello062d (hello062d) where { hello062d = putStrLn \"ok\" }" >B062d/Hello062d.hs
- "$(TEST_HC)" $(TEST_HC_OPTS) -v0 --make -main-is B062d.Hello062d.hello062d B062d/Hello062d.hs -o hello062d
+ "$(TEST_HC)" $(TEST_HC_OPTS_NO_RECOMP) -v0 --make -main-is B062d.Hello062d.hello062d B062d/Hello062d.hs -o hello062d
./hello062d
test062e:
$(RM) -rf B062e
$(RM) Hello062e.hc hello062e
mkdir B062e
echo "module B062e.Hello062e (main) where { main = putStrLn \"ok\" }" >B062e/Hello062e.hs
- "$(TEST_HC)" $(TEST_HC_OPTS) -v0 --make -main-is B062e.Hello062e B062e/Hello062e.hs -o hello062e
+ "$(TEST_HC)" $(TEST_HC_OPTS_NO_RECOMP) -v0 --make -main-is B062e.Hello062e B062e/Hello062e.hs -o hello062e
./hello062e
# Test that -i deletes the list of search paths.
@@ -327,42 +331,42 @@ test062e:
# compare the output, because make might give us a different exit code.
test063:
$(RM) A063.hi A063$(OBJSUFFIX) A063.hc D063.hi D063$(OBJSUFFIX) D063.hc
- -"$(TEST_HC)" $(TEST_HC_OPTS) --make -i -v0 D063.hs
+ -"$(TEST_HC)" $(TEST_HC_OPTS_NO_RECOMP) --make -i -v0 D063.hs
# Test -E
test064:
$(RM) A064.hi A064.hspp
- "$(TEST_HC)" $(TEST_HC_OPTS) -E A064.hs
+ "$(TEST_HC)" $(TEST_HC_OPTS_NO_RECOMP) -E A064.hs
test -f A064.hspp
# Test -E/-cpp
test065:
$(RM) A065.hi A065.hspp
- "$(TEST_HC)" $(TEST_HC_OPTS) -E -cpp A065.hs
+ "$(TEST_HC)" $(TEST_HC_OPTS_NO_RECOMP) -E -cpp A065.hs
test -f A065.hspp
# Test -E/-o
test066:
$(RM) A066.hi A066.tmp
- "$(TEST_HC)" $(TEST_HC_OPTS) -E A066.hs -o A066.tmp
+ "$(TEST_HC)" $(TEST_HC_OPTS_NO_RECOMP) -E A066.hs -o A066.tmp
test -f A066.tmp
# Test -E/-cpp/-o
test067:
$(RM) A067.hi A067.tmp
- "$(TEST_HC)" $(TEST_HC_OPTS) -cpp -E A067.hs -o A067.tmp
+ "$(TEST_HC)" $(TEST_HC_OPTS_NO_RECOMP) -cpp -E A067.hs -o A067.tmp
test -f A067.tmp
# Test -S
test070:
$(RM) A070.hi A070.s
- "$(TEST_HC)" $(TEST_HC_OPTS) -S A070.hs
+ "$(TEST_HC)" $(TEST_HC_OPTS_NO_RECOMP) -S A070.hs
test -f A070.s
# Test -S/-o
test071:
$(RM) A071.hi A071.tmp
- "$(TEST_HC)" $(TEST_HC_OPTS) -S A071.hs -o A071.tmp
+ "$(TEST_HC)" $(TEST_HC_OPTS_NO_RECOMP) -S A071.hs -o A071.tmp
test -f A071.tmp
@@ -371,7 +375,7 @@ test071:
define test081
$(RM) $(1).hs $(1).hi $(1)$(OBJSUFFIX) $(1).hc $(1)$(exeext)
echo "module Main where { main = putStrLn \"ok\" }" >$(1).hs
-"$(TEST_HC)" $(TEST_HC_OPTS) --make -v0 $(1).hs
+"$(TEST_HC)" $(TEST_HC_OPTS_NO_RECOMP) --make -v0 $(1).hs
test -f $(1)$(exeext)
endef
@@ -387,7 +391,7 @@ test081b:
test100:
$(RM) overlap/List.hi overlap/List.o
$(RM) overlap/Overlap.hi overlap/Overlap.o
- "$(TEST_HC)" $(TEST_HC_OPTS) -v0 --make -ioverlap Overlap
+ "$(TEST_HC)" $(TEST_HC_OPTS_NO_RECOMP) -v0 --make -ioverlap Overlap
# -----------------------------------------------------------------------------
# dependency-generation tests
@@ -398,17 +402,17 @@ DEPFILE200 = depend200
# modify an existing dependency file.
test200:
$(RM) $(DEPFILE200)
- "$(TEST_HC)" $(TEST_HC_OPTS) -M -dep-makefile $(DEPFILE200) D200
+ "$(TEST_HC)" $(TEST_HC_OPTS_NO_RECOMP) -M -dep-makefile $(DEPFILE200) D200
test -f $(DEPFILE200)
- "$(TEST_HC)" $(TEST_HC_OPTS) -M -dep-makefile $(DEPFILE200) D200 B200.C A200
+ "$(TEST_HC)" $(TEST_HC_OPTS_NO_RECOMP) -M -dep-makefile $(DEPFILE200) D200 B200.C A200
test -f $(DEPFILE200)
- "$(TEST_HC)" $(TEST_HC_OPTS) -M -dep-makefile $(DEPFILE200) D200.hs B200/C.hs A200.hs
+ "$(TEST_HC)" $(TEST_HC_OPTS_NO_RECOMP) -M -dep-makefile $(DEPFILE200) D200.hs B200/C.hs A200.hs
test -f $(DEPFILE200)
# -----------------------------------------------------------------------------
2566::
- if "$(TEST_HC)" $(TEST_HC_OPTS) -c foo2566.bar; then false else true; fi
+ if "$(TEST_HC)" $(TEST_HC_OPTS_NO_RECOMP) -c foo2566.bar; then false else true; fi
.PHONY: mode001
# We use
@@ -419,42 +423,42 @@ test200:
# ghc: <stdout>: hFlush: resource vanished (Broken pipe)
# on OS X
mode001:
- "$(TEST_HC)" $(TEST_HC_OPTS) --make --help | sed '2,$$d'
- "$(TEST_HC)" $(TEST_HC_OPTS) --help --make | sed '2,$$d'
- "$(TEST_HC)" $(TEST_HC_OPTS) --interactive --help | sed '2,$$d'
- "$(TEST_HC)" $(TEST_HC_OPTS) --help --interactive | sed '2,$$d'
- "$(TEST_HC)" $(TEST_HC_OPTS) --version --help | sed "s/, version.*//"
- "$(TEST_HC)" $(TEST_HC_OPTS) --help --version | sed '2,$$d'
- "$(TEST_HC)" $(TEST_HC_OPTS) --interactive --version | sed "s/, version.*//"
- "$(TEST_HC)" $(TEST_HC_OPTS) --version --interactive | sed "s/, version.*//"
+ "$(TEST_HC)" $(TEST_HC_OPTS_NO_RECOMP) --make --help | sed '2,$$d'
+ "$(TEST_HC)" $(TEST_HC_OPTS_NO_RECOMP) --help --make | sed '2,$$d'
+ "$(TEST_HC)" $(TEST_HC_OPTS_NO_RECOMP) --interactive --help | sed '2,$$d'
+ "$(TEST_HC)" $(TEST_HC_OPTS_NO_RECOMP) --help --interactive | sed '2,$$d'
+ "$(TEST_HC)" $(TEST_HC_OPTS_NO_RECOMP) --version --help | sed "s/, version.*//"
+ "$(TEST_HC)" $(TEST_HC_OPTS_NO_RECOMP) --help --version | sed '2,$$d'
+ "$(TEST_HC)" $(TEST_HC_OPTS_NO_RECOMP) --interactive --version | sed "s/, version.*//"
+ "$(TEST_HC)" $(TEST_HC_OPTS_NO_RECOMP) --version --interactive | sed "s/, version.*//"
# Test for building DLLs with ghc -shared, see #2745
shared001:
$(RM) Shared001.hi Shared001.o HSdll.dll.a HSdll.dll Shared001_stub.*
- "$(TEST_HC)" $(TEST_HC_OPTS) -v0 -shared Shared001.hs
+ "$(TEST_HC)" $(TEST_HC_OPTS_NO_RECOMP) -v0 -shared Shared001.hs
# -----------------------------------------------------------------------------
3674:
$(RM) 3674*.o 3674*.hi 3674_pre
- "$(TEST_HC)" $(TEST_HC_OPTS) --make 3674_pre.hs
- "$(TEST_HC)" $(TEST_HC_OPTS) --make 3674.hs
+ "$(TEST_HC)" $(TEST_HC_OPTS_NO_RECOMP) --make 3674_pre.hs
+ "$(TEST_HC)" $(TEST_HC_OPTS_NO_RECOMP) --make 3674.hs
.PHONY: rtsopts001
rtsopts001:
$(RM) rtsOpts$(exeext) rtsOpts.hi rtsOpts.o
- "$(TEST_HC)" $(TEST_HC_OPTS) -v0 --make rtsOpts -rtsopts
+ "$(TEST_HC)" $(filter-out -rtsopts,$(TEST_HC_OPTS_NO_RECOMP)) -v0 --make rtsOpts -rtsopts
echo "Normal"
-./rtsOpts +RTS -C0 2>&1
$(RM) rtsOpts$(exeext) rtsOpts.hi rtsOpts.o
- "$(TEST_HC)" $(TEST_HC_OPTS) -v0 --make rtsOpts
+ "$(TEST_HC)" $(filter-out -rtsopts,$(TEST_HC_OPTS_NO_RECOMP)) -v0 --make rtsOpts
echo "No RTS opts"
-./rtsOpts +RTS -C0 2>&1
.PHONY: rtsopts002
rtsopts002:
$(RM) rtsopts002$(exeext) rtsopts002.hi rtsopts002.o
- "$(TEST_HC)" $(TEST_HC_OPTS) -v0 --make rtsopts002 -rtsopts=some
+ "$(TEST_HC)" $(TEST_HC_OPTS_NO_RECOMP) -v0 --make rtsopts002 -rtsopts=some
./rtsopts002
./rtsopts002 +RTS --info >/dev/null
if ./rtsopts002 +RTS -C0; then exit 1; else exit 0; fi
@@ -465,29 +469,37 @@ rtsopts002:
.PHONY: withRtsOpts
withRtsOpts:
$(RM) withRtsOpts$(exeext) withRtsOpts.hi withRtsOpts.o withRtsOpts.out
- "$(TEST_HC)" $(TEST_HC_OPTS) -v0 --make withRtsOpts -with-rtsopts=--info
+ "$(TEST_HC)" $(TEST_HC_OPTS_NO_RECOMP) -v0 --make withRtsOpts -with-rtsopts=--info
./withRtsOpts | head -1
# Also test for non-safe RTS opts, these should be allowed too,
# since the author has explicitly requested them. (#5114)
$(RM) withRtsOpts$(exeext) withRtsOpts.hi withRtsOpts.o withRtsOpts.out
- "$(TEST_HC)" $(TEST_HC_OPTS) -v0 --make withRtsOpts -with-rtsopts=-twithRtsOpts.out
+ "$(TEST_HC)" $(TEST_HC_OPTS_NO_RECOMP) -v0 --make withRtsOpts -with-rtsopts=-twithRtsOpts.out
./withRtsOpts | head -1
test -f withRtsOpts.out
.PHONY: T3364
T3364:
- -"$(TEST_HC)" $(TEST_HC_OPTS) -H
+ -"$(TEST_HC)" $(TEST_HC_OPTS_NO_RECOMP) -H
.PHONY: T706
T706:
cp T706a.hs T706.hs
- "$(TEST_HC)" $(TEST_HC_OPTS) -c T706.hs
+ "$(TEST_HC)" $(TEST_HC_OPTS_NO_RECOMP) -c T706.hs
cp T706b.hs T706.hs
- "$(TEST_HC)" $(TEST_HC_OPTS) -c T706.hs
- echo "test" | "$(TEST_HC)" $(TEST_HC_OPTS) --interactive -ignore-dot-ghci -v0 T706
+ "$(TEST_HC)" $(TEST_HC_OPTS_NO_RECOMP) -c T706.hs
+ echo "test" | "$(TEST_HC)" $(TEST_HC_OPTS_NO_RECOMP) --interactive -ignore-dot-ghci -v0 T706
.PHONY: T5584
T5584:
$(RM) -rf T5584_out
mkdir T5584_out
"$(TEST_HC)" -odir T5584_out -c T5584/A.hs-boot
+
+.PHONY: T5198
+T5198:
+ $(RM) -rf T5198dump
+ [ ! -d T5198dump ]
+ "$(TEST_HC)" $(TEST_HC_OPTS_NO_RECOMP) -c T5198.hs -dumpdir T5198dump -ddump-to-file -ddump-simpl
+ [ -f T5198dump/T5198.dump-simpl ]
+
diff --git a/testsuite/tests/driver/T4437.hs b/testsuite/tests/driver/T4437.hs
index b7ae6fd406..38f125e43a 100644
--- a/testsuite/tests/driver/T4437.hs
+++ b/testsuite/tests/driver/T4437.hs
@@ -39,7 +39,11 @@ expectedGhcOnlyExtensions = ["ParallelArrays",
"AlternativeLayoutRuleTransitional",
"MonadComprehensions",
"TraditionalRecordSyntax",
- "PolyKinds"]
+ "DataKinds",
+ "PolyKinds",
+ "ExplicitNamespaces",
+ "InstanceSigs",
+ "CApiFFI"]
expectedCabalOnlyExtensions :: [String]
expectedCabalOnlyExtensions = ["Generics",
diff --git a/testsuite/tests/driver/T5147/Makefile b/testsuite/tests/driver/T5147/Makefile
index e298ad7209..d0769b8f5e 100644
--- a/testsuite/tests/driver/T5147/Makefile
+++ b/testsuite/tests/driver/T5147/Makefile
@@ -2,6 +2,10 @@ TOP=../../..
include $(TOP)/mk/boilerplate.mk
include $(TOP)/mk/test.mk
+# -fforce-recomp makes lots of driver tests trivially pass, so we
+# filter it out from $(TEST_HC_OPTS).
+TEST_HC_OPTS_NO_RECOMP = $(filter-out -fforce-recomp,$(TEST_HC_OPTS))
+
# Recompilation tests
clean:
@@ -13,9 +17,9 @@ clean:
T5147: clean
cp B1.hs B.hs
- '$(TEST_HC)' $(TEST_HC_OPTS) --make -v0 A.hs
+ '$(TEST_HC)' $(TEST_HC_OPTS_NO_RECOMP) --make -v0 A.hs
sleep 1
cp B2.hs B.hs
- if '$(TEST_HC)' $(TEST_HC_OPTS) --make -v0 A.hs; then exit 1; else exit 0; fi
+ if '$(TEST_HC)' $(TEST_HC_OPTS_NO_RECOMP) --make -v0 A.hs; then exit 1; else exit 0; fi
# Reverse the sense of the error; we *expect*
# the compilation to fail, and then we want to succeed
diff --git a/testsuite/tests/driver/T5147/T5147.stderr b/testsuite/tests/driver/T5147/T5147.stderr
index b38cad9850..9d37468dfe 100644
--- a/testsuite/tests/driver/T5147/T5147.stderr
+++ b/testsuite/tests/driver/T5147/T5147.stderr
@@ -1,7 +1,6 @@
A.hs:6:15:
- No instance for (Show (Fields v))
- arising from a use of `show'
+ No instance for (Show (Fields v)) arising from a use of `show'
Possible fix: add an instance declaration for (Show (Fields v))
In the expression: show a
In an equation for `showField': showField a = show a
diff --git a/testsuite/tests/driver/T5198.hs b/testsuite/tests/driver/T5198.hs
new file mode 100644
index 0000000000..f34610197c
--- /dev/null
+++ b/testsuite/tests/driver/T5198.hs
@@ -0,0 +1,6 @@
+
+module T5198 where
+
+v :: ()
+v = ()
+
diff --git a/testsuite/tests/driver/all.T b/testsuite/tests/driver/all.T
index 7f937a91e9..d721f22ae0 100644
--- a/testsuite/tests/driver/all.T
+++ b/testsuite/tests/driver/all.T
@@ -351,3 +351,6 @@ test('spacesInArgs',
test('T5584', normal, run_command,
['$MAKE -s --no-print-directory T5584'])
+test('T5198', extra_clean(['T5198dump/T5198.dump-simpl', 'T5198dump']),
+ run_command,
+ ['$MAKE -s --no-print-directory T5198'])
diff --git a/testsuite/tests/driver/objc/all.T b/testsuite/tests/driver/objc/all.T
index eb472a41b9..68b76282ff 100644
--- a/testsuite/tests/driver/objc/all.T
+++ b/testsuite/tests/driver/objc/all.T
@@ -6,8 +6,14 @@ def if_not_platform(platforms, f):
skip_if_not_osx = if_not_platform(['i386-apple-darwin','x86_64-apple-darwin'], skip)
-test('objc-hi', [ skip_if_not_osx, objc_src ],
+test('objc-hi',
+ [ skip_if_not_osx,
+ objc_src,
+ expect_fail_for(['ghci']) ],
compile_and_run, ['-framework Foundation'])
-test('objcpp-hi', [ skip_if_not_osx, objcpp_src ],
+test('objcpp-hi',
+ [ skip_if_not_osx,
+ objcpp_src,
+ expect_fail_for(['ghci']) ],
compile_and_run, ['-framework Foundation -lstdc++'])
diff --git a/testsuite/tests/driver/recomp001/Makefile b/testsuite/tests/driver/recomp001/Makefile
index a5bff9936d..f264e0255c 100644
--- a/testsuite/tests/driver/recomp001/Makefile
+++ b/testsuite/tests/driver/recomp001/Makefile
@@ -2,6 +2,10 @@ TOP=../../..
include $(TOP)/mk/boilerplate.mk
include $(TOP)/mk/test.mk
+# -fforce-recomp makes lots of driver tests trivially pass, so we
+# filter it out from $(TEST_HC_OPTS).
+TEST_HC_OPTS_NO_RECOMP = $(filter-out -fforce-recomp,$(TEST_HC_OPTS))
+
# Recompilation tests
clean:
@@ -13,7 +17,7 @@ clean:
recomp001: clean
cp B1.hs B.hs
- '$(TEST_HC)' $(TEST_HC_OPTS) --make -v0 C.hs
+ '$(TEST_HC)' $(TEST_HC_OPTS_NO_RECOMP) --make -v0 C.hs
sleep 1
cp B2.hs B.hs
- -'$(TEST_HC)' $(TEST_HC_OPTS) --make -v0 C.hs
+ -'$(TEST_HC)' $(TEST_HC_OPTS_NO_RECOMP) --make -v0 C.hs
diff --git a/testsuite/tests/driver/recomp002/Makefile b/testsuite/tests/driver/recomp002/Makefile
index 0dd8f47ca4..f2cd3d55dc 100644
--- a/testsuite/tests/driver/recomp002/Makefile
+++ b/testsuite/tests/driver/recomp002/Makefile
@@ -2,6 +2,10 @@ TOP=../../..
include $(TOP)/mk/boilerplate.mk
include $(TOP)/mk/test.mk
+# -fforce-recomp makes lots of driver tests trivially pass, so we
+# filter it out from $(TEST_HC_OPTS).
+TEST_HC_OPTS_NO_RECOMP = $(filter-out -fforce-recomp,$(TEST_HC_OPTS))
+
# Recompilation tests
clean:
@@ -11,6 +15,6 @@ clean:
# Only the first invocation should print any "Compiling" messages
recomp002: clean
- '$(TEST_HC)' $(TEST_HC_OPTS) --make Q.hs
+ '$(TEST_HC)' $(TEST_HC_OPTS_NO_RECOMP) --make Q.hs
echo Middle >&2
- '$(TEST_HC)' $(TEST_HC_OPTS) --make Q.hs
+ '$(TEST_HC)' $(TEST_HC_OPTS_NO_RECOMP) --make Q.hs
diff --git a/testsuite/tests/driver/recomp003/Makefile b/testsuite/tests/driver/recomp003/Makefile
index 7f6bfc2e48..85c45adc7b 100644
--- a/testsuite/tests/driver/recomp003/Makefile
+++ b/testsuite/tests/driver/recomp003/Makefile
@@ -2,6 +2,10 @@ TOP=../../..
include $(TOP)/mk/boilerplate.mk
include $(TOP)/mk/test.mk
+# -fforce-recomp makes lots of driver tests trivially pass, so we
+# filter it out from $(TEST_HC_OPTS).
+TEST_HC_OPTS_NO_RECOMP = $(filter-out -fforce-recomp,$(TEST_HC_OPTS))
+
OBJSUFFIX = .o
# Test that adding a new module that shadows a package module causes
@@ -10,9 +14,9 @@ recomp003:
$(RM) A.hi A$(OBJSUFFIX) out
$(RM) -rf Data
mkdir Data
- '$(TEST_HC)' $(TEST_HC_OPTS) -c A.hs
+ '$(TEST_HC)' $(TEST_HC_OPTS_NO_RECOMP) -c A.hs
echo "module Data.Char where" > Data/Char.hs
- '$(TEST_HC)' $(TEST_HC_OPTS) -c Data/Char.hs
+ '$(TEST_HC)' $(TEST_HC_OPTS_NO_RECOMP) -c Data/Char.hs
# Should now recompile A.hs, because Char is now a home module:
- '$(TEST_HC)' $(TEST_HC_OPTS) -c A.hs 2>err
+ '$(TEST_HC)' $(TEST_HC_OPTS_NO_RECOMP) -c A.hs 2>err
@if grep NOT err; then false; fi
diff --git a/testsuite/tests/driver/recomp004/Makefile b/testsuite/tests/driver/recomp004/Makefile
index 4ad51d8f60..dca4eb5ecf 100644
--- a/testsuite/tests/driver/recomp004/Makefile
+++ b/testsuite/tests/driver/recomp004/Makefile
@@ -2,6 +2,10 @@ TOP=../../..
include $(TOP)/mk/boilerplate.mk
include $(TOP)/mk/test.mk
+# -fforce-recomp makes lots of driver tests trivially pass, so we
+# filter it out from $(TEST_HC_OPTS).
+TEST_HC_OPTS_NO_RECOMP = $(filter-out -fforce-recomp,$(TEST_HC_OPTS))
+
EXECUTABLE = MainX$(exeext)
CLEAN_FILES = c.c c.o MainX.o MainX.hi $(EXECUTABLE)
@@ -13,13 +17,13 @@ recomp004:
$(RM) $(CLEAN_FILES)
$(CP) c1.c c.c
$(CP) Main.hs MainX.hs
- '$(TEST_HC)' $(TEST_HC_OPTS) -v0 -c c.c -o c.o
- '$(TEST_HC)' $(TEST_HC_OPTS) -v0 --make MainX.hs c.o -o $(EXECUTABLE)
+ '$(TEST_HC)' $(TEST_HC_OPTS_NO_RECOMP) -v0 -c c.c -o c.o
+ '$(TEST_HC)' $(TEST_HC_OPTS_NO_RECOMP) -v0 --make MainX.hs c.o -o $(EXECUTABLE)
./$(EXECUTABLE)
$(CP) c2.c c.c
- '$(TEST_HC)' $(TEST_HC_OPTS) -v0 -c c.c -o c.o
+ '$(TEST_HC)' $(TEST_HC_OPTS_NO_RECOMP) -v0 -c c.c -o c.o
# Hack to make sure c.o is really newer
touch -t 01010000 MainX.hs MainX.hi MainX.o c.c $(EXECUTABLE)
- '$(TEST_HC)' $(TEST_HC_OPTS) -v0 --make MainX.hs c.o -o $(EXECUTABLE)
+ '$(TEST_HC)' $(TEST_HC_OPTS_NO_RECOMP) -v0 --make MainX.hs c.o -o $(EXECUTABLE)
./$(EXECUTABLE)
diff --git a/testsuite/tests/driver/recomp005/Makefile b/testsuite/tests/driver/recomp005/Makefile
index e1bda204b7..5b7b256c6a 100644
--- a/testsuite/tests/driver/recomp005/Makefile
+++ b/testsuite/tests/driver/recomp005/Makefile
@@ -2,6 +2,10 @@ TOP=../../..
include $(TOP)/mk/boilerplate.mk
include $(TOP)/mk/test.mk
+# -fforce-recomp makes lots of driver tests trivially pass, so we
+# filter it out from $(TEST_HC_OPTS).
+TEST_HC_OPTS_NO_RECOMP = $(filter-out -fforce-recomp,$(TEST_HC_OPTS))
+
clean:
rm -f *.o*
rm -f *.hi*
@@ -9,8 +13,8 @@ clean:
recomp005: clean
cp C1.hs C.hs
- '$(TEST_HC)' $(TEST_HC_OPTS) --make E.hs -O
+ '$(TEST_HC)' $(TEST_HC_OPTS_NO_RECOMP) --make E.hs -O
sleep 1
cp C2.hs C.hs
# Should recompile E, because C is now an orphan
- '$(TEST_HC)' $(TEST_HC_OPTS) --make E.hs -O
+ '$(TEST_HC)' $(TEST_HC_OPTS_NO_RECOMP) --make E.hs -O
diff --git a/testsuite/tests/driver/recomp005/recomp005.stdout b/testsuite/tests/driver/recomp005/recomp005.stdout
index 720a1ea74f..ad1ef6d170 100644
--- a/testsuite/tests/driver/recomp005/recomp005.stdout
+++ b/testsuite/tests/driver/recomp005/recomp005.stdout
@@ -4,5 +4,5 @@
[4 of 5] Compiling D ( D.hs, D.o )
[5 of 5] Compiling E ( E.hs, E.o )
[3 of 5] Compiling C ( C.hs, C.o )
-[4 of 5] Compiling D ( D.hs, D.o )
-[5 of 5] Compiling E ( E.hs, E.o )
+[4 of 5] Compiling D ( D.hs, D.o ) [C changed]
+[5 of 5] Compiling E ( E.hs, E.o ) [D changed]
diff --git a/testsuite/tests/driver/recomp006/Makefile b/testsuite/tests/driver/recomp006/Makefile
index a0f55d636d..839dbf0008 100644
--- a/testsuite/tests/driver/recomp006/Makefile
+++ b/testsuite/tests/driver/recomp006/Makefile
@@ -2,6 +2,10 @@ TOP=../../..
include $(TOP)/mk/boilerplate.mk
include $(TOP)/mk/test.mk
+# -fforce-recomp makes lots of driver tests trivially pass, so we
+# filter it out from $(TEST_HC_OPTS).
+TEST_HC_OPTS_NO_RECOMP = $(filter-out -fforce-recomp,$(TEST_HC_OPTS))
+
OBJSUFFIX = .o
# Test that changing the fixity of a type synonym operator forces recompilation
@@ -9,8 +13,8 @@ OBJSUFFIX = .o
recomp006:
$(RM) A.hi A$(OBJSUFFIX)
cp B1.hs B.hs
- '$(TEST_HC)' $(TEST_HC_OPTS) --make A.hs 1>out 2>err
+ '$(TEST_HC)' $(TEST_HC_OPTS_NO_RECOMP) --make A.hs 1>out 2>err
sleep 1
cp B2.hs B.hs
# This should fail
- if '$(TEST_HC)' $(TEST_HC_OPTS) --make A.hs; then false; fi
+ if '$(TEST_HC)' $(TEST_HC_OPTS_NO_RECOMP) --make A.hs; then false; fi
diff --git a/testsuite/tests/driver/recomp006/recomp006.stderr b/testsuite/tests/driver/recomp006/recomp006.stderr
index c449b5cd2d..328897c0c2 100644
--- a/testsuite/tests/driver/recomp006/recomp006.stderr
+++ b/testsuite/tests/driver/recomp006/recomp006.stderr
@@ -1,14 +1,7 @@
-A.hs:8:6:
- No instance for (Num (Int :- Int))
- arising from the literal `1'
- Possible fix: add an instance declaration for (Num (Int :- Int))
- In the expression: 1
- In the expression: (1, (2, 3))
- In an equation for `f': f = (1, (2, 3))
-
A.hs:8:8:
- Couldn't match expected type `Int' with actual type `(t0, t1)'
+ Couldn't match expected type `Int'
+ with actual type `(Integer, Integer)'
In the expression: (2, 3)
In the expression: (1, (2, 3))
In an equation for `f': f = (1, (2, 3))
diff --git a/testsuite/tests/driver/recomp006/recomp006.stdout b/testsuite/tests/driver/recomp006/recomp006.stdout
index f403e40d1a..499b06f08b 100644
--- a/testsuite/tests/driver/recomp006/recomp006.stdout
+++ b/testsuite/tests/driver/recomp006/recomp006.stdout
@@ -1,2 +1,2 @@
[1 of 2] Compiling B ( B.hs, B.o )
-[2 of 2] Compiling A ( A.hs, A.o )
+[2 of 2] Compiling A ( A.hs, A.o ) [B changed]
diff --git a/testsuite/tests/driver/recomp007/recomp007.stderr b/testsuite/tests/driver/recomp007/recomp007.stderr
deleted file mode 100644
index 290be5f14d..0000000000
--- a/testsuite/tests/driver/recomp007/recomp007.stderr
+++ /dev/null
@@ -1 +0,0 @@
-Linking dist/build/test/test ...
diff --git a/testsuite/tests/driver/recomp007/recomp007.stdout b/testsuite/tests/driver/recomp007/recomp007.stdout
index b956b8f9a3..61095aa38b 100644
--- a/testsuite/tests/driver/recomp007/recomp007.stdout
+++ b/testsuite/tests/driver/recomp007/recomp007.stdout
@@ -1,4 +1,5 @@
Building b-1.0...
Preprocessing executable 'test' for b-1.0...
-[1 of 2] Compiling B ( B.hs, dist/build/test/test-tmp/B.o )
-[2 of 2] Compiling Main ( Main.hs, dist/build/test/test-tmp/Main.o )
+[1 of 2] Compiling B ( B.hs, dist/build/test/test-tmp/B.o ) [A changed]
+[2 of 2] Compiling Main ( Main.hs, dist/build/test/test-tmp/Main.o ) [B changed]
+Linking dist/build/test/test ...
diff --git a/testsuite/tests/driver/recomp008/Makefile b/testsuite/tests/driver/recomp008/Makefile
index 3e598ae9f1..b382f4f685 100644
--- a/testsuite/tests/driver/recomp008/Makefile
+++ b/testsuite/tests/driver/recomp008/Makefile
@@ -2,17 +2,21 @@ TOP=../../..
include $(TOP)/mk/boilerplate.mk
include $(TOP)/mk/test.mk
+# -fforce-recomp makes lots of driver tests trivially pass, so we
+# filter it out from $(TEST_HC_OPTS).
+TEST_HC_OPTS_NO_RECOMP = $(filter-out -fforce-recomp,$(TEST_HC_OPTS))
+
Main.o : B.hi
B.o : A.hi
%.o : %.hs
- '$(TEST_HC)' $(TEST_HC_OPTS) -O -c $< -o $@
+ '$(TEST_HC)' $(TEST_HC_OPTS_NO_RECOMP) -O -c $< -o $@
# magic .hi rule: see rules/hi-rule.mk in the GHC source tree
%.hi : %.o ;
prog : A.o B.o Main.o
- '$(TEST_HC)' $(TEST_HC_OPTS) -o prog A.o B.o Main.o
+ '$(TEST_HC)' $(TEST_HC_OPTS_NO_RECOMP) -o prog A.o B.o Main.o
clean :
$(RM) *.hi *.o prog
diff --git a/testsuite/tests/driver/recomp009/Makefile b/testsuite/tests/driver/recomp009/Makefile
index 41428d28cb..1fb2bd116b 100644
--- a/testsuite/tests/driver/recomp009/Makefile
+++ b/testsuite/tests/driver/recomp009/Makefile
@@ -2,6 +2,10 @@ TOP=../../..
include $(TOP)/mk/boilerplate.mk
include $(TOP)/mk/test.mk
+# -fforce-recomp makes lots of driver tests trivially pass, so we
+# filter it out from $(TEST_HC_OPTS).
+TEST_HC_OPTS_NO_RECOMP = $(filter-out -fforce-recomp,$(TEST_HC_OPTS))
+
# Recompilation tests
clean:
@@ -14,9 +18,9 @@ clean:
recomp009: clean
cp Sub1.hs Sub.hs
- '$(TEST_HC)' $(TEST_HC_OPTS) -v0 --make Main.hs
+ '$(TEST_HC)' $(TEST_HC_OPTS_NO_RECOMP) -v0 --make Main.hs
./Main
sleep 1
cp Sub2.hs Sub.hs
- -'$(TEST_HC)' $(TEST_HC_OPTS) -v0 --make Main.hs
+ -'$(TEST_HC)' $(TEST_HC_OPTS_NO_RECOMP) -v0 --make Main.hs
./Main
diff --git a/testsuite/tests/driver/recomp010/Makefile b/testsuite/tests/driver/recomp010/Makefile
index a1b2cab2c6..8e8be2650a 100644
--- a/testsuite/tests/driver/recomp010/Makefile
+++ b/testsuite/tests/driver/recomp010/Makefile
@@ -2,6 +2,10 @@ TOP=../../..
include $(TOP)/mk/boilerplate.mk
include $(TOP)/mk/test.mk
+# -fforce-recomp makes lots of driver tests trivially pass, so we
+# filter it out from $(TEST_HC_OPTS).
+TEST_HC_OPTS_NO_RECOMP = $(filter-out -fforce-recomp,$(TEST_HC_OPTS))
+
# Recompilation tests
clean:
@@ -13,10 +17,10 @@ clean:
recomp010: clean
cp X1.hs X.hs
- '$(TEST_HC)' $(TEST_HC_OPTS) -v0 --make -O Main.hs
+ '$(TEST_HC)' $(TEST_HC_OPTS_NO_RECOMP) -v0 --make -O Main.hs
./Main
sleep 1
cp X2.hs X.hs
rm X.o
- -'$(TEST_HC)' $(TEST_HC_OPTS) -v0 --make -O Main.hs
+ -'$(TEST_HC)' $(TEST_HC_OPTS_NO_RECOMP) -v0 --make -O Main.hs
./Main
diff --git a/testsuite/tests/driver/recomp011/Main.hs b/testsuite/tests/driver/recomp011/Main.hs
new file mode 100644
index 0000000000..5cdb621387
--- /dev/null
+++ b/testsuite/tests/driver/recomp011/Main.hs
@@ -0,0 +1,5 @@
+{-# LANGUAGE CPP #-}
+module Main where
+
+#include "A.hsinc"
+#include "B.hsinc"
diff --git a/testsuite/tests/driver/recomp011/Makefile b/testsuite/tests/driver/recomp011/Makefile
new file mode 100644
index 0000000000..71eb55e755
--- /dev/null
+++ b/testsuite/tests/driver/recomp011/Makefile
@@ -0,0 +1,32 @@
+TOP=../../..
+include $(TOP)/mk/boilerplate.mk
+include $(TOP)/mk/test.mk
+
+# -fforce-recomp makes lots of driver tests trivially pass, so we
+# filter it out from $(TEST_HC_OPTS).
+TEST_HC_OPTS_NO_RECOMP = $(filter-out -fforce-recomp,$(TEST_HC_OPTS))
+
+# Recompilation tests
+
+clean:
+ rm -f *.o *.hi
+ rm -f A.hsinc B.hsinc
+ rm -f Main$(exeext)
+
+recomp011: clean
+ echo "main = putStrLn x" >A.hsinc
+ echo "x = show 42" >B.hsinc
+ '$(TEST_HC)' $(TEST_HC_OPTS_NO_RECOMP) --make -O Main.hs
+ ./Main
+ sleep 1
+ echo "x = show 43" >B.hsinc
+ '$(TEST_HC)' $(TEST_HC_OPTS_NO_RECOMP) --make -O Main.hs
+ ./Main
+ sleep 1
+ echo "main = putStrLn (x ++ x)" >A.hsinc
+ '$(TEST_HC)' $(TEST_HC_OPTS_NO_RECOMP) --make -O Main.hs
+ sleep 1
+ ./Main
+ '$(TEST_HC)' $(TEST_HC_OPTS_NO_RECOMP) --make -O Main.hs
+ # don't change anything; check that no compilation happened
+ ./Main
diff --git a/testsuite/tests/driver/recomp011/all.T b/testsuite/tests/driver/recomp011/all.T
new file mode 100644
index 0000000000..b7643f0ed1
--- /dev/null
+++ b/testsuite/tests/driver/recomp011/all.T
@@ -0,0 +1,7 @@
+# Test for #3589, recompiling when #included files change
+
+test('recomp011',
+ [ clean_cmd('$MAKE -s clean') ],
+ run_command,
+ ['$MAKE -s --no-print-directory recomp011'])
+
diff --git a/testsuite/tests/driver/recomp011/recomp011.stdout b/testsuite/tests/driver/recomp011/recomp011.stdout
new file mode 100644
index 0000000000..d3e0b92508
--- /dev/null
+++ b/testsuite/tests/driver/recomp011/recomp011.stdout
@@ -0,0 +1,10 @@
+[1 of 1] Compiling Main ( Main.hs, Main.o )
+Linking Main ...
+42
+[1 of 1] Compiling Main ( Main.hs, Main.o ) [B.hsinc changed]
+Linking Main ...
+43
+[1 of 1] Compiling Main ( Main.hs, Main.o ) [A.hsinc changed]
+Linking Main ...
+4343
+4343
diff --git a/testsuite/tests/dynlibs/Makefile b/testsuite/tests/dynlibs/Makefile
index 35e5788e0f..6d4f736983 100644
--- a/testsuite/tests/dynlibs/Makefile
+++ b/testsuite/tests/dynlibs/Makefile
@@ -9,8 +9,8 @@ T3807:
$(RM) T3807-export.o T3807-load.o
$(RM) T3807test.so
$(RM) T3807-load
- '$(TEST_HC)' $(TEST_HC_OPTS) -v0 --make -dynamic -fPIC -shared T3807Export.hs T3807-export.c -o T3807test.so -lHSrts-ghc`'$(TEST_HC)' $(TEST_HC_OPTS) --numeric-version` -rtsopts
- '$(TEST_HC)' $(TEST_HC_OPTS) -no-auto-link-packages -no-hs-main T3807-load.c -o T3807-load -ldl
+ '$(TEST_HC)' $(filter-out -rtsopts,$(TEST_HC_OPTS)) -v0 --make -dynamic -fPIC -shared T3807Export.hs T3807-export.c -o T3807test.so -lHSrts-ghc`'$(TEST_HC)' $(TEST_HC_OPTS) --numeric-version` -rtsopts
+ '$(TEST_HC)' $(filter-out -rtsopts,$(TEST_HC_OPTS)) -no-auto-link-packages -no-hs-main T3807-load.c -o T3807-load -ldl
./T3807-load
.PHONY: T4464
@@ -32,10 +32,10 @@ T4464:
.PHONY: T5373
T5373:
- '$(TEST_HC)' $(TEST_HC_OPTS) -v0 -dynamic --make T5373A
- '$(TEST_HC)' $(TEST_HC_OPTS) -v0 -dynamic --make T5373B -rtsopts
- '$(TEST_HC)' $(TEST_HC_OPTS) -v0 -dynamic --make T5373C -rtsopts=some
- '$(TEST_HC)' $(TEST_HC_OPTS) -v0 -dynamic --make T5373D -rtsopts=none
+ '$(TEST_HC)' $(filter-out -rtsopts,$(TEST_HC_OPTS)) -v0 -dynamic --make T5373A
+ '$(TEST_HC)' $(filter-out -rtsopts,$(TEST_HC_OPTS)) -v0 -dynamic --make T5373B -rtsopts
+ '$(TEST_HC)' $(filter-out -rtsopts,$(TEST_HC_OPTS)) -v0 -dynamic --make T5373C -rtsopts=some
+ '$(TEST_HC)' $(filter-out -rtsopts,$(TEST_HC_OPTS)) -v0 -dynamic --make T5373D -rtsopts=none
-./T5373A +RTS -c 2>&1 | grep disabled
-./T5373B +RTS -c 2>&1 | grep disabled
-./T5373C +RTS -c 2>&1 | grep disabled
diff --git a/testsuite/tests/ffi/should_compile/cc004.hs b/testsuite/tests/ffi/should_compile/cc004.hs
index fb754223b2..89c2aa8319 100644
--- a/testsuite/tests/ffi/should_compile/cc004.hs
+++ b/testsuite/tests/ffi/should_compile/cc004.hs
@@ -26,10 +26,10 @@ foreign import stdcall "m2" m16 :: IO Int16
foreign import stdcall "m3" m32 :: IO Int32
foreign import stdcall "m4" m64 :: IO Int64
-foreign import stdcall "dynamic" d8 :: Ptr a -> IO Int8
-foreign import stdcall "dynamic" d16 :: Ptr a -> IO Int16
-foreign import stdcall "dynamic" d32 :: Ptr a -> IO Int32
-foreign import stdcall "dynamic" d64 :: Ptr a -> IO Int64
+foreign import stdcall "dynamic" d8 :: FunPtr (IO Int8) -> IO Int8
+foreign import stdcall "dynamic" d16 :: FunPtr (IO Int16) -> IO Int16
+foreign import stdcall "dynamic" d32 :: FunPtr (IO Int32) -> IO Int32
+foreign import stdcall "dynamic" d64 :: FunPtr (IO Int64) -> IO Int64
foreign import ccall unsafe "kitchen"
sink :: Ptr a
@@ -49,19 +49,20 @@ foreign import ccall unsafe "kitchen"
-> IO ()
+type Sink2 b = Ptr b
+ -> ByteArray#
+ -> MutableByteArray# RealWorld
+ -> Int
+ -> Int8
+ -> Int16
+ -> Int32
+ -> Word8
+ -> Word16
+ -> Word32
+ -> Float
+ -> Double
+ -> IO ()
+
foreign import ccall unsafe "dynamic"
- sink2 :: Ptr a
- -> (Ptr b
- -> ByteArray#
- -> MutableByteArray# RealWorld
- -> Int
- -> Int8
- -> Int16
- -> Int32
- -> Word8
- -> Word16
- -> Word32
- -> Float
- -> Double
- -> IO ())
+ sink2 :: Ptr (Sink2 b) -> Sink2 b
diff --git a/testsuite/tests/ffi/should_compile/cc005.hs b/testsuite/tests/ffi/should_compile/cc005.hs
index e057cfd233..7086480bfe 100644
--- a/testsuite/tests/ffi/should_compile/cc005.hs
+++ b/testsuite/tests/ffi/should_compile/cc005.hs
@@ -5,7 +5,7 @@ import Foreign.Ptr --import Foreign
--import GlaExts
--import Int
--import Word
-type Addr = Ptr ()
+type Addr = FunPtr (Int -> IO ())
foreign import ccall "wrapper" d8 :: (Int -> IO ()) -> IO Addr
-- exporting functions
diff --git a/testsuite/tests/ffi/should_compile/cc008.hs b/testsuite/tests/ffi/should_compile/cc008.hs
index 2dd0bc99eb..b1581dd20d 100644
--- a/testsuite/tests/ffi/should_compile/cc008.hs
+++ b/testsuite/tests/ffi/should_compile/cc008.hs
@@ -2,7 +2,7 @@
module ShouldCompile where
import Foreign
-type Addr = Ptr ()
+type Addr = FunPtr (IO ())
newtype NPtr a = NPtr Addr
foreign import ccall "wrapper" mkFoo :: IO () -> IO (NPtr Int)
diff --git a/testsuite/tests/ffi/should_compile/cc010.hs b/testsuite/tests/ffi/should_compile/cc010.hs
index dd34730d42..abdf0fc76f 100644
--- a/testsuite/tests/ffi/should_compile/cc010.hs
+++ b/testsuite/tests/ffi/should_compile/cc010.hs
@@ -1,5 +1,5 @@
module ShouldCompile where
import Foreign
-foreign import ccall "dynamic" imp :: Ptr () -> Int
+foreign import ccall "dynamic" imp :: FunPtr Int -> Int
f1 a = imp a + 1
f2 a = imp a + 2
diff --git a/testsuite/tests/ffi/should_fail/T5664.hs b/testsuite/tests/ffi/should_fail/T5664.hs
new file mode 100644
index 0000000000..4966f3abb9
--- /dev/null
+++ b/testsuite/tests/ffi/should_fail/T5664.hs
@@ -0,0 +1,25 @@
+module T5664 where
+
+import Foreign
+import Foreign.C
+
+data D = D
+newtype I = I CInt
+
+foreign import ccall "dynamic"
+ mkFun1 :: FunPtr (CInt -> IO ()) -> CInt -> IO ()
+
+foreign import ccall "dynamic"
+ mkFun2 :: FunPtr (I -> IO ()) -> CInt -> IO ()
+
+foreign import ccall "dynamic"
+ mkFun3 :: FunPtr (D -> IO ()) -> CInt -> IO ()
+
+foreign import ccall "wrapper"
+ mkCallBack1 :: IO CInt -> IO (FunPtr (IO CInt))
+
+foreign import ccall "wrapper"
+ mkCallBack2 :: IO CInt -> IO (FunPtr (IO I))
+
+foreign import ccall "wrapper"
+ mkCallBack3 :: IO CInt -> IO (FunPtr (IO D))
diff --git a/testsuite/tests/ffi/should_fail/T5664.stderr b/testsuite/tests/ffi/should_fail/T5664.stderr
new file mode 100644
index 0000000000..30bd017a1d
--- /dev/null
+++ b/testsuite/tests/ffi/should_fail/T5664.stderr
@@ -0,0 +1,13 @@
+
+T5664.hs:15:1:
+ Unacceptable argument type in foreign declaration:
+ FunPtr (D -> IO ())
+ When checking declaration:
+ foreign import ccall safe "dynamic" mkFun3
+ :: FunPtr (D -> IO ()) -> CInt -> IO ()
+
+T5664.hs:24:1:
+ Unacceptable result type in foreign declaration: IO (FunPtr (IO D))
+ When checking declaration:
+ foreign import ccall safe "wrapper" mkCallBack3
+ :: IO CInt -> IO (FunPtr (IO D))
diff --git a/testsuite/tests/ffi/should_fail/all.T b/testsuite/tests/ffi/should_fail/all.T
index abba1b5f6f..8da27021d8 100644
--- a/testsuite/tests/ffi/should_fail/all.T
+++ b/testsuite/tests/ffi/should_fail/all.T
@@ -8,3 +8,6 @@ test('ccfail003', only_compiler_types(['ghc']), compile_fail, [''])
test('T3066', only_compiler_types(['ghc']), compile_fail, [''])
test('ccfail004', only_compiler_types(['ghc']), multimod_compile_fail, ['ccfail004', '-v0'])
test('ccfail005', only_compiler_types(['ghc']), compile_fail, [''])
+test('ccall_value', normal, compile_fail, [''])
+test('capi_value_function', normal, compile_fail, [''])
+test('T5664', normal, compile_fail, ['-v0'])
diff --git a/testsuite/tests/ffi/should_fail/capi_value_function.hs b/testsuite/tests/ffi/should_fail/capi_value_function.hs
new file mode 100644
index 0000000000..fdd59808f0
--- /dev/null
+++ b/testsuite/tests/ffi/should_fail/capi_value_function.hs
@@ -0,0 +1,9 @@
+
+{-# LANGUAGE CApiFFI #-}
+
+module M where
+
+import Foreign.C
+
+foreign import capi "math.h value sqrt" f :: CInt -> CInt
+
diff --git a/testsuite/tests/ffi/should_fail/capi_value_function.stderr b/testsuite/tests/ffi/should_fail/capi_value_function.stderr
new file mode 100644
index 0000000000..99ffad6ab8
--- /dev/null
+++ b/testsuite/tests/ffi/should_fail/capi_value_function.stderr
@@ -0,0 +1,6 @@
+
+capi_value_function.hs:8:1:
+ `value' imports cannot have function types
+ When checking declaration:
+ foreign import capi safe "static math.h value sqrt" f
+ :: CInt -> CInt
diff --git a/testsuite/tests/ffi/should_fail/ccall_value.hs b/testsuite/tests/ffi/should_fail/ccall_value.hs
new file mode 100644
index 0000000000..2f931f697b
--- /dev/null
+++ b/testsuite/tests/ffi/should_fail/ccall_value.hs
@@ -0,0 +1,12 @@
+
+{-# LANGUAGE CApiFFI #-}
+
+module Main (main) where
+
+import Foreign.C
+
+main :: IO ()
+main = print i
+
+foreign import ccall "ccall_value_c.h value i" i :: CInt
+
diff --git a/testsuite/tests/ffi/should_fail/ccall_value.stderr b/testsuite/tests/ffi/should_fail/ccall_value.stderr
new file mode 100644
index 0000000000..b7e870f0ed
--- /dev/null
+++ b/testsuite/tests/ffi/should_fail/ccall_value.stderr
@@ -0,0 +1,2 @@
+
+ccall_value.hs:11:22: Malformed entity string
diff --git a/testsuite/tests/ffi/should_fail/ccall_value_c.h b/testsuite/tests/ffi/should_fail/ccall_value_c.h
new file mode 100644
index 0000000000..d8ef814216
--- /dev/null
+++ b/testsuite/tests/ffi/should_fail/ccall_value_c.h
@@ -0,0 +1,3 @@
+
+const int i;
+#define j 24
diff --git a/testsuite/tests/ffi/should_fail/ccfail004.stderr b/testsuite/tests/ffi/should_fail/ccfail004.stderr
index cabda4e7d1..cce4258911 100644
--- a/testsuite/tests/ffi/should_fail/ccfail004.stderr
+++ b/testsuite/tests/ffi/should_fail/ccfail004.stderr
@@ -1,4 +1,5 @@
+
ccfail004.hs:9:1:
Unacceptable argument type in foreign declaration: NInt
When checking declaration:
@@ -23,4 +24,3 @@ ccfail004.hs:15:1:
Unacceptable result type in foreign declaration: IO [NT]
When checking declaration:
foreign import ccall safe "static f5" f5 :: IO NT
-
diff --git a/testsuite/tests/ffi/should_run/Capi_Ctype_001.hsc b/testsuite/tests/ffi/should_run/Capi_Ctype_001.hsc
new file mode 100644
index 0000000000..5dd24c3183
--- /dev/null
+++ b/testsuite/tests/ffi/should_run/Capi_Ctype_001.hsc
@@ -0,0 +1,46 @@
+
+{-# LANGUAGE CApiFFI #-}
+
+module Main (main) where
+
+#include "capi_ctype_001.h"
+
+import Capi_Ctype_A_001
+
+import Foreign
+import Foreign.C
+
+main :: IO ()
+main = do alloca $ \p ->
+ do poke p (Foo 5 6 7)
+ r1 <- f p
+ print r1
+ alloca $ \p ->
+ do poke p (Foo 15 16 17)
+ r2 <- g p
+ print r2
+
+data {-# CTYPE "Foo" #-}
+ Foo = Foo {
+ i :: CInt,
+ j :: CInt,
+ k :: CInt
+ }
+
+foreign import capi unsafe "capi_ctype_001.h f"
+ f :: Ptr Foo -> IO CInt
+
+foreign import capi unsafe "capi_ctype_001.h g"
+ g :: Ptr Foo -> IO CInt
+
+instance Storable Foo where
+ sizeOf _ = #size Foo
+ alignment = sizeOf
+ peek p = do i <- (# peek Foo, i) p
+ j <- (# peek Foo, j) p
+ k <- (# peek Foo, k) p
+ return $ Foo i j k
+ poke p foo = do (# poke Foo, i) p (i foo)
+ (# poke Foo, j) p (j foo)
+ (# poke Foo, k) p (k foo)
+
diff --git a/testsuite/tests/ffi/should_run/Capi_Ctype_001.stdout b/testsuite/tests/ffi/should_run/Capi_Ctype_001.stdout
new file mode 100644
index 0000000000..dc3ed24fd6
--- /dev/null
+++ b/testsuite/tests/ffi/should_run/Capi_Ctype_001.stdout
@@ -0,0 +1,2 @@
+6
+16
diff --git a/testsuite/tests/ffi/should_run/Capi_Ctype_002.hs b/testsuite/tests/ffi/should_run/Capi_Ctype_002.hs
new file mode 100644
index 0000000000..4868ee28b7
--- /dev/null
+++ b/testsuite/tests/ffi/should_run/Capi_Ctype_002.hs
@@ -0,0 +1,19 @@
+
+{-# LANGUAGE CApiFFI #-}
+
+module Main (main) where
+
+import Capi_Ctype_A_002
+
+import Foreign
+import Foreign.C
+
+main :: IO ()
+main = alloca $ \p ->
+ do poke p (Foo 5 6 7)
+ r1 <- f p
+ print r1
+
+foreign import capi unsafe "capi_ctype_002_B.h f"
+ f :: Ptr Foo -> IO CInt
+
diff --git a/testsuite/tests/ffi/should_run/Capi_Ctype_002.stdout b/testsuite/tests/ffi/should_run/Capi_Ctype_002.stdout
new file mode 100644
index 0000000000..1e8b314962
--- /dev/null
+++ b/testsuite/tests/ffi/should_run/Capi_Ctype_002.stdout
@@ -0,0 +1 @@
+6
diff --git a/testsuite/tests/ffi/should_run/Capi_Ctype_A_001.hsc b/testsuite/tests/ffi/should_run/Capi_Ctype_A_001.hsc
new file mode 100644
index 0000000000..8b68942db1
--- /dev/null
+++ b/testsuite/tests/ffi/should_run/Capi_Ctype_A_001.hsc
@@ -0,0 +1,27 @@
+
+{-# LANGUAGE CApiFFI #-}
+
+module Capi_Ctype_A_001 where
+
+#include "capi_ctype_001.h"
+
+import Foreign
+import Foreign.C
+
+data FooA = FooA {
+ ia :: CInt,
+ ja :: CInt,
+ ka :: CInt
+ }
+
+instance Storable FooA where
+ sizeOf _ = #size Foo
+ alignment = sizeOf
+ peek p = do i <- (# peek Foo, i) p
+ j <- (# peek Foo, j) p
+ k <- (# peek Foo, k) p
+ return $ FooA i j k
+ poke p foo = do (# poke Foo, i) p (ia foo)
+ (# poke Foo, j) p (ja foo)
+ (# poke Foo, k) p (ka foo)
+
diff --git a/testsuite/tests/ffi/should_run/Capi_Ctype_A_002.hsc b/testsuite/tests/ffi/should_run/Capi_Ctype_A_002.hsc
new file mode 100644
index 0000000000..14da1144b6
--- /dev/null
+++ b/testsuite/tests/ffi/should_run/Capi_Ctype_A_002.hsc
@@ -0,0 +1,28 @@
+
+{-# LANGUAGE CApiFFI #-}
+
+module Capi_Ctype_A_002 (Foo(..)) where
+
+#include "capi_ctype_002_A.h"
+
+import Foreign
+import Foreign.C
+
+data {-# CTYPE "capi_ctype_002_A.h" "Foo" #-}
+ Foo = Foo {
+ i :: CInt,
+ j :: CInt,
+ k :: CInt
+ }
+
+instance Storable Foo where
+ sizeOf _ = #size Foo
+ alignment = sizeOf
+ peek p = do i <- (# peek Foo, i) p
+ j <- (# peek Foo, j) p
+ k <- (# peek Foo, k) p
+ return $ Foo i j k
+ poke p foo = do (# poke Foo, i) p (i foo)
+ (# poke Foo, j) p (j foo)
+ (# poke Foo, k) p (k foo)
+
diff --git a/testsuite/tests/ffi/should_run/Makefile b/testsuite/tests/ffi/should_run/Makefile
index 3981cd2166..80ff28647e 100644
--- a/testsuite/tests/ffi/should_run/Makefile
+++ b/testsuite/tests/ffi/should_run/Makefile
@@ -20,3 +20,21 @@ ffi002_setup :
5594_setup :
'$(TEST_HC)' $(TEST_HC_OPTS) -c 5594.hs
+.PHONY: Capi_Ctype_001
+Capi_Ctype_001:
+ '$(HSC2HS)' Capi_Ctype_A_001.hsc
+ '$(HSC2HS)' Capi_Ctype_001.hsc
+ '$(TEST_HC)' $(TEST_HC_OPTS) -c capi_ctype_001_c.c
+ '$(TEST_HC)' $(TEST_HC_OPTS) -c Capi_Ctype_A_001.hs
+ '$(TEST_HC)' $(TEST_HC_OPTS) -c Capi_Ctype_001.hs
+ '$(TEST_HC)' $(TEST_HC_OPTS) capi_ctype_001_c.o Capi_Ctype_A_001.o Capi_Ctype_001.o -o Capi_Ctype_001
+ ./Capi_Ctype_001
+
+.PHONY: Capi_Ctype_002
+Capi_Ctype_002:
+ '$(HSC2HS)' Capi_Ctype_A_002.hsc
+ '$(TEST_HC)' $(TEST_HC_OPTS) -c Capi_Ctype_A_002.hs
+ '$(TEST_HC)' $(TEST_HC_OPTS) -c Capi_Ctype_002.hs
+ '$(TEST_HC)' $(TEST_HC_OPTS) Capi_Ctype_A_002.o Capi_Ctype_002.o -o Capi_Ctype_002
+ ./Capi_Ctype_002
+
diff --git a/testsuite/tests/ffi/should_run/all.T b/testsuite/tests/ffi/should_run/all.T
index 118a26fb44..30eba8ee0e 100644
--- a/testsuite/tests/ffi/should_run/all.T
+++ b/testsuite/tests/ffi/should_run/all.T
@@ -187,3 +187,27 @@ test('5594', [ omit_ways(['ghci']),
# 5594_stub.h before compiling 5594_c.c, which
# needs it.
compile_and_run, ['5594_c.c -no-hs-main'])
+
+test('Capi_Ctype_001',
+ extra_clean(['Capi_Ctype_A_001.o', 'Capi_Ctype_A_001.hi',
+ 'capi_ctype_001_c.o',
+ 'Capi_Ctype_A_001.hs', 'Capi_Ctype_001.hs']),
+ run_command,
+ ['$MAKE -s --no-print-directory Capi_Ctype_001'])
+
+test('Capi_Ctype_002',
+ extra_clean(['Capi_Ctype_A_002.o', 'Capi_Ctype_A_002.hi',
+ 'Capi_Ctype_A_002.hs']),
+ run_command,
+ ['$MAKE -s --no-print-directory Capi_Ctype_002'])
+
+test('ffi_parsing_001',
+ extra_clean(['ffi_parsing_001_c.o']),
+ compile_and_run,
+ ['ffi_parsing_001_c.c'])
+
+test('capi_value',
+ extra_clean(['capi_value_c.o']),
+ compile_and_run,
+ ['capi_value_c.c'])
+
diff --git a/testsuite/tests/ffi/should_run/capi_ctype_001.h b/testsuite/tests/ffi/should_run/capi_ctype_001.h
new file mode 100644
index 0000000000..11add5bf3d
--- /dev/null
+++ b/testsuite/tests/ffi/should_run/capi_ctype_001.h
@@ -0,0 +1,16 @@
+
+#ifndef __capi_ctype_001_H__
+#define __capi_ctype_001_H__
+
+typedef struct {
+ int i;
+ int j;
+ int k;
+} Foo;
+
+int f(Foo *p);
+
+#define g(p) p->j
+
+#endif
+
diff --git a/testsuite/tests/ffi/should_run/capi_ctype_001_c.c b/testsuite/tests/ffi/should_run/capi_ctype_001_c.c
new file mode 100644
index 0000000000..970ea4be0f
--- /dev/null
+++ b/testsuite/tests/ffi/should_run/capi_ctype_001_c.c
@@ -0,0 +1,7 @@
+
+#include "capi_ctype_001.h"
+
+int f(Foo *p) {
+ return p->j;
+}
+
diff --git a/testsuite/tests/ffi/should_run/capi_ctype_002_A.h b/testsuite/tests/ffi/should_run/capi_ctype_002_A.h
new file mode 100644
index 0000000000..26928a3436
--- /dev/null
+++ b/testsuite/tests/ffi/should_run/capi_ctype_002_A.h
@@ -0,0 +1,12 @@
+
+#ifndef __capi_ctype_002_A_H__
+#define __capi_ctype_002_A_H__
+
+typedef struct {
+ int i;
+ int j;
+ int k;
+} Foo;
+
+#endif
+
diff --git a/testsuite/tests/ffi/should_run/capi_ctype_002_B.h b/testsuite/tests/ffi/should_run/capi_ctype_002_B.h
new file mode 100644
index 0000000000..6928290f47
--- /dev/null
+++ b/testsuite/tests/ffi/should_run/capi_ctype_002_B.h
@@ -0,0 +1,8 @@
+
+#ifndef __capi_ctype_002_B_H__
+#define __capi_ctype_002_B_H__
+
+#define f(p) p->j
+
+#endif
+
diff --git a/testsuite/tests/ffi/should_run/capi_value.hs b/testsuite/tests/ffi/should_run/capi_value.hs
new file mode 100644
index 0000000000..131e97ae26
--- /dev/null
+++ b/testsuite/tests/ffi/should_run/capi_value.hs
@@ -0,0 +1,14 @@
+
+{-# LANGUAGE CApiFFI #-}
+
+module Main (main) where
+
+import Foreign.C
+
+main :: IO ()
+main = do print i
+ print j
+
+foreign import capi "capi_value_c.h value i" i :: CInt
+foreign import capi "capi_value_c.h value j" j :: CInt
+
diff --git a/testsuite/tests/ffi/should_run/capi_value.stdout b/testsuite/tests/ffi/should_run/capi_value.stdout
new file mode 100644
index 0000000000..e120905029
--- /dev/null
+++ b/testsuite/tests/ffi/should_run/capi_value.stdout
@@ -0,0 +1,2 @@
+23
+24
diff --git a/testsuite/tests/ffi/should_run/capi_value_c.c b/testsuite/tests/ffi/should_run/capi_value_c.c
new file mode 100644
index 0000000000..45db07c6a0
--- /dev/null
+++ b/testsuite/tests/ffi/should_run/capi_value_c.c
@@ -0,0 +1,4 @@
+
+#include "capi_value_c.h"
+
+const int i = 23;
diff --git a/testsuite/tests/ffi/should_run/capi_value_c.h b/testsuite/tests/ffi/should_run/capi_value_c.h
new file mode 100644
index 0000000000..d8ef814216
--- /dev/null
+++ b/testsuite/tests/ffi/should_run/capi_value_c.h
@@ -0,0 +1,3 @@
+
+const int i;
+#define j 24
diff --git a/testsuite/tests/ffi/should_run/ffi_parsing_001.hs b/testsuite/tests/ffi/should_run/ffi_parsing_001.hs
new file mode 100644
index 0000000000..a87a82c7d2
--- /dev/null
+++ b/testsuite/tests/ffi/should_run/ffi_parsing_001.hs
@@ -0,0 +1,8 @@
+
+import Foreign.C
+
+-- This should not be parsed as "static foo", importing "foo"
+foreign import ccall "staticfoo" x :: CInt
+
+main :: IO ()
+main = print x
diff --git a/testsuite/tests/ffi/should_run/ffi_parsing_001.stdout b/testsuite/tests/ffi/should_run/ffi_parsing_001.stdout
new file mode 100644
index 0000000000..7ed6ff82de
--- /dev/null
+++ b/testsuite/tests/ffi/should_run/ffi_parsing_001.stdout
@@ -0,0 +1 @@
+5
diff --git a/testsuite/tests/ffi/should_run/ffi_parsing_001_c.c b/testsuite/tests/ffi/should_run/ffi_parsing_001_c.c
new file mode 100644
index 0000000000..56d5048857
--- /dev/null
+++ b/testsuite/tests/ffi/should_run/ffi_parsing_001_c.c
@@ -0,0 +1,8 @@
+
+int staticfoo(void) {
+ return 5;
+}
+
+int foo(void) {
+ return 8;
+}
diff --git a/testsuite/tests/gadt/T3163.stderr b/testsuite/tests/gadt/T3163.stderr
index e60ffcc47c..b93b523441 100644
--- a/testsuite/tests/gadt/T3163.stderr
+++ b/testsuite/tests/gadt/T3163.stderr
@@ -1,5 +1,5 @@
-
-T3163.hs:8:5:
- Illegal polymorphic or qualified type: forall s. s
- In the definition of data constructor `Unreached'
- In the data type declaration for `Taker'
+
+T3163.hs:8:5:
+ Illegal polymorphic or qualified type: forall s. s
+ In the definition of data constructor `Unreached'
+ In the data declaration for `Taker'
diff --git a/testsuite/tests/gadt/T3169.stderr b/testsuite/tests/gadt/T3169.stderr
index 878324caeb..7ca72f9654 100644
--- a/testsuite/tests/gadt/T3169.stderr
+++ b/testsuite/tests/gadt/T3169.stderr
@@ -1,11 +1,28 @@
-
-T3169.hs:13:13:
- Couldn't match type `elt' with `Map b elt'
- `elt' is a rigid type variable bound by
- the type signature for
- lookup :: (a, b) -> Map (a, b) elt -> Maybe elt
- at T3169.hs:12:3
- Expected type: Maybe (Map b elt)
- Actual type: Maybe elt
- In the return type of a call of `lookup'
- In the expression: lookup a m :: Maybe (Map b elt)
+
+T3169.hs:13:22:
+ Could not deduce (Map a ~ MP a b)
+ from the context (Key a, Key b)
+ bound by the instance declaration at T3169.hs:10:10-36
+ Expected type: Map a (Map b elt)
+ Actual type: Map (a, b) elt
+ In the second argument of `lookup', namely `m'
+ In the expression: lookup a m :: Maybe (Map b elt)
+ In the expression:
+ case lookup a m :: Maybe (Map b elt) of {
+ Just (m2 :: Map b elt) -> lookup b m2 :: Maybe elt }
+
+T3169.hs:13:22:
+ Could not deduce (elt ~ Map b elt)
+ from the context (Key a, Key b)
+ bound by the instance declaration at T3169.hs:10:10-36
+ `elt' is a rigid type variable bound by
+ the type signature for
+ lookup :: (a, b) -> Map (a, b) elt -> Maybe elt
+ at T3169.hs:12:3
+ Expected type: Map a (Map b elt)
+ Actual type: Map (a, b) elt
+ In the second argument of `lookup', namely `m'
+ In the expression: lookup a m :: Maybe (Map b elt)
+ In the expression:
+ case lookup a m :: Maybe (Map b elt) of {
+ Just (m2 :: Map b elt) -> lookup b m2 :: Maybe elt }
diff --git a/testsuite/tests/gadt/T3651.stderr b/testsuite/tests/gadt/T3651.stderr
index 283e429737..778fe0febf 100644
--- a/testsuite/tests/gadt/T3651.stderr
+++ b/testsuite/tests/gadt/T3651.stderr
@@ -1,21 +1,35 @@
-
-T3651.hs:11:11:
- Couldn't match type `Bool' with `()'
- Inaccessible code in
- a pattern with constructor U :: Z (), in an equation for `unsafe1'
- In the pattern: U
- In an equation for `unsafe1': unsafe1 B U = ()
-
-T3651.hs:14:11:
- Couldn't match type `Bool' with `()'
- Inaccessible code in
- a pattern with constructor U :: Z (), in an equation for `unsafe2'
- In the pattern: U
- In an equation for `unsafe2': unsafe2 B U = ()
-
-T3651.hs:17:11:
- Couldn't match type `Bool' with `()'
- Inaccessible code in
- a pattern with constructor U :: Z (), in an equation for `unsafe3'
- In the pattern: U
- In an equation for `unsafe3': unsafe3 B U = True
+
+T3651.hs:11:11:
+ Couldn't match type `Bool' with `()'
+ Inaccessible code in
+ a pattern with constructor U :: Z (), in an equation for `unsafe1'
+ In the pattern: U
+ In an equation for `unsafe1': unsafe1 B U = ()
+
+T3651.hs:11:15:
+ Couldn't match type `Bool' with `()'
+ Expected type: a
+ Actual type: ()
+ In the expression: ()
+ In an equation for `unsafe1': unsafe1 B U = ()
+
+T3651.hs:14:11:
+ Couldn't match type `Bool' with `()'
+ Inaccessible code in
+ a pattern with constructor U :: Z (), in an equation for `unsafe2'
+ In the pattern: U
+ In an equation for `unsafe2': unsafe2 B U = ()
+
+T3651.hs:14:15:
+ Couldn't match type `Bool' with `()'
+ Expected type: a
+ Actual type: ()
+ In the expression: ()
+ In an equation for `unsafe2': unsafe2 B U = ()
+
+T3651.hs:17:11:
+ Couldn't match type `Bool' with `()'
+ Inaccessible code in
+ a pattern with constructor U :: Z (), in an equation for `unsafe3'
+ In the pattern: U
+ In an equation for `unsafe3': unsafe3 B U = True
diff --git a/testsuite/tests/gadt/gadt10.stderr b/testsuite/tests/gadt/gadt10.stderr
index 7858f51e8b..00cb063d5d 100644
--- a/testsuite/tests/gadt/gadt10.stderr
+++ b/testsuite/tests/gadt/gadt10.stderr
@@ -1,7 +1,6 @@
-
-gadt10.hs:6:24:
- `RInt' is not applied to enough type arguments
- Expected kind `??', but `RInt' has kind `k0 -> *'
- In the type `RInt'
- In the definition of data constructor `R'
- In the data type declaration for `RInt'
+
+gadt10.hs:6:24:
+ Expecting one more argument to `RInt'
+ In the type `RInt'
+ In the definition of data constructor `R'
+ In the data declaration for `RInt'
diff --git a/testsuite/tests/gadt/gadt11.stderr b/testsuite/tests/gadt/gadt11.stderr
index 721b148495..bfe38d43b3 100644
--- a/testsuite/tests/gadt/gadt11.stderr
+++ b/testsuite/tests/gadt/gadt11.stderr
@@ -1,6 +1,6 @@
-
-gadt11.hs:9:3:
- Data constructor `B1' returns type `X []'
- instead of an instance of its parent type `B a'
- In the definition of data constructor `B1'
- In the data type declaration for `B'
+
+gadt11.hs:9:3:
+ Data constructor `B1' returns type `X []'
+ instead of an instance of its parent type `B a'
+ In the definition of data constructor `B1'
+ In the data declaration for `B'
diff --git a/testsuite/tests/gadt/gadtSyntaxFail001.stderr b/testsuite/tests/gadt/gadtSyntaxFail001.stderr
index 363ad04d5a..aa837b7a89 100644
--- a/testsuite/tests/gadt/gadtSyntaxFail001.stderr
+++ b/testsuite/tests/gadt/gadtSyntaxFail001.stderr
@@ -1,6 +1,6 @@
-
-gadtSyntaxFail001.hs:8:5:
- Data constructor `C2' has existential type variables, a context, or a specialised result type
- (Use -XExistentialQuantification or -XGADTs to allow this)
- In the definition of data constructor `C2'
- In the data type declaration for `Foo'
+
+gadtSyntaxFail001.hs:8:5:
+ Data constructor `C2' has existential type variables, a context, or a specialised result type
+ (Use -XExistentialQuantification or -XGADTs to allow this)
+ In the definition of data constructor `C2'
+ In the data declaration for `Foo'
diff --git a/testsuite/tests/gadt/gadtSyntaxFail002.stderr b/testsuite/tests/gadt/gadtSyntaxFail002.stderr
index c8bdbab224..a2b101a977 100644
--- a/testsuite/tests/gadt/gadtSyntaxFail002.stderr
+++ b/testsuite/tests/gadt/gadtSyntaxFail002.stderr
@@ -1,6 +1,6 @@
-
-gadtSyntaxFail002.hs:8:5:
- Data constructor `C2' has existential type variables, a context, or a specialised result type
- (Use -XExistentialQuantification or -XGADTs to allow this)
- In the definition of data constructor `C2'
- In the data type declaration for `Foo'
+
+gadtSyntaxFail002.hs:8:5:
+ Data constructor `C2' has existential type variables, a context, or a specialised result type
+ (Use -XExistentialQuantification or -XGADTs to allow this)
+ In the definition of data constructor `C2'
+ In the data declaration for `Foo'
diff --git a/testsuite/tests/gadt/gadtSyntaxFail003.stderr b/testsuite/tests/gadt/gadtSyntaxFail003.stderr
index 436bb76ca2..3cd4611cd3 100644
--- a/testsuite/tests/gadt/gadtSyntaxFail003.stderr
+++ b/testsuite/tests/gadt/gadtSyntaxFail003.stderr
@@ -1,6 +1,6 @@
-
-gadtSyntaxFail003.hs:7:5:
- Data constructor `C1' has existential type variables, a context, or a specialised result type
- (Use -XExistentialQuantification or -XGADTs to allow this)
- In the definition of data constructor `C1'
- In the data type declaration for `Foo'
+
+gadtSyntaxFail003.hs:7:5:
+ Data constructor `C1' has existential type variables, a context, or a specialised result type
+ (Use -XExistentialQuantification or -XGADTs to allow this)
+ In the definition of data constructor `C1'
+ In the data declaration for `Foo'
diff --git a/testsuite/tests/gadt/records-fail1.stderr b/testsuite/tests/gadt/records-fail1.stderr
index 0ef628b5a6..829114e51f 100644
--- a/testsuite/tests/gadt/records-fail1.stderr
+++ b/testsuite/tests/gadt/records-fail1.stderr
@@ -1,5 +1,5 @@
-
-records-fail1.hs:7:1:
- Constructors T1 and T4 have a common field `x',
- but have different result types
- In the data type declaration for `T'
+
+records-fail1.hs:7:1:
+ Constructors T1 and T4 have a common field `x',
+ but have different result types
+ In the data declaration for `T'
diff --git a/testsuite/tests/gadt/rw.stderr b/testsuite/tests/gadt/rw.stderr
index 612c809fb8..418afad692 100644
--- a/testsuite/tests/gadt/rw.stderr
+++ b/testsuite/tests/gadt/rw.stderr
@@ -1,20 +1,20 @@
-
-rw.hs:14:42:
- Couldn't match type `a' with `Int'
- `a' is a rigid type variable bound by
- the type signature for writeInt :: T a -> IORef a -> IO ()
- at rw.hs:13:1
- Expected type: IORef Int
- Actual type: IORef a
- In the first argument of `writeIORef', namely `ref'
- In the expression: writeIORef ref (1 :: Int)
-
-rw.hs:19:34:
- Couldn't match type `a' with `Bool'
- `a' is a rigid type variable bound by
- the type signature for readBool :: T a -> IORef a -> IO ()
- at rw.hs:17:1
- Expected type: IORef Bool
- Actual type: IORef a
- In the first argument of `readIORef', namely `ref'
- In the first argument of `(>>=)', namely `readIORef ref'
+
+rw.hs:14:47:
+ Couldn't match expected type `a' with actual type `Int'
+ `a' is a rigid type variable bound by
+ the type signature for writeInt :: T a -> IORef a -> IO ()
+ at rw.hs:12:12
+ In the second argument of `writeIORef', namely `(1 :: Int)'
+ In the expression: writeIORef ref (1 :: Int)
+ In a case alternative: ~(Li x) -> writeIORef ref (1 :: Int)
+
+rw.hs:19:51:
+ Couldn't match type `a' with `Bool'
+ `a' is a rigid type variable bound by
+ the type signature for readBool :: T a -> IORef a -> IO ()
+ at rw.hs:16:12
+ Expected type: a -> Bool
+ Actual type: Bool -> Bool
+ In the second argument of `(.)', namely `not'
+ In the second argument of `(>>=)', namely `(print . not)'
+ In the expression: readIORef ref >>= (print . not)
diff --git a/testsuite/tests/generics/GenCannotDoRep0.stderr b/testsuite/tests/generics/GenCannotDoRep0.stderr
index b5d2f01381..a12602d861 100644
--- a/testsuite/tests/generics/GenCannotDoRep0.stderr
+++ b/testsuite/tests/generics/GenCannotDoRep0.stderr
@@ -1,5 +1,5 @@
-
-GenCannotDoRep0.hs:9:45:
- Can't make a derived instance of `Generic Dynamic':
- Dynamic must be a vanilla data constructor
- In the data type declaration for `Dynamic'
+
+GenCannotDoRep0.hs:9:45:
+ Can't make a derived instance of `Generic Dynamic':
+ Dynamic must be a vanilla data constructor
+ In the data declaration for `Dynamic'
diff --git a/testsuite/tests/generics/GenCannotDoRep1.stderr b/testsuite/tests/generics/GenCannotDoRep1.stderr
index 477a2955ce..dde1d5b0d8 100644
--- a/testsuite/tests/generics/GenCannotDoRep1.stderr
+++ b/testsuite/tests/generics/GenCannotDoRep1.stderr
@@ -1,8 +1,8 @@
-
-GenCannotDoRep1.hs:1:29:
- Warning: -XDatatypeContexts is deprecated: It was widely considered a misfeature, and has been removed from the Haskell language.
-
-GenCannotDoRep1.hs:8:49:
- Can't make a derived instance of `Generic (Context a)':
- Context must not have a datatype context
- In the data type declaration for `Context'
+
+GenCannotDoRep1.hs:1:29: Warning:
+ -XDatatypeContexts is deprecated: It was widely considered a misfeature, and has been removed from the Haskell language.
+
+GenCannotDoRep1.hs:8:49:
+ Can't make a derived instance of `Generic (Context a)':
+ Context must not have a datatype context
+ In the data declaration for `Context'
diff --git a/testsuite/tests/generics/GenDerivOutput.stderr b/testsuite/tests/generics/GenDerivOutput.stderr
index 011c43042f..b703b47768 100644
--- a/testsuite/tests/generics/GenDerivOutput.stderr
+++ b/testsuite/tests/generics/GenDerivOutput.stderr
@@ -48,18 +48,17 @@ Generic representation:
GenDerivOutput.S1_1_1List
Representation types:
- GenDerivOutput.Rep_List = GHC.Generics.D1
- GenDerivOutput.D1List
- (GHC.Generics.C1 GenDerivOutput.C1_0List GHC.Generics.U1
- GHC.Generics.:+: GHC.Generics.C1
- GenDerivOutput.C1_1List
- (GHC.Generics.S1
- GenDerivOutput.S1_1_0List
- (GHC.Generics.Par0 a)
- GHC.Generics.:*: GHC.Generics.S1
- GenDerivOutput.S1_1_1List
- (GHC.Generics.Rec0
- (GenDerivOutput.List
- a))))
-
-
+ type GHC.Generics.Rep (GenDerivOutput.List a) = GHC.Generics.D1
+ GenDerivOutput.D1List
+ (GHC.Generics.C1
+ GenDerivOutput.C1_0List GHC.Generics.U1
+ GHC.Generics.:+: GHC.Generics.C1
+ GenDerivOutput.C1_1List
+ (GHC.Generics.S1
+ GenDerivOutput.S1_1_0List
+ (GHC.Generics.Par0 a)
+ GHC.Generics.:*: GHC.Generics.S1
+ GenDerivOutput.S1_1_1List
+ (GHC.Generics.Rec0
+ (GenDerivOutput.List
+ a))))
diff --git a/testsuite/tests/ghc-api/apirecomp001/apirecomp001.stderr b/testsuite/tests/ghc-api/apirecomp001/apirecomp001.stderr
index 03de4311cb..920a10a79e 100644
--- a/testsuite/tests/ghc-api/apirecomp001/apirecomp001.stderr
+++ b/testsuite/tests/ghc-api/apirecomp001/apirecomp001.stderr
@@ -1,32 +1,32 @@
-B.hs:4:1:
- Warning: Top-level binding with no type signature:
- answer_to_live_the_universe_and_everything :: Int
+B.hs:4:1: Warning:
+ Top-level binding with no type signature:
+ answer_to_live_the_universe_and_everything :: Int
-B.hs:5:12:
- Warning: Defaulting the following constraint(s) to type `Integer'
- (Enum a0)
- arising from the arithmetic sequence `1 .. 23 * 2' at B.hs:5:12-20
- (Num a0) arising from the literal `2' at B.hs:5:19
+B.hs:5:12: Warning:
+ Defaulting the following constraint(s) to type `Integer'
+ (Enum a0)
+ arising from the arithmetic sequence `1 .. 23 * 2' at B.hs:5:12-20
+ (Num a0) arising from the literal `1' at B.hs:5:13
In the first argument of `length', namely `[1 .. 23 * 2]'
In the first argument of `(-)', namely `length [1 .. 23 * 2]'
In the expression: length [1 .. 23 * 2] - 4
-A.hs:7:1:
- Warning: Top-level binding with no type signature: main :: IO ()
+A.hs:7:1: Warning:
+ Top-level binding with no type signature: main :: IO ()
-B.hs:4:1:
- Warning: Top-level binding with no type signature:
- answer_to_live_the_universe_and_everything :: Int
+B.hs:4:1: Warning:
+ Top-level binding with no type signature:
+ answer_to_live_the_universe_and_everything :: Int
-B.hs:5:12:
- Warning: Defaulting the following constraint(s) to type `Integer'
- (Enum a0)
- arising from the arithmetic sequence `1 .. 23 * 2' at B.hs:5:12-20
- (Num a0) arising from the literal `2' at B.hs:5:19
+B.hs:5:12: Warning:
+ Defaulting the following constraint(s) to type `Integer'
+ (Enum a0)
+ arising from the arithmetic sequence `1 .. 23 * 2' at B.hs:5:12-20
+ (Num a0) arising from the literal `1' at B.hs:5:13
In the first argument of `length', namely `[1 .. 23 * 2]'
In the first argument of `(-)', namely `length [1 .. 23 * 2]'
In the expression: length [1 .. 23 * 2] - 4
-A.hs:7:1:
- Warning: Top-level binding with no type signature: main :: IO ()
+A.hs:7:1: Warning:
+ Top-level binding with no type signature: main :: IO ()
diff --git a/testsuite/tests/ghc-api/apirecomp001/myghc.hs b/testsuite/tests/ghc-api/apirecomp001/myghc.hs
index 79b02f8b86..39545c937d 100644
--- a/testsuite/tests/ghc-api/apirecomp001/myghc.hs
+++ b/testsuite/tests/ghc-api/apirecomp001/myghc.hs
@@ -40,7 +40,7 @@ main = do
-- set context to module "A"
mg <- getModuleGraph
- let [mod] = [ ms_mod m | m <- mg, moduleNameString (ms_mod_name m) == "A" ]
+ let [mod] = [ ms_mod_name m | m <- mg, moduleNameString (ms_mod_name m) == "A" ]
setContext [IIModule mod]
liftIO $ hFlush stdout -- make sure things above are printed before
-- interactive output
diff --git a/testsuite/tests/ghci.debugger/scripts/break003.stderr b/testsuite/tests/ghci.debugger/scripts/break003.stderr
index f5944094e7..36c125babf 100644
--- a/testsuite/tests/ghci.debugger/scripts/break003.stderr
+++ b/testsuite/tests/ghci.debugger/scripts/break003.stderr
@@ -1,6 +1,5 @@
<interactive>:5:1:
- No instance for (Show (t -> a))
- arising from a use of `print'
+ No instance for (Show (t -> a)) arising from a use of `print'
Possible fix: add an instance declaration for (Show (t -> a))
In a stmt of an interactive GHCi command: print it
diff --git a/testsuite/tests/ghci.debugger/scripts/break006.stderr b/testsuite/tests/ghci.debugger/scripts/break006.stderr
index 40bb7861e0..6ebe46bb85 100644
--- a/testsuite/tests/ghci.debugger/scripts/break006.stderr
+++ b/testsuite/tests/ghci.debugger/scripts/break006.stderr
@@ -1,14 +1,22 @@
<interactive>:6:1:
- Ambiguous type variable `a' in the constraint:
- (Show a) arising from a use of `print'
- Cannot resolve unknown runtime types: a
+ No instance for (Show a) arising from a use of `print'
+ Cannot resolve unknown runtime type `a'
Use :print or :force to determine these types
+ Note: there are several potential instances:
+ instance Show Double -- Defined in `GHC.Float'
+ instance Show Float -- Defined in `GHC.Float'
+ instance Show () -- Defined in `GHC.Show'
+ ...plus 24 others
In a stmt of an interactive GHCi command: print it
<interactive>:8:1:
- Ambiguous type variable `a' in the constraint:
- (Show a) arising from a use of `print'
- Cannot resolve unknown runtime types: a
+ No instance for (Show a) arising from a use of `print'
+ Cannot resolve unknown runtime type `a'
Use :print or :force to determine these types
+ Note: there are several potential instances:
+ instance Show Double -- Defined in `GHC.Float'
+ instance Show Float -- Defined in `GHC.Float'
+ instance Show () -- Defined in `GHC.Show'
+ ...plus 24 others
In a stmt of an interactive GHCi command: print it
diff --git a/testsuite/tests/ghci.debugger/scripts/break007.stdout b/testsuite/tests/ghci.debugger/scripts/break007.stdout
index e692d2048f..44088454d0 100644
--- a/testsuite/tests/ghci.debugger/scripts/break007.stdout
+++ b/testsuite/tests/ghci.debugger/scripts/break007.stdout
@@ -1 +1 @@
-No breakpoints found at that location.
+No modules are loaded with debugging support.
diff --git a/testsuite/tests/ghci.debugger/scripts/break018.stderr b/testsuite/tests/ghci.debugger/scripts/break018.stderr
index 0107b5880f..d0bb1e0d0a 100644
--- a/testsuite/tests/ghci.debugger/scripts/break018.stderr
+++ b/testsuite/tests/ghci.debugger/scripts/break018.stderr
@@ -1,3 +1,3 @@
-
-<no location info>:
- Warning: -XRecursiveDo is deprecated: use -XDoRec or pragma {-# LANGUAGE DoRec #-} instead
+
+<no location info>: Warning:
+ -XRecursiveDo is deprecated: use -XDoRec or pragma {-# LANGUAGE DoRec #-} instead
diff --git a/testsuite/tests/ghci.debugger/scripts/dynbrk004.stderr b/testsuite/tests/ghci.debugger/scripts/dynbrk004.stderr
index 0107b5880f..d0bb1e0d0a 100644
--- a/testsuite/tests/ghci.debugger/scripts/dynbrk004.stderr
+++ b/testsuite/tests/ghci.debugger/scripts/dynbrk004.stderr
@@ -1,3 +1,3 @@
-
-<no location info>:
- Warning: -XRecursiveDo is deprecated: use -XDoRec or pragma {-# LANGUAGE DoRec #-} instead
+
+<no location info>: Warning:
+ -XRecursiveDo is deprecated: use -XDoRec or pragma {-# LANGUAGE DoRec #-} instead
diff --git a/testsuite/tests/ghci.debugger/scripts/print006.stdout b/testsuite/tests/ghci.debugger/scripts/print006.stdout
index 1cf7de8a8e..72a0328b2f 100644
--- a/testsuite/tests/ghci.debugger/scripts/print006.stdout
+++ b/testsuite/tests/ghci.debugger/scripts/print006.stdout
@@ -2,7 +2,7 @@ t = O (_t1::a)
()
t = O ((_t2::a1) : (_t3::[a1]))
()
-t = O ((_t4::a2) : (_t5::a2) : (_t6::[a2]))
+t = O ((_t4::a1) : (_t5::a1) : (_t6::[a1]))
()
t = O ((_t7::Maybe [Integer]) : Just [2,2] :
(_t8::[Maybe [Integer]]))
diff --git a/testsuite/tests/ghci.debugger/scripts/print007.stderr b/testsuite/tests/ghci.debugger/scripts/print007.stderr
index 713c629818..d298a59365 100644
--- a/testsuite/tests/ghci.debugger/scripts/print007.stderr
+++ b/testsuite/tests/ghci.debugger/scripts/print007.stderr
@@ -1,3 +1,3 @@
-<no location info>:
- Warning: -O conflicts with --interactive; -O ignored.
+<no location info>: Warning:
+ -O conflicts with --interactive; -O ignored.
diff --git a/testsuite/tests/ghci.debugger/scripts/print019.stderr b/testsuite/tests/ghci.debugger/scripts/print019.stderr
index 5cc34662fe..091cf6602d 100644
--- a/testsuite/tests/ghci.debugger/scripts/print019.stderr
+++ b/testsuite/tests/ghci.debugger/scripts/print019.stderr
@@ -1,7 +1,11 @@
<interactive>:11:1:
- Ambiguous type variable `a1' in the constraint:
- (Show a1) arising from a use of `print'
- Cannot resolve unknown runtime types: a1
+ No instance for (Show a1) arising from a use of `print'
+ Cannot resolve unknown runtime type `a1'
Use :print or :force to determine these types
+ Note: there are several potential instances:
+ instance Show a => Show (List1 a) -- Defined at ../Test.hs:11:12
+ instance Show MyInt -- Defined at ../Test.hs:14:16
+ instance Show a => Show (MkT a) -- Defined at ../Test.hs:17:13
+ ...plus 32 others
In a stmt of an interactive GHCi command: print it
diff --git a/testsuite/tests/ghci/linking/Makefile b/testsuite/tests/ghci/linking/Makefile
index 0f5b1ed185..4791712eb7 100644
--- a/testsuite/tests/ghci/linking/Makefile
+++ b/testsuite/tests/ghci/linking/Makefile
@@ -12,7 +12,7 @@ ghcilink001 :
$(RM) -rf dir001
mkdir dir001
"$(TEST_HC)" -c f.c -o dir001/foo.o
- ar cqs dir001/libfoo.a dir001/foo.o
+ $(AR) cqs dir001/libfoo.a dir001/foo.o
echo "test" | "$(TEST_HC)" --interactive -ignore-dot-ghci -v0 -Ldir001 -lfoo TestLink.hs
# Test 2: ghci -Ldir -lfoo
@@ -66,7 +66,7 @@ ghcilink004 :
'$(GHC_PKG)' --no-user-package-conf -f $(LOCAL_PKGCONF004) register $(PKG004) -v0
#
"$(TEST_HC)" -c f.c -o dir004/foo.o
- ar cqs dir004/libfoo.a dir004/foo.o
+ $(AR) cqs dir004/libfoo.a dir004/foo.o
echo "test" | "$(TEST_HC)" --interactive -ignore-dot-ghci -v0 -package-conf $(LOCAL_PKGCONF004) -package test TestLink.hs
diff --git a/testsuite/tests/ghci/linking/all.T b/testsuite/tests/ghci/linking/all.T
index 79fa9a3470..04285168d0 100644
--- a/testsuite/tests/ghci/linking/all.T
+++ b/testsuite/tests/ghci/linking/all.T
@@ -1,7 +1,5 @@
test('ghcilink001',
- [ if_os('mingw32', skip), # crashes; see #5371
- extra_clean(['dir001/*','dir001'])
- ],
+ extra_clean(['dir001/*','dir001']),
run_command,
['$MAKE -s --no-print-directory ghcilink001'])
@@ -20,9 +18,7 @@ test('ghcilink003',
['$MAKE -s --no-print-directory ghcilink003'])
test('ghcilink004',
- [ if_os('mingw32', skip), # crashes; see #5371
- extra_clean(['dir004/*','dir004'])
- ],
+ extra_clean(['dir004/*','dir004']),
run_command,
['$MAKE -s --no-print-directory ghcilink004'])
diff --git a/testsuite/tests/ghci/scripts/Defer02.script b/testsuite/tests/ghci/scripts/Defer02.script
new file mode 100755
index 0000000000..3fc6aff5b0
--- /dev/null
+++ b/testsuite/tests/ghci/scripts/Defer02.script
@@ -0,0 +1,14 @@
+-- Test -fwarn-type-errors
+-- This test shows how each error is printed at runtime
+:l ../../typecheck/should_run/Defer01
+t5624
+print a
+print (b B)
+print (c (C2 True))
+print (d ())
+print f
+print (h ())
+print (i ())
+print j
+print (k 2)
+l \ No newline at end of file
diff --git a/testsuite/tests/ghci/scripts/Defer02.stderr b/testsuite/tests/ghci/scripts/Defer02.stderr
new file mode 100644
index 0000000000..005e85cb5f
--- /dev/null
+++ b/testsuite/tests/ghci/scripts/Defer02.stderr
@@ -0,0 +1,91 @@
+
+../../typecheck/should_run/Defer01.hs:11:40: Warning:
+ Couldn't match type `Char' with `[Char]'
+ Expected type: String
+ Actual type: Char
+ In the first argument of `putStr', namely ','
+ In the second argument of `(>>)', namely putStr ','
+ In the expression: putStr "Hello World" >> putStr ','
+
+../../typecheck/should_run/Defer01.hs:14:5: Warning:
+ Couldn't match expected type `Int' with actual type `Char'
+ In the expression: 'p'
+ In an equation for `a': a = 'p'
+
+../../typecheck/should_run/Defer01.hs:18:9: Warning:
+ No instance for (Eq B) arising from a use of `=='
+ Possible fix: add an instance declaration for (Eq B)
+ In the expression: x == x
+ In an equation for `b': b x = x == x
+
+../../typecheck/should_run/Defer01.hs:28:5: Warning:
+ No instance for (Num (a -> a)) arising from the literal `1'
+ Possible fix: add an instance declaration for (Num (a -> a))
+ In the expression: 1
+ In an equation for `d': d = 1
+
+../../typecheck/should_run/Defer01.hs:31:5: Warning:
+ Couldn't match expected type `Char -> t' with actual type `Char'
+ The function `e' is applied to one argument,
+ but its type `Char' has none
+ In the expression: e 'q'
+ In an equation for `f': f = e 'q'
+
+../../typecheck/should_run/Defer01.hs:34:8: Warning:
+ Couldn't match expected type `a' with actual type `Char'
+ `a' is a rigid type variable bound by
+ the type signature for h :: a -> (Char, Char)
+ at ../../typecheck/should_run/Defer01.hs:33:6
+ In the expression: x
+ In the expression: (x, 'c')
+ In an equation for `h': h x = (x, 'c')
+
+../../typecheck/should_run/Defer01.hs:39:17: Warning:
+ Couldn't match expected type `Bool' with actual type `T a'
+ In the return type of a call of `K'
+ In the first argument of `not', namely `(K a)'
+ In the expression: (not (K a))
+
+../../typecheck/should_run/Defer01.hs:43:5: Warning:
+ No instance for (MyClass a1) arising from a use of `myOp'
+ In the expression: myOp 23
+ In an equation for `j': j = myOp 23
+
+../../typecheck/should_run/Defer01.hs:43:10: Warning:
+ No instance for (Num a1) arising from the literal `23'
+ The type variable `a1' is ambiguous
+ Possible fix: add a type signature that fixes these type variable(s)
+ Note: there are several potential instances:
+ instance Num Double -- Defined in `GHC.Float'
+ instance Num Float -- Defined in `GHC.Float'
+ instance Num Int -- Defined in `GHC.Num'
+ ...plus one other
+ In the first argument of `myOp', namely `23'
+ In the expression: myOp 23
+ In an equation for `j': j = myOp 23
+
+../../typecheck/should_run/Defer01.hs:46:7: Warning:
+ Couldn't match expected type `Bool' with actual type `Int'
+ In the expression: x
+ In an equation for `k': k x = x
+
+../../typecheck/should_run/Defer01.hs:49:5: Warning:
+ Couldn't match expected type `IO a0'
+ with actual type `Char -> IO ()'
+ In the first argument of `(>>)', namely `putChar'
+ In the expression: putChar >> putChar 'p'
+ In an equation for `l': l = putChar >> putChar 'p'
+
+<interactive>:8:11:
+ Couldn't match type `Bool' with `Int'
+ Expected type: C Int
+ Actual type: C Bool
+ In the return type of a call of `C2'
+ In the first argument of `c', namely `(C2 True)'
+ In the first argument of `print', namely `(c (C2 True))'
+
+<interactive>:14:8:
+ Couldn't match expected type `Bool' with actual type `Int'
+ In the first argument of `print', namely `(k 2)'
+ In the expression: print (k 2)
+ In an equation for `it': it = print (k 2)
diff --git a/testsuite/tests/ghci/scripts/Defer02.stdout b/testsuite/tests/ghci/scripts/Defer02.stdout
new file mode 100644
index 0000000000..32e51d6d65
--- /dev/null
+++ b/testsuite/tests/ghci/scripts/Defer02.stdout
@@ -0,0 +1,59 @@
+Hello World*** Exception: ../../typecheck/should_run/Defer01.hs:11:40:
+ Couldn't match type `Char' with `[Char]'
+ Expected type: String
+ Actual type: Char
+ In the first argument of `putStr', namely ','
+ In the second argument of `(>>)', namely putStr ','
+ In the expression: putStr "Hello World" >> putStr ','
+(deferred type error)
+*** Exception: ../../typecheck/should_run/Defer01.hs:14:5:
+ Couldn't match expected type `Int' with actual type `Char'
+ In the expression: 'p'
+ In an equation for `a': a = 'p'
+(deferred type error)
+*** Exception: ../../typecheck/should_run/Defer01.hs:18:9:
+ No instance for (Eq B) arising from a use of `=='
+ Possible fix: add an instance declaration for (Eq B)
+ In the expression: x == x
+ In an equation for `b': b x = x == x
+(deferred type error)
+*** Exception: ../../typecheck/should_run/Defer01.hs:28:5:
+ No instance for (Num (a -> a)) arising from the literal `1'
+ Possible fix: add an instance declaration for (Num (a -> a))
+ In the expression: 1
+ In an equation for `d': d = 1
+(deferred type error)
+*** Exception: ../../typecheck/should_run/Defer01.hs:31:5:
+ Couldn't match expected type `Char -> t' with actual type `Char'
+ The function `e' is applied to one argument,
+ but its type `Char' has none
+ In the expression: e 'q'
+ In an equation for `f': f = e 'q'
+(deferred type error)
+(*** Exception: ../../typecheck/should_run/Defer01.hs:34:8:
+ Couldn't match expected type `a' with actual type `Char'
+ `a' is a rigid type variable bound by
+ the type signature for h :: a -> (Char, Char)
+ at ../../typecheck/should_run/Defer01.hs:33:6
+ In the expression: x
+ In the expression: (x, 'c')
+ In an equation for `h': h x = (x, 'c')
+(deferred type error)
+*** Exception: ../../typecheck/should_run/Defer01.hs:39:17:
+ Couldn't match expected type `Bool' with actual type `T a'
+ In the return type of a call of `K'
+ In the first argument of `not', namely `(K a)'
+ In the expression: (not (K a))
+(deferred type error)
+"*** Exception: ../../typecheck/should_run/Defer01.hs:43:5:
+ No instance for (MyClass a1) arising from a use of `myOp'
+ In the expression: myOp 23
+ In an equation for `j': j = myOp 23
+(deferred type error)
+*** Exception: ../../typecheck/should_run/Defer01.hs:49:5:
+ Couldn't match expected type `IO a0'
+ with actual type `Char -> IO ()'
+ In the first argument of `(>>)', namely `putChar'
+ In the expression: putChar >> putChar 'p'
+ In an equation for `l': l = putChar >> putChar 'p'
+(deferred type error)
diff --git a/testsuite/tests/ghci/scripts/Makefile b/testsuite/tests/ghci/scripts/Makefile
index 03d9fc4723..1fe702567f 100644
--- a/testsuite/tests/ghci/scripts/Makefile
+++ b/testsuite/tests/ghci/scripts/Makefile
@@ -5,16 +5,17 @@ include $(TOP)/mk/test.mk
ghci024:
@echo "~~~~~~~~~~ Testing :set"
printf ":set\n" \
+ | '$(TEST_HC)' $(TEST_HC_OPTS) --interactive -v0 -ignore-dot-ghci
+ @echo "~~~~~~~~~~ Testing :set -a"
+ printf ":set -a\n" \
| '$(TEST_HC)' $(TEST_HC_OPTS) --interactive -v0 -ignore-dot-ghci \
| grep -E "^([^ ]| -fno-print-explicit-foralls| -fno-warn-implicit-prelude)"
@echo "~~~~~~~~~~ Testing :show languages"
printf ":show languages\n" \
- | '$(TEST_HC)' $(TEST_HC_OPTS) --interactive -v0 -ignore-dot-ghci \
- | grep -E "^([^ ]| -XImplicitPrelude| -XMagicHash)"
+ | '$(TEST_HC)' $(TEST_HC_OPTS) --interactive -v0 -ignore-dot-ghci
@echo "~~~~~~~~~~ Testing :show languages, with -XMagicHash"
printf ":set -XMagicHash\n:show languages\n" \
- | '$(TEST_HC)' $(TEST_HC_OPTS) --interactive -v0 -ignore-dot-ghci \
- | grep -E "^([^ ]| -XImplicitPrelude| -XMagicHash)"
+ | '$(TEST_HC)' $(TEST_HC_OPTS) --interactive -v0 -ignore-dot-ghci
@echo "~~~~~~~~~~ Testing :show packages"
printf ":show packages\n" \
| '$(TEST_HC)' $(TEST_HC_OPTS) --interactive -v0 -ignore-dot-ghci \
diff --git a/testsuite/tests/ghci/scripts/T2766.script b/testsuite/tests/ghci/scripts/T2766.script
index 87e9bb3918..84b83461b7 100644
--- a/testsuite/tests/ghci/scripts/T2766.script
+++ b/testsuite/tests/ghci/scripts/T2766.script
@@ -1,4 +1,6 @@
-- Test Trac #2766
:set -XTypeOperators
:m Control.Arrow
-:t first :: Arrow (~>) => b~>c -> (b, d)~>(c, d)
+:t first :: Arrow to => b `to` c -> (b, d) `to` (c, d)
+type a ~> b = a -> b
+:t first :: b~>c -> (b, d)~>(c, d)
diff --git a/testsuite/tests/ghci/scripts/T2766.stdout b/testsuite/tests/ghci/scripts/T2766.stdout
index abe1ca2c95..f8ee42ff6a 100644
--- a/testsuite/tests/ghci/scripts/T2766.stdout
+++ b/testsuite/tests/ghci/scripts/T2766.stdout
@@ -1,2 +1,3 @@
-first :: Arrow (~>) => b~>c -> (b, d)~>(c, d)
- :: Arrow (~>) => (~>) b c -> (~>) (b, d) (c, d)
+first :: Arrow to => b `to` c -> (b, d) `to` (c, d)
+ :: Arrow to => to b c -> to (b, d) (c, d)
+first :: b~>c -> (b, d)~>(c, d) :: (b ~> c) -> (b, d) ~> (c, d)
diff --git a/testsuite/tests/ghci/scripts/T3263.stderr b/testsuite/tests/ghci/scripts/T3263.stderr
index a7924e4b7f..b8c47887e4 100644
--- a/testsuite/tests/ghci/scripts/T3263.stderr
+++ b/testsuite/tests/ghci/scripts/T3263.stderr
@@ -1,5 +1,5 @@
-T3263.hs:8:12:
- Warning: A do-notation statement discarded a result of type Char.
- Suppress this warning by saying "_ <- getChar",
- or by using the flag -fno-warn-unused-do-bind
+T3263.hs:8:12: Warning:
+ A do-notation statement discarded a result of type Char.
+ Suppress this warning by saying "_ <- getChar",
+ or by using the flag -fno-warn-unused-do-bind
diff --git a/testsuite/tests/ghci/scripts/T5130.stderr b/testsuite/tests/ghci/scripts/T5130.stderr
index b68777e594..3c31593991 100644
--- a/testsuite/tests/ghci/scripts/T5130.stderr
+++ b/testsuite/tests/ghci/scripts/T5130.stderr
@@ -1,6 +1,6 @@
<interactive>:3:27:
- Couldn't match type `a' with `[Char]'
+ Couldn't match expected type `a' with actual type `[Char]'
In the expression: "hi"
In the expression: [x, "hi"]
In the expression: (\ (x :: a, y :: a) -> [x, "hi"])
diff --git a/testsuite/tests/ghci/scripts/T5820.hs b/testsuite/tests/ghci/scripts/T5820.hs
new file mode 100644
index 0000000000..99d36e5fc2
--- /dev/null
+++ b/testsuite/tests/ghci/scripts/T5820.hs
@@ -0,0 +1,3 @@
+module T5820 where
+data Foo = Foo
+instance Eq Foo
diff --git a/testsuite/tests/ghci/scripts/T5820.script b/testsuite/tests/ghci/scripts/T5820.script
new file mode 100644
index 0000000000..e1a0bd10af
--- /dev/null
+++ b/testsuite/tests/ghci/scripts/T5820.script
@@ -0,0 +1,4 @@
+:l T5820
+:i Foo
+data T = T
+:i Foo
diff --git a/testsuite/tests/ghci/scripts/T5820.stdout b/testsuite/tests/ghci/scripts/T5820.stdout
new file mode 100644
index 0000000000..4102b1f987
--- /dev/null
+++ b/testsuite/tests/ghci/scripts/T5820.stdout
@@ -0,0 +1,4 @@
+data Foo = Foo -- Defined at T5820.hs:2:6
+instance Eq Foo -- Defined at T5820.hs:3:10
+data Foo = Foo -- Defined at T5820.hs:2:6
+instance Eq Foo -- Defined at T5820.hs:3:10
diff --git a/testsuite/tests/ghci/scripts/T5836.script b/testsuite/tests/ghci/scripts/T5836.script
new file mode 100644
index 0000000000..a3ef3ce6a1
--- /dev/null
+++ b/testsuite/tests/ghci/scripts/T5836.script
@@ -0,0 +1 @@
+import Does.Not.Exist
diff --git a/testsuite/tests/ghci/scripts/T5836.stderr b/testsuite/tests/ghci/scripts/T5836.stderr
new file mode 100644
index 0000000000..9b0cfc65eb
--- /dev/null
+++ b/testsuite/tests/ghci/scripts/T5836.stderr
@@ -0,0 +1,4 @@
+
+<no location info>:
+ Could not find module `Does.Not.Exist'
+ It is not a module in the current program, or in any known package.
diff --git a/testsuite/tests/ghci/scripts/T5975a.script b/testsuite/tests/ghci/scripts/T5975a.script
new file mode 100644
index 0000000000..ea0d64948b
--- /dev/null
+++ b/testsuite/tests/ghci/scripts/T5975a.script
@@ -0,0 +1 @@
+:load föøbàr.hs
diff --git a/testsuite/tests/lib/IO/misc001.stdout b/testsuite/tests/ghci/scripts/T5975b.script
index e69de29bb2..e69de29bb2 100644
--- a/testsuite/tests/lib/IO/misc001.stdout
+++ b/testsuite/tests/ghci/scripts/T5975b.script
diff --git a/testsuite/tests/ghci/scripts/T5979.script b/testsuite/tests/ghci/scripts/T5979.script
new file mode 100644
index 0000000000..a233d3dac4
--- /dev/null
+++ b/testsuite/tests/ghci/scripts/T5979.script
@@ -0,0 +1,4 @@
+:set -XPackageImports
+import "nonexisting" Control.Monad.State
+import "mtl" Control.Monad.State
+import "mtl" Control.Monad.Reader
diff --git a/testsuite/tests/ghci/scripts/T5979.stderr b/testsuite/tests/ghci/scripts/T5979.stderr
new file mode 100644
index 0000000000..30bd30194f
--- /dev/null
+++ b/testsuite/tests/ghci/scripts/T5979.stderr
@@ -0,0 +1,4 @@
+
+<no location info>:
+ Could not find module `Control.Monad.State'
+ It is not a module in the current program, or in any known package.
diff --git a/testsuite/tests/lib/IOExts/performGC001.stdout b/testsuite/tests/ghci/scripts/T5979.stdout
index e69de29bb2..e69de29bb2 100644
--- a/testsuite/tests/lib/IOExts/performGC001.stdout
+++ b/testsuite/tests/ghci/scripts/T5979.stdout
diff --git a/testsuite/tests/ghci/scripts/all.T b/testsuite/tests/ghci/scripts/all.T
index d8c1501915..2a49c9c112 100644..100755
--- a/testsuite/tests/ghci/scripts/all.T
+++ b/testsuite/tests/ghci/scripts/all.T
@@ -1,3 +1,4 @@
+# coding=utf8
setTestOpts(if_compiler_profiled(skip))
@@ -81,6 +82,8 @@ test('ghci056',
],
ghci_script, ['ghci056.script'])
+test('ghci057', normal, ghci_script, ['ghci057.script'])
+
test('2452', normal, ghci_script, ['2452.script'])
test('T2766', normal, ghci_script, ['T2766.script'])
@@ -108,3 +111,15 @@ test('T5557', normal, ghci_script, ['T5557.script'])
test('T5566', normal, ghci_script, ['T5566.script'])
test('GhciKinds', normal, ghci_script, ['GhciKinds.script'])
test('T5564', normal, ghci_script, ['T5564.script'])
+test('Defer02', normal, ghci_script, ['Defer02.script'])
+test('T5820', normal, ghci_script, ['T5820.script'])
+test('T5836', normal, ghci_script, ['T5836.script'])
+test('T5979', normalise_slashes, ghci_script, ['T5979.script'])
+test('T5975a',
+ [pre_cmd('touch föøbàr.hs'),
+ clean_cmd('rm föøbàr.hs')],
+ ghci_script, ['T5975a.script'])
+test('T5975b',
+ [pre_cmd('touch föøbàr.hs'),
+ clean_cmd('rm föøbàr.hs')],
+ ghci_script, ['T5975b.script'])
diff --git a/testsuite/tests/ghci/scripts/ghci011.stdout b/testsuite/tests/ghci/scripts/ghci011.stdout
index 8d78f4176e..caed5d0f0c 100644
--- a/testsuite/tests/ghci/scripts/ghci011.stdout
+++ b/testsuite/tests/ghci/scripts/ghci011.stdout
@@ -16,6 +16,7 @@ data (,) a b = (,) a b -- Defined in `GHC.Tuple'
instance (Bounded a, Bounded b) => Bounded (a, b)
-- Defined in `GHC.Enum'
instance (Eq a, Eq b) => Eq (a, b) -- Defined in `GHC.Classes'
+instance Functor ((,) a) -- Defined in `GHC.Base'
instance (Ord a, Ord b) => Ord (a, b) -- Defined in `GHC.Classes'
instance (Read a, Read b) => Read (a, b) -- Defined in `GHC.Read'
instance (Show a, Show b) => Show (a, b) -- Defined in `GHC.Show'
diff --git a/testsuite/tests/ghci/scripts/ghci020.stdout b/testsuite/tests/ghci/scripts/ghci020.stdout
index 2741b4feca..333e78570a 100644
--- a/testsuite/tests/ghci/scripts/ghci020.stdout
+++ b/testsuite/tests/ghci/scripts/ghci020.stdout
@@ -1 +1,3 @@
data (->) a b -- Defined in `GHC.Prim'
+instance Monad ((->) r) -- Defined in `GHC.Base'
+instance Functor ((->) r) -- Defined in `GHC.Base'
diff --git a/testsuite/tests/ghci/scripts/ghci024.stdout b/testsuite/tests/ghci/scripts/ghci024.stdout
index 8073383b41..f6b8cb3a5a 100644
--- a/testsuite/tests/ghci/scripts/ghci024.stdout
+++ b/testsuite/tests/ghci/scripts/ghci024.stdout
@@ -1,17 +1,34 @@
~~~~~~~~~~ Testing :set
options currently set: none.
+base language is: Haskell2010
+with the following modifiers:
+ -XNoDatatypeContexts
+ -XNondecreasingIndentation
+GHCi-specific dynamic flag settings:
+other dynamic, non-language, flag settings:
+ -fforce-recomp
+ -fimplicit-import-qualified
+warning settings:
+~~~~~~~~~~ Testing :set -a
+options currently set: none.
+base language is: Haskell2010
+all active language options:
GHCi-specific dynamic flag settings:
-fno-print-explicit-foralls
other dynamic, non-language, flag settings:
warning settings:
-fno-warn-implicit-prelude
~~~~~~~~~~ Testing :show languages
-active language flags:
- -XImplicitPrelude
+base language is: Haskell2010
+with the following modifiers:
+ -XNoDatatypeContexts
+ -XNondecreasingIndentation
~~~~~~~~~~ Testing :show languages, with -XMagicHash
-active language flags:
+base language is: Haskell2010
+with the following modifiers:
-XMagicHash
- -XImplicitPrelude
+ -XNoDatatypeContexts
+ -XNondecreasingIndentation
~~~~~~~~~~ Testing :show packages
active package flags: none
~~~~~~~~~~ Testing :show packages, including the ghc package
diff --git a/testsuite/tests/ghci/scripts/ghci031.stderr b/testsuite/tests/ghci/scripts/ghci031.stderr
index 8e4256c7f4..6f72f603e1 100644
--- a/testsuite/tests/ghci/scripts/ghci031.stderr
+++ b/testsuite/tests/ghci/scripts/ghci031.stderr
@@ -1,3 +1,3 @@
-ghci031.hs:1:14:
- Warning: -XDatatypeContexts is deprecated: It was widely considered a misfeature, and has been removed from the Haskell language.
+ghci031.hs:1:14: Warning:
+ -XDatatypeContexts is deprecated: It was widely considered a misfeature, and has been removed from the Haskell language.
diff --git a/testsuite/tests/ghci/scripts/ghci047.stderr b/testsuite/tests/ghci/scripts/ghci047.stderr
index 1807dcb866..0051710378 100644
--- a/testsuite/tests/ghci/scripts/ghci047.stderr
+++ b/testsuite/tests/ghci/scripts/ghci047.stderr
@@ -1,12 +1,16 @@
<interactive>:38:1:
Couldn't match type `HFalse' with `HTrue'
+ Expected type: HTrue
+ Actual type: Or HFalse HFalse
In the expression: f
In the expression: f $ Baz 'a'
In an equation for `it': it = f $ Baz 'a'
<interactive>:39:1:
Couldn't match type `HFalse' with `HTrue'
+ Expected type: HTrue
+ Actual type: Or HFalse HFalse
In the expression: f
In the expression: f $ Quz
In an equation for `it': it = f $ Quz
diff --git a/testsuite/tests/ghci/scripts/ghci050.stderr b/testsuite/tests/ghci/scripts/ghci050.stderr
index 6f0e2c2ff2..80725e4605 100644
--- a/testsuite/tests/ghci/scripts/ghci050.stderr
+++ b/testsuite/tests/ghci/scripts/ghci050.stderr
@@ -1,8 +1,9 @@
<interactive>:6:49:
- Couldn't match type `a' with `ListableElem (a, a)'
+ Couldn't match expected type `a'
+ with actual type `ListableElem (a, a)'
`a' is a rigid type variable bound by
- the instance declaration at <interactive>:6:20
+ the instance declaration at <interactive>:6:10
In the expression: a
In the expression: [a, b]
In an equation for `asList': asList (a, b) = [a, b]
diff --git a/testsuite/tests/ghci/scripts/ghci051.stderr b/testsuite/tests/ghci/scripts/ghci051.stderr
index 3a78849813..130d0012a2 100644
--- a/testsuite/tests/ghci/scripts/ghci051.stderr
+++ b/testsuite/tests/ghci/scripts/ghci051.stderr
@@ -1,5 +1,7 @@
<interactive>:7:9:
- Couldn't match expected type T' with actual type `T'
+ Couldn't match type `T' with `main::Interactive.T'
+ Expected type: T'
+ Actual type: T
In the expression: C :: T'
In an equation for `c': c = C :: T'
diff --git a/testsuite/tests/ghci/scripts/ghci057.hs b/testsuite/tests/ghci/scripts/ghci057.hs
new file mode 100644
index 0000000000..2a6b836d80
--- /dev/null
+++ b/testsuite/tests/ghci/scripts/ghci057.hs
@@ -0,0 +1,4 @@
+module Test where
+data T a where
+ C :: T Int
+
diff --git a/testsuite/tests/ghci/scripts/ghci057.script b/testsuite/tests/ghci/scripts/ghci057.script
new file mode 100644
index 0000000000..547fce52d7
--- /dev/null
+++ b/testsuite/tests/ghci/scripts/ghci057.script
@@ -0,0 +1,27 @@
+:set
+
+putStrLn "Should fail, GADTs is not enabled"
+data T a where C :: T Int
+
+:set -XGADTs
+:set
+
+putStrLn "Should work, GADTs is in force from :set"
+:load ghci057.hs
+
+:set -XNoGADTs
+:set
+
+putStrLn "Should fail, GADTs is now disabled"
+:load ghci057.hs
+
+:seti -XGADTs
+:seti
+
+putStrLn "Should fail, GADTs is only enabled at the prompt"
+:load ghci057.hs
+
+-- Should work
+data T a where C :: T Int
+:t C
+
diff --git a/testsuite/tests/ghci/scripts/ghci057.stderr b/testsuite/tests/ghci/scripts/ghci057.stderr
new file mode 100644
index 0000000000..623bfb3c37
--- /dev/null
+++ b/testsuite/tests/ghci/scripts/ghci057.stderr
@@ -0,0 +1,17 @@
+
+<interactive>:5:1:
+ Illegal generalised algebraic data declaration for `T'
+ (Use -XGADTs to allow GADTs)
+ In the data declaration for `T'
+
+ghci057.hs:3:3:
+ Data constructor `C' has existential type variables, a context, or a specialised result type
+ (Use -XExistentialQuantification or -XGADTs to allow this)
+ In the definition of data constructor `C'
+ In the data declaration for `T'
+
+ghci057.hs:3:3:
+ Data constructor `C' has existential type variables, a context, or a specialised result type
+ (Use -XExistentialQuantification or -XGADTs to allow this)
+ In the definition of data constructor `C'
+ In the data declaration for `T'
diff --git a/testsuite/tests/ghci/scripts/ghci057.stdout b/testsuite/tests/ghci/scripts/ghci057.stdout
new file mode 100644
index 0000000000..f97ea30c3d
--- /dev/null
+++ b/testsuite/tests/ghci/scripts/ghci057.stdout
@@ -0,0 +1,53 @@
+options currently set: none.
+base language is: Haskell2010
+with the following modifiers:
+ -XNoDatatypeContexts
+ -XNondecreasingIndentation
+GHCi-specific dynamic flag settings:
+other dynamic, non-language, flag settings:
+ -fno-ghci-history
+ -fimplicit-import-qualified
+warning settings:
+Should fail, GADTs is not enabled
+options currently set: none.
+base language is: Haskell2010
+with the following modifiers:
+ -XGADTs
+ -XGADTSyntax
+ -XNoDatatypeContexts
+ -XNondecreasingIndentation
+ -XMonoLocalBinds
+GHCi-specific dynamic flag settings:
+other dynamic, non-language, flag settings:
+ -fno-ghci-history
+ -fimplicit-import-qualified
+warning settings:
+Should work, GADTs is in force from :set
+options currently set: none.
+base language is: Haskell2010
+with the following modifiers:
+ -XGADTSyntax
+ -XNoDatatypeContexts
+ -XNondecreasingIndentation
+ -XMonoLocalBinds
+GHCi-specific dynamic flag settings:
+other dynamic, non-language, flag settings:
+ -fno-ghci-history
+ -fimplicit-import-qualified
+warning settings:
+Should fail, GADTs is now disabled
+base language is: Haskell2010
+with the following modifiers:
+ -XGADTs
+ -XGADTSyntax
+ -XNoDatatypeContexts
+ -XNondecreasingIndentation
+ -XMonoLocalBinds
+ -XExtendedDefaultRules
+GHCi-specific dynamic flag settings:
+other dynamic, non-language, flag settings:
+ -fno-ghci-history
+ -fimplicit-import-qualified
+warning settings:
+Should fail, GADTs is only enabled at the prompt
+C :: T Int
diff --git a/testsuite/tests/haddock/haddock_examples/haddock.Test.stderr b/testsuite/tests/haddock/haddock_examples/haddock.Test.stderr
index 48cae1cf83..3e944ee313 100644
--- a/testsuite/tests/haddock/haddock_examples/haddock.Test.stderr
+++ b/testsuite/tests/haddock/haddock_examples/haddock.Test.stderr
@@ -1,166 +1,166 @@
-[1 of 3] Compiling Visible ( Visible.hs, Visible.o )
-
-==================== Parser ====================
-module Visible where
-visible :: Int -> Int
-visible a = a
-
-
-[2 of 3] Compiling Hidden ( Hidden.hs, Hidden.o )
-
-==================== Parser ====================
-module Hidden where
-hidden :: Int -> Int
-hidden a = a
-
-
-[3 of 3] Compiling Test ( Test.hs, Test.o )
-
-==================== Parser ====================
-<document comment>
-module Test (
- <IEGroup: 1>, <IEGroup: 2>, T(..), T2, T3(..), T4(..), T5(..),
- T6(..), N1(..), N2(..), N3(..), N4, N5(..), N6(..), N7(..),
- <IEGroup: 2>, R(..), R1(..), <document comment>, p, q, u,
- <IEGroup: 1>, C(a, b), D(..), E, F(..), <document comment>, a,
- <IEGroup: 1>, f, g, <IEGroup: 1>, <IEDocNamed: aux1>,
- <IEDocNamed: aux2>, <IEDocNamed: aux3>, <IEDocNamed: aux4>,
- <IEDocNamed: aux5>, <IEDocNamed: aux6>, <IEDocNamed: aux7>,
- <IEDocNamed: aux8>, <IEDocNamed: aux9>, <IEDocNamed: aux10>,
- <IEDocNamed: aux11>, <IEDocNamed: aux12>, <document comment>,
- <IEGroup: 1>, module Hidden, <IEGroup: 1>, module Visible,
- <document comment>, <IEGroup: 1>, Ex(..), <IEGroup: 1>, k, l, m, o,
- <IEGroup: 1>, <IEGroup: 2>, <document comment>, f'
- ) where
-import Hidden
-import Visible
-<document comment>
-data T a b
- = <document comment> A Int Maybe Float |
- <document comment> B (T a b, T Int Float)
-<document comment>
-data T2 a b = T2 a b
-<document comment>
-data T3 a b = A1 a | B1 b
-data T4 a b = A2 a | B2 b
-data T5 a b = <document comment> A3 a | <document comment> B3 b
-<document comment>
-data T6
- = <document comment> A4 |
- <document comment> B4 |
- <document comment> C4
-<document comment>
-newtype N1 a = N1 a
-<document comment>
-newtype N2 a b = N2 {n :: a b}
-<document comment>
-newtype N3 a b = N3 {n3 :: a b <document comment>}
-<document comment>
-newtype N4 a b = N4 a
-newtype N5 a b = N5 {n5 :: a b <document comment>}
-newtype N6 a b = <document comment> N6 {n6 :: a b}
-<document comment>
-newtype N7 a b = <document comment> N7 {n7 :: a b}
-class D a => C a where
- a :: IO a
- b :: [a]
- c :: a
-<document comment>
-class D a where
- d :: T a b
- e :: (a, a)
-<document comment>
-instance D Int where
- d = undefined
- e = undefined
-instance Test.D Float where
- d = undefined
- e = undefined
-class E a where
- ee :: a
-<document comment>
-class F a where
- ff :: a
-<document comment>
-data R
- = <document comment>
- C1 {p :: Int <document comment>,
- q :: forall a. a -> a <document comment>,
- r :: Int <document comment>,
- s :: Int <document comment>} |
- <document comment>
- C2 {t :: T1
- -> (T2 Int Int) -> (T3 Bool Bool) -> (T4 Float Float) -> T5 () (),
- u :: Int,
- v :: Int}
-<document comment>
-data R1
- = <document comment>
- C3 {s1 :: Int <document comment>,
- s2 :: Int <document comment>,
- s3 :: Int <document comment>}
-<document comment>
-<document comment>
-<document comment>
-<document comment>
-f :: C a => a -> Int
-<document comment>
-foreign import ccall safe "static header.h g" g :: Int -> IO CInt
-<document comment>
-h :: Int
-h = 42
-<document comment>
-<document comment>
-<document comment>
-<document comment>
-<document comment>
-<document comment>
-<document comment>
-<document comment>
-<document comment>
-<document comment>
-<document comment>
-<document comment>
-<document comment>
-data Ex a
- = forall b. C b => Ex1 b |
- forall b. Ex2 b |
- forall b. C a => Ex3 b |
- Ex4 forall a. a -> a
-<document comment>
-k ::
- T () () <document comment>
- -> (T2 Int Int) <document comment>
- -> (T3 Bool Bool -> T4 Float Float) <document comment>
- -> T5 () () <document comment> -> IO () <document comment>
-l :: (Int, Int, Float) <document comment> -> Int <document comment>
-<document comment>
-m :: R -> N1 () <document comment> -> IO Int <document comment>
-<document comment>
-newn :: R <document comment> -> N1 () <document comment> -> IO Int
-newn = undefined
-<document comment>
-foreign import ccall unsafe "static header.h o" o
- :: Float <document comment> -> IO Float <document comment>
-<document comment>
-newp :: Int
-newp = undefined
-<document comment>
-f' :: Int
-data T1 =
-f = undefined
-f' = undefined
-type CInt = Int
-k = undefined
-l = undefined
-m = undefined
-
-
-
-Test.hs:32:9: Warning: `p' is exported by `p' and `R(..)'
-
-Test.hs:32:12: Warning: `q' is exported by `q' and `R(..)'
-
-Test.hs:32:15: Warning: `u' is exported by `u' and `R(..)'
-
-Test.hs:38:9: Warning: `a' is exported by `a' and `C(a, b)'
+[1 of 3] Compiling Visible ( Visible.hs, Visible.o )
+
+==================== Parser ====================
+module Visible where
+visible :: Int -> Int
+visible a = a
+
+
+[2 of 3] Compiling Hidden ( Hidden.hs, Hidden.o )
+
+==================== Parser ====================
+module Hidden where
+hidden :: Int -> Int
+hidden a = a
+
+
+[3 of 3] Compiling Test ( Test.hs, Test.o )
+
+==================== Parser ====================
+<document comment>
+module Test (
+ <IEGroup: 1>, <IEGroup: 2>, T(..), T2, T3(..), T4(..), T5(..),
+ T6(..), N1(..), N2(..), N3(..), N4, N5(..), N6(..), N7(..),
+ <IEGroup: 2>, R(..), R1(..), <document comment>, p, q, u,
+ <IEGroup: 1>, C(a, b), D(..), E, F(..), <document comment>, a,
+ <IEGroup: 1>, f, g, <IEGroup: 1>, <IEDocNamed: aux1>,
+ <IEDocNamed: aux2>, <IEDocNamed: aux3>, <IEDocNamed: aux4>,
+ <IEDocNamed: aux5>, <IEDocNamed: aux6>, <IEDocNamed: aux7>,
+ <IEDocNamed: aux8>, <IEDocNamed: aux9>, <IEDocNamed: aux10>,
+ <IEDocNamed: aux11>, <IEDocNamed: aux12>, <document comment>,
+ <IEGroup: 1>, module Hidden, <IEGroup: 1>, module Visible,
+ <document comment>, <IEGroup: 1>, Ex(..), <IEGroup: 1>, k, l, m, o,
+ <IEGroup: 1>, <IEGroup: 2>, <document comment>, f'
+ ) where
+import Hidden
+import Visible
+<document comment>
+data T a b
+ = <document comment> A Int Maybe Float |
+ <document comment> B (T a b, T Int Float)
+<document comment>
+data T2 a b = T2 a b
+<document comment>
+data T3 a b = A1 a | B1 b
+data T4 a b = A2 a | B2 b
+data T5 a b = <document comment> A3 a | <document comment> B3 b
+<document comment>
+data T6
+ = <document comment> A4 |
+ <document comment> B4 |
+ <document comment> C4
+<document comment>
+newtype N1 a = N1 a
+<document comment>
+newtype N2 a b = N2 {n :: a b}
+<document comment>
+newtype N3 a b = N3 {n3 :: a b <document comment>}
+<document comment>
+newtype N4 a b = N4 a
+newtype N5 a b = N5 {n5 :: a b <document comment>}
+newtype N6 a b = <document comment> N6 {n6 :: a b}
+<document comment>
+newtype N7 a b = <document comment> N7 {n7 :: a b}
+class D a => C a where
+ a :: IO a
+ b :: [a]
+ c :: a
+<document comment>
+class D a where
+ d :: T a b
+ e :: (a, a)
+<document comment>
+instance D Int where
+ d = undefined
+ e = undefined
+instance Test.D Float where
+ d = undefined
+ e = undefined
+class E a where
+ ee :: a
+<document comment>
+class F a where
+ ff :: a
+<document comment>
+data R
+ = <document comment>
+ C1 {p :: Int <document comment>,
+ q :: forall a. a -> a <document comment>,
+ r :: Int <document comment>,
+ s :: Int <document comment>} |
+ <document comment>
+ C2 {t :: T1
+ -> (T2 Int Int) -> (T3 Bool Bool) -> (T4 Float Float) -> T5 () (),
+ u :: Int,
+ v :: Int}
+<document comment>
+data R1
+ = <document comment>
+ C3 {s1 :: Int <document comment>,
+ s2 :: Int <document comment>,
+ s3 :: Int <document comment>}
+<document comment>
+<document comment>
+<document comment>
+<document comment>
+f :: C a => a -> Int
+<document comment>
+foreign import ccall safe "static header.h g" g :: Int -> IO CInt
+<document comment>
+h :: Int
+h = 42
+<document comment>
+<document comment>
+<document comment>
+<document comment>
+<document comment>
+<document comment>
+<document comment>
+<document comment>
+<document comment>
+<document comment>
+<document comment>
+<document comment>
+<document comment>
+data Ex a
+ = forall b. C b => Ex1 b |
+ forall b. Ex2 b |
+ forall b. C a => Ex3 b |
+ Ex4 forall a. a -> a
+<document comment>
+k ::
+ T () () <document comment>
+ -> (T2 Int Int) <document comment>
+ -> (T3 Bool Bool -> T4 Float Float) <document comment>
+ -> T5 () () <document comment> -> IO () <document comment>
+l :: (Int, Int, Float) <document comment> -> Int <document comment>
+<document comment>
+m :: R -> N1 () <document comment> -> IO Int <document comment>
+<document comment>
+newn :: R <document comment> -> N1 () <document comment> -> IO Int
+newn = undefined
+<document comment>
+foreign import ccall unsafe "static header.h o" o
+ :: Float <document comment> -> IO Float <document comment>
+<document comment>
+newp :: Int
+newp = undefined
+<document comment>
+f' :: Int
+data T1
+f = undefined
+f' = undefined
+type CInt = Int
+k = undefined
+l = undefined
+m = undefined
+
+
+
+Test.hs:32:9: Warning: `p' is exported by `p' and `R(..)'
+
+Test.hs:32:12: Warning: `q' is exported by `q' and `R(..)'
+
+Test.hs:32:15: Warning: `u' is exported by `u' and `R(..)'
+
+Test.hs:38:9: Warning: `a' is exported by `a' and `C(a, b)'
diff --git a/testsuite/tests/haddock/should_compile_flag_haddock/haddockA028.hs b/testsuite/tests/haddock/should_compile_flag_haddock/haddockA028.hs
index 2f4b7c1bcb..ff88ec70b2 100644
--- a/testsuite/tests/haddock/should_compile_flag_haddock/haddockA028.hs
+++ b/testsuite/tests/haddock/should_compile_flag_haddock/haddockA028.hs
@@ -1,5 +1,7 @@
module ShouldCompile where
+data a <--> b = Mk a b
+
test :: [a] -- ^ doc1
-> a <--> b
-> [a] -- ^ blabla
diff --git a/testsuite/tests/haddock/should_compile_flag_haddock/haddockA028.stderr b/testsuite/tests/haddock/should_compile_flag_haddock/haddockA028.stderr
index d74422461e..6d9a8b2181 100644
--- a/testsuite/tests/haddock/should_compile_flag_haddock/haddockA028.stderr
+++ b/testsuite/tests/haddock/should_compile_flag_haddock/haddockA028.stderr
@@ -1,6 +1,7 @@
==================== Parser ====================
module ShouldCompile where
+data (<-->) a b = Mk a b
test ::
[a] <document comment> -> (a <--> (b -> [a])) <document comment>
test xs ys = xs
diff --git a/testsuite/tests/haddock/should_compile_noflag_haddock/haddockC028.hs b/testsuite/tests/haddock/should_compile_noflag_haddock/haddockC028.hs
index 3f8abc19d3..bbf649d357 100644
--- a/testsuite/tests/haddock/should_compile_noflag_haddock/haddockC028.hs
+++ b/testsuite/tests/haddock/should_compile_noflag_haddock/haddockC028.hs
@@ -1,5 +1,7 @@
module ShouldCompile where
+data a <--> b = Mk a b
+
test :: [a] -- ^ doc1
-> a <--> b
-> [a] -- ^ doc3
diff --git a/testsuite/tests/indexed-types/should_compile/Class3.stderr b/testsuite/tests/indexed-types/should_compile/Class3.stderr
index 58367939d0..4c72a425f0 100644
--- a/testsuite/tests/indexed-types/should_compile/Class3.stderr
+++ b/testsuite/tests/indexed-types/should_compile/Class3.stderr
@@ -1,4 +1,4 @@
Class3.hs:7:10:
- Warning: No explicit method nor default method for `foo'
+ Warning: No explicit method or default declaration for `foo'
In the instance declaration for `C ()'
diff --git a/testsuite/tests/indexed-types/should_compile/Makefile b/testsuite/tests/indexed-types/should_compile/Makefile
index a5dfe03de8..e37855c76f 100644
--- a/testsuite/tests/indexed-types/should_compile/Makefile
+++ b/testsuite/tests/indexed-types/should_compile/Makefile
@@ -13,3 +13,8 @@ IndTypesPerf:
$(RM) IndTypesPerfMerge.o IndTypesPerfMerge.hi
'$(TEST_HC)' $(TEST_HC_OPTS) -O -c IndTypesPerfMerge.hs +RTS -M20M
'$(TEST_HC)' $(TEST_HC_OPTS) -O -c IndTypesPerf.hs +RTS -M20M
+
+T5955:
+ $(RM) T5955.o T5955.hi T5955a.o T5955a.hi
+ '$(TEST_HC)' $(TEST_HC_OPTS) -c T5955a.hs
+ '$(TEST_HC)' $(TEST_HC_OPTS) -c T5955.hs
diff --git a/testsuite/tests/indexed-types/should_compile/Simple14.stderr b/testsuite/tests/indexed-types/should_compile/Simple14.stderr
index a5250d556f..18221db64e 100644
--- a/testsuite/tests/indexed-types/should_compile/Simple14.stderr
+++ b/testsuite/tests/indexed-types/should_compile/Simple14.stderr
@@ -7,7 +7,9 @@ Simple14.hs:17:12:
Maybe m ~ Maybe n => EQ_ z0 z0
`n' is a rigid type variable bound by
the type signature for foo :: EQ_ (Maybe m) (Maybe n)
- at Simple14.hs:17:1
+ at Simple14.hs:16:17
+ Expected type: EQ_ z0 z0
+ Actual type: EQ_ m n
In the second argument of `eqE', namely `(eqI :: EQ_ m n)'
In the first argument of `ntI', namely `(`eqE` (eqI :: EQ_ m n))'
In the expression: ntI (`eqE` (eqI :: EQ_ m n))
diff --git a/testsuite/tests/indexed-types/should_compile/Simple2.stderr b/testsuite/tests/indexed-types/should_compile/Simple2.stderr
index e2d5ce6973..ef05fb3e23 100644
--- a/testsuite/tests/indexed-types/should_compile/Simple2.stderr
+++ b/testsuite/tests/indexed-types/should_compile/Simple2.stderr
@@ -1,40 +1,40 @@
Simple2.hs:21:1:
- Warning: No explicit AT declaration for `S3n'
+ Warning: No explicit associated type or default declaration for `S3n'
In the instance declaration for `C3 Char'
Simple2.hs:21:10:
- Warning: No explicit method nor default method for `foo3n'
+ Warning: No explicit method or default declaration for `foo3n'
In the instance declaration for `C3 Char'
Simple2.hs:21:10:
- Warning: No explicit method nor default method for `bar3n'
+ Warning: No explicit method or default declaration for `bar3n'
In the instance declaration for `C3 Char'
Simple2.hs:29:1:
- Warning: No explicit AT declaration for `S3n'
+ Warning: No explicit associated type or default declaration for `S3n'
In the instance declaration for `C3 Bool'
Simple2.hs:29:10:
- Warning: No explicit method nor default method for `foo3n'
+ Warning: No explicit method or default declaration for `foo3n'
In the instance declaration for `C3 Bool'
Simple2.hs:29:10:
- Warning: No explicit method nor default method for `bar3n'
+ Warning: No explicit method or default declaration for `bar3n'
In the instance declaration for `C3 Bool'
Simple2.hs:39:1:
- Warning: No explicit AT declaration for `S3'
+ Warning: No explicit associated type or default declaration for `S3'
In the instance declaration for `C3 Float'
Simple2.hs:39:1:
- Warning: No explicit AT declaration for `S3n'
+ Warning: No explicit associated type or default declaration for `S3n'
In the instance declaration for `C3 Float'
Simple2.hs:39:10:
- Warning: No explicit method nor default method for `foo3n'
+ Warning: No explicit method or default declaration for `foo3n'
In the instance declaration for `C3 Float'
Simple2.hs:39:10:
- Warning: No explicit method nor default method for `bar3n'
+ Warning: No explicit method or default declaration for `bar3n'
In the instance declaration for `C3 Float'
diff --git a/testsuite/tests/indexed-types/should_compile/T2850.hs b/testsuite/tests/indexed-types/should_compile/T2850.hs
index bdb423b6eb..d284db05db 100644
--- a/testsuite/tests/indexed-types/should_compile/T2850.hs
+++ b/testsuite/tests/indexed-types/should_compile/T2850.hs
@@ -16,6 +16,8 @@ instance M Bool where
instance K (B Bool) where
bar = id
+-- The 'deriving K' gives the (K (B Int)) instance
+-- needed for the superclasses of M
instance M Int where
newtype B Int = BInt (B Bool) deriving K
foo = id
diff --git a/testsuite/tests/indexed-types/should_compile/T3017.stderr b/testsuite/tests/indexed-types/should_compile/T3017.stderr
index 61bc40bcea..5df49d598b 100644
--- a/testsuite/tests/indexed-types/should_compile/T3017.stderr
+++ b/testsuite/tests/indexed-types/should_compile/T3017.stderr
@@ -1,23 +1,23 @@
-TYPE SIGNATURES
- emptyL :: forall a. ListColl a
- test2 :: forall c t t1.
- (Num t1, Num t, Coll c, Elem c ~ (t, t1)) =>
- c -> c
-TYPE CONSTRUCTORS
- class Coll c
- RecFlag NonRecursive
- type family Elem c :: *
- empty :: c insert :: Elem c -> c -> c
- data ListColl a
- RecFlag NonRecursive
- = L :: forall a. [a] -> ListColl a Stricts: _
- FamilyInstance: none
-COERCION AXIOMS
- axiom Foo.TFCo:R:ElemListColl [a]
- :: Elem (ListColl a) ~# Foo.R:ElemListColl a
-INSTANCES
- instance Coll (ListColl a) -- Defined at T3017.hs:12:11
-FAMILY INSTANCES
- type Elem (ListColl a) -- Defined at T3017.hs:13:9
-Dependent modules: []
-Dependent packages: [base, ghc-prim, integer-gmp]
+TYPE SIGNATURES
+ emptyL :: forall a. ListColl a
+ test2 :: forall c t t1.
+ (Num t, Num t1, Coll c, Elem c ~ (t, t1)) =>
+ c -> c
+TYPE CONSTRUCTORS
+ class Coll c
+ RecFlag NonRecursive
+ type family Elem c :: *
+ empty :: c insert :: Elem c -> c -> c
+ data ListColl a
+ No C type associated
+ RecFlag NonRecursive
+ = L :: forall a. [a] -> ListColl a Stricts: _
+ FamilyInstance: none
+COERCION AXIOMS
+ axiom Foo.TFCo:R:ElemListColl [a] :: Elem (ListColl a) ~# a
+INSTANCES
+ instance Coll (ListColl a) -- Defined at T3017.hs:12:11
+FAMILY INSTANCES
+ type Elem (ListColl a) -- Defined at T3017.hs:13:9
+Dependent modules: []
+Dependent packages: [base, ghc-prim, integer-gmp]
diff --git a/testsuite/tests/indexed-types/should_compile/T3208b.stderr b/testsuite/tests/indexed-types/should_compile/T3208b.stderr
index 2256e610e3..fc697fb873 100644
--- a/testsuite/tests/indexed-types/should_compile/T3208b.stderr
+++ b/testsuite/tests/indexed-types/should_compile/T3208b.stderr
@@ -4,19 +4,11 @@ T3208b.hs:15:10:
from the context (OTerm a ~ STerm a, OBJECT a, SUBST a)
bound by the type signature for
fce' :: (OTerm a ~ STerm a, OBJECT a, SUBST a) => a -> c
- at T3208b.hs:15:1-22
+ at T3208b.hs:14:9-56
NB: `STerm' is a type function, and may not be injective
+ The type variable `a0' is ambiguous
+ Possible fix: add a type signature that fixes these type variable(s)
Expected type: STerm a0
Actual type: OTerm a0
In the expression: fce (apply f)
In an equation for fce': fce' f = fce (apply f)
-
-T3208b.hs:15:15:
- Could not deduce (OTerm a0 ~ STerm a)
- from the context (OTerm a ~ STerm a, OBJECT a, SUBST a)
- bound by the type signature for
- fce' :: (OTerm a ~ STerm a, OBJECT a, SUBST a) => a -> c
- at T3208b.hs:15:1-22
- In the first argument of `fce', namely `(apply f)'
- In the expression: fce (apply f)
- In an equation for fce': fce' f = fce (apply f)
diff --git a/testsuite/tests/indexed-types/should_compile/T4120.stderr b/testsuite/tests/indexed-types/should_compile/T4120.stderr
index d957620b78..e69de29bb2 100644
--- a/testsuite/tests/indexed-types/should_compile/T4120.stderr
+++ b/testsuite/tests/indexed-types/should_compile/T4120.stderr
@@ -1,8 +0,0 @@
-
-T4120.hs:17:10:
- Couldn't match expected type `forall s. MVector s a'
- with actual type `forall s. Mutable Vector s a0'
- Expected type: (forall s. MVector s a) -> Int
- Actual type: (forall s. Mutable Vector s a0) -> Int
- In the expression: create1
- In an equation for `create': create = create1
diff --git a/testsuite/tests/indexed-types/should_compile/T5955.hs b/testsuite/tests/indexed-types/should_compile/T5955.hs
new file mode 100644
index 0000000000..0d92239a12
--- /dev/null
+++ b/testsuite/tests/indexed-types/should_compile/T5955.hs
@@ -0,0 +1,7 @@
+module T5955 where
+
+import T5955a
+
+
+foo :: ()
+foo = ()
diff --git a/testsuite/tests/indexed-types/should_compile/T5955a.hs b/testsuite/tests/indexed-types/should_compile/T5955a.hs
new file mode 100644
index 0000000000..b9d4ea2a7c
--- /dev/null
+++ b/testsuite/tests/indexed-types/should_compile/T5955a.hs
@@ -0,0 +1,13 @@
+{-# LANGUAGE FlexibleContexts #-}
+{-# LANGUAGE TypeFamilies #-}
+
+module T5955a where
+
+
+class (Eq (Multi a)) => MultiPrim a where
+ data Multi a
+
+instance MultiPrim Int where
+ newtype Multi Int = MultiInt Int deriving (Eq)
+
+
diff --git a/testsuite/tests/indexed-types/should_compile/all.T b/testsuite/tests/indexed-types/should_compile/all.T
index e7827bed4f..9253673442 100644
--- a/testsuite/tests/indexed-types/should_compile/all.T
+++ b/testsuite/tests/indexed-types/should_compile/all.T
@@ -21,7 +21,7 @@ test('Simple16', normal, compile, [''])
test('Simple17', normal, compile, [''])
test('Simple18', normal, compile, [''])
test('Simple19', normal, compile, [''])
-test('Simple20', expect_broken(4296), compile, ['-fcontext-stack=50'])
+test('Simple20', expect_broken(4296), compile, ['-fcontext-stack=10'])
test('Simple21', normal, compile, [''])
test('Simple22', normal, compile, [''])
test('Simple23', normal, compile, [''])
@@ -146,7 +146,7 @@ test('IndTypesPerf',
run_command,
['$MAKE -s --no-print-directory IndTypesPerf'])
-test('T4120', normal, compile_fail, [''])
+test('T4120', normal, compile, [''])
test('T3787', reqlib('mtl'), compile, [''])
test('T3826', normal, compile, [''])
test('T4200', normal, compile, [''])
@@ -182,3 +182,9 @@ test('ClassEqContext3', normal, compile, [''])
test('HO', normal, compile, [''])
+# The point about this test is that it compiles the two T5955
+# modules *separately*
+test('T5955',
+ extra_clean(['T5955.o', 'T5955.hi', 'T5955a.o', 'T5955a.hi']),
+ run_command,
+ ['$MAKE -s --no-print-directory T5955'])
diff --git a/testsuite/tests/indexed-types/should_fail/GADTwrong1.stderr b/testsuite/tests/indexed-types/should_fail/GADTwrong1.stderr
index e565aa6cde..a6010f6711 100644
--- a/testsuite/tests/indexed-types/should_fail/GADTwrong1.stderr
+++ b/testsuite/tests/indexed-types/should_fail/GADTwrong1.stderr
@@ -1,18 +1,18 @@
GADTwrong1.hs:12:19:
- Could not deduce (a1 ~ b)
+ Could not deduce (b ~ a1)
from the context (() ~ Const a1)
bound by a pattern with constructor
T :: forall a. a -> T (Const a),
in a case alternative
at GADTwrong1.hs:12:12-14
+ `b' is a rigid type variable bound by
+ the type signature for coerce :: a -> b at GADTwrong1.hs:10:20
`a1' is a rigid type variable bound by
a pattern with constructor
T :: forall a. a -> T (Const a),
in a case alternative
at GADTwrong1.hs:12:12
- `b' is a rigid type variable bound by
- the type signature for coerce :: a -> b at GADTwrong1.hs:11:1
In the expression: y
In a case alternative: T y -> y
In the expression: case T x :: T (Const b) of { T y -> y }
diff --git a/testsuite/tests/indexed-types/should_fail/NoMatchErr.stderr b/testsuite/tests/indexed-types/should_fail/NoMatchErr.stderr
index 713afea184..003c014470 100644
--- a/testsuite/tests/indexed-types/should_fail/NoMatchErr.stderr
+++ b/testsuite/tests/indexed-types/should_fail/NoMatchErr.stderr
@@ -3,10 +3,10 @@ NoMatchErr.hs:20:5:
Could not deduce (Memo d ~ Memo d0)
from the context (Fun d)
bound by the type signature for f :: Fun d => Memo d a -> Memo d a
- at NoMatchErr.hs:20:1-15
+ at NoMatchErr.hs:19:7-37
NB: `Memo' is a type function, and may not be injective
- Expected type: Memo d a
- Actual type: Memo d0 a
+ The type variable `d0' is ambiguous
+ Possible fix: add a type signature that fixes these type variable(s)
Expected type: Memo d a -> Memo d a
Actual type: Memo d0 a -> Memo d0 a
In the expression: abst . appl
diff --git a/testsuite/tests/indexed-types/should_fail/NotRelaxedExamples.stderr b/testsuite/tests/indexed-types/should_fail/NotRelaxedExamples.stderr
index dbc83696ee..030f742eed 100644
--- a/testsuite/tests/indexed-types/should_fail/NotRelaxedExamples.stderr
+++ b/testsuite/tests/indexed-types/should_fail/NotRelaxedExamples.stderr
@@ -1,18 +1,18 @@
-
-NotRelaxedExamples.hs:9:1:
- Nested type family application
- in the type family application: F1 (F1 Char)
- (Use -XUndecidableInstances to permit this)
- In the type synonym instance declaration for `F1'
-
-NotRelaxedExamples.hs:10:1:
- Application is no smaller than the instance head
- in the type family application: F2 [x]
- (Use -XUndecidableInstances to permit this)
- In the type synonym instance declaration for `F2'
-
-NotRelaxedExamples.hs:11:1:
- Application is no smaller than the instance head
- in the type family application: F3 [Char]
- (Use -XUndecidableInstances to permit this)
- In the type synonym instance declaration for `F3'
+
+NotRelaxedExamples.hs:9:1:
+ Nested type family application
+ in the type family application: F1 (F1 Char)
+ (Use -XUndecidableInstances to permit this)
+ In the type instance declaration for `F1'
+
+NotRelaxedExamples.hs:10:1:
+ Application is no smaller than the instance head
+ in the type family application: F2 [x]
+ (Use -XUndecidableInstances to permit this)
+ In the type instance declaration for `F2'
+
+NotRelaxedExamples.hs:11:1:
+ Application is no smaller than the instance head
+ in the type family application: F3 [Char]
+ (Use -XUndecidableInstances to permit this)
+ In the type instance declaration for `F3'
diff --git a/testsuite/tests/indexed-types/should_fail/SimpleFail11a.stderr b/testsuite/tests/indexed-types/should_fail/SimpleFail11a.stderr
index 9af6037bbe..e9615eddc3 100644
--- a/testsuite/tests/indexed-types/should_fail/SimpleFail11a.stderr
+++ b/testsuite/tests/indexed-types/should_fail/SimpleFail11a.stderr
@@ -1,10 +1,10 @@
-SimpleFail11a.hs:8:15:
+SimpleFail11a.hs:6:15:
Conflicting family instance declarations:
- data instance C9 Int Int -- Defined at SimpleFail11a.hs:8:15
data instance C9 Int Int -- Defined at SimpleFail11a.hs:6:15
+ data instance C9 Int Int -- Defined at SimpleFail11a.hs:8:15
-SimpleFail11a.hs:13:15:
+SimpleFail11a.hs:11:15:
Conflicting family instance declarations:
- type instance D9 Int Int -- Defined at SimpleFail11a.hs:13:15
type instance D9 Int Int -- Defined at SimpleFail11a.hs:11:15
+ type instance D9 Int Int -- Defined at SimpleFail11a.hs:13:15
diff --git a/testsuite/tests/indexed-types/should_fail/SimpleFail11b.stderr b/testsuite/tests/indexed-types/should_fail/SimpleFail11b.stderr
index 46eb582aeb..297a18c5d5 100644
--- a/testsuite/tests/indexed-types/should_fail/SimpleFail11b.stderr
+++ b/testsuite/tests/indexed-types/should_fail/SimpleFail11b.stderr
@@ -1,10 +1,10 @@
-SimpleFail11b.hs:9:15:
+SimpleFail11b.hs:7:15:
Conflicting family instance declarations:
- data instance C9 [a] Int -- Defined at SimpleFail11b.hs:9:15
data instance C9 [a] Int -- Defined at SimpleFail11b.hs:7:15
+ data instance C9 [a] Int -- Defined at SimpleFail11b.hs:9:15
-SimpleFail11b.hs:15:15:
+SimpleFail11b.hs:13:15:
Conflicting family instance declarations:
- type instance D9 [a] Int -- Defined at SimpleFail11b.hs:15:15
type instance D9 [a] Int -- Defined at SimpleFail11b.hs:13:15
+ type instance D9 [a] Int -- Defined at SimpleFail11b.hs:15:15
diff --git a/testsuite/tests/indexed-types/should_fail/SimpleFail11c.stderr b/testsuite/tests/indexed-types/should_fail/SimpleFail11c.stderr
index 61f1553fcf..39870055e5 100644
--- a/testsuite/tests/indexed-types/should_fail/SimpleFail11c.stderr
+++ b/testsuite/tests/indexed-types/should_fail/SimpleFail11c.stderr
@@ -4,7 +4,7 @@ SimpleFail11c.hs:7:15:
data instance C9 [a] Int -- Defined at SimpleFail11c.hs:7:15
data instance C9 [Int] Int -- Defined at SimpleFail11c.hs:9:15
-SimpleFail11c.hs:15:15:
+SimpleFail11c.hs:13:15:
Conflicting family instance declarations:
- type instance D9 [Int] Int -- Defined at SimpleFail11c.hs:15:15
type instance D9 [a] Int -- Defined at SimpleFail11c.hs:13:15
+ type instance D9 [Int] Int -- Defined at SimpleFail11c.hs:15:15
diff --git a/testsuite/tests/indexed-types/should_fail/SimpleFail11d.stderr b/testsuite/tests/indexed-types/should_fail/SimpleFail11d.stderr
index 0999d49fae..062d29d8f2 100644
--- a/testsuite/tests/indexed-types/should_fail/SimpleFail11d.stderr
+++ b/testsuite/tests/indexed-types/should_fail/SimpleFail11d.stderr
@@ -1,5 +1,5 @@
-SimpleFail11d.hs:10:15:
+SimpleFail11d.hs:8:15:
Conflicting family instance declarations:
- data instance C9 [a] [Int] -- Defined at SimpleFail11d.hs:10:15
data instance C9 [Int] [a] -- Defined at SimpleFail11d.hs:8:15
+ data instance C9 [a] [Int] -- Defined at SimpleFail11d.hs:10:15
diff --git a/testsuite/tests/indexed-types/should_fail/SimpleFail12.stderr b/testsuite/tests/indexed-types/should_fail/SimpleFail12.stderr
index 24ac5f10a1..09420061a6 100644
--- a/testsuite/tests/indexed-types/should_fail/SimpleFail12.stderr
+++ b/testsuite/tests/indexed-types/should_fail/SimpleFail12.stderr
@@ -1,4 +1,4 @@
-
-SimpleFail12.hs:8:1:
- Illegal polymorphic or qualified type: forall a. [a]
- In the type synonym instance declaration for `C'
+
+SimpleFail12.hs:8:1:
+ Illegal polymorphic or qualified type: forall a. [a]
+ In the type instance declaration for `C'
diff --git a/testsuite/tests/indexed-types/should_fail/SimpleFail13.stderr b/testsuite/tests/indexed-types/should_fail/SimpleFail13.stderr
index f87d4059ae..116da4c0ff 100644
--- a/testsuite/tests/indexed-types/should_fail/SimpleFail13.stderr
+++ b/testsuite/tests/indexed-types/should_fail/SimpleFail13.stderr
@@ -1,8 +1,8 @@
-
-SimpleFail13.hs:9:1:
- Illegal type synonym family application in instance: [C a]
- In the data type instance declaration for `D'
-
-SimpleFail13.hs:13:1:
- Illegal type synonym family application in instance: [C a]
- In the type synonym instance declaration for `E'
+
+SimpleFail13.hs:9:1:
+ Illegal type synonym family application in instance: [C a]
+ In the data instance declaration for `D'
+
+SimpleFail13.hs:13:1:
+ Illegal type synonym family application in instance: [C a]
+ In the type instance declaration for `E'
diff --git a/testsuite/tests/indexed-types/should_fail/SimpleFail14.stderr b/testsuite/tests/indexed-types/should_fail/SimpleFail14.stderr
index b001e553a6..8a86c21bcd 100644
--- a/testsuite/tests/indexed-types/should_fail/SimpleFail14.stderr
+++ b/testsuite/tests/indexed-types/should_fail/SimpleFail14.stderr
@@ -1,7 +1,6 @@
-
-SimpleFail14.hs:5:15:
- Predicate `a ~ a' used as a type
- Expected kind `??', but `a ~ a' has kind `Constraint'
- In the type `a ~ a'
- In the definition of data constructor `T'
- In the data type declaration for `T'
+
+SimpleFail14.hs:5:15:
+ Predicate `a ~ a' used as a type
+ In the type `a ~ a'
+ In the definition of data constructor `T'
+ In the data declaration for `T'
diff --git a/testsuite/tests/indexed-types/should_fail/SimpleFail15.stderr b/testsuite/tests/indexed-types/should_fail/SimpleFail15.stderr
index 8f97746510..e2b7bba314 100644
--- a/testsuite/tests/indexed-types/should_fail/SimpleFail15.stderr
+++ b/testsuite/tests/indexed-types/should_fail/SimpleFail15.stderr
@@ -1,6 +1,6 @@
-
-SimpleFail15.hs:5:1:
- Illegal polymorphic or qualified type: a ~ b => t
- Perhaps you intended to use -XRankNTypes or -XRank2Types
- In the type signature for `foo':
- foo :: (a, b) -> (a ~ b => t) -> (a, b)
+
+SimpleFail15.hs:5:8:
+ Illegal polymorphic or qualified type: a ~ b => t
+ Perhaps you intended to use -XRankNTypes or -XRank2Types
+ In the type signature for `foo':
+ foo :: (a, b) -> (a ~ b => t) -> (a, b)
diff --git a/testsuite/tests/indexed-types/should_fail/SimpleFail16.stderr b/testsuite/tests/indexed-types/should_fail/SimpleFail16.stderr
index 0573e15aea..9466ee14a7 100644
--- a/testsuite/tests/indexed-types/should_fail/SimpleFail16.stderr
+++ b/testsuite/tests/indexed-types/should_fail/SimpleFail16.stderr
@@ -1,6 +1,11 @@
SimpleFail16.hs:10:12:
- Couldn't match type `F ()' with `p0 a0'
+ Couldn't match expected type `F ()' with actual type `p0 a0'
+ The type variables `p0', `a0' are ambiguous
+ Possible cause: the monomorphism restriction applied to the following:
+ bar :: p0 a0 (bound at SimpleFail16.hs:10:1)
+ Probable fix: give these definition(s) an explicit type signature
+ or use -XNoMonomorphismRestriction
In the first argument of `foo', namely `(undefined :: F ())'
In the expression: foo (undefined :: F ())
In an equation for `bar': bar = foo (undefined :: F ())
diff --git a/testsuite/tests/indexed-types/should_fail/SimpleFail1a.stderr b/testsuite/tests/indexed-types/should_fail/SimpleFail1a.stderr
index 24be6db7ed..ba950b41f1 100644
--- a/testsuite/tests/indexed-types/should_fail/SimpleFail1a.stderr
+++ b/testsuite/tests/indexed-types/should_fail/SimpleFail1a.stderr
@@ -1,4 +1,4 @@
-
-SimpleFail1a.hs:4:1:
- Number of parameters must match family declaration; expected 2
- In the data type instance declaration for `T1'
+
+SimpleFail1a.hs:4:1:
+ Number of parameters must match family declaration; expected 2
+ In the data instance declaration for `T1'
diff --git a/testsuite/tests/indexed-types/should_fail/SimpleFail1b.stderr b/testsuite/tests/indexed-types/should_fail/SimpleFail1b.stderr
index 3677317034..8becc3e8fc 100644
--- a/testsuite/tests/indexed-types/should_fail/SimpleFail1b.stderr
+++ b/testsuite/tests/indexed-types/should_fail/SimpleFail1b.stderr
@@ -1,4 +1,4 @@
-
-SimpleFail1b.hs:4:1:
- Number of parameters must match family declaration; expected 2
- In the data type instance declaration for `T1'
+
+SimpleFail1b.hs:4:1:
+ Number of parameters must match family declaration; expected 2
+ In the data instance declaration for `T1'
diff --git a/testsuite/tests/indexed-types/should_fail/SimpleFail2a.stderr b/testsuite/tests/indexed-types/should_fail/SimpleFail2a.stderr
index 3743d05168..67d9d24daf 100644
--- a/testsuite/tests/indexed-types/should_fail/SimpleFail2a.stderr
+++ b/testsuite/tests/indexed-types/should_fail/SimpleFail2a.stderr
@@ -1,6 +1,6 @@
-
-SimpleFail2a.hs:11:3:
- Type indexes must match class instance head
- Found `a' but expected `Int'
- In the data type instance declaration for `Sd'
- In the instance declaration for `C Int'
+
+SimpleFail2a.hs:11:3:
+ Type indexes must match class instance head
+ Found `a' but expected `Int'
+ In the data instance declaration for `Sd'
+ In the instance declaration for `C Int'
diff --git a/testsuite/tests/indexed-types/should_fail/SimpleFail3a.stderr b/testsuite/tests/indexed-types/should_fail/SimpleFail3a.stderr
index 9a93d9fc90..164351a01f 100644
--- a/testsuite/tests/indexed-types/should_fail/SimpleFail3a.stderr
+++ b/testsuite/tests/indexed-types/should_fail/SimpleFail3a.stderr
@@ -1,5 +1,5 @@
-
-SimpleFail3a.hs:10:3:
- Wrong category of family instance; declaration was for a data type
- In the type synonym instance declaration for `S1'
- In the instance declaration for `C1 Int'
+
+SimpleFail3a.hs:10:3:
+ Wrong category of family instance; declaration was for a data type
+ In the type instance declaration for `S1'
+ In the instance declaration for `C1 Int'
diff --git a/testsuite/tests/indexed-types/should_fail/SimpleFail5a.stderr b/testsuite/tests/indexed-types/should_fail/SimpleFail5a.stderr
index 861ef5c869..76afd8aedf 100644
--- a/testsuite/tests/indexed-types/should_fail/SimpleFail5a.stderr
+++ b/testsuite/tests/indexed-types/should_fail/SimpleFail5a.stderr
@@ -1,10 +1,10 @@
-
-SimpleFail5a.hs:31:11:
- Couldn't match type `a' with `Int'
- `a' is a rigid type variable bound by
- the type signature for bar3wrong :: S3 a -> a
- at SimpleFail5a.hs:31:1
- Expected type: S3 a
- Actual type: S3 Int
- In the pattern: D3Int
- In an equation for `bar3wrong': bar3wrong D3Int = 1
+
+SimpleFail5a.hs:31:11:
+ Couldn't match type `a' with `Int'
+ `a' is a rigid type variable bound by
+ the type signature for bar3wrong :: S3 a -> a
+ at SimpleFail5a.hs:30:14
+ Expected type: S3 a
+ Actual type: S3 Int
+ In the pattern: D3Int
+ In an equation for `bar3wrong': bar3wrong D3Int = 1
diff --git a/testsuite/tests/indexed-types/should_fail/SimpleFail5b.stderr b/testsuite/tests/indexed-types/should_fail/SimpleFail5b.stderr
index 34e7cab285..bd28918f15 100644
--- a/testsuite/tests/indexed-types/should_fail/SimpleFail5b.stderr
+++ b/testsuite/tests/indexed-types/should_fail/SimpleFail5b.stderr
@@ -1,6 +1,6 @@
SimpleFail5b.hs:31:12:
- Couldn't match expected type `Int' with actual type `Char'
+ Couldn't match type `Char' with `Int'
Expected type: S3 Int
Actual type: S3 Char
In the pattern: D3Char
diff --git a/testsuite/tests/indexed-types/should_fail/SimpleFail6.stderr b/testsuite/tests/indexed-types/should_fail/SimpleFail6.stderr
index c5c7e8a86a..679aaf8722 100644
--- a/testsuite/tests/indexed-types/should_fail/SimpleFail6.stderr
+++ b/testsuite/tests/indexed-types/should_fail/SimpleFail6.stderr
@@ -1,2 +1,5 @@
-SimpleFail6.hs:7:11: Illegal repeated type variable `a'
+SimpleFail6.hs:7:11:
+ Conflicting definitions for `a'
+ Bound at: SimpleFail6.hs:7:11
+ SimpleFail6.hs:7:13
diff --git a/testsuite/tests/indexed-types/should_fail/SimpleFail7.stderr b/testsuite/tests/indexed-types/should_fail/SimpleFail7.stderr
index 04131efe33..59d2413441 100644
--- a/testsuite/tests/indexed-types/should_fail/SimpleFail7.stderr
+++ b/testsuite/tests/indexed-types/should_fail/SimpleFail7.stderr
@@ -1,4 +1,4 @@
-
-SimpleFail7.hs:8:1:
- Associated type `S5' must be inside a class instance
- In the data type instance declaration for `S5'
+
+SimpleFail7.hs:8:1:
+ Associated type `S5' must be inside a class instance
+ In the data instance declaration for `S5'
diff --git a/testsuite/tests/indexed-types/should_fail/SimpleFail9.stderr b/testsuite/tests/indexed-types/should_fail/SimpleFail9.stderr
index ac39575f6e..fb75e60bca 100644
--- a/testsuite/tests/indexed-types/should_fail/SimpleFail9.stderr
+++ b/testsuite/tests/indexed-types/should_fail/SimpleFail9.stderr
@@ -1,6 +1,6 @@
-
-SimpleFail9.hs:13:3:
- Type indexes must match class instance head
- Found `(b, Int)' but expected `(a, Int)'
- In the data type instance declaration for `S7'
- In the instance declaration for `C7 Char (a, Int)'
+
+SimpleFail9.hs:13:3:
+ Type indexes must match class instance head
+ Found `(b, Int)' but expected `(a, Int)'
+ In the data instance declaration for `S7'
+ In the instance declaration for `C7 Char (a, Int)'
diff --git a/testsuite/tests/indexed-types/should_fail/SkolemOccursLoop.hs b/testsuite/tests/indexed-types/should_fail/SkolemOccursLoop.hs
index 2d51ea42fc..1696a454dd 100644
--- a/testsuite/tests/indexed-types/should_fail/SkolemOccursLoop.hs
+++ b/testsuite/tests/indexed-types/should_fail/SkolemOccursLoop.hs
@@ -1,4 +1,4 @@
-{-# OPTIONS_GHC -fcontext-stack=10 #-}
+{-# OPTIONS_GHC -fcontext-stack=3 #-}
{-# LANGUAGE TypeFamilies, FlexibleContexts, EmptyDataDecls #-}
module SkolemOccursLoop where
diff --git a/testsuite/tests/indexed-types/should_fail/SkolemOccursLoop.stderr b/testsuite/tests/indexed-types/should_fail/SkolemOccursLoop.stderr
index 0900da8e33..d1eb0efcb5 100644
--- a/testsuite/tests/indexed-types/should_fail/SkolemOccursLoop.stderr
+++ b/testsuite/tests/indexed-types/should_fail/SkolemOccursLoop.stderr
@@ -1,10 +1 @@
-
-SkolemOccursLoop.hs:18:0:
- Couldn't match expected type `F a'
- against inferred type `[T (F (T (F a)))]'
- When generalising the type(s) for `test1'
-
-SkolemOccursLoop.hs:31:0:
- Couldn't match expected type `S (G (a, a))'
- against inferred type `G [S (G (a, a))]'
- When generalising the type(s) for `test2'
+Skolem occurs loop
diff --git a/testsuite/tests/indexed-types/should_fail/T1897b.stderr b/testsuite/tests/indexed-types/should_fail/T1897b.stderr
index f2f5250b0b..ff0667af2d 100644
--- a/testsuite/tests/indexed-types/should_fail/T1897b.stderr
+++ b/testsuite/tests/indexed-types/should_fail/T1897b.stderr
@@ -1,13 +1,15 @@
-
-T1897b.hs:16:1:
- Could not deduce (Depend a ~ Depend a0)
- from the context (Bug a)
- bound by the inferred type for `isValid':
- Bug a => [Depend a] -> Bool
- at T1897b.hs:16:1-41
- NB: `Depend' is a type function, and may not be injective
- Expected type: [Depend a] -> Bool
- Actual type: [Depend a0] -> Bool
- When checking that `isValid'
- has the inferred type `forall a1. Bug a1 => [Depend a1] -> Bool'
- Probable cause: the inferred type is ambiguous
+
+T1897b.hs:16:1:
+ Could not deduce (Depend a ~ Depend a0)
+ from the context (Bug a)
+ bound by the inferred type for `isValid':
+ Bug a => [Depend a] -> Bool
+ at T1897b.hs:16:1-41
+ NB: `Depend' is a type function, and may not be injective
+ The type variable `a0' is ambiguous
+ Possible fix: add a type signature that fixes these type variable(s)
+ Expected type: [Depend a] -> Bool
+ Actual type: [Depend a0] -> Bool
+ When checking that `isValid'
+ has the inferred type `forall a. Bug a => [Depend a] -> Bool'
+ Probable cause: the inferred type is ambiguous
diff --git a/testsuite/tests/indexed-types/should_fail/T1900.stderr b/testsuite/tests/indexed-types/should_fail/T1900.stderr
index 8ea2bb97be..d20a63216b 100644
--- a/testsuite/tests/indexed-types/should_fail/T1900.stderr
+++ b/testsuite/tests/indexed-types/should_fail/T1900.stderr
@@ -1,18 +1,19 @@
-
-T1900.hs:11:12:
- No instance for (Num ())
- arising from a use of `+'
- Possible fix: add an instance declaration for (Num ())
- In the expression: (+ 1)
- In an equation for `trans': trans = (+ 1)
- In the instance declaration for `Bug Int'
-
-T1900.hs:14:22:
- Could not deduce (Depend s0 ~ Depend s)
- from the context (Bug s)
- bound by the type signature for check :: Bug s => Depend s -> Bool
- at T1900.hs:14:1-22
- NB: `Depend' is a type function, and may not be injective
- In the first argument of `trans', namely `d'
- In the second argument of `(==)', namely `trans d'
- In the expression: d == trans d
+
+T1900.hs:11:12:
+ No instance for (Num ()) arising from a use of `+'
+ Possible fix: add an instance declaration for (Num ())
+ In the expression: (+ 1)
+ In an equation for `trans': trans = (+ 1)
+ In the instance declaration for `Bug Int'
+
+T1900.hs:14:16:
+ Could not deduce (Depend s ~ Depend s0)
+ from the context (Bug s)
+ bound by the type signature for check :: Bug s => Depend s -> Bool
+ at T1900.hs:13:10-36
+ NB: `Depend' is a type function, and may not be injective
+ The type variable `s0' is ambiguous
+ Possible fix: add a type signature that fixes these type variable(s)
+ In the return type of a call of `trans'
+ In the second argument of `(==)', namely `trans d'
+ In the expression: d == trans d
diff --git a/testsuite/tests/indexed-types/should_fail/T2157.stderr b/testsuite/tests/indexed-types/should_fail/T2157.stderr
index b28f879663..d9e11c26df 100644
--- a/testsuite/tests/indexed-types/should_fail/T2157.stderr
+++ b/testsuite/tests/indexed-types/should_fail/T2157.stderr
@@ -1,4 +1,4 @@
-
-T2157.hs:7:1:
- Type synonym `S' should have 2 arguments, but has been given 1
- In the type synonym instance declaration for `F'
+
+T2157.hs:7:1:
+ Type synonym `S' should have 2 arguments, but has been given 1
+ In the type instance declaration for `F'
diff --git a/testsuite/tests/indexed-types/should_fail/T2239.stderr b/testsuite/tests/indexed-types/should_fail/T2239.stderr
index b8d5fc7a36..759ba2babd 100644
--- a/testsuite/tests/indexed-types/should_fail/T2239.stderr
+++ b/testsuite/tests/indexed-types/should_fail/T2239.stderr
@@ -1,10 +1,10 @@
T2239.hs:47:13:
- Couldn't match expected type `b -> b'
- with actual type `forall b1. MyEq b1 Bool => b1 -> b1'
- Expected type: (forall b1. MyEq b1 Bool => b1 -> b1) -> b -> b
- Actual type: (forall b1. MyEq b1 Bool => b1 -> b1)
- -> forall b1. MyEq b1 Bool => b1 -> b1
+ Couldn't match type `forall b1. MyEq b1 Bool => b1 -> b1'
+ with `b -> b'
+ Expected type: (forall b. MyEq b Bool => b -> b) -> b -> b
+ Actual type: (forall b. MyEq b Bool => b -> b)
+ -> forall b. MyEq b Bool => b -> b
In the expression:
id ::
(forall b. MyEq b Bool => b -> b)
@@ -16,11 +16,11 @@ T2239.hs:47:13:
-> (forall b. MyEq b Bool => b -> b)
T2239.hs:50:13:
- Couldn't match expected type `b -> b'
- with actual type `forall b1. b1 ~ Bool => b1 -> b1'
- Expected type: (forall b1. b1 ~ Bool => b1 -> b1) -> b -> b
- Actual type: (forall b1. b1 ~ Bool => b1 -> b1)
- -> forall b1. b1 ~ Bool => b1 -> b1
+ Couldn't match type `forall b1. b1 ~ Bool => b1 -> b1'
+ with `b -> b'
+ Expected type: (forall b. b ~ Bool => b -> b) -> b -> b
+ Actual type: (forall b. b ~ Bool => b -> b)
+ -> forall b. b ~ Bool => b -> b
In the expression:
id ::
(forall b. b ~ Bool => b -> b) -> (forall b. b ~ Bool => b -> b)
diff --git a/testsuite/tests/indexed-types/should_fail/T2334.stderr b/testsuite/tests/indexed-types/should_fail/T2334.stderr
index 5bb3e24c22..deceb48755 100644
--- a/testsuite/tests/indexed-types/should_fail/T2334.stderr
+++ b/testsuite/tests/indexed-types/should_fail/T2334.stderr
@@ -11,7 +11,7 @@ T2334.hs:10:27:
In the definition of data constructor `H'
In the newtype instance declaration for `F'
-T2334.hs:13:15:
+T2334.hs:12:15:
Conflicting family instance declarations:
- data instance F Bool -- Defined at T2334.hs:13:15
data instance F Bool -- Defined at T2334.hs:12:15
+ data instance F Bool -- Defined at T2334.hs:13:15
diff --git a/testsuite/tests/indexed-types/should_fail/T2544.stderr b/testsuite/tests/indexed-types/should_fail/T2544.stderr
index cacd5a3610..b6bc222fa0 100644
--- a/testsuite/tests/indexed-types/should_fail/T2544.stderr
+++ b/testsuite/tests/indexed-types/should_fail/T2544.stderr
@@ -1,22 +1,13 @@
-
-T2544.hs:15:12:
- Could not deduce (IxMap r ~ IxMap i1)
- from the context (Ix l, Ix r)
- bound by the instance declaration at T2544.hs:13:10-37
- NB: `IxMap' is a type function, and may not be injective
- Expected type: IxMap (l :|: r) [Int]
- Actual type: BiApp (IxMap i0) (IxMap i1) [Int]
- In the return type of a call of `BiApp'
- In the expression: BiApp empty empty
- In an equation for `empty': empty = BiApp empty empty
-
-T2544.hs:15:12:
- Could not deduce (IxMap l ~ IxMap i0)
- from the context (Ix l, Ix r)
- bound by the instance declaration at T2544.hs:13:10-37
- NB: `IxMap' is a type function, and may not be injective
- Expected type: IxMap (l :|: r) [Int]
- Actual type: BiApp (IxMap i0) (IxMap i1) [Int]
- In the return type of a call of `BiApp'
- In the expression: BiApp empty empty
- In an equation for `empty': empty = BiApp empty empty
+
+T2544.hs:15:12:
+ Could not deduce (IxMap r ~ IxMap i1)
+ from the context (Ix l, Ix r)
+ bound by the instance declaration at T2544.hs:13:10-37
+ NB: `IxMap' is a type function, and may not be injective
+ The type variable `i1' is ambiguous
+ Possible fix: add a type signature that fixes these type variable(s)
+ Expected type: IxMap (l :|: r) [Int]
+ Actual type: BiApp (IxMap i0) (IxMap i1) [Int]
+ In the return type of a call of `BiApp'
+ In the expression: BiApp empty empty
+ In an equation for `empty': empty = BiApp empty empty
diff --git a/testsuite/tests/indexed-types/should_fail/T2664.stderr b/testsuite/tests/indexed-types/should_fail/T2664.stderr
index 2ed47d9e1a..cfd248dc15 100644
--- a/testsuite/tests/indexed-types/should_fail/T2664.stderr
+++ b/testsuite/tests/indexed-types/should_fail/T2664.stderr
@@ -1,20 +1,20 @@
-
-T2664.hs:31:17:
- Could not deduce (a ~ b)
- from the context (Connect a, Connect b)
- bound by the instance declaration at T2664.hs:22:10-52
- or from ((a :*: b) ~ Dual c, c ~ Dual (a :*: b))
- bound by the type signature for
- newPChan :: ((a :*: b) ~ Dual c, c ~ Dual (a :*: b)) =>
- IO (PChan (a :*: b), PChan c)
- at T2664.hs:(23,5)-(31,87)
- `a' is a rigid type variable bound by
- the instance declaration at T2664.hs:22:19
- `b' is a rigid type variable bound by
- the instance declaration at T2664.hs:22:30
- Expected type: PChan (a :*: b)
- Actual type: PChan (b :*: a)
- In the expression: O $ takeMVar v
- In the first argument of `return', namely
- `(O $ takeMVar v,
- E (pchoose Right v newPChan) (pchoose Left v newPChan))'
+
+T2664.hs:31:52:
+ Could not deduce (b ~ a)
+ from the context (Connect a, Connect b)
+ bound by the instance declaration at T2664.hs:22:10-52
+ or from ((a :*: b) ~ Dual c, c ~ Dual (a :*: b))
+ bound by the type signature for
+ newPChan :: ((a :*: b) ~ Dual c, c ~ Dual (a :*: b)) =>
+ IO (PChan (a :*: b), PChan c)
+ at T2664.hs:(23,5)-(31,87)
+ `b' is a rigid type variable bound by
+ the instance declaration at T2664.hs:22:10
+ `a' is a rigid type variable bound by
+ the instance declaration at T2664.hs:22:10
+ Expected type: Dual (Dual a)
+ Actual type: b
+ In the third argument of `pchoose', namely `newPChan'
+ In the first argument of `E', namely `(pchoose Right v newPChan)'
+ In the expression:
+ E (pchoose Right v newPChan) (pchoose Left v newPChan)
diff --git a/testsuite/tests/indexed-types/should_fail/T2677.stderr b/testsuite/tests/indexed-types/should_fail/T2677.stderr
index e1c08e3b15..d160b2a89c 100644
--- a/testsuite/tests/indexed-types/should_fail/T2677.stderr
+++ b/testsuite/tests/indexed-types/should_fail/T2677.stderr
@@ -1,5 +1,5 @@
-T2677.hs:7:15:
+T2677.hs:6:15:
Conflicting family instance declarations:
- type instance A Int -- Defined at T2677.hs:7:15
type instance A a -- Defined at T2677.hs:6:15
+ type instance A Int -- Defined at T2677.hs:7:15
diff --git a/testsuite/tests/indexed-types/should_fail/T2693.stderr b/testsuite/tests/indexed-types/should_fail/T2693.stderr
index 9bbe1c3b3b..4894b895eb 100644
--- a/testsuite/tests/indexed-types/should_fail/T2693.stderr
+++ b/testsuite/tests/indexed-types/should_fail/T2693.stderr
@@ -1,33 +1,16 @@
-
-T2693.hs:10:7:
- Couldn't match type `TFn a' with `TFn a0'
- NB: `TFn' is a type function, and may not be injective
- When checking that `x' has the inferred type `forall a. TFn a'
- Probable cause: the inferred type is ambiguous
- In the expression:
- do { let Just x = ...;
- let n = fst x + fst x;
- return () }
- In an equation for `f':
- f = do { let Just x = ...;
- let n = ...;
- return () }
-
-T2693.hs:18:15:
- Couldn't match type `TFn a3' with `(a2, b0)'
- In the first argument of `fst', namely `x'
- In the first argument of `(+)', namely `fst x'
- In the expression: fst x + snd x
-
-T2693.hs:18:23:
- Couldn't match type `TFn a5' with `(a4, a2)'
- In the first argument of `snd', namely `x'
- In the second argument of `(+)', namely `snd x'
- In the expression: fst x + snd x
-
-T2693.hs:28:20:
- Couldn't match type `TFn a0' with `PVR a1'
- Expected type: () -> Maybe (PVR a1)
- Actual type: () -> Maybe (TFn a0)
- In the first argument of `mapM', namely `g'
- In a stmt of a 'do' block: pvs <- mapM g undefined
+
+T2693.hs:10:7:
+ Couldn't match expected type `TFn a' with actual type `TFn a0'
+ NB: `TFn' is a type function, and may not be injective
+ The type variable `a0' is ambiguous
+ Possible fix: add a type signature that fixes these type variable(s)
+ When checking that `x' has the inferred type `forall a. TFn a'
+ Probable cause: the inferred type is ambiguous
+ In the expression:
+ do { let Just x = ...;
+ let n = fst x + fst x;
+ return () }
+ In an equation for `f':
+ f = do { let Just x = ...;
+ let n = ...;
+ return () }
diff --git a/testsuite/tests/indexed-types/should_fail/T3092.stderr b/testsuite/tests/indexed-types/should_fail/T3092.stderr
index ceea069f8f..f45e35580a 100644
--- a/testsuite/tests/indexed-types/should_fail/T3092.stderr
+++ b/testsuite/tests/indexed-types/should_fail/T3092.stderr
@@ -1,10 +1,10 @@
-
-T3092.hs:5:1:
- Illegal family instance for `T'
- (T is not an indexed type family)
- In the data type instance declaration for `T'
-
-T3092.hs:8:1:
- Illegal family instance for `S'
- (S is not an indexed type family)
- In the type synonym instance declaration for `S'
+
+T3092.hs:5:1:
+ Illegal family instance for `T'
+ (T is not an indexed type family)
+ In the data instance declaration for `T'
+
+T3092.hs:8:1:
+ Illegal family instance for `S'
+ (S is not an indexed type family)
+ In the type instance declaration for `S'
diff --git a/testsuite/tests/indexed-types/should_fail/T3330a.hs b/testsuite/tests/indexed-types/should_fail/T3330a.hs
index c09eb0fd5c..c13760c6ac 100644
--- a/testsuite/tests/indexed-types/should_fail/T3330a.hs
+++ b/testsuite/tests/indexed-types/should_fail/T3330a.hs
@@ -7,7 +7,9 @@
module T3330a where
-import Control.Monad.Writer
+newtype Writer w a = Writer { runWriter :: (a, w) }
+execWriter :: Writer w a -> w
+execWriter m = snd (runWriter m)
data AnyF (s :: * -> *) = AnyF
class HFunctor (f :: (* -> *) -> * -> *)
diff --git a/testsuite/tests/indexed-types/should_fail/T3330a.stderr b/testsuite/tests/indexed-types/should_fail/T3330a.stderr
index cafc6bcfac..9f423e023a 100644
--- a/testsuite/tests/indexed-types/should_fail/T3330a.stderr
+++ b/testsuite/tests/indexed-types/should_fail/T3330a.stderr
@@ -1,9 +1,22 @@
-
-T3330a.hs:17:34:
- Couldn't match type `s' with `(->) (s ix1 -> ix1)'
- `s' is a rigid type variable bound by
- the type signature for children :: s ix -> PF s r ix -> [AnyF s]
- at T3330a.hs:17:1
- In the first argument of `hmapM', namely `p'
- In the first argument of `execWriter', namely `(hmapM p collect x)'
- In the expression: execWriter (hmapM p collect x)
+
+T3330a.hs:19:34:
+ Couldn't match type `s' with `(->) (s0 ix1 -> ix1)'
+ `s' is a rigid type variable bound by
+ the type signature for children :: s ix -> PF s r ix -> [AnyF s]
+ at T3330a.hs:18:13
+ Expected type: (s0 ix0 -> ix1) -> r ix1 -> Writer [AnyF s] (r ix1)
+ Actual type: s ix
+ In the first argument of `hmapM', namely `p'
+ In the first argument of `execWriter', namely `(hmapM p collect x)'
+ In the expression: execWriter (hmapM p collect x)
+
+T3330a.hs:19:44:
+ Couldn't match type `ix' with `r ix0 -> Writer [AnyF s0] (r ix0)'
+ `ix' is a rigid type variable bound by
+ the type signature for children :: s ix -> PF s r ix -> [AnyF s]
+ at T3330a.hs:18:13
+ Expected type: PF s r (r ix0 -> Writer [AnyF s0] (r ix0))
+ Actual type: PF s r ix
+ In the third argument of `hmapM', namely `x'
+ In the first argument of `execWriter', namely `(hmapM p collect x)'
+ In the expression: execWriter (hmapM p collect x)
diff --git a/testsuite/tests/indexed-types/should_fail/T3330c.stderr b/testsuite/tests/indexed-types/should_fail/T3330c.stderr
index 506f91e47e..c9b6348e70 100644
--- a/testsuite/tests/indexed-types/should_fail/T3330c.stderr
+++ b/testsuite/tests/indexed-types/should_fail/T3330c.stderr
@@ -1,18 +1,10 @@
-
-T3330c.hs:23:43:
- Couldn't match type `Der ((->) x)' with `R'
- In the first argument of `plug', namely `rf'
- In the first argument of `Inl', namely `(plug rf df x)'
- In the expression: Inl (plug rf df x)
-
-T3330c.hs:23:43:
- Couldn't match type `f1' with `f1 x'
- `f1' is a rigid type variable bound by
- a pattern with constructor
- RSum :: forall (f :: * -> *) (g :: * -> *).
- R f -> R g -> R (f :+: g),
- in an equation for plug'
- at T3330c.hs:23:8
- In the first argument of `plug', namely `rf'
- In the first argument of `Inl', namely `(plug rf df x)'
- In the expression: Inl (plug rf df x)
+
+T3330c.hs:23:43:
+ Couldn't match kind `*' with `* -> *'
+ Expected type: Der ((->) x) (f1 x)
+ Actual type: R f1
+ Kind incompatibility when matching types:
+ Der ((->) x) :: * -> *
+ R :: (* -> *) -> *
+ In the first argument of `plug', namely `rf'
+ In the first argument of `Inl', namely `(plug rf df x)'
diff --git a/testsuite/tests/indexed-types/should_fail/T3440.stderr b/testsuite/tests/indexed-types/should_fail/T3440.stderr
index fe61b1da65..ab7c5edf84 100644
--- a/testsuite/tests/indexed-types/should_fail/T3440.stderr
+++ b/testsuite/tests/indexed-types/should_fail/T3440.stderr
@@ -1,19 +1,19 @@
-
-T3440.hs:11:22:
- Could not deduce (a1 ~ a)
- from the context (Fam a ~ Fam a1)
- bound by a pattern with constructor
- GADT :: forall a. a -> Fam a -> GADT (Fam a),
- in an equation for `unwrap'
- at T3440.hs:11:9-16
- `a1' is a rigid type variable bound by
- a pattern with constructor
- GADT :: forall a. a -> Fam a -> GADT (Fam a),
- in an equation for `unwrap'
- at T3440.hs:11:9
- `a' is a rigid type variable bound by
- the type signature for unwrap :: GADT (Fam a) -> (a, Fam a)
- at T3440.hs:11:1
- In the expression: x
- In the expression: (x, y)
- In an equation for `unwrap': unwrap (GADT x y) = (x, y)
+
+T3440.hs:11:22:
+ Could not deduce (a ~ a1)
+ from the context (Fam a ~ Fam a1)
+ bound by a pattern with constructor
+ GADT :: forall a. a -> Fam a -> GADT (Fam a),
+ in an equation for `unwrap'
+ at T3440.hs:11:9-16
+ `a' is a rigid type variable bound by
+ the type signature for unwrap :: GADT (Fam a) -> (a, Fam a)
+ at T3440.hs:10:11
+ `a1' is a rigid type variable bound by
+ a pattern with constructor
+ GADT :: forall a. a -> Fam a -> GADT (Fam a),
+ in an equation for `unwrap'
+ at T3440.hs:11:9
+ In the expression: x
+ In the expression: (x, y)
+ In an equation for `unwrap': unwrap (GADT x y) = (x, y)
diff --git a/testsuite/tests/indexed-types/should_fail/T4093a.stderr b/testsuite/tests/indexed-types/should_fail/T4093a.stderr
index 0b36936be9..4a16563d9d 100644
--- a/testsuite/tests/indexed-types/should_fail/T4093a.stderr
+++ b/testsuite/tests/indexed-types/should_fail/T4093a.stderr
@@ -1,14 +1,14 @@
-
-T4093a.hs:8:8:
- Could not deduce (e ~ ())
- from the context (Foo e ~ Maybe e)
- bound by the type signature for hang :: Foo e ~ Maybe e => Foo e
- at T4093a.hs:8:1-14
- `e' is a rigid type variable bound by
- the type signature for hang :: Foo e ~ Maybe e => Foo e
- at T4093a.hs:8:1
- Expected type: Foo e
- Actual type: Maybe ()
- In the return type of a call of `Just'
- In the expression: Just ()
- In an equation for `hang': hang = Just ()
+
+T4093a.hs:8:8:
+ Could not deduce (e ~ ())
+ from the context (Foo e ~ Maybe e)
+ bound by the type signature for hang :: Foo e ~ Maybe e => Foo e
+ at T4093a.hs:7:9-34
+ `e' is a rigid type variable bound by
+ the type signature for hang :: Foo e ~ Maybe e => Foo e
+ at T4093a.hs:7:9
+ Expected type: Foo e
+ Actual type: Maybe ()
+ In the return type of a call of `Just'
+ In the expression: Just ()
+ In an equation for `hang': hang = Just ()
diff --git a/testsuite/tests/indexed-types/should_fail/T4093b.stderr b/testsuite/tests/indexed-types/should_fail/T4093b.stderr
index 6818e006ef..948ba565df 100644
--- a/testsuite/tests/indexed-types/should_fail/T4093b.stderr
+++ b/testsuite/tests/indexed-types/should_fail/T4093b.stderr
@@ -7,13 +7,13 @@ T4093b.hs:31:13:
blockToNodeList :: (EitherCO e (A C O n) (A O O n) ~ A e O n,
EitherCO x (A C C n) (A C O n) ~ A C x n) =>
Block n e x -> A e x n
- at T4093b.hs:(25,1)-(34,19)
+ at T4093b.hs:(20,3)-(22,26)
`e' is a rigid type variable bound by
the type signature for
blockToNodeList :: (EitherCO e (A C O n) (A O O n) ~ A e O n,
EitherCO x (A C C n) (A C O n) ~ A C x n) =>
Block n e x -> A e x n
- at T4093b.hs:25:1
+ at T4093b.hs:20:12
Expected type: EitherCO e (A C O n) (A O O n)
Actual type: (MaybeC C (n C O), MaybeC O (n O C))
In the expression: (JustC n, NothingC)
diff --git a/testsuite/tests/indexed-types/should_fail/T4099.stderr b/testsuite/tests/indexed-types/should_fail/T4099.stderr
index 926579de74..3512e321bd 100644
--- a/testsuite/tests/indexed-types/should_fail/T4099.stderr
+++ b/testsuite/tests/indexed-types/should_fail/T4099.stderr
@@ -1,13 +1,17 @@
-
-T4099.hs:11:14:
- Couldn't match type `T b' with `T a0'
- NB: `T' is a type function, and may not be injective
- In the first argument of `foo', namely `x'
- In the expression: foo x
- In an equation for `bar1': bar1 x = foo x
-
-T4099.hs:14:14:
- Couldn't match type `T a1' with `Maybe b'
- In the first argument of `foo', namely `x'
- In the expression: foo x
- In an equation for `bar2': bar2 x = foo x
+
+T4099.hs:11:14:
+ Couldn't match expected type `T a0' with actual type `T b'
+ NB: `T' is a type function, and may not be injective
+ The type variable `a0' is ambiguous
+ Possible fix: add a type signature that fixes these type variable(s)
+ In the first argument of `foo', namely `x'
+ In the expression: foo x
+ In an equation for `bar1': bar1 x = foo x
+
+T4099.hs:14:14:
+ Couldn't match expected type `T a1' with actual type `Maybe b'
+ The type variable `a1' is ambiguous
+ Possible fix: add a type signature that fixes these type variable(s)
+ In the first argument of `foo', namely `x'
+ In the expression: foo x
+ In an equation for `bar2': bar2 x = foo x
diff --git a/testsuite/tests/indexed-types/should_fail/T4174.stderr b/testsuite/tests/indexed-types/should_fail/T4174.stderr
index 2a403786d9..81fb603dd8 100644
--- a/testsuite/tests/indexed-types/should_fail/T4174.stderr
+++ b/testsuite/tests/indexed-types/should_fail/T4174.stderr
@@ -1,5 +1,7 @@
T4174.hs:42:12:
Couldn't match type `False' with `True'
+ Expected type: True
+ Actual type: GHCVersion (WayOf m) :>=: GHC6'10 Minor1
In the expression: sync_large_objects
In an equation for `testcase': testcase = sync_large_objects
diff --git a/testsuite/tests/indexed-types/should_fail/T4179.stderr b/testsuite/tests/indexed-types/should_fail/T4179.stderr
index 11bd7d62ad..35209c591f 100644
--- a/testsuite/tests/indexed-types/should_fail/T4179.stderr
+++ b/testsuite/tests/indexed-types/should_fail/T4179.stderr
@@ -1,59 +1,18 @@
-
-T4179.hs:26:16:
- Could not deduce (DoC (x (A2 (FCon x) -> A3 (FCon x))))
- arising from a use of `op'
- from the context (Functor x, DoC (FCon x))
- bound by the type signature for
- fCon :: (Functor x, DoC (FCon x)) =>
- Con x -> A2 (FCon x) -> A3 (FCon x)
- at T4179.hs:26:1-17
- Possible fix:
- add (DoC (x (A2 (FCon x) -> A3 (FCon x)))) to the context of
- the type signature for
- fCon :: (Functor x, DoC (FCon x)) =>
- Con x -> A2 (FCon x) -> A3 (FCon x)
- or add an instance declaration for
- (DoC (x (A2 (FCon x) -> A3 (FCon x))))
- In the first argument of `foldDoC', namely `op'
- In the expression: foldDoC op
- In an equation for `fCon': fCon = foldDoC op
-
-T4179.hs:26:16:
- Could not deduce (A3 (x (A2 (FCon x) -> A3 (FCon x)))
- ~ A3 (FCon x))
- from the context (Functor x, DoC (FCon x))
- bound by the type signature for
- fCon :: (Functor x, DoC (FCon x)) =>
- Con x -> A2 (FCon x) -> A3 (FCon x)
- at T4179.hs:26:1-17
- NB: `A3' is a type function, and may not be injective
- Expected type: A2 (FCon x) -> A3 (FCon x)
- Actual type: A2 (x (A2 (FCon x) -> A3 (FCon x)))
- -> A3 (x (A2 (FCon x) -> A3 (FCon x)))
- Expected type: x (A2 (FCon x) -> A3 (FCon x))
- -> A2 (FCon x) -> A3 (FCon x)
- Actual type: x (A2 (FCon x) -> A3 (FCon x))
- -> A2 (x (A2 (FCon x) -> A3 (FCon x)))
- -> A3 (x (A2 (FCon x) -> A3 (FCon x)))
- In the first argument of `foldDoC', namely `op'
- In the expression: foldDoC op
-
-T4179.hs:26:16:
- Could not deduce (A2 (x (A2 (FCon x) -> A3 (FCon x)))
- ~ A2 (FCon x))
- from the context (Functor x, DoC (FCon x))
- bound by the type signature for
- fCon :: (Functor x, DoC (FCon x)) =>
- Con x -> A2 (FCon x) -> A3 (FCon x)
- at T4179.hs:26:1-17
- NB: `A2' is a type function, and may not be injective
- Expected type: A2 (FCon x) -> A3 (FCon x)
- Actual type: A2 (x (A2 (FCon x) -> A3 (FCon x)))
- -> A3 (x (A2 (FCon x) -> A3 (FCon x)))
- Expected type: x (A2 (FCon x) -> A3 (FCon x))
- -> A2 (FCon x) -> A3 (FCon x)
- Actual type: x (A2 (FCon x) -> A3 (FCon x))
- -> A2 (x (A2 (FCon x) -> A3 (FCon x)))
- -> A3 (x (A2 (FCon x) -> A3 (FCon x)))
- In the first argument of `foldDoC', namely `op'
- In the expression: foldDoC op
+
+T4179.hs:26:16:
+ Could not deduce (A3 (x (A2 (x (Con x)) -> A3 (x (Con x))))
+ ~ A3 (x (Con x)))
+ from the context (Functor x, DoC (FCon x))
+ bound by the type signature for
+ fCon :: (Functor x, DoC (FCon x)) =>
+ Con x -> A2 (FCon x) -> A3 (FCon x)
+ at T4179.hs:25:9-72
+ NB: `A3' is a type function, and may not be injective
+ Expected type: x (A2 (x (Con x)) -> A3 (x (Con x)))
+ -> A2 (x (Con x)) -> A3 (x (Con x))
+ Actual type: x (A2 (x (Con x)) -> A3 (x (Con x)))
+ -> A2 (x (A2 (x (Con x)) -> A3 (x (Con x))))
+ -> A3 (x (A2 (x (Con x)) -> A3 (x (Con x))))
+ In the first argument of `foldDoC', namely `op'
+ In the expression: foldDoC op
+ In an equation for `fCon': fCon = foldDoC op
diff --git a/testsuite/tests/indexed-types/should_fail/T4246.stderr b/testsuite/tests/indexed-types/should_fail/T4246.stderr
index fe1cfce250..14bd8ba407 100644
--- a/testsuite/tests/indexed-types/should_fail/T4246.stderr
+++ b/testsuite/tests/indexed-types/should_fail/T4246.stderr
@@ -4,7 +4,7 @@ T4246.hs:8:9:
type F a -- Defined at T4246.hs:8:9
type F Int -- Defined at T4246.hs:11:9
-T4246.hs:15:15:
+T4246.hs:14:15:
Conflicting family instance declarations:
- type instance G Int -- Defined at T4246.hs:15:15
type instance G Int -- Defined at T4246.hs:14:15
+ type instance G Int -- Defined at T4246.hs:15:15
diff --git a/testsuite/tests/indexed-types/should_fail/T4272.hs b/testsuite/tests/indexed-types/should_fail/T4272.hs
index 3370fc3637..d9fd6d9724 100644
--- a/testsuite/tests/indexed-types/should_fail/T4272.hs
+++ b/testsuite/tests/indexed-types/should_fail/T4272.hs
@@ -10,7 +10,7 @@ class Family (TermFamily a) => TermLike a where
laws :: forall a b. TermLike a => TermFamily a a -> b
laws t = prune t (terms (undefined :: TermFamily a a))
-prune :: TermLike a => TermFamily a a -> TermFamily a a -> b
+prune :: TermLike x => TermFamily x x -> TermFamily x x -> b
prune = undefined
-- terms :: Family f => f a -> a
diff --git a/testsuite/tests/indexed-types/should_fail/T4272.stderr b/testsuite/tests/indexed-types/should_fail/T4272.stderr
index 5c6e38f0ae..e809d9cbb6 100644
--- a/testsuite/tests/indexed-types/should_fail/T4272.stderr
+++ b/testsuite/tests/indexed-types/should_fail/T4272.stderr
@@ -1,8 +1,17 @@
-
-T4272.hs:11:16:
- Occurs check: cannot construct the infinite type:
- a0 = TermFamily a0 a0
- In the first argument of `prune', namely `t'
- In the expression: prune t (terms (undefined :: TermFamily a a))
- In an equation for `laws':
- laws t = prune t (terms (undefined :: TermFamily a a))
+
+T4272.hs:11:26:
+ Could not deduce (a ~ TermFamily a a)
+ from the context (TermLike a)
+ bound by the type signature for
+ laws :: TermLike a => TermFamily a a -> b
+ at T4272.hs:10:9-53
+ `a' is a rigid type variable bound by
+ the type signature for laws :: TermLike a => TermFamily a a -> b
+ at T4272.hs:10:16
+ Expected type: TermFamily a (TermFamily a a)
+ Actual type: TermFamily a a
+ In the first argument of `terms', namely
+ `(undefined :: TermFamily a a)'
+ In the second argument of `prune', namely
+ `(terms (undefined :: TermFamily a a))'
+ In the expression: prune t (terms (undefined :: TermFamily a a))
diff --git a/testsuite/tests/indexed-types/should_fail/T4485.stderr b/testsuite/tests/indexed-types/should_fail/T4485.stderr
index d8ebccb28a..d07eedce97 100644
--- a/testsuite/tests/indexed-types/should_fail/T4485.stderr
+++ b/testsuite/tests/indexed-types/should_fail/T4485.stderr
@@ -17,3 +17,15 @@ T4485.hs:47:15:
In the expression: asChild $ (genElement "foo")
In an equation for `asChild':
asChild b = asChild $ (genElement "foo")
+
+T4485.hs:47:26:
+ No instance for (XMLGen m0) arising from a use of `genElement'
+ The type variable `m0' is ambiguous
+ Possible fix: add a type signature that fixes these type variable(s)
+ Note: there is a potential instance available:
+ instance [overlap ok] XMLGen (IdentityT m)
+ -- Defined at T4485.hs:36:10
+ In the second argument of `($)', namely `(genElement "foo")'
+ In the expression: asChild $ (genElement "foo")
+ In an equation for `asChild':
+ asChild b = asChild $ (genElement "foo")
diff --git a/testsuite/tests/indexed-types/should_fail/T5439.stderr b/testsuite/tests/indexed-types/should_fail/T5439.stderr
index 6f4a9c9c1e..4d8742c955 100644
--- a/testsuite/tests/indexed-types/should_fail/T5439.stderr
+++ b/testsuite/tests/indexed-types/should_fail/T5439.stderr
@@ -1,4 +1,14 @@
+T5439.hs:83:28:
+ Couldn't match type `Attempt (WaitOpResult (WaitOps rs))'
+ with `Attempt (HNth n0 l0) -> Attempt (HElemOf l0)'
+ Expected type: f (Attempt (HNth n0 l0) -> Attempt (HElemOf l0))
+ Actual type: f (Attempt (WaitOpResult (WaitOps rs)))
+ In the first argument of `complete', namely `ev'
+ In the expression: complete ev
+ In a stmt of a 'do' block:
+ c <- complete ev $ inj $ Failure (e :: SomeException)
+
T5439.hs:83:39:
Couldn't match expected type `Peano n0'
with actual type `Attempt α0'
diff --git a/testsuite/tests/indexed-types/should_fail/T5934.hs b/testsuite/tests/indexed-types/should_fail/T5934.hs
new file mode 100644
index 0000000000..2af0b97887
--- /dev/null
+++ b/testsuite/tests/indexed-types/should_fail/T5934.hs
@@ -0,0 +1,12 @@
+{-# LANGUAGE RankNTypes, TypeFamilies, KindSignatures #-}
+
+module T5934 where
+import Control.Monad.ST
+
+data Gen s
+type GenST s = Gen (PrimState (ST s))
+
+run :: (forall s. GenST s) -> Int
+run = 0
+
+type family PrimState (m :: * -> *)
diff --git a/testsuite/tests/indexed-types/should_fail/T5934.stderr b/testsuite/tests/indexed-types/should_fail/T5934.stderr
new file mode 100644
index 0000000000..4ec24d3cc9
--- /dev/null
+++ b/testsuite/tests/indexed-types/should_fail/T5934.stderr
@@ -0,0 +1,8 @@
+
+T5934.hs:10:7:
+ No instance for (Num ((forall s. GenST s) -> Int))
+ arising from the literal `0'
+ Possible fix:
+ add an instance declaration for (Num ((forall s. GenST s) -> Int))
+ In the expression: 0
+ In an equation for `run': run = 0
diff --git a/testsuite/tests/indexed-types/should_fail/TyFamArity1.stderr b/testsuite/tests/indexed-types/should_fail/TyFamArity1.stderr
index 7ee60167e1..f92f986d21 100644
--- a/testsuite/tests/indexed-types/should_fail/TyFamArity1.stderr
+++ b/testsuite/tests/indexed-types/should_fail/TyFamArity1.stderr
@@ -1,4 +1,4 @@
-
-TyFamArity1.hs:4:1:
- Number of parameters must match family declaration; expected 2
- In the type synonym instance declaration for `T'
+
+TyFamArity1.hs:4:1:
+ Number of parameters must match family declaration; expected 2
+ In the type instance declaration for `T'
diff --git a/testsuite/tests/indexed-types/should_fail/TyFamArity2.stderr b/testsuite/tests/indexed-types/should_fail/TyFamArity2.stderr
index 30d0526664..2423a065b2 100644
--- a/testsuite/tests/indexed-types/should_fail/TyFamArity2.stderr
+++ b/testsuite/tests/indexed-types/should_fail/TyFamArity2.stderr
@@ -1,4 +1,4 @@
-
-TyFamArity2.hs:4:1:
- Number of parameters must match family declaration; expected 1
- In the type synonym instance declaration for `T'
+
+TyFamArity2.hs:4:1:
+ Number of parameters must match family declaration; expected 1
+ In the type instance declaration for `T'
diff --git a/testsuite/tests/indexed-types/should_fail/TyFamUndec.stderr b/testsuite/tests/indexed-types/should_fail/TyFamUndec.stderr
index 2fc8e1b078..cbb0a6bde3 100644
--- a/testsuite/tests/indexed-types/should_fail/TyFamUndec.stderr
+++ b/testsuite/tests/indexed-types/should_fail/TyFamUndec.stderr
@@ -1,18 +1,18 @@
-
-TyFamUndec.hs:6:1:
- Variable occurs more often than in instance head
- in the type family application: T (b, b)
- (Use -XUndecidableInstances to permit this)
- In the type synonym instance declaration for `T'
-
-TyFamUndec.hs:7:1:
- Application is no smaller than the instance head
- in the type family application: T (a, Maybe b)
- (Use -XUndecidableInstances to permit this)
- In the type synonym instance declaration for `T'
-
-TyFamUndec.hs:8:1:
- Nested type family application
- in the type family application: T (a, T b)
- (Use -XUndecidableInstances to permit this)
- In the type synonym instance declaration for `T'
+
+TyFamUndec.hs:6:1:
+ Variable occurs more often than in instance head
+ in the type family application: T (b, b)
+ (Use -XUndecidableInstances to permit this)
+ In the type instance declaration for `T'
+
+TyFamUndec.hs:7:1:
+ Application is no smaller than the instance head
+ in the type family application: T (a, Maybe b)
+ (Use -XUndecidableInstances to permit this)
+ In the type instance declaration for `T'
+
+TyFamUndec.hs:8:1:
+ Nested type family application
+ in the type family application: T (a, T b)
+ (Use -XUndecidableInstances to permit this)
+ In the type instance declaration for `T'
diff --git a/testsuite/tests/indexed-types/should_fail/all.T b/testsuite/tests/indexed-types/should_fail/all.T
index 4f0b077bdf..d3e691f0b0 100644
--- a/testsuite/tests/indexed-types/should_fail/all.T
+++ b/testsuite/tests/indexed-types/should_fail/all.T
@@ -56,7 +56,7 @@ test('T4272', normal, compile_fail, [''])
test('T4246', normal, compile_fail, [''])
test('T4093a', normal, compile_fail, [''])
test('T4093b', normal, compile_fail, [''])
-test('T3330a', reqlib('mtl'), compile_fail, [''])
+test('T3330a', normal, compile_fail, [''])
test('T3330b', normal, compile_fail, [''])
test('T3330c', normal, compile_fail, [''])
test('T4179', normal, compile_fail, [''])
@@ -72,4 +72,7 @@ test('T2544', normal, compile_fail, [''])
test('T1897b', normal, compile_fail, [''])
test('T5439', normal, compile_fail, [''])
test('T5515', normal, compile_fail, [''])
+test('T5763', expect_broken(5673), compile_fail, [''])
+
+test('T5934', normal, compile_fail, [''])
diff --git a/testsuite/tests/indexed-types/should_run/T5719.hs b/testsuite/tests/indexed-types/should_run/T5719.hs
new file mode 100644
index 0000000000..91ec01afbf
--- /dev/null
+++ b/testsuite/tests/indexed-types/should_run/T5719.hs
@@ -0,0 +1,28 @@
+{-# LANGUAGE ConstraintKinds, TypeFamilies, FlexibleInstances #-}
+module Main where
+
+import GHC.Prim (Constraint)
+
+import Prelude hiding (Functor, fmap)
+
+import Data.Set (Set)
+import qualified Data.Set as S (map, fromList)
+
+class Functor f where
+ type C f a :: Constraint
+ type C f a = ()
+
+ fmap :: (C f a, C f b) => (a -> b) -> f a -> f b
+
+instance Functor Set where
+ type C Set a = Ord a
+ fmap = S.map
+
+instance Functor [] where
+ fmap = map
+-- type C [] a = ()
+
+testList = fmap (+1) [1,2,3]
+testSet = fmap (+1) (S.fromList [1,2,3])
+
+main = do { print testList; print testSet }
diff --git a/testsuite/tests/indexed-types/should_run/T5719.stdout b/testsuite/tests/indexed-types/should_run/T5719.stdout
new file mode 100644
index 0000000000..a7cf4e8628
--- /dev/null
+++ b/testsuite/tests/indexed-types/should_run/T5719.stdout
@@ -0,0 +1,2 @@
+[2,3,4]
+fromList [2,3,4]
diff --git a/testsuite/tests/indexed-types/should_run/all.T b/testsuite/tests/indexed-types/should_run/all.T
index 454e702c0e..c8f1f17643 100644
--- a/testsuite/tests/indexed-types/should_run/all.T
+++ b/testsuite/tests/indexed-types/should_run/all.T
@@ -6,3 +6,4 @@ test('T4235', normal, compile_and_run, [''])
test('GMapAssoc', normal, compile_and_run, ['-package containers'])
test('GMapTop', normal, compile_and_run, ['-package containers'])
+test('T5719', normal, compile_and_run, [''])
diff --git a/testsuite/tests/layout/layout001.stdout b/testsuite/tests/layout/layout001.stdout
index be1cd62b20..4273843584 100644
--- a/testsuite/tests/layout/layout001.stdout
+++ b/testsuite/tests/layout/layout001.stdout
@@ -4,6 +4,6 @@ Running with -XAlternativeLayoutRule
layout001.hs:6:3: parse error on input `where'
Running with -XAlternativeLayoutRule -XAlternativeLayoutRuleTransitional
-layout001.hs:6:3:
+layout001.hs:6:3: Warning:
transitional layout will not be accepted in the future:
`where' clause at the same depth as implicit layout block
diff --git a/testsuite/tests/layout/layout003.stdout b/testsuite/tests/layout/layout003.stdout
index e40bac2077..1eb86386e3 100644
--- a/testsuite/tests/layout/layout003.stdout
+++ b/testsuite/tests/layout/layout003.stdout
@@ -4,6 +4,6 @@ Running with -XAlternativeLayoutRule
layout003.hs:11:4: parse error on input `|'
Running with -XAlternativeLayoutRule -XAlternativeLayoutRuleTransitional
-layout003.hs:11:4:
+layout003.hs:11:4: Warning:
transitional layout will not be accepted in the future:
`|' at the same depth as implicit layout block
diff --git a/testsuite/tests/layout/layout006.stdout b/testsuite/tests/layout/layout006.stdout
index ab33a6e1fe..84704ba1ab 100644
--- a/testsuite/tests/layout/layout006.stdout
+++ b/testsuite/tests/layout/layout006.stdout
@@ -4,6 +4,6 @@ Running with -XAlternativeLayoutRule
layout006.hs:12:2: parse error on input `|'
Running with -XAlternativeLayoutRule -XAlternativeLayoutRuleTransitional
-layout006.hs:12:2:
+layout006.hs:12:2: Warning:
transitional layout will not be accepted in the future:
`|' at the same depth as implicit layout block
diff --git a/testsuite/tests/lib/CPUTime/CPUTime001.hs b/testsuite/tests/lib/CPUTime/CPUTime001.hs
deleted file mode 100644
index 6c43c57ec5..0000000000
--- a/testsuite/tests/lib/CPUTime/CPUTime001.hs
+++ /dev/null
@@ -1,26 +0,0 @@
--- !!! Test getCPUTime
-
-import System.CPUTime
-import System.IO
-
-main :: IO ()
-main = do
- t28 <- timeFib 28
- t29 <- timeFib 29
- t30 <- timeFib 30
- print (t28 <= t29, t29 <= t30)
-
-timeFib :: Integer -> IO Integer
-timeFib n = do
- start <- getCPUTime
- print (nfib n)
- end <- getCPUTime
- return (end - start)
-
-nfib :: Integer -> Integer
-nfib n
- | n <= 1 = 1
- | otherwise = (n1 + n2 + 1)
- where
- n1 = nfib (n-1)
- n2 = nfib (n-2)
diff --git a/testsuite/tests/lib/CPUTime/CPUTime001.stdout b/testsuite/tests/lib/CPUTime/CPUTime001.stdout
deleted file mode 100644
index 032e7595f0..0000000000
--- a/testsuite/tests/lib/CPUTime/CPUTime001.stdout
+++ /dev/null
@@ -1,4 +0,0 @@
-1028457
-1664079
-2692537
-(True,True)
diff --git a/testsuite/tests/lib/CPUTime/all.T b/testsuite/tests/lib/CPUTime/all.T
deleted file mode 100644
index d204b0a7aa..0000000000
--- a/testsuite/tests/lib/CPUTime/all.T
+++ /dev/null
@@ -1 +0,0 @@
-test('CPUTime001', normal, compile_and_run, [''])
diff --git a/testsuite/tests/lib/Char/all.T b/testsuite/tests/lib/Char/all.T
deleted file mode 100644
index 81ecb28f69..0000000000
--- a/testsuite/tests/lib/Char/all.T
+++ /dev/null
@@ -1,10 +0,0 @@
-test('readLitChar', normal, compile_and_run, [''])
-
-if config.platform == 'i386-unknown-openbsd':
- ways = expect_fail
-else:
- ways = normal
-
-test('unicode001', ways, compile_and_run, [''])
-test('unicode002', ways, compile_and_run, [''])
-
diff --git a/testsuite/tests/lib/Char/readLitChar.hs b/testsuite/tests/lib/Char/readLitChar.hs
deleted file mode 100644
index 7dc01e36e4..0000000000
--- a/testsuite/tests/lib/Char/readLitChar.hs
+++ /dev/null
@@ -1,12 +0,0 @@
-module Main (main)
-where
-
-import Data.Char (digitToInt, lexLitChar, readLitChar)
-
-main :: IO ()
-main =
- do putStrLn (show $ readLitChar "A")
- putStrLn (show $ readLitChar "'A'")
- putStrLn (show $ lexLitChar "A")
- putStrLn (show $ lexLitChar "'A'")
-
diff --git a/testsuite/tests/lib/Char/readLitChar.stdout b/testsuite/tests/lib/Char/readLitChar.stdout
deleted file mode 100644
index 649c342e4a..0000000000
--- a/testsuite/tests/lib/Char/readLitChar.stdout
+++ /dev/null
@@ -1,4 +0,0 @@
-[('A',"")]
-[('\'',"A'")]
-[("A","")]
-[("'","A'")]
diff --git a/testsuite/tests/lib/Char/unicode001.hs b/testsuite/tests/lib/Char/unicode001.hs
deleted file mode 100644
index 90da1d80ee..0000000000
--- a/testsuite/tests/lib/Char/unicode001.hs
+++ /dev/null
@@ -1,46 +0,0 @@
--- !!! Tests the various character classifiactions for a selection of Unicode
--- characters.
-
-module Main where
-
-import Data.Char
-
-main = do
- putStrLn (" " ++ concat (map (++" ") strs))
- mapM putStrLn (map do_char chars)
- where
- do_char char = s ++ (take (12-length s) (repeat ' ')) ++ concat (map f bs)
- where
- s = show char
- bs = map ($char) functions
- f True = "X "
- f False = " "
-
-strs = ["upper","lower","alpha","alnum","digit","print","space","cntrl"]
-
-functions = [isUpper,isLower,isAlpha,isAlphaNum,isDigit,isPrint,isSpace,isControl]
-
-chars = [backspace,tab,space,zero,lower_a,upper_a,delete,
- right_pointing_double_angle_quotation_mark,
- greek_capital_letter_alpha,
- bengali_digit_zero,
- en_space,
- gothic_letter_ahsa,
- monospaced_digit_zero
- ]
-
-backspace = '\x08'
-tab = '\t'
-space = ' '
-zero = '0'
-lower_a = 'a'
-upper_a = 'A'
-delete = '\x7f'
-right_pointing_double_angle_quotation_mark = '\xBB'
-latin_small_letter_i_with_caron = '\x1D0'
-combining_acute_accent = '\x301'
-greek_capital_letter_alpha = '\x0391'
-bengali_digit_zero = '\x09E6'
-en_space = '\x2002'
-gothic_letter_ahsa = '\x10330'
-monospaced_digit_zero = '\x1D7F6'
diff --git a/testsuite/tests/lib/Char/unicode001.stdout b/testsuite/tests/lib/Char/unicode001.stdout
deleted file mode 100644
index 86163abae1..0000000000
--- a/testsuite/tests/lib/Char/unicode001.stdout
+++ /dev/null
@@ -1,14 +0,0 @@
- upper lower alpha alnum digit print space cntrl
-'\b' X
-'\t' X X
-' ' X X
-'0' X X X
-'a' X X X X
-'A' X X X X
-'\DEL' X
-'\187' X
-'\913' X X X X
-'\2534' X X
-'\8194' X X
-'\66352' X X X
-'\120822' X X
diff --git a/testsuite/tests/lib/Char/unicode001.stdout-hugs b/testsuite/tests/lib/Char/unicode001.stdout-hugs
deleted file mode 100644
index 98c9568f8e..0000000000
--- a/testsuite/tests/lib/Char/unicode001.stdout-hugs
+++ /dev/null
@@ -1,14 +0,0 @@
- upper lower alpha alnum digit print space cntrl
-'\b' X
-'\t' X X
-' ' X X
-'0' X X X
-'a' X X X X
-'A' X X X X
-'\DEL' X
-'\187' X
-'\913' X X X X
-'\2534' X X
-'\8194' X
-'\66352' X X X
-'\120822' X X
diff --git a/testsuite/tests/lib/Char/unicode002.hs b/testsuite/tests/lib/Char/unicode002.hs
deleted file mode 100644
index 50ed5ddf44..0000000000
--- a/testsuite/tests/lib/Char/unicode002.hs
+++ /dev/null
@@ -1,44 +0,0 @@
-module Main where
-
-
-import Data.Char
-import Numeric
-
-header = "Code C P S U L A D"
-
-preds = [
- isControl,
- isPrint,
- isSpace,
- isUpper,
- isLower,
- isAlpha,
- isDigit]
-
-prtBool :: Bool -> String
-
-prtBool True = "T "
-prtBool False = "F "
-
-showCode :: Char -> Int -> String
-
-showCode c w = code ++ pad
- where
- code = show (ord c)
- l = length code
- spaces = map anytospace [1..]
- anytospace _ = ' '
- pad | l >= w = ""
- | otherwise = take (w - l) spaces
-
-charCode :: Char -> String
-
-rapply a b = b a
-
-charCode c = (showCode c 5) ++ (foldr1 (++) $ map prtBool $ map (rapply c) preds)
-
-main = do
- putStrLn header
- mapM (putStrLn . charCode) [ (chr 0) .. (chr 6553) ]
-
-
diff --git a/testsuite/tests/lib/Char/unicode002.stdout b/testsuite/tests/lib/Char/unicode002.stdout
deleted file mode 100644
index 5c1f4c3342..0000000000
--- a/testsuite/tests/lib/Char/unicode002.stdout
+++ /dev/null
@@ -1,6555 +0,0 @@
-Code C P S U L A D
-0 T F F F F F F
-1 T F F F F F F
-2 T F F F F F F
-3 T F F F F F F
-4 T F F F F F F
-5 T F F F F F F
-6 T F F F F F F
-7 T F F F F F F
-8 T F F F F F F
-9 T F T F F F F
-10 T F T F F F F
-11 T F T F F F F
-12 T F T F F F F
-13 T F T F F F F
-14 T F F F F F F
-15 T F F F F F F
-16 T F F F F F F
-17 T F F F F F F
-18 T F F F F F F
-19 T F F F F F F
-20 T F F F F F F
-21 T F F F F F F
-22 T F F F F F F
-23 T F F F F F F
-24 T F F F F F F
-25 T F F F F F F
-26 T F F F F F F
-27 T F F F F F F
-28 T F F F F F F
-29 T F F F F F F
-30 T F F F F F F
-31 T F F F F F F
-32 F T T F F F F
-33 F T F F F F F
-34 F T F F F F F
-35 F T F F F F F
-36 F T F F F F F
-37 F T F F F F F
-38 F T F F F F F
-39 F T F F F F F
-40 F T F F F F F
-41 F T F F F F F
-42 F T F F F F F
-43 F T F F F F F
-44 F T F F F F F
-45 F T F F F F F
-46 F T F F F F F
-47 F T F F F F F
-48 F T F F F F T
-49 F T F F F F T
-50 F T F F F F T
-51 F T F F F F T
-52 F T F F F F T
-53 F T F F F F T
-54 F T F F F F T
-55 F T F F F F T
-56 F T F F F F T
-57 F T F F F F T
-58 F T F F F F F
-59 F T F F F F F
-60 F T F F F F F
-61 F T F F F F F
-62 F T F F F F F
-63 F T F F F F F
-64 F T F F F F F
-65 F T F T F T F
-66 F T F T F T F
-67 F T F T F T F
-68 F T F T F T F
-69 F T F T F T F
-70 F T F T F T F
-71 F T F T F T F
-72 F T F T F T F
-73 F T F T F T F
-74 F T F T F T F
-75 F T F T F T F
-76 F T F T F T F
-77 F T F T F T F
-78 F T F T F T F
-79 F T F T F T F
-80 F T F T F T F
-81 F T F T F T F
-82 F T F T F T F
-83 F T F T F T F
-84 F T F T F T F
-85 F T F T F T F
-86 F T F T F T F
-87 F T F T F T F
-88 F T F T F T F
-89 F T F T F T F
-90 F T F T F T F
-91 F T F F F F F
-92 F T F F F F F
-93 F T F F F F F
-94 F T F F F F F
-95 F T F F F F F
-96 F T F F F F F
-97 F T F F T T F
-98 F T F F T T F
-99 F T F F T T F
-100 F T F F T T F
-101 F T F F T T F
-102 F T F F T T F
-103 F T F F T T F
-104 F T F F T T F
-105 F T F F T T F
-106 F T F F T T F
-107 F T F F T T F
-108 F T F F T T F
-109 F T F F T T F
-110 F T F F T T F
-111 F T F F T T F
-112 F T F F T T F
-113 F T F F T T F
-114 F T F F T T F
-115 F T F F T T F
-116 F T F F T T F
-117 F T F F T T F
-118 F T F F T T F
-119 F T F F T T F
-120 F T F F T T F
-121 F T F F T T F
-122 F T F F T T F
-123 F T F F F F F
-124 F T F F F F F
-125 F T F F F F F
-126 F T F F F F F
-127 T F F F F F F
-128 T F F F F F F
-129 T F F F F F F
-130 T F F F F F F
-131 T F F F F F F
-132 T F F F F F F
-133 T F F F F F F
-134 T F F F F F F
-135 T F F F F F F
-136 T F F F F F F
-137 T F F F F F F
-138 T F F F F F F
-139 T F F F F F F
-140 T F F F F F F
-141 T F F F F F F
-142 T F F F F F F
-143 T F F F F F F
-144 T F F F F F F
-145 T F F F F F F
-146 T F F F F F F
-147 T F F F F F F
-148 T F F F F F F
-149 T F F F F F F
-150 T F F F F F F
-151 T F F F F F F
-152 T F F F F F F
-153 T F F F F F F
-154 T F F F F F F
-155 T F F F F F F
-156 T F F F F F F
-157 T F F F F F F
-158 T F F F F F F
-159 T F F F F F F
-160 F T T F F F F
-161 F T F F F F F
-162 F T F F F F F
-163 F T F F F F F
-164 F T F F F F F
-165 F T F F F F F
-166 F T F F F F F
-167 F T F F F F F
-168 F T F F F F F
-169 F T F F F F F
-170 F T F F T T F
-171 F T F F F F F
-172 F T F F F F F
-173 F F F F F F F
-174 F T F F F F F
-175 F T F F F F F
-176 F T F F F F F
-177 F T F F F F F
-178 F T F F F F F
-179 F T F F F F F
-180 F T F F F F F
-181 F T F F T T F
-182 F T F F F F F
-183 F T F F F F F
-184 F T F F F F F
-185 F T F F F F F
-186 F T F F T T F
-187 F T F F F F F
-188 F T F F F F F
-189 F T F F F F F
-190 F T F F F F F
-191 F T F F F F F
-192 F T F T F T F
-193 F T F T F T F
-194 F T F T F T F
-195 F T F T F T F
-196 F T F T F T F
-197 F T F T F T F
-198 F T F T F T F
-199 F T F T F T F
-200 F T F T F T F
-201 F T F T F T F
-202 F T F T F T F
-203 F T F T F T F
-204 F T F T F T F
-205 F T F T F T F
-206 F T F T F T F
-207 F T F T F T F
-208 F T F T F T F
-209 F T F T F T F
-210 F T F T F T F
-211 F T F T F T F
-212 F T F T F T F
-213 F T F T F T F
-214 F T F T F T F
-215 F T F F F F F
-216 F T F T F T F
-217 F T F T F T F
-218 F T F T F T F
-219 F T F T F T F
-220 F T F T F T F
-221 F T F T F T F
-222 F T F T F T F
-223 F T F F T T F
-224 F T F F T T F
-225 F T F F T T F
-226 F T F F T T F
-227 F T F F T T F
-228 F T F F T T F
-229 F T F F T T F
-230 F T F F T T F
-231 F T F F T T F
-232 F T F F T T F
-233 F T F F T T F
-234 F T F F T T F
-235 F T F F T T F
-236 F T F F T T F
-237 F T F F T T F
-238 F T F F T T F
-239 F T F F T T F
-240 F T F F T T F
-241 F T F F T T F
-242 F T F F T T F
-243 F T F F T T F
-244 F T F F T T F
-245 F T F F T T F
-246 F T F F T T F
-247 F T F F F F F
-248 F T F F T T F
-249 F T F F T T F
-250 F T F F T T F
-251 F T F F T T F
-252 F T F F T T F
-253 F T F F T T F
-254 F T F F T T F
-255 F T F F T T F
-256 F T F T F T F
-257 F T F F T T F
-258 F T F T F T F
-259 F T F F T T F
-260 F T F T F T F
-261 F T F F T T F
-262 F T F T F T F
-263 F T F F T T F
-264 F T F T F T F
-265 F T F F T T F
-266 F T F T F T F
-267 F T F F T T F
-268 F T F T F T F
-269 F T F F T T F
-270 F T F T F T F
-271 F T F F T T F
-272 F T F T F T F
-273 F T F F T T F
-274 F T F T F T F
-275 F T F F T T F
-276 F T F T F T F
-277 F T F F T T F
-278 F T F T F T F
-279 F T F F T T F
-280 F T F T F T F
-281 F T F F T T F
-282 F T F T F T F
-283 F T F F T T F
-284 F T F T F T F
-285 F T F F T T F
-286 F T F T F T F
-287 F T F F T T F
-288 F T F T F T F
-289 F T F F T T F
-290 F T F T F T F
-291 F T F F T T F
-292 F T F T F T F
-293 F T F F T T F
-294 F T F T F T F
-295 F T F F T T F
-296 F T F T F T F
-297 F T F F T T F
-298 F T F T F T F
-299 F T F F T T F
-300 F T F T F T F
-301 F T F F T T F
-302 F T F T F T F
-303 F T F F T T F
-304 F T F T F T F
-305 F T F F T T F
-306 F T F T F T F
-307 F T F F T T F
-308 F T F T F T F
-309 F T F F T T F
-310 F T F T F T F
-311 F T F F T T F
-312 F T F F T T F
-313 F T F T F T F
-314 F T F F T T F
-315 F T F T F T F
-316 F T F F T T F
-317 F T F T F T F
-318 F T F F T T F
-319 F T F T F T F
-320 F T F F T T F
-321 F T F T F T F
-322 F T F F T T F
-323 F T F T F T F
-324 F T F F T T F
-325 F T F T F T F
-326 F T F F T T F
-327 F T F T F T F
-328 F T F F T T F
-329 F T F F T T F
-330 F T F T F T F
-331 F T F F T T F
-332 F T F T F T F
-333 F T F F T T F
-334 F T F T F T F
-335 F T F F T T F
-336 F T F T F T F
-337 F T F F T T F
-338 F T F T F T F
-339 F T F F T T F
-340 F T F T F T F
-341 F T F F T T F
-342 F T F T F T F
-343 F T F F T T F
-344 F T F T F T F
-345 F T F F T T F
-346 F T F T F T F
-347 F T F F T T F
-348 F T F T F T F
-349 F T F F T T F
-350 F T F T F T F
-351 F T F F T T F
-352 F T F T F T F
-353 F T F F T T F
-354 F T F T F T F
-355 F T F F T T F
-356 F T F T F T F
-357 F T F F T T F
-358 F T F T F T F
-359 F T F F T T F
-360 F T F T F T F
-361 F T F F T T F
-362 F T F T F T F
-363 F T F F T T F
-364 F T F T F T F
-365 F T F F T T F
-366 F T F T F T F
-367 F T F F T T F
-368 F T F T F T F
-369 F T F F T T F
-370 F T F T F T F
-371 F T F F T T F
-372 F T F T F T F
-373 F T F F T T F
-374 F T F T F T F
-375 F T F F T T F
-376 F T F T F T F
-377 F T F T F T F
-378 F T F F T T F
-379 F T F T F T F
-380 F T F F T T F
-381 F T F T F T F
-382 F T F F T T F
-383 F T F F T T F
-384 F T F F T T F
-385 F T F T F T F
-386 F T F T F T F
-387 F T F F T T F
-388 F T F T F T F
-389 F T F F T T F
-390 F T F T F T F
-391 F T F T F T F
-392 F T F F T T F
-393 F T F T F T F
-394 F T F T F T F
-395 F T F T F T F
-396 F T F F T T F
-397 F T F F T T F
-398 F T F T F T F
-399 F T F T F T F
-400 F T F T F T F
-401 F T F T F T F
-402 F T F F T T F
-403 F T F T F T F
-404 F T F T F T F
-405 F T F F T T F
-406 F T F T F T F
-407 F T F T F T F
-408 F T F T F T F
-409 F T F F T T F
-410 F T F F T T F
-411 F T F F T T F
-412 F T F T F T F
-413 F T F T F T F
-414 F T F F T T F
-415 F T F T F T F
-416 F T F T F T F
-417 F T F F T T F
-418 F T F T F T F
-419 F T F F T T F
-420 F T F T F T F
-421 F T F F T T F
-422 F T F T F T F
-423 F T F T F T F
-424 F T F F T T F
-425 F T F T F T F
-426 F T F F T T F
-427 F T F F T T F
-428 F T F T F T F
-429 F T F F T T F
-430 F T F T F T F
-431 F T F T F T F
-432 F T F F T T F
-433 F T F T F T F
-434 F T F T F T F
-435 F T F T F T F
-436 F T F F T T F
-437 F T F T F T F
-438 F T F F T T F
-439 F T F T F T F
-440 F T F T F T F
-441 F T F F T T F
-442 F T F F T T F
-443 F T F F F T F
-444 F T F T F T F
-445 F T F F T T F
-446 F T F F T T F
-447 F T F F T T F
-448 F T F F F T F
-449 F T F F F T F
-450 F T F F F T F
-451 F T F F F T F
-452 F T F T F T F
-453 F T F T F T F
-454 F T F F T T F
-455 F T F T F T F
-456 F T F T F T F
-457 F T F F T T F
-458 F T F T F T F
-459 F T F T F T F
-460 F T F F T T F
-461 F T F T F T F
-462 F T F F T T F
-463 F T F T F T F
-464 F T F F T T F
-465 F T F T F T F
-466 F T F F T T F
-467 F T F T F T F
-468 F T F F T T F
-469 F T F T F T F
-470 F T F F T T F
-471 F T F T F T F
-472 F T F F T T F
-473 F T F T F T F
-474 F T F F T T F
-475 F T F T F T F
-476 F T F F T T F
-477 F T F F T T F
-478 F T F T F T F
-479 F T F F T T F
-480 F T F T F T F
-481 F T F F T T F
-482 F T F T F T F
-483 F T F F T T F
-484 F T F T F T F
-485 F T F F T T F
-486 F T F T F T F
-487 F T F F T T F
-488 F T F T F T F
-489 F T F F T T F
-490 F T F T F T F
-491 F T F F T T F
-492 F T F T F T F
-493 F T F F T T F
-494 F T F T F T F
-495 F T F F T T F
-496 F T F F T T F
-497 F T F T F T F
-498 F T F T F T F
-499 F T F F T T F
-500 F T F T F T F
-501 F T F F T T F
-502 F T F T F T F
-503 F T F T F T F
-504 F T F T F T F
-505 F T F F T T F
-506 F T F T F T F
-507 F T F F T T F
-508 F T F T F T F
-509 F T F F T T F
-510 F T F T F T F
-511 F T F F T T F
-512 F T F T F T F
-513 F T F F T T F
-514 F T F T F T F
-515 F T F F T T F
-516 F T F T F T F
-517 F T F F T T F
-518 F T F T F T F
-519 F T F F T T F
-520 F T F T F T F
-521 F T F F T T F
-522 F T F T F T F
-523 F T F F T T F
-524 F T F T F T F
-525 F T F F T T F
-526 F T F T F T F
-527 F T F F T T F
-528 F T F T F T F
-529 F T F F T T F
-530 F T F T F T F
-531 F T F F T T F
-532 F T F T F T F
-533 F T F F T T F
-534 F T F T F T F
-535 F T F F T T F
-536 F T F T F T F
-537 F T F F T T F
-538 F T F T F T F
-539 F T F F T T F
-540 F T F T F T F
-541 F T F F T T F
-542 F T F T F T F
-543 F T F F T T F
-544 F T F T F T F
-545 F T F F T T F
-546 F T F T F T F
-547 F T F F T T F
-548 F T F T F T F
-549 F T F F T T F
-550 F T F T F T F
-551 F T F F T T F
-552 F T F T F T F
-553 F T F F T T F
-554 F T F T F T F
-555 F T F F T T F
-556 F T F T F T F
-557 F T F F T T F
-558 F T F T F T F
-559 F T F F T T F
-560 F T F T F T F
-561 F T F F T T F
-562 F T F T F T F
-563 F T F F T T F
-564 F T F F T T F
-565 F T F F T T F
-566 F T F F T T F
-567 F T F F T T F
-568 F T F F T T F
-569 F T F F T T F
-570 F T F T F T F
-571 F T F T F T F
-572 F T F F T T F
-573 F T F T F T F
-574 F T F T F T F
-575 F T F F T T F
-576 F T F F T T F
-577 F T F T F T F
-578 F T F F T T F
-579 F T F T F T F
-580 F T F T F T F
-581 F T F T F T F
-582 F T F T F T F
-583 F T F F T T F
-584 F T F T F T F
-585 F T F F T T F
-586 F T F T F T F
-587 F T F F T T F
-588 F T F T F T F
-589 F T F F T T F
-590 F T F T F T F
-591 F T F F T T F
-592 F T F F T T F
-593 F T F F T T F
-594 F T F F T T F
-595 F T F F T T F
-596 F T F F T T F
-597 F T F F T T F
-598 F T F F T T F
-599 F T F F T T F
-600 F T F F T T F
-601 F T F F T T F
-602 F T F F T T F
-603 F T F F T T F
-604 F T F F T T F
-605 F T F F T T F
-606 F T F F T T F
-607 F T F F T T F
-608 F T F F T T F
-609 F T F F T T F
-610 F T F F T T F
-611 F T F F T T F
-612 F T F F T T F
-613 F T F F T T F
-614 F T F F T T F
-615 F T F F T T F
-616 F T F F T T F
-617 F T F F T T F
-618 F T F F T T F
-619 F T F F T T F
-620 F T F F T T F
-621 F T F F T T F
-622 F T F F T T F
-623 F T F F T T F
-624 F T F F T T F
-625 F T F F T T F
-626 F T F F T T F
-627 F T F F T T F
-628 F T F F T T F
-629 F T F F T T F
-630 F T F F T T F
-631 F T F F T T F
-632 F T F F T T F
-633 F T F F T T F
-634 F T F F T T F
-635 F T F F T T F
-636 F T F F T T F
-637 F T F F T T F
-638 F T F F T T F
-639 F T F F T T F
-640 F T F F T T F
-641 F T F F T T F
-642 F T F F T T F
-643 F T F F T T F
-644 F T F F T T F
-645 F T F F T T F
-646 F T F F T T F
-647 F T F F T T F
-648 F T F F T T F
-649 F T F F T T F
-650 F T F F T T F
-651 F T F F T T F
-652 F T F F T T F
-653 F T F F T T F
-654 F T F F T T F
-655 F T F F T T F
-656 F T F F T T F
-657 F T F F T T F
-658 F T F F T T F
-659 F T F F T T F
-660 F T F F F T F
-661 F T F F T T F
-662 F T F F T T F
-663 F T F F T T F
-664 F T F F T T F
-665 F T F F T T F
-666 F T F F T T F
-667 F T F F T T F
-668 F T F F T T F
-669 F T F F T T F
-670 F T F F T T F
-671 F T F F T T F
-672 F T F F T T F
-673 F T F F T T F
-674 F T F F T T F
-675 F T F F T T F
-676 F T F F T T F
-677 F T F F T T F
-678 F T F F T T F
-679 F T F F T T F
-680 F T F F T T F
-681 F T F F T T F
-682 F T F F T T F
-683 F T F F T T F
-684 F T F F T T F
-685 F T F F T T F
-686 F T F F T T F
-687 F T F F T T F
-688 F T F F F T F
-689 F T F F F T F
-690 F T F F F T F
-691 F T F F F T F
-692 F T F F F T F
-693 F T F F F T F
-694 F T F F F T F
-695 F T F F F T F
-696 F T F F F T F
-697 F T F F F T F
-698 F T F F F T F
-699 F T F F F T F
-700 F T F F F T F
-701 F T F F F T F
-702 F T F F F T F
-703 F T F F F T F
-704 F T F F F T F
-705 F T F F F T F
-706 F T F F F F F
-707 F T F F F F F
-708 F T F F F F F
-709 F T F F F F F
-710 F T F F F T F
-711 F T F F F T F
-712 F T F F F T F
-713 F T F F F T F
-714 F T F F F T F
-715 F T F F F T F
-716 F T F F F T F
-717 F T F F F T F
-718 F T F F F T F
-719 F T F F F T F
-720 F T F F F T F
-721 F T F F F T F
-722 F T F F F F F
-723 F T F F F F F
-724 F T F F F F F
-725 F T F F F F F
-726 F T F F F F F
-727 F T F F F F F
-728 F T F F F F F
-729 F T F F F F F
-730 F T F F F F F
-731 F T F F F F F
-732 F T F F F F F
-733 F T F F F F F
-734 F T F F F F F
-735 F T F F F F F
-736 F T F F F T F
-737 F T F F F T F
-738 F T F F F T F
-739 F T F F F T F
-740 F T F F F T F
-741 F T F F F F F
-742 F T F F F F F
-743 F T F F F F F
-744 F T F F F F F
-745 F T F F F F F
-746 F T F F F F F
-747 F T F F F F F
-748 F T F F F T F
-749 F T F F F F F
-750 F T F F F T F
-751 F T F F F F F
-752 F T F F F F F
-753 F T F F F F F
-754 F T F F F F F
-755 F T F F F F F
-756 F T F F F F F
-757 F T F F F F F
-758 F T F F F F F
-759 F T F F F F F
-760 F T F F F F F
-761 F T F F F F F
-762 F T F F F F F
-763 F T F F F F F
-764 F T F F F F F
-765 F T F F F F F
-766 F T F F F F F
-767 F T F F F F F
-768 F T F F F F F
-769 F T F F F F F
-770 F T F F F F F
-771 F T F F F F F
-772 F T F F F F F
-773 F T F F F F F
-774 F T F F F F F
-775 F T F F F F F
-776 F T F F F F F
-777 F T F F F F F
-778 F T F F F F F
-779 F T F F F F F
-780 F T F F F F F
-781 F T F F F F F
-782 F T F F F F F
-783 F T F F F F F
-784 F T F F F F F
-785 F T F F F F F
-786 F T F F F F F
-787 F T F F F F F
-788 F T F F F F F
-789 F T F F F F F
-790 F T F F F F F
-791 F T F F F F F
-792 F T F F F F F
-793 F T F F F F F
-794 F T F F F F F
-795 F T F F F F F
-796 F T F F F F F
-797 F T F F F F F
-798 F T F F F F F
-799 F T F F F F F
-800 F T F F F F F
-801 F T F F F F F
-802 F T F F F F F
-803 F T F F F F F
-804 F T F F F F F
-805 F T F F F F F
-806 F T F F F F F
-807 F T F F F F F
-808 F T F F F F F
-809 F T F F F F F
-810 F T F F F F F
-811 F T F F F F F
-812 F T F F F F F
-813 F T F F F F F
-814 F T F F F F F
-815 F T F F F F F
-816 F T F F F F F
-817 F T F F F F F
-818 F T F F F F F
-819 F T F F F F F
-820 F T F F F F F
-821 F T F F F F F
-822 F T F F F F F
-823 F T F F F F F
-824 F T F F F F F
-825 F T F F F F F
-826 F T F F F F F
-827 F T F F F F F
-828 F T F F F F F
-829 F T F F F F F
-830 F T F F F F F
-831 F T F F F F F
-832 F T F F F F F
-833 F T F F F F F
-834 F T F F F F F
-835 F T F F F F F
-836 F T F F F F F
-837 F T F F F F F
-838 F T F F F F F
-839 F T F F F F F
-840 F T F F F F F
-841 F T F F F F F
-842 F T F F F F F
-843 F T F F F F F
-844 F T F F F F F
-845 F T F F F F F
-846 F T F F F F F
-847 F T F F F F F
-848 F T F F F F F
-849 F T F F F F F
-850 F T F F F F F
-851 F T F F F F F
-852 F T F F F F F
-853 F T F F F F F
-854 F T F F F F F
-855 F T F F F F F
-856 F T F F F F F
-857 F T F F F F F
-858 F T F F F F F
-859 F T F F F F F
-860 F T F F F F F
-861 F T F F F F F
-862 F T F F F F F
-863 F T F F F F F
-864 F T F F F F F
-865 F T F F F F F
-866 F T F F F F F
-867 F T F F F F F
-868 F T F F F F F
-869 F T F F F F F
-870 F T F F F F F
-871 F T F F F F F
-872 F T F F F F F
-873 F T F F F F F
-874 F T F F F F F
-875 F T F F F F F
-876 F T F F F F F
-877 F T F F F F F
-878 F T F F F F F
-879 F T F F F F F
-880 F T F T F T F
-881 F T F F T T F
-882 F T F T F T F
-883 F T F F T T F
-884 F T F F F T F
-885 F T F F F F F
-886 F T F T F T F
-887 F T F F T T F
-888 F F F F F F F
-889 F F F F F F F
-890 F T F F F T F
-891 F T F F T T F
-892 F T F F T T F
-893 F T F F T T F
-894 F T F F F F F
-895 F F F F F F F
-896 F F F F F F F
-897 F F F F F F F
-898 F F F F F F F
-899 F F F F F F F
-900 F T F F F F F
-901 F T F F F F F
-902 F T F T F T F
-903 F T F F F F F
-904 F T F T F T F
-905 F T F T F T F
-906 F T F T F T F
-907 F F F F F F F
-908 F T F T F T F
-909 F F F F F F F
-910 F T F T F T F
-911 F T F T F T F
-912 F T F F T T F
-913 F T F T F T F
-914 F T F T F T F
-915 F T F T F T F
-916 F T F T F T F
-917 F T F T F T F
-918 F T F T F T F
-919 F T F T F T F
-920 F T F T F T F
-921 F T F T F T F
-922 F T F T F T F
-923 F T F T F T F
-924 F T F T F T F
-925 F T F T F T F
-926 F T F T F T F
-927 F T F T F T F
-928 F T F T F T F
-929 F T F T F T F
-930 F F F F F F F
-931 F T F T F T F
-932 F T F T F T F
-933 F T F T F T F
-934 F T F T F T F
-935 F T F T F T F
-936 F T F T F T F
-937 F T F T F T F
-938 F T F T F T F
-939 F T F T F T F
-940 F T F F T T F
-941 F T F F T T F
-942 F T F F T T F
-943 F T F F T T F
-944 F T F F T T F
-945 F T F F T T F
-946 F T F F T T F
-947 F T F F T T F
-948 F T F F T T F
-949 F T F F T T F
-950 F T F F T T F
-951 F T F F T T F
-952 F T F F T T F
-953 F T F F T T F
-954 F T F F T T F
-955 F T F F T T F
-956 F T F F T T F
-957 F T F F T T F
-958 F T F F T T F
-959 F T F F T T F
-960 F T F F T T F
-961 F T F F T T F
-962 F T F F T T F
-963 F T F F T T F
-964 F T F F T T F
-965 F T F F T T F
-966 F T F F T T F
-967 F T F F T T F
-968 F T F F T T F
-969 F T F F T T F
-970 F T F F T T F
-971 F T F F T T F
-972 F T F F T T F
-973 F T F F T T F
-974 F T F F T T F
-975 F T F T F T F
-976 F T F F T T F
-977 F T F F T T F
-978 F T F T F T F
-979 F T F T F T F
-980 F T F T F T F
-981 F T F F T T F
-982 F T F F T T F
-983 F T F F T T F
-984 F T F T F T F
-985 F T F F T T F
-986 F T F T F T F
-987 F T F F T T F
-988 F T F T F T F
-989 F T F F T T F
-990 F T F T F T F
-991 F T F F T T F
-992 F T F T F T F
-993 F T F F T T F
-994 F T F T F T F
-995 F T F F T T F
-996 F T F T F T F
-997 F T F F T T F
-998 F T F T F T F
-999 F T F F T T F
-1000 F T F T F T F
-1001 F T F F T T F
-1002 F T F T F T F
-1003 F T F F T T F
-1004 F T F T F T F
-1005 F T F F T T F
-1006 F T F T F T F
-1007 F T F F T T F
-1008 F T F F T T F
-1009 F T F F T T F
-1010 F T F F T T F
-1011 F T F F T T F
-1012 F T F T F T F
-1013 F T F F T T F
-1014 F T F F F F F
-1015 F T F T F T F
-1016 F T F F T T F
-1017 F T F T F T F
-1018 F T F T F T F
-1019 F T F F T T F
-1020 F T F F T T F
-1021 F T F T F T F
-1022 F T F T F T F
-1023 F T F T F T F
-1024 F T F T F T F
-1025 F T F T F T F
-1026 F T F T F T F
-1027 F T F T F T F
-1028 F T F T F T F
-1029 F T F T F T F
-1030 F T F T F T F
-1031 F T F T F T F
-1032 F T F T F T F
-1033 F T F T F T F
-1034 F T F T F T F
-1035 F T F T F T F
-1036 F T F T F T F
-1037 F T F T F T F
-1038 F T F T F T F
-1039 F T F T F T F
-1040 F T F T F T F
-1041 F T F T F T F
-1042 F T F T F T F
-1043 F T F T F T F
-1044 F T F T F T F
-1045 F T F T F T F
-1046 F T F T F T F
-1047 F T F T F T F
-1048 F T F T F T F
-1049 F T F T F T F
-1050 F T F T F T F
-1051 F T F T F T F
-1052 F T F T F T F
-1053 F T F T F T F
-1054 F T F T F T F
-1055 F T F T F T F
-1056 F T F T F T F
-1057 F T F T F T F
-1058 F T F T F T F
-1059 F T F T F T F
-1060 F T F T F T F
-1061 F T F T F T F
-1062 F T F T F T F
-1063 F T F T F T F
-1064 F T F T F T F
-1065 F T F T F T F
-1066 F T F T F T F
-1067 F T F T F T F
-1068 F T F T F T F
-1069 F T F T F T F
-1070 F T F T F T F
-1071 F T F T F T F
-1072 F T F F T T F
-1073 F T F F T T F
-1074 F T F F T T F
-1075 F T F F T T F
-1076 F T F F T T F
-1077 F T F F T T F
-1078 F T F F T T F
-1079 F T F F T T F
-1080 F T F F T T F
-1081 F T F F T T F
-1082 F T F F T T F
-1083 F T F F T T F
-1084 F T F F T T F
-1085 F T F F T T F
-1086 F T F F T T F
-1087 F T F F T T F
-1088 F T F F T T F
-1089 F T F F T T F
-1090 F T F F T T F
-1091 F T F F T T F
-1092 F T F F T T F
-1093 F T F F T T F
-1094 F T F F T T F
-1095 F T F F T T F
-1096 F T F F T T F
-1097 F T F F T T F
-1098 F T F F T T F
-1099 F T F F T T F
-1100 F T F F T T F
-1101 F T F F T T F
-1102 F T F F T T F
-1103 F T F F T T F
-1104 F T F F T T F
-1105 F T F F T T F
-1106 F T F F T T F
-1107 F T F F T T F
-1108 F T F F T T F
-1109 F T F F T T F
-1110 F T F F T T F
-1111 F T F F T T F
-1112 F T F F T T F
-1113 F T F F T T F
-1114 F T F F T T F
-1115 F T F F T T F
-1116 F T F F T T F
-1117 F T F F T T F
-1118 F T F F T T F
-1119 F T F F T T F
-1120 F T F T F T F
-1121 F T F F T T F
-1122 F T F T F T F
-1123 F T F F T T F
-1124 F T F T F T F
-1125 F T F F T T F
-1126 F T F T F T F
-1127 F T F F T T F
-1128 F T F T F T F
-1129 F T F F T T F
-1130 F T F T F T F
-1131 F T F F T T F
-1132 F T F T F T F
-1133 F T F F T T F
-1134 F T F T F T F
-1135 F T F F T T F
-1136 F T F T F T F
-1137 F T F F T T F
-1138 F T F T F T F
-1139 F T F F T T F
-1140 F T F T F T F
-1141 F T F F T T F
-1142 F T F T F T F
-1143 F T F F T T F
-1144 F T F T F T F
-1145 F T F F T T F
-1146 F T F T F T F
-1147 F T F F T T F
-1148 F T F T F T F
-1149 F T F F T T F
-1150 F T F T F T F
-1151 F T F F T T F
-1152 F T F T F T F
-1153 F T F F T T F
-1154 F T F F F F F
-1155 F T F F F F F
-1156 F T F F F F F
-1157 F T F F F F F
-1158 F T F F F F F
-1159 F T F F F F F
-1160 F T F F F F F
-1161 F T F F F F F
-1162 F T F T F T F
-1163 F T F F T T F
-1164 F T F T F T F
-1165 F T F F T T F
-1166 F T F T F T F
-1167 F T F F T T F
-1168 F T F T F T F
-1169 F T F F T T F
-1170 F T F T F T F
-1171 F T F F T T F
-1172 F T F T F T F
-1173 F T F F T T F
-1174 F T F T F T F
-1175 F T F F T T F
-1176 F T F T F T F
-1177 F T F F T T F
-1178 F T F T F T F
-1179 F T F F T T F
-1180 F T F T F T F
-1181 F T F F T T F
-1182 F T F T F T F
-1183 F T F F T T F
-1184 F T F T F T F
-1185 F T F F T T F
-1186 F T F T F T F
-1187 F T F F T T F
-1188 F T F T F T F
-1189 F T F F T T F
-1190 F T F T F T F
-1191 F T F F T T F
-1192 F T F T F T F
-1193 F T F F T T F
-1194 F T F T F T F
-1195 F T F F T T F
-1196 F T F T F T F
-1197 F T F F T T F
-1198 F T F T F T F
-1199 F T F F T T F
-1200 F T F T F T F
-1201 F T F F T T F
-1202 F T F T F T F
-1203 F T F F T T F
-1204 F T F T F T F
-1205 F T F F T T F
-1206 F T F T F T F
-1207 F T F F T T F
-1208 F T F T F T F
-1209 F T F F T T F
-1210 F T F T F T F
-1211 F T F F T T F
-1212 F T F T F T F
-1213 F T F F T T F
-1214 F T F T F T F
-1215 F T F F T T F
-1216 F T F T F T F
-1217 F T F T F T F
-1218 F T F F T T F
-1219 F T F T F T F
-1220 F T F F T T F
-1221 F T F T F T F
-1222 F T F F T T F
-1223 F T F T F T F
-1224 F T F F T T F
-1225 F T F T F T F
-1226 F T F F T T F
-1227 F T F T F T F
-1228 F T F F T T F
-1229 F T F T F T F
-1230 F T F F T T F
-1231 F T F F T T F
-1232 F T F T F T F
-1233 F T F F T T F
-1234 F T F T F T F
-1235 F T F F T T F
-1236 F T F T F T F
-1237 F T F F T T F
-1238 F T F T F T F
-1239 F T F F T T F
-1240 F T F T F T F
-1241 F T F F T T F
-1242 F T F T F T F
-1243 F T F F T T F
-1244 F T F T F T F
-1245 F T F F T T F
-1246 F T F T F T F
-1247 F T F F T T F
-1248 F T F T F T F
-1249 F T F F T T F
-1250 F T F T F T F
-1251 F T F F T T F
-1252 F T F T F T F
-1253 F T F F T T F
-1254 F T F T F T F
-1255 F T F F T T F
-1256 F T F T F T F
-1257 F T F F T T F
-1258 F T F T F T F
-1259 F T F F T T F
-1260 F T F T F T F
-1261 F T F F T T F
-1262 F T F T F T F
-1263 F T F F T T F
-1264 F T F T F T F
-1265 F T F F T T F
-1266 F T F T F T F
-1267 F T F F T T F
-1268 F T F T F T F
-1269 F T F F T T F
-1270 F T F T F T F
-1271 F T F F T T F
-1272 F T F T F T F
-1273 F T F F T T F
-1274 F T F T F T F
-1275 F T F F T T F
-1276 F T F T F T F
-1277 F T F F T T F
-1278 F T F T F T F
-1279 F T F F T T F
-1280 F T F T F T F
-1281 F T F F T T F
-1282 F T F T F T F
-1283 F T F F T T F
-1284 F T F T F T F
-1285 F T F F T T F
-1286 F T F T F T F
-1287 F T F F T T F
-1288 F T F T F T F
-1289 F T F F T T F
-1290 F T F T F T F
-1291 F T F F T T F
-1292 F T F T F T F
-1293 F T F F T T F
-1294 F T F T F T F
-1295 F T F F T T F
-1296 F T F T F T F
-1297 F T F F T T F
-1298 F T F T F T F
-1299 F T F F T T F
-1300 F T F T F T F
-1301 F T F F T T F
-1302 F T F T F T F
-1303 F T F F T T F
-1304 F T F T F T F
-1305 F T F F T T F
-1306 F T F T F T F
-1307 F T F F T T F
-1308 F T F T F T F
-1309 F T F F T T F
-1310 F T F T F T F
-1311 F T F F T T F
-1312 F T F T F T F
-1313 F T F F T T F
-1314 F T F T F T F
-1315 F T F F T T F
-1316 F T F T F T F
-1317 F T F F T T F
-1318 F T F T F T F
-1319 F T F F T T F
-1320 F F F F F F F
-1321 F F F F F F F
-1322 F F F F F F F
-1323 F F F F F F F
-1324 F F F F F F F
-1325 F F F F F F F
-1326 F F F F F F F
-1327 F F F F F F F
-1328 F F F F F F F
-1329 F T F T F T F
-1330 F T F T F T F
-1331 F T F T F T F
-1332 F T F T F T F
-1333 F T F T F T F
-1334 F T F T F T F
-1335 F T F T F T F
-1336 F T F T F T F
-1337 F T F T F T F
-1338 F T F T F T F
-1339 F T F T F T F
-1340 F T F T F T F
-1341 F T F T F T F
-1342 F T F T F T F
-1343 F T F T F T F
-1344 F T F T F T F
-1345 F T F T F T F
-1346 F T F T F T F
-1347 F T F T F T F
-1348 F T F T F T F
-1349 F T F T F T F
-1350 F T F T F T F
-1351 F T F T F T F
-1352 F T F T F T F
-1353 F T F T F T F
-1354 F T F T F T F
-1355 F T F T F T F
-1356 F T F T F T F
-1357 F T F T F T F
-1358 F T F T F T F
-1359 F T F T F T F
-1360 F T F T F T F
-1361 F T F T F T F
-1362 F T F T F T F
-1363 F T F T F T F
-1364 F T F T F T F
-1365 F T F T F T F
-1366 F T F T F T F
-1367 F F F F F F F
-1368 F F F F F F F
-1369 F T F F F T F
-1370 F T F F F F F
-1371 F T F F F F F
-1372 F T F F F F F
-1373 F T F F F F F
-1374 F T F F F F F
-1375 F T F F F F F
-1376 F F F F F F F
-1377 F T F F T T F
-1378 F T F F T T F
-1379 F T F F T T F
-1380 F T F F T T F
-1381 F T F F T T F
-1382 F T F F T T F
-1383 F T F F T T F
-1384 F T F F T T F
-1385 F T F F T T F
-1386 F T F F T T F
-1387 F T F F T T F
-1388 F T F F T T F
-1389 F T F F T T F
-1390 F T F F T T F
-1391 F T F F T T F
-1392 F T F F T T F
-1393 F T F F T T F
-1394 F T F F T T F
-1395 F T F F T T F
-1396 F T F F T T F
-1397 F T F F T T F
-1398 F T F F T T F
-1399 F T F F T T F
-1400 F T F F T T F
-1401 F T F F T T F
-1402 F T F F T T F
-1403 F T F F T T F
-1404 F T F F T T F
-1405 F T F F T T F
-1406 F T F F T T F
-1407 F T F F T T F
-1408 F T F F T T F
-1409 F T F F T T F
-1410 F T F F T T F
-1411 F T F F T T F
-1412 F T F F T T F
-1413 F T F F T T F
-1414 F T F F T T F
-1415 F T F F T T F
-1416 F F F F F F F
-1417 F T F F F F F
-1418 F T F F F F F
-1419 F F F F F F F
-1420 F F F F F F F
-1421 F F F F F F F
-1422 F F F F F F F
-1423 F F F F F F F
-1424 F F F F F F F
-1425 F T F F F F F
-1426 F T F F F F F
-1427 F T F F F F F
-1428 F T F F F F F
-1429 F T F F F F F
-1430 F T F F F F F
-1431 F T F F F F F
-1432 F T F F F F F
-1433 F T F F F F F
-1434 F T F F F F F
-1435 F T F F F F F
-1436 F T F F F F F
-1437 F T F F F F F
-1438 F T F F F F F
-1439 F T F F F F F
-1440 F T F F F F F
-1441 F T F F F F F
-1442 F T F F F F F
-1443 F T F F F F F
-1444 F T F F F F F
-1445 F T F F F F F
-1446 F T F F F F F
-1447 F T F F F F F
-1448 F T F F F F F
-1449 F T F F F F F
-1450 F T F F F F F
-1451 F T F F F F F
-1452 F T F F F F F
-1453 F T F F F F F
-1454 F T F F F F F
-1455 F T F F F F F
-1456 F T F F F F F
-1457 F T F F F F F
-1458 F T F F F F F
-1459 F T F F F F F
-1460 F T F F F F F
-1461 F T F F F F F
-1462 F T F F F F F
-1463 F T F F F F F
-1464 F T F F F F F
-1465 F T F F F F F
-1466 F T F F F F F
-1467 F T F F F F F
-1468 F T F F F F F
-1469 F T F F F F F
-1470 F T F F F F F
-1471 F T F F F F F
-1472 F T F F F F F
-1473 F T F F F F F
-1474 F T F F F F F
-1475 F T F F F F F
-1476 F T F F F F F
-1477 F T F F F F F
-1478 F T F F F F F
-1479 F T F F F F F
-1480 F F F F F F F
-1481 F F F F F F F
-1482 F F F F F F F
-1483 F F F F F F F
-1484 F F F F F F F
-1485 F F F F F F F
-1486 F F F F F F F
-1487 F F F F F F F
-1488 F T F F F T F
-1489 F T F F F T F
-1490 F T F F F T F
-1491 F T F F F T F
-1492 F T F F F T F
-1493 F T F F F T F
-1494 F T F F F T F
-1495 F T F F F T F
-1496 F T F F F T F
-1497 F T F F F T F
-1498 F T F F F T F
-1499 F T F F F T F
-1500 F T F F F T F
-1501 F T F F F T F
-1502 F T F F F T F
-1503 F T F F F T F
-1504 F T F F F T F
-1505 F T F F F T F
-1506 F T F F F T F
-1507 F T F F F T F
-1508 F T F F F T F
-1509 F T F F F T F
-1510 F T F F F T F
-1511 F T F F F T F
-1512 F T F F F T F
-1513 F T F F F T F
-1514 F T F F F T F
-1515 F F F F F F F
-1516 F F F F F F F
-1517 F F F F F F F
-1518 F F F F F F F
-1519 F F F F F F F
-1520 F T F F F T F
-1521 F T F F F T F
-1522 F T F F F T F
-1523 F T F F F F F
-1524 F T F F F F F
-1525 F F F F F F F
-1526 F F F F F F F
-1527 F F F F F F F
-1528 F F F F F F F
-1529 F F F F F F F
-1530 F F F F F F F
-1531 F F F F F F F
-1532 F F F F F F F
-1533 F F F F F F F
-1534 F F F F F F F
-1535 F F F F F F F
-1536 F F F F F F F
-1537 F F F F F F F
-1538 F F F F F F F
-1539 F F F F F F F
-1540 F F F F F F F
-1541 F F F F F F F
-1542 F T F F F F F
-1543 F T F F F F F
-1544 F T F F F F F
-1545 F T F F F F F
-1546 F T F F F F F
-1547 F T F F F F F
-1548 F T F F F F F
-1549 F T F F F F F
-1550 F T F F F F F
-1551 F T F F F F F
-1552 F T F F F F F
-1553 F T F F F F F
-1554 F T F F F F F
-1555 F T F F F F F
-1556 F T F F F F F
-1557 F T F F F F F
-1558 F T F F F F F
-1559 F T F F F F F
-1560 F T F F F F F
-1561 F T F F F F F
-1562 F T F F F F F
-1563 F T F F F F F
-1564 F F F F F F F
-1565 F F F F F F F
-1566 F T F F F F F
-1567 F T F F F F F
-1568 F T F F F T F
-1569 F T F F F T F
-1570 F T F F F T F
-1571 F T F F F T F
-1572 F T F F F T F
-1573 F T F F F T F
-1574 F T F F F T F
-1575 F T F F F T F
-1576 F T F F F T F
-1577 F T F F F T F
-1578 F T F F F T F
-1579 F T F F F T F
-1580 F T F F F T F
-1581 F T F F F T F
-1582 F T F F F T F
-1583 F T F F F T F
-1584 F T F F F T F
-1585 F T F F F T F
-1586 F T F F F T F
-1587 F T F F F T F
-1588 F T F F F T F
-1589 F T F F F T F
-1590 F T F F F T F
-1591 F T F F F T F
-1592 F T F F F T F
-1593 F T F F F T F
-1594 F T F F F T F
-1595 F T F F F T F
-1596 F T F F F T F
-1597 F T F F F T F
-1598 F T F F F T F
-1599 F T F F F T F
-1600 F T F F F T F
-1601 F T F F F T F
-1602 F T F F F T F
-1603 F T F F F T F
-1604 F T F F F T F
-1605 F T F F F T F
-1606 F T F F F T F
-1607 F T F F F T F
-1608 F T F F F T F
-1609 F T F F F T F
-1610 F T F F F T F
-1611 F T F F F F F
-1612 F T F F F F F
-1613 F T F F F F F
-1614 F T F F F F F
-1615 F T F F F F F
-1616 F T F F F F F
-1617 F T F F F F F
-1618 F T F F F F F
-1619 F T F F F F F
-1620 F T F F F F F
-1621 F T F F F F F
-1622 F T F F F F F
-1623 F T F F F F F
-1624 F T F F F F F
-1625 F T F F F F F
-1626 F T F F F F F
-1627 F T F F F F F
-1628 F T F F F F F
-1629 F T F F F F F
-1630 F T F F F F F
-1631 F T F F F F F
-1632 F T F F F F F
-1633 F T F F F F F
-1634 F T F F F F F
-1635 F T F F F F F
-1636 F T F F F F F
-1637 F T F F F F F
-1638 F T F F F F F
-1639 F T F F F F F
-1640 F T F F F F F
-1641 F T F F F F F
-1642 F T F F F F F
-1643 F T F F F F F
-1644 F T F F F F F
-1645 F T F F F F F
-1646 F T F F F T F
-1647 F T F F F T F
-1648 F T F F F F F
-1649 F T F F F T F
-1650 F T F F F T F
-1651 F T F F F T F
-1652 F T F F F T F
-1653 F T F F F T F
-1654 F T F F F T F
-1655 F T F F F T F
-1656 F T F F F T F
-1657 F T F F F T F
-1658 F T F F F T F
-1659 F T F F F T F
-1660 F T F F F T F
-1661 F T F F F T F
-1662 F T F F F T F
-1663 F T F F F T F
-1664 F T F F F T F
-1665 F T F F F T F
-1666 F T F F F T F
-1667 F T F F F T F
-1668 F T F F F T F
-1669 F T F F F T F
-1670 F T F F F T F
-1671 F T F F F T F
-1672 F T F F F T F
-1673 F T F F F T F
-1674 F T F F F T F
-1675 F T F F F T F
-1676 F T F F F T F
-1677 F T F F F T F
-1678 F T F F F T F
-1679 F T F F F T F
-1680 F T F F F T F
-1681 F T F F F T F
-1682 F T F F F T F
-1683 F T F F F T F
-1684 F T F F F T F
-1685 F T F F F T F
-1686 F T F F F T F
-1687 F T F F F T F
-1688 F T F F F T F
-1689 F T F F F T F
-1690 F T F F F T F
-1691 F T F F F T F
-1692 F T F F F T F
-1693 F T F F F T F
-1694 F T F F F T F
-1695 F T F F F T F
-1696 F T F F F T F
-1697 F T F F F T F
-1698 F T F F F T F
-1699 F T F F F T F
-1700 F T F F F T F
-1701 F T F F F T F
-1702 F T F F F T F
-1703 F T F F F T F
-1704 F T F F F T F
-1705 F T F F F T F
-1706 F T F F F T F
-1707 F T F F F T F
-1708 F T F F F T F
-1709 F T F F F T F
-1710 F T F F F T F
-1711 F T F F F T F
-1712 F T F F F T F
-1713 F T F F F T F
-1714 F T F F F T F
-1715 F T F F F T F
-1716 F T F F F T F
-1717 F T F F F T F
-1718 F T F F F T F
-1719 F T F F F T F
-1720 F T F F F T F
-1721 F T F F F T F
-1722 F T F F F T F
-1723 F T F F F T F
-1724 F T F F F T F
-1725 F T F F F T F
-1726 F T F F F T F
-1727 F T F F F T F
-1728 F T F F F T F
-1729 F T F F F T F
-1730 F T F F F T F
-1731 F T F F F T F
-1732 F T F F F T F
-1733 F T F F F T F
-1734 F T F F F T F
-1735 F T F F F T F
-1736 F T F F F T F
-1737 F T F F F T F
-1738 F T F F F T F
-1739 F T F F F T F
-1740 F T F F F T F
-1741 F T F F F T F
-1742 F T F F F T F
-1743 F T F F F T F
-1744 F T F F F T F
-1745 F T F F F T F
-1746 F T F F F T F
-1747 F T F F F T F
-1748 F T F F F F F
-1749 F T F F F T F
-1750 F T F F F F F
-1751 F T F F F F F
-1752 F T F F F F F
-1753 F T F F F F F
-1754 F T F F F F F
-1755 F T F F F F F
-1756 F T F F F F F
-1757 F F F F F F F
-1758 F T F F F F F
-1759 F T F F F F F
-1760 F T F F F F F
-1761 F T F F F F F
-1762 F T F F F F F
-1763 F T F F F F F
-1764 F T F F F F F
-1765 F T F F F T F
-1766 F T F F F T F
-1767 F T F F F F F
-1768 F T F F F F F
-1769 F T F F F F F
-1770 F T F F F F F
-1771 F T F F F F F
-1772 F T F F F F F
-1773 F T F F F F F
-1774 F T F F F T F
-1775 F T F F F T F
-1776 F T F F F F F
-1777 F T F F F F F
-1778 F T F F F F F
-1779 F T F F F F F
-1780 F T F F F F F
-1781 F T F F F F F
-1782 F T F F F F F
-1783 F T F F F F F
-1784 F T F F F F F
-1785 F T F F F F F
-1786 F T F F F T F
-1787 F T F F F T F
-1788 F T F F F T F
-1789 F T F F F F F
-1790 F T F F F F F
-1791 F T F F F T F
-1792 F T F F F F F
-1793 F T F F F F F
-1794 F T F F F F F
-1795 F T F F F F F
-1796 F T F F F F F
-1797 F T F F F F F
-1798 F T F F F F F
-1799 F T F F F F F
-1800 F T F F F F F
-1801 F T F F F F F
-1802 F T F F F F F
-1803 F T F F F F F
-1804 F T F F F F F
-1805 F T F F F F F
-1806 F F F F F F F
-1807 F F F F F F F
-1808 F T F F F T F
-1809 F T F F F F F
-1810 F T F F F T F
-1811 F T F F F T F
-1812 F T F F F T F
-1813 F T F F F T F
-1814 F T F F F T F
-1815 F T F F F T F
-1816 F T F F F T F
-1817 F T F F F T F
-1818 F T F F F T F
-1819 F T F F F T F
-1820 F T F F F T F
-1821 F T F F F T F
-1822 F T F F F T F
-1823 F T F F F T F
-1824 F T F F F T F
-1825 F T F F F T F
-1826 F T F F F T F
-1827 F T F F F T F
-1828 F T F F F T F
-1829 F T F F F T F
-1830 F T F F F T F
-1831 F T F F F T F
-1832 F T F F F T F
-1833 F T F F F T F
-1834 F T F F F T F
-1835 F T F F F T F
-1836 F T F F F T F
-1837 F T F F F T F
-1838 F T F F F T F
-1839 F T F F F T F
-1840 F T F F F F F
-1841 F T F F F F F
-1842 F T F F F F F
-1843 F T F F F F F
-1844 F T F F F F F
-1845 F T F F F F F
-1846 F T F F F F F
-1847 F T F F F F F
-1848 F T F F F F F
-1849 F T F F F F F
-1850 F T F F F F F
-1851 F T F F F F F
-1852 F T F F F F F
-1853 F T F F F F F
-1854 F T F F F F F
-1855 F T F F F F F
-1856 F T F F F F F
-1857 F T F F F F F
-1858 F T F F F F F
-1859 F T F F F F F
-1860 F T F F F F F
-1861 F T F F F F F
-1862 F T F F F F F
-1863 F T F F F F F
-1864 F T F F F F F
-1865 F T F F F F F
-1866 F T F F F F F
-1867 F F F F F F F
-1868 F F F F F F F
-1869 F T F F F T F
-1870 F T F F F T F
-1871 F T F F F T F
-1872 F T F F F T F
-1873 F T F F F T F
-1874 F T F F F T F
-1875 F T F F F T F
-1876 F T F F F T F
-1877 F T F F F T F
-1878 F T F F F T F
-1879 F T F F F T F
-1880 F T F F F T F
-1881 F T F F F T F
-1882 F T F F F T F
-1883 F T F F F T F
-1884 F T F F F T F
-1885 F T F F F T F
-1886 F T F F F T F
-1887 F T F F F T F
-1888 F T F F F T F
-1889 F T F F F T F
-1890 F T F F F T F
-1891 F T F F F T F
-1892 F T F F F T F
-1893 F T F F F T F
-1894 F T F F F T F
-1895 F T F F F T F
-1896 F T F F F T F
-1897 F T F F F T F
-1898 F T F F F T F
-1899 F T F F F T F
-1900 F T F F F T F
-1901 F T F F F T F
-1902 F T F F F T F
-1903 F T F F F T F
-1904 F T F F F T F
-1905 F T F F F T F
-1906 F T F F F T F
-1907 F T F F F T F
-1908 F T F F F T F
-1909 F T F F F T F
-1910 F T F F F T F
-1911 F T F F F T F
-1912 F T F F F T F
-1913 F T F F F T F
-1914 F T F F F T F
-1915 F T F F F T F
-1916 F T F F F T F
-1917 F T F F F T F
-1918 F T F F F T F
-1919 F T F F F T F
-1920 F T F F F T F
-1921 F T F F F T F
-1922 F T F F F T F
-1923 F T F F F T F
-1924 F T F F F T F
-1925 F T F F F T F
-1926 F T F F F T F
-1927 F T F F F T F
-1928 F T F F F T F
-1929 F T F F F T F
-1930 F T F F F T F
-1931 F T F F F T F
-1932 F T F F F T F
-1933 F T F F F T F
-1934 F T F F F T F
-1935 F T F F F T F
-1936 F T F F F T F
-1937 F T F F F T F
-1938 F T F F F T F
-1939 F T F F F T F
-1940 F T F F F T F
-1941 F T F F F T F
-1942 F T F F F T F
-1943 F T F F F T F
-1944 F T F F F T F
-1945 F T F F F T F
-1946 F T F F F T F
-1947 F T F F F T F
-1948 F T F F F T F
-1949 F T F F F T F
-1950 F T F F F T F
-1951 F T F F F T F
-1952 F T F F F T F
-1953 F T F F F T F
-1954 F T F F F T F
-1955 F T F F F T F
-1956 F T F F F T F
-1957 F T F F F T F
-1958 F T F F F F F
-1959 F T F F F F F
-1960 F T F F F F F
-1961 F T F F F F F
-1962 F T F F F F F
-1963 F T F F F F F
-1964 F T F F F F F
-1965 F T F F F F F
-1966 F T F F F F F
-1967 F T F F F F F
-1968 F T F F F F F
-1969 F T F F F T F
-1970 F F F F F F F
-1971 F F F F F F F
-1972 F F F F F F F
-1973 F F F F F F F
-1974 F F F F F F F
-1975 F F F F F F F
-1976 F F F F F F F
-1977 F F F F F F F
-1978 F F F F F F F
-1979 F F F F F F F
-1980 F F F F F F F
-1981 F F F F F F F
-1982 F F F F F F F
-1983 F F F F F F F
-1984 F T F F F F F
-1985 F T F F F F F
-1986 F T F F F F F
-1987 F T F F F F F
-1988 F T F F F F F
-1989 F T F F F F F
-1990 F T F F F F F
-1991 F T F F F F F
-1992 F T F F F F F
-1993 F T F F F F F
-1994 F T F F F T F
-1995 F T F F F T F
-1996 F T F F F T F
-1997 F T F F F T F
-1998 F T F F F T F
-1999 F T F F F T F
-2000 F T F F F T F
-2001 F T F F F T F
-2002 F T F F F T F
-2003 F T F F F T F
-2004 F T F F F T F
-2005 F T F F F T F
-2006 F T F F F T F
-2007 F T F F F T F
-2008 F T F F F T F
-2009 F T F F F T F
-2010 F T F F F T F
-2011 F T F F F T F
-2012 F T F F F T F
-2013 F T F F F T F
-2014 F T F F F T F
-2015 F T F F F T F
-2016 F T F F F T F
-2017 F T F F F T F
-2018 F T F F F T F
-2019 F T F F F T F
-2020 F T F F F T F
-2021 F T F F F T F
-2022 F T F F F T F
-2023 F T F F F T F
-2024 F T F F F T F
-2025 F T F F F T F
-2026 F T F F F T F
-2027 F T F F F F F
-2028 F T F F F F F
-2029 F T F F F F F
-2030 F T F F F F F
-2031 F T F F F F F
-2032 F T F F F F F
-2033 F T F F F F F
-2034 F T F F F F F
-2035 F T F F F F F
-2036 F T F F F T F
-2037 F T F F F T F
-2038 F T F F F F F
-2039 F T F F F F F
-2040 F T F F F F F
-2041 F T F F F F F
-2042 F T F F F T F
-2043 F F F F F F F
-2044 F F F F F F F
-2045 F F F F F F F
-2046 F F F F F F F
-2047 F F F F F F F
-2048 F T F F F T F
-2049 F T F F F T F
-2050 F T F F F T F
-2051 F T F F F T F
-2052 F T F F F T F
-2053 F T F F F T F
-2054 F T F F F T F
-2055 F T F F F T F
-2056 F T F F F T F
-2057 F T F F F T F
-2058 F T F F F T F
-2059 F T F F F T F
-2060 F T F F F T F
-2061 F T F F F T F
-2062 F T F F F T F
-2063 F T F F F T F
-2064 F T F F F T F
-2065 F T F F F T F
-2066 F T F F F T F
-2067 F T F F F T F
-2068 F T F F F T F
-2069 F T F F F T F
-2070 F T F F F F F
-2071 F T F F F F F
-2072 F T F F F F F
-2073 F T F F F F F
-2074 F T F F F T F
-2075 F T F F F F F
-2076 F T F F F F F
-2077 F T F F F F F
-2078 F T F F F F F
-2079 F T F F F F F
-2080 F T F F F F F
-2081 F T F F F F F
-2082 F T F F F F F
-2083 F T F F F F F
-2084 F T F F F T F
-2085 F T F F F F F
-2086 F T F F F F F
-2087 F T F F F F F
-2088 F T F F F T F
-2089 F T F F F F F
-2090 F T F F F F F
-2091 F T F F F F F
-2092 F T F F F F F
-2093 F T F F F F F
-2094 F F F F F F F
-2095 F F F F F F F
-2096 F T F F F F F
-2097 F T F F F F F
-2098 F T F F F F F
-2099 F T F F F F F
-2100 F T F F F F F
-2101 F T F F F F F
-2102 F T F F F F F
-2103 F T F F F F F
-2104 F T F F F F F
-2105 F T F F F F F
-2106 F T F F F F F
-2107 F T F F F F F
-2108 F T F F F F F
-2109 F T F F F F F
-2110 F T F F F F F
-2111 F F F F F F F
-2112 F T F F F T F
-2113 F T F F F T F
-2114 F T F F F T F
-2115 F T F F F T F
-2116 F T F F F T F
-2117 F T F F F T F
-2118 F T F F F T F
-2119 F T F F F T F
-2120 F T F F F T F
-2121 F T F F F T F
-2122 F T F F F T F
-2123 F T F F F T F
-2124 F T F F F T F
-2125 F T F F F T F
-2126 F T F F F T F
-2127 F T F F F T F
-2128 F T F F F T F
-2129 F T F F F T F
-2130 F T F F F T F
-2131 F T F F F T F
-2132 F T F F F T F
-2133 F T F F F T F
-2134 F T F F F T F
-2135 F T F F F T F
-2136 F T F F F T F
-2137 F T F F F F F
-2138 F T F F F F F
-2139 F T F F F F F
-2140 F F F F F F F
-2141 F F F F F F F
-2142 F T F F F F F
-2143 F F F F F F F
-2144 F F F F F F F
-2145 F F F F F F F
-2146 F F F F F F F
-2147 F F F F F F F
-2148 F F F F F F F
-2149 F F F F F F F
-2150 F F F F F F F
-2151 F F F F F F F
-2152 F F F F F F F
-2153 F F F F F F F
-2154 F F F F F F F
-2155 F F F F F F F
-2156 F F F F F F F
-2157 F F F F F F F
-2158 F F F F F F F
-2159 F F F F F F F
-2160 F F F F F F F
-2161 F F F F F F F
-2162 F F F F F F F
-2163 F F F F F F F
-2164 F F F F F F F
-2165 F F F F F F F
-2166 F F F F F F F
-2167 F F F F F F F
-2168 F F F F F F F
-2169 F F F F F F F
-2170 F F F F F F F
-2171 F F F F F F F
-2172 F F F F F F F
-2173 F F F F F F F
-2174 F F F F F F F
-2175 F F F F F F F
-2176 F F F F F F F
-2177 F F F F F F F
-2178 F F F F F F F
-2179 F F F F F F F
-2180 F F F F F F F
-2181 F F F F F F F
-2182 F F F F F F F
-2183 F F F F F F F
-2184 F F F F F F F
-2185 F F F F F F F
-2186 F F F F F F F
-2187 F F F F F F F
-2188 F F F F F F F
-2189 F F F F F F F
-2190 F F F F F F F
-2191 F F F F F F F
-2192 F F F F F F F
-2193 F F F F F F F
-2194 F F F F F F F
-2195 F F F F F F F
-2196 F F F F F F F
-2197 F F F F F F F
-2198 F F F F F F F
-2199 F F F F F F F
-2200 F F F F F F F
-2201 F F F F F F F
-2202 F F F F F F F
-2203 F F F F F F F
-2204 F F F F F F F
-2205 F F F F F F F
-2206 F F F F F F F
-2207 F F F F F F F
-2208 F F F F F F F
-2209 F F F F F F F
-2210 F F F F F F F
-2211 F F F F F F F
-2212 F F F F F F F
-2213 F F F F F F F
-2214 F F F F F F F
-2215 F F F F F F F
-2216 F F F F F F F
-2217 F F F F F F F
-2218 F F F F F F F
-2219 F F F F F F F
-2220 F F F F F F F
-2221 F F F F F F F
-2222 F F F F F F F
-2223 F F F F F F F
-2224 F F F F F F F
-2225 F F F F F F F
-2226 F F F F F F F
-2227 F F F F F F F
-2228 F F F F F F F
-2229 F F F F F F F
-2230 F F F F F F F
-2231 F F F F F F F
-2232 F F F F F F F
-2233 F F F F F F F
-2234 F F F F F F F
-2235 F F F F F F F
-2236 F F F F F F F
-2237 F F F F F F F
-2238 F F F F F F F
-2239 F F F F F F F
-2240 F F F F F F F
-2241 F F F F F F F
-2242 F F F F F F F
-2243 F F F F F F F
-2244 F F F F F F F
-2245 F F F F F F F
-2246 F F F F F F F
-2247 F F F F F F F
-2248 F F F F F F F
-2249 F F F F F F F
-2250 F F F F F F F
-2251 F F F F F F F
-2252 F F F F F F F
-2253 F F F F F F F
-2254 F F F F F F F
-2255 F F F F F F F
-2256 F F F F F F F
-2257 F F F F F F F
-2258 F F F F F F F
-2259 F F F F F F F
-2260 F F F F F F F
-2261 F F F F F F F
-2262 F F F F F F F
-2263 F F F F F F F
-2264 F F F F F F F
-2265 F F F F F F F
-2266 F F F F F F F
-2267 F F F F F F F
-2268 F F F F F F F
-2269 F F F F F F F
-2270 F F F F F F F
-2271 F F F F F F F
-2272 F F F F F F F
-2273 F F F F F F F
-2274 F F F F F F F
-2275 F F F F F F F
-2276 F F F F F F F
-2277 F F F F F F F
-2278 F F F F F F F
-2279 F F F F F F F
-2280 F F F F F F F
-2281 F F F F F F F
-2282 F F F F F F F
-2283 F F F F F F F
-2284 F F F F F F F
-2285 F F F F F F F
-2286 F F F F F F F
-2287 F F F F F F F
-2288 F F F F F F F
-2289 F F F F F F F
-2290 F F F F F F F
-2291 F F F F F F F
-2292 F F F F F F F
-2293 F F F F F F F
-2294 F F F F F F F
-2295 F F F F F F F
-2296 F F F F F F F
-2297 F F F F F F F
-2298 F F F F F F F
-2299 F F F F F F F
-2300 F F F F F F F
-2301 F F F F F F F
-2302 F F F F F F F
-2303 F F F F F F F
-2304 F T F F F F F
-2305 F T F F F F F
-2306 F T F F F F F
-2307 F T F F F F F
-2308 F T F F F T F
-2309 F T F F F T F
-2310 F T F F F T F
-2311 F T F F F T F
-2312 F T F F F T F
-2313 F T F F F T F
-2314 F T F F F T F
-2315 F T F F F T F
-2316 F T F F F T F
-2317 F T F F F T F
-2318 F T F F F T F
-2319 F T F F F T F
-2320 F T F F F T F
-2321 F T F F F T F
-2322 F T F F F T F
-2323 F T F F F T F
-2324 F T F F F T F
-2325 F T F F F T F
-2326 F T F F F T F
-2327 F T F F F T F
-2328 F T F F F T F
-2329 F T F F F T F
-2330 F T F F F T F
-2331 F T F F F T F
-2332 F T F F F T F
-2333 F T F F F T F
-2334 F T F F F T F
-2335 F T F F F T F
-2336 F T F F F T F
-2337 F T F F F T F
-2338 F T F F F T F
-2339 F T F F F T F
-2340 F T F F F T F
-2341 F T F F F T F
-2342 F T F F F T F
-2343 F T F F F T F
-2344 F T F F F T F
-2345 F T F F F T F
-2346 F T F F F T F
-2347 F T F F F T F
-2348 F T F F F T F
-2349 F T F F F T F
-2350 F T F F F T F
-2351 F T F F F T F
-2352 F T F F F T F
-2353 F T F F F T F
-2354 F T F F F T F
-2355 F T F F F T F
-2356 F T F F F T F
-2357 F T F F F T F
-2358 F T F F F T F
-2359 F T F F F T F
-2360 F T F F F T F
-2361 F T F F F T F
-2362 F T F F F F F
-2363 F T F F F F F
-2364 F T F F F F F
-2365 F T F F F T F
-2366 F T F F F F F
-2367 F T F F F F F
-2368 F T F F F F F
-2369 F T F F F F F
-2370 F T F F F F F
-2371 F T F F F F F
-2372 F T F F F F F
-2373 F T F F F F F
-2374 F T F F F F F
-2375 F T F F F F F
-2376 F T F F F F F
-2377 F T F F F F F
-2378 F T F F F F F
-2379 F T F F F F F
-2380 F T F F F F F
-2381 F T F F F F F
-2382 F T F F F F F
-2383 F T F F F F F
-2384 F T F F F T F
-2385 F T F F F F F
-2386 F T F F F F F
-2387 F T F F F F F
-2388 F T F F F F F
-2389 F T F F F F F
-2390 F T F F F F F
-2391 F T F F F F F
-2392 F T F F F T F
-2393 F T F F F T F
-2394 F T F F F T F
-2395 F T F F F T F
-2396 F T F F F T F
-2397 F T F F F T F
-2398 F T F F F T F
-2399 F T F F F T F
-2400 F T F F F T F
-2401 F T F F F T F
-2402 F T F F F F F
-2403 F T F F F F F
-2404 F T F F F F F
-2405 F T F F F F F
-2406 F T F F F F F
-2407 F T F F F F F
-2408 F T F F F F F
-2409 F T F F F F F
-2410 F T F F F F F
-2411 F T F F F F F
-2412 F T F F F F F
-2413 F T F F F F F
-2414 F T F F F F F
-2415 F T F F F F F
-2416 F T F F F F F
-2417 F T F F F T F
-2418 F T F F F T F
-2419 F T F F F T F
-2420 F T F F F T F
-2421 F T F F F T F
-2422 F T F F F T F
-2423 F T F F F T F
-2424 F F F F F F F
-2425 F T F F F T F
-2426 F T F F F T F
-2427 F T F F F T F
-2428 F T F F F T F
-2429 F T F F F T F
-2430 F T F F F T F
-2431 F T F F F T F
-2432 F F F F F F F
-2433 F T F F F F F
-2434 F T F F F F F
-2435 F T F F F F F
-2436 F F F F F F F
-2437 F T F F F T F
-2438 F T F F F T F
-2439 F T F F F T F
-2440 F T F F F T F
-2441 F T F F F T F
-2442 F T F F F T F
-2443 F T F F F T F
-2444 F T F F F T F
-2445 F F F F F F F
-2446 F F F F F F F
-2447 F T F F F T F
-2448 F T F F F T F
-2449 F F F F F F F
-2450 F F F F F F F
-2451 F T F F F T F
-2452 F T F F F T F
-2453 F T F F F T F
-2454 F T F F F T F
-2455 F T F F F T F
-2456 F T F F F T F
-2457 F T F F F T F
-2458 F T F F F T F
-2459 F T F F F T F
-2460 F T F F F T F
-2461 F T F F F T F
-2462 F T F F F T F
-2463 F T F F F T F
-2464 F T F F F T F
-2465 F T F F F T F
-2466 F T F F F T F
-2467 F T F F F T F
-2468 F T F F F T F
-2469 F T F F F T F
-2470 F T F F F T F
-2471 F T F F F T F
-2472 F T F F F T F
-2473 F F F F F F F
-2474 F T F F F T F
-2475 F T F F F T F
-2476 F T F F F T F
-2477 F T F F F T F
-2478 F T F F F T F
-2479 F T F F F T F
-2480 F T F F F T F
-2481 F F F F F F F
-2482 F T F F F T F
-2483 F F F F F F F
-2484 F F F F F F F
-2485 F F F F F F F
-2486 F T F F F T F
-2487 F T F F F T F
-2488 F T F F F T F
-2489 F T F F F T F
-2490 F F F F F F F
-2491 F F F F F F F
-2492 F T F F F F F
-2493 F T F F F T F
-2494 F T F F F F F
-2495 F T F F F F F
-2496 F T F F F F F
-2497 F T F F F F F
-2498 F T F F F F F
-2499 F T F F F F F
-2500 F T F F F F F
-2501 F F F F F F F
-2502 F F F F F F F
-2503 F T F F F F F
-2504 F T F F F F F
-2505 F F F F F F F
-2506 F F F F F F F
-2507 F T F F F F F
-2508 F T F F F F F
-2509 F T F F F F F
-2510 F T F F F T F
-2511 F F F F F F F
-2512 F F F F F F F
-2513 F F F F F F F
-2514 F F F F F F F
-2515 F F F F F F F
-2516 F F F F F F F
-2517 F F F F F F F
-2518 F F F F F F F
-2519 F T F F F F F
-2520 F F F F F F F
-2521 F F F F F F F
-2522 F F F F F F F
-2523 F F F F F F F
-2524 F T F F F T F
-2525 F T F F F T F
-2526 F F F F F F F
-2527 F T F F F T F
-2528 F T F F F T F
-2529 F T F F F T F
-2530 F T F F F F F
-2531 F T F F F F F
-2532 F F F F F F F
-2533 F F F F F F F
-2534 F T F F F F F
-2535 F T F F F F F
-2536 F T F F F F F
-2537 F T F F F F F
-2538 F T F F F F F
-2539 F T F F F F F
-2540 F T F F F F F
-2541 F T F F F F F
-2542 F T F F F F F
-2543 F T F F F F F
-2544 F T F F F T F
-2545 F T F F F T F
-2546 F T F F F F F
-2547 F T F F F F F
-2548 F T F F F F F
-2549 F T F F F F F
-2550 F T F F F F F
-2551 F T F F F F F
-2552 F T F F F F F
-2553 F T F F F F F
-2554 F T F F F F F
-2555 F T F F F F F
-2556 F F F F F F F
-2557 F F F F F F F
-2558 F F F F F F F
-2559 F F F F F F F
-2560 F F F F F F F
-2561 F T F F F F F
-2562 F T F F F F F
-2563 F T F F F F F
-2564 F F F F F F F
-2565 F T F F F T F
-2566 F T F F F T F
-2567 F T F F F T F
-2568 F T F F F T F
-2569 F T F F F T F
-2570 F T F F F T F
-2571 F F F F F F F
-2572 F F F F F F F
-2573 F F F F F F F
-2574 F F F F F F F
-2575 F T F F F T F
-2576 F T F F F T F
-2577 F F F F F F F
-2578 F F F F F F F
-2579 F T F F F T F
-2580 F T F F F T F
-2581 F T F F F T F
-2582 F T F F F T F
-2583 F T F F F T F
-2584 F T F F F T F
-2585 F T F F F T F
-2586 F T F F F T F
-2587 F T F F F T F
-2588 F T F F F T F
-2589 F T F F F T F
-2590 F T F F F T F
-2591 F T F F F T F
-2592 F T F F F T F
-2593 F T F F F T F
-2594 F T F F F T F
-2595 F T F F F T F
-2596 F T F F F T F
-2597 F T F F F T F
-2598 F T F F F T F
-2599 F T F F F T F
-2600 F T F F F T F
-2601 F F F F F F F
-2602 F T F F F T F
-2603 F T F F F T F
-2604 F T F F F T F
-2605 F T F F F T F
-2606 F T F F F T F
-2607 F T F F F T F
-2608 F T F F F T F
-2609 F F F F F F F
-2610 F T F F F T F
-2611 F T F F F T F
-2612 F F F F F F F
-2613 F T F F F T F
-2614 F T F F F T F
-2615 F F F F F F F
-2616 F T F F F T F
-2617 F T F F F T F
-2618 F F F F F F F
-2619 F F F F F F F
-2620 F T F F F F F
-2621 F F F F F F F
-2622 F T F F F F F
-2623 F T F F F F F
-2624 F T F F F F F
-2625 F T F F F F F
-2626 F T F F F F F
-2627 F F F F F F F
-2628 F F F F F F F
-2629 F F F F F F F
-2630 F F F F F F F
-2631 F T F F F F F
-2632 F T F F F F F
-2633 F F F F F F F
-2634 F F F F F F F
-2635 F T F F F F F
-2636 F T F F F F F
-2637 F T F F F F F
-2638 F F F F F F F
-2639 F F F F F F F
-2640 F F F F F F F
-2641 F T F F F F F
-2642 F F F F F F F
-2643 F F F F F F F
-2644 F F F F F F F
-2645 F F F F F F F
-2646 F F F F F F F
-2647 F F F F F F F
-2648 F F F F F F F
-2649 F T F F F T F
-2650 F T F F F T F
-2651 F T F F F T F
-2652 F T F F F T F
-2653 F F F F F F F
-2654 F T F F F T F
-2655 F F F F F F F
-2656 F F F F F F F
-2657 F F F F F F F
-2658 F F F F F F F
-2659 F F F F F F F
-2660 F F F F F F F
-2661 F F F F F F F
-2662 F T F F F F F
-2663 F T F F F F F
-2664 F T F F F F F
-2665 F T F F F F F
-2666 F T F F F F F
-2667 F T F F F F F
-2668 F T F F F F F
-2669 F T F F F F F
-2670 F T F F F F F
-2671 F T F F F F F
-2672 F T F F F F F
-2673 F T F F F F F
-2674 F T F F F T F
-2675 F T F F F T F
-2676 F T F F F T F
-2677 F T F F F F F
-2678 F F F F F F F
-2679 F F F F F F F
-2680 F F F F F F F
-2681 F F F F F F F
-2682 F F F F F F F
-2683 F F F F F F F
-2684 F F F F F F F
-2685 F F F F F F F
-2686 F F F F F F F
-2687 F F F F F F F
-2688 F F F F F F F
-2689 F T F F F F F
-2690 F T F F F F F
-2691 F T F F F F F
-2692 F F F F F F F
-2693 F T F F F T F
-2694 F T F F F T F
-2695 F T F F F T F
-2696 F T F F F T F
-2697 F T F F F T F
-2698 F T F F F T F
-2699 F T F F F T F
-2700 F T F F F T F
-2701 F T F F F T F
-2702 F F F F F F F
-2703 F T F F F T F
-2704 F T F F F T F
-2705 F T F F F T F
-2706 F F F F F F F
-2707 F T F F F T F
-2708 F T F F F T F
-2709 F T F F F T F
-2710 F T F F F T F
-2711 F T F F F T F
-2712 F T F F F T F
-2713 F T F F F T F
-2714 F T F F F T F
-2715 F T F F F T F
-2716 F T F F F T F
-2717 F T F F F T F
-2718 F T F F F T F
-2719 F T F F F T F
-2720 F T F F F T F
-2721 F T F F F T F
-2722 F T F F F T F
-2723 F T F F F T F
-2724 F T F F F T F
-2725 F T F F F T F
-2726 F T F F F T F
-2727 F T F F F T F
-2728 F T F F F T F
-2729 F F F F F F F
-2730 F T F F F T F
-2731 F T F F F T F
-2732 F T F F F T F
-2733 F T F F F T F
-2734 F T F F F T F
-2735 F T F F F T F
-2736 F T F F F T F
-2737 F F F F F F F
-2738 F T F F F T F
-2739 F T F F F T F
-2740 F F F F F F F
-2741 F T F F F T F
-2742 F T F F F T F
-2743 F T F F F T F
-2744 F T F F F T F
-2745 F T F F F T F
-2746 F F F F F F F
-2747 F F F F F F F
-2748 F T F F F F F
-2749 F T F F F T F
-2750 F T F F F F F
-2751 F T F F F F F
-2752 F T F F F F F
-2753 F T F F F F F
-2754 F T F F F F F
-2755 F T F F F F F
-2756 F T F F F F F
-2757 F T F F F F F
-2758 F F F F F F F
-2759 F T F F F F F
-2760 F T F F F F F
-2761 F T F F F F F
-2762 F F F F F F F
-2763 F T F F F F F
-2764 F T F F F F F
-2765 F T F F F F F
-2766 F F F F F F F
-2767 F F F F F F F
-2768 F T F F F T F
-2769 F F F F F F F
-2770 F F F F F F F
-2771 F F F F F F F
-2772 F F F F F F F
-2773 F F F F F F F
-2774 F F F F F F F
-2775 F F F F F F F
-2776 F F F F F F F
-2777 F F F F F F F
-2778 F F F F F F F
-2779 F F F F F F F
-2780 F F F F F F F
-2781 F F F F F F F
-2782 F F F F F F F
-2783 F F F F F F F
-2784 F T F F F T F
-2785 F T F F F T F
-2786 F T F F F F F
-2787 F T F F F F F
-2788 F F F F F F F
-2789 F F F F F F F
-2790 F T F F F F F
-2791 F T F F F F F
-2792 F T F F F F F
-2793 F T F F F F F
-2794 F T F F F F F
-2795 F T F F F F F
-2796 F T F F F F F
-2797 F T F F F F F
-2798 F T F F F F F
-2799 F T F F F F F
-2800 F F F F F F F
-2801 F T F F F F F
-2802 F F F F F F F
-2803 F F F F F F F
-2804 F F F F F F F
-2805 F F F F F F F
-2806 F F F F F F F
-2807 F F F F F F F
-2808 F F F F F F F
-2809 F F F F F F F
-2810 F F F F F F F
-2811 F F F F F F F
-2812 F F F F F F F
-2813 F F F F F F F
-2814 F F F F F F F
-2815 F F F F F F F
-2816 F F F F F F F
-2817 F T F F F F F
-2818 F T F F F F F
-2819 F T F F F F F
-2820 F F F F F F F
-2821 F T F F F T F
-2822 F T F F F T F
-2823 F T F F F T F
-2824 F T F F F T F
-2825 F T F F F T F
-2826 F T F F F T F
-2827 F T F F F T F
-2828 F T F F F T F
-2829 F F F F F F F
-2830 F F F F F F F
-2831 F T F F F T F
-2832 F T F F F T F
-2833 F F F F F F F
-2834 F F F F F F F
-2835 F T F F F T F
-2836 F T F F F T F
-2837 F T F F F T F
-2838 F T F F F T F
-2839 F T F F F T F
-2840 F T F F F T F
-2841 F T F F F T F
-2842 F T F F F T F
-2843 F T F F F T F
-2844 F T F F F T F
-2845 F T F F F T F
-2846 F T F F F T F
-2847 F T F F F T F
-2848 F T F F F T F
-2849 F T F F F T F
-2850 F T F F F T F
-2851 F T F F F T F
-2852 F T F F F T F
-2853 F T F F F T F
-2854 F T F F F T F
-2855 F T F F F T F
-2856 F T F F F T F
-2857 F F F F F F F
-2858 F T F F F T F
-2859 F T F F F T F
-2860 F T F F F T F
-2861 F T F F F T F
-2862 F T F F F T F
-2863 F T F F F T F
-2864 F T F F F T F
-2865 F F F F F F F
-2866 F T F F F T F
-2867 F T F F F T F
-2868 F F F F F F F
-2869 F T F F F T F
-2870 F T F F F T F
-2871 F T F F F T F
-2872 F T F F F T F
-2873 F T F F F T F
-2874 F F F F F F F
-2875 F F F F F F F
-2876 F T F F F F F
-2877 F T F F F T F
-2878 F T F F F F F
-2879 F T F F F F F
-2880 F T F F F F F
-2881 F T F F F F F
-2882 F T F F F F F
-2883 F T F F F F F
-2884 F T F F F F F
-2885 F F F F F F F
-2886 F F F F F F F
-2887 F T F F F F F
-2888 F T F F F F F
-2889 F F F F F F F
-2890 F F F F F F F
-2891 F T F F F F F
-2892 F T F F F F F
-2893 F T F F F F F
-2894 F F F F F F F
-2895 F F F F F F F
-2896 F F F F F F F
-2897 F F F F F F F
-2898 F F F F F F F
-2899 F F F F F F F
-2900 F F F F F F F
-2901 F F F F F F F
-2902 F T F F F F F
-2903 F T F F F F F
-2904 F F F F F F F
-2905 F F F F F F F
-2906 F F F F F F F
-2907 F F F F F F F
-2908 F T F F F T F
-2909 F T F F F T F
-2910 F F F F F F F
-2911 F T F F F T F
-2912 F T F F F T F
-2913 F T F F F T F
-2914 F T F F F F F
-2915 F T F F F F F
-2916 F F F F F F F
-2917 F F F F F F F
-2918 F T F F F F F
-2919 F T F F F F F
-2920 F T F F F F F
-2921 F T F F F F F
-2922 F T F F F F F
-2923 F T F F F F F
-2924 F T F F F F F
-2925 F T F F F F F
-2926 F T F F F F F
-2927 F T F F F F F
-2928 F T F F F F F
-2929 F T F F F T F
-2930 F T F F F F F
-2931 F T F F F F F
-2932 F T F F F F F
-2933 F T F F F F F
-2934 F T F F F F F
-2935 F T F F F F F
-2936 F F F F F F F
-2937 F F F F F F F
-2938 F F F F F F F
-2939 F F F F F F F
-2940 F F F F F F F
-2941 F F F F F F F
-2942 F F F F F F F
-2943 F F F F F F F
-2944 F F F F F F F
-2945 F F F F F F F
-2946 F T F F F F F
-2947 F T F F F T F
-2948 F F F F F F F
-2949 F T F F F T F
-2950 F T F F F T F
-2951 F T F F F T F
-2952 F T F F F T F
-2953 F T F F F T F
-2954 F T F F F T F
-2955 F F F F F F F
-2956 F F F F F F F
-2957 F F F F F F F
-2958 F T F F F T F
-2959 F T F F F T F
-2960 F T F F F T F
-2961 F F F F F F F
-2962 F T F F F T F
-2963 F T F F F T F
-2964 F T F F F T F
-2965 F T F F F T F
-2966 F F F F F F F
-2967 F F F F F F F
-2968 F F F F F F F
-2969 F T F F F T F
-2970 F T F F F T F
-2971 F F F F F F F
-2972 F T F F F T F
-2973 F F F F F F F
-2974 F T F F F T F
-2975 F T F F F T F
-2976 F F F F F F F
-2977 F F F F F F F
-2978 F F F F F F F
-2979 F T F F F T F
-2980 F T F F F T F
-2981 F F F F F F F
-2982 F F F F F F F
-2983 F F F F F F F
-2984 F T F F F T F
-2985 F T F F F T F
-2986 F T F F F T F
-2987 F F F F F F F
-2988 F F F F F F F
-2989 F F F F F F F
-2990 F T F F F T F
-2991 F T F F F T F
-2992 F T F F F T F
-2993 F T F F F T F
-2994 F T F F F T F
-2995 F T F F F T F
-2996 F T F F F T F
-2997 F T F F F T F
-2998 F T F F F T F
-2999 F T F F F T F
-3000 F T F F F T F
-3001 F T F F F T F
-3002 F F F F F F F
-3003 F F F F F F F
-3004 F F F F F F F
-3005 F F F F F F F
-3006 F T F F F F F
-3007 F T F F F F F
-3008 F T F F F F F
-3009 F T F F F F F
-3010 F T F F F F F
-3011 F F F F F F F
-3012 F F F F F F F
-3013 F F F F F F F
-3014 F T F F F F F
-3015 F T F F F F F
-3016 F T F F F F F
-3017 F F F F F F F
-3018 F T F F F F F
-3019 F T F F F F F
-3020 F T F F F F F
-3021 F T F F F F F
-3022 F F F F F F F
-3023 F F F F F F F
-3024 F T F F F T F
-3025 F F F F F F F
-3026 F F F F F F F
-3027 F F F F F F F
-3028 F F F F F F F
-3029 F F F F F F F
-3030 F F F F F F F
-3031 F T F F F F F
-3032 F F F F F F F
-3033 F F F F F F F
-3034 F F F F F F F
-3035 F F F F F F F
-3036 F F F F F F F
-3037 F F F F F F F
-3038 F F F F F F F
-3039 F F F F F F F
-3040 F F F F F F F
-3041 F F F F F F F
-3042 F F F F F F F
-3043 F F F F F F F
-3044 F F F F F F F
-3045 F F F F F F F
-3046 F T F F F F F
-3047 F T F F F F F
-3048 F T F F F F F
-3049 F T F F F F F
-3050 F T F F F F F
-3051 F T F F F F F
-3052 F T F F F F F
-3053 F T F F F F F
-3054 F T F F F F F
-3055 F T F F F F F
-3056 F T F F F F F
-3057 F T F F F F F
-3058 F T F F F F F
-3059 F T F F F F F
-3060 F T F F F F F
-3061 F T F F F F F
-3062 F T F F F F F
-3063 F T F F F F F
-3064 F T F F F F F
-3065 F T F F F F F
-3066 F T F F F F F
-3067 F F F F F F F
-3068 F F F F F F F
-3069 F F F F F F F
-3070 F F F F F F F
-3071 F F F F F F F
-3072 F F F F F F F
-3073 F T F F F F F
-3074 F T F F F F F
-3075 F T F F F F F
-3076 F F F F F F F
-3077 F T F F F T F
-3078 F T F F F T F
-3079 F T F F F T F
-3080 F T F F F T F
-3081 F T F F F T F
-3082 F T F F F T F
-3083 F T F F F T F
-3084 F T F F F T F
-3085 F F F F F F F
-3086 F T F F F T F
-3087 F T F F F T F
-3088 F T F F F T F
-3089 F F F F F F F
-3090 F T F F F T F
-3091 F T F F F T F
-3092 F T F F F T F
-3093 F T F F F T F
-3094 F T F F F T F
-3095 F T F F F T F
-3096 F T F F F T F
-3097 F T F F F T F
-3098 F T F F F T F
-3099 F T F F F T F
-3100 F T F F F T F
-3101 F T F F F T F
-3102 F T F F F T F
-3103 F T F F F T F
-3104 F T F F F T F
-3105 F T F F F T F
-3106 F T F F F T F
-3107 F T F F F T F
-3108 F T F F F T F
-3109 F T F F F T F
-3110 F T F F F T F
-3111 F T F F F T F
-3112 F T F F F T F
-3113 F F F F F F F
-3114 F T F F F T F
-3115 F T F F F T F
-3116 F T F F F T F
-3117 F T F F F T F
-3118 F T F F F T F
-3119 F T F F F T F
-3120 F T F F F T F
-3121 F T F F F T F
-3122 F T F F F T F
-3123 F T F F F T F
-3124 F F F F F F F
-3125 F T F F F T F
-3126 F T F F F T F
-3127 F T F F F T F
-3128 F T F F F T F
-3129 F T F F F T F
-3130 F F F F F F F
-3131 F F F F F F F
-3132 F F F F F F F
-3133 F T F F F T F
-3134 F T F F F F F
-3135 F T F F F F F
-3136 F T F F F F F
-3137 F T F F F F F
-3138 F T F F F F F
-3139 F T F F F F F
-3140 F T F F F F F
-3141 F F F F F F F
-3142 F T F F F F F
-3143 F T F F F F F
-3144 F T F F F F F
-3145 F F F F F F F
-3146 F T F F F F F
-3147 F T F F F F F
-3148 F T F F F F F
-3149 F T F F F F F
-3150 F F F F F F F
-3151 F F F F F F F
-3152 F F F F F F F
-3153 F F F F F F F
-3154 F F F F F F F
-3155 F F F F F F F
-3156 F F F F F F F
-3157 F T F F F F F
-3158 F T F F F F F
-3159 F F F F F F F
-3160 F T F F F T F
-3161 F T F F F T F
-3162 F F F F F F F
-3163 F F F F F F F
-3164 F F F F F F F
-3165 F F F F F F F
-3166 F F F F F F F
-3167 F F F F F F F
-3168 F T F F F T F
-3169 F T F F F T F
-3170 F T F F F F F
-3171 F T F F F F F
-3172 F F F F F F F
-3173 F F F F F F F
-3174 F T F F F F F
-3175 F T F F F F F
-3176 F T F F F F F
-3177 F T F F F F F
-3178 F T F F F F F
-3179 F T F F F F F
-3180 F T F F F F F
-3181 F T F F F F F
-3182 F T F F F F F
-3183 F T F F F F F
-3184 F F F F F F F
-3185 F F F F F F F
-3186 F F F F F F F
-3187 F F F F F F F
-3188 F F F F F F F
-3189 F F F F F F F
-3190 F F F F F F F
-3191 F F F F F F F
-3192 F T F F F F F
-3193 F T F F F F F
-3194 F T F F F F F
-3195 F T F F F F F
-3196 F T F F F F F
-3197 F T F F F F F
-3198 F T F F F F F
-3199 F T F F F F F
-3200 F F F F F F F
-3201 F F F F F F F
-3202 F T F F F F F
-3203 F T F F F F F
-3204 F F F F F F F
-3205 F T F F F T F
-3206 F T F F F T F
-3207 F T F F F T F
-3208 F T F F F T F
-3209 F T F F F T F
-3210 F T F F F T F
-3211 F T F F F T F
-3212 F T F F F T F
-3213 F F F F F F F
-3214 F T F F F T F
-3215 F T F F F T F
-3216 F T F F F T F
-3217 F F F F F F F
-3218 F T F F F T F
-3219 F T F F F T F
-3220 F T F F F T F
-3221 F T F F F T F
-3222 F T F F F T F
-3223 F T F F F T F
-3224 F T F F F T F
-3225 F T F F F T F
-3226 F T F F F T F
-3227 F T F F F T F
-3228 F T F F F T F
-3229 F T F F F T F
-3230 F T F F F T F
-3231 F T F F F T F
-3232 F T F F F T F
-3233 F T F F F T F
-3234 F T F F F T F
-3235 F T F F F T F
-3236 F T F F F T F
-3237 F T F F F T F
-3238 F T F F F T F
-3239 F T F F F T F
-3240 F T F F F T F
-3241 F F F F F F F
-3242 F T F F F T F
-3243 F T F F F T F
-3244 F T F F F T F
-3245 F T F F F T F
-3246 F T F F F T F
-3247 F T F F F T F
-3248 F T F F F T F
-3249 F T F F F T F
-3250 F T F F F T F
-3251 F T F F F T F
-3252 F F F F F F F
-3253 F T F F F T F
-3254 F T F F F T F
-3255 F T F F F T F
-3256 F T F F F T F
-3257 F T F F F T F
-3258 F F F F F F F
-3259 F F F F F F F
-3260 F T F F F F F
-3261 F T F F F T F
-3262 F T F F F F F
-3263 F T F F F F F
-3264 F T F F F F F
-3265 F T F F F F F
-3266 F T F F F F F
-3267 F T F F F F F
-3268 F T F F F F F
-3269 F F F F F F F
-3270 F T F F F F F
-3271 F T F F F F F
-3272 F T F F F F F
-3273 F F F F F F F
-3274 F T F F F F F
-3275 F T F F F F F
-3276 F T F F F F F
-3277 F T F F F F F
-3278 F F F F F F F
-3279 F F F F F F F
-3280 F F F F F F F
-3281 F F F F F F F
-3282 F F F F F F F
-3283 F F F F F F F
-3284 F F F F F F F
-3285 F T F F F F F
-3286 F T F F F F F
-3287 F F F F F F F
-3288 F F F F F F F
-3289 F F F F F F F
-3290 F F F F F F F
-3291 F F F F F F F
-3292 F F F F F F F
-3293 F F F F F F F
-3294 F T F F F T F
-3295 F F F F F F F
-3296 F T F F F T F
-3297 F T F F F T F
-3298 F T F F F F F
-3299 F T F F F F F
-3300 F F F F F F F
-3301 F F F F F F F
-3302 F T F F F F F
-3303 F T F F F F F
-3304 F T F F F F F
-3305 F T F F F F F
-3306 F T F F F F F
-3307 F T F F F F F
-3308 F T F F F F F
-3309 F T F F F F F
-3310 F T F F F F F
-3311 F T F F F F F
-3312 F F F F F F F
-3313 F T F F F T F
-3314 F T F F F T F
-3315 F F F F F F F
-3316 F F F F F F F
-3317 F F F F F F F
-3318 F F F F F F F
-3319 F F F F F F F
-3320 F F F F F F F
-3321 F F F F F F F
-3322 F F F F F F F
-3323 F F F F F F F
-3324 F F F F F F F
-3325 F F F F F F F
-3326 F F F F F F F
-3327 F F F F F F F
-3328 F F F F F F F
-3329 F F F F F F F
-3330 F T F F F F F
-3331 F T F F F F F
-3332 F F F F F F F
-3333 F T F F F T F
-3334 F T F F F T F
-3335 F T F F F T F
-3336 F T F F F T F
-3337 F T F F F T F
-3338 F T F F F T F
-3339 F T F F F T F
-3340 F T F F F T F
-3341 F F F F F F F
-3342 F T F F F T F
-3343 F T F F F T F
-3344 F T F F F T F
-3345 F F F F F F F
-3346 F T F F F T F
-3347 F T F F F T F
-3348 F T F F F T F
-3349 F T F F F T F
-3350 F T F F F T F
-3351 F T F F F T F
-3352 F T F F F T F
-3353 F T F F F T F
-3354 F T F F F T F
-3355 F T F F F T F
-3356 F T F F F T F
-3357 F T F F F T F
-3358 F T F F F T F
-3359 F T F F F T F
-3360 F T F F F T F
-3361 F T F F F T F
-3362 F T F F F T F
-3363 F T F F F T F
-3364 F T F F F T F
-3365 F T F F F T F
-3366 F T F F F T F
-3367 F T F F F T F
-3368 F T F F F T F
-3369 F T F F F T F
-3370 F T F F F T F
-3371 F T F F F T F
-3372 F T F F F T F
-3373 F T F F F T F
-3374 F T F F F T F
-3375 F T F F F T F
-3376 F T F F F T F
-3377 F T F F F T F
-3378 F T F F F T F
-3379 F T F F F T F
-3380 F T F F F T F
-3381 F T F F F T F
-3382 F T F F F T F
-3383 F T F F F T F
-3384 F T F F F T F
-3385 F T F F F T F
-3386 F T F F F T F
-3387 F F F F F F F
-3388 F F F F F F F
-3389 F T F F F T F
-3390 F T F F F F F
-3391 F T F F F F F
-3392 F T F F F F F
-3393 F T F F F F F
-3394 F T F F F F F
-3395 F T F F F F F
-3396 F T F F F F F
-3397 F F F F F F F
-3398 F T F F F F F
-3399 F T F F F F F
-3400 F T F F F F F
-3401 F F F F F F F
-3402 F T F F F F F
-3403 F T F F F F F
-3404 F T F F F F F
-3405 F T F F F F F
-3406 F T F F F T F
-3407 F F F F F F F
-3408 F F F F F F F
-3409 F F F F F F F
-3410 F F F F F F F
-3411 F F F F F F F
-3412 F F F F F F F
-3413 F F F F F F F
-3414 F F F F F F F
-3415 F T F F F F F
-3416 F F F F F F F
-3417 F F F F F F F
-3418 F F F F F F F
-3419 F F F F F F F
-3420 F F F F F F F
-3421 F F F F F F F
-3422 F F F F F F F
-3423 F F F F F F F
-3424 F T F F F T F
-3425 F T F F F T F
-3426 F T F F F F F
-3427 F T F F F F F
-3428 F F F F F F F
-3429 F F F F F F F
-3430 F T F F F F F
-3431 F T F F F F F
-3432 F T F F F F F
-3433 F T F F F F F
-3434 F T F F F F F
-3435 F T F F F F F
-3436 F T F F F F F
-3437 F T F F F F F
-3438 F T F F F F F
-3439 F T F F F F F
-3440 F T F F F F F
-3441 F T F F F F F
-3442 F T F F F F F
-3443 F T F F F F F
-3444 F T F F F F F
-3445 F T F F F F F
-3446 F F F F F F F
-3447 F F F F F F F
-3448 F F F F F F F
-3449 F T F F F F F
-3450 F T F F F T F
-3451 F T F F F T F
-3452 F T F F F T F
-3453 F T F F F T F
-3454 F T F F F T F
-3455 F T F F F T F
-3456 F F F F F F F
-3457 F F F F F F F
-3458 F T F F F F F
-3459 F T F F F F F
-3460 F F F F F F F
-3461 F T F F F T F
-3462 F T F F F T F
-3463 F T F F F T F
-3464 F T F F F T F
-3465 F T F F F T F
-3466 F T F F F T F
-3467 F T F F F T F
-3468 F T F F F T F
-3469 F T F F F T F
-3470 F T F F F T F
-3471 F T F F F T F
-3472 F T F F F T F
-3473 F T F F F T F
-3474 F T F F F T F
-3475 F T F F F T F
-3476 F T F F F T F
-3477 F T F F F T F
-3478 F T F F F T F
-3479 F F F F F F F
-3480 F F F F F F F
-3481 F F F F F F F
-3482 F T F F F T F
-3483 F T F F F T F
-3484 F T F F F T F
-3485 F T F F F T F
-3486 F T F F F T F
-3487 F T F F F T F
-3488 F T F F F T F
-3489 F T F F F T F
-3490 F T F F F T F
-3491 F T F F F T F
-3492 F T F F F T F
-3493 F T F F F T F
-3494 F T F F F T F
-3495 F T F F F T F
-3496 F T F F F T F
-3497 F T F F F T F
-3498 F T F F F T F
-3499 F T F F F T F
-3500 F T F F F T F
-3501 F T F F F T F
-3502 F T F F F T F
-3503 F T F F F T F
-3504 F T F F F T F
-3505 F T F F F T F
-3506 F F F F F F F
-3507 F T F F F T F
-3508 F T F F F T F
-3509 F T F F F T F
-3510 F T F F F T F
-3511 F T F F F T F
-3512 F T F F F T F
-3513 F T F F F T F
-3514 F T F F F T F
-3515 F T F F F T F
-3516 F F F F F F F
-3517 F T F F F T F
-3518 F F F F F F F
-3519 F F F F F F F
-3520 F T F F F T F
-3521 F T F F F T F
-3522 F T F F F T F
-3523 F T F F F T F
-3524 F T F F F T F
-3525 F T F F F T F
-3526 F T F F F T F
-3527 F F F F F F F
-3528 F F F F F F F
-3529 F F F F F F F
-3530 F T F F F F F
-3531 F F F F F F F
-3532 F F F F F F F
-3533 F F F F F F F
-3534 F F F F F F F
-3535 F T F F F F F
-3536 F T F F F F F
-3537 F T F F F F F
-3538 F T F F F F F
-3539 F T F F F F F
-3540 F T F F F F F
-3541 F F F F F F F
-3542 F T F F F F F
-3543 F F F F F F F
-3544 F T F F F F F
-3545 F T F F F F F
-3546 F T F F F F F
-3547 F T F F F F F
-3548 F T F F F F F
-3549 F T F F F F F
-3550 F T F F F F F
-3551 F T F F F F F
-3552 F F F F F F F
-3553 F F F F F F F
-3554 F F F F F F F
-3555 F F F F F F F
-3556 F F F F F F F
-3557 F F F F F F F
-3558 F F F F F F F
-3559 F F F F F F F
-3560 F F F F F F F
-3561 F F F F F F F
-3562 F F F F F F F
-3563 F F F F F F F
-3564 F F F F F F F
-3565 F F F F F F F
-3566 F F F F F F F
-3567 F F F F F F F
-3568 F F F F F F F
-3569 F F F F F F F
-3570 F T F F F F F
-3571 F T F F F F F
-3572 F T F F F F F
-3573 F F F F F F F
-3574 F F F F F F F
-3575 F F F F F F F
-3576 F F F F F F F
-3577 F F F F F F F
-3578 F F F F F F F
-3579 F F F F F F F
-3580 F F F F F F F
-3581 F F F F F F F
-3582 F F F F F F F
-3583 F F F F F F F
-3584 F F F F F F F
-3585 F T F F F T F
-3586 F T F F F T F
-3587 F T F F F T F
-3588 F T F F F T F
-3589 F T F F F T F
-3590 F T F F F T F
-3591 F T F F F T F
-3592 F T F F F T F
-3593 F T F F F T F
-3594 F T F F F T F
-3595 F T F F F T F
-3596 F T F F F T F
-3597 F T F F F T F
-3598 F T F F F T F
-3599 F T F F F T F
-3600 F T F F F T F
-3601 F T F F F T F
-3602 F T F F F T F
-3603 F T F F F T F
-3604 F T F F F T F
-3605 F T F F F T F
-3606 F T F F F T F
-3607 F T F F F T F
-3608 F T F F F T F
-3609 F T F F F T F
-3610 F T F F F T F
-3611 F T F F F T F
-3612 F T F F F T F
-3613 F T F F F T F
-3614 F T F F F T F
-3615 F T F F F T F
-3616 F T F F F T F
-3617 F T F F F T F
-3618 F T F F F T F
-3619 F T F F F T F
-3620 F T F F F T F
-3621 F T F F F T F
-3622 F T F F F T F
-3623 F T F F F T F
-3624 F T F F F T F
-3625 F T F F F T F
-3626 F T F F F T F
-3627 F T F F F T F
-3628 F T F F F T F
-3629 F T F F F T F
-3630 F T F F F T F
-3631 F T F F F T F
-3632 F T F F F T F
-3633 F T F F F F F
-3634 F T F F F T F
-3635 F T F F F T F
-3636 F T F F F F F
-3637 F T F F F F F
-3638 F T F F F F F
-3639 F T F F F F F
-3640 F T F F F F F
-3641 F T F F F F F
-3642 F T F F F F F
-3643 F F F F F F F
-3644 F F F F F F F
-3645 F F F F F F F
-3646 F F F F F F F
-3647 F T F F F F F
-3648 F T F F F T F
-3649 F T F F F T F
-3650 F T F F F T F
-3651 F T F F F T F
-3652 F T F F F T F
-3653 F T F F F T F
-3654 F T F F F T F
-3655 F T F F F F F
-3656 F T F F F F F
-3657 F T F F F F F
-3658 F T F F F F F
-3659 F T F F F F F
-3660 F T F F F F F
-3661 F T F F F F F
-3662 F T F F F F F
-3663 F T F F F F F
-3664 F T F F F F F
-3665 F T F F F F F
-3666 F T F F F F F
-3667 F T F F F F F
-3668 F T F F F F F
-3669 F T F F F F F
-3670 F T F F F F F
-3671 F T F F F F F
-3672 F T F F F F F
-3673 F T F F F F F
-3674 F T F F F F F
-3675 F T F F F F F
-3676 F F F F F F F
-3677 F F F F F F F
-3678 F F F F F F F
-3679 F F F F F F F
-3680 F F F F F F F
-3681 F F F F F F F
-3682 F F F F F F F
-3683 F F F F F F F
-3684 F F F F F F F
-3685 F F F F F F F
-3686 F F F F F F F
-3687 F F F F F F F
-3688 F F F F F F F
-3689 F F F F F F F
-3690 F F F F F F F
-3691 F F F F F F F
-3692 F F F F F F F
-3693 F F F F F F F
-3694 F F F F F F F
-3695 F F F F F F F
-3696 F F F F F F F
-3697 F F F F F F F
-3698 F F F F F F F
-3699 F F F F F F F
-3700 F F F F F F F
-3701 F F F F F F F
-3702 F F F F F F F
-3703 F F F F F F F
-3704 F F F F F F F
-3705 F F F F F F F
-3706 F F F F F F F
-3707 F F F F F F F
-3708 F F F F F F F
-3709 F F F F F F F
-3710 F F F F F F F
-3711 F F F F F F F
-3712 F F F F F F F
-3713 F T F F F T F
-3714 F T F F F T F
-3715 F F F F F F F
-3716 F T F F F T F
-3717 F F F F F F F
-3718 F F F F F F F
-3719 F T F F F T F
-3720 F T F F F T F
-3721 F F F F F F F
-3722 F T F F F T F
-3723 F F F F F F F
-3724 F F F F F F F
-3725 F T F F F T F
-3726 F F F F F F F
-3727 F F F F F F F
-3728 F F F F F F F
-3729 F F F F F F F
-3730 F F F F F F F
-3731 F F F F F F F
-3732 F T F F F T F
-3733 F T F F F T F
-3734 F T F F F T F
-3735 F T F F F T F
-3736 F F F F F F F
-3737 F T F F F T F
-3738 F T F F F T F
-3739 F T F F F T F
-3740 F T F F F T F
-3741 F T F F F T F
-3742 F T F F F T F
-3743 F T F F F T F
-3744 F F F F F F F
-3745 F T F F F T F
-3746 F T F F F T F
-3747 F T F F F T F
-3748 F F F F F F F
-3749 F T F F F T F
-3750 F F F F F F F
-3751 F T F F F T F
-3752 F F F F F F F
-3753 F F F F F F F
-3754 F T F F F T F
-3755 F T F F F T F
-3756 F F F F F F F
-3757 F T F F F T F
-3758 F T F F F T F
-3759 F T F F F T F
-3760 F T F F F T F
-3761 F T F F F F F
-3762 F T F F F T F
-3763 F T F F F T F
-3764 F T F F F F F
-3765 F T F F F F F
-3766 F T F F F F F
-3767 F T F F F F F
-3768 F T F F F F F
-3769 F T F F F F F
-3770 F F F F F F F
-3771 F T F F F F F
-3772 F T F F F F F
-3773 F T F F F T F
-3774 F F F F F F F
-3775 F F F F F F F
-3776 F T F F F T F
-3777 F T F F F T F
-3778 F T F F F T F
-3779 F T F F F T F
-3780 F T F F F T F
-3781 F F F F F F F
-3782 F T F F F T F
-3783 F F F F F F F
-3784 F T F F F F F
-3785 F T F F F F F
-3786 F T F F F F F
-3787 F T F F F F F
-3788 F T F F F F F
-3789 F T F F F F F
-3790 F F F F F F F
-3791 F F F F F F F
-3792 F T F F F F F
-3793 F T F F F F F
-3794 F T F F F F F
-3795 F T F F F F F
-3796 F T F F F F F
-3797 F T F F F F F
-3798 F T F F F F F
-3799 F T F F F F F
-3800 F T F F F F F
-3801 F T F F F F F
-3802 F F F F F F F
-3803 F F F F F F F
-3804 F T F F F T F
-3805 F T F F F T F
-3806 F F F F F F F
-3807 F F F F F F F
-3808 F F F F F F F
-3809 F F F F F F F
-3810 F F F F F F F
-3811 F F F F F F F
-3812 F F F F F F F
-3813 F F F F F F F
-3814 F F F F F F F
-3815 F F F F F F F
-3816 F F F F F F F
-3817 F F F F F F F
-3818 F F F F F F F
-3819 F F F F F F F
-3820 F F F F F F F
-3821 F F F F F F F
-3822 F F F F F F F
-3823 F F F F F F F
-3824 F F F F F F F
-3825 F F F F F F F
-3826 F F F F F F F
-3827 F F F F F F F
-3828 F F F F F F F
-3829 F F F F F F F
-3830 F F F F F F F
-3831 F F F F F F F
-3832 F F F F F F F
-3833 F F F F F F F
-3834 F F F F F F F
-3835 F F F F F F F
-3836 F F F F F F F
-3837 F F F F F F F
-3838 F F F F F F F
-3839 F F F F F F F
-3840 F T F F F T F
-3841 F T F F F F F
-3842 F T F F F F F
-3843 F T F F F F F
-3844 F T F F F F F
-3845 F T F F F F F
-3846 F T F F F F F
-3847 F T F F F F F
-3848 F T F F F F F
-3849 F T F F F F F
-3850 F T F F F F F
-3851 F T F F F F F
-3852 F T F F F F F
-3853 F T F F F F F
-3854 F T F F F F F
-3855 F T F F F F F
-3856 F T F F F F F
-3857 F T F F F F F
-3858 F T F F F F F
-3859 F T F F F F F
-3860 F T F F F F F
-3861 F T F F F F F
-3862 F T F F F F F
-3863 F T F F F F F
-3864 F T F F F F F
-3865 F T F F F F F
-3866 F T F F F F F
-3867 F T F F F F F
-3868 F T F F F F F
-3869 F T F F F F F
-3870 F T F F F F F
-3871 F T F F F F F
-3872 F T F F F F F
-3873 F T F F F F F
-3874 F T F F F F F
-3875 F T F F F F F
-3876 F T F F F F F
-3877 F T F F F F F
-3878 F T F F F F F
-3879 F T F F F F F
-3880 F T F F F F F
-3881 F T F F F F F
-3882 F T F F F F F
-3883 F T F F F F F
-3884 F T F F F F F
-3885 F T F F F F F
-3886 F T F F F F F
-3887 F T F F F F F
-3888 F T F F F F F
-3889 F T F F F F F
-3890 F T F F F F F
-3891 F T F F F F F
-3892 F T F F F F F
-3893 F T F F F F F
-3894 F T F F F F F
-3895 F T F F F F F
-3896 F T F F F F F
-3897 F T F F F F F
-3898 F T F F F F F
-3899 F T F F F F F
-3900 F T F F F F F
-3901 F T F F F F F
-3902 F T F F F F F
-3903 F T F F F F F
-3904 F T F F F T F
-3905 F T F F F T F
-3906 F T F F F T F
-3907 F T F F F T F
-3908 F T F F F T F
-3909 F T F F F T F
-3910 F T F F F T F
-3911 F T F F F T F
-3912 F F F F F F F
-3913 F T F F F T F
-3914 F T F F F T F
-3915 F T F F F T F
-3916 F T F F F T F
-3917 F T F F F T F
-3918 F T F F F T F
-3919 F T F F F T F
-3920 F T F F F T F
-3921 F T F F F T F
-3922 F T F F F T F
-3923 F T F F F T F
-3924 F T F F F T F
-3925 F T F F F T F
-3926 F T F F F T F
-3927 F T F F F T F
-3928 F T F F F T F
-3929 F T F F F T F
-3930 F T F F F T F
-3931 F T F F F T F
-3932 F T F F F T F
-3933 F T F F F T F
-3934 F T F F F T F
-3935 F T F F F T F
-3936 F T F F F T F
-3937 F T F F F T F
-3938 F T F F F T F
-3939 F T F F F T F
-3940 F T F F F T F
-3941 F T F F F T F
-3942 F T F F F T F
-3943 F T F F F T F
-3944 F T F F F T F
-3945 F T F F F T F
-3946 F T F F F T F
-3947 F T F F F T F
-3948 F T F F F T F
-3949 F F F F F F F
-3950 F F F F F F F
-3951 F F F F F F F
-3952 F F F F F F F
-3953 F T F F F F F
-3954 F T F F F F F
-3955 F T F F F F F
-3956 F T F F F F F
-3957 F T F F F F F
-3958 F T F F F F F
-3959 F T F F F F F
-3960 F T F F F F F
-3961 F T F F F F F
-3962 F T F F F F F
-3963 F T F F F F F
-3964 F T F F F F F
-3965 F T F F F F F
-3966 F T F F F F F
-3967 F T F F F F F
-3968 F T F F F F F
-3969 F T F F F F F
-3970 F T F F F F F
-3971 F T F F F F F
-3972 F T F F F F F
-3973 F T F F F F F
-3974 F T F F F F F
-3975 F T F F F F F
-3976 F T F F F T F
-3977 F T F F F T F
-3978 F T F F F T F
-3979 F T F F F T F
-3980 F T F F F T F
-3981 F T F F F F F
-3982 F T F F F F F
-3983 F T F F F F F
-3984 F T F F F F F
-3985 F T F F F F F
-3986 F T F F F F F
-3987 F T F F F F F
-3988 F T F F F F F
-3989 F T F F F F F
-3990 F T F F F F F
-3991 F T F F F F F
-3992 F F F F F F F
-3993 F T F F F F F
-3994 F T F F F F F
-3995 F T F F F F F
-3996 F T F F F F F
-3997 F T F F F F F
-3998 F T F F F F F
-3999 F T F F F F F
-4000 F T F F F F F
-4001 F T F F F F F
-4002 F T F F F F F
-4003 F T F F F F F
-4004 F T F F F F F
-4005 F T F F F F F
-4006 F T F F F F F
-4007 F T F F F F F
-4008 F T F F F F F
-4009 F T F F F F F
-4010 F T F F F F F
-4011 F T F F F F F
-4012 F T F F F F F
-4013 F T F F F F F
-4014 F T F F F F F
-4015 F T F F F F F
-4016 F T F F F F F
-4017 F T F F F F F
-4018 F T F F F F F
-4019 F T F F F F F
-4020 F T F F F F F
-4021 F T F F F F F
-4022 F T F F F F F
-4023 F T F F F F F
-4024 F T F F F F F
-4025 F T F F F F F
-4026 F T F F F F F
-4027 F T F F F F F
-4028 F T F F F F F
-4029 F F F F F F F
-4030 F T F F F F F
-4031 F T F F F F F
-4032 F T F F F F F
-4033 F T F F F F F
-4034 F T F F F F F
-4035 F T F F F F F
-4036 F T F F F F F
-4037 F T F F F F F
-4038 F T F F F F F
-4039 F T F F F F F
-4040 F T F F F F F
-4041 F T F F F F F
-4042 F T F F F F F
-4043 F T F F F F F
-4044 F T F F F F F
-4045 F F F F F F F
-4046 F T F F F F F
-4047 F T F F F F F
-4048 F T F F F F F
-4049 F T F F F F F
-4050 F T F F F F F
-4051 F T F F F F F
-4052 F T F F F F F
-4053 F T F F F F F
-4054 F T F F F F F
-4055 F T F F F F F
-4056 F T F F F F F
-4057 F T F F F F F
-4058 F T F F F F F
-4059 F F F F F F F
-4060 F F F F F F F
-4061 F F F F F F F
-4062 F F F F F F F
-4063 F F F F F F F
-4064 F F F F F F F
-4065 F F F F F F F
-4066 F F F F F F F
-4067 F F F F F F F
-4068 F F F F F F F
-4069 F F F F F F F
-4070 F F F F F F F
-4071 F F F F F F F
-4072 F F F F F F F
-4073 F F F F F F F
-4074 F F F F F F F
-4075 F F F F F F F
-4076 F F F F F F F
-4077 F F F F F F F
-4078 F F F F F F F
-4079 F F F F F F F
-4080 F F F F F F F
-4081 F F F F F F F
-4082 F F F F F F F
-4083 F F F F F F F
-4084 F F F F F F F
-4085 F F F F F F F
-4086 F F F F F F F
-4087 F F F F F F F
-4088 F F F F F F F
-4089 F F F F F F F
-4090 F F F F F F F
-4091 F F F F F F F
-4092 F F F F F F F
-4093 F F F F F F F
-4094 F F F F F F F
-4095 F F F F F F F
-4096 F T F F F T F
-4097 F T F F F T F
-4098 F T F F F T F
-4099 F T F F F T F
-4100 F T F F F T F
-4101 F T F F F T F
-4102 F T F F F T F
-4103 F T F F F T F
-4104 F T F F F T F
-4105 F T F F F T F
-4106 F T F F F T F
-4107 F T F F F T F
-4108 F T F F F T F
-4109 F T F F F T F
-4110 F T F F F T F
-4111 F T F F F T F
-4112 F T F F F T F
-4113 F T F F F T F
-4114 F T F F F T F
-4115 F T F F F T F
-4116 F T F F F T F
-4117 F T F F F T F
-4118 F T F F F T F
-4119 F T F F F T F
-4120 F T F F F T F
-4121 F T F F F T F
-4122 F T F F F T F
-4123 F T F F F T F
-4124 F T F F F T F
-4125 F T F F F T F
-4126 F T F F F T F
-4127 F T F F F T F
-4128 F T F F F T F
-4129 F T F F F T F
-4130 F T F F F T F
-4131 F T F F F T F
-4132 F T F F F T F
-4133 F T F F F T F
-4134 F T F F F T F
-4135 F T F F F T F
-4136 F T F F F T F
-4137 F T F F F T F
-4138 F T F F F T F
-4139 F T F F F F F
-4140 F T F F F F F
-4141 F T F F F F F
-4142 F T F F F F F
-4143 F T F F F F F
-4144 F T F F F F F
-4145 F T F F F F F
-4146 F T F F F F F
-4147 F T F F F F F
-4148 F T F F F F F
-4149 F T F F F F F
-4150 F T F F F F F
-4151 F T F F F F F
-4152 F T F F F F F
-4153 F T F F F F F
-4154 F T F F F F F
-4155 F T F F F F F
-4156 F T F F F F F
-4157 F T F F F F F
-4158 F T F F F F F
-4159 F T F F F T F
-4160 F T F F F F F
-4161 F T F F F F F
-4162 F T F F F F F
-4163 F T F F F F F
-4164 F T F F F F F
-4165 F T F F F F F
-4166 F T F F F F F
-4167 F T F F F F F
-4168 F T F F F F F
-4169 F T F F F F F
-4170 F T F F F F F
-4171 F T F F F F F
-4172 F T F F F F F
-4173 F T F F F F F
-4174 F T F F F F F
-4175 F T F F F F F
-4176 F T F F F T F
-4177 F T F F F T F
-4178 F T F F F T F
-4179 F T F F F T F
-4180 F T F F F T F
-4181 F T F F F T F
-4182 F T F F F F F
-4183 F T F F F F F
-4184 F T F F F F F
-4185 F T F F F F F
-4186 F T F F F T F
-4187 F T F F F T F
-4188 F T F F F T F
-4189 F T F F F T F
-4190 F T F F F F F
-4191 F T F F F F F
-4192 F T F F F F F
-4193 F T F F F T F
-4194 F T F F F F F
-4195 F T F F F F F
-4196 F T F F F F F
-4197 F T F F F T F
-4198 F T F F F T F
-4199 F T F F F F F
-4200 F T F F F F F
-4201 F T F F F F F
-4202 F T F F F F F
-4203 F T F F F F F
-4204 F T F F F F F
-4205 F T F F F F F
-4206 F T F F F T F
-4207 F T F F F T F
-4208 F T F F F T F
-4209 F T F F F F F
-4210 F T F F F F F
-4211 F T F F F F F
-4212 F T F F F F F
-4213 F T F F F T F
-4214 F T F F F T F
-4215 F T F F F T F
-4216 F T F F F T F
-4217 F T F F F T F
-4218 F T F F F T F
-4219 F T F F F T F
-4220 F T F F F T F
-4221 F T F F F T F
-4222 F T F F F T F
-4223 F T F F F T F
-4224 F T F F F T F
-4225 F T F F F T F
-4226 F T F F F F F
-4227 F T F F F F F
-4228 F T F F F F F
-4229 F T F F F F F
-4230 F T F F F F F
-4231 F T F F F F F
-4232 F T F F F F F
-4233 F T F F F F F
-4234 F T F F F F F
-4235 F T F F F F F
-4236 F T F F F F F
-4237 F T F F F F F
-4238 F T F F F T F
-4239 F T F F F F F
-4240 F T F F F F F
-4241 F T F F F F F
-4242 F T F F F F F
-4243 F T F F F F F
-4244 F T F F F F F
-4245 F T F F F F F
-4246 F T F F F F F
-4247 F T F F F F F
-4248 F T F F F F F
-4249 F T F F F F F
-4250 F T F F F F F
-4251 F T F F F F F
-4252 F T F F F F F
-4253 F T F F F F F
-4254 F T F F F F F
-4255 F T F F F F F
-4256 F T F T F T F
-4257 F T F T F T F
-4258 F T F T F T F
-4259 F T F T F T F
-4260 F T F T F T F
-4261 F T F T F T F
-4262 F T F T F T F
-4263 F T F T F T F
-4264 F T F T F T F
-4265 F T F T F T F
-4266 F T F T F T F
-4267 F T F T F T F
-4268 F T F T F T F
-4269 F T F T F T F
-4270 F T F T F T F
-4271 F T F T F T F
-4272 F T F T F T F
-4273 F T F T F T F
-4274 F T F T F T F
-4275 F T F T F T F
-4276 F T F T F T F
-4277 F T F T F T F
-4278 F T F T F T F
-4279 F T F T F T F
-4280 F T F T F T F
-4281 F T F T F T F
-4282 F T F T F T F
-4283 F T F T F T F
-4284 F T F T F T F
-4285 F T F T F T F
-4286 F T F T F T F
-4287 F T F T F T F
-4288 F T F T F T F
-4289 F T F T F T F
-4290 F T F T F T F
-4291 F T F T F T F
-4292 F T F T F T F
-4293 F T F T F T F
-4294 F F F F F F F
-4295 F F F F F F F
-4296 F F F F F F F
-4297 F F F F F F F
-4298 F F F F F F F
-4299 F F F F F F F
-4300 F F F F F F F
-4301 F F F F F F F
-4302 F F F F F F F
-4303 F F F F F F F
-4304 F T F F F T F
-4305 F T F F F T F
-4306 F T F F F T F
-4307 F T F F F T F
-4308 F T F F F T F
-4309 F T F F F T F
-4310 F T F F F T F
-4311 F T F F F T F
-4312 F T F F F T F
-4313 F T F F F T F
-4314 F T F F F T F
-4315 F T F F F T F
-4316 F T F F F T F
-4317 F T F F F T F
-4318 F T F F F T F
-4319 F T F F F T F
-4320 F T F F F T F
-4321 F T F F F T F
-4322 F T F F F T F
-4323 F T F F F T F
-4324 F T F F F T F
-4325 F T F F F T F
-4326 F T F F F T F
-4327 F T F F F T F
-4328 F T F F F T F
-4329 F T F F F T F
-4330 F T F F F T F
-4331 F T F F F T F
-4332 F T F F F T F
-4333 F T F F F T F
-4334 F T F F F T F
-4335 F T F F F T F
-4336 F T F F F T F
-4337 F T F F F T F
-4338 F T F F F T F
-4339 F T F F F T F
-4340 F T F F F T F
-4341 F T F F F T F
-4342 F T F F F T F
-4343 F T F F F T F
-4344 F T F F F T F
-4345 F T F F F T F
-4346 F T F F F T F
-4347 F T F F F F F
-4348 F T F F F T F
-4349 F F F F F F F
-4350 F F F F F F F
-4351 F F F F F F F
-4352 F T F F F T F
-4353 F T F F F T F
-4354 F T F F F T F
-4355 F T F F F T F
-4356 F T F F F T F
-4357 F T F F F T F
-4358 F T F F F T F
-4359 F T F F F T F
-4360 F T F F F T F
-4361 F T F F F T F
-4362 F T F F F T F
-4363 F T F F F T F
-4364 F T F F F T F
-4365 F T F F F T F
-4366 F T F F F T F
-4367 F T F F F T F
-4368 F T F F F T F
-4369 F T F F F T F
-4370 F T F F F T F
-4371 F T F F F T F
-4372 F T F F F T F
-4373 F T F F F T F
-4374 F T F F F T F
-4375 F T F F F T F
-4376 F T F F F T F
-4377 F T F F F T F
-4378 F T F F F T F
-4379 F T F F F T F
-4380 F T F F F T F
-4381 F T F F F T F
-4382 F T F F F T F
-4383 F T F F F T F
-4384 F T F F F T F
-4385 F T F F F T F
-4386 F T F F F T F
-4387 F T F F F T F
-4388 F T F F F T F
-4389 F T F F F T F
-4390 F T F F F T F
-4391 F T F F F T F
-4392 F T F F F T F
-4393 F T F F F T F
-4394 F T F F F T F
-4395 F T F F F T F
-4396 F T F F F T F
-4397 F T F F F T F
-4398 F T F F F T F
-4399 F T F F F T F
-4400 F T F F F T F
-4401 F T F F F T F
-4402 F T F F F T F
-4403 F T F F F T F
-4404 F T F F F T F
-4405 F T F F F T F
-4406 F T F F F T F
-4407 F T F F F T F
-4408 F T F F F T F
-4409 F T F F F T F
-4410 F T F F F T F
-4411 F T F F F T F
-4412 F T F F F T F
-4413 F T F F F T F
-4414 F T F F F T F
-4415 F T F F F T F
-4416 F T F F F T F
-4417 F T F F F T F
-4418 F T F F F T F
-4419 F T F F F T F
-4420 F T F F F T F
-4421 F T F F F T F
-4422 F T F F F T F
-4423 F T F F F T F
-4424 F T F F F T F
-4425 F T F F F T F
-4426 F T F F F T F
-4427 F T F F F T F
-4428 F T F F F T F
-4429 F T F F F T F
-4430 F T F F F T F
-4431 F T F F F T F
-4432 F T F F F T F
-4433 F T F F F T F
-4434 F T F F F T F
-4435 F T F F F T F
-4436 F T F F F T F
-4437 F T F F F T F
-4438 F T F F F T F
-4439 F T F F F T F
-4440 F T F F F T F
-4441 F T F F F T F
-4442 F T F F F T F
-4443 F T F F F T F
-4444 F T F F F T F
-4445 F T F F F T F
-4446 F T F F F T F
-4447 F T F F F T F
-4448 F T F F F T F
-4449 F T F F F T F
-4450 F T F F F T F
-4451 F T F F F T F
-4452 F T F F F T F
-4453 F T F F F T F
-4454 F T F F F T F
-4455 F T F F F T F
-4456 F T F F F T F
-4457 F T F F F T F
-4458 F T F F F T F
-4459 F T F F F T F
-4460 F T F F F T F
-4461 F T F F F T F
-4462 F T F F F T F
-4463 F T F F F T F
-4464 F T F F F T F
-4465 F T F F F T F
-4466 F T F F F T F
-4467 F T F F F T F
-4468 F T F F F T F
-4469 F T F F F T F
-4470 F T F F F T F
-4471 F T F F F T F
-4472 F T F F F T F
-4473 F T F F F T F
-4474 F T F F F T F
-4475 F T F F F T F
-4476 F T F F F T F
-4477 F T F F F T F
-4478 F T F F F T F
-4479 F T F F F T F
-4480 F T F F F T F
-4481 F T F F F T F
-4482 F T F F F T F
-4483 F T F F F T F
-4484 F T F F F T F
-4485 F T F F F T F
-4486 F T F F F T F
-4487 F T F F F T F
-4488 F T F F F T F
-4489 F T F F F T F
-4490 F T F F F T F
-4491 F T F F F T F
-4492 F T F F F T F
-4493 F T F F F T F
-4494 F T F F F T F
-4495 F T F F F T F
-4496 F T F F F T F
-4497 F T F F F T F
-4498 F T F F F T F
-4499 F T F F F T F
-4500 F T F F F T F
-4501 F T F F F T F
-4502 F T F F F T F
-4503 F T F F F T F
-4504 F T F F F T F
-4505 F T F F F T F
-4506 F T F F F T F
-4507 F T F F F T F
-4508 F T F F F T F
-4509 F T F F F T F
-4510 F T F F F T F
-4511 F T F F F T F
-4512 F T F F F T F
-4513 F T F F F T F
-4514 F T F F F T F
-4515 F T F F F T F
-4516 F T F F F T F
-4517 F T F F F T F
-4518 F T F F F T F
-4519 F T F F F T F
-4520 F T F F F T F
-4521 F T F F F T F
-4522 F T F F F T F
-4523 F T F F F T F
-4524 F T F F F T F
-4525 F T F F F T F
-4526 F T F F F T F
-4527 F T F F F T F
-4528 F T F F F T F
-4529 F T F F F T F
-4530 F T F F F T F
-4531 F T F F F T F
-4532 F T F F F T F
-4533 F T F F F T F
-4534 F T F F F T F
-4535 F T F F F T F
-4536 F T F F F T F
-4537 F T F F F T F
-4538 F T F F F T F
-4539 F T F F F T F
-4540 F T F F F T F
-4541 F T F F F T F
-4542 F T F F F T F
-4543 F T F F F T F
-4544 F T F F F T F
-4545 F T F F F T F
-4546 F T F F F T F
-4547 F T F F F T F
-4548 F T F F F T F
-4549 F T F F F T F
-4550 F T F F F T F
-4551 F T F F F T F
-4552 F T F F F T F
-4553 F T F F F T F
-4554 F T F F F T F
-4555 F T F F F T F
-4556 F T F F F T F
-4557 F T F F F T F
-4558 F T F F F T F
-4559 F T F F F T F
-4560 F T F F F T F
-4561 F T F F F T F
-4562 F T F F F T F
-4563 F T F F F T F
-4564 F T F F F T F
-4565 F T F F F T F
-4566 F T F F F T F
-4567 F T F F F T F
-4568 F T F F F T F
-4569 F T F F F T F
-4570 F T F F F T F
-4571 F T F F F T F
-4572 F T F F F T F
-4573 F T F F F T F
-4574 F T F F F T F
-4575 F T F F F T F
-4576 F T F F F T F
-4577 F T F F F T F
-4578 F T F F F T F
-4579 F T F F F T F
-4580 F T F F F T F
-4581 F T F F F T F
-4582 F T F F F T F
-4583 F T F F F T F
-4584 F T F F F T F
-4585 F T F F F T F
-4586 F T F F F T F
-4587 F T F F F T F
-4588 F T F F F T F
-4589 F T F F F T F
-4590 F T F F F T F
-4591 F T F F F T F
-4592 F T F F F T F
-4593 F T F F F T F
-4594 F T F F F T F
-4595 F T F F F T F
-4596 F T F F F T F
-4597 F T F F F T F
-4598 F T F F F T F
-4599 F T F F F T F
-4600 F T F F F T F
-4601 F T F F F T F
-4602 F T F F F T F
-4603 F T F F F T F
-4604 F T F F F T F
-4605 F T F F F T F
-4606 F T F F F T F
-4607 F T F F F T F
-4608 F T F F F T F
-4609 F T F F F T F
-4610 F T F F F T F
-4611 F T F F F T F
-4612 F T F F F T F
-4613 F T F F F T F
-4614 F T F F F T F
-4615 F T F F F T F
-4616 F T F F F T F
-4617 F T F F F T F
-4618 F T F F F T F
-4619 F T F F F T F
-4620 F T F F F T F
-4621 F T F F F T F
-4622 F T F F F T F
-4623 F T F F F T F
-4624 F T F F F T F
-4625 F T F F F T F
-4626 F T F F F T F
-4627 F T F F F T F
-4628 F T F F F T F
-4629 F T F F F T F
-4630 F T F F F T F
-4631 F T F F F T F
-4632 F T F F F T F
-4633 F T F F F T F
-4634 F T F F F T F
-4635 F T F F F T F
-4636 F T F F F T F
-4637 F T F F F T F
-4638 F T F F F T F
-4639 F T F F F T F
-4640 F T F F F T F
-4641 F T F F F T F
-4642 F T F F F T F
-4643 F T F F F T F
-4644 F T F F F T F
-4645 F T F F F T F
-4646 F T F F F T F
-4647 F T F F F T F
-4648 F T F F F T F
-4649 F T F F F T F
-4650 F T F F F T F
-4651 F T F F F T F
-4652 F T F F F T F
-4653 F T F F F T F
-4654 F T F F F T F
-4655 F T F F F T F
-4656 F T F F F T F
-4657 F T F F F T F
-4658 F T F F F T F
-4659 F T F F F T F
-4660 F T F F F T F
-4661 F T F F F T F
-4662 F T F F F T F
-4663 F T F F F T F
-4664 F T F F F T F
-4665 F T F F F T F
-4666 F T F F F T F
-4667 F T F F F T F
-4668 F T F F F T F
-4669 F T F F F T F
-4670 F T F F F T F
-4671 F T F F F T F
-4672 F T F F F T F
-4673 F T F F F T F
-4674 F T F F F T F
-4675 F T F F F T F
-4676 F T F F F T F
-4677 F T F F F T F
-4678 F T F F F T F
-4679 F T F F F T F
-4680 F T F F F T F
-4681 F F F F F F F
-4682 F T F F F T F
-4683 F T F F F T F
-4684 F T F F F T F
-4685 F T F F F T F
-4686 F F F F F F F
-4687 F F F F F F F
-4688 F T F F F T F
-4689 F T F F F T F
-4690 F T F F F T F
-4691 F T F F F T F
-4692 F T F F F T F
-4693 F T F F F T F
-4694 F T F F F T F
-4695 F F F F F F F
-4696 F T F F F T F
-4697 F F F F F F F
-4698 F T F F F T F
-4699 F T F F F T F
-4700 F T F F F T F
-4701 F T F F F T F
-4702 F F F F F F F
-4703 F F F F F F F
-4704 F T F F F T F
-4705 F T F F F T F
-4706 F T F F F T F
-4707 F T F F F T F
-4708 F T F F F T F
-4709 F T F F F T F
-4710 F T F F F T F
-4711 F T F F F T F
-4712 F T F F F T F
-4713 F T F F F T F
-4714 F T F F F T F
-4715 F T F F F T F
-4716 F T F F F T F
-4717 F T F F F T F
-4718 F T F F F T F
-4719 F T F F F T F
-4720 F T F F F T F
-4721 F T F F F T F
-4722 F T F F F T F
-4723 F T F F F T F
-4724 F T F F F T F
-4725 F T F F F T F
-4726 F T F F F T F
-4727 F T F F F T F
-4728 F T F F F T F
-4729 F T F F F T F
-4730 F T F F F T F
-4731 F T F F F T F
-4732 F T F F F T F
-4733 F T F F F T F
-4734 F T F F F T F
-4735 F T F F F T F
-4736 F T F F F T F
-4737 F T F F F T F
-4738 F T F F F T F
-4739 F T F F F T F
-4740 F T F F F T F
-4741 F T F F F T F
-4742 F T F F F T F
-4743 F T F F F T F
-4744 F T F F F T F
-4745 F F F F F F F
-4746 F T F F F T F
-4747 F T F F F T F
-4748 F T F F F T F
-4749 F T F F F T F
-4750 F F F F F F F
-4751 F F F F F F F
-4752 F T F F F T F
-4753 F T F F F T F
-4754 F T F F F T F
-4755 F T F F F T F
-4756 F T F F F T F
-4757 F T F F F T F
-4758 F T F F F T F
-4759 F T F F F T F
-4760 F T F F F T F
-4761 F T F F F T F
-4762 F T F F F T F
-4763 F T F F F T F
-4764 F T F F F T F
-4765 F T F F F T F
-4766 F T F F F T F
-4767 F T F F F T F
-4768 F T F F F T F
-4769 F T F F F T F
-4770 F T F F F T F
-4771 F T F F F T F
-4772 F T F F F T F
-4773 F T F F F T F
-4774 F T F F F T F
-4775 F T F F F T F
-4776 F T F F F T F
-4777 F T F F F T F
-4778 F T F F F T F
-4779 F T F F F T F
-4780 F T F F F T F
-4781 F T F F F T F
-4782 F T F F F T F
-4783 F T F F F T F
-4784 F T F F F T F
-4785 F F F F F F F
-4786 F T F F F T F
-4787 F T F F F T F
-4788 F T F F F T F
-4789 F T F F F T F
-4790 F F F F F F F
-4791 F F F F F F F
-4792 F T F F F T F
-4793 F T F F F T F
-4794 F T F F F T F
-4795 F T F F F T F
-4796 F T F F F T F
-4797 F T F F F T F
-4798 F T F F F T F
-4799 F F F F F F F
-4800 F T F F F T F
-4801 F F F F F F F
-4802 F T F F F T F
-4803 F T F F F T F
-4804 F T F F F T F
-4805 F T F F F T F
-4806 F F F F F F F
-4807 F F F F F F F
-4808 F T F F F T F
-4809 F T F F F T F
-4810 F T F F F T F
-4811 F T F F F T F
-4812 F T F F F T F
-4813 F T F F F T F
-4814 F T F F F T F
-4815 F T F F F T F
-4816 F T F F F T F
-4817 F T F F F T F
-4818 F T F F F T F
-4819 F T F F F T F
-4820 F T F F F T F
-4821 F T F F F T F
-4822 F T F F F T F
-4823 F F F F F F F
-4824 F T F F F T F
-4825 F T F F F T F
-4826 F T F F F T F
-4827 F T F F F T F
-4828 F T F F F T F
-4829 F T F F F T F
-4830 F T F F F T F
-4831 F T F F F T F
-4832 F T F F F T F
-4833 F T F F F T F
-4834 F T F F F T F
-4835 F T F F F T F
-4836 F T F F F T F
-4837 F T F F F T F
-4838 F T F F F T F
-4839 F T F F F T F
-4840 F T F F F T F
-4841 F T F F F T F
-4842 F T F F F T F
-4843 F T F F F T F
-4844 F T F F F T F
-4845 F T F F F T F
-4846 F T F F F T F
-4847 F T F F F T F
-4848 F T F F F T F
-4849 F T F F F T F
-4850 F T F F F T F
-4851 F T F F F T F
-4852 F T F F F T F
-4853 F T F F F T F
-4854 F T F F F T F
-4855 F T F F F T F
-4856 F T F F F T F
-4857 F T F F F T F
-4858 F T F F F T F
-4859 F T F F F T F
-4860 F T F F F T F
-4861 F T F F F T F
-4862 F T F F F T F
-4863 F T F F F T F
-4864 F T F F F T F
-4865 F T F F F T F
-4866 F T F F F T F
-4867 F T F F F T F
-4868 F T F F F T F
-4869 F T F F F T F
-4870 F T F F F T F
-4871 F T F F F T F
-4872 F T F F F T F
-4873 F T F F F T F
-4874 F T F F F T F
-4875 F T F F F T F
-4876 F T F F F T F
-4877 F T F F F T F
-4878 F T F F F T F
-4879 F T F F F T F
-4880 F T F F F T F
-4881 F F F F F F F
-4882 F T F F F T F
-4883 F T F F F T F
-4884 F T F F F T F
-4885 F T F F F T F
-4886 F F F F F F F
-4887 F F F F F F F
-4888 F T F F F T F
-4889 F T F F F T F
-4890 F T F F F T F
-4891 F T F F F T F
-4892 F T F F F T F
-4893 F T F F F T F
-4894 F T F F F T F
-4895 F T F F F T F
-4896 F T F F F T F
-4897 F T F F F T F
-4898 F T F F F T F
-4899 F T F F F T F
-4900 F T F F F T F
-4901 F T F F F T F
-4902 F T F F F T F
-4903 F T F F F T F
-4904 F T F F F T F
-4905 F T F F F T F
-4906 F T F F F T F
-4907 F T F F F T F
-4908 F T F F F T F
-4909 F T F F F T F
-4910 F T F F F T F
-4911 F T F F F T F
-4912 F T F F F T F
-4913 F T F F F T F
-4914 F T F F F T F
-4915 F T F F F T F
-4916 F T F F F T F
-4917 F T F F F T F
-4918 F T F F F T F
-4919 F T F F F T F
-4920 F T F F F T F
-4921 F T F F F T F
-4922 F T F F F T F
-4923 F T F F F T F
-4924 F T F F F T F
-4925 F T F F F T F
-4926 F T F F F T F
-4927 F T F F F T F
-4928 F T F F F T F
-4929 F T F F F T F
-4930 F T F F F T F
-4931 F T F F F T F
-4932 F T F F F T F
-4933 F T F F F T F
-4934 F T F F F T F
-4935 F T F F F T F
-4936 F T F F F T F
-4937 F T F F F T F
-4938 F T F F F T F
-4939 F T F F F T F
-4940 F T F F F T F
-4941 F T F F F T F
-4942 F T F F F T F
-4943 F T F F F T F
-4944 F T F F F T F
-4945 F T F F F T F
-4946 F T F F F T F
-4947 F T F F F T F
-4948 F T F F F T F
-4949 F T F F F T F
-4950 F T F F F T F
-4951 F T F F F T F
-4952 F T F F F T F
-4953 F T F F F T F
-4954 F T F F F T F
-4955 F F F F F F F
-4956 F F F F F F F
-4957 F T F F F F F
-4958 F T F F F F F
-4959 F T F F F F F
-4960 F T F F F F F
-4961 F T F F F F F
-4962 F T F F F F F
-4963 F T F F F F F
-4964 F T F F F F F
-4965 F T F F F F F
-4966 F T F F F F F
-4967 F T F F F F F
-4968 F T F F F F F
-4969 F T F F F F F
-4970 F T F F F F F
-4971 F T F F F F F
-4972 F T F F F F F
-4973 F T F F F F F
-4974 F T F F F F F
-4975 F T F F F F F
-4976 F T F F F F F
-4977 F T F F F F F
-4978 F T F F F F F
-4979 F T F F F F F
-4980 F T F F F F F
-4981 F T F F F F F
-4982 F T F F F F F
-4983 F T F F F F F
-4984 F T F F F F F
-4985 F T F F F F F
-4986 F T F F F F F
-4987 F T F F F F F
-4988 F T F F F F F
-4989 F F F F F F F
-4990 F F F F F F F
-4991 F F F F F F F
-4992 F T F F F T F
-4993 F T F F F T F
-4994 F T F F F T F
-4995 F T F F F T F
-4996 F T F F F T F
-4997 F T F F F T F
-4998 F T F F F T F
-4999 F T F F F T F
-5000 F T F F F T F
-5001 F T F F F T F
-5002 F T F F F T F
-5003 F T F F F T F
-5004 F T F F F T F
-5005 F T F F F T F
-5006 F T F F F T F
-5007 F T F F F T F
-5008 F T F F F F F
-5009 F T F F F F F
-5010 F T F F F F F
-5011 F T F F F F F
-5012 F T F F F F F
-5013 F T F F F F F
-5014 F T F F F F F
-5015 F T F F F F F
-5016 F T F F F F F
-5017 F T F F F F F
-5018 F F F F F F F
-5019 F F F F F F F
-5020 F F F F F F F
-5021 F F F F F F F
-5022 F F F F F F F
-5023 F F F F F F F
-5024 F T F F F T F
-5025 F T F F F T F
-5026 F T F F F T F
-5027 F T F F F T F
-5028 F T F F F T F
-5029 F T F F F T F
-5030 F T F F F T F
-5031 F T F F F T F
-5032 F T F F F T F
-5033 F T F F F T F
-5034 F T F F F T F
-5035 F T F F F T F
-5036 F T F F F T F
-5037 F T F F F T F
-5038 F T F F F T F
-5039 F T F F F T F
-5040 F T F F F T F
-5041 F T F F F T F
-5042 F T F F F T F
-5043 F T F F F T F
-5044 F T F F F T F
-5045 F T F F F T F
-5046 F T F F F T F
-5047 F T F F F T F
-5048 F T F F F T F
-5049 F T F F F T F
-5050 F T F F F T F
-5051 F T F F F T F
-5052 F T F F F T F
-5053 F T F F F T F
-5054 F T F F F T F
-5055 F T F F F T F
-5056 F T F F F T F
-5057 F T F F F T F
-5058 F T F F F T F
-5059 F T F F F T F
-5060 F T F F F T F
-5061 F T F F F T F
-5062 F T F F F T F
-5063 F T F F F T F
-5064 F T F F F T F
-5065 F T F F F T F
-5066 F T F F F T F
-5067 F T F F F T F
-5068 F T F F F T F
-5069 F T F F F T F
-5070 F T F F F T F
-5071 F T F F F T F
-5072 F T F F F T F
-5073 F T F F F T F
-5074 F T F F F T F
-5075 F T F F F T F
-5076 F T F F F T F
-5077 F T F F F T F
-5078 F T F F F T F
-5079 F T F F F T F
-5080 F T F F F T F
-5081 F T F F F T F
-5082 F T F F F T F
-5083 F T F F F T F
-5084 F T F F F T F
-5085 F T F F F T F
-5086 F T F F F T F
-5087 F T F F F T F
-5088 F T F F F T F
-5089 F T F F F T F
-5090 F T F F F T F
-5091 F T F F F T F
-5092 F T F F F T F
-5093 F T F F F T F
-5094 F T F F F T F
-5095 F T F F F T F
-5096 F T F F F T F
-5097 F T F F F T F
-5098 F T F F F T F
-5099 F T F F F T F
-5100 F T F F F T F
-5101 F T F F F T F
-5102 F T F F F T F
-5103 F T F F F T F
-5104 F T F F F T F
-5105 F T F F F T F
-5106 F T F F F T F
-5107 F T F F F T F
-5108 F T F F F T F
-5109 F F F F F F F
-5110 F F F F F F F
-5111 F F F F F F F
-5112 F F F F F F F
-5113 F F F F F F F
-5114 F F F F F F F
-5115 F F F F F F F
-5116 F F F F F F F
-5117 F F F F F F F
-5118 F F F F F F F
-5119 F F F F F F F
-5120 F T F F F F F
-5121 F T F F F T F
-5122 F T F F F T F
-5123 F T F F F T F
-5124 F T F F F T F
-5125 F T F F F T F
-5126 F T F F F T F
-5127 F T F F F T F
-5128 F T F F F T F
-5129 F T F F F T F
-5130 F T F F F T F
-5131 F T F F F T F
-5132 F T F F F T F
-5133 F T F F F T F
-5134 F T F F F T F
-5135 F T F F F T F
-5136 F T F F F T F
-5137 F T F F F T F
-5138 F T F F F T F
-5139 F T F F F T F
-5140 F T F F F T F
-5141 F T F F F T F
-5142 F T F F F T F
-5143 F T F F F T F
-5144 F T F F F T F
-5145 F T F F F T F
-5146 F T F F F T F
-5147 F T F F F T F
-5148 F T F F F T F
-5149 F T F F F T F
-5150 F T F F F T F
-5151 F T F F F T F
-5152 F T F F F T F
-5153 F T F F F T F
-5154 F T F F F T F
-5155 F T F F F T F
-5156 F T F F F T F
-5157 F T F F F T F
-5158 F T F F F T F
-5159 F T F F F T F
-5160 F T F F F T F
-5161 F T F F F T F
-5162 F T F F F T F
-5163 F T F F F T F
-5164 F T F F F T F
-5165 F T F F F T F
-5166 F T F F F T F
-5167 F T F F F T F
-5168 F T F F F T F
-5169 F T F F F T F
-5170 F T F F F T F
-5171 F T F F F T F
-5172 F T F F F T F
-5173 F T F F F T F
-5174 F T F F F T F
-5175 F T F F F T F
-5176 F T F F F T F
-5177 F T F F F T F
-5178 F T F F F T F
-5179 F T F F F T F
-5180 F T F F F T F
-5181 F T F F F T F
-5182 F T F F F T F
-5183 F T F F F T F
-5184 F T F F F T F
-5185 F T F F F T F
-5186 F T F F F T F
-5187 F T F F F T F
-5188 F T F F F T F
-5189 F T F F F T F
-5190 F T F F F T F
-5191 F T F F F T F
-5192 F T F F F T F
-5193 F T F F F T F
-5194 F T F F F T F
-5195 F T F F F T F
-5196 F T F F F T F
-5197 F T F F F T F
-5198 F T F F F T F
-5199 F T F F F T F
-5200 F T F F F T F
-5201 F T F F F T F
-5202 F T F F F T F
-5203 F T F F F T F
-5204 F T F F F T F
-5205 F T F F F T F
-5206 F T F F F T F
-5207 F T F F F T F
-5208 F T F F F T F
-5209 F T F F F T F
-5210 F T F F F T F
-5211 F T F F F T F
-5212 F T F F F T F
-5213 F T F F F T F
-5214 F T F F F T F
-5215 F T F F F T F
-5216 F T F F F T F
-5217 F T F F F T F
-5218 F T F F F T F
-5219 F T F F F T F
-5220 F T F F F T F
-5221 F T F F F T F
-5222 F T F F F T F
-5223 F T F F F T F
-5224 F T F F F T F
-5225 F T F F F T F
-5226 F T F F F T F
-5227 F T F F F T F
-5228 F T F F F T F
-5229 F T F F F T F
-5230 F T F F F T F
-5231 F T F F F T F
-5232 F T F F F T F
-5233 F T F F F T F
-5234 F T F F F T F
-5235 F T F F F T F
-5236 F T F F F T F
-5237 F T F F F T F
-5238 F T F F F T F
-5239 F T F F F T F
-5240 F T F F F T F
-5241 F T F F F T F
-5242 F T F F F T F
-5243 F T F F F T F
-5244 F T F F F T F
-5245 F T F F F T F
-5246 F T F F F T F
-5247 F T F F F T F
-5248 F T F F F T F
-5249 F T F F F T F
-5250 F T F F F T F
-5251 F T F F F T F
-5252 F T F F F T F
-5253 F T F F F T F
-5254 F T F F F T F
-5255 F T F F F T F
-5256 F T F F F T F
-5257 F T F F F T F
-5258 F T F F F T F
-5259 F T F F F T F
-5260 F T F F F T F
-5261 F T F F F T F
-5262 F T F F F T F
-5263 F T F F F T F
-5264 F T F F F T F
-5265 F T F F F T F
-5266 F T F F F T F
-5267 F T F F F T F
-5268 F T F F F T F
-5269 F T F F F T F
-5270 F T F F F T F
-5271 F T F F F T F
-5272 F T F F F T F
-5273 F T F F F T F
-5274 F T F F F T F
-5275 F T F F F T F
-5276 F T F F F T F
-5277 F T F F F T F
-5278 F T F F F T F
-5279 F T F F F T F
-5280 F T F F F T F
-5281 F T F F F T F
-5282 F T F F F T F
-5283 F T F F F T F
-5284 F T F F F T F
-5285 F T F F F T F
-5286 F T F F F T F
-5287 F T F F F T F
-5288 F T F F F T F
-5289 F T F F F T F
-5290 F T F F F T F
-5291 F T F F F T F
-5292 F T F F F T F
-5293 F T F F F T F
-5294 F T F F F T F
-5295 F T F F F T F
-5296 F T F F F T F
-5297 F T F F F T F
-5298 F T F F F T F
-5299 F T F F F T F
-5300 F T F F F T F
-5301 F T F F F T F
-5302 F T F F F T F
-5303 F T F F F T F
-5304 F T F F F T F
-5305 F T F F F T F
-5306 F T F F F T F
-5307 F T F F F T F
-5308 F T F F F T F
-5309 F T F F F T F
-5310 F T F F F T F
-5311 F T F F F T F
-5312 F T F F F T F
-5313 F T F F F T F
-5314 F T F F F T F
-5315 F T F F F T F
-5316 F T F F F T F
-5317 F T F F F T F
-5318 F T F F F T F
-5319 F T F F F T F
-5320 F T F F F T F
-5321 F T F F F T F
-5322 F T F F F T F
-5323 F T F F F T F
-5324 F T F F F T F
-5325 F T F F F T F
-5326 F T F F F T F
-5327 F T F F F T F
-5328 F T F F F T F
-5329 F T F F F T F
-5330 F T F F F T F
-5331 F T F F F T F
-5332 F T F F F T F
-5333 F T F F F T F
-5334 F T F F F T F
-5335 F T F F F T F
-5336 F T F F F T F
-5337 F T F F F T F
-5338 F T F F F T F
-5339 F T F F F T F
-5340 F T F F F T F
-5341 F T F F F T F
-5342 F T F F F T F
-5343 F T F F F T F
-5344 F T F F F T F
-5345 F T F F F T F
-5346 F T F F F T F
-5347 F T F F F T F
-5348 F T F F F T F
-5349 F T F F F T F
-5350 F T F F F T F
-5351 F T F F F T F
-5352 F T F F F T F
-5353 F T F F F T F
-5354 F T F F F T F
-5355 F T F F F T F
-5356 F T F F F T F
-5357 F T F F F T F
-5358 F T F F F T F
-5359 F T F F F T F
-5360 F T F F F T F
-5361 F T F F F T F
-5362 F T F F F T F
-5363 F T F F F T F
-5364 F T F F F T F
-5365 F T F F F T F
-5366 F T F F F T F
-5367 F T F F F T F
-5368 F T F F F T F
-5369 F T F F F T F
-5370 F T F F F T F
-5371 F T F F F T F
-5372 F T F F F T F
-5373 F T F F F T F
-5374 F T F F F T F
-5375 F T F F F T F
-5376 F T F F F T F
-5377 F T F F F T F
-5378 F T F F F T F
-5379 F T F F F T F
-5380 F T F F F T F
-5381 F T F F F T F
-5382 F T F F F T F
-5383 F T F F F T F
-5384 F T F F F T F
-5385 F T F F F T F
-5386 F T F F F T F
-5387 F T F F F T F
-5388 F T F F F T F
-5389 F T F F F T F
-5390 F T F F F T F
-5391 F T F F F T F
-5392 F T F F F T F
-5393 F T F F F T F
-5394 F T F F F T F
-5395 F T F F F T F
-5396 F T F F F T F
-5397 F T F F F T F
-5398 F T F F F T F
-5399 F T F F F T F
-5400 F T F F F T F
-5401 F T F F F T F
-5402 F T F F F T F
-5403 F T F F F T F
-5404 F T F F F T F
-5405 F T F F F T F
-5406 F T F F F T F
-5407 F T F F F T F
-5408 F T F F F T F
-5409 F T F F F T F
-5410 F T F F F T F
-5411 F T F F F T F
-5412 F T F F F T F
-5413 F T F F F T F
-5414 F T F F F T F
-5415 F T F F F T F
-5416 F T F F F T F
-5417 F T F F F T F
-5418 F T F F F T F
-5419 F T F F F T F
-5420 F T F F F T F
-5421 F T F F F T F
-5422 F T F F F T F
-5423 F T F F F T F
-5424 F T F F F T F
-5425 F T F F F T F
-5426 F T F F F T F
-5427 F T F F F T F
-5428 F T F F F T F
-5429 F T F F F T F
-5430 F T F F F T F
-5431 F T F F F T F
-5432 F T F F F T F
-5433 F T F F F T F
-5434 F T F F F T F
-5435 F T F F F T F
-5436 F T F F F T F
-5437 F T F F F T F
-5438 F T F F F T F
-5439 F T F F F T F
-5440 F T F F F T F
-5441 F T F F F T F
-5442 F T F F F T F
-5443 F T F F F T F
-5444 F T F F F T F
-5445 F T F F F T F
-5446 F T F F F T F
-5447 F T F F F T F
-5448 F T F F F T F
-5449 F T F F F T F
-5450 F T F F F T F
-5451 F T F F F T F
-5452 F T F F F T F
-5453 F T F F F T F
-5454 F T F F F T F
-5455 F T F F F T F
-5456 F T F F F T F
-5457 F T F F F T F
-5458 F T F F F T F
-5459 F T F F F T F
-5460 F T F F F T F
-5461 F T F F F T F
-5462 F T F F F T F
-5463 F T F F F T F
-5464 F T F F F T F
-5465 F T F F F T F
-5466 F T F F F T F
-5467 F T F F F T F
-5468 F T F F F T F
-5469 F T F F F T F
-5470 F T F F F T F
-5471 F T F F F T F
-5472 F T F F F T F
-5473 F T F F F T F
-5474 F T F F F T F
-5475 F T F F F T F
-5476 F T F F F T F
-5477 F T F F F T F
-5478 F T F F F T F
-5479 F T F F F T F
-5480 F T F F F T F
-5481 F T F F F T F
-5482 F T F F F T F
-5483 F T F F F T F
-5484 F T F F F T F
-5485 F T F F F T F
-5486 F T F F F T F
-5487 F T F F F T F
-5488 F T F F F T F
-5489 F T F F F T F
-5490 F T F F F T F
-5491 F T F F F T F
-5492 F T F F F T F
-5493 F T F F F T F
-5494 F T F F F T F
-5495 F T F F F T F
-5496 F T F F F T F
-5497 F T F F F T F
-5498 F T F F F T F
-5499 F T F F F T F
-5500 F T F F F T F
-5501 F T F F F T F
-5502 F T F F F T F
-5503 F T F F F T F
-5504 F T F F F T F
-5505 F T F F F T F
-5506 F T F F F T F
-5507 F T F F F T F
-5508 F T F F F T F
-5509 F T F F F T F
-5510 F T F F F T F
-5511 F T F F F T F
-5512 F T F F F T F
-5513 F T F F F T F
-5514 F T F F F T F
-5515 F T F F F T F
-5516 F T F F F T F
-5517 F T F F F T F
-5518 F T F F F T F
-5519 F T F F F T F
-5520 F T F F F T F
-5521 F T F F F T F
-5522 F T F F F T F
-5523 F T F F F T F
-5524 F T F F F T F
-5525 F T F F F T F
-5526 F T F F F T F
-5527 F T F F F T F
-5528 F T F F F T F
-5529 F T F F F T F
-5530 F T F F F T F
-5531 F T F F F T F
-5532 F T F F F T F
-5533 F T F F F T F
-5534 F T F F F T F
-5535 F T F F F T F
-5536 F T F F F T F
-5537 F T F F F T F
-5538 F T F F F T F
-5539 F T F F F T F
-5540 F T F F F T F
-5541 F T F F F T F
-5542 F T F F F T F
-5543 F T F F F T F
-5544 F T F F F T F
-5545 F T F F F T F
-5546 F T F F F T F
-5547 F T F F F T F
-5548 F T F F F T F
-5549 F T F F F T F
-5550 F T F F F T F
-5551 F T F F F T F
-5552 F T F F F T F
-5553 F T F F F T F
-5554 F T F F F T F
-5555 F T F F F T F
-5556 F T F F F T F
-5557 F T F F F T F
-5558 F T F F F T F
-5559 F T F F F T F
-5560 F T F F F T F
-5561 F T F F F T F
-5562 F T F F F T F
-5563 F T F F F T F
-5564 F T F F F T F
-5565 F T F F F T F
-5566 F T F F F T F
-5567 F T F F F T F
-5568 F T F F F T F
-5569 F T F F F T F
-5570 F T F F F T F
-5571 F T F F F T F
-5572 F T F F F T F
-5573 F T F F F T F
-5574 F T F F F T F
-5575 F T F F F T F
-5576 F T F F F T F
-5577 F T F F F T F
-5578 F T F F F T F
-5579 F T F F F T F
-5580 F T F F F T F
-5581 F T F F F T F
-5582 F T F F F T F
-5583 F T F F F T F
-5584 F T F F F T F
-5585 F T F F F T F
-5586 F T F F F T F
-5587 F T F F F T F
-5588 F T F F F T F
-5589 F T F F F T F
-5590 F T F F F T F
-5591 F T F F F T F
-5592 F T F F F T F
-5593 F T F F F T F
-5594 F T F F F T F
-5595 F T F F F T F
-5596 F T F F F T F
-5597 F T F F F T F
-5598 F T F F F T F
-5599 F T F F F T F
-5600 F T F F F T F
-5601 F T F F F T F
-5602 F T F F F T F
-5603 F T F F F T F
-5604 F T F F F T F
-5605 F T F F F T F
-5606 F T F F F T F
-5607 F T F F F T F
-5608 F T F F F T F
-5609 F T F F F T F
-5610 F T F F F T F
-5611 F T F F F T F
-5612 F T F F F T F
-5613 F T F F F T F
-5614 F T F F F T F
-5615 F T F F F T F
-5616 F T F F F T F
-5617 F T F F F T F
-5618 F T F F F T F
-5619 F T F F F T F
-5620 F T F F F T F
-5621 F T F F F T F
-5622 F T F F F T F
-5623 F T F F F T F
-5624 F T F F F T F
-5625 F T F F F T F
-5626 F T F F F T F
-5627 F T F F F T F
-5628 F T F F F T F
-5629 F T F F F T F
-5630 F T F F F T F
-5631 F T F F F T F
-5632 F T F F F T F
-5633 F T F F F T F
-5634 F T F F F T F
-5635 F T F F F T F
-5636 F T F F F T F
-5637 F T F F F T F
-5638 F T F F F T F
-5639 F T F F F T F
-5640 F T F F F T F
-5641 F T F F F T F
-5642 F T F F F T F
-5643 F T F F F T F
-5644 F T F F F T F
-5645 F T F F F T F
-5646 F T F F F T F
-5647 F T F F F T F
-5648 F T F F F T F
-5649 F T F F F T F
-5650 F T F F F T F
-5651 F T F F F T F
-5652 F T F F F T F
-5653 F T F F F T F
-5654 F T F F F T F
-5655 F T F F F T F
-5656 F T F F F T F
-5657 F T F F F T F
-5658 F T F F F T F
-5659 F T F F F T F
-5660 F T F F F T F
-5661 F T F F F T F
-5662 F T F F F T F
-5663 F T F F F T F
-5664 F T F F F T F
-5665 F T F F F T F
-5666 F T F F F T F
-5667 F T F F F T F
-5668 F T F F F T F
-5669 F T F F F T F
-5670 F T F F F T F
-5671 F T F F F T F
-5672 F T F F F T F
-5673 F T F F F T F
-5674 F T F F F T F
-5675 F T F F F T F
-5676 F T F F F T F
-5677 F T F F F T F
-5678 F T F F F T F
-5679 F T F F F T F
-5680 F T F F F T F
-5681 F T F F F T F
-5682 F T F F F T F
-5683 F T F F F T F
-5684 F T F F F T F
-5685 F T F F F T F
-5686 F T F F F T F
-5687 F T F F F T F
-5688 F T F F F T F
-5689 F T F F F T F
-5690 F T F F F T F
-5691 F T F F F T F
-5692 F T F F F T F
-5693 F T F F F T F
-5694 F T F F F T F
-5695 F T F F F T F
-5696 F T F F F T F
-5697 F T F F F T F
-5698 F T F F F T F
-5699 F T F F F T F
-5700 F T F F F T F
-5701 F T F F F T F
-5702 F T F F F T F
-5703 F T F F F T F
-5704 F T F F F T F
-5705 F T F F F T F
-5706 F T F F F T F
-5707 F T F F F T F
-5708 F T F F F T F
-5709 F T F F F T F
-5710 F T F F F T F
-5711 F T F F F T F
-5712 F T F F F T F
-5713 F T F F F T F
-5714 F T F F F T F
-5715 F T F F F T F
-5716 F T F F F T F
-5717 F T F F F T F
-5718 F T F F F T F
-5719 F T F F F T F
-5720 F T F F F T F
-5721 F T F F F T F
-5722 F T F F F T F
-5723 F T F F F T F
-5724 F T F F F T F
-5725 F T F F F T F
-5726 F T F F F T F
-5727 F T F F F T F
-5728 F T F F F T F
-5729 F T F F F T F
-5730 F T F F F T F
-5731 F T F F F T F
-5732 F T F F F T F
-5733 F T F F F T F
-5734 F T F F F T F
-5735 F T F F F T F
-5736 F T F F F T F
-5737 F T F F F T F
-5738 F T F F F T F
-5739 F T F F F T F
-5740 F T F F F T F
-5741 F T F F F F F
-5742 F T F F F F F
-5743 F T F F F T F
-5744 F T F F F T F
-5745 F T F F F T F
-5746 F T F F F T F
-5747 F T F F F T F
-5748 F T F F F T F
-5749 F T F F F T F
-5750 F T F F F T F
-5751 F T F F F T F
-5752 F T F F F T F
-5753 F T F F F T F
-5754 F T F F F T F
-5755 F T F F F T F
-5756 F T F F F T F
-5757 F T F F F T F
-5758 F T F F F T F
-5759 F T F F F T F
-5760 F T T F F F F
-5761 F T F F F T F
-5762 F T F F F T F
-5763 F T F F F T F
-5764 F T F F F T F
-5765 F T F F F T F
-5766 F T F F F T F
-5767 F T F F F T F
-5768 F T F F F T F
-5769 F T F F F T F
-5770 F T F F F T F
-5771 F T F F F T F
-5772 F T F F F T F
-5773 F T F F F T F
-5774 F T F F F T F
-5775 F T F F F T F
-5776 F T F F F T F
-5777 F T F F F T F
-5778 F T F F F T F
-5779 F T F F F T F
-5780 F T F F F T F
-5781 F T F F F T F
-5782 F T F F F T F
-5783 F T F F F T F
-5784 F T F F F T F
-5785 F T F F F T F
-5786 F T F F F T F
-5787 F T F F F F F
-5788 F T F F F F F
-5789 F F F F F F F
-5790 F F F F F F F
-5791 F F F F F F F
-5792 F T F F F T F
-5793 F T F F F T F
-5794 F T F F F T F
-5795 F T F F F T F
-5796 F T F F F T F
-5797 F T F F F T F
-5798 F T F F F T F
-5799 F T F F F T F
-5800 F T F F F T F
-5801 F T F F F T F
-5802 F T F F F T F
-5803 F T F F F T F
-5804 F T F F F T F
-5805 F T F F F T F
-5806 F T F F F T F
-5807 F T F F F T F
-5808 F T F F F T F
-5809 F T F F F T F
-5810 F T F F F T F
-5811 F T F F F T F
-5812 F T F F F T F
-5813 F T F F F T F
-5814 F T F F F T F
-5815 F T F F F T F
-5816 F T F F F T F
-5817 F T F F F T F
-5818 F T F F F T F
-5819 F T F F F T F
-5820 F T F F F T F
-5821 F T F F F T F
-5822 F T F F F T F
-5823 F T F F F T F
-5824 F T F F F T F
-5825 F T F F F T F
-5826 F T F F F T F
-5827 F T F F F T F
-5828 F T F F F T F
-5829 F T F F F T F
-5830 F T F F F T F
-5831 F T F F F T F
-5832 F T F F F T F
-5833 F T F F F T F
-5834 F T F F F T F
-5835 F T F F F T F
-5836 F T F F F T F
-5837 F T F F F T F
-5838 F T F F F T F
-5839 F T F F F T F
-5840 F T F F F T F
-5841 F T F F F T F
-5842 F T F F F T F
-5843 F T F F F T F
-5844 F T F F F T F
-5845 F T F F F T F
-5846 F T F F F T F
-5847 F T F F F T F
-5848 F T F F F T F
-5849 F T F F F T F
-5850 F T F F F T F
-5851 F T F F F T F
-5852 F T F F F T F
-5853 F T F F F T F
-5854 F T F F F T F
-5855 F T F F F T F
-5856 F T F F F T F
-5857 F T F F F T F
-5858 F T F F F T F
-5859 F T F F F T F
-5860 F T F F F T F
-5861 F T F F F T F
-5862 F T F F F T F
-5863 F T F F F T F
-5864 F T F F F T F
-5865 F T F F F T F
-5866 F T F F F T F
-5867 F T F F F F F
-5868 F T F F F F F
-5869 F T F F F F F
-5870 F T F F F F F
-5871 F T F F F F F
-5872 F T F F F F F
-5873 F F F F F F F
-5874 F F F F F F F
-5875 F F F F F F F
-5876 F F F F F F F
-5877 F F F F F F F
-5878 F F F F F F F
-5879 F F F F F F F
-5880 F F F F F F F
-5881 F F F F F F F
-5882 F F F F F F F
-5883 F F F F F F F
-5884 F F F F F F F
-5885 F F F F F F F
-5886 F F F F F F F
-5887 F F F F F F F
-5888 F T F F F T F
-5889 F T F F F T F
-5890 F T F F F T F
-5891 F T F F F T F
-5892 F T F F F T F
-5893 F T F F F T F
-5894 F T F F F T F
-5895 F T F F F T F
-5896 F T F F F T F
-5897 F T F F F T F
-5898 F T F F F T F
-5899 F T F F F T F
-5900 F T F F F T F
-5901 F F F F F F F
-5902 F T F F F T F
-5903 F T F F F T F
-5904 F T F F F T F
-5905 F T F F F T F
-5906 F T F F F F F
-5907 F T F F F F F
-5908 F T F F F F F
-5909 F F F F F F F
-5910 F F F F F F F
-5911 F F F F F F F
-5912 F F F F F F F
-5913 F F F F F F F
-5914 F F F F F F F
-5915 F F F F F F F
-5916 F F F F F F F
-5917 F F F F F F F
-5918 F F F F F F F
-5919 F F F F F F F
-5920 F T F F F T F
-5921 F T F F F T F
-5922 F T F F F T F
-5923 F T F F F T F
-5924 F T F F F T F
-5925 F T F F F T F
-5926 F T F F F T F
-5927 F T F F F T F
-5928 F T F F F T F
-5929 F T F F F T F
-5930 F T F F F T F
-5931 F T F F F T F
-5932 F T F F F T F
-5933 F T F F F T F
-5934 F T F F F T F
-5935 F T F F F T F
-5936 F T F F F T F
-5937 F T F F F T F
-5938 F T F F F F F
-5939 F T F F F F F
-5940 F T F F F F F
-5941 F T F F F F F
-5942 F T F F F F F
-5943 F F F F F F F
-5944 F F F F F F F
-5945 F F F F F F F
-5946 F F F F F F F
-5947 F F F F F F F
-5948 F F F F F F F
-5949 F F F F F F F
-5950 F F F F F F F
-5951 F F F F F F F
-5952 F T F F F T F
-5953 F T F F F T F
-5954 F T F F F T F
-5955 F T F F F T F
-5956 F T F F F T F
-5957 F T F F F T F
-5958 F T F F F T F
-5959 F T F F F T F
-5960 F T F F F T F
-5961 F T F F F T F
-5962 F T F F F T F
-5963 F T F F F T F
-5964 F T F F F T F
-5965 F T F F F T F
-5966 F T F F F T F
-5967 F T F F F T F
-5968 F T F F F T F
-5969 F T F F F T F
-5970 F T F F F F F
-5971 F T F F F F F
-5972 F F F F F F F
-5973 F F F F F F F
-5974 F F F F F F F
-5975 F F F F F F F
-5976 F F F F F F F
-5977 F F F F F F F
-5978 F F F F F F F
-5979 F F F F F F F
-5980 F F F F F F F
-5981 F F F F F F F
-5982 F F F F F F F
-5983 F F F F F F F
-5984 F T F F F T F
-5985 F T F F F T F
-5986 F T F F F T F
-5987 F T F F F T F
-5988 F T F F F T F
-5989 F T F F F T F
-5990 F T F F F T F
-5991 F T F F F T F
-5992 F T F F F T F
-5993 F T F F F T F
-5994 F T F F F T F
-5995 F T F F F T F
-5996 F T F F F T F
-5997 F F F F F F F
-5998 F T F F F T F
-5999 F T F F F T F
-6000 F T F F F T F
-6001 F F F F F F F
-6002 F T F F F F F
-6003 F T F F F F F
-6004 F F F F F F F
-6005 F F F F F F F
-6006 F F F F F F F
-6007 F F F F F F F
-6008 F F F F F F F
-6009 F F F F F F F
-6010 F F F F F F F
-6011 F F F F F F F
-6012 F F F F F F F
-6013 F F F F F F F
-6014 F F F F F F F
-6015 F F F F F F F
-6016 F T F F F T F
-6017 F T F F F T F
-6018 F T F F F T F
-6019 F T F F F T F
-6020 F T F F F T F
-6021 F T F F F T F
-6022 F T F F F T F
-6023 F T F F F T F
-6024 F T F F F T F
-6025 F T F F F T F
-6026 F T F F F T F
-6027 F T F F F T F
-6028 F T F F F T F
-6029 F T F F F T F
-6030 F T F F F T F
-6031 F T F F F T F
-6032 F T F F F T F
-6033 F T F F F T F
-6034 F T F F F T F
-6035 F T F F F T F
-6036 F T F F F T F
-6037 F T F F F T F
-6038 F T F F F T F
-6039 F T F F F T F
-6040 F T F F F T F
-6041 F T F F F T F
-6042 F T F F F T F
-6043 F T F F F T F
-6044 F T F F F T F
-6045 F T F F F T F
-6046 F T F F F T F
-6047 F T F F F T F
-6048 F T F F F T F
-6049 F T F F F T F
-6050 F T F F F T F
-6051 F T F F F T F
-6052 F T F F F T F
-6053 F T F F F T F
-6054 F T F F F T F
-6055 F T F F F T F
-6056 F T F F F T F
-6057 F T F F F T F
-6058 F T F F F T F
-6059 F T F F F T F
-6060 F T F F F T F
-6061 F T F F F T F
-6062 F T F F F T F
-6063 F T F F F T F
-6064 F T F F F T F
-6065 F T F F F T F
-6066 F T F F F T F
-6067 F T F F F T F
-6068 F F F F F F F
-6069 F F F F F F F
-6070 F T F F F F F
-6071 F T F F F F F
-6072 F T F F F F F
-6073 F T F F F F F
-6074 F T F F F F F
-6075 F T F F F F F
-6076 F T F F F F F
-6077 F T F F F F F
-6078 F T F F F F F
-6079 F T F F F F F
-6080 F T F F F F F
-6081 F T F F F F F
-6082 F T F F F F F
-6083 F T F F F F F
-6084 F T F F F F F
-6085 F T F F F F F
-6086 F T F F F F F
-6087 F T F F F F F
-6088 F T F F F F F
-6089 F T F F F F F
-6090 F T F F F F F
-6091 F T F F F F F
-6092 F T F F F F F
-6093 F T F F F F F
-6094 F T F F F F F
-6095 F T F F F F F
-6096 F T F F F F F
-6097 F T F F F F F
-6098 F T F F F F F
-6099 F T F F F F F
-6100 F T F F F F F
-6101 F T F F F F F
-6102 F T F F F F F
-6103 F T F F F T F
-6104 F T F F F F F
-6105 F T F F F F F
-6106 F T F F F F F
-6107 F T F F F F F
-6108 F T F F F T F
-6109 F T F F F F F
-6110 F F F F F F F
-6111 F F F F F F F
-6112 F T F F F F F
-6113 F T F F F F F
-6114 F T F F F F F
-6115 F T F F F F F
-6116 F T F F F F F
-6117 F T F F F F F
-6118 F T F F F F F
-6119 F T F F F F F
-6120 F T F F F F F
-6121 F T F F F F F
-6122 F F F F F F F
-6123 F F F F F F F
-6124 F F F F F F F
-6125 F F F F F F F
-6126 F F F F F F F
-6127 F F F F F F F
-6128 F T F F F F F
-6129 F T F F F F F
-6130 F T F F F F F
-6131 F T F F F F F
-6132 F T F F F F F
-6133 F T F F F F F
-6134 F T F F F F F
-6135 F T F F F F F
-6136 F T F F F F F
-6137 F T F F F F F
-6138 F F F F F F F
-6139 F F F F F F F
-6140 F F F F F F F
-6141 F F F F F F F
-6142 F F F F F F F
-6143 F F F F F F F
-6144 F T F F F F F
-6145 F T F F F F F
-6146 F T F F F F F
-6147 F T F F F F F
-6148 F T F F F F F
-6149 F T F F F F F
-6150 F T F F F F F
-6151 F T F F F F F
-6152 F T F F F F F
-6153 F T F F F F F
-6154 F T F F F F F
-6155 F T F F F F F
-6156 F T F F F F F
-6157 F T F F F F F
-6158 F T T F F F F
-6159 F F F F F F F
-6160 F T F F F F F
-6161 F T F F F F F
-6162 F T F F F F F
-6163 F T F F F F F
-6164 F T F F F F F
-6165 F T F F F F F
-6166 F T F F F F F
-6167 F T F F F F F
-6168 F T F F F F F
-6169 F T F F F F F
-6170 F F F F F F F
-6171 F F F F F F F
-6172 F F F F F F F
-6173 F F F F F F F
-6174 F F F F F F F
-6175 F F F F F F F
-6176 F T F F F T F
-6177 F T F F F T F
-6178 F T F F F T F
-6179 F T F F F T F
-6180 F T F F F T F
-6181 F T F F F T F
-6182 F T F F F T F
-6183 F T F F F T F
-6184 F T F F F T F
-6185 F T F F F T F
-6186 F T F F F T F
-6187 F T F F F T F
-6188 F T F F F T F
-6189 F T F F F T F
-6190 F T F F F T F
-6191 F T F F F T F
-6192 F T F F F T F
-6193 F T F F F T F
-6194 F T F F F T F
-6195 F T F F F T F
-6196 F T F F F T F
-6197 F T F F F T F
-6198 F T F F F T F
-6199 F T F F F T F
-6200 F T F F F T F
-6201 F T F F F T F
-6202 F T F F F T F
-6203 F T F F F T F
-6204 F T F F F T F
-6205 F T F F F T F
-6206 F T F F F T F
-6207 F T F F F T F
-6208 F T F F F T F
-6209 F T F F F T F
-6210 F T F F F T F
-6211 F T F F F T F
-6212 F T F F F T F
-6213 F T F F F T F
-6214 F T F F F T F
-6215 F T F F F T F
-6216 F T F F F T F
-6217 F T F F F T F
-6218 F T F F F T F
-6219 F T F F F T F
-6220 F T F F F T F
-6221 F T F F F T F
-6222 F T F F F T F
-6223 F T F F F T F
-6224 F T F F F T F
-6225 F T F F F T F
-6226 F T F F F T F
-6227 F T F F F T F
-6228 F T F F F T F
-6229 F T F F F T F
-6230 F T F F F T F
-6231 F T F F F T F
-6232 F T F F F T F
-6233 F T F F F T F
-6234 F T F F F T F
-6235 F T F F F T F
-6236 F T F F F T F
-6237 F T F F F T F
-6238 F T F F F T F
-6239 F T F F F T F
-6240 F T F F F T F
-6241 F T F F F T F
-6242 F T F F F T F
-6243 F T F F F T F
-6244 F T F F F T F
-6245 F T F F F T F
-6246 F T F F F T F
-6247 F T F F F T F
-6248 F T F F F T F
-6249 F T F F F T F
-6250 F T F F F T F
-6251 F T F F F T F
-6252 F T F F F T F
-6253 F T F F F T F
-6254 F T F F F T F
-6255 F T F F F T F
-6256 F T F F F T F
-6257 F T F F F T F
-6258 F T F F F T F
-6259 F T F F F T F
-6260 F T F F F T F
-6261 F T F F F T F
-6262 F T F F F T F
-6263 F T F F F T F
-6264 F F F F F F F
-6265 F F F F F F F
-6266 F F F F F F F
-6267 F F F F F F F
-6268 F F F F F F F
-6269 F F F F F F F
-6270 F F F F F F F
-6271 F F F F F F F
-6272 F T F F F T F
-6273 F T F F F T F
-6274 F T F F F T F
-6275 F T F F F T F
-6276 F T F F F T F
-6277 F T F F F T F
-6278 F T F F F T F
-6279 F T F F F T F
-6280 F T F F F T F
-6281 F T F F F T F
-6282 F T F F F T F
-6283 F T F F F T F
-6284 F T F F F T F
-6285 F T F F F T F
-6286 F T F F F T F
-6287 F T F F F T F
-6288 F T F F F T F
-6289 F T F F F T F
-6290 F T F F F T F
-6291 F T F F F T F
-6292 F T F F F T F
-6293 F T F F F T F
-6294 F T F F F T F
-6295 F T F F F T F
-6296 F T F F F T F
-6297 F T F F F T F
-6298 F T F F F T F
-6299 F T F F F T F
-6300 F T F F F T F
-6301 F T F F F T F
-6302 F T F F F T F
-6303 F T F F F T F
-6304 F T F F F T F
-6305 F T F F F T F
-6306 F T F F F T F
-6307 F T F F F T F
-6308 F T F F F T F
-6309 F T F F F T F
-6310 F T F F F T F
-6311 F T F F F T F
-6312 F T F F F T F
-6313 F T F F F F F
-6314 F T F F F T F
-6315 F F F F F F F
-6316 F F F F F F F
-6317 F F F F F F F
-6318 F F F F F F F
-6319 F F F F F F F
-6320 F T F F F T F
-6321 F T F F F T F
-6322 F T F F F T F
-6323 F T F F F T F
-6324 F T F F F T F
-6325 F T F F F T F
-6326 F T F F F T F
-6327 F T F F F T F
-6328 F T F F F T F
-6329 F T F F F T F
-6330 F T F F F T F
-6331 F T F F F T F
-6332 F T F F F T F
-6333 F T F F F T F
-6334 F T F F F T F
-6335 F T F F F T F
-6336 F T F F F T F
-6337 F T F F F T F
-6338 F T F F F T F
-6339 F T F F F T F
-6340 F T F F F T F
-6341 F T F F F T F
-6342 F T F F F T F
-6343 F T F F F T F
-6344 F T F F F T F
-6345 F T F F F T F
-6346 F T F F F T F
-6347 F T F F F T F
-6348 F T F F F T F
-6349 F T F F F T F
-6350 F T F F F T F
-6351 F T F F F T F
-6352 F T F F F T F
-6353 F T F F F T F
-6354 F T F F F T F
-6355 F T F F F T F
-6356 F T F F F T F
-6357 F T F F F T F
-6358 F T F F F T F
-6359 F T F F F T F
-6360 F T F F F T F
-6361 F T F F F T F
-6362 F T F F F T F
-6363 F T F F F T F
-6364 F T F F F T F
-6365 F T F F F T F
-6366 F T F F F T F
-6367 F T F F F T F
-6368 F T F F F T F
-6369 F T F F F T F
-6370 F T F F F T F
-6371 F T F F F T F
-6372 F T F F F T F
-6373 F T F F F T F
-6374 F T F F F T F
-6375 F T F F F T F
-6376 F T F F F T F
-6377 F T F F F T F
-6378 F T F F F T F
-6379 F T F F F T F
-6380 F T F F F T F
-6381 F T F F F T F
-6382 F T F F F T F
-6383 F T F F F T F
-6384 F T F F F T F
-6385 F T F F F T F
-6386 F T F F F T F
-6387 F T F F F T F
-6388 F T F F F T F
-6389 F T F F F T F
-6390 F F F F F F F
-6391 F F F F F F F
-6392 F F F F F F F
-6393 F F F F F F F
-6394 F F F F F F F
-6395 F F F F F F F
-6396 F F F F F F F
-6397 F F F F F F F
-6398 F F F F F F F
-6399 F F F F F F F
-6400 F T F F F T F
-6401 F T F F F T F
-6402 F T F F F T F
-6403 F T F F F T F
-6404 F T F F F T F
-6405 F T F F F T F
-6406 F T F F F T F
-6407 F T F F F T F
-6408 F T F F F T F
-6409 F T F F F T F
-6410 F T F F F T F
-6411 F T F F F T F
-6412 F T F F F T F
-6413 F T F F F T F
-6414 F T F F F T F
-6415 F T F F F T F
-6416 F T F F F T F
-6417 F T F F F T F
-6418 F T F F F T F
-6419 F T F F F T F
-6420 F T F F F T F
-6421 F T F F F T F
-6422 F T F F F T F
-6423 F T F F F T F
-6424 F T F F F T F
-6425 F T F F F T F
-6426 F T F F F T F
-6427 F T F F F T F
-6428 F T F F F T F
-6429 F F F F F F F
-6430 F F F F F F F
-6431 F F F F F F F
-6432 F T F F F F F
-6433 F T F F F F F
-6434 F T F F F F F
-6435 F T F F F F F
-6436 F T F F F F F
-6437 F T F F F F F
-6438 F T F F F F F
-6439 F T F F F F F
-6440 F T F F F F F
-6441 F T F F F F F
-6442 F T F F F F F
-6443 F T F F F F F
-6444 F F F F F F F
-6445 F F F F F F F
-6446 F F F F F F F
-6447 F F F F F F F
-6448 F T F F F F F
-6449 F T F F F F F
-6450 F T F F F F F
-6451 F T F F F F F
-6452 F T F F F F F
-6453 F T F F F F F
-6454 F T F F F F F
-6455 F T F F F F F
-6456 F T F F F F F
-6457 F T F F F F F
-6458 F T F F F F F
-6459 F T F F F F F
-6460 F F F F F F F
-6461 F F F F F F F
-6462 F F F F F F F
-6463 F F F F F F F
-6464 F T F F F F F
-6465 F F F F F F F
-6466 F F F F F F F
-6467 F F F F F F F
-6468 F T F F F F F
-6469 F T F F F F F
-6470 F T F F F F F
-6471 F T F F F F F
-6472 F T F F F F F
-6473 F T F F F F F
-6474 F T F F F F F
-6475 F T F F F F F
-6476 F T F F F F F
-6477 F T F F F F F
-6478 F T F F F F F
-6479 F T F F F F F
-6480 F T F F F T F
-6481 F T F F F T F
-6482 F T F F F T F
-6483 F T F F F T F
-6484 F T F F F T F
-6485 F T F F F T F
-6486 F T F F F T F
-6487 F T F F F T F
-6488 F T F F F T F
-6489 F T F F F T F
-6490 F T F F F T F
-6491 F T F F F T F
-6492 F T F F F T F
-6493 F T F F F T F
-6494 F T F F F T F
-6495 F T F F F T F
-6496 F T F F F T F
-6497 F T F F F T F
-6498 F T F F F T F
-6499 F T F F F T F
-6500 F T F F F T F
-6501 F T F F F T F
-6502 F T F F F T F
-6503 F T F F F T F
-6504 F T F F F T F
-6505 F T F F F T F
-6506 F T F F F T F
-6507 F T F F F T F
-6508 F T F F F T F
-6509 F T F F F T F
-6510 F F F F F F F
-6511 F F F F F F F
-6512 F T F F F T F
-6513 F T F F F T F
-6514 F T F F F T F
-6515 F T F F F T F
-6516 F T F F F T F
-6517 F F F F F F F
-6518 F F F F F F F
-6519 F F F F F F F
-6520 F F F F F F F
-6521 F F F F F F F
-6522 F F F F F F F
-6523 F F F F F F F
-6524 F F F F F F F
-6525 F F F F F F F
-6526 F F F F F F F
-6527 F F F F F F F
-6528 F T F F F T F
-6529 F T F F F T F
-6530 F T F F F T F
-6531 F T F F F T F
-6532 F T F F F T F
-6533 F T F F F T F
-6534 F T F F F T F
-6535 F T F F F T F
-6536 F T F F F T F
-6537 F T F F F T F
-6538 F T F F F T F
-6539 F T F F F T F
-6540 F T F F F T F
-6541 F T F F F T F
-6542 F T F F F T F
-6543 F T F F F T F
-6544 F T F F F T F
-6545 F T F F F T F
-6546 F T F F F T F
-6547 F T F F F T F
-6548 F T F F F T F
-6549 F T F F F T F
-6550 F T F F F T F
-6551 F T F F F T F
-6552 F T F F F T F
-6553 F T F F F T F
diff --git a/testsuite/tests/lib/Concurrent/4876.hs b/testsuite/tests/lib/Concurrent/4876.hs
deleted file mode 100644
index 68c2a871b8..0000000000
--- a/testsuite/tests/lib/Concurrent/4876.hs
+++ /dev/null
@@ -1,19 +0,0 @@
-import System.Random
-import Control.Concurrent.SampleVar
-import Control.Concurrent
-import Control.Monad
-
-produce, consume :: SampleVar Int -> IO ()
-produce svar = do
- b <- isEmptySampleVar svar
- if b then writeSampleVar svar 3 else return ()
-
-consume svar = readSampleVar svar >>= print
-
-main = do
- svar <- newEmptySampleVar
- m <- newEmptyMVar
- forkIO $ consume svar >> putMVar m ()
- threadDelay 100000 -- 100 ms
- produce svar
- takeMVar m -- deadlocked before the fix in #4876
diff --git a/testsuite/tests/lib/Concurrent/4876.stdout b/testsuite/tests/lib/Concurrent/4876.stdout
deleted file mode 100644
index 00750edc07..0000000000
--- a/testsuite/tests/lib/Concurrent/4876.stdout
+++ /dev/null
@@ -1 +0,0 @@
-3
diff --git a/testsuite/tests/lib/Concurrent/Chan001.hs b/testsuite/tests/lib/Concurrent/Chan001.hs
deleted file mode 100644
index e4b668ac48..0000000000
--- a/testsuite/tests/lib/Concurrent/Chan001.hs
+++ /dev/null
@@ -1,109 +0,0 @@
-import Debug.QuickCheck
-import System.IO.Unsafe
-import Control.Concurrent.Chan
-import Control.Concurrent
-import Control.Monad
-
-data Action = NewChan | ReadChan | WriteChan Int | IsEmptyChan | ReturnInt Int
- | ReturnBool Bool
- deriving (Eq,Show)
-
-
-main = do
- t <- myThreadId
- forkIO (threadDelay 1000000 >> killThread t)
- -- just in case we deadlock
- testChan
-
-testChan :: IO ()
-testChan = do
- quickCheck prop_NewIs_NewRet
- quickCheck prop_NewWriteIs_NewRet
- quickCheck prop_NewWriteRead_NewRet
-
-
-prop_NewIs_NewRet =
- [NewChan,IsEmptyChan] =^ [NewChan,ReturnBool True]
-
-prop_NewWriteIs_NewRet n =
- [NewChan,WriteChan n,IsEmptyChan] =^ [NewChan,WriteChan n,ReturnBool False]
-
-prop_NewWriteRead_NewRet n =
- [NewChan,WriteChan n,ReadChan] =^ [NewChan,ReturnInt n]
-
-
-perform :: [Action] -> IO ([Bool],[Int])
-perform [] = return ([],[])
-
-perform (a:as) =
- case a of
- ReturnInt v -> liftM (\(b,l) -> (b,v:l)) (perform as)
- ReturnBool v -> liftM (\(b,l) -> (v:b,l)) (perform as)
- NewChan -> newChan >>= \chan -> perform' chan as
- _ -> error $ "Please use NewChan as first action"
-
-
-perform' :: Chan Int -> [Action] -> IO ([Bool],[Int])
-perform' _ [] = return ([],[])
-
-perform' chan (a:as) =
- case a of
- ReturnInt v -> liftM (\(b,l) -> (b,v:l)) (perform' chan as)
- ReturnBool v -> liftM (\(b,l) -> (v:b,l)) (perform' chan as)
- ReadChan -> liftM2 (\v (b,l) -> (b,v:l)) (readChan chan)
- (perform' chan as)
- WriteChan n -> writeChan chan n >> perform' chan as
- IsEmptyChan -> liftM2 (\v (b,l) -> (v:b,l)) (isEmptyChan chan)
- (perform' chan as)
- _ -> error $ "If you want to use " ++ show a
- ++ " please use the =^ operator"
-
-
-actions :: Gen [Action]
-actions =
- liftM (NewChan:) (actions' 0)
-
-
-actions' :: Int -> Gen [Action]
-actions' contents =
- oneof ([return [],
- liftM (IsEmptyChan:) (actions' contents),
- liftM2 (:) (liftM WriteChan arbitrary) (actions' (contents+1))]
- ++
- if contents==0
- then []
- else [liftM (ReadChan:) (actions' (contents-1))])
-
-
-(=^) :: [Action] -> [Action] -> Property
-c =^ c' =
- forAll (actions' (delta 0 c))
- (\suff -> observe c suff == observe c' suff)
- where observe x suff = unsafePerformIO (perform (x++suff))
-
-
-(^=^) :: [Action] -> [Action] -> Property
-c ^=^ c' =
- forAll actions
- (\pref -> forAll (actions' (delta 0 (pref++c)))
- (\suff -> observe c pref suff ==
- observe c' pref suff))
- where observe x pref suff = unsafePerformIO (perform (pref++x++suff))
-
-
-delta :: Int -> [Action] -> Int
-delta i [] = i
-
-delta i (ReturnInt _:as) = delta i as
-
-delta i (ReturnBool _:as) = delta i as
-
-delta _ (NewChan:as) = delta 0 as
-
-delta i (WriteChan _:as) = delta (i+1) as
-
-delta i (ReadChan:as) = delta (if i==0
- then error "read on empty Chan"
- else i-1) as
-
-delta i (IsEmptyChan:as) = delta i as
diff --git a/testsuite/tests/lib/Concurrent/Chan001.stdout b/testsuite/tests/lib/Concurrent/Chan001.stdout
deleted file mode 100644
index 53bfa8a381..0000000000
--- a/testsuite/tests/lib/Concurrent/Chan001.stdout
+++ /dev/null
@@ -1,3 +0,0 @@
-0123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899OK, passed 100 tests.
-0123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899OK, passed 100 tests.
-0123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899OK, passed 100 tests.
diff --git a/testsuite/tests/lib/Concurrent/MVar001.hs b/testsuite/tests/lib/Concurrent/MVar001.hs
deleted file mode 100644
index f787470c51..0000000000
--- a/testsuite/tests/lib/Concurrent/MVar001.hs
+++ /dev/null
@@ -1,148 +0,0 @@
-import Debug.QuickCheck
-import System.IO.Unsafe
-import Control.Concurrent.MVar
-import Control.Concurrent
-import Control.Monad
-
-
-data Action = NewEmptyMVar | NewMVar Int | TakeMVar | ReadMVar | PutMVar Int
- | SwapMVar Int | IsEmptyMVar | ReturnInt Int | ReturnBool Bool
- deriving (Eq,Show)
-
-main = do
- t <- myThreadId
- forkIO (threadDelay 1000000 >> killThread t)
- -- just in case we deadlock
- testMVar
-
-testMVar :: IO ()
-testMVar = do
- quickCheck prop_NewEIs_NewERet
- quickCheck prop_NewIs_NewRet
- quickCheck prop_NewTake_NewRet
- quickCheck prop_NewEPutTake_NewERet
- quickCheck prop_NewRead_NewRet
- quickCheck prop_NewSwap_New
-
-
-prop_NewEIs_NewERet =
- [NewEmptyMVar,IsEmptyMVar] =^ [NewEmptyMVar,ReturnBool True]
-
-prop_NewIs_NewRet n =
- [NewMVar n,IsEmptyMVar] =^ [NewMVar n,ReturnBool False]
-
-prop_NewTake_NewRet n =
- [NewMVar n,TakeMVar] =^ [NewEmptyMVar,ReturnInt n]
-
-prop_NewEPutTake_NewERet n =
- [NewEmptyMVar,PutMVar n,TakeMVar] =^
- [NewEmptyMVar,ReturnInt n]
-
-prop_NewRead_NewRet n =
- [NewMVar n,ReadMVar] =^ [NewMVar n,ReturnInt n]
-
-prop_NewSwap_New m n =
- [NewMVar m,SwapMVar n] =^ [NewMVar n]
-
-
-perform :: [Action] -> IO ([Bool],[Int])
-perform [] = return ([],[])
-
-perform (a:as) =
- case a of
- ReturnInt v -> liftM (\(b,l) -> (b,v:l)) (perform as)
- ReturnBool v -> liftM (\(b,l) -> (v:b,l)) (perform as)
- NewEmptyMVar -> newEmptyMVar >>= \mv -> perform' mv as
- NewMVar n -> newMVar n >>= \mv -> perform' mv as
- _ -> error $ "Please use NewMVar or NewEmptyMVar as first "
- ++ "action"
-
-
-perform' :: MVar Int -> [Action] -> IO ([Bool],[Int])
-perform' _ [] = return ([],[])
-
-perform' mv (a:as) =
- case a of
- ReturnInt v -> liftM (\(b,l) -> (b,v:l)) (perform' mv as)
- ReturnBool v -> liftM (\(b,l) -> (v:b,l)) (perform' mv as)
- TakeMVar -> liftM2 (\v (b,l) -> (b,v:l)) (takeMVar mv)
- (perform' mv as)
- ReadMVar -> liftM2 (\v (b,l) -> (b,v:l)) (readMVar mv)
- (perform' mv as)
- PutMVar n -> putMVar mv n >> perform' mv as
- SwapMVar n -> swapMVar mv n >> perform' mv as
- IsEmptyMVar -> liftM2 (\v (b,l) -> (v:b,l)) (isEmptyMVar mv)
- (perform' mv as)
- _ -> error $ "If you want to use " ++ show a
- ++ " please use the =^ operator"
-
-
-actions :: Gen [Action]
-actions = do
- oneof [liftM (NewEmptyMVar:) (actions' True),
- liftM2 (:) (liftM NewMVar arbitrary) (actions' False)]
-
-
-actions' :: Bool -> Gen [Action]
-actions' empty =
- oneof ([return [],
- liftM (IsEmptyMVar:) (actions' empty)] ++
- if empty
- then [liftM2 (:) (liftM PutMVar arbitrary) (actions' False)]
- else []
- ++
- if empty
- then []
- else [liftM (TakeMVar:) (actions' True)]
- ++
- if empty
- then []
- else [liftM (ReadMVar:) (actions' False)]
- ++
- if empty
- then []
- else [liftM2 (:) (liftM SwapMVar arbitrary) (actions' False)] )
-
-
-(=^) :: [Action] -> [Action] -> Property
-c =^ c' =
- forAll (actions' (delta True c))
- (\suff -> observe c suff == observe c' suff)
- where observe x suff = unsafePerformIO (perform (x++suff))
-
-
-(^=^) :: [Action] -> [Action] -> Property
-c ^=^ c' =
- forAll actions
- (\pref -> forAll (actions' (delta True (pref++c)))
- (\suff -> observe c pref suff ==
- observe c' pref suff))
- where observe x pref suff = unsafePerformIO (perform (pref++x++suff))
-
-
-delta :: Bool -> [Action] -> Bool
-delta b [] = b
-
-delta b (ReturnInt _:as) = delta b as
-
-delta b (ReturnBool _:as) = delta b as
-
-delta _ (NewEmptyMVar:as) = delta True as
-
-delta _ (NewMVar _:as) = delta False as
-
-delta b (TakeMVar:as) = delta (if b
- then error "take on empty MVar"
- else True) as
-
-delta b (ReadMVar:as) = delta (if b
- then error "read on empty MVar"
- else False) as
-
-delta _ (PutMVar _:as) = delta False as
-
-delta b (SwapMVar _:as) = delta (if b
- then error "swap on empty MVar"
- else False) as
-
-delta b (IsEmptyMVar:as) = delta b as
diff --git a/testsuite/tests/lib/Concurrent/MVar001.stdout b/testsuite/tests/lib/Concurrent/MVar001.stdout
deleted file mode 100644
index 65be56c733..0000000000
--- a/testsuite/tests/lib/Concurrent/MVar001.stdout
+++ /dev/null
@@ -1,6 +0,0 @@
-0123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899OK, passed 100 tests.
-0123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899OK, passed 100 tests.
-0123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899OK, passed 100 tests.
-0123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899OK, passed 100 tests.
-0123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899OK, passed 100 tests.
-0123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899OK, passed 100 tests.
diff --git a/testsuite/tests/lib/Concurrent/QSem001.hs b/testsuite/tests/lib/Concurrent/QSem001.hs
deleted file mode 100644
index 1f255997e7..0000000000
--- a/testsuite/tests/lib/Concurrent/QSem001.hs
+++ /dev/null
@@ -1,93 +0,0 @@
-import Debug.QuickCheck
-import System.IO.Unsafe
-import Control.Concurrent.QSem
-import Control.Concurrent
-import Control.Monad
-
-
-main = do
- t <- myThreadId
- forkIO (threadDelay 1000000 >> killThread t)
- -- just in case we deadlock
- testQSem
-
-data Action = NewQSem Int | SignalQSem | WaitQSem
- deriving (Eq,Show)
-
-
-testQSem :: IO ()
-testQSem = do
- quietCheck prop_SignalWait
- quietCheck prop_WaitSignal
-
-quietCheck = check defaultConfig{configEvery = \n args -> ""}
-
-prop_SignalWait n =
- n>=0 ==> [NewQSem n,SignalQSem,WaitQSem] =^ [NewQSem n]
-
-prop_WaitSignal n =
- n>=1 ==> [NewQSem n,WaitQSem,SignalQSem] =^ [NewQSem n]
-
-
-perform :: [Action] -> IO ()
-perform [] = return ()
-
-perform (a:as) =
- case a of
- NewQSem n -> newQSem n >>= \qs -> perform' qs as
- _ -> error $ "Please use NewQSem as first action" ++ show a
-
-
-perform' :: QSem -> [Action] -> IO ()
-perform' _ [] = return ()
-
-perform' qs (a:as) =
- case a of
- SignalQSem -> signalQSem qs >> perform' qs as
- WaitQSem -> waitQSem qs >> perform' qs as
- _ -> error $ "If you want to use " ++ show a
- ++ " please use the =^ operator"
-
-
-actions :: Gen [Action]
-actions = do
- i <- arbitrary
- liftM (NewQSem i:) (actions' i)
-
-
-actions' :: Int -> Gen [Action]
-actions' quantity =
- oneof ([return [],
- liftM (SignalQSem:) (actions' (quantity+1))] ++
- if quantity<=0
- then []
- else [liftM (WaitQSem:) (actions' (quantity-1))])
-
-
-(=^) :: [Action] -> [Action] -> Property
-c =^ c' =
- forAll (actions' (delta 0 c))
- (\suff -> observe c suff == observe c' suff)
- where observe x suff = unsafePerformIO (perform (x++suff))
-
-
-(^=^) :: [Action] -> [Action] -> Property
-c ^=^ c' =
- forAll actions
- (\pref -> forAll (actions' (delta 0 (pref++c)))
- (\suff -> observe c pref suff ==
- observe c' pref suff))
- where observe x pref suff = unsafePerformIO (perform (pref++x++suff))
-
-
-delta :: Int -> [Action] -> Int
-delta i [] = i
-
-delta _ (NewQSem i:as) = delta i as
-
-delta i (SignalQSem:as) = delta (i+1) as
-
-delta i (WaitQSem:as) = delta (if i<=0
- then error "wait on 'empty' QSem"
- else i-1) as
-
diff --git a/testsuite/tests/lib/Concurrent/QSem001.stdout b/testsuite/tests/lib/Concurrent/QSem001.stdout
deleted file mode 100644
index 7288d19270..0000000000
--- a/testsuite/tests/lib/Concurrent/QSem001.stdout
+++ /dev/null
@@ -1,2 +0,0 @@
-OK, passed 100 tests.
-OK, passed 100 tests.
diff --git a/testsuite/tests/lib/Concurrent/QSemN001.hs b/testsuite/tests/lib/Concurrent/QSemN001.hs
deleted file mode 100644
index c31d6a6964..0000000000
--- a/testsuite/tests/lib/Concurrent/QSemN001.hs
+++ /dev/null
@@ -1,96 +0,0 @@
-import Debug.QuickCheck
-import System.IO.Unsafe
-import Control.Concurrent.QSemN
-import Control.Concurrent
-import Control.Monad
-
-
-main = do
- t <- myThreadId
- forkIO (threadDelay 1000000 >> killThread t)
- -- just in case we deadlock
- testQSemN
-
-data Action = NewQSemN Int | SignalQSemN Int | WaitQSemN Int
- deriving (Eq,Show)
-
-
-testQSemN :: IO ()
-testQSemN = do
- quietCheck prop_SignalWait
- quietCheck prop_WaitSignal
-
-quietCheck = check defaultConfig{configEvery = \n args -> ""}
-
-
-prop_SignalWait l m n = l+m>=n ==>
- [NewQSemN l,SignalQSemN m,WaitQSemN n] =^ [NewQSemN (l+m-n)]
-
-prop_WaitSignal l m n = l>=m ==>
- [NewQSemN l,WaitQSemN m,SignalQSemN n] =^ [NewQSemN (l-m+n)]
-
-
-perform :: [Action] -> IO [Int]
-perform [] = return []
-
-perform (a:as) =
- case a of
- NewQSemN n -> newQSemN n >>= \qs -> perform' qs as
- _ -> error $ "Please use NewQSemN as first action" ++ show a
-
-
-perform' :: QSemN -> [Action] -> IO [Int]
-perform' _ [] = return []
-
-perform' qs (a:as) =
- case a of
- SignalQSemN n -> signalQSemN qs n >> perform' qs as
- WaitQSemN n -> waitQSemN qs n >> perform' qs as
- _ -> error $ "If you want to use " ++ show a
- ++ " please use the =^ operator"
-
-
-actions :: Gen [Action]
-actions = do
- i <- arbitrary
- liftM (NewQSemN i:) (actions' i)
-
-
-actions' :: Int -> Gen [Action]
-actions' quantity =
- oneof ([return [],
- do i<- choose (0,maxBound)
- liftM (SignalQSemN i:) (actions' (quantity+i))] ++
- if quantity<=0
- then []
- else [do i<- choose (0,quantity)
- liftM (WaitQSemN i:) (actions' (quantity-i))])
-
-
-(=^) :: [Action] -> [Action] -> Property
-c =^ c' =
- forAll (actions' (delta 0 c))
- (\suff -> observe c suff == observe c' suff)
- where observe x suff = unsafePerformIO (perform (x++suff))
-
-
-(^=^) :: [Action] -> [Action] -> Property
-c ^=^ c' =
- forAll actions
- (\pref -> forAll (actions' (delta 0 (pref++c)))
- (\suff -> observe c pref suff ==
- observe c' pref suff))
- where observe x pref suff = unsafePerformIO (perform (pref++x++suff))
-
-
-delta :: Int -> [Action] -> Int
-delta i [] = i
-
-delta _ (NewQSemN i:as) = delta i as
-
-delta i (SignalQSemN n:as) = delta (i+n) as
-
-delta i (WaitQSemN n:as) = delta (if i<n
- then error "wait on 'empty' QSemN"
- else i-n) as
-
diff --git a/testsuite/tests/lib/Concurrent/QSemN001.stdout b/testsuite/tests/lib/Concurrent/QSemN001.stdout
deleted file mode 100644
index 7288d19270..0000000000
--- a/testsuite/tests/lib/Concurrent/QSemN001.stdout
+++ /dev/null
@@ -1,2 +0,0 @@
-OK, passed 100 tests.
-OK, passed 100 tests.
diff --git a/testsuite/tests/lib/Concurrent/SampleVar001.hs b/testsuite/tests/lib/Concurrent/SampleVar001.hs
deleted file mode 100644
index def86c5d54..0000000000
--- a/testsuite/tests/lib/Concurrent/SampleVar001.hs
+++ /dev/null
@@ -1,132 +0,0 @@
--------------------------------------------------------------------------------
--- Module : SampleVarTest
--------------------------------------------------------------------------------
-
-import Debug.QuickCheck
-import System.IO.Unsafe
-import Control.Concurrent
-import Control.Concurrent.SampleVar
-import Control.Monad
-
-
-data Action = NewEmptySampleVar | NewSampleVar Int | EmptySampleVar
- | ReadSampleVar | WriteSampleVar Int | IsEmptySampleVar
- | ReturnInt Int | ReturnBool Bool
- deriving (Eq,Show)
-
-
-main = do
- t <- myThreadId
- forkIO (threadDelay 1000000 >> killThread t)
- -- just in case we deadlock
- testSampleVar
-
-testSampleVar :: IO ()
-testSampleVar = do
- quickCheck prop_NewEIs_NewERet
- quickCheck prop_NewIs_NewRet
- quickCheck prop_NewRead_NewRet
- quickCheck prop_NewEWriteRead_NewERet
- quickCheck prop_WriteEmpty_Empty
- quickCheck prop_WriteRead_Ret
-
-
-
-perform :: [Action] -> IO ([Bool],[Int])
-perform [] = return ([],[])
-
-perform (a:as) =
- case a of
- ReturnInt v -> liftM (\(b,l) -> (b,v:l)) (perform as)
- ReturnBool v -> liftM (\(b,l) -> (v:b,l)) (perform as)
- NewEmptySampleVar -> newEmptySampleVar >>= \sv -> perform' sv as
- NewSampleVar n -> newSampleVar n >>= \sv -> perform' sv as
-
-
-perform' :: SampleVar Int -> [Action] -> IO ([Bool],[Int])
-perform' _ [] = return ([],[])
-
-perform' sv (a:as) =
- case a of
- ReturnInt v -> liftM (\(b,l) -> (b,v:l)) (perform' sv as)
- ReturnBool v -> liftM (\(b,l) -> (v:b,l)) (perform' sv as)
- EmptySampleVar -> emptySampleVar sv >> perform' sv as
- ReadSampleVar -> liftM2 (\v (b,l) -> (b,v:l)) (readSampleVar sv)
- (perform' sv as)
- WriteSampleVar n -> writeSampleVar sv n >> perform' sv as
- IsEmptySampleVar -> liftM2 (\v (b,l) -> (v:b,l)) (isEmptySampleVar sv)
- (perform' sv as)
-
-
-actions :: Gen [Action]
-actions = do
- oneof [liftM (NewEmptySampleVar:) (actions' True),
- liftM2 (:) (liftM NewSampleVar arbitrary) (actions' False)]
-
-
-actions' :: Bool -> Gen [Action]
-actions' empty =
- oneof ([return [],
- liftM (IsEmptySampleVar:) (actions' empty),
- liftM (EmptySampleVar:) (actions' True),
- liftM2 (:) (liftM WriteSampleVar arbitrary) (actions' False)] ++
- if empty
- then []
- else [liftM (ReadSampleVar:) (actions' True)])
-
-
-(=^) :: [Action] -> [Action] -> Property
-c =^ c' =
- forAll (actions' (delta True c))
- (\suff -> observe c suff == observe c' suff)
- where observe x suff = unsafePerformIO (perform (x++suff))
-
-
-(^=^) :: [Action] -> [Action] -> Property
-c ^=^ c' =
- forAll actions
- (\pref -> forAll (actions' (delta True (pref++c)))
- (\suff -> observe c pref suff ==
- observe c' pref suff))
- where observe x pref suff = unsafePerformIO (perform (pref++x++suff))
-
-
-delta :: Bool -> [Action] -> Bool
-delta b [] = b
-
-delta b (ReturnInt _:as) = delta b as
-
-delta b (ReturnBool _:as) = delta b as
-
-delta _ (NewEmptySampleVar:as) = delta True as
-
-delta _ (NewSampleVar _:as) = delta False as
-
-delta _ (EmptySampleVar:as) = delta True as
-
-delta b (ReadSampleVar:as) = delta (if b
- then error "read on empty SampleVar"
- else True) as
-delta _ (WriteSampleVar _:as) = delta False as
-
-delta b (IsEmptySampleVar:as) = delta b as
-
-
-prop_NewEIs_NewERet =
- [NewEmptySampleVar,IsEmptySampleVar] =^ [NewEmptySampleVar,ReturnBool True]
-
-prop_NewIs_NewRet n =
- [NewSampleVar n,IsEmptySampleVar] =^ [NewSampleVar n,ReturnBool False]
-
-prop_NewRead_NewRet n =
- [NewSampleVar n,ReadSampleVar] =^ [NewEmptySampleVar,ReturnInt n]
-
-prop_NewEWriteRead_NewERet n =
- [NewEmptySampleVar,WriteSampleVar n,ReadSampleVar] =^
- [NewEmptySampleVar,ReturnInt n]
-
-prop_WriteEmpty_Empty n =
- [WriteSampleVar n,EmptySampleVar] ^=^ [EmptySampleVar]
-
-prop_WriteRead_Ret n =
- [WriteSampleVar n,ReadSampleVar] ^=^ [EmptySampleVar,ReturnInt n]
diff --git a/testsuite/tests/lib/Concurrent/SampleVar001.stdout b/testsuite/tests/lib/Concurrent/SampleVar001.stdout
deleted file mode 100644
index 65be56c733..0000000000
--- a/testsuite/tests/lib/Concurrent/SampleVar001.stdout
+++ /dev/null
@@ -1,6 +0,0 @@
-0123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899OK, passed 100 tests.
-0123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899OK, passed 100 tests.
-0123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899OK, passed 100 tests.
-0123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899OK, passed 100 tests.
-0123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899OK, passed 100 tests.
-0123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899OK, passed 100 tests.
diff --git a/testsuite/tests/lib/Concurrent/ThreadDelay001.hs b/testsuite/tests/lib/Concurrent/ThreadDelay001.hs
deleted file mode 100644
index c60f997039..0000000000
--- a/testsuite/tests/lib/Concurrent/ThreadDelay001.hs
+++ /dev/null
@@ -1,26 +0,0 @@
-
--- Test that threadDelay actually sleeps for (at least) as long as we
--- ask it
-
-module Main (main) where
-
-import Control.Concurrent
-import Control.Monad
-import System.Time
-
-main = mapM_ delay (0 : take 11 (iterate (*5) 1))
-
-delay n = do
- tS <- getClockTime
- threadDelay n
- tE <- getClockTime
-
- let req = fromIntegral n * 10 ^ (6 :: Int)
- obs = case normalizeTimeDiff (diffClockTimes tE tS) of
- TimeDiff 0 0 0 0 0 s ps -> 10^12 * fromIntegral s + ps
- diff = obs - req
- diff' :: Double
- diff' = fromIntegral diff / 10^(12 :: Int)
-
- when (obs < req) $ print (tS, tE, req, obs, diff, diff')
-
diff --git a/testsuite/tests/lib/Concurrent/all.T b/testsuite/tests/lib/Concurrent/all.T
deleted file mode 100644
index 004c6a1226..0000000000
--- a/testsuite/tests/lib/Concurrent/all.T
+++ /dev/null
@@ -1,10 +0,0 @@
-setTestOpts(only_compiler_types(['ghc']))
-
-test('SampleVar001', reqlib('QuickCheck'), compile_and_run, ['-package QuickCheck'])
-test('4876', reqlib('random'), compile_and_run, ['']) # another SampleVar test
-
-test('Chan001', reqlib('QuickCheck'), compile_and_run, ['-package QuickCheck'])
-test('MVar001', reqlib('QuickCheck'), compile_and_run, ['-package QuickCheck'])
-test('QSemN001', reqlib('QuickCheck'), compile_and_run, ['-package QuickCheck'])
-test('QSem001', reqlib('QuickCheck'), compile_and_run, ['-package QuickCheck'])
-test('ThreadDelay001', normal, compile_and_run, [''])
diff --git a/testsuite/tests/lib/Data.ByteString/Makefile b/testsuite/tests/lib/Data.ByteString/Makefile
deleted file mode 100644
index 9101fbd40a..0000000000
--- a/testsuite/tests/lib/Data.ByteString/Makefile
+++ /dev/null
@@ -1,3 +0,0 @@
-TOP=../../..
-include $(TOP)/mk/boilerplate.mk
-include $(TOP)/mk/test.mk
diff --git a/testsuite/tests/lib/Data.ByteString/all.T b/testsuite/tests/lib/Data.ByteString/all.T
deleted file mode 100644
index 75c5574302..0000000000
--- a/testsuite/tests/lib/Data.ByteString/all.T
+++ /dev/null
@@ -1,18 +0,0 @@
-test('bytestring001',
- [skip, # This is designed for an earlier version of bytestring
- reqlib('QuickCheck')],
- compile_and_run,
- ['-package bytestring -package QuickCheck'])
-test('bytestring002', normal, compile_and_run, ['-package bytestring'])
-test('bytestring003', normal, compile_and_run, ['-package bytestring'])
-test('bytestring004',
- [skip, # This is designed for an earlier version of bytestring
- reqlib('QuickCheck')],
- compile_and_run,
- ['-package bytestring -package QuickCheck'])
-test('bytestring005',
- [skip, # This is designed for an earlier version of bytestring
- reqlib('QuickCheck')],
- compile_and_run,
- ['-package bytestring -package QuickCheck'])
-test('bytestring006', normal, compile_and_run, ['-package bytestring'])
diff --git a/testsuite/tests/lib/Data.ByteString/bytestring001.hs b/testsuite/tests/lib/Data.ByteString/bytestring001.hs
deleted file mode 100644
index 00cfcb3763..0000000000
--- a/testsuite/tests/lib/Data.ByteString/bytestring001.hs
+++ /dev/null
@@ -1,948 +0,0 @@
-#!/usr/bin/env runhaskell
---
--- Uses multi-param type classes
---
-
-import Test.QuickCheck.Batch
-import Test.QuickCheck
-import Text.Show.Functions
-
-import Data.Char
-import Data.Int
-import Data.List
-import Data.Maybe
-import Data.Word
-
-import System.IO
-import System.Environment
-import System.IO.Unsafe
-import System.Random
-
-import Control.Monad ( liftM2 )
-import Control.Monad.Instances ()
-
-import Text.Printf
-import Debug.Trace
-
-import Foreign.Ptr
-
-import Data.ByteString.Lazy (ByteString(..), pack , unpack)
-import qualified Data.ByteString.Lazy as L
-
-import Data.ByteString.Fusion
-import qualified Data.ByteString as P
-import qualified Data.ByteString.Lazy as L
-import qualified Data.ByteString.Lazy.Internal as L
-
-import qualified Data.ByteString.Char8 as PC
-import qualified Data.ByteString.Lazy.Char8 as LC
-import qualified Data.ByteString as P
-import qualified Data.ByteString.Internal as P
-import qualified Data.ByteString.Char8 as C
-import qualified Data.ByteString.Lazy.Char8 as D
-import Data.ByteString.Fusion
-
-import Prelude hiding (abs)
-
--- Enable this to get verbose test output. Including the actual tests.
-debug = False
-
-mytest :: Testable a => a -> Int -> IO ()
-mytest a n = mycheck defaultConfig
- { configMaxTest=n
- , configEvery= \n args -> if debug then show n ++ ":\n" ++ unlines args else [] } a
-
-mycheck :: Testable a => Config -> a -> IO ()
-mycheck config a =
- do let rnd = mkStdGen 99
- mytests config (evaluate a) rnd 0 0 []
-
-mytests :: Config -> Gen Result -> StdGen -> Int -> Int -> [[String]] -> IO ()
-mytests config gen rnd0 ntest nfail stamps
- | ntest == configMaxTest config = do done "OK," ntest stamps
- | nfail == configMaxFail config = do done "Arguments exhausted after" ntest stamps
- | otherwise =
- do putStr (configEvery config ntest (arguments result)) >> hFlush stdout
- case ok result of
- Nothing ->
- mytests config gen rnd1 ntest (nfail+1) stamps
- Just True ->
- mytests config gen rnd1 (ntest+1) nfail (stamp result:stamps)
- Just False ->
- putStr ( "Falsifiable after "
- ++ show ntest
- ++ " tests:\n"
- ++ unlines (arguments result)
- ) >> hFlush stdout
- where
- result = generate (configSize config ntest) rnd2 gen
- (rnd1,rnd2) = split rnd0
-
-done :: String -> Int -> [[String]] -> IO ()
-done mesg ntest stamps =
- do putStr ( mesg ++ " " ++ show ntest ++ " tests" ++ table )
- where
- table = display
- . map entry
- . reverse
- . sort
- . map pairLength
- . group
- . sort
- . filter (not . null)
- $ stamps
-
- display [] = ".\n"
- display [x] = " (" ++ x ++ ").\n"
- display xs = ".\n" ++ unlines (map (++ ".") xs)
-
- pairLength xss@(xs:_) = (length xss, xs)
- entry (n, xs) = percentage n ntest
- ++ " "
- ++ concat (intersperse ", " xs)
-
- percentage n m = show ((100 * n) `div` m) ++ "%"
-
-------------------------------------------------------------------------
-
-instance Arbitrary Char where
- arbitrary = choose ('a', 'i')
- coarbitrary c = variant (ord c `rem` 4)
-
-instance (Arbitrary a, Arbitrary b) => Arbitrary (PairS a b) where
- arbitrary = liftM2 (:*:) arbitrary arbitrary
- coarbitrary (a :*: b) = coarbitrary a . coarbitrary b
-
-instance Arbitrary Word8 where
- arbitrary = choose (97, 105)
- coarbitrary c = variant (fromIntegral ((fromIntegral c) `rem` 4))
-
-instance Arbitrary Int64 where
- arbitrary = sized $ \n -> choose (-fromIntegral n,fromIntegral n)
- coarbitrary n = variant (fromIntegral (if n >= 0 then 2*n else 2*(-n) + 1))
-
-instance Arbitrary a => Arbitrary (MaybeS a) where
- arbitrary = do a <- arbitrary ; elements [NothingS, JustS a]
- coarbitrary NothingS = variant 0
- coarbitrary _ = variant 1 -- ok?
-
-{-
-instance Arbitrary Char where
- arbitrary = choose ('\0', '\255') -- since we have to test words, unlines too
- coarbitrary c = variant (ord c `rem` 16)
-
-instance Arbitrary Word8 where
- arbitrary = choose (minBound, maxBound)
- coarbitrary c = variant (fromIntegral ((fromIntegral c) `rem` 16))
--}
-
-instance Random Word8 where
- randomR = integralRandomR
- random = randomR (minBound,maxBound)
-
-instance Random Int64 where
- randomR = integralRandomR
- random = randomR (minBound,maxBound)
-
-integralRandomR :: (Integral a, RandomGen g) => (a,a) -> g -> (a,g)
-integralRandomR (a,b) g = case randomR (fromIntegral a :: Integer,
- fromIntegral b :: Integer) g of
- (x,g) -> (fromIntegral x, g)
-
-instance Arbitrary L.ByteString where
- arbitrary = arbitrary >>= return . L.fromChunks . filter (not. P.null) -- maintain the invariant.
- coarbitrary s = coarbitrary (L.unpack s)
-
-instance Arbitrary P.ByteString where
- arbitrary = P.pack `fmap` arbitrary
- coarbitrary s = coarbitrary (P.unpack s)
-
-------------------------------------------------------------------------
---
--- We're doing two forms of testing here. Firstly, model based testing.
--- For our Lazy and strict bytestring types, we have model types:
---
--- i.e. Lazy == Byte
--- \\ //
--- List
---
--- That is, the Lazy type can be modeled by functions in both the Byte
--- and List type. For each of the 3 models, we have a set of tests that
--- check those types match.
---
--- The Model class connects a type and its model type, via a conversion
--- function.
---
---
-class Model a b where
- model :: a -> b -- get the abstract vale from a concrete value
-
---
--- Connecting our Lazy and Strict types to their models. We also check
--- the data invariant on Lazy types.
---
--- These instances represent the arrows in the above diagram
---
-instance Model B P where model = abstr . checkInvariant
-instance Model P [W] where model = P.unpack
-instance Model P [Char] where model = PC.unpack
-instance Model B [W] where model = L.unpack . checkInvariant
-instance Model B [Char] where model = LC.unpack . checkInvariant
-
--- Types are trivially modeled by themselves
-instance Model Bool Bool where model = id
-instance Model Int Int where model = id
-instance Model Int64 Int64 where model = id
-instance Model Int64 Int where model = fromIntegral
-instance Model Word8 Word8 where model = id
-instance Model Ordering Ordering where model = id
-
--- More structured types are modeled recursively, using the NatTrans class from Gofer.
-class (Functor f, Functor g) => NatTrans f g where
- eta :: f a -> g a
-
--- The transformation of the same type is identity
-instance NatTrans [] [] where eta = id
-instance NatTrans Maybe Maybe where eta = id
-instance NatTrans ((->) X) ((->) X) where eta = id
-instance NatTrans ((->) W) ((->) W) where eta = id
-
--- We have a transformation of pairs, if the pairs are in Model
-instance Model f g => NatTrans ((,) f) ((,) g) where eta (f,a) = (model f, a)
-
--- And finally, we can take any (m a) to (n b), if we can Model m n, and a b
-instance (NatTrans m n, Model a b) => Model (m a) (n b) where model x = fmap model (eta x)
-
-------------------------------------------------------------------------
-
--- In a form more useful for QC testing (and it's lazy)
-checkInvariant :: L.ByteString -> L.ByteString
-checkInvariant cs0 = check cs0
- where check L.Empty = L.Empty
- check (L.Chunk c cs)
- | P.null c = error ("invariant violation: " ++ show cs0)
- | otherwise = L.Chunk c (check cs)
-
-abstr :: L.ByteString -> P.ByteString
-abstr = P.concat . L.toChunks
-
-
--- Some short hand.
-type X = Int
-type W = Word8
-type P = P.ByteString
-type B = L.ByteString
-
-------------------------------------------------------------------------
---
--- These comparison functions handle wrapping and equality.
---
--- A single class for these would be nice, but note that they differe in
--- the number of arguments, and those argument types, so we'd need HList
--- tricks. See here: http://okmij.org/ftp/Haskell/vararg-fn.lhs
---
-
-eq1 f g = \a ->
- model (f a) == g (model a)
-eq2 f g = \a b ->
- model (f a b) == g (model a) (model b)
-eq3 f g = \a b c ->
- model (f a b c) == g (model a) (model b) (model c)
-eq4 f g = \a b c d ->
- model (f a b c d) == g (model a) (model b) (model c) (model d)
-eq5 f g = \a b c d e ->
- model (f a b c d e) == g (model a) (model b) (model c) (model d) (model e)
-
---
--- And for functions that take non-null input
---
-eqnotnull1 f g = \x -> (not (isNull x)) ==> eq1 f g x
-eqnotnull2 f g = \x y -> (not (isNull y)) ==> eq2 f g x y
-eqnotnull3 f g = \x y z -> (not (isNull z)) ==> eq3 f g x y z
-
-class IsNull t where isNull :: t -> Bool
-instance IsNull L.ByteString where isNull = L.null
-instance IsNull P.ByteString where isNull = P.null
-
-------------------------------------------------------------------------
-
-
---
--- ByteString.Lazy <=> ByteString
---
-
-prop_concatBP = L.concat `eq1` P.concat
-prop_nullBP = L.null `eq1` P.null
-prop_reverseBP = L.reverse `eq1` P.reverse
-prop_transposeBP = L.transpose `eq1` P.transpose
-prop_groupBP = L.group `eq1` P.group
-prop_initsBP = L.inits `eq1` P.inits
-prop_tailsBP = L.tails `eq1` P.tails
-prop_allBP = L.all `eq2` P.all
-prop_anyBP = L.any `eq2` P.any
-prop_appendBP = L.append `eq2` P.append
-prop_breakBP = L.break `eq2` P.break
--- prop_concatMapBP = L.concatMap `eq2` P.concatMap
-prop_consBP = L.cons `eq2` P.cons
-prop_countBP = L.count `eq2` P.count
-prop_dropBP = L.drop `eq2` P.drop
-prop_dropWhileBP = L.dropWhile `eq2` P.dropWhile
-prop_filterBP = L.filter `eq2` P.filter
-prop_findBP = L.find `eq2` P.find
-prop_findIndexBP = L.findIndex `eq2` P.findIndex
-prop_findIndicesBP = L.findIndices `eq2` P.findIndices
-prop_isPrefixOfBP = L.isPrefixOf `eq2` P.isPrefixOf
-prop_mapBP = L.map `eq2` P.map
-prop_replicateBP = L.replicate `eq2` P.replicate
-prop_snocBP = L.snoc `eq2` P.snoc
-prop_spanBP = L.span `eq2` P.span
-prop_splitBP = L.split `eq2` P.split
-prop_splitAtBP = L.splitAt `eq2` P.splitAt
-prop_takeBP = L.take `eq2` P.take
-prop_takeWhileBP = L.takeWhile `eq2` P.takeWhile
-prop_elemBP = L.elem `eq2` P.elem
-prop_notElemBP = L.notElem `eq2` P.notElem
-prop_elemIndexBP = L.elemIndex `eq2` P.elemIndex
-prop_elemIndicesBP = L.elemIndices `eq2` P.elemIndices
-prop_lengthBP = L.length `eq1` (fromIntegral . P.length :: P.ByteString -> Int64)
-prop_readIntBP = D.readInt `eq1` C.readInt
-prop_linesBP = D.lines `eq1` C.lines
-
-prop_headBP = L.head `eqnotnull1` P.head
-prop_initBP = L.init `eqnotnull1` P.init
-prop_lastBP = L.last `eqnotnull1` P.last
-prop_maximumBP = L.maximum `eqnotnull1` P.maximum
-prop_minimumBP = L.minimum `eqnotnull1` P.minimum
-prop_tailBP = L.tail `eqnotnull1` P.tail
-prop_foldl1BP = L.foldl1 `eqnotnull2` P.foldl1
-prop_foldl1BP' = L.foldl1' `eqnotnull2` P.foldl1'
-prop_foldr1BP = L.foldr1 `eqnotnull2` P.foldr1
-prop_scanlBP = L.scanl `eqnotnull3` P.scanl
-
-prop_eqBP = eq2
- ((==) :: B -> B -> Bool)
- ((==) :: P -> P -> Bool)
-prop_compareBP = eq2
- ((compare) :: B -> B -> Ordering)
- ((compare) :: P -> P -> Ordering)
-prop_foldlBP = eq3
- (L.foldl :: (X -> W -> X) -> X -> B -> X)
- (P.foldl :: (X -> W -> X) -> X -> P -> X)
-prop_foldlBP' = eq3
- (L.foldl' :: (X -> W -> X) -> X -> B -> X)
- (P.foldl' :: (X -> W -> X) -> X -> P -> X)
-prop_foldrBP = eq3
- (L.foldr :: (W -> X -> X) -> X -> B -> X)
- (P.foldr :: (W -> X -> X) -> X -> P -> X)
-prop_mapAccumLBP = eq3
- (L.mapAccumL :: (X -> W -> (X,W)) -> X -> B -> (X, B))
- (P.mapAccumL :: (X -> W -> (X,W)) -> X -> P -> (X, P))
-
-prop_unfoldrBP = eq3
- ((\n f a -> L.take (fromIntegral n) $
- L.unfoldr f a) :: Int -> (X -> Maybe (W,X)) -> X -> B)
- ((\n f a -> fst $
- P.unfoldrN n f a) :: Int -> (X -> Maybe (W,X)) -> X -> P)
-
---
--- properties comparing ByteString.Lazy `eq1` List
---
-
-prop_concatBL = L.concat `eq1` (concat :: [[W]] -> [W])
-prop_lengthBL = L.length `eq1` (length :: [W] -> Int)
-prop_nullBL = L.null `eq1` (null :: [W] -> Bool)
-prop_reverseBL = L.reverse `eq1` (reverse :: [W] -> [W])
-prop_transposeBL = L.transpose `eq1` (transpose :: [[W]] -> [[W]])
-prop_groupBL = L.group `eq1` (group :: [W] -> [[W]])
-prop_initsBL = L.inits `eq1` (inits :: [W] -> [[W]])
-prop_tailsBL = L.tails `eq1` (tails :: [W] -> [[W]])
-prop_allBL = L.all `eq2` (all :: (W -> Bool) -> [W] -> Bool)
-prop_anyBL = L.any `eq2` (any :: (W -> Bool) -> [W] -> Bool)
-prop_appendBL = L.append `eq2` ((++) :: [W] -> [W] -> [W])
-prop_breakBL = L.break `eq2` (break :: (W -> Bool) -> [W] -> ([W],[W]))
--- prop_concatMapBL = L.concatMap `eq2` (concatMap :: (W -> [W]) -> [W] -> [W])
-prop_consBL = L.cons `eq2` ((:) :: W -> [W] -> [W])
-prop_dropBL = L.drop `eq2` (drop :: Int -> [W] -> [W])
-prop_dropWhileBL = L.dropWhile `eq2` (dropWhile :: (W -> Bool) -> [W] -> [W])
-prop_filterBL = L.filter `eq2` (filter :: (W -> Bool ) -> [W] -> [W])
-prop_findBL = L.find `eq2` (find :: (W -> Bool) -> [W] -> Maybe W)
-prop_findIndicesBL = L.findIndices `eq2` (findIndices:: (W -> Bool) -> [W] -> [Int])
-prop_findIndexBL = L.findIndex `eq2` (findIndex :: (W -> Bool) -> [W] -> Maybe Int)
-prop_isPrefixOfBL = L.isPrefixOf `eq2` (isPrefixOf:: [W] -> [W] -> Bool)
-prop_mapBL = L.map `eq2` (map :: (W -> W) -> [W] -> [W])
-prop_replicateBL = L.replicate `eq2` (replicate :: Int -> W -> [W])
-prop_snocBL = L.snoc `eq2` ((\xs x -> xs ++ [x]) :: [W] -> W -> [W])
-prop_spanBL = L.span `eq2` (span :: (W -> Bool) -> [W] -> ([W],[W]))
-prop_splitAtBL = L.splitAt `eq2` (splitAt :: Int -> [W] -> ([W],[W]))
-prop_takeBL = L.take `eq2` (take :: Int -> [W] -> [W])
-prop_takeWhileBL = L.takeWhile `eq2` (takeWhile :: (W -> Bool) -> [W] -> [W])
-prop_elemBL = L.elem `eq2` (elem :: W -> [W] -> Bool)
-prop_notElemBL = L.notElem `eq2` (notElem :: W -> [W] -> Bool)
-prop_elemIndexBL = L.elemIndex `eq2` (elemIndex :: W -> [W] -> Maybe Int)
-prop_elemIndicesBL = L.elemIndices `eq2` (elemIndices:: W -> [W] -> [Int])
-prop_linesBL = D.lines `eq1` (lines :: String -> [String])
-
-prop_foldl1BL = L.foldl1 `eqnotnull2` (foldl1 :: (W -> W -> W) -> [W] -> W)
-prop_foldl1BL' = L.foldl1' `eqnotnull2` (foldl1' :: (W -> W -> W) -> [W] -> W)
-prop_foldr1BL = L.foldr1 `eqnotnull2` (foldr1 :: (W -> W -> W) -> [W] -> W)
-prop_headBL = L.head `eqnotnull1` (head :: [W] -> W)
-prop_initBL = L.init `eqnotnull1` (init :: [W] -> [W])
-prop_lastBL = L.last `eqnotnull1` (last :: [W] -> W)
-prop_maximumBL = L.maximum `eqnotnull1` (maximum :: [W] -> W)
-prop_minimumBL = L.minimum `eqnotnull1` (minimum :: [W] -> W)
-prop_tailBL = L.tail `eqnotnull1` (tail :: [W] -> [W])
-
-prop_eqBL = eq2
- ((==) :: B -> B -> Bool)
- ((==) :: [W] -> [W] -> Bool)
-prop_compareBL = eq2
- ((compare) :: B -> B -> Ordering)
- ((compare) :: [W] -> [W] -> Ordering)
-prop_foldlBL = eq3
- (L.foldl :: (X -> W -> X) -> X -> B -> X)
- ( foldl :: (X -> W -> X) -> X -> [W] -> X)
-prop_foldlBL' = eq3
- (L.foldl' :: (X -> W -> X) -> X -> B -> X)
- ( foldl' :: (X -> W -> X) -> X -> [W] -> X)
-prop_foldrBL = eq3
- (L.foldr :: (W -> X -> X) -> X -> B -> X)
- ( foldr :: (W -> X -> X) -> X -> [W] -> X)
-prop_mapAccumLBL = eq3
- (L.mapAccumL :: (X -> W -> (X,W)) -> X -> B -> (X, B))
- ( mapAccumL :: (X -> W -> (X,W)) -> X -> [W] -> (X, [W]))
-prop_unfoldrBL = eq3
- ((\n f a -> L.take (fromIntegral n) $
- L.unfoldr f a) :: Int -> (X -> Maybe (W,X)) -> X -> B)
- ((\n f a -> take n $
- unfoldr f a) :: Int -> (X -> Maybe (W,X)) -> X -> [W])
-
---
--- And finally, check correspondance between Data.ByteString and List
---
-
-prop_lengthPL = (fromIntegral.P.length :: P -> Int) `eq1` (length :: [W] -> Int)
-prop_nullPL = P.null `eq1` (null :: [W] -> Bool)
-prop_reversePL = P.reverse `eq1` (reverse :: [W] -> [W])
-prop_transposePL = P.transpose `eq1` (transpose :: [[W]] -> [[W]])
-prop_groupPL = P.group `eq1` (group :: [W] -> [[W]])
-prop_initsPL = P.inits `eq1` (inits :: [W] -> [[W]])
-prop_tailsPL = P.tails `eq1` (tails :: [W] -> [[W]])
-prop_concatPL = P.concat `eq1` (concat :: [[W]] -> [W])
-prop_allPL = P.all `eq2` (all :: (W -> Bool) -> [W] -> Bool)
-prop_anyPL = P.any `eq2` (any :: (W -> Bool) -> [W] -> Bool)
-prop_appendPL = P.append `eq2` ((++) :: [W] -> [W] -> [W])
-prop_breakPL = P.break `eq2` (break :: (W -> Bool) -> [W] -> ([W],[W]))
--- prop_concatMapPL = P.concatMap `eq2` (concatMap :: (W -> [W]) -> [W] -> [W])
-prop_consPL = P.cons `eq2` ((:) :: W -> [W] -> [W])
-prop_dropPL = P.drop `eq2` (drop :: Int -> [W] -> [W])
-prop_dropWhilePL = P.dropWhile `eq2` (dropWhile :: (W -> Bool) -> [W] -> [W])
-prop_filterPL = P.filter `eq2` (filter :: (W -> Bool ) -> [W] -> [W])
-prop_findPL = P.find `eq2` (find :: (W -> Bool) -> [W] -> Maybe W)
-prop_findIndexPL = P.findIndex `eq2` (findIndex :: (W -> Bool) -> [W] -> Maybe Int)
-prop_isPrefixOfPL = P.isPrefixOf`eq2` (isPrefixOf:: [W] -> [W] -> Bool)
-prop_mapPL = P.map `eq2` (map :: (W -> W) -> [W] -> [W])
-prop_replicatePL = P.replicate `eq2` (replicate :: Int -> W -> [W])
-prop_snocPL = P.snoc `eq2` ((\xs x -> xs ++ [x]) :: [W] -> W -> [W])
-prop_spanPL = P.span `eq2` (span :: (W -> Bool) -> [W] -> ([W],[W]))
-prop_splitAtPL = P.splitAt `eq2` (splitAt :: Int -> [W] -> ([W],[W]))
-prop_takePL = P.take `eq2` (take :: Int -> [W] -> [W])
-prop_takeWhilePL = P.takeWhile `eq2` (takeWhile :: (W -> Bool) -> [W] -> [W])
-prop_elemPL = P.elem `eq2` (elem :: W -> [W] -> Bool)
-prop_notElemPL = P.notElem `eq2` (notElem :: W -> [W] -> Bool)
-prop_elemIndexPL = P.elemIndex `eq2` (elemIndex :: W -> [W] -> Maybe Int)
-prop_linesPL = C.lines `eq1` (lines :: String -> [String])
-prop_findIndicesPL= P.findIndices`eq2` (findIndices:: (W -> Bool) -> [W] -> [Int])
-prop_elemIndicesPL= P.elemIndices`eq2` (elemIndices:: W -> [W] -> [Int])
-
-prop_foldl1PL = P.foldl1 `eqnotnull2` (foldl1 :: (W -> W -> W) -> [W] -> W)
-prop_foldl1PL' = P.foldl1' `eqnotnull2` (foldl1' :: (W -> W -> W) -> [W] -> W)
-prop_foldr1PL = P.foldr1 `eqnotnull2` (foldr1 :: (W -> W -> W) -> [W] -> W)
-prop_scanlPL = P.scanl `eqnotnull3` (scanl :: (W -> W -> W) -> W -> [W] -> [W])
-prop_scanl1PL = P.scanl1 `eqnotnull2` (scanl1 :: (W -> W -> W) -> [W] -> [W])
-prop_scanrPL = P.scanr `eqnotnull3` (scanr :: (W -> W -> W) -> W -> [W] -> [W])
-prop_scanr1PL = P.scanr1 `eqnotnull2` (scanr1 :: (W -> W -> W) -> [W] -> [W])
-prop_headPL = P.head `eqnotnull1` (head :: [W] -> W)
-prop_initPL = P.init `eqnotnull1` (init :: [W] -> [W])
-prop_lastPL = P.last `eqnotnull1` (last :: [W] -> W)
-prop_maximumPL = P.maximum `eqnotnull1` (maximum :: [W] -> W)
-prop_minimumPL = P.minimum `eqnotnull1` (minimum :: [W] -> W)
-prop_tailPL = P.tail `eqnotnull1` (tail :: [W] -> [W])
-
-prop_eqPL = eq2
- ((==) :: P -> P -> Bool)
- ((==) :: [W] -> [W] -> Bool)
-prop_comparePL = eq2
- ((compare) :: P -> P -> Ordering)
- ((compare) :: [W] -> [W] -> Ordering)
-prop_foldlPL = eq3
- (P.foldl :: (X -> W -> X) -> X -> P -> X)
- ( foldl :: (X -> W -> X) -> X -> [W] -> X)
-prop_foldlPL' = eq3
- (P.foldl' :: (X -> W -> X) -> X -> P -> X)
- ( foldl' :: (X -> W -> X) -> X -> [W] -> X)
-prop_foldrPL = eq3
- (P.foldr :: (W -> X -> X) -> X -> P -> X)
- ( foldr :: (W -> X -> X) -> X -> [W] -> X)
-prop_mapAccumLPL= eq3
- (P.mapAccumL :: (X -> W -> (X,W)) -> X -> P -> (X, P))
- ( mapAccumL :: (X -> W -> (X,W)) -> X -> [W] -> (X, [W]))
-prop_mapAccumRPL= eq3
- (P.mapAccumR :: (X -> W -> (X,W)) -> X -> P -> (X, P))
- ( mapAccumR :: (X -> W -> (X,W)) -> X -> [W] -> (X, [W]))
-prop_unfoldrPL = eq3
- ((\n f a -> fst $
- P.unfoldrN n f a) :: Int -> (X -> Maybe (W,X)) -> X -> P)
- ((\n f a -> take n $
- unfoldr f a) :: Int -> (X -> Maybe (W,X)) -> X -> [W])
-
-------------------------------------------------------------------------
---
--- And check fusion RULES.
---
-
-prop_lazylooploop em1 em2 start1 start2 arr =
- loopL em2 start2 (loopArr (loopL em1 start1 arr)) ==
- loopSndAcc (loopL (em1 `fuseEFL` em2) (start1 :*: start2) arr)
- where
- _ = start1 :: Int
- _ = start2 :: Int
-
-prop_looploop em1 em2 start1 start2 arr =
- loopU em2 start2 (loopArr (loopU em1 start1 arr)) ==
- loopSndAcc (loopU (em1 `fuseEFL` em2) (start1 :*: start2) arr)
- where
- _ = start1 :: Int
- _ = start2 :: Int
-
-------------------------------------------------------------------------
-
--- check associativity of sequence loops
-prop_sequenceloops_assoc n m o x y z a1 a2 a3 xs =
-
- k ((f * g) * h) == k (f * (g * h)) -- associativity
-
- where
- (*) = sequenceLoops
- f = (sel n) x a1
- g = (sel m) y a2
- h = (sel o) z a3
-
- _ = a1 :: Int; _ = a2 :: Int; _ = a3 :: Int
- k g = loopArr (loopWrapper g xs)
-
--- check wrapper elimination
-prop_loop_loop_wrapper_elimination n m x y a1 a2 xs =
- loopWrapper g (loopArr (loopWrapper f xs)) ==
- loopSndAcc (loopWrapper (sequenceLoops f g) xs)
- where
- f = (sel n) x a1
- g = (sel m) y a2
- _ = a1 :: Int; _ = a2 :: Int
-
-sel :: Bool
- -> (acc -> Word8 -> PairS acc (MaybeS Word8))
- -> acc
- -> Ptr Word8
- -> Ptr Word8
- -> Int
- -> IO (PairS (PairS acc Int) Int)
-sel False = doDownLoop
-sel True = doUpLoop
-
-------------------------------------------------------------------------
---
--- Test fusion forms
---
-
-prop_up_up_loop_fusion f1 f2 acc1 acc2 xs =
- k (sequenceLoops (doUpLoop f1 acc1) (doUpLoop f2 acc2)) ==
- k (doUpLoop (f1 `fuseAccAccEFL` f2) (acc1 :*: acc2))
- where _ = acc1 :: Int; _ = acc2 :: Int; k g = loopWrapper g xs
-
-prop_down_down_loop_fusion f1 f2 acc1 acc2 xs =
- k (sequenceLoops (doDownLoop f1 acc1) (doDownLoop f2 acc2)) ==
- k (doDownLoop (f1 `fuseAccAccEFL` f2) (acc1 :*: acc2))
- where _ = acc1 :: Int ; _ = acc2 :: Int ; k g = loopWrapper g xs
-
-prop_noAcc_noAcc_loop_fusion f1 f2 acc1 acc2 xs =
- k (sequenceLoops (doNoAccLoop f1 acc1) (doNoAccLoop f2 acc2)) ==
- k (doNoAccLoop (f1 `fuseNoAccNoAccEFL` f2) (acc1 :*: acc2))
- where _ = acc1 :: Int ; _ = acc2 :: Int ; k g = loopWrapper g xs
-
-prop_noAcc_up_loop_fusion f1 f2 acc1 acc2 xs =
- k (sequenceLoops (doNoAccLoop f1 acc1) (doUpLoop f2 acc2)) ==
- k (doUpLoop (f1 `fuseNoAccAccEFL` f2) (acc1 :*: acc2))
- where _ = acc1 :: Int; _ = acc2 :: Int; k g = loopWrapper g xs
-
-prop_up_noAcc_loop_fusion f1 f2 acc1 acc2 xs =
- k (sequenceLoops (doUpLoop f1 acc1) (doNoAccLoop f2 acc2)) ==
- k (doUpLoop (f1 `fuseAccNoAccEFL` f2) (acc1 :*: acc2))
- where _ = acc1 :: Int; _ = acc2 :: Int; k g = loopWrapper g xs
-
-prop_noAcc_down_loop_fusion f1 f2 acc1 acc2 xs =
- k (sequenceLoops (doNoAccLoop f1 acc1) (doDownLoop f2 acc2)) ==
- k (doDownLoop (f1 `fuseNoAccAccEFL` f2) (acc1 :*: acc2))
- where _ = acc1 :: Int; _ = acc2 :: Int ; k g = loopWrapper g xs
-
-prop_down_noAcc_loop_fusion f1 f2 acc1 acc2 xs =
- k (sequenceLoops (doDownLoop f1 acc1) (doNoAccLoop f2 acc2)) ==
- k (doDownLoop (f1 `fuseAccNoAccEFL` f2) (acc1 :*: acc2))
- where _ = acc1 :: Int; _ = acc2 :: Int; k g = loopWrapper g xs
-
-prop_map_map_loop_fusion f1 f2 acc1 acc2 xs =
- k (sequenceLoops (doMapLoop f1 acc1) (doMapLoop f2 acc2)) ==
- k (doMapLoop (f1 `fuseMapMapEFL` f2) (acc1 :*: acc2))
- where _ = acc1 :: Int; _ = acc2 :: Int ; k g = loopWrapper g xs
-
-prop_filter_filter_loop_fusion f1 f2 acc1 acc2 xs =
- k (sequenceLoops (doFilterLoop f1 acc1) (doFilterLoop f2 acc2)) ==
- k (doFilterLoop (f1 `fuseFilterFilterEFL` f2) (acc1 :*: acc2))
- where _ = acc1 :: Int; _ = acc2 :: Int ; k g = loopWrapper g xs
-
-prop_map_filter_loop_fusion f1 f2 acc1 acc2 xs =
- k (sequenceLoops (doMapLoop f1 acc1) (doFilterLoop f2 acc2)) ==
- k (doNoAccLoop (f1 `fuseMapFilterEFL` f2) (acc1 :*: acc2))
- where _ = acc1 :: Int; _ = acc2 :: Int ; k g = loopWrapper g xs
-
-prop_filter_map_loop_fusion f1 f2 acc1 acc2 xs =
- k (sequenceLoops (doFilterLoop f1 acc1) (doMapLoop f2 acc2)) ==
- k (doNoAccLoop (f1 `fuseFilterMapEFL` f2) (acc1 :*: acc2))
- where _ = acc1 :: Int; _ = acc2 :: Int ; k g = loopWrapper g xs
-
-prop_map_noAcc_loop_fusion f1 f2 acc1 acc2 xs =
- k (sequenceLoops (doMapLoop f1 acc1) (doNoAccLoop f2 acc2)) ==
- k (doNoAccLoop (f1 `fuseMapNoAccEFL` f2) (acc1 :*: acc2))
- where _ = acc1 :: Int; _ = acc2 :: Int ; k g = loopWrapper g xs
-
-prop_noAcc_map_loop_fusion f1 f2 acc1 acc2 xs =
- k (sequenceLoops (doNoAccLoop f1 acc1) (doMapLoop f2 acc2)) ==
- k (doNoAccLoop (f1 `fuseNoAccMapEFL` f2) (acc1 :*: acc2))
- where _ = acc1 :: Int; _ = acc2 :: Int ; k g = loopWrapper g xs
-
-prop_map_up_loop_fusion f1 f2 acc1 acc2 xs =
- k (sequenceLoops (doMapLoop f1 acc1) (doUpLoop f2 acc2)) ==
- k (doUpLoop (f1 `fuseMapAccEFL` f2) (acc1 :*: acc2))
- where _ = acc1 :: Int; _ = acc2 :: Int ; k g = loopWrapper g xs
-
-prop_up_map_loop_fusion f1 f2 acc1 acc2 xs =
- k (sequenceLoops (doUpLoop f1 acc1) (doMapLoop f2 acc2)) ==
- k (doUpLoop (f1 `fuseAccMapEFL` f2) (acc1 :*: acc2))
- where _ = acc1 :: Int; _ = acc2 :: Int ; k g = loopWrapper g xs
-
-prop_map_down_fusion f1 f2 acc1 acc2 xs =
- k (sequenceLoops (doMapLoop f1 acc1) (doDownLoop f2 acc2)) ==
- k (doDownLoop (f1 `fuseMapAccEFL` f2) (acc1 :*: acc2))
- where _ = acc1 :: Int; _ = acc2 :: Int ; k g = loopWrapper g xs
-
-prop_down_map_loop_fusion f1 f2 acc1 acc2 xs =
- k (sequenceLoops (doDownLoop f1 acc1) (doMapLoop f2 acc2)) ==
- k (doDownLoop (f1 `fuseAccMapEFL` f2) (acc1 :*: acc2))
- where _ = acc1 :: Int; _ = acc2 :: Int ; k g = loopWrapper g xs
-
-prop_filter_noAcc_loop_fusion f1 f2 acc1 acc2 xs =
- k (sequenceLoops (doFilterLoop f1 acc1) (doNoAccLoop f2 acc2)) ==
- k (doNoAccLoop (f1 `fuseFilterNoAccEFL` f2) (acc1 :*: acc2))
- where _ = acc1 :: Int; _ = acc2 :: Int ; k g = loopWrapper g xs
-
-prop_noAcc_filter_loop_fusion f1 f2 acc1 acc2 xs =
- k (sequenceLoops (doNoAccLoop f1 acc1) (doFilterLoop f2 acc2)) ==
- k (doNoAccLoop (f1 `fuseNoAccFilterEFL` f2) (acc1 :*: acc2))
- where _ = acc1 :: Int; _ = acc2 :: Int ; k g = loopWrapper g xs
-
-prop_filter_up_loop_fusion f1 f2 acc1 acc2 xs =
- k (sequenceLoops (doFilterLoop f1 acc1) (doUpLoop f2 acc2)) ==
- k (doUpLoop (f1 `fuseFilterAccEFL` f2) (acc1 :*: acc2))
- where _ = acc1 :: Int; _ = acc2 :: Int ; k g = loopWrapper g xs
-
-prop_up_filter_loop_fusion f1 f2 acc1 acc2 xs =
- k (sequenceLoops (doUpLoop f1 acc1) (doFilterLoop f2 acc2)) ==
- k (doUpLoop (f1 `fuseAccFilterEFL` f2) (acc1 :*: acc2))
- where _ = acc1 :: Int; _ = acc2 :: Int ; k g = loopWrapper g xs
-
-prop_filter_down_fusion f1 f2 acc1 acc2 xs =
- k (sequenceLoops (doFilterLoop f1 acc1) (doDownLoop f2 acc2)) ==
- k (doDownLoop (f1 `fuseFilterAccEFL` f2) (acc1 :*: acc2))
- where _ = acc1 :: Int; _ = acc2 :: Int ; k g = loopWrapper g xs
-
-prop_down_filter_loop_fusion f1 f2 acc1 acc2 xs =
- k (sequenceLoops (doDownLoop f1 acc1) (doFilterLoop f2 acc2)) ==
- k (doDownLoop (f1 `fuseAccFilterEFL` f2) (acc1 :*: acc2))
- where _ = acc1 :: Int; _ = acc2 :: Int ; k g = loopWrapper g xs
-
-------------------------------------------------------------------------
-
-prop_length_loop_fusion_1 f1 acc1 xs =
- P.length (loopArr (loopWrapper (doUpLoop f1 acc1) xs)) ==
- P.foldl' (const . (+1)) 0 (loopArr (loopWrapper (doUpLoop f1 acc1) xs))
- where _ = acc1 :: Int
-
-prop_length_loop_fusion_2 f1 acc1 xs =
- P.length (loopArr (loopWrapper (doDownLoop f1 acc1) xs)) ==
- P.foldl' (const . (+1)) 0 (loopArr (loopWrapper (doDownLoop f1 acc1) xs))
- where _ = acc1 :: Int
-
-prop_length_loop_fusion_3 f1 acc1 xs =
- P.length (loopArr (loopWrapper (doMapLoop f1 acc1) xs)) ==
- P.foldl' (const . (+1)) 0 (loopArr (loopWrapper (doMapLoop f1 acc1) xs))
- where _ = acc1 :: Int
-
-prop_length_loop_fusion_4 f1 acc1 xs =
- P.length (loopArr (loopWrapper (doFilterLoop f1 acc1) xs)) ==
- P.foldl' (const . (+1)) 0 (loopArr (loopWrapper (doFilterLoop f1 acc1) xs))
- where _ = acc1 :: Int
-
-------------------------------------------------------------------------
--- The entry point
-
-main :: IO ()
-main = myrun tests
-
-myrun :: [(String, Int -> IO ())] -> IO ()
-myrun tests = do
- x <- getArgs
- let n = if null x then 100 else read . head $ x
- mapM_ (\(s,a) -> printf "%-25s: " s >> a n) tests
-
---
--- And now a list of all the properties to test.
---
-
-tests = misc_tests
- ++ bl_tests
- ++ bp_tests
- ++ pl_tests
- ++ fusion_tests
-
-misc_tests =
- [("invariant", mytest prop_invariant)]
-
-------------------------------------------------------------------------
--- ByteString.Lazy <=> List
-
-bl_tests =
- [("all", mytest prop_allBL)
- ,("any", mytest prop_anyBL)
- ,("append", mytest prop_appendBL)
- ,("compare", mytest prop_compareBL)
- ,("concat", mytest prop_concatBL)
- ,("cons", mytest prop_consBL)
- ,("eq", mytest prop_eqBL)
- ,("filter", mytest prop_filterBL)
- ,("find", mytest prop_findBL)
- ,("findIndex", mytest prop_findIndexBL)
- ,("findIndices", mytest prop_findIndicesBL)
- ,("foldl", mytest prop_foldlBL)
- ,("foldl'", mytest prop_foldlBL')
- ,("foldl1", mytest prop_foldl1BL)
- ,("foldl1'", mytest prop_foldl1BL')
- ,("foldr", mytest prop_foldrBL)
- ,("foldr1", mytest prop_foldr1BL)
- ,("mapAccumL", mytest prop_mapAccumLBL)
- ,("unfoldr", mytest prop_unfoldrBL)
- ,("head", mytest prop_headBL)
- ,("init", mytest prop_initBL)
- ,("isPrefixOf", mytest prop_isPrefixOfBL)
- ,("last", mytest prop_lastBL)
- ,("length", mytest prop_lengthBL)
- ,("map", mytest prop_mapBL)
- ,("maximum", mytest prop_maximumBL)
- ,("minimum", mytest prop_minimumBL)
- ,("null", mytest prop_nullBL)
- ,("reverse", mytest prop_reverseBL)
- ,("snoc", mytest prop_snocBL)
- ,("tail", mytest prop_tailBL)
- ,("transpose", mytest prop_transposeBL)
- ,("replicate", mytest prop_replicateBL)
- ,("take", mytest prop_takeBL)
- ,("drop", mytest prop_dropBL)
- ,("splitAt", mytest prop_splitAtBL)
- ,("takeWhile", mytest prop_takeWhileBL)
- ,("dropWhile", mytest prop_dropWhileBL)
- ,("break", mytest prop_breakBL)
- ,("span", mytest prop_spanBL)
- ,("group", mytest prop_groupBL)
- ,("inits", mytest prop_initsBL)
- ,("tails", mytest prop_tailsBL)
- ,("elem", mytest prop_elemBL)
- ,("notElem", mytest prop_notElemBL)
- ,("lines", mytest prop_linesBL)
- ,("elemIndex", mytest prop_elemIndexBL)
- ,("elemIndices", mytest prop_elemIndicesBL)
--- ,("concatMap", mytest prop_concatMapBL)
- ]
-
-------------------------------------------------------------------------
--- ByteString.Lazy <=> ByteString
-
-bp_tests =
- [("all", mytest prop_allBP)
- ,("any", mytest prop_anyBP)
- ,("append", mytest prop_appendBP)
- ,("compare", mytest prop_compareBP)
- ,("concat", mytest prop_concatBP)
- ,("cons", mytest prop_consBP)
- ,("eq", mytest prop_eqBP)
- ,("filter", mytest prop_filterBP)
- ,("find", mytest prop_findBP)
- ,("findIndex", mytest prop_findIndexBP)
- ,("findIndices", mytest prop_findIndicesBP)
- ,("foldl", mytest prop_foldlBP)
- ,("foldl'", mytest prop_foldlBP')
- ,("foldl1", mytest prop_foldl1BP)
- ,("foldl1'", mytest prop_foldl1BP')
- ,("foldr", mytest prop_foldrBP)
- ,("foldr1", mytest prop_foldr1BP)
- ,("mapAccumL", mytest prop_mapAccumLBP)
- ,("unfoldr", mytest prop_unfoldrBP)
- ,("head", mytest prop_headBP)
- ,("init", mytest prop_initBP)
- ,("isPrefixOf", mytest prop_isPrefixOfBP)
- ,("last", mytest prop_lastBP)
- ,("length", mytest prop_lengthBP)
- ,("readInt", mytest prop_readIntBP)
- ,("lines", mytest prop_linesBP)
- ,("map", mytest prop_mapBP)
- ,("maximum ", mytest prop_maximumBP)
- ,("minimum" , mytest prop_minimumBP)
- ,("null", mytest prop_nullBP)
- ,("reverse", mytest prop_reverseBP)
- ,("snoc", mytest prop_snocBP)
- ,("tail", mytest prop_tailBP)
- ,("scanl", mytest prop_scanlBP)
- ,("transpose", mytest prop_transposeBP)
- ,("replicate", mytest prop_replicateBP)
- ,("take", mytest prop_takeBP)
- ,("drop", mytest prop_dropBP)
- ,("splitAt", mytest prop_splitAtBP)
- ,("takeWhile", mytest prop_takeWhileBP)
- ,("dropWhile", mytest prop_dropWhileBP)
- ,("break", mytest prop_breakBP)
- ,("span", mytest prop_spanBP)
- ,("split", mytest prop_splitBP)
- ,("count", mytest prop_countBP)
- ,("group", mytest prop_groupBP)
- ,("inits", mytest prop_initsBP)
- ,("tails", mytest prop_tailsBP)
- ,("elem", mytest prop_elemBP)
- ,("notElem", mytest prop_notElemBP)
- ,("elemIndex", mytest prop_elemIndexBP)
- ,("elemIndices", mytest prop_elemIndicesBP)
--- ,("concatMap", mytest prop_concatMapBP)
- ]
-
-------------------------------------------------------------------------
--- ByteString <=> List
-
-pl_tests =
- [("all", mytest prop_allPL)
- ,("any", mytest prop_anyPL)
- ,("append", mytest prop_appendPL)
- ,("compare", mytest prop_comparePL)
- ,("concat", mytest prop_concatPL)
- ,("cons", mytest prop_consPL)
- ,("eq", mytest prop_eqPL)
- ,("filter", mytest prop_filterPL)
- ,("find", mytest prop_findPL)
- ,("findIndex", mytest prop_findIndexPL)
- ,("findIndices", mytest prop_findIndicesPL)
- ,("foldl", mytest prop_foldlPL)
- ,("foldl'", mytest prop_foldlPL')
- ,("foldl1", mytest prop_foldl1PL)
- ,("foldl1'", mytest prop_foldl1PL')
- ,("foldr1", mytest prop_foldr1PL)
- ,("foldr", mytest prop_foldrPL)
- ,("mapAccumL", mytest prop_mapAccumLPL)
- ,("mapAccumR", mytest prop_mapAccumRPL)
- ,("unfoldr", mytest prop_unfoldrPL)
- ,("scanl", mytest prop_scanlPL)
- ,("scanl1", mytest prop_scanl1PL)
- ,("scanr", mytest prop_scanrPL)
- ,("scanr1", mytest prop_scanr1PL)
- ,("head", mytest prop_headPL)
- ,("init", mytest prop_initPL)
- ,("last", mytest prop_lastPL)
- ,("maximum", mytest prop_maximumPL)
- ,("minimum", mytest prop_minimumPL)
- ,("tail", mytest prop_tailPL)
- ,("isPrefixOf", mytest prop_isPrefixOfPL)
- ,("length", mytest prop_lengthPL)
- ,("map", mytest prop_mapPL)
- ,("null", mytest prop_nullPL)
- ,("reverse", mytest prop_reversePL)
- ,("snoc", mytest prop_snocPL)
- ,("transpose", mytest prop_transposePL)
- ,("replicate", mytest prop_replicatePL)
- ,("take", mytest prop_takePL)
- ,("drop", mytest prop_dropPL)
- ,("splitAt", mytest prop_splitAtPL)
- ,("takeWhile", mytest prop_takeWhilePL)
- ,("dropWhile", mytest prop_dropWhilePL)
- ,("break", mytest prop_breakPL)
- ,("span", mytest prop_spanPL)
- ,("group", mytest prop_groupPL)
- ,("inits", mytest prop_initsPL)
- ,("tails", mytest prop_tailsPL)
- ,("elem", mytest prop_elemPL)
- ,("notElem", mytest prop_notElemPL)
- ,("lines", mytest prop_linesBL)
- ,("elemIndex", mytest prop_elemIndexPL)
- ,("elemIndices", mytest prop_elemIndicesPL)
--- ,("concatMap", mytest prop_concatMapPL)
- ]
-
-------------------------------------------------------------------------
--- Fusion rules
-
-fusion_tests =
--- v1 fusion
- [ ("lazy loop/loop fusion", mytest prop_lazylooploop)
- , ("loop/loop fusion", mytest prop_looploop)
-
--- v2 fusion
- ,("loop/loop wrapper elim", mytest prop_loop_loop_wrapper_elimination)
- ,("sequence association", mytest prop_sequenceloops_assoc)
-
- ,("up/up loop fusion", mytest prop_up_up_loop_fusion)
- ,("down/down loop fusion", mytest prop_down_down_loop_fusion)
- ,("noAcc/noAcc loop fusion", mytest prop_noAcc_noAcc_loop_fusion)
- ,("noAcc/up loop fusion", mytest prop_noAcc_up_loop_fusion)
- ,("up/noAcc loop fusion", mytest prop_up_noAcc_loop_fusion)
- ,("noAcc/down loop fusion", mytest prop_noAcc_down_loop_fusion)
- ,("down/noAcc loop fusion", mytest prop_down_noAcc_loop_fusion)
- ,("map/map loop fusion", mytest prop_map_map_loop_fusion)
- ,("filter/filter loop fusion", mytest prop_filter_filter_loop_fusion)
- ,("map/filter loop fusion", mytest prop_map_filter_loop_fusion)
- ,("filter/map loop fusion", mytest prop_filter_map_loop_fusion)
- ,("map/noAcc loop fusion", mytest prop_map_noAcc_loop_fusion)
- ,("noAcc/map loop fusion", mytest prop_noAcc_map_loop_fusion)
- ,("map/up loop fusion", mytest prop_map_up_loop_fusion)
- ,("up/map loop fusion", mytest prop_up_map_loop_fusion)
- ,("map/down loop fusion", mytest prop_map_down_fusion)
- ,("down/map loop fusion", mytest prop_down_map_loop_fusion)
- ,("filter/noAcc loop fusion", mytest prop_filter_noAcc_loop_fusion)
- ,("noAcc/filter loop fusion", mytest prop_noAcc_filter_loop_fusion)
- ,("filter/up loop fusion", mytest prop_filter_up_loop_fusion)
- ,("up/filter loop fusion", mytest prop_up_filter_loop_fusion)
- ,("filter/down loop fusion", mytest prop_filter_down_fusion)
- ,("down/filter loop fusion", mytest prop_down_filter_loop_fusion)
-
- ,("length/loop fusion", mytest prop_length_loop_fusion_1)
- ,("length/loop fusion", mytest prop_length_loop_fusion_2)
- ,("length/loop fusion", mytest prop_length_loop_fusion_3)
- ,("length/loop fusion", mytest prop_length_loop_fusion_4)
- ]
-
-
-------------------------------------------------------------------------
---
--- These are miscellaneous tests left over. Or else they test some
--- property internal to a type (i.e. head . sort == minimum), without
--- reference to a model type.
---
-
-invariant :: L.ByteString -> Bool
-invariant L.Empty = True
-invariant (L.Chunk c cs) = not (P.null c) && invariant cs
-
-prop_invariant = invariant
-
diff --git a/testsuite/tests/lib/Data.ByteString/bytestring001.stdout b/testsuite/tests/lib/Data.ByteString/bytestring001.stdout
deleted file mode 100644
index e2b220dc41..0000000000
--- a/testsuite/tests/lib/Data.ByteString/bytestring001.stdout
+++ /dev/null
@@ -1,185 +0,0 @@
-invariant : OK, 100 tests.
-all : OK, 100 tests.
-any : OK, 100 tests.
-append : OK, 100 tests.
-compare : OK, 100 tests.
-concat : OK, 100 tests.
-cons : OK, 100 tests.
-eq : OK, 100 tests.
-filter : OK, 100 tests.
-find : OK, 100 tests.
-findIndex : OK, 100 tests.
-findIndices : OK, 100 tests.
-foldl : OK, 100 tests.
-foldl' : OK, 100 tests.
-foldl1 : OK, 100 tests.
-foldl1' : OK, 100 tests.
-foldr : OK, 100 tests.
-foldr1 : OK, 100 tests.
-mapAccumL : OK, 100 tests.
-unfoldr : OK, 100 tests.
-head : OK, 100 tests.
-init : OK, 100 tests.
-isPrefixOf : OK, 100 tests.
-last : OK, 100 tests.
-length : OK, 100 tests.
-map : OK, 100 tests.
-maximum : OK, 100 tests.
-minimum : OK, 100 tests.
-null : OK, 100 tests.
-reverse : OK, 100 tests.
-snoc : OK, 100 tests.
-tail : OK, 100 tests.
-transpose : OK, 100 tests.
-replicate : OK, 100 tests.
-take : OK, 100 tests.
-drop : OK, 100 tests.
-splitAt : OK, 100 tests.
-takeWhile : OK, 100 tests.
-dropWhile : OK, 100 tests.
-break : OK, 100 tests.
-span : OK, 100 tests.
-group : OK, 100 tests.
-inits : OK, 100 tests.
-tails : OK, 100 tests.
-elem : OK, 100 tests.
-notElem : OK, 100 tests.
-lines : OK, 100 tests.
-elemIndex : OK, 100 tests.
-elemIndices : OK, 100 tests.
-all : OK, 100 tests.
-any : OK, 100 tests.
-append : OK, 100 tests.
-compare : OK, 100 tests.
-concat : OK, 100 tests.
-cons : OK, 100 tests.
-eq : OK, 100 tests.
-filter : OK, 100 tests.
-find : OK, 100 tests.
-findIndex : OK, 100 tests.
-findIndices : OK, 100 tests.
-foldl : OK, 100 tests.
-foldl' : OK, 100 tests.
-foldl1 : OK, 100 tests.
-foldl1' : OK, 100 tests.
-foldr : OK, 100 tests.
-foldr1 : OK, 100 tests.
-mapAccumL : OK, 100 tests.
-unfoldr : OK, 100 tests.
-head : OK, 100 tests.
-init : OK, 100 tests.
-isPrefixOf : OK, 100 tests.
-last : OK, 100 tests.
-length : OK, 100 tests.
-readInt : OK, 100 tests.
-lines : OK, 100 tests.
-map : OK, 100 tests.
-maximum : OK, 100 tests.
-minimum : OK, 100 tests.
-null : OK, 100 tests.
-reverse : OK, 100 tests.
-snoc : OK, 100 tests.
-tail : OK, 100 tests.
-scanl : OK, 100 tests.
-transpose : OK, 100 tests.
-replicate : OK, 100 tests.
-take : OK, 100 tests.
-drop : OK, 100 tests.
-splitAt : OK, 100 tests.
-takeWhile : OK, 100 tests.
-dropWhile : OK, 100 tests.
-break : OK, 100 tests.
-span : OK, 100 tests.
-split : OK, 100 tests.
-count : OK, 100 tests.
-group : OK, 100 tests.
-inits : OK, 100 tests.
-tails : OK, 100 tests.
-elem : OK, 100 tests.
-notElem : OK, 100 tests.
-elemIndex : OK, 100 tests.
-elemIndices : OK, 100 tests.
-all : OK, 100 tests.
-any : OK, 100 tests.
-append : OK, 100 tests.
-compare : OK, 100 tests.
-concat : OK, 100 tests.
-cons : OK, 100 tests.
-eq : OK, 100 tests.
-filter : OK, 100 tests.
-find : OK, 100 tests.
-findIndex : OK, 100 tests.
-findIndices : OK, 100 tests.
-foldl : OK, 100 tests.
-foldl' : OK, 100 tests.
-foldl1 : OK, 100 tests.
-foldl1' : OK, 100 tests.
-foldr1 : OK, 100 tests.
-foldr : OK, 100 tests.
-mapAccumL : OK, 100 tests.
-mapAccumR : OK, 100 tests.
-unfoldr : OK, 100 tests.
-scanl : OK, 100 tests.
-scanl1 : OK, 100 tests.
-scanr : OK, 100 tests.
-scanr1 : OK, 100 tests.
-head : OK, 100 tests.
-init : OK, 100 tests.
-last : OK, 100 tests.
-maximum : OK, 100 tests.
-minimum : OK, 100 tests.
-tail : OK, 100 tests.
-isPrefixOf : OK, 100 tests.
-length : OK, 100 tests.
-map : OK, 100 tests.
-null : OK, 100 tests.
-reverse : OK, 100 tests.
-snoc : OK, 100 tests.
-transpose : OK, 100 tests.
-replicate : OK, 100 tests.
-take : OK, 100 tests.
-drop : OK, 100 tests.
-splitAt : OK, 100 tests.
-takeWhile : OK, 100 tests.
-dropWhile : OK, 100 tests.
-break : OK, 100 tests.
-span : OK, 100 tests.
-group : OK, 100 tests.
-inits : OK, 100 tests.
-tails : OK, 100 tests.
-elem : OK, 100 tests.
-notElem : OK, 100 tests.
-lines : OK, 100 tests.
-elemIndex : OK, 100 tests.
-elemIndices : OK, 100 tests.
-lazy loop/loop fusion : OK, 100 tests.
-loop/loop fusion : OK, 100 tests.
-loop/loop wrapper elim : OK, 100 tests.
-sequence association : OK, 100 tests.
-up/up loop fusion: OK, 100 tests.
-down/down loop fusion: OK, 100 tests.
-noAcc/noAcc loop fusion: OK, 100 tests.
-noAcc/up loop fusion: OK, 100 tests.
-up/noAcc loop fusion: OK, 100 tests.
-noAcc/down loop fusion: OK, 100 tests.
-down/noAcc loop fusion: OK, 100 tests.
-map/map loop fusion: OK, 100 tests.
-filter/filter loop fusion: OK, 100 tests.
-map/filter loop fusion: OK, 100 tests.
-filter/map loop fusion: OK, 100 tests.
-map/noAcc loop fusion: OK, 100 tests.
-noAcc/map loop fusion: OK, 100 tests.
-map/up loop fusion: OK, 100 tests.
-up/map loop fusion: OK, 100 tests.
-map/down loop fusion: OK, 100 tests.
-down/map loop fusion: OK, 100 tests.
-filter/noAcc loop fusion: OK, 100 tests.
-noAcc/filter loop fusion: OK, 100 tests.
-filter/up loop fusion: OK, 100 tests.
-up/filter loop fusion: OK, 100 tests.
-filter/down loop fusion: OK, 100 tests.
-down/filter loop fusion: OK, 100 tests.
-length/loop fusion : OK, 100 tests.
-length/loop fusion : OK, 100 tests.
-length/loop fusion : OK, 100 tests.
-length/loop fusion : OK, 100 tests.
diff --git a/testsuite/tests/lib/Data.ByteString/bytestring002.hs b/testsuite/tests/lib/Data.ByteString/bytestring002.hs
deleted file mode 100644
index 23d6cf270f..0000000000
--- a/testsuite/tests/lib/Data.ByteString/bytestring002.hs
+++ /dev/null
@@ -1,6 +0,0 @@
---
--- The unix wc -l program
---
-import qualified Data.ByteString as B
-
-main = print . B.count 10 =<< B.getContents
diff --git a/testsuite/tests/lib/Data.ByteString/bytestring002.stdin b/testsuite/tests/lib/Data.ByteString/bytestring002.stdin
deleted file mode 100644
index abffbabe44..0000000000
--- a/testsuite/tests/lib/Data.ByteString/bytestring002.stdin
+++ /dev/null
@@ -1,1000 +0,0 @@
-A
-a
-aa
-aal
-aalii
-aam
-Aani
-aardvark
-aardwolf
-Aaron
-Aaronic
-Aaronical
-Aaronite
-Aaronitic
-Aaru
-Ab
-aba
-Ababdeh
-Ababua
-abac
-abaca
-abacate
-abacay
-abacinate
-abacination
-abaciscus
-abacist
-aback
-abactinal
-abactinally
-abaction
-abactor
-abaculus
-abacus
-Abadite
-abaff
-abaft
-abaisance
-abaiser
-abaissed
-abalienate
-abalienation
-abalone
-Abama
-abampere
-abandon
-abandonable
-abandoned
-abandonedly
-abandonee
-abandoner
-abandonment
-Abanic
-Abantes
-abaptiston
-Abarambo
-Abaris
-abarthrosis
-abarticular
-abarticulation
-abas
-abase
-abased
-abasedly
-abasedness
-abasement
-abaser
-Abasgi
-abash
-abashed
-abashedly
-abashedness
-abashless
-abashlessly
-abashment
-abasia
-abasic
-abask
-Abassin
-abastardize
-abatable
-abate
-abatement
-abater
-abatis
-abatised
-abaton
-abator
-abattoir
-Abatua
-abature
-abave
-abaxial
-abaxile
-abaze
-abb
-Abba
-abbacomes
-abbacy
-Abbadide
-abbas
-abbasi
-abbassi
-Abbasside
-abbatial
-abbatical
-abbess
-abbey
-abbeystede
-Abbie
-abbot
-abbotcy
-abbotnullius
-abbotship
-abbreviate
-abbreviately
-abbreviation
-abbreviator
-abbreviatory
-abbreviature
-Abby
-abcoulomb
-abdal
-abdat
-Abderian
-Abderite
-abdest
-abdicable
-abdicant
-abdicate
-abdication
-abdicative
-abdicator
-Abdiel
-abditive
-abditory
-abdomen
-abdominal
-Abdominales
-abdominalian
-abdominally
-abdominoanterior
-abdominocardiac
-abdominocentesis
-abdominocystic
-abdominogenital
-abdominohysterectomy
-abdominohysterotomy
-abdominoposterior
-abdominoscope
-abdominoscopy
-abdominothoracic
-abdominous
-abdominovaginal
-abdominovesical
-abduce
-abducens
-abducent
-abduct
-abduction
-abductor
-Abe
-abeam
-abear
-abearance
-abecedarian
-abecedarium
-abecedary
-abed
-abeigh
-Abel
-abele
-Abelia
-Abelian
-Abelicea
-Abelite
-abelite
-Abelmoschus
-abelmosk
-Abelonian
-abeltree
-Abencerrages
-abenteric
-abepithymia
-Aberdeen
-aberdevine
-Aberdonian
-Aberia
-aberrance
-aberrancy
-aberrant
-aberrate
-aberration
-aberrational
-aberrator
-aberrometer
-aberroscope
-aberuncator
-abet
-abetment
-abettal
-abettor
-abevacuation
-abey
-abeyance
-abeyancy
-abeyant
-abfarad
-abhenry
-abhiseka
-abhominable
-abhor
-abhorrence
-abhorrency
-abhorrent
-abhorrently
-abhorrer
-abhorrible
-abhorring
-Abhorson
-abidal
-abidance
-abide
-abider
-abidi
-abiding
-abidingly
-abidingness
-Abie
-Abies
-abietate
-abietene
-abietic
-abietin
-Abietineae
-abietineous
-abietinic
-Abiezer
-Abigail
-abigail
-abigailship
-abigeat
-abigeus
-abilao
-ability
-abilla
-abilo
-abintestate
-abiogenesis
-abiogenesist
-abiogenetic
-abiogenetical
-abiogenetically
-abiogenist
-abiogenous
-abiogeny
-abiological
-abiologically
-abiology
-abiosis
-abiotic
-abiotrophic
-abiotrophy
-Abipon
-abir
-abirritant
-abirritate
-abirritation
-abirritative
-abiston
-Abitibi
-abiuret
-abject
-abjectedness
-abjection
-abjective
-abjectly
-abjectness
-abjoint
-abjudge
-abjudicate
-abjudication
-abjunction
-abjunctive
-abjuration
-abjuratory
-abjure
-abjurement
-abjurer
-abkar
-abkari
-Abkhas
-Abkhasian
-ablach
-ablactate
-ablactation
-ablare
-ablastemic
-ablastous
-ablate
-ablation
-ablatitious
-ablatival
-ablative
-ablator
-ablaut
-ablaze
-able
-ableeze
-ablegate
-ableness
-ablepharia
-ablepharon
-ablepharous
-Ablepharus
-ablepsia
-ableptical
-ableptically
-abler
-ablest
-ablewhackets
-ablins
-abloom
-ablow
-ablude
-abluent
-ablush
-ablution
-ablutionary
-abluvion
-ably
-abmho
-Abnaki
-abnegate
-abnegation
-abnegative
-abnegator
-Abner
-abnerval
-abnet
-abneural
-abnormal
-abnormalism
-abnormalist
-abnormality
-abnormalize
-abnormally
-abnormalness
-abnormity
-abnormous
-abnumerable
-Abo
-aboard
-Abobra
-abode
-abodement
-abody
-abohm
-aboil
-abolish
-abolisher
-abolishment
-abolition
-abolitionary
-abolitionism
-abolitionist
-abolitionize
-abolla
-aboma
-abomasum
-abomasus
-abominable
-abominableness
-abominably
-abominate
-abomination
-abominator
-abomine
-Abongo
-aboon
-aborad
-aboral
-aborally
-abord
-aboriginal
-aboriginality
-aboriginally
-aboriginary
-aborigine
-abort
-aborted
-aborticide
-abortient
-abortifacient
-abortin
-abortion
-abortional
-abortionist
-abortive
-abortively
-abortiveness
-abortus
-abouchement
-abound
-abounder
-abounding
-aboundingly
-about
-abouts
-above
-aboveboard
-abovedeck
-aboveground
-aboveproof
-abovestairs
-abox
-abracadabra
-abrachia
-abradant
-abrade
-abrader
-Abraham
-Abrahamic
-Abrahamidae
-Abrahamite
-Abrahamitic
-abraid
-Abram
-Abramis
-abranchial
-abranchialism
-abranchian
-Abranchiata
-abranchiate
-abranchious
-abrasax
-abrase
-abrash
-abrasiometer
-abrasion
-abrasive
-abrastol
-abraum
-abraxas
-abreact
-abreaction
-abreast
-abrenounce
-abret
-abrico
-abridge
-abridgeable
-abridged
-abridgedly
-abridger
-abridgment
-abrim
-abrin
-abristle
-abroach
-abroad
-Abrocoma
-abrocome
-abrogable
-abrogate
-abrogation
-abrogative
-abrogator
-Abroma
-Abronia
-abrook
-abrotanum
-abrotine
-abrupt
-abruptedly
-abruption
-abruptly
-abruptness
-Abrus
-Absalom
-absampere
-Absaroka
-absarokite
-abscess
-abscessed
-abscession
-abscessroot
-abscind
-abscise
-abscision
-absciss
-abscissa
-abscissae
-abscisse
-abscission
-absconce
-abscond
-absconded
-abscondedly
-abscondence
-absconder
-absconsa
-abscoulomb
-absence
-absent
-absentation
-absentee
-absenteeism
-absenteeship
-absenter
-absently
-absentment
-absentmindedly
-absentness
-absfarad
-abshenry
-Absi
-absinthe
-absinthial
-absinthian
-absinthiate
-absinthic
-absinthin
-absinthine
-absinthism
-absinthismic
-absinthium
-absinthol
-absit
-absmho
-absohm
-absolute
-absolutely
-absoluteness
-absolution
-absolutism
-absolutist
-absolutistic
-absolutistically
-absolutive
-absolutization
-absolutize
-absolutory
-absolvable
-absolvatory
-absolve
-absolvent
-absolver
-absolvitor
-absolvitory
-absonant
-absonous
-absorb
-absorbability
-absorbable
-absorbed
-absorbedly
-absorbedness
-absorbefacient
-absorbency
-absorbent
-absorber
-absorbing
-absorbingly
-absorbition
-absorpt
-absorptance
-absorptiometer
-absorptiometric
-absorption
-absorptive
-absorptively
-absorptiveness
-absorptivity
-absquatulate
-abstain
-abstainer
-abstainment
-abstemious
-abstemiously
-abstemiousness
-abstention
-abstentionist
-abstentious
-absterge
-abstergent
-abstersion
-abstersive
-abstersiveness
-abstinence
-abstinency
-abstinent
-abstinential
-abstinently
-abstract
-abstracted
-abstractedly
-abstractedness
-abstracter
-abstraction
-abstractional
-abstractionism
-abstractionist
-abstractitious
-abstractive
-abstractively
-abstractiveness
-abstractly
-abstractness
-abstractor
-abstrahent
-abstricted
-abstriction
-abstruse
-abstrusely
-abstruseness
-abstrusion
-abstrusity
-absume
-absumption
-absurd
-absurdity
-absurdly
-absurdness
-absvolt
-Absyrtus
-abterminal
-abthain
-abthainrie
-abthainry
-abthanage
-Abu
-abu
-abucco
-abulia
-abulic
-abulomania
-abuna
-abundance
-abundancy
-abundant
-Abundantia
-abundantly
-abura
-aburabozu
-aburban
-aburst
-aburton
-abusable
-abuse
-abusedly
-abusee
-abuseful
-abusefully
-abusefulness
-abuser
-abusion
-abusious
-abusive
-abusively
-abusiveness
-abut
-Abuta
-Abutilon
-abutment
-abuttal
-abutter
-abutting
-abuzz
-abvolt
-abwab
-aby
-abysm
-abysmal
-abysmally
-abyss
-abyssal
-Abyssinian
-abyssobenthonic
-abyssolith
-abyssopelagic
-acacatechin
-acacatechol
-acacetin
-Acacia
-Acacian
-acaciin
-acacin
-academe
-academial
-academian
-Academic
-academic
-academical
-academically
-academicals
-academician
-academicism
-academism
-academist
-academite
-academization
-academize
-Academus
-academy
-Acadia
-acadialite
-Acadian
-Acadie
-Acaena
-acajou
-acaleph
-Acalepha
-Acalephae
-acalephan
-acalephoid
-acalycal
-acalycine
-acalycinous
-acalyculate
-Acalypha
-Acalypterae
-Acalyptrata
-Acalyptratae
-acalyptrate
-Acamar
-acampsia
-acana
-acanaceous
-acanonical
-acanth
-acantha
-Acanthaceae
-acanthaceous
-acanthad
-Acantharia
-Acanthia
-acanthial
-acanthin
-acanthine
-acanthion
-acanthite
-acanthocarpous
-Acanthocephala
-acanthocephalan
-Acanthocephali
-acanthocephalous
-Acanthocereus
-acanthocladous
-Acanthodea
-acanthodean
-Acanthodei
-Acanthodes
-acanthodian
-Acanthodidae
-Acanthodii
-Acanthodini
-acanthoid
-Acantholimon
-acanthological
-acanthology
-acantholysis
-acanthoma
-Acanthomeridae
-acanthon
-Acanthopanax
-Acanthophis
-acanthophorous
-acanthopod
-acanthopodous
-acanthopomatous
-acanthopore
-acanthopteran
-Acanthopteri
-acanthopterous
-acanthopterygian
-Acanthopterygii
-acanthosis
-acanthous
-Acanthuridae
-Acanthurus
-acanthus
-acapnia
-acapnial
-acapsular
-acapu
-acapulco
-acara
-Acarapis
-acardia
-acardiac
-acari
-acarian
-acariasis
-acaricidal
-acaricide
-acarid
-Acarida
-Acaridea
-acaridean
-acaridomatium
-acariform
-Acarina
-acarine
-acarinosis
-acarocecidium
-acarodermatitis
-acaroid
-acarol
-acarologist
-acarology
-acarophilous
-acarophobia
-acarotoxic
-acarpelous
-acarpous
-Acarus
-Acastus
-acatalectic
-acatalepsia
-acatalepsy
-acataleptic
-acatallactic
-acatamathesia
-acataphasia
-acataposis
-acatastasia
-acatastatic
-acate
-acategorical
-acatery
-acatharsia
-acatharsy
-acatholic
-acaudal
-acaudate
-acaulescent
-acauline
-acaulose
-acaulous
-acca
-accede
-accedence
-acceder
-accelerable
-accelerando
-accelerant
-accelerate
-accelerated
-acceleratedly
-acceleration
-accelerative
-accelerator
-acceleratory
-accelerograph
-accelerometer
-accend
-accendibility
-accendible
-accension
-accensor
-accent
-accentless
-accentor
-accentuable
-accentual
-accentuality
-accentually
-accentuate
-accentuation
-accentuator
-accentus
-accept
-acceptability
-acceptable
-acceptableness
-acceptably
-acceptance
-acceptancy
-acceptant
-acceptation
-accepted
-acceptedly
-accepter
-acceptilate
-acceptilation
-acception
-acceptive
-acceptor
-acceptress
-accerse
-accersition
-accersitor
-access
-accessarily
-accessariness
-accessary
-accessaryship
-accessibility
-accessible
-accessibly
-accession
-accessional
-accessioner
-accessive
-accessively
-accessless
-accessorial
-accessorily
-accessoriness
-accessorius
-accessory
-accidence
-accidency
-accident
-accidental
-accidentalism
-accidentalist
-accidentality
-accidentally
-accidentalness
-accidented
-accidential
-accidentiality
-accidently
-accidia
-accidie
-accinge
-accipient
-Accipiter
-accipitral
-accipitrary
-Accipitres
-accipitrine
-accismus
-accite
-acclaim
-acclaimable
-acclaimer
-acclamation
-acclamator
-acclamatory
-acclimatable
-acclimatation
-acclimate
-acclimatement
-acclimation
-acclimatizable
-acclimatization
-acclimatize
-acclimatizer
-acclimature
-acclinal
-acclinate
-acclivitous
-acclivity
-acclivous
-accloy
-accoast
-accoil
-accolade
-accoladed
-accolated
-accolent
-accolle
-accombination
-accommodable
-accommodableness
-accommodate
-accommodately
-accommodateness
-accommodating
-accommodatingly
-accommodation
-accommodational
-accommodative
-accommodativeness
-accommodator
-accompanier
-accompaniment
-accompanimental
-accompanist
-accompany
-accompanyist
-accompletive
-accomplice
-accompliceship
-accomplicity
-accomplish
-accomplishable
-accomplished
-accomplisher
-accomplishment
-accomplisht
-accompt
-accord
-accordable
-accordance
-accordancy
-accordant
diff --git a/testsuite/tests/lib/Data.ByteString/bytestring002.stdout b/testsuite/tests/lib/Data.ByteString/bytestring002.stdout
deleted file mode 100644
index 83b33d238d..0000000000
--- a/testsuite/tests/lib/Data.ByteString/bytestring002.stdout
+++ /dev/null
@@ -1 +0,0 @@
-1000
diff --git a/testsuite/tests/lib/Data.ByteString/bytestring003.hs b/testsuite/tests/lib/Data.ByteString/bytestring003.hs
deleted file mode 100644
index c31ab8d17f..0000000000
--- a/testsuite/tests/lib/Data.ByteString/bytestring003.hs
+++ /dev/null
@@ -1,36 +0,0 @@
-{-# OPTIONS -cpp #-}
-
---
--- 'sums' benchmark from the great language shootout
---
-
-import System.IO
-import qualified Data.ByteString as B
-import Data.ByteString (ByteString)
-import Data.ByteString.Unsafe (unsafeTail,unsafeIndex)
-import Data.Char -- seems to help!
-
-#define STRICT2(f) f a b | a `seq` b `seq` False = undefined
-
-main = print . go 0 =<< B.getContents
-
-STRICT2(go)
-go i ps
- | B.null ps = i
- | x == 45 = neg 0 xs
- | otherwise = pos (parse x) xs
- where
- (x, xs) = (ps `unsafeIndex` 0, unsafeTail ps)
-
- STRICT2(neg)
- neg n qs | x == 10 = go (i-n) xs
- | otherwise = neg (parse x + (10 * n)) xs
- where (x, xs) = (qs `unsafeIndex` 0, unsafeTail qs)
-
- STRICT2(pos)
- pos n qs | x == 10 = go (i+n) xs
- | otherwise = pos (parse x + (10 * n)) xs
- where (x, xs) = (qs `unsafeIndex` 0, unsafeTail qs)
-
-parse w = fromIntegral (w - 48) :: Int
-{-# INLINE parse #-}
diff --git a/testsuite/tests/lib/Data.ByteString/bytestring003.stdin b/testsuite/tests/lib/Data.ByteString/bytestring003.stdin
deleted file mode 100644
index 956aba1447..0000000000
--- a/testsuite/tests/lib/Data.ByteString/bytestring003.stdin
+++ /dev/null
@@ -1,1000 +0,0 @@
-276
-498
--981
-770
--401
-702
-966
-950
--853
--53
--293
-604
-288
-892
--697
-204
-96
-408
-880
--7
--817
-422
--261
--485
--77
-826
-184
-864
--751
-626
-812
--369
--353
--371
-488
--83
--659
-24
-524
--21
-840
--757
--17
--973
--843
-260
-858
--389
--521
--99
-482
--561
--213
-630
-766
-932
-112
--419
--877
-762
-266
--837
-170
-834
-746
-764
-922
--89
-576
--63
-90
-684
-316
-506
--959
-708
-70
-252
--747
-342
--593
--895
--937
--707
-350
-588
--201
--683
--113
--511
--867
-322
-202
-472
-150
--9
--643
-28
-336
-86
--925
-836
--473
--451
--971
--805
--619
-84
--67
-806
-270
-366
-334
--555
--557
--331
--409
--553
--145
--71
-528
-490
-492
-828
-628
--961
-536
--859
--271
-974
--671
--749
-414
--257
-778
-56
-598
--437
--899
--785
--987
-32
--999
-132
--821
--209
-402
--543
-194
--967
-294
--943
--285
--483
--97
-660
--481
--829
--309
--597
--855
-80
--355
-192
--823
-436
-916
-282
--629
-612
--329
--535
-780
--47
-706
-110
-756
--857
--933
--345
--523
-718
--31
-902
-678
-540
-698
-456
--399
-126
-412
--563
--321
--487
--641
--195
--199
--955
-772
-570
-18
--217
-886
-984
--721
--995
-46
--989
-946
-64
-716
--719
--869
--579
-776
-450
-936
-980
--439
--977
--455
--997
-6
-268
--269
--421
-328
-352
-578
--575
-476
-976
--57
--469
-544
-582
--43
-510
--939
--581
--337
--203
--737
--827
-852
--279
--803
--911
--865
-548
-48
--75
-416
--275
-688
--255
--687
--461
--233
-420
-912
--901
--299
-12
-568
-694
--411
--883
--327
--361
--339
-646
--137
--905
-670
-686
--131
--849
--825
-256
-228
--841
-68
-368
--909
-242
-298
-118
-10
-222
-954
--493
--459
--445
-608
--765
-34
-468
--715
-690
--185
--551
--571
--241
-292
-92
-768
--923
-956
-614
-8
-730
-208
--417
-300
-136
--59
--251
--539
-166
-798
-866
-454
--391
--317
-668
-502
--15
-994
-854
--189
-666
-446
--565
--5
-42
--227
--87
--779
-26
-312
-354
-754
-396
--515
-220
-872
-654
-88
--667
-250
-572
-952
-72
-982
-972
--529
--471
--533
--427
-538
-154
--457
--819
-750
-152
-452
--41
-838
--489
-418
--649
--637
--197
-74
-394
--653
--727
--435
--23
-348
-638
--611
-914
--357
--743
--685
-580
--247
--577
-54
--931
--3
-558
--793
--443
--759
-162
--811
-384
-720
--117
-900
--519
--39
-744
-432
-286
--873
-380
--167
--283
-430
--155
--755
-206
-100
-364
--677
-332
--567
-382
--605
--181
-676
--475
--845
-910
-546
-14
-398
-616
--769
-424
-992
--235
--239
-774
-478
--919
-168
--771
--773
--69
--509
-930
-550
--463
-178
--861
--761
--795
-234
--831
--61
--979
--851
--665
--709
-896
-742
--123
-590
--693
--887
--379
-144
--717
-20
-174
-82
-464
-30
--969
--349
--531
--799
--661
--647
--623
-878
-148
--545
-238
--259
-554
-726
--37
--797
-98
-78
--591
--975
-962
-120
-906
--207
-656
--171
-652
-188
-672
--133
--91
-224
-818
--333
--839
--499
-22
--739
-142
-378
--403
--315
-370
-284
-122
-230
--527
--127
-442
-534
-160
-722
-262
--657
-304
-258
--103
-960
--495
--265
-634
--101
-480
--363
-308
-76
--949
--585
-904
-146
--703
-164
-850
-246
-732
--725
-566
-274
--163
--935
--681
--229
-254
--733
--547
--273
--903
-736
--711
-794
-392
--655
--549
-808
--429
-484
--701
--617
-804
-36
--775
--335
--927
-714
--177
--325
--413
--963
-114
--253
--789
--645
-40
-434
-898
-924
--19
-738
-788
-280
--121
-594
--913
-426
-816
--373
--45
-340
--109
--323
-58
--249
-940
--297
-988
-998
--607
--745
--633
--115
-996
--893
-696
-400
-848
-500
--263
-562
--807
--105
--603
-658
--73
--863
-448
-680
--157
--161
-728
-814
--477
--375
-1000
--631
--991
-362
-156
--187
--705
--917
--449
--741
-556
-440
--589
--11
--359
--891
--801
--153
--381
-938
--173
--243
-618
--599
--497
-486
-128
-790
-460
--27
--305
--205
--215
-324
--341
-50
-458
-52
--621
-874
-386
-560
--569
--51
-802
-786
-920
--425
-466
-444
--507
--915
-346
-622
--679
-784
--689
-388
-508
--613
--313
--447
-564
--897
--211
--225
--615
--367
-186
-894
--65
--453
--245
-602
-496
--651
--601
-820
-226
--695
--119
-372
-180
-94
-214
-542
-648
--871
-592
-584
-824
-796
-374
--945
--311
-516
-942
--221
--433
-200
--465
--953
-870
-868
--879
-518
-356
--223
-682
-990
--191
--541
--951
--921
--319
--169
--291
--289
-792
-876
-306
--491
-326
--885
-62
-514
--929
-318
--231
-632
-44
--107
-644
--267
--343
--847
-934
-734
--505
--351
-574
--627
-636
--93
--431
--835
-428
--183
--151
-2
--813
--595
-958
--141
-692
--385
-610
--179
-376
-948
-198
--675
-964
--907
-918
--165
--1
-406
-748
--111
-532
--55
--281
-740
-504
-236
--29
-662
--713
--537
-196
--587
-822
--135
-700
--35
-674
--407
-240
--673
--669
--393
-470
--525
--875
--383
--625
-296
--85
--147
--277
-800
--691
--143
-16
--983
--303
-290
--139
-172
-320
-512
-596
-640
-664
--791
--783
--387
--735
--467
--301
-810
-134
-216
-278
-176
-606
-140
--787
-978
-586
-890
-882
--753
--13
-970
--941
--175
--777
--809
--441
--347
--377
-390
--423
-842
-642
-190
-302
-438
-704
-310
--49
-124
--781
--287
-724
--767
-830
-620
--295
-244
--159
--307
--397
-66
--237
-314
--79
-624
-710
-272
--365
-928
-856
-138
--479
-520
-832
-862
-760
-846
--81
-106
--513
--193
-650
-782
--517
-944
-218
-712
--663
--559
-462
--635
--25
-182
-530
-844
-330
--833
-102
--881
-108
--947
--763
--405
-232
-410
-104
--729
--149
--889
-888
-360
-968
-908
-116
--815
--129
-522
--723
--993
-860
--503
-926
--219
--415
-60
-158
--609
--501
-986
--699
--583
-884
-212
-210
--957
-526
--985
-552
-344
--395
--95
-338
-248
-494
-130
-404
-358
-600
--639
--125
--33
--965
-752
-474
--731
-758
--573
-4
-38
-264
diff --git a/testsuite/tests/lib/Data.ByteString/bytestring003.stdout b/testsuite/tests/lib/Data.ByteString/bytestring003.stdout
deleted file mode 100644
index 1b79f38e25..0000000000
--- a/testsuite/tests/lib/Data.ByteString/bytestring003.stdout
+++ /dev/null
@@ -1 +0,0 @@
-500
diff --git a/testsuite/tests/lib/Data.ByteString/bytestring004.hs b/testsuite/tests/lib/Data.ByteString/bytestring004.hs
deleted file mode 100644
index 5c4df86a90..0000000000
--- a/testsuite/tests/lib/Data.ByteString/bytestring004.hs
+++ /dev/null
@@ -1,564 +0,0 @@
-#!/usr/bin/env runhaskell
---
--- Uses multi-param type classes
---
-
-import Test.QuickCheck.Batch
-import Test.QuickCheck
-import Text.Show.Functions
-
-import Data.Char
-import Data.Int
-import Data.List
-import Data.Maybe
-import Data.Word
-
-import System.IO
-import System.Environment
-import System.IO.Unsafe
-import System.Random
-
-import Control.Monad ( liftM2 )
-import Control.Monad.Instances ()
-
-import Text.Printf
-import Debug.Trace
-
-import Foreign.Ptr
-
-import Data.ByteString.Lazy (ByteString(..), pack , unpack)
-import qualified Data.ByteString.Lazy as L
-import qualified Data.ByteString.Lazy.Internal as L
-
-import Data.ByteString.Fusion
-import qualified Data.ByteString as P
-import qualified Data.ByteString.Lazy as L
-
-import qualified Data.ByteString.Char8 as PC
-import qualified Data.ByteString.Lazy.Char8 as LC
-import qualified Data.ByteString as P
-import qualified Data.ByteString.Internal as P
-import qualified Data.ByteString.Char8 as C
-import qualified Data.ByteString.Lazy.Char8 as D
-import Data.ByteString.Fusion
-
-import Prelude hiding (abs)
-
--- Enable this to get verbose test output. Including the actual tests.
-debug = False
-
-mytest :: Testable a => a -> Int -> IO ()
-mytest a n = mycheck defaultConfig
- { configMaxTest=n
- , configEvery= \n args -> if debug then show n ++ ":\n" ++ unlines args else [] } a
-
-mycheck :: Testable a => Config -> a -> IO ()
-mycheck config a =
- do let rnd = mkStdGen 99
- mytests config (evaluate a) rnd 0 0 []
-
-mytests :: Config -> Gen Result -> StdGen -> Int -> Int -> [[String]] -> IO ()
-mytests config gen rnd0 ntest nfail stamps
- | ntest == configMaxTest config = do done "OK," ntest stamps
- | nfail == configMaxFail config = do done "Arguments exhausted after" ntest stamps
- | otherwise =
- do putStr (configEvery config ntest (arguments result)) >> hFlush stdout
- case ok result of
- Nothing ->
- mytests config gen rnd1 ntest (nfail+1) stamps
- Just True ->
- mytests config gen rnd1 (ntest+1) nfail (stamp result:stamps)
- Just False ->
- putStr ( "Falsifiable after "
- ++ show ntest
- ++ " tests:\n"
- ++ unlines (arguments result)
- ) >> hFlush stdout
- where
- result = generate (configSize config ntest) rnd2 gen
- (rnd1,rnd2) = split rnd0
-
-done :: String -> Int -> [[String]] -> IO ()
-done mesg ntest stamps =
- do putStr ( mesg ++ " " ++ show ntest ++ " tests" ++ table )
- where
- table = display
- . map entry
- . reverse
- . sort
- . map pairLength
- . group
- . sort
- . filter (not . null)
- $ stamps
-
- display [] = ".\n"
- display [x] = " (" ++ x ++ ").\n"
- display xs = ".\n" ++ unlines (map (++ ".") xs)
-
- pairLength xss@(xs:_) = (length xss, xs)
- entry (n, xs) = percentage n ntest
- ++ " "
- ++ concat (intersperse ", " xs)
-
- percentage n m = show ((100 * n) `div` m) ++ "%"
-
-------------------------------------------------------------------------
-
-instance Arbitrary Char where
- arbitrary = choose ('a', 'i')
- coarbitrary c = variant (ord c `rem` 4)
-
-instance (Arbitrary a, Arbitrary b) => Arbitrary (PairS a b) where
- arbitrary = liftM2 (:*:) arbitrary arbitrary
- coarbitrary (a :*: b) = coarbitrary a . coarbitrary b
-
-instance Arbitrary Word8 where
- arbitrary = choose (97, 105)
- coarbitrary c = variant (fromIntegral ((fromIntegral c) `rem` 4))
-
-instance Arbitrary Int64 where
- arbitrary = sized $ \n -> choose (-fromIntegral n,fromIntegral n)
- coarbitrary n = variant (fromIntegral (if n >= 0 then 2*n else 2*(-n) + 1))
-
-instance Arbitrary a => Arbitrary (MaybeS a) where
- arbitrary = do a <- arbitrary ; elements [NothingS, JustS a]
- coarbitrary NothingS = variant 0
- coarbitrary _ = variant 1 -- ok?
-
-{-
-instance Arbitrary Char where
- arbitrary = choose ('\0', '\255') -- since we have to test words, unlines too
- coarbitrary c = variant (ord c `rem` 16)
-
-instance Arbitrary Word8 where
- arbitrary = choose (minBound, maxBound)
- coarbitrary c = variant (fromIntegral ((fromIntegral c) `rem` 16))
--}
-
-instance Random Word8 where
- randomR = integralRandomR
- random = randomR (minBound,maxBound)
-
-instance Random Int64 where
- randomR = integralRandomR
- random = randomR (minBound,maxBound)
-
-integralRandomR :: (Integral a, RandomGen g) => (a,a) -> g -> (a,g)
-integralRandomR (a,b) g = case randomR (fromIntegral a :: Integer,
- fromIntegral b :: Integer) g of
- (x,g) -> (fromIntegral x, g)
-
-instance Arbitrary L.ByteString where
- arbitrary = arbitrary >>= return . L.fromChunks . filter (not. P.null) -- maintain the invariant.
- coarbitrary s = coarbitrary (L.unpack s)
-
-instance Arbitrary P.ByteString where
- arbitrary = P.pack `fmap` arbitrary
- coarbitrary s = coarbitrary (P.unpack s)
-
-------------------------------------------------------------------------
---
--- We're doing two forms of testing here. Firstly, model based testing.
--- For our Lazy and strict bytestring types, we have model types:
---
--- i.e. Lazy == Byte
--- \\ //
--- List
---
--- That is, the Lazy type can be modeled by functions in both the Byte
--- and List type. For each of the 3 models, we have a set of tests that
--- check those types match.
---
--- The Model class connects a type and its model type, via a conversion
--- function.
---
---
-class Model a b where
- model :: a -> b -- get the abstract vale from a concrete value
-
---
--- Connecting our Lazy and Strict types to their models. We also check
--- the data invariant on Lazy types.
---
--- These instances represent the arrows in the above diagram
---
-instance Model B P where model = abstr . checkInvariant
-instance Model P [W] where model = P.unpack
-instance Model P [Char] where model = PC.unpack
-instance Model B [W] where model = L.unpack . checkInvariant
-instance Model B [Char] where model = LC.unpack . checkInvariant
-
--- Types are trivially modeled by themselves
-instance Model Bool Bool where model = id
-instance Model Int Int where model = id
-instance Model Int64 Int64 where model = id
-instance Model Int64 Int where model = fromIntegral
-instance Model Word8 Word8 where model = id
-instance Model Ordering Ordering where model = id
-
--- More structured types are modeled recursively, using the NatTrans class from Gofer.
-class (Functor f, Functor g) => NatTrans f g where
- eta :: f a -> g a
-
--- The transformation of the same type is identity
-instance NatTrans [] [] where eta = id
-instance NatTrans Maybe Maybe where eta = id
-instance NatTrans ((->) X) ((->) X) where eta = id
-instance NatTrans ((->) W) ((->) W) where eta = id
-
--- We have a transformation of pairs, if the pairs are in Model
-instance Model f g => NatTrans ((,) f) ((,) g) where eta (f,a) = (model f, a)
-
--- And finally, we can take any (m a) to (n b), if we can Model m n, and a b
-instance (NatTrans m n, Model a b) => Model (m a) (n b) where model x = fmap model (eta x)
-
-------------------------------------------------------------------------
-
--- In a form more useful for QC testing (and it's lazy)
-checkInvariant :: L.ByteString -> L.ByteString
-checkInvariant cs0 = check cs0
- where check L.Empty = L.Empty
- check (L.Chunk c cs)
- | P.null c = error ("invariant violation: " ++ show cs0)
- | otherwise = L.Chunk c (check cs)
-
-abstr :: L.ByteString -> P.ByteString
-abstr = P.concat . L.toChunks
-
--- Some short hand.
-type X = Int
-type W = Word8
-type P = P.ByteString
-type B = L.ByteString
-
-------------------------------------------------------------------------
---
--- These comparison functions handle wrapping and equality.
---
--- A single class for these would be nice, but note that they differe in
--- the number of arguments, and those argument types, so we'd need HList
--- tricks. See here: http://okmij.org/ftp/Haskell/vararg-fn.lhs
---
-
-eq1 f g = \a ->
- model (f a) == g (model a)
-eq2 f g = \a b ->
- model (f a b) == g (model a) (model b)
-eq3 f g = \a b c ->
- model (f a b c) == g (model a) (model b) (model c)
-eq4 f g = \a b c d ->
- model (f a b c d) == g (model a) (model b) (model c) (model d)
-eq5 f g = \a b c d e ->
- model (f a b c d e) == g (model a) (model b) (model c) (model d) (model e)
-
---
--- And for functions that take non-null input
---
-eqnotnull1 f g = \x -> (not (isNull x)) ==> eq1 f g x
-eqnotnull2 f g = \x y -> (not (isNull y)) ==> eq2 f g x y
-eqnotnull3 f g = \x y z -> (not (isNull z)) ==> eq3 f g x y z
-
-class IsNull t where isNull :: t -> Bool
-instance IsNull L.ByteString where isNull = L.null
-instance IsNull P.ByteString where isNull = P.null
-
-main = do
- x <- getArgs
- let n = if null x then 100 else read . head $ x
- mapM_ (\(s,a) -> printf "%-25s: " s >> a n) tests
-
---
--- Test that, after loop fusion, our code behaves the same as the
--- unfused lazy or list models. Use -ddump-simpl to also check that
--- rules are firing for each case.
---
-tests = -- 29/5/06, all tests are fusing:
- [("down/down list", mytest prop_downdown_list) -- checked
- ,("down/filter list", mytest prop_downfilter_list) -- checked
- ,("down/map list", mytest prop_downmap_list) -- checked
- ,("filter/down lazy", mytest prop_filterdown_lazy) -- checked
- ,("filter/down list", mytest prop_filterdown_list) -- checked
- ,("filter/filter lazy", mytest prop_filterfilter_lazy) -- checked
- ,("filter/filter list", mytest prop_filterfilter_list) -- checked
- ,("filter/map lazy", mytest prop_filtermap_lazy) -- checked
- ,("filter/map list", mytest prop_filtermap_list) -- checked
- ,("filter/up lazy", mytest prop_filterup_lazy) -- checked
- ,("filter/up list", mytest prop_filterup_list) -- checked
- ,("map/down lazy", mytest prop_mapdown_lazy) -- checked
- ,("map/down list", mytest prop_mapdown_list) -- checked
- ,("map/filter lazy", mytest prop_mapfilter_lazy) -- checked
- ,("map/filter list", mytest prop_mapfilter_list) -- checked
- ,("map/map lazy", mytest prop_mapmap_lazy) -- checked
- ,("map/map list", mytest prop_mapmap_list) -- checked
- ,("map/up lazy", mytest prop_mapup_lazy) -- checked
- ,("map/up list", mytest prop_mapup_list) -- checked
- ,("up/filter lazy", mytest prop_upfilter_lazy) -- checked
- ,("up/filter list", mytest prop_upfilter_list) -- checked
- ,("up/map lazy", mytest prop_upmap_lazy) -- checked
- ,("up/map list", mytest prop_upmap_list) -- checked
- ,("up/up lazy", mytest prop_upup_lazy) -- checked
- ,("up/up list", mytest prop_upup_list) -- checked
- ,("noacc/noacc lazy", mytest prop_noacc_noacc_lazy) -- checked
- ,("noacc/noacc list", mytest prop_noacc_noacc_list) -- checked
- ,("noacc/up lazy", mytest prop_noacc_up_lazy) -- checked
- ,("noacc/up list", mytest prop_noacc_up_list) -- checked
- ,("up/noacc lazy", mytest prop_up_noacc_lazy) -- checked
- ,("up/noacc list", mytest prop_up_noacc_list) -- checked
- ,("map/noacc lazy", mytest prop_map_noacc_lazy) -- checked
- ,("map/noacc list", mytest prop_map_noacc_list) -- checked
- ,("noacc/map lazy", mytest prop_noacc_map_lazy) -- checked
- ,("noacc/map list", mytest prop_noacc_map_list) -- checked
- ,("filter/noacc lazy", mytest prop_filter_noacc_lazy) -- checked
- ,("filter/noacc list", mytest prop_filter_noacc_list) -- checked
- ,("noacc/filter lazy", mytest prop_noacc_filter_lazy) -- checked
- ,("noacc/filter list", mytest prop_noacc_filter_list) -- checked
- ,("noacc/down lazy", mytest prop_noacc_down_lazy) -- checked
- ,("noacc/down list", mytest prop_noacc_down_list) -- checked
--- ,("down/noacc lazy", mytest prop_down_noacc_lazy) -- checked
- ,("down/noacc list", mytest prop_down_noacc_list) -- checked
-
-
- ,("length/loop list", mytest prop_lengthloop_list)
--- ,("length/loop lazy", mytest prop_lengthloop_lazy)
- ,("maximum/loop list", mytest prop_maximumloop_list)
--- ,("maximum/loop lazy", mytest prop_maximumloop_lazy)
- ,("minimum/loop list", mytest prop_minimumloop_list)
--- ,("minimum/loop lazy", mytest prop_minimumloop_lazy)
-
- ]
-
-prop_upup_list = eq3
- (\f g -> P.foldl f (0::Int) . P.scanl g (0::W))
- ((\f g -> foldl f (0::Int) . scanl g (0::W)) :: (X -> W -> X) -> (W -> W -> W) -> [W] -> X)
-
-prop_upup_lazy = eq3
- (\f g -> L.foldl f (0::X) . L.scanl g (0::W))
- (\f g -> P.foldl f (0::X) . P.scanl g (0::W))
-
-prop_mapmap_list = eq3
- (\f g -> P.map f . P.map g)
- ((\f g -> map f . map g) :: (W -> W) -> (W -> W) -> [W] -> [W])
-
-prop_mapmap_lazy = eq3
- (\f g -> L.map f . L.map g)
- (\f g -> P.map f . P.map g)
-
-prop_filterfilter_list = eq3
- (\f g -> P.filter f . P.filter g)
- ((\f g -> filter f . filter g) :: (W -> Bool) -> (W -> Bool) -> [W] -> [W])
-
-prop_filterfilter_lazy = eq3
- (\f g -> L.filter f . L.filter g)
- (\f g -> P.filter f . P.filter g)
-
-prop_mapfilter_list = eq3
- (\f g -> P.filter f . P.map g)
- ((\f g -> filter f . map g) :: (W -> Bool) -> (W -> W) -> [W] -> [W])
-
-prop_mapfilter_lazy = eq3
- (\f g -> L.filter f . L.map g)
- (\f g -> P.filter f . P.map g)
-
-prop_filtermap_list = eq3
- (\f g -> P.map f . P.filter g)
- ((\f g -> map f . filter g) :: (W -> W) -> (W -> Bool) -> [W] -> [W])
-
-prop_filtermap_lazy = eq3
- (\f g -> L.map f . L.filter g)
- (\f g -> P.map f . P.filter g)
-
-prop_mapup_list = eq3
- (\f g -> P.foldl g (0::W) . P.map f)
- ((\f g -> foldl g (0::W) . map f) :: (W -> W) -> (W -> W -> W) -> [W] -> W)
-
-prop_mapup_lazy = eq3
- (\f g -> L.foldl g (0::W) . L.map f) -- n.b. scan doesn't fuse here, atm
- (\f g -> P.foldl g (0::W) . P.map f)
-
-prop_upmap_list = eq3
- (\f g -> P.map f . P.scanl g (0::W))
- ((\f g -> map f . scanl g (0::W)) :: (W -> W) -> (W -> W -> W) -> [W] -> [W])
-
-prop_upmap_lazy = eq3
- (\f g -> L.map f . L.scanl g (0::W))
- (\f g -> P.map f . P.scanl g (0::W))
-
-prop_filterup_list = eq3
- (\f g -> P.foldl g (0::W) . P.filter f)
- ((\f g -> foldl g (0::W) . filter f) :: (W -> Bool) -> (W -> W -> W) -> [W] -> W)
-
-prop_filterup_lazy = eq3
- (\f g -> L.foldl g (0::W) . L.filter f)
- (\f g -> P.foldl g (0::W) . P.filter f)
-
-prop_upfilter_list = eq3
- (\f g -> P.filter f . P.scanl g (0::W))
- ((\f g -> filter f . scanl g (0::W)) :: (W -> Bool) -> (W -> W -> W) -> [W] -> [W])
-
-prop_upfilter_lazy = eq3
- (\f g -> L.filter f . L.scanl g (0::W))
- (\f g -> P.filter f . P.scanl g (0::W))
-
-prop_downdown_list = eq3
- (\f g -> P.foldr f (0::X) . P.scanr g (0::W))
- ((\f g -> foldr f (0::X) . scanr g (0::W)) :: (W -> X -> X) -> (W -> W -> W) -> [W] -> X)
-
-{-
--- no lazy scanr yet
-prop_downdown_lazy = eq3
- (\f g -> L.foldr f (0::X) . L.scanr g (0::W))
- (\f g -> P.foldr f (0::X) . P.scanr g (0::W))
--}
-
-prop_mapdown_list = eq3
- (\f g -> P.foldr g (0::W) . P.map f)
- ((\f g -> foldr g (0::W) . map f) :: (W -> W) -> (W -> W -> W) -> [W] -> W)
-
-prop_mapdown_lazy = eq3
- (\f g -> L.foldr g (0::W) . L.map f) -- n.b. scan doesn't fuse here, atm
- (\f g -> P.foldr g (0::W) . P.map f)
-
-prop_downmap_list = eq3
- (\f g -> P.map f . P.scanr g (0::W))
- ((\f g -> map f . scanr g (0::W)) :: (W -> W) -> (W -> W -> W) -> [W] -> [W])
-
-{-
-prop_downmap_lazy = eq3
- (\f g -> L.map f . L.scanr g (0::W))
- (\f g -> P.map f . P.scanr g (0::W))
--}
-
-prop_filterdown_list = eq3
- (\f g -> P.foldr g (0::W) . P.filter f)
- ((\f g -> foldr g (0::W) . filter f) :: (W -> Bool) -> (W -> W -> W) -> [W] -> W)
-
-prop_filterdown_lazy = eq3
- (\f g -> L.foldr g (0::W) . L.filter f) -- n.b. scan doesn't fuse here, atm
- (\f g -> P.foldr g (0::W) . P.filter f)
-
-prop_downfilter_list = eq3
- (\f g -> P.filter f . P.scanr g (0::W))
- ((\f g -> filter f . scanr g (0::W)) :: (W -> Bool) -> (W -> W -> W) -> [W] -> [W])
-
-{-
-prop_downfilter_lazy = eq3
- (\f g -> L.filter f . L.scanr g (0::W))
- (\f g -> P.filter f . P.scanr g (0::W))
--}
-
-prop_noacc_noacc_list = eq5
- (\f g h i -> (P.map f . P.filter g) . (P.map h . P.filter i))
- ((\f g h i -> ( map f . filter g) . ( map h . filter i))
- :: (W -> W) -> (W -> Bool) -> (W -> W) -> (W -> Bool) -> [W] -> [W])
-
-prop_noacc_noacc_lazy = eq5
- (\f g h i -> (L.map f . L.filter g) . (L.map h . L.filter i))
- (\f g h i -> (P.map f . P.filter g) . (P.map h . P.filter i))
-
-prop_noacc_up_list = eq4
- ( \g h i -> P.foldl g (0::W) . (P.map h . P.filter i))
- ((\g h i -> foldl g (0::W) . ( map h . filter i))
- :: (W -> W -> W) -> (W -> W) -> (W -> Bool) -> [W] -> W)
-
-prop_noacc_up_lazy = eq4
- (\g h i -> L.foldl g (0::W) . (L.map h . L.filter i))
- (\g h i -> P.foldl g (0::W) . (P.map h . P.filter i))
-
-prop_up_noacc_list = eq4
- ( \g h i -> (P.map h . P.filter i) . P.scanl g (0::W))
- ((\g h i -> ( map h . filter i) . scanl g (0::W))
- :: (W -> W -> W) -> (W -> W) -> (W -> Bool) -> [W] -> [W])
-
-prop_up_noacc_lazy = eq4
- (\g h i -> (L.map h . L.filter i) . L.scanl g (0::W))
- (\g h i -> (P.map h . P.filter i) . P.scanl g (0::W))
-
-prop_map_noacc_list = eq4
- ( \g h i -> (P.map h . P.filter i) . P.map g)
- ((\g h i -> ( map h . filter i) . map g)
- :: (W -> W) -> (W -> W) -> (W -> Bool) -> [W] -> [W])
-
-prop_map_noacc_lazy = eq4
- (\g h i -> (L.map h . L.filter i) . L.map g)
- (\g h i -> (P.map h . P.filter i) . P.map g)
-
-prop_noacc_map_list = eq4
- ( \g h i -> P.map g . (P.map h . P.filter i))
- ((\g h i -> map g . ( map h . filter i))
- :: (W -> W) -> (W -> W) -> (W -> Bool) -> [W] -> [W])
-
-prop_noacc_map_lazy = eq4
- (\g h i -> L.map g . (L.map h . L.filter i))
- (\g h i -> P.map g . (P.map h . P.filter i))
-
-prop_filter_noacc_list = eq4
- ( \g h i -> (P.map h . P.filter i) . P.filter g)
- ((\g h i -> ( map h . filter i) . filter g)
- :: (W -> Bool) -> (W -> W) -> (W -> Bool) -> [W] -> [W])
-
-prop_filter_noacc_lazy = eq4
- (\g h i -> (L.map h . L.filter i) . L.filter g)
- (\g h i -> (P.map h . P.filter i) . P.filter g)
-
-prop_noacc_filter_list = eq4
- ( \g h i -> P.filter g . (P.map h . P.filter i))
- ((\g h i -> filter g . ( map h . filter i))
- :: (W -> Bool) -> (W -> W) -> (W -> Bool) -> [W] -> [W])
-
-prop_noacc_filter_lazy = eq4
- (\g h i -> L.filter g . (L.map h . L.filter i))
- (\g h i -> P.filter g . (P.map h . P.filter i))
-
-prop_noacc_down_list = eq4
- ( \g h i -> P.foldr g (0::W) . (P.map h . P.filter i))
- ((\g h i -> foldr g (0::W) . ( map h . filter i))
- :: (W -> W -> W) -> (W -> W) -> (W -> Bool) -> [W] -> W)
-
-prop_noacc_down_lazy = eq4
- (\g h i -> L.foldr g (0::W) . (L.map h . L.filter i))
- (\g h i -> P.foldr g (0::W) . (P.map h . P.filter i))
-
-prop_down_noacc_list = eq4
- ( \g h i -> (P.map h . P.filter i) . P.scanr g (0::W))
- ((\g h i -> ( map h . filter i) . scanr g (0::W))
- :: (W -> W -> W) -> (W -> W) -> (W -> Bool) -> [W] -> [W])
-
-{-
-prop_down_noacc_lazy = eq4
- (\g h i -> (L.map h . L.filter i) . L.scanl g (0::W))
- (\g h i -> (P.map h . P.filter i) . P.scanl g (0::W))
--}
-
-------------------------------------------------------------------------
-
-prop_lengthloop_list = eq2
- (\f -> P.length . P.filter f)
- ((\f -> length . filter f) :: (W -> Bool) -> [W] -> X)
-
-{-
-prop_lengthloop_lazy = eq2
- (\f g -> L.length . L.filter f) -- n.b. scan doesn't fuse here, atm
- (\f g -> P.length . P.filter f)
--}
-
-prop_maximumloop_list = eqnotnull2
- (\f -> P.maximum . P.map f) -- so we don't get null strings
- ((\f -> maximum . map f) :: (W -> W) -> [W] -> W)
-
-{-
-prop_maximumloop_lazy = eq2
- (\f g -> L.maximum . L.filter f) -- n.b. scan doesn't fuse here, atm
- (\f g -> P.maximum . P.filter f)
--}
-
-prop_minimumloop_list = eqnotnull2
- (\f -> P.minimum . P.map f)
- ((\f -> minimum . map f) :: (W -> W) -> [W] -> W)
-
-{-
-prop_minimumloop_lazy = eq2
- (\f g -> L.minimum . L.filter f) -- n.b. scan doesn't fuse here, atm
- (\f g -> P.minimum . P.filter f)
--}
-
diff --git a/testsuite/tests/lib/Data.ByteString/bytestring004.stdout b/testsuite/tests/lib/Data.ByteString/bytestring004.stdout
deleted file mode 100644
index cbc88dbf91..0000000000
--- a/testsuite/tests/lib/Data.ByteString/bytestring004.stdout
+++ /dev/null
@@ -1,45 +0,0 @@
-down/down list : OK, 100 tests.
-down/filter list : OK, 100 tests.
-down/map list : OK, 100 tests.
-filter/down lazy : OK, 100 tests.
-filter/down list : OK, 100 tests.
-filter/filter lazy : OK, 100 tests.
-filter/filter list : OK, 100 tests.
-filter/map lazy : OK, 100 tests.
-filter/map list : OK, 100 tests.
-filter/up lazy : OK, 100 tests.
-filter/up list : OK, 100 tests.
-map/down lazy : OK, 100 tests.
-map/down list : OK, 100 tests.
-map/filter lazy : OK, 100 tests.
-map/filter list : OK, 100 tests.
-map/map lazy : OK, 100 tests.
-map/map list : OK, 100 tests.
-map/up lazy : OK, 100 tests.
-map/up list : OK, 100 tests.
-up/filter lazy : OK, 100 tests.
-up/filter list : OK, 100 tests.
-up/map lazy : OK, 100 tests.
-up/map list : OK, 100 tests.
-up/up lazy : OK, 100 tests.
-up/up list : OK, 100 tests.
-noacc/noacc lazy : OK, 100 tests.
-noacc/noacc list : OK, 100 tests.
-noacc/up lazy : OK, 100 tests.
-noacc/up list : OK, 100 tests.
-up/noacc lazy : OK, 100 tests.
-up/noacc list : OK, 100 tests.
-map/noacc lazy : OK, 100 tests.
-map/noacc list : OK, 100 tests.
-noacc/map lazy : OK, 100 tests.
-noacc/map list : OK, 100 tests.
-filter/noacc lazy : OK, 100 tests.
-filter/noacc list : OK, 100 tests.
-noacc/filter lazy : OK, 100 tests.
-noacc/filter list : OK, 100 tests.
-noacc/down lazy : OK, 100 tests.
-noacc/down list : OK, 100 tests.
-down/noacc list : OK, 100 tests.
-length/loop list : OK, 100 tests.
-maximum/loop list : OK, 100 tests.
-minimum/loop list : OK, 100 tests.
diff --git a/testsuite/tests/lib/Data.ByteString/bytestring005.hs b/testsuite/tests/lib/Data.ByteString/bytestring005.hs
deleted file mode 100644
index 7bd37da004..0000000000
--- a/testsuite/tests/lib/Data.ByteString/bytestring005.hs
+++ /dev/null
@@ -1,1138 +0,0 @@
-#!/usr/bin/env runhaskell
---
--- Uses multi-param type classes
---
-
-import Test.QuickCheck
-import Text.Show.Functions
-
-import Data.Char
-import Data.Int
-import Data.List
-import Data.Maybe
-import Data.Word
-
-import System.IO
-import System.Environment
-import System.IO.Unsafe
-import System.Random
-
-import Control.Monad ( liftM2 )
-import Control.Monad.Instances ()
-
-import Text.Printf
-import Debug.Trace
-
-import Foreign.Ptr
-
-import Data.ByteString.Lazy (ByteString(..), pack , unpack)
-import qualified Data.ByteString.Lazy as L
-import qualified Data.ByteString.Lazy.Internal as L
-
-import Data.ByteString.Fusion
-import qualified Data.ByteString as P
-import qualified Data.ByteString.Unsafe as P
-import qualified Data.ByteString.Lazy as L
-
-import qualified Data.ByteString.Char8 as PC
-import qualified Data.ByteString.Lazy.Char8 as LC
-import qualified Data.ByteString as P
-import qualified Data.ByteString.Internal as P
-import qualified Data.ByteString.Char8 as C
-import qualified Data.ByteString.Lazy.Char8 as D
-import Data.ByteString.Fusion
-
-import Prelude hiding (abs)
-
--- Enable this to get verbose test output. Including the actual tests.
-debug = False
-
-mytest :: Testable a => a -> Int -> IO ()
-mytest a n = mycheck defaultConfig
- { configMaxTest=n
- , configEvery= \n args -> if debug then show n ++ ":\n" ++ unlines args else [] } a
-
-mycheck :: Testable a => Config -> a -> IO ()
-mycheck config a =
- do let rnd = mkStdGen 99
- mytests config (evaluate a) rnd 0 0 []
-
-mytests :: Config -> Gen Result -> StdGen -> Int -> Int -> [[String]] -> IO ()
-mytests config gen rnd0 ntest nfail stamps
- | ntest == configMaxTest config = do done "OK," ntest stamps
- | nfail == configMaxFail config = do done "Arguments exhausted after" ntest stamps
- | otherwise =
- do putStr (configEvery config ntest (arguments result)) >> hFlush stdout
- case ok result of
- Nothing ->
- mytests config gen rnd1 ntest (nfail+1) stamps
- Just True ->
- mytests config gen rnd1 (ntest+1) nfail (stamp result:stamps)
- Just False ->
- putStr ( "Falsifiable after "
- ++ show ntest
- ++ " tests:\n"
- ++ unlines (arguments result)
- ) >> hFlush stdout
- where
- result = generate (configSize config ntest) rnd2 gen
- (rnd1,rnd2) = split rnd0
-
-done :: String -> Int -> [[String]] -> IO ()
-done mesg ntest stamps =
- do putStr ( mesg ++ " " ++ show ntest ++ " tests" ++ table )
- where
- table = display
- . map entry
- . reverse
- . sort
- . map pairLength
- . group
- . sort
- . filter (not . null)
- $ stamps
-
- display [] = ".\n"
- display [x] = " (" ++ x ++ ").\n"
- display xs = ".\n" ++ unlines (map (++ ".") xs)
-
- pairLength xss@(xs:_) = (length xss, xs)
- entry (n, xs) = percentage n ntest
- ++ " "
- ++ concat (intersperse ", " xs)
-
- percentage n m = show ((100 * n) `div` m) ++ "%"
-
-------------------------------------------------------------------------
-
-instance Arbitrary Char where
- arbitrary = choose ('a', 'i')
- coarbitrary c = variant (ord c `rem` 4)
-
-instance (Arbitrary a, Arbitrary b) => Arbitrary (PairS a b) where
- arbitrary = liftM2 (:*:) arbitrary arbitrary
- coarbitrary (a :*: b) = coarbitrary a . coarbitrary b
-
-instance Arbitrary Word8 where
- arbitrary = choose (97, 105)
- coarbitrary c = variant (fromIntegral ((fromIntegral c) `rem` 4))
-
-instance Arbitrary Int64 where
- arbitrary = sized $ \n -> choose (-fromIntegral n,fromIntegral n)
- coarbitrary n = variant (fromIntegral (if n >= 0 then 2*n else 2*(-n) + 1))
-
-instance Arbitrary a => Arbitrary (MaybeS a) where
- arbitrary = do a <- arbitrary ; elements [NothingS, JustS a]
- coarbitrary NothingS = variant 0
- coarbitrary _ = variant 1 -- ok?
-
-{-
-instance Arbitrary Char where
- arbitrary = choose ('\0', '\255') -- since we have to test words, unlines too
- coarbitrary c = variant (ord c `rem` 16)
-
-instance Arbitrary Word8 where
- arbitrary = choose (minBound, maxBound)
- coarbitrary c = variant (fromIntegral ((fromIntegral c) `rem` 16))
--}
-
-instance Random Word8 where
- randomR = integralRandomR
- random = randomR (minBound,maxBound)
-
-instance Random Int64 where
- randomR = integralRandomR
- random = randomR (minBound,maxBound)
-
-integralRandomR :: (Integral a, RandomGen g) => (a,a) -> g -> (a,g)
-integralRandomR (a,b) g = case randomR (fromIntegral a :: Integer,
- fromIntegral b :: Integer) g of
- (x,g) -> (fromIntegral x, g)
-
-instance Arbitrary L.ByteString where
- arbitrary = arbitrary >>= return . L.fromChunks . filter (not. P.null) -- maintain the invariant.
- coarbitrary s = coarbitrary (L.unpack s)
-
-instance Arbitrary P.ByteString where
- arbitrary = P.pack `fmap` arbitrary
- coarbitrary s = coarbitrary (P.unpack s)
-
-------------------------------------------------------------------------
---
--- We're doing two forms of testing here. Firstly, model based testing.
--- For our Lazy and strict bytestring types, we have model types:
---
--- i.e. Lazy == Byte
--- \\ //
--- List
---
--- That is, the Lazy type can be modeled by functions in both the Byte
--- and List type. For each of the 3 models, we have a set of tests that
--- check those types match.
---
--- The Model class connects a type and its model type, via a conversion
--- function.
---
---
-class Model a b where
- model :: a -> b -- get the abstract vale from a concrete value
-
---
--- Connecting our Lazy and Strict types to their models. We also check
--- the data invariant on Lazy types.
---
--- These instances represent the arrows in the above diagram
---
-instance Model B P where model = abstr . checkInvariant
-instance Model P [W] where model = P.unpack
-instance Model P [Char] where model = PC.unpack
-instance Model B [W] where model = L.unpack . checkInvariant
-instance Model B [Char] where model = LC.unpack . checkInvariant
-
--- Types are trivially modeled by themselves
-instance Model Bool Bool where model = id
-instance Model Int Int where model = id
-instance Model Int64 Int64 where model = id
-instance Model Int64 Int where model = fromIntegral
-instance Model Word8 Word8 where model = id
-instance Model Ordering Ordering where model = id
-
--- More structured types are modeled recursively, using the NatTrans class from Gofer.
-class (Functor f, Functor g) => NatTrans f g where
- eta :: f a -> g a
-
--- The transformation of the same type is identity
-instance NatTrans [] [] where eta = id
-instance NatTrans Maybe Maybe where eta = id
-instance NatTrans ((->) X) ((->) X) where eta = id
-instance NatTrans ((->) W) ((->) W) where eta = id
-
--- We have a transformation of pairs, if the pairs are in Model
-instance Model f g => NatTrans ((,) f) ((,) g) where eta (f,a) = (model f, a)
-
--- And finally, we can take any (m a) to (n b), if we can Model m n, and a b
-instance (NatTrans m n, Model a b) => Model (m a) (n b) where model x = fmap model (eta x)
-
-------------------------------------------------------------------------
-
--- In a form more useful for QC testing (and it's lazy)
-checkInvariant :: L.ByteString -> L.ByteString
-checkInvariant cs0 = check cs0
- where check L.Empty = L.Empty
- check (L.Chunk c cs)
- | P.null c = error ("invariant violation: " ++ show cs0)
- | otherwise = L.Chunk c (check cs)
-
-abstr :: L.ByteString -> P.ByteString
-abstr = P.concat . L.toChunks
-
--- Some short hand.
-type X = Int
-type W = Word8
-type P = P.ByteString
-type B = L.ByteString
-
-------------------------------------------------------------------------
---
--- These comparison functions handle wrapping and equality.
---
--- A single class for these would be nice, but note that they differe in
--- the number of arguments, and those argument types, so we'd need HList
--- tricks. See here: http://okmij.org/ftp/Haskell/vararg-fn.lhs
---
-
-eq1 f g = \a ->
- model (f a) == g (model a)
-eq2 f g = \a b ->
- model (f a b) == g (model a) (model b)
-eq3 f g = \a b c ->
- model (f a b c) == g (model a) (model b) (model c)
-eq4 f g = \a b c d ->
- model (f a b c d) == g (model a) (model b) (model c) (model d)
-eq5 f g = \a b c d e ->
- model (f a b c d e) == g (model a) (model b) (model c) (model d) (model e)
-
---
--- And for functions that take non-null input
---
-eqnotnull1 f g = \x -> (not (isNull x)) ==> eq1 f g x
-eqnotnull2 f g = \x y -> (not (isNull y)) ==> eq2 f g x y
-eqnotnull3 f g = \x y z -> (not (isNull z)) ==> eq3 f g x y z
-
-class IsNull t where isNull :: t -> Bool
-instance IsNull L.ByteString where isNull = L.null
-instance IsNull P.ByteString where isNull = P.null
-
-------------------------------------------------------------------------
-
---
--- These are miscellaneous tests left over. Or else they test some
--- property internal to a type (i.e. head . sort == minimum), without
--- reference to a model type.
---
-
-invariant :: L.ByteString -> Bool
-invariant L.Empty = True
-invariant (L.Chunk c cs) = not (P.null c) && invariant cs
-
-prop_invariant = invariant
-
-prop_eq_refl x = x == (x :: ByteString)
-prop_eq_symm x y = (x == y) == (y == (x :: ByteString))
-
-prop_eq1 xs = xs == (unpack . pack $ xs)
-prop_eq2 xs = xs == (xs :: ByteString)
-prop_eq3 xs ys = (xs == ys) == (unpack xs == unpack ys)
-
-prop_compare1 xs = (pack xs `compare` pack xs) == EQ
-prop_compare2 xs c = (pack (xs++[c]) `compare` pack xs) == GT
-prop_compare3 xs c = (pack xs `compare` pack (xs++[c])) == LT
-
-prop_compare4 xs = (not (null xs)) ==> (pack xs `compare` L.empty) == GT
-prop_compare5 xs = (not (null xs)) ==> (L.empty `compare` pack xs) == LT
-prop_compare6 xs ys = (not (null ys)) ==> (pack (xs++ys) `compare` pack xs) == GT
-
-prop_compare7 x y = x `compare` y == (L.singleton x `compare` L.singleton y)
-prop_compare8 xs ys = xs `compare` ys == (L.pack xs `compare` L.pack ys)
-
-prop_empty1 = L.length L.empty == 0
-prop_empty2 = L.unpack L.empty == []
-
-prop_packunpack s = (L.unpack . L.pack) s == id s
-prop_unpackpack s = (L.pack . L.unpack) s == id s
-
-prop_null xs = null (L.unpack xs) == L.null xs
-
-prop_length1 xs = fromIntegral (length xs) == L.length (L.pack xs)
-
-prop_length2 xs = L.length xs == length1 xs
- where length1 ys
- | L.null ys = 0
- | otherwise = 1 + length1 (L.tail ys)
-
-prop_cons1 c xs = unpack (L.cons c (pack xs)) == (c:xs)
-prop_cons2 c = L.singleton c == (c `L.cons` L.empty)
-prop_cons3 c = unpack (L.singleton c) == (c:[])
-prop_cons4 c = (c `L.cons` L.empty) == pack (c:[])
-
-prop_snoc1 xs c = xs ++ [c] == unpack ((pack xs) `L.snoc` c)
-
-prop_head xs = (not (null xs)) ==> head xs == (L.head . pack) xs
-prop_head1 xs = not (L.null xs) ==> L.head xs == head (L.unpack xs)
-
-prop_tail xs = not (L.null xs) ==> L.tail xs == pack (tail (unpack xs))
-prop_tail1 xs = (not (null xs)) ==> tail xs == (unpack . L.tail . pack) xs
-
-prop_last xs = (not (null xs)) ==> last xs == (L.last . pack) xs
-
-prop_init xs =
- (not (null xs)) ==>
- init xs == (unpack . L.init . pack) xs
-
-prop_append1 xs = (xs ++ xs) == (unpack $ pack xs `L.append` pack xs)
-prop_append2 xs ys = (xs ++ ys) == (unpack $ pack xs `L.append` pack ys)
-prop_append3 xs ys = L.append xs ys == pack (unpack xs ++ unpack ys)
-
-prop_map1 f xs = L.map f (pack xs) == pack (map f xs)
-prop_map2 f g xs = L.map f (L.map g xs) == L.map (f . g) xs
-prop_map3 f xs = map f xs == (unpack . L.map f . pack) xs
-
-prop_filter1 c xs = (filter (/=c) xs) == (unpack $ L.filter (/=c) (pack xs))
-prop_filter2 p xs = (filter p xs) == (unpack $ L.filter p (pack xs))
-
-prop_reverse xs = reverse xs == (unpack . L.reverse . pack) xs
-prop_reverse1 xs = L.reverse (pack xs) == pack (reverse xs)
-prop_reverse2 xs = reverse (unpack xs) == (unpack . L.reverse) xs
-
-prop_transpose xs = (transpose xs) == ((map unpack) . L.transpose . (map pack)) xs
-
-prop_foldl f c xs = L.foldl f c (pack xs) == foldl f c xs
- where _ = c :: Char
-
-prop_foldr f c xs = L.foldl f c (pack xs) == foldl f c xs
- where _ = c :: Char
-
-prop_foldl_1 xs = L.foldl (\xs c -> c `L.cons` xs) L.empty xs == L.reverse xs
-prop_foldr_1 xs = L.foldr (\c xs -> c `L.cons` xs) L.empty xs == id xs
-
-prop_foldl1_1 xs =
- (not . L.null) xs ==>
- L.foldl1 (\x c -> if c > x then c else x) xs ==
- L.foldl (\x c -> if c > x then c else x) 0 xs
-
-prop_foldl1_2 xs =
- (not . L.null) xs ==>
- L.foldl1 const xs == L.head xs
-
-prop_foldl1_3 xs =
- (not . L.null) xs ==>
- L.foldl1 (flip const) xs == L.last xs
-
-prop_foldr1_1 xs =
- (not . L.null) xs ==>
- L.foldr1 (\c x -> if c > x then c else x) xs ==
- L.foldr (\c x -> if c > x then c else x) 0 xs
-
-prop_foldr1_2 xs =
- (not . L.null) xs ==>
- L.foldr1 (flip const) xs == L.last xs
-
-prop_foldr1_3 xs =
- (not . L.null) xs ==>
- L.foldr1 const xs == L.head xs
-
-prop_concat1 xs = (concat [xs,xs]) == (unpack $ L.concat [pack xs, pack xs])
-prop_concat2 xs = (concat [xs,[]]) == (unpack $ L.concat [pack xs, pack []])
-prop_concat3 xss = L.concat (map pack xss) == pack (concat xss)
-
-prop_concatMap xs = L.concatMap L.singleton xs == (pack . concatMap (:[]) . unpack) xs
-
-prop_any xs a = (any (== a) xs) == (L.any (== a) (pack xs))
-prop_all xs a = (all (== a) xs) == (L.all (== a) (pack xs))
-
-prop_maximum xs = (not (null xs)) ==> (maximum xs) == (L.maximum ( pack xs ))
-prop_minimum xs = (not (null xs)) ==> (minimum xs) == (L.minimum ( pack xs ))
-
-prop_replicate1 n c =
- (n >= 0) ==> unpack (L.replicate (fromIntegral n) c) == replicate n c
-
-prop_replicate2 c = unpack (L.replicate 0 c) == replicate 0 c
-
-prop_take1 i xs = L.take (fromIntegral i) (pack xs) == pack (take i xs)
-prop_drop1 i xs = L.drop (fromIntegral i) (pack xs) == pack (drop i xs)
-
-prop_splitAt i xs = collect (i >= 0 && i < length xs) $
- L.splitAt (fromIntegral i) (pack xs) == let (a,b) = splitAt i xs in (pack a, pack b)
-
-prop_takeWhile f xs = L.takeWhile f (pack xs) == pack (takeWhile f xs)
-prop_dropWhile f xs = L.dropWhile f (pack xs) == pack (dropWhile f xs)
-
-prop_break f xs = L.break f (pack xs) ==
- let (a,b) = break f xs in (pack a, pack b)
-
-prop_breakspan xs c = L.break (==c) xs == L.span (/=c) xs
-
-prop_span xs a = (span (/=a) xs) == (let (x,y) = L.span (/=a) (pack xs) in (unpack x, unpack y))
-
--- prop_breakByte xs c = L.break (== c) xs == L.breakByte c xs
-
--- prop_spanByte c xs = (L.span (==c) xs) == L.spanByte c xs
-
-prop_split c xs = (map L.unpack . map checkInvariant . L.split c $ xs)
- == (map P.unpack . P.split c . P.pack . L.unpack $ xs)
-
-prop_splitWith f xs = (l1 == l2 || l1 == l2+1) &&
- sum (map L.length splits) == L.length xs - l2
- where splits = L.splitWith f xs
- l1 = fromIntegral (length splits)
- l2 = L.length (L.filter f xs)
-
-prop_joinsplit c xs = L.intercalate (pack [c]) (L.split c xs) == id xs
-
-prop_group xs = group xs == (map unpack . L.group . pack) xs
--- prop_groupBy f xs = groupBy f xs == (map unpack . L.groupBy f . pack) xs
-
--- prop_joinjoinByte xs ys c = L.joinWithByte c xs ys == L.join (L.singleton c) [xs,ys]
-
-prop_index xs =
- not (null xs) ==>
- forAll indices $ \i -> (xs !! i) == L.pack xs `L.index` (fromIntegral i)
- where indices = choose (0, length xs -1)
-
-prop_elemIndex xs c = (elemIndex c xs) == fmap fromIntegral (L.elemIndex c (pack xs))
-
-prop_elemIndices xs c = elemIndices c xs == map fromIntegral (L.elemIndices c (pack xs))
-
-prop_count c xs = length (L.elemIndices c xs) == fromIntegral (L.count c xs)
-
-prop_findIndex xs f = (findIndex f xs) == fmap fromIntegral (L.findIndex f (pack xs))
-prop_findIndicies xs f = (findIndices f xs) == map fromIntegral (L.findIndices f (pack xs))
-
-prop_elem xs c = (c `elem` xs) == (c `L.elem` (pack xs))
-prop_notElem xs c = (c `notElem` xs) == (L.notElem c (pack xs))
-prop_elem_notelem xs c = c `L.elem` xs == not (c `L.notElem` xs)
-
--- prop_filterByte xs c = L.filterByte c xs == L.filter (==c) xs
--- prop_filterByte2 xs c = unpack (L.filterByte c xs) == filter (==c) (unpack xs)
-
--- prop_filterNotByte xs c = L.filterNotByte c xs == L.filter (/=c) xs
--- prop_filterNotByte2 xs c = unpack (L.filterNotByte c xs) == filter (/=c) (unpack xs)
-
-prop_find p xs = find p xs == L.find p (pack xs)
-
-prop_find_findIndex p xs =
- L.find p xs == case L.findIndex p xs of
- Just n -> Just (xs `L.index` n)
- _ -> Nothing
-
-prop_isPrefixOf xs ys = isPrefixOf xs ys == (pack xs `L.isPrefixOf` pack ys)
-
-{-
-prop_sort1 xs = sort xs == (unpack . L.sort . pack) xs
-prop_sort2 xs = (not (null xs)) ==> (L.head . L.sort . pack $ xs) == minimum xs
-prop_sort3 xs = (not (null xs)) ==> (L.last . L.sort . pack $ xs) == maximum xs
-prop_sort4 xs ys =
- (not (null xs)) ==>
- (not (null ys)) ==>
- (L.head . L.sort) (L.append (pack xs) (pack ys)) == min (minimum xs) (minimum ys)
-
-prop_sort5 xs ys =
- (not (null xs)) ==>
- (not (null ys)) ==>
- (L.last . L.sort) (L.append (pack xs) (pack ys)) == max (maximum xs) (maximum ys)
-
--}
-
-------------------------------------------------------------------------
--- Misc ByteString properties
-
-prop_nil1BB = P.length P.empty == 0
-prop_nil2BB = P.unpack P.empty == []
-
-prop_tailSBB xs = not (P.null xs) ==> P.tail xs == P.pack (tail (P.unpack xs))
-
-prop_nullBB xs = null (P.unpack xs) == P.null xs
-
-prop_lengthBB xs = P.length xs == length1 xs
- where
- length1 ys
- | P.null ys = 0
- | otherwise = 1 + length1 (P.tail ys)
-
-prop_lengthSBB xs = length xs == P.length (P.pack xs)
-
-prop_indexBB xs =
- not (null xs) ==>
- forAll indices $ \i -> (xs !! i) == P.pack xs `P.index` i
- where indices = choose (0, length xs -1)
-
-prop_unsafeIndexBB xs =
- not (null xs) ==>
- forAll indices $ \i -> (xs !! i) == P.pack xs `P.unsafeIndex` i
- where indices = choose (0, length xs -1)
-
-prop_mapfusionBB f g xs = P.map f (P.map g xs) == P.map (f . g) xs
-
-prop_filterBB f xs = P.filter f (P.pack xs) == P.pack (filter f xs)
-
-prop_filterfusionBB f g xs = P.filter f (P.filter g xs) == P.filter (\c -> f c && g c) xs
-
-prop_elemSBB x xs = P.elem x (P.pack xs) == elem x xs
-
-prop_takeSBB i xs = P.take i (P.pack xs) == P.pack (take i xs)
-prop_dropSBB i xs = P.drop i (P.pack xs) == P.pack (drop i xs)
-
-prop_splitAtSBB i xs = -- collect (i >= 0 && i < length xs) $
- P.splitAt i (P.pack xs) ==
- let (a,b) = splitAt i xs in (P.pack a, P.pack b)
-
-prop_foldlBB f c xs = P.foldl f c (P.pack xs) == foldl f c xs
- where types = c :: Char
-
-prop_scanlfoldlBB f z xs = not (P.null xs) ==> P.last (P.scanl f z xs) == P.foldl f z xs
-
-prop_foldrBB f c xs = P.foldl f c (P.pack xs) == foldl f c xs
- where types = c :: Char
-
-prop_takeWhileSBB f xs = P.takeWhile f (P.pack xs) == P.pack (takeWhile f xs)
-prop_dropWhileSBB f xs = P.dropWhile f (P.pack xs) == P.pack (dropWhile f xs)
-
-prop_spanSBB f xs = P.span f (P.pack xs) ==
- let (a,b) = span f xs in (P.pack a, P.pack b)
-
-prop_breakSBB f xs = P.break f (P.pack xs) ==
- let (a,b) = break f xs in (P.pack a, P.pack b)
-
-prop_breakspan_1BB xs c = P.break (== c) xs == P.span (/= c) xs
-
-prop_linesSBB xs = C.lines (C.pack xs) == map C.pack (lines xs)
-
-prop_unlinesSBB xss = C.unlines (map C.pack xss) == C.pack (unlines xss)
-
-prop_wordsSBB xs =
- C.words (C.pack xs) == map C.pack (words xs)
-
-prop_unwordsSBB xss = C.unwords (map C.pack xss) == C.pack (unwords xss)
-
-prop_splitWithBB f xs = (l1 == l2 || l1 == l2+1) &&
- sum (map P.length splits) == P.length xs - l2
- where splits = P.splitWith f xs
- l1 = length splits
- l2 = P.length (P.filter f xs)
-
-prop_joinsplitBB c xs = P.intercalate (P.pack [c]) (P.split c xs) == xs
-
--- prop_linessplitBB xs =
--- (not . C.null) xs ==>
--- C.lines' xs == C.split '\n' xs
-
-prop_linessplit2BB xs =
- C.lines xs == C.split '\n' xs ++ (if C.last xs == '\n' then [C.empty] else [])
-
-prop_splitsplitWithBB c xs = P.split c xs == P.splitWith (== c) xs
-
-prop_bijectionBB c = (P.w2c . P.c2w) c == id c
-prop_bijectionBB' w = (P.c2w . P.w2c) w == id w
-
-prop_packunpackBB s = (P.unpack . P.pack) s == id s
-prop_packunpackBB' s = (P.pack . P.unpack) s == id s
-
-prop_eq1BB xs = xs == (P.unpack . P.pack $ xs)
-prop_eq2BB xs = xs == xs
-prop_eq3BB xs ys = (xs == ys) == (P.unpack xs == P.unpack ys)
-
-prop_compare1BB xs = (P.pack xs `compare` P.pack xs) == EQ
-prop_compare2BB xs c = (P.pack (xs++[c]) `compare` P.pack xs) == GT
-prop_compare3BB xs c = (P.pack xs `compare` P.pack (xs++[c])) == LT
-
-prop_compare4BB xs = (not (null xs)) ==> (P.pack xs `compare` P.empty) == GT
-prop_compare5BB xs = (not (null xs)) ==> (P.empty `compare` P.pack xs) == LT
-prop_compare6BB xs ys= (not (null ys)) ==> (P.pack (xs++ys) `compare` P.pack xs) == GT
-
-prop_compare7BB x y = x `compare` y == (C.singleton x `compare` C.singleton y)
-prop_compare8BB xs ys = xs `compare` ys == (P.pack xs `compare` P.pack ys)
-
-prop_consBB c xs = P.unpack (P.cons c (P.pack xs)) == (c:xs)
-prop_cons1BB xs = 'X' : xs == C.unpack ('X' `C.cons` (C.pack xs))
-prop_cons2BB xs c = c : xs == P.unpack (c `P.cons` (P.pack xs))
-prop_cons3BB c = C.unpack (C.singleton c) == (c:[])
-prop_cons4BB c = (c `P.cons` P.empty) == P.pack (c:[])
-
-prop_snoc1BB xs c = xs ++ [c] == P.unpack ((P.pack xs) `P.snoc` c)
-
-prop_head1BB xs = (not (null xs)) ==> head xs == (P.head . P.pack) xs
-prop_head2BB xs = (not (null xs)) ==> head xs == (P.unsafeHead . P.pack) xs
-prop_head3BB xs = not (P.null xs) ==> P.head xs == head (P.unpack xs)
-
-prop_tailBB xs = (not (null xs)) ==> tail xs == (P.unpack . P.tail . P.pack) xs
-prop_tail1BB xs = (not (null xs)) ==> tail xs == (P.unpack . P.unsafeTail. P.pack) xs
-
-prop_lastBB xs = (not (null xs)) ==> last xs == (P.last . P.pack) xs
-
-prop_initBB xs =
- (not (null xs)) ==>
- init xs == (P.unpack . P.init . P.pack) xs
-
--- prop_null xs = (null xs) ==> null xs == (nullPS (pack xs))
-
-prop_append1BB xs = (xs ++ xs) == (P.unpack $ P.pack xs `P.append` P.pack xs)
-prop_append2BB xs ys = (xs ++ ys) == (P.unpack $ P.pack xs `P.append` P.pack ys)
-prop_append3BB xs ys = P.append xs ys == P.pack (P.unpack xs ++ P.unpack ys)
-
-prop_map1BB f xs = P.map f (P.pack xs) == P.pack (map f xs)
-prop_map2BB f g xs = P.map f (P.map g xs) == P.map (f . g) xs
-prop_map3BB f xs = map f xs == (P.unpack . P.map f . P.pack) xs
--- prop_mapBB' f xs = P.map' f (P.pack xs) == P.pack (map f xs)
-
-prop_filter1BB xs = (filter (=='X') xs) == (C.unpack $ C.filter (=='X') (C.pack xs))
-prop_filter2BB p xs = (filter p xs) == (P.unpack $ P.filter p (P.pack xs))
-
-prop_findBB p xs = find p xs == P.find p (P.pack xs)
-
-prop_find_findIndexBB p xs =
- P.find p xs == case P.findIndex p xs of
- Just n -> Just (xs `P.unsafeIndex` n)
- _ -> Nothing
-
-prop_foldl1BB xs a = ((foldl (\x c -> if c == a then x else c:x) [] xs)) ==
- (P.unpack $ P.foldl (\x c -> if c == a then x else c `P.cons` x) P.empty (P.pack xs))
-prop_foldl2BB xs = P.foldl (\xs c -> c `P.cons` xs) P.empty (P.pack xs) == P.reverse (P.pack xs)
-
-prop_foldr1BB xs a = ((foldr (\c x -> if c == a then x else c:x) [] xs)) ==
- (P.unpack $ P.foldr (\c x -> if c == a then x else c `P.cons` x)
- P.empty (P.pack xs))
-
-prop_foldr2BB xs = P.foldr (\c xs -> c `P.cons` xs) P.empty (P.pack xs) == (P.pack xs)
-
-prop_foldl1_1BB xs =
- (not . P.null) xs ==>
- P.foldl1 (\x c -> if c > x then c else x) xs ==
- P.foldl (\x c -> if c > x then c else x) 0 xs
-
-prop_foldl1_2BB xs =
- (not . P.null) xs ==>
- P.foldl1 const xs == P.head xs
-
-prop_foldl1_3BB xs =
- (not . P.null) xs ==>
- P.foldl1 (flip const) xs == P.last xs
-
-prop_foldr1_1BB xs =
- (not . P.null) xs ==>
- P.foldr1 (\c x -> if c > x then c else x) xs ==
- P.foldr (\c x -> if c > x then c else x) 0 xs
-
-prop_foldr1_2BB xs =
- (not . P.null) xs ==>
- P.foldr1 (flip const) xs == P.last xs
-
-prop_foldr1_3BB xs =
- (not . P.null) xs ==>
- P.foldr1 const xs == P.head xs
-
-prop_takeWhileBB xs a = (takeWhile (/= a) xs) == (P.unpack . (P.takeWhile (/= a)) . P.pack) xs
-
-prop_dropWhileBB xs a = (dropWhile (/= a) xs) == (P.unpack . (P.dropWhile (/= a)) . P.pack) xs
-
-prop_takeBB xs = (take 10 xs) == (P.unpack . (P.take 10) . P.pack) xs
-
-prop_dropBB xs = (drop 10 xs) == (P.unpack . (P.drop 10) . P.pack) xs
-
-prop_splitAtBB i xs = -- collect (i >= 0 && i < length xs) $
- splitAt i xs ==
- let (x,y) = P.splitAt i (P.pack xs) in (P.unpack x, P.unpack y)
-
-prop_spanBB xs a = (span (/=a) xs) == (let (x,y) = P.span (/=a) (P.pack xs)
- in (P.unpack x, P.unpack y))
-
-prop_breakBB xs a = (break (/=a) xs) == (let (x,y) = P.break (/=a) (P.pack xs)
- in (P.unpack x, P.unpack y))
-
-prop_reverse1BB xs = (reverse xs) == (P.unpack . P.reverse . P.pack) xs
-prop_reverse2BB xs = P.reverse (P.pack xs) == P.pack (reverse xs)
-prop_reverse3BB xs = reverse (P.unpack xs) == (P.unpack . P.reverse) xs
-
-prop_elemBB xs a = (a `elem` xs) == (a `P.elem` (P.pack xs))
-
-prop_notElemBB c xs = P.notElem c (P.pack xs) == notElem c xs
-
--- should try to stress it
-prop_concat1BB xs = (concat [xs,xs]) == (P.unpack $ P.concat [P.pack xs, P.pack xs])
-prop_concat2BB xs = (concat [xs,[]]) == (P.unpack $ P.concat [P.pack xs, P.pack []])
-prop_concatBB xss = P.concat (map P.pack xss) == P.pack (concat xss)
-
-prop_concatMapBB xs = C.concatMap C.singleton xs == (C.pack . concatMap (:[]) . C.unpack) xs
-
-prop_anyBB xs a = (any (== a) xs) == (P.any (== a) (P.pack xs))
-prop_allBB xs a = (all (== a) xs) == (P.all (== a) (P.pack xs))
-
-prop_linesBB xs = (lines xs) == ((map C.unpack) . C.lines . C.pack) xs
-
-prop_unlinesBB xs = (unlines.lines) xs == (C.unpack. C.unlines . C.lines .C.pack) xs
-
-prop_wordsBB xs =
- (words xs) == ((map C.unpack) . C.words . C.pack) xs
--- prop_wordstokensBB xs = C.words xs == C.tokens isSpace xs
-
-prop_unwordsBB xs =
- (C.pack.unwords.words) xs == (C.unwords . C.words .C.pack) xs
-
-prop_groupBB xs = group xs == (map P.unpack . P.group . P.pack) xs
-
-prop_groupByBB xs = groupBy (==) xs == (map P.unpack . P.groupBy (==) . P.pack) xs
-prop_groupBy1BB xs = groupBy (/=) xs == (map P.unpack . P.groupBy (/=) . P.pack) xs
-
-prop_joinBB xs ys = (concat . (intersperse ys) . lines) xs ==
- (C.unpack $ C.intercalate (C.pack ys) (C.lines (C.pack xs)))
-
-prop_elemIndex1BB xs = (elemIndex 'X' xs) == (C.elemIndex 'X' (C.pack xs))
-prop_elemIndex2BB xs c = (elemIndex c xs) == (C.elemIndex c (C.pack xs))
-
--- prop_lineIndices1BB xs = C.elemIndices '\n' xs == C.lineIndices xs
-
-prop_countBB c xs = length (P.elemIndices c xs) == P.count c xs
-
-prop_elemIndexEnd1BB c xs = (P.elemIndexEnd c (P.pack xs)) ==
- (case P.elemIndex c (P.pack (reverse xs)) of
- Nothing -> Nothing
- Just i -> Just (length xs -1 -i))
-
-prop_elemIndexEnd2BB c xs = (P.elemIndexEnd c (P.pack xs)) ==
- ((-) (length xs - 1) `fmap` P.elemIndex c (P.pack $ reverse xs))
-
-prop_elemIndicesBB xs c = elemIndices c xs == P.elemIndices c (P.pack xs)
-
-prop_findIndexBB xs a = (findIndex (==a) xs) == (P.findIndex (==a) (P.pack xs))
-
-prop_findIndiciesBB xs c = (findIndices (==c) xs) == (P.findIndices (==c) (P.pack xs))
-
--- example properties from QuickCheck.Batch
-prop_sort1BB xs = sort xs == (P.unpack . P.sort . P.pack) xs
-prop_sort2BB xs = (not (null xs)) ==> (P.head . P.sort . P.pack $ xs) == minimum xs
-prop_sort3BB xs = (not (null xs)) ==> (P.last . P.sort . P.pack $ xs) == maximum xs
-prop_sort4BB xs ys =
- (not (null xs)) ==>
- (not (null ys)) ==>
- (P.head . P.sort) (P.append (P.pack xs) (P.pack ys)) == min (minimum xs) (minimum ys)
-prop_sort5BB xs ys =
- (not (null xs)) ==>
- (not (null ys)) ==>
- (P.last . P.sort) (P.append (P.pack xs) (P.pack ys)) == max (maximum xs) (maximum ys)
-
-prop_intersperseBB c xs = (intersperse c xs) == (P.unpack $ P.intersperse c (P.pack xs))
-
-prop_transposeBB xs = (transpose xs) == ((map P.unpack) . P.transpose . (map P.pack)) xs
-
-prop_maximumBB xs = (not (null xs)) ==> (maximum xs) == (P.maximum ( P.pack xs ))
-prop_minimumBB xs = (not (null xs)) ==> (minimum xs) == (P.minimum ( P.pack xs ))
-
--- prop_dropSpaceBB xs = dropWhile isSpace xs == C.unpack (C.dropSpace (C.pack xs))
--- prop_dropSpaceEndBB xs = (C.reverse . (C.dropWhile isSpace) . C.reverse) (C.pack xs) ==
--- (C.dropSpaceEnd (C.pack xs))
-
--- prop_breakSpaceBB xs =
--- (let (x,y) = C.breakSpace (C.pack xs)
--- in (C.unpack x, C.unpack y)) == (break isSpace xs)
-
-prop_spanEndBB xs =
- (C.spanEnd (not . isSpace) (C.pack xs)) ==
- (let (x,y) = C.span (not.isSpace) (C.reverse (C.pack xs)) in (C.reverse y,C.reverse x))
-
-prop_breakEndBB p xs = P.breakEnd (not.p) xs == P.spanEnd p xs
-
--- prop_breakCharBB c xs =
--- (break (==c) xs) ==
--- (let (x,y) = C.breakChar c (C.pack xs) in (C.unpack x, C.unpack y))
-
--- prop_spanCharBB c xs =
--- (break (/=c) xs) ==
--- (let (x,y) = C.spanChar c (C.pack xs) in (C.unpack x, C.unpack y))
-
--- prop_spanChar_1BB c xs =
--- (C.span (==c) xs) == C.spanChar c xs
-
--- prop_wordsBB' xs =
--- (C.unpack . C.unwords . C.words' . C.pack) xs ==
--- (map (\c -> if isSpace c then ' ' else c) xs)
-
--- prop_linesBB' xs = (C.unpack . C.unlines' . C.lines' . C.pack) xs == (xs)
-
-prop_unfoldrBB c n =
- (fst $ C.unfoldrN n fn c) == (C.pack $ take n $ unfoldr fn c)
- where
- fn x = Just (x, chr (ord x + 1))
-
-prop_prefixBB xs ys = isPrefixOf xs ys == (P.pack xs `P.isPrefixOf` P.pack ys)
-prop_suffixBB xs ys = isSuffixOf xs ys == (P.pack xs `P.isSuffixOf` P.pack ys)
-
-prop_copyBB xs = let p = P.pack xs in P.copy p == p
-
-prop_initsBB xs = inits xs == map P.unpack (P.inits (P.pack xs))
-
-prop_tailsBB xs = tails xs == map P.unpack (P.tails (P.pack xs))
-
-prop_findSubstringsBB s x l
- = C.findSubstrings (C.pack p) (C.pack s) == naive_findSubstrings p s
- where
- _ = l :: Int
- _ = x :: Int
-
- -- we look for some random substring of the test string
- p = take (model l) $ drop (model x) s
-
- -- naive reference implementation
- naive_findSubstrings :: String -> String -> [Int]
- naive_findSubstrings p s = [x | x <- [0..length s], p `isPrefixOf` drop x s]
-
-prop_replicate1BB n c = P.unpack (P.replicate n c) == replicate n c
-prop_replicate2BB n c = P.replicate n c == fst (P.unfoldrN n (\u -> Just (u,u)) c)
-
-prop_replicate3BB c = P.unpack (P.replicate 0 c) == replicate 0 c
-
-prop_readintBB n = (fst . fromJust . C.readInt . C.pack . show) n == (n :: Int)
-prop_readintLL n = (fst . fromJust . D.readInt . D.pack . show) n == (n :: Int)
-
-prop_readint2BB s =
- let s' = filter (\c -> c `notElem` ['0'..'9']) s
- in C.readInt (C.pack s') == Nothing
-
--- prop_filterChar1BB c xs = (filter (==c) xs) == ((C.unpack . C.filterChar c . C.pack) xs)
--- prop_filterChar2BB c xs = (C.filter (==c) (C.pack xs)) == (C.filterChar c (C.pack xs))
--- prop_filterChar3BB c xs = C.filterChar c xs == C.replicate (C.count c xs) c
-
--- prop_filterNotChar1BB c xs = (filter (/=c) xs) == ((C.unpack . C.filterNotChar c . C.pack) xs)
--- prop_filterNotChar2BB c xs = (C.filter (/=c) (C.pack xs)) == (C.filterNotChar c (C.pack xs))
-
--- prop_joinjoinpathBB xs ys c = C.joinWithChar c xs ys == C.join (C.singleton c) [xs,ys]
-
-prop_zipBB xs ys = zip xs ys == P.zip (P.pack xs) (P.pack ys)
-prop_zip1BB xs ys = P.zip xs ys == zip (P.unpack xs) (P.unpack ys)
-
-prop_zipWithBB xs ys = P.zipWith (,) xs ys == P.zip xs ys
--- prop_zipWith'BB xs ys = P.pack (P.zipWith (+) xs ys) == P.zipWith' (+) xs ys
-
-prop_unzipBB x = let (xs,ys) = unzip x in (P.pack xs, P.pack ys) == P.unzip x
-
-------------------------------------------------------------------------
--- The entry point
-
-main = run tests
-
-run :: [(String, Int -> IO ())] -> IO ()
-run tests = do
- x <- getArgs
- let n = if null x then 100 else read . head $ x
- mapM_ (\(s,a) -> printf "%-25s: " s >> a n) tests
-
---
--- And now a list of all the properties to test.
---
-
-tests = bb_tests ++ ll_tests
-
-------------------------------------------------------------------------
--- extra ByteString properties
-
-bb_tests =
- [ ("bijection", mytest prop_bijectionBB)
- , ("bijection'", mytest prop_bijectionBB')
- , ("pack/unpack", mytest prop_packunpackBB)
- , ("unpack/pack", mytest prop_packunpackBB')
- , ("eq 1", mytest prop_eq1BB)
- , ("eq 2", mytest prop_eq3BB)
- , ("eq 3", mytest prop_eq3BB)
- , ("compare 1", mytest prop_compare1BB)
- , ("compare 2", mytest prop_compare2BB)
- , ("compare 3", mytest prop_compare3BB)
- , ("compare 4", mytest prop_compare4BB)
- , ("compare 5", mytest prop_compare5BB)
- , ("compare 6", mytest prop_compare6BB)
- , ("compare 7", mytest prop_compare7BB)
- , ("compare 8", mytest prop_compare8BB)
- , ("empty 1", mytest prop_nil1BB)
- , ("empty 2", mytest prop_nil2BB)
- , ("null", mytest prop_nullBB)
- , ("length 1", mytest prop_lengthBB)
- , ("length 2", mytest prop_lengthSBB)
- , ("cons 1", mytest prop_consBB)
- , ("cons 2", mytest prop_cons1BB)
- , ("cons 3", mytest prop_cons2BB)
- , ("cons 4", mytest prop_cons3BB)
- , ("cons 5", mytest prop_cons4BB)
- , ("snoc", mytest prop_snoc1BB)
- , ("head 1", mytest prop_head1BB)
- , ("head 2", mytest prop_head2BB)
- , ("head 3", mytest prop_head3BB)
- , ("tail", mytest prop_tailBB)
- , ("tail 1", mytest prop_tail1BB)
- , ("last", mytest prop_lastBB)
- , ("init", mytest prop_initBB)
- , ("append 1", mytest prop_append1BB)
- , ("append 2", mytest prop_append2BB)
- , ("append 3", mytest prop_append3BB)
- , ("map 1", mytest prop_map1BB)
- , ("map 2", mytest prop_map2BB)
- , ("map 3", mytest prop_map3BB)
- , ("filter1", mytest prop_filter1BB)
- , ("filter2", mytest prop_filter2BB)
- , ("map fusion", mytest prop_mapfusionBB)
- , ("filter fusion", mytest prop_filterfusionBB)
- , ("reverse 1", mytest prop_reverse1BB)
- , ("reverse 2", mytest prop_reverse2BB)
- , ("reverse 3", mytest prop_reverse3BB)
- , ("foldl 1", mytest prop_foldl1BB)
- , ("foldl 2", mytest prop_foldl2BB)
- , ("foldr 1", mytest prop_foldr1BB)
- , ("foldr 2", mytest prop_foldr2BB)
- , ("foldl1 1", mytest prop_foldl1_1BB)
- , ("foldl1 2", mytest prop_foldl1_2BB)
- , ("foldl1 3", mytest prop_foldl1_3BB)
- , ("foldr1 1", mytest prop_foldr1_1BB)
- , ("foldr1 2", mytest prop_foldr1_2BB)
- , ("foldr1 3", mytest prop_foldr1_3BB)
- , ("scanl/foldl", mytest prop_scanlfoldlBB)
- , ("all", mytest prop_allBB)
- , ("any", mytest prop_anyBB)
- , ("take", mytest prop_takeBB)
- , ("drop", mytest prop_dropBB)
- , ("takeWhile", mytest prop_takeWhileBB)
- , ("dropWhile", mytest prop_dropWhileBB)
- , ("splitAt", mytest prop_splitAtBB)
- , ("span", mytest prop_spanBB)
- , ("break", mytest prop_breakBB)
- , ("elem", mytest prop_elemBB)
- , ("notElem", mytest prop_notElemBB)
- , ("concat 1", mytest prop_concat1BB)
- , ("concat 2", mytest prop_concat2BB)
- , ("concat 3", mytest prop_concatBB)
- , ("lines", mytest prop_linesBB)
- , ("unlines", mytest prop_unlinesBB)
- , ("words", mytest prop_wordsBB)
- , ("unwords", mytest prop_unwordsBB)
- , ("group", mytest prop_groupBB)
- , ("groupBy", mytest prop_groupByBB)
- , ("groupBy 1", mytest prop_groupBy1BB)
- , ("join", mytest prop_joinBB)
- , ("elemIndex 1", mytest prop_elemIndex1BB)
- , ("elemIndex 2", mytest prop_elemIndex2BB)
- , ("findIndex", mytest prop_findIndexBB)
- , ("findIndicies", mytest prop_findIndiciesBB)
- , ("elemIndices", mytest prop_elemIndicesBB)
- , ("find", mytest prop_findBB)
- , ("find/findIndex", mytest prop_find_findIndexBB)
- , ("sort 1", mytest prop_sort1BB)
- , ("sort 2", mytest prop_sort2BB)
- , ("sort 3", mytest prop_sort3BB)
- , ("sort 4", mytest prop_sort4BB)
- , ("sort 5", mytest prop_sort5BB)
- , ("intersperse", mytest prop_intersperseBB)
- , ("maximum", mytest prop_maximumBB)
- , ("minimum", mytest prop_minimumBB)
--- , ("breakChar", mytest prop_breakCharBB)
--- , ("spanChar 1", mytest prop_spanCharBB)
--- , ("spanChar 2", mytest prop_spanChar_1BB)
--- , ("breakSpace", mytest prop_breakSpaceBB)
--- , ("dropSpace", mytest prop_dropSpaceBB)
- , ("spanEnd", mytest prop_spanEndBB)
- , ("breakEnd", mytest prop_breakEndBB)
- , ("elemIndexEnd 1",mytest prop_elemIndexEnd1BB)
- , ("elemIndexEnd 2",mytest prop_elemIndexEnd2BB)
--- , ("words'", mytest prop_wordsBB')
--- , ("lines'", mytest prop_linesBB')
--- , ("dropSpaceEnd", mytest prop_dropSpaceEndBB)
- , ("unfoldr", mytest prop_unfoldrBB)
- , ("prefix", mytest prop_prefixBB)
- , ("suffix", mytest prop_suffixBB)
- , ("copy", mytest prop_copyBB)
- , ("inits", mytest prop_initsBB)
- , ("tails", mytest prop_tailsBB)
- , ("findSubstrings ",mytest prop_findSubstringsBB)
- , ("replicate1", mytest prop_replicate1BB)
- , ("replicate2", mytest prop_replicate2BB)
- , ("replicate3", mytest prop_replicate3BB)
- , ("readInt", mytest prop_readintBB)
- , ("readInt 2", mytest prop_readint2BB)
- , ("Lazy.readInt", mytest prop_readintLL)
--- , ("filterChar1", mytest prop_filterChar1BB)
--- , ("filterChar2", mytest prop_filterChar2BB)
--- , ("filterChar3", mytest prop_filterChar3BB)
--- , ("filterNotChar1", mytest prop_filterNotChar1BB)
--- , ("filterNotChar2", mytest prop_filterNotChar2BB)
- , ("tail", mytest prop_tailSBB)
- , ("index", mytest prop_indexBB)
- , ("unsafeIndex", mytest prop_unsafeIndexBB)
--- , ("map'", mytest prop_mapBB')
- , ("filter", mytest prop_filterBB)
- , ("elem", mytest prop_elemSBB)
- , ("take", mytest prop_takeSBB)
- , ("drop", mytest prop_dropSBB)
- , ("splitAt", mytest prop_splitAtSBB)
- , ("foldl", mytest prop_foldlBB)
- , ("foldr", mytest prop_foldrBB)
- , ("takeWhile ", mytest prop_takeWhileSBB)
- , ("dropWhile ", mytest prop_dropWhileSBB)
- , ("span ", mytest prop_spanSBB)
- , ("break ", mytest prop_breakSBB)
- , ("breakspan", mytest prop_breakspan_1BB)
- , ("lines ", mytest prop_linesSBB)
- , ("unlines ", mytest prop_unlinesSBB)
- , ("words ", mytest prop_wordsSBB)
- , ("unwords ", mytest prop_unwordsSBB)
--- , ("wordstokens", mytest prop_wordstokensBB)
- , ("splitWith", mytest prop_splitWithBB)
- , ("joinsplit", mytest prop_joinsplitBB)
--- , ("lineIndices", mytest prop_lineIndices1BB)
- , ("count", mytest prop_countBB)
--- , ("linessplit", mytest prop_linessplitBB)
- , ("splitsplitWith", mytest prop_splitsplitWithBB)
--- , ("joinjoinpath", mytest prop_joinjoinpathBB)
- , ("zip", mytest prop_zipBB)
- , ("zip1", mytest prop_zip1BB)
- , ("zipWith", mytest prop_zipWithBB)
--- , ("zipWith'", mytest prop_zipWith'BB)
- , ("unzip", mytest prop_unzipBB)
- , ("concatMap", mytest prop_concatMapBB)
- ]
-
-
-------------------------------------------------------------------------
--- Extra lazy properties
-
-ll_tests =
- [("eq 1", mytest prop_eq1)
- ,("eq 2", mytest prop_eq2)
- ,("eq 3", mytest prop_eq3)
- ,("eq refl", mytest prop_eq_refl)
- ,("eq symm", mytest prop_eq_symm)
- ,("compare 1", mytest prop_compare1)
- ,("compare 2", mytest prop_compare2)
- ,("compare 3", mytest prop_compare3)
- ,("compare 4", mytest prop_compare4)
- ,("compare 5", mytest prop_compare5)
- ,("compare 6", mytest prop_compare6)
- ,("compare 7", mytest prop_compare7)
- ,("compare 8", mytest prop_compare8)
- ,("empty 1", mytest prop_empty1)
- ,("empty 2", mytest prop_empty2)
- ,("pack/unpack", mytest prop_packunpack)
- ,("unpack/pack", mytest prop_unpackpack)
- ,("null", mytest prop_null)
- ,("length 1", mytest prop_length1)
- ,("length 2", mytest prop_length2)
- ,("cons 1" , mytest prop_cons1)
- ,("cons 2" , mytest prop_cons2)
- ,("cons 3" , mytest prop_cons3)
- ,("cons 4" , mytest prop_cons4)
- ,("snoc" , mytest prop_snoc1)
- ,("head/pack", mytest prop_head)
- ,("head/unpack", mytest prop_head1)
- ,("tail/pack", mytest prop_tail)
- ,("tail/unpack", mytest prop_tail1)
- ,("last", mytest prop_last)
- ,("init", mytest prop_init)
- ,("append 1", mytest prop_append1)
- ,("append 2", mytest prop_append2)
- ,("append 3", mytest prop_append3)
- ,("map 1", mytest prop_map1)
- ,("map 2", mytest prop_map2)
- ,("map 3", mytest prop_map3)
- ,("filter 1", mytest prop_filter1)
- ,("filter 2", mytest prop_filter2)
- ,("reverse", mytest prop_reverse)
- ,("reverse1", mytest prop_reverse1)
- ,("reverse2", mytest prop_reverse2)
- ,("transpose", mytest prop_transpose)
- ,("foldl", mytest prop_foldl)
- ,("foldl/reverse", mytest prop_foldl_1)
- ,("foldr", mytest prop_foldr)
- ,("foldr/id", mytest prop_foldr_1)
- ,("foldl1/foldl", mytest prop_foldl1_1)
- ,("foldl1/head", mytest prop_foldl1_2)
- ,("foldl1/tail", mytest prop_foldl1_3)
- ,("foldr1/foldr", mytest prop_foldr1_1)
- ,("foldr1/last", mytest prop_foldr1_2)
- ,("foldr1/head", mytest prop_foldr1_3)
- ,("concat 1", mytest prop_concat1)
- ,("concat 2", mytest prop_concat2)
- ,("concat/pack", mytest prop_concat3)
- ,("any", mytest prop_any)
- ,("all", mytest prop_all)
- ,("maximum", mytest prop_maximum)
- ,("minimum", mytest prop_minimum)
- ,("replicate 1", mytest prop_replicate1)
- ,("replicate 2", mytest prop_replicate2)
- ,("take", mytest prop_take1)
- ,("drop", mytest prop_drop1)
- ,("splitAt", mytest prop_drop1)
- ,("takeWhile", mytest prop_takeWhile)
- ,("dropWhile", mytest prop_dropWhile)
- ,("break", mytest prop_break)
- ,("span", mytest prop_span)
- ,("break/span", mytest prop_breakspan)
--- ,("break/breakByte", mytest prop_breakByte)
--- ,("span/spanByte", mytest prop_spanByte)
- ,("split", mytest prop_split)
- ,("splitWith", mytest prop_splitWith)
- ,("join.split/id", mytest prop_joinsplit)
--- ,("join/joinByte", mytest prop_joinjoinByte)
- ,("group", mytest prop_group)
--- ,("groupBy", mytest prop_groupBy)
- ,("index", mytest prop_index)
- ,("elemIndex", mytest prop_elemIndex)
- ,("elemIndices", mytest prop_elemIndices)
- ,("count/elemIndices", mytest prop_count)
- ,("findIndex", mytest prop_findIndex)
- ,("findIndices", mytest prop_findIndicies)
- ,("find", mytest prop_find)
- ,("find/findIndex", mytest prop_find_findIndex)
- ,("elem", mytest prop_elem)
- ,("notElem", mytest prop_notElem)
- ,("elem/notElem", mytest prop_elem_notelem)
--- ,("filterByte 1", mytest prop_filterByte)
--- ,("filterByte 2", mytest prop_filterByte2)
--- ,("filterNotByte 1", mytest prop_filterNotByte)
--- ,("filterNotByte 2", mytest prop_filterNotByte2)
- ,("isPrefixOf", mytest prop_isPrefixOf)
- ,("concatMap", mytest prop_concatMap)
- ]
-
diff --git a/testsuite/tests/lib/Data.ByteString/bytestring005.stdout b/testsuite/tests/lib/Data.ByteString/bytestring005.stdout
deleted file mode 100644
index 2efe5278dc..0000000000
--- a/testsuite/tests/lib/Data.ByteString/bytestring005.stdout
+++ /dev/null
@@ -1,226 +0,0 @@
-bijection : OK, 100 tests.
-bijection' : OK, 100 tests.
-pack/unpack : OK, 100 tests.
-unpack/pack : OK, 100 tests.
-eq 1 : OK, 100 tests.
-eq 2 : OK, 100 tests.
-eq 3 : OK, 100 tests.
-compare 1 : OK, 100 tests.
-compare 2 : OK, 100 tests.
-compare 3 : OK, 100 tests.
-compare 4 : OK, 100 tests.
-compare 5 : OK, 100 tests.
-compare 6 : OK, 100 tests.
-compare 7 : OK, 100 tests.
-compare 8 : OK, 100 tests.
-empty 1 : OK, 100 tests.
-empty 2 : OK, 100 tests.
-null : OK, 100 tests.
-length 1 : OK, 100 tests.
-length 2 : OK, 100 tests.
-cons 1 : OK, 100 tests.
-cons 2 : OK, 100 tests.
-cons 3 : OK, 100 tests.
-cons 4 : OK, 100 tests.
-cons 5 : OK, 100 tests.
-snoc : OK, 100 tests.
-head 1 : OK, 100 tests.
-head 2 : OK, 100 tests.
-head 3 : OK, 100 tests.
-tail : OK, 100 tests.
-tail 1 : OK, 100 tests.
-last : OK, 100 tests.
-init : OK, 100 tests.
-append 1 : OK, 100 tests.
-append 2 : OK, 100 tests.
-append 3 : OK, 100 tests.
-map 1 : OK, 100 tests.
-map 2 : OK, 100 tests.
-map 3 : OK, 100 tests.
-filter1 : OK, 100 tests.
-filter2 : OK, 100 tests.
-map fusion : OK, 100 tests.
-filter fusion : OK, 100 tests.
-reverse 1 : OK, 100 tests.
-reverse 2 : OK, 100 tests.
-reverse 3 : OK, 100 tests.
-foldl 1 : OK, 100 tests.
-foldl 2 : OK, 100 tests.
-foldr 1 : OK, 100 tests.
-foldr 2 : OK, 100 tests.
-foldl1 1 : OK, 100 tests.
-foldl1 2 : OK, 100 tests.
-foldl1 3 : OK, 100 tests.
-foldr1 1 : OK, 100 tests.
-foldr1 2 : OK, 100 tests.
-foldr1 3 : OK, 100 tests.
-scanl/foldl : OK, 100 tests.
-all : OK, 100 tests.
-any : OK, 100 tests.
-take : OK, 100 tests.
-drop : OK, 100 tests.
-takeWhile : OK, 100 tests.
-dropWhile : OK, 100 tests.
-splitAt : OK, 100 tests.
-span : OK, 100 tests.
-break : OK, 100 tests.
-elem : OK, 100 tests.
-notElem : OK, 100 tests.
-concat 1 : OK, 100 tests.
-concat 2 : OK, 100 tests.
-concat 3 : OK, 100 tests.
-lines : OK, 100 tests.
-unlines : OK, 100 tests.
-words : OK, 100 tests.
-unwords : OK, 100 tests.
-group : OK, 100 tests.
-groupBy : OK, 100 tests.
-groupBy 1 : OK, 100 tests.
-join : OK, 100 tests.
-elemIndex 1 : OK, 100 tests.
-elemIndex 2 : OK, 100 tests.
-findIndex : OK, 100 tests.
-findIndicies : OK, 100 tests.
-elemIndices : OK, 100 tests.
-find : OK, 100 tests.
-find/findIndex : OK, 100 tests.
-sort 1 : OK, 100 tests.
-sort 2 : OK, 100 tests.
-sort 3 : OK, 100 tests.
-sort 4 : OK, 100 tests.
-sort 5 : OK, 100 tests.
-intersperse : OK, 100 tests.
-maximum : OK, 100 tests.
-minimum : OK, 100 tests.
-spanEnd : OK, 100 tests.
-breakEnd : OK, 100 tests.
-elemIndexEnd 1 : OK, 100 tests.
-elemIndexEnd 2 : OK, 100 tests.
-unfoldr : OK, 100 tests.
-prefix : OK, 100 tests.
-suffix : OK, 100 tests.
-copy : OK, 100 tests.
-inits : OK, 100 tests.
-tails : OK, 100 tests.
-findSubstrings : OK, 100 tests.
-replicate1 : OK, 100 tests.
-replicate2 : OK, 100 tests.
-replicate3 : OK, 100 tests.
-readInt : OK, 100 tests.
-readInt 2 : OK, 100 tests.
-Lazy.readInt : OK, 100 tests.
-tail : OK, 100 tests.
-index : OK, 100 tests.
-unsafeIndex : OK, 100 tests.
-filter : OK, 100 tests.
-elem : OK, 100 tests.
-take : OK, 100 tests.
-drop : OK, 100 tests.
-splitAt : OK, 100 tests.
-foldl : OK, 100 tests.
-foldr : OK, 100 tests.
-takeWhile : OK, 100 tests.
-dropWhile : OK, 100 tests.
-span : OK, 100 tests.
-break : OK, 100 tests.
-breakspan : OK, 100 tests.
-lines : OK, 100 tests.
-unlines : OK, 100 tests.
-words : OK, 100 tests.
-unwords : OK, 100 tests.
-splitWith : OK, 100 tests.
-joinsplit : OK, 100 tests.
-count : OK, 100 tests.
-splitsplitWith : OK, 100 tests.
-zip : OK, 100 tests.
-zip1 : OK, 100 tests.
-zipWith : OK, 100 tests.
-unzip : OK, 100 tests.
-concatMap : OK, 100 tests.
-eq 1 : OK, 100 tests.
-eq 2 : OK, 100 tests.
-eq 3 : OK, 100 tests.
-eq refl : OK, 100 tests.
-eq symm : OK, 100 tests.
-compare 1 : OK, 100 tests.
-compare 2 : OK, 100 tests.
-compare 3 : OK, 100 tests.
-compare 4 : OK, 100 tests.
-compare 5 : OK, 100 tests.
-compare 6 : OK, 100 tests.
-compare 7 : OK, 100 tests.
-compare 8 : OK, 100 tests.
-empty 1 : OK, 100 tests.
-empty 2 : OK, 100 tests.
-pack/unpack : OK, 100 tests.
-unpack/pack : OK, 100 tests.
-null : OK, 100 tests.
-length 1 : OK, 100 tests.
-length 2 : OK, 100 tests.
-cons 1 : OK, 100 tests.
-cons 2 : OK, 100 tests.
-cons 3 : OK, 100 tests.
-cons 4 : OK, 100 tests.
-snoc : OK, 100 tests.
-head/pack : OK, 100 tests.
-head/unpack : OK, 100 tests.
-tail/pack : OK, 100 tests.
-tail/unpack : OK, 100 tests.
-last : OK, 100 tests.
-init : OK, 100 tests.
-append 1 : OK, 100 tests.
-append 2 : OK, 100 tests.
-append 3 : OK, 100 tests.
-map 1 : OK, 100 tests.
-map 2 : OK, 100 tests.
-map 3 : OK, 100 tests.
-filter 1 : OK, 100 tests.
-filter 2 : OK, 100 tests.
-reverse : OK, 100 tests.
-reverse1 : OK, 100 tests.
-reverse2 : OK, 100 tests.
-transpose : OK, 100 tests.
-foldl : OK, 100 tests.
-foldl/reverse : OK, 100 tests.
-foldr : OK, 100 tests.
-foldr/id : OK, 100 tests.
-foldl1/foldl : OK, 100 tests.
-foldl1/head : OK, 100 tests.
-foldl1/tail : OK, 100 tests.
-foldr1/foldr : OK, 100 tests.
-foldr1/last : OK, 100 tests.
-foldr1/head : OK, 100 tests.
-concat 1 : OK, 100 tests.
-concat 2 : OK, 100 tests.
-concat/pack : OK, 100 tests.
-any : OK, 100 tests.
-all : OK, 100 tests.
-maximum : OK, 100 tests.
-minimum : OK, 100 tests.
-replicate 1 : OK, 100 tests.
-replicate 2 : OK, 100 tests.
-take : OK, 100 tests.
-drop : OK, 100 tests.
-splitAt : OK, 100 tests.
-takeWhile : OK, 100 tests.
-dropWhile : OK, 100 tests.
-break : OK, 100 tests.
-span : OK, 100 tests.
-break/span : OK, 100 tests.
-split : OK, 100 tests.
-splitWith : OK, 100 tests.
-join.split/id : OK, 100 tests.
-group : OK, 100 tests.
-index : OK, 100 tests.
-elemIndex : OK, 100 tests.
-elemIndices : OK, 100 tests.
-count/elemIndices : OK, 100 tests.
-findIndex : OK, 100 tests.
-findIndices : OK, 100 tests.
-find : OK, 100 tests.
-find/findIndex : OK, 100 tests.
-elem : OK, 100 tests.
-notElem : OK, 100 tests.
-elem/notElem : OK, 100 tests.
-isPrefixOf : OK, 100 tests.
-concatMap : OK, 100 tests.
diff --git a/testsuite/tests/lib/Data.ByteString/bytestring006.hs b/testsuite/tests/lib/Data.ByteString/bytestring006.hs
deleted file mode 100644
index d58147a485..0000000000
--- a/testsuite/tests/lib/Data.ByteString/bytestring006.hs
+++ /dev/null
@@ -1,10 +0,0 @@
-
-module Main (main) where
-
-import qualified Data.ByteString.Char8 as B
-import qualified Data.ByteString.Lazy.Char8 as L
-
-main :: IO ()
-main = do print $ map B.unpack $ B.lines $ B.pack "a\n\nb\n\nc"
- print $ map L.unpack $ L.lines $ L.pack "a\n\nb\n\nc"
-
diff --git a/testsuite/tests/lib/Data.ByteString/bytestring006.stdout b/testsuite/tests/lib/Data.ByteString/bytestring006.stdout
deleted file mode 100644
index 240d746197..0000000000
--- a/testsuite/tests/lib/Data.ByteString/bytestring006.stdout
+++ /dev/null
@@ -1,2 +0,0 @@
-["a","","b","","c"]
-["a","","b","","c"]
diff --git a/testsuite/tests/lib/Data.Fixed/Makefile b/testsuite/tests/lib/Data.Fixed/Makefile
deleted file mode 100644
index 9101fbd40a..0000000000
--- a/testsuite/tests/lib/Data.Fixed/Makefile
+++ /dev/null
@@ -1,3 +0,0 @@
-TOP=../../..
-include $(TOP)/mk/boilerplate.mk
-include $(TOP)/mk/test.mk
diff --git a/testsuite/tests/lib/Data.Fixed/all.T b/testsuite/tests/lib/Data.Fixed/all.T
deleted file mode 100644
index c4d77d28c8..0000000000
--- a/testsuite/tests/lib/Data.Fixed/all.T
+++ /dev/null
@@ -1 +0,0 @@
-test('data-fixed-show-read', normal, compile_and_run, [''])
diff --git a/testsuite/tests/lib/Data.Fixed/data-fixed-show-read.hs b/testsuite/tests/lib/Data.Fixed/data-fixed-show-read.hs
deleted file mode 100644
index 349f639f2c..0000000000
--- a/testsuite/tests/lib/Data.Fixed/data-fixed-show-read.hs
+++ /dev/null
@@ -1,22 +0,0 @@
-
-module Main (main) where
-
-import Data.Fixed
-
-main :: IO ()
-main = do doit 38.001
- doit 38.009
- doit 38.01
- doit 38.09
- print (read "38" :: Centi)
- doit (-38.001)
- doit (-38.009)
- doit (-38.01)
- doit (-38.09)
- print (read "-38" :: Centi)
-
-doit :: Centi -> IO ()
-doit c = do let s = show c
- r = read s :: Centi
- putStrLn s
- print r
diff --git a/testsuite/tests/lib/Data.Fixed/data-fixed-show-read.stdout b/testsuite/tests/lib/Data.Fixed/data-fixed-show-read.stdout
deleted file mode 100644
index 0e5d7caef5..0000000000
--- a/testsuite/tests/lib/Data.Fixed/data-fixed-show-read.stdout
+++ /dev/null
@@ -1,18 +0,0 @@
-38.00
-38.00
-38.00
-38.00
-38.01
-38.01
-38.09
-38.09
-38.00
--38.00
--38.00
--38.00
--38.00
--38.01
--38.01
--38.09
--38.09
--38.00
diff --git a/testsuite/tests/lib/Data.HashTable/Makefile b/testsuite/tests/lib/Data.HashTable/Makefile
deleted file mode 100644
index 9101fbd40a..0000000000
--- a/testsuite/tests/lib/Data.HashTable/Makefile
+++ /dev/null
@@ -1,3 +0,0 @@
-TOP=../../..
-include $(TOP)/mk/boilerplate.mk
-include $(TOP)/mk/test.mk
diff --git a/testsuite/tests/lib/Data.HashTable/all.T b/testsuite/tests/lib/Data.HashTable/all.T
deleted file mode 100644
index 20b60f27cc..0000000000
--- a/testsuite/tests/lib/Data.HashTable/all.T
+++ /dev/null
@@ -1 +0,0 @@
-test('hash001', normal, compile_and_run, [''])
diff --git a/testsuite/tests/lib/Data.HashTable/hash001.hs b/testsuite/tests/lib/Data.HashTable/hash001.hs
deleted file mode 100644
index 727f488eb3..0000000000
--- a/testsuite/tests/lib/Data.HashTable/hash001.hs
+++ /dev/null
@@ -1,14 +0,0 @@
-import Data.HashTable
-import qualified Data.HashTable as HT
-
-test :: Int -> IO ()
-test n = do ht <- new (==) hashInt
- sequence_ [ insert ht key 0 | key <- [0..n]]
- sequence_ [ insert ht key 1 | key <- [0..n]]
-
- let check key = do (Just val) <- HT.lookup ht key
- if val==1 then return () else putStrLn $ show key
-
- sequence_ [ check key | key <- [0..n]]
-
-main = test 2048
diff --git a/testsuite/tests/lib/Data.Ix/Makefile b/testsuite/tests/lib/Data.Ix/Makefile
deleted file mode 100644
index 9101fbd40a..0000000000
--- a/testsuite/tests/lib/Data.Ix/Makefile
+++ /dev/null
@@ -1,3 +0,0 @@
-TOP=../../..
-include $(TOP)/mk/boilerplate.mk
-include $(TOP)/mk/test.mk
diff --git a/testsuite/tests/lib/Data.Ix/all.T b/testsuite/tests/lib/Data.Ix/all.T
deleted file mode 100644
index 972be5dc08..0000000000
--- a/testsuite/tests/lib/Data.Ix/all.T
+++ /dev/null
@@ -1 +0,0 @@
-test('ix001', normal, compile_and_run, [''])
diff --git a/testsuite/tests/lib/Data.Ix/ix001.hs b/testsuite/tests/lib/Data.Ix/ix001.hs
deleted file mode 100644
index c723472bce..0000000000
--- a/testsuite/tests/lib/Data.Ix/ix001.hs
+++ /dev/null
@@ -1,4 +0,0 @@
-import Data.Ix
-import Data.Int
-
-main = print (index (minBound::Int16,maxBound) maxBound)
diff --git a/testsuite/tests/lib/Data.Ix/ix001.stdout b/testsuite/tests/lib/Data.Ix/ix001.stdout
deleted file mode 100644
index 7a53b35687..0000000000
--- a/testsuite/tests/lib/Data.Ix/ix001.stdout
+++ /dev/null
@@ -1 +0,0 @@
-65535
diff --git a/testsuite/tests/lib/Data.List/Makefile b/testsuite/tests/lib/Data.List/Makefile
deleted file mode 100644
index 9101fbd40a..0000000000
--- a/testsuite/tests/lib/Data.List/Makefile
+++ /dev/null
@@ -1,3 +0,0 @@
-TOP=../../..
-include $(TOP)/mk/boilerplate.mk
-include $(TOP)/mk/test.mk
diff --git a/testsuite/tests/lib/Data.List/all.T b/testsuite/tests/lib/Data.List/all.T
deleted file mode 100644
index 125734882a..0000000000
--- a/testsuite/tests/lib/Data.List/all.T
+++ /dev/null
@@ -1,2 +0,0 @@
-test('take001', extra_run_opts('1'), compile_and_run, [''])
-test('genericNegative001', extra_run_opts('-1'), compile_and_run, ['']) \ No newline at end of file
diff --git a/testsuite/tests/lib/Data.List/genericNegative001.hs b/testsuite/tests/lib/Data.List/genericNegative001.hs
deleted file mode 100644
index f59a42ffbc..0000000000
--- a/testsuite/tests/lib/Data.List/genericNegative001.hs
+++ /dev/null
@@ -1,8 +0,0 @@
--- Test for http://hackage.haskell.org/trac/ghc/ticket/2533
-import System.Environment
-import Data.List
-main = do
- (n:_) <- getArgs
- print (genericTake (read n) "none taken")
- print (genericDrop (read n) "none dropped")
- print (genericSplitAt (read n) "none split")
diff --git a/testsuite/tests/lib/Data.List/genericNegative001.stdout b/testsuite/tests/lib/Data.List/genericNegative001.stdout
deleted file mode 100644
index b8a090716c..0000000000
--- a/testsuite/tests/lib/Data.List/genericNegative001.stdout
+++ /dev/null
@@ -1,3 +0,0 @@
-""
-"none dropped"
-("","none split")
diff --git a/testsuite/tests/lib/Data.List/take001.hs b/testsuite/tests/lib/Data.List/take001.hs
deleted file mode 100644
index a7a531480a..0000000000
--- a/testsuite/tests/lib/Data.List/take001.hs
+++ /dev/null
@@ -1,5 +0,0 @@
--- Test for bug #1219, F/B rule for take was too strict
-import System.Environment
-main = do
- (n:_) <- getArgs
- print (map (const 'x') (take (read n) (undefined:undefined)))
diff --git a/testsuite/tests/lib/Data.List/take001.stdout b/testsuite/tests/lib/Data.List/take001.stdout
deleted file mode 100644
index 92232f694a..0000000000
--- a/testsuite/tests/lib/Data.List/take001.stdout
+++ /dev/null
@@ -1 +0,0 @@
-"x"
diff --git a/testsuite/tests/lib/IO/2122.hs b/testsuite/tests/lib/IO/2122.hs
deleted file mode 100644
index 6807f3476a..0000000000
--- a/testsuite/tests/lib/IO/2122.hs
+++ /dev/null
@@ -1,76 +0,0 @@
-{-
-
-Before running this, check that /tmp/test does not exist and
-contain something important. Then do:
-
- $ touch /tmp/test
-
-If you do:
-
- $ runhaskell Test.hs
-
-it will work. If you do:
-
- $ runhaskell Test.hs fail
-
-it will fail every time with:
-
-Test.hs: writeFile: /tmp/test: openFile: resource busy (file is locked)
-
--}
-
-import Control.Monad
-import System.Directory
-import System.IO
-import System.Environment
--- Used by test2:
--- import System.Posix.IO
-
-fp = "2122-test"
-
-main :: IO ()
-main = do
- writeFile fp "test"
- test True
-
--- fails everytime when causeFailure is True in GHCi, with runhaskell,
--- or when compiled.
-test :: Bool -> IO ()
-test causeFailure =
- do h1 <- openFile fp ReadMode `Prelude.catch` (\e -> error ("openFile 1: " ++ show e))
- when causeFailure $ do
- h2 <- openFile fp ReadMode `Prelude.catch` (\e -> error ("openFile 2: " ++ show e))
- hClose h2
- hClose h1
- removeFile fp
- writeFile fp (show [1..100]) `Prelude.catch` (\e -> error ("writeFile: " ++ show e))
-
-{-
--- this version never fails (except in GHCi, if test has previously failed).
--- probably because openFd does not try to lock the file
-test2 :: Bool -> IO ()
-test2 causeFailure =
- do fd1 <- openFd fp ReadOnly Nothing defaultFileFlags `Prelude.catch` (\e -> error ("openFile 1: " ++ show e))
- when causeFailure $ do
- fd2 <- openFd fp ReadOnly Nothing defaultFileFlags `Prelude.catch` (\e -> error ("openFile 2: " ++ show e))
- closeFd fd2
- closeFd fd1
- removeFile fp
- writeFile fp (show [1..100]) `Prelude.catch` (\e -> error ("writeFile: " ++ show e))
--}
-
-{-
--- fails sometimes when run repeated in GHCi, but seems fine with
--- runhaskell or compiled
-test3 :: IO ()
-test3 =
- do h1 <- openFile fp ReadMode `Prelude.catch` (\e -> error ("openFile 1: " ++ show e))
- h2 <- openFile fp ReadMode `Prelude.catch` (\e -> error ("openFile 2: " ++ show e))
- removeFile fp
- writeFile fp (show [1..100]) `Prelude.catch` (\e -> error ("writeFile: " ++ show e))
- print =<< hGetContents h1
- print =<< hGetContents h2
- hClose h2
- hClose h1
--}
-
diff --git a/testsuite/tests/lib/IO/3307.hs b/testsuite/tests/lib/IO/3307.hs
deleted file mode 100644
index fb1a360ea2..0000000000
--- a/testsuite/tests/lib/IO/3307.hs
+++ /dev/null
@@ -1,52 +0,0 @@
-import Control.Exception
-
-import System.Directory
-import System.Environment
-import System.IO
-
-import Data.Char
-import Data.List
-
-import GHC.IO.Encoding
-
-main = do
- hSetBuffering stdout NoBuffering
-
- -- 1) A file name arriving via an argument
- putStrLn "Test 1"
- [file] <- getArgs
- print $ map ord file
- readFile file >>= putStr
-
- -- 2) A file name arriving via getDirectoryContents
- putStrLn "Test 2"
- [file] <- fmap (filter ("chinese-file-" `isPrefixOf`)) $ getDirectoryContents "."
- print $ map ord file
- readFile file >>= putStr
-
- -- 3) A file name occurring literally in the program
- -- The file is created with a UTF-8 file name as well, so this will only work in Windows or a
- -- UTF-8 locale, or this string will be encoded in some non-UTF-8 way and won't match.
- putStrLn "Test 3"
- let file = "chinese-file-å°è¯´"
- print $ map ord file
- readFile file >>= putStr
-
- -- 4) A file name arriving via another file.
- -- Again, the file is created with UTF-8 contents, so we read it in that encoding.
- -- Once again, on non-Windows this may fail in a non-UTF-8 locale because we could encode the valid
- -- filename string into a useless non-UTF-8 byte sequence.
- putStrLn "Test 4"
- str <- readFileAs utf8 "chinese-name"
- let file = dropTrailingSpace str
- print $ map ord file
- readFile file >>= putStr
-
-readFileAs :: TextEncoding -> FilePath -> IO String
-readFileAs enc fp = do
- h <- openFile fp ReadMode
- hSetEncoding h enc
- hGetContents h
-
-dropTrailingSpace :: String -> String
-dropTrailingSpace = reverse . dropWhile (not . isAlphaNum) . reverse
diff --git a/testsuite/tests/lib/IO/3307.stdout b/testsuite/tests/lib/IO/3307.stdout
deleted file mode 100644
index 8b26b5ff1d..0000000000
--- a/testsuite/tests/lib/IO/3307.stdout
+++ /dev/null
@@ -1,12 +0,0 @@
-Test 1
-[99,104,105,110,101,115,101,45,102,105,108,101,45,23567,35828]
-Ni hao
-Test 2
-[99,104,105,110,101,115,101,45,102,105,108,101,45,23567,35828]
-Ni hao
-Test 3
-[99,104,105,110,101,115,101,45,102,105,108,101,45,23567,35828]
-Ni hao
-Test 4
-[99,104,105,110,101,115,101,45,102,105,108,101,45,23567,35828]
-Ni hao
diff --git a/testsuite/tests/lib/IO/4808.hs b/testsuite/tests/lib/IO/4808.hs
deleted file mode 100644
index 5d64762dcd..0000000000
--- a/testsuite/tests/lib/IO/4808.hs
+++ /dev/null
@@ -1,13 +0,0 @@
-import System.IO
-import GHC.IO.Handle
-import GHC.IO.FD as FD
-
-main = do
- writeFile "4808.test" "This is some test data"
- (fd, _) <- FD.openFile "4808.test" ReadWriteMode False
- hdl <- mkDuplexHandle fd "4808.test" Nothing nativeNewlineMode
- hClose hdl
- (fd2, _) <- FD.openFile "4808.test" ReadWriteMode False
- print (fdFD fd == fdFD fd2) -- should be True
- hGetLine hdl >>= print -- should fail with an exception
-
diff --git a/testsuite/tests/lib/IO/4808.stderr b/testsuite/tests/lib/IO/4808.stderr
deleted file mode 100644
index 25396c9373..0000000000
--- a/testsuite/tests/lib/IO/4808.stderr
+++ /dev/null
@@ -1 +0,0 @@
-4808: 4808.test: hGetLine: illegal operation (handle is closed)
diff --git a/testsuite/tests/lib/IO/4855.hs b/testsuite/tests/lib/IO/4855.hs
deleted file mode 100644
index fa862aaf14..0000000000
--- a/testsuite/tests/lib/IO/4855.hs
+++ /dev/null
@@ -1,3 +0,0 @@
-import Debug.Trace
-
-main = trace "我爱我的电脑" $ return () \ No newline at end of file
diff --git a/testsuite/tests/lib/IO/4855.stderr b/testsuite/tests/lib/IO/4855.stderr
deleted file mode 100644
index 558550e229..0000000000
--- a/testsuite/tests/lib/IO/4855.stderr
+++ /dev/null
@@ -1 +0,0 @@
-我爱我的电脑
diff --git a/testsuite/tests/lib/IO/4895.hs b/testsuite/tests/lib/IO/4895.hs
deleted file mode 100644
index bb37915e19..0000000000
--- a/testsuite/tests/lib/IO/4895.hs
+++ /dev/null
@@ -1,9 +0,0 @@
-module Main where
-import Foreign.Marshal.Alloc
-import System.IO
-
-main = do
- h <- openBinaryFile "4895.hs" ReadMode
- allocaBytes 10 $ \ptr -> hGetBuf h ptr 10
- some <- allocaBytes 10 $ \ptr -> hGetBufSome h ptr 10
- print some
diff --git a/testsuite/tests/lib/IO/4895.stdout b/testsuite/tests/lib/IO/4895.stdout
deleted file mode 100644
index f599e28b8a..0000000000
--- a/testsuite/tests/lib/IO/4895.stdout
+++ /dev/null
@@ -1 +0,0 @@
-10
diff --git a/testsuite/tests/lib/IO/IOError001.hs b/testsuite/tests/lib/IO/IOError001.hs
deleted file mode 100644
index dee7f31e29..0000000000
--- a/testsuite/tests/lib/IO/IOError001.hs
+++ /dev/null
@@ -1,7 +0,0 @@
-
--- test for a bug in GHC <= 4.08.2: handles were being left locked after
--- being shown in an error message.
-main = do
- getContents
- catch getChar (\e -> print e >> return 'x')
- catch getChar (\e -> print e >> return 'x')
diff --git a/testsuite/tests/lib/IO/IOError001.stdout b/testsuite/tests/lib/IO/IOError001.stdout
deleted file mode 100644
index 1e689bb0f9..0000000000
--- a/testsuite/tests/lib/IO/IOError001.stdout
+++ /dev/null
@@ -1,2 +0,0 @@
-<stdin>: hGetChar: illegal operation (handle is closed)
-<stdin>: hGetChar: illegal operation (handle is closed)
diff --git a/testsuite/tests/lib/IO/IOError001.stdout-hugs b/testsuite/tests/lib/IO/IOError001.stdout-hugs
deleted file mode 100644
index 036084a006..0000000000
--- a/testsuite/tests/lib/IO/IOError001.stdout-hugs
+++ /dev/null
@@ -1,2 +0,0 @@
-<stdin>: getChar: illegal operation (handle is semi-closed)
-<stdin>: getChar: illegal operation (handle is semi-closed)
diff --git a/testsuite/tests/lib/IO/IOError002.hs b/testsuite/tests/lib/IO/IOError002.hs
deleted file mode 100644
index 144e62783b..0000000000
--- a/testsuite/tests/lib/IO/IOError002.hs
+++ /dev/null
@@ -1,5 +0,0 @@
--- !!! IOErrors should have Eq defined
-
-import System.IO
-
-main = print (userError "urk" == userError "urk")
diff --git a/testsuite/tests/lib/IO/IOError002.stdout b/testsuite/tests/lib/IO/IOError002.stdout
deleted file mode 100644
index 0ca95142bb..0000000000
--- a/testsuite/tests/lib/IO/IOError002.stdout
+++ /dev/null
@@ -1 +0,0 @@
-True
diff --git a/testsuite/tests/lib/IO/Makefile b/testsuite/tests/lib/IO/Makefile
deleted file mode 100644
index 6808f5f868..0000000000
--- a/testsuite/tests/lib/IO/Makefile
+++ /dev/null
@@ -1,48 +0,0 @@
-TOP=../../..
-include $(TOP)/mk/boilerplate.mk
-include $(TOP)/mk/test.mk
-
-test.concio001:
- $(TEST_HC) $(TEST_HC_OPTS) --make -fforce-recomp -v0 concio001 -o concio001
- (sleep 1; echo x) | ./concio001
-
-test.concio001.thr:
- $(TEST_HC) $(TEST_HC_OPTS) --make -fforce-recomp -v0 -threaded concio001 -o concio001
- (sleep 1; echo x) | ./concio001
-
-# NB. utf8-test should *not* have a final newline. The last char should be 'X'.
-utf16-test: utf8-test
- iconv -f UTF-8 -t UTF-16 <utf8-test >utf16-test
-
-utf16le-test: utf8-test
- iconv -f UTF-8 -t UTF-16LE <utf8-test >utf16le-test
-
-utf16be-test: utf8-test
- iconv -f UTF-8 -t UTF-16BE <utf8-test >utf16be-test
-
-utf32-test: utf8-test
- iconv -f UTF-8 -t UTF-32 <utf8-test >utf32-test
-
-utf32le-test: utf8-test
- iconv -f UTF-8 -t UTF-32LE <utf8-test >utf32le-test
-
-utf32be-test: utf8-test
- iconv -f UTF-8 -t UTF-32BE <utf8-test >utf32be-test
-
-utf8-bom-test: utf16-test
- iconv -f UTF-16LE -t UTF-8 <utf16-test >utf8-bom-test
-
-hSetEncoding001.in : latin1 utf8-test utf16le-test utf16be-test utf16-test utf32le-test utf32be-test utf32-test utf8-bom-test
- cat >$@ latin1 utf8-test utf16le-test utf16be-test utf16-test utf32-test utf32le-test utf32be-test utf8-bom-test
-
-environment001-test:
- "$(TEST_HC)" --make -fforce-recomp -v0 environment001.hs -o environment001
- GHC_TEST=马克斯 ./environment001 说
-
-3307-test:
- "$(TEST_HC)" --make -fforce-recomp -v0 3307.hs -o 3307
- echo Ni hao > chinese-file-å°è¯´
- echo chinese-file-å°è¯´ > chinese-name
- # The tests are run in whatever the default locale is. This is almost always UTF-8,
- # but in cmd on Windows it will be the non-Unicode CP850 locale.
- ./3307 chinese-file-å°è¯´
diff --git a/testsuite/tests/lib/IO/T4113.hs b/testsuite/tests/lib/IO/T4113.hs
deleted file mode 100644
index 3bc8096baa..0000000000
--- a/testsuite/tests/lib/IO/T4113.hs
+++ /dev/null
@@ -1,20 +0,0 @@
-
-module Main (main) where
-
-import Control.Exception
-import Prelude hiding (catch)
-import System.Directory
-
-main :: IO ()
-main = do doit ""
- doit "/no/such/file"
-
-doit :: FilePath -> IO ()
-doit fp = do fp' <- canonicalizePath fp
- print (fp, mangle fp')
- `catch` \e -> putStrLn ("Exception: " ++ show (e :: IOException))
- where -- On Windows, "/no/such/file" -> "C:\\no\\such\\file", so
- -- we remove the drive letter so as to get consistent output
- mangle (_ : ':' : xs) = "drive:" ++ xs
- mangle xs = xs
-
diff --git a/testsuite/tests/lib/IO/T4113.stdout b/testsuite/tests/lib/IO/T4113.stdout
deleted file mode 100644
index 86a7e9e295..0000000000
--- a/testsuite/tests/lib/IO/T4113.stdout
+++ /dev/null
@@ -1,2 +0,0 @@
-Exception: : canonicalizePath: does not exist (No such file or directory)
-Exception: /no/such/file: canonicalizePath: does not exist (No such file or directory)
diff --git a/testsuite/tests/lib/IO/T4113.stdout-i386-unknown-mingw32 b/testsuite/tests/lib/IO/T4113.stdout-i386-unknown-mingw32
deleted file mode 100644
index 16f302c475..0000000000
--- a/testsuite/tests/lib/IO/T4113.stdout-i386-unknown-mingw32
+++ /dev/null
@@ -1,2 +0,0 @@
-Exception: getFullPathName: invalid argument (The filename, directory name, or volume label syntax is incorrect.)
-("/no/such/file","drive:\\no\\such\\file")
diff --git a/testsuite/tests/lib/IO/T4144.hs b/testsuite/tests/lib/IO/T4144.hs
deleted file mode 100644
index ca14363682..0000000000
--- a/testsuite/tests/lib/IO/T4144.hs
+++ /dev/null
@@ -1,115 +0,0 @@
-{-# LANGUAGE OverloadedStrings, DeriveDataTypeable #-}
-module Main (main) where
-
-import Control.Applicative
-import Control.Concurrent.MVar
-import Control.Monad
-
-import Data.ByteString (ByteString)
-import qualified Data.ByteString as B
-import qualified Data.ByteString.Char8
-import Data.ByteString.Char8()
-import Data.ByteString.Unsafe as B
-import Data.ByteString.Internal (memcpy)
-import Data.Typeable (Typeable)
-import Data.Word
-
-import Foreign
-
-import GHC.IO.Buffer
-import GHC.IO.BufferedIO
-import GHC.IO.Device
-import GHC.IO.Handle
-
-import System.IO
-
--- | Create a seakable read-handle from a bytestring
-bsHandle :: ByteString -> FilePath -> IO Handle
-bsHandle bs fp
- = newBsDevice bs >>= \dev ->
- mkFileHandle dev fp ReadMode Nothing noNewlineTranslation
-
-data BSIODevice
- = BSIODevice
- ByteString
- (MVar Int) -- Position
- deriving Typeable
-
-newBsDevice :: ByteString -> IO BSIODevice
-newBsDevice bs = BSIODevice bs <$> newMVar 0
-
-remaining :: BSIODevice -> IO Int
-remaining (BSIODevice bs mPos)
- = do
- let bsLen = B.length bs
- withMVar mPos $ \pos -> return (bsLen - pos)
-
-sizeBS :: BSIODevice -> Int
-sizeBS (BSIODevice bs _) = B.length bs
-
-seekBS :: BSIODevice -> SeekMode -> Int -> IO ()
-seekBS dev AbsoluteSeek pos
- | pos < 0 = error "Cannot seek to a negative position!"
- | pos > sizeBS dev = error "Cannot seek past end of handle!"
- | otherwise = case dev of
- BSIODevice _ mPos
- -> modifyMVar_ mPos $ \_ -> return pos
-seekBS dev SeekFromEnd pos = seekBS dev AbsoluteSeek (sizeBS dev - pos)
-seekBS dev RelativeSeek pos
- = case dev of
- BSIODevice _bs mPos
- -> modifyMVar_ mPos $ \curPos ->
- let newPos = curPos + pos
- in if newPos < 0 || newPos > sizeBS dev
- then error "Cannot seek outside of handle!"
- else return newPos
-
-tellBS :: BSIODevice -> IO Int
-tellBS (BSIODevice _ mPos) = readMVar mPos
-
-dupBS :: BSIODevice -> IO BSIODevice
-dupBS (BSIODevice bs mPos) = BSIODevice bs <$> (readMVar mPos >>= newMVar)
-
-readBS :: BSIODevice -> Ptr Word8 -> Int -> IO Int
-readBS dev@(BSIODevice bs mPos) buff amount
- = do
- rem <- remaining dev
- if amount > rem
- then readBS dev buff rem
- else B.unsafeUseAsCString bs $ \ptr ->
- do
- memcpy buff (castPtr ptr) (fromIntegral amount)
- modifyMVar_ mPos (return . (+amount))
- return amount
-
-instance BufferedIO BSIODevice where
- newBuffer dev buffState = newByteBuffer (sizeBS dev) buffState
- fillReadBuffer dev buff = readBuf dev buff
- fillReadBuffer0 dev buff
- = do
- (amount, buff') <- fillReadBuffer dev buff
- return (if amount == 0 then Nothing else Just amount, buff')
-
-instance RawIO BSIODevice where
- read = readBS
- readNonBlocking dev buff n = Just `liftM` readBS dev buff n
-
-instance IODevice BSIODevice where
- ready _ True _ = return False -- read only
- ready _ False _ = return True -- always ready
-
- close _ = return ()
- isTerminal _ = return False
- isSeekable _ = return True
- seek dev seekMode pos = seekBS dev seekMode (fromIntegral pos)
- tell dev = fromIntegral <$> tellBS dev
- getSize dev = return $ fromIntegral $ sizeBS dev
- setEcho _ _ = error "Not a terminal device"
- getEcho _ = error "Not a terminal device"
- setRaw _ _ = error "Raw mode not supported"
- devType _ = return RegularFile
- dup = dupBS
- dup2 _ _ = error "Dup2 not supported"
-
-
-main = bsHandle "test" "<fake file>" >>= Data.ByteString.Char8.hGetContents >>= print
diff --git a/testsuite/tests/lib/IO/T4144.stdout b/testsuite/tests/lib/IO/T4144.stdout
deleted file mode 100644
index 8b8441b91d..0000000000
--- a/testsuite/tests/lib/IO/T4144.stdout
+++ /dev/null
@@ -1 +0,0 @@
-"test"
diff --git a/testsuite/tests/lib/IO/all.T b/testsuite/tests/lib/IO/all.T
deleted file mode 100644
index 4bb14e689f..0000000000
--- a/testsuite/tests/lib/IO/all.T
+++ /dev/null
@@ -1,157 +0,0 @@
-# -*- coding: utf-8 -*-
-
-def expect_fail_if_windows(opts):
- f = if_platform('i386-unknown-mingw32', expect_fail);
- return f(opts);
-
-test('IOError001', compose(omit_ways(['ghci']), set_stdin('IOError001.hs')),
- compile_and_run, [''])
-
-test('IOError002', normal, compile_and_run, [''])
-test('finalization001', normal, compile_and_run, [''])
-test('hClose001', extra_clean(['hClose001.tmp']), compile_and_run, [''])
-test('hClose002', extra_clean(['hClose002.tmp']), compile_and_run, [''])
-test('hClose003', reqlib('unix'), compile_and_run, ['-package unix'])
-test('hFileSize001', normal, compile_and_run, [''])
-test('hFileSize002',
- [omit_ways(['ghci']),
- extra_clean(['hFileSize002.out'])],
- compile_and_run, [''])
-test('hFlush001',
- extra_clean(['hFlush001.out']),
- compile_and_run, [''])
-
-test('hGetBuffering001',
- compose(omit_ways(['ghci']), set_stdin('hGetBuffering001.hs')),
- compile_and_run, [''])
-
-test('hGetChar001', normal, compile_and_run, [''])
-test('hGetLine001', set_stdin('hGetLine001.hs'), compile_and_run, ['-cpp'])
-test('hGetLine002', normal, compile_and_run, [''])
-test('hGetLine003', normal, compile_and_run, [''])
-test('hGetPosn001',
- extra_clean(['hGetPosn001.out']),
- compile_and_run, ['-cpp'])
-test('hIsEOF001', normal, compile_and_run, [''])
-test('hIsEOF002', extra_clean(['hIsEOF002.out']), compile_and_run, ['-cpp'])
-
-test('hReady001', normal, compile_and_run, ['-cpp'])
-
-# hReady002 tests that hReady returns False for a pipe that has no
-# data to read. It relies on piping input from 'sleep 1', which doesn't
-# work for the 'ghci' way because in that case we already pipe input from
-# a script, so hence omit_ways(['ghci'])
-test('hReady002', [ no_stdin, cmd_prefix('sleep 1 |'),
- omit_ways(['ghci']) ],
- compile_and_run, [''])
-
-test('hSeek001', normal, compile_and_run, [''])
-test('hSeek002', normal, compile_and_run, ['-cpp'])
-test('hSeek003', normal, compile_and_run, ['-cpp'])
-test('hSeek004', extra_clean(['hSeek004.out']), compile_and_run, ['-cpp'])
-
-test('hSetBuffering002', set_stdin('hSetBuffering002.hs'), compile_and_run, [''])
-
-test('hSetBuffering003', compose(omit_ways(['ghci']),
- set_stdin('hSetBuffering003.hs')),
- compile_and_run, [''])
-
-test('hSetBuffering004', set_stdin('hSetBuffering004.hs'), compile_and_run, [''])
-
-test('ioeGetErrorString001', normal, compile_and_run, ['-cpp'])
-test('ioeGetFileName001', normal, compile_and_run, ['-cpp'])
-test('ioeGetHandle001', normal, compile_and_run, ['-cpp'])
-test('isEOF001', normal, compile_and_run, [''])
-
-test('misc001',
- [extra_run_opts('misc001.hs misc001.out'),
- extra_clean(['misc001.out'])],
- compile_and_run, [''])
-
-test('openFile001', normal, compile_and_run, [''])
-test('openFile002', exit_code(1), compile_and_run, [''])
-test('openFile003', extra_clean(['openFile003Dir']), compile_and_run, [''])
-test('openFile004', extra_clean(['openFile004.out']), compile_and_run, [''])
-test('openFile005',
- [if_compiler_type('hugs', expect_fail),
- extra_clean(['openFile005.out1', 'openFile005.out2'])],
- compile_and_run, [''])
-test('openFile006', extra_clean(['openFile006.out']), compile_and_run, [''])
-test('openFile007',
- [if_compiler_type('hugs', expect_fail),
- extra_clean(['openFile007.out'])],
- compile_and_run, [''])
-test('openFile008', cmd_prefix('ulimit -n 1024; '), compile_and_run, [''])
-
-test('putStr001', normal, compile_and_run, [''])
-test('readFile001',
- [if_compiler_type('hugs', expect_fail),
- extra_clean(['readFile001.out'])],
- compile_and_run, [''])
-test('readwrite001',
- extra_clean(['readwrite001.inout']),
- compile_and_run,
- ['-cpp'])
-
-
-test('readwrite002',
- [omit_ways(['ghci']),
- set_stdin('readwrite002.hs'),
- extra_clean(['readwrite002.inout'])],
- compile_and_run, ['-cpp'])
-
-test('readwrite003', extra_clean(['readwrite003.txt']), compile_and_run, [''])
-
-test('hGetBuf001', compose(only_compiler_types(['ghc']),
- compose(skip_if_fast,
- expect_fail_if_windows)), compile_and_run, ['-package unix'])
-
-test('hDuplicateTo001', extra_clean(['tmp']), compile_and_run, [''])
-
-test('countReaders001',
- extra_clean(['countReaders001.txt']),
- compile_and_run, [''])
-
-test('concio001', skip, run_command, ['$MAKE -s --no-print-directory test.concio001'])
-test('concio001.thr', skip, run_command, ['$MAKE -s --no-print-directory test.concio001.thr'])
-
-test('concio002', reqlib('process'), compile_and_run, [''])
-
-test('2122', extra_clean(['2122-test']), compile_and_run, [''])
-test('3307',
- [extra_clean(['chinese-file-å°è¯´', 'chinese-name'])],
- run_command,
- ['$MAKE -s --no-print-directory 3307-test'])
-test('4855', normal, compile_and_run, [''])
-
-test('hSetEncoding001',extra_run_opts('hSetEncoding001.in'), compile_and_run, [''])
-test('decodingerror001',normal, compile_and_run, [''])
-test('decodingerror002',normal, compile_and_run, [''])
-
-encoding001Encodings = ["utf8", "utf8_bom", "utf16", "utf16le",
- "utf16be", "utf32", "utf32le", "utf32be"]
-encoding001CleanFiles = []
-for e in encoding001Encodings:
- encoding001CleanFiles.append('encoding001.' + e)
-for e1 in encoding001Encodings:
- for e2 in encoding001Encodings:
- encoding001CleanFiles.append('encoding001.' + e1 + '.' + e2)
-test('encoding001',
- extra_clean(encoding001CleanFiles),
- compile_and_run, [''])
-
-test('encoding002', normal, compile_and_run, [''])
-
-test('environment001', extra_clean(['environment001']), run_command, ['$MAKE -s --no-print-directory environment001-test'])
-
-test('newline001', extra_clean(['newline001.out']), compile_and_run, [''])
-
-test('openTempFile001', normal, compile_and_run, [''])
-test('T4113', normal, compile_and_run, [''])
-
-test('T4144', normal, compile_and_run, [''])
-
-test('encodingerror001', normal, compile_and_run, [''])
-
-test('4808', [exit_code(1), extra_clean(['4808.test'])], compile_and_run, [''])
-test('4895', normal, compile_and_run, [''])
diff --git a/testsuite/tests/lib/IO/concio001.hs b/testsuite/tests/lib/IO/concio001.hs
deleted file mode 100644
index 786a311ce5..0000000000
--- a/testsuite/tests/lib/IO/concio001.hs
+++ /dev/null
@@ -1,6 +0,0 @@
-import Control.Concurrent
-
-main = do
- forkIO $ do threadDelay 100000; putStrLn "child"
- getLine
- putStrLn "parent"
diff --git a/testsuite/tests/lib/IO/concio001.stdout b/testsuite/tests/lib/IO/concio001.stdout
deleted file mode 100644
index 141a8cd80c..0000000000
--- a/testsuite/tests/lib/IO/concio001.stdout
+++ /dev/null
@@ -1,2 +0,0 @@
-child
-parent
diff --git a/testsuite/tests/lib/IO/concio001.thr.stdout b/testsuite/tests/lib/IO/concio001.thr.stdout
deleted file mode 100644
index 141a8cd80c..0000000000
--- a/testsuite/tests/lib/IO/concio001.thr.stdout
+++ /dev/null
@@ -1,2 +0,0 @@
-child
-parent
diff --git a/testsuite/tests/lib/IO/concio002.hs b/testsuite/tests/lib/IO/concio002.hs
deleted file mode 100644
index 60a2ed2a89..0000000000
--- a/testsuite/tests/lib/IO/concio002.hs
+++ /dev/null
@@ -1,14 +0,0 @@
-import System.Process
-import System.IO
-import Control.Concurrent
-
-main = do
- (hin,hout,herr,ph) <- runInteractiveProcess "cat" [] Nothing Nothing
- forkIO $ do threadDelay 100000
- putStrLn "child"
- hFlush stdout
- hPutStrLn hin "msg"
- hFlush hin
- putStrLn "parent1"
- hGetLine hout >>= putStrLn
- putStrLn "parent2"
diff --git a/testsuite/tests/lib/IO/concio002.stdout b/testsuite/tests/lib/IO/concio002.stdout
deleted file mode 100644
index 32640aede5..0000000000
--- a/testsuite/tests/lib/IO/concio002.stdout
+++ /dev/null
@@ -1,4 +0,0 @@
-parent1
-child
-msg
-parent2
diff --git a/testsuite/tests/lib/IO/countReaders001.hs b/testsuite/tests/lib/IO/countReaders001.hs
deleted file mode 100644
index 2648ae77ae..0000000000
--- a/testsuite/tests/lib/IO/countReaders001.hs
+++ /dev/null
@@ -1,17 +0,0 @@
--- test for trac #629. We need to keep track of how many readers
--- there are rather than closing the first read handle causing the
--- lock to be released.
-
-import System.IO
-import System.IO.Error
-
-file = "countReaders001.txt"
-
-main = do
- writeFile file "foo"
-
- h1 <- openFile file ReadMode
- h2 <- openFile file ReadMode
- hClose h1
- tryIOError (openFile file AppendMode) >>= print
-
diff --git a/testsuite/tests/lib/IO/countReaders001.stdout b/testsuite/tests/lib/IO/countReaders001.stdout
deleted file mode 100644
index 41644bff37..0000000000
--- a/testsuite/tests/lib/IO/countReaders001.stdout
+++ /dev/null
@@ -1 +0,0 @@
-Left countReaders001.txt: openFile: resource busy (file is locked)
diff --git a/testsuite/tests/lib/IO/countReaders001.stdout-i386-unknown-mingw32 b/testsuite/tests/lib/IO/countReaders001.stdout-i386-unknown-mingw32
deleted file mode 100644
index bf80d9dc12..0000000000
--- a/testsuite/tests/lib/IO/countReaders001.stdout-i386-unknown-mingw32
+++ /dev/null
@@ -1 +0,0 @@
-Left countReaders001.txt: openFile: permission denied (Permission denied)
diff --git a/testsuite/tests/lib/IO/decodingerror001.hs b/testsuite/tests/lib/IO/decodingerror001.hs
deleted file mode 100644
index 6c9dca1489..0000000000
--- a/testsuite/tests/lib/IO/decodingerror001.hs
+++ /dev/null
@@ -1,22 +0,0 @@
-import Control.Monad
-import System.IO
-import System.IO.Error
-import GHC.IO.Encoding (utf8)
-import GHC.IO.Handle (hSetEncoding)
-
-testfiles = ["decodingerror001.in1", "decodingerror001.in2"]
-
-main = mapM_ alltests testfiles
-
-alltests file = mapM (test file) [NoBuffering,
- LineBuffering,
- BlockBuffering Nothing,
- BlockBuffering (Just 9),
- BlockBuffering (Just 23) ]
-
-test file bufmode = do
- h <- openFile file ReadMode
- hSetEncoding h utf8
- hSetBuffering h bufmode
- e <- try $ forever $ hGetChar h >>= putChar
- print (e :: Either IOError ())
diff --git a/testsuite/tests/lib/IO/decodingerror001.in1 b/testsuite/tests/lib/IO/decodingerror001.in1
deleted file mode 100644
index 7686e7b2f4..0000000000
--- a/testsuite/tests/lib/IO/decodingerror001.in1
+++ /dev/null
@@ -1 +0,0 @@
-UTF8 error:€after error
diff --git a/testsuite/tests/lib/IO/decodingerror001.in2 b/testsuite/tests/lib/IO/decodingerror001.in2
deleted file mode 100644
index fe33bd3883..0000000000
--- a/testsuite/tests/lib/IO/decodingerror001.in2
+++ /dev/null
@@ -1 +0,0 @@
-UTF8 incomplete sequence at end:ð \ No newline at end of file
diff --git a/testsuite/tests/lib/IO/decodingerror001.stdout b/testsuite/tests/lib/IO/decodingerror001.stdout
deleted file mode 100644
index 24ca1a95b0..0000000000
--- a/testsuite/tests/lib/IO/decodingerror001.stdout
+++ /dev/null
@@ -1,10 +0,0 @@
-UTF8 error:Left decodingerror001.in1: hGetChar: invalid argument (invalid byte sequence)
-UTF8 error:Left decodingerror001.in1: hGetChar: invalid argument (invalid byte sequence)
-UTF8 error:Left decodingerror001.in1: hGetChar: invalid argument (invalid byte sequence)
-UTF8 error:Left decodingerror001.in1: hGetChar: invalid argument (invalid byte sequence)
-UTF8 error:Left decodingerror001.in1: hGetChar: invalid argument (invalid byte sequence)
-UTF8 incomplete sequence at end:Left decodingerror001.in2: hGetChar: invalid argument (invalid byte sequence)
-UTF8 incomplete sequence at end:Left decodingerror001.in2: hGetChar: invalid argument (invalid byte sequence)
-UTF8 incomplete sequence at end:Left decodingerror001.in2: hGetChar: invalid argument (invalid byte sequence)
-UTF8 incomplete sequence at end:Left decodingerror001.in2: hGetChar: invalid argument (invalid byte sequence)
-UTF8 incomplete sequence at end:Left decodingerror001.in2: hGetChar: invalid argument (invalid byte sequence)
diff --git a/testsuite/tests/lib/IO/decodingerror002.hs b/testsuite/tests/lib/IO/decodingerror002.hs
deleted file mode 100644
index db610bdebd..0000000000
--- a/testsuite/tests/lib/IO/decodingerror002.hs
+++ /dev/null
@@ -1,23 +0,0 @@
-import Control.Monad
-import System.IO
-import System.IO.Error
-import GHC.IO.Handle (hSetEncoding)
-
-main = do
- -- Explicitly set stdout encoding so that the UTF8//ROUNDTRIP
- -- test is always able to write the surrogate byte out without error.
- enc <- mkTextEncoding "UTF-8//ROUNDTRIP"
- hSetEncoding stdout enc
- alltests "decodingerror002.in"
-
-alltests file = mapM (test file) ["UTF-8",
- "UTF-8//IGNORE",
- "UTF-8//TRANSLIT",
- "UTF-8//ROUNDTRIP"]
-
-test file enc_name = do
- h <- openFile file ReadMode
- enc <- mkTextEncoding enc_name
- hSetEncoding h enc
- e <- try $ forever $ hGetChar h >>= putChar
- print (e :: Either IOError ())
diff --git a/testsuite/tests/lib/IO/decodingerror002.in b/testsuite/tests/lib/IO/decodingerror002.in
deleted file mode 100644
index 195ee38114..0000000000
--- a/testsuite/tests/lib/IO/decodingerror002.in
+++ /dev/null
@@ -1 +0,0 @@
-È \ No newline at end of file
diff --git a/testsuite/tests/lib/IO/decodingerror002.stdout b/testsuite/tests/lib/IO/decodingerror002.stdout
deleted file mode 100644
index e1cef33d0d..0000000000
--- a/testsuite/tests/lib/IO/decodingerror002.stdout
+++ /dev/null
@@ -1,4 +0,0 @@
-Left decodingerror002.in: hGetChar: invalid argument (invalid byte sequence)
-Left decodingerror002.in: hGetChar: end of file
-�Left decodingerror002.in: hGetChar: end of file
-ÈLeft decodingerror002.in: hGetChar: end of file
diff --git a/testsuite/tests/lib/IO/encoding001.hs b/testsuite/tests/lib/IO/encoding001.hs
deleted file mode 100644
index 9480abb09d..0000000000
--- a/testsuite/tests/lib/IO/encoding001.hs
+++ /dev/null
@@ -1,71 +0,0 @@
-import Control.Monad
-import System.IO
-import GHC.IO.Encoding
-import GHC.IO.Handle
-import Data.Bits
-import Data.Word
-import Data.Char
-import System.FilePath
-import System.Exit
-
-file = "encoding001"
-
-encodings = [(utf8, "utf8"),
- (utf8_bom, "utf8_bom"),
- (utf16, "utf16"),
- (utf16le, "utf16le"),
- (utf16be, "utf16be"),
- (utf32, "utf32"),
- (utf32le, "utf32le"),
- (utf32be, "utf32be")]
-
-main = do
- -- make a UTF-32BE file
- h <- openBinaryFile (file <.> "utf32be") WriteMode
- let expand32 :: Word32 -> [Char]
- expand32 x = [
- chr (fromIntegral (x `shiftR` 24) .&. 0xff),
- chr (fromIntegral (x `shiftR` 16) .&. 0xff),
- chr (fromIntegral (x `shiftR` 8) .&. 0xff),
- chr (fromIntegral x .&. 0xff) ]
- hPutStr h (concatMap expand32 [ 0, 32 .. 0xD7ff ])
- -- We avoid the private-use characters at 0xEF00..0xEFFF
- -- that reserved for GHC's PEP383 roundtripping implementation.
- --
- -- The reason is that currently normal text containing those
- -- characters will be mangled, even if we aren't using an encoding
- -- created using //ROUNDTRIP.
- hPutStr h (concatMap expand32 [ 0xE000, 0xE000+32 .. 0xEEFF ])
- hPutStr h (concatMap expand32 [ 0xF000, 0xF000+32 .. 0x10FFFF ])
- hClose h
-
- -- convert the UTF-32BE file into each other encoding
- forM_ encodings $ \(enc,name) -> do
- when (name /= "utf32be") $ do
- hin <- openFile (file <.> "utf32be") ReadMode
- hSetEncoding hin utf32be
- hout <- openFile (file <.> name) WriteMode
- hSetEncoding hout enc
- hGetContents hin >>= hPutStr hout
- hClose hin
- hClose hout
-
- forM_ [ (from,to) | from <- encodings, to <- encodings, snd from /= snd to ]
- $ \((fromenc,fromname),(toenc,toname)) -> do
- hin <- openFile (file <.> fromname) ReadMode
- hSetEncoding hin fromenc
- hout <- openFile (file <.> toname <.> fromname) WriteMode
- hSetEncoding hout toenc
- hGetContents hin >>= hPutStr hout
- hClose hin
- hClose hout
-
- h1 <- openBinaryFile (file <.> toname) ReadMode
- h2 <- openBinaryFile (file <.> toname <.> fromname) ReadMode
- str1 <- hGetContents h1
- str2 <- hGetContents h2
- when (str1 /= str2) $ do
- putStrLn (file <.> toname ++ " and " ++ file <.> toname <.> fromname ++ " differ")
- exitWith (ExitFailure 1)
- hClose h1
- hClose h2
diff --git a/testsuite/tests/lib/IO/encoding002.hs b/testsuite/tests/lib/IO/encoding002.hs
deleted file mode 100644
index 65d60a3993..0000000000
--- a/testsuite/tests/lib/IO/encoding002.hs
+++ /dev/null
@@ -1,67 +0,0 @@
-import Control.Monad
-
-import System.IO
-import Control.Exception
-
-import Foreign.Marshal.Array
-import Foreign.Ptr
-
-import GHC.Foreign
-import GHC.IO.Encoding (TextEncoding, mkTextEncoding)
-
-import Data.Char
-import Data.Word
-
-import Prelude hiding (catch)
-
-
-decode :: TextEncoding -> [Word8] -> IO String
-decode enc xs = withArrayLen xs (\sz p -> peekCStringLen enc (castPtr p, sz)) `catch` \e -> return (show (e :: IOException))
-
-encode :: TextEncoding -> String -> IO [Word8]
-encode enc cs = withCStringLen enc cs (\(p, sz) -> peekArray sz (castPtr p)) `catch` \e -> return (const [] (e :: IOException))
-
-asc :: Char -> Word8
-asc = fromIntegral . ord
-
-families = [ ([asc 'H', asc 'i', 0xED, 0xB2, 0x80, asc '!'],
- ["UTF-8", "UTF-8//IGNORE", "UTF-8//TRANSLIT", "UTF-8//ROUNDTRIP"])
- , ([asc 'H', 0, asc 'i', 0, 0xFF, 0xDF, 0xFF, 0xDF, asc '!', 0],
- ["UTF-16LE", "UTF-16LE//IGNORE", "UTF-16LE//TRANSLIT", "UTF-16LE//ROUNDTRIP"])
- , ([0, asc 'H', 0, asc 'i', 0xDF, 0xFF, 0xDF, 0xFF, 0, asc '!'],
- ["UTF-16BE", "UTF-16BE//IGNORE", "UTF-16BE//TRANSLIT", "UTF-16BE//ROUNDTRIP"])
- , ([asc 'H', 0, 0, 0, asc 'i', 0, 0, 0, 0xED, 0xB2, 0x80, 0, asc '!', 0, 0, 0],
- ["UTF-32LE", "UTF-32LE//IGNORE", "UTF-32LE//TRANSLIT", "UTF-32LE//ROUNDTRIP"])
- , ([0, 0, 0, asc 'H', 0, 0, 0, asc 'i', 0, 0x80, 0xB2, 0xED, 0, 0, 0, asc '!'],
- ["UTF-32BE", "UTF-32BE//IGNORE", "UTF-32BE//TRANSLIT", "UTF-32BE//ROUNDTRIP"])
- ]
-
-main = do
- surrogate_enc <- mkTextEncoding "UTF-8//ROUNDTRIP"
-
- -- Test that invalid input is correctly roundtripped as surrogates
- -- This only works for the UTF-8 UTF since it is the only UTF which
- -- is an ASCII superset.
- putStrLn $ "== UTF-8: roundtripping"
- let invalid_bytes = [asc 'H', asc 'i', 0xED, 0xB2, 0x80, asc '!']
- surrogates <- decode surrogate_enc invalid_bytes
- invalid_bytes' <- encode surrogate_enc surrogates
- print invalid_bytes
- print surrogates
- print invalid_bytes'
- print (invalid_bytes == invalid_bytes')
- putStrLn ""
-
- forM families $ \(invalid_bytes, enc_names) -> do
- encs <- mapM mkTextEncoding enc_names
- let name = head enc_names
-
- -- How we deal with decoding errors in the various modes:
- putStrLn $ "== " ++ name ++ ": decoding"
- forM encs $ \enc -> decode enc invalid_bytes >>= print
-
- -- How about encoding errors, particularly those from embedded surrogates?
- putStrLn $ "== " ++ name ++ ": encoding"
- forM encs $ \enc -> encode enc "Hi\xDC80!" >>= print
-
- putStrLn ""
diff --git a/testsuite/tests/lib/IO/encoding002.stdout b/testsuite/tests/lib/IO/encoding002.stdout
deleted file mode 100644
index 70addd37f5..0000000000
--- a/testsuite/tests/lib/IO/encoding002.stdout
+++ /dev/null
@@ -1,61 +0,0 @@
-== UTF-8: roundtripping
-[72,105,237,178,128,33]
-"Hi\61421\61362\61312!"
-[72,105,237,178,128,33]
-True
-
-== UTF-8: decoding
-"recoverDecode: invalid argument (invalid byte sequence)"
-"Hi!"
-"Hi\65533\65533\65533!"
-"Hi\61421\61362\61312!"
-== UTF-8: encoding
-[]
-[72,105,33]
-[72,105,63,33]
-[72,105,128,33]
-
-== UTF-16LE: decoding
-"recoverDecode: invalid argument (invalid byte sequence)"
-"Hi\65503\8671"
-"Hi\65533\65503\8671\65533"
-"Hi\61439\65503\8671\NUL"
-== UTF-16LE: encoding
-[]
-[72,0,105,0,33,0]
-[72,0,105,0,63,0,33,0]
-[72,0,105,0,128,33,0]
-
-== UTF-16BE: decoding
-"recoverDecode: invalid argument (invalid byte sequence)"
-"Hi\65503\65280"
-"Hi\65533\65503\65280\65533"
-"Hi\61407\65503\65280!"
-== UTF-16BE: encoding
-[]
-[0,72,0,105,0,33]
-[0,72,0,105,0,63,0,33]
-[0,72,0,105,128,0,33]
-
-== UTF-32LE: decoding
-"recoverDecode: invalid argument (invalid byte sequence)"
-"Hi\8448"
-"Hi\65533\65533\65533\8448\65533"
-"Hi\61421\61362\61312\8448\NUL"
-== UTF-32LE: encoding
-[]
-[72,0,0,0,105,0,0,0,33,0,0,0]
-[72,0,0,0,105,0,0,0,63,0,0,0,33,0,0,0]
-[72,0,0,0,105,0,0,0,128,33,0,0,0]
-
-== UTF-32BE: decoding
-"recoverDecode: invalid argument (invalid byte sequence)"
-"Hi!"
-"Hi\65533\65533\65533\65533!"
-"Hi\NUL\61312\61362\61421!"
-== UTF-32BE: encoding
-[]
-[0,0,0,72,0,0,0,105,0,0,0,33]
-[0,0,0,72,0,0,0,105,0,0,0,63,0,0,0,33]
-[0,0,0,72,0,0,0,105,128,0,0,0,33]
-
diff --git a/testsuite/tests/lib/IO/encodingerror001.hs b/testsuite/tests/lib/IO/encodingerror001.hs
deleted file mode 100644
index 327b490adb..0000000000
--- a/testsuite/tests/lib/IO/encodingerror001.hs
+++ /dev/null
@@ -1,27 +0,0 @@
-import System.IO
-import System.IO.Error
-import Text.Printf
-import Control.Monad
-
-main = do
- hSetEncoding stdout latin1
- forM [NoBuffering,
- LineBuffering,
- BlockBuffering Nothing,
- BlockBuffering (Just 3),
- BlockBuffering (Just 9),
- BlockBuffering (Just 32)] $ \b -> do
- hSetBuffering stdout b
- checkedPutStr "test 1\n"
- checkedPutStr "Ä›\n" -- nothing gets written
- checkedPutStr "test 2\n"
- checkedPutStr "Hέllo\n" -- we should write at least the 'H'
- checkedPutStr "test 3\n"
- checkedPutStr "Hello αβγ\n" -- we should write at least the "Hello "
-
-checkedPutStr str = do
- r <- try $ putStr str
- case r of
- Right _ -> return ()
- Left e -> printf "Caught %s while trying to write %s\n"
- (show e) (show str)
diff --git a/testsuite/tests/lib/IO/encodingerror001.stdout b/testsuite/tests/lib/IO/encodingerror001.stdout
deleted file mode 100644
index 7406cd9168..0000000000
--- a/testsuite/tests/lib/IO/encodingerror001.stdout
+++ /dev/null
@@ -1,36 +0,0 @@
-test 1
-Caught <stdout>: hPutChar: invalid argument (invalid character) while trying to write "\283\n"
-test 2
-HCaught <stdout>: hPutChar: invalid argument (invalid character) while trying to write "H\941llo\n"
-test 3
-Hello Caught <stdout>: hPutChar: invalid argument (invalid character) while trying to write "Hello \945\946\947\n"
-test 1
-Caught <stdout>: commitBuffer: invalid argument (invalid character) while trying to write "\283\n"
-test 2
-HCaught <stdout>: commitBuffer: invalid argument (invalid character) while trying to write "H\941llo\n"
-test 3
-Hello Caught <stdout>: commitBuffer: invalid argument (invalid character) while trying to write "Hello \945\946\947\n"
-test 1
-Caught <stdout>: commitBuffer: invalid argument (invalid character) while trying to write "\283\n"
-test 2
-HCaught <stdout>: commitBuffer: invalid argument (invalid character) while trying to write "H\941llo\n"
-test 3
-Hello Caught <stdout>: commitBuffer: invalid argument (invalid character) while trying to write "Hello \945\946\947\n"
-test 1
-Caught <stdout>: commitBuffer: invalid argument (invalid character) while trying to write "\283\n"
-test 2
-HCaught <stdout>: commitBuffer: invalid argument (invalid character) while trying to write "H\941llo\n"
-test 3
-Hello Caught <stdout>: commitBuffer: invalid argument (invalid character) while trying to write "Hello \945\946\947\n"
-test 1
-Caught <stdout>: commitBuffer: invalid argument (invalid character) while trying to write "\283\n"
-test 2
-HCaught <stdout>: commitBuffer: invalid argument (invalid character) while trying to write "H\941llo\n"
-test 3
-Hello Caught <stdout>: commitBuffer: invalid argument (invalid character) while trying to write "Hello \945\946\947\n"
-test 1
-Caught <stdout>: commitBuffer: invalid argument (invalid character) while trying to write "\283\n"
-test 2
-HCaught <stdout>: commitBuffer: invalid argument (invalid character) while trying to write "H\941llo\n"
-test 3
-Hello Caught <stdout>: commitBuffer: invalid argument (invalid character) while trying to write "Hello \945\946\947\n"
diff --git a/testsuite/tests/lib/IO/environment001.hs b/testsuite/tests/lib/IO/environment001.hs
deleted file mode 100644
index 11d7912cdd..0000000000
--- a/testsuite/tests/lib/IO/environment001.hs
+++ /dev/null
@@ -1,16 +0,0 @@
-import System.Environment
-
-main = do
- var0 <- getEnv "GHC_TEST"
- putStrLn var0
- -- The length proves that we actually decoded it properly, not just read it
- -- in as latin1 or something (#3308, #3307)
- putStrLn ("Test 1: " ++ show (length var0))
-
- [arg0] <- getArgs
- putStrLn arg0
- putStrLn ("Test 2: " ++ show (length arg0))
-
- [arg1] <- withArgs ["你好!"] getArgs
- putStrLn arg1
- putStrLn ("Test 3: " ++ show (length arg1))
diff --git a/testsuite/tests/lib/IO/environment001.stdout b/testsuite/tests/lib/IO/environment001.stdout
deleted file mode 100644
index 2434d0c14d..0000000000
--- a/testsuite/tests/lib/IO/environment001.stdout
+++ /dev/null
@@ -1,6 +0,0 @@
-马克斯
-Test 1: 3
-说
-Test 2: 1
-你好!
-Test 3: 3
diff --git a/testsuite/tests/lib/IO/finalization001.hs b/testsuite/tests/lib/IO/finalization001.hs
deleted file mode 100644
index 44828a68c1..0000000000
--- a/testsuite/tests/lib/IO/finalization001.hs
+++ /dev/null
@@ -1,26 +0,0 @@
---- !!! test for bug in handle finalization fixed in
---- !!! 1.60 +1 -2 fptools/ghc/lib/std/PrelHandle.lhs
---- !!! 1.15 +4 -10 fptools/ghc/lib/std/PrelIO.lhs
-
-module Main (main) where
-
-import System.IO
-
-doTest :: IO ()
-doTest = do
- sd <- openFile "finalization001.hs" ReadMode
- result <- hGetContents sd
- slurp result
- hClose sd
- if "" `elem` lines (filter (/= '\r') result)
- then
- putStrLn "ok"
- else
- putStrLn "fail"
-
-slurp :: String -> IO ()
-slurp [] = return ()
-slurp (x:xs) = x `seq` slurp xs
-
-main :: IO ()
-main = sequence_ (take 200 (repeat doTest))
diff --git a/testsuite/tests/lib/IO/finalization001.stdout b/testsuite/tests/lib/IO/finalization001.stdout
deleted file mode 100644
index ec04732f97..0000000000
--- a/testsuite/tests/lib/IO/finalization001.stdout
+++ /dev/null
@@ -1,200 +0,0 @@
-ok
-ok
-ok
-ok
-ok
-ok
-ok
-ok
-ok
-ok
-ok
-ok
-ok
-ok
-ok
-ok
-ok
-ok
-ok
-ok
-ok
-ok
-ok
-ok
-ok
-ok
-ok
-ok
-ok
-ok
-ok
-ok
-ok
-ok
-ok
-ok
-ok
-ok
-ok
-ok
-ok
-ok
-ok
-ok
-ok
-ok
-ok
-ok
-ok
-ok
-ok
-ok
-ok
-ok
-ok
-ok
-ok
-ok
-ok
-ok
-ok
-ok
-ok
-ok
-ok
-ok
-ok
-ok
-ok
-ok
-ok
-ok
-ok
-ok
-ok
-ok
-ok
-ok
-ok
-ok
-ok
-ok
-ok
-ok
-ok
-ok
-ok
-ok
-ok
-ok
-ok
-ok
-ok
-ok
-ok
-ok
-ok
-ok
-ok
-ok
-ok
-ok
-ok
-ok
-ok
-ok
-ok
-ok
-ok
-ok
-ok
-ok
-ok
-ok
-ok
-ok
-ok
-ok
-ok
-ok
-ok
-ok
-ok
-ok
-ok
-ok
-ok
-ok
-ok
-ok
-ok
-ok
-ok
-ok
-ok
-ok
-ok
-ok
-ok
-ok
-ok
-ok
-ok
-ok
-ok
-ok
-ok
-ok
-ok
-ok
-ok
-ok
-ok
-ok
-ok
-ok
-ok
-ok
-ok
-ok
-ok
-ok
-ok
-ok
-ok
-ok
-ok
-ok
-ok
-ok
-ok
-ok
-ok
-ok
-ok
-ok
-ok
-ok
-ok
-ok
-ok
-ok
-ok
-ok
-ok
-ok
-ok
-ok
-ok
-ok
-ok
-ok
-ok
-ok
-ok
-ok
-ok
-ok
-ok
-ok
diff --git a/testsuite/tests/lib/IO/hClose001.hs b/testsuite/tests/lib/IO/hClose001.hs
deleted file mode 100644
index 8d31447e95..0000000000
--- a/testsuite/tests/lib/IO/hClose001.hs
+++ /dev/null
@@ -1,8 +0,0 @@
-import System.IO
-import System.IO.Error
-
-main = do
- h <- openFile "hClose001.tmp" WriteMode
- hPutStr h "junk"
- hClose h
- hPutStr h "junk" `catchIOError` \ err -> if isIllegalOperation err then putStr "Okay\n" else error "Not okay\n"
diff --git a/testsuite/tests/lib/IO/hClose001.stdout b/testsuite/tests/lib/IO/hClose001.stdout
deleted file mode 100644
index 1ddd42bbe7..0000000000
--- a/testsuite/tests/lib/IO/hClose001.stdout
+++ /dev/null
@@ -1 +0,0 @@
-Okay
diff --git a/testsuite/tests/lib/IO/hClose002.hs b/testsuite/tests/lib/IO/hClose002.hs
deleted file mode 100644
index ebf26b4663..0000000000
--- a/testsuite/tests/lib/IO/hClose002.hs
+++ /dev/null
@@ -1,32 +0,0 @@
-import System.IO
-import Control.Exception
-
-import qualified GHC.IO.Device as IODevice
-import GHC.IO.Handle
-import GHC.IO.Handle.Internals
-import GHC.IO.Handle.Types
-import System.Posix.Internals
-
-main = do
- h <- openFile "hClose002.tmp" WriteMode
- -- close the FD without telling the IO library:
- naughtyClose h
- -- first hClose will raise an exception, but close the
- -- Handle anyway:
- showPossibleException (hClose h)
- -- second hClose should success (Handle is already closed)
- showPossibleException (hClose h)
- -- this should succeed (checking that the lock on the file has
- -- been released:
- h <- openFile "hClose002.tmp" ReadMode
- showPossibleException (hClose h)
- showPossibleException (hClose h)
-
-showPossibleException :: IO () -> IO ()
-showPossibleException f = do e <- try f
- print (e :: Either SomeException ())
-
-naughtyClose h =
- withHandle_ "naughtyClose" h $ \ Handle__{haDevice=dev} -> do
- IODevice.close dev
-
diff --git a/testsuite/tests/lib/IO/hClose002.stdout b/testsuite/tests/lib/IO/hClose002.stdout
deleted file mode 100644
index f26be4ab07..0000000000
--- a/testsuite/tests/lib/IO/hClose002.stdout
+++ /dev/null
@@ -1,4 +0,0 @@
-Left hClose002.tmp: hClose: invalid argument (Bad file descriptor)
-Right ()
-Right ()
-Right ()
diff --git a/testsuite/tests/lib/IO/hClose002.stdout-i386-unknown-solaris2 b/testsuite/tests/lib/IO/hClose002.stdout-i386-unknown-solaris2
deleted file mode 100644
index 39a24de031..0000000000
--- a/testsuite/tests/lib/IO/hClose002.stdout-i386-unknown-solaris2
+++ /dev/null
@@ -1,4 +0,0 @@
-Left hClose002.tmp: hClose: invalid argument (Bad file number)
-Right ()
-Right ()
-Right ()
diff --git a/testsuite/tests/lib/IO/hClose003.hs b/testsuite/tests/lib/IO/hClose003.hs
deleted file mode 100644
index cbaf49d6db..0000000000
--- a/testsuite/tests/lib/IO/hClose003.hs
+++ /dev/null
@@ -1,42 +0,0 @@
--- Test for #3128, file descriptor leak when hClose fails
-
-import System.IO
-import Control.Exception
-import Data.Char
-
-import System.Posix
-import qualified GHC.IO.Device as IODevice
-import GHC.IO.Handle
-import GHC.IO.Handle.Internals
-import GHC.IO.Handle.Types
-import System.Posix.Internals
-
-main = do
- (read,write) <- createPipe
- hread <- fdToHandle read
- hwrite <- fdToHandle write
-
- -- close the FD without telling the IO library:
- showPossibleException (hClose hread)
- hIsOpen hread >>= print
-
- -- put some data in the Handle's write buffer:
- hPutStr hwrite "testing"
- -- now try to close the Handle:
- showPossibleException (hClose hwrite)
- hIsOpen hwrite >>= print
-
-showPossibleException :: IO () -> IO ()
-showPossibleException f = do
- e <- try f
- putStrLn (sanitise (show (e :: Either SomeException ())))
- where
- -- we don't care which file descriptor it is
- sanitise [] = []
- sanitise (x:xs) = if isDigit x then ('X':(sanitise' xs)) else (x:(sanitise xs))
- sanitise' [] = []
- sanitise' (x:xs) = if isDigit x then (sanitise' xs) else (x:(sanitise xs))
-
-naughtyClose h =
- withHandle_ "naughtyClose" h $ \ Handle__{haDevice=dev} -> do
- IODevice.close dev
diff --git a/testsuite/tests/lib/IO/hClose003.stdout b/testsuite/tests/lib/IO/hClose003.stdout
deleted file mode 100644
index d12f84d7d7..0000000000
--- a/testsuite/tests/lib/IO/hClose003.stdout
+++ /dev/null
@@ -1,4 +0,0 @@
-Right ()
-False
-Left <file descriptor: X>: hClose: resource vanished (Broken pipe)
-False
diff --git a/testsuite/tests/lib/IO/hDuplicateTo001.hs b/testsuite/tests/lib/IO/hDuplicateTo001.hs
deleted file mode 100644
index 5a1484a012..0000000000
--- a/testsuite/tests/lib/IO/hDuplicateTo001.hs
+++ /dev/null
@@ -1,24 +0,0 @@
-import GHC.Handle
-import GHC.IOBase
-import System.IO
-import Control.Concurrent.MVar
-import Data.Typeable
-import qualified GHC.IO.FD as FD
-
-main = do
- h <- openFile "tmp" WriteMode
- hDuplicateTo h stdout
-
- fdh <- getfd h
- fdstdout <- getfd stdout
- hPutStrLn stderr ("h: " ++ show (fdh /= fdstdout) ++ "\nstdout: " ++ show fdstdout)
-
- hClose h
- putStrLn "bla"
-
-
-getfd h@(FileHandle _ mvar) = do
- withMVar mvar $ \h__@Handle__{haDevice=dev} ->
- case cast dev of
- Just fd -> return (FD.fdFD fd)
- Nothing -> error "getfd"
diff --git a/testsuite/tests/lib/IO/hDuplicateTo001.stderr b/testsuite/tests/lib/IO/hDuplicateTo001.stderr
deleted file mode 100644
index 14a31438a6..0000000000
--- a/testsuite/tests/lib/IO/hDuplicateTo001.stderr
+++ /dev/null
@@ -1,2 +0,0 @@
-h: True
-stdout: 1
diff --git a/testsuite/tests/lib/IO/hFileSize001.hs b/testsuite/tests/lib/IO/hFileSize001.hs
deleted file mode 100644
index 62b3e88b9c..0000000000
--- a/testsuite/tests/lib/IO/hFileSize001.hs
+++ /dev/null
@@ -1,8 +0,0 @@
-import System.IO
-
--- !!! test hFileSize
-
-main = do
- h <- openFile "hFileSize001.hs" ReadMode
- sz <- hFileSize h
- print sz
diff --git a/testsuite/tests/lib/IO/hFileSize001.stdout b/testsuite/tests/lib/IO/hFileSize001.stdout
deleted file mode 100644
index 94361d49fd..0000000000
--- a/testsuite/tests/lib/IO/hFileSize001.stdout
+++ /dev/null
@@ -1 +0,0 @@
-132
diff --git a/testsuite/tests/lib/IO/hFileSize001.stdout-mingw b/testsuite/tests/lib/IO/hFileSize001.stdout-mingw
deleted file mode 100644
index 6a4573e805..0000000000
--- a/testsuite/tests/lib/IO/hFileSize001.stdout-mingw
+++ /dev/null
@@ -1 +0,0 @@
-133
diff --git a/testsuite/tests/lib/IO/hFileSize002.hs b/testsuite/tests/lib/IO/hFileSize002.hs
deleted file mode 100644
index 6c1ad2f57a..0000000000
--- a/testsuite/tests/lib/IO/hFileSize002.hs
+++ /dev/null
@@ -1,35 +0,0 @@
--- !!! Testing IO.hFileSize
-module Main(main) where
-
-import Control.Monad
-import System.Directory ( removeFile, doesFileExist )
-import System.IO
-
-main = do
- sz <- hFileSize stdin `catch` (\ _ -> return (-1))
- print sz
- let fn = "hFileSize002.out"
- f <- doesFileExist fn
- when f (removeFile fn)
- hdl <- openFile fn WriteMode
- hPutStr hdl "file_size"
- -- with default buffering
- sz <- hFileSize hdl
- print sz
-
- hSetBuffering hdl NoBuffering
- hPutStr hdl "file_size"
- -- with no buffering
- sz <- hFileSize hdl
- print sz
- hSetBuffering hdl LineBuffering
- hPutStr hdl "file_size"
- -- with line buffering
- sz <- hFileSize hdl
- print sz
- hSetBuffering hdl (BlockBuffering (Just 4))
- -- with block buffering
- hPutStr hdl "file_size"
- sz <- hFileSize hdl
- print sz
- hClose hdl
diff --git a/testsuite/tests/lib/IO/hFileSize002.stdout b/testsuite/tests/lib/IO/hFileSize002.stdout
deleted file mode 100644
index 23dd734048..0000000000
--- a/testsuite/tests/lib/IO/hFileSize002.stdout
+++ /dev/null
@@ -1,5 +0,0 @@
--1
-9
-18
-27
-36
diff --git a/testsuite/tests/lib/IO/hFlush001.hs b/testsuite/tests/lib/IO/hFlush001.hs
deleted file mode 100644
index 78c7b7eeb3..0000000000
--- a/testsuite/tests/lib/IO/hFlush001.hs
+++ /dev/null
@@ -1,31 +0,0 @@
--- !!! Flushing
-module Main(main) where
-
-import Control.Monad
-import System.Directory ( removeFile, doesFileExist )
-import System.IO
-
-main = do
- hFlush stdin `catch` \ _ -> putStrLn "No can do - flushing read-only handles isn't legal"
- putStr "Hello,"
- hFlush stdout
- putStr "Hello - "
- hFlush stderr
- hdl <- openFile "hFlush001.hs" ReadMode
- hFlush hdl `catch` \ _ -> putStrLn "No can do - flushing read-only handles isn't legal"
- hClose hdl
- remove
- hdl <- openFile "hFlush001.out" WriteMode
- hFlush hdl
- hClose hdl
- remove
- hdl <- openFile "hFlush001.out" AppendMode
- hFlush hdl
- hClose hdl
- remove
- hdl <- openFile "hFlush001.out" ReadWriteMode
- hFlush hdl
- hClose hdl
- where remove = do
- f <- doesFileExist "hFlush001.out"
- when f (removeFile "hFlush001.out")
diff --git a/testsuite/tests/lib/IO/hFlush001.stdout b/testsuite/tests/lib/IO/hFlush001.stdout
deleted file mode 100644
index 0954a7a0b4..0000000000
--- a/testsuite/tests/lib/IO/hFlush001.stdout
+++ /dev/null
@@ -1,2 +0,0 @@
-No can do - flushing read-only handles isn't legal
-Hello,Hello - No can do - flushing read-only handles isn't legal
diff --git a/testsuite/tests/lib/IO/hGetBuf001.hs b/testsuite/tests/lib/IO/hGetBuf001.hs
deleted file mode 100644
index eea599ea74..0000000000
--- a/testsuite/tests/lib/IO/hGetBuf001.hs
+++ /dev/null
@@ -1,218 +0,0 @@
--- !!! Testing hGetBuf(NonBlocking), hPutBuf(NonBlocking)
-
-import System.Posix
-import System.IO
-import Control.Concurrent
-import Foreign
-import Foreign.C
-import System.Exit
-import Control.Exception
-import Control.Monad
-
-
-main = do
- -- test should run quickly, but arrange to kill it if it hangs for any reason:
- main_t <- myThreadId
- forkIO $ do
- threadDelay 10000000
- throwTo main_t (ErrorCall "killed")
-
- zipWithM_ ($)
- [ f rbuf wbuf
- | f <- [hGetBufTest, hGetBufNBTest, hGetBufSomeTest],
- rbuf <- [buf1,buf2,buf3],
- wbuf <- [buf1,buf2,buf3]
- ]
- [1..]
-
-msg = "hello!"
-msg_length = length msg
-
-buf1 = NoBuffering
-buf2 = BlockBuffering (Just 5)
-buf3 = BlockBuffering (Just 10)
-
--- chosen to be larger than buf2 & smaller than buf3, so that we exercise
--- all code paths:
-read_size = 8 :: Int
-
--- ----------------------------------------------------------------------------
-
--- hGetBuf/hPutBuf:
--- - test that it always reads all the data that is available
--- (with buffer size <, =, > message size).
--- - test that at the EOF, it returns a short read.
--- - the writing end is using hPutBuf, with various buffer sizes, and
--- doing an hFlush at the end of each write.
-
-hGetBufTest rbuf wbuf n = do
- (read,write) <- createPipe
- hread <- fdToHandle read
- hwrite <- fdToHandle write
- m1 <- newEmptyMVar
- m2 <- newEmptyMVar
- finished <- newEmptyMVar
- hSetBuffering hread rbuf
- hSetBuffering hwrite wbuf
- forkIO (readProc m1 m2 finished hread)
- writeProc m1 m2 hwrite
- takeMVar finished
- putStrLn ("test " ++ show n ++ " OK")
-
-
-readProc :: MVar () -> MVar () -> MVar () -> Handle -> IO ()
-readProc m1 m2 finished h = do
- buf <- mallocBytes 20
- let
- loop 0 = return ()
- loop n = do putMVar m2 (); takeMVar m1
- r <- hGetBuf h buf msg_length
- if (r /= msg_length)
- then do hPutStr stderr ("error: " ++ show r)
- exitFailure
- else do s <- peekCStringLen (buf,r)
- hPutStr stdout (show n ++ " ")
- loop (n-1)
- loop 100
- hPutStr stdout "\n"
- putMVar m2 (); takeMVar m1
- r <- hGetBuf h buf read_size -- EOF, should get short read
- s <- peekCStringLen (buf,r)
- putStrLn ("got " ++ show r ++ ": " ++ s)
- r <- hGetBuf h buf read_size -- EOF, should get zero-length read
- s <- peekCStringLen (buf,r)
- putStrLn ("got " ++ show r ++ ": " ++ s)
- hClose h
- putMVar finished ()
-
-writeProc :: MVar () -> MVar () -> Handle -> IO ()
-writeProc m1 m2 h = do
- let
- loop 0 = return ()
- loop n =
- withCStringLen msg $ \ (s,len) -> do
- takeMVar m2
- hPutBuf h s len
- hFlush h
- putMVar m1 ()
- loop (n-1)
-
- loop 100
- takeMVar m2
- withCString "end" $ \s -> do
- hPutBuf h s 3
- putMVar m1 ()
- hClose h
-
--- -----------------------------------------------------------------------------
--- hGetBufNonBlocking:
-
-hGetBufNBTest rbuf wbuf n = do
- (read,write) <- createPipe
- hread <- fdToHandle read
- hwrite <- fdToHandle write
- m1 <- newEmptyMVar
- m2 <- newEmptyMVar
- finished <- newEmptyMVar
- hSetBuffering hread rbuf
- hSetBuffering hwrite wbuf
- forkIO (readProcNB m1 m2 finished hread)
- writeProcNB m1 m2 hwrite
- takeMVar finished
- putStrLn ("test " ++ show n ++ " OK")
-
-
-readProcNB :: MVar () -> MVar () -> MVar () -> Handle -> IO ()
-readProcNB m1 m2 finished h = do
- buf <- mallocBytes 20
-
- -- first, test that we can do a non-blocking read:
- r <- hGetBufNonBlocking h buf read_size
- s <- peekCStringLen (buf,r)
- putStrLn ("got " ++ show r ++ ": " ++ s)
-
- let
- loop 0 = return ()
- loop n = do putMVar m2 (); takeMVar m1
- r <- hGetBufNonBlocking h buf read_size
- if (r /= msg_length)
- then do hPutStr stderr ("error: " ++ show r)
- exitFailure
- else do s <- peekCStringLen (buf,r)
- hPutStr stdout (show n ++ " ")
- loop (n-1)
- loop 100
- hPutStr stdout "\n"
- putMVar m2 (); takeMVar m1
- r <- hGetBufNonBlocking h buf read_size -- EOF, should get short read
- s <- peekCStringLen (buf,r)
- putStrLn ("got " ++ show r ++ ": " ++ s)
- r <- hGetBufNonBlocking h buf read_size -- EOF, should get zero-length read
- s <- peekCStringLen (buf,r)
- putStrLn ("got " ++ show r ++ ": " ++ s)
- hClose h
- putMVar finished ()
-
-writeProcNB :: MVar () -> MVar () -> Handle -> IO ()
-writeProcNB m1 m2 h = do
- let
- loop 0 = return ()
- loop n =
- withCStringLen msg $ \ (s,len) -> do
- takeMVar m2
- hPutBufNonBlocking h s len
- hFlush h
- putMVar m1 ()
- loop (n-1)
-
- loop 100
- takeMVar m2
- withCString "end" $ \s -> do
- hPutBuf h s 3
- hFlush h
- putMVar m1 ()
- hClose h
-
--- -----------------------------------------------------------------------------
--- hGetBufSome:
-
-hGetBufSomeTest rbuf wbuf n = do
- (read,write) <- createPipe
- hread <- fdToHandle read
- hwrite <- fdToHandle write
- m1 <- newEmptyMVar
- m2 <- newEmptyMVar
- finished <- newEmptyMVar
- hSetBuffering hread rbuf
- hSetBuffering hwrite wbuf
- forkIO (readProcSome m1 m2 finished hread)
- writeProcNB m1 m2 hwrite
- takeMVar finished
- putStrLn ("test " ++ show n ++ " OK")
-
-
-readProcSome :: MVar () -> MVar () -> MVar () -> Handle -> IO ()
-readProcSome m1 m2 finished h = do
- buf <- mallocBytes 20
-
- let
- loop 0 = return ()
- loop n = do putMVar m2 (); takeMVar m1
- r <- hGetBufSome h buf read_size
- if (r /= msg_length)
- then do hPutStr stderr ("error: " ++ show r)
- exitFailure
- else do s <- peekCStringLen (buf,r)
- hPutStr stdout (show n ++ " ")
- loop (n-1)
- loop 100
- hPutStr stdout "\n"
- putMVar m2 (); takeMVar m1
- r <- hGetBufSome h buf read_size -- EOF, should get short read
- s <- peekCStringLen (buf,r)
- putStrLn ("got " ++ show r ++ ": " ++ s)
- r <- hGetBufSome h buf read_size -- EOF, should get zero-length read
- s <- peekCStringLen (buf,r)
- putStrLn ("got " ++ show r ++ ": " ++ s)
- hClose h
- putMVar finished ()
diff --git a/testsuite/tests/lib/IO/hGetBuf001.stdout b/testsuite/tests/lib/IO/hGetBuf001.stdout
deleted file mode 100644
index 694ff4eedf..0000000000
--- a/testsuite/tests/lib/IO/hGetBuf001.stdout
+++ /dev/null
@@ -1,117 +0,0 @@
-100 99 98 97 96 95 94 93 92 91 90 89 88 87 86 85 84 83 82 81 80 79 78 77 76 75 74 73 72 71 70 69 68 67 66 65 64 63 62 61 60 59 58 57 56 55 54 53 52 51 50 49 48 47 46 45 44 43 42 41 40 39 38 37 36 35 34 33 32 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1
-got 3: end
-got 0:
-test 1 OK
-100 99 98 97 96 95 94 93 92 91 90 89 88 87 86 85 84 83 82 81 80 79 78 77 76 75 74 73 72 71 70 69 68 67 66 65 64 63 62 61 60 59 58 57 56 55 54 53 52 51 50 49 48 47 46 45 44 43 42 41 40 39 38 37 36 35 34 33 32 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1
-got 3: end
-got 0:
-test 2 OK
-100 99 98 97 96 95 94 93 92 91 90 89 88 87 86 85 84 83 82 81 80 79 78 77 76 75 74 73 72 71 70 69 68 67 66 65 64 63 62 61 60 59 58 57 56 55 54 53 52 51 50 49 48 47 46 45 44 43 42 41 40 39 38 37 36 35 34 33 32 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1
-got 3: end
-got 0:
-test 3 OK
-100 99 98 97 96 95 94 93 92 91 90 89 88 87 86 85 84 83 82 81 80 79 78 77 76 75 74 73 72 71 70 69 68 67 66 65 64 63 62 61 60 59 58 57 56 55 54 53 52 51 50 49 48 47 46 45 44 43 42 41 40 39 38 37 36 35 34 33 32 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1
-got 3: end
-got 0:
-test 4 OK
-100 99 98 97 96 95 94 93 92 91 90 89 88 87 86 85 84 83 82 81 80 79 78 77 76 75 74 73 72 71 70 69 68 67 66 65 64 63 62 61 60 59 58 57 56 55 54 53 52 51 50 49 48 47 46 45 44 43 42 41 40 39 38 37 36 35 34 33 32 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1
-got 3: end
-got 0:
-test 5 OK
-100 99 98 97 96 95 94 93 92 91 90 89 88 87 86 85 84 83 82 81 80 79 78 77 76 75 74 73 72 71 70 69 68 67 66 65 64 63 62 61 60 59 58 57 56 55 54 53 52 51 50 49 48 47 46 45 44 43 42 41 40 39 38 37 36 35 34 33 32 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1
-got 3: end
-got 0:
-test 6 OK
-100 99 98 97 96 95 94 93 92 91 90 89 88 87 86 85 84 83 82 81 80 79 78 77 76 75 74 73 72 71 70 69 68 67 66 65 64 63 62 61 60 59 58 57 56 55 54 53 52 51 50 49 48 47 46 45 44 43 42 41 40 39 38 37 36 35 34 33 32 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1
-got 3: end
-got 0:
-test 7 OK
-100 99 98 97 96 95 94 93 92 91 90 89 88 87 86 85 84 83 82 81 80 79 78 77 76 75 74 73 72 71 70 69 68 67 66 65 64 63 62 61 60 59 58 57 56 55 54 53 52 51 50 49 48 47 46 45 44 43 42 41 40 39 38 37 36 35 34 33 32 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1
-got 3: end
-got 0:
-test 8 OK
-100 99 98 97 96 95 94 93 92 91 90 89 88 87 86 85 84 83 82 81 80 79 78 77 76 75 74 73 72 71 70 69 68 67 66 65 64 63 62 61 60 59 58 57 56 55 54 53 52 51 50 49 48 47 46 45 44 43 42 41 40 39 38 37 36 35 34 33 32 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1
-got 3: end
-got 0:
-test 9 OK
-got 0:
-100 99 98 97 96 95 94 93 92 91 90 89 88 87 86 85 84 83 82 81 80 79 78 77 76 75 74 73 72 71 70 69 68 67 66 65 64 63 62 61 60 59 58 57 56 55 54 53 52 51 50 49 48 47 46 45 44 43 42 41 40 39 38 37 36 35 34 33 32 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1
-got 3: end
-got 0:
-test 10 OK
-got 0:
-100 99 98 97 96 95 94 93 92 91 90 89 88 87 86 85 84 83 82 81 80 79 78 77 76 75 74 73 72 71 70 69 68 67 66 65 64 63 62 61 60 59 58 57 56 55 54 53 52 51 50 49 48 47 46 45 44 43 42 41 40 39 38 37 36 35 34 33 32 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1
-got 3: end
-got 0:
-test 11 OK
-got 0:
-100 99 98 97 96 95 94 93 92 91 90 89 88 87 86 85 84 83 82 81 80 79 78 77 76 75 74 73 72 71 70 69 68 67 66 65 64 63 62 61 60 59 58 57 56 55 54 53 52 51 50 49 48 47 46 45 44 43 42 41 40 39 38 37 36 35 34 33 32 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1
-got 3: end
-got 0:
-test 12 OK
-got 0:
-100 99 98 97 96 95 94 93 92 91 90 89 88 87 86 85 84 83 82 81 80 79 78 77 76 75 74 73 72 71 70 69 68 67 66 65 64 63 62 61 60 59 58 57 56 55 54 53 52 51 50 49 48 47 46 45 44 43 42 41 40 39 38 37 36 35 34 33 32 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1
-got 3: end
-got 0:
-test 13 OK
-got 0:
-100 99 98 97 96 95 94 93 92 91 90 89 88 87 86 85 84 83 82 81 80 79 78 77 76 75 74 73 72 71 70 69 68 67 66 65 64 63 62 61 60 59 58 57 56 55 54 53 52 51 50 49 48 47 46 45 44 43 42 41 40 39 38 37 36 35 34 33 32 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1
-got 3: end
-got 0:
-test 14 OK
-got 0:
-100 99 98 97 96 95 94 93 92 91 90 89 88 87 86 85 84 83 82 81 80 79 78 77 76 75 74 73 72 71 70 69 68 67 66 65 64 63 62 61 60 59 58 57 56 55 54 53 52 51 50 49 48 47 46 45 44 43 42 41 40 39 38 37 36 35 34 33 32 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1
-got 3: end
-got 0:
-test 15 OK
-got 0:
-100 99 98 97 96 95 94 93 92 91 90 89 88 87 86 85 84 83 82 81 80 79 78 77 76 75 74 73 72 71 70 69 68 67 66 65 64 63 62 61 60 59 58 57 56 55 54 53 52 51 50 49 48 47 46 45 44 43 42 41 40 39 38 37 36 35 34 33 32 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1
-got 3: end
-got 0:
-test 16 OK
-got 0:
-100 99 98 97 96 95 94 93 92 91 90 89 88 87 86 85 84 83 82 81 80 79 78 77 76 75 74 73 72 71 70 69 68 67 66 65 64 63 62 61 60 59 58 57 56 55 54 53 52 51 50 49 48 47 46 45 44 43 42 41 40 39 38 37 36 35 34 33 32 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1
-got 3: end
-got 0:
-test 17 OK
-got 0:
-100 99 98 97 96 95 94 93 92 91 90 89 88 87 86 85 84 83 82 81 80 79 78 77 76 75 74 73 72 71 70 69 68 67 66 65 64 63 62 61 60 59 58 57 56 55 54 53 52 51 50 49 48 47 46 45 44 43 42 41 40 39 38 37 36 35 34 33 32 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1
-got 3: end
-got 0:
-test 18 OK
-100 99 98 97 96 95 94 93 92 91 90 89 88 87 86 85 84 83 82 81 80 79 78 77 76 75 74 73 72 71 70 69 68 67 66 65 64 63 62 61 60 59 58 57 56 55 54 53 52 51 50 49 48 47 46 45 44 43 42 41 40 39 38 37 36 35 34 33 32 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1
-got 3: end
-got 0:
-test 19 OK
-100 99 98 97 96 95 94 93 92 91 90 89 88 87 86 85 84 83 82 81 80 79 78 77 76 75 74 73 72 71 70 69 68 67 66 65 64 63 62 61 60 59 58 57 56 55 54 53 52 51 50 49 48 47 46 45 44 43 42 41 40 39 38 37 36 35 34 33 32 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1
-got 3: end
-got 0:
-test 20 OK
-100 99 98 97 96 95 94 93 92 91 90 89 88 87 86 85 84 83 82 81 80 79 78 77 76 75 74 73 72 71 70 69 68 67 66 65 64 63 62 61 60 59 58 57 56 55 54 53 52 51 50 49 48 47 46 45 44 43 42 41 40 39 38 37 36 35 34 33 32 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1
-got 3: end
-got 0:
-test 21 OK
-100 99 98 97 96 95 94 93 92 91 90 89 88 87 86 85 84 83 82 81 80 79 78 77 76 75 74 73 72 71 70 69 68 67 66 65 64 63 62 61 60 59 58 57 56 55 54 53 52 51 50 49 48 47 46 45 44 43 42 41 40 39 38 37 36 35 34 33 32 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1
-got 3: end
-got 0:
-test 22 OK
-100 99 98 97 96 95 94 93 92 91 90 89 88 87 86 85 84 83 82 81 80 79 78 77 76 75 74 73 72 71 70 69 68 67 66 65 64 63 62 61 60 59 58 57 56 55 54 53 52 51 50 49 48 47 46 45 44 43 42 41 40 39 38 37 36 35 34 33 32 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1
-got 3: end
-got 0:
-test 23 OK
-100 99 98 97 96 95 94 93 92 91 90 89 88 87 86 85 84 83 82 81 80 79 78 77 76 75 74 73 72 71 70 69 68 67 66 65 64 63 62 61 60 59 58 57 56 55 54 53 52 51 50 49 48 47 46 45 44 43 42 41 40 39 38 37 36 35 34 33 32 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1
-got 3: end
-got 0:
-test 24 OK
-100 99 98 97 96 95 94 93 92 91 90 89 88 87 86 85 84 83 82 81 80 79 78 77 76 75 74 73 72 71 70 69 68 67 66 65 64 63 62 61 60 59 58 57 56 55 54 53 52 51 50 49 48 47 46 45 44 43 42 41 40 39 38 37 36 35 34 33 32 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1
-got 3: end
-got 0:
-test 25 OK
-100 99 98 97 96 95 94 93 92 91 90 89 88 87 86 85 84 83 82 81 80 79 78 77 76 75 74 73 72 71 70 69 68 67 66 65 64 63 62 61 60 59 58 57 56 55 54 53 52 51 50 49 48 47 46 45 44 43 42 41 40 39 38 37 36 35 34 33 32 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1
-got 3: end
-got 0:
-test 26 OK
-100 99 98 97 96 95 94 93 92 91 90 89 88 87 86 85 84 83 82 81 80 79 78 77 76 75 74 73 72 71 70 69 68 67 66 65 64 63 62 61 60 59 58 57 56 55 54 53 52 51 50 49 48 47 46 45 44 43 42 41 40 39 38 37 36 35 34 33 32 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1
-got 3: end
-got 0:
-test 27 OK
diff --git a/testsuite/tests/lib/IO/hGetBuffering001.hs b/testsuite/tests/lib/IO/hGetBuffering001.hs
deleted file mode 100644
index 83188b2796..0000000000
--- a/testsuite/tests/lib/IO/hGetBuffering001.hs
+++ /dev/null
@@ -1,21 +0,0 @@
-import System.IO
-
-main =
- sequence (map hIsOpen [stdin, stdout, stderr]) >>= \ opens ->
- print opens >>
- sequence (map hIsClosed [stdin, stdout, stderr]) >>= \ closeds ->
- print closeds >>
- sequence (map hIsReadable [stdin, stdout, stderr]) >>= \ readables ->
- print readables >>
- sequence (map hIsWritable [stdin, stdout, stderr]) >>= \ writables ->
- print writables >>
- sequence (map hIsBlockBuffered [stdin, stdout, stderr]) >>= \ buffereds ->
- print buffereds >>
- sequence (map hIsLineBuffered [stdin, stdout, stderr]) >>= \ buffereds ->
- print buffereds >>
- sequence (map hIsNotBuffered [stdin, stdout, stderr]) >>= \ buffereds ->
- print buffereds
- where
- hIsBlockBuffered h = hGetBuffering h >>= \ b -> return $ case b of { BlockBuffering _ -> True; _ -> False }
- hIsLineBuffered h = hGetBuffering h >>= \ b -> return $ case b of { LineBuffering -> True; _ -> False }
- hIsNotBuffered h = hGetBuffering h >>= \ b -> return $ case b of { NoBuffering -> True; _ -> False }
diff --git a/testsuite/tests/lib/IO/hGetBuffering001.stdout b/testsuite/tests/lib/IO/hGetBuffering001.stdout
deleted file mode 100644
index 75b9a133d9..0000000000
--- a/testsuite/tests/lib/IO/hGetBuffering001.stdout
+++ /dev/null
@@ -1,7 +0,0 @@
-[True,True,True]
-[False,False,False]
-[True,False,False]
-[False,True,True]
-[True,True,False]
-[False,False,False]
-[False,False,True]
diff --git a/testsuite/tests/lib/IO/hGetChar001.hs b/testsuite/tests/lib/IO/hGetChar001.hs
deleted file mode 100644
index f5ca666828..0000000000
--- a/testsuite/tests/lib/IO/hGetChar001.hs
+++ /dev/null
@@ -1,18 +0,0 @@
-import System.IO
-
-main = do
- hSetBuffering stdout NoBuffering
- putStr "Enter an integer: "
- x1 <- readLine
- putStr "Enter another integer: "
- x2 <- readLine
- putStr ("Their sum is " ++ show (read x1 + read x2 :: Int) ++ "\n")
-
- where readLine = do
- eof <- isEOF
- if eof then return [] else do
- c <- getChar
- if c `elem` ['\n','\r']
- then return []
- else do cs <- readLine
- return (c:cs)
diff --git a/testsuite/tests/lib/IO/hGetChar001.stdout b/testsuite/tests/lib/IO/hGetChar001.stdout
deleted file mode 100644
index 47d4185c64..0000000000
--- a/testsuite/tests/lib/IO/hGetChar001.stdout
+++ /dev/null
@@ -1 +0,0 @@
-Enter an integer: Enter another integer: Their sum is 35
diff --git a/testsuite/tests/lib/IO/hGetLine001.hs b/testsuite/tests/lib/IO/hGetLine001.hs
deleted file mode 100644
index b5950623ea..0000000000
--- a/testsuite/tests/lib/IO/hGetLine001.hs
+++ /dev/null
@@ -1,25 +0,0 @@
--- !!! testing hGetLine
-
-import System.IO
-
--- one version of 'cat'
-main = do
- let loop h = do b <- hIsEOF h
- if b then return ()
- else do l <- hGetLine h; putStrLn l; loop h
- loop stdin
-
- h <- openFile "hGetLine001.hs" ReadMode
-
- hSetBinaryMode stdout True
-
- hSetBuffering h NoBuffering
- loop h
-
- hSeek h AbsoluteSeek 0
- hSetBuffering h LineBuffering
- loop h
-
- hSeek h AbsoluteSeek 0
- hSetBuffering h (BlockBuffering (Just 83))
- loop h
diff --git a/testsuite/tests/lib/IO/hGetLine001.stdout b/testsuite/tests/lib/IO/hGetLine001.stdout
deleted file mode 100644
index 3e023db8f5..0000000000
--- a/testsuite/tests/lib/IO/hGetLine001.stdout
+++ /dev/null
@@ -1,100 +0,0 @@
--- !!! testing hGetLine
-
-import System.IO
-
--- one version of 'cat'
-main = do
- let loop h = do b <- hIsEOF h
- if b then return ()
- else do l <- hGetLine h; putStrLn l; loop h
- loop stdin
-
- h <- openFile "hGetLine001.hs" ReadMode
-
- hSetBinaryMode stdout True
-
- hSetBuffering h NoBuffering
- loop h
-
- hSeek h AbsoluteSeek 0
- hSetBuffering h LineBuffering
- loop h
-
- hSeek h AbsoluteSeek 0
- hSetBuffering h (BlockBuffering (Just 83))
- loop h
--- !!! testing hGetLine
-
-import System.IO
-
--- one version of 'cat'
-main = do
- let loop h = do b <- hIsEOF h
- if b then return ()
- else do l <- hGetLine h; putStrLn l; loop h
- loop stdin
-
- h <- openFile "hGetLine001.hs" ReadMode
-
- hSetBinaryMode stdout True
-
- hSetBuffering h NoBuffering
- loop h
-
- hSeek h AbsoluteSeek 0
- hSetBuffering h LineBuffering
- loop h
-
- hSeek h AbsoluteSeek 0
- hSetBuffering h (BlockBuffering (Just 83))
- loop h
--- !!! testing hGetLine
-
-import System.IO
-
--- one version of 'cat'
-main = do
- let loop h = do b <- hIsEOF h
- if b then return ()
- else do l <- hGetLine h; putStrLn l; loop h
- loop stdin
-
- h <- openFile "hGetLine001.hs" ReadMode
-
- hSetBinaryMode stdout True
-
- hSetBuffering h NoBuffering
- loop h
-
- hSeek h AbsoluteSeek 0
- hSetBuffering h LineBuffering
- loop h
-
- hSeek h AbsoluteSeek 0
- hSetBuffering h (BlockBuffering (Just 83))
- loop h
--- !!! testing hGetLine
-
-import System.IO
-
--- one version of 'cat'
-main = do
- let loop h = do b <- hIsEOF h
- if b then return ()
- else do l <- hGetLine h; putStrLn l; loop h
- loop stdin
-
- h <- openFile "hGetLine001.hs" ReadMode
-
- hSetBinaryMode stdout True
-
- hSetBuffering h NoBuffering
- loop h
-
- hSeek h AbsoluteSeek 0
- hSetBuffering h LineBuffering
- loop h
-
- hSeek h AbsoluteSeek 0
- hSetBuffering h (BlockBuffering (Just 83))
- loop h
diff --git a/testsuite/tests/lib/IO/hGetLine002.hs b/testsuite/tests/lib/IO/hGetLine002.hs
deleted file mode 100644
index 5c08b716d1..0000000000
--- a/testsuite/tests/lib/IO/hGetLine002.hs
+++ /dev/null
@@ -1,16 +0,0 @@
--- !!! testing hGetLine on a file without a final '\n'.
-
--- According to the Haskell 98 report, getLine should discard a line without a
--- closing newline character (see implementation of getLine).
---
--- However, we don't believe that this is the right behaviour.
-
-import System.IO
-
-main = catch loop (\e -> print e)
-
-loop = do
- hSetBuffering stdin LineBuffering
- l <- hGetLine stdin
- putStrLn l
- loop
diff --git a/testsuite/tests/lib/IO/hGetLine002.stdin b/testsuite/tests/lib/IO/hGetLine002.stdin
deleted file mode 100644
index 808eafd54b..0000000000
--- a/testsuite/tests/lib/IO/hGetLine002.stdin
+++ /dev/null
@@ -1 +0,0 @@
-this line doesn't end with a newline \ No newline at end of file
diff --git a/testsuite/tests/lib/IO/hGetLine002.stdout b/testsuite/tests/lib/IO/hGetLine002.stdout
deleted file mode 100644
index 0ec29ade8f..0000000000
--- a/testsuite/tests/lib/IO/hGetLine002.stdout
+++ /dev/null
@@ -1,2 +0,0 @@
-this line doesn't end with a newline
-<stdin>: hGetLine: end of file
diff --git a/testsuite/tests/lib/IO/hGetLine002.stdout-hugs b/testsuite/tests/lib/IO/hGetLine002.stdout-hugs
deleted file mode 100644
index ed871357b7..0000000000
--- a/testsuite/tests/lib/IO/hGetLine002.stdout-hugs
+++ /dev/null
@@ -1,2 +0,0 @@
-this line doesn't end with a newline
-<stdin>: IO.hGetChar: end of file (end of file)
diff --git a/testsuite/tests/lib/IO/hGetLine003.hs b/testsuite/tests/lib/IO/hGetLine003.hs
deleted file mode 100644
index cc03c604aa..0000000000
--- a/testsuite/tests/lib/IO/hGetLine003.hs
+++ /dev/null
@@ -1,9 +0,0 @@
-import System.IO
-
-main = f stdin
- where f h = do p <- hIsEOF h
- if p then putStrLn "done"
- else do l <- hGetLine h
- putStrLn l
- f h
-
diff --git a/testsuite/tests/lib/IO/hGetLine003.stdin b/testsuite/tests/lib/IO/hGetLine003.stdin
deleted file mode 100644
index b8b74a4b1e..0000000000
--- a/testsuite/tests/lib/IO/hGetLine003.stdin
+++ /dev/null
@@ -1 +0,0 @@
-this line doesn't end with a newline
diff --git a/testsuite/tests/lib/IO/hGetLine003.stdout b/testsuite/tests/lib/IO/hGetLine003.stdout
deleted file mode 100644
index 6daac48252..0000000000
--- a/testsuite/tests/lib/IO/hGetLine003.stdout
+++ /dev/null
@@ -1,2 +0,0 @@
-this line doesn't end with a newline
-done
diff --git a/testsuite/tests/lib/IO/hGetPosn001.hs b/testsuite/tests/lib/IO/hGetPosn001.hs
deleted file mode 100644
index 5a0d7d4827..0000000000
--- a/testsuite/tests/lib/IO/hGetPosn001.hs
+++ /dev/null
@@ -1,28 +0,0 @@
--- !!! Test file positioning
-
-module Main(main) where
-
-import Control.Monad
-import System.Directory (removeFile, doesFileExist)
-import System.IO
-import System.IO.Error
-
-main = do
- hIn <- openFile "hGetPosn001.in" ReadMode
- f <- doesFileExist "hGetPosn001.out"
- when f (removeFile "hGetPosn001.out")
- hOut <- openFile "hGetPosn001.out" ReadWriteMode
- bof <- hGetPosn hIn
- putStrLn (show bof) -- you can show HandlePosns
- copy hIn hOut
- hSetPosn bof
- copy hIn hOut
- hSeek hOut AbsoluteSeek 0
- stuff <- hGetContents hOut
- putStr stuff
-
-copy :: Handle -> Handle -> IO ()
-copy hIn hOut =
- try (hGetChar hIn) >>=
- either (\ err -> if isEOFError err then return () else error "copy")
- ( \ x -> hPutChar hOut x >> copy hIn hOut)
diff --git a/testsuite/tests/lib/IO/hGetPosn001.in b/testsuite/tests/lib/IO/hGetPosn001.in
deleted file mode 100644
index 2e2537150f..0000000000
--- a/testsuite/tests/lib/IO/hGetPosn001.in
+++ /dev/null
@@ -1,2 +0,0 @@
-123456789*123456789*123456789*123456789*123456789*123456789*123456789*12
- 1 2 3 4 5 6 7
diff --git a/testsuite/tests/lib/IO/hGetPosn001.stdout b/testsuite/tests/lib/IO/hGetPosn001.stdout
deleted file mode 100644
index 10adafd933..0000000000
--- a/testsuite/tests/lib/IO/hGetPosn001.stdout
+++ /dev/null
@@ -1,5 +0,0 @@
-{handle: hGetPosn001.in} at position 0
-123456789*123456789*123456789*123456789*123456789*123456789*123456789*12
- 1 2 3 4 5 6 7
-123456789*123456789*123456789*123456789*123456789*123456789*123456789*12
- 1 2 3 4 5 6 7
diff --git a/testsuite/tests/lib/IO/hGetPosn001.stdout-hugs b/testsuite/tests/lib/IO/hGetPosn001.stdout-hugs
deleted file mode 100644
index 56e989c493..0000000000
--- a/testsuite/tests/lib/IO/hGetPosn001.stdout-hugs
+++ /dev/null
@@ -1,5 +0,0 @@
-<handle> at position 0
-123456789*123456789*123456789*123456789*123456789*123456789*123456789*12
- 1 2 3 4 5 6 7
-123456789*123456789*123456789*123456789*123456789*123456789*123456789*12
- 1 2 3 4 5 6 7
diff --git a/testsuite/tests/lib/IO/hIsEOF001.hs b/testsuite/tests/lib/IO/hIsEOF001.hs
deleted file mode 100644
index 2e5dbdcb0a..0000000000
--- a/testsuite/tests/lib/IO/hIsEOF001.hs
+++ /dev/null
@@ -1,7 +0,0 @@
--- !!! hIsEOF (on stdout)
-
-import System.IO ( hIsEOF, stdout )
-
-main = do
- flg <- hIsEOF stdout `catch` \ _ -> putStrLn "hIsEOF failed" >> return False
- print flg
diff --git a/testsuite/tests/lib/IO/hIsEOF001.stdout b/testsuite/tests/lib/IO/hIsEOF001.stdout
deleted file mode 100644
index 76460ac50a..0000000000
--- a/testsuite/tests/lib/IO/hIsEOF001.stdout
+++ /dev/null
@@ -1,2 +0,0 @@
-hIsEOF failed
-False
diff --git a/testsuite/tests/lib/IO/hIsEOF002.hs b/testsuite/tests/lib/IO/hIsEOF002.hs
deleted file mode 100644
index 26f5abd9a7..0000000000
--- a/testsuite/tests/lib/IO/hIsEOF002.hs
+++ /dev/null
@@ -1,48 +0,0 @@
--- !!! test hIsEOF in various buffering situations
-
-import System.IO
-
-main = do
- h <- openFile "hIsEOF002.hs" ReadMode
- hSetBuffering h NoBuffering
- hSeek h SeekFromEnd 0
- hIsEOF h >>= print
- hSeek h SeekFromEnd (-1)
- hIsEOF h >>= print
- hGetChar h >>= print
-
- hSetBuffering h LineBuffering
- hSeek h SeekFromEnd 0
- hIsEOF h >>= print
- hSeek h SeekFromEnd (-1)
- hIsEOF h >>= print
- hGetChar h >>= print
-
- hSetBuffering h (BlockBuffering (Just 1))
- hSeek h SeekFromEnd 0
- hIsEOF h >>= print
- hSeek h SeekFromEnd (-1)
- hIsEOF h >>= print
- hGetChar h >>= print
-
- hSetBuffering h (BlockBuffering Nothing)
- hSeek h SeekFromEnd 0
- hIsEOF h >>= print
- hSeek h SeekFromEnd (-1)
- hIsEOF h >>= print
- hGetChar h >>= print
- hClose h
-
- h <- openFile "hIsEOF002.out" WriteMode
- hPutStrLn h "hello, world"
- hClose h
-
- h <- openFile "hIsEOF002.out" ReadWriteMode
- hSetBuffering h NoBuffering
- hSeek h SeekFromEnd 0
- hIsEOF h >>= print
- hPutChar h 'x'
- hIsEOF h >>= print
- hSeek h SeekFromEnd (-1)
- hIsEOF h >>= print
- hGetChar h >>= print
diff --git a/testsuite/tests/lib/IO/hIsEOF002.stdout b/testsuite/tests/lib/IO/hIsEOF002.stdout
deleted file mode 100644
index 3aa5e1a64d..0000000000
--- a/testsuite/tests/lib/IO/hIsEOF002.stdout
+++ /dev/null
@@ -1,16 +0,0 @@
-True
-False
-'\n'
-True
-False
-'\n'
-True
-False
-'\n'
-True
-False
-'\n'
-True
-True
-False
-'x'
diff --git a/testsuite/tests/lib/IO/hReady001.hs b/testsuite/tests/lib/IO/hReady001.hs
deleted file mode 100644
index 00888dac2d..0000000000
--- a/testsuite/tests/lib/IO/hReady001.hs
+++ /dev/null
@@ -1,11 +0,0 @@
--- !!! hReady test
-
- -- hReady should throw and EOF exception at the end of a file. Trac #1063.
-
-import System.IO
-
-main = do
- h <- openFile "hReady001.hs" ReadMode
- hReady h >>= print
- hSeek h SeekFromEnd 0
- (hReady h >> return ()) `catch` print
diff --git a/testsuite/tests/lib/IO/hReady001.stdout b/testsuite/tests/lib/IO/hReady001.stdout
deleted file mode 100644
index af35f80533..0000000000
--- a/testsuite/tests/lib/IO/hReady001.stdout
+++ /dev/null
@@ -1,2 +0,0 @@
-True
-hReady001.hs: hWaitForInput: end of file
diff --git a/testsuite/tests/lib/IO/hReady002.hs b/testsuite/tests/lib/IO/hReady002.hs
deleted file mode 100644
index 6db22a13fc..0000000000
--- a/testsuite/tests/lib/IO/hReady002.hs
+++ /dev/null
@@ -1,10 +0,0 @@
--- test for bug #4078
-import System.IO
-import Control.Concurrent
-import System.Exit
-
-main = do
- m <- newEmptyMVar
- forkIO $ do threadDelay 500000; putMVar m Nothing
- forkIO $ do hReady stdin >>= putMVar m . Just
- takeMVar m >>= print
diff --git a/testsuite/tests/lib/IO/hReady002.stdout b/testsuite/tests/lib/IO/hReady002.stdout
deleted file mode 100644
index 6217d00e10..0000000000
--- a/testsuite/tests/lib/IO/hReady002.stdout
+++ /dev/null
@@ -1 +0,0 @@
-Just False
diff --git a/testsuite/tests/lib/IO/hSeek001.hs b/testsuite/tests/lib/IO/hSeek001.hs
deleted file mode 100644
index d05068e955..0000000000
--- a/testsuite/tests/lib/IO/hSeek001.hs
+++ /dev/null
@@ -1,30 +0,0 @@
-{-# LANGUAGE CPP #-}
--- !!! Test seeking
-
-import System.IO
-
-main = do
- h <- openFile "hSeek001.in" ReadMode
- True <- hIsSeekable h
- hSeek h SeekFromEnd (-1)
- z <- hGetChar h
- putStr (z:"\n")
- hSeek h SeekFromEnd (-3)
- x <- hGetChar h
- putStr (x:"\n")
- hSeek h RelativeSeek (-2)
- w <- hGetChar h
- putStr (w:"\n")
- hSeek h RelativeSeek 2
- z <- hGetChar h
- putStr (z:"\n")
- hSeek h AbsoluteSeek (0)
- a <- hGetChar h
- putStr (a:"\n")
- hSeek h AbsoluteSeek (10)
- k <- hGetChar h
- putStr (k:"\n")
- hSeek h AbsoluteSeek (25)
- z <- hGetChar h
- putStr (z:"\n")
- hClose h
diff --git a/testsuite/tests/lib/IO/hSeek001.in b/testsuite/tests/lib/IO/hSeek001.in
deleted file mode 100644
index e85d5b4528..0000000000
--- a/testsuite/tests/lib/IO/hSeek001.in
+++ /dev/null
@@ -1 +0,0 @@
-abcdefghijklmnopqrstuvwxyz \ No newline at end of file
diff --git a/testsuite/tests/lib/IO/hSeek001.stdout b/testsuite/tests/lib/IO/hSeek001.stdout
deleted file mode 100644
index ab6c1d751b..0000000000
--- a/testsuite/tests/lib/IO/hSeek001.stdout
+++ /dev/null
@@ -1,7 +0,0 @@
-z
-x
-w
-z
-a
-k
-z
diff --git a/testsuite/tests/lib/IO/hSeek002.hs b/testsuite/tests/lib/IO/hSeek002.hs
deleted file mode 100644
index 8c9153cfaa..0000000000
--- a/testsuite/tests/lib/IO/hSeek002.hs
+++ /dev/null
@@ -1,25 +0,0 @@
--- !!! Testing EOF (and the clearing of it)
-
-module Main(main) where
-
-import System.IO
-import System.Directory ( removeFile )
-
-main :: IO ()
-main = do
- hdl <- openFile "hSeek002.hs" ReadMode
- flg <- hIsEOF hdl
- print flg
- hSeek hdl SeekFromEnd 0
- flg <- hIsEOF hdl
- print flg
- hSeek hdl SeekFromEnd (-1)
- flg <- hIsEOF hdl
- print flg
- hGetChar hdl
- flg <- hIsEOF hdl
- print flg
- hSeek hdl SeekFromEnd (-1)
- flg <- hIsEOF hdl
- print flg
- hClose hdl
diff --git a/testsuite/tests/lib/IO/hSeek002.stdout b/testsuite/tests/lib/IO/hSeek002.stdout
deleted file mode 100644
index 8069fe32b0..0000000000
--- a/testsuite/tests/lib/IO/hSeek002.stdout
+++ /dev/null
@@ -1,5 +0,0 @@
-False
-True
-False
-True
-False
diff --git a/testsuite/tests/lib/IO/hSeek003.hs b/testsuite/tests/lib/IO/hSeek003.hs
deleted file mode 100644
index 03400573c4..0000000000
--- a/testsuite/tests/lib/IO/hSeek003.hs
+++ /dev/null
@@ -1,51 +0,0 @@
--- !!! file positions (hGetPosn and hSetPosn)
-
-module Main(main) where
-
-import System.IO
-import Control.Monad ( sequence )
-
-testPosns :: Handle -> BufferMode -> IO ()
-testPosns hdl bmo = do
- hSetBuffering hdl bmo
- putStrLn ("Testing positioning with buffer mode set to: " ++ show bmo)
- testPositioning hdl
-
-bmo_ls = [NoBuffering, LineBuffering, BlockBuffering Nothing,
- BlockBuffering (Just 511),BlockBuffering (Just 3), BlockBuffering (Just 11)]
-
-main = do
- hdl <- openFile "hSeek003.hs" ReadMode
- sequence (zipWith testPosns (repeat hdl) bmo_ls)
- hClose hdl
-
-testPositioning hdl = do
- hSeek hdl AbsoluteSeek 0 -- go to the beginning of the file again.
- ps <- getFilePosns 10 hdl
- hSeek hdl AbsoluteSeek 0
- putStr "First ten chars: "
- ls <- hGetChars 10 hdl
- putStrLn ls
- -- go to the end
- hSeek hdl SeekFromEnd 0
- ls <- sequence (map (\ p -> hSetPosn p >> hGetChar hdl) ps)
- putStr "First ten chars: "
- putStrLn ls
-
- -- position ourselves in the middle.
- sz <- hFileSize hdl
- hSeek hdl AbsoluteSeek (sz `div` 2)
- ls <- sequence (map (\ p -> hSetPosn p >> hGetChar hdl) ps)
- putStr "First ten chars: "
- putStrLn ls
-
-hGetChars :: Int -> Handle -> IO String
-hGetChars n h = sequence (replicate n (hGetChar h))
-
-getFilePosns :: Int -> Handle -> IO [HandlePosn]
-getFilePosns 0 h = return []
-getFilePosns x h = do
- p <- hGetPosn h
- hGetChar h
- ps <- getFilePosns (x-1) h
- return (p:ps)
diff --git a/testsuite/tests/lib/IO/hSeek003.stdout b/testsuite/tests/lib/IO/hSeek003.stdout
deleted file mode 100644
index 7c765c5bc5..0000000000
--- a/testsuite/tests/lib/IO/hSeek003.stdout
+++ /dev/null
@@ -1,24 +0,0 @@
-Testing positioning with buffer mode set to: NoBuffering
-First ten chars: -- !!! fil
-First ten chars: -- !!! fil
-First ten chars: -- !!! fil
-Testing positioning with buffer mode set to: LineBuffering
-First ten chars: -- !!! fil
-First ten chars: -- !!! fil
-First ten chars: -- !!! fil
-Testing positioning with buffer mode set to: BlockBuffering Nothing
-First ten chars: -- !!! fil
-First ten chars: -- !!! fil
-First ten chars: -- !!! fil
-Testing positioning with buffer mode set to: BlockBuffering (Just 511)
-First ten chars: -- !!! fil
-First ten chars: -- !!! fil
-First ten chars: -- !!! fil
-Testing positioning with buffer mode set to: BlockBuffering (Just 3)
-First ten chars: -- !!! fil
-First ten chars: -- !!! fil
-First ten chars: -- !!! fil
-Testing positioning with buffer mode set to: BlockBuffering (Just 11)
-First ten chars: -- !!! fil
-First ten chars: -- !!! fil
-First ten chars: -- !!! fil
diff --git a/testsuite/tests/lib/IO/hSeek004.hs b/testsuite/tests/lib/IO/hSeek004.hs
deleted file mode 100644
index 9ad7c13e7f..0000000000
--- a/testsuite/tests/lib/IO/hSeek004.hs
+++ /dev/null
@@ -1,8 +0,0 @@
--- !!! can't seek an AppendMode handle
-
-import System.IO
-import System.IO.Error
-
-main = do
- h <- openFile "hSeek004.out" AppendMode
- try (hSeek h AbsoluteSeek 0) >>= print
diff --git a/testsuite/tests/lib/IO/hSeek004.stdout b/testsuite/tests/lib/IO/hSeek004.stdout
deleted file mode 100644
index d2671a6361..0000000000
--- a/testsuite/tests/lib/IO/hSeek004.stdout
+++ /dev/null
@@ -1 +0,0 @@
-Left hSeek004.out: hSeek: illegal operation (handle is not seekable)
diff --git a/testsuite/tests/lib/IO/hSeek004.stdout-mingw b/testsuite/tests/lib/IO/hSeek004.stdout-mingw
deleted file mode 100644
index 7d8e7076ee..0000000000
--- a/testsuite/tests/lib/IO/hSeek004.stdout-mingw
+++ /dev/null
@@ -1,5 +0,0 @@
-Left illegal operation
-Action: hSeek
-Handle: {loc=hSeek004.out,type=writable (append),binary=True,buffering=block (512)}
-Reason: handle is not seekable
-File: hSeek004.out
diff --git a/testsuite/tests/lib/IO/hSetBuffering002.hs b/testsuite/tests/lib/IO/hSetBuffering002.hs
deleted file mode 100644
index 3f553029da..0000000000
--- a/testsuite/tests/lib/IO/hSetBuffering002.hs
+++ /dev/null
@@ -1,6 +0,0 @@
-import System.IO
-
-main =
- hSetBuffering stdin NoBuffering >>
- hSetBuffering stdout NoBuffering >>
- interact id
diff --git a/testsuite/tests/lib/IO/hSetBuffering002.stdout b/testsuite/tests/lib/IO/hSetBuffering002.stdout
deleted file mode 100644
index 3f553029da..0000000000
--- a/testsuite/tests/lib/IO/hSetBuffering002.stdout
+++ /dev/null
@@ -1,6 +0,0 @@
-import System.IO
-
-main =
- hSetBuffering stdin NoBuffering >>
- hSetBuffering stdout NoBuffering >>
- interact id
diff --git a/testsuite/tests/lib/IO/hSetBuffering003.hs b/testsuite/tests/lib/IO/hSetBuffering003.hs
deleted file mode 100644
index 74d399e4ff..0000000000
--- a/testsuite/tests/lib/IO/hSetBuffering003.hs
+++ /dev/null
@@ -1,79 +0,0 @@
--- !!! Reconfiguring the buffering of a handle
-module Main(main) where
-
-import System.IO
-
-queryBuffering :: String -> Handle -> IO ()
-queryBuffering handle_nm handle = do
- bufm <- hGetBuffering handle
- putStrLn ("Buffering for " ++ handle_nm ++ " is: " ++ show bufm)
-
-main = do
- queryBuffering "stdin" stdin
- queryBuffering "stdout" stdout
- queryBuffering "stderr" stderr
-
- -- twiddling the setting for stdin.
- hSetBuffering stdin NoBuffering
- queryBuffering "stdin" stdin
- hSetBuffering stdin LineBuffering
- queryBuffering "stdin" stdin
- hSetBuffering stdin (BlockBuffering (Just 2))
- queryBuffering "stdin" stdin
- hSetBuffering stdin (BlockBuffering Nothing)
- queryBuffering "stdin" stdin
- let bmo = BlockBuffering (Just (-3))
- hSetBuffering stdin bmo `catch` \ _ -> putStrLn ("Caught illegal op: hSetBuffering stdin " ++ showParen True (showsPrec 9 bmo) [])
-
- putChar '\n'
-
- -- twiddling the buffering for stdout
- hPutStr stdout "Hello stdout 1"
- hSetBuffering stdout NoBuffering
- queryBuffering "stdout" stdout
- hPutStr stdout "Hello stdout 2"
- hSetBuffering stdout LineBuffering
- queryBuffering "stdout" stdout
- hPutStr stdout "Hello stdout 3"
- hSetBuffering stdout (BlockBuffering (Just 2))
- queryBuffering "stdout" stdout
- hPutStr stdout "Hello stdout 4"
- hSetBuffering stdout (BlockBuffering Nothing)
- queryBuffering "stdout" stdout
- hPutStr stdout "Hello stdout 5"
- let bmo = BlockBuffering (Just (-3))
- hSetBuffering stdout bmo `catch` \ _ -> putStrLn ("Caught illegal op: hSetBuffering stdout " ++ showParen True (showsPrec 9 bmo) [])
-
- putChar '\n'
-
- -- twiddling the buffering for stderr
- hPutStr stderr "Hello stderr 1"
- hSetBuffering stderr NoBuffering
- queryBuffering "stderr" stderr
- hPutStr stderr "Hello stderr 2"
- hSetBuffering stderr LineBuffering
- queryBuffering "stderr" stderr
- hPutStr stderr "Hello stderr 3"
- hSetBuffering stderr (BlockBuffering (Just 2))
- queryBuffering "stderr" stderr
- hPutStr stderr "Hello stderr 4"
- hSetBuffering stderr (BlockBuffering Nothing)
- queryBuffering "stderr" stderr
- hPutStr stderr "Hello stderr 5"
- let bmo = BlockBuffering (Just (-3))
- hSetBuffering stderr bmo `catch` \ _ -> putStrLn ("Caught illegal op: hSetBuffering stderr " ++ showParen True (showsPrec 9 bmo) [])
-
- ls <- hGetContents stdin
- ls' <- putLine ls
- hSetBuffering stdin NoBuffering
- putLine ls'
- return ()
-
-putLine :: String -> IO String
-putLine [] = return []
-putLine (x:xs) = do
- putChar x
- case x of
- '\n' -> return xs
- _ -> putLine xs
-
diff --git a/testsuite/tests/lib/IO/hSetBuffering003.stderr b/testsuite/tests/lib/IO/hSetBuffering003.stderr
deleted file mode 100644
index a4cf8779b4..0000000000
--- a/testsuite/tests/lib/IO/hSetBuffering003.stderr
+++ /dev/null
@@ -1 +0,0 @@
-Hello stderr 1Hello stderr 2Hello stderr 3Hello stderr 4Hello stderr 5 \ No newline at end of file
diff --git a/testsuite/tests/lib/IO/hSetBuffering003.stdout b/testsuite/tests/lib/IO/hSetBuffering003.stdout
deleted file mode 100644
index 7768773198..0000000000
--- a/testsuite/tests/lib/IO/hSetBuffering003.stdout
+++ /dev/null
@@ -1,22 +0,0 @@
-Buffering for stdin is: BlockBuffering Nothing
-Buffering for stdout is: BlockBuffering Nothing
-Buffering for stderr is: NoBuffering
-Buffering for stdin is: NoBuffering
-Buffering for stdin is: LineBuffering
-Buffering for stdin is: BlockBuffering (Just 2)
-Buffering for stdin is: BlockBuffering Nothing
-Caught illegal op: hSetBuffering stdin (BlockBuffering (Just (-3)))
-
-Hello stdout 1Buffering for stdout is: NoBuffering
-Hello stdout 2Buffering for stdout is: LineBuffering
-Hello stdout 3Buffering for stdout is: BlockBuffering (Just 2)
-Hello stdout 4Buffering for stdout is: BlockBuffering Nothing
-Hello stdout 5Caught illegal op: hSetBuffering stdout (BlockBuffering (Just (-3)))
-
-Buffering for stderr is: NoBuffering
-Buffering for stderr is: LineBuffering
-Buffering for stderr is: BlockBuffering (Just 2)
-Buffering for stderr is: BlockBuffering Nothing
-Caught illegal op: hSetBuffering stderr (BlockBuffering (Just (-3)))
--- !!! Reconfiguring the buffering of a handle
-module Main(main) where
diff --git a/testsuite/tests/lib/IO/hSetBuffering004.hs b/testsuite/tests/lib/IO/hSetBuffering004.hs
deleted file mode 100644
index eaee6826d2..0000000000
--- a/testsuite/tests/lib/IO/hSetBuffering004.hs
+++ /dev/null
@@ -1,9 +0,0 @@
--- test for #2678
-module Main (main) where
-
-import System.IO
-
-main :: IO ()
-main = do hSetBuffering stdin NoBuffering
- hLookAhead stdin >>= print
- hSetBuffering stdin LineBuffering
diff --git a/testsuite/tests/lib/IO/hSetBuffering004.stdout b/testsuite/tests/lib/IO/hSetBuffering004.stdout
deleted file mode 100644
index 7766eec971..0000000000
--- a/testsuite/tests/lib/IO/hSetBuffering004.stdout
+++ /dev/null
@@ -1 +0,0 @@
-'-'
diff --git a/testsuite/tests/lib/IO/hSetEncoding001.hs b/testsuite/tests/lib/IO/hSetEncoding001.hs
deleted file mode 100644
index 95f570d094..0000000000
--- a/testsuite/tests/lib/IO/hSetEncoding001.hs
+++ /dev/null
@@ -1,49 +0,0 @@
-import System.IO
-import GHC.IO.Handle
-import GHC.IO.Encoding
-import System.Environment
-
--- Test switching encodings
--- The test file is built by the Makefile
-
-main = do
- [file] <- getArgs
- test file NoBuffering
- test file (BlockBuffering Nothing)
- test file (BlockBuffering (Just 5))
-
-test file buf = do
- hSetEncoding stdout utf8
- h <- openBinaryFile file ReadMode
- hSetBuffering stdout buf
- putStrLn "no encoding:"
- getUntilX h
- hSetEncoding h utf8
- putStrLn "UTF8:"
- getUntilX h
- hSetEncoding h utf16le
- putStrLn "UTF16LE:"
- getUntilX h
- hSetEncoding h utf16be
- putStrLn "UTF16BE:"
- getUntilX h
- hSetEncoding h utf16
- putStrLn "UTF16:"
- getUntilX h
- hSetEncoding h utf32
- putStrLn "UTF32:"
- getUntilX h
- hSetEncoding h utf32le
- putStrLn "UTF32LE:"
- getUntilX h
- hSetEncoding h utf32be
- putStrLn "UTF32BE:"
- getUntilX h
- hSetEncoding h utf8_bom
- putStrLn "UTF8-BOM:"
- getUntilX h
- hIsEOF h >>= print
-
-getUntilX h = do
- c <- hGetChar h
- if c == 'X' then return () else do putChar c; getUntilX h
diff --git a/testsuite/tests/lib/IO/hSetEncoding001.in b/testsuite/tests/lib/IO/hSetEncoding001.in
deleted file mode 100644
index 03f297441d..0000000000
--- a/testsuite/tests/lib/IO/hSetEncoding001.in
+++ /dev/null
Binary files differ
diff --git a/testsuite/tests/lib/IO/hSetEncoding001.stdout b/testsuite/tests/lib/IO/hSetEncoding001.stdout
deleted file mode 100644
index a1d38ffd77..0000000000
--- a/testsuite/tests/lib/IO/hSetEncoding001.stdout
+++ /dev/null
@@ -1,90 +0,0 @@
-no encoding:
-c0 | À à Â Ã Ä Ã… Æ Ç È É Ê Ë ÃŒ à Î Ã
-d0 | à Ñ Ò Ó Ô Õ Ö × Ø Ù Ú Û Ü à Þ ß
-e0 | à á â ã ä å æ ç è é ê ë ì í î ï
-f0 | ð ñ ò ó ô õ ö ÷ ø ù ú û ü ý þ ÿ
-UTF8:
-(∘) :: ∀ α β γ . (β → γ) → (α → β) → (α → γ)
-ð‘Žð‘ð‘ð‘‘ð‘’ð‘“ð‘”ð‘–ð‘—ð‘˜ð‘™ð‘šð‘›ð‘œð‘ð‘žð‘Ÿð‘ ð‘¡ð‘¢ð‘£ð‘¤ð‘¥ð‘¦ð‘§
-UTF16LE:
-(∘) :: ∀ α β γ . (β → γ) → (α → β) → (α → γ)
-ð‘Žð‘ð‘ð‘‘ð‘’ð‘“ð‘”ð‘–ð‘—ð‘˜ð‘™ð‘šð‘›ð‘œð‘ð‘žð‘Ÿð‘ ð‘¡ð‘¢ð‘£ð‘¤ð‘¥ð‘¦ð‘§
-UTF16BE:
-(∘) :: ∀ α β γ . (β → γ) → (α → β) → (α → γ)
-ð‘Žð‘ð‘ð‘‘ð‘’ð‘“ð‘”ð‘–ð‘—ð‘˜ð‘™ð‘šð‘›ð‘œð‘ð‘žð‘Ÿð‘ ð‘¡ð‘¢ð‘£ð‘¤ð‘¥ð‘¦ð‘§
-UTF16:
-(∘) :: ∀ α β γ . (β → γ) → (α → β) → (α → γ)
-ð‘Žð‘ð‘ð‘‘ð‘’ð‘“ð‘”ð‘–ð‘—ð‘˜ð‘™ð‘šð‘›ð‘œð‘ð‘žð‘Ÿð‘ ð‘¡ð‘¢ð‘£ð‘¤ð‘¥ð‘¦ð‘§
-UTF32:
-(∘) :: ∀ α β γ . (β → γ) → (α → β) → (α → γ)
-ð‘Žð‘ð‘ð‘‘ð‘’ð‘“ð‘”ð‘–ð‘—ð‘˜ð‘™ð‘šð‘›ð‘œð‘ð‘žð‘Ÿð‘ ð‘¡ð‘¢ð‘£ð‘¤ð‘¥ð‘¦ð‘§
-UTF32LE:
-(∘) :: ∀ α β γ . (β → γ) → (α → β) → (α → γ)
-ð‘Žð‘ð‘ð‘‘ð‘’ð‘“ð‘”ð‘–ð‘—ð‘˜ð‘™ð‘šð‘›ð‘œð‘ð‘žð‘Ÿð‘ ð‘¡ð‘¢ð‘£ð‘¤ð‘¥ð‘¦ð‘§
-UTF32BE:
-(∘) :: ∀ α β γ . (β → γ) → (α → β) → (α → γ)
-ð‘Žð‘ð‘ð‘‘ð‘’ð‘“ð‘”ð‘–ð‘—ð‘˜ð‘™ð‘šð‘›ð‘œð‘ð‘žð‘Ÿð‘ ð‘¡ð‘¢ð‘£ð‘¤ð‘¥ð‘¦ð‘§
-UTF8-BOM:
-(∘) :: ∀ α β γ . (β → γ) → (α → β) → (α → γ)
-ð‘Žð‘ð‘ð‘‘ð‘’ð‘“ð‘”ð‘–ð‘—ð‘˜ð‘™ð‘šð‘›ð‘œð‘ð‘žð‘Ÿð‘ ð‘¡ð‘¢ð‘£ð‘¤ð‘¥ð‘¦ð‘§
-True
-no encoding:
-c0 | À à Â Ã Ä Ã… Æ Ç È É Ê Ë ÃŒ à Î Ã
-d0 | à Ñ Ò Ó Ô Õ Ö × Ø Ù Ú Û Ü à Þ ß
-e0 | à á â ã ä å æ ç è é ê ë ì í î ï
-f0 | ð ñ ò ó ô õ ö ÷ ø ù ú û ü ý þ ÿ
-UTF8:
-(∘) :: ∀ α β γ . (β → γ) → (α → β) → (α → γ)
-ð‘Žð‘ð‘ð‘‘ð‘’ð‘“ð‘”ð‘–ð‘—ð‘˜ð‘™ð‘šð‘›ð‘œð‘ð‘žð‘Ÿð‘ ð‘¡ð‘¢ð‘£ð‘¤ð‘¥ð‘¦ð‘§
-UTF16LE:
-(∘) :: ∀ α β γ . (β → γ) → (α → β) → (α → γ)
-ð‘Žð‘ð‘ð‘‘ð‘’ð‘“ð‘”ð‘–ð‘—ð‘˜ð‘™ð‘šð‘›ð‘œð‘ð‘žð‘Ÿð‘ ð‘¡ð‘¢ð‘£ð‘¤ð‘¥ð‘¦ð‘§
-UTF16BE:
-(∘) :: ∀ α β γ . (β → γ) → (α → β) → (α → γ)
-ð‘Žð‘ð‘ð‘‘ð‘’ð‘“ð‘”ð‘–ð‘—ð‘˜ð‘™ð‘šð‘›ð‘œð‘ð‘žð‘Ÿð‘ ð‘¡ð‘¢ð‘£ð‘¤ð‘¥ð‘¦ð‘§
-UTF16:
-(∘) :: ∀ α β γ . (β → γ) → (α → β) → (α → γ)
-ð‘Žð‘ð‘ð‘‘ð‘’ð‘“ð‘”ð‘–ð‘—ð‘˜ð‘™ð‘šð‘›ð‘œð‘ð‘žð‘Ÿð‘ ð‘¡ð‘¢ð‘£ð‘¤ð‘¥ð‘¦ð‘§
-UTF32:
-(∘) :: ∀ α β γ . (β → γ) → (α → β) → (α → γ)
-ð‘Žð‘ð‘ð‘‘ð‘’ð‘“ð‘”ð‘–ð‘—ð‘˜ð‘™ð‘šð‘›ð‘œð‘ð‘žð‘Ÿð‘ ð‘¡ð‘¢ð‘£ð‘¤ð‘¥ð‘¦ð‘§
-UTF32LE:
-(∘) :: ∀ α β γ . (β → γ) → (α → β) → (α → γ)
-ð‘Žð‘ð‘ð‘‘ð‘’ð‘“ð‘”ð‘–ð‘—ð‘˜ð‘™ð‘šð‘›ð‘œð‘ð‘žð‘Ÿð‘ ð‘¡ð‘¢ð‘£ð‘¤ð‘¥ð‘¦ð‘§
-UTF32BE:
-(∘) :: ∀ α β γ . (β → γ) → (α → β) → (α → γ)
-ð‘Žð‘ð‘ð‘‘ð‘’ð‘“ð‘”ð‘–ð‘—ð‘˜ð‘™ð‘šð‘›ð‘œð‘ð‘žð‘Ÿð‘ ð‘¡ð‘¢ð‘£ð‘¤ð‘¥ð‘¦ð‘§
-UTF8-BOM:
-(∘) :: ∀ α β γ . (β → γ) → (α → β) → (α → γ)
-ð‘Žð‘ð‘ð‘‘ð‘’ð‘“ð‘”ð‘–ð‘—ð‘˜ð‘™ð‘šð‘›ð‘œð‘ð‘žð‘Ÿð‘ ð‘¡ð‘¢ð‘£ð‘¤ð‘¥ð‘¦ð‘§
-True
-no encoding:
-c0 | À à Â Ã Ä Ã… Æ Ç È É Ê Ë ÃŒ à Î Ã
-d0 | à Ñ Ò Ó Ô Õ Ö × Ø Ù Ú Û Ü à Þ ß
-e0 | à á â ã ä å æ ç è é ê ë ì í î ï
-f0 | ð ñ ò ó ô õ ö ÷ ø ù ú û ü ý þ ÿ
-UTF8:
-(∘) :: ∀ α β γ . (β → γ) → (α → β) → (α → γ)
-ð‘Žð‘ð‘ð‘‘ð‘’ð‘“ð‘”ð‘–ð‘—ð‘˜ð‘™ð‘šð‘›ð‘œð‘ð‘žð‘Ÿð‘ ð‘¡ð‘¢ð‘£ð‘¤ð‘¥ð‘¦ð‘§
-UTF16LE:
-(∘) :: ∀ α β γ . (β → γ) → (α → β) → (α → γ)
-ð‘Žð‘ð‘ð‘‘ð‘’ð‘“ð‘”ð‘–ð‘—ð‘˜ð‘™ð‘šð‘›ð‘œð‘ð‘žð‘Ÿð‘ ð‘¡ð‘¢ð‘£ð‘¤ð‘¥ð‘¦ð‘§
-UTF16BE:
-(∘) :: ∀ α β γ . (β → γ) → (α → β) → (α → γ)
-ð‘Žð‘ð‘ð‘‘ð‘’ð‘“ð‘”ð‘–ð‘—ð‘˜ð‘™ð‘šð‘›ð‘œð‘ð‘žð‘Ÿð‘ ð‘¡ð‘¢ð‘£ð‘¤ð‘¥ð‘¦ð‘§
-UTF16:
-(∘) :: ∀ α β γ . (β → γ) → (α → β) → (α → γ)
-ð‘Žð‘ð‘ð‘‘ð‘’ð‘“ð‘”ð‘–ð‘—ð‘˜ð‘™ð‘šð‘›ð‘œð‘ð‘žð‘Ÿð‘ ð‘¡ð‘¢ð‘£ð‘¤ð‘¥ð‘¦ð‘§
-UTF32:
-(∘) :: ∀ α β γ . (β → γ) → (α → β) → (α → γ)
-ð‘Žð‘ð‘ð‘‘ð‘’ð‘“ð‘”ð‘–ð‘—ð‘˜ð‘™ð‘šð‘›ð‘œð‘ð‘žð‘Ÿð‘ ð‘¡ð‘¢ð‘£ð‘¤ð‘¥ð‘¦ð‘§
-UTF32LE:
-(∘) :: ∀ α β γ . (β → γ) → (α → β) → (α → γ)
-ð‘Žð‘ð‘ð‘‘ð‘’ð‘“ð‘”ð‘–ð‘—ð‘˜ð‘™ð‘šð‘›ð‘œð‘ð‘žð‘Ÿð‘ ð‘¡ð‘¢ð‘£ð‘¤ð‘¥ð‘¦ð‘§
-UTF32BE:
-(∘) :: ∀ α β γ . (β → γ) → (α → β) → (α → γ)
-ð‘Žð‘ð‘ð‘‘ð‘’ð‘“ð‘”ð‘–ð‘—ð‘˜ð‘™ð‘šð‘›ð‘œð‘ð‘žð‘Ÿð‘ ð‘¡ð‘¢ð‘£ð‘¤ð‘¥ð‘¦ð‘§
-UTF8-BOM:
-(∘) :: ∀ α β γ . (β → γ) → (α → β) → (α → γ)
-ð‘Žð‘ð‘ð‘‘ð‘’ð‘“ð‘”ð‘–ð‘—ð‘˜ð‘™ð‘šð‘›ð‘œð‘ð‘žð‘Ÿð‘ ð‘¡ð‘¢ð‘£ð‘¤ð‘¥ð‘¦ð‘§
-True
diff --git a/testsuite/tests/lib/IO/hSetEncoding002.hs b/testsuite/tests/lib/IO/hSetEncoding002.hs
deleted file mode 100644
index 35c4e1ce19..0000000000
--- a/testsuite/tests/lib/IO/hSetEncoding002.hs
+++ /dev/null
@@ -1,13 +0,0 @@
--- test for #4066
-
-import System.IO
-
-import GHC.IO.FD as FD (stdout)
-import GHC.IO.Handle.FD as FD (fdToHandle)
-import GHC.IO.Handle ( mkDuplexHandle )
-
-main = do
- h <- mkDuplexHandle FD.stdout "stdout" Nothing noNewlineTranslation
- hSetEncoding h utf8
- hPutStrLn h "ö"
- hClose h
diff --git a/testsuite/tests/lib/IO/hSetEncoding002.stdout b/testsuite/tests/lib/IO/hSetEncoding002.stdout
deleted file mode 100644
index d3b4b915a1..0000000000
--- a/testsuite/tests/lib/IO/hSetEncoding002.stdout
+++ /dev/null
@@ -1 +0,0 @@
-ö
diff --git a/testsuite/tests/lib/IO/ioeGetErrorString001.hs b/testsuite/tests/lib/IO/ioeGetErrorString001.hs
deleted file mode 100644
index 5621136a55..0000000000
--- a/testsuite/tests/lib/IO/ioeGetErrorString001.hs
+++ /dev/null
@@ -1,13 +0,0 @@
--- !!! test ioeGetErrorString
-
-import System.IO
-import System.IO.Error
-import Data.Maybe
-
-main = do
- h <- openFile "ioeGetErrorString001.hs" ReadMode
- hSeek h SeekFromEnd 0
- (hGetChar h >> return ()) `catch`
- \e -> if isEOFError e
- then print (ioeGetErrorString e)
- else putStrLn "failed."
diff --git a/testsuite/tests/lib/IO/ioeGetErrorString001.stdout b/testsuite/tests/lib/IO/ioeGetErrorString001.stdout
deleted file mode 100644
index 0b8daea55a..0000000000
--- a/testsuite/tests/lib/IO/ioeGetErrorString001.stdout
+++ /dev/null
@@ -1 +0,0 @@
-"end of file"
diff --git a/testsuite/tests/lib/IO/ioeGetFileName001.hs b/testsuite/tests/lib/IO/ioeGetFileName001.hs
deleted file mode 100644
index 12c70c98b4..0000000000
--- a/testsuite/tests/lib/IO/ioeGetFileName001.hs
+++ /dev/null
@@ -1,12 +0,0 @@
--- !!! test ioeGetFileName
-
-import System.IO
-import System.IO.Error
-
-main = do
- h <- openFile "ioeGetFileName001.hs" ReadMode
- hSeek h SeekFromEnd 0
- (hGetChar h >> return ()) `catch`
- \e -> if isEOFError e
- then print (ioeGetFileName e)
- else putStrLn "failed."
diff --git a/testsuite/tests/lib/IO/ioeGetFileName001.stdout b/testsuite/tests/lib/IO/ioeGetFileName001.stdout
deleted file mode 100644
index 7377ad409d..0000000000
--- a/testsuite/tests/lib/IO/ioeGetFileName001.stdout
+++ /dev/null
@@ -1 +0,0 @@
-Just "ioeGetFileName001.hs"
diff --git a/testsuite/tests/lib/IO/ioeGetHandle001.hs b/testsuite/tests/lib/IO/ioeGetHandle001.hs
deleted file mode 100644
index a9ef58a8ca..0000000000
--- a/testsuite/tests/lib/IO/ioeGetHandle001.hs
+++ /dev/null
@@ -1,13 +0,0 @@
--- !!! test ioeGetHandle
-
-import System.IO
-import System.IO.Error
-import Data.Maybe
-
-main = do
- h <- openFile "ioeGetHandle001.hs" ReadMode
- hSeek h SeekFromEnd 0
- (hGetChar h >> return ()) `catch`
- \e -> if isEOFError e && fromJust (ioeGetHandle e) == h
- then putStrLn "ok."
- else putStrLn "failed."
diff --git a/testsuite/tests/lib/IO/ioeGetHandle001.stdout b/testsuite/tests/lib/IO/ioeGetHandle001.stdout
deleted file mode 100644
index 90b5016eff..0000000000
--- a/testsuite/tests/lib/IO/ioeGetHandle001.stdout
+++ /dev/null
@@ -1 +0,0 @@
-ok.
diff --git a/testsuite/tests/lib/IO/isEOF001.hs b/testsuite/tests/lib/IO/isEOF001.hs
deleted file mode 100644
index bb205703f8..0000000000
--- a/testsuite/tests/lib/IO/isEOF001.hs
+++ /dev/null
@@ -1,3 +0,0 @@
-import System.IO
-
-main = isEOF >>= print
diff --git a/testsuite/tests/lib/IO/isEOF001.stdout b/testsuite/tests/lib/IO/isEOF001.stdout
deleted file mode 100644
index 0ca95142bb..0000000000
--- a/testsuite/tests/lib/IO/isEOF001.stdout
+++ /dev/null
@@ -1 +0,0 @@
-True
diff --git a/testsuite/tests/lib/IO/latin1 b/testsuite/tests/lib/IO/latin1
deleted file mode 100644
index a634257fbf..0000000000
--- a/testsuite/tests/lib/IO/latin1
+++ /dev/null
@@ -1,5 +0,0 @@
-c0 | À Á Â Ã Ä Å Æ Ç È É Ê Ë Ì Í Î Ï
-d0 | Ð Ñ Ò Ó Ô Õ Ö × Ø Ù Ú Û Ü Ý Þ ß
-e0 | à á â ã ä å æ ç è é ê ë ì í î ï
-f0 | ð ñ ò ó ô õ ö ÷ ø ù ú û ü ý þ ÿ
-X \ No newline at end of file
diff --git a/testsuite/tests/lib/IO/misc001.hs b/testsuite/tests/lib/IO/misc001.hs
deleted file mode 100644
index 9f9f3e98d0..0000000000
--- a/testsuite/tests/lib/IO/misc001.hs
+++ /dev/null
@@ -1,24 +0,0 @@
-import System.IO
-
-import Data.Char (toUpper)
-import System.Directory (removeFile, doesFileExist)
-import System.Environment (getArgs)
-
-main = do
- [f1,f2] <- getArgs
- h1 <- openFile f1 ReadMode
- f <- doesFileExist f2
- if f then removeFile f2 else return ()
- h2 <- openFile f2 WriteMode
- copyFile h1 h2
- hClose h1
- hClose h2
-
-copyFile h1 h2 = do
- eof <- hIsEOF h1
- if eof
- then return ()
- else do
- c <- hGetChar h1
- c <- hPutChar h2 (toUpper c)
- copyFile h1 h2
diff --git a/testsuite/tests/lib/IO/newline001.hs b/testsuite/tests/lib/IO/newline001.hs
deleted file mode 100644
index b12a65bcaa..0000000000
--- a/testsuite/tests/lib/IO/newline001.hs
+++ /dev/null
@@ -1,121 +0,0 @@
-import System.IO
-import GHC.IO.Handle
-import Control.Monad
-import Data.List
-
-newlines = ["\n","\r","\r\n","\n\r","\n\n","\r\r"]
-
--- make sure the file ends in '\r': that's a tricky case for CRLF
--- conversion, because the IO library has to check whether there's a
--- following \n before returning the \r.
-content = concat [ show i ++ t | (i,t) <- zip [1..100] (cycle newlines) ]
-
-filename = "newline001.out"
-
-fromCRLF [] = []
-fromCRLF ('\r':'\n':cs) = '\n' : fromCRLF cs
-fromCRLF (c:cs) = c : fromCRLF cs
-
-toCRLF [] = []
-toCRLF ('\n':cs) = '\r':'\n': toCRLF cs
-toCRLF (c:cs) = c : toCRLF cs
-
-main = do
- h <- openBinaryFile filename WriteMode
- hPutStr h content
- hClose h
- testinput NoBuffering
- testinput LineBuffering
- testinput (BlockBuffering Nothing)
- testinput (BlockBuffering (Just 3))
- testinput (BlockBuffering (Just 7))
- testinput (BlockBuffering (Just 16))
- testoutput NoBuffering
- testoutput LineBuffering
- testoutput (BlockBuffering Nothing)
- testoutput (BlockBuffering (Just 3))
- testoutput (BlockBuffering (Just 7))
- testoutput (BlockBuffering (Just 16))
-
-testinput b = do
- h <- openFile filename ReadMode
- hSetBuffering h b
- hSetNewlineMode h noNewlineTranslation
- str <- hGetContents h
- check "in1" b str content
- hClose h
-
- h <- openFile filename ReadMode
- hSetBuffering h b
- hSetNewlineMode h noNewlineTranslation
- str <- read_chars h
- check "in2" b str content
- hClose h
-
- h <- openFile filename ReadMode
- hSetBuffering h b
- hSetNewlineMode h noNewlineTranslation
- str <- read_lines h
- check "in3" b str content
- hClose h
-
- h <- openFile filename ReadMode
- hSetBuffering h b
- hSetNewlineMode h NewlineMode{ inputNL=CRLF, outputNL=LF }
- str <- hGetContents h
- check "in4" b str (fromCRLF content)
- hClose h
-
- h <- openFile filename ReadMode
- hSetBuffering h b
- hSetNewlineMode h NewlineMode{ inputNL=CRLF, outputNL=LF }
- str <- read_chars h
- check "in5" b str (fromCRLF content)
- hClose h
-
- h <- openFile filename ReadMode
- hSetBuffering h b
- hSetNewlineMode h NewlineMode{ inputNL=CRLF, outputNL=LF }
- str <- read_lines h
- check "in6" b str (fromCRLF content)
- hClose h
-
-testoutput b = do
- h <- openFile filename WriteMode
- hSetBuffering h b
- hSetNewlineMode h NewlineMode{ inputNL=LF, outputNL=CRLF }
- hPutStr h content
- hClose h
- h <- openBinaryFile filename ReadMode
- str <- hGetContents h
- check "out1" b (toCRLF content) str
- hClose h
-
- h <- openFile filename WriteMode
- hSetBuffering h b
- hSetNewlineMode h NewlineMode{ inputNL=LF, outputNL=CRLF }
- mapM_ (hPutChar h) content
- hClose h
- h <- openBinaryFile filename ReadMode
- str <- hGetContents h
- check "out2" b (toCRLF content) str
- hClose h
-
-check s b str1 str2 = do
- when (str1 /= str2) $ error ("failed: " ++ s ++ ", " ++ show b ++ '\n':show str1 ++ '\n':show str2)
-
-read_chars :: Handle -> IO String
-read_chars h = loop h ""
- where loop h acc = do
- b <- hIsEOF h
- if b then return (reverse acc) else do
- c <- hGetChar h
- loop h (c:acc)
-
-read_lines :: Handle -> IO String
-read_lines h = loop h []
- where loop h acc = do
- b <- hIsEOF h
- if b then return (intercalate "\n" (reverse acc)) else do
- l <- hGetLine h
- loop h (l : acc)
diff --git a/testsuite/tests/lib/IO/openFile001.hs b/testsuite/tests/lib/IO/openFile001.hs
deleted file mode 100644
index f34f093d38..0000000000
--- a/testsuite/tests/lib/IO/openFile001.hs
+++ /dev/null
@@ -1,11 +0,0 @@
--- !!! test that a file opened in ReadMode can't be written to
-
-import System.IO
-import System.IO.Error
-
-main = do
- hIn <- openFile "openFile001.hs" ReadMode
- hPutStr hIn "test" `catchIOError` \ err ->
- if isIllegalOperation err
- then putStrLn "ok."
- else error "Oh dear\n"
diff --git a/testsuite/tests/lib/IO/openFile001.stdout b/testsuite/tests/lib/IO/openFile001.stdout
deleted file mode 100644
index 90b5016eff..0000000000
--- a/testsuite/tests/lib/IO/openFile001.stdout
+++ /dev/null
@@ -1 +0,0 @@
-ok.
diff --git a/testsuite/tests/lib/IO/openFile002.hs b/testsuite/tests/lib/IO/openFile002.hs
deleted file mode 100644
index 83822621f6..0000000000
--- a/testsuite/tests/lib/IO/openFile002.hs
+++ /dev/null
@@ -1,6 +0,0 @@
-import Data.Char
-import System.IO
-
--- !!! Open a non-existent file for reading (should fail)
-
-main = openFile "nonexistent" ReadMode
diff --git a/testsuite/tests/lib/IO/openFile002.stderr b/testsuite/tests/lib/IO/openFile002.stderr
deleted file mode 100644
index b011f34146..0000000000
--- a/testsuite/tests/lib/IO/openFile002.stderr
+++ /dev/null
@@ -1 +0,0 @@
-openFile002: nonexistent: openFile: does not exist (No such file or directory)
diff --git a/testsuite/tests/lib/IO/openFile002.stderr-hugs b/testsuite/tests/lib/IO/openFile002.stderr-hugs
deleted file mode 100644
index aa76710e44..0000000000
--- a/testsuite/tests/lib/IO/openFile002.stderr-hugs
+++ /dev/null
@@ -1 +0,0 @@
-openFile002: nonexistent: IO.openFile: does not exist (file does not exist)
diff --git a/testsuite/tests/lib/IO/openFile003.hs b/testsuite/tests/lib/IO/openFile003.hs
deleted file mode 100644
index f3c640f295..0000000000
--- a/testsuite/tests/lib/IO/openFile003.hs
+++ /dev/null
@@ -1,17 +0,0 @@
-import System.Directory
-import System.IO
-import System.IO.Error
-
--- !!! Open a directory (should fail)
-
-main = do
- let dir = "openFile003Dir"
- createDirectoryIfMissing False dir
- r <- tryIOError (openFile dir ReadMode)
- print r
- r <- tryIOError (openFile dir WriteMode)
- print r
- r <- tryIOError (openFile dir AppendMode)
- print r
- r <- tryIOError (openFile dir ReadWriteMode)
- print r
diff --git a/testsuite/tests/lib/IO/openFile003.stdout b/testsuite/tests/lib/IO/openFile003.stdout
deleted file mode 100644
index 3621518cdb..0000000000
--- a/testsuite/tests/lib/IO/openFile003.stdout
+++ /dev/null
@@ -1,4 +0,0 @@
-Left openFile003Dir: openFile: inappropriate type (is a directory)
-Left openFile003Dir: openFile: inappropriate type (Is a directory)
-Left openFile003Dir: openFile: inappropriate type (Is a directory)
-Left openFile003Dir: openFile: inappropriate type (Is a directory)
diff --git a/testsuite/tests/lib/IO/openFile003.stdout-i386-unknown-mingw32 b/testsuite/tests/lib/IO/openFile003.stdout-i386-unknown-mingw32
deleted file mode 100644
index bf99bcf80d..0000000000
--- a/testsuite/tests/lib/IO/openFile003.stdout-i386-unknown-mingw32
+++ /dev/null
@@ -1,4 +0,0 @@
-Left openFile003Dir: openFile: permission denied (Permission denied)
-Left openFile003Dir: openFile: permission denied (Permission denied)
-Left openFile003Dir: openFile: permission denied (Permission denied)
-Left openFile003Dir: openFile: permission denied (Permission denied)
diff --git a/testsuite/tests/lib/IO/openFile003.stdout-i386-unknown-solaris2 b/testsuite/tests/lib/IO/openFile003.stdout-i386-unknown-solaris2
deleted file mode 100644
index 6a78a2a891..0000000000
--- a/testsuite/tests/lib/IO/openFile003.stdout-i386-unknown-solaris2
+++ /dev/null
@@ -1,4 +0,0 @@
-Left openFile003Dir: openFile: inappropriate type (is a directory)
-Left openFile003Dir: openFile: invalid argument (Invalid argument)
-Left openFile003Dir: openFile: invalid argument (Invalid argument)
-Left openFile003Dir: openFile: invalid argument (Invalid argument)
diff --git a/testsuite/tests/lib/IO/openFile003.stdout-mingw b/testsuite/tests/lib/IO/openFile003.stdout-mingw
deleted file mode 100644
index 2f63d8ce18..0000000000
--- a/testsuite/tests/lib/IO/openFile003.stdout-mingw
+++ /dev/null
@@ -1,16 +0,0 @@
-Left permission denied
-Action: openFile
-Reason: Permission denied
-File: openFile003Dir
-Left permission denied
-Action: openFile
-Reason: Permission denied
-File: openFile003Dir
-Left permission denied
-Action: openFile
-Reason: Permission denied
-File: openFile003Dir
-Left permission denied
-Action: openFile
-Reason: Permission denied
-File: openFile003Dir
diff --git a/testsuite/tests/lib/IO/openFile003.stdout-mips-sgi-irix b/testsuite/tests/lib/IO/openFile003.stdout-mips-sgi-irix
deleted file mode 100644
index 6a78a2a891..0000000000
--- a/testsuite/tests/lib/IO/openFile003.stdout-mips-sgi-irix
+++ /dev/null
@@ -1,4 +0,0 @@
-Left openFile003Dir: openFile: inappropriate type (is a directory)
-Left openFile003Dir: openFile: invalid argument (Invalid argument)
-Left openFile003Dir: openFile: invalid argument (Invalid argument)
-Left openFile003Dir: openFile: invalid argument (Invalid argument)
diff --git a/testsuite/tests/lib/IO/openFile003.stdout-sparc-sun-solaris2 b/testsuite/tests/lib/IO/openFile003.stdout-sparc-sun-solaris2
deleted file mode 100644
index 6a78a2a891..0000000000
--- a/testsuite/tests/lib/IO/openFile003.stdout-sparc-sun-solaris2
+++ /dev/null
@@ -1,4 +0,0 @@
-Left openFile003Dir: openFile: inappropriate type (is a directory)
-Left openFile003Dir: openFile: invalid argument (Invalid argument)
-Left openFile003Dir: openFile: invalid argument (Invalid argument)
-Left openFile003Dir: openFile: invalid argument (Invalid argument)
diff --git a/testsuite/tests/lib/IO/openFile004.hs b/testsuite/tests/lib/IO/openFile004.hs
deleted file mode 100644
index 4124abb0de..0000000000
--- a/testsuite/tests/lib/IO/openFile004.hs
+++ /dev/null
@@ -1,23 +0,0 @@
--- !!! Open a non-existent file for writing
-
-import Control.Monad
-import Data.Char
-import System.Directory
-import System.IO
-
-file = "openFile004.out"
-
-main = do
- b <- doesFileExist file
- when b (removeFile file)
-
- h <- openFile file WriteMode
- hPutStr h "hello world\n"
- hClose h
-
- h <- openFile file ReadMode
- let loop = do
- b <- hIsEOF h
- if b then return ()
- else do c <- hGetChar h; putChar c; loop
- loop
diff --git a/testsuite/tests/lib/IO/openFile005.hs b/testsuite/tests/lib/IO/openFile005.hs
deleted file mode 100644
index d8a8f83453..0000000000
--- a/testsuite/tests/lib/IO/openFile005.hs
+++ /dev/null
@@ -1,45 +0,0 @@
--- !!! test multiple-reader single-writer locking semantics
-
-import System.IO
-import System.IO.Error
-
-file1 = "openFile005.out1"
-file2 = "openFile005.out2"
-
-main = do
- putStrLn "two writes (should fail)"
- h <- openFile file1 WriteMode
- tryIOError (openFile file1 WriteMode) >>= print
- hClose h
-
- putStrLn "write and an append (should fail)"
- h <- openFile file1 WriteMode
- tryIOError (openFile file1 AppendMode) >>= print
- hClose h
-
- putStrLn "read/write and a write (should fail)"
- h <- openFile file1 ReadWriteMode
- tryIOError (openFile file1 WriteMode) >>= print
- hClose h
-
- putStrLn "read and a read/write (should fail)"
- h <- openFile file1 ReadMode
- tryIOError (openFile file1 ReadWriteMode) >>= print
- hClose h
-
- putStrLn "write and a read (should fail)"
- h <- openFile file1 WriteMode
- tryIOError (openFile file1 ReadMode) >>= print
- hClose h
-
- putStrLn "two writes, different files (silly, but should succeed)"
- h1 <- openFile file1 WriteMode
- h2 <- openFile file2 WriteMode
- hClose h1
- hClose h2
-
- putStrLn "two reads, should succeed"
- h1 <- openFile file1 ReadMode
- h2 <- openFile file1 ReadMode
- hClose h1
- hClose h2
diff --git a/testsuite/tests/lib/IO/openFile005.stdout b/testsuite/tests/lib/IO/openFile005.stdout
deleted file mode 100644
index 1a4b843be0..0000000000
--- a/testsuite/tests/lib/IO/openFile005.stdout
+++ /dev/null
@@ -1,12 +0,0 @@
-two writes (should fail)
-Left openFile005.out1: openFile: resource busy (file is locked)
-write and an append (should fail)
-Left openFile005.out1: openFile: resource busy (file is locked)
-read/write and a write (should fail)
-Left openFile005.out1: openFile: resource busy (file is locked)
-read and a read/write (should fail)
-Left openFile005.out1: openFile: resource busy (file is locked)
-write and a read (should fail)
-Left openFile005.out1: openFile: resource busy (file is locked)
-two writes, different files (silly, but should succeed)
-two reads, should succeed
diff --git a/testsuite/tests/lib/IO/openFile005.stdout-i386-unknown-mingw32 b/testsuite/tests/lib/IO/openFile005.stdout-i386-unknown-mingw32
deleted file mode 100644
index bf227989a9..0000000000
--- a/testsuite/tests/lib/IO/openFile005.stdout-i386-unknown-mingw32
+++ /dev/null
@@ -1,12 +0,0 @@
-two writes (should fail)
-Left openFile005.out1: openFile: permission denied (Permission denied)
-write and an append (should fail)
-Left openFile005.out1: openFile: permission denied (Permission denied)
-read/write and a write (should fail)
-Left openFile005.out1: openFile: permission denied (Permission denied)
-read and a read/write (should fail)
-Left openFile005.out1: openFile: permission denied (Permission denied)
-write and a read (should fail)
-Left openFile005.out1: openFile: permission denied (Permission denied)
-two writes, different files (silly, but should succeed)
-two reads, should succeed
diff --git a/testsuite/tests/lib/IO/openFile006.hs b/testsuite/tests/lib/IO/openFile006.hs
deleted file mode 100644
index 63cfea1a87..0000000000
--- a/testsuite/tests/lib/IO/openFile006.hs
+++ /dev/null
@@ -1,14 +0,0 @@
--- !!! opening a file in WriteMode better truncate it
-
-import System.IO
-
-main = do
- h <- openFile "openFile006.out" AppendMode
- hPutStr h "hello, world"
- size <- hFileSize h
- print size
- hClose h
-
- h <- openFile "openFile006.out" WriteMode
- size <- hFileSize h
- print size
diff --git a/testsuite/tests/lib/IO/openFile006.stdout b/testsuite/tests/lib/IO/openFile006.stdout
deleted file mode 100644
index 368283eb3d..0000000000
--- a/testsuite/tests/lib/IO/openFile006.stdout
+++ /dev/null
@@ -1,2 +0,0 @@
-12
-0
diff --git a/testsuite/tests/lib/IO/openFile007.hs b/testsuite/tests/lib/IO/openFile007.hs
deleted file mode 100644
index e39ed6538f..0000000000
--- a/testsuite/tests/lib/IO/openFile007.hs
+++ /dev/null
@@ -1,18 +0,0 @@
--- !!! check that we don't truncate files if the open fails
-
-import Control.Monad
-import System.IO
-import System.IO.Error
-
-tmp = "openFile007.out"
-
-main = do
- h <- openFile tmp WriteMode
- hPutStrLn h "hello, world"
-
- -- second open in write mode better fail, but better not truncate the file
- tryIOError (openFile tmp WriteMode) >>= print
-
- hClose h
- s <- readFile tmp -- make sure our "hello, world" is still there
- putStr s
diff --git a/testsuite/tests/lib/IO/openFile007.stdout b/testsuite/tests/lib/IO/openFile007.stdout
deleted file mode 100644
index 49669047ff..0000000000
--- a/testsuite/tests/lib/IO/openFile007.stdout
+++ /dev/null
@@ -1,2 +0,0 @@
-Left openFile007.out: openFile: resource busy (file is locked)
-hello, world
diff --git a/testsuite/tests/lib/IO/openFile007.stdout-i386-unknown-mingw32 b/testsuite/tests/lib/IO/openFile007.stdout-i386-unknown-mingw32
deleted file mode 100644
index 26f0afe2b2..0000000000
--- a/testsuite/tests/lib/IO/openFile007.stdout-i386-unknown-mingw32
+++ /dev/null
@@ -1,2 +0,0 @@
-Left openFile007.out: openFile: permission denied (Permission denied)
-hello, world
diff --git a/testsuite/tests/lib/IO/openFile008.hs b/testsuite/tests/lib/IO/openFile008.hs
deleted file mode 100644
index 9c1a1c47f8..0000000000
--- a/testsuite/tests/lib/IO/openFile008.hs
+++ /dev/null
@@ -1,22 +0,0 @@
-import System.IO
-import System.Cmd
-import System.FilePath
-import Text.Printf
-import System.Directory
-import Control.Monad
-
-testdir = "openFile008_testdir"
-
--- Test repeated opening/closing of 1000 files. This is useful for guaging
--- the performance of open/close and file locking.
-main = do
- system ("rm -rf " ++ testdir)
- createDirectory testdir
- let filenames = [testdir </> printf "file%03d" (n::Int) | n <- [1..1000]]
-
- forM_ [1..50] $ \_ -> do
- hs <- mapM (\f -> openFile f WriteMode) filenames
- mapM_ hClose hs
-
- mapM_ removeFile filenames
- removeDirectory testdir
diff --git a/testsuite/tests/lib/IO/openTempFile001.hs b/testsuite/tests/lib/IO/openTempFile001.hs
deleted file mode 100644
index 36598e6d5b..0000000000
--- a/testsuite/tests/lib/IO/openTempFile001.hs
+++ /dev/null
@@ -1,13 +0,0 @@
-module Main where
-
-import System.IO
-import Control.Exception
-import System.Directory
-
-main = bracket
- (openTempFile "." "test.txt")
- (\(f,_) -> removeFile f)
- (\(f,h) -> do hPutStrLn h $ "\xa9" -- Copyright symbol
- hClose h
- s <- readFile f
- if (s /= "\xa9\n") then error ("failed: " ++ s) else return ())
diff --git a/testsuite/tests/lib/IO/putStr001.hs b/testsuite/tests/lib/IO/putStr001.hs
deleted file mode 100644
index 48b3add3f3..0000000000
--- a/testsuite/tests/lib/IO/putStr001.hs
+++ /dev/null
@@ -1,6 +0,0 @@
--- !!! Testing output on stdout
-
--- stdout is buffered, so test if its buffer
--- is flushed upon program termination.
-
-main = putStr "Hello, world\n"
diff --git a/testsuite/tests/lib/IO/putStr001.stdout b/testsuite/tests/lib/IO/putStr001.stdout
deleted file mode 100644
index a5c1966771..0000000000
--- a/testsuite/tests/lib/IO/putStr001.stdout
+++ /dev/null
@@ -1 +0,0 @@
-Hello, world
diff --git a/testsuite/tests/lib/IO/readFile001.hs b/testsuite/tests/lib/IO/readFile001.hs
deleted file mode 100644
index e4a2b34cb7..0000000000
--- a/testsuite/tests/lib/IO/readFile001.hs
+++ /dev/null
@@ -1,26 +0,0 @@
--- !!! readFile test
-
-import System.IO
-import System.IO.Error
-
-source = "readFile001.hs"
-filename = "readFile001.out"
-
-main = do
- s <- readFile source
- h <- openFile filename WriteMode
- hPutStrLn h s
- hClose h
- s <- readFile filename
-
- -- This open should fail, because the readFile hasn't been forced
- -- and the file is therefore still locked.
- tryIOError (openFile filename WriteMode) >>= print
-
- putStrLn s
-
- -- should be able to open it for writing now, because we've forced the
- -- whole file.
- h <- openFile filename WriteMode
-
- print h
diff --git a/testsuite/tests/lib/IO/readFile001.stdout b/testsuite/tests/lib/IO/readFile001.stdout
deleted file mode 100644
index cfb75708f9..0000000000
--- a/testsuite/tests/lib/IO/readFile001.stdout
+++ /dev/null
@@ -1,30 +0,0 @@
-Left readFile001.out: openFile: resource busy (file is locked)
--- !!! readFile test
-
-import System.IO
-import System.IO.Error
-
-source = "readFile001.hs"
-filename = "readFile001.out"
-
-main = do
- s <- readFile source
- h <- openFile filename WriteMode
- hPutStrLn h s
- hClose h
- s <- readFile filename
-
- -- This open should fail, because the readFile hasn't been forced
- -- and the file is therefore still locked.
- tryIOError (openFile filename WriteMode) >>= print
-
- putStrLn s
-
- -- should be able to open it for writing now, because we've forced the
- -- whole file.
- h <- openFile filename WriteMode
-
- print h
-
-
-{handle: readFile001.out}
diff --git a/testsuite/tests/lib/IO/readFile001.stdout-i386-unknown-mingw32 b/testsuite/tests/lib/IO/readFile001.stdout-i386-unknown-mingw32
deleted file mode 100644
index d086f3a209..0000000000
--- a/testsuite/tests/lib/IO/readFile001.stdout-i386-unknown-mingw32
+++ /dev/null
@@ -1,30 +0,0 @@
-Left readFile001.out: openFile: permission denied (Permission denied)
--- !!! readFile test
-
-import System.IO
-import System.IO.Error
-
-source = "readFile001.hs"
-filename = "readFile001.out"
-
-main = do
- s <- readFile source
- h <- openFile filename WriteMode
- hPutStrLn h s
- hClose h
- s <- readFile filename
-
- -- This open should fail, because the readFile hasn't been forced
- -- and the file is therefore still locked.
- tryIOError (openFile filename WriteMode) >>= print
-
- putStrLn s
-
- -- should be able to open it for writing now, because we've forced the
- -- whole file.
- h <- openFile filename WriteMode
-
- print h
-
-
-{handle: readFile001.out}
diff --git a/testsuite/tests/lib/IO/readwrite001.hs b/testsuite/tests/lib/IO/readwrite001.hs
deleted file mode 100644
index 4a94ef10eb..0000000000
--- a/testsuite/tests/lib/IO/readwrite001.hs
+++ /dev/null
@@ -1,23 +0,0 @@
--- !!! RW files
-
-module Main(main) where
-
-import System.IO
-import System.Directory ( removeFile, doesFileExist )
-import Control.Monad
-
-main = do
- f <- doesFileExist "readwrite001.inout"
- when f (removeFile "readwrite001.inout")
- hdl <- openFile "readwrite001.inout" ReadWriteMode
- hSetBuffering hdl LineBuffering
- hPutStr hdl "as"
- hSeek hdl AbsoluteSeek 0
- ch <- hGetChar hdl
- print ch
- hPutStr hdl "ase"
- hSeek hdl AbsoluteSeek 0
- putChar '\n'
- ls <- hGetContents hdl
- putStrLn ls
-
diff --git a/testsuite/tests/lib/IO/readwrite001.stdout b/testsuite/tests/lib/IO/readwrite001.stdout
deleted file mode 100644
index e33ba0613d..0000000000
--- a/testsuite/tests/lib/IO/readwrite001.stdout
+++ /dev/null
@@ -1,3 +0,0 @@
-'a'
-
-aase
diff --git a/testsuite/tests/lib/IO/readwrite002.hs b/testsuite/tests/lib/IO/readwrite002.hs
deleted file mode 100644
index 4bb607e395..0000000000
--- a/testsuite/tests/lib/IO/readwrite002.hs
+++ /dev/null
@@ -1,49 +0,0 @@
--- !!! Testing RW handles
-
-import System.IO
-import System.IO.Error
-import System.Directory (removeFile, doesFileExist)
-import Control.Monad
-import System.Cmd
-
--- This test is weird, full marks to whoever dreamt it up!
-
-main :: IO ()
-main = do
- let username = "readwrite002.inout"
- f <- doesFileExist username
- when f (removeFile username)
- cd <- openFile username ReadWriteMode
-
- -- binary mode needed, otherwise newline translation gives
- -- unpredictable results.
- hSetBinaryMode cd True
-
--- Leva buffering on to make things more interesting:
--- hSetBuffering stdin NoBuffering
--- hSetBuffering stdout NoBuffering
--- hSetBuffering cd NoBuffering
- hPutStr cd speakString
- hSeek cd AbsoluteSeek 0
- speak cd `catch` \ err -> if isEOFError err then putStrLn "\nCaught EOF" else ioError err
- hSeek cd AbsoluteSeek 0
- hSetBuffering cd LineBuffering
- speak cd `catch` \ err -> if isEOFError err then putStrLn "\nCaught EOF" else ioError err
- return ()
- hSeek cd AbsoluteSeek 0
- hSetBuffering cd (BlockBuffering Nothing)
- speak cd `catch` \ err -> if isEOFError err then putStrLn "\nCaught EOF" else ioError err
-
-speakString = "##############################\n"
-
-speak cd = do
- (do
- ready <- hReady cd
- if ready then
- hGetChar cd >>= putChar
- else
- return ()
- ready <- hReady stdin
- if ready then (do { ch <- getChar; hPutChar cd ch})
- else return ())
- speak cd
diff --git a/testsuite/tests/lib/IO/readwrite002.stdout b/testsuite/tests/lib/IO/readwrite002.stdout
deleted file mode 100644
index 9aed0284d7..0000000000
--- a/testsuite/tests/lib/IO/readwrite002.stdout
+++ /dev/null
@@ -1,9 +0,0 @@
-###############
-
-Caught EOF
-###############
-
-Caught EOF
-###############
-
-Caught EOF
diff --git a/testsuite/tests/lib/IO/readwrite003.hs b/testsuite/tests/lib/IO/readwrite003.hs
deleted file mode 100644
index d7ee78d637..0000000000
--- a/testsuite/tests/lib/IO/readwrite003.hs
+++ /dev/null
@@ -1,12 +0,0 @@
-import System.IO
-
-file = "readwrite003.txt"
-
-main = do
- writeFile file "ab\ncd\nef\ngh"
- h <- openFile file ReadWriteMode
- hGetLine h
- hPutStrLn h "yz"
- hClose h
- h <- openBinaryFile file ReadMode
- hGetContents h >>= putStr
diff --git a/testsuite/tests/lib/IO/readwrite003.stdout b/testsuite/tests/lib/IO/readwrite003.stdout
deleted file mode 100644
index 6b4522804e..0000000000
--- a/testsuite/tests/lib/IO/readwrite003.stdout
+++ /dev/null
@@ -1,4 +0,0 @@
-ab
-yz
-ef
-gh \ No newline at end of file
diff --git a/testsuite/tests/lib/IO/utf8-test b/testsuite/tests/lib/IO/utf8-test
deleted file mode 100644
index 7d0f35a448..0000000000
--- a/testsuite/tests/lib/IO/utf8-test
+++ /dev/null
@@ -1,3 +0,0 @@
-(∘) :: ∀ α β γ . (β → γ) → (α → β) → (α → γ)
-ð‘Žð‘ð‘ð‘‘ð‘’ð‘“ð‘”ð‘–ð‘—ð‘˜ð‘™ð‘šð‘›ð‘œð‘ð‘žð‘Ÿð‘ ð‘¡ð‘¢ð‘£ð‘¤ð‘¥ð‘¦ð‘§
-X \ No newline at end of file
diff --git a/testsuite/tests/lib/IOExts/Makefile b/testsuite/tests/lib/IOExts/Makefile
deleted file mode 100644
index 9101fbd40a..0000000000
--- a/testsuite/tests/lib/IOExts/Makefile
+++ /dev/null
@@ -1,3 +0,0 @@
-TOP=../../..
-include $(TOP)/mk/boilerplate.mk
-include $(TOP)/mk/test.mk
diff --git a/testsuite/tests/lib/IOExts/all.T b/testsuite/tests/lib/IOExts/all.T
deleted file mode 100644
index 518c8cccbd..0000000000
--- a/testsuite/tests/lib/IOExts/all.T
+++ /dev/null
@@ -1,15 +0,0 @@
-test('echo001', set_stdin("echo001.hs"), compile_and_run, [''])
-
-test('hTell001', normal, compile_and_run, [''])
-
-test('hTell002', normal, compile_and_run, [''])
-
-test('performGC001', normal, compile_and_run, [''])
-
-# optimisation screws up this test because some of the traces get commoned up
-test('trace001', normal, compile_and_run, [''])
-
-test('hGetBuf002', normal, compile_and_run, [''])
-test('hGetBuf003', normal, compile_and_run, [''])
-test('hPutBuf001', normal, compile_and_run, [''])
-test('hPutBuf002', extra_clean(['hPutBuf002.out']), compile_and_run, [''])
diff --git a/testsuite/tests/lib/IOExts/echo001.hs b/testsuite/tests/lib/IOExts/echo001.hs
deleted file mode 100644
index 7c803589bf..0000000000
--- a/testsuite/tests/lib/IOExts/echo001.hs
+++ /dev/null
@@ -1,13 +0,0 @@
-module Main(main) where
-
-import System.IO
-import Data.Char
-
-main = do
- isT <- hIsTerminalDevice stdin
- flg <- if not isT then return False else hGetEcho stdin
- print flg
- if not isT then hSetEcho stdin False else return ()
- hSetBuffering stdin NoBuffering
- interact (map toUpper)
-
diff --git a/testsuite/tests/lib/IOExts/echo001.stdout b/testsuite/tests/lib/IOExts/echo001.stdout
deleted file mode 100644
index a9d7699954..0000000000
--- a/testsuite/tests/lib/IOExts/echo001.stdout
+++ /dev/null
@@ -1,14 +0,0 @@
-False
-MODULE MAIN(MAIN) WHERE
-
-IMPORT SYSTEM.IO
-IMPORT DATA.CHAR
-
-MAIN = DO
- IST <- HISTERMINALDEVICE STDIN
- FLG <- IF NOT IST THEN RETURN FALSE ELSE HGETECHO STDIN
- PRINT FLG
- IF NOT IST THEN HSETECHO STDIN FALSE ELSE RETURN ()
- HSETBUFFERING STDIN NOBUFFERING
- INTERACT (MAP TOUPPER)
-
diff --git a/testsuite/tests/lib/IOExts/hGetBuf002.hs b/testsuite/tests/lib/IOExts/hGetBuf002.hs
deleted file mode 100644
index 525eeb8e36..0000000000
--- a/testsuite/tests/lib/IOExts/hGetBuf002.hs
+++ /dev/null
@@ -1,22 +0,0 @@
-import System.IO
-import Foreign
-import Foreign.C
-
-main = do test True; test False
-
-test blocking = do
- h <- openBinaryFile "hGetBuf002.hs" ReadMode
-
- let sz = 42
- loop = do
- b <- allocaBytes sz $ \ptr -> do
- r <- (if blocking then hGetBuf else hGetBufNonBlocking) h ptr sz
- if (r == 0)
- then return True
- else do s <- peekCStringLen (ptr,r)
- putStr s
- return False
- if b then return () else loop -- tail call
-
- loop
-
diff --git a/testsuite/tests/lib/IOExts/hGetBuf002.stdout b/testsuite/tests/lib/IOExts/hGetBuf002.stdout
deleted file mode 100644
index 9cbe498c5c..0000000000
--- a/testsuite/tests/lib/IOExts/hGetBuf002.stdout
+++ /dev/null
@@ -1,44 +0,0 @@
-import System.IO
-import Foreign
-import Foreign.C
-
-main = do test True; test False
-
-test blocking = do
- h <- openBinaryFile "hGetBuf002.hs" ReadMode
-
- let sz = 42
- loop = do
- b <- allocaBytes sz $ \ptr -> do
- r <- (if blocking then hGetBuf else hGetBufNonBlocking) h ptr sz
- if (r == 0)
- then return True
- else do s <- peekCStringLen (ptr,r)
- putStr s
- return False
- if b then return () else loop -- tail call
-
- loop
-
-import System.IO
-import Foreign
-import Foreign.C
-
-main = do test True; test False
-
-test blocking = do
- h <- openBinaryFile "hGetBuf002.hs" ReadMode
-
- let sz = 42
- loop = do
- b <- allocaBytes sz $ \ptr -> do
- r <- (if blocking then hGetBuf else hGetBufNonBlocking) h ptr sz
- if (r == 0)
- then return True
- else do s <- peekCStringLen (ptr,r)
- putStr s
- return False
- if b then return () else loop -- tail call
-
- loop
-
diff --git a/testsuite/tests/lib/IOExts/hGetBuf003.hs b/testsuite/tests/lib/IOExts/hGetBuf003.hs
deleted file mode 100644
index 6eefdf90e8..0000000000
--- a/testsuite/tests/lib/IOExts/hGetBuf003.hs
+++ /dev/null
@@ -1,26 +0,0 @@
-import System.IO
-import Foreign
-import Foreign.C
-import Control.Monad
-
-main = do test True; test False
-
-test blocking = do
- h <- openBinaryFile "hGetBuf003.hs" ReadMode
-
- let sz = 42
- loop = do
- -- mix ordinary char buffering with hGetBuf
- eof <- hIsEOF h
- when (not eof) $ hGetChar h >>= putChar
- b <- allocaBytes sz $ \ptr -> do
- r <- (if blocking then hGetBuf else hGetBufNonBlocking) h ptr sz
- if (r == 0)
- then return True
- else do s <- peekCStringLen (ptr,r)
- putStr s
- return False
- if b then return () else loop -- tail call
-
- loop
-
diff --git a/testsuite/tests/lib/IOExts/hGetBuf003.stdout b/testsuite/tests/lib/IOExts/hGetBuf003.stdout
deleted file mode 100644
index ffeb291563..0000000000
--- a/testsuite/tests/lib/IOExts/hGetBuf003.stdout
+++ /dev/null
@@ -1,52 +0,0 @@
-import System.IO
-import Foreign
-import Foreign.C
-import Control.Monad
-
-main = do test True; test False
-
-test blocking = do
- h <- openBinaryFile "hGetBuf003.hs" ReadMode
-
- let sz = 42
- loop = do
- -- mix ordinary char buffering with hGetBuf
- eof <- hIsEOF h
- when (not eof) $ hGetChar h >>= putChar
- b <- allocaBytes sz $ \ptr -> do
- r <- (if blocking then hGetBuf else hGetBufNonBlocking) h ptr sz
- if (r == 0)
- then return True
- else do s <- peekCStringLen (ptr,r)
- putStr s
- return False
- if b then return () else loop -- tail call
-
- loop
-
-import System.IO
-import Foreign
-import Foreign.C
-import Control.Monad
-
-main = do test True; test False
-
-test blocking = do
- h <- openBinaryFile "hGetBuf003.hs" ReadMode
-
- let sz = 42
- loop = do
- -- mix ordinary char buffering with hGetBuf
- eof <- hIsEOF h
- when (not eof) $ hGetChar h >>= putChar
- b <- allocaBytes sz $ \ptr -> do
- r <- (if blocking then hGetBuf else hGetBufNonBlocking) h ptr sz
- if (r == 0)
- then return True
- else do s <- peekCStringLen (ptr,r)
- putStr s
- return False
- if b then return () else loop -- tail call
-
- loop
-
diff --git a/testsuite/tests/lib/IOExts/hPutBuf001.hs b/testsuite/tests/lib/IOExts/hPutBuf001.hs
deleted file mode 100644
index fa7e076d41..0000000000
--- a/testsuite/tests/lib/IOExts/hPutBuf001.hs
+++ /dev/null
@@ -1,7 +0,0 @@
-import System.IO
-import Foreign
-import Foreign.C
-
-main = do
- hSetBinaryMode stdout True
- withCStringLen "hello world\n" $ \(ptr,len) -> hPutBuf stdout ptr len
diff --git a/testsuite/tests/lib/IOExts/hPutBuf001.stdout b/testsuite/tests/lib/IOExts/hPutBuf001.stdout
deleted file mode 100644
index 3b18e512db..0000000000
--- a/testsuite/tests/lib/IOExts/hPutBuf001.stdout
+++ /dev/null
@@ -1 +0,0 @@
-hello world
diff --git a/testsuite/tests/lib/IOExts/hPutBuf002.hs b/testsuite/tests/lib/IOExts/hPutBuf002.hs
deleted file mode 100644
index a7ea2eed03..0000000000
--- a/testsuite/tests/lib/IOExts/hPutBuf002.hs
+++ /dev/null
@@ -1,9 +0,0 @@
-import System.IO
-import Foreign
-import Foreign.C
-
--- !!! this test failed to write anything in GHC 5.00.2
-main = do
- h <- openBinaryFile "hPutBuf002.out" ReadWriteMode
- withCStringLen "hello world\n" $ \(ptr,len) -> hPutBuf h ptr len
- hFileSize h >>= print
diff --git a/testsuite/tests/lib/IOExts/hPutBuf002.stdout b/testsuite/tests/lib/IOExts/hPutBuf002.stdout
deleted file mode 100644
index 48082f72f0..0000000000
--- a/testsuite/tests/lib/IOExts/hPutBuf002.stdout
+++ /dev/null
@@ -1 +0,0 @@
-12
diff --git a/testsuite/tests/lib/IOExts/hTell001.hs b/testsuite/tests/lib/IOExts/hTell001.hs
deleted file mode 100644
index 6b26eecb97..0000000000
--- a/testsuite/tests/lib/IOExts/hTell001.hs
+++ /dev/null
@@ -1,63 +0,0 @@
--- !!! Testing hGetPosn and hSetPosn
-module Main(main) where
-
-import System.IO
-
-getPosnAndPrint h = do
- x <- hTell h
- v <- hGetChar h
- putStrLn ("At position: " ++ show x ++ ", found: " ++ show v)
- return x
-
-recordDoAndRepos h a = do
- x <- getPosnAndPrint h
- a
- hSeek h AbsoluteSeek x
- getPosnAndPrint h
- return ()
-
-recordDoAndRepos2 h a = do
- x <- getPosnAndPrint h
- a
- hSeek h AbsoluteSeek x
- getPosnAndPrint h
- return ()
-
-recordDoAndRepos3 h a = do
- x <- getPosnAndPrint h
- a
- hSeek h SeekFromEnd (negate (x + 1))
- getPosnAndPrint h
- return ()
-
-file = "hTell001.hs"
-
-main :: IO ()
-main = do
- h <- openBinaryFile file ReadMode
- recordDoAndRepos h $
- recordDoAndRepos h $
- recordDoAndRepos h $
- recordDoAndRepos h $
- recordDoAndRepos h $
- putStrLn ""
- hClose h
- putStrLn "\nUsing hSeek/AbsoluteSeek: "
- h <- openBinaryFile file ReadMode
- recordDoAndRepos2 h $
- recordDoAndRepos2 h $
- recordDoAndRepos2 h $
- recordDoAndRepos2 h $
- recordDoAndRepos2 h $
- putStrLn ""
-
- hClose h
- putStrLn "\nUsing hSeek/SeekFromEnd: "
- putStrLn "(Don't worry if you're seeing differing numbers here, it might be down to '\\n' vs '\\r\\n')"
- h <- openBinaryFile file ReadMode
- recordDoAndRepos3 h $
- recordDoAndRepos3 h $
- recordDoAndRepos3 h $
- recordDoAndRepos3 h $
- recordDoAndRepos3 h $
- putStrLn ""
diff --git a/testsuite/tests/lib/IOExts/hTell001.stdout b/testsuite/tests/lib/IOExts/hTell001.stdout
deleted file mode 100644
index 7e22e69a93..0000000000
--- a/testsuite/tests/lib/IOExts/hTell001.stdout
+++ /dev/null
@@ -1,38 +0,0 @@
-At position: 0, found: '-'
-At position: 1, found: '-'
-At position: 2, found: ' '
-At position: 3, found: '!'
-At position: 4, found: '!'
-
-At position: 4, found: '!'
-At position: 3, found: '!'
-At position: 2, found: ' '
-At position: 1, found: '-'
-At position: 0, found: '-'
-
-Using hSeek/AbsoluteSeek:
-At position: 0, found: '-'
-At position: 1, found: '-'
-At position: 2, found: ' '
-At position: 3, found: '!'
-At position: 4, found: '!'
-
-At position: 4, found: '!'
-At position: 3, found: '!'
-At position: 2, found: ' '
-At position: 1, found: '-'
-At position: 0, found: '-'
-
-Using hSeek/SeekFromEnd:
-(Don't worry if you're seeing differing numbers here, it might be down to '\n' vs '\r\n')
-At position: 0, found: '-'
-At position: 1, found: '-'
-At position: 2, found: ' '
-At position: 3, found: '!'
-At position: 4, found: '!'
-
-At position: 1376, found: 'n'
-At position: 1377, found: ' '
-At position: 1378, found: '"'
-At position: 1379, found: '"'
-At position: 1380, found: '\n'
diff --git a/testsuite/tests/lib/IOExts/hTell002.hs b/testsuite/tests/lib/IOExts/hTell002.hs
deleted file mode 100644
index b790db8fe8..0000000000
--- a/testsuite/tests/lib/IOExts/hTell002.hs
+++ /dev/null
@@ -1,33 +0,0 @@
--- !!! Testing hSeek
-module Main(main) where
-
-import System.Directory
-import System.IO
-
-main :: IO ()
-main = do
- h <- openFile "tst-seek" WriteMode
- hSetEncoding h utf8 -- hSeek/hTell work with Unicode streams
- hPutStr h "test string1"
- -- seek to EOF should be cool..
- hSeek h SeekFromEnd 0
- hPutStr h "test string2"
- -- seek past EOF should now also be cool..
- hSeek h SeekFromEnd 3
- hPutStr h "test string3"
- hSeek h AbsoluteSeek 13
- hPutStr h "test string4"
- x <- hTell h
- print x
- hSeek h AbsoluteSeek 30
- x1 <- hTell h
- hPutStr h "人間虫" -- we should be able to output Unicode too
- x2 <- hTell h
- print (x2 - x1)
- hPutStr h "filler"
- hClose h
- h <- openFile "tst-seek" ReadMode
- hSetEncoding h utf8
- str <- hGetContents h
- putStrLn str
- removeFile "tst-seek"
diff --git a/testsuite/tests/lib/IOExts/hTell002.stdout b/testsuite/tests/lib/IOExts/hTell002.stdout
deleted file mode 100644
index 52696f8a2c..0000000000
--- a/testsuite/tests/lib/IOExts/hTell002.stdout
+++ /dev/null
Binary files differ
diff --git a/testsuite/tests/lib/IOExts/performGC001.hs b/testsuite/tests/lib/IOExts/performGC001.hs
deleted file mode 100644
index f14dab004c..0000000000
--- a/testsuite/tests/lib/IOExts/performGC001.hs
+++ /dev/null
@@ -1,5 +0,0 @@
--- !!! test System.Mem.performGC
-
-import System.Mem
-
-main = performGC
diff --git a/testsuite/tests/lib/IOExts/trace001.hs b/testsuite/tests/lib/IOExts/trace001.hs
deleted file mode 100644
index 2ed61d486e..0000000000
--- a/testsuite/tests/lib/IOExts/trace001.hs
+++ /dev/null
@@ -1,10 +0,0 @@
-import System.IO
-import Debug.Trace
-
-main = do
- hPutStr stderr
- (trace (trace (trace (trace (trace (trace (trace
- "one" "fish") "two") "fish") "red") "fish") "blue") "fish")
- hPutStr stdout
- (trace (trace (trace (trace (trace (trace (trace
- "ONE" "FISH") "TWO") "FISH") "RED") "FISH") "BLUE") "FISH")
diff --git a/testsuite/tests/lib/IOExts/trace001.stderr b/testsuite/tests/lib/IOExts/trace001.stderr
deleted file mode 100644
index dfe965af21..0000000000
--- a/testsuite/tests/lib/IOExts/trace001.stderr
+++ /dev/null
@@ -1,14 +0,0 @@
-one
-fish
-two
-fish
-red
-fish
-blue
-fishONE
-FISH
-TWO
-FISH
-RED
-FISH
-BLUE
diff --git a/testsuite/tests/lib/IOExts/trace001.stdout b/testsuite/tests/lib/IOExts/trace001.stdout
deleted file mode 100644
index 23ddbb4550..0000000000
--- a/testsuite/tests/lib/IOExts/trace001.stdout
+++ /dev/null
@@ -1 +0,0 @@
-FISH \ No newline at end of file
diff --git a/testsuite/tests/lib/IORef/Makefile b/testsuite/tests/lib/IORef/Makefile
deleted file mode 100644
index 9101fbd40a..0000000000
--- a/testsuite/tests/lib/IORef/Makefile
+++ /dev/null
@@ -1,3 +0,0 @@
-TOP=../../..
-include $(TOP)/mk/boilerplate.mk
-include $(TOP)/mk/test.mk
diff --git a/testsuite/tests/lib/IORef/all.T b/testsuite/tests/lib/IORef/all.T
deleted file mode 100644
index cb41d73fa1..0000000000
--- a/testsuite/tests/lib/IORef/all.T
+++ /dev/null
@@ -1,4 +0,0 @@
-test('ioref001', compose(skip_if_fast,extra_run_opts('+RTS -K64m -RTS')), \
- compile_and_run, ['+RTS -K64m -RTS'])
-
-# need to add -K32m to the compiler opts, so that GHCi gets it too
diff --git a/testsuite/tests/lib/IORef/ioref001.hs b/testsuite/tests/lib/IORef/ioref001.hs
deleted file mode 100644
index 837b82e0c1..0000000000
--- a/testsuite/tests/lib/IORef/ioref001.hs
+++ /dev/null
@@ -1,9 +0,0 @@
-
-module Main where
-
-import Data.IORef
-
-loop r 0 = return ()
-loop r c = loop r (c-1) >> writeIORef r 42
-
-main = newIORef 0 >>= \r -> loop r 1000000 >> putStrLn "done"
diff --git a/testsuite/tests/lib/IORef/ioref001.stdout b/testsuite/tests/lib/IORef/ioref001.stdout
deleted file mode 100644
index 19f86f493a..0000000000
--- a/testsuite/tests/lib/IORef/ioref001.stdout
+++ /dev/null
@@ -1 +0,0 @@
-done
diff --git a/testsuite/tests/lib/Lex/Makefile b/testsuite/tests/lib/Lex/Makefile
deleted file mode 100644
index 9101fbd40a..0000000000
--- a/testsuite/tests/lib/Lex/Makefile
+++ /dev/null
@@ -1,3 +0,0 @@
-TOP=../../..
-include $(TOP)/mk/boilerplate.mk
-include $(TOP)/mk/test.mk
diff --git a/testsuite/tests/lib/Lex/all.T b/testsuite/tests/lib/Lex/all.T
deleted file mode 100644
index 8c198fb90c..0000000000
--- a/testsuite/tests/lib/Lex/all.T
+++ /dev/null
@@ -1,2 +0,0 @@
-test('lexNum', normal, compile_and_run, [''])
-
diff --git a/testsuite/tests/lib/Lex/lexNum.hs b/testsuite/tests/lib/Lex/lexNum.hs
deleted file mode 100644
index fb63034b52..0000000000
--- a/testsuite/tests/lib/Lex/lexNum.hs
+++ /dev/null
@@ -1,28 +0,0 @@
-module Main where
-
-testStrings
- = [ "0x3y",
- "0X3abx",
- "0o39y",
- "0O334z",
-
- "NaN",
- "Infinity",
-
- "34yy",
- "34.4x",
- "034.4x",
- "31.45e-6y",
- "49.2v",
- "049.2v",
- "35e-3x",
- "035e-3x",
- "35e+3y",
- "83.3e-22",
- "083.3e-22"
- ]
-
-main = mapM test testStrings
-
-test s = print (lex s)
-
diff --git a/testsuite/tests/lib/Lex/lexNum.stdout b/testsuite/tests/lib/Lex/lexNum.stdout
deleted file mode 100644
index 92cb063178..0000000000
--- a/testsuite/tests/lib/Lex/lexNum.stdout
+++ /dev/null
@@ -1,17 +0,0 @@
-[("0x3","y")]
-[("0X3ab","x")]
-[("0o3","9y")]
-[("0O334","z")]
-[("NaN","")]
-[("Infinity","")]
-[("34","yy")]
-[("34.4","x")]
-[("034.4","x")]
-[("31.45e-6","y")]
-[("49.2","v")]
-[("049.2","v")]
-[("35e-3","x")]
-[("035e-3","x")]
-[("35e+3","y")]
-[("83.3e-22","")]
-[("083.3e-22","")]
diff --git a/testsuite/tests/lib/Numeric/Makefile b/testsuite/tests/lib/Numeric/Makefile
deleted file mode 100644
index 9101fbd40a..0000000000
--- a/testsuite/tests/lib/Numeric/Makefile
+++ /dev/null
@@ -1,3 +0,0 @@
-TOP=../../..
-include $(TOP)/mk/boilerplate.mk
-include $(TOP)/mk/test.mk
diff --git a/testsuite/tests/lib/Numeric/all.T b/testsuite/tests/lib/Numeric/all.T
deleted file mode 100644
index d6237fbee8..0000000000
--- a/testsuite/tests/lib/Numeric/all.T
+++ /dev/null
@@ -1,10 +0,0 @@
-test('num001', normal, compile_and_run, [''])
-test('num002', normal, compile_and_run, [''])
-test('num003', normal, compile_and_run, [''])
-test('num004', normal, compile_and_run, [''])
-test('num005', normal, compile_and_run, [''])
-test('num006', normal, compile_and_run, [''])
-test('num007', normal, compile_and_run, [''])
-test('num008', normal, compile_and_run, [''])
-test('num009', compose(skip_if_fast, if_os('darwin', expect_broken(2370))), compile_and_run, [''])
-test('num010', normal, compile_and_run, [''])
diff --git a/testsuite/tests/lib/Numeric/num001.hs b/testsuite/tests/lib/Numeric/num001.hs
deleted file mode 100644
index 8a8c97a11b..0000000000
--- a/testsuite/tests/lib/Numeric/num001.hs
+++ /dev/null
@@ -1,6 +0,0 @@
-module Main(main) where
-
-import Numeric
-import Data.Ratio
-
-main = print ((fromRat (132874 % 23849))::Double)
diff --git a/testsuite/tests/lib/Numeric/num001.stdout b/testsuite/tests/lib/Numeric/num001.stdout
deleted file mode 100644
index 6d2f0c7a77..0000000000
--- a/testsuite/tests/lib/Numeric/num001.stdout
+++ /dev/null
@@ -1 +0,0 @@
-5.571470501907837
diff --git a/testsuite/tests/lib/Numeric/num002.hs b/testsuite/tests/lib/Numeric/num002.hs
deleted file mode 100644
index 31ea76ced9..0000000000
--- a/testsuite/tests/lib/Numeric/num002.hs
+++ /dev/null
@@ -1,20 +0,0 @@
--- Testing showInt, lightly.
-
-module Main(main) where
-
-import Numeric
-
-showSignedInt :: Integral a => a -> String
-showSignedInt x = showSigned (showInt) 0 x ""
-
-main =
- do
- putStrLn (showInt (343023920121::Integer) [])
- putStrLn (showInt (3430239::Int) [])
- putStrLn (showInt (1212 :: Int) [])
- putStrLn (showSignedInt (591125662431 `div` (517::Int)))
- -- showInt just works over naturals, wrap it up inside
- -- a use of Numeric.showSigned to show negative nums.
- putStrLn (showSignedInt (-111::Int))
- putStrLn (showInt (232189458241::Integer) [])
-
diff --git a/testsuite/tests/lib/Numeric/num002.stdout b/testsuite/tests/lib/Numeric/num002.stdout
deleted file mode 100644
index ce14dec313..0000000000
--- a/testsuite/tests/lib/Numeric/num002.stdout
+++ /dev/null
@@ -1,6 +0,0 @@
-343023920121
-3430239
-1212
--3055754
--111
-232189458241
diff --git a/testsuite/tests/lib/Numeric/num002.stdout-alpha-dec-osf3 b/testsuite/tests/lib/Numeric/num002.stdout-alpha-dec-osf3
deleted file mode 100644
index b81876f763..0000000000
--- a/testsuite/tests/lib/Numeric/num002.stdout-alpha-dec-osf3
+++ /dev/null
@@ -1,6 +0,0 @@
-343023920121
-3430239
-1212
-1143376523
--111
-232189458241
diff --git a/testsuite/tests/lib/Numeric/num002.stdout-mips-sgi-irix b/testsuite/tests/lib/Numeric/num002.stdout-mips-sgi-irix
deleted file mode 100644
index b81876f763..0000000000
--- a/testsuite/tests/lib/Numeric/num002.stdout-mips-sgi-irix
+++ /dev/null
@@ -1,6 +0,0 @@
-343023920121
-3430239
-1212
-1143376523
--111
-232189458241
diff --git a/testsuite/tests/lib/Numeric/num002.stdout-ws-64 b/testsuite/tests/lib/Numeric/num002.stdout-ws-64
deleted file mode 100644
index b81876f763..0000000000
--- a/testsuite/tests/lib/Numeric/num002.stdout-ws-64
+++ /dev/null
@@ -1,6 +0,0 @@
-343023920121
-3430239
-1212
-1143376523
--111
-232189458241
diff --git a/testsuite/tests/lib/Numeric/num002.stdout-x86_64-unknown-openbsd b/testsuite/tests/lib/Numeric/num002.stdout-x86_64-unknown-openbsd
deleted file mode 100644
index b81876f763..0000000000
--- a/testsuite/tests/lib/Numeric/num002.stdout-x86_64-unknown-openbsd
+++ /dev/null
@@ -1,6 +0,0 @@
-343023920121
-3430239
-1212
-1143376523
--111
-232189458241
diff --git a/testsuite/tests/lib/Numeric/num003.hs b/testsuite/tests/lib/Numeric/num003.hs
deleted file mode 100644
index 368be2599a..0000000000
--- a/testsuite/tests/lib/Numeric/num003.hs
+++ /dev/null
@@ -1,20 +0,0 @@
--- Testing readInt, lightly.
---
-module Main(main) where
-
-import Numeric
-import Data.Char
-
-main =
- let
- rd :: ReadS Integer
- rd = readSigned (readInt 10 (isDigit) (digitToInt))
- in
- do
- print (rd (show (343023920121::Integer)))
- print (rd (show (3430239::Int)))
- print (rd (show (1212 :: Int)))
- print (rd (show (591125662431 `div` (517::Int))))
- print (rd (show (-111::Int)))
- print (rd (show (232189458241::Integer)))
-
diff --git a/testsuite/tests/lib/Numeric/num003.stdout b/testsuite/tests/lib/Numeric/num003.stdout
deleted file mode 100644
index 1266b608b3..0000000000
--- a/testsuite/tests/lib/Numeric/num003.stdout
+++ /dev/null
@@ -1,6 +0,0 @@
-[(343023920121,"")]
-[(3430239,"")]
-[(1212,"")]
-[(-3055754,"")]
-[(-111,"")]
-[(232189458241,"")]
diff --git a/testsuite/tests/lib/Numeric/num003.stdout-alpha-dec-osf3 b/testsuite/tests/lib/Numeric/num003.stdout-alpha-dec-osf3
deleted file mode 100644
index ae95d2aa0a..0000000000
--- a/testsuite/tests/lib/Numeric/num003.stdout-alpha-dec-osf3
+++ /dev/null
@@ -1,6 +0,0 @@
-[(343023920121,"")]
-[(3430239,"")]
-[(1212,"")]
-[(1143376523,"")]
-[(-111,"")]
-[(232189458241,"")]
diff --git a/testsuite/tests/lib/Numeric/num003.stdout-mips-sgi-irix b/testsuite/tests/lib/Numeric/num003.stdout-mips-sgi-irix
deleted file mode 100644
index ae95d2aa0a..0000000000
--- a/testsuite/tests/lib/Numeric/num003.stdout-mips-sgi-irix
+++ /dev/null
@@ -1,6 +0,0 @@
-[(343023920121,"")]
-[(3430239,"")]
-[(1212,"")]
-[(1143376523,"")]
-[(-111,"")]
-[(232189458241,"")]
diff --git a/testsuite/tests/lib/Numeric/num003.stdout-ws-64 b/testsuite/tests/lib/Numeric/num003.stdout-ws-64
deleted file mode 100644
index ae95d2aa0a..0000000000
--- a/testsuite/tests/lib/Numeric/num003.stdout-ws-64
+++ /dev/null
@@ -1,6 +0,0 @@
-[(343023920121,"")]
-[(3430239,"")]
-[(1212,"")]
-[(1143376523,"")]
-[(-111,"")]
-[(232189458241,"")]
diff --git a/testsuite/tests/lib/Numeric/num003.stdout-x86_64-unknown-openbsd b/testsuite/tests/lib/Numeric/num003.stdout-x86_64-unknown-openbsd
deleted file mode 100644
index ae95d2aa0a..0000000000
--- a/testsuite/tests/lib/Numeric/num003.stdout-x86_64-unknown-openbsd
+++ /dev/null
@@ -1,6 +0,0 @@
-[(343023920121,"")]
-[(3430239,"")]
-[(1212,"")]
-[(1143376523,"")]
-[(-111,"")]
-[(232189458241,"")]
diff --git a/testsuite/tests/lib/Numeric/num004.hs b/testsuite/tests/lib/Numeric/num004.hs
deleted file mode 100644
index 0eb2bee5b0..0000000000
--- a/testsuite/tests/lib/Numeric/num004.hs
+++ /dev/null
@@ -1,20 +0,0 @@
--- Exercising Numeric.readSigned a bit
---
-module Main(main) where
-
-import Numeric
-import Data.Char
-
-main =
- let
- rd :: ReadS Integer
- rd = readSigned (readInt 10 (isDigit) (digitToInt))
- in
- do
- print (rd (show (343023920121::Integer)))
- print (rd (show (3430239::Int)))
- print (rd (show (-0 :: Int)))
- print (rd (show (591125662431 `div` (517::Int))))
- print (rd (show (-111::Int)))
- print (rd (show (232189458241::Integer)))
-
diff --git a/testsuite/tests/lib/Numeric/num004.stdout b/testsuite/tests/lib/Numeric/num004.stdout
deleted file mode 100644
index 12610a153d..0000000000
--- a/testsuite/tests/lib/Numeric/num004.stdout
+++ /dev/null
@@ -1,6 +0,0 @@
-[(343023920121,"")]
-[(3430239,"")]
-[(0,"")]
-[(-3055754,"")]
-[(-111,"")]
-[(232189458241,"")]
diff --git a/testsuite/tests/lib/Numeric/num004.stdout-alpha-dec-osf3 b/testsuite/tests/lib/Numeric/num004.stdout-alpha-dec-osf3
deleted file mode 100644
index 150f98e1ea..0000000000
--- a/testsuite/tests/lib/Numeric/num004.stdout-alpha-dec-osf3
+++ /dev/null
@@ -1,6 +0,0 @@
-[(343023920121,"")]
-[(3430239,"")]
-[(0,"")]
-[(1143376523,"")]
-[(-111,"")]
-[(232189458241,"")]
diff --git a/testsuite/tests/lib/Numeric/num004.stdout-mips-sgi-irix b/testsuite/tests/lib/Numeric/num004.stdout-mips-sgi-irix
deleted file mode 100644
index 150f98e1ea..0000000000
--- a/testsuite/tests/lib/Numeric/num004.stdout-mips-sgi-irix
+++ /dev/null
@@ -1,6 +0,0 @@
-[(343023920121,"")]
-[(3430239,"")]
-[(0,"")]
-[(1143376523,"")]
-[(-111,"")]
-[(232189458241,"")]
diff --git a/testsuite/tests/lib/Numeric/num004.stdout-ws-64 b/testsuite/tests/lib/Numeric/num004.stdout-ws-64
deleted file mode 100644
index 150f98e1ea..0000000000
--- a/testsuite/tests/lib/Numeric/num004.stdout-ws-64
+++ /dev/null
@@ -1,6 +0,0 @@
-[(343023920121,"")]
-[(3430239,"")]
-[(0,"")]
-[(1143376523,"")]
-[(-111,"")]
-[(232189458241,"")]
diff --git a/testsuite/tests/lib/Numeric/num004.stdout-x86_64-unknown-openbsd b/testsuite/tests/lib/Numeric/num004.stdout-x86_64-unknown-openbsd
deleted file mode 100644
index 150f98e1ea..0000000000
--- a/testsuite/tests/lib/Numeric/num004.stdout-x86_64-unknown-openbsd
+++ /dev/null
@@ -1,6 +0,0 @@
-[(343023920121,"")]
-[(3430239,"")]
-[(0,"")]
-[(1143376523,"")]
-[(-111,"")]
-[(232189458241,"")]
diff --git a/testsuite/tests/lib/Numeric/num005.hs b/testsuite/tests/lib/Numeric/num005.hs
deleted file mode 100644
index ef647a6967..0000000000
--- a/testsuite/tests/lib/Numeric/num005.hs
+++ /dev/null
@@ -1,23 +0,0 @@
--- Exercising Numeric.readSigned a bit
---
-module Main(main) where
-
-import Numeric
-
-main =
- let
- ls = ["3489348394032498320438240938403","0","-1","1","34323","2L","012","0x23","3243ab"]
- present str f ls =
- sequence (map (\ v -> putStr ('\n':str ++
- ' ': v ++
- " = " ++
- (show (f v)))) ls)
- in
- do
- present "(readDec::ReadS Integer)" (readDec::ReadS Integer) ls
- present "(readDec::ReadS Int)" (readDec::ReadS Int) ls
- present "(readOct::ReadS Integer)" (readOct::ReadS Integer) ls
- present "(readOct::ReadS Int)" (readOct::ReadS Int) ls
- present "(readHex::ReadS Integer)" (readHex::ReadS Integer) ls
- present "(readHex::ReadS Int)" (readHex::ReadS Int) ls
- putStrLn ""
diff --git a/testsuite/tests/lib/Numeric/num005.stdout b/testsuite/tests/lib/Numeric/num005.stdout
deleted file mode 100644
index f6ba218eb8..0000000000
--- a/testsuite/tests/lib/Numeric/num005.stdout
+++ /dev/null
@@ -1,55 +0,0 @@
-
-(readDec::ReadS Integer) 3489348394032498320438240938403 = [(3489348394032498320438240938403,"")]
-(readDec::ReadS Integer) 0 = [(0,"")]
-(readDec::ReadS Integer) -1 = []
-(readDec::ReadS Integer) 1 = [(1,"")]
-(readDec::ReadS Integer) 34323 = [(34323,"")]
-(readDec::ReadS Integer) 2L = [(2,"L")]
-(readDec::ReadS Integer) 012 = [(12,"")]
-(readDec::ReadS Integer) 0x23 = [(0,"x23")]
-(readDec::ReadS Integer) 3243ab = [(3243,"ab")]
-(readDec::ReadS Int) 3489348394032498320438240938403 = [(-1268053597,"")]
-(readDec::ReadS Int) 0 = [(0,"")]
-(readDec::ReadS Int) -1 = []
-(readDec::ReadS Int) 1 = [(1,"")]
-(readDec::ReadS Int) 34323 = [(34323,"")]
-(readDec::ReadS Int) 2L = [(2,"L")]
-(readDec::ReadS Int) 012 = [(12,"")]
-(readDec::ReadS Int) 0x23 = [(0,"x23")]
-(readDec::ReadS Int) 3243ab = [(3243,"ab")]
-(readOct::ReadS Integer) 3489348394032498320438240938403 = [(28,"89348394032498320438240938403")]
-(readOct::ReadS Integer) 0 = [(0,"")]
-(readOct::ReadS Integer) -1 = []
-(readOct::ReadS Integer) 1 = [(1,"")]
-(readOct::ReadS Integer) 34323 = [(14547,"")]
-(readOct::ReadS Integer) 2L = [(2,"L")]
-(readOct::ReadS Integer) 012 = [(10,"")]
-(readOct::ReadS Integer) 0x23 = [(0,"x23")]
-(readOct::ReadS Integer) 3243ab = [(1699,"ab")]
-(readOct::ReadS Int) 3489348394032498320438240938403 = [(28,"89348394032498320438240938403")]
-(readOct::ReadS Int) 0 = [(0,"")]
-(readOct::ReadS Int) -1 = []
-(readOct::ReadS Int) 1 = [(1,"")]
-(readOct::ReadS Int) 34323 = [(14547,"")]
-(readOct::ReadS Int) 2L = [(2,"L")]
-(readOct::ReadS Int) 012 = [(10,"")]
-(readOct::ReadS Int) 0x23 = [(0,"x23")]
-(readOct::ReadS Int) 3243ab = [(1699,"ab")]
-(readHex::ReadS Integer) 3489348394032498320438240938403 = [(4364516597526947317207336190131536899,"")]
-(readHex::ReadS Integer) 0 = [(0,"")]
-(readHex::ReadS Integer) -1 = []
-(readHex::ReadS Integer) 1 = [(1,"")]
-(readHex::ReadS Integer) 34323 = [(213795,"")]
-(readHex::ReadS Integer) 2L = [(2,"L")]
-(readHex::ReadS Integer) 012 = [(18,"")]
-(readHex::ReadS Integer) 0x23 = [(0,"x23")]
-(readHex::ReadS Integer) 3243ab = [(3294123,"")]
-(readHex::ReadS Int) 3489348394032498320438240938403 = [(1083409411,"")]
-(readHex::ReadS Int) 0 = [(0,"")]
-(readHex::ReadS Int) -1 = []
-(readHex::ReadS Int) 1 = [(1,"")]
-(readHex::ReadS Int) 34323 = [(213795,"")]
-(readHex::ReadS Int) 2L = [(2,"L")]
-(readHex::ReadS Int) 012 = [(18,"")]
-(readHex::ReadS Int) 0x23 = [(0,"x23")]
-(readHex::ReadS Int) 3243ab = [(3294123,"")]
diff --git a/testsuite/tests/lib/Numeric/num005.stdout-alpha-dec-osf3 b/testsuite/tests/lib/Numeric/num005.stdout-alpha-dec-osf3
deleted file mode 100644
index 35678af82f..0000000000
--- a/testsuite/tests/lib/Numeric/num005.stdout-alpha-dec-osf3
+++ /dev/null
@@ -1,55 +0,0 @@
-
-(readDec::ReadS Integer) 3489348394032498320438240938403 = [(3489348394032498320438240938403,"")]
-(readDec::ReadS Integer) 0 = [(0,"")]
-(readDec::ReadS Integer) -1 = []
-(readDec::ReadS Integer) 1 = [(1,"")]
-(readDec::ReadS Integer) 34323 = [(34323,"")]
-(readDec::ReadS Integer) 2L = [(2,"L")]
-(readDec::ReadS Integer) 012 = [(12,"")]
-(readDec::ReadS Integer) 0x23 = [(0,"x23")]
-(readDec::ReadS Integer) 3243ab = [(3243,"ab")]
-(readDec::ReadS Int) 3489348394032498320438240938403 = [(8154046292665502115,"")]
-(readDec::ReadS Int) 0 = [(0,"")]
-(readDec::ReadS Int) -1 = []
-(readDec::ReadS Int) 1 = [(1,"")]
-(readDec::ReadS Int) 34323 = [(34323,"")]
-(readDec::ReadS Int) 2L = [(2,"L")]
-(readDec::ReadS Int) 012 = [(12,"")]
-(readDec::ReadS Int) 0x23 = [(0,"x23")]
-(readDec::ReadS Int) 3243ab = [(3243,"ab")]
-(readOct::ReadS Integer) 3489348394032498320438240938403 = [(28,"89348394032498320438240938403")]
-(readOct::ReadS Integer) 0 = [(0,"")]
-(readOct::ReadS Integer) -1 = []
-(readOct::ReadS Integer) 1 = [(1,"")]
-(readOct::ReadS Integer) 34323 = [(14547,"")]
-(readOct::ReadS Integer) 2L = [(2,"L")]
-(readOct::ReadS Integer) 012 = [(10,"")]
-(readOct::ReadS Integer) 0x23 = [(0,"x23")]
-(readOct::ReadS Integer) 3243ab = [(1699,"ab")]
-(readOct::ReadS Int) 3489348394032498320438240938403 = [(28,"89348394032498320438240938403")]
-(readOct::ReadS Int) 0 = [(0,"")]
-(readOct::ReadS Int) -1 = []
-(readOct::ReadS Int) 1 = [(1,"")]
-(readOct::ReadS Int) 34323 = [(14547,"")]
-(readOct::ReadS Int) 2L = [(2,"L")]
-(readOct::ReadS Int) 012 = [(10,"")]
-(readOct::ReadS Int) 0x23 = [(0,"x23")]
-(readOct::ReadS Int) 3243ab = [(1699,"ab")]
-(readHex::ReadS Integer) 3489348394032498320438240938403 = [(4364516597526947317207336190131536899,"")]
-(readHex::ReadS Integer) 0 = [(0,"")]
-(readHex::ReadS Integer) -1 = []
-(readHex::ReadS Integer) 1 = [(1,"")]
-(readHex::ReadS Integer) 34323 = [(213795,"")]
-(readHex::ReadS Integer) 2L = [(2,"L")]
-(readHex::ReadS Integer) 012 = [(18,"")]
-(readHex::ReadS Integer) 0x23 = [(0,"x23")]
-(readHex::ReadS Integer) 3243ab = [(3294123,"")]
-(readHex::ReadS Int) 3489348394032498320438240938403 = [(-8998117828778032125,"")]
-(readHex::ReadS Int) 0 = [(0,"")]
-(readHex::ReadS Int) -1 = []
-(readHex::ReadS Int) 1 = [(1,"")]
-(readHex::ReadS Int) 34323 = [(213795,"")]
-(readHex::ReadS Int) 2L = [(2,"L")]
-(readHex::ReadS Int) 012 = [(18,"")]
-(readHex::ReadS Int) 0x23 = [(0,"x23")]
-(readHex::ReadS Int) 3243ab = [(3294123,"")]
diff --git a/testsuite/tests/lib/Numeric/num005.stdout-mips-sgi-irix b/testsuite/tests/lib/Numeric/num005.stdout-mips-sgi-irix
deleted file mode 100644
index 35678af82f..0000000000
--- a/testsuite/tests/lib/Numeric/num005.stdout-mips-sgi-irix
+++ /dev/null
@@ -1,55 +0,0 @@
-
-(readDec::ReadS Integer) 3489348394032498320438240938403 = [(3489348394032498320438240938403,"")]
-(readDec::ReadS Integer) 0 = [(0,"")]
-(readDec::ReadS Integer) -1 = []
-(readDec::ReadS Integer) 1 = [(1,"")]
-(readDec::ReadS Integer) 34323 = [(34323,"")]
-(readDec::ReadS Integer) 2L = [(2,"L")]
-(readDec::ReadS Integer) 012 = [(12,"")]
-(readDec::ReadS Integer) 0x23 = [(0,"x23")]
-(readDec::ReadS Integer) 3243ab = [(3243,"ab")]
-(readDec::ReadS Int) 3489348394032498320438240938403 = [(8154046292665502115,"")]
-(readDec::ReadS Int) 0 = [(0,"")]
-(readDec::ReadS Int) -1 = []
-(readDec::ReadS Int) 1 = [(1,"")]
-(readDec::ReadS Int) 34323 = [(34323,"")]
-(readDec::ReadS Int) 2L = [(2,"L")]
-(readDec::ReadS Int) 012 = [(12,"")]
-(readDec::ReadS Int) 0x23 = [(0,"x23")]
-(readDec::ReadS Int) 3243ab = [(3243,"ab")]
-(readOct::ReadS Integer) 3489348394032498320438240938403 = [(28,"89348394032498320438240938403")]
-(readOct::ReadS Integer) 0 = [(0,"")]
-(readOct::ReadS Integer) -1 = []
-(readOct::ReadS Integer) 1 = [(1,"")]
-(readOct::ReadS Integer) 34323 = [(14547,"")]
-(readOct::ReadS Integer) 2L = [(2,"L")]
-(readOct::ReadS Integer) 012 = [(10,"")]
-(readOct::ReadS Integer) 0x23 = [(0,"x23")]
-(readOct::ReadS Integer) 3243ab = [(1699,"ab")]
-(readOct::ReadS Int) 3489348394032498320438240938403 = [(28,"89348394032498320438240938403")]
-(readOct::ReadS Int) 0 = [(0,"")]
-(readOct::ReadS Int) -1 = []
-(readOct::ReadS Int) 1 = [(1,"")]
-(readOct::ReadS Int) 34323 = [(14547,"")]
-(readOct::ReadS Int) 2L = [(2,"L")]
-(readOct::ReadS Int) 012 = [(10,"")]
-(readOct::ReadS Int) 0x23 = [(0,"x23")]
-(readOct::ReadS Int) 3243ab = [(1699,"ab")]
-(readHex::ReadS Integer) 3489348394032498320438240938403 = [(4364516597526947317207336190131536899,"")]
-(readHex::ReadS Integer) 0 = [(0,"")]
-(readHex::ReadS Integer) -1 = []
-(readHex::ReadS Integer) 1 = [(1,"")]
-(readHex::ReadS Integer) 34323 = [(213795,"")]
-(readHex::ReadS Integer) 2L = [(2,"L")]
-(readHex::ReadS Integer) 012 = [(18,"")]
-(readHex::ReadS Integer) 0x23 = [(0,"x23")]
-(readHex::ReadS Integer) 3243ab = [(3294123,"")]
-(readHex::ReadS Int) 3489348394032498320438240938403 = [(-8998117828778032125,"")]
-(readHex::ReadS Int) 0 = [(0,"")]
-(readHex::ReadS Int) -1 = []
-(readHex::ReadS Int) 1 = [(1,"")]
-(readHex::ReadS Int) 34323 = [(213795,"")]
-(readHex::ReadS Int) 2L = [(2,"L")]
-(readHex::ReadS Int) 012 = [(18,"")]
-(readHex::ReadS Int) 0x23 = [(0,"x23")]
-(readHex::ReadS Int) 3243ab = [(3294123,"")]
diff --git a/testsuite/tests/lib/Numeric/num005.stdout-ws-64 b/testsuite/tests/lib/Numeric/num005.stdout-ws-64
deleted file mode 100644
index 35678af82f..0000000000
--- a/testsuite/tests/lib/Numeric/num005.stdout-ws-64
+++ /dev/null
@@ -1,55 +0,0 @@
-
-(readDec::ReadS Integer) 3489348394032498320438240938403 = [(3489348394032498320438240938403,"")]
-(readDec::ReadS Integer) 0 = [(0,"")]
-(readDec::ReadS Integer) -1 = []
-(readDec::ReadS Integer) 1 = [(1,"")]
-(readDec::ReadS Integer) 34323 = [(34323,"")]
-(readDec::ReadS Integer) 2L = [(2,"L")]
-(readDec::ReadS Integer) 012 = [(12,"")]
-(readDec::ReadS Integer) 0x23 = [(0,"x23")]
-(readDec::ReadS Integer) 3243ab = [(3243,"ab")]
-(readDec::ReadS Int) 3489348394032498320438240938403 = [(8154046292665502115,"")]
-(readDec::ReadS Int) 0 = [(0,"")]
-(readDec::ReadS Int) -1 = []
-(readDec::ReadS Int) 1 = [(1,"")]
-(readDec::ReadS Int) 34323 = [(34323,"")]
-(readDec::ReadS Int) 2L = [(2,"L")]
-(readDec::ReadS Int) 012 = [(12,"")]
-(readDec::ReadS Int) 0x23 = [(0,"x23")]
-(readDec::ReadS Int) 3243ab = [(3243,"ab")]
-(readOct::ReadS Integer) 3489348394032498320438240938403 = [(28,"89348394032498320438240938403")]
-(readOct::ReadS Integer) 0 = [(0,"")]
-(readOct::ReadS Integer) -1 = []
-(readOct::ReadS Integer) 1 = [(1,"")]
-(readOct::ReadS Integer) 34323 = [(14547,"")]
-(readOct::ReadS Integer) 2L = [(2,"L")]
-(readOct::ReadS Integer) 012 = [(10,"")]
-(readOct::ReadS Integer) 0x23 = [(0,"x23")]
-(readOct::ReadS Integer) 3243ab = [(1699,"ab")]
-(readOct::ReadS Int) 3489348394032498320438240938403 = [(28,"89348394032498320438240938403")]
-(readOct::ReadS Int) 0 = [(0,"")]
-(readOct::ReadS Int) -1 = []
-(readOct::ReadS Int) 1 = [(1,"")]
-(readOct::ReadS Int) 34323 = [(14547,"")]
-(readOct::ReadS Int) 2L = [(2,"L")]
-(readOct::ReadS Int) 012 = [(10,"")]
-(readOct::ReadS Int) 0x23 = [(0,"x23")]
-(readOct::ReadS Int) 3243ab = [(1699,"ab")]
-(readHex::ReadS Integer) 3489348394032498320438240938403 = [(4364516597526947317207336190131536899,"")]
-(readHex::ReadS Integer) 0 = [(0,"")]
-(readHex::ReadS Integer) -1 = []
-(readHex::ReadS Integer) 1 = [(1,"")]
-(readHex::ReadS Integer) 34323 = [(213795,"")]
-(readHex::ReadS Integer) 2L = [(2,"L")]
-(readHex::ReadS Integer) 012 = [(18,"")]
-(readHex::ReadS Integer) 0x23 = [(0,"x23")]
-(readHex::ReadS Integer) 3243ab = [(3294123,"")]
-(readHex::ReadS Int) 3489348394032498320438240938403 = [(-8998117828778032125,"")]
-(readHex::ReadS Int) 0 = [(0,"")]
-(readHex::ReadS Int) -1 = []
-(readHex::ReadS Int) 1 = [(1,"")]
-(readHex::ReadS Int) 34323 = [(213795,"")]
-(readHex::ReadS Int) 2L = [(2,"L")]
-(readHex::ReadS Int) 012 = [(18,"")]
-(readHex::ReadS Int) 0x23 = [(0,"x23")]
-(readHex::ReadS Int) 3243ab = [(3294123,"")]
diff --git a/testsuite/tests/lib/Numeric/num005.stdout-x86_64-unknown-openbsd b/testsuite/tests/lib/Numeric/num005.stdout-x86_64-unknown-openbsd
deleted file mode 100644
index 35678af82f..0000000000
--- a/testsuite/tests/lib/Numeric/num005.stdout-x86_64-unknown-openbsd
+++ /dev/null
@@ -1,55 +0,0 @@
-
-(readDec::ReadS Integer) 3489348394032498320438240938403 = [(3489348394032498320438240938403,"")]
-(readDec::ReadS Integer) 0 = [(0,"")]
-(readDec::ReadS Integer) -1 = []
-(readDec::ReadS Integer) 1 = [(1,"")]
-(readDec::ReadS Integer) 34323 = [(34323,"")]
-(readDec::ReadS Integer) 2L = [(2,"L")]
-(readDec::ReadS Integer) 012 = [(12,"")]
-(readDec::ReadS Integer) 0x23 = [(0,"x23")]
-(readDec::ReadS Integer) 3243ab = [(3243,"ab")]
-(readDec::ReadS Int) 3489348394032498320438240938403 = [(8154046292665502115,"")]
-(readDec::ReadS Int) 0 = [(0,"")]
-(readDec::ReadS Int) -1 = []
-(readDec::ReadS Int) 1 = [(1,"")]
-(readDec::ReadS Int) 34323 = [(34323,"")]
-(readDec::ReadS Int) 2L = [(2,"L")]
-(readDec::ReadS Int) 012 = [(12,"")]
-(readDec::ReadS Int) 0x23 = [(0,"x23")]
-(readDec::ReadS Int) 3243ab = [(3243,"ab")]
-(readOct::ReadS Integer) 3489348394032498320438240938403 = [(28,"89348394032498320438240938403")]
-(readOct::ReadS Integer) 0 = [(0,"")]
-(readOct::ReadS Integer) -1 = []
-(readOct::ReadS Integer) 1 = [(1,"")]
-(readOct::ReadS Integer) 34323 = [(14547,"")]
-(readOct::ReadS Integer) 2L = [(2,"L")]
-(readOct::ReadS Integer) 012 = [(10,"")]
-(readOct::ReadS Integer) 0x23 = [(0,"x23")]
-(readOct::ReadS Integer) 3243ab = [(1699,"ab")]
-(readOct::ReadS Int) 3489348394032498320438240938403 = [(28,"89348394032498320438240938403")]
-(readOct::ReadS Int) 0 = [(0,"")]
-(readOct::ReadS Int) -1 = []
-(readOct::ReadS Int) 1 = [(1,"")]
-(readOct::ReadS Int) 34323 = [(14547,"")]
-(readOct::ReadS Int) 2L = [(2,"L")]
-(readOct::ReadS Int) 012 = [(10,"")]
-(readOct::ReadS Int) 0x23 = [(0,"x23")]
-(readOct::ReadS Int) 3243ab = [(1699,"ab")]
-(readHex::ReadS Integer) 3489348394032498320438240938403 = [(4364516597526947317207336190131536899,"")]
-(readHex::ReadS Integer) 0 = [(0,"")]
-(readHex::ReadS Integer) -1 = []
-(readHex::ReadS Integer) 1 = [(1,"")]
-(readHex::ReadS Integer) 34323 = [(213795,"")]
-(readHex::ReadS Integer) 2L = [(2,"L")]
-(readHex::ReadS Integer) 012 = [(18,"")]
-(readHex::ReadS Integer) 0x23 = [(0,"x23")]
-(readHex::ReadS Integer) 3243ab = [(3294123,"")]
-(readHex::ReadS Int) 3489348394032498320438240938403 = [(-8998117828778032125,"")]
-(readHex::ReadS Int) 0 = [(0,"")]
-(readHex::ReadS Int) -1 = []
-(readHex::ReadS Int) 1 = [(1,"")]
-(readHex::ReadS Int) 34323 = [(213795,"")]
-(readHex::ReadS Int) 2L = [(2,"L")]
-(readHex::ReadS Int) 012 = [(18,"")]
-(readHex::ReadS Int) 0x23 = [(0,"x23")]
-(readHex::ReadS Int) 3243ab = [(3294123,"")]
diff --git a/testsuite/tests/lib/Numeric/num006.hs b/testsuite/tests/lib/Numeric/num006.hs
deleted file mode 100644
index f421ed72a2..0000000000
--- a/testsuite/tests/lib/Numeric/num006.hs
+++ /dev/null
@@ -1,28 +0,0 @@
--- Exercising the showing of positive numbers at various bases.
---
-module Main(main) where
-
-import Numeric
-import Data.Char
-
---showDec :: Integral a => a -> ShowS
-showDec = showInt
-
-{-
---showBinary :: Integral a => a -> ShowS
-showBinary n r =
- showString "0b" $
- showIntAtBase 2 (toChr) n r
- where toChr d = chr (ord '0' + fromIntegral d)
--}
-
-main =
- do
- print (map (\ x -> showOct x []) [1..32])
- print (map (\ x -> showDec x []) [1..32])
- print (map (\ x -> showHex x []) [1..32])
--- print (map (\ x -> showBinary x []) [1..32])
- putStrLn (showOct (241324784::Int) [])
- putStrLn (showDec (241324784::Int) [])
- putStrLn (showHex (241324784::Int) [])
---- putStrLn (showBinary (241324784::Int) [])
diff --git a/testsuite/tests/lib/Numeric/num006.stdout b/testsuite/tests/lib/Numeric/num006.stdout
deleted file mode 100644
index e0c45403ec..0000000000
--- a/testsuite/tests/lib/Numeric/num006.stdout
+++ /dev/null
@@ -1,6 +0,0 @@
-["1","2","3","4","5","6","7","10","11","12","13","14","15","16","17","20","21","22","23","24","25","26","27","30","31","32","33","34","35","36","37","40"]
-["1","2","3","4","5","6","7","8","9","10","11","12","13","14","15","16","17","18","19","20","21","22","23","24","25","26","27","28","29","30","31","32"]
-["1","2","3","4","5","6","7","8","9","a","b","c","d","e","f","10","11","12","13","14","15","16","17","18","19","1a","1b","1c","1d","1e","1f","20"]
-1630451360
-241324784
-e6252f0
diff --git a/testsuite/tests/lib/Numeric/num007.hs b/testsuite/tests/lib/Numeric/num007.hs
deleted file mode 100644
index 1c40ecfdbd..0000000000
--- a/testsuite/tests/lib/Numeric/num007.hs
+++ /dev/null
@@ -1,17 +0,0 @@
--- Exercising the reading of positive numbers at various bases.
---
-module Main(main) where
-
-import Numeric
-
-main =
- do
- putStrLn (show (readOct "00000111"))
- putStrLn (show (readDec "00000111"))
- putStrLn (show (readHex "00000111"))
- putStrLn (show (readOct "-24"))
- putStrLn (show (readDec "-24"))
- putStrLn (show (readHex "-24"))
- putStrLn (show ((readOct ::ReadS Integer) "3248784372843778438743"))
- putStrLn (show ((readDec ::ReadS Integer) "3248784372843778438743"))
- putStrLn (show ((readHex ::ReadS Integer) "3248784372843778438743"))
diff --git a/testsuite/tests/lib/Numeric/num007.stdout b/testsuite/tests/lib/Numeric/num007.stdout
deleted file mode 100644
index ef60021827..0000000000
--- a/testsuite/tests/lib/Numeric/num007.stdout
+++ /dev/null
@@ -1,9 +0,0 @@
-[(73,"")]
-[(111,"")]
-[(273,"")]
-[]
-[]
-[]
-[(212,"8784372843778438743")]
-[(3248784372843778438743,"")]
-[(60788519836879239998834499,"")]
diff --git a/testsuite/tests/lib/Numeric/num008.hs b/testsuite/tests/lib/Numeric/num008.hs
deleted file mode 100644
index 36158240b4..0000000000
--- a/testsuite/tests/lib/Numeric/num008.hs
+++ /dev/null
@@ -1,57 +0,0 @@
--- showing/reading floats
---
-module Main(main) where
-
-import Numeric
-
-main = do
- let dbls = map (shEFloat (Just 7)) doubles
- ++ map (shEFloat (Just 0)) doubles
- ++ map (shEFloat Nothing) doubles
- ++ map (shFFloat (Just 7)) doubles
- ++ map (shFFloat (Just 0)) doubles
- ++ map (shFFloat Nothing) doubles
- ++ map (shGFloat (Just 7)) doubles
- ++ map (shGFloat (Just 0)) doubles
- ++ map (shGFloat Nothing) doubles
-
- flts = map (shEFloat (Just 7)) floats
- ++ map (shEFloat (Just 0)) floats
- ++ map (shEFloat Nothing) floats
- ++ map (shFFloat (Just 7)) floats
- ++ map (shFFloat (Just 0)) floats
- ++ map (shFFloat Nothing) floats
- ++ map (shGFloat (Just 7)) floats
- ++ map (shGFloat (Just 0)) floats
- ++ map (shGFloat Nothing) floats
-
- putStrLn (unlines dbls)
- putStrLn (unlines flts)
- print (map read dbls :: [Double])
- print (map read flts :: [Double])
-
-shEFloat p f = showEFloat p f ""
-shFFloat p f = showFFloat p f ""
-shGFloat p f = showGFloat p f ""
-
-doubles :: [ Double ]
-doubles = [ 0.0
- , 420
- , 42
- , 4.2
- , 0.42
- , 0.042
- , 1.82173691287639817263897126389712638972163
- , 1.82173691287639817263897126389712638972163e-300
- ]
-
-floats :: [ Float ]
-floats = [ 0.0
- , 420
- , 42
- , 4.2
- , 0.42
- , 0.042
- , 1.82173691287639817263897126389712638972163
- , 1.82173691287639817263897126389712638972163e-300
- ]
diff --git a/testsuite/tests/lib/Numeric/num008.stdout b/testsuite/tests/lib/Numeric/num008.stdout
deleted file mode 100644
index 5086442f0f..0000000000
--- a/testsuite/tests/lib/Numeric/num008.stdout
+++ /dev/null
@@ -1,148 +0,0 @@
-0.0000000e0
-4.2000000e2
-4.2000000e1
-4.2000000e0
-4.2000000e-1
-4.2000000e-2
-1.8217369e0
-1.8217369e-300
-0.0e0
-4.2e2
-4.2e1
-4.2e0
-4.2e-1
-4.2e-2
-1.8e0
-1.8e-300
-0.0e0
-4.2e2
-4.2e1
-4.2e0
-4.2e-1
-4.2e-2
-1.8217369128763983e0
-1.821736912876398e-300
-0.0000000
-420.0000000
-42.0000000
-4.2000000
-0.4200000
-0.0420000
-1.8217369
-0.0000000
-0
-420
-42
-4
-0
-0
-2
-0
-0.0
-420.0
-42.0
-4.2
-0.42
-0.042
-1.8217369128763983
-0.000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001821736912876398
-0.0000000
-420.0000000
-42.0000000
-4.2000000
-0.4200000
-4.2000000e-2
-1.8217369
-1.8217369e-300
-0
-420
-42
-4
-0
-4.2e-2
-2
-1.8e-300
-0.0
-420.0
-42.0
-4.2
-0.42
-4.2e-2
-1.8217369128763983
-1.821736912876398e-300
-
-0.0000000e0
-4.2000000e2
-4.2000000e1
-4.2000000e0
-4.2000000e-1
-4.2000000e-2
-1.8217369e0
-0.0000000e0
-0.0e0
-4.2e2
-4.2e1
-4.2e0
-4.2e-1
-4.2e-2
-1.8e0
-0.0e0
-0.0e0
-4.2e2
-4.2e1
-4.2e0
-4.2e-1
-4.2e-2
-1.8217369e0
-0.0e0
-0.0000000
-420.0000000
-42.0000000
-4.2000000
-0.4200000
-0.0420000
-1.8217369
-0.0000000
-0
-420
-42
-4
-0
-0
-2
-0
-0.0
-420.0
-42.0
-4.2
-0.42
-0.042
-1.8217369
-0.0
-0.0000000
-420.0000000
-42.0000000
-4.2000000
-0.4200000
-4.2000000e-2
-1.8217369
-0.0000000
-0
-420
-42
-4
-0
-4.2e-2
-2
-0
-0.0
-420.0
-42.0
-4.2
-0.42
-4.2e-2
-1.8217369
-0.0
-
-[0.0,420.0,42.0,4.2,0.42,4.2e-2,1.8217369,1.8217369e-300,0.0,420.0,42.0,4.2,0.42,4.2e-2,1.8,1.8e-300,0.0,420.0,42.0,4.2,0.42,4.2e-2,1.8217369128763983,1.821736912876398e-300,0.0,420.0,42.0,4.2,0.42,4.2e-2,1.8217369,0.0,0.0,420.0,42.0,4.0,0.0,0.0,2.0,0.0,0.0,420.0,42.0,4.2,0.42,4.2e-2,1.8217369128763983,1.821736912876398e-300,0.0,420.0,42.0,4.2,0.42,4.2e-2,1.8217369,1.8217369e-300,0.0,420.0,42.0,4.0,0.0,4.2e-2,2.0,1.8e-300,0.0,420.0,42.0,4.2,0.42,4.2e-2,1.8217369128763983,1.821736912876398e-300]
-[0.0,420.0,42.0,4.2,0.42,4.2e-2,1.8217369,0.0,0.0,420.0,42.0,4.2,0.42,4.2e-2,1.8,0.0,0.0,420.0,42.0,4.2,0.42,4.2e-2,1.8217369,0.0,0.0,420.0,42.0,4.2,0.42,4.2e-2,1.8217369,0.0,0.0,420.0,42.0,4.0,0.0,0.0,2.0,0.0,0.0,420.0,42.0,4.2,0.42,4.2e-2,1.8217369,0.0,0.0,420.0,42.0,4.2,0.42,4.2e-2,1.8217369,0.0,0.0,420.0,42.0,4.0,0.0,4.2e-2,2.0,0.0,0.0,420.0,42.0,4.2,0.42,4.2e-2,1.8217369,0.0]
diff --git a/testsuite/tests/lib/Numeric/num009.hs b/testsuite/tests/lib/Numeric/num009.hs
deleted file mode 100644
index 58ab586ba8..0000000000
--- a/testsuite/tests/lib/Numeric/num009.hs
+++ /dev/null
@@ -1,39 +0,0 @@
--- trac #2059
-
-{-# LANGUAGE ForeignFunctionInterface #-}
-
-module Main(main) where
-
-import Control.Monad
-import Foreign.C
-
-main = do let d = 1e20 :: Double
- f = 1e20 :: Float
- test "sind" sind sin d
- test "sinf" sinf sin f
- test "cosd" cosd cos d
- test "cosf" cosf cos f
- test "tand" tand tan d
- test "tanf" tanf tan f
- putStrLn "Done"
-
-test :: (RealFloat a, Floating a, RealFloat b, Floating b, Show b)
- => String -> (a -> a) -> (b -> b) -> b -> IO ()
-test s f g x = do let y = realToFrac (f (realToFrac x))
- z = g x
- unless (y == z) $ do
- putStrLn s
- print y
- print z
- print $ decodeFloat y
- print $ decodeFloat z
-
-foreign import ccall "math.h sin" sind :: CDouble -> CDouble
-foreign import ccall "math.h sinf" sinf :: CFloat -> CFloat
-
-foreign import ccall "math.h cos" cosd :: CDouble -> CDouble
-foreign import ccall "math.h cosf" cosf :: CFloat -> CFloat
-
-foreign import ccall "math.h tan" tand :: CDouble -> CDouble
-foreign import ccall "math.h tanf" tanf :: CFloat -> CFloat
-
diff --git a/testsuite/tests/lib/Numeric/num009.stdout b/testsuite/tests/lib/Numeric/num009.stdout
deleted file mode 100644
index a965a70ed4..0000000000
--- a/testsuite/tests/lib/Numeric/num009.stdout
+++ /dev/null
@@ -1 +0,0 @@
-Done
diff --git a/testsuite/tests/lib/Numeric/num010.hs b/testsuite/tests/lib/Numeric/num010.hs
deleted file mode 100644
index bf1d5a2734..0000000000
--- a/testsuite/tests/lib/Numeric/num010.hs
+++ /dev/null
@@ -1,29 +0,0 @@
-
-module Main(main) where
-
-main = sequence_ [ f x y | x <- [0,
- 1000,
- 1000000000000, -- > 2^32
- 1000000000000000000000000, -- > 2^64
- -1000,
- -1000000000000, -- < -2^32
- -1000000000000000000000000] -- < -2^64
- , y <- [0, -10, 10] ]
-
-f :: Integer -> Int -> IO ()
-f x y = do putStrLn "------------------------"
- print x
- print y
- let d :: Double
- d = encodeFloat x y
- (xd, yd) = decodeFloat d
- let f :: Float
- f = encodeFloat x y
- (xf, yf) = decodeFloat f
- print d
- print xd
- print yd
- print f
- print xf
- print yf
-
diff --git a/testsuite/tests/lib/Numeric/num010.stdout b/testsuite/tests/lib/Numeric/num010.stdout
deleted file mode 100644
index 877d35c722..0000000000
--- a/testsuite/tests/lib/Numeric/num010.stdout
+++ /dev/null
@@ -1,189 +0,0 @@
-------------------------
-0
-0
-0.0
-0
-0
-0.0
-0
-0
-------------------------
-0
--10
-0.0
-0
-0
-0.0
-0
-0
-------------------------
-0
-10
-0.0
-0
-0
-0.0
-0
-0
-------------------------
-1000
-0
-1000.0
-8796093022208000
--43
-1000.0
-16384000
--14
-------------------------
-1000
--10
-0.9765625
-8796093022208000
--53
-0.9765625
-16384000
--24
-------------------------
-1000
-10
-1024000.0
-8796093022208000
--33
-1024000.0
-16384000
--4
-------------------------
-1000000000000
-0
-1.0e12
-8192000000000000
--13
-1.0e12
-15258789
-16
-------------------------
-1000000000000
--10
-9.765625e8
-8192000000000000
--23
-9.765625e8
-15258789
-6
-------------------------
-1000000000000
-10
-1.024e15
-8192000000000000
--3
-1.024e15
-15258789
-26
-------------------------
-1000000000000000000000000
-0
-1.0e24
-7450580596923828
-27
-1.0e24
-13877788
-56
-------------------------
-1000000000000000000000000
--10
-9.765625e20
-7450580596923828
-17
-9.765625e20
-13877788
-46
-------------------------
-1000000000000000000000000
-10
-1.024e27
-7450580596923828
-37
-1.024e27
-13877788
-66
-------------------------
--1000
-0
--1000.0
--8796093022208000
--43
--1000.0
--16384000
--14
-------------------------
--1000
--10
--0.9765625
--8796093022208000
--53
--0.9765625
--16384000
--24
-------------------------
--1000
-10
--1024000.0
--8796093022208000
--33
--1024000.0
--16384000
--4
-------------------------
--1000000000000
-0
--1.0e12
--8192000000000000
--13
--1.0e12
--15258789
-16
-------------------------
--1000000000000
--10
--9.765625e8
--8192000000000000
--23
--9.765625e8
--15258789
-6
-------------------------
--1000000000000
-10
--1.024e15
--8192000000000000
--3
--1.024e15
--15258789
-26
-------------------------
--1000000000000000000000000
-0
--1.0e24
--7450580596923828
-27
--1.0e24
--13877788
-56
-------------------------
--1000000000000000000000000
--10
--9.765625e20
--7450580596923828
-17
--9.765625e20
--13877788
-46
-------------------------
--1000000000000000000000000
-10
--1.024e27
--7450580596923828
-37
--1.024e27
--13877788
-66
diff --git a/testsuite/tests/lib/OldException/OldException001.hs b/testsuite/tests/lib/OldException/OldException001.hs
deleted file mode 100644
index 150dc2aba7..0000000000
--- a/testsuite/tests/lib/OldException/OldException001.hs
+++ /dev/null
@@ -1,22 +0,0 @@
-
--- trace #2913
-
-{-# LANGUAGE DeriveDataTypeable #-}
-
-import qualified Control.Exception as New
-import qualified Control.OldException as Old
-
-import Data.Typeable
-
-data MyException = MyException
- deriving (Eq, Show, Typeable)
-
-instance New.Exception MyException
-
-main :: IO ()
-main = (New.throwIO MyException
- `Old.catch`
- (\e -> do putStrLn ("Old got " ++ show e)
- Old.throw e)
- ) `New.catch` (\e -> putStrLn ("New got " ++ show (e :: MyException)))
-
diff --git a/testsuite/tests/lib/OldException/OldException001.stdout b/testsuite/tests/lib/OldException/OldException001.stdout
deleted file mode 100644
index ba73072274..0000000000
--- a/testsuite/tests/lib/OldException/OldException001.stdout
+++ /dev/null
@@ -1,2 +0,0 @@
-Old got exception :: SomeException
-New got MyException
diff --git a/testsuite/tests/lib/OldException/all.T b/testsuite/tests/lib/OldException/all.T
deleted file mode 100644
index 55459823eb..0000000000
--- a/testsuite/tests/lib/OldException/all.T
+++ /dev/null
@@ -1,3 +0,0 @@
-
-test('OldException001', normal, compile_and_run, [''])
-
diff --git a/testsuite/tests/lib/PrettyPrint/Makefile b/testsuite/tests/lib/PrettyPrint/Makefile
deleted file mode 100644
index 9101fbd40a..0000000000
--- a/testsuite/tests/lib/PrettyPrint/Makefile
+++ /dev/null
@@ -1,3 +0,0 @@
-TOP=../../..
-include $(TOP)/mk/boilerplate.mk
-include $(TOP)/mk/test.mk
diff --git a/testsuite/tests/lib/PrettyPrint/T3911.hs b/testsuite/tests/lib/PrettyPrint/T3911.hs
deleted file mode 100644
index 01ccb22b01..0000000000
--- a/testsuite/tests/lib/PrettyPrint/T3911.hs
+++ /dev/null
@@ -1,23 +0,0 @@
-
-module Main where
-
-import Text.PrettyPrint.HughesPJ
-
-xs :: [Doc]
-xs = [text "hello",
- nest 10 (text "world")]
-
-d1 :: Doc
-d1 = vcat xs
-
-d2 :: Doc
-d2 = foldr ($$) empty xs
-
-d3 :: Doc
-d3 = foldr ($+$) empty xs
-
-main :: IO ()
-main = do print d1
- print d2
- print d3
-
diff --git a/testsuite/tests/lib/PrettyPrint/T3911.stdout b/testsuite/tests/lib/PrettyPrint/T3911.stdout
deleted file mode 100644
index 7677e8d6f4..0000000000
--- a/testsuite/tests/lib/PrettyPrint/T3911.stdout
+++ /dev/null
@@ -1,4 +0,0 @@
-hello world
-hello world
-hello
- world
diff --git a/testsuite/tests/lib/PrettyPrint/all.T b/testsuite/tests/lib/PrettyPrint/all.T
deleted file mode 100644
index 5189843c15..0000000000
--- a/testsuite/tests/lib/PrettyPrint/all.T
+++ /dev/null
@@ -1,2 +0,0 @@
-test('pp1', compose(expect_broken(1062), only_ways(['normal'])), compile_and_run, [''])
-test('T3911', normal, compile_and_run, [''])
diff --git a/testsuite/tests/lib/PrettyPrint/pp1.hs b/testsuite/tests/lib/PrettyPrint/pp1.hs
deleted file mode 100644
index 55cfba9d27..0000000000
--- a/testsuite/tests/lib/PrettyPrint/pp1.hs
+++ /dev/null
@@ -1,18 +0,0 @@
--- This code used to print an infinite string, by calling 'spaces'
--- with a negative argument. There's a patch in the library now,
--- which makes 'spaces' do somehthing sensible when called with a negative
--- argument, but it really should not happen at all.
-
-
-module Main where
-
-import Text.PrettyPrint.HughesPJ
-
-
-ncat x y = nest 4 $ cat [ x, y ]
-
-d1 = foldl1 ncat $ take 50 $ repeat $ char 'a'
-d2 = parens $ sep [ d1, text "+" , d1 ]
-
-main = print d2
-
diff --git a/testsuite/tests/lib/PrettyPrint/pp1.stdout b/testsuite/tests/lib/PrettyPrint/pp1.stdout
deleted file mode 100644
index 6915311150..0000000000
--- a/testsuite/tests/lib/PrettyPrint/pp1.stdout
+++ /dev/null
@@ -1,4 +0,0 @@
-This output is not what is expected, becuase the
-test "works" now, by virtue of a hack in HughesPJ.spaces.
-I'm leaving this strange output here to remind us to look
-at the root cause of the problem. Sometime. \ No newline at end of file
diff --git a/testsuite/tests/lib/Regex/Makefile b/testsuite/tests/lib/Regex/Makefile
deleted file mode 100644
index 9101fbd40a..0000000000
--- a/testsuite/tests/lib/Regex/Makefile
+++ /dev/null
@@ -1,3 +0,0 @@
-TOP=../../..
-include $(TOP)/mk/boilerplate.mk
-include $(TOP)/mk/test.mk
diff --git a/testsuite/tests/lib/Regex/all.T b/testsuite/tests/lib/Regex/all.T
deleted file mode 100644
index c69bfd665a..0000000000
--- a/testsuite/tests/lib/Regex/all.T
+++ /dev/null
@@ -1,3 +0,0 @@
-test('regex001', reqlib('regex-posix'), compile_and_run, ['-package regex-posix'])
-test('regex002', reqlib('regex-posix'), compile_and_run, ['-package regex-posix'])
-test('regex003', reqlib('regex-posix'), compile_and_run, ['-package regex-posix'])
diff --git a/testsuite/tests/lib/Regex/regex001.hs b/testsuite/tests/lib/Regex/regex001.hs
deleted file mode 100644
index 1c9393c1b2..0000000000
--- a/testsuite/tests/lib/Regex/regex001.hs
+++ /dev/null
@@ -1,11 +0,0 @@
-module Main where
-
-import Control.Exception
-import Text.Regex.Posix
-
--- caused GHC 6.0 to crash, due to regfree'ing the regex after a
--- failed regcomp.
-main = sequence_
- [ try ("abc" =~~ "[[[" :: IO Bool) :: IO (Either IOException Bool)
- | _ <- [1..10000] ]
-
diff --git a/testsuite/tests/lib/Regex/regex002.hs b/testsuite/tests/lib/Regex/regex002.hs
deleted file mode 100644
index 9a87a85618..0000000000
--- a/testsuite/tests/lib/Regex/regex002.hs
+++ /dev/null
@@ -1,13 +0,0 @@
-import Text.Regex.Base
-import Text.Regex.Posix((=~),(=~~)) -- or DFA or PCRE or PosixRE
-import qualified Data.ByteString.Char8 as B(ByteString,pack)
-
-main = let b :: Bool
- b = ("abaca" =~ "(.)a")
- c :: [MatchArray]
- c = ("abaca" =~ "(.)a")
- d :: Maybe (String,String,String,[String])
- d = ("abaca" =~~ "(.)a")
- in do print b
- print c
- print d
diff --git a/testsuite/tests/lib/Regex/regex002.stdout b/testsuite/tests/lib/Regex/regex002.stdout
deleted file mode 100644
index 99b5656f91..0000000000
--- a/testsuite/tests/lib/Regex/regex002.stdout
+++ /dev/null
@@ -1,3 +0,0 @@
-True
-[array (0,1) [(0,(1,2)),(1,(1,1))],array (0,1) [(0,(3,2)),(1,(3,1))]]
-Just ("a","ba","ca",["b"])
diff --git a/testsuite/tests/lib/Regex/regex003.hs b/testsuite/tests/lib/Regex/regex003.hs
deleted file mode 100644
index 0aa51fe7aa..0000000000
--- a/testsuite/tests/lib/Regex/regex003.hs
+++ /dev/null
@@ -1,43 +0,0 @@
-import Text.Regex.Base
-import Text.Regex.Posix(Regex,(=~),(=~~)) -- or DFA or PCRE or PosixRE
-import qualified Data.ByteString.Char8 as B(ByteString,pack)
-
--- Show mixing of ByteString and String as well as polymorphism:
-
-main = let x :: (RegexContext Regex String target) => target
- x = ("abaca" =~ B.pack "(.)a")
- x' :: (RegexContext Regex String target,Monad m) => m target
- x' = ("abaca" =~~ "(.)a")
- y :: (RegexContext Regex B.ByteString target) => target
- y = (B.pack "abaca" =~ "(.)a")
- y' :: (RegexContext Regex B.ByteString target,Monad m) => m target
- y' = (B.pack "abaca" =~~ B.pack "(.)a")
- in do print (x :: Bool)
- print (x :: Int)
- print (x :: [MatchArray])
- print (x' :: Maybe (String,String,String,[String]))
- print (y :: Bool)
- print (y :: Int)
- print (y :: [MatchArray])
- print (y' :: Maybe (B.ByteString,B.ByteString,B.ByteString,[B.ByteString]))
-
-{- Output is, except for replacing Full with DFA (which has no capture)
-True
-2
-[array (0,1) [(0,(1,2)),(1,(1,1))],array (0,1) [(0,(3,2)),(1,(3,1))]]
-Just ("a","ba","ca",["b"])
-True
-2
-[array (0,1) [(0,(1,2)),(1,(1,1))],array (0,1) [(0,(3,2)),(1,(3,1))]]
-Just ("a","ba","ca",["b"])
--}
-{- The output for DFA is
-True
-2
-[array (0,0) [(0,(1,2))],array (0,0) [(0,(3,2))]]
-Just ("a","ba","ca",[])
-True
-2
-[array (0,0) [(0,(1,2))],array (0,0) [(0,(3,2))]]
-Just ("a","ba","ca",[])
--}
diff --git a/testsuite/tests/lib/Regex/regex003.stdout b/testsuite/tests/lib/Regex/regex003.stdout
deleted file mode 100644
index 49d7499e91..0000000000
--- a/testsuite/tests/lib/Regex/regex003.stdout
+++ /dev/null
@@ -1,8 +0,0 @@
-True
-2
-[array (0,1) [(0,(1,2)),(1,(1,1))],array (0,1) [(0,(3,2)),(1,(3,1))]]
-Just ("a","ba","ca",["b"])
-True
-2
-[array (0,1) [(0,(1,2)),(1,(1,1))],array (0,1) [(0,(3,2)),(1,(3,1))]]
-Just ("a","ba","ca",["b"])
diff --git a/testsuite/tests/lib/Show/Makefile b/testsuite/tests/lib/Show/Makefile
deleted file mode 100644
index 9101fbd40a..0000000000
--- a/testsuite/tests/lib/Show/Makefile
+++ /dev/null
@@ -1,3 +0,0 @@
-TOP=../../..
-include $(TOP)/mk/boilerplate.mk
-include $(TOP)/mk/test.mk
diff --git a/testsuite/tests/lib/Show/all.T b/testsuite/tests/lib/Show/all.T
deleted file mode 100644
index 0e98a0e5a9..0000000000
--- a/testsuite/tests/lib/Show/all.T
+++ /dev/null
@@ -1,2 +0,0 @@
-test('showDouble', normal, compile_and_run, [''])
-
diff --git a/testsuite/tests/lib/Show/showDouble.hs b/testsuite/tests/lib/Show/showDouble.hs
deleted file mode 100644
index 399af28450..0000000000
--- a/testsuite/tests/lib/Show/showDouble.hs
+++ /dev/null
@@ -1,41 +0,0 @@
-
-module Main (main) where
-
-main :: IO ()
-main = do let xs = [p0, p01, p3, p31, n0, n01, n3, n31, pinf, ninf, nan]
- mapM_ print xs
- mapM_ (print . Just) xs
-
-p0 :: Double
-p0 = 0
-
-p01 :: Double
-p01 = 0.1
-
-p3 :: Double
-p3 = 3
-
-p31 :: Double
-p31 = 3.1
-
-n0 :: Double
-n0 = -0
-
-n01 :: Double
-n01 = -0.1
-
-n3 :: Double
-n3 = -3
-
-n31 :: Double
-n31 = -3.1
-
-pinf :: Double
-pinf = 1 / 0
-
-ninf :: Double
-ninf = - 1 / 0
-
-nan :: Double
-nan = 0 / 0
-
diff --git a/testsuite/tests/lib/Show/showDouble.stdout b/testsuite/tests/lib/Show/showDouble.stdout
deleted file mode 100644
index fb1b4de5e4..0000000000
--- a/testsuite/tests/lib/Show/showDouble.stdout
+++ /dev/null
@@ -1,22 +0,0 @@
-0.0
-0.1
-3.0
-3.1
--0.0
--0.1
--3.0
--3.1
-Infinity
--Infinity
-NaN
-Just 0.0
-Just 0.1
-Just 3.0
-Just 3.1
-Just (-0.0)
-Just (-0.1)
-Just (-3.0)
-Just (-3.1)
-Just Infinity
-Just (-Infinity)
-Just NaN
diff --git a/testsuite/tests/lib/System/Makefile b/testsuite/tests/lib/System/Makefile
deleted file mode 100644
index 9101fbd40a..0000000000
--- a/testsuite/tests/lib/System/Makefile
+++ /dev/null
@@ -1,3 +0,0 @@
-TOP=../../..
-include $(TOP)/mk/boilerplate.mk
-include $(TOP)/mk/test.mk
diff --git a/testsuite/tests/lib/System/all.T b/testsuite/tests/lib/System/all.T
deleted file mode 100644
index 996946fd69..0000000000
--- a/testsuite/tests/lib/System/all.T
+++ /dev/null
@@ -1,8 +0,0 @@
-
-test('exitWith001', exit_code(42), compile_and_run, [''])
-test('getArgs001', normal, compile_and_run, [''])
-test('getEnv001', normal, compile_and_run, [''])
-
-test('system001', if_platform("i386-unknown-mingw32", expect_fail), \
- compile_and_run, [''])
-
diff --git a/testsuite/tests/lib/System/exitWith001.hs b/testsuite/tests/lib/System/exitWith001.hs
deleted file mode 100644
index 38dc38a9d5..0000000000
--- a/testsuite/tests/lib/System/exitWith001.hs
+++ /dev/null
@@ -1,3 +0,0 @@
-import System.Exit (exitWith, ExitCode(..))
-
-main = exitWith (ExitFailure 42)
diff --git a/testsuite/tests/lib/System/getArgs001.hs b/testsuite/tests/lib/System/getArgs001.hs
deleted file mode 100644
index 4b8df9101b..0000000000
--- a/testsuite/tests/lib/System/getArgs001.hs
+++ /dev/null
@@ -1,9 +0,0 @@
-import System.Environment (getProgName, getArgs)
-
-main =
- getProgName >>= \ argv0 ->
- putStr argv0 >>
- getArgs >>= \ argv ->
- sequence (map (\ x -> putChar ' ' >> putStr x) argv) >>
- putChar '\n'
-
diff --git a/testsuite/tests/lib/System/getArgs001.stdout b/testsuite/tests/lib/System/getArgs001.stdout
deleted file mode 100644
index e732087713..0000000000
--- a/testsuite/tests/lib/System/getArgs001.stdout
+++ /dev/null
@@ -1 +0,0 @@
-getArgs001
diff --git a/testsuite/tests/lib/System/getEnv001.hs b/testsuite/tests/lib/System/getEnv001.hs
deleted file mode 100644
index 745f8eaa7f..0000000000
--- a/testsuite/tests/lib/System/getEnv001.hs
+++ /dev/null
@@ -1,15 +0,0 @@
-
-import System.Environment (getEnv)
-import System.IO.Error (catchIOError, isDoesNotExistError)
-
-main :: IO ()
-main = do
- term <- getEnv "PATH"
- putStrLn "Got $PATH"
- fish <- getEnv "One fish, two fish, red fish, blue fish" `catchIOError` getEnv_except
- putStrLn fish
-
-getEnv_except :: IOError -> IO String
-getEnv_except ioe
- | isDoesNotExistError ioe = return ""
- | otherwise = ioError ioe
diff --git a/testsuite/tests/lib/System/getEnv001.stdout b/testsuite/tests/lib/System/getEnv001.stdout
deleted file mode 100644
index b191cc3dd1..0000000000
--- a/testsuite/tests/lib/System/getEnv001.stdout
+++ /dev/null
@@ -1,2 +0,0 @@
-Got $PATH
-
diff --git a/testsuite/tests/lib/System/system001.hs b/testsuite/tests/lib/System/system001.hs
deleted file mode 100644
index 4237d526af..0000000000
--- a/testsuite/tests/lib/System/system001.hs
+++ /dev/null
@@ -1,14 +0,0 @@
--- Not run on mingw, because of /dev/null use
-
-import System.Cmd (system)
-import System.Exit (ExitCode(..), exitWith)
-
-main =
- system "cat dog 1>/dev/null 2>&1" >>= \ ec ->
- case ec of
- ExitSuccess -> putStr "What?!?\n" >> ioError (userError "dog succeeded")
- ExitFailure _ ->
- system "cat system001.hs 2>/dev/null" >>= \ ec ->
- case ec of
- ExitSuccess -> exitWith ExitSuccess
- ExitFailure _ -> putStr "What?!?\n" >> ioError (userError "cat failed")
diff --git a/testsuite/tests/lib/System/system001.stdout b/testsuite/tests/lib/System/system001.stdout
deleted file mode 100644
index 4237d526af..0000000000
--- a/testsuite/tests/lib/System/system001.stdout
+++ /dev/null
@@ -1,14 +0,0 @@
--- Not run on mingw, because of /dev/null use
-
-import System.Cmd (system)
-import System.Exit (ExitCode(..), exitWith)
-
-main =
- system "cat dog 1>/dev/null 2>&1" >>= \ ec ->
- case ec of
- ExitSuccess -> putStr "What?!?\n" >> ioError (userError "dog succeeded")
- ExitFailure _ ->
- system "cat system001.hs 2>/dev/null" >>= \ ec ->
- case ec of
- ExitSuccess -> exitWith ExitSuccess
- ExitFailure _ -> putStr "What?!?\n" >> ioError (userError "cat failed")
diff --git a/testsuite/tests/lib/Text.Printf/1548.hs b/testsuite/tests/lib/Text.Printf/1548.hs
deleted file mode 100644
index 68cec0548f..0000000000
--- a/testsuite/tests/lib/Text.Printf/1548.hs
+++ /dev/null
@@ -1,11 +0,0 @@
-import Text.Printf
-
-main = do
- printf "%.*f\n" (2::Int) ((1/3) :: Double)
- -- (expected: "0.33")
-
- printf "%.3s\n" "foobar"
- -- (expected: "foo")
-
- printf "%10.5d\n" (4::Int)
- -- (expected: " 00004")
diff --git a/testsuite/tests/lib/Text.Printf/1548.stdout b/testsuite/tests/lib/Text.Printf/1548.stdout
deleted file mode 100644
index 4976334b4f..0000000000
--- a/testsuite/tests/lib/Text.Printf/1548.stdout
+++ /dev/null
@@ -1,3 +0,0 @@
-0.33
-foo
- 00004
diff --git a/testsuite/tests/lib/Text.Printf/Makefile b/testsuite/tests/lib/Text.Printf/Makefile
deleted file mode 100644
index 9101fbd40a..0000000000
--- a/testsuite/tests/lib/Text.Printf/Makefile
+++ /dev/null
@@ -1,3 +0,0 @@
-TOP=../../..
-include $(TOP)/mk/boilerplate.mk
-include $(TOP)/mk/test.mk
diff --git a/testsuite/tests/lib/Text.Printf/all.T b/testsuite/tests/lib/Text.Printf/all.T
deleted file mode 100644
index aa26ff2d96..0000000000
--- a/testsuite/tests/lib/Text.Printf/all.T
+++ /dev/null
@@ -1 +0,0 @@
-test('1548', normal, compile_and_run, [''])
diff --git a/testsuite/tests/lib/Time/Makefile b/testsuite/tests/lib/Time/Makefile
deleted file mode 100644
index 9101fbd40a..0000000000
--- a/testsuite/tests/lib/Time/Makefile
+++ /dev/null
@@ -1,3 +0,0 @@
-TOP=../../..
-include $(TOP)/mk/boilerplate.mk
-include $(TOP)/mk/test.mk
diff --git a/testsuite/tests/lib/Time/T5430.hs b/testsuite/tests/lib/Time/T5430.hs
deleted file mode 100644
index b011ed61ea..0000000000
--- a/testsuite/tests/lib/Time/T5430.hs
+++ /dev/null
@@ -1,8 +0,0 @@
-
-import System.Locale
-import System.Time
-
-main :: IO ()
-main = do let clockTime = TOD 0 0 -- 00:00:00 on 1 Jan 1970
- calTime <- toCalendarTime clockTime
- putStrLn $ formatCalendarTime defaultTimeLocale "%j" calTime
diff --git a/testsuite/tests/lib/Time/T5430.stdout b/testsuite/tests/lib/Time/T5430.stdout
deleted file mode 100644
index 5325a8dff7..0000000000
--- a/testsuite/tests/lib/Time/T5430.stdout
+++ /dev/null
@@ -1 +0,0 @@
-001
diff --git a/testsuite/tests/lib/Time/all.T b/testsuite/tests/lib/Time/all.T
deleted file mode 100644
index 3b310b416e..0000000000
--- a/testsuite/tests/lib/Time/all.T
+++ /dev/null
@@ -1,4 +0,0 @@
-test('time002', normal, compile_and_run, [''])
-test('time003', normal, compile_and_run, [''])
-test('time004', normal, compile_and_run, [''])
-test('T5430', normal, compile_and_run, [''])
diff --git a/testsuite/tests/lib/Time/time002.hs b/testsuite/tests/lib/Time/time002.hs
deleted file mode 100644
index e2f9bcb7a7..0000000000
--- a/testsuite/tests/lib/Time/time002.hs
+++ /dev/null
@@ -1,16 +0,0 @@
-import System.Time
-
--- !!! check that we can read the current ClockTime, convert it
--- !!! to CalendarTime and back again, and that all three times when
--- !!! converted to strings compare equal.
-
-main = do
- t <- getClockTime
- let clock = show t
- c <- toCalendarTime t
- let cal = calendarTimeToString c
- let t2 = toClockTime c
- clock2 = show t2
- if (clock == cal && clock == clock2)
- then putStrLn "Ok."
- else putStrLn "Failed."
diff --git a/testsuite/tests/lib/Time/time002.stdout b/testsuite/tests/lib/Time/time002.stdout
deleted file mode 100644
index 587579af91..0000000000
--- a/testsuite/tests/lib/Time/time002.stdout
+++ /dev/null
@@ -1 +0,0 @@
-Ok.
diff --git a/testsuite/tests/lib/Time/time003.hs b/testsuite/tests/lib/Time/time003.hs
deleted file mode 100644
index 4dda0e466f..0000000000
--- a/testsuite/tests/lib/Time/time003.hs
+++ /dev/null
@@ -1,24 +0,0 @@
-import System.Time
-
-main :: IO ()
-main = do
- time <- getClockTime
- print (plausible (show time))
- let (CalendarTime year month mday hour min sec psec
- wday yday timezone gmtoff isdst) = toUTCTime time
- time2 = wdays !! fromEnum wday ++
- (' ' : months !! fromEnum month) ++
- (' ' : shows2 mday (' ' : shows2 hour (':' : shows2 min (':' : shows2 sec
- (' ' : timezone ++ ' ' : shows year "\n")))))
- print (plausible time2)
-
- where
- wdays = ["Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"]
- months = ["Jan", "Feb", "Mar", "Apr", "May", "Jun",
- "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"]
- shows2 x = showString (pad2 x)
- pad2 x = case show x of
- c@[_] -> '0' : c
- cs -> cs
-
- plausible str = filter (== ':') str == "::" \ No newline at end of file
diff --git a/testsuite/tests/lib/Time/time003.stdout b/testsuite/tests/lib/Time/time003.stdout
deleted file mode 100644
index dbde422651..0000000000
--- a/testsuite/tests/lib/Time/time003.stdout
+++ /dev/null
@@ -1,2 +0,0 @@
-True
-True
diff --git a/testsuite/tests/lib/Time/time004.hs b/testsuite/tests/lib/Time/time004.hs
deleted file mode 100644
index 9a281a10da..0000000000
--- a/testsuite/tests/lib/Time/time004.hs
+++ /dev/null
@@ -1,10 +0,0 @@
-import System.Time
-
-main :: IO ()
-main = do
- time <- getClockTime
- let (CalendarTime year month mday hour min sec psec
- wday yday timezone gmtoff isdst) = toUTCTime time
- time' = toClockTime (CalendarTime (year - 1) month mday hour min sec psec
- wday yday timezone gmtoff isdst)
- print (length (show time) == length (show time'))
diff --git a/testsuite/tests/lib/Time/time004.stdout b/testsuite/tests/lib/Time/time004.stdout
deleted file mode 100644
index 0ca95142bb..0000000000
--- a/testsuite/tests/lib/Time/time004.stdout
+++ /dev/null
@@ -1 +0,0 @@
-True
diff --git a/testsuite/tests/lib/exceptions/Makefile b/testsuite/tests/lib/exceptions/Makefile
deleted file mode 100644
index 9101fbd40a..0000000000
--- a/testsuite/tests/lib/exceptions/Makefile
+++ /dev/null
@@ -1,3 +0,0 @@
-TOP=../../..
-include $(TOP)/mk/boilerplate.mk
-include $(TOP)/mk/test.mk
diff --git a/testsuite/tests/lib/exceptions/all.T b/testsuite/tests/lib/exceptions/all.T
deleted file mode 100644
index 04b3a7fce4..0000000000
--- a/testsuite/tests/lib/exceptions/all.T
+++ /dev/null
@@ -1 +0,0 @@
-test('exceptions001', normal, compile_and_run, [''])
diff --git a/testsuite/tests/lib/exceptions/exceptions001.hs b/testsuite/tests/lib/exceptions/exceptions001.hs
deleted file mode 100644
index f5fcbf0087..0000000000
--- a/testsuite/tests/lib/exceptions/exceptions001.hs
+++ /dev/null
@@ -1,7 +0,0 @@
-
--- trac #2508
-
-import System.Exit
-import Control.OldException
-
-main = exitWith ExitSuccess `finally` return ()
diff --git a/testsuite/tests/lib/haskell98/Makefile b/testsuite/tests/lib/haskell98/Makefile
deleted file mode 100644
index 9101fbd40a..0000000000
--- a/testsuite/tests/lib/haskell98/Makefile
+++ /dev/null
@@ -1,3 +0,0 @@
-TOP=../../..
-include $(TOP)/mk/boilerplate.mk
-include $(TOP)/mk/test.mk
diff --git a/testsuite/tests/lib/haskell98/all.T b/testsuite/tests/lib/haskell98/all.T
deleted file mode 100644
index 85e226fdb7..0000000000
--- a/testsuite/tests/lib/haskell98/all.T
+++ /dev/null
@@ -1 +0,0 @@
-test('instance-leaks', normal, compile, ['-hide-all-packages -package haskell98'])
diff --git a/testsuite/tests/lib/haskell98/instance-leaks.hs b/testsuite/tests/lib/haskell98/instance-leaks.hs
deleted file mode 100644
index 131d42cbd9..0000000000
--- a/testsuite/tests/lib/haskell98/instance-leaks.hs
+++ /dev/null
@@ -1,27 +0,0 @@
--- Check that the instances in Control.Monad.Instances do not leak
--- into any Haskell 98 modules.
-module Main where
-
--- import all Haskell 98 modules
-import Array
-import Char
-import Complex
-import CPUTime
-import Directory
-import IO
-import Ix
-import List
-import Locale
-import Maybe
-import Monad
-import Numeric
-import Random
-import Ratio
-import System
-import Time
-
--- This will fail if any of the Haskell 98 modules indirectly import
--- Control.Monad.Instances
-instance Functor ((->) r) where fmap = (.)
-
-main = undefined
diff --git a/testsuite/tests/lib/integer/Makefile b/testsuite/tests/lib/integer/Makefile
index 0d289817a3..227362d72c 100644
--- a/testsuite/tests/lib/integer/Makefile
+++ b/testsuite/tests/lib/integer/Makefile
@@ -28,5 +28,20 @@ integerConstantFolding:
$(call CHECK,\<196\>,divModInteger)
$(call CHECK,\<1600976\>,shiftLInteger)
$(call CHECK,\<6253\>,shiftRInteger)
+ $(call CHECK,\<641\>,quotInteger)
+ $(call CHECK,\<68\>,remInteger)
+ $(call CHECK,\<200131.0\>,doubleFromInteger)
+ $(call CHECK,\<200135.0\>,floatFromInteger)
+ $(call CHECK,\<400276.0\>,encodeIntegerDouble)
+ $(call CHECK,\<400280.0\>,encodeIntegerFloat)
./integerConstantFolding
+.PHONY: fromToInteger
+fromToInteger:
+ '$(TEST_HC)' -Wall -v0 -O -c fromToInteger.hs -fforce-recomp -ddump-simpl > fromToInteger.simpl
+# Rules should eliminate all functions
+ -grep integerToInt fromToInteger.simpl
+ -grep smallInteger fromToInteger.simpl
+ -grep integerToWord fromToInteger.simpl
+ -grep wordToInteger fromToInteger.simpl
+
diff --git a/testsuite/tests/lib/integer/all.T b/testsuite/tests/lib/integer/all.T
index ecff8fb6ce..8b2775342c 100644
--- a/testsuite/tests/lib/integer/all.T
+++ b/testsuite/tests/lib/integer/all.T
@@ -4,4 +4,8 @@ test('integerConstantFolding',
extra_clean(['integerConstantFolding.simpl']),
run_command,
['$MAKE -s --no-print-directory integerConstantFolding'])
+test('fromToInteger',
+ extra_clean(['fromToInteger.simpl']),
+ run_command,
+ ['$MAKE -s --no-print-directory fromToInteger'])
diff --git a/testsuite/tests/lib/integer/fromToInteger.hs b/testsuite/tests/lib/integer/fromToInteger.hs
new file mode 100644
index 0000000000..c36153864c
--- /dev/null
+++ b/testsuite/tests/lib/integer/fromToInteger.hs
@@ -0,0 +1,14 @@
+
+{-# LANGUAGE MagicHash #-}
+
+module Q where
+
+import GHC.Exts
+import GHC.Integer
+
+v :: Int
+v = I# (integerToInt (smallInteger 3#))
+
+w :: Word
+w = W# (integerToWord (wordToInteger 3##))
+
diff --git a/testsuite/tests/lib/integer/integerConstantFolding.hs b/testsuite/tests/lib/integer/integerConstantFolding.hs
index a5603bd04b..16aecfe19d 100644
--- a/testsuite/tests/lib/integer/integerConstantFolding.hs
+++ b/testsuite/tests/lib/integer/integerConstantFolding.hs
@@ -44,6 +44,12 @@ main = do p "plusInteger" plusInteger
p "divModInteger" divModInteger
p "shiftLInteger" shiftLInteger
p "shiftRInteger" shiftRInteger
+ p "quotInteger" quotInteger
+ p "remInteger" remInteger
+ p "doubleFromInteger" doubleFromInteger
+ p "floatFromInteger" floatFromInteger
+ p "encodeIntegerDouble" encodeIntegerDouble
+ p "encodeIntegerFloat" encodeIntegerFloat
where p :: Show a => String -> a -> IO ()
p str x = putStrLn (str ++ ": " ++ show x)
@@ -151,3 +157,25 @@ shiftLInteger = 100061 `shiftL` 4
shiftRInteger :: Integer
shiftRInteger = 100062 `shiftR` 4
+quotInteger :: Integer
+quotInteger = 100063 `quot` 156
+
+remInteger :: Integer
+remInteger = 100064 `rem` 156
+
+-- For the conversion functions, we can't just check that e.g. 100065
+-- is in the resulting core, because it will be regardless of whether
+-- the rules fire or not. So we add 100066, and thus rely on the
+-- Double addition rule also firing.
+doubleFromInteger :: Double
+doubleFromInteger = fromInteger 100065 + 100066
+
+floatFromInteger :: Float
+floatFromInteger = fromInteger 100067 + 100068
+
+encodeIntegerDouble :: Double
+encodeIntegerDouble = encodeFloat 100069 2
+
+encodeIntegerFloat :: Float
+encodeIntegerFloat = encodeFloat 100070 2
+
diff --git a/testsuite/tests/lib/integer/integerConstantFolding.stdout b/testsuite/tests/lib/integer/integerConstantFolding.stdout
index dba50138f0..2a241a3a83 100644
--- a/testsuite/tests/lib/integer/integerConstantFolding.stdout
+++ b/testsuite/tests/lib/integer/integerConstantFolding.stdout
@@ -38,3 +38,9 @@ quotRemInteger: (813,60)
divModInteger: (219,196)
shiftLInteger: 1600976
shiftRInteger: 6253
+quotInteger: 641
+remInteger: 68
+doubleFromInteger: 200131.0
+floatFromInteger: 200135.0
+encodeIntegerDouble: 400276.0
+encodeIntegerFloat: 400280.0
diff --git a/testsuite/tests/lib/libposix/Makefile b/testsuite/tests/lib/libposix/Makefile
deleted file mode 100644
index 9101fbd40a..0000000000
--- a/testsuite/tests/lib/libposix/Makefile
+++ /dev/null
@@ -1,3 +0,0 @@
-TOP=../../..
-include $(TOP)/mk/boilerplate.mk
-include $(TOP)/mk/test.mk
diff --git a/testsuite/tests/lib/libposix/posix001.hs b/testsuite/tests/lib/libposix/posix001.hs
deleted file mode 100644
index ed20df7939..0000000000
--- a/testsuite/tests/lib/libposix/posix001.hs
+++ /dev/null
@@ -1,24 +0,0 @@
-module Main(main) where
-
-import Posix
-
-main :: IO ()
-main = do
- ppid <- getParentProcessID
- pid <- getProcessID
- putStr "Parent Process ID: "
- print ppid
- putStr "Process ID: "
- print pid
- putStr "forking ps ux"
- print ppid
- child <- forkProcess
- case child of
- Nothing -> executeFile "ps" True ["ux" ++ show ppid] Nothing
- Just x -> doParent x pid
-
-doParent cpid pid = do
- getProcessStatus True False cpid
- putStr "\nChild finished. Now exec'ing ps ux\n"
- print pid
- executeFile "ps" True ["ux" ++ show pid] Nothing
diff --git a/testsuite/tests/lib/libposix/posix001.stdout b/testsuite/tests/lib/libposix/posix001.stdout
deleted file mode 100644
index c9cd245bbe..0000000000
--- a/testsuite/tests/lib/libposix/posix001.stdout
+++ /dev/null
@@ -1,4 +0,0 @@
-USER PID %CPU %MEM SIZE RSS TTY STAT START TIME COMMAND
-sof 30160 0.0 0.2 1244 648 p0 S 15:09 0:00 /bin/sh -c ./posix001
-USER PID %CPU %MEM SIZE RSS TTY STAT START TIME COMMAND
-sof 30161 0.0 0.1 892 336 p0 R 15:09 0:00 ps ux30161
diff --git a/testsuite/tests/lib/libposix/posix002.hs b/testsuite/tests/lib/libposix/posix002.hs
deleted file mode 100644
index 8d01e8b69f..0000000000
--- a/testsuite/tests/lib/libposix/posix002.hs
+++ /dev/null
@@ -1,4 +0,0 @@
-import Posix
-
-main =
- executeFile "printenv" True [] (Just [("ONE","1"),("TWO","2")])
diff --git a/testsuite/tests/lib/libposix/posix002.stdout b/testsuite/tests/lib/libposix/posix002.stdout
deleted file mode 100644
index 5e17a60f42..0000000000
--- a/testsuite/tests/lib/libposix/posix002.stdout
+++ /dev/null
@@ -1,2 +0,0 @@
-ONE=1
-TWO=2
diff --git a/testsuite/tests/lib/libposix/posix003.hs b/testsuite/tests/lib/libposix/posix003.hs
deleted file mode 100644
index dbea5e1d9b..0000000000
--- a/testsuite/tests/lib/libposix/posix003.hs
+++ /dev/null
@@ -1,6 +0,0 @@
-import IO
-import Posix
-
-main =
- openFile "po003.out" WriteMode >>= \ h ->
- runProcess "pwd" [] Nothing (Just "/usr/tmp") Nothing (Just h) Nothing
diff --git a/testsuite/tests/lib/libposix/posix003.stdout b/testsuite/tests/lib/libposix/posix003.stdout
deleted file mode 100644
index e69de29bb2..0000000000
--- a/testsuite/tests/lib/libposix/posix003.stdout
+++ /dev/null
diff --git a/testsuite/tests/lib/libposix/posix004.hs b/testsuite/tests/lib/libposix/posix004.hs
deleted file mode 100644
index 2423f3f77a..0000000000
--- a/testsuite/tests/lib/libposix/posix004.hs
+++ /dev/null
@@ -1,58 +0,0 @@
-import Posix
-import System(ExitCode(..), exitWith)
-
-main =
- forkProcess >>= \ maybe_pid ->
- case maybe_pid of
- Nothing -> raiseSignal floatingPointException
- _ -> doParent
-
-doParent =
- getAnyProcessStatus True False >>= \ (Just (pid, tc)) ->
- case tc of
- Terminated sig | sig == floatingPointException -> forkChild2
- _ -> fail (userError "unexpected termination cause")
-
-forkChild2 =
- forkProcess >>= \ maybe_pid ->
- case maybe_pid of
- Nothing -> exitImmediately (ExitFailure 42)
- _ -> doParent2
-
-doParent2 =
- getAnyProcessStatus True False >>= \ (Just (pid, tc)) ->
- case tc of
- Exited (ExitFailure 42) -> forkChild3
- _ -> fail (userError "unexpected termination cause (2)")
-
-forkChild3 =
- forkProcess >>= \ maybe_pid ->
- case maybe_pid of
- Nothing -> exitImmediately (ExitSuccess)
- _ -> doParent3
-
-doParent3 =
- getAnyProcessStatus True False >>= \ (Just (pid, tc)) ->
- case tc of
- Exited ExitSuccess -> forkChild4
- _ -> fail (userError "unexpected termination cause (3)")
-
-forkChild4 =
- forkProcess >>= \ maybe_pid ->
- case maybe_pid of
- Nothing -> raiseSignal softwareStop
- _ -> doParent4
-
-doParent4 =
- getAnyProcessStatus True True >>= \ (Just (pid, tc)) ->
- case tc of
- Stopped sig | sig == softwareStop -> enoughAlready pid
- _ -> fail (userError "unexpected termination cause (4)")
-
-enoughAlready pid =
- signalProcess killProcess pid >>
- getAnyProcessStatus True True >>= \ (Just (pid, tc)) ->
- case tc of
- Terminated sig | sig == killProcess -> putStr "I'm happy.\n"
- _ -> fail (userError "unexpected termination cause (5)")
-
diff --git a/testsuite/tests/lib/libposix/posix004.stdout b/testsuite/tests/lib/libposix/posix004.stdout
deleted file mode 100644
index 8ed7ee54d5..0000000000
--- a/testsuite/tests/lib/libposix/posix004.stdout
+++ /dev/null
@@ -1 +0,0 @@
-I'm happy.
diff --git a/testsuite/tests/lib/libposix/posix005.hs b/testsuite/tests/lib/libposix/posix005.hs
deleted file mode 100644
index a53182971a..0000000000
--- a/testsuite/tests/lib/libposix/posix005.hs
+++ /dev/null
@@ -1,25 +0,0 @@
-import Posix
-import IO
-main =
- hSetBuffering stdout NoBuffering >>
- getEnvVar "TERM" >>= \ term ->
- putStrLn term >>
- setEnvironment [("one","1"),("two","2")] >>
- getEnvironment >>= \ env ->
- print env >>
- setEnvVar "foo" "bar" >>
- getEnvironment >>= \ env ->
- print env >>
- setEnvVar "foo" "baz" >>
- getEnvironment >>= \ env ->
- print env >>
- setEnvVar "fu" "bar" >>
- getEnvironment >>= \ env ->
- print env >>
- removeEnvVar "foo" >>
- getEnvironment >>= \ env ->
- print env >>
- setEnvironment [] >>
- getEnvironment >>= \ env ->
- print env
-
diff --git a/testsuite/tests/lib/libposix/posix005.stdout b/testsuite/tests/lib/libposix/posix005.stdout
deleted file mode 100644
index 9896f43da7..0000000000
--- a/testsuite/tests/lib/libposix/posix005.stdout
+++ /dev/null
@@ -1,7 +0,0 @@
-emacs
-[("one","1"),("two","2")]
-[("one","1"),("two","2"),("foo","bar")]
-[("one","1"),("two","2"),("foo","baz")]
-[("one","1"),("two","2"),("foo","baz"),("fu","bar")]
-[("one","1"),("two","2"),("fu","bar")]
-[]
diff --git a/testsuite/tests/lib/libposix/posix006.hs b/testsuite/tests/lib/libposix/posix006.hs
deleted file mode 100644
index eb6451dd73..0000000000
--- a/testsuite/tests/lib/libposix/posix006.hs
+++ /dev/null
@@ -1,14 +0,0 @@
-import Posix
-
-main =
- epochTime >>= \ start ->
- sleep 5 >>
- let timeleft = 0 in
- epochTime >>= \ finish ->
- putStr "Started: " >>
- print start >>
- putStr "\nSlept: " >>
- print (5 - timeleft) >>
- putStr "\nFinished: " >>
- print finish >>
- putChar '\n'
diff --git a/testsuite/tests/lib/libposix/posix006.stdout b/testsuite/tests/lib/libposix/posix006.stdout
deleted file mode 100644
index d66a4ff4ab..0000000000
--- a/testsuite/tests/lib/libposix/posix006.stdout
+++ /dev/null
@@ -1,6 +0,0 @@
-Started: 902585354
-
-Slept: 5
-
-Finished: 902585359
-
diff --git a/testsuite/tests/lib/libposix/posix007.hs b/testsuite/tests/lib/libposix/posix007.hs
deleted file mode 100644
index 2e62820511..0000000000
--- a/testsuite/tests/lib/libposix/posix007.hs
+++ /dev/null
@@ -1,34 +0,0 @@
-import Posix
-
--- This test is an example of where something more sophisticated than runstdtest
--- is required, as its interactive.
-
-main = do
- installHandler keyboardSignal (Catch doCtrlC) Nothing
- ta <- getTerminalAttributes stdInput
- case (controlChar ta Interrupt) of
- Nothing -> fixMe ta
- Just x -> continue x
-
-fixMe ta = do
- putStr "Oops...no interrupt character?\nI can fix that...\n"
- setTerminalAttributes stdInput (withCC ta (Interrupt, '\ETX')) Immediately
- ta <- getTerminalAttributes stdInput
- case (controlChar ta Interrupt) of
- Nothing -> putStr "...Then again, maybe I can't\n"
- Just x -> continue x
-
-continue x =
- putStr "Press '"
- putStr (ccStr x)
- putStr "'.\n"
- awaitSignal Nothing
- putStr "How did I get here?\n"
-
-doCtrlC =
- putStr "Caught an interrupt.\n"
-
-ccStr '\DEL' = "^?"
-ccStr x
- | x >= ' ' = [x]
- | otherwise = ['^', (toEnum (fromEnum x + fromEnum '@'))]
diff --git a/testsuite/tests/lib/libposix/posix007.stdout b/testsuite/tests/lib/libposix/posix007.stdout
deleted file mode 100644
index a69478b004..0000000000
--- a/testsuite/tests/lib/libposix/posix007.stdout
+++ /dev/null
@@ -1,2 +0,0 @@
-Press '^C'.
-Caught an interrupt.
diff --git a/testsuite/tests/lib/libposix/posix008.hs b/testsuite/tests/lib/libposix/posix008.hs
deleted file mode 100644
index 249e58eedc..0000000000
--- a/testsuite/tests/lib/libposix/posix008.hs
+++ /dev/null
@@ -1,12 +0,0 @@
-import Posix
-
-main =
- installHandler realTimeAlarm (Catch alarmclock) Nothing >>
- putStr "Scheduling an alarm in 5 seconds...\n" >>
- scheduleAlarm 5 >>
- putStr "Sleeping one minute.\n" >>
- sleep 60 >>
- putStr "How did I get here?\n"
-
-alarmclock =
- putStr "The alarm went off.\n"
diff --git a/testsuite/tests/lib/libposix/posix008.stdout b/testsuite/tests/lib/libposix/posix008.stdout
deleted file mode 100644
index 582d22b225..0000000000
--- a/testsuite/tests/lib/libposix/posix008.stdout
+++ /dev/null
@@ -1,3 +0,0 @@
-Scheduling an alarm in 5 seconds...
-Sleeping one minute.
-The alarm went off.
diff --git a/testsuite/tests/lib/libposix/posix009.hs b/testsuite/tests/lib/libposix/posix009.hs
deleted file mode 100644
index 1f230f648c..0000000000
--- a/testsuite/tests/lib/libposix/posix009.hs
+++ /dev/null
@@ -1,15 +0,0 @@
-import Posix
-
-main =
- putStr "Blocking real time alarms.\n" >>
- blockSignals (addSignal realTimeAlarm emptySignalSet) >>
- putStr "Scheduling an alarm in 2 seconds...\n" >>
- scheduleAlarm 2 >>
- putStr "Sleeping 5 seconds.\n" >>
- sleep 5 >>
- putStrLn "Woken up" >>
- getPendingSignals >>= \ ints ->
- putStr "Checking pending interrupts for RealTimeAlarm\n" >>
- print (inSignalSet realTimeAlarm ints) >>
- putChar '\n'
-
diff --git a/testsuite/tests/lib/libposix/posix009.stdout b/testsuite/tests/lib/libposix/posix009.stdout
deleted file mode 100644
index e69de29bb2..0000000000
--- a/testsuite/tests/lib/libposix/posix009.stdout
+++ /dev/null
diff --git a/testsuite/tests/lib/libposix/posix010.hs b/testsuite/tests/lib/libposix/posix010.hs
deleted file mode 100644
index 83d5f27ee0..0000000000
--- a/testsuite/tests/lib/libposix/posix010.hs
+++ /dev/null
@@ -1,24 +0,0 @@
-import Posix
-
-main =
- getUserEntryForName "sof" >>= \ sof ->
- getUserEntryForName "partain" >>= \ partain ->
- putStr (ue2String sof) >>
- putChar '\n' >>
- putStr (ue2String partain) >>
- putChar '\n' >>
- getUserEntryForID (userID sof) >>= \ muid ->
- getUserEntryForID (userID partain) >>= \ puid ->
- putStr (ue2String muid) >>
- putChar '\n' >>
- putStr (ue2String puid) >>
- putChar '\n'
-
-ue2String ue =
- name ++ (':' : (show uid) ++ (':' : (show gid) ++ (':' : home ++ (':' : shell))))
- where
- name = userName ue
- uid = userID ue
- gid = userGroupID ue
- home = homeDirectory ue
- shell = userShell ue
diff --git a/testsuite/tests/lib/libposix/posix010.stdout b/testsuite/tests/lib/libposix/posix010.stdout
deleted file mode 100644
index ec1d729853..0000000000
--- a/testsuite/tests/lib/libposix/posix010.stdout
+++ /dev/null
@@ -1,4 +0,0 @@
-mattson:104:401:/users/fp/mattson:/bin/csh
-partain:184:401:/users/fp/partain:/usr/local/bin/tcsh
-mattson:104:401:/users/fp/mattson:/bin/csh
-partain:184:401:/users/fp/partain:/usr/local/bin/tcsh
diff --git a/testsuite/tests/lib/libposix/posix011.hs b/testsuite/tests/lib/libposix/posix011.hs
deleted file mode 100644
index f8baf1cbc2..0000000000
--- a/testsuite/tests/lib/libposix/posix011.hs
+++ /dev/null
@@ -1,22 +0,0 @@
-import Posix
-
-main =
- getGroupEntryForName "grasp" >>= \ grasp ->
- getGroupEntryForName "staff" >>= \ staff ->
- putStr (ge2String grasp) >>
- putChar '\n' >>
- putStr (ge2String staff) >>
- putChar '\n' >>
- getGroupEntryForID (groupID grasp) >>= \ guid ->
- getGroupEntryForID (groupID staff) >>= \ suid ->
- putStr (ge2String guid) >>
- putChar '\n' >>
- putStr (ge2String suid) >>
- putChar '\n'
-
-ge2String ge =
- name ++ (':' : (show gid) ++ (':' : members))
- where
- name = groupName ge
- gid = groupID ge
- members = foldr (\x y -> x ++ (',' : y)) "" (groupMembers ge)
diff --git a/testsuite/tests/lib/libposix/posix011.stdout b/testsuite/tests/lib/libposix/posix011.stdout
deleted file mode 100644
index 11b5df4f1b..0000000000
--- a/testsuite/tests/lib/libposix/posix011.stdout
+++ /dev/null
@@ -1,4 +0,0 @@
-grasp:401:andre,andy,ap,areid,cvh,dm,dnt,gnik,grasp,hwloidl,jan,johan,jonathan,jtod,kh,laszlo,mattson,partain,sansom,satnam,sewardj,sharpkm,simonm,simonpj,sof,trinder,wadler,
-staff:9:aileen,alexa,ali,alison,andy,anne,ansftp,aran,arthur,audit,bill,botech,bw,carol,carron,cathy,conftp,cs2head,cvh,dam,darryn,daw,dcg,debbie,del,deptlib,dkm,dlg,dm,dnt,ellen,f131mgr,fabio,fairouz,faxback,fido,finance,fiona,footsie,george,gilbert,gilles,gsm,handbook,harrismi,helen,hme,hmg,huw,iain,id,igr,iii,imis-doc,imm,inei,infoman,ingres,inventdb,irfest,isabel,jacksonn,jacqui,james,janice,jej,jim,jl,jmm,johnson,jon,jstack,jtod,jwp,keith,kempj,kh,kieran,kimb,kirsten,kmssys,laurent,lewis,lisa,lizbeth,logiej,love,lyons,maclib,macneisd,margaret,mark,mary,mattson,meurig,mjj,mmi,monica,mossin,mpa,muffy,nk,norman,partain,pd,pdg,pete,pp,ps,quintin,rab,ray,rdm,reh,replib,rff,rffingres,rich,rios,rjw,rn,ron,ruffin,rwi,sanderso,sandy,sansom,satnam,sheila,sid,simonm,simonpj,slurry,softlib,stephen,steve,stevem,stuart,support,susan,tania,tech,teresa,tfm,tommyk,tracy,trinder,types,typesftp,wadler,wf,xadmin,
-grasp:401:andre,andy,ap,areid,cvh,dm,dnt,gnik,grasp,hwloidl,jan,johan,jonathan,jtod,kh,laszlo,mattson,partain,sansom,satnam,sewardj,sharpkm,simonm,simonpj,sof,trinder,wadler,
-staff:9:aileen,alexa,ali,alison,andy,anne,ansftp,aran,arthur,audit,bill,botech,bw,carol,carron,cathy,conftp,cs2head,cvh,dam,darryn,daw,dcg,debbie,del,deptlib,dkm,dlg,dm,dnt,ellen,f131mgr,fabio,fairouz,faxback,fido,finance,fiona,footsie,george,gilbert,gilles,gsm,handbook,harrismi,helen,hme,hmg,huw,iain,id,igr,iii,imis-doc,imm,inei,infoman,ingres,inventdb,irfest,isabel,jacksonn,jacqui,james,janice,jej,jim,jl,jmm,johnson,jon,jstack,jtod,jwp,keith,kempj,kh,kieran,kimb,kirsten,kmssys,laurent,lewis,lisa,lizbeth,logiej,love,lyons,maclib,macneisd,margaret,mark,mary,mattson,meurig,mjj,mmi,monica,mossin,mpa,muffy,nk,norman,partain,pd,pdg,pete,pp,ps,quintin,rab,ray,rdm,reh,replib,rff,rffingres,rich,rios,rjw,rn,ron,ruffin,rwi,sanderso,sandy,sansom,satnam,sheila,sid,simonm,simonpj,slurry,softlib,stephen,steve,stevem,stuart,support,susan,tania,tech,teresa,tfm,tommyk,tracy,trinder,types,typesftp,wadler,wf,xadmin,
diff --git a/testsuite/tests/lib/libposix/posix012.hs b/testsuite/tests/lib/libposix/posix012.hs
deleted file mode 100644
index 87f002a6cd..0000000000
--- a/testsuite/tests/lib/libposix/posix012.hs
+++ /dev/null
@@ -1,59 +0,0 @@
-import Posix
-import IO -- 1.3
-
-main =
- createFile "po012.out" stdFileMode >>= \ fd ->
- installHandler processStatusChanged (Catch (reap1 fd)) Nothing >>
- ls >>
- awaitSignal Nothing
-
-ls =
- runProcess "ls" ["-l"] Nothing Nothing Nothing Nothing Nothing
-
-reap1 fd =
- hPutStrLn stderr "Reaper1" >>
- getAnyProcessStatus True False >>
- installHandler processStatusChanged (Catch (reap2 fd)) Nothing >>
- fdWrite fd (take 666 (repeat 'x')) >>
- ls >>
- awaitSignal Nothing
-
-reap2 fd =
- hPutStrLn stderr "Reaper2" >>
- getAnyProcessStatus True False >>
- installHandler processStatusChanged (Catch (reap3 fd)) Nothing >>
- setFileMode "po012.out"
- (foldr1 unionFileModes [ownerReadMode,ownerWriteMode,groupReadMode,otherReadMode]) >>
- ls >>
- awaitSignal Nothing
-
-reap3 fd =
- hPutStrLn stderr "Reaper3" >>
- getAnyProcessStatus True False >>
- installHandler processStatusChanged (Catch (reap4 fd)) Nothing >>
- setFileTimes "po012.out" 0 0 >>
- ls >>
- awaitSignal Nothing
-
-reap4 fd =
- hPutStrLn stderr "Reaper4" >>
- getAnyProcessStatus True False >>
- installHandler processStatusChanged (Catch (reap5 fd)) Nothing >>
- --removeLink "po012.out" >>
- ls >>
- awaitSignal Nothing
-
-reap5 fd =
- hPutStrLn stderr "Reaper5" >>
- getAnyProcessStatus True False >>
- fdSeek fd SeekFromEnd 0 >>= \ bytes ->
- if bytes == 666 then
- fdSeek fd AbsoluteSeek 0 >>
- hPutStrLn stderr "Reaper5" >>
- fdRead fd 666 >>= \ (str, _) ->
- if str == (take 666 (repeat 'x')) then
- putStr "Okay\n"
- else
- putStr "Read failed\n"
- else
- putStr "Seek returned wrong size\n"
diff --git a/testsuite/tests/lib/libposix/posix012.stdout b/testsuite/tests/lib/libposix/posix012.stdout
deleted file mode 100644
index e69de29bb2..0000000000
--- a/testsuite/tests/lib/libposix/posix012.stdout
+++ /dev/null
diff --git a/testsuite/tests/lib/libposix/posix013.hs b/testsuite/tests/lib/libposix/posix013.hs
deleted file mode 100644
index b78930b44e..0000000000
--- a/testsuite/tests/lib/libposix/posix013.hs
+++ /dev/null
@@ -1,21 +0,0 @@
---!! Querying for system information.
-module Main(main) where
-
-import Posix
-
-main = do
- sid <- getSystemID
- let
- info =
- [ "Node Name: " , nodeName sid
- , "OS: " , systemName sid
- , "Arch: " , machine sid
- , "Version: " , version sid
- , "Release: " , release sid
- ]
- putStrLn2 info
-
-putStrLn2 :: [String] -> IO ()
-putStrLn2 [] = return ()
-putStrLn2 [x] = putStrLn x
-putStrLn2 (x1:x2:xs) = putStrLn (x1++x2) >> putStrLn2 xs
diff --git a/testsuite/tests/lib/libposix/posix014.hs b/testsuite/tests/lib/libposix/posix014.hs
deleted file mode 100644
index bb3518c440..0000000000
--- a/testsuite/tests/lib/libposix/posix014.hs
+++ /dev/null
@@ -1,19 +0,0 @@
---!! Basic pipe usage
-module Main(main) where
-
-import Posix
-
-main = do
- str <- getEffectiveUserName
- putStrLn str
- (rd, wd) <- createPipe
- n <- forkProcess
- case n of
- Nothing -> do
- (str,_) <- fdRead rd 32
- -- avoid them zombies
- putStrLn str
- Just pid -> do
- fdWrite wd "Hi, there - forked child calling"
--- getProcessStatus False True pid
- return ()
diff --git a/testsuite/tests/lib/should_run/4006.hs b/testsuite/tests/lib/should_run/4006.hs
deleted file mode 100644
index 662b0f62e3..0000000000
--- a/testsuite/tests/lib/should_run/4006.hs
+++ /dev/null
@@ -1,8 +0,0 @@
-import System.Process
-
-testUnicode :: String -> IO String
-testUnicode str = readProcess "printf" ["%s", str] ""
-
-main = do
- testUnicode "It works here" >>= putStrLn
- testUnicode "РздеÑÑŒ ÑломалоÑÑŒ" >>= putStrLn
diff --git a/testsuite/tests/lib/should_run/4006.stdout b/testsuite/tests/lib/should_run/4006.stdout
deleted file mode 100644
index 9db8a8ced2..0000000000
--- a/testsuite/tests/lib/should_run/4006.stdout
+++ /dev/null
@@ -1,2 +0,0 @@
-It works here
-РздеÑÑŒ ÑломалоÑÑŒ
diff --git a/testsuite/tests/lib/should_run/Makefile b/testsuite/tests/lib/should_run/Makefile
deleted file mode 100644
index 9101fbd40a..0000000000
--- a/testsuite/tests/lib/should_run/Makefile
+++ /dev/null
@@ -1,3 +0,0 @@
-TOP=../../..
-include $(TOP)/mk/boilerplate.mk
-include $(TOP)/mk/test.mk
diff --git a/testsuite/tests/lib/should_run/Memo1.lhs b/testsuite/tests/lib/should_run/Memo1.lhs
deleted file mode 100644
index 796f6121e4..0000000000
--- a/testsuite/tests/lib/should_run/Memo1.lhs
+++ /dev/null
@@ -1,142 +0,0 @@
-% $Id: Memo.lhs,v 1.1 2005/12/16 10:46:05 simonmar Exp $
-%
-% (c) The GHC Team, 1999
-%
-% Hashing memo tables.
-
-\begin{code}
-{-# LANGUAGE CPP #-}
-
-module Memo1
- {-# DEPRECATED "This module is unmaintained, and will disappear soon" #-}
-#ifndef __PARALLEL_HASKELL__
- ( memo -- :: (a -> b) -> a -> b
- , memoSized -- :: Int -> (a -> b) -> a -> b
- )
-#endif
- where
-
-#ifndef __PARALLEL_HASKELL__
-
-import System.Mem.StableName ( StableName, makeStableName, hashStableName )
-import System.Mem.Weak ( Weak, mkWeakPtr, mkWeak, deRefWeak, finalize )
-import Data.Array.IO ( IOArray, newArray, readArray, writeArray )
-import System.IO.Unsafe ( unsafePerformIO )
-import Control.Concurrent.MVar ( MVar, newMVar, putMVar, takeMVar )
-\end{code}
-
------------------------------------------------------------------------------
-Memo table representation.
-
-The representation is this: a fixed-size hash table where each bucket
-is a list of table entries, of the form (key,value).
-
-The key in this case is (StableName key), and we use hashStableName to
-hash it.
-
-It's important that we can garbage collect old entries in the table
-when the key is no longer reachable in the heap. Hence the value part
-of each table entry is (Weak val), where the weak pointer "key" is the
-key for our memo table, and 'val' is the value of this memo table
-entry. When the key becomes unreachable, a finalizer will fire and
-remove this entry from the hash bucket, and further attempts to
-dereference the weak pointer will return Nothing. References from
-'val' to the key are ignored (see the semantics of weak pointers in
-the documentation).
-
-\begin{code}
-type MemoTable key val
- = MVar (
- Int, -- current table size
- IOArray Int [MemoEntry key val] -- hash table
- )
-
--- a memo table entry: compile with -funbox-strict-fields to eliminate
--- the boxes around the StableName and Weak fields.
-data MemoEntry key val = MemoEntry !(StableName key) !(Weak val)
-\end{code}
-
-We use an MVar to the hash table, so that several threads may safely
-access it concurrently. This includes the finalization threads that
-remove entries from the table.
-
-ToDo: Can efficiency be improved at all?
-
-\begin{code}
-memo :: (a -> b) -> a -> b
-memo f = memoSized default_table_size f
-
-default_table_size = 1001
-
--- Our memo functions are *strict*. Lazy memo functions tend to be
--- less useful because it is less likely you'll get a memo table hit
--- for a thunk. This change was made to match Hugs's Memo
--- implementation, and as the result of feedback from Conal Elliot
--- <conal@microsoft.com>.
-
-memoSized :: Int -> (a -> b) -> a -> b
-memoSized size f = strict (lazyMemoSized size f)
-
-strict = ($!)
-
-lazyMemoSized :: Int -> (a -> b) -> a -> b
-lazyMemoSized size f =
- let (table,weak) = unsafePerformIO (
- do { tbl <- newArray (0,size) []
- ; mvar <- newMVar (size,tbl)
- ; weak <- mkWeakPtr mvar (Just (table_finalizer tbl size))
- ; return (mvar,weak)
- })
- in memo' f table weak
-
-table_finalizer :: IOArray Int [MemoEntry key val] -> Int -> IO ()
-table_finalizer table size =
- sequence_ [ finalizeBucket i | i <- [0..size] ]
- where
- finalizeBucket i = do
- bucket <- readArray table i
- sequence_ [ finalize w | MemoEntry _ w <- bucket ]
-
-memo' :: (a -> b) -> MemoTable a b -> Weak (MemoTable a b) -> a -> b
-memo' f ref weak_ref = \k -> unsafePerformIO $ do
- stable_key <- makeStableName k
- (size, table) <- takeMVar ref
- let hash_key = hashStableName stable_key `mod` size
- bucket <- readArray table hash_key
- lkp <- lookupSN stable_key bucket
-
- case lkp of
- Just result -> do
- putMVar ref (size,table)
- return result
- Nothing -> do
- let result = f k
- weak <- mkWeak k result (Just (finalizer hash_key stable_key weak_ref))
- writeArray table hash_key (MemoEntry stable_key weak : bucket)
- putMVar ref (size,table)
- return result
-
-finalizer :: Int -> StableName a -> Weak (MemoTable a b) -> IO ()
-finalizer hash_key stable_key weak_ref =
- do r <- deRefWeak weak_ref
- case r of
- Nothing -> return ()
- Just mvar -> do
- (size,table) <- takeMVar mvar
- bucket <- readArray table hash_key
- let new_bucket = [ e | e@(MemoEntry sn weak) <- bucket,
- sn /= stable_key ]
- writeArray table hash_key new_bucket
- putMVar mvar (size,table)
-
-lookupSN :: StableName key -> [MemoEntry key val] -> IO (Maybe val)
-lookupSN sn [] = sn `seq` return Nothing -- make it strict in sn
-lookupSN sn (MemoEntry sn' weak : xs)
- | sn == sn' = do maybe_item <- deRefWeak weak
- case maybe_item of
- Nothing -> error ("dead weak pair: " ++
- show (hashStableName sn))
- Just v -> return (Just v)
- | otherwise = lookupSN sn xs
-#endif
-\end{code}
diff --git a/testsuite/tests/lib/should_run/Memo2.lhs b/testsuite/tests/lib/should_run/Memo2.lhs
deleted file mode 100644
index 5193ec2899..0000000000
--- a/testsuite/tests/lib/should_run/Memo2.lhs
+++ /dev/null
@@ -1,142 +0,0 @@
-% $Id: Memo.lhs,v 1.1 2005/12/16 10:46:05 simonmar Exp $
-%
-% (c) The GHC Team, 1999
-%
-% Hashing memo tables.
-
-\begin{code}
-{-# LANGUAGE CPP #-}
-
-module Memo2
- {-# DEPRECATED "This module is unmaintained, and will disappear soon" #-}
-#ifndef __PARALLEL_HASKELL__
- ( memo -- :: (a -> b) -> a -> b
- , memoSized -- :: Int -> (a -> b) -> a -> b
- )
-#endif
- where
-
-#ifndef __PARALLEL_HASKELL__
-
-import System.Mem.StableName ( StableName, makeStableName, hashStableName )
-import System.Mem.Weak ( Weak, mkWeakPtr, mkWeak, deRefWeak, finalize )
-import Data.Array.IO ( IOArray, newArray, readArray, writeArray )
-import System.IO.Unsafe ( unsafePerformIO )
-import Control.Concurrent.MVar ( MVar, newMVar, putMVar, takeMVar )
-\end{code}
-
------------------------------------------------------------------------------
-Memo table representation.
-
-The representation is this: a fixed-size hash table where each bucket
-is a list of table entries, of the form (key,value).
-
-The key in this case is (StableName key), and we use hashStableName to
-hash it.
-
-It's important that we can garbage collect old entries in the table
-when the key is no longer reachable in the heap. Hence the value part
-of each table entry is (Weak val), where the weak pointer "key" is the
-key for our memo table, and 'val' is the value of this memo table
-entry. When the key becomes unreachable, a finalizer will fire and
-remove this entry from the hash bucket, and further attempts to
-dereference the weak pointer will return Nothing. References from
-'val' to the key are ignored (see the semantics of weak pointers in
-the documentation).
-
-\begin{code}
-type MemoTable key val
- = MVar (
- Int, -- current table size
- IOArray Int [MemoEntry key val] -- hash table
- )
-
--- a memo table entry: compile with -funbox-strict-fields to eliminate
--- the boxes around the StableName and Weak fields.
-data MemoEntry key val = MemoEntry !(StableName key) !(Weak val)
-\end{code}
-
-We use an MVar to the hash table, so that several threads may safely
-access it concurrently. This includes the finalization threads that
-remove entries from the table.
-
-ToDo: Can efficiency be improved at all?
-
-\begin{code}
-memo :: (a -> b) -> a -> b
-memo f = memoSized default_table_size f
-
-default_table_size = 1001
-
--- Our memo functions are *strict*. Lazy memo functions tend to be
--- less useful because it is less likely you'll get a memo table hit
--- for a thunk. This change was made to match Hugs's Memo
--- implementation, and as the result of feedback from Conal Elliot
--- <conal@microsoft.com>.
-
-memoSized :: Int -> (a -> b) -> a -> b
-memoSized size f = strict (lazyMemoSized size f)
-
-strict = ($!)
-
-lazyMemoSized :: Int -> (a -> b) -> a -> b
-lazyMemoSized size f =
- let (table,weak) = unsafePerformIO (
- do { tbl <- newArray (0,size) []
- ; mvar <- newMVar (size,tbl)
- ; weak <- mkWeakPtr mvar (Just (table_finalizer tbl size))
- ; return (mvar,weak)
- })
- in memo' f table weak
-
-table_finalizer :: IOArray Int [MemoEntry key val] -> Int -> IO ()
-table_finalizer table size =
- sequence_ [ finalizeBucket i | i <- [0..size] ]
- where
- finalizeBucket i = do
- bucket <- readArray table i
- sequence_ [ finalize w | MemoEntry _ w <- bucket ]
-
-memo' :: (a -> b) -> MemoTable a b -> Weak (MemoTable a b) -> a -> b
-memo' f ref weak_ref = \k -> unsafePerformIO $ do
- stable_key <- makeStableName k
- (size, table) <- takeMVar ref
- let hash_key = hashStableName stable_key `mod` size
- bucket <- readArray table hash_key
- lkp <- lookupSN stable_key bucket
-
- case lkp of
- Just result -> do
- putMVar ref (size,table)
- return result
- Nothing -> do
- let result = f k
- weak <- mkWeak k result (Just (finalizer hash_key stable_key weak_ref))
- writeArray table hash_key (MemoEntry stable_key weak : bucket)
- putMVar ref (size,table)
- return result
-
-finalizer :: Int -> StableName a -> Weak (MemoTable a b) -> IO ()
-finalizer hash_key stable_key weak_ref =
- do r <- deRefWeak weak_ref
- case r of
- Nothing -> return ()
- Just mvar -> do
- (size,table) <- takeMVar mvar
- bucket <- readArray table hash_key
- let new_bucket = [ e | e@(MemoEntry sn weak) <- bucket,
- sn /= stable_key ]
- writeArray table hash_key new_bucket
- putMVar mvar (size,table)
-
-lookupSN :: StableName key -> [MemoEntry key val] -> IO (Maybe val)
-lookupSN sn [] = sn `seq` return Nothing -- make it strict in sn
-lookupSN sn (MemoEntry sn' weak : xs)
- | sn == sn' = do maybe_item <- deRefWeak weak
- case maybe_item of
- Nothing -> error ("dead weak pair: " ++
- show (hashStableName sn))
- Just v -> return (Just v)
- | otherwise = lookupSN sn xs
-#endif
-\end{code}
diff --git a/testsuite/tests/lib/should_run/addr001.hs b/testsuite/tests/lib/should_run/addr001.hs
deleted file mode 100644
index 436a066063..0000000000
--- a/testsuite/tests/lib/should_run/addr001.hs
+++ /dev/null
@@ -1,10 +0,0 @@
--- !!! Testing that Show for Addr is OK..
-module Main(main) where
-
-import Foreign.Ptr
-
-main :: IO ()
-main = do
- print (nullPtr `plusPtr` maxBound)
- print (nullPtr `plusPtr` minBound)
-
diff --git a/testsuite/tests/lib/should_run/addr001.stdout b/testsuite/tests/lib/should_run/addr001.stdout
deleted file mode 100644
index e098b1be49..0000000000
--- a/testsuite/tests/lib/should_run/addr001.stdout
+++ /dev/null
@@ -1,2 +0,0 @@
-0x7fffffff
-0x80000000
diff --git a/testsuite/tests/lib/should_run/addr001.stdout-alpha-dec-osf3 b/testsuite/tests/lib/should_run/addr001.stdout-alpha-dec-osf3
deleted file mode 100644
index f38ea71861..0000000000
--- a/testsuite/tests/lib/should_run/addr001.stdout-alpha-dec-osf3
+++ /dev/null
@@ -1,2 +0,0 @@
-0x7fffffffffffffff
-0x8000000000000000
diff --git a/testsuite/tests/lib/should_run/addr001.stdout-mips-sgi-irix b/testsuite/tests/lib/should_run/addr001.stdout-mips-sgi-irix
deleted file mode 100644
index f38ea71861..0000000000
--- a/testsuite/tests/lib/should_run/addr001.stdout-mips-sgi-irix
+++ /dev/null
@@ -1,2 +0,0 @@
-0x7fffffffffffffff
-0x8000000000000000
diff --git a/testsuite/tests/lib/should_run/addr001.stdout-ws-64 b/testsuite/tests/lib/should_run/addr001.stdout-ws-64
deleted file mode 100644
index f38ea71861..0000000000
--- a/testsuite/tests/lib/should_run/addr001.stdout-ws-64
+++ /dev/null
@@ -1,2 +0,0 @@
-0x7fffffffffffffff
-0x8000000000000000
diff --git a/testsuite/tests/lib/should_run/addr001.stdout-x86_64-unknown-openbsd b/testsuite/tests/lib/should_run/addr001.stdout-x86_64-unknown-openbsd
deleted file mode 100644
index f38ea71861..0000000000
--- a/testsuite/tests/lib/should_run/addr001.stdout-x86_64-unknown-openbsd
+++ /dev/null
@@ -1,2 +0,0 @@
-0x7fffffffffffffff
-0x8000000000000000
diff --git a/testsuite/tests/lib/should_run/all.T b/testsuite/tests/lib/should_run/all.T
deleted file mode 100644
index 4855cefc02..0000000000
--- a/testsuite/tests/lib/should_run/all.T
+++ /dev/null
@@ -1,70 +0,0 @@
-test('array001', extra_clean(['array001.data']), compile_and_run, [''])
-
-test('char001', normal, compile_and_run, [''])
-test('char002', normal, compile_and_run, [''])
-
-test('cstring001', normal, compile_and_run, [''])
-
-test('length001',
- # This fails without -O, as it relies on a RULE being applied
- expect_fail_for(['normal', 'threaded1', 'llvm']),
- compile_and_run,
- [''])
-
-test('ratio001', normal, compile_and_run, [''])
-
-test('rand001', reqlib('random'), compile_and_run, [''])
-test('reads001', normal, compile_and_run, [''])
-test('show001', normal, compile_and_run, [''])
-test('text001', normal, compile_and_run, [''])
-
-test('tup001', normal, compile_and_run, [''])
-
-test('addr001', normal, compile_and_run, [''])
-test('dynamic001', normal, compile_and_run, [''])
-test('dynamic002', normal, compile_and_run, [''])
-test('dynamic003', extra_run_opts('+RTS -K32m -RTS'), compile_and_run, [''])
-test('dynamic004', normal, compile_and_run, [''])
-test('dynamic005', normal, compile_and_run, [''])
-test('enum01', skip_if_fast, compile_and_run, ['-cpp'])
-test('enum02', skip_if_fast, compile_and_run, ['-cpp'])
-test('enum03', skip_if_fast, compile_and_run, ['-cpp'])
-test('enum04', normal, compile_and_run, [''])
-test('exceptionsrun001', normal, compile_and_run, [''])
-test('exceptionsrun002', normal, compile_and_run, [''])
-test('list001' , skip_if_fast, compile_and_run, [''])
-test('list002', skip_if_fast, compile_and_run, [''])
-test('list003', skip_if_fast, compile_and_run, [''])
-
-test('memo001',
- [skip_if_fast,
- extra_run_opts('+RTS -A10k -RTS'),
- extra_clean(['Memo1.hi', 'Memo1.o'])],
- multimod_compile_and_run,
- ['memo001',''])
-
-test('memo002',
- [skip_if_fast,
- extra_run_opts('20'),
- extra_clean(['Memo2.hi', 'Memo2.o'])],
- multimod_compile_and_run, ['memo002',''])
-
-test('packedstring001', reqlib('packedstring'), compile_and_run, ['-package packedstring'])
-
-test('stableptr001',
- [skip_if_fast, extra_run_opts('+RTS -K8m -RTS')],
- compile_and_run, [''])
-test('stableptr003', normal, compile_and_run, [''])
-test('stableptr004', extra_run_opts('+RTS -K4m -RTS'), compile_and_run, [''])
-test('stableptr005', normal, compile_and_run, [''])
-
-test('weak001', normal, compile_and_run, [''])
-
-# In the 65001 codepage, we can't even cat the expected output on msys:
-# $ cat 4006.stdout
-# It works here
-# cat: write error: Permission denied
-# Seems to be a known problem, e.g.
-# http://mingw-users.1079350.n2.nabble.com/Bug-re-Unicode-on-the-console-td3121717.html
-test('4006', if_msys(expect_fail), compile_and_run, [''])
-
diff --git a/testsuite/tests/lib/should_run/array001.hs b/testsuite/tests/lib/should_run/array001.hs
deleted file mode 100644
index b5839b9d53..0000000000
--- a/testsuite/tests/lib/should_run/array001.hs
+++ /dev/null
@@ -1,34 +0,0 @@
--- !!! Testing that #4827 is fixed (hPutArray/hGetArray use count argument)
-module Main(main) where
-
-import Control.Monad
-
-import Data.Array.MArray
-import Data.Array.IO
-
-import System.IO
-
-main :: IO ()
-main = do
- the_array <- newListArray (0, 11) [1..12]
-
- -- Write out almost all of the array
- h_out <- openBinaryFile "array001.data" WriteMode
- hPutArray h_out the_array 11
- hClose h_out
-
-
- the_array <- newListArray (0, 11) [0 | i <- [1..12]]
-
- -- Read in almost all of the array
- h_in <- openBinaryFile "array001.data" ReadMode
- wrote_size <- hFileSize h_in
- hGetArray h_in the_array 10
- hClose h_in
-
-
- read_elems <- getElems the_array
-
-
- print wrote_size -- Bytes written, should == 11
- print read_elems -- Bytes read, should match written array in first 10 bytes, be 0 afterwards
diff --git a/testsuite/tests/lib/should_run/array001.stdout b/testsuite/tests/lib/should_run/array001.stdout
deleted file mode 100644
index 7c9b768654..0000000000
--- a/testsuite/tests/lib/should_run/array001.stdout
+++ /dev/null
@@ -1,2 +0,0 @@
-11
-[1,2,3,4,5,6,7,8,9,10,0,0]
diff --git a/testsuite/tests/lib/should_run/char001.hs b/testsuite/tests/lib/should_run/char001.hs
deleted file mode 100644
index 2fb0edce0f..0000000000
--- a/testsuite/tests/lib/should_run/char001.hs
+++ /dev/null
@@ -1,43 +0,0 @@
--- !!! Testing the behaviour of Char.lexLitChar a little..
-
--- [March 2003] We now allow \X and \O as escapes although the
--- spec only permits \x and \o. Seems more consistent.
-
-module Main where
-
-import Data.Char
-
-lex' str = do
- putStr ("lex " ++ str ++ " = ")
- print (lex str)
-
-hexes = do
- lex' "'\\X00'"
- lex' "'\\x0f2'"
- lex' "'\\xf2'"
- lex' "'\\xf2t'"
- lex' "'\\X24'"
- lex' "'\\x24b'"
- lex' "'\\Xa4b'"
- lex' "'\\xa4bg'"
-
-octs = do
- lex' "'\\o00'"
- lex' "'\\o05'"
- lex' "'\\o50'"
- lex' "'\\o72'"
- lex' "'\\o82'"
- lex' "'\\O24'"
- lex' "'\\O000024'"
- lex' "'\\024b'"
- lex' "'\\o14b'"
- lex' "'\\0a4bg'"
-
-main = do
- hexes
- octs
-
-
-
-
-
diff --git a/testsuite/tests/lib/should_run/char001.stdout b/testsuite/tests/lib/should_run/char001.stdout
deleted file mode 100644
index 0c13ac7c03..0000000000
--- a/testsuite/tests/lib/should_run/char001.stdout
+++ /dev/null
@@ -1,18 +0,0 @@
-lex '\X00' = [("'\\X00'","")]
-lex '\x0f2' = [("'\\x0f2'","")]
-lex '\xf2' = [("'\\xf2'","")]
-lex '\xf2t' = []
-lex '\X24' = [("'\\X24'","")]
-lex '\x24b' = [("'\\x24b'","")]
-lex '\Xa4b' = [("'\\Xa4b'","")]
-lex '\xa4bg' = []
-lex '\o00' = [("'\\o00'","")]
-lex '\o05' = [("'\\o05'","")]
-lex '\o50' = [("'\\o50'","")]
-lex '\o72' = [("'\\o72'","")]
-lex '\o82' = []
-lex '\O24' = [("'\\O24'","")]
-lex '\O000024' = [("'\\O000024'","")]
-lex '\024b' = []
-lex '\o14b' = []
-lex '\0a4bg' = []
diff --git a/testsuite/tests/lib/should_run/char002.hs b/testsuite/tests/lib/should_run/char002.hs
deleted file mode 100644
index 60b8b03cda..0000000000
--- a/testsuite/tests/lib/should_run/char002.hs
+++ /dev/null
@@ -1,7 +0,0 @@
--- !!! tests for large character values in literals
-import Data.Char
-main = do
- print (ord '\xffff')
- print (ord '\o7777')
- print (ord '\65535')
- print (map ord "\xffff\o7777\65535")
diff --git a/testsuite/tests/lib/should_run/char002.stdout b/testsuite/tests/lib/should_run/char002.stdout
deleted file mode 100644
index 5190ad9c53..0000000000
--- a/testsuite/tests/lib/should_run/char002.stdout
+++ /dev/null
@@ -1,4 +0,0 @@
-65535
-4095
-65535
-[65535,4095,65535]
diff --git a/testsuite/tests/lib/should_run/cstring001.hs b/testsuite/tests/lib/should_run/cstring001.hs
deleted file mode 100644
index 38d0d25db2..0000000000
--- a/testsuite/tests/lib/should_run/cstring001.hs
+++ /dev/null
@@ -1,18 +0,0 @@
-import Control.Monad
-import Foreign.C.String
-
-test_strings = ["Hello World", replicate 10000 'a']
-
-assertEqual :: (Eq a, Show a) => a -> a -> IO ()
-assertEqual x y = if x == y then return () else error $ "assertEqual: " ++ show x ++ " /= " ++ show y
-
-main = do
- -- Try roundtripping some ASCII strings through the locale encoding
- forM test_strings $ \try_str -> do
- got_str <- withCString try_str peekCString
- got_str `assertEqual` try_str
-
- -- Try roundtripping some ASCII strings with lengths through the locale encoding
- forM test_strings $ \try_str -> do
- got_str <- withCStringLen try_str peekCStringLen
- got_str `assertEqual` try_str
diff --git a/testsuite/tests/lib/should_run/dynamic001.hs b/testsuite/tests/lib/should_run/dynamic001.hs
deleted file mode 100644
index 7a3fd515e9..0000000000
--- a/testsuite/tests/lib/should_run/dynamic001.hs
+++ /dev/null
@@ -1,107 +0,0 @@
--- !!! Dynamic library regression tests
-module Main(main) where
-
-import Data.Dynamic
-
-main :: IO ()
-main = do
- test "toDyn" toDyn_list
- testIO "fromDyn" fromDyn_test
-
-toDyn_list :: [Dynamic]
-toDyn_list =
- [ toDyn (1::Int)
- , toDyn ('a')
- , toDyn False
- , toDyn ((-1.0)::Float)
- , toDyn (0.0::Double)
- , toDyn (1394::Integer)
- , toDyn (print "hello")
- , toDyn toDyn_list
- , toDyn ([]::[Int])
- , toDyn (Nothing :: Maybe Int)
- , toDyn ((Just 2) :: Maybe Int)
- , toDyn ((Just 2) :: Maybe Int)
- , toDyn ((Left 3) :: Either Int Bool)
- , toDyn ((Right 3) :: Either Char Int)
- , toDyn ()
- , toDyn LT
- , toDyn ((),2::Int)
- , toDyn ((),2::Int,'a')
- , toDyn ((),2::Int,'a',1.0::Double)
- , toDyn ((),2::Int,'a',1.0::Double,Nothing::Maybe Bool)
- , toDyn ((+) :: Int -> Int -> Int)
- , toDyn ((+) :: Integer -> Integer -> Integer)
- , toDyn ((++) :: [Char] -> [Char] -> [Char])
- ]
-
--- Testing the conversion from Dynamic values:
-fromDyn_test :: IO ()
-fromDyn_test = do
- print (fromDyn (toDyn (1::Int)) (0::Int))
- print (fromDyn (toDyn ('a'::Char)) (0::Int))
- print (fromDyn (toDyn 'a') 'b')
- print (fromDyn (toDyn (1::Float)) (0::Float))
- print (fromDyn (toDyn (2::Float)) (0::Int))
- print (fromDyn (toDyn (3::Double)) (0::Double))
- print (fromDyn (toDyn (4::Double)) (0::Int))
- print (fromDyn (toDyn (5::Integer)) (0::Integer))
- print (fromDyn (toDyn (6::Integer)) False)
- print (fromDyn (toDyn [1,3,5::Integer]) ([]::[Integer]))
- print (fromDyn (toDyn (Just True)) (Nothing::Maybe Bool))
- print (fromDyn (toDyn (Left True::Either Bool Bool)) (Right False :: Either Bool Bool))
- print (fromDyn (toDyn LT) GT)
- print (fromDyn (toDyn ((+1)::Int->Int)) False)
- print ((fromDyn (toDyn ((+1)::Int->Int)) ((+2)::Int->Int)) 3)
- print ((fromDyn (toDyn ((++)::[Int]->[Int]->[Int])) ((undefined)::[Int]->[Int]->[Int])) [1] [2])
-
-
--- Misc test utilities:
-test :: Show a => String -> [a] -> IO ()
-test str ls = do
- putStrLn ("*** Testing: " ++ str ++ " ***")
- putStrLn (showListLn ls)
-
-testIO :: String -> IO () -> IO ()
-testIO str tst = do
- putStrLn ("*** Testing: " ++ str ++ " ***")
- tst
-
-
--- showListLn presents a list in a diff-friendly format.
--- showListLn [a1,..an]
--- =>
--- [ a1
--- , a2
--- ..
--- , an
--- ]
---
-showListLn :: Show a => [a] -> String
-showListLn [] = ""
-showListLn ls = '[' : ' ' : go ls
- where
- go [x] = show x ++ "\n]"
- go (x:xs) = show x ++ '\n':',':' ':go xs
-
-{-
-test8 = toDyn (mkAppTy listTc)
-test9 :: Float
-test9 = fromDyn test8 0
-
-printf :: String -> [Dynamic] -> IO ()
-printf str args = putStr (decode str args)
- where
- decode [] [] = []
- decode ('%':'n':cs) (d:ds) =
- (\ v -> show v++decode cs ds) (fromDyn d (0::Int))
- decode ('%':'c':cs) (d:ds) =
- (\ v -> show v++decode cs ds) (fromDyn d ('\0'))
- decode ('%':'b':cs) (d:ds) =
- (\ v -> show v++decode cs ds) (fromDyn d (False::Bool))
- decode (x:xs) ds = x:decode xs ds
-
-test10 :: IO ()
-test10 = printf "%n = %c, that much is %b\n" [toDyn (3::Int),toDyn 'a', toDyn False]
-
--}
diff --git a/testsuite/tests/lib/should_run/dynamic001.stdout b/testsuite/tests/lib/should_run/dynamic001.stdout
deleted file mode 100644
index c2d365a7c6..0000000000
--- a/testsuite/tests/lib/should_run/dynamic001.stdout
+++ /dev/null
@@ -1,42 +0,0 @@
-*** Testing: toDyn ***
-[ <<Int>>
-, <<Char>>
-, <<Bool>>
-, <<Float>>
-, <<Double>>
-, <<Integer>>
-, <<IO ()>>
-, <<[Dynamic]>>
-, <<[Int]>>
-, <<Maybe Int>>
-, <<Maybe Int>>
-, <<Maybe Int>>
-, <<Either Int Bool>>
-, <<Either Char Int>>
-, <<()>>
-, <<Ordering>>
-, <<((),Int)>>
-, <<((),Int,Char)>>
-, <<((),Int,Char,Double)>>
-, <<((),Int,Char,Double,(Maybe Bool))>>
-, <<Int -> Int -> Int>>
-, <<Integer -> Integer -> Integer>>
-, <<[Char] -> [Char] -> [Char]>>
-]
-*** Testing: fromDyn ***
-1
-0
-'a'
-1.0
-0
-3.0
-0
-5
-False
-[1,3,5]
-Just True
-Left True
-LT
-False
-4
-[1,2]
diff --git a/testsuite/tests/lib/should_run/dynamic002.hs b/testsuite/tests/lib/should_run/dynamic002.hs
deleted file mode 100644
index 6d53d2ed1e..0000000000
--- a/testsuite/tests/lib/should_run/dynamic002.hs
+++ /dev/null
@@ -1,91 +0,0 @@
--- !!! Testing Typeable instances
-module Main(main) where
-
-import Data.Dynamic
-import Data.Array
-import Data.Array.MArray
-import Data.Array.ST
-import Data.Array.IO
-import Data.Array.Unboxed
-import Data.Complex
-import Data.Int
-import Data.Word
-import Data.IORef
-import System.IO
-import Control.Monad.ST
-import System.Mem.StableName
-import System.Mem.Weak
-import Foreign.StablePtr
-import Control.Exception
-import Foreign.C.Types
-
-main :: IO ()
-main = do
- print (typeOf (undefined :: [()]))
- print (typeOf (undefined :: ()))
- print (typeOf (undefined :: ((),())))
- print (typeOf (undefined :: ((),(),())))
- print (typeOf (undefined :: ((),(),(),())))
- print (typeOf (undefined :: ((),(),(),(),())))
- print (typeOf (undefined :: (() -> ())))
- print (typeOf (undefined :: (Array () ())))
- print (typeOf (undefined :: Bool))
- print (typeOf (undefined :: Char))
- print (typeOf (undefined :: (Complex ())))
- print (typeOf (undefined :: Double))
- print (typeOf (undefined :: (Either () ())))
- print (typeOf (undefined :: Float))
- print (typeOf (undefined :: Handle))
- print (typeOf (undefined :: Int))
- print (typeOf (undefined :: Integer))
- print (typeOf (undefined :: IO ()))
- print (typeOf (undefined :: (Maybe ())))
- print (typeOf (undefined :: Ordering))
-
- print (typeOf (undefined :: Dynamic))
- print (typeOf (undefined :: (IORef ())))
- print (typeOf (undefined :: Int8))
- print (typeOf (undefined :: Int16))
- print (typeOf (undefined :: Int32))
- print (typeOf (undefined :: Int64))
- print (typeOf (undefined :: (ST () ())))
- print (typeOf (undefined :: (StableName ())))
- print (typeOf (undefined :: (StablePtr ())))
- print (typeOf (undefined :: TyCon))
- print (typeOf (undefined :: TypeRep))
- print (typeOf (undefined :: Word8))
- print (typeOf (undefined :: Word16))
- print (typeOf (undefined :: Word32))
- print (typeOf (undefined :: Word64))
-
- print (typeOf (undefined :: ArithException))
- print (typeOf (undefined :: AsyncException))
- print (typeOf (undefined :: (IOArray () ())))
- print (typeOf (undefined :: (IOUArray () ())))
- print (typeOf (undefined :: (STArray () () ())))
- print (typeOf (undefined :: (STUArray () () ())))
- print (typeOf (undefined :: (StableName ())))
- print (typeOf (undefined :: (StablePtr ())))
- print (typeOf (undefined :: (UArray () ())))
- print (typeOf (undefined :: (Weak ())))
-
- print (typeOf (undefined :: CChar))
- print (typeOf (undefined :: CSChar))
- print (typeOf (undefined :: CUChar))
- print (typeOf (undefined :: CShort))
- print (typeOf (undefined :: CUShort))
- print (typeOf (undefined :: CInt))
- print (typeOf (undefined :: CUInt))
- print (typeOf (undefined :: CLong))
- print (typeOf (undefined :: CULong))
- print (typeOf (undefined :: CLLong))
- print (typeOf (undefined :: CULLong))
- print (typeOf (undefined :: CFloat))
- print (typeOf (undefined :: CDouble))
-
- print (typeOf (undefined :: CPtrdiff))
- print (typeOf (undefined :: CSize))
- print (typeOf (undefined :: CWchar))
- print (typeOf (undefined :: CSigAtomic))
- print (typeOf (undefined :: CClock))
- print (typeOf (undefined :: CTime))
diff --git a/testsuite/tests/lib/should_run/dynamic002.stdout b/testsuite/tests/lib/should_run/dynamic002.stdout
deleted file mode 100644
index 8b55566ada..0000000000
--- a/testsuite/tests/lib/should_run/dynamic002.stdout
+++ /dev/null
@@ -1,64 +0,0 @@
-[()]
-()
-((),())
-((),(),())
-((),(),(),())
-((),(),(),(),())
-() -> ()
-Array () ()
-Bool
-Char
-Complex ()
-Double
-Either () ()
-Float
-Handle
-Int
-Integer
-IO ()
-Maybe ()
-Ordering
-Dynamic
-IORef ()
-Int8
-Int16
-Int32
-Int64
-ST () ()
-StableName ()
-StablePtr ()
-TyCon
-TypeRep
-Word8
-Word16
-Word32
-Word64
-ArithException
-AsyncException
-IOArray () ()
-IOUArray () ()
-STArray () () ()
-STUArray () () ()
-StableName ()
-StablePtr ()
-UArray () ()
-Weak ()
-CChar
-CSChar
-CUChar
-CShort
-CUShort
-CInt
-CUInt
-CLong
-CULong
-CLLong
-CULLong
-CFloat
-CDouble
-CPtrdiff
-CSize
-CWchar
-CSigAtomic
-CClock
-CTime
diff --git a/testsuite/tests/lib/should_run/dynamic003.hs b/testsuite/tests/lib/should_run/dynamic003.hs
deleted file mode 100644
index fae8bdb276..0000000000
--- a/testsuite/tests/lib/should_run/dynamic003.hs
+++ /dev/null
@@ -1,12 +0,0 @@
-module Main where
-
--- Test generation of large TypeReps
--- (can be used as a benchmark)
-
-import Data.Typeable
-
-f :: Typeable a => Int -> a -> TypeRep
-f 0 a = typeOf a
-f n a = f (n-1) [a]
-
-main = print (f 50000 () == f 50001 ())
diff --git a/testsuite/tests/lib/should_run/dynamic003.stdout b/testsuite/tests/lib/should_run/dynamic003.stdout
deleted file mode 100644
index bc59c12aa1..0000000000
--- a/testsuite/tests/lib/should_run/dynamic003.stdout
+++ /dev/null
@@ -1 +0,0 @@
-False
diff --git a/testsuite/tests/lib/should_run/dynamic004.hs b/testsuite/tests/lib/should_run/dynamic004.hs
deleted file mode 100644
index e6b7a82bfd..0000000000
--- a/testsuite/tests/lib/should_run/dynamic004.hs
+++ /dev/null
@@ -1,36 +0,0 @@
-module Main where
-
-import Data.Typeable
-import Data.Typeable.Internal
-import GHC.Fingerprint
-import Text.Printf
-
-f :: Typeable a => Int -> a -> [TypeRep]
-f 0 a = []
-f n a = typeOf a : f (n-1) [a]
-
--- pointwise compare 1000x1001 TypeReps, there should be exactly 1000 equalities
--- (can be used as a benchmark)
-main = print $ length [ t1 | t1 <- f 1000 (), t2 <- f 1001 (), t1 == t2 ]
-
-{-
- DEBUGGING code to help find bugs in the TypeRep implementation when
- this test fails:
-
- where
- g (x:xs) (y:ys)
- | x == y = g xs ys
- | otherwise = do
- print x
- case x of
- TypeRep f1 (TyCon f2 _ _ _) [TypeRep f3 _ _] ->
- printf "f1: %s\nf2: %s\nf3: %s\n" (show_fp f1) (show_fp f2) (show_fp f3)
- case y of
- TypeRep f1 (TyCon f2 _ _ _) [TypeRep f3 _ _] ->
- printf "f1: %s\nf2: %s\nf3: %s\n" (show_fp f1) (show_fp f2) (show_fp f3)
- g _ _ = return ()
-
- show_fp :: Fingerprint -> String
- show_fp (Fingerprint h l) =
- printf "%x %x" h l
--}
diff --git a/testsuite/tests/lib/should_run/dynamic004.stdout b/testsuite/tests/lib/should_run/dynamic004.stdout
deleted file mode 100644
index 83b33d238d..0000000000
--- a/testsuite/tests/lib/should_run/dynamic004.stdout
+++ /dev/null
@@ -1 +0,0 @@
-1000
diff --git a/testsuite/tests/lib/should_run/dynamic005.hs b/testsuite/tests/lib/should_run/dynamic005.hs
deleted file mode 100644
index e90aeea960..0000000000
--- a/testsuite/tests/lib/should_run/dynamic005.hs
+++ /dev/null
@@ -1,14 +0,0 @@
-module Main where
-
-import Data.Typeable
-
-f :: Typeable a => Int -> a -> [TypeRep]
-f 0 a = []
-f n a = typeOf a : f (n-1) [a]
-
--- pointwise compare 1000x1000 different TypeReps, there should be no equalities
--- (can be used as a benchmark)
-
-main = print $ length [ t1 | t1 <- replicate 1000 (f 10 ()),
- t2 <- replicate 1000 (f 10 'a'),
- t1 == t2 ]
diff --git a/testsuite/tests/lib/should_run/dynamic005.stdout b/testsuite/tests/lib/should_run/dynamic005.stdout
deleted file mode 100644
index 573541ac97..0000000000
--- a/testsuite/tests/lib/should_run/dynamic005.stdout
+++ /dev/null
@@ -1 +0,0 @@
-0
diff --git a/testsuite/tests/lib/should_run/enum01.hs b/testsuite/tests/lib/should_run/enum01.hs
deleted file mode 100644
index d8178667eb..0000000000
--- a/testsuite/tests/lib/should_run/enum01.hs
+++ /dev/null
@@ -1,526 +0,0 @@
--- !!! Testing the Prelude's Enum instances.
-module Main(main) where
-
-import Control.Exception
-import Prelude hiding (catch)
-import Data.Char
-import Data.Ratio
-
-main = do
- -- Enum Int
- putStrLn "Testing Enum Int: "
- testEnumInt
- -- Enum Integer
- putStrLn "Testing Enum Integer: "
- testEnumInteger
- -- Enum Char
- putStrLn "Testing Enum Char: "
- testEnumChar
- -- Enum ()
- putStrLn "Testing Enum (): "
- testEnumUnit
- -- Enum Ordering
- putStrLn "Testing Enum Ordering (derived): "
- testEnumOrdering
- -- Enum Bool
- putStrLn "Testing Enum Bool: "
- testEnumBool
- -- Enum Rational
- putStrLn "Testing Enum Rational: "
- testEnumRational
- -- Enum (Ratio Int)
- putStrLn "Testing Enum (Ratio Int): "
- testEnumRatioInt
-
-{-
- Here's the properties that's supposed to
- hold for arithmetic sequences over Int:
-
- - [e1..] = [e1, (e1+1), (e1+2), ..., maxBound]
-
- - [e1,e2..] = [e1, (e1+i), (e1+2*i), ... upper]
- where
- i = e2 - e1
- upper
- | i > 0 = maxBound
- | i < 0 = minBound
- | i == 0 = maxBound -- this really shouldn't matter (I feel.)
- - [e1..e3] = [e1, (e1+i), (e1+2*i),..e3]
- where
- i
- | e3 >= e1 = 1
- | e3 < e1 = (-1)
-
- - [e1,e2..e3] = res
- where
- i = e2 - e1
-
- res
- | i >= 0 && e3 < e1 = []
- | i < 0 && e3 >= e1 = [] -- (*)
- | otherwise = [e1, (e1+i), (e1 + 2*i), .. e3]
-
- Note:
- (*) - I think this instead should be (i < 0 && e3 > e1), since, as is,
-
- [x,(x+1) ..x] = [x]
- [x,(x-1) ..x] = []
-
- which does not look right, symmetrically speaking.
-
-
- The same properties hold for other Prelude types that
- are instances of Enum as well as being Bounded.
-
- For non-Bounded types (e.g., Float and Double), the properties are similar,
- except that the boundary tests become slightly different, i.e., when an
- element becomes greater than (e3 + i/2) (or less than (e3 + i/2) for negative
- i.)
-
- Q - does [(x::Double)..] have an upper bound? (ditto for Float.)
-
- OK - on with the regression testing.
--}
-
-#define printTest(x) (do{ putStr ( " " ++ "x" ++ " = " ) ; print (x) })
-
-
-testEnumInt :: IO ()
-testEnumInt = do
- -- succ
- printTest ((succ (0::Int)))
- printTest ((succ (minBound::Int)))
- mayBomb (printTest ((succ (maxBound::Int))))
-
- -- pred
- printTest (pred (1::Int))
- printTest (pred (maxBound::Int))
- mayBomb (printTest (pred (minBound::Int)))
-
- -- toEnum
- printTest ((map (toEnum::Int->Int) [1,minBound,maxBound]))
-
- -- fromEnum
- printTest ((map fromEnum [(1::Int),minBound,maxBound]))
-
- -- [x..] aka enumFrom
- printTest ((take 7 [(1::Int)..]))
- printTest ((take 7 [((maxBound::Int)-5)..])) -- just in case it doesn't catch the upper bound..
-
- -- [x,y..] aka enumFromThen
- printTest ((take 7 [(1::Int),2..]))
- printTest ((take 7 [(1::Int),7..]))
- printTest ((take 7 [(1::Int),1..]))
- printTest ((take 7 [(1::Int),0..]))
- printTest ((take 7 [(5::Int),2..]))
- let x = (minBound::Int) + 1
- printTest ((take 7 [x, x-1 ..]))
- let x = (minBound::Int) + 5
- printTest ((take 7 [x, x-1 ..]))
- let x = (maxBound::Int) - 5
- printTest ((take 7 [x, (x+1) ..]))
-
- -- Test overflow conditions
- printTest (([minBound::Int,1..]))
- printTest (([minBound::Int,0..]))
- printTest (([minBound::Int,-1..]))
- printTest (([maxBound::Int,1..]))
- printTest (([maxBound::Int,0..]))
- printTest (([maxBound::Int,-1..]))
-
- -- [x..y] aka enumFromTo
- printTest ((take 7 ([(1::Int) .. 5])))
- printTest ((take 4 ([(1::Int) .. 1])))
- printTest ((take 7 ([(1::Int) .. 0])))
- printTest ((take 7 ([(5::Int) .. 0])))
- printTest ((take 7 ([(maxBound-(5::Int)) .. maxBound])))
- printTest ((take 7 ([(minBound+(5::Int)) .. minBound])))
-
- -- [x,y..z] aka enumFromThenTo
- printTest ((take 7 [(5::Int),4..1]))
- printTest ((take 7 [(5::Int),3..1]))
- printTest ((take 7 [(5::Int),3..2]))
- printTest ((take 7 [(1::Int),2..1]))
- printTest ((take 7 [(2::Int),1..2]))
- printTest ((take 7 [(2::Int),1..1]))
- printTest ((take 7 [(2::Int),3..1]))
-
- -- Test overflow conditions
- printTest (([minBound, 1..maxBound::Int]))
- printTest (([minBound, 0..maxBound::Int]))
- printTest (([minBound,-1..maxBound::Int]))
- printTest (([minBound,-1..maxBound-1::Int]))
- printTest (([minBound,-1..maxBound-2::Int]))
-
- printTest (([maxBound, 1..minBound::Int]))
- printTest (([maxBound, 0..minBound::Int]))
- printTest (([maxBound, 0..minBound+1::Int]))
- printTest (([maxBound, 0..minBound+2::Int]))
- printTest (([maxBound,-1..minBound::Int]))
-
- let x = (maxBound::Int) - 4
- printTest ((take 7 [x,(x+1)..maxBound]))
- let x = (minBound::Int) + 5
- printTest ((take 7 [x,(x-1)..minBound]))
-
-testEnumChar :: IO ()
-testEnumChar = do
- -- succ
- printTest ((succ 'a'))
- printTest ((succ (minBound::Char)))
- mayBomb (printTest ((succ (maxBound::Char))))
-
- -- pred
- printTest ((pred 'b'))
- printTest (pred (maxBound::Char))
- mayBomb (printTest (pred (minBound::Char)))
-
- -- toEnum
- printTest ((map (toEnum::Int->Char) [123,ord (minBound::Char), ord(maxBound::Char)]))
- mayBomb (printTest ((toEnum::Int->Char) (minBound::Int)))
-
- -- fromEnum
- printTest ((map fromEnum ['X',minBound,maxBound]))
-
- -- [x..] aka enumFrom
- -- printTest ((take 7 ['\NUL' .. ]))
- do{ putStr ( " " ++ "(take 7 ['\\NUL' .. ])" ++ " = " ) ; print (take 7 ['\NUL' .. ]) }
- -- printTest ((take 7 ['\250' .. ]))
- do{ putStr ( " " ++ "(take 7 ['\\250' .. ])" ++ " = " ) ; print (take 7 ['\250' .. ]) }
-
- -- [x,y..] aka enumFromThen
- printTest ((take 7 ['a','b'..]))
- printTest ((take 7 ['a','e'..]))
- printTest ((take 7 ['a','a'..]))
- printTest ((take 7 ['z','y'..]))
- printTest ((take 7 ['z','v'..]))
- let x = '\1'
- -- printTest ((take 7 ['\1', '\0' ..]))
- do{ putStr ( " " ++ "(take 7 ['\\1', '\\0' ..])" ++ " = " ) ; print (take 7 ['\1', '\0' ..]) }
- let x = '\5'
- -- printTest ((take 7 ['\5', '\4' ..]))
- do{ putStr ( " " ++ "(take 7 ['\\5', '\\4' ..])" ++ " = " ) ; print (take 7 ['\5', '\4' ..]) }
- let x = (maxBound::Int) - 5
- -- printTest ((take 7 ['\250', '\251' ..]))
- do{ putStr ( " " ++ "(take 7 ['\\250', '\\251' ..])" ++ " = " ) ; print (take 7 ['\250', '\251' ..]) }
-
- -- [x..y] aka enumFromTo
- printTest ((take 7 (['a' .. 'e'])))
- printTest ((take 4 (['a' .. 'a'])))
- printTest ((take 7 (['b' .. 'a'])))
- printTest ((take 7 (['e' .. 'a'])))
- -- printTest ((take 7 (['\250' .. '\255'])))
- do{ putStr ( " " ++ "(take 7 (['\\250' .. '\\255']))" ++ " = " ) ; print (take 7 (['\250' .. '\255'])) }
- -- printTest ((take 7 (['\5' .. '\0'])))
- do{ putStr ( " " ++ "(take 7 (['\\5' .. '\\0']))" ++ " = " ) ; print (take 7 (['\5' .. '\0'])) }
-
- -- [x,y..z] aka enumFromThenTo
- printTest ((take 7 ['f','e' .. 'b']))
- printTest ((take 7 ['g','e' .. 'b']))
- printTest ((take 7 ['g','d' .. 'c']))
- printTest ((take 7 ['b','c' .. 'b']))
- printTest ((take 7 ['c','b' .. 'c']))
- printTest ((take 7 ['c','b' .. 'b']))
- printTest ((take 7 ['c','d' .. 'b']))
- -- printTest ((take 7 ['\251', '\252' .. maxBound]))
- do{ putStr ( " " ++ "(take 7 ['\\251', '\\252' .. maxBound])" ++ " = " ) ; print (take 7 ['\251', '\252' .. maxBound]) }
- -- printTest ((take 7 ['\5', '\4' .. minBound]))
- do{ putStr ( " " ++ "(take 7 ['\\5', '\\4' .. minBound])" ++ " = " ) ; print (take 7 ['\5', '\4' .. minBound]) }
-
-
-testEnumUnit :: IO ()
-testEnumUnit = do
- -- succ:
- mayBomb (printTest ((succ ())))
- mayBomb (printTest ((succ (minBound::()))))
- mayBomb (printTest ((succ (maxBound::()))))
-
- -- pred:
- mayBomb (printTest ((pred ())))
- mayBomb (printTest ((pred (minBound::()))))
- mayBomb (printTest ((pred (maxBound::()))))
-
- -- toEnum:
- printTest ((toEnum 0)::())
- mayBomb (printTest ((toEnum 1)::()))
-
- -- fromEnum:
- printTest ((fromEnum ()))
-
- -- enumFrom:
- printTest ((take 7 [()..]))
-
- -- enumFromThen:
- printTest ((take 7 [(),()..]))
-
- -- enumFromTo
- printTest ((take 7 [()..()]))
-
- -- enumFromThenTo
- printTest ((take 7 [(),()..()]))
-
-testEnumOrdering :: IO ()
-testEnumOrdering = do
- -- succ:
- printTest ((succ LT))
- printTest ((succ (minBound::Ordering)))
- mayBomb (printTest ((succ (maxBound::Ordering))))
-
- -- pred:
- printTest ((pred GT))
- printTest ((pred (maxBound::Ordering)))
- mayBomb (printTest ((pred (minBound::Ordering))))
-
- -- toEnum:
- printTest ((toEnum 0)::Ordering)
- mayBomb (printTest ((toEnum 5)::Ordering))
-
- -- fromEnum:
- printTest ((fromEnum LT))
- printTest ((fromEnum EQ))
- printTest ((fromEnum GT))
-
- -- enumFrom:
- printTest (([LT ..]))
- printTest (([EQ ..]))
- printTest (([GT ..]))
-
- -- enumFromThen:
- printTest (([LT,EQ ..]))
- printTest (([EQ,GT ..]))
- printTest (([EQ,LT ..]))
- printTest (([LT,GT ..]))
- printTest (([GT,LT ..]))
- printTest (take 7 (([GT,GT ..])))
- printTest (take 7 (([LT,LT ..])))
-
- -- enumFromTo
- printTest (([LT .. GT]))
- printTest (([LT .. EQ]))
- printTest (([LT .. LT]))
- printTest (([GT .. LT]))
- printTest (([GT .. EQ]))
- printTest (([GT .. GT]))
-
- -- enumFromThenTo
- printTest (([LT,EQ .. GT]))
- printTest (([GT,EQ .. LT]))
- printTest (([GT,EQ .. EQ]))
- printTest (([GT,EQ .. GT]))
- printTest (([GT,EQ .. LT]))
- printTest (([LT,EQ .. LT]))
- printTest (([LT,EQ .. GT]))
- printTest (take 7 (([LT,LT .. GT])))
- printTest (take 7 (([GT,GT .. LT])))
-
-testEnumBool :: IO ()
-testEnumBool = do
- -- succ:
- printTest ((succ False))
- printTest ((succ (minBound::Bool)))
- mayBomb (printTest ((succ (maxBound::Bool))))
-
- -- pred:
- printTest ((pred True))
- printTest ((pred (maxBound::Bool)))
- mayBomb (printTest ((pred (minBound::Bool))))
-
- -- toEnum:
- printTest ((toEnum 0)::Bool)
- mayBomb (printTest ((toEnum 5)::Bool))
-
- -- fromEnum:
- printTest ((fromEnum False))
- printTest ((fromEnum True))
-
- -- enumFrom:
- printTest (([False ..]))
- printTest (([True ..]))
-
- -- enumFromThen:
- printTest (([False,True ..]))
- printTest (([True,False ..]))
- printTest ((take 7 ([False,False ..])))
- printTest ((take 7 ([True,True ..])))
-
- -- enumFromTo
- printTest (([False .. True]))
- printTest (([True .. False]))
-
- -- enumFromThenTo
- printTest (take 7 ([False,False .. False]))
- printTest (take 7 ([False,False .. True]))
- printTest (take 7 ([False,True .. False]))
- printTest (take 7 ([False,True .. True]))
- printTest (take 7 ([True,False .. False]))
- printTest (take 7 ([True,False .. True]))
- printTest (take 7 ([True,True .. False]))
- printTest (take 7 ([True,True .. True]))
-
-
-testEnumInteger :: IO ()
-testEnumInteger = do
- -- succ
- printTest ((succ (0::Integer)))
- printTest ((succ ((-1)::Integer)))
-
- -- pred
- printTest (pred (1::Integer))
- printTest (pred (0::Integer))
-
- -- toEnum
- printTest ((map (toEnum::Int->Integer) [1,minBound,maxBound]))
-
- -- fromEnum
- printTest ((map fromEnum [(1::Integer),42,45]))
-
- -- [x..] aka enumFrom
- printTest ((take 7 [(1::Integer)..]))
- printTest ((take 7 [(-5::Integer)..]))
-
- -- [x,y..] aka enumFromThen
- printTest ((take 7 [(1::Integer),2..]))
- printTest ((take 7 [(1::Integer),7..]))
- printTest ((take 7 [(1::Integer),1..]))
- printTest ((take 7 [(1::Integer),0..]))
- printTest ((take 7 [(5::Integer),2..]))
-
- -- [x..y] aka enumFromTo
- printTest ((take 7 ([(1::Integer) .. 5])))
- printTest ((take 4 ([(1::Integer) .. 1])))
- printTest ((take 7 ([(1::Integer) .. 0])))
- printTest ((take 7 ([(5::Integer) .. 0])))
-
- -- [x,y..z] aka enumFromThenTo
- printTest ((take 7 [(5::Integer),4..1]))
- printTest ((take 7 [(5::Integer),3..1]))
- printTest ((take 7 [(5::Integer),3..2]))
- printTest ((take 7 [(1::Integer),2..1]))
- printTest ((take 7 [(2::Integer),1..2]))
- printTest ((take 7 [(2::Integer),1..1]))
- printTest ((take 7 [(2::Integer),3..1]))
-
-testEnumRational :: IO ()
-testEnumRational = do
- -- succ
- printTest ((succ (0::Rational)))
- printTest ((succ ((-1)::Rational)))
-
- -- pred
- printTest (pred (1::Rational))
- printTest (pred (0::Rational))
-
- -- toEnum
- printTest ((map (toEnum::Int->Rational) [1,minBound,maxBound]))
-
- -- fromEnum
- printTest ((map fromEnum [(1::Rational),42,45]))
-
- -- [x..] aka enumFrom
- printTest ((take 7 [(1::Rational)..]))
- printTest ((take 7 [(-5::Rational)..]))
-
- -- [x,y..] aka enumFromThen
- printTest ((take 7 [(1::Rational),2..]))
- printTest ((take 7 [(1::Rational),7..]))
- printTest ((take 7 [(1::Rational),1..]))
- printTest ((take 7 [(1::Rational),0..]))
- printTest ((take 7 [(5::Rational),2..]))
-
- -- [x..y] aka enumFromTo
- printTest ((take 7 ([(1::Rational) .. 5])))
- printTest ((take 4 ([(1::Rational) .. 1])))
- printTest ((take 7 ([(1::Rational) .. 0])))
- printTest ((take 7 ([(5::Rational) .. 0])))
-
- -- [x,y..z] aka enumFromThenTo
- printTest ((take 7 [(5::Rational),4..1]))
- printTest ((take 7 [(5::Rational),3..1]))
- printTest ((take 7 [(5::Rational),3..2]))
- printTest ((take 7 [(1::Rational),2..1]))
- printTest ((take 7 [(2::Rational),1..2]))
- printTest ((take 7 [(2::Rational),1..1]))
- printTest ((take 7 [(2::Rational),3..1]))
-
-testEnumRatioInt :: IO ()
-testEnumRatioInt = do
- -- succ
- printTest ((succ (0::Ratio Int)))
- printTest ((succ ((-1)::Ratio Int)))
-
- -- pred
- printTest (pred (1::Ratio Int))
- printTest (pred (0::Ratio Int))
-
- -- toEnum
- printTest ((map (toEnum::Int->Ratio Int) [1,minBound,maxBound]))
-
- -- fromEnum
- printTest ((map fromEnum [(1::Ratio Int),42,45]))
-
- -- [x..] aka enumFrom
- printTest ((take 7 [(1::Ratio Int)..]))
- printTest ((take 7 [(-5::Ratio Int)..]))
- printTest ((take 7 [((toEnum ((maxBound::Int)-5))::Ratio Int)..]))
-
- -- [x,y..] aka enumFromThen
- printTest ((take 7 [(1::Ratio Int),2..]))
- printTest ((take 7 [(1::Ratio Int),7..]))
- printTest ((take 7 [(1::Ratio Int),1..]))
- printTest ((take 7 [(1::Ratio Int),0..]))
- printTest ((take 7 [(5::Ratio Int),2..]))
- let x = (toEnum ((minBound::Int) + 1))::Ratio Int
- printTest ((take 7 [x, x-1 ..]))
- let x = (toEnum ((minBound::Int) + 5))::Ratio Int
- printTest ((take 7 [x, x-1 ..]))
- let x = (toEnum ((maxBound::Int) - 5))::Ratio Int
- printTest ((take 7 [x, (x+1) ..]))
-
- -- [x..y] aka enumFromTo
- printTest ((take 7 ([(1::Ratio Int) .. 5])))
- printTest ((take 4 ([(1::Ratio Int) .. 1])))
- printTest ((take 7 ([(1::Ratio Int) .. 0])))
- printTest ((take 7 ([(5::Ratio Int) .. 0])))
- let x = (toEnum (maxBound - (5::Int))) :: Ratio Int
- let y = (toEnum (maxBound::Int)) :: Ratio Int
- printTest ((take 7 ([x..y])))
- let x = (toEnum (minBound + (5::Int))) :: Ratio Int
- let y = (toEnum (minBound::Int)) :: Ratio Int
- printTest ((take 7 ([x..y])))
-
- -- [x,y..z] aka enumFromThenTo
- printTest ((take 7 [(5::Ratio Int),4..1]))
- printTest ((take 7 [(5::Ratio Int),3..1]))
- printTest ((take 7 [(5::Ratio Int),3..2]))
- printTest ((take 7 [(1::Ratio Int),2..1]))
- printTest ((take 7 [(2::Ratio Int),1..2]))
- printTest ((take 7 [(2::Ratio Int),1..1]))
- printTest ((take 7 [(2::Ratio Int),3..1]))
-
- let x = (toEnum ((maxBound::Int) - 4)) :: Ratio Int
- let y = (toEnum (maxBound::Int)) :: Ratio Int
- printTest ((take 7 [x,(x+1)..y]))
- let x = (toEnum ((minBound::Int) + 5)) :: Ratio Int
- let y = (toEnum (minBound::Int)) :: Ratio Int
- printTest ((take 7 [x,(x-1)..y]))
-
---
---
--- Utils
---
---
-
-
-mayBomb x = catch x (\(ErrorCall e) -> putStrLn ("error " ++ show e))
- `catch` (\e -> putStrLn ("Fail: " ++ show (e :: SomeException)))
-
-test :: Show a => String -> String -> a -> IO ()
-test test_nm expected val = do
- putStr test_nm
- if expected == got then
- putStrLn ": SUCCEEDED"
- else do
- putStr ": FAILED"
- putStrLn ("( expected: " ++ show expected ++ " , got: " ++ show got ++ " )")
- where
- got = show val
diff --git a/testsuite/tests/lib/should_run/enum01.stdout b/testsuite/tests/lib/should_run/enum01.stdout
deleted file mode 100644
index 71e5bd6d1a..0000000000
--- a/testsuite/tests/lib/should_run/enum01.stdout
+++ /dev/null
@@ -1,246 +0,0 @@
-Testing Enum Int:
- (succ (0::Int)) = 1
- (succ (minBound::Int)) = -2147483647
- (succ (maxBound::Int)) = error "Prelude.Enum.succ{Int}: tried to take `succ' of maxBound"
- pred (1::Int) = 0
- pred (maxBound::Int) = 2147483646
- pred (minBound::Int) = error "Prelude.Enum.pred{Int}: tried to take `pred' of minBound"
- (map (toEnum::Int->Int) [1,minBound,maxBound]) = [1,-2147483648,2147483647]
- (map fromEnum [(1::Int),minBound,maxBound]) = [1,-2147483648,2147483647]
- (take 7 [(1::Int)..]) = [1,2,3,4,5,6,7]
- (take 7 [((maxBound::Int)-5)..]) = [2147483642,2147483643,2147483644,2147483645,2147483646,2147483647]
- (take 7 [(1::Int),2..]) = [1,2,3,4,5,6,7]
- (take 7 [(1::Int),7..]) = [1,7,13,19,25,31,37]
- (take 7 [(1::Int),1..]) = [1,1,1,1,1,1,1]
- (take 7 [(1::Int),0..]) = [1,0,-1,-2,-3,-4,-5]
- (take 7 [(5::Int),2..]) = [5,2,-1,-4,-7,-10,-13]
- (take 7 [x, x-1 ..]) = [-2147483647,-2147483648]
- (take 7 [x, x-1 ..]) = [-2147483643,-2147483644,-2147483645,-2147483646,-2147483647,-2147483648]
- (take 7 [x, (x+1) ..]) = [2147483642,2147483643,2147483644,2147483645,2147483646,2147483647]
- ([minBound::Int,1..]) = [-2147483648,1]
- ([minBound::Int,0..]) = [-2147483648,0]
- ([minBound::Int,-1..]) = [-2147483648,-1,2147483646]
- ([maxBound::Int,1..]) = [2147483647,1,-2147483645]
- ([maxBound::Int,0..]) = [2147483647,0,-2147483647]
- ([maxBound::Int,-1..]) = [2147483647,-1]
- (take 7 ([(1::Int) .. 5])) = [1,2,3,4,5]
- (take 4 ([(1::Int) .. 1])) = [1]
- (take 7 ([(1::Int) .. 0])) = []
- (take 7 ([(5::Int) .. 0])) = []
- (take 7 ([(maxBound-(5::Int)) .. maxBound])) = [2147483642,2147483643,2147483644,2147483645,2147483646,2147483647]
- (take 7 ([(minBound+(5::Int)) .. minBound])) = []
- (take 7 [(5::Int),4..1]) = [5,4,3,2,1]
- (take 7 [(5::Int),3..1]) = [5,3,1]
- (take 7 [(5::Int),3..2]) = [5,3]
- (take 7 [(1::Int),2..1]) = [1]
- (take 7 [(2::Int),1..2]) = [2]
- (take 7 [(2::Int),1..1]) = [2,1]
- (take 7 [(2::Int),3..1]) = []
- ([minBound, 1..maxBound::Int]) = [-2147483648,1]
- ([minBound, 0..maxBound::Int]) = [-2147483648,0]
- ([minBound,-1..maxBound::Int]) = [-2147483648,-1,2147483646]
- ([minBound,-1..maxBound-1::Int]) = [-2147483648,-1,2147483646]
- ([minBound,-1..maxBound-2::Int]) = [-2147483648,-1]
- ([maxBound, 1..minBound::Int]) = [2147483647,1,-2147483645]
- ([maxBound, 0..minBound::Int]) = [2147483647,0,-2147483647]
- ([maxBound, 0..minBound+1::Int]) = [2147483647,0,-2147483647]
- ([maxBound, 0..minBound+2::Int]) = [2147483647,0]
- ([maxBound,-1..minBound::Int]) = [2147483647,-1]
- (take 7 [x,(x+1)..maxBound]) = [2147483643,2147483644,2147483645,2147483646,2147483647]
- (take 7 [x,(x-1)..minBound]) = [-2147483643,-2147483644,-2147483645,-2147483646,-2147483647,-2147483648]
-Testing Enum Integer:
- (succ (0::Integer)) = 1
- (succ ((-1)::Integer)) = 0
- pred (1::Integer) = 0
- pred (0::Integer) = -1
- (map (toEnum::Int->Integer) [1,minBound,maxBound]) = [1,-2147483648,2147483647]
- (map fromEnum [(1::Integer),42,45]) = [1,42,45]
- (take 7 [(1::Integer)..]) = [1,2,3,4,5,6,7]
- (take 7 [(-5::Integer)..]) = [-5,-4,-3,-2,-1,0,1]
- (take 7 [(1::Integer),2..]) = [1,2,3,4,5,6,7]
- (take 7 [(1::Integer),7..]) = [1,7,13,19,25,31,37]
- (take 7 [(1::Integer),1..]) = [1,1,1,1,1,1,1]
- (take 7 [(1::Integer),0..]) = [1,0,-1,-2,-3,-4,-5]
- (take 7 [(5::Integer),2..]) = [5,2,-1,-4,-7,-10,-13]
- (take 7 ([(1::Integer) .. 5])) = [1,2,3,4,5]
- (take 4 ([(1::Integer) .. 1])) = [1]
- (take 7 ([(1::Integer) .. 0])) = []
- (take 7 ([(5::Integer) .. 0])) = []
- (take 7 [(5::Integer),4..1]) = [5,4,3,2,1]
- (take 7 [(5::Integer),3..1]) = [5,3,1]
- (take 7 [(5::Integer),3..2]) = [5,3]
- (take 7 [(1::Integer),2..1]) = [1]
- (take 7 [(2::Integer),1..2]) = [2]
- (take 7 [(2::Integer),1..1]) = [2,1]
- (take 7 [(2::Integer),3..1]) = []
-Testing Enum Char:
- (succ 'a') = 'b'
- (succ (minBound::Char)) = '\SOH'
- (succ (maxBound::Char)) = error "Prelude.Enum.Char.succ: bad argument"
- (pred 'b') = 'a'
- pred (maxBound::Char) = '\1114110'
- pred (minBound::Char) = error "Prelude.Enum.Char.pred: bad argument"
- (map (toEnum::Int->Char) [123,ord (minBound::Char), ord(maxBound::Char)]) = "{\NUL\1114111"
- (toEnum::Int->Char) (minBound::Int) = error "Prelude.chr: bad argument: (-2147483648)"
- (map fromEnum ['X',minBound,maxBound]) = [88,0,1114111]
- (take 7 ['\NUL' .. ]) = "\NUL\SOH\STX\ETX\EOT\ENQ\ACK"
- (take 7 ['\250' .. ]) = "\250\251\252\253\254\255\256"
- (take 7 ['a','b'..]) = "abcdefg"
- (take 7 ['a','e'..]) = "aeimquy"
- (take 7 ['a','a'..]) = "aaaaaaa"
- (take 7 ['z','y'..]) = "zyxwvut"
- (take 7 ['z','v'..]) = "zvrnjfb"
- (take 7 ['\1', '\0' ..]) = "\SOH\NUL"
- (take 7 ['\5', '\4' ..]) = "\ENQ\EOT\ETX\STX\SOH\NUL"
- (take 7 ['\250', '\251' ..]) = "\250\251\252\253\254\255\256"
- (take 7 (['a' .. 'e'])) = "abcde"
- (take 4 (['a' .. 'a'])) = "a"
- (take 7 (['b' .. 'a'])) = ""
- (take 7 (['e' .. 'a'])) = ""
- (take 7 (['\250' .. '\255'])) = "\250\251\252\253\254\255"
- (take 7 (['\5' .. '\0'])) = ""
- (take 7 ['f','e' .. 'b']) = "fedcb"
- (take 7 ['g','e' .. 'b']) = "gec"
- (take 7 ['g','d' .. 'c']) = "gd"
- (take 7 ['b','c' .. 'b']) = "b"
- (take 7 ['c','b' .. 'c']) = "c"
- (take 7 ['c','b' .. 'b']) = "cb"
- (take 7 ['c','d' .. 'b']) = ""
- (take 7 ['\251', '\252' .. maxBound]) = "\251\252\253\254\255\256\257"
- (take 7 ['\5', '\4' .. minBound]) = "\ENQ\EOT\ETX\STX\SOH\NUL"
-Testing Enum ():
- (succ ()) = error "Prelude.Enum.().succ: bad argument"
- (succ (minBound::())) = error "Prelude.Enum.().succ: bad argument"
- (succ (maxBound::())) = error "Prelude.Enum.().succ: bad argument"
- (pred ()) = error "Prelude.Enum.().pred: bad argument"
- (pred (minBound::())) = error "Prelude.Enum.().pred: bad argument"
- (pred (maxBound::())) = error "Prelude.Enum.().pred: bad argument"
- (toEnum 0)::() = ()
- (toEnum 1)::() = error "Prelude.Enum.().toEnum: bad argument"
- (fromEnum ()) = 0
- (take 7 [()..]) = [()]
- (take 7 [(),()..]) = [(),(),(),(),(),(),()]
- (take 7 [()..()]) = [()]
- (take 7 [(),()..()]) = [(),(),(),(),(),(),()]
-Testing Enum Ordering (derived):
- (succ LT) = EQ
- (succ (minBound::Ordering)) = EQ
- (succ (maxBound::Ordering)) = error "Prelude.Enum.Ordering.succ: bad argument"
- (pred GT) = EQ
- (pred (maxBound::Ordering)) = EQ
- (pred (minBound::Ordering)) = error "Prelude.Enum.Ordering.pred: bad argument"
- (toEnum 0)::Ordering = LT
- (toEnum 5)::Ordering = error "Prelude.Enum.Ordering.toEnum: bad argument"
- (fromEnum LT) = 0
- (fromEnum EQ) = 1
- (fromEnum GT) = 2
- ([LT ..]) = [LT,EQ,GT]
- ([EQ ..]) = [EQ,GT]
- ([GT ..]) = [GT]
- ([LT,EQ ..]) = [LT,EQ,GT]
- ([EQ,GT ..]) = [EQ,GT]
- ([EQ,LT ..]) = [EQ,LT]
- ([LT,GT ..]) = [LT,GT]
- ([GT,LT ..]) = [GT,LT]
- take 7 (([GT,GT ..])) = [GT,GT,GT,GT,GT,GT,GT]
- take 7 (([LT,LT ..])) = [LT,LT,LT,LT,LT,LT,LT]
- ([LT .. GT]) = [LT,EQ,GT]
- ([LT .. EQ]) = [LT,EQ]
- ([LT .. LT]) = [LT]
- ([GT .. LT]) = []
- ([GT .. EQ]) = []
- ([GT .. GT]) = [GT]
- ([LT,EQ .. GT]) = [LT,EQ,GT]
- ([GT,EQ .. LT]) = [GT,EQ,LT]
- ([GT,EQ .. EQ]) = [GT,EQ]
- ([GT,EQ .. GT]) = [GT]
- ([GT,EQ .. LT]) = [GT,EQ,LT]
- ([LT,EQ .. LT]) = [LT]
- ([LT,EQ .. GT]) = [LT,EQ,GT]
- take 7 (([LT,LT .. GT])) = [LT,LT,LT,LT,LT,LT,LT]
- take 7 (([GT,GT .. LT])) = []
-Testing Enum Bool:
- (succ False) = True
- (succ (minBound::Bool)) = True
- (succ (maxBound::Bool)) = error "Prelude.Enum.Bool.succ: bad argument"
- (pred True) = False
- (pred (maxBound::Bool)) = False
- (pred (minBound::Bool)) = error "Prelude.Enum.Bool.pred: bad argument"
- (toEnum 0)::Bool = False
- (toEnum 5)::Bool = error "Prelude.Enum.Bool.toEnum: bad argument"
- (fromEnum False) = 0
- (fromEnum True) = 1
- ([False ..]) = [False,True]
- ([True ..]) = [True]
- ([False,True ..]) = [False,True]
- ([True,False ..]) = [True,False]
- (take 7 ([False,False ..])) = [False,False,False,False,False,False,False]
- (take 7 ([True,True ..])) = [True,True,True,True,True,True,True]
- ([False .. True]) = [False,True]
- ([True .. False]) = []
- take 7 ([False,False .. False]) = [False,False,False,False,False,False,False]
- take 7 ([False,False .. True]) = [False,False,False,False,False,False,False]
- take 7 ([False,True .. False]) = [False]
- take 7 ([False,True .. True]) = [False,True]
- take 7 ([True,False .. False]) = [True,False]
- take 7 ([True,False .. True]) = [True]
- take 7 ([True,True .. False]) = []
- take 7 ([True,True .. True]) = [True,True,True,True,True,True,True]
-Testing Enum Rational:
- (succ (0::Rational)) = 1 % 1
- (succ ((-1)::Rational)) = 0 % 1
- pred (1::Rational) = 0 % 1
- pred (0::Rational) = (-1) % 1
- (map (toEnum::Int->Rational) [1,minBound,maxBound]) = [1 % 1,(-2147483648) % 1,2147483647 % 1]
- (map fromEnum [(1::Rational),42,45]) = [1,42,45]
- (take 7 [(1::Rational)..]) = [1 % 1,2 % 1,3 % 1,4 % 1,5 % 1,6 % 1,7 % 1]
- (take 7 [(-5::Rational)..]) = [(-5) % 1,(-4) % 1,(-3) % 1,(-2) % 1,(-1) % 1,0 % 1,1 % 1]
- (take 7 [(1::Rational),2..]) = [1 % 1,2 % 1,3 % 1,4 % 1,5 % 1,6 % 1,7 % 1]
- (take 7 [(1::Rational),7..]) = [1 % 1,7 % 1,13 % 1,19 % 1,25 % 1,31 % 1,37 % 1]
- (take 7 [(1::Rational),1..]) = [1 % 1,1 % 1,1 % 1,1 % 1,1 % 1,1 % 1,1 % 1]
- (take 7 [(1::Rational),0..]) = [1 % 1,0 % 1,(-1) % 1,(-2) % 1,(-3) % 1,(-4) % 1,(-5) % 1]
- (take 7 [(5::Rational),2..]) = [5 % 1,2 % 1,(-1) % 1,(-4) % 1,(-7) % 1,(-10) % 1,(-13) % 1]
- (take 7 ([(1::Rational) .. 5])) = [1 % 1,2 % 1,3 % 1,4 % 1,5 % 1]
- (take 4 ([(1::Rational) .. 1])) = [1 % 1]
- (take 7 ([(1::Rational) .. 0])) = []
- (take 7 ([(5::Rational) .. 0])) = []
- (take 7 [(5::Rational),4..1]) = [5 % 1,4 % 1,3 % 1,2 % 1,1 % 1]
- (take 7 [(5::Rational),3..1]) = [5 % 1,3 % 1,1 % 1]
- (take 7 [(5::Rational),3..2]) = [5 % 1,3 % 1,1 % 1]
- (take 7 [(1::Rational),2..1]) = [1 % 1]
- (take 7 [(2::Rational),1..2]) = [2 % 1]
- (take 7 [(2::Rational),1..1]) = [2 % 1,1 % 1]
- (take 7 [(2::Rational),3..1]) = []
-Testing Enum (Ratio Int):
- (succ (0::Ratio Int)) = 1 % 1
- (succ ((-1)::Ratio Int)) = 0 % 1
- pred (1::Ratio Int) = 0 % 1
- pred (0::Ratio Int) = (-1) % 1
- (map (toEnum::Int->Ratio Int) [1,minBound,maxBound]) = [1 % 1,(-2147483648) % 1,2147483647 % 1]
- (map fromEnum [(1::Ratio Int),42,45]) = [1,42,45]
- (take 7 [(1::Ratio Int)..]) = [1 % 1,2 % 1,3 % 1,4 % 1,5 % 1,6 % 1,7 % 1]
- (take 7 [(-5::Ratio Int)..]) = [(-5) % 1,(-4) % 1,(-3) % 1,(-2) % 1,(-1) % 1,0 % 1,1 % 1]
- (take 7 [((toEnum ((maxBound::Int)-5))::Ratio Int)..]) = [2147483642 % 1,2147483643 % 1,2147483644 % 1,2147483645 % 1,2147483646 % 1,2147483647 % 1,(-2147483648) % 1]
- (take 7 [(1::Ratio Int),2..]) = [1 % 1,2 % 1,3 % 1,4 % 1,5 % 1,6 % 1,7 % 1]
- (take 7 [(1::Ratio Int),7..]) = [1 % 1,7 % 1,13 % 1,19 % 1,25 % 1,31 % 1,37 % 1]
- (take 7 [(1::Ratio Int),1..]) = [1 % 1,1 % 1,1 % 1,1 % 1,1 % 1,1 % 1,1 % 1]
- (take 7 [(1::Ratio Int),0..]) = [1 % 1,0 % 1,(-1) % 1,(-2) % 1,(-3) % 1,(-4) % 1,(-5) % 1]
- (take 7 [(5::Ratio Int),2..]) = [5 % 1,2 % 1,(-1) % 1,(-4) % 1,(-7) % 1,(-10) % 1,(-13) % 1]
- (take 7 [x, x-1 ..]) = [(-2147483647) % 1,(-2147483648) % 1,2147483647 % 1,2147483646 % 1,2147483645 % 1,2147483644 % 1,2147483643 % 1]
- (take 7 [x, x-1 ..]) = [(-2147483643) % 1,(-2147483644) % 1,(-2147483645) % 1,(-2147483646) % 1,(-2147483647) % 1,(-2147483648) % 1,2147483647 % 1]
- (take 7 [x, (x+1) ..]) = [2147483642 % 1,2147483643 % 1,2147483644 % 1,2147483645 % 1,2147483646 % 1,2147483647 % 1,(-2147483648) % 1]
- (take 7 ([(1::Ratio Int) .. 5])) = [1 % 1,2 % 1,3 % 1,4 % 1,5 % 1]
- (take 4 ([(1::Ratio Int) .. 1])) = [1 % 1]
- (take 7 ([(1::Ratio Int) .. 0])) = []
- (take 7 ([(5::Ratio Int) .. 0])) = []
- (take 7 ([x..y])) = [2147483642 % 1,2147483643 % 1,2147483644 % 1,2147483645 % 1,2147483646 % 1,2147483647 % 1]
- (take 7 ([x..y])) = []
- (take 7 [(5::Ratio Int),4..1]) = [5 % 1,4 % 1,3 % 1,2 % 1,1 % 1]
- (take 7 [(5::Ratio Int),3..1]) = [5 % 1,3 % 1,1 % 1]
- (take 7 [(5::Ratio Int),3..2]) = [5 % 1,3 % 1,1 % 1]
- (take 7 [(1::Ratio Int),2..1]) = [1 % 1]
- (take 7 [(2::Ratio Int),1..2]) = [2 % 1]
- (take 7 [(2::Ratio Int),1..1]) = [2 % 1,1 % 1]
- (take 7 [(2::Ratio Int),3..1]) = []
- (take 7 [x,(x+1)..y]) = [2147483643 % 1,2147483644 % 1,2147483645 % 1,2147483646 % 1,2147483647 % 1]
- (take 7 [x,(x-1)..y]) = [(-2147483643) % 1,(-2147483644) % 1,(-2147483645) % 1,(-2147483646) % 1,(-2147483647) % 1,(-2147483648) % 1]
diff --git a/testsuite/tests/lib/should_run/enum01.stdout-alpha-dec-osf3 b/testsuite/tests/lib/should_run/enum01.stdout-alpha-dec-osf3
deleted file mode 100644
index 63ba3e2fb3..0000000000
--- a/testsuite/tests/lib/should_run/enum01.stdout-alpha-dec-osf3
+++ /dev/null
@@ -1,230 +0,0 @@
-Testing Enum Int:
- (succ (0::Int)) = 1
- (succ (minBound::Int)) = -9223372036854775807
- (succ (maxBound::Int)) = error "Prelude.Enum.succ{Int}: tried to take `succ' of maxBound"
- pred (1::Int) = 0
- pred (maxBound::Int) = 9223372036854775806
- pred (minBound::Int) = error "Prelude.Enum.pred{Int}: tried to take `pred' of minBound"
- (map (toEnum::Int->Int) [1,minBound,maxBound]) = [1,-9223372036854775808,9223372036854775807]
- (map fromEnum [(1::Int),minBound,maxBound]) = [1,-9223372036854775808,9223372036854775807]
- (take 7 [(1::Int)..]) = [1,2,3,4,5,6,7]
- (take 7 [((maxBound::Int)-5)..]) = [9223372036854775802,9223372036854775803,9223372036854775804,9223372036854775805,9223372036854775806,9223372036854775807]
- (take 7 [(1::Int),2..]) = [1,2,3,4,5,6,7]
- (take 7 [(1::Int),7..]) = [1,7,13,19,25,31,37]
- (take 7 [(1::Int),1..]) = [1,1,1,1,1,1,1]
- (take 7 [(1::Int),0..]) = [1,0,-1,-2,-3,-4,-5]
- (take 7 [(5::Int),2..]) = [5,2,-1,-4,-7,-10,-13]
- (take 7 [x, x-1 ..]) = [-9223372036854775807,-9223372036854775808]
- (take 7 [x, x-1 ..]) = [-9223372036854775803,-9223372036854775804,-9223372036854775805,-9223372036854775806,-9223372036854775807,-9223372036854775808]
- (take 7 [x, (x+1) ..]) = [9223372036854775802,9223372036854775803,9223372036854775804,9223372036854775805,9223372036854775806,9223372036854775807]
- (take 7 ([(1::Int) .. 5])) = [1,2,3,4,5]
- (take 4 ([(1::Int) .. 1])) = [1]
- (take 7 ([(1::Int) .. 0])) = []
- (take 7 ([(5::Int) .. 0])) = []
- (take 7 ([(maxBound-(5::Int)) .. maxBound])) = [9223372036854775802,9223372036854775803,9223372036854775804,9223372036854775805,9223372036854775806,9223372036854775807]
- (take 7 ([(minBound+(5::Int)) .. minBound])) = []
- (take 7 [(5::Int),4..1]) = [5,4,3,2,1]
- (take 7 [(5::Int),3..1]) = [5,3,1]
- (take 7 [(5::Int),3..2]) = [5,3]
- (take 7 [(1::Int),2..1]) = [1]
- (take 7 [(2::Int),1..2]) = [2]
- (take 7 [(2::Int),1..1]) = [2,1]
- (take 7 [(2::Int),3..1]) = []
- (take 7 [x,(x+1)..maxBound]) = [9223372036854775803,9223372036854775804,9223372036854775805,9223372036854775806,9223372036854775807]
- (take 7 [x,(x-1)..minBound]) = [-9223372036854775803,-9223372036854775804,-9223372036854775805,-9223372036854775806,-9223372036854775807,-9223372036854775808]
-Testing Enum Integer:
- (succ (0::Integer)) = 1
- (succ ((-1)::Integer)) = 0
- pred (1::Integer) = 0
- pred (0::Integer) = -1
- (map (toEnum::Int->Integer) [1,minBound,maxBound]) = [1,-9223372036854775808,9223372036854775807]
- (map fromEnum [(1::Integer),42,45]) = [1,42,45]
- (take 7 [(1::Integer)..]) = [1,2,3,4,5,6,7]
- (take 7 [(-5::Integer)..]) = [-5,-4,-3,-2,-1,0,1]
- (take 7 [(1::Integer),2..]) = [1,2,3,4,5,6,7]
- (take 7 [(1::Integer),7..]) = [1,7,13,19,25,31,37]
- (take 7 [(1::Integer),1..]) = [1,1,1,1,1,1,1]
- (take 7 [(1::Integer),0..]) = [1,0,-1,-2,-3,-4,-5]
- (take 7 [(5::Integer),2..]) = [5,2,-1,-4,-7,-10,-13]
- (take 7 ([(1::Integer) .. 5])) = [1,2,3,4,5]
- (take 4 ([(1::Integer) .. 1])) = [1]
- (take 7 ([(1::Integer) .. 0])) = []
- (take 7 ([(5::Integer) .. 0])) = []
- (take 7 [(5::Integer),4..1]) = [5,4,3,2,1]
- (take 7 [(5::Integer),3..1]) = [5,3,1]
- (take 7 [(5::Integer),3..2]) = [5,3]
- (take 7 [(1::Integer),2..1]) = [1]
- (take 7 [(2::Integer),1..2]) = [2]
- (take 7 [(2::Integer),1..1]) = [2,1]
- (take 7 [(2::Integer),3..1]) = []
-Testing Enum Char:
- (succ 'a') = 'b'
- (succ (minBound::Char)) = '\SOH'
- (succ (maxBound::Char)) = error "Prelude.Enum.Char.succ: bad argument"
- (pred 'b') = 'a'
- pred (maxBound::Char) = '\1114110'
- pred (minBound::Char) = error "Prelude.Enum.Char.pred: bad argument"
- (map (toEnum::Int->Char) [123,ord (minBound::Char), ord(maxBound::Char)]) = "{\NUL\1114111"
- (toEnum::Int->Char) (minBound::Int) = error "Prelude.chr: bad argument"
- (map fromEnum ['X',minBound,maxBound]) = [88,0,1114111]
- (take 7 ['\NUL' .. ]) = "\NUL\SOH\STX\ETX\EOT\ENQ\ACK"
- (take 7 ['\250' .. ]) = "\250\251\252\253\254\255\256"
- (take 7 ['a','b'..]) = "abcdefg"
- (take 7 ['a','e'..]) = "aeimquy"
- (take 7 ['a','a'..]) = "aaaaaaa"
- (take 7 ['z','y'..]) = "zyxwvut"
- (take 7 ['z','v'..]) = "zvrnjfb"
- (take 7 ['\1', '\0' ..]) = "\SOH\NUL"
- (take 7 ['\5', '\4' ..]) = "\ENQ\EOT\ETX\STX\SOH\NUL"
- (take 7 ['\250', '\251' ..]) = "\250\251\252\253\254\255\256"
- (take 7 (['a' .. 'e'])) = "abcde"
- (take 4 (['a' .. 'a'])) = "a"
- (take 7 (['b' .. 'a'])) = ""
- (take 7 (['e' .. 'a'])) = ""
- (take 7 (['\250' .. '\255'])) = "\250\251\252\253\254\255"
- (take 7 (['\5' .. '\0'])) = ""
- (take 7 ['f','e' .. 'b']) = "fedcb"
- (take 7 ['g','e' .. 'b']) = "gec"
- (take 7 ['g','d' .. 'c']) = "gd"
- (take 7 ['b','c' .. 'b']) = "b"
- (take 7 ['c','b' .. 'c']) = "c"
- (take 7 ['c','b' .. 'b']) = "cb"
- (take 7 ['c','d' .. 'b']) = ""
- (take 7 ['\251', '\252' .. maxBound]) = "\251\252\253\254\255\256\257"
- (take 7 ['\5', '\4' .. minBound]) = "\ENQ\EOT\ETX\STX\SOH\NUL"
-Testing Enum ():
- (succ ()) = error "Prelude.Enum.().succ: bad argument"
- (succ (minBound::())) = error "Prelude.Enum.().succ: bad argument"
- (succ (maxBound::())) = error "Prelude.Enum.().succ: bad argument"
- (pred ()) = error "Prelude.Enum.().pred: bad argument"
- (pred (minBound::())) = error "Prelude.Enum.().pred: bad argument"
- (pred (maxBound::())) = error "Prelude.Enum.().pred: bad argument"
- (toEnum 0)::() = ()
- (toEnum 1)::() = error "Prelude.Enum.().toEnum: bad argument"
- (fromEnum ()) = 0
- (take 7 [()..]) = [()]
- (take 7 [(),()..]) = [(),(),(),(),(),(),()]
- (take 7 [()..()]) = [()]
- (take 7 [(),()..()]) = [(),(),(),(),(),(),()]
-Testing Enum Ordering (derived):
- (succ LT) = EQ
- (succ (minBound::Ordering)) = EQ
- (succ (maxBound::Ordering)) = error "Prelude.Enum.Ordering.succ: bad argument"
- (pred GT) = EQ
- (pred (maxBound::Ordering)) = EQ
- (pred (minBound::Ordering)) = error "Prelude.Enum.Ordering.pred: bad argument"
- (toEnum 0)::Ordering = LT
- (toEnum 5)::Ordering = error "Prelude.Enum.Ordering.toEnum: bad argument"
- (fromEnum LT) = 0
- (fromEnum EQ) = 1
- (fromEnum GT) = 2
- ([LT ..]) = [LT,EQ,GT]
- ([EQ ..]) = [EQ,GT]
- ([GT ..]) = [GT]
- ([LT,EQ ..]) = [LT,EQ,GT]
- ([EQ,GT ..]) = [EQ,GT]
- ([EQ,LT ..]) = [EQ,LT]
- ([LT,GT ..]) = [LT,GT]
- ([GT,LT ..]) = [GT,LT]
- take 7 (([GT,GT ..])) = [GT,GT,GT,GT,GT,GT,GT]
- take 7 (([LT,LT ..])) = [LT,LT,LT,LT,LT,LT,LT]
- ([LT .. GT]) = [LT,EQ,GT]
- ([LT .. EQ]) = [LT,EQ]
- ([LT .. LT]) = [LT]
- ([GT .. LT]) = []
- ([GT .. EQ]) = []
- ([GT .. GT]) = [GT]
- ([LT,EQ .. GT]) = [LT,EQ,GT]
- ([GT,EQ .. LT]) = [GT,EQ,LT]
- ([GT,EQ .. EQ]) = [GT,EQ]
- ([GT,EQ .. GT]) = [GT]
- ([GT,EQ .. LT]) = [GT,EQ,LT]
- ([LT,EQ .. LT]) = [LT]
- ([LT,EQ .. GT]) = [LT,EQ,GT]
- take 7 (([LT,LT .. GT])) = [LT,LT,LT,LT,LT,LT,LT]
- take 7 (([GT,GT .. LT])) = []
-Testing Enum Bool:
- (succ False) = True
- (succ (minBound::Bool)) = True
- (succ (maxBound::Bool)) = error "Prelude.Enum.Bool.succ: bad argument"
- (pred True) = False
- (pred (maxBound::Bool)) = False
- (pred (minBound::Bool)) = error "Prelude.Enum.Bool.pred: bad argument"
- (toEnum 0)::Bool = False
- (toEnum 5)::Bool = error "Prelude.Enum.Bool.toEnum: bad argument"
- (fromEnum False) = 0
- (fromEnum True) = 1
- ([False ..]) = [False,True]
- ([True ..]) = [True]
- ([False,True ..]) = [False,True]
- ([True,False ..]) = [True,False]
- (take 7 ([False,False ..])) = [False,False,False,False,False,False,False]
- (take 7 ([True,True ..])) = [True,True,True,True,True,True,True]
- ([False .. True]) = [False,True]
- ([True .. False]) = []
- take 7 ([False,False .. False]) = [False,False,False,False,False,False,False]
- take 7 ([False,False .. True]) = [False,False,False,False,False,False,False]
- take 7 ([False,True .. False]) = [False]
- take 7 ([False,True .. True]) = [False,True]
- take 7 ([True,False .. False]) = [True,False]
- take 7 ([True,False .. True]) = [True]
- take 7 ([True,True .. False]) = []
- take 7 ([True,True .. True]) = [True,True,True,True,True,True,True]
-Testing Enum Rational:
- (succ (0::Rational)) = 1%1
- (succ ((-1)::Rational)) = 0%1
- pred (1::Rational) = 0%1
- pred (0::Rational) = (-1)%1
- (map (toEnum::Int->Rational) [1,minBound,maxBound]) = [1%1,(-9223372036854775808)%1,9223372036854775807%1]
- (map fromEnum [(1::Rational),42,45]) = [1,42,45]
- (take 7 [(1::Rational)..]) = [1%1,2%1,3%1,4%1,5%1,6%1,7%1]
- (take 7 [(-5::Rational)..]) = [(-5)%1,(-4)%1,(-3)%1,(-2)%1,(-1)%1,0%1,1%1]
- (take 7 [(1::Rational),2..]) = [1%1,2%1,3%1,4%1,5%1,6%1,7%1]
- (take 7 [(1::Rational),7..]) = [1%1,7%1,13%1,19%1,25%1,31%1,37%1]
- (take 7 [(1::Rational),1..]) = [1%1,1%1,1%1,1%1,1%1,1%1,1%1]
- (take 7 [(1::Rational),0..]) = [1%1,0%1,(-1)%1,(-2)%1,(-3)%1,(-4)%1,(-5)%1]
- (take 7 [(5::Rational),2..]) = [5%1,2%1,(-1)%1,(-4)%1,(-7)%1,(-10)%1,(-13)%1]
- (take 7 ([(1::Rational) .. 5])) = [1%1,2%1,3%1,4%1,5%1]
- (take 4 ([(1::Rational) .. 1])) = [1%1]
- (take 7 ([(1::Rational) .. 0])) = []
- (take 7 ([(5::Rational) .. 0])) = []
- (take 7 [(5::Rational),4..1]) = [5%1,4%1,3%1,2%1,1%1]
- (take 7 [(5::Rational),3..1]) = [5%1,3%1,1%1]
- (take 7 [(5::Rational),3..2]) = [5%1,3%1,1%1]
- (take 7 [(1::Rational),2..1]) = [1%1]
- (take 7 [(2::Rational),1..2]) = [2%1]
- (take 7 [(2::Rational),1..1]) = [2%1,1%1]
- (take 7 [(2::Rational),3..1]) = []
-Testing Enum (Ratio Int):
- (succ (0::Ratio Int)) = 1%1
- (succ ((-1)::Ratio Int)) = 0%1
- pred (1::Ratio Int) = 0%1
- pred (0::Ratio Int) = (-1)%1
- (map (toEnum::Int->Ratio Int) [1,minBound,maxBound]) = [1%1,(-9223372036854775808)%1,9223372036854775807%1]
- (map fromEnum [(1::Ratio Int),42,45]) = [1,42,45]
- (take 7 [(1::Ratio Int)..]) = [1%1,2%1,3%1,4%1,5%1,6%1,7%1]
- (take 7 [(-5::Ratio Int)..]) = [(-5)%1,(-4)%1,(-3)%1,(-2)%1,(-1)%1,0%1,1%1]
- (take 7 [((toEnum ((maxBound::Int)-5))::Ratio Int)..]) = [9223372036854775802%1,9223372036854775803%1,9223372036854775804%1,9223372036854775805%1,9223372036854775806%1,9223372036854775807%1,(-9223372036854775808)%1]
- (take 7 [(1::Ratio Int),2..]) = [1%1,2%1,3%1,4%1,5%1,6%1,7%1]
- (take 7 [(1::Ratio Int),7..]) = [1%1,7%1,13%1,19%1,25%1,31%1,37%1]
- (take 7 [(1::Ratio Int),1..]) = [1%1,1%1,1%1,1%1,1%1,1%1,1%1]
- (take 7 [(1::Ratio Int),0..]) = [1%1,0%1,(-1)%1,(-2)%1,(-3)%1,(-4)%1,(-5)%1]
- (take 7 [(5::Ratio Int),2..]) = [5%1,2%1,(-1)%1,(-4)%1,(-7)%1,(-10)%1,(-13)%1]
- (take 7 [x, x-1 ..]) = [(-9223372036854775807)%1,(-9223372036854775808)%1,9223372036854775807%1,9223372036854775806%1,9223372036854775805%1,9223372036854775804%1,9223372036854775803%1]
- (take 7 [x, x-1 ..]) = [(-9223372036854775803)%1,(-9223372036854775804)%1,(-9223372036854775805)%1,(-9223372036854775806)%1,(-9223372036854775807)%1,(-9223372036854775808)%1,9223372036854775807%1]
- (take 7 [x, (x+1) ..]) = [9223372036854775802%1,9223372036854775803%1,9223372036854775804%1,9223372036854775805%1,9223372036854775806%1,9223372036854775807%1,(-9223372036854775808)%1]
- (take 7 ([(1::Ratio Int) .. 5])) = [1%1,2%1,3%1,4%1,5%1]
- (take 4 ([(1::Ratio Int) .. 1])) = [1%1]
- (take 7 ([(1::Ratio Int) .. 0])) = []
- (take 7 ([(5::Ratio Int) .. 0])) = []
- (take 7 ([x..y])) = [9223372036854775802%1,9223372036854775803%1,9223372036854775804%1,9223372036854775805%1,9223372036854775806%1,9223372036854775807%1]
- (take 7 ([x..y])) = []
- (take 7 [(5::Ratio Int),4..1]) = [5%1,4%1,3%1,2%1,1%1]
- (take 7 [(5::Ratio Int),3..1]) = [5%1,3%1,1%1]
- (take 7 [(5::Ratio Int),3..2]) = [5%1,3%1,1%1]
- (take 7 [(1::Ratio Int),2..1]) = [1%1]
- (take 7 [(2::Ratio Int),1..2]) = [2%1]
- (take 7 [(2::Ratio Int),1..1]) = [2%1,1%1]
- (take 7 [(2::Ratio Int),3..1]) = []
- (take 7 [x,(x+1)..y]) = [9223372036854775803%1,9223372036854775804%1,9223372036854775805%1,9223372036854775806%1,9223372036854775807%1]
- (take 7 [x,(x-1)..y]) = [(-9223372036854775803)%1,(-9223372036854775804)%1,(-9223372036854775805)%1,(-9223372036854775806)%1,(-9223372036854775807)%1,(-9223372036854775808)%1]
diff --git a/testsuite/tests/lib/should_run/enum01.stdout-hugs b/testsuite/tests/lib/should_run/enum01.stdout-hugs
deleted file mode 100644
index 41bb64d598..0000000000
--- a/testsuite/tests/lib/should_run/enum01.stdout-hugs
+++ /dev/null
@@ -1,246 +0,0 @@
-Testing Enum Int:
- (succ (0::Int)) = 1
- (succ (minBound::Int)) = -2147483647
- (succ (maxBound::Int)) = error "succ: applied to maxBound"
- pred (1::Int) = 0
- pred (maxBound::Int) = 2147483646
- pred (minBound::Int) = error "pred: applied to minBound"
- (map (toEnum::Int->Int) [1,minBound,maxBound]) = [1,-2147483648,2147483647]
- (map fromEnum [(1::Int),minBound,maxBound]) = [1,-2147483648,2147483647]
- (take 7 [(1::Int)..]) = [1,2,3,4,5,6,7]
- (take 7 [((maxBound::Int)-5)..]) = [2147483642,2147483643,2147483644,2147483645,2147483646,2147483647]
- (take 7 [(1::Int),2..]) = [1,2,3,4,5,6,7]
- (take 7 [(1::Int),7..]) = [1,7,13,19,25,31,37]
- (take 7 [(1::Int),1..]) = [1,1,1,1,1,1,1]
- (take 7 [(1::Int),0..]) = [1,0,-1,-2,-3,-4,-5]
- (take 7 [(5::Int),2..]) = [5,2,-1,-4,-7,-10,-13]
- (take 7 [x, x-1 ..]) = [-2147483647,-2147483648]
- (take 7 [x, x-1 ..]) = [-2147483643,-2147483644,-2147483645,-2147483646,-2147483647,-2147483648]
- (take 7 [x, (x+1) ..]) = [2147483642,2147483643,2147483644,2147483645,2147483646,2147483647]
- ([minBound::Int,1..]) = [-2147483648,1]
- ([minBound::Int,0..]) = [-2147483648,0]
- ([minBound::Int,-1..]) = [-2147483648,-1,2147483646]
- ([maxBound::Int,1..]) = [2147483647,1,-2147483645]
- ([maxBound::Int,0..]) = [2147483647,0,-2147483647]
- ([maxBound::Int,-1..]) = [2147483647,-1]
- (take 7 ([(1::Int) .. 5])) = [1,2,3,4,5]
- (take 4 ([(1::Int) .. 1])) = [1]
- (take 7 ([(1::Int) .. 0])) = []
- (take 7 ([(5::Int) .. 0])) = []
- (take 7 ([(maxBound-(5::Int)) .. maxBound])) = [2147483642,2147483643,2147483644,2147483645,2147483646,2147483647]
- (take 7 ([(minBound+(5::Int)) .. minBound])) = []
- (take 7 [(5::Int),4..1]) = [5,4,3,2,1]
- (take 7 [(5::Int),3..1]) = [5,3,1]
- (take 7 [(5::Int),3..2]) = [5,3]
- (take 7 [(1::Int),2..1]) = [1]
- (take 7 [(2::Int),1..2]) = [2]
- (take 7 [(2::Int),1..1]) = [2,1]
- (take 7 [(2::Int),3..1]) = []
- ([minBound, 1..maxBound::Int]) = [-2147483648,1]
- ([minBound, 0..maxBound::Int]) = [-2147483648,0]
- ([minBound,-1..maxBound::Int]) = [-2147483648,-1,2147483646]
- ([minBound,-1..maxBound-1::Int]) = [-2147483648,-1,2147483646]
- ([minBound,-1..maxBound-2::Int]) = [-2147483648,-1]
- ([maxBound, 1..minBound::Int]) = [2147483647,1,-2147483645]
- ([maxBound, 0..minBound::Int]) = [2147483647,0,-2147483647]
- ([maxBound, 0..minBound+1::Int]) = [2147483647,0,-2147483647]
- ([maxBound, 0..minBound+2::Int]) = [2147483647,0]
- ([maxBound,-1..minBound::Int]) = [2147483647,-1]
- (take 7 [x,(x+1)..maxBound]) = [2147483643,2147483644,2147483645,2147483646,2147483647]
- (take 7 [x,(x-1)..minBound]) = [-2147483643,-2147483644,-2147483645,-2147483646,-2147483647,-2147483648]
-Testing Enum Integer:
- (succ (0::Integer)) = 1
- (succ ((-1)::Integer)) = 0
- pred (1::Integer) = 0
- pred (0::Integer) = -1
- (map (toEnum::Int->Integer) [1,minBound,maxBound]) = [1,-2147483648,2147483647]
- (map fromEnum [(1::Integer),42,45]) = [1,42,45]
- (take 7 [(1::Integer)..]) = [1,2,3,4,5,6,7]
- (take 7 [(-5::Integer)..]) = [-5,-4,-3,-2,-1,0,1]
- (take 7 [(1::Integer),2..]) = [1,2,3,4,5,6,7]
- (take 7 [(1::Integer),7..]) = [1,7,13,19,25,31,37]
- (take 7 [(1::Integer),1..]) = [1,1,1,1,1,1,1]
- (take 7 [(1::Integer),0..]) = [1,0,-1,-2,-3,-4,-5]
- (take 7 [(5::Integer),2..]) = [5,2,-1,-4,-7,-10,-13]
- (take 7 ([(1::Integer) .. 5])) = [1,2,3,4,5]
- (take 4 ([(1::Integer) .. 1])) = [1]
- (take 7 ([(1::Integer) .. 0])) = []
- (take 7 ([(5::Integer) .. 0])) = []
- (take 7 [(5::Integer),4..1]) = [5,4,3,2,1]
- (take 7 [(5::Integer),3..1]) = [5,3,1]
- (take 7 [(5::Integer),3..2]) = [5,3]
- (take 7 [(1::Integer),2..1]) = [1]
- (take 7 [(2::Integer),1..2]) = [2]
- (take 7 [(2::Integer),1..1]) = [2,1]
- (take 7 [(2::Integer),3..1]) = []
-Testing Enum Char:
- (succ 'a') = 'b'
- (succ (minBound::Char)) = '\SOH'
- (succ (maxBound::Char)) = error "chr: out of range"
- (pred 'b') = 'a'
- pred (maxBound::Char) = '\1114110'
- pred (minBound::Char) = error "chr: out of range"
- (map (toEnum::Int->Char) [123,ord (minBound::Char), ord(maxBound::Char)]) = "{\NUL\1114111"
- (toEnum::Int->Char) (minBound::Int) = error "chr: out of range"
- (map fromEnum ['X',minBound,maxBound]) = [88,0,1114111]
- (take 7 ['\NUL' .. ]) = "\NUL\SOH\STX\ETX\EOT\ENQ\ACK"
- (take 7 ['\250' .. ]) = "\250\251\252\253\254\255\256"
- (take 7 ['a','b'..]) = "abcdefg"
- (take 7 ['a','e'..]) = "aeimquy"
- (take 7 ['a','a'..]) = "aaaaaaa"
- (take 7 ['z','y'..]) = "zyxwvut"
- (take 7 ['z','v'..]) = "zvrnjfb"
- (take 7 ['\1', '\0' ..]) = "\SOH\NUL"
- (take 7 ['\5', '\4' ..]) = "\ENQ\EOT\ETX\STX\SOH\NUL"
- (take 7 ['\250', '\251' ..]) = "\250\251\252\253\254\255\256"
- (take 7 (['a' .. 'e'])) = "abcde"
- (take 4 (['a' .. 'a'])) = "a"
- (take 7 (['b' .. 'a'])) = ""
- (take 7 (['e' .. 'a'])) = ""
- (take 7 (['\250' .. '\255'])) = "\250\251\252\253\254\255"
- (take 7 (['\5' .. '\0'])) = ""
- (take 7 ['f','e' .. 'b']) = "fedcb"
- (take 7 ['g','e' .. 'b']) = "gec"
- (take 7 ['g','d' .. 'c']) = "gd"
- (take 7 ['b','c' .. 'b']) = "b"
- (take 7 ['c','b' .. 'c']) = "c"
- (take 7 ['c','b' .. 'b']) = "cb"
- (take 7 ['c','d' .. 'b']) = ""
- (take 7 ['\251', '\252' .. maxBound]) = "\251\252\253\254\255\256\257"
- (take 7 ['\5', '\4' .. minBound]) = "\ENQ\EOT\ETX\STX\SOH\NUL"
-Testing Enum ():
- (succ ()) = Fail: pattern match failure
- (succ (minBound::())) = Fail: pattern match failure
- (succ (maxBound::())) = Fail: pattern match failure
- (pred ()) = Fail: pattern match failure
- (pred (minBound::())) = Fail: pattern match failure
- (pred (maxBound::())) = Fail: pattern match failure
- (toEnum 0)::() = ()
- (toEnum 1)::() = Fail: pattern match failure
- (fromEnum ()) = 0
- (take 7 [()..]) = [()]
- (take 7 [(),()..]) = [(),(),(),(),(),(),()]
- (take 7 [()..()]) = [()]
- (take 7 [(),()..()]) = [(),(),(),(),(),(),()]
-Testing Enum Ordering (derived):
- (succ LT) = EQ
- (succ (minBound::Ordering)) = EQ
- (succ (maxBound::Ordering)) = error "toEnum: out of range"
- (pred GT) = EQ
- (pred (maxBound::Ordering)) = EQ
- (pred (minBound::Ordering)) = error "toEnum: out of range"
- (toEnum 0)::Ordering = LT
- (toEnum 5)::Ordering = error "toEnum: out of range"
- (fromEnum LT) = 0
- (fromEnum EQ) = 1
- (fromEnum GT) = 2
- ([LT ..]) = [LT,EQ,GT]
- ([EQ ..]) = [EQ,GT]
- ([GT ..]) = [GT]
- ([LT,EQ ..]) = [LT,EQ,GT]
- ([EQ,GT ..]) = [EQ,GT]
- ([EQ,LT ..]) = [EQ,LT]
- ([LT,GT ..]) = [LT,GT]
- ([GT,LT ..]) = [GT,LT]
- take 7 (([GT,GT ..])) = [GT,GT,GT,GT,GT,GT,GT]
- take 7 (([LT,LT ..])) = [LT,LT,LT,LT,LT,LT,LT]
- ([LT .. GT]) = [LT,EQ,GT]
- ([LT .. EQ]) = [LT,EQ]
- ([LT .. LT]) = [LT]
- ([GT .. LT]) = []
- ([GT .. EQ]) = []
- ([GT .. GT]) = [GT]
- ([LT,EQ .. GT]) = [LT,EQ,GT]
- ([GT,EQ .. LT]) = [GT,EQ,LT]
- ([GT,EQ .. EQ]) = [GT,EQ]
- ([GT,EQ .. GT]) = [GT]
- ([GT,EQ .. LT]) = [GT,EQ,LT]
- ([LT,EQ .. LT]) = [LT]
- ([LT,EQ .. GT]) = [LT,EQ,GT]
- take 7 (([LT,LT .. GT])) = [LT,LT,LT,LT,LT,LT,LT]
- take 7 (([GT,GT .. LT])) = []
-Testing Enum Bool:
- (succ False) = True
- (succ (minBound::Bool)) = True
- (succ (maxBound::Bool)) = error "toEnum: out of range"
- (pred True) = False
- (pred (maxBound::Bool)) = False
- (pred (minBound::Bool)) = error "toEnum: out of range"
- (toEnum 0)::Bool = False
- (toEnum 5)::Bool = error "toEnum: out of range"
- (fromEnum False) = 0
- (fromEnum True) = 1
- ([False ..]) = [False,True]
- ([True ..]) = [True]
- ([False,True ..]) = [False,True]
- ([True,False ..]) = [True,False]
- (take 7 ([False,False ..])) = [False,False,False,False,False,False,False]
- (take 7 ([True,True ..])) = [True,True,True,True,True,True,True]
- ([False .. True]) = [False,True]
- ([True .. False]) = []
- take 7 ([False,False .. False]) = [False,False,False,False,False,False,False]
- take 7 ([False,False .. True]) = [False,False,False,False,False,False,False]
- take 7 ([False,True .. False]) = [False]
- take 7 ([False,True .. True]) = [False,True]
- take 7 ([True,False .. False]) = [True,False]
- take 7 ([True,False .. True]) = [True]
- take 7 ([True,True .. False]) = []
- take 7 ([True,True .. True]) = [True,True,True,True,True,True,True]
-Testing Enum Rational:
- (succ (0::Rational)) = 1 % 1
- (succ ((-1)::Rational)) = 0 % 1
- pred (1::Rational) = 0 % 1
- pred (0::Rational) = (-1) % 1
- (map (toEnum::Int->Rational) [1,minBound,maxBound]) = [1 % 1,(-2147483648) % 1,2147483647 % 1]
- (map fromEnum [(1::Rational),42,45]) = [1,42,45]
- (take 7 [(1::Rational)..]) = [1 % 1,2 % 1,3 % 1,4 % 1,5 % 1,6 % 1,7 % 1]
- (take 7 [(-5::Rational)..]) = [(-5) % 1,(-4) % 1,(-3) % 1,(-2) % 1,(-1) % 1,0 % 1,1 % 1]
- (take 7 [(1::Rational),2..]) = [1 % 1,2 % 1,3 % 1,4 % 1,5 % 1,6 % 1,7 % 1]
- (take 7 [(1::Rational),7..]) = [1 % 1,7 % 1,13 % 1,19 % 1,25 % 1,31 % 1,37 % 1]
- (take 7 [(1::Rational),1..]) = [1 % 1,1 % 1,1 % 1,1 % 1,1 % 1,1 % 1,1 % 1]
- (take 7 [(1::Rational),0..]) = [1 % 1,0 % 1,(-1) % 1,(-2) % 1,(-3) % 1,(-4) % 1,(-5) % 1]
- (take 7 [(5::Rational),2..]) = [5 % 1,2 % 1,(-1) % 1,(-4) % 1,(-7) % 1,(-10) % 1,(-13) % 1]
- (take 7 ([(1::Rational) .. 5])) = [1 % 1,2 % 1,3 % 1,4 % 1,5 % 1]
- (take 4 ([(1::Rational) .. 1])) = [1 % 1]
- (take 7 ([(1::Rational) .. 0])) = []
- (take 7 ([(5::Rational) .. 0])) = []
- (take 7 [(5::Rational),4..1]) = [5 % 1,4 % 1,3 % 1,2 % 1,1 % 1]
- (take 7 [(5::Rational),3..1]) = [5 % 1,3 % 1,1 % 1]
- (take 7 [(5::Rational),3..2]) = [5 % 1,3 % 1,1 % 1]
- (take 7 [(1::Rational),2..1]) = [1 % 1]
- (take 7 [(2::Rational),1..2]) = [2 % 1]
- (take 7 [(2::Rational),1..1]) = [2 % 1,1 % 1]
- (take 7 [(2::Rational),3..1]) = []
-Testing Enum (Ratio Int):
- (succ (0::Ratio Int)) = 1 % 1
- (succ ((-1)::Ratio Int)) = 0 % 1
- pred (1::Ratio Int) = 0 % 1
- pred (0::Ratio Int) = (-1) % 1
- (map (toEnum::Int->Ratio Int) [1,minBound,maxBound]) = [1 % 1,(-2147483648) % 1,2147483647 % 1]
- (map fromEnum [(1::Ratio Int),42,45]) = [1,42,45]
- (take 7 [(1::Ratio Int)..]) = [1 % 1,2 % 1,3 % 1,4 % 1,5 % 1,6 % 1,7 % 1]
- (take 7 [(-5::Ratio Int)..]) = [(-5) % 1,(-4) % 1,(-3) % 1,(-2) % 1,(-1) % 1,0 % 1,1 % 1]
- (take 7 [((toEnum ((maxBound::Int)-5))::Ratio Int)..]) = [2147483642 % 1,2147483643 % 1,2147483644 % 1,2147483645 % 1,2147483646 % 1,2147483647 % 1,(-2147483648) % 1]
- (take 7 [(1::Ratio Int),2..]) = [1 % 1,2 % 1,3 % 1,4 % 1,5 % 1,6 % 1,7 % 1]
- (take 7 [(1::Ratio Int),7..]) = [1 % 1,7 % 1,13 % 1,19 % 1,25 % 1,31 % 1,37 % 1]
- (take 7 [(1::Ratio Int),1..]) = [1 % 1,1 % 1,1 % 1,1 % 1,1 % 1,1 % 1,1 % 1]
- (take 7 [(1::Ratio Int),0..]) = [1 % 1,0 % 1,(-1) % 1,(-2) % 1,(-3) % 1,(-4) % 1,(-5) % 1]
- (take 7 [(5::Ratio Int),2..]) = [5 % 1,2 % 1,(-1) % 1,(-4) % 1,(-7) % 1,(-10) % 1,(-13) % 1]
- (take 7 [x, x-1 ..]) = [(-2147483647) % 1,(-2147483648) % 1,2147483647 % 1,2147483646 % 1,2147483645 % 1,2147483644 % 1,2147483643 % 1]
- (take 7 [x, x-1 ..]) = [(-2147483643) % 1,(-2147483644) % 1,(-2147483645) % 1,(-2147483646) % 1,(-2147483647) % 1,(-2147483648) % 1,2147483647 % 1]
- (take 7 [x, (x+1) ..]) = [2147483642 % 1,2147483643 % 1,2147483644 % 1,2147483645 % 1,2147483646 % 1,2147483647 % 1,(-2147483648) % 1]
- (take 7 ([(1::Ratio Int) .. 5])) = [1 % 1,2 % 1,3 % 1,4 % 1,5 % 1]
- (take 4 ([(1::Ratio Int) .. 1])) = [1 % 1]
- (take 7 ([(1::Ratio Int) .. 0])) = []
- (take 7 ([(5::Ratio Int) .. 0])) = []
- (take 7 ([x..y])) = [2147483642 % 1,2147483643 % 1,2147483644 % 1,2147483645 % 1,2147483646 % 1,2147483647 % 1]
- (take 7 ([x..y])) = []
- (take 7 [(5::Ratio Int),4..1]) = [5 % 1,4 % 1,3 % 1,2 % 1,1 % 1]
- (take 7 [(5::Ratio Int),3..1]) = [5 % 1,3 % 1,1 % 1]
- (take 7 [(5::Ratio Int),3..2]) = [5 % 1,3 % 1,1 % 1]
- (take 7 [(1::Ratio Int),2..1]) = [1 % 1]
- (take 7 [(2::Ratio Int),1..2]) = [2 % 1]
- (take 7 [(2::Ratio Int),1..1]) = [2 % 1,1 % 1]
- (take 7 [(2::Ratio Int),3..1]) = []
- (take 7 [x,(x+1)..y]) = [2147483643 % 1,2147483644 % 1,2147483645 % 1,2147483646 % 1,2147483647 % 1]
- (take 7 [x,(x-1)..y]) = [(-2147483643) % 1,(-2147483644) % 1,(-2147483645) % 1,(-2147483646) % 1,(-2147483647) % 1,(-2147483648) % 1]
diff --git a/testsuite/tests/lib/should_run/enum01.stdout-ws-64 b/testsuite/tests/lib/should_run/enum01.stdout-ws-64
deleted file mode 100644
index 3804dd2470..0000000000
--- a/testsuite/tests/lib/should_run/enum01.stdout-ws-64
+++ /dev/null
@@ -1,246 +0,0 @@
-Testing Enum Int:
- (succ (0::Int)) = 1
- (succ (minBound::Int)) = -9223372036854775807
- (succ (maxBound::Int)) = error "Prelude.Enum.succ{Int}: tried to take `succ' of maxBound"
- pred (1::Int) = 0
- pred (maxBound::Int) = 9223372036854775806
- pred (minBound::Int) = error "Prelude.Enum.pred{Int}: tried to take `pred' of minBound"
- (map (toEnum::Int->Int) [1,minBound,maxBound]) = [1,-9223372036854775808,9223372036854775807]
- (map fromEnum [(1::Int),minBound,maxBound]) = [1,-9223372036854775808,9223372036854775807]
- (take 7 [(1::Int)..]) = [1,2,3,4,5,6,7]
- (take 7 [((maxBound::Int)-5)..]) = [9223372036854775802,9223372036854775803,9223372036854775804,9223372036854775805,9223372036854775806,9223372036854775807]
- (take 7 [(1::Int),2..]) = [1,2,3,4,5,6,7]
- (take 7 [(1::Int),7..]) = [1,7,13,19,25,31,37]
- (take 7 [(1::Int),1..]) = [1,1,1,1,1,1,1]
- (take 7 [(1::Int),0..]) = [1,0,-1,-2,-3,-4,-5]
- (take 7 [(5::Int),2..]) = [5,2,-1,-4,-7,-10,-13]
- (take 7 [x, x-1 ..]) = [-9223372036854775807,-9223372036854775808]
- (take 7 [x, x-1 ..]) = [-9223372036854775803,-9223372036854775804,-9223372036854775805,-9223372036854775806,-9223372036854775807,-9223372036854775808]
- (take 7 [x, (x+1) ..]) = [9223372036854775802,9223372036854775803,9223372036854775804,9223372036854775805,9223372036854775806,9223372036854775807]
- ([minBound::Int,1..]) = [-9223372036854775808,1]
- ([minBound::Int,0..]) = [-9223372036854775808,0]
- ([minBound::Int,-1..]) = [-9223372036854775808,-1,9223372036854775806]
- ([maxBound::Int,1..]) = [9223372036854775807,1,-9223372036854775805]
- ([maxBound::Int,0..]) = [9223372036854775807,0,-9223372036854775807]
- ([maxBound::Int,-1..]) = [9223372036854775807,-1]
- (take 7 ([(1::Int) .. 5])) = [1,2,3,4,5]
- (take 4 ([(1::Int) .. 1])) = [1]
- (take 7 ([(1::Int) .. 0])) = []
- (take 7 ([(5::Int) .. 0])) = []
- (take 7 ([(maxBound-(5::Int)) .. maxBound])) = [9223372036854775802,9223372036854775803,9223372036854775804,9223372036854775805,9223372036854775806,9223372036854775807]
- (take 7 ([(minBound+(5::Int)) .. minBound])) = []
- (take 7 [(5::Int),4..1]) = [5,4,3,2,1]
- (take 7 [(5::Int),3..1]) = [5,3,1]
- (take 7 [(5::Int),3..2]) = [5,3]
- (take 7 [(1::Int),2..1]) = [1]
- (take 7 [(2::Int),1..2]) = [2]
- (take 7 [(2::Int),1..1]) = [2,1]
- (take 7 [(2::Int),3..1]) = []
- ([minBound, 1..maxBound::Int]) = [-9223372036854775808,1]
- ([minBound, 0..maxBound::Int]) = [-9223372036854775808,0]
- ([minBound,-1..maxBound::Int]) = [-9223372036854775808,-1,9223372036854775806]
- ([minBound,-1..maxBound-1::Int]) = [-9223372036854775808,-1,9223372036854775806]
- ([minBound,-1..maxBound-2::Int]) = [-9223372036854775808,-1]
- ([maxBound, 1..minBound::Int]) = [9223372036854775807,1,-9223372036854775805]
- ([maxBound, 0..minBound::Int]) = [9223372036854775807,0,-9223372036854775807]
- ([maxBound, 0..minBound+1::Int]) = [9223372036854775807,0,-9223372036854775807]
- ([maxBound, 0..minBound+2::Int]) = [9223372036854775807,0]
- ([maxBound,-1..minBound::Int]) = [9223372036854775807,-1]
- (take 7 [x,(x+1)..maxBound]) = [9223372036854775803,9223372036854775804,9223372036854775805,9223372036854775806,9223372036854775807]
- (take 7 [x,(x-1)..minBound]) = [-9223372036854775803,-9223372036854775804,-9223372036854775805,-9223372036854775806,-9223372036854775807,-9223372036854775808]
-Testing Enum Integer:
- (succ (0::Integer)) = 1
- (succ ((-1)::Integer)) = 0
- pred (1::Integer) = 0
- pred (0::Integer) = -1
- (map (toEnum::Int->Integer) [1,minBound,maxBound]) = [1,-9223372036854775808,9223372036854775807]
- (map fromEnum [(1::Integer),42,45]) = [1,42,45]
- (take 7 [(1::Integer)..]) = [1,2,3,4,5,6,7]
- (take 7 [(-5::Integer)..]) = [-5,-4,-3,-2,-1,0,1]
- (take 7 [(1::Integer),2..]) = [1,2,3,4,5,6,7]
- (take 7 [(1::Integer),7..]) = [1,7,13,19,25,31,37]
- (take 7 [(1::Integer),1..]) = [1,1,1,1,1,1,1]
- (take 7 [(1::Integer),0..]) = [1,0,-1,-2,-3,-4,-5]
- (take 7 [(5::Integer),2..]) = [5,2,-1,-4,-7,-10,-13]
- (take 7 ([(1::Integer) .. 5])) = [1,2,3,4,5]
- (take 4 ([(1::Integer) .. 1])) = [1]
- (take 7 ([(1::Integer) .. 0])) = []
- (take 7 ([(5::Integer) .. 0])) = []
- (take 7 [(5::Integer),4..1]) = [5,4,3,2,1]
- (take 7 [(5::Integer),3..1]) = [5,3,1]
- (take 7 [(5::Integer),3..2]) = [5,3]
- (take 7 [(1::Integer),2..1]) = [1]
- (take 7 [(2::Integer),1..2]) = [2]
- (take 7 [(2::Integer),1..1]) = [2,1]
- (take 7 [(2::Integer),3..1]) = []
-Testing Enum Char:
- (succ 'a') = 'b'
- (succ (minBound::Char)) = '\SOH'
- (succ (maxBound::Char)) = error "Prelude.Enum.Char.succ: bad argument"
- (pred 'b') = 'a'
- pred (maxBound::Char) = '\1114110'
- pred (minBound::Char) = error "Prelude.Enum.Char.pred: bad argument"
- (map (toEnum::Int->Char) [123,ord (minBound::Char), ord(maxBound::Char)]) = "{\NUL\1114111"
- (toEnum::Int->Char) (minBound::Int) = error "Prelude.chr: bad argument: (-9223372036854775808)"
- (map fromEnum ['X',minBound,maxBound]) = [88,0,1114111]
- (take 7 ['\NUL' .. ]) = "\NUL\SOH\STX\ETX\EOT\ENQ\ACK"
- (take 7 ['\250' .. ]) = "\250\251\252\253\254\255\256"
- (take 7 ['a','b'..]) = "abcdefg"
- (take 7 ['a','e'..]) = "aeimquy"
- (take 7 ['a','a'..]) = "aaaaaaa"
- (take 7 ['z','y'..]) = "zyxwvut"
- (take 7 ['z','v'..]) = "zvrnjfb"
- (take 7 ['\1', '\0' ..]) = "\SOH\NUL"
- (take 7 ['\5', '\4' ..]) = "\ENQ\EOT\ETX\STX\SOH\NUL"
- (take 7 ['\250', '\251' ..]) = "\250\251\252\253\254\255\256"
- (take 7 (['a' .. 'e'])) = "abcde"
- (take 4 (['a' .. 'a'])) = "a"
- (take 7 (['b' .. 'a'])) = ""
- (take 7 (['e' .. 'a'])) = ""
- (take 7 (['\250' .. '\255'])) = "\250\251\252\253\254\255"
- (take 7 (['\5' .. '\0'])) = ""
- (take 7 ['f','e' .. 'b']) = "fedcb"
- (take 7 ['g','e' .. 'b']) = "gec"
- (take 7 ['g','d' .. 'c']) = "gd"
- (take 7 ['b','c' .. 'b']) = "b"
- (take 7 ['c','b' .. 'c']) = "c"
- (take 7 ['c','b' .. 'b']) = "cb"
- (take 7 ['c','d' .. 'b']) = ""
- (take 7 ['\251', '\252' .. maxBound]) = "\251\252\253\254\255\256\257"
- (take 7 ['\5', '\4' .. minBound]) = "\ENQ\EOT\ETX\STX\SOH\NUL"
-Testing Enum ():
- (succ ()) = error "Prelude.Enum.().succ: bad argument"
- (succ (minBound::())) = error "Prelude.Enum.().succ: bad argument"
- (succ (maxBound::())) = error "Prelude.Enum.().succ: bad argument"
- (pred ()) = error "Prelude.Enum.().pred: bad argument"
- (pred (minBound::())) = error "Prelude.Enum.().pred: bad argument"
- (pred (maxBound::())) = error "Prelude.Enum.().pred: bad argument"
- (toEnum 0)::() = ()
- (toEnum 1)::() = error "Prelude.Enum.().toEnum: bad argument"
- (fromEnum ()) = 0
- (take 7 [()..]) = [()]
- (take 7 [(),()..]) = [(),(),(),(),(),(),()]
- (take 7 [()..()]) = [()]
- (take 7 [(),()..()]) = [(),(),(),(),(),(),()]
-Testing Enum Ordering (derived):
- (succ LT) = EQ
- (succ (minBound::Ordering)) = EQ
- (succ (maxBound::Ordering)) = error "Prelude.Enum.Ordering.succ: bad argument"
- (pred GT) = EQ
- (pred (maxBound::Ordering)) = EQ
- (pred (minBound::Ordering)) = error "Prelude.Enum.Ordering.pred: bad argument"
- (toEnum 0)::Ordering = LT
- (toEnum 5)::Ordering = error "Prelude.Enum.Ordering.toEnum: bad argument"
- (fromEnum LT) = 0
- (fromEnum EQ) = 1
- (fromEnum GT) = 2
- ([LT ..]) = [LT,EQ,GT]
- ([EQ ..]) = [EQ,GT]
- ([GT ..]) = [GT]
- ([LT,EQ ..]) = [LT,EQ,GT]
- ([EQ,GT ..]) = [EQ,GT]
- ([EQ,LT ..]) = [EQ,LT]
- ([LT,GT ..]) = [LT,GT]
- ([GT,LT ..]) = [GT,LT]
- take 7 (([GT,GT ..])) = [GT,GT,GT,GT,GT,GT,GT]
- take 7 (([LT,LT ..])) = [LT,LT,LT,LT,LT,LT,LT]
- ([LT .. GT]) = [LT,EQ,GT]
- ([LT .. EQ]) = [LT,EQ]
- ([LT .. LT]) = [LT]
- ([GT .. LT]) = []
- ([GT .. EQ]) = []
- ([GT .. GT]) = [GT]
- ([LT,EQ .. GT]) = [LT,EQ,GT]
- ([GT,EQ .. LT]) = [GT,EQ,LT]
- ([GT,EQ .. EQ]) = [GT,EQ]
- ([GT,EQ .. GT]) = [GT]
- ([GT,EQ .. LT]) = [GT,EQ,LT]
- ([LT,EQ .. LT]) = [LT]
- ([LT,EQ .. GT]) = [LT,EQ,GT]
- take 7 (([LT,LT .. GT])) = [LT,LT,LT,LT,LT,LT,LT]
- take 7 (([GT,GT .. LT])) = []
-Testing Enum Bool:
- (succ False) = True
- (succ (minBound::Bool)) = True
- (succ (maxBound::Bool)) = error "Prelude.Enum.Bool.succ: bad argument"
- (pred True) = False
- (pred (maxBound::Bool)) = False
- (pred (minBound::Bool)) = error "Prelude.Enum.Bool.pred: bad argument"
- (toEnum 0)::Bool = False
- (toEnum 5)::Bool = error "Prelude.Enum.Bool.toEnum: bad argument"
- (fromEnum False) = 0
- (fromEnum True) = 1
- ([False ..]) = [False,True]
- ([True ..]) = [True]
- ([False,True ..]) = [False,True]
- ([True,False ..]) = [True,False]
- (take 7 ([False,False ..])) = [False,False,False,False,False,False,False]
- (take 7 ([True,True ..])) = [True,True,True,True,True,True,True]
- ([False .. True]) = [False,True]
- ([True .. False]) = []
- take 7 ([False,False .. False]) = [False,False,False,False,False,False,False]
- take 7 ([False,False .. True]) = [False,False,False,False,False,False,False]
- take 7 ([False,True .. False]) = [False]
- take 7 ([False,True .. True]) = [False,True]
- take 7 ([True,False .. False]) = [True,False]
- take 7 ([True,False .. True]) = [True]
- take 7 ([True,True .. False]) = []
- take 7 ([True,True .. True]) = [True,True,True,True,True,True,True]
-Testing Enum Rational:
- (succ (0::Rational)) = 1 % 1
- (succ ((-1)::Rational)) = 0 % 1
- pred (1::Rational) = 0 % 1
- pred (0::Rational) = (-1) % 1
- (map (toEnum::Int->Rational) [1,minBound,maxBound]) = [1 % 1,(-9223372036854775808) % 1,9223372036854775807 % 1]
- (map fromEnum [(1::Rational),42,45]) = [1,42,45]
- (take 7 [(1::Rational)..]) = [1 % 1,2 % 1,3 % 1,4 % 1,5 % 1,6 % 1,7 % 1]
- (take 7 [(-5::Rational)..]) = [(-5) % 1,(-4) % 1,(-3) % 1,(-2) % 1,(-1) % 1,0 % 1,1 % 1]
- (take 7 [(1::Rational),2..]) = [1 % 1,2 % 1,3 % 1,4 % 1,5 % 1,6 % 1,7 % 1]
- (take 7 [(1::Rational),7..]) = [1 % 1,7 % 1,13 % 1,19 % 1,25 % 1,31 % 1,37 % 1]
- (take 7 [(1::Rational),1..]) = [1 % 1,1 % 1,1 % 1,1 % 1,1 % 1,1 % 1,1 % 1]
- (take 7 [(1::Rational),0..]) = [1 % 1,0 % 1,(-1) % 1,(-2) % 1,(-3) % 1,(-4) % 1,(-5) % 1]
- (take 7 [(5::Rational),2..]) = [5 % 1,2 % 1,(-1) % 1,(-4) % 1,(-7) % 1,(-10) % 1,(-13) % 1]
- (take 7 ([(1::Rational) .. 5])) = [1 % 1,2 % 1,3 % 1,4 % 1,5 % 1]
- (take 4 ([(1::Rational) .. 1])) = [1 % 1]
- (take 7 ([(1::Rational) .. 0])) = []
- (take 7 ([(5::Rational) .. 0])) = []
- (take 7 [(5::Rational),4..1]) = [5 % 1,4 % 1,3 % 1,2 % 1,1 % 1]
- (take 7 [(5::Rational),3..1]) = [5 % 1,3 % 1,1 % 1]
- (take 7 [(5::Rational),3..2]) = [5 % 1,3 % 1,1 % 1]
- (take 7 [(1::Rational),2..1]) = [1 % 1]
- (take 7 [(2::Rational),1..2]) = [2 % 1]
- (take 7 [(2::Rational),1..1]) = [2 % 1,1 % 1]
- (take 7 [(2::Rational),3..1]) = []
-Testing Enum (Ratio Int):
- (succ (0::Ratio Int)) = 1 % 1
- (succ ((-1)::Ratio Int)) = 0 % 1
- pred (1::Ratio Int) = 0 % 1
- pred (0::Ratio Int) = (-1) % 1
- (map (toEnum::Int->Ratio Int) [1,minBound,maxBound]) = [1 % 1,(-9223372036854775808) % 1,9223372036854775807 % 1]
- (map fromEnum [(1::Ratio Int),42,45]) = [1,42,45]
- (take 7 [(1::Ratio Int)..]) = [1 % 1,2 % 1,3 % 1,4 % 1,5 % 1,6 % 1,7 % 1]
- (take 7 [(-5::Ratio Int)..]) = [(-5) % 1,(-4) % 1,(-3) % 1,(-2) % 1,(-1) % 1,0 % 1,1 % 1]
- (take 7 [((toEnum ((maxBound::Int)-5))::Ratio Int)..]) = [9223372036854775802 % 1,9223372036854775803 % 1,9223372036854775804 % 1,9223372036854775805 % 1,9223372036854775806 % 1,9223372036854775807 % 1,(-9223372036854775808) % 1]
- (take 7 [(1::Ratio Int),2..]) = [1 % 1,2 % 1,3 % 1,4 % 1,5 % 1,6 % 1,7 % 1]
- (take 7 [(1::Ratio Int),7..]) = [1 % 1,7 % 1,13 % 1,19 % 1,25 % 1,31 % 1,37 % 1]
- (take 7 [(1::Ratio Int),1..]) = [1 % 1,1 % 1,1 % 1,1 % 1,1 % 1,1 % 1,1 % 1]
- (take 7 [(1::Ratio Int),0..]) = [1 % 1,0 % 1,(-1) % 1,(-2) % 1,(-3) % 1,(-4) % 1,(-5) % 1]
- (take 7 [(5::Ratio Int),2..]) = [5 % 1,2 % 1,(-1) % 1,(-4) % 1,(-7) % 1,(-10) % 1,(-13) % 1]
- (take 7 [x, x-1 ..]) = [(-9223372036854775807) % 1,(-9223372036854775808) % 1,9223372036854775807 % 1,9223372036854775806 % 1,9223372036854775805 % 1,9223372036854775804 % 1,9223372036854775803 % 1]
- (take 7 [x, x-1 ..]) = [(-9223372036854775803) % 1,(-9223372036854775804) % 1,(-9223372036854775805) % 1,(-9223372036854775806) % 1,(-9223372036854775807) % 1,(-9223372036854775808) % 1,9223372036854775807 % 1]
- (take 7 [x, (x+1) ..]) = [9223372036854775802 % 1,9223372036854775803 % 1,9223372036854775804 % 1,9223372036854775805 % 1,9223372036854775806 % 1,9223372036854775807 % 1,(-9223372036854775808) % 1]
- (take 7 ([(1::Ratio Int) .. 5])) = [1 % 1,2 % 1,3 % 1,4 % 1,5 % 1]
- (take 4 ([(1::Ratio Int) .. 1])) = [1 % 1]
- (take 7 ([(1::Ratio Int) .. 0])) = []
- (take 7 ([(5::Ratio Int) .. 0])) = []
- (take 7 ([x..y])) = [9223372036854775802 % 1,9223372036854775803 % 1,9223372036854775804 % 1,9223372036854775805 % 1,9223372036854775806 % 1,9223372036854775807 % 1]
- (take 7 ([x..y])) = []
- (take 7 [(5::Ratio Int),4..1]) = [5 % 1,4 % 1,3 % 1,2 % 1,1 % 1]
- (take 7 [(5::Ratio Int),3..1]) = [5 % 1,3 % 1,1 % 1]
- (take 7 [(5::Ratio Int),3..2]) = [5 % 1,3 % 1,1 % 1]
- (take 7 [(1::Ratio Int),2..1]) = [1 % 1]
- (take 7 [(2::Ratio Int),1..2]) = [2 % 1]
- (take 7 [(2::Ratio Int),1..1]) = [2 % 1,1 % 1]
- (take 7 [(2::Ratio Int),3..1]) = []
- (take 7 [x,(x+1)..y]) = [9223372036854775803 % 1,9223372036854775804 % 1,9223372036854775805 % 1,9223372036854775806 % 1,9223372036854775807 % 1]
- (take 7 [x,(x-1)..y]) = [(-9223372036854775803) % 1,(-9223372036854775804) % 1,(-9223372036854775805) % 1,(-9223372036854775806) % 1,(-9223372036854775807) % 1,(-9223372036854775808) % 1]
diff --git a/testsuite/tests/lib/should_run/enum02.hs b/testsuite/tests/lib/should_run/enum02.hs
deleted file mode 100644
index 3ba9d4912d..0000000000
--- a/testsuite/tests/lib/should_run/enum02.hs
+++ /dev/null
@@ -1,263 +0,0 @@
--- !!! Testing the Int Enum instances.
-module Main(main) where
-
-import Control.Exception
-import Prelude hiding (catch)
-import Data.Int
-
-main = do
- putStrLn "Testing Enum Int8:"
- testEnumInt8
- putStrLn "Testing Enum Int16:"
- testEnumInt16
- putStrLn "Testing Enum Int32:"
- testEnumInt32
- putStrLn "Testing Enum Int64:"
- testEnumInt64
-
-#define printTest(x) (do{ putStr ( " " ++ "x" ++ " = " ) ; print (x) })
-
-testEnumInt8 :: IO ()
-testEnumInt8 = do
- -- succ
- printTest ((succ (0::Int8)))
- printTest ((succ (minBound::Int8)))
- mayBomb (printTest ((succ (maxBound::Int8))))
-
- -- pred
- printTest (pred (1::Int8))
- printTest (pred (maxBound::Int8))
- mayBomb (printTest (pred (minBound::Int8)))
-
- -- toEnum
- printTest ((map (toEnum::Int->Int8) [1, fromIntegral (minBound::Int8), fromIntegral (maxBound::Int8)]))
- mayBomb (printTest ((toEnum (maxBound::Int))::Int8))
-
- -- fromEnum
- printTest ((map fromEnum [(1::Int8),minBound,maxBound]))
-
- -- [x..] aka enumFrom
- printTest ((take 7 [(1::Int8)..]))
- printTest ((take 7 [((maxBound::Int8)-5)..])) -- just in case it doesn't catch the upper bound..
-
- -- [x,y..] aka enumFromThen
- printTest ((take 7 [(1::Int8),2..]))
- printTest ((take 7 [(1::Int8),7..]))
- printTest ((take 7 [(1::Int8),1..]))
- printTest ((take 7 [(1::Int8),0..]))
- printTest ((take 7 [(5::Int8),2..]))
- let x = (minBound::Int8) + 1
- printTest ((take 7 [x, x-1 ..]))
- let x = (minBound::Int8) + 5
- printTest ((take 7 [x, x-1 ..]))
- let x = (maxBound::Int8) - 5
- printTest ((take 7 [x, (x+1) ..]))
-
- -- [x..y] aka enumFromTo
- printTest ((take 7 ([(1::Int8) .. 5])))
- printTest ((take 4 ([(1::Int8) .. 1])))
- printTest ((take 7 ([(1::Int8) .. 0])))
- printTest ((take 7 ([(5::Int8) .. 0])))
- printTest ((take 7 ([(maxBound-(5::Int8)) .. maxBound])))
- printTest ((take 7 ([(minBound+(5::Int8)) .. minBound])))
-
- -- [x,y..z] aka enumFromThenTo
- printTest ((take 7 [(5::Int8),4..1]))
- printTest ((take 7 [(5::Int8),3..1]))
- printTest ((take 7 [(5::Int8),3..2]))
- printTest ((take 7 [(1::Int8),2..1]))
- printTest ((take 7 [(2::Int8),1..2]))
- printTest ((take 7 [(2::Int8),1..1]))
- printTest ((take 7 [(2::Int8),3..1]))
-
- let x = (maxBound::Int8) - 4
- printTest ((take 7 [x,(x+1)..maxBound]))
- let x = (minBound::Int8) + 5
- printTest ((take 7 [x,(x-1)..minBound]))
-
-testEnumInt16 :: IO ()
-testEnumInt16 = do
- -- succ
- printTest ((succ (0::Int16)))
- printTest ((succ (minBound::Int16)))
- mayBomb (printTest ((succ (maxBound::Int16))))
-
- -- pred
- printTest (pred (1::Int16))
- printTest (pred (maxBound::Int16))
- mayBomb (printTest (pred (minBound::Int16)))
-
- -- toEnum
- printTest ((map (toEnum::Int->Int16) [1, fromIntegral (minBound::Int16), fromIntegral (maxBound::Int16)]))
- mayBomb (printTest ((toEnum (maxBound::Int))::Int16))
-
-
- -- fromEnum
- printTest ((map fromEnum [(1::Int16),minBound,maxBound]))
-
- -- [x..] aka enumFrom
- printTest ((take 7 [(1::Int16)..]))
- printTest ((take 7 [((maxBound::Int16)-5)..])) -- just in case it doesn't catch the upper bound..
-
- -- [x,y..] aka enumFromThen
- printTest ((take 7 [(1::Int16),2..]))
- printTest ((take 7 [(1::Int16),7..]))
- printTest ((take 7 [(1::Int16),1..]))
- printTest ((take 7 [(1::Int16),0..]))
- printTest ((take 7 [(5::Int16),2..]))
- let x = (minBound::Int16) + 1
- printTest ((take 7 [x, x-1 ..]))
- let x = (minBound::Int16) + 5
- printTest ((take 7 [x, x-1 ..]))
- let x = (maxBound::Int16) - 5
- printTest ((take 7 [x, (x+1) ..]))
-
- -- [x..y] aka enumFromTo
- printTest ((take 7 ([(1::Int16) .. 5])))
- printTest ((take 4 ([(1::Int16) .. 1])))
- printTest ((take 7 ([(1::Int16) .. 0])))
- printTest ((take 7 ([(5::Int16) .. 0])))
- printTest ((take 7 ([(maxBound-(5::Int16)) .. maxBound])))
- printTest ((take 7 ([(minBound+(5::Int16)) .. minBound])))
-
- -- [x,y..z] aka enumFromThenTo
- printTest ((take 7 [(5::Int16),4..1]))
- printTest ((take 7 [(5::Int16),3..1]))
- printTest ((take 7 [(5::Int16),3..2]))
- printTest ((take 7 [(1::Int16),2..1]))
- printTest ((take 7 [(2::Int16),1..2]))
- printTest ((take 7 [(2::Int16),1..1]))
- printTest ((take 7 [(2::Int16),3..1]))
-
- let x = (maxBound::Int16) - 4
- printTest ((take 7 [x,(x+1)..maxBound]))
- let x = (minBound::Int16) + 5
- printTest ((take 7 [x,(x-1)..minBound]))
-
-testEnumInt32 :: IO ()
-testEnumInt32 = do
- -- succ
- printTest ((succ (0::Int32)))
- printTest ((succ (minBound::Int32)))
- mayBomb (printTest ((succ (maxBound::Int32))))
-
- -- pred
- printTest (pred (1::Int32))
- printTest (pred (maxBound::Int32))
- mayBomb (printTest (pred (minBound::Int32)))
-
- -- toEnum
- printTest ((map (toEnum::Int->Int32) [1, fromIntegral (minBound::Int32), fromIntegral (maxBound::Int32)]))
- mayBomb (printTest ((toEnum (maxBound::Int))::Int32))
-
- -- fromEnum
- printTest ((map fromEnum [(1::Int32),minBound,maxBound]))
-
- -- [x..] aka enumFrom
- printTest ((take 7 [(1::Int32)..]))
- printTest ((take 7 [((maxBound::Int32)-5)..])) -- just in case it doesn't catch the upper bound..
-
- -- [x,y..] aka enumFromThen
- printTest ((take 7 [(1::Int32),2..]))
- printTest ((take 7 [(1::Int32),7..]))
- printTest ((take 7 [(1::Int32),1..]))
- printTest ((take 7 [(1::Int32),0..]))
- printTest ((take 7 [(5::Int32),2..]))
- let x = (minBound::Int32) + 1
- printTest ((take 7 [x, x-1 ..]))
- let x = (minBound::Int32) + 5
- printTest ((take 7 [x, x-1 ..]))
- let x = (maxBound::Int32) - 5
- printTest ((take 7 [x, (x+1) ..]))
-
- -- [x..y] aka enumFromTo
- printTest ((take 7 ([(1::Int32) .. 5])))
- printTest ((take 4 ([(1::Int32) .. 1])))
- printTest ((take 7 ([(1::Int32) .. 0])))
- printTest ((take 7 ([(5::Int32) .. 0])))
- printTest ((take 7 ([(maxBound-(5::Int32)) .. maxBound])))
- printTest ((take 7 ([(minBound+(5::Int32)) .. minBound])))
-
- -- [x,y..z] aka enumFromThenTo
- printTest ((take 7 [(5::Int32),4..1]))
- printTest ((take 7 [(5::Int32),3..1]))
- printTest ((take 7 [(5::Int32),3..2]))
- printTest ((take 7 [(1::Int32),2..1]))
- printTest ((take 7 [(2::Int32),1..2]))
- printTest ((take 7 [(2::Int32),1..1]))
- printTest ((take 7 [(2::Int32),3..1]))
-
- let x = (maxBound::Int32) - 4
- printTest ((take 7 [x,(x+1)..maxBound]))
- let x = (minBound::Int32) + 5
- printTest ((take 7 [x,(x-1)..minBound]))
-
-testEnumInt64 :: IO ()
-testEnumInt64 = do
- -- succ
- printTest ((succ (0::Int64)))
- printTest ((succ (minBound::Int64)))
- mayBomb (printTest ((succ (maxBound::Int64))))
-
- -- pred
- printTest (pred (1::Int64))
- printTest (pred (maxBound::Int64))
- mayBomb (printTest (pred (minBound::Int64)))
-
- -- toEnum
- mayBomb (printTest ((map (toEnum::Int->Int64) [1, fromIntegral (minBound::Int64), fromIntegral (maxBound::Int64)])))
- mayBomb (printTest ((toEnum (maxBound::Int))::Int64))
-
- -- fromEnum
- printTest ((map fromEnum [(1::Int64),fromIntegral (minBound::Int) ,fromIntegral (maxBound::Int)]))
- mayBomb (printTest (fromEnum (maxBound::Int64)))
-
- -- [x..] aka enumFrom
- printTest ((take 7 [(1::Int64)..]))
- printTest ((take 7 [((maxBound::Int64)-5)..])) -- just in case it doesn't catch the upper bound..
-
- -- [x,y..] aka enumFromThen
- printTest ((take 7 [(1::Int64),2..]))
- printTest ((take 7 [(1::Int64),7..]))
- printTest ((take 7 [(1::Int64),1..]))
- printTest ((take 7 [(1::Int64),0..]))
- printTest ((take 7 [(5::Int64),2..]))
- let x = (minBound::Int64) + 1
- printTest ((take 7 [x, x-1 ..]))
- let x = (minBound::Int64) + 5
- printTest ((take 7 [x, x-1 ..]))
- let x = (maxBound::Int64) - 5
- printTest ((take 7 [x, (x+1) ..]))
-
- -- [x..y] aka enumFromTo
- printTest ((take 7 ([(1::Int64) .. 5])))
- printTest ((take 4 ([(1::Int64) .. 1])))
- printTest ((take 7 ([(1::Int64) .. 0])))
- printTest ((take 7 ([(5::Int64) .. 0])))
- printTest ((take 7 ([(maxBound-(5::Int64)) .. maxBound])))
- printTest ((take 7 ([(minBound+(5::Int64)) .. minBound])))
-
- -- [x,y..z] aka enumFromThenTo
- printTest ((take 7 [(5::Int64),4..1]))
- printTest ((take 7 [(5::Int64),3..1]))
- printTest ((take 7 [(5::Int64),3..2]))
- printTest ((take 7 [(1::Int64),2..1]))
- printTest ((take 7 [(2::Int64),1..2]))
- printTest ((take 7 [(2::Int64),1..1]))
- printTest ((take 7 [(2::Int64),3..1]))
-
- let x = (maxBound::Int64) - 4
- printTest ((take 7 [x,(x+1)..maxBound]))
- let x = (minBound::Int64) + 5
- printTest ((take 7 [x,(x-1)..minBound]))
-
-
---
---
--- Utils
---
---
-
-
-mayBomb x = catch x (\(ErrorCall e) -> putStrLn ("error " ++ show e))
- `catch` (\e -> putStrLn ("Fail: " ++ show (e :: SomeException)))
diff --git a/testsuite/tests/lib/should_run/enum02.stdout b/testsuite/tests/lib/should_run/enum02.stdout
deleted file mode 100644
index 06d3bb5cae..0000000000
--- a/testsuite/tests/lib/should_run/enum02.stdout
+++ /dev/null
@@ -1,141 +0,0 @@
-Testing Enum Int8:
- (succ (0::Int8)) = 1
- (succ (minBound::Int8)) = -127
- (succ (maxBound::Int8)) = error "Enum.succ{Int8}: tried to take `succ' of maxBound"
- pred (1::Int8) = 0
- pred (maxBound::Int8) = 126
- pred (minBound::Int8) = error "Enum.pred{Int8}: tried to take `pred' of minBound"
- (map (toEnum::Int->Int8) [1, fromIntegral (minBound::Int8), fromIntegral (maxBound::Int8)]) = [1,-128,127]
- (toEnum (maxBound::Int))::Int8 = error "Enum.toEnum{Int8}: tag (2147483647) is outside of bounds (-128,127)"
- (map fromEnum [(1::Int8),minBound,maxBound]) = [1,-128,127]
- (take 7 [(1::Int8)..]) = [1,2,3,4,5,6,7]
- (take 7 [((maxBound::Int8)-5)..]) = [122,123,124,125,126,127]
- (take 7 [(1::Int8),2..]) = [1,2,3,4,5,6,7]
- (take 7 [(1::Int8),7..]) = [1,7,13,19,25,31,37]
- (take 7 [(1::Int8),1..]) = [1,1,1,1,1,1,1]
- (take 7 [(1::Int8),0..]) = [1,0,-1,-2,-3,-4,-5]
- (take 7 [(5::Int8),2..]) = [5,2,-1,-4,-7,-10,-13]
- (take 7 [x, x-1 ..]) = [-127,-128]
- (take 7 [x, x-1 ..]) = [-123,-124,-125,-126,-127,-128]
- (take 7 [x, (x+1) ..]) = [122,123,124,125,126,127]
- (take 7 ([(1::Int8) .. 5])) = [1,2,3,4,5]
- (take 4 ([(1::Int8) .. 1])) = [1]
- (take 7 ([(1::Int8) .. 0])) = []
- (take 7 ([(5::Int8) .. 0])) = []
- (take 7 ([(maxBound-(5::Int8)) .. maxBound])) = [122,123,124,125,126,127]
- (take 7 ([(minBound+(5::Int8)) .. minBound])) = []
- (take 7 [(5::Int8),4..1]) = [5,4,3,2,1]
- (take 7 [(5::Int8),3..1]) = [5,3,1]
- (take 7 [(5::Int8),3..2]) = [5,3]
- (take 7 [(1::Int8),2..1]) = [1]
- (take 7 [(2::Int8),1..2]) = [2]
- (take 7 [(2::Int8),1..1]) = [2,1]
- (take 7 [(2::Int8),3..1]) = []
- (take 7 [x,(x+1)..maxBound]) = [123,124,125,126,127]
- (take 7 [x,(x-1)..minBound]) = [-123,-124,-125,-126,-127,-128]
-Testing Enum Int16:
- (succ (0::Int16)) = 1
- (succ (minBound::Int16)) = -32767
- (succ (maxBound::Int16)) = error "Enum.succ{Int16}: tried to take `succ' of maxBound"
- pred (1::Int16) = 0
- pred (maxBound::Int16) = 32766
- pred (minBound::Int16) = error "Enum.pred{Int16}: tried to take `pred' of minBound"
- (map (toEnum::Int->Int16) [1, fromIntegral (minBound::Int16), fromIntegral (maxBound::Int16)]) = [1,-32768,32767]
- (toEnum (maxBound::Int))::Int16 = error "Enum.toEnum{Int16}: tag (2147483647) is outside of bounds (-32768,32767)"
- (map fromEnum [(1::Int16),minBound,maxBound]) = [1,-32768,32767]
- (take 7 [(1::Int16)..]) = [1,2,3,4,5,6,7]
- (take 7 [((maxBound::Int16)-5)..]) = [32762,32763,32764,32765,32766,32767]
- (take 7 [(1::Int16),2..]) = [1,2,3,4,5,6,7]
- (take 7 [(1::Int16),7..]) = [1,7,13,19,25,31,37]
- (take 7 [(1::Int16),1..]) = [1,1,1,1,1,1,1]
- (take 7 [(1::Int16),0..]) = [1,0,-1,-2,-3,-4,-5]
- (take 7 [(5::Int16),2..]) = [5,2,-1,-4,-7,-10,-13]
- (take 7 [x, x-1 ..]) = [-32767,-32768]
- (take 7 [x, x-1 ..]) = [-32763,-32764,-32765,-32766,-32767,-32768]
- (take 7 [x, (x+1) ..]) = [32762,32763,32764,32765,32766,32767]
- (take 7 ([(1::Int16) .. 5])) = [1,2,3,4,5]
- (take 4 ([(1::Int16) .. 1])) = [1]
- (take 7 ([(1::Int16) .. 0])) = []
- (take 7 ([(5::Int16) .. 0])) = []
- (take 7 ([(maxBound-(5::Int16)) .. maxBound])) = [32762,32763,32764,32765,32766,32767]
- (take 7 ([(minBound+(5::Int16)) .. minBound])) = []
- (take 7 [(5::Int16),4..1]) = [5,4,3,2,1]
- (take 7 [(5::Int16),3..1]) = [5,3,1]
- (take 7 [(5::Int16),3..2]) = [5,3]
- (take 7 [(1::Int16),2..1]) = [1]
- (take 7 [(2::Int16),1..2]) = [2]
- (take 7 [(2::Int16),1..1]) = [2,1]
- (take 7 [(2::Int16),3..1]) = []
- (take 7 [x,(x+1)..maxBound]) = [32763,32764,32765,32766,32767]
- (take 7 [x,(x-1)..minBound]) = [-32763,-32764,-32765,-32766,-32767,-32768]
-Testing Enum Int32:
- (succ (0::Int32)) = 1
- (succ (minBound::Int32)) = -2147483647
- (succ (maxBound::Int32)) = error "Enum.succ{Int32}: tried to take `succ' of maxBound"
- pred (1::Int32) = 0
- pred (maxBound::Int32) = 2147483646
- pred (minBound::Int32) = error "Enum.pred{Int32}: tried to take `pred' of minBound"
- (map (toEnum::Int->Int32) [1, fromIntegral (minBound::Int32), fromIntegral (maxBound::Int32)]) = [1,-2147483648,2147483647]
- (toEnum (maxBound::Int))::Int32 = 2147483647
- (map fromEnum [(1::Int32),minBound,maxBound]) = [1,-2147483648,2147483647]
- (take 7 [(1::Int32)..]) = [1,2,3,4,5,6,7]
- (take 7 [((maxBound::Int32)-5)..]) = [2147483642,2147483643,2147483644,2147483645,2147483646,2147483647]
- (take 7 [(1::Int32),2..]) = [1,2,3,4,5,6,7]
- (take 7 [(1::Int32),7..]) = [1,7,13,19,25,31,37]
- (take 7 [(1::Int32),1..]) = [1,1,1,1,1,1,1]
- (take 7 [(1::Int32),0..]) = [1,0,-1,-2,-3,-4,-5]
- (take 7 [(5::Int32),2..]) = [5,2,-1,-4,-7,-10,-13]
- (take 7 [x, x-1 ..]) = [-2147483647,-2147483648]
- (take 7 [x, x-1 ..]) = [-2147483643,-2147483644,-2147483645,-2147483646,-2147483647,-2147483648]
- (take 7 [x, (x+1) ..]) = [2147483642,2147483643,2147483644,2147483645,2147483646,2147483647]
- (take 7 ([(1::Int32) .. 5])) = [1,2,3,4,5]
- (take 4 ([(1::Int32) .. 1])) = [1]
- (take 7 ([(1::Int32) .. 0])) = []
- (take 7 ([(5::Int32) .. 0])) = []
- (take 7 ([(maxBound-(5::Int32)) .. maxBound])) = [2147483642,2147483643,2147483644,2147483645,2147483646,2147483647]
- (take 7 ([(minBound+(5::Int32)) .. minBound])) = []
- (take 7 [(5::Int32),4..1]) = [5,4,3,2,1]
- (take 7 [(5::Int32),3..1]) = [5,3,1]
- (take 7 [(5::Int32),3..2]) = [5,3]
- (take 7 [(1::Int32),2..1]) = [1]
- (take 7 [(2::Int32),1..2]) = [2]
- (take 7 [(2::Int32),1..1]) = [2,1]
- (take 7 [(2::Int32),3..1]) = []
- (take 7 [x,(x+1)..maxBound]) = [2147483643,2147483644,2147483645,2147483646,2147483647]
- (take 7 [x,(x-1)..minBound]) = [-2147483643,-2147483644,-2147483645,-2147483646,-2147483647,-2147483648]
-Testing Enum Int64:
- (succ (0::Int64)) = 1
- (succ (minBound::Int64)) = -9223372036854775807
- (succ (maxBound::Int64)) = error "Enum.succ{Int64}: tried to take `succ' of maxBound"
- pred (1::Int64) = 0
- pred (maxBound::Int64) = 9223372036854775806
- pred (minBound::Int64) = error "Enum.pred{Int64}: tried to take `pred' of minBound"
- (map (toEnum::Int->Int64) [1, fromIntegral (minBound::Int64), fromIntegral (maxBound::Int64)]) = [1,0,-1]
- (toEnum (maxBound::Int))::Int64 = 2147483647
- (map fromEnum [(1::Int64),fromIntegral (minBound::Int) ,fromIntegral (maxBound::Int)]) = [1,-2147483648,2147483647]
- fromEnum (maxBound::Int64) = error "Enum.fromEnum{Int64}: value (9223372036854775807) is outside of Int's bounds (-2147483648,2147483647)"
- (take 7 [(1::Int64)..]) = [1,2,3,4,5,6,7]
- (take 7 [((maxBound::Int64)-5)..]) = [9223372036854775802,9223372036854775803,9223372036854775804,9223372036854775805,9223372036854775806,9223372036854775807]
- (take 7 [(1::Int64),2..]) = [1,2,3,4,5,6,7]
- (take 7 [(1::Int64),7..]) = [1,7,13,19,25,31,37]
- (take 7 [(1::Int64),1..]) = [1,1,1,1,1,1,1]
- (take 7 [(1::Int64),0..]) = [1,0,-1,-2,-3,-4,-5]
- (take 7 [(5::Int64),2..]) = [5,2,-1,-4,-7,-10,-13]
- (take 7 [x, x-1 ..]) = [-9223372036854775807,-9223372036854775808]
- (take 7 [x, x-1 ..]) = [-9223372036854775803,-9223372036854775804,-9223372036854775805,-9223372036854775806,-9223372036854775807,-9223372036854775808]
- (take 7 [x, (x+1) ..]) = [9223372036854775802,9223372036854775803,9223372036854775804,9223372036854775805,9223372036854775806,9223372036854775807]
- (take 7 ([(1::Int64) .. 5])) = [1,2,3,4,5]
- (take 4 ([(1::Int64) .. 1])) = [1]
- (take 7 ([(1::Int64) .. 0])) = []
- (take 7 ([(5::Int64) .. 0])) = []
- (take 7 ([(maxBound-(5::Int64)) .. maxBound])) = [9223372036854775802,9223372036854775803,9223372036854775804,9223372036854775805,9223372036854775806,9223372036854775807]
- (take 7 ([(minBound+(5::Int64)) .. minBound])) = []
- (take 7 [(5::Int64),4..1]) = [5,4,3,2,1]
- (take 7 [(5::Int64),3..1]) = [5,3,1]
- (take 7 [(5::Int64),3..2]) = [5,3]
- (take 7 [(1::Int64),2..1]) = [1]
- (take 7 [(2::Int64),1..2]) = [2]
- (take 7 [(2::Int64),1..1]) = [2,1]
- (take 7 [(2::Int64),3..1]) = []
- (take 7 [x,(x+1)..maxBound]) = [9223372036854775803,9223372036854775804,9223372036854775805,9223372036854775806,9223372036854775807]
- (take 7 [x,(x-1)..minBound]) = [-9223372036854775803,-9223372036854775804,-9223372036854775805,-9223372036854775806,-9223372036854775807,-9223372036854775808]
diff --git a/testsuite/tests/lib/should_run/enum02.stdout-alpha-dec-osf3 b/testsuite/tests/lib/should_run/enum02.stdout-alpha-dec-osf3
deleted file mode 100644
index 23222450b5..0000000000
--- a/testsuite/tests/lib/should_run/enum02.stdout-alpha-dec-osf3
+++ /dev/null
@@ -1,141 +0,0 @@
-Testing Enum Int8:
- (succ (0::Int8)) = 1
- (succ (minBound::Int8)) = -127
- (succ (maxBound::Int8)) = error "Enum.succ{Int8}: tried to take `succ' of maxBound"
- pred (1::Int8) = 0
- pred (maxBound::Int8) = 126
- pred (minBound::Int8) = error "Enum.pred{Int8}: tried to take `pred' of minBound"
- (map (toEnum::Int->Int8) [1, toInt (minBound::Int8), toInt (maxBound::Int8)]) = [1,-128,127]
- (toEnum (maxBound::Int))::Int8 = error "Enum.toEnum{Int8}: tag (9223372036854775807) is outside of bounds (-128,127)"
- (map fromEnum [(1::Int8),minBound,maxBound]) = [1,-128,127]
- (take 7 [(1::Int8)..]) = [1,2,3,4,5,6,7]
- (take 7 [((maxBound::Int8)-5)..]) = [122,123,124,125,126,127]
- (take 7 [(1::Int8),2..]) = [1,2,3,4,5,6,7]
- (take 7 [(1::Int8),7..]) = [1,7,13,19,25,31,37]
- (take 7 [(1::Int8),1..]) = [1,1,1,1,1,1,1]
- (take 7 [(1::Int8),0..]) = [1,0,-1,-2,-3,-4,-5]
- (take 7 [(5::Int8),2..]) = [5,2,-1,-4,-7,-10,-13]
- (take 7 [x, x-1 ..]) = [-127,-128]
- (take 7 [x, x-1 ..]) = [-123,-124,-125,-126,-127,-128]
- (take 7 [x, (x+1) ..]) = [122,123,124,125,126,127]
- (take 7 ([(1::Int8) .. 5])) = [1,2,3,4,5]
- (take 4 ([(1::Int8) .. 1])) = [1]
- (take 7 ([(1::Int8) .. 0])) = []
- (take 7 ([(5::Int8) .. 0])) = []
- (take 7 ([(maxBound-(5::Int8)) .. maxBound])) = [122,123,124,125,126,127]
- (take 7 ([(minBound+(5::Int8)) .. minBound])) = []
- (take 7 [(5::Int8),4..1]) = [5,4,3,2,1]
- (take 7 [(5::Int8),3..1]) = [5,3,1]
- (take 7 [(5::Int8),3..2]) = [5,3]
- (take 7 [(1::Int8),2..1]) = [1]
- (take 7 [(2::Int8),1..2]) = [2]
- (take 7 [(2::Int8),1..1]) = [2,1]
- (take 7 [(2::Int8),3..1]) = []
- (take 7 [x,(x+1)..maxBound]) = [123,124,125,126,127]
- (take 7 [x,(x-1)..minBound]) = [-123,-124,-125,-126,-127,-128]
-Testing Enum Int16:
- (succ (0::Int16)) = 1
- (succ (minBound::Int16)) = -32767
- (succ (maxBound::Int16)) = error "Enum.succ{Int16}: tried to take `succ' of maxBound"
- pred (1::Int16) = 0
- pred (maxBound::Int16) = 32766
- pred (minBound::Int16) = error "Enum.pred{Int16}: tried to take `pred' of minBound"
- (map (toEnum::Int->Int16) [1, toInt (minBound::Int16), toInt (maxBound::Int16)]) = [1,-32768,32767]
- (toEnum (maxBound::Int))::Int16 = error "Enum.toEnum{Int16}: tag (9223372036854775807) is outside of bounds (-32768,32767)"
- (map fromEnum [(1::Int16),minBound,maxBound]) = [1,-32768,32767]
- (take 7 [(1::Int16)..]) = [1,2,3,4,5,6,7]
- (take 7 [((maxBound::Int16)-5)..]) = [32762,32763,32764,32765,32766,32767]
- (take 7 [(1::Int16),2..]) = [1,2,3,4,5,6,7]
- (take 7 [(1::Int16),7..]) = [1,7,13,19,25,31,37]
- (take 7 [(1::Int16),1..]) = [1,1,1,1,1,1,1]
- (take 7 [(1::Int16),0..]) = [1,0,-1,-2,-3,-4,-5]
- (take 7 [(5::Int16),2..]) = [5,2,-1,-4,-7,-10,-13]
- (take 7 [x, x-1 ..]) = [-32767,-32768]
- (take 7 [x, x-1 ..]) = [-32763,-32764,-32765,-32766,-32767,-32768]
- (take 7 [x, (x+1) ..]) = [32762,32763,32764,32765,32766,32767]
- (take 7 ([(1::Int16) .. 5])) = [1,2,3,4,5]
- (take 4 ([(1::Int16) .. 1])) = [1]
- (take 7 ([(1::Int16) .. 0])) = []
- (take 7 ([(5::Int16) .. 0])) = []
- (take 7 ([(maxBound-(5::Int16)) .. maxBound])) = [32762,32763,32764,32765,32766,32767]
- (take 7 ([(minBound+(5::Int16)) .. minBound])) = []
- (take 7 [(5::Int16),4..1]) = [5,4,3,2,1]
- (take 7 [(5::Int16),3..1]) = [5,3,1]
- (take 7 [(5::Int16),3..2]) = [5,3]
- (take 7 [(1::Int16),2..1]) = [1]
- (take 7 [(2::Int16),1..2]) = [2]
- (take 7 [(2::Int16),1..1]) = [2,1]
- (take 7 [(2::Int16),3..1]) = []
- (take 7 [x,(x+1)..maxBound]) = [32763,32764,32765,32766,32767]
- (take 7 [x,(x-1)..minBound]) = [-32763,-32764,-32765,-32766,-32767,-32768]
-Testing Enum Int32:
- (succ (0::Int32)) = 1
- (succ (minBound::Int32)) = -2147483647
- (succ (maxBound::Int32)) = error "Enum.succ{Int32}: tried to take `succ' of maxBound"
- pred (1::Int32) = 0
- pred (maxBound::Int32) = 2147483646
- pred (minBound::Int32) = error "Enum.pred{Int32}: tried to take `pred' of minBound"
- (map (toEnum::Int->Int32) [1, toInt (minBound::Int32), toInt (maxBound::Int32)]) = [1,-2147483648,2147483647]
- (toEnum (maxBound::Int))::Int32 = error "Enum.toEnum{Int32}: tag (9223372036854775807) is outside of bounds (-2147483648,2147483647)"
- (map fromEnum [(1::Int32),minBound,maxBound]) = [1,-2147483648,2147483647]
- (take 7 [(1::Int32)..]) = [1,2,3,4,5,6,7]
- (take 7 [((maxBound::Int32)-5)..]) = [2147483642,2147483643,2147483644,2147483645,2147483646,2147483647]
- (take 7 [(1::Int32),2..]) = [1,2,3,4,5,6,7]
- (take 7 [(1::Int32),7..]) = [1,7,13,19,25,31,37]
- (take 7 [(1::Int32),1..]) = [1,1,1,1,1,1,1]
- (take 7 [(1::Int32),0..]) = [1,0,-1,-2,-3,-4,-5]
- (take 7 [(5::Int32),2..]) = [5,2,-1,-4,-7,-10,-13]
- (take 7 [x, x-1 ..]) = [-2147483647,-2147483648]
- (take 7 [x, x-1 ..]) = [-2147483643,-2147483644,-2147483645,-2147483646,-2147483647,-2147483648]
- (take 7 [x, (x+1) ..]) = [2147483642,2147483643,2147483644,2147483645,2147483646,2147483647]
- (take 7 ([(1::Int32) .. 5])) = [1,2,3,4,5]
- (take 4 ([(1::Int32) .. 1])) = [1]
- (take 7 ([(1::Int32) .. 0])) = []
- (take 7 ([(5::Int32) .. 0])) = []
- (take 7 ([(maxBound-(5::Int32)) .. maxBound])) = [2147483642,2147483643,2147483644,2147483645,2147483646,2147483647]
- (take 7 ([(minBound+(5::Int32)) .. minBound])) = []
- (take 7 [(5::Int32),4..1]) = [5,4,3,2,1]
- (take 7 [(5::Int32),3..1]) = [5,3,1]
- (take 7 [(5::Int32),3..2]) = [5,3]
- (take 7 [(1::Int32),2..1]) = [1]
- (take 7 [(2::Int32),1..2]) = [2]
- (take 7 [(2::Int32),1..1]) = [2,1]
- (take 7 [(2::Int32),3..1]) = []
- (take 7 [x,(x+1)..maxBound]) = [2147483643,2147483644,2147483645,2147483646,2147483647]
- (take 7 [x,(x-1)..minBound]) = [-2147483643,-2147483644,-2147483645,-2147483646,-2147483647,-2147483648]
-Testing Enum Int64:
- (succ (0::Int64)) = 1
- (succ (minBound::Int64)) = -9223372036854775807
- (succ (maxBound::Int64)) = error "Enum.succ{Int64}: tried to take `succ' of maxBound"
- pred (1::Int64) = 0
- pred (maxBound::Int64) = 9223372036854775806
- pred (minBound::Int64) = error "Enum.pred{Int64}: tried to take `pred' of minBound"
- (map (toEnum::Int->Int64) [1, toInt (minBound::Int64), toInt (maxBound::Int64)]) = [1,-9223372036854775808,9223372036854775807]
- (toEnum (maxBound::Int))::Int64 = 9223372036854775807
- (map fromEnum [(1::Int64),fromInt (minBound::Int) ,fromInt (maxBound::Int)]) = [1,-9223372036854775808,9223372036854775807]
- fromEnum (maxBound::Int64) = 9223372036854775807
- (take 7 [(1::Int64)..]) = [1,2,3,4,5,6,7]
- (take 7 [((maxBound::Int64)-5)..]) = [9223372036854775802,9223372036854775803,9223372036854775804,9223372036854775805,9223372036854775806,9223372036854775807]
- (take 7 [(1::Int64),2..]) = [1,2,3,4,5,6,7]
- (take 7 [(1::Int64),7..]) = [1,7,13,19,25,31,37]
- (take 7 [(1::Int64),1..]) = [1,1,1,1,1,1,1]
- (take 7 [(1::Int64),0..]) = [1,0,-1,-2,-3,-4,-5]
- (take 7 [(5::Int64),2..]) = [5,2,-1,-4,-7,-10,-13]
- (take 7 [x, x-1 ..]) = [-9223372036854775807,-9223372036854775808]
- (take 7 [x, x-1 ..]) = [-9223372036854775803,-9223372036854775804,-9223372036854775805,-9223372036854775806,-9223372036854775807,-9223372036854775808]
- (take 7 [x, (x+1) ..]) = [9223372036854775802,9223372036854775803,9223372036854775804,9223372036854775805,9223372036854775806,9223372036854775807]
- (take 7 ([(1::Int64) .. 5])) = [1,2,3,4,5]
- (take 4 ([(1::Int64) .. 1])) = [1]
- (take 7 ([(1::Int64) .. 0])) = []
- (take 7 ([(5::Int64) .. 0])) = []
- (take 7 ([(maxBound-(5::Int64)) .. maxBound])) = [9223372036854775802,9223372036854775803,9223372036854775804,9223372036854775805,9223372036854775806,9223372036854775807]
- (take 7 ([(minBound+(5::Int64)) .. minBound])) = []
- (take 7 [(5::Int64),4..1]) = [5,4,3,2,1]
- (take 7 [(5::Int64),3..1]) = [5,3,1]
- (take 7 [(5::Int64),3..2]) = [5,3]
- (take 7 [(1::Int64),2..1]) = [1]
- (take 7 [(2::Int64),1..2]) = [2]
- (take 7 [(2::Int64),1..1]) = [2,1]
- (take 7 [(2::Int64),3..1]) = []
- (take 7 [x,(x+1)..maxBound]) = [9223372036854775803,9223372036854775804,9223372036854775805,9223372036854775806,9223372036854775807]
- (take 7 [x,(x-1)..minBound]) = [-9223372036854775803,-9223372036854775804,-9223372036854775805,-9223372036854775806,-9223372036854775807,-9223372036854775808]
diff --git a/testsuite/tests/lib/should_run/enum02.stdout-hugs b/testsuite/tests/lib/should_run/enum02.stdout-hugs
deleted file mode 100644
index a28b84b187..0000000000
--- a/testsuite/tests/lib/should_run/enum02.stdout-hugs
+++ /dev/null
@@ -1,141 +0,0 @@
-Testing Enum Int8:
- (succ (0::Int8)) = 1
- (succ (minBound::Int8)) = -127
- (succ (maxBound::Int8)) = error "succ: applied to maxBound"
- pred (1::Int8) = 0
- pred (maxBound::Int8) = 126
- pred (minBound::Int8) = error "pred: applied to minBound"
- (map (toEnum::Int->Int8) [1, fromIntegral (minBound::Int8), fromIntegral (maxBound::Int8)]) = [1,-128,127]
- (toEnum (maxBound::Int))::Int8 = -1
- (map fromEnum [(1::Int8),minBound,maxBound]) = [1,-128,127]
- (take 7 [(1::Int8)..]) = [1,2,3,4,5,6,7]
- (take 7 [((maxBound::Int8)-5)..]) = [122,123,124,125,126,127]
- (take 7 [(1::Int8),2..]) = [1,2,3,4,5,6,7]
- (take 7 [(1::Int8),7..]) = [1,7,13,19,25,31,37]
- (take 7 [(1::Int8),1..]) = [1,1,1,1,1,1,1]
- (take 7 [(1::Int8),0..]) = [1,0,-1,-2,-3,-4,-5]
- (take 7 [(5::Int8),2..]) = [5,2,-1,-4,-7,-10,-13]
- (take 7 [x, x-1 ..]) = [-127,-128]
- (take 7 [x, x-1 ..]) = [-123,-124,-125,-126,-127,-128]
- (take 7 [x, (x+1) ..]) = [122,123,124,125,126,127]
- (take 7 ([(1::Int8) .. 5])) = [1,2,3,4,5]
- (take 4 ([(1::Int8) .. 1])) = [1]
- (take 7 ([(1::Int8) .. 0])) = []
- (take 7 ([(5::Int8) .. 0])) = []
- (take 7 ([(maxBound-(5::Int8)) .. maxBound])) = [122,123,124,125,126,127]
- (take 7 ([(minBound+(5::Int8)) .. minBound])) = []
- (take 7 [(5::Int8),4..1]) = [5,4,3,2,1]
- (take 7 [(5::Int8),3..1]) = [5,3,1]
- (take 7 [(5::Int8),3..2]) = [5,3]
- (take 7 [(1::Int8),2..1]) = [1]
- (take 7 [(2::Int8),1..2]) = [2]
- (take 7 [(2::Int8),1..1]) = [2,1]
- (take 7 [(2::Int8),3..1]) = []
- (take 7 [x,(x+1)..maxBound]) = [123,124,125,126,127]
- (take 7 [x,(x-1)..minBound]) = [-123,-124,-125,-126,-127,-128]
-Testing Enum Int16:
- (succ (0::Int16)) = 1
- (succ (minBound::Int16)) = -32767
- (succ (maxBound::Int16)) = error "succ: applied to maxBound"
- pred (1::Int16) = 0
- pred (maxBound::Int16) = 32766
- pred (minBound::Int16) = error "pred: applied to minBound"
- (map (toEnum::Int->Int16) [1, fromIntegral (minBound::Int16), fromIntegral (maxBound::Int16)]) = [1,-32768,32767]
- (toEnum (maxBound::Int))::Int16 = -1
- (map fromEnum [(1::Int16),minBound,maxBound]) = [1,-32768,32767]
- (take 7 [(1::Int16)..]) = [1,2,3,4,5,6,7]
- (take 7 [((maxBound::Int16)-5)..]) = [32762,32763,32764,32765,32766,32767]
- (take 7 [(1::Int16),2..]) = [1,2,3,4,5,6,7]
- (take 7 [(1::Int16),7..]) = [1,7,13,19,25,31,37]
- (take 7 [(1::Int16),1..]) = [1,1,1,1,1,1,1]
- (take 7 [(1::Int16),0..]) = [1,0,-1,-2,-3,-4,-5]
- (take 7 [(5::Int16),2..]) = [5,2,-1,-4,-7,-10,-13]
- (take 7 [x, x-1 ..]) = [-32767,-32768]
- (take 7 [x, x-1 ..]) = [-32763,-32764,-32765,-32766,-32767,-32768]
- (take 7 [x, (x+1) ..]) = [32762,32763,32764,32765,32766,32767]
- (take 7 ([(1::Int16) .. 5])) = [1,2,3,4,5]
- (take 4 ([(1::Int16) .. 1])) = [1]
- (take 7 ([(1::Int16) .. 0])) = []
- (take 7 ([(5::Int16) .. 0])) = []
- (take 7 ([(maxBound-(5::Int16)) .. maxBound])) = [32762,32763,32764,32765,32766,32767]
- (take 7 ([(minBound+(5::Int16)) .. minBound])) = []
- (take 7 [(5::Int16),4..1]) = [5,4,3,2,1]
- (take 7 [(5::Int16),3..1]) = [5,3,1]
- (take 7 [(5::Int16),3..2]) = [5,3]
- (take 7 [(1::Int16),2..1]) = [1]
- (take 7 [(2::Int16),1..2]) = [2]
- (take 7 [(2::Int16),1..1]) = [2,1]
- (take 7 [(2::Int16),3..1]) = []
- (take 7 [x,(x+1)..maxBound]) = [32763,32764,32765,32766,32767]
- (take 7 [x,(x-1)..minBound]) = [-32763,-32764,-32765,-32766,-32767,-32768]
-Testing Enum Int32:
- (succ (0::Int32)) = 1
- (succ (minBound::Int32)) = -2147483647
- (succ (maxBound::Int32)) = error "succ: applied to maxBound"
- pred (1::Int32) = 0
- pred (maxBound::Int32) = 2147483646
- pred (minBound::Int32) = error "pred: applied to minBound"
- (map (toEnum::Int->Int32) [1, fromIntegral (minBound::Int32), fromIntegral (maxBound::Int32)]) = [1,-2147483648,2147483647]
- (toEnum (maxBound::Int))::Int32 = 2147483647
- (map fromEnum [(1::Int32),minBound,maxBound]) = [1,-2147483648,2147483647]
- (take 7 [(1::Int32)..]) = [1,2,3,4,5,6,7]
- (take 7 [((maxBound::Int32)-5)..]) = [2147483642,2147483643,2147483644,2147483645,2147483646,2147483647]
- (take 7 [(1::Int32),2..]) = [1,2,3,4,5,6,7]
- (take 7 [(1::Int32),7..]) = [1,7,13,19,25,31,37]
- (take 7 [(1::Int32),1..]) = [1,1,1,1,1,1,1]
- (take 7 [(1::Int32),0..]) = [1,0,-1,-2,-3,-4,-5]
- (take 7 [(5::Int32),2..]) = [5,2,-1,-4,-7,-10,-13]
- (take 7 [x, x-1 ..]) = [-2147483647,-2147483648]
- (take 7 [x, x-1 ..]) = [-2147483643,-2147483644,-2147483645,-2147483646,-2147483647,-2147483648]
- (take 7 [x, (x+1) ..]) = [2147483642,2147483643,2147483644,2147483645,2147483646,2147483647]
- (take 7 ([(1::Int32) .. 5])) = [1,2,3,4,5]
- (take 4 ([(1::Int32) .. 1])) = [1]
- (take 7 ([(1::Int32) .. 0])) = []
- (take 7 ([(5::Int32) .. 0])) = []
- (take 7 ([(maxBound-(5::Int32)) .. maxBound])) = [2147483642,2147483643,2147483644,2147483645,2147483646,2147483647]
- (take 7 ([(minBound+(5::Int32)) .. minBound])) = []
- (take 7 [(5::Int32),4..1]) = [5,4,3,2,1]
- (take 7 [(5::Int32),3..1]) = [5,3,1]
- (take 7 [(5::Int32),3..2]) = [5,3]
- (take 7 [(1::Int32),2..1]) = [1]
- (take 7 [(2::Int32),1..2]) = [2]
- (take 7 [(2::Int32),1..1]) = [2,1]
- (take 7 [(2::Int32),3..1]) = []
- (take 7 [x,(x+1)..maxBound]) = [2147483643,2147483644,2147483645,2147483646,2147483647]
- (take 7 [x,(x-1)..minBound]) = [-2147483643,-2147483644,-2147483645,-2147483646,-2147483647,-2147483648]
-Testing Enum Int64:
- (succ (0::Int64)) = 1
- (succ (minBound::Int64)) = -9223372036854775807
- (succ (maxBound::Int64)) = error "succ: applied to maxBound"
- pred (1::Int64) = 0
- pred (maxBound::Int64) = 9223372036854775806
- pred (minBound::Int64) = error "pred: applied to minBound"
- (map (toEnum::Int->Int64) [1, fromIntegral (minBound::Int64), fromIntegral (maxBound::Int64)]) = [1,Fail: arithmetic overflow
- (toEnum (maxBound::Int))::Int64 = 2147483647
- (map fromEnum [(1::Int64),fromIntegral (minBound::Int) ,fromIntegral (maxBound::Int)]) = [1,-2147483648,2147483647]
- fromEnum (maxBound::Int64) = Fail: arithmetic overflow
- (take 7 [(1::Int64)..]) = [1,2,3,4,5,6,7]
- (take 7 [((maxBound::Int64)-5)..]) = [9223372036854775802,9223372036854775803,9223372036854775804,9223372036854775805,9223372036854775806,9223372036854775807]
- (take 7 [(1::Int64),2..]) = [1,2,3,4,5,6,7]
- (take 7 [(1::Int64),7..]) = [1,7,13,19,25,31,37]
- (take 7 [(1::Int64),1..]) = [1,1,1,1,1,1,1]
- (take 7 [(1::Int64),0..]) = [1,0,-1,-2,-3,-4,-5]
- (take 7 [(5::Int64),2..]) = [5,2,-1,-4,-7,-10,-13]
- (take 7 [x, x-1 ..]) = [-9223372036854775807,-9223372036854775808]
- (take 7 [x, x-1 ..]) = [-9223372036854775803,-9223372036854775804,-9223372036854775805,-9223372036854775806,-9223372036854775807,-9223372036854775808]
- (take 7 [x, (x+1) ..]) = [9223372036854775802,9223372036854775803,9223372036854775804,9223372036854775805,9223372036854775806,9223372036854775807]
- (take 7 ([(1::Int64) .. 5])) = [1,2,3,4,5]
- (take 4 ([(1::Int64) .. 1])) = [1]
- (take 7 ([(1::Int64) .. 0])) = []
- (take 7 ([(5::Int64) .. 0])) = []
- (take 7 ([(maxBound-(5::Int64)) .. maxBound])) = [9223372036854775802,9223372036854775803,9223372036854775804,9223372036854775805,9223372036854775806,9223372036854775807]
- (take 7 ([(minBound+(5::Int64)) .. minBound])) = []
- (take 7 [(5::Int64),4..1]) = [5,4,3,2,1]
- (take 7 [(5::Int64),3..1]) = [5,3,1]
- (take 7 [(5::Int64),3..2]) = [5,3]
- (take 7 [(1::Int64),2..1]) = [1]
- (take 7 [(2::Int64),1..2]) = [2]
- (take 7 [(2::Int64),1..1]) = [2,1]
- (take 7 [(2::Int64),3..1]) = []
- (take 7 [x,(x+1)..maxBound]) = [9223372036854775803,9223372036854775804,9223372036854775805,9223372036854775806,9223372036854775807]
- (take 7 [x,(x-1)..minBound]) = [-9223372036854775803,-9223372036854775804,-9223372036854775805,-9223372036854775806,-9223372036854775807,-9223372036854775808]
diff --git a/testsuite/tests/lib/should_run/enum02.stdout-mips-sgi-irix b/testsuite/tests/lib/should_run/enum02.stdout-mips-sgi-irix
deleted file mode 100644
index 3177d541f4..0000000000
--- a/testsuite/tests/lib/should_run/enum02.stdout-mips-sgi-irix
+++ /dev/null
@@ -1,141 +0,0 @@
-Testing Enum Int8:
- (succ (0::Int8)) = 1
- (succ (minBound::Int8)) = -127
- (succ (maxBound::Int8)) = error "Enum.succ{Int8}: tried to take `succ' of maxBound"
- pred (1::Int8) = 0
- pred (maxBound::Int8) = 126
- pred (minBound::Int8) = error "Enum.pred{Int8}: tried to take `pred' of minBound"
- (map (toEnum::Int->Int8) [1, fromIntegral (minBound::Int8), fromIntegral (maxBound::Int8)]) = [1,-128,127]
- (toEnum (maxBound::Int))::Int8 = error "Enum.toEnum{Int8}: tag (9223372036854775807) is outside of bounds (-128,127)"
- (map fromEnum [(1::Int8),minBound,maxBound]) = [1,-128,127]
- (take 7 [(1::Int8)..]) = [1,2,3,4,5,6,7]
- (take 7 [((maxBound::Int8)-5)..]) = [122,123,124,125,126,127]
- (take 7 [(1::Int8),2..]) = [1,2,3,4,5,6,7]
- (take 7 [(1::Int8),7..]) = [1,7,13,19,25,31,37]
- (take 7 [(1::Int8),1..]) = [1,1,1,1,1,1,1]
- (take 7 [(1::Int8),0..]) = [1,0,-1,-2,-3,-4,-5]
- (take 7 [(5::Int8),2..]) = [5,2,-1,-4,-7,-10,-13]
- (take 7 [x, x-1 ..]) = [-127,-128]
- (take 7 [x, x-1 ..]) = [-123,-124,-125,-126,-127,-128]
- (take 7 [x, (x+1) ..]) = [122,123,124,125,126,127]
- (take 7 ([(1::Int8) .. 5])) = [1,2,3,4,5]
- (take 4 ([(1::Int8) .. 1])) = [1]
- (take 7 ([(1::Int8) .. 0])) = []
- (take 7 ([(5::Int8) .. 0])) = []
- (take 7 ([(maxBound-(5::Int8)) .. maxBound])) = [122,123,124,125,126,127]
- (take 7 ([(minBound+(5::Int8)) .. minBound])) = []
- (take 7 [(5::Int8),4..1]) = [5,4,3,2,1]
- (take 7 [(5::Int8),3..1]) = [5,3,1]
- (take 7 [(5::Int8),3..2]) = [5,3]
- (take 7 [(1::Int8),2..1]) = [1]
- (take 7 [(2::Int8),1..2]) = [2]
- (take 7 [(2::Int8),1..1]) = [2,1]
- (take 7 [(2::Int8),3..1]) = []
- (take 7 [x,(x+1)..maxBound]) = [123,124,125,126,127]
- (take 7 [x,(x-1)..minBound]) = [-123,-124,-125,-126,-127,-128]
-Testing Enum Int16:
- (succ (0::Int16)) = 1
- (succ (minBound::Int16)) = -32767
- (succ (maxBound::Int16)) = error "Enum.succ{Int16}: tried to take `succ' of maxBound"
- pred (1::Int16) = 0
- pred (maxBound::Int16) = 32766
- pred (minBound::Int16) = error "Enum.pred{Int16}: tried to take `pred' of minBound"
- (map (toEnum::Int->Int16) [1, fromIntegral (minBound::Int16), fromIntegral (maxBound::Int16)]) = [1,-32768,32767]
- (toEnum (maxBound::Int))::Int16 = error "Enum.toEnum{Int16}: tag (9223372036854775807) is outside of bounds (-32768,32767)"
- (map fromEnum [(1::Int16),minBound,maxBound]) = [1,-32768,32767]
- (take 7 [(1::Int16)..]) = [1,2,3,4,5,6,7]
- (take 7 [((maxBound::Int16)-5)..]) = [32762,32763,32764,32765,32766,32767]
- (take 7 [(1::Int16),2..]) = [1,2,3,4,5,6,7]
- (take 7 [(1::Int16),7..]) = [1,7,13,19,25,31,37]
- (take 7 [(1::Int16),1..]) = [1,1,1,1,1,1,1]
- (take 7 [(1::Int16),0..]) = [1,0,-1,-2,-3,-4,-5]
- (take 7 [(5::Int16),2..]) = [5,2,-1,-4,-7,-10,-13]
- (take 7 [x, x-1 ..]) = [-32767,-32768]
- (take 7 [x, x-1 ..]) = [-32763,-32764,-32765,-32766,-32767,-32768]
- (take 7 [x, (x+1) ..]) = [32762,32763,32764,32765,32766,32767]
- (take 7 ([(1::Int16) .. 5])) = [1,2,3,4,5]
- (take 4 ([(1::Int16) .. 1])) = [1]
- (take 7 ([(1::Int16) .. 0])) = []
- (take 7 ([(5::Int16) .. 0])) = []
- (take 7 ([(maxBound-(5::Int16)) .. maxBound])) = [32762,32763,32764,32765,32766,32767]
- (take 7 ([(minBound+(5::Int16)) .. minBound])) = []
- (take 7 [(5::Int16),4..1]) = [5,4,3,2,1]
- (take 7 [(5::Int16),3..1]) = [5,3,1]
- (take 7 [(5::Int16),3..2]) = [5,3]
- (take 7 [(1::Int16),2..1]) = [1]
- (take 7 [(2::Int16),1..2]) = [2]
- (take 7 [(2::Int16),1..1]) = [2,1]
- (take 7 [(2::Int16),3..1]) = []
- (take 7 [x,(x+1)..maxBound]) = [32763,32764,32765,32766,32767]
- (take 7 [x,(x-1)..minBound]) = [-32763,-32764,-32765,-32766,-32767,-32768]
-Testing Enum Int32:
- (succ (0::Int32)) = 1
- (succ (minBound::Int32)) = -2147483647
- (succ (maxBound::Int32)) = error "Enum.succ{Int32}: tried to take `succ' of maxBound"
- pred (1::Int32) = 0
- pred (maxBound::Int32) = 2147483646
- pred (minBound::Int32) = error "Enum.pred{Int32}: tried to take `pred' of minBound"
- (map (toEnum::Int->Int32) [1, fromIntegral (minBound::Int32), fromIntegral (maxBound::Int32)]) = [1,-2147483648,2147483647]
- (toEnum (maxBound::Int))::Int32 = error "Enum.toEnum{Int32}: tag (9223372036854775807) is outside of bounds (-2147483648,2147483647)"
- (map fromEnum [(1::Int32),minBound,maxBound]) = [1,-2147483648,2147483647]
- (take 7 [(1::Int32)..]) = [1,2,3,4,5,6,7]
- (take 7 [((maxBound::Int32)-5)..]) = [2147483642,2147483643,2147483644,2147483645,2147483646,2147483647]
- (take 7 [(1::Int32),2..]) = [1,2,3,4,5,6,7]
- (take 7 [(1::Int32),7..]) = [1,7,13,19,25,31,37]
- (take 7 [(1::Int32),1..]) = [1,1,1,1,1,1,1]
- (take 7 [(1::Int32),0..]) = [1,0,-1,-2,-3,-4,-5]
- (take 7 [(5::Int32),2..]) = [5,2,-1,-4,-7,-10,-13]
- (take 7 [x, x-1 ..]) = [-2147483647,-2147483648]
- (take 7 [x, x-1 ..]) = [-2147483643,-2147483644,-2147483645,-2147483646,-2147483647,-2147483648]
- (take 7 [x, (x+1) ..]) = [2147483642,2147483643,2147483644,2147483645,2147483646,2147483647]
- (take 7 ([(1::Int32) .. 5])) = [1,2,3,4,5]
- (take 4 ([(1::Int32) .. 1])) = [1]
- (take 7 ([(1::Int32) .. 0])) = []
- (take 7 ([(5::Int32) .. 0])) = []
- (take 7 ([(maxBound-(5::Int32)) .. maxBound])) = [2147483642,2147483643,2147483644,2147483645,2147483646,2147483647]
- (take 7 ([(minBound+(5::Int32)) .. minBound])) = []
- (take 7 [(5::Int32),4..1]) = [5,4,3,2,1]
- (take 7 [(5::Int32),3..1]) = [5,3,1]
- (take 7 [(5::Int32),3..2]) = [5,3]
- (take 7 [(1::Int32),2..1]) = [1]
- (take 7 [(2::Int32),1..2]) = [2]
- (take 7 [(2::Int32),1..1]) = [2,1]
- (take 7 [(2::Int32),3..1]) = []
- (take 7 [x,(x+1)..maxBound]) = [2147483643,2147483644,2147483645,2147483646,2147483647]
- (take 7 [x,(x-1)..minBound]) = [-2147483643,-2147483644,-2147483645,-2147483646,-2147483647,-2147483648]
-Testing Enum Int64:
- (succ (0::Int64)) = 1
- (succ (minBound::Int64)) = -9223372036854775807
- (succ (maxBound::Int64)) = error "Enum.succ{Int64}: tried to take `succ' of maxBound"
- pred (1::Int64) = 0
- pred (maxBound::Int64) = 9223372036854775806
- pred (minBound::Int64) = error "Enum.pred{Int64}: tried to take `pred' of minBound"
- (map (toEnum::Int->Int64) [1, fromIntegral (minBound::Int64), fromIntegral (maxBound::Int64)]) = [1,-9223372036854775808,9223372036854775807]
- (toEnum (maxBound::Int))::Int64 = 9223372036854775807
- (map fromEnum [(1::Int64),fromIntegral (minBound::Int) ,fromIntegral (maxBound::Int)]) = [1,-9223372036854775808,9223372036854775807]
- fromEnum (maxBound::Int64) = 9223372036854775807
- (take 7 [(1::Int64)..]) = [1,2,3,4,5,6,7]
- (take 7 [((maxBound::Int64)-5)..]) = [9223372036854775802,9223372036854775803,9223372036854775804,9223372036854775805,9223372036854775806,9223372036854775807]
- (take 7 [(1::Int64),2..]) = [1,2,3,4,5,6,7]
- (take 7 [(1::Int64),7..]) = [1,7,13,19,25,31,37]
- (take 7 [(1::Int64),1..]) = [1,1,1,1,1,1,1]
- (take 7 [(1::Int64),0..]) = [1,0,-1,-2,-3,-4,-5]
- (take 7 [(5::Int64),2..]) = [5,2,-1,-4,-7,-10,-13]
- (take 7 [x, x-1 ..]) = [-9223372036854775807,-9223372036854775808]
- (take 7 [x, x-1 ..]) = [-9223372036854775803,-9223372036854775804,-9223372036854775805,-9223372036854775806,-9223372036854775807,-9223372036854775808]
- (take 7 [x, (x+1) ..]) = [9223372036854775802,9223372036854775803,9223372036854775804,9223372036854775805,9223372036854775806,9223372036854775807]
- (take 7 ([(1::Int64) .. 5])) = [1,2,3,4,5]
- (take 4 ([(1::Int64) .. 1])) = [1]
- (take 7 ([(1::Int64) .. 0])) = []
- (take 7 ([(5::Int64) .. 0])) = []
- (take 7 ([(maxBound-(5::Int64)) .. maxBound])) = [9223372036854775802,9223372036854775803,9223372036854775804,9223372036854775805,9223372036854775806,9223372036854775807]
- (take 7 ([(minBound+(5::Int64)) .. minBound])) = []
- (take 7 [(5::Int64),4..1]) = [5,4,3,2,1]
- (take 7 [(5::Int64),3..1]) = [5,3,1]
- (take 7 [(5::Int64),3..2]) = [5,3]
- (take 7 [(1::Int64),2..1]) = [1]
- (take 7 [(2::Int64),1..2]) = [2]
- (take 7 [(2::Int64),1..1]) = [2,1]
- (take 7 [(2::Int64),3..1]) = []
- (take 7 [x,(x+1)..maxBound]) = [9223372036854775803,9223372036854775804,9223372036854775805,9223372036854775806,9223372036854775807]
- (take 7 [x,(x-1)..minBound]) = [-9223372036854775803,-9223372036854775804,-9223372036854775805,-9223372036854775806,-9223372036854775807,-9223372036854775808]
diff --git a/testsuite/tests/lib/should_run/enum02.stdout-ws-64 b/testsuite/tests/lib/should_run/enum02.stdout-ws-64
deleted file mode 100644
index 3177d541f4..0000000000
--- a/testsuite/tests/lib/should_run/enum02.stdout-ws-64
+++ /dev/null
@@ -1,141 +0,0 @@
-Testing Enum Int8:
- (succ (0::Int8)) = 1
- (succ (minBound::Int8)) = -127
- (succ (maxBound::Int8)) = error "Enum.succ{Int8}: tried to take `succ' of maxBound"
- pred (1::Int8) = 0
- pred (maxBound::Int8) = 126
- pred (minBound::Int8) = error "Enum.pred{Int8}: tried to take `pred' of minBound"
- (map (toEnum::Int->Int8) [1, fromIntegral (minBound::Int8), fromIntegral (maxBound::Int8)]) = [1,-128,127]
- (toEnum (maxBound::Int))::Int8 = error "Enum.toEnum{Int8}: tag (9223372036854775807) is outside of bounds (-128,127)"
- (map fromEnum [(1::Int8),minBound,maxBound]) = [1,-128,127]
- (take 7 [(1::Int8)..]) = [1,2,3,4,5,6,7]
- (take 7 [((maxBound::Int8)-5)..]) = [122,123,124,125,126,127]
- (take 7 [(1::Int8),2..]) = [1,2,3,4,5,6,7]
- (take 7 [(1::Int8),7..]) = [1,7,13,19,25,31,37]
- (take 7 [(1::Int8),1..]) = [1,1,1,1,1,1,1]
- (take 7 [(1::Int8),0..]) = [1,0,-1,-2,-3,-4,-5]
- (take 7 [(5::Int8),2..]) = [5,2,-1,-4,-7,-10,-13]
- (take 7 [x, x-1 ..]) = [-127,-128]
- (take 7 [x, x-1 ..]) = [-123,-124,-125,-126,-127,-128]
- (take 7 [x, (x+1) ..]) = [122,123,124,125,126,127]
- (take 7 ([(1::Int8) .. 5])) = [1,2,3,4,5]
- (take 4 ([(1::Int8) .. 1])) = [1]
- (take 7 ([(1::Int8) .. 0])) = []
- (take 7 ([(5::Int8) .. 0])) = []
- (take 7 ([(maxBound-(5::Int8)) .. maxBound])) = [122,123,124,125,126,127]
- (take 7 ([(minBound+(5::Int8)) .. minBound])) = []
- (take 7 [(5::Int8),4..1]) = [5,4,3,2,1]
- (take 7 [(5::Int8),3..1]) = [5,3,1]
- (take 7 [(5::Int8),3..2]) = [5,3]
- (take 7 [(1::Int8),2..1]) = [1]
- (take 7 [(2::Int8),1..2]) = [2]
- (take 7 [(2::Int8),1..1]) = [2,1]
- (take 7 [(2::Int8),3..1]) = []
- (take 7 [x,(x+1)..maxBound]) = [123,124,125,126,127]
- (take 7 [x,(x-1)..minBound]) = [-123,-124,-125,-126,-127,-128]
-Testing Enum Int16:
- (succ (0::Int16)) = 1
- (succ (minBound::Int16)) = -32767
- (succ (maxBound::Int16)) = error "Enum.succ{Int16}: tried to take `succ' of maxBound"
- pred (1::Int16) = 0
- pred (maxBound::Int16) = 32766
- pred (minBound::Int16) = error "Enum.pred{Int16}: tried to take `pred' of minBound"
- (map (toEnum::Int->Int16) [1, fromIntegral (minBound::Int16), fromIntegral (maxBound::Int16)]) = [1,-32768,32767]
- (toEnum (maxBound::Int))::Int16 = error "Enum.toEnum{Int16}: tag (9223372036854775807) is outside of bounds (-32768,32767)"
- (map fromEnum [(1::Int16),minBound,maxBound]) = [1,-32768,32767]
- (take 7 [(1::Int16)..]) = [1,2,3,4,5,6,7]
- (take 7 [((maxBound::Int16)-5)..]) = [32762,32763,32764,32765,32766,32767]
- (take 7 [(1::Int16),2..]) = [1,2,3,4,5,6,7]
- (take 7 [(1::Int16),7..]) = [1,7,13,19,25,31,37]
- (take 7 [(1::Int16),1..]) = [1,1,1,1,1,1,1]
- (take 7 [(1::Int16),0..]) = [1,0,-1,-2,-3,-4,-5]
- (take 7 [(5::Int16),2..]) = [5,2,-1,-4,-7,-10,-13]
- (take 7 [x, x-1 ..]) = [-32767,-32768]
- (take 7 [x, x-1 ..]) = [-32763,-32764,-32765,-32766,-32767,-32768]
- (take 7 [x, (x+1) ..]) = [32762,32763,32764,32765,32766,32767]
- (take 7 ([(1::Int16) .. 5])) = [1,2,3,4,5]
- (take 4 ([(1::Int16) .. 1])) = [1]
- (take 7 ([(1::Int16) .. 0])) = []
- (take 7 ([(5::Int16) .. 0])) = []
- (take 7 ([(maxBound-(5::Int16)) .. maxBound])) = [32762,32763,32764,32765,32766,32767]
- (take 7 ([(minBound+(5::Int16)) .. minBound])) = []
- (take 7 [(5::Int16),4..1]) = [5,4,3,2,1]
- (take 7 [(5::Int16),3..1]) = [5,3,1]
- (take 7 [(5::Int16),3..2]) = [5,3]
- (take 7 [(1::Int16),2..1]) = [1]
- (take 7 [(2::Int16),1..2]) = [2]
- (take 7 [(2::Int16),1..1]) = [2,1]
- (take 7 [(2::Int16),3..1]) = []
- (take 7 [x,(x+1)..maxBound]) = [32763,32764,32765,32766,32767]
- (take 7 [x,(x-1)..minBound]) = [-32763,-32764,-32765,-32766,-32767,-32768]
-Testing Enum Int32:
- (succ (0::Int32)) = 1
- (succ (minBound::Int32)) = -2147483647
- (succ (maxBound::Int32)) = error "Enum.succ{Int32}: tried to take `succ' of maxBound"
- pred (1::Int32) = 0
- pred (maxBound::Int32) = 2147483646
- pred (minBound::Int32) = error "Enum.pred{Int32}: tried to take `pred' of minBound"
- (map (toEnum::Int->Int32) [1, fromIntegral (minBound::Int32), fromIntegral (maxBound::Int32)]) = [1,-2147483648,2147483647]
- (toEnum (maxBound::Int))::Int32 = error "Enum.toEnum{Int32}: tag (9223372036854775807) is outside of bounds (-2147483648,2147483647)"
- (map fromEnum [(1::Int32),minBound,maxBound]) = [1,-2147483648,2147483647]
- (take 7 [(1::Int32)..]) = [1,2,3,4,5,6,7]
- (take 7 [((maxBound::Int32)-5)..]) = [2147483642,2147483643,2147483644,2147483645,2147483646,2147483647]
- (take 7 [(1::Int32),2..]) = [1,2,3,4,5,6,7]
- (take 7 [(1::Int32),7..]) = [1,7,13,19,25,31,37]
- (take 7 [(1::Int32),1..]) = [1,1,1,1,1,1,1]
- (take 7 [(1::Int32),0..]) = [1,0,-1,-2,-3,-4,-5]
- (take 7 [(5::Int32),2..]) = [5,2,-1,-4,-7,-10,-13]
- (take 7 [x, x-1 ..]) = [-2147483647,-2147483648]
- (take 7 [x, x-1 ..]) = [-2147483643,-2147483644,-2147483645,-2147483646,-2147483647,-2147483648]
- (take 7 [x, (x+1) ..]) = [2147483642,2147483643,2147483644,2147483645,2147483646,2147483647]
- (take 7 ([(1::Int32) .. 5])) = [1,2,3,4,5]
- (take 4 ([(1::Int32) .. 1])) = [1]
- (take 7 ([(1::Int32) .. 0])) = []
- (take 7 ([(5::Int32) .. 0])) = []
- (take 7 ([(maxBound-(5::Int32)) .. maxBound])) = [2147483642,2147483643,2147483644,2147483645,2147483646,2147483647]
- (take 7 ([(minBound+(5::Int32)) .. minBound])) = []
- (take 7 [(5::Int32),4..1]) = [5,4,3,2,1]
- (take 7 [(5::Int32),3..1]) = [5,3,1]
- (take 7 [(5::Int32),3..2]) = [5,3]
- (take 7 [(1::Int32),2..1]) = [1]
- (take 7 [(2::Int32),1..2]) = [2]
- (take 7 [(2::Int32),1..1]) = [2,1]
- (take 7 [(2::Int32),3..1]) = []
- (take 7 [x,(x+1)..maxBound]) = [2147483643,2147483644,2147483645,2147483646,2147483647]
- (take 7 [x,(x-1)..minBound]) = [-2147483643,-2147483644,-2147483645,-2147483646,-2147483647,-2147483648]
-Testing Enum Int64:
- (succ (0::Int64)) = 1
- (succ (minBound::Int64)) = -9223372036854775807
- (succ (maxBound::Int64)) = error "Enum.succ{Int64}: tried to take `succ' of maxBound"
- pred (1::Int64) = 0
- pred (maxBound::Int64) = 9223372036854775806
- pred (minBound::Int64) = error "Enum.pred{Int64}: tried to take `pred' of minBound"
- (map (toEnum::Int->Int64) [1, fromIntegral (minBound::Int64), fromIntegral (maxBound::Int64)]) = [1,-9223372036854775808,9223372036854775807]
- (toEnum (maxBound::Int))::Int64 = 9223372036854775807
- (map fromEnum [(1::Int64),fromIntegral (minBound::Int) ,fromIntegral (maxBound::Int)]) = [1,-9223372036854775808,9223372036854775807]
- fromEnum (maxBound::Int64) = 9223372036854775807
- (take 7 [(1::Int64)..]) = [1,2,3,4,5,6,7]
- (take 7 [((maxBound::Int64)-5)..]) = [9223372036854775802,9223372036854775803,9223372036854775804,9223372036854775805,9223372036854775806,9223372036854775807]
- (take 7 [(1::Int64),2..]) = [1,2,3,4,5,6,7]
- (take 7 [(1::Int64),7..]) = [1,7,13,19,25,31,37]
- (take 7 [(1::Int64),1..]) = [1,1,1,1,1,1,1]
- (take 7 [(1::Int64),0..]) = [1,0,-1,-2,-3,-4,-5]
- (take 7 [(5::Int64),2..]) = [5,2,-1,-4,-7,-10,-13]
- (take 7 [x, x-1 ..]) = [-9223372036854775807,-9223372036854775808]
- (take 7 [x, x-1 ..]) = [-9223372036854775803,-9223372036854775804,-9223372036854775805,-9223372036854775806,-9223372036854775807,-9223372036854775808]
- (take 7 [x, (x+1) ..]) = [9223372036854775802,9223372036854775803,9223372036854775804,9223372036854775805,9223372036854775806,9223372036854775807]
- (take 7 ([(1::Int64) .. 5])) = [1,2,3,4,5]
- (take 4 ([(1::Int64) .. 1])) = [1]
- (take 7 ([(1::Int64) .. 0])) = []
- (take 7 ([(5::Int64) .. 0])) = []
- (take 7 ([(maxBound-(5::Int64)) .. maxBound])) = [9223372036854775802,9223372036854775803,9223372036854775804,9223372036854775805,9223372036854775806,9223372036854775807]
- (take 7 ([(minBound+(5::Int64)) .. minBound])) = []
- (take 7 [(5::Int64),4..1]) = [5,4,3,2,1]
- (take 7 [(5::Int64),3..1]) = [5,3,1]
- (take 7 [(5::Int64),3..2]) = [5,3]
- (take 7 [(1::Int64),2..1]) = [1]
- (take 7 [(2::Int64),1..2]) = [2]
- (take 7 [(2::Int64),1..1]) = [2,1]
- (take 7 [(2::Int64),3..1]) = []
- (take 7 [x,(x+1)..maxBound]) = [9223372036854775803,9223372036854775804,9223372036854775805,9223372036854775806,9223372036854775807]
- (take 7 [x,(x-1)..minBound]) = [-9223372036854775803,-9223372036854775804,-9223372036854775805,-9223372036854775806,-9223372036854775807,-9223372036854775808]
diff --git a/testsuite/tests/lib/should_run/enum02.stdout-x86_64-unknown-openbsd b/testsuite/tests/lib/should_run/enum02.stdout-x86_64-unknown-openbsd
deleted file mode 100644
index 3177d541f4..0000000000
--- a/testsuite/tests/lib/should_run/enum02.stdout-x86_64-unknown-openbsd
+++ /dev/null
@@ -1,141 +0,0 @@
-Testing Enum Int8:
- (succ (0::Int8)) = 1
- (succ (minBound::Int8)) = -127
- (succ (maxBound::Int8)) = error "Enum.succ{Int8}: tried to take `succ' of maxBound"
- pred (1::Int8) = 0
- pred (maxBound::Int8) = 126
- pred (minBound::Int8) = error "Enum.pred{Int8}: tried to take `pred' of minBound"
- (map (toEnum::Int->Int8) [1, fromIntegral (minBound::Int8), fromIntegral (maxBound::Int8)]) = [1,-128,127]
- (toEnum (maxBound::Int))::Int8 = error "Enum.toEnum{Int8}: tag (9223372036854775807) is outside of bounds (-128,127)"
- (map fromEnum [(1::Int8),minBound,maxBound]) = [1,-128,127]
- (take 7 [(1::Int8)..]) = [1,2,3,4,5,6,7]
- (take 7 [((maxBound::Int8)-5)..]) = [122,123,124,125,126,127]
- (take 7 [(1::Int8),2..]) = [1,2,3,4,5,6,7]
- (take 7 [(1::Int8),7..]) = [1,7,13,19,25,31,37]
- (take 7 [(1::Int8),1..]) = [1,1,1,1,1,1,1]
- (take 7 [(1::Int8),0..]) = [1,0,-1,-2,-3,-4,-5]
- (take 7 [(5::Int8),2..]) = [5,2,-1,-4,-7,-10,-13]
- (take 7 [x, x-1 ..]) = [-127,-128]
- (take 7 [x, x-1 ..]) = [-123,-124,-125,-126,-127,-128]
- (take 7 [x, (x+1) ..]) = [122,123,124,125,126,127]
- (take 7 ([(1::Int8) .. 5])) = [1,2,3,4,5]
- (take 4 ([(1::Int8) .. 1])) = [1]
- (take 7 ([(1::Int8) .. 0])) = []
- (take 7 ([(5::Int8) .. 0])) = []
- (take 7 ([(maxBound-(5::Int8)) .. maxBound])) = [122,123,124,125,126,127]
- (take 7 ([(minBound+(5::Int8)) .. minBound])) = []
- (take 7 [(5::Int8),4..1]) = [5,4,3,2,1]
- (take 7 [(5::Int8),3..1]) = [5,3,1]
- (take 7 [(5::Int8),3..2]) = [5,3]
- (take 7 [(1::Int8),2..1]) = [1]
- (take 7 [(2::Int8),1..2]) = [2]
- (take 7 [(2::Int8),1..1]) = [2,1]
- (take 7 [(2::Int8),3..1]) = []
- (take 7 [x,(x+1)..maxBound]) = [123,124,125,126,127]
- (take 7 [x,(x-1)..minBound]) = [-123,-124,-125,-126,-127,-128]
-Testing Enum Int16:
- (succ (0::Int16)) = 1
- (succ (minBound::Int16)) = -32767
- (succ (maxBound::Int16)) = error "Enum.succ{Int16}: tried to take `succ' of maxBound"
- pred (1::Int16) = 0
- pred (maxBound::Int16) = 32766
- pred (minBound::Int16) = error "Enum.pred{Int16}: tried to take `pred' of minBound"
- (map (toEnum::Int->Int16) [1, fromIntegral (minBound::Int16), fromIntegral (maxBound::Int16)]) = [1,-32768,32767]
- (toEnum (maxBound::Int))::Int16 = error "Enum.toEnum{Int16}: tag (9223372036854775807) is outside of bounds (-32768,32767)"
- (map fromEnum [(1::Int16),minBound,maxBound]) = [1,-32768,32767]
- (take 7 [(1::Int16)..]) = [1,2,3,4,5,6,7]
- (take 7 [((maxBound::Int16)-5)..]) = [32762,32763,32764,32765,32766,32767]
- (take 7 [(1::Int16),2..]) = [1,2,3,4,5,6,7]
- (take 7 [(1::Int16),7..]) = [1,7,13,19,25,31,37]
- (take 7 [(1::Int16),1..]) = [1,1,1,1,1,1,1]
- (take 7 [(1::Int16),0..]) = [1,0,-1,-2,-3,-4,-5]
- (take 7 [(5::Int16),2..]) = [5,2,-1,-4,-7,-10,-13]
- (take 7 [x, x-1 ..]) = [-32767,-32768]
- (take 7 [x, x-1 ..]) = [-32763,-32764,-32765,-32766,-32767,-32768]
- (take 7 [x, (x+1) ..]) = [32762,32763,32764,32765,32766,32767]
- (take 7 ([(1::Int16) .. 5])) = [1,2,3,4,5]
- (take 4 ([(1::Int16) .. 1])) = [1]
- (take 7 ([(1::Int16) .. 0])) = []
- (take 7 ([(5::Int16) .. 0])) = []
- (take 7 ([(maxBound-(5::Int16)) .. maxBound])) = [32762,32763,32764,32765,32766,32767]
- (take 7 ([(minBound+(5::Int16)) .. minBound])) = []
- (take 7 [(5::Int16),4..1]) = [5,4,3,2,1]
- (take 7 [(5::Int16),3..1]) = [5,3,1]
- (take 7 [(5::Int16),3..2]) = [5,3]
- (take 7 [(1::Int16),2..1]) = [1]
- (take 7 [(2::Int16),1..2]) = [2]
- (take 7 [(2::Int16),1..1]) = [2,1]
- (take 7 [(2::Int16),3..1]) = []
- (take 7 [x,(x+1)..maxBound]) = [32763,32764,32765,32766,32767]
- (take 7 [x,(x-1)..minBound]) = [-32763,-32764,-32765,-32766,-32767,-32768]
-Testing Enum Int32:
- (succ (0::Int32)) = 1
- (succ (minBound::Int32)) = -2147483647
- (succ (maxBound::Int32)) = error "Enum.succ{Int32}: tried to take `succ' of maxBound"
- pred (1::Int32) = 0
- pred (maxBound::Int32) = 2147483646
- pred (minBound::Int32) = error "Enum.pred{Int32}: tried to take `pred' of minBound"
- (map (toEnum::Int->Int32) [1, fromIntegral (minBound::Int32), fromIntegral (maxBound::Int32)]) = [1,-2147483648,2147483647]
- (toEnum (maxBound::Int))::Int32 = error "Enum.toEnum{Int32}: tag (9223372036854775807) is outside of bounds (-2147483648,2147483647)"
- (map fromEnum [(1::Int32),minBound,maxBound]) = [1,-2147483648,2147483647]
- (take 7 [(1::Int32)..]) = [1,2,3,4,5,6,7]
- (take 7 [((maxBound::Int32)-5)..]) = [2147483642,2147483643,2147483644,2147483645,2147483646,2147483647]
- (take 7 [(1::Int32),2..]) = [1,2,3,4,5,6,7]
- (take 7 [(1::Int32),7..]) = [1,7,13,19,25,31,37]
- (take 7 [(1::Int32),1..]) = [1,1,1,1,1,1,1]
- (take 7 [(1::Int32),0..]) = [1,0,-1,-2,-3,-4,-5]
- (take 7 [(5::Int32),2..]) = [5,2,-1,-4,-7,-10,-13]
- (take 7 [x, x-1 ..]) = [-2147483647,-2147483648]
- (take 7 [x, x-1 ..]) = [-2147483643,-2147483644,-2147483645,-2147483646,-2147483647,-2147483648]
- (take 7 [x, (x+1) ..]) = [2147483642,2147483643,2147483644,2147483645,2147483646,2147483647]
- (take 7 ([(1::Int32) .. 5])) = [1,2,3,4,5]
- (take 4 ([(1::Int32) .. 1])) = [1]
- (take 7 ([(1::Int32) .. 0])) = []
- (take 7 ([(5::Int32) .. 0])) = []
- (take 7 ([(maxBound-(5::Int32)) .. maxBound])) = [2147483642,2147483643,2147483644,2147483645,2147483646,2147483647]
- (take 7 ([(minBound+(5::Int32)) .. minBound])) = []
- (take 7 [(5::Int32),4..1]) = [5,4,3,2,1]
- (take 7 [(5::Int32),3..1]) = [5,3,1]
- (take 7 [(5::Int32),3..2]) = [5,3]
- (take 7 [(1::Int32),2..1]) = [1]
- (take 7 [(2::Int32),1..2]) = [2]
- (take 7 [(2::Int32),1..1]) = [2,1]
- (take 7 [(2::Int32),3..1]) = []
- (take 7 [x,(x+1)..maxBound]) = [2147483643,2147483644,2147483645,2147483646,2147483647]
- (take 7 [x,(x-1)..minBound]) = [-2147483643,-2147483644,-2147483645,-2147483646,-2147483647,-2147483648]
-Testing Enum Int64:
- (succ (0::Int64)) = 1
- (succ (minBound::Int64)) = -9223372036854775807
- (succ (maxBound::Int64)) = error "Enum.succ{Int64}: tried to take `succ' of maxBound"
- pred (1::Int64) = 0
- pred (maxBound::Int64) = 9223372036854775806
- pred (minBound::Int64) = error "Enum.pred{Int64}: tried to take `pred' of minBound"
- (map (toEnum::Int->Int64) [1, fromIntegral (minBound::Int64), fromIntegral (maxBound::Int64)]) = [1,-9223372036854775808,9223372036854775807]
- (toEnum (maxBound::Int))::Int64 = 9223372036854775807
- (map fromEnum [(1::Int64),fromIntegral (minBound::Int) ,fromIntegral (maxBound::Int)]) = [1,-9223372036854775808,9223372036854775807]
- fromEnum (maxBound::Int64) = 9223372036854775807
- (take 7 [(1::Int64)..]) = [1,2,3,4,5,6,7]
- (take 7 [((maxBound::Int64)-5)..]) = [9223372036854775802,9223372036854775803,9223372036854775804,9223372036854775805,9223372036854775806,9223372036854775807]
- (take 7 [(1::Int64),2..]) = [1,2,3,4,5,6,7]
- (take 7 [(1::Int64),7..]) = [1,7,13,19,25,31,37]
- (take 7 [(1::Int64),1..]) = [1,1,1,1,1,1,1]
- (take 7 [(1::Int64),0..]) = [1,0,-1,-2,-3,-4,-5]
- (take 7 [(5::Int64),2..]) = [5,2,-1,-4,-7,-10,-13]
- (take 7 [x, x-1 ..]) = [-9223372036854775807,-9223372036854775808]
- (take 7 [x, x-1 ..]) = [-9223372036854775803,-9223372036854775804,-9223372036854775805,-9223372036854775806,-9223372036854775807,-9223372036854775808]
- (take 7 [x, (x+1) ..]) = [9223372036854775802,9223372036854775803,9223372036854775804,9223372036854775805,9223372036854775806,9223372036854775807]
- (take 7 ([(1::Int64) .. 5])) = [1,2,3,4,5]
- (take 4 ([(1::Int64) .. 1])) = [1]
- (take 7 ([(1::Int64) .. 0])) = []
- (take 7 ([(5::Int64) .. 0])) = []
- (take 7 ([(maxBound-(5::Int64)) .. maxBound])) = [9223372036854775802,9223372036854775803,9223372036854775804,9223372036854775805,9223372036854775806,9223372036854775807]
- (take 7 ([(minBound+(5::Int64)) .. minBound])) = []
- (take 7 [(5::Int64),4..1]) = [5,4,3,2,1]
- (take 7 [(5::Int64),3..1]) = [5,3,1]
- (take 7 [(5::Int64),3..2]) = [5,3]
- (take 7 [(1::Int64),2..1]) = [1]
- (take 7 [(2::Int64),1..2]) = [2]
- (take 7 [(2::Int64),1..1]) = [2,1]
- (take 7 [(2::Int64),3..1]) = []
- (take 7 [x,(x+1)..maxBound]) = [9223372036854775803,9223372036854775804,9223372036854775805,9223372036854775806,9223372036854775807]
- (take 7 [x,(x-1)..minBound]) = [-9223372036854775803,-9223372036854775804,-9223372036854775805,-9223372036854775806,-9223372036854775807,-9223372036854775808]
diff --git a/testsuite/tests/lib/should_run/enum03.hs b/testsuite/tests/lib/should_run/enum03.hs
deleted file mode 100644
index 908f3dd1a0..0000000000
--- a/testsuite/tests/lib/should_run/enum03.hs
+++ /dev/null
@@ -1,266 +0,0 @@
--- !!! Testing the Word Enum instances.
-module Main(main) where
-
-import Prelude hiding (catch)
-import Control.Exception
-import Data.Word
-import Data.Int
-
-main = do
- putStrLn "Testing Enum Word8:"
- testEnumWord8
- putStrLn "Testing Enum Word16:"
- testEnumWord16
- putStrLn "Testing Enum Word32:"
- testEnumWord32
- putStrLn "Testing Enum Word64:"
- testEnumWord64
-
-
-#define printTest(x) (do{ putStr ( " " ++ "x" ++ " = " ) ; print (x) })
-
-testEnumWord8 :: IO ()
-testEnumWord8 = do
- -- succ
- printTest ((succ (0::Word8)))
- printTest ((succ (minBound::Word8)))
- mayBomb (printTest ((succ (maxBound::Word8))))
-
- -- pred
- printTest (pred (1::Word8))
- printTest (pred (maxBound::Word8))
- mayBomb (printTest (pred (minBound::Word8)))
-
- -- toEnum
- printTest ((map (toEnum::Int->Word8) [1, fromIntegral (minBound::Word8)::Int, fromIntegral (maxBound::Word8)::Int]))
- mayBomb (printTest ((toEnum (maxBound::Int))::Word8))
-
- -- fromEnum
- printTest ((map fromEnum [(1::Word8),minBound,maxBound]))
-
- -- [x..] aka enumFrom
- printTest ((take 7 [(1::Word8)..]))
- printTest ((take 7 [((maxBound::Word8)-5)..])) -- just in case it doesn't catch the upper bound..
-
- -- [x,y..] aka enumFromThen
- printTest ((take 7 [(1::Word8),2..]))
- printTest ((take 7 [(1::Word8),7..]))
- printTest ((take 7 [(1::Word8),1..]))
- printTest ((take 7 [(1::Word8),0..]))
- printTest ((take 7 [(5::Word8),2..]))
- let x = (minBound::Word8) + 1
- printTest ((take 7 [x, x-1 ..]))
- let x = (minBound::Word8) + 5
- printTest ((take 7 [x, x-1 ..]))
- let x = (maxBound::Word8) - 5
- printTest ((take 7 [x, (x+1) ..]))
-
- -- [x..y] aka enumFromTo
- printTest ((take 7 ([(1::Word8) .. 5])))
- printTest ((take 4 ([(1::Word8) .. 1])))
- printTest ((take 7 ([(1::Word8) .. 0])))
- printTest ((take 7 ([(5::Word8) .. 0])))
- printTest ((take 7 ([(maxBound-(5::Word8)) .. maxBound])))
- printTest ((take 7 ([(minBound+(5::Word8)) .. minBound])))
-
- -- [x,y..z] aka enumFromThenTo
- printTest ((take 7 [(5::Word8),4..1]))
- printTest ((take 7 [(5::Word8),3..1]))
- printTest ((take 7 [(5::Word8),3..2]))
- printTest ((take 7 [(1::Word8),2..1]))
- printTest ((take 7 [(2::Word8),1..2]))
- printTest ((take 7 [(2::Word8),1..1]))
- printTest ((take 7 [(2::Word8),3..1]))
-
- let x = (maxBound::Word8) - 4
- printTest ((take 7 [x,(x+1)..maxBound]))
- let x = (minBound::Word8) + 5
- printTest ((take 7 [x,(x-1)..minBound]))
-
-testEnumWord16 :: IO ()
-testEnumWord16 = do
- -- succ
- printTest ((succ (0::Word16)))
- printTest ((succ (minBound::Word16)))
- mayBomb (printTest ((succ (maxBound::Word16))))
-
- -- pred
- printTest (pred (1::Word16))
- printTest (pred (maxBound::Word16))
- mayBomb (printTest (pred (minBound::Word16)))
-
- -- toEnum
- printTest ((map (toEnum::Int->Word16) [1, fromIntegral (minBound::Word16)::Int, fromIntegral (maxBound::Word16)::Int]))
- mayBomb (printTest ((toEnum (maxBound::Int))::Word16))
-
-
- -- fromEnum
- printTest ((map fromEnum [(1::Word16),minBound,maxBound]))
-
- -- [x..] aka enumFrom
- printTest ((take 7 [(1::Word16)..]))
- printTest ((take 7 [((maxBound::Word16)-5)..])) -- just in case it doesn't catch the upper bound..
-
- -- [x,y..] aka enumFromThen
- printTest ((take 7 [(1::Word16),2..]))
- printTest ((take 7 [(1::Word16),7..]))
- printTest ((take 7 [(1::Word16),1..]))
- printTest ((take 7 [(1::Word16),0..]))
- printTest ((take 7 [(5::Word16),2..]))
- let x = (minBound::Word16) + 1
- printTest ((take 7 [x, x-1 ..]))
- let x = (minBound::Word16) + 5
- printTest ((take 7 [x, x-1 ..]))
- let x = (maxBound::Word16) - 5
- printTest ((take 7 [x, (x+1) ..]))
-
- -- [x..y] aka enumFromTo
- printTest ((take 7 ([(1::Word16) .. 5])))
- printTest ((take 4 ([(1::Word16) .. 1])))
- printTest ((take 7 ([(1::Word16) .. 0])))
- printTest ((take 7 ([(5::Word16) .. 0])))
- printTest ((take 7 ([(maxBound-(5::Word16)) .. maxBound])))
- printTest ((take 7 ([(minBound+(5::Word16)) .. minBound])))
-
- -- [x,y..z] aka enumFromThenTo
- printTest ((take 7 [(5::Word16),4..1]))
- printTest ((take 7 [(5::Word16),3..1]))
- printTest ((take 7 [(5::Word16),3..2]))
- printTest ((take 7 [(1::Word16),2..1]))
- printTest ((take 7 [(2::Word16),1..2]))
- printTest ((take 7 [(2::Word16),1..1]))
- printTest ((take 7 [(2::Word16),3..1]))
-
- let x = (maxBound::Word16) - 4
- printTest ((take 7 [x,(x+1)..maxBound]))
- let x = (minBound::Word16) + 5
- printTest ((take 7 [x,(x-1)..minBound]))
-
-testEnumWord32 :: IO ()
-testEnumWord32 = do
- -- succ
- printTest ((succ (0::Word32)))
- printTest ((succ (minBound::Word32)))
- mayBomb (printTest ((succ (maxBound::Word32))))
-
- -- pred
- printTest (pred (1::Word32))
- printTest (pred (maxBound::Word32))
- mayBomb (printTest (pred (minBound::Word32)))
-
- -- toEnum
- printTest ((map (toEnum::Int->Word32) [1, fromIntegral (minBound::Word32)::Int, fromIntegral (maxBound::Int32)::Int]))
- mayBomb (printTest ((toEnum (maxBound::Int))::Word32))
-
- -- fromEnum
- printTest ((map fromEnum [(1::Word32),minBound,fromIntegral (maxBound::Int)]))
- mayBomb (printTest (fromEnum (maxBound::Word32)))
-
- -- [x..] aka enumFrom
- printTest ((take 7 [(1::Word32)..]))
- printTest ((take 7 [((maxBound::Word32)-5)..])) -- just in case it doesn't catch the upper bound..
-
- -- [x,y..] aka enumFromThen
- printTest ((take 7 [(1::Word32),2..]))
- printTest ((take 7 [(1::Word32),7..]))
- printTest ((take 7 [(1::Word32),1..]))
- printTest ((take 7 [(1::Word32),0..]))
- printTest ((take 7 [(5::Word32),2..]))
- let x = (minBound::Word32) + 1
- printTest ((take 7 [x, x-1 ..]))
- let x = (minBound::Word32) + 5
- printTest ((take 7 [x, x-1 ..]))
- let x = (maxBound::Word32) - 5
- printTest ((take 7 [x, (x+1) ..]))
-
- -- [x..y] aka enumFromTo
- printTest ((take 7 ([(1::Word32) .. 5])))
- printTest ((take 4 ([(1::Word32) .. 1])))
- printTest ((take 7 ([(1::Word32) .. 0])))
- printTest ((take 7 ([(5::Word32) .. 0])))
- printTest ((take 7 ([(maxBound-(5::Word32)) .. maxBound])))
- printTest ((take 7 ([(minBound+(5::Word32)) .. minBound])))
-
- -- [x,y..z] aka enumFromThenTo
- printTest ((take 7 [(5::Word32),4..1]))
- printTest ((take 7 [(5::Word32),3..1]))
- printTest ((take 7 [(5::Word32),3..2]))
- printTest ((take 7 [(1::Word32),2..1]))
- printTest ((take 7 [(2::Word32),1..2]))
- printTest ((take 7 [(2::Word32),1..1]))
- printTest ((take 7 [(2::Word32),3..1]))
-
- let x = (maxBound::Word32) - 4
- printTest ((take 7 [x,(x+1)..maxBound]))
- let x = (minBound::Word32) + 5
- printTest ((take 7 [x,(x-1)..minBound]))
-
-testEnumWord64 :: IO ()
-testEnumWord64 = do
- -- succ
- printTest ((succ (0::Word64)))
- printTest ((succ (minBound::Word64)))
- mayBomb (printTest ((succ (maxBound::Word64))))
-
- -- pred
- printTest (pred (1::Word64))
- printTest (pred (maxBound::Word64))
- mayBomb (printTest (pred (minBound::Word64)))
-
- -- toEnum
- mayBomb (printTest ((map (toEnum::Int->Word64) [1, fromIntegral (minBound::Word64)::Int, maxBound::Int])))
- mayBomb (printTest ((toEnum (maxBound::Int))::Word64))
-
- -- fromEnum
- printTest ((map fromEnum [(1::Word64),minBound,fromIntegral (maxBound::Int)]))
- mayBomb (printTest (fromEnum (maxBound::Word64)))
-
- -- [x..] aka enumFrom
- printTest ((take 7 [(1::Word64)..]))
- printTest ((take 7 [((maxBound::Word64)-5)..])) -- just in case it doesn't catch the upper bound..
-
- -- [x,y..] aka enumFromThen
- printTest ((take 7 [(1::Word64),2..]))
- printTest ((take 7 [(1::Word64),7..]))
- printTest ((take 7 [(1::Word64),1..]))
- printTest ((take 7 [(1::Word64),0..]))
- printTest ((take 7 [(5::Word64),2..]))
- let x = (minBound::Word64) + 1
- printTest ((take 7 [x, x-1 ..]))
- let x = (minBound::Word64) + 5
- printTest ((take 7 [x, x-1 ..]))
- let x = (maxBound::Word64) - 5
- printTest ((take 7 [x, (x+1) ..]))
-
- -- [x..y] aka enumFromTo
- printTest ((take 7 ([(1::Word64) .. 5])))
- printTest ((take 4 ([(1::Word64) .. 1])))
- printTest ((take 7 ([(1::Word64) .. 0])))
- printTest ((take 7 ([(5::Word64) .. 0])))
- printTest ((take 7 ([(maxBound-(5::Word64)) .. maxBound])))
- printTest ((take 7 ([(minBound+(5::Word64)) .. minBound])))
-
- -- [x,y..z] aka enumFromThenTo
- printTest ((take 7 [(5::Word64),4..1]))
- printTest ((take 7 [(5::Word64),3..1]))
- printTest ((take 7 [(5::Word64),3..2]))
- printTest ((take 7 [(1::Word64),2..1]))
- printTest ((take 7 [(2::Word64),1..2]))
- printTest ((take 7 [(2::Word64),1..1]))
- printTest ((take 7 [(2::Word64),3..1]))
-
- let x = (maxBound::Word64) - 4
- printTest ((take 7 [x,(x+1)..maxBound]))
- let x = (minBound::Word64) + 5
- printTest ((take 7 [x,(x-1)..minBound]))
-
-
---
---
--- Utils
---
---
-
-
-mayBomb x = catch x (\(ErrorCall e) -> putStrLn ("error " ++ show e))
- `catch` (\e -> putStrLn ("Fail: " ++ show (e :: SomeException)))
diff --git a/testsuite/tests/lib/should_run/enum03.stdout b/testsuite/tests/lib/should_run/enum03.stdout
deleted file mode 100644
index d6db561a72..0000000000
--- a/testsuite/tests/lib/should_run/enum03.stdout
+++ /dev/null
@@ -1,142 +0,0 @@
-Testing Enum Word8:
- (succ (0::Word8)) = 1
- (succ (minBound::Word8)) = 1
- (succ (maxBound::Word8)) = error "Enum.succ{Word8}: tried to take `succ' of maxBound"
- pred (1::Word8) = 0
- pred (maxBound::Word8) = 254
- pred (minBound::Word8) = error "Enum.pred{Word8}: tried to take `pred' of minBound"
- (map (toEnum::Int->Word8) [1, fromIntegral (minBound::Word8)::Int, fromIntegral (maxBound::Word8)::Int]) = [1,0,255]
- (toEnum (maxBound::Int))::Word8 = error "Enum.toEnum{Word8}: tag (2147483647) is outside of bounds (0,255)"
- (map fromEnum [(1::Word8),minBound,maxBound]) = [1,0,255]
- (take 7 [(1::Word8)..]) = [1,2,3,4,5,6,7]
- (take 7 [((maxBound::Word8)-5)..]) = [250,251,252,253,254,255]
- (take 7 [(1::Word8),2..]) = [1,2,3,4,5,6,7]
- (take 7 [(1::Word8),7..]) = [1,7,13,19,25,31,37]
- (take 7 [(1::Word8),1..]) = [1,1,1,1,1,1,1]
- (take 7 [(1::Word8),0..]) = [1,0]
- (take 7 [(5::Word8),2..]) = [5,2]
- (take 7 [x, x-1 ..]) = [1,0]
- (take 7 [x, x-1 ..]) = [5,4,3,2,1,0]
- (take 7 [x, (x+1) ..]) = [250,251,252,253,254,255]
- (take 7 ([(1::Word8) .. 5])) = [1,2,3,4,5]
- (take 4 ([(1::Word8) .. 1])) = [1]
- (take 7 ([(1::Word8) .. 0])) = []
- (take 7 ([(5::Word8) .. 0])) = []
- (take 7 ([(maxBound-(5::Word8)) .. maxBound])) = [250,251,252,253,254,255]
- (take 7 ([(minBound+(5::Word8)) .. minBound])) = []
- (take 7 [(5::Word8),4..1]) = [5,4,3,2,1]
- (take 7 [(5::Word8),3..1]) = [5,3,1]
- (take 7 [(5::Word8),3..2]) = [5,3]
- (take 7 [(1::Word8),2..1]) = [1]
- (take 7 [(2::Word8),1..2]) = [2]
- (take 7 [(2::Word8),1..1]) = [2,1]
- (take 7 [(2::Word8),3..1]) = []
- (take 7 [x,(x+1)..maxBound]) = [251,252,253,254,255]
- (take 7 [x,(x-1)..minBound]) = [5,4,3,2,1,0]
-Testing Enum Word16:
- (succ (0::Word16)) = 1
- (succ (minBound::Word16)) = 1
- (succ (maxBound::Word16)) = error "Enum.succ{Word16}: tried to take `succ' of maxBound"
- pred (1::Word16) = 0
- pred (maxBound::Word16) = 65534
- pred (minBound::Word16) = error "Enum.pred{Word16}: tried to take `pred' of minBound"
- (map (toEnum::Int->Word16) [1, fromIntegral (minBound::Word16)::Int, fromIntegral (maxBound::Word16)::Int]) = [1,0,65535]
- (toEnum (maxBound::Int))::Word16 = error "Enum.toEnum{Word16}: tag (2147483647) is outside of bounds (0,65535)"
- (map fromEnum [(1::Word16),minBound,maxBound]) = [1,0,65535]
- (take 7 [(1::Word16)..]) = [1,2,3,4,5,6,7]
- (take 7 [((maxBound::Word16)-5)..]) = [65530,65531,65532,65533,65534,65535]
- (take 7 [(1::Word16),2..]) = [1,2,3,4,5,6,7]
- (take 7 [(1::Word16),7..]) = [1,7,13,19,25,31,37]
- (take 7 [(1::Word16),1..]) = [1,1,1,1,1,1,1]
- (take 7 [(1::Word16),0..]) = [1,0]
- (take 7 [(5::Word16),2..]) = [5,2]
- (take 7 [x, x-1 ..]) = [1,0]
- (take 7 [x, x-1 ..]) = [5,4,3,2,1,0]
- (take 7 [x, (x+1) ..]) = [65530,65531,65532,65533,65534,65535]
- (take 7 ([(1::Word16) .. 5])) = [1,2,3,4,5]
- (take 4 ([(1::Word16) .. 1])) = [1]
- (take 7 ([(1::Word16) .. 0])) = []
- (take 7 ([(5::Word16) .. 0])) = []
- (take 7 ([(maxBound-(5::Word16)) .. maxBound])) = [65530,65531,65532,65533,65534,65535]
- (take 7 ([(minBound+(5::Word16)) .. minBound])) = []
- (take 7 [(5::Word16),4..1]) = [5,4,3,2,1]
- (take 7 [(5::Word16),3..1]) = [5,3,1]
- (take 7 [(5::Word16),3..2]) = [5,3]
- (take 7 [(1::Word16),2..1]) = [1]
- (take 7 [(2::Word16),1..2]) = [2]
- (take 7 [(2::Word16),1..1]) = [2,1]
- (take 7 [(2::Word16),3..1]) = []
- (take 7 [x,(x+1)..maxBound]) = [65531,65532,65533,65534,65535]
- (take 7 [x,(x-1)..minBound]) = [5,4,3,2,1,0]
-Testing Enum Word32:
- (succ (0::Word32)) = 1
- (succ (minBound::Word32)) = 1
- (succ (maxBound::Word32)) = error "Enum.succ{Word32}: tried to take `succ' of maxBound"
- pred (1::Word32) = 0
- pred (maxBound::Word32) = 4294967294
- pred (minBound::Word32) = error "Enum.pred{Word32}: tried to take `pred' of minBound"
- (map (toEnum::Int->Word32) [1, fromIntegral (minBound::Word32)::Int, fromIntegral (maxBound::Int32)::Int]) = [1,0,2147483647]
- (toEnum (maxBound::Int))::Word32 = 2147483647
- (map fromEnum [(1::Word32),minBound,fromIntegral (maxBound::Int)]) = [1,0,2147483647]
- fromEnum (maxBound::Word32) = error "Enum.fromEnum{Word32}: value (4294967295) is outside of Int's bounds (-2147483648,2147483647)"
- (take 7 [(1::Word32)..]) = [1,2,3,4,5,6,7]
- (take 7 [((maxBound::Word32)-5)..]) = [4294967290,4294967291,4294967292,4294967293,4294967294,4294967295]
- (take 7 [(1::Word32),2..]) = [1,2,3,4,5,6,7]
- (take 7 [(1::Word32),7..]) = [1,7,13,19,25,31,37]
- (take 7 [(1::Word32),1..]) = [1,1,1,1,1,1,1]
- (take 7 [(1::Word32),0..]) = [1,0]
- (take 7 [(5::Word32),2..]) = [5,2]
- (take 7 [x, x-1 ..]) = [1,0]
- (take 7 [x, x-1 ..]) = [5,4,3,2,1,0]
- (take 7 [x, (x+1) ..]) = [4294967290,4294967291,4294967292,4294967293,4294967294,4294967295]
- (take 7 ([(1::Word32) .. 5])) = [1,2,3,4,5]
- (take 4 ([(1::Word32) .. 1])) = [1]
- (take 7 ([(1::Word32) .. 0])) = []
- (take 7 ([(5::Word32) .. 0])) = []
- (take 7 ([(maxBound-(5::Word32)) .. maxBound])) = [4294967290,4294967291,4294967292,4294967293,4294967294,4294967295]
- (take 7 ([(minBound+(5::Word32)) .. minBound])) = []
- (take 7 [(5::Word32),4..1]) = [5,4,3,2,1]
- (take 7 [(5::Word32),3..1]) = [5,3,1]
- (take 7 [(5::Word32),3..2]) = [5,3]
- (take 7 [(1::Word32),2..1]) = [1]
- (take 7 [(2::Word32),1..2]) = [2]
- (take 7 [(2::Word32),1..1]) = [2,1]
- (take 7 [(2::Word32),3..1]) = []
- (take 7 [x,(x+1)..maxBound]) = [4294967291,4294967292,4294967293,4294967294,4294967295]
- (take 7 [x,(x-1)..minBound]) = [5,4,3,2,1,0]
-Testing Enum Word64:
- (succ (0::Word64)) = 1
- (succ (minBound::Word64)) = 1
- (succ (maxBound::Word64)) = error "Enum.succ{Word64}: tried to take `succ' of maxBound"
- pred (1::Word64) = 0
- pred (maxBound::Word64) = 18446744073709551614
- pred (minBound::Word64) = error "Enum.pred{Word64}: tried to take `pred' of minBound"
- (map (toEnum::Int->Word64) [1, fromIntegral (minBound::Word64)::Int, maxBound::Int]) = [1,0,2147483647]
- (toEnum (maxBound::Int))::Word64 = 2147483647
- (map fromEnum [(1::Word64),minBound,fromIntegral (maxBound::Int)]) = [1,0,2147483647]
- fromEnum (maxBound::Word64) = error "Enum.fromEnum{Word64}: value (18446744073709551615) is outside of Int's bounds (-2147483648,2147483647)"
- (take 7 [(1::Word64)..]) = [1,2,3,4,5,6,7]
- (take 7 [((maxBound::Word64)-5)..]) = [18446744073709551610,18446744073709551611,18446744073709551612,18446744073709551613,18446744073709551614,18446744073709551615]
- (take 7 [(1::Word64),2..]) = [1,2,3,4,5,6,7]
- (take 7 [(1::Word64),7..]) = [1,7,13,19,25,31,37]
- (take 7 [(1::Word64),1..]) = [1,1,1,1,1,1,1]
- (take 7 [(1::Word64),0..]) = [1,0]
- (take 7 [(5::Word64),2..]) = [5,2]
- (take 7 [x, x-1 ..]) = [1,0]
- (take 7 [x, x-1 ..]) = [5,4,3,2,1,0]
- (take 7 [x, (x+1) ..]) = [18446744073709551610,18446744073709551611,18446744073709551612,18446744073709551613,18446744073709551614,18446744073709551615]
- (take 7 ([(1::Word64) .. 5])) = [1,2,3,4,5]
- (take 4 ([(1::Word64) .. 1])) = [1]
- (take 7 ([(1::Word64) .. 0])) = []
- (take 7 ([(5::Word64) .. 0])) = []
- (take 7 ([(maxBound-(5::Word64)) .. maxBound])) = [18446744073709551610,18446744073709551611,18446744073709551612,18446744073709551613,18446744073709551614,18446744073709551615]
- (take 7 ([(minBound+(5::Word64)) .. minBound])) = []
- (take 7 [(5::Word64),4..1]) = [5,4,3,2,1]
- (take 7 [(5::Word64),3..1]) = [5,3,1]
- (take 7 [(5::Word64),3..2]) = [5,3]
- (take 7 [(1::Word64),2..1]) = [1]
- (take 7 [(2::Word64),1..2]) = [2]
- (take 7 [(2::Word64),1..1]) = [2,1]
- (take 7 [(2::Word64),3..1]) = []
- (take 7 [x,(x+1)..maxBound]) = [18446744073709551611,18446744073709551612,18446744073709551613,18446744073709551614,18446744073709551615]
- (take 7 [x,(x-1)..minBound]) = [5,4,3,2,1,0]
diff --git a/testsuite/tests/lib/should_run/enum03.stdout-alpha-dec-osf3 b/testsuite/tests/lib/should_run/enum03.stdout-alpha-dec-osf3
deleted file mode 100644
index 716782c46a..0000000000
--- a/testsuite/tests/lib/should_run/enum03.stdout-alpha-dec-osf3
+++ /dev/null
@@ -1,142 +0,0 @@
-Testing Enum Word8:
- (succ (0::Word8)) = 1
- (succ (minBound::Word8)) = 1
- (succ (maxBound::Word8)) = error "Enum.succ{Word8}: tried to take `succ' of maxBound"
- pred (1::Word8) = 0
- pred (maxBound::Word8) = 254
- pred (minBound::Word8) = error "Enum.pred{Word8}: tried to take `pred' of minBound"
- (map (toEnum::Int->Word8) [1, fromIntegral (minBound::Word8)::Int, fromIntegral (maxBound::Word8)::Int]) = [1,0,255]
- (toEnum (maxBound::Int))::Word8 = error "Enum.toEnum{Word8}: tag (9223372036854775807) is outside of bounds (0,255)"
- (map fromEnum [(1::Word8),minBound,maxBound]) = [1,0,255]
- (take 7 [(1::Word8)..]) = [1,2,3,4,5,6,7]
- (take 7 [((maxBound::Word8)-5)..]) = [250,251,252,253,254,255]
- (take 7 [(1::Word8),2..]) = [1,2,3,4,5,6,7]
- (take 7 [(1::Word8),7..]) = [1,7,13,19,25,31,37]
- (take 7 [(1::Word8),1..]) = [1,1,1,1,1,1,1]
- (take 7 [(1::Word8),0..]) = [1,0]
- (take 7 [(5::Word8),2..]) = [5,2]
- (take 7 [x, x-1 ..]) = [1,0]
- (take 7 [x, x-1 ..]) = [5,4,3,2,1,0]
- (take 7 [x, (x+1) ..]) = [250,251,252,253,254,255]
- (take 7 ([(1::Word8) .. 5])) = [1,2,3,4,5]
- (take 4 ([(1::Word8) .. 1])) = [1]
- (take 7 ([(1::Word8) .. 0])) = []
- (take 7 ([(5::Word8) .. 0])) = []
- (take 7 ([(maxBound-(5::Word8)) .. maxBound])) = [250,251,252,253,254,255]
- (take 7 ([(minBound+(5::Word8)) .. minBound])) = []
- (take 7 [(5::Word8),4..1]) = [5,4,3,2,1]
- (take 7 [(5::Word8),3..1]) = [5,3,1]
- (take 7 [(5::Word8),3..2]) = [5,3]
- (take 7 [(1::Word8),2..1]) = [1]
- (take 7 [(2::Word8),1..2]) = [2]
- (take 7 [(2::Word8),1..1]) = [2,1]
- (take 7 [(2::Word8),3..1]) = []
- (take 7 [x,(x+1)..maxBound]) = [251,252,253,254,255]
- (take 7 [x,(x-1)..minBound]) = [5,4,3,2,1,0]
-Testing Enum Word16:
- (succ (0::Word16)) = 1
- (succ (minBound::Word16)) = 1
- (succ (maxBound::Word16)) = error "Enum.succ{Word16}: tried to take `succ' of maxBound"
- pred (1::Word16) = 0
- pred (maxBound::Word16) = 65534
- pred (minBound::Word16) = error "Enum.pred{Word16}: tried to take `pred' of minBound"
- (map (toEnum::Int->Word16) [1, fromIntegral (minBound::Word16)::Int, fromIntegral (maxBound::Word16)::Int]) = [1,0,65535]
- (toEnum (maxBound::Int))::Word16 = error "Enum.toEnum{Word16}: tag (9223372036854775807) is outside of bounds (0,65535)"
- (map fromEnum [(1::Word16),minBound,maxBound]) = [1,0,65535]
- (take 7 [(1::Word16)..]) = [1,2,3,4,5,6,7]
- (take 7 [((maxBound::Word16)-5)..]) = [65530,65531,65532,65533,65534,65535]
- (take 7 [(1::Word16),2..]) = [1,2,3,4,5,6,7]
- (take 7 [(1::Word16),7..]) = [1,7,13,19,25,31,37]
- (take 7 [(1::Word16),1..]) = [1,1,1,1,1,1,1]
- (take 7 [(1::Word16),0..]) = [1,0]
- (take 7 [(5::Word16),2..]) = [5,2]
- (take 7 [x, x-1 ..]) = [1,0]
- (take 7 [x, x-1 ..]) = [5,4,3,2,1,0]
- (take 7 [x, (x+1) ..]) = [65530,65531,65532,65533,65534,65535]
- (take 7 ([(1::Word16) .. 5])) = [1,2,3,4,5]
- (take 4 ([(1::Word16) .. 1])) = [1]
- (take 7 ([(1::Word16) .. 0])) = []
- (take 7 ([(5::Word16) .. 0])) = []
- (take 7 ([(maxBound-(5::Word16)) .. maxBound])) = [65530,65531,65532,65533,65534,65535]
- (take 7 ([(minBound+(5::Word16)) .. minBound])) = []
- (take 7 [(5::Word16),4..1]) = [5,4,3,2,1]
- (take 7 [(5::Word16),3..1]) = [5,3,1]
- (take 7 [(5::Word16),3..2]) = [5,3]
- (take 7 [(1::Word16),2..1]) = [1]
- (take 7 [(2::Word16),1..2]) = [2]
- (take 7 [(2::Word16),1..1]) = [2,1]
- (take 7 [(2::Word16),3..1]) = []
- (take 7 [x,(x+1)..maxBound]) = [65531,65532,65533,65534,65535]
- (take 7 [x,(x-1)..minBound]) = [5,4,3,2,1,0]
-Testing Enum Word32:
- (succ (0::Word32)) = 1
- (succ (minBound::Word32)) = 1
- (succ (maxBound::Word32)) = error "Enum.succ{Word32}: tried to take `succ' of maxBound"
- pred (1::Word32) = 0
- pred (maxBound::Word32) = 4294967294
- pred (minBound::Word32) = error "Enum.pred{Word32}: tried to take `pred' of minBound"
- (map (toEnum::Int->Word32) [1, fromIntegral (minBound::Word32)::Int, fromIntegral (maxBound::Int32)::Int]) = [1,0,2147483647]
- (toEnum (maxBound::Int))::Word32 = error "Enum.toEnum{Word32}: tag (9223372036854775807) is outside of bounds (0,4294967295)"
- (map fromEnum [(1::Word32),minBound,fromIntegral (maxBound::Int)]) = [1,0,4294967295]
- fromEnum (maxBound::Word32) = 4294967295
- (take 7 [(1::Word32)..]) = [1,2,3,4,5,6,7]
- (take 7 [((maxBound::Word32)-5)..]) = [4294967290,4294967291,4294967292,4294967293,4294967294,4294967295]
- (take 7 [(1::Word32),2..]) = [1,2,3,4,5,6,7]
- (take 7 [(1::Word32),7..]) = [1,7,13,19,25,31,37]
- (take 7 [(1::Word32),1..]) = [1,1,1,1,1,1,1]
- (take 7 [(1::Word32),0..]) = [1,0]
- (take 7 [(5::Word32),2..]) = [5,2]
- (take 7 [x, x-1 ..]) = [1,0]
- (take 7 [x, x-1 ..]) = [5,4,3,2,1,0]
- (take 7 [x, (x+1) ..]) = [4294967290,4294967291,4294967292,4294967293,4294967294,4294967295]
- (take 7 ([(1::Word32) .. 5])) = [1,2,3,4,5]
- (take 4 ([(1::Word32) .. 1])) = [1]
- (take 7 ([(1::Word32) .. 0])) = []
- (take 7 ([(5::Word32) .. 0])) = []
- (take 7 ([(maxBound-(5::Word32)) .. maxBound])) = [4294967290,4294967291,4294967292,4294967293,4294967294,4294967295]
- (take 7 ([(minBound+(5::Word32)) .. minBound])) = []
- (take 7 [(5::Word32),4..1]) = [5,4,3,2,1]
- (take 7 [(5::Word32),3..1]) = [5,3,1]
- (take 7 [(5::Word32),3..2]) = [5,3]
- (take 7 [(1::Word32),2..1]) = [1]
- (take 7 [(2::Word32),1..2]) = [2]
- (take 7 [(2::Word32),1..1]) = [2,1]
- (take 7 [(2::Word32),3..1]) = []
- (take 7 [x,(x+1)..maxBound]) = [4294967291,4294967292,4294967293,4294967294,4294967295]
- (take 7 [x,(x-1)..minBound]) = [5,4,3,2,1,0]
-Testing Enum Word64:
- (succ (0::Word64)) = 1
- (succ (minBound::Word64)) = 1
- (succ (maxBound::Word64)) = error "Enum.succ{Word64}: tried to take `succ' of maxBound"
- pred (1::Word64) = 0
- pred (maxBound::Word64) = 18446744073709551614
- pred (minBound::Word64) = error "Enum.pred{Word64}: tried to take `pred' of minBound"
- (map (toEnum::Int->Word64) [1, fromIntegral (minBound::Word64)::Int, maxBound::Int]) = [1,0,9223372036854775807]
- (toEnum (maxBound::Int))::Word64 = 9223372036854775807
- (map fromEnum [(1::Word64),minBound,fromIntegral (maxBound::Int)]) = [1,0,9223372036854775807]
- fromEnum (maxBound::Word64) = error "Enum.fromEnum{Word64}: value (18446744073709551615) is outside of Int's bounds (-9223372036854775808,9223372036854775807)"
- (take 7 [(1::Word64)..]) = [1,2,3,4,5,6,7]
- (take 7 [((maxBound::Word64)-5)..]) = [18446744073709551610,18446744073709551611,18446744073709551612,18446744073709551613,18446744073709551614,18446744073709551615]
- (take 7 [(1::Word64),2..]) = [1,2,3,4,5,6,7]
- (take 7 [(1::Word64),7..]) = [1,7,13,19,25,31,37]
- (take 7 [(1::Word64),1..]) = [1,1,1,1,1,1,1]
- (take 7 [(1::Word64),0..]) = [1,0]
- (take 7 [(5::Word64),2..]) = [5,2]
- (take 7 [x, x-1 ..]) = [1,0]
- (take 7 [x, x-1 ..]) = [5,4,3,2,1,0]
- (take 7 [x, (x+1) ..]) = [18446744073709551610,18446744073709551611,18446744073709551612,18446744073709551613,18446744073709551614,18446744073709551615]
- (take 7 ([(1::Word64) .. 5])) = [1,2,3,4,5]
- (take 4 ([(1::Word64) .. 1])) = [1]
- (take 7 ([(1::Word64) .. 0])) = []
- (take 7 ([(5::Word64) .. 0])) = []
- (take 7 ([(maxBound-(5::Word64)) .. maxBound])) = [18446744073709551610,18446744073709551611,18446744073709551612,18446744073709551613,18446744073709551614,18446744073709551615]
- (take 7 ([(minBound+(5::Word64)) .. minBound])) = []
- (take 7 [(5::Word64),4..1]) = [5,4,3,2,1]
- (take 7 [(5::Word64),3..1]) = [5,3,1]
- (take 7 [(5::Word64),3..2]) = [5,3]
- (take 7 [(1::Word64),2..1]) = [1]
- (take 7 [(2::Word64),1..2]) = [2]
- (take 7 [(2::Word64),1..1]) = [2,1]
- (take 7 [(2::Word64),3..1]) = []
- (take 7 [x,(x+1)..maxBound]) = [18446744073709551611,18446744073709551612,18446744073709551613,18446744073709551614,18446744073709551615]
- (take 7 [x,(x-1)..minBound]) = [5,4,3,2,1,0]
diff --git a/testsuite/tests/lib/should_run/enum03.stdout-hugs b/testsuite/tests/lib/should_run/enum03.stdout-hugs
deleted file mode 100644
index babc1c2e9e..0000000000
--- a/testsuite/tests/lib/should_run/enum03.stdout-hugs
+++ /dev/null
@@ -1,142 +0,0 @@
-Testing Enum Word8:
- (succ (0::Word8)) = 1
- (succ (minBound::Word8)) = 1
- (succ (maxBound::Word8)) = error "succ: applied to maxBound"
- pred (1::Word8) = 0
- pred (maxBound::Word8) = 254
- pred (minBound::Word8) = error "pred: applied to minBound"
- (map (toEnum::Int->Word8) [1, fromIntegral (minBound::Word8)::Int, fromIntegral (maxBound::Word8)::Int]) = [1,0,255]
- (toEnum (maxBound::Int))::Word8 = 255
- (map fromEnum [(1::Word8),minBound,maxBound]) = [1,0,255]
- (take 7 [(1::Word8)..]) = [1,2,3,4,5,6,7]
- (take 7 [((maxBound::Word8)-5)..]) = [250,251,252,253,254,255]
- (take 7 [(1::Word8),2..]) = [1,2,3,4,5,6,7]
- (take 7 [(1::Word8),7..]) = [1,7,13,19,25,31,37]
- (take 7 [(1::Word8),1..]) = [1,1,1,1,1,1,1]
- (take 7 [(1::Word8),0..]) = [1,0]
- (take 7 [(5::Word8),2..]) = [5,2]
- (take 7 [x, x-1 ..]) = [1,0]
- (take 7 [x, x-1 ..]) = [5,4,3,2,1,0]
- (take 7 [x, (x+1) ..]) = [250,251,252,253,254,255]
- (take 7 ([(1::Word8) .. 5])) = [1,2,3,4,5]
- (take 4 ([(1::Word8) .. 1])) = [1]
- (take 7 ([(1::Word8) .. 0])) = []
- (take 7 ([(5::Word8) .. 0])) = []
- (take 7 ([(maxBound-(5::Word8)) .. maxBound])) = [250,251,252,253,254,255]
- (take 7 ([(minBound+(5::Word8)) .. minBound])) = []
- (take 7 [(5::Word8),4..1]) = [5,4,3,2,1]
- (take 7 [(5::Word8),3..1]) = [5,3,1]
- (take 7 [(5::Word8),3..2]) = [5,3]
- (take 7 [(1::Word8),2..1]) = [1]
- (take 7 [(2::Word8),1..2]) = [2]
- (take 7 [(2::Word8),1..1]) = [2,1]
- (take 7 [(2::Word8),3..1]) = []
- (take 7 [x,(x+1)..maxBound]) = [251,252,253,254,255]
- (take 7 [x,(x-1)..minBound]) = [5,4,3,2,1,0]
-Testing Enum Word16:
- (succ (0::Word16)) = 1
- (succ (minBound::Word16)) = 1
- (succ (maxBound::Word16)) = error "succ: applied to maxBound"
- pred (1::Word16) = 0
- pred (maxBound::Word16) = 65534
- pred (minBound::Word16) = error "pred: applied to minBound"
- (map (toEnum::Int->Word16) [1, fromIntegral (minBound::Word16)::Int, fromIntegral (maxBound::Word16)::Int]) = [1,0,65535]
- (toEnum (maxBound::Int))::Word16 = 65535
- (map fromEnum [(1::Word16),minBound,maxBound]) = [1,0,65535]
- (take 7 [(1::Word16)..]) = [1,2,3,4,5,6,7]
- (take 7 [((maxBound::Word16)-5)..]) = [65530,65531,65532,65533,65534,65535]
- (take 7 [(1::Word16),2..]) = [1,2,3,4,5,6,7]
- (take 7 [(1::Word16),7..]) = [1,7,13,19,25,31,37]
- (take 7 [(1::Word16),1..]) = [1,1,1,1,1,1,1]
- (take 7 [(1::Word16),0..]) = [1,0]
- (take 7 [(5::Word16),2..]) = [5,2]
- (take 7 [x, x-1 ..]) = [1,0]
- (take 7 [x, x-1 ..]) = [5,4,3,2,1,0]
- (take 7 [x, (x+1) ..]) = [65530,65531,65532,65533,65534,65535]
- (take 7 ([(1::Word16) .. 5])) = [1,2,3,4,5]
- (take 4 ([(1::Word16) .. 1])) = [1]
- (take 7 ([(1::Word16) .. 0])) = []
- (take 7 ([(5::Word16) .. 0])) = []
- (take 7 ([(maxBound-(5::Word16)) .. maxBound])) = [65530,65531,65532,65533,65534,65535]
- (take 7 ([(minBound+(5::Word16)) .. minBound])) = []
- (take 7 [(5::Word16),4..1]) = [5,4,3,2,1]
- (take 7 [(5::Word16),3..1]) = [5,3,1]
- (take 7 [(5::Word16),3..2]) = [5,3]
- (take 7 [(1::Word16),2..1]) = [1]
- (take 7 [(2::Word16),1..2]) = [2]
- (take 7 [(2::Word16),1..1]) = [2,1]
- (take 7 [(2::Word16),3..1]) = []
- (take 7 [x,(x+1)..maxBound]) = [65531,65532,65533,65534,65535]
- (take 7 [x,(x-1)..minBound]) = [5,4,3,2,1,0]
-Testing Enum Word32:
- (succ (0::Word32)) = 1
- (succ (minBound::Word32)) = 1
- (succ (maxBound::Word32)) = error "succ: applied to maxBound"
- pred (1::Word32) = 0
- pred (maxBound::Word32) = 4294967294
- pred (minBound::Word32) = error "pred: applied to minBound"
- (map (toEnum::Int->Word32) [1, fromIntegral (minBound::Word32)::Int, fromIntegral (maxBound::Int32)::Int]) = [1,0,2147483647]
- (toEnum (maxBound::Int))::Word32 = 2147483647
- (map fromEnum [(1::Word32),minBound,fromIntegral (maxBound::Int)]) = [1,0,2147483647]
- fromEnum (maxBound::Word32) = -1
- (take 7 [(1::Word32)..]) = [1,2,3,4,5,6,7]
- (take 7 [((maxBound::Word32)-5)..]) = [4294967290,4294967291,4294967292,4294967293,4294967294,4294967295]
- (take 7 [(1::Word32),2..]) = [1,2,3,4,5,6,7]
- (take 7 [(1::Word32),7..]) = [1,7,13,19,25,31,37]
- (take 7 [(1::Word32),1..]) = [1,1,1,1,1,1,1]
- (take 7 [(1::Word32),0..]) = [1,0]
- (take 7 [(5::Word32),2..]) = [5,2]
- (take 7 [x, x-1 ..]) = [1,0]
- (take 7 [x, x-1 ..]) = [5,4,3,2,1,0]
- (take 7 [x, (x+1) ..]) = [4294967290,4294967291,4294967292,4294967293,4294967294,4294967295]
- (take 7 ([(1::Word32) .. 5])) = [1,2,3,4,5]
- (take 4 ([(1::Word32) .. 1])) = [1]
- (take 7 ([(1::Word32) .. 0])) = []
- (take 7 ([(5::Word32) .. 0])) = []
- (take 7 ([(maxBound-(5::Word32)) .. maxBound])) = [4294967290,4294967291,4294967292,4294967293,4294967294,4294967295]
- (take 7 ([(minBound+(5::Word32)) .. minBound])) = []
- (take 7 [(5::Word32),4..1]) = [5,4,3,2,1]
- (take 7 [(5::Word32),3..1]) = [5,3,1]
- (take 7 [(5::Word32),3..2]) = [5,3]
- (take 7 [(1::Word32),2..1]) = [1]
- (take 7 [(2::Word32),1..2]) = [2]
- (take 7 [(2::Word32),1..1]) = [2,1]
- (take 7 [(2::Word32),3..1]) = []
- (take 7 [x,(x+1)..maxBound]) = [4294967291,4294967292,4294967293,4294967294,4294967295]
- (take 7 [x,(x-1)..minBound]) = [5,4,3,2,1,0]
-Testing Enum Word64:
- (succ (0::Word64)) = 1
- (succ (minBound::Word64)) = 1
- (succ (maxBound::Word64)) = error "succ: applied to maxBound"
- pred (1::Word64) = 0
- pred (maxBound::Word64) = 18446744073709551614
- pred (minBound::Word64) = error "pred: applied to minBound"
- (map (toEnum::Int->Word64) [1, fromIntegral (minBound::Word64)::Int, maxBound::Int]) = [1,0,2147483647]
- (toEnum (maxBound::Int))::Word64 = 2147483647
- (map fromEnum [(1::Word64),minBound,fromIntegral (maxBound::Int)]) = [1,0,2147483647]
- fromEnum (maxBound::Word64) = Fail: arithmetic overflow
- (take 7 [(1::Word64)..]) = [1,2,3,4,5,6,7]
- (take 7 [((maxBound::Word64)-5)..]) = [18446744073709551610,18446744073709551611,18446744073709551612,18446744073709551613,18446744073709551614,18446744073709551615]
- (take 7 [(1::Word64),2..]) = [1,2,3,4,5,6,7]
- (take 7 [(1::Word64),7..]) = [1,7,13,19,25,31,37]
- (take 7 [(1::Word64),1..]) = [1,1,1,1,1,1,1]
- (take 7 [(1::Word64),0..]) = [1,0]
- (take 7 [(5::Word64),2..]) = [5,2]
- (take 7 [x, x-1 ..]) = [1,0]
- (take 7 [x, x-1 ..]) = [5,4,3,2,1,0]
- (take 7 [x, (x+1) ..]) = [18446744073709551610,18446744073709551611,18446744073709551612,18446744073709551613,18446744073709551614,18446744073709551615]
- (take 7 ([(1::Word64) .. 5])) = [1,2,3,4,5]
- (take 4 ([(1::Word64) .. 1])) = [1]
- (take 7 ([(1::Word64) .. 0])) = []
- (take 7 ([(5::Word64) .. 0])) = []
- (take 7 ([(maxBound-(5::Word64)) .. maxBound])) = [18446744073709551610,18446744073709551611,18446744073709551612,18446744073709551613,18446744073709551614,18446744073709551615]
- (take 7 ([(minBound+(5::Word64)) .. minBound])) = []
- (take 7 [(5::Word64),4..1]) = [5,4,3,2,1]
- (take 7 [(5::Word64),3..1]) = [5,3,1]
- (take 7 [(5::Word64),3..2]) = [5,3]
- (take 7 [(1::Word64),2..1]) = [1]
- (take 7 [(2::Word64),1..2]) = [2]
- (take 7 [(2::Word64),1..1]) = [2,1]
- (take 7 [(2::Word64),3..1]) = []
- (take 7 [x,(x+1)..maxBound]) = [18446744073709551611,18446744073709551612,18446744073709551613,18446744073709551614,18446744073709551615]
- (take 7 [x,(x-1)..minBound]) = [5,4,3,2,1,0]
diff --git a/testsuite/tests/lib/should_run/enum03.stdout-mips-sgi-irix b/testsuite/tests/lib/should_run/enum03.stdout-mips-sgi-irix
deleted file mode 100644
index 716782c46a..0000000000
--- a/testsuite/tests/lib/should_run/enum03.stdout-mips-sgi-irix
+++ /dev/null
@@ -1,142 +0,0 @@
-Testing Enum Word8:
- (succ (0::Word8)) = 1
- (succ (minBound::Word8)) = 1
- (succ (maxBound::Word8)) = error "Enum.succ{Word8}: tried to take `succ' of maxBound"
- pred (1::Word8) = 0
- pred (maxBound::Word8) = 254
- pred (minBound::Word8) = error "Enum.pred{Word8}: tried to take `pred' of minBound"
- (map (toEnum::Int->Word8) [1, fromIntegral (minBound::Word8)::Int, fromIntegral (maxBound::Word8)::Int]) = [1,0,255]
- (toEnum (maxBound::Int))::Word8 = error "Enum.toEnum{Word8}: tag (9223372036854775807) is outside of bounds (0,255)"
- (map fromEnum [(1::Word8),minBound,maxBound]) = [1,0,255]
- (take 7 [(1::Word8)..]) = [1,2,3,4,5,6,7]
- (take 7 [((maxBound::Word8)-5)..]) = [250,251,252,253,254,255]
- (take 7 [(1::Word8),2..]) = [1,2,3,4,5,6,7]
- (take 7 [(1::Word8),7..]) = [1,7,13,19,25,31,37]
- (take 7 [(1::Word8),1..]) = [1,1,1,1,1,1,1]
- (take 7 [(1::Word8),0..]) = [1,0]
- (take 7 [(5::Word8),2..]) = [5,2]
- (take 7 [x, x-1 ..]) = [1,0]
- (take 7 [x, x-1 ..]) = [5,4,3,2,1,0]
- (take 7 [x, (x+1) ..]) = [250,251,252,253,254,255]
- (take 7 ([(1::Word8) .. 5])) = [1,2,3,4,5]
- (take 4 ([(1::Word8) .. 1])) = [1]
- (take 7 ([(1::Word8) .. 0])) = []
- (take 7 ([(5::Word8) .. 0])) = []
- (take 7 ([(maxBound-(5::Word8)) .. maxBound])) = [250,251,252,253,254,255]
- (take 7 ([(minBound+(5::Word8)) .. minBound])) = []
- (take 7 [(5::Word8),4..1]) = [5,4,3,2,1]
- (take 7 [(5::Word8),3..1]) = [5,3,1]
- (take 7 [(5::Word8),3..2]) = [5,3]
- (take 7 [(1::Word8),2..1]) = [1]
- (take 7 [(2::Word8),1..2]) = [2]
- (take 7 [(2::Word8),1..1]) = [2,1]
- (take 7 [(2::Word8),3..1]) = []
- (take 7 [x,(x+1)..maxBound]) = [251,252,253,254,255]
- (take 7 [x,(x-1)..minBound]) = [5,4,3,2,1,0]
-Testing Enum Word16:
- (succ (0::Word16)) = 1
- (succ (minBound::Word16)) = 1
- (succ (maxBound::Word16)) = error "Enum.succ{Word16}: tried to take `succ' of maxBound"
- pred (1::Word16) = 0
- pred (maxBound::Word16) = 65534
- pred (minBound::Word16) = error "Enum.pred{Word16}: tried to take `pred' of minBound"
- (map (toEnum::Int->Word16) [1, fromIntegral (minBound::Word16)::Int, fromIntegral (maxBound::Word16)::Int]) = [1,0,65535]
- (toEnum (maxBound::Int))::Word16 = error "Enum.toEnum{Word16}: tag (9223372036854775807) is outside of bounds (0,65535)"
- (map fromEnum [(1::Word16),minBound,maxBound]) = [1,0,65535]
- (take 7 [(1::Word16)..]) = [1,2,3,4,5,6,7]
- (take 7 [((maxBound::Word16)-5)..]) = [65530,65531,65532,65533,65534,65535]
- (take 7 [(1::Word16),2..]) = [1,2,3,4,5,6,7]
- (take 7 [(1::Word16),7..]) = [1,7,13,19,25,31,37]
- (take 7 [(1::Word16),1..]) = [1,1,1,1,1,1,1]
- (take 7 [(1::Word16),0..]) = [1,0]
- (take 7 [(5::Word16),2..]) = [5,2]
- (take 7 [x, x-1 ..]) = [1,0]
- (take 7 [x, x-1 ..]) = [5,4,3,2,1,0]
- (take 7 [x, (x+1) ..]) = [65530,65531,65532,65533,65534,65535]
- (take 7 ([(1::Word16) .. 5])) = [1,2,3,4,5]
- (take 4 ([(1::Word16) .. 1])) = [1]
- (take 7 ([(1::Word16) .. 0])) = []
- (take 7 ([(5::Word16) .. 0])) = []
- (take 7 ([(maxBound-(5::Word16)) .. maxBound])) = [65530,65531,65532,65533,65534,65535]
- (take 7 ([(minBound+(5::Word16)) .. minBound])) = []
- (take 7 [(5::Word16),4..1]) = [5,4,3,2,1]
- (take 7 [(5::Word16),3..1]) = [5,3,1]
- (take 7 [(5::Word16),3..2]) = [5,3]
- (take 7 [(1::Word16),2..1]) = [1]
- (take 7 [(2::Word16),1..2]) = [2]
- (take 7 [(2::Word16),1..1]) = [2,1]
- (take 7 [(2::Word16),3..1]) = []
- (take 7 [x,(x+1)..maxBound]) = [65531,65532,65533,65534,65535]
- (take 7 [x,(x-1)..minBound]) = [5,4,3,2,1,0]
-Testing Enum Word32:
- (succ (0::Word32)) = 1
- (succ (minBound::Word32)) = 1
- (succ (maxBound::Word32)) = error "Enum.succ{Word32}: tried to take `succ' of maxBound"
- pred (1::Word32) = 0
- pred (maxBound::Word32) = 4294967294
- pred (minBound::Word32) = error "Enum.pred{Word32}: tried to take `pred' of minBound"
- (map (toEnum::Int->Word32) [1, fromIntegral (minBound::Word32)::Int, fromIntegral (maxBound::Int32)::Int]) = [1,0,2147483647]
- (toEnum (maxBound::Int))::Word32 = error "Enum.toEnum{Word32}: tag (9223372036854775807) is outside of bounds (0,4294967295)"
- (map fromEnum [(1::Word32),minBound,fromIntegral (maxBound::Int)]) = [1,0,4294967295]
- fromEnum (maxBound::Word32) = 4294967295
- (take 7 [(1::Word32)..]) = [1,2,3,4,5,6,7]
- (take 7 [((maxBound::Word32)-5)..]) = [4294967290,4294967291,4294967292,4294967293,4294967294,4294967295]
- (take 7 [(1::Word32),2..]) = [1,2,3,4,5,6,7]
- (take 7 [(1::Word32),7..]) = [1,7,13,19,25,31,37]
- (take 7 [(1::Word32),1..]) = [1,1,1,1,1,1,1]
- (take 7 [(1::Word32),0..]) = [1,0]
- (take 7 [(5::Word32),2..]) = [5,2]
- (take 7 [x, x-1 ..]) = [1,0]
- (take 7 [x, x-1 ..]) = [5,4,3,2,1,0]
- (take 7 [x, (x+1) ..]) = [4294967290,4294967291,4294967292,4294967293,4294967294,4294967295]
- (take 7 ([(1::Word32) .. 5])) = [1,2,3,4,5]
- (take 4 ([(1::Word32) .. 1])) = [1]
- (take 7 ([(1::Word32) .. 0])) = []
- (take 7 ([(5::Word32) .. 0])) = []
- (take 7 ([(maxBound-(5::Word32)) .. maxBound])) = [4294967290,4294967291,4294967292,4294967293,4294967294,4294967295]
- (take 7 ([(minBound+(5::Word32)) .. minBound])) = []
- (take 7 [(5::Word32),4..1]) = [5,4,3,2,1]
- (take 7 [(5::Word32),3..1]) = [5,3,1]
- (take 7 [(5::Word32),3..2]) = [5,3]
- (take 7 [(1::Word32),2..1]) = [1]
- (take 7 [(2::Word32),1..2]) = [2]
- (take 7 [(2::Word32),1..1]) = [2,1]
- (take 7 [(2::Word32),3..1]) = []
- (take 7 [x,(x+1)..maxBound]) = [4294967291,4294967292,4294967293,4294967294,4294967295]
- (take 7 [x,(x-1)..minBound]) = [5,4,3,2,1,0]
-Testing Enum Word64:
- (succ (0::Word64)) = 1
- (succ (minBound::Word64)) = 1
- (succ (maxBound::Word64)) = error "Enum.succ{Word64}: tried to take `succ' of maxBound"
- pred (1::Word64) = 0
- pred (maxBound::Word64) = 18446744073709551614
- pred (minBound::Word64) = error "Enum.pred{Word64}: tried to take `pred' of minBound"
- (map (toEnum::Int->Word64) [1, fromIntegral (minBound::Word64)::Int, maxBound::Int]) = [1,0,9223372036854775807]
- (toEnum (maxBound::Int))::Word64 = 9223372036854775807
- (map fromEnum [(1::Word64),minBound,fromIntegral (maxBound::Int)]) = [1,0,9223372036854775807]
- fromEnum (maxBound::Word64) = error "Enum.fromEnum{Word64}: value (18446744073709551615) is outside of Int's bounds (-9223372036854775808,9223372036854775807)"
- (take 7 [(1::Word64)..]) = [1,2,3,4,5,6,7]
- (take 7 [((maxBound::Word64)-5)..]) = [18446744073709551610,18446744073709551611,18446744073709551612,18446744073709551613,18446744073709551614,18446744073709551615]
- (take 7 [(1::Word64),2..]) = [1,2,3,4,5,6,7]
- (take 7 [(1::Word64),7..]) = [1,7,13,19,25,31,37]
- (take 7 [(1::Word64),1..]) = [1,1,1,1,1,1,1]
- (take 7 [(1::Word64),0..]) = [1,0]
- (take 7 [(5::Word64),2..]) = [5,2]
- (take 7 [x, x-1 ..]) = [1,0]
- (take 7 [x, x-1 ..]) = [5,4,3,2,1,0]
- (take 7 [x, (x+1) ..]) = [18446744073709551610,18446744073709551611,18446744073709551612,18446744073709551613,18446744073709551614,18446744073709551615]
- (take 7 ([(1::Word64) .. 5])) = [1,2,3,4,5]
- (take 4 ([(1::Word64) .. 1])) = [1]
- (take 7 ([(1::Word64) .. 0])) = []
- (take 7 ([(5::Word64) .. 0])) = []
- (take 7 ([(maxBound-(5::Word64)) .. maxBound])) = [18446744073709551610,18446744073709551611,18446744073709551612,18446744073709551613,18446744073709551614,18446744073709551615]
- (take 7 ([(minBound+(5::Word64)) .. minBound])) = []
- (take 7 [(5::Word64),4..1]) = [5,4,3,2,1]
- (take 7 [(5::Word64),3..1]) = [5,3,1]
- (take 7 [(5::Word64),3..2]) = [5,3]
- (take 7 [(1::Word64),2..1]) = [1]
- (take 7 [(2::Word64),1..2]) = [2]
- (take 7 [(2::Word64),1..1]) = [2,1]
- (take 7 [(2::Word64),3..1]) = []
- (take 7 [x,(x+1)..maxBound]) = [18446744073709551611,18446744073709551612,18446744073709551613,18446744073709551614,18446744073709551615]
- (take 7 [x,(x-1)..minBound]) = [5,4,3,2,1,0]
diff --git a/testsuite/tests/lib/should_run/enum03.stdout-ws-64 b/testsuite/tests/lib/should_run/enum03.stdout-ws-64
deleted file mode 100644
index 716782c46a..0000000000
--- a/testsuite/tests/lib/should_run/enum03.stdout-ws-64
+++ /dev/null
@@ -1,142 +0,0 @@
-Testing Enum Word8:
- (succ (0::Word8)) = 1
- (succ (minBound::Word8)) = 1
- (succ (maxBound::Word8)) = error "Enum.succ{Word8}: tried to take `succ' of maxBound"
- pred (1::Word8) = 0
- pred (maxBound::Word8) = 254
- pred (minBound::Word8) = error "Enum.pred{Word8}: tried to take `pred' of minBound"
- (map (toEnum::Int->Word8) [1, fromIntegral (minBound::Word8)::Int, fromIntegral (maxBound::Word8)::Int]) = [1,0,255]
- (toEnum (maxBound::Int))::Word8 = error "Enum.toEnum{Word8}: tag (9223372036854775807) is outside of bounds (0,255)"
- (map fromEnum [(1::Word8),minBound,maxBound]) = [1,0,255]
- (take 7 [(1::Word8)..]) = [1,2,3,4,5,6,7]
- (take 7 [((maxBound::Word8)-5)..]) = [250,251,252,253,254,255]
- (take 7 [(1::Word8),2..]) = [1,2,3,4,5,6,7]
- (take 7 [(1::Word8),7..]) = [1,7,13,19,25,31,37]
- (take 7 [(1::Word8),1..]) = [1,1,1,1,1,1,1]
- (take 7 [(1::Word8),0..]) = [1,0]
- (take 7 [(5::Word8),2..]) = [5,2]
- (take 7 [x, x-1 ..]) = [1,0]
- (take 7 [x, x-1 ..]) = [5,4,3,2,1,0]
- (take 7 [x, (x+1) ..]) = [250,251,252,253,254,255]
- (take 7 ([(1::Word8) .. 5])) = [1,2,3,4,5]
- (take 4 ([(1::Word8) .. 1])) = [1]
- (take 7 ([(1::Word8) .. 0])) = []
- (take 7 ([(5::Word8) .. 0])) = []
- (take 7 ([(maxBound-(5::Word8)) .. maxBound])) = [250,251,252,253,254,255]
- (take 7 ([(minBound+(5::Word8)) .. minBound])) = []
- (take 7 [(5::Word8),4..1]) = [5,4,3,2,1]
- (take 7 [(5::Word8),3..1]) = [5,3,1]
- (take 7 [(5::Word8),3..2]) = [5,3]
- (take 7 [(1::Word8),2..1]) = [1]
- (take 7 [(2::Word8),1..2]) = [2]
- (take 7 [(2::Word8),1..1]) = [2,1]
- (take 7 [(2::Word8),3..1]) = []
- (take 7 [x,(x+1)..maxBound]) = [251,252,253,254,255]
- (take 7 [x,(x-1)..minBound]) = [5,4,3,2,1,0]
-Testing Enum Word16:
- (succ (0::Word16)) = 1
- (succ (minBound::Word16)) = 1
- (succ (maxBound::Word16)) = error "Enum.succ{Word16}: tried to take `succ' of maxBound"
- pred (1::Word16) = 0
- pred (maxBound::Word16) = 65534
- pred (minBound::Word16) = error "Enum.pred{Word16}: tried to take `pred' of minBound"
- (map (toEnum::Int->Word16) [1, fromIntegral (minBound::Word16)::Int, fromIntegral (maxBound::Word16)::Int]) = [1,0,65535]
- (toEnum (maxBound::Int))::Word16 = error "Enum.toEnum{Word16}: tag (9223372036854775807) is outside of bounds (0,65535)"
- (map fromEnum [(1::Word16),minBound,maxBound]) = [1,0,65535]
- (take 7 [(1::Word16)..]) = [1,2,3,4,5,6,7]
- (take 7 [((maxBound::Word16)-5)..]) = [65530,65531,65532,65533,65534,65535]
- (take 7 [(1::Word16),2..]) = [1,2,3,4,5,6,7]
- (take 7 [(1::Word16),7..]) = [1,7,13,19,25,31,37]
- (take 7 [(1::Word16),1..]) = [1,1,1,1,1,1,1]
- (take 7 [(1::Word16),0..]) = [1,0]
- (take 7 [(5::Word16),2..]) = [5,2]
- (take 7 [x, x-1 ..]) = [1,0]
- (take 7 [x, x-1 ..]) = [5,4,3,2,1,0]
- (take 7 [x, (x+1) ..]) = [65530,65531,65532,65533,65534,65535]
- (take 7 ([(1::Word16) .. 5])) = [1,2,3,4,5]
- (take 4 ([(1::Word16) .. 1])) = [1]
- (take 7 ([(1::Word16) .. 0])) = []
- (take 7 ([(5::Word16) .. 0])) = []
- (take 7 ([(maxBound-(5::Word16)) .. maxBound])) = [65530,65531,65532,65533,65534,65535]
- (take 7 ([(minBound+(5::Word16)) .. minBound])) = []
- (take 7 [(5::Word16),4..1]) = [5,4,3,2,1]
- (take 7 [(5::Word16),3..1]) = [5,3,1]
- (take 7 [(5::Word16),3..2]) = [5,3]
- (take 7 [(1::Word16),2..1]) = [1]
- (take 7 [(2::Word16),1..2]) = [2]
- (take 7 [(2::Word16),1..1]) = [2,1]
- (take 7 [(2::Word16),3..1]) = []
- (take 7 [x,(x+1)..maxBound]) = [65531,65532,65533,65534,65535]
- (take 7 [x,(x-1)..minBound]) = [5,4,3,2,1,0]
-Testing Enum Word32:
- (succ (0::Word32)) = 1
- (succ (minBound::Word32)) = 1
- (succ (maxBound::Word32)) = error "Enum.succ{Word32}: tried to take `succ' of maxBound"
- pred (1::Word32) = 0
- pred (maxBound::Word32) = 4294967294
- pred (minBound::Word32) = error "Enum.pred{Word32}: tried to take `pred' of minBound"
- (map (toEnum::Int->Word32) [1, fromIntegral (minBound::Word32)::Int, fromIntegral (maxBound::Int32)::Int]) = [1,0,2147483647]
- (toEnum (maxBound::Int))::Word32 = error "Enum.toEnum{Word32}: tag (9223372036854775807) is outside of bounds (0,4294967295)"
- (map fromEnum [(1::Word32),minBound,fromIntegral (maxBound::Int)]) = [1,0,4294967295]
- fromEnum (maxBound::Word32) = 4294967295
- (take 7 [(1::Word32)..]) = [1,2,3,4,5,6,7]
- (take 7 [((maxBound::Word32)-5)..]) = [4294967290,4294967291,4294967292,4294967293,4294967294,4294967295]
- (take 7 [(1::Word32),2..]) = [1,2,3,4,5,6,7]
- (take 7 [(1::Word32),7..]) = [1,7,13,19,25,31,37]
- (take 7 [(1::Word32),1..]) = [1,1,1,1,1,1,1]
- (take 7 [(1::Word32),0..]) = [1,0]
- (take 7 [(5::Word32),2..]) = [5,2]
- (take 7 [x, x-1 ..]) = [1,0]
- (take 7 [x, x-1 ..]) = [5,4,3,2,1,0]
- (take 7 [x, (x+1) ..]) = [4294967290,4294967291,4294967292,4294967293,4294967294,4294967295]
- (take 7 ([(1::Word32) .. 5])) = [1,2,3,4,5]
- (take 4 ([(1::Word32) .. 1])) = [1]
- (take 7 ([(1::Word32) .. 0])) = []
- (take 7 ([(5::Word32) .. 0])) = []
- (take 7 ([(maxBound-(5::Word32)) .. maxBound])) = [4294967290,4294967291,4294967292,4294967293,4294967294,4294967295]
- (take 7 ([(minBound+(5::Word32)) .. minBound])) = []
- (take 7 [(5::Word32),4..1]) = [5,4,3,2,1]
- (take 7 [(5::Word32),3..1]) = [5,3,1]
- (take 7 [(5::Word32),3..2]) = [5,3]
- (take 7 [(1::Word32),2..1]) = [1]
- (take 7 [(2::Word32),1..2]) = [2]
- (take 7 [(2::Word32),1..1]) = [2,1]
- (take 7 [(2::Word32),3..1]) = []
- (take 7 [x,(x+1)..maxBound]) = [4294967291,4294967292,4294967293,4294967294,4294967295]
- (take 7 [x,(x-1)..minBound]) = [5,4,3,2,1,0]
-Testing Enum Word64:
- (succ (0::Word64)) = 1
- (succ (minBound::Word64)) = 1
- (succ (maxBound::Word64)) = error "Enum.succ{Word64}: tried to take `succ' of maxBound"
- pred (1::Word64) = 0
- pred (maxBound::Word64) = 18446744073709551614
- pred (minBound::Word64) = error "Enum.pred{Word64}: tried to take `pred' of minBound"
- (map (toEnum::Int->Word64) [1, fromIntegral (minBound::Word64)::Int, maxBound::Int]) = [1,0,9223372036854775807]
- (toEnum (maxBound::Int))::Word64 = 9223372036854775807
- (map fromEnum [(1::Word64),minBound,fromIntegral (maxBound::Int)]) = [1,0,9223372036854775807]
- fromEnum (maxBound::Word64) = error "Enum.fromEnum{Word64}: value (18446744073709551615) is outside of Int's bounds (-9223372036854775808,9223372036854775807)"
- (take 7 [(1::Word64)..]) = [1,2,3,4,5,6,7]
- (take 7 [((maxBound::Word64)-5)..]) = [18446744073709551610,18446744073709551611,18446744073709551612,18446744073709551613,18446744073709551614,18446744073709551615]
- (take 7 [(1::Word64),2..]) = [1,2,3,4,5,6,7]
- (take 7 [(1::Word64),7..]) = [1,7,13,19,25,31,37]
- (take 7 [(1::Word64),1..]) = [1,1,1,1,1,1,1]
- (take 7 [(1::Word64),0..]) = [1,0]
- (take 7 [(5::Word64),2..]) = [5,2]
- (take 7 [x, x-1 ..]) = [1,0]
- (take 7 [x, x-1 ..]) = [5,4,3,2,1,0]
- (take 7 [x, (x+1) ..]) = [18446744073709551610,18446744073709551611,18446744073709551612,18446744073709551613,18446744073709551614,18446744073709551615]
- (take 7 ([(1::Word64) .. 5])) = [1,2,3,4,5]
- (take 4 ([(1::Word64) .. 1])) = [1]
- (take 7 ([(1::Word64) .. 0])) = []
- (take 7 ([(5::Word64) .. 0])) = []
- (take 7 ([(maxBound-(5::Word64)) .. maxBound])) = [18446744073709551610,18446744073709551611,18446744073709551612,18446744073709551613,18446744073709551614,18446744073709551615]
- (take 7 ([(minBound+(5::Word64)) .. minBound])) = []
- (take 7 [(5::Word64),4..1]) = [5,4,3,2,1]
- (take 7 [(5::Word64),3..1]) = [5,3,1]
- (take 7 [(5::Word64),3..2]) = [5,3]
- (take 7 [(1::Word64),2..1]) = [1]
- (take 7 [(2::Word64),1..2]) = [2]
- (take 7 [(2::Word64),1..1]) = [2,1]
- (take 7 [(2::Word64),3..1]) = []
- (take 7 [x,(x+1)..maxBound]) = [18446744073709551611,18446744073709551612,18446744073709551613,18446744073709551614,18446744073709551615]
- (take 7 [x,(x-1)..minBound]) = [5,4,3,2,1,0]
diff --git a/testsuite/tests/lib/should_run/enum03.stdout-x86_64-unknown-openbsd b/testsuite/tests/lib/should_run/enum03.stdout-x86_64-unknown-openbsd
deleted file mode 100644
index 716782c46a..0000000000
--- a/testsuite/tests/lib/should_run/enum03.stdout-x86_64-unknown-openbsd
+++ /dev/null
@@ -1,142 +0,0 @@
-Testing Enum Word8:
- (succ (0::Word8)) = 1
- (succ (minBound::Word8)) = 1
- (succ (maxBound::Word8)) = error "Enum.succ{Word8}: tried to take `succ' of maxBound"
- pred (1::Word8) = 0
- pred (maxBound::Word8) = 254
- pred (minBound::Word8) = error "Enum.pred{Word8}: tried to take `pred' of minBound"
- (map (toEnum::Int->Word8) [1, fromIntegral (minBound::Word8)::Int, fromIntegral (maxBound::Word8)::Int]) = [1,0,255]
- (toEnum (maxBound::Int))::Word8 = error "Enum.toEnum{Word8}: tag (9223372036854775807) is outside of bounds (0,255)"
- (map fromEnum [(1::Word8),minBound,maxBound]) = [1,0,255]
- (take 7 [(1::Word8)..]) = [1,2,3,4,5,6,7]
- (take 7 [((maxBound::Word8)-5)..]) = [250,251,252,253,254,255]
- (take 7 [(1::Word8),2..]) = [1,2,3,4,5,6,7]
- (take 7 [(1::Word8),7..]) = [1,7,13,19,25,31,37]
- (take 7 [(1::Word8),1..]) = [1,1,1,1,1,1,1]
- (take 7 [(1::Word8),0..]) = [1,0]
- (take 7 [(5::Word8),2..]) = [5,2]
- (take 7 [x, x-1 ..]) = [1,0]
- (take 7 [x, x-1 ..]) = [5,4,3,2,1,0]
- (take 7 [x, (x+1) ..]) = [250,251,252,253,254,255]
- (take 7 ([(1::Word8) .. 5])) = [1,2,3,4,5]
- (take 4 ([(1::Word8) .. 1])) = [1]
- (take 7 ([(1::Word8) .. 0])) = []
- (take 7 ([(5::Word8) .. 0])) = []
- (take 7 ([(maxBound-(5::Word8)) .. maxBound])) = [250,251,252,253,254,255]
- (take 7 ([(minBound+(5::Word8)) .. minBound])) = []
- (take 7 [(5::Word8),4..1]) = [5,4,3,2,1]
- (take 7 [(5::Word8),3..1]) = [5,3,1]
- (take 7 [(5::Word8),3..2]) = [5,3]
- (take 7 [(1::Word8),2..1]) = [1]
- (take 7 [(2::Word8),1..2]) = [2]
- (take 7 [(2::Word8),1..1]) = [2,1]
- (take 7 [(2::Word8),3..1]) = []
- (take 7 [x,(x+1)..maxBound]) = [251,252,253,254,255]
- (take 7 [x,(x-1)..minBound]) = [5,4,3,2,1,0]
-Testing Enum Word16:
- (succ (0::Word16)) = 1
- (succ (minBound::Word16)) = 1
- (succ (maxBound::Word16)) = error "Enum.succ{Word16}: tried to take `succ' of maxBound"
- pred (1::Word16) = 0
- pred (maxBound::Word16) = 65534
- pred (minBound::Word16) = error "Enum.pred{Word16}: tried to take `pred' of minBound"
- (map (toEnum::Int->Word16) [1, fromIntegral (minBound::Word16)::Int, fromIntegral (maxBound::Word16)::Int]) = [1,0,65535]
- (toEnum (maxBound::Int))::Word16 = error "Enum.toEnum{Word16}: tag (9223372036854775807) is outside of bounds (0,65535)"
- (map fromEnum [(1::Word16),minBound,maxBound]) = [1,0,65535]
- (take 7 [(1::Word16)..]) = [1,2,3,4,5,6,7]
- (take 7 [((maxBound::Word16)-5)..]) = [65530,65531,65532,65533,65534,65535]
- (take 7 [(1::Word16),2..]) = [1,2,3,4,5,6,7]
- (take 7 [(1::Word16),7..]) = [1,7,13,19,25,31,37]
- (take 7 [(1::Word16),1..]) = [1,1,1,1,1,1,1]
- (take 7 [(1::Word16),0..]) = [1,0]
- (take 7 [(5::Word16),2..]) = [5,2]
- (take 7 [x, x-1 ..]) = [1,0]
- (take 7 [x, x-1 ..]) = [5,4,3,2,1,0]
- (take 7 [x, (x+1) ..]) = [65530,65531,65532,65533,65534,65535]
- (take 7 ([(1::Word16) .. 5])) = [1,2,3,4,5]
- (take 4 ([(1::Word16) .. 1])) = [1]
- (take 7 ([(1::Word16) .. 0])) = []
- (take 7 ([(5::Word16) .. 0])) = []
- (take 7 ([(maxBound-(5::Word16)) .. maxBound])) = [65530,65531,65532,65533,65534,65535]
- (take 7 ([(minBound+(5::Word16)) .. minBound])) = []
- (take 7 [(5::Word16),4..1]) = [5,4,3,2,1]
- (take 7 [(5::Word16),3..1]) = [5,3,1]
- (take 7 [(5::Word16),3..2]) = [5,3]
- (take 7 [(1::Word16),2..1]) = [1]
- (take 7 [(2::Word16),1..2]) = [2]
- (take 7 [(2::Word16),1..1]) = [2,1]
- (take 7 [(2::Word16),3..1]) = []
- (take 7 [x,(x+1)..maxBound]) = [65531,65532,65533,65534,65535]
- (take 7 [x,(x-1)..minBound]) = [5,4,3,2,1,0]
-Testing Enum Word32:
- (succ (0::Word32)) = 1
- (succ (minBound::Word32)) = 1
- (succ (maxBound::Word32)) = error "Enum.succ{Word32}: tried to take `succ' of maxBound"
- pred (1::Word32) = 0
- pred (maxBound::Word32) = 4294967294
- pred (minBound::Word32) = error "Enum.pred{Word32}: tried to take `pred' of minBound"
- (map (toEnum::Int->Word32) [1, fromIntegral (minBound::Word32)::Int, fromIntegral (maxBound::Int32)::Int]) = [1,0,2147483647]
- (toEnum (maxBound::Int))::Word32 = error "Enum.toEnum{Word32}: tag (9223372036854775807) is outside of bounds (0,4294967295)"
- (map fromEnum [(1::Word32),minBound,fromIntegral (maxBound::Int)]) = [1,0,4294967295]
- fromEnum (maxBound::Word32) = 4294967295
- (take 7 [(1::Word32)..]) = [1,2,3,4,5,6,7]
- (take 7 [((maxBound::Word32)-5)..]) = [4294967290,4294967291,4294967292,4294967293,4294967294,4294967295]
- (take 7 [(1::Word32),2..]) = [1,2,3,4,5,6,7]
- (take 7 [(1::Word32),7..]) = [1,7,13,19,25,31,37]
- (take 7 [(1::Word32),1..]) = [1,1,1,1,1,1,1]
- (take 7 [(1::Word32),0..]) = [1,0]
- (take 7 [(5::Word32),2..]) = [5,2]
- (take 7 [x, x-1 ..]) = [1,0]
- (take 7 [x, x-1 ..]) = [5,4,3,2,1,0]
- (take 7 [x, (x+1) ..]) = [4294967290,4294967291,4294967292,4294967293,4294967294,4294967295]
- (take 7 ([(1::Word32) .. 5])) = [1,2,3,4,5]
- (take 4 ([(1::Word32) .. 1])) = [1]
- (take 7 ([(1::Word32) .. 0])) = []
- (take 7 ([(5::Word32) .. 0])) = []
- (take 7 ([(maxBound-(5::Word32)) .. maxBound])) = [4294967290,4294967291,4294967292,4294967293,4294967294,4294967295]
- (take 7 ([(minBound+(5::Word32)) .. minBound])) = []
- (take 7 [(5::Word32),4..1]) = [5,4,3,2,1]
- (take 7 [(5::Word32),3..1]) = [5,3,1]
- (take 7 [(5::Word32),3..2]) = [5,3]
- (take 7 [(1::Word32),2..1]) = [1]
- (take 7 [(2::Word32),1..2]) = [2]
- (take 7 [(2::Word32),1..1]) = [2,1]
- (take 7 [(2::Word32),3..1]) = []
- (take 7 [x,(x+1)..maxBound]) = [4294967291,4294967292,4294967293,4294967294,4294967295]
- (take 7 [x,(x-1)..minBound]) = [5,4,3,2,1,0]
-Testing Enum Word64:
- (succ (0::Word64)) = 1
- (succ (minBound::Word64)) = 1
- (succ (maxBound::Word64)) = error "Enum.succ{Word64}: tried to take `succ' of maxBound"
- pred (1::Word64) = 0
- pred (maxBound::Word64) = 18446744073709551614
- pred (minBound::Word64) = error "Enum.pred{Word64}: tried to take `pred' of minBound"
- (map (toEnum::Int->Word64) [1, fromIntegral (minBound::Word64)::Int, maxBound::Int]) = [1,0,9223372036854775807]
- (toEnum (maxBound::Int))::Word64 = 9223372036854775807
- (map fromEnum [(1::Word64),minBound,fromIntegral (maxBound::Int)]) = [1,0,9223372036854775807]
- fromEnum (maxBound::Word64) = error "Enum.fromEnum{Word64}: value (18446744073709551615) is outside of Int's bounds (-9223372036854775808,9223372036854775807)"
- (take 7 [(1::Word64)..]) = [1,2,3,4,5,6,7]
- (take 7 [((maxBound::Word64)-5)..]) = [18446744073709551610,18446744073709551611,18446744073709551612,18446744073709551613,18446744073709551614,18446744073709551615]
- (take 7 [(1::Word64),2..]) = [1,2,3,4,5,6,7]
- (take 7 [(1::Word64),7..]) = [1,7,13,19,25,31,37]
- (take 7 [(1::Word64),1..]) = [1,1,1,1,1,1,1]
- (take 7 [(1::Word64),0..]) = [1,0]
- (take 7 [(5::Word64),2..]) = [5,2]
- (take 7 [x, x-1 ..]) = [1,0]
- (take 7 [x, x-1 ..]) = [5,4,3,2,1,0]
- (take 7 [x, (x+1) ..]) = [18446744073709551610,18446744073709551611,18446744073709551612,18446744073709551613,18446744073709551614,18446744073709551615]
- (take 7 ([(1::Word64) .. 5])) = [1,2,3,4,5]
- (take 4 ([(1::Word64) .. 1])) = [1]
- (take 7 ([(1::Word64) .. 0])) = []
- (take 7 ([(5::Word64) .. 0])) = []
- (take 7 ([(maxBound-(5::Word64)) .. maxBound])) = [18446744073709551610,18446744073709551611,18446744073709551612,18446744073709551613,18446744073709551614,18446744073709551615]
- (take 7 ([(minBound+(5::Word64)) .. minBound])) = []
- (take 7 [(5::Word64),4..1]) = [5,4,3,2,1]
- (take 7 [(5::Word64),3..1]) = [5,3,1]
- (take 7 [(5::Word64),3..2]) = [5,3]
- (take 7 [(1::Word64),2..1]) = [1]
- (take 7 [(2::Word64),1..2]) = [2]
- (take 7 [(2::Word64),1..1]) = [2,1]
- (take 7 [(2::Word64),3..1]) = []
- (take 7 [x,(x+1)..maxBound]) = [18446744073709551611,18446744073709551612,18446744073709551613,18446744073709551614,18446744073709551615]
- (take 7 [x,(x-1)..minBound]) = [5,4,3,2,1,0]
diff --git a/testsuite/tests/lib/should_run/enum04.hs b/testsuite/tests/lib/should_run/enum04.hs
deleted file mode 100644
index fed9e8c4ef..0000000000
--- a/testsuite/tests/lib/should_run/enum04.hs
+++ /dev/null
@@ -1,15 +0,0 @@
-{-# LANGUAGE ScopedTypeVariables #-}
-import Control.Exception
-import Prelude hiding (catch)
-
--- enumFrom on basic numeric types should be strict
--- (possibly a bug in the Haskell Report: it specifies that
--- these ops should be strict in the section on Enum, but the
--- sample code in the Prelude doesn't agree, at least for
--- Float and Double).
-
-main = do
- catch (evaluate [error "" :: Int ..] >> return ()) (\(e::SomeException) -> putStrLn "ok1")
- catch (evaluate [error "" :: Integer ..] >> return ()) (\(e::SomeException) -> putStrLn "ok2")
- catch (evaluate [error "" :: Float ..] >> return ()) (\(e::SomeException) -> putStrLn "ok3")
- catch (evaluate [error "" :: Double ..] >> return ()) (\(e::SomeException) -> putStrLn "ok4")
diff --git a/testsuite/tests/lib/should_run/enum04.stdout b/testsuite/tests/lib/should_run/enum04.stdout
deleted file mode 100644
index c8a3e21e6d..0000000000
--- a/testsuite/tests/lib/should_run/enum04.stdout
+++ /dev/null
@@ -1,4 +0,0 @@
-ok1
-ok2
-ok3
-ok4
diff --git a/testsuite/tests/lib/should_run/exceptionsrun001.hs b/testsuite/tests/lib/should_run/exceptionsrun001.hs
deleted file mode 100644
index 9c6febc049..0000000000
--- a/testsuite/tests/lib/should_run/exceptionsrun001.hs
+++ /dev/null
@@ -1,56 +0,0 @@
-module Main where
-
-import Prelude hiding (catch)
-import Control.OldException
-
-main = do
- ioTest
- errorTest
- noMethodTest
- patMatchTest
- guardTest
- dynTest
-
-ioTest :: IO ()
-ioTest = catchJust userErrors (ioError (userError "wibble"))
- (\ex -> putStr "user exception caught\n")
-
-errorTest :: IO ()
-errorTest = try (evaluate (1 + error "call to 'error'")) >>= \r ->
- case r of
- Left exception -> putStr "error call caught\n"
- Right _ -> error "help!"
-
-instance (Show a, Eq a) => Num (Maybe a) where {}
-
-noMethodTest :: IO ()
-noMethodTest = try (evaluate (Just () + Just ())) >>= \ r ->
- case r of
- Left (NoMethodError err) -> putStr "no method error\n"
- Right _ -> error "help!"
-
-patMatchTest :: IO ()
-patMatchTest = catch (case test1 [1..10] of () -> return ())
- (\ex -> case ex of
- PatternMatchFail err -> putStr err
- other -> error "help!")
-
-test1 [] = ()
-
-guardTest = catch (case test2 of () -> return ())
- (\ex -> case ex of
- PatternMatchFail err -> putStr err
- other -> error "help!")
-
-test2 | all (==0) [1] = ()
-
-dynTest = catchDyn (case throwDyn (42::Int, (+1)::Int->Int) of () -> return ())
- (\(i,f) -> let x = f (i::Int) :: Int in putStr (show x))
-
-{-
-recSelTest
-recConTest
-recUpdTest
-assertTest
-arithTest
--}
diff --git a/testsuite/tests/lib/should_run/exceptionsrun001.stdout b/testsuite/tests/lib/should_run/exceptionsrun001.stdout
deleted file mode 100644
index 2d1930f8c9..0000000000
--- a/testsuite/tests/lib/should_run/exceptionsrun001.stdout
+++ /dev/null
@@ -1,6 +0,0 @@
-user exception caught
-error call caught
-no method error
-exceptionsrun001.hs:38:1-13: Non-exhaustive patterns in function test1
-exceptionsrun001.hs:45:1-26: Non-exhaustive patterns in function test2
-43 \ No newline at end of file
diff --git a/testsuite/tests/lib/should_run/exceptionsrun002.hs b/testsuite/tests/lib/should_run/exceptionsrun002.hs
deleted file mode 100644
index 13b642a3ab..0000000000
--- a/testsuite/tests/lib/should_run/exceptionsrun002.hs
+++ /dev/null
@@ -1,105 +0,0 @@
-module Main where
- {
- import qualified Control.OldException as Exception;
- import Data.IORef;
- import Prelude;
-
- safeCatch :: IO () -> IO ();
- safeCatch f = Exception.catch f (\_ -> return ());
-
- type Thrower = IO Bool;
-
- type Catcher = IO Bool -> IO () -> IO ();
-
- checkCatch :: Catcher -> Thrower -> IO Bool;
- checkCatch catcher thrower = do
- {
- ref <- newIORef False;
- safeCatch (catcher thrower (writeIORef ref True));
- readIORef ref;
- };
-
- data Named a = MkNamed String a;
-
- checkNamedCatch :: Named Catcher -> Named Thrower -> IO ();
- checkNamedCatch (MkNamed cname catcher) (MkNamed tname thrower) = do
- {
- didCatch <- checkCatch catcher thrower;
- putStrLn (cname ++ (if didCatch then " CAUGHT " else " MISSED ") ++ tname);
- };
-
- checkNamedCatches :: [Named Catcher] -> [Named Thrower] -> IO ();
- checkNamedCatches [] _ = return ();
- checkNamedCatches _ [] = return ();
- checkNamedCatches [c] (t:tr) = do
- {
- checkNamedCatch c t;
- checkNamedCatches [c] tr;
- };
- checkNamedCatches (c:cr) ts = do
- {
- checkNamedCatches [c] ts;
- checkNamedCatches cr ts
- };
-
-
- -- throwers
-
- returnThrower :: Named Thrower;
- returnThrower = MkNamed "return" (return True);
-
- returnUndefinedThrower :: Named Thrower;
- returnUndefinedThrower = MkNamed "return undefined" (return undefined);
-
- returnErrorThrower :: Named Thrower;
- returnErrorThrower = MkNamed "return error" (return (error "some error"));
-
- undefinedThrower :: Named Thrower;
- undefinedThrower = MkNamed "undefined" undefined;
-
- failThrower :: Named Thrower;
- failThrower = MkNamed "fail" (fail "some failure");
-
- errorThrower :: Named Thrower;
- errorThrower = MkNamed "error" (error "some error");
-
- throwThrower :: Named Thrower;
- throwThrower = MkNamed "Exception.throw"
- (Exception.throw (Exception.ErrorCall "throw error"));
-
- ioErrorErrorCallThrower :: Named Thrower;
- ioErrorErrorCallThrower = MkNamed "ioError ErrorCall"
- (Exception.throwIO (Exception.ErrorCall "throw error"));
-
- ioErrorIOExceptionThrower :: Named Thrower;
- ioErrorIOExceptionThrower = MkNamed "ioError IOException"
- (Exception.throwIO (Exception.IOException undefined));
-
- returnThrowThrower :: Named Thrower;
- returnThrowThrower = MkNamed "return Exception.throw"
- (return (Exception.throw (Exception.ErrorCall "throw error")));
-
-
- -- catchers
-
- bindCatcher :: Named Catcher;
- bindCatcher = MkNamed ">>" (>>);
-
- preludeCatchCatcher :: Named Catcher;
- preludeCatchCatcher = MkNamed "Prelude.catch"
- (\f cc -> Prelude.catch (f >> (return ())) (const cc));
-
- ceCatchCatcher :: Named Catcher;
- ceCatchCatcher = MkNamed "Exception.catch"
- (\f cc -> Exception.catch (f >> (return ())) (const cc));
-
- finallyCatcher :: Named Catcher;
- finallyCatcher = MkNamed "Exception.finally"
- (\f cc -> Exception.finally (f >> (return ())) cc);
-
- main = checkNamedCatches
- [bindCatcher,preludeCatchCatcher,ceCatchCatcher,finallyCatcher]
- [returnThrower,returnUndefinedThrower,returnThrowThrower,returnErrorThrower,failThrower,
- errorThrower,throwThrower,ioErrorErrorCallThrower,ioErrorIOExceptionThrower,undefinedThrower];
-
- }
diff --git a/testsuite/tests/lib/should_run/exceptionsrun002.stdout b/testsuite/tests/lib/should_run/exceptionsrun002.stdout
deleted file mode 100644
index e15116f5c0..0000000000
--- a/testsuite/tests/lib/should_run/exceptionsrun002.stdout
+++ /dev/null
@@ -1,40 +0,0 @@
->> CAUGHT return
->> CAUGHT return undefined
->> CAUGHT return Exception.throw
->> CAUGHT return error
->> MISSED fail
->> MISSED error
->> MISSED Exception.throw
->> MISSED ioError ErrorCall
->> MISSED ioError IOException
->> MISSED undefined
-Prelude.catch MISSED return
-Prelude.catch MISSED return undefined
-Prelude.catch MISSED return Exception.throw
-Prelude.catch MISSED return error
-Prelude.catch CAUGHT fail
-Prelude.catch MISSED error
-Prelude.catch MISSED Exception.throw
-Prelude.catch MISSED ioError ErrorCall
-Prelude.catch CAUGHT ioError IOException
-Prelude.catch MISSED undefined
-Exception.catch MISSED return
-Exception.catch MISSED return undefined
-Exception.catch MISSED return Exception.throw
-Exception.catch MISSED return error
-Exception.catch CAUGHT fail
-Exception.catch CAUGHT error
-Exception.catch CAUGHT Exception.throw
-Exception.catch CAUGHT ioError ErrorCall
-Exception.catch CAUGHT ioError IOException
-Exception.catch CAUGHT undefined
-Exception.finally CAUGHT return
-Exception.finally CAUGHT return undefined
-Exception.finally CAUGHT return Exception.throw
-Exception.finally CAUGHT return error
-Exception.finally CAUGHT fail
-Exception.finally CAUGHT error
-Exception.finally CAUGHT Exception.throw
-Exception.finally CAUGHT ioError ErrorCall
-Exception.finally CAUGHT ioError IOException
-Exception.finally CAUGHT undefined
diff --git a/testsuite/tests/lib/should_run/length001.hs b/testsuite/tests/lib/should_run/length001.hs
deleted file mode 100644
index 321a1b9dfc..0000000000
--- a/testsuite/tests/lib/should_run/length001.hs
+++ /dev/null
@@ -1,8 +0,0 @@
-
-module Main (main) where
-
-import Data.List
-
-main :: IO ()
-main = do print (genericLength [1..10000000] :: Int)
- print (genericLength [1..10000000] :: Integer)
diff --git a/testsuite/tests/lib/should_run/length001.stdout b/testsuite/tests/lib/should_run/length001.stdout
deleted file mode 100644
index 4e65c4e0d2..0000000000
--- a/testsuite/tests/lib/should_run/length001.stdout
+++ /dev/null
@@ -1,2 +0,0 @@
-10000000
-10000000
diff --git a/testsuite/tests/lib/should_run/list001.hs b/testsuite/tests/lib/should_run/list001.hs
deleted file mode 100644
index c0a1eced27..0000000000
--- a/testsuite/tests/lib/should_run/list001.hs
+++ /dev/null
@@ -1,152 +0,0 @@
-module Main where
-
-import Data.List
-import Control.Exception
-import Prelude hiding (catch)
-
--- This module briefly tests all the functions in PrelList and a few
--- from List.
-
--- ToDo: test strictness properties.
-
-main = do
-
- -- head
- print (head [1,2,3,4], head "a")
- catch (print (head [] :: String)) (\(ErrorCall _) -> putStr "head []\n")
-
- -- tail
- print (tail [1,2,3,4], tail "a")
- catch (print (tail [] :: String)) (\(ErrorCall _) -> putStr "tail []\n")
-
- -- init
- print (init [1,2,3,4], init "a")
- catch (print (init [] :: String)) (\(ErrorCall _) -> putStr "init []\n")
-
- -- last
- print (last [1,2,3,4], last "a")
- catch (print (last [] :: String)) (\(ErrorCall _) -> putStr "last []\n")
-
- -- null
- print [null [], null "abc"]
-
- -- length
- print (length [1..10])
-
- -- foldl
- print (foldl (+) 1 [1..10])
-
- -- foldl1
- print (foldl1 (+) [1..10])
- catch (print (foldl1 (+) [] :: Int)) (\(ErrorCall _) -> putStr "foldl1 []\n")
-
- -- scanl
- print (scanl (+) 1 [1..10])
-
- -- scanl1
- print (scanl1 (+) [1..10])
- print (scanl1 (+) [] :: [Int])
-
- -- foldr1
- print (foldr1 (+) [1..10])
- catch (print (foldr1 (+) [] :: Int)) (\(ErrorCall _) -> putStr "foldr1 []\n")
-
- -- scanr
- print (scanr (+) 1 [1..10])
-
- -- scanr1
- print (scanr1 (+) [1..10])
- print (scanr1 (+) [] :: [Int])
-
- -- iterate
- print (take 10 (cycle (take 4 (iterate (+1) 1))))
-
- -- take
- print (take 4 (repeat "x"), take 0 (repeat "x"), take 5 [1..4])
- catch (print (take (-1) [1..10])) (\(ErrorCall _) -> putStr "take (-1)\n")
-
- -- replicate
- print [replicate 2 "abc", replicate 0 "abc", replicate 3 []]
-
- -- drop
- print [drop 5 [1..10], drop 0 [1..10], drop 5 [1..4]]
- catch (print (drop (-1) [1..10])) (\(ErrorCall _) -> putStr "drop (-1)\n")
-
- -- splitAt
- print [splitAt 5 [1..10], splitAt 5 [1..4]]
- catch (print (splitAt (-1) [1..10])) (\(ErrorCall _) -> putStr "splitAt (-1)\n")
-
- -- scan
- print (span (<5) [1..10])
-
- -- break
- print (break (<5) [1..10])
-
- -- reverse
- print [reverse [1..10], reverse []]
-
- -- and
- print [and [], and [True], and [False]]
-
- -- or
- print [or [], or [True], or [False]]
-
- -- elem
- print [elem 5 [1..10], elem 0 [1..10], elem 1 []]
-
- -- notElem
- print [notElem 5 [1..10], notElem 0 [1..10], notElem 1 []]
-
- -- lookkup
- print (lookup 4 (zip [1..10] (reverse [1..10])))
-
- -- sum
- print [sum [1..10], sum []]
-
- -- product
- print [product [1..10], product []]
-
- -- maximum
- print (maximum [1..10])
- catch (print (maximum [] :: Int)) (\(ErrorCall _) -> putStr "maximum []\n")
-
- -- minimum
- print (minimum [1..10])
- catch (print (minimum [] :: Int)) (\(ErrorCall _) -> putStr "minimum []\n")
-
- -- concatMap
- print (concatMap (:[]) [(1::Int)..10])
-
- -- zip
- print [zip [1] [2], zip [1] [], zip [] [2], zip [1..5] [2..6]]
-
- -- zip3
- print (zip3 [1,2] [3,4] [5,6])
-
- -- zipWith
- print [zipWith (+) [1,2] [3,4], zipWith (+) [1] [], zipWith (+) [] []]
-
- -- unzip
- print [unzip [(1,2),(3,4)], unzip []]
-
- -- unzip3
- print [unzip3 [(1,2,3),(3,4,5)], unzip3 []]
-
- -- unlines
- print (unlines (lines "a\nb\nc\n"), lines "", unlines [])
-
- -- words
- print (unwords (words "a b c d"), words "", unwords [])
-
- -- deleteBy
- print [deleteBy (==) 1 [0,1,1,2,3,4],
- deleteBy (==) (error "deleteBy") []]
-
- -- delete
- print [delete 1 [0,1,1,2,3,4],
- delete (error "delete") []]
-
- -- \\
- print [ [0,1,1,2,3,4] \\ [3,2,1],
- [1,2,3,4] \\ [],
- [] \\ [error "\\\\"] ]
diff --git a/testsuite/tests/lib/should_run/list001.stdout b/testsuite/tests/lib/should_run/list001.stdout
deleted file mode 100644
index b8254f066e..0000000000
--- a/testsuite/tests/lib/should_run/list001.stdout
+++ /dev/null
@@ -1,54 +0,0 @@
-(1,'a')
-"head []
-([2,3,4],"")
-"tail []
-([1,2,3],"")
-"init []
-(4,'a')
-"last []
-[True,False]
-10
-56
-55
-foldl1 []
-[1,2,4,7,11,16,22,29,37,46,56]
-[1,3,6,10,15,21,28,36,45,55]
-[]
-55
-foldr1 []
-[56,55,53,50,46,41,35,28,20,11,1]
-[55,54,52,49,45,40,34,27,19,10]
-[]
-[1,2,3,4,1,2,3,4,1,2]
-(["x","x","x","x"],[],[1,2,3,4])
-[]
-[["abc","abc"],[],["","",""]]
-[[6,7,8,9,10],[1,2,3,4,5,6,7,8,9,10],[]]
-[1,2,3,4,5,6,7,8,9,10]
-[([1,2,3,4,5],[6,7,8,9,10]),([1,2,3,4],[])]
-([],[1,2,3,4,5,6,7,8,9,10])
-([1,2,3,4],[5,6,7,8,9,10])
-([],[1,2,3,4,5,6,7,8,9,10])
-[[10,9,8,7,6,5,4,3,2,1],[]]
-[True,True,False]
-[False,True,False]
-[True,False,False]
-[False,True,True]
-Just 7
-[55,0]
-[3628800,1]
-10
-maximum []
-1
-minimum []
-[1,2,3,4,5,6,7,8,9,10]
-[[(1,2)],[],[],[(1,2),(2,3),(3,4),(4,5),(5,6)]]
-[(1,3,5),(2,4,6)]
-[[4,6],[],[]]
-[([1,3],[2,4]),([],[])]
-[([1,3],[2,4],[3,5]),([],[],[])]
-("a\nb\nc\n",[],"")
-("a b c d",[],"")
-[[0,1,2,3,4],[]]
-[[0,1,2,3,4],[]]
-[[0,1,4],[1,2,3,4],[]]
diff --git a/testsuite/tests/lib/should_run/list001.stdout-ghc b/testsuite/tests/lib/should_run/list001.stdout-ghc
deleted file mode 100644
index 16e780ac7b..0000000000
--- a/testsuite/tests/lib/should_run/list001.stdout-ghc
+++ /dev/null
@@ -1,54 +0,0 @@
-(1,'a')
-head []
-([2,3,4],"")
-tail []
-([1,2,3],"")
-init []
-(4,'a')
-last []
-[True,False]
-10
-56
-55
-foldl1 []
-[1,2,4,7,11,16,22,29,37,46,56]
-[1,3,6,10,15,21,28,36,45,55]
-[]
-55
-foldr1 []
-[56,55,53,50,46,41,35,28,20,11,1]
-[55,54,52,49,45,40,34,27,19,10]
-[]
-[1,2,3,4,1,2,3,4,1,2]
-(["x","x","x","x"],[],[1,2,3,4])
-[]
-[["abc","abc"],[],["","",""]]
-[[6,7,8,9,10],[1,2,3,4,5,6,7,8,9,10],[]]
-[1,2,3,4,5,6,7,8,9,10]
-[([1,2,3,4,5],[6,7,8,9,10]),([1,2,3,4],[])]
-([],[1,2,3,4,5,6,7,8,9,10])
-([1,2,3,4],[5,6,7,8,9,10])
-([],[1,2,3,4,5,6,7,8,9,10])
-[[10,9,8,7,6,5,4,3,2,1],[]]
-[True,True,False]
-[False,True,False]
-[True,False,False]
-[False,True,True]
-Just 7
-[55,0]
-[3628800,1]
-10
-maximum []
-1
-minimum []
-[1,2,3,4,5,6,7,8,9,10]
-[[(1,2)],[],[],[(1,2),(2,3),(3,4),(4,5),(5,6)]]
-[(1,3,5),(2,4,6)]
-[[4,6],[],[]]
-[([1,3],[2,4]),([],[])]
-[([1,3],[2,4],[3,5]),([],[],[])]
-("a\nb\nc\n",[],"")
-("a b c d",[],"")
-[[0,1,2,3,4],[]]
-[[0,1,2,3,4],[]]
-[[0,1,4],[1,2,3,4],[]]
diff --git a/testsuite/tests/lib/should_run/list002.hs b/testsuite/tests/lib/should_run/list002.hs
deleted file mode 100644
index 188ff8953d..0000000000
--- a/testsuite/tests/lib/should_run/list002.hs
+++ /dev/null
@@ -1,6 +0,0 @@
--- !!! Test that List.sortBy is stable.
-
-import Data.List
-
-main = print (sortBy (\(a,b) (a',b')->compare a a')
- ([1,1,1,1,1,1,1,1,1,1]`zip`[1..10]))
diff --git a/testsuite/tests/lib/should_run/list002.stdout b/testsuite/tests/lib/should_run/list002.stdout
deleted file mode 100644
index 18e1fcad8a..0000000000
--- a/testsuite/tests/lib/should_run/list002.stdout
+++ /dev/null
@@ -1 +0,0 @@
-[(1,1),(1,2),(1,3),(1,4),(1,5),(1,6),(1,7),(1,8),(1,9),(1,10)]
diff --git a/testsuite/tests/lib/should_run/list003.hs b/testsuite/tests/lib/should_run/list003.hs
deleted file mode 100644
index a792094438..0000000000
--- a/testsuite/tests/lib/should_run/list003.hs
+++ /dev/null
@@ -1,7 +0,0 @@
--- !!! Test that length doesn't give a stack overflow
-
-module Main (main) where
-
-main :: IO ()
-main = print $ length $ filter odd [0 .. 9999999]
-
diff --git a/testsuite/tests/lib/should_run/list003.stdout b/testsuite/tests/lib/should_run/list003.stdout
deleted file mode 100644
index 447a331b1b..0000000000
--- a/testsuite/tests/lib/should_run/list003.stdout
+++ /dev/null
@@ -1 +0,0 @@
-5000000
diff --git a/testsuite/tests/lib/should_run/memo001.hs b/testsuite/tests/lib/should_run/memo001.hs
deleted file mode 100644
index 551bcd8cf4..0000000000
--- a/testsuite/tests/lib/should_run/memo001.hs
+++ /dev/null
@@ -1,19 +0,0 @@
-module Main(main) where
-
-import Memo1
-
-testMemo = do
- let keys = [ [1..n] | n <- [1..1000] ]
- keys2 = [ [n,n-1..1] | n <- [1..1000] ]
- mlength = memo length
- putStr (show (map mlength (keys ++ keys ++ keys2 ++ keys2)))
- putStr (show (mlength [1..100000]))
-
--- mlength will memoize itself over each element of 'keys', returning
--- the memoized result the second time around. Then we move onto
--- keys2, and while we're doing this the first lot of memo table
--- entries can be purged. Finally, we do a a large computation
--- (length [1..10000]) to allow time for the memo table to be fully
--- purged.
-
-main = testMemo
diff --git a/testsuite/tests/lib/should_run/memo001.stdout b/testsuite/tests/lib/should_run/memo001.stdout
deleted file mode 100644
index 0e1bce9647..0000000000
--- a/testsuite/tests/lib/should_run/memo001.stdout
+++ /dev/null
@@ -1 +0,0 @@
-[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,215,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242,243,244,245,246,247,248,249,250,251,252,253,254,255,256,257,258,259,260,261,262,263,264,265,266,267,268,269,270,271,272,273,274,275,276,277,278,279,280,281,282,283,284,285,286,287,288,289,290,291,292,293,294,295,296,297,298,299,300,301,302,303,304,305,306,307,308,309,310,311,312,313,314,315,316,317,318,319,320,321,322,323,324,325,326,327,328,329,330,331,332,333,334,335,336,337,338,339,340,341,342,343,344,345,346,347,348,349,350,351,352,353,354,355,356,357,358,359,360,361,362,363,364,365,366,367,368,369,370,371,372,373,374,375,376,377,378,379,380,381,382,383,384,385,386,387,388,389,390,391,392,393,394,395,396,397,398,399,400,401,402,403,404,405,406,407,408,409,410,411,412,413,414,415,416,417,418,419,420,421,422,423,424,425,426,427,428,429,430,431,432,433,434,435,436,437,438,439,440,441,442,443,444,445,446,447,448,449,450,451,452,453,454,455,456,457,458,459,460,461,462,463,464,465,466,467,468,469,470,471,472,473,474,475,476,477,478,479,480,481,482,483,484,485,486,487,488,489,490,491,492,493,494,495,496,497,498,499,500,501,502,503,504,505,506,507,508,509,510,511,512,513,514,515,516,517,518,519,520,521,522,523,524,525,526,527,528,529,530,531,532,533,534,535,536,537,538,539,540,541,542,543,544,545,546,547,548,549,550,551,552,553,554,555,556,557,558,559,560,561,562,563,564,565,566,567,568,569,570,571,572,573,574,575,576,577,578,579,580,581,582,583,584,585,586,587,588,589,590,591,592,593,594,595,596,597,598,599,600,601,602,603,604,605,606,607,608,609,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,627,628,629,630,631,632,633,634,635,636,637,638,639,640,641,642,643,644,645,646,647,648,649,650,651,652,653,654,655,656,657,658,659,660,661,662,663,664,665,666,667,668,669,670,671,672,673,674,675,676,677,678,679,680,681,682,683,684,685,686,687,688,689,690,691,692,693,694,695,696,697,698,699,700,701,702,703,704,705,706,707,708,709,710,711,712,713,714,715,716,717,718,719,720,721,722,723,724,725,726,727,728,729,730,731,732,733,734,735,736,737,738,739,740,741,742,743,744,745,746,747,748,749,750,751,752,753,754,755,756,757,758,759,760,761,762,763,764,765,766,767,768,769,770,771,772,773,774,775,776,777,778,779,780,781,782,783,784,785,786,787,788,789,790,791,792,793,794,795,796,797,798,799,800,801,802,803,804,805,806,807,808,809,810,811,812,813,814,815,816,817,818,819,820,821,822,823,824,825,826,827,828,829,830,831,832,833,834,835,836,837,838,839,840,841,842,843,844,845,846,847,848,849,850,851,852,853,854,855,856,857,858,859,860,861,862,863,864,865,866,867,868,869,870,871,872,873,874,875,876,877,878,879,880,881,882,883,884,885,886,887,888,889,890,891,892,893,894,895,896,897,898,899,900,901,902,903,904,905,906,907,908,909,910,911,912,913,914,915,916,917,918,919,920,921,922,923,924,925,926,927,928,929,930,931,932,933,934,935,936,937,938,939,940,941,942,943,944,945,946,947,948,949,950,951,952,953,954,955,956,957,958,959,960,961,962,963,964,965,966,967,968,969,970,971,972,973,974,975,976,977,978,979,980,981,982,983,984,985,986,987,988,989,990,991,992,993,994,995,996,997,998,999,1000,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,215,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242,243,244,245,246,247,248,249,250,251,252,253,254,255,256,257,258,259,260,261,262,263,264,265,266,267,268,269,270,271,272,273,274,275,276,277,278,279,280,281,282,283,284,285,286,287,288,289,290,291,292,293,294,295,296,297,298,299,300,301,302,303,304,305,306,307,308,309,310,311,312,313,314,315,316,317,318,319,320,321,322,323,324,325,326,327,328,329,330,331,332,333,334,335,336,337,338,339,340,341,342,343,344,345,346,347,348,349,350,351,352,353,354,355,356,357,358,359,360,361,362,363,364,365,366,367,368,369,370,371,372,373,374,375,376,377,378,379,380,381,382,383,384,385,386,387,388,389,390,391,392,393,394,395,396,397,398,399,400,401,402,403,404,405,406,407,408,409,410,411,412,413,414,415,416,417,418,419,420,421,422,423,424,425,426,427,428,429,430,431,432,433,434,435,436,437,438,439,440,441,442,443,444,445,446,447,448,449,450,451,452,453,454,455,456,457,458,459,460,461,462,463,464,465,466,467,468,469,470,471,472,473,474,475,476,477,478,479,480,481,482,483,484,485,486,487,488,489,490,491,492,493,494,495,496,497,498,499,500,501,502,503,504,505,506,507,508,509,510,511,512,513,514,515,516,517,518,519,520,521,522,523,524,525,526,527,528,529,530,531,532,533,534,535,536,537,538,539,540,541,542,543,544,545,546,547,548,549,550,551,552,553,554,555,556,557,558,559,560,561,562,563,564,565,566,567,568,569,570,571,572,573,574,575,576,577,578,579,580,581,582,583,584,585,586,587,588,589,590,591,592,593,594,595,596,597,598,599,600,601,602,603,604,605,606,607,608,609,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,627,628,629,630,631,632,633,634,635,636,637,638,639,640,641,642,643,644,645,646,647,648,649,650,651,652,653,654,655,656,657,658,659,660,661,662,663,664,665,666,667,668,669,670,671,672,673,674,675,676,677,678,679,680,681,682,683,684,685,686,687,688,689,690,691,692,693,694,695,696,697,698,699,700,701,702,703,704,705,706,707,708,709,710,711,712,713,714,715,716,717,718,719,720,721,722,723,724,725,726,727,728,729,730,731,732,733,734,735,736,737,738,739,740,741,742,743,744,745,746,747,748,749,750,751,752,753,754,755,756,757,758,759,760,761,762,763,764,765,766,767,768,769,770,771,772,773,774,775,776,777,778,779,780,781,782,783,784,785,786,787,788,789,790,791,792,793,794,795,796,797,798,799,800,801,802,803,804,805,806,807,808,809,810,811,812,813,814,815,816,817,818,819,820,821,822,823,824,825,826,827,828,829,830,831,832,833,834,835,836,837,838,839,840,841,842,843,844,845,846,847,848,849,850,851,852,853,854,855,856,857,858,859,860,861,862,863,864,865,866,867,868,869,870,871,872,873,874,875,876,877,878,879,880,881,882,883,884,885,886,887,888,889,890,891,892,893,894,895,896,897,898,899,900,901,902,903,904,905,906,907,908,909,910,911,912,913,914,915,916,917,918,919,920,921,922,923,924,925,926,927,928,929,930,931,932,933,934,935,936,937,938,939,940,941,942,943,944,945,946,947,948,949,950,951,952,953,954,955,956,957,958,959,960,961,962,963,964,965,966,967,968,969,970,971,972,973,974,975,976,977,978,979,980,981,982,983,984,985,986,987,988,989,990,991,992,993,994,995,996,997,998,999,1000,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,215,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242,243,244,245,246,247,248,249,250,251,252,253,254,255,256,257,258,259,260,261,262,263,264,265,266,267,268,269,270,271,272,273,274,275,276,277,278,279,280,281,282,283,284,285,286,287,288,289,290,291,292,293,294,295,296,297,298,299,300,301,302,303,304,305,306,307,308,309,310,311,312,313,314,315,316,317,318,319,320,321,322,323,324,325,326,327,328,329,330,331,332,333,334,335,336,337,338,339,340,341,342,343,344,345,346,347,348,349,350,351,352,353,354,355,356,357,358,359,360,361,362,363,364,365,366,367,368,369,370,371,372,373,374,375,376,377,378,379,380,381,382,383,384,385,386,387,388,389,390,391,392,393,394,395,396,397,398,399,400,401,402,403,404,405,406,407,408,409,410,411,412,413,414,415,416,417,418,419,420,421,422,423,424,425,426,427,428,429,430,431,432,433,434,435,436,437,438,439,440,441,442,443,444,445,446,447,448,449,450,451,452,453,454,455,456,457,458,459,460,461,462,463,464,465,466,467,468,469,470,471,472,473,474,475,476,477,478,479,480,481,482,483,484,485,486,487,488,489,490,491,492,493,494,495,496,497,498,499,500,501,502,503,504,505,506,507,508,509,510,511,512,513,514,515,516,517,518,519,520,521,522,523,524,525,526,527,528,529,530,531,532,533,534,535,536,537,538,539,540,541,542,543,544,545,546,547,548,549,550,551,552,553,554,555,556,557,558,559,560,561,562,563,564,565,566,567,568,569,570,571,572,573,574,575,576,577,578,579,580,581,582,583,584,585,586,587,588,589,590,591,592,593,594,595,596,597,598,599,600,601,602,603,604,605,606,607,608,609,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,627,628,629,630,631,632,633,634,635,636,637,638,639,640,641,642,643,644,645,646,647,648,649,650,651,652,653,654,655,656,657,658,659,660,661,662,663,664,665,666,667,668,669,670,671,672,673,674,675,676,677,678,679,680,681,682,683,684,685,686,687,688,689,690,691,692,693,694,695,696,697,698,699,700,701,702,703,704,705,706,707,708,709,710,711,712,713,714,715,716,717,718,719,720,721,722,723,724,725,726,727,728,729,730,731,732,733,734,735,736,737,738,739,740,741,742,743,744,745,746,747,748,749,750,751,752,753,754,755,756,757,758,759,760,761,762,763,764,765,766,767,768,769,770,771,772,773,774,775,776,777,778,779,780,781,782,783,784,785,786,787,788,789,790,791,792,793,794,795,796,797,798,799,800,801,802,803,804,805,806,807,808,809,810,811,812,813,814,815,816,817,818,819,820,821,822,823,824,825,826,827,828,829,830,831,832,833,834,835,836,837,838,839,840,841,842,843,844,845,846,847,848,849,850,851,852,853,854,855,856,857,858,859,860,861,862,863,864,865,866,867,868,869,870,871,872,873,874,875,876,877,878,879,880,881,882,883,884,885,886,887,888,889,890,891,892,893,894,895,896,897,898,899,900,901,902,903,904,905,906,907,908,909,910,911,912,913,914,915,916,917,918,919,920,921,922,923,924,925,926,927,928,929,930,931,932,933,934,935,936,937,938,939,940,941,942,943,944,945,946,947,948,949,950,951,952,953,954,955,956,957,958,959,960,961,962,963,964,965,966,967,968,969,970,971,972,973,974,975,976,977,978,979,980,981,982,983,984,985,986,987,988,989,990,991,992,993,994,995,996,997,998,999,1000,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,215,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242,243,244,245,246,247,248,249,250,251,252,253,254,255,256,257,258,259,260,261,262,263,264,265,266,267,268,269,270,271,272,273,274,275,276,277,278,279,280,281,282,283,284,285,286,287,288,289,290,291,292,293,294,295,296,297,298,299,300,301,302,303,304,305,306,307,308,309,310,311,312,313,314,315,316,317,318,319,320,321,322,323,324,325,326,327,328,329,330,331,332,333,334,335,336,337,338,339,340,341,342,343,344,345,346,347,348,349,350,351,352,353,354,355,356,357,358,359,360,361,362,363,364,365,366,367,368,369,370,371,372,373,374,375,376,377,378,379,380,381,382,383,384,385,386,387,388,389,390,391,392,393,394,395,396,397,398,399,400,401,402,403,404,405,406,407,408,409,410,411,412,413,414,415,416,417,418,419,420,421,422,423,424,425,426,427,428,429,430,431,432,433,434,435,436,437,438,439,440,441,442,443,444,445,446,447,448,449,450,451,452,453,454,455,456,457,458,459,460,461,462,463,464,465,466,467,468,469,470,471,472,473,474,475,476,477,478,479,480,481,482,483,484,485,486,487,488,489,490,491,492,493,494,495,496,497,498,499,500,501,502,503,504,505,506,507,508,509,510,511,512,513,514,515,516,517,518,519,520,521,522,523,524,525,526,527,528,529,530,531,532,533,534,535,536,537,538,539,540,541,542,543,544,545,546,547,548,549,550,551,552,553,554,555,556,557,558,559,560,561,562,563,564,565,566,567,568,569,570,571,572,573,574,575,576,577,578,579,580,581,582,583,584,585,586,587,588,589,590,591,592,593,594,595,596,597,598,599,600,601,602,603,604,605,606,607,608,609,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,627,628,629,630,631,632,633,634,635,636,637,638,639,640,641,642,643,644,645,646,647,648,649,650,651,652,653,654,655,656,657,658,659,660,661,662,663,664,665,666,667,668,669,670,671,672,673,674,675,676,677,678,679,680,681,682,683,684,685,686,687,688,689,690,691,692,693,694,695,696,697,698,699,700,701,702,703,704,705,706,707,708,709,710,711,712,713,714,715,716,717,718,719,720,721,722,723,724,725,726,727,728,729,730,731,732,733,734,735,736,737,738,739,740,741,742,743,744,745,746,747,748,749,750,751,752,753,754,755,756,757,758,759,760,761,762,763,764,765,766,767,768,769,770,771,772,773,774,775,776,777,778,779,780,781,782,783,784,785,786,787,788,789,790,791,792,793,794,795,796,797,798,799,800,801,802,803,804,805,806,807,808,809,810,811,812,813,814,815,816,817,818,819,820,821,822,823,824,825,826,827,828,829,830,831,832,833,834,835,836,837,838,839,840,841,842,843,844,845,846,847,848,849,850,851,852,853,854,855,856,857,858,859,860,861,862,863,864,865,866,867,868,869,870,871,872,873,874,875,876,877,878,879,880,881,882,883,884,885,886,887,888,889,890,891,892,893,894,895,896,897,898,899,900,901,902,903,904,905,906,907,908,909,910,911,912,913,914,915,916,917,918,919,920,921,922,923,924,925,926,927,928,929,930,931,932,933,934,935,936,937,938,939,940,941,942,943,944,945,946,947,948,949,950,951,952,953,954,955,956,957,958,959,960,961,962,963,964,965,966,967,968,969,970,971,972,973,974,975,976,977,978,979,980,981,982,983,984,985,986,987,988,989,990,991,992,993,994,995,996,997,998,999,1000]100000 \ No newline at end of file
diff --git a/testsuite/tests/lib/should_run/memo002.hs b/testsuite/tests/lib/should_run/memo002.hs
deleted file mode 100644
index aa0a1d27c9..0000000000
--- a/testsuite/tests/lib/should_run/memo002.hs
+++ /dev/null
@@ -1,30 +0,0 @@
-module Main where
-
-import Memo2 ( memo )
-import Data.List ( genericLength, genericReplicate )
-import System.Environment ( getArgs )
-
-main :: IO ()
-main = do (arg:_) <- getArgs
- mapM_ printTriple [ (i,fib i,mfib i) | i <- [10..read arg] ]
- where printTriple (i,fi,mfi) = do print i
- print fi
- print mfi
- putStrLn ""
-
--- There is not much point in memoising Integers, so we use unary "numbers" instead
-mfib :: Integer -> Integer
-mfib = genericLength . mfib' . flip genericReplicate ()
-
-mfib' :: [()] -> [()]
-mfib' = memo ufib
-
-ufib :: [()] -> [()]
-ufib [] = [()]
-ufib [()] = [()]
-ufib (():n1@(():n2)) = mfib' n1 ++ mfib' n2
-
-fib :: Integer -> Integer
-fib 0 = 1
-fib 1 = 1
-fib n = fib (n-1) + fib (n-2)
diff --git a/testsuite/tests/lib/should_run/memo002.stdout b/testsuite/tests/lib/should_run/memo002.stdout
deleted file mode 100644
index 7369b408ef..0000000000
--- a/testsuite/tests/lib/should_run/memo002.stdout
+++ /dev/null
@@ -1,44 +0,0 @@
-10
-89
-89
-
-11
-144
-144
-
-12
-233
-233
-
-13
-377
-377
-
-14
-610
-610
-
-15
-987
-987
-
-16
-1597
-1597
-
-17
-2584
-2584
-
-18
-4181
-4181
-
-19
-6765
-6765
-
-20
-10946
-10946
-
diff --git a/testsuite/tests/lib/should_run/packedstring001.hs b/testsuite/tests/lib/should_run/packedstring001.hs
deleted file mode 100644
index 9ee24e232c..0000000000
--- a/testsuite/tests/lib/should_run/packedstring001.hs
+++ /dev/null
@@ -1,11 +0,0 @@
-
-module Main (main) where
-
-import Char (isSpace)
-import Data.PackedString
-
--- Bug in PackedString.lhs (fixed in rev 1.5)
-
-foo = packString "this is a test"
-main = print (filterPS (not.isSpace) foo)
-
diff --git a/testsuite/tests/lib/should_run/packedstring001.stdout b/testsuite/tests/lib/should_run/packedstring001.stdout
deleted file mode 100644
index fbd5abc3a0..0000000000
--- a/testsuite/tests/lib/should_run/packedstring001.stdout
+++ /dev/null
@@ -1 +0,0 @@
-"thisisatest"
diff --git a/testsuite/tests/lib/should_run/rand001.hs b/testsuite/tests/lib/should_run/rand001.hs
deleted file mode 100644
index 3567ae0dd8..0000000000
--- a/testsuite/tests/lib/should_run/rand001.hs
+++ /dev/null
@@ -1,22 +0,0 @@
-module Main(main) where
-
-import System.Random
-
-tstRnd rng = checkRange rng (genRnd 50 rng)
-
-genRnd n rng = take n (randomRs rng (mkStdGen 2))
-
-checkRange (lo,hi) = all pred
- where
- pred
- | lo <= hi = \ x -> x >= lo && x <= hi
- | otherwise = \ x -> x >= hi && x <= lo
-
-main :: IO ()
-main = do
- print (tstRnd (1,5::Double))
- print (tstRnd (1,5::Int))
- print (tstRnd (10,54::Integer))
- print (tstRnd ((-6),2::Int))
- print (tstRnd (2,(-6)::Int))
-
diff --git a/testsuite/tests/lib/should_run/rand001.stdout b/testsuite/tests/lib/should_run/rand001.stdout
deleted file mode 100644
index 2e883c51de..0000000000
--- a/testsuite/tests/lib/should_run/rand001.stdout
+++ /dev/null
@@ -1,5 +0,0 @@
-True
-True
-True
-True
-True
diff --git a/testsuite/tests/lib/should_run/ratio001.hs b/testsuite/tests/lib/should_run/ratio001.hs
deleted file mode 100644
index 4d65dfbccf..0000000000
--- a/testsuite/tests/lib/should_run/ratio001.hs
+++ /dev/null
@@ -1,4 +0,0 @@
-import Data.Ratio
-
--- !!! Test that (%) has the right fixity
-main = print (2^3%5)
diff --git a/testsuite/tests/lib/should_run/ratio001.stdout b/testsuite/tests/lib/should_run/ratio001.stdout
deleted file mode 100644
index f7355f9a4a..0000000000
--- a/testsuite/tests/lib/should_run/ratio001.stdout
+++ /dev/null
@@ -1 +0,0 @@
-8 % 5
diff --git a/testsuite/tests/lib/should_run/ratio001.stdout-ghc b/testsuite/tests/lib/should_run/ratio001.stdout-ghc
deleted file mode 100644
index f7355f9a4a..0000000000
--- a/testsuite/tests/lib/should_run/ratio001.stdout-ghc
+++ /dev/null
@@ -1 +0,0 @@
-8 % 5
diff --git a/testsuite/tests/lib/should_run/reads001.hs b/testsuite/tests/lib/should_run/reads001.hs
deleted file mode 100644
index 318367e7f4..0000000000
--- a/testsuite/tests/lib/should_run/reads001.hs
+++ /dev/null
@@ -1,10 +0,0 @@
--- Test the classic "\SOH" ambiguity
-
-module Main(main) where
-
-main = do { print soh ; print (length (fst (head soh))) ;
- print so ; print (length (fst (head so))) }
- where
- so, soh :: [(String,String)]
- soh = reads "\"\\SOH\"" -- Should read \SOH
- so = reads "\"\\SOx\"" -- Should read \SO followed by x
diff --git a/testsuite/tests/lib/should_run/reads001.stdout b/testsuite/tests/lib/should_run/reads001.stdout
deleted file mode 100644
index 23639933e8..0000000000
--- a/testsuite/tests/lib/should_run/reads001.stdout
+++ /dev/null
@@ -1,4 +0,0 @@
-[("\SOH","")]
-1
-[("\SOx","")]
-2
diff --git a/testsuite/tests/lib/should_run/show001.hs b/testsuite/tests/lib/should_run/show001.hs
deleted file mode 100644
index 69c27d01ea..0000000000
--- a/testsuite/tests/lib/should_run/show001.hs
+++ /dev/null
@@ -1,24 +0,0 @@
--- !!! Testing Show on Maybes and Eithers
-module Main(main) where
-
-x :: Maybe ()
-x = Nothing
-
-main :: IO ()
-main = do
- print x
- print (Just ())
- print ((Just (Just ())) :: Maybe (Maybe ()))
- print (Just x)
- print ((Left 'a') :: Either Char Int)
- print ((Right 'b') :: Either Int Char)
- print ((Right x) :: Either Int (Maybe ()))
- print ((Right (Just 'c')) :: Either Int (Maybe Char))
- print ((Right (Right 'd')) :: Either Int (Either Char Char))
- print ((Right (Left 'e')) :: Either Int (Either Char Int))
- print ((Left 'f') :: Either Char Int)
- print ((Left x) :: Either (Maybe ()) Char)
- print ((Left (Just 'g')) :: Either (Maybe Char) ())
- print ((Left (Right 'h')) :: Either (Either Int Char) Char)
- print ((Left (Right 'i')) :: Either (Either Int Char) ())
-
diff --git a/testsuite/tests/lib/should_run/show001.stdout b/testsuite/tests/lib/should_run/show001.stdout
deleted file mode 100644
index 3be0062e87..0000000000
--- a/testsuite/tests/lib/should_run/show001.stdout
+++ /dev/null
@@ -1,15 +0,0 @@
-Nothing
-Just ()
-Just (Just ())
-Just Nothing
-Left 'a'
-Right 'b'
-Right Nothing
-Right (Just 'c')
-Right (Right 'd')
-Right (Left 'e')
-Left 'f'
-Left Nothing
-Left (Just 'g')
-Left (Right 'h')
-Left (Right 'i')
diff --git a/testsuite/tests/lib/should_run/stableptr001.hs b/testsuite/tests/lib/should_run/stableptr001.hs
deleted file mode 100644
index 1bc857aba6..0000000000
--- a/testsuite/tests/lib/should_run/stableptr001.hs
+++ /dev/null
@@ -1,19 +0,0 @@
-
-module Main where
-
-import Foreign
-
--- simple test for building/dereferencing stable ptrs
-
-main
- = do l <- mapM newStablePtr [1..100000]
- sum <- stable_sum l
- print sum
-
-stable_sum :: [StablePtr Integer] -> IO Integer
-stable_sum [] = return 0
-stable_sum (x:xs)
- = do x' <- deRefStablePtr x
- freeStablePtr x
- xs' <- stable_sum xs
- return (x' + xs')
diff --git a/testsuite/tests/lib/should_run/stableptr001.stdout b/testsuite/tests/lib/should_run/stableptr001.stdout
deleted file mode 100644
index 90ee71a089..0000000000
--- a/testsuite/tests/lib/should_run/stableptr001.stdout
+++ /dev/null
@@ -1 +0,0 @@
-5000050000
diff --git a/testsuite/tests/lib/should_run/stableptr003.hs b/testsuite/tests/lib/should_run/stableptr003.hs
deleted file mode 100644
index 77f4e3c9dc..0000000000
--- a/testsuite/tests/lib/should_run/stableptr003.hs
+++ /dev/null
@@ -1,16 +0,0 @@
-module Main where
-
-import Control.Monad
-import System.Mem.StableName
-import Control.Exception
-
-main = do
- mapM_ evaluate list
- stable_list1 <- mapM makeStableName list
- stable_list2 <- mapM makeStableName list
- unless (stable_list1 == stable_list2) $ do
- let l1 = map hashStableName stable_list1
- let l2 = map hashStableName stable_list2
- print $ zip l1 l2
-
-list = [1..10000] :: [Integer]
diff --git a/testsuite/tests/lib/should_run/stableptr004.hs b/testsuite/tests/lib/should_run/stableptr004.hs
deleted file mode 100644
index 2d6f567cae..0000000000
--- a/testsuite/tests/lib/should_run/stableptr004.hs
+++ /dev/null
@@ -1,12 +0,0 @@
-import Foreign.StablePtr
-
--- compile without optimisation.
--- run with +RTS -D256 to see the stable pointer being garbage collected.
-
-main = do
- let xs = [ 1 .. 50000 ]
- let ys = [ 1 .. 60000 ]
- s1 <- newStablePtr xs
- print (sum xs)
- freeStablePtr s1
- print (sum ys)
diff --git a/testsuite/tests/lib/should_run/stableptr004.stdout b/testsuite/tests/lib/should_run/stableptr004.stdout
deleted file mode 100644
index 30e717b5bd..0000000000
--- a/testsuite/tests/lib/should_run/stableptr004.stdout
+++ /dev/null
@@ -1,2 +0,0 @@
-1250025000
-1800030000
diff --git a/testsuite/tests/lib/should_run/stableptr005.hs b/testsuite/tests/lib/should_run/stableptr005.hs
deleted file mode 100644
index dc4928ab6c..0000000000
--- a/testsuite/tests/lib/should_run/stableptr005.hs
+++ /dev/null
@@ -1,22 +0,0 @@
--- !!! triggered a temporary bug in freeStablePtr around 20020424
-
-module Main where
-import Foreign.StablePtr (newStablePtr, freeStablePtr)
-
-data Foo = A | B | C | D
-
-main :: IO ()
-main = do aSPtr <- newStablePtr A
- bSPtr <- newStablePtr B
- cSPtr <- newStablePtr C
- cSPtr' <- newStablePtr C
- freeStablePtr aSPtr
- freeStablePtr bSPtr
- freeStablePtr cSPtr
- freeStablePtr cSPtr'
- aSPtr <- newStablePtr A
- bSPtr <- newStablePtr B
- cSPtr <- newStablePtr C
- dSPtr <- newStablePtr D
- print "Hello World"
-
diff --git a/testsuite/tests/lib/should_run/stableptr005.stdout b/testsuite/tests/lib/should_run/stableptr005.stdout
deleted file mode 100644
index 06ae699f22..0000000000
--- a/testsuite/tests/lib/should_run/stableptr005.stdout
+++ /dev/null
@@ -1 +0,0 @@
-"Hello World"
diff --git a/testsuite/tests/lib/should_run/text001.hs b/testsuite/tests/lib/should_run/text001.hs
deleted file mode 100644
index 18aab82dd9..0000000000
--- a/testsuite/tests/lib/should_run/text001.hs
+++ /dev/null
@@ -1,15 +0,0 @@
-{- Bug report 28 May 99
-
-When compiled with ghc-4.02, everything's fine, it outputs "Value 7" as
-expected. But compiled with ghc-pre-4.03 it yields this error message.
-
- Fail: Prelude.read: no parse
--}
-
-module Main where
-
-data Msg = Value Int | Inc deriving (Show, Read)
-
-main = do let v = read "Value 7"::Msg
- print v
-
diff --git a/testsuite/tests/lib/should_run/text001.stdout b/testsuite/tests/lib/should_run/text001.stdout
deleted file mode 100644
index a0c782242e..0000000000
--- a/testsuite/tests/lib/should_run/text001.stdout
+++ /dev/null
@@ -1 +0,0 @@
-Value 7
diff --git a/testsuite/tests/lib/should_run/tup001.hs b/testsuite/tests/lib/should_run/tup001.hs
deleted file mode 100644
index a70e09027a..0000000000
--- a/testsuite/tests/lib/should_run/tup001.hs
+++ /dev/null
@@ -1,33 +0,0 @@
--- Test instances for tuples up to 15
--- For Read, Show, Eq, Ord, Bounded
-
-module Main where
-
-data T = A | B | C | D | E | F | G | H | I | J | K | L | M | N | O
- deriving( Eq, Ord, Show, Read, Bounded )
-
-t15 = (A,B,C,D,E,F,G,H,I,J,K,L,M,N,O)
-t14 = (A,B,C,D,E,F,G,H,I,J,K,L,M,N)
-t13 = (A,B,C,D,E,F,G,H,I,J,K,L,M)
-t12 = (A,B,C,D,E,F,G,H,I,J,K,L)
-t11 = (A,B,C,D,E,F,G,H,I,J,K)
-t10 = (A,B,C,D,E,F,G,H,I,J)
-t9 = (A,B,C,D,E,F,G,H,I)
-t8 = (A,B,C,D,E,F,G,H)
-t7 = (A,B,C,D,E,F,G)
-t6 = (A,B,C,D,E,F)
-t5 = (A,B,C,D,E)
-t4 = (A,B,C,D)
-t3 = (A,B,C)
-t2 = (A,B)
-t0 = ()
-
-big = (t0,t2,t3,t4,t5,t6,t7,t8,t9,t10,t11,t12,t13,t14,t15)
-
-main = do print big
- print (read (show big) `asTypeOf` big)
- print (big == big)
- print (big < big)
- print (big > big)
- print (minBound `asTypeOf` big)
- print (maxBound `asTypeOf` big) \ No newline at end of file
diff --git a/testsuite/tests/lib/should_run/tup001.stdout b/testsuite/tests/lib/should_run/tup001.stdout
deleted file mode 100644
index 540340b816..0000000000
--- a/testsuite/tests/lib/should_run/tup001.stdout
+++ /dev/null
@@ -1,7 +0,0 @@
-((),(A,B),(A,B,C),(A,B,C,D),(A,B,C,D,E),(A,B,C,D,E,F),(A,B,C,D,E,F,G),(A,B,C,D,E,F,G,H),(A,B,C,D,E,F,G,H,I),(A,B,C,D,E,F,G,H,I,J),(A,B,C,D,E,F,G,H,I,J,K),(A,B,C,D,E,F,G,H,I,J,K,L),(A,B,C,D,E,F,G,H,I,J,K,L,M),(A,B,C,D,E,F,G,H,I,J,K,L,M,N),(A,B,C,D,E,F,G,H,I,J,K,L,M,N,O))
-((),(A,B),(A,B,C),(A,B,C,D),(A,B,C,D,E),(A,B,C,D,E,F),(A,B,C,D,E,F,G),(A,B,C,D,E,F,G,H),(A,B,C,D,E,F,G,H,I),(A,B,C,D,E,F,G,H,I,J),(A,B,C,D,E,F,G,H,I,J,K),(A,B,C,D,E,F,G,H,I,J,K,L),(A,B,C,D,E,F,G,H,I,J,K,L,M),(A,B,C,D,E,F,G,H,I,J,K,L,M,N),(A,B,C,D,E,F,G,H,I,J,K,L,M,N,O))
-True
-False
-False
-((),(A,A),(A,A,A),(A,A,A,A),(A,A,A,A,A),(A,A,A,A,A,A),(A,A,A,A,A,A,A),(A,A,A,A,A,A,A,A),(A,A,A,A,A,A,A,A,A),(A,A,A,A,A,A,A,A,A,A),(A,A,A,A,A,A,A,A,A,A,A),(A,A,A,A,A,A,A,A,A,A,A,A),(A,A,A,A,A,A,A,A,A,A,A,A,A),(A,A,A,A,A,A,A,A,A,A,A,A,A,A),(A,A,A,A,A,A,A,A,A,A,A,A,A,A,A))
-((),(O,O),(O,O,O),(O,O,O,O),(O,O,O,O,O),(O,O,O,O,O,O),(O,O,O,O,O,O,O),(O,O,O,O,O,O,O,O),(O,O,O,O,O,O,O,O,O),(O,O,O,O,O,O,O,O,O,O),(O,O,O,O,O,O,O,O,O,O,O),(O,O,O,O,O,O,O,O,O,O,O,O),(O,O,O,O,O,O,O,O,O,O,O,O,O),(O,O,O,O,O,O,O,O,O,O,O,O,O,O),(O,O,O,O,O,O,O,O,O,O,O,O,O,O,O))
diff --git a/testsuite/tests/lib/should_run/weak001.hs b/testsuite/tests/lib/should_run/weak001.hs
deleted file mode 100644
index 60dc9c4a12..0000000000
--- a/testsuite/tests/lib/should_run/weak001.hs
+++ /dev/null
@@ -1,12 +0,0 @@
-import Foreign
-import System.Mem.Weak
-
-kill:: Ptr a -> IO ()
-kill a = do
- w <- mkWeakPtr a Nothing
- addFinalizer a $
- deRefWeak w >> return ()
-
-main:: IO ()
-main = sequence_ . take 10000 . repeat $
- mallocBytes 100 >>= kill >> return ()
diff --git a/testsuite/tests/lib/socket/Makefile b/testsuite/tests/lib/socket/Makefile
deleted file mode 100644
index 9101fbd40a..0000000000
--- a/testsuite/tests/lib/socket/Makefile
+++ /dev/null
@@ -1,3 +0,0 @@
-TOP=../../..
-include $(TOP)/mk/boilerplate.mk
-include $(TOP)/mk/test.mk
diff --git a/testsuite/tests/lib/socket/socket001.hs b/testsuite/tests/lib/socket/socket001.hs
deleted file mode 100644
index 0af7afa0d7..0000000000
--- a/testsuite/tests/lib/socket/socket001.hs
+++ /dev/null
@@ -1,58 +0,0 @@
-{- server
-
-The purpose of this test driver is to test TCP Stream sockets.
-All values have been hard coded since the BSD library is not used to
-query the databases for the values. In therory this code is thus not
-portable but net007/Main.hs provides a portable version using the BSD
-module.
-
-This creates a stream socket bound to port 5000 and waits for incoming
-messages it then reads all available data before closing the
-connection to that peer.
-
-No form of error checking is provided other than that already provided
-by module SocketPrim.
-
-
-TESTS:
- socket
- bindSocket
- listen
- accept
- readSocket
- sClose
-
--}
-
-
-module Main where
-
-import SocketPrim
-
-main = do
- s <- socket AF_INET Stream 6
- bindSocket s (SockAddrInet (fromIntegral 5000) iNADDR_ANY)
- listen s 5
-
- let
- loop =
- accept s >>= \ (s',peerAddr) ->
- putStr "*** Start of Transfer ***\n" >>
- h <- socketToHandle s'
- let
- read_all =
- b <- hEOF h
- c <- hGetChar h
- putChar c
-
- if nbytes /= 0 then
- putStr str >>
- read_all
- else
- putStr "\n*** End of Transfer ***\n" >>
- sClose s'
- in
- read_all
-
- loop
-
diff --git a/testsuite/tests/lib/socket/socket001.stdout b/testsuite/tests/lib/socket/socket001.stdout
deleted file mode 100644
index e69de29bb2..0000000000
--- a/testsuite/tests/lib/socket/socket001.stdout
+++ /dev/null
diff --git a/testsuite/tests/lib/socket/socket002.hs b/testsuite/tests/lib/socket/socket002.hs
deleted file mode 100644
index 1e7b19da0b..0000000000
--- a/testsuite/tests/lib/socket/socket002.hs
+++ /dev/null
@@ -1,45 +0,0 @@
-{- client
-
-Client side to net001/Main.hs.
-
-Note that the machine IP numbers have been hard coded into this
-program so it is unlikely that you will be able to run this test if
-you are not at dcs.gla.ac.uk :-(
-
-The reason for this is to aviod using the BSD module at this stage of
-testing.
-
-
-TESTS:
- socket
- connect
- writeSocket
- shutdown
- inet_addr
--}
-
-
-module Main where
-
-import SocketPrim
-
-
-starbuck = "130.209.240.81" -- SunOS 4.1.3 1 sun4c
-marcus = "130.209.247.2" -- SunOS 4.1.3 6 sun4m
-avon = "130.209.247.4" -- OSF1 V2.0 240 alpha
-karkar = "130.209.247.3" -- OSF1 V2.0 240 alpha
-nauru = "130.209.247.5" -- Linux 2.0.30 (RH-4.2) x86
-easter = "130.209.247.6" -- Linux 2.0.30 (RH-4.2) x86
-
-message = "Hello World"
-
-
-main =
- socket AF_INET Stream 6 >>= \ s ->
- inet_addr easter >>= \ ia ->
- connect s (SockAddrInet (mkPortNumber 5000) ia) >>
-
- writeSocket s message >>
- shutdown s ShutdownBoth >>
- sClose s
-
diff --git a/testsuite/tests/lib/socket/socket002.stdout b/testsuite/tests/lib/socket/socket002.stdout
deleted file mode 100644
index e69de29bb2..0000000000
--- a/testsuite/tests/lib/socket/socket002.stdout
+++ /dev/null
diff --git a/testsuite/tests/lib/socket/socket003.hs b/testsuite/tests/lib/socket/socket003.hs
deleted file mode 100644
index ea88a34dde..0000000000
--- a/testsuite/tests/lib/socket/socket003.hs
+++ /dev/null
@@ -1,43 +0,0 @@
-{- server
-
-As for net001 but gets the system to allocate the next free port
-number. It also prints out the IP number of the peer.
-
-TESTS:
- getSocketName
- inet_ntoa
-
--}
-
-module Main where
-
-import SocketPrim
-
-
-main =
- socket AF_INET Stream 6 >>= \ s ->
- bindSocket s (SockAddrInet aNY_PORT iNADDR_ANY) >>
- getSocketName s >>= \ (SockAddrInet port _) ->
- putStr ("Allocated Port Number: " ++ show port ++ "\n") >>
- listen s 5 >>
-
-
- let
- loop =
- accept s >>= \ (s',(SockAddrInet _ haddr)) ->
- inet_ntoa haddr >>= \ na ->
- putStr ("*** Start of Transfer from: " ++ na ++ "***\n") >>
- let
- read_all =
- readSocket s' 4 >>= \ (str, nbytes) ->
- if nbytes /= 0 then
- putStr str >>
- read_all
- else
- putStr "\n*** End of Transfer ***\n" >>
- sClose s'
- in
- read_all
- in
- loop
-
diff --git a/testsuite/tests/lib/socket/socket003.stdout b/testsuite/tests/lib/socket/socket003.stdout
deleted file mode 100644
index e69de29bb2..0000000000
--- a/testsuite/tests/lib/socket/socket003.stdout
+++ /dev/null
diff --git a/testsuite/tests/lib/socket/socket004.hs b/testsuite/tests/lib/socket/socket004.hs
deleted file mode 100644
index d7fbdc91bc..0000000000
--- a/testsuite/tests/lib/socket/socket004.hs
+++ /dev/null
@@ -1,38 +0,0 @@
-{- client
-
-As for net002 but reads port number and message as arguments.
-It also prints out the IP number of the peer machine.
-
-
-
-TESTS:
- getPeerName
--}
-
-
-module Main(main) where
-
-import SocketPrim
-import System
-
-
-starbuck = "130.209.240.81"
-marcus = "130.209.247.2"
-
-nauru = "130.209.247.5" -- Linux 2.0.30 (RH-4.2) x86
-easter = "130.209.247.6" -- Linux 2.0.30 (RH-4.2) x86
-
-
-main =
- getArgs >>= \ [port, message] ->
- socket AF_INET Stream 6 >>= \ s ->
- inet_addr easter >>= \ i_addr ->
- connect s (SockAddrInet (mkPortNumber (read port)) i_addr) >>
-
- getPeerName s >>= \ (SockAddrInet p haddr) ->
- inet_ntoa haddr >>= \ a ->
- putStr ("Connected to : " ++ a ++ "\n") >>
- writeSocket s message >>
- shutdown s ShutdownBoth >>
- sClose s
-
diff --git a/testsuite/tests/lib/socket/socket004.stdout b/testsuite/tests/lib/socket/socket004.stdout
deleted file mode 100644
index e69de29bb2..0000000000
--- a/testsuite/tests/lib/socket/socket004.stdout
+++ /dev/null
diff --git a/testsuite/tests/lib/socket/socket005.hs b/testsuite/tests/lib/socket/socket005.hs
deleted file mode 100644
index ec504aa480..0000000000
--- a/testsuite/tests/lib/socket/socket005.hs
+++ /dev/null
@@ -1,37 +0,0 @@
-{- server
-
-Server as net001 but for Unix Domain Datagram sockets.
-
-TESTS:
- socket
- bindSocket
- readSocket
-
--}
-
-
-module Main where
-
-import SocketPrim
-
-
-main =
- socket AF_UNIX Datagram 0 >>= \ s ->
- bindSocket s (SockAddrUnix "sock") >>
-
- let
- loop =
- putStr "*** Start of Transfer ***\n" >>
- let
- read_all =
- readSocket s 1024 >>= \ (str, nbytes) ->
- if nbytes /= 0 then
- putStr str >>
- read_all
- else
- putStr "\n*** End of Transfer ***\n"
- in
- read_all
- in
- loop
-
diff --git a/testsuite/tests/lib/socket/socket005.stdout b/testsuite/tests/lib/socket/socket005.stdout
deleted file mode 100644
index e69de29bb2..0000000000
--- a/testsuite/tests/lib/socket/socket005.stdout
+++ /dev/null
diff --git a/testsuite/tests/lib/socket/socket006.hs b/testsuite/tests/lib/socket/socket006.hs
deleted file mode 100644
index e2ad13ae49..0000000000
--- a/testsuite/tests/lib/socket/socket006.hs
+++ /dev/null
@@ -1,27 +0,0 @@
-{- client
-
-Client side of net005
-
-TESTS:
- socket
- connect
- writeSocket
- shutdown
- sClose
--}
-
-
-module Main where
-
-import SocketPrim
-
-message = "Hello World"
-
-
-main =
- socket AF_UNIX Datagram 0 >>= \ s ->
- connect s (SockAddrUnix "sock") >>
-
- writeSocket s message >>
- shutdown s ShutdownBoth >>
- sClose s
diff --git a/testsuite/tests/lib/socket/socket006.stdout b/testsuite/tests/lib/socket/socket006.stdout
deleted file mode 100644
index e69de29bb2..0000000000
--- a/testsuite/tests/lib/socket/socket006.stdout
+++ /dev/null
diff --git a/testsuite/tests/lib/socket/socket007.hs b/testsuite/tests/lib/socket/socket007.hs
deleted file mode 100644
index fbc9ff04e0..0000000000
--- a/testsuite/tests/lib/socket/socket007.hs
+++ /dev/null
@@ -1,44 +0,0 @@
-{- server
-
-As net003 but uses the BSD module for portability. Also prints the
-common name of the host rather than its IP number.
-
-TESTS:
- getProtocolNumber
- getSocketName
- getHostByAddr
-
--}
-
-module Main where
-
-import BSD
-import SocketPrim
-
-main =
- getProtocolNumber "tcp" >>= \ proto ->
- socket AF_INET Stream proto >>= \ s ->
- bindSocket s (SockAddrInet aNY_PORT iNADDR_ANY) >>
- getSocketName s >>= \ (SockAddrInet port _) ->
- putStr ("Allocated Port Number: " ++ show port ++ "\n") >>
- listen s 5 >>
-
-
- let
- loop =
- accept s >>= \ (s',(SockAddrInet _ haddr)) ->
- getHostByAddr AF_INET haddr >>= \ (HostEntry hname _ _ _) ->
- putStr ("*** Start of Transfer from: " ++ hname ++ "***\n") >>
- let
- read_all =
- readSocket s' 4 >>= \ (str, nbytes) ->
- if nbytes /= 0 then
- putStr str >>
- read_all
- else
- putStr "\n*** End of Transfer ***\n" >>
- sClose s'
- in
- read_all
- in
- loop
diff --git a/testsuite/tests/lib/socket/socket007.stdout b/testsuite/tests/lib/socket/socket007.stdout
deleted file mode 100644
index e69de29bb2..0000000000
--- a/testsuite/tests/lib/socket/socket007.stdout
+++ /dev/null
diff --git a/testsuite/tests/lib/socket/socket008.hs b/testsuite/tests/lib/socket/socket008.hs
deleted file mode 100644
index 896763409e..0000000000
--- a/testsuite/tests/lib/socket/socket008.hs
+++ /dev/null
@@ -1,21 +0,0 @@
-module Main where
-
-import SocketPrim
-import BSD
-import System
-
-main =
- getArgs >>= \ [host, port, message] ->
- getProtocolNumber "tcp" >>= \ proto ->
- socket AF_INET Stream proto >>= \ s ->
- getHostByName host >>= \ (HostEntry _ _ _ haddrs) ->
- connect s (SockAddrInet (mkPortNumber (read port))
- (head haddrs)) >>
-
- getPeerName s >>= \ (SockAddrInet _ haddr) ->
- getHostByAddr AF_INET haddr >>= \ (HostEntry hname _ _ _) ->
- putStr ("Connected to : " ++ hname ++ "\n") >>
- writeSocket s message >>
- shutdown s ShutdownBoth >>
- sClose s
-
diff --git a/testsuite/tests/lib/socket/socket008.stdout b/testsuite/tests/lib/socket/socket008.stdout
deleted file mode 100644
index e69de29bb2..0000000000
--- a/testsuite/tests/lib/socket/socket008.stdout
+++ /dev/null
diff --git a/testsuite/tests/lib/socket/socket009.hs b/testsuite/tests/lib/socket/socket009.hs
deleted file mode 100644
index c34334e691..0000000000
--- a/testsuite/tests/lib/socket/socket009.hs
+++ /dev/null
@@ -1,28 +0,0 @@
--- Sigbjorn and I don't understand what this test is meant to do
--- It simply hangs on stdin!
-
-import IO -- 1.3
-
-import System(getArgs)
-
-main = getArgs >>= \ [user,host] ->
- let username = (user ++ "@" ++ host) in
- openFile username ReadWriteMode >>= \ cd ->
- hSetBuffering stdin NoBuffering >>
- hSetBuffering stdout NoBuffering >>
- hSetBuffering cd NoBuffering >>
- hPutStr cd speakString >>
- speak cd
-
-speakString = "Someone wants to speak with you\n"
-
-speak cd =
- (hReady cd >>= \ ready ->
- if ready then (hGetChar cd >>= putChar)
- else return () >>
-
- hReady stdin >>= \ ready ->
- if ready then (getChar >>= hPutChar cd)
- else return ()) >>
-
- speak cd
diff --git a/testsuite/tests/lib/socket/socket009.stdout b/testsuite/tests/lib/socket/socket009.stdout
deleted file mode 100644
index e69de29bb2..0000000000
--- a/testsuite/tests/lib/socket/socket009.stdout
+++ /dev/null
diff --git a/testsuite/tests/llvm/should_compile/5486.hs b/testsuite/tests/llvm/should_compile/5486.hs
new file mode 100644
index 0000000000..730a7c2854
--- /dev/null
+++ b/testsuite/tests/llvm/should_compile/5486.hs
@@ -0,0 +1,124 @@
+{-# LANGUAGE ForeignFunctionInterface, UnliftedFFITypes, UnboxedTuples,
+ BangPatterns, MagicHash #-}
+
+-- | Test case for Trac #5486
+-- Test case reduced from HsOpenSSL package BN module
+module Bad where
+
+import Control.Exception hiding (try)
+import Foreign
+import qualified Data.ByteString as BS
+
+import Foreign.C.Types
+import GHC.Base
+import GHC.Integer.GMP.Internals
+
+newtype BigNum = BigNum (Ptr BIGNUM)
+data BIGNUM
+
+data ByteArray = BA !ByteArray#
+data MBA = MBA !(MutableByteArray# RealWorld)
+
+foreign import ccall unsafe "BN_free"
+ _free :: Ptr BIGNUM -> IO ()
+
+foreign import ccall unsafe "BN_bn2mpi"
+ _bn2mpi :: Ptr BIGNUM -> Ptr CChar -> IO CInt
+
+foreign import ccall unsafe "memcpy"
+ _copy_in :: ByteArray# -> Ptr () -> CSize -> IO ()
+
+foreign import ccall unsafe "memcpy"
+ _copy_out :: Ptr () -> ByteArray# -> CSize -> IO ()
+
+unwrapBN :: BigNum -> Ptr BIGNUM
+unwrapBN (BigNum p) = p
+
+wrapBN :: Ptr BIGNUM -> BigNum
+wrapBN = BigNum
+
+bnToInteger :: BigNum -> IO Integer
+bnToInteger bn = do
+ nlimbs <- ((\hsc_ptr -> peekByteOff hsc_ptr 8)) (unwrapBN bn) :: IO CInt
+ case nlimbs of
+ 0 -> return 0
+ 1 -> do (I# i) <- ((\hsc_ptr -> peekByteOff hsc_ptr 0)) (unwrapBN bn) >>= peek
+ negative <- ((\hsc_ptr -> peekByteOff hsc_ptr 16)) (unwrapBN bn) :: IO CInt
+ if negative == 0
+ then return $ S# i
+ else return $ 0 - (S# i)
+ _ -> do
+ let !(I# nlimbsi) = fromIntegral nlimbs
+ !(I# limbsize) = ((8))
+ (MBA arr) <- newByteArray (nlimbsi *# limbsize)
+ (BA ba) <- freezeByteArray arr
+ limbs <- ((\hsc_ptr -> peekByteOff hsc_ptr 0)) (unwrapBN bn)
+ _ <- _copy_in ba limbs $ fromIntegral $ nlimbs * ((8))
+ negative <- ((\hsc_ptr -> peekByteOff hsc_ptr 16)) (unwrapBN bn) :: IO CInt
+ if negative == 0
+ then return $ J# nlimbsi ba
+ else return $ 0 - (J# nlimbsi ba)
+
+newByteArray :: Int# -> IO MBA
+newByteArray sz = IO $ \s ->
+ case newByteArray# sz s of { (# s', arr #) ->
+ (# s', MBA arr #) }
+
+freezeByteArray :: MutableByteArray# RealWorld -> IO ByteArray
+freezeByteArray arr = IO $ \s ->
+ case unsafeFreezeByteArray# arr s of { (# s', arr' #) ->
+ (# s', BA arr' #) }
+
+integerToBN :: Integer -> IO BigNum
+integerToBN (S# 0#) = do
+ bnptr <- mallocBytes ((24))
+ ((\hsc_ptr -> pokeByteOff hsc_ptr 0)) bnptr nullPtr
+ let one :: CInt
+ one = 1
+ zero :: CInt
+ zero = 0
+ ((\hsc_ptr -> pokeByteOff hsc_ptr 20)) bnptr one
+ ((\hsc_ptr -> pokeByteOff hsc_ptr 8)) bnptr zero
+ ((\hsc_ptr -> pokeByteOff hsc_ptr 12)) bnptr zero
+ ((\hsc_ptr -> pokeByteOff hsc_ptr 16)) bnptr zero
+ return (wrapBN bnptr)
+
+integerToBN (S# v) = do
+ bnptr <- mallocBytes ((24))
+ limbs <- malloc :: IO (Ptr CULong)
+ poke limbs $ fromIntegral $ abs $ I# v
+ ((\hsc_ptr -> pokeByteOff hsc_ptr 0)) bnptr limbs
+ let one :: CInt
+ one = 1
+ ((\hsc_ptr -> pokeByteOff hsc_ptr 20)) bnptr one
+ ((\hsc_ptr -> pokeByteOff hsc_ptr 8)) bnptr one
+ ((\hsc_ptr -> pokeByteOff hsc_ptr 12)) bnptr one
+ ((\hsc_ptr -> pokeByteOff hsc_ptr 16)) bnptr (if (I# v) < 0 then one else 0)
+ return (wrapBN bnptr)
+
+integerToBN v@(J# nlimbs_ bytearray)
+ | v >= 0 = do
+ let nlimbs = (I# nlimbs_)
+ bnptr <- mallocBytes ((24))
+ limbs <- mallocBytes (((8)) * nlimbs)
+ ((\hsc_ptr -> pokeByteOff hsc_ptr 0)) bnptr limbs
+ ((\hsc_ptr -> pokeByteOff hsc_ptr 20)) bnptr (1 :: CInt)
+ _ <- _copy_out limbs bytearray (fromIntegral $ ((8)) * nlimbs)
+ ((\hsc_ptr -> pokeByteOff hsc_ptr 8)) bnptr ((fromIntegral nlimbs) :: CInt)
+ ((\hsc_ptr -> pokeByteOff hsc_ptr 12)) bnptr ((fromIntegral nlimbs) :: CInt)
+ ((\hsc_ptr -> pokeByteOff hsc_ptr 16)) bnptr (0 :: CInt)
+ return (wrapBN bnptr)
+ | otherwise = do bnptr <- integerToBN (0-v)
+ ((\hsc_ptr -> pokeByteOff hsc_ptr 16)) (unwrapBN bnptr) (1 :: CInt)
+ return bnptr
+
+integerToMPI :: Integer -> IO BS.ByteString
+integerToMPI v = bracket (integerToBN v) (_free . unwrapBN) bnToMPI
+
+bnToMPI :: BigNum -> IO BS.ByteString
+bnToMPI bn = do
+ bytes <- _bn2mpi (unwrapBN bn) nullPtr
+ allocaBytes (fromIntegral bytes) (\buffer -> do
+ _ <- _bn2mpi (unwrapBN bn) buffer
+ BS.packCStringLen (buffer, fromIntegral bytes))
+
diff --git a/testsuite/tests/llvm/should_compile/5681.hs b/testsuite/tests/llvm/should_compile/5681.hs
new file mode 100644
index 0000000000..8a94fb44ce
--- /dev/null
+++ b/testsuite/tests/llvm/should_compile/5681.hs
@@ -0,0 +1,14 @@
+{-# LANGUAGE MagicHash, UnboxedTuples #-}
+-- Test case for Trac #5681
+module Main where
+
+import GHC.Prim
+
+work :: Int -> Int
+work n = work (n-1)
+
+main :: IO ()
+main = case spark# (work 2) realWorld# of
+ (# _, _ #) -> case par# (work 1) of
+ _ -> return ()
+
diff --git a/testsuite/tests/llvm/should_compile/all.T b/testsuite/tests/llvm/should_compile/all.T
index 8c90892078..fb3f07e481 100644
--- a/testsuite/tests/llvm/should_compile/all.T
+++ b/testsuite/tests/llvm/should_compile/all.T
@@ -7,4 +7,6 @@ setTestOpts(f)
test('5054', reqlib('hmatrix'), compile, ['-package hmatrix'])
test('5054_2', reqlib('hmatrix'), compile, ['-package hmatrix'])
+test('5486', normal, compile, [''])
+test('5681', normal, compile, [''])
diff --git a/testsuite/tests/module/T1074.stderr b/testsuite/tests/module/T1074.stderr
index b368ca119e..53b33604b9 100644
--- a/testsuite/tests/module/T1074.stderr
+++ b/testsuite/tests/module/T1074.stderr
@@ -1,5 +1,5 @@
-T1074.hs:5:1:
- Warning: The import of `Control.Monad.Reader' is redundant
- except perhaps to import instances from `Control.Monad.Reader'
- To import instances alone, use: import Control.Monad.Reader()
+T1074.hs:5:1: Warning:
+ The qualified import of `Control.Monad.Reader' is redundant
+ except perhaps to import instances from `Control.Monad.Reader'
+ To import instances alone, use: import Control.Monad.Reader()
diff --git a/testsuite/tests/module/base01/Makefile b/testsuite/tests/module/base01/Makefile
index f88e8a3e4d..815fbff1d4 100644
--- a/testsuite/tests/module/base01/Makefile
+++ b/testsuite/tests/module/base01/Makefile
@@ -9,6 +9,6 @@ clean:
base01:
rm -f GHC/*.o
rm -f GHC/*.hi
- '$(TEST_HC)' $(TEST_HC_OPTS) -XNoImplicitPrelude -package-name base -c GHC/Base.hs
- '$(TEST_HC)' $(TEST_HC_OPTS) -XNoImplicitPrelude -package-name base --make GHC.Foo
+ '$(TEST_HC)' $(filter-out -fforce-recomp,$(TEST_HC_OPTS)) -XNoImplicitPrelude -package-name base -c GHC/Base.hs
+ '$(TEST_HC)' $(filter-out -fforce-recomp,$(TEST_HC_OPTS)) -XNoImplicitPrelude -package-name base --make GHC.Foo
diff --git a/testsuite/tests/module/mod175/all.T b/testsuite/tests/module/mod175/all.T
index 8edbf0ae0f..f4ab85b5d6 100644
--- a/testsuite/tests/module/mod175/all.T
+++ b/testsuite/tests/module/mod175/all.T
@@ -1,8 +1,7 @@
setTestOpts(only_compiler_types(['ghc']))
test('mod175',
- [expect_broken(437),
- clean_cmd('$MAKE -s clean')],
+ clean_cmd('$MAKE -s clean'),
run_command,
- ['$MAKE -s mod175'])
+ ['$MAKE -s --no-print-directory mod175'])
diff --git a/testsuite/tests/module/mod45.stderr b/testsuite/tests/module/mod45.stderr
index bba6b1b7d7..8aadf22b10 100644
--- a/testsuite/tests/module/mod45.stderr
+++ b/testsuite/tests/module/mod45.stderr
@@ -1,2 +1,6 @@
-mod45.hs:5:3: Misplaced type signature: == :: T -> T -> Bool
+mod45.hs:5:11:
+ Illegal type signature in instance declaration:
+ (==) :: T -> T -> Bool
+ (Use -XInstanceSigs to allow this)
+ In the instance declaration for `Eq T'
diff --git a/testsuite/tests/module/mod53.stderr b/testsuite/tests/module/mod53.stderr
index b8b44a471e..2e142a5bfb 100644
--- a/testsuite/tests/module/mod53.stderr
+++ b/testsuite/tests/module/mod53.stderr
@@ -2,4 +2,4 @@
mod53.hs:4:22:
Can't make a derived instance of `C T':
`C' is not a derivable class
- In the data type declaration for `T'
+ In the data declaration for `T'
diff --git a/testsuite/tests/module/mod55.stderr b/testsuite/tests/module/mod55.stderr
index 7787ea3b2f..9db5ea55cc 100644
--- a/testsuite/tests/module/mod55.stderr
+++ b/testsuite/tests/module/mod55.stderr
@@ -1,6 +1,6 @@
-
-mod55.hs:3:26:
- Can't make a derived instance of `Enum T':
- `T' must be an enumeration type
- (an enumeration consists of one or more nullary, non-GADT constructors)
- In the data type declaration for `T'
+
+mod55.hs:3:26:
+ Can't make a derived instance of `Enum T':
+ `T' must be an enumeration type
+ (an enumeration consists of one or more nullary, non-GADT constructors)
+ In the data declaration for `T'
diff --git a/testsuite/tests/module/mod56.stderr b/testsuite/tests/module/mod56.stderr
index 3dca4e2e10..db194406ed 100644
--- a/testsuite/tests/module/mod56.stderr
+++ b/testsuite/tests/module/mod56.stderr
@@ -1,8 +1,8 @@
-
-mod56.hs:4:39:
- Can't make a derived instance of `Ix T':
- `T' must be an enumeration type
- (an enumeration consists of one or more nullary, non-GADT constructors)
- or
- `T' must have precisely one constructor
- In the data type declaration for `T'
+
+mod56.hs:4:39:
+ Can't make a derived instance of `Ix T':
+ `T' must be an enumeration type
+ (an enumeration consists of one or more nullary, non-GADT constructors)
+ or
+ `T' must have precisely one constructor
+ In the data declaration for `T'
diff --git a/testsuite/tests/module/mod89.stderr b/testsuite/tests/module/mod89.stderr
index ddf38b0d13..c4eb78e428 100644
--- a/testsuite/tests/module/mod89.stderr
+++ b/testsuite/tests/module/mod89.stderr
@@ -1,2 +1,2 @@
-mod89.hs:3:19: parse error on input `('
+mod89.hs:3:16: Module `Prelude' does not export `map(..)'
diff --git a/testsuite/tests/numeric/should_run/add2.hs b/testsuite/tests/numeric/should_run/add2.hs
new file mode 100644
index 0000000000..5990f4fa83
--- /dev/null
+++ b/testsuite/tests/numeric/should_run/add2.hs
@@ -0,0 +1,26 @@
+
+{-# LANGUAGE MagicHash, UnboxedTuples #-}
+
+import GHC.Prim
+import GHC.Word
+import Data.Bits
+
+main :: IO ()
+main = do f 5 6
+ f maxBound 23
+ f maxBound maxBound
+
+f :: Word -> Word -> IO ()
+f wx@(W# x) wy@(W# y)
+ = do putStrLn "-----"
+ putStrLn ("Doing " ++ show wx ++ " + " ++ show wy)
+ case x `plusWord2#` y of
+ (# h, l #) ->
+ do let wh = W# h
+ wl = W# l
+ r = shiftL (fromIntegral wh) (bitSize wh)
+ + fromIntegral wl
+ putStrLn ("High: " ++ show wh)
+ putStrLn ("Low: " ++ show wl)
+ putStrLn ("Result: " ++ show (r :: Integer))
+
diff --git a/testsuite/tests/numeric/should_run/add2.stdout b/testsuite/tests/numeric/should_run/add2.stdout
new file mode 100644
index 0000000000..bdeff7290a
--- /dev/null
+++ b/testsuite/tests/numeric/should_run/add2.stdout
@@ -0,0 +1,15 @@
+-----
+Doing 5 + 6
+High: 0
+Low: 11
+Result: 11
+-----
+Doing 18446744073709551615 + 23
+High: 1
+Low: 22
+Result: 18446744073709551638
+-----
+Doing 18446744073709551615 + 18446744073709551615
+High: 1
+Low: 18446744073709551614
+Result: 36893488147419103230
diff --git a/testsuite/tests/numeric/should_run/add2.stdout-ws-32 b/testsuite/tests/numeric/should_run/add2.stdout-ws-32
new file mode 100644
index 0000000000..55d0f6a361
--- /dev/null
+++ b/testsuite/tests/numeric/should_run/add2.stdout-ws-32
@@ -0,0 +1,15 @@
+-----
+Doing 5 + 6
+High: 0
+Low: 11
+Result: 11
+-----
+Doing 4294967295 + 23
+High: 1
+Low: 22
+Result: 4294967318
+-----
+Doing 4294967295 + 4294967295
+High: 1
+Low: 4294967294
+Result: 8589934590
diff --git a/testsuite/tests/numeric/should_run/all.T b/testsuite/tests/numeric/should_run/all.T
index 0916af1d7d..2cfcae7756 100644
--- a/testsuite/tests/numeric/should_run/all.T
+++ b/testsuite/tests/numeric/should_run/all.T
@@ -35,7 +35,12 @@ test('arith015', normal, compile_and_run, [''])
test('numrun009', normal, compile_and_run, [''])
test('numrun010', normal, compile_and_run, [''])
test('numrun011', normal, compile_and_run, [''])
-test('numrun012', normal, compile_and_run, [''])
+test('numrun012',
+ if_os('mingw32',expect_fail_for('ghci')),
+ # on Windows, GHCi says that "logBase 2 (2^31)" is "31.0", but
+ # other platforms (and compiled on Windows) reports 31.000000000000004
+ # I have no idea where the discrepancy comes from. --SDM
+ compile_and_run, [''])
test('numrun013', normal, compile_and_run, [''])
test('numrun014', normal, compile_and_run, [''])
test('arith016', compose(normal,only_compiler_types(['ghc'])), compile_and_run, [''])
@@ -48,3 +53,7 @@ test('1603', skip, compile_and_run, [''])
test('3676', expect_broken(3676), compile_and_run, [''])
test('4381', normal, compile_and_run, [''])
test('4383', normal, compile_and_run, [''])
+
+test('add2', normal, compile_and_run, [''])
+test('mul2', normal, compile_and_run, [''])
+
diff --git a/testsuite/tests/numeric/should_run/mul2.hs b/testsuite/tests/numeric/should_run/mul2.hs
new file mode 100644
index 0000000000..82a89d66d0
--- /dev/null
+++ b/testsuite/tests/numeric/should_run/mul2.hs
@@ -0,0 +1,26 @@
+
+{-# LANGUAGE MagicHash, UnboxedTuples #-}
+
+import GHC.Prim
+import GHC.Word
+import Data.Bits
+
+main :: IO ()
+main = do f 5 6
+ f 0xFD94E3B7FE36FB18 49
+ f 0xFD94E3B7FE36FB18 0xFC1D8A3BFB29FC6A
+
+f :: Word -> Word -> IO ()
+f wx@(W# x) wy@(W# y)
+ = do putStrLn "-----"
+ putStrLn ("Doing " ++ show wx ++ " * " ++ show wy)
+ case x `timesWord2#` y of
+ (# h, l #) ->
+ do let wh = W# h
+ wl = W# l
+ r = shiftL (fromIntegral wh) (bitSize wh)
+ + fromIntegral wl
+ putStrLn ("High: " ++ show wh)
+ putStrLn ("Low: " ++ show wl)
+ putStrLn ("Result: " ++ show (r :: Integer))
+
diff --git a/testsuite/tests/numeric/should_run/mul2.stdout b/testsuite/tests/numeric/should_run/mul2.stdout
new file mode 100644
index 0000000000..1a5107c9c7
--- /dev/null
+++ b/testsuite/tests/numeric/should_run/mul2.stdout
@@ -0,0 +1,15 @@
+-----
+Doing 5 * 6
+High: 0
+Low: 30
+Result: 30
+-----
+Doing 18272479967532481304 * 49
+High: 48
+Low: 9907802871033106328
+Result: 895351518409091583896
+-----
+Doing 18272479967532481304 * 18166828462103985258
+High: 17995208684035254268
+Low: 13422369508946319344
+Result: 331953009147393985806713771139776616432
diff --git a/testsuite/tests/numeric/should_run/mul2.stdout-ws-32 b/testsuite/tests/numeric/should_run/mul2.stdout-ws-32
new file mode 100644
index 0000000000..78b06d5c1b
--- /dev/null
+++ b/testsuite/tests/numeric/should_run/mul2.stdout-ws-32
@@ -0,0 +1,15 @@
+-----
+Doing 5 * 6
+High: 0
+Low: 30
+Result: 30
+-----
+Doing 4265016088 * 49
+High: 48
+Low: 2827358104
+Result: 208985788312
+-----
+Doing 4265016088 * 4213832810
+High: 4184447398
+Low: 549951472
+Result: 17972064726792247280
diff --git a/testsuite/tests/parser/should_compile/T2245.stderr b/testsuite/tests/parser/should_compile/T2245.stderr
index b1754ff0c5..527957a935 100644
--- a/testsuite/tests/parser/should_compile/T2245.stderr
+++ b/testsuite/tests/parser/should_compile/T2245.stderr
@@ -1,32 +1,32 @@
T2245.hs:4:10:
- Warning: No explicit method nor default method for `+'
+ Warning: No explicit method or default declaration for `+'
In the instance declaration for `Num T'
T2245.hs:4:10:
- Warning: No explicit method nor default method for `*'
+ Warning: No explicit method or default declaration for `*'
In the instance declaration for `Num T'
T2245.hs:4:10:
- Warning: No explicit method nor default method for `abs'
+ Warning: No explicit method or default declaration for `abs'
In the instance declaration for `Num T'
T2245.hs:4:10:
- Warning: No explicit method nor default method for `signum'
+ Warning: No explicit method or default declaration for `signum'
In the instance declaration for `Num T'
T2245.hs:4:10:
- Warning: No explicit method nor default method for `fromInteger'
+ Warning: No explicit method or default declaration for `fromInteger'
In the instance declaration for `Num T'
T2245.hs:5:10:
- Warning: No explicit method nor default method for `fromRational'
+ Warning: No explicit method or default declaration for `fromRational'
In the instance declaration for `Fractional T'
T2245.hs:7:29:
Warning: Defaulting the following constraint(s) to type `T'
- (Fractional b0) arising from the literal `1e400'
- at T2245.hs:7:29-33
+ (Fractional b0)
+ arising from the literal `1e400' at T2245.hs:7:29-33
(Ord b0) arising from a use of `<' at T2245.hs:7:27
(Read b0) arising from a use of `read' at T2245.hs:7:38-41
In the second argument of `(<)', namely `1e400'
diff --git a/testsuite/tests/parser/should_compile/mc16.hs b/testsuite/tests/parser/should_compile/mc16.hs
index 3f80c04abb..4ff2e169a1 100644
--- a/testsuite/tests/parser/should_compile/mc16.hs
+++ b/testsuite/tests/parser/should_compile/mc16.hs
@@ -9,7 +9,7 @@ foo = [ ()
| x <- [1..10]
, then take 5
, then sortWith by x
- , then group by x
+ , then group by x using groupWith
, then group using inits
, then group by x using groupWith
]
diff --git a/testsuite/tests/parser/should_compile/read014.stderr-ghc b/testsuite/tests/parser/should_compile/read014.stderr-ghc
index 85f36b16da..b1d9b81256 100644
--- a/testsuite/tests/parser/should_compile/read014.stderr-ghc
+++ b/testsuite/tests/parser/should_compile/read014.stderr-ghc
@@ -1,28 +1,28 @@
-
-read014.hs:4:1:
- Warning: Top-level binding with no type signature:
- ng1 :: forall t a. Num a => t -> a -> a
-
-read014.hs:4:5: Warning: Defined but not used: `x'
-
-read014.hs:6:10:
- Warning: No explicit method nor default method for `+'
- In the instance declaration for `Num (a, b)'
-
-read014.hs:6:10:
- Warning: No explicit method nor default method for `*'
- In the instance declaration for `Num (a, b)'
-
-read014.hs:6:10:
- Warning: No explicit method nor default method for `abs'
- In the instance declaration for `Num (a, b)'
-
-read014.hs:6:10:
- Warning: No explicit method nor default method for `signum'
- In the instance declaration for `Num (a, b)'
-
-read014.hs:6:10:
- Warning: No explicit method nor default method for `fromInteger'
- In the instance declaration for `Num (a, b)'
-
-read014.hs:8:53: Warning: Defined but not used: `x'
+
+read014.hs:4:1:
+ Warning: Top-level binding with no type signature:
+ ng1 :: forall t a. Num a => t -> a -> a
+
+read014.hs:4:5: Warning: Defined but not used: `x'
+
+read014.hs:6:10:
+ Warning: No explicit method or default declaration for `+'
+ In the instance declaration for `Num (a, b)'
+
+read014.hs:6:10:
+ Warning: No explicit method or default declaration for `*'
+ In the instance declaration for `Num (a, b)'
+
+read014.hs:6:10:
+ Warning: No explicit method or default declaration for `abs'
+ In the instance declaration for `Num (a, b)'
+
+read014.hs:6:10:
+ Warning: No explicit method or default declaration for `signum'
+ In the instance declaration for `Num (a, b)'
+
+read014.hs:6:10:
+ Warning: No explicit method or default declaration for `fromInteger'
+ In the instance declaration for `Num (a, b)'
+
+read014.hs:8:53: Warning: Defined but not used: `x'
diff --git a/testsuite/tests/parser/should_compile/read062.hs b/testsuite/tests/parser/should_compile/read062.hs
index 4d57585c10..d324111de5 100644
--- a/testsuite/tests/parser/should_compile/read062.hs
+++ b/testsuite/tests/parser/should_compile/read062.hs
@@ -9,7 +9,7 @@ foo = [ ()
| x <- [1..10]
, then take 5
, then sortWith by x
- , then group by x
+ , then group by x using groupWith
, then group using inits
, then group by x using groupWith
]
diff --git a/testsuite/tests/parser/should_compile/read063.hs b/testsuite/tests/parser/should_compile/read063.hs
index faa7c4a4a5..51f660acfd 100644
--- a/testsuite/tests/parser/should_compile/read063.hs
+++ b/testsuite/tests/parser/should_compile/read063.hs
@@ -28,12 +28,12 @@ f1 i = (# i #)
-- Kind mis-match
-- Expected kind `* -> *', but `(##)' has kind `? -> (#)'
-- In the instance declaration for `Functor (##)'
-f1prefix :: Int# -> (# #) Int#
-f1prefix i = (# #) i
+f1prefix :: Int# -> (# #)
+f1prefix i = (# #)
--test that prefix and non-prefix versions
--are the same type by switching the case-argument
-f1pat a = case f1prefix a of (# i #) -> i +# 1#
-f1prepat a = case f1 a of (# #) i -> i +# 1#
+f1pat a = case f1prefix a of (# #) -> 1#
+f1prepat a = case f1 a of (# i #) -> i +# 1#
f2 :: Int# -> (# Int#, Int# #)
f2 i = (# i, i #)
diff --git a/testsuite/tests/parser/should_compile/read064.stderr b/testsuite/tests/parser/should_compile/read064.stderr
index 8ed04fc629..dfc662f422 100644
--- a/testsuite/tests/parser/should_compile/read064.stderr
+++ b/testsuite/tests/parser/should_compile/read064.stderr
@@ -1,2 +1,2 @@
-read064.hs:4:1: Unrecognised pragma
+read064.hs:4:1: Warning: Unrecognised pragma
diff --git a/testsuite/tests/parser/should_compile/read066.stderr b/testsuite/tests/parser/should_compile/read066.stderr
index a094133754..3eca28b785 100644
--- a/testsuite/tests/parser/should_compile/read066.stderr
+++ b/testsuite/tests/parser/should_compile/read066.stderr
@@ -1,2 +1,2 @@
-read066.hs:2:1: Unrecognised pragma
+read066.hs:2:1: Warning: Unrecognised pragma
diff --git a/testsuite/tests/parser/should_fail/readFail001.stderr b/testsuite/tests/parser/should_fail/readFail001.stderr
index 719d4c12bd..f146ae5625 100644
--- a/testsuite/tests/parser/should_fail/readFail001.stderr
+++ b/testsuite/tests/parser/should_fail/readFail001.stderr
@@ -4,9 +4,11 @@ readFail001.hs:25:11:
readFail001.hs:38:32:
Not in scope: type constructor or class `Leaf'
+ A data constructor of that name is in scope; did you mean -XDataKinds?
readFail001.hs:38:41:
Not in scope: type constructor or class `Leaf'
+ A data constructor of that name is in scope; did you mean -XDataKinds?
readFail001.hs:87:11: Not in scope: `x'
diff --git a/testsuite/tests/parser/should_fail/readFail003.stderr b/testsuite/tests/parser/should_fail/readFail003.stderr
index 7ef9ce150e..fe8ce00577 100644
--- a/testsuite/tests/parser/should_fail/readFail003.stderr
+++ b/testsuite/tests/parser/should_fail/readFail003.stderr
@@ -1,12 +1,36 @@
-
-readFail003.hs:4:27:
- Occurs check: cannot construct the infinite type:
- t0 = (t0, [a0], [a1])
- In the expression: a
- In a pattern binding:
- ~(a, b, c)
- | nullity b = a
- | nullity c = a
- | otherwise = a
- where
- nullity = null
+
+readFail003.hs:4:27:
+ Occurs check: cannot construct the infinite type:
+ t0 = (t0, [a0], [a1])
+ In the expression: a
+ In a pattern binding:
+ ~(a, b, c)
+ | nullity b = a
+ | nullity c = a
+ | otherwise = a
+ where
+ nullity = null
+
+readFail003.hs:5:27:
+ Occurs check: cannot construct the infinite type:
+ t0 = (t0, [a0], [a1])
+ In the expression: a
+ In a pattern binding:
+ ~(a, b, c)
+ | nullity b = a
+ | nullity c = a
+ | otherwise = a
+ where
+ nullity = null
+
+readFail003.hs:6:27:
+ Occurs check: cannot construct the infinite type:
+ t0 = (t0, [a0], [a1])
+ In the expression: a
+ In a pattern binding:
+ ~(a, b, c)
+ | nullity b = a
+ | nullity c = a
+ | otherwise = a
+ where
+ nullity = null
diff --git a/testsuite/tests/parser/should_fail/readFail035.stderr b/testsuite/tests/parser/should_fail/readFail035.stderr
index 05f2d864ac..f0489b45eb 100644
--- a/testsuite/tests/parser/should_fail/readFail035.stderr
+++ b/testsuite/tests/parser/should_fail/readFail035.stderr
@@ -1,4 +1,4 @@
-
-readFail035.hs:6:1:
- `Foo' has no constructors (-XEmptyDataDecls permits this)
- In the data type declaration for `Foo'
+
+readFail035.hs:6:1:
+ `Foo' has no constructors (-XEmptyDataDecls permits this)
+ In the data declaration for `Foo'
diff --git a/testsuite/tests/parser/should_fail/readFail036.stderr b/testsuite/tests/parser/should_fail/readFail036.stderr
index 8c89f29e34..088f0a9975 100644
--- a/testsuite/tests/parser/should_fail/readFail036.stderr
+++ b/testsuite/tests/parser/should_fail/readFail036.stderr
@@ -1,4 +1,5 @@
-readFail036.hs:4:1:
- Illegal kind signature for `a'
+readFail036.hs:4:16:
+ Illegal kind signature: `*'
Perhaps you intended to use -XKindSignatures
+ In the data type declaration for `Foo'
diff --git a/testsuite/tests/parser/should_fail/readFail043.hs b/testsuite/tests/parser/should_fail/readFail043.hs
index e6304bea9a..65e00b36bd 100644
--- a/testsuite/tests/parser/should_fail/readFail043.hs
+++ b/testsuite/tests/parser/should_fail/readFail043.hs
@@ -7,7 +7,7 @@ import GHC.Exts
foo = [ ()
| x <- [1..10]
- , then group by x
+ , then group by x using groupWith
, then group by x using groupWith
, then group using inits
]
diff --git a/testsuite/tests/parser/should_fail/readFail043.stderr b/testsuite/tests/parser/should_fail/readFail043.stderr
index 1b2b1abc15..b132bef957 100644
--- a/testsuite/tests/parser/should_fail/readFail043.stderr
+++ b/testsuite/tests/parser/should_fail/readFail043.stderr
@@ -7,6 +7,8 @@ readFail043.hs:10:20: Not in scope: `by'
readFail043.hs:10:23: Not in scope: `x'
+readFail043.hs:10:25: Not in scope: `using'
+
readFail043.hs:11:9:
Unexpected transform statement in a list comprehension
Use -XTransformListComp
diff --git a/testsuite/tests/perf/compiler/T3064.hs b/testsuite/tests/perf/compiler/T3064.hs
index 328da45976..7b45883871 100644
--- a/testsuite/tests/perf/compiler/T3064.hs
+++ b/testsuite/tests/perf/compiler/T3064.hs
@@ -60,4 +60,22 @@ runCtxM action = runReaderT (unResourceT action) Ctx
test14 :: IO ()
test14 = runCA(newRgn(newRgn(newRgn(newRgn(newRgn(newRgn(newRgn(newRgn(
- newRgn(newRgn(newRgn(newRgn(return())))))))))))))
+ newRgn(newRgn(newRgn(newRgn(return())))))))))))))
+
+{-
+test28 :: IO ()
+test28 = runCA(newRgn(newRgn(newRgn(newRgn(newRgn(newRgn(newRgn(newRgn(
+ newRgn(newRgn(newRgn(newRgn(
+ newRgn(newRgn(newRgn(newRgn(newRgn(newRgn(newRgn(newRgn(
+ newRgn(newRgn(newRgn(newRgn(return())))))))))))))))))))))))))
+
+test56 :: IO ()
+test56 = runCA(newRgn(newRgn(newRgn(newRgn(newRgn(newRgn(newRgn(newRgn(
+ newRgn(newRgn(newRgn(newRgn(
+ newRgn(newRgn(newRgn(newRgn(newRgn(newRgn(newRgn(newRgn(
+ newRgn(newRgn(newRgn(newRgn(
+ newRgn(newRgn(newRgn(newRgn(newRgn(newRgn(newRgn(newRgn(
+ newRgn(newRgn(newRgn(newRgn(
+ newRgn(newRgn(newRgn(newRgn(newRgn(newRgn(newRgn(newRgn(
+ newRgn(newRgn(newRgn(newRgn(return())))))))))))))))))))))))))))))))))))))))))))))))))
+-}
diff --git a/testsuite/tests/perf/compiler/T5321FD.hs b/testsuite/tests/perf/compiler/T5321FD.hs
new file mode 100644
index 0000000000..6e10939837
--- /dev/null
+++ b/testsuite/tests/perf/compiler/T5321FD.hs
@@ -0,0 +1,102 @@
+{-# OPTIONS_GHC -fcontext-stack=1000 #-}
+{-# LANGUAGE
+ FlexibleContexts, FlexibleInstances, FunctionalDependencies,
+ MultiParamTypeClasses, OverlappingInstances, TypeSynonymInstances,
+ TypeOperators, UndecidableInstances, TypeFamilies #-}
+module T5321FD where
+
+-------- USES FUNCTIONAL DEPENDENCIES -------------
+
+-- Our running example, for simplicity's sake, is a type-level map of a
+-- single function. For reference, here is the code for a simple
+-- value-level map of a single function.
+
+-- vfoo = id
+-- mapfoo (x : xs) = vfoo x : mapfoo xs
+-- mapfoo [] = []
+
+-- Because Haskell is a lazy language, this runs in O(n) time and constant stack.
+
+-- We now lift map to the type level, to operate over HLists.
+
+-- First, the basic HList types
+
+infixr 3 :*
+data x :* xs = x :* xs deriving Show
+data HNil = HNil deriving Show
+
+-- Next, a large boring HList
+
+-- Adds ten cells
+addData x = i :* i :* d :* d :* s :*
+ i :* i :* d :* d :* s :*
+ x
+ where i = 1 :: Int
+ d = 1 :: Double
+ s = ""
+
+-- Has 70 cells.
+sampleData = addData $ addData $ addData $ addData $ addData $
+ addData $ addData $
+ HNil
+
+-- Next, a simple polymorphic function to map
+
+class Foo x y | x -> y
+ where foo :: x -> y
+ foo = undefined
+
+instance Foo Int Double
+instance Foo Double Int
+instance Foo String String
+
+------------------------
+-- Now, our map
+
+class HMapFoo1 as bs | as -> bs where
+ hMapFoo1 :: as -> bs
+
+instance (Foo a b, HMapFoo1 as bs) => HMapFoo1 (a :* as) (b :* bs) where
+ hMapFoo1 (x :* xs) = foo x :* hMapFoo1 xs
+
+instance HMapFoo1 HNil HNil where
+ hMapFoo1 _ = HNil
+
+-- If we enable the following line, compilation time is ~ 9 seconds.
+
+testHMapFoo1 = hMapFoo1 sampleData
+
+
+------------------------
+class HMapFoo2 acc as bs | acc as -> bs where
+ hMapFoo2 :: acc -> as -> bs
+
+instance (Foo a b, HMapFoo2 (b :* bs) as res) => HMapFoo2 bs (a :* as) res where
+ hMapFoo2 acc (x :* xs) = hMapFoo2 (foo x :* acc) xs
+
+instance HMapFoo2 acc HNil acc where
+ hMapFoo2 acc _ = acc
+
+-- If we enable the following line, compilation time is a much more satisfying ~0.5s.
+
+testHMapFoo2 = hMapFoo2 HNil sampleData
+
+------------------------
+-- But wait, there's trouble on the horizon! Consider the following version:
+
+class HMapFoo3 acc as bs | acc as -> bs where
+ hMapFoo3 :: acc -> as -> bs
+
+instance (HMapFoo3 (b :* bs) as res, Foo a b) => HMapFoo3 bs (a :* as) res where
+ hMapFoo3 acc (x :* xs) = hMapFoo3 (foo x :* acc) xs
+
+instance HMapFoo3 acc HNil acc where
+ hMapFoo3 acc _ = acc
+
+-- The only difference between hMapFoo2 and hMapFoo3 is that the order of
+-- constraints on the inductive case has been reversed, with the
+-- recursive constraint first and the immediately checkable constraint
+-- second. Now, if we enable the following line, compilation time rockets
+-- to ~6s!
+
+testHMapFoo3 = hMapFoo3 HNil sampleData
diff --git a/testsuite/tests/perf/compiler/T5321Fun.hs b/testsuite/tests/perf/compiler/T5321Fun.hs
new file mode 100644
index 0000000000..efd7db770b
--- /dev/null
+++ b/testsuite/tests/perf/compiler/T5321Fun.hs
@@ -0,0 +1,109 @@
+{-# OPTIONS_GHC -fcontext-stack=1000 #-}
+{-# LANGUAGE
+ FlexibleContexts, FlexibleInstances, FunctionalDependencies,
+ MultiParamTypeClasses, OverlappingInstances, TypeSynonymInstances,
+ TypeOperators, UndecidableInstances, TypeFamilies #-}
+module T5321Fun where
+
+-- As the below code demonstrates, the same issues demonstrated with
+-- Functional Dependencies also appear with Type Families, although less
+--horribly, as their code-path seems more optimized in the current
+-- constraint solver:
+
+-- Our running example, for simplicity's sake, is a type-level map of a
+-- single function. For reference, here is the code for a simple
+-- value-level map of a single function.
+
+-- > vfoo = id
+-- > mapfoo (x : xs) = vfoo x : mapfoo xs
+-- > mapfoo [] = []
+
+-- Because Haskell is a lazy language, this runs in O(n) time and constant stack.
+
+-- We now lift map to the type level, to operate over HLists.
+
+-- First, the basic HList types
+
+infixr 3 :*
+data x :* xs = x :* xs deriving Show
+data HNil = HNil deriving Show
+
+-- Next, a large boring HList
+
+-- Adds ten cells
+addData x = i :* i :* d :* d :* s :*
+ i :* i :* d :* d :* s :*
+ x
+ where i = 1 :: Int
+ d = 1 :: Double
+ s = ""
+
+-- Has 70 cells.
+sampleData = addData $ addData $ addData $ addData $ addData $
+ addData $ addData $
+ HNil
+
+
+class TFoo x where
+ type TFooFun x
+ tfoo :: x -> TFooFun x
+ tfoo = undefined
+
+instance TFoo Int where
+ type TFooFun Int = Double
+instance TFoo Double where
+ type TFooFun Double = Int
+instance TFoo String where
+ type TFooFun String = String
+
+class THMapFoo1 as where
+ type THMapFoo1Res as
+ thMapFoo1 :: as -> THMapFoo1Res as
+
+instance (TFoo a, THMapFoo1 as) => THMapFoo1 (a :* as) where
+ type THMapFoo1Res (a :* as) = TFooFun a :* THMapFoo1Res as
+ thMapFoo1 (x :* xs) = tfoo x :* thMapFoo1 xs
+
+instance THMapFoo1 HNil where
+ type THMapFoo1Res HNil = HNil
+ thMapFoo1 _ = HNil
+
+-- The following, when enabled, takes ~3.5s. This demonstrates that slowdown occurs with type families as well.
+
+testTHMapFoo1 = thMapFoo1 sampleData
+
+class THMapFoo2 acc as where
+ type THMapFoo2Res acc as
+ thMapFoo2 :: acc -> as -> THMapFoo2Res acc as
+
+instance (TFoo a, THMapFoo2 (TFooFun a :* acc) as) => THMapFoo2 acc (a :* as) where
+ type THMapFoo2Res acc (a :* as) = THMapFoo2Res (TFooFun a :* acc) as
+ thMapFoo2 acc (x :* xs) = thMapFoo2 (tfoo x :* acc) xs
+
+instance THMapFoo2 acc HNil where
+ type THMapFoo2Res acc HNil = acc
+ thMapFoo2 acc _ = acc
+
+-- The following, when enabled, takes ~0.6s. This demonstrates that the
+-- tail recursive transform fixes the slowdown with type families just as
+-- with fundeps.
+
+testTHMapFoo2 = thMapFoo2 HNil sampleData
+
+class THMapFoo3 acc as where
+ type THMapFoo3Res acc as
+ thMapFoo3 :: acc -> as -> THMapFoo3Res acc as
+
+instance (THMapFoo3 (TFooFun a :* acc) as, TFoo a) => THMapFoo3 acc (a :* as) where
+ type THMapFoo3Res acc (a :* as) = THMapFoo3Res (TFooFun a :* acc) as
+ thMapFoo3 acc (x :* xs) = thMapFoo3 (tfoo x :* acc) xs
+
+instance THMapFoo3 acc HNil where
+ type THMapFoo3Res acc HNil = acc
+ thMapFoo3 acc _ = acc
+
+-- The following, when enabled, also takes ~0.6s. This demonstrates that,
+-- unlike the fundep case, the order of type class constraints does not,
+-- in this instance, affect the performance of type families.
+
+testTHMapFoo3 = thMapFoo3 HNil sampleData
diff --git a/testsuite/tests/perf/compiler/T5631.hs b/testsuite/tests/perf/compiler/T5631.hs
new file mode 100644
index 0000000000..85406154b0
--- /dev/null
+++ b/testsuite/tests/perf/compiler/T5631.hs
@@ -0,0 +1,1120 @@
+{-# OPTIONS_GHC -w #-}
+import Control.Monad(when)
+import System.Exit
+
+-- parser produced by Happy Version 1.18.6
+
+data HappyAbsSyn t14 t15 t16 t17 t18 t19 t20 t21 t22 t23 t24 t25 t26 t27 t28 t29 t30 t31 t32 t33 t34 t35 t36 t37 t38 t39 t40 t41 t42 t43 t44 t45 t46 t47 t48 t49 t50 t51 t52 t53 t54 t55 t56 t57 t58 t59 t60 t61
+ = HappyTerminal (Char)
+ | HappyErrorToken Int
+ | HappyAbsSyn14 t14
+ | HappyAbsSyn15 t15
+ | HappyAbsSyn16 t16
+ | HappyAbsSyn17 t17
+ | HappyAbsSyn18 t18
+ | HappyAbsSyn19 t19
+ | HappyAbsSyn20 t20
+ | HappyAbsSyn21 t21
+ | HappyAbsSyn22 t22
+ | HappyAbsSyn23 t23
+ | HappyAbsSyn24 t24
+ | HappyAbsSyn25 t25
+ | HappyAbsSyn26 t26
+ | HappyAbsSyn27 t27
+ | HappyAbsSyn28 t28
+ | HappyAbsSyn29 t29
+ | HappyAbsSyn30 t30
+ | HappyAbsSyn31 t31
+ | HappyAbsSyn32 t32
+ | HappyAbsSyn33 t33
+ | HappyAbsSyn34 t34
+ | HappyAbsSyn35 t35
+ | HappyAbsSyn36 t36
+ | HappyAbsSyn37 t37
+ | HappyAbsSyn38 t38
+ | HappyAbsSyn39 t39
+ | HappyAbsSyn40 t40
+ | HappyAbsSyn41 t41
+ | HappyAbsSyn42 t42
+ | HappyAbsSyn43 t43
+ | HappyAbsSyn44 t44
+ | HappyAbsSyn45 t45
+ | HappyAbsSyn46 t46
+ | HappyAbsSyn47 t47
+ | HappyAbsSyn48 t48
+ | HappyAbsSyn49 t49
+ | HappyAbsSyn50 t50
+ | HappyAbsSyn51 t51
+ | HappyAbsSyn52 t52
+ | HappyAbsSyn53 t53
+ | HappyAbsSyn54 t54
+ | HappyAbsSyn55 t55
+ | HappyAbsSyn56 t56
+ | HappyAbsSyn57 t57
+ | HappyAbsSyn58 t58
+ | HappyAbsSyn59 t59
+ | HappyAbsSyn60 t60
+ | HappyAbsSyn61 t61
+
+action_0 (62) = happyShift action_22
+action_0 (14) = happyGoto action_66
+action_0 (17) = happyGoto action_12
+action_0 (18) = happyGoto action_13
+action_0 (19) = happyGoto action_14
+action_0 (31) = happyGoto action_15
+action_0 (32) = happyGoto action_16
+action_0 (33) = happyGoto action_17
+action_0 (35) = happyGoto action_18
+action_0 (43) = happyGoto action_19
+action_0 (44) = happyGoto action_20
+action_0 (45) = happyGoto action_21
+action_0 _ = happyFail
+
+action_1 (62) = happyShift action_22
+action_1 (15) = happyGoto action_63
+action_1 (34) = happyGoto action_64
+action_1 (35) = happyGoto action_65
+action_1 _ = happyReduce_32
+
+action_2 (62) = happyShift action_62
+action_2 (16) = happyGoto action_56
+action_2 (25) = happyGoto action_57
+action_2 (36) = happyGoto action_58
+action_2 (46) = happyGoto action_59
+action_2 (53) = happyGoto action_60
+action_2 (60) = happyGoto action_61
+action_2 _ = happyReduce_35
+
+action_3 (62) = happyShift action_22
+action_3 (17) = happyGoto action_55
+action_3 (18) = happyGoto action_13
+action_3 (19) = happyGoto action_14
+action_3 (32) = happyGoto action_16
+action_3 (33) = happyGoto action_17
+action_3 (35) = happyGoto action_18
+action_3 (44) = happyGoto action_20
+action_3 (45) = happyGoto action_21
+action_3 _ = happyFail
+
+action_4 (62) = happyShift action_22
+action_4 (18) = happyGoto action_54
+action_4 (19) = happyGoto action_14
+action_4 (33) = happyGoto action_17
+action_4 (35) = happyGoto action_18
+action_4 (45) = happyGoto action_21
+action_4 _ = happyFail
+
+action_5 (62) = happyShift action_22
+action_5 (19) = happyGoto action_53
+action_5 (35) = happyGoto action_18
+action_5 _ = happyFail
+
+action_6 (62) = happyShift action_52
+action_6 (20) = happyGoto action_47
+action_6 (26) = happyGoto action_48
+action_6 (38) = happyGoto action_49
+action_6 (47) = happyGoto action_50
+action_6 (55) = happyGoto action_51
+action_6 _ = happyFail
+
+action_7 (62) = happyShift action_46
+action_7 (21) = happyGoto action_41
+action_7 (27) = happyGoto action_42
+action_7 (39) = happyGoto action_43
+action_7 (48) = happyGoto action_44
+action_7 (56) = happyGoto action_45
+action_7 _ = happyFail
+
+action_8 (62) = happyShift action_40
+action_8 (22) = happyGoto action_35
+action_8 (28) = happyGoto action_36
+action_8 (40) = happyGoto action_37
+action_8 (49) = happyGoto action_38
+action_8 (57) = happyGoto action_39
+action_8 _ = happyFail
+
+action_9 (62) = happyShift action_34
+action_9 (23) = happyGoto action_29
+action_9 (29) = happyGoto action_30
+action_9 (41) = happyGoto action_31
+action_9 (50) = happyGoto action_32
+action_9 (58) = happyGoto action_33
+action_9 _ = happyFail
+
+action_10 (62) = happyShift action_28
+action_10 (24) = happyGoto action_23
+action_10 (30) = happyGoto action_24
+action_10 (42) = happyGoto action_25
+action_10 (51) = happyGoto action_26
+action_10 (59) = happyGoto action_27
+action_10 _ = happyFail
+
+action_11 (62) = happyShift action_22
+action_11 (17) = happyGoto action_12
+action_11 (18) = happyGoto action_13
+action_11 (19) = happyGoto action_14
+action_11 (31) = happyGoto action_15
+action_11 (32) = happyGoto action_16
+action_11 (33) = happyGoto action_17
+action_11 (35) = happyGoto action_18
+action_11 (43) = happyGoto action_19
+action_11 (44) = happyGoto action_20
+action_11 (45) = happyGoto action_21
+action_11 _ = happyFail
+
+action_12 _ = happyReduce_43
+
+action_13 _ = happyReduce_45
+
+action_14 _ = happyReduce_47
+
+action_15 _ = happyReduce_11
+
+action_16 _ = happyReduce_14
+
+action_17 _ = happyReduce_15
+
+action_18 _ = happyReduce_16
+
+action_19 (62) = happyShift action_22
+action_19 (17) = happyGoto action_86
+action_19 (18) = happyGoto action_13
+action_19 (19) = happyGoto action_14
+action_19 (32) = happyGoto action_16
+action_19 (33) = happyGoto action_17
+action_19 (35) = happyGoto action_18
+action_19 (44) = happyGoto action_20
+action_19 (45) = happyGoto action_21
+action_19 _ = happyReduce_28
+
+action_20 (62) = happyShift action_22
+action_20 (18) = happyGoto action_85
+action_20 (19) = happyGoto action_14
+action_20 (33) = happyGoto action_17
+action_20 (35) = happyGoto action_18
+action_20 (45) = happyGoto action_21
+action_20 _ = happyReduce_29
+
+action_21 (62) = happyShift action_22
+action_21 (19) = happyGoto action_84
+action_21 (35) = happyGoto action_18
+action_21 _ = happyReduce_30
+
+action_22 (63) = happyShift action_83
+action_22 (37) = happyGoto action_79
+action_22 (52) = happyGoto action_80
+action_22 (54) = happyGoto action_81
+action_22 (61) = happyGoto action_82
+action_22 _ = happyReduce_37
+
+action_23 (64) = happyAccept
+action_23 _ = happyFail
+
+action_24 _ = happyReduce_21
+
+action_25 _ = happyReduce_27
+
+action_26 _ = happyReduce_66
+
+action_27 (62) = happyShift action_28
+action_27 (51) = happyGoto action_78
+action_27 _ = happyReduce_42
+
+action_28 (62) = happyShift action_22
+action_28 (19) = happyGoto action_77
+action_28 (35) = happyGoto action_18
+action_28 _ = happyFail
+
+action_29 (64) = happyAccept
+action_29 _ = happyFail
+
+action_30 _ = happyReduce_20
+
+action_31 _ = happyReduce_26
+
+action_32 _ = happyReduce_64
+
+action_33 (62) = happyShift action_34
+action_33 (50) = happyGoto action_76
+action_33 _ = happyReduce_41
+
+action_34 (62) = happyShift action_22
+action_34 (18) = happyGoto action_75
+action_34 (19) = happyGoto action_14
+action_34 (33) = happyGoto action_17
+action_34 (35) = happyGoto action_18
+action_34 (45) = happyGoto action_21
+action_34 _ = happyFail
+
+action_35 (64) = happyAccept
+action_35 _ = happyFail
+
+action_36 _ = happyReduce_19
+
+action_37 _ = happyReduce_25
+
+action_38 _ = happyReduce_62
+
+action_39 (62) = happyShift action_40
+action_39 (49) = happyGoto action_74
+action_39 _ = happyReduce_40
+
+action_40 (62) = happyShift action_22
+action_40 (17) = happyGoto action_73
+action_40 (18) = happyGoto action_13
+action_40 (19) = happyGoto action_14
+action_40 (32) = happyGoto action_16
+action_40 (33) = happyGoto action_17
+action_40 (35) = happyGoto action_18
+action_40 (44) = happyGoto action_20
+action_40 (45) = happyGoto action_21
+action_40 _ = happyFail
+
+action_41 (64) = happyAccept
+action_41 _ = happyFail
+
+action_42 _ = happyReduce_18
+
+action_43 _ = happyReduce_24
+
+action_44 _ = happyReduce_60
+
+action_45 (62) = happyShift action_46
+action_45 (48) = happyGoto action_72
+action_45 _ = happyReduce_39
+
+action_46 (62) = happyShift action_62
+action_46 (16) = happyGoto action_71
+action_46 (25) = happyGoto action_57
+action_46 (36) = happyGoto action_58
+action_46 (46) = happyGoto action_59
+action_46 (53) = happyGoto action_60
+action_46 (60) = happyGoto action_61
+action_46 _ = happyReduce_35
+
+action_47 (64) = happyAccept
+action_47 _ = happyFail
+
+action_48 _ = happyReduce_17
+
+action_49 _ = happyReduce_23
+
+action_50 _ = happyReduce_58
+
+action_51 (62) = happyShift action_52
+action_51 (47) = happyGoto action_70
+action_51 _ = happyReduce_38
+
+action_52 (62) = happyShift action_22
+action_52 (15) = happyGoto action_69
+action_52 (34) = happyGoto action_64
+action_52 (35) = happyGoto action_65
+action_52 _ = happyReduce_32
+
+action_53 (64) = happyAccept
+action_53 _ = happyFail
+
+action_54 (64) = happyAccept
+action_54 _ = happyFail
+
+action_55 (64) = happyAccept
+action_55 _ = happyFail
+
+action_56 (64) = happyAccept
+action_56 _ = happyFail
+
+action_57 _ = happyReduce_13
+
+action_58 _ = happyReduce_22
+
+action_59 _ = happyReduce_68
+
+action_60 _ = happyReduce_34
+
+action_61 (62) = happyShift action_62
+action_61 (46) = happyGoto action_68
+action_61 _ = happyReduce_56
+
+action_62 (63) = happyShift action_67
+action_62 _ = happyFail
+
+action_63 (64) = happyAccept
+action_63 _ = happyFail
+
+action_64 _ = happyReduce_12
+
+action_65 _ = happyReduce_31
+
+action_66 (64) = happyAccept
+action_66 _ = happyFail
+
+action_67 _ = happyReduce_49
+
+action_68 _ = happyReduce_69
+
+action_69 _ = happyReduce_50
+
+action_70 _ = happyReduce_59
+
+action_71 _ = happyReduce_51
+
+action_72 _ = happyReduce_61
+
+action_73 _ = happyReduce_52
+
+action_74 _ = happyReduce_63
+
+action_75 _ = happyReduce_53
+
+action_76 _ = happyReduce_65
+
+action_77 _ = happyReduce_54
+
+action_78 _ = happyReduce_67
+
+action_79 _ = happyReduce_33
+
+action_80 _ = happyReduce_70
+
+action_81 _ = happyReduce_36
+
+action_82 (63) = happyShift action_83
+action_82 (52) = happyGoto action_88
+action_82 _ = happyReduce_57
+
+action_83 (62) = happyShift action_87
+action_83 _ = happyFail
+
+action_84 _ = happyReduce_48
+
+action_85 _ = happyReduce_46
+
+action_86 _ = happyReduce_44
+
+action_87 _ = happyReduce_55
+
+action_88 _ = happyReduce_71
+
+happyReduce_11 = happySpecReduce_1 14 happyReduction_11
+happyReduction_11 (HappyAbsSyn31 happy_var_1)
+ = HappyAbsSyn14
+ (happy_var_1
+ )
+happyReduction_11 _ = notHappyAtAll
+
+happyReduce_12 = happySpecReduce_1 15 happyReduction_12
+happyReduction_12 (HappyAbsSyn34 happy_var_1)
+ = HappyAbsSyn15
+ (happy_var_1
+ )
+happyReduction_12 _ = notHappyAtAll
+
+happyReduce_13 = happySpecReduce_1 16 happyReduction_13
+happyReduction_13 (HappyAbsSyn25 happy_var_1)
+ = HappyAbsSyn16
+ (happy_var_1
+ )
+happyReduction_13 _ = notHappyAtAll
+
+happyReduce_14 = happySpecReduce_1 17 happyReduction_14
+happyReduction_14 (HappyAbsSyn32 happy_var_1)
+ = HappyAbsSyn17
+ (happy_var_1
+ )
+happyReduction_14 _ = notHappyAtAll
+
+happyReduce_15 = happySpecReduce_1 18 happyReduction_15
+happyReduction_15 (HappyAbsSyn33 happy_var_1)
+ = HappyAbsSyn18
+ (happy_var_1
+ )
+happyReduction_15 _ = notHappyAtAll
+
+happyReduce_16 = happySpecReduce_1 19 happyReduction_16
+happyReduction_16 (HappyAbsSyn35 happy_var_1)
+ = HappyAbsSyn19
+ (happy_var_1
+ )
+happyReduction_16 _ = notHappyAtAll
+
+happyReduce_17 = happySpecReduce_1 20 happyReduction_17
+happyReduction_17 (HappyAbsSyn26 happy_var_1)
+ = HappyAbsSyn20
+ (happy_var_1
+ )
+happyReduction_17 _ = notHappyAtAll
+
+happyReduce_18 = happySpecReduce_1 21 happyReduction_18
+happyReduction_18 (HappyAbsSyn27 happy_var_1)
+ = HappyAbsSyn21
+ (happy_var_1
+ )
+happyReduction_18 _ = notHappyAtAll
+
+happyReduce_19 = happySpecReduce_1 22 happyReduction_19
+happyReduction_19 (HappyAbsSyn28 happy_var_1)
+ = HappyAbsSyn22
+ (happy_var_1
+ )
+happyReduction_19 _ = notHappyAtAll
+
+happyReduce_20 = happySpecReduce_1 23 happyReduction_20
+happyReduction_20 (HappyAbsSyn29 happy_var_1)
+ = HappyAbsSyn23
+ (happy_var_1
+ )
+happyReduction_20 _ = notHappyAtAll
+
+happyReduce_21 = happySpecReduce_1 24 happyReduction_21
+happyReduction_21 (HappyAbsSyn30 happy_var_1)
+ = HappyAbsSyn24
+ (happy_var_1
+ )
+happyReduction_21 _ = notHappyAtAll
+
+happyReduce_22 = happySpecReduce_1 25 happyReduction_22
+happyReduction_22 (HappyAbsSyn36 happy_var_1)
+ = HappyAbsSyn25
+ (happy_var_1
+ )
+happyReduction_22 _ = notHappyAtAll
+
+happyReduce_23 = happySpecReduce_1 26 happyReduction_23
+happyReduction_23 (HappyAbsSyn38 happy_var_1)
+ = HappyAbsSyn26
+ (happy_var_1
+ )
+happyReduction_23 _ = notHappyAtAll
+
+happyReduce_24 = happySpecReduce_1 27 happyReduction_24
+happyReduction_24 (HappyAbsSyn39 happy_var_1)
+ = HappyAbsSyn27
+ (happy_var_1
+ )
+happyReduction_24 _ = notHappyAtAll
+
+happyReduce_25 = happySpecReduce_1 28 happyReduction_25
+happyReduction_25 (HappyAbsSyn40 happy_var_1)
+ = HappyAbsSyn28
+ (happy_var_1
+ )
+happyReduction_25 _ = notHappyAtAll
+
+happyReduce_26 = happySpecReduce_1 29 happyReduction_26
+happyReduction_26 (HappyAbsSyn41 happy_var_1)
+ = HappyAbsSyn29
+ (happy_var_1
+ )
+happyReduction_26 _ = notHappyAtAll
+
+happyReduce_27 = happySpecReduce_1 30 happyReduction_27
+happyReduction_27 (HappyAbsSyn42 happy_var_1)
+ = HappyAbsSyn30
+ (happy_var_1
+ )
+happyReduction_27 _ = notHappyAtAll
+
+happyReduce_28 = happySpecReduce_1 31 happyReduction_28
+happyReduction_28 (HappyAbsSyn43 happy_var_1)
+ = HappyAbsSyn31
+ (reverse happy_var_1
+ )
+happyReduction_28 _ = notHappyAtAll
+
+happyReduce_29 = happySpecReduce_1 32 happyReduction_29
+happyReduction_29 (HappyAbsSyn44 happy_var_1)
+ = HappyAbsSyn32
+ (reverse happy_var_1
+ )
+happyReduction_29 _ = notHappyAtAll
+
+happyReduce_30 = happySpecReduce_1 33 happyReduction_30
+happyReduction_30 (HappyAbsSyn45 happy_var_1)
+ = HappyAbsSyn33
+ (reverse happy_var_1
+ )
+happyReduction_30 _ = notHappyAtAll
+
+happyReduce_31 = happySpecReduce_1 34 happyReduction_31
+happyReduction_31 (HappyAbsSyn35 happy_var_1)
+ = HappyAbsSyn34
+ (happy_var_1
+ )
+happyReduction_31 _ = notHappyAtAll
+
+happyReduce_32 = happySpecReduce_0 34 happyReduction_32
+happyReduction_32 = HappyAbsSyn34
+ ([]
+ )
+
+happyReduce_33 = happySpecReduce_2 35 happyReduction_33
+happyReduction_33 (HappyAbsSyn37 happy_var_2)
+ (HappyTerminal happy_var_1)
+ = HappyAbsSyn35
+ (happy_var_1 : happy_var_2
+ )
+happyReduction_33 _ _ = notHappyAtAll
+
+happyReduce_34 = happySpecReduce_1 36 happyReduction_34
+happyReduction_34 (HappyAbsSyn53 happy_var_1)
+ = HappyAbsSyn36
+ (happy_var_1
+ )
+happyReduction_34 _ = notHappyAtAll
+
+happyReduce_35 = happySpecReduce_0 36 happyReduction_35
+happyReduction_35 = HappyAbsSyn36
+ ([]
+ )
+
+happyReduce_36 = happySpecReduce_1 37 happyReduction_36
+happyReduction_36 (HappyAbsSyn54 happy_var_1)
+ = HappyAbsSyn37
+ (happy_var_1
+ )
+happyReduction_36 _ = notHappyAtAll
+
+happyReduce_37 = happySpecReduce_0 37 happyReduction_37
+happyReduction_37 = HappyAbsSyn37
+ ([]
+ )
+
+happyReduce_38 = happySpecReduce_1 38 happyReduction_38
+happyReduction_38 (HappyAbsSyn55 happy_var_1)
+ = HappyAbsSyn38
+ (reverse happy_var_1
+ )
+happyReduction_38 _ = notHappyAtAll
+
+happyReduce_39 = happySpecReduce_1 39 happyReduction_39
+happyReduction_39 (HappyAbsSyn56 happy_var_1)
+ = HappyAbsSyn39
+ (reverse happy_var_1
+ )
+happyReduction_39 _ = notHappyAtAll
+
+happyReduce_40 = happySpecReduce_1 40 happyReduction_40
+happyReduction_40 (HappyAbsSyn57 happy_var_1)
+ = HappyAbsSyn40
+ (reverse happy_var_1
+ )
+happyReduction_40 _ = notHappyAtAll
+
+happyReduce_41 = happySpecReduce_1 41 happyReduction_41
+happyReduction_41 (HappyAbsSyn58 happy_var_1)
+ = HappyAbsSyn41
+ (reverse happy_var_1
+ )
+happyReduction_41 _ = notHappyAtAll
+
+happyReduce_42 = happySpecReduce_1 42 happyReduction_42
+happyReduction_42 (HappyAbsSyn59 happy_var_1)
+ = HappyAbsSyn42
+ (reverse happy_var_1
+ )
+happyReduction_42 _ = notHappyAtAll
+
+happyReduce_43 = happySpecReduce_1 43 happyReduction_43
+happyReduction_43 (HappyAbsSyn17 happy_var_1)
+ = HappyAbsSyn43
+ ([happy_var_1]
+ )
+happyReduction_43 _ = notHappyAtAll
+
+happyReduce_44 = happySpecReduce_2 43 happyReduction_44
+happyReduction_44 (HappyAbsSyn17 happy_var_2)
+ (HappyAbsSyn43 happy_var_1)
+ = HappyAbsSyn43
+ (happy_var_2 : happy_var_1
+ )
+happyReduction_44 _ _ = notHappyAtAll
+
+happyReduce_45 = happySpecReduce_1 44 happyReduction_45
+happyReduction_45 (HappyAbsSyn18 happy_var_1)
+ = HappyAbsSyn44
+ ([happy_var_1]
+ )
+happyReduction_45 _ = notHappyAtAll
+
+happyReduce_46 = happySpecReduce_2 44 happyReduction_46
+happyReduction_46 (HappyAbsSyn18 happy_var_2)
+ (HappyAbsSyn44 happy_var_1)
+ = HappyAbsSyn44
+ (happy_var_2 : happy_var_1
+ )
+happyReduction_46 _ _ = notHappyAtAll
+
+happyReduce_47 = happySpecReduce_1 45 happyReduction_47
+happyReduction_47 (HappyAbsSyn19 happy_var_1)
+ = HappyAbsSyn45
+ ([happy_var_1]
+ )
+happyReduction_47 _ = notHappyAtAll
+
+happyReduce_48 = happySpecReduce_2 45 happyReduction_48
+happyReduction_48 (HappyAbsSyn19 happy_var_2)
+ (HappyAbsSyn45 happy_var_1)
+ = HappyAbsSyn45
+ (happy_var_2 : happy_var_1
+ )
+happyReduction_48 _ _ = notHappyAtAll
+
+happyReduce_49 = happySpecReduce_2 46 happyReduction_49
+happyReduction_49 _
+ (HappyTerminal happy_var_1)
+ = HappyAbsSyn46
+ (happy_var_1
+ )
+happyReduction_49 _ _ = notHappyAtAll
+
+happyReduce_50 = happySpecReduce_2 47 happyReduction_50
+happyReduction_50 _
+ (HappyTerminal happy_var_1)
+ = HappyAbsSyn47
+ (happy_var_1
+ )
+happyReduction_50 _ _ = notHappyAtAll
+
+happyReduce_51 = happySpecReduce_2 48 happyReduction_51
+happyReduction_51 _
+ (HappyTerminal happy_var_1)
+ = HappyAbsSyn48
+ (happy_var_1
+ )
+happyReduction_51 _ _ = notHappyAtAll
+
+happyReduce_52 = happySpecReduce_2 49 happyReduction_52
+happyReduction_52 _
+ (HappyTerminal happy_var_1)
+ = HappyAbsSyn49
+ (happy_var_1
+ )
+happyReduction_52 _ _ = notHappyAtAll
+
+happyReduce_53 = happySpecReduce_2 50 happyReduction_53
+happyReduction_53 _
+ (HappyTerminal happy_var_1)
+ = HappyAbsSyn50
+ (happy_var_1
+ )
+happyReduction_53 _ _ = notHappyAtAll
+
+happyReduce_54 = happySpecReduce_2 51 happyReduction_54
+happyReduction_54 _
+ (HappyTerminal happy_var_1)
+ = HappyAbsSyn51
+ (happy_var_1
+ )
+happyReduction_54 _ _ = notHappyAtAll
+
+happyReduce_55 = happySpecReduce_2 52 happyReduction_55
+happyReduction_55 (HappyTerminal happy_var_2)
+ _
+ = HappyAbsSyn52
+ (happy_var_2
+ )
+happyReduction_55 _ _ = notHappyAtAll
+
+happyReduce_56 = happySpecReduce_1 53 happyReduction_56
+happyReduction_56 (HappyAbsSyn60 happy_var_1)
+ = HappyAbsSyn53
+ (reverse happy_var_1
+ )
+happyReduction_56 _ = notHappyAtAll
+
+happyReduce_57 = happySpecReduce_1 54 happyReduction_57
+happyReduction_57 (HappyAbsSyn61 happy_var_1)
+ = HappyAbsSyn54
+ (reverse happy_var_1
+ )
+happyReduction_57 _ = notHappyAtAll
+
+happyReduce_58 = happySpecReduce_1 55 happyReduction_58
+happyReduction_58 (HappyAbsSyn47 happy_var_1)
+ = HappyAbsSyn55
+ ([happy_var_1]
+ )
+happyReduction_58 _ = notHappyAtAll
+
+happyReduce_59 = happySpecReduce_2 55 happyReduction_59
+happyReduction_59 (HappyAbsSyn47 happy_var_2)
+ (HappyAbsSyn55 happy_var_1)
+ = HappyAbsSyn55
+ (happy_var_2 : happy_var_1
+ )
+happyReduction_59 _ _ = notHappyAtAll
+
+happyReduce_60 = happySpecReduce_1 56 happyReduction_60
+happyReduction_60 (HappyAbsSyn48 happy_var_1)
+ = HappyAbsSyn56
+ ([happy_var_1]
+ )
+happyReduction_60 _ = notHappyAtAll
+
+happyReduce_61 = happySpecReduce_2 56 happyReduction_61
+happyReduction_61 (HappyAbsSyn48 happy_var_2)
+ (HappyAbsSyn56 happy_var_1)
+ = HappyAbsSyn56
+ (happy_var_2 : happy_var_1
+ )
+happyReduction_61 _ _ = notHappyAtAll
+
+happyReduce_62 = happySpecReduce_1 57 happyReduction_62
+happyReduction_62 (HappyAbsSyn49 happy_var_1)
+ = HappyAbsSyn57
+ ([happy_var_1]
+ )
+happyReduction_62 _ = notHappyAtAll
+
+happyReduce_63 = happySpecReduce_2 57 happyReduction_63
+happyReduction_63 (HappyAbsSyn49 happy_var_2)
+ (HappyAbsSyn57 happy_var_1)
+ = HappyAbsSyn57
+ (happy_var_2 : happy_var_1
+ )
+happyReduction_63 _ _ = notHappyAtAll
+
+happyReduce_64 = happySpecReduce_1 58 happyReduction_64
+happyReduction_64 (HappyAbsSyn50 happy_var_1)
+ = HappyAbsSyn58
+ ([happy_var_1]
+ )
+happyReduction_64 _ = notHappyAtAll
+
+happyReduce_65 = happySpecReduce_2 58 happyReduction_65
+happyReduction_65 (HappyAbsSyn50 happy_var_2)
+ (HappyAbsSyn58 happy_var_1)
+ = HappyAbsSyn58
+ (happy_var_2 : happy_var_1
+ )
+happyReduction_65 _ _ = notHappyAtAll
+
+happyReduce_66 = happySpecReduce_1 59 happyReduction_66
+happyReduction_66 (HappyAbsSyn51 happy_var_1)
+ = HappyAbsSyn59
+ ([happy_var_1]
+ )
+happyReduction_66 _ = notHappyAtAll
+
+happyReduce_67 = happySpecReduce_2 59 happyReduction_67
+happyReduction_67 (HappyAbsSyn51 happy_var_2)
+ (HappyAbsSyn59 happy_var_1)
+ = HappyAbsSyn59
+ (happy_var_2 : happy_var_1
+ )
+happyReduction_67 _ _ = notHappyAtAll
+
+happyReduce_68 = happySpecReduce_1 60 happyReduction_68
+happyReduction_68 (HappyAbsSyn46 happy_var_1)
+ = HappyAbsSyn60
+ ([happy_var_1]
+ )
+happyReduction_68 _ = notHappyAtAll
+
+happyReduce_69 = happySpecReduce_2 60 happyReduction_69
+happyReduction_69 (HappyAbsSyn46 happy_var_2)
+ (HappyAbsSyn60 happy_var_1)
+ = HappyAbsSyn60
+ (happy_var_2 : happy_var_1
+ )
+happyReduction_69 _ _ = notHappyAtAll
+
+happyReduce_70 = happySpecReduce_1 61 happyReduction_70
+happyReduction_70 (HappyAbsSyn52 happy_var_1)
+ = HappyAbsSyn61
+ ([happy_var_1]
+ )
+happyReduction_70 _ = notHappyAtAll
+
+happyReduce_71 = happySpecReduce_2 61 happyReduction_71
+happyReduction_71 (HappyAbsSyn52 happy_var_2)
+ (HappyAbsSyn61 happy_var_1)
+ = HappyAbsSyn61
+ (happy_var_2 : happy_var_1
+ )
+happyReduction_71 _ _ = notHappyAtAll
+
+happyNewToken action sts stk [] =
+ action 64 64 notHappyAtAll (HappyState action) sts stk []
+
+happyNewToken action sts stk (tk:tks) =
+ let cont i = action i i tk (HappyState action) sts stk tks in
+ case tk of {
+ 'a' -> cont 62;
+ 'b' -> cont 63;
+ _ -> happyError' (tk:tks)
+ }
+
+happyError_ tk tks = happyError' (tk:tks)
+
+happyThen :: () => Maybe a -> (a -> Maybe b) -> Maybe b
+happyThen = ((>>=))
+happyReturn :: () => a -> Maybe a
+happyReturn = (return)
+happyThen1 m k tks = ((>>=)) m (\a -> k a tks)
+happyReturn1 :: () => a -> b -> Maybe a
+happyReturn1 = \a tks -> (return) a
+happyError' :: () => [(Char)] -> Maybe a
+happyError' = happyError
+
+test0 tks = happySomeParser where
+ happySomeParser = happyThen (happyParse action_0 tks) (\x -> case x of {HappyAbsSyn14 z -> happyReturn z; _other -> notHappyAtAll })
+
+test1 tks = happySomeParser where
+ happySomeParser = happyThen (happyParse action_1 tks) (\x -> case x of {HappyAbsSyn15 z -> happyReturn z; _other -> notHappyAtAll })
+
+test2 tks = happySomeParser where
+ happySomeParser = happyThen (happyParse action_2 tks) (\x -> case x of {HappyAbsSyn16 z -> happyReturn z; _other -> notHappyAtAll })
+
+test3 tks = happySomeParser where
+ happySomeParser = happyThen (happyParse action_3 tks) (\x -> case x of {HappyAbsSyn17 z -> happyReturn z; _other -> notHappyAtAll })
+
+test4 tks = happySomeParser where
+ happySomeParser = happyThen (happyParse action_4 tks) (\x -> case x of {HappyAbsSyn18 z -> happyReturn z; _other -> notHappyAtAll })
+
+test5 tks = happySomeParser where
+ happySomeParser = happyThen (happyParse action_5 tks) (\x -> case x of {HappyAbsSyn19 z -> happyReturn z; _other -> notHappyAtAll })
+
+test6 tks = happySomeParser where
+ happySomeParser = happyThen (happyParse action_6 tks) (\x -> case x of {HappyAbsSyn20 z -> happyReturn z; _other -> notHappyAtAll })
+
+test7 tks = happySomeParser where
+ happySomeParser = happyThen (happyParse action_7 tks) (\x -> case x of {HappyAbsSyn21 z -> happyReturn z; _other -> notHappyAtAll })
+
+test8 tks = happySomeParser where
+ happySomeParser = happyThen (happyParse action_8 tks) (\x -> case x of {HappyAbsSyn22 z -> happyReturn z; _other -> notHappyAtAll })
+
+test9 tks = happySomeParser where
+ happySomeParser = happyThen (happyParse action_9 tks) (\x -> case x of {HappyAbsSyn23 z -> happyReturn z; _other -> notHappyAtAll })
+
+test10 tks = happySomeParser where
+ happySomeParser = happyThen (happyParse action_10 tks) (\x -> case x of {HappyAbsSyn24 z -> happyReturn z; _other -> notHappyAtAll })
+
+happySeq = happyDontSeq
+
+
+happyError _ = Nothing
+
+tests = [ test1 "" == Just ""
+ , test1 "a" == Just "a"
+ , test1 "ab" == Nothing
+ , test1 "aba" == Just "aa"
+ , test1 "abab" == Nothing
+
+ , test2 "" == Just ""
+ , test2 "a" == Nothing
+ , test2 "ab" == Just "a"
+ , test2 "aba" == Nothing
+ , test2 "abab" == Just "aa"
+ ]
+
+main = do let failed = filter (not . snd) (zip [0..] tests)
+ when (not (null failed)) $
+ do putStrLn ("Failed tests: " ++ show (map fst failed))
+ exitFailure
+ putStrLn "Tests passed."
+{-# LINE 1 "templates/GenericTemplate.hs" #-}
+{-# LINE 1 "templates/GenericTemplate.hs" #-}
+{-# LINE 1 "<built-in>" #-}
+{-# LINE 1 "<command-line>" #-}
+{-# LINE 1 "templates/GenericTemplate.hs" #-}
+-- Id: GenericTemplate.hs,v 1.26 2005/01/14 14:47:22 simonmar Exp
+
+{-# LINE 30 "templates/GenericTemplate.hs" #-}
+
+
+
+
+
+
+
+
+{-# LINE 51 "templates/GenericTemplate.hs" #-}
+
+{-# LINE 61 "templates/GenericTemplate.hs" #-}
+
+{-# LINE 70 "templates/GenericTemplate.hs" #-}
+
+infixr 9 `HappyStk`
+data HappyStk a = HappyStk a (HappyStk a)
+
+-----------------------------------------------------------------------------
+-- starting the parse
+
+happyParse start_state = happyNewToken start_state notHappyAtAll notHappyAtAll
+
+-----------------------------------------------------------------------------
+-- Accepting the parse
+
+-- If the current token is (1), it means we've just accepted a partial
+-- parse (a %partial parser). We must ignore the saved token on the top of
+-- the stack in this case.
+happyAccept (1) tk st sts (_ `HappyStk` ans `HappyStk` _) =
+ happyReturn1 ans
+happyAccept j tk st sts (HappyStk ans _) =
+ (happyReturn1 ans)
+
+-----------------------------------------------------------------------------
+-- Arrays only: do the next action
+
+{-# LINE 148 "templates/GenericTemplate.hs" #-}
+
+-----------------------------------------------------------------------------
+-- HappyState data type (not arrays)
+
+
+
+newtype HappyState b c = HappyState
+ (Int -> -- token number
+ Int -> -- token number (yes, again)
+ b -> -- token semantic value
+ HappyState b c -> -- current state
+ [HappyState b c] -> -- state stack
+ c)
+
+
+
+-----------------------------------------------------------------------------
+-- Shifting a token
+
+happyShift new_state (1) tk st sts stk@(x `HappyStk` _) =
+ let (i) = (case x of { HappyErrorToken (i) -> i }) in
+-- trace "shifting the error token" $
+ new_state i i tk (HappyState (new_state)) ((st):(sts)) (stk)
+
+happyShift new_state i tk st sts stk =
+ happyNewToken new_state ((st):(sts)) ((HappyTerminal (tk))`HappyStk`stk)
+
+-- happyReduce is specialised for the common cases.
+
+happySpecReduce_0 i fn (1) tk st sts stk
+ = happyFail (1) tk st sts stk
+happySpecReduce_0 nt fn j tk st@((HappyState (action))) sts stk
+ = action nt j tk st ((st):(sts)) (fn `HappyStk` stk)
+
+happySpecReduce_1 i fn (1) tk st sts stk
+ = happyFail (1) tk st sts stk
+happySpecReduce_1 nt fn j tk _ sts@(((st@(HappyState (action))):(_))) (v1`HappyStk`stk')
+ = let r = fn v1 in
+ happySeq r (action nt j tk st sts (r `HappyStk` stk'))
+
+happySpecReduce_2 i fn (1) tk st sts stk
+ = happyFail (1) tk st sts stk
+happySpecReduce_2 nt fn j tk _ ((_):(sts@(((st@(HappyState (action))):(_))))) (v1`HappyStk`v2`HappyStk`stk')
+ = let r = fn v1 v2 in
+ happySeq r (action nt j tk st sts (r `HappyStk` stk'))
+
+happySpecReduce_3 i fn (1) tk st sts stk
+ = happyFail (1) tk st sts stk
+happySpecReduce_3 nt fn j tk _ ((_):(((_):(sts@(((st@(HappyState (action))):(_))))))) (v1`HappyStk`v2`HappyStk`v3`HappyStk`stk')
+ = let r = fn v1 v2 v3 in
+ happySeq r (action nt j tk st sts (r `HappyStk` stk'))
+
+happyReduce k i fn (1) tk st sts stk
+ = happyFail (1) tk st sts stk
+happyReduce k nt fn j tk st sts stk
+ = case happyDrop (k - ((1) :: Int)) sts of
+ sts1@(((st1@(HappyState (action))):(_))) ->
+ let r = fn stk in -- it doesn't hurt to always seq here...
+ happyDoSeq r (action nt j tk st1 sts1 r)
+
+happyMonadReduce k nt fn (1) tk st sts stk
+ = happyFail (1) tk st sts stk
+happyMonadReduce k nt fn j tk st sts stk =
+ happyThen1 (fn stk tk) (\r -> action nt j tk st1 sts1 (r `HappyStk` drop_stk))
+ where (sts1@(((st1@(HappyState (action))):(_)))) = happyDrop k ((st):(sts))
+ drop_stk = happyDropStk k stk
+
+happyMonad2Reduce k nt fn (1) tk st sts stk
+ = happyFail (1) tk st sts stk
+happyMonad2Reduce k nt fn j tk st sts stk =
+ happyThen1 (fn stk tk) (\r -> happyNewToken new_state sts1 (r `HappyStk` drop_stk))
+ where (sts1@(((st1@(HappyState (action))):(_)))) = happyDrop k ((st):(sts))
+ drop_stk = happyDropStk k stk
+
+
+
+
+
+ new_state = action
+
+
+happyDrop (0) l = l
+happyDrop n ((_):(t)) = happyDrop (n - ((1) :: Int)) t
+
+happyDropStk (0) l = l
+happyDropStk n (x `HappyStk` xs) = happyDropStk (n - ((1)::Int)) xs
+
+-----------------------------------------------------------------------------
+-- Moving to a new state after a reduction
+
+{-# LINE 246 "templates/GenericTemplate.hs" #-}
+happyGoto action j tk st = action j j tk (HappyState action)
+
+
+-----------------------------------------------------------------------------
+-- Error recovery ((1) is the error token)
+
+-- parse error if we are in recovery and we fail again
+happyFail (1) tk old_st _ stk =
+-- trace "failing" $
+ happyError_ tk
+
+{- We don't need state discarding for our restricted implementation of
+ "error". In fact, it can cause some bogus parses, so I've disabled it
+ for now --SDM
+
+-- discard a state
+happyFail (1) tk old_st (((HappyState (action))):(sts))
+ (saved_tok `HappyStk` _ `HappyStk` stk) =
+-- trace ("discarding state, depth " ++ show (length stk)) $
+ action (1) (1) tk (HappyState (action)) sts ((saved_tok`HappyStk`stk))
+-}
+
+-- Enter error recovery: generate an error token,
+-- save the old token and carry on.
+happyFail i tk (HappyState (action)) sts stk =
+-- trace "entering error recovery" $
+ action (1) (1) tk (HappyState (action)) sts ( (HappyErrorToken (i)) `HappyStk` stk)
+
+-- Internal happy errors:
+
+notHappyAtAll :: a
+notHappyAtAll = error "Internal Happy error\n"
+
+-----------------------------------------------------------------------------
+-- Hack to get the typechecker to accept our action functions
+
+
+
+
+
+
+
+-----------------------------------------------------------------------------
+-- Seq-ing. If the --strict flag is given, then Happy emits
+-- happySeq = happyDoSeq
+-- otherwise it emits
+-- happySeq = happyDontSeq
+
+happyDoSeq, happyDontSeq :: a -> b -> b
+happyDoSeq a b = a `seq` b
+happyDontSeq a b = b
+
+-----------------------------------------------------------------------------
+-- Don't inline any functions from the template. GHC has a nasty habit
+-- of deciding to inline happyGoto everywhere, which increases the size of
+-- the generated parser quite a bit.
+
+{-# LINE 311 "templates/GenericTemplate.hs" #-}
+{-# NOINLINE happyShift #-}
+{-# NOINLINE happySpecReduce_0 #-}
+{-# NOINLINE happySpecReduce_1 #-}
+{-# NOINLINE happySpecReduce_2 #-}
+{-# NOINLINE happySpecReduce_3 #-}
+{-# NOINLINE happyReduce #-}
+{-# NOINLINE happyMonadReduce #-}
+{-# NOINLINE happyGoto #-}
+{-# NOINLINE happyFail #-}
+
+-- end of Happy Template.
diff --git a/testsuite/tests/perf/compiler/T5642.hs b/testsuite/tests/perf/compiler/T5642.hs
new file mode 100644
index 0000000000..9e82f6a83f
--- /dev/null
+++ b/testsuite/tests/perf/compiler/T5642.hs
@@ -0,0 +1,985 @@
+{-# LANGUAGE TypeOperators #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE DeriveGeneric #-}
+
+module GenBigTypes where
+
+ import GHC.Generics
+
+ data BigSum =
+ C0 | C1 | C2 | C3 | C4 | C5 | C6 | C7 | C8 | C9
+ | C10 | C11 | C12 | C13 | C14 | C15 | C16 | C17 | C18 | C19
+ | C20 | C21 | C22 | C23 | C24 | C25 | C26 | C27 | C28 | C29
+ | C30 | C31 | C32 | C33 | C34 | C35 | C36 | C37 | C38 | C39
+ | C40 | C41 | C42 | C43 | C44 | C45 | C46 | C47 | C48 | C49
+ | C50 | C51 | C52 | C53 | C54 | C55 | C56 | C57 | C58 | C59
+ | C60 | C61 | C62 | C63 | C64 | C65 | C66 | C67 | C68 | C69
+ | C70 | C71 | C72 | C73 | C74 | C75 | C76 | C77 | C78 | C79
+ | C80 | C81 | C82 | C83 | C84 | C85 | C86 | C87 | C88 | C89
+ | C90 | C91 | C92 | C93 | C94 | C95 | C96 | C97 | C98 | C99
+{-
+ | C100 | C101 | C102 | C103 | C104 | C105 | C106 | C107 | C108 | C109
+ | C110 | C111 | C112 | C113 | C114 | C115 | C116 | C117 | C118 | C119
+ | C120 | C121 | C122 | C123 | C124 | C125 | C126 | C127 | C128 | C129
+ | C130 | C131 | C132 | C133 | C134 | C135 | C136 | C137 | C138 | C139
+ | C140 | C141 | C142 | C143 | C144 | C145 | C146 | C147 | C148 | C149
+ | C150 | C151 | C152 | C153 | C154 | C155 | C156 | C157 | C158 | C159
+ | C160 | C161 | C162 | C163 | C164 | C165 | C166 | C167 | C168 | C169
+ | C170 | C171 | C172 | C173 | C174 | C175 | C176 | C177 | C178 | C179
+ | C180 | C181 | C182 | C183 | C184 | C185 | C186 | C187 | C188 | C189
+ | C190 | C191 | C192 | C193 | C194 | C195 | C196 | C197 | C198 | C199
+ | C200 | C201 | C202 | C203 | C204 | C205 | C206 | C207 | C208 | C209
+ | C210 | C211 | C212 | C213 | C214 | C215 | C216 | C217 | C218 | C219
+ | C220 | C221 | C222 | C223 | C224 | C225 | C226 | C227 | C228 | C229
+ | C230 | C231 | C232 | C233 | C234 | C235 | C236 | C237 | C238 | C239
+ | C240 | C241 | C242 | C243 | C244 | C245 | C246 | C247 | C248 | C249
+ | C250 | C251 | C252 | C253 | C254 | C255 | C256 | C257 | C258 | C259
+ | C260 | C261 | C262 | C263 | C264 | C265 | C266 | C267 | C268 | C269
+ | C270 | C271 | C272 | C273 | C274 | C275 | C276 | C277 | C278 | C279
+ | C280 | C281 | C282 | C283 | C284 | C285 | C286 | C287 | C288 | C289
+ | C290 | C291 | C292 | C293 | C294 | C295 | C296 | C297 | C298 | C299
+ --deriving Generic
+-}
+
+ instance Generic BigSum where
+ type Rep BigSum = Rep_BigSum
+ from C0 = M1 (L1 (L1 (L1 (L1 (L1 (L1 (M1 U1)))))))
+ from C1 = M1 (L1 (L1 (L1 (L1 (L1 (R1 (L1 (M1 U1))))))))
+ from C2 = M1 (L1 (L1 (L1 (L1 (L1 (R1 (R1 (M1 U1))))))))
+ from C3 = M1 (L1 (L1 (L1 (L1 (R1 (L1 (M1 U1)))))))
+ from C4 = M1 (L1 (L1 (L1 (L1 (R1 (R1 (L1 (M1 U1))))))))
+ from C5 = M1 (L1 (L1 (L1 (L1 (R1 (R1 (R1 (M1 U1))))))))
+ from C6 = M1 (L1 (L1 (L1 (R1 (L1 (L1 (M1 U1)))))))
+ from C7 = M1 (L1 (L1 (L1 (R1 (L1 (R1 (L1 (M1 U1))))))))
+ from C8 = M1 (L1 (L1 (L1 (R1 (L1 (R1 (R1 (M1 U1))))))))
+ from C9 = M1 (L1 (L1 (L1 (R1 (R1 (L1 (M1 U1)))))))
+ from C10 = M1 (L1 (L1 (L1 (R1 (R1 (R1 (L1 (M1 U1))))))))
+ from C11 = M1 (L1 (L1 (L1 (R1 (R1 (R1 (R1 (M1 U1))))))))
+ from C12 = M1 (L1 (L1 (R1 (L1 (L1 (L1 (M1 U1)))))))
+ from C13 = M1 (L1 (L1 (R1 (L1 (L1 (R1 (L1 (M1 U1))))))))
+ from C14 = M1 (L1 (L1 (R1 (L1 (L1 (R1 (R1 (M1 U1))))))))
+ from C15 = M1 (L1 (L1 (R1 (L1 (R1 (L1 (M1 U1)))))))
+ from C16 = M1 (L1 (L1 (R1 (L1 (R1 (R1 (L1 (M1 U1))))))))
+ from C17 = M1 (L1 (L1 (R1 (L1 (R1 (R1 (R1 (M1 U1))))))))
+ from C18 = M1 (L1 (L1 (R1 (R1 (L1 (L1 (M1 U1)))))))
+ from C19 = M1 (L1 (L1 (R1 (R1 (L1 (R1 (L1 (M1 U1))))))))
+ from C20 = M1 (L1 (L1 (R1 (R1 (L1 (R1 (R1 (M1 U1))))))))
+ from C21 = M1 (L1 (L1 (R1 (R1 (R1 (L1 (L1 (M1 U1))))))))
+ from C22 = M1 (L1 (L1 (R1 (R1 (R1 (L1 (R1 (M1 U1))))))))
+ from C23 = M1 (L1 (L1 (R1 (R1 (R1 (R1 (L1 (M1 U1))))))))
+ from C24 = M1 (L1 (L1 (R1 (R1 (R1 (R1 (R1 (M1 U1))))))))
+ from C25 = M1 (L1 (R1 (L1 (L1 (L1 (L1 (M1 U1)))))))
+ from C26 = M1 (L1 (R1 (L1 (L1 (L1 (R1 (L1 (M1 U1))))))))
+ from C27 = M1 (L1 (R1 (L1 (L1 (L1 (R1 (R1 (M1 U1))))))))
+ from C28 = M1 (L1 (R1 (L1 (L1 (R1 (L1 (M1 U1)))))))
+ from C29 = M1 (L1 (R1 (L1 (L1 (R1 (R1 (L1 (M1 U1))))))))
+ from C30 = M1 (L1 (R1 (L1 (L1 (R1 (R1 (R1 (M1 U1))))))))
+ from C31 = M1 (L1 (R1 (L1 (R1 (L1 (L1 (M1 U1)))))))
+ from C32 = M1 (L1 (R1 (L1 (R1 (L1 (R1 (L1 (M1 U1))))))))
+ from C33 = M1 (L1 (R1 (L1 (R1 (L1 (R1 (R1 (M1 U1))))))))
+ from C34 = M1 (L1 (R1 (L1 (R1 (R1 (L1 (M1 U1)))))))
+ from C35 = M1 (L1 (R1 (L1 (R1 (R1 (R1 (L1 (M1 U1))))))))
+ from C36 = M1 (L1 (R1 (L1 (R1 (R1 (R1 (R1 (M1 U1))))))))
+ from C37 = M1 (L1 (R1 (R1 (L1 (L1 (L1 (M1 U1)))))))
+ from C38 = M1 (L1 (R1 (R1 (L1 (L1 (R1 (L1 (M1 U1))))))))
+ from C39 = M1 (L1 (R1 (R1 (L1 (L1 (R1 (R1 (M1 U1))))))))
+ from C40 = M1 (L1 (R1 (R1 (L1 (R1 (L1 (M1 U1)))))))
+ from C41 = M1 (L1 (R1 (R1 (L1 (R1 (R1 (L1 (M1 U1))))))))
+ from C42 = M1 (L1 (R1 (R1 (L1 (R1 (R1 (R1 (M1 U1))))))))
+ from C43 = M1 (L1 (R1 (R1 (R1 (L1 (L1 (M1 U1)))))))
+ from C44 = M1 (L1 (R1 (R1 (R1 (L1 (R1 (L1 (M1 U1))))))))
+ from C45 = M1 (L1 (R1 (R1 (R1 (L1 (R1 (R1 (M1 U1))))))))
+ from C46 = M1 (L1 (R1 (R1 (R1 (R1 (L1 (L1 (M1 U1))))))))
+ from C47 = M1 (L1 (R1 (R1 (R1 (R1 (L1 (R1 (M1 U1))))))))
+ from C48 = M1 (L1 (R1 (R1 (R1 (R1 (R1 (L1 (M1 U1))))))))
+ from C49 = M1 (L1 (R1 (R1 (R1 (R1 (R1 (R1 (M1 U1))))))))
+ from C50 = M1 (R1 (L1 (L1 (L1 (L1 (L1 (M1 U1)))))))
+ from C51 = M1 (R1 (L1 (L1 (L1 (L1 (R1 (L1 (M1 U1))))))))
+ from C52 = M1 (R1 (L1 (L1 (L1 (L1 (R1 (R1 (M1 U1))))))))
+ from C53 = M1 (R1 (L1 (L1 (L1 (R1 (L1 (M1 U1)))))))
+ from C54 = M1 (R1 (L1 (L1 (L1 (R1 (R1 (L1 (M1 U1))))))))
+ from C55 = M1 (R1 (L1 (L1 (L1 (R1 (R1 (R1 (M1 U1))))))))
+ from C56 = M1 (R1 (L1 (L1 (R1 (L1 (L1 (M1 U1)))))))
+ from C57 = M1 (R1 (L1 (L1 (R1 (L1 (R1 (L1 (M1 U1))))))))
+ from C58 = M1 (R1 (L1 (L1 (R1 (L1 (R1 (R1 (M1 U1))))))))
+ from C59 = M1 (R1 (L1 (L1 (R1 (R1 (L1 (M1 U1)))))))
+ from C60 = M1 (R1 (L1 (L1 (R1 (R1 (R1 (L1 (M1 U1))))))))
+ from C61 = M1 (R1 (L1 (L1 (R1 (R1 (R1 (R1 (M1 U1))))))))
+ from C62 = M1 (R1 (L1 (R1 (L1 (L1 (L1 (M1 U1)))))))
+ from C63 = M1 (R1 (L1 (R1 (L1 (L1 (R1 (L1 (M1 U1))))))))
+ from C64 = M1 (R1 (L1 (R1 (L1 (L1 (R1 (R1 (M1 U1))))))))
+ from C65 = M1 (R1 (L1 (R1 (L1 (R1 (L1 (M1 U1)))))))
+ from C66 = M1 (R1 (L1 (R1 (L1 (R1 (R1 (L1 (M1 U1))))))))
+ from C67 = M1 (R1 (L1 (R1 (L1 (R1 (R1 (R1 (M1 U1))))))))
+ from C68 = M1 (R1 (L1 (R1 (R1 (L1 (L1 (M1 U1)))))))
+ from C69 = M1 (R1 (L1 (R1 (R1 (L1 (R1 (L1 (M1 U1))))))))
+ from C70 = M1 (R1 (L1 (R1 (R1 (L1 (R1 (R1 (M1 U1))))))))
+ from C71 = M1 (R1 (L1 (R1 (R1 (R1 (L1 (L1 (M1 U1))))))))
+ from C72 = M1 (R1 (L1 (R1 (R1 (R1 (L1 (R1 (M1 U1))))))))
+ from C73 = M1 (R1 (L1 (R1 (R1 (R1 (R1 (L1 (M1 U1))))))))
+ from C74 = M1 (R1 (L1 (R1 (R1 (R1 (R1 (R1 (M1 U1))))))))
+ from C75 = M1 (R1 (R1 (L1 (L1 (L1 (L1 (M1 U1)))))))
+ from C76 = M1 (R1 (R1 (L1 (L1 (L1 (R1 (L1 (M1 U1))))))))
+ from C77 = M1 (R1 (R1 (L1 (L1 (L1 (R1 (R1 (M1 U1))))))))
+ from C78 = M1 (R1 (R1 (L1 (L1 (R1 (L1 (M1 U1)))))))
+ from C79 = M1 (R1 (R1 (L1 (L1 (R1 (R1 (L1 (M1 U1))))))))
+ from C80 = M1 (R1 (R1 (L1 (L1 (R1 (R1 (R1 (M1 U1))))))))
+ from C81 = M1 (R1 (R1 (L1 (R1 (L1 (L1 (M1 U1)))))))
+ from C82 = M1 (R1 (R1 (L1 (R1 (L1 (R1 (L1 (M1 U1))))))))
+ from C83 = M1 (R1 (R1 (L1 (R1 (L1 (R1 (R1 (M1 U1))))))))
+ from C84 = M1 (R1 (R1 (L1 (R1 (R1 (L1 (M1 U1)))))))
+ from C85 = M1 (R1 (R1 (L1 (R1 (R1 (R1 (L1 (M1 U1))))))))
+ from C86 = M1 (R1 (R1 (L1 (R1 (R1 (R1 (R1 (M1 U1))))))))
+ from C87 = M1 (R1 (R1 (R1 (L1 (L1 (L1 (M1 U1)))))))
+ from C88 = M1 (R1 (R1 (R1 (L1 (L1 (R1 (L1 (M1 U1))))))))
+ from C89 = M1 (R1 (R1 (R1 (L1 (L1 (R1 (R1 (M1 U1))))))))
+ from C90 = M1 (R1 (R1 (R1 (L1 (R1 (L1 (M1 U1)))))))
+ from C91 = M1 (R1 (R1 (R1 (L1 (R1 (R1 (L1 (M1 U1))))))))
+ from C92 = M1 (R1 (R1 (R1 (L1 (R1 (R1 (R1 (M1 U1))))))))
+ from C93 = M1 (R1 (R1 (R1 (R1 (L1 (L1 (M1 U1)))))))
+ from C94 = M1 (R1 (R1 (R1 (R1 (L1 (R1 (L1 (M1 U1))))))))
+ from C95 = M1 (R1 (R1 (R1 (R1 (L1 (R1 (R1 (M1 U1))))))))
+ from C96 = M1 (R1 (R1 (R1 (R1 (R1 (L1 (L1 (M1 U1))))))))
+ from C97 = M1 (R1 (R1 (R1 (R1 (R1 (L1 (R1 (M1 U1))))))))
+ from C98 = M1 (R1 (R1 (R1 (R1 (R1 (R1 (L1 (M1 U1))))))))
+ from C99 = M1 (R1 (R1 (R1 (R1 (R1 (R1 (R1 (M1 U1))))))))
+ to (M1 (L1 (L1 (L1 (L1 (L1 (L1 (M1 U1)))))))) = C0
+ to (M1 (L1 (L1 (L1 (L1 (L1 (R1 (L1 (M1 U1))))))))) = C1
+ to (M1 (L1 (L1 (L1 (L1 (L1 (R1 (R1 (M1 U1))))))))) = C2
+ to (M1 (L1 (L1 (L1 (L1 (R1 (L1 (M1 U1)))))))) = C3
+ to (M1 (L1 (L1 (L1 (L1 (R1 (R1 (L1 (M1 U1))))))))) = C4
+ to (M1 (L1 (L1 (L1 (L1 (R1 (R1 (R1 (M1 U1))))))))) = C5
+ to (M1 (L1 (L1 (L1 (R1 (L1 (L1 (M1 U1)))))))) = C6
+ to (M1 (L1 (L1 (L1 (R1 (L1 (R1 (L1 (M1 U1))))))))) = C7
+ to (M1 (L1 (L1 (L1 (R1 (L1 (R1 (R1 (M1 U1))))))))) = C8
+ to (M1 (L1 (L1 (L1 (R1 (R1 (L1 (M1 U1)))))))) = C9
+ to (M1 (L1 (L1 (L1 (R1 (R1 (R1 (L1 (M1 U1))))))))) = C10
+ to (M1 (L1 (L1 (L1 (R1 (R1 (R1 (R1 (M1 U1))))))))) = C11
+ to (M1 (L1 (L1 (R1 (L1 (L1 (L1 (M1 U1)))))))) = C12
+ to (M1 (L1 (L1 (R1 (L1 (L1 (R1 (L1 (M1 U1))))))))) = C13
+ to (M1 (L1 (L1 (R1 (L1 (L1 (R1 (R1 (M1 U1))))))))) = C14
+ to (M1 (L1 (L1 (R1 (L1 (R1 (L1 (M1 U1)))))))) = C15
+ to (M1 (L1 (L1 (R1 (L1 (R1 (R1 (L1 (M1 U1))))))))) = C16
+ to (M1 (L1 (L1 (R1 (L1 (R1 (R1 (R1 (M1 U1))))))))) = C17
+ to (M1 (L1 (L1 (R1 (R1 (L1 (L1 (M1 U1)))))))) = C18
+ to (M1 (L1 (L1 (R1 (R1 (L1 (R1 (L1 (M1 U1))))))))) = C19
+ to (M1 (L1 (L1 (R1 (R1 (L1 (R1 (R1 (M1 U1))))))))) = C20
+ to (M1 (L1 (L1 (R1 (R1 (R1 (L1 (L1 (M1 U1))))))))) = C21
+ to (M1 (L1 (L1 (R1 (R1 (R1 (L1 (R1 (M1 U1))))))))) = C22
+ to (M1 (L1 (L1 (R1 (R1 (R1 (R1 (L1 (M1 U1))))))))) = C23
+ to (M1 (L1 (L1 (R1 (R1 (R1 (R1 (R1 (M1 U1))))))))) = C24
+ to (M1 (L1 (R1 (L1 (L1 (L1 (L1 (M1 U1)))))))) = C25
+ to (M1 (L1 (R1 (L1 (L1 (L1 (R1 (L1 (M1 U1))))))))) = C26
+ to (M1 (L1 (R1 (L1 (L1 (L1 (R1 (R1 (M1 U1))))))))) = C27
+ to (M1 (L1 (R1 (L1 (L1 (R1 (L1 (M1 U1)))))))) = C28
+ to (M1 (L1 (R1 (L1 (L1 (R1 (R1 (L1 (M1 U1))))))))) = C29
+ to (M1 (L1 (R1 (L1 (L1 (R1 (R1 (R1 (M1 U1))))))))) = C30
+ to (M1 (L1 (R1 (L1 (R1 (L1 (L1 (M1 U1)))))))) = C31
+ to (M1 (L1 (R1 (L1 (R1 (L1 (R1 (L1 (M1 U1))))))))) = C32
+ to (M1 (L1 (R1 (L1 (R1 (L1 (R1 (R1 (M1 U1))))))))) = C33
+ to (M1 (L1 (R1 (L1 (R1 (R1 (L1 (M1 U1)))))))) = C34
+ to (M1 (L1 (R1 (L1 (R1 (R1 (R1 (L1 (M1 U1))))))))) = C35
+ to (M1 (L1 (R1 (L1 (R1 (R1 (R1 (R1 (M1 U1))))))))) = C36
+ to (M1 (L1 (R1 (R1 (L1 (L1 (L1 (M1 U1)))))))) = C37
+ to (M1 (L1 (R1 (R1 (L1 (L1 (R1 (L1 (M1 U1))))))))) = C38
+ to (M1 (L1 (R1 (R1 (L1 (L1 (R1 (R1 (M1 U1))))))))) = C39
+ to (M1 (L1 (R1 (R1 (L1 (R1 (L1 (M1 U1)))))))) = C40
+ to (M1 (L1 (R1 (R1 (L1 (R1 (R1 (L1 (M1 U1))))))))) = C41
+ to (M1 (L1 (R1 (R1 (L1 (R1 (R1 (R1 (M1 U1))))))))) = C42
+ to (M1 (L1 (R1 (R1 (R1 (L1 (L1 (M1 U1)))))))) = C43
+ to (M1 (L1 (R1 (R1 (R1 (L1 (R1 (L1 (M1 U1))))))))) = C44
+ to (M1 (L1 (R1 (R1 (R1 (L1 (R1 (R1 (M1 U1))))))))) = C45
+ to (M1 (L1 (R1 (R1 (R1 (R1 (L1 (L1 (M1 U1))))))))) = C46
+ to (M1 (L1 (R1 (R1 (R1 (R1 (L1 (R1 (M1 U1))))))))) = C47
+ to (M1 (L1 (R1 (R1 (R1 (R1 (R1 (L1 (M1 U1))))))))) = C48
+ to (M1 (L1 (R1 (R1 (R1 (R1 (R1 (R1 (M1 U1))))))))) = C49
+ to (M1 (R1 (L1 (L1 (L1 (L1 (L1 (M1 U1)))))))) = C50
+ to (M1 (R1 (L1 (L1 (L1 (L1 (R1 (L1 (M1 U1))))))))) = C51
+ to (M1 (R1 (L1 (L1 (L1 (L1 (R1 (R1 (M1 U1))))))))) = C52
+ to (M1 (R1 (L1 (L1 (L1 (R1 (L1 (M1 U1)))))))) = C53
+ to (M1 (R1 (L1 (L1 (L1 (R1 (R1 (L1 (M1 U1))))))))) = C54
+ to (M1 (R1 (L1 (L1 (L1 (R1 (R1 (R1 (M1 U1))))))))) = C55
+ to (M1 (R1 (L1 (L1 (R1 (L1 (L1 (M1 U1)))))))) = C56
+ to (M1 (R1 (L1 (L1 (R1 (L1 (R1 (L1 (M1 U1))))))))) = C57
+ to (M1 (R1 (L1 (L1 (R1 (L1 (R1 (R1 (M1 U1))))))))) = C58
+ to (M1 (R1 (L1 (L1 (R1 (R1 (L1 (M1 U1)))))))) = C59
+ to (M1 (R1 (L1 (L1 (R1 (R1 (R1 (L1 (M1 U1))))))))) = C60
+ to (M1 (R1 (L1 (L1 (R1 (R1 (R1 (R1 (M1 U1))))))))) = C61
+ to (M1 (R1 (L1 (R1 (L1 (L1 (L1 (M1 U1)))))))) = C62
+ to (M1 (R1 (L1 (R1 (L1 (L1 (R1 (L1 (M1 U1))))))))) = C63
+ to (M1 (R1 (L1 (R1 (L1 (L1 (R1 (R1 (M1 U1))))))))) = C64
+ to (M1 (R1 (L1 (R1 (L1 (R1 (L1 (M1 U1)))))))) = C65
+ to (M1 (R1 (L1 (R1 (L1 (R1 (R1 (L1 (M1 U1))))))))) = C66
+ to (M1 (R1 (L1 (R1 (L1 (R1 (R1 (R1 (M1 U1))))))))) = C67
+ to (M1 (R1 (L1 (R1 (R1 (L1 (L1 (M1 U1)))))))) = C68
+ to (M1 (R1 (L1 (R1 (R1 (L1 (R1 (L1 (M1 U1))))))))) = C69
+ to (M1 (R1 (L1 (R1 (R1 (L1 (R1 (R1 (M1 U1))))))))) = C70
+ to (M1 (R1 (L1 (R1 (R1 (R1 (L1 (L1 (M1 U1))))))))) = C71
+ to (M1 (R1 (L1 (R1 (R1 (R1 (L1 (R1 (M1 U1))))))))) = C72
+ to (M1 (R1 (L1 (R1 (R1 (R1 (R1 (L1 (M1 U1))))))))) = C73
+ to (M1 (R1 (L1 (R1 (R1 (R1 (R1 (R1 (M1 U1))))))))) = C74
+ to (M1 (R1 (R1 (L1 (L1 (L1 (L1 (M1 U1)))))))) = C75
+ to (M1 (R1 (R1 (L1 (L1 (L1 (R1 (L1 (M1 U1))))))))) = C76
+ to (M1 (R1 (R1 (L1 (L1 (L1 (R1 (R1 (M1 U1))))))))) = C77
+ to (M1 (R1 (R1 (L1 (L1 (R1 (L1 (M1 U1)))))))) = C78
+ to (M1 (R1 (R1 (L1 (L1 (R1 (R1 (L1 (M1 U1))))))))) = C79
+ to (M1 (R1 (R1 (L1 (L1 (R1 (R1 (R1 (M1 U1))))))))) = C80
+ to (M1 (R1 (R1 (L1 (R1 (L1 (L1 (M1 U1)))))))) = C81
+ to (M1 (R1 (R1 (L1 (R1 (L1 (R1 (L1 (M1 U1))))))))) = C82
+ to (M1 (R1 (R1 (L1 (R1 (L1 (R1 (R1 (M1 U1))))))))) = C83
+ to (M1 (R1 (R1 (L1 (R1 (R1 (L1 (M1 U1)))))))) = C84
+ to (M1 (R1 (R1 (L1 (R1 (R1 (R1 (L1 (M1 U1))))))))) = C85
+ to (M1 (R1 (R1 (L1 (R1 (R1 (R1 (R1 (M1 U1))))))))) = C86
+ to (M1 (R1 (R1 (R1 (L1 (L1 (L1 (M1 U1)))))))) = C87
+ to (M1 (R1 (R1 (R1 (L1 (L1 (R1 (L1 (M1 U1))))))))) = C88
+ to (M1 (R1 (R1 (R1 (L1 (L1 (R1 (R1 (M1 U1))))))))) = C89
+ to (M1 (R1 (R1 (R1 (L1 (R1 (L1 (M1 U1)))))))) = C90
+ to (M1 (R1 (R1 (R1 (L1 (R1 (R1 (L1 (M1 U1))))))))) = C91
+ to (M1 (R1 (R1 (R1 (L1 (R1 (R1 (R1 (M1 U1))))))))) = C92
+ to (M1 (R1 (R1 (R1 (R1 (L1 (L1 (M1 U1)))))))) = C93
+ to (M1 (R1 (R1 (R1 (R1 (L1 (R1 (L1 (M1 U1))))))))) = C94
+ to (M1 (R1 (R1 (R1 (R1 (L1 (R1 (R1 (M1 U1))))))))) = C95
+ to (M1 (R1 (R1 (R1 (R1 (R1 (L1 (L1 (M1 U1))))))))) = C96
+ to (M1 (R1 (R1 (R1 (R1 (R1 (L1 (R1 (M1 U1))))))))) = C97
+ to (M1 (R1 (R1 (R1 (R1 (R1 (R1 (L1 (M1 U1))))))))) = C98
+ to (M1 (R1 (R1 (R1 (R1 (R1 (R1 (R1 (M1 U1))))))))) = C99
+
+ instance Datatype D1BigSum where
+ datatypeName _ = "BigSum"
+ moduleName _ = "GenBigTypes"
+
+ instance Constructor C1_0BigSum where
+ conName _ = "C0"
+
+ instance Constructor C1_1BigSum where
+ conName _ = "C1"
+
+ instance Constructor C1_2BigSum where
+ conName _ = "C2"
+
+ instance Constructor C1_3BigSum where
+ conName _ = "C3"
+
+ instance Constructor C1_4BigSum where
+ conName _ = "C4"
+
+ instance Constructor C1_5BigSum where
+ conName _ = "C5"
+
+ instance Constructor C1_6BigSum where
+ conName _ = "C6"
+
+ instance Constructor C1_7BigSum where
+ conName _ = "C7"
+
+ instance Constructor C1_8BigSum where
+ conName _ = "C8"
+
+ instance Constructor C1_9BigSum where
+ conName _ = "C9"
+
+ instance Constructor C1_10BigSum where
+ conName _ = "C10"
+
+ instance Constructor C1_11BigSum where
+ conName _ = "C11"
+
+ instance Constructor C1_12BigSum where
+ conName _ = "C12"
+
+ instance Constructor C1_13BigSum where
+ conName _ = "C13"
+
+ instance Constructor C1_14BigSum where
+ conName _ = "C14"
+
+ instance Constructor C1_15BigSum where
+ conName _ = "C15"
+
+ instance Constructor C1_16BigSum where
+ conName _ = "C16"
+
+ instance Constructor C1_17BigSum where
+ conName _ = "C17"
+
+ instance Constructor C1_18BigSum where
+ conName _ = "C18"
+
+ instance Constructor C1_19BigSum where
+ conName _ = "C19"
+
+ instance Constructor C1_20BigSum where
+ conName _ = "C20"
+
+ instance Constructor C1_21BigSum where
+ conName _ = "C21"
+
+ instance Constructor C1_22BigSum where
+ conName _ = "C22"
+
+ instance Constructor C1_23BigSum where
+ conName _ = "C23"
+
+ instance Constructor C1_24BigSum where
+ conName _ = "C24"
+
+ instance Constructor C1_25BigSum where
+ conName _ = "C25"
+
+ instance Constructor C1_26BigSum where
+ conName _ = "C26"
+
+ instance Constructor C1_27BigSum where
+ conName _ = "C27"
+
+ instance Constructor C1_28BigSum where
+ conName _ = "C28"
+
+ instance Constructor C1_29BigSum where
+ conName _ = "C29"
+
+ instance Constructor C1_30BigSum where
+ conName _ = "C30"
+
+ instance Constructor C1_31BigSum where
+ conName _ = "C31"
+
+ instance Constructor C1_32BigSum where
+ conName _ = "C32"
+
+ instance Constructor C1_33BigSum where
+ conName _ = "C33"
+
+ instance Constructor C1_34BigSum where
+ conName _ = "C34"
+
+ instance Constructor C1_35BigSum where
+ conName _ = "C35"
+
+ instance Constructor C1_36BigSum where
+ conName _ = "C36"
+
+ instance Constructor C1_37BigSum where
+ conName _ = "C37"
+
+ instance Constructor C1_38BigSum where
+ conName _ = "C38"
+
+ instance Constructor C1_39BigSum where
+ conName _ = "C39"
+
+ instance Constructor C1_40BigSum where
+ conName _ = "C40"
+
+ instance Constructor C1_41BigSum where
+ conName _ = "C41"
+
+ instance Constructor C1_42BigSum where
+ conName _ = "C42"
+
+ instance Constructor C1_43BigSum where
+ conName _ = "C43"
+
+ instance Constructor C1_44BigSum where
+ conName _ = "C44"
+
+ instance Constructor C1_45BigSum where
+ conName _ = "C45"
+
+ instance Constructor C1_46BigSum where
+ conName _ = "C46"
+
+ instance Constructor C1_47BigSum where
+ conName _ = "C47"
+
+ instance Constructor C1_48BigSum where
+ conName _ = "C48"
+
+ instance Constructor C1_49BigSum where
+ conName _ = "C49"
+
+ instance Constructor C1_50BigSum where
+ conName _ = "C50"
+
+ instance Constructor C1_51BigSum where
+ conName _ = "C51"
+
+ instance Constructor C1_52BigSum where
+ conName _ = "C52"
+
+ instance Constructor C1_53BigSum where
+ conName _ = "C53"
+
+ instance Constructor C1_54BigSum where
+ conName _ = "C54"
+
+ instance Constructor C1_55BigSum where
+ conName _ = "C55"
+
+ instance Constructor C1_56BigSum where
+ conName _ = "C56"
+
+ instance Constructor C1_57BigSum where
+ conName _ = "C57"
+
+ instance Constructor C1_58BigSum where
+ conName _ = "C58"
+
+ instance Constructor C1_59BigSum where
+ conName _ = "C59"
+
+ instance Constructor C1_60BigSum where
+ conName _ = "C60"
+
+ instance Constructor C1_61BigSum where
+ conName _ = "C61"
+
+ instance Constructor C1_62BigSum where
+ conName _ = "C62"
+
+ instance Constructor C1_63BigSum where
+ conName _ = "C63"
+
+ instance Constructor C1_64BigSum where
+ conName _ = "C64"
+
+ instance Constructor C1_65BigSum where
+ conName _ = "C65"
+
+ instance Constructor C1_66BigSum where
+ conName _ = "C66"
+
+ instance Constructor C1_67BigSum where
+ conName _ = "C67"
+
+ instance Constructor C1_68BigSum where
+ conName _ = "C68"
+
+ instance Constructor C1_69BigSum where
+ conName _ = "C69"
+
+ instance Constructor C1_70BigSum where
+ conName _ = "C70"
+
+ instance Constructor C1_71BigSum where
+ conName _ = "C71"
+
+ instance Constructor C1_72BigSum where
+ conName _ = "C72"
+
+ instance Constructor C1_73BigSum where
+ conName _ = "C73"
+
+ instance Constructor C1_74BigSum where
+ conName _ = "C74"
+
+ instance Constructor C1_75BigSum where
+ conName _ = "C75"
+
+ instance Constructor C1_76BigSum where
+ conName _ = "C76"
+
+ instance Constructor C1_77BigSum where
+ conName _ = "C77"
+
+ instance Constructor C1_78BigSum where
+ conName _ = "C78"
+
+ instance Constructor C1_79BigSum where
+ conName _ = "C79"
+
+ instance Constructor C1_80BigSum where
+ conName _ = "C80"
+
+ instance Constructor C1_81BigSum where
+ conName _ = "C81"
+
+ instance Constructor C1_82BigSum where
+ conName _ = "C82"
+
+ instance Constructor C1_83BigSum where
+ conName _ = "C83"
+
+ instance Constructor C1_84BigSum where
+ conName _ = "C84"
+
+ instance Constructor C1_85BigSum where
+ conName _ = "C85"
+
+ instance Constructor C1_86BigSum where
+ conName _ = "C86"
+
+ instance Constructor C1_87BigSum where
+ conName _ = "C87"
+
+ instance Constructor C1_88BigSum where
+ conName _ = "C88"
+
+ instance Constructor C1_89BigSum where
+ conName _ = "C89"
+
+ instance Constructor C1_90BigSum where
+ conName _ = "C90"
+
+ instance Constructor C1_91BigSum where
+ conName _ = "C91"
+
+ instance Constructor C1_92BigSum where
+ conName _ = "C92"
+
+ instance Constructor C1_93BigSum where
+ conName _ = "C93"
+
+ instance Constructor C1_94BigSum where
+ conName _ = "C94"
+
+ instance Constructor C1_95BigSum where
+ conName _ = "C95"
+
+ instance Constructor C1_96BigSum where
+ conName _ = "C96"
+
+ instance Constructor C1_97BigSum where
+ conName _ = "C97"
+
+ instance Constructor C1_98BigSum where
+ conName _ = "C98"
+
+ instance Constructor C1_99BigSum where
+ conName _ = "C99"
+
+ data D1BigSum
+ data C1_0BigSum
+ data C1_1BigSum
+ data C1_2BigSum
+ data C1_3BigSum
+ data C1_4BigSum
+ data C1_5BigSum
+ data C1_6BigSum
+ data C1_7BigSum
+ data C1_8BigSum
+ data C1_9BigSum
+ data C1_10BigSum
+ data C1_11BigSum
+ data C1_12BigSum
+ data C1_13BigSum
+ data C1_14BigSum
+ data C1_15BigSum
+ data C1_16BigSum
+ data C1_17BigSum
+ data C1_18BigSum
+ data C1_19BigSum
+ data C1_20BigSum
+ data C1_21BigSum
+ data C1_22BigSum
+ data C1_23BigSum
+ data C1_24BigSum
+ data C1_25BigSum
+ data C1_26BigSum
+ data C1_27BigSum
+ data C1_28BigSum
+ data C1_29BigSum
+ data C1_30BigSum
+ data C1_31BigSum
+ data C1_32BigSum
+ data C1_33BigSum
+ data C1_34BigSum
+ data C1_35BigSum
+ data C1_36BigSum
+ data C1_37BigSum
+ data C1_38BigSum
+ data C1_39BigSum
+ data C1_40BigSum
+ data C1_41BigSum
+ data C1_42BigSum
+ data C1_43BigSum
+ data C1_44BigSum
+ data C1_45BigSum
+ data C1_46BigSum
+ data C1_47BigSum
+ data C1_48BigSum
+ data C1_49BigSum
+ data C1_50BigSum
+ data C1_51BigSum
+ data C1_52BigSum
+ data C1_53BigSum
+ data C1_54BigSum
+ data C1_55BigSum
+ data C1_56BigSum
+ data C1_57BigSum
+ data C1_58BigSum
+ data C1_59BigSum
+ data C1_60BigSum
+ data C1_61BigSum
+ data C1_62BigSum
+ data C1_63BigSum
+ data C1_64BigSum
+ data C1_65BigSum
+ data C1_66BigSum
+ data C1_67BigSum
+ data C1_68BigSum
+ data C1_69BigSum
+ data C1_70BigSum
+ data C1_71BigSum
+ data C1_72BigSum
+ data C1_73BigSum
+ data C1_74BigSum
+ data C1_75BigSum
+ data C1_76BigSum
+ data C1_77BigSum
+ data C1_78BigSum
+ data C1_79BigSum
+ data C1_80BigSum
+ data C1_81BigSum
+ data C1_82BigSum
+ data C1_83BigSum
+ data C1_84BigSum
+ data C1_85BigSum
+ data C1_86BigSum
+ data C1_87BigSum
+ data C1_88BigSum
+ data C1_89BigSum
+ data C1_90BigSum
+ data C1_91BigSum
+ data C1_92BigSum
+ data C1_93BigSum
+ data C1_94BigSum
+ data C1_95BigSum
+ data C1_96BigSum
+ data C1_97BigSum
+ data C1_98BigSum
+ data C1_99BigSum
+
+ type Rep_BigSum = D1
+ D1BigSum
+ ((((((C1 C1_0BigSum U1
+ :+: (C1
+ C1_1BigSum U1
+ :+: C1
+ C1_2BigSum
+ U1))
+ :+: (C1
+ C1_3BigSum U1
+ :+: (C1
+ C1_4BigSum
+ U1
+ :+: C1
+ C1_5BigSum
+ U1)))
+ :+: ((C1
+ C1_6BigSum U1
+ :+: (C1
+ C1_7BigSum
+ U1
+ :+: C1
+ C1_8BigSum
+ U1))
+ :+: (C1
+ C1_9BigSum
+ U1
+ :+: (C1
+ C1_10BigSum
+ U1
+ :+: C1
+ C1_11BigSum
+ U1))))
+ :+: (((C1
+ C1_12BigSum U1
+ :+: (C1
+ C1_13BigSum
+ U1
+ :+: C1
+ C1_14BigSum
+ U1))
+ :+: (C1
+ C1_15BigSum
+ U1
+ :+: (C1
+ C1_16BigSum
+ U1
+ :+: C1
+ C1_17BigSum
+ U1)))
+ :+: ((C1
+ C1_18BigSum
+ U1
+ :+: (C1
+ C1_19BigSum
+ U1
+ :+: C1
+ C1_20BigSum
+ U1))
+ :+: ((C1
+ C1_21BigSum
+ U1
+ :+: C1
+ C1_22BigSum
+ U1)
+ :+: (C1
+ C1_23BigSum
+ U1
+ :+: C1
+ C1_24BigSum
+ U1)))))
+ :+: ((((C1
+ C1_25BigSum U1
+ :+: (C1
+ C1_26BigSum
+ U1
+ :+: C1
+ C1_27BigSum
+ U1))
+ :+: (C1
+ C1_28BigSum
+ U1
+ :+: (C1
+ C1_29BigSum
+ U1
+ :+: C1
+ C1_30BigSum
+ U1)))
+ :+: ((C1
+ C1_31BigSum
+ U1
+ :+: (C1
+ C1_32BigSum
+ U1
+ :+: C1
+ C1_33BigSum
+ U1))
+ :+: (C1
+ C1_34BigSum
+ U1
+ :+: (C1
+ C1_35BigSum
+ U1
+ :+: C1
+ C1_36BigSum
+ U1))))
+ :+: (((C1
+ C1_37BigSum
+ U1
+ :+: (C1
+ C1_38BigSum
+ U1
+ :+: C1
+ C1_39BigSum
+ U1))
+ :+: (C1
+ C1_40BigSum
+ U1
+ :+: (C1
+ C1_41BigSum
+ U1
+ :+: C1
+ C1_42BigSum
+ U1)))
+ :+: ((C1
+ C1_43BigSum
+ U1
+ :+: (C1
+ C1_44BigSum
+ U1
+ :+: C1
+ C1_45BigSum
+ U1))
+ :+: ((C1
+ C1_46BigSum
+ U1
+ :+: C1
+ C1_47BigSum
+ U1)
+ :+: (C1
+ C1_48BigSum
+ U1
+ :+: C1
+ C1_49BigSum
+ U1))))))
+ :+: (((((C1
+ C1_50BigSum U1
+ :+: (C1
+ C1_51BigSum
+ U1
+ :+: C1
+ C1_52BigSum
+ U1))
+ :+: (C1
+ C1_53BigSum
+ U1
+ :+: (C1
+ C1_54BigSum
+ U1
+ :+: C1
+ C1_55BigSum
+ U1)))
+ :+: ((C1
+ C1_56BigSum
+ U1
+ :+: (C1
+ C1_57BigSum
+ U1
+ :+: C1
+ C1_58BigSum
+ U1))
+ :+: (C1
+ C1_59BigSum
+ U1
+ :+: (C1
+ C1_60BigSum
+ U1
+ :+: C1
+ C1_61BigSum
+ U1))))
+ :+: (((C1
+ C1_62BigSum
+ U1
+ :+: (C1
+ C1_63BigSum
+ U1
+ :+: C1
+ C1_64BigSum
+ U1))
+ :+: (C1
+ C1_65BigSum
+ U1
+ :+: (C1
+ C1_66BigSum
+ U1
+ :+: C1
+ C1_67BigSum
+ U1)))
+ :+: ((C1
+ C1_68BigSum
+ U1
+ :+: (C1
+ C1_69BigSum
+ U1
+ :+: C1
+ C1_70BigSum
+ U1))
+ :+: ((C1
+ C1_71BigSum
+ U1
+ :+: C1
+ C1_72BigSum
+ U1)
+ :+: (C1
+ C1_73BigSum
+ U1
+ :+: C1
+ C1_74BigSum
+ U1)))))
+ :+: ((((C1
+ C1_75BigSum
+ U1
+ :+: (C1
+ C1_76BigSum
+ U1
+ :+: C1
+ C1_77BigSum
+ U1))
+ :+: (C1
+ C1_78BigSum
+ U1
+ :+: (C1
+ C1_79BigSum
+ U1
+ :+: C1
+ C1_80BigSum
+ U1)))
+ :+: ((C1
+ C1_81BigSum
+ U1
+ :+: (C1
+ C1_82BigSum
+ U1
+ :+: C1
+ C1_83BigSum
+ U1))
+ :+: (C1
+ C1_84BigSum
+ U1
+ :+: (C1
+ C1_85BigSum
+ U1
+ :+: C1
+ C1_86BigSum
+ U1))))
+ :+: (((C1
+ C1_87BigSum
+ U1
+ :+: (C1
+ C1_88BigSum
+ U1
+ :+: C1
+ C1_89BigSum
+ U1))
+ :+: (C1
+ C1_90BigSum
+ U1
+ :+: (C1
+ C1_91BigSum
+ U1
+ :+: C1
+ C1_92BigSum
+ U1)))
+ :+: ((C1
+ C1_93BigSum
+ U1
+ :+: (C1
+ C1_94BigSum
+ U1
+ :+: C1
+ C1_95BigSum
+ U1))
+ :+: ((C1
+ C1_96BigSum
+ U1
+ :+: C1
+ C1_97BigSum
+ U1)
+ :+: (C1
+ C1_98BigSum
+ U1
+ :+: C1
+ C1_99BigSum
+ U1)))))))
+
+
+
+
+
+{-
+data BigProduct = C
+ () () () () () () () () () ()
+ () () () () () () () () () ()
+ () () () () () () () () () ()
+ () () () () () () () () () ()
+ () () () () () () () () () ()
+ () () () () () () () () () ()
+ () () () () () () () () () ()
+ () () () () () () () () () ()
+ () () () () () () () () () ()
+ () () () () () () () () () ()
+ () () () () () () () () () ()
+ () () () () () () () () () ()
+ () () () () () () () () () ()
+ () () () () () () () () () ()
+ () () () () () () () () () ()
+ () () () () () () () () () ()
+ () () () () () () () () () ()
+ () () () () () () () () () ()
+ () () () () () () () () () ()
+ () () () () () () () () () ()
+ () () () () () () () () () ()
+ () () () () () () () () () ()
+ () () () () () () () () () ()
+ () () () () () () () () () ()
+ () () () () () () () () () ()
+ () () () () () () () () () ()
+ () () () () () () () () () ()
+ () () () () () () () () () ()
+ () () () () () () () () () ()
+ () () () () () () () () () ()
+ deriving Generic
+-}
diff --git a/testsuite/tests/perf/compiler/T783.hs b/testsuite/tests/perf/compiler/T783.hs
new file mode 100644
index 0000000000..c3ea08d42a
--- /dev/null
+++ b/testsuite/tests/perf/compiler/T783.hs
@@ -0,0 +1,503 @@
+module Test where
+
+foo :: Double -> Int
+foo x | x == 1 = 1
+foo x | x == 2 = 2
+foo x | x == 3 = 3
+foo x | x == 4 = 4
+foo x | x == 5 = 5
+foo x | x == 6 = 6
+foo x | x == 7 = 7
+foo x | x == 8 = 8
+foo x | x == 9 = 9
+foo x | x == 10 = 10
+foo x | x == 11 = 11
+foo x | x == 12 = 12
+foo x | x == 13 = 13
+foo x | x == 14 = 14
+foo x | x == 15 = 15
+foo x | x == 16 = 16
+foo x | x == 17 = 17
+foo x | x == 18 = 18
+foo x | x == 19 = 19
+foo x | x == 20 = 20
+foo x | x == 21 = 21
+foo x | x == 22 = 22
+foo x | x == 23 = 23
+foo x | x == 24 = 24
+foo x | x == 25 = 25
+foo x | x == 26 = 26
+foo x | x == 27 = 27
+foo x | x == 28 = 28
+foo x | x == 29 = 29
+foo x | x == 30 = 30
+foo x | x == 31 = 31
+foo x | x == 32 = 32
+foo x | x == 33 = 33
+foo x | x == 34 = 34
+foo x | x == 35 = 35
+foo x | x == 36 = 36
+foo x | x == 37 = 37
+foo x | x == 38 = 38
+foo x | x == 39 = 39
+foo x | x == 40 = 40
+foo x | x == 41 = 41
+foo x | x == 42 = 42
+foo x | x == 43 = 43
+foo x | x == 44 = 44
+foo x | x == 45 = 45
+foo x | x == 46 = 46
+foo x | x == 47 = 47
+foo x | x == 48 = 48
+foo x | x == 49 = 49
+foo x | x == 50 = 50
+foo x | x == 51 = 51
+foo x | x == 52 = 52
+foo x | x == 53 = 53
+foo x | x == 54 = 54
+foo x | x == 55 = 55
+foo x | x == 56 = 56
+foo x | x == 57 = 57
+foo x | x == 58 = 58
+foo x | x == 59 = 59
+foo x | x == 60 = 60
+foo x | x == 61 = 61
+foo x | x == 62 = 62
+foo x | x == 63 = 63
+foo x | x == 64 = 64
+foo x | x == 65 = 65
+foo x | x == 66 = 66
+foo x | x == 67 = 67
+foo x | x == 68 = 68
+foo x | x == 69 = 69
+foo x | x == 70 = 70
+foo x | x == 71 = 71
+foo x | x == 72 = 72
+foo x | x == 73 = 73
+foo x | x == 74 = 74
+foo x | x == 75 = 75
+foo x | x == 76 = 76
+foo x | x == 77 = 77
+foo x | x == 78 = 78
+foo x | x == 79 = 79
+foo x | x == 80 = 80
+foo x | x == 81 = 81
+foo x | x == 82 = 82
+foo x | x == 83 = 83
+foo x | x == 84 = 84
+foo x | x == 85 = 85
+foo x | x == 86 = 86
+foo x | x == 87 = 87
+foo x | x == 88 = 88
+foo x | x == 89 = 89
+foo x | x == 90 = 90
+foo x | x == 91 = 91
+foo x | x == 92 = 92
+foo x | x == 93 = 93
+foo x | x == 94 = 94
+foo x | x == 95 = 95
+foo x | x == 96 = 96
+foo x | x == 97 = 97
+foo x | x == 98 = 98
+foo x | x == 99 = 99
+foo x | x == 100 = 100
+foo x | x == 101 = 101
+foo x | x == 102 = 102
+foo x | x == 103 = 103
+foo x | x == 104 = 104
+foo x | x == 105 = 105
+foo x | x == 106 = 106
+foo x | x == 107 = 107
+foo x | x == 108 = 108
+foo x | x == 109 = 109
+foo x | x == 110 = 110
+foo x | x == 111 = 111
+foo x | x == 112 = 112
+foo x | x == 113 = 113
+foo x | x == 114 = 114
+foo x | x == 115 = 115
+foo x | x == 116 = 116
+foo x | x == 117 = 117
+foo x | x == 118 = 118
+foo x | x == 119 = 119
+foo x | x == 120 = 120
+foo x | x == 121 = 121
+foo x | x == 122 = 122
+foo x | x == 123 = 123
+foo x | x == 124 = 124
+foo x | x == 125 = 125
+foo x | x == 126 = 126
+foo x | x == 127 = 127
+foo x | x == 128 = 128
+foo x | x == 129 = 129
+foo x | x == 130 = 130
+foo x | x == 131 = 131
+foo x | x == 132 = 132
+foo x | x == 133 = 133
+foo x | x == 134 = 134
+foo x | x == 135 = 135
+foo x | x == 136 = 136
+foo x | x == 137 = 137
+foo x | x == 138 = 138
+foo x | x == 139 = 139
+foo x | x == 140 = 140
+foo x | x == 141 = 141
+foo x | x == 142 = 142
+foo x | x == 143 = 143
+foo x | x == 144 = 144
+foo x | x == 145 = 145
+foo x | x == 146 = 146
+foo x | x == 147 = 147
+foo x | x == 148 = 148
+foo x | x == 149 = 149
+foo x | x == 150 = 150
+foo x | x == 151 = 151
+foo x | x == 152 = 152
+foo x | x == 153 = 153
+foo x | x == 154 = 154
+foo x | x == 155 = 155
+foo x | x == 156 = 156
+foo x | x == 157 = 157
+foo x | x == 158 = 158
+foo x | x == 159 = 159
+foo x | x == 160 = 160
+foo x | x == 161 = 161
+foo x | x == 162 = 162
+foo x | x == 163 = 163
+foo x | x == 164 = 164
+foo x | x == 165 = 165
+foo x | x == 166 = 166
+foo x | x == 167 = 167
+foo x | x == 168 = 168
+foo x | x == 169 = 169
+foo x | x == 170 = 170
+foo x | x == 171 = 171
+foo x | x == 172 = 172
+foo x | x == 173 = 173
+foo x | x == 174 = 174
+foo x | x == 175 = 175
+foo x | x == 176 = 176
+foo x | x == 177 = 177
+foo x | x == 178 = 178
+foo x | x == 179 = 179
+foo x | x == 180 = 180
+foo x | x == 181 = 181
+foo x | x == 182 = 182
+foo x | x == 183 = 183
+foo x | x == 184 = 184
+foo x | x == 185 = 185
+foo x | x == 186 = 186
+foo x | x == 187 = 187
+foo x | x == 188 = 188
+foo x | x == 189 = 189
+foo x | x == 190 = 190
+foo x | x == 191 = 191
+foo x | x == 192 = 192
+foo x | x == 193 = 193
+foo x | x == 194 = 194
+foo x | x == 195 = 195
+foo x | x == 196 = 196
+foo x | x == 197 = 197
+foo x | x == 198 = 198
+foo x | x == 199 = 199
+foo x | x == 200 = 200
+foo x | x == 201 = 201
+foo x | x == 202 = 202
+foo x | x == 203 = 203
+foo x | x == 204 = 204
+foo x | x == 205 = 205
+foo x | x == 206 = 206
+foo x | x == 207 = 207
+foo x | x == 208 = 208
+foo x | x == 209 = 209
+foo x | x == 210 = 210
+foo x | x == 211 = 211
+foo x | x == 212 = 212
+foo x | x == 213 = 213
+foo x | x == 214 = 214
+foo x | x == 215 = 215
+foo x | x == 216 = 216
+foo x | x == 217 = 217
+foo x | x == 218 = 218
+foo x | x == 219 = 219
+foo x | x == 220 = 220
+foo x | x == 221 = 221
+foo x | x == 222 = 222
+foo x | x == 223 = 223
+foo x | x == 224 = 224
+foo x | x == 225 = 225
+foo x | x == 226 = 226
+foo x | x == 227 = 227
+foo x | x == 228 = 228
+foo x | x == 229 = 229
+foo x | x == 230 = 230
+foo x | x == 231 = 231
+foo x | x == 232 = 232
+foo x | x == 233 = 233
+foo x | x == 234 = 234
+foo x | x == 235 = 235
+foo x | x == 236 = 236
+foo x | x == 237 = 237
+foo x | x == 238 = 238
+foo x | x == 239 = 239
+foo x | x == 240 = 240
+foo x | x == 241 = 241
+foo x | x == 242 = 242
+foo x | x == 243 = 243
+foo x | x == 244 = 244
+foo x | x == 245 = 245
+foo x | x == 246 = 246
+foo x | x == 247 = 247
+foo x | x == 248 = 248
+foo x | x == 249 = 249
+foo x | x == 250 = 250
+foo x | x == 251 = 251
+foo x | x == 252 = 252
+foo x | x == 253 = 253
+foo x | x == 254 = 254
+foo x | x == 255 = 255
+foo x | x == 256 = 256
+foo x | x == 257 = 257
+foo x | x == 258 = 258
+foo x | x == 259 = 259
+foo x | x == 260 = 260
+foo x | x == 261 = 261
+foo x | x == 262 = 262
+foo x | x == 263 = 263
+foo x | x == 264 = 264
+foo x | x == 265 = 265
+foo x | x == 266 = 266
+foo x | x == 267 = 267
+foo x | x == 268 = 268
+foo x | x == 269 = 269
+foo x | x == 270 = 270
+foo x | x == 271 = 271
+foo x | x == 272 = 272
+foo x | x == 273 = 273
+foo x | x == 274 = 274
+foo x | x == 275 = 275
+foo x | x == 276 = 276
+foo x | x == 277 = 277
+foo x | x == 278 = 278
+foo x | x == 279 = 279
+foo x | x == 280 = 280
+foo x | x == 281 = 281
+foo x | x == 282 = 282
+foo x | x == 283 = 283
+foo x | x == 284 = 284
+foo x | x == 285 = 285
+foo x | x == 286 = 286
+foo x | x == 287 = 287
+foo x | x == 288 = 288
+foo x | x == 289 = 289
+foo x | x == 290 = 290
+foo x | x == 291 = 291
+foo x | x == 292 = 292
+foo x | x == 293 = 293
+foo x | x == 294 = 294
+foo x | x == 295 = 295
+foo x | x == 296 = 296
+foo x | x == 297 = 297
+foo x | x == 298 = 298
+foo x | x == 299 = 299
+foo x | x == 300 = 300
+foo x | x == 301 = 301
+foo x | x == 302 = 302
+foo x | x == 303 = 303
+foo x | x == 304 = 304
+foo x | x == 305 = 305
+foo x | x == 306 = 306
+foo x | x == 307 = 307
+foo x | x == 308 = 308
+foo x | x == 309 = 309
+foo x | x == 310 = 310
+foo x | x == 311 = 311
+foo x | x == 312 = 312
+foo x | x == 313 = 313
+foo x | x == 314 = 314
+foo x | x == 315 = 315
+foo x | x == 316 = 316
+foo x | x == 317 = 317
+foo x | x == 318 = 318
+foo x | x == 319 = 319
+foo x | x == 320 = 320
+foo x | x == 321 = 321
+foo x | x == 322 = 322
+foo x | x == 323 = 323
+foo x | x == 324 = 324
+foo x | x == 325 = 325
+foo x | x == 326 = 326
+foo x | x == 327 = 327
+foo x | x == 328 = 328
+foo x | x == 329 = 329
+foo x | x == 330 = 330
+foo x | x == 331 = 331
+foo x | x == 332 = 332
+foo x | x == 333 = 333
+foo x | x == 334 = 334
+foo x | x == 335 = 335
+foo x | x == 336 = 336
+foo x | x == 337 = 337
+foo x | x == 338 = 338
+foo x | x == 339 = 339
+foo x | x == 340 = 340
+foo x | x == 341 = 341
+foo x | x == 342 = 342
+foo x | x == 343 = 343
+foo x | x == 344 = 344
+foo x | x == 345 = 345
+foo x | x == 346 = 346
+foo x | x == 347 = 347
+foo x | x == 348 = 348
+foo x | x == 349 = 349
+foo x | x == 350 = 350
+foo x | x == 351 = 351
+foo x | x == 352 = 352
+foo x | x == 353 = 353
+foo x | x == 354 = 354
+foo x | x == 355 = 355
+foo x | x == 356 = 356
+foo x | x == 357 = 357
+foo x | x == 358 = 358
+foo x | x == 359 = 359
+foo x | x == 360 = 360
+foo x | x == 361 = 361
+foo x | x == 362 = 362
+foo x | x == 363 = 363
+foo x | x == 364 = 364
+foo x | x == 365 = 365
+foo x | x == 366 = 366
+foo x | x == 367 = 367
+foo x | x == 368 = 368
+foo x | x == 369 = 369
+foo x | x == 370 = 370
+foo x | x == 371 = 371
+foo x | x == 372 = 372
+foo x | x == 373 = 373
+foo x | x == 374 = 374
+foo x | x == 375 = 375
+foo x | x == 376 = 376
+foo x | x == 377 = 377
+foo x | x == 378 = 378
+foo x | x == 379 = 379
+foo x | x == 380 = 380
+foo x | x == 381 = 381
+foo x | x == 382 = 382
+foo x | x == 383 = 383
+foo x | x == 384 = 384
+foo x | x == 385 = 385
+foo x | x == 386 = 386
+foo x | x == 387 = 387
+foo x | x == 388 = 388
+foo x | x == 389 = 389
+foo x | x == 390 = 390
+foo x | x == 391 = 391
+foo x | x == 392 = 392
+foo x | x == 393 = 393
+foo x | x == 394 = 394
+foo x | x == 395 = 395
+foo x | x == 396 = 396
+foo x | x == 397 = 397
+foo x | x == 398 = 398
+foo x | x == 399 = 399
+foo x | x == 400 = 400
+foo x | x == 401 = 401
+foo x | x == 402 = 402
+foo x | x == 403 = 403
+foo x | x == 404 = 404
+foo x | x == 405 = 405
+foo x | x == 406 = 406
+foo x | x == 407 = 407
+foo x | x == 408 = 408
+foo x | x == 409 = 409
+foo x | x == 410 = 410
+foo x | x == 411 = 411
+foo x | x == 412 = 412
+foo x | x == 413 = 413
+foo x | x == 414 = 414
+foo x | x == 415 = 415
+foo x | x == 416 = 416
+foo x | x == 417 = 417
+foo x | x == 418 = 418
+foo x | x == 419 = 419
+foo x | x == 420 = 420
+foo x | x == 421 = 421
+foo x | x == 422 = 422
+foo x | x == 423 = 423
+foo x | x == 424 = 424
+foo x | x == 425 = 425
+foo x | x == 426 = 426
+foo x | x == 427 = 427
+foo x | x == 428 = 428
+foo x | x == 429 = 429
+foo x | x == 430 = 430
+foo x | x == 431 = 431
+foo x | x == 432 = 432
+foo x | x == 433 = 433
+foo x | x == 434 = 434
+foo x | x == 435 = 435
+foo x | x == 436 = 436
+foo x | x == 437 = 437
+foo x | x == 438 = 438
+foo x | x == 439 = 439
+foo x | x == 440 = 440
+foo x | x == 441 = 441
+foo x | x == 442 = 442
+foo x | x == 443 = 443
+foo x | x == 444 = 444
+foo x | x == 445 = 445
+foo x | x == 446 = 446
+foo x | x == 447 = 447
+foo x | x == 448 = 448
+foo x | x == 449 = 449
+foo x | x == 450 = 450
+foo x | x == 451 = 451
+foo x | x == 452 = 452
+foo x | x == 453 = 453
+foo x | x == 454 = 454
+foo x | x == 455 = 455
+foo x | x == 456 = 456
+foo x | x == 457 = 457
+foo x | x == 458 = 458
+foo x | x == 459 = 459
+foo x | x == 460 = 460
+foo x | x == 461 = 461
+foo x | x == 462 = 462
+foo x | x == 463 = 463
+foo x | x == 464 = 464
+foo x | x == 465 = 465
+foo x | x == 466 = 466
+foo x | x == 467 = 467
+foo x | x == 468 = 468
+foo x | x == 469 = 469
+foo x | x == 470 = 470
+foo x | x == 471 = 471
+foo x | x == 472 = 472
+foo x | x == 473 = 473
+foo x | x == 474 = 474
+foo x | x == 475 = 475
+foo x | x == 476 = 476
+foo x | x == 477 = 477
+foo x | x == 478 = 478
+foo x | x == 479 = 479
+foo x | x == 480 = 480
+foo x | x == 481 = 481
+foo x | x == 482 = 482
+foo x | x == 483 = 483
+foo x | x == 484 = 484
+foo x | x == 485 = 485
+foo x | x == 486 = 486
+foo x | x == 487 = 487
+foo x | x == 488 = 488
+foo x | x == 489 = 489
+foo x | x == 490 = 490
+foo x | x == 491 = 491
+foo x | x == 492 = 492
+foo x | x == 493 = 493
+foo x | x == 494 = 494
+foo x | x == 495 = 495
+foo x | x == 496 = 496
+foo x | x == 497 = 497
+foo x | x == 498 = 498
+foo x | x == 499 = 499
+foo x | x == 500 = 500
diff --git a/testsuite/tests/perf/compiler/all.T b/testsuite/tests/perf/compiler/all.T
index ca4148690b..a599ccf0fe 100644
--- a/testsuite/tests/perf/compiler/all.T
+++ b/testsuite/tests/perf/compiler/all.T
@@ -1,3 +1,10 @@
+def no_core_lint(opts):
+ opts.compiler_always_flags = \
+ filter(lambda opt: opt != '-dcore-lint', opts.compiler_always_flags)
+
+setTestOpts(no_core_lint)
+
+
test('T1969',
[if_wordsize(32,
compiler_stats_num_field('peak_megabytes_allocated', 13,
@@ -7,9 +14,9 @@ test('T1969',
# 19 (x86/OS X)
if_wordsize(64,
compiler_stats_num_field('peak_megabytes_allocated', 24,
- 32)),
+ 37)),
# expected value: 28 (amd64/Linux)
- # expected value: 32 (amd64/Linux)
+ # expected value: 34 (amd64/Linux)
if_wordsize(32,
compiler_stats_num_field('max_bytes_used', 5000000,
7000000)),
@@ -17,9 +24,8 @@ test('T1969',
# 5717704 (x86/Windows 17/05/10)
# 6149572 (x86/Linux, 31/12/09)
if_wordsize(64,
- compiler_stats_num_field('max_bytes_used', 9000000,
- 13000000)),
- # expected value: 11404664 (amd64/Linux)
+ compiler_stats_range_field('max_bytes_used', 12000000, 10)),
+ # expected value: 11178376 (amd64/Linux)
if_wordsize(32,
compiler_stats_num_field('bytes allocated', 210000000,
270000000)),
@@ -32,7 +38,10 @@ test('T1969',
# 08/12/2009: 459,776,680 (amd64/Linux)
# 17/05/2010: 519,377,728 (amd64/Linux)
# 05/08/2011: 561,382,568 (amd64/OS X)
- only_ways(['normal'])
+ only_ways(['normal']),
+ extra_hc_opts('-dcore-lint')
+ # Leave -dcore-lint on for this one test, so that we have something
+ # that will catch a regression in -dcore-lint performance.
],
compile,
[''])
@@ -80,22 +89,17 @@ test('T4801',
[ # expect_broken(5224),
# temporarily unbroken (#5227)
if_wordsize(32,
- # expected value x86/OSX: 27
- compiler_stats_num_field('peak_megabytes_allocated', 25, 29)),
- # expected value: 48-49 (amd64/Linux):
- if_wordsize(64,
- compiler_stats_num_field('peak_megabytes_allocated', 47, 50)),
+ compiler_stats_range_field('peak_megabytes_allocated', 30, 10)),
+ if_wordsize(64, # sample from (amd64/Linux):
+ compiler_stats_range_field('peak_megabytes_allocated', 47, 10)),
# expected value: 58 (amd64/OS X):
if_platform('x86_64-apple-darwin',
compiler_stats_num_field('peak_megabytes_allocated', 56, 60)),
# expected value: 228286660 (x86/OS X)
if_wordsize(32,
- compiler_stats_num_field('bytes allocated', 200000000,
- 240000000)),
- # expected value: 458700632 (amd64/Linux):
- if_wordsize(64,
- compiler_stats_num_field('bytes allocated', 440000000,
- 480000000)),
+ compiler_stats_range_field('bytes allocated', 185669232, 10)),
+ if_wordsize(64, # (amd64/Linux):
+ compiler_stats_range_field('bytes allocated', 360243576, 10)),
# expected value: 510938976 (amd64/OS X):
if_platform('x86_64-apple-darwin',
compiler_stats_num_field('bytes allocated', 490000000,
@@ -103,7 +107,7 @@ test('T4801',
if_wordsize(32,
# expected value: x86/OS X: 9651948
compiler_stats_num_field('max_bytes_used', 9000000,
- 10000000)),
+ 12000000)),
# expected value: 18188272 (amd64/Linux)
# 10290952 (windows)
if_wordsize(64,
@@ -119,21 +123,20 @@ test('T4801',
[''])
test('T3064',
- [
+ [# expect_broken( 3064 ),
# expected value: 9 (x86/Linux 30-03-2011):
if_wordsize(32,
- compiler_stats_num_field('peak_megabytes_allocated', 8, 11)),
+ compiler_stats_num_field('peak_megabytes_allocated', 7, 12)),
# expected value: 18 (amd64/Linux):
if_wordsize(64,
compiler_stats_num_field('peak_megabytes_allocated', 9, 16)),
# expected value: 56380288 (x86/Linux) (28/6/2011)
if_wordsize(32,
- compiler_stats_num_field('bytes allocated', 50000000,
- 70000000)),
- # expected value: 108937496 (amd64/Linux) (28/6/2011):
+ compiler_stats_range_field('bytes allocated', 39800820, 10)),
+ # expected value: 73259544 (amd64/Linux) (28/6/2011):
if_wordsize(64,
- compiler_stats_num_field('bytes allocated', 110000000,
- 155000000)),
+ compiler_stats_num_field('bytes allocated', 60000000,
+ 80000000)),
# expected value: 2247016 (x86/Linux) (28/6/2011):
if_wordsize(32,
compiler_stats_num_field('max_bytes_used', 2000000,
@@ -153,19 +156,30 @@ test('T4007',
['$MAKE -s --no-print-directory T4007'])
test('T5030',
- [# expected value: 629864032 (x86/Darwin)
+ [# expected value: 449368924 (x86/Linux)
if_wordsize(32,
- compiler_stats_num_field('bytes allocated', 450000000,
- 550000000)),
- # expected value: 1255998208 (amd64/Linux):
+ compiler_stats_range_field('bytes allocated', 176193448, 10)),
+ # expected value: 346750856 (amd64/Linux):
if_wordsize(64,
- compiler_stats_num_field('bytes allocated', 90000000,
- 110000000)),
+ compiler_stats_num_field('bytes allocated', 300000000,
+ 400000000)),
only_ways(['normal'])
],
compile,
['-fcontext-stack=300'])
+test('T5631',
+ [if_wordsize(32, # sample from x86/Linux
+ compiler_stats_range_field('bytes allocated', 392904228, 10)),
+ # expected value: 774,595,008 (amd64/Linux):
+ if_wordsize(64,
+ compiler_stats_num_field('bytes allocated', 600000000,
+ 900000000)),
+ only_ways(['normal'])
+ ],
+ compile,
+ [''])
+
test('parsing001',
[# expected value: ?
if_wordsize(32,
@@ -174,9 +188,53 @@ test('parsing001',
# expected value: 587079016 (amd64/Linux):
if_wordsize(64,
compiler_stats_num_field('bytes allocated', 540000000,
- 600000000)),
+ 620000000)),
only_ways(['normal']),
],
compile_fail, [''])
+test('T783',
+ [ only_ways(['normal']), # no optimisation for this one
+ # expected value: 175,569,928 (x86/Linux)
+ if_wordsize(32,
+ compiler_stats_num_field('bytes allocated', 125000000,
+ 225000000)),
+ # sample: 349263216 (amd64/Linux)
+ if_wordsize(64,
+ compiler_stats_range_field('bytes allocated', 349263216, 10))
+ ],
+ compile,[''])
+
+test('T5321Fun',
+ [ only_ways(['normal']), # no optimisation for this one
+ # sample from x86/Linux
+ if_wordsize(32,
+ compiler_stats_range_field('bytes allocated', 341591280, 10)),
+ # expected value: 669165280 (amd64/Linux):
+ if_wordsize(64,
+ compiler_stats_range_field('bytes allocated', 669165280, 10))
+ ],
+ compile,[''])
+
+test('T5321FD',
+ [ only_ways(['normal']), # no optimisation for this one
+ # sample from x86/Linux
+ if_wordsize(32,
+ compiler_stats_range_field('bytes allocated', 257175456, 10)),
+ # expected value: 500642456 (amd64/Linux):
+ if_wordsize(64,
+ compiler_stats_range_field('bytes allocated', 500642456, 10))
+ ],
+ compile,[''])
+
+test('T5642',
+ [ only_ways(['normal']),
+ if_wordsize(32, # sample from x86/Linux
+ compiler_stats_range_field('bytes allocated', 1893427932, 10)),
+
+ # sample: 3926235424 (amd64/Linux, 15/2/2012)
+ if_wordsize(64,
+ compiler_stats_range_field('bytes allocated', 3926235424, 10))
+ ],
+ compile,['-O'])
diff --git a/testsuite/tests/perf/should_run/T4474a.hs b/testsuite/tests/perf/should_run/T4474a.hs
new file mode 100644
index 0000000000..ef70a6ae69
--- /dev/null
+++ b/testsuite/tests/perf/should_run/T4474a.hs
@@ -0,0 +1,40 @@
+{-# LANGUAGE BangPatterns #-}
+
+module Main where
+
+data Tree = Leaf !Int | Fork !Tree !Tree deriving Show
+
+fullTree 0 = Leaf 1
+fullTree n = let t = fullTree (n - 1) in Fork t t
+
+flatListNaive (Leaf n) = [n]
+flatListNaive (Fork a b) = flatListNaive a ++ flatListNaive b
+
+flatListCons t = flat t []
+ where
+ flat (Leaf n) ns = n : ns
+ flat (Fork a b) ns = flat a (flat b ns)
+
+flatListCons2 t = flat t []
+ where
+ flat (Leaf n) = \ns -> n : ns
+ flat (Fork a b) = \ns -> flat a (flat b ns)
+
+flatListCons3 t = flat t []
+ where
+ flat (Leaf n) = (n :)
+ flat (Fork a b) = flat a . flat b
+
+flatDList (Leaf n) = (n :)
+flatDList (Fork a b) = flatDList a . flatDList b
+
+sumList l = loop 0 l
+ where loop !c [] = c
+ loop !c (h:t) = loop (c + h) t
+
+sumDList l = loop 0 (l [])
+ where loop !c [] = c
+ loop !c (h : t) = loop (c + h) t
+
+main = print $ sumList $ flatListCons $ fullTree 26
+
diff --git a/testsuite/tests/perf/should_run/T4474a.stdout b/testsuite/tests/perf/should_run/T4474a.stdout
new file mode 100644
index 0000000000..e6c68622ac
--- /dev/null
+++ b/testsuite/tests/perf/should_run/T4474a.stdout
@@ -0,0 +1 @@
+67108864
diff --git a/testsuite/tests/perf/should_run/T4474b.hs b/testsuite/tests/perf/should_run/T4474b.hs
new file mode 100644
index 0000000000..fd931b4223
--- /dev/null
+++ b/testsuite/tests/perf/should_run/T4474b.hs
@@ -0,0 +1,40 @@
+{-# LANGUAGE BangPatterns #-}
+
+module Main where
+
+data Tree = Leaf !Int | Fork !Tree !Tree deriving Show
+
+fullTree 0 = Leaf 1
+fullTree n = let t = fullTree (n - 1) in Fork t t
+
+flatListNaive (Leaf n) = [n]
+flatListNaive (Fork a b) = flatListNaive a ++ flatListNaive b
+
+flatListCons t = flat t []
+ where
+ flat (Leaf n) ns = n : ns
+ flat (Fork a b) ns = flat a (flat b ns)
+
+flatListCons2 t = flat t []
+ where
+ flat (Leaf n) = \ns -> n : ns
+ flat (Fork a b) = \ns -> flat a (flat b ns)
+
+flatListCons3 t = flat t []
+ where
+ flat (Leaf n) = (n :)
+ flat (Fork a b) = flat a . flat b
+
+flatDList (Leaf n) = (n :)
+flatDList (Fork a b) = flatDList a . flatDList b
+
+sumList l = loop 0 l
+ where loop !c [] = c
+ loop !c (h:t) = loop (c + h) t
+
+sumDList l = loop 0 (l [])
+ where loop !c [] = c
+ loop !c (h : t) = loop (c + h) t
+
+main = print $ sumList $ flatListCons2 $ fullTree 26
+
diff --git a/testsuite/tests/perf/should_run/T4474b.stdout b/testsuite/tests/perf/should_run/T4474b.stdout
new file mode 100644
index 0000000000..e6c68622ac
--- /dev/null
+++ b/testsuite/tests/perf/should_run/T4474b.stdout
@@ -0,0 +1 @@
+67108864
diff --git a/testsuite/tests/perf/should_run/T4474c.hs b/testsuite/tests/perf/should_run/T4474c.hs
new file mode 100644
index 0000000000..116a21322e
--- /dev/null
+++ b/testsuite/tests/perf/should_run/T4474c.hs
@@ -0,0 +1,40 @@
+{-# LANGUAGE BangPatterns #-}
+
+module Main where
+
+data Tree = Leaf !Int | Fork !Tree !Tree deriving Show
+
+fullTree 0 = Leaf 1
+fullTree n = let t = fullTree (n - 1) in Fork t t
+
+flatListNaive (Leaf n) = [n]
+flatListNaive (Fork a b) = flatListNaive a ++ flatListNaive b
+
+flatListCons t = flat t []
+ where
+ flat (Leaf n) ns = n : ns
+ flat (Fork a b) ns = flat a (flat b ns)
+
+flatListCons2 t = flat t []
+ where
+ flat (Leaf n) = \ns -> n : ns
+ flat (Fork a b) = \ns -> flat a (flat b ns)
+
+flatListCons3 t = flat t []
+ where
+ flat (Leaf n) = (n :)
+ flat (Fork a b) = flat a . flat b
+
+flatDList (Leaf n) = (n :)
+flatDList (Fork a b) = flatDList a . flatDList b
+
+sumList l = loop 0 l
+ where loop !c [] = c
+ loop !c (h:t) = loop (c + h) t
+
+sumDList l = loop 0 (l [])
+ where loop !c [] = c
+ loop !c (h : t) = loop (c + h) t
+
+main = print $ sumList $ flatListCons3 $ fullTree 26
+
diff --git a/testsuite/tests/perf/should_run/T4474c.stdout b/testsuite/tests/perf/should_run/T4474c.stdout
new file mode 100644
index 0000000000..e6c68622ac
--- /dev/null
+++ b/testsuite/tests/perf/should_run/T4474c.stdout
@@ -0,0 +1 @@
+67108864
diff --git a/testsuite/tests/perf/should_run/T5237.hs b/testsuite/tests/perf/should_run/T5237.hs
new file mode 100644
index 0000000000..6a12f5ecea
--- /dev/null
+++ b/testsuite/tests/perf/should_run/T5237.hs
@@ -0,0 +1,15 @@
+{-# LANGUAGE BangPatterns #-}
+module Main (main) where
+
+-- Test that the rewrite rules for small exponents fire (#5237).
+-- If they don't fire, this will allocate much.
+
+fun :: Double -> Double
+fun x = go 0 1.0
+ where
+ go !acc z
+ | x < z = acc
+ | otherwise = go (acc + 1/z^4) (z+1.0)
+
+main :: IO ()
+main = print (fun 1e7)
diff --git a/testsuite/tests/perf/should_run/T5237.stdout b/testsuite/tests/perf/should_run/T5237.stdout
new file mode 100644
index 0000000000..a620a54dd7
--- /dev/null
+++ b/testsuite/tests/perf/should_run/T5237.stdout
@@ -0,0 +1 @@
+1.082323233710861
diff --git a/testsuite/tests/perf/should_run/T5536.hs b/testsuite/tests/perf/should_run/T5536.hs
new file mode 100644
index 0000000000..3259c46675
--- /dev/null
+++ b/testsuite/tests/perf/should_run/T5536.hs
@@ -0,0 +1,5 @@
+
+main :: IO ()
+main = do writeFile "T5536.data" (replicate 10000000 'a')
+ readFile "T5536.data" >>= putStr
+
diff --git a/testsuite/tests/perf/should_run/all.T b/testsuite/tests/perf/should_run/all.T
index 9a7c2b7bae..69dffbcc93 100644
--- a/testsuite/tests/perf/should_run/all.T
+++ b/testsuite/tests/perf/should_run/all.T
@@ -164,3 +164,73 @@ test('T5549',
compile_and_run,
['-O'])
+test('T4474a',
+ [if_wordsize(32,
+ stats_num_field('bytes allocated', 1600000000,
+ 2000000000)),
+ # expected value: 1879095912 (i386/OSX)
+ if_wordsize(64,
+ stats_num_field('bytes allocated', 3500000000,
+ 3900000000)),
+ # expected value: 3766493912 (amd64/Linux)
+ only_ways(['normal'])
+ ],
+ compile_and_run,
+ ['-O'])
+test('T4474b',
+ [if_wordsize(32,
+ stats_num_field('bytes allocated', 1600000000,
+ 2000000000)),
+ # expected value: 1879095912 (i386/OSX)
+ if_wordsize(64,
+ stats_num_field('bytes allocated', 3500000000,
+ 3900000000)),
+ # expected value: 3766493912 (amd64/Linux)
+ only_ways(['normal'])
+ ],
+ compile_and_run,
+ ['-O'])
+test('T4474c',
+ [if_wordsize(32,
+ stats_num_field('bytes allocated', 1600000000,
+ 2000000000)),
+ # expected value: 1879095912 (i386/OSX)
+ if_wordsize(64,
+ stats_num_field('bytes allocated', 3500000000,
+ 3900000000)),
+ # expected value: 3766493912 (amd64/Linux)
+ only_ways(['normal'])
+ ],
+ compile_and_run,
+ ['-O'])
+
+test('T5237',
+ [if_wordsize(32,
+ stats_num_field('bytes allocated', 70000,
+ 90000)),
+ # expected value: 78328 (i386/Linux)
+ if_wordsize(64,
+ stats_num_field('bytes allocated', 90000,
+ 130000)),
+ # expected value: 110888 (amd64/Linux)
+ only_ways(['normal'])
+ ],
+ compile_and_run,
+ ['-O ' + sse2_opts])
+
+test('T5536',
+ [if_wordsize(32,
+ stats_num_field('bytes allocated', 1150000000,
+ 1250000000)),
+ # expected value: 1246287228 (i386/Linux)
+ if_wordsize(64,
+ stats_num_field('bytes allocated', 2480000000,
+ 2510000000)),
+ # expected value: 2492589480 (amd64/Linux)
+ extra_clean(['T5536.data']),
+ ignore_output,
+ only_ways(['normal'])
+ ],
+ compile_and_run,
+ ['-O'])
+
diff --git a/testsuite/tests/perf/space_leaks/T4018.hs b/testsuite/tests/perf/space_leaks/T4018.hs
new file mode 100644
index 0000000000..b37787852a
--- /dev/null
+++ b/testsuite/tests/perf/space_leaks/T4018.hs
@@ -0,0 +1,27 @@
+module Main (main) where
+
+ import Foreign
+ import Control.Concurrent
+
+ -- always space-leaks with 6.12.x and -fno-state-hack, see #4018
+ {-
+ always :: Monad m => m a -> m b
+ always a = a >> always a
+ -}
+ always :: Monad m => m a -> m b
+ always a = do
+ _ <- a
+ always a
+
+ spawner :: IO ()
+ spawner = always $ do
+ forkIO $ always $ allocaBytes 4 $ \p -> return ()
+ -- putStrLn "Delaying"
+ threadDelay 1000000
+
+ main :: IO ()
+ main = do
+ -- putStrLn "Spawning"
+ forkIO spawner
+ -- putStrLn "Delaying main"
+ threadDelay 3000000
diff --git a/testsuite/tests/perf/space_leaks/all.T b/testsuite/tests/perf/space_leaks/all.T
index 809ec01b44..6dec9f0990 100644
--- a/testsuite/tests/perf/space_leaks/all.T
+++ b/testsuite/tests/perf/space_leaks/all.T
@@ -5,11 +5,12 @@ test('space_leak_001',
# 4 (x86/OS X)
# 5 (x86/Linux)
[stats_num_field('peak_megabytes_allocated', 3, 5),
- stats_num_field('max_bytes_used', 410000,
- 450000),
+ stats_num_field('max_bytes_used', 400000,
+ 500000),
# expected value: 440224 (amd64/Linux)
# 417016 (x86/OS X)
# 415672 (x86/Windows)
+ # 481456 (unreg amd64/Linux)
stats_num_field('bytes allocated', 9050000000,
9100000000),
# expected value: 9079316016 (amd64/Linux)
@@ -37,3 +38,7 @@ test('T2762',
only_ways(['normal']),
extra_clean(['T2762A.hi', 'T2762A.o'])],
compile_and_run, ['-O'])
+
+test('T4018',
+ [ only_ways(['optasm']), extra_run_opts('+RTS -M10m -RTS') ],
+ compile_and_run, ['-fno-state-hack'])
diff --git a/testsuite/tests/plugins/all.T b/testsuite/tests/plugins/all.T
index 6723aad35f..2929a0a070 100644
--- a/testsuite/tests/plugins/all.T
+++ b/testsuite/tests/plugins/all.T
@@ -10,9 +10,15 @@ test('plugins02', normal, compile_fail, ['-package-conf simple-plugin/local.pack
test('plugins03', normal, compile_fail, ['-package-conf simple-plugin/local.package.conf -fplugin Simple.NonExistantPlugin -package simple-plugin'])
test('plugins04', extra_clean(['HomePackagePlugin.hi', 'HomePackagePlugin.o']), multimod_compile_fail, ['plugins04', '-package ghc -fplugin HomePackagePlugin'])
-test('plugins05', extra_clean(['HomePackagePlugin.hi', 'HomePackagePlugin.o']), multimod_compile_and_run, ['plugins05', '-package ghc'])
+test('plugins05',
+ [ extra_clean(['HomePackagePlugin.hi', 'HomePackagePlugin.o']),
+ expect_fail_for(['dyn'] + prof_ways) ],
+ multimod_compile_and_run, ['plugins05', '-package ghc'])
-test('plugins06', extra_clean(['LinkerTicklingPlugin.hi', 'LinkerTicklingPlugin.o']), multimod_compile_and_run, ['plugins06', '-package ghc'])
+test('plugins06',
+ [ extra_clean(['LinkerTicklingPlugin.hi', 'LinkerTicklingPlugin.o']),
+ expect_fail_for(['dyn'] + prof_ways) ],
+ multimod_compile_and_run, ['plugins06', '-package ghc'])
if default_testopts.cleanup != '':
runCmd('$MAKE -C ' + in_testdir('') + ' clean')
diff --git a/testsuite/tests/polykinds/Freeman.hs b/testsuite/tests/polykinds/Freeman.hs
new file mode 100644
index 0000000000..ea8aff0f8a
--- /dev/null
+++ b/testsuite/tests/polykinds/Freeman.hs
@@ -0,0 +1,259 @@
+-- From the blog post Fun With XPolyKinds : Polykinded Folds
+-- http://www.typesandotherdistractions.com/2012/02/fun-with-xpolykinds-polykinded-folds.html
+
+{-
+In the following, I will write a polykinded version of the combinators
+fold and unfold, along with three examples: folds for regular
+datatypes (specialized to kind *), folds for nested datatypes
+(specialized to kind * -> *), and folds for mutually recursive data
+types (specialized to the product kind (*,*)). The approach should
+generalise easily enough to things such as types indexed by another
+kind (e.g. by specializing to kind Nat -> *, using the XDataKinds
+extension), or higher order nested datatypes (e.g. by specializing to
+kind (* -> *) -> (* -> *)).
+
+The following will compile in the new GHC 7.4.1 release. We require
+the following GHC extensions:
+-}
+
+{-# LANGUAGE GADTs #-}
+{-# LANGUAGE PolyKinds #-}
+{-# LANGUAGE KindSignatures #-}
+{-# LANGUAGE DataKinds #-}
+{-# LANGUAGE RankNTypes #-}
+{-# LANGUAGE FlexibleInstances #-}
+{-# LANGUAGE MultiParamTypeClasses #-}
+{-# LANGUAGE ScopedTypeVariables #-}
+{-# LANGUAGE StandaloneDeriving #-}
+module Main where
+
+{- The basic fold and unfold combinators can be written as follows:
+
+fold phi = phi . fmap (fold phi) . out
+unfold psi = in . fmap (unfold psi) . psi
+
+The idea now is to generalize these combinators by working over
+different categories. We can capture the basic operations in a
+category with a typeclass: -}
+
+class Category hom where
+ ident :: hom a a
+ compose :: hom a b -> hom b c -> hom a c
+
+{- A category has two operations: an identity morphism for every
+object, and for every two compatible morphisms, the composition of
+those morphisms.
+
+In earlier versions of GHC, the type hom would have been specialized
+to kind * -> * -> *, but with the new PolyKinds extension, hom is
+polykinded, and the Category typeclass can be instantiated to k -> k
+-> * for any kind k. This means that in addition to all of the
+Category instances that we could have written before, we can now write
+instances of Category for type constructors, type constructor
+constructors, etc.
+
+Here is the instance for the category Hask of Haskell types. Objects
+are Haskell types and morphisms are functions between types. The
+identity is the regular polymorphic identity function id, and
+composition is given by the (flipped) composition operator (.) -}
+
+instance Category (->) where
+ ident = id
+ compose = flip (.)
+
+{- Another example is the category of type constructors and natural
+transformations. A natural transformation is defined as follows: -}
+
+newtype Nat f g = Nat { nu :: (forall a. f a -> g a) }
+
+{- Here is the Category instance for natural transformations. This
+time the type hom is inferred to have kind (* -> *) -> (* -> *) ->
+*. Identity and composition are both defined pointwise. -}
+
+instance Category (Nat :: (* -> *) -> (* -> *) -> *) where
+ ident = Nat id
+ compose f g = Nat (nu g . nu f)
+
+{- Let's define a type class which will capture the idea of a fixed point
+in a category. This generalizes the idea of recursive types in Hask: -}
+
+class Rec hom f t where
+ _in :: hom (f t) t
+ out :: hom t (f t)
+
+{- The class Rec defines two morphisms: _in, which is the constructor of
+the fixed point type t, and out, its destructor.
+
+The final piece is the definition of a higher order functor, which
+generalizes the typeclass Functor: -}
+
+class HFunctor hom f where
+ hmap :: hom a b -> hom (f a) (f b)
+
+{- Note the similarity with the type signature of the function fmap ::
+(Functor f) => (a -> b) -> f a -> f b. Indeed, specializing hom to
+(->) in the definition of HFunctor gives back the type signature of
+fmap.
+
+Finally, we can define folds and unfolds in a category. The
+definitions are as before, but with explicit composition, constructors
+and destructors replaced with the equivalent type class methods, and
+hmap in place of fmap: -}
+
+fold :: (Category hom, HFunctor hom f, Rec hom f rec) => hom (f t) t -> hom rec t
+fold phi = compose out (compose (hmap (fold phi)) phi)
+
+unfold :: (Category hom, HFunctor hom f, Rec hom f rec) => hom t (f t) -> hom t rec
+unfold phi = compose phi (compose (hmap (unfold phi)) _in)
+
+-- Now for some examples.
+
+-- The first example is a regular recursive datatype of binary leaf
+-- trees. The functor FTree is the base functor of this recursive type:
+
+data FTree a b = FLeaf a | FBranch b b
+data Tree a = Leaf a | Branch (Tree a) (Tree a)
+
+-- An instance of Rec shows the relationship between the defining functor
+-- and the recursive type itself:
+
+instance Rec (->) (FTree a) (Tree a) where
+ _in (FLeaf a) = Leaf a
+ _in (FBranch a b) = Branch a b
+ out (Leaf a) = FLeaf a
+ out (Branch a b) = FBranch a b
+
+-- FTree is indeed a functor, so it is also a HFunctor:
+
+instance HFunctor (->) (FTree a) where
+ hmap f (FLeaf a) = FLeaf a
+ hmap f (FBranch a b) = FBranch (f a) (f b)
+
+-- These instances are enough to define folds and unfolds for this
+-- type. The following fold calculates the depth of a tree:
+
+depth :: Tree a -> Int
+depth = (fold :: (FTree a Int -> Int) -> Tree a -> Int) phi where
+ phi :: FTree a Int -> Int
+ phi (FLeaf a) = 1
+ phi (FBranch a b) = 1 + max a b
+
+-- The second example is a fold for the nested (or non-regular)
+-- datatype of complete binary leaf trees. The higher order functor
+-- FCTree defines the type constructor CTree as its fixed point:
+
+data FCTree f a = FCLeaf a | FCBranch (f (a, a))
+ -- FCTree :: (* -> *) -> * -> *
+
+data CTree a = CLeaf a | CBranch (CTree (a, a))
+
+-- Again, we define type class instances for HFunctor and Rec:
+
+instance HFunctor Nat FCTree where
+ hmap (f :: Nat (f :: * -> *) (g :: * -> *)) = Nat ff where
+ ff :: forall a. FCTree f a -> FCTree g a
+ ff (FCLeaf a) = FCLeaf a
+ ff (FCBranch a) = FCBranch (nu f a)
+
+instance Rec Nat FCTree CTree where
+ _in = Nat inComplete where
+ inComplete (FCLeaf a) = CLeaf a
+ inComplete (FCBranch a) = CBranch a
+ out = Nat outComplete where
+ outComplete(CLeaf a) = FCLeaf a
+ outComplete(CBranch a) = FCBranch a
+
+-- Morphisms between type constructors are natural transformations, so we
+-- need a type constructor to act as the target of the fold. For our
+-- purposes, a constant functor will do:
+
+data K a b = K a -- K :: forall k. * -> k -> *
+
+
+-- And finally, the following fold calculates the depth of a complete binary leaf tree:
+
+cdepth :: CTree a -> Int
+cdepth c = let (K d) = nu (fold (Nat phi)) c in d where
+ phi :: FCTree (K Int) a -> K Int a
+ phi (FCLeaf a) = K 1
+ phi (FCBranch (K n)) = K (n + 1)
+
+{- The final example is a fold for the pair of mutually recursive
+datatype of lists of even and odd lengths. The fold will take a list
+of even length and produce a list of pairs.
+
+We cannot express type constructors in Haskell whose return kind is
+anything other than *, so we cheat a little and emulate the product
+kind using an arrow kind Choice -> *, where Choice is a two point
+kind, lifted using the XDataKinds extension: -}
+
+data Choice = Fst | Snd
+
+-- A morphism of pairs of types is just a pair of morphisms. For
+-- technical reasons, we represent this using a Church-style encoding,
+-- along with helper methods, as follows:
+
+newtype PHom h1 h2 p1 p2 = PHom { runPHom :: forall r. (h1 (p1 Fst) (p2 Fst) -> h2 (p1 Snd) (p2 Snd) -> r) -> r }
+
+mkPHom f g = PHom (\h -> h f g)
+fstPHom p = runPHom p (\f -> \g -> f)
+sndPHom p = runPHom p (\f -> \g -> g)
+
+-- Now, PHom allows us to take two categories and form the product category:
+
+instance (Category h1, Category h2) => Category (PHom h1 h2) where
+ ident = mkPHom ident ident
+ compose p1 p2 = mkPHom (compose (fstPHom p1) (fstPHom p2)) (compose (sndPHom p1) (sndPHom p2))
+
+-- We can define the types of lists of even and odd length as
+-- follows. Note that the kind annotation indicates the appearance of the
+-- kind Choice -> *:
+
+data FAlt :: * -> (Choice -> *) -> Choice -> * where
+ FZero :: FAlt a p Fst
+ FSucc1 :: a -> (p Snd) -> FAlt a p Fst
+ FSucc2 :: a -> (p Fst) -> FAlt a p Snd
+
+data Alt :: * -> Choice -> * where
+ Zero :: Alt a Fst
+ Succ1 :: a -> Alt a Snd -> Alt a Fst
+ Succ2 :: a -> Alt a Fst -> Alt a Snd
+
+deriving instance Show a => Show (Alt a b)
+
+-- Again, we need to define instances of Rec and HFunctor:
+
+instance Rec (PHom (->) (->)) (FAlt a) (Alt a) where
+ _in = mkPHom f g where
+ f FZero = Zero
+ f (FSucc1 a b) = Succ1 a b
+ g (FSucc2 a b) = Succ2 a b
+ out = mkPHom f g where
+ f Zero = FZero
+ f (Succ1 a b) = FSucc1 a b
+ g (Succ2 a b) = FSucc2 a b
+
+instance HFunctor (PHom (->) (->)) (FAlt a) where
+ hmap p = mkPHom hf hg where
+ hf FZero = FZero
+ hf (FSucc1 a x) = FSucc1 a (sndPHom p x)
+ hg (FSucc2 a x) = FSucc2 a (fstPHom p x)
+
+-- As before, we create a target type for our fold, and this time a type synonym as well:
+
+data K2 :: * -> * -> Choice -> * where
+ K21 :: a -> K2 a b Fst
+ K22 :: b -> K2 a b Snd
+
+type PairUpResult a = K2 [(a, a)] (a, [(a, a)])
+
+-- At last, here is the fold pairUp, taking even length lists to lists of pairs:
+
+pairUp :: Alt a Fst -> [(a, a)]
+pairUp xs = let (K21 xss) = (fstPHom (fold (mkPHom phi psi))) xs in xss
+ where
+ phi FZero = K21 []
+ phi (FSucc1 x1 (K22 (x2, xss))) = K21 ((x1, x2):xss)
+ psi (FSucc2 x (K21 xss)) = K22 (x, xss)
+
+main = print (Succ1 (0::Int) $ Succ2 1 $ Succ1 2 $ Succ2 3 $ Succ1 4 $ Succ2 5 Zero)
diff --git a/testsuite/tests/polykinds/Freeman.stdout b/testsuite/tests/polykinds/Freeman.stdout
new file mode 100644
index 0000000000..691a9d3e9b
--- /dev/null
+++ b/testsuite/tests/polykinds/Freeman.stdout
@@ -0,0 +1 @@
+Succ1 0 (Succ2 1 (Succ1 2 (Succ2 3 (Succ1 4 (Succ2 5 Zero)))))
diff --git a/testsuite/tests/polykinds/Makefile b/testsuite/tests/polykinds/Makefile
index 9a36a1c5fe..0ea3b684d3 100644
--- a/testsuite/tests/polykinds/Makefile
+++ b/testsuite/tests/polykinds/Makefile
@@ -1,3 +1,11 @@
TOP=../..
include $(TOP)/mk/boilerplate.mk
include $(TOP)/mk/test.mk
+
+# T5881 needs a script because it goes wrong only when
+# the modules are compiled separately, not with --make
+T5881:
+ $(RM) -f T5881.hi T5881.o T5881a.hi T5881a.o
+ '$(TEST_HC)' $(TEST_HC_OPTS) -c T5881a.hs
+ '$(TEST_HC)' $(TEST_HC_OPTS) -c T5881.hs
+
diff --git a/testsuite/tests/polykinds/MonoidsFD.hs b/testsuite/tests/polykinds/MonoidsFD.hs
new file mode 100644
index 0000000000..7cf9a599dd
--- /dev/null
+++ b/testsuite/tests/polykinds/MonoidsFD.hs
@@ -0,0 +1,106 @@
+-- From a blog post: http://www.jonmsterling.com/posts/2012-01-12-unifying-monoids-and-monads-with-polymorphic-kinds.html
+
+-------------------- FUNCTIONAL DEPENDENCY VERSION ----------------
+
+{-# LANGUAGE PolyKinds #-}
+{-# LANGUAGE MultiParamTypeClasses #-}
+{-# LANGUAGE FlexibleInstances, FlexibleContexts #-}
+{-# LANGUAGE UndecidableInstances #-}
+{-# LANGUAGE FunctionalDependencies #-}
+{-# LANGUAGE RankNTypes #-}
+{-# LANGUAGE TypeOperators #-}
+{-# LANGUAGE DeriveFunctor #-}
+{-# LANGUAGE UnicodeSyntax #-}
+
+module Main where
+import Control.Monad (Monad(..), join)
+import Data.Monoid (Monoid(..))
+
+-- First we define the type class Monoidy:
+
+class Monoidy to comp id m | m to → comp id where
+ munit :: id `to` m
+ mjoin :: (m `comp` m) `to` m
+
+-- We use functional dependencies to help the typechecker understand that
+-- m and ~> uniquely determine comp (times) and id.
+--
+-- This kind of type class would not have been possible in previous
+-- versions of GHC; with the new kind system, however, we can abstract
+-- over kinds!2 Now, let’s create types for the additive and
+-- multiplicative monoids over the natural numbers:
+
+newtype Sum a = Sum a deriving Show
+newtype Product a = Product a deriving Show
+instance Num a ⇒ Monoidy (→) (,) () (Sum a) where
+ munit _ = Sum 0
+ mjoin (Sum x, Sum y) = Sum $ x + y
+instance Num a ⇒ Monoidy (→) (,) () (Product a) where
+ munit _ = Product 1
+ mjoin (Product x, Product y) = Product $ x * y
+
+-- It will be slightly more complicated to make a monadic instance with
+-- Monoidy. First, we need to define the identity functor, a type for
+-- natural transformations, and a type for functor composition:
+
+data Id α = Id { runId :: α } deriving Functor
+
+-- A natural transformation (Λ f g α. (f α) → (g α)) may be encoded in Haskell as follows:
+
+data NT f g = NT { runNT :: ∀ α. f α → g α }
+
+-- Functor composition (Λ f g α. f (g α)) is encoded as follows:
+
+data FC f g α = FC { runFC :: f (g α) }
+
+-- Now, let us define some type T which should be a monad:
+
+data Wrapper a = Wrapper { runWrapper :: a } deriving (Show, Functor)
+instance Monoidy NT FC Id Wrapper where
+ munit = NT $ Wrapper . runId
+ mjoin = NT $ runWrapper . runFC
+
+-- With these defined, we can use them as follows:
+
+test1 = do { print (mjoin (munit (), Sum 2))
+ -- Sum 2
+ ; print (mjoin (Product 2, Product 3))
+ -- Product 6
+ ; print (runNT mjoin $ FC $ Wrapper (Wrapper "hello, world"))
+ -- Wrapper {runWrapper = "hello, world" }
+ }
+
+-- We can even provide a special binary operator for the appropriate monoids as follows:
+
+(<+>) :: Monoidy (→) (,) () m ⇒ m → m → m
+(<+>) = curry mjoin
+
+test2 = print (Sum 1 <+> Sum 2 <+> Sum 4) -- Sum 7
+
+-- Now, all the extra wrapping that Haskell requires for encoding this is
+-- rather cumbersome in actual use. So, we can give traditional Monad and
+-- Monoid instances for instances of Monoidy:
+
+instance Monoidy (→) (,) () m ⇒ Monoid m where
+ mempty = munit ()
+ mappend = curry mjoin
+
+-- instance (Functor m, Monoidy NT FC Id m) ⇒ Monad m where
+instance Monad Wrapper where
+ return x = runNT munit $ Id x
+ x >>= f = runNT mjoin $ FC (f `fmap` x)
+
+-- And so the following works:
+
+test3
+ = do { print (mappend mempty (Sum 2))
+ -- Sum 2
+ ; print (mappend (Product 2) (Product 3))
+ -- Product 6
+ ; print (join $ Wrapper $ Wrapper "hello")
+ -- Wrapper {runWrapper = "hello" }
+ ; print (Wrapper "hello, world" >>= return)
+ -- Wrapper {runWrapper = "hello, world" }
+ }
+
+main = test1 >> test2 >> test3
diff --git a/testsuite/tests/polykinds/MonoidsFD.stdout b/testsuite/tests/polykinds/MonoidsFD.stdout
new file mode 100644
index 0000000000..8d96f6d428
--- /dev/null
+++ b/testsuite/tests/polykinds/MonoidsFD.stdout
@@ -0,0 +1,8 @@
+Sum 2
+Product 6
+Wrapper {runWrapper = "hello, world"}
+Sum 7
+Sum 2
+Product 6
+Wrapper {runWrapper = "hello"}
+Wrapper {runWrapper = "hello, world"}
diff --git a/testsuite/tests/polykinds/MonoidsTF.hs b/testsuite/tests/polykinds/MonoidsTF.hs
new file mode 100644
index 0000000000..f289912ec6
--- /dev/null
+++ b/testsuite/tests/polykinds/MonoidsTF.hs
@@ -0,0 +1,116 @@
+-- From a blog post: http://www.jonmsterling.com/posts/2012-01-12-unifying-monoids-and-monads-with-polymorphic-kinds.html
+
+{-# LANGUAGE PolyKinds #-}
+{-# LANGUAGE MultiParamTypeClasses #-}
+{-# LANGUAGE FlexibleInstances, FlexibleContexts #-}
+{-# LANGUAGE UndecidableInstances #-}
+{-# LANGUAGE FunctionalDependencies #-}
+{-# LANGUAGE RankNTypes #-}
+{-# LANGUAGE TypeOperators #-}
+{-# LANGUAGE DeriveFunctor #-}
+{-# LANGUAGE UnicodeSyntax #-}
+{-# LANGUAGE TypeFamilies #-}
+
+module Main where
+import Control.Monad (Monad(..), join)
+import Data.Monoid (Monoid(..))
+
+-- First we define the type class Monoidy:
+
+class Monoidy (to :: k0 -> k1 -> *) (m :: k1) where
+ type MComp to m :: k1 -> k1 -> k0
+ type MId to m :: k0
+ munit :: MId to m `to` m
+ mjoin :: MComp to m m m `to` m
+
+-- We use functional dependencies to help the typechecker understand that
+-- m and ~> uniquely determine comp (times) and id.
+
+-- This kind of type class would not have been possible in previous
+-- versions of GHC; with the new kind system, however, we can abstract
+-- over kinds!2 Now, let’s create types for the additive and
+-- multiplicative monoids over the natural numbers:
+
+newtype Sum a = Sum a deriving Show
+newtype Product a = Product a deriving Show
+instance Num a ⇒ Monoidy (→) (Sum a) where
+ type MComp (→) (Sum a) = (,)
+ type MId (→) (Sum a) = ()
+ munit _ = Sum 0
+ mjoin (Sum x, Sum y) = Sum $ x + y
+
+instance Num a ⇒ Monoidy (→) (Product a) where
+ type MComp (→) (Product a) = (,)
+ type MId (→) (Product a) = ()
+ munit _ = Product 1
+ mjoin (Product x, Product y) = Product $ x * y
+
+-- It will be slightly more complicated to make a monadic instance with
+-- Monoidy. First, we need to define the identity functor, a type for
+-- natural transformations, and a type for functor composition:
+
+data Id α = Id { runId :: α } deriving Functor
+
+-- A natural transformation (Λ f g α. (f α) → (g α)) may be encoded in Haskell as follows:
+
+data NT f g = NT { runNT :: ∀ α. f α → g α }
+
+-- Functor composition (Λ f g α. f (g α)) is encoded as follows:
+
+data FC f g α = FC { runFC :: f (g α) }
+
+-- Now, let us define some type T which should be a monad:
+
+data Wrapper a = Wrapper { runWrapper :: a } deriving (Show, Functor)
+instance Monoidy NT Wrapper where
+ type MComp NT Wrapper = FC
+ type MId NT Wrapper = Id
+ munit = NT $ Wrapper . runId
+ mjoin = NT $ runWrapper . runFC
+
+
+-- With these defined, we can use them as follows:
+
+test1 = do { print (mjoin (munit (), Sum 2))
+ -- Sum 2
+ ; print (mjoin (Product 2, Product 3))
+ -- Product 6
+ ; print (runNT mjoin $ FC $ Wrapper (Wrapper "hello, world"))
+ -- Wrapper {runWrapper = "hello, world" }
+ }
+
+-- We can even provide a special binary operator for the appropriate monoids as follows:
+
+(<+>) :: (Monoidy (→) m, MId (→) m ~ (), MComp (→) m ~ (,))
+ ⇒ m → m → m
+(<+>) = curry mjoin
+
+test2 = print (Sum 1 <+> Sum 2 <+> Sum 4) -- Sum 7
+
+-- Now, all the extra wrapping that Haskell requires for encoding this is
+-- rather cumbersome in actual use. So, we can give traditional Monad and
+-- Monoid instances for instances of Monoidy:
+
+instance (MId (→) m ~ (), MComp (→) m ~ (,), Monoidy (→) m)
+ ⇒ Monoid m where
+ mempty = munit ()
+ mappend = curry mjoin
+
+instance Monad Wrapper where
+ return x = runNT munit $ Id x
+ x >>= f = runNT mjoin $ FC (f `fmap` x)
+
+-- And so the following works:
+
+test3
+ = do { print (mappend mempty (Sum 2))
+ -- Sum 2
+ ; print (mappend (Product 2) (Product 3))
+ -- Product 6
+ ; print (join $ Wrapper $ Wrapper "hello")
+ -- Wrapper {runWrapper = "hello" }
+ ; print (Wrapper "hello, world" >>= return)
+ -- Wrapper {runWrapper = "hello, world" }
+ }
+
+main = test1 >> test2 >> test3
diff --git a/testsuite/tests/polykinds/MonoidsTF.stdout b/testsuite/tests/polykinds/MonoidsTF.stdout
new file mode 100644
index 0000000000..8d96f6d428
--- /dev/null
+++ b/testsuite/tests/polykinds/MonoidsTF.stdout
@@ -0,0 +1,8 @@
+Sum 2
+Product 6
+Wrapper {runWrapper = "hello, world"}
+Sum 7
+Sum 2
+Product 6
+Wrapper {runWrapper = "hello"}
+Wrapper {runWrapper = "hello, world"}
diff --git a/testsuite/tests/polykinds/PolyKinds01.hs b/testsuite/tests/polykinds/PolyKinds01.hs
index 2f5f1e8521..918e5a9a44 100644
--- a/testsuite/tests/polykinds/PolyKinds01.hs
+++ b/testsuite/tests/polykinds/PolyKinds01.hs
@@ -1,4 +1,5 @@
-{-# LANGUAGE PolyKinds #-}
+{-# LANGUAGE DataKinds #-}
+{-# LANGUAGE KindSignatures #-}
{-# LANGUAGE GADTs #-}
module PolyKinds01 where
diff --git a/testsuite/tests/polykinds/PolyKinds02.hs b/testsuite/tests/polykinds/PolyKinds02.hs
index 259b53e21d..6a5559ccae 100644
--- a/testsuite/tests/polykinds/PolyKinds02.hs
+++ b/testsuite/tests/polykinds/PolyKinds02.hs
@@ -1,4 +1,5 @@
-{-# LANGUAGE PolyKinds #-}
+{-# LANGUAGE DataKinds #-}
+{-# LANGUAGE KindSignatures #-}
{-# LANGUAGE GADTs #-}
module PolyKinds02 where
diff --git a/testsuite/tests/polykinds/PolyKinds02.stderr b/testsuite/tests/polykinds/PolyKinds02.stderr
index 7c732220b7..3c61552662 100644
--- a/testsuite/tests/polykinds/PolyKinds02.stderr
+++ b/testsuite/tests/polykinds/PolyKinds02.stderr
@@ -1,5 +1,5 @@
-PolyKinds02.hs:12:16:
+PolyKinds02.hs:13:16:
Kind mis-match
The second argument of `Vec' should have kind `Nat',
but `Nat' has kind `*'
diff --git a/testsuite/tests/polykinds/PolyKinds04.stderr b/testsuite/tests/polykinds/PolyKinds04.stderr
index f5cd44c9c1..484b0991ab 100644
--- a/testsuite/tests/polykinds/PolyKinds04.stderr
+++ b/testsuite/tests/polykinds/PolyKinds04.stderr
@@ -1,8 +1,6 @@
-
-PolyKinds04.hs:5:16:
- `Maybe' is not applied to enough type arguments
- The first argument of `A' should have kind `*',
- but `Maybe' has kind `* -> *'
- In the type `A Maybe'
- In the definition of data constructor `B1'
- In the data type declaration for `B'
+
+PolyKinds04.hs:5:16:
+ Expecting one more argument to `Maybe'
+ In the type `A Maybe'
+ In the definition of data constructor `B1'
+ In the data declaration for `B'
diff --git a/testsuite/tests/polykinds/PolyKinds05.hs b/testsuite/tests/polykinds/PolyKinds05.hs
index f86433c90f..50bea433a8 100644
--- a/testsuite/tests/polykinds/PolyKinds05.hs
+++ b/testsuite/tests/polykinds/PolyKinds05.hs
@@ -5,5 +5,5 @@ module PolyKinds05 where
data A f
data B = B1 (A Maybe)
--- Should fail. We have -XPolyKinds on, so `A` gets the polymorphic kind
+-- Should work. We have -XPolyKinds on, so `A` gets the polymorphic kind
-- forall k. k -> *
diff --git a/testsuite/tests/polykinds/PolyKinds06.hs b/testsuite/tests/polykinds/PolyKinds06.hs
index b89d3fb9f8..691d103d6f 100644
--- a/testsuite/tests/polykinds/PolyKinds06.hs
+++ b/testsuite/tests/polykinds/PolyKinds06.hs
@@ -1,4 +1,4 @@
-{-# LANGUAGE PolyKinds #-}
+{-# LANGUAGE DataKinds, KindSignatures #-}
{-# LANGUAGE GADTs #-}
module PolyKinds06 where
diff --git a/testsuite/tests/polykinds/PolyKinds06.stderr b/testsuite/tests/polykinds/PolyKinds06.stderr
index 151e636cb1..314bb20a87 100644
--- a/testsuite/tests/polykinds/PolyKinds06.stderr
+++ b/testsuite/tests/polykinds/PolyKinds06.stderr
@@ -1,4 +1,6 @@
-
-PolyKinds06.hs:9:11:
- Promoted kind `A' used in a mutually recursive group
- In the kind `A -> *'
+
+PolyKinds06.hs:10:11:
+ Promoted kind `A1' used in a mutually recursive group
+ In the type `B A1'
+ In the definition of data constructor `B1'
+ In the data declaration for `B'
diff --git a/testsuite/tests/polykinds/PolyKinds07.hs b/testsuite/tests/polykinds/PolyKinds07.hs
index b132b0931e..27d0acecb1 100644
--- a/testsuite/tests/polykinds/PolyKinds07.hs
+++ b/testsuite/tests/polykinds/PolyKinds07.hs
@@ -1,4 +1,4 @@
-{-# LANGUAGE PolyKinds #-}
+{-# LANGUAGE DataKinds #-}
{-# LANGUAGE GADTs #-}
module PolyKinds07 where
diff --git a/testsuite/tests/polykinds/PolyKinds07.stderr b/testsuite/tests/polykinds/PolyKinds07.stderr
index 77fd295fa3..203e3aad4b 100644
--- a/testsuite/tests/polykinds/PolyKinds07.stderr
+++ b/testsuite/tests/polykinds/PolyKinds07.stderr
@@ -1,6 +1,6 @@
-
-PolyKinds07.hs:10:11:
- Opaque thing `A1' used as a type
- In the type `B A1'
- In the definition of data constructor `B1'
- In the data type declaration for `B'
+
+PolyKinds07.hs:10:11:
+ Promoted kind `A1' used in a mutually recursive group
+ In the type `B A1'
+ In the definition of data constructor `B1'
+ In the data declaration for `B'
diff --git a/testsuite/tests/polykinds/PolyKinds09.hs b/testsuite/tests/polykinds/PolyKinds09.hs
index 4b6f412f96..b874d5ca16 100644
--- a/testsuite/tests/polykinds/PolyKinds09.hs
+++ b/testsuite/tests/polykinds/PolyKinds09.hs
@@ -1,4 +1,4 @@
-{-# LANGUAGE PolyKinds #-}
+{-# LANGUAGE DataKinds #-}
{-# LANGUAGE DefaultSignatures #-}
{-# LANGUAGE TypeFamilies #-}
{-# LANGUAGE GADTs #-}
diff --git a/testsuite/tests/polykinds/PolyKinds10.hs b/testsuite/tests/polykinds/PolyKinds10.hs
index b5735326fe..b023fd092f 100644
--- a/testsuite/tests/polykinds/PolyKinds10.hs
+++ b/testsuite/tests/polykinds/PolyKinds10.hs
@@ -5,7 +5,7 @@
{-# LANGUAGE RankNTypes #-}
{-# LANGUAGE ScopedTypeVariables #-}
{-# LANGUAGE FlexibleContexts #-}
-{-# LANGUAGE PolyKinds #-}
+{-# LANGUAGE DataKinds #-}
module Main where
diff --git a/testsuite/tests/polykinds/PolyKinds11.hs b/testsuite/tests/polykinds/PolyKinds11.hs
new file mode 100644
index 0000000000..f80fa3fa7e
--- /dev/null
+++ b/testsuite/tests/polykinds/PolyKinds11.hs
@@ -0,0 +1,12 @@
+{-# LANGUAGE DataKinds #-}
+{-# LANGUAGE GADTs #-}
+
+module PolyKinds11 where
+
+-- Test inference
+
+data Nat = Ze | Su Nat
+
+data Vec a n where -- Vec :: * -> Nat -> *
+ VNil :: Vec a Ze
+ VCons :: a -> Vec a n -> Vec a (Su n)
diff --git a/testsuite/tests/polykinds/PolyKinds12.hs b/testsuite/tests/polykinds/PolyKinds12.hs
new file mode 100644
index 0000000000..4c1cc4df5c
--- /dev/null
+++ b/testsuite/tests/polykinds/PolyKinds12.hs
@@ -0,0 +1,34 @@
+{-# LANGUAGE DataKinds, PolyKinds, TypeFamilies, GADTs #-}
+
+module PolyKinds12 where
+
+type family If1 (b::Bool) (t::k) (f::k) :: k
+type instance If1 True t f = t
+type instance If1 False t f = f
+
+data SBool b where
+ STrue :: SBool True
+ SFalse :: SBool False
+
+test1 :: SBool b -> If1 b Int Char
+test1 STrue = 42
+test1 SFalse = 'H'
+
+test2 :: SBool b -> If1 b Int Char
+test2 STrue = 42
+test2 SFalse = 'H'
+
+type family Apply f x
+type instance Apply f x = f x
+
+higher1v1 :: SBool b -> (If1 b Maybe []) Char
+higher1v1 STrue = Just 'H'
+higher1v1 SFalse = "Hello"
+
+higher1v2 :: SBool b -> Apply (If1 b Maybe []) Char
+higher1v2 STrue = Just 'H'
+higher1v2 SFalse = "Hello"
+
+higher2 :: SBool b -> If1 b Maybe [] Int
+higher2 STrue = Just 42
+higher2 SFalse = [45]
diff --git a/testsuite/tests/polykinds/PolyKinds13.hs b/testsuite/tests/polykinds/PolyKinds13.hs
new file mode 100644
index 0000000000..a754683324
--- /dev/null
+++ b/testsuite/tests/polykinds/PolyKinds13.hs
@@ -0,0 +1,29 @@
+{-# LANGUAGE PolyKinds #-}
+{-# LANGUAGE FlexibleInstances #-}
+
+module PolyKinds13 where
+
+
+data Proxy a = Proxy
+
+instance Show (Proxy a) where
+ show _ = "Proxy"
+
+instance Functor Proxy where
+ fmap _ Proxy = Proxy
+
+
+data TypeRep = TypeRep
+
+class MyTypeable t where
+-- MyTypeable :: forall k. k -> Constraint
+ myTypeOf :: Proxy t -> TypeRep
+ myTypeOf _ = TypeRep
+
+data Apply f t = Apply (f t)
+-- Apply :: forall k. (k -> *) -> k -> *
+
+instance MyTypeable Apply
+-- df :: forall k. MyTypeable ((k -> *) -> k -> *) (Apply k)
+instance MyTypeable Int
+instance MyTypeable Maybe
diff --git a/testsuite/tests/polykinds/T5716.hs b/testsuite/tests/polykinds/T5716.hs
new file mode 100644
index 0000000000..572de5e4e8
--- /dev/null
+++ b/testsuite/tests/polykinds/T5716.hs
@@ -0,0 +1,13 @@
+{-# LANGUAGE GADTs #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE PolyKinds, DataKinds #-}
+
+module T5716 where
+
+
+data family DF a
+data instance DF Int = DFInt
+
+data U = U1 (DF Int)
+
+data I :: U -> * where I1 :: I (U1 DFInt)
diff --git a/testsuite/tests/polykinds/T5716.stderr b/testsuite/tests/polykinds/T5716.stderr
new file mode 100644
index 0000000000..76b20cdf86
--- /dev/null
+++ b/testsuite/tests/polykinds/T5716.stderr
@@ -0,0 +1,6 @@
+
+T5716.hs:13:33:
+ `U1' of type `DF * Int -> U' is not promotable
+ In the type `I (U1 DFInt)'
+ In the definition of data constructor `I1'
+ In the data declaration for `I'
diff --git a/testsuite/tests/polykinds/T5717.hs b/testsuite/tests/polykinds/T5717.hs
new file mode 100644
index 0000000000..5dd7ac4b58
--- /dev/null
+++ b/testsuite/tests/polykinds/T5717.hs
@@ -0,0 +1,20 @@
+{-# LANGUAGE ScopedTypeVariables #-}
+{-# LANGUAGE PolyKinds #-}
+
+module T5717 where
+
+
+data TypeRep = TypeRep
+
+data Proxy t = Proxy
+
+typeRep :: Proxy a -> TypeRep
+typeRep Proxy = TypeRep
+
+-- This one works fine:
+typeOf :: forall a. a -> TypeRep
+typeOf _ = typeRep (Proxy :: Proxy a)
+
+-- But this one panics!
+typeOf1 :: forall t a. t a -> TypeRep
+typeOf1 _ = typeRep (Proxy :: Proxy t)
diff --git a/testsuite/tests/polykinds/T5770.hs b/testsuite/tests/polykinds/T5770.hs
new file mode 100644
index 0000000000..132a1538a8
--- /dev/null
+++ b/testsuite/tests/polykinds/T5770.hs
@@ -0,0 +1,21 @@
+{-# LANGUAGE TypeFamilies,
+ PolyKinds,
+ ScopedTypeVariables
+ #-}
+
+module T5770 where
+
+convert :: a -> b
+convert = convert
+
+type family Foo a
+type instance Foo Int = Bool
+
+barT5770 :: forall a b c dummya. (b -> c) -> ((Foo a) -> c)
+barT5770 f = (convert f :: (Foo a) -> c)
+
+barT5769 :: forall b a. b -> (Foo a)
+barT5769 f = (convert f :: (Foo a))
+
+barT5768 :: forall b a. b -> (Foo a)
+barT5768 f = (convert f :: (Foo a))
diff --git a/testsuite/tests/polykinds/T5771.hs b/testsuite/tests/polykinds/T5771.hs
new file mode 100644
index 0000000000..00d760439a
--- /dev/null
+++ b/testsuite/tests/polykinds/T5771.hs
@@ -0,0 +1,29 @@
+{-# LANGUAGE DataKinds, PolyKinds, GADTs, TypeOperators #-}
+{-# LANGUAGE MultiParamTypeClasses #-}
+
+module T5771 where
+
+class IndexedMonad m where
+ unit :: a -> m i i a
+ bind :: m i j a -> (a -> m j k b) -> m i k b
+
+newtype IndexedIO i j a = IndexedIO {runIndexedIO :: IO a}
+
+-- i and j are both *; instance is accepted
+instance IndexedMonad IndexedIO where
+ unit = IndexedIO . return
+ bind m k = IndexedIO $ runIndexedIO m >>= runIndexedIO . k
+infixl 1 `bind`
+
+data HList xs where
+ N :: HList '[]
+ (:>) :: a -> HList as -> HList (a ': as)
+infixr 5 :>
+
+newtype HLState xs ys a = HLState {runHLState :: HList xs -> (a, HList ys)}
+
+-- i and j are now [*]; rejected with the MPTCs message
+instance IndexedMonad HLState where
+ unit x = HLState $ \s -> (x, s)
+ bind (HLState f) k = HLState $ \xs ->
+ case f xs of (a, ys) -> runHLState (k a) ys
diff --git a/testsuite/tests/polykinds/T5798.hs b/testsuite/tests/polykinds/T5798.hs
new file mode 100644
index 0000000000..68f543b1c2
--- /dev/null
+++ b/testsuite/tests/polykinds/T5798.hs
@@ -0,0 +1,8 @@
+{-# LANGUAGE PolyKinds #-}
+
+module T5798 where
+
+data Proxy t = ProxyC
+
+test :: Proxy '[Int, Bool]
+test = ProxyC
diff --git a/testsuite/tests/polykinds/T5862.hs b/testsuite/tests/polykinds/T5862.hs
new file mode 100644
index 0000000000..e2b37bfb3c
--- /dev/null
+++ b/testsuite/tests/polykinds/T5862.hs
@@ -0,0 +1,27 @@
+{-# LANGUAGE PolyKinds,
+ TypeFamilies,
+ GADTs,
+ DataKinds,
+ KindSignatures
+ #-}
+
+module T5862 where
+
+data Nat = Zero | Succ Nat
+
+data SNat a where
+ SZero :: SNat 'Zero
+ SSucc :: SNat n -> SNat ('Succ n)
+
+data SBool a where
+ SFalse :: SBool 'False
+ STrue :: SBool 'True
+
+data SMaybe a where
+ SNothing :: SMaybe 'Nothing
+ SJust :: Sing a -> SMaybe ('Just a)
+
+type family Sing a
+type instance Sing (a :: Nat) = SNat a
+type instance Sing (a :: Bool) = SBool a
+type instance Sing (a :: Maybe *) = SMaybe a -- want to say Maybe k
diff --git a/testsuite/tests/polykinds/T5881.hs b/testsuite/tests/polykinds/T5881.hs
new file mode 100644
index 0000000000..002907ee07
--- /dev/null
+++ b/testsuite/tests/polykinds/T5881.hs
@@ -0,0 +1,5 @@
+module T5881 where
+
+import T5881a (T')
+
+type DOne = T'
diff --git a/testsuite/tests/polykinds/T5881a.hs b/testsuite/tests/polykinds/T5881a.hs
new file mode 100644
index 0000000000..9fb36d6f65
--- /dev/null
+++ b/testsuite/tests/polykinds/T5881a.hs
@@ -0,0 +1,4 @@
+{-# LANGUAGE DataKinds #-}
+module T5881a where
+data K = T
+type T' = T
diff --git a/testsuite/tests/polykinds/T5912.hs b/testsuite/tests/polykinds/T5912.hs
new file mode 100644
index 0000000000..33c41950ca
--- /dev/null
+++ b/testsuite/tests/polykinds/T5912.hs
@@ -0,0 +1,12 @@
+{-# LANGUAGE DataKinds #-}
+
+-- This bug related to type trimming, and
+-- hence showed up only with -O0
+
+module Bug() where
+
+data UnaryTypeC a = UnaryDataC a
+
+type Bug = 'UnaryDataC
+
+
diff --git a/testsuite/tests/polykinds/T5935.hs b/testsuite/tests/polykinds/T5935.hs
new file mode 100644
index 0000000000..3f9184d1c7
--- /dev/null
+++ b/testsuite/tests/polykinds/T5935.hs
@@ -0,0 +1,13 @@
+{-# LANGUAGE PolyKinds,
+ GADTs,
+ DataKinds,
+ KindSignatures
+ #-}
+
+module T5935 where
+
+data SList a where
+ SNil :: SList '[]
+
+x :: SList ('[] :: [Bool])
+x = SNil
diff --git a/testsuite/tests/polykinds/T5937.hs b/testsuite/tests/polykinds/T5937.hs
new file mode 100644
index 0000000000..20bc59e6f1
--- /dev/null
+++ b/testsuite/tests/polykinds/T5937.hs
@@ -0,0 +1,6 @@
+{-# LANGUAGE PolyKinds, KindSignatures, DataKinds, GADTs #-}
+module T5937 where
+
+data SMaybe :: (k -> *) -> Maybe k -> * where
+ SNothing :: SMaybe s 'Nothing
+ SJust :: s a -> SMaybe s ('Just a)
diff --git a/testsuite/tests/polykinds/T5948.hs b/testsuite/tests/polykinds/T5948.hs
new file mode 100644
index 0000000000..06dfc4c793
--- /dev/null
+++ b/testsuite/tests/polykinds/T5948.hs
@@ -0,0 +1,7 @@
+{-# LANGUAGE DataKinds, TypeOperators #-}
+
+module T5948 where
+
+type Foo = (Int ': '[])
+
+type Bar = Int ': '[]
diff --git a/testsuite/tests/polykinds/all.T b/testsuite/tests/polykinds/all.T
index dddedaf2c4..e8064f1db6 100644
--- a/testsuite/tests/polykinds/all.T
+++ b/testsuite/tests/polykinds/all.T
@@ -7,8 +7,28 @@ test('PolyKinds01', normal, compile, [''])
test('PolyKinds03', normal, compile, [''])
test('PolyKinds05', normal, compile, [''])
test('PolyKinds08', normal, compile, [''])
+test('PolyKinds11', normal, compile, [''])
+test('PolyKinds13', normal, compile, [''])
test('PolyKinds02', normal, compile_fail, [''])
test('PolyKinds04', normal, compile_fail, [''])
test('PolyKinds06', normal, compile_fail, [''])
test('PolyKinds07', normal, compile_fail, [''])
+
+test('PolyKinds12', normal, compile, [''])
+
+test('Freeman', normal, compile_and_run, [''])
+test('MonoidsTF', normal, compile_and_run, [''])
+test('MonoidsFD', normal, compile_and_run, [''])
+
+test('T5798', normal, compile, [''])
+test('T5770', normal, compile, [''])
+test('T5771', normal, compile, [''])
+test('T5717', normal, compile, [''])
+test('T5862', normal, compile, [''])
+test('T5912', normal, compile, [''])
+test('T5881', normal, run_command, ['$MAKE -s --no-print-directory T5881'])
+test('T5716', normal, compile_fail, [''])
+test('T5937', normal, compile, [''])
+test('T5935', normal, compile, [''])
+test('T5948', normal, compile, [''])
diff --git a/testsuite/tests/profiling/should_run/2592.stderr b/testsuite/tests/profiling/should_run/2592.stderr
index b51bee2097..478676340a 100644
--- a/testsuite/tests/profiling/should_run/2592.stderr
+++ b/testsuite/tests/profiling/should_run/2592.stderr
@@ -1,3 +1,3 @@
-Heap exhausted;
+2592: Heap exhausted;
Current maximum heap size is 1048576 bytes (1 MB);
use `+RTS -M<size>' to increase it.
diff --git a/testsuite/tests/profiling/should_run/T5363.hs b/testsuite/tests/profiling/should_run/T5363.hs
new file mode 100644
index 0000000000..5167bbe6e0
--- /dev/null
+++ b/testsuite/tests/profiling/should_run/T5363.hs
@@ -0,0 +1,12 @@
+import Data.Array.Unboxed
+
+main = do
+ let l1 = [1..10] :: [Int]
+ let l2 = [ map (i+) l1 | i <- [1..500000] ]
+ let l3 = map (\l -> listArray (1,length l) l) l2 :: [UArray Int Int]
+ print $ accumulate l3 0
+
+accumulate [] rv = rv
+accumulate (h:t) rv =
+ let nextRv = (rv + sum (elems h)) in
+ accumulate t $! nextRv
diff --git a/testsuite/tests/profiling/should_run/T5363.stdout b/testsuite/tests/profiling/should_run/T5363.stdout
new file mode 100644
index 0000000000..a10b91560b
--- /dev/null
+++ b/testsuite/tests/profiling/should_run/T5363.stdout
@@ -0,0 +1 @@
+1250030000000
diff --git a/testsuite/tests/profiling/should_run/T5363.stdout-ws-32 b/testsuite/tests/profiling/should_run/T5363.stdout-ws-32
new file mode 100644
index 0000000000..7d702d006b
--- /dev/null
+++ b/testsuite/tests/profiling/should_run/T5363.stdout-ws-32
@@ -0,0 +1 @@
+194516864
diff --git a/testsuite/tests/profiling/should_run/all.T b/testsuite/tests/profiling/should_run/all.T
index bfd595492a..0298c42141 100644
--- a/testsuite/tests/profiling/should_run/all.T
+++ b/testsuite/tests/profiling/should_run/all.T
@@ -3,7 +3,7 @@
extra_prof_ways = ['prof', 'prof_hc_hb', 'prof_hb', 'prof_hd', 'prof_hy', 'prof_hr']
test('heapprof001',
- composes([only_ways(prof_ways + extra_prof_ways),
+ composes([only_ways(prof_ways),
extra_ways(extra_prof_ways),
req_profiling,
extra_run_opts('7')]),
@@ -23,44 +23,50 @@ test('T3001-2',
compile_and_run, ['-package bytestring'])
test('scc001', [req_profiling,
- extra_ways(['prof']), only_ways(['prof'] + prof_ways)],
+ extra_ways(['prof']), only_ways(prof_ways)],
compile_and_run,
['-fno-state-hack']) # Note [consistent stacks]
test('scc002', [req_profiling,
- extra_ways(['prof']), only_ways(['prof'] + prof_ways)],
+ extra_ways(['prof']), only_ways(prof_ways)],
compile_and_run,
[''])
test('scc003', [req_profiling,
- extra_ways(['prof']), only_ways(['prof'] + prof_ways)],
+ extra_ways(['prof']), only_ways(prof_ways)],
compile_and_run,
['-fno-state-hack']) # Note [consistent stacks]
+test('scc004', [req_profiling,
+ extra_ways(['prof']), only_ways(prof_ways),
+ expect_broken(5654)],
+ compile_and_run,
+ [''])
+
test('5314',
- [ only_ways(prof_ways + extra_prof_ways),
+ [ only_ways(prof_ways),
extra_ways(extra_prof_ways),
req_profiling ],
compile_and_run,
[''])
test('T680',
- [ req_profiling, extra_ways(['prof']), only_ways(['prof'] + prof_ways) ],
+ [ req_profiling, extra_ways(['prof']), only_ways(prof_ways) ],
compile_and_run,
['-fno-full-laziness']) # Note [consistent stacks]
test('T2552',
- [ req_profiling, extra_ways(['prof']), only_ways(['prof'] + prof_ways) ],
+ [ req_profiling, extra_ways(['prof']), only_ways(prof_ways) ],
compile_and_run,
[''])
test('T949',
- [ req_profiling, extra_ways(extra_prof_ways), only_ways(extra_prof_ways) ],
+ [ req_profiling, extra_ways(extra_prof_ways), only_ways(prof_ways) ],
compile_and_run,
[''])
test('ioprof',
- [ req_profiling, extra_ways(['prof']), only_ways(['prof'] + prof_ways),
+ [ req_profiling, extra_ways(['prof']), only_ways(prof_ways),
expect_fail_for(['prof']),
# The results for 'prof' are fine, but the ordering changes.
# We care more about getting the optimised results right, so ignoring
@@ -72,17 +78,17 @@ test('ioprof',
# These two examples are from the User's Guide:
test('prof-doc-fib',
- [ req_profiling, extra_ways(['prof']), only_ways(['prof'] + prof_ways) ],
+ [ req_profiling, extra_ways(['prof']), only_ways(prof_ways) ],
compile_and_run,
[''])
test('prof-doc-last',
- [ req_profiling, extra_ways(['prof']), only_ways(['prof'] + prof_ways) ],
+ [ req_profiling, extra_ways(['prof']), only_ways(prof_ways) ],
compile_and_run,
['-fno-full-laziness'])
test('T5559', # unicode in cost centre names
- [ req_profiling, extra_ways(['prof']), only_ways(['prof'] + prof_ways) ],
+ [ req_profiling, extra_ways(['prof']), only_ways(prof_ways) ],
compile_and_run,
[''])
@@ -94,3 +100,16 @@ test('T5559', # unicode in cost centre names
# -fno-state-hack
# -fno-full-laziness
+test('callstack001',
+ [ req_profiling, extra_ways(['prof']), only_ways(prof_ways) ],
+ compile_and_run, ['-fprof-auto-calls -fno-full-laziness -fno-state-hack'])
+
+test('callstack002',
+ [ req_profiling, extra_ways(['prof']), only_ways(prof_ways) ],
+ compile_and_run, ['-fprof-auto-calls -fno-full-laziness -fno-state-hack'])
+
+# Should not stack overflow with -prof -auto-all
+test('T5363',
+ [ req_profiling, extra_ways(['prof']), only_ways(prof_ways) ],
+ compile_and_run, [''])
+
diff --git a/testsuite/tests/profiling/should_run/callstack001.hs b/testsuite/tests/profiling/should_run/callstack001.hs
new file mode 100644
index 0000000000..fe2f31336e
--- /dev/null
+++ b/testsuite/tests/profiling/should_run/callstack001.hs
@@ -0,0 +1,18 @@
+module Main where
+
+import GHC.Stack
+import Prelude hiding (mapM)
+
+f :: Int -> IO Int
+f x = do currentCallStack >>= print; return (x+1)
+
+mapM :: Monad m => (a -> m b) -> [a] -> m [b]
+mapM f xs = go xs
+ where go [] = return []
+ go (x:xs) = do
+ x' <- f x
+ xs' <- mapM f xs
+ return (x':xs')
+
+main = mapM f [42,42]
+
diff --git a/testsuite/tests/profiling/should_run/callstack001.stdout b/testsuite/tests/profiling/should_run/callstack001.stdout
new file mode 100644
index 0000000000..f5a8580d78
--- /dev/null
+++ b/testsuite/tests/profiling/should_run/callstack001.stdout
@@ -0,0 +1,2 @@
+["Main.CAF (<entire-module>)","Main.main (callstack001.hs:17:8-21)","Main.mapM (callstack001.hs:10:13-17)","Main.mapM.go (callstack001.hs:13:17-19)","Main.f (callstack001.hs:7:10-35)"]
+["Main.CAF (<entire-module>)","Main.main (callstack001.hs:17:8-21)","Main.mapM (callstack001.hs:10:13-17)","Main.mapM.go (callstack001.hs:13:17-19)","Main.f (callstack001.hs:7:10-35)"]
diff --git a/testsuite/tests/profiling/should_run/callstack002.hs b/testsuite/tests/profiling/should_run/callstack002.hs
new file mode 100644
index 0000000000..437e2cb3d9
--- /dev/null
+++ b/testsuite/tests/profiling/should_run/callstack002.hs
@@ -0,0 +1,21 @@
+{-# LANGUAGE BangPatterns #-}
+module Main where
+
+import Debug.Trace
+import Text.Printf
+import Prelude hiding (map)
+import GHC.Stack
+
+f :: Int -> Int
+f x = traceStack (printf "f: %d" x) (x * 2)
+
+map :: (a -> b) -> [a] -> [b]
+map f xs = go xs
+ where go [] = []
+ go (x:xs) = f x : map f xs
+
+main = do
+ let xs = map f [42,43]
+ print xs
+ putStrLn =<< renderStack `fmap` (whoCreated $! head xs)
+
diff --git a/testsuite/tests/profiling/should_run/callstack002.stderr b/testsuite/tests/profiling/should_run/callstack002.stderr
new file mode 100644
index 0000000000..b4bb0d5a7a
--- /dev/null
+++ b/testsuite/tests/profiling/should_run/callstack002.stderr
@@ -0,0 +1,16 @@
+f: 42
+Stack trace:
+ Main.f (callstack002.hs:10:7-43)
+ Main.map.go (callstack002.hs:15:21-23)
+ Main.map.go (callstack002.hs:15:21-34)
+ Main.map (callstack002.hs:13:12-16)
+ Main.main.xs (callstack002.hs:18:12-24)
+ Main.CAF (<entire-module>)
+f: 43
+Stack trace:
+ Main.f (callstack002.hs:10:7-43)
+ Main.map.go (callstack002.hs:15:21-23)
+ Main.map.go (callstack002.hs:15:21-34)
+ Main.map (callstack002.hs:13:12-16)
+ Main.main.xs (callstack002.hs:18:12-24)
+ Main.CAF (<entire-module>)
diff --git a/testsuite/tests/profiling/should_run/callstack002.stdout b/testsuite/tests/profiling/should_run/callstack002.stdout
new file mode 100644
index 0000000000..480090de4e
--- /dev/null
+++ b/testsuite/tests/profiling/should_run/callstack002.stdout
@@ -0,0 +1,9 @@
+[84,86]
+Stack trace:
+ Main.f (callstack002.hs:10:38-42)
+ Main.f (callstack002.hs:10:7-43)
+ Main.map.go (callstack002.hs:15:21-23)
+ Main.map.go (callstack002.hs:15:21-34)
+ Main.map (callstack002.hs:13:12-16)
+ Main.main.xs (callstack002.hs:18:12-24)
+ Main.CAF (<entire-module>)
diff --git a/testsuite/tests/profiling/should_run/scc002.hs b/testsuite/tests/profiling/should_run/scc002.hs
index e73b741b5e..5e1f402900 100644
--- a/testsuite/tests/profiling/should_run/scc002.hs
+++ b/testsuite/tests/profiling/should_run/scc002.hs
@@ -23,4 +23,4 @@ Note the 2 entries for yan.\, the lambda expression inside yan.
big :: Int -> Int
big x = (array (0,1000000) [(0,x)] :: UArray Int Int) ! 0
-yan = {-# SCC "yan" #-} let e = big 20 in \x -> {-# SCC "yan1" #-} x + e
+yan = let e = big 20 in \x -> {-# SCC yan1 #-} x + e
diff --git a/testsuite/tests/profiling/should_run/scc002.prof.sample b/testsuite/tests/profiling/should_run/scc002.prof.sample
index c564aeb1e1..1e2e0ca213 100644
--- a/testsuite/tests/profiling/should_run/scc002.prof.sample
+++ b/testsuite/tests/profiling/should_run/scc002.prof.sample
@@ -1,27 +1,29 @@
- Wed Oct 26 14:19 2011 Time and Allocation Profiling Report (Final)
+ Fri Dec 2 12:54 2011 Time and Allocation Profiling Report (Final)
- scc002 +RTS -p -RTS
+ scc002 +RTS -hc -p -RTS
- total time = 0.00 secs (0 ticks @ 20 ms)
- total alloc = 4,045,376 bytes (excludes profiling overheads)
+ total time = 0.01 secs (15 ticks @ 1000 us, 1 processor)
+ total alloc = 8,049,336 bytes (excludes profiling overheads)
COST CENTRE MODULE %time %alloc
-big Main 0.0 98.9
+big Main 100.0 99.4
individual inherited
COST CENTRE MODULE no. entries %time %alloc %time %alloc
-MAIN MAIN 106 0 0.0 0.0 0.0 100.0
- CAF Main 211 0 0.0 0.0 0.0 99.1
- yan Main 213 2 0.0 0.0 0.0 98.9
- yan.e Main 217 1 0.0 0.0 0.0 98.9
- big Main 218 1 0.0 98.9 0.0 98.9
- main Main 212 1 0.0 0.2 0.0 0.2
- yan Main 214 0 0.0 0.0 0.0 0.0
- yan.\ Main 215 2 0.0 0.0 0.0 0.0
- yan1 Main 216 2 0.0 0.0 0.0 0.0
- CAF GHC.Conc.Signal 206 0 0.0 0.0 0.0 0.0
- CAF GHC.IO.Encoding.Iconv 195 0 0.0 0.0 0.0 0.0
- CAF GHC.IO.Handle.FD 187 0 0.0 0.8 0.0 0.8
+MAIN MAIN 105 0 0.0 0.0 100.0 100.0
+ main Main 211 0 0.0 0.1 0.0 0.1
+ CAF GHC.IO.Handle.FD 136 0 0.0 0.4 0.0 0.4
+ CAF GHC.IO.Encoding.Iconv 128 0 0.0 0.0 0.0 0.0
+ CAF GHC.IO.Encoding 126 0 0.0 0.0 0.0 0.0
+ CAF GHC.Conc.Signal 117 0 0.0 0.0 0.0 0.0
+ CAF Main 112 0 0.0 0.0 100.0 99.4
+ yan Main 212 1 0.0 0.0 100.0 99.4
+ yan.e Main 216 1 0.0 0.0 100.0 99.4
+ big Main 217 1 100.0 99.4 100.0 99.4
+ main Main 210 1 0.0 0.0 0.0 0.0
+ yan Main 213 0 0.0 0.0 0.0 0.0
+ yan.\ Main 214 2 0.0 0.0 0.0 0.0
+ yan1 Main 215 2 0.0 0.0 0.0 0.0
diff --git a/testsuite/tests/profiling/should_run/scc004.hs b/testsuite/tests/profiling/should_run/scc004.hs
new file mode 100644
index 0000000000..bdb73d83ab
--- /dev/null
+++ b/testsuite/tests/profiling/should_run/scc004.hs
@@ -0,0 +1,10 @@
+{-# NOINLINE f #-}
+f :: Int -> Int
+f = {-# SCC f #-} g
+
+{-# NOINLINE g #-}
+g :: Int -> Int
+g x = {-# SCC g #-} x + 1
+
+main = {-# SCC main #-} return $! f 3
+
diff --git a/testsuite/tests/profiling/should_run/scc004.prof.sample b/testsuite/tests/profiling/should_run/scc004.prof.sample
new file mode 100644
index 0000000000..7d12acdaab
--- /dev/null
+++ b/testsuite/tests/profiling/should_run/scc004.prof.sample
@@ -0,0 +1,28 @@
+ Wed Nov 23 11:52 2011 Time and Allocation Profiling Report (Final)
+
+ scc004 +RTS -p -RTS
+
+ total time = 0.00 secs (0 ticks @ 20 ms)
+ total alloc = 39,400 bytes (excludes profiling overheads)
+
+COST CENTRE MODULE %time %alloc
+
+MAIN MAIN 0.0 1.7
+CAF GHC.Conc.Signal 0.0 1.7
+CAF GHC.IO.Encoding 0.0 7.1
+CAF GHC.IO.Handle.FD 0.0 88.7
+
+
+ individual inherited
+COST CENTRE MODULE no. entries %time %alloc %time %alloc
+
+MAIN MAIN 98 0 0.0 1.7 0.0 100.0
+ CAF GHC.IO.Handle.FD 124 0 0.0 88.7 0.0 88.7
+ CAF GHC.IO.Encoding.Iconv 116 0 0.0 0.6 0.0 0.6
+ CAF GHC.IO.Encoding 114 0 0.0 7.1 0.0 7.1
+ CAF GHC.Conc.Signal 106 0 0.0 1.7 0.0 1.7
+ CAF Main 104 0 0.0 0.1 0.0 0.2
+ f Main 197 1 0.0 0.0 0.0 0.0
+ main Main 196 1 0.0 0.0 0.0 0.1
+ f Main 198 0 0.0 0.0 0.0 0.0
+ g Main 199 1 0.0 0.0 0.0 0.0
diff --git a/testsuite/tests/rebindable/DoParamM.stderr b/testsuite/tests/rebindable/DoParamM.stderr
index 7c095445e1..09d2370737 100644
--- a/testsuite/tests/rebindable/DoParamM.stderr
+++ b/testsuite/tests/rebindable/DoParamM.stderr
@@ -6,20 +6,29 @@ DoParamM.hs:146:25:
In a stmt of a 'do' block: return (v == v')
DoParamM.hs:286:28:
- Couldn't match expected type `Locked' with actual type `Unlocked'
- Expected type: LIO Locked r0 b0
+ Couldn't match type `Unlocked' with `Locked'
+ Expected type: LIO Locked Locked ()
Actual type: LIO Unlocked Locked ()
In a stmt of a 'do' block: tlock2_do
In the expression:
do { tlock2_do;
tlock2_do }
+ In an equation for `tlock4_do':
+ tlock4_do
+ = do { tlock2_do;
+ tlock2_do }
DoParamM.hs:302:37:
- Couldn't match expected type `Unlocked' with actual type `Locked'
- Expected type: LIO Unlocked r0 b0
+ Couldn't match type `Locked' with `Unlocked'
+ Expected type: LIO Unlocked Unlocked ()
Actual type: LIO Locked Unlocked ()
In a stmt of a 'do' block: unlock
In the expression:
do { tlock2_do;
unlock;
unlock }
+ In an equation for `tlock4'_do':
+ tlock4'_do
+ = do { tlock2_do;
+ unlock;
+ unlock }
diff --git a/testsuite/tests/rebindable/rebindable6.stderr b/testsuite/tests/rebindable/rebindable6.stderr
index d451400514..f380db4446 100644
--- a/testsuite/tests/rebindable/rebindable6.stderr
+++ b/testsuite/tests/rebindable/rebindable6.stderr
@@ -2,6 +2,11 @@
rebindable6.hs:106:17:
No instance for (HasSeq (IO a -> t0 -> IO b))
arising from a do statement
+ The type variable `t0' is ambiguous
+ Possible fix: add a type signature that fixes these type variable(s)
+ Note: there is a potential instance available:
+ instance HasSeq (IO a -> IO b -> IO b)
+ -- Defined at rebindable6.hs:52:18
Possible fix:
add an instance declaration for (HasSeq (IO a -> t0 -> IO b))
In a stmt of a 'do' block: f
@@ -16,24 +21,13 @@ rebindable6.hs:106:17:
return b }
rebindable6.hs:107:17:
- No instance for (HasFail ([Prelude.Char] -> t1))
- arising from a do statement
- Possible fix:
- add an instance declaration for (HasFail ([Prelude.Char] -> t1))
- In a stmt of a 'do' block: Just (b :: b) <- g
- In the expression:
- do { f;
- Just (b :: b) <- g;
- return b }
- In an equation for `test_do':
- test_do f g
- = do { f;
- Just (b :: b) <- g;
- return b }
-
-rebindable6.hs:107:17:
No instance for (HasBind (IO (Maybe b) -> (Maybe b -> t1) -> t0))
arising from a do statement
+ The type variables `t0', `t1' are ambiguous
+ Possible fix: add a type signature that fixes these type variable(s)
+ Note: there is a potential instance available:
+ instance HasBind (IO a -> (a -> IO b) -> IO b)
+ -- Defined at rebindable6.hs:47:18
Possible fix:
add an instance declaration for
(HasBind (IO (Maybe b) -> (Maybe b -> t1) -> t0))
@@ -51,6 +45,10 @@ rebindable6.hs:107:17:
rebindable6.hs:108:17:
No instance for (HasReturn (b -> t1))
arising from a use of `return'
+ The type variable `t1' is ambiguous
+ Possible fix: add a type signature that fixes these type variable(s)
+ Note: there is a potential instance available:
+ instance HasReturn (a -> IO a) -- Defined at rebindable6.hs:42:18
Possible fix: add an instance declaration for (HasReturn (b -> t1))
In a stmt of a 'do' block: return b
In the expression:
diff --git a/testsuite/tests/rename/should_compile/T3103/test.T b/testsuite/tests/rename/should_compile/T3103/test.T
index 6efdaee4f4..751118bad6 100644
--- a/testsuite/tests/rename/should_compile/T3103/test.T
+++ b/testsuite/tests/rename/should_compile/T3103/test.T
@@ -2,7 +2,7 @@
test('T3103',
[only_compiler_types(['ghc']),
- expect_broken_for(3103, ['optasm', 'hpc', 'profasm']),
+ expect_broken_for(3103, opt_ways),
extra_clean(['Foreign/Ptr.hi', 'Foreign/Ptr.o',
'GHC/Base.hi', 'GHC/Base.o',
'GHC/Num.hi', 'GHC/Num.o',
diff --git a/testsuite/tests/rename/should_compile/T3901.hs b/testsuite/tests/rename/should_compile/T3901.hs
index 39b521977b..71944a4142 100644
--- a/testsuite/tests/rename/should_compile/T3901.hs
+++ b/testsuite/tests/rename/should_compile/T3901.hs
@@ -2,13 +2,15 @@
module T3901 where
+import GHC.Exts (groupWith)
+
data Rec = Rec {a :: Int} deriving (Show)
-recs1 = [a | Rec {a=a} <- [Rec 1], then group by a]
+recs1 = [a | Rec {a=a} <- [Rec 1], then group by a using groupWith]
-recs2 = [a | Rec {a} <- [Rec 1], then group by a]
+recs2 = [a | Rec {a} <- [Rec 1], then group by a using groupWith]
-recs3 = [a | Rec {..} <- [Rec 1], then group by a]
+recs3 = [a | Rec {..} <- [Rec 1], then group by a using groupWith]
recs4 :: [[Int]]
-recs4 = [a | Rec {..} <- [Rec 1], then group by a]
+recs4 = [a | Rec {..} <- [Rec 1], then group by a using groupWith]
diff --git a/testsuite/tests/rename/should_compile/T4239.stdout b/testsuite/tests/rename/should_compile/T4239.stdout
index a60e8a4efe..25623f0174 100644
--- a/testsuite/tests/rename/should_compile/T4239.stdout
+++ b/testsuite/tests/rename/should_compile/T4239.stdout
@@ -1 +1 @@
-import T4239A ( (:+++)((:+++), (:---), X) )
+import T4239A ( type (:+++)((:+++), (:---), X) )
diff --git a/testsuite/tests/rename/should_compile/mc11.hs b/testsuite/tests/rename/should_compile/mc11.hs
index 250e587a16..b45fdc41f4 100644
--- a/testsuite/tests/rename/should_compile/mc11.hs
+++ b/testsuite/tests/rename/should_compile/mc11.hs
@@ -2,13 +2,15 @@
module T3901 where
+import GHC.Exts (groupWith)
+
data Rec = Rec {a :: Int} deriving (Show)
-recs1 = [a | Rec {a=a} <- [Rec 1], then group by a]
+recs1 = [a | Rec {a=a} <- [Rec 1], then group by a using groupWith]
-recs2 = [a | Rec {a} <- [Rec 1], then group by a]
+recs2 = [a | Rec {a} <- [Rec 1], then group by a using groupWith]
-recs3 = [a | Rec {..} <- [Rec 1], then group by a]
+recs3 = [a | Rec {..} <- [Rec 1], then group by a using groupWith]
recs4 :: [[Int]]
-recs4 = [a | Rec {..} <- [Rec 1], then group by a]
+recs4 = [a | Rec {..} <- [Rec 1], then group by a using groupWith]
diff --git a/testsuite/tests/rename/should_fail/T5211.stderr b/testsuite/tests/rename/should_fail/T5211.stderr
index a33a02750c..b99cc04d97 100644
--- a/testsuite/tests/rename/should_fail/T5211.stderr
+++ b/testsuite/tests/rename/should_fail/T5211.stderr
@@ -1,5 +1,5 @@
-
-T5211.hs:5:1:
- Warning: The import of `Foreign.Storable' is redundant
- except perhaps to import instances from `Foreign.Storable'
- To import instances alone, use: import Foreign.Storable()
+
+T5211.hs:5:1: Warning:
+ The qualified import of `Foreign.Storable' is redundant
+ except perhaps to import instances from `Foreign.Storable'
+ To import instances alone, use: import Foreign.Storable()
diff --git a/testsuite/tests/rename/should_fail/T5657.hs b/testsuite/tests/rename/should_fail/T5657.hs
new file mode 100644
index 0000000000..efd4660eff
--- /dev/null
+++ b/testsuite/tests/rename/should_fail/T5657.hs
@@ -0,0 +1,3 @@
+module T5657 where
+
+foo = [LT..GT]
diff --git a/testsuite/tests/rename/should_fail/T5657.stderr b/testsuite/tests/rename/should_fail/T5657.stderr
new file mode 100644
index 0000000000..af6f57e11a
--- /dev/null
+++ b/testsuite/tests/rename/should_fail/T5657.stderr
@@ -0,0 +1,5 @@
+
+T5657.hs:3:8: Not in scope: `LT..'
+
+T5657.hs:3:8:
+ A section must be enclosed in parentheses thus: (LT.. GT)
diff --git a/testsuite/tests/rename/should_fail/T5745.hs b/testsuite/tests/rename/should_fail/T5745.hs
new file mode 100644
index 0000000000..22fafc64cc
--- /dev/null
+++ b/testsuite/tests/rename/should_fail/T5745.hs
@@ -0,0 +1,6 @@
+module T5745 where
+
+import T5745a
+
+f :: T
+f = f
diff --git a/testsuite/tests/rename/should_fail/T5745.stderr b/testsuite/tests/rename/should_fail/T5745.stderr
new file mode 100644
index 0000000000..44994c9187
--- /dev/null
+++ b/testsuite/tests/rename/should_fail/T5745.stderr
@@ -0,0 +1,2 @@
+
+T5745.hs:5:6: Not in scope: type constructor or class `T'
diff --git a/testsuite/tests/rename/should_fail/T5745a.hs b/testsuite/tests/rename/should_fail/T5745a.hs
new file mode 100644
index 0000000000..b3d52bc84c
--- /dev/null
+++ b/testsuite/tests/rename/should_fail/T5745a.hs
@@ -0,0 +1,3 @@
+module T5745a( module T5745b ) where
+
+import T5745b hiding( T )
diff --git a/testsuite/tests/rename/should_fail/T5745b.hs b/testsuite/tests/rename/should_fail/T5745b.hs
new file mode 100644
index 0000000000..74390a690c
--- /dev/null
+++ b/testsuite/tests/rename/should_fail/T5745b.hs
@@ -0,0 +1,4 @@
+module T5745b where
+
+data T = MkT
+data S = MkS
diff --git a/testsuite/tests/rename/should_fail/T5892a.hs b/testsuite/tests/rename/should_fail/T5892a.hs
new file mode 100644
index 0000000000..c0ad9891f7
--- /dev/null
+++ b/testsuite/tests/rename/should_fail/T5892a.hs
@@ -0,0 +1,12 @@
+{-# LANGUAGE RecordWildCards #-}
+{-# OPTIONS_GHC -Werror #-}
+
+module T5892a where
+
+import Data.Version ( Version( Version, versionBranch ))
+-- Not importing its field: versionTags
+
+foo :: Version -> Version
+foo (Version {..}) -- Pattern match does not bind versionTags
+ = let versionBranch = []
+ in Version {..} -- Hence warning here
diff --git a/testsuite/tests/rename/should_fail/T5892a.stderr b/testsuite/tests/rename/should_fail/T5892a.stderr
new file mode 100644
index 0000000000..9eecad61b9
--- /dev/null
+++ b/testsuite/tests/rename/should_fail/T5892a.stderr
@@ -0,0 +1,10 @@
+
+T5892a.hs:12:8: Warning:
+ Fields of `Version' not initialised: Data.Version.versionTags
+ In the expression: Version {..}
+ In the expression: let versionBranch = [] in Version {..}
+ In an equation for `foo':
+ foo (Version {..}) = let versionBranch = [] in Version {..}
+
+<no location info>:
+Failing due to -Werror.
diff --git a/testsuite/tests/rename/should_fail/T5892b.hs b/testsuite/tests/rename/should_fail/T5892b.hs
new file mode 100644
index 0000000000..6bcea27856
--- /dev/null
+++ b/testsuite/tests/rename/should_fail/T5892b.hs
@@ -0,0 +1,11 @@
+{-# LANGUAGE RecordWildCards #-}
+module T5892b where
+
+import Data.Version ( Version( Version, versionBranch ))
+-- Not importing its field: versionTags
+
+Version{..} = Version [] []
+-- Binds versionBranch only
+
+foo = T5892b.versionBranch
+bar = T5892b.versionTags
diff --git a/testsuite/tests/rename/should_fail/T5892b.stderr b/testsuite/tests/rename/should_fail/T5892b.stderr
new file mode 100644
index 0000000000..10d6c3692b
--- /dev/null
+++ b/testsuite/tests/rename/should_fail/T5892b.stderr
@@ -0,0 +1,4 @@
+
+T5892b.hs:11:7:
+ Not in scope: `T5892b.versionTags'
+ Perhaps you meant `T5892b.versionBranch' (line 7)
diff --git a/testsuite/tests/rename/should_fail/T5951.hs b/testsuite/tests/rename/should_fail/T5951.hs
new file mode 100644
index 0000000000..70756795f6
--- /dev/null
+++ b/testsuite/tests/rename/should_fail/T5951.hs
@@ -0,0 +1,11 @@
+module T5951 where
+
+class A a
+class B b
+class C c
+
+instance
+ A =>
+ B =>
+ C where
+ foo = undefined
diff --git a/testsuite/tests/rename/should_fail/T5951.stderr b/testsuite/tests/rename/should_fail/T5951.stderr
new file mode 100644
index 0000000000..af0ee9d431
--- /dev/null
+++ b/testsuite/tests/rename/should_fail/T5951.stderr
@@ -0,0 +1,2 @@
+
+T5951.hs:8:8: Malformed instance: A => B => C
diff --git a/testsuite/tests/rename/should_fail/all.T b/testsuite/tests/rename/should_fail/all.T
index 385f617b4d..a512d196d7 100644
--- a/testsuite/tests/rename/should_fail/all.T
+++ b/testsuite/tests/rename/should_fail/all.T
@@ -95,3 +95,10 @@ test('T5513', normal, compile_fail, [''])
test('T5533', normal, compile_fail, [''])
test('T5589', normal, compile_fail, [''])
test('Misplaced', normal, compile_fail, [''])
+test('T5657', normal, compile_fail, [''])
+test('T5745',
+ extra_clean(['T5745a.hi', 'T5745a.o', 'T5745b.hi', 'T5745b.o']),
+ multimod_compile_fail, ['T5745', '-v0'])
+test('T5892a', normal, compile_fail, [''])
+test('T5892b', normal, compile_fail, [''])
+test('T5951', normal, compile_fail, [''])
diff --git a/testsuite/tests/rename/should_fail/rnfail055.stderr b/testsuite/tests/rename/should_fail/rnfail055.stderr
index 301dbead2f..56e6086cd2 100644
--- a/testsuite/tests/rename/should_fail/rnfail055.stderr
+++ b/testsuite/tests/rename/should_fail/rnfail055.stderr
@@ -12,29 +12,23 @@ RnFail055.hs-boot:4:1:
RnFail055.hs-boot:6:6:
Type constructor `S1' has conflicting definitions in the module and its hs-boot file
- Main module: type S1 a b
- = (a, b)
- FamilyInstance: none
- Boot file: type S1 a b c
- = (a, b)
- FamilyInstance: none
+ Main module: type S1 a b = (a, b)
+ Boot file: type S1 a b c = (a, b)
RnFail055.hs-boot:8:6:
Type constructor `S2' has conflicting definitions in the module and its hs-boot file
- Main module: type S2 a b
- = forall a. (a, b)
- FamilyInstance: none
- Boot file: type S2 a b
- = forall b. (a, b)
- FamilyInstance: none
+ Main module: type S2 a b = forall a. (a, b)
+ Boot file: type S2 a b = forall b. (a, b)
RnFail055.hs-boot:12:6:
Type constructor `T1' has conflicting definitions in the module and its hs-boot file
Main module: data T1 a b
+ No C type associated
RecFlag Recursive
= T1 :: forall a b. [b] -> [a] -> T1 a b Stricts: _ _
FamilyInstance: none
Boot file: data T1 a b
+ No C type associated
RecFlag NonRecursive
= T1 :: forall a b. [a] -> [b] -> T1 a b Stricts: _ _
FamilyInstance: none
@@ -42,10 +36,12 @@ RnFail055.hs-boot:12:6:
RnFail055.hs-boot:14:16:
Type constructor `T2' has conflicting definitions in the module and its hs-boot file
Main module: data Eq b => T2 a b
+ No C type associated
RecFlag Recursive
= T2 :: forall a b. a -> T2 a b Stricts: _
FamilyInstance: none
Boot file: data Eq a => T2 a b
+ No C type associated
RecFlag NonRecursive
= T2 :: forall a b. a -> T2 a b Stricts: _
FamilyInstance: none
@@ -59,10 +55,12 @@ RnFail055.hs-boot:17:12:
RnFail055.hs-boot:21:6:
Type constructor `T5' has conflicting definitions in the module and its hs-boot file
Main module: data T5 a
+ No C type associated
RecFlag Recursive
= T5 :: forall a. a -> T5 a Stricts: _ Fields: field5
FamilyInstance: none
Boot file: data T5 a
+ No C type associated
RecFlag NonRecursive
= T5 :: forall a. a -> T5 a Stricts: _
FamilyInstance: none
@@ -70,10 +68,12 @@ RnFail055.hs-boot:21:6:
RnFail055.hs-boot:23:6:
Type constructor `T6' has conflicting definitions in the module and its hs-boot file
Main module: data T6
+ No C type associated
RecFlag Recursive
= T6 :: Int -> T6 Stricts: _
FamilyInstance: none
Boot file: data T6
+ No C type associated
RecFlag NonRecursive
= T6 :: Int -> T6 HasWrapper Stricts: !
FamilyInstance: none
@@ -81,10 +81,12 @@ RnFail055.hs-boot:23:6:
RnFail055.hs-boot:25:6:
Type constructor `T7' has conflicting definitions in the module and its hs-boot file
Main module: data T7 a
+ No C type associated
RecFlag Recursive
= T7 :: forall a a. a -> T7 a Stricts: _
FamilyInstance: none
Boot file: data T7 a
+ No C type associated
RecFlag NonRecursive
= T7 :: forall a b. a -> T7 a Stricts: _
FamilyInstance: none
diff --git a/testsuite/tests/rts/5644/5644.stderr b/testsuite/tests/rts/5644/5644.stderr
new file mode 100644
index 0000000000..c0e6e69be1
--- /dev/null
+++ b/testsuite/tests/rts/5644/5644.stderr
@@ -0,0 +1,3 @@
+5644: Heap exhausted;
+Current maximum heap size is 20971520 bytes (20 MB);
+use `+RTS -M<size>' to increase it.
diff --git a/testsuite/tests/rts/5644/Conf.hs b/testsuite/tests/rts/5644/Conf.hs
new file mode 100644
index 0000000000..595f7b5abf
--- /dev/null
+++ b/testsuite/tests/rts/5644/Conf.hs
@@ -0,0 +1,7 @@
+module Conf where
+
+iTERATIONS :: Int
+iTERATIONS = 1000 * 1000 * 100
+
+bufferSize :: (Num a) => a
+bufferSize = 1024
diff --git a/testsuite/tests/lib/Concurrent/Makefile b/testsuite/tests/rts/5644/Makefile
index 9101fbd40a..9101fbd40a 100644
--- a/testsuite/tests/lib/Concurrent/Makefile
+++ b/testsuite/tests/rts/5644/Makefile
diff --git a/testsuite/tests/rts/5644/ManyQueue.hs b/testsuite/tests/rts/5644/ManyQueue.hs
new file mode 100644
index 0000000000..d2a6882d6c
--- /dev/null
+++ b/testsuite/tests/rts/5644/ManyQueue.hs
@@ -0,0 +1,82 @@
+{-# LANGUAGE BangPatterns #-}
+
+module ManyQueue where
+
+import Control.Concurrent
+import Control.Monad
+
+import Conf
+
+newtype MQueue a = MQueue [MVar a]
+
+newMQueue size = do
+ lst <- replicateM size newEmptyMVar
+ return (MQueue (cycle lst))
+
+writeMQueue :: (MQueue a) -> a -> IO (MQueue a)
+writeMQueue (MQueue (x:xs)) el = do
+ putMVar x el
+ return (MQueue xs)
+
+readMQueue :: (MQueue a) -> IO (MQueue a, a)
+readMQueue (MQueue (x:xs)) = do
+ el <- takeMVar x
+ return ((MQueue xs), el)
+
+testManyQueue'1P1C = do
+ print "Test.ManyQueue.testManyQueue'1P1C"
+ finished <- newEmptyMVar
+
+ mq <- newMQueue bufferSize
+
+ let
+-- elements = [0] ++ [1 .. iTERATIONS] -- workaround
+ elements = [0 .. iTERATIONS] -- heap overflow
+
+ writer _ 0 = putMVar finished ()
+ writer q x = do
+ q' <- writeMQueue q x
+ writer q' (x-1)
+
+ writer' _ [] = putMVar finished ()
+ writer' q (x:xs) = do
+ q' <- writeMQueue q x
+ writer' q' xs
+
+ reader _ !acc 0 = print acc >> putMVar finished ()
+ reader q !acc n = do
+ (q', x) <- readMQueue q
+ reader q' (acc+x) (n-1)
+
+ --forkIO $ writer mq iTERATIONS
+ forkIO $ writer' mq elements
+ forkIO $ reader mq 0 iTERATIONS
+
+ takeMVar finished
+ takeMVar finished
+
+testManyQueue'1P3C = do
+ print "Test.ManyQueue.testManyQueue'1P3C"
+ let tCount = 3
+ finished <- newEmptyMVar
+
+ mqs <- replicateM tCount (newMQueue bufferSize)
+
+ let elements = [0 .. iTERATIONS]
+
+ writer _ [] = putMVar finished ()
+ writer qs (x:xs) = do
+ qs' <- mapM (\q -> writeMQueue q x) qs
+ writer qs' xs
+
+ reader _ !acc 0 = print acc >> putMVar finished ()
+ reader q !acc n = do
+ (q', x) <- readMQueue q
+ reader q' (acc+x) (n-1)
+
+ forkIO $ writer mqs elements
+ mapM_ (\ mq -> forkIO $ reader mq 0 iTERATIONS) mqs
+
+ replicateM (tCount+1) (takeMVar finished)
+
+ return () \ No newline at end of file
diff --git a/testsuite/tests/rts/5644/Util.hs b/testsuite/tests/rts/5644/Util.hs
new file mode 100644
index 0000000000..b97e55c255
--- /dev/null
+++ b/testsuite/tests/rts/5644/Util.hs
@@ -0,0 +1,29 @@
+{-# LANGUAGE BangPatterns #-}
+
+module Util where
+
+import Data.Time
+-- import Data.List.Split (splitEvery)
+
+import Conf
+
+timed act = do
+ putStrLn ""
+ t0 <- getCurrentTime
+ !v <- act
+ t1 <- getCurrentTime
+ let td = diffUTCTime t1 t0
+ putStrLn $ "Action time: " ++ show td
+ return (v,td)
+
+splitEvery _ [] = []
+splitEvery n xs = let (lxs,rxs) = splitAt n xs in lxs : splitEvery n rxs
+
+runTest :: (IO ()) -> IO ()
+runTest test = do
+ (_, t) <- timed test
+ let format x = unwords . reverse . map reverse . splitEvery 3 . reverse . show $ x
+ val = format (round (fromIntegral iTERATIONS / realToFrac t :: Double) :: Integer)
+
+ putStr "OpsPerSecond: "
+ putStrLn val \ No newline at end of file
diff --git a/testsuite/tests/rts/5644/all.T b/testsuite/tests/rts/5644/all.T
new file mode 100644
index 0000000000..bd820d5f7a
--- /dev/null
+++ b/testsuite/tests/rts/5644/all.T
@@ -0,0 +1,7 @@
+test('5644', [
+ only_ways(['optasm','threaded1','threaded2']),
+ extra_run_opts('+RTS -M20m -RTS'),
+ exit_code(251) # RTS exit code for "out of memory"
+ ],
+ multimod_compile_and_run,
+ ['heap-overflow.hs','-O'])
diff --git a/testsuite/tests/rts/5644/heap-overflow.hs b/testsuite/tests/rts/5644/heap-overflow.hs
new file mode 100644
index 0000000000..1dedc72e2b
--- /dev/null
+++ b/testsuite/tests/rts/5644/heap-overflow.hs
@@ -0,0 +1,8 @@
+module Main where
+
+import Util
+import ManyQueue
+
+main = do
+ runTest testManyQueue'1P3C
+ runTest testManyQueue'1P1C
diff --git a/testsuite/tests/rts/5993.hs b/testsuite/tests/rts/5993.hs
new file mode 100644
index 0000000000..25626ffa74
--- /dev/null
+++ b/testsuite/tests/rts/5993.hs
@@ -0,0 +1,6 @@
+import Control.Concurrent
+main = do
+ m <- newEmptyMVar
+ forkIO $ putStrLn "Hello World!" >> putMVar m ()
+ takeMVar m
+
diff --git a/testsuite/tests/rts/5993.stdout b/testsuite/tests/rts/5993.stdout
new file mode 100644
index 0000000000..980a0d5f19
--- /dev/null
+++ b/testsuite/tests/rts/5993.stdout
@@ -0,0 +1 @@
+Hello World!
diff --git a/testsuite/tests/rts/Makefile b/testsuite/tests/rts/Makefile
index 3f931478d8..8f4acc0f9c 100644
--- a/testsuite/tests/rts/Makefile
+++ b/testsuite/tests/rts/Makefile
@@ -35,7 +35,7 @@ exec_signals-prep:
4850:
$(RM) 4850.o 4850.hi 4850$(exeext)
"$(TEST_HC)" $(TEST_HC_OPTS) -v0 -rtsopts -debug -threaded --make 4850
- ./4850 +RTS -s 2>&1 | grep Task | wc -l | tr -d ' '
+ ./4850 +RTS -s 2>&1 | grep TASKS | sed 's/^ *TASKS: *\([0-9]*\).*$$/\1/'
.PHONY: T5423
T5423:
diff --git a/testsuite/tests/rts/all.T b/testsuite/tests/rts/all.T
index 80d4ec1f6f..f1a7ae6a80 100644
--- a/testsuite/tests/rts/all.T
+++ b/testsuite/tests/rts/all.T
@@ -73,6 +73,9 @@ test('3424', # it's slow:
# Test for out-of-range heap size
test('rtsflags001', [ only_ways(['normal']), exit_code(1), extra_run_opts('+RTS -H0m -RTS') ], compile_and_run, [''])
+# Crashed with 7.2 and earlier
+test('rtsflags002', [ only_ways(['normal']) ], compile_and_run, ['-with-rtsopts="-B -B -B"'])
+
# Test to see if linker scripts link properly to real ELF files
test('T2615',
[ if_platform('i386-unknown-mingw32',skip),
@@ -116,7 +119,7 @@ def config_5250(opts):
test('5250', [ config_5250,
# stack ptr is not 16-byte aligned on 32-bit Windows
- if_os('mingw32', expect_fail),
+ if_platform('i386-unknown-mingw32', expect_fail),
extra_clean(['spalign.o']),
omit_ways(['ghci']) ],
compile_and_run, ['spalign.c'])
@@ -126,3 +129,4 @@ test('T5423',
run_command,
['$MAKE -s --no-print-directory T5423'])
+test('5993', extra_run_opts('+RTS -k8 -RTS'), compile_and_run, [''])
diff --git a/testsuite/tests/rts/outofmem2.stderr b/testsuite/tests/rts/outofmem2.stderr
index 5fa8ba00e7..8fb459b668 100644
--- a/testsuite/tests/rts/outofmem2.stderr
+++ b/testsuite/tests/rts/outofmem2.stderr
@@ -1,3 +1,3 @@
-Heap exhausted;
+outofmem2: Heap exhausted;
Current maximum heap size is 5242880 bytes (5 MB);
use `+RTS -M<size>' to increase it.
diff --git a/testsuite/tests/rts/rtsflags002.hs b/testsuite/tests/rts/rtsflags002.hs
new file mode 100644
index 0000000000..b3549c2fe3
--- /dev/null
+++ b/testsuite/tests/rts/rtsflags002.hs
@@ -0,0 +1 @@
+main = return ()
diff --git a/testsuite/tests/rts/rtsflags002.stderr b/testsuite/tests/rts/rtsflags002.stderr
new file mode 100644
index 0000000000..303e398c82
--- /dev/null
+++ b/testsuite/tests/rts/rtsflags002.stderr
@@ -0,0 +1 @@
+ \ No newline at end of file
diff --git a/testsuite/tests/safeHaskell/check/Check01.hs b/testsuite/tests/safeHaskell/check/Check01.hs
index f11d87db15..1d5df588a4 100644
--- a/testsuite/tests/safeHaskell/check/Check01.hs
+++ b/testsuite/tests/safeHaskell/check/Check01.hs
@@ -1,4 +1,4 @@
-{-# GHC_OPTIONS -fpackage-trust #-}
+{-# OPTIONS_GHC -fpackage-trust #-}
{-# LANGUAGE Unsafe #-}
module Check01 ( main' ) where
diff --git a/testsuite/tests/safeHaskell/check/Check05.hs b/testsuite/tests/safeHaskell/check/Check05.hs
new file mode 100644
index 0000000000..2c3512a0b4
--- /dev/null
+++ b/testsuite/tests/safeHaskell/check/Check05.hs
@@ -0,0 +1,7 @@
+{-# OPTIONS_GHC -fpackage-trust #-}
+module Check05 ( main' ) where
+
+main' = do
+ let n = 1
+ print $ n
+
diff --git a/testsuite/tests/safeHaskell/check/Check05.stderr b/testsuite/tests/safeHaskell/check/Check05.stderr
new file mode 100644
index 0000000000..9db0875f44
--- /dev/null
+++ b/testsuite/tests/safeHaskell/check/Check05.stderr
@@ -0,0 +1,3 @@
+
+Check05.hs:1:16:
+ Warning: -fpackage-trust ignored; must be specified with a Safe Haskell flag
diff --git a/testsuite/tests/safeHaskell/check/Check06.hs b/testsuite/tests/safeHaskell/check/Check06.hs
new file mode 100644
index 0000000000..a4debfc2cb
--- /dev/null
+++ b/testsuite/tests/safeHaskell/check/Check06.hs
@@ -0,0 +1,13 @@
+{-# LANGUAGE Trustworthy, NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fpackage-trust #-}
+
+-- make sure importing a safe-infered module brings in the
+-- pkg trust requirements correctly.
+module Check06 ( main' ) where
+
+import safe Check06_A
+
+main' =
+ let n = mainM 1
+ in n
+
diff --git a/testsuite/tests/safeHaskell/check/Check06.stderr b/testsuite/tests/safeHaskell/check/Check06.stderr
new file mode 100644
index 0000000000..07a49374d0
--- /dev/null
+++ b/testsuite/tests/safeHaskell/check/Check06.stderr
@@ -0,0 +1,5 @@
+[1 of 2] Compiling Check06_A ( Check06_A.hs, Check06_A.o )
+[2 of 2] Compiling Check06 ( Check06.hs, Check06.o )
+
+<no location info>:
+ The package (base) is required to be trusted but it isn't!
diff --git a/testsuite/tests/safeHaskell/check/Check06_A.hs b/testsuite/tests/safeHaskell/check/Check06_A.hs
new file mode 100644
index 0000000000..9c9d92ba24
--- /dev/null
+++ b/testsuite/tests/safeHaskell/check/Check06_A.hs
@@ -0,0 +1,6 @@
+-- safe infered, with requirement base is trusted
+module Check06_A where
+
+mainM :: Int -> Int
+mainM n = n + 1
+
diff --git a/testsuite/tests/safeHaskell/check/Check07.hs b/testsuite/tests/safeHaskell/check/Check07.hs
new file mode 100644
index 0000000000..aa10c37891
--- /dev/null
+++ b/testsuite/tests/safeHaskell/check/Check07.hs
@@ -0,0 +1,14 @@
+{-# LANGUAGE Trustworthy, NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fpackage-trust #-}
+
+-- make sure selective safe imports brings in pkg trust requirements correctly.
+-- (e.g only for the imports that are safe ones)
+module Check07 ( main' ) where
+
+import safe Check07_A -- no pkg trust reqs
+import Check07_B -- base pkg trust req
+
+main' =
+ let n = a (b 1)
+ in n
+
diff --git a/testsuite/tests/safeHaskell/check/Check07.stderr b/testsuite/tests/safeHaskell/check/Check07.stderr
new file mode 100644
index 0000000000..dafdad6cba
--- /dev/null
+++ b/testsuite/tests/safeHaskell/check/Check07.stderr
@@ -0,0 +1,3 @@
+[1 of 3] Compiling Check07_B ( Check07_B.hs, Check07_B.o )
+[2 of 3] Compiling Check07_A ( Check07_A.hs, Check07_A.o )
+[3 of 3] Compiling Check07 ( Check07.hs, Check07.o )
diff --git a/testsuite/tests/safeHaskell/check/Check07_A.hs b/testsuite/tests/safeHaskell/check/Check07_A.hs
new file mode 100644
index 0000000000..5b38c6a07b
--- /dev/null
+++ b/testsuite/tests/safeHaskell/check/Check07_A.hs
@@ -0,0 +1,8 @@
+{-# LANGUAGE NoImplicitPrelude #-}
+
+-- safe infered, with no pkg trust reqs
+module Check07_A where
+
+a :: a -> a
+a n = n
+
diff --git a/testsuite/tests/safeHaskell/check/Check07_B.hs b/testsuite/tests/safeHaskell/check/Check07_B.hs
new file mode 100644
index 0000000000..4a2003f9a9
--- /dev/null
+++ b/testsuite/tests/safeHaskell/check/Check07_B.hs
@@ -0,0 +1,8 @@
+-- safe infered, with requirement base is trusted
+module Check07_B where
+
+import Prelude
+
+b :: Int -> Int
+b n = n + 1
+
diff --git a/testsuite/tests/safeHaskell/check/Check08.hs b/testsuite/tests/safeHaskell/check/Check08.hs
new file mode 100644
index 0000000000..dde6908f30
--- /dev/null
+++ b/testsuite/tests/safeHaskell/check/Check08.hs
@@ -0,0 +1,14 @@
+{-# LANGUAGE Trustworthy, NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fpackage-trust #-}
+
+-- make sure selective safe imports brings in pkg trust requirements correctly.
+-- (e.g only for the imports that are safe ones)
+module Check08 ( main' ) where
+
+import safe Check08_A -- no pkg trust reqs
+import safe Check08_B -- base pkg trust req
+
+main' =
+ let n = a (b 1)
+ in n
+
diff --git a/testsuite/tests/safeHaskell/check/Check08.stderr b/testsuite/tests/safeHaskell/check/Check08.stderr
new file mode 100644
index 0000000000..7a27852b55
--- /dev/null
+++ b/testsuite/tests/safeHaskell/check/Check08.stderr
@@ -0,0 +1,6 @@
+[1 of 3] Compiling Check08_B ( Check08_B.hs, Check08_B.o )
+[2 of 3] Compiling Check08_A ( Check08_A.hs, Check08_A.o )
+[3 of 3] Compiling Check08 ( Check08.hs, Check08.o )
+
+<no location info>:
+ The package (base) is required to be trusted but it isn't!
diff --git a/testsuite/tests/safeHaskell/check/Check08_A.hs b/testsuite/tests/safeHaskell/check/Check08_A.hs
new file mode 100644
index 0000000000..c888a59b71
--- /dev/null
+++ b/testsuite/tests/safeHaskell/check/Check08_A.hs
@@ -0,0 +1,8 @@
+{-# LANGUAGE NoImplicitPrelude #-}
+
+-- safe infered, with no pkg trust reqs
+module Check08_A where
+
+a :: a -> a
+a n = n
+
diff --git a/testsuite/tests/safeHaskell/check/Check08_B.hs b/testsuite/tests/safeHaskell/check/Check08_B.hs
new file mode 100644
index 0000000000..41feab5eae
--- /dev/null
+++ b/testsuite/tests/safeHaskell/check/Check08_B.hs
@@ -0,0 +1,8 @@
+-- safe infered, with requirement base is trusted
+module Check08_B where
+
+import Prelude
+
+b :: Int -> Int
+b n = n + 1
+
diff --git a/testsuite/tests/safeHaskell/check/Check09.hs b/testsuite/tests/safeHaskell/check/Check09.hs
new file mode 100644
index 0000000000..9d4d03ca12
--- /dev/null
+++ b/testsuite/tests/safeHaskell/check/Check09.hs
@@ -0,0 +1,8 @@
+{-# LANGUAGE Safe #-}
+module Check09 where
+
+import Data.ByteString.Char8
+
+b :: ByteString
+b = pack "Hello World"
+
diff --git a/testsuite/tests/safeHaskell/check/Check09.stderr b/testsuite/tests/safeHaskell/check/Check09.stderr
new file mode 100644
index 0000000000..71cc3cddcf
--- /dev/null
+++ b/testsuite/tests/safeHaskell/check/Check09.stderr
@@ -0,0 +1,4 @@
+
+Check09.hs:4:1:
+ Data.ByteString.Char8: Can't be safely imported!
+ The package (bytestring-0.10.0.0) the module resides in isn't trusted.
diff --git a/testsuite/tests/safeHaskell/check/Check10.hs b/testsuite/tests/safeHaskell/check/Check10.hs
new file mode 100644
index 0000000000..21fad6aab8
--- /dev/null
+++ b/testsuite/tests/safeHaskell/check/Check10.hs
@@ -0,0 +1,8 @@
+{-# LANGUAGE Safe #-}
+module Check10 where
+
+import Data.ByteString.Char8
+
+b :: ByteString
+b = pack "Hello World"
+
diff --git a/testsuite/tests/safeHaskell/check/all.T b/testsuite/tests/safeHaskell/check/all.T
index d665c655c4..4cef8f8cc3 100644
--- a/testsuite/tests/safeHaskell/check/all.T
+++ b/testsuite/tests/safeHaskell/check/all.T
@@ -39,3 +39,28 @@ test('Check04', normal, multi_compile, ['Check04', [
('Check04_1.hs', '-trust base')
], '-fpackage-trust'])
+# Check -fpackage-trust with no safe haskell flag is an error
+test('Check05', normal, compile, [''])
+
+# Check safe-infered modules have correct pkg trust requirements
+test('Check06',
+ extra_clean(['Check06_A.hi', 'Check06_A.o']),
+ multimod_compile_fail, ['Check06', ''])
+
+# Check selective safe imports bring in correct pkg trust requirements
+test('Check07',
+ extra_clean(['Check07_A.hi', 'Check07_A.o', 'Check07_B.hi', 'Check07_B.o']),
+ multimod_compile, ['Check07', ''])
+
+# Check selective safe imports bring in correct pkg trust requirements
+test('Check08',
+ extra_clean(['Check08_A.hi', 'Check08_A.o', 'Check08_B.hi', 'Check08_B.o']),
+ multimod_compile_fail, ['Check08', ''])
+
+# check -distrust-all-packages flag works
+test('Check09', normal, compile_fail, ['-fpackage-trust -distrust-all-packages'])
+
+# as above but trust this time
+test('Check10', normal, compile,
+ ['-fpackage-trust -distrust-all-packages -trust bytestring -trust base'])
+
diff --git a/testsuite/tests/safeHaskell/check/pkg01/ImpSafe01.stderr b/testsuite/tests/safeHaskell/check/pkg01/ImpSafe01.stderr
index 9ca2bbe817..9bf0315382 100644
--- a/testsuite/tests/safeHaskell/check/pkg01/ImpSafe01.stderr
+++ b/testsuite/tests/safeHaskell/check/pkg01/ImpSafe01.stderr
@@ -1,3 +1,4 @@
ImpSafe01.hs:9:1:
- base:Data.Word can't be safely imported! The package (base) the module resides in isn't trusted.
+ Data.Word: Can't be safely imported!
+ The package (base) the module resides in isn't trusted.
diff --git a/testsuite/tests/safeHaskell/check/pkg01/ImpSafeOnly03.stderr b/testsuite/tests/safeHaskell/check/pkg01/ImpSafeOnly03.stderr
index bc6eecffee..1afb523f9a 100644
--- a/testsuite/tests/safeHaskell/check/pkg01/ImpSafeOnly03.stderr
+++ b/testsuite/tests/safeHaskell/check/pkg01/ImpSafeOnly03.stderr
@@ -1,3 +1,4 @@
ImpSafeOnly03.hs:4:1:
- safePkg01-1.0:M_SafePkg3 can't be safely imported! The package (safePkg01-1.0) the module resides in isn't trusted.
+ M_SafePkg3: Can't be safely imported!
+ The package (safePkg01-1.0) the module resides in isn't trusted.
diff --git a/testsuite/tests/safeHaskell/check/pkg01/M_SafePkg5.hs b/testsuite/tests/safeHaskell/check/pkg01/M_SafePkg5.hs
new file mode 100644
index 0000000000..a4b7390352
--- /dev/null
+++ b/testsuite/tests/safeHaskell/check/pkg01/M_SafePkg5.hs
@@ -0,0 +1,14 @@
+-- safe inference
+-- same module as M_SafePkg4 which compiles with -XSafe.
+-- Want to make sure compiles fine and is infered safe and
+-- also picks up corrected pkg trust requirements.
+module M_SafePkg5 where
+
+import qualified M_SafePkg3 as M3
+import Data.Word
+
+bigInt :: Int
+bigInt = M3.bigInt
+
+type MyWord = Word
+
diff --git a/testsuite/tests/safeHaskell/check/pkg01/Makefile b/testsuite/tests/safeHaskell/check/pkg01/Makefile
index 1c34906a03..3f3dea6cea 100644
--- a/testsuite/tests/safeHaskell/check/pkg01/Makefile
+++ b/testsuite/tests/safeHaskell/check/pkg01/Makefile
@@ -44,6 +44,9 @@ safePkg01:
echo 'M_SafePkg4'
'$(TEST_HC)' --show-iface dist/build/M_SafePkg4.hi | grep -E '^package dependencies:|^trusted:|^require own pkg trusted:'
echo
+ echo 'M_SafePkg5'
+ '$(TEST_HC)' --show-iface dist/build/M_SafePkg5.hi | grep -E '^package dependencies:|^trusted:|^require own pkg trusted:'
+ echo
echo 'Testing setting trust'
$(LGHC_PKG) trust safePkg01-1.0
$(LGHC_PKG) field safePkg01-1.0 trusted
diff --git a/testsuite/tests/safeHaskell/check/pkg01/p.cabal b/testsuite/tests/safeHaskell/check/pkg01/p.cabal
index f6d84b5f8a..7ddffff027 100644
--- a/testsuite/tests/safeHaskell/check/pkg01/p.cabal
+++ b/testsuite/tests/safeHaskell/check/pkg01/p.cabal
@@ -11,5 +11,6 @@ Library {
M_SafePkg2
M_SafePkg3
M_SafePkg4
+ M_SafePkg5
}
diff --git a/testsuite/tests/safeHaskell/check/pkg01/safePkg01.stdout b/testsuite/tests/safeHaskell/check/pkg01/safePkg01.stdout
index 9a98bacd8c..83906042d8 100644
--- a/testsuite/tests/safeHaskell/check/pkg01/safePkg01.stdout
+++ b/testsuite/tests/safeHaskell/check/pkg01/safePkg01.stdout
@@ -23,6 +23,11 @@ package dependencies: base* ghc-prim integer-gmp
trusted: safe
require own pkg trusted: True
+M_SafePkg5
+package dependencies: base* ghc-prim integer-gmp
+trusted: safe-infered
+require own pkg trusted: True
+
Testing setting trust
trusted: True
trusted: False
diff --git a/testsuite/tests/safeHaskell/flags/SafeFlags17.stderr b/testsuite/tests/safeHaskell/flags/SafeFlags17.stderr
index 99147eea77..9aab02d5d8 100644
--- a/testsuite/tests/safeHaskell/flags/SafeFlags17.stderr
+++ b/testsuite/tests/safeHaskell/flags/SafeFlags17.stderr
@@ -1,3 +1,4 @@
SafeFlags17.hs:4:8:
- base:Prelude can't be safely imported! The package (base) the module resides in isn't trusted.
+ Prelude: Can't be safely imported!
+ The package (base) the module resides in isn't trusted.
diff --git a/testsuite/tests/safeHaskell/flags/SafeFlags18.stderr b/testsuite/tests/safeHaskell/flags/SafeFlags18.stderr
new file mode 100644
index 0000000000..7ef83389a8
--- /dev/null
+++ b/testsuite/tests/safeHaskell/flags/SafeFlags18.stderr
@@ -0,0 +1,6 @@
+
+SafeFlags18.hs:1:16:
+ Warning: -fpackage-trust ignored; must be specified with a Safe Haskell flag
+
+<no location info>:
+Failing due to -Werror.
diff --git a/testsuite/tests/safeHaskell/flags/SafeFlags22.stderr b/testsuite/tests/safeHaskell/flags/SafeFlags22.stderr
index 7913f6847d..c4650485db 100644
--- a/testsuite/tests/safeHaskell/flags/SafeFlags22.stderr
+++ b/testsuite/tests/safeHaskell/flags/SafeFlags22.stderr
@@ -2,4 +2,6 @@
SafeFlags22.hs:1:16:
Warning: `SafeFlags22' has been infered as unsafe!
Reason:
- base:System.IO.Unsafe can't be safely imported! The module itself isn't safe.
+ SafeFlags22.hs:7:1:
+ System.IO.Unsafe: Can't be safely imported!
+ The module itself isn't safe.
diff --git a/testsuite/tests/safeHaskell/flags/SafeFlags23.stderr b/testsuite/tests/safeHaskell/flags/SafeFlags23.stderr
index bf8b7d937e..3ebe04944d 100644
--- a/testsuite/tests/safeHaskell/flags/SafeFlags23.stderr
+++ b/testsuite/tests/safeHaskell/flags/SafeFlags23.stderr
@@ -2,7 +2,9 @@
SafeFlags23.hs:1:16:
Warning: `SafeFlags22' has been infered as unsafe!
Reason:
- base:System.IO.Unsafe can't be safely imported! The module itself isn't safe.
+ SafeFlags23.hs:7:1:
+ System.IO.Unsafe: Can't be safely imported!
+ The module itself isn't safe.
<no location info>:
Failing due to -Werror.
diff --git a/testsuite/tests/safeHaskell/flags/SafeFlags28.hs b/testsuite/tests/safeHaskell/flags/SafeFlags28.hs
new file mode 100644
index 0000000000..feb4516110
--- /dev/null
+++ b/testsuite/tests/safeHaskell/flags/SafeFlags28.hs
@@ -0,0 +1,9 @@
+{-# OPTIONS_GHC -trust base, -trust bytestring #-}
+-- | Basic test to see if no safe infer flag compiles
+-- This module would usually infer safely, so it shouldn't be safe now.
+-- We don't actually check that here though, see test '' for that.
+module SafeFlags28 where
+
+f :: Int
+f = 1
+
diff --git a/testsuite/tests/safeHaskell/flags/SafeFlags28.stderr b/testsuite/tests/safeHaskell/flags/SafeFlags28.stderr
new file mode 100644
index 0000000000..46dcabb9fd
--- /dev/null
+++ b/testsuite/tests/safeHaskell/flags/SafeFlags28.stderr
@@ -0,0 +1,12 @@
+
+SafeFlags28.hs:1:16:
+ unknown flag in {-# OPTIONS_GHC #-} pragma: -trust
+
+SafeFlags28.hs:1:16:
+ unknown flag in {-# OPTIONS_GHC #-} pragma: base,
+
+SafeFlags28.hs:1:16:
+ unknown flag in {-# OPTIONS_GHC #-} pragma: -trust
+
+SafeFlags28.hs:1:16:
+ unknown flag in {-# OPTIONS_GHC #-} pragma: bytestring
diff --git a/testsuite/tests/safeHaskell/flags/SafeFlags29.hs b/testsuite/tests/safeHaskell/flags/SafeFlags29.hs
new file mode 100644
index 0000000000..389fe48216
--- /dev/null
+++ b/testsuite/tests/safeHaskell/flags/SafeFlags29.hs
@@ -0,0 +1,10 @@
+{-# LANGUAGE Safe #-}
+{-# OPTIONS_GHC -trust base -trust bytestring #-}
+-- | Basic test to see if no safe infer flag compiles
+-- This module would usually infer safely, so it shouldn't be safe now.
+-- We don't actually check that here though, see test '' for that.
+module SafeFlags29 where
+
+f :: Int
+f = 1
+
diff --git a/testsuite/tests/safeHaskell/flags/SafeFlags29.stderr b/testsuite/tests/safeHaskell/flags/SafeFlags29.stderr
new file mode 100644
index 0000000000..ee0d13b957
--- /dev/null
+++ b/testsuite/tests/safeHaskell/flags/SafeFlags29.stderr
@@ -0,0 +1,12 @@
+
+SafeFlags29.hs:2:16:
+ unknown flag in {-# OPTIONS_GHC #-} pragma: -trust
+
+SafeFlags29.hs:2:16:
+ unknown flag in {-# OPTIONS_GHC #-} pragma: base
+
+SafeFlags29.hs:2:16:
+ unknown flag in {-# OPTIONS_GHC #-} pragma: -trust
+
+SafeFlags29.hs:2:16:
+ unknown flag in {-# OPTIONS_GHC #-} pragma: bytestring
diff --git a/testsuite/tests/safeHaskell/flags/all.T b/testsuite/tests/safeHaskell/flags/all.T
index f5e9a896d0..713439567d 100644
--- a/testsuite/tests/safeHaskell/flags/all.T
+++ b/testsuite/tests/safeHaskell/flags/all.T
@@ -37,7 +37,7 @@ test('SafeFlags14', normal, compile_fail, [''])
test('SafeFlags15', normal, compile, [''])
test('SafeFlags16', normal, compile, [''])
test('SafeFlags17', normal, compile_fail, ['-distrust base'])
-test('SafeFlags18', normal, compile, ['-trust base'])
+test('SafeFlags18', normal, compile_fail, ['-trust base -Werror'])
test('SafeFlags19', normal, compile_fail, [''])
test('SafeFlags20', normal, compile, ['-trust base'])
@@ -54,6 +54,10 @@ test('SafeFlags26', normal, compile_fail, [''])
# test -fno-safe-infer
test('SafeFlags27', normal, compile, [''])
+# test package flags don't work
+test('SafeFlags28', normal, compile_fail, [''])
+test('SafeFlags29', normal, compile_fail, [''])
+
# test certain flags are still allowed under -XSafe
test('Flags01', normal, compile, ['-XSafe'])
test('Flags02', normal, compile, ['-XSafe'])
diff --git a/testsuite/tests/safeHaskell/ghci/A.hs b/testsuite/tests/safeHaskell/ghci/A.hs
new file mode 100644
index 0000000000..73da27f637
--- /dev/null
+++ b/testsuite/tests/safeHaskell/ghci/A.hs
@@ -0,0 +1,10 @@
+{-# LANGUAGE Trustworthy #-}
+module A (a) where
+
+import System.IO.Unsafe
+
+a :: Int
+a = 1
+
+unsafe = unsafePerformIO
+
diff --git a/testsuite/tests/safeHaskell/ghci/B.hs b/testsuite/tests/safeHaskell/ghci/B.hs
new file mode 100644
index 0000000000..58ecfb42f7
--- /dev/null
+++ b/testsuite/tests/safeHaskell/ghci/B.hs
@@ -0,0 +1,8 @@
+{-# LANGUAGE Unsafe #-}
+module B where
+
+import System.IO.Unsafe
+
+a :: Int
+a = 1
+
diff --git a/testsuite/tests/safeHaskell/ghci/C.hs b/testsuite/tests/safeHaskell/ghci/C.hs
new file mode 100644
index 0000000000..94959c7c0b
--- /dev/null
+++ b/testsuite/tests/safeHaskell/ghci/C.hs
@@ -0,0 +1,13 @@
+{-# LANGUAGE Safe #-}
+module C (a, C(), D(..)) where
+
+a :: Int
+a = 1
+
+b :: Int
+b = 2
+
+data C a = C a Int
+
+data D a = D a Int
+
diff --git a/testsuite/tests/safeHaskell/ghci/D.hs b/testsuite/tests/safeHaskell/ghci/D.hs
new file mode 100644
index 0000000000..2a70c065ab
--- /dev/null
+++ b/testsuite/tests/safeHaskell/ghci/D.hs
@@ -0,0 +1,8 @@
+module D (a) where
+
+a :: Int
+a = 1
+
+b :: Int
+b = 2
+
diff --git a/testsuite/tests/safeHaskell/ghci/E.hs b/testsuite/tests/safeHaskell/ghci/E.hs
new file mode 100644
index 0000000000..4474d46d5f
--- /dev/null
+++ b/testsuite/tests/safeHaskell/ghci/E.hs
@@ -0,0 +1,7 @@
+module E where
+
+import System.IO.Unsafe
+
+a :: Int
+a = 1
+
diff --git a/testsuite/tests/lib/OldException/Makefile b/testsuite/tests/safeHaskell/ghci/Makefile
index 4a268530f1..4a268530f1 100644
--- a/testsuite/tests/lib/OldException/Makefile
+++ b/testsuite/tests/safeHaskell/ghci/Makefile
diff --git a/testsuite/tests/safeHaskell/ghci/P13_A.hs b/testsuite/tests/safeHaskell/ghci/P13_A.hs
new file mode 100644
index 0000000000..1044c83545
--- /dev/null
+++ b/testsuite/tests/safeHaskell/ghci/P13_A.hs
@@ -0,0 +1,9 @@
+{-# LANGUAGE OverlappingInstances, FlexibleInstances #-}
+module P13_A where
+
+class Pos a where { res :: a -> Bool }
+
+instance Pos [a] where { res _ = True }
+
+instance Pos Char where { res _ = True }
+
diff --git a/testsuite/tests/safeHaskell/ghci/all.T b/testsuite/tests/safeHaskell/ghci/all.T
new file mode 100644
index 0000000000..1c878c6759
--- /dev/null
+++ b/testsuite/tests/safeHaskell/ghci/all.T
@@ -0,0 +1,20 @@
+# Test GHCi works with Safe Haskell
+
+test('p1', normal, ghci_script, ['p1.script'])
+test('p2', normal, ghci_script, ['p2.script'])
+test('p3', normal, ghci_script, ['p3.script'])
+test('p4', normal, ghci_script, ['p4.script'])
+test('p5', normal, ghci_script, ['p5.script'])
+test('p6', normal, ghci_script, ['p6.script'])
+test('p7', normal, ghci_script, ['p7.script'])
+test('p8', normal, ghci_script, ['p8.script'])
+test('p9', normal, ghci_script, ['p9.script'])
+test('p10', normal, ghci_script, ['p10.script'])
+test('p11', normal, ghci_script, ['p11.script'])
+test('p12', normal, ghci_script, ['p12.script'])
+test('p13', normal, ghci_script, ['p13.script'])
+test('p14', normal, ghci_script, ['p14.script'])
+test('p15', normal, ghci_script, ['p15.script'])
+test('p16', normal, ghci_script, ['p16.script'])
+test('p17', normal, ghci_script, ['p17.script'])
+
diff --git a/testsuite/tests/safeHaskell/ghci/p1.script b/testsuite/tests/safeHaskell/ghci/p1.script
new file mode 100644
index 0000000000..3c55ad7208
--- /dev/null
+++ b/testsuite/tests/safeHaskell/ghci/p1.script
@@ -0,0 +1,8 @@
+-- Test disabled language extensions
+:unset +s
+:set -XSafe
+
+:set -XTemplateHaskell
+
+:set -XGeneralizedNewtypeDeriving
+
diff --git a/testsuite/tests/safeHaskell/ghci/p1.stderr b/testsuite/tests/safeHaskell/ghci/p1.stderr
new file mode 100644
index 0000000000..9446e1df16
--- /dev/null
+++ b/testsuite/tests/safeHaskell/ghci/p1.stderr
@@ -0,0 +1,6 @@
+
+<no location info>: Warning:
+ -XTemplateHaskell is not allowed in Safe Haskell; ignoring -XTemplateHaskell
+
+<no location info>: Warning:
+ -XGeneralizedNewtypeDeriving is not allowed in Safe Haskell; ignoring -XGeneralizedNewtypeDeriving
diff --git a/testsuite/tests/safeHaskell/ghci/p10.script b/testsuite/tests/safeHaskell/ghci/p10.script
new file mode 100644
index 0000000000..e1cefae496
--- /dev/null
+++ b/testsuite/tests/safeHaskell/ghci/p10.script
@@ -0,0 +1,10 @@
+-- Test load works
+:unset +s
+:set -XSafe
+
+:load D
+
+a
+
+b
+
diff --git a/testsuite/tests/safeHaskell/ghci/p10.stderr b/testsuite/tests/safeHaskell/ghci/p10.stderr
new file mode 100644
index 0000000000..768948984e
--- /dev/null
+++ b/testsuite/tests/safeHaskell/ghci/p10.stderr
@@ -0,0 +1,2 @@
+
+<interactive>:10:1: Not in scope: `b'
diff --git a/testsuite/tests/safeHaskell/ghci/p10.stdout b/testsuite/tests/safeHaskell/ghci/p10.stdout
new file mode 100644
index 0000000000..d00491fd7e
--- /dev/null
+++ b/testsuite/tests/safeHaskell/ghci/p10.stdout
@@ -0,0 +1 @@
+1
diff --git a/testsuite/tests/safeHaskell/ghci/p11.script b/testsuite/tests/safeHaskell/ghci/p11.script
new file mode 100644
index 0000000000..19fb759600
--- /dev/null
+++ b/testsuite/tests/safeHaskell/ghci/p11.script
@@ -0,0 +1,6 @@
+-- Test load works
+:unset +s
+:set -XSafe
+
+:load E
+
diff --git a/testsuite/tests/safeHaskell/ghci/p11.stderr b/testsuite/tests/safeHaskell/ghci/p11.stderr
new file mode 100644
index 0000000000..9ff951a7bc
--- /dev/null
+++ b/testsuite/tests/safeHaskell/ghci/p11.stderr
@@ -0,0 +1,4 @@
+
+E.hs:3:1:
+ System.IO.Unsafe: Can't be safely imported!
+ The module itself isn't safe.
diff --git a/testsuite/tests/safeHaskell/ghci/p12.script b/testsuite/tests/safeHaskell/ghci/p12.script
new file mode 100644
index 0000000000..486302e8ed
--- /dev/null
+++ b/testsuite/tests/safeHaskell/ghci/p12.script
@@ -0,0 +1,10 @@
+-- Test you can't unset options
+:unset +s
+:set -XSafe
+:unset -XSafe
+
+:set -fpackage-trust
+:unset -fpackage-trust
+
+import Data.ByteString
+
diff --git a/testsuite/tests/safeHaskell/ghci/p12.stderr b/testsuite/tests/safeHaskell/ghci/p12.stderr
new file mode 100644
index 0000000000..4df01fd599
--- /dev/null
+++ b/testsuite/tests/safeHaskell/ghci/p12.stderr
@@ -0,0 +1,4 @@
+
+<no location info>:
+ Data.ByteString: Can't be safely imported!
+ The package (bytestring-0.10.0.0) the module resides in isn't trusted.
diff --git a/testsuite/tests/safeHaskell/ghci/p12.stdout b/testsuite/tests/safeHaskell/ghci/p12.stdout
new file mode 100644
index 0000000000..5d16ff7a9f
--- /dev/null
+++ b/testsuite/tests/safeHaskell/ghci/p12.stdout
@@ -0,0 +1,2 @@
+don't know how to reverse -XSafe
+Some flags have not been recognized: -fno-package-trust
diff --git a/testsuite/tests/safeHaskell/ghci/p13.script b/testsuite/tests/safeHaskell/ghci/p13.script
new file mode 100644
index 0000000000..4e96c844ed
--- /dev/null
+++ b/testsuite/tests/safeHaskell/ghci/p13.script
@@ -0,0 +1,14 @@
+-- Test restricted functionality: Overlapping
+:unset +s
+:set -XSafe
+:set -XOverlappingInstances
+:set -XFlexibleInstances
+
+:l P13_A
+
+instance Pos [Int] where { res _ = error "This curry is poisoned!" }
+
+res [1::Int, 2::Int]
+-- res 'c'
+-- res ['c']
+
diff --git a/testsuite/tests/safeHaskell/ghci/p13.stderr b/testsuite/tests/safeHaskell/ghci/p13.stderr
new file mode 100644
index 0000000000..5e31e43439
--- /dev/null
+++ b/testsuite/tests/safeHaskell/ghci/p13.stderr
@@ -0,0 +1,13 @@
+
+<interactive>:12:1:
+ Unsafe overlapping instances for Pos [Int]
+ arising from a use of `res'
+ The matching instance is:
+ instance [overlap ok] [safe] Pos [Int]
+ -- Defined at <interactive>:10:10
+ It is compiled in a Safe module and as such can only
+ overlap instances from the same module, however it
+ overlaps the following instances from different modules:
+ instance [overlap ok] [safe] Pos [a] -- Defined at P13_A.hs:6:10
+ In the expression: res [1 :: Int, 2 :: Int]
+ In an equation for `it': it = res [1 :: Int, 2 :: Int]
diff --git a/testsuite/tests/lib/System/exitWith001.stdout b/testsuite/tests/safeHaskell/ghci/p13.stdout
index e69de29bb2..e69de29bb2 100644
--- a/testsuite/tests/lib/System/exitWith001.stdout
+++ b/testsuite/tests/safeHaskell/ghci/p13.stdout
diff --git a/testsuite/tests/safeHaskell/ghci/p14.script b/testsuite/tests/safeHaskell/ghci/p14.script
new file mode 100644
index 0000000000..4802faf940
--- /dev/null
+++ b/testsuite/tests/safeHaskell/ghci/p14.script
@@ -0,0 +1,10 @@
+-- Test restricted functionality: RULES
+:unset +s
+:set -XSafe
+
+:set -fenable-rewrite-rules
+
+let f x = x - 1
+
+{-# RULES "id/Int" id = f #-}
+
diff --git a/testsuite/tests/safeHaskell/ghci/p14.stderr b/testsuite/tests/safeHaskell/ghci/p14.stderr
new file mode 100644
index 0000000000..4a66d78f55
--- /dev/null
+++ b/testsuite/tests/safeHaskell/ghci/p14.stderr
@@ -0,0 +1,2 @@
+
+<interactive>:10:1: parse error on input `{-# RULES'
diff --git a/testsuite/tests/safeHaskell/ghci/p15.script b/testsuite/tests/safeHaskell/ghci/p15.script
new file mode 100644
index 0000000000..3faeec9df9
--- /dev/null
+++ b/testsuite/tests/safeHaskell/ghci/p15.script
@@ -0,0 +1,23 @@
+-- Test restricted functionality: Data.Typeable
+:unset +s
+:set -XSafe
+:set -XDeriveDataTypeable
+:set -XStandaloneDeriving
+
+:m + Data.Typeable
+
+data H = H {h :: String} deriving (Typeable, Show)
+
+data G = G [Int] deriving (Show)
+
+instance Typeable G where { typeOf _ = typeOf (undefined :: H) }
+
+let x = H "Hello"
+let y = G [0]
+
+x
+y
+
+let (Just y_as_H) = (cast y) :: Maybe H
+y_as_H
+
diff --git a/testsuite/tests/safeHaskell/ghci/p15.stderr b/testsuite/tests/safeHaskell/ghci/p15.stderr
new file mode 100644
index 0000000000..30c24471f7
--- /dev/null
+++ b/testsuite/tests/safeHaskell/ghci/p15.stderr
@@ -0,0 +1,11 @@
+
+<interactive>:14:10:
+ Can't create hand written instances of Typeable in Safe Haskell! Can only derive them
+
+<interactive>:22:22:
+ No instance for (Typeable G) arising from a use of `cast'
+ Possible fix: add an instance declaration for (Typeable G)
+ In the expression: (cast y) :: Maybe H
+ In a pattern binding: (Just y_as_H) = (cast y) :: Maybe H
+
+<interactive>:23:1: Not in scope: `y_as_H'
diff --git a/testsuite/tests/safeHaskell/ghci/p15.stdout b/testsuite/tests/safeHaskell/ghci/p15.stdout
new file mode 100644
index 0000000000..40b3f68882
--- /dev/null
+++ b/testsuite/tests/safeHaskell/ghci/p15.stdout
@@ -0,0 +1,2 @@
+H {h = "Hello"}
+G [0]
diff --git a/testsuite/tests/safeHaskell/ghci/p16.script b/testsuite/tests/safeHaskell/ghci/p16.script
new file mode 100644
index 0000000000..2bcea65c95
--- /dev/null
+++ b/testsuite/tests/safeHaskell/ghci/p16.script
@@ -0,0 +1,22 @@
+-- Test restricted functionality: GeneralizedNewtypeDeriving
+:unset +s
+:set -XSafe
+
+:set -XGeneralizedNewtypeDeriving
+
+class Op a where { op :: a -> String }
+
+data T = A | B | C deriving (Show)
+instance Op T where { op _ = "T" }
+
+newtype T1 = T1 T
+instance Op T1 where op _ = "t1"
+
+newtype T2 = T2 T deriving (Op)
+
+let x = T1 A
+let y = T2 A
+
+op x
+op y
+
diff --git a/testsuite/tests/safeHaskell/ghci/p16.stderr b/testsuite/tests/safeHaskell/ghci/p16.stderr
new file mode 100644
index 0000000000..33602c70a5
--- /dev/null
+++ b/testsuite/tests/safeHaskell/ghci/p16.stderr
@@ -0,0 +1,15 @@
+
+<no location info>: Warning:
+ -XGeneralizedNewtypeDeriving is not allowed in Safe Haskell; ignoring -XGeneralizedNewtypeDeriving
+
+<interactive>:16:29:
+ Can't make a derived instance of `Op T2':
+ `Op' is not a derivable class
+ Try -XGeneralizedNewtypeDeriving for GHC's newtype-deriving extension
+ In the newtype declaration for `T2'
+
+<interactive>:19:9:
+ Not in scope: data constructor `T2'
+ Perhaps you meant `T1' (line 13)
+
+<interactive>:22:4: Not in scope: `y'
diff --git a/testsuite/tests/safeHaskell/ghci/p16.stdout b/testsuite/tests/safeHaskell/ghci/p16.stdout
new file mode 100644
index 0000000000..233a1e18c7
--- /dev/null
+++ b/testsuite/tests/safeHaskell/ghci/p16.stdout
@@ -0,0 +1 @@
+"t1"
diff --git a/testsuite/tests/safeHaskell/ghci/p17.script b/testsuite/tests/safeHaskell/ghci/p17.script
new file mode 100644
index 0000000000..c9821d4e17
--- /dev/null
+++ b/testsuite/tests/safeHaskell/ghci/p17.script
@@ -0,0 +1,10 @@
+-- Test bad imports
+:unset +s
+:set -XSafe
+
+-- test trustworthy and package flag
+import Data.ByteString
+
+:set -fpackage-trust
+import Data.ByteString
+
diff --git a/testsuite/tests/safeHaskell/ghci/p17.stderr b/testsuite/tests/safeHaskell/ghci/p17.stderr
new file mode 100644
index 0000000000..4df01fd599
--- /dev/null
+++ b/testsuite/tests/safeHaskell/ghci/p17.stderr
@@ -0,0 +1,4 @@
+
+<no location info>:
+ Data.ByteString: Can't be safely imported!
+ The package (bytestring-0.10.0.0) the module resides in isn't trusted.
diff --git a/testsuite/tests/safeHaskell/ghci/p2.script b/testsuite/tests/safeHaskell/ghci/p2.script
new file mode 100644
index 0000000000..c2191165fd
--- /dev/null
+++ b/testsuite/tests/safeHaskell/ghci/p2.script
@@ -0,0 +1,10 @@
+-- Test bad options
+
+:unset +s
+:set -XSafe
+
+-- we actually allow this for now but may want to revist this decision
+:set -trust base
+:set -distrust base
+:set -distrust-all
+
diff --git a/testsuite/tests/safeHaskell/ghci/p2.stderr b/testsuite/tests/safeHaskell/ghci/p2.stderr
new file mode 100644
index 0000000000..342bb05686
--- /dev/null
+++ b/testsuite/tests/safeHaskell/ghci/p2.stderr
@@ -0,0 +1,2 @@
+package flags have changed, resetting and loading new packages...
+package flags have changed, resetting and loading new packages...
diff --git a/testsuite/tests/safeHaskell/ghci/p2.stdout b/testsuite/tests/safeHaskell/ghci/p2.stdout
new file mode 100644
index 0000000000..c6efa9ed48
--- /dev/null
+++ b/testsuite/tests/safeHaskell/ghci/p2.stdout
@@ -0,0 +1,2 @@
+cannot satisfy -package -all
+ (use -v for more information)
diff --git a/testsuite/tests/safeHaskell/ghci/p3.script b/testsuite/tests/safeHaskell/ghci/p3.script
new file mode 100644
index 0000000000..c2d9061739
--- /dev/null
+++ b/testsuite/tests/safeHaskell/ghci/p3.script
@@ -0,0 +1,12 @@
+-- Test bad imports
+:unset +s
+:set -XSafe
+
+import System.IO.Unsafe
+
+-- test trustworthy and package flag
+import Data.ByteString
+
+:set -fpackage-trust
+import Data.ByteString
+
diff --git a/testsuite/tests/safeHaskell/ghci/p3.stderr b/testsuite/tests/safeHaskell/ghci/p3.stderr
new file mode 100644
index 0000000000..8e4ee4018c
--- /dev/null
+++ b/testsuite/tests/safeHaskell/ghci/p3.stderr
@@ -0,0 +1,8 @@
+
+<no location info>:
+ System.IO.Unsafe: Can't be safely imported!
+ The module itself isn't safe.
+
+<no location info>:
+ Data.ByteString: Can't be safely imported!
+ The package (bytestring-0.10.0.0) the module resides in isn't trusted.
diff --git a/testsuite/tests/safeHaskell/ghci/p3.stdout b/testsuite/tests/safeHaskell/ghci/p3.stdout
new file mode 100644
index 0000000000..268f05e8d9
--- /dev/null
+++ b/testsuite/tests/safeHaskell/ghci/p3.stdout
@@ -0,0 +1 @@
+can't import System.IO.Unsafe as it isn't trusted.
diff --git a/testsuite/tests/safeHaskell/ghci/p4.script b/testsuite/tests/safeHaskell/ghci/p4.script
new file mode 100644
index 0000000000..8d78f40679
--- /dev/null
+++ b/testsuite/tests/safeHaskell/ghci/p4.script
@@ -0,0 +1,8 @@
+-- Test bad direct calls
+:unset +s
+:set -XSafe
+
+let x = System.IO.Unsafe.unsafePerformIO
+let y = x (putStrLn "Hello" >> return 1)
+y
+
diff --git a/testsuite/tests/safeHaskell/ghci/p4.stderr b/testsuite/tests/safeHaskell/ghci/p4.stderr
new file mode 100644
index 0000000000..8ff4107af8
--- /dev/null
+++ b/testsuite/tests/safeHaskell/ghci/p4.stderr
@@ -0,0 +1,6 @@
+
+<interactive>:6:9: Not in scope: `System.IO.Unsafe.unsafePerformIO'
+
+<interactive>:7:9: Not in scope: `x'
+
+<interactive>:8:1: Not in scope: `y'
diff --git a/testsuite/tests/safeHaskell/ghci/p5.script b/testsuite/tests/safeHaskell/ghci/p5.script
new file mode 100644
index 0000000000..cdf6088812
--- /dev/null
+++ b/testsuite/tests/safeHaskell/ghci/p5.script
@@ -0,0 +1,13 @@
+-- Test unsetting safe
+:unset +s
+:set -XSafe
+
+:set -XSafe
+:unset -XSafe
+
+:set -XTrustworthy
+:unset -XTrustworthy
+
+:set -XUnsafe
+:unset -XUnsafe
+
diff --git a/testsuite/tests/safeHaskell/ghci/p5.stdout b/testsuite/tests/safeHaskell/ghci/p5.stdout
new file mode 100644
index 0000000000..3f649f7b60
--- /dev/null
+++ b/testsuite/tests/safeHaskell/ghci/p5.stdout
@@ -0,0 +1,7 @@
+don't know how to reverse -XSafe
+ghc-stage2: <no location info>: Incompatible Safe Haskell flags! (Safe, Trustworthy)
+Usage: For basic information, try the `--help' option.
+don't know how to reverse -XTrustworthy
+ghc-stage2: <no location info>: Incompatible Safe Haskell flags! (Safe, Unsafe)
+Usage: For basic information, try the `--help' option.
+don't know how to reverse -XUnsafe
diff --git a/testsuite/tests/safeHaskell/ghci/p6.script b/testsuite/tests/safeHaskell/ghci/p6.script
new file mode 100644
index 0000000000..8590fd6449
--- /dev/null
+++ b/testsuite/tests/safeHaskell/ghci/p6.script
@@ -0,0 +1,13 @@
+-- Test restricted functionality: FFI
+:unset +s
+:set -XSafe
+
+:set -XForeignFunctionInterface
+
+foreign import ccall "sin" c_sin' :: Double -> IO Double
+x <- c_sin' 1
+x
+
+foreign import ccall "sin" c_sin :: Double -> Double
+c_sin 1
+
diff --git a/testsuite/tests/safeHaskell/ghci/p6.stderr b/testsuite/tests/safeHaskell/ghci/p6.stderr
new file mode 100644
index 0000000000..b32c521b4d
--- /dev/null
+++ b/testsuite/tests/safeHaskell/ghci/p6.stderr
@@ -0,0 +1,10 @@
+
+<interactive>:12:1:
+ Unacceptable result type in foreign declaration: Double
+ Safe Haskell is on, all FFI imports must be in the IO monad
+ When checking declaration:
+ foreign import ccall safe "static sin" c_sin :: Double -> Double
+
+<interactive>:13:1:
+ Not in scope: `c_sin'
+ Perhaps you meant c_sin' (line 8)
diff --git a/testsuite/tests/safeHaskell/ghci/p6.stdout b/testsuite/tests/safeHaskell/ghci/p6.stdout
new file mode 100644
index 0000000000..e83a344363
--- /dev/null
+++ b/testsuite/tests/safeHaskell/ghci/p6.stdout
@@ -0,0 +1 @@
+0.8414709848078965
diff --git a/testsuite/tests/safeHaskell/ghci/p7.script b/testsuite/tests/safeHaskell/ghci/p7.script
new file mode 100644
index 0000000000..ea4190b0a4
--- /dev/null
+++ b/testsuite/tests/safeHaskell/ghci/p7.script
@@ -0,0 +1,6 @@
+-- Test load works
+:unset +s
+:set -XSafe
+
+:load A
+
diff --git a/testsuite/tests/safeHaskell/ghci/p7.stdout b/testsuite/tests/safeHaskell/ghci/p7.stdout
new file mode 100644
index 0000000000..674794fdac
--- /dev/null
+++ b/testsuite/tests/safeHaskell/ghci/p7.stdout
@@ -0,0 +1,2 @@
+ghc-stage2: A.hs:1:14-24: Incompatible Safe Haskell flags! (Safe, Trustworthy)
+Usage: For basic information, try the `--help' option.
diff --git a/testsuite/tests/safeHaskell/ghci/p8.script b/testsuite/tests/safeHaskell/ghci/p8.script
new file mode 100644
index 0000000000..7d5101f226
--- /dev/null
+++ b/testsuite/tests/safeHaskell/ghci/p8.script
@@ -0,0 +1,6 @@
+-- Test load works
+:unset +s
+:set -XSafe
+
+:load B
+
diff --git a/testsuite/tests/safeHaskell/ghci/p8.stdout b/testsuite/tests/safeHaskell/ghci/p8.stdout
new file mode 100644
index 0000000000..8280f4a6b0
--- /dev/null
+++ b/testsuite/tests/safeHaskell/ghci/p8.stdout
@@ -0,0 +1,2 @@
+ghc-stage2: B.hs:1:14-19: Incompatible Safe Haskell flags! (Safe, Unsafe)
+Usage: For basic information, try the `--help' option.
diff --git a/testsuite/tests/safeHaskell/ghci/p9.script b/testsuite/tests/safeHaskell/ghci/p9.script
new file mode 100644
index 0000000000..298944dcae
--- /dev/null
+++ b/testsuite/tests/safeHaskell/ghci/p9.script
@@ -0,0 +1,10 @@
+-- Test load works
+:unset +s
+:set -XSafe
+
+:load C
+
+a
+
+b
+
diff --git a/testsuite/tests/safeHaskell/ghci/p9.stderr b/testsuite/tests/safeHaskell/ghci/p9.stderr
new file mode 100644
index 0000000000..768948984e
--- /dev/null
+++ b/testsuite/tests/safeHaskell/ghci/p9.stderr
@@ -0,0 +1,2 @@
+
+<interactive>:10:1: Not in scope: `b'
diff --git a/testsuite/tests/safeHaskell/ghci/p9.stdout b/testsuite/tests/safeHaskell/ghci/p9.stdout
new file mode 100644
index 0000000000..d00491fd7e
--- /dev/null
+++ b/testsuite/tests/safeHaskell/ghci/p9.stdout
@@ -0,0 +1 @@
+1
diff --git a/testsuite/tests/safeHaskell/safeInfered/UnsafeInfered01.stderr b/testsuite/tests/safeHaskell/safeInfered/UnsafeInfered01.stderr
index 15212f3dc9..f96f1719ae 100644
--- a/testsuite/tests/safeHaskell/safeInfered/UnsafeInfered01.stderr
+++ b/testsuite/tests/safeHaskell/safeInfered/UnsafeInfered01.stderr
@@ -2,4 +2,5 @@
[2 of 2] Compiling UnsafeInfered01 ( UnsafeInfered01.hs, UnsafeInfered01.o )
UnsafeInfered01.hs:4:1:
- main:UnsafeInfered01_A can't be safely imported! The module itself isn't safe.
+ UnsafeInfered01_A: Can't be safely imported!
+ The module itself isn't safe.
diff --git a/testsuite/tests/safeHaskell/safeInfered/UnsafeInfered02.stderr b/testsuite/tests/safeHaskell/safeInfered/UnsafeInfered02.stderr
index 587b8a9a9e..7bd9a17733 100644
--- a/testsuite/tests/safeHaskell/safeInfered/UnsafeInfered02.stderr
+++ b/testsuite/tests/safeHaskell/safeInfered/UnsafeInfered02.stderr
@@ -2,4 +2,5 @@
[2 of 2] Compiling UnsafeInfered02 ( UnsafeInfered02.hs, UnsafeInfered02.o )
UnsafeInfered02.hs:4:1:
- main:UnsafeInfered02_A can't be safely imported! The module itself isn't safe.
+ UnsafeInfered02_A: Can't be safely imported!
+ The module itself isn't safe.
diff --git a/testsuite/tests/safeHaskell/safeInfered/UnsafeInfered03.stderr b/testsuite/tests/safeHaskell/safeInfered/UnsafeInfered03.stderr
index f869206b03..ea21c40d48 100644
--- a/testsuite/tests/safeHaskell/safeInfered/UnsafeInfered03.stderr
+++ b/testsuite/tests/safeHaskell/safeInfered/UnsafeInfered03.stderr
@@ -2,4 +2,5 @@
[2 of 2] Compiling UnsafeInfered03 ( UnsafeInfered03.hs, UnsafeInfered03.o )
UnsafeInfered03.hs:4:1:
- main:UnsafeInfered03_A can't be safely imported! The module itself isn't safe.
+ UnsafeInfered03_A: Can't be safely imported!
+ The module itself isn't safe.
diff --git a/testsuite/tests/safeHaskell/safeInfered/UnsafeInfered05.stderr b/testsuite/tests/safeHaskell/safeInfered/UnsafeInfered05.stderr
index e08d2ae2fc..2b23ce076f 100644
--- a/testsuite/tests/safeHaskell/safeInfered/UnsafeInfered05.stderr
+++ b/testsuite/tests/safeHaskell/safeInfered/UnsafeInfered05.stderr
@@ -2,4 +2,5 @@
[2 of 2] Compiling UnsafeInfered05 ( UnsafeInfered05.hs, UnsafeInfered05.o )
UnsafeInfered05.hs:4:1:
- main:UnsafeInfered05_A can't be safely imported! The module itself isn't safe.
+ UnsafeInfered05_A: Can't be safely imported!
+ The module itself isn't safe.
diff --git a/testsuite/tests/safeHaskell/safeInfered/UnsafeInfered06.stderr b/testsuite/tests/safeHaskell/safeInfered/UnsafeInfered06.stderr
index 55f91664e3..73c182535c 100644
--- a/testsuite/tests/safeHaskell/safeInfered/UnsafeInfered06.stderr
+++ b/testsuite/tests/safeHaskell/safeInfered/UnsafeInfered06.stderr
@@ -2,4 +2,5 @@
[2 of 2] Compiling UnsafeInfered06 ( UnsafeInfered06.hs, UnsafeInfered06.o )
UnsafeInfered06.hs:4:1:
- main:UnsafeInfered06_A can't be safely imported! The module itself isn't safe.
+ UnsafeInfered06_A: Can't be safely imported!
+ The module itself isn't safe.
diff --git a/testsuite/tests/safeHaskell/safeInfered/UnsafeInfered07.stderr b/testsuite/tests/safeHaskell/safeInfered/UnsafeInfered07.stderr
index 86c4717dd7..98a7e808f0 100644
--- a/testsuite/tests/safeHaskell/safeInfered/UnsafeInfered07.stderr
+++ b/testsuite/tests/safeHaskell/safeInfered/UnsafeInfered07.stderr
@@ -2,4 +2,5 @@
[2 of 2] Compiling UnsafeInfered07 ( UnsafeInfered07.hs, UnsafeInfered07.o )
UnsafeInfered07.hs:4:1:
- main:UnsafeInfered07_A can't be safely imported! The module itself isn't safe.
+ UnsafeInfered07_A: Can't be safely imported!
+ The module itself isn't safe.
diff --git a/testsuite/tests/safeHaskell/safeInfered/UnsafeInfered08.stderr b/testsuite/tests/safeHaskell/safeInfered/UnsafeInfered08.stderr
index b204c68c0e..8ff259633a 100644
--- a/testsuite/tests/safeHaskell/safeInfered/UnsafeInfered08.stderr
+++ b/testsuite/tests/safeHaskell/safeInfered/UnsafeInfered08.stderr
@@ -2,4 +2,5 @@
[2 of 2] Compiling UnsafeInfered08 ( UnsafeInfered08.hs, UnsafeInfered08.o )
UnsafeInfered08.hs:4:1:
- main:UnsafeInfered08_A can't be safely imported! The module itself isn't safe.
+ UnsafeInfered08_A: Can't be safely imported!
+ The module itself isn't safe.
diff --git a/testsuite/tests/safeHaskell/safeInfered/UnsafeInfered09.stderr b/testsuite/tests/safeHaskell/safeInfered/UnsafeInfered09.stderr
index bb5c92682b..42082c854e 100644
--- a/testsuite/tests/safeHaskell/safeInfered/UnsafeInfered09.stderr
+++ b/testsuite/tests/safeHaskell/safeInfered/UnsafeInfered09.stderr
@@ -3,4 +3,5 @@
[3 of 3] Compiling UnsafeInfered09 ( UnsafeInfered09.hs, UnsafeInfered09.o )
UnsafeInfered09.hs:4:1:
- main:UnsafeInfered09_A can't be safely imported! The module itself isn't safe.
+ UnsafeInfered09_A: Can't be safely imported!
+ The module itself isn't safe.
diff --git a/testsuite/tests/safeHaskell/safeInfered/UnsafeInfered10.stderr b/testsuite/tests/safeHaskell/safeInfered/UnsafeInfered10.stderr
index 25bca5dd08..c67b891952 100644
--- a/testsuite/tests/safeHaskell/safeInfered/UnsafeInfered10.stderr
+++ b/testsuite/tests/safeHaskell/safeInfered/UnsafeInfered10.stderr
@@ -2,4 +2,5 @@
[2 of 2] Compiling UnsafeInfered10 ( UnsafeInfered10.hs, UnsafeInfered10.o )
UnsafeInfered10.hs:5:1:
- main:UnsafeInfered10_A can't be safely imported! The module itself isn't safe.
+ UnsafeInfered10_A: Can't be safely imported!
+ The module itself isn't safe.
diff --git a/testsuite/tests/safeHaskell/safeInfered/UnsafeInfered11.stderr b/testsuite/tests/safeHaskell/safeInfered/UnsafeInfered11.stderr
index fc809c3372..1c9b945b96 100644
--- a/testsuite/tests/safeHaskell/safeInfered/UnsafeInfered11.stderr
+++ b/testsuite/tests/safeHaskell/safeInfered/UnsafeInfered11.stderr
@@ -1,11 +1,13 @@
[1 of 2] Compiling UnsafeInfered11_A ( UnsafeInfered11_A.hs, UnsafeInfered11_A.o )
-UnsafeInfered11_A.hs:1:16:
- Warning: `UnsafeInfered11_A' has been infered as unsafe!
+UnsafeInfered11_A.hs:1:16: Warning:
+ `UnsafeInfered11_A' has been infered as unsafe!
Reason:
- Rule "lookupx/T" ignored
- User defined rules are disabled under Safe Haskell
+ UnsafeInfered11_A.hs:17:11: Warning:
+ Rule "lookupx/T" ignored
+ User defined rules are disabled under Safe Haskell
[2 of 2] Compiling UnsafeInfered11 ( UnsafeInfered11.hs, UnsafeInfered11.o )
UnsafeInfered11.hs:5:1:
- main:UnsafeInfered11_A can't be safely imported! The module itself isn't safe.
+ UnsafeInfered11_A: Can't be safely imported!
+ The module itself isn't safe.
diff --git a/testsuite/tests/safeHaskell/safeInfered/UnsafeInfered12.hs b/testsuite/tests/safeHaskell/safeInfered/UnsafeInfered12.hs
new file mode 100644
index 0000000000..a39b46e2a0
--- /dev/null
+++ b/testsuite/tests/safeHaskell/safeInfered/UnsafeInfered12.hs
@@ -0,0 +1,7 @@
+{-# LANGUAGE TemplateHaskell #-}
+{-# OPTIONS_GHC -fwarn-unsafe -Werror #-}
+module UnsafeInfered12 where
+
+a :: Int
+a = 1
+
diff --git a/testsuite/tests/safeHaskell/safeInfered/UnsafeInfered12.stderr b/testsuite/tests/safeHaskell/safeInfered/UnsafeInfered12.stderr
new file mode 100644
index 0000000000..1fa0d526c8
--- /dev/null
+++ b/testsuite/tests/safeHaskell/safeInfered/UnsafeInfered12.stderr
@@ -0,0 +1,9 @@
+
+UnsafeInfered12.hs:2:16: Warning:
+ `UnsafeInfered12' has been infered as unsafe!
+ Reason:
+ UnsafeInfered12.hs:1:14:
+ -XTemplateHaskell is not allowed in Safe Haskell
+
+<no location info>:
+Failing due to -Werror.
diff --git a/testsuite/tests/safeHaskell/safeInfered/all.T b/testsuite/tests/safeHaskell/safeInfered/all.T
index a685a79b6b..dee056a614 100644
--- a/testsuite/tests/safeHaskell/safeInfered/all.T
+++ b/testsuite/tests/safeHaskell/safeInfered/all.T
@@ -56,6 +56,9 @@ test('UnsafeInfered11',
[ extra_clean(['UnsafeInfered11_A.hi', 'UnsafeInfered11_A.o']) ],
multimod_compile_fail, ['UnsafeInfered11', ''])
+# test should fail as unsafe and we made warn unsafe + -Werror
+test('UnsafeInfered12', normal, compile_fail, [''])
+
# Mixed tests
test('Mixed01', normal, compile_fail, [''])
test('Mixed02', normal, compile_fail, [''])
diff --git a/testsuite/tests/safeHaskell/safeLanguage/SafeLang03.stderr b/testsuite/tests/safeHaskell/safeLanguage/SafeLang03.stderr
index fdcc5997d5..33a66e6267 100644
--- a/testsuite/tests/safeHaskell/safeLanguage/SafeLang03.stderr
+++ b/testsuite/tests/safeHaskell/safeLanguage/SafeLang03.stderr
@@ -1,4 +1,4 @@
-SafeLang03.hs:7:11:
+SafeLang03.hs:7:11: Warning:
Rule "f" ignored
User defined rules are disabled under Safe Haskell
diff --git a/testsuite/tests/safeHaskell/unsafeLibs/BadImport01.stderr b/testsuite/tests/safeHaskell/unsafeLibs/BadImport01.stderr
index bc676ca6f1..7c5128d7e2 100644
--- a/testsuite/tests/safeHaskell/unsafeLibs/BadImport01.stderr
+++ b/testsuite/tests/safeHaskell/unsafeLibs/BadImport01.stderr
@@ -1,3 +1,4 @@
BadImport01.hs:5:1:
- base:System.IO.Unsafe can't be safely imported! The module itself isn't safe.
+ System.IO.Unsafe: Can't be safely imported!
+ The module itself isn't safe.
diff --git a/testsuite/tests/safeHaskell/unsafeLibs/BadImport04.stderr b/testsuite/tests/safeHaskell/unsafeLibs/BadImport04.stderr
index f653cd697e..2c2f3befb2 100644
--- a/testsuite/tests/safeHaskell/unsafeLibs/BadImport04.stderr
+++ b/testsuite/tests/safeHaskell/unsafeLibs/BadImport04.stderr
@@ -1,3 +1,3 @@
BadImport04.hs:5:1:
- base:Foreign can't be safely imported! The module itself isn't safe.
+ Foreign: Can't be safely imported! The module itself isn't safe.
diff --git a/testsuite/tests/safeHaskell/unsafeLibs/BadImport05.stderr b/testsuite/tests/safeHaskell/unsafeLibs/BadImport05.stderr
index 7d8be6a70f..32a42f59d9 100644
--- a/testsuite/tests/safeHaskell/unsafeLibs/BadImport05.stderr
+++ b/testsuite/tests/safeHaskell/unsafeLibs/BadImport05.stderr
@@ -1,3 +1,4 @@
BadImport05.hs:5:1:
- base:System.IO.Unsafe can't be safely imported! The module itself isn't safe.
+ System.IO.Unsafe: Can't be safely imported!
+ The module itself isn't safe.
diff --git a/testsuite/tests/safeHaskell/unsafeLibs/BadImport06.stderr b/testsuite/tests/safeHaskell/unsafeLibs/BadImport06.stderr
index 6fbf954599..51a5bebec3 100644
--- a/testsuite/tests/safeHaskell/unsafeLibs/BadImport06.stderr
+++ b/testsuite/tests/safeHaskell/unsafeLibs/BadImport06.stderr
@@ -1,3 +1,4 @@
BadImport06.hs:5:1:
- base:Debug.Trace can't be safely imported! The module itself isn't safe.
+ Debug.Trace: Can't be safely imported!
+ The module itself isn't safe.
diff --git a/testsuite/tests/safeHaskell/unsafeLibs/BadImport07.stderr b/testsuite/tests/safeHaskell/unsafeLibs/BadImport07.stderr
index ccd6b34563..5133f045ec 100644
--- a/testsuite/tests/safeHaskell/unsafeLibs/BadImport07.stderr
+++ b/testsuite/tests/safeHaskell/unsafeLibs/BadImport07.stderr
@@ -1,3 +1,4 @@
BadImport07.hs:5:1:
- base:Unsafe.Coerce can't be safely imported! The module itself isn't safe.
+ Unsafe.Coerce: Can't be safely imported!
+ The module itself isn't safe.
diff --git a/testsuite/tests/safeHaskell/unsafeLibs/BadImport08.stderr b/testsuite/tests/safeHaskell/unsafeLibs/BadImport08.stderr
index a62d1543a0..d3f193cff7 100644
--- a/testsuite/tests/safeHaskell/unsafeLibs/BadImport08.stderr
+++ b/testsuite/tests/safeHaskell/unsafeLibs/BadImport08.stderr
@@ -1,3 +1,4 @@
BadImport08.hs:5:1:
- base:Control.Monad.ST can't be safely imported! The module itself isn't safe.
+ Control.Monad.ST: Can't be safely imported!
+ The module itself isn't safe.
diff --git a/testsuite/tests/safeHaskell/unsafeLibs/BadImport09.stderr b/testsuite/tests/safeHaskell/unsafeLibs/BadImport09.stderr
index 3db67ac12f..2dd8e7cf58 100644
--- a/testsuite/tests/safeHaskell/unsafeLibs/BadImport09.stderr
+++ b/testsuite/tests/safeHaskell/unsafeLibs/BadImport09.stderr
@@ -1,3 +1,4 @@
BadImport09.hs:5:1:
- base:Foreign.Marshal can't be safely imported! The module itself isn't safe.
+ Foreign.Marshal: Can't be safely imported!
+ The module itself isn't safe.
diff --git a/testsuite/tests/safeHaskell/unsafeLibs/Dep05.stderr b/testsuite/tests/safeHaskell/unsafeLibs/Dep05.stderr
index 6176ffb0a5..a35d679f8d 100644
--- a/testsuite/tests/safeHaskell/unsafeLibs/Dep05.stderr
+++ b/testsuite/tests/safeHaskell/unsafeLibs/Dep05.stderr
@@ -1,3 +1,3 @@
Dep05.hs:5:1:
- base:GHC.Arr can't be safely imported! The module itself isn't safe.
+ GHC.Arr: Can't be safely imported! The module itself isn't safe.
diff --git a/testsuite/tests/safeHaskell/unsafeLibs/Dep06.stderr b/testsuite/tests/safeHaskell/unsafeLibs/Dep06.stderr
index 7e0b4d0d55..ae8bdf8fd6 100644
--- a/testsuite/tests/safeHaskell/unsafeLibs/Dep06.stderr
+++ b/testsuite/tests/safeHaskell/unsafeLibs/Dep06.stderr
@@ -1,3 +1,3 @@
Dep06.hs:4:1:
- base:GHC.Conc can't be safely imported! The module itself isn't safe.
+ GHC.Conc: Can't be safely imported! The module itself isn't safe.
diff --git a/testsuite/tests/safeHaskell/unsafeLibs/Dep07.stderr b/testsuite/tests/safeHaskell/unsafeLibs/Dep07.stderr
index 5faecb951b..dcc7c4849d 100644
--- a/testsuite/tests/safeHaskell/unsafeLibs/Dep07.stderr
+++ b/testsuite/tests/safeHaskell/unsafeLibs/Dep07.stderr
@@ -1,3 +1,4 @@
Dep07.hs:4:1:
- base:GHC.ForeignPtr can't be safely imported! The module itself isn't safe.
+ GHC.ForeignPtr: Can't be safely imported!
+ The module itself isn't safe.
diff --git a/testsuite/tests/safeHaskell/unsafeLibs/Dep08.stderr b/testsuite/tests/safeHaskell/unsafeLibs/Dep08.stderr
index 9e06797427..386f6412c3 100644
--- a/testsuite/tests/safeHaskell/unsafeLibs/Dep08.stderr
+++ b/testsuite/tests/safeHaskell/unsafeLibs/Dep08.stderr
@@ -1,3 +1,4 @@
Dep08.hs:5:1:
- base:GHC.IOArray can't be safely imported! The module itself isn't safe.
+ GHC.IOArray: Can't be safely imported!
+ The module itself isn't safe.
diff --git a/testsuite/tests/safeHaskell/unsafeLibs/Dep09.stderr b/testsuite/tests/safeHaskell/unsafeLibs/Dep09.stderr
index e0de172782..76606c2e40 100644
--- a/testsuite/tests/safeHaskell/unsafeLibs/Dep09.stderr
+++ b/testsuite/tests/safeHaskell/unsafeLibs/Dep09.stderr
@@ -1,3 +1,3 @@
Dep09.hs:4:1:
- base:GHC.Ptr can't be safely imported! The module itself isn't safe.
+ GHC.Ptr: Can't be safely imported! The module itself isn't safe.
diff --git a/testsuite/tests/safeHaskell/unsafeLibs/Dep10.stderr b/testsuite/tests/safeHaskell/unsafeLibs/Dep10.stderr
index 4ef525183e..68fe214bc8 100644
--- a/testsuite/tests/safeHaskell/unsafeLibs/Dep10.stderr
+++ b/testsuite/tests/safeHaskell/unsafeLibs/Dep10.stderr
@@ -1,3 +1,3 @@
Dep10.hs:4:1:
- base:GHC.ST can't be safely imported! The module itself isn't safe.
+ GHC.ST: Can't be safely imported! The module itself isn't safe.
diff --git a/testsuite/tests/safeHaskell/unsafeLibs/GoodImport03.hs b/testsuite/tests/safeHaskell/unsafeLibs/GoodImport03.hs
index 34a5e4ebac..1442c9b5d0 100644
--- a/testsuite/tests/safeHaskell/unsafeLibs/GoodImport03.hs
+++ b/testsuite/tests/safeHaskell/unsafeLibs/GoodImport03.hs
@@ -22,12 +22,10 @@ import Control.Concurrent.QSemN
import Control.Concurrent.SampleVar
import Control.Exception
-import Control.OldException
import Control.Exception.Base
import Control.Monad
import Control.Monad.Fix
-import Control.Monad.Group
import Control.Monad.Instances
import Control.Monad.Zip
diff --git a/testsuite/tests/safeHaskell/unsafeLibs/GoodImport03.stderr b/testsuite/tests/safeHaskell/unsafeLibs/GoodImport03.stderr
deleted file mode 100644
index 33d90f9881..0000000000
--- a/testsuite/tests/safeHaskell/unsafeLibs/GoodImport03.stderr
+++ /dev/null
@@ -1,4 +0,0 @@
-
-GoodImport03.hs:25:1:
- Warning: Module `Control.OldException' is deprecated:
- Future versions of base will not support the old exceptions style. Please switch to extensible exceptions.
diff --git a/testsuite/tests/simplCore/should_compile/Makefile b/testsuite/tests/simplCore/should_compile/Makefile
index f39673c398..2d77e65464 100644
--- a/testsuite/tests/simplCore/should_compile/Makefile
+++ b/testsuite/tests/simplCore/should_compile/Makefile
@@ -7,6 +7,15 @@ T3055:
'$(TEST_HC)' $(TEST_HC_OPTS) -O -c T3055.hs -ddump-simpl > T3055.simpl
grep 'I# (-28)' T3055.simpl | sed 's/.*\(I# (-28)\).*/\1/'
+T5658b:
+ $(RM) -f T5658b.o T5658b.hi
+ '$(TEST_HC)' $(TEST_HC_OPTS) -O -c T5658b.hs -ddump-simpl | grep --count indexIntArray
+# Trac 5658 meant that there were three calls to indexIntArray instead of two
+
+T5776:
+ $(RM) -f T5776.o T5776.hi
+ '$(TEST_HC)' $(TEST_HC_OPTS) -O -c T5776.hs -ddump-rules | grep --count dEq
+
T3772:
$(RM) -f T3772*.hi T3772*.o
'$(TEST_HC)' $(TEST_HC_OPTS) -c -O T3772_A.hs
@@ -53,6 +62,11 @@ T4957:
.PHONY: simpl021
simpl021:
$(RM) -f Simpl021A.hi Simpl021A.o Simpl021B.hi Simpl021B.o
- '$(TEST_HC)' -c Simpl021A.hs -O
- '$(TEST_HC)' -c Simpl021B.hs -O
+ '$(TEST_HC)' $(TEST_HC_OPTS) -c Simpl021A.hs -O
+ '$(TEST_HC)' $(TEST_HC_OPTS) -c Simpl021B.hs -O
+
+.PHONY: T5327
+T5327:
+ $(RM) -f T5327.hi T5327.o
+ '$(TEST_HC)' $(TEST_HC_OPTS) -c T5327.hs -O -ddump-simpl | grep -c "GHC.Prim.># 34 "
diff --git a/testsuite/tests/simplCore/should_compile/T3016.hs b/testsuite/tests/simplCore/should_compile/T3016.hs
index d05bd1008d..bfe11a80a0 100644
--- a/testsuite/tests/simplCore/should_compile/T3016.hs
+++ b/testsuite/tests/simplCore/should_compile/T3016.hs
@@ -3,6 +3,10 @@
-- With GHC 6.10 it took hours! After fixing the bug (which
-- was too much inlining) it went down to 30s.
+-- This also tests Trac #5652, a complexity issue with the LLVM
+-- backend for this module. Compile time down from 10 min to
+-- 12 seconds.
+
module T3016 where
newtype F = F Integer
diff --git a/testsuite/tests/simplCore/should_compile/T3772.stdout b/testsuite/tests/simplCore/should_compile/T3772.stdout
index eee8ce61a9..85cca2ab63 100644
--- a/testsuite/tests/simplCore/should_compile/T3772.stdout
+++ b/testsuite/tests/simplCore/should_compile/T3772.stdout
@@ -1,6 +1,6 @@
==================== Tidy Core ====================
-Result size = 26
+ Result size = 26
Rec {
xs :: GHC.Prim.Int# -> ()
diff --git a/testsuite/tests/simplCore/should_compile/T5327.hs b/testsuite/tests/simplCore/should_compile/T5327.hs
new file mode 100644
index 0000000000..a2d9c018ae
--- /dev/null
+++ b/testsuite/tests/simplCore/should_compile/T5327.hs
@@ -0,0 +1,12 @@
+module T5327 where
+
+newtype Size = Size Int
+
+{-# INLINABLE val2 #-}
+val2 = Size 17
+
+-- In the core, we should see a comparison against 34#, i.e. constant
+-- folding should have happened. We actually see it twice: Once in f's
+-- definition, and once in its unfolding.
+f n = case val2 of Size s -> s + s > n
+
diff --git a/testsuite/tests/simplCore/should_compile/T5327.stdout b/testsuite/tests/simplCore/should_compile/T5327.stdout
new file mode 100644
index 0000000000..0cfbf08886
--- /dev/null
+++ b/testsuite/tests/simplCore/should_compile/T5327.stdout
@@ -0,0 +1 @@
+2
diff --git a/testsuite/tests/simplCore/should_compile/T5359b.stderr b/testsuite/tests/simplCore/should_compile/T5359b.stderr
new file mode 100644
index 0000000000..a3484cfd44
--- /dev/null
+++ b/testsuite/tests/simplCore/should_compile/T5359b.stderr
@@ -0,0 +1,3 @@
+
+T5359b.hs:62:1: Warning:
+ SPECIALISE pragma on INLINE function probably won't fire: `genum'
diff --git a/testsuite/tests/simplCore/should_compile/T5658b.hs b/testsuite/tests/simplCore/should_compile/T5658b.hs
new file mode 100644
index 0000000000..2c1c9ca340
--- /dev/null
+++ b/testsuite/tests/simplCore/should_compile/T5658b.hs
@@ -0,0 +1,17 @@
+{-# LANGUAGE MagicHash, BangPatterns #-}
+module T5658b where
+import GHC.Prim
+
+foo :: ByteArray# -> ByteArray# -> Int# -> Int# -> Bool
+foo xs ys m n = go 0# 0#
+ where
+ go i j = case i >=# m of
+ False -> let !x = indexIntArray# xs i in
+ case j >=# n of
+ False -> case x ==# indexIntArray# ys j of
+ False -> False
+ True -> go (i +# 1#) (j +# 1#)
+ True -> False
+ True -> case j >=# n of
+ False -> let !y = indexIntArray# ys i in False
+ True -> True
diff --git a/testsuite/tests/simplCore/should_compile/T5658b.stdout b/testsuite/tests/simplCore/should_compile/T5658b.stdout
new file mode 100644
index 0000000000..0cfbf08886
--- /dev/null
+++ b/testsuite/tests/simplCore/should_compile/T5658b.stdout
@@ -0,0 +1 @@
+2
diff --git a/testsuite/tests/simplCore/should_compile/T5776.hs b/testsuite/tests/simplCore/should_compile/T5776.hs
new file mode 100644
index 0000000000..df6444f25a
--- /dev/null
+++ b/testsuite/tests/simplCore/should_compile/T5776.hs
@@ -0,0 +1,28 @@
+module T5776 where
+
+-- The point about this test is that we should get a rule like this:
+-- "foo" [ALWAYS]
+-- forall (@ a)
+-- ($dEq :: GHC.Classes.Eq a)
+-- ($dEq1 :: GHC.Classes.Eq a)
+-- (x :: a)
+-- (y :: a)
+-- (z :: a).
+-- T5776.f (GHC.Classes.== @ a $dEq1 x y)
+-- (GHC.Classes.== @ a $dEq y z)
+-- = GHC.Types.True
+--
+-- Note the *two* forall'd dEq parameters. This is important.
+-- See Note [Simplifying RULE lhs constraints] in TcSimplify
+
+{-# RULES "foo" forall x y z.
+ f (x == y) (y == z) = True
+ #-}
+
+f :: Bool -> Bool -> Bool
+{-# NOINLINE f #-}
+f a b = False
+
+blah :: Int -> Int -> Bool
+blah x y = f (x==y) (x==y)
+
diff --git a/testsuite/tests/simplCore/should_compile/T5776.stdout b/testsuite/tests/simplCore/should_compile/T5776.stdout
new file mode 100644
index 0000000000..b8626c4cff
--- /dev/null
+++ b/testsuite/tests/simplCore/should_compile/T5776.stdout
@@ -0,0 +1 @@
+4
diff --git a/testsuite/tests/simplCore/should_compile/all.T b/testsuite/tests/simplCore/should_compile/all.T
index df42e6b6ca..6cfec0b81b 100644
--- a/testsuite/tests/simplCore/should_compile/all.T
+++ b/testsuite/tests/simplCore/should_compile/all.T
@@ -133,3 +133,12 @@ test('simpl021',
'Simpl021B.hi', 'Simpl021B.o']),
run_command,
['$MAKE -s --no-print-directory simpl021'])
+test('T5327', normal, run_command, ['$MAKE -s --no-print-directory T5327'])
+test('T5658b',
+ normal,
+ run_command,
+ ['$MAKE -s --no-print-directory T5658b'])
+test('T5776',
+ normal,
+ run_command,
+ ['$MAKE -s --no-print-directory T5776'])
diff --git a/testsuite/tests/simplCore/should_compile/rule2.stderr b/testsuite/tests/simplCore/should_compile/rule2.stderr
index f41296a15f..8279fce14f 100644
--- a/testsuite/tests/simplCore/should_compile/rule2.stderr
+++ b/testsuite/tests/simplCore/should_compile/rule2.stderr
@@ -21,10 +21,10 @@ Total ticks: 11
1 f
1 m
1 a
- 1 m
- 1 a
1 b
1 m
+ 1 m
+ 1 a
8 SimplifierDone 8
diff --git a/testsuite/tests/simplCore/should_compile/simpl017.stderr b/testsuite/tests/simplCore/should_compile/simpl017.stderr
index d82014bdb9..497bc8b51a 100644
--- a/testsuite/tests/simplCore/should_compile/simpl017.stderr
+++ b/testsuite/tests/simplCore/should_compile/simpl017.stderr
@@ -1,7 +1,7 @@
simpl017.hs:44:12:
Couldn't match expected type `forall v. [E m i] -> E' v m a'
- with actual type `[E m i] -> E' v0 m0 e0'
+ with actual type `[E m i] -> E' v0 m a'
In the first argument of `return', namely `f'
In a stmt of a 'do' block: return f
In the first argument of `E', namely
@@ -12,9 +12,17 @@ simpl017.hs:44:12:
return f })'
simpl017.hs:63:5:
- Couldn't match expected type `t0 -> t1'
- with actual type `forall v. [E m0 Int] -> E' v m0 Int'
+ Couldn't match expected type `[E (ST t0) Int] -> E (ST s) Int'
+ with actual type `forall v. [E (ST s) Int] -> E' v (ST s) Int'
The function `a' is applied to one argument,
- but its type `forall v. [E m0 Int] -> E' v m0 Int' has none
+ but its type `forall v. [E (ST s) Int] -> E' v (ST s) Int' has none
In the first argument of `plus', namely `a [one]'
In a stmt of a 'do' block: a [one] `plus` a [one]
+
+simpl017.hs:63:19:
+ Couldn't match expected type `[E (ST t1) Int] -> E (ST s) Int'
+ with actual type `forall v. [E (ST s) Int] -> E' v (ST s) Int'
+ The function `a' is applied to one argument,
+ but its type `forall v. [E (ST s) Int] -> E' v (ST s) Int' has none
+ In the second argument of `plus', namely `a [one]'
+ In a stmt of a 'do' block: a [one] `plus` a [one]
diff --git a/testsuite/tests/simplCore/should_compile/simpl020.stderr b/testsuite/tests/simplCore/should_compile/simpl020.stderr
index 9d768d2913..cd84c1d2d3 100644
--- a/testsuite/tests/simplCore/should_compile/simpl020.stderr
+++ b/testsuite/tests/simplCore/should_compile/simpl020.stderr
@@ -1,8 +1,8 @@
Simpl020_A.hs:25:10:
- Warning: No explicit method nor default method for `toGUIObject'
+ Warning: No explicit method or default declaration for `toGUIObject'
In the instance declaration for `GUIObject ()'
Simpl020_A.hs:25:10:
- Warning: No explicit method nor default method for `cset'
+ Warning: No explicit method or default declaration for `cset'
In the instance declaration for `GUIObject ()'
diff --git a/testsuite/tests/simplCore/should_run/T5915.hs b/testsuite/tests/simplCore/should_run/T5915.hs
new file mode 100644
index 0000000000..b7ae885830
--- /dev/null
+++ b/testsuite/tests/simplCore/should_run/T5915.hs
@@ -0,0 +1,5 @@
+module Main where
+
+test = seq (seq id (\a -> undefined a))
+
+main = print (test [0])
diff --git a/testsuite/tests/simplCore/should_run/T5915.stdout b/testsuite/tests/simplCore/should_run/T5915.stdout
new file mode 100644
index 0000000000..111bb86865
--- /dev/null
+++ b/testsuite/tests/simplCore/should_run/T5915.stdout
@@ -0,0 +1 @@
+[0]
diff --git a/testsuite/tests/simplCore/should_run/all.T b/testsuite/tests/simplCore/should_run/all.T
index fb04d89ec5..aa3cc7f236 100644
--- a/testsuite/tests/simplCore/should_run/all.T
+++ b/testsuite/tests/simplCore/should_run/all.T
@@ -50,6 +50,7 @@ test('T5441', extra_clean(['T5441a.o','T5441a.hi']),
multimod_compile_and_run, ['T5441',''])
test('T5603', normal, compile_and_run, [''])
-# Run this test *without* optimisation too
+# Run these tests *without* optimisation too
test('T5625', [ only_ways(['normal','optasm']), exit_code(1) ], compile_and_run, [''])
test('T5587', [ only_ways(['normal','optasm']), exit_code(1) ], compile_and_run, [''])
+test('T5915', only_ways(['normal','optasm']), compile_and_run, [''])
diff --git a/testsuite/tests/th/Makefile b/testsuite/tests/th/Makefile
index 97692391c0..0dca106eb2 100644
--- a/testsuite/tests/th/Makefile
+++ b/testsuite/tests/th/Makefile
@@ -26,13 +26,8 @@ TH_Depends:
echo "first run" > TH_Depends_external.txt
'$(TEST_HC)' $(TEST_HC_OPTS) --make -v0 TH_Depends
./TH_Depends
-# Remove the executable, as GHC won't relink if the timestamps seem to
-# be the same
- $(RM) TH_Depends TH_Depends.exe
+ sleep 2
echo "second run" > TH_Depends_external.txt
-# Give TH_Depends_external.txt a future date in case it gets the same
-# timestamp again
- touch --date="now + 3 seconds" TH_Depends_external.txt
'$(TEST_HC)' $(TEST_HC_OPTS) --make -v0 TH_Depends
./TH_Depends
diff --git a/testsuite/tests/th/T1541.hs b/testsuite/tests/th/T1541.hs
new file mode 100644
index 0000000000..c570e75b22
--- /dev/null
+++ b/testsuite/tests/th/T1541.hs
@@ -0,0 +1,11 @@
+{-# LANGUAGE TemplateHaskell #-}
+module T1541 where
+
+$( [d| infixr 3 +++
+ (+++) :: Int -> Bool -> Bool
+ (+++) x y = error "ruk"
+ |])
+
+-- This definition will only typecheck if the
+-- the fixity of (+++) is infixr
+foo p q r = p +++ q +++ r
diff --git a/testsuite/tests/th/T3177a.stderr b/testsuite/tests/th/T3177a.stderr
index 00b0c0d92c..a39419b948 100644
--- a/testsuite/tests/th/T3177a.stderr
+++ b/testsuite/tests/th/T3177a.stderr
@@ -1,11 +1,10 @@
T3177a.hs:8:15:
`Int' is applied to too many type arguments
+ In the type `Int Int'
In the Template Haskell quotation [t| Int Int |]
In the first argument of `id', namely `[t| Int Int |]'
- In the expression: id [t| Int Int |]
T3177a.hs:11:6:
`Int' is applied to too many type arguments
- In the type signature for `g':
- g :: Int Int
+ In the type signature for `g': g :: Int Int
diff --git a/testsuite/tests/th/T4135.hs b/testsuite/tests/th/T4135.hs
new file mode 100644
index 0000000000..03ff2fe1f9
--- /dev/null
+++ b/testsuite/tests/th/T4135.hs
@@ -0,0 +1,16 @@
+{-# LANGUAGE TypeFamilies,TemplateHaskell #-}
+module Bug where
+
+import Language.Haskell.TH
+import System.IO
+
+class C a where
+ type T a
+
+$(do { ds <- [d|
+ instance C (Maybe a) where
+ type T (Maybe a) = Char
+ |]
+ ; runIO $ do { putStrLn (pprint ds); hFlush stdout }
+ ; return ds })
+
diff --git a/testsuite/tests/th/T4135.stderr b/testsuite/tests/th/T4135.stderr
new file mode 100644
index 0000000000..30df0def66
--- /dev/null
+++ b/testsuite/tests/th/T4135.stderr
@@ -0,0 +1,2 @@
+instance Bug.C (Data.Maybe.Maybe a_0)
+ where type Bug.T (Data.Maybe.Maybe a_0) = GHC.Types.Char
diff --git a/testsuite/tests/th/T5358.stderr b/testsuite/tests/th/T5358.stderr
index 4a1bfbd5fe..01f1ffa608 100644
--- a/testsuite/tests/th/T5358.stderr
+++ b/testsuite/tests/th/T5358.stderr
@@ -1,15 +1,24 @@
T5358.hs:7:1:
+ Couldn't match expected type `t1 -> t1' with actual type `Int'
The equation(s) for `t1' have one argument,
but its type `Int' has none
T5358.hs:8:1:
+ Couldn't match expected type `t0 -> t0' with actual type `Int'
The equation(s) for `t2' have one argument,
but its type `Int' has none
T5358.hs:10:13:
+ Couldn't match expected type `t0 -> a0' with actual type `Int'
The function `t1' is applied to one argument,
but its type `Int' has none
In the first argument of `(==)', namely `t1 x'
In the expression: t1 x == t2 x
- In an equation for `prop_x1': prop_x1 x = t1 x == t2 x
+
+T5358.hs:10:21:
+ Couldn't match expected type `t0 -> a0' with actual type `Int'
+ The function `t2' is applied to one argument,
+ but its type `Int' has none
+ In the second argument of `(==)', namely `t2 x'
+ In the expression: t1 x == t2 x
diff --git a/testsuite/tests/th/T5362.stderr b/testsuite/tests/th/T5362.stderr
index 1979cc0757..99e81086d2 100644
--- a/testsuite/tests/th/T5362.stderr
+++ b/testsuite/tests/th/T5362.stderr
@@ -1,4 +1,4 @@
-f_0 :: GHC.Tuple.()
-f_0 = GHC.Err.undefined g_1
-g_1 :: GHC.Tuple.()
-g_1 = GHC.Err.undefined
+f_0 :: ()
+f_0 = GHC.Err.undefined g_1
+g_1 :: ()
+g_1 = GHC.Err.undefined
diff --git a/testsuite/tests/th/T5555.hs b/testsuite/tests/th/T5555.hs
new file mode 100644
index 0000000000..a874a7349c
--- /dev/null
+++ b/testsuite/tests/th/T5555.hs
@@ -0,0 +1,8 @@
+{-# LANGUAGE TemplateHaskell, QuasiQuotes #-}
+import qualified T5555_Lib as L
+
+test :: String
+test = [L.s|hello world|]
+
+main :: IO ()
+main = putStrLn test
diff --git a/testsuite/tests/lib/IO/openFile004.stdout b/testsuite/tests/th/T5555.stdout
index 3b18e512db..3b18e512db 100644
--- a/testsuite/tests/lib/IO/openFile004.stdout
+++ b/testsuite/tests/th/T5555.stdout
diff --git a/testsuite/tests/th/T5555_Lib.hs b/testsuite/tests/th/T5555_Lib.hs
new file mode 100644
index 0000000000..66c18d228b
--- /dev/null
+++ b/testsuite/tests/th/T5555_Lib.hs
@@ -0,0 +1,10 @@
+module T5555_Lib(s) where
+
+import Language.Haskell.TH
+import Language.Haskell.TH.Quote
+
+s :: QuasiQuoter
+s = QuasiQuoter expr undefined undefined undefined
+
+expr :: String -> Q Exp
+expr = stringE
diff --git a/testsuite/tests/th/T5597.hs b/testsuite/tests/th/T5597.hs
new file mode 100644
index 0000000000..b6ab9da6d8
--- /dev/null
+++ b/testsuite/tests/th/T5597.hs
@@ -0,0 +1,5 @@
+{-# LANGUAGE TemplateHaskell #-}
+module T5597 where
+import T5597a( f )
+
+g = $(f [t| (Int, Int) |])
diff --git a/testsuite/tests/th/T5597a.hs b/testsuite/tests/th/T5597a.hs
new file mode 100644
index 0000000000..eeea7f52c1
--- /dev/null
+++ b/testsuite/tests/th/T5597a.hs
@@ -0,0 +1,6 @@
+{-# LANGUAGE TemplateHaskell #-}
+module T5597a where
+import Language.Haskell.TH
+
+f :: Q Type -> Q Exp
+f t = [| (3,4) :: $t |]
diff --git a/testsuite/tests/th/T5665.hs b/testsuite/tests/th/T5665.hs
new file mode 100644
index 0000000000..2434e43427
--- /dev/null
+++ b/testsuite/tests/th/T5665.hs
@@ -0,0 +1,9 @@
+{-# LANGUAGE TemplateHaskell #-}
+
+module T5665 where
+
+import T5665a
+
+data Record = Record { recordField :: Int }
+
+$(doSomeTH "SomeType" ''Int)
diff --git a/testsuite/tests/th/T5665a.hs b/testsuite/tests/th/T5665a.hs
new file mode 100644
index 0000000000..eba5a1a168
--- /dev/null
+++ b/testsuite/tests/th/T5665a.hs
@@ -0,0 +1,6 @@
+module T5665a where
+
+import Language.Haskell.TH
+
+doSomeTH s tp = return [NewtypeD [] n [] (NormalC n [(NotStrict, ConT tp)]) []]
+ where n = mkName s
diff --git a/testsuite/tests/th/T5700.hs b/testsuite/tests/th/T5700.hs
new file mode 100644
index 0000000000..542058d87e
--- /dev/null
+++ b/testsuite/tests/th/T5700.hs
@@ -0,0 +1,8 @@
+{-# LANGUAGE TemplateHaskell #-}
+module T5700 where
+
+import T5700a
+
+data D = D
+
+$(mkC ''D)
diff --git a/testsuite/tests/th/T5700.stderr b/testsuite/tests/th/T5700.stderr
new file mode 100644
index 0000000000..dd1ece7583
--- /dev/null
+++ b/testsuite/tests/th/T5700.stderr
@@ -0,0 +1,7 @@
+T5700.hs:1:1: Splicing declarations
+ mkC ''D
+ ======>
+ T5700.hs:8:3-9
+ instance C D where
+ {-# INLINE inlinable #-}
+ inlinable _ = GHC.Tuple.()
diff --git a/testsuite/tests/th/T5700a.hs b/testsuite/tests/th/T5700a.hs
new file mode 100644
index 0000000000..3ae7d77f33
--- /dev/null
+++ b/testsuite/tests/th/T5700a.hs
@@ -0,0 +1,15 @@
+{-# LANGUAGE TemplateHaskell #-}
+module T5700a where
+
+import Language.Haskell.TH
+
+class C a where
+ inlinable :: a -> ()
+
+mkC :: Name -> Q [Dec]
+mkC n = return
+ [InstanceD [] (AppT (ConT ''C) (ConT n))
+ [ FunD 'inlinable [Clause [WildP] (NormalB (ConE '())) []],
+ PragmaD (InlineP 'inlinable (InlineSpec True False Nothing))
+ ]
+ ]
diff --git a/testsuite/tests/th/T5721.hs b/testsuite/tests/th/T5721.hs
new file mode 100644
index 0000000000..9fcecc74a6
--- /dev/null
+++ b/testsuite/tests/th/T5721.hs
@@ -0,0 +1,7 @@
+{-# LANGUAGE TemplateHaskell, ScopedTypeVariables #-}
+
+module T5371 where
+import Language.Haskell.TH
+
+f :: a -> Name
+f (x :: a) = ''a
diff --git a/testsuite/tests/th/T5795.hs b/testsuite/tests/th/T5795.hs
new file mode 100644
index 0000000000..ea41ce0555
--- /dev/null
+++ b/testsuite/tests/th/T5795.hs
@@ -0,0 +1,10 @@
+{-# LANGUAGE TemplateHaskell #-}
+module T5795 where
+
+import Language.Haskell.TH
+
+ty :: Q Type
+ty = [t| Int |]
+
+f :: $ty
+f = undefined
diff --git a/testsuite/tests/th/T5795.stderr b/testsuite/tests/th/T5795.stderr
new file mode 100644
index 0000000000..5fce537ea6
--- /dev/null
+++ b/testsuite/tests/th/T5795.stderr
@@ -0,0 +1,7 @@
+
+T5795.hs:9:6:
+ GHC stage restriction:
+ `ty' is used in a top-level splice or annotation,
+ and must be imported, not defined locally
+ In the expression: ty
+ In the type signature for `f': f :: $ty
diff --git a/testsuite/tests/th/T5882.hs b/testsuite/tests/th/T5882.hs
new file mode 100644
index 0000000000..73805bf082
--- /dev/null
+++ b/testsuite/tests/th/T5882.hs
@@ -0,0 +1,11 @@
+{-# LANGUAGE GADTSyntax, TemplateHaskell, KindSignatures #-}
+
+module T5882 where
+data Foo :: * -> * where
+ Foo :: a -> Foo a
+
+$( [d| data Bar :: * -> * where
+ Bar :: a -> Bar a
+ |] )
+
+f (Bar x) = Foo x
diff --git a/testsuite/tests/th/T5883.hs b/testsuite/tests/th/T5883.hs
new file mode 100644
index 0000000000..c33cc69ab6
--- /dev/null
+++ b/testsuite/tests/th/T5883.hs
@@ -0,0 +1,12 @@
+{-# LANGUAGE TemplateHaskell #-}
+{-# LANGUAGE TypeFamilies #-}
+module T5883 where
+
+import Language.Haskell.TH
+
+$( [d|
+ data Unit = Unit
+ instance Show Unit where
+ show _ = ""
+ {-# INLINE show #-}
+ |])
diff --git a/testsuite/tests/th/T5883.stderr b/testsuite/tests/th/T5883.stderr
new file mode 100644
index 0000000000..0b0f705823
--- /dev/null
+++ b/testsuite/tests/th/T5883.stderr
@@ -0,0 +1,12 @@
+T5883.hs:1:1: Splicing declarations
+ [d| data Unit = Unit
+
+ instance Show Unit where
+ show _ = ""
+ {-# INLINE show #-} |]
+ ======>
+ T5883.hs:(7,4)-(12,4)
+ data Unit = Unit
+ instance Show Unit where
+ {-# INLINE show #-}
+ show _ = ""
diff --git a/testsuite/tests/th/T5886.hs b/testsuite/tests/th/T5886.hs
new file mode 100644
index 0000000000..5465815ae3
--- /dev/null
+++ b/testsuite/tests/th/T5886.hs
@@ -0,0 +1,8 @@
+{-# LANGUAGE TemplateHaskell #-}
+{-# LANGUAGE TypeFamilies #-}
+
+module T5886 where
+
+import T5886a
+
+$(bang)
diff --git a/testsuite/tests/th/T5886a.hs b/testsuite/tests/th/T5886a.hs
new file mode 100644
index 0000000000..4c6f433b5f
--- /dev/null
+++ b/testsuite/tests/th/T5886a.hs
@@ -0,0 +1,14 @@
+{-# LANGUAGE UnicodeSyntax #-}
+{-# LANGUAGE TemplateHaskell #-}
+{-# LANGUAGE TypeFamilies #-}
+
+module T5886a where
+
+import Language.Haskell.TH
+
+class C α where
+ type AT α ∷ ★
+
+bang ∷ DecsQ
+bang = return [InstanceD [] (AppT (ConT ''C) (ConT ''Int))
+ [TySynInstD ''AT [ConT ''Int] (ConT ''Int)]]
diff --git a/testsuite/tests/th/T5968.hs b/testsuite/tests/th/T5968.hs
new file mode 100644
index 0000000000..d483d84dcf
--- /dev/null
+++ b/testsuite/tests/th/T5968.hs
@@ -0,0 +1,6 @@
+{-# LANGUAGE TemplateHaskell #-}
+module T5968 where
+
+data Bar a = Bar $( [t| a |] )
+
+
diff --git a/testsuite/tests/th/T5971.hs b/testsuite/tests/th/T5971.hs
new file mode 100644
index 0000000000..bca58ea0c7
--- /dev/null
+++ b/testsuite/tests/th/T5971.hs
@@ -0,0 +1,6 @@
+{-# LANGUAGE TemplateHaskell #-}
+module T5971 where
+
+import Language.Haskell.TH
+
+_ = $(newName "x" >>= varE)
diff --git a/testsuite/tests/th/T5971.stderr b/testsuite/tests/th/T5971.stderr
new file mode 100644
index 0000000000..2ad5439fda
--- /dev/null
+++ b/testsuite/tests/th/T5971.stderr
@@ -0,0 +1,11 @@
+
+T5971.hs:6:7:
+ The exact Name `x' is not in scope
+ Probable cause: you used a unique name (NameU), perhaps via newName,
+ in Template Haskell, but did not bind it
+ If that's it, then -ddump-splices might be useful
+ In the result of the splice:
+ $(newName "x" >>= varE)
+ To see what the splice expanded to, use -ddump-splices
+ In the expression: $(newName "x" >>= varE)
+ In a pattern binding: _ = $(newName "x" >>= varE)
diff --git a/testsuite/tests/th/T5976.hs b/testsuite/tests/th/T5976.hs
new file mode 100644
index 0000000000..aa388c764e
--- /dev/null
+++ b/testsuite/tests/th/T5976.hs
@@ -0,0 +1,3 @@
+{-# LANGUAGE TemplateHaskell #-}
+
+$( error ("foo " ++ error "bar") )
diff --git a/testsuite/tests/th/T5976.stderr b/testsuite/tests/th/T5976.stderr
new file mode 100644
index 0000000000..64cf33acef
--- /dev/null
+++ b/testsuite/tests/th/T5976.stderr
@@ -0,0 +1,5 @@
+
+T5976.hs:1:1:
+ Exception when trying to run compile-time code:
+ bar
+ Code: error ((++) "foo " error "bar")
diff --git a/testsuite/tests/th/T5984.hs b/testsuite/tests/th/T5984.hs
new file mode 100644
index 0000000000..63f21b6548
--- /dev/null
+++ b/testsuite/tests/th/T5984.hs
@@ -0,0 +1,8 @@
+{-# LANGUAGE TemplateHaskell #-}
+
+module T5984 where
+
+import T5984_Lib
+
+$nt
+$dt
diff --git a/testsuite/tests/th/T5984.stderr b/testsuite/tests/th/T5984.stderr
new file mode 100644
index 0000000000..50c7cbfdd0
--- /dev/null
+++ b/testsuite/tests/th/T5984.stderr
@@ -0,0 +1,10 @@
+T5984.hs:1:1: Splicing declarations
+ nt
+ ======>
+ T5984.hs:7:1-3
+ newtype Foo = Foo Int
+T5984.hs:1:1: Splicing declarations
+ dt
+ ======>
+ T5984.hs:8:1-3
+ data Bar = Bar Int
diff --git a/testsuite/tests/th/T5984_Lib.hs b/testsuite/tests/th/T5984_Lib.hs
new file mode 100644
index 0000000000..c3abfa21f9
--- /dev/null
+++ b/testsuite/tests/th/T5984_Lib.hs
@@ -0,0 +1,13 @@
+{-# LANGUAGE TemplateHaskell #-}
+
+module T5984_Lib where
+
+import Language.Haskell.TH
+
+nt :: Q [Dec]
+nt = return [NewtypeD [] foo [] (NormalC foo [(NotStrict, ConT ''Int)]) []]
+ where foo = mkName "Foo"
+
+dt :: Q [Dec]
+dt = return [DataD [] bar [] [NormalC bar [(NotStrict, ConT ''Int)]] []]
+ where bar = mkName "Bar"
diff --git a/testsuite/tests/th/TH_reifyDecl1.hs b/testsuite/tests/th/TH_reifyDecl1.hs
index 9c0880b2af..f2f5dd8b0e 100644
--- a/testsuite/tests/th/TH_reifyDecl1.hs
+++ b/testsuite/tests/th/TH_reifyDecl1.hs
@@ -3,6 +3,7 @@
{-# LANGUAGE TypeFamilies #-}
module TH_reifyDecl1 where
+import System.IO
import Language.Haskell.TH
import Text.PrettyPrint.HughesPJ
@@ -62,7 +63,7 @@ data instance DF2 Bool = DBool
test :: ()
test = $(let
display :: Name -> Q ()
- display q = do { i <- reify q; report False (pprint i) }
+ display q = do { i <- reify q; runIO $ hPutStrLn stderr (pprint i) }
in do { display ''T
; display ''R
; display ''List
diff --git a/testsuite/tests/th/TH_reifyDecl1.stderr b/testsuite/tests/th/TH_reifyDecl1.stderr
index 7f4ae8550f..82a4f572ce 100644
--- a/testsuite/tests/th/TH_reifyDecl1.stderr
+++ b/testsuite/tests/th/TH_reifyDecl1.stderr
@@ -1,67 +1,35 @@
-
-TH_reifyDecl1.hs:63:10:
- data TH_reifyDecl1.T = TH_reifyDecl1.A | TH_reifyDecl1.B
-
-TH_reifyDecl1.hs:63:10:
- data TH_reifyDecl1.R a_0 = TH_reifyDecl1.C a_0 | TH_reifyDecl1.D
-
-TH_reifyDecl1.hs:63:10:
- data TH_reifyDecl1.List a_0
+data TH_reifyDecl1.T = TH_reifyDecl1.A | TH_reifyDecl1.B
+data TH_reifyDecl1.R a_0 = TH_reifyDecl1.C a_0 | TH_reifyDecl1.D
+data TH_reifyDecl1.List a_0
= TH_reifyDecl1.Nil
| TH_reifyDecl1.Cons a_0 (TH_reifyDecl1.List a_0)
-
-TH_reifyDecl1.hs:63:10:
- data TH_reifyDecl1.Tree a_0
+data TH_reifyDecl1.Tree a_0
= TH_reifyDecl1.Leaf
| (TH_reifyDecl1.Tree a_0) TH_reifyDecl1.:+: (TH_reifyDecl1.Tree a_0)
-
-TH_reifyDecl1.hs:63:10:
- type TH_reifyDecl1.IntList = [GHC.Types.Int]
-
-TH_reifyDecl1.hs:63:10:
- newtype TH_reifyDecl1.Length = TH_reifyDecl1.Length GHC.Types.Int
-
-TH_reifyDecl1.hs:63:10:
- Constructor from TH_reifyDecl1.Tree: TH_reifyDecl1.Leaf :: forall a_0 . TH_reifyDecl1.Tree a_0
-
-TH_reifyDecl1.hs:63:10:
- Class op from TH_reifyDecl1.C1: TH_reifyDecl1.m1 :: forall a_0 . TH_reifyDecl1.C1 a_0 =>
+type TH_reifyDecl1.IntList = [GHC.Types.Int]
+newtype TH_reifyDecl1.Length = TH_reifyDecl1.Length GHC.Types.Int
+Constructor from TH_reifyDecl1.Tree: TH_reifyDecl1.Leaf :: forall a_0 . TH_reifyDecl1.Tree a_0
+Class op from TH_reifyDecl1.C1: TH_reifyDecl1.m1 :: forall a_0 . TH_reifyDecl1.C1 a_0 =>
a_0 -> GHC.Types.Int
infixl 3 TH_reifyDecl1.m1
-
-TH_reifyDecl1.hs:63:10:
- class TH_reifyDecl1.C1 a_0
+class TH_reifyDecl1.C1 a_0
where TH_reifyDecl1.m1 :: forall a_0 . TH_reifyDecl1.C1 a_0 =>
a_0 -> GHC.Types.Int
-
-TH_reifyDecl1.hs:63:10:
- class TH_reifyDecl1.C2 a_0
+class TH_reifyDecl1.C2 a_0
where TH_reifyDecl1.m2 :: forall a_0 . TH_reifyDecl1.C2 a_0 =>
a_0 -> GHC.Types.Int
instance TH_reifyDecl1.C2 GHC.Types.Int
-
-TH_reifyDecl1.hs:63:10:
- class TH_reifyDecl1.C3 a_0
+class TH_reifyDecl1.C3 a_0
instance TH_reifyDecl1.C3 GHC.Types.Int
-
-TH_reifyDecl1.hs:63:10:
- type family TH_reifyDecl1.AT1 a_0 :: * -> *
+type family TH_reifyDecl1.AT1 a_0 :: * -> *
type instance TH_reifyDecl1.AT1 GHC.Types.Int = GHC.Types.Bool
-
-TH_reifyDecl1.hs:63:10:
- data family TH_reifyDecl1.AT2 a_0 :: * -> *
+data family TH_reifyDecl1.AT2 a_0 :: * -> *
data instance TH_reifyDecl1.AT2 GHC.Types.Int
= TH_reifyDecl1.AT2Int
-
-TH_reifyDecl1.hs:63:10: type family TH_reifyDecl1.TF1 a_0 :: * -> *
-
-TH_reifyDecl1.hs:63:10:
- type family TH_reifyDecl1.TF2 a_0 :: * -> *
+type family TH_reifyDecl1.TF1 a_0 :: * -> *
+type family TH_reifyDecl1.TF2 a_0 :: * -> *
type instance TH_reifyDecl1.TF2 GHC.Types.Bool = GHC.Types.Bool
-
-TH_reifyDecl1.hs:63:10: data family TH_reifyDecl1.DF1 a_0 :: * -> *
-
-TH_reifyDecl1.hs:63:10:
- data family TH_reifyDecl1.DF2 a_0 :: * -> *
+data family TH_reifyDecl1.DF1 a_0 :: * -> *
+data family TH_reifyDecl1.DF2 a_0 :: * -> *
data instance TH_reifyDecl1.DF2 GHC.Types.Bool
= TH_reifyDecl1.DBool
diff --git a/testsuite/tests/th/TH_reifyMkName.hs b/testsuite/tests/th/TH_reifyMkName.hs
index c5d5ebeea9..7c4d7196e0 100644
--- a/testsuite/tests/th/TH_reifyMkName.hs
+++ b/testsuite/tests/th/TH_reifyMkName.hs
@@ -2,12 +2,13 @@
module Foo where
+import System.IO
import Language.Haskell.TH
type C = Int
$(do
a <- reify $ mkName "C"
- report False $ show a
+ runIO $ hPutStrLn stderr (show a)
return []
)
diff --git a/testsuite/tests/th/TH_reifyMkName.stderr b/testsuite/tests/th/TH_reifyMkName.stderr
index 0537f1ddcf..a82707f987 100644
--- a/testsuite/tests/th/TH_reifyMkName.stderr
+++ b/testsuite/tests/th/TH_reifyMkName.stderr
@@ -1,3 +1 @@
-
-TH_reifyMkName.hs:9:3:
- TyConI (TySynD Foo.C [] (ConT GHC.Types.Int))
+TyConI (TySynD Foo.C [] (ConT GHC.Types.Int))
diff --git a/testsuite/tests/th/TH_scopedTvs.stderr b/testsuite/tests/th/TH_scopedTvs.stderr
deleted file mode 100644
index f8263fc28f..0000000000
--- a/testsuite/tests/th/TH_scopedTvs.stderr
+++ /dev/null
@@ -1,4 +0,0 @@
-
-TH_scopedTvs.hs:6:13:
- Illegal lexically-scoped type variable `a'
- Lexically scoped type variables are not supported by Template Haskell
diff --git a/testsuite/tests/th/all.T b/testsuite/tests/th/all.T
index 91432cf9ad..491bba9fcf 100644
--- a/testsuite/tests/th/all.T
+++ b/testsuite/tests/th/all.T
@@ -125,7 +125,7 @@ test('TH_dataD1', normal, compile_fail, ['-v0'])
test('TH_ppr1', normal, compile_and_run, [''])
test('TH_fail', normal, compile_fail, ['-v0'])
-test('TH_scopedTvs', normal, compile_fail, ['-v0'])
+test('TH_scopedTvs', normal, compile, ['-v0'])
test('TH_runIO', normal, compile_fail, ['-v0'])
@@ -213,3 +213,24 @@ test('TH_Depends',
'TH_Depends_external.txt'])],
run_command,
['$MAKE -s --no-print-directory TH_Depends'])
+test('T5597', extra_clean(['T5597a.hi','T5597a.o']),
+ multimod_compile, ['T5597','-v0'])
+test('T5665', extra_clean(['T5665a.hi','T5665a.o']),
+ multimod_compile, ['T5665','-v0'])
+test('T5700', extra_clean(['T5700a.hi','T5700a.o']),
+ multimod_compile, ['T5700','-v0 -ddump-splices'])
+test('T5721', normal, compile, ['-v0'])
+test('T1541', normal, compile, ['-v0'])
+test('T5883', normal, compile, ['-v0 -dsuppress-uniques -ddump-splices'])
+test('T5882', normal, compile, ['-v0'])
+test('T5886', extra_clean(['T5886a.hi','T5886a.o']),
+ multimod_compile, ['T5886','-v0'])
+test('T4135', normal, compile, ['-v0'])
+test('T5971', normal, compile_fail, ['-v0 -dsuppress-uniques'])
+test('T5968', normal, compile, ['-v0'])
+test('T5984', extra_clean(['T5984_Lib.hi', 'T5984_Lib.o']),
+ multimod_compile, ['T5984', '-v0 -ddump-splices'])
+test('T5555', extra_clean(['T5555_Lib.hi', 'T5555_Lib.o']),
+ multimod_compile, ['T5555', '-v0'])
+test('T5976', normal, compile_fail, ['-v0'])
+test('T5795', normal, compile_fail, ['-v0'])
diff --git a/testsuite/tests/typecheck/prog001/typecheck.prog001.stderr-ghc b/testsuite/tests/typecheck/prog001/typecheck.prog001.stderr-ghc
index ea4c0e88f6..17d8e2cf84 100644
--- a/testsuite/tests/typecheck/prog001/typecheck.prog001.stderr-ghc
+++ b/testsuite/tests/typecheck/prog001/typecheck.prog001.stderr-ghc
@@ -1,4 +1,5 @@
B.hs:7:10:
- Warning: No explicit method nor default method for `row'
+ Warning: No explicit method or default declaration for `row'
In the instance declaration for `Matrix Bool Val'
+
diff --git a/testsuite/tests/typecheck/should_compile/FD1.stderr b/testsuite/tests/typecheck/should_compile/FD1.stderr
index 6f98877b84..ea6833b2b7 100644
--- a/testsuite/tests/typecheck/should_compile/FD1.stderr
+++ b/testsuite/tests/typecheck/should_compile/FD1.stderr
@@ -1,12 +1,12 @@
-
-FD1.hs:16:1:
- Could not deduce (a ~ (Int -> Int))
- from the context (E a (Int -> Int))
- bound by the type signature for
- plus :: E a (Int -> Int) => Int -> a
- at FD1.hs:16:1-16
- `a' is a rigid type variable bound by
- the type signature for plus :: E a (Int -> Int) => Int -> a
- at FD1.hs:16:1
- The equation(s) for `plus' have two arguments,
- but its type `Int -> a' has only one
+
+FD1.hs:16:1:
+ Could not deduce (a ~ (Int -> Int))
+ from the context (E a (Int -> Int))
+ bound by the type signature for
+ plus :: E a (Int -> Int) => Int -> a
+ at FD1.hs:15:9-38
+ `a' is a rigid type variable bound by
+ the type signature for plus :: E a (Int -> Int) => Int -> a
+ at FD1.hs:15:9
+ The equation(s) for `plus' have two arguments,
+ but its type `Int -> a' has only one
diff --git a/testsuite/tests/typecheck/should_compile/FD2.stderr b/testsuite/tests/typecheck/should_compile/FD2.stderr
index 4dd98e2c77..47221c5b00 100644
--- a/testsuite/tests/typecheck/should_compile/FD2.stderr
+++ b/testsuite/tests/typecheck/should_compile/FD2.stderr
@@ -1,25 +1,25 @@
-
-FD2.hs:26:36:
- Could not deduce (e1 ~ e)
- from the context (Foldable a)
- bound by the class declaration for `Foldable'
- at FD2.hs:(17,1)-(26,39)
- or from (Elem a e)
- bound by the type signature for
- foldr1 :: Elem a e => (e -> e -> e) -> a -> e
- at FD2.hs:(22,3)-(26,39)
- or from (Elem a e1)
- bound by the type signature for
- mf :: Elem a e1 => e1 -> Maybe e1 -> Maybe e1
- at FD2.hs:(25,12)-(26,39)
- `e1' is a rigid type variable bound by
- the type signature for
- mf :: Elem a e1 => e1 -> Maybe e1 -> Maybe e1
- at FD2.hs:25:12
- `e' is a rigid type variable bound by
- the type signature for
- foldr1 :: Elem a e => (e -> e -> e) -> a -> e
- at FD2.hs:22:3
- In the first argument of `f', namely `x'
- In the first argument of `Just', namely `(f x y)'
- In the expression: Just (f x y)
+
+FD2.hs:26:34:
+ Could not deduce (e1 ~ e)
+ from the context (Foldable a)
+ bound by the class declaration for `Foldable'
+ at FD2.hs:(17,1)-(26,39)
+ or from (Elem a e)
+ bound by the type signature for
+ foldr1 :: Elem a e => (e -> e -> e) -> a -> e
+ at FD2.hs:21:13-47
+ or from (Elem a e1)
+ bound by the type signature for
+ mf :: Elem a e1 => e1 -> Maybe e1 -> Maybe e1
+ at FD2.hs:24:18-54
+ `e1' is a rigid type variable bound by
+ the type signature for
+ mf :: Elem a e1 => e1 -> Maybe e1 -> Maybe e1
+ at FD2.hs:24:18
+ `e' is a rigid type variable bound by
+ the type signature for
+ foldr1 :: Elem a e => (e -> e -> e) -> a -> e
+ at FD2.hs:21:13
+ In the return type of a call of `f'
+ In the first argument of `Just', namely `(f x y)'
+ In the expression: Just (f x y)
diff --git a/testsuite/tests/typecheck/should_compile/FD3.stderr b/testsuite/tests/typecheck/should_compile/FD3.stderr
index 5e8a4ee164..9285bb839d 100644
--- a/testsuite/tests/typecheck/should_compile/FD3.stderr
+++ b/testsuite/tests/typecheck/should_compile/FD3.stderr
@@ -1,9 +1,9 @@
FD3.hs:15:15:
- Couldn't match type `a' with `(String, a)'
+ Couldn't match type `a' with `([Char], a)'
`a' is a rigid type variable bound by
the type signature for translate :: (String, a) -> A a
- at FD3.hs:15:1
+ at FD3.hs:14:14
When using functional dependencies to combine
MkA a a,
arising from the dependency `a -> b'
diff --git a/testsuite/tests/typecheck/should_compile/Makefile b/testsuite/tests/typecheck/should_compile/Makefile
index 75691da79c..36e924aeb4 100644
--- a/testsuite/tests/typecheck/should_compile/Makefile
+++ b/testsuite/tests/typecheck/should_compile/Makefile
@@ -20,7 +20,13 @@ T2412:
tc245:
$(RM) -f Tc245_A.hi Tc245_A.o tc245.hi tc245.o
- '$(TEST_HC)' $(TEST_HC_OPTS) --make tc245
+ '$(TEST_HC)' $(filter-out -fforce-recomp,$(TEST_HC_OPTS)) --make tc245
$(RM) -f tc245.hi tc245.o
- '$(TEST_HC)' $(TEST_HC_OPTS) --make tc245
+ '$(TEST_HC)' $(filter-out -fforce-recomp,$(TEST_HC_OPTS)) --make tc245
+# Trac #5792 gave an error on the second compilation,
+# presumably because of the .hi file
+T5792:
+ $(RM) -f T5792.o T5792.hi
+ '$(TEST_HC)' -c T5792.hs
+ '$(TEST_HC)' -c T5792.hs -fforce-recomp
diff --git a/testsuite/tests/typecheck/should_compile/PolytypeDecomp.hs b/testsuite/tests/typecheck/should_compile/PolytypeDecomp.hs
new file mode 100644
index 0000000000..69e4fb31c7
--- /dev/null
+++ b/testsuite/tests/typecheck/should_compile/PolytypeDecomp.hs
@@ -0,0 +1,32 @@
+{-# LANGUAGE TypeFamilies, LiberalTypeSynonyms, ImpredicativeTypes #-}
+module PolyTypeDecomp where
+
+
+{- The purpose of this test is to check if decomposition of wanted
+ equalities in the /constraint solver/ (vs. the unifier) works properly.
+ Unfortunately most equalities between polymorphic types are converted to
+ implication constraints early on in the unifier, so we have to make things
+ a bit more convoluted by introducing the myLength function. The wanted
+ constraints we get for this program are:
+ [forall a. Maybe a] ~ Id alpha
+ [forall a. F [a]] ~ Id alpha
+ Which, /after reactions/ should create a fresh implication:
+ forall a. Maybe a ~ F [a]
+ that is perfectly soluble.
+-}
+
+type family F a
+type instance F [a] = Maybe a
+
+type family Id a
+type instance Id a = a
+
+f :: [forall a. F [a]]
+f = undefined
+
+
+g :: [forall a. Maybe a] -> Int
+g x = myLength [x,f]
+
+myLength :: [Id a] -> Int
+myLength = undefined
diff --git a/testsuite/tests/typecheck/should_compile/T2494.stderr b/testsuite/tests/typecheck/should_compile/T2494.stderr
index 5e5661e74a..35c9e95d1d 100644
--- a/testsuite/tests/typecheck/should_compile/T2494.stderr
+++ b/testsuite/tests/typecheck/should_compile/T2494.stderr
@@ -1,22 +1,24 @@
-
-T2494.hs:15:7:
- Couldn't match type `b' with `a'
- `b' is a rigid type variable bound by
- the RULE "foo/foo" at T2494.hs:14:46
- `a' is a rigid type variable bound by
- the RULE "foo/foo" at T2494.hs:13:46
- Expected type: Maybe (m b) -> Maybe (m b)
- Actual type: Maybe (m a) -> Maybe (m a)
- In the first argument of `foo', namely `f'
- In the expression: foo f (foo g x)
-
-T2494.hs:15:30:
- Couldn't match type `b' with `a'
- `b' is a rigid type variable bound by
- the RULE "foo/foo" at T2494.hs:14:46
- `a' is a rigid type variable bound by
- the RULE "foo/foo" at T2494.hs:13:46
- Expected type: Maybe (m b) -> Maybe (m a)
- Actual type: Maybe (m b) -> Maybe (m b)
- In the second argument of `(.)', namely `g'
- In the first argument of `foo', namely `(f . g)'
+
+T2494.hs:15:14:
+ Couldn't match type `a' with `b'
+ `a' is a rigid type variable bound by
+ the RULE "foo/foo" at T2494.hs:13:16
+ `b' is a rigid type variable bound by
+ the RULE "foo/foo" at T2494.hs:14:16
+ Expected type: Maybe (m a) -> Maybe (m a)
+ Actual type: Maybe (m b) -> Maybe (m b)
+ In the first argument of `foo', namely `g'
+ In the second argument of `foo', namely `(foo g x)'
+ In the expression: foo f (foo g x)
+
+T2494.hs:15:30:
+ Couldn't match type `b' with `a'
+ `b' is a rigid type variable bound by
+ the RULE "foo/foo" at T2494.hs:14:16
+ `a' is a rigid type variable bound by
+ the RULE "foo/foo" at T2494.hs:13:16
+ Expected type: Maybe (m a) -> Maybe (m a)
+ Actual type: Maybe (m b) -> Maybe (m b)
+ In the second argument of `(.)', namely `g'
+ In the first argument of `foo', namely `(f . g)'
+ In the expression: foo (f . g) x
diff --git a/testsuite/tests/typecheck/should_compile/T3108.hs b/testsuite/tests/typecheck/should_compile/T3108.hs
new file mode 100644
index 0000000000..774d5f3801
--- /dev/null
+++ b/testsuite/tests/typecheck/should_compile/T3108.hs
@@ -0,0 +1,37 @@
+{-# LANGUAGE OverlappingInstances, UndecidableInstances, MultiParamTypeClasses,
+ FunctionalDependencies, FlexibleInstances #-}
+
+module T3108 where
+
+-- Direct recursion terminates (typechecking-wise)
+
+class C0 x
+ where
+ m0 :: x -> ()
+ m0 = const undefined
+
+instance (C0 x, C0 y) => C0 (x,y)
+instance C0 Bool
+instance C0 (x,Bool) => C0 x
+
+foo :: ()
+foo = m0 (1::Int)
+
+
+-- Indirect recursion does not terminate (typechecking-wise)
+
+class C1 x
+ where
+ m1 :: x -> ()
+ m1 = const undefined
+
+instance (C1 x, C1 y) => C1 (x,y)
+instance C1 Bool
+instance (C2 x y, C1 (y,Bool)) => C1 x
+
+class C2 x y | x -> y
+instance C2 Int Int
+
+-- It is this declaration that causes nontermination of typechecking.
+bar :: ()
+bar = m1 (1::Int)
diff --git a/testsuite/tests/typecheck/should_compile/T4310.hs b/testsuite/tests/typecheck/should_compile/T4310.hs
new file mode 100644
index 0000000000..43b82cae9a
--- /dev/null
+++ b/testsuite/tests/typecheck/should_compile/T4310.hs
@@ -0,0 +1,11 @@
+{-# LANGUAGE TypeFamilies, RankNTypes, ScopedTypeVariables, KindSignatures #-}
+
+module T4310 where
+import GHC.ST
+
+type family Mutable a :: * -> * -> *
+
+data New v a = New (forall s. ST s (Mutable v s a))
+
+create :: (forall s. ST s (Mutable v s a)) -> New v a
+create = New
diff --git a/testsuite/tests/typecheck/should_compile/T4912.stderr b/testsuite/tests/typecheck/should_compile/T4912.stderr
index c944dc1260..50d2deb3cd 100644
--- a/testsuite/tests/typecheck/should_compile/T4912.stderr
+++ b/testsuite/tests/typecheck/should_compile/T4912.stderr
@@ -1,4 +1,4 @@
-T4912.hs:10:10: Warning: orphan instance: instance Foo TheirData
+T4912.hs:10:10: Warning: Orphan instance: instance Foo TheirData
-T4912.hs:13:10: Warning: orphan instance: instance Bar OurData
+T4912.hs:13:10: Warning: Orphan instance: instance Bar OurData
diff --git a/testsuite/tests/typecheck/should_compile/T5595.hs b/testsuite/tests/typecheck/should_compile/T5595.hs
new file mode 100644
index 0000000000..e7599cf2fb
--- /dev/null
+++ b/testsuite/tests/typecheck/should_compile/T5595.hs
@@ -0,0 +1,14 @@
+{-# LANGUAGE UnicodeSyntax, RankNTypes, TypeFamilies #-}
+module T5595 where
+
+class MonadTransControl t where
+ type St t :: * → *
+
+ liftControl :: Monad m =>(Run t → m a) → t m a
+
+ restore :: Monad o => St t y → t o y
+
+type Run t = forall n b. Monad n => t n b → n (St t b)
+
+foo :: (Monad m, MonadTransControl t) => (Run t -> m a) -> t m a
+foo f = liftControl f
diff --git a/testsuite/tests/typecheck/should_compile/T5643.hs b/testsuite/tests/typecheck/should_compile/T5643.hs
new file mode 100644
index 0000000000..eeab6865e4
--- /dev/null
+++ b/testsuite/tests/typecheck/should_compile/T5643.hs
@@ -0,0 +1,22 @@
+{-# LANGUAGE MultiParamTypeClasses
+ ,FunctionalDependencies
+ ,FlexibleContexts #-}
+
+module T5643 where
+
+import Prelude ()
+
+class FoldableLL a b | a -> b
+
+class FoldableLL full item => ListLike full item | full -> item where
+
+ cons :: item -> full -> full
+ head :: full -> item
+ tail :: full -> full
+
+ init :: full -> full
+ init l = cons (head l) (init xs)
+ where xs = tail l
+
+-- Deriveds from the functional dependencies were escaping in the Wanted
+-- constraints and emitWantedCts was giving a panic error.
diff --git a/testsuite/tests/typecheck/should_compile/T5655.hs b/testsuite/tests/typecheck/should_compile/T5655.hs
new file mode 100644
index 0000000000..429f50e56a
--- /dev/null
+++ b/testsuite/tests/typecheck/should_compile/T5655.hs
@@ -0,0 +1,26 @@
+{-# LANGUAGE TypeFamilies, GADTs, ConstraintKinds, Rank2Types #-}
+module T5655 where
+
+import GHC.Prim (Constraint)
+
+class Show a => Twice a where twice :: a -> a
+
+instance Twice Int where twice = (*2)
+
+data ETwice where ETwice :: Twice a => a -> ETwice
+
+class E e where
+ type C e :: * -> Constraint
+ ap :: (forall a. C e a => a -> r) -> e -> r
+
+instance E ETwice where
+ type C ETwice = Twice
+ ap f (ETwice a) = f a
+
+f :: (E e, C e ~ Twice) => e -> ETwice
+f = ap (ETwice . twice)
+
+foo :: ETwice
+foo = ETwice (5 :: Int)
+
+bar = ap print (f foo)
diff --git a/testsuite/tests/typecheck/should_compile/T5676.hs b/testsuite/tests/typecheck/should_compile/T5676.hs
new file mode 100644
index 0000000000..9fa8404b0b
--- /dev/null
+++ b/testsuite/tests/typecheck/should_compile/T5676.hs
@@ -0,0 +1,19 @@
+{-# LANGUAGE ScopedTypeVariables, InstanceSigs #-}
+module Foo where
+
+data T a = T a
+
+class C a where
+ foo :: b -> a -> (a, [b])
+
+instance C a => C (T a) where
+ foo :: forall b. b -> T a -> (T a, [b])
+ foo x (T y) = (T y, xs)
+ where
+ xs :: [b]
+ xs = [x,x,x]
+
+instance Functor T where
+ fmap :: (a -> b) -> T a -> T b
+ fmap f (T x) = T (f x)
+
diff --git a/testsuite/tests/typecheck/should_compile/T5792.hs b/testsuite/tests/typecheck/should_compile/T5792.hs
new file mode 100644
index 0000000000..49d0826bcf
--- /dev/null
+++ b/testsuite/tests/typecheck/should_compile/T5792.hs
@@ -0,0 +1,10 @@
+{-# LANGUAGE DataKinds, TypeFamilies, UndecidableInstances #-}
+
+module T5792 where
+
+
+data T = TT
+type family Compare (m :: T) :: Ordering
+type instance Compare TT = Compare TT
+
+type Compare' a = Compare a
diff --git a/testsuite/tests/typecheck/should_compile/all.T b/testsuite/tests/typecheck/should_compile/all.T
index a411c6d085..918d5c8c2e 100644
--- a/testsuite/tests/typecheck/should_compile/all.T
+++ b/testsuite/tests/typecheck/should_compile/all.T
@@ -352,6 +352,7 @@ test('tc257', normal, compile, [''])
test('tc258', normal, compile, [''])
test('tc259', normal, compile, [''])
test('tc260', normal, compile, [''])
+test('tc261', normal, compile, [''])
test('GivenOverlapping', normal, compile, [''])
test('SilentParametersOverlapping', normal, compile, [''])
@@ -365,3 +366,14 @@ 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, ['']) \ No newline at end of file
diff --git a/testsuite/tests/typecheck/should_compile/tc115.stderr-ghc b/testsuite/tests/typecheck/should_compile/tc115.stderr-ghc
index b4b8dd81b1..8b3997deb5 100644
--- a/testsuite/tests/typecheck/should_compile/tc115.stderr-ghc
+++ b/testsuite/tests/typecheck/should_compile/tc115.stderr-ghc
@@ -1,4 +1,4 @@
tc115.hs:12:10:
- Warning: No explicit method nor default method for `foo'
- In the instance declaration for `Foo [m a] (m a)'
+ Warning: No explicit method or default declaration for `foo'
+ In the instance declaration for `Foo [m a] (m a)'
diff --git a/testsuite/tests/typecheck/should_compile/tc116.stderr-ghc b/testsuite/tests/typecheck/should_compile/tc116.stderr-ghc
index 7aa90036d0..5593928d28 100644
--- a/testsuite/tests/typecheck/should_compile/tc116.stderr-ghc
+++ b/testsuite/tests/typecheck/should_compile/tc116.stderr-ghc
@@ -1,4 +1,4 @@
tc116.hs:12:10:
- Warning: No explicit method nor default method for `foo'
- In the instance declaration for `Foo [m a] (m a)'
+ Warning: No explicit method or default declaration for `foo'
+ In the instance declaration for `Foo [m a] (m a)'
diff --git a/testsuite/tests/typecheck/should_compile/tc125.stderr-ghc b/testsuite/tests/typecheck/should_compile/tc125.stderr-ghc
index 628c5e59db..2a2de4283d 100644
--- a/testsuite/tests/typecheck/should_compile/tc125.stderr-ghc
+++ b/testsuite/tests/typecheck/should_compile/tc125.stderr-ghc
@@ -1,20 +1,20 @@
tc125.hs:16:10:
- Warning: No explicit method nor default method for `add'
- In the instance declaration for `Add Z a a'
+ Warning: No explicit method or default declaration for `add'
+ In the instance declaration for `Add Z a a'
tc125.hs:17:10:
- Warning: No explicit method nor default method for `add'
- In the instance declaration for `Add (S a) b (S c)'
+ Warning: No explicit method or default declaration for `add'
+ In the instance declaration for `Add (S a) b (S c)'
tc125.hs:21:10:
- Warning: No explicit method nor default method for `mul'
- In the instance declaration for `Mul Z a Z'
+ Warning: No explicit method or default declaration for `mul'
+ In the instance declaration for `Mul Z a Z'
tc125.hs:22:10:
- Warning: No explicit method nor default method for `mul'
- In the instance declaration for `Mul (S a) b d'
+ Warning: No explicit method or default declaration for `mul'
+ In the instance declaration for `Mul (S a) b d'
tc125.hs:29:10:
- Warning: No explicit method nor default method for `add'
- In the instance declaration for `Add (Q a b) (Q c d) (Q ad_bc bd)'
+ Warning: No explicit method or default declaration for `add'
+ In the instance declaration for `Add (Q a b) (Q c d) (Q ad_bc bd)'
diff --git a/testsuite/tests/typecheck/should_compile/tc126.stderr-ghc b/testsuite/tests/typecheck/should_compile/tc126.stderr-ghc
index a414a0e35a..ee49f159f4 100644
--- a/testsuite/tests/typecheck/should_compile/tc126.stderr-ghc
+++ b/testsuite/tests/typecheck/should_compile/tc126.stderr-ghc
@@ -1,8 +1,8 @@
tc126.hs:15:25:
- Warning: No explicit method nor default method for `bug'
- In the instance declaration for `Bug (Int -> r) Int r'
+ Warning: No explicit method or default declaration for `bug'
+ In the instance declaration for `Bug (Int -> r) Int r'
tc126.hs:16:10:
- Warning: No explicit method nor default method for `bug'
+ Warning: No explicit method or default declaration for `bug'
In the instance declaration for `Bug f (c a) (c r)'
diff --git a/testsuite/tests/typecheck/should_compile/tc141.stderr b/testsuite/tests/typecheck/should_compile/tc141.stderr
index 2fdf1fa99c..0d08303345 100644
--- a/testsuite/tests/typecheck/should_compile/tc141.stderr
+++ b/testsuite/tests/typecheck/should_compile/tc141.stderr
@@ -1,6 +1,43 @@
-tc141.hs:11:15: Not in scope: type variable `a'
+tc141.hs:11:12:
+ You cannot bind scoped type variable `a'
+ in a pattern binding signature
+ In the pattern: p :: a
+ In the pattern: (p :: a, q :: a)
+ In a pattern binding: (p :: a, q :: a) = x
-tc141.hs:11:20: Not in scope: type variable `a'
+tc141.hs:11:31:
+ Couldn't match expected type `a1' with actual type `a'
+ `a1' is a rigid type variable bound by
+ an expression type signature: a1 at tc141.hs:11:31
+ `a' is a rigid type variable bound by
+ the inferred type of f :: (a, a) -> (t, a) at tc141.hs:11:1
+ In the expression: q :: a
+ In the expression: (q :: a, p)
+ In the expression: let (p :: a, q :: a) = x in (q :: a, p)
-tc141.hs:13:16: Not in scope: type variable `a'
+tc141.hs:13:13:
+ You cannot bind scoped type variable `a'
+ in a pattern binding signature
+ In the pattern: y :: a
+ In a pattern binding: y :: a = a
+ In the expression:
+ let y :: a = a in
+ let
+ v :: a
+ v = b
+ in v
+
+tc141.hs:15:18:
+ Couldn't match expected type `a1' with actual type `t1'
+ `a1' is a rigid type variable bound by
+ the type signature for v :: a1 at tc141.hs:14:19
+ `t1' is a rigid type variable bound by
+ the inferred type of g :: t -> t1 -> a at tc141.hs:13:1
+ In the expression: b
+ In an equation for `v': v = b
+ In the expression:
+ let
+ v :: a
+ v = b
+ in v
diff --git a/testsuite/tests/typecheck/should_compile/tc145.hs b/testsuite/tests/typecheck/should_compile/tc145.hs
index a11c5b93e5..04910a3ce5 100644
--- a/testsuite/tests/typecheck/should_compile/tc145.hs
+++ b/testsuite/tests/typecheck/should_compile/tc145.hs
@@ -1,4 +1,4 @@
-{-# LANGUAGE ImplicitParams, UnboxedTuples #-}
+{-# LANGUAGE RankNTypes, ImplicitParams, UnboxedTuples #-}
-- Test two slightly exotic things about type signatures
diff --git a/testsuite/tests/typecheck/should_compile/tc158.hs b/testsuite/tests/typecheck/should_compile/tc158.hs
index 4414fc9c21..1e8b661d10 100644
--- a/testsuite/tests/typecheck/should_compile/tc158.hs
+++ b/testsuite/tests/typecheck/should_compile/tc158.hs
@@ -1,4 +1,4 @@
-{-# LANGUAGE Rank2Types #-}
+{-# LANGUAGE RankNTypes #-}
-- Types should be checked for well-formedness only after
-- expanding type synonyms. GHC 5.03 fails this
diff --git a/testsuite/tests/typecheck/should_compile/tc161.stderr-ghc b/testsuite/tests/typecheck/should_compile/tc161.stderr-ghc
index 81c636e698..57b0f60830 100644
--- a/testsuite/tests/typecheck/should_compile/tc161.stderr-ghc
+++ b/testsuite/tests/typecheck/should_compile/tc161.stderr-ghc
@@ -1,4 +1,4 @@
tc161.hs:17:10:
- Warning: No explicit method nor default method for `op'
- In the instance declaration for `Foo Int'
+ Warning: No explicit method or default declaration for `op'
+ In the instance declaration for `Foo Int'
diff --git a/testsuite/tests/typecheck/should_compile/tc167.stderr b/testsuite/tests/typecheck/should_compile/tc167.stderr
index 154338d82e..8f98cca3e4 100644
--- a/testsuite/tests/typecheck/should_compile/tc167.stderr
+++ b/testsuite/tests/typecheck/should_compile/tc167.stderr
@@ -1,6 +1,4 @@
tc167.hs:8:11:
Expecting a lifted type, but `Int#' is unlifted
- The first argument of `(->)' should have kind `*',
- but `Int#' has kind `#'
In the type signature for `f': f :: (->) Int# Int#
diff --git a/testsuite/tests/typecheck/should_compile/tc168.stderr b/testsuite/tests/typecheck/should_compile/tc168.stderr
index 3a97b3f097..cbaa0aceeb 100644
--- a/testsuite/tests/typecheck/should_compile/tc168.stderr
+++ b/testsuite/tests/typecheck/should_compile/tc168.stderr
@@ -5,6 +5,8 @@ tc168.hs:17:1:
from the context (C a1 (a, b))
bound by the inferred type for `g': C a1 (a, b) => a1 -> a
at tc168.hs:17:1-16
+ The type variable `b0' is ambiguous
+ Possible fix: add a type signature that fixes these type variable(s)
Possible fix: add an instance declaration for (C a1 (a, b0))
When checking that `g'
has the inferred type `forall a b a1. C a1 (a, b) => a1 -> a'
diff --git a/testsuite/tests/typecheck/should_compile/tc192.hs b/testsuite/tests/typecheck/should_compile/tc192.hs
index 3337954ade..5af64f344d 100644
--- a/testsuite/tests/typecheck/should_compile/tc192.hs
+++ b/testsuite/tests/typecheck/should_compile/tc192.hs
@@ -15,7 +15,7 @@ import Control.Arrow
-- comp1 :: Arrow (-=>) => b-=>c -> c-=>d -> b-=>d
-comp1 :: Arrow (~>) => b~>c -> c~>d -> b~>d
+comp1 :: Arrow to => b `to` c -> c `to` d -> b `to` d
comp1 f g = proc x -> do
b <- f -< x
g -< b
@@ -23,26 +23,26 @@ comp1 f g = proc x -> do
-- arrowp produces
-- comp1 f g = (f >>> g)
-comp :: Arrow (~>) => (b~>c, c~>d)~>(b~>d)
+comp :: Arrow to => (b `to` c, c `to` d) `to` (b `to` d)
comp = arr (uncurry (>>>))
--- app :: Arrow (~>) => (b c, b)~>c
+-- app :: Arrow to => (b c, b) `to` c
type R = Float
type I = Int
-z1,z2 :: Arrow (~>) => I~>(R~>R)
+z1,z2 :: Arrow to => I `to` (R `to` R)
z1 = undefined
z2 = z1
-z3 :: Arrow (~>) => (I,I)~>(R~>R,R~>R)
+z3 :: Arrow to => (I,I) `to` (R `to` R,R `to` R)
z3 = z1 *** z2
-z4 :: Arrow (~>) => (I,I)~>(R~>R)
+z4 :: Arrow to => (I,I) `to` (R `to` R)
z4 = z3 >>> comp
-comp4,comp5 :: Arrow (~>) =>
- b~>(c~>d) -> e~>(d~>f) -> (b,e)~>(c~>f)
+comp4,comp5 :: Arrow to =>
+ b `to` (c `to` d) -> e `to` (d `to` f) -> (b,e) `to` (c `to` f)
comp4 g f = proc (b,e) -> do
g' <- g -< b
@@ -51,7 +51,7 @@ comp4 g f = proc (b,e) -> do
comp5 g f = (g *** f) >>> comp
-lam,lam2 :: Arrow (~>) => (e,b)~>c -> e~>(b~>c)
+lam,lam2 :: Arrow to => (e,b) `to` c -> e `to` (b `to` c)
lam f = arr $ \ e -> arr (pair e) >>> f
@@ -65,7 +65,7 @@ lam2 f = proc e ->
returnA -< c)
-- I desugared with the arrows preprocessor, removed extra parens and
--- renamed "arr" (~>) "pure", (~>) get
+-- renamed "arr" to "pure", to get
--
-- lam f = pure (\ e -> pure (\ b -> (e, b)) >>> f)
@@ -85,27 +85,27 @@ curry4 f = \ e -> f . (pair e)
-comp6 :: Arrow (~>) => b~>(c~>d) -> e~>(d~>f)
- -> b~>(e~>(c~>f))
+comp6 :: Arrow to => b `to` (c `to` d) -> e `to` (d `to` f)
+ -> b `to` (e `to` (c `to` f))
comp6 g f = lam $ comp5 g f
-- What about uncurrying?
--- uncurryA :: Arrow (~>) => b~>(c~>d)
--- -> (b,c)~>d
+-- uncurryA :: Arrow to => b `to` (c `to` d)
+-- -> (b,c) `to` d
-- uncurryA f = proc (b,c) -> do
-- f' <- f -< b
-- returnA -< f' c
-- Why "lam" instead of "curryA" (good name also): so I can use Arrows
--- lambda notation, similar (~>)
+-- lambda notation, similar to
compF g f = \ b e -> g b . f e
--- But I haven't figured out how (~>).
+-- But I haven't figured out how to.
--- comp7 :: Arrow (~>) => b~>(c~>d) -> e~>(d~>f)
--- -> b~>(e~>(c~>f))
+-- comp7 :: Arrow to => b `to` (c `to` d) -> e `to` (d `to` f)
+-- -> b `to` (e `to` (c `to` f))
-- comp7 g f = proc b -> proc e -> do
-- g' <- g -< b
-- f' <- f -< e
@@ -117,29 +117,29 @@ compF g f = \ b e -> g b . f e
-- (| lam (\ b -> undefined) |)
-- Oh! The arrow syntax allows bindings with *infix* operators. And I
--- don't know how (~>) finish comp7.
+-- don't know how to finish comp7.
-- Uncurried forms:
-comp8 :: Arrow (~>) => (b,c)~>d -> (e,d)~>k -> (b,c,e)~>k
+comp8 :: Arrow to => (b,c) `to` d -> (e,d) `to` k -> (b,c,e) `to` k
comp8 g f = proc (b,c,e) -> do
d <- g -< (b,c)
f -< (e,d)
--- This looks like straightforward~>translation. With insertions of
--- curry & uncurry operators, it'd probably be easy (~>) handle curried
+-- This looks like straightforward `to` translation. With insertions of
+-- curry & uncurry operators, it'd probably be easy to handle curried
-- definitions as well.
-- Simpler example, for experimentation
-comp9 :: Arrow (~>) => (c,d)~>e -> b~>d -> (b,c)~>e
+comp9 :: Arrow to => (c,d) `to` e -> b `to` d -> (b,c) `to` e
comp9 g f = proc (b,c) -> do
d <- f -< b
g -< (c,d)
-- Desugared:
-comp9' :: Arrow (~>) => (c,d)~>e -> b~>d -> (b,c)~>e
+comp9' :: Arrow to => (c,d) `to` e -> b `to` d -> (b,c) `to` e
comp9' g f = first f >>> arr (\ (d,c) -> (c,d)) >>> g
diff --git a/testsuite/tests/typecheck/should_compile/tc211.stderr b/testsuite/tests/typecheck/should_compile/tc211.stderr
index 30d986c456..e6c5675422 100644
--- a/testsuite/tests/typecheck/should_compile/tc211.stderr
+++ b/testsuite/tests/typecheck/should_compile/tc211.stderr
@@ -1,25 +1,24 @@
tc211.hs:15:22:
- Couldn't match expected type `a -> a'
- with actual type `forall a1. a1 -> a1'
- Expected type: [a -> a]
- Actual type: [forall a1. a1 -> a1]
+ Couldn't match type `forall a1. a1 -> a1' with `a -> a'
+ Expected type: [a -> a]
+ Actual type: [forall a. a -> a]
In the first argument of `head', namely `foo'
In the first argument of `(:) ::
(forall a. a -> a)
-> [forall a. a -> a] -> [forall a. a -> a]', namely
`(head foo)'
+ In the expression:
+ ((:) ::
+ (forall a. a -> a) -> [forall a. a -> a] -> [forall a. a -> a])
+ (head foo) foo
tc211.hs:70:9:
- Couldn't match expected type `a -> a'
- with actual type `forall a1. a1 -> a1'
- Expected type: List (forall a1. a1 -> a1)
- -> (forall a1. a1 -> a1)
- -> a
- -> a
- Actual type: List (forall a1. a1 -> a1)
- -> (forall a1. a1 -> a1)
- -> forall a1. a1 -> a1
+ Couldn't match type `forall a1. a1 -> a1' with `a -> a'
+ Expected type: List (forall a. a -> a)
+ -> (forall a. a -> a) -> a -> a
+ Actual type: List (forall a. a -> a)
+ -> (forall a. a -> a) -> forall a. a -> a
In the expression:
foo2 ::
List (forall a. a -> a) -> (forall a. a -> a) -> (forall a. a -> a)
@@ -28,3 +27,9 @@ tc211.hs:70:9:
List (forall a. a -> a)
-> (forall a. a -> a) -> (forall a. a -> a))
xs1 (\ x -> x)
+ In an equation for `bar4':
+ bar4
+ = (foo2 ::
+ List (forall a. a -> a)
+ -> (forall a. a -> a) -> (forall a. a -> a))
+ xs1 (\ x -> x)
diff --git a/testsuite/tests/typecheck/should_compile/tc230.hs b/testsuite/tests/typecheck/should_compile/tc230.hs
index 11877d487f..22cb6e9621 100644
--- a/testsuite/tests/typecheck/should_compile/tc230.hs
+++ b/testsuite/tests/typecheck/should_compile/tc230.hs
@@ -1,4 +1,4 @@
-{-# LANGUAGE ImplicitParams #-}
+{-# LANGUAGE ImplicitParams, RankNTypes #-}
-- Trac #1445
diff --git a/testsuite/tests/typecheck/should_compile/tc231.stderr b/testsuite/tests/typecheck/should_compile/tc231.stderr
index 9647f34fef..6d3be6a45d 100644
--- a/testsuite/tests/typecheck/should_compile/tc231.stderr
+++ b/testsuite/tests/typecheck/should_compile/tc231.stderr
@@ -5,11 +5,13 @@ TYPE SIGNATURES
s :: forall t t1. Q t (Z [Char]) t1 -> Q t (Z [Char]) t1
TYPE CONSTRUCTORS
data Q s a chain
+ No C type associated
RecFlag NonRecursive
= Node :: forall s a chain. s -> a -> chain -> Q s a chain
Stricts: _ _ _
FamilyInstance: none
data Z a
+ No C type associated
RecFlag NonRecursive
= Z :: forall a. a -> Z a Stricts: _
FamilyInstance: none
diff --git a/testsuite/tests/typecheck/should_compile/tc254.stderr b/testsuite/tests/typecheck/should_compile/tc254.stderr
index e84ab61709..b24224d709 100644
--- a/testsuite/tests/typecheck/should_compile/tc254.stderr
+++ b/testsuite/tests/typecheck/should_compile/tc254.stderr
@@ -1,4 +1,4 @@
tc254.hs:8:1:
- Warning: No explicit AT declaration for `Typ'
+ Warning: No explicit associated type or default declaration for `Typ'
In the instance declaration for `Cls Int'
diff --git a/testsuite/tests/typecheck/should_compile/tc261.hs b/testsuite/tests/typecheck/should_compile/tc261.hs
new file mode 100644
index 0000000000..3269c7ea82
--- /dev/null
+++ b/testsuite/tests/typecheck/should_compile/tc261.hs
@@ -0,0 +1,4 @@
+{-# LANGUAGE TypeOperators #-}
+module TcOK where
+
+newtype (f <.> g) a = Compose (f (g a))
diff --git a/testsuite/tests/typecheck/should_fail/AssocTyDef03.stderr b/testsuite/tests/typecheck/should_fail/AssocTyDef03.stderr
index 668857a017..bd7fadfd8c 100644
--- a/testsuite/tests/typecheck/should_fail/AssocTyDef03.stderr
+++ b/testsuite/tests/typecheck/should_fail/AssocTyDef03.stderr
@@ -1,5 +1,5 @@
-
-AssocTyDef03.hs:6:5:
- Wrong category of family instance; declaration was for a data type
- In the type synonym instance default declaration for `Typ'
- In the class declaration for `Cls'
+
+AssocTyDef03.hs:6:5:
+ Wrong category of family instance; declaration was for a data type
+ In the type instance declaration for `Typ'
+ In the class declaration for `Cls'
diff --git a/testsuite/tests/typecheck/should_fail/AssocTyDef04.stderr b/testsuite/tests/typecheck/should_fail/AssocTyDef04.stderr
index e7c32f0cad..b7bc7c2fbe 100644
--- a/testsuite/tests/typecheck/should_fail/AssocTyDef04.stderr
+++ b/testsuite/tests/typecheck/should_fail/AssocTyDef04.stderr
@@ -1,7 +1,6 @@
-
-AssocTyDef04.hs:6:18:
- `Maybe' is not applied to enough type arguments
- Expected kind `*', but `Maybe' has kind `* -> *'
- In the type `Maybe'
- In the type synonym instance default declaration for `Typ'
- In the class declaration for `Cls'
+
+AssocTyDef04.hs:6:18:
+ Expecting one more argument to `Maybe'
+ In the type `Maybe'
+ In the type instance declaration for `Typ'
+ In the class declaration for `Cls'
diff --git a/testsuite/tests/typecheck/should_fail/AssocTyDef05.stderr b/testsuite/tests/typecheck/should_fail/AssocTyDef05.stderr
index 181f9f6f59..3416a3c44e 100644
--- a/testsuite/tests/typecheck/should_fail/AssocTyDef05.stderr
+++ b/testsuite/tests/typecheck/should_fail/AssocTyDef05.stderr
@@ -1,5 +1,5 @@
-
-AssocTyDef05.hs:6:5:
- Number of parameters must match family declaration; expected 1
- In the type synonym instance default declaration for `Typ'
- In the class declaration for `Cls'
+
+AssocTyDef05.hs:6:5:
+ Number of parameters must match family declaration; expected 1
+ In the type instance declaration for `Typ'
+ In the class declaration for `Cls'
diff --git a/testsuite/tests/typecheck/should_fail/AssocTyDef06.stderr b/testsuite/tests/typecheck/should_fail/AssocTyDef06.stderr
index 417e0f8419..dd88bc3c1f 100644
--- a/testsuite/tests/typecheck/should_fail/AssocTyDef06.stderr
+++ b/testsuite/tests/typecheck/should_fail/AssocTyDef06.stderr
@@ -1,5 +1,5 @@
-
-AssocTyDef06.hs:6:5:
- Number of parameters must match family declaration; expected 1
- In the type synonym instance default declaration for `Typ'
- In the class declaration for `Cls'
+
+AssocTyDef06.hs:6:5:
+ Number of parameters must match family declaration; expected 1
+ In the type instance declaration for `Typ'
+ In the class declaration for `Cls'
diff --git a/testsuite/tests/typecheck/should_fail/FailDueToGivenOverlapping.stderr b/testsuite/tests/typecheck/should_fail/FailDueToGivenOverlapping.stderr
index 229b14a15b..1cf4e9f1cc 100644
--- a/testsuite/tests/typecheck/should_fail/FailDueToGivenOverlapping.stderr
+++ b/testsuite/tests/typecheck/should_fail/FailDueToGivenOverlapping.stderr
@@ -1,13 +1,12 @@
FailDueToGivenOverlapping.hs:27:9:
- Overlapping instances for E [t0]
- arising from a use of `eop'
- Matching instances:
- instance E [a] -- Defined at FailDueToGivenOverlapping.hs:21:10
+ Overlapping instances for E [t0] arising from a use of `eop'
Matching givens (or their superclasses):
(E [Int])
bound by the type signature for bar :: E [Int] => () -> ()
- at FailDueToGivenOverlapping.hs:27:1-23
+ at FailDueToGivenOverlapping.hs:26:8-26
+ Matching instances:
+ instance E [a] -- Defined at FailDueToGivenOverlapping.hs:21:10
(The choice depends on the instantiation of `t0')
In the expression: eop [undefined]
In an equation for `bar': bar _ = eop [undefined]
diff --git a/testsuite/tests/typecheck/should_fail/FrozenErrorTests.stderr b/testsuite/tests/typecheck/should_fail/FrozenErrorTests.stderr
index 193d356190..d4ce2ce007 100644
--- a/testsuite/tests/typecheck/should_fail/FrozenErrorTests.stderr
+++ b/testsuite/tests/typecheck/should_fail/FrozenErrorTests.stderr
@@ -1,73 +1,70 @@
-
-FrozenErrorTests.hs:11:1:
- Couldn't match type `a' with `T a'
- `a' is a rigid type variable bound by
- the type signature for foo :: a ~ T a => a -> a
- at FrozenErrorTests.hs:11:1
- Inaccessible code in
- the type signature for foo :: a ~ T a => a -> a
-
-FrozenErrorTests.hs:14:12:
- Couldn't match type `b' with `T b'
- `b' is a rigid type variable bound by
- a pattern with constructor
- MkT2 :: forall a b. b ~ T b => b -> T a,
- in a case alternative
- at FrozenErrorTests.hs:14:12
- Inaccessible code in
- a pattern with constructor
- MkT2 :: forall a b. b ~ T b => b -> T a,
- in a case alternative
- In the pattern: MkT2 y
- In a case alternative: MkT2 y -> ()
- In the expression: case x of { MkT2 y -> () }
-
-FrozenErrorTests.hs:19:12:
- Couldn't match type `Int' with `Bool'
- Inaccessible code in
- a pattern with constructor
- MkT3 :: forall a. a ~ Bool => T a,
- in a case alternative
- In the pattern: MkT3
- In a case alternative: MkT3 -> ()
- In the expression: case x of { MkT3 -> () }
-
-FrozenErrorTests.hs:33:9:
- Occurs check: cannot construct the infinite type: a0 = [a0]
- In the expression: goo1 False undefined
- In an equation for `test1': test1 = goo1 False undefined
-
-FrozenErrorTests.hs:36:15:
- Couldn't match type `[Int]' with `Int'
- In the first argument of `goo2', namely `(goo1 False undefined)'
- In the expression: goo2 (goo1 False undefined)
- In an equation for `test2': test2 = goo2 (goo1 False undefined)
-
-FrozenErrorTests.hs:37:9:
- Couldn't match type `Int' with `[Int]'
- In the expression: goo1 False (goo2 undefined)
- In an equation for `test3': test3 = goo1 False (goo2 undefined)
-
-FrozenErrorTests.hs:52:15:
- Occurs check: cannot construct the infinite type:
- c0 = T2 (T2 c0 c0) c0
- In the first argument of `goo4', namely `(goo3 False undefined)'
- In the expression: goo4 (goo3 False undefined)
- In an equation for `test4': test4 = goo4 (goo3 False undefined)
-
-FrozenErrorTests.hs:52:15:
- Couldn't match type `T2 c0' with `M'
- In the first argument of `goo4', namely `(goo3 False undefined)'
- In the expression: goo4 (goo3 False undefined)
- In an equation for `test4': test4 = goo4 (goo3 False undefined)
-
-FrozenErrorTests.hs:53:9:
- Occurs check: cannot construct the infinite type:
- c0 = T2 (T2 c0 c0) c0
- In the expression: goo3 False (goo4 undefined)
- In an equation for `test5': test5 = goo3 False (goo4 undefined)
-
-FrozenErrorTests.hs:53:9:
- Couldn't match type `T2 c0' with `M'
- In the expression: goo3 False (goo4 undefined)
- In an equation for `test5': test5 = goo3 False (goo4 undefined)
+
+FrozenErrorTests.hs:10:8:
+ Couldn't match type `a' with `T a'
+ `a' is a rigid type variable bound by
+ the type signature for foo :: a ~ T a => a -> a
+ at FrozenErrorTests.hs:10:15
+ Inaccessible code in
+ the type signature for foo :: a ~ T a => a -> a
+
+FrozenErrorTests.hs:14:12:
+ Couldn't match type `b' with `T b'
+ `b' is a rigid type variable bound by
+ a pattern with constructor
+ MkT2 :: forall a b. b ~ T b => b -> T a,
+ in a case alternative
+ at FrozenErrorTests.hs:14:12
+ Inaccessible code in
+ a pattern with constructor
+ MkT2 :: forall a b. b ~ T b => b -> T a,
+ in a case alternative
+ In the pattern: MkT2 y
+ In a case alternative: MkT2 y -> ()
+ In the expression: case x of { MkT2 y -> () }
+
+FrozenErrorTests.hs:19:12:
+ Couldn't match type `Int' with `Bool'
+ Inaccessible code in
+ a pattern with constructor
+ MkT3 :: forall a. a ~ Bool => T a,
+ in a case alternative
+ In the pattern: MkT3
+ In a case alternative: MkT3 -> ()
+ In the expression: case x of { MkT3 -> () }
+
+FrozenErrorTests.hs:33:9:
+ Occurs check: cannot construct the infinite type: a0 = [a0]
+ Expected type: [a0]
+ Actual type: F a0 Bool
+ In the expression: goo1 False undefined
+ In an equation for `test1': test1 = goo1 False undefined
+
+FrozenErrorTests.hs:36:15:
+ Couldn't match type `Int' with `[Int]'
+ Expected type: [[Int]]
+ Actual type: F [Int] Bool
+ In the first argument of `goo2', namely `(goo1 False undefined)'
+ In the expression: goo2 (goo1 False undefined)
+ In an equation for `test2': test2 = goo2 (goo1 False undefined)
+
+FrozenErrorTests.hs:37:9:
+ Couldn't match type `[Int]' with `Int'
+ Expected type: [[Int]]
+ Actual type: F [Int] Bool
+ In the expression: goo1 False (goo2 undefined)
+ In an equation for `test3': test3 = goo1 False (goo2 undefined)
+
+FrozenErrorTests.hs:52:15:
+ Couldn't match type `T2 c0 c0' with `M (T2 (T2 c0 c0) c0)'
+ Expected type: T2 (M (T2 (T2 c0 c0) c0)) (T2 (T2 c0 c0) c0)
+ Actual type: F (T2 (T2 c0 c0) c0) Bool
+ In the first argument of `goo4', namely `(goo3 False undefined)'
+ In the expression: goo4 (goo3 False undefined)
+ In an equation for `test4': test4 = goo4 (goo3 False undefined)
+
+FrozenErrorTests.hs:53:9:
+ Couldn't match type `T2 c0 c0' with `M (T2 (T2 c0 c0) c0)'
+ Expected type: T2 (M (T2 (T2 c0 c0) c0)) (T2 (T2 c0 c0) c0)
+ Actual type: F (T2 (T2 c0 c0) c0) Bool
+ In the expression: goo3 False (goo4 undefined)
+ In an equation for `test5': test5 = goo3 False (goo4 undefined)
diff --git a/testsuite/tests/typecheck/should_fail/IPFail.stderr b/testsuite/tests/typecheck/should_fail/IPFail.stderr
index 7d0d8980af..efad8b3d56 100644
--- a/testsuite/tests/typecheck/should_fail/IPFail.stderr
+++ b/testsuite/tests/typecheck/should_fail/IPFail.stderr
@@ -3,11 +3,8 @@ IPFail.hs:6:18:
Could not deduce (Num Bool) arising from the literal `5'
from the context (?x::Int)
bound by the type signature for f0 :: (?x::Int) => () -> Bool
- at IPFail.hs:6:1-24
- Possible fix:
- add (Num Bool) to the context of
- the type signature for f0 :: (?x::Int) => () -> Bool
- or add an instance declaration for (Num Bool)
+ at IPFail.hs:5:7-31
+ Possible fix: add an instance declaration for (Num Bool)
In the expression: 5
In the expression: let ?x = 5 in ?x
In an equation for `f0': f0 () = let ?x = 5 in ?x
diff --git a/testsuite/tests/typecheck/should_fail/T1897a.stderr b/testsuite/tests/typecheck/should_fail/T1897a.stderr
index bbbf8260bd..6e5ee1c7a9 100644
--- a/testsuite/tests/typecheck/should_fail/T1897a.stderr
+++ b/testsuite/tests/typecheck/should_fail/T1897a.stderr
@@ -1,8 +1,12 @@
T1897a.hs:9:1:
- Ambiguous type variable `a0' in the constraint:
- (Wob a0 b) arising from the ambiguity check for `foo'
- Probable fix: add a type signature that fixes these type variable(s)
+ Could not deduce (Wob a0 b)
+ arising from the ambiguity check for `foo'
+ from the context (Wob a b)
+ bound by the inferred type for `foo': Wob a b => b -> [b]
+ at T1897a.hs:9:1-24
+ The type variable `a0' is ambiguous
+ Possible fix: add a type signature that fixes these type variable(s)
When checking that `foo'
has the inferred type `forall a b. Wob a b => b -> [b]'
Probable cause: the inferred type is ambiguous
diff --git a/testsuite/tests/typecheck/should_fail/T1899.stderr b/testsuite/tests/typecheck/should_fail/T1899.stderr
index b0c017351a..d7ab2be5ed 100644
--- a/testsuite/tests/typecheck/should_fail/T1899.stderr
+++ b/testsuite/tests/typecheck/should_fail/T1899.stderr
@@ -1,10 +1,9 @@
-
-T1899.hs:14:36:
- Couldn't match type `a' with `Proposition a0'
- `a' is a rigid type variable bound by
- the type signature for transRHS :: [a] -> Int -> Constraint a
- at T1899.hs:10:2
- Expected type: [Proposition a0]
- Actual type: [a]
- In the first argument of `Auxiliary', namely `varSet'
- In the first argument of `Prop', namely `(Auxiliary varSet)'
+
+T1899.hs:12:29:
+ Couldn't match expected type `a' with actual type `Proposition a0'
+ `a' is a rigid type variable bound by
+ the type signature for transRHS :: [a] -> Int -> Constraint a
+ at T1899.hs:9:14
+ In the return type of a call of `Auxiliary'
+ In the first argument of `Prop', namely `(Auxiliary undefined)'
+ In the expression: Prop (Auxiliary undefined)
diff --git a/testsuite/tests/typecheck/should_fail/T2414.stderr b/testsuite/tests/typecheck/should_fail/T2414.stderr
index 030bf6e52a..5fa8f0060a 100644
--- a/testsuite/tests/typecheck/should_fail/T2414.stderr
+++ b/testsuite/tests/typecheck/should_fail/T2414.stderr
@@ -5,3 +5,4 @@ T2414.hs:9:13:
Actual type: b0 -> Maybe b0
In the first argument of `unfoldr', namely `Just'
In the expression: unfoldr Just
+ In an equation for `f': f = unfoldr Just
diff --git a/testsuite/tests/typecheck/should_fail/T2538.stderr b/testsuite/tests/typecheck/should_fail/T2538.stderr
index e4e9a7551a..b2d1d3aeb6 100644
--- a/testsuite/tests/typecheck/should_fail/T2538.stderr
+++ b/testsuite/tests/typecheck/should_fail/T2538.stderr
@@ -1,14 +1,14 @@
-
-T2538.hs:6:1:
- Illegal polymorphic or qualified type: Eq a => a -> a
- Perhaps you intended to use -XRankNTypes or -XRank2Types
- In the type signature for `f': f :: (Eq a => a -> a) -> Int
-
-T2538.hs:9:1:
- Illegal polymorphic or qualified type: Eq a => a -> a
- Perhaps you intended to use -XImpredicativeTypes
- In the type signature for `g': g :: [Eq a => a -> a] -> Int
-
-T2538.hs:12:1:
- Illegal polymorphic or qualified type: Eq a => a -> a
- In the type signature for `h': h :: Ix (Eq a => a -> a) => Int
+
+T2538.hs:6:6:
+ Illegal polymorphic or qualified type: Eq a => a -> a
+ Perhaps you intended to use -XRankNTypes or -XRank2Types
+ In the type signature for `f': f :: (Eq a => a -> a) -> Int
+
+T2538.hs:9:6:
+ Illegal polymorphic or qualified type: Eq a => a -> a
+ Perhaps you intended to use -XImpredicativeTypes
+ In the type signature for `g': g :: [Eq a => a -> a] -> Int
+
+T2538.hs:12:6:
+ Illegal polymorphic or qualified type: Eq a => a -> a
+ In the type signature for `h': h :: Ix (Eq a => a -> a) => Int
diff --git a/testsuite/tests/typecheck/should_fail/T2688.stderr b/testsuite/tests/typecheck/should_fail/T2688.stderr
index 817c7202e5..aa896569b9 100644
--- a/testsuite/tests/typecheck/should_fail/T2688.stderr
+++ b/testsuite/tests/typecheck/should_fail/T2688.stderr
@@ -1,12 +1,13 @@
-
-T2688.hs:8:14:
- Could not deduce (s ~ v)
- from the context (VectorSpace v s)
- bound by the class declaration for `VectorSpace'
- at T2688.hs:(5,1)-(8,23)
- `s' is a rigid type variable bound by
- the class declaration for `VectorSpace' at T2688.hs:5:21
- `v' is a rigid type variable bound by
- the class declaration for `VectorSpace' at T2688.hs:5:19
- In the expression: v *^ (1 / s)
- In an equation for `^/': v ^/ s = v *^ (1 / s)
+
+T2688.hs:8:22:
+ Could not deduce (v ~ s)
+ from the context (VectorSpace v s)
+ bound by the class declaration for `VectorSpace'
+ at T2688.hs:(5,1)-(8,23)
+ `v' is a rigid type variable bound by
+ the class declaration for `VectorSpace' at T2688.hs:5:19
+ `s' is a rigid type variable bound by
+ the class declaration for `VectorSpace' at T2688.hs:5:21
+ In the second argument of `(/)', namely `s'
+ In the second argument of `(*^)', namely `(1 / s)'
+ In the expression: v *^ (1 / s)
diff --git a/testsuite/tests/typecheck/should_fail/T2714.hs b/testsuite/tests/typecheck/should_fail/T2714.hs
index 80f838c37c..b27acb735b 100644
--- a/testsuite/tests/typecheck/should_fail/T2714.hs
+++ b/testsuite/tests/typecheck/should_fail/T2714.hs
@@ -1,4 +1,4 @@
-{-# LANGUAGE ScopedTypeVariables #-}
+{-# LANGUAGE ScopedTypeVariables, RankNTypes #-}
-- Trac #2714
diff --git a/testsuite/tests/typecheck/should_fail/T2714.stderr b/testsuite/tests/typecheck/should_fail/T2714.stderr
index da355fc738..481a3bdb15 100644
--- a/testsuite/tests/typecheck/should_fail/T2714.stderr
+++ b/testsuite/tests/typecheck/should_fail/T2714.stderr
@@ -1,22 +1,20 @@
-
-T2714.hs:8:5:
- Couldn't match type `a' with `f0 b'
- `a' is a rigid type variable bound by
- the type signature for f :: ((a -> b) -> b) -> forall c. c -> a
- at T2714.hs:8:1
- Expected type: ((a -> b) -> b) -> c -> a
- Actual type: ((a -> b) -> b) -> f0 (a -> b) -> f0 b
- In the expression: ffmap
- In an equation for `f': f = ffmap
-
-T2714.hs:8:5:
- Couldn't match type `c' with `f0 (f0 b -> b)'
- `c' is a rigid type variable bound by
- the type signature for f :: ((a -> b) -> b) -> c -> a
- at T2714.hs:8:1
- Expected type: c
- Actual type: f0 (a -> b)
- Expected type: ((a -> b) -> b) -> c -> a
- Actual type: ((a -> b) -> b) -> f0 (a -> b) -> f0 b
- In the expression: ffmap
- In an equation for `f': f = ffmap
+
+T2714.hs:8:5:
+ Couldn't match type `a' with `f0 b'
+ `a' is a rigid type variable bound by
+ the type signature for f :: ((a -> b) -> b) -> forall c. c -> a
+ at T2714.hs:7:6
+ Expected type: ((a -> b) -> b) -> c -> a
+ Actual type: ((a -> b) -> b) -> f0 (a -> b) -> f0 b
+ In the expression: ffmap
+ In an equation for `f': f = ffmap
+
+T2714.hs:8:5:
+ Couldn't match type `c' with `f0 (f0 b -> b)'
+ `c' is a rigid type variable bound by
+ the type signature for f :: ((a -> b) -> b) -> c -> a
+ at T2714.hs:8:1
+ Expected type: ((a -> b) -> b) -> c -> a
+ Actual type: ((a -> b) -> b) -> f0 (a -> b) -> f0 b
+ In the expression: ffmap
+ In an equation for `f': f = ffmap
diff --git a/testsuite/tests/typecheck/should_fail/T2846b.stderr b/testsuite/tests/typecheck/should_fail/T2846b.stderr
index 79527c15b7..56b1a13ab0 100644
--- a/testsuite/tests/typecheck/should_fail/T2846b.stderr
+++ b/testsuite/tests/typecheck/should_fail/T2846b.stderr
@@ -1,7 +1,6 @@
T2846b.hs:5:5:
- No instance for (Show (Num a0 => a0))
- arising from a use of `show'
+ No instance for (Show (Num a0 => a0)) arising from a use of `show'
Possible fix: add an instance declaration for (Show (Num a0 => a0))
In the expression: show ([1, 2, 3] :: [Num a => a])
In an equation for `f': f = show ([1, 2, 3] :: [Num a => a])
diff --git a/testsuite/tests/typecheck/should_fail/T2994.stderr b/testsuite/tests/typecheck/should_fail/T2994.stderr
index 1e3bd0a434..feceed77b5 100644
--- a/testsuite/tests/typecheck/should_fail/T2994.stderr
+++ b/testsuite/tests/typecheck/should_fail/T2994.stderr
@@ -1,14 +1,10 @@
T2994.hs:11:10:
- `MonadReader Int' is not applied to enough type arguments
- Expected kind `Constraint',
- but `MonadReader Int' has kind `* -> Constraint'
+ Expecting one more argument to `MonadReader Int'
In the instance declaration for `MonadReader Int'
T2994.hs:13:23:
- `Reader' r' is not applied to enough type arguments
- The first argument of `MonadReader' should have kind `*',
- but `Reader' r' has kind `* -> *'
+ Expecting one more argument to `Reader' r'
In the instance declaration for `MonadReader (Reader' r)'
T2994.hs:15:10:
diff --git a/testsuite/tests/typecheck/should_fail/T3102.stderr b/testsuite/tests/typecheck/should_fail/T3102.stderr
index cf3483870d..0cf9d52187 100644
--- a/testsuite/tests/typecheck/should_fail/T3102.stderr
+++ b/testsuite/tests/typecheck/should_fail/T3102.stderr
@@ -7,3 +7,4 @@ T3102.hs:11:12:
Actual type: ((?p::Int) => a0) -> String
In the first argument of `f', namely `t'
In the expression: f t
+ In an equation for `result': result = f t
diff --git a/testsuite/tests/typecheck/should_fail/T3468.stderr b/testsuite/tests/typecheck/should_fail/T3468.stderr
index 45400bc1ea..ac040ba05d 100644
--- a/testsuite/tests/typecheck/should_fail/T3468.stderr
+++ b/testsuite/tests/typecheck/should_fail/T3468.stderr
@@ -2,9 +2,11 @@
T3468.hs-boot:3:6:
Type constructor `Tool' has conflicting definitions in the module and its hs-boot file
Main module: data Tool d
+ No C type associated
RecFlag Recursive
= F :: forall d a r. a -> Tool d Stricts: _
FamilyInstance: none
Boot file: abstract(False) Tool
+ No C type associated
RecFlag NonRecursive
FamilyInstance: none
diff --git a/testsuite/tests/typecheck/should_fail/T3540.stderr b/testsuite/tests/typecheck/should_fail/T3540.stderr
index fb711cd5a1..6b85638e1e 100644
--- a/testsuite/tests/typecheck/should_fail/T3540.stderr
+++ b/testsuite/tests/typecheck/should_fail/T3540.stderr
@@ -1,25 +1,20 @@
T3540.hs:4:12:
Predicate `a ~ Int' used as a type
- Expected kind `??', but `a ~ Int' has kind `Constraint'
In the type signature for `thing': thing :: a ~ Int
T3540.hs:7:20:
Predicate `a ~ Int' used as a type
- Expected kind `?', but `a ~ Int' has kind `Constraint'
In the type signature for `thing1': thing1 :: Int -> (a ~ Int)
T3540.hs:10:13:
Predicate `a ~ Int' used as a type
- Expected kind `??', but `a ~ Int' has kind `Constraint'
In the type signature for `thing2': thing2 :: (a ~ Int) -> Int
T3540.hs:13:12:
Predicate `?dude :: Int' used as a type
- Expected kind `??', but `?dude :: Int' has kind `Constraint'
In the type signature for `thing3': thing3 :: (?dude :: Int) -> Int
T3540.hs:16:11:
Predicate `Eq a' used as a type
- Expected kind `??', but `Eq a' has kind `Constraint'
In the type signature for `thing4': thing4 :: (Eq a) -> Int
diff --git a/testsuite/tests/typecheck/should_fail/T3592.stderr b/testsuite/tests/typecheck/should_fail/T3592.stderr
index ce3eb90195..477c3aa675 100644
--- a/testsuite/tests/typecheck/should_fail/T3592.stderr
+++ b/testsuite/tests/typecheck/should_fail/T3592.stderr
@@ -1,14 +1,14 @@
-
-T3592.hs:8:5:
- No instance for (Show (T a))
- arising from a use of `show'
- Possible fix: add an instance declaration for (Show (T a))
- In the expression: show
- In an equation for `f': f = show
-
-T3592.hs:11:12:
- No instance for (Show a)
- arising from a use of `x'
- In the first argument of `show', namely `x'
- In the expression: show x
- In an equation for `g': g x = show x
+
+T3592.hs:8:5:
+ No instance for (Show (T a)) arising from a use of `show'
+ Possible fix: add an instance declaration for (Show (T a))
+ In the expression: show
+ In an equation for `f': f = show
+
+T3592.hs:11:7:
+ No instance for (Show a) arising from a use of `show'
+ Possible fix:
+ add (Show a) to the context of
+ the type signature for g :: T a -> String
+ In the expression: show x
+ In an equation for `g': g x = show x
diff --git a/testsuite/tests/typecheck/should_fail/T3613.stderr b/testsuite/tests/typecheck/should_fail/T3613.stderr
index feb46416df..1373b7143d 100644
--- a/testsuite/tests/typecheck/should_fail/T3613.stderr
+++ b/testsuite/tests/typecheck/should_fail/T3613.stderr
@@ -1,12 +1,16 @@
T3613.hs:14:20:
- Couldn't match expected type `Maybe a0' with actual type `IO ()'
+ Couldn't match type `IO' with `Maybe'
+ Expected type: Maybe ()
+ Actual type: IO ()
In the first argument of `(>>)', namely `bar'
In the first argument of `fooThen', namely `(bar >> undefined)'
In the expression: fooThen (bar >> undefined)
T3613.hs:17:24:
- Couldn't match expected type `Maybe a0' with actual type `IO ()'
+ Couldn't match type `IO' with `Maybe'
+ Expected type: Maybe ()
+ Actual type: IO ()
In a stmt of a 'do' block: bar
In the first argument of `fooThen', namely
`(do { bar;
diff --git a/testsuite/tests/typecheck/should_fail/T3950.stderr b/testsuite/tests/typecheck/should_fail/T3950.stderr
index 8eb1ab9a4d..876a4997c5 100644
--- a/testsuite/tests/typecheck/should_fail/T3950.stderr
+++ b/testsuite/tests/typecheck/should_fail/T3950.stderr
@@ -1,7 +1,10 @@
T3950.hs:15:13:
- Couldn't match expected type `Id p' with actual type `Id p0 x0'
+ Couldn't match kind `* -> *' with `*'
Expected type: w (Id p)
Actual type: Sealed (Id p0 x0)
+ Kind incompatibility when matching types:
+ w :: (* -> * -> *) -> *
+ Sealed :: (* -> *) -> *
In the first argument of `Just', namely rp'
In the expression: Just rp'
diff --git a/testsuite/tests/typecheck/should_fail/T3966.stderr b/testsuite/tests/typecheck/should_fail/T3966.stderr
index b24087ff8b..9b081582a3 100644
--- a/testsuite/tests/typecheck/should_fail/T3966.stderr
+++ b/testsuite/tests/typecheck/should_fail/T3966.stderr
@@ -1,9 +1,8 @@
-
-T3966.hs:6:16:
- Warning: Ignoring unusable UNPACK pragma on the
- first argument of `Foo'
- In the definition of data constructor `Foo'
- In the data type declaration for `Foo'
-
-<no location info>:
-Failing due to -Werror.
+
+T3966.hs:6:16: Warning:
+ Ignoring unusable UNPACK pragma on the first argument of `Foo'
+ In the definition of data constructor `Foo'
+ In the data declaration for `Foo'
+
+<no location info>:
+Failing due to -Werror.
diff --git a/testsuite/tests/typecheck/should_fail/T5236.stderr b/testsuite/tests/typecheck/should_fail/T5236.stderr
index 76f6de2353..a2da439690 100644
--- a/testsuite/tests/typecheck/should_fail/T5236.stderr
+++ b/testsuite/tests/typecheck/should_fail/T5236.stderr
@@ -1,20 +1,10 @@
-
-T5236.hs:17:5:
- Couldn't match type `A' with `B'
- When using functional dependencies to combine
- Id A A,
- arising from the dependency `a -> b'
- in the instance declaration at T5236.hs:10:10
- Id A B, arising from a use of `loop' at T5236.hs:17:5-8
- In the expression: loop
- In an equation for `f': f = loop
-
-T5236.hs:17:5:
- Couldn't match type `B' with `A'
- When using functional dependencies to combine
- Id B B,
- arising from the dependency `b -> a'
- in the instance declaration at T5236.hs:11:10
- Id A B, arising from a use of `loop' at T5236.hs:17:5-8
- In the expression: loop
- In an equation for `f': f = loop
+
+T5236.hs:17:5:
+ Couldn't match type `A' with `B'
+ When using functional dependencies to combine
+ Id A A,
+ arising from the dependency `a -> b'
+ in the instance declaration at T5236.hs:10:10
+ Id A B, arising from a use of `loop' at T5236.hs:17:5-8
+ In the expression: loop
+ In an equation for `f': f = loop
diff --git a/testsuite/tests/typecheck/should_fail/T5300.stderr b/testsuite/tests/typecheck/should_fail/T5300.stderr
index bc3bc066b5..272f8b5762 100644
--- a/testsuite/tests/typecheck/should_fail/T5300.stderr
+++ b/testsuite/tests/typecheck/should_fail/T5300.stderr
@@ -1,8 +1,13 @@
T5300.hs:15:9:
- Ambiguous type variable `c0' in the constraint:
- (C1 a1 b2 c0) arising from a use of `f1'
- Probable fix: add a type signature that fixes these type variable(s)
+ Could not deduce (C1 a1 b2 c0) arising from a use of `f1'
+ from the context (Monad m, C1 a1 b1 c1, C2 a2 b2 c2)
+ bound by the type signature for
+ f2 :: (Monad m, C1 a1 b1 c1, C2 a2 b2 c2) =>
+ a1 -> StateT (T b2) m a2
+ at T5300.hs:14:7-69
+ The type variable `c0' is ambiguous
+ Possible fix: add a type signature that fixes these type variable(s)
In the first argument of `(>>=)', namely `f1 fm'
In the expression: f1 fm >>= return . undefined
In an equation for `f2': f2 fm = f1 fm >>= return . undefined
diff --git a/testsuite/tests/typecheck/should_fail/T5573a.stderr b/testsuite/tests/typecheck/should_fail/T5573a.stderr
index f11c123951..52aa99ae71 100644
--- a/testsuite/tests/typecheck/should_fail/T5573a.stderr
+++ b/testsuite/tests/typecheck/should_fail/T5573a.stderr
@@ -1,16 +1,16 @@
T5573a.hs:11:16:
- Couldn't match kind `??' against `(#)'
+ Couldn't match kind `ArgKind' against `(#)'
Kind incompatibility when matching types:
- t0 :: ??
- (# t1, t2 #) :: (#)
+ t0 :: ArgKind
+ (# t0, t1 #) :: (#)
In the expression: (# True, False #)
In the expression: (# x, (# True, False #) #)
T5573a.hs:14:6:
- Couldn't match kind `??' against `(#)'
+ Couldn't match kind `ArgKind' against `(#)'
Kind incompatibility when matching types:
- t0 :: ??
- (# t1, t2 #) :: (#)
+ t0 :: ArgKind
+ (# t0, t1 #) :: (#)
In the pattern: (# x, y #)
In an equation for `foo3': foo3 (# x, y #) = x
diff --git a/testsuite/tests/typecheck/should_fail/T5573b.stderr b/testsuite/tests/typecheck/should_fail/T5573b.stderr
index 8cc09c266a..b2cbf6d0eb 100644
--- a/testsuite/tests/typecheck/should_fail/T5573b.stderr
+++ b/testsuite/tests/typecheck/should_fail/T5573b.stderr
@@ -1,7 +1,7 @@
-
-T5573b.hs:6:22:
- Kind mis-match
- The first argument of an unboxed tuple should have kind `??',
- but `(# Double#, Double# #)' has kind `(#)'
- In the type signature for `foo':
- foo :: Double# -> (# (# Double#, Double# #), Double# #)
+
+T5573b.hs:6:22:
+ Kind mis-match
+ The first argument of an unboxed tuple should have kind `ArgKind',
+ but `(# Double#, Double# #)' has kind `(#)'
+ In the type signature for `foo':
+ foo :: Double# -> (# (# Double#, Double# #), Double# #)
diff --git a/testsuite/tests/typecheck/should_fail/T5684.hs b/testsuite/tests/typecheck/should_fail/T5684.hs
new file mode 100755
index 0000000000..a8c72595d0
--- /dev/null
+++ b/testsuite/tests/typecheck/should_fail/T5684.hs
@@ -0,0 +1,62 @@
+{-# OPTIONS -XFunctionalDependencies -XUndecidableInstances -XFlexibleInstances #-}
+
+module T5684 where
+
+class B a b | a -> b where
+ op :: a -> b -> ()
+
+class A a
+
+instance A b => B Bool b
+
+{- This used to be a bug in various versions of GHC <= 7.2.2
+ The source of the problem is the kicking out of inert Solved goals back to
+ the worklist, which violated our invariant that when two constraints of the
+ same class meet (workitem-inert) then the combination (Given-Wanted) is impossible.
+ Actually it turns our that it is possible. The order in which the constraints appear
+ below is important so we add two combinations to make sure that the testcase is
+ order-insensitive. -}
+
+flop1 = [ op False False -- (3) Creates a functional dependency which kicks the solved out
+ -- back in the worklist. Next time round the solved workitem
+ -- meets the wanted from stage (2) and boom, the assertion fails!
+
+ , op 'c' undefined -- (2) Creates a ([W] B Char beta) permanently in inerts
+ , op True undefined -- (1) Creates ([W] B Bool alpha)
+ -- which immediately becomes [S] B Bool alpha
+ ]
+
+flop2 = [ op False False
+ , op True undefined
+ , op 'c' undefined
+ ]
+
+
+flop3 = [ op 'c' undefined
+ , op True undefined
+ , op False False
+ ]
+
+flop4 = [ op 'c' undefined
+ , op False False
+ , op True undefined
+ ]
+
+
+flop5 = [ op True undefined
+ , op 'c' undefined
+ , op False False
+ ]
+
+
+flop6 = [ op True undefined
+ , op False False
+ , op 'c' undefined
+ ]
+
+
+{- Now, in HEAD we no longer have cached GivenSolved goals in the inerts and hence
+ this situation can no longer appear. If a Given gets kicked out it is only because
+ it got rewritten by a given equality: Notice that since Givens now never contain
+ plain old unification variables (since they are not GivenSolveds!) they can never be
+ rewritten by a spontaneously solved either! So our invariant now holds. -}
diff --git a/testsuite/tests/typecheck/should_fail/T5684.stderr b/testsuite/tests/typecheck/should_fail/T5684.stderr
new file mode 100644
index 0000000000..0aa8b17973
--- /dev/null
+++ b/testsuite/tests/typecheck/should_fail/T5684.stderr
@@ -0,0 +1,10 @@
+
+T5684.hs:53:12:
+ No instance for (A Bool)
+ arising from a use of `op'
+ Possible fix: add an instance declaration for (A Bool)
+ In the expression: op False False
+ In the expression:
+ [op True undefined, op False False, op 'c' undefined]
+ In an equation for `flop6':
+ flop6 = [op True undefined, op False False, op 'c' undefined]
diff --git a/testsuite/tests/typecheck/should_fail/T5689.hs b/testsuite/tests/typecheck/should_fail/T5689.hs
new file mode 100644
index 0000000000..8e023fec54
--- /dev/null
+++ b/testsuite/tests/typecheck/should_fail/T5689.hs
@@ -0,0 +1,15 @@
+{-# LANGUAGE ScopedTypeVariables #-}
+
+module Main where
+import Data.IORef
+
+main :: IO ()
+main = do { (r :: IORef (t -> t)) <- newIORef id
+ -- r <- newIORef i -- => Type-check error
+
+ ; writeIORef r (\v -> if v then False else True)
+
+ ; c <- readIORef r
+
+ ; print $ c True
+ ; print $ c 1234 }
diff --git a/testsuite/tests/typecheck/should_fail/T5689.stderr b/testsuite/tests/typecheck/should_fail/T5689.stderr
new file mode 100644
index 0000000000..28f9c01940
--- /dev/null
+++ b/testsuite/tests/typecheck/should_fail/T5689.stderr
@@ -0,0 +1,7 @@
+
+T5689.hs:10:36:
+ Couldn't match expected type `t' with actual type `Bool'
+ In the expression: v
+ In the expression: if v then False else True
+ In the second argument of `writeIORef', namely
+ `(\ v -> if v then False else True)'
diff --git a/testsuite/tests/typecheck/should_fail/T5858.hs b/testsuite/tests/typecheck/should_fail/T5858.hs
new file mode 100644
index 0000000000..01a991fb44
--- /dev/null
+++ b/testsuite/tests/typecheck/should_fail/T5858.hs
@@ -0,0 +1,11 @@
+{-# LANGUAGE FlexibleInstances, GADTs #-}
+module T5858 where
+
+class InferOverloaded a where
+ infer :: a -> String
+
+-- instance (t1 ~ String, t2 ~ String) => InferOverloaded (t1,t2) where
+instance (t1 ~ String) => InferOverloaded (t1,t1) where
+ infer = show . fst
+
+foo = infer ([],[])
diff --git a/testsuite/tests/typecheck/should_fail/T5858.stderr b/testsuite/tests/typecheck/should_fail/T5858.stderr
new file mode 100644
index 0000000000..5e0cf1521b
--- /dev/null
+++ b/testsuite/tests/typecheck/should_fail/T5858.stderr
@@ -0,0 +1,13 @@
+
+T5858.hs:11:7:
+ No instance for (InferOverloaded ([a0], [a1]))
+ arising from a use of `infer'
+ The type variables `a0', `a1' are ambiguous
+ Possible fix: add a type signature that fixes these type variable(s)
+ Note: there is a potential instance available:
+ instance t1 ~ String => InferOverloaded (t1, t1)
+ -- Defined at T5858.hs:8:10
+ Possible fix:
+ add an instance declaration for (InferOverloaded ([a0], [a1]))
+ In the expression: infer ([], [])
+ In an equation for `foo': foo = infer ([], [])
diff --git a/testsuite/tests/typecheck/should_fail/T5957.hs b/testsuite/tests/typecheck/should_fail/T5957.hs
new file mode 100644
index 0000000000..c168a00f3a
--- /dev/null
+++ b/testsuite/tests/typecheck/should_fail/T5957.hs
@@ -0,0 +1,4 @@
+module T5957 where
+
+flex :: Int -> Show a => a -> String
+flex i a = show a ++ show i
diff --git a/testsuite/tests/typecheck/should_fail/T5957.stderr b/testsuite/tests/typecheck/should_fail/T5957.stderr
new file mode 100644
index 0000000000..c0bc12a7a2
--- /dev/null
+++ b/testsuite/tests/typecheck/should_fail/T5957.stderr
@@ -0,0 +1,6 @@
+
+T5957.hs:3:9:
+ Illegal polymorphic or qualified type: Show a => a -> String
+ Perhaps you intended to use -XRankNTypes or -XRank2Types
+ In the type signature for `flex':
+ flex :: Int -> Show a => a -> String
diff --git a/testsuite/tests/typecheck/should_fail/T6001.hs b/testsuite/tests/typecheck/should_fail/T6001.hs
new file mode 100644
index 0000000000..fd918aa598
--- /dev/null
+++ b/testsuite/tests/typecheck/should_fail/T6001.hs
@@ -0,0 +1,9 @@
+{-# LANGUAGE InstanceSigs #-}
+
+module T6001 where
+
+data DayKind = Work | Rest
+
+instance Num DayKind where
+ fromInteger :: Int -> DayKind
+ fromInteger = undefined
diff --git a/testsuite/tests/typecheck/should_fail/T6001.stderr b/testsuite/tests/typecheck/should_fail/T6001.stderr
new file mode 100644
index 0000000000..7fe591d54f
--- /dev/null
+++ b/testsuite/tests/typecheck/should_fail/T6001.stderr
@@ -0,0 +1,5 @@
+
+T6001.hs:8:18:
+ Method signature does not match class; it should be
+ fromInteger :: Integer -> DayKind
+ In the instance declaration for `Num DayKind'
diff --git a/testsuite/tests/typecheck/should_fail/all.T b/testsuite/tests/typecheck/should_fail/all.T
index 91f759d134..42e0364371 100644
--- a/testsuite/tests/typecheck/should_fail/all.T
+++ b/testsuite/tests/typecheck/should_fail/all.T
@@ -67,7 +67,7 @@ test('tcfail076', normal, compile_fail, [''])
test('tcfail077', normal, compile_fail, [''])
test('tcfail078', normal, compile_fail, [''])
test('tcfail079', only_compiler_types(['ghc']), compile_fail, [''])
-test('tcfail080', if_compiler_type('ghc', expect_fail), compile_fail, [''])
+test('tcfail080', normal, compile_fail, [''])
test('tcfail082', normal, compile_fail, [''])
test('tcfail083', normal, compile_fail, [''])
test('tcfail084', normal, compile_fail, [''])
@@ -145,7 +145,7 @@ test('tcfail154', normal, compile_fail, [''])
test('tcfail155', normal, compile_fail, [''])
test('tcfail156', normal, compile_fail, [''])
test('tcfail157', normal, compile_fail, [''])
-test('tcfail158', expect_fail, compile_fail, [''])
+test('tcfail158', normal, compile_fail, [''])
test('tcfail159', normal, compile_fail, [''])
test('tcfail160', normal, compile_fail, [''])
test('tcfail161', normal, compile_fail, [''])
@@ -269,3 +269,8 @@ test('T5570', normal, compile_fail, [''])
test('T5573a', normal, compile_fail, [''])
test('T5573b', normal, compile_fail, [''])
test('T5691', normal, compile_fail, [''])
+test('T5689', normal, compile_fail, [''])
+test('T5684', normal, compile_fail, [''])
+test('T5858', normal, compile_fail, [''])
+test('T5957', normal, compile_fail, [''])
+test('T6001', normal, compile_fail, [''])
diff --git a/testsuite/tests/typecheck/should_fail/mc19.stderr b/testsuite/tests/typecheck/should_fail/mc19.stderr
index f77da6fe4b..7015d47d74 100644
--- a/testsuite/tests/typecheck/should_fail/mc19.stderr
+++ b/testsuite/tests/typecheck/should_fail/mc19.stderr
@@ -1,7 +1,10 @@
mc19.hs:10:31:
- Occurs check: cannot construct the infinite type: a0 = [a0]
+ Couldn't match type `a' with `[a]'
+ `a' is a rigid type variable bound by
+ a type expected by the context: [a] -> [a] at mc19.hs:10:26
Expected type: [a] -> [a]
- Actual type: [a0] -> [[a0]]
+ Actual type: [a] -> [[a]]
In the expression: inits
In a stmt of a monad comprehension: then inits
+ In the expression: [x | x <- [3, 2, 1], then inits]
diff --git a/testsuite/tests/typecheck/should_fail/mc20.hs b/testsuite/tests/typecheck/should_fail/mc20.hs
index 4dd0fe2fe5..efdfd5b453 100644
--- a/testsuite/tests/typecheck/should_fail/mc20.hs
+++ b/testsuite/tests/typecheck/should_fail/mc20.hs
@@ -1,13 +1,15 @@
--- Checks that the ordering constraint on the implicit groupWith is respected
+-- Checks that the ordering constraint on the groupWith function is respected
{-# OPTIONS_GHC -XMonadComprehensions -XTransformListComp #-}
module ShouldFail where
+import GHC.Exts (groupWith)
+
data Unorderable = Gnorf | Pinky | Brain
foo = [ ()
| x <- [Gnorf, Brain]
- , then group by x
+ , then group by x using groupWith
]
diff --git a/testsuite/tests/typecheck/should_fail/mc20.stderr b/testsuite/tests/typecheck/should_fail/mc20.stderr
index 1214b6ac17..ee9bb4b39f 100644
--- a/testsuite/tests/typecheck/should_fail/mc20.stderr
+++ b/testsuite/tests/typecheck/should_fail/mc20.stderr
@@ -1,8 +1,9 @@
-mc20.hs:12:9:
+mc20.hs:14:31:
No instance for (Ord Unorderable)
- arising from a use of `Control.Monad.Group.mgroupWith'
+ arising from a use of `groupWith'
Possible fix: add an instance declaration for (Ord Unorderable)
- In the expression: Control.Monad.Group.mgroupWith
- In a stmt of a monad comprehension: then group by x
- In the expression: [() | x <- [Gnorf, Brain], then group by x]
+ In the expression: groupWith
+ In a stmt of a monad comprehension: then group by x using groupWith
+ In the expression:
+ [() | x <- [Gnorf, Brain], then group by x using groupWith]
diff --git a/testsuite/tests/typecheck/should_fail/mc21.stderr b/testsuite/tests/typecheck/should_fail/mc21.stderr
index c712b4b4be..bd7bac1dd9 100644
--- a/testsuite/tests/typecheck/should_fail/mc21.stderr
+++ b/testsuite/tests/typecheck/should_fail/mc21.stderr
@@ -4,6 +4,7 @@ mc21.hs:12:26:
`a' is a rigid type variable bound by
a type expected by the context: [a] -> [[a]] at mc21.hs:12:9
Expected type: [a] -> [[a]]
- Actual type: [[a]] -> [[a]]
+ Actual type: [a] -> [a]
In the return type of a call of `take'
In the expression: take 5
+ In a stmt of a monad comprehension: then group using take 5
diff --git a/testsuite/tests/typecheck/should_fail/mc22.stderr b/testsuite/tests/typecheck/should_fail/mc22.stderr
index 943b7624f0..e4247abcc1 100644
--- a/testsuite/tests/typecheck/should_fail/mc22.stderr
+++ b/testsuite/tests/typecheck/should_fail/mc22.stderr
@@ -1,9 +1,33 @@
+mc22.hs:8:11:
+ No instance for (Num (t0 [Char])) arising from a use of `+'
+ Possible fix: add an instance declaration for (Num (t0 [Char]))
+ In the expression: x + 1
+ In the expression:
+ [x + 1 | x <- ["Hello", "World"], then group using take 5]
+ In an equation for `foo':
+ foo = [x + 1 | x <- ["Hello", "World"], then group using take 5]
+
+mc22.hs:10:9:
+ No instance for (Functor t0) arising from a use of `fmap'
+ The type variable `t0' is ambiguous
+ Possible fix: add a type signature that fixes these type variable(s)
+ Note: there are several potential instances:
+ instance Functor ((,) a) -- Defined in `GHC.Base'
+ instance Functor ((->) r) -- Defined in `GHC.Base'
+ instance Functor IO -- Defined in `GHC.Base'
+ ...plus one other
+ In the expression: fmap
+ In a stmt of a monad comprehension: then group using take 5
+ In the expression:
+ [x + 1 | x <- ["Hello", "World"], then group using take 5]
+
mc22.hs:10:26:
Couldn't match type `a' with `t0 a'
`a' is a rigid type variable bound by
a type expected by the context: [a] -> [t0 a] at mc22.hs:10:9
Expected type: [a] -> [t0 a]
- Actual type: [t0 a] -> [t0 a]
+ Actual type: [a] -> [a]
In the return type of a call of `take'
In the expression: take 5
+ In a stmt of a monad comprehension: then group using take 5
diff --git a/testsuite/tests/typecheck/should_fail/mc23.stderr b/testsuite/tests/typecheck/should_fail/mc23.stderr
index ec632f8bdb..b3bad44e47 100644
--- a/testsuite/tests/typecheck/should_fail/mc23.stderr
+++ b/testsuite/tests/typecheck/should_fail/mc23.stderr
@@ -1,8 +1,49 @@
+mc23.hs:9:15:
+ No instance for (Enum b0)
+ arising from the arithmetic sequence `1 .. 10'
+ The type variable `b0' is ambiguous
+ Possible fix: add a type signature that fixes these type variable(s)
+ Note: there are several potential instances:
+ instance Enum Double -- Defined in `GHC.Float'
+ instance Enum Float -- Defined in `GHC.Float'
+ instance Enum () -- Defined in `GHC.Enum'
+ ...plus five others
+ In a stmt of a monad comprehension: x <- [1 .. 10]
+ In a stmt of a monad comprehension: then take 5 by x
+ In the expression: [x | x <- [1 .. 10], then take 5 by x]
+
+mc23.hs:9:16:
+ No instance for (Num b0) arising from the literal `1'
+ The type variable `b0' is ambiguous
+ Possible fix: add a type signature that fixes these type variable(s)
+ Note: there are several potential instances:
+ instance Num Double -- Defined in `GHC.Float'
+ instance Num Float -- Defined in `GHC.Float'
+ instance Num Int -- Defined in `GHC.Num'
+ ...plus one other
+ In the expression: 1
+ In a stmt of a monad comprehension: x <- [1 .. 10]
+ In a stmt of a monad comprehension: then take 5 by x
+
+mc23.hs:9:24:
+ No instance for (Monad t0)
+ arising from a statement in a monad comprehension
+ The type variable `t0' is ambiguous
+ Possible fix: add a type signature that fixes these type variable(s)
+ Note: there are several potential instances:
+ instance Monad ((->) r) -- Defined in `GHC.Base'
+ instance Monad IO -- Defined in `GHC.Base'
+ instance Monad [] -- Defined in `GHC.Base'
+ In a stmt of a monad comprehension: then take 5 by x
+ In the expression: [x | x <- [1 .. 10], then take 5 by x]
+ In an equation for `z': z = [x | x <- [1 .. 10], then take 5 by x]
+
mc23.hs:9:29:
- Couldn't match expected type `a -> t0' with actual type `[a0]'
- Expected type: (a -> t0) -> [a] -> t1 a
+ Couldn't match type `[a0]' with `a -> b0'
+ Expected type: (a -> b0) -> [a] -> t0 a
Actual type: [a0] -> [a0]
In the return type of a call of `take'
Probable cause: `take' is applied to too many arguments
In the expression: take 5
+ In a stmt of a monad comprehension: then take 5 by x
diff --git a/testsuite/tests/typecheck/should_fail/mc24.stderr b/testsuite/tests/typecheck/should_fail/mc24.stderr
index bee1592659..30d664a3fe 100644
--- a/testsuite/tests/typecheck/should_fail/mc24.stderr
+++ b/testsuite/tests/typecheck/should_fail/mc24.stderr
@@ -1,8 +1,52 @@
+mc24.hs:9:14:
+ No instance for (Enum a1)
+ arising from the arithmetic sequence `1 .. 10'
+ The type variable `a1' is ambiguous
+ Possible fix: add a type signature that fixes these type variable(s)
+ Note: there are several potential instances:
+ instance Enum Double -- Defined in `GHC.Float'
+ instance Enum Float -- Defined in `GHC.Float'
+ instance Enum () -- Defined in `GHC.Enum'
+ ...plus five others
+ In a stmt of a monad comprehension: x <- [1 .. 10]
+ In a stmt of a monad comprehension: then group by x using take 2
+ In the expression:
+ [length x | x <- [1 .. 10], then group by x using take 2]
+
+mc24.hs:9:15:
+ No instance for (Num a1) arising from the literal `1'
+ The type variable `a1' is ambiguous
+ Possible fix: add a type signature that fixes these type variable(s)
+ Note: there are several potential instances:
+ instance Num Double -- Defined in `GHC.Float'
+ instance Num Float -- Defined in `GHC.Float'
+ instance Num Int -- Defined in `GHC.Num'
+ ...plus one other
+ In the expression: 1
+ In a stmt of a monad comprehension: x <- [1 .. 10]
+ In a stmt of a monad comprehension: then group by x using take 2
+
+mc24.hs:10:9:
+ No instance for (Monad t0)
+ arising from a statement in a monad comprehension
+ The type variable `t0' is ambiguous
+ Possible fix: add a type signature that fixes these type variable(s)
+ Note: there are several potential instances:
+ instance Monad ((->) r) -- Defined in `GHC.Base'
+ instance Monad IO -- Defined in `GHC.Base'
+ instance Monad [] -- Defined in `GHC.Base'
+ In a stmt of a monad comprehension: then group by x using take 2
+ In the expression:
+ [length x | x <- [1 .. 10], then group by x using take 2]
+ In an equation for `foo':
+ foo = [length x | x <- [1 .. 10], then group by x using take 2]
+
mc24.hs:10:31:
- Couldn't match expected type `a -> t0' with actual type `[a0]'
- Expected type: (a -> t0) -> [a] -> t1 (t2 a)
+ Couldn't match type `[a0]' with `a -> a1'
+ Expected type: (a -> a1) -> [a] -> t0 [a]
Actual type: [a0] -> [a0]
In the return type of a call of `take'
Probable cause: `take' is applied to too many arguments
In the expression: take 2
+ In a stmt of a monad comprehension: then group by x using take 2
diff --git a/testsuite/tests/typecheck/should_fail/mc25.stderr b/testsuite/tests/typecheck/should_fail/mc25.stderr
index 7016fad147..8caa47b3b4 100644
--- a/testsuite/tests/typecheck/should_fail/mc25.stderr
+++ b/testsuite/tests/typecheck/should_fail/mc25.stderr
@@ -1,7 +1,48 @@
+mc25.hs:9:15:
+ No instance for (Enum t0)
+ arising from the arithmetic sequence `1 .. 10'
+ The type variable `t0' is ambiguous
+ Possible fix: add a type signature that fixes these type variable(s)
+ Note: there are several potential instances:
+ instance Enum Double -- Defined in `GHC.Float'
+ instance Enum Float -- Defined in `GHC.Float'
+ instance Enum () -- Defined in `GHC.Enum'
+ ...plus five others
+ In a stmt of a monad comprehension: x <- [1 .. 10]
+ In a stmt of a monad comprehension: then group by x using take
+ In the expression: [x | x <- [1 .. 10], then group by x using take]
+
+mc25.hs:9:16:
+ No instance for (Num t0) arising from the literal `1'
+ The type variable `t0' is ambiguous
+ Possible fix: add a type signature that fixes these type variable(s)
+ Note: there are several potential instances:
+ instance Num Double -- Defined in `GHC.Float'
+ instance Num Float -- Defined in `GHC.Float'
+ instance Num Int -- Defined in `GHC.Num'
+ ...plus one other
+ In the expression: 1
+ In a stmt of a monad comprehension: x <- [1 .. 10]
+ In a stmt of a monad comprehension: then group by x using take
+
+mc25.hs:9:24:
+ No instance for (Functor t1) arising from a use of `fmap'
+ The type variable `t1' is ambiguous
+ Possible fix: add a type signature that fixes these type variable(s)
+ Note: there are several potential instances:
+ instance Functor ((,) a) -- Defined in `GHC.Base'
+ instance Functor ((->) r) -- Defined in `GHC.Base'
+ instance Functor IO -- Defined in `GHC.Base'
+ ...plus one other
+ In the expression: fmap
+ In a stmt of a monad comprehension: then group by x using take
+ In the expression: [x | x <- [1 .. 10], then group by x using take]
+
mc25.hs:9:46:
- Couldn't match expected type `a -> t0' with actual type `Int'
- Expected type: (a -> t0) -> [a] -> t1 (t2 a)
- Actual type: Int -> [a0] -> [a0]
+ Couldn't match type `Int' with `a -> t0'
+ Expected type: (a -> t0) -> [a] -> [t1 a]
+ Actual type: Int -> [a] -> [a]
In the expression: take
In a stmt of a monad comprehension: then group by x using take
+ In the expression: [x | x <- [1 .. 10], then group by x using take]
diff --git a/testsuite/tests/typecheck/should_fail/tcfail001.stderr b/testsuite/tests/typecheck/should_fail/tcfail001.stderr
index 5fadcf6271..7c9b8ba27b 100644
--- a/testsuite/tests/typecheck/should_fail/tcfail001.stderr
+++ b/testsuite/tests/typecheck/should_fail/tcfail001.stderr
@@ -1,5 +1,6 @@
tcfail001.hs:9:2:
+ Couldn't match expected type `[t0] -> [a0]' with actual type `[a]'
The equation(s) for `op' have one argument,
but its type `[a]' has none
In the instance declaration for `A [a]'
diff --git a/testsuite/tests/typecheck/should_fail/tcfail005.stderr b/testsuite/tests/typecheck/should_fail/tcfail005.stderr
index 8a158f5c8d..66e6fa9f69 100644
--- a/testsuite/tests/typecheck/should_fail/tcfail005.stderr
+++ b/testsuite/tests/typecheck/should_fail/tcfail005.stderr
@@ -1,5 +1,5 @@
tcfail005.hs:3:9:
- Couldn't match expected type `[t0]' with actual type `(t1, t2)'
+ Couldn't match expected type `[t0]' with actual type `(t1, Char)'
In the expression: (1, 'a')
In a pattern binding: (h : i) = (1, 'a')
diff --git a/testsuite/tests/typecheck/should_fail/tcfail008.stderr b/testsuite/tests/typecheck/should_fail/tcfail008.stderr
index 2d31ee6034..b50f77e05e 100644
--- a/testsuite/tests/typecheck/should_fail/tcfail008.stderr
+++ b/testsuite/tests/typecheck/should_fail/tcfail008.stderr
@@ -1,4 +1,21 @@
+tcfail008.hs:3:5:
+ No instance for (Num a0)
+ arising from the literal `1'
+ The type variable `a0' is ambiguous
+ Possible cause: the monomorphism restriction applied to the following:
+ o :: [a0] (bound at tcfail008.hs:3:1)
+ Probable fix: give these definition(s) an explicit type signature
+ or use -XNoMonomorphismRestriction
+ Note: there are several potential instances:
+ instance Num Double -- Defined in `GHC.Float'
+ instance Num Float -- Defined in `GHC.Float'
+ instance Num Int -- Defined in `GHC.Num'
+ ...plus one other
+ In the first argument of `(:)', namely `1'
+ In the expression: 1 : 2
+ In an equation for `o': o = 1 : 2
+
tcfail008.hs:3:7:
No instance for (Num [a0])
arising from the literal `2'
diff --git a/testsuite/tests/typecheck/should_fail/tcfail010.stderr b/testsuite/tests/typecheck/should_fail/tcfail010.stderr
index 20a6d222a7..5f22a3a20e 100644
--- a/testsuite/tests/typecheck/should_fail/tcfail010.stderr
+++ b/testsuite/tests/typecheck/should_fail/tcfail010.stderr
@@ -1,8 +1,7 @@
-
-tcfail010.hs:3:17:
- No instance for (Num [t0])
- arising from a use of `+'
- Possible fix: add an instance declaration for (Num [t0])
- In the expression: z + 2
- In the expression: \ (y : z) -> z + 2
- In an equation for `q': q = \ (y : z) -> z + 2
+
+tcfail010.hs:3:17:
+ No instance for (Num [t0]) arising from a use of `+'
+ Possible fix: add an instance declaration for (Num [t0])
+ In the expression: z + 2
+ In the expression: \ (y : z) -> z + 2
+ In an equation for `q': q = \ (y : z) -> z + 2
diff --git a/testsuite/tests/typecheck/should_fail/tcfail016.stderr b/testsuite/tests/typecheck/should_fail/tcfail016.stderr
index 6420918b37..6c1fa9ce62 100644
--- a/testsuite/tests/typecheck/should_fail/tcfail016.stderr
+++ b/testsuite/tests/typecheck/should_fail/tcfail016.stderr
@@ -1,7 +1,16 @@
tcfail016.hs:9:20:
- Couldn't match expected type `Expr t0'
- with actual type `AnnExpr t0'
+ Couldn't match type `(t0, Expr t0)' with `Expr t0'
+ Expected type: Expr t0
+ Actual type: AnnExpr t0
In the first argument of `g', namely `e1'
In the first argument of `(++)', namely `(g e1)'
In the expression: (g e1) ++ (g e2)
+
+tcfail016.hs:9:28:
+ Couldn't match type `(t0, Expr t0)' with `Expr t0'
+ Expected type: Expr t0
+ Actual type: AnnExpr t0
+ In the first argument of `g', namely `e2'
+ In the second argument of `(++)', namely `(g e2)'
+ In the expression: (g e1) ++ (g e2)
diff --git a/testsuite/tests/typecheck/should_fail/tcfail017.stderr b/testsuite/tests/typecheck/should_fail/tcfail017.stderr
index 4f09814afa..9ac3c7d64f 100644
--- a/testsuite/tests/typecheck/should_fail/tcfail017.stderr
+++ b/testsuite/tests/typecheck/should_fail/tcfail017.stderr
@@ -4,7 +4,5 @@ tcfail017.hs:10:10:
arising from the superclasses of an instance declaration
from the context (B a)
bound by the instance declaration at tcfail017.hs:10:10-23
- Possible fix:
- add (C [a]) to the context of the instance declaration
- or add an instance declaration for (C [a])
+ Possible fix: add an instance declaration for (C [a])
In the instance declaration for `B [a]'
diff --git a/testsuite/tests/typecheck/should_fail/tcfail018.stderr b/testsuite/tests/typecheck/should_fail/tcfail018.stderr
index 67ee509537..54df69888e 100644
--- a/testsuite/tests/typecheck/should_fail/tcfail018.stderr
+++ b/testsuite/tests/typecheck/should_fail/tcfail018.stderr
@@ -1,7 +1,6 @@
tcfail018.hs:5:10:
- No instance for (Num [t0])
- arising from the literal `1'
+ No instance for (Num [t0]) arising from the literal `1'
Possible fix: add an instance declaration for (Num [t0])
In the expression: 1
In a pattern binding: (a : []) = 1
diff --git a/testsuite/tests/typecheck/should_fail/tcfail020.stderr b/testsuite/tests/typecheck/should_fail/tcfail020.stderr
index 3e0df9e42b..f15fd98084 100644
--- a/testsuite/tests/typecheck/should_fail/tcfail020.stderr
+++ b/testsuite/tests/typecheck/should_fail/tcfail020.stderr
@@ -4,7 +4,5 @@ tcfail020.hs:10:10:
arising from the superclasses of an instance declaration
from the context (A a)
bound by the instance declaration at tcfail020.hs:10:10-23
- Possible fix:
- add (A [a]) to the context of the instance declaration
- or add an instance declaration for (A [a])
+ Possible fix: add an instance declaration for (A [a])
In the instance declaration for `B [a]'
diff --git a/testsuite/tests/typecheck/should_fail/tcfail028.stderr b/testsuite/tests/typecheck/should_fail/tcfail028.stderr
index e6d06db31d..6b573bfa07 100644
--- a/testsuite/tests/typecheck/should_fail/tcfail028.stderr
+++ b/testsuite/tests/typecheck/should_fail/tcfail028.stderr
@@ -1,7 +1,6 @@
-
-tcfail028.hs:4:17:
- `A a' is not applied to enough type arguments
- Expected kind `??', but `A a' has kind `k0 -> *'
- In the type `A a'
- In the definition of data constructor `B'
- In the data type declaration for `A'
+
+tcfail028.hs:4:17:
+ Expecting one more argument to `A a'
+ In the type `A a'
+ In the definition of data constructor `B'
+ In the data declaration for `A'
diff --git a/testsuite/tests/typecheck/should_fail/tcfail034.stderr b/testsuite/tests/typecheck/should_fail/tcfail034.stderr
index db8e148eb9..38b04c10c6 100644
--- a/testsuite/tests/typecheck/should_fail/tcfail034.stderr
+++ b/testsuite/tests/typecheck/should_fail/tcfail034.stderr
@@ -3,7 +3,7 @@ tcfail034.hs:17:13:
Could not deduce (Integral a) arising from a use of `mod'
from the context (Num a, Eq a)
bound by the type signature for test :: (Num a, Eq a) => a -> Bool
- at tcfail034.hs:17:1-25
+ at tcfail034.hs:16:7-32
Possible fix:
add (Integral a) to the context of
the type signature for test :: (Num a, Eq a) => a -> Bool
diff --git a/testsuite/tests/typecheck/should_fail/tcfail036.stderr b/testsuite/tests/typecheck/should_fail/tcfail036.stderr
index 3f42189bbe..7cce75c5d2 100644
--- a/testsuite/tests/typecheck/should_fail/tcfail036.stderr
+++ b/testsuite/tests/typecheck/should_fail/tcfail036.stderr
@@ -5,7 +5,5 @@ tcfail036.hs:6:10:
instance Num NUM -- Defined at tcfail036.hs:8:10
tcfail036.hs:9:13:
- `Num' is not applied to enough type arguments
- The first argument of `Eq' should have kind `*',
- but `Num' has kind `* -> Constraint'
+ Expecting one more argument to `Num'
In the instance declaration for `Eq Num'
diff --git a/testsuite/tests/typecheck/should_fail/tcfail040.stderr b/testsuite/tests/typecheck/should_fail/tcfail040.stderr
index 19020b609d..8ee305f03f 100644
--- a/testsuite/tests/typecheck/should_fail/tcfail040.stderr
+++ b/testsuite/tests/typecheck/should_fail/tcfail040.stderr
@@ -1,8 +1,10 @@
-
-tcfail040.hs:19:5:
- Ambiguous type variable `a0' in the constraint:
- (ORD a0) arising from a use of `<<'
- Probable fix: add a type signature that fixes these type variable(s)
- In the first argument of `(===)', namely `(<<)'
- In the expression: (<<) === (<<)
- In an equation for `f': f = (<<) === (<<)
+
+tcfail040.hs:19:5:
+ No instance for (ORD a0) arising from a use of `<<'
+ The type variable `a0' is ambiguous
+ Possible fix: add a type signature that fixes these type variable(s)
+ Note: there is a potential instance available:
+ instance ORD (a -> b) -- Defined at tcfail040.hs:17:10
+ In the first argument of `(===)', namely `(<<)'
+ In the expression: (<<) === (<<)
+ In an equation for `f': f = (<<) === (<<)
diff --git a/testsuite/tests/typecheck/should_fail/tcfail043.stderr b/testsuite/tests/typecheck/should_fail/tcfail043.stderr
index 7cd3faf53e..3e52e69c56 100644
--- a/testsuite/tests/typecheck/should_fail/tcfail043.stderr
+++ b/testsuite/tests/typecheck/should_fail/tcfail043.stderr
@@ -1,12 +1,13 @@
tcfail043.hs:38:17:
- Ambiguous type variable `a0' in the constraints:
- (Ord_ a0) arising from a use of `gt' at tcfail043.hs:38:17-18
- (Eq_ a0) arising from a use of `eq' at tcfail043.hs:40:25-26
+ No instance for (Ord_ a0) arising from a use of `gt'
+ The type variable `a0' is ambiguous
Possible cause: the monomorphism restriction applied to the following:
search :: a0 -> [a0] -> Bool (bound at tcfail043.hs:37:1)
Probable fix: give these definition(s) an explicit type signature
or use -XNoMonomorphismRestriction
+ Note: there is a potential instance available:
+ instance Ord_ Int -- Defined at tcfail043.hs:34:10
In the expression: gt (hd bs) a
In the expression:
if gt (hd bs) a then
@@ -19,3 +20,21 @@ tcfail043.hs:38:17:
False
else
if eq a (hd bs) then True else search a (tl bs)
+
+tcfail043.hs:40:25:
+ No instance for (Eq_ a0) arising from a use of `eq'
+ The type variable `a0' is ambiguous
+ Possible cause: the monomorphism restriction applied to the following:
+ search :: a0 -> [a0] -> Bool (bound at tcfail043.hs:37:1)
+ Probable fix: give these definition(s) an explicit type signature
+ or use -XNoMonomorphismRestriction
+ Note: there are several potential instances:
+ instance Eq_ a => Eq_ [a] -- Defined at tcfail043.hs:23:10
+ instance Eq_ Int -- Defined at tcfail043.hs:20:10
+ In the expression: eq a (hd bs)
+ In the expression: if eq a (hd bs) then True else search a (tl bs)
+ In the expression:
+ if gt (hd bs) a then
+ False
+ else
+ if eq a (hd bs) then True else search a (tl bs)
diff --git a/testsuite/tests/typecheck/should_fail/tcfail057.stderr b/testsuite/tests/typecheck/should_fail/tcfail057.stderr
index 4c815b6bb1..da5a480f8c 100644
--- a/testsuite/tests/typecheck/should_fail/tcfail057.stderr
+++ b/testsuite/tests/typecheck/should_fail/tcfail057.stderr
@@ -1,5 +1,4 @@
tcfail057.hs:5:7:
Predicate `RealFrac a' used as a type
- Expected kind `??', but `RealFrac a' has kind `Constraint'
In the type signature for `f': f :: (RealFrac a) -> a -> a
diff --git a/testsuite/tests/typecheck/should_fail/tcfail058.stderr b/testsuite/tests/typecheck/should_fail/tcfail058.stderr
index 46ce26c174..6214d27498 100644
--- a/testsuite/tests/typecheck/should_fail/tcfail058.stderr
+++ b/testsuite/tests/typecheck/should_fail/tcfail058.stderr
@@ -1,5 +1,4 @@
tcfail058.hs:6:7:
- `Array a' is not applied to enough type arguments
- Expected kind `Constraint', but `Array a' has kind `* -> *'
+ Expecting one more argument to `Array a'
In the type signature for `f': f :: Array a => a -> b
diff --git a/testsuite/tests/typecheck/should_fail/tcfail063.stderr b/testsuite/tests/typecheck/should_fail/tcfail063.stderr
index 8111ae8485..62e3f17ca8 100644
--- a/testsuite/tests/typecheck/should_fail/tcfail063.stderr
+++ b/testsuite/tests/typecheck/should_fail/tcfail063.stderr
@@ -1,5 +1,4 @@
tcfail063.hs:6:9:
- `Num' is not applied to enough type arguments
- Expected kind `Constraint', but `Num' has kind `* -> Constraint'
+ Expecting one more argument to `Num'
In the type signature for `moby': moby :: Num => Int -> a -> Int
diff --git a/testsuite/tests/typecheck/should_fail/tcfail065.stderr b/testsuite/tests/typecheck/should_fail/tcfail065.stderr
index da855d3e6f..fbe7e545c1 100644
--- a/testsuite/tests/typecheck/should_fail/tcfail065.stderr
+++ b/testsuite/tests/typecheck/should_fail/tcfail065.stderr
@@ -1,12 +1,11 @@
-tcfail065.hs:29:18:
- Couldn't match type `x1' with `x'
+tcfail065.hs:29:20:
+ Couldn't match expected type `x' with actual type `x1'
+ `x' is a rigid type variable bound by
+ the instance declaration at tcfail065.hs:28:10
`x1' is a rigid type variable bound by
the type signature for setX :: x1 -> X x -> X x
at tcfail065.hs:29:3
- `x' is a rigid type variable bound by
- the instance declaration at tcfail065.hs:28:18
- Expected type: X x1
- Actual type: X x
- In the return type of a call of `X'
+ In the first argument of `X', namely `x'
In the expression: X x
+ In an equation for `setX': setX x (X _) = X x
diff --git a/testsuite/tests/typecheck/should_fail/tcfail067.stderr b/testsuite/tests/typecheck/should_fail/tcfail067.stderr
index 039a4e61f9..9e47a0bebc 100644
--- a/testsuite/tests/typecheck/should_fail/tcfail067.stderr
+++ b/testsuite/tests/typecheck/should_fail/tcfail067.stderr
@@ -1,17 +1,21 @@
-tcfail067.hs:1:14:
- Warning: -XDatatypeContexts is deprecated: It was widely considered a misfeature, and has been removed from the Haskell language.
+tcfail067.hs:1:14: Warning:
+ -XDatatypeContexts is deprecated: It was widely considered a misfeature, and has been removed from the Haskell language.
tcfail067.hs:12:16:
- No instance for (Ord a)
- arising from a use of `SubRange'
+ No instance for (Ord a) arising from a use of `SubRange'
+ Possible fix:
+ add (Ord a) to the context of
+ the type signature for subRangeValue :: SubRange a -> a
In the pattern: SubRange (lower, upper) value
In an equation for `subRangeValue':
subRangeValue (SubRange (lower, upper) value) = value
tcfail067.hs:15:11:
- No instance for (Ord a)
- arising from a use of `SubRange'
+ No instance for (Ord a) arising from a use of `SubRange'
+ Possible fix:
+ add (Ord a) to the context of
+ the type signature for subRange :: SubRange a -> (a, a)
In the pattern: SubRange r value
In an equation for `subRange': subRange (SubRange r value) = r
@@ -20,7 +24,7 @@ tcfail067.hs:46:12:
from the context (Show a)
bound by the type signature for
showRange :: Show a => SubRange a -> String
- at tcfail067.hs:(46,1)-(47,58)
+ at tcfail067.hs:45:14-43
Possible fix:
add (Ord a) to the context of
the type signature for showRange :: Show a => SubRange a -> String
@@ -30,12 +34,11 @@ tcfail067.hs:46:12:
= show value ++ " :" ++ show lower ++ ".." ++ show upper
tcfail067.hs:61:12:
- Could not deduce (Ord a, Show a)
- arising from a use of `numSubRangeNegate'
+ Could not deduce (Show a) arising from a use of `numSubRangeNegate'
from the context (Num a)
bound by the instance declaration at tcfail067.hs:60:10-34
Possible fix:
- add (Ord a, Show a) to the context of the instance declaration
+ add (Show a) to the context of the instance declaration
In the expression: numSubRangeNegate
In an equation for `negate': negate = numSubRangeNegate
In the instance declaration for `Num (SubRange a)'
@@ -59,7 +62,7 @@ tcfail067.hs:74:5:
bound by the type signature for
numSubRangeBinOp :: Num a =>
(a -> a -> a) -> SubRange a -> SubRange a -> SubRange a
- at tcfail067.hs:(73,1)-(76,53)
+ at tcfail067.hs:(71,21)-(72,58)
Possible fix:
add (Ord a) to the context of
the type signature for
diff --git a/testsuite/tests/typecheck/should_fail/tcfail068.stderr b/testsuite/tests/typecheck/should_fail/tcfail068.stderr
index 52adc6c582..bf6e1448bd 100644
--- a/testsuite/tests/typecheck/should_fail/tcfail068.stderr
+++ b/testsuite/tests/typecheck/should_fail/tcfail068.stderr
@@ -1,43 +1,46 @@
tcfail068.hs:14:9:
- Could not deduce (s ~ s1)
+ Could not deduce (s1 ~ s)
from the context (Constructed a)
bound by the type signature for
itgen :: Constructed a => (Int, Int) -> a -> IndTree s a
- at tcfail068.hs:(12,1)-(14,31)
- `s' is a rigid type variable bound by
- the type signature for
- itgen :: Constructed a => (Int, Int) -> a -> IndTree s a
- at tcfail068.hs:12:1
+ at tcfail068.hs:11:10-55
`s1' is a rigid type variable bound by
a type expected by the context: GHC.ST.ST s1 (IndTree s a)
at tcfail068.hs:13:9
+ `s' is a rigid type variable bound by
+ the type signature for
+ itgen :: Constructed a => (Int, Int) -> a -> IndTree s a
+ at tcfail068.hs:11:10
Expected type: GHC.ST.ST s1 (IndTree s a)
- Actual type: GHC.ST.ST s (STArray s (Int, Int) a)
+ Actual type: GHC.ST.ST s1 (STArray s1 (Int, Int) a)
In the return type of a call of `newSTArray'
In the first argument of `runST', namely
`(newSTArray ((1, 1), n) x)'
+ In the expression: runST (newSTArray ((1, 1), n) x)
-tcfail068.hs:20:9:
+tcfail068.hs:19:21:
Could not deduce (s ~ s1)
from the context (Constructed a)
bound by the type signature for
itiap :: Constructed a =>
(Int, Int) -> (a -> a) -> IndTree s a -> IndTree s a
- at tcfail068.hs:(17,1)-(21,19)
+ at tcfail068.hs:16:10-75
`s' is a rigid type variable bound by
the type signature for
itiap :: Constructed a =>
(Int, Int) -> (a -> a) -> IndTree s a -> IndTree s a
- at tcfail068.hs:17:1
+ at tcfail068.hs:16:10
`s1' is a rigid type variable bound by
a type expected by the context: GHC.ST.ST s1 (IndTree s a)
at tcfail068.hs:18:9
- Expected type: GHC.ST.ST s1 ()
- Actual type: GHC.ST.ST s ()
- In the return type of a call of `writeSTArray'
- In the first argument of `(>>)', namely
- `writeSTArray arr i (f val)'
+ Expected type: STArray s1 (Int, Int) a
+ Actual type: IndTree s a
+ In the first argument of `readSTArray', namely `arr'
+ In the first argument of `(>>=)', namely `readSTArray arr i'
+ In the first argument of `runST', namely
+ `(readSTArray arr i
+ >>= \ val -> writeSTArray arr i (f val) >> return arr)'
tcfail068.hs:24:35:
Could not deduce (s ~ s1)
@@ -45,12 +48,12 @@ tcfail068.hs:24:35:
bound by the type signature for
itrap :: Constructed a =>
((Int, Int), (Int, Int)) -> (a -> a) -> IndTree s a -> IndTree s a
- at tcfail068.hs:(24,1)-(32,41)
+ at tcfail068.hs:23:10-87
`s' is a rigid type variable bound by
the type signature for
itrap :: Constructed a =>
((Int, Int), (Int, Int)) -> (a -> a) -> IndTree s a -> IndTree s a
- at tcfail068.hs:24:1
+ at tcfail068.hs:23:10
`s1' is a rigid type variable bound by
a type expected by the context: GHC.ST.ST s1 (IndTree s a)
at tcfail068.hs:24:29
@@ -58,6 +61,7 @@ tcfail068.hs:24:35:
Actual type: GHC.ST.ST s (IndTree s a)
In the return type of a call of itrap'
In the first argument of `runST', namely `(itrap' i k)'
+ In the expression: runST (itrap' i k)
tcfail068.hs:36:46:
Could not deduce (s ~ s1)
@@ -71,7 +75,7 @@ tcfail068.hs:36:46:
-> c
-> IndTree s b
-> (c, IndTree s b)
- at tcfail068.hs:(36,1)-(45,66)
+ at tcfail068.hs:(34,15)-(35,62)
`s' is a rigid type variable bound by
the type signature for
itrapstate :: Constructed b =>
@@ -82,7 +86,7 @@ tcfail068.hs:36:46:
-> c
-> IndTree s b
-> (c, IndTree s b)
- at tcfail068.hs:36:1
+ at tcfail068.hs:34:15
`s1' is a rigid type variable bound by
a type expected by the context: GHC.ST.ST s1 (c, IndTree s b)
at tcfail068.hs:36:40
@@ -90,3 +94,4 @@ tcfail068.hs:36:46:
Actual type: GHC.ST.ST s (c, IndTree s b)
In the return type of a call of itrapstate'
In the first argument of `runST', namely `(itrapstate' i k s)'
+ In the expression: runST (itrapstate' i k s)
diff --git a/testsuite/tests/typecheck/should_fail/tcfail070.stderr b/testsuite/tests/typecheck/should_fail/tcfail070.stderr
index 31dd66e77f..76e9feb515 100644
--- a/testsuite/tests/typecheck/should_fail/tcfail070.stderr
+++ b/testsuite/tests/typecheck/should_fail/tcfail070.stderr
@@ -1,5 +1,5 @@
-
-tcfail070.hs:15:15:
- `[Int]' is applied to too many type arguments
- In the type `[Int] Bool'
- In the type synonym declaration for `State'
+
+tcfail070.hs:15:15:
+ `[Int]' is applied to too many type arguments
+ In the type `[Int] Bool'
+ In the type declaration for `State'
diff --git a/testsuite/tests/typecheck/should_fail/tcfail072.stderr b/testsuite/tests/typecheck/should_fail/tcfail072.stderr
index 469e75849a..b56f162919 100644
--- a/testsuite/tests/typecheck/should_fail/tcfail072.stderr
+++ b/testsuite/tests/typecheck/should_fail/tcfail072.stderr
@@ -1,14 +1,17 @@
tcfail072.hs:23:13:
- Ambiguous type variable `p0' in the constraint:
- (Ord p0) arising from a use of `g'
- Probable fix: add a type signature that fixes these type variable(s)
- In the expression: g A
- In an equation for `g': g (B _ _) = g A
-
-tcfail072.hs:23:13:
- Ambiguous type variable `q0' in the constraint:
- (Ord q0) arising from a use of `g'
- Probable fix: add a type signature that fixes these type variable(s)
+ Could not deduce (Ord q0) arising from a use of `g'
+ from the context (Ord p, Ord q)
+ bound by the type signature for
+ g :: (Ord p, Ord q) => AB p q -> Bool
+ at tcfail072.hs:22:6-38
+ The type variable `q0' is ambiguous
+ Possible fix: add a type signature that fixes these type variable(s)
+ Note: there are several potential instances:
+ instance Ord () -- Defined in `GHC.Classes'
+ instance (Ord a, Ord b) => Ord (a, b) -- Defined in `GHC.Classes'
+ instance (Ord a, Ord b, Ord c) => Ord (a, b, c)
+ -- Defined in `GHC.Classes'
+ ...plus 23 others
In the expression: g A
In an equation for `g': g (B _ _) = g A
diff --git a/testsuite/tests/typecheck/should_fail/tcfail076.stderr b/testsuite/tests/typecheck/should_fail/tcfail076.stderr
index 9c380de958..4ca4cf403b 100644
--- a/testsuite/tests/typecheck/should_fail/tcfail076.stderr
+++ b/testsuite/tests/typecheck/should_fail/tcfail076.stderr
@@ -11,3 +11,4 @@ tcfail076.hs:18:82:
Actual type: m res
In the return type of a call of `cont'
In the expression: cont a
+ In the first argument of `KContT', namely `(\ cont' -> cont a)'
diff --git a/testsuite/tests/typecheck/should_fail/tcfail079.stderr b/testsuite/tests/typecheck/should_fail/tcfail079.stderr
index 149f9b2171..a7b9b7cb3f 100644
--- a/testsuite/tests/typecheck/should_fail/tcfail079.stderr
+++ b/testsuite/tests/typecheck/should_fail/tcfail079.stderr
@@ -1,7 +1,6 @@
tcfail079.hs:9:27:
Expecting a lifted type, but `Int#' is unlifted
- Expected kind `*', but `Int#' has kind `#'
In the type `Int#'
In the definition of data constructor `Unboxed'
In the newtype declaration for `Unboxed'
diff --git a/testsuite/tests/typecheck/should_fail/tcfail080.hs b/testsuite/tests/typecheck/should_fail/tcfail080.hs
index b2a62cea54..fa77ad8242 100644
--- a/testsuite/tests/typecheck/should_fail/tcfail080.hs
+++ b/testsuite/tests/typecheck/should_fail/tcfail080.hs
@@ -11,7 +11,9 @@
-- Of course, it'd be hard to fill in the "..." in this particular
-- case, but that relies on observations about the form of the types
-- of the class methods, surely beyond what a compiler should do.
--- That's why GHC accepts it
+--
+-- Still, the type is ambiguous because there's nothing to fix 'c'
+
module ShouldFail where
diff --git a/testsuite/tests/typecheck/should_fail/tcfail080.stderr b/testsuite/tests/typecheck/should_fail/tcfail080.stderr
index e69de29bb2..520078682b 100644
--- a/testsuite/tests/typecheck/should_fail/tcfail080.stderr
+++ b/testsuite/tests/typecheck/should_fail/tcfail080.stderr
@@ -0,0 +1,14 @@
+
+tcfail080.hs:27:1:
+ Could not deduce (Collection c0 a)
+ arising from the ambiguity check for `q'
+ from the context (Collection c a)
+ bound by the inferred type for `q': Collection c a => a -> Bool
+ at tcfail080.hs:27:1-27
+ The type variable `c0' is ambiguous
+ Possible fix: add a type signature that fixes these type variable(s)
+ When checking that `q'
+ has the inferred type `forall (c :: * -> *) a.
+ Collection c a =>
+ a -> Bool'
+ Probable cause: the inferred type is ambiguous
diff --git a/testsuite/tests/typecheck/should_fail/tcfail086.stderr b/testsuite/tests/typecheck/should_fail/tcfail086.stderr
index 4b221839ea..1aa420928d 100644
--- a/testsuite/tests/typecheck/should_fail/tcfail086.stderr
+++ b/testsuite/tests/typecheck/should_fail/tcfail086.stderr
@@ -1,6 +1,6 @@
-
-tcfail086.hs:6:38:
- Can't make a derived instance of `Eq Ex':
- Constructor `Ex' must have a Haskell-98 type
- Possible fix: use a standalone deriving declaration instead
- In the data type declaration for `Ex'
+
+tcfail086.hs:6:38:
+ Can't make a derived instance of `Eq Ex':
+ Constructor `Ex' must have a Haskell-98 type
+ Possible fix: use a standalone deriving declaration instead
+ In the data declaration for `Ex'
diff --git a/testsuite/tests/typecheck/should_fail/tcfail087.stderr b/testsuite/tests/typecheck/should_fail/tcfail087.stderr
index b9e9d2fa6a..3c244ddc8b 100644
--- a/testsuite/tests/typecheck/should_fail/tcfail087.stderr
+++ b/testsuite/tests/typecheck/should_fail/tcfail087.stderr
@@ -1,7 +1,7 @@
-
-tcfail087.hs:6:14:
- Kind mis-match
- Expected kind `??', but `(# Int, Int #)' has kind `(#)'
- In the type `(# Int, Int #)'
- In the definition of data constructor `Ex'
- In the data type declaration for `Ex'
+
+tcfail087.hs:6:14:
+ Kind mis-match
+ Expected kind `ArgKind', but `(# Int, Int #)' has kind `(#)'
+ In the type `(# Int, Int #)'
+ In the definition of data constructor `Ex'
+ In the data declaration for `Ex'
diff --git a/testsuite/tests/typecheck/should_fail/tcfail094.stderr b/testsuite/tests/typecheck/should_fail/tcfail094.stderr
index 8cd67b632b..c5dcc172d5 100644
--- a/testsuite/tests/typecheck/should_fail/tcfail094.stderr
+++ b/testsuite/tests/typecheck/should_fail/tcfail094.stderr
@@ -1,2 +1,3 @@
-tcfail094.hs:7:14: parse error on input `1'
+tcfail094.hs:7:14:
+ Illegal literal in type (use -XDataKinds to enable): 1
diff --git a/testsuite/tests/typecheck/should_fail/tcfail097.stderr b/testsuite/tests/typecheck/should_fail/tcfail097.stderr
index 967b172bb9..2fabae4b40 100644
--- a/testsuite/tests/typecheck/should_fail/tcfail097.stderr
+++ b/testsuite/tests/typecheck/should_fail/tcfail097.stderr
@@ -1,6 +1,6 @@
-
-tcfail097.hs:5:1:
- Ambiguous constraint `Eq a'
- At least one of the forall'd type variables mentioned by the constraint
- must be reachable from the type after the '=>'
- In the type signature for `f': f :: Eq a => Int -> Int
+
+tcfail097.hs:5:6:
+ Ambiguous constraint `Eq a'
+ At least one of the forall'd type variables mentioned by the constraint
+ must be reachable from the type after the '=>'
+ In the type signature for `f': f :: Eq a => Int -> Int
diff --git a/testsuite/tests/typecheck/should_fail/tcfail099.stderr b/testsuite/tests/typecheck/should_fail/tcfail099.stderr
index f97c5a1161..aa7eb99197 100644
--- a/testsuite/tests/typecheck/should_fail/tcfail099.stderr
+++ b/testsuite/tests/typecheck/should_fail/tcfail099.stderr
@@ -1,13 +1,13 @@
tcfail099.hs:9:20:
- Couldn't match type `t' with `a'
- `t' is a rigid type variable bound by
- the inferred type of call :: DS -> t -> Int at tcfail099.hs:9:1
+ Couldn't match expected type `a' with actual type `t'
`a' is a rigid type variable bound by
a pattern with constructor
C :: forall a. (a -> Int) -> DS,
in an equation for `call'
at tcfail099.hs:9:7
+ `t' is a rigid type variable bound by
+ the inferred type of call :: DS -> t -> Int at tcfail099.hs:9:1
In the first argument of `f', namely `arg'
In the expression: f arg
In an equation for `call': call (C f) arg = f arg
diff --git a/testsuite/tests/typecheck/should_fail/tcfail100.stderr b/testsuite/tests/typecheck/should_fail/tcfail100.stderr
index 36ee6f8218..885c8220b9 100644
--- a/testsuite/tests/typecheck/should_fail/tcfail100.stderr
+++ b/testsuite/tests/typecheck/should_fail/tcfail100.stderr
@@ -1,4 +1,4 @@
-
-tcfail100.hs:7:1:
- Type synonym `A' should have 1 argument, but has been given none
- In the type synonym declaration for `B'
+
+tcfail100.hs:7:1:
+ Type synonym `A' should have 1 argument, but has been given none
+ In the type declaration for `B'
diff --git a/testsuite/tests/typecheck/should_fail/tcfail101.stderr b/testsuite/tests/typecheck/should_fail/tcfail101.stderr
index 0d82b50750..5cca6de0a3 100644
--- a/testsuite/tests/typecheck/should_fail/tcfail101.stderr
+++ b/testsuite/tests/typecheck/should_fail/tcfail101.stderr
@@ -1,4 +1,4 @@
-tcfail101.hs:9:1:
+tcfail101.hs:9:6:
Type synonym `A' should have 1 argument, but has been given none
In the type signature for `f': f :: T A
diff --git a/testsuite/tests/typecheck/should_fail/tcfail102.stderr b/testsuite/tests/typecheck/should_fail/tcfail102.stderr
index 792c941081..4c651bf7d4 100644
--- a/testsuite/tests/typecheck/should_fail/tcfail102.stderr
+++ b/testsuite/tests/typecheck/should_fail/tcfail102.stderr
@@ -1,18 +1,14 @@
-
-tcfail102.hs:1:14:
- Warning: -XDatatypeContexts is deprecated: It was widely considered a misfeature, and has been removed from the Haskell language.
-
-tcfail102.hs:9:15:
- Could not deduce (Integral (Ratio a)) arising from a use of `p'
- from the context (Integral a)
- bound by the type signature for
- f :: Integral a => P (Ratio a) -> P (Ratio a)
- at tcfail102.hs:9:1-19
- Possible fix:
- add (Integral (Ratio a)) to the context of
- the type signature for
- f :: Integral a => P (Ratio a) -> P (Ratio a)
- or add an instance declaration for (Integral (Ratio a))
- In the `p' field of a record
- In the expression: x {p = p x}
- In an equation for `f': f x = x {p = p x}
+
+tcfail102.hs:1:14: Warning:
+ -XDatatypeContexts is deprecated: It was widely considered a misfeature, and has been removed from the Haskell language.
+
+tcfail102.hs:9:15:
+ Could not deduce (Integral (Ratio a)) arising from a use of `p'
+ from the context (Integral a)
+ bound by the type signature for
+ f :: Integral a => P (Ratio a) -> P (Ratio a)
+ at tcfail102.hs:8:6-45
+ Possible fix: add an instance declaration for (Integral (Ratio a))
+ In the `p' field of a record
+ In the expression: x {p = p x}
+ In an equation for `f': f x = x {p = p x}
diff --git a/testsuite/tests/typecheck/should_fail/tcfail103.stderr b/testsuite/tests/typecheck/should_fail/tcfail103.stderr
index 17fea5cada..134f36f193 100644
--- a/testsuite/tests/typecheck/should_fail/tcfail103.stderr
+++ b/testsuite/tests/typecheck/should_fail/tcfail103.stderr
@@ -1,11 +1,12 @@
-tcfail103.hs:15:13:
+tcfail103.hs:15:23:
Couldn't match type `t' with `s'
`t' is a rigid type variable bound by
- the type signature for f :: ST t Int at tcfail103.hs:11:1
+ the type signature for f :: ST t Int at tcfail103.hs:10:5
`s' is a rigid type variable bound by
- the type signature for g :: ST s Int at tcfail103.hs:15:9
- Expected type: ST s Int
- Actual type: ST t Int
- In the return type of a call of `readSTRef'
+ the type signature for g :: ST s Int at tcfail103.hs:13:14
+ Expected type: STRef s Int
+ Actual type: STRef t Int
+ In the first argument of `readSTRef', namely `v'
In the expression: readSTRef v
+ In an equation for `g': g = readSTRef v
diff --git a/testsuite/tests/typecheck/should_fail/tcfail104.stderr b/testsuite/tests/typecheck/should_fail/tcfail104.stderr
index 8bd4608bde..5e6fc3bb1f 100644
--- a/testsuite/tests/typecheck/should_fail/tcfail104.stderr
+++ b/testsuite/tests/typecheck/should_fail/tcfail104.stderr
@@ -1,6 +1,6 @@
tcfail104.hs:16:19:
- Couldn't match expected type `a0 -> a0'
+ Couldn't match expected type `Char -> Char'
with actual type `forall a. a -> a'
In the expression: x
In the expression: (\ x -> x)
diff --git a/testsuite/tests/typecheck/should_fail/tcfail107.stderr b/testsuite/tests/typecheck/should_fail/tcfail107.stderr
index eae3610c1d..92a89b7544 100644
--- a/testsuite/tests/typecheck/should_fail/tcfail107.stderr
+++ b/testsuite/tests/typecheck/should_fail/tcfail107.stderr
@@ -1,5 +1,5 @@
-tcfail107.hs:13:1:
+tcfail107.hs:13:9:
Type synonym `Const' should have 2 arguments, but has been given 1
In the type signature for `test':
test :: Thing (Const Int) -> Thing (Const Int)
diff --git a/testsuite/tests/typecheck/should_fail/tcfail110.stderr b/testsuite/tests/typecheck/should_fail/tcfail110.stderr
index 9e001cb44e..735ef3c823 100644
--- a/testsuite/tests/typecheck/should_fail/tcfail110.stderr
+++ b/testsuite/tests/typecheck/should_fail/tcfail110.stderr
@@ -1,6 +1,5 @@
tcfail110.hs:8:30:
- `Foo a' is not applied to enough type arguments
- Expected kind `??', but `Foo a' has kind `* -> *'
+ Expecting one more argument to `Foo a'
In the type signature for `bar':
bar :: String -> (forall a. Foo a) -> IO ()
diff --git a/testsuite/tests/typecheck/should_fail/tcfail113.stderr b/testsuite/tests/typecheck/should_fail/tcfail113.stderr
index d4c9208243..68e63c416b 100644
--- a/testsuite/tests/typecheck/should_fail/tcfail113.stderr
+++ b/testsuite/tests/typecheck/should_fail/tcfail113.stderr
@@ -1,18 +1,14 @@
tcfail113.hs:12:7:
- `Maybe' is not applied to enough type arguments
- Expected kind `*', but `Maybe' has kind `* -> *'
- In the type signature for `f':
- f :: [Maybe]
+ Expecting one more argument to `Maybe'
+ In the type signature for `f': f :: [Maybe]
tcfail113.hs:15:8:
Kind mis-match
The first argument of `T' should have kind `* -> *',
but `Int' has kind `*'
- In the type signature for `g':
- g :: T Int
+ In the type signature for `g': g :: T Int
tcfail113.hs:18:6:
`Int' is applied to too many type arguments
- In the type signature for `h':
- h :: Int Int
+ In the type signature for `h': h :: Int Int
diff --git a/testsuite/tests/typecheck/should_fail/tcfail115.stderr b/testsuite/tests/typecheck/should_fail/tcfail115.stderr
index 00352afd9e..89f5178c87 100644
--- a/testsuite/tests/typecheck/should_fail/tcfail115.stderr
+++ b/testsuite/tests/typecheck/should_fail/tcfail115.stderr
@@ -1,8 +1,8 @@
tcfail115.hs:9:24:
- Couldn't match kind `??' against `(#)'
+ Couldn't match kind `ArgKind' against `(#)'
Kind incompatibility when matching types:
- t0 :: ??
+ t0 :: ArgKind
(# Int, Int #) :: (#)
In the expression: (r :: (# Int, Int #))
In a case alternative: r -> (r :: (# Int, Int #))
diff --git a/testsuite/tests/typecheck/should_fail/tcfail117.stderr b/testsuite/tests/typecheck/should_fail/tcfail117.stderr
index 2bc3d7fd63..c7be9199c5 100644
--- a/testsuite/tests/typecheck/should_fail/tcfail117.stderr
+++ b/testsuite/tests/typecheck/should_fail/tcfail117.stderr
@@ -1,13 +1,13 @@
-
-tcfail117.hs:5:32:
- Can't make a derived instance of `Enum N1':
- `N1' must be an enumeration type
- (an enumeration consists of one or more nullary, non-GADT constructors)
- Try -XGeneralizedNewtypeDeriving for GHC's newtype-deriving extension
- In the newtype declaration for `N1'
-
-tcfail117.hs:6:32:
- Can't make a derived instance of `Enum N2':
- `N2' must be an enumeration type
- (an enumeration consists of one or more nullary, non-GADT constructors)
- In the data type declaration for `N2'
+
+tcfail117.hs:5:32:
+ Can't make a derived instance of `Enum N1':
+ `N1' must be an enumeration type
+ (an enumeration consists of one or more nullary, non-GADT constructors)
+ Try -XGeneralizedNewtypeDeriving for GHC's newtype-deriving extension
+ In the newtype declaration for `N1'
+
+tcfail117.hs:6:32:
+ Can't make a derived instance of `Enum N2':
+ `N2' must be an enumeration type
+ (an enumeration consists of one or more nullary, non-GADT constructors)
+ In the data declaration for `N2'
diff --git a/testsuite/tests/typecheck/should_fail/tcfail125.stderr b/testsuite/tests/typecheck/should_fail/tcfail125.stderr
index 988540dad5..addd093bff 100644
--- a/testsuite/tests/typecheck/should_fail/tcfail125.stderr
+++ b/testsuite/tests/typecheck/should_fail/tcfail125.stderr
@@ -1,9 +1,11 @@
-tcfail125.hs:1:14:
- Warning: -XDatatypeContexts is deprecated: It was widely considered a misfeature, and has been removed from the Haskell language.
+tcfail125.hs:1:14: Warning:
+ -XDatatypeContexts is deprecated: It was widely considered a misfeature, and has been removed from the Haskell language.
tcfail125.hs:11:4:
- No instance for (Show a)
- arising from a use of `LiftObs'
+ No instance for (Show a) arising from a use of `LiftObs'
+ Possible fix:
+ add (Show a) to the context of
+ the type signature for f :: Obs a -> String
In the pattern: LiftObs _ _
In an equation for `f': f (LiftObs _ _) = "yes"
diff --git a/testsuite/tests/typecheck/should_fail/tcfail127.stderr b/testsuite/tests/typecheck/should_fail/tcfail127.stderr
index 8fa64fb204..021120314f 100644
--- a/testsuite/tests/typecheck/should_fail/tcfail127.stderr
+++ b/testsuite/tests/typecheck/should_fail/tcfail127.stderr
@@ -1,5 +1,5 @@
-
-tcfail127.hs:3:1:
- Illegal polymorphic or qualified type: Num a => a -> a
- Perhaps you intended to use -XImpredicativeTypes
- In the type signature for `foo': foo :: IO (Num a => a -> a)
+
+tcfail127.hs:3:8:
+ Illegal polymorphic or qualified type: Num a => a -> a
+ Perhaps you intended to use -XImpredicativeTypes
+ In the type signature for `foo': foo :: IO (Num a => a -> a)
diff --git a/testsuite/tests/typecheck/should_fail/tcfail128.stderr b/testsuite/tests/typecheck/should_fail/tcfail128.stderr
index a3c99a9548..0834cc2fbd 100644
--- a/testsuite/tests/typecheck/should_fail/tcfail128.stderr
+++ b/testsuite/tests/typecheck/should_fail/tcfail128.stderr
@@ -2,6 +2,11 @@
tcfail128.hs:18:16:
No instance for (Data.Array.Base.MArray b0 FlatVector IO)
arising from a use of `thaw'
+ The type variable `b0' is ambiguous
+ Possible fix: add a type signature that fixes these type variable(s)
+ Note: there is a potential instance available:
+ instance Data.Array.Base.MArray GHC.IOArray.IOArray e IO
+ -- Defined in `Data.Array.Base'
Possible fix:
add an instance declaration for
(Data.Array.Base.MArray b0 FlatVector IO)
diff --git a/testsuite/tests/typecheck/should_fail/tcfail129.stderr b/testsuite/tests/typecheck/should_fail/tcfail129.stderr
index f9ee8a567d..f6ee765ce4 100644
--- a/testsuite/tests/typecheck/should_fail/tcfail129.stderr
+++ b/testsuite/tests/typecheck/should_fail/tcfail129.stderr
@@ -1,11 +1,11 @@
-tcfail129.hs:12:8:
+tcfail129.hs:12:21:
Type synonym `Foo' should have 1 argument, but has been given none
In an expression type signature: Bar Foo
In the expression: undefined :: Bar Foo
In an equation for `blah': blah = undefined :: Bar Foo
-tcfail129.hs:17:9:
+tcfail129.hs:17:22:
Type synonym `Foo1' should have 1 argument, but has been given none
In an expression type signature: Bar1 Foo1
In the expression: undefined :: Bar1 Foo1
diff --git a/testsuite/tests/typecheck/should_fail/tcfail131.stderr b/testsuite/tests/typecheck/should_fail/tcfail131.stderr
index 548e063929..785801a9a4 100644
--- a/testsuite/tests/typecheck/should_fail/tcfail131.stderr
+++ b/testsuite/tests/typecheck/should_fail/tcfail131.stderr
@@ -3,9 +3,9 @@ tcfail131.hs:7:9:
Could not deduce (b ~ Integer)
from the context (Num b)
bound by the type signature for g :: Num b => b -> b
- at tcfail131.hs:7:3-13
+ at tcfail131.hs:6:8-22
`b' is a rigid type variable bound by
- the type signature for g :: Num b => b -> b at tcfail131.hs:7:3
+ the type signature for g :: Num b => b -> b at tcfail131.hs:6:8
In the return type of a call of `f'
In the expression: f x x
In an equation for `g': g x = f x x
diff --git a/testsuite/tests/typecheck/should_fail/tcfail132.stderr b/testsuite/tests/typecheck/should_fail/tcfail132.stderr
index 14e1f8d98c..bfe7fc3ab7 100644
--- a/testsuite/tests/typecheck/should_fail/tcfail132.stderr
+++ b/testsuite/tests/typecheck/should_fail/tcfail132.stderr
@@ -1,7 +1,7 @@
-
-tcfail132.hs:17:37:
- Kind mis-match
- The first argument of `T' should have kind `* -> * -> * -> *',
- but `Object f' f t' has kind `* -> * -> *'
- In the type `T (Object f' f t) (DUnit t)'
- In the type synonym declaration for `LiftObject'
+
+tcfail132.hs:17:37:
+ Kind mis-match
+ The first argument of `T' should have kind `* -> * -> * -> *',
+ but `Object f' f t' has kind `* -> * -> *'
+ In the type `T (Object f' f t) (DUnit t)'
+ In the type declaration for `LiftObject'
diff --git a/testsuite/tests/typecheck/should_fail/tcfail133.stderr b/testsuite/tests/typecheck/should_fail/tcfail133.stderr
index 2808159950..a0c2ca4ec0 100644
--- a/testsuite/tests/typecheck/should_fail/tcfail133.stderr
+++ b/testsuite/tests/typecheck/should_fail/tcfail133.stderr
@@ -1,6 +1,22 @@
-tcfail133.hs:2:61:
- Warning: -XDatatypeContexts is deprecated: It was widely considered a misfeature, and has been removed from the Haskell language.
+tcfail133.hs:2:61: Warning:
+ -XDatatypeContexts is deprecated: It was widely considered a misfeature, and has been removed from the Haskell language.
+
+tcfail133.hs:68:7:
+ No instance for (Show a0)
+ arising from a use of `show'
+ The type variable `a0' is ambiguous
+ Possible fix: add a type signature that fixes these type variable(s)
+ Note: there are several potential instances:
+ instance Show Zero -- Defined at tcfail133.hs:8:29
+ instance Show One -- Defined at tcfail133.hs:9:28
+ instance (Show a, Show b, Number a, Digit b) => Show (a :@ b)
+ -- Defined at tcfail133.hs:11:54
+ ...plus 27 others
+ In the expression: show
+ In the expression: show $ add (One :@ Zero) (One :@ One)
+ In an equation for `foo':
+ foo = show $ add (One :@ Zero) (One :@ One)
tcfail133.hs:68:14:
No instance for (AddDigit (Zero :@ (One :@ One)) One a0)
diff --git a/testsuite/tests/typecheck/should_fail/tcfail134.stderr b/testsuite/tests/typecheck/should_fail/tcfail134.stderr
index ef8b8b1511..9634300266 100644
--- a/testsuite/tests/typecheck/should_fail/tcfail134.stderr
+++ b/testsuite/tests/typecheck/should_fail/tcfail134.stderr
@@ -1,6 +1,5 @@
tcfail134.hs:5:33:
- `XML' is not applied to enough type arguments
- Expected kind `?', but `XML' has kind `* -> Constraint'
+ Expecting one more argument to `XML'
In the type `a -> XML'
In the class declaration for `XML'
diff --git a/testsuite/tests/typecheck/should_fail/tcfail135.stderr b/testsuite/tests/typecheck/should_fail/tcfail135.stderr
index 37274283ed..4db48083f9 100644
--- a/testsuite/tests/typecheck/should_fail/tcfail135.stderr
+++ b/testsuite/tests/typecheck/should_fail/tcfail135.stderr
@@ -1,6 +1,5 @@
tcfail135.hs:6:23:
- `f' is not applied to enough type arguments
- Expected kind `?', but `f' has kind `k0 -> *'
+ Expecting one more argument to `f'
In the type `f a -> f'
In the class declaration for `Foo'
diff --git a/testsuite/tests/typecheck/should_fail/tcfail136.stderr b/testsuite/tests/typecheck/should_fail/tcfail136.stderr
index 229cd1ff41..c1071a11ec 100644
--- a/testsuite/tests/typecheck/should_fail/tcfail136.stderr
+++ b/testsuite/tests/typecheck/should_fail/tcfail136.stderr
@@ -1,7 +1,6 @@
-
-tcfail136.hs:9:35:
- `SymDict' is not applied to enough type arguments
- Expected kind `??', but `SymDict' has kind `* -> *'
- In the type `SymDict'
- In the definition of data constructor `SymTable'
- In the data type declaration for `SymTable'
+
+tcfail136.hs:9:35:
+ Expecting one more argument to `SymDict'
+ In the type `SymDict'
+ In the definition of data constructor `SymTable'
+ In the data declaration for `SymTable'
diff --git a/testsuite/tests/typecheck/should_fail/tcfail140.stderr b/testsuite/tests/typecheck/should_fail/tcfail140.stderr
index bc888d2309..f24a2a7f82 100644
--- a/testsuite/tests/typecheck/should_fail/tcfail140.stderr
+++ b/testsuite/tests/typecheck/should_fail/tcfail140.stderr
@@ -1,22 +1,24 @@
tcfail140.hs:10:7:
+ Couldn't match expected type `a0 -> t0' with actual type `Int'
The function `f' is applied to two arguments,
but its type `Int -> Int' has only one
In the expression: f 3 9
In an equation for `bar': bar = f 3 9
tcfail140.hs:12:10:
+ Couldn't match expected type `a0 -> t0' with actual type `Int'
The operator `f' takes two arguments,
but its type `Int -> Int' has only one
In the expression: 3 `f` 4
In an equation for `rot': rot xs = 3 `f` 4
tcfail140.hs:14:15:
+ Couldn't match expected type `a0 -> b0' with actual type `Int'
The operator `f' takes two arguments,
but its type `Int -> Int' has only one
In the first argument of `map', namely `(3 `f`)'
In the expression: map (3 `f`) xs
- In an equation for `bot': bot xs = map (3 `f`) xs
tcfail140.hs:16:8:
Constructor `Just' should have 1 argument, but has been given none
@@ -25,5 +27,6 @@ tcfail140.hs:16:8:
In the expression: ((\ Just x -> x) :: Maybe a -> a) (Just 1)
tcfail140.hs:19:1:
+ Couldn't match expected type `t0 -> Bool' with actual type `Int'
The equation(s) for `g' have two arguments,
but its type `Int -> Int' has only one
diff --git a/testsuite/tests/typecheck/should_fail/tcfail142.stderr b/testsuite/tests/typecheck/should_fail/tcfail142.stderr
index cd0161658f..635a670495 100644
--- a/testsuite/tests/typecheck/should_fail/tcfail142.stderr
+++ b/testsuite/tests/typecheck/should_fail/tcfail142.stderr
@@ -1,8 +1,7 @@
tcfail142.hs:21:12:
- Ambiguous type variables `a0', `r0' in the constraint:
- (Bar a0 r0) arising from a use of `bar'
- Probable fix: add a type signature that fixes these type variable(s)
+ No instance for (Bar a0 r0)
+ arising from a use of `bar'
In the first argument of `foo', namely `bar'
In the expression: foo bar
In an equation for `test': test = foo bar
diff --git a/testsuite/tests/typecheck/should_fail/tcfail143.stderr b/testsuite/tests/typecheck/should_fail/tcfail143.stderr
index 2c3857e0ee..846f8c0252 100644
--- a/testsuite/tests/typecheck/should_fail/tcfail143.stderr
+++ b/testsuite/tests/typecheck/should_fail/tcfail143.stderr
@@ -1,22 +1,11 @@
-
-tcfail143.hs:29:9:
- Couldn't match type `S Z' with `Z'
- When using functional dependencies to combine
- MinMax a Z Z a,
- arising from the dependency `a b -> c d'
- in the instance declaration at tcfail143.hs:11:10
- MinMax (S Z) Z Z Z,
- arising from a use of `extend' at tcfail143.hs:29:9-16
- In the expression: n1 `extend` n0
- In an equation for `t2': t2 = n1 `extend` n0
-
-tcfail143.hs:29:9:
- Couldn't match type `Z' with `S Z'
- When using functional dependencies to combine
- MinMax Z Z Z Z,
- arising from the dependency `b c d -> a'
- in the instance declaration at tcfail143.hs:10:10
- MinMax (S Z) Z Z Z,
- arising from a use of `extend' at tcfail143.hs:29:9-16
- In the expression: n1 `extend` n0
- In an equation for `t2': t2 = n1 `extend` n0
+
+tcfail143.hs:29:9:
+ Couldn't match type `S Z' with `Z'
+ When using functional dependencies to combine
+ MinMax a Z Z a,
+ arising from the dependency `a b -> c d'
+ in the instance declaration at tcfail143.hs:11:10
+ MinMax (S Z) Z Z Z,
+ arising from a use of `extend' at tcfail143.hs:29:9-16
+ In the expression: n1 `extend` n0
+ In an equation for `t2': t2 = n1 `extend` n0
diff --git a/testsuite/tests/typecheck/should_fail/tcfail146.stderr b/testsuite/tests/typecheck/should_fail/tcfail146.stderr
index e66dc94a76..433327a089 100644
--- a/testsuite/tests/typecheck/should_fail/tcfail146.stderr
+++ b/testsuite/tests/typecheck/should_fail/tcfail146.stderr
@@ -1,7 +1,6 @@
-
-tcfail146.hs:7:22:
- Predicate `SClass a' used as a type
- Expected kind `??', but `SClass a' has kind `Constraint'
- In the type `SClass a'
- In the definition of data constructor `SCon'
- In the data type declaration for `SData'
+
+tcfail146.hs:7:22:
+ Predicate `SClass a' used as a type
+ In the type `SClass a'
+ In the definition of data constructor `SCon'
+ In the data declaration for `SData'
diff --git a/testsuite/tests/typecheck/should_fail/tcfail147.stderr b/testsuite/tests/typecheck/should_fail/tcfail147.stderr
index 51c32ad8a2..f5aa074a80 100644
--- a/testsuite/tests/typecheck/should_fail/tcfail147.stderr
+++ b/testsuite/tests/typecheck/should_fail/tcfail147.stderr
@@ -1,7 +1,6 @@
-
-tcfail147.hs:7:19:
- `XClass' is not applied to enough type arguments
- Expected kind `??', but `XClass' has kind `k0 -> Constraint'
- In the type `XClass'
- In the definition of data constructor `XCon'
- In the data type declaration for `XData'
+
+tcfail147.hs:7:19:
+ Expecting one more argument to `XClass'
+ In the type `XClass'
+ In the definition of data constructor `XCon'
+ In the data declaration for `XData'
diff --git a/testsuite/tests/typecheck/should_fail/tcfail148.stderr b/testsuite/tests/typecheck/should_fail/tcfail148.stderr
index 670f440314..252ffec3c0 100644
--- a/testsuite/tests/typecheck/should_fail/tcfail148.stderr
+++ b/testsuite/tests/typecheck/should_fail/tcfail148.stderr
@@ -1,7 +1,6 @@
-
-tcfail148.hs:5:28:
- `List' is not applied to enough type arguments
- Expected kind `??', but `List' has kind `* -> *'
- In the type `List'
- In the definition of data constructor `Cons'
- In the data type declaration for `List'
+
+tcfail148.hs:5:28:
+ Expecting one more argument to `List'
+ In the type `List'
+ In the definition of data constructor `Cons'
+ In the data declaration for `List'
diff --git a/testsuite/tests/typecheck/should_fail/tcfail151.stderr b/testsuite/tests/typecheck/should_fail/tcfail151.stderr
index 857316de61..c7dce325a0 100644
--- a/testsuite/tests/typecheck/should_fail/tcfail151.stderr
+++ b/testsuite/tests/typecheck/should_fail/tcfail151.stderr
@@ -1,8 +1,7 @@
-
-tcfail151.hs:1:14:
- Warning: -XDatatypeContexts is deprecated: It was widely considered a misfeature, and has been removed from the Haskell language.
-
-tcfail151.hs:8:6:
- `Name a' is not applied to enough type arguments
- Expected kind `Constraint', but `Name a' has kind `* -> Constraint'
- In the data type declaration for `Exp'
+
+tcfail151.hs:1:14: Warning:
+ -XDatatypeContexts is deprecated: It was widely considered a misfeature, and has been removed from the Haskell language.
+
+tcfail151.hs:8:6:
+ Expecting one more argument to `Name a'
+ In the data declaration for `Exp'
diff --git a/testsuite/tests/typecheck/should_fail/tcfail152.hs b/testsuite/tests/typecheck/should_fail/tcfail152.hs
index 3ebb6fe0f6..5b3ec3f789 100644
--- a/testsuite/tests/typecheck/should_fail/tcfail152.hs
+++ b/testsuite/tests/typecheck/should_fail/tcfail152.hs
@@ -1,10 +1,10 @@
{-# LANGUAGE ExistentialQuantification #-}
-
--- This test made Hugs fail (Oct 05) because the constraint
--- from the 'toInteger' call escaped from the pattern match
-
-module ShouldFail where
-
-data T = forall a. C a
-
-test (C x) = toInteger x
+
+-- This test made Hugs fail (Oct 05) because the constraint
+-- from the 'toInteger' call escaped from the pattern match
+
+module ShouldFail where
+
+data T = forall a. C a
+
+test (C x) = toInteger x
diff --git a/testsuite/tests/typecheck/should_fail/tcfail152.stderr b/testsuite/tests/typecheck/should_fail/tcfail152.stderr
index 5ae2f52f00..24a872c9ee 100644
--- a/testsuite/tests/typecheck/should_fail/tcfail152.stderr
+++ b/testsuite/tests/typecheck/should_fail/tcfail152.stderr
@@ -1,6 +1,7 @@
tcfail152.hs:10:14:
- No instance for (Integral a)
- arising from a use of `toInteger'
+ No instance for (Integral a) arising from a use of `toInteger'
+ Possible fix:
+ add (Integral a) to the context of the data constructor `C'
In the expression: toInteger x
In an equation for `test': test (C x) = toInteger x
diff --git a/testsuite/tests/typecheck/should_fail/tcfail153.stderr b/testsuite/tests/typecheck/should_fail/tcfail153.stderr
index 0b40df47d1..200df0b6f6 100644
--- a/testsuite/tests/typecheck/should_fail/tcfail153.stderr
+++ b/testsuite/tests/typecheck/should_fail/tcfail153.stderr
@@ -1,9 +1,11 @@
-tcfail153.hs:6:9:
+tcfail153.hs:6:7:
Couldn't match type `a' with `Bool'
`a' is a rigid type variable bound by
- the type signature for f :: a -> [a] at tcfail153.hs:6:1
- In the first argument of `g', namely `x'
+ the type signature for f :: a -> [a] at tcfail153.hs:5:6
+ Expected type: [a]
+ Actual type: [Bool]
+ In the return type of a call of `g'
In the expression: g x
In an equation for `f':
f x
diff --git a/testsuite/tests/typecheck/should_fail/tcfail155.stderr b/testsuite/tests/typecheck/should_fail/tcfail155.stderr
index fcc1133d4d..1b5f1f3b0e 100644
--- a/testsuite/tests/typecheck/should_fail/tcfail155.stderr
+++ b/testsuite/tests/typecheck/should_fail/tcfail155.stderr
@@ -1,6 +1,6 @@
-
-tcfail155.hs:8:6:
- Data constructor `P' returns type `L2'
- instead of an instance of its parent type `T a'
- In the definition of data constructor `P'
- In the data type declaration for `T'
+
+tcfail155.hs:8:6:
+ Data constructor `P' returns type `L2'
+ instead of an instance of its parent type `T a'
+ In the definition of data constructor `P'
+ In the data declaration for `T'
diff --git a/testsuite/tests/typecheck/should_fail/tcfail158.stderr b/testsuite/tests/typecheck/should_fail/tcfail158.stderr
index b9c3a7dbca..a9e9eebf76 100644
--- a/testsuite/tests/typecheck/should_fail/tcfail158.stderr
+++ b/testsuite/tests/typecheck/should_fail/tcfail158.stderr
@@ -1,6 +1,4 @@
tcfail158.hs:14:19:
- `Val v' is not applied to enough type arguments
- Expected kind `*', but `Val v' has kind `* -> *'
- In the type signature for `bar':
- bar :: forall v. Val v
+ Expecting one more argument to `Val v'
+ In the type signature for `bar': bar :: forall v. Val v
diff --git a/testsuite/tests/typecheck/should_fail/tcfail161.stderr b/testsuite/tests/typecheck/should_fail/tcfail161.stderr
index 0b04d8ef02..09f6b52404 100644
--- a/testsuite/tests/typecheck/should_fail/tcfail161.stderr
+++ b/testsuite/tests/typecheck/should_fail/tcfail161.stderr
@@ -1,6 +1,4 @@
tcfail161.hs:5:7:
- `Maybe' is not applied to enough type arguments
- Expected kind `*', but `Maybe' has kind `* -> *'
- In the type signature for `f':
- f :: [Maybe]
+ Expecting one more argument to `Maybe'
+ In the type signature for `f': f :: [Maybe]
diff --git a/testsuite/tests/typecheck/should_fail/tcfail162.stderr b/testsuite/tests/typecheck/should_fail/tcfail162.stderr
index fcc1fb5665..de2b3129b9 100644
--- a/testsuite/tests/typecheck/should_fail/tcfail162.stderr
+++ b/testsuite/tests/typecheck/should_fail/tcfail162.stderr
@@ -1,7 +1,6 @@
-
-tcfail162.hs:10:33:
- `ForeignPtr' is not applied to enough type arguments
- Expected kind `??', but `ForeignPtr' has kind `* -> *'
- In the type `{-# UNPACK #-} !ForeignPtr'
- In the definition of data constructor `Foo'
- In the data type declaration for `Foo'
+
+tcfail162.hs:10:33:
+ Expecting one more argument to `ForeignPtr'
+ In the type `ForeignPtr'
+ In the definition of data constructor `Foo'
+ In the data declaration for `Foo'
diff --git a/testsuite/tests/typecheck/should_fail/tcfail168.hs b/testsuite/tests/typecheck/should_fail/tcfail168.hs
index 94a78a93b0..b6762d888d 100644
--- a/testsuite/tests/typecheck/should_fail/tcfail168.hs
+++ b/testsuite/tests/typecheck/should_fail/tcfail168.hs
@@ -63,4 +63,3 @@ foo = do
putChar 'a'
putChar 'a'
putChar 'a'
-
diff --git a/testsuite/tests/typecheck/should_fail/tcfail168.stderr b/testsuite/tests/typecheck/should_fail/tcfail168.stderr
index f16f65bdb1..a6a5064562 100644
--- a/testsuite/tests/typecheck/should_fail/tcfail168.stderr
+++ b/testsuite/tests/typecheck/should_fail/tcfail168.stderr
@@ -1,12 +1,17 @@
-tcfail168.hs:8:11:
- Couldn't match expected type `Char -> a0' with actual type `IO ()'
- In the return type of a call of `putChar'
- Probable cause: `putChar' is applied to too many arguments
- In a stmt of a 'do' block: putChar 'a'
+tcfail168.hs:7:11:
+ Couldn't match expected type `IO a0'
+ with actual type `Char -> IO ()'
+ In a stmt of a 'do' block: putChar
In the expression:
do { putChar;
putChar 'a';
putChar 'a';
putChar 'a';
.... }
+ In an equation for `foo':
+ foo
+ = do { putChar;
+ putChar 'a';
+ putChar 'a';
+ .... }
diff --git a/testsuite/tests/typecheck/should_fail/tcfail171.stderr b/testsuite/tests/typecheck/should_fail/tcfail171.stderr
index b4efd33e32..79ed5f80b7 100644
--- a/testsuite/tests/typecheck/should_fail/tcfail171.stderr
+++ b/testsuite/tests/typecheck/should_fail/tcfail171.stderr
@@ -1,6 +1,8 @@
tcfail171.hs:9:10:
- No instances for (PrintfType b, PrintfArg a)
- arising from a use of `printf'
+ No instance for (PrintfArg a) arising from a use of `printf'
+ Possible fix:
+ add (PrintfArg a) to the context of
+ the type signature for phex :: a -> b
In the expression: printf "0x%x" x
In an equation for `phex': phex x = printf "0x%x" x
diff --git a/testsuite/tests/typecheck/should_fail/tcfail173.stderr b/testsuite/tests/typecheck/should_fail/tcfail173.stderr
index ee8f59b525..4bda7d5c4c 100644
--- a/testsuite/tests/typecheck/should_fail/tcfail173.stderr
+++ b/testsuite/tests/typecheck/should_fail/tcfail173.stderr
@@ -1,3 +1,4 @@
-tcfail173.hs:5:10:
- Malformed head of type or class declaration: (f <.> g) a
+tcfail173.hs:5:12:
+ Illegal declaration of a type or class operator `<.>'
+ Use -XTypeOperators to declare operators in type and declarations
diff --git a/testsuite/tests/typecheck/should_fail/tcfail174.stderr b/testsuite/tests/typecheck/should_fail/tcfail174.stderr
index de8bb6004d..c4fb525c5e 100644
--- a/testsuite/tests/typecheck/should_fail/tcfail174.stderr
+++ b/testsuite/tests/typecheck/should_fail/tcfail174.stderr
@@ -1,23 +1,31 @@
-
-tcfail174.hs:9:10:
- Couldn't match expected type `forall a. a -> a'
- with actual type `a0 -> a0'
- In the first argument of `Base', namely `id'
- In the expression: Base id
- In an equation for `g': g = Base id
-
-tcfail174.hs:13:14:
- Couldn't match expected type `forall x. x -> a0'
- with actual type `forall a. a -> a'
- Expected type: Capture (forall x. x -> a0)
- Actual type: Capture (forall a. a -> a)
- In the first argument of `Capture', namely `g'
- In the expression: Capture g
-
-tcfail174.hs:16:14:
- Couldn't match expected type `forall x. x -> a0'
- with actual type `forall a. a -> a'
- Expected type: Capture (forall x. x -> a0)
- Actual type: Capture (forall a. a -> a)
- In the first argument of `Capture', namely `g'
- In the expression: Capture g
+
+tcfail174.hs:9:10:
+ Couldn't match expected type `forall a. a -> a'
+ with actual type `a0 -> a0'
+ In the first argument of `Base', namely `id'
+ In the expression: Base id
+ In an equation for `g': g = Base id
+
+tcfail174.hs:13:14:
+ Couldn't match type `a' with `a1'
+ `a' is a rigid type variable bound by
+ the inferred type of h1 :: Capture a at tcfail174.hs:13:1
+ `a1' is a rigid type variable bound by
+ the type forall a1. a1 -> a1 at tcfail174.hs:13:14
+ Expected type: Capture (forall x. x -> a)
+ Actual type: Capture (forall a. a -> a)
+ In the first argument of `Capture', namely `g'
+ In the expression: Capture g
+ In an equation for `h1': h1 = Capture g
+
+tcfail174.hs:16:14:
+ Couldn't match type `a' with `b'
+ `a' is a rigid type variable bound by
+ the type forall a. a -> a at tcfail174.hs:16:14
+ `b' is a rigid type variable bound by
+ the type signature for h2 :: Capture b at tcfail174.hs:15:7
+ Expected type: Capture (forall x. x -> b)
+ Actual type: Capture (forall a. a -> a)
+ In the first argument of `Capture', namely `g'
+ In the expression: Capture g
+ In an equation for `h2': h2 = Capture g
diff --git a/testsuite/tests/typecheck/should_fail/tcfail175.stderr b/testsuite/tests/typecheck/should_fail/tcfail175.stderr
index f181c00bcd..797b701d6d 100644
--- a/testsuite/tests/typecheck/should_fail/tcfail175.stderr
+++ b/testsuite/tests/typecheck/should_fail/tcfail175.stderr
@@ -1,7 +1,8 @@
-
-tcfail175.hs:11:1:
- Couldn't match type `a' with `String -> String -> String'
- `a' is a rigid type variable bound by
- the type signature for evalRHS :: Int -> a at tcfail175.hs:11:1
- The equation(s) for `evalRHS' have three arguments,
- but its type `Int -> a' has only one
+
+tcfail175.hs:11:1:
+ Couldn't match expected type `a'
+ with actual type `String -> String -> String'
+ `a' is a rigid type variable bound by
+ the type signature for evalRHS :: Int -> a at tcfail175.hs:10:12
+ The equation(s) for `evalRHS' have three arguments,
+ but its type `Int -> a' has only one
diff --git a/testsuite/tests/typecheck/should_fail/tcfail177.stderr b/testsuite/tests/typecheck/should_fail/tcfail177.stderr
index 3107d1e668..dc622daafa 100644
--- a/testsuite/tests/typecheck/should_fail/tcfail177.stderr
+++ b/testsuite/tests/typecheck/should_fail/tcfail177.stderr
@@ -7,3 +7,165 @@ tcfail177.hs:10:12:
[a ~?= b, "Three" ~?= "3", "Four" ~?= "4", "Five" ~?= "5", ....]
In an equation for `allTests':
allTests = foo [a ~?= b, "Three" ~?= "3", "Four" ~?= "4", ....]
+
+tcfail177.hs:20:13:
+ Couldn't match expected type `Bool' with actual type `[Char]'
+ In the expression: "Two"
+ In the first argument of `foo', namely
+ `[a ~?= b, "Three" ~?= "3", "Four" ~?= "4", "Five" ~?= "5", ....]'
+ In the expression:
+ foo
+ [a ~?= b, "Three" ~?= "3", "Four" ~?= "4", "Five" ~?= "5", ....]
+
+tcfail177.hs:20:20:
+ Couldn't match expected type `Bool' with actual type `[Char]'
+ In the expression: "Two"
+ In the first argument of `foo', namely
+ `[a ~?= b, "Three" ~?= "3", "Four" ~?= "4", "Five" ~?= "5", ....]'
+ In the expression:
+ foo
+ [a ~?= b, "Three" ~?= "3", "Four" ~?= "4", "Five" ~?= "5", ....]
+
+tcfail177.hs:20:27:
+ Couldn't match expected type `Bool' with actual type `[Char]'
+ In the expression: "Two"
+ In the first argument of `foo', namely
+ `[a ~?= b, "Three" ~?= "3", "Four" ~?= "4", "Five" ~?= "5", ....]'
+ In the expression:
+ foo
+ [a ~?= b, "Three" ~?= "3", "Four" ~?= "4", "Five" ~?= "5", ....]
+
+tcfail177.hs:21:13:
+ Couldn't match expected type `Bool' with actual type `[Char]'
+ In the expression: "Two"
+ In the first argument of `foo', namely
+ `[a ~?= b, "Three" ~?= "3", "Four" ~?= "4", "Five" ~?= "5", ....]'
+ In the expression:
+ foo
+ [a ~?= b, "Three" ~?= "3", "Four" ~?= "4", "Five" ~?= "5", ....]
+
+tcfail177.hs:21:20:
+ Couldn't match expected type `Bool' with actual type `[Char]'
+ In the expression: "Two"
+ In the first argument of `foo', namely
+ `[a ~?= b, "Three" ~?= "3", "Four" ~?= "4", "Five" ~?= "5", ....]'
+ In the expression:
+ foo
+ [a ~?= b, "Three" ~?= "3", "Four" ~?= "4", "Five" ~?= "5", ....]
+
+tcfail177.hs:21:27:
+ Couldn't match expected type `Bool' with actual type `[Char]'
+ In the expression: "Two"
+ In the first argument of `foo', namely
+ `[a ~?= b, "Three" ~?= "3", "Four" ~?= "4", "Five" ~?= "5", ....]'
+ In the expression:
+ foo
+ [a ~?= b, "Three" ~?= "3", "Four" ~?= "4", "Five" ~?= "5", ....]
+
+tcfail177.hs:22:13:
+ Couldn't match expected type `Bool' with actual type `[Char]'
+ In the expression: "Two"
+ In the first argument of `foo', namely
+ `[a ~?= b, "Three" ~?= "3", "Four" ~?= "4", "Five" ~?= "5", ....]'
+ In the expression:
+ foo
+ [a ~?= b, "Three" ~?= "3", "Four" ~?= "4", "Five" ~?= "5", ....]
+
+tcfail177.hs:22:20:
+ Couldn't match expected type `Bool' with actual type `[Char]'
+ In the expression: "Two"
+ In the first argument of `foo', namely
+ `[a ~?= b, "Three" ~?= "3", "Four" ~?= "4", "Five" ~?= "5", ....]'
+ In the expression:
+ foo
+ [a ~?= b, "Three" ~?= "3", "Four" ~?= "4", "Five" ~?= "5", ....]
+
+tcfail177.hs:22:27:
+ Couldn't match expected type `Bool' with actual type `[Char]'
+ In the expression: "Two"
+ In the first argument of `foo', namely
+ `[a ~?= b, "Three" ~?= "3", "Four" ~?= "4", "Five" ~?= "5", ....]'
+ In the expression:
+ foo
+ [a ~?= b, "Three" ~?= "3", "Four" ~?= "4", "Five" ~?= "5", ....]
+
+tcfail177.hs:23:13:
+ Couldn't match expected type `Bool' with actual type `[Char]'
+ In the expression: "Two"
+ In the first argument of `foo', namely
+ `[a ~?= b, "Three" ~?= "3", "Four" ~?= "4", "Five" ~?= "5", ....]'
+ In the expression:
+ foo
+ [a ~?= b, "Three" ~?= "3", "Four" ~?= "4", "Five" ~?= "5", ....]
+
+tcfail177.hs:23:20:
+ Couldn't match expected type `Bool' with actual type `[Char]'
+ In the expression: "Two"
+ In the first argument of `foo', namely
+ `[a ~?= b, "Three" ~?= "3", "Four" ~?= "4", "Five" ~?= "5", ....]'
+ In the expression:
+ foo
+ [a ~?= b, "Three" ~?= "3", "Four" ~?= "4", "Five" ~?= "5", ....]
+
+tcfail177.hs:23:27:
+ Couldn't match expected type `Bool' with actual type `[Char]'
+ In the expression: "Two"
+ In the first argument of `foo', namely
+ `[a ~?= b, "Three" ~?= "3", "Four" ~?= "4", "Five" ~?= "5", ....]'
+ In the expression:
+ foo
+ [a ~?= b, "Three" ~?= "3", "Four" ~?= "4", "Five" ~?= "5", ....]
+
+tcfail177.hs:24:13:
+ Couldn't match expected type `Bool' with actual type `[Char]'
+ In the expression: "Two"
+ In the first argument of `foo', namely
+ `[a ~?= b, "Three" ~?= "3", "Four" ~?= "4", "Five" ~?= "5", ....]'
+ In the expression:
+ foo
+ [a ~?= b, "Three" ~?= "3", "Four" ~?= "4", "Five" ~?= "5", ....]
+
+tcfail177.hs:24:20:
+ Couldn't match expected type `Bool' with actual type `[Char]'
+ In the expression: "Two"
+ In the first argument of `foo', namely
+ `[a ~?= b, "Three" ~?= "3", "Four" ~?= "4", "Five" ~?= "5", ....]'
+ In the expression:
+ foo
+ [a ~?= b, "Three" ~?= "3", "Four" ~?= "4", "Five" ~?= "5", ....]
+
+tcfail177.hs:24:27:
+ Couldn't match expected type `Bool' with actual type `[Char]'
+ In the expression: "Two"
+ In the first argument of `foo', namely
+ `[a ~?= b, "Three" ~?= "3", "Four" ~?= "4", "Five" ~?= "5", ....]'
+ In the expression:
+ foo
+ [a ~?= b, "Three" ~?= "3", "Four" ~?= "4", "Five" ~?= "5", ....]
+
+tcfail177.hs:25:13:
+ Couldn't match expected type `Bool' with actual type `[Char]'
+ In the expression: "Two"
+ In the first argument of `foo', namely
+ `[a ~?= b, "Three" ~?= "3", "Four" ~?= "4", "Five" ~?= "5", ....]'
+ In the expression:
+ foo
+ [a ~?= b, "Three" ~?= "3", "Four" ~?= "4", "Five" ~?= "5", ....]
+
+tcfail177.hs:25:20:
+ Couldn't match expected type `Bool' with actual type `[Char]'
+ In the expression: "Two"
+ In the first argument of `foo', namely
+ `[a ~?= b, "Three" ~?= "3", "Four" ~?= "4", "Five" ~?= "5", ....]'
+ In the expression:
+ foo
+ [a ~?= b, "Three" ~?= "3", "Four" ~?= "4", "Five" ~?= "5", ....]
+
+tcfail177.hs:25:27:
+ Couldn't match expected type `Bool' with actual type `[Char]'
+ In the expression: "Two"
+ In the first argument of `foo', namely
+ `[a ~?= b, "Three" ~?= "3", "Four" ~?= "4", "Five" ~?= "5", ....]'
+ In the expression:
+ foo
+ [a ~?= b, "Three" ~?= "3", "Four" ~?= "4", "Five" ~?= "5", ....]
diff --git a/testsuite/tests/typecheck/should_fail/tcfail178.stderr b/testsuite/tests/typecheck/should_fail/tcfail178.stderr
index 63119af75e..66773a2fea 100644
--- a/testsuite/tests/typecheck/should_fail/tcfail178.stderr
+++ b/testsuite/tests/typecheck/should_fail/tcfail178.stderr
@@ -1,10 +1,11 @@
tcfail178.hs:15:7:
- Couldn't match expected type `[a0]' with actual type `()'
+ Couldn't match type `()' with `[a0]'
Expected type: Bool -> [a0]
Actual type: Bool -> ()
In the first argument of `a', namely `y'
In the expression: a y
+ In an equation for `c': c = a y
tcfail178.hs:18:7:
Couldn't match expected type `Bool -> [a0]' with actual type `()'
diff --git a/testsuite/tests/typecheck/should_fail/tcfail179.stderr b/testsuite/tests/typecheck/should_fail/tcfail179.stderr
index 48f5e26d78..4962c8aae7 100644
--- a/testsuite/tests/typecheck/should_fail/tcfail179.stderr
+++ b/testsuite/tests/typecheck/should_fail/tcfail179.stderr
@@ -1,14 +1,13 @@
-tcfail179.hs:14:37:
- Couldn't match type `s' with `x'
+tcfail179.hs:14:39:
+ Couldn't match expected type `s' with actual type `x'
`s' is a rigid type variable bound by
- the type signature for run :: T s -> Int at tcfail179.hs:13:1
+ the type signature for run :: T s -> Int at tcfail179.hs:12:8
`x' is a rigid type variable bound by
a pattern with constructor
T :: forall s x. (s -> (x -> s) -> (x, s, Int)) -> T s,
in a case alternative
at tcfail179.hs:14:14
- Expected type: (s, x, Int)
- Actual type: (x, s, Int)
- In the return type of a call of `g'
+ In the first argument of `g', namely `x'
In the expression: g x id
+ In a pattern binding: (x, _, b) = g x id
diff --git a/testsuite/tests/typecheck/should_fail/tcfail181.stderr b/testsuite/tests/typecheck/should_fail/tcfail181.stderr
index 59fe8b83af..0e00427aa5 100644
--- a/testsuite/tests/typecheck/should_fail/tcfail181.stderr
+++ b/testsuite/tests/typecheck/should_fail/tcfail181.stderr
@@ -1,8 +1,13 @@
tcfail181.hs:17:9:
- Ambiguous type variable `m0' in the constraint:
- (Monad m0) arising from a use of `foo'
- Probable fix: add a type signature that fixes these type variable(s)
+ No instance for (Monad m0)
+ arising from a use of `foo'
+ The type variable `m0' is ambiguous
+ Possible fix: add a type signature that fixes these type variable(s)
+ Note: there are several potential instances:
+ instance Monad ((->) r) -- Defined in `GHC.Base'
+ instance Monad IO -- Defined in `GHC.Base'
+ instance Monad [] -- Defined in `GHC.Base'
In the expression: foo
In the expression: foo {bar = return True}
In an equation for `wog': wog x = foo {bar = return True}
diff --git a/testsuite/tests/typecheck/should_fail/tcfail186.stderr b/testsuite/tests/typecheck/should_fail/tcfail186.stderr
index 3f4504b810..b22e672ae6 100644
--- a/testsuite/tests/typecheck/should_fail/tcfail186.stderr
+++ b/testsuite/tests/typecheck/should_fail/tcfail186.stderr
@@ -1,7 +1,8 @@
tcfail186.hs:7:9:
- Couldn't match expected type `PhantomSyn a0'
- with actual type `[Char]'
+ Couldn't match type `[Char]' with `Int'
+ Expected type: PhantomSyn a0
+ Actual type: [Char]
In the first argument of `f', namely `"hoo"'
In the expression: f "hoo"
In an equation for `foo': foo = f "hoo"
diff --git a/testsuite/tests/typecheck/should_fail/tcfail189.stderr b/testsuite/tests/typecheck/should_fail/tcfail189.stderr
index b3a6cb4b96..6364cc2d5b 100644
--- a/testsuite/tests/typecheck/should_fail/tcfail189.stderr
+++ b/testsuite/tests/typecheck/should_fail/tcfail189.stderr
@@ -1,8 +1,9 @@
tcfail189.hs:10:31:
- Couldn't match expected type `a -> t0' with actual type `[a0]'
- Expected type: (a -> t0) -> [a] -> [[a]]
+ Couldn't match type `[a0]' with `a -> a1'
+ Expected type: (a -> a1) -> [a] -> [[a]]
Actual type: [a0] -> [a0]
In the return type of a call of `take'
Probable cause: `take' is applied to too many arguments
In the expression: take 2
+ In a stmt of a list comprehension: then group by x using take 2
diff --git a/testsuite/tests/typecheck/should_fail/tcfail190.hs b/testsuite/tests/typecheck/should_fail/tcfail190.hs
index 7cc768af65..0e81b190d3 100644
--- a/testsuite/tests/typecheck/should_fail/tcfail190.hs
+++ b/testsuite/tests/typecheck/should_fail/tcfail190.hs
@@ -1,13 +1,15 @@
--- Checks that the ordering constraint on the implicit groupWith is respected
+-- Checks that the ordering constraint on the groupWith function is respected
{-# OPTIONS_GHC -XTransformListComp #-}
module ShouldFail where
+import GHC.Exts (groupWith)
+
data Unorderable = Gnorf | Pinky | Brain
foo = [ ()
| x <- [Gnorf, Brain]
- , then group by x
+ , then group by x using groupWith
]
diff --git a/testsuite/tests/typecheck/should_fail/tcfail190.stderr b/testsuite/tests/typecheck/should_fail/tcfail190.stderr
index a2e1034162..a6469e72d7 100644
--- a/testsuite/tests/typecheck/should_fail/tcfail190.stderr
+++ b/testsuite/tests/typecheck/should_fail/tcfail190.stderr
@@ -1,8 +1,9 @@
-tcfail190.hs:12:9:
+tcfail190.hs:14:31:
No instance for (Ord Unorderable)
- arising from a use of `Control.Monad.Group.mgroupWith'
+ arising from a use of `groupWith'
Possible fix: add an instance declaration for (Ord Unorderable)
- In the expression: Control.Monad.Group.mgroupWith
- In a stmt of a list comprehension: then group by x
- In the expression: [() | x <- [Gnorf, Brain], then group by x]
+ In the expression: groupWith
+ In a stmt of a list comprehension: then group by x using groupWith
+ In the expression:
+ [() | x <- [Gnorf, Brain], then group by x using groupWith]
diff --git a/testsuite/tests/typecheck/should_fail/tcfail191.stderr b/testsuite/tests/typecheck/should_fail/tcfail191.stderr
index 178eebf7ff..a276a04eae 100644
--- a/testsuite/tests/typecheck/should_fail/tcfail191.stderr
+++ b/testsuite/tests/typecheck/should_fail/tcfail191.stderr
@@ -4,6 +4,7 @@ tcfail191.hs:11:26:
`a' is a rigid type variable bound by
a type expected by the context: [a] -> [[a]] at tcfail191.hs:11:9
Expected type: [a] -> [[a]]
- Actual type: [[a]] -> [[a]]
+ Actual type: [a] -> [a]
In the return type of a call of `take'
In the expression: take 5
+ In a stmt of a list comprehension: then group using take 5
diff --git a/testsuite/tests/typecheck/should_fail/tcfail192.stderr b/testsuite/tests/typecheck/should_fail/tcfail192.stderr
index a957fba52a..349121975c 100644
--- a/testsuite/tests/typecheck/should_fail/tcfail192.stderr
+++ b/testsuite/tests/typecheck/should_fail/tcfail192.stderr
@@ -1,19 +1,20 @@
-
-tcfail192.hs:8:11:
- No instance for (Num [[Char]])
- arising from a use of `+'
- Possible fix: add an instance declaration for (Num [[Char]])
- In the expression: x + 1
- In the expression:
- [x + 1 | x <- ["Hello", "World"], then group using take 5]
- In an equation for `foo':
- foo = [x + 1 | x <- ["Hello", "World"], then group using take 5]
-
-tcfail192.hs:10:26:
- Couldn't match type `a' with `[a]'
- `a' is a rigid type variable bound by
- a type expected by the context: [a] -> [[a]] at tcfail192.hs:10:9
- Expected type: [a] -> [[a]]
- Actual type: [[a]] -> [[a]]
- In the return type of a call of `take'
- In the expression: take 5
+
+tcfail192.hs:8:11:
+ No instance for (Num [[Char]])
+ arising from a use of `+'
+ Possible fix: add an instance declaration for (Num [[Char]])
+ In the expression: x + 1
+ In the expression:
+ [x + 1 | x <- ["Hello", "World"], then group using take 5]
+ In an equation for `foo':
+ foo = [x + 1 | x <- ["Hello", "World"], then group using take 5]
+
+tcfail192.hs:10:26:
+ Couldn't match type `a' with `[a]'
+ `a' is a rigid type variable bound by
+ a type expected by the context: [a] -> [[a]] at tcfail192.hs:10:9
+ Expected type: [a] -> [[a]]
+ Actual type: [a] -> [a]
+ In the return type of a call of `take'
+ In the expression: take 5
+ In a stmt of a list comprehension: then group using take 5
diff --git a/testsuite/tests/typecheck/should_fail/tcfail193.stderr b/testsuite/tests/typecheck/should_fail/tcfail193.stderr
index f19720f796..47375e8401 100644
--- a/testsuite/tests/typecheck/should_fail/tcfail193.stderr
+++ b/testsuite/tests/typecheck/should_fail/tcfail193.stderr
@@ -1,7 +1,10 @@
tcfail193.hs:10:31:
- Occurs check: cannot construct the infinite type: a0 = [a0]
+ Couldn't match type `a' with `[a]'
+ `a' is a rigid type variable bound by
+ a type expected by the context: [a] -> [a] at tcfail193.hs:10:26
Expected type: [a] -> [a]
- Actual type: [a0] -> [[a0]]
+ Actual type: [a] -> [[a]]
In the expression: inits
In a stmt of a list comprehension: then inits
+ In the expression: [x | x <- [3, 2, 1], then inits]
diff --git a/testsuite/tests/typecheck/should_fail/tcfail194.stderr b/testsuite/tests/typecheck/should_fail/tcfail194.stderr
index be6e37ec6b..34cf179439 100644
--- a/testsuite/tests/typecheck/should_fail/tcfail194.stderr
+++ b/testsuite/tests/typecheck/should_fail/tcfail194.stderr
@@ -1,8 +1,37 @@
+tcfail194.hs:9:15:
+ No instance for (Enum t0)
+ arising from the arithmetic sequence `1 .. 10'
+ The type variable `t0' is ambiguous
+ Possible fix: add a type signature that fixes these type variable(s)
+ Note: there are several potential instances:
+ instance Enum Double -- Defined in `GHC.Float'
+ instance Enum Float -- Defined in `GHC.Float'
+ instance Enum () -- Defined in `GHC.Enum'
+ ...plus five others
+ In the expression: [1 .. 10]
+ In a stmt of a list comprehension: x <- [1 .. 10]
+ In a stmt of a list comprehension: then take 5 by x
+
+tcfail194.hs:9:16:
+ No instance for (Num t0)
+ arising from the literal `1'
+ The type variable `t0' is ambiguous
+ Possible fix: add a type signature that fixes these type variable(s)
+ Note: there are several potential instances:
+ instance Num Double -- Defined in `GHC.Float'
+ instance Num Float -- Defined in `GHC.Float'
+ instance Num Int -- Defined in `GHC.Num'
+ ...plus one other
+ In the expression: 1
+ In the expression: [1 .. 10]
+ In a stmt of a list comprehension: x <- [1 .. 10]
+
tcfail194.hs:9:29:
- Couldn't match expected type `a -> t0' with actual type `[a0]'
+ Couldn't match type `[a0]' with `a -> t0'
Expected type: (a -> t0) -> [a] -> [a]
Actual type: [a0] -> [a0]
In the return type of a call of `take'
Probable cause: `take' is applied to too many arguments
In the expression: take 5
+ In a stmt of a list comprehension: then take 5 by x
diff --git a/testsuite/tests/typecheck/should_fail/tcfail195.stderr b/testsuite/tests/typecheck/should_fail/tcfail195.stderr
index 5816773f48..d690ebac82 100644
--- a/testsuite/tests/typecheck/should_fail/tcfail195.stderr
+++ b/testsuite/tests/typecheck/should_fail/tcfail195.stderr
@@ -1,5 +1,5 @@
-
-tcfail195.hs:6:3:
- Illegal polymorphic or qualified type: forall a. a
- In the definition of data constructor `Foo'
- In the data type declaration for `Foo'
+
+tcfail195.hs:6:3:
+ Illegal polymorphic or qualified type: forall a. a
+ In the definition of data constructor `Foo'
+ In the data declaration for `Foo'
diff --git a/testsuite/tests/typecheck/should_fail/tcfail196.stderr b/testsuite/tests/typecheck/should_fail/tcfail196.stderr
index 79cc7266eb..ea6f16fd98 100644
--- a/testsuite/tests/typecheck/should_fail/tcfail196.stderr
+++ b/testsuite/tests/typecheck/should_fail/tcfail196.stderr
@@ -1,5 +1,5 @@
-
-tcfail196.hs:5:1:
- Illegal polymorphic or qualified type: forall a. a
- In the type signature for `bar':
- bar :: Num (forall a. a) => Int -> Int
+
+tcfail196.hs:5:8:
+ Illegal polymorphic or qualified type: forall a. a
+ In the type signature for `bar':
+ bar :: Num (forall a. a) => Int -> Int
diff --git a/testsuite/tests/typecheck/should_fail/tcfail197.stderr b/testsuite/tests/typecheck/should_fail/tcfail197.stderr
index 3abe57be7b..464dacb078 100644
--- a/testsuite/tests/typecheck/should_fail/tcfail197.stderr
+++ b/testsuite/tests/typecheck/should_fail/tcfail197.stderr
@@ -1,6 +1,5 @@
-tcfail197.hs:5:1:
+tcfail197.hs:5:8:
Illegal polymorphic or qualified type: forall a. a
Perhaps you intended to use -XImpredicativeTypes
- In the type signature for `foo':
- foo :: [forall a. a] -> Int
+ In the type signature for `foo': foo :: [forall a. a] -> Int
diff --git a/testsuite/tests/typecheck/should_fail/tcfail198.stderr b/testsuite/tests/typecheck/should_fail/tcfail198.stderr
index 27fbf92f5a..bba13900de 100644
--- a/testsuite/tests/typecheck/should_fail/tcfail198.stderr
+++ b/testsuite/tests/typecheck/should_fail/tcfail198.stderr
@@ -1,10 +1,10 @@
tcfail198.hs:6:36:
- Couldn't match type `a' with `a1'
- `a' is a rigid type variable bound by
- the inferred type of f3 :: [a] -> [a] at tcfail198.hs:6:1
+ Couldn't match expected type `a1' with actual type `a'
`a1' is a rigid type variable bound by
an expression type signature: a1 at tcfail198.hs:6:36
+ `a' is a rigid type variable bound by
+ the inferred type of f3 :: [a] -> [a] at tcfail198.hs:6:1
In the expression: x :: a
In the second argument of `(++)', namely `[x :: a]'
In the expression: xs ++ [x :: a]
diff --git a/testsuite/tests/typecheck/should_fail/tcfail201.stderr b/testsuite/tests/typecheck/should_fail/tcfail201.stderr
index 23dd02614b..6a60b9fc90 100644
--- a/testsuite/tests/typecheck/should_fail/tcfail201.stderr
+++ b/testsuite/tests/typecheck/should_fail/tcfail201.stderr
@@ -1,15 +1,14 @@
-
-tcfail201.hs:18:28:
- Couldn't match type `a' with `HsDoc id0'
- `a' is a rigid type variable bound by
- the type signature for
- gfoldl' :: (forall a1 b. c (a1 -> b) -> a1 -> c b)
- -> (forall g. g -> c g) -> a -> c a
- at tcfail201.hs:16:1
- In the pattern: DocParagraph hsDoc
- In a case alternative:
- (DocParagraph hsDoc) -> z DocParagraph `k` hsDoc
- In the expression:
- case hsDoc of {
- DocEmpty -> z DocEmpty
- (DocParagraph hsDoc) -> z DocParagraph `k` hsDoc }
+
+tcfail201.hs:17:27:
+ Couldn't match expected type `a' with actual type `HsDoc t0'
+ `a' is a rigid type variable bound by
+ the type signature for
+ gfoldl' :: (forall a1 b. c (a1 -> b) -> a1 -> c b)
+ -> (forall g. g -> c g) -> a -> c a
+ at tcfail201.hs:15:12
+ In the pattern: DocEmpty
+ In a case alternative: DocEmpty -> z DocEmpty
+ In the expression:
+ case hsDoc of {
+ DocEmpty -> z DocEmpty
+ (DocParagraph hsDoc) -> z DocParagraph `k` hsDoc }
diff --git a/testsuite/tests/typecheck/should_fail/tcfail206.hs b/testsuite/tests/typecheck/should_fail/tcfail206.hs
index a256bc3e34..95b0eba359 100644
--- a/testsuite/tests/typecheck/should_fail/tcfail206.hs
+++ b/testsuite/tests/typecheck/should_fail/tcfail206.hs
@@ -1,5 +1,5 @@
{-# LANGUAGE TupleSections, UnboxedTuples #-}
-module Main where
+module ShouldCompile where
a :: Bool -> (Int, Bool)
a = ( , True)
@@ -18,5 +18,3 @@ e = (#1, #)
f :: a -> (#a, Bool#)
f = (#True || False, #)
-
-main = return () \ No newline at end of file
diff --git a/testsuite/tests/typecheck/should_fail/tcfail206.stderr b/testsuite/tests/typecheck/should_fail/tcfail206.stderr
index fb812f1cbf..3283089afc 100644
--- a/testsuite/tests/typecheck/should_fail/tcfail206.stderr
+++ b/testsuite/tests/typecheck/should_fail/tcfail206.stderr
@@ -1,48 +1,47 @@
-
-tcfail206.hs:5:5:
- Couldn't match expected type `Int' with actual type `Bool'
- Expected type: Bool -> (Int, Bool)
- Actual type: Bool -> (Bool, t0)
- In the expression: (, True)
- In an equation for `a': a = (, True)
-
-tcfail206.hs:8:5:
- Couldn't match expected type `Bool -> (Int, Bool)'
- with actual type `(t0, Int)'
- Expected type: Int -> Bool -> (Int, Bool)
- Actual type: Int -> (t0, Int)
- In the expression: (1,)
- In an equation for `b': b = (1,)
-
-tcfail206.hs:11:5:
- Couldn't match type `a' with `Bool'
- `a' is a rigid type variable bound by
- the type signature for c :: a -> (a, Bool) at tcfail206.hs:11:1
- Expected type: a -> (a, Bool)
- Actual type: Bool -> (Bool, Bool)
- In the expression: (True || False,)
- In an equation for `c': c = (True || False,)
-
-tcfail206.hs:14:5:
- Couldn't match expected type `Int' with actual type `Bool'
- Expected type: Bool -> (# Int, Bool #)
- Actual type: Bool -> (# Bool, t0 #)
- In the expression: (# , True #)
- In an equation for `d': d = (# , True #)
-
-tcfail206.hs:17:5:
- Couldn't match expected type `Bool -> (# Int, Bool #)'
- with actual type `(# t0, Int #)'
- Expected type: Int -> Bool -> (# Int, Bool #)
- Actual type: Int -> (# t0, Int #)
- In the expression: (# 1, #)
- In an equation for `e': e = (# 1, #)
-
-tcfail206.hs:20:5:
- Couldn't match type `a' with `Bool'
- `a' is a rigid type variable bound by
- the type signature for f :: a -> (# a, Bool #) at tcfail206.hs:20:1
- Expected type: a -> (# a, Bool #)
- Actual type: a -> (# a, a #)
- In the expression: (# True || False, #)
- In an equation for `f': f = (# True || False, #)
+
+tcfail206.hs:5:5:
+ Couldn't match type `Bool' with `Int'
+ Expected type: Bool -> (Int, Bool)
+ Actual type: Bool -> (Bool, Bool)
+ In the expression: (, True)
+ In an equation for `a': a = (, True)
+
+tcfail206.hs:8:5:
+ Couldn't match type `(Integer, Int)' with `Bool -> (Int, Bool)'
+ Expected type: Int -> Bool -> (Int, Bool)
+ Actual type: Int -> (Integer, Int)
+ In the expression: (1,)
+ In an equation for `b': b = (1,)
+
+tcfail206.hs:11:5:
+ Couldn't match type `a' with `Bool'
+ `a' is a rigid type variable bound by
+ the type signature for c :: a -> (a, Bool) at tcfail206.hs:10:6
+ Expected type: a -> (a, Bool)
+ Actual type: a -> (a, a)
+ In the expression: (True || False,)
+ In an equation for `c': c = (True || False,)
+
+tcfail206.hs:14:5:
+ Couldn't match type `Bool' with `Int'
+ Expected type: Bool -> (# Int, Bool #)
+ Actual type: Bool -> (# Bool, Bool #)
+ In the expression: (# , True #)
+ In an equation for `d': d = (# , True #)
+
+tcfail206.hs:17:5:
+ Couldn't match type `(# Integer, Int #)'
+ with `Bool -> (# Int, Bool #)'
+ Expected type: Int -> Bool -> (# Int, Bool #)
+ Actual type: Int -> (# Integer, Int #)
+ In the expression: (# 1, #)
+ In an equation for `e': e = (# 1, #)
+
+tcfail206.hs:20:5:
+ Couldn't match type `a' with `Bool'
+ `a' is a rigid type variable bound by
+ the type signature for f :: a -> (# a, Bool #) at tcfail206.hs:19:6
+ Expected type: a -> (# a, Bool #)
+ Actual type: a -> (# a, a #)
+ In the expression: (# True || False, #)
+ In an equation for `f': f = (# True || False, #)
diff --git a/testsuite/tests/typecheck/should_fail/tcfail207.stderr b/testsuite/tests/typecheck/should_fail/tcfail207.stderr
index 307b4044d5..3e96a0994e 100644
--- a/testsuite/tests/typecheck/should_fail/tcfail207.stderr
+++ b/testsuite/tests/typecheck/should_fail/tcfail207.stderr
@@ -1,7 +1,7 @@
tcfail207.hs:5:7:
Couldn't match expected type `[Int] -> [Int]'
- with actual type `[a0]'
+ with actual type `[a1]'
In the return type of a call of `take'
Probable cause: `take' is applied to too many arguments
In the expression: take x []
diff --git a/testsuite/tests/typecheck/should_fail/tcfail208.stderr b/testsuite/tests/typecheck/should_fail/tcfail208.stderr
index 64200a696d..d606115ad1 100644
--- a/testsuite/tests/typecheck/should_fail/tcfail208.stderr
+++ b/testsuite/tests/typecheck/should_fail/tcfail208.stderr
@@ -4,10 +4,7 @@ tcfail208.hs:4:19:
from the context (Monad m, Eq a)
bound by the type signature for
f :: (Monad m, Eq a) => a -> m a -> Bool
- at tcfail208.hs:4:1-23
- Possible fix:
- add (Eq (m a)) to the context of
- the type signature for f :: (Monad m, Eq a) => a -> m a -> Bool
- or add an instance declaration for (Eq (m a))
+ at tcfail208.hs:3:6-40
+ Possible fix: add an instance declaration for (Eq (m a))
In the expression: (return x == y)
In an equation for `f': f x y = (return x == y)
diff --git a/testsuite/tests/typecheck/should_fail/tcfail209.stderr b/testsuite/tests/typecheck/should_fail/tcfail209.stderr
index 2101c99ca1..b5329ff6dc 100644
--- a/testsuite/tests/typecheck/should_fail/tcfail209.stderr
+++ b/testsuite/tests/typecheck/should_fail/tcfail209.stderr
@@ -1,12 +1,11 @@
-tcfail209.hs:5:1:
+tcfail209.hs:5:6:
Illegal irreducible constraint Showish a
(Use -XConstraintKinds to permit this)
In the type signature for `f': f :: Showish a => a -> a
-tcfail209.hs:8:8:
- Predicate `Show a' used as a type
- The first argument of a tuple should have kind `*',
- but `Show a' has kind `Constraint'
+tcfail209.hs:8:6:
+ Illegal tuple constraint (Show a, Num a)
+ (Use -XConstraintKinds to permit this)
In the type signature for `g':
g :: ((Show a, Num a), Eq a) => a -> a
diff --git a/testsuite/tests/typecheck/should_fail/tcfail212.stderr b/testsuite/tests/typecheck/should_fail/tcfail212.stderr
index c61b88c98c..66f0bb2e1f 100644
--- a/testsuite/tests/typecheck/should_fail/tcfail212.stderr
+++ b/testsuite/tests/typecheck/should_fail/tcfail212.stderr
@@ -1,12 +1,8 @@
tcfail212.hs:10:7:
- `Maybe' is not applied to enough type arguments
- The first argument of a tuple should have kind `*',
- but `Maybe' has kind `* -> *'
+ Expecting one more argument to `Maybe'
In the type signature for `f': f :: (Maybe, Either Int)
tcfail212.hs:13:7:
Expecting a lifted type, but `Int#' is unlifted
- The first argument of a tuple should have kind `*',
- but `Int#' has kind `#'
In the type signature for `g': g :: (Int#, Int#)
diff --git a/testsuite/tests/typecheck/should_fail/tcfail215.stderr b/testsuite/tests/typecheck/should_fail/tcfail215.stderr
index c38e24e55c..75c894eda6 100644
--- a/testsuite/tests/typecheck/should_fail/tcfail215.stderr
+++ b/testsuite/tests/typecheck/should_fail/tcfail215.stderr
@@ -1,6 +1,4 @@
tcfail215.hs:8:15:
Expecting a lifted type, but `Int#' is unlifted
- The type argument of the implicit parameter had kind `*',
- but `Int#' has kind `#'
In the type signature for `foo': foo :: ?x :: Int# => Int
diff --git a/testsuite/tests/typecheck/should_run/Defer01.hs b/testsuite/tests/typecheck/should_run/Defer01.hs
new file mode 100755
index 0000000000..368db9873f
--- /dev/null
+++ b/testsuite/tests/typecheck/should_run/Defer01.hs
@@ -0,0 +1,53 @@
+-- Test -fdefer-type-errors
+-- Should compile and run
+
+{-# LANGUAGE FlexibleContexts #-}
+{-# LANGUAGE GADTs #-}
+{-# OPTIONS_GHC -fdefer-type-errors #-}
+
+module Main where
+
+t5624 :: IO ()
+t5624 = putStr "Hello World" >> putStr ','
+
+a :: Int
+a = 'p'
+
+data B = B
+b :: B -> Bool
+b x = x == x
+
+data C a where
+ C1 :: C Int
+ C2 :: Bool -> C Bool
+
+c :: C Int -> Bool
+c (C2 x) = True
+
+d :: a -> a
+d = 1
+
+e = 'p'
+f = e 'q'
+
+h :: a -> (Char,Char)
+h x = (x,'c')
+
+data T a where
+ K :: a -> T a
+
+i a = seq (not (K a)) ()
+
+class MyClass a where myOp :: a -> String
+
+j = myOp 23 -- Two errors, should not combine them
+
+k :: (Int ~ Bool) => Int -> Bool
+k x = x
+
+l :: IO ()
+l = putChar >> putChar 'p'
+
+
+main :: IO ()
+main = print "No errors!"
diff --git a/testsuite/tests/typecheck/should_run/Defer01.stdout b/testsuite/tests/typecheck/should_run/Defer01.stdout
new file mode 100644
index 0000000000..19c37779d6
--- /dev/null
+++ b/testsuite/tests/typecheck/should_run/Defer01.stdout
@@ -0,0 +1 @@
+"No errors!"
diff --git a/testsuite/tests/typecheck/should_run/T5759.hs b/testsuite/tests/typecheck/should_run/T5759.hs
new file mode 100644
index 0000000000..a15b3b6882
--- /dev/null
+++ b/testsuite/tests/typecheck/should_run/T5759.hs
@@ -0,0 +1,19 @@
+{-# LANGUAGE MultiParamTypeClasses, FlexibleInstances, OverlappingInstances,
+ UndecidableInstances, FunctionalDependencies #-}
+
+module Main where
+
+class Container a b | a -> b where
+ make :: b -> a
+
+data Cont a = Cont a deriving (Show, Eq)
+
+instance Container (Cont a) a where
+ make x = Cont x
+
+instance (Container a b, Show a, Eq a, Num b) => Num a where
+ fromInteger x = make (fromInteger x)
+
+d = fromInteger 3 :: Cont Integer
+
+main = print d \ No newline at end of file
diff --git a/testsuite/tests/typecheck/should_run/T5759.stdout b/testsuite/tests/typecheck/should_run/T5759.stdout
new file mode 100644
index 0000000000..5a74c5f9fb
--- /dev/null
+++ b/testsuite/tests/typecheck/should_run/T5759.stdout
@@ -0,0 +1 @@
+Cont 3
diff --git a/testsuite/tests/typecheck/should_run/all.T b/testsuite/tests/typecheck/should_run/all.T
index aacdc7d082..5058c220ec 100644..100755
--- a/testsuite/tests/typecheck/should_run/all.T
+++ b/testsuite/tests/typecheck/should_run/all.T
@@ -11,6 +11,7 @@ test('tcrun002', only_compiler_types(['ghc']), compile_and_run, [''])
test('tcrun003', normal, compile_and_run, [''])
test('tcrun004', normal, compile_and_run, [''])
test('tcrun005', normal, compile_and_run, [''])
+test('Defer01', normal, compile_and_run, [''])
# -----------------------------------------------------------------------------
# Skip everything else if fast is on
@@ -85,3 +86,4 @@ test('T3500b', normal, compile_and_run, [''])
test('T4809', reqlib('mtl'), compile_and_run, [''])
test('T2722', normal, compile_and_run, [''])
test('mc17', normal, compile_and_run, [''])
+test('T5759', normal, compile_and_run, [''])
diff --git a/testsuite/tests/typecheck/should_run/tcrun035.stderr b/testsuite/tests/typecheck/should_run/tcrun035.stderr
index 67d341883e..8c795ce2f3 100644
--- a/testsuite/tests/typecheck/should_run/tcrun035.stderr
+++ b/testsuite/tests/typecheck/should_run/tcrun035.stderr
@@ -1,9 +1,10 @@
tcrun035.hs:13:12:
- Couldn't match expected type `IO a'
- with actual type `forall (m :: * -> *). Monad m => m a'
- Expected type: (forall (m :: * -> *). Monad m => m a) -> IO a
- Actual type: (forall (m :: * -> *). Monad m => m a)
- -> forall (m :: * -> *). Monad m => m a
+ Couldn't match type `forall (m :: * -> *). Monad m => m a'
+ with `IO a'
+ Expected type: (forall (m :: * -> *). Monad m => m a) -> IO a
+ Actual type: (forall (m :: * -> *). Monad m => m a)
+ -> forall (m :: * -> *). Monad m => m a
In the second argument of `(.)', namely `id'
In the expression: id . id
+ In an equation for `foo': foo = id . id
diff --git a/testsuite/tests/typecheck/should_run/tcrun041.hs b/testsuite/tests/typecheck/should_run/tcrun041.hs
index f78141adc7..6342fcd0e2 100644
--- a/testsuite/tests/typecheck/should_run/tcrun041.hs
+++ b/testsuite/tests/typecheck/should_run/tcrun041.hs
@@ -23,8 +23,7 @@ h = (# ,1, #)
unchanged :: a -> (# Int #)
-unchanged _binding = (# #) 1
-
+unchanged _binding = (# 1 #)
main = do
print (a 1, b False, c "Hello", c 1337, d "Yeah" "Baby")
diff --git a/testsuite/timeout/Makefile b/testsuite/timeout/Makefile
index 4b203cca16..e7335dfdfb 100644
--- a/testsuite/timeout/Makefile
+++ b/testsuite/timeout/Makefile
@@ -7,6 +7,7 @@ TOP = ..
# being defined.
ifneq "$(MAKECMDGOALS)" "clean"
ifneq "$(MAKECMDGOALS)" "distclean"
+ifneq "$(MAKECMDGOALS)" "maintainer-clean"
include $(TOP)/mk/boilerplate.mk
@@ -58,6 +59,7 @@ calibrate.out:
endif
endif
+endif
clean distclean maintainer-clean:
-./Setup clean