[GHC] #15321: Typed holes in Template Haskell splices produce bewildering error messages
GHC
ghc-devs at haskell.org
Fri Jun 29 08:07:45 UTC 2018
#15321: Typed holes in Template Haskell splices produce bewildering error messages
-------------------------------------+-------------------------------------
Reporter: RyanGlScott | Owner: (none)
Type: bug | Status: new
Priority: normal | Milestone: 8.8.1
Component: Template Haskell | Version: 8.4.3
Resolution: | Keywords: TypedHoles
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 simonpj):
* differential: Phab:D4907 =>
Comment:
You're right. In `TcHoleErrors` we see
{{{
lookup :: Either Id GlobalRdrElt -> TcM (Maybe Id)
lookup (Left id) = return $ Just id
lookup (Right el) =
do { thing <- tcLookup (gre_name el)
; case thing of
}}}
That call to `tcLookup` checks for staging errors (it calls
`tcLookupGlobal` which calls `notFound`).
Easiest solution: something like
{{{
lookup (Right el) =
tryTcDiscardingErrs (return Nothing) $
do { thing <- tcLookup (gre_name el)
; case thing of
}}}
The `tryTcDiscardingErrs` does what it sounds like.
It's not super-efficient, but it doesn't have to be ... this is in error-
message generation only.
It needs a `Note` to explain why the lookup can fail.
--
Ticket URL: <http://ghc.haskell.org/trac/ghc/ticket/15321#comment:4>
GHC <http://www.haskell.org/ghc/>
The Glasgow Haskell Compiler
More information about the ghc-tickets
mailing list