From 35e599b596d442e72adb8f0364f223b18dfbb095 Mon Sep 17 00:00:00 2001
From: simonpj <unknown>
Date: Wed, 9 Jun 1999 09:36:25 +0000
Subject: [PATCH] [project @ 1999-06-09 09:35:54 by simonpj] Lots of small
 fixes to ghc/tests

---
 ghc/tests/ccall/should_fail/cc001.stderr      |   2 +-
 ghc/tests/ccall/should_fail/cc002.stderr      |   2 +-
 ghc/tests/ccall/should_fail/cc004.stderr      |   4 +-
 ghc/tests/deSugar/should_compile/ds020.stderr |   1 -
 .../deriving/should_fail/drvfail004.stderr    |   1 +
 .../deriving/should_fail/drvfail007.stderr    |   1 +
 ghc/tests/lib/should_run/Makefile             |   3 +-
 ghc/tests/lib/should_run/enum01.stdout        |  32 +-
 ghc/tests/lib/should_run/stableptr001.hs      |   1 +
 ghc/tests/lib/should_run/stableptr002.hs      |   2 +-
 ghc/tests/lib/should_run/stableptr003.hs      |   2 +-
 ghc/tests/lib/should_run/text001.hs           |  15 +
 ghc/tests/lib/should_run/text001.stdout       |   1 +
 ghc/tests/numeric/should_run/arith011.hs      |  12 +-
 ghc/tests/numeric/should_run/arith011.stdout  | 911 +++++++++++++++++-
 ghc/tests/programs/Makefile                   |   9 +-
 .../programs/barton-mangler-bug/Basic.hs      |  15 +-
 ghc/tests/programs/fast2haskell/Word.hs       |   4 +-
 ghc/tests/programs/fun_insts/Main.hs          |   3 +
 ghc/tests/programs/jeff-bug/AQ.hs             |   2 +-
 ghc/tests/programs/jeff-bug/BoundedSet.hs     |   2 +-
 ghc/tests/programs/jeff-bug/Devices.hs        |   9 +-
 ghc/tests/programs/jeff-bug/PreludeSig.hs     |  10 +-
 ghc/tests/programs/jeff-bug/ROB_retire.hs     |   1 +
 ghc/tests/programs/jeff-bug/STEx.hs           |  12 +-
 ghc/tests/programs/jeff-bug/Signal.hs         |  11 +-
 ghc/tests/programs/jeff-bug/Trans.hs          |   2 +-
 ghc/tests/programs/life_space_leak/Makefile   |   2 +-
 ghc/tests/programs/north_lias/Main.lhs        |  10 +-
 ghc/tests/programs/okeefe_neural/Main.hs      |   2 +-
 ghc/tests/reader/should_compile/MyList.hi     |   3 +-
 .../reader/should_compile/read012.stderr      |   2 +-
 ghc/tests/reader/should_fail/expr001.hs       |   1 +
 ghc/tests/reader/should_fail/expr001.stderr   |   4 +-
 ghc/tests/rename/should_fail/rnfail001.stderr |   3 +-
 ghc/tests/rename/should_fail/rnfail002.stderr |   1 -
 ghc/tests/rename/should_fail/rnfail003.stderr |   1 -
 ghc/tests/rename/should_fail/rnfail004.stderr |   1 -
 ghc/tests/rename/should_fail/rnfail007.stderr |   3 +-
 ghc/tests/rename/should_fail/rnfail008.stderr |   1 -
 ghc/tests/rename/should_fail/rnfail009.stderr |   1 -
 ghc/tests/rename/should_fail/rnfail010.stderr |   1 -
 ghc/tests/rename/should_fail/rnfail011.stderr |   1 -
 ghc/tests/rename/should_fail/rnfail012.stderr |   1 -
 ghc/tests/rename/should_fail/rnfail013.stderr |   1 -
 ghc/tests/rename/should_fail/rnfail014.stderr |  28 +-
 ghc/tests/rename/should_fail/rnfail015.stderr |   1 -
 .../typecheck/should_compile/tc001.stderr     |   2 +-
 .../typecheck/should_compile/tc005.stderr     |   2 +-
 .../typecheck/should_compile/tc008.stderr     |   2 +-
 .../typecheck/should_compile/tc009.stderr     |   2 +-
 .../typecheck/should_compile/tc034.stderr     |   2 +-
 .../typecheck/should_compile/tc038.stderr     |   2 +-
 .../typecheck/should_compile/tc048.stderr     |   8 +-
 .../typecheck/should_compile/tc049.stderr     |   2 +-
 .../typecheck/should_compile/tc050.stderr     |   2 +-
 .../typecheck/should_compile/tc052.stderr     |   2 +-
 .../typecheck/should_compile/tc053.stderr     |   2 +-
 .../typecheck/should_compile/tc054.stderr     |   2 +-
 .../typecheck/should_compile/tc056.stderr     |   2 +-
 .../typecheck/should_compile/tc058.stderr     |   2 +-
 .../typecheck/should_compile/tc059.stderr     |   2 +-
 .../typecheck/should_compile/tc063.stderr     |   4 +-
 ghc/tests/typecheck/should_compile/tc065.hs   |   2 +-
 .../typecheck/should_compile/tc068.stderr     |  10 +-
 .../typecheck/should_compile/tc074.stderr     |  10 +-
 .../typecheck/should_compile/tc077.stderr     |   4 +-
 .../typecheck/should_compile/tc081.stderr     |   6 +-
 .../typecheck/should_compile/tc084.stderr     |   2 +-
 .../typecheck/should_compile/tc087.stderr     |   4 +-
 ghc/tests/typecheck/should_compile/tc088.hs   |   2 +
 .../typecheck/should_compile/tc088.stderr     |   6 +-
 .../typecheck/should_compile/tc093.stderr     |   6 +-
 .../typecheck/should_compile/tc095.stderr     |  14 +-
 .../typecheck/should_compile/tc098.stderr     |   6 +-
 .../typecheck/should_compile/tc100.stderr     |   6 +-
 .../typecheck/should_fail/Digraph.stderr      |  12 +-
 .../typecheck/should_fail/tcfail001.stderr    |   4 -
 .../typecheck/should_fail/tcfail002.stderr    |   2 -
 .../typecheck/should_fail/tcfail003.stderr    |   2 -
 .../typecheck/should_fail/tcfail004.stderr    |   2 -
 .../typecheck/should_fail/tcfail005.stderr    |   2 -
 .../typecheck/should_fail/tcfail006.stderr    |   2 -
 .../typecheck/should_fail/tcfail007.stderr    |   2 -
 .../typecheck/should_fail/tcfail008.stderr    |   2 -
 .../typecheck/should_fail/tcfail009.stderr    |   2 -
 .../typecheck/should_fail/tcfail010.stderr    |   2 -
 .../typecheck/should_fail/tcfail011.stderr    |   2 -
 .../typecheck/should_fail/tcfail012.stderr    |   2 -
 .../typecheck/should_fail/tcfail013.stderr    |   2 -
 .../typecheck/should_fail/tcfail014.stderr    |   2 -
 .../typecheck/should_fail/tcfail015.stderr    |   2 -
 .../typecheck/should_fail/tcfail016.stderr    |   2 -
 .../typecheck/should_fail/tcfail017.stderr    |   2 -
 .../typecheck/should_fail/tcfail018.stderr    |   2 -
 .../typecheck/should_fail/tcfail019.stderr    |   2 -
 .../typecheck/should_fail/tcfail020.stderr    |   2 -
 .../typecheck/should_fail/tcfail021.stderr    |   2 -
 .../typecheck/should_fail/tcfail023.stderr    |   2 -
 ghc/tests/typecheck/should_fail/tcfail027.hs  |   1 +
 .../typecheck/should_fail/tcfail027.stderr    |   8 +-
 ghc/tests/typecheck/should_fail/tcfail028.hs  |   1 +
 .../typecheck/should_fail/tcfail028.stderr    |   4 +-
 .../typecheck/should_fail/tcfail029.stderr    |   2 -
 ghc/tests/typecheck/should_fail/tcfail030.hs  |   1 +
 .../typecheck/should_fail/tcfail030.stderr    |   4 +-
 .../typecheck/should_fail/tcfail031.stderr    |   2 -
 .../typecheck/should_fail/tcfail032.stderr    |   7 +-
 .../typecheck/should_fail/tcfail033.stderr    |   2 -
 .../typecheck/should_fail/tcfail034.stderr    |   2 -
 .../typecheck/should_fail/tcfail035.stderr    |   4 -
 .../typecheck/should_fail/tcfail036.stderr    |   4 -
 .../typecheck/should_fail/tcfail037.stderr    |   2 -
 .../typecheck/should_fail/tcfail038.stderr    |   2 -
 .../typecheck/should_fail/tcfail039.stderr    |   2 -
 .../typecheck/should_fail/tcfail040.stderr    |   2 -
 .../typecheck/should_fail/tcfail042.stderr    |   2 -
 ghc/tests/typecheck/should_fail/tcfail043.hs  |   7 +-
 .../typecheck/should_fail/tcfail043.stderr    |  35 +-
 ghc/tests/typecheck/should_fail/tcfail044.hs  |   2 +-
 .../typecheck/should_fail/tcfail044.stderr    |   4 -
 .../typecheck/should_fail/tcfail045.stderr    |   2 -
 .../typecheck/should_fail/tcfail046.stderr    |   2 -
 .../typecheck/should_fail/tcfail047.stderr    |   2 -
 .../typecheck/should_fail/tcfail048.stderr    |   2 -
 .../typecheck/should_fail/tcfail049.stderr    |   2 -
 .../typecheck/should_fail/tcfail050.stderr    |   2 -
 .../typecheck/should_fail/tcfail051.stderr    |   2 -
 .../typecheck/should_fail/tcfail052.stderr    |   2 -
 ghc/tests/typecheck/should_fail/tcfail053.hs  |   1 +
 .../typecheck/should_fail/tcfail053.stderr    |   4 +-
 .../typecheck/should_fail/tcfail054.stderr    |   2 -
 .../typecheck/should_fail/tcfail055.stderr    |   2 -
 .../typecheck/should_fail/tcfail056.stderr    |   2 -
 .../typecheck/should_fail/tcfail057.stderr    |   2 -
 .../typecheck/should_fail/tcfail058.stderr    |   2 -
 .../typecheck/should_fail/tcfail061.stderr    |   2 -
 .../typecheck/should_fail/tcfail062.stderr    |   2 -
 .../typecheck/should_fail/tcfail065.stderr    |   8 +-
 .../typecheck/should_fail/tcfail067.stderr    |  13 +-
 .../typecheck/should_fail/tcfail068.stderr    |   2 -
 .../typecheck/should_fail/tcfail069.stderr    |   2 -
 ghc/tests/typecheck/should_fail/tcfail070.hs  |   2 +
 .../typecheck/should_fail/tcfail070.stderr    |   4 +-
 .../typecheck/should_fail/tcfail071.stderr    |  14 +-
 .../typecheck/should_fail/tcfail072.stderr    |   2 -
 .../typecheck/should_fail/tcfail073.stderr    |   4 +-
 .../typecheck/should_fail/tcfail074.stderr    |   2 -
 .../typecheck/should_fail/tcfail076.stderr    |  12 +-
 .../typecheck/should_fail/tcfail077.stderr    |   2 -
 .../typecheck/should_fail/tcfail078.stderr    |   2 -
 .../typecheck/should_fail/tcfail079.stderr    |   2 -
 .../typecheck/should_fail/tcfail080.stderr    |   2 -
 .../typecheck/should_fail/tcfail081.stderr    |  11 +-
 154 files changed, 1151 insertions(+), 382 deletions(-)
 create mode 100644 ghc/tests/lib/should_run/text001.hs
 create mode 100644 ghc/tests/lib/should_run/text001.stdout

diff --git a/ghc/tests/ccall/should_fail/cc001.stderr b/ghc/tests/ccall/should_fail/cc001.stderr
index e95963165d52..4388fc9a7df5 100644
--- a/ghc/tests/ccall/should_fail/cc001.stderr
+++ b/ghc/tests/ccall/should_fail/cc001.stderr
@@ -1,7 +1,7 @@
 
 cc001.hs:5:
     Ambiguous type variable(s) `t'
-	in the constraint `PrelGHC.CCallable t'
+	in the constraint `CCallable t'
 	arising from an argument in the _ccall_ to `foo', namely `(undefined ())' at cc001.hs:5
 
 Compilation had errors
diff --git a/ghc/tests/ccall/should_fail/cc002.stderr b/ghc/tests/ccall/should_fail/cc002.stderr
index d41df555245b..26bc5d0509db 100644
--- a/ghc/tests/ccall/should_fail/cc002.stderr
+++ b/ghc/tests/ccall/should_fail/cc002.stderr
@@ -1,6 +1,6 @@
 
 cc002.hs:10:
-    No instance for `PrelGHC.CReturnable ForeignObj'
+    No instance for `CReturnable ForeignObj'
 	arising from the result of the _ccall_ to `a' at cc002.hs:10
 
 Compilation had errors
diff --git a/ghc/tests/ccall/should_fail/cc004.stderr b/ghc/tests/ccall/should_fail/cc004.stderr
index 1b02c464b2b4..11f5d856cec2 100644
--- a/ghc/tests/ccall/should_fail/cc004.stderr
+++ b/ghc/tests/ccall/should_fail/cc004.stderr
@@ -1,11 +1,11 @@
 
 cc004.hs:2:
     Cannot generalise these overloadings (in a _ccall_):
-	`PrelGHC.CReturnable b' arising from the result of the _ccall_ to `f' at cc004.hs:15
+	`CReturnable b' arising from the result of the _ccall_ to `f' at cc004.hs:15
 
 cc004.hs:2:
     Cannot generalise these overloadings (in a _ccall_):
-	`PrelGHC.CReturnable b' arising from the result of the _ccall_ to `f' at cc004.hs:8
+	`CReturnable b' arising from the result of the _ccall_ to `f' at cc004.hs:8
 
 Compilation had errors
 
diff --git a/ghc/tests/deSugar/should_compile/ds020.stderr b/ghc/tests/deSugar/should_compile/ds020.stderr
index 87ecde21cb9d..719bd5ee365a 100644
--- a/ghc/tests/deSugar/should_compile/ds020.stderr
+++ b/ghc/tests/deSugar/should_compile/ds020.stderr
@@ -11,4 +11,3 @@ ds020.hs:13: Pattern match(es) are overlapped in the definition of function `d':
 
 ds020.hs:19: Pattern match(es) are overlapped in the definition of function `f':
 	    f (x@~[]) = ...
-NOTE: Simplifier still going after 4 iterations; bailing out.
diff --git a/ghc/tests/deriving/should_fail/drvfail004.stderr b/ghc/tests/deriving/should_fail/drvfail004.stderr
index 81978e9c3afe..3657e58a93f9 100644
--- a/ghc/tests/deriving/should_fail/drvfail004.stderr
+++ b/ghc/tests/deriving/should_fail/drvfail004.stderr
@@ -9,3 +9,4 @@ drvfail004.hs:5:
     When checking the superclasses of an instance declaration
 
 Compilation had errors
+
diff --git a/ghc/tests/deriving/should_fail/drvfail007.stderr b/ghc/tests/deriving/should_fail/drvfail007.stderr
index d8ee804db899..ae4b9bf30008 100644
--- a/ghc/tests/deriving/should_fail/drvfail007.stderr
+++ b/ghc/tests/deriving/should_fail/drvfail007.stderr
@@ -4,3 +4,4 @@ drvfail007.hs:2:
     When deriving classes for `Foo'
 
 Compilation had errors
+
diff --git a/ghc/tests/lib/should_run/Makefile b/ghc/tests/lib/should_run/Makefile
index ffb1f618124f..b65b4d9502a0 100644
--- a/ghc/tests/lib/should_run/Makefile
+++ b/ghc/tests/lib/should_run/Makefile
@@ -1,5 +1,5 @@
 #-----------------------------------------------------------------------------
-# $Id: Makefile,v 1.11 1999/02/26 12:42:06 simonm Exp $
+# $Id: Makefile,v 1.12 1999/06/09 09:35:58 simonpj Exp $
 
 TOP = ../..
 include $(TOP)/mk/boilerplate.mk
@@ -11,6 +11,7 @@ packedstring001_HC_OPTS = -syslib misc
 
 exceptions001_HC_OPTS   = -fglasgow-exts -fno-warn-missing-methods
 stableptr002_HC_OPTS    = -fglasgow-exts
+stableptr003_HC_OPTS    = -fglasgow-exts
 list001_HC_OPTS         = -fglasgow-exts
 
 enum01_HC_OPTS		= -cpp -fglasgow-exts -H12m
diff --git a/ghc/tests/lib/should_run/enum01.stdout b/ghc/tests/lib/should_run/enum01.stdout
index 6b4538eb78a7..436fa69dffda 100644
--- a/ghc/tests/lib/should_run/enum01.stdout
+++ b/ghc/tests/lib/should_run/enum01.stdout
@@ -60,12 +60,12 @@ Testing Enum Integer:
 Testing Enum Char: 
     (succ 'a') = 'b'
     (succ (minBound::Char)) = '\SOH'
-    (succ (maxBound::Char)) = error "Prelude.Enum.succ{Char}: tried to take `succ' of maxBound"
+    (succ (maxBound::Char)) = error "Prelude.Enum.Char.succ: bad argument"
     (pred 'b') = 'a'
     pred (maxBound::Char) = '\254'
-    pred (minBound::Char) = error "Prelude.Enum.pred{Char}: tried to to take `pred' of minBound"
+    pred (minBound::Char) = error "Prelude.Enum.Char.pred: bad argument"
     (map (toEnum::Int->Char) [123,ord (minBound::Char), ord(maxBound::Char)]) = "{\NUL\255"
-    (toEnum::Int->Char) (minBound::Int) = error "Prelude.Enum.toEnum{Char}: out of range: -2147483648"
+    (toEnum::Int->Char) (minBound::Int) = error "Prelude.chr: bad argument"
     (map fromEnum ['X',minBound,maxBound]) = [88,0,255]
     (take 7 ['\NUL' .. ]) = "\NUL\SOH\STX\ETX\EOT\ENQ\ACK"
     (take 7 ['\250' .. ]) = "\250\251\252\253\254\255"
@@ -93,14 +93,14 @@ Testing Enum Char:
     (take 7 ['\251', '\252' .. maxBound]) = "\251\252\253\254\255"
     (take 7 ['\5', '\4' .. minBound]) = "\ENQ\EOT\ETX\STX\SOH\NUL"
 Testing Enum (): 
-    (succ ()) = error "Prelude.Enum.succ{()}: not possible"
-    (succ (minBound::())) = error "Prelude.Enum.succ{()}: not possible"
-    (succ (maxBound::())) = error "Prelude.Enum.succ{()}: not possible"
-    (pred ()) = error "Prelude.Enum.pred{()}: not possible"
-    (pred (minBound::())) = error "Prelude.Enum.pred{()}: not possible"
-    (pred (maxBound::())) = error "Prelude.Enum.pred{()}: not possible"
+    (succ ()) = error "Prelude.Enum.().succ: bad argment"
+    (succ (minBound::())) = error "Prelude.Enum.().succ: bad argment"
+    (succ (maxBound::())) = error "Prelude.Enum.().succ: bad argment"
+    (pred ()) = error "Prelude.Enum.().pred: bad argument"
+    (pred (minBound::())) = error "Prelude.Enum.().pred: bad argument"
+    (pred (maxBound::())) = error "Prelude.Enum.().pred: bad argument"
     (toEnum 0)::() = ()
-    (toEnum 1)::() = error "Prelude.Enum.toEnum{()}: argument not 0"
+    (toEnum 1)::() = error "Prelude.Enum.().toEnum: bad argument"
     (fromEnum ()) = 0
     ([()..]) = [()]
     ([(),()..]) = [()]
@@ -109,12 +109,12 @@ Testing Enum ():
 Testing Enum Ordering (derived): 
     (succ LT) = EQ
     (succ (minBound::Ordering)) = EQ
-    (succ (maxBound::Ordering)) = error "succ{Ordering}: tried to take `succ' of last tag in enumeration"
+    (succ (maxBound::Ordering)) = error "Prelude.Enum.Ordering.succ: bad argment"
     (pred GT) = EQ
     (pred (maxBound::Ordering)) = EQ
-    (pred (minBound::Ordering)) = error "pred{Ordering}: tried to take `pred' of first tag in enumeration"
+    (pred (minBound::Ordering)) = error "Prelude.Enum.Ordering.pred: bad argment"
     (toEnum 0)::Ordering = LT
-    (toEnum 5)::Ordering = error "toEnum{Ordering}: tag (5) is outside of enumeration's range (0,2)"
+    (toEnum 5)::Ordering = error "Prelude.Enum.Ordering.toEnum: bad argment"
     (fromEnum LT) = 0
     (fromEnum EQ) = 1
     (fromEnum GT) = 2
@@ -146,12 +146,12 @@ Testing Enum Ordering (derived):
 Testing Enum Bool: 
     (succ False) = True
     (succ (minBound::Bool)) = True
-    (succ (maxBound::Bool)) = error "succ{Bool}: tried to take `succ' of last tag in enumeration"
+    (succ (maxBound::Bool)) = error "Prelude.Enum.Bool.succ: bad argment"
     (pred True) = False
     (pred (maxBound::Bool)) = False
-    (pred (minBound::Bool)) = error "pred{Bool}: tried to take `pred' of first tag in enumeration"
+    (pred (minBound::Bool)) = error "Prelude.Enum.Bool.pred: bad argment"
     (toEnum 0)::Bool = False
