Skip to content
Snippets Groups Projects
Commit 3d9cacd5 authored by Patrick's avatar Patrick
Browse files

Enhance kind inference for data family instances

This commit improves kind inference for data family instances by kind-checking
the constructors, for H98 and newtype declarations (ONLY), as well as
kind-checking the result kind signature (when using GADT syntax).
This fixes #25611.

Typechecker changes:
In `tcDataFamInstHeader`, we now kind-check the constructors using
`kcConDecls`, for H98-style decls and newtype decls ONLY.
See Note [Kind inference for data family instances].

Testsuite changes:
  - The T25611{a,b,c,d} tests test the new kind inference implementation.
    - a,b: infer result kind from constructors (H98 case)
    - c: renamed version of test UnliftedNewtypesUnassociatedFamilyFail,
      which now passes
    - d: GADT case, checking that we don't infer overly rigid kinds when
         kind-checking the constructors in data family instances.
 - DataInstanceKindsDefaults tests defaulting data instance kinds
   without UnliftedNewtypes or UnliftedDatatypes, as outlined in
   Note [Defaulting result kind of newtype/data family instance].

Also a few notes are updated to reflect the changes.

Co-authored-by: default avatardefault avatarSimon Peyton Jones <simon.peytonjones@gmail.com>
parent ab3ab3e3
No related branches found
No related tags found
No related merge requests found
Showing
with 221 additions and 81 deletions
Loading
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment