From de972178542ba92993942f74de43408d10860252 Mon Sep 17 00:00:00 2001 From: panne Date: Sun, 9 Jul 2000 16:00:55 +0000 Subject: [PATCH] [project @ 2000-07-09 16:00:55 by panne] By definition (sec. 7.3 in the H98 report), userError raises an IOError, so Prelude.catch should catch UserError exceptions, too. Apart from not conforming to the report, without this patch GHC's typechecker falls straight on its face. --- ghc/lib/std/PrelException.lhs | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/ghc/lib/std/PrelException.lhs b/ghc/lib/std/PrelException.lhs index b1f41e7..29f7edb 100644 --- a/ghc/lib/std/PrelException.lhs +++ b/ghc/lib/std/PrelException.lhs @@ -1,5 +1,5 @@ % ------------------------------------------------------------------------------ -% $Id: PrelException.lhs,v 1.22 2000/07/07 11:03:58 simonmar Exp $ +% $Id: PrelException.lhs,v 1.23 2000/07/09 16:00:55 panne Exp $ % % (c) The University of Glasgow, 1998-2000 % @@ -53,6 +53,7 @@ catchException (IO m) k = IO $ \s -> catch# m (\ex -> unIO (k ex)) s catch :: IO a -> (Exception -> IO a) -> IO a catch m k = catchException m handler where handler err@(IOException _) = k err + handler err@(UserError _) = k err handler other = throw other \end{code} -- 1.7.10.4