-    (toEnum 5)::Bool = error "toEnum{Bool}: tag (5) is outside of enumeration's range (0,1)"
+    (toEnum 5)::Bool = error "Prelude.Enum.Bool.toEnum: bad argment"
     (fromEnum False) = 0
     (fromEnum True) = 1
     ([False ..]) = [False,True]
diff --git a/ghc/tests/lib/should_run/stableptr001.hs b/ghc/tests/lib/should_run/stableptr001.hs
index 42ee1fe58cc1..98180b5bf482 100644
--- a/ghc/tests/lib/should_run/stableptr001.hs
+++ b/ghc/tests/lib/should_run/stableptr001.hs
@@ -3,6 +3,7 @@
 module Main where
 
 import Foreign
+import Stable
 
 -- simple test for building/dereferencing stable ptrs
 
diff --git a/ghc/tests/lib/should_run/stableptr002.hs b/ghc/tests/lib/should_run/stableptr002.hs
index 3edcc6c8de38..3cd3673a108b 100644
--- a/ghc/tests/lib/should_run/stableptr002.hs
+++ b/ghc/tests/lib/should_run/stableptr002.hs
@@ -1,6 +1,6 @@
 module Main where
 
-import PrelStable
+import Stable
 
 -- Testing callbacks: the initial haskell thread calls out to C with
 -- the address of a Haskell callback.  The C function runs the callback
diff --git a/ghc/tests/lib/should_run/stableptr003.hs b/ghc/tests/lib/should_run/stableptr003.hs
index 81f12a5c9bec..ec3cfa807bbf 100644
--- a/ghc/tests/lib/should_run/stableptr003.hs
+++ b/ghc/tests/lib/should_run/stableptr003.hs
@@ -1,6 +1,6 @@
 module Main where
 
-import PrelStable
+import Stable
 
 main = do
   stable_list1 <- mapM makeStableName list
diff --git a/ghc/tests/lib/should_run/text001.hs b/ghc/tests/lib/should_run/text001.hs
new file mode 100644
index 000000000000..18aab82dd993
--- /dev/null
+++ b/ghc/tests/lib/should_run/text001.hs
@@ -0,0 +1,15 @@
+{-	Bug report 28 May 99
+
+When compiled with ghc-4.02, everything's fine, it outputs "Value 7" as
+expected. But compiled with ghc-pre-4.03 it yields this error message.
+
+   Fail: Prelude.read: no parse
+-}
+
+module Main where
+
+data Msg = Value Int | Inc   deriving (Show, Read)
+  
+main = do let v = read "Value 7"::Msg
+          print v
+
diff --git a/ghc/tests/lib/should_run/text001.stdout b/ghc/tests/lib/should_run/text001.stdout
new file mode 100644
index 000000000000..a0c782242e3d
--- /dev/null
+++ b/ghc/tests/lib/should_run/text001.stdout
@@ -0,0 +1 @@
+Value 7
diff --git a/ghc/tests/numeric/should_run/arith011.hs b/ghc/tests/numeric/should_run/arith011.hs
index b9312282a1e1..903bc25497a4 100644
--- a/ghc/tests/numeric/should_run/arith011.hs
+++ b/ghc/tests/numeric/should_run/arith011.hs
@@ -10,6 +10,7 @@ main = test
 
 test :: IO ()
 test = do
+   testIntlikeNoBits "Int"    (0::Int)     
    testIntlike "Int8"   (0::Int8)     
    testIntlike "Int16"  (0::Int16)    
    testIntlike "Int32"  (0::Int32)    
@@ -17,8 +18,8 @@ test = do
    testIntlike "Word16" (0::Word16)   
    testIntlike "Word32" (0::Word32)   
 
-testIntlike :: (Bounded a, Integral a, Ix a, Read a, Bits a) => String -> a -> IO ()
-testIntlike name zero = do
+testIntlikeNoBits :: (Bounded a, Integral a, Ix a, Read a) => String -> a -> IO ()
+testIntlikeNoBits name zero = do
   putStrLn $ "--------------------------------"
   putStrLn $ "--Testing " ++ name
   putStrLn $ "--------------------------------"
@@ -30,8 +31,13 @@ testIntlike name zero = do
   testNum      zero
   testReal     zero
   testIntegral zero
+
+
+testIntlike :: (Bounded a, Integral a, Ix a, Read a, Bits a) => String -> a -> IO ()
+testIntlike name zero = do
+  testIntlikeNoBits name zero
   testBits     zero
-  putStrLn $ "--------------------------------"
+
 
 -- In all these tests, zero is a dummy element used to get
 -- the overloading to work
diff --git a/ghc/tests/numeric/should_run/arith011.stdout b/ghc/tests/numeric/should_run/arith011.stdout
index 6b382ce12cdf..2ca8409a9d46 100644
--- a/ghc/tests/numeric/should_run/arith011.stdout
+++ b/ghc/tests/numeric/should_run/arith011.stdout
@@ -1,4 +1,909 @@
 --------------------------------
+--Testing Int
+--------------------------------
+testBounded
+(2147483647,-2147483648,-2147483647)
+(2147483646,2147483647,-2147483648)
+testEnum
+[0,1,2,3,4,5,6,7,8,9]
+[0,2,4,6,8,10,12,14,16,18]
+[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20]
+[0,2,4,6,8,10,12,14,16,18,20]
+testReadShow
+[-3,-2,-1,0,1,2,3]
+[-3,-2,-1,0,1,2,3]
+testEq
+-3 == -3 = True
+-3 == -2 = False
+-3 == -1 = False
+-3 == 0 = False
+-3 == 1 = False
+-3 == 2 = False
+-3 == 3 = False
+ 
+-2 == -3 = False
+-2 == -2 = True
+-2 == -1 = False
+-2 == 0 = False
+-2 == 1 = False
+-2 == 2 = False
+-2 == 3 = False
+ 
+-1 == -3 = False
+-1 == -2 = False
+-1 == -1 = True
+-1 == 0 = False
+-1 == 1 = False
+-1 == 2 = False
+-1 == 3 = False
+ 
+0 == -3 = False
+0 == -2 = False
+0 == -1 = False
+0 == 0 = True
+0 == 1 = False
+0 == 2 = False
+0 == 3 = False
+ 
+1 == -3 = False
+1 == -2 = False
+1 == -1 = False
+1 == 0 = False
+1 == 1 = True
+1 == 2 = False
+1 == 3 = False
+ 
+2 == -3 = False
+2 == -2 = False
+2 == -1 = False
+2 == 0 = False
+2 == 1 = False
+2 == 2 = True
+2 == 3 = False
+ 
+3 == -3 = False
+3 == -2 = False
+3 == -1 = False
+3 == 0 = False
+3 == 1 = False
+3 == 2 = False
+3 == 3 = True
+ 
+#
+-3 /= -3 = False
+-3 /= -2 = True
+-3 /= -1 = True
+-3 /= 0 = True
+-3 /= 1 = True
+-3 /= 2 = True
+-3 /= 3 = True
+ 
+-2 /= -3 = True
+-2 /= -2 = False
+-2 /= -1 = True
+-2 /= 0 = True
+-2 /= 1 = True
+-2 /= 2 = True
+-2 /= 3 = True
+ 
+-1 /= -3 = True
+-1 /= -2 = True
+-1 /= -1 = False
+-1 /= 0 = True
+-1 /= 1 = True
+-1 /= 2 = True
+-1 /= 3 = True
+ 
+0 /= -3 = True
+0 /= -2 = True
+0 /= -1 = True
+0 /= 0 = False
+0 /= 1 = True
+0 /= 2 = True
+0 /= 3 = True
+ 
+1 /= -3 = True
+1 /= -2 = True
+1 /= -1 = True
+1 /= 0 = True
+1 /= 1 = False
+1 /= 2 = True
+1 /= 3 = True
+ 
+2 /= -3 = True
+2 /= -2 = True
+2 /= -1 = True
+2 /= 0 = True
+2 /= 1 = True
+2 /= 2 = False
+2 /= 3 = True
+ 
+3 /= -3 = True
+3 /= -2 = True
+3 /= -1 = True
+3 /= 0 = True
+3 /= 1 = True
+3 /= 2 = True
+3 /= 3 = False
+ 
+#
+testOrd
+-3 <= -3 = True
+-3 <= -2 = True
+-3 <= -1 = True
+-3 <= 0 = True
+-3 <= 1 = True
+-3 <= 2 = True
+-3 <= 3 = True
+ 
+-2 <= -3 = False
+-2 <= -2 = True
+-2 <= -1 = True
+-2 <= 0 = True
+-2 <= 1 = True
+-2 <= 2 = True
+-2 <= 3 = True
+ 
+-1 <= -3 = False
+-1 <= -2 = False
+-1 <= -1 = True
+-1 <= 0 = True
+-1 <= 1 = True
+-1 <= 2 = True
+-1 <= 3 = True
+ 
+0 <= -3 = False
+0 <= -2 = False
+0 <= -1 = False
+0 <= 0 = True
+0 <= 1 = True
+0 <= 2 = True
+0 <= 3 = True
+ 
+1 <= -3 = False
+1 <= -2 = False
+1 <= -1 = False
+1 <= 0 = False
+1 <= 1 = True
+1 <= 2 = True
+1 <= 3 = True
+ 
+2 <= -3 = False
+2 <= -2 = False
+2 <= -1 = False
+2 <= 0 = False
+2 <= 1 = False
+2 <= 2 = True
+2 <= 3 = True
+ 
+3 <= -3 = False
+3 <= -2 = False
+3 <= -1 = False
+3 <= 0 = False
+3 <= 1 = False
+3 <= 2 = False
+3 <= 3 = True
+ 
+#
+-3 <  -3 = False
+-3 <  -2 = True
+-3 <  -1 = True
+-3 <  0 = True
+-3 <  1 = True
+-3 <  2 = True
+-3 <  3 = True
+ 
+-2 <  -3 = False
+-2 <  -2 = False
+-2 <  -1 = True
+-2 <  0 = True
+-2 <  1 = True
+-2 <  2 = True
+-2 <  3 = True
+ 
+-1 <  -3 = False
+-1 <  -2 = False
+-1 <  -1 = False
+-1 <  0 = True
+-1 <  1 = True
+-1 <  2 = True
+-1 <  3 = True
+ 
+0 <  -3 = False
+0 <  -2 = False
+0 <  -1 = False
+0 <  0 = False
+0 <  1 = True
+0 <  2 = True
+0 <  3 = True
+ 
+1 <  -3 = False
+1 <  -2 = False
+1 <  -1 = False
+1 <  0 = False
+1 <  1 = False
+1 <  2 = True
+1 <  3 = True
+ 
+2 <  -3 = False
+2 <  -2 = False
+2 <  -1 = False
+2 <  0 = False
+2 <  1 = False
+2 <  2 = False
+2 <  3 = True
+ 
+3 <  -3 = False
+3 <  -2 = False
+3 <  -1 = False
+3 <  0 = False
+3 <  1 = False
+3 <  2 = False
+3 <  3 = False
+ 
+#
+-3 >  -3 = False
+-3 >  -2 = False
+-3 >  -1 = False
+-3 >  0 = False
+-3 >  1 = False
+-3 >  2 = False
+-3 >  3 = False
+ 
+-2 >  -3 = True
+-2 >  -2 = False
+-2 >  -1 = False
+-2 >  0 = False
+-2 >  1 = False
+-2 >  2 = False
+-2 >  3 = False
+ 
+-1 >  -3 = True
+-1 >  -2 = True
+-1 >  -1 = False
+-1 >  0 = False
+-1 >  1 = False
+-1 >  2 = False
+-1 >  3 = False
+ 
+0 >  -3 = True
+0 >  -2 = True
+0 >  -1 = True
+0 >  0 = False
+0 >  1 = False
+0 >  2 = False
+0 >  3 = False
+ 
+1 >  -3 = True
+1 >  -2 = True
+1 >  -1 = True
+1 >  0 = True
+1 >  1 = False
+1 >  2 = False
+1 >  3 = False
+ 
+2 >  -3 = True
+2 >  -2 = True
+2 >  -1 = True
+2 >  0 = True
+2 >  1 = True
+2 >  2 = False
+2 >  3 = False
+ 
+3 >  -3 = True
+3 >  -2 = True
+3 >  -1 = True
+3 >  0 = True
+3 >  1 = True
+3 >  2 = True
+3 >  3 = False
+ 
+#
+-3 >= -3 = True
+-3 >= -2 = False
+-3 >= -1 = False
+-3 >= 0 = False
+-3 >= 1 = False
+-3 >= 2 = False
+-3 >= 3 = False
+ 
+-2 >= -3 = True
+-2 >= -2 = True
+-2 >= -1 = False
+-2 >= 0 = False
+-2 >= 1 = False
+-2 >= 2 = False
+-2 >= 3 = False
+ 
+-1 >= -3 = True
+-1 >= -2 = True
+-1 >= -1 = True
+-1 >= 0 = False
+-1 >= 1 = False
+-1 >= 2 = False
+-1 >= 3 = False
+ 
+0 >= -3 = True
+0 >= -2 = True
+0 >= -1 = True
+0 >= 0 = True
+0 >= 1 = False
+0 >= 2 = False
+0 >= 3 = False
+ 
+1 >= -3 = True
+1 >= -2 = True
+1 >= -1 = True
+1 >= 0 = True
+1 >= 1 = True
+1 >= 2 = False
+1 >= 3 = False
+ 
+2 >= -3 = True
+2 >= -2 = True
+2 >= -1 = True
+2 >= 0 = True
+2 >= 1 = True
+2 >= 2 = True
+2 >= 3 = False
+ 
+3 >= -3 = True
+3 >= -2 = True
+3 >= -1 = True
+3 >= 0 = True
+3 >= 1 = True
+3 >= 2 = True
+3 >= 3 = True
+ 
+#
+-3 `compare` -3 = EQ
+-3 `compare` -2 = LT
+-3 `compare` -1 = LT
+-3 `compare` 0 = LT
+-3 `compare` 1 = LT
+-3 `compare` 2 = LT
+-3 `compare` 3 = LT
+ 
+-2 `compare` -3 = GT
+-2 `compare` -2 = EQ
+-2 `compare` -1 = LT
+-2 `compare` 0 = LT
+-2 `compare` 1 = LT
+-2 `compare` 2 = LT
+-2 `compare` 3 = LT
+ 
+-1 `compare` -3 = GT
+-1 `compare` -2 = GT
+-1 `compare` -1 = EQ
+-1 `compare` 0 = LT
+-1 `compare` 1 = LT
+-1 `compare` 2 = LT
+-1 `compare` 3 = LT
+ 
+0 `compare` -3 = GT
+0 `compare` -2 = GT
+0 `compare` -1 = GT
+0 `compare` 0 = EQ
+0 `compare` 1 = LT
+0 `compare` 2 = LT
+0 `compare` 3 = LT
+ 
+1 `compare` -3 = GT
+1 `compare` -2 = GT
+1 `compare` -1 = GT
+1 `compare` 0 = GT
+1 `compare` 1 = EQ
+1 `compare` 2 = LT
+1 `compare` 3 = LT
+ 
+2 `compare` -3 = GT
+2 `compare` -2 = GT
+2 `compare` -1 = GT
+2 `compare` 0 = GT
+2 `compare` 1 = GT
+2 `compare` 2 = EQ
+2 `compare` 3 = LT
+ 
+3 `compare` -3 = GT
+3 `compare` -2 = GT
+3 `compare` -1 = GT
+3 `compare` 0 = GT
+3 `compare` 1 = GT
+3 `compare` 2 = GT
+3 `compare` 3 = EQ
+ 
+#
+testNum
+-3 + -3 = -6
+-3 + -2 = -5
+-3 + -1 = -4
+-3 + 0 = -3
+-3 + 1 = -2
+-3 + 2 = -1
+-3 + 3 = 0
+ 
+-2 + -3 = -5
+-2 + -2 = -4
+-2 + -1 = -3
+-2 + 0 = -2
+-2 + 1 = -1
+-2 + 2 = 0
+-2 + 3 = 1
+ 
+-1 + -3 = -4
+-1 + -2 = -3
+-1 + -1 = -2
+-1 + 0 = -1
+-1 + 1 = 0
+-1 + 2 = 1
+-1 + 3 = 2
+ 
+0 + -3 = -3
+0 + -2 = -2
+0 + -1 = -1
+0 + 0 = 0
+0 + 1 = 1
+0 + 2 = 2
+0 + 3 = 3
+ 
+1 + -3 = -2
+1 + -2 = -1
+1 + -1 = 0
+1 + 0 = 1
+1 + 1 = 2
+1 + 2 = 3
+1 + 3 = 4
+ 
+2 + -3 = -1
+2 + -2 = 0
+2 + -1 = 1
+2 + 0 = 2
+2 + 1 = 3
+2 + 2 = 4
+2 + 3 = 5
+ 
+3 + -3 = 0
+3 + -2 = 1
+3 + -1 = 2
+3 + 0 = 3
+3 + 1 = 4
+3 + 2 = 5
+3 + 3 = 6
+ 
+#
+-3 - -3 = 0
+-3 - -2 = -1
+-3 - -1 = -2
+-3 - 0 = -3
+-3 - 1 = -4
+-3 - 2 = -5
+-3 - 3 = -6
+ 
+-2 - -3 = 1
+-2 - -2 = 0
+-2 - -1 = -1
+-2 - 0 = -2
+-2 - 1 = -3
+-2 - 2 = -4
+-2 - 3 = -5
+ 
+-1 - -3 = 2
+-1 - -2 = 1
+-1 - -1 = 0
+-1 - 0 = -1
+-1 - 1 = -2
+-1 - 2 = -3
+-1 - 3 = -4
+ 
+0 - -3 = 3
+0 - -2 = 2
+0 - -1 = 1
+0 - 0 = 0
+0 - 1 = -1
+0 - 2 = -2
+0 - 3 = -3
+ 
+1 - -3 = 4
+1 - -2 = 3
+1 - -1 = 2
+1 - 0 = 1
+1 - 1 = 0
+1 - 2 = -1
+1 - 3 = -2
+ 
+2 - -3 = 5
+2 - -2 = 4
+2 - -1 = 3
+2 - 0 = 2
+2 - 1 = 1
+2 - 2 = 0
+2 - 3 = -1
+ 
+3 - -3 = 6
+3 - -2 = 5
+3 - -1 = 4
+3 - 0 = 3
+3 - 1 = 2
+3 - 2 = 1
+3 - 3 = 0
+ 
+#
+-3 * -3 = 9
+-3 * -2 = 6
+-3 * -1 = 3
+-3 * 0 = 0
+-3 * 1 = -3
+-3 * 2 = -6
+-3 * 3 = -9
+ 
+-2 * -3 = 6
+-2 * -2 = 4
+-2 * -1 = 2
+-2 * 0 = 0
+-2 * 1 = -2
+-2 * 2 = -4
+-2 * 3 = -6
+ 
+-1 * -3 = 3
+-1 * -2 = 2
+-1 * -1 = 1
+-1 * 0 = 0
+-1 * 1 = -1
+-1 * 2 = -2
+-1 * 3 = -3
+ 
+0 * -3 = 0
+0 * -2 = 0
+0 * -1 = 0
+0 * 0 = 0
+0 * 1 = 0
+0 * 2 = 0
+0 * 3 = 0
+ 
+1 * -3 = -3
+1 * -2 = -2
+1 * -1 = -1
+1 * 0 = 0
+1 * 1 = 1
+1 * 2 = 2
+1 * 3 = 3
+ 
+2 * -3 = -6
+2 * -2 = -4
+2 * -1 = -2
+2 * 0 = 0
+2 * 1 = 2
+2 * 2 = 4
+2 * 3 = 6
+ 
+3 * -3 = -9
+3 * -2 = -6
+3 * -1 = -3
+3 * 0 = 0
+3 * 1 = 3
+3 * 2 = 6
+3 * 3 = 9
+ 
+#
+negate -3 = 3
+negate -2 = 2
+negate -1 = 1
+negate 0 = 0
+negate 1 = -1
+negate 2 = -2
+negate 3 = -3
+#
+testReal
+toRational -3 = -3 % 1
+toRational -2 = -2 % 1
+toRational -1 = -1 % 1
+toRational 0 = 0 % 1
+toRational 1 = 1 % 1
+toRational 2 = 2 % 1
+toRational 3 = 3 % 1
+#
+testIntegral
+-3 `divMod`  -3 = (1,0)
+-3 `divMod`  -2 = (1,-1)
+-3 `divMod`  -1 = (3,0)
+-3 `divMod`  1 = (-3,0)
+-3 `divMod`  2 = (-2,1)
+-3 `divMod`  3 = (-1,0)
+ 
+-2 `divMod`  -3 = (0,-2)
+-2 `divMod`  -2 = (1,0)
+-2 `divMod`  -1 = (2,0)
+-2 `divMod`  1 = (-2,0)
+-2 `divMod`  2 = (-1,0)
+-2 `divMod`  3 = (-1,1)
+ 
+-1 `divMod`  -3 = (0,-1)
+-1 `divMod`  -2 = (0,-1)
+-1 `divMod`  -1 = (1,0)
+-1 `divMod`  1 = (-1,0)
+-1 `divMod`  2 = (-1,1)
+-1 `divMod`  3 = (-1,2)
+ 
+0 `divMod`  -3 = (0,0)
+0 `divMod`  -2 = (0,0)
+0 `divMod`  -1 = (0,0)
+0 `divMod`  1 = (0,0)
+0 `divMod`  2 = (0,0)
+0 `divMod`  3 = (0,0)
+ 
+1 `divMod`  -3 = (-1,-2)
+1 `divMod`  -2 = (-1,-1)
+1 `divMod`  -1 = (-1,0)
+1 `divMod`  1 = (1,0)
+1 `divMod`  2 = (0,1)
+1 `divMod`  3 = (0,1)
+ 
+2 `divMod`  -3 = (-1,-1)
+2 `divMod`  -2 = (-1,0)
+2 `divMod`  -1 = (-2,0)
+2 `divMod`  1 = (2,0)
+2 `divMod`  2 = (1,0)
+2 `divMod`  3 = (0,2)
+ 
+3 `divMod`  -3 = (-1,0)
+3 `divMod`  -2 = (-2,-1)
+3 `divMod`  -1 = (-3,0)
+3 `divMod`  1 = (3,0)
+3 `divMod`  2 = (1,1)
+3 `divMod`  3 = (1,0)
+ 
+#
+-3 `div`     -3 = 1
+-3 `div`     -2 = 1
+-3 `div`     -1 = 3
+-3 `div`     1 = -3
+-3 `div`     2 = -2
+-3 `div`     3 = -1
+ 
+-2 `div`     -3 = 0
+-2 `div`     -2 = 1
+-2 `div`     -1 = 2
+-2 `div`     1 = -2
+-2 `div`     2 = -1
+-2 `div`     3 = -1
+ 
+-1 `div`     -3 = 0
+-1 `div`     -2 = 0
+-1 `div`     -1 = 1
+-1 `div`     1 = -1
+-1 `div`     2 = -1
+-1 `div`     3 = -1
+ 
+0 `div`     -3 = 0
+0 `div`     -2 = 0
+0 `div`     -1 = 0
+0 `div`     1 = 0
+0 `div`     2 = 0
+0 `div`     3 = 0
+ 
+1 `div`     -3 = -1
+1 `div`     -2 = -1
+1 `div`     -1 = -1
+1 `div`     1 = 1
+1 `div`     2 = 0
+1 `div`     3 = 0
+ 
+2 `div`     -3 = -1
+2 `div`     -2 = -1
+2 `div`     -1 = -2
+2 `div`     1 = 2
+2 `div`     2 = 1
+2 `div`     3 = 0
+ 
+3 `div`     -3 = -1
+3 `div`     -2 = -2
+3 `div`     -1 = -3
+3 `div`     1 = 3
+3 `div`     2 = 1
+3 `div`     3 = 1
+ 
+#
+-3 `mod`     -3 = 0
+-3 `mod`     -2 = -1
+-3 `mod`     -1 = 0
+-3 `mod`     1 = 0
+-3 `mod`     2 = 1
+-3 `mod`     3 = 0
+ 
+-2 `mod`     -3 = -2
+-2 `mod`     -2 = 0
+-2 `mod`     -1 = 0
+-2 `mod`     1 = 0
+-2 `mod`     2 = 0
+-2 `mod`     3 = 1
+ 
+-1 `mod`     -3 = -1
+-1 `mod`     -2 = -1
+-1 `mod`     -1 = 0
+-1 `mod`     1 = 0
+-1 `mod`     2 = 1
+-1 `mod`     3 = 2
+ 
+0 `mod`     -3 = 0
+0 `mod`     -2 = 0
+0 `mod`     -1 = 0
+0 `mod`     1 = 0
+0 `mod`     2 = 0
+0 `mod`     3 = 0
+ 
+1 `mod`     -3 = -2
+1 `mod`     -2 = -1
+1 `mod`     -1 = 0
+1 `mod`     1 = 0
+1 `mod`     2 = 1
+1 `mod`     3 = 1
+ 
+2 `mod`     -3 = -1
+2 `mod`     -2 = 0
+2 `mod`     -1 = 0
+2 `mod`     1 = 0
+2 `mod`     2 = 0
+2 `mod`     3 = 2
+ 
+3 `mod`     -3 = 0
+3 `mod`     -2 = -1
+3 `mod`     -1 = 0
+3 `mod`     1 = 0
+3 `mod`     2 = 1
+3 `mod`     3 = 0
+ 
+#
+-3 `quotRem` -3 = (1,0)
+-3 `quotRem` -2 = (1,-1)
+-3 `quotRem` -1 = (3,0)
+-3 `quotRem` 1 = (-3,0)
+-3 `quotRem` 2 = (-1,-1)
+-3 `quotRem` 3 = (-1,0)
+ 
+-2 `quotRem` -3 = (0,-2)
+-2 `quotRem` -2 = (1,0)
+-2 `quotRem` -1 = (2,0)
+-2 `quotRem` 1 = (-2,0)
+-2 `quotRem` 2 = (-1,0)
+-2 `quotRem` 3 = (0,-2)
+ 
+-1 `quotRem` -3 = (0,-1)
+-1 `quotRem` -2 = (0,-1)
+-1 `quotRem` -1 = (1,0)
+-1 `quotRem` 1 = (-1,0)
+-1 `quotRem` 2 = (0,-1)
+-1 `quotRem` 3 = (0,-1)
+ 
+0 `quotRem` -3 = (0,0)
+0 `quotRem` -2 = (0,0)
+0 `quotRem` -1 = (0,0)
+0 `quotRem` 1 = (0,0)
+0 `quotRem` 2 = (0,0)
+0 `quotRem` 3 = (0,0)
+ 
+1 `quotRem` -3 = (0,1)
+1 `quotRem` -2 = (0,1)
+1 `quotRem` -1 = (-1,0)
+1 `quotRem` 1 = (1,0)
+1 `quotRem` 2 = (0,1)
+1 `quotRem` 3 = (0,1)
+ 
+2 `quotRem` -3 = (0,2)
+2 `quotRem` -2 = (-1,0)
+2 `quotRem` -1 = (-2,0)
+2 `quotRem` 1 = (2,0)
+2 `quotRem` 2 = (1,0)
+2 `quotRem` 3 = (0,2)
+ 
+3 `quotRem` -3 = (-1,0)
+3 `quotRem` -2 = (-1,1)
+3 `quotRem` -1 = (-3,0)
+3 `quotRem` 1 = (3,0)
+3 `quotRem` 2 = (1,1)
+3 `quotRem` 3 = (1,0)
+ 
+#
+-3 `quot`    -3 = 1
+-3 `quot`    -2 = 1
+-3 `quot`    -1 = 3
+-3 `quot`    1 = -3
+-3 `quot`    2 = -1
+-3 `quot`    3 = -1
+ 
+-2 `quot`    -3 = 0
+-2 `quot`    -2 = 1
+-2 `quot`    -1 = 2
+-2 `quot`    1 = -2
+-2 `quot`    2 = -1
+-2 `quot`    3 = 0
+ 
+-1 `quot`    -3 = 0
+-1 `quot`    -2 = 0
+-1 `quot`    -1 = 1
+-1 `quot`    1 = -1
+-1 `quot`    2 = 0
+-1 `quot`    3 = 0
+ 
+0 `quot`    -3 = 0
+0 `quot`    -2 = 0
+0 `quot`    -1 = 0
+0 `quot`    1 = 0
+0 `quot`    2 = 0
+0 `quot`    3 = 0
+ 
+1 `quot`    -3 = 0
+1 `quot`    -2 = 0
+1 `quot`    -1 = -1
+1 `quot`    1 = 1
+1 `quot`    2 = 0
+1 `quot`    3 = 0
+ 
+2 `quot`    -3 = 0
+2 `quot`    -2 = -1
+2 `quot`    -1 = -2
+2 `quot`    1 = 2
+2 `quot`    2 = 1
+2 `quot`    3 = 0
+ 
+3 `quot`    -3 = -1
+3 `quot`    -2 = -1
+3 `quot`    -1 = -3
+3 `quot`    1 = 3
+3 `quot`    2 = 1
+3 `quot`    3 = 1
+ 
+#
+-3 `rem`     -3 = 0
+-3 `rem`     -2 = -1
+-3 `rem`     -1 = 0
+-3 `rem`     1 = 0
+-3 `rem`     2 = -1
+-3 `rem`     3 = 0
+ 
+-2 `rem`     -3 = -2
+-2 `rem`     -2 = 0
+-2 `rem`     -1 = 0
+-2 `rem`     1 = 0
+-2 `rem`     2 = 0
+-2 `rem`     3 = -2
+ 
+-1 `rem`     -3 = -1
+-1 `rem`     -2 = -1
+-1 `rem`     -1 = 0
+-1 `rem`     1 = 0
+-1 `rem`     2 = -1
+-1 `rem`     3 = -1
+ 
+0 `rem`     -3 = 0
+0 `rem`     -2 = 0
+0 `rem`     -1 = 0
+0 `rem`     1 = 0
+0 `rem`     2 = 0
+0 `rem`     3 = 0
+ 
+1 `rem`     -3 = 1
+1 `rem`     -2 = 1
+1 `rem`     -1 = 0
+1 `rem`     1 = 0
+1 `rem`     2 = 1
+1 `rem`     3 = 1
+ 
+2 `rem`     -3 = 2
+2 `rem`     -2 = 0
+2 `rem`     -1 = 0
+2 `rem`     1 = 0
+2 `rem`     2 = 0
+2 `rem`     3 = 2
+ 
+3 `rem`     -3 = 0
+3 `rem`     -2 = 1
+3 `rem`     -1 = 0
+3 `rem`     1 = 0
+3 `rem`     2 = 1
+3 `rem`     3 = 0
+ 
+#
+--------------------------------
 --Testing Int8
 --------------------------------
 testBounded
