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.
Showing with 143 additions and 103 deletions