
#10698: Forall'd variable ‘$rcobox’ is not bound in RULE lhs -------------------------------------+------------------------------------- Reporter: nomeata | Owner: Type: bug | Status: new Priority: normal | Milestone: Component: Compiler | Version: 7.11 Resolution: | Keywords: Operating System: Unknown/Multiple | Architecture: | Unknown/Multiple Type of failure: None/Unknown | Test Case: Blocked By: | Blocking: Related Tickets: | Differential Revisions: -------------------------------------+------------------------------------- Comment (by nomeata): It can be triggered already with {{{ {-# RULES "coerce/id" coerce = id #-} }}} so my hypothesis is that the desugar creates something like {{{ Orig bndrs: [b, $rcobox] Orig lhs: let { cobox_acD :: Coercible b b [LclId, Str=DmdType] cobox_acD = MkCoercible @ * @ b @ b @~ $rcobox } in coerce @ b @ b cobox_acD }}} but since `$rcobox :: b ~_R b`, the coercion simplifier simplifies this to {{{ Orig bndrs: [b, $rcobox] Orig lhs: let { cobox_acD :: Coercible b b [LclId, Str=DmdType] cobox_acD = MkCoercible @ * @ b @ b @~ <b>_R } in coerce @ b @ b cobox_acD }}} and the “Forall'd variable ‘`$rcobox`’“ is is no longer used. One possibly sensible fix would be to remove forall’ed variables that are also not mentioned on the right hand side (I would assume that to be the case here, although I did not check), and do that before the warning is triggered. -- Ticket URL: http://ghc.haskell.org/trac/ghc/ticket/10698#comment:3 GHC http://www.haskell.org/ghc/ The Glasgow Haskell Compiler