• Ben Gamari's avatar
    Clean up coreView/tcView. · 6575f4b6
    Ben Gamari authored
    In Core, Constraint should be considered fully equal to
    TYPE LiftedRep, in all ways. Accordingly, coreView should
    unwrap Constraint to become TYPE LiftedRep. Of course, this
    would be a disaster in the type checker.
    
    So, where previously we used coreView in both the type checker
    and in Core, we now have coreView and tcView, which differ only
    in their treatment of Constraint.
    
    Historical note: once upon a past, we had tcView distinct from
    coreView. Back then, it was because newtypes were unwrapped in
    Core but not in the type checker. The distinction is back, but
    for a different reason than before.
    
    This had a few knock-on effects:
    
     * The Typeable solver must explicitly handle Constraint to ensure
       that we produce the correct evidence.
    
     * TypeMap now respects the Constraint/Type distinction
    
    Finished by: bgamari
    
    Test Plan: ./validate
    
    Reviewers: simonpj, austin, bgamari
    
    Reviewed By: simonpj
    
    Subscribers: rwbarton, thomie
    
    Differential Revision: https://phabricator.haskell.org/D3316
    6575f4b6
TcGenFunctor.hs 46.1 KB