
#12406: New not-in-scope behaviour + deferred typed holes = disappearing error messages -------------------------------------+------------------------------------- Reporter: ertes | Owner: Type: bug | Status: new Priority: normal | Milestone: Component: Compiler | Version: 8.0.1 Keywords: | Operating System: Unknown/Multiple Architecture: | Type of failure: None/Unknown Unknown/Multiple | Test Case: | Blocked By: Blocking: | Related Tickets: Differential Rev(s): | Wiki Page: -------------------------------------+------------------------------------- The following code snippet (using the [https://hackage.haskell.org/package /ref-tf ref-tf library]) is well-typed, and GHC is fine with it: {{{#!hs import Control.Monad -- comment this out to cause error import Control.Monad.Ref main :: IO () main = newRef (pure ()) >>= join . readRef }}} However, if one comments out the first line, then GHC treats `join` as a typed hole due to #10569, but fails to infer its type, causing errors: {{{ test.hs:10:8-23: error: … • Couldn't match type ‘Ref m0’ with ‘GHC.IORef.IORef’ ... test.hs:10:29-32: error: … Variable not in scope: join :: m0 (f0 ()) -> IO () }}} By default the not-in-scope error is reported, but if `-fdefer-typed- holes` is in effect, only the type error is reported leaving the user (at least me) puzzled. Not-in-scope errors should ''always'' be reported. -- Ticket URL: http://ghc.haskell.org/trac/ghc/ticket/12406 GHC http://www.haskell.org/ghc/ The Glasgow Haskell Compiler