@@ -1357,7 +2262,6 @@ isSigned 2 = True
 isSigned 3 = True
 #
 --------------------------------
---------------------------------
 --Testing Int16
 --------------------------------
 testBounded
@@ -2716,7 +3620,6 @@ isSigned 2 = True
 isSigned 3 = True
 #
 --------------------------------
---------------------------------
 --Testing Int32
 --------------------------------
 testBounded
@@ -4075,7 +4978,6 @@ isSigned 2 = True
 isSigned 3 = True
 #
 --------------------------------
---------------------------------
 --Testing Word8
 --------------------------------
 testBounded
@@ -5434,7 +6336,6 @@ isSigned 2 = False
 isSigned 3 = False
 #
 --------------------------------
---------------------------------
 --Testing Word16
 --------------------------------
 testBounded
@@ -6793,7 +7694,6 @@ isSigned 2 = False
 isSigned 3 = False
 #
 --------------------------------
---------------------------------
 --Testing Word32
 --------------------------------
 testBounded
@@ -8151,4 +9051,3 @@ isSigned 1 = False
 isSigned 2 = False
 isSigned 3 = False
 #
---------------------------------
diff --git a/ghc/tests/programs/Makefile b/ghc/tests/programs/Makefile
index 617e589493ca..98443768849c 100644
--- a/ghc/tests/programs/Makefile
+++ b/ghc/tests/programs/Makefile
@@ -1,7 +1,7 @@
 TOP = .
 include $(TOP)/mk/boilerplate.mk
 
-NOT_THESE = CVS mk Makefile \
+NOT_THESE = CVS mk Makefile
 
 NOT_THESE += hill_stk_oflow
 #	Correctly fails to terminate
@@ -9,7 +9,12 @@ NOT_THESE += hill_stk_oflow
 NOT_THESE += ipoole_spec_class
 #	Dialogue style IO
 
-#	areid_pass
+NOT_THESE += areid_pass
+#	Old-style I/O
+
+NOT_THESE += north_lias
+#	Deliberately causes divide by zero, and
+#	we can't catch that yet
 
 SUBDIRS = $(filter-out $(NOT_THESE), $(wildcard *))
 
diff --git a/ghc/tests/programs/barton-mangler-bug/Basic.hs b/ghc/tests/programs/barton-mangler-bug/Basic.hs
index ad240f8cfeb6..5b3d054c5096 100644
--- a/ghc/tests/programs/barton-mangler-bug/Basic.hs
+++ b/ghc/tests/programs/barton-mangler-bug/Basic.hs
@@ -18,7 +18,13 @@ instance Signal (->) where
 data {- (Physical a, Physical b) => -} SignalRep a b =
    FunctionRep (a -> b) |
    PieceContRep (PieceCont a b)
-   deriving (Eq, Show)
+
+instance Eq (SignalRep a b) where
+  (==) a b = error "No equality for SignalRep"
+
+instance Show (SignalRep a b) where
+  show sr = error "No show for SignalRep"
+
 instance Signal SignalRep where
   mapSignal (FunctionRep f) = mapSignal f
   mapSignal (PieceContRep f) = mapSignal f
@@ -64,7 +70,12 @@ data Event =
   TimeEvent Float | 
   FunctionEvent (Float -> Bool) |
   BurstEvent Int Event
-  deriving (Show)
+
+instance Show Event where
+  show (TimeEvent f) = "TimeEvent " ++ show f
+  show (FunctionEvent _) = "FunctionEvent"
+  show (BurstEvent i e)  = "BurstEvent " ++ show i ++ " " ++ show e
+
 instance Eq Event where
   (TimeEvent x) == (TimeEvent y) = x == y
   (BurstEvent i e) == (BurstEvent i' e') = (i' == i) && (e' == e)
diff --git a/ghc/tests/programs/fast2haskell/Word.hs b/ghc/tests/programs/fast2haskell/Word.hs
index 4c7091cdcf29..916162208335 100644
--- a/ghc/tests/programs/fast2haskell/Word.hs
+++ b/ghc/tests/programs/fast2haskell/Word.hs
@@ -50,8 +50,8 @@ instance Num Word where
 	Word x - Word y = case (w2i x) -# (w2i y) of z -> Word (i2w z)
 	Word x * Word y = case (w2i x) *# (w2i y) of z -> Word (i2w z)
 	negate (Word x) = case negateInt# (w2i x)  of z -> Word (i2w z)
-	fromInteger (J# a# s# d#)
-	  = case integer2Int# a# s# d# of { z# ->
+	fromInteger i
+	  = case fromInteger i of { I# z# ->
 	    Word (i2w z#) }
 
 instance Show Word where
diff --git a/ghc/tests/programs/fun_insts/Main.hs b/ghc/tests/programs/fun_insts/Main.hs
index 286154ccb88c..fece8c9c4780 100644
--- a/ghc/tests/programs/fun_insts/Main.hs
+++ b/ghc/tests/programs/fun_insts/Main.hs
@@ -5,6 +5,9 @@ module Main where
 instance (Eq a, Eq b) => Eq (a->b)
  
 
+instance Show (a->b) where
+  show f = "<<function>>"
+
 instance (Num a, Num b) => Num (a->b) where
     f + g    = \x -> f x + g x
     negate f = \x -> - (f x)
diff --git a/ghc/tests/programs/jeff-bug/AQ.hs b/ghc/tests/programs/jeff-bug/AQ.hs
index 397f96ccfd4d..ec86a6761c0d 100644
--- a/ghc/tests/programs/jeff-bug/AQ.hs
+++ b/ghc/tests/programs/jeff-bug/AQ.hs
@@ -150,7 +150,7 @@ iterateQueue q f
 
 update q n f 
   = do { x <- getQVal q n
-       ; setQVal q n $ map f x
+       ; setQVal q n $ fmap f x
        }
 
 -------------------------------------------------------------------------
diff --git a/ghc/tests/programs/jeff-bug/BoundedSet.hs b/ghc/tests/programs/jeff-bug/BoundedSet.hs
index 0583ba6f54d8..b8e8cafb7a6a 100644
--- a/ghc/tests/programs/jeff-bug/BoundedSet.hs
+++ b/ghc/tests/programs/jeff-bug/BoundedSet.hs
@@ -14,7 +14,7 @@ module BoundedSet
 
 import LazyST
 import Prelude hiding (read)
-import List
+import List    hiding (insert)
 
 
 new        :: Int -> ST s (BoundedSet s a)
diff --git a/ghc/tests/programs/jeff-bug/Devices.hs b/ghc/tests/programs/jeff-bug/Devices.hs
index 96a2940a2fd9..fd3366c75887 100644
--- a/ghc/tests/programs/jeff-bug/Devices.hs
+++ b/ghc/tests/programs/jeff-bug/Devices.hs
@@ -16,6 +16,7 @@ import LazyST
 import Instruction 
 
 import Array
+import Monad
 import StateArray
 import Ix
 
@@ -109,8 +110,8 @@ fetch (k,f,lim,memory@(range,_)) pc n
   buildPCs :: (Word w, Cell c, Register r, Instruction i) =>
             w -> (w,w) -> Trans i (c r w) -> Int -> [Trans i (c r w)]
   buildPCs k range pctrans n
-    = do p <- map getReg $ T.getDstPC pctrans
-         pc <- map getVal $ T.getDstPC pctrans
+    = do p <- fmap getReg $ T.getDstPC pctrans
+         pc <- fmap getVal $ T.getDstPC pctrans
          let pcs = filter (inRange range) $ take n [pc,pc+k .. ]
          return $ map (mkPC range) pcs
       `catchEx` []
@@ -138,7 +139,7 @@ instrsFetch n convert initContents pcs
              let x = getVal reg 
              guard $ ispc p
              return x
-           `catchEx` (error "ugh" ) --$ "getpc " ++ show t)
+           `catchEx` (error "ugh" ) -- $ "getpc " ++ show t)
       insertPCs pcs l = lift2 addPCs pcs l   
       addPCs x y = zipWith addPC x y
       addPC pc (Trans d o s l) = Trans d o s (loc pc:l)
@@ -290,7 +291,7 @@ pairRegFile bounds initVals writePorts readPorts
 
 -- I THINK THAT THIS ONE SHOULD GO...
 registers src1 src2 p
-  = unbundle2 $ map getContents arrResps
+  = unbundle2 $ fmap getContents arrResps
     where
       (writebackContents,writebackReg) = unbundle2 p
       arrResps = stateArray ((minBound,maxBound),[(minBound,maxBound,0)])
diff --git a/ghc/tests/programs/jeff-bug/PreludeSig.hs b/ghc/tests/programs/jeff-bug/PreludeSig.hs
index f2cd6109d6f9..b54bbbed927b 100644
--- a/ghc/tests/programs/jeff-bug/PreludeSig.hs
+++ b/ghc/tests/programs/jeff-bug/PreludeSig.hs
@@ -1,8 +1,9 @@
 module PreludeSig where
 
-import Prelude(Ord,Bool,MonadZero,Int,($),(.))
+import Prelude(Ord,Bool,Int,($),(.))
 import qualified Prelude as P
 import qualified List
+import Monad
 import Signal
 
 -- Begin Signature ----------------------------------------------------
@@ -20,7 +21,7 @@ max :: Ord a => Signal a -> Signal a -> Signal a
 min :: Ord a => Signal a -> Signal a -> Signal a
 maximum :: Ord a => Signal [a] -> Signal a
 minimum :: Ord a => Signal [a] -> Signal a
-filter :: MonadZero c => (a -> Bool) -> Signal (c a) -> Signal (c a)
+filter :: MonadPlus c => (a -> Bool) -> Signal (c a) -> Signal (c a)
 partition :: (a -> Bool) -> Signal [a] -> (Signal [a],Signal [a])
 fst :: Signal (a,b) -> Signal a
 snd :: Signal (a,b) -> Signal b
@@ -44,7 +45,10 @@ maximum = lift1 P.maximum
 
 minimum = lift1 P.minimum
 
-filter x y = lift1 (P.filter x) y
+filter p y = lift1 filt y
+	   where
+	     filt m = do { x <- m;
+			   if p x then mzero else return x }
 
 partition x y = unbundle2 (lift1 (List.partition x) y )
 
diff --git a/ghc/tests/programs/jeff-bug/ROB_retire.hs b/ghc/tests/programs/jeff-bug/ROB_retire.hs
index 0080259aa594..b00c78d50bf4 100644
--- a/ghc/tests/programs/jeff-bug/ROB_retire.hs
+++ b/ghc/tests/programs/jeff-bug/ROB_retire.hs
@@ -12,6 +12,7 @@ import AQ(AQ)
 import RAT(RAT)
 
 import DLX
+import Monad
 import Utils
 
 
diff --git a/ghc/tests/programs/jeff-bug/STEx.hs b/ghc/tests/programs/jeff-bug/STEx.hs
index cb77722b9c4d..76ed6fb6864f 100644
--- a/ghc/tests/programs/jeff-bug/STEx.hs
+++ b/ghc/tests/programs/jeff-bug/STEx.hs
@@ -1,5 +1,6 @@
 module STEx where
 import LazyST
+import Monad
 
 infixl 1 `handle`
 
@@ -13,7 +14,6 @@ infixl 1 `handle`
 {-data STEx s a-}
 
 {-instance Monad (STEx s)-}
-{-instance MonadZero (STEx s)-}
 {-instance MonadPlus (STEx s)-}
 
 -- c `handle` x, return x if c raises an exception
@@ -49,13 +49,11 @@ instance Monad (STEx s) where
                                       in z'
                             Nothing -> return Nothing
 
-instance MonadZero (STEx s) where
-	zero = liftEx zero
-
 instance MonadPlus (STEx s) where
-	(STEx x) ++ (STEx y) = STEx $ do x' <- x
-                                         y' <- y
-                                         return $ x' ++ y'
+	mzero = liftEx mzero
+	(STEx x) `mplus` (STEx y) = STEx $ do x' <- x
+                        	              y' <- y
+                                   	      return $ mplus x' y'
 liftST x = STEx $ do {z <- x ; return $ return z}
 
 liftEx x = STEx $ return x
diff --git a/ghc/tests/programs/jeff-bug/Signal.hs b/ghc/tests/programs/jeff-bug/Signal.hs
index 5498a26040e1..c4b20402bdb4 100644
--- a/ghc/tests/programs/jeff-bug/Signal.hs
+++ b/ghc/tests/programs/jeff-bug/Signal.hs
@@ -1,4 +1,5 @@
 module Signal where
+import Monad
 import LazyST
 import List
 import Random
@@ -212,7 +213,7 @@ instance Integral a => Integral (Signal a) where
 (*>=) = lift2 (>=)
 (*&&) = lift2 (&&)
 (*||) = lift2 (||)
-(*++) = lift2 (++)
+(*++) = lift2 mplus
 (*:)  = lift2 (:)
 
 data Then = Then
@@ -241,7 +242,7 @@ newtype Signal a = List [a]
         deriving Show
 
 instance Functor Signal where
-  map f ~(List as) = List (map f as)
+  fmap f ~(List as) = List (map f as)
 
 
 at ~(List l) n = l!!n
@@ -290,9 +291,11 @@ superscalar f (List input) = List (chop lens output)
 ------------------------------------------------------------------------
 -- Non-determinism
 
-integers = List . unsafePerformIO . randomIO 
+-- integers :: (Integer,Integer) -> Signal Integer
+integers rng = List (unsafePerformIO (do { g <- newStdGen ;
+					   return (randomRs rng g) }))
 
-ints = map toInt . integers . toIntegers
+ints = fmap toInt . integers . toIntegers
     where
     toIntegers (x,y) = (toInteger x,toInteger y)
 
diff --git a/ghc/tests/programs/jeff-bug/Trans.hs b/ghc/tests/programs/jeff-bug/Trans.hs
index 29c96c6c435a..62cb987d4536 100644
--- a/ghc/tests/programs/jeff-bug/Trans.hs
+++ b/ghc/tests/programs/jeff-bug/Trans.hs
@@ -312,7 +312,7 @@ rawHazard (preceeding,following)
 filterDst f (Trans d _ _ _) = filter f d
 
 --added 19 Nov
-filterOut f = map (filter $ not . f)
+filterOut f = fmap (filter $ not . f)
 
 fillInCells cells bypassCells
   = repCells (\x y -> (not $ isAss y) && cellHazard x y) cells bypassCells
diff --git a/ghc/tests/programs/life_space_leak/Makefile b/ghc/tests/programs/life_space_leak/Makefile
index cc14abc6b2b9..00783e530de9 100644
--- a/ghc/tests/programs/life_space_leak/Makefile
+++ b/ghc/tests/programs/life_space_leak/Makefile
@@ -1,7 +1,7 @@
 TOP = ..
 include $(TOP)/mk/boilerplate.mk
 
-SRC_RUNTEST_OPTS += -prescript ./life.test
+SRC_RUNTEST_OPTS += -prescript "./life.test
 
 all :: runtest
 
diff --git a/ghc/tests/programs/north_lias/Main.lhs b/ghc/tests/programs/north_lias/Main.lhs
index 3f4a4373acd2..46c23877b9b3 100644
--- a/ghc/tests/programs/north_lias/Main.lhs
+++ b/ghc/tests/programs/north_lias/Main.lhs
@@ -17,7 +17,9 @@ used in expressions, but does not determine the characteristics.
 
 > maxInt, minInt :: Int
 > maxInt = maxBound
-> minInt = minBound
+> minInt = minBound + 1		-- NOTA BENE: this program does (minInt `rem` (-1)), and
+>				-- that gives an exception if minInt = minBound,
+>				-- because the result of the division is too big to fit
 
 > main  =  (initial_checks flp_parms . main_identities flp_parms .
 >           notification_checks flp_parms) (return ())
@@ -102,20 +104,20 @@ AN element has the form
 >     | i /= j  =  showits "Integer operation check number " .
 >                  showit test_number . showits " fails with " .
 >                  showit i . showits " ". showit j . new_line
->     | True    =  id
+>     | True    =  showits "Integer operation check number " . showit test_number . showits " ok " . new_line
 
 > equal_flp :: (RealFloat a) => (a, a, Int) -> Cont -> Cont
 > equal_flp (x, y, test_number)
 >     | x /= y  =  showits "Floating point operation check number " .
 >                  showit test_number . showits " fails" . new_line .
 >                  showit x . showits " " . showit y . new_line
->     | True    =  id
+>     | True    =  showits "Floating operation check number " . showit test_number . showits " ok " . new_line
 
 > test_true :: (Bool, Int) -> Cont -> Cont
 > test_true (b, test_number)
 >     | not b  =  showits "Predicate number " . showit test_number .
 >                 showits " fails " .  showit b . new_line
->     | True    =  id
+>     | True   =  showits "Predicate number " . showit test_number . showits " ok " . new_line
 
 > -- This procedure checks that sqrt(y*y) = y when y*y is exact 
 > check_exact_squares :: (RealFloat a) => FloatParms a -> Cont -> Cont
diff --git a/ghc/tests/programs/okeefe_neural/Main.hs b/ghc/tests/programs/okeefe_neural/Main.hs
index 5c6cffa22d9d..35c5c82b4315 100644
--- a/ghc/tests/programs/okeefe_neural/Main.hs
+++ b/ghc/tests/programs/okeefe_neural/Main.hs
@@ -121,7 +121,7 @@ train pats i_h_wt i_h_ch h_o_wt h_o_ch epochs s =
           out_err = vscale (vsub out_pat out_act) out_act
           hid_err = vscale (vmmul out_err h_o_wt) hid_act
 
-main = ans
+main = putStrLn (show ans)
     where (in1,out1)   = head patterns
           nin          = length in1
           nhid         = nin
diff --git a/ghc/tests/reader/should_compile/MyList.hi b/ghc/tests/reader/should_compile/MyList.hi
index b92cd0fccc5a..07777f364838 100644
--- a/ghc/tests/reader/should_compile/MyList.hi
+++ b/ghc/tests/reader/should_compile/MyList.hi
@@ -1,6 +1,5 @@
 __interface MyList 1 0 where
+__export MyList MyList{Empty ZCZCZC};
 import PrelBase 16 :: addr2Integer 1 foldr 1 int2Integer 1 integer_0 1 integer_1 1 integer_2 1 integer_m1 1;
 import PrelPack 15 :: packCStringzh 1 unpackAppendCStringzh 1 unpackCStringzh 1 unpackFoldrCStringzh 1 unpackNByteszh 1;
-__instimport IO ; __instimport PrelAddr ; __instimport PrelArr ; __instimport PrelBounded ; __instimport PrelCCall ; __instimport PrelConc ; __instimport PrelForeign ; __instimport PrelIOBase ; __instimport PrelNum ; __instimport PrelNumExtra ; __instimport PrelStable ; __instimport PrelTup ;
-__export MyList MyList{Empty ZCZCZC};
 2 data MyList a = Empty |  ZCZCZC (MyList a) (MyList a) ;
diff --git a/ghc/tests/reader/should_compile/read012.stderr b/ghc/tests/reader/should_compile/read012.stderr
index e375ede56fe4..591ad122e513 100644
--- a/ghc/tests/reader/should_compile/read012.stderr
+++ b/ghc/tests/reader/should_compile/read012.stderr
@@ -1 +1 @@
-ghc: module version changed to 1; reason: no old .hi file
+ghc: module version unchanged at 1
diff --git a/ghc/tests/reader/should_fail/expr001.hs b/ghc/tests/reader/should_fail/expr001.hs
index 49853a74cfbf..03b34d97763c 100644
--- a/ghc/tests/reader/should_fail/expr001.hs
+++ b/ghc/tests/reader/should_fail/expr001.hs
@@ -6,6 +6,7 @@ Date: Wed, 9 Oct 91 17:31:46 BST
 
 OK, I've fixed that little problem by disallowing,
 -}
