diff options
Diffstat (limited to 'testsuite/tests/ghci')
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 |