Hi Simon, Could you take a look at TcSimplify.tcSubsumes? This relatively new function pushes the TcLevel when calling tcSubType, but then doesn't set the TcLevel when calling the solver. Inexplicably, this sometimes works -- even passing the testsuite. Somehow, my work caused this to fail. I fixed it by setting the TcLevel before calling the solver. Two questions: 1. Is this a reasonable fix? 2. (optional) How is it possible that this didn't fail drastically often? Note (to author / reviewers of this function): my astonishment isn't that this error crept into the codebase -- I've done similar many many times. My astonishment is how the testsuite didn't find this error forthwith. Thanks, Richard
Richard It's clearly wrong as it is, but I suggest you that you make tcSubsumes use captureConstraints rather than pushLevelAndCaptureConstratints. That's what solveEqualities does, after all. Simon | -----Original Message----- | From: Richard Eisenberg [mailto:rae@cs.brynmawr.edu] | Sent: 26 October 2017 23:12 | To: Simon Peyton Jones <simonpj@microsoft.com> | Cc: ghc-devs <ghc-devs@haskell.org> | Subject: tcSubsumes | | Hi Simon, | | Could you take a look at TcSimplify.tcSubsumes? This relatively new | function pushes the TcLevel when calling tcSubType, but then doesn't set | the TcLevel when calling the solver. Inexplicably, this sometimes works - | - even passing the testsuite. Somehow, my work caused this to fail. I | fixed it by setting the TcLevel before calling the solver. | | Two questions: | | 1. Is this a reasonable fix? | | 2. (optional) How is it possible that this didn't fail drastically often? | | Note (to author / reviewers of this function): my astonishment isn't that | this error crept into the codebase -- I've done similar many many times. | My astonishment is how the testsuite didn't find this error forthwith. | | Thanks, | Richard
participants (2)
-
Richard Eisenberg -
Simon Peyton Jones