summaryrefslogtreecommitdiff
path: root/testsuite/tests/ghci
diff options
context:
space:
mode:
authorDavid Terei <davidterei@gmail.com>2011-07-20 11:09:03 -0700
committerDavid Terei <davidterei@gmail.com>2011-07-20 11:26:35 -0700
commit16514f272fb42af6e9c7674a9bd6c9dce369231f (patch)
treee4f332b45fe65e2a7a2451be5674f887b42bf199 /testsuite/tests/ghci
parentebd422aed41048476aa61dd4c520d43becd78682 (diff)
downloadhaskell-16514f272fb42af6e9c7674a9bd6c9dce369231f.tar.gz
Move tests from tests/ghc-regress/* to just tests/*
Diffstat (limited to 'testsuite/tests/ghci')
-rw-r--r--testsuite/tests/ghci/Makefile3
-rw-r--r--testsuite/tests/ghci/prog001/A.hs5
-rw-r--r--testsuite/tests/ghci/prog001/B.hs5
-rw-r--r--testsuite/tests/ghci/prog001/C.hs9
-rw-r--r--testsuite/tests/ghci/prog001/D1.hs5
-rw-r--r--testsuite/tests/ghci/prog001/D2.hs5
-rw-r--r--testsuite/tests/ghci/prog001/Makefile3
-rw-r--r--testsuite/tests/ghci/prog001/prog001.T2
-rw-r--r--testsuite/tests/ghci/prog001/prog001.script40
-rw-r--r--testsuite/tests/ghci/prog001/prog001.stdout4
-rw-r--r--testsuite/tests/ghci/prog002/A.hs6
-rw-r--r--testsuite/tests/ghci/prog002/A1.hs6
-rw-r--r--testsuite/tests/ghci/prog002/A2.hs6
-rw-r--r--testsuite/tests/ghci/prog002/B.hs7
-rw-r--r--testsuite/tests/ghci/prog002/C.hs5
-rw-r--r--testsuite/tests/ghci/prog002/D.hs5
-rw-r--r--testsuite/tests/ghci/prog002/Makefile3
-rw-r--r--testsuite/tests/ghci/prog002/prog002.T2
-rw-r--r--testsuite/tests/ghci/prog002/prog002.script45
-rw-r--r--testsuite/tests/ghci/prog002/prog002.stdout12
-rw-r--r--testsuite/tests/ghci/prog003/A.hs8
-rw-r--r--testsuite/tests/ghci/prog003/B.hs5
-rw-r--r--testsuite/tests/ghci/prog003/C.hs6
-rw-r--r--testsuite/tests/ghci/prog003/D.hs13
-rw-r--r--testsuite/tests/ghci/prog003/D1.hs13
-rw-r--r--testsuite/tests/ghci/prog003/D2.hs13
-rw-r--r--testsuite/tests/ghci/prog003/Makefile3
-rw-r--r--testsuite/tests/ghci/prog003/prog003.T6
-rw-r--r--testsuite/tests/ghci/prog003/prog003.script90
-rw-r--r--testsuite/tests/ghci/prog003/prog003.stdout43
-rw-r--r--testsuite/tests/ghci/prog004/Makefile11
-rw-r--r--testsuite/tests/ghci/prog004/prog004.T11
-rw-r--r--testsuite/tests/ghci/prog005/A.hs2
-rw-r--r--testsuite/tests/ghci/prog005/B.hs4
-rw-r--r--testsuite/tests/ghci/prog005/Makefile3
-rw-r--r--testsuite/tests/ghci/prog005/prog005.T2
-rw-r--r--testsuite/tests/ghci/prog005/prog005.script17
-rw-r--r--testsuite/tests/ghci/prog005/prog005.stdout2
-rw-r--r--testsuite/tests/ghci/prog006/A.hs6
-rw-r--r--testsuite/tests/ghci/prog006/Boot.hs-boot3
-rw-r--r--testsuite/tests/ghci/prog006/Boot1.hs5
-rw-r--r--testsuite/tests/ghci/prog006/Boot2.hs6
-rw-r--r--testsuite/tests/ghci/prog006/Makefile3
-rw-r--r--testsuite/tests/ghci/prog006/prog006.T1
-rw-r--r--testsuite/tests/ghci/prog006/prog006.script6
-rw-r--r--testsuite/tests/ghci/prog006/prog006.stderr4
-rw-r--r--testsuite/tests/ghci/prog007/A.hs8
-rw-r--r--testsuite/tests/ghci/prog007/B.hs7
-rw-r--r--testsuite/tests/ghci/prog007/C.hs10
-rw-r--r--testsuite/tests/ghci/prog007/C.hs-boot2
-rw-r--r--testsuite/tests/ghci/prog007/ghci.prog007.script2
-rw-r--r--testsuite/tests/ghci/prog007/ghci.prog007.stdout1
-rw-r--r--testsuite/tests/ghci/prog007/prog007.T2
-rw-r--r--testsuite/tests/ghci/prog008/A.hs14
-rw-r--r--testsuite/tests/ghci/prog008/ghci.prog008.script4
-rw-r--r--testsuite/tests/ghci/prog008/ghci.prog008.stdout8
-rw-r--r--testsuite/tests/ghci/prog008/prog008.T2
-rw-r--r--testsuite/tests/ghci/prog009/A1.hs3
-rw-r--r--testsuite/tests/ghci/prog009/A2.hs1
-rw-r--r--testsuite/tests/ghci/prog009/A3.hs2
-rw-r--r--testsuite/tests/ghci/prog009/B.hs3
-rw-r--r--testsuite/tests/ghci/prog009/Makefile3
-rw-r--r--testsuite/tests/ghci/prog009/ghci.prog009.T4
-rw-r--r--testsuite/tests/ghci/prog009/ghci.prog009.script36
-rw-r--r--testsuite/tests/ghci/prog009/ghci.prog009.stderr8
-rw-r--r--testsuite/tests/ghci/prog009/ghci.prog009.stdout8
-rw-r--r--testsuite/tests/ghci/prog010/A.hs5
-rw-r--r--testsuite/tests/ghci/prog010/B.hs3
-rw-r--r--testsuite/tests/ghci/prog010/ghci.prog010.script33
-rw-r--r--testsuite/tests/ghci/prog010/ghci.prog010.stderr2
-rw-r--r--testsuite/tests/ghci/prog010/ghci.prog010.stdout9
-rw-r--r--testsuite/tests/ghci/prog011/Makefile3
-rw-r--r--testsuite/tests/ghci/prog011/prog011.T2
-rw-r--r--testsuite/tests/ghci/prog011/prog011.hx16
-rw-r--r--testsuite/tests/ghci/prog011/prog011.script3
-rw-r--r--testsuite/tests/ghci/prog011/prog011.stderr2
-rw-r--r--testsuite/tests/ghci/prog011/prog011.stdout3
-rw-r--r--testsuite/tests/ghci/scripts/1914.script16
-rw-r--r--testsuite/tests/ghci/scripts/1914.stderr2
-rw-r--r--testsuite/tests/ghci/scripts/1914.stdout7
-rw-r--r--testsuite/tests/ghci/scripts/2452.script2
-rw-r--r--testsuite/tests/ghci/scripts/2452.stderr2
-rw-r--r--testsuite/tests/ghci/scripts/2816.script5
-rw-r--r--testsuite/tests/ghci/scripts/2816.stderr2
-rw-r--r--testsuite/tests/ghci/scripts/2816.stdout3
-rw-r--r--testsuite/tests/ghci/scripts/2976.script8
-rw-r--r--testsuite/tests/ghci/scripts/2976.stdout6
-rw-r--r--testsuite/tests/ghci/scripts/4051.hs2
-rw-r--r--testsuite/tests/ghci/scripts/4051.script4
-rw-r--r--testsuite/tests/ghci/scripts/4051.stdout1
-rw-r--r--testsuite/tests/ghci/scripts/Makefile33
-rw-r--r--testsuite/tests/ghci/scripts/T2766.script4
-rw-r--r--testsuite/tests/ghci/scripts/T2766.stdout2
-rw-r--r--testsuite/tests/ghci/scripts/T3263.hs9
-rw-r--r--testsuite/tests/ghci/scripts/T3263.script1
-rw-r--r--testsuite/tests/ghci/scripts/T3263.stderr5
-rw-r--r--testsuite/tests/ghci/scripts/T4015.hs7
-rw-r--r--testsuite/tests/ghci/scripts/T4015.script9
-rw-r--r--testsuite/tests/ghci/scripts/T4015.stdout20
-rw-r--r--testsuite/tests/ghci/scripts/T4087.hs6
-rw-r--r--testsuite/tests/ghci/scripts/T4087.script2
-rw-r--r--testsuite/tests/ghci/scripts/T4087.stdout3
-rw-r--r--testsuite/tests/ghci/scripts/T4127.script3
-rw-r--r--testsuite/tests/ghci/scripts/T4127.stdout1
-rw-r--r--testsuite/tests/ghci/scripts/T4127a.script2
-rw-r--r--testsuite/tests/ghci/scripts/T4127a.stderr7
-rw-r--r--testsuite/tests/ghci/scripts/T4316.script23
-rw-r--r--testsuite/tests/ghci/scripts/T4316.stdout5
-rw-r--r--testsuite/tests/ghci/scripts/T4832.script2
-rw-r--r--testsuite/tests/ghci/scripts/T4832.stdout1
-rw-r--r--testsuite/tests/ghci/scripts/T5045.hs44
-rw-r--r--testsuite/tests/ghci/scripts/T5045.script2
-rw-r--r--testsuite/tests/ghci/scripts/T5130.script3
-rw-r--r--testsuite/tests/ghci/scripts/T5130.stderr6
-rw-r--r--testsuite/tests/ghci/scripts/T789.hs808
-rw-r--r--testsuite/tests/ghci/scripts/T789.script2
-rw-r--r--testsuite/tests/ghci/scripts/T789.stdout1
-rw-r--r--testsuite/tests/ghci/scripts/all.T77
-rw-r--r--testsuite/tests/ghci/scripts/ghci001.script3
-rw-r--r--testsuite/tests/ghci/scripts/ghci001.stdout2
-rw-r--r--testsuite/tests/ghci/scripts/ghci002.script4
-rw-r--r--testsuite/tests/ghci/scripts/ghci002.stdout2
-rw-r--r--testsuite/tests/ghci/scripts/ghci003.script7
-rw-r--r--testsuite/tests/ghci/scripts/ghci003.stdout6
-rw-r--r--testsuite/tests/ghci/scripts/ghci004.hs2
-rw-r--r--testsuite/tests/ghci/scripts/ghci004.script4
-rw-r--r--testsuite/tests/ghci/scripts/ghci004.stderr0
-rw-r--r--testsuite/tests/ghci/scripts/ghci004.stdout1
-rw-r--r--testsuite/tests/ghci/scripts/ghci005.script18
-rw-r--r--testsuite/tests/ghci/scripts/ghci005.stdout9
-rw-r--r--testsuite/tests/ghci/scripts/ghci006.hs8
-rw-r--r--testsuite/tests/ghci/scripts/ghci006.script6
-rw-r--r--testsuite/tests/ghci/scripts/ghci006.stderr0
-rw-r--r--testsuite/tests/ghci/scripts/ghci006.stdout1
-rw-r--r--testsuite/tests/ghci/scripts/ghci007.script2
-rw-r--r--testsuite/tests/ghci/scripts/ghci007.stdout1
-rw-r--r--testsuite/tests/ghci/scripts/ghci008.script7
-rw-r--r--testsuite/tests/ghci/scripts/ghci008.stdout36
-rw-r--r--testsuite/tests/ghci/scripts/ghci009.script20
-rw-r--r--testsuite/tests/ghci/scripts/ghci009.stdout16
-rw-r--r--testsuite/tests/ghci/scripts/ghci010.script2
-rw-r--r--testsuite/tests/ghci/scripts/ghci010.stdout14
-rw-r--r--testsuite/tests/ghci/scripts/ghci011.script4
-rw-r--r--testsuite/tests/ghci/scripts/ghci011.stdout21
-rw-r--r--testsuite/tests/ghci/scripts/ghci012.script2
-rw-r--r--testsuite/tests/ghci/scripts/ghci012.stdout1
-rw-r--r--testsuite/tests/ghci/scripts/ghci013.script5
-rw-r--r--testsuite/tests/ghci/scripts/ghci013.stdout1
-rw-r--r--testsuite/tests/ghci/scripts/ghci014.hs7
-rw-r--r--testsuite/tests/ghci/scripts/ghci014.script983
-rw-r--r--testsuite/tests/ghci/scripts/ghci014.stdout982
-rw-r--r--testsuite/tests/ghci/scripts/ghci015.hs43
-rw-r--r--testsuite/tests/ghci/scripts/ghci015.script388
-rw-r--r--testsuite/tests/ghci/scripts/ghci015.stdout387
-rw-r--r--testsuite/tests/ghci/scripts/ghci016.hs18
-rw-r--r--testsuite/tests/ghci/scripts/ghci016.script2
-rw-r--r--testsuite/tests/ghci/scripts/ghci016.stdout1
-rw-r--r--testsuite/tests/ghci/scripts/ghci017.script1
-rw-r--r--testsuite/tests/ghci/scripts/ghci017.stdout1
-rw-r--r--testsuite/tests/ghci/scripts/ghci018.script4
-rw-r--r--testsuite/tests/ghci/scripts/ghci018.stdout2
-rw-r--r--testsuite/tests/ghci/scripts/ghci019.hs9
-rw-r--r--testsuite/tests/ghci/scripts/ghci019.script2
-rw-r--r--testsuite/tests/ghci/scripts/ghci019.stdout2
-rw-r--r--testsuite/tests/ghci/scripts/ghci020.script1
-rw-r--r--testsuite/tests/ghci/scripts/ghci020.stdout1
-rw-r--r--testsuite/tests/ghci/scripts/ghci021.script4
-rw-r--r--testsuite/tests/ghci/scripts/ghci021.stderr2
-rw-r--r--testsuite/tests/ghci/scripts/ghci021.stdout1
-rw-r--r--testsuite/tests/ghci/scripts/ghci022.hs2
-rw-r--r--testsuite/tests/ghci/scripts/ghci022.script2
-rw-r--r--testsuite/tests/ghci/scripts/ghci022.stderr3
-rw-r--r--testsuite/tests/ghci/scripts/ghci022.stdout0
-rw-r--r--testsuite/tests/ghci/scripts/ghci023.ghci10
-rw-r--r--testsuite/tests/ghci/scripts/ghci023.script17
-rw-r--r--testsuite/tests/ghci/scripts/ghci023.stdout16
-rw-r--r--testsuite/tests/ghci/scripts/ghci024.script10
-rw-r--r--testsuite/tests/ghci/scripts/ghci024.stderr1
-rw-r--r--testsuite/tests/ghci/scripts/ghci024.stdout18
-rw-r--r--testsuite/tests/ghci/scripts/ghci025.hs22
-rw-r--r--testsuite/tests/ghci/scripts/ghci025.script27
-rw-r--r--testsuite/tests/ghci/scripts/ghci025.stdout111
-rw-r--r--testsuite/tests/ghci/scripts/ghci025.stdout-ghc-7.0111
-rw-r--r--testsuite/tests/ghci/scripts/ghci026.script6
-rw-r--r--testsuite/tests/ghci/scripts/ghci026.stdout15
-rw-r--r--testsuite/tests/ghci/scripts/ghci027.hs5
-rw-r--r--testsuite/tests/ghci/scripts/ghci027.script8
-rw-r--r--testsuite/tests/ghci/scripts/ghci027.stdout6
-rw-r--r--testsuite/tests/ghci/scripts/ghci027_1.hs5
-rw-r--r--testsuite/tests/ghci/scripts/ghci027_2.hs5
-rw-r--r--testsuite/tests/ghci/scripts/ghci028.script4
-rw-r--r--testsuite/tests/ghci/scripts/ghci028.stdout1
-rw-r--r--testsuite/tests/ghci/scripts/ghci029.script11
-rw-r--r--testsuite/tests/ghci/scripts/ghci029.stdout7
-rw-r--r--testsuite/tests/ghci/scripts/ghci030.hs9
-rw-r--r--testsuite/tests/ghci/scripts/ghci030.script3
-rw-r--r--testsuite/tests/ghci/scripts/ghci030.stdout6
-rw-r--r--testsuite/tests/ghci/scripts/ghci031.hs8
-rw-r--r--testsuite/tests/ghci/scripts/ghci031.script2
-rw-r--r--testsuite/tests/ghci/scripts/ghci031.stderr3
-rw-r--r--testsuite/tests/ghci/scripts/ghci031.stdout1
-rw-r--r--testsuite/tests/ghci/scripts/ghci032.script8
-rw-r--r--testsuite/tests/ghci/scripts/ghci032.stdout1
-rw-r--r--testsuite/tests/ghci/scripts/ghci033.hs5
-rw-r--r--testsuite/tests/ghci/scripts/ghci033.script2
-rw-r--r--testsuite/tests/ghci/scripts/ghci033.stdout2
-rw-r--r--testsuite/tests/ghci/scripts/ghci034.script3
-rw-r--r--testsuite/tests/ghci/scripts/ghci034.stderr2
-rw-r--r--testsuite/tests/ghci/scripts/ghci034.stdout1
-rw-r--r--testsuite/tests/ghci/scripts/ghci035.script4
-rw-r--r--testsuite/tests/ghci/scripts/ghci035.stdout1
-rw-r--r--testsuite/tests/ghci/scripts/ghci036.script19
-rw-r--r--testsuite/tests/ghci/scripts/ghci036.stderr22
-rw-r--r--testsuite/tests/ghci/scripts/ghci036.stdout2
-rw-r--r--testsuite/tests/ghci/scripts/ghci037.script3
-rw-r--r--testsuite/tests/ghci/scripts/ghci037.stdout2
-rw-r--r--testsuite/tests/ghci/shell.hs9
-rw-r--r--testsuite/tests/ghci/should_run/2589.hs8
-rw-r--r--testsuite/tests/ghci/should_run/2589.stdout1
-rw-r--r--testsuite/tests/ghci/should_run/2881.hs8
-rw-r--r--testsuite/tests/ghci/should_run/2881.stdout1
-rw-r--r--testsuite/tests/ghci/should_run/3171.stdout1
-rw-r--r--testsuite/tests/ghci/should_run/Makefile9
-rw-r--r--testsuite/tests/ghci/should_run/all.T18
-rw-r--r--testsuite/tests/ghci/should_run/ghcirun001.hs30
-rw-r--r--testsuite/tests/ghci/should_run/ghcirun001.stdout1
-rw-r--r--testsuite/tests/ghci/should_run/ghcirun002.hs72
-rw-r--r--testsuite/tests/ghci/should_run/ghcirun002.stdout1
-rw-r--r--testsuite/tests/ghci/should_run/ghcirun003.hs50
-rw-r--r--testsuite/tests/ghci/should_run/ghcirun003.stdout1
230 files changed, 5609 insertions, 0 deletions
diff --git a/testsuite/tests/ghci/Makefile b/testsuite/tests/ghci/Makefile
new file mode 100644
index 0000000000..9a36a1c5fe
--- /dev/null
+++ b/testsuite/tests/ghci/Makefile
@@ -0,0 +1,3 @@
+TOP=../..
+include $(TOP)/mk/boilerplate.mk
+include $(TOP)/mk/test.mk
diff --git a/testsuite/tests/ghci/prog001/A.hs b/testsuite/tests/ghci/prog001/A.hs
new file mode 100644
index 0000000000..ca0a7e864b
--- /dev/null
+++ b/testsuite/tests/ghci/prog001/A.hs
@@ -0,0 +1,5 @@
+module Main where
+
+import B
+
+main = print ("hello world" ++ show (f 42))
diff --git a/testsuite/tests/ghci/prog001/B.hs b/testsuite/tests/ghci/prog001/B.hs
new file mode 100644
index 0000000000..e57c31ffff
--- /dev/null
+++ b/testsuite/tests/ghci/prog001/B.hs
@@ -0,0 +1,5 @@
+module B (module B, module C) where
+
+import C
+
+k x = x `mod` 11
diff --git a/testsuite/tests/ghci/prog001/C.hs b/testsuite/tests/ghci/prog001/C.hs
new file mode 100644
index 0000000000..006014f98c
--- /dev/null
+++ b/testsuite/tests/ghci/prog001/C.hs
@@ -0,0 +1,9 @@
+module C (f, g, h) where
+
+import D
+
+g x = f x + 1
+
+h x = x `div` 2
+
+data C = C {x :: Int}
diff --git a/testsuite/tests/ghci/prog001/D1.hs b/testsuite/tests/ghci/prog001/D1.hs
new file mode 100644
index 0000000000..35184c7afe
--- /dev/null
+++ b/testsuite/tests/ghci/prog001/D1.hs
@@ -0,0 +1,5 @@
+module D where
+
+data T = A Int | B Float deriving Eq
+
+f x = x + x
diff --git a/testsuite/tests/ghci/prog001/D2.hs b/testsuite/tests/ghci/prog001/D2.hs
new file mode 100644
index 0000000000..997171cdb6
--- /dev/null
+++ b/testsuite/tests/ghci/prog001/D2.hs
@@ -0,0 +1,5 @@
+module D where
+
+data T = A Int | B Float deriving Eq
+
+f x = x + 1
diff --git a/testsuite/tests/ghci/prog001/Makefile b/testsuite/tests/ghci/prog001/Makefile
new file mode 100644
index 0000000000..9101fbd40a
--- /dev/null
+++ b/testsuite/tests/ghci/prog001/Makefile
@@ -0,0 +1,3 @@
+TOP=../../..
+include $(TOP)/mk/boilerplate.mk
+include $(TOP)/mk/test.mk
diff --git a/testsuite/tests/ghci/prog001/prog001.T b/testsuite/tests/ghci/prog001/prog001.T
new file mode 100644
index 0000000000..4dfdb69456
--- /dev/null
+++ b/testsuite/tests/ghci/prog001/prog001.T
@@ -0,0 +1,2 @@
+test('prog001', extra_clean(['D.hs']), ghci_script, ['prog001.script'])
+
diff --git a/testsuite/tests/ghci/prog001/prog001.script b/testsuite/tests/ghci/prog001/prog001.script
new file mode 100644
index 0000000000..77fb21b9bb
--- /dev/null
+++ b/testsuite/tests/ghci/prog001/prog001.script
@@ -0,0 +1,40 @@
+:unset +s
+
+:l ../shell.hs
+:def shell (\s -> do shell s; return "")
+
+-- first, tidy up:
+:shell rm -f *.hi *.o *~
+:shell cp D1.hs D.hs
+
+-- load the program (all interpreted)
+:load A.hs
+
+-- reloading should do nothing
+:reload
+
+-- make sure `main' works
+main
+
+-- touch a module + recompile
+:shell sleep 1
+:shell touch C.hs
+:reload
+
+-- make sure `main' still works
+main
+
+-- compile D & reload
+:shell "$HC" $HC_OPTS -fforce-recomp -c D.hs
+:reload
+main
+
+-- change D, recompile & reload
+:shell cp D2.hs D.hs
+:shell "$HC" $HC_OPTS -fforce-recomp -c D.hs
+:reload
+:load A.hs
+
+-- make sure we're picking up the new D, via B
+:module B
+g 42
diff --git a/testsuite/tests/ghci/prog001/prog001.stdout b/testsuite/tests/ghci/prog001/prog001.stdout
new file mode 100644
index 0000000000..eef24c2153
--- /dev/null
+++ b/testsuite/tests/ghci/prog001/prog001.stdout
@@ -0,0 +1,4 @@
+"hello world84"
+"hello world84"
+"hello world84"
+44
diff --git a/testsuite/tests/ghci/prog002/A.hs b/testsuite/tests/ghci/prog002/A.hs
new file mode 100644
index 0000000000..6dc493aaa2
--- /dev/null
+++ b/testsuite/tests/ghci/prog002/A.hs
@@ -0,0 +1,6 @@
+module A where
+
+data T = A Int | B Float deriving Eq
+
+f :: Int -> Int
+f x = x + 3
diff --git a/testsuite/tests/ghci/prog002/A1.hs b/testsuite/tests/ghci/prog002/A1.hs
new file mode 100644
index 0000000000..069e8ef07a
--- /dev/null
+++ b/testsuite/tests/ghci/prog002/A1.hs
@@ -0,0 +1,6 @@
+module A where
+
+data T = A Int | B Float deriving Eq
+
+f :: Double -> Double
+f x = x + x
diff --git a/testsuite/tests/ghci/prog002/A2.hs b/testsuite/tests/ghci/prog002/A2.hs
new file mode 100644
index 0000000000..6dc493aaa2
--- /dev/null
+++ b/testsuite/tests/ghci/prog002/A2.hs
@@ -0,0 +1,6 @@
+module A where
+
+data T = A Int | B Float deriving Eq
+
+f :: Int -> Int
+f x = x + 3
diff --git a/testsuite/tests/ghci/prog002/B.hs b/testsuite/tests/ghci/prog002/B.hs
new file mode 100644
index 0000000000..6aced23415
--- /dev/null
+++ b/testsuite/tests/ghci/prog002/B.hs
@@ -0,0 +1,7 @@
+module B (f, g, h) where
+
+import A
+
+g x = f x + 1
+
+h x = x `div` 2
diff --git a/testsuite/tests/ghci/prog002/C.hs b/testsuite/tests/ghci/prog002/C.hs
new file mode 100644
index 0000000000..b3baac2979
--- /dev/null
+++ b/testsuite/tests/ghci/prog002/C.hs
@@ -0,0 +1,5 @@
+module C (module B, module C) where
+
+import B
+
+k x = x `mod` 11
diff --git a/testsuite/tests/ghci/prog002/D.hs b/testsuite/tests/ghci/prog002/D.hs
new file mode 100644
index 0000000000..35672bd88c
--- /dev/null
+++ b/testsuite/tests/ghci/prog002/D.hs
@@ -0,0 +1,5 @@
+module Main where
+
+import C
+
+main = print ("hello world" ++ show (f 42))
diff --git a/testsuite/tests/ghci/prog002/Makefile b/testsuite/tests/ghci/prog002/Makefile
new file mode 100644
index 0000000000..9101fbd40a
--- /dev/null
+++ b/testsuite/tests/ghci/prog002/Makefile
@@ -0,0 +1,3 @@
+TOP=../../..
+include $(TOP)/mk/boilerplate.mk
+include $(TOP)/mk/test.mk
diff --git a/testsuite/tests/ghci/prog002/prog002.T b/testsuite/tests/ghci/prog002/prog002.T
new file mode 100644
index 0000000000..ea39005f6f
--- /dev/null
+++ b/testsuite/tests/ghci/prog002/prog002.T
@@ -0,0 +1,2 @@
+test('prog002', extra_clean(['A.hi']), ghci_script, ['prog002.script'])
+
diff --git a/testsuite/tests/ghci/prog002/prog002.script b/testsuite/tests/ghci/prog002/prog002.script
new file mode 100644
index 0000000000..cecbe4091a
--- /dev/null
+++ b/testsuite/tests/ghci/prog002/prog002.script
@@ -0,0 +1,45 @@
+:unset +s
+:unset +t
+
+:l ../shell.hs
+:def shell (\s -> do shell s; return "")
+
+-- first, clean up:
+:shell rm -f *.hi *.o *~
+:shell cp A1.hs A.hs
+
+:load D.hs
+
+-- compile A & reload
+:shell "$HC" $HC_OPTS -fforce-recomp -c A.hs
+:reload
+
+B.g 42
+B.g 42
+B.g 42
+
+-- swap A2 for A, compile & reload
+:shell sleep 1
+:shell cp A2.hs A.hs
+:shell "$HC" $HC_OPTS -fforce-recomp -c A.hs
+:reload
+-- the system should ignore the compiled version and compile its own.
+
+B.g 42
+B.g 42
+B.g 42
+
+-- pick up newly compiled A
+:load D.hs
+
+B.g 42
+B.g 42
+B.g 42
+
+-- remove A.o: system should recompile A
+:shell rm A.o
+:reload
+
+B.g 42
+B.g 42
+B.g 42
diff --git a/testsuite/tests/ghci/prog002/prog002.stdout b/testsuite/tests/ghci/prog002/prog002.stdout
new file mode 100644
index 0000000000..aece15514e
--- /dev/null
+++ b/testsuite/tests/ghci/prog002/prog002.stdout
@@ -0,0 +1,12 @@
+85.0
+85.0
+85.0
+46
+46
+46
+46
+46
+46
+46
+46
+46
diff --git a/testsuite/tests/ghci/prog003/A.hs b/testsuite/tests/ghci/prog003/A.hs
new file mode 100644
index 0000000000..6e9351c066
--- /dev/null
+++ b/testsuite/tests/ghci/prog003/A.hs
@@ -0,0 +1,8 @@
+module A(main,a) where
+
+import B
+import C(c)
+
+main = print (a 42)
+
+a x = b x + c x
diff --git a/testsuite/tests/ghci/prog003/B.hs b/testsuite/tests/ghci/prog003/B.hs
new file mode 100644
index 0000000000..cd579657fb
--- /dev/null
+++ b/testsuite/tests/ghci/prog003/B.hs
@@ -0,0 +1,5 @@
+module B where
+
+import D
+
+b x = d x
diff --git a/testsuite/tests/ghci/prog003/C.hs b/testsuite/tests/ghci/prog003/C.hs
new file mode 100644
index 0000000000..f26067c78a
--- /dev/null
+++ b/testsuite/tests/ghci/prog003/C.hs
@@ -0,0 +1,6 @@
+module C where
+
+import D
+
+c x = d x
+
diff --git a/testsuite/tests/ghci/prog003/D.hs b/testsuite/tests/ghci/prog003/D.hs
new file mode 100644
index 0000000000..a53a8c3da6
--- /dev/null
+++ b/testsuite/tests/ghci/prog003/D.hs
@@ -0,0 +1,13 @@
+module D where
+
+-- data types and an instance
+data D a = A Int | B Float deriving Eq
+newtype N a = N Double
+type T a = (Int,Double)
+
+-- a class
+class C a where c :: a -> Int
+
+-- a function
+d :: Float -> Float
+d x = x / 3
diff --git a/testsuite/tests/ghci/prog003/D1.hs b/testsuite/tests/ghci/prog003/D1.hs
new file mode 100644
index 0000000000..4414d65d2a
--- /dev/null
+++ b/testsuite/tests/ghci/prog003/D1.hs
@@ -0,0 +1,13 @@
+module D where
+
+-- data types and an instance
+data D a = A Int | B Float deriving Eq
+newtype N a = N Double
+type T a = (Int,Double)
+
+-- a class
+class C a where c :: a -> Int
+
+-- a function
+d :: Int -> Int
+d x = x * 2
diff --git a/testsuite/tests/ghci/prog003/D2.hs b/testsuite/tests/ghci/prog003/D2.hs
new file mode 100644
index 0000000000..a53a8c3da6
--- /dev/null
+++ b/testsuite/tests/ghci/prog003/D2.hs
@@ -0,0 +1,13 @@
+module D where
+
+-- data types and an instance
+data D a = A Int | B Float deriving Eq
+newtype N a = N Double
+type T a = (Int,Double)
+
+-- a class
+class C a where c :: a -> Int
+
+-- a function
+d :: Float -> Float
+d x = x / 3
diff --git a/testsuite/tests/ghci/prog003/Makefile b/testsuite/tests/ghci/prog003/Makefile
new file mode 100644
index 0000000000..9101fbd40a
--- /dev/null
+++ b/testsuite/tests/ghci/prog003/Makefile
@@ -0,0 +1,3 @@
+TOP=../../..
+include $(TOP)/mk/boilerplate.mk
+include $(TOP)/mk/test.mk
diff --git a/testsuite/tests/ghci/prog003/prog003.T b/testsuite/tests/ghci/prog003/prog003.T
new file mode 100644
index 0000000000..c87bc90597
--- /dev/null
+++ b/testsuite/tests/ghci/prog003/prog003.T
@@ -0,0 +1,6 @@
+test('prog003',
+ extra_clean(['D.hi', 'C.hi', 'C.o', 'B.hi', 'B.o', 'A', 'A.hi', 'A.o',
+ 'a.out']),
+ ghci_script,
+ ['prog003.script'])
+
diff --git a/testsuite/tests/ghci/prog003/prog003.script b/testsuite/tests/ghci/prog003/prog003.script
new file mode 100644
index 0000000000..9cdf484a59
--- /dev/null
+++ b/testsuite/tests/ghci/prog003/prog003.script
@@ -0,0 +1,90 @@
+:unset +s
+:unset +t
+-- A small multi-module program, with 4 modules, A, B, C, D. B & C
+-- depend on D, and A depends on B & C.
+--
+-- This test will try various combinations of compiled and interpreted
+-- versions of each module, and make sure each combination behaves
+-- sensibly.
+
+:l ../shell.hs
+:def shell (\s -> do shell s; return "")
+
+-- clean up
+:shell rm -f *.o *.hi
+:shell cp D1.hs D.hs
+
+putStrLn "Run 1"
+:load A
+:type a
+a 42
+
+putStrLn "Run 2"
+-- sigh; sleep 1, because the filesystem only stores times in seconds
+:shell sleep 1; cp D2.hs D.hs
+:reload
+:type (A.a,B.b,C.c,D.d)
+a 42
+
+putStrLn "Run 3"
+-- compile D, check that :reload doesn't pick it up
+:shell "$HC" $HC_OPTS -c D.hs
+:reload
+:type (A.a,B.b,C.c,D.d)
+a 42
+
+putStrLn "Run 4"
+-- pick up the compiled D now, with :load
+:load A
+:type (A.a,B.b,C.c,D.d)
+a 42
+
+putStrLn "Run 5"
+-- D,C compiled
+:shell "$HC" $HC_OPTS -c C.hs
+:load A
+:type (A.a,B.b,C.c,D.d)
+a 42
+
+putStrLn "Run 6"
+-- D,C,B compiled
+:shell "$HC" $HC_OPTS -c B.hs
+:load A
+:type (A.a,B.b,C.c,D.d)
+a 42
+
+putStrLn "Run 7"
+-- D,C,B,A compiled
+:shell "$HC" $HC_OPTS -c A.hs
+:load A
+:type (A.a,B.b,C.c,D.d)
+a 42
+
+putStrLn "Run 8"
+-- D,C,A compiled (better not use A.o)
+:shell rm B.o
+:load A
+:type (A.a,B.b,C.c,D.d)
+a 42
+
+putStrLn "Run 9"
+-- D,A compiled (better not use A.o)
+:shell rm C.o
+:load A
+:type (A.a,B.b,C.c,D.d)
+a 42
+
+putStrLn "Run 10"
+-- A compiled (better not use A.o)
+:shell rm D.o
+:load A
+:type (A.a,B.b,C.c,D.d)
+a 42
+
+putStrLn "Run 11"
+-- A,B,C compiled (better not use A.o, B.o, C.o)
+:shell "$HC" $HC_OPTS --make -v0 A
+:shell rm D.o
+:load A
+:type (A.a,B.b,C.c,D.d)
+a 42
diff --git a/testsuite/tests/ghci/prog003/prog003.stdout b/testsuite/tests/ghci/prog003/prog003.stdout
new file mode 100644
index 0000000000..dd299f34c8
--- /dev/null
+++ b/testsuite/tests/ghci/prog003/prog003.stdout
@@ -0,0 +1,43 @@
+Run 1
+a :: Int -> Int
+168
+Run 2
+(A.a,B.b,C.c,D.d)
+ :: (Float -> Float, Float -> Float, Float -> Float, Float -> Float)
+28.0
+Run 3
+(A.a,B.b,C.c,D.d)
+ :: (Float -> Float, Float -> Float, Float -> Float, Float -> Float)
+28.0
+Run 4
+(A.a,B.b,C.c,D.d)
+ :: (Float -> Float, Float -> Float, Float -> Float, Float -> Float)
+28.0
+Run 5
+(A.a,B.b,C.c,D.d)
+ :: (Float -> Float, Float -> Float, Float -> Float, Float -> Float)
+28.0
+Run 6
+(A.a,B.b,C.c,D.d)
+ :: (Float -> Float, Float -> Float, Float -> Float, Float -> Float)
+28.0
+Run 7
+(A.a,B.b,C.c,D.d)
+ :: (Float -> Float, Float -> Float, Float -> Float, Float -> Float)
+28.0
+Run 8
+(A.a,B.b,C.c,D.d)
+ :: (Float -> Float, Float -> Float, Float -> Float, Float -> Float)
+28.0
+Run 9
+(A.a,B.b,C.c,D.d)
+ :: (Float -> Float, Float -> Float, Float -> Float, Float -> Float)
+28.0
+Run 10
+(A.a,B.b,C.c,D.d)
+ :: (Float -> Float, Float -> Float, Float -> Float, Float -> Float)
+28.0
+Run 11
+(A.a,B.b,C.c,D.d)
+ :: (Float -> Float, Float -> Float, Float -> Float, Float -> Float)
+28.0
diff --git a/testsuite/tests/ghci/prog004/Makefile b/testsuite/tests/ghci/prog004/Makefile
new file mode 100644
index 0000000000..61631fcd48
--- /dev/null
+++ b/testsuite/tests/ghci/prog004/Makefile
@@ -0,0 +1,11 @@
+TOP=../../..
+include $(TOP)/mk/boilerplate.mk
+include $(TOP)/mk/test.mk
+
+# Test that we can load a C object compiled with -g into GHCi.
+# (sourceforge bug #1073501).
+ghciprog004:
+ rm -f ctest.o
+ echo "int foo(){}" >ctest.c
+ '$(TEST_HC)' $(TEST_HC_OPTS) -optc-g -c ctest.c
+ echo ":q" | '$(TEST_HC)' $(TEST_HC_OPTS) -v0 --interactive -ignore-dot-ghci ctest.o
diff --git a/testsuite/tests/ghci/prog004/prog004.T b/testsuite/tests/ghci/prog004/prog004.T
new file mode 100644
index 0000000000..a67ebf35c8
--- /dev/null
+++ b/testsuite/tests/ghci/prog004/prog004.T
@@ -0,0 +1,11 @@
+setTestOpts(only_compiler_types(['ghc']))
+
+def f(opts):
+ if not ('ghci' in config.run_ways):
+ opts.skip = 1
+setTestOpts(f)
+
+test('ghciprog004',
+ extra_clean(['ctest.c', 'ctest.o']),
+ run_command,
+ ['$MAKE -s --no-print-directory ghciprog004'])
diff --git a/testsuite/tests/ghci/prog005/A.hs b/testsuite/tests/ghci/prog005/A.hs
new file mode 100644
index 0000000000..e14d0ebe45
--- /dev/null
+++ b/testsuite/tests/ghci/prog005/A.hs
@@ -0,0 +1,2 @@
+module A where
+x = 1 :: Int
diff --git a/testsuite/tests/ghci/prog005/B.hs b/testsuite/tests/ghci/prog005/B.hs
new file mode 100644
index 0000000000..57b34b2be2
--- /dev/null
+++ b/testsuite/tests/ghci/prog005/B.hs
@@ -0,0 +1,4 @@
+module B (y) where
+import A
+y = 2 :: Int
+z = 3 :: Int
diff --git a/testsuite/tests/ghci/prog005/Makefile b/testsuite/tests/ghci/prog005/Makefile
new file mode 100644
index 0000000000..9101fbd40a
--- /dev/null
+++ b/testsuite/tests/ghci/prog005/Makefile
@@ -0,0 +1,3 @@
+TOP=../../..
+include $(TOP)/mk/boilerplate.mk
+include $(TOP)/mk/test.mk
diff --git a/testsuite/tests/ghci/prog005/prog005.T b/testsuite/tests/ghci/prog005/prog005.T
new file mode 100644
index 0000000000..ca2bfe5237
--- /dev/null
+++ b/testsuite/tests/ghci/prog005/prog005.T
@@ -0,0 +1,2 @@
+test('prog005', normal, ghci_script, ['prog005.script'])
+
diff --git a/testsuite/tests/ghci/prog005/prog005.script b/testsuite/tests/ghci/prog005/prog005.script
new file mode 100644
index 0000000000..d7ca33fa83
--- /dev/null
+++ b/testsuite/tests/ghci/prog005/prog005.script
@@ -0,0 +1,17 @@
+:unset +s
+:unset +t
+
+:load B
+
+-- eval something that isn't exported from B
+z
+
+:!sleep 1
+:!touch A.hs
+:reload
+
+-- A should be recompiled, B will be skipped. We should still have
+-- the full top-level scope of B available, though. This was
+-- nearly broken in GHC 6.4
+z
+
diff --git a/testsuite/tests/ghci/prog005/prog005.stdout b/testsuite/tests/ghci/prog005/prog005.stdout
new file mode 100644
index 0000000000..a5c8806279
--- /dev/null
+++ b/testsuite/tests/ghci/prog005/prog005.stdout
@@ -0,0 +1,2 @@
+3
+3
diff --git a/testsuite/tests/ghci/prog006/A.hs b/testsuite/tests/ghci/prog006/A.hs
new file mode 100644
index 0000000000..cc38a11890
--- /dev/null
+++ b/testsuite/tests/ghci/prog006/A.hs
@@ -0,0 +1,6 @@
+module A where
+
+import {-# source #-} Boot
+
+class Class a where
+ method :: a -> Data -> a
diff --git a/testsuite/tests/ghci/prog006/Boot.hs-boot b/testsuite/tests/ghci/prog006/Boot.hs-boot
new file mode 100644
index 0000000000..5d95f574d6
--- /dev/null
+++ b/testsuite/tests/ghci/prog006/Boot.hs-boot
@@ -0,0 +1,3 @@
+module Boot where
+
+data Data
diff --git a/testsuite/tests/ghci/prog006/Boot1.hs b/testsuite/tests/ghci/prog006/Boot1.hs
new file mode 100644
index 0000000000..0625737342
--- /dev/null
+++ b/testsuite/tests/ghci/prog006/Boot1.hs
@@ -0,0 +1,5 @@
+module Boot where
+
+import A
+
+data Data = forall n. Class n => D n
diff --git a/testsuite/tests/ghci/prog006/Boot2.hs b/testsuite/tests/ghci/prog006/Boot2.hs
new file mode 100644
index 0000000000..5e7297e448
--- /dev/null
+++ b/testsuite/tests/ghci/prog006/Boot2.hs
@@ -0,0 +1,6 @@
+{-# LANGUAGE ExistentialQuantification #-}
+module Boot where
+
+import A
+
+data Data = forall n. Class n => D n
diff --git a/testsuite/tests/ghci/prog006/Makefile b/testsuite/tests/ghci/prog006/Makefile
new file mode 100644
index 0000000000..9101fbd40a
--- /dev/null
+++ b/testsuite/tests/ghci/prog006/Makefile
@@ -0,0 +1,3 @@
+TOP=../../..
+include $(TOP)/mk/boilerplate.mk
+include $(TOP)/mk/test.mk
diff --git a/testsuite/tests/ghci/prog006/prog006.T b/testsuite/tests/ghci/prog006/prog006.T
new file mode 100644
index 0000000000..04f3a7c61b
--- /dev/null
+++ b/testsuite/tests/ghci/prog006/prog006.T
@@ -0,0 +1 @@
+test('prog006', extra_clean(['Boot.hs']), ghci_script, ['prog006.script'])
diff --git a/testsuite/tests/ghci/prog006/prog006.script b/testsuite/tests/ghci/prog006/prog006.script
new file mode 100644
index 0000000000..4ca4c90a3d
--- /dev/null
+++ b/testsuite/tests/ghci/prog006/prog006.script
@@ -0,0 +1,6 @@
+:! cp Boot1.hs Boot.hs
+:l Boot.hs
+:! sleep 1
+:! cp Boot2.hs Boot.hs
+:r
+
diff --git a/testsuite/tests/ghci/prog006/prog006.stderr b/testsuite/tests/ghci/prog006/prog006.stderr
new file mode 100644
index 0000000000..472272a01e
--- /dev/null
+++ b/testsuite/tests/ghci/prog006/prog006.stderr
@@ -0,0 +1,4 @@
+
+Boot.hs:5:13:
+ Not a data constructor: `forall'
+ Perhaps you intended to use -XExistentialQuantification
diff --git a/testsuite/tests/ghci/prog007/A.hs b/testsuite/tests/ghci/prog007/A.hs
new file mode 100644
index 0000000000..f4694d7a9c
--- /dev/null
+++ b/testsuite/tests/ghci/prog007/A.hs
@@ -0,0 +1,8 @@
+module A where
+
+import {-# SOURCE #-} C
+
+class Class1 a
+
+data A = A deriving Show
+
diff --git a/testsuite/tests/ghci/prog007/B.hs b/testsuite/tests/ghci/prog007/B.hs
new file mode 100644
index 0000000000..ec64b00fa4
--- /dev/null
+++ b/testsuite/tests/ghci/prog007/B.hs
@@ -0,0 +1,7 @@
+module B where
+
+import A
+
+data B = B deriving Show
+
+instance Class1 B
diff --git a/testsuite/tests/ghci/prog007/C.hs b/testsuite/tests/ghci/prog007/C.hs
new file mode 100644
index 0000000000..8273d6bdda
--- /dev/null
+++ b/testsuite/tests/ghci/prog007/C.hs
@@ -0,0 +1,10 @@
+{-# LANGUAGE OverlappingInstances #-}
+
+module C where
+
+import A
+import B
+
+class Class1 a => Class2 a
+
+instance Class2 B
diff --git a/testsuite/tests/ghci/prog007/C.hs-boot b/testsuite/tests/ghci/prog007/C.hs-boot
new file mode 100644
index 0000000000..b81773302e
--- /dev/null
+++ b/testsuite/tests/ghci/prog007/C.hs-boot
@@ -0,0 +1,2 @@
+
+module C where
diff --git a/testsuite/tests/ghci/prog007/ghci.prog007.script b/testsuite/tests/ghci/prog007/ghci.prog007.script
new file mode 100644
index 0000000000..2c6d817d0c
--- /dev/null
+++ b/testsuite/tests/ghci/prog007/ghci.prog007.script
@@ -0,0 +1,2 @@
+:l B
+A
diff --git a/testsuite/tests/ghci/prog007/ghci.prog007.stdout b/testsuite/tests/ghci/prog007/ghci.prog007.stdout
new file mode 100644
index 0000000000..f70f10e4db
--- /dev/null
+++ b/testsuite/tests/ghci/prog007/ghci.prog007.stdout
@@ -0,0 +1 @@
+A
diff --git a/testsuite/tests/ghci/prog007/prog007.T b/testsuite/tests/ghci/prog007/prog007.T
new file mode 100644
index 0000000000..28f19e5602
--- /dev/null
+++ b/testsuite/tests/ghci/prog007/prog007.T
@@ -0,0 +1,2 @@
+# testcase for bug #936
+test('ghci.prog007', normal, ghci_script, ['ghci.prog007.script'])
diff --git a/testsuite/tests/ghci/prog008/A.hs b/testsuite/tests/ghci/prog008/A.hs
new file mode 100644
index 0000000000..0be5e1270d
--- /dev/null
+++ b/testsuite/tests/ghci/prog008/A.hs
@@ -0,0 +1,14 @@
+{-# LANGUAGE Rank2Types, MultiParamTypeClasses #-}
+
+-- Tests a bug spotted by Claus in which the type
+-- of c3 was wrongly displayed in GHCi as
+-- c3 :: C a b => a -> b
+-- Should be
+-- c3 :: C a b => a1 -> b
+
+module A where
+
+class C a b where
+ c1 :: Num b => a -> b
+ c2 :: (Num b,Show b) => a -> b
+ c3 :: forall a. a -> b
diff --git a/testsuite/tests/ghci/prog008/ghci.prog008.script b/testsuite/tests/ghci/prog008/ghci.prog008.script
new file mode 100644
index 0000000000..48954d2488
--- /dev/null
+++ b/testsuite/tests/ghci/prog008/ghci.prog008.script
@@ -0,0 +1,4 @@
+:l A
+:browse A
+:set -fprint-explicit-foralls
+:browse A
diff --git a/testsuite/tests/ghci/prog008/ghci.prog008.stdout b/testsuite/tests/ghci/prog008/ghci.prog008.stdout
new file mode 100644
index 0000000000..99e63a1b14
--- /dev/null
+++ b/testsuite/tests/ghci/prog008/ghci.prog008.stdout
@@ -0,0 +1,8 @@
+class C a b where
+ c1 :: Num b => a -> b
+ c2 :: (Num b, Show b) => a -> b
+ c3 :: a1 -> b
+class C a b where
+ c1 :: Num b => a -> b
+ c2 :: (Num b, Show b) => a -> b
+ c3 :: forall a1. a1 -> b
diff --git a/testsuite/tests/ghci/prog008/prog008.T b/testsuite/tests/ghci/prog008/prog008.T
new file mode 100644
index 0000000000..96ebbfb168
--- /dev/null
+++ b/testsuite/tests/ghci/prog008/prog008.T
@@ -0,0 +1,2 @@
+# testcase for bug #936
+test('ghci.prog008', normal, ghci_script, ['ghci.prog008.script'])
diff --git a/testsuite/tests/ghci/prog009/A1.hs b/testsuite/tests/ghci/prog009/A1.hs
new file mode 100644
index 0000000000..41644a1c54
--- /dev/null
+++ b/testsuite/tests/ghci/prog009/A1.hs
@@ -0,0 +1,3 @@
+module A where
+
+import B
diff --git a/testsuite/tests/ghci/prog009/A2.hs b/testsuite/tests/ghci/prog009/A2.hs
new file mode 100644
index 0000000000..d843c00b78
--- /dev/null
+++ b/testsuite/tests/ghci/prog009/A2.hs
@@ -0,0 +1 @@
+module A where
diff --git a/testsuite/tests/ghci/prog009/A3.hs b/testsuite/tests/ghci/prog009/A3.hs
new file mode 100644
index 0000000000..4a61af00da
--- /dev/null
+++ b/testsuite/tests/ghci/prog009/A3.hs
@@ -0,0 +1,2 @@
+module A where where
+
diff --git a/testsuite/tests/ghci/prog009/B.hs b/testsuite/tests/ghci/prog009/B.hs
new file mode 100644
index 0000000000..14580d43b3
--- /dev/null
+++ b/testsuite/tests/ghci/prog009/B.hs
@@ -0,0 +1,3 @@
+module B where
+
+yan = "tan"
diff --git a/testsuite/tests/ghci/prog009/Makefile b/testsuite/tests/ghci/prog009/Makefile
new file mode 100644
index 0000000000..9101fbd40a
--- /dev/null
+++ b/testsuite/tests/ghci/prog009/Makefile
@@ -0,0 +1,3 @@
+TOP=../../..
+include $(TOP)/mk/boilerplate.mk
+include $(TOP)/mk/test.mk
diff --git a/testsuite/tests/ghci/prog009/ghci.prog009.T b/testsuite/tests/ghci/prog009/ghci.prog009.T
new file mode 100644
index 0000000000..f8b063407d
--- /dev/null
+++ b/testsuite/tests/ghci/prog009/ghci.prog009.T
@@ -0,0 +1,4 @@
+test('ghci.prog009',
+ extra_clean(['A.hs']),
+ ghci_script,
+ ['ghci.prog009.script'])
diff --git a/testsuite/tests/ghci/prog009/ghci.prog009.script b/testsuite/tests/ghci/prog009/ghci.prog009.script
new file mode 100644
index 0000000000..6005727d44
--- /dev/null
+++ b/testsuite/tests/ghci/prog009/ghci.prog009.script
@@ -0,0 +1,36 @@
+:! cp A1.hs A.hs
+import Data.List
+:load A
+-- Data.List should still be in scope:
+:t nub
+:module +B
+yan
+:! sleep 1
+:! cp A3.hs A.hs
+:reload
+-- error, context drops to Prelude,Data.List
+-- Data.List should still be in scope:
+:t nub
+:! sleep 1
+:! cp A1.hs A.hs
+:reload
+-- ok again, B should be back in the context
+yan
+-- Data.List should still be in scope:
+:t nub
+:! sleep 1
+:! cp A2.hs A.hs
+:reload
+:show modules
+yan -- error
+
+-- Now testing for bug #2049
+:! cp A3.hs A.hs
+:load A.hs
+-- should fail
+-- Data.List should still be in scope:
+:type nub
+:! sleep 1
+:! cp A1.hs A.hs
+:reload
+yan
diff --git a/testsuite/tests/ghci/prog009/ghci.prog009.stderr b/testsuite/tests/ghci/prog009/ghci.prog009.stderr
new file mode 100644
index 0000000000..484a1b9f27
--- /dev/null
+++ b/testsuite/tests/ghci/prog009/ghci.prog009.stderr
@@ -0,0 +1,8 @@
+
+A.hs:1:16: parse error on input `where'
+
+<interactive>:1:1:
+ Not in scope: `yan'
+ Perhaps you meant `tan' (imported from Prelude)
+
+A.hs:1:16: parse error on input `where'
diff --git a/testsuite/tests/ghci/prog009/ghci.prog009.stdout b/testsuite/tests/ghci/prog009/ghci.prog009.stdout
new file mode 100644
index 0000000000..74d4c49e88
--- /dev/null
+++ b/testsuite/tests/ghci/prog009/ghci.prog009.stdout
@@ -0,0 +1,8 @@
+nub :: Eq a => [a] -> [a]
+"tan"
+nub :: Eq a => [a] -> [a]
+"tan"
+nub :: Eq a => [a] -> [a]
+A ( A.hs, interpreted )
+nub :: Eq a => [a] -> [a]
+"tan"
diff --git a/testsuite/tests/ghci/prog010/A.hs b/testsuite/tests/ghci/prog010/A.hs
new file mode 100644
index 0000000000..0a779b2cf0
--- /dev/null
+++ b/testsuite/tests/ghci/prog010/A.hs
@@ -0,0 +1,5 @@
+module A (f) where
+
+f x = [x]
+
+g x = Just x
diff --git a/testsuite/tests/ghci/prog010/B.hs b/testsuite/tests/ghci/prog010/B.hs
new file mode 100644
index 0000000000..ce9e7e4932
--- /dev/null
+++ b/testsuite/tests/ghci/prog010/B.hs
@@ -0,0 +1,3 @@
+module B where
+
+import A
diff --git a/testsuite/tests/ghci/prog010/ghci.prog010.script b/testsuite/tests/ghci/prog010/ghci.prog010.script
new file mode 100644
index 0000000000..563e471a59
--- /dev/null
+++ b/testsuite/tests/ghci/prog010/ghci.prog010.script
@@ -0,0 +1,33 @@
+-- test for #1205
+
+:l ../shell.hs
+:def shell (\s -> do shell s; return "")
+
+:shell rm -f A.o A.hi B.o B.hi
+
+:load A
+-- we can see both f and g (only f is exported)
+:type f
+:type g
+
+:shell $HC $HC_OPTS -fforce-recomp -c A.hs
+
+:load A
+-- we can now see only f
+:type f
+:type g
+-- this will tell us we need to load A interpreted
+:module *A
+
+-- load A interpreted
+:load *A
+:type f
+:type g
+
+:shell $HC $HC_OPTS -fforce-recomp -c B.hs
+:load B
+:module *A
+:add *A
+:module *A
+:type f
+:type g
diff --git a/testsuite/tests/ghci/prog010/ghci.prog010.stderr b/testsuite/tests/ghci/prog010/ghci.prog010.stderr
new file mode 100644
index 0000000000..c7cbb1173f
--- /dev/null
+++ b/testsuite/tests/ghci/prog010/ghci.prog010.stderr
@@ -0,0 +1,2 @@
+
+<interactive>:1:0: Not in scope: `g'
diff --git a/testsuite/tests/ghci/prog010/ghci.prog010.stdout b/testsuite/tests/ghci/prog010/ghci.prog010.stdout
new file mode 100644
index 0000000000..ccb6dcd78f
--- /dev/null
+++ b/testsuite/tests/ghci/prog010/ghci.prog010.stdout
@@ -0,0 +1,9 @@
+f :: t -> [t]
+g :: a -> Maybe a
+f :: t -> [t]
+module 'A' is not interpreted; try ':add *A' first
+f :: t -> [t]
+g :: a -> Maybe a
+module 'A' is not interpreted; try ':add *A' first
+f :: t -> [t]
+g :: a -> Maybe a
diff --git a/testsuite/tests/ghci/prog011/Makefile b/testsuite/tests/ghci/prog011/Makefile
new file mode 100644
index 0000000000..9101fbd40a
--- /dev/null
+++ b/testsuite/tests/ghci/prog011/Makefile
@@ -0,0 +1,3 @@
+TOP=../../..
+include $(TOP)/mk/boilerplate.mk
+include $(TOP)/mk/test.mk
diff --git a/testsuite/tests/ghci/prog011/prog011.T b/testsuite/tests/ghci/prog011/prog011.T
new file mode 100644
index 0000000000..c14d457b10
--- /dev/null
+++ b/testsuite/tests/ghci/prog011/prog011.T
@@ -0,0 +1,2 @@
+test('prog011', reqlib('mtl'), ghci_script, ['prog011.script'])
+
diff --git a/testsuite/tests/ghci/prog011/prog011.hx b/testsuite/tests/ghci/prog011/prog011.hx
new file mode 100644
index 0000000000..a9ae3aa347
--- /dev/null
+++ b/testsuite/tests/ghci/prog011/prog011.hx
@@ -0,0 +1,16 @@
+:set +m
+:m +Control.Monad.State
+flip evalStateT 10 $ do
+ i <- get
+ lift $ print i
+
+a <- return "Hello"
+flip evalStateT 11 $ do
+ i <- get
+ lift $ print i
+ lift $ print a
+
+:unset +m
+flip evalStateT 12 $ do
+
+print a
diff --git a/testsuite/tests/ghci/prog011/prog011.script b/testsuite/tests/ghci/prog011/prog011.script
new file mode 100644
index 0000000000..011093f314
--- /dev/null
+++ b/testsuite/tests/ghci/prog011/prog011.script
@@ -0,0 +1,3 @@
+-- test for #1363
+
+:script prog011.hx
diff --git a/testsuite/tests/ghci/prog011/prog011.stderr b/testsuite/tests/ghci/prog011/prog011.stderr
new file mode 100644
index 0000000000..6ee1facfdc
--- /dev/null
+++ b/testsuite/tests/ghci/prog011/prog011.stderr
@@ -0,0 +1,2 @@
+
+prog011.hx:14:22: Empty 'do' block
diff --git a/testsuite/tests/ghci/prog011/prog011.stdout b/testsuite/tests/ghci/prog011/prog011.stdout
new file mode 100644
index 0000000000..5b3671f1f3
--- /dev/null
+++ b/testsuite/tests/ghci/prog011/prog011.stdout
@@ -0,0 +1,3 @@
+10
+11
+"Hello"
diff --git a/testsuite/tests/ghci/scripts/1914.script b/testsuite/tests/ghci/scripts/1914.script
new file mode 100644
index 0000000000..5a74350341
--- /dev/null
+++ b/testsuite/tests/ghci/scripts/1914.script
@@ -0,0 +1,16 @@
+:set -v1
+System.IO.writeFile "T1914A.hs" "module T1914A where { import T1914B; }"
+System.IO.writeFile "T1914B.hs" "module T1914B where { type T = Int; }"
+-- hack: avoid the need for sleep by using specific timestamps:
+:! touch -t 01010000 T1914A.hs
+:! touch -t 01010000 T1914B.hs
+:load T1914A
+System.IO.writeFile "T1914A.hs" "module T1914A where { import T1914B; oops }"
+:! touch -t 01010001 T1914A.hs
+:reload
+-- T1914B should still be loaded
+:module *T1914B
+System.IO.writeFile "T1914A.hs" "module T1914A where { import T1914B; }"
+:! touch -t 01010002 T1914A.hs
+:reload
+-- should not have to reload T1914B
diff --git a/testsuite/tests/ghci/scripts/1914.stderr b/testsuite/tests/ghci/scripts/1914.stderr
new file mode 100644
index 0000000000..fe06f7e58f
--- /dev/null
+++ b/testsuite/tests/ghci/scripts/1914.stderr
@@ -0,0 +1,2 @@
+
+T1914A.hs:1:38: Parse error: naked expression at top level
diff --git a/testsuite/tests/ghci/scripts/1914.stdout b/testsuite/tests/ghci/scripts/1914.stdout
new file mode 100644
index 0000000000..063758e39c
--- /dev/null
+++ b/testsuite/tests/ghci/scripts/1914.stdout
@@ -0,0 +1,7 @@
+[1 of 2] Compiling T1914B ( T1914B.hs, interpreted )
+[2 of 2] Compiling T1914A ( T1914A.hs, interpreted )
+Ok, modules loaded: T1914A, T1914B.
+[2 of 2] Compiling T1914A ( T1914A.hs, interpreted )
+Failed, modules loaded: T1914B.
+[2 of 2] Compiling T1914A ( T1914A.hs, interpreted )
+Ok, modules loaded: T1914A, T1914B.
diff --git a/testsuite/tests/ghci/scripts/2452.script b/testsuite/tests/ghci/scripts/2452.script
new file mode 100644
index 0000000000..28d2bdc580
--- /dev/null
+++ b/testsuite/tests/ghci/scripts/2452.script
@@ -0,0 +1,2 @@
+:set -fno-implicit-import-qualified
+:t System.IO.hPutStrLn
diff --git a/testsuite/tests/ghci/scripts/2452.stderr b/testsuite/tests/ghci/scripts/2452.stderr
new file mode 100644
index 0000000000..2802ee2bdf
--- /dev/null
+++ b/testsuite/tests/ghci/scripts/2452.stderr
@@ -0,0 +1,2 @@
+
+<interactive>:1:1: Not in scope: `System.IO.hPutStrLn'
diff --git a/testsuite/tests/ghci/scripts/2816.script b/testsuite/tests/ghci/scripts/2816.script
new file mode 100644
index 0000000000..5fd8477b64
--- /dev/null
+++ b/testsuite/tests/ghci/scripts/2816.script
@@ -0,0 +1,5 @@
+α
+let α = 4
+α
+4
+:type α
diff --git a/testsuite/tests/ghci/scripts/2816.stderr b/testsuite/tests/ghci/scripts/2816.stderr
new file mode 100644
index 0000000000..b9c60eea43
--- /dev/null
+++ b/testsuite/tests/ghci/scripts/2816.stderr
@@ -0,0 +1,2 @@
+
+<interactive>:1:1: Not in scope: `α'
diff --git a/testsuite/tests/ghci/scripts/2816.stdout b/testsuite/tests/ghci/scripts/2816.stdout
new file mode 100644
index 0000000000..14a53b928e
--- /dev/null
+++ b/testsuite/tests/ghci/scripts/2816.stdout
@@ -0,0 +1,3 @@
+4
+4
+α :: Integer
diff --git a/testsuite/tests/ghci/scripts/2976.script b/testsuite/tests/ghci/scripts/2976.script
new file mode 100644
index 0000000000..f4fe8d7122
--- /dev/null
+++ b/testsuite/tests/ghci/scripts/2976.script
@@ -0,0 +1,8 @@
+let test = 0
+:show bindings
+:force test
+:show bindings
+let test = "test"
+:show bindings
+:force test
+:show bindings
diff --git a/testsuite/tests/ghci/scripts/2976.stdout b/testsuite/tests/ghci/scripts/2976.stdout
new file mode 100644
index 0000000000..d927ad696c
--- /dev/null
+++ b/testsuite/tests/ghci/scripts/2976.stdout
@@ -0,0 +1,6 @@
+test :: Integer = _
+test = 0
+test :: Integer = 0
+test :: [Char] = _
+test = "test"
+test :: [Char] = "test"
diff --git a/testsuite/tests/ghci/scripts/4051.hs b/testsuite/tests/ghci/scripts/4051.hs
new file mode 100644
index 0000000000..fc9974cb8e
--- /dev/null
+++ b/testsuite/tests/ghci/scripts/4051.hs
@@ -0,0 +1,2 @@
+module X' where
+x = 3
diff --git a/testsuite/tests/ghci/scripts/4051.script b/testsuite/tests/ghci/scripts/4051.script
new file mode 100644
index 0000000000..545ce8b4d8
--- /dev/null
+++ b/testsuite/tests/ghci/scripts/4051.script
@@ -0,0 +1,4 @@
+:l 4051.hs
+:m -X'
+:m X'
+x
diff --git a/testsuite/tests/ghci/scripts/4051.stdout b/testsuite/tests/ghci/scripts/4051.stdout
new file mode 100644
index 0000000000..00750edc07
--- /dev/null
+++ b/testsuite/tests/ghci/scripts/4051.stdout
@@ -0,0 +1 @@
+3
diff --git a/testsuite/tests/ghci/scripts/Makefile b/testsuite/tests/ghci/scripts/Makefile
new file mode 100644
index 0000000000..e3cc561b23
--- /dev/null
+++ b/testsuite/tests/ghci/scripts/Makefile
@@ -0,0 +1,33 @@
+TOP=../../..
+include $(TOP)/mk/boilerplate.mk
+include $(TOP)/mk/test.mk
+
+ghci024:
+ @echo "~~~~~~~~~~ Testing :set"
+ printf ":set\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)"
+ @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)"
+ @echo "~~~~~~~~~~ Testing :show packages"
+ printf ":show packages\n" \
+ | '$(TEST_HC)' $(TEST_HC_OPTS) --interactive -v0 -ignore-dot-ghci \
+ | grep -E "^([^ ]| -package|base|ghc-prim|integer|rts|Cabal)" \
+ | sed "s/Cabal-[0-9.]*/Cabal-VERSION/"
+ @echo "~~~~~~~~~~ Testing :show packages, including the ghc package"
+ printf ":set -package ghc\n:show packages\n" \
+ | '$(TEST_HC)' $(TEST_HC_OPTS) --interactive -v0 -ignore-dot-ghci \
+ | grep -E "^([^ ]| -package|base|ghc-prim|integer|rts|Cabal)" \
+ | sed "s/Cabal-[0-9.]*/Cabal-VERSION/"
+
+.PHONY: ghci037
+ghci037:
+ '$(TEST_HC)' $(TEST_HC_OPTS) --interactive -v0 -ignore-dot-ghci < ghci037.script
+ '$(TEST_HC)' $(TEST_HC_OPTS) --interactive -v0 -ignore-dot-ghci -fno-ghci-sandbox < ghci037.script
+
diff --git a/testsuite/tests/ghci/scripts/T2766.script b/testsuite/tests/ghci/scripts/T2766.script
new file mode 100644
index 0000000000..87e9bb3918
--- /dev/null
+++ b/testsuite/tests/ghci/scripts/T2766.script
@@ -0,0 +1,4 @@
+-- Test Trac #2766
+:set -XTypeOperators
+:m Control.Arrow
+:t first :: Arrow (~>) => b~>c -> (b, d)~>(c, d)
diff --git a/testsuite/tests/ghci/scripts/T2766.stdout b/testsuite/tests/ghci/scripts/T2766.stdout
new file mode 100644
index 0000000000..abe1ca2c95
--- /dev/null
+++ b/testsuite/tests/ghci/scripts/T2766.stdout
@@ -0,0 +1,2 @@
+first :: Arrow (~>) => b~>c -> (b, d)~>(c, d)
+ :: Arrow (~>) => (~>) b c -> (~>) (b, d) (c, d)
diff --git a/testsuite/tests/ghci/scripts/T3263.hs b/testsuite/tests/ghci/scripts/T3263.hs
new file mode 100644
index 0000000000..237cf42c6d
--- /dev/null
+++ b/testsuite/tests/ghci/scripts/T3263.hs
@@ -0,0 +1,9 @@
+{-# OPTIONS_GHC -Wall #-}
+
+-- Test Trac #3263
+
+module T3263 where
+
+foo :: IO ()
+foo = do { getChar
+ ; return () }
diff --git a/testsuite/tests/ghci/scripts/T3263.script b/testsuite/tests/ghci/scripts/T3263.script
new file mode 100644
index 0000000000..dc13aa6732
--- /dev/null
+++ b/testsuite/tests/ghci/scripts/T3263.script
@@ -0,0 +1 @@
+:load T3263
diff --git a/testsuite/tests/ghci/scripts/T3263.stderr b/testsuite/tests/ghci/scripts/T3263.stderr
new file mode 100644
index 0000000000..a7924e4b7f
--- /dev/null
+++ b/testsuite/tests/ghci/scripts/T3263.stderr
@@ -0,0 +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
diff --git a/testsuite/tests/ghci/scripts/T4015.hs b/testsuite/tests/ghci/scripts/T4015.hs
new file mode 100644
index 0000000000..d2968db317
--- /dev/null
+++ b/testsuite/tests/ghci/scripts/T4015.hs
@@ -0,0 +1,7 @@
+module Test (R(..)) where
+
+data R = R { x :: Char, y :: Int, z :: Float }
+ | S { x :: Char }
+ | T { y :: Int, z:: Float }
+ | W
+
diff --git a/testsuite/tests/ghci/scripts/T4015.script b/testsuite/tests/ghci/scripts/T4015.script
new file mode 100644
index 0000000000..0ab6f33d1a
--- /dev/null
+++ b/testsuite/tests/ghci/scripts/T4015.script
@@ -0,0 +1,9 @@
+:l T4015
+:browse
+:i R
+:i S
+:i T
+:i W
+:i x
+:i y
+:i z
diff --git a/testsuite/tests/ghci/scripts/T4015.stdout b/testsuite/tests/ghci/scripts/T4015.stdout
new file mode 100644
index 0000000000..e850fb9384
--- /dev/null
+++ b/testsuite/tests/ghci/scripts/T4015.stdout
@@ -0,0 +1,20 @@
+data R
+ = R {x :: Char, y :: Int, z :: Float}
+ | S {x :: Char}
+ | T {y :: Int, z :: Float}
+ | W
+data R
+ = R {x :: Char, y :: Int, z :: Float}
+ | S {x :: Char}
+ | T {y :: Int, z :: Float}
+ | W
+ -- Defined at T4015.hs:3:6
+data R = ... | S {...} | ... -- Defined at T4015.hs:4:10
+data R = ... | T {...} | ... -- Defined at T4015.hs:5:10
+data R = ... | W -- Defined at T4015.hs:6:10
+data R = R {x :: Char, ...} | S {x :: Char} | ...
+ -- Defined at T4015.hs:3:14
+data R = R {..., y :: Int, ...} | ... | T {y :: Int, ...} | ...
+ -- Defined at T4015.hs:3:25
+data R = R {..., z :: Float} | ... | T {..., z :: Float} | ...
+ -- Defined at T4015.hs:3:35
diff --git a/testsuite/tests/ghci/scripts/T4087.hs b/testsuite/tests/ghci/scripts/T4087.hs
new file mode 100644
index 0000000000..b992a9bb20
--- /dev/null
+++ b/testsuite/tests/ghci/scripts/T4087.hs
@@ -0,0 +1,6 @@
+{-# LANGUAGE GADTs #-}
+
+module T4087 where
+
+data Equal a b where
+ Equal :: Equal a a
diff --git a/testsuite/tests/ghci/scripts/T4087.script b/testsuite/tests/ghci/scripts/T4087.script
new file mode 100644
index 0000000000..d1b32ab266
--- /dev/null
+++ b/testsuite/tests/ghci/scripts/T4087.script
@@ -0,0 +1,2 @@
+:l T4087
+:i Equal
diff --git a/testsuite/tests/ghci/scripts/T4087.stdout b/testsuite/tests/ghci/scripts/T4087.stdout
new file mode 100644
index 0000000000..d3e3ae9abd
--- /dev/null
+++ b/testsuite/tests/ghci/scripts/T4087.stdout
@@ -0,0 +1,3 @@
+data Equal a b where
+ Equal :: Equal a a
+ -- Defined at T4087.hs:5:6-10
diff --git a/testsuite/tests/ghci/scripts/T4127.script b/testsuite/tests/ghci/scripts/T4127.script
new file mode 100644
index 0000000000..03eb490544
--- /dev/null
+++ b/testsuite/tests/ghci/scripts/T4127.script
@@ -0,0 +1,3 @@
+:set -XTemplateHaskell
+Language.Haskell.TH.runQ [d| instance Monad ((,) a) where { return = undefined; (>>=) = undefined } |]
+
diff --git a/testsuite/tests/ghci/scripts/T4127.stdout b/testsuite/tests/ghci/scripts/T4127.stdout
new file mode 100644
index 0000000000..9c8f7a1098
--- /dev/null
+++ b/testsuite/tests/ghci/scripts/T4127.stdout
@@ -0,0 +1 @@
+[InstanceD [] (AppT (ConT GHC.Base.Monad) (AppT (ConT GHC.Tuple.(,)) (VarT a_0))) [ValD (VarP return) (NormalB (VarE GHC.Err.undefined)) [],ValD (VarP >>=) (NormalB (VarE GHC.Err.undefined)) []]]
diff --git a/testsuite/tests/ghci/scripts/T4127a.script b/testsuite/tests/ghci/scripts/T4127a.script
new file mode 100644
index 0000000000..3712c6a184
--- /dev/null
+++ b/testsuite/tests/ghci/scripts/T4127a.script
@@ -0,0 +1,2 @@
+:set -XTemplateHaskell
+Language.Haskell.TH.runQ $ [d| f = undefined; class Foo x where { f :: x -> x }; instance Foo Int where { f = id } |]
diff --git a/testsuite/tests/ghci/scripts/T4127a.stderr b/testsuite/tests/ghci/scripts/T4127a.stderr
new file mode 100644
index 0000000000..bd96443381
--- /dev/null
+++ b/testsuite/tests/ghci/scripts/T4127a.stderr
@@ -0,0 +1,7 @@
+
+<interactive>:1:68:
+ Multiple declarations of `f'
+ Declared at: <interactive>:1:32
+ <interactive>:1:68
+
+<interactive>:1:108: `f' is not a (visible) method of class `Foo'
diff --git a/testsuite/tests/ghci/scripts/T4316.script b/testsuite/tests/ghci/scripts/T4316.script
new file mode 100644
index 0000000000..b620aac653
--- /dev/null
+++ b/testsuite/tests/ghci/scripts/T4316.script
@@ -0,0 +1,23 @@
+:set +m
+:m Control.Monad.State
+flip evalStateT 11 $ do
+ i <- get
+ lift $ do
+ putStrLn "Hello, World!"
+ print i
+
+
+let f = (+ 1)
+in f 2
+
+
+let f = "Hello, World!"
+
+f
+
+let f = True
+
+case f of
+ False -> putStrLn "Failed"
+ True -> putStrLn "Pass"
+
diff --git a/testsuite/tests/ghci/scripts/T4316.stdout b/testsuite/tests/ghci/scripts/T4316.stdout
new file mode 100644
index 0000000000..06891cb2df
--- /dev/null
+++ b/testsuite/tests/ghci/scripts/T4316.stdout
@@ -0,0 +1,5 @@
+Hello, World!
+11
+3
+"Hello, World!"
+Pass
diff --git a/testsuite/tests/ghci/scripts/T4832.script b/testsuite/tests/ghci/scripts/T4832.script
new file mode 100644
index 0000000000..27b1c2fe4a
--- /dev/null
+++ b/testsuite/tests/ghci/scripts/T4832.script
@@ -0,0 +1,2 @@
+import Control.Applicative
+fmap id id () \ No newline at end of file
diff --git a/testsuite/tests/ghci/scripts/T4832.stdout b/testsuite/tests/ghci/scripts/T4832.stdout
new file mode 100644
index 0000000000..6a452c185a
--- /dev/null
+++ b/testsuite/tests/ghci/scripts/T4832.stdout
@@ -0,0 +1 @@
+()
diff --git a/testsuite/tests/ghci/scripts/T5045.hs b/testsuite/tests/ghci/scripts/T5045.hs
new file mode 100644
index 0000000000..a63bead315
--- /dev/null
+++ b/testsuite/tests/ghci/scripts/T5045.hs
@@ -0,0 +1,44 @@
+{-# LANGUAGE Arrows, FunctionalDependencies, FlexibleContexts,
+ MultiParamTypeClasses, RecordWildCards #-}
+
+module T5045 where
+
+import Control.Arrow
+
+class (Control.Arrow.Arrow a') => ArrowAddReader r a a' | a -> a' where
+ elimReader :: a e b -> a' (e, r) b
+
+newtype ByteString = FakeByteString String
+
+pathInfo :: Monad m => m String
+pathInfo = undefined
+
+requestMethod :: Monad m => m String
+requestMethod = undefined
+
+getInputsFPS :: Monad m => m [(String, ByteString)]
+getInputsFPS = undefined
+
+class HTTPRequest r s | r -> s where
+ httpGetPath :: r -> String
+ httpSetPath :: r -> String -> r
+ httpGetMethod :: r -> String
+ httpGetInputs :: r -> [(String, s)]
+
+data CGIDispatch = CGIDispatch {
+ dispatchPath :: String,
+ dispatchMethod :: String,
+ dispatchInputs :: [(String, ByteString)] }
+
+instance HTTPRequest CGIDispatch ByteString where
+ httpGetPath = dispatchPath
+ httpSetPath r s = r { dispatchPath = s }
+ httpGetMethod = dispatchMethod
+ httpGetInputs = dispatchInputs
+
+runDispatch :: (Arrow a, ArrowAddReader CGIDispatch a a', Monad m) => a b c -> m (a' b c)
+runDispatch a = do
+ dispatchPath <- pathInfo
+ dispatchMethod <- requestMethod
+ dispatchInputs <- getInputsFPS
+ return $ proc b -> (| elimReader (a -< b) |) CGIDispatch { .. }
diff --git a/testsuite/tests/ghci/scripts/T5045.script b/testsuite/tests/ghci/scripts/T5045.script
new file mode 100644
index 0000000000..34e9a58f5a
--- /dev/null
+++ b/testsuite/tests/ghci/scripts/T5045.script
@@ -0,0 +1,2 @@
+:l T5045.hs
+
diff --git a/testsuite/tests/ghci/scripts/T5130.script b/testsuite/tests/ghci/scripts/T5130.script
new file mode 100644
index 0000000000..cb4e9d0d6b
--- /dev/null
+++ b/testsuite/tests/ghci/scripts/T5130.script
@@ -0,0 +1,3 @@
+:set -XScopedTypeVariables
+(\(x :: a, y :: a) -> [x, "hi"])
+
diff --git a/testsuite/tests/ghci/scripts/T5130.stderr b/testsuite/tests/ghci/scripts/T5130.stderr
new file mode 100644
index 0000000000..cf9e6b40ce
--- /dev/null
+++ b/testsuite/tests/ghci/scripts/T5130.stderr
@@ -0,0 +1,6 @@
+
+<interactive>:1:27:
+ Couldn't match type `a' with `[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/T789.hs b/testsuite/tests/ghci/scripts/T789.hs
new file mode 100644
index 0000000000..5cb8e4e1ad
--- /dev/null
+++ b/testsuite/tests/ghci/scripts/T789.hs
@@ -0,0 +1,808 @@
+
+module Foo where
+
+table = [
+ "MARY", "PATRICIA", "LINDA", "BARBARA", "ELIZABETH", "JENNIFER",
+ "MARIA", "SUSAN", "MARGARET", "DOROTHY", "LISA", "NANCY", "KAREN",
+ "BETTY", "HELEN", "SANDRA", "DONNA", "CAROL", "RUTH", "SHARON",
+ "MICHELLE", "LAURA", "SARAH", "KIMBERLY", "DEBORAH", "JESSICA",
+ "SHIRLEY", "CYNTHIA", "ANGELA", "MELISSA", "BRENDA", "AMY", "ANNA",
+ "REBECCA", "VIRGINIA", "KATHLEEN", "PAMELA", "MARTHA", "DEBRA",
+ "AMANDA", "STEPHANIE", "CAROLYN", "CHRISTINE", "MARIE", "JANET",
+ "CATHERINE", "FRANCES", "ANN", "JOYCE", "DIANE", "ALICE", "JULIE",
+ "HEATHER", "TERESA", "DORIS", "GLORIA", "EVELYN", "JEAN", "CHERYL",
+ "MILDRED", "KATHERINE", "JOAN", "ASHLEY", "JUDITH", "ROSE",
+ "JANICE", "KELLY", "NICOLE", "JUDY", "CHRISTINA", "KATHY",
+ "THERESA", "BEVERLY", "DENISE", "TAMMY", "IRENE", "JANE", "LORI",
+ "RACHEL", "MARILYN", "ANDREA", "KATHRYN", "LOUISE", "SARA", "ANNE",
+ "JACQUELINE", "WANDA", "BONNIE", "JULIA", "RUBY", "LOIS", "TINA",
+ "PHYLLIS", "NORMA", "PAULA", "DIANA", "ANNIE", "LILLIAN", "EMILY",
+ "ROBIN", "PEGGY", "CRYSTAL", "GLADYS", "RITA", "DAWN", "CONNIE",
+ "FLORENCE", "TRACY", "EDNA", "TIFFANY", "CARMEN", "ROSA", "CINDY",
+ "GRACE", "WENDY", "VICTORIA", "EDITH", "KIM", "SHERRY", "SYLVIA",
+ "JOSEPHINE", "THELMA", "SHANNON", "SHEILA", "ETHEL", "ELLEN",
+ "ELAINE", "MARJORIE", "CARRIE", "CHARLOTTE", "MONICA", "ESTHER",
+ "PAULINE", "EMMA", "JUANITA", "ANITA", "RHONDA", "HAZEL", "AMBER",
+ "EVA", "DEBBIE", "APRIL", "LESLIE", "CLARA", "LUCILLE", "JAMIE",
+ "JOANNE", "ELEANOR", "VALERIE", "DANIELLE", "MEGAN", "ALICIA",
+ "SUZANNE", "MICHELE", "GAIL", "BERTHA", "DARLENE", "VERONICA",
+ "JILL", "ERIN", "GERALDINE", "LAUREN", "CATHY", "JOANN", "LORRAINE",
+ "LYNN", "SALLY", "REGINA", "ERICA", "BEATRICE", "DOLORES",
+ "BERNICE", "AUDREY", "YVONNE", "ANNETTE", "JUNE", "SAMANTHA",
+ "MARION", "DANA", "STACY", "ANA", "RENEE", "IDA", "VIVIAN",
+ "ROBERTA", "HOLLY", "BRITTANY", "MELANIE", "LORETTA", "YOLANDA",
+ "JEANETTE", "LAURIE", "KATIE", "KRISTEN", "VANESSA", "ALMA", "SUE",
+ "ELSIE", "BETH", "JEANNE", "VICKI", "CARLA", "TARA", "ROSEMARY",
+ "EILEEN", "TERRI", "GERTRUDE", "LUCY", "TONYA", "ELLA", "STACEY",
+ "WILMA", "GINA", "KRISTIN", "JESSIE", "NATALIE", "AGNES", "VERA",
+ "WILLIE", "CHARLENE", "BESSIE", "DELORES", "MELINDA", "PEARL",
+ "ARLENE", "MAUREEN", "COLLEEN", "ALLISON", "TAMARA", "JOY",
+ "GEORGIA", "CONSTANCE", "LILLIE", "CLAUDIA", "JACKIE", "MARCIA",
+ "TANYA", "NELLIE", "MINNIE", "MARLENE", "HEIDI", "GLENDA", "LYDIA",
+ "VIOLA", "COURTNEY", "MARIAN", "STELLA", "CAROLINE", "DORA", "JO",
+ "VICKIE", "MATTIE", "TERRY", "MAXINE", "IRMA", "MABEL", "MARSHA",
+ "MYRTLE", "LENA", "CHRISTY", "DEANNA", "PATSY", "HILDA",
+ "GWENDOLYN", "JENNIE", "NORA", "MARGIE", "NINA", "CASSANDRA",
+ "LEAH", "PENNY", "KAY", "PRISCILLA", "NAOMI", "CAROLE", "BRANDY",
+ "OLGA", "BILLIE", "DIANNE", "TRACEY", "LEONA", "JENNY", "FELICIA",
+ "SONIA", "MIRIAM", "VELMA", "BECKY", "BOBBIE", "VIOLET", "KRISTINA",
+ "TONI", "MISTY", "MAE", "SHELLY", "DAISY", "RAMONA", "SHERRI",
+ "ERIKA", "KATRINA", "CLAIRE", "LINDSEY", "LINDSAY", "GENEVA",
+ "GUADALUPE", "BELINDA", "MARGARITA", "SHERYL", "CORA", "FAYE",
+ "ADA", "NATASHA", "SABRINA", "ISABEL", "MARGUERITE", "HATTIE",
+ "HARRIET", "MOLLY", "CECILIA", "KRISTI", "BRANDI", "BLANCHE",
+ "SANDY", "ROSIE", "JOANNA", "IRIS", "EUNICE", "ANGIE", "INEZ",
+ "LYNDA", "MADELINE", "AMELIA", "ALBERTA", "GENEVIEVE", "MONIQUE",
+ "JODI", "JANIE", "MAGGIE", "KAYLA", "SONYA", "JAN", "LEE",
+ "KRISTINE", "CANDACE", "FANNIE", "MARYANN", "OPAL", "ALISON",
+ "YVETTE", "MELODY", "LUZ", "SUSIE", "OLIVIA", "FLORA", "SHELLEY",
+ "KRISTY", "MAMIE", "LULA", "LOLA", "VERNA", "BEULAH", "ANTOINETTE",
+ "CANDICE", "JUANA", "JEANNETTE", "PAM", "KELLI", "HANNAH",
+ "WHITNEY", "BRIDGET", "KARLA", "CELIA", "LATOYA", "PATTY", "SHELIA",
+ "GAYLE", "DELLA", "VICKY", "LYNNE", "SHERI", "MARIANNE", "KARA",
+ "JACQUELYN", "ERMA", "BLANCA", "MYRA", "LETICIA", "PAT", "KRISTA",
+ "ROXANNE", "ANGELICA", "JOHNNIE", "ROBYN", "FRANCIS", "ADRIENNE",
+ "ROSALIE", "ALEXANDRA", "BROOKE", "BETHANY", "SADIE", "BERNADETTE",
+ "TRACI", "JODY", "KENDRA", "JASMINE", "NICHOLE", "RACHAEL",
+ "CHELSEA", "MABLE", "ERNESTINE", "MURIEL", "MARCELLA", "ELENA",
+ "KRYSTAL", "ANGELINA", "NADINE", "KARI", "ESTELLE", "DIANNA",
+ "PAULETTE", "LORA", "MONA", "DOREEN", "ROSEMARIE", "ANGEL",
+ "DESIREE", "ANTONIA", "HOPE", "GINGER", "JANIS", "BETSY",
+ "CHRISTIE", "FREDA", "MERCEDES", "MEREDITH", "LYNETTE", "TERI",
+ "CRISTINA", "EULA", "LEIGH", "MEGHAN", "SOPHIA", "ELOISE",
+ "ROCHELLE", "GRETCHEN", "CECELIA", "RAQUEL", "HENRIETTA", "ALYSSA",
+ "JANA", "KELLEY", "GWEN", "KERRY", "JENNA", "TRICIA", "LAVERNE",
+ "OLIVE", "ALEXIS", "TASHA", "SILVIA", "ELVIRA", "CASEY", "DELIA",
+ "SOPHIE", "KATE", "PATTI", "LORENA", "KELLIE", "SONJA", "LILA",
+ "LANA", "DARLA", "MAY", "MINDY", "ESSIE", "MANDY", "LORENE", "ELSA",
+ "JOSEFINA", "JEANNIE", "MIRANDA", "DIXIE", "LUCIA", "MARTA",
+ "FAITH", "LELA", "JOHANNA", "SHARI", "CAMILLE", "TAMI", "SHAWNA",
+ "ELISA", "EBONY", "MELBA", "ORA", "NETTIE", "TABITHA", "OLLIE",
+ "JAIME", "WINIFRED", "KRISTIE", "MARINA", "ALISHA", "AIMEE", "RENA",
+ "MYRNA", "MARLA", "TAMMIE", "LATASHA", "BONITA", "PATRICE", "RONDA",
+ "SHERRIE", "ADDIE", "FRANCINE", "DELORIS", "STACIE", "ADRIANA",
+ "CHERI", "SHELBY", "ABIGAIL", "CELESTE", "JEWEL", "CARA", "ADELE",
+ "REBEKAH", "LUCINDA", "DORTHY", "CHRIS", "EFFIE", "TRINA", "REBA",
+ "SHAWN", "SALLIE", "AURORA", "LENORA", "ETTA", "LOTTIE", "KERRI",
+ "TRISHA", "NIKKI", "ESTELLA", "FRANCISCA", "JOSIE", "TRACIE",
+ "MARISSA", "KARIN", "BRITTNEY", "JANELLE", "LOURDES", "LAUREL",
+ "HELENE", "FERN", "ELVA", "CORINNE", "KELSEY", "INA", "BETTIE",
+ "ELISABETH", "AIDA", "CAITLIN", "INGRID", "IVA", "EUGENIA",
+ "CHRISTA", "GOLDIE", "CASSIE", "MAUDE", "JENIFER", "THERESE",
+ "FRANKIE", "DENA", "LORNA", "JANETTE", "LATONYA", "CANDY", "MORGAN",
+ "CONSUELO", "TAMIKA", "ROSETTA", "DEBORA", "CHERIE", "POLLY",
+ "DINA", "JEWELL", "FAY", "JILLIAN", "DOROTHEA", "NELL", "TRUDY",
+ "ESPERANZA", "PATRICA", "KIMBERLEY", "SHANNA", "HELENA", "CAROLINA",
+ "CLEO", "STEFANIE", "ROSARIO", "OLA", "JANINE", "MOLLIE", "LUPE",
+ "ALISA", "LOU", "MARIBEL", "SUSANNE", "BETTE", "SUSANA", "ELISE",
+ "CECILE", "ISABELLE", "LESLEY", "JOCELYN", "PAIGE", "JONI",
+ "RACHELLE", "LEOLA", "DAPHNE", "ALTA", "ESTER", "PETRA", "GRACIELA",
+ "IMOGENE", "JOLENE", "KEISHA", "LACEY", "GLENNA", "GABRIELA",
+ "KERI", "URSULA", "LIZZIE", "KIRSTEN", "SHANA", "ADELINE", "MAYRA",
+ "JAYNE", "JACLYN", "GRACIE", "SONDRA", "CARMELA", "MARISA",
+ "ROSALIND", "CHARITY", "TONIA", "BEATRIZ", "MARISOL", "CLARICE",
+ "JEANINE", "SHEENA", "ANGELINE", "FRIEDA", "LILY", "ROBBIE",
+ "SHAUNA", "MILLIE", "CLAUDETTE", "CATHLEEN", "ANGELIA", "GABRIELLE",
+ "AUTUMN", "KATHARINE", "SUMMER", "JODIE", "STACI", "LEA", "CHRISTI",
+ "JIMMIE", "JUSTINE", "ELMA", "LUELLA", "MARGRET", "DOMINIQUE",
+ "SOCORRO", "RENE", "MARTINA", "MARGO", "MAVIS", "CALLIE", "BOBBI",
+ "MARITZA", "LUCILE", "LEANNE", "JEANNINE", "DEANA", "AILEEN",
+ "LORIE", "LADONNA", "WILLA", "MANUELA", "GALE", "SELMA", "DOLLY",
+ "SYBIL", "ABBY", "LARA", "DALE", "IVY", "DEE", "WINNIE", "MARCY",
+ "LUISA", "JERI", "MAGDALENA", "OFELIA", "MEAGAN", "AUDRA",
+ "MATILDA", "LEILA", "CORNELIA", "BIANCA", "SIMONE", "BETTYE",
+ "RANDI", "VIRGIE", "LATISHA", "BARBRA", "GEORGINA", "ELIZA",
+ "LEANN", "BRIDGETTE", "RHODA", "HALEY", "ADELA", "NOLA",
+ "BERNADINE", "FLOSSIE", "ILA", "GRETA", "RUTHIE", "NELDA",
+ "MINERVA", "LILLY", "TERRIE", "LETHA", "HILARY", "ESTELA",
+ "VALARIE", "BRIANNA", "ROSALYN", "EARLINE", "CATALINA", "AVA",
+ "MIA", "CLARISSA", "LIDIA", "CORRINE", "ALEXANDRIA", "CONCEPCION",
+ "TIA", "SHARRON", "RAE", "DONA", "ERICKA", "JAMI", "ELNORA",
+ "CHANDRA", "LENORE", "NEVA", "MARYLOU", "MELISA", "TABATHA",
+ "SERENA", "AVIS", "ALLIE", "SOFIA", "JEANIE", "ODESSA", "NANNIE",
+ "HARRIETT", "LORAINE", "PENELOPE", "MILAGROS", "EMILIA", "BENITA",
+ "ALLYSON", "ASHLEE", "TANIA", "TOMMIE", "ESMERALDA", "KARINA",
+ "EVE", "PEARLIE", "ZELMA", "MALINDA", "NOREEN", "TAMEKA", "SAUNDRA",
+ "HILLARY", "AMIE", "ALTHEA", "ROSALINDA", "JORDAN", "LILIA",
+ "ALANA", "GAY", "CLARE", "ALEJANDRA", "ELINOR", "MICHAEL", "LORRIE",
+ "JERRI", "DARCY", "EARNESTINE", "CARMELLA", "TAYLOR", "NOEMI",
+ "MARCIE", "LIZA", "ANNABELLE", "LOUISA", "EARLENE", "MALLORY",
+ "CARLENE", "NITA", "SELENA", "TANISHA", "KATY", "JULIANNE", "JOHN",
+ "LAKISHA", "EDWINA", "MARICELA", "MARGERY", "KENYA", "DOLLIE",
+ "ROXIE", "ROSLYN", "KATHRINE", "NANETTE", "CHARMAINE", "LAVONNE",
+ "ILENE", "KRIS", "TAMMI", "SUZETTE", "CORINE", "KAYE", "JERRY",
+ "MERLE", "CHRYSTAL", "LINA", "DEANNE", "LILIAN", "JULIANA", "ALINE",
+ "LUANN", "KASEY", "MARYANNE", "EVANGELINE", "COLETTE", "MELVA",
+ "LAWANDA", "YESENIA", "NADIA", "MADGE", "KATHIE", "EDDIE",
+ "OPHELIA", "VALERIA", "NONA", "MITZI", "MARI", "GEORGETTE",
+ "CLAUDINE", "FRAN", "ALISSA", "ROSEANN", "LAKEISHA", "SUSANNA",
+ "REVA", "DEIDRE", "CHASITY", "SHEREE", "CARLY", "JAMES", "ELVIA",
+ "ALYCE", "DEIRDRE", "GENA", "BRIANA", "ARACELI", "KATELYN",
+ "ROSANNE", "WENDI", "TESSA", "BERTA", "MARVA", "IMELDA", "MARIETTA",
+ "MARCI", "LEONOR", "ARLINE", "SASHA", "MADELYN", "JANNA",
+ "JULIETTE", "DEENA", "AURELIA", "JOSEFA", "AUGUSTA", "LILIANA",
+ "YOUNG", "CHRISTIAN", "LESSIE", "AMALIA", "SAVANNAH", "ANASTASIA",
+ "VILMA", "NATALIA", "ROSELLA", "LYNNETTE", "CORINA", "ALFREDA",
+ "LEANNA", "CAREY", "AMPARO", "COLEEN", "TAMRA", "AISHA", "WILDA",
+ "KARYN", "CHERRY", "QUEEN", "MAURA", "MAI", "EVANGELINA", "ROSANNA",
+ "HALLIE", "ERNA", "ENID", "MARIANA", "LACY", "JULIET", "JACKLYN",
+ "FREIDA", "MADELEINE", "MARA", "HESTER", "CATHRYN", "LELIA",
+ "CASANDRA", "BRIDGETT", "ANGELITA", "JANNIE", "DIONNE", "ANNMARIE",
+ "KATINA", "BERYL", "PHOEBE", "MILLICENT", "KATHERYN", "DIANN",
+ "CARISSA", "MARYELLEN", "LIZ", "LAURI", "HELGA", "GILDA", "ADRIAN",
+ "RHEA", "MARQUITA", "HOLLIE", "TISHA", "TAMERA", "ANGELIQUE",
+ "FRANCESCA", "BRITNEY", "KAITLIN", "LOLITA", "FLORINE", "ROWENA",
+ "REYNA", "TWILA", "FANNY", "JANELL", "INES", "CONCETTA", "BERTIE",
+ "ALBA", "BRIGITTE", "ALYSON", "VONDA", "PANSY", "ELBA", "NOELLE",
+ "LETITIA", "KITTY", "DEANN", "BRANDIE", "LOUELLA", "LETA",
+ "FELECIA", "SHARLENE", "LESA", "BEVERLEY", "ROBERT", "ISABELLA",
+ "HERMINIA", "TERRA", "CELINA", "TORI", "OCTAVIA", "JADE", "DENICE",
+ "GERMAINE", "SIERRA", "MICHELL", "CORTNEY", "NELLY", "DORETHA",
+ "SYDNEY", "DEIDRA", "MONIKA", "LASHONDA", "JUDI", "CHELSEY",
+ "ANTIONETTE", "MARGOT", "BOBBY", "ADELAIDE", "NAN", "LEEANN",
+ "ELISHA", "DESSIE", "LIBBY", "KATHI", "GAYLA", "LATANYA", "MINA",
+ "MELLISA", "KIMBERLEE", "JASMIN", "RENAE", "ZELDA", "ELDA", "MA",
+ "JUSTINA", "GUSSIE", "EMILIE", "CAMILLA", "ABBIE", "ROCIO",
+ "KAITLYN", "JESSE", "EDYTHE", "ASHLEIGH", "SELINA", "LAKESHA",
+ "GERI", "ALLENE", "PAMALA", "MICHAELA", "DAYNA", "CARYN", "ROSALIA",
+ "SUN", "JACQULINE", "REBECA", "MARYBETH", "KRYSTLE", "IOLA",
+ "DOTTIE", "BENNIE", "BELLE", "AUBREY", "GRISELDA", "ERNESTINA",
+ "ELIDA", "ADRIANNE", "DEMETRIA", "DELMA", "CHONG", "JAQUELINE",
+ "DESTINY", "ARLEEN", "VIRGINA", "RETHA", "FATIMA", "TILLIE",
+ "ELEANORE", "CARI", "TREVA", "BIRDIE", "WILHELMINA", "ROSALEE",
+ "MAURINE", "LATRICE", "YONG", "JENA", "TARYN", "ELIA", "DEBBY",
+ "MAUDIE", "JEANNA", "DELILAH", "CATRINA", "SHONDA", "HORTENCIA",
+ "THEODORA", "TERESITA", "ROBBIN", "DANETTE", "MARYJANE", "FREDDIE",
+ "DELPHINE", "BRIANNE", "NILDA", "DANNA", "CINDI", "BESS", "IONA",
+ "HANNA", "ARIEL", "WINONA", "VIDA", "ROSITA", "MARIANNA", "WILLIAM",
+ "RACHEAL", "GUILLERMINA", "ELOISA", "CELESTINE", "CAREN", "MALISSA",
+ "LONA", "CHANTEL", "SHELLIE", "MARISELA", "LEORA", "AGATHA",
+ "SOLEDAD", "MIGDALIA", "IVETTE", "CHRISTEN", "ATHENA", "JANEL",
+ "CHLOE", "VEDA", "PATTIE", "TESSIE", "TERA", "MARILYNN", "LUCRETIA",
+ "KARRIE", "DINAH", "DANIELA", "ALECIA", "ADELINA", "VERNICE",
+ "SHIELA", "PORTIA", "MERRY", "LASHAWN", "DEVON", "DARA", "TAWANA",
+ "OMA", "VERDA", "CHRISTIN", "ALENE", "ZELLA", "SANDI", "RAFAELA",
+ "MAYA", "KIRA", "CANDIDA", "ALVINA", "SUZAN", "SHAYLA", "LYN",
+ "LETTIE", "ALVA", "SAMATHA", "ORALIA", "MATILDE", "MADONNA",
+ "LARISSA", "VESTA", "RENITA", "INDIA", "DELOIS", "SHANDA",
+ "PHILLIS", "LORRI", "ERLINDA", "CRUZ", "CATHRINE", "BARB", "ZOE",
+ "ISABELL", "IONE", "GISELA", "CHARLIE", "VALENCIA", "ROXANNA",
+ "MAYME", "KISHA", "ELLIE", "MELLISSA", "DORRIS", "DALIA", "BELLA",
+ "ANNETTA", "ZOILA", "RETA", "REINA", "LAURETTA", "KYLIE",
+ "CHRISTAL", "PILAR", "CHARLA", "ELISSA", "TIFFANI", "TANA",
+ "PAULINA", "LEOTA", "BREANNA", "JAYME", "CARMEL", "VERNELL",
+ "TOMASA", "MANDI", "DOMINGA", "SANTA", "MELODIE", "LURA", "ALEXA",
+ "TAMELA", "RYAN", "MIRNA", "KERRIE", "VENUS", "NOEL", "FELICITA",
+ "CRISTY", "CARMELITA", "BERNIECE", "ANNEMARIE", "TIARA", "ROSEANNE",
+ "MISSY", "CORI", "ROXANA", "PRICILLA", "KRISTAL", "JUNG", "ELYSE",
+ "HAYDEE", "ALETHA", "BETTINA", "MARGE", "GILLIAN", "FILOMENA",
+ "CHARLES", "ZENAIDA", "HARRIETTE", "CARIDAD", "VADA", "UNA",
+ "ARETHA", "PEARLINE", "MARJORY", "MARCELA", "FLOR", "EVETTE",
+ "ELOUISE", "ALINA", "TRINIDAD", "DAVID", "DAMARIS", "CATHARINE",
+ "CARROLL", "BELVA", "NAKIA", "MARLENA", "LUANNE", "LORINE", "KARON",
+ "DORENE", "DANITA", "BRENNA", "TATIANA", "SAMMIE", "LOUANN",
+ "LOREN", "JULIANNA", "ANDRIA", "PHILOMENA", "LUCILA", "LEONORA",
+ "DOVIE", "ROMONA", "MIMI", "JACQUELIN", "GAYE", "TONJA", "MISTI",
+ "JOE", "GENE", "CHASTITY", "STACIA", "ROXANN", "MICAELA", "NIKITA",
+ "MEI", "VELDA", "MARLYS", "JOHNNA", "AURA", "LAVERN", "IVONNE",
+ "HAYLEY", "NICKI", "MAJORIE", "HERLINDA", "GEORGE", "ALPHA",
+ "YADIRA", "PERLA", "GREGORIA", "DANIEL", "ANTONETTE", "SHELLI",
+ "MOZELLE", "MARIAH", "JOELLE", "CORDELIA", "JOSETTE", "CHIQUITA",
+ "TRISTA", "LOUIS", "LAQUITA", "GEORGIANA", "CANDI", "SHANON",
+ "LONNIE", "HILDEGARD", "CECIL", "VALENTINA", "STEPHANY", "MAGDA",
+ "KAROL", "GERRY", "GABRIELLA", "TIANA", "ROMA", "RICHELLE", "RAY",
+ "PRINCESS", "OLETA", "JACQUE", "IDELLA", "ALAINA", "SUZANNA",
+ "JOVITA", "BLAIR", "TOSHA", "RAVEN", "NEREIDA", "MARLYN", "KYLA",
+ "JOSEPH", "DELFINA", "TENA", "STEPHENIE", "SABINA", "NATHALIE",
+ "MARCELLE", "GERTIE", "DARLEEN", "THEA", "SHARONDA", "SHANTEL",
+ "BELEN", "VENESSA", "ROSALINA", "ONA", "GENOVEVA", "COREY",
+ "CLEMENTINE", "ROSALBA", "RENATE", "RENATA", "MI", "IVORY",
+ "GEORGIANNA", "FLOY", "DORCAS", "ARIANA", "TYRA", "THEDA", "MARIAM",
+ "JULI", "JESICA", "DONNIE", "VIKKI", "VERLA", "ROSELYN", "MELVINA",
+ "JANNETTE", "GINNY", "DEBRAH", "CORRIE", "ASIA", "VIOLETA",
+ "MYRTIS", "LATRICIA", "COLLETTE", "CHARLEEN", "ANISSA", "VIVIANA",
+ "TWYLA", "PRECIOUS", "NEDRA", "LATONIA", "LAN", "HELLEN", "FABIOLA",
+ "ANNAMARIE", "ADELL", "SHARYN", "CHANTAL", "NIKI", "MAUD",
+ "LIZETTE", "LINDY", "KIA", "KESHA", "JEANA", "DANELLE", "CHARLINE",
+ "CHANEL", "CARROL", "VALORIE", "LIA", "DORTHA", "CRISTAL", "SUNNY",
+ "LEONE", "LEILANI", "GERRI", "DEBI", "ANDRA", "KESHIA", "IMA",
+ "EULALIA", "EASTER", "DULCE", "NATIVIDAD", "LINNIE", "KAMI",
+ "GEORGIE", "CATINA", "BROOK", "ALDA", "WINNIFRED", "SHARLA",
+ "RUTHANN", "MEAGHAN", "MAGDALENE", "LISSETTE", "ADELAIDA", "VENITA",
+ "TRENA", "SHIRLENE", "SHAMEKA", "ELIZEBETH", "DIAN", "SHANTA",
+ "MICKEY", "LATOSHA", "CARLOTTA", "WINDY", "SOON", "ROSINA",
+ "MARIANN", "LEISA", "JONNIE", "DAWNA", "CATHIE", "BILLY", "ASTRID",
+ "SIDNEY", "LAUREEN", "JANEEN", "HOLLI", "FAWN", "VICKEY", "TERESSA",
+ "SHANTE", "RUBYE", "MARCELINA", "CHANDA", "CARY", "TERESE",
+ "SCARLETT", "MARTY", "MARNIE", "LULU", "LISETTE", "JENIFFER",
+ "ELENOR", "DORINDA", "DONITA", "CARMAN", "BERNITA", "ALTAGRACIA",
+ "ALETA", "ADRIANNA", "ZORAIDA", "RONNIE", "NICOLA", "LYNDSEY",
+ "KENDALL", "JANINA", "CHRISSY", "AMI", "STARLA", "PHYLIS", "PHUONG",
+ "KYRA", "CHARISSE", "BLANCH", "SANJUANITA", "RONA", "NANCI",
+ "MARILEE", "MARANDA", "CORY", "BRIGETTE", "SANJUANA", "MARITA",
+ "KASSANDRA", "JOYCELYN", "IRA", "FELIPA", "CHELSIE", "BONNY",
+ "MIREYA", "LORENZA", "KYONG", "ILEANA", "CANDELARIA", "TONY",
+ "TOBY", "SHERIE", "OK", "MARK", "LUCIE", "LEATRICE", "LAKESHIA",
+ "GERDA", "EDIE", "BAMBI", "MARYLIN", "LAVON", "HORTENSE", "GARNET",
+ "EVIE", "TRESSA", "SHAYNA", "LAVINA", "KYUNG", "JEANETTA",
+ "SHERRILL", "SHARA", "PHYLISS", "MITTIE", "ANABEL", "ALESIA",
+ "THUY", "TAWANDA", "RICHARD", "JOANIE", "TIFFANIE", "LASHANDA",
+ "KARISSA", "ENRIQUETA", "DARIA", "DANIELLA", "CORINNA", "ALANNA",
+ "ABBEY", "ROXANE", "ROSEANNA", "MAGNOLIA", "LIDA", "KYLE",
+ "JOELLEN", "ERA", "CORAL", "CARLEEN", "TRESA", "PEGGIE", "NOVELLA",
+ "NILA", "MAYBELLE", "JENELLE", "CARINA", "NOVA", "MELINA",
+ "MARQUERITE", "MARGARETTE", "JOSEPHINA", "EVONNE", "DEVIN",
+ "CINTHIA", "ALBINA", "TOYA", "TAWNYA", "SHERITA", "SANTOS",
+ "MYRIAM", "LIZABETH", "LISE", "KEELY", "JENNI", "GISELLE",
+ "CHERYLE", "ARDITH", "ARDIS", "ALESHA", "ADRIANE", "SHAINA",
+ "LINNEA", "KAROLYN", "HONG", "FLORIDA", "FELISHA", "DORI", "DARCI",
+ "ARTIE", "ARMIDA", "ZOLA", "XIOMARA", "VERGIE", "SHAMIKA", "NENA",
+ "NANNETTE", "MAXIE", "LOVIE", "JEANE", "JAIMIE", "INGE", "FARRAH",
+ "ELAINA", "CAITLYN", "STARR", "FELICITAS", "CHERLY", "CARYL",
+ "YOLONDA", "YASMIN", "TEENA", "PRUDENCE", "PENNIE", "NYDIA",
+ "MACKENZIE", "ORPHA", "MARVEL", "LIZBETH", "LAURETTE", "JERRIE",
+ "HERMELINDA", "CAROLEE", "TIERRA", "MIRIAN", "META", "MELONY",
+ "KORI", "JENNETTE", "JAMILA", "ENA", "ANH", "YOSHIKO", "SUSANNAH",
+ "SALINA", "RHIANNON", "JOLEEN", "CRISTINE", "ASHTON", "ARACELY",
+ "TOMEKA", "SHALONDA", "MARTI", "LACIE", "KALA", "JADA", "ILSE",
+ "HAILEY", "BRITTANI", "ZONA", "SYBLE", "SHERRYL", "RANDY", "NIDIA",
+ "MARLO", "KANDICE", "KANDI", "DEB", "DEAN", "AMERICA", "ALYCIA",
+ "TOMMY", "RONNA", "NORENE", "MERCY", "JOSE", "INGEBORG", "GIOVANNA",
+ "GEMMA", "CHRISTEL", "AUDRY", "ZORA", "VITA", "VAN", "TRISH",
+ "STEPHAINE", "SHIRLEE", "SHANIKA", "MELONIE", "MAZIE", "JAZMIN",
+ "INGA", "HOA", "HETTIE", "GERALYN", "FONDA", "ESTRELLA", "ADELLA",
+ "SU", "SARITA", "RINA", "MILISSA", "MARIBETH", "GOLDA", "EVON",
+ "ETHELYN", "ENEDINA", "CHERISE", "CHANA", "VELVA", "TAWANNA",
+ "SADE", "MIRTA", "LI", "KARIE", "JACINTA", "ELNA", "DAVINA",
+ "CIERRA", "ASHLIE", "ALBERTHA", "TANESHA", "STEPHANI", "NELLE",
+ "MINDI", "LU", "LORINDA", "LARUE", "FLORENE", "DEMETRA", "DEDRA",
+ "CIARA", "CHANTELLE", "ASHLY", "SUZY", "ROSALVA", "NOELIA", "LYDA",
+ "LEATHA", "KRYSTYNA", "KRISTAN", "KARRI", "DARLINE", "DARCIE",
+ "CINDA", "CHEYENNE", "CHERRIE", "AWILDA", "ALMEDA", "ROLANDA",
+ "LANETTE", "JERILYN", "GISELE", "EVALYN", "CYNDI", "CLETA", "CARIN",
+ "ZINA", "ZENA", "VELIA", "TANIKA", "PAUL", "CHARISSA", "THOMAS",
+ "TALIA", "MARGARETE", "LAVONDA", "KAYLEE", "KATHLENE", "JONNA",
+ "IRENA", "ILONA", "IDALIA", "CANDIS", "CANDANCE", "BRANDEE",
+ "ANITRA", "ALIDA", "SIGRID", "NICOLETTE", "MARYJO", "LINETTE",
+ "HEDWIG", "CHRISTIANA", "CASSIDY", "ALEXIA", "TRESSIE", "MODESTA",
+ "LUPITA", "LITA", "GLADIS", "EVELIA", "DAVIDA", "CHERRI", "CECILY",
+ "ASHELY", "ANNABEL", "AGUSTINA", "WANITA", "SHIRLY", "ROSAURA",
+ "HULDA", "EUN", "BAILEY", "YETTA", "VERONA", "THOMASINA", "SIBYL",
+ "SHANNAN", "MECHELLE", "LUE", "LEANDRA", "LANI", "KYLEE", "KANDY",
+ "JOLYNN", "FERNE", "EBONI", "CORENE", "ALYSIA", "ZULA", "NADA",
+ "MOIRA", "LYNDSAY", "LORRETTA", "JUAN", "JAMMIE", "HORTENSIA",
+ "GAYNELL", "CAMERON", "ADRIA", "VINA", "VICENTA", "TANGELA",
+ "STEPHINE", "NORINE", "NELLA", "LIANA", "LESLEE", "KIMBERELY",
+ "ILIANA", "GLORY", "FELICA", "EMOGENE", "ELFRIEDE", "EDEN",
+ "EARTHA", "CARMA", "BEA", "OCIE", "MARRY", "LENNIE", "KIARA",
+ "JACALYN", "CARLOTA", "ARIELLE", "YU", "STAR", "OTILIA", "KIRSTIN",
+ "KACEY", "JOHNETTA", "JOEY", "JOETTA", "JERALDINE", "JAUNITA",
+ "ELANA", "DORTHEA", "CAMI", "AMADA", "ADELIA", "VERNITA", "TAMAR",
+ "SIOBHAN", "RENEA", "RASHIDA", "OUIDA", "ODELL", "NILSA", "MERYL",
+ "KRISTYN", "JULIETA", "DANICA", "BREANNE", "AUREA", "ANGLEA",
+ "SHERRON", "ODETTE", "MALIA", "LORELEI", "LIN", "LEESA", "KENNA",
+ "KATHLYN", "FIONA", "CHARLETTE", "SUZIE", "SHANTELL", "SABRA",
+ "RACQUEL", "MYONG", "MIRA", "MARTINE", "LUCIENNE", "LAVADA",
+ "JULIANN", "JOHNIE", "ELVERA", "DELPHIA", "CLAIR", "CHRISTIANE",
+ "CHAROLETTE", "CARRI", "AUGUSTINE", "ASHA", "ANGELLA", "PAOLA",
+ "NINFA", "LEDA", "LAI", "EDA", "SUNSHINE", "STEFANI", "SHANELL",
+ "PALMA", "MACHELLE", "LISSA", "KECIA", "KATHRYNE", "KARLENE",
+ "JULISSA", "JETTIE", "JENNIFFER", "HUI", "CORRINA", "CHRISTOPHER",
+ "CAROLANN", "ALENA", "TESS", "ROSARIA", "MYRTICE", "MARYLEE",
+ "LIANE", "KENYATTA", "JUDIE", "JANEY", "IN", "ELMIRA", "ELDORA",
+ "DENNA", "CRISTI", "CATHI", "ZAIDA", "VONNIE", "VIVA", "VERNIE",
+ "ROSALINE", "MARIELA", "LUCIANA", "LESLI", "KARAN", "FELICE",
+ "DENEEN", "ADINA", "WYNONA", "TARSHA", "SHERON", "SHASTA",
+ "SHANITA", "SHANI", "SHANDRA", "RANDA", "PINKIE", "PARIS", "NELIDA",
+ "MARILOU", "LYLA", "LAURENE", "LACI", "JOI", "JANENE", "DOROTHA",
+ "DANIELE", "DANI", "CAROLYNN", "CARLYN", "BERENICE", "AYESHA",
+ "ANNELIESE", "ALETHEA", "THERSA", "TAMIKO", "RUFINA", "OLIVA",
+ "MOZELL", "MARYLYN", "MADISON", "KRISTIAN", "KATHYRN", "KASANDRA",
+ "KANDACE", "JANAE", "GABRIEL", "DOMENICA", "DEBBRA", "DANNIELLE",
+ "CHUN", "BUFFY", "BARBIE", "ARCELIA", "AJA", "ZENOBIA", "SHAREN",
+ "SHAREE", "PATRICK", "PAGE", "MY", "LAVINIA", "KUM", "KACIE",
+ "JACKELINE", "HUONG", "FELISA", "EMELIA", "ELEANORA", "CYTHIA",
+ "CRISTIN", "CLYDE", "CLARIBEL", "CARON", "ANASTACIA", "ZULMA",
+ "ZANDRA", "YOKO", "TENISHA", "SUSANN", "SHERILYN", "SHAY",
+ "SHAWANDA", "SABINE", "ROMANA", "MATHILDA", "LINSEY", "KEIKO",
+ "JOANA", "ISELA", "GRETTA", "GEORGETTA", "EUGENIE", "DUSTY",
+ "DESIRAE", "DELORA", "CORAZON", "ANTONINA", "ANIKA", "WILLENE",
+ "TRACEE", "TAMATHA", "REGAN", "NICHELLE", "MICKIE", "MAEGAN",
+ "LUANA", "LANITA", "KELSIE", "EDELMIRA", "BREE", "AFTON", "TEODORA",
+ "TAMIE", "SHENA", "MEG", "LINH", "KELI", "KACI", "DANYELLE",
+ "BRITT", "ARLETTE", "ALBERTINE", "ADELLE", "TIFFINY", "STORMY",
+ "SIMONA", "NUMBERS", "NICOLASA", "NICHOL", "NIA", "NAKISHA", "MEE",
+ "MAIRA", "LOREEN", "KIZZY", "JOHNNY", "JAY", "FALLON", "CHRISTENE",
+ "BOBBYE", "ANTHONY", "YING", "VINCENZA", "TANJA", "RUBIE", "RONI",
+ "QUEENIE", "MARGARETT", "KIMBERLI", "IRMGARD", "IDELL", "HILMA",
+ "EVELINA", "ESTA", "EMILEE", "DENNISE", "DANIA", "CARL", "CARIE",
+ "ANTONIO", "WAI", "SANG", "RISA", "RIKKI", "PARTICIA", "MUI",
+ "MASAKO", "MARIO", "LUVENIA", "LOREE", "LONI", "LIEN", "KEVIN",
+ "GIGI", "FLORENCIA", "DORIAN", "DENITA", "DALLAS", "CHI", "BILLYE",
+ "ALEXANDER", "TOMIKA", "SHARITA", "RANA", "NIKOLE", "NEOMA",
+ "MARGARITE", "MADALYN", "LUCINA", "LAILA", "KALI", "JENETTE",
+ "GABRIELE", "EVELYNE", "ELENORA", "CLEMENTINA", "ALEJANDRINA",
+ "ZULEMA", "VIOLETTE", "VANNESSA", "THRESA", "RETTA", "PIA",
+ "PATIENCE", "NOELLA", "NICKIE", "JONELL", "DELTA", "CHUNG", "CHAYA",
+ "CAMELIA", "BETHEL", "ANYA", "ANDREW", "THANH", "SUZANN", "SPRING",
+ "SHU", "MILA", "LILLA", "LAVERNA", "KEESHA", "KATTIE", "GIA",
+ "GEORGENE", "EVELINE", "ESTELL", "ELIZBETH", "VIVIENNE", "VALLIE",
+ "TRUDIE", "STEPHANE", "MICHEL", "MAGALY", "MADIE", "KENYETTA",
+ "KARREN", "JANETTA", "HERMINE", "HARMONY", "DRUCILLA", "DEBBI",
+ "CELESTINA", "CANDIE", "BRITNI", "BECKIE", "AMINA", "ZITA", "YUN",
+ "YOLANDE", "VIVIEN", "VERNETTA", "TRUDI", "SOMMER", "PEARLE",
+ "PATRINA", "OSSIE", "NICOLLE", "LOYCE", "LETTY", "LARISA",
+ "KATHARINA", "JOSELYN", "JONELLE", "JENELL", "IESHA", "HEIDE",
+ "FLORINDA", "FLORENTINA", "FLO", "ELODIA", "DORINE", "BRUNILDA",
+ "BRIGID", "ASHLI", "ARDELLA", "TWANA", "THU", "TARAH", "SUNG",
+ "SHEA", "SHAVON", "SHANE", "SERINA", "RAYNA", "RAMONITA", "NGA",
+ "MARGURITE", "LUCRECIA", "KOURTNEY", "KATI", "JESUS", "JESENIA",
+ "DIAMOND", "CRISTA", "AYANA", "ALICA", "ALIA", "VINNIE", "SUELLEN",
+ "ROMELIA", "RACHELL", "PIPER", "OLYMPIA", "MICHIKO", "KATHALEEN",
+ "JOLIE", "JESSI", "JANESSA", "HANA", "HA", "ELEASE", "CARLETTA",
+ "BRITANY", "SHONA", "SALOME", "ROSAMOND", "REGENA", "RAINA", "NGOC",
+ "NELIA", "LOUVENIA", "LESIA", "LATRINA", "LATICIA", "LARHONDA",
+ "JINA", "JACKI", "HOLLIS", "HOLLEY", "EMMY", "DEEANN", "CORETTA",
+ "ARNETTA", "VELVET", "THALIA", "SHANICE", "NETA", "MIKKI", "MICKI",
+ "LONNA", "LEANA", "LASHUNDA", "KILEY", "JOYE", "JACQULYN",
+ "IGNACIA", "HYUN", "HIROKO", "HENRY", "HENRIETTE", "ELAYNE",
+ "DELINDA", "DARNELL", "DAHLIA", "COREEN", "CONSUELA", "CONCHITA",
+ "CELINE", "BABETTE", "AYANNA", "ANETTE", "ALBERTINA", "SKYE",
+ "SHAWNEE", "SHANEKA", "QUIANA", "PAMELIA", "MIN", "MERRI",
+ "MERLENE", "MARGIT", "KIESHA", "KIERA", "KAYLENE", "JODEE",
+ "JENISE", "ERLENE", "EMMIE", "ELSE", "DARYL", "DALILA", "DAISEY",
+ "CODY", "CASIE", "BELIA", "BABARA", "VERSIE", "VANESA", "SHELBA",
+ "SHAWNDA", "SAM", "NORMAN", "NIKIA", "NAOMA", "MARNA", "MARGERET",
+ "MADALINE", "LAWANA", "KINDRA", "JUTTA", "JAZMINE", "JANETT",
+ "HANNELORE", "GLENDORA", "GERTRUD", "GARNETT", "FREEDA",
+ "FREDERICA", "FLORANCE", "FLAVIA", "DENNIS", "CARLINE", "BEVERLEE",
+ "ANJANETTE", "VALDA", "TRINITY", "TAMALA", "STEVIE", "SHONNA",
+ "SHA", "SARINA", "ONEIDA", "MICAH", "MERILYN", "MARLEEN", "LURLINE",
+ "LENNA", "KATHERIN", "JIN", "JENI", "HAE", "GRACIA", "GLADY",
+ "FARAH", "ERIC", "ENOLA", "EMA", "DOMINQUE", "DEVONA", "DELANA",
+ "CECILA", "CAPRICE", "ALYSHA", "ALI", "ALETHIA", "VENA", "THERESIA",
+ "TAWNY", "SONG", "SHAKIRA", "SAMARA", "SACHIKO", "RACHELE",
+ "PAMELLA", "NICKY", "MARNI", "MARIEL", "MAREN", "MALISA", "LIGIA",
+ "LERA", "LATORIA", "LARAE", "KIMBER", "KATHERN", "KAREY",
+ "JENNEFER", "JANETH", "HALINA", "FREDIA", "DELISA", "DEBROAH",
+ "CIERA", "CHIN", "ANGELIKA", "ANDREE", "ALTHA", "YEN", "VIVAN",
+ "TERRESA", "TANNA", "SUK", "SUDIE", "SOO", "SIGNE", "SALENA",
+ "RONNI", "REBBECCA", "MYRTIE", "MCKENZIE", "MALIKA", "MAIDA",
+ "LOAN", "LEONARDA", "KAYLEIGH", "FRANCE", "ETHYL", "ELLYN", "DAYLE",
+ "CAMMIE", "BRITTNI", "BIRGIT", "AVELINA", "ASUNCION", "ARIANNA",
+ "AKIKO", "VENICE", "TYESHA", "TONIE", "TIESHA", "TAKISHA",
+ "STEFFANIE", "SINDY", "SANTANA", "MEGHANN", "MANDA", "MACIE",
+ "LADY", "KELLYE", "KELLEE", "JOSLYN", "JASON", "INGER", "INDIRA",
+ "GLINDA", "GLENNIS", "FERNANDA", "FAUSTINA", "ENEIDA", "ELICIA",
+ "DOT", "DIGNA", "DELL", "ARLETTA", "ANDRE", "WILLIA", "TAMMARA",
+ "TABETHA", "SHERRELL", "SARI", "REFUGIO", "REBBECA", "PAULETTA",
+ "NIEVES", "NATOSHA", "NAKITA", "MAMMIE", "KENISHA", "KAZUKO",
+ "KASSIE", "GARY", "EARLEAN", "DAPHINE", "CORLISS", "CLOTILDE",
+ "CAROLYNE", "BERNETTA", "AUGUSTINA", "AUDREA", "ANNIS", "ANNABELL",
+ "YAN", "TENNILLE", "TAMICA", "SELENE", "SEAN", "ROSANA", "REGENIA",
+ "QIANA", "MARKITA", "MACY", "LEEANNE", "LAURINE", "KYM", "JESSENIA",
+ "JANITA", "GEORGINE", "GENIE", "EMIKO", "ELVIE", "DEANDRA",
+ "DAGMAR", "CORIE", "COLLEN", "CHERISH", "ROMAINE", "PORSHA",
+ "PEARLENE", "MICHELINE", "MERNA", "MARGORIE", "MARGARETTA", "LORE",
+ "KENNETH", "JENINE", "HERMINA", "FREDERICKA", "ELKE", "DRUSILLA",
+ "DORATHY", "DIONE", "DESIRE", "CELENA", "BRIGIDA", "ANGELES",
+ "ALLEGRA", "THEO", "TAMEKIA", "SYNTHIA", "STEPHEN", "SOOK",
+ "SLYVIA", "ROSANN", "REATHA", "RAYE", "MARQUETTA", "MARGART",
+ "LING", "LAYLA", "KYMBERLY", "KIANA", "KAYLEEN", "KATLYN", "KARMEN",
+ "JOELLA", "IRINA", "EMELDA", "ELENI", "DETRA", "CLEMMIE", "CHERYLL",
+ "CHANTELL", "CATHEY", "ARNITA", "ARLA", "ANGLE", "ANGELIC", "ALYSE",
+ "ZOFIA", "THOMASINE", "TENNIE", "SON", "SHERLY", "SHERLEY",
+ "SHARYL", "REMEDIOS", "PETRINA", "NICKOLE", "MYUNG", "MYRLE",
+ "MOZELLA", "LOUANNE", "LISHA", "LATIA", "LANE", "KRYSTA",
+ "JULIENNE", "JOEL", "JEANENE", "JACQUALINE", "ISAURA", "GWENDA",
+ "EARLEEN", "DONALD", "CLEOPATRA", "CARLIE", "AUDIE", "ANTONIETTA",
+ "ALISE", "ALEX", "VERDELL", "VAL", "TYLER", "TOMOKO", "THAO",
+ "TALISHA", "STEVEN", "SO", "SHEMIKA", "SHAUN", "SCARLET", "SAVANNA",
+ "SANTINA", "ROSIA", "RAEANN", "ODILIA", "NANA", "MINNA", "MAGAN",
+ "LYNELLE", "LE", "KARMA", "JOEANN", "IVANA", "INELL", "ILANA",
+ "HYE", "HONEY", "HEE", "GUDRUN", "FRANK", "DREAMA", "CRISSY",
+ "CHANTE", "CARMELINA", "ARVILLA", "ARTHUR", "ANNAMAE", "ALVERA",
+ "ALEIDA", "AARON", "YEE", "YANIRA", "VANDA", "TIANNA", "TAM",
+ "STEFANIA", "SHIRA", "PERRY", "NICOL", "NANCIE", "MONSERRATE",
+ "MINH", "MELYNDA", "MELANY", "MATTHEW", "LOVELLA", "LAURE", "KIRBY",
+ "KACY", "JACQUELYNN", "HYON", "GERTHA", "FRANCISCO", "ELIANA",
+ "CHRISTENA", "CHRISTEEN", "CHARISE", "CATERINA", "CARLEY",
+ "CANDYCE", "ARLENA", "AMMIE", "YANG", "WILLETTE", "VANITA", "TUYET",
+ "TINY", "SYREETA", "SILVA", "SCOTT", "RONALD", "PENNEY", "NYLA",
+ "MICHAL", "MAURICE", "MARYAM", "MARYA", "MAGEN", "LUDIE", "LOMA",
+ "LIVIA", "LANELL", "KIMBERLIE", "JULEE", "DONETTA", "DIEDRA",
+ "DENISHA", "DEANE", "DAWNE", "CLARINE", "CHERRYL", "BRONWYN",
+ "BRANDON", "ALLA", "VALERY", "TONDA", "SUEANN", "SORAYA",
+ "SHOSHANA", "SHELA", "SHARLEEN", "SHANELLE", "NERISSA", "MICHEAL",
+ "MERIDITH", "MELLIE", "MAYE", "MAPLE", "MAGARET", "LUIS", "LILI",
+ "LEONILA", "LEONIE", "LEEANNA", "LAVONIA", "LAVERA", "KRISTEL",
+ "KATHEY", "KATHE", "JUSTIN", "JULIAN", "JIMMY", "JANN", "ILDA",
+ "HILDRED", "HILDEGARDE", "GENIA", "FUMIKO", "EVELIN", "ERMELINDA",
+ "ELLY", "DUNG", "DOLORIS", "DIONNA", "DANAE", "BERNEICE", "ANNICE",
+ "ALIX", "VERENA", "VERDIE", "TRISTAN", "SHAWNNA", "SHAWANA",
+ "SHAUNNA", "ROZELLA", "RANDEE", "RANAE", "MILAGRO", "LYNELL",
+ "LUISE", "LOUIE", "LOIDA", "LISBETH", "KARLEEN", "JUNITA", "JONA",
+ "ISIS", "HYACINTH", "HEDY", "GWENN", "ETHELENE", "ERLINE", "EDWARD",
+ "DONYA", "DOMONIQUE", "DELICIA", "DANNETTE", "CICELY", "BRANDA",
+ "BLYTHE", "BETHANN", "ASHLYN", "ANNALEE", "ALLINE", "YUKO", "VELLA",
+ "TRANG", "TOWANDA", "TESHA", "SHERLYN", "NARCISA", "MIGUELINA",
+ "MERI", "MAYBELL", "MARLANA", "MARGUERITA", "MADLYN", "LUNA",
+ "LORY", "LORIANN", "LIBERTY", "LEONORE", "LEIGHANN", "LAURICE",
+ "LATESHA", "LARONDA", "KATRICE", "KASIE", "KARL", "KALEY",
+ "JADWIGA", "GLENNIE", "GEARLDINE", "FRANCINA", "EPIFANIA", "DYAN",
+ "DORIE", "DIEDRE", "DENESE", "DEMETRICE", "DELENA", "DARBY",
+ "CRISTIE", "CLEORA", "CATARINA", "CARISA", "BERNIE", "BARBERA",
+ "ALMETA", "TRULA", "TEREASA", "SOLANGE", "SHEILAH", "SHAVONNE",
+ "SANORA", "ROCHELL", "MATHILDE", "MARGARETA", "MAIA", "LYNSEY",
+ "LAWANNA", "LAUNA", "KENA", "KEENA", "KATIA", "JAMEY", "GLYNDA",
+ "GAYLENE", "ELVINA", "ELANOR", "DANUTA", "DANIKA", "CRISTEN",
+ "CORDIE", "COLETTA", "CLARITA", "CARMON", "BRYNN", "AZUCENA",
+ "AUNDREA", "ANGELE", "YI", "WALTER", "VERLIE", "VERLENE", "TAMESHA",
+ "SILVANA", "SEBRINA", "SAMIRA", "REDA", "RAYLENE", "PENNI",
+ "PANDORA", "NORAH", "NOMA", "MIREILLE", "MELISSIA", "MARYALICE",
+ "LARAINE", "KIMBERY", "KARYL", "KARINE", "KAM", "JOLANDA", "JOHANA",
+ "JESUSA", "JALEESA", "JAE", "JACQUELYNE", "IRISH", "ILUMINADA",
+ "HILARIA", "HANH", "GENNIE", "FRANCIE", "FLORETTA", "EXIE", "EDDA",
+ "DREMA", "DELPHA", "BEV", "BARBAR", "ASSUNTA", "ARDELL", "ANNALISA",
+ "ALISIA", "YUKIKO", "YOLANDO", "WONDA", "WEI", "WALTRAUD", "VETA",
+ "TEQUILA", "TEMEKA", "TAMEIKA", "SHIRLEEN", "SHENITA", "PIEDAD",
+ "OZELLA", "MIRTHA", "MARILU", "KIMIKO", "JULIANE", "JENICE", "JEN",
+ "JANAY", "JACQUILINE", "HILDE", "FE", "FAE", "EVAN", "EUGENE",
+ "ELOIS", "ECHO", "DEVORAH", "CHAU", "BRINDA", "BETSEY", "ARMINDA",
+ "ARACELIS", "APRYL", "ANNETT", "ALISHIA", "VEOLA", "USHA",
+ "TOSHIKO", "THEOLA", "TASHIA", "TALITHA", "SHERY", "RUDY",
+ "RENETTA", "REIKO", "RASHEEDA", "OMEGA", "OBDULIA", "MIKA",
+ "MELAINE", "MEGGAN", "MARTIN", "MARLEN", "MARGET", "MARCELINE",
+ "MANA", "MAGDALEN", "LIBRADA", "LEZLIE", "LEXIE", "LATASHIA",
+ "LASANDRA", "KELLE", "ISIDRA", "ISA", "INOCENCIA", "GWYN",
+ "FRANCOISE", "ERMINIA", "ERINN", "DIMPLE", "DEVORA", "CRISELDA",
+ "ARMANDA", "ARIE", "ARIANE", "ANGELO", "ANGELENA", "ALLEN", "ALIZA",
+ "ADRIENE", "ADALINE", "XOCHITL", "TWANNA", "TRAN", "TOMIKO",
+ "TAMISHA", "TAISHA", "SUSY", "SIU", "RUTHA", "ROXY", "RHONA",
+ "RAYMOND", "OTHA", "NORIKO", "NATASHIA", "MERRIE", "MELVIN",
+ "MARINDA", "MARIKO", "MARGERT", "LORIS", "LIZZETTE", "LEISHA",
+ "KAILA", "KA", "JOANNIE", "JERRICA", "JENE", "JANNET", "JANEE",
+ "JACINDA", "HERTA", "ELENORE", "DORETTA", "DELAINE", "DANIELL",
+ "CLAUDIE", "CHINA", "BRITTA", "APOLONIA", "AMBERLY", "ALEASE",
+ "YURI", "YUK", "WEN", "WANETA", "UTE", "TOMI", "SHARRI", "SANDIE",
+ "ROSELLE", "REYNALDA", "RAGUEL", "PHYLICIA", "PATRIA", "OLIMPIA",
+ "ODELIA", "MITZIE", "MITCHELL", "MISS", "MINDA", "MIGNON", "MICA",
+ "MENDY", "MARIVEL", "MAILE", "LYNETTA", "LAVETTE", "LAURYN",
+ "LATRISHA", "LAKIESHA", "KIERSTEN", "KARY", "JOSPHINE", "JOLYN",
+ "JETTA", "JANISE", "JACQUIE", "IVELISSE", "GLYNIS", "GIANNA",
+ "GAYNELLE", "EMERALD", "DEMETRIUS", "DANYELL", "DANILLE", "DACIA",
+ "CORALEE", "CHER", "CEOLA", "BRETT", "BELL", "ARIANNE", "ALESHIA",
+ "YUNG", "WILLIEMAE", "TROY", "TRINH", "THORA", "TAI", "SVETLANA",
+ "SHERIKA", "SHEMEKA", "SHAUNDA", "ROSELINE", "RICKI", "MELDA",
+ "MALLIE", "LAVONNA", "LATINA", "LARRY", "LAQUANDA", "LALA",
+ "LACHELLE", "KLARA", "KANDIS", "JOHNA", "JEANMARIE", "JAYE", "HANG",
+ "GRAYCE", "GERTUDE", "EMERITA", "EBONIE", "CLORINDA", "CHING",
+ "CHERY", "CAROLA", "BREANN", "BLOSSOM", "BERNARDINE", "BECKI",
+ "ARLETHA", "ARGELIA", "ARA", "ALITA", "YULANDA", "YON", "YESSENIA",
+ "TOBI", "TASIA", "SYLVIE", "SHIRL", "SHIRELY", "SHERIDAN", "SHELLA",
+ "SHANTELLE", "SACHA", "ROYCE", "REBECKA", "REAGAN", "PROVIDENCIA",
+ "PAULENE", "MISHA", "MIKI", "MARLINE", "MARICA", "LORITA",
+ "LATOYIA", "LASONYA", "KERSTIN", "KENDA", "KEITHA", "KATHRIN",
+ "JAYMIE", "JACK", "GRICELDA", "GINETTE", "ERYN", "ELINA",
+ "ELFRIEDA", "DANYEL", "CHEREE", "CHANELLE", "BARRIE", "AVERY",
+ "AURORE", "ANNAMARIA", "ALLEEN", "AILENE", "AIDE", "YASMINE",
+ "VASHTI", "VALENTINE", "TREASA", "TORY", "TIFFANEY", "SHERYLL",
+ "SHARIE", "SHANAE", "SAU", "RAISA", "PA", "NEDA", "MITSUKO",
+ "MIRELLA", "MILDA", "MARYANNA", "MARAGRET", "MABELLE", "LUETTA",
+ "LORINA", "LETISHA", "LATARSHA", "LANELLE", "LAJUANA", "KRISSY",
+ "KARLY", "KARENA", "JON", "JESSIKA", "JERICA", "JEANELLE",
+ "JANUARY", "JALISA", "JACELYN", "IZOLA", "IVEY", "GREGORY", "EUNA",
+ "ETHA", "DREW", "DOMITILA", "DOMINICA", "DAINA", "CREOLA", "CARLI",
+ "CAMIE", "BUNNY", "BRITTNY", "ASHANTI", "ANISHA", "ALEEN", "ADAH",
+ "YASUKO", "WINTER", "VIKI", "VALRIE", "TONA", "TINISHA", "THI",
+ "TERISA", "TATUM", "TANEKA", "SIMONNE", "SHALANDA", "SERITA",
+ "RESSIE", "REFUGIA", "PAZ", "OLENE", "NA", "MERRILL", "MARGHERITA",
+ "MANDIE", "MAN", "MAIRE", "LYNDIA", "LUCI", "LORRIANE", "LORETA",
+ "LEONIA", "LAVONA", "LASHAWNDA", "LAKIA", "KYOKO", "KRYSTINA",
+ "KRYSTEN", "KENIA", "KELSI", "JUDE", "JEANICE", "ISOBEL",
+ "GEORGIANN", "GENNY", "FELICIDAD", "EILENE", "DEON", "DELOISE",
+ "DEEDEE", "DANNIE", "CONCEPTION", "CLORA", "CHERILYN", "CHANG",
+ "CALANDRA", "BERRY", "ARMANDINA", "ANISA", "ULA", "TIMOTHY",
+ "TIERA", "THERESSA", "STEPHANIA", "SIMA", "SHYLA", "SHONTA",
+ "SHERA", "SHAQUITA", "SHALA", "SAMMY", "ROSSANA", "NOHEMI", "NERY",
+ "MORIAH", "MELITA", "MELIDA", "MELANI", "MARYLYNN", "MARISHA",
+ "MARIETTE", "MALORIE", "MADELENE", "LUDIVINA", "LORIA", "LORETTE",
+ "LORALEE", "LIANNE", "LEON", "LAVENIA", "LAURINDA", "LASHON", "KIT",
+ "KIMI", "KEILA", "KATELYNN", "KAI", "JONE", "JOANE", "JI", "JAYNA",
+ "JANELLA", "JA", "HUE", "HERTHA", "FRANCENE", "ELINORE", "DESPINA",
+ "DELSIE", "DEEDRA", "CLEMENCIA", "CARRY", "CAROLIN", "CARLOS",
+ "BULAH", "BRITTANIE", "BOK", "BLONDELL", "BIBI", "BEAULAH", "BEATA",
+ "ANNITA", "AGRIPINA", "VIRGEN", "VALENE", "UN", "TWANDA", "TOMMYE",
+ "TOI", "TARRA", "TARI", "TAMMERA", "SHAKIA", "SADYE", "RUTHANNE",
+ "ROCHEL", "RIVKA", "PURA", "NENITA", "NATISHA", "MING", "MERRILEE",
+ "MELODEE", "MARVIS", "LUCILLA", "LEENA", "LAVETA", "LARITA",
+ "LANIE", "KEREN", "ILEEN", "GEORGEANN", "GENNA", "GENESIS", "FRIDA",
+ "EWA", "EUFEMIA", "EMELY", "ELA", "EDYTH", "DEONNA", "DEADRA",
+ "DARLENA", "CHANELL", "CHAN", "CATHERN", "CASSONDRA", "CASSAUNDRA",
+ "BERNARDA", "BERNA", "ARLINDA", "ANAMARIA", "ALBERT", "WESLEY",
+ "VERTIE", "VALERI", "TORRI", "TATYANA", "STASIA", "SHERISE",
+ "SHERILL", "SEASON", "SCOTTIE", "SANDA", "RUTHE", "ROSY", "ROBERTO",
+ "ROBBI", "RANEE", "QUYEN", "PEARLY", "PALMIRA", "ONITA", "NISHA",
+ "NIESHA", "NIDA", "NEVADA", "NAM", "MERLYN", "MAYOLA", "MARYLOUISE",
+ "MARYLAND", "MARX", "MARTH", "MARGENE", "MADELAINE", "LONDA",
+ "LEONTINE", "LEOMA", "LEIA", "LAWRENCE", "LAURALEE", "LANORA",
+ "LAKITA", "KIYOKO", "KETURAH", "KATELIN", "KAREEN", "JONIE",
+ "JOHNETTE", "JENEE", "JEANETT", "IZETTA", "HIEDI", "HEIKE",
+ "HASSIE", "HAROLD", "GIUSEPPINA", "GEORGANN", "FIDELA", "FERNANDE",
+ "ELWANDA", "ELLAMAE", "ELIZ", "DUSTI", "DOTTY", "CYNDY", "CORALIE",
+ "CELESTA", "ARGENTINA", "ALVERTA", "XENIA", "WAVA", "VANETTA",
+ "TORRIE", "TASHINA", "TANDY", "TAMBRA", "TAMA", "STEPANIE", "SHILA",
+ "SHAUNTA", "SHARAN", "SHANIQUA", "SHAE", "SETSUKO", "SERAFINA",
+ "SANDEE", "ROSAMARIA", "PRISCILA", "OLINDA", "NADENE", "MUOI",
+ "MICHELINA", "MERCEDEZ", "MARYROSE", "MARIN", "MARCENE", "MAO",
+ "MAGALI", "MAFALDA", "LOGAN", "LINN", "LANNIE", "KAYCE", "KAROLINE",
+ "KAMILAH", "KAMALA", "JUSTA", "JOLINE", "JENNINE", "JACQUETTA",
+ "IRAIDA", "GERALD", "GEORGEANNA", "FRANCHESCA", "FAIRY", "EMELINE",
+ "ELANE", "EHTEL", "EARLIE", "DULCIE", "DALENE", "CRIS", "CLASSIE",
+ "CHERE", "CHARIS", "CAROYLN", "CARMINA", "CARITA", "BRIAN",
+ "BETHANIE", "AYAKO", "ARICA", "AN", "ALYSA", "ALESSANDRA", "AKILAH",
+ "ADRIEN", "ZETTA", "YOULANDA", "YELENA", "YAHAIRA", "XUAN",
+ "WENDOLYN", "VICTOR", "TIJUANA", "TERRELL", "TERINA", "TERESIA",
+ "SUZI", "SUNDAY", "SHERELL", "SHAVONDA", "SHAUNTE", "SHARDA",
+ "SHAKITA", "SENA", "RYANN", "RUBI", "RIVA", "REGINIA", "REA",
+ "RACHAL", "PARTHENIA", "PAMULA", "MONNIE", "MONET", "MICHAELE",
+ "MELIA", "MARINE", "MALKA", "MAISHA", "LISANDRA", "LEO", "LEKISHA",
+ "LEAN", "LAURENCE", "LAKENDRA", "KRYSTIN", "KORTNEY", "KIZZIE",
+ "KITTIE", "KERA", "KENDAL", "KEMBERLY", "KANISHA", "JULENE", "JULE",
+ "JOSHUA", "JOHANNE", "JEFFREY", "JAMEE", "HAN", "HALLEY", "GIDGET",
+ "GALINA", "FREDRICKA", "FLETA", "FATIMAH", "EUSEBIA", "ELZA",
+ "ELEONORE", "DORTHEY", "DORIA", "DONELLA", "DINORAH", "DELORSE",
+ "CLARETHA", "CHRISTINIA", "CHARLYN", "BONG", "BELKIS", "AZZIE",
+ "ANDERA", "AIKO", "ADENA", "YER", "YAJAIRA", "WAN", "VANIA",
+ "ULRIKE", "TOSHIA", "TIFANY", "STEFANY", "SHIZUE", "SHENIKA",
+ "SHAWANNA", "SHAROLYN", "SHARILYN", "SHAQUANA", "SHANTAY", "SEE",
+ "ROZANNE", "ROSELEE", "RICKIE", "REMONA", "REANNA", "RAELENE",
+ "QUINN", "PHUNG", "PETRONILA", "NATACHA", "NANCEY", "MYRL",
+ "MIYOKO", "MIESHA", "MERIDETH", "MARVELLA", "MARQUITTA", "MARHTA",
+ "MARCHELLE", "LIZETH", "LIBBIE", "LAHOMA", "LADAWN", "KINA",
+ "KATHELEEN", "KATHARYN", "KARISA", "KALEIGH", "JUNIE", "JULIEANN",
+ "JOHNSIE", "JANEAN", "JAIMEE", "JACKQUELINE", "HISAKO", "HERMA",
+ "HELAINE", "GWYNETH", "GLENN", "GITA", "EUSTOLIA", "EMELINA",
+ "ELIN", "EDRIS", "DONNETTE", "DONNETTA", "DIERDRE", "DENAE",
+ "DARCEL", "CLAUDE", "CLARISA", "CINDERELLA", "CHIA", "CHARLESETTA",
+ "CHARITA", "CELSA", "CASSY", "CASSI", "CARLEE", "BRUNA",
+ "BRITTANEY", "BRANDE", "BILLI", "BAO", "ANTONETTA", "ANGLA",
+ "ANGELYN", "ANALISA", "ALANE", "WENONA", "WENDIE", "VERONIQUE",
+ "VANNESA", "TOBIE", "TEMPIE", "SUMIKO", "SULEMA", "SPARKLE",
+ "SOMER", "SHEBA", "SHAYNE", "SHARICE", "SHANEL", "SHALON", "SAGE",
+ "ROY", "ROSIO", "ROSELIA", "RENAY", "REMA", "REENA", "PORSCHE",
+ "PING", "PEG", "OZIE", "ORETHA", "ORALEE", "ODA", "NU", "NGAN",
+ "NAKESHA", "MILLY", "MARYBELLE", "MARLIN", "MARIS", "MARGRETT",
+ "MARAGARET", "MANIE", "LURLENE", "LILLIA", "LIESELOTTE", "LAVELLE",
+ "LASHAUNDA", "LAKEESHA", "KEITH", "KAYCEE", "KALYN", "JOYA",
+ "JOETTE", "JENAE", "JANIECE", "ILLA", "GRISEL", "GLAYDS", "GENEVIE",
+ "GALA", "FREDDA", "FRED", "ELMER", "ELEONOR", "DEBERA", "DEANDREA",
+ "DAN", "CORRINNE", "CORDIA", "CONTESSA", "COLENE", "CLEOTILDE",
+ "CHARLOTT", "CHANTAY", "CECILLE", "BEATRIS", "AZALEE", "ARLEAN",
+ "ARDATH", "ANJELICA", "ANJA", "ALFREDIA", "ALEISHA", "ADAM", "ZADA",
+ "YUONNE", "XIAO", "WILLODEAN", "WHITLEY", "VENNIE", "VANNA",
+ "TYISHA", "TOVA", "TORIE", "TONISHA", "TILDA", "TIEN", "TEMPLE",
+ "SIRENA", "SHERRIL", "SHANTI", "SHAN", "SENAIDA", "SAMELLA",
+ "ROBBYN", "RENDA", "REITA", "PHEBE", "PAULITA", "NOBUKO", "NGUYET",
+ "NEOMI", "MOON", "MIKAELA", "MELANIA", "MAXIMINA", "MARG", "MAISIE",
+ "LYNNA", "LILLI", "LAYNE", "LASHAUN", "LAKENYA", "LAEL", "KIRSTIE",
+ "KATHLINE", "KASHA", "KARLYN", "KARIMA", "JOVAN", "JOSEFINE",
+ "JENNELL", "JACQUI", "JACKELYN", "HYO", "HIEN", "GRAZYNA",
+ "FLORRIE", "FLORIA", "ELEONORA", "DWANA", "DORLA", "DONG", "DELMY",
+ "DEJA", "DEDE", "DANN", "CRYSTA", "CLELIA", "CLARIS", "CLARENCE",
+ "CHIEKO", "CHERLYN", "CHERELLE", "CHARMAIN", "CHARA", "CAMMY",
+ "BEE", "ARNETTE", "ARDELLE", "ANNIKA", "AMIEE", "AMEE", "ALLENA",
+ "YVONE", "YUKI", "YOSHIE", "YEVETTE", "YAEL", "WILLETTA", "VONCILE",
+ "VENETTA", "TULA", "TONETTE", "TIMIKA", "TEMIKA", "TELMA", "TEISHA",
+ "TAREN", "TA", "STACEE", "SHIN", "SHAWNTA", "SATURNINA", "RICARDA",
+ "POK", "PASTY", "ONIE", "NUBIA", "MORA", "MIKE", "MARIELLE",
+ "MARIELLA", "MARIANELA", "MARDELL", "MANY", "LUANNA", "LOISE",
+ "LISABETH", "LINDSY", "LILLIANA", "LILLIAM", "LELAH", "LEIGHA",
+ "LEANORA", "LANG", "KRISTEEN", "KHALILAH", "KEELEY", "KANDRA",
+ "JUNKO", "JOAQUINA", "JERLENE", "JANI", "JAMIKA", "JAME", "HSIU",
+ "HERMILA", "GOLDEN", "GENEVIVE", "EVIA", "EUGENA", "EMMALINE",
+ "ELFREDA", "ELENE", "DONETTE", "DELCIE", "DEEANNA", "DARCEY", "CUC",
+ "CLARINDA", "CIRA", "CHAE", "CELINDA", "CATHERYN", "CATHERIN",
+ "CASIMIRA", "CARMELIA", "CAMELLIA", "BREANA", "BOBETTE",
+ "BERNARDINA", "BEBE", "BASILIA", "ARLYNE", "AMAL", "ALAYNA",
+ "ZONIA", "ZENIA", "YURIKO", "YAEKO", "WYNELL", "WILLOW", "WILLENA",
+ "VERNIA", "TU", "TRAVIS", "TORA", "TERRILYN", "TERICA", "TENESHA",
+ "TAWNA", "TAJUANA", "TAINA", "STEPHNIE", "SONA", "SOL", "SINA",
+ "SHONDRA", "SHIZUKO", "SHERLENE", "SHERICE", "SHARIKA", "ROSSIE",
+ "ROSENA", "RORY", "RIMA", "RIA", "RHEBA", "RENNA", "PETER",
+ "NATALYA", "NANCEE", "MELODI", "MEDA", "MAXIMA", "MATHA",
+ "MARKETTA", "MARICRUZ", "MARCELENE", "MALVINA", "LUBA", "LOUETTA",
+ "LEIDA", "LECIA", "LAURAN", "LASHAWNA", "LAINE", "KHADIJAH",
+ "KATERINE", "KASI", "KALLIE", "JULIETTA", "JESUSITA", "JESTINE",
+ "JESSIA", "JEREMY", "JEFFIE", "JANYCE", "ISADORA", "GEORGIANNE",
+ "FIDELIA", "EVITA", "EURA", "EULAH", "ESTEFANA", "ELSY", "ELIZABET",
+ "ELADIA", "DODIE", "DION", "DIA", "DENISSE", "DELORAS", "DELILA",
+ "DAYSI", "DAKOTA", "CURTIS", "CRYSTLE", "CONCHA", "COLBY",
+ "CLARETTA", "CHU", "CHRISTIA", "CHARLSIE", "CHARLENA", "CARYLON",
+ "BETTYANN", "ASLEY", "ASHLEA", "AMIRA", "AI", "AGUEDA", "AGNUS",
+ "YUETTE", "VINITA", "VICTORINA", "TYNISHA", "TREENA", "TOCCARA",
+ "TISH", "THOMASENA", "TEGAN", "SOILA", "SHILOH", "SHENNA",
+ "SHARMAINE", "SHANTAE", "SHANDI", "SEPTEMBER", "SARAN", "SARAI",
+ "SANA", "SAMUEL", "SALLEY", "ROSETTE", "ROLANDE", "REGINE",
+ "OTELIA", "OSCAR", "OLEVIA", "NICHOLLE", "NECOLE", "NAIDA", "MYRTA",
+ "MYESHA", "MITSUE", "MINTA", "MERTIE", "MARGY", "MAHALIA",
+ "MADALENE", "LOVE", "LOURA", "LOREAN", "LEWIS", "LESHA", "LEONIDA",
+ "LENITA", "LAVONE", "LASHELL", "LASHANDRA", "LAMONICA", "KIMBRA",
+ "KATHERINA", "KARRY", "KANESHA", "JULIO", "JONG", "JENEVA",
+ "JAQUELYN", "HWA", "GILMA", "GHISLAINE", "GERTRUDIS", "FRANSISCA",
+ "FERMINA", "ETTIE", "ETSUKO", "ELLIS", "ELLAN", "ELIDIA", "EDRA",
+ "DORETHEA", "DOREATHA", "DENYSE", "DENNY", "DEETTA", "DAINE",
+ "CYRSTAL", "CORRIN", "CAYLA", "CARLITA", "CAMILA", "BURMA", "BULA",
+ "BUENA", "BLAKE", "BARABARA", "AVRIL", "AUSTIN", "ALAINE", "ZANA",
+ "WILHEMINA", "WANETTA", "VIRGIL", "VI", "VERONIKA", "VERNON",
+ "VERLINE", "VASILIKI", "TONITA", "TISA", "TEOFILA", "TAYNA",
+ "TAUNYA", "TANDRA", "TAKAKO", "SUNNI", "SUANNE", "SIXTA", "SHARELL",
+ "SEEMA", "RUSSELL", "ROSENDA", "ROBENA", "RAYMONDE", "PEI",
+ "PAMILA", "OZELL", "NEIDA", "NEELY", "MISTIE", "MICHA", "MERISSA",
+ "MAURITA", "MARYLN", "MARYETTA", "MARSHALL", "MARCELL", "MALENA",
+ "MAKEDA", "MADDIE", "LOVETTA", "LOURIE", "LORRINE", "LORILEE",
+ "LESTER", "LAURENA", "LASHAY", "LARRAINE", "LAREE", "LACRESHA",
+ "KRISTLE", "KRISHNA", "KEVA", "KEIRA", "KAROLE", "JOIE", "JINNY",
+ "JEANNETTA", "JAMA", "HEIDY", "GILBERTE", "GEMA", "FAVIOLA",
+ "EVELYNN", "ENDA", "ELLI", "ELLENA", "DIVINA", "DAGNY", "COLLENE",
+ "CODI", "CINDIE", "CHASSIDY", "CHASIDY", "CATRICE", "CATHERINA",
+ "CASSEY", "CAROLL", "CARLENA", "CANDRA", "CALISTA", "BRYANNA",
+ "BRITTENY", "BEULA", "BARI", "AUDRIE", "AUDRIA", "ARDELIA",
+ "ANNELLE", "ANGILA", "ALONA", "ALLYN", "DOUGLAS", "ROGER",
+ "JONATHAN", "RALPH", "NICHOLAS", "BENJAMIN", "BRUCE", "HARRY",
+ "WAYNE", "STEVE", "HOWARD", "ERNEST", "PHILLIP", "TODD", "CRAIG",
+ "ALAN", "PHILIP", "EARL", "DANNY", "BRYAN", "STANLEY", "LEONARD",
+ "NATHAN", "MANUEL", "RODNEY", "MARVIN", "VINCENT", "JEFFERY",
+ "JEFF", "CHAD", "JACOB", "ALFRED", "BRADLEY", "HERBERT",
+ "FREDERICK", "EDWIN", "DON", "RICKY", "RANDALL", "BARRY", "BERNARD",
+ "LEROY", "MARCUS", "THEODORE", "CLIFFORD", "MIGUEL", "JIM", "TOM",
+ "CALVIN", "BILL", "LLOYD", "DEREK", "WARREN", "DARRELL", "JEROME",
+ "FLOYD", "ALVIN", "TIM", "GORDON", "GREG", "JORGE", "DUSTIN",
+ "PEDRO", "DERRICK", "ZACHARY", "HERMAN", "GLEN", "HECTOR",
+ "RICARDO", "RICK", "BRENT", "RAMON", "GILBERT", "MARC", "REGINALD",
+ "RUBEN", "NATHANIEL", "RAFAEL", "EDGAR", "MILTON", "RAUL", "BEN",
+ "CHESTER", "DUANE", "FRANKLIN", "BRAD", "RON", "ROLAND", "ARNOLD",
+ "HARVEY", "JARED", "ERIK", "DARRYL", "NEIL", "JAVIER", "FERNANDO",
+ "CLINTON", "TED", "MATHEW", "TYRONE", "DARREN", "LANCE", "KURT",
+ "ALLAN", "NELSON", "GUY", "CLAYTON", "HUGH", "MAX", "DWAYNE",
+ "DWIGHT", "ARMANDO", "FELIX", "EVERETT", "IAN", "WALLACE", "KEN",
+ "BOB", "ALFREDO", "ALBERTO", "DAVE", "IVAN", "BYRON", "ISAAC",
+ "MORRIS", "CLIFTON", "WILLARD", "ROSS", "ANDY", "SALVADOR", "KIRK",
+ "SERGIO", "SETH", "KENT", "TERRANCE", "EDUARDO", "TERRENCE",
+ "ENRIQUE", "WADE", "STUART", "FREDRICK", "ARTURO", "ALEJANDRO",
+ "NICK", "LUTHER", "WENDELL", "JEREMIAH", "JULIUS", "OTIS", "TREVOR",
+ "OLIVER", "LUKE", "HOMER", "GERARD", "DOUG", "KENNY", "HUBERT",
+ "LYLE", "MATT", "ALFONSO", "ORLANDO", "REX", "CARLTON", "ERNESTO",
+ "NEAL", "PABLO", "LORENZO", "OMAR", "WILBUR", "GRANT", "HORACE",
+ "RODERICK", "ABRAHAM", "WILLIS", "RICKEY", "ANDRES", "CESAR",
+ "JOHNATHAN", "MALCOLM", "RUDOLPH", "DAMON", "KELVIN", "PRESTON",
+ "ALTON", "ARCHIE", "MARCO", "WM", "PETE", "RANDOLPH", "GARRY",
+ "GEOFFREY", "JONATHON", "FELIPE", "GERARDO", "ED", "DOMINIC",
+ "DELBERT", "COLIN", "GUILLERMO", "EARNEST", "LUCAS", "BENNY",
+ "SPENCER", "RODOLFO", "MYRON", "EDMUND", "GARRETT", "SALVATORE",
+ "CEDRIC", "LOWELL", "GREGG", "SHERMAN", "WILSON", "SYLVESTER",
+ "ROOSEVELT", "ISRAEL", "JERMAINE", "FORREST", "WILBERT", "LELAND",
+ "SIMON", "CLARK", "IRVING", "BRYANT", "OWEN", "RUFUS", "WOODROW",
+ "KRISTOPHER", "MACK", "LEVI", "MARCOS", "GUSTAVO", "JAKE", "LIONEL",
+ "GILBERTO", "CLINT", "NICOLAS", "ISMAEL", "ORVILLE", "ERVIN",
+ "DEWEY", "AL", "WILFRED", "JOSH", "HUGO", "IGNACIO", "CALEB",
+ "TOMAS", "SHELDON", "ERICK", "STEWART", "DOYLE", "DARREL",
+ "ROGELIO", "TERENCE", "SANTIAGO", "ALONZO", "ELIAS", "BERT",
+ "ELBERT", "RAMIRO", "CONRAD", "NOAH", "GRADY", "PHIL", "CORNELIUS",
+ "LAMAR", "ROLANDO", "CLAY", "PERCY", "DEXTER", "BRADFORD", "DARIN",
+ "AMOS", "MOSES", "IRVIN", "SAUL", "ROMAN", "RANDAL", "TIMMY",
+ "DARRIN", "WINSTON", "BRENDAN", "ABEL", "DOMINICK", "BOYD",
+ "EMILIO", "ELIJAH", "DOMINGO", "EMMETT", "MARLON", "EMANUEL",
+ "JERALD", "EDMOND", "EMIL", "DEWAYNE", "WILL", "OTTO", "TEDDY",
+ "REYNALDO", "BRET", "JESS", "TRENT", "HUMBERTO", "EMMANUEL",
+ "STEPHAN", "VICENTE", "LAMONT", "GARLAND", "MILES", "EFRAIN",
+ "HEATH", "RODGER", "HARLEY", "ETHAN", "ELDON", "ROCKY", "PIERRE",
+ "JUNIOR", "FREDDY", "ELI", "BRYCE", "ANTOINE", "STERLING", "CHASE",
+ "GROVER", "ELTON", "CLEVELAND", "DYLAN", "CHUCK", "DAMIAN",
+ "REUBEN", "STAN", "AUGUST", "LEONARDO", "JASPER", "RUSSEL", "ERWIN",
+ "BENITO", "HANS", "MONTE", "BLAINE", "ERNIE", "CURT", "QUENTIN",
+ "AGUSTIN", "MURRAY", "JAMAL", "ADOLFO", "HARRISON", "TYSON",
+ "BURTON", "BRADY", "ELLIOTT", "WILFREDO", "BART", "JARROD", "VANCE",
+ "DENIS", "DAMIEN", "JOAQUIN", "HARLAN", "DESMOND", "ELLIOT",
+ "DARWIN", "GREGORIO", "BUDDY", "XAVIER", "KERMIT", "ROSCOE",
+ "ESTEBAN", "ANTON", "SOLOMON", "SCOTTY", "NORBERT", "ELVIN",
+ "WILLIAMS", "NOLAN", "ROD", "QUINTON", "HAL", "BRAIN", "ROB",
+ "ELWOOD", "KENDRICK", "DARIUS", "MOISES", "FIDEL", "THADDEUS",
+ "CLIFF", "MARCEL", "JACKSON", "RAPHAEL", "BRYON", "ARMAND",
+ "ALVARO", "JEFFRY", "DANE", "JOESPH", "THURMAN", "NED", "RUSTY",
+ "MONTY", "FABIAN", "REGGIE", "MASON", "GRAHAM", "ISAIAH", "VAUGHN",
+ "GUS", "LOYD", "DIEGO", "ADOLPH", "NORRIS", "MILLARD", "ROCCO",
+ "GONZALO", "DERICK", "RODRIGO", "WILEY", "RIGOBERTO", "ALPHONSO",
+ "TY", "NOE", "VERN", "REED", "JEFFERSON", "ELVIS", "BERNARDO",
+ "MAURICIO", "HIRAM", "DONOVAN", "BASIL", "RILEY", "NICKOLAS",
+ "MAYNARD", "SCOT", "VINCE", "QUINCY", "EDDY", "SEBASTIAN",
+ "FEDERICO", "ULYSSES", "HERIBERTO", "DONNELL", "COLE", "DAVIS",
+ "GAVIN", "EMERY", "WARD", "ROMEO", "JAYSON", "DANTE", "CLEMENT",
+ "COY", "MAXWELL", "JARVIS", "BRUNO", "ISSAC", "DUDLEY", "BROCK",
+ "SANFORD", "CARMELO", "BARNEY", "NESTOR", "STEFAN", "DONNY", "ART",
+ "LINWOOD", "BEAU", "WELDON", "GALEN", "ISIDRO", "TRUMAN", "DELMAR",
+ "JOHNATHON", "SILAS", "FREDERIC", "DICK", "IRWIN", "MERLIN",
+ "CHARLEY", "MARCELINO", "HARRIS", "CARLO", "TRENTON", "KURTIS",
+ "HUNTER", "AURELIO", "WINFRED", "VITO", "COLLIN", "DENVER",
+ "CARTER", "LEONEL", "EMORY", "PASQUALE", "MOHAMMAD", "MARIANO",
+ "DANIAL", "LANDON", "DIRK", "BRANDEN", "ADAN", "BUFORD", "GERMAN",
+ "WILMER", "EMERSON", "ZACHERY", "FLETCHER", "JACQUES", "ERROL",
+ "DALTON", "MONROE", "JOSUE", "EDWARDO", "BOOKER", "WILFORD",
+ "SONNY", "SHELTON", "CARSON", "THERON", "RAYMUNDO", "DAREN",
+ "HOUSTON", "ROBBY", "LINCOLN", "GENARO", "BENNETT", "OCTAVIO",
+ "CORNELL", "HUNG", "ARRON", "ANTONY", "HERSCHEL", "GIOVANNI",
+ "GARTH", "CYRUS", "CYRIL", "RONNY", "LON", "FREEMAN", "DUNCAN",
+ "KENNITH", "CARMINE", "ERICH", "CHADWICK", "WILBURN", "RUSS",
+ "REID", "MYLES", "ANDERSON", "MORTON", "JONAS", "FOREST", "MITCHEL",
+ "MERVIN", "ZANE", "RICH", "JAMEL", "LAZARO", "ALPHONSE", "RANDELL",
+ "MAJOR", "JARRETT", "BROOKS", "ABDUL", "LUCIANO", "SEYMOUR",
+ "EUGENIO", "MOHAMMED", "VALENTIN", "CHANCE", "ARNULFO", "LUCIEN",
+ "FERDINAND", "THAD", "EZRA", "ALDO", "RUBIN", "ROYAL", "MITCH",
+ "EARLE", "ABE", "WYATT", "MARQUIS", "LANNY", "KAREEM", "JAMAR",
+ "BORIS", "ISIAH", "EMILE", "ELMO", "ARON", "LEOPOLDO", "EVERETTE",
+ "JOSEF", "ELOY", "RODRICK", "REINALDO", "LUCIO", "JERROD", "WESTON",
+ "HERSHEL", "BARTON", "PARKER", "LEMUEL", "BURT", "JULES", "GIL",
+ "ELISEO", "AHMAD", "NIGEL", "EFREN", "ANTWAN", "ALDEN", "MARGARITO",
+ "COLEMAN", "DINO", "OSVALDO", "LES", "DEANDRE", "NORMAND", "KIETH",
+ "TREY", "NORBERTO", "NAPOLEON", "JEROLD", "FRITZ", "ROSENDO",
+ "MILFORD", "CHRISTOPER", "ALFONZO", "LYMAN", "JOSIAH", "BRANT",
+ "WILTON", "RICO", "JAMAAL", "DEWITT", "BRENTON", "OLIN", "FOSTER",
+ "FAUSTINO", "CLAUDIO", "JUDSON", "GINO", "EDGARDO", "ALEC",
+ "TANNER", "JARRED", "DONN", "TAD", "PRINCE", "PORFIRIO", "ODIS",
+ "LENARD", "CHAUNCEY", "TOD", "MEL", "MARCELO", "KORY", "AUGUSTUS",
+ "KEVEN", "HILARIO", "BUD", "SAL", "ORVAL", "MAURO", "ZACHARIAH",
+ "OLEN", "ANIBAL", "MILO", "JED", "DILLON", "AMADO", "NEWTON",
+ "LENNY", "RICHIE", "HORACIO", "BRICE", "MOHAMED", "DELMER", "DARIO",
+ "REYES", "MAC", "JONAH", "JERROLD", "ROBT", "HANK", "RUPERT",
+ "ROLLAND", "KENTON", "DAMION", "ANTONE", "WALDO", "FREDRIC",
+ "BRADLY", "KIP", "BURL", "WALKER", "TYREE", "JEFFEREY", "AHMED",
+ "WILLY", "STANFORD", "OREN", "NOBLE", "MOSHE", "MIKEL", "ENOCH",
+ "BRENDON", "QUINTIN", "JAMISON", "FLORENCIO", "DARRICK", "TOBIAS",
+ "HASSAN", "GIUSEPPE", "DEMARCUS", "CLETUS", "TYRELL", "LYNDON",
+ "KEENAN", "WERNER", "GERALDO", "COLUMBUS", "CHET", "BERTRAM",
+ "MARKUS", "HUEY", "HILTON", "DWAIN", "DONTE", "TYRON", "OMER",
+ "ISAIAS", "HIPOLITO", "FERMIN", "ADALBERTO", "BO", "BARRETT",
+ "TEODORO", "MCKINLEY", "MAXIMO", "GARFIELD", "RALEIGH", "LAWERENCE",
+ "ABRAM", "RASHAD", "KING", "EMMITT", "DARON", "SAMUAL", "MIQUEL",
+ "EUSEBIO", "DOMENIC", "DARRON", "BUSTER", "WILBER", "RENATO", "JC",
+ "HOYT", "HAYWOOD", "EZEKIEL", "CHAS", "FLORENTINO", "ELROY",
+ "CLEMENTE", "ARDEN", "NEVILLE", "EDISON", "DESHAWN", "NATHANIAL",
+ "JORDON", "DANILO", "CLAUD", "SHERWOOD", "RAYMON", "RAYFORD",
+ "CRISTOBAL", "AMBROSE", "TITUS", "HYMAN", "FELTON", "EZEQUIEL",
+ "ERASMO", "STANTON", "LONNY", "LEN", "IKE", "MILAN", "LINO",
+ "JAROD", "HERB", "ANDREAS", "WALTON", "RHETT", "PALMER", "DOUGLASS",
+ "CORDELL", "OSWALDO", "ELLSWORTH", "VIRGILIO", "TONEY", "NATHANAEL",
+ "DEL", "BENEDICT", "MOSE", "JOHNSON", "ISREAL", "GARRET", "FAUSTO",
+ "ASA", "ARLEN", "ZACK", "WARNER", "MODESTO", "FRANCESCO", "MANUAL",
+ "GAYLORD", "GASTON", "FILIBERTO", "DEANGELO", "MICHALE",
+ "GRANVILLE", "WES", "MALIK", "ZACKARY", "TUAN", "ELDRIDGE",
+ "CRISTOPHER", "CORTEZ", "ANTIONE", "MALCOM", "LONG", "KOREY",
+ "JOSPEH", "COLTON", "WAYLON", "VON", "HOSEA", "SHAD", "SANTO",
+ "RUDOLF", "ROLF", "REY", "RENALDO", "MARCELLUS", "LUCIUS",
+ "KRISTOFER", "BOYCE", "BENTON", "HAYDEN", "HARLAND", "ARNOLDO",
+ "RUEBEN", "LEANDRO", "KRAIG", "JERRELL", "JEROMY", "HOBERT",
+ "CEDRICK", "ARLIE", "WINFORD", "WALLY", "LUIGI", "KENETH",
+ "JACINTO", "GRAIG", "FRANKLYN", "EDMUNDO", "SID", "PORTER", "LEIF",
+ "JERAMY", "BUCK", "WILLIAN", "VINCENZO", "SHON", "LYNWOOD", "JERE",
+ "HAI", "ELDEN", "DORSEY", "DARELL", "BRODERICK", "ALONSO"]
+
diff --git a/testsuite/tests/ghci/scripts/T789.script b/testsuite/tests/ghci/scripts/T789.script
new file mode 100644
index 0000000000..d8e2a3a00b
--- /dev/null
+++ b/testsuite/tests/ghci/scripts/T789.script
@@ -0,0 +1,2 @@
+:l T789.hs
+print $ length table
diff --git a/testsuite/tests/ghci/scripts/T789.stdout b/testsuite/tests/ghci/scripts/T789.stdout
new file mode 100644
index 0000000000..045c1c6b12
--- /dev/null
+++ b/testsuite/tests/ghci/scripts/T789.stdout
@@ -0,0 +1 @@
+5163
diff --git a/testsuite/tests/ghci/scripts/all.T b/testsuite/tests/ghci/scripts/all.T
new file mode 100644
index 0000000000..f3ddbffc6a
--- /dev/null
+++ b/testsuite/tests/ghci/scripts/all.T
@@ -0,0 +1,77 @@
+
+setTestOpts(if_compiler_profiled(skip))
+
+test('ghci001', normal, ghci_script, ['ghci001.script'])
+test('ghci002', normal, ghci_script, ['ghci002.script'])
+test('ghci003', normal, ghci_script, ['ghci003.script'])
+test('ghci004', normal, ghci_script, ['ghci004.script'])
+test('ghci005', normal, ghci_script, ['ghci005.script'])
+test('ghci006', normal, ghci_script, ['ghci006.script'])
+test('ghci007', normal, ghci_script, ['ghci007.script'])
+test('ghci008', normal, ghci_script, ['ghci008.script'])
+test('ghci009', normal, ghci_script, ['ghci009.script'])
+
+# Skip this test: deadlock can't be detected now, because we wait for
+# signals to arrive if there are signal handlers installed, and GHCi
+# has a ^C handler installed.
+test('ghci010', skip, ghci_script, ['ghci010.script'])
+
+test('ghci011', normal, ghci_script, ['ghci011.script'])
+test('ghci012', normal, ghci_script, ['ghci012.script'])
+test('ghci013', normal, ghci_script, ['ghci013.script'])
+test('ghci014', reqlib('QuickCheck'), ghci_script, ['ghci014.script'])
+
+# Ignore output from ghci015, the output is non-deterministic
+# (has occasional "thread blocked indefinitely" exceptions), and this
+# is part of the test.
+test('ghci015', ignore_output, ghci_script, ['ghci015.script'])
+
+test('ghci016', expect_broken(552), ghci_script, ['ghci016.script'])
+test('ghci017', extra_run_opts('-hide-package haskell98'), ghci_script, ['ghci017.script'])
+test('ghci018', expect_broken(1201), ghci_script, ['ghci018.script'])
+test('ghci019', normal, ghci_script, ['ghci019.script'])
+test('ghci020', normal, ghci_script, ['ghci020.script'])
+test('ghci021', normal, ghci_script, ['ghci021.script'])
+test('ghci022', normal, ghci_script, ['ghci022.script'])
+
+test('ghci023', normal, ghci_script, ['ghci023.script'])
+test('ghci024',
+ [skip_if_fast,
+ if_platform("powerpc-apple-darwin", expect_broken(1845))],
+ run_command,
+ ['$MAKE -s --no-print-directory ghci024'])
+test('ghci025', normal, ghci_script, ['ghci025.script'])
+test('ghci026', normal, ghci_script, ['ghci026.script'])
+
+test('ghci027', normal, ghci_script, ['ghci027.script'])
+test('ghci028', normal, ghci_script, ['ghci028.script'])
+test('ghci029', normal, ghci_script, ['ghci029.script'])
+test('ghci030', normal, ghci_script, ['ghci030.script'])
+test('ghci031', normal, ghci_script, ['ghci031.script'])
+test('ghci032', normal, ghci_script, ['ghci032.script'])
+test('ghci033', normal, ghci_script, ['ghci033.script'])
+test('ghci034', normal, ghci_script, ['ghci034.script'])
+test('ghci035', normal, ghci_script, ['ghci035.script'])
+test('ghci036', normal, ghci_script, ['ghci036.script'])
+test('ghci037', req_interp, run_command, ['$MAKE -s --no-print-directory ghci037'])
+test('2452', normal, ghci_script, ['2452.script'])
+test('T2766', normal, ghci_script, ['T2766.script'])
+
+test('1914',
+ extra_clean(['T1914A.hs', 'T1914B.hs']),
+ ghci_script,
+ ['1914.script'])
+
+test('2976', normal, ghci_script, ['2976.script'])
+test('2816', normal, ghci_script, ['2816.script'])
+test('T789', normal, ghci_script, ['T789.script'])
+test('T3263', normal, ghci_script, ['T3263.script'])
+test('4051', normal, ghci_script, ['4051.script'])
+test('T4087', normal, ghci_script, ['T4087.script'])
+test('T4015', normal, ghci_script, ['T4015.script'])
+test('T4127', normal, ghci_script, ['T4127.script'])
+test('T4127a', normal, ghci_script, ['T4127a.script'])
+test('T4316', reqlib('mtl'), ghci_script, ['T4316.script'])
+test('T4832', normal, ghci_script, ['T4832.script'])
+test('T5045', normal, ghci_script, ['T5045.script'])
+test('T5130', normal, ghci_script, ['T5130.script'])
diff --git a/testsuite/tests/ghci/scripts/ghci001.script b/testsuite/tests/ghci/scripts/ghci001.script
new file mode 100644
index 0000000000..0902a0ccd1
--- /dev/null
+++ b/testsuite/tests/ghci/scripts/ghci001.script
@@ -0,0 +1,3 @@
+-- bug: shouldn't be defaulting these expressions
+:type (+)
+:type enumFromTo
diff --git a/testsuite/tests/ghci/scripts/ghci001.stdout b/testsuite/tests/ghci/scripts/ghci001.stdout
new file mode 100644
index 0000000000..b0a2458b59
--- /dev/null
+++ b/testsuite/tests/ghci/scripts/ghci001.stdout
@@ -0,0 +1,2 @@
+(+) :: Num a => a -> a -> a
+enumFromTo :: Enum a => a -> a -> [a]
diff --git a/testsuite/tests/ghci/scripts/ghci002.script b/testsuite/tests/ghci/scripts/ghci002.script
new file mode 100644
index 0000000000..3c0ec29eae
--- /dev/null
+++ b/testsuite/tests/ghci/scripts/ghci002.script
@@ -0,0 +1,4 @@
+-- bug: we used to throw away the instance accidentally here
+:m GHC.Base
+1 == (2 :: Int)
+1 == (2 :: Int)
diff --git a/testsuite/tests/ghci/scripts/ghci002.stdout b/testsuite/tests/ghci/scripts/ghci002.stdout
new file mode 100644
index 0000000000..815d6689fe
--- /dev/null
+++ b/testsuite/tests/ghci/scripts/ghci002.stdout
@@ -0,0 +1,2 @@
+False
+False
diff --git a/testsuite/tests/ghci/scripts/ghci003.script b/testsuite/tests/ghci/scripts/ghci003.script
new file mode 100644
index 0000000000..08d0114de4
--- /dev/null
+++ b/testsuite/tests/ghci/scripts/ghci003.script
@@ -0,0 +1,7 @@
+-- check that 'it' works
+1
+it
+print it
+return 42
+it
+print it
diff --git a/testsuite/tests/ghci/scripts/ghci003.stdout b/testsuite/tests/ghci/scripts/ghci003.stdout
new file mode 100644
index 0000000000..6d07eb1b81
--- /dev/null
+++ b/testsuite/tests/ghci/scripts/ghci003.stdout
@@ -0,0 +1,6 @@
+1
+1
+1
+42
+42
+42
diff --git a/testsuite/tests/ghci/scripts/ghci004.hs b/testsuite/tests/ghci/scripts/ghci004.hs
new file mode 100644
index 0000000000..6406a11565
--- /dev/null
+++ b/testsuite/tests/ghci/scripts/ghci004.hs
@@ -0,0 +1,2 @@
+import Data.List
+main = print (sort [100,99..1])
diff --git a/testsuite/tests/ghci/scripts/ghci004.script b/testsuite/tests/ghci/scripts/ghci004.script
new file mode 100644
index 0000000000..4949629935
--- /dev/null
+++ b/testsuite/tests/ghci/scripts/ghci004.script
@@ -0,0 +1,4 @@
+:unset +s +t
+-- test importing a module from a package
+:l ghci004
+main
diff --git a/testsuite/tests/ghci/scripts/ghci004.stderr b/testsuite/tests/ghci/scripts/ghci004.stderr
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/testsuite/tests/ghci/scripts/ghci004.stderr
diff --git a/testsuite/tests/ghci/scripts/ghci004.stdout b/testsuite/tests/ghci/scripts/ghci004.stdout
new file mode 100644
index 0000000000..0aec69a0c1
--- /dev/null
+++ b/testsuite/tests/ghci/scripts/ghci004.stdout
@@ -0,0 +1 @@
+[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]
diff --git a/testsuite/tests/ghci/scripts/ghci005.script b/testsuite/tests/ghci/scripts/ghci005.script
new file mode 100644
index 0000000000..e31b6fc9b7
--- /dev/null
+++ b/testsuite/tests/ghci/scripts/ghci005.script
@@ -0,0 +1,18 @@
+:unset +s +t
+-- tests for :def, :undef
+:def
+let void m = m >> return ""
+let echo s = void (putStrLn s)
+:def echo echo
+:def
+:echo hello, world!
+
+let echoupper s = return (":! echo " ++ map Data.Char.toUpper s)
+:echo hello, world!
+:def echo echoupper
+:undef echo
+:def echo echoupper
+:echo hello, world!
+:def! echo echo
+:echo hello, world!
+:undef f f
diff --git a/testsuite/tests/ghci/scripts/ghci005.stdout b/testsuite/tests/ghci/scripts/ghci005.stdout
new file mode 100644
index 0000000000..e94f822e46
--- /dev/null
+++ b/testsuite/tests/ghci/scripts/ghci005.stdout
@@ -0,0 +1,9 @@
+no macros defined
+the following macros are defined:
+echo
+hello, world!
+hello, world!
+macro 'echo' is already defined
+HELLO, WORLD!
+hello, world!
+macro 'f' is not defined
diff --git a/testsuite/tests/ghci/scripts/ghci006.hs b/testsuite/tests/ghci/scripts/ghci006.hs
new file mode 100644
index 0000000000..c1bef51070
--- /dev/null
+++ b/testsuite/tests/ghci/scripts/ghci006.hs
@@ -0,0 +1,8 @@
+
+module Ghci006 where
+
+data Q = forall x . Show x => Q x
+showQ (Q x) = show x
+
+-- associated bug is that at the interpreter command line,
+-- showQ (Q "foo") crashed the interpreter.
diff --git a/testsuite/tests/ghci/scripts/ghci006.script b/testsuite/tests/ghci/scripts/ghci006.script
new file mode 100644
index 0000000000..adccf3114c
--- /dev/null
+++ b/testsuite/tests/ghci/scripts/ghci006.script
@@ -0,0 +1,6 @@
+:unset +s +t
+:set -XExistentialQuantification
+-- test for contexts on existential types crashing the interpreter
+:l ghci006
+showQ (Q "foo")
+
diff --git a/testsuite/tests/ghci/scripts/ghci006.stderr b/testsuite/tests/ghci/scripts/ghci006.stderr
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/testsuite/tests/ghci/scripts/ghci006.stderr
diff --git a/testsuite/tests/ghci/scripts/ghci006.stdout b/testsuite/tests/ghci/scripts/ghci006.stdout
new file mode 100644
index 0000000000..359e72fb1b
--- /dev/null
+++ b/testsuite/tests/ghci/scripts/ghci006.stdout
@@ -0,0 +1 @@
+"\"foo\""
diff --git a/testsuite/tests/ghci/scripts/ghci007.script b/testsuite/tests/ghci/scripts/ghci007.script
new file mode 100644
index 0000000000..a4819aab50
--- /dev/null
+++ b/testsuite/tests/ghci/scripts/ghci007.script
@@ -0,0 +1,2 @@
+-- bug: shouldn't kill the whole system
+System.Exit.exitFailure
diff --git a/testsuite/tests/ghci/scripts/ghci007.stdout b/testsuite/tests/ghci/scripts/ghci007.stdout
new file mode 100644
index 0000000000..59eac9cfdb
--- /dev/null
+++ b/testsuite/tests/ghci/scripts/ghci007.stdout
@@ -0,0 +1 @@
+*** Exception: ExitFailure 1
diff --git a/testsuite/tests/ghci/scripts/ghci008.script b/testsuite/tests/ghci/scripts/ghci008.script
new file mode 100644
index 0000000000..8bbee9d58b
--- /dev/null
+++ b/testsuite/tests/ghci/scripts/ghci008.script
@@ -0,0 +1,7 @@
+-- testing :info
+:info +
+:info (+)
+:info Data.Complex.:+
+:info (Data.Complex.:+)
+:info RealFloat
+:info `Data.List.isPrefixOf`
diff --git a/testsuite/tests/ghci/scripts/ghci008.stdout b/testsuite/tests/ghci/scripts/ghci008.stdout
new file mode 100644
index 0000000000..000f254070
--- /dev/null
+++ b/testsuite/tests/ghci/scripts/ghci008.stdout
@@ -0,0 +1,36 @@
+class (Eq a, Show a) => Num a where
+ (+) :: a -> a -> a
+ ...
+ -- Defined in GHC.Num
+infixl 6 +
+class (Eq a, Show a) => Num a where
+ (+) :: a -> a -> a
+ ...
+ -- Defined in GHC.Num
+infixl 6 +
+data Data.Complex.Complex a = !a Data.Complex.:+ !a
+ -- Defined in Data.Complex
+infix 6 Data.Complex.:+
+data Data.Complex.Complex a = !a Data.Complex.:+ !a
+ -- Defined in Data.Complex
+infix 6 Data.Complex.:+
+class (RealFrac a, Floating a) => RealFloat a where
+ floatRadix :: a -> Integer
+ floatDigits :: a -> Int
+ floatRange :: a -> (Int, Int)
+ decodeFloat :: a -> (Integer, Int)
+ encodeFloat :: Integer -> Int -> a
+ exponent :: a -> Int
+ significand :: a -> a
+ scaleFloat :: Int -> a -> a
+ isNaN :: a -> Bool
+ isInfinite :: a -> Bool
+ isDenormalized :: a -> Bool
+ isNegativeZero :: a -> Bool
+ isIEEE :: a -> Bool
+ atan2 :: a -> a -> a
+ -- Defined in GHC.Float
+instance RealFloat Float -- Defined in GHC.Float
+instance RealFloat Double -- Defined in GHC.Float
+Data.List.isPrefixOf :: Eq a => [a] -> [a] -> Bool
+ -- Defined in Data.List
diff --git a/testsuite/tests/ghci/scripts/ghci009.script b/testsuite/tests/ghci/scripts/ghci009.script
new file mode 100644
index 0000000000..ecb635c704
--- /dev/null
+++ b/testsuite/tests/ghci/scripts/ghci009.script
@@ -0,0 +1,20 @@
+-- !!! test `:set args' and `:set prog'
+System.Environment.getArgs
+print it
+System.Environment.getProgName
+print it
+:set args
+System.Environment.getArgs
+print it
+System.Environment.getProgName
+print it
+:set args foo bar
+System.Environment.getArgs
+print it
+System.Environment.getProgName
+print it
+:set prog foo
+System.Environment.getArgs
+print it
+System.Environment.getProgName
+print it
diff --git a/testsuite/tests/ghci/scripts/ghci009.stdout b/testsuite/tests/ghci/scripts/ghci009.stdout
new file mode 100644
index 0000000000..3d40fb8d99
--- /dev/null
+++ b/testsuite/tests/ghci/scripts/ghci009.stdout
@@ -0,0 +1,16 @@
+[]
+[]
+"<interactive>"
+"<interactive>"
+[]
+[]
+"<interactive>"
+"<interactive>"
+["foo","bar"]
+["foo","bar"]
+"<interactive>"
+"<interactive>"
+["foo","bar"]
+["foo","bar"]
+"foo"
+"foo"
diff --git a/testsuite/tests/ghci/scripts/ghci010.script b/testsuite/tests/ghci/scripts/ghci010.script
new file mode 100644
index 0000000000..56b99062db
--- /dev/null
+++ b/testsuite/tests/ghci/scripts/ghci010.script
@@ -0,0 +1,2 @@
+-- !!! check we can detect deadlock
+Control.Concurrent.newEmptyMVar >>= Control.Concurrent.takeMVar
diff --git a/testsuite/tests/ghci/scripts/ghci010.stdout b/testsuite/tests/ghci/scripts/ghci010.stdout
new file mode 100644
index 0000000000..b0be06f788
--- /dev/null
+++ b/testsuite/tests/ghci/scripts/ghci010.stdout
@@ -0,0 +1,14 @@
+ ___ ___ _
+ / _ \ /\ /\/ __(_)
+ / /_\// /_/ / / | | GHC Interactive, version 5.03, for Haskell 98.
+/ /_\\/ __ / /___| | http://www.haskell.org/ghc/
+\____/\/ /_/\____/|_| Type :? for help.
+
+Loading package std ... linking ... done.
+Prelude> -- !!! check we can detect deadlock
+Prelude> :set -package concurrent
+Loading package lang ... linking ... done.
+Loading package concurrent ... linking ... done.
+Prelude> Concurrent.newEmptyMVar >>= Concurrent.takeMVar
+Deadlocked.
+Prelude> Leaving GHCi.
diff --git a/testsuite/tests/ghci/scripts/ghci011.script b/testsuite/tests/ghci/scripts/ghci011.script
new file mode 100644
index 0000000000..0c147736f0
--- /dev/null
+++ b/testsuite/tests/ghci/scripts/ghci011.script
@@ -0,0 +1,4 @@
+-- testing :info on builtin identifiers
+:info []
+:info ()
+:info (,)
diff --git a/testsuite/tests/ghci/scripts/ghci011.stdout b/testsuite/tests/ghci/scripts/ghci011.stdout
new file mode 100644
index 0000000000..840bb18a4d
--- /dev/null
+++ b/testsuite/tests/ghci/scripts/ghci011.stdout
@@ -0,0 +1,21 @@
+data [] a = [] | a : [a] -- Defined in GHC.Types
+instance Eq a => Eq [a] -- Defined in GHC.Classes
+instance Monad [] -- Defined in GHC.Base
+instance Functor [] -- Defined in GHC.Base
+instance Ord a => Ord [a] -- Defined in GHC.Classes
+instance Read a => Read [a] -- Defined in GHC.Read
+instance Show a => Show [a] -- Defined in GHC.Show
+data () = () -- Defined in GHC.Unit
+instance Bounded () -- Defined in GHC.Enum
+instance Enum () -- Defined in GHC.Enum
+instance Eq () -- Defined in GHC.Classes
+instance Ord () -- Defined in GHC.Classes
+instance Read () -- Defined in GHC.Read
+instance Show () -- Defined in GHC.Show
+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 (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/ghci012.script b/testsuite/tests/ghci/scripts/ghci012.script
new file mode 100644
index 0000000000..d2548dd670
--- /dev/null
+++ b/testsuite/tests/ghci/scripts/ghci012.script
@@ -0,0 +1,2 @@
+let lf $$$ lx = zipWith ($) lf lx
+:i $$$
diff --git a/testsuite/tests/ghci/scripts/ghci012.stdout b/testsuite/tests/ghci/scripts/ghci012.stdout
new file mode 100644
index 0000000000..98780e4152
--- /dev/null
+++ b/testsuite/tests/ghci/scripts/ghci012.stdout
@@ -0,0 +1 @@
+($$$) :: [b -> c] -> [b] -> [c] -- Defined at <interactive>:1:8-10
diff --git a/testsuite/tests/ghci/scripts/ghci013.script b/testsuite/tests/ghci/scripts/ghci013.script
new file mode 100644
index 0000000000..eec0af840a
--- /dev/null
+++ b/testsuite/tests/ghci/scripts/ghci013.script
@@ -0,0 +1,5 @@
+-- type-variable tidying problem in 6.4
+-- incorrect type: (Monad m) => (m a, b) -> m b
+-- correct type: (Monad m) => (m a, b) -> m b1
+let f (a,b) = a >> undefined
+:t f
diff --git a/testsuite/tests/ghci/scripts/ghci013.stdout b/testsuite/tests/ghci/scripts/ghci013.stdout
new file mode 100644
index 0000000000..5daf16ee23
--- /dev/null
+++ b/testsuite/tests/ghci/scripts/ghci013.stdout
@@ -0,0 +1 @@
+f :: Monad m => (m a, t) -> m b
diff --git a/testsuite/tests/ghci/scripts/ghci014.hs b/testsuite/tests/ghci/scripts/ghci014.hs
new file mode 100644
index 0000000000..dd668cff3b
--- /dev/null
+++ b/testsuite/tests/ghci/scripts/ghci014.hs
@@ -0,0 +1,7 @@
+
+import Test.QuickCheck.Batch
+
+prop_silly :: [()] -> Bool
+prop_silly xs = head xs == head xs
+
+do_test = runTests "test" defOpt [ run prop_silly ]
diff --git a/testsuite/tests/ghci/scripts/ghci014.script b/testsuite/tests/ghci/scripts/ghci014.script
new file mode 100644
index 0000000000..e1c6193ac1
--- /dev/null
+++ b/testsuite/tests/ghci/scripts/ghci014.script
@@ -0,0 +1,983 @@
+:l ghci014
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
+do_test
diff --git a/testsuite/tests/ghci/scripts/ghci014.stdout b/testsuite/tests/ghci/scripts/ghci014.stdout
new file mode 100644
index 0000000000..324972da57
--- /dev/null
+++ b/testsuite/tests/ghci/scripts/ghci014.stdout
@@ -0,0 +1,982 @@
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
+ test : * (0)
diff --git a/testsuite/tests/ghci/scripts/ghci015.hs b/testsuite/tests/ghci/scripts/ghci015.hs
new file mode 100644
index 0000000000..0ff637f046
--- /dev/null
+++ b/testsuite/tests/ghci/scripts/ghci015.hs
@@ -0,0 +1,43 @@
+-- Code from ticket #488
+
+module Test where
+
+import Control.Concurrent.STM
+import Control.Concurrent
+import Control.Exception
+import Prelude hiding (catch)
+
+
+runTest loop = do
+ (tc1, tc2, tmv) <- atomically (do
+ tmv <- newEmptyTMVar
+ tc1 <- newTChan
+ tc2 <- newTChan
+ return (tc1, tc2, tmv)
+ )
+ myTId <- myThreadId
+ forkIO (forked loop (tc1, tc2, tmv, myTId))
+ atomically (writeTChan tc1 "blah")
+ atomically (writeTChan tc1 "blah2")
+ return "done"
+
+
+forked loop args@(tc1, tc2, tmv, hisTId) = catch ((loop args) >>= setTMV . Just) hndlr `finally` setTMV Nothing
+ where
+ setTMV x = atomically (tryPutTMVar tmv x >> return ())
+ hndlr (AsyncException ThreadKilled) = return ()
+ hndlr e = throwTo hisTId e
+
+goodLoop args@(tc1, tc2, tmv, hisTId) = do
+ x <- atomically (readTChan tc1)
+ x' <- return $ reverse x
+ atomically (writeTChan tc2 x')
+ if x == "blah2"
+ then return ()
+ else goodLoop args
+
+badLoop args@(tc1, tc2, tmv, hisTId) = do
+ x <- atomically (readTChan tc1)
+ x' <- return $ reverse x
+ atomically (writeTChan tc2 x')
+ badLoop args
diff --git a/testsuite/tests/ghci/scripts/ghci015.script b/testsuite/tests/ghci/scripts/ghci015.script
new file mode 100644
index 0000000000..320f930276
--- /dev/null
+++ b/testsuite/tests/ghci/scripts/ghci015.script
@@ -0,0 +1,388 @@
+:l ghci015
+runTest badLoop
+runTest badLoop
+runTest badLoop
+runTest badLoop
+runTest badLoop
+runTest badLoop
+runTest badLoop
+runTest badLoop
+runTest badLoop
+runTest badLoop
+runTest badLoop
+runTest badLoop
+runTest badLoop
+runTest badLoop
+runTest badLoop
+runTest badLoop
+runTest badLoop
+runTest badLoop
+runTest badLoop
+runTest badLoop
+runTest badLoop
+runTest badLoop
+runTest badLoop
+runTest badLoop
+runTest badLoop
+runTest badLoop
+runTest badLoop
+runTest badLoop
+runTest badLoop
+runTest badLoop
+runTest badLoop
+runTest badLoop
+runTest badLoop
+runTest badLoop
+runTest badLoop
+runTest badLoop
+runTest badLoop
+runTest badLoop
+runTest badLoop
+runTest badLoop
+runTest badLoop
+runTest badLoop
+runTest badLoop
+runTest badLoop
+runTest badLoop
+runTest badLoop
+runTest badLoop
+runTest badLoop
+runTest badLoop
+runTest badLoop
+runTest badLoop
+runTest badLoop
+runTest badLoop
+runTest badLoop
+runTest badLoop
+runTest badLoop
+runTest badLoop
+runTest badLoop
+runTest badLoop
+runTest badLoop
+runTest badLoop
+runTest badLoop
+runTest badLoop
+runTest badLoop
+runTest badLoop
+runTest badLoop
+runTest badLoop
+runTest badLoop
+runTest badLoop
+runTest badLoop
+runTest badLoop
+runTest badLoop
+runTest badLoop
+runTest badLoop
+runTest badLoop
+runTest badLoop
+runTest badLoop
+runTest badLoop
+runTest badLoop
+runTest badLoop
+runTest badLoop
+runTest badLoop
+runTest badLoop
+runTest badLoop
+runTest badLoop
+runTest badLoop
+runTest badLoop
+runTest badLoop
+runTest badLoop
+runTest badLoop
+runTest badLoop
+runTest badLoop
+runTest badLoop
+runTest badLoop
+runTest badLoop
+runTest badLoop
+runTest badLoop
+runTest badLoop
+runTest badLoop
+runTest badLoop
+runTest badLoop
+runTest badLoop
+runTest badLoop
+runTest badLoop
+runTest badLoop
+runTest badLoop
+runTest badLoop
+runTest badLoop
+runTest badLoop
+runTest badLoop
+runTest badLoop
+runTest badLoop
+runTest badLoop
+runTest badLoop
+runTest badLoop
+runTest badLoop
+runTest badLoop
+runTest badLoop
+runTest badLoop
+runTest badLoop
+runTest badLoop
+runTest badLoop
+runTest badLoop
+runTest badLoop
+runTest badLoop
+runTest badLoop
+runTest badLoop
+runTest badLoop
+runTest badLoop
+runTest badLoop
+runTest badLoop
+runTest badLoop
+runTest badLoop
+runTest badLoop
+runTest badLoop
+runTest badLoop
+runTest badLoop
+runTest badLoop
+runTest badLoop
+runTest badLoop
+runTest badLoop
+runTest badLoop
+runTest badLoop
+runTest badLoop
+runTest badLoop
+runTest badLoop
+runTest badLoop
+runTest badLoop
+runTest badLoop
+runTest badLoop
+runTest badLoop
+runTest badLoop
+runTest badLoop
+runTest badLoop
+runTest badLoop
+runTest badLoop
+runTest badLoop
+runTest badLoop
+runTest badLoop
+runTest badLoop
+runTest badLoop
+runTest badLoop
+runTest badLoop
+runTest badLoop
+runTest badLoop
+runTest badLoop
+runTest badLoop
+runTest badLoop
+runTest badLoop
+runTest badLoop
+runTest badLoop
+runTest badLoop
+runTest badLoop
+runTest badLoop
+runTest badLoop
+runTest badLoop
+runTest badLoop
+runTest badLoop
+runTest badLoop
+runTest badLoop
+runTest badLoop
+runTest badLoop
+runTest badLoop
+runTest badLoop
+runTest badLoop
+runTest badLoop
+runTest badLoop
+runTest badLoop
+runTest badLoop
+runTest badLoop
+runTest badLoop
+runTest badLoop
+runTest badLoop
+runTest badLoop
+runTest badLoop
+runTest badLoop
+runTest badLoop
+runTest badLoop
+runTest badLoop
+runTest badLoop
+runTest badLoop
+runTest badLoop
+runTest badLoop
+runTest badLoop
+runTest badLoop
+runTest badLoop
+runTest badLoop
+runTest badLoop
+runTest badLoop
+runTest badLoop
+runTest badLoop
+runTest badLoop
+runTest badLoop
+runTest badLoop
+runTest badLoop
+runTest badLoop
+runTest badLoop
+runTest badLoop
+runTest badLoop
+runTest badLoop
+runTest badLoop
+runTest badLoop
+runTest badLoop
+runTest badLoop
+runTest badLoop
+runTest badLoop
+runTest badLoop
+runTest badLoop
+runTest badLoop
+runTest badLoop
+runTest badLoop
+runTest badLoop
+runTest badLoop
+runTest badLoop
+runTest badLoop
+runTest badLoop
+runTest badLoop
+runTest badLoop
+runTest badLoop
+runTest badLoop
+runTest badLoop
+runTest badLoop
+runTest badLoop
+runTest badLoop
+runTest badLoop
+runTest badLoop
+runTest badLoop
+runTest badLoop
+runTest badLoop
+runTest badLoop
+runTest badLoop
+runTest badLoop
+runTest badLoop
+runTest badLoop
+runTest badLoop
+runTest badLoop
+runTest badLoop
+runTest badLoop
+runTest badLoop
+runTest badLoop
+runTest badLoop
+runTest badLoop
+runTest badLoop
+runTest badLoop
+runTest badLoop
+runTest badLoop
+runTest badLoop
+runTest badLoop
+runTest badLoop
+runTest badLoop
+runTest badLoop
+runTest badLoop
+runTest badLoop
+runTest badLoop
+runTest badLoop
+runTest badLoop
+runTest badLoop
+runTest badLoop
+runTest badLoop
+runTest badLoop
+runTest badLoop
+runTest badLoop
+runTest badLoop
+runTest badLoop
+runTest badLoop
+runTest badLoop
+runTest badLoop
+runTest badLoop
+runTest badLoop
+runTest badLoop
+runTest badLoop
+runTest badLoop
+runTest badLoop
+runTest badLoop
+runTest badLoop
+runTest badLoop
+runTest badLoop
+runTest badLoop
+runTest badLoop
+runTest badLoop
+runTest badLoop
+runTest badLoop
+runTest badLoop
+runTest badLoop
+runTest badLoop
+runTest badLoop
+runTest badLoop
+runTest badLoop
+runTest badLoop
+runTest badLoop
+runTest badLoop
+runTest badLoop
+runTest badLoop
+runTest badLoop
+runTest badLoop
+runTest badLoop
+runTest badLoop
+runTest badLoop
+runTest badLoop
+runTest badLoop
+runTest badLoop
+runTest badLoop
+runTest badLoop
+runTest badLoop
+runTest badLoop
+runTest badLoop
+runTest badLoop
+runTest badLoop
+runTest badLoop
+runTest badLoop
+runTest badLoop
+runTest badLoop
+runTest badLoop
+runTest badLoop
+runTest badLoop
+runTest badLoop
+runTest badLoop
+runTest badLoop
+runTest badLoop
+runTest badLoop
+runTest badLoop
+runTest badLoop
+runTest badLoop
+runTest badLoop
+runTest badLoop
+runTest badLoop
+runTest badLoop
+runTest badLoop
+runTest badLoop
+runTest badLoop
+runTest badLoop
+runTest badLoop
+runTest badLoop
+runTest badLoop
+runTest badLoop
+runTest badLoop
+runTest badLoop
+runTest badLoop
+runTest badLoop
+runTest badLoop
+runTest badLoop
+runTest badLoop
+runTest badLoop
+runTest badLoop
+runTest badLoop
+runTest badLoop
+runTest badLoop
+runTest badLoop
+runTest badLoop
+runTest badLoop
+runTest badLoop
+runTest badLoop
+runTest badLoop
+runTest badLoop
+runTest badLoop
+runTest badLoop
+runTest badLoop
+runTest badLoop
+runTest badLoop
+runTest badLoop
+runTest badLoop
+runTest badLoop
+runTest badLoop
+runTest badLoop
+runTest badLoop
+runTest badLoop
+runTest badLoop
diff --git a/testsuite/tests/ghci/scripts/ghci015.stdout b/testsuite/tests/ghci/scripts/ghci015.stdout
new file mode 100644
index 0000000000..dd8584cd33
--- /dev/null
+++ b/testsuite/tests/ghci/scripts/ghci015.stdout
@@ -0,0 +1,387 @@
+"done"
+"done"
+"done"
+"done"
+"done"
+"done"
+"done"
+"done"
+"done"
+"done"
+"done"
+"done"
+"done"
+"done"
+"done"
+"done"
+"done"
+"done"
+"done"
+"done"
+"done"
+"done"
+"done"
+"done"
+"done"
+"done"
+"done"
+"done"
+"done"
+"done"
+"done"
+"done"
+"done"
+"done"
+"done"
+"done"
+"done"
+"done"
+"done"
+"done"
+"done"
+"done"
+"done"
+"done"
+"done"
+"done"
+"done"
+"done"
+"done"
+"done"
+"done"
+"done"
+"done"
+"done"
+"done"
+"done"
+"done"
+"done"
+"done"
+"done"
+"done"
+"done"
+"done"
+"done"
+"done"
+"done"
+"done"
+"done"
+"done"
+"done"
+"done"
+"done"
+"done"
+"done"
+"done"
+"done"
+"done"
+"done"
+"done"
+"done"
+"done"
+"done"
+"done"
+"done"
+"done"
+"done"
+"done"
+"done"
+"done"
+"done"
+"done"
+"done"
+"done"
+"done"
+"done"
+"done"
+"done"
+"done"
+"done"
+"done"
+"done"
+"done"
+"done"
+"done"
+"done"
+"done"
+"done"
+"done"
+"done"
+"done"
+"done"
+"done"
+"done"
+"done"
+"done"
+"done"
+"done"
+"done"
+"done"
+"done"
+"done"
+"done"
+"done"
+"done"
+"done"
+"done"
+"done"
+"done"
+"done"
+"done"
+"done"
+"done"
+"done"
+"done"
+"done"
+"done"
+"done"
+"done"
+"done"
+"done"
+"done"
+"done"
+"done"
+"done"
+"done"
+"done"
+"done"
+"done"
+"done"
+"done"
+"done"
+"done"
+"done"
+"done"
+"done"
+"done"
+"done"
+"done"
+"done"
+"done"
+"done"
+"done"
+"done"
+"done"
+"done"
+"done"
+"done"
+"done"
+"done"
+"done"
+"done"
+"done"
+"done"
+"done"
+"done"
+"done"
+"done"
+"done"
+"done"
+"done"
+"done"
+"done"
+"done"
+"done"
+"done"
+"done"
+"done"
+"done"
+"done"
+"done"
+"done"
+"done"
+"done"
+"done"
+"done"
+"done"
+"done"
+"done"
+"done"
+"done"
+"done"
+"done"
+"done"
+"done"
+"done"
+"done"
+"done"
+"done"
+"done"
+"done"
+"done"
+"done"
+"done"
+"done"
+"done"
+"done"
+"done"
+"done"
+"done"
+"done"
+"done"
+"done"
+"done"
+"done"
+"done"
+"done"
+"done"
+"done"
+"done"
+"done"
+"done"
+"done"
+"done"
+"done"
+"done"
+"done"
+"done"
+"done"
+"done"
+"done"
+"done"
+"done"
+"done"
+"done"
+"done"
+"done"
+"done"
+"done"
+"done"
+"done"
+"done"
+"done"
+"done"
+"done"
+"done"
+"done"
+"done"
+"done"
+"done"
+"done"
+"done"
+"done"
+"done"
+"done"
+"done"
+"done"
+"done"
+"done"
+"done"
+"done"
+"done"
+"done"
+"done"
+"done"
+"done"
+"done"
+"done"
+"done"
+"done"
+"done"
+"done"
+"done"
+"done"
+"done"
+"done"
+"done"
+"done"
+"done"
+"done"
+"done"
+"done"
+"done"
+"done"
+"done"
+"done"
+"done"
+"done"
+"done"
+"done"
+"done"
+"done"
+"done"
+"done"
+"done"
+"done"
+"done"
+"done"
+"done"
+"done"
+"done"
+"done"
+"done"
+"done"
+"done"
+"done"
+"done"
+"done"
+"done"
+"done"
+"done"
+"done"
+"done"
+"done"
+"done"
+"done"
+"done"
+"done"
+"done"
+"done"
+"done"
+"done"
+"done"
+"done"
+"done"
+"done"
+"done"
+"done"
+"done"
+"done"
+"done"
+"done"
+"done"
+"done"
+"done"
+"done"
+"done"
+"done"
+"done"
+"done"
+"done"
+"done"
+"done"
+"done"
+"done"
+"done"
+"done"
+"done"
+"done"
+"done"
+"done"
+"done"
+"done"
+"done"
+"done"
+"done"
+"done"
+"done"
+"done"
+"done"
+"done"
+"done"
+"done"
+"done"
+"done"
+"done"
+"done"
+"done"
+"done"
+"done"
+"done"
+"done"
+"done"
+"done"
+"done"
+"done"
+"done"
+"done"
diff --git a/testsuite/tests/ghci/scripts/ghci016.hs b/testsuite/tests/ghci/scripts/ghci016.hs
new file mode 100644
index 0000000000..2740a66517
--- /dev/null
+++ b/testsuite/tests/ghci/scripts/ghci016.hs
@@ -0,0 +1,18 @@
+-- Test for trac #552
+
+module Test where
+
+default (T)
+
+data T = T
+ deriving (Eq, Show)
+
+instance Num T where
+ fromInteger _ = T
+ (+) = error "urk"
+ (*) = error "urk"
+ abs = error "urk"
+ signum = error "urk"
+
+-- Typing 3 at the ghci prompt should print T
+
diff --git a/testsuite/tests/ghci/scripts/ghci016.script b/testsuite/tests/ghci/scripts/ghci016.script
new file mode 100644
index 0000000000..b0fc578813
--- /dev/null
+++ b/testsuite/tests/ghci/scripts/ghci016.script
@@ -0,0 +1,2 @@
+:l ghci016
+3
diff --git a/testsuite/tests/ghci/scripts/ghci016.stdout b/testsuite/tests/ghci/scripts/ghci016.stdout
new file mode 100644
index 0000000000..62a6e3c9df
--- /dev/null
+++ b/testsuite/tests/ghci/scripts/ghci016.stdout
@@ -0,0 +1 @@
+T
diff --git a/testsuite/tests/ghci/scripts/ghci017.script b/testsuite/tests/ghci/scripts/ghci017.script
new file mode 100644
index 0000000000..6a452c185a
--- /dev/null
+++ b/testsuite/tests/ghci/scripts/ghci017.script
@@ -0,0 +1 @@
+()
diff --git a/testsuite/tests/ghci/scripts/ghci017.stdout b/testsuite/tests/ghci/scripts/ghci017.stdout
new file mode 100644
index 0000000000..6a452c185a
--- /dev/null
+++ b/testsuite/tests/ghci/scripts/ghci017.stdout
@@ -0,0 +1 @@
+()
diff --git a/testsuite/tests/ghci/scripts/ghci018.script b/testsuite/tests/ghci/scripts/ghci018.script
new file mode 100644
index 0000000000..7eea11e3c3
--- /dev/null
+++ b/testsuite/tests/ghci/scripts/ghci018.script
@@ -0,0 +1,4 @@
+:set -XTemplateHaskell
+:m + Language.Haskell.TH
+$( do runIO $ putStrLn "Q"; [| 'x' |] )
+
diff --git a/testsuite/tests/ghci/scripts/ghci018.stdout b/testsuite/tests/ghci/scripts/ghci018.stdout
new file mode 100644
index 0000000000..6b97cd261f
--- /dev/null
+++ b/testsuite/tests/ghci/scripts/ghci018.stdout
@@ -0,0 +1,2 @@
+Q
+'x'
diff --git a/testsuite/tests/ghci/scripts/ghci019.hs b/testsuite/tests/ghci/scripts/ghci019.hs
new file mode 100644
index 0000000000..f1ea575566
--- /dev/null
+++ b/testsuite/tests/ghci/scripts/ghci019.hs
@@ -0,0 +1,9 @@
+-- Trac #1581
+-- Even though Eq is not in scope unqualified, we want to
+-- see the Eq instance of Foo when we say :i Foo
+
+module Foo where
+import qualified Prelude
+
+data Foo = Foo
+instance Prelude.Eq Foo
diff --git a/testsuite/tests/ghci/scripts/ghci019.script b/testsuite/tests/ghci/scripts/ghci019.script
new file mode 100644
index 0000000000..b74e7c5ab9
--- /dev/null
+++ b/testsuite/tests/ghci/scripts/ghci019.script
@@ -0,0 +1,2 @@
+:l ghci019
+:i Foo
diff --git a/testsuite/tests/ghci/scripts/ghci019.stdout b/testsuite/tests/ghci/scripts/ghci019.stdout
new file mode 100644
index 0000000000..fa4027070c
--- /dev/null
+++ b/testsuite/tests/ghci/scripts/ghci019.stdout
@@ -0,0 +1,2 @@
+data Foo = Foo -- Defined at ghci019.hs:8:6-8
+instance Prelude.Eq Foo -- Defined at ghci019.hs:9:10-23
diff --git a/testsuite/tests/ghci/scripts/ghci020.script b/testsuite/tests/ghci/scripts/ghci020.script
new file mode 100644
index 0000000000..6fdfb52def
--- /dev/null
+++ b/testsuite/tests/ghci/scripts/ghci020.script
@@ -0,0 +1 @@
+:i (->)
diff --git a/testsuite/tests/ghci/scripts/ghci020.stdout b/testsuite/tests/ghci/scripts/ghci020.stdout
new file mode 100644
index 0000000000..30f3bf6083
--- /dev/null
+++ b/testsuite/tests/ghci/scripts/ghci020.stdout
@@ -0,0 +1 @@
+data (->) a b -- Defined in GHC.Prim
diff --git a/testsuite/tests/ghci/scripts/ghci021.script b/testsuite/tests/ghci/scripts/ghci021.script
new file mode 100644
index 0000000000..c2c4dec5d1
--- /dev/null
+++ b/testsuite/tests/ghci/scripts/ghci021.script
@@ -0,0 +1,4 @@
+let f = 'a'
+:r ThisDoesNotExist
+f
+
diff --git a/testsuite/tests/ghci/scripts/ghci021.stderr b/testsuite/tests/ghci/scripts/ghci021.stderr
new file mode 100644
index 0000000000..ae7c75b6bb
--- /dev/null
+++ b/testsuite/tests/ghci/scripts/ghci021.stderr
@@ -0,0 +1,2 @@
+
+<no location info>: no such module: `ThisDoesNotExist'
diff --git a/testsuite/tests/ghci/scripts/ghci021.stdout b/testsuite/tests/ghci/scripts/ghci021.stdout
new file mode 100644
index 0000000000..67fe32dafe
--- /dev/null
+++ b/testsuite/tests/ghci/scripts/ghci021.stdout
@@ -0,0 +1 @@
+'a'
diff --git a/testsuite/tests/ghci/scripts/ghci022.hs b/testsuite/tests/ghci/scripts/ghci022.hs
new file mode 100644
index 0000000000..d49fdba319
--- /dev/null
+++ b/testsuite/tests/ghci/scripts/ghci022.hs
@@ -0,0 +1,2 @@
+module Main where
+'a' '
diff --git a/testsuite/tests/ghci/scripts/ghci022.script b/testsuite/tests/ghci/scripts/ghci022.script
new file mode 100644
index 0000000000..ccefc3c83b
--- /dev/null
+++ b/testsuite/tests/ghci/scripts/ghci022.script
@@ -0,0 +1,2 @@
+:l ghci022.hs
+:show modules
diff --git a/testsuite/tests/ghci/scripts/ghci022.stderr b/testsuite/tests/ghci/scripts/ghci022.stderr
new file mode 100644
index 0000000000..138460c99f
--- /dev/null
+++ b/testsuite/tests/ghci/scripts/ghci022.stderr
@@ -0,0 +1,3 @@
+
+ghci022.hs:2:6:
+ lexical error in string/character literal at character '\n'
diff --git a/testsuite/tests/ghci/scripts/ghci022.stdout b/testsuite/tests/ghci/scripts/ghci022.stdout
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/testsuite/tests/ghci/scripts/ghci022.stdout
diff --git a/testsuite/tests/ghci/scripts/ghci023.ghci b/testsuite/tests/ghci/scripts/ghci023.ghci
new file mode 100644
index 0000000000..83363a3ddc
--- /dev/null
+++ b/testsuite/tests/ghci/scripts/ghci023.ghci
@@ -0,0 +1,10 @@
+:{
+ let { a = True
+ ; b = False
+ }
+:}
+print (a,b)
+:{
+:type
+ id
+:}
diff --git a/testsuite/tests/ghci/scripts/ghci023.script b/testsuite/tests/ghci/scripts/ghci023.script
new file mode 100644
index 0000000000..dd77433af7
--- /dev/null
+++ b/testsuite/tests/ghci/scripts/ghci023.script
@@ -0,0 +1,17 @@
+putStrLn "-- testing ghci multiline commands :{ .. :}"
+putStrLn "-- via stdin"
+:{
+ let
+ { f 0 = 1
+ ; f 1 = w
+ where { w = 2 }
+ ; y = 3
+ }
+:}
+print (f 0,f 1,y)
+:{
+:browse
+ Data.Maybe
+:}
+putStrLn "-- via readFile"
+:cmd readFile "ghci023.ghci"
diff --git a/testsuite/tests/ghci/scripts/ghci023.stdout b/testsuite/tests/ghci/scripts/ghci023.stdout
new file mode 100644
index 0000000000..855695af06
--- /dev/null
+++ b/testsuite/tests/ghci/scripts/ghci023.stdout
@@ -0,0 +1,16 @@
+-- testing ghci multiline commands :{ .. :}
+-- via stdin
+(1,2,3)
+data Maybe a = Nothing | Just a
+catMaybes :: [Maybe a] -> [a]
+fromJust :: Maybe a -> a
+fromMaybe :: a -> Maybe a -> a
+isJust :: Maybe a -> Bool
+isNothing :: Maybe a -> Bool
+listToMaybe :: [a] -> Maybe a
+mapMaybe :: (a -> Maybe b) -> [a] -> [b]
+maybe :: b -> (a -> b) -> Maybe a -> b
+maybeToList :: Maybe a -> [a]
+-- via readFile
+(True,False)
+id :: a -> a
diff --git a/testsuite/tests/ghci/scripts/ghci024.script b/testsuite/tests/ghci/scripts/ghci024.script
new file mode 100644
index 0000000000..f1c9286991
--- /dev/null
+++ b/testsuite/tests/ghci/scripts/ghci024.script
@@ -0,0 +1,10 @@
+putStrLn "-- ghci024.stdout is a generated file! please edit ghci024.py instead."
+:set
+:show languages
+putStrLn "-- :set -XMagicHash"
+:set -XMagicHash
+:show languages
+:show packages
+putStrLn "-- :set -package ghc"
+:set -package ghc
+:show packages
diff --git a/testsuite/tests/ghci/scripts/ghci024.stderr b/testsuite/tests/ghci/scripts/ghci024.stderr
new file mode 100644
index 0000000000..425c02baba
--- /dev/null
+++ b/testsuite/tests/ghci/scripts/ghci024.stderr
@@ -0,0 +1 @@
+package flags have changed, resetting and loading new packages...
diff --git a/testsuite/tests/ghci/scripts/ghci024.stdout b/testsuite/tests/ghci/scripts/ghci024.stdout
new file mode 100644
index 0000000000..9f3fe7b999
--- /dev/null
+++ b/testsuite/tests/ghci/scripts/ghci024.stdout
@@ -0,0 +1,18 @@
+~~~~~~~~~~ Testing :set
+options currently set: none.
+GHCi-specific dynamic flag settings:
+ -fno-print-explicit-foralls
+other dynamic, non-language, flag settings:
+ -fno-warn-implicit-prelude
+~~~~~~~~~~ Testing :show languages
+active language flags:
+ -XImplicitPrelude
+~~~~~~~~~~ Testing :show languages, with -XMagicHash
+active language flags:
+ -XMagicHash
+ -XImplicitPrelude
+~~~~~~~~~~ Testing :show packages
+active package flags: none
+~~~~~~~~~~ Testing :show packages, including the ghc package
+active package flags:
+ -package ghc
diff --git a/testsuite/tests/ghci/scripts/ghci025.hs b/testsuite/tests/ghci/scripts/ghci025.hs
new file mode 100644
index 0000000000..0e1bc7e2c5
--- /dev/null
+++ b/testsuite/tests/ghci/scripts/ghci025.hs
@@ -0,0 +1,22 @@
+{-# LANGUAGE Rank2Types, MultiParamTypeClasses #-}
+
+module T where
+
+import qualified Prelude as T(length,Monad,Integer)
+import qualified Data.ByteString as T(length)
+import Prelude(length,(+),(=<<),Monad(..),Maybe(..),Eq)
+import Data.Maybe
+import Control.Monad(Monad(..),MonadPlus(..))
+
+length :: T.Integer
+length = 0
+
+class N a
+class S a
+
+class C a b where
+ c1 :: N b => a -> b
+ c2 :: (N b,S b) => a -> b
+ c3 :: forall a. a -> b
+ c4 :: a1 -> b
+
diff --git a/testsuite/tests/ghci/scripts/ghci025.script b/testsuite/tests/ghci/scripts/ghci025.script
new file mode 100644
index 0000000000..40f3e475be
--- /dev/null
+++ b/testsuite/tests/ghci/scripts/ghci025.script
@@ -0,0 +1,27 @@
+:l ghci025
+System.IO.putStrLn "-- test :browse! functionality"
+System.IO.putStrLn ":browse! *T"
+:browse! *T
+System.IO.putStrLn ":browse! T"
+:browse! T
+:set -fprint-explicit-foralls
+System.IO.putStrLn ":browse! T -- with -fprint-explicit-foralls"
+:browse! T
+
+System.IO.putStrLn "-- test :browse! <target> relative to different contexts"
+:set -fforce-recomp
+-- ToDo: this will go wrong in parallel
+:! cp ../prog001/D1.hs ../prog001/D.hs
+:l ../prog001/D.hs
+:add ../prog001/C.hs
+System.IO.putStrLn ":browse! C -- from *C>"
+:browse! C
+:add ../prog001/B.hs
+System.IO.putStrLn ":browse! C -- from *B>, after :add B"
+:browse! C
+:m *C
+System.IO.putStrLn ":browse! C -- from *C>, after :m *C"
+:browse! C
+:m *D
+System.IO.putStrLn ":browse! C -- from *D>, after :m *D"
+:browse! C
diff --git a/testsuite/tests/ghci/scripts/ghci025.stdout b/testsuite/tests/ghci/scripts/ghci025.stdout
new file mode 100644
index 0000000000..2c8a9835dd
--- /dev/null
+++ b/testsuite/tests/ghci/scripts/ghci025.stdout
@@ -0,0 +1,111 @@
+-- test :browse! functionality
+:browse! *T
+-- defined locally
+T.length :: T.Integer
+class N a
+class S a
+class C a b where
+ c1 :: N b => a -> b
+ c2 :: (N b, S b) => a -> b
+ c3 :: a1 -> b
+ c4 :: a1 -> b
+c1 :: (C a b, N b) => a -> b
+c2 :: (C a b, N b, S b) => a -> b
+c3 :: C a b => forall a1. a1 -> b
+c4 :: C a b => forall a1. a1 -> b
+-- imported via Control.Monad
+class Monad m => MonadPlus m where
+ mzero :: m a
+ mplus :: m a -> m a -> m a
+mplus :: MonadPlus m => forall a. m a -> m a -> m a
+mzero :: MonadPlus m => forall a. m a
+-- imported via Control.Monad, Prelude
+(>>) :: Monad m => forall a b. m a -> m b -> m b
+(>>=) :: Monad m => forall a b. m a -> (a -> m b) -> m b
+fail :: Monad m => forall a. GHC.Base.String -> m a
+return :: Monad m => forall a. a -> m a
+-- imported via Control.Monad, Prelude, T
+class Monad m where
+ (>>=) :: m a -> (a -> m b) -> m b
+ (>>) :: m a -> m b -> m b
+ return :: a -> m a
+ fail :: GHC.Base.String -> m a
+-- imported via Data.Maybe
+catMaybes :: [Maybe a] -> [a]
+fromJust :: Maybe a -> a
+fromMaybe :: a -> Maybe a -> a
+isJust :: Maybe a -> GHC.Types.Bool
+isNothing :: Maybe a -> GHC.Types.Bool
+listToMaybe :: [a] -> Maybe a
+mapMaybe :: (a -> Maybe b) -> [a] -> [b]
+maybe :: b -> (a -> b) -> Maybe a -> b
+maybeToList :: Maybe a -> [a]
+-- imported via Data.Maybe, Prelude
+Just :: a -> Maybe a
+data Maybe a = Nothing | Just a
+Nothing :: Maybe a
+-- imported via Prelude
+(+) :: GHC.Num.Num a => a -> a -> a
+(=<<) :: Monad m => (a -> m b) -> m a -> m b
+class Eq a where
+ (GHC.Classes.==) :: a -> a -> GHC.Types.Bool
+ (GHC.Classes./=) :: a -> a -> GHC.Types.Bool
+-- imported via Prelude, T
+Prelude.length :: [a] -> GHC.Types.Int
+-- imported via T
+data T.Integer
+ = integer-gmp:GHC.Integer.Type.S# GHC.Prim.Int#
+ | integer-gmp:GHC.Integer.Type.J# GHC.Prim.Int# GHC.Prim.ByteArray#
+T.length :: Data.ByteString.Internal.ByteString -> GHC.Types.Int
+:browse! T
+-- defined locally
+T.length :: T.Integer
+class N a
+class S a
+class C a b where
+ c1 :: N b => a -> b
+ c2 :: (N b, S b) => a -> b
+ c3 :: a1 -> b
+ c4 :: a1 -> b
+c1 :: (C a b, N b) => a -> b
+c2 :: (C a b, N b, S b) => a -> b
+c3 :: C a b => forall a1. a1 -> b
+c4 :: C a b => forall a1. a1 -> b
+:browse! T -- with -fprint-explicit-foralls
+-- defined locally
+T.length :: T.Integer
+class N a
+class S a
+class C a b where
+ c1 :: N b => a -> b
+ c2 :: (N b, S b) => a -> b
+ c3 :: forall a1. a1 -> b
+ c4 :: forall a1. a1 -> b
+c1 :: forall a b. (C a b, N b) => a -> b
+c2 :: forall a b. (C a b, N b, S b) => a -> b
+c3 :: forall a b. C a b => forall a1. a1 -> b
+c4 :: forall a b. C a b => forall a1. a1 -> b
+-- test :browse! <target> relative to different contexts
+:browse! C -- from *C>
+-- defined locally
+g :: forall a. Num a => a -> a
+h :: forall a. Integral a => a -> a
+-- imported via D
+f :: forall a. Num a => a -> a
+:browse! C -- from *B>, after :add B
+-- imported via C
+g :: forall a. Num a => a -> a
+h :: forall a. Integral a => a -> a
+f :: forall a. Num a => a -> a
+:browse! C -- from *C>, after :m *C
+-- defined locally
+g :: forall a. Num a => a -> a
+h :: forall a. Integral a => a -> a
+-- imported via D
+f :: forall a. Num a => a -> a
+:browse! C -- from *D>, after :m *D
+-- not currently imported
+C.g :: forall a. Num a => a -> a
+C.h :: forall a. Integral a => a -> a
+-- defined locally
+f :: forall a. Num a => a -> a
diff --git a/testsuite/tests/ghci/scripts/ghci025.stdout-ghc-7.0 b/testsuite/tests/ghci/scripts/ghci025.stdout-ghc-7.0
new file mode 100644
index 0000000000..d06660c3ef
--- /dev/null
+++ b/testsuite/tests/ghci/scripts/ghci025.stdout-ghc-7.0
@@ -0,0 +1,111 @@
+-- test :browse! functionality
+:browse! *T
+-- defined locally
+T.length :: T.Integer
+class N a
+class S a
+class C a b where
+ c1 :: N b => a -> b
+ c2 :: (N b, S b) => a -> b
+ c3 :: a1 -> b
+ c4 :: a1 -> b
+c1 :: (C a b, N b) => a -> b
+c2 :: (C a b, N b, S b) => a -> b
+c3 :: C a b => forall a1. a1 -> b
+c4 :: C a b => forall a1. a1 -> b
+-- imported via Control.Monad
+class Monad m => MonadPlus m where
+ mzero :: m a
+ mplus :: m a -> m a -> m a
+mplus :: MonadPlus m => forall a. m a -> m a -> m a
+mzero :: MonadPlus m => forall a. m a
+-- imported via Control.Monad, Prelude
+(>>) :: Monad m => forall a b. m a -> m b -> m b
+(>>=) :: Monad m => forall a b. m a -> (a -> m b) -> m b
+fail :: Monad m => forall a. GHC.Base.String -> m a
+return :: Monad m => forall a. a -> m a
+-- imported via Control.Monad, Prelude, T
+class Monad m where
+ (>>=) :: m a -> (a -> m b) -> m b
+ (>>) :: m a -> m b -> m b
+ return :: a -> m a
+ fail :: GHC.Base.String -> m a
+-- imported via Data.Maybe
+catMaybes :: [Maybe a] -> [a]
+fromJust :: Maybe a -> a
+fromMaybe :: a -> Maybe a -> a
+isJust :: Maybe a -> GHC.Bool.Bool
+isNothing :: Maybe a -> GHC.Bool.Bool
+listToMaybe :: [a] -> Maybe a
+mapMaybe :: (a -> Maybe b) -> [a] -> [b]
+maybe :: b -> (a -> b) -> Maybe a -> b
+maybeToList :: Maybe a -> [a]
+-- imported via Data.Maybe, Prelude
+Just :: a -> Maybe a
+data Maybe a = Nothing | Just a
+Nothing :: Maybe a
+-- imported via Prelude
+(+) :: GHC.Num.Num a => a -> a -> a
+(=<<) :: Monad m => (a -> m b) -> m a -> m b
+class Eq a where
+ (GHC.Classes.==) :: a -> a -> GHC.Bool.Bool
+ (GHC.Classes./=) :: a -> a -> GHC.Bool.Bool
+-- imported via Prelude, T
+Prelude.length :: [a] -> GHC.Types.Int
+-- imported via T
+data T.Integer
+ = integer-gmp:GHC.Integer.Type.S# GHC.Prim.Int#
+ | integer-gmp:GHC.Integer.Type.J# GHC.Prim.Int# GHC.Prim.ByteArray#
+T.length :: Data.ByteString.Internal.ByteString -> GHC.Types.Int
+:browse! T
+-- defined locally
+T.length :: T.Integer
+class N a
+class S a
+class C a b where
+ c1 :: N b => a -> b
+ c2 :: (N b, S b) => a -> b
+ c3 :: a1 -> b
+ c4 :: a1 -> b
+c1 :: (C a b, N b) => a -> b
+c2 :: (C a b, N b, S b) => a -> b
+c3 :: C a b => forall a1. a1 -> b
+c4 :: C a b => forall a1. a1 -> b
+:browse! T -- with -fprint-explicit-foralls
+-- defined locally
+T.length :: T.Integer
+class N a
+class S a
+class C a b where
+ c1 :: N b => a -> b
+ c2 :: (N b, S b) => a -> b
+ c3 :: forall a1. a1 -> b
+ c4 :: forall a1. a1 -> b
+c1 :: forall a b. (C a b, N b) => a -> b
+c2 :: forall a b. (C a b, N b, S b) => a -> b
+c3 :: forall a b. C a b => forall a1. a1 -> b
+c4 :: forall a b. C a b => forall a1. a1 -> b
+-- test :browse! <target> relative to different contexts
+:browse! C -- from *C>
+-- defined locally
+g :: forall a. Num a => a -> a
+h :: forall a. Integral a => a -> a
+-- imported via D
+f :: forall a. Num a => a -> a
+:browse! C -- from *B>, after :add B
+-- imported via C
+g :: forall a. Num a => a -> a
+h :: forall a. Integral a => a -> a
+f :: forall a. Num a => a -> a
+:browse! C -- from *C>, after :m *C
+-- defined locally
+g :: forall a. Num a => a -> a
+h :: forall a. Integral a => a -> a
+-- imported via D
+f :: forall a. Num a => a -> a
+:browse! C -- from *D>, after :m *D
+-- not currently imported
+C.g :: forall a. Num a => a -> a
+C.h :: forall a. Integral a => a -> a
+-- defined locally
+f :: forall a. Num a => a -> a
diff --git a/testsuite/tests/ghci/scripts/ghci026.script b/testsuite/tests/ghci/scripts/ghci026.script
new file mode 100644
index 0000000000..871de86741
--- /dev/null
+++ b/testsuite/tests/ghci/scripts/ghci026.script
@@ -0,0 +1,6 @@
+import Data.Maybe
+:browse
+:l ../prog002/A1.hs
+:browse
+:add ../prog002/B.hs
+:browse
diff --git a/testsuite/tests/ghci/scripts/ghci026.stdout b/testsuite/tests/ghci/scripts/ghci026.stdout
new file mode 100644
index 0000000000..163cca29b6
--- /dev/null
+++ b/testsuite/tests/ghci/scripts/ghci026.stdout
@@ -0,0 +1,15 @@
+data Maybe a = Nothing | Just a
+catMaybes :: [Maybe a] -> [a]
+fromJust :: Maybe a -> a
+fromMaybe :: a -> Maybe a -> a
+isJust :: Maybe a -> Bool
+isNothing :: Maybe a -> Bool
+listToMaybe :: [a] -> Maybe a
+mapMaybe :: (a -> Maybe b) -> [a] -> [b]
+maybe :: b -> (a -> b) -> Maybe a -> b
+maybeToList :: Maybe a -> [a]
+data T = A Int | B Float
+f :: Double -> Double
+g :: Double -> Double
+h :: Integral a => a -> a
+f :: Double -> Double
diff --git a/testsuite/tests/ghci/scripts/ghci027.hs b/testsuite/tests/ghci/scripts/ghci027.hs
new file mode 100644
index 0000000000..df99d7d1c0
--- /dev/null
+++ b/testsuite/tests/ghci/scripts/ghci027.hs
@@ -0,0 +1,5 @@
+-- Test for #1617
+module Main where
+import Prelude ()
+--import Control.Monad (mplus)
+import qualified Control.Monad (mplus)
diff --git a/testsuite/tests/ghci/scripts/ghci027.script b/testsuite/tests/ghci/scripts/ghci027.script
new file mode 100644
index 0000000000..aaf0ac5544
--- /dev/null
+++ b/testsuite/tests/ghci/scripts/ghci027.script
@@ -0,0 +1,8 @@
+-- Test for #1617
+:!cp ghci027_1.hs ghci027.hs
+:load ghci027
+:browse *Main
+:!sleep 1
+:!cp ghci027_2.hs ghci027.hs
+:reload
+:browse *Main
diff --git a/testsuite/tests/ghci/scripts/ghci027.stdout b/testsuite/tests/ghci/scripts/ghci027.stdout
new file mode 100644
index 0000000000..2f627b46ec
--- /dev/null
+++ b/testsuite/tests/ghci/scripts/ghci027.stdout
@@ -0,0 +1,6 @@
+class GHC.Base.Monad m => Control.Monad.MonadPlus m where
+ ...
+ mplus :: m a -> m a -> m a
+class GHC.Base.Monad m => Control.Monad.MonadPlus m where
+ ...
+ Control.Monad.mplus :: m a -> m a -> m a
diff --git a/testsuite/tests/ghci/scripts/ghci027_1.hs b/testsuite/tests/ghci/scripts/ghci027_1.hs
new file mode 100644
index 0000000000..a1a7bfac37
--- /dev/null
+++ b/testsuite/tests/ghci/scripts/ghci027_1.hs
@@ -0,0 +1,5 @@
+-- Test for #1617
+module Main where
+import Prelude ()
+import Control.Monad (mplus)
+import qualified Control.Monad (mplus)
diff --git a/testsuite/tests/ghci/scripts/ghci027_2.hs b/testsuite/tests/ghci/scripts/ghci027_2.hs
new file mode 100644
index 0000000000..df99d7d1c0
--- /dev/null
+++ b/testsuite/tests/ghci/scripts/ghci027_2.hs
@@ -0,0 +1,5 @@
+-- Test for #1617
+module Main where
+import Prelude ()
+--import Control.Monad (mplus)
+import qualified Control.Monad (mplus)
diff --git a/testsuite/tests/ghci/scripts/ghci028.script b/testsuite/tests/ghci/scripts/ghci028.script
new file mode 100644
index 0000000000..5f527c13f6
--- /dev/null
+++ b/testsuite/tests/ghci/scripts/ghci028.script
@@ -0,0 +1,4 @@
+-- Testing that script input is interpreted at UTF-8
+:set -XUnicodeSyntax -XRankNTypes
+let (∘) :: ∀ α β γ . (β → γ) → (α → β) → (α → γ); (f ∘ g) x = f (g x)
+reverse ∘ map Data.Char.toUpper $ "fish"
diff --git a/testsuite/tests/ghci/scripts/ghci028.stdout b/testsuite/tests/ghci/scripts/ghci028.stdout
new file mode 100644
index 0000000000..a6ed183d5f
--- /dev/null
+++ b/testsuite/tests/ghci/scripts/ghci028.stdout
@@ -0,0 +1 @@
+"HSIF"
diff --git a/testsuite/tests/ghci/scripts/ghci029.script b/testsuite/tests/ghci/scripts/ghci029.script
new file mode 100644
index 0000000000..e669b278e0
--- /dev/null
+++ b/testsuite/tests/ghci/scripts/ghci029.script
@@ -0,0 +1,11 @@
+-- :main and :run
+let main = System.Environment.getArgs >>= print
+:main foo bar
+:main foo "bar baz"
+:main ["foo", "bar baz"]
+let foo = putStrLn "foo" >> System.Environment.getArgs >>= print
+let bar = putStrLn "bar" >> System.Environment.getArgs >>= print
+:set -main-is foo
+:main foo "bar baz"
+:run bar ["foo", "bar baz"]
+
diff --git a/testsuite/tests/ghci/scripts/ghci029.stdout b/testsuite/tests/ghci/scripts/ghci029.stdout
new file mode 100644
index 0000000000..05cc525d47
--- /dev/null
+++ b/testsuite/tests/ghci/scripts/ghci029.stdout
@@ -0,0 +1,7 @@
+["foo","bar"]
+["foo","bar baz"]
+["foo","bar baz"]
+foo
+["foo","bar baz"]
+bar
+["foo","bar baz"]
diff --git a/testsuite/tests/ghci/scripts/ghci030.hs b/testsuite/tests/ghci/scripts/ghci030.hs
new file mode 100644
index 0000000000..ed95ea9661
--- /dev/null
+++ b/testsuite/tests/ghci/scripts/ghci030.hs
@@ -0,0 +1,9 @@
+-- Trac #2082
+-- If we :i D or C, we should see parentheses around (Int -> a)
+
+{-# LANGUAGE ExistentialQuantification #-}
+
+module Foo where
+
+data D = forall a . C (Int -> a) Char
+
diff --git a/testsuite/tests/ghci/scripts/ghci030.script b/testsuite/tests/ghci/scripts/ghci030.script
new file mode 100644
index 0000000000..b0821e8388
--- /dev/null
+++ b/testsuite/tests/ghci/scripts/ghci030.script
@@ -0,0 +1,3 @@
+:l ghci030
+:i D
+:i C
diff --git a/testsuite/tests/ghci/scripts/ghci030.stdout b/testsuite/tests/ghci/scripts/ghci030.stdout
new file mode 100644
index 0000000000..24fa768e6a
--- /dev/null
+++ b/testsuite/tests/ghci/scripts/ghci030.stdout
@@ -0,0 +1,6 @@
+data D where
+ C :: (Int -> a) -> Char -> D
+ -- Defined at ghci030.hs:8:6
+data D where
+ C :: (Int -> a) -> Char -> D
+ -- Defined at ghci030.hs:8:21
diff --git a/testsuite/tests/ghci/scripts/ghci031.hs b/testsuite/tests/ghci/scripts/ghci031.hs
new file mode 100644
index 0000000000..ef5d985f75
--- /dev/null
+++ b/testsuite/tests/ghci/scripts/ghci031.hs
@@ -0,0 +1,8 @@
+{-# LANGUAGE DatatypeContexts #-}
+-- Trac #2138
+-- If we :i D, we should see the Eq constraint
+
+module Foo where
+
+data Eq a => D a = C a
+
diff --git a/testsuite/tests/ghci/scripts/ghci031.script b/testsuite/tests/ghci/scripts/ghci031.script
new file mode 100644
index 0000000000..23cba64bac
--- /dev/null
+++ b/testsuite/tests/ghci/scripts/ghci031.script
@@ -0,0 +1,2 @@
+:l ghci031
+:i D
diff --git a/testsuite/tests/ghci/scripts/ghci031.stderr b/testsuite/tests/ghci/scripts/ghci031.stderr
new file mode 100644
index 0000000000..8e4256c7f4
--- /dev/null
+++ b/testsuite/tests/ghci/scripts/ghci031.stderr
@@ -0,0 +1,3 @@
+
+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/ghci031.stdout b/testsuite/tests/ghci/scripts/ghci031.stdout
new file mode 100644
index 0000000000..018dc4bc58
--- /dev/null
+++ b/testsuite/tests/ghci/scripts/ghci031.stdout
@@ -0,0 +1 @@
+data Eq a => D a = C a -- Defined at ghci031.hs:7:14
diff --git a/testsuite/tests/ghci/scripts/ghci032.script b/testsuite/tests/ghci/scripts/ghci032.script
new file mode 100644
index 0000000000..cea8afff15
--- /dev/null
+++ b/testsuite/tests/ghci/scripts/ghci032.script
@@ -0,0 +1,8 @@
+
+import System.FilePath
+import System.Directory
+wd1 <- getCurrentDirectory
+setCurrentDirectory ".."
+wd2 <- getCurrentDirectory
+wd1_parent <- canonicalizePath (wd1 </> "..")
+wd1_parent `equalFilePath` wd2 \ No newline at end of file
diff --git a/testsuite/tests/ghci/scripts/ghci032.stdout b/testsuite/tests/ghci/scripts/ghci032.stdout
new file mode 100644
index 0000000000..0ca95142bb
--- /dev/null
+++ b/testsuite/tests/ghci/scripts/ghci032.stdout
@@ -0,0 +1 @@
+True
diff --git a/testsuite/tests/ghci/scripts/ghci033.hs b/testsuite/tests/ghci/scripts/ghci033.hs
new file mode 100644
index 0000000000..b67960068d
--- /dev/null
+++ b/testsuite/tests/ghci/scripts/ghci033.hs
@@ -0,0 +1,5 @@
+-- Test Trac #1930: display of infix constructors
+module Test where
+
+data Foo = Foo1 Int
+ | Int `InfixCon` Bool \ No newline at end of file
diff --git a/testsuite/tests/ghci/scripts/ghci033.script b/testsuite/tests/ghci/scripts/ghci033.script
new file mode 100644
index 0000000000..3911618777
--- /dev/null
+++ b/testsuite/tests/ghci/scripts/ghci033.script
@@ -0,0 +1,2 @@
+:l ghci033
+:i Foo
diff --git a/testsuite/tests/ghci/scripts/ghci033.stdout b/testsuite/tests/ghci/scripts/ghci033.stdout
new file mode 100644
index 0000000000..748fab88b3
--- /dev/null
+++ b/testsuite/tests/ghci/scripts/ghci033.stdout
@@ -0,0 +1,2 @@
+data Foo = Foo1 Int | Int `InfixCon` Bool
+ -- Defined at ghci033.hs:4:6-8
diff --git a/testsuite/tests/ghci/scripts/ghci034.script b/testsuite/tests/ghci/scripts/ghci034.script
new file mode 100644
index 0000000000..386760081f
--- /dev/null
+++ b/testsuite/tests/ghci/scripts/ghci034.script
@@ -0,0 +1,3 @@
+:i thisIsNotDefined
+-- In 6.9, GHCi used to exit at this point
+putStrLn "Foo"
diff --git a/testsuite/tests/ghci/scripts/ghci034.stderr b/testsuite/tests/ghci/scripts/ghci034.stderr
new file mode 100644
index 0000000000..59501b2443
--- /dev/null
+++ b/testsuite/tests/ghci/scripts/ghci034.stderr
@@ -0,0 +1,2 @@
+
+Top level: Not in scope: `thisIsNotDefined'
diff --git a/testsuite/tests/ghci/scripts/ghci034.stdout b/testsuite/tests/ghci/scripts/ghci034.stdout
new file mode 100644
index 0000000000..bc56c4d894
--- /dev/null
+++ b/testsuite/tests/ghci/scripts/ghci034.stdout
@@ -0,0 +1 @@
+Foo
diff --git a/testsuite/tests/ghci/scripts/ghci035.script b/testsuite/tests/ghci/scripts/ghci035.script
new file mode 100644
index 0000000000..dcf5adc0de
--- /dev/null
+++ b/testsuite/tests/ghci/scripts/ghci035.script
@@ -0,0 +1,4 @@
+:set -Wall
+-- In 6.12, GHCi used to warn that x was unused (trac #3813):
+x <- return True
+x
diff --git a/testsuite/tests/ghci/scripts/ghci035.stdout b/testsuite/tests/ghci/scripts/ghci035.stdout
new file mode 100644
index 0000000000..0ca95142bb
--- /dev/null
+++ b/testsuite/tests/ghci/scripts/ghci035.stdout
@@ -0,0 +1 @@
+True
diff --git a/testsuite/tests/ghci/scripts/ghci036.script b/testsuite/tests/ghci/scripts/ghci036.script
new file mode 100644
index 0000000000..3615e07252
--- /dev/null
+++ b/testsuite/tests/ghci/scripts/ghci036.script
@@ -0,0 +1,19 @@
+import Data.List (nub)
+:t nubBy
+import Data.List (nubBy)
+:t nub
+:m +Data.List
+:m -Data.List
+:t nub
+:t nubBy
+import Data.List hiding (nub)
+:t nub
+import qualified Data.List as L
+:t nub
+:t L.nub
+:m +Data.List
+:t L.nub
+:m -Data.List
+:t L.nub
+:m Prelude
+:t nub \ No newline at end of file
diff --git a/testsuite/tests/ghci/scripts/ghci036.stderr b/testsuite/tests/ghci/scripts/ghci036.stderr
new file mode 100644
index 0000000000..2470e3402b
--- /dev/null
+++ b/testsuite/tests/ghci/scripts/ghci036.stderr
@@ -0,0 +1,22 @@
+
+<interactive>:1:1: Not in scope: `nubBy'
+
+<interactive>:1:1: Not in scope: `nub'
+
+<interactive>:1:1: Not in scope: `nubBy'
+
+<interactive>:1:1: Not in scope: `nub'
+
+<interactive>:1:1:
+ Not in scope: `nub'
+ Perhaps you meant `L.nub' (imported from Data.List)
+
+<interactive>:1:1:
+ Failed to load interface for `L'
+ Use -v to see a list of the files searched for.
+
+<interactive>:1:1:
+ Failed to load interface for `L'
+ Use -v to see a list of the files searched for.
+
+<interactive>:1:1: Not in scope: `nub'
diff --git a/testsuite/tests/ghci/scripts/ghci036.stdout b/testsuite/tests/ghci/scripts/ghci036.stdout
new file mode 100644
index 0000000000..739118210d
--- /dev/null
+++ b/testsuite/tests/ghci/scripts/ghci036.stdout
@@ -0,0 +1,2 @@
+nub :: Eq a => [a] -> [a]
+L.nub :: Eq a => [a] -> [a]
diff --git a/testsuite/tests/ghci/scripts/ghci037.script b/testsuite/tests/ghci/scripts/ghci037.script
new file mode 100644
index 0000000000..1407625632
--- /dev/null
+++ b/testsuite/tests/ghci/scripts/ghci037.script
@@ -0,0 +1,3 @@
+x <- Control.Concurrent.myThreadId
+y <- Control.Concurrent.myThreadId
+print (x == y) \ No newline at end of file
diff --git a/testsuite/tests/ghci/scripts/ghci037.stdout b/testsuite/tests/ghci/scripts/ghci037.stdout
new file mode 100644
index 0000000000..91d6f80f27
--- /dev/null
+++ b/testsuite/tests/ghci/scripts/ghci037.stdout
@@ -0,0 +1,2 @@
+False
+True
diff --git a/testsuite/tests/ghci/shell.hs b/testsuite/tests/ghci/shell.hs
new file mode 100644
index 0000000000..75f78342a4
--- /dev/null
+++ b/testsuite/tests/ghci/shell.hs
@@ -0,0 +1,9 @@
+-- Used to present a consistent shell view for :! commands in GHCi
+-- scripts. We're assuming that sh is in the path and that it
+-- is a Bourne-compatible shell.
+
+import System.Cmd
+import System.Exit
+
+shell :: String -> IO ExitCode
+shell s = rawSystem "sh" ["-c", s]
diff --git a/testsuite/tests/ghci/should_run/2589.hs b/testsuite/tests/ghci/should_run/2589.hs
new file mode 100644
index 0000000000..eadb9995e1
--- /dev/null
+++ b/testsuite/tests/ghci/should_run/2589.hs
@@ -0,0 +1,8 @@
+{-# LANGUAGE MagicHash #-}
+module Main where
+
+import GHC.Ptr
+import GHC.Exts
+import Foreign.Ptr
+
+main = print (Ptr nullAddr# == nullPtr)
diff --git a/testsuite/tests/ghci/should_run/2589.stdout b/testsuite/tests/ghci/should_run/2589.stdout
new file mode 100644
index 0000000000..0ca95142bb
--- /dev/null
+++ b/testsuite/tests/ghci/should_run/2589.stdout
@@ -0,0 +1 @@
+True
diff --git a/testsuite/tests/ghci/should_run/2881.hs b/testsuite/tests/ghci/should_run/2881.hs
new file mode 100644
index 0000000000..94ecfa6a00
--- /dev/null
+++ b/testsuite/tests/ghci/should_run/2881.hs
@@ -0,0 +1,8 @@
+import Data.Word
+fib :: Word -> Word
+fib 0 = 1
+fib 1 = 1
+fib n = l + r
+ where l = fib (n-2); r = fib (n-1)
+
+main = print (fib 20)
diff --git a/testsuite/tests/ghci/should_run/2881.stdout b/testsuite/tests/ghci/should_run/2881.stdout
new file mode 100644
index 0000000000..06a735b308
--- /dev/null
+++ b/testsuite/tests/ghci/should_run/2881.stdout
@@ -0,0 +1 @@
+10946
diff --git a/testsuite/tests/ghci/should_run/3171.stdout b/testsuite/tests/ghci/should_run/3171.stdout
new file mode 100644
index 0000000000..c83176a2cf
--- /dev/null
+++ b/testsuite/tests/ghci/should_run/3171.stdout
@@ -0,0 +1 @@
+Interrupted.
diff --git a/testsuite/tests/ghci/should_run/Makefile b/testsuite/tests/ghci/should_run/Makefile
new file mode 100644
index 0000000000..3354196188
--- /dev/null
+++ b/testsuite/tests/ghci/should_run/Makefile
@@ -0,0 +1,9 @@
+TOP=../../..
+include $(TOP)/mk/boilerplate.mk
+include $(TOP)/mk/test.mk
+
+# Test that threadDelay can be interrupted by ^C.
+3171:
+ echo "do Control.Concurrent.threadDelay 3000000; putStrLn \"threadDelay was not interrupted\"" | \
+ "$(TEST_HC)" $(TEST_HC_OPTS) -ignore-dot-ghci -v0 --interactive 2>3171.err & \
+ sleep 2; kill -INT $$!; wait
diff --git a/testsuite/tests/ghci/should_run/all.T b/testsuite/tests/ghci/should_run/all.T
new file mode 100644
index 0000000000..41d65f2e32
--- /dev/null
+++ b/testsuite/tests/ghci/should_run/all.T
@@ -0,0 +1,18 @@
+
+setTestOpts(if_compiler_profiled(skip))
+
+# We only want to run these tests with GHCi
+def just_ghci( opts ):
+ opts.only_ways = ['ghci']
+
+test('ghcirun001', just_ghci, compile_and_run, [''])
+test('ghcirun002', just_ghci, compile_and_run, [''])
+test('ghcirun003', just_ghci, compile_and_run, [''])
+test('2589', just_ghci, compile_and_run, [''])
+test('2881', just_ghci, compile_and_run, [''])
+
+test('3171',
+ [if_platform('i386-unknown-mingw32',skip),
+ req_interp],
+ run_command,
+ ['$MAKE -s --no-print-directory 3171'])
diff --git a/testsuite/tests/ghci/should_run/ghcirun001.hs b/testsuite/tests/ghci/should_run/ghcirun001.hs
new file mode 100644
index 0000000000..af193ecb97
--- /dev/null
+++ b/testsuite/tests/ghci/should_run/ghcirun001.hs
@@ -0,0 +1,30 @@
+module Main where
+
+-- This test used to fail in GHC 5.04.2. See rev. 1.22 of
+-- libraries/base/GHC/Base.lhs for the fix.
+
+data FourArrow = A | B | C | D | E | ABE | AC | BD | CDE
+ deriving (Eq)
+
+dom E = ABE
+
+cod A = AC
+cod B = BD
+cod C = CDE
+cod D = CDE
+cod E = CDE
+cod ABE = ABE
+cod AC = AC
+cod BD = BD
+cod CDE = CDE
+
+----
+bceFour :: FourArrow -> FourArrow -> String
+bceFour f g
+ | dom f == dom g && cod f == cod g
+ = "it works"
+ | otherwise = error ("Four.bceFour: precondition fails:"
+ ++ "arrows not parallel"
+ ++ "\n")
+
+main = print (bceFour E E)
diff --git a/testsuite/tests/ghci/should_run/ghcirun001.stdout b/testsuite/tests/ghci/should_run/ghcirun001.stdout
new file mode 100644
index 0000000000..0558f45ba9
--- /dev/null
+++ b/testsuite/tests/ghci/should_run/ghcirun001.stdout
@@ -0,0 +1 @@
+"it works"
diff --git a/testsuite/tests/ghci/should_run/ghcirun002.hs b/testsuite/tests/ghci/should_run/ghcirun002.hs
new file mode 100644
index 0000000000..d744359ed1
--- /dev/null
+++ b/testsuite/tests/ghci/should_run/ghcirun002.hs
@@ -0,0 +1,72 @@
+import Data.Maybe
+import Data.List
+
+data Dir = R | D | L | U deriving (Show, Eq, Enum)
+type Spiral = ([[Int]], Int, Dir) -- (rows, current row, next direction)
+
+rows :: Spiral -> [[Int]]
+rows (rs, i, d) = rs
+currentrow :: Spiral -> Int
+currentrow (rs, i, d) = i
+nextdir :: Spiral -> Dir
+nextdir (rs, i, d) = d
+
+getrow :: Int -> [[Int]] -> Maybe [Int]
+getrow i sp = if i < 0 || i >= length sp then Nothing else Just (sp!!i)
+
+ndir :: Dir -> Dir
+ndir d = if d == U then R else succ d
+
+newsp :: Spiral
+newsp = ([[1]], 0, R)
+
+makeSpiral :: Int -> Spiral
+makeSpiral i = makeSpiral' 2 newsp
+ where makeSpiral' j sp = if j > i
+ then sp
+ else makeSpiral' (j+1) (update j sp)
+
+update :: Int -> Spiral -> Spiral
+update i (sp, cr, d) = (sp', cr', d')
+ where oldrow = if (d == U && cr' == cr && cr == 0) ||
+ (d == D && cr' == length sp)
+ then []
+ else fromJust $ getrow cr' sp
+ cr' | d == L || d == R = cr
+ | d == U = if cr == 0 then 0 else cr-1
+ | otherwise = cr+1
+ cr'' = if d == U && cr == 0 then -1 else cr'
+ sp' = insertrow cr'' newrow sp
+ newrow = case d of
+ R -> oldrow++[i]
+ D -> oldrow++[i]
+ L -> i:oldrow
+ U -> i:oldrow
+ d' | d == R || d == L = if length oldrow == maximum (map length sp)
+ then ndir d
+ else d
+ | d == U = if cr'' == -1 then ndir d else d
+ | otherwise = if cr' == length sp then ndir d else d
+
+
+
+insertrow :: Int -> [Int] -> [[Int]] -> [[Int]]
+insertrow i r rs = if i == -1 then r:rs else front++[r]++back
+ where (front, rest) = splitAt i rs
+ back = if null rest then [] else tail rest
+
+printSpiral :: Spiral -> IO ()
+printSpiral (sp, i, d) = putStrLn (concat $ intersperse "\n" (map show sp))
+
+sumdiags :: Spiral -> Int
+sumdiags (sp, i, d) = (sumdiags' 0 0 (+1)) + (sumdiags' 0 end (subtract 1)) - centre
+ where row1 = sp!!0
+ end = length row1 - 1
+ halfx = (length row1 `div` 2)
+ halfy = (length sp `div` 2)
+ centre = (sp!!halfy)!!halfx
+ sumdiags' row col f = if row == length sp
+ then 0
+ else (sp!!row)!!col + sumdiags' (row+1) (f col) f
+
+main = print (makeSpiral 10000)
diff --git a/testsuite/tests/ghci/should_run/ghcirun002.stdout b/testsuite/tests/ghci/should_run/ghcirun002.stdout
new file mode 100644
index 0000000000..30ca057963
--- /dev/null
+++ b/testsuite/tests/ghci/should_run/ghcirun002.stdout
@@ -0,0 +1 @@
+([[9703,9704,9705,9706,9707,9708,9709,9710,9711,9712,9713,9714,9715,9716,9717,9718,9719,9720,9721,9722,9723,9724,9725,9726,9727,9728,9729,9730,9731,9732,9733,9734,9735,9736,9737,9738,9739,9740,9741,9742,9743,9744,9745,9746,9747,9748,9749,9750,9751,9752,9753,9754,9755,9756,9757,9758,9759,9760,9761,9762,9763,9764,9765,9766,9767,9768,9769,9770,9771,9772,9773,9774,9775,9776,9777,9778,9779,9780,9781,9782,9783,9784,9785,9786,9787,9788,9789,9790,9791,9792,9793,9794,9795,9796,9797,9798,9799,9800,9801,9802],[9702,9313,9314,9315,9316,9317,9318,9319,9320,9321,9322,9323,9324,9325,9326,9327,9328,9329,9330,9331,9332,9333,9334,9335,9336,9337,9338,9339,9340,9341,9342,9343,9344,9345,9346,9347,9348,9349,9350,9351,9352,9353,9354,9355,9356,9357,9358,9359,9360,9361,9362,9363,9364,9365,9366,9367,9368,9369,9370,9371,9372,9373,9374,9375,9376,9377,9378,9379,9380,9381,9382,9383,9384,9385,9386,9387,9388,9389,9390,9391,9392,9393,9394,9395,9396,9397,9398,9399,9400,9401,9402,9403,9404,9405,9406,9407,9408,9409,9410,9803],[9701,9312,8931,8932,8933,8934,8935,8936,8937,8938,8939,8940,8941,8942,8943,8944,8945,8946,8947,8948,8949,8950,8951,8952,8953,8954,8955,8956,8957,8958,8959,8960,8961,8962,8963,8964,8965,8966,8967,8968,8969,8970,8971,8972,8973,8974,8975,8976,8977,8978,8979,8980,8981,8982,8983,8984,8985,8986,8987,8988,8989,8990,8991,8992,8993,8994,8995,8996,8997,8998,8999,9000,9001,9002,9003,9004,9005,9006,9007,9008,9009,9010,9011,9012,9013,9014,9015,9016,9017,9018,9019,9020,9021,9022,9023,9024,9025,9026,9411,9804],[9700,9311,8930,8557,8558,8559,8560,8561,8562,8563,8564,8565,8566,8567,8568,8569,8570,8571,8572,8573,8574,8575,8576,8577,8578,8579,8580,8581,8582,8583,8584,8585,8586,8587,8588,8589,8590,8591,8592,8593,8594,8595,8596,8597,8598,8599,8600,8601,8602,8603,8604,8605,8606,8607,8608,8609,8610,8611,8612,8613,8614,8615,8616,8617,8618,8619,8620,8621,8622,8623,8624,8625,8626,8627,8628,8629,8630,8631,8632,8633,8634,8635,8636,8637,8638,8639,8640,8641,8642,8643,8644,8645,8646,8647,8648,8649,8650,9027,9412,9805],[9699,9310,8929,8556,8191,8192,8193,8194,8195,8196,8197,8198,8199,8200,8201,8202,8203,8204,8205,8206,8207,8208,8209,8210,8211,8212,8213,8214,8215,8216,8217,8218,8219,8220,8221,8222,8223,8224,8225,8226,8227,8228,8229,8230,8231,8232,8233,8234,8235,8236,8237,8238,8239,8240,8241,8242,8243,8244,8245,8246,8247,8248,8249,8250,8251,8252,8253,8254,8255,8256,8257,8258,8259,8260,8261,8262,8263,8264,8265,8266,8267,8268,8269,8270,8271,8272,8273,8274,8275,8276,8277,8278,8279,8280,8281,8282,8651,9028,9413,9806],[9698,9309,8928,8555,8190,7833,7834,7835,7836,7837,7838,7839,7840,7841,7842,7843,7844,7845,7846,7847,7848,7849,7850,7851,7852,7853,7854,7855,7856,7857,7858,7859,7860,7861,7862,7863,7864,7865,7866,7867,7868,7869,7870,7871,7872,7873,7874,7875,7876,7877,7878,7879,7880,7881,7882,7883,7884,7885,7886,7887,7888,7889,7890,7891,7892,7893,7894,7895,7896,7897,7898,7899,7900,7901,7902,7903,7904,7905,7906,7907,7908,7909,7910,7911,7912,7913,7914,7915,7916,7917,7918,7919,7920,7921,7922,8283,8652,9029,9414,9807],[9697,9308,8927,8554,8189,7832,7483,7484,7485,7486,7487,7488,7489,7490,7491,7492,7493,7494,7495,7496,7497,7498,7499,7500,7501,7502,7503,7504,7505,7506,7507,7508,7509,7510,7511,7512,7513,7514,7515,7516,7517,7518,7519,7520,7521,7522,7523,7524,7525,7526,7527,7528,7529,7530,7531,7532,7533,7534,7535,7536,7537,7538,7539,7540,7541,7542,7543,7544,7545,7546,7547,7548,7549,7550,7551,7552,7553,7554,7555,7556,7557,7558,7559,7560,7561,7562,7563,7564,7565,7566,7567,7568,7569,7570,7923,8284,8653,9030,9415,9808],[9696,9307,8926,8553,8188,7831,7482,7141,7142,7143,7144,7145,7146,7147,7148,7149,7150,7151,7152,7153,7154,7155,7156,7157,7158,7159,7160,7161,7162,7163,7164,7165,7166,7167,7168,7169,7170,7171,7172,7173,7174,7175,7176,7177,7178,7179,7180,7181,7182,7183,7184,7185,7186,7187,7188,7189,7190,7191,7192,7193,7194,7195,7196,7197,7198,7199,7200,7201,7202,7203,7204,7205,7206,7207,7208,7209,7210,7211,7212,7213,7214,7215,7216,7217,7218,7219,7220,7221,7222,7223,7224,7225,7226,7571,7924,8285,8654,9031,9416,9809],[9695,9306,8925,8552,8187,7830,7481,7140,6807,6808,6809,6810,6811,6812,6813,6814,6815,6816,6817,6818,6819,6820,6821,6822,6823,6824,6825,6826,6827,6828,6829,6830,6831,6832,6833,6834,6835,6836,6837,6838,6839,6840,6841,6842,6843,6844,6845,6846,6847,6848,6849,6850,6851,6852,6853,6854,6855,6856,6857,6858,6859,6860,6861,6862,6863,6864,6865,6866,6867,6868,6869,6870,6871,6872,6873,6874,6875,6876,6877,6878,6879,6880,6881,6882,6883,6884,6885,6886,6887,6888,6889,6890,7227,7572,7925,8286,8655,9032,9417,9810],[9694,9305,8924,8551,8186,7829,7480,7139,6806,6481,6482,6483,6484,6485,6486,6487,6488,6489,6490,6491,6492,6493,6494,6495,6496,6497,6498,6499,6500,6501,6502,6503,6504,6505,6506,6507,6508,6509,6510,6511,6512,6513,6514,6515,6516,6517,6518,6519,6520,6521,6522,6523,6524,6525,6526,6527,6528,6529,6530,6531,6532,6533,6534,6535,6536,6537,6538,6539,6540,6541,6542,6543,6544,6545,6546,6547,6548,6549,6550,6551,6552,6553,6554,6555,6556,6557,6558,6559,6560,6561,6562,6891,7228,7573,7926,8287,8656,9033,9418,9811],[9693,9304,8923,8550,8185,7828,7479,7138,6805,6480,6163,6164,6165,6166,6167,6168,6169,6170,6171,6172,6173,6174,6175,6176,6177,6178,6179,6180,6181,6182,6183,6184,6185,6186,6187,6188,6189,6190,6191,6192,6193,6194,6195,6196,6197,6198,6199,6200,6201,6202,6203,6204,6205,6206,6207,6208,6209,6210,6211,6212,6213,6214,6215,6216,6217,6218,6219,6220,6221,6222,6223,6224,6225,6226,6227,6228,6229,6230,6231,6232,6233,6234,6235,6236,6237,6238,6239,6240,6241,6242,6563,6892,7229,7574,7927,8288,8657,9034,9419,9812],[9692,9303,8922,8549,8184,7827,7478,7137,6804,6479,6162,5853,5854,5855,5856,5857,5858,5859,5860,5861,5862,5863,5864,5865,5866,5867,5868,5869,5870,5871,5872,5873,5874,5875,5876,5877,5878,5879,5880,5881,5882,5883,5884,5885,5886,5887,5888,5889,5890,5891,5892,5893,5894,5895,5896,5897,5898,5899,5900,5901,5902,5903,5904,5905,5906,5907,5908,5909,5910,5911,5912,5913,5914,5915,5916,5917,5918,5919,5920,5921,5922,5923,5924,5925,5926,5927,5928,5929,5930,6243,6564,6893,7230,7575,7928,8289,8658,9035,9420,9813],[9691,9302,8921,8548,8183,7826,7477,7136,6803,6478,6161,5852,5551,5552,5553,5554,5555,5556,5557,5558,5559,5560,5561,5562,5563,5564,5565,5566,5567,5568,5569,5570,5571,5572,5573,5574,5575,5576,5577,5578,5579,5580,5581,5582,5583,5584,5585,5586,5587,5588,5589,5590,5591,5592,5593,5594,5595,5596,5597,5598,5599,5600,5601,5602,5603,5604,5605,5606,5607,5608,5609,5610,5611,5612,5613,5614,5615,5616,5617,5618,5619,5620,5621,5622,5623,5624,5625,5626,5931,6244,6565,6894,7231,7576,7929,8290,8659,9036,9421,9814],[9690,9301,8920,8547,8182,7825,7476,7135,6802,6477,6160,5851,5550,5257,5258,5259,5260,5261,5262,5263,5264,5265,5266,5267,5268,5269,5270,5271,5272,5273,5274,5275,5276,5277,5278,5279,5280,5281,5282,5283,5284,5285,5286,5287,5288,5289,5290,5291,5292,5293,5294,5295,5296,5297,5298,5299,5300,5301,5302,5303,5304,5305,5306,5307,5308,5309,5310,5311,5312,5313,5314,5315,5316,5317,5318,5319,5320,5321,5322,5323,5324,5325,5326,5327,5328,5329,5330,5627,5932,6245,6566,6895,7232,7577,7930,8291,8660,9037,9422,9815],[9689,9300,8919,8546,8181,7824,7475,7134,6801,6476,6159,5850,5549,5256,4971,4972,4973,4974,4975,4976,4977,4978,4979,4980,4981,4982,4983,4984,4985,4986,4987,4988,4989,4990,4991,4992,4993,4994,4995,4996,4997,4998,4999,5000,5001,5002,5003,5004,5005,5006,5007,5008,5009,5010,5011,5012,5013,5014,5015,5016,5017,5018,5019,5020,5021,5022,5023,5024,5025,5026,5027,5028,5029,5030,5031,5032,5033,5034,5035,5036,5037,5038,5039,5040,5041,5042,5331,5628,5933,6246,6567,6896,7233,7578,7931,8292,8661,9038,9423,9816],[9688,9299,8918,8545,8180,7823,7474,7133,6800,6475,6158,5849,5548,5255,4970,4693,4694,4695,4696,4697,4698,4699,4700,4701,4702,4703,4704,4705,4706,4707,4708,4709,4710,4711,4712,4713,4714,4715,4716,4717,4718,4719,4720,4721,4722,4723,4724,4725,4726,4727,4728,4729,4730,4731,4732,4733,4734,4735,4736,4737,4738,4739,4740,4741,4742,4743,4744,4745,4746,4747,4748,4749,4750,4751,4752,4753,4754,4755,4756,4757,4758,4759,4760,4761,4762,5043,5332,5629,5934,6247,6568,6897,7234,7579,7932,8293,8662,9039,9424,9817],[9687,9298,8917,8544,8179,7822,7473,7132,6799,6474,6157,5848,5547,5254,4969,4692,4423,4424,4425,4426,4427,4428,4429,4430,4431,4432,4433,4434,4435,4436,4437,4438,4439,4440,4441,4442,4443,4444,4445,4446,4447,4448,4449,4450,4451,4452,4453,4454,4455,4456,4457,4458,4459,4460,4461,4462,4463,4464,4465,4466,4467,4468,4469,4470,4471,4472,4473,4474,4475,4476,4477,4478,4479,4480,4481,4482,4483,4484,4485,4486,4487,4488,4489,4490,4763,5044,5333,5630,5935,6248,6569,6898,7235,7580,7933,8294,8663,9040,9425,9818],[9686,9297,8916,8543,8178,7821,7472,7131,6798,6473,6156,5847,5546,5253,4968,4691,4422,4161,4162,4163,4164,4165,4166,4167,4168,4169,4170,4171,4172,4173,4174,4175,4176,4177,4178,4179,4180,4181,4182,4183,4184,4185,4186,4187,4188,4189,4190,4191,4192,4193,4194,4195,4196,4197,4198,4199,4200,4201,4202,4203,4204,4205,4206,4207,4208,4209,4210,4211,4212,4213,4214,4215,4216,4217,4218,4219,4220,4221,4222,4223,4224,4225,4226,4491,4764,5045,5334,5631,5936,6249,6570,6899,7236,7581,7934,8295,8664,9041,9426,9819],[9685,9296,8915,8542,8177,7820,7471,7130,6797,6472,6155,5846,5545,5252,4967,4690,4421,4160,3907,3908,3909,3910,3911,3912,3913,3914,3915,3916,3917,3918,3919,3920,3921,3922,3923,3924,3925,3926,3927,3928,3929,3930,3931,3932,3933,3934,3935,3936,3937,3938,3939,3940,3941,3942,3943,3944,3945,3946,3947,3948,3949,3950,3951,3952,3953,3954,3955,3956,3957,3958,3959,3960,3961,3962,3963,3964,3965,3966,3967,3968,3969,3970,4227,4492,4765,5046,5335,5632,5937,6250,6571,6900,7237,7582,7935,8296,8665,9042,9427,9820],[9684,9295,8914,8541,8176,7819,7470,7129,6796,6471,6154,5845,5544,5251,4966,4689,4420,4159,3906,3661,3662,3663,3664,3665,3666,3667,3668,3669,3670,3671,3672,3673,3674,3675,3676,3677,3678,3679,3680,3681,3682,3683,3684,3685,3686,3687,3688,3689,3690,3691,3692,3693,3694,3695,3696,3697,3698,3699,3700,3701,3702,3703,3704,3705,3706,3707,3708,3709,3710,3711,3712,3713,3714,3715,3716,3717,3718,3719,3720,3721,3722,3971,4228,4493,4766,5047,5336,5633,5938,6251,6572,6901,7238,7583,7936,8297,8666,9043,9428,9821],[9683,9294,8913,8540,8175,7818,7469,7128,6795,6470,6153,5844,5543,5250,4965,4688,4419,4158,3905,3660,3423,3424,3425,3426,3427,3428,3429,3430,3431,3432,3433,3434,3435,3436,3437,3438,3439,3440,3441,3442,3443,3444,3445,3446,3447,3448,3449,3450,3451,3452,3453,3454,3455,3456,3457,3458,3459,3460,3461,3462,3463,3464,3465,3466,3467,3468,3469,3470,3471,3472,3473,3474,3475,3476,3477,3478,3479,3480,3481,3482,3723,3972,4229,4494,4767,5048,5337,5634,5939,6252,6573,6902,7239,7584,7937,8298,8667,9044,9429,9822],[9682,9293,8912,8539,8174,7817,7468,7127,6794,6469,6152,5843,5542,5249,4964,4687,4418,4157,3904,3659,3422,3193,3194,3195,3196,3197,3198,3199,3200,3201,3202,3203,3204,3205,3206,3207,3208,3209,3210,3211,3212,3213,3214,3215,3216,3217,3218,3219,3220,3221,3222,3223,3224,3225,3226,3227,3228,3229,3230,3231,3232,3233,3234,3235,3236,3237,3238,3239,3240,3241,3242,3243,3244,3245,3246,3247,3248,3249,3250,3483,3724,3973,4230,4495,4768,5049,5338,5635,5940,6253,6574,6903,7240,7585,7938,8299,8668,9045,9430,9823],[9681,9292,8911,8538,8173,7816,7467,7126,6793,6468,6151,5842,5541,5248,4963,4686,4417,4156,3903,3658,3421,3192,2971,2972,2973,2974,2975,2976,2977,2978,2979,2980,2981,2982,2983,2984,2985,2986,2987,2988,2989,2990,2991,2992,2993,2994,2995,2996,2997,2998,2999,3000,3001,3002,3003,3004,3005,3006,3007,3008,3009,3010,3011,3012,3013,3014,3015,3016,3017,3018,3019,3020,3021,3022,3023,3024,3025,3026,3251,3484,3725,3974,4231,4496,4769,5050,5339,5636,5941,6254,6575,6904,7241,7586,7939,8300,8669,9046,9431,9824],[9680,9291,8910,8537,8172,7815,7466,7125,6792,6467,6150,5841,5540,5247,4962,4685,4416,4155,3902,3657,3420,3191,2970,2757,2758,2759,2760,2761,2762,2763,2764,2765,2766,2767,2768,2769,2770,2771,2772,2773,2774,2775,2776,2777,2778,2779,2780,2781,2782,2783,2784,2785,2786,2787,2788,2789,2790,2791,2792,2793,2794,2795,2796,2797,2798,2799,2800,2801,2802,2803,2804,2805,2806,2807,2808,2809,2810,3027,3252,3485,3726,3975,4232,4497,4770,5051,5340,5637,5942,6255,6576,6905,7242,7587,7940,8301,8670,9047,9432,9825],[9679,9290,8909,8536,8171,7814,7465,7124,6791,6466,6149,5840,5539,5246,4961,4684,4415,4154,3901,3656,3419,3190,2969,2756,2551,2552,2553,2554,2555,2556,2557,2558,2559,2560,2561,2562,2563,2564,2565,2566,2567,2568,2569,2570,2571,2572,2573,2574,2575,2576,2577,2578,2579,2580,2581,2582,2583,2584,2585,2586,2587,2588,2589,2590,2591,2592,2593,2594,2595,2596,2597,2598,2599,2600,2601,2602,2811,3028,3253,3486,3727,3976,4233,4498,4771,5052,5341,5638,5943,6256,6577,6906,7243,7588,7941,8302,8671,9048,9433,9826],[9678,9289,8908,8535,8170,7813,7464,7123,6790,6465,6148,5839,5538,5245,4960,4683,4414,4153,3900,3655,3418,3189,2968,2755,2550,2353,2354,2355,2356,2357,2358,2359,2360,2361,2362,2363,2364,2365,2366,2367,2368,2369,2370,2371,2372,2373,2374,2375,2376,2377,2378,2379,2380,2381,2382,2383,2384,2385,2386,2387,2388,2389,2390,2391,2392,2393,2394,2395,2396,2397,2398,2399,2400,2401,2402,2603,2812,3029,3254,3487,3728,3977,4234,4499,4772,5053,5342,5639,5944,6257,6578,6907,7244,7589,7942,8303,8672,9049,9434,9827],[9677,9288,8907,8534,8169,7812,7463,7122,6789,6464,6147,5838,5537,5244,4959,4682,4413,4152,3899,3654,3417,3188,2967,2754,2549,2352,2163,2164,2165,2166,2167,2168,2169,2170,2171,2172,2173,2174,2175,2176,2177,2178,2179,2180,2181,2182,2183,2184,2185,2186,2187,2188,2189,2190,2191,2192,2193,2194,2195,2196,2197,2198,2199,2200,2201,2202,2203,2204,2205,2206,2207,2208,2209,2210,2403,2604,2813,3030,3255,3488,3729,3978,4235,4500,4773,5054,5343,5640,5945,6258,6579,6908,7245,7590,7943,8304,8673,9050,9435,9828],[9676,9287,8906,8533,8168,7811,7462,7121,6788,6463,6146,5837,5536,5243,4958,4681,4412,4151,3898,3653,3416,3187,2966,2753,2548,2351,2162,1981,1982,1983,1984,1985,1986,1987,1988,1989,1990,1991,1992,1993,1994,1995,1996,1997,1998,1999,2000,2001,2002,2003,2004,2005,2006,2007,2008,2009,2010,2011,2012,2013,2014,2015,2016,2017,2018,2019,2020,2021,2022,2023,2024,2025,2026,2211,2404,2605,2814,3031,3256,3489,3730,3979,4236,4501,4774,5055,5344,5641,5946,6259,6580,6909,7246,7591,7944,8305,8674,9051,9436,9829],[9675,9286,8905,8532,8167,7810,7461,7120,6787,6462,6145,5836,5535,5242,4957,4680,4411,4150,3897,3652,3415,3186,2965,2752,2547,2350,2161,1980,1807,1808,1809,1810,1811,1812,1813,1814,1815,1816,1817,1818,1819,1820,1821,1822,1823,1824,1825,1826,1827,1828,1829,1830,1831,1832,1833,1834,1835,1836,1837,1838,1839,1840,1841,1842,1843,1844,1845,1846,1847,1848,1849,1850,2027,2212,2405,2606,2815,3032,3257,3490,3731,3980,4237,4502,4775,5056,5345,5642,5947,6260,6581,6910,7247,7592,7945,8306,8675,9052,9437,9830],[9674,9285,8904,8531,8166,7809,7460,7119,6786,6461,6144,5835,5534,5241,4956,4679,4410,4149,3896,3651,3414,3185,2964,2751,2546,2349,2160,1979,1806,1641,1642,1643,1644,1645,1646,1647,1648,1649,1650,1651,1652,1653,1654,1655,1656,1657,1658,1659,1660,1661,1662,1663,1664,1665,1666,1667,1668,1669,1670,1671,1672,1673,1674,1675,1676,1677,1678,1679,1680,1681,1682,1851,2028,2213,2406,2607,2816,3033,3258,3491,3732,3981,4238,4503,4776,5057,5346,5643,5948,6261,6582,6911,7248,7593,7946,8307,8676,9053,9438,9831],[9673,9284,8903,8530,8165,7808,7459,7118,6785,6460,6143,5834,5533,5240,4955,4678,4409,4148,3895,3650,3413,3184,2963,2750,2545,2348,2159,1978,1805,1640,1483,1484,1485,1486,1487,1488,1489,1490,1491,1492,1493,1494,1495,1496,1497,1498,1499,1500,1501,1502,1503,1504,1505,1506,1507,1508,1509,1510,1511,1512,1513,1514,1515,1516,1517,1518,1519,1520,1521,1522,1683,1852,2029,2214,2407,2608,2817,3034,3259,3492,3733,3982,4239,4504,4777,5058,5347,5644,5949,6262,6583,6912,7249,7594,7947,8308,8677,9054,9439,9832],[9672,9283,8902,8529,8164,7807,7458,7117,6784,6459,6142,5833,5532,5239,4954,4677,4408,4147,3894,3649,3412,3183,2962,2749,2544,2347,2158,1977,1804,1639,1482,1333,1334,1335,1336,1337,1338,1339,1340,1341,1342,1343,1344,1345,1346,1347,1348,1349,1350,1351,1352,1353,1354,1355,1356,1357,1358,1359,1360,1361,1362,1363,1364,1365,1366,1367,1368,1369,1370,1523,1684,1853,2030,2215,2408,2609,2818,3035,3260,3493,3734,3983,4240,4505,4778,5059,5348,5645,5950,6263,6584,6913,7250,7595,7948,8309,8678,9055,9440,9833],[9671,9282,8901,8528,8163,7806,7457,7116,6783,6458,6141,5832,5531,5238,4953,4676,4407,4146,3893,3648,3411,3182,2961,2748,2543,2346,2157,1976,1803,1638,1481,1332,1191,1192,1193,1194,1195,1196,1197,1198,1199,1200,1201,1202,1203,1204,1205,1206,1207,1208,1209,1210,1211,1212,1213,1214,1215,1216,1217,1218,1219,1220,1221,1222,1223,1224,1225,1226,1371,1524,1685,1854,2031,2216,2409,2610,2819,3036,3261,3494,3735,3984,4241,4506,4779,5060,5349,5646,5951,6264,6585,6914,7251,7596,7949,8310,8679,9056,9441,9834],[9670,9281,8900,8527,8162,7805,7456,7115,6782,6457,6140,5831,5530,5237,4952,4675,4406,4145,3892,3647,3410,3181,2960,2747,2542,2345,2156,1975,1802,1637,1480,1331,1190,1057,1058,1059,1060,1061,1062,1063,1064,1065,1066,1067,1068,1069,1070,1071,1072,1073,1074,1075,1076,1077,1078,1079,1080,1081,1082,1083,1084,1085,1086,1087,1088,1089,1090,1227,1372,1525,1686,1855,2032,2217,2410,2611,2820,3037,3262,3495,3736,3985,4242,4507,4780,5061,5350,5647,5952,6265,6586,6915,7252,7597,7950,8311,8680,9057,9442,9835],[9669,9280,8899,8526,8161,7804,7455,7114,6781,6456,6139,5830,5529,5236,4951,4674,4405,4144,3891,3646,3409,3180,2959,2746,2541,2344,2155,1974,1801,1636,1479,1330,1189,1056,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,1091,1228,1373,1526,1687,1856,2033,2218,2411,2612,2821,3038,3263,3496,3737,3986,4243,4508,4781,5062,5351,5648,5953,6266,6587,6916,7253,7598,7951,8312,8681,9058,9443,9836],[9668,9279,8898,8525,8160,7803,7454,7113,6780,6455,6138,5829,5528,5235,4950,4673,4404,4143,3890,3645,3408,3179,2958,2745,2540,2343,2154,1973,1800,1635,1478,1329,1188,1055,930,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,963,1092,1229,1374,1527,1688,1857,2034,2219,2412,2613,2822,3039,3264,3497,3738,3987,4244,4509,4782,5063,5352,5649,5954,6267,6588,6917,7254,7599,7952,8313,8682,9059,9444,9837],[9667,9278,8897,8524,8159,7802,7453,7112,6779,6454,6137,5828,5527,5234,4949,4672,4403,4142,3889,3644,3407,3178,2957,2744,2539,2342,2153,1972,1799,1634,1477,1328,1187,1054,929,812,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,843,964,1093,1230,1375,1528,1689,1858,2035,2220,2413,2614,2823,3040,3265,3498,3739,3988,4245,4510,4783,5064,5353,5650,5955,6268,6589,6918,7255,7600,7953,8314,8683,9060,9445,9838],[9666,9277,8896,8523,8158,7801,7452,7111,6778,6453,6136,5827,5526,5233,4948,4671,4402,4141,3888,3643,3406,3177,2956,2743,2538,2341,2152,1971,1798,1633,1476,1327,1186,1053,928,811,702,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,731,844,965,1094,1231,1376,1529,1690,1859,2036,2221,2414,2615,2824,3041,3266,3499,3740,3989,4246,4511,4784,5065,5354,5651,5956,6269,6590,6919,7256,7601,7954,8315,8684,9061,9446,9839],[9665,9276,8895,8522,8157,7800,7451,7110,6777,6452,6135,5826,5525,5232,4947,4670,4401,4140,3887,3642,3405,3176,2955,2742,2537,2340,2151,1970,1797,1632,1475,1326,1185,1052,927,810,701,600,507,508,509,510,511,512,513,514,515,516,517,518,519,520,521,522,523,524,525,526,527,528,529,530,627,732,845,966,1095,1232,1377,1530,1691,1860,2037,2222,2415,2616,2825,3042,3267,3500,3741,3990,4247,4512,4785,5066,5355,5652,5957,6270,6591,6920,7257,7602,7955,8316,8685,9062,9447,9840],[9664,9275,8894,8521,8156,7799,7450,7109,6776,6451,6134,5825,5524,5231,4946,4669,4400,4139,3886,3641,3404,3175,2954,2741,2536,2339,2150,1969,1796,1631,1474,1325,1184,1051,926,809,700,599,506,421,422,423,424,425,426,427,428,429,430,431,432,433,434,435,436,437,438,439,440,441,442,531,628,733,846,967,1096,1233,1378,1531,1692,1861,2038,2223,2416,2617,2826,3043,3268,3501,3742,3991,4248,4513,4786,5067,5356,5653,5958,6271,6592,6921,7258,7603,7956,8317,8686,9063,9448,9841],[9663,9274,8893,8520,8155,7798,7449,7108,6775,6450,6133,5824,5523,5230,4945,4668,4399,4138,3885,3640,3403,3174,2953,2740,2535,2338,2149,1968,1795,1630,1473,1324,1183,1050,925,808,699,598,505,420,343,344,345,346,347,348,349,350,351,352,353,354,355,356,357,358,359,360,361,362,443,532,629,734,847,968,1097,1234,1379,1532,1693,1862,2039,2224,2417,2618,2827,3044,3269,3502,3743,3992,4249,4514,4787,5068,5357,5654,5959,6272,6593,6922,7259,7604,7957,8318,8687,9064,9449,9842],[9662,9273,8892,8519,8154,7797,7448,7107,6774,6449,6132,5823,5522,5229,4944,4667,4398,4137,3884,3639,3402,3173,2952,2739,2534,2337,2148,1967,1794,1629,1472,1323,1182,1049,924,807,698,597,504,419,342,273,274,275,276,277,278,279,280,281,282,283,284,285,286,287,288,289,290,363,444,533,630,735,848,969,1098,1235,1380,1533,1694,1863,2040,2225,2418,2619,2828,3045,3270,3503,3744,3993,4250,4515,4788,5069,5358,5655,5960,6273,6594,6923,7260,7605,7958,8319,8688,9065,9450,9843],[9661,9272,8891,8518,8153,7796,7447,7106,6773,6448,6131,5822,5521,5228,4943,4666,4397,4136,3883,3638,3401,3172,2951,2738,2533,2336,2147,1966,1793,1628,1471,1322,1181,1048,923,806,697,596,503,418,341,272,211,212,213,214,215,216,217,218,219,220,221,222,223,224,225,226,291,364,445,534,631,736,849,970,1099,1236,1381,1534,1695,1864,2041,2226,2419,2620,2829,3046,3271,3504,3745,3994,4251,4516,4789,5070,5359,5656,5961,6274,6595,6924,7261,7606,7959,8320,8689,9066,9451,9844],[9660,9271,8890,8517,8152,7795,7446,7105,6772,6447,6130,5821,5520,5227,4942,4665,4396,4135,3882,3637,3400,3171,2950,2737,2532,2335,2146,1965,1792,1627,1470,1321,1180,1047,922,805,696,595,502,417,340,271,210,157,158,159,160,161,162,163,164,165,166,167,168,169,170,227,292,365,446,535,632,737,850,971,1100,1237,1382,1535,1696,1865,2042,2227,2420,2621,2830,3047,3272,3505,3746,3995,4252,4517,4790,5071,5360,5657,5962,6275,6596,6925,7262,7607,7960,8321,8690,9067,9452,9845],[9659,9270,8889,8516,8151,7794,7445,7104,6771,6446,6129,5820,5519,5226,4941,4664,4395,4134,3881,3636,3399,3170,2949,2736,2531,2334,2145,1964,1791,1626,1469,1320,1179,1046,921,804,695,594,501,416,339,270,209,156,111,112,113,114,115,116,117,118,119,120,121,122,171,228,293,366,447,536,633,738,851,972,1101,1238,1383,1536,1697,1866,2043,2228,2421,2622,2831,3048,3273,3506,3747,3996,4253,4518,4791,5072,5361,5658,5963,6276,6597,6926,7263,7608,7961,8322,8691,9068,9453,9846],[9658,9269,8888,8515,8150,7793,7444,7103,6770,6445,6128,5819,5518,5225,4940,4663,4394,4133,3880,3635,3398,3169,2948,2735,2530,2333,2144,1963,1790,1625,1468,1319,1178,1045,920,803,694,593,500,415,338,269,208,155,110,73,74,75,76,77,78,79,80,81,82,123,172,229,294,367,448,537,634,739,852,973,1102,1239,1384,1537,1698,1867,2044,2229,2422,2623,2832,3049,3274,3507,3748,3997,4254,4519,4792,5073,5362,5659,5964,6277,6598,6927,7264,7609,7962,8323,8692,9069,9454,9847],[9657,9268,8887,8514,8149,7792,7443,7102,6769,6444,6127,5818,5517,5224,4939,4662,4393,4132,3879,3634,3397,3168,2947,2734,2529,2332,2143,1962,1789,1624,1467,1318,1177,1044,919,802,693,592,499,414,337,268,207,154,109,72,43,44,45,46,47,48,49,50,83,124,173,230,295,368,449,538,635,740,853,974,1103,1240,1385,1538,1699,1868,2045,2230,2423,2624,2833,3050,3275,3508,3749,3998,4255,4520,4793,5074,5363,5660,5965,6278,6599,6928,7265,7610,7963,8324,8693,9070,9455,9848],[9656,9267,8886,8513,8148,7791,7442,7101,6768,6443,6126,5817,5516,5223,4938,4661,4392,4131,3878,3633,3396,3167,2946,2733,2528,2331,2142,1961,1788,1623,1466,1317,1176,1043,918,801,692,591,498,413,336,267,206,153,108,71,42,21,22,23,24,25,26,51,84,125,174,231,296,369,450,539,636,741,854,975,1104,1241,1386,1539,1700,1869,2046,2231,2424,2625,2834,3051,3276,3509,3750,3999,4256,4521,4794,5075,5364,5661,5966,6279,6600,6929,7266,7611,7964,8325,8694,9071,9456,9849],[9655,9266,8885,8512,8147,7790,7441,7100,6767,6442,6125,5816,5515,5222,4937,4660,4391,4130,3877,3632,3395,3166,2945,2732,2527,2330,2141,1960,1787,1622,1465,1316,1175,1042,917,800,691,590,497,412,335,266,205,152,107,70,41,20,7,8,9,10,27,52,85,126,175,232,297,370,451,540,637,742,855,976,1105,1242,1387,1540,1701,1870,2047,2232,2425,2626,2835,3052,3277,3510,3751,4000,4257,4522,4795,5076,5365,5662,5967,6280,6601,6930,7267,7612,7965,8326,8695,9072,9457,9850],[9654,9265,8884,8511,8146,7789,7440,7099,6766,6441,6124,5815,5514,5221,4936,4659,4390,4129,3876,3631,3394,3165,2944,2731,2526,2329,2140,1959,1786,1621,1464,1315,1174,1041,916,799,690,589,496,411,334,265,204,151,106,69,40,19,6,1,2,11,28,53,86,127,176,233,298,371,452,541,638,743,856,977,1106,1243,1388,1541,1702,1871,2048,2233,2426,2627,2836,3053,3278,3511,3752,4001,4258,4523,4796,5077,5366,5663,5968,6281,6602,6931,7268,7613,7966,8327,8696,9073,9458,9851],[9653,9264,8883,8510,8145,7788,7439,7098,6765,6440,6123,5814,5513,5220,4935,4658,4389,4128,3875,3630,3393,3164,2943,2730,2525,2328,2139,1958,1785,1620,1463,1314,1173,1040,915,798,689,588,495,410,333,264,203,150,105,68,39,18,5,4,3,12,29,54,87,128,177,234,299,372,453,542,639,744,857,978,1107,1244,1389,1542,1703,1872,2049,2234,2427,2628,2837,3054,3279,3512,3753,4002,4259,4524,4797,5078,5367,5664,5969,6282,6603,6932,7269,7614,7967,8328,8697,9074,9459,9852],[9652,9263,8882,8509,8144,7787,7438,7097,6764,6439,6122,5813,5512,5219,4934,4657,4388,4127,3874,3629,3392,3163,2942,2729,2524,2327,2138,1957,1784,1619,1462,1313,1172,1039,914,797,688,587,494,409,332,263,202,149,104,67,38,17,16,15,14,13,30,55,88,129,178,235,300,373,454,543,640,745,858,979,1108,1245,1390,1543,1704,1873,2050,2235,2428,2629,2838,3055,3280,3513,3754,4003,4260,4525,4798,5079,5368,5665,5970,6283,6604,6933,7270,7615,7968,8329,8698,9075,9460,9853],[9651,9262,8881,8508,8143,7786,7437,7096,6763,6438,6121,5812,5511,5218,4933,4656,4387,4126,3873,3628,3391,3162,2941,2728,2523,2326,2137,1956,1783,1618,1461,1312,1171,1038,913,796,687,586,493,408,331,262,201,148,103,66,37,36,35,34,33,32,31,56,89,130,179,236,301,374,455,544,641,746,859,980,1109,1246,1391,1544,1705,1874,2051,2236,2429,2630,2839,3056,3281,3514,3755,4004,4261,4526,4799,5080,5369,5666,5971,6284,6605,6934,7271,7616,7969,8330,8699,9076,9461,9854],[9650,9261,8880,8507,8142,7785,7436,7095,6762,6437,6120,5811,5510,5217,4932,4655,4386,4125,3872,3627,3390,3161,2940,2727,2522,2325,2136,1955,1782,1617,1460,1311,1170,1037,912,795,686,585,492,407,330,261,200,147,102,65,64,63,62,61,60,59,58,57,90,131,180,237,302,375,456,545,642,747,860,981,1110,1247,1392,1545,1706,1875,2052,2237,2430,2631,2840,3057,3282,3515,3756,4005,4262,4527,4800,5081,5370,5667,5972,6285,6606,6935,7272,7617,7970,8331,8700,9077,9462,9855],[9649,9260,8879,8506,8141,7784,7435,7094,6761,6436,6119,5810,5509,5216,4931,4654,4385,4124,3871,3626,3389,3160,2939,2726,2521,2324,2135,1954,1781,1616,1459,1310,1169,1036,911,794,685,584,491,406,329,260,199,146,101,100,99,98,97,96,95,94,93,92,91,132,181,238,303,376,457,546,643,748,861,982,1111,1248,1393,1546,1707,1876,2053,2238,2431,2632,2841,3058,3283,3516,3757,4006,4263,4528,4801,5082,5371,5668,5973,6286,6607,6936,7273,7618,7971,8332,8701,9078,9463,9856],[9648,9259,8878,8505,8140,7783,7434,7093,6760,6435,6118,5809,5508,5215,4930,4653,4384,4123,3870,3625,3388,3159,2938,2725,2520,2323,2134,1953,1780,1615,1458,1309,1168,1035,910,793,684,583,490,405,328,259,198,145,144,143,142,141,140,139,138,137,136,135,134,133,182,239,304,377,458,547,644,749,862,983,1112,1249,1394,1547,1708,1877,2054,2239,2432,2633,2842,3059,3284,3517,3758,4007,4264,4529,4802,5083,5372,5669,5974,6287,6608,6937,7274,7619,7972,8333,8702,9079,9464,9857],[9647,9258,8877,8504,8139,7782,7433,7092,6759,6434,6117,5808,5507,5214,4929,4652,4383,4122,3869,3624,3387,3158,2937,2724,2519,2322,2133,1952,1779,1614,1457,1308,1167,1034,909,792,683,582,489,404,327,258,197,196,195,194,193,192,191,190,189,188,187,186,185,184,183,240,305,378,459,548,645,750,863,984,1113,1250,1395,1548,1709,1878,2055,2240,2433,2634,2843,3060,3285,3518,3759,4008,4265,4530,4803,5084,5373,5670,5975,6288,6609,6938,7275,7620,7973,8334,8703,9080,9465,9858],[9646,9257,8876,8503,8138,7781,7432,7091,6758,6433,6116,5807,5506,5213,4928,4651,4382,4121,3868,3623,3386,3157,2936,2723,2518,2321,2132,1951,1778,1613,1456,1307,1166,1033,908,791,682,581,488,403,326,257,256,255,254,253,252,251,250,249,248,247,246,245,244,243,242,241,306,379,460,549,646,751,864,985,1114,1251,1396,1549,1710,1879,2056,2241,2434,2635,2844,3061,3286,3519,3760,4009,4266,4531,4804,5085,5374,5671,5976,6289,6610,6939,7276,7621,7974,8335,8704,9081,9466,9859],[9645,9256,8875,8502,8137,7780,7431,7090,6757,6432,6115,5806,5505,5212,4927,4650,4381,4120,3867,3622,3385,3156,2935,2722,2517,2320,2131,1950,1777,1612,1455,1306,1165,1032,907,790,681,580,487,402,325,324,323,322,321,320,319,318,317,316,315,314,313,312,311,310,309,308,307,380,461,550,647,752,865,986,1115,1252,1397,1550,1711,1880,2057,2242,2435,2636,2845,3062,3287,3520,3761,4010,4267,4532,4805,5086,5375,5672,5977,6290,6611,6940,7277,7622,7975,8336,8705,9082,9467,9860],[9644,9255,8874,8501,8136,7779,7430,7089,6756,6431,6114,5805,5504,5211,4926,4649,4380,4119,3866,3621,3384,3155,2934,2721,2516,2319,2130,1949,1776,1611,1454,1305,1164,1031,906,789,680,579,486,401,400,399,398,397,396,395,394,393,392,391,390,389,388,387,386,385,384,383,382,381,462,551,648,753,866,987,1116,1253,1398,1551,1712,1881,2058,2243,2436,2637,2846,3063,3288,3521,3762,4011,4268,4533,4806,5087,5376,5673,5978,6291,6612,6941,7278,7623,7976,8337,8706,9083,9468,9861],[9643,9254,8873,8500,8135,7778,7429,7088,6755,6430,6113,5804,5503,5210,4925,4648,4379,4118,3865,3620,3383,3154,2933,2720,2515,2318,2129,1948,1775,1610,1453,1304,1163,1030,905,788,679,578,485,484,483,482,481,480,479,478,477,476,475,474,473,472,471,470,469,468,467,466,465,464,463,552,649,754,867,988,1117,1254,1399,1552,1713,1882,2059,2244,2437,2638,2847,3064,3289,3522,3763,4012,4269,4534,4807,5088,5377,5674,5979,6292,6613,6942,7279,7624,7977,8338,8707,9084,9469,9862],[9642,9253,8872,8499,8134,7777,7428,7087,6754,6429,6112,5803,5502,5209,4924,4647,4378,4117,3864,3619,3382,3153,2932,2719,2514,2317,2128,1947,1774,1609,1452,1303,1162,1029,904,787,678,577,576,575,574,573,572,571,570,569,568,567,566,565,564,563,562,561,560,559,558,557,556,555,554,553,650,755,868,989,1118,1255,1400,1553,1714,1883,2060,2245,2438,2639,2848,3065,3290,3523,3764,4013,4270,4535,4808,5089,5378,5675,5980,6293,6614,6943,7280,7625,7978,8339,8708,9085,9470,9863],[9641,9252,8871,8498,8133,7776,7427,7086,6753,6428,6111,5802,5501,5208,4923,4646,4377,4116,3863,3618,3381,3152,2931,2718,2513,2316,2127,1946,1773,1608,1451,1302,1161,1028,903,786,677,676,675,674,673,672,671,670,669,668,667,666,665,664,663,662,661,660,659,658,657,656,655,654,653,652,651,756,869,990,1119,1256,1401,1554,1715,1884,2061,2246,2439,2640,2849,3066,3291,3524,3765,4014,4271,4536,4809,5090,5379,5676,5981,6294,6615,6944,7281,7626,7979,8340,8709,9086,9471,9864],[9640,9251,8870,8497,8132,7775,7426,7085,6752,6427,6110,5801,5500,5207,4922,4645,4376,4115,3862,3617,3380,3151,2930,2717,2512,2315,2126,1945,1772,1607,1450,1301,1160,1027,902,785,784,783,782,781,780,779,778,777,776,775,774,773,772,771,770,769,768,767,766,765,764,763,762,761,760,759,758,757,870,991,1120,1257,1402,1555,1716,1885,2062,2247,2440,2641,2850,3067,3292,3525,3766,4015,4272,4537,4810,5091,5380,5677,5982,6295,6616,6945,7282,7627,7980,8341,8710,9087,9472,9865],[9639,9250,8869,8496,8131,7774,7425,7084,6751,6426,6109,5800,5499,5206,4921,4644,4375,4114,3861,3616,3379,3150,2929,2716,2511,2314,2125,1944,1771,1606,1449,1300,1159,1026,901,900,899,898,897,896,895,894,893,892,891,890,889,888,887,886,885,884,883,882,881,880,879,878,877,876,875,874,873,872,871,992,1121,1258,1403,1556,1717,1886,2063,2248,2441,2642,2851,3068,3293,3526,3767,4016,4273,4538,4811,5092,5381,5678,5983,6296,6617,6946,7283,7628,7981,8342,8711,9088,9473,9866],[9638,9249,8868,8495,8130,7773,7424,7083,6750,6425,6108,5799,5498,5205,4920,4643,4374,4113,3860,3615,3378,3149,2928,2715,2510,2313,2124,1943,1770,1605,1448,1299,1158,1025,1024,1023,1022,1021,1020,1019,1018,1017,1016,1015,1014,1013,1012,1011,1010,1009,1008,1007,1006,1005,1004,1003,1002,1001,1000,999,998,997,996,995,994,993,1122,1259,1404,1557,1718,1887,2064,2249,2442,2643,2852,3069,3294,3527,3768,4017,4274,4539,4812,5093,5382,5679,5984,6297,6618,6947,7284,7629,7982,8343,8712,9089,9474,9867],[9637,9248,8867,8494,8129,7772,7423,7082,6749,6424,6107,5798,5497,5204,4919,4642,4373,4112,3859,3614,3377,3148,2927,2714,2509,2312,2123,1942,1769,1604,1447,1298,1157,1156,1155,1154,1153,1152,1151,1150,1149,1148,1147,1146,1145,1144,1143,1142,1141,1140,1139,1138,1137,1136,1135,1134,1133,1132,1131,1130,1129,1128,1127,1126,1125,1124,1123,1260,1405,1558,1719,1888,2065,2250,2443,2644,2853,3070,3295,3528,3769,4018,4275,4540,4813,5094,5383,5680,5985,6298,6619,6948,7285,7630,7983,8344,8713,9090,9475,9868],[9636,9247,8866,8493,8128,7771,7422,7081,6748,6423,6106,5797,5496,5203,4918,4641,4372,4111,3858,3613,3376,3147,2926,2713,2508,2311,2122,1941,1768,1603,1446,1297,1296,1295,1294,1293,1292,1291,1290,1289,1288,1287,1286,1285,1284,1283,1282,1281,1280,1279,1278,1277,1276,1275,1274,1273,1272,1271,1270,1269,1268,1267,1266,1265,1264,1263,1262,1261,1406,1559,1720,1889,2066,2251,2444,2645,2854,3071,3296,3529,3770,4019,4276,4541,4814,5095,5384,5681,5986,6299,6620,6949,7286,7631,7984,8345,8714,9091,9476,9869],[9635,9246,8865,8492,8127,7770,7421,7080,6747,6422,6105,5796,5495,5202,4917,4640,4371,4110,3857,3612,3375,3146,2925,2712,2507,2310,2121,1940,1767,1602,1445,1444,1443,1442,1441,1440,1439,1438,1437,1436,1435,1434,1433,1432,1431,1430,1429,1428,1427,1426,1425,1424,1423,1422,1421,1420,1419,1418,1417,1416,1415,1414,1413,1412,1411,1410,1409,1408,1407,1560,1721,1890,2067,2252,2445,2646,2855,3072,3297,3530,3771,4020,4277,4542,4815,5096,5385,5682,5987,6300,6621,6950,7287,7632,7985,8346,8715,9092,9477,9870],[9634,9245,8864,8491,8126,7769,7420,7079,6746,6421,6104,5795,5494,5201,4916,4639,4370,4109,3856,3611,3374,3145,2924,2711,2506,2309,2120,1939,1766,1601,1600,1599,1598,1597,1596,1595,1594,1593,1592,1591,1590,1589,1588,1587,1586,1585,1584,1583,1582,1581,1580,1579,1578,1577,1576,1575,1574,1573,1572,1571,1570,1569,1568,1567,1566,1565,1564,1563,1562,1561,1722,1891,2068,2253,2446,2647,2856,3073,3298,3531,3772,4021,4278,4543,4816,5097,5386,5683,5988,6301,6622,6951,7288,7633,7986,8347,8716,9093,9478,9871],[9633,9244,8863,8490,8125,7768,7419,7078,6745,6420,6103,5794,5493,5200,4915,4638,4369,4108,3855,3610,3373,3144,2923,2710,2505,2308,2119,1938,1765,1764,1763,1762,1761,1760,1759,1758,1757,1756,1755,1754,1753,1752,1751,1750,1749,1748,1747,1746,1745,1744,1743,1742,1741,1740,1739,1738,1737,1736,1735,1734,1733,1732,1731,1730,1729,1728,1727,1726,1725,1724,1723,1892,2069,2254,2447,2648,2857,3074,3299,3532,3773,4022,4279,4544,4817,5098,5387,5684,5989,6302,6623,6952,7289,7634,7987,8348,8717,9094,9479,9872],[9632,9243,8862,8489,8124,7767,7418,7077,6744,6419,6102,5793,5492,5199,4914,4637,4368,4107,3854,3609,3372,3143,2922,2709,2504,2307,2118,1937,1936,1935,1934,1933,1932,1931,1930,1929,1928,1927,1926,1925,1924,1923,1922,1921,1920,1919,1918,1917,1916,1915,1914,1913,1912,1911,1910,1909,1908,1907,1906,1905,1904,1903,1902,1901,1900,1899,1898,1897,1896,1895,1894,1893,2070,2255,2448,2649,2858,3075,3300,3533,3774,4023,4280,4545,4818,5099,5388,5685,5990,6303,6624,6953,7290,7635,7988,8349,8718,9095,9480,9873],[9631,9242,8861,8488,8123,7766,7417,7076,6743,6418,6101,5792,5491,5198,4913,4636,4367,4106,3853,3608,3371,3142,2921,2708,2503,2306,2117,2116,2115,2114,2113,2112,2111,2110,2109,2108,2107,2106,2105,2104,2103,2102,2101,2100,2099,2098,2097,2096,2095,2094,2093,2092,2091,2090,2089,2088,2087,2086,2085,2084,2083,2082,2081,2080,2079,2078,2077,2076,2075,2074,2073,2072,2071,2256,2449,2650,2859,3076,3301,3534,3775,4024,4281,4546,4819,5100,5389,5686,5991,6304,6625,6954,7291,7636,7989,8350,8719,9096,9481,9874],[9630,9241,8860,8487,8122,7765,7416,7075,6742,6417,6100,5791,5490,5197,4912,4635,4366,4105,3852,3607,3370,3141,2920,2707,2502,2305,2304,2303,2302,2301,2300,2299,2298,2297,2296,2295,2294,2293,2292,2291,2290,2289,2288,2287,2286,2285,2284,2283,2282,2281,2280,2279,2278,2277,2276,2275,2274,2273,2272,2271,2270,2269,2268,2267,2266,2265,2264,2263,2262,2261,2260,2259,2258,2257,2450,2651,2860,3077,3302,3535,3776,4025,4282,4547,4820,5101,5390,5687,5992,6305,6626,6955,7292,7637,7990,8351,8720,9097,9482,9875],[9629,9240,8859,8486,8121,7764,7415,7074,6741,6416,6099,5790,5489,5196,4911,4634,4365,4104,3851,3606,3369,3140,2919,2706,2501,2500,2499,2498,2497,2496,2495,2494,2493,2492,2491,2490,2489,2488,2487,2486,2485,2484,2483,2482,2481,2480,2479,2478,2477,2476,2475,2474,2473,2472,2471,2470,2469,2468,2467,2466,2465,2464,2463,2462,2461,2460,2459,2458,2457,2456,2455,2454,2453,2452,2451,2652,2861,3078,3303,3536,3777,4026,4283,4548,4821,5102,5391,5688,5993,6306,6627,6956,7293,7638,7991,8352,8721,9098,9483,9876],[9628,9239,8858,8485,8120,7763,7414,7073,6740,6415,6098,5789,5488,5195,4910,4633,4364,4103,3850,3605,3368,3139,2918,2705,2704,2703,2702,2701,2700,2699,2698,2697,2696,2695,2694,2693,2692,2691,2690,2689,2688,2687,2686,2685,2684,2683,2682,2681,2680,2679,2678,2677,2676,2675,2674,2673,2672,2671,2670,2669,2668,2667,2666,2665,2664,2663,2662,2661,2660,2659,2658,2657,2656,2655,2654,2653,2862,3079,3304,3537,3778,4027,4284,4549,4822,5103,5392,5689,5994,6307,6628,6957,7294,7639,7992,8353,8722,9099,9484,9877],[9627,9238,8857,8484,8119,7762,7413,7072,6739,6414,6097,5788,5487,5194,4909,4632,4363,4102,3849,3604,3367,3138,2917,2916,2915,2914,2913,2912,2911,2910,2909,2908,2907,2906,2905,2904,2903,2902,2901,2900,2899,2898,2897,2896,2895,2894,2893,2892,2891,2890,2889,2888,2887,2886,2885,2884,2883,2882,2881,2880,2879,2878,2877,2876,2875,2874,2873,2872,2871,2870,2869,2868,2867,2866,2865,2864,2863,3080,3305,3538,3779,4028,4285,4550,4823,5104,5393,5690,5995,6308,6629,6958,7295,7640,7993,8354,8723,9100,9485,9878],[9626,9237,8856,8483,8118,7761,7412,7071,6738,6413,6096,5787,5486,5193,4908,4631,4362,4101,3848,3603,3366,3137,3136,3135,3134,3133,3132,3131,3130,3129,3128,3127,3126,3125,3124,3123,3122,3121,3120,3119,3118,3117,3116,3115,3114,3113,3112,3111,3110,3109,3108,3107,3106,3105,3104,3103,3102,3101,3100,3099,3098,3097,3096,3095,3094,3093,3092,3091,3090,3089,3088,3087,3086,3085,3084,3083,3082,3081,3306,3539,3780,4029,4286,4551,4824,5105,5394,5691,5996,6309,6630,6959,7296,7641,7994,8355,8724,9101,9486,9879],[9625,9236,8855,8482,8117,7760,7411,7070,6737,6412,6095,5786,5485,5192,4907,4630,4361,4100,3847,3602,3365,3364,3363,3362,3361,3360,3359,3358,3357,3356,3355,3354,3353,3352,3351,3350,3349,3348,3347,3346,3345,3344,3343,3342,3341,3340,3339,3338,3337,3336,3335,3334,3333,3332,3331,3330,3329,3328,3327,3326,3325,3324,3323,3322,3321,3320,3319,3318,3317,3316,3315,3314,3313,3312,3311,3310,3309,3308,3307,3540,3781,4030,4287,4552,4825,5106,5395,5692,5997,6310,6631,6960,7297,7642,7995,8356,8725,9102,9487,9880],[9624,9235,8854,8481,8116,7759,7410,7069,6736,6411,6094,5785,5484,5191,4906,4629,4360,4099,3846,3601,3600,3599,3598,3597,3596,3595,3594,3593,3592,3591,3590,3589,3588,3587,3586,3585,3584,3583,3582,3581,3580,3579,3578,3577,3576,3575,3574,3573,3572,3571,3570,3569,3568,3567,3566,3565,3564,3563,3562,3561,3560,3559,3558,3557,3556,3555,3554,3553,3552,3551,3550,3549,3548,3547,3546,3545,3544,3543,3542,3541,3782,4031,4288,4553,4826,5107,5396,5693,5998,6311,6632,6961,7298,7643,7996,8357,8726,9103,9488,9881],[9623,9234,8853,8480,8115,7758,7409,7068,6735,6410,6093,5784,5483,5190,4905,4628,4359,4098,3845,3844,3843,3842,3841,3840,3839,3838,3837,3836,3835,3834,3833,3832,3831,3830,3829,3828,3827,3826,3825,3824,3823,3822,3821,3820,3819,3818,3817,3816,3815,3814,3813,3812,3811,3810,3809,3808,3807,3806,3805,3804,3803,3802,3801,3800,3799,3798,3797,3796,3795,3794,3793,3792,3791,3790,3789,3788,3787,3786,3785,3784,3783,4032,4289,4554,4827,5108,5397,5694,5999,6312,6633,6962,7299,7644,7997,8358,8727,9104,9489,9882],[9622,9233,8852,8479,8114,7757,7408,7067,6734,6409,6092,5783,5482,5189,4904,4627,4358,4097,4096,4095,4094,4093,4092,4091,4090,4089,4088,4087,4086,4085,4084,4083,4082,4081,4080,4079,4078,4077,4076,4075,4074,4073,4072,4071,4070,4069,4068,4067,4066,4065,4064,4063,4062,4061,4060,4059,4058,4057,4056,4055,4054,4053,4052,4051,4050,4049,4048,4047,4046,4045,4044,4043,4042,4041,4040,4039,4038,4037,4036,4035,4034,4033,4290,4555,4828,5109,5398,5695,6000,6313,6634,6963,7300,7645,7998,8359,8728,9105,9490,9883],[9621,9232,8851,8478,8113,7756,7407,7066,6733,6408,6091,5782,5481,5188,4903,4626,4357,4356,4355,4354,4353,4352,4351,4350,4349,4348,4347,4346,4345,4344,4343,4342,4341,4340,4339,4338,4337,4336,4335,4334,4333,4332,4331,4330,4329,4328,4327,4326,4325,4324,4323,4322,4321,4320,4319,4318,4317,4316,4315,4314,4313,4312,4311,4310,4309,4308,4307,4306,4305,4304,4303,4302,4301,4300,4299,4298,4297,4296,4295,4294,4293,4292,4291,4556,4829,5110,5399,5696,6001,6314,6635,6964,7301,7646,7999,8360,8729,9106,9491,9884],[9620,9231,8850,8477,8112,7755,7406,7065,6732,6407,6090,5781,5480,5187,4902,4625,4624,4623,4622,4621,4620,4619,4618,4617,4616,4615,4614,4613,4612,4611,4610,4609,4608,4607,4606,4605,4604,4603,4602,4601,4600,4599,4598,4597,4596,4595,4594,4593,4592,4591,4590,4589,4588,4587,4586,4585,4584,4583,4582,4581,4580,4579,4578,4577,4576,4575,4574,4573,4572,4571,4570,4569,4568,4567,4566,4565,4564,4563,4562,4561,4560,4559,4558,4557,4830,5111,5400,5697,6002,6315,6636,6965,7302,7647,8000,8361,8730,9107,9492,9885],[9619,9230,8849,8476,8111,7754,7405,7064,6731,6406,6089,5780,5479,5186,4901,4900,4899,4898,4897,4896,4895,4894,4893,4892,4891,4890,4889,4888,4887,4886,4885,4884,4883,4882,4881,4880,4879,4878,4877,4876,4875,4874,4873,4872,4871,4870,4869,4868,4867,4866,4865,4864,4863,4862,4861,4860,4859,4858,4857,4856,4855,4854,4853,4852,4851,4850,4849,4848,4847,4846,4845,4844,4843,4842,4841,4840,4839,4838,4837,4836,4835,4834,4833,4832,4831,5112,5401,5698,6003,6316,6637,6966,7303,7648,8001,8362,8731,9108,9493,9886],[9618,9229,8848,8475,8110,7753,7404,7063,6730,6405,6088,5779,5478,5185,5184,5183,5182,5181,5180,5179,5178,5177,5176,5175,5174,5173,5172,5171,5170,5169,5168,5167,5166,5165,5164,5163,5162,5161,5160,5159,5158,5157,5156,5155,5154,5153,5152,5151,5150,5149,5148,5147,5146,5145,5144,5143,5142,5141,5140,5139,5138,5137,5136,5135,5134,5133,5132,5131,5130,5129,5128,5127,5126,5125,5124,5123,5122,5121,5120,5119,5118,5117,5116,5115,5114,5113,5402,5699,6004,6317,6638,6967,7304,7649,8002,8363,8732,9109,9494,9887],[9617,9228,8847,8474,8109,7752,7403,7062,6729,6404,6087,5778,5477,5476,5475,5474,5473,5472,5471,5470,5469,5468,5467,5466,5465,5464,5463,5462,5461,5460,5459,5458,5457,5456,5455,5454,5453,5452,5451,5450,5449,5448,5447,5446,5445,5444,5443,5442,5441,5440,5439,5438,5437,5436,5435,5434,5433,5432,5431,5430,5429,5428,5427,5426,5425,5424,5423,5422,5421,5420,5419,5418,5417,5416,5415,5414,5413,5412,5411,5410,5409,5408,5407,5406,5405,5404,5403,5700,6005,6318,6639,6968,7305,7650,8003,8364,8733,9110,9495,9888],[9616,9227,8846,8473,8108,7751,7402,7061,6728,6403,6086,5777,5776,5775,5774,5773,5772,5771,5770,5769,5768,5767,5766,5765,5764,5763,5762,5761,5760,5759,5758,5757,5756,5755,5754,5753,5752,5751,5750,5749,5748,5747,5746,5745,5744,5743,5742,5741,5740,5739,5738,5737,5736,5735,5734,5733,5732,5731,5730,5729,5728,5727,5726,5725,5724,5723,5722,5721,5720,5719,5718,5717,5716,5715,5714,5713,5712,5711,5710,5709,5708,5707,5706,5705,5704,5703,5702,5701,6006,6319,6640,6969,7306,7651,8004,8365,8734,9111,9496,9889],[9615,9226,8845,8472,8107,7750,7401,7060,6727,6402,6085,6084,6083,6082,6081,6080,6079,6078,6077,6076,6075,6074,6073,6072,6071,6070,6069,6068,6067,6066,6065,6064,6063,6062,6061,6060,6059,6058,6057,6056,6055,6054,6053,6052,6051,6050,6049,6048,6047,6046,6045,6044,6043,6042,6041,6040,6039,6038,6037,6036,6035,6034,6033,6032,6031,6030,6029,6028,6027,6026,6025,6024,6023,6022,6021,6020,6019,6018,6017,6016,6015,6014,6013,6012,6011,6010,6009,6008,6007,6320,6641,6970,7307,7652,8005,8366,8735,9112,9497,9890],[9614,9225,8844,8471,8106,7749,7400,7059,6726,6401,6400,6399,6398,6397,6396,6395,6394,6393,6392,6391,6390,6389,6388,6387,6386,6385,6384,6383,6382,6381,6380,6379,6378,6377,6376,6375,6374,6373,6372,6371,6370,6369,6368,6367,6366,6365,6364,6363,6362,6361,6360,6359,6358,6357,6356,6355,6354,6353,6352,6351,6350,6349,6348,6347,6346,6345,6344,6343,6342,6341,6340,6339,6338,6337,6336,6335,6334,6333,6332,6331,6330,6329,6328,6327,6326,6325,6324,6323,6322,6321,6642,6971,7308,7653,8006,8367,8736,9113,9498,9891],[9613,9224,8843,8470,8105,7748,7399,7058,6725,6724,6723,6722,6721,6720,6719,6718,6717,6716,6715,6714,6713,6712,6711,6710,6709,6708,6707,6706,6705,6704,6703,6702,6701,6700,6699,6698,6697,6696,6695,6694,6693,6692,6691,6690,6689,6688,6687,6686,6685,6684,6683,6682,6681,6680,6679,6678,6677,6676,6675,6674,6673,6672,6671,6670,6669,6668,6667,6666,6665,6664,6663,6662,6661,6660,6659,6658,6657,6656,6655,6654,6653,6652,6651,6650,6649,6648,6647,6646,6645,6644,6643,6972,7309,7654,8007,8368,8737,9114,9499,9892],[9612,9223,8842,8469,8104,7747,7398,7057,7056,7055,7054,7053,7052,7051,7050,7049,7048,7047,7046,7045,7044,7043,7042,7041,7040,7039,7038,7037,7036,7035,7034,7033,7032,7031,7030,7029,7028,7027,7026,7025,7024,7023,7022,7021,7020,7019,7018,7017,7016,7015,7014,7013,7012,7011,7010,7009,7008,7007,7006,7005,7004,7003,7002,7001,7000,6999,6998,6997,6996,6995,6994,6993,6992,6991,6990,6989,6988,6987,6986,6985,6984,6983,6982,6981,6980,6979,6978,6977,6976,6975,6974,6973,7310,7655,8008,8369,8738,9115,9500,9893],[9611,9222,8841,8468,8103,7746,7397,7396,7395,7394,7393,7392,7391,7390,7389,7388,7387,7386,7385,7384,7383,7382,7381,7380,7379,7378,7377,7376,7375,7374,7373,7372,7371,7370,7369,7368,7367,7366,7365,7364,7363,7362,7361,7360,7359,7358,7357,7356,7355,7354,7353,7352,7351,7350,7349,7348,7347,7346,7345,7344,7343,7342,7341,7340,7339,7338,7337,7336,7335,7334,7333,7332,7331,7330,7329,7328,7327,7326,7325,7324,7323,7322,7321,7320,7319,7318,7317,7316,7315,7314,7313,7312,7311,7656,8009,8370,8739,9116,9501,9894],[9610,9221,8840,8467,8102,7745,7744,7743,7742,7741,7740,7739,7738,7737,7736,7735,7734,7733,7732,7731,7730,7729,7728,7727,7726,7725,7724,7723,7722,7721,7720,7719,7718,7717,7716,7715,7714,7713,7712,7711,7710,7709,7708,7707,7706,7705,7704,7703,7702,7701,7700,7699,7698,7697,7696,7695,7694,7693,7692,7691,7690,7689,7688,7687,7686,7685,7684,7683,7682,7681,7680,7679,7678,7677,7676,7675,7674,7673,7672,7671,7670,7669,7668,7667,7666,7665,7664,7663,7662,7661,7660,7659,7658,7657,8010,8371,8740,9117,9502,9895],[9609,9220,8839,8466,8101,8100,8099,8098,8097,8096,8095,8094,8093,8092,8091,8090,8089,8088,8087,8086,8085,8084,8083,8082,8081,8080,8079,8078,8077,8076,8075,8074,8073,8072,8071,8070,8069,8068,8067,8066,8065,8064,8063,8062,8061,8060,8059,8058,8057,8056,8055,8054,8053,8052,8051,8050,8049,8048,8047,8046,8045,8044,8043,8042,8041,8040,8039,8038,8037,8036,8035,8034,8033,8032,8031,8030,8029,8028,8027,8026,8025,8024,8023,8022,8021,8020,8019,8018,8017,8016,8015,8014,8013,8012,8011,8372,8741,9118,9503,9896],[9608,9219,8838,8465,8464,8463,8462,8461,8460,8459,8458,8457,8456,8455,8454,8453,8452,8451,8450,8449,8448,8447,8446,8445,8444,8443,8442,8441,8440,8439,8438,8437,8436,8435,8434,8433,8432,8431,8430,8429,8428,8427,8426,8425,8424,8423,8422,8421,8420,8419,8418,8417,8416,8415,8414,8413,8412,8411,8410,8409,8408,8407,8406,8405,8404,8403,8402,8401,8400,8399,8398,8397,8396,8395,8394,8393,8392,8391,8390,8389,8388,8387,8386,8385,8384,8383,8382,8381,8380,8379,8378,8377,8376,8375,8374,8373,8742,9119,9504,9897],[9607,9218,8837,8836,8835,8834,8833,8832,8831,8830,8829,8828,8827,8826,8825,8824,8823,8822,8821,8820,8819,8818,8817,8816,8815,8814,8813,8812,8811,8810,8809,8808,8807,8806,8805,8804,8803,8802,8801,8800,8799,8798,8797,8796,8795,8794,8793,8792,8791,8790,8789,8788,8787,8786,8785,8784,8783,8782,8781,8780,8779,8778,8777,8776,8775,8774,8773,8772,8771,8770,8769,8768,8767,8766,8765,8764,8763,8762,8761,8760,8759,8758,8757,8756,8755,8754,8753,8752,8751,8750,8749,8748,8747,8746,8745,8744,8743,9120,9505,9898],[9606,9217,9216,9215,9214,9213,9212,9211,9210,9209,9208,9207,9206,9205,9204,9203,9202,9201,9200,9199,9198,9197,9196,9195,9194,9193,9192,9191,9190,9189,9188,9187,9186,9185,9184,9183,9182,9181,9180,9179,9178,9177,9176,9175,9174,9173,9172,9171,9170,9169,9168,9167,9166,9165,9164,9163,9162,9161,9160,9159,9158,9157,9156,9155,9154,9153,9152,9151,9150,9149,9148,9147,9146,9145,9144,9143,9142,9141,9140,9139,9138,9137,9136,9135,9134,9133,9132,9131,9130,9129,9128,9127,9126,9125,9124,9123,9122,9121,9506,9899],[9605,9604,9603,9602,9601,9600,9599,9598,9597,9596,9595,9594,9593,9592,9591,9590,9589,9588,9587,9586,9585,9584,9583,9582,9581,9580,9579,9578,9577,9576,9575,9574,9573,9572,9571,9570,9569,9568,9567,9566,9565,9564,9563,9562,9561,9560,9559,9558,9557,9556,9555,9554,9553,9552,9551,9550,9549,9548,9547,9546,9545,9544,9543,9542,9541,9540,9539,9538,9537,9536,9535,9534,9533,9532,9531,9530,9529,9528,9527,9526,9525,9524,9523,9522,9521,9520,9519,9518,9517,9516,9515,9514,9513,9512,9511,9510,9509,9508,9507,9900],[10000,9999,9998,9997,9996,9995,9994,9993,9992,9991,9990,9989,9988,9987,9986,9985,9984,9983,9982,9981,9980,9979,9978,9977,9976,9975,9974,9973,9972,9971,9970,9969,9968,9967,9966,9965,9964,9963,9962,9961,9960,9959,9958,9957,9956,9955,9954,9953,9952,9951,9950,9949,9948,9947,9946,9945,9944,9943,9942,9941,9940,9939,9938,9937,9936,9935,9934,9933,9932,9931,9930,9929,9928,9927,9926,9925,9924,9923,9922,9921,9920,9919,9918,9917,9916,9915,9914,9913,9912,9911,9910,9909,9908,9907,9906,9905,9904,9903,9902,9901]],99,L)
diff --git a/testsuite/tests/ghci/should_run/ghcirun003.hs b/testsuite/tests/ghci/should_run/ghcirun003.hs
new file mode 100644
index 0000000000..1087188305
--- /dev/null
+++ b/testsuite/tests/ghci/should_run/ghcirun003.hs
@@ -0,0 +1,50 @@
+
+module Main (main) where
+
+main :: IO ()
+main = print ok
+
+ok :: Bool
+ok = map foo [10..72] == map bar [10..72]
+
+foo :: Int -> [Int]
+foo 12 = [12, 13, 14, 15, 16, 17]
+foo 14 = [14, 15, 16, 17, 18, 19]
+foo 16 = [16, 17, 18, 19, 20, 21]
+foo 18 = [18, 19, 20, 21, 22, 23]
+foo n | n == 20 = [20, 30, 40, 50, 60, 70, 80]
+foo 22 = [22, 23, 24, 25, 26, 27]
+foo 24 = [24, 25, 26, 27, 28, 29]
+foo 26 = [26, 27, 28, 29, 30, 31]
+foo 28 = [28, 29, 30, 31, 32, 33]
+foo n | n == 30 = [30, 40, 50, 60, 70, 80, 90]
+foo 32 = [32, 33, 34, 35, 36, 37]
+foo 34 = [34, 35, 36, 37, 38, 39]
+foo 36 = [36, 37, 38, 39, 40, 41]
+foo 38 = [38, 39, 40, 41, 42, 43]
+foo n | n == 40 = [40, 50, 60, 70, 80, 90, 100]
+foo 42 = [42, 43, 44, 45, 46, 47]
+foo 44 = [44, 45, 46, 47, 48, 49]
+foo 46 = [46, 47, 48, 49, 50, 51]
+foo 48 = [48, 49, 50, 51, 52, 53]
+foo n | n == 50 = [50, 60, 70, 80, 90, 100, 110]
+foo 52 = [52, 53, 54, 55, 56, 57]
+foo 54 = [54, 55, 56, 57, 58, 59]
+foo 56 = [56, 57, 58, 59, 60, 61]
+foo 58 = [58, 59, 60, 61, 62, 63]
+foo n | n == 60 = [60, 70, 80, 90, 100, 110, 120]
+foo 62 = [62, 63, 64, 65, 66, 67]
+foo 64 = [64, 65, 66, 67, 68, 69]
+foo 66 = [66, 67, 68, 69, 70, 71]
+foo 68 = [68, 69, 70, 71, 72, 73]
+foo n | n == 70 = [70, 80, 90, 100, 110, 120, 130]
+foo _ = []
+
+bar :: Int -> [Int]
+bar n
+ | odd n = []
+ | n < 12 = []
+ | n > 70 = []
+ | n `mod` 10 == 0 = take 7 $ iterate (+ 10) n
+ | otherwise = take 6 $ iterate (+ 1) n
+
diff --git a/testsuite/tests/ghci/should_run/ghcirun003.stdout b/testsuite/tests/ghci/should_run/ghcirun003.stdout
new file mode 100644
index 0000000000..0ca95142bb
--- /dev/null
+++ b/testsuite/tests/ghci/should_run/ghcirun003.stdout
@@ -0,0 +1 @@
+True