Skip to content
  • Simon Peyton Jones's avatar
    Remove knot-tying bug in TcHsSyn.zonkTyVarOcc · 565ef4cc
    Simon Peyton Jones authored
    There was a subtle knot-tying bug in TcHsSyn.zonkTyVarOcc, revealed
    in Trac #15552.
    
    I fixed it by
    
    * Eliminating the short-circuiting optimisation in zonkTyVarOcc,
      instead adding a finite map to get sharing of zonked unification
      variables.
    
      See Note [Sharing when zonking to Type] in TcHsSyn
    
    * On the way I /added/ the short-circuiting optimisation to
      TcMType.zonkTcTyVar, which has no such problem.  This turned
      out (based on non-systematic measurements) to be a modest win.
    
      See Note [Sharing in zonking] in TcMType
    
    On the way I renamed some of the functions in TcHsSyn:
    
    * Ones ending in "X" (like zonkTcTypeToTypeX) take a ZonkEnv
    
    * Ones that do not end in "x" (like zonkTcTypeToType), don't.
      Instead they whiz up an empty ZonkEnv.
    565ef4cc