[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