
Hello, On Saturday 24 February 2007 15:02, Neil Mitchell wrote:
Hi Thorkil,
I looked at this code a few days ago, and I really couldn't figure out what was going on! As far as I can tell:
Package.hs, line 64:
case (local,res) of ([x], _) -> return x (_, [x]) -> return x ([], []) -> raiseError $ ErrorFileNone noErrPos askMsg file rs (as, bs) -> raiseError $ ErrorFileMany noErrPos askMsg file (map anyOne (as ++ bs)) ... Your patch makes the last case demand (:) for both arguments - since case statements in Haskell match top to bottom, that means you'll just end up with a crash otherwise. The actual property is that one must be non-empty, not both. I really couldn't see what this is failing, but I'll have a quick Debug.Trace fest later. ...
You are right, my patch is wrong. Here are some additional notes: At some point, I had getModule reporting additional information using: ... raiseError $ ErrorFileMany noErrPos (askMsg++" (as,bs)=<"++show (as,bs)++">") file (map anyOne (as ++ bs)) This resulted in the following: Thorkil-Naurs-Computer:~/tn/test/Yhc/multiple thorkilnaur$ yhc T1.hs yhc: Error: Found file multiple times, T2 Reason: imported from Main (as,bs)=<([],[])> Found in: Thorkil-Naurs-Computer:~/tn/test/Yhc/multiple thorkilnaur$ This indicates that the ghc-6.6 pattern matching is not working as we expect. Best regards Thorkil