+module Test where
 
 f x = x + if c then 1 else 2
 f x = x + 1::Int
diff --git a/ghc/tests/reader/should_fail/expr001.stderr b/ghc/tests/reader/should_fail/expr001.stderr
index 8b8731c8c3ec..53883ace1a81 100644
--- a/ghc/tests/reader/should_fail/expr001.stderr
+++ b/ghc/tests/reader/should_fail/expr001.stderr
@@ -1,13 +1,13 @@
 
 ==================== Reader ====================
-module Main where
+module Test where
 {- rec -}
 f x = x zp (if c then 1 else 2)
 f x = x zp 1 :: Int
 
 
 
-expr001.hs:10: Variable not in scope: `c'
+expr001.hs:11: Variable not in scope: `c'
 
 Compilation had errors
 
diff --git a/ghc/tests/rename/should_fail/rnfail001.stderr b/ghc/tests/rename/should_fail/rnfail001.stderr
index 5f6ddc5fc0e6..1b68fe45da02 100644
--- a/ghc/tests/rename/should_fail/rnfail001.stderr
+++ b/ghc/tests/rename/should_fail/rnfail001.stderr
@@ -1,8 +1,7 @@
 
 rnfail001.hs:3:
     Conflicting definitions for `x'
-    in a pattern
-
+    in a pattern type-signature
 
 Compilation had errors
 
diff --git a/ghc/tests/rename/should_fail/rnfail002.stderr b/ghc/tests/rename/should_fail/rnfail002.stderr
index 75ba87bf76d7..58f13b735c1b 100644
--- a/ghc/tests/rename/should_fail/rnfail002.stderr
+++ b/ghc/tests/rename/should_fail/rnfail002.stderr
@@ -4,6 +4,5 @@ rnfail002.hs:4:
 	defined at rnfail002.hs:5
 	defined at rnfail002.hs:6
 
-
 Compilation had errors
 
diff --git a/ghc/tests/rename/should_fail/rnfail003.stderr b/ghc/tests/rename/should_fail/rnfail003.stderr
index 61ffb25a6c34..04fffdb5279d 100644
--- a/ghc/tests/rename/should_fail/rnfail003.stderr
+++ b/ghc/tests/rename/should_fail/rnfail003.stderr
@@ -4,6 +4,5 @@ rnfail003.hs:2:
 	defined at rnfail003.hs:2
 	defined at rnfail003.hs:4
 
-
 Compilation had errors
 
diff --git a/ghc/tests/rename/should_fail/rnfail004.stderr b/ghc/tests/rename/should_fail/rnfail004.stderr
index 5a256e72acf3..50197739e745 100644
--- a/ghc/tests/rename/should_fail/rnfail004.stderr
+++ b/ghc/tests/rename/should_fail/rnfail004.stderr
@@ -7,6 +7,5 @@ rnfail004.hs:7:
     Conflicting definitions for `b'
     in a binding group
 
-
 Compilation had errors
 
diff --git a/ghc/tests/rename/should_fail/rnfail007.stderr b/ghc/tests/rename/should_fail/rnfail007.stderr
index d3c6a4915414..4a25ef3f1e98 100644
--- a/ghc/tests/rename/should_fail/rnfail007.stderr
+++ b/ghc/tests/rename/should_fail/rnfail007.stderr
@@ -1,6 +1,5 @@
 
-rnfail007.hs:3: Module `Main' must include a definition for `main'
-
+rnfail007.hs:3: Variable not in scope: `Main.main'
 
 Compilation had errors
 
diff --git a/ghc/tests/rename/should_fail/rnfail008.stderr b/ghc/tests/rename/should_fail/rnfail008.stderr
index 044582f5454c..deaaaaa3a5ed 100644
--- a/ghc/tests/rename/should_fail/rnfail008.stderr
+++ b/ghc/tests/rename/should_fail/rnfail008.stderr
@@ -1,6 +1,5 @@
 
 rnfail008.hs:18: Variable not in scope: `op3'
 
-
 Compilation had errors
 
diff --git a/ghc/tests/rename/should_fail/rnfail009.stderr b/ghc/tests/rename/should_fail/rnfail009.stderr
index 066aaef0c052..dd67a9fe0ea4 100644
--- a/ghc/tests/rename/should_fail/rnfail009.stderr
+++ b/ghc/tests/rename/should_fail/rnfail009.stderr
@@ -4,6 +4,5 @@ rnfail009.hs:1:
 	defined at rnfail009.hs:3
 	defined at rnfail009.hs:5
 
-
 Compilation had errors
 
diff --git a/ghc/tests/rename/should_fail/rnfail010.stderr b/ghc/tests/rename/should_fail/rnfail010.stderr
index 2137a4479024..12e987c8922e 100644
--- a/ghc/tests/rename/should_fail/rnfail010.stderr
+++ b/ghc/tests/rename/should_fail/rnfail010.stderr
@@ -4,6 +4,5 @@ rnfail010.hs:2:
 	defined at rnfail010.hs:2
 	defined at rnfail010.hs:6
 
-
 Compilation had errors
 
diff --git a/ghc/tests/rename/should_fail/rnfail011.stderr b/ghc/tests/rename/should_fail/rnfail011.stderr
index 5bae7600f5df..3b6fe95d1c74 100644
--- a/ghc/tests/rename/should_fail/rnfail011.stderr
+++ b/ghc/tests/rename/should_fail/rnfail011.stderr
@@ -4,6 +4,5 @@ rnfail011.hs:2:
 	defined at rnfail011.hs:2
 	defined at rnfail011.hs:6
 
-
 Compilation had errors
 
diff --git a/ghc/tests/rename/should_fail/rnfail012.stderr b/ghc/tests/rename/should_fail/rnfail012.stderr
index 0f5e86f02f49..cd668c8d349b 100644
--- a/ghc/tests/rename/should_fail/rnfail012.stderr
+++ b/ghc/tests/rename/should_fail/rnfail012.stderr
@@ -4,6 +4,5 @@ rnfail012.hs:2:
 	defined at rnfail012.hs:3
 	defined at rnfail012.hs:9
 
-
 Compilation had errors
 
diff --git a/ghc/tests/rename/should_fail/rnfail013.stderr b/ghc/tests/rename/should_fail/rnfail013.stderr
index 2e7f52a46ad0..f3079f58bb5b 100644
--- a/ghc/tests/rename/should_fail/rnfail013.stderr
+++ b/ghc/tests/rename/should_fail/rnfail013.stderr
@@ -4,6 +4,5 @@ rnfail013.hs:3:
 	defined at rnfail013.hs:7
 	defined at rnfail013.hs:9
 
-
 Compilation had errors
 
diff --git a/ghc/tests/rename/should_fail/rnfail014.stderr b/ghc/tests/rename/should_fail/rnfail014.stderr
index ed49f1d02e03..30d68e94a469 100644
--- a/ghc/tests/rename/should_fail/rnfail014.stderr
+++ b/ghc/tests/rename/should_fail/rnfail014.stderr
@@ -1,34 +1,18 @@
 
 rnfail014.hs:9:
-    The constraint `Eq a' does not mention any of
-	the universally quantified type variables {}
-	of the type `Eq Bool'
-    In the type signature for an instance decl
-
-rnfail014.hs:9:
-    The constraint `Eq a'
-	mentions type variables that do not appear in the type
-	`Eq Bool'
+    None of the type variable(s) in the constraint `Eq a'
+	appears in the type `Eq Bool'
     In the type signature for an instance decl
 
 rnfail014.hs:12:
-    The constraint `Eq a' does not mention any of
-	the universally quantified type variables {}
-	of the type `Int -> Int'
-    In the type signature for `f'
-
-rnfail014.hs:12:
-    The constraint `Eq a'
-	mentions type variables that do not appear in the type
-	`Int -> Int'
+    None of the type variable(s) in the constraint `Eq a'
+	appears in the type `Int -> Int'
     In the type signature for `f'
 
 rnfail014.hs:17:
