diff options
author | Richard Eisenberg <rae@richarde.dev> | 2019-06-05 18:02:13 -0400 |
---|---|---|
committer | Marge Bot <ben+marge-bot@smart-cactus.org> | 2019-06-09 18:43:38 -0400 |
commit | a22e51ea6f7a046c87d57ce30d143eef6abee9ff (patch) | |
tree | e8c7647635bf1a6ac428bfea0e48aab9da50c9fa /docs | |
parent | 9d238791862e8b128d397a1c0317986ea82ed000 (diff) | |
download | haskell-a22e51ea6f7a046c87d57ce30d143eef6abee9ff.tar.gz |
Fix #16517 by bumping the TcLevel for method sigs
There were actually two bugs fixed here:
1. candidateQTyVarsOfType needs to be careful that it does not
try to zap metavariables from an outer scope as "naughty"
quantification candidates. This commit adds a simple check
to avoid doing so.
2. We weren't bumping the TcLevel in kcHsKindSig, which was used
only for class method sigs. This mistake led to the acceptance
of
class C a where
meth :: forall k. Proxy (a :: k) -> ()
Note that k is *locally* quantified. This patch fixes the
problem by using tcClassSigType, which correctly bumps the
level. It's a bit inefficient because tcClassSigType does other
work, too, but it would be tedious to repeat much of the code
there with only a few changes. This version works well and is
simple.
And, while updating comments, etc., I noticed that tcRnType was
missing a pushTcLevel, leading to #16767, which this patch also
fixes, by bumping the level. In the refactoring here, I also
use solveEqualities. This initially failed ghci/scripts/T15415,
but that was fixed by teaching solveEqualities to respect
-XPartialTypeSignatures.
This patch also cleans up some Notes around error generation that
came up in conversation.
Test case: typecheck/should_fail/T16517, ghci/scripts/T16767
Diffstat (limited to 'docs')
0 files changed, 0 insertions, 0 deletions