From f7f06be1f47dcb3a48c4bc7ef0a2c59e49e28115 Mon Sep 17 00:00:00 2001 From: "simonpj@microsoft.com" Date: Fri, 14 Apr 2006 12:04:11 +0000 Subject: [PATCH] Fix TH erorr recovery (test is TH_recover) --- compiler/typecheck/TcSplice.lhs | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/compiler/typecheck/TcSplice.lhs b/compiler/typecheck/TcSplice.lhs index 2215c9b..7c3aa86 100644 --- a/compiler/typecheck/TcSplice.lhs +++ b/compiler/typecheck/TcSplice.lhs @@ -421,7 +421,16 @@ instance TH.Quasi (IOEnv (Env TcGblEnv TcLclEnv)) where qCurrentModule = do { m <- getModule; return (moduleString m) } qReify v = reify v - qRecover = recoverM + + -- For qRecover, discard error messages if + -- the recovery action is chosen. Otherwise + -- we'll only fail higher up. c.f. tryTcLIE_ + qRecover recover main = do { (msgs, mb_res) <- tryTcErrs main + ; case mb_res of + Just val -> do { addMessages msgs -- There might be warnings + ; return val } + Nothing -> recover -- Discard all msgs + } qRunIO io = ioToTcRn io \end{code} -- 1.7.10.4