
#13834: Error cascade with type applications -------------------------------------+------------------------------------- Reporter: mpickering | Owner: (none) Type: bug | Status: new Priority: normal | Milestone: Component: Compiler | Version: 8.0.1 Resolution: | Keywords: newcomer, | TypeApplications Operating System: Unknown/Multiple | Architecture: | Unknown/Multiple Type of failure: None/Unknown | Test Case: Blocked By: | Blocking: Related Tickets: | Differential Rev(s): Wiki Page: | -------------------------------------+------------------------------------- Comment (by simonpj): Trac #13834 Here is what is happening: * The `Cannot apply expression..." error is spat out immediately, during constraint generation, not by `TcErrors` * The `Variable not in scope..` error is deferred; we spit out a constraint (a `CHoleCan` in fact). The constraint solver does its work; doing so will not solve the `CHoleCan`, but it often /does/ figure out what type the out-of-scope variable should have. The error is finally reported by `TcErrors`, when it reports errors from unsolved constraints Fixing this would be possible but fiddly. The obvious thing would be to add a new form of constraint, or generalise `CHoleCan`, to allow the "Cannot apply" error to be deferred. Then the error-message-prioritisation scheme in `TcErrors` could give the out-of-scope error priority over the cannot-apply one. If we did this, it should probably be just part of a generic way of deferring error messages. There are othe errors that are spat out immediately rather than going through the constraint solver. -- Ticket URL: http://ghc.haskell.org/trac/ghc/ticket/13834#comment:1 GHC http://www.haskell.org/ghc/ The Glasgow Haskell Compiler