[GHC] #15290: QuantifiedConstraints: panic "addTcEvBind NoEvBindsVar"
GHC
ghc-devs at haskell.org
Tue Jun 26 11:12:57 UTC 2018
#15290: QuantifiedConstraints: panic "addTcEvBind NoEvBindsVar"
-------------------------------------+-------------------------------------
Reporter: goldfire | Owner: (none)
Type: bug | Status: patch
Priority: normal | Milestone: 8.6.1
Component: Compiler | Version: 8.4.3
Resolution: | Keywords:
| QuantifiedConstraints
Operating System: Unknown/Multiple | Architecture:
| Unknown/Multiple
Type of failure: None/Unknown | Test Case: quantified-
| constraints/T15290, T15290a
Blocked By: | Blocking: 9123
Related Tickets: | Differential Rev(s): Phab:D4895
Wiki Page: |
-------------------------------------+-------------------------------------
Comment (by simonpj):
OK, this commit fixes the problem reported in comment:22, and adds the
code there as a regression test.
This is the ''third'' separate bug exposed by the original bug report.
Wow.
{{{
commit 261dd83cacec71edd551e9c581d05285c9ea3226
Author: Simon Peyton Jones <simonpj at microsoft.com>
Date: Mon Jun 25 17:42:57 2018 +0100
Fix TcLevel manipulation in TcDerivInfer.simplifyDeriv
The level numbers we were getting simply didn't obey the
invariant (ImplicInv) in TcType
Note [TcLevel and untouchable type variables]
That leads to chaos. Easy to fix. I improved the documentation.
I also added an assertion in TcSimplify that checks that
level numbers go up by 1 as we dive inside implications, so
that we catch the problem at source rather than than through
its obscure consequences.
That in turn showed up that TcRules was also generating
constraints that didn't obey (ImplicInv), so I fixed that too.
I have no idea what consequences were lurking behing that
bug, but anyway now it's fixed. Hooray.
}}}
Are we done now? (Once Ryan has committed the stuff in comment:31.)
--
Ticket URL: <http://ghc.haskell.org/trac/ghc/ticket/15290#comment:32>
GHC <http://www.haskell.org/ghc/>
The Glasgow Haskell Compiler
More information about the ghc-tickets
mailing list