Hello!
I have a feeling this is probably some silly mistake, but I can’t figure it out.
Given this QuasiQuoter
[database|
database testDb
table data_types
type_text text
type_integer integer
type_bigint bigint
type_boolean boolean
|]
I get an error.
test/Test/Db.hs:8:11: error:
• Type constructor ‘QuasiQuoter’ used as a constructor-like thing
• In the expression:
QuasiQuoter
{quotePat = error "quasiquoter used in pattern context",
quoteType = error "quasiquoter used in type context",
quoteDec = error "quasiquoter used in declaration context",
quoteExp = dbSql}
In an equation for ‘sql’:
sql
= QuasiQuoter
{quotePat = error "quasiquoter used in pattern context",
quoteType = error "quasiquoter used in type context",
quoteDec = error "quasiquoter used in declaration context",
quoteExp = dbSql}
When I expand the database
QuasiQuoter (expand TemplateHaskell Splice
from HLS) I get this.
dbSql :: String -> Q Exp
dbSql
= unsafeSql
(((Database ((unpackCStringLen# "testDb"#) 6))
...
sql :: QuasiQuoter
sql
= QuasiQuoter
{quotePat = error "quasiquoter used in pattern context",
quoteType = error "quasiquoter used in type context",
quoteDec = error "quasiquoter used in declaration context",
quoteExp = dbSql}
The sql
QuasiQuoter looks legit to me, in fact if I don’t generate it with TH and just write it by hand like this
[database|
database testDb
table data_types
type_text text
type_integer integer
type_bigint bigint
type_boolean boolean
|]
sql :: QuasiQuoter
sql =
QuasiQuoter
{ quotePat = error "quasiquoter used in pattern context"
, quoteType = error "quasiquoter used in type context"
, quoteDec = error "quasiquoter used in declaration context"
, quoteExp = dbSql
}
it works just fine.