• Ryan Scott's avatar
    Fix #14916 with an additional validity check in deriveTyData · 20f14b4f
    Ryan Scott authored
    Manually-written instances and standalone-derived instances
    have the benefit of having the `checkValidInstHead` function run over
    them, which catches manual instances of built-in types like `(~)` and
    `Coercible`. However, instances generated from `deriving` clauses
    weren't being passed through `checkValidInstHead`, leading to
    confusing results as in #14916.
    
    `checkValidInstHead` also has additional validity checks for language
    extensions like `FlexibleInstances` and `MultiParamTypeClasses`. Up
    until now, GHC has never required these language extensions for
    `deriving` clause, so to avoid unnecessary breakage, I opted to
    suppress these language extension checks for `deriving` clauses, just
    like we currently suppress them for `SPECIALIZE instance` pragmas.
    
    Test Plan: make test TEST=T14916
    
    Reviewers: goldfire, bgamari
    
    Reviewed By: bgamari
    
    Subscribers: rwbarton, thomie, carter
    
    GHC Trac Issues: #14916
    
    Differential Revision: https://phabricator.haskell.org/D4501
    20f14b4f
TcType.hs 105 KB