Skip to content
  • Simon Peyton Jones's avatar
    Better solving for representational equalities · 5a66d574
    Simon Peyton Jones authored
    This patch adds a bit of extra solving power for representational
    equality constraints to fix Trac #14333
    
    The main changes:
    
    * Fix a buglet in TcType.isInsolubleOccursCheck which wrongly
      reported a definite occurs-check error for (a ~R# b a)
    
    * Get rid of TcSMonad.emitInsolubles.  It had an ad-hoc duplicate-removal
      piece that is better handled in interactIrred, now that insolubles
      are Irreds.
    
      We need a little care to keep inert_count (which does not include
      insolubles) accurate.
    
    * Refactor TcInteract.solveOneFromTheOther, to return a much simpler
      type.  It was just over-complicated before.
    
    * Make TcInteract.interactIrred look for constraints that match
      either way around, in TcInteract.findMatchingIrreds
    
    This wasn't hard and it cleaned up quite a bit of code.
    5a66d574