Skip to content

Check for unused type variables in type instances is buggy for associated type defaults

Currently, a program like

type family F
type instance forall a. F = ()

will give rise to an error

    * Type variable `a' is bound by a forall,
        but not used in the family instance.
    * In the type instance declaration for `F'

Associated type defaults go through the same logic (checkValidClass calls checkValidTyFamEqn which calls checkFamPatBinders), but I think it is passed incorrect arguments, which means that the following program:

class C where
  type H
  type forall c. H = ()

does not give rise to any errors, when we would expect a similar error as above.

I will fix as part of my investigations into #23734 (closed).

To upload designs, you'll need to enable LFS and have an admin enable hashed storage. More information