patch applied (ghc): Do pre-subsumption in the main subsumption check

Simon Peyton Jones simonpj at microsoft.com
Fri Aug 4 18:05:09 EDT 2006


Fri Aug  4 14:49:42 PDT 2006  simonpj at microsoft.com
  * Do pre-subsumption in the main subsumption check
  
  This patch improves the subsumption check (in TcUnify.tc_sub) so that
  it does pre-subsumption first.  The key code is in the case with
  guard (isSigmaTy actual_ty); note the new call to preSubType.
  
  Shorn of details, the question is this.  Should this hold?
  
  	forall a. a->a   <=   Int -> (forall b. Int)
  
  Really, it should; just instantiate 'a' to Int.  This is just what
  the pre-subsumption phase (which used in function applications),
  will do.
  
  I did a bit of refactoring to achieve this.
  
  Fixes Trac #821.  Test tc205 tests.
  

    M ./compiler/rename/RnExpr.lhs -1 +1
    M ./compiler/typecheck/TcExpr.lhs -31 +12
    M ./compiler/typecheck/TcMType.lhs -9 +2
    M ./compiler/typecheck/TcPat.lhs -2 +1
    M ./compiler/typecheck/TcType.lhs -2 +2
    M ./compiler/typecheck/TcUnify.lhs -58 +125


More information about the Cvs-ghc mailing list