Skip to content

Refactor CtEvidence into Given/Wanted

sheaf requested to merge sheaf/ghc:T25848 into master

Ticket: #25848 (closed)

This MR is a simple refactoring which splits up CtEvidence, giving each constructor its own datatype:

data CtEvidence
  = CtGiven  GivenCtEvidence
  | CtWanted WantedCtEvidence

data GivenCtEvidence =
  GivenCt
    { ctev_pred :: TcPredType
    , ctev_evar :: EvVar
    , ctev_loc  :: CtLoc }

data WantedCtEvidence =
  WantedCt
    { ctev_pred      :: TcPredType
    , ctev_dest      :: TcEvDest
    , ctev_loc       :: CtLoc
    , ctev_rewriters :: RewriterSet }

This enables a few minor simplifications in the code, notably removing a panic from GHC.Tc.Solver.Solve.solveWantedForAll_implic.

Merge request reports

Loading