[GHC] #12387: Template Haskell ignores class instance definitions with methods that don't belong to the class
GHC
ghc-devs at haskell.org
Wed Jul 20 12:31:37 UTC 2016
#12387: Template Haskell ignores class instance definitions with methods that don't
belong to the class
-------------------------------------+-------------------------------------
Reporter: RyanGlScott | Owner:
Type: bug | Status: new
Priority: normal | Milestone:
Component: Template Haskell | Version: 8.0.1
Resolution: | Keywords:
Operating System: Unknown/Multiple | Architecture:
Type of failure: GHC accepts | Unknown/Multiple
invalid program | Test Case:
Blocked By: | Blocking:
Related Tickets: | Differential Rev(s):
Wiki Page: |
-------------------------------------+-------------------------------------
Comment (by simonpj):
I made a little progress with this, which I'll record.
The bug is here in `RnEnv.lookupSubBndrOcc`. Usually this function looks
up an unqualified `RdrName` and uses the parent info in the `GlobalRdrEnv`
to disambiguate; and to check that the specified name is indeed a method
of the parent class.
But here are in the `Exact` `RdrName` case:
{{{
lookupSubBndrOcc warn_if_deprec the_parent doc rdr_name
| Just n <- isExact_maybe rdr_name -- This happens in derived code
= do { n <- lookupExactOcc n
; return (Right n) }
}}}
In the example `'compare` refers precisely to `GHC.Classes.compare`, so we
get an `Exact` `RdrName`. But that `compare` may not even be in scope,
and may not be in the `GlobalRdrEnv`. We are omitting a check for the
correct parent; hence the lack of error message.
What to do? Either
* If it's not in scope it must presumably be imported and hence in the
`TypeEnv`. So we could look for parent-hood that way. A bit of a pain.
* Or we could postpone the check altogether to the typechecker. I like
this plan better because it works uniformly for local and imported things.
--
Ticket URL: <http://ghc.haskell.org/trac/ghc/ticket/12387#comment:1>
GHC <http://www.haskell.org/ghc/>
The Glasgow Haskell Compiler
More information about the ghc-tickets
mailing list