diff options
author | Ryan Scott <ryan.gl.scott@gmail.com> | 2020-09-21 20:07:04 -0400 |
---|---|---|
committer | Ryan Scott <ryan.gl.scott@gmail.com> | 2020-10-29 04:18:52 -0400 |
commit | 2ef2fac4c412a25fa64f79b759d69d22a4ebc784 (patch) | |
tree | afe8262c627704f420916df1d010f53c1346081c /compiler/GHC/Tc/TyCl.hs | |
parent | 22f5d9a951dbc9cfdf55984c5e2a6fad28a6f650 (diff) | |
download | haskell-2ef2fac4c412a25fa64f79b759d69d22a4ebc784.tar.gz |
Check for large tuples more thoroughlywip/T18723
This fixes #18723 by:
* Moving the existing `GHC.Tc.Gen.HsType.bigConstraintTuple` validity
check to `GHC.Rename.Utils.checkCTupSize` for consistency with
`GHC.Rename.Utils.checkTupSize`, and
* Using `check(C)TupSize` when checking tuple _types_, in addition
to checking names, expressions, and patterns.
Note that I put as many of these checks as possible in the typechecker so
that GHC can properly distinguish between boxed and constraint tuples. The
exception to this rule is checking names, which I perform in the renamer
(in `GHC.Rename.Env`) so that we can rule out `(,, ... ,,)` and
`''(,, ... ,,)` alike in one fell swoop.
While I was in town, I also removed the `HsConstraintTuple` and
`HsBoxedTuple` constructors of `HsTupleSort`, which are functionally
unused. This requires a `haddock` submodule bump.
Diffstat (limited to 'compiler/GHC/Tc/TyCl.hs')
-rw-r--r-- | compiler/GHC/Tc/TyCl.hs | 3 |
1 files changed, 2 insertions, 1 deletions
diff --git a/compiler/GHC/Tc/TyCl.hs b/compiler/GHC/Tc/TyCl.hs index ae30b9d870..971a4442a5 100644 --- a/compiler/GHC/Tc/TyCl.hs +++ b/compiler/GHC/Tc/TyCl.hs @@ -678,7 +678,8 @@ kcTyClGroup kisig_env decls -- NB: the environment extension overrides the tycon -- promotion-errors bindings -- See Note [Type environment evolution] - ; tcExtendKindEnvWithTyCons mono_tcs $ + ; checkNoErrs $ + tcExtendKindEnvWithTyCons mono_tcs $ mapM_ kcLTyClDecl kindless_decls ; return mono_tcs } |