
#13332: Report unrecognized pragmas earlier -------------------------------------+------------------------------------- Reporter: crockeea | Owner: (none) Type: bug | Status: new Priority: normal | Milestone: Component: Compiler | Version: 8.0.2 Resolution: | Keywords: Operating System: Unknown/Multiple | Architecture: Type of failure: Poor/confusing | Unknown/Multiple error message | Test Case: Blocked By: | Blocking: Related Tickets: | Differential Rev(s): Wiki Page: | -------------------------------------+------------------------------------- Changes (by mpickering): * keywords: newcomer => Comment: I investigated this today. The relevant code path starts in `ghc/Main.hs` under the comment "do the business" which catches and displays errors. Warnings on the other hand are dealt with by `runHsc` and are already baked into the `HscMonad`. The main logic of how the parser and type checker link together is in `hscTypecheck`. The typechecker is invoked by the `tcRnModule` function but wrapped with `ioMsgMaybe` which throws an error if the typechecker fails. It seems like the best solution would be to also stop using `throwIO` to report errors and also bake them into the `Hsc` type so that `runHsc` deals with throwing both warnings and exceptions so we can isolate the logic and which are displayed into one place. I fear that this would be quite a difficult change as a lot of the compiler is designed using these unchecked exceptions. Thanks for looking at this Richard but I agree that it's not very easy to fix properly. -- Ticket URL: http://ghc.haskell.org/trac/ghc/ticket/13332#comment:7 GHC http://www.haskell.org/ghc/ The Glasgow Haskell Compiler