[GHC] #925: Access to old variable via Template Haskell blows
up ghci
GHC
trac at galois.com
Mon Oct 9 20:27:42 EDT 2006
#925: Access to old variable via Template Haskell blows up ghci
-------------------------------+--------------------------------------------
Reporter: guest | Owner:
Type: bug | Status: new
Priority: low | Milestone: 6.8
Component: Template Haskell | Version: 6.4.2
Severity: normal | Resolution:
Keywords: | Os: Unknown
Difficulty: Unknown | Architecture: Unknown
-------------------------------+--------------------------------------------
Changes (by igloo):
* milestone: => 6.8
Old description:
> When you try to access a replaced variable name via Template Haskell in
> GHCi, GHCi panics:
>
> {{{
> / _ \ /\ /\/ __(_)
> / /_\// /_/ / / | | GHC Interactive, version 6.4.2, for Haskell
> 98.
> / /_\\/ __ / /___| | http://www.haskell.org/ghc/
> \____/\/ /_/\____/|_| Type :? for help.
>
> Loading package base-1.0 ... linking ... done.
> Prelude> :m +Language.Haskell.TH
> Prelude Language.Haskell.TH> let f n = n * 2 :: Int
> Prelude Language.Haskell.TH> fName <- runQ [| f |]
> Loading package haskell98-1.0 ... linking ... done.
> Loading package template-haskell-1.0 ... linking ... done.
> Prelude Language.Haskell.TH> $(return $ AppE fName (LitE (IntegerL 7)))
> 14
> Prelude Language.Haskell.TH> let f n = n * 3 :: Int
> Prelude Language.Haskell.TH> fName2 <- runQ [| f |]
> Prelude Language.Haskell.TH> $(return $ AppE fName2 (LitE (IntegerL 7)))
> 21
> Prelude Language.Haskell.TH> $(return $ AppE fName (LitE (IntegerL 7)))
> ghc-6.4.2: panic! (the `impossible' happened, GHC version 6.4.2):
> nameModule f{v a1WB}
>
> Please report this as a compiler bug. See:
> http://www.haskell.org/ghc/reportabug
>
> Prelude Language.Haskell.TH>
> }}}
New description:
When you try to access a replaced variable name via Template Haskell in
GHCi, GHCi panics:
{{{
/ _ \ /\ /\/ __(_)
/ /_\// /_/ / / | | GHC Interactive, version 6.4.2, for Haskell 98.
/ /_\\/ __ / /___| | http://www.haskell.org/ghc/
\____/\/ /_/\____/|_| Type :? for help.
Loading package base-1.0 ... linking ... done.
Prelude> :set -fth
Prelude> :m +Language.Haskell.TH
Prelude Language.Haskell.TH> let f n = n * 2 :: Int
Prelude Language.Haskell.TH> fName <- runQ [| f |]
Loading package haskell98-1.0 ... linking ... done.
Loading package template-haskell-1.0 ... linking ... done.
Prelude Language.Haskell.TH> $(return $ AppE fName (LitE (IntegerL 7)))
14
Prelude Language.Haskell.TH> let f n = n * 3 :: Int
Prelude Language.Haskell.TH> fName2 <- runQ [| f |]
Prelude Language.Haskell.TH> $(return $ AppE fName2 (LitE (IntegerL 7)))
21
Prelude Language.Haskell.TH> $(return $ AppE fName (LitE (IntegerL 7)))
ghc-6.4.2: panic! (the `impossible' happened, GHC version 6.4.2):
nameModule f{v a1WB}
Please report this as a compiler bug. See:
http://www.haskell.org/ghc/reportabug
Prelude Language.Haskell.TH>
}}}
Comment:
This still happens with the HEAD.
I've added `:set -fth` to the reproduction instructions.
--
Ticket URL: <http://hackage.haskell.org/trac/ghc/ticket/925>
GHC <http://www.haskell.org/ghc/>
The Glasgow Haskell Compiler
More information about the Glasgow-haskell-bugs
mailing list