• Richard Eisenberg's avatar
    Fix #14045 by omitting an unnecessary check · d1ef223c
    Richard Eisenberg authored
    Previously, we checked the number of patterns in a data instances
    for all data families whose kind did not end in a kind variable.
    But, of course, undersaturating instances can happen even without
    the kind ending in a kind variable. So I've omitted the arity check.
    Data families aren't as particular about their arity as type families
    are (because data families can be undersaturated). Still, this change
    degrades error messages when instances don't have the right arity;
    now, instead of reporting a simple mismatch in the number of patterns,
    GHC reports kind errors. The new errors are fully accurate, but perhaps
    not as easy to work with. Still, with the new flexibility of allowing
    data family instances with varying numbers of patterns, I don't see
    a better way.
    
    This commit also improves source fidelity in some error messages,
    requiring more changes than really are necessary. But without these
    changes, error messages around mismatched associated instance heads
    were poor.
    
    test cases: indexed-types/should_compile/T14045,
                indexed-types/should_fail/T14045a
    d1ef223c
HsDecls.hs 83.1 KB