EvilSplicer hacks for persistent

This commit is contained in:
Joey Hess 2015-02-22 15:43:59 -04:00
parent 52cba8242b
commit a419a56c45
2 changed files with 9 additions and 0 deletions

View file

@ -301,6 +301,7 @@ expandExpressionSplice sp lls = concat [before, spliced:padding, end]
{- Tweaks code output by GHC in splices to actually build. Yipes. -} {- Tweaks code output by GHC in splices to actually build. Yipes. -}
mangleCode :: String -> String mangleCode :: String -> String
mangleCode = flip_colon mangleCode = flip_colon
. persist_dequalify_hack
. remove_unnecessary_type_signatures . remove_unnecessary_type_signatures
. lambdaparenhack . lambdaparenhack
. lambdaparens . lambdaparens
@ -554,6 +555,13 @@ mangleCode = flip_colon
- The ; is added by case_layout. -} - The ; is added by case_layout. -}
flip_colon = replace "; : _ " "; _ : " flip_colon = replace "; : _ " "; _ : "
{- TH for persistent has some qualified symbols in places
- that are not allowed. -}
persist_dequalify_hack = replace "Database.Persist.TH.++" "++"
. replace "Database.Persist.Sql.Class.sqlType" "sqlType"
. replace "Database.Persist.Class.PersistField.toPersistValue" "toPersistValue"
. replace "Database.Persist.Class.PersistField.fromPersistValue" "fromPersistValue"
{- Embedded files use unsafe packing, which is problimatic {- Embedded files use unsafe packing, which is problimatic
- for several reasons, including that GHC sometimes omits trailing - for several reasons, including that GHC sometimes omits trailing
- newlines in the file content, which leads to the wrong byte - newlines in the file content, which leads to the wrong byte

View file

@ -35,6 +35,7 @@ import qualified Data.ByteString.Unsafe
import qualified Data.ByteString.Char8 import qualified Data.ByteString.Char8
import qualified Database.Persist.Class as Database.Persist.Class.PersistField import qualified Database.Persist.Class as Database.Persist.Class.PersistField
import qualified Database.Persist.Sql as Database.Persist.Sql.Class import qualified Database.Persist.Sql as Database.Persist.Sql.Class
import qualified Database.Persist.Sql.Class as Database.Persist.Types.Base
{- End EvilSplicer headers. -} {- End EvilSplicer headers. -}