(testsuite) ghci debugger testsuite

Pepe Iborra <[email protected]>
Newsgroups gmane.comp.lang.haskell.cvs.all
Message-ID <075786EF-545D-4D98-9230-2F56F5B764A6__38899.7711278082$1165922769$gmane$org@gmail.com>
Fairly incomplete testsuite for the ghci debugger.
More tests will come.

The ones failing right now in my system are:

- break 4   - implicit params are not working yet
- print 12   - GADTs
- print 16   - tricky newtypes
- dynbk5   - My TH is broken ?
- dynbk8   - Coalescing is not perfect

_______________________________________________
Cvs-ghc mailing list
[email protected]
http://www.haskell.org/mailman/listinfo/cvs-ghc
debugger-testsuite.patch (application/octet-stream, 72.7 KB)
New patches:

[GHCi.debugger tests
Pepe Iborra <[email protected]>**20060824180602] {
adddir ./tests/ghc-regress/ghci.debugger
adddir ./tests/ghc-regress/ghci.debugger/break1
adddir ./tests/ghc-regress/ghci.debugger/break10
adddir ./tests/ghc-regress/ghci.debugger/break2
adddir ./tests/ghc-regress/ghci.debugger/break3
adddir ./tests/ghc-regress/ghci.debugger/break4
adddir ./tests/ghc-regress/ghci.debugger/break5
adddir ./tests/ghc-regress/ghci.debugger/break6
adddir ./tests/ghc-regress/ghci.debugger/break7
adddir ./tests/ghc-regress/ghci.debugger/break8
adddir ./tests/ghc-regress/ghci.debugger/break9
adddir ./tests/ghc-regress/ghci.debugger/scripts
addfile ./tests/ghc-regress/ghci.debugger/Makefile
hunk ./tests/ghc-regress/ghci.debugger/Makefile 1
+TOP=../../..
+include $(TOP)/mk/boilerplate.mk
+include $(TOP)/mk/test.mk
addfile ./tests/ghc-regress/ghci.debugger/QSort.hs
hunk ./tests/ghc-regress/ghci.debugger/QSort.hs 1
-
+module QSort where
+import GHC.Exts
+
+qsort [] = [] 
+qsort (a:as) = (qsort left) ++ [a] ++ (qsort right)
+ where (left,right) = (filter (<=a) as, filter (>a) as)
+
+run = qsort [8, 4, 0, 3, 1, 23, 11, 18]
+
+-- > run
+-- [0,1,3,4,8,11,18,23]
addfile ./tests/ghc-regress/ghci.debugger/Test.hs
hunk ./tests/ghc-regress/ghci.debugger/Test.hs 1
+module Test.Test2 where
+import Data.Typeable
+       
+data Show1 = S1 Char Char Char
+ deriving Typeable
+
+data Strict = S2 Char !Char
+	
+data Opaque = forall a. O a
+data List1 a = Nil | a :^ (List1 a)
+  deriving Show
+
+infixr 5 :^ 
+--test T{t=t1} = undefined
+
+instance Show Show1 where
+ show (S1 a b c) = show (a)
+
+type Just1 = Maybe
+
addfile ./tests/ghc-regress/ghci.debugger/break1/A.hs
hunk ./tests/ghc-regress/ghci.debugger/break1/A.hs 1
+import GHC.Base (breakpoint, breakpointCond)
+
+
+g i = let a = i + 1
+ 	  b = id
+          c = ()
+          d = (+)
+      in breakpoint ()
addfile ./tests/ghc-regress/ghci.debugger/break1/Makefile
hunk ./tests/ghc-regress/ghci.debugger/break1/Makefile 1
+TOP=../../../..
+include $(TOP)/mk/boilerplate.mk
+include $(TOP)/mk/test.mk
addfile ./tests/ghc-regress/ghci.debugger/break1/all.T
hunk ./tests/ghc-regress/ghci.debugger/break1/all.T 1
+
+test('break001', normal, ghci_script, ['break001.script'])
addfile ./tests/ghc-regress/ghci.debugger/break1/break001.script
hunk ./tests/ghc-regress/ghci.debugger/break1/break001.script 1
+-- Test polymorphic types in a breakpoint
+:set -fno-debugging
+:l A
+g 5
+:t a 
+:t b 
+:t c 
+:t d
+:p a b c d
addfile ./tests/ghc-regress/ghci.debugger/break1/break001.stderr
hunk ./tests/ghc-regress/ghci.debugger/break1/break001.stderr 1
+
+A.hs:8:9:
+    Warning: Extracted ids: [a, c, b, i, d]
+			    [a, (), forall a. a -> a, a, Integer -> Integer -> Integer]
addfile ./tests/ghc-regress/ghci.debugger/break1/break001.stdout
hunk ./tests/ghc-regress/ghci.debugger/break1/break001.stdout 1
+Local bindings in scope:
+  a :: a, c :: (), b :: forall a. a -> a, i :: a,
+  d :: Integer -> Integer -> Integer
+A.hs:8:9-18> a :: GHC.Base.Unknown
+A.hs:8:9-18> b :: a -> a
+A.hs:8:9-18> c :: ()
+A.hs:8:9-18> d :: Integer -> Integer -> Integer
+A.hs:8:9-18> a = (_t1::GHC.Base.Unknown)
+b = (_t2::forall a. a -> a)
+c = ()
+d = (_t3::Integer -> Integer -> Integer)
+A.hs:8:9-18> Returning to normal execution...
+()
addfile ./tests/ghc-regress/ghci.debugger/break10/A.hs
hunk ./tests/ghc-regress/ghci.debugger/break10/A.hs 1
+import GHC.Base (breakpoint, breakpointCond)
+
+g :: Bool -> ()	
+g i = let 
+	j = False 
+	in ()
+
+h _ = breakpoint ()
+
addfile ./tests/ghc-regress/ghci.debugger/break10/Makefile
hunk ./tests/ghc-regress/ghci.debugger/break10/Makefile 1
+TOP=../../../..
+include $(TOP)/mk/boilerplate.mk
+include $(TOP)/mk/test.mk
addfile ./tests/ghc-regress/ghci.debugger/break10/all.T
hunk ./tests/ghc-regress/ghci.debugger/break10/all.T 1
+
+test('break010', normal, ghci_script, ['break010.script'])
addfile ./tests/ghc-regress/ghci.debugger/break10/break010.script
hunk ./tests/ghc-regress/ghci.debugger/break10/break010.script 1
-
+-- Check that coalescing of 'auto' breakpoints does work as expected
+
+:set -fdebugging
+:l A
+
+:breakpoint add Main 4
+:breakpoint add Main 8
addfile ./tests/ghc-regress/ghci.debugger/break10/break010.stdout
hunk ./tests/ghc-regress/ghci.debugger/break10/break010.stdout 1
+*** Exception: No suitable breakpoint site found
+*** Exception: No suitable breakpoint site found
addfile ./tests/ghc-regress/ghci.debugger/break2/A.hs
hunk ./tests/ghc-regress/ghci.debugger/break2/A.hs 1
-
+import GHC.Base (breakpoint, breakpointCond)
+
+
+g :: Int -> ()
+g i = ()
+      where a = False
+ 	    b = True
+            c = breakpoint ()
+     
addfile ./tests/ghc-regress/ghci.debugger/break2/Makefile
hunk ./tests/ghc-regress/ghci.debugger/break2/Makefile 1
+TOP=../../../..
+include $(TOP)/mk/boilerplate.mk
+include $(TOP)/mk/test.mk
addfile ./tests/ghc-regress/ghci.debugger/break2/all.T
hunk ./tests/ghc-regress/ghci.debugger/break2/all.T 1
+
+test('break002', normal, ghci_script, ['break002.script'])
addfile ./tests/ghc-regress/ghci.debugger/break2/break002.script
hunk ./tests/ghc-regress/ghci.debugger/break2/break002.script 1
-
+-- Available bindings at where(s)
+
+:set -fno-debugging
+:l A
addfile ./tests/ghc-regress/ghci.debugger/break2/break002.stderr
hunk ./tests/ghc-regress/ghci.debugger/break2/break002.stderr 1
+
+A.hs:8:16:
+    Warning: Extracted ids: [i]
+			    [Int]
addfile ./tests/ghc-regress/ghci.debugger/break2/break002.stdout
addfile ./tests/ghc-regress/ghci.debugger/break3/A.hs
hunk ./tests/ghc-regress/ghci.debugger/break3/A.hs 1
+import GHC.Base (breakpoint, breakpointCond)
+
+
+g :: Int -> ()
+g i = let a = False
+ 	  b = True
+          c = breakpoint ()
+      in ()
addfile ./tests/ghc-regress/ghci.debugger/break3/Makefile
hunk ./tests/ghc-regress/ghci.debugger/break3/Makefile 1
+TOP=../../../..
+include $(TOP)/mk/boilerplate.mk
+include $(TOP)/mk/test.mk
addfile ./tests/ghc-regress/ghci.debugger/break3/all.T
hunk ./tests/ghc-regress/ghci.debugger/break3/all.T 1
+
+test('break003', normal, ghci_script, ['break003.script'])
addfile ./tests/ghc-regress/ghci.debugger/break3/break003.script
hunk ./tests/ghc-regress/ghci.debugger/break3/break003.script 1
+-- Available bindings at let(s)
+
+:set -fno-debugging
+:l A
addfile ./tests/ghc-regress/ghci.debugger/break3/break003.stderr
hunk ./tests/ghc-regress/ghci.debugger/break3/break003.stderr 1
+
+A.hs:7:14:
+    Warning: Extracted ids: [i]
+			    [Int]
addfile ./tests/ghc-regress/ghci.debugger/break3/break003.stdout
addfile ./tests/ghc-regress/ghci.debugger/break4/A.hs
hunk ./tests/ghc-regress/ghci.debugger/break4/A.hs 1
-
+import GHC.Base (breakpoint, breakpointCond)
+
+f i = breakpoint$ if ?flag then i*2 else i
+
+g i = let ?flag=False in f i
addfile ./tests/ghc-regress/ghci.debugger/break4/Makefile
hunk ./tests/ghc-regress/ghci.debugger/break4/Makefile 1
+TOP=../../../..
+include $(TOP)/mk/boilerplate.mk
+include $(TOP)/mk/test.mk
addfile ./tests/ghc-regress/ghci.debugger/break4/all.T
hunk ./tests/ghc-regress/ghci.debugger/break4/all.T 1
+
+test('break004', normal, ghci_script, ['break004.script'])
addfile ./tests/ghc-regress/ghci.debugger/break4/break004.script
hunk ./tests/ghc-regress/ghci.debugger/break4/break004.script 1
-
+-- Availability of Implicit params
+
+:set -fimplicit-params
+:l A
+
+g 5
+?flag
addfile ./tests/ghc-regress/ghci.debugger/break5/A.hs
hunk ./tests/ghc-regress/ghci.debugger/break5/A.hs 1
+import GHC.Base (breakpoint, breakpointCond)
+
+f i = breakpointCond (i>3) ()
+
+g :: Int -> ()
+g i = breakpoint ()
addfile ./tests/ghc-regress/ghci.debugger/break5/Makefile
hunk ./tests/ghc-regress/ghci.debugger/break5/Makefile 1
+TOP=../../../..
+include $(TOP)/mk/boilerplate.mk
+include $(TOP)/mk/test.mk
addfile ./tests/ghc-regress/ghci.debugger/break5/all.T
hunk ./tests/ghc-regress/ghci.debugger/break5/all.T 1
+
+test('break005', normal, ghci_script, ['break005.script'])
addfile ./tests/ghc-regress/ghci.debugger/break5/break005.script
hunk ./tests/ghc-regress/ghci.debugger/break5/break005.script 1
-
+-- Check that user breakpoints are caught even with -fno-debugging
+
+:set -fno-debugging
+:l A
+f 4
+:q
+g 1
+:q
addfile ./tests/ghc-regress/ghci.debugger/break5/break005.stderr
hunk ./tests/ghc-regress/ghci.debugger/break5/break005.stderr 1
+
+A.hs:3:6:
+    Warning: Extracted ids: [i]
+			    [a]
+
+A.hs:6:6:
+    Warning: Extracted ids: [i]
+			    [Int]
addfile ./tests/ghc-regress/ghci.debugger/break5/break005.stdout
hunk ./tests/ghc-regress/ghci.debugger/break5/break005.stdout 1
+Local bindings in scope:
+  i :: a
+A.hs:3:6-19> Returning to normal execution...
+()
+Local bindings in scope:
+  i :: Int
+A.hs:6:6-15> Returning to normal execution...
+()
addfile ./tests/ghc-regress/ghci.debugger/break6/A.hs
hunk ./tests/ghc-regress/ghci.debugger/break6/A.hs 1
+import GHC.Base (breakpoint, breakpointCond)
+
+f i = breakpointCond (i>3) ()
+g i = breakpoint ()
addfile ./tests/ghc-regress/ghci.debugger/break6/Makefile
hunk ./tests/ghc-regress/ghci.debugger/break6/Makefile 1
+TOP=../../../..
+include $(TOP)/mk/boilerplate.mk
+include $(TOP)/mk/test.mk
addfile ./tests/ghc-regress/ghci.debugger/break6/all.T
hunk ./tests/ghc-regress/ghci.debugger/break6/all.T 1
+
+test('break006', normal, ghci_script, ['break006.script'])
addfile ./tests/ghc-regress/ghci.debugger/break6/break006.script
hunk ./tests/ghc-regress/ghci.debugger/break6/break006.script 1
-
+-- Check -fignore-breakpoints
+
+:set -fignore-breakpoints
+:l A
+f 1
+g 1
addfile ./tests/ghc-regress/ghci.debugger/break6/break006.stderr
addfile ./tests/ghc-regress/ghci.debugger/break6/break006.stdout
hunk ./tests/ghc-regress/ghci.debugger/break6/break006.stdout 1
+()
+()
addfile ./tests/ghc-regress/ghci.debugger/break7/Makefile
hunk ./tests/ghc-regress/ghci.debugger/break7/Makefile 1
+TOP=../../../..
+include $(TOP)/mk/boilerplate.mk
+include $(TOP)/mk/test.mk
addfile ./tests/ghc-regress/ghci.debugger/break7/all.T
hunk ./tests/ghc-regress/ghci.debugger/break7/all.T 1
+
+test('break007', normal, ghci_script, ['break007.script'])
addfile ./tests/ghc-regress/ghci.debugger/break7/break007.script
hunk ./tests/ghc-regress/ghci.debugger/break7/break007.script 1
-
+-- Check mdo statements: availability of local bindings.
+-- Maybe we should not want to put in scope the things binded in the mdo scope, to avoid silliness. 
+
+:set -fglasgow-exts
+:l ../mdo.hs
+l2dll "hello world"
addfile ./tests/ghc-regress/ghci.debugger/break7/break007.stderr
hunk ./tests/ghc-regress/ghci.debugger/break7/break007.stderr 1
+
+../mdo.hs:30:29:
+    Warning: Extracted ids: [x, f, xs, c, l]
+			    [a, N a, [a], N a, N a]
addfile ./tests/ghc-regress/ghci.debugger/break7/break007.stdout
hunk ./tests/ghc-regress/ghci.debugger/break7/break007.stdout 1
+Local bindings in scope:
+  x :: a, f :: N a, xs :: [a], c :: N a, l :: N a
+../mdo.hs:30:29-38> Returning to normal execution...
addfile ./tests/ghc-regress/ghci.debugger/break8/A.hs
hunk ./tests/ghc-regress/ghci.debugger/break8/A.hs 1
-
+import GHC.Base (breakpoint, breakpointCond)
+
+f i = breakpointCond (i>3) ()
addfile ./tests/ghc-regress/ghci.debugger/break8/Makefile
hunk ./tests/ghc-regress/ghci.debugger/break8/Makefile 1
+TOP=../../../..
+include $(TOP)/mk/boilerplate.mk
+include $(TOP)/mk/test.mk
addfile ./tests/ghc-regress/ghci.debugger/break8/all.T
hunk ./tests/ghc-regress/ghci.debugger/break8/all.T 1
+
+test('break008', normal, ghci_script, ['break008.script'])
addfile ./tests/ghc-regress/ghci.debugger/break8/break008.script
hunk ./tests/ghc-regress/ghci.debugger/break8/break008.script 1
-
+-- Check breakpointCond
+
+:l A
+f 1
+f 4
+:p i
+:q
addfile ./tests/ghc-regress/ghci.debugger/break8/break008.stderr
hunk ./tests/ghc-regress/ghci.debugger/break8/break008.stderr 1
+
+A.hs:3:6:
+    Warning: Extracted ids: [i]
+			    [a]
addfile ./tests/ghc-regress/ghci.debugger/break8/break008.stdout
hunk ./tests/ghc-regress/ghci.debugger/break8/break008.stdout 1
+()
+Local bindings in scope:
+  i :: a
+A.hs:3:6-19> i = 4
+A.hs:3:6-19> Returning to normal execution...
+()
addfile ./tests/ghc-regress/ghci.debugger/break9/A.hs
hunk ./tests/ghc-regress/ghci.debugger/break9/A.hs 1
+import GHC.Base (breakpoint, breakpointCond)
+
+f :: Bool -> ()
+f i = breakpoint$ breakpoint$ ()
+
+g :: Bool -> ()	
+g i = breakpoint$ let j = False in ()
+
+h _ = breakpoint ()
+
addfile ./tests/ghc-regress/ghci.debugger/break9/Makefile
hunk ./tests/ghc-regress/ghci.debugger/break9/Makefile 1
+TOP=../../../..
+include $(TOP)/mk/boilerplate.mk
+include $(TOP)/mk/test.mk
addfile ./tests/ghc-regress/ghci.debugger/break9/all.T
hunk ./tests/ghc-regress/ghci.debugger/break9/all.T 1
+
+test('break009', normal, ghci_script, ['break009.script'])
addfile ./tests/ghc-regress/ghci.debugger/break9/break009.script
hunk ./tests/ghc-regress/ghci.debugger/break9/break009.script 1
+-- Check that coalescing of 'auto' breakpoints does not interfere with user breakpoints
+
+:set -fno-debugging
+:l A
addfile ./tests/ghc-regress/ghci.debugger/break9/break009.stderr
hunk ./tests/ghc-regress/ghci.debugger/break9/break009.stderr 1
+
+A.hs:4:6:
+    Warning: Extracted ids: [i]
+			    [Bool]
+
+A.hs:4:18:
+    Warning: Extracted ids: [i]
+			    [Bool]
+
+A.hs:7:6:
+    Warning: Extracted ids: [i]
+			    [Bool]
+A.hs:9:6:
+    Warning: Extracted ids: []
+			    []
addfile ./tests/ghc-regress/ghci.debugger/break9/break009.stdout
addfile ./tests/ghc-regress/ghci.debugger/mdo.hs
hunk ./tests/ghc-regress/ghci.debugger/mdo.hs 1
-
+import Control.Monad.Fix
+import Data.IORef
+import GHC.Base (breakpoint, breakpointCond)
+
+data N a = N (IORef Bool, N a, a, N a)
+
+newNode :: N a -> a -> N a -> IO (N a)
+newNode b c f = do v  <- newIORef False
+                   return (N (v, b, c, f))
+
+ll = mdo n0 <- newNode n3 0 n1
+         n1 <- newNode n0 1 n2
+         n2 <- newNode n1 2 n3
+         n3 <- newNode n2 3 n0
+         return n0
+
+data Dir = F | B deriving Eq
+
+traverse :: Dir -> N a -> IO [a]
+traverse d (N (v, b, i, f)) =
+    do visited <- readIORef v
+       if visited
+          then return []
+          else do writeIORef v True
+                  let next = if d == F then f else b
+                  is <- traverse d next
+                  return (i:is)
+
+l2dll :: [a] -> IO (N a)
+l2dll (x:xs) = mdo c      <- breakpoint$ newNode l x f
+                   (f, l) <- l2dll' c xs
+                   return c
+
+l2dll' :: N a -> [a] -> IO (N a, N a)
+l2dll' p []     = return (p, p)
+l2dll' p (x:xs) = mdo c      <- newNode p x f
+                      (f, l) <- l2dll' c xs
+                      return (c, l)
addfile ./tests/ghc-regress/ghci.debugger/scripts/Makefile
hunk ./tests/ghc-regress/ghci.debugger/scripts/Makefile 1
+TOP=../../../..
+include $(TOP)/mk/boilerplate.mk
+include $(TOP)/mk/test.mk
addfile ./tests/ghc-regress/ghci.debugger/scripts/all.T
hunk ./tests/ghc-regress/ghci.debugger/scripts/all.T 1
+
+test('print001', normal, ghci_script, ['print001.script'])
+test('print002', normal, ghci_script, ['print002.script'])
+test('print003', normal, ghci_script, ['print003.script'])
+test('print004', normal, ghci_script, ['print004.script'])
+test('print005', normal, ghci_script, ['print005.script'])
+test('print006', normal, ghci_script, ['print006.script'])
+test('print007', normal, ghci_script, ['print007.script'])
+test('print008', normal, ghci_script, ['print008.script'])
+test('print009', normal, ghci_script, ['print009.script'])
+test('print010', normal, ghci_script, ['print010.script'])
+
+test('dynbk001', normal, ghci_script, ['dynbk001.script'])
+test('dynbk002', normal, ghci_script, ['dynbk002.script'])
+test('dynbk003', normal, ghci_script, ['dynbk003.script'])
+test('dynbk004', normal, ghci_script, ['dynbk004.script'])
addfile ./tests/ghc-regress/ghci.debugger/scripts/dynbk001.script
hunk ./tests/ghc-regress/ghci.debugger/scripts/dynbk001.script 1
+:set -fglasgow-exts
+:l ../Test
+:set -fdebugging
+:l ../QSort
+
+:break del 1        
+-- Illegal: empty breakpoint list
+
+:break del QSort 1   
+-- Illegal: no breakpoint at line 1 in Main
+
+:break del QSort 1 1 
+-- Illegal: no breakpoint at (1,1) in Main
+
+:break add 1       
+ -- Illegal syntax
+
+:break add NonModule 1
+-- Illegal: I don't know this module
+
+:break add Test 1      
+-- Illegal: this module was not loaded under -fdebugging
+
+:break add QSort 1 1    
+-- Error: No breakpoint here
+
+:break list             
+-- Show an empty list
+
+qsort [8, 4, 42, 16, 15, 23]  
+-- Should run normally
+
+-- Testing that ghci commands work normally
+:i map                    
addfile ./tests/ghc-regress/ghci.debugger/scripts/dynbk001.stdout
hunk ./tests/ghc-regress/ghci.debugger/scripts/dynbk001.stdout 1
+Not a valid breakpoint #. Use :breakpoint list to see the current breakpoints.
+*** Exception: No suitable breakpoint site found
+*** Exception: No suitable breakpoint site found
+syntax: :breakpoint add Module line [col]
+Could not find module `NonModule':
+  Use -v to see a list of the files searched for.
+Could not find module `Test':
+  Use -v to see a list of the files searched for.
+*** Exception: No suitable breakpoint site found
+There are no enabled breakpoints
+[4,8,15,16,23,42]
+map :: forall a b. (a -> b) -> [a] -> [b] 	-- Defined in GHC.Base
addfile ./tests/ghc-regress/ghci.debugger/scripts/dynbk002.script
hunk ./tests/ghc-regress/ghci.debugger/scripts/dynbk002.script 1
+-- :breakpoint stop stops a debugging session 
+
+:set -fdebugging
+:l ../QSort
+:break add QSort 5
+run
+:break stop
+:q
addfile ./tests/ghc-regress/ghci.debugger/scripts/dynbk002.stdout
hunk ./tests/ghc-regress/ghci.debugger/scripts/dynbk002.stdout 1
+Breakpoint set at (5,15)
+Local bindings in scope:
+  as :: [a], a :: a, left :: [a], right :: [a]
+../QSort.hs:5:15-50> Returning to normal execution...
+You may need to reload your modules
addfile ./tests/ghc-regress/ghci.debugger/scripts/dynbk003.script
hunk ./tests/ghc-regress/ghci.debugger/scripts/dynbk003.script 1
+-- :breakpoint stop in the top level should be a no-op
+
+
+:breakpoint stop
+
+:set -fdebugging
+
+:breakpoint stop
addfile ./tests/ghc-regress/ghci.debugger/scripts/dynbk003.stdout
hunk ./tests/ghc-regress/ghci.debugger/scripts/dynbk003.stdout 1
+Debugging mode is not enabled
addfile ./tests/ghc-regress/ghci.debugger/scripts/dynbk004.script
hunk ./tests/ghc-regress/ghci.debugger/scripts/dynbk004.script 1
+-- Instrumentation of mdo notation 
+                                   
+:set -fdebugging
+:set -fglasgow-exts
+:l ../mdo.hs
+:break add Main 13
+:break add Main 12
+:break add Main 11
+:break add Main 10
addfile ./tests/ghc-regress/ghci.debugger/scripts/print001.script
hunk ./tests/ghc-regress/ghci.debugger/scripts/print001.script 1
-
+-- Printing of lists
+
+let li = map Just [0..5]
+:p li
+head li
+:p li
+length li
+:p li
+:sp li
+li
+:p li
+:sp li
addfile ./tests/ghc-regress/ghci.debugger/scripts/print001.stdout
hunk ./tests/ghc-regress/ghci.debugger/scripts/print001.stdout 1
+li = (_t1::[Maybe Integer])
+Just 0
+li = [Just 0 | (_t2::[Maybe Integer])]
+6
+li = [Just 0,(_t3::Maybe Integer),(_t4::Maybe Integer),(_t5::Maybe Integer),(_t6::Maybe Integer),(_t7::Maybe Integer)]
+li = [Just 0,_,_,_,_,_]
+[Just 0,Just 1,Just 2,Just 3,Just 4,Just 5]
+li = [Just 0,Just 1,Just 2,Just 3,Just 4,Just 5]
+li = [Just 0,Just 1,Just 2,Just 3,Just 4,Just 5]
addfile ./tests/ghc-regress/ghci.debugger/scripts/print002.script
hunk ./tests/ghc-regress/ghci.debugger/scripts/print002.script 1
-
+-- printing of Showables
+
+let f = Just (1.2::Float)
+f
+:p f
+
+let i = Just (10::Integer)
+:p i
+
+:set -fglasgow-exts
+:l ../Test.hs
+
+let s = S1 'a' 'b' 'c'
+s
+:p s
+:sp s
addfile ./tests/ghc-regress/ghci.debugger/scripts/print002.stdout
hunk ./tests/ghc-regress/ghci.debugger/scripts/print002.stdout 1
+Just 1.2
+f = Just 1.2
+i = Just 10
+'a'
+s = 'a'
+s = 'a'
addfile ./tests/ghc-regress/ghci.debugger/scripts/print003.script
hunk ./tests/ghc-regress/ghci.debugger/scripts/print003.script 1
-
+-- Simple Recovery of types - opaque types
+:set -fglasgow-exts
+:l ../Test
+let t = O (map Just [[1,1],[2,2]])
+:p t
+seq _t1 ()
+:p t
+seq _t2 ()
+:p t
+seq _t4 ()
+:p t
+:t _t7
addfile ./tests/ghc-regress/ghci.debugger/scripts/print003.stdout
hunk ./tests/ghc-regress/ghci.debugger/scripts/print003.stdout 1
+t = O (_t1::a)
+()
+t = O [(_t2::a) | (_t3::[a])]
+()
+t = O [Just [(_t4::Maybe [a]),(_t5::Maybe [a])] | (_t6::[Maybe [a]])]
+()
+t = O [Just [1,1] | (_t7::[Maybe [Integer]])]
+_t7 :: [Maybe [Integer]]
addfile ./tests/ghc-regress/ghci.debugger/scripts/print004.script
hunk ./tests/ghc-regress/ghci.debugger/scripts/print004.script 1
+-- simple :print tests
+
+let a = False
+:sp a 
+:p a
+
+let b = map Just [1..4]
+:p b
+head b
+:p b
+length b
+:p b
+:sp b
+b
+:p b
+
+-- Force loading of a external package and keep pushing
+:m +Language.Haskell.TH
+let c = ListT
+:p c
+let d = map TupleT [1..4]
+:p d
+head d
+:p d
+length d
+:p d
+d
+:p d
addfile ./tests/ghc-regress/ghci.debugger/scripts/print004.stdout
hunk ./tests/ghc-regress/ghci.debugger/scripts/print004.stdout 1
+a = False
+a = False
+b = (_t1::[Maybe Integer])
+Just 1
+b = [Just 1 | (_t2::[Maybe Integer])]
+4
+b = [Just 1,(_t3::Maybe Integer),(_t4::Maybe Integer),(_t5::Maybe Integer)]
+b = [Just 1,_,_,_]
+[Just 1,Just 2,Just 3,Just 4]
+b = [Just 1,Just 2,Just 3,Just 4]
+c = ListT
+d = (_t6::[Type])
+TupleT 1
+d = [TupleT 1 | (_t7::[Type])]
+4
+d = [TupleT 1,(_t8::Type),(_t9::Type),(_t10::Type)]
+[TupleT 1,TupleT 2,TupleT 3,TupleT 4]
+d = [TupleT 1,TupleT 2,TupleT 3,TupleT 4]
addfile ./tests/ghc-regress/ghci.debugger/scripts/print005.script
hunk ./tests/ghc-regress/ghci.debugger/scripts/print005.script 1
-
+-- Recovery of types, polymorphic bindings inside a bkpt
+:set -fdebugging
+:l ../QSort
+:break add QSort 5
+qsort [8, 4, 42, 16, 15, 23]
+
+:p right
+seq right ()
+:p right
+:p left
+seq left ()
+:p left
+length left
+:p left
+:break stop
addfile ./tests/ghc-regress/ghci.debugger/scripts/print005.stdout
hunk ./tests/ghc-regress/ghci.debugger/scripts/print005.stdout 1
+Breakpoint set at (5,15)
+Local bindings in scope:
+  as :: [a], a :: a, left :: [a], right :: [a]
+../QSort.hs:5:15-50> ../QSort.hs:5:15-50> right = (_t1::[a])
+../QSort.hs:5:15-50> ()
+../QSort.hs:5:15-50> right = [42 | (_t2::[Integer])]
+../QSort.hs:5:15-50> left = (_t3::[a])
+../QSort.hs:5:15-50> ()
+../QSort.hs:5:15-50> left = [4 | (_t4::[Integer])]
+../QSort.hs:5:15-50> 1
+../QSort.hs:5:15-50> left = [4]
+../QSort.hs:5:15-50> Returning to normal execution...
+You may need to reload your modules
addfile ./tests/ghc-regress/ghci.debugger/scripts/print006.script
hunk ./tests/ghc-regress/ghci.debugger/scripts/print006.script 1
-
+-- Recovery of types, opaque types
+-- This scenario demands propagation of types up in the tree of terms
+
+:set -fglasgow-exts
+:l ../Test 
+let t = O (map Just [[1,1],[2,2]])
+:p t
+seq _t1 ()  -- The contents of the opaque
+:p t
+seq _t3 ()  -- The tail of the list
+:p t
+seq _t5 ()  -- The 2nd element of the list
+:p t
+seq _t8 ()  -- The 1st element of the list inside the Just
+:p t
+seq _t11 () -- The 1st element of the outer list
+
+:p t       
+ -- The 1st Just must be completely typed, as we know the type of the list
addfile ./tests/ghc-regress/ghci.debugger/scripts/print006.stdout
hunk ./tests/ghc-regress/ghci.debugger/scripts/print006.stdout 1
+t = O (_t1::a)
+()
+t = O [(_t2::a) | (_t3::[a])]
+()
+t = O [(_t4::a),(_t5::a) | (_t6::[a])]
+()
+t = O [(_t7::Maybe [a]),Just [(_t8::Maybe [a]),(_t9::Maybe [a])] | (_t10::[Maybe [a]])]
+()
+t = O [(_t11::Maybe [Integer]),Just [2,2] | (_t12::[Maybe [Integer]])]
+()
+t = O [Just [(_t13::Maybe [Integer]),(_t14::Maybe [Integer])],Just [2,2] | (_t15::[Maybe [Integer]])]
addfile ./tests/ghc-regress/ghci.debugger/scripts/print007.script
hunk ./tests/ghc-regress/ghci.debugger/scripts/print007.script 1
+-- Handling of unboxed fields
+-- There seems to be a problem with -funbox-strict-fields
+-- and interpreted code.
+-- dataConRepArgTys says they are unboxed,
+-- but they seem to be not.
+-- So this test fails with wrong output
+:set  -fglasgow-exts
+:l ../Test
+
+let s = S2 'a' 'b'
+seq s ()
+:p s
+
+:set -funbox-strict-fields 
+:l
+:l ../Test
+
+let s = S2 'a' 'b'
+seq s ()
+:p s
+
+
+:set -funbox-strict-fields -O
+:l
+:l ../Test
+
+let s = S2 'a' 'b'
+seq s ()
+:p s
+
addfile ./tests/ghc-regress/ghci.debugger/scripts/print007.stdout
hunk ./tests/ghc-regress/ghci.debugger/scripts/print007.stdout 1
+()
+s = S2 'a' 'b'
+()
+s = S2 'a' 'b'
+()
+s = S2 'a' 'b'
addfile ./tests/ghc-regress/ghci.debugger/scripts/print008.script
hunk ./tests/ghc-regress/ghci.debugger/scripts/print008.script 1
-
+--Handling of polymorphic types: 
+-- testing that tyvars are instantiated to unknown
+
+:set -fglasgow-exts
+:l ../Test
+let t = O (map Just [[1,1],[2,2]])
+
+:p t
+:t _t1
+seq _t1 ()
+:p t
+seq _t2 ()
+:p t
+:t _t4
addfile ./tests/ghc-regress/ghci.debugger/scripts/print008.stdout
hunk ./tests/ghc-regress/ghci.debugger/scripts/print008.stdout 1
+t = O (_t1::a)
+_t1 :: GHC.Base.Unknown
+()
+t = O [(_t2::a) | (_t3::[a])]
+()
+t = O [Just [(_t4::Maybe [a]),(_t5::Maybe [a])] | (_t6::[Maybe [a]])]
+_t4 :: Maybe [GHC.Base.Unknown]
addfile ./tests/ghc-regress/ghci.debugger/scripts/print009.script
hunk ./tests/ghc-regress/ghci.debugger/scripts/print009.script 1
-
+-- Name generation
+-- Testing collisions
+
+let _t1 = "user value"
+let li = map Just [1..4]
+:p li
+_t1
+_t2
addfile ./tests/ghc-regress/ghci.debugger/scripts/print009.stdout
hunk ./tests/ghc-regress/ghci.debugger/scripts/print009.stdout 1
+li = (_t2::[Maybe Integer])
+"user value"
+[Just 1,Just 2,Just 3,Just 4]
addfile ./tests/ghc-regress/ghci.debugger/scripts/print010.script
hunk ./tests/ghc-regress/ghci.debugger/scripts/print010.script 1
-
+-- Another tricky type reconstruction case
+
+:set -fglasgow-exts
+:l ../Test
+
+let o = O (map id [0..3])
+:p o
+seq _t1 ()
+:p o
+seq _t2 ()
+length _t3
+:p o
addfile ./tests/ghc-regress/ghci.debugger/scripts/print010.stdout
hunk ./tests/ghc-regress/ghci.debugger/scripts/print010.stdout 1
+o = O (_t1::a)
+()
+o = O [(_t2::a) | (_t3::[a])]
+()
+3
+o = O [0,(_t4::Integer),(_t5::Integer),(_t6::Integer)]
}

