David, the comment in the test says what crashed ghc-4.04proto: "the parens after the for-all fooled it". So I suppose that "forall b. StateMonad (a,b) m => m a" worked fine but "forall b. (StateMonad (a,b) m => m a)" crashed GHC. This test is in a should_fail folder, which means that the compilation of this file should fail and GHC should report an error. Take a look at the rnfail018.stderr file. It says what output do we expect on the standard error. You can see that we expect a and m to be out of scope, which according to your mail is exactly what happens. Note also the file name - rnfail - which stands for "renamer failure" (you can see this also from names of directories).
Janek Dnia poniedziałek, 8 września 2014, David Feuer napisał: > 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 _______________________________________________ ghc-devs mailing list ghc-devs@haskell.org http://www.haskell.org/mailman/listinfo/ghc-devs