The following code snippet duplicates a problem I'm getting with the new
compiler. Previous versions (ghc 4.08.x) and Hugs do not have the problem:
module Bug
where
class CExpr c where
count :: TEnv c -> Int
data CExpr c => Expr c = Subexpr [Expr c] | Constant Char
data CExpr c => Env c = EnvData c
type TEnv c = Env c
Attempting to compile the above code causes the following error:
ghc-5.00: panic! (the `impossible' happened, GHC version 5.00):
<<loop>>
Please report it as a compiler bug to [EMAIL PROTECTED],
or http://sourceforge.net/projects/ghc/.
If I expand out the use of TEnv and just use Env directly the problem goes
away. For the above example this is no problem, but in my real code it
would be nice to not have to do this as the type has to be expanded out in
quite a few places and the rhs is much more complex.
I'm running ghc 5 on FreeBSD 3.2 with gcc 2.7.2.1
Here's a typescript of the compile session:
Script started on Sat May 5 10:14:53 2001
sh-2.03$ ghc -v -c Bug.hs
Glasgow Haskell Compiler, Version 5.00, for Haskell 98, compiled by GHC
version 5.00
Using package config file: /usr/local/lib/ghc-5.00/package.conf
Hsc static
flags: -static -fignore-interface-pragmas -fomit-interface-pragmas -fdo-lamb
da-eta-expansion -flet-no-escape
*** Ineffective C pre-processor
echo '{-# LINE 1 "Bug.hs" #-}' > /tmp/ghc51808.hspp && cat Bug.hs >>
/tmp/ghc51808.hspp
*** Checking old interface for hs = Just "Bug.hs", hspp = Just
"/tmp/ghc51808.hspp":
Compiling Bug ( Bug.hs, Bug.o )
*** Parser:
*** Renamer:
*** Typechecker:
Removing: /tmp/ghc51808.s
Warning: can't remove tmp file /tmp/ghc51808.s
Removing: /tmp/ghc51808.hspp
ghc-5.00: panic! (the `impossible' happened, GHC version 5.00):
<<loop>>
Please report it as a compiler bug to [EMAIL PROTECTED],
or http://sourceforge.net/projects/ghc/.
sh-2.03$ exit
exit
Script done on Sat May 5 10:15:08 2001
_______________________________________________
Glasgow-haskell-bugs mailing list
[EMAIL PROTECTED]
http://www.haskell.org/mailman/listinfo/glasgow-haskell-bugs