From: simonpj@microsoft.com Date: Fri, 14 Apr 2006 12:04:11 +0000 (+0000) Subject: Fix TH erorr recovery (test is TH_recover) X-Git-Tag: Before_FC_branch_merge~546 X-Git-Url: http://git.megacz.com/?p=ghc-hetmet.git;a=commitdiff_plain;h=f7f06be1f47dcb3a48c4bc7ef0a2c59e49e28115 Fix TH erorr recovery (test is TH_recover) --- 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}