Open
Description
I'm pretty sure the module below loads into ghci but fails to parse regardless of the parse extensions. If you have hsx2hs installed and put {-# OPTIONS_GHC -F -pgmFhsx2hs #-} it will fail.
{-# LANGUAGE TemplateHaskell #-}
module Bug where
import Control.Applicative ((<$>))
import Control.Monad.Reader (ask)
import Language.Haskell.Exts.Syntax as S
import Language.Haskell.TH as TH
getOne = undefined
getEQ = undefined
tName = undefined
siteRecords = undefined
type Site = ()
idTypeName = undefined
typ = undefined
rowTypeName = undefined
tableFieldName = undefined
getEventFnName = undefined
data Rec
= Row {recDecl :: S.Decl, recIndexTypes :: [String]}
| Rec {recDecl :: S.Decl} deriving (Eq, Ord, Show)
inferGetByEvent (Row decl@(DataDecl _ _ _ (Ident row@(r:ow)) _ _ _) types) =
do let getBy = mkName $ getEventFnName decl
i <- newName "i"
s <- sigD getBy [t| $(idTypeName decl >>= conT) -> $(typ "Query") $(typ "AppState") (Maybe $(rowTypeName decl >>= conT)) |]
x <- funD getBy [clause [varP i] (normalB [|getOne . getEQ $(varE i) . $(tableFieldName decl >>= varE) <$> ask|]) []]
return [s, x]
inferGetByEvent _ = error "inferGetByEvent"