[Some more tests for the ghci.debugger
Pepe Iborra <[email protected]>**20060827115413] {
adddir ./tests/ghc-regress/ghci.debugger/scripts/dynbk3
move ./tests/ghc-regress/ghci.debugger/scripts/dynbk003.script ./tests/ghc-regress/ghci.debugger/scripts/dynbk3/dynbk003.script
move ./tests/ghc-regress/ghci.debugger/scripts/dynbk003.stdout ./tests/ghc-regress/ghci.debugger/scripts/dynbk3/dynbk003.stdout
adddir ./tests/ghc-regress/ghci.debugger/scripts/dynbk1
move ./tests/ghc-regress/ghci.debugger/scripts/dynbk001.script ./tests/ghc-regress/ghci.debugger/scripts/dynbk1/dynbk001.script
move ./tests/ghc-regress/ghci.debugger/scripts/dynbk001.stdout ./tests/ghc-regress/ghci.debugger/scripts/dynbk1/dynbk001.stdout
adddir ./tests/ghc-regress/ghci.debugger/scripts/dynbk2
move ./tests/ghc-regress/ghci.debugger/scripts/dynbk002.script ./tests/ghc-regress/ghci.debugger/scripts/dynbk2/dynbk002.script
move ./tests/ghc-regress/ghci.debugger/scripts/dynbk002.stdout ./tests/ghc-regress/ghci.debugger/scripts/dynbk2/dynbk002.stdout
adddir ./tests/ghc-regress/ghci.debugger/scripts/dynbk4
move ./tests/ghc-regress/ghci.debugger/scripts/dynbk004.script ./tests/ghc-regress/ghci.debugger/scripts/dynbk4/dynbk004.script
move ./tests/ghc-regress/ghci.debugger/scripts/dynbk1 ./tests/ghc-regress/ghci.debugger/dynbk1
move ./tests/ghc-regress/ghci.debugger/scripts/dynbk2 ./tests/ghc-regress/ghci.debugger/dynbk2
move ./tests/ghc-regress/ghci.debugger/scripts/dynbk3 ./tests/ghc-regress/ghci.debugger/dynbk3
move ./tests/ghc-regress/ghci.debugger/scripts/dynbk4 ./tests/ghc-regress/ghci.debugger/dynbk4
adddir ./tests/ghc-regress/ghci.debugger/scripts/dynbk5
move ./tests/ghc-regress/ghci.debugger/scripts/dynbk5 ./tests/ghc-regress/ghci.debugger/dynbk5
adddir ./tests/ghc-regress/ghci.debugger/dynbk6
hunk ./tests/ghc-regress/ghci.debugger/break10/A.hs 3
+constant = ()
+
hunk ./tests/ghc-regress/ghci.debugger/break10/A.hs 10
-h _ = breakpoint ()
-
+h i = case i of
+	False -> 0
+	True  -> 1
+	
+j i = do 
+	 return ()
hunk ./tests/ghc-regress/ghci.debugger/break10/break010.script 6
-:breakpoint add Main 4
-:breakpoint add Main 8
+:breakpoint add Main 3
+:breakpoint add Main 6
+:breakpoint add Main 10
+:breakpoint add Main 14
hunk ./tests/ghc-regress/ghci.debugger/break10/break010.stdout 2
+*** Exception: No suitable breakpoint site found
+*** Exception: No suitable breakpoint site found
hunk ./tests/ghc-regress/ghci.debugger/break4/break004.script 1
--- Availability of Implicit params
+-- implicit params availability in breakpoints
hunk ./tests/ghc-regress/ghci.debugger/break4/break004.script 7
-?flag
+_flag
hunk ./tests/ghc-regress/ghci.debugger/break9/break009.stderr 13
+
addfile ./tests/ghc-regress/ghci.debugger/dynbk1/Makefile
hunk ./tests/ghc-regress/ghci.debugger/dynbk1/Makefile 1
+TOP=../../../..
+include $(TOP)/mk/boilerplate.mk
+include $(TOP)/mk/test.mk
addfile ./tests/ghc-regress/ghci.debugger/dynbk1/all.T
hunk ./tests/ghc-regress/ghci.debugger/dynbk1/all.T 1
+
+test('dynbk001', normal, ghci_script, ['dynbk001.script'])
addfile ./tests/ghc-regress/ghci.debugger/dynbk2/Makefile
hunk ./tests/ghc-regress/ghci.debugger/dynbk2/Makefile 1
+TOP=../../../..
+include $(TOP)/mk/boilerplate.mk
+include $(TOP)/mk/test.mk
addfile ./tests/ghc-regress/ghci.debugger/dynbk2/all.T
hunk ./tests/ghc-regress/ghci.debugger/dynbk2/all.T 1
+
+test('dynbk002', normal, ghci_script, ['dynbk002.script'])
addfile ./tests/ghc-regress/ghci.debugger/dynbk3/Makefile
hunk ./tests/ghc-regress/ghci.debugger/dynbk3/Makefile 1
+TOP=../../../..
+include $(TOP)/mk/boilerplate.mk
+include $(TOP)/mk/test.mk
addfile ./tests/ghc-regress/ghci.debugger/dynbk3/all.T
hunk ./tests/ghc-regress/ghci.debugger/dynbk3/all.T 1
+
+test('dynbk003', normal, ghci_script, ['dynbk003.script'])
hunk ./tests/ghc-regress/ghci.debugger/dynbk3/dynbk003.stdout 1
-Debugging mode is not enabled
addfile ./tests/ghc-regress/ghci.debugger/dynbk4/Makefile
hunk ./tests/ghc-regress/ghci.debugger/dynbk4/Makefile 1
+TOP=../../../..
+include $(TOP)/mk/boilerplate.mk
+include $(TOP)/mk/test.mk
addfile ./tests/ghc-regress/ghci.debugger/dynbk4/all.T
hunk ./tests/ghc-regress/ghci.debugger/dynbk4/all.T 1
+
+test('dynbk004', normal, ghci_script, ['dynbk004.script'])
addfile ./tests/ghc-regress/ghci.debugger/dynbk5/A.hs
hunk ./tests/ghc-regress/ghci.debugger/dynbk5/A.hs 1
-
+import TupleN
+
+tuple3 = $(tuple 3)
+
+normal_fn x = x + 2
+
+normal_fn2 x = tuple3 x
addfile ./tests/ghc-regress/ghci.debugger/dynbk5/Makefile
hunk ./tests/ghc-regress/ghci.debugger/dynbk5/Makefile 1
+TOP=../../../..
+include $(TOP)/mk/boilerplate.mk
+include $(TOP)/mk/test.mk
addfile ./tests/ghc-regress/ghci.debugger/dynbk5/all.T
hunk ./tests/ghc-regress/ghci.debugger/dynbk5/all.T 1
+
+test('dynbk005', normal, ghci_script, ['dynbk005.script'])
addfile ./tests/ghc-regress/ghci.debugger/dynbk5/dynbk005.script
hunk ./tests/ghc-regress/ghci.debugger/dynbk5/dynbk005.script 1
-
+-- TH generated code does not get instrumented
+-- This test fails and proves that -fdebugging is not compatible with TH codeope
+
+:set -fglasgow-exts
+:set -fth
+:set -fdebugging
+:l A
+:show bkptTable
addfile ./tests/ghc-regress/ghci.debugger/dynbk6/A.hs
hunk ./tests/ghc-regress/ghci.debugger/dynbk6/A.hs 1
-
+import Data.Typeable
+import Data.Generics
+
+data A = A deriving (Eq,Enum,Show,Ord,Typeable,Data)
+
+f x = id x
addfile ./tests/ghc-regress/ghci.debugger/dynbk6/Makefile
hunk ./tests/ghc-regress/ghci.debugger/dynbk6/Makefile 1
+TOP=../../../..
+include $(TOP)/mk/boilerplate.mk
+include $(TOP)/mk/test.mk
addfile ./tests/ghc-regress/ghci.debugger/dynbk6/all.T
hunk ./tests/ghc-regress/ghci.debugger/dynbk6/all.T 1
+
+test('dynbk006', normal, ghci_script, ['dynbk006.script'])
addfile ./tests/ghc-regress/ghci.debugger/dynbk6/dynbk006.script
hunk ./tests/ghc-regress/ghci.debugger/dynbk6/dynbk006.script 1
-
+-- TH generated code does not get instrumented
+
+:set -fglasgow-exts
+:set -fdebugging
+:l A
+:show bkptTable
addfile ./tests/ghc-regress/ghci.debugger/dynbk6/dynbk006.stderr
addfile ./tests/ghc-regress/ghci.debugger/dynbk6/dynbk006.stdout
hunk ./tests/ghc-regress/ghci.debugger/dynbk6/dynbk006.stdout 1
+Main: 1 breakpoint sites
hunk ./tests/ghc-regress/ghci.debugger/scripts/all.T 13
-test('dynbk001', normal, ghci_script, ['dynbk001.script'])
-test('dynbk002', normal, ghci_script, ['dynbk002.script'])
-test('dynbk003', normal, ghci_script, ['dynbk003.script'])
-test('dynbk004', normal, ghci_script, ['dynbk004.script'])
}

