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
[email protected]
http://www.haskell.org/mailman/listinfo/ghc-devs