[GHC] #15276: Bogus type in typechecker error recovery
GHC
ghc-devs at haskell.org
Fri Jun 15 07:47:32 UTC 2018
#15276: Bogus type in typechecker error recovery
-------------------------------------+-------------------------------------
Reporter: simonpj | Owner: (none)
Type: bug | Status: new
Priority: normal | Milestone: 8.6.1
Component: Compiler | Version: 8.4.3
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:
-------------------------------------+-------------------------------------
If the typechecker sees
{{{
let f = <rhs> in <body>
}}}
and there's a type error in `<rhs>`, GHC recovers from the error, binds
`f` to "a type that should cause no more trouble", and continues with
`<both>` in the hope of finding more type errors.
What is "a type that should cause no more trouble"? Well `forall a.a`
seems like a good candidate.
But, in this commit
{{{
commit 6746549772c5cc0ac66c0fce562f297f4d4b80a2
Author: Richard Eisenberg <eir at cis.upenn.edu>
Date: Fri Dec 11 18:19:53 2015 -0500
Add kind equalities to GHC.
}}}
we made the type look like this: `forall r. forall (a :: TYPE r). a`
Alas! That type is ill-formed because the kind `TYPE r` escapes the scope
of `f`.
I discovered this when beefing up `typeKind` in pursuit of #14939
--
Ticket URL: <http://ghc.haskell.org/trac/ghc/ticket/15276>
GHC <http://www.haskell.org/ghc/>
The Glasgow Haskell Compiler
More information about the ghc-tickets
mailing list