Scoping error in Template Haskell antiquotations
Related to #5375 (closed), #5037 (closed). When compiling and running the following:
{-# LANGUAGE TemplateHaskell #-}
import Language.Haskell.TH
$( [d| g = 0
h = $( return $ LamE [VarP (mkName "g")] (VarE 'g) ) |] )
main = print (h 1)
the splice should be
g' = 0
h = \g -> g'
and so the program should print 0 at runtime. Instead, it prints 1.
This is with both ghc-7.0.3 and ghc-7.3.20110803.
Trac metadata
| Trac field | Value |
|---|---|
| Version | 7.0.4 |
| Type | Bug |
| TypeOfFailure | OtherFailure |
| Priority | normal |
| Resolution | Unresolved |
| Component | Compiler |
| Test case | |
| Differential revisions | |
| BlockedBy | |
| Related | |
| Blocking | |
| CC | |
| Operating system | |
| Architecture |