-    The constraint `Eq a' does not mention any of
-	the universally quantified type variables {}
-	of the type `a -> a'
+    None of the type variable(s) in the constraint `Eq a'
+	appears in the type `a -> a'
     In the type signature for `op'
 
-
 Compilation had errors
 
diff --git a/ghc/tests/rename/should_fail/rnfail015.stderr b/ghc/tests/rename/should_fail/rnfail015.stderr
index 184c7503938c..1cb559f5a3a6 100644
--- a/ghc/tests/rename/should_fail/rnfail015.stderr
+++ b/ghc/tests/rename/should_fail/rnfail015.stderr
@@ -3,6 +3,5 @@ rnfail015.hs:9:
     Conflicting definitions for `TokLiteral'
     in the data type declaration for `Token'
 
-
 Compilation had errors
 
diff --git a/ghc/tests/typecheck/should_compile/tc001.stderr b/ghc/tests/typecheck/should_compile/tc001.stderr
index 8763364fbb76..037caa18caa4 100644
--- a/ghc/tests/typecheck/should_compile/tc001.stderr
+++ b/ghc/tests/typecheck/should_compile/tc001.stderr
@@ -1,3 +1,3 @@
 ghc: module version changed to 1; reason: no old .hi file
 __export ShouldSucceed a;
-1 a :: __forall [a] => {PrelBase.Num a} -> a -> a ;
+1 a :: __forall [a] => {PrelNum.Num a} -> a -> a ;
diff --git a/ghc/tests/typecheck/should_compile/tc005.stderr b/ghc/tests/typecheck/should_compile/tc005.stderr
index e18dd0f1b0c7..1e957b8219c4 100644
--- a/ghc/tests/typecheck/should_compile/tc005.stderr
+++ b/ghc/tests/typecheck/should_compile/tc005.stderr
@@ -1,3 +1,3 @@
 ghc: module version changed to 1; reason: no old .hi file
 __export ShouldSucceed g;
-1 g :: __forall [t t1] => {PrelBase.Num t1} -> ([t1], t) -> t1 ;
+1 g :: __forall [t t1] => {PrelNum.Num t1} -> ([t1], t) -> t1 ;
diff --git a/ghc/tests/typecheck/should_compile/tc008.stderr b/ghc/tests/typecheck/should_compile/tc008.stderr
index e2c095d5c917..246a6674e7f4 100644
--- a/ghc/tests/typecheck/should_compile/tc008.stderr
+++ b/ghc/tests/typecheck/should_compile/tc008.stderr
@@ -1,3 +1,3 @@
 ghc: module version changed to 1; reason: no old .hi file
 __export ShouldSucceed n;
-1 n :: __forall [t] => {PrelBase.Num t} -> PrelBase.Bool -> t ;
+1 n :: __forall [t] => {PrelNum.Num t} -> PrelBase.Bool -> t ;
diff --git a/ghc/tests/typecheck/should_compile/tc009.stderr b/ghc/tests/typecheck/should_compile/tc009.stderr
index 2b9b12048c05..2ce12af92d95 100644
--- a/ghc/tests/typecheck/should_compile/tc009.stderr
+++ b/ghc/tests/typecheck/should_compile/tc009.stderr
@@ -1,3 +1,3 @@
 ghc: module version changed to 1; reason: no old .hi file
 __export ShouldSucceed o;
-1 o :: __forall [a] => {PrelBase.Num a} -> (PrelBase.Bool, a) -> a ;
+1 o :: __forall [a] => {PrelNum.Num a} -> (PrelBase.Bool, a) -> a ;
diff --git a/ghc/tests/typecheck/should_compile/tc034.stderr b/ghc/tests/typecheck/should_compile/tc034.stderr
index 1fddd6172227..ff8612fcd574 100644
--- a/ghc/tests/typecheck/should_compile/tc034.stderr
+++ b/ghc/tests/typecheck/should_compile/tc034.stderr
@@ -1,5 +1,5 @@
 ghc: module version changed to 1; reason: no old .hi file
 __export ShouldSucceed AList{ANull ANode} IntList g;
 1 data AList a = ANull |  ANode a (AList a) ;
-1 g :: __forall [t] => {PrelBase.Num t} -> AList PrelBase.Bool -> t ;
+1 g :: __forall [t] => {PrelNum.Num t} -> AList PrelBase.Bool -> t ;
 1 type IntList = AList PrelBase.Int ;
diff --git a/ghc/tests/typecheck/should_compile/tc038.stderr b/ghc/tests/typecheck/should_compile/tc038.stderr
index e8da6c297612..3eccaf215f54 100644
--- a/ghc/tests/typecheck/should_compile/tc038.stderr
+++ b/ghc/tests/typecheck/should_compile/tc038.stderr
@@ -1,3 +1,3 @@
 ghc: module version changed to 1; reason: no old .hi file
 __export ShouldSucceed f;
-1 f :: __forall [a] => {PrelBase.Num a} -> {PrelBase.Eq a} -> [a] -> [a] ;
+1 f :: __forall [a] => {PrelNum.Num a} -> {PrelBase.Eq a} -> [a] -> [a] ;
diff --git a/ghc/tests/typecheck/should_compile/tc048.stderr b/ghc/tests/typecheck/should_compile/tc048.stderr
index 4a33211e26ae..c3f5a8da27ca 100644
--- a/ghc/tests/typecheck/should_compile/tc048.stderr
+++ b/ghc/tests/typecheck/should_compile/tc048.stderr
@@ -1,9 +1,9 @@
 ghc: module version changed to 1; reason: no old .hi file
 __export ShouldSucceed AFE{MkAFE} FG{MkFG} OL{MkOL} mAp ranAFE ranOAL sNd;
-1 data AFE n a b = MkAFE (OL (n, FG a b)) ;
-1 data FG a b = MkFG (OL (a, b)) ;
+1 data AFE n a b = MkAFE (OL  (n, FG  a b)) ;
+1 data FG a b = MkFG (OL  (a, b)) ;
 1 data OL a = MkOL [a] ;
 1 mAp :: __forall [t t1] => (t -> t1) -> [t] -> [t1] ;
-1 ranAFE :: __forall [n a b] => AFE n a b -> [FG a b] ;
-1 ranOAL :: __forall [a v] => OL (a, v) -> [v] ;
+1 ranAFE :: __forall [n a b] => AFE n a b -> [FG  a b] ;
+1 ranOAL :: __forall [a v] => OL  (a, v) -> [v] ;
 1 sNd :: __forall [t t1] => (t, t1) -> t1 ;
diff --git a/ghc/tests/typecheck/should_compile/tc049.stderr b/ghc/tests/typecheck/should_compile/tc049.stderr
index dc06f59110d2..1cb829d1822b 100644
--- a/ghc/tests/typecheck/should_compile/tc049.stderr
+++ b/ghc/tests/typecheck/should_compile/tc049.stderr
@@ -1,6 +1,6 @@
 ghc: module version changed to 1; reason: no old .hi file
 __export ShouldSucceed fib main1 main2 main3 mem mem1 mem2 mem3 mem4 oR oR1;
-1 fib :: __forall [a] => {PrelBase.Num a} -> {PrelBase.Ord a} -> a -> a ;
+1 fib :: __forall [a] => {PrelNum.Num a} -> {PrelBase.Ord a} -> a -> a ;
 1 main1 :: PrelBase.Bool ;
 1 main2 :: PrelBase.Bool ;
 1 main3 :: PrelBase.Bool ;
diff --git a/ghc/tests/typecheck/should_compile/tc050.stderr b/ghc/tests/typecheck/should_compile/tc050.stderr
index 3d24f91e328c..391ae0fce05a 100644
--- a/ghc/tests/typecheck/should_compile/tc050.stderr
+++ b/ghc/tests/typecheck/should_compile/tc050.stderr
@@ -4,6 +4,6 @@ instance {Foo PrelBase.Bool} = zdfFooBool;
 instance {Foo PrelBase.Int} = zdfFooInt;
 1 class Foo a where {o_and :: a -> a -> a} ;
 1 f :: __forall [t] => PrelBase.Bool -> t -> PrelBase.Bool ;
-1 g :: __forall [t a] => {PrelBase.Num a} -> {Foo a} -> a -> t -> a ;
+1 g :: __forall [t a] => {PrelNum.Num a} -> {Foo a} -> a -> t -> a ;
 1 zdfFooBool :: {Foo PrelBase.Bool} ;
 1 zdfFooInt :: {Foo PrelBase.Int} ;
diff --git a/ghc/tests/typecheck/should_compile/tc052.stderr b/ghc/tests/typecheck/should_compile/tc052.stderr
index fb1ffea0a8c9..6c5d6fc7dea4 100644
--- a/ghc/tests/typecheck/should_compile/tc052.stderr
+++ b/ghc/tests/typecheck/should_compile/tc052.stderr
@@ -1,5 +1,5 @@
 ghc: module version changed to 1; reason: no old .hi file
 __export ShouldSucceed A B C;
-1 type A a = B a ;
+1 type A a = B   a ;
 1 type B c = C ;
 1 type C = PrelBase.Int ;
diff --git a/ghc/tests/typecheck/should_compile/tc053.stderr b/ghc/tests/typecheck/should_compile/tc053.stderr
index 8618c30af2cc..6fe016381b49 100644
--- a/ghc/tests/typecheck/should_compile/tc053.stderr
+++ b/ghc/tests/typecheck/should_compile/tc053.stderr
@@ -3,6 +3,6 @@ __export ShouldSucceed Eqzq{deq} f;
 instance {Eqzq PrelBase.Int} = zdfEqzqInt;
 instance __forall [a] => {Eqzq a} -> {Eqzq [a]} = zdfEqzqZMZN;
 1 class Eqzq a where {deq :: a -> a -> PrelBase.Bool} ;
-1 f :: __forall [t] => {PrelBase.Num t} -> {Eqzq [t]} -> [t] -> PrelBase.Bool ;
+1 f :: __forall [t] => {PrelNum.Num t} -> {Eqzq [t]} -> [t] -> PrelBase.Bool ;
 1 zdfEqzqInt :: {Eqzq PrelBase.Int} ;
 1 zdfEqzqZMZN :: __forall [a] => {Eqzq a} -> {Eqzq [a]} ;
diff --git a/ghc/tests/typecheck/should_compile/tc054.stderr b/ghc/tests/typecheck/should_compile/tc054.stderr
index a889e1ced255..ee2f112abfc0 100644
--- a/ghc/tests/typecheck/should_compile/tc054.stderr
+++ b/ghc/tests/typecheck/should_compile/tc054.stderr
@@ -4,6 +4,6 @@ instance {Eqzq PrelBase.Int} = zdfEqzqInt;
 instance {Ordzq PrelBase.Int} = zdfOrdzqInt;
 1 class Eqzq a where {doubleeq :: a -> a -> PrelBase.Bool} ;
 1 class {Eqzq a}  => Ordzq a where {lt :: a -> a -> PrelBase.Bool} ;
-1 f :: __forall [t a] => {PrelBase.Num a} -> {Ordzq a} -> a -> t -> PrelBase.Bool ;
+1 f :: __forall [t a] => {PrelNum.Num a} -> {Ordzq a} -> a -> t -> PrelBase.Bool ;
 1 zdfEqzqInt :: {Eqzq PrelBase.Int} ;
 1 zdfOrdzqInt :: {Ordzq PrelBase.Int} ;
diff --git a/ghc/tests/typecheck/should_compile/tc056.stderr b/ghc/tests/typecheck/should_compile/tc056.stderr
index 61998cc0a313..40c11083fcfe 100644
--- a/ghc/tests/typecheck/should_compile/tc056.stderr
+++ b/ghc/tests/typecheck/should_compile/tc056.stderr
@@ -8,6 +8,6 @@ instance {Eqzq PrelBase.Int} = zdfEqzqInt;
 instance __forall [a] => {Eqzq a} -> {Eqzq a} -> {Eqzq [a]} = zdfEqzqZMZN;
 1 class Eqzq a where {doubleeq :: a -> a -> PrelBase.Bool} ;
 1 class {Eqzq a}  => Ordzq a where {lt :: a -> a -> PrelBase.Bool} ;
-1 f :: __forall [t t1] => {PrelBase.Num t1} -> {Eqzq [t1]} -> [t1] -> t -> PrelBase.Bool ;
+1 f :: __forall [t t1] => {PrelNum.Num t1} -> {Eqzq [t1]} -> [t1] -> t -> PrelBase.Bool ;
 1 zdfEqzqInt :: {Eqzq PrelBase.Int} ;
 1 zdfEqzqZMZN :: __forall [a] => {Eqzq a} -> {Eqzq [a]} ;
diff --git a/ghc/tests/typecheck/should_compile/tc058.stderr b/ghc/tests/typecheck/should_compile/tc058.stderr
index 74a990a4d12a..6ab10409611b 100644
--- a/ghc/tests/typecheck/should_compile/tc058.stderr
+++ b/ghc/tests/typecheck/should_compile/tc058.stderr
@@ -5,7 +5,7 @@ instance __forall [a] => {Eq2 a} -> {Ord2 a} -> {Eq2 [a]} = zdfEq2ZMZN;
 instance {Ord2 PrelBase.Int} = zdfOrd2Int;
 1 class Eq2 a where {doubleeq :: a -> a -> PrelBase.Bool} ;
 1 class {Eq2 a}  => Ord2 a where {lt :: a -> a -> PrelBase.Bool} ;
-1 f :: __forall [t t1] => {PrelBase.Num t1} -> {Eq2 [t1]} -> [t1] -> t -> PrelBase.Bool ;
+1 f :: __forall [t t1] => {PrelNum.Num t1} -> {Eq2 [t1]} -> [t1] -> t -> PrelBase.Bool ;
 1 zdfEq2Int :: {Eq2 PrelBase.Int} ;
 1 zdfEq2ZMZN :: __forall [a] => {Eq2 a} -> {Ord2 a} -> {Eq2 [a]} ;
 1 zdfOrd2Int :: {Ord2 PrelBase.Int} ;
diff --git a/ghc/tests/typecheck/should_compile/tc059.stderr b/ghc/tests/typecheck/should_compile/tc059.stderr
index acab58861937..5372979e590f 100644
--- a/ghc/tests/typecheck/should_compile/tc059.stderr
+++ b/ghc/tests/typecheck/should_compile/tc059.stderr
@@ -3,6 +3,6 @@ __export ShouldSucceed Eq2{foo deq} f;
 instance {Eq2 PrelBase.Int} = zdfEq2Int;
 instance __forall [a] => {Eq2 a} -> {Eq2 [a]} = zdfEq2ZMZN;
 1 class Eq2 a where {foo :: a -> a; deq :: a -> a -> PrelBase.Bool} ;
-1 f :: __forall [t] => {PrelBase.Num t} -> {Eq2 [t]} -> [t] -> PrelBase.Bool ;
+1 f :: __forall [t] => {PrelNum.Num t} -> {Eq2 [t]} -> [t] -> PrelBase.Bool ;
 1 zdfEq2Int :: {Eq2 PrelBase.Int} ;
 1 zdfEq2ZMZN :: __forall [a] => {Eq2 a} -> {Eq2 [a]} ;
diff --git a/ghc/tests/typecheck/should_compile/tc063.stderr b/ghc/tests/typecheck/should_compile/tc063.stderr
index 6ef53ae2dc7d..db2cef51d599 100644
--- a/ghc/tests/typecheck/should_compile/tc063.stderr
+++ b/ghc/tests/typecheck/should_compile/tc063.stderr
@@ -1,9 +1,9 @@
 ghc: module version changed to 1; reason: no old .hi file
 __export ShouldSucceed Reps{f} X{Tag} g;
 instance {Reps PrelBase.Bool} = zdfRepsBool;
-instance __forall [q] => {Reps (X q)} = zdfRepsX;
+instance __forall [q] => {Reps (X   q)} = zdfRepsX;
 1 class Reps r where {f :: r -> r -> r} ;
 1 data X a = Tag a ;
 1 g :: __forall [r] => {Reps r} -> r -> r ;
 1 zdfRepsBool :: {Reps PrelBase.Bool} ;
-1 zdfRepsX :: __forall [q] => {Reps (X q)} ;
+1 zdfRepsX :: __forall [q] => {Reps (X   q)} ;
diff --git a/ghc/tests/typecheck/should_compile/tc065.hs b/ghc/tests/typecheck/should_compile/tc065.hs
index 1cc308eee921..8ea71eec9dfd 100644
--- a/ghc/tests/typecheck/should_compile/tc065.hs
+++ b/ghc/tests/typecheck/should_compile/tc065.hs
@@ -1,6 +1,6 @@
 module ShouldSucceed where
 
-import TheUtils
+-- import TheUtils
 import Set
 import List (partition )
 
diff --git a/ghc/tests/typecheck/should_compile/tc068.stderr b/ghc/tests/typecheck/should_compile/tc068.stderr
index 080ebff082c4..235416f3555b 100644
--- a/ghc/tests/typecheck/should_compile/tc068.stderr
+++ b/ghc/tests/typecheck/should_compile/tc068.stderr
@@ -1,8 +1,8 @@
 ghc: module version changed to 1; reason: no old .hi file
 __export ShouldSucceed B{X Y} T{D C};
-instance __forall [b] => {PrelBase.Eq b} -> {PrelBase.Eq (B b)} = zdfEqB;
-instance __forall [a] => {PrelBase.Eq a} -> {PrelBase.Eq (T a)} = zdfEqT;
+instance __forall [b] => {PrelBase.Eq b} -> {PrelBase.Eq (B   b)} = zdfEqB;
+instance __forall [a] => {PrelBase.Eq a} -> {PrelBase.Eq (T   a)} = zdfEqT;
 1 data B b = X |  Y b ;
-1 data T a = D (B a) |  C ;
-1 zdfEqB :: __forall [b] => {PrelBase.Eq b} -> {PrelBase.Eq (B b)} ;
-1 zdfEqT :: __forall [a] => {PrelBase.Eq a} -> {PrelBase.Eq (T a)} ;
+1 data T a = D (B   a) |  C ;
+1 zdfEqB :: __forall [b] => {PrelBase.Eq b} -> {PrelBase.Eq (B   b)} ;
+1 zdfEqT :: __forall [a] => {PrelBase.Eq a} -> {PrelBase.Eq (T   a)} ;
diff --git a/ghc/tests/typecheck/should_compile/tc074.stderr b/ghc/tests/typecheck/should_compile/tc074.stderr
index 080ebff082c4..235416f3555b 100644
--- a/ghc/tests/typecheck/should_compile/tc074.stderr
+++ b/ghc/tests/typecheck/should_compile/tc074.stderr
@@ -1,8 +1,8 @@
 ghc: module version changed to 1; reason: no old .hi file
 __export ShouldSucceed B{X Y} T{D C};
-instance __forall [b] => {PrelBase.Eq b} -> {PrelBase.Eq (B b)} = zdfEqB;
-instance __forall [a] => {PrelBase.Eq a} -> {PrelBase.Eq (T a)} = zdfEqT;
+instance __forall [b] => {PrelBase.Eq b} -> {PrelBase.Eq (B   b)} = zdfEqB;
+instance __forall [a] => {PrelBase.Eq a} -> {PrelBase.Eq (T   a)} = zdfEqT;
 1 data B b = X |  Y b ;
-1 data T a = D (B a) |  C ;
-1 zdfEqB :: __forall [b] => {PrelBase.Eq b} -> {PrelBase.Eq (B b)} ;
-1 zdfEqT :: __forall [a] => {PrelBase.Eq a} -> {PrelBase.Eq (T a)} ;
+1 data T a = D (B   a) |  C ;
+1 zdfEqB :: __forall [b] => {PrelBase.Eq b} -> {PrelBase.Eq (B   b)} ;
+1 zdfEqT :: __forall [a] => {PrelBase.Eq a} -> {PrelBase.Eq (T   a)} ;
diff --git a/ghc/tests/typecheck/should_compile/tc077.stderr b/ghc/tests/typecheck/should_compile/tc077.stderr
index 54d30b4a9adc..a889edf3dacd 100644
--- a/ghc/tests/typecheck/should_compile/tc077.stderr
+++ b/ghc/tests/typecheck/should_compile/tc077.stderr
@@ -1,5 +1,5 @@
 ghc: module version changed to 1; reason: no old .hi file
 __export ShouldSucceed EQ{zezeze} NUM{ONE TWO} ORD;
-1 class {ORD a, PrelBase.Show a}  => EQ a where {zezeze :: a -> a -> PrelBase.Bool} ;
-1 class {PrelBase.Num a}  => ORD a ;
+1 class {ORD a, PrelShow.Show a}  => EQ a where {zezeze :: a -> a -> PrelBase.Bool} ;
+1 class {PrelNum.Num a}  => ORD a ;
 1 data NUM = ONE |  TWO ;
diff --git a/ghc/tests/typecheck/should_compile/tc081.stderr b/ghc/tests/typecheck/should_compile/tc081.stderr
index 4831739631d5..99f69aacb19d 100644
--- a/ghc/tests/typecheck/should_compile/tc081.stderr
+++ b/ghc/tests/typecheck/should_compile/tc081.stderr
@@ -1,5 +1,5 @@
 ghc: module version changed to 1; reason: no old .hi file
 __export ShouldSucceed f f2 f3;
-1 f :: __forall [a] => {PrelBase.Ord a} -> {PrelBase.Num a} -> a -> (a, PrelBase.Bool, [PrelBase.Bool], [PrelBase.Char]) ;
-1 f2 :: __forall [a] => {PrelBase.Ord a} -> {PrelBase.Num a} -> a -> (a, PrelBase.Bool, [PrelBase.Bool], [PrelBase.Char]) ;
-1 f3 :: __forall [a] => {PrelBase.Ord a} -> {PrelBase.Num a} -> a -> (a, PrelBase.Bool, [PrelBase.Bool], [PrelBase.Char]) ;
+1 f :: __forall [a] => {PrelBase.Ord a} -> {PrelNum.Num a} -> a -> (a, PrelBase.Bool, [PrelBase.Bool], [PrelBase.Char]) ;
+1 f2 :: __forall [a] => {PrelBase.Ord a} -> {PrelNum.Num a} -> a -> (a, PrelBase.Bool, [PrelBase.Bool], [PrelBase.Char]) ;
+1 f3 :: __forall [a] => {PrelBase.Ord a} -> {PrelNum.Num a} -> a -> (a, PrelBase.Bool, [PrelBase.Bool], [PrelBase.Char]) ;
diff --git a/ghc/tests/typecheck/should_compile/tc084.stderr b/ghc/tests/typecheck/should_compile/tc084.stderr
index 1a659a387bc4..93226ea14d02 100644
--- a/ghc/tests/typecheck/should_compile/tc084.stderr
+++ b/ghc/tests/typecheck/should_compile/tc084.stderr
@@ -1,5 +1,5 @@
 ghc: module version changed to 1; reason: no old .hi file
 __export ShouldSucceed f g h;
 1 f :: __forall [b] => PrelBase.Int -> b -> PrelBase.Int ;
-1 g :: __forall [a b] => {PrelBase.Num a} -> PrelBase.Bool -> a -> b -> a ;
+1 g :: __forall [a b] => {PrelNum.Num a} -> PrelBase.Bool -> a -> b -> a ;
 1 h :: __forall [b] => b -> PrelBase.Int -> PrelBase.Int ;
diff --git a/ghc/tests/typecheck/should_compile/tc087.stderr b/ghc/tests/typecheck/should_compile/tc087.stderr
index cc7e6a92e8b4..09f4679a5dcd 100644
--- a/ghc/tests/typecheck/should_compile/tc087.stderr
+++ b/ghc/tests/typecheck/should_compile/tc087.stderr
@@ -3,8 +3,8 @@ __export ShouldSucceed PriorityQueue{splitMin meld insert single empty} SeqView{
 1 check :: __forall [q :: (* -> *)] => {PriorityQueue q} -> (__forall [a] => {PrelBase.Ord a} -> q a) -> PrelIOBase.IO PrelBase.Z0T ;
 1 class PriorityQueue q :: (* -> *) where {splitMin :: __forall [a] => {PrelBase.Ord a} -> q a -> SeqView q a; meld :: __forall [a] => {PrelBase.Ord a} -> q a -> q a -> q a; insert = :: __forall [a] => {PrelBase.Ord a} -> a -> q a -> q a; single :: __forall [a] => {PrelBase.Ord a} -> a -> q a; empty :: __forall [a] => {PrelBase.Ord a} -> q a} ;
 1 data SeqView t :: (* -> *) a = Null |  Cons a (t a) ;
-1 insertMany :: __forall [a q :: (* -> *)] => {PrelBase.Ord a} -> {PriorityQueue q} -> [a] -> q a -> q a ;
-1 out :: __forall [a] => {PrelBase.Num a} -> [a] -> PrelIOBase.IO PrelBase.Z0T ;
+1 insertMany :: __forall [q :: (* -> *) a] => {PrelBase.Ord a} -> {PriorityQueue q} -> [a] -> q a -> q a ;
+1 out :: __forall [a] => {PrelNum.Num a} -> [a] -> PrelIOBase.IO PrelBase.Z0T ;
 1 pqSort :: __forall [a t :: (* -> *)] => {PriorityQueue t} -> {PrelBase.Ord a} -> t a -> [a] -> [a] ;
 1 toOrderedList :: __forall [t :: (* -> *) a] => {PrelBase.Ord a} -> {PriorityQueue t} -> t a -> [a] ;
 1 zddminsert :: __forall [q :: (* -> *)] => {PriorityQueue q} -> (__forall [a] => {PrelBase.Ord a} -> a -> q a -> q a) ;
diff --git a/ghc/tests/typecheck/should_compile/tc088.hs b/ghc/tests/typecheck/should_compile/tc088.hs
index 5423200d1a1e..ce4b6beab6bd 100644
--- a/ghc/tests/typecheck/should_compile/tc088.hs
+++ b/ghc/tests/typecheck/should_compile/tc088.hs
@@ -2,6 +2,8 @@
 
 module ShouldSucceed where
 
+instance Show (a->b)
+
 instance (Eq b) => Eq (a -> b) where
 	(==) f g = error "attempt to compare functions"
 
diff --git a/ghc/tests/typecheck/should_compile/tc088.stderr b/ghc/tests/typecheck/should_compile/tc088.stderr
index cfbee790fd8d..0a2be5179db3 100644
--- a/ghc/tests/typecheck/should_compile/tc088.stderr
+++ b/ghc/tests/typecheck/should_compile/tc088.stderr
@@ -1,5 +1,7 @@
 ghc: module version changed to 1; reason: no old .hi file
 instance __forall [a b] => {PrelBase.Eq b} -> {PrelBase.Eq (a -> b)} = zdfEqZLzmzgZR;
-instance __forall [a b] => {PrelBase.Num b} -> {PrelBase.Num (a -> b)} = zdfNumZLzmzgZR;
+instance __forall [a b] => {PrelNum.Num b} -> {PrelNum.Num (a -> b)} = zdfNumZLzmzgZR;
+instance __forall [a b] => {PrelShow.Show (a -> b)} = zdfShowZLzmzgZR;
 1 zdfEqZLzmzgZR :: __forall [a b] => {PrelBase.Eq b} -> {PrelBase.Eq (a -> b)} ;
-1 zdfNumZLzmzgZR :: __forall [a b] => {PrelBase.Num b} -> {PrelBase.Eq (a -> b)} -> {PrelBase.Show (a -> b)} -> {PrelBase.Num (a -> b)} ;
+1 zdfNumZLzmzgZR :: __forall [a b] => {PrelNum.Num b} -> {PrelBase.Eq (a -> b)} -> {PrelShow.Show (a -> b)} -> {PrelNum.Num (a -> b)} ;
+1 zdfShowZLzmzgZR :: __forall [a b] => {PrelShow.Show (a -> b)} ;
diff --git a/ghc/tests/typecheck/should_compile/tc093.stderr b/ghc/tests/typecheck/should_compile/tc093.stderr
index 8f5cf27a2d27..e888d1a610c5 100644
--- a/ghc/tests/typecheck/should_compile/tc093.stderr
+++ b/ghc/tests/typecheck/should_compile/tc093.stderr
@@ -2,14 +2,14 @@ ghc: module version changed to 1; reason: no old .hi file
 __export ShouldSucceed St State{State} TS{TS vs} bindState foo unState unitState;
 instance {PrelBase.Eq TS} = zdfEqTS;
 instance __forall [c] => {PrelBase.Eq c} -> {PrelBase.Monad (State c)} = zdfMonadState;
-instance {PrelBase.Show TS} = zdfShowTS;
+instance {PrelShow.Show TS} = zdfShowTS;
 1 bindState :: __forall [c a b] => State c a -> (a -> State c b) -> State c b ;
 1 data State c a = State (c -> (a, c)) ;
 1 data TS = TS {vs :: PrelBase.Int} ;
-1 foo :: PrelBase.Int -> St PrelBase.Int ;
+1 foo :: PrelBase.Int -> St  PrelBase.Int ;
 1 type St a = State TS a ;
 1 unState :: __forall [c a] => State c a -> c -> (a, c) ;
 1 unitState :: __forall [a c] => a -> State c a ;
 1 zdfEqTS :: {PrelBase.Eq TS} ;
 1 zdfMonadState :: __forall [c] => {PrelBase.Eq c} -> {PrelBase.Monad (State c)} ;
-1 zdfShowTS :: {PrelBase.Show TS} ;
+1 zdfShowTS :: {PrelShow.Show TS} ;
diff --git a/ghc/tests/typecheck/should_compile/tc095.stderr b/ghc/tests/typecheck/should_compile/tc095.stderr
index 68bcaa5e9655..db90d1a324fa 100644
--- a/ghc/tests/typecheck/should_compile/tc095.stderr
+++ b/ghc/tests/typecheck/should_compile/tc095.stderr
@@ -1,12 +1,12 @@
 NOTE: Simplifier still going after 4 iterations; bailing out.
 ghc: module version changed to 1; reason: no old .hi file
 __export ShouldSucceed HappyAbsSyn{HappyTerminal HappyErrorToken HappyAbsSyn1 HappyAbsSyn2 HappyAbsSyn3} HappyState{HappyState} Token{TokenInt TokenVar TokenEq} action_0 action_1 action_2 action_3 action_4 action_5 action_6 happyAccept happyError happyFail happyGoto happyMonadReduce happyNewToken happyParse happyReduce happyReduce_1 happyReduce_2 happyReduce_3 happyReturn happyShift happySpecReduce_0 happySpecReduce_1 happySpecReduce_2 happySpecReduce_3 happyThen main myparser notHappyAtAll;
-instance {PrelBase.Show Token} = zdfShowToken;
-1 action_0 :: __forall [t t1] => {PrelBase.Num t} -> t -> PrelBase.Int -> Token -> HappyState Token ([HappyAbsSyn (t1 -> PrelBase.Double) [(PrelBase.String, t1 -> PrelBase.Int)] (t1 -> PrelBase.Int)] -> [Token] -> t1 -> PrelBase.Double) -> [HappyState Token ([HappyAbsSyn (t1 -> PrelBase.Double) [(PrelBase.String, t1 -> PrelBase.Int)] (t1 -> PrelBase.Int)] -> [Token] -> t1 -> PrelBase.Double)] -> [HappyAbsSyn (t1 -> PrelBase.Double) [(PrelBase.String, t1 -> PrelBase.Int)] (t1 -> PrelBase.Int)] -> [Token] -> t1 -> PrelBase.Double ;
-1 action_1 :: __forall [t t1 t2 t3 b] => {PrelBase.Num t} -> t -> PrelBase.Int -> b -> HappyState b ([HappyAbsSyn t1 t2 t3] -> [Token] -> t1) -> [HappyState b ([HappyAbsSyn t1 t2 t3] -> [Token] -> t1)] -> [HappyAbsSyn t1 t2 t3] -> [Token] -> t1 ;
+instance {PrelShow.Show Token} = zdfShowToken;
+1 action_0 :: __forall [t t1] => {PrelNum.Num t} -> t -> PrelBase.Int -> Token -> HappyState Token ([HappyAbsSyn (t1 -> PrelBase.Double) [(PrelBase.String, t1 -> PrelBase.Int)] (t1 -> PrelBase.Int)] -> [Token] -> t1 -> PrelBase.Double) -> [HappyState Token ([HappyAbsSyn (t1 -> PrelBase.Double) [(PrelBase.String, t1 -> PrelBase.Int)] (t1 -> PrelBase.Int)] -> [Token] -> t1 -> PrelBase.Double)] -> [HappyAbsSyn (t1 -> PrelBase.Double) [(PrelBase.String, t1 -> PrelBase.Int)] (t1 -> PrelBase.Int)] -> [Token] -> t1 -> PrelBase.Double ;
+1 action_1 :: __forall [t t1 t2 t3 b] => {PrelNum.Num t} -> t -> PrelBase.Int -> b -> HappyState b ([HappyAbsSyn t1 t2 t3] -> [Token] -> t1) -> [HappyState b ([HappyAbsSyn t1 t2 t3] -> [Token] -> t1)] -> [HappyAbsSyn t1 t2 t3] -> [Token] -> t1 ;
 1 action_2 :: __forall [t t1 b t2 t3 t4 t5 t31] => t -> PrelBase.Int -> b -> t2 -> [HappyState b ([HappyAbsSyn (t3 -> PrelBase.Double) [(t4, t3 -> t5)] t31] -> t1)] -> [HappyAbsSyn (t3 -> PrelBase.Double) [(t4, t3 -> t5)] t31] -> t1 ;
-1 action_3 :: __forall [t t1 t11 a] => {PrelBase.Num t} -> t -> PrelBase.Int -> Token -> HappyState Token ([HappyAbsSyn t1 [(PrelBase.String, t11 -> PrelBase.Int)] (t11 -> PrelBase.Int)] -> [Token] -> a) -> [HappyState Token ([HappyAbsSyn t1 [(PrelBase.String, t11 -> PrelBase.Int)] (t11 -> PrelBase.Int)] -> [Token] -> a)] -> [HappyAbsSyn t1 [(PrelBase.String, t11 -> PrelBase.Int)] (t11 -> PrelBase.Int)] -> [Token] -> a ;
-1 action_4 :: __forall [t t1 t11 a] => {PrelBase.Num t} -> t -> PrelBase.Int -> Token -> HappyState Token ([HappyAbsSyn t1 [(PrelBase.String, t11 -> PrelBase.Int)] (t11 -> PrelBase.Int)] -> [Token] -> a) -> [HappyState Token ([HappyAbsSyn t1 [(PrelBase.String, t11 -> PrelBase.Int)] (t11 -> PrelBase.Int)] -> [Token] -> a)] -> [HappyAbsSyn t1 [(PrelBase.String, t11 -> PrelBase.Int)] (t11 -> PrelBase.Int)] -> [Token] -> a ;
+1 action_3 :: __forall [t t1 t11 a] => {PrelNum.Num t} -> t -> PrelBase.Int -> Token -> HappyState Token ([HappyAbsSyn t1 [(PrelBase.String, t11 -> PrelBase.Int)] (t11 -> PrelBase.Int)] -> [Token] -> a) -> [HappyState Token ([HappyAbsSyn t1 [(PrelBase.String, t11 -> PrelBase.Int)] (t11 -> PrelBase.Int)] -> [Token] -> a)] -> [HappyAbsSyn t1 [(PrelBase.String, t11 -> PrelBase.Int)] (t11 -> PrelBase.Int)] -> [Token] -> a ;
+1 action_4 :: __forall [t t1 t11 a] => {PrelNum.Num t} -> t -> PrelBase.Int -> Token -> HappyState Token ([HappyAbsSyn t1 [(PrelBase.String, t11 -> PrelBase.Int)] (t11 -> PrelBase.Int)] -> [Token] -> a) -> [HappyState Token ([HappyAbsSyn t1 [(PrelBase.String, t11 -> PrelBase.Int)] (t11 -> PrelBase.Int)] -> [Token] -> a)] -> [HappyAbsSyn t1 [(PrelBase.String, t11 -> PrelBase.Int)] (t11 -> PrelBase.Int)] -> [Token] -> a ;
 1 action_5 :: __forall [t t1 b t2 t11 t3] => t -> PrelBase.Int -> b -> t2 -> [HappyState b ([HappyAbsSyn t11 [(PrelBase.String, t3)] t3] -> t1)] -> [HappyAbsSyn t11 [(PrelBase.String, t3)] t3] -> t1 ;
 1 action_6 :: __forall [t t1 b t2 t11 t21 t3] => t -> PrelBase.Int -> b -> t2 -> [HappyState b ([HappyAbsSyn t11 t21 (t3 -> PrelBase.Int)] -> t1)] -> [HappyAbsSyn t11 t21 (t3 -> PrelBase.Int)] -> t1 ;
 1 data HappyAbsSyn t1 t2 t3 = HappyTerminal Token |  HappyErrorToken PrelBase.Int |  HappyAbsSyn1 t1 |  HappyAbsSyn2 t2 |  HappyAbsSyn3 t3 ;
@@ -24,7 +24,7 @@ instance {PrelBase.Show Token} = zdfShowToken;
 1 happyReduce_2 :: __forall [t b t1 t11 t3] => PrelBase.Int -> b -> t1 -> [HappyState b ([HappyAbsSyn t11 [(PrelBase.String, t3)] t3] -> t)] -> [HappyAbsSyn t11 [(PrelBase.String, t3)] t3] -> t ;
 1 happyReduce_3 :: __forall [t b t1 t11 t2 t21] => PrelBase.Int -> b -> t1 -> [HappyState b ([HappyAbsSyn t11 t2 (t21 -> PrelBase.Int)] -> t)] -> [HappyAbsSyn t11 t2 (t21 -> PrelBase.Int)] -> t ;
 1 happyReturn :: __forall [t t1] => t -> t1 -> t ;
-1 happyShift :: __forall [t t1 t2 t3 t11] => {PrelBase.Num t} -> (PrelBase.Int -> PrelBase.Int -> Token -> HappyState Token ([HappyAbsSyn t1 t2 t3] -> [Token] -> t11) -> [HappyState Token ([HappyAbsSyn t1 t2 t3] -> [Token] -> t11)] -> [HappyAbsSyn t1 t2 t3] -> [Token] -> t11) -> t -> Token -> HappyState Token ([HappyAbsSyn t1 t2 t3] -> [Token] -> t11) -> [HappyState Token ([HappyAbsSyn t1 t2 t3] -> [Token] -> t11)] -> [HappyAbsSyn t1 t2 t3] -> [Token] -> t11 ;
+1 happyShift :: __forall [t t1 t2 t3 t11] => {PrelNum.Num t} -> (PrelBase.Int -> PrelBase.Int -> Token -> HappyState Token ([HappyAbsSyn t1 t2 t3] -> [Token] -> t11) -> [HappyState Token ([HappyAbsSyn t1 t2 t3] -> [Token] -> t11)] -> [HappyAbsSyn t1 t2 t3] -> [Token] -> t11) -> t -> Token -> HappyState Token ([HappyAbsSyn t1 t2 t3] -> [Token] -> t11) -> [HappyState Token ([HappyAbsSyn t1 t2 t3] -> [Token] -> t11)] -> [HappyAbsSyn t1 t2 t3] -> [Token] -> t11 ;
 1 happySpecReduce_0 :: __forall [t a b] => PrelBase.Int -> t -> PrelBase.Int -> b -> HappyState b ([t] -> [Token] -> a) -> [HappyState b ([t] -> [Token] -> a)] -> [t] -> [Token] -> a ;
 1 happySpecReduce_1 :: __forall [t b t1 t2] => PrelBase.Int -> (t1 -> t1) -> PrelBase.Int -> b -> t -> [HappyState b ([t1] -> t2)] -> [t1] -> t2 ;
 1 happySpecReduce_2 :: __forall [t b t1 t2] => PrelBase.Int -> (t1 -> t1 -> t1) -> PrelBase.Int -> b -> t -> [HappyState b ([t1] -> t2)] -> [t1] -> t2 ;
@@ -33,4 +33,4 @@ instance {PrelBase.Show Token} = zdfShowToken;
 1 main :: PrelIOBase.IO PrelBase.Z0T ;
 1 myparser :: __forall [t] => [Token] -> t -> PrelBase.Double ;
 1 notHappyAtAll :: __forall [t] => t ;
-1 zdfShowToken :: {PrelBase.Show Token} ;
+1 zdfShowToken :: {PrelShow.Show Token} ;
diff --git a/ghc/tests/typecheck/should_compile/tc098.stderr b/ghc/tests/typecheck/should_compile/tc098.stderr
index 5859c9abb973..2633b8075295 100644
--- a/ghc/tests/typecheck/should_compile/tc098.stderr
+++ b/ghc/tests/typecheck/should_compile/tc098.stderr
@@ -1,6 +1,6 @@
 ghc: module version changed to 1; reason: no old .hi file
 __export ShouldSucceed Cp cpPairs m mp;
-1 cpPairs :: __forall [j a] => Cp [j] -> (a, [j]) -> (a, [j]) -> PrelBase.Ordering ;
-1 m :: __forall [a] => {PrelBase.Eq a} -> Cp a -> [a] -> a ;
-1 mp :: __forall [j i] => {PrelBase.Eq i} -> {PrelBase.Eq j} -> Cp [j] -> [(i, [j])] -> (i, [j]) ;
+1 cpPairs :: __forall [j a] => Cp  [j] -> (a, [j]) -> (a, [j]) -> PrelBase.Ordering ;
+1 m :: __forall [a] => {PrelBase.Eq a} -> Cp  a -> [a] -> a ;
+1 mp :: __forall [j i] => {PrelBase.Eq i} -> {PrelBase.Eq j} -> Cp  [j] -> [(i, [j])] -> (i, [j]) ;
 1 type Cp a = a -> a -> PrelBase.Ordering ;
diff --git a/ghc/tests/typecheck/should_compile/tc100.stderr b/ghc/tests/typecheck/should_compile/tc100.stderr
index 38fcf810871e..46f80b1844b3 100644
--- a/ghc/tests/typecheck/should_compile/tc100.stderr
+++ b/ghc/tests/typecheck/should_compile/tc100.stderr
@@ -1,5 +1,5 @@
 ghc: module version changed to 1; reason: no old .hi file
 __export ShouldCompile C D{DD} D_;
-1 newtype D a = DD (D_ a) ;
-1 type C a = D a -> a ;
-1 type D_ a = C (PrelMaybe.Maybe a) ;
+1 newtype D a = DD (D_  a) ;
+1 type C a = D   a -> a ;
+1 type D_ a = C   (PrelMaybe.Maybe a) ;
diff --git a/ghc/tests/typecheck/should_fail/Digraph.stderr b/ghc/tests/typecheck/should_fail/Digraph.stderr
index 4c217aeec726..e9b777447c3c 100644
--- a/ghc/tests/typecheck/should_fail/Digraph.stderr
+++ b/ghc/tests/typecheck/should_fail/Digraph.stderr
@@ -2,12 +2,12 @@
 Digraph.hs:19:
     Inferred type is less polymorphic than expected
 	Quantified type variable `v' escapes