[Advances in the test suite
[email protected]**20061117150137] {
adddir ./tests/ghc-regress/ghci.debugger/dynbk7
adddir ./tests/ghc-regress/ghci.debugger/dynbk8
hunk ./mk/test.mk 112
-	$(PYTHON) $(RUNTESTS) $(RUNTEST_OPTS) \
+	python2.5 $(RUNTESTS) $(RUNTEST_OPTS) \
hunk ./tests/ghc-regress/ghci.debugger/break1/break001.stderr 3
-    Warning: Extracted ids: [a, c, b, i, d]
-			    [a, (), forall a. a -> a, a, Integer -> Integer -> Integer]
+    Warning: Extracted ids: [a, c, b, d, i]
+			    [a, (), forall a. a -> a, Integer -> Integer -> Integer, a]
hunk ./tests/ghc-regress/ghci.debugger/break1/break001.stdout 2
-  a :: a, c :: (), b :: forall a. a -> a, i :: a,
-  d :: Integer -> Integer -> Integer
+  a :: a, c :: (), b :: forall a. a -> a, d :: Integer -> Integer -> Integer,
+  i :: a
hunk ./tests/ghc-regress/ghci.debugger/break1/break001.stdout 8
-A.hs:8:9-18> a = (_t1::GHC.Base.Unknown)
+A.hs:8:9-18> a = (_t1::a)
addfile ./tests/ghc-regress/ghci.debugger/currentstate.txt
hunk ./tests/ghc-regress/ghci.debugger/currentstate.txt 1
+break 10 - fails as coalescing is temporarily disabled
+break 4  - implicit params are not working yet
+break 7  - status on mdo ?
+print 4  - My TH is broken ?
+print 7  - the issue with unboxed fields
+dynbk4   - status on mdo ?
+dynbk5   - My TH is broken ?
addfile ./tests/ghc-regress/ghci.debugger/dynbk5/TupleN.hs
hunk ./tests/ghc-regress/ghci.debugger/dynbk5/TupleN.hs 1
+module TupleN where
+import Language.Haskell.TH
hunk ./tests/ghc-regress/ghci.debugger/dynbk5/TupleN.hs 4
+tuple :: Int -> ExpQ
+tuple n = [|\list -> $(tupE (exprs [|list|])) |]
+  where
+    exprs list = [infixE (Just (list))
+                         (varE "!!")
+                         (Just (litE $ integerL (toInteger num)))
+                    | num <- [0..(n - 1)]]
hunk ./tests/ghc-regress/ghci.debugger/dynbk5/dynbk005.script 2
--- This test fails and proves that -fdebugging is not compatible with TH codeope
hunk ./tests/ghc-regress/ghci.debugger/dynbk5/dynbk005.script 7
-:show bkptTable
+:show breakpoints
hunk ./tests/ghc-regress/ghci.debugger/dynbk6/A.hs 1
-import Data.Typeable
-import Data.Generics
+
hunk ./tests/ghc-regress/ghci.debugger/dynbk6/A.hs 3
-data A = A deriving (Eq,Enum,Show,Ord,Typeable,Data)
hunk ./tests/ghc-regress/ghci.debugger/dynbk6/A.hs 4
-f x = id x
hunk ./tests/ghc-regress/ghci.debugger/dynbk6/dynbk006.script 1
--- TH generated code does not get instrumented
+-- Higher order Test: ensure dictionaries, coercions and friends don't show up
+
hunk ./tests/ghc-regress/ghci.debugger/dynbk6/dynbk006.script 4
-:set -fglasgow-exts
-:set -fdebugging
-:l A
-:show bkptTable
rmfile ./tests/ghc-regress/ghci.debugger/dynbk6/dynbk006.stderr
hunk ./tests/ghc-regress/ghci.debugger/dynbk6/dynbk006.stdout 1
-Main: 1 breakpoint sites
rmfile ./tests/ghc-regress/ghci.debugger/dynbk6/dynbk006.stdout
addfile ./tests/ghc-regress/ghci.debugger/dynbk7/A.hs
hunk ./tests/ghc-regress/ghci.debugger/dynbk7/A.hs 1
-
+f :: Maybe Int
+f = do
+   i <- return 1
+   j <- return 2
+   k <- return 3
+   return i
addfile ./tests/ghc-regress/ghci.debugger/dynbk7/Makefile
hunk ./tests/ghc-regress/ghci.debugger/dynbk7/Makefile 1
+TOP=../../../..
+include $(TOP)/mk/boilerplate.mk
+include $(TOP)/mk/test.mk
addfile ./tests/ghc-regress/ghci.debugger/dynbk7/all.T
hunk ./tests/ghc-regress/ghci.debugger/dynbk7/all.T 1
+
+test('dynbk007', normal, ghci_script, ['dynbk007.script'])
addfile ./tests/ghc-regress/ghci.debugger/dynbk7/dynbk007.script
hunk ./tests/ghc-regress/ghci.debugger/dynbk7/dynbk007.script 1
+-- Breakpoints in do statements
+
+:set -fdebugging
+:l A.hs
+-- :break add Main 3  This bkpt gets coalesced due to empty local bindings, which is fine
+:break add Main 4
+:break add Main 5
addfile ./tests/ghc-regress/ghci.debugger/dynbk7/dynbk007.stderr
addfile ./tests/ghc-regress/ghci.debugger/dynbk7/dynbk007.stdout
hunk ./tests/ghc-regress/ghci.debugger/dynbk7/dynbk007.stdout 1
+Breakpoint set at (4,8)
+Breakpoint set at (5,8)
addfile ./tests/ghc-regress/ghci.debugger/dynbk8/A.hs
hunk ./tests/ghc-regress/ghci.debugger/dynbk8/A.hs 1
+f :: Int -> [Int]
+f i = [ j | j <- [i], h <- [j], k <- [h]]
addfile ./tests/ghc-regress/ghci.debugger/dynbk8/Makefile
hunk ./tests/ghc-regress/ghci.debugger/dynbk8/Makefile 1
+TOP=../../../..
+include $(TOP)/mk/boilerplate.mk
+include $(TOP)/mk/test.mk
addfile ./tests/ghc-regress/ghci.debugger/dynbk8/all.T
hunk ./tests/ghc-regress/ghci.debugger/dynbk8/all.T 1
+
+test('dynbk008', normal, ghci_script, ['dynbk008.script'])
addfile ./tests/ghc-regress/ghci.debugger/dynbk8/dynbk008.script
hunk ./tests/ghc-regress/ghci.debugger/dynbk8/dynbk008.script 1
+-- Breakpoints on binding sites that start with a List Comprehension were being coalesced, as list comp. are desugared to Lets and we coalesce bkpts in binding sites that start with a Let (i.e. we postpone the breakpoint to the body of the Let)
+
+:set -fdebugging
+:l A.hs
+
+:break add Main 2
+
addfile ./tests/ghc-regress/ghci.debugger/dynbk8/dynbk008.stderr
addfile ./tests/ghc-regress/ghci.debugger/dynbk8/dynbk008.stdout
hunk ./tests/ghc-regress/ghci.debugger/dynbk8/dynbk008.stdout 1
+Breakpoint set at (2,6)
hunk ./tests/ghc-regress/ghci.debugger/scripts/print003.stdout 5
-t = O [Just [(_t4::Maybe [a]),(_t5::Maybe [a])] | (_t6::[Maybe [a]])]
+t = O [Just [(_t4::a),(_t5::a)] | (_t6::[Maybe [a]])]
hunk ./tests/ghc-regress/ghci.debugger/scripts/print006.stdout 7
-t = O [(_t7::Maybe [a]),Just [(_t8::Maybe [a]),(_t9::Maybe [a])] | (_t10::[Maybe [a]])]
+t = O [(_t7::Maybe [a]),Just [(_t8::a),(_t9::a)] | (_t10::[Maybe [a]])]
hunk ./tests/ghc-regress/ghci.debugger/scripts/print006.stdout 11
-t = O [Just [(_t13::Maybe [Integer]),(_t14::Maybe [Integer])],Just [2,2] | (_t15::[Maybe [Integer]])]
+t = O [Just [(_t13::Integer),(_t14::Integer)],Just [2,2] | (_t15::[Maybe [Integer]])]
hunk ./tests/ghc-regress/ghci.debugger/scripts/print008.stdout 6
-t = O [Just [(_t4::Maybe [a]),(_t5::Maybe [a])] | (_t6::[Maybe [a]])]
-_t4 :: Maybe [GHC.Base.Unknown]
+t = O [Just [(_t4::a),(_t5::a)] | (_t6::[Maybe [a]])]
+_t4 :: GHC.Base.Unknown
}

