When I compile this with 7.8.3, it gives an error message saying that type variables a and m are not in scope. If I add them to the forall, it tells me I need FlexibleContexts. If I add that, then it gives me an error about an ambiguous type variable. Clearly, something crashed ghc-4.04proto, but there's no indication of what that was. If this test is still at all relevant, it probably needs to be updated to target something more narrowly.

The program:

{-# LANGUAGE MultiParamTypeClasses, ExplicitForAll #-}
module ShouldFail where
-- !!! For-all with parens
-- This one crashed ghc-4.04proto; the parens after the for-all fooled it

class Monad m => StateMonad s m where
   getState :: m s

setState0 :: forall b. (StateMonad (a,b) m => m a)
setState0 = getState >>= \ (l,_r) -> return l

David Feuer