
#13242: Panic "StgCmmEnv: variable not found" with ApplicativeDo and ExistentialQuantification -------------------------------------+------------------------------------- Reporter: ljli | Owner: simonmar Type: bug | Status: new Priority: highest | Milestone: 8.0.3 Component: Compiler | Version: 8.1 Resolution: | Keywords: Operating System: Unknown/Multiple | Architecture: | Unknown/Multiple Type of failure: None/Unknown | Test Case: Blocked By: | Blocking: Related Tickets: | Differential Rev(s): Wiki Page: | -------------------------------------+------------------------------------- Comment (by simonmar):
But the rule is terribly unsatisfactory.
Yes it is. I think I'd also be fine with disabling ApplicativeDo for all statements following an existential pattern match. Or perhaps @rwbarton's suggestion:
whenever there is a pattern match that binds invisible stuff, just assume that that stuff is used in all following statements
But by itself this doesn't solve the problem that the example in this ticket raises, because the A type doesn't bind any dictionaries or constraints. By all means refactor the implementation of `tcApplicativeStmts`! Provided the tests pass it should be fine. I remember trying quite hard to simplify the implementation to use fewer fresh type variables, but I couldn't figure out how to do it. -- Ticket URL: http://ghc.haskell.org/trac/ghc/ticket/13242#comment:11 GHC http://www.haskell.org/ghc/ The Glasgow Haskell Compiler