
#11525: Using a dummy typechecker plugin causes an ambiguity check error -------------------------------------+------------------------------------- Reporter: jme | Owner: Type: bug | Status: new Priority: normal | Milestone: 8.2.1 Component: Compiler (Type | Version: 8.0.1-rc1 checker) | Keywords: Resolution: | UndecidableSuperClasses, plugin 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 adamgundry): * cc: adamgundry, simonpj (added) * keywords: => UndecidableSuperClasses, plugin Comment: Thanks for pointing me to this bug. The problem would appear to be the `UndecidableSuperClasses` changes in 6eabb6ddb7c53784792ee26b1e0657bde7eee7fb, which introduced a new `expandSuperClasses` step after the `solveSimpleWanteds` loop. This is the step that looks for `CDictCan`, and hence fails to expand the constraint because the plugin-induced zonking has turned it into a `CNonCanonical` instead. I think the right way to fix this is to change `zonkCt` so that it preserves `CDictCan`, much as it already preserves `CHoleCan`. We want to zonk before running the plugins, as otherwise the plugins will have to expand mutable type variables themselves. I suspect that we shouldn't modify `expandSuperClasses` to look for `CNonCanoical` dictionaries, because it passes around information in the `cc_pend_sc` field of `CDictCan`. The code has changed quite a bit since I last looked at it, however, so it might be worth checking with someone more knowledgeable than me (simonpj?) if this makes sense. -- Ticket URL: http://ghc.haskell.org/trac/ghc/ticket/11525#comment:4 GHC http://www.haskell.org/ghc/ The Glasgow Haskell Compiler