Monotype check for case branches should not recur through arrows
Consider this module:
{-# LANGUAGE RankNTypes #-}
module Bug where
hr :: (forall a. a -> a) -> ()
hr _ = ()
foo x = case x of () -> hr
bar x = case x of True -> hr
False -> hr
On HEAD, foo is accepted while bar is rejected. (This is not a change from previous behavior.) The reason is that GHC requires case branches (when there are more than 1; and when the result of the case is being inferred, not checked) to have monotypes, lest it be left with the task of finding the most general supertype of a bunch of polytypes. However, now that we have simplified subsumption, it is draconian to propagate the monotype check past arrows. I thus claim that bar should be accepted.