|
Re: TH: calling fail in Q monad gives uninformative error message, and err: msg#00062lang.haskell.glasgow.bugs
On Wed, 2004-06-23 at 01:13, Duncan Coutts wrote: > ghc makes it's own type checker monad TcM an instance of the Quasi class > (which is rather cunning), however this means that if the user calls the > Monad function 'fail' then the internal TcM fail method gets called. > This monad (IOEnv) was never meant to fail (see > ghc/compiler/utils/IOEnv.hs/) so the error message is: > > Exception when trying to run compile-time code: > Code: genex_count > Exn: user error (IOEnv failure) In the meantime (before a proper solution) here's a quick hack so you can at least find the error message associated with the call to fail. This patch is against recent ghc CVS: =================================================================== RCS file: /cvs/fptools/ghc/compiler/utils/IOEnv.hs,v retrieving revision 1.2 diff -C2 -r1.2 IOEnv.hs *** IOEnv.hs 12 Jan 2004 15:47:53 -0000 1.2 --- IOEnv.hs 29 Jun 2004 15:30:10 -0000 *************** *** 45,49 **** (>>) = thenM_ return = returnM ! fail s = failM -- Ignore the string returnM :: a -> IOEnv env a --- 45,49 ---- (>>) = thenM_ return = returnM ! fail s = failMWithMessage s returnM :: a -> IOEnv env a *************** *** 60,63 **** --- 60,65 ---- failM = IOEnv (\ env -> ioError (userError "IOEnv failure")) + failMWithMessage :: String -> IOEnv env a + failMWithMessage msg = IOEnv (\ env -> ioError (userError $ "IOEnv failure: " ++ msg))
|
|
| <Prev in Thread] | Current Thread | [Next in Thread> |
|---|---|---|
| Previous by Date: | ghci crash after exception, Erkok, Levent |
|---|---|
| Next by Date: | infered type does not typecheck, Duncan Coutts |
| Previous by Thread: | TH: calling fail in Q monad gives uninformative error message, and error causes panic, Duncan Coutts |
| Next by Thread: | [ ghc-Bugs-978068 ] arrow syntax example can't be parsed, SourceForge.net |
| Indexes: | [Date] [Thread] [Top] [All Lists] |
| News | FAQ | advertise |