Template Haskell doesn't allow `newName "type"`
Using type as a name is, of course, forbidden. OTOH, type_1 is allowed as a name.
However, using GHC 7.10.1 and ghc --make T.hs on files:
-- T.hs
{-# LANGUAGE TemplateHaskell #-}
module T where
import Q
test
-- Q.hs
module Q where
import Language.Haskell.TH
test :: Q [Dec]
test = do
t <- newName "type"
return
[FunD t
[Clause
[]
(NormalB $ LitE $ CharL 't')
[]]]
Leads to the following error:
$ ghc --make -ddump-splices T.hs
[2 of 2] Compiling T ( T.hs, T.o )
T.hs:6:1:
Illegal variable name: ‘type’
When splicing a TH declaration: ident_0 type_1 = type_1
The above example works fine for GHC 7.8.4, so it's a regression.
Reference: https://github.com/yesodweb/persistent/issues/412
Trac metadata
| Trac field | Value |
|---|---|
| Version | 7.10.1 |
| Type | Bug |
| TypeOfFailure | OtherFailure |
| Priority | normal |
| Resolution | Unresolved |
| Component | Template Haskell |
| Test case | |
| Differential revisions | |
| BlockedBy | |
| Related | |
| Blocking | |
| CC | |
| Operating system | |
| Architecture |