I have the following Haskell modules:
{-# OPTIONS -fglasgow-exts #-}
module GenCG where
gdecls pbname pbniname = [d|
valGetter pbname = "Get" ++ $pbniname
valSetter pbname = "Set" ++ $pbniname
fldGetter pbname = "Get" ++ $pbniname ++ "Field"
fldSetter pbname = "Set" ++ $pbniname ++ "Field"
arrGetter pbname = "Get" ++ $pbniname ++ "ArrayItem"
arrSetter pbname = "Set" ++ $pbniname ++ "ArrayItem"
gvarGetter pbname = "Get" ++ $pbniname ++ "GlobalVar"
gvarSetter pbname = "Set" ++ $pbniname ++ "GlobalVar"
svarGetter pbname = "Get" ++ $pbniname ++ "SharedVar"
svarSetter pbname = "Set" ++ $pbniname ++ "SharedVar"
|]
and
{-# OPTIONS -fglasgow-exts #-}
module SpliceCG where
import GenCG
$(gdecls "integer" [| "Int" |])
$(gdecls "unsignedinteger" [| "Uint" |])
Trying to compile 'spliceCG.hs' I'm recieving the following:
Loading package base-1.0 ... linking ... done.
Loading package haskell98-1.0 ... linking ... done.
Loading package template-haskell-1.0 ... linking ... done.
ghc.EXE: panic! (the `impossible' happened, GHC version 6.4):
plusProv SpliceCG SpliceCG
Please report it as a compiler bug to glasgow-haskell-bugs@haskell.org,
or http://sourceforge.net/projects/ghc/.
If I splice in a single declaration, for example:
{-# OPTIONS -fglasgow-exts #-}
module SpliceCG where
import GenCG
$(gdecls "integer" [| "Int" |])
it is compiled just fine.