Re: [GHC] #8034: Missing ambiguity test for class methods

#8034: Missing ambiguity test for class methods -------------------------------------+------------------------------------- Reporter: simonpj | Owner: Type: bug | Status: new Priority: normal | Milestone: 7.12.1 Component: Compiler (Type | Version: 7.7 checker) | Keywords: Resolution: | Architecture: Operating System: Unknown/Multiple | Unknown/Multiple Type of failure: None/Unknown | Test Case: Blocked By: | Blocking: Related Tickets: | Differential Revisions: -------------------------------------+------------------------------------- Comment (by jstolarek): I looked at the code today to see if I can fix this together with #6018. A quick diagnosis is that the type of class operation is stripped from the foralls and thetas so that only tau remains (in Simon's example the type `foo :: forall (k :: BOX) (a :: k). C a => F a -> F a` is stripped to `F a -> F a`). This tau is passed to ambiguity check but since there are no quantified variables the ambiguity check always succeeds. I wonder what would be the right strategy here: 1. In `TcTyClsDecls.checkValidClass` call `checkValidType` (inside `check_op`) with some type other than `tau`. I tried a quick hack to add the forall variables back to tau (ie. the original type of class operation is stripped only from thetas) but there are some corner cases where this does not work. 2. Modify the first case of `TcValidity.check_type` to look for type variables under type family applications even if these variables are not quantified. I'm not sure which of these two is the right way of fixing this so I didn't try too hard to implement any of these. If anyone with more knowledge can hint me which of these to would be the right way of fixing this I think I should be able to write a patch. -- Ticket URL: http://ghc.haskell.org/trac/ghc/ticket/8034#comment:5 GHC http://www.haskell.org/ghc/ The Glasgow Haskell Compiler
participants (1)
-
GHC