Skip to content
  • Simon Peyton Jones's avatar
    Do type refinement in TcIface · f5ca07d6
    Simon Peyton Jones authored
    This commit fixes a bug in 6.4.1 and the HEAD.  Consider this code,
    recorded **in an interface file**
    
        \(x::a) -> case y of 
    	         MkT -> case x of { True -> ... }
    (where MkT forces a=Bool)
    
    In the "case x" we need to know x's type, because we use that
    to find which module to look for "True" in. x's type comes from
    the envt, so we must refine the envt.  
    
    The alternative would be to record more info with an IfaceCase,
    but that would change the interface file format.
    
    (This stuff will go away when we have proper coercions.)
    	
    f5ca07d6