-	It unifies with `vertex', which is mentioned in the environment
-	The following variables in the environment mention `vertex'
-	    es :: [Edge vertex]
-	    vs :: [vertex]
+	It is mentioned in the environment
+	The following variables in the environment mention `v'
+	    es :: [Edge v]
+	    vs :: [v]
     When checking the type signature
-	reversed_edges :: forall v1. {Eq v1} => [Edge v1]
+	reversed_edges :: forall v1. (Eq v1) => [Edge v1]
     In an equation for function `stronglyConnComp':
 	stronglyConnComp es vs
 			   = snd (span_tree (new_range reversed_edges)
@@ -30,7 +30,5 @@ Digraph.hs:19:
 			       reversed_edges :: forall v. (Eq v) => [Edge v]
 			       reversed_edges = map swap es
 
-
-
 Compilation had errors
 
diff --git a/ghc/tests/typecheck/should_fail/tcfail001.stderr b/ghc/tests/typecheck/should_fail/tcfail001.stderr
index 376d3a0d06a2..46a704bf3b0f 100644
--- a/ghc/tests/typecheck/should_fail/tcfail001.stderr
+++ b/ghc/tests/typecheck/should_fail/tcfail001.stderr
@@ -3,8 +3,6 @@ tcfail001.hs:9:
     Warning: Duplicate class assertion `A a' in the context:
 		 (A a, A a) => ...
 
-
-
 tcfail001.hs:9:
     Couldn't match `[a]' against `t -> t1'
 	Expected type: [a]
@@ -12,7 +10,5 @@ tcfail001.hs:9:
     In an equation for function `op': op [] = []
     In the definition for method `op'
 
-
-
 Compilation had errors
 
diff --git a/ghc/tests/typecheck/should_fail/tcfail002.stderr b/ghc/tests/typecheck/should_fail/tcfail002.stderr
index 410a1ad05c11..9dc37d144333 100644
--- a/ghc/tests/typecheck/should_fail/tcfail002.stderr
+++ b/ghc/tests/typecheck/should_fail/tcfail002.stderr
@@ -5,7 +5,5 @@ tcfail002.hs:4:
 	Inferred type: [t]
     In the right-hand side of an equation for `c': z
 
-
-
 Compilation had errors
 
diff --git a/ghc/tests/typecheck/should_fail/tcfail003.stderr b/ghc/tests/typecheck/should_fail/tcfail003.stderr
index 7650b3b6c73c..811e2754c2bd 100644
--- a/ghc/tests/typecheck/should_fail/tcfail003.stderr
+++ b/ghc/tests/typecheck/should_fail/tcfail003.stderr
@@ -3,7 +3,5 @@ tcfail003.hs:3:
     No instance for `Num Char'
 	arising from the literal `1' at tcfail003.hs:3
 
-
-
 Compilation had errors
 
diff --git a/ghc/tests/typecheck/should_fail/tcfail004.stderr b/ghc/tests/typecheck/should_fail/tcfail004.stderr
index 66feb4284291..459b08c0b049 100644
--- a/ghc/tests/typecheck/should_fail/tcfail004.stderr
+++ b/ghc/tests/typecheck/should_fail/tcfail004.stderr
@@ -5,7 +5,5 @@ tcfail004.hs:3:
 	Inferred type: (t2, t3, t4)
     In the right-hand side of a pattern binding: (1, 2, 3)
 
-
-
 Compilation had errors
 
diff --git a/ghc/tests/typecheck/should_fail/tcfail005.stderr b/ghc/tests/typecheck/should_fail/tcfail005.stderr
index 7ed8275d6665..258e41d79156 100644
--- a/ghc/tests/typecheck/should_fail/tcfail005.stderr
+++ b/ghc/tests/typecheck/should_fail/tcfail005.stderr
@@ -5,7 +5,5 @@ tcfail005.hs:3:
 	Inferred type: (t1, t2)
     In the right-hand side of a pattern binding: (1, 'a')
 
-
-
 Compilation had errors
 
diff --git a/ghc/tests/typecheck/should_fail/tcfail006.stderr b/ghc/tests/typecheck/should_fail/tcfail006.stderr
index 9815c5a610ab..71f71558ece3 100644
--- a/ghc/tests/typecheck/should_fail/tcfail006.stderr
+++ b/ghc/tests/typecheck/should_fail/tcfail006.stderr
@@ -3,7 +3,5 @@ tcfail006.hs:4:
     No instance for `Num Bool'
 	arising from the literal `1' at tcfail006.hs:4
 
-
-
 Compilation had errors
 
diff --git a/ghc/tests/typecheck/should_fail/tcfail007.stderr b/ghc/tests/typecheck/should_fail/tcfail007.stderr
index b823d9abd84a..0dd23484c4ac 100644
--- a/ghc/tests/typecheck/should_fail/tcfail007.stderr
+++ b/ghc/tests/typecheck/should_fail/tcfail007.stderr
@@ -3,7 +3,5 @@ tcfail007.hs:3:
     No instance for `Num Bool'
 	arising from use of `+' at tcfail007.hs:3
 
-
-
 Compilation had errors
 
diff --git a/ghc/tests/typecheck/should_fail/tcfail008.stderr b/ghc/tests/typecheck/should_fail/tcfail008.stderr
index 9b2dee0f72a5..974fa4af4ce8 100644
--- a/ghc/tests/typecheck/should_fail/tcfail008.stderr
+++ b/ghc/tests/typecheck/should_fail/tcfail008.stderr
@@ -9,7 +9,5 @@ tcfail008.hs:3:
 	in the constraint `Num t'
 	arising from the literal `1' at tcfail008.hs:3
 
-
-
 Compilation had errors
 
diff --git a/ghc/tests/typecheck/should_fail/tcfail009.stderr b/ghc/tests/typecheck/should_fail/tcfail009.stderr
index dd3c85e21adb..a91cbbbd720c 100644
--- a/ghc/tests/typecheck/should_fail/tcfail009.stderr
+++ b/ghc/tests/typecheck/should_fail/tcfail009.stderr
@@ -5,7 +5,5 @@ tcfail009.hs:3:
 	Inferred type: Int
     In an expression with a type signature: 2 :: Integer
 
-
-
 Compilation had errors
 
diff --git a/ghc/tests/typecheck/should_fail/tcfail010.stderr b/ghc/tests/typecheck/should_fail/tcfail010.stderr
index affb03e0a29f..25fb03f8e930 100644
--- a/ghc/tests/typecheck/should_fail/tcfail010.stderr
+++ b/ghc/tests/typecheck/should_fail/tcfail010.stderr
@@ -4,7 +4,5 @@ tcfail010.hs:3:
 	in the constraint `Num [t]'
 	arising from use of `+' at tcfail010.hs:3
 
-
-
 Compilation had errors
 
diff --git a/ghc/tests/typecheck/should_fail/tcfail011.stderr b/ghc/tests/typecheck/should_fail/tcfail011.stderr
index d86d2c973f4a..348dcb2fc2c7 100644
--- a/ghc/tests/typecheck/should_fail/tcfail011.stderr
+++ b/ghc/tests/typecheck/should_fail/tcfail011.stderr
@@ -1,7 +1,5 @@
 
 tcfail011.hs:3: Variable not in scope: `y'
 
-
-
 Compilation had errors
 
diff --git a/ghc/tests/typecheck/should_fail/tcfail012.stderr b/ghc/tests/typecheck/should_fail/tcfail012.stderr
index 1bd5c89c6ec8..ea50af117fcd 100644
--- a/ghc/tests/typecheck/should_fail/tcfail012.stderr
+++ b/ghc/tests/typecheck/should_fail/tcfail012.stderr
@@ -5,7 +5,5 @@ tcfail012.hs:3:
 	Inferred type: [t]
     In the right-hand side of a pattern binding: []
 
-
-
 Compilation had errors
 
diff --git a/ghc/tests/typecheck/should_fail/tcfail013.stderr b/ghc/tests/typecheck/should_fail/tcfail013.stderr
index 429fefc62416..cc9201504936 100644
--- a/ghc/tests/typecheck/should_fail/tcfail013.stderr
+++ b/ghc/tests/typecheck/should_fail/tcfail013.stderr
@@ -6,7 +6,5 @@ tcfail013.hs:4:
     In the pattern: True
     In an equation for function `f': f True = 2
 
-
-
 Compilation had errors
 
diff --git a/ghc/tests/typecheck/should_fail/tcfail014.stderr b/ghc/tests/typecheck/should_fail/tcfail014.stderr
index 5812e986aba5..08b902e5e606 100644
--- a/ghc/tests/typecheck/should_fail/tcfail014.stderr
+++ b/ghc/tests/typecheck/should_fail/tcfail014.stderr
@@ -6,7 +6,5 @@ tcfail014.hs:5:
     In the first argument of `z', namely `z'
     In the right-hand side of an equation for `h': z z
 
-
-
 Compilation had errors
 
diff --git a/ghc/tests/typecheck/should_fail/tcfail015.stderr b/ghc/tests/typecheck/should_fail/tcfail015.stderr
index ab90aa6348ad..c088740d41d7 100644
--- a/ghc/tests/typecheck/should_fail/tcfail015.stderr
+++ b/ghc/tests/typecheck/should_fail/tcfail015.stderr
@@ -3,7 +3,5 @@ tcfail015.hs:7:
     No instance for `Num Bool'
 	arising from the literal `2' at tcfail015.hs:7
 
-
-
 Compilation had errors
 
diff --git a/ghc/tests/typecheck/should_fail/tcfail016.stderr b/ghc/tests/typecheck/should_fail/tcfail016.stderr
index af0d5f2847d9..799b9ed0673b 100644
--- a/ghc/tests/typecheck/should_fail/tcfail016.stderr
+++ b/ghc/tests/typecheck/should_fail/tcfail016.stderr
@@ -6,7 +6,5 @@ tcfail016.hs:9:
     In the first argument of `g', namely `e1'
     In the first argument of `++', namely `(g e1)'
 
-
-
 Compilation had errors
 
diff --git a/ghc/tests/typecheck/should_fail/tcfail017.stderr b/ghc/tests/typecheck/should_fail/tcfail017.stderr
index 3ebb93c2b0a5..7ab93fd684e1 100644
--- a/ghc/tests/typecheck/should_fail/tcfail017.stderr
+++ b/ghc/tests/typecheck/should_fail/tcfail017.stderr
@@ -7,7 +7,5 @@ tcfail017.hs:11:
 		    or missing instance declaration for `C [a]'
     When checking the superclasses of an instance declaration
 
-
-
 Compilation had errors
 
diff --git a/ghc/tests/typecheck/should_fail/tcfail018.stderr b/ghc/tests/typecheck/should_fail/tcfail018.stderr
index 565d1e97e9a7..6dcb28ed28a9 100644
--- a/ghc/tests/typecheck/should_fail/tcfail018.stderr
+++ b/ghc/tests/typecheck/should_fail/tcfail018.stderr
@@ -4,7 +4,5 @@ tcfail018.hs:5:
 	in the constraint `Num [t]'
 	arising from the literal `1' at tcfail018.hs:5
 
-
-
 Compilation had errors
 
diff --git a/ghc/tests/typecheck/should_fail/tcfail019.stderr b/ghc/tests/typecheck/should_fail/tcfail019.stderr
index 9eda575a6935..00a227f2e12e 100644
--- a/ghc/tests/typecheck/should_fail/tcfail019.stderr
+++ b/ghc/tests/typecheck/should_fail/tcfail019.stderr
@@ -15,7 +15,5 @@ tcfail019.hs:19:
 		    or missing instance declaration for `B [a]'
     When checking the superclasses of an instance declaration
 
-
-
 Compilation had errors
 
diff --git a/ghc/tests/typecheck/should_fail/tcfail020.stderr b/ghc/tests/typecheck/should_fail/tcfail020.stderr
index 78405f701ab1..c0097501a890 100644
--- a/ghc/tests/typecheck/should_fail/tcfail020.stderr
+++ b/ghc/tests/typecheck/should_fail/tcfail020.stderr
@@ -7,7 +7,5 @@ tcfail020.hs:11:
 		    or missing instance declaration for `A [a]'
     When checking the superclasses of an instance declaration
 
-
-
 Compilation had errors
 
diff --git a/ghc/tests/typecheck/should_fail/tcfail021.stderr b/ghc/tests/typecheck/should_fail/tcfail021.stderr
index 0d6371ccb1e7..ffe454472bd8 100644
--- a/ghc/tests/typecheck/should_fail/tcfail021.stderr
+++ b/ghc/tests/typecheck/should_fail/tcfail021.stderr
@@ -3,7 +3,5 @@ tcfail021.hs:8:
     Can't handle multiple methods defined by one pattern binding
 	(==, /=) = (\ x -> \ y -> ..., \ x -> \ y -> ...)
 
-
-
 Compilation had errors
 
diff --git a/ghc/tests/typecheck/should_fail/tcfail023.stderr b/ghc/tests/typecheck/should_fail/tcfail023.stderr
index 47f1cba48fb0..3e1dc4767199 100644
--- a/ghc/tests/typecheck/should_fail/tcfail023.stderr
+++ b/ghc/tests/typecheck/should_fail/tcfail023.stderr
@@ -15,7 +15,5 @@ tcfail023.hs:14:
 	Inferred type: Bool
     In the right-hand side of an equation for `op': True
 
-
-
 Compilation had errors
 
diff --git a/ghc/tests/typecheck/should_fail/tcfail027.hs b/ghc/tests/typecheck/should_fail/tcfail027.hs
index b847c06ce6de..e01f6961bd3c 100644
--- a/ghc/tests/typecheck/should_fail/tcfail027.hs
+++ b/ghc/tests/typecheck/should_fail/tcfail027.hs
@@ -1,4 +1,5 @@
 -- !!! tests for CycleErr in classes
+module TcFail where
 
 class (B a) => A a where
  op1 :: a -> a
diff --git a/ghc/tests/typecheck/should_fail/tcfail027.stderr b/ghc/tests/typecheck/should_fail/tcfail027.stderr
index 806100ba36b4..cc1e5b16fb96 100644
--- a/ghc/tests/typecheck/should_fail/tcfail027.stderr
+++ b/ghc/tests/typecheck/should_fail/tcfail027.stderr
@@ -1,10 +1,8 @@
 
-tcfail027.hs:3:
+tcfail027.hs:2:
     Cycle in class declarations:
-	`B' at tcfail027.hs:7
-	`A' at tcfail027.hs:4
-
-
+	`B' at tcfail027.hs:8
+	`A' at tcfail027.hs:5
 
 Compilation had errors
 
diff --git a/ghc/tests/typecheck/should_fail/tcfail028.hs b/ghc/tests/typecheck/should_fail/tcfail028.hs
index 3fb22ffb7c95..5f9b32c07f0d 100644
--- a/ghc/tests/typecheck/should_fail/tcfail028.hs
+++ b/ghc/tests/typecheck/should_fail/tcfail028.hs
@@ -1,3 +1,4 @@
 -- !!! tests for ArityErr
+module TcFail where
 
 data A a b = B (A a)
diff --git a/ghc/tests/typecheck/should_fail/tcfail028.stderr b/ghc/tests/typecheck/should_fail/tcfail028.stderr
index dbede23e2f8b..639349533c73 100644
--- a/ghc/tests/typecheck/should_fail/tcfail028.stderr
+++ b/ghc/tests/typecheck/should_fail/tcfail028.stderr
@@ -1,12 +1,10 @@
 
-tcfail028.hs:4:
+tcfail028.hs:5:
     Couldn't match `Type t' against `k -> *'
 	Expected kind: Type t
 	Inferred kind: k -> *
     When checking that `A a' is a type
     In the newtype declaration for `A'
 
-
-
 Compilation had errors
 
diff --git a/ghc/tests/typecheck/should_fail/tcfail029.stderr b/ghc/tests/typecheck/should_fail/tcfail029.stderr
index 3c2874d502cf..7e83c6d73240 100644
--- a/ghc/tests/typecheck/should_fail/tcfail029.stderr
+++ b/ghc/tests/typecheck/should_fail/tcfail029.stderr
@@ -2,7 +2,5 @@
 tcfail029.hs:6:
     No instance for `Ord Foo' arising from use of `>' at tcfail029.hs:6
 
-
-
 Compilation had errors
 
diff --git a/ghc/tests/typecheck/should_fail/tcfail030.hs b/ghc/tests/typecheck/should_fail/tcfail030.hs
index 87f21b26e61c..163c7275186a 100644
--- a/ghc/tests/typecheck/should_fail/tcfail030.hs
+++ b/ghc/tests/typecheck/should_fail/tcfail030.hs
@@ -1 +1,2 @@
 -- !!! empty file
+
diff --git a/ghc/tests/typecheck/should_fail/tcfail030.stderr b/ghc/tests/typecheck/should_fail/tcfail030.stderr
index 88a651b8e228..f49ad59747a5 100644
--- a/ghc/tests/typecheck/should_fail/tcfail030.stderr
+++ b/ghc/tests/typecheck/should_fail/tcfail030.stderr
@@ -1,7 +1,5 @@
 
-tcfail030.hs:0: Module `Main' must include a definition for `main'
-
-
+tcfail030.hs:0: Variable not in scope: `Main.main'
 
 Compilation had errors
 
diff --git a/ghc/tests/typecheck/should_fail/tcfail031.stderr b/ghc/tests/typecheck/should_fail/tcfail031.stderr
index a8d9781dbc3b..c1795e5ac16f 100644
--- a/ghc/tests/typecheck/should_fail/tcfail031.stderr
+++ b/ghc/tests/typecheck/should_fail/tcfail031.stderr
@@ -6,7 +6,5 @@ tcfail031.hs:3:
     In the predicate expression: 'a'
     In the right-hand side of an equation for `f': if 'a' then 1 else 2
 
-
-
 Compilation had errors
 
diff --git a/ghc/tests/typecheck/should_fail/tcfail032.stderr b/ghc/tests/typecheck/should_fail/tcfail032.stderr
index d8287931ca82..0586efe42438 100644
--- a/ghc/tests/typecheck/should_fail/tcfail032.stderr
+++ b/ghc/tests/typecheck/should_fail/tcfail032.stderr
@@ -5,13 +5,10 @@ tcfail032.hs:14:
 	It is mentioned in the environment
 	The following variables in the environment mention `a'
 	    x :: a -> Int
-    In an expression with expected type: forall a1.
-					 {Eq a1} =>
-					 a1 -> Int
+    In an expression with expected type:
+	forall a1. (Eq a1) => a1 -> Int
     In an expression with a type signature:
 	  x :: forall a. (Eq a) => a -> Int
 
-
-
 Compilation had errors
 
diff --git a/ghc/tests/typecheck/should_fail/tcfail033.stderr b/ghc/tests/typecheck/should_fail/tcfail033.stderr
index 3bc5fa549e43..e4ed3e61b5aa 100644
--- a/ghc/tests/typecheck/should_fail/tcfail033.stderr
+++ b/ghc/tests/typecheck/should_fail/tcfail033.stderr
@@ -5,7 +5,5 @@ tcfail033.hs:4:
 	Inferred type: t
     In a list-comprehension qualifier: return x
 
-
-
 Compilation had errors
 
diff --git a/ghc/tests/typecheck/should_fail/tcfail034.stderr b/ghc/tests/typecheck/should_fail/tcfail034.stderr
index 42ed8bfae608..891502162174 100644
--- a/ghc/tests/typecheck/should_fail/tcfail034.stderr
+++ b/ghc/tests/typecheck/should_fail/tcfail034.stderr
@@ -6,7 +6,5 @@ tcfail034.hs:17:
     Probable cause: missing `Integral a' in type signature for `test'
     When checking the type signature(s) for `test'
 
-
-
 Compilation had errors
 
diff --git a/ghc/tests/typecheck/should_fail/tcfail035.stderr b/ghc/tests/typecheck/should_fail/tcfail035.stderr
index ed219a596bb1..0e090bdc23df 100644
--- a/ghc/tests/typecheck/should_fail/tcfail035.stderr
+++ b/ghc/tests/typecheck/should_fail/tcfail035.stderr
@@ -39,13 +39,9 @@ tcfail035.hs:7:
     Warning: No explicit method nor default method for `+'
 	     in an instance declaration for `Num'
 
-
-
 tcfail035.hs:3:
     Duplicate or overlapping instance declarations
 	for `Num NUM' at tcfail035.hs:6 and tcfail035.hs:7
 
-
-
 Compilation had errors
 
diff --git a/ghc/tests/typecheck/should_fail/tcfail036.stderr b/ghc/tests/typecheck/should_fail/tcfail036.stderr
index 441b9ff6659f..91b23df6fbb1 100644
--- a/ghc/tests/typecheck/should_fail/tcfail036.stderr
+++ b/ghc/tests/typecheck/should_fail/tcfail036.stderr
@@ -35,8 +35,6 @@ tcfail036.hs:8:
     Warning: No explicit method nor default method for `+'
 	     in an instance declaration for `Num'
 
-
-
 tcfail036.hs:3:
     Duplicate or overlapping instance declarations
 	for `Num NUM' at tcfail036.hs:7 and tcfail036.hs:8
@@ -53,7 +51,5 @@ tcfail036.hs:9:
     Class used as a type constructor: Num
     When checking kinds in `Eq Num'
 
-
-
 Compilation had errors
 
diff --git a/ghc/tests/typecheck/should_fail/tcfail037.stderr b/ghc/tests/typecheck/should_fail/tcfail037.stderr
index ab51ba6f74f1..d130a2e79d25 100644
--- a/ghc/tests/typecheck/should_fail/tcfail037.stderr
+++ b/ghc/tests/typecheck/should_fail/tcfail037.stderr
@@ -4,7 +4,5 @@ tcfail037.hs:7:
     It could refer to either `+', defined at tcfail037.hs:10
 		          or `Prelude.+', imported from Prelude at tcfail037.hs:3
 
-
-
 Compilation had errors
 
diff --git a/ghc/tests/typecheck/should_fail/tcfail038.stderr b/ghc/tests/typecheck/should_fail/tcfail038.stderr
index d1ca6fd54623..b31ade5dcab4 100644
--- a/ghc/tests/typecheck/should_fail/tcfail038.stderr
+++ b/ghc/tests/typecheck/should_fail/tcfail038.stderr
@@ -7,7 +7,5 @@ tcfail038.hs:8:
     Conflicting definitions for `/='
     in the bindings in an instance declaration
 
-
-
 Compilation had errors
 
diff --git a/ghc/tests/typecheck/should_fail/tcfail039.stderr b/ghc/tests/typecheck/should_fail/tcfail039.stderr
index 35e23def64a1..97514c693255 100644
--- a/ghc/tests/typecheck/should_fail/tcfail039.stderr
+++ b/ghc/tests/typecheck/should_fail/tcfail039.stderr
@@ -4,7 +4,5 @@ tcfail039.hs:11:
     It could refer to either `==', defined at tcfail039.hs:7
 		          or `Prelude.==', imported from Prelude at tcfail039.hs:3
 
-
-
 Compilation had errors
 
diff --git a/ghc/tests/typecheck/should_fail/tcfail040.stderr b/ghc/tests/typecheck/should_fail/tcfail040.stderr
index dfcdd4c693b8..eb774c9a9923 100644
--- a/ghc/tests/typecheck/should_fail/tcfail040.stderr
+++ b/ghc/tests/typecheck/should_fail/tcfail040.stderr
@@ -4,7 +4,5 @@ tcfail040.hs:19:
 	in the constraint `ORD a'
 	arising from use of `<<' at tcfail040.hs:19
 
-
-
 Compilation had errors
 
diff --git a/ghc/tests/typecheck/should_fail/tcfail042.stderr b/ghc/tests/typecheck/should_fail/tcfail042.stderr
index 7e746ccc3662..da5c6b1e6bb1 100644
--- a/ghc/tests/typecheck/should_fail/tcfail042.stderr
+++ b/ghc/tests/typecheck/should_fail/tcfail042.stderr
@@ -6,7 +6,5 @@ tcfail042.hs:18:
     Probable cause: missing `Num a' in instance declaration context
     When checking the superclasses of an instance declaration
 
-
-
 Compilation had errors
 
diff --git a/ghc/tests/typecheck/should_fail/tcfail043.hs b/ghc/tests/typecheck/should_fail/tcfail043.hs
index cc1983be5bad..184a4e23bf32 100644
--- a/ghc/tests/typecheck/should_fail/tcfail043.hs
+++ b/ghc/tests/typecheck/should_fail/tcfail043.hs
@@ -12,6 +12,7 @@
 --     class "Eq_", type "a" (at a use of an overloaded identifier: eq)
 
 
+module TcFail where
 
 class Eq_ a where
  eq :: a -> a -> Bool
@@ -25,7 +26,7 @@ instance (Eq_ a) => Eq_ [a] where
         then (null ys)
         else if (null ys) 
                 then False
-                else and (eq (hd xs) (hd ys)) (eq (tl xs) (tl ys))
+                else (&&) (eq (hd xs) (hd ys)) (eq (tl xs) (tl ys))
 
 class (Eq_ a) => Ord_ a where
  gt :: a -> a -> Bool
@@ -38,8 +39,6 @@ search
                 then False 
                 else if eq a (hd bs) then True else search a (tl bs)
 
-and :: Bool -> Bool -> Bool
-and True True = True
 
 hd :: [a] -> a
 hd (a:as) = a
@@ -53,8 +52,6 @@ ordIntGt 2 3 = True
 eqIntEq :: Int -> Int -> Bool
 eqIntEq  2 3 = True
 
-null :: [a] -> Bool
-null [] = True
 
 
 
diff --git a/ghc/tests/typecheck/should_fail/tcfail043.stderr b/ghc/tests/typecheck/should_fail/tcfail043.stderr
index ac63226a6a8f..1c5404785382 100644
--- a/ghc/tests/typecheck/should_fail/tcfail043.stderr
+++ b/ghc/tests/typecheck/should_fail/tcfail043.stderr
@@ -1,35 +1,8 @@
 
-tcfail043.hs:24:
-    Ambiguous occurrence `null'
-    It could refer to either `null', defined at tcfail043.hs:57
-		          or `Prelude.null', imported from Prelude at tcfail043.hs:16
-
-tcfail043.hs:24:
-    Ambiguous occurrence `null'
-    It could refer to either `null', defined at tcfail043.hs:57
-		          or `Prelude.null', imported from Prelude at tcfail043.hs:16
-
-tcfail043.hs:26:
-    Ambiguous occurrence `null'
-    It could refer to either `null', defined at tcfail043.hs:57
-		          or `Prelude.null', imported from Prelude at tcfail043.hs:16
-
-tcfail043.hs:26:
-    Ambiguous occurrence `and'
-    It could refer to either `and', defined at tcfail043.hs:42
-		          or `Prelude.and', imported from Prelude at tcfail043.hs:16
-
-tcfail043.hs:41:
-    Ambiguous occurrence `and'
-    It could refer to either `and', defined at tcfail043.hs:42
-		          or `Prelude.and', imported from Prelude at tcfail043.hs:16
-
-tcfail043.hs:56:
-    Ambiguous occurrence `null'
-    It could refer to either `null', defined at tcfail043.hs:57
-		          or `Prelude.null', imported from Prelude at tcfail043.hs:16
-
-
+tcfail043.hs:38:
+    Ambiguous type variable(s) `a'
+	in the constraint `Ord_ a'
+	arising from use of `gt' at tcfail043.hs:38
 
 Compilation had errors
 
diff --git a/ghc/tests/typecheck/should_fail/tcfail044.hs b/ghc/tests/typecheck/should_fail/tcfail044.hs
index a013dd4f5a8a..b271d0f9770f 100644
--- a/ghc/tests/typecheck/should_fail/tcfail044.hs
+++ b/ghc/tests/typecheck/should_fail/tcfail044.hs
@@ -3,7 +3,7 @@
 module ShouldFail where
 
 instance (Eq a) => Eq (a->a)
- 
+instance Show (a->b)
 
 instance (Num a) => Num (a->a) where
     f + g    = \x -> f x + g x
diff --git a/ghc/tests/typecheck/should_fail/tcfail044.stderr b/ghc/tests/typecheck/should_fail/tcfail044.stderr
index f30e605f5108..0fe6b349bdde 100644
--- a/ghc/tests/typecheck/should_fail/tcfail044.stderr
+++ b/ghc/tests/typecheck/should_fail/tcfail044.stderr
@@ -7,8 +7,6 @@ tcfail044.hs:12:
     Warning: No explicit method nor default method for `abs'
 	     in an instance declaration for `Num'
 
-
-
 tcfail044.hs:5:
     Illegal instance declaration for `Eq (a -> a)'
 	(the instance type must be of form (T a b c)
@@ -19,7 +17,5 @@ tcfail044.hs:12:
 	(the instance type must be of form (T a b c)
 	 where T is not a synonym, and a,b,c are distinct type variables)
 
-
-
 Compilation had errors
 
diff --git a/ghc/tests/typecheck/should_fail/tcfail045.stderr b/ghc/tests/typecheck/should_fail/tcfail045.stderr
index 236911e89532..10b23676e584 100644
--- a/ghc/tests/typecheck/should_fail/tcfail045.stderr
+++ b/ghc/tests/typecheck/should_fail/tcfail045.stderr
@@ -3,7 +3,5 @@ tcfail045.hs:10:
     Unacceptable instance type for ccall-ish class
 	class CCallable type Socket
 
-
-
 Compilation had errors
 
diff --git a/ghc/tests/typecheck/should_fail/tcfail046.stderr b/ghc/tests/typecheck/should_fail/tcfail046.stderr
index 2f5fe27f2ae3..9d5307d3bc1e 100644
--- a/ghc/tests/typecheck/should_fail/tcfail046.stderr
+++ b/ghc/tests/typecheck/should_fail/tcfail046.stderr
@@ -3,7 +3,5 @@ tcfail046.hs:4:
     No instance for `Eq (Process a)'
     When deriving classes for `Message'
 
-
-
 Compilation had errors
 
diff --git a/ghc/tests/typecheck/should_fail/tcfail047.stderr b/ghc/tests/typecheck/should_fail/tcfail047.stderr
index 4eb3cca94fa3..d9b4692171b9 100644
--- a/ghc/tests/typecheck/should_fail/tcfail047.stderr
+++ b/ghc/tests/typecheck/should_fail/tcfail047.stderr
@@ -4,7 +4,5 @@ tcfail047.hs:7:
 	(the instance type must be of form (T a b c)
 	 where T is not a synonym, and a,b,c are distinct type variables)
 
-
-
 Compilation had errors
 
diff --git a/ghc/tests/typecheck/should_fail/tcfail048.stderr b/ghc/tests/typecheck/should_fail/tcfail048.stderr
index 5b2692450af5..11f833d06df3 100644
--- a/ghc/tests/typecheck/should_fail/tcfail048.stderr
+++ b/ghc/tests/typecheck/should_fail/tcfail048.stderr
@@ -1,7 +1,5 @@
 
 tcfail048.hs:4: Type constructor or class not in scope: `B'
 
-
-
 Compilation had errors
 
diff --git a/ghc/tests/typecheck/should_fail/tcfail049.stderr b/ghc/tests/typecheck/should_fail/tcfail049.stderr
index e2e5992eaea8..1c7f82a4f75d 100644
--- a/ghc/tests/typecheck/should_fail/tcfail049.stderr
+++ b/ghc/tests/typecheck/should_fail/tcfail049.stderr
@@ -1,7 +1,5 @@
 
 tcfail049.hs:3: Variable not in scope: `g'
 
-
-
 Compilation had errors
 
diff --git a/ghc/tests/typecheck/should_fail/tcfail050.stderr b/ghc/tests/typecheck/should_fail/tcfail050.stderr
index f21fbf494f35..6f4c224fcda2 100644
--- a/ghc/tests/typecheck/should_fail/tcfail050.stderr
+++ b/ghc/tests/typecheck/should_fail/tcfail050.stderr
@@ -1,7 +1,5 @@
 
 tcfail050.hs:3: Data constructor not in scope: `B'
 
-
-
 Compilation had errors
 
diff --git a/ghc/tests/typecheck/should_fail/tcfail051.stderr b/ghc/tests/typecheck/should_fail/tcfail051.stderr
index ead1fa1326b8..668c158ec2db 100644
--- a/ghc/tests/typecheck/should_fail/tcfail051.stderr
+++ b/ghc/tests/typecheck/should_fail/tcfail051.stderr
@@ -3,7 +3,5 @@ tcfail051.hs:4: Type constructor or class not in scope: `B'
 
 tcfail051.hs:4: Variable not in scope: `op1'
 
-
-
 Compilation had errors
 
diff --git a/ghc/tests/typecheck/should_fail/tcfail052.stderr b/ghc/tests/typecheck/should_fail/tcfail052.stderr
index 397abcd8cb38..cf01d153c9af 100644
--- a/ghc/tests/typecheck/should_fail/tcfail052.stderr
+++ b/ghc/tests/typecheck/should_fail/tcfail052.stderr
@@ -1,7 +1,5 @@
 
 tcfail052.hs:4: Type variable not in scope: `c'
 
-
-
 Compilation had errors
 
diff --git a/ghc/tests/typecheck/should_fail/tcfail053.hs b/ghc/tests/typecheck/should_fail/tcfail053.hs
index 99028ab4c8cb..d13e60643498 100644
--- a/ghc/tests/typecheck/should_fail/tcfail053.hs
+++ b/ghc/tests/typecheck/should_fail/tcfail053.hs
@@ -1,2 +1,3 @@
+module TcFail where
 
 data B = C A
diff --git a/ghc/tests/typecheck/should_fail/tcfail053.stderr b/ghc/tests/typecheck/should_fail/tcfail053.stderr
index baa28f5ef007..327beefd31c4 100644
--- a/ghc/tests/typecheck/should_fail/tcfail053.stderr
+++ b/ghc/tests/typecheck/should_fail/tcfail053.stderr
@@ -1,7 +1,5 @@
 
-tcfail053.hs:3: Type constructor or class not in scope: `A'
-
-
+tcfail053.hs:4: Type constructor or class not in scope: `A'
 
 Compilation had errors
 
diff --git a/ghc/tests/typecheck/should_fail/tcfail054.stderr b/ghc/tests/typecheck/should_fail/tcfail054.stderr
index 65477564f70d..277623ef3a0d 100644
--- a/ghc/tests/typecheck/should_fail/tcfail054.stderr
+++ b/ghc/tests/typecheck/should_fail/tcfail054.stderr
@@ -1,7 +1,5 @@
 
 tcfail054.hs:3: Data constructor not in scope: `B'
 
-
-
 Compilation had errors
 
diff --git a/ghc/tests/typecheck/should_fail/tcfail055.stderr b/ghc/tests/typecheck/should_fail/tcfail055.stderr
index 834f6567e400..0c18a152dd90 100644
--- a/ghc/tests/typecheck/should_fail/tcfail055.stderr
+++ b/ghc/tests/typecheck/should_fail/tcfail055.stderr
@@ -5,7 +5,5 @@ tcfail055.hs:3:
 	Inferred type: Float
     In an expression with a type signature: x + 1 :: Int
 
-
-
 Compilation had errors
 
diff --git a/ghc/tests/typecheck/should_fail/tcfail056.stderr b/ghc/tests/typecheck/should_fail/tcfail056.stderr
index 1ac293662ce0..457aed54da7d 100644
--- a/ghc/tests/typecheck/should_fail/tcfail056.stderr
+++ b/ghc/tests/typecheck/should_fail/tcfail056.stderr
@@ -5,7 +5,5 @@ tcfail056.hs:1:
 
 tcfail056.hs:10: Class `Eq' does not have a method `<='
 
-
-
 Compilation had errors
 
diff --git a/ghc/tests/typecheck/should_fail/tcfail057.stderr b/ghc/tests/typecheck/should_fail/tcfail057.stderr
index 15966fae701c..163df530160c 100644
--- a/ghc/tests/typecheck/should_fail/tcfail057.stderr
+++ b/ghc/tests/typecheck/should_fail/tcfail057.stderr
@@ -3,7 +3,5 @@ tcfail057.hs:5:
     Class used as a type constructor: RealFrac
     When checking kinds in `RealFrac a'
 
-
-
 Compilation had errors
 
diff --git a/ghc/tests/typecheck/should_fail/tcfail058.stderr b/ghc/tests/typecheck/should_fail/tcfail058.stderr
index bab93a7cdc02..69e4de1cadd5 100644
--- a/ghc/tests/typecheck/should_fail/tcfail058.stderr
+++ b/ghc/tests/typecheck/should_fail/tcfail058.stderr
@@ -3,7 +3,5 @@ tcfail058.hs:6:
     Type constructor used as a class: Array
     When checking kinds in `Array a'
 
-
-
 Compilation had errors
 
diff --git a/ghc/tests/typecheck/should_fail/tcfail061.stderr b/ghc/tests/typecheck/should_fail/tcfail061.stderr
index 362e7a5e88f0..faa0dca8bd51 100644
--- a/ghc/tests/typecheck/should_fail/tcfail061.stderr
+++ b/ghc/tests/typecheck/should_fail/tcfail061.stderr
@@ -7,7 +7,5 @@ tcfail061.hs:11: Type variable not in scope: `b'
 
 tcfail061.hs:11: Type variable not in scope: `b'
 
-
-
 Compilation had errors
 
diff --git a/ghc/tests/typecheck/should_fail/tcfail062.stderr b/ghc/tests/typecheck/should_fail/tcfail062.stderr
index 2887b6bbe211..f0d6c1c10dc7 100644
--- a/ghc/tests/typecheck/should_fail/tcfail062.stderr
+++ b/ghc/tests/typecheck/should_fail/tcfail062.stderr
@@ -5,7 +5,5 @@ tcfail062.hs:33:
 tcfail062.hs:33:
     Type variable not in scope: `behaviouralExpression'
 
-
-
 Compilation had errors
 
diff --git a/ghc/tests/typecheck/should_fail/tcfail065.stderr b/ghc/tests/typecheck/should_fail/tcfail065.stderr
index 191e08ed5fab..2b7b343ceda9 100644
--- a/ghc/tests/typecheck/should_fail/tcfail065.stderr
+++ b/ghc/tests/typecheck/should_fail/tcfail065.stderr
@@ -2,13 +2,13 @@
 tcfail065.hs:29:
     Inferred type is less polymorphic than expected
 	Quantified type variable `x' escapes
-	It is mentioned in the environment
-	The following variables in the environment mention `x'
+	It unifies with `x1', which is mentioned in the environment
+** SLPJ: I HATE THE 'unifies with' PART **
+	The following variables in the environment mention `x1'
+** AND NOTHING MENTIONED! **
     When checking the type signature
 	setX :: forall x2. x2 -> X x1 -> X x1
     In the definition for method `setX'
 
-
-
 Compilation had errors
 
diff --git a/ghc/tests/typecheck/should_fail/tcfail067.stderr b/ghc/tests/typecheck/should_fail/tcfail067.stderr
index fca214ae220d..8cfe0b1d582b 100644
--- a/ghc/tests/typecheck/should_fail/tcfail067.stderr
+++ b/ghc/tests/typecheck/should_fail/tcfail067.stderr
@@ -7,19 +7,22 @@ tcfail067.hs:65:
     Warning: No explicit method nor default method for `abs'
 	     in an instance declaration for `Num'
 
-
-
 tcfail067.hs:65:
     Could not deduce `Ord a'
 	(arising from use of `SubRange' at tcfail067.hs:65)
-	from the context: (Num (SubRange a1), Num a1, Eq (SubRange a1), Show (SubRange a1), Eq (SubRange a1), Show (SubRange a1))
+	from the context: (Num (SubRange a),
+			   Num a,
+			   Eq (SubRange a),
+			   Show (SubRange a),
+			   Eq (SubRange a),
+			   Show (SubRange a))
     Probable cause: missing `Ord a' in instance declaration context
     When checking the methods of an instance declaration
 
 tcfail067.hs:65:
     Could not deduce `Show (SubRange a)'
 	(arising from an instance declaration at tcfail067.hs:65)
-	from the context: (Num a1)
+	from the context: (Num a)
     Probable cause: missing `Show (SubRange a)'
 		    in instance declaration context
 		    or missing instance declaration for `Show (SubRange a)'
@@ -33,7 +36,5 @@ tcfail067.hs:74:
 		    in type signature for `numSubRangeBinOp'
     When checking the type signature(s) for `numSubRangeBinOp'
 
-
-
 Compilation had errors
 
diff --git a/ghc/tests/typecheck/should_fail/tcfail068.stderr b/ghc/tests/typecheck/should_fail/tcfail068.stderr
index 4fea13ff3157..ccd2fab361e2 100644
--- a/ghc/tests/typecheck/should_fail/tcfail068.stderr
+++ b/ghc/tests/typecheck/should_fail/tcfail068.stderr
@@ -49,7 +49,5 @@ tcfail068.hs:36:
     In the right-hand side of an equation for `itrapstate':
 	runST (itrapstate' i k s)
 
-
-
 Compilation had errors
 
diff --git a/ghc/tests/typecheck/should_fail/tcfail069.stderr b/ghc/tests/typecheck/should_fail/tcfail069.stderr
index 3ca0c5f82964..a3c950dceb9e 100644
--- a/ghc/tests/typecheck/should_fail/tcfail069.stderr
+++ b/ghc/tests/typecheck/should_fail/tcfail069.stderr
@@ -6,7 +6,5 @@ tcfail069.hs:20:
     In the scrutinee of a case expression: (list1, list2)
     In the case expression: case (list1, list2) of [] -> error "foo"
 
-
-
 Compilation had errors
 
diff --git a/ghc/tests/typecheck/should_fail/tcfail070.hs b/ghc/tests/typecheck/should_fail/tcfail070.hs
index d6cd3d7eab16..6cd2a2840429 100644
--- a/ghc/tests/typecheck/should_fail/tcfail070.hs
+++ b/ghc/tests/typecheck/should_fail/tcfail070.hs
@@ -10,5 +10,7 @@ panic! (the `impossible' happened):
 	tlist
 -}
 
+module TcFail where
+
 type State = ([Int] Bool)
 
diff --git a/ghc/tests/typecheck/should_fail/tcfail070.stderr b/ghc/tests/typecheck/should_fail/tcfail070.stderr
index e0736b83fd7c..6a5d4afc4551 100644
--- a/ghc/tests/typecheck/should_fail/tcfail070.stderr
+++ b/ghc/tests/typecheck/should_fail/tcfail070.stderr
@@ -1,12 +1,10 @@
 
-tcfail070.hs:13:
+tcfail070.hs:15:
     Couldn't match `*' against `* -> k'
 	Expected kind: *
 	Inferred kind: * -> k
     When checking kinds in `[Int] Bool'
     In the type synonym declaration for `State'
 
-
-
 Compilation had errors
 
diff --git a/ghc/tests/typecheck/should_fail/tcfail071.stderr b/ghc/tests/typecheck/should_fail/tcfail071.stderr
index 018379f8257b..3f711e9c4959 100644
--- a/ghc/tests/typecheck/should_fail/tcfail071.stderr
+++ b/ghc/tests/typecheck/should_fail/tcfail071.stderr
@@ -1,10 +1,16 @@
 
 tcfail071.hs:8:
-    Inferred type is less polymorphic than expected
-	Quantified type variable `c' is unified with `a -> [t] -> [t]'
-    When checking the type signature g :: forall c1. c1 -> c1
-
+    Mismatched contexts
+    When matching the contexts of the signatures for `f' and `g'
+	(the signature contexts in a mutually recursive group should all be identical)
 
+tcfail071.hs:10:
+    Cannot unify the type-signature variable `c'
+	with the type `a -> b -> b'
+	Expected type: a -> b -> b
+	Inferred type: c
+    In the first argument of `f', namely `c'
+    In the first argument of `foldr', namely `(f c)'
 
 Compilation had errors
 
diff --git a/ghc/tests/typecheck/should_fail/tcfail072.stderr b/ghc/tests/typecheck/should_fail/tcfail072.stderr
index ea214e1c4909..a54ff9863ef1 100644
--- a/ghc/tests/typecheck/should_fail/tcfail072.stderr
+++ b/ghc/tests/typecheck/should_fail/tcfail072.stderr
@@ -9,7 +9,5 @@ tcfail072.hs:23:
 	in the constraint `Ord q'
 	arising from use of `g' at tcfail072.hs:23
 
-
-
 Compilation had errors
 
diff --git a/ghc/tests/typecheck/should_fail/tcfail073.stderr b/ghc/tests/typecheck/should_fail/tcfail073.stderr
index a51978510e81..90c9b23df230 100644
--- a/ghc/tests/typecheck/should_fail/tcfail073.stderr
+++ b/ghc/tests/typecheck/should_fail/tcfail073.stderr
@@ -1,7 +1,7 @@
 
 tcfail073.hs:3:
     Duplicate or overlapping instance declarations
-	for `Eq (a, b)' at PrelTup.hi:10 and tcfail073.hs:8
+	for `Eq (a, b)' at PrelTup.hi:5 and tcfail073.hs:8
 
 tcfail073.hs:8:
     Could not deduce `Eq a'
@@ -10,7 +10,5 @@ tcfail073.hs:8:
     Probable cause: missing `Eq a' in instance declaration context
     When checking the methods of an instance declaration
 
-
-
 Compilation had errors
 
diff --git a/ghc/tests/typecheck/should_fail/tcfail074.stderr b/ghc/tests/typecheck/should_fail/tcfail074.stderr
index 9e85e923b6ec..710193777eb2 100644
--- a/ghc/tests/typecheck/should_fail/tcfail074.stderr
+++ b/ghc/tests/typecheck/should_fail/tcfail074.stderr
@@ -4,7 +4,5 @@ tcfail074.hs:7:
 	defined at tcfail074.hs:7
 	defined at tcfail074.hs:8
 
-
-
 Compilation had errors
 
diff --git a/ghc/tests/typecheck/should_fail/tcfail076.stderr b/ghc/tests/typecheck/should_fail/tcfail076.stderr
index c715384aafbd..fa1ea953d924 100644
--- a/ghc/tests/typecheck/should_fail/tcfail076.stderr
+++ b/ghc/tests/typecheck/should_fail/tcfail076.stderr
@@ -2,16 +2,14 @@
 tcfail076.hs:18:
     Inferred type is less polymorphic than expected
 	Quantified type variable `res' escapes
-	It unifies with `res1', which is mentioned in the environment
-	The following variables in the environment mention `res1'
-	    cont :: a -> m res1
-    In an expression with expected type: forall res2.
-					 (a1 -> m res2) -> m res2
+	It is mentioned in the environment
+	The following variables in the environment mention `res'
+	    cont :: a -> m res
+    In an expression with expected type:
+	forall res1. (a1 -> m1 res1) -> m1 res1
     In the first argument of `KContT', namely `(\ cont' -> cont a)'
     In the right-hand side of a lambda abstraction:
 	KContT (\ cont' -> cont a)
 
-
-
 Compilation had errors
 
diff --git a/ghc/tests/typecheck/should_fail/tcfail077.stderr b/ghc/tests/typecheck/should_fail/tcfail077.stderr
index 376d1bfe13d8..9626bb4378a2 100644
--- a/ghc/tests/typecheck/should_fail/tcfail077.stderr
+++ b/ghc/tests/typecheck/should_fail/tcfail077.stderr
@@ -1,7 +1,5 @@
 
 tcfail077.hs:8: Variable not in scope: `op2'
 
-
-
 Compilation had errors
 
diff --git a/ghc/tests/typecheck/should_fail/tcfail078.stderr b/ghc/tests/typecheck/should_fail/tcfail078.stderr
index ffae1f07c336..8002caa38a4a 100644
--- a/ghc/tests/typecheck/should_fail/tcfail078.stderr
+++ b/ghc/tests/typecheck/should_fail/tcfail078.stderr
@@ -3,7 +3,5 @@ tcfail078.hs:5:
     Type constructor used as a class: Integer
     When checking kinds in `Integer i'
 
-
-
 Compilation had errors
 
diff --git a/ghc/tests/typecheck/should_fail/tcfail079.stderr b/ghc/tests/typecheck/should_fail/tcfail079.stderr
index bf3afb46360e..7765b82a737a 100644
--- a/ghc/tests/typecheck/should_fail/tcfail079.stderr
+++ b/ghc/tests/typecheck/should_fail/tcfail079.stderr
@@ -6,7 +6,5 @@ tcfail079.hs:9:
     When checking that `Int#' is a type
     In the data type declaration for `Unboxed'
 
-
-
 Compilation had errors
 
diff --git a/ghc/tests/typecheck/should_fail/tcfail080.stderr b/ghc/tests/typecheck/should_fail/tcfail080.stderr
index e4d8be979807..dd2eaf2d0c87 100644
--- a/ghc/tests/typecheck/should_fail/tcfail080.stderr
+++ b/ghc/tests/typecheck/should_fail/tcfail080.stderr
@@ -4,7 +4,5 @@ tcfail080.hs:11:
 	in the constraint `Collection c a'
 	arising from use of `isempty' at tcfail080.hs:11
 
-
-
 Compilation had errors
 
diff --git a/ghc/tests/typecheck/should_fail/tcfail081.stderr b/ghc/tests/typecheck/should_fail/tcfail081.stderr
index c0bbc90c8e41..f66b5ecae847 100644
--- a/ghc/tests/typecheck/should_fail/tcfail081.stderr
+++ b/ghc/tests/typecheck/should_fail/tcfail081.stderr
@@ -1,10 +1,9 @@
 
-tcfail081.hs:4:
-    Inferred type is less polymorphic than expected
-	Quantified type variable `a' is unified with `IO t'
-    When checking the type signature main :: forall a1. a1
-
-
+tcfail081.hs:2:
+    Cannot unify the type-signature variable `a' with the type `IO t'
+	Expected type: IO t
+	Inferred type: a
+    When checking that `main' has the required type
 
 Compilation had errors
 
-- 
GitLab