Panic in parsing a stmt
Daniel Gorin (dgorin@dc.uba.ar) reports: I'm trying to make the hint library work also with ghc 7 and I'm having problems with some test-cases that are now raising exceptions. I've been able to reduce the problem to a small example. The program below runs ghc in interpreter-mode and attempts to parse an statement using ghc's parseStmt function; the particular statement is a let-expression with a \n in the middle. The observed behaviour is:
$ ghc-6.12.1 -fforce-recomp --make -package ghc -cpp -Wall d.hs && ./d
[1 of 1] Compiling Main ( d.hs, d.o )
Linking d ...
let {e = let x = ()
in x ;} in e
Ok
$ ghc-7.0.1 -fforce-recomp --make -package ghc -cpp -Wall d.hs && ./d
[1 of 1] Compiling Main ( d.hs, d.o )
Linking d ...
let {e = let x = ()
in x ;} in e
d: d: panic! (the 'impossible' happened)
(GHC version 7.0.1 for i386-apple-darwin):
srcLocCol <no location info>
Please report this as a GHC bug:
http://www.haskell.org/ghc/reportabug
Is it a regression or should I be doing this some other way?
Thanks, Daniel
-- d.hs
import qualified GHC
import qualified MonadUtils as GHC ( liftIO ) import qualified StringBuffer as GHC import qualified Lexer as GHC import qualified Parser as GHC import qualified GHC.Paths
main :: IO ()
main = GHC.runGhcT (Just GHC.Paths.libdir) $ do
-- initialize
df0 <- GHC.getSessionDynFlags
_ <- GHC.setSessionDynFlags df0{GHC.ghcMode = GHC.CompManager,
GHC.hscTarget = GHC.HscInterpreted,
GHC.ghcLink = GHC.LinkInMemory,
GHC.verbosity = 0}
df1 <- GHC.getSessionDynFlags
-- runParser
let expr = "let {e = let x = ()\nin x ;} in e"
GHC.liftIO $ putStrLn expr
buf <- GHC.liftIO $ GHC.stringToStringBuffer expr
let p_res = GHC.unP GHC.parseStmt (mkPState df1 buf GHC.noSrcLoc)
case p_res of
GHC.POk{} -> GHC.liftIO $ putStrLn "Ok"
GHC.PFailed{} -> GHC.liftIO $ putStrLn "Failed"
where
#if __GLASGOW_HASKELL__ >= 700
mkPState = GHC.mkPState
#else
mkPState = \a b c -> GHC.mkPState b c a #endif
Trac metadata
Trac field | Value |
---|---|
Version | 7.0.1 |
Type | Bug |
TypeOfFailure | OtherFailure |
Priority | normal |
Resolution | Unresolved |
Component | Compiler |
Test case | |
Differential revisions | |
BlockedBy | |
Related | |
Blocking | |
CC | |
Operating system | |
Architecture |