[GHC] #12466: Typechecker regression: Inaccessible code in a type expected by the context
GHC
ghc-devs at haskell.org
Tue Aug 9 13:39:23 UTC 2016
#12466: Typechecker regression: Inaccessible code in a type expected by the context
-------------------------------------+-------------------------------------
Reporter: RyanGlScott | Owner:
Type: bug | Status: new
Priority: highest | Milestone: 8.2.1
Component: Compiler (Type | Version: 8.1
checker) |
Resolution: | Keywords:
Operating System: Unknown/Multiple | Architecture:
Type of failure: GHC rejects | Unknown/Multiple
valid program | Test Case:
Blocked By: | Blocking:
Related Tickets: | Differential Rev(s):
Wiki Page: |
-------------------------------------+-------------------------------------
Changes (by RyanGlScott):
* cc: ekmett (added)
Comment:
Sorry, my previous estimate was off the mark. It's not that the definition
of `$dmfoo` is being inlined. Rather, after reading
d2958bd08a049b61941f078e51809c7e63bc3354 more closely, the real culprit is
that prior to that commit, default methods weren't being typechecked for
each instance! As a result, the code was sneaking past the typechecker.
But I'm still confused as to why defining:
{{{#!hs
instance Foo Char where
foo _ x = x
}}}
typechecks without issue (on all versions of GHC), but defining the
instance in terms of a helper method:
{{{#!hs
fooDefault :: (a ~ Int => Int) -> a -> a
fooDefault _ a2 = a2
instance Foo Char where
foo = fooDefault @Char
}}}
is rejected with an error.
cc'ing Edward Kmett on this one, since if `lens` really is using code that
shouldn't typecheck, `lens` is going to need to come up with a workaround.
--
Ticket URL: <http://ghc.haskell.org/trac/ghc/ticket/12466#comment:13>
GHC <http://www.haskell.org/ghc/>
The Glasgow Haskell Compiler
More information about the ghc-tickets
mailing list