[accept output
[email protected]**20061121100425] {
hunk ./tests/ghc-regress/ghci.debugger/break1/break001.stdout 9
-b = (_t2::forall a. a -> a)
+b = (_t2::a -> a)
hunk ./tests/ghc-regress/ghci.debugger/scripts/print001.stdout 5
-li = [Just 0,(_t3::Maybe Integer),(_t4::Maybe Integer),(_t5::Maybe Integer),(_t6::Maybe Integer),(_t7::Maybe Integer)]
+li = [Just 0,
+      (_t3::Maybe Integer),
+      (_t4::Maybe Integer),
+      (_t5::Maybe Integer),
+      (_t6::Maybe Integer),(_t7::Maybe Integer)]
hunk ./tests/ghc-regress/ghci.debugger/scripts/print006.stdout 7
-t = O [(_t7::Maybe [a]),Just [(_t8::a),(_t9::a)] | (_t10::[Maybe [a]])]
+t = O [(_t7::Maybe [a]),
+       Just [(_t8::a),(_t9::a)] | (_t10::[Maybe [a]])]
hunk ./tests/ghc-regress/ghci.debugger/scripts/print006.stdout 10
-t = O [(_t11::Maybe [Integer]),Just [2,2] | (_t12::[Maybe [Integer]])]
+t = O [(_t11::Maybe [Integer]),
+       Just [2,2] | (_t12::[Maybe [Integer]])]
hunk ./tests/ghc-regress/ghci.debugger/scripts/print006.stdout 13
-t = O [Just [(_t13::Integer),(_t14::Integer)],Just [2,2] | (_t15::[Maybe [Integer]])]
+t = O [Just [(_t13::Integer),(_t14::Integer)],
+       Just [2,2] | (_t15::[Maybe [Integer]])]
}

