Fix missing escaping-kind check in tcPatSynSig
Note [Escaping kind in type signatures] explains how we deal with escaping kinds in type signatures, e.g. f :: forall r (a :: TYPE r). a where the kind of the body is (TYPE r), but `r` is not in scope outside the forall-type. I had missed this subtlety in tcPatSynSig, leading to #24686. This MR fixes it; and a similar bug in tc_top_lhs_type. (The latter is tested by T24686a.)
Showing
- compiler/GHC/Tc/Gen/HsType.hs 6 additions, 5 deletionscompiler/GHC/Tc/Gen/HsType.hs
- compiler/GHC/Tc/Gen/Sig.hs 11 additions, 9 deletionscompiler/GHC/Tc/Gen/Sig.hs
- testsuite/tests/polykinds/T24686.hs 28 additions, 0 deletionstestsuite/tests/polykinds/T24686.hs
- testsuite/tests/polykinds/T24686.stderr 7 additions, 0 deletionstestsuite/tests/polykinds/T24686.stderr
- testsuite/tests/polykinds/T24686a.hs 9 additions, 0 deletionstestsuite/tests/polykinds/T24686a.hs
- testsuite/tests/polykinds/T24686a.stderr 8 additions, 0 deletionstestsuite/tests/polykinds/T24686a.stderr
- testsuite/tests/polykinds/all.T 2 additions, 0 deletionstestsuite/tests/polykinds/all.T
- testsuite/tests/rep-poly/RepPolyPatSynRes.stderr 6 additions, 3 deletionstestsuite/tests/rep-poly/RepPolyPatSynRes.stderr
Loading
Please register or sign in to comment