Amazingly, the external-core parser was parsing recursive
groups with only one binding as non-recursive.
Fixed now (in CVS)
Simon
| -Original Message-
| From: Kirsten Chevalier [mailto:[EMAIL PROTECTED]]
| Sent: 20 May 2002 03:01
| To: [EMAIL PROTECTED]
| Subject: Bug in external Core front end (again)?
|
|
| When I compile the following program with -fext-core:
|
|
| main = do
| s - getLine
| putStr (show (foo s))
|
| foo xs = go xs
| where go [] = []
| go (x:xs) = (x:(go xs))
|
|
| and then try to compile the resulting .hcr file, I get the
| following error
| message:
|
| Failed to find interface decl for `Main.go'
| from module `Main'
|
| I'm using a copy of GHC built from CVS sources on May 13, and
| the .hcr file is as follows:
|
| %module Main
| zddShow :: GHCziShow.ZCTShow (GHCziBase.ZMZN GHCziBase.Char) =
| GHCziShow.zdfShowZMZN @ GHCziBase.Char GHCziShow.zdfShowChar;
| main1 :: GHCziPrim.ZLzmzgZR
| (GHCziPrim.Statezh GHCziPrim.RealWorld)
| (GHCziPrim.Z2H
| (GHCziPrim.Statezh GHCziPrim.RealWorld)
| GHCziBase.Z0T) =
| %case GHCziIOBase.zdfMonadIO
| %of (tpl::GHCziBase.ZCTMonad GHCziIOBase.IO)
| {GHCziBase.ZCDMonad
|(tpl1::%forall a b . GHCziPrim.ZLzmzgZR
| (GHCziPrim.ZLzmzgZR
|(GHCziPrim.Statezh GHCziPrim.RealWorld)
|(GHCziPrim.Z2H (GHCziPrim.Statezh
| GHCziPrim.RealWorld) a))
| (GHCziPrim.ZLzmzgZR
|(GHCziPrim.ZLzmzgZR
| a
| (GHCziPrim.ZLzmzgZR
| (GHCziPrim.Statezh GHCziPrim.RealWorld)
| (GHCziPrim.Z2H
| (GHCziPrim.Statezh GHCziPrim.RealWorld) b)))
|(GHCziPrim.ZLzmzgZR
| (GHCziPrim.Statezh GHCziPrim.RealWorld)
| (GHCziPrim.Z2H (GHCziPrim.Statezh
| GHCziPrim.RealWorld) b
|(tpl2::%forall a b . GHCziPrim.ZLzmzgZR
| (GHCziPrim.ZLzmzgZR
|(GHCziPrim.Statezh GHCziPrim.RealWorld)
|(GHCziPrim.Z2H (GHCziPrim.Statezh
| GHCziPrim.RealWorld) a))
| (GHCziPrim.ZLzmzgZR
|(GHCziPrim.ZLzmzgZR
| (GHCziPrim.Statezh GHCziPrim.RealWorld)
| (GHCziPrim.Z2H (GHCziPrim.Statezh
| GHCziPrim.RealWorld) b))
|(GHCziPrim.ZLzmzgZR
| (GHCziPrim.Statezh GHCziPrim.RealWorld)
| (GHCziPrim.Z2H (GHCziPrim.Statezh
| GHCziPrim.RealWorld) b
|(tpl3::%forall a . GHCziPrim.ZLzmzgZR
| a
| (GHCziPrim.ZLzmzgZR
| (GHCziPrim.Statezh GHCziPrim.RealWorld)
| (GHCziPrim.Z2H (GHCziPrim.Statezh
| GHCziPrim.RealWorld) a)))
|(tpl4::%forall a . GHCziPrim.ZLzmzgZR
| (GHCziBase.ZMZN GHCziBase.Char)
| (GHCziPrim.ZLzmzgZR
| (GHCziPrim.Statezh GHCziPrim.RealWorld)
| (GHCziPrim.Z2H (GHCziPrim.Statezh
| GHCziPrim.RealWorld) a))) -
|tpl1 @ (GHCziBase.ZMZN GHCziBase.Char) @ GHCziBase.Z0T
|SystemziIO.getLine
|(\ (s::GHCziBase.ZMZN GHCziBase.Char) -
| %let %rec
| {go :: GHCziPrim.ZLzmzgZR
| (GHCziBase.ZMZN GHCziBase.Char)
| (GHCziBase.ZMZN GHCziBase.Char) =
| \ (ds::GHCziBase.ZMZN GHCziBase.Char) -
| %case ds %of (wild::GHCziBase.ZMZN
| GHCziBase.Char)
| {GHCziBase.ZC
|(x::GHCziBase.Char)
| (xs::GHCziBase.ZMZN GHCziBase.Char) -
| GHCziBase.zdwZC @ GHCziBase.Char
| x (go xs);
|GHCziBase.ZMZN -
| GHCziBase.zdwZMZN @ GHCziBase.Char}}
| %in SystemziIO.putStr
| (%case zddShow
| %of (tpl5::GHCziShow.ZCTShow (GHCziBase.ZMZN
| GHCziBase.Char))
|{GHCziShow.ZCDShow
| (tpl6::GHCziPrim.ZLzmzgZR
|GHCziBase.Int
|(GHCziPrim.ZLzmzgZR
| (GHCziBase.ZMZN GHCziBase.Char)
| (GHCziPrim.ZLzmzgZR
| (GHCziBase.ZMZN GHCziBase.Char)
| (GHCziBase.ZMZN GHCziBase.Char
| (tpl7::GHCziPrim.ZLzmzgZR
|(GHCziBase.ZMZN GHCziBase.Char)
|(GHCziBase.ZMZN GHCziBase.Char))
| (tpl8::GHCziPrim.ZLzmzgZR