[Accepted output
[email protected]**20061128222435] {
hunk ./tests/ghc-regress/ghci.debugger/scripts/print001.stdout 3
-li = [Just 0 | (_t2::[Maybe Integer])]
+li = [Just 0
+       | (_t2::[Maybe Integer])]
hunk ./tests/ghc-regress/ghci.debugger/scripts/print001.stdout 10
-      (_t6::Maybe Integer),(_t7::Maybe Integer)]
-li = [Just 0,_,_,_,_,_]
+      (_t6::Maybe Integer)
+      ,(_t7::Maybe Integer)]
+li = [Just 0,_,_,_,_
+      ,_]
hunk ./tests/ghc-regress/ghci.debugger/scripts/print003.stdout 3
-t = O [(_t2::a) | (_t3::[a])]
+t = O [(_t2::a)
+        | (_t3::[a])]
hunk ./tests/ghc-regress/ghci.debugger/scripts/print003.stdout 6
-t = O [Just [(_t4::a),(_t5::a)] | (_t6::[Maybe [a]])]
+t = O [Just [(_t4::a)
+	     ,(_t5::a)]
+        | (_t6::[Maybe [a]])]
hunk ./tests/ghc-regress/ghci.debugger/scripts/print003.stdout 10
-t = O [Just [1,1] | (_t7::[Maybe [Integer]])]
+t = O [Just [1,1]
+        | (_t7::[Maybe [Integer]])]
hunk ./tests/ghc-regress/ghci.debugger/scripts/print004.stdout 5
-b = [Just 1 | (_t2::[Maybe Integer])]
+b = [Just 1
+      | (_t2::[Maybe Integer])]
hunk ./tests/ghc-regress/ghci.debugger/scripts/print004.stdout 8
-b = [Just 1,(_t3::Maybe Integer),(_t4::Maybe Integer),(_t5::Maybe Integer)]
-b = [Just 1,_,_,_]
+b = [Just 1,(_t3::Maybe Integer),(_t4::Maybe Integer)
+     ,(_t5::Maybe Integer)]
+b = [Just 1,_,_
+     ,_]
hunk ./tests/ghc-regress/ghci.debugger/scripts/print004.stdout 17
-d = [TupleT 1 | (_t7::[Type])]
+d = [TupleT 1
+      | (_t7::[Type])]
hunk ./tests/ghc-regress/ghci.debugger/scripts/print004.stdout 20
-d = [TupleT 1,(_t8::Type),(_t9::Type),(_t10::Type)]
+d = [TupleT 1,(_t8::Type),(_t9::Type)
+     ,(_t10::Type)]
hunk ./tests/ghc-regress/ghci.debugger/scripts/print006.stdout 3
-t = O [(_t2::a) | (_t3::[a])]
+t = O [(_t2::a)
+        | (_t3::[a])]
hunk ./tests/ghc-regress/ghci.debugger/scripts/print006.stdout 6
-t = O [(_t4::a),(_t5::a) | (_t6::[a])]
+t = O [(_t4::a),(_t5::a)
+        | (_t6::[a])]
hunk ./tests/ghc-regress/ghci.debugger/scripts/print006.stdout 10
-       Just [(_t8::a),(_t9::a)] | (_t10::[Maybe [a]])]
+       Just [(_t8::a)
+	     ,(_t9::a)]
+        | (_t10::[Maybe [a]])]
hunk ./tests/ghc-regress/ghci.debugger/scripts/print006.stdout 14
-t = O [(_t11::Maybe [Integer]),
-       Just [2,2] | (_t12::[Maybe [Integer]])]
+t = O [(_t11::Maybe [Integer]),Just [2,2]
+        | (_t12::[Maybe [Integer]])]
hunk ./tests/ghc-regress/ghci.debugger/scripts/print006.stdout 17
-t = O [Just [(_t13::Integer),(_t14::Integer)],
-       Just [2,2] | (_t15::[Maybe [Integer]])]
+t = O [Just [(_t13::Integer)
+	     ,(_t14::Integer)],
+       Just [2,2]
+        | (_t15::[Maybe [Integer]])]
hunk ./tests/ghc-regress/ghci.debugger/scripts/print008.stdout 4
-t = O [(_t2::a) | (_t3::[a])]
+t = O [(_t2::a)
+        | (_t3::[a])]
hunk ./tests/ghc-regress/ghci.debugger/scripts/print008.stdout 7
-t = O [Just [(_t4::a),(_t5::a)] | (_t6::[Maybe [a]])]
+t = O [Just [(_t4::a)
+	     ,(_t5::a)]
+        | (_t6::[Maybe [a]])]
hunk ./tests/ghc-regress/ghci.debugger/scripts/print010.stdout 3
-o = O [(_t2::a) | (_t3::[a])]
+o = O [(_t2::a)
+        | (_t3::[a])]
hunk ./tests/ghc-regress/ghci.debugger/scripts/print010.stdout 7
-o = O [0,(_t4::Integer),(_t5::Integer),(_t6::Integer)]
+o = O [0,(_t4::Integer),(_t5::Integer)
+       ,(_t6::Integer)]
}

