Re: #16195: Program with trivial polymorphism leads to out of scope dictionary
"GHC" <[email protected]> Mon, 04 Mar 2019 18:51:01 -0000
| Newsgroups | gmane.comp.lang.haskell.glasgow.bugs |
|---|---|
| Message-ID | <[email protected]> |
#16195: Program with trivial polymorphism leads to out of scope dictionary
-------------------------------------+-------------------------------------
Reporter: mpickering | Owner: (none)
Type: bug | Status: merge
Priority: high | Milestone: 8.8.1
Component: Compiler | Version: 8.7
Resolution: | Keywords:
| TypedTemplateHaskell
Operating System: Unknown/Multiple | Architecture:
| Unknown/Multiple
Type of failure: None/Unknown | Test Case: th/T16195
Blocked By: | Blocking:
Related Tickets: | Differential Rev(s):
Wiki Page: |
-------------------------------------+-------------------------------------
Comment (by Marge Bot <ben+marge-bot@…>):
In [changeset:"a48753bdbc99cda36890e851950f5b79e1c3b2b2/ghc" a48753b/ghc]:
{{{
#!CommitTicketReference repository="ghc"
revision="a48753bdbc99cda36890e851950f5b79e1c3b2b2"
Capture and simplify constraints arising from running typed splices
This fixes a regression caused by #15471 where splicing in a trivial
program such as `[|| return () ||]` would fail as the dictionary for
`return` would never get bound in the module containing the splice.
Arguably this is symptomatic of a major problem affecting TTH where we
serialise renamed asts and then retype check them. The reference to the
dictionary should be fully determined at the quote site so that splicing
doesn't have to solve any implicits at all. It's a coincidence this
works due to coherence but see #15863 and #15865 for examples where
things do go very wrong.
Fixes #16195
}}}
--
Ticket URL: <http://ghc.haskell.org/trac/ghc/ticket/16195#comment:6>