Skip to content
  • Ryan Scott's avatar
    Implement stopgap solution for #14728 · 1ede46d4
    Ryan Scott authored
    It turns out that one can produce ill-formed Core by
    combining `GeneralizedNewtypeDeriving`, `TypeInType`, and
    `TypeFamilies`, as demonstrated in #14728. The root of the problem
    is allowing the last parameter of a class to appear in a //kind// of
    an associated type family, as our current approach to deriving
    associated type family instances simply doesn't work well for that
    situation.
    
    Although it might be possible to properly implement this feature
    today (see https://ghc.haskell.org/trac/ghc/ticket/14728#comment:3
    for a sketch of how this might work), there does not currently exist
    a performant implementation of the algorithm needed to accomplish
    this. Until such an implementation surfaces, we will make this corner
    case of `GeneralizedNewtypeDeriving` an error.
    
    Test Plan: make test TEST="T14728a T14728b"
    
    Reviewers: bgamari
    
    Reviewed By: bgamari
    
    Subscribers: rwbarton, thomie, carter
    
    GHC Trac Issues: #14728
    
    Differential Revision: https://phabricator.haskell.org/D4402
    1ede46d4