[Test type reconstruction in presence of newtypes
[email protected]**20061130122145] {
hunk ./tests/ghc-regress/ghci.debugger/Test.hs 12
+
+newtype MyInt = My Int
+  deriving (Eq,Show,Num, Enum)
hunk ./tests/ghc-regress/ghci.debugger/scripts/all.T 12
+test('print011', normal, ghci_script, ['print011.script'])
+
addfile ./tests/ghc-regress/ghci.debugger/scripts/print011.script
hunk ./tests/ghc-regress/ghci.debugger/scripts/print011.script 1
+-- Type reconstruction with newtypes involved
+
+:set -fglasgow-exts
+:l ../Test
+
+let i = map Just [My 1 .. My 3]
+:p i
+seq _t1 ()
+:p i
+seq _t2 ()
+:p i
+
addfile ./tests/ghc-regress/ghci.debugger/scripts/print011.stdout
hunk ./tests/ghc-regress/ghci.debugger/scripts/print011.stdout 1
-
+i = (_t1::[Maybe MyInt])
+()
+i = [(_t2::Maybe MyInt) | (_t3::[Maybe MyInt])]
+()
+i = [My 1 | (_t4::[Maybe MyInt])]
}

[Accept output
[email protected]**20061130122221] {
hunk ./tests/ghc-regress/ghci.debugger/QSort.hs 2
-import GHC.Exts
+
hunk ./tests/ghc-regress/ghci.debugger/currentstate.txt 8
-
+dynbk8   - Coalescing is not perfect :S
hunk ./tests/ghc-regress/ghci.debugger/dynbk8/A.hs 4
+g i = i
hunk ./tests/ghc-regress/ghci.debugger/scripts/print001.stdout 3
-li = [Just 0
-       | (_t2::[Maybe Integer])]
+li = [Just 0 | (_t2::[Maybe Integer])]
hunk ./tests/ghc-regress/ghci.debugger/scripts/print001.stdout 11
-li = [Just 0,_,_,_,_
-      ,_]
+li = [Just 0,_,_,_,_,_]
hunk ./tests/ghc-regress/ghci.debugger/scripts/print003.stdout 3
-t = O [(_t2::a)
-        | (_t3::[a])]
+t = O [(_t2::a) | (_t3::[a])]
hunk ./tests/ghc-regress/ghci.debugger/scripts/print003.stdout 5
-t = O [Just [(_t4::a)
-	     ,(_t5::a)]
-        | (_t6::[Maybe [a]])]
+t = O [Just [(_t4::a),(_t5::a)] | (_t6::[Maybe [a]])]
hunk ./tests/ghc-regress/ghci.debugger/scripts/print003.stdout 7
-t = O [Just [1,1]
-        | (_t7::[Maybe [Integer]])]
+t = O [Just [1,1] | (_t7::[Maybe [Integer]])]
hunk ./tests/ghc-regress/ghci.debugger/scripts/print004.stdout 5
-b = [Just 1
-      | (_t2::[Maybe Integer])]
+b = [Just 1 | (_t2::[Maybe Integer])]
hunk ./tests/ghc-regress/ghci.debugger/scripts/print004.stdout 7
-b = [Just 1,(_t3::Maybe Integer),(_t4::Maybe Integer)
+b = [Just 1,
+     (_t3::Maybe Integer),
+     (_t4::Maybe Integer)
hunk ./tests/ghc-regress/ghci.debugger/scripts/print004.stdout 11
-b = [Just 1,_,_
-     ,_]
+b = [Just 1,_,_,_]
hunk ./tests/ghc-regress/ghci.debugger/scripts/print004.stdout 17
-d = [TupleT 1
-      | (_t7::[Type])]
+d = [TupleT 1 | (_t7::[Type])]
hunk ./tests/ghc-regress/ghci.debugger/scripts/print004.stdout 19
-d = [TupleT 1,(_t8::Type),(_t9::Type)
-     ,(_t10::Type)]
+d = [TupleT 1,(_t8::Type),(_t9::Type),(_t10::Type)]
hunk ./tests/ghc-regress/ghci.debugger/scripts/print006.stdout 3
-t = O [(_t2::a)
-        | (_t3::[a])]
+t = O [(_t2::a) | (_t3::[a])]
hunk ./tests/ghc-regress/ghci.debugger/scripts/print006.stdout 5
-t = O [(_t4::a),(_t5::a)
-        | (_t6::[a])]
+t = O [(_t4::a),(_t5::a) | (_t6::[a])]
hunk ./tests/ghc-regress/ghci.debugger/scripts/print006.stdout 8
-       Just [(_t8::a)
-	     ,(_t9::a)]
+       Just [(_t8::a),(_t9::a)]
hunk ./tests/ghc-regress/ghci.debugger/scripts/print006.stdout 11
-t = O [(_t11::Maybe [Integer]),Just [2,2]
+t = O [(_t11::Maybe [Integer]),
+       Just [2,2]
hunk ./tests/ghc-regress/ghci.debugger/scripts/print006.stdout 15
-t = O [Just [(_t13::Integer)
-	     ,(_t14::Integer)],
+t = O [Just [(_t13::Integer),(_t14::Integer)],
hunk ./tests/ghc-regress/ghci.debugger/scripts/print008.stdout 4
-t = O [(_t2::a)
-        | (_t3::[a])]
+t = O [(_t2::a) | (_t3::[a])]
hunk ./tests/ghc-regress/ghci.debugger/scripts/print008.stdout 6
-t = O [Just [(_t4::a)
-	     ,(_t5::a)]
-        | (_t6::[Maybe [a]])]
+t = O [Just [(_t4::a),(_t5::a)] | (_t6::[Maybe [a]])]
hunk ./tests/ghc-regress/ghci.debugger/scripts/print010.stdout 3
-o = O [(_t2::a)
-        | (_t3::[a])]
+o = O [(_t2::a) | (_t3::[a])]
hunk ./tests/ghc-regress/ghci.debugger/scripts/print010.stdout 6
-o = O [0,(_t4::Integer),(_t5::Integer)
-       ,(_t6::Integer)]
+o = O [0,(_t4::Integer),(_t5::Integer),(_t6::Integer)]
}

[More tests for the closure viewer
[email protected]**20061201143348] {
addfile ./tests/ghc-regress/ghci.debugger/GADT.hs
hunk ./tests/ghc-regress/ghci.debugger/GADT.hs 1
+data Empty
+data NonEmpty
hunk ./tests/ghc-regress/ghci.debugger/GADT.hs 4
+data SafeList x y where
+     Nil :: SafeList x Empty
+     Cons:: x -> SafeList x y  -> SafeList x NonEmpty
+--  deriving Show
+
+safeHead :: SafeList x NonEmpty -> x
+safeHead (Cons x _) = x
+
+foo = Cons 3 (Cons 6 (Cons 9 Nil))
+
+
+data Dict x where 
+	Dict :: Num x => x -> Dict x
+	
+data Exist where
+	Exist :: forall a. a -> Exist
hunk ./tests/ghc-regress/ghci.debugger/scripts/all.T 13
-
-
-
+test('print012', normal, ghci_script, ['print012.script'])
+test('print013', normal, ghci_script, ['print013.script'])
+test('print014', normal, ghci_script, ['print014.script'])
addfile ./tests/ghc-regress/ghci.debugger/scripts/print012.script
hunk ./tests/ghc-regress/ghci.debugger/scripts/print012.script 1
+-- GADTs not being fully supported yet, this test is expected to fail
hunk ./tests/ghc-regress/ghci.debugger/scripts/print012.script 3
+:set -fglasgow-exts
+:l ../GADT
+:a ../Test
+:m +Main
+let o = O (id foo)
+:p o
+seq _t1 ()
+:p o
+seq _t3 ()
+:p o
addfile ./tests/ghc-regress/ghci.debugger/scripts/print012.stdout
hunk ./tests/ghc-regress/ghci.debugger/scripts/print012.stdout 1
-
+o = O (_t1::a)
+()
+o = O Cons (_t2::a) (_t3::SafeList a b)
+()
+o = O Cons (_t4::a) Cons (_t5::a) (_t6::SafeList b a)
addfile ./tests/ghc-regress/ghci.debugger/scripts/print013.script
hunk ./tests/ghc-regress/ghci.debugger/scripts/print013.script 1
+-- Test handling of extra fields in the representation due to dictionaries
hunk ./tests/ghc-regress/ghci.debugger/scripts/print013.script 3
+:set -fglasgow-exts
+:l ../GADT
+
+let d = Dict 1
+:p d
+seq _t1 ()
+:p d
addfile ./tests/ghc-regress/ghci.debugger/scripts/print013.stdout
hunk ./tests/ghc-regress/ghci.debugger/scripts/print013.stdout 1
+d = Dict (_t1::Integer)
+()
+d = Dict 1
addfile ./tests/ghc-regress/ghci.debugger/scripts/print014.script
hunk ./tests/ghc-regress/ghci.debugger/scripts/print014.script 1
+-- Test handling of extra fields in the representation due to existentials.
hunk ./tests/ghc-regress/ghci.debugger/scripts/print014.script 3
+:set -fglasgow-exts
+:l ../GADT
+
+let e = Exist 1
+:p e
+seq _t1 ()
+:p e
addfile ./tests/ghc-regress/ghci.debugger/scripts/print014.stdout
hunk ./tests/ghc-regress/ghci.debugger/scripts/print014.stdout 1
+e = Exist (_t1::a)
+()
+e = Exist 1
}

[Added more tests with newtypes
[email protected]**20061208171620] {
hunk ./tests/ghc-regress/ghci.debugger/Test.hs 16
+newtype MkT a = MkT a
+  deriving (Show)
+
+data MkT2 a = MkT2 (MkT a)
+  deriving Show
+
+data Param2 s r = P2 (FakeSTRef r (s(Param2 s r)))
+		| P2Nil
+data FakeSTRef r s = Ref s
+
+testParam2 = O (P2 (Ref P2Nil))
+
hunk ./tests/ghc-regress/ghci.debugger/scripts/all.T 16
+
+test('print015', normal, ghci_script, ['print015.script'])
+test('print016', normal, ghci_script, ['print016.script'])
+test('print017', normal, ghci_script, ['print017.script'])
addfile ./tests/ghc-regress/ghci.debugger/scripts/print015.script
hunk ./tests/ghc-regress/ghci.debugger/scripts/print015.script 1
+-- Data.Set makes for a wondeful test of unboxed fields
+
+:m +Data.Set
+let s = fromList [1,2,3]
+s
+:p s
addfile ./tests/ghc-regress/ghci.debugger/scripts/print015.stdout
hunk ./tests/ghc-regress/ghci.debugger/scripts/print015.stdout 1
+fromList [1,2,3]
+s = fromList [1,2,3]
addfile ./tests/ghc-regress/ghci.debugger/scripts/print016.script
hunk ./tests/ghc-regress/ghci.debugger/scripts/print016.script 1
-
+-- Type reconstruction with newtypes involved, more gruesome. Can't solve this one for now
+
+:set -fglasgow-exts
+:l ../Test
+let a = map MkT [1..2]
+:p a
+seq _t1 ()
+:p a
+seq _t2 ()
+:p a
addfile ./tests/ghc-regress/ghci.debugger/scripts/print016.stdout
hunk ./tests/ghc-regress/ghci.debugger/scripts/print016.stdout 1
+a = (_t1::[MkT Integer])
+()
+a = [(_t2::MkT Integer) | (_t3::[MkT Integer])]
+()
+a = [MkT 1 | (_t4::[MkT Integer])]
addfile ./tests/ghc-regress/ghci.debugger/scripts/print017.script
hunk ./tests/ghc-regress/ghci.debugger/scripts/print017.script 1
+-- More newtypes goodness
+
+:set -fglasgow-exts
+:l ../Test
+let a = map (MkT2 . MkT) [1..2]
+:p a
+seq _t1 ()
+:p a
+seq _t2 ()
+:p a
+seq _t4 ()
+:p a
addfile ./tests/ghc-regress/ghci.debugger/scripts/print017.stdout
hunk ./tests/ghc-regress/ghci.debugger/scripts/print017.stdout 1
+a = (_t1::[MkT2 Integer])
+()
+a = [(_t2::MkT2 Integer) | (_t3::[MkT2 Integer])]
+()
+a = [MkT2 (_t4::MkT Integer) | (_t5::[MkT2 Integer])]
+()
+a = [MkT2 (MkT 1) | (_t6::[MkT2 Integer])]
}

[Improved a test
[email protected]**20061208171701] {
hunk ./tests/ghc-regress/ghci.debugger/scripts/print011.script 6
-let i = map Just [My 1 .. My 3]
+let i = map (Just . Just) [My 1 .. My 3]
hunk ./tests/ghc-regress/ghci.debugger/scripts/print011.script 12
-
-
+seq _t4 ()
+:p i
hunk ./tests/ghc-regress/ghci.debugger/scripts/print011.stdout 1
-i = (_t1::[Maybe MyInt])
+i = (_t1::[Maybe (Maybe MyInt)])
hunk ./tests/ghc-regress/ghci.debugger/scripts/print011.stdout 3
-i = [(_t2::Maybe MyInt) | (_t3::[Maybe MyInt])]
+i = [(_t2::Maybe (Maybe MyInt)) | (_t3::[Maybe (Maybe MyInt)])]
hunk ./tests/ghc-regress/ghci.debugger/scripts/print011.stdout 5
-i = [My 1 | (_t4::[Maybe MyInt])]
+i = [Just (_t4::Maybe MyInt) | (_t5::[Maybe (Maybe MyInt)])]
+()
+i = [Just (Just 1) | (_t6::[Maybe (Maybe Int)])]
+
}

[Accept output
[email protected]**20061208174426] {
hunk ./tests/ghc-regress/ghci.debugger/dynbk4/dynbk004.script 9
-:break add Main 10
+:break add Main 14
addfile ./tests/ghc-regress/ghci.debugger/dynbk4/dynbk004.stderr
hunk ./tests/ghc-regress/ghci.debugger/dynbk4/dynbk004.stderr 1
+
+../mdo.hs:30:29:
+    Warning: Extracted ids: [x, f, xs, l]
+			    [a, N a, [a], N a]
addfile ./tests/ghc-regress/ghci.debugger/dynbk4/dynbk004.stdout
hunk ./tests/ghc-regress/ghci.debugger/dynbk4/dynbk004.stdout 1
+Breakpoint set at (13,15)
+Breakpoint set at (12,15)
+Breakpoint set at (11,15)
+Breakpoint set at (14,15)
}

[Fix mdo test
[email protected]**20061208175837] {
hunk ./tests/ghc-regress/ghci.debugger/break7/break007.stderr 3
-    Warning: Extracted ids: [x, f, xs, c, l]
-			    [a, N a, [a], N a, N a]
+    Warning: Extracted ids: [x, f, xs, l]
+			    [a, N a, [a], N a]
hunk ./tests/ghc-regress/ghci.debugger/break7/break007.stdout 2
-  x :: a, f :: N a, xs :: [a], c :: N a, l :: N a
+  x :: a, f :: N a, xs :: [a], l :: N a
}

Context:

[fix old regex test, add two new ones
Simon Marlow <[email protected]>**20060824140622] 
[Fix typo
Esa Ilari Vuokko <[email protected]>**20060823202055] 
[update tests
Don Stewart <[email protected]>**20060823155147] 
[Driver: Add THREADS-support
Esa Ilari Vuokko <[email protected]>**20060822213145] 
[Fix some THREADED-caused fails
Esa Ilari Vuokko <[email protected]>**20060821230831] 
[Fix driver not to normalise output when using platform specific output files
Esa Ilari Vuokko <[email protected]>**20060813124649] 
[accept output
Simon Marlow <[email protected]>**20060823092224] 
[add test for Data/Fixed module, in libraries folder
Ashley Yakeley <[email protected]>**20060823073948] 
[accept output
Simon Marlow <[email protected]>**20060822102811] 
[accept output (improvements)
Simon Marlow <[email protected]>**20060822102609] 
[Update output (remove "In the call...")
[email protected]**20060818161412] 
[Update output
[email protected]**20060818155640] 
[Add test for tagToEnum#
[email protected]**20060816203023] 
[Two more tests
[email protected]**20060815080606] 
[Update expected output
[email protected]**20060814090354] 
[Add flag to test
[email protected]**20060811142744] 
[More upated output
[email protected]**20060811133858] 
[More updated output
[email protected]**20060811133233] 
[Update test outpuot
[email protected]**20060811131132] 
[Remove typecheck.testeq1.run.stdout 
[email protected]**20060811125001] 
[Comments in Makefile
[email protected]**20060811123001] 
[This test now compiles without errors
Simon Marlow <[email protected]>**20060811102354] 
[accept output
Simon Marlow <[email protected]>**20060811101931] 
[base-1.0 ==> base-2.0
Simon Marlow <[email protected]>**20060811101925] 
[base-1.0 ==> base-2.0
Simon Marlow <[email protected]>**20060811101619] 
[accept output
Simon Marlow <[email protected]>**20060811101428] 
[update FFI syntax
Simon Marlow <[email protected]>**20060811100321] 
[expect fail for threaded2 way, fork isn't supported in SMP mode (yet)
Simon Marlow <[email protected]>**20060811100315] 
[fix FFI syntax
Simon Marlow <[email protected]>**20060811095918] 
[accept output
Simon Marlow <[email protected]>**20060811095501] 
[Fix some Array.bounds calls to Array.getBounds
Esa Ilari Vuokko <[email protected]>**20060809220653] 
[Add tests for incomplete-pattern warnings
[email protected]**20060808144017] 
[Lazy patterns can't be unboxed (Trac 845)
[email protected]**20060808135821] 
[Test error message (Trac 844)
[email protected]**20060808133927] 
[Add tc206; edit a couple of others
[email protected]**20060808091517] 
[Add test for overlapping pattern warnings for lazy patterns
[email protected]**20060727154926] 
[Add a test for infix type constructors
[email protected]**20060727154247] 
[Add test for unboxed fields in GADT record selectors
[email protected]**20060802125121] 
[add new cabal test
Simon Marlow <[email protected]>**20060727140657] 
[test fixes and new tests for package support
Simon Marlow <[email protected]>**20060727140436] 
[accept output (improved error messages due to PrintUnqual changes)
Simon Marlow <[email protected]>**20060727140124] 
[accept output
Simon Marlow <[email protected]>**20060727134921] 
[add test for Ix bug
Simon Marlow <[email protected]>**20060721100303] 
[document stage=2, and clean up a little.
Simon Marlow <[email protected]>**20060710153547] 
[remove unused imports
Simon Marlow <[email protected]>**20060616105302] 
[Test Trac bug #795
[email protected]**20060703151859] 
[encorporate rest of property checks for Data.ByteString
Don Stewart <[email protected]>**20060702093816] 
[Add regress tests for fusion rules. Makes sure they fire, and rewrite to correct result
Don Stewart <[email protected]>**20060702090703] 
[Add model-based tests for ByteString.Lazy<=>ByteString<=>Data.list
Don Stewart <[email protected]>**20060702055523] 
[Accept output change
[email protected]**20060626111936] 
[Add test for infix function definitions
[email protected]**20060519103259] 
[Test for pattern type sigs in do-notation
[email protected]**20060504142058] 
[add test from #799
Simon Marlow <[email protected]>**20060623094712] 
[omit conc039 for threaded2
Simon Marlow <[email protected]>**20060622092716] 
[robustify the test a little
Simon Marlow <[email protected]>**20060622092148] 
[omit conc036 for GHCi
Simon Marlow <[email protected]>**20060622091811] 
[add a prof/TH test
Simon Marlow <[email protected]>**20060622090109] 
[accept output
Simon Marlow <[email protected]>**20060622085217] 
[re-enable various tests with -threaded that now work
Simon Marlow <[email protected]>**20060614144922] 
[fix this test to work propertly with -threaded
Simon Marlow <[email protected]>**20060614144256] 
[Fix this test to work properly with -threaded
Simon Marlow <[email protected]>**20060614144219] 
[test for NCG bug
Simon Marlow <[email protected]>**20060606112614] 
[accept output
Simon Marlow <[email protected]>**20060601123936
 NOTE: I made a slight tweak to Alex to improve the lexical error messages,
 to get correct output for these tests you need an updated Alex from darcs.
] 
[disable ffi016 for GHCi
Simon Marlow <[email protected]>**20060530095146] 
[first attempt at being boring
Ashley Yakeley <[email protected]>**20060526070327] 
[Update expected output
Don Stewart <[email protected]>**20060525071135] 
[update expected output. tougher replicate test.
Don Stewart <[email protected]>**20060517020540] 
[accept output
Simon Marlow <[email protected]>**20060508073357] 
[More QC tests. Update output
Don Stewart <[email protected]>**20060507042341] 
[More QC properties. Update output
Don Stewart <[email protected]>**20060506043305] 
[Add test for newtypes in FFI
[email protected]**20060426183636
 
 The standard FFI says that newtypes are automatically unwrapped in
 argument and result types.  This test checks that it also happens
 for newtype-wrapping of the IO monad itself, a recent change to
 GHC.
 
] 
[And add QC test for group/groupBy
Don Stewart <[email protected]>**20060501065658] 
[More QC properties, for fold{lr}1. Update expected output
Don Stewart <[email protected]>**20060430084252] 
[Import Data.ByteString regression tests
Don Stewart <[email protected]>**20060428122838] 
[avoid running out of stack
Simon Marlow <[email protected]>**20060428083855] 
[test Bool arguments too
Simon Marlow <[email protected]>**20060418144834] 
[Test for foralls to the right of =>
[email protected]**20060418125116] 
[Test for error recovery in TH
[email protected]**20060414120213] 
[forgot to add this file
Simon Marlow <[email protected]>**20060413080300] 
[Add a test for SpecConstr + GADTs
[email protected]**20060412153402] 
[Memo-function test
[email protected]**20060410164304
 
 Checks that preInlineUnconditionally isn't to eager!
 (If it is, this test goes exponential.)
 
] 
[add a test for a division bug in the NCG
Simon Marlow <[email protected]>**20060412144627] 
[Add test for newtype deriving (thanks to Ross)
[email protected]**20060402215709] 
[update for new source tree layout
Simon Marlow <[email protected]>**20060410091202] 
[add a test for a blackhole GC bug
Simon Marlow <[email protected]>**20060407101628] 
[the "threaded" way was renamed to "threaded1"/"threaded2"
Simon Marlow <[email protected]>**20060407101619] 
[Track the GHC source tree reorganisation
Simon Marlow <[email protected]>**20060407041720] 
[omit asm ways for this test on x86
Simon Marlow <[email protected]>**20060407080546] 
[avoid running out of stack for non-optimised ways
Simon Marlow <[email protected]>**20060407080032] 
[add test for ForeignPtrEnv
Simon Marlow <[email protected]>**20060405160129] 
[omit ffi007 and ffi008 for GHCi (see comment for details)
Simon Marlow <[email protected]>**20060405133421] 
[fix tests for Windows
Simon Marlow <[email protected]>**20060404153133] 
[unnecessary mingw-specific output
Simon Marlow <[email protected]>**20060404150047] 
[windows output
Simon Marlow <[email protected]>**20060404145525] 
[crummy fix for Windows
Simon Marlow <[email protected]>**20060404145128] 
[fix the expect_fail_if_windows macro
Simon Marlow <[email protected]>**20060404144611] 
[Add scoped tyvar test
[email protected]**20060327123134] 
[attempt to work around restrictions with fork() & pthreads
Simon Marlow <[email protected]>**20060323134034
 In the child process, call exec() directly instead of using
 System.Cmd.system, which involves another fork()/exec() and a
 non-blocking wait.  The problem is that in a forked child of a
 threaded process, it isn't safe to do much except exec() according to
 POSIX.  In fact calling pthread_create() in the child causes the
 pthread library to fail with an error on FreeBSD.
] 
[accept output (better error locations)
Simon Marlow <[email protected]>**20060323102719] 
[fix to previous
Simon Marlow <[email protected]>**20060323102523] 
[fcntl-FreeBSD
[email protected]**20060321165137
 Expect failure of queryfdoption01 on FreeBSD (6/7): /dev/null                                                                                                   
 can't be  switched to non-blocking i/o, so fcntl() will throw an error.
 Unfortunately this went to the old CVS first.
] 
[fix for GHCi tests that raise exceptions or exit
Simon Marlow <[email protected]>**20060320124648
 We need to call GHC.TopHandler.runIOFastExit instead of
 GHC.TopHandler.runIO.  Recent fixes to the shutdown code have meant
 that when a thread invokes shutdownHaskellAndExit(), other main
 threads get a chance to exit (as they should), but this means that we
 might have a race between the child thread trying to exit the program
 and the main thread doing the same.  In the case of GHCi, if we're
 running an interpreted computation that needs to exit (as some tests
 do), then we really want this child thread to exit the program rather
 than the main thread.
] 
[sort the keys when outputting the summary
Simon Marlow <[email protected]>**20060320114811] 
[fix a regex that was too slow
Simon Marlow <[email protected]>**20060316163903] 
[ignore ".exe" in program output, for Windows
Simon Marlow <[email protected]>**20060316155440] 
[fix for Win32
Simon Marlow <[email protected]>**20060316154734] 
[remove some dead code
Simon Marlow <[email protected]>**20060315114645] 
[Tidy up the testsuite output by combinding failures for multiple ways
Simon Marlow <[email protected]>**20060315112501
 
 Before:
    tc056(normal)
    tc056(opt)
    tc056(optasm)
    tc056(prof)
    tc056(profasm)
    tc056(unreg)
 
 After:
    tc056(normal,opt,optasm,prof,profasm,unreg)
] 
[patch up this test again
Simon Marlow <[email protected]>**20060314151844] 
[process003 doesn't work with GHCi, omit it
Simon Marlow <[email protected]>**20060314151657] 
[fix clean target
Simon Marlow <[email protected]>**20060314124525] 
[add test for #713
Simon Marlow <[email protected]>**20060314121232] 
[Require -fallow-undecidable-instances
[email protected]**20060223141727] 
[Test for deprecated constructors
[email protected]**20060223141701] 
[Update output
[email protected]**20060223135107] 
[Update output and add -fallow-undecidable-instances where necesssary
[email protected]**20060223133629] 
[Add -fallow-undecidable-instances to reflect more accurate termination test in fundeps
[email protected]**20060223133113] 
[Remove dependence on haskell98 package in expected output
[email protected]**20060223130208] 
[Accept output
[email protected]**20060223125845] 
[Add expected output for rn049
[email protected]**20060223124018] 
[Accept (slightly mysterious) output formatting changes
[email protected]**20060223123611] 
[Update output
[email protected]**20060223123516] 
[Update output (TH no longer depends on haskell98 package)
[email protected]**20060223123331] 
[Add a fundep loop test
[email protected]**20060222101347] 
[add expected output for x86_64
Simon Marlow <[email protected]>**20060223121322] 
[accept output
Simon Marlow <[email protected]>**20060210151137] 
[remove smp way, replace threaded with threaded1/threaded2
Simon Marlow <[email protected]>**20060210123325
 
 threaded1 = -threaded -debug
 threaded2 = -O -threaded, and +RTS -N2 -RTS at runtime
] 
[Add test for bug 685
[email protected]**20060208160511] 
[Add test from Markus Lauer
[email protected]**20060206084209] 
["s" is in GhcRTSWays now
Simon Marlow <[email protected]>**20060208150646] 
[allow setting stage=N variable to select compiler in the testsuite
Simon Marlow <[email protected]>**20060208140219] 
[Eta expand gzip test to match new higher-rank-type story
[email protected]**20060202131654] 
[Fix GADT tests
[email protected]**20060202130236] 
[New GADT desugaring test
[email protected]**20060202124603] 
[Remove package lang reqt
[email protected]**20060202102030] 
[Update to track improvements in typechecker
[email protected]**20060201171451] 
[Update to track new scoped-tyvar story
[email protected]**20060201171415] 
[Eta expansion and scoped type variables in generic code
[email protected]**20060201171238
 
 The new story on higher-rank types requires a few functions to be
 eta-expanded.  And the new scoped-type-variable story also forces
 a few changes.
 
] 
[Add CPR test
[email protected]**20060131164801] 
[remove old docs
Simon Marlow <[email protected]>**20060201163734] 
[add test for bug #661
Simon Marlow <[email protected]>**20060201130720] 
[fix recently-introduced breakage in 'make accept'
Simon Marlow <[email protected]>**20060201115729] 
[Add a higher-kinded test
[email protected]**20060131123016] 
[Add fundep test
[email protected]**20060131115806] 
[Module import test
[email protected]**20060131115404] 
[Wibble
[email protected]**20060125140817] 
[Add test for bogus unusued-import message
[email protected]**20060125090704] 
[[project @ 2006-01-19 09:47:11 by simonmar]
simonmar**20060119094711
 Test tryPutMVar on empty MVars too
] 
[[project @ 2006-01-18 16:31:10 by simonmar]
simonmar**20060118163112
 Add a fast version of the testsuite
 
 The idea is to have a way to run as much of the testsuite as possible
 in a short time, so that we'll run it more often (such as just before
 checking in a change, for example).  'make fast' tries for good
 coverage without using too many cycles.  Currently it takes about 4
 minutes on a fast machine with an optimised GHC build; I think this
 might still be a little on the slow side.
 
 When you say 'make fast' in testsuite/tests/ghc-regress, we run each
 test only one way, and all of the long-running tests are omitted.
 Also, to get the runtime down further, I arbitrarily omitted many of
 the should_run tests (because these tend to take a lot longer than
 should_compile or should_fail tests).  I tried to keep a
 representative few in each category.
] 
[[project @ 2006-01-18 15:25:45 by simonpj]
simonpj**20060118152545
 Add test for data con in class sig
] 
[[project @ 2006-01-12 16:10:41 by simonmar]
simonmar**20060112161041
 Add test from ticket #488
] 
[[project @ 2006-01-12 16:03:21 by simonmar]
simonmar**20060112160321
 add test from ticket #441
] 
[[project @ 2006-01-10 14:39:50 by simonmar]
simonmar**20060110143950
 accept output
] 
[[project @ 2006-01-10 14:11:53 by simonmar]
simonmar**20060110141153
 comment update
] 
[[project @ 2006-01-10 14:11:24 by simonmar]
simonmar**20060110141124
 recode this file in UTF-8 from Latin-1
] 
[[project @ 2006-01-10 13:41:48 by simonmar]
simonmar**20060110134148
 accept output (improved lexer error messages)
] 
[[project @ 2006-01-09 12:49:28 by simonmar]
simonmar**20060109124928
 Add test case that causes a core-lint failure (cut down from
 Encoding.hs in HEAD).
] 
[[project @ 2006-01-09 10:29:44 by simonmar]
simonmar**20060109102944
 add a cmm lint failure
] 
[[project @ 2006-01-09 10:27:33 by simonmar]
simonmar**20060109102733
 Add -dcmm-lint when compiling
] 
[[project @ 2006-01-06 16:34:56 by simonmar]
simonmar**20060106163456
 Unicode source tests
] 
[[project @ 2006-01-06 16:15:19 by simonpj]
simonpj**20060106161519
 Add another synonym-performance test (but comment it out of the test file; too slow!)
] 
[[project @ 2006-01-06 16:14:45 by simonpj]
simonpj**20060106161445
 Better type signature for higher-rank
] 
[[project @ 2006-01-06 16:12:42 by simonpj]
simonpj**20060106161242
 Add tests for boxy types
] 
[[project @ 2006-01-06 16:08:57 by simonpj]
simonpj**20060106160857
 Add GADT tests
] 
[[project @ 2006-01-06 16:03:25 by simonpj]
simonpj**20060106160325
 Cosmetic
] 
[[project @ 2006-01-05 13:08:14 by simonpj]
simonpj**20060105130814
 Add a nasty multiple-instantiation test
] 
[[project @ 2006-01-05 10:06:30 by simonpj]
simonpj**20060105100630
 Add test for newtype existential
] 
[[project @ 2006-01-05 09:16:28 by simonmar]
simonmar**20060105091628
 Add test for "scavenge_stack" bug fixed in rev 1.16 of Exception.cmm
] 
[[project @ 2006-01-04 11:50:44 by simonpj]
simonpj**20060104115044
 Add test for data con returning wrong type
] 
[[project @ 2006-01-02 19:36:50 by jpbernardy]
jpbernardy**20060102193650
 minor cleanups
] 
[[project @ 2006-01-01 21:46:31 by jpbernardy]
jpbernardy**20060101214631
 More tests for:
   * Sets
   * Non-structural equality
   * Left-Bias
   * Performance
] 
[[project @ 2005-12-26 19:54:32 by jpbernardy]
jpbernardy**20051226195432
 Infrastructure for testing Data structures.
  + some tests
] 
[[project @ 2005-12-19 09:47:49 by simonpj]
simonpj**20051219094749
 Add test for trailing parens in GADT signatures
] 
[[project @ 2005-12-16 16:03:02 by simonpj]
simonpj**20051216160302
 Add deriving for infix constructors
] 
[[project @ 2005-12-16 14:56:50 by simonpj]
simonpj**20051216145650
 Add repeated-type-variable tests for instance constexts
] 
[[project @ 2005-12-16 10:54:50 by simonmar]
simonmar**20051216105450
 TimeExts has gone away
] 
[[project @ 2005-12-16 10:53:24 by simonmar]
simonmar**20051216105324
 update to not use hslibs
] 
[[project @ 2005-12-16 10:50:31 by simonmar]
simonmar**20051216105031
 -package lang isn't required.
] 
[[project @ 2005-12-16 10:46:05 by simonmar]
simonmar**20051216104605
 Now that we aren't building hslibs, keep the memo tests alive by
 bringing Memo.hs into the testsuite.  These tests are a useful
 shakedown for StableNames.
] 
[[project @ 2005-12-13 16:04:25 by simonmar]
simonmar**20051213160425
 Add nested atomically test
] 
[[project @ 2005-12-13 16:04:09 by simonmar]
simonmar**20051213160409
 fix comments
] 
[[project @ 2005-12-09 19:17:57 by simonpj]
simonpj**20051209191757
 add output file
] 
[[project @ 2005-12-09 19:16:58 by simonpj]
simonpj**20051209191658
 A minor, probably redundant, test
] 
[[project @ 2005-12-05 11:43:51 by simonmar]
simonmar**20051205114351
 add newTVarIO test
] 
[[project @ 2005-12-05 10:08:53 by simonpj]
simonpj**20051205100853
 Add an expected-failure test
] 
[[project @ 2005-12-05 09:13:07 by simonpj]
simonpj**20051205091307
 Update expected output
] 
[[project @ 2005-12-05 09:08:51 by simonpj]
simonpj**20051205090851
 Fix test
] 
[[project @ 2005-12-02 10:56:34 by simonmar]
simonmar**20051202105634
 add this test that I had lying around
] 
[[project @ 2005-12-02 10:54:05 by simonmar]
simonmar**20051202105405
 conc053 only works in threaded & smp ways at the moment.
] 
[[project @ 2005-12-02 10:51:15 by simonmar]
simonmar**20051202105115
 accept output
] 
[[project @ 2005-12-01 08:54:57 by simonpj]
simonpj**20051201085457
 Another GADT test
] 
[[project @ 2005-11-30 14:17:35 by simonpj]
simonpj**20051130141735
 Add mkName test
] 
[[project @ 2005-11-30 12:25:20 by simonmar]
simonmar**20051130122520
 Add test for Control.Concurrent.STM.registerDelay
] 
[TAG Last rev before making ghc-6-4 branch
John Goerzen <[email protected]>**20051128164635] 
[TAG Initial conversion from CVS complete
John Goerzen <[email protected]>**20051128163910] 
Patch bundle hash:
b22a32dfd427611d8ac3de8638d61f7b72eed1a6
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.