What is testsuite/tests/rename/should_fail/rnfail018.hs supposed to test?

Jan Stolarek jan.stolarek at p.lodz.pl
Tue Sep 9 06:54:15 UTC 2014


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




More information about the ghc-devs mailing list