@@ -39,6 +39,8 @@ import Data.ByteString (ByteString)
3939import qualified Data.ByteString as BS
4040import Control.Concurrent
4141import Data.Coerce
42+import Text.Encoding.Z
43+import Data.Monoid
4244
4345import Reflex.Dom (WithWebView, askWebView, runWithWebView, unWebViewSingleton)
4446
@@ -377,9 +379,10 @@ mkJSFFI :: Safety -> String -> Q ([Dec], Exp)
377379#ifdef __GHCJS__
378380mkJSFFI safety body = do
379381 -- n <- newName "jsffi" --TODO: Should use newName, but that doesn't seem to work with ghcjs
380− let n = mkName $ "jsffi_" ++ show (abs (hash (show safety, body)))
382+ l <- location
383+ n <- newName $ "jsffi_" <> zEncodeString (loc_package l <> ":" <> loc_module l) <> "_" <> show (abs (hash (show safety, body)))
381384 t <- [t| JSFFI_Internal |]
382− let wrappedBody = "(function(){ return (" ++ body ++ "); }).apply($1)"
385+ let wrappedBody = "(function(){ return (" <> body <> "); }).apply($1)"
383386 let decs = [ForeignD $ ImportF JavaScript safety wrappedBody n t]
384387 e <- [| JSFFI $(varE n) |]
385388 return (decs, e)
@@ -398,5 +401,5 @@ parseType (ForallT _ [AppT (AppT (ConT monadJs) (VarT _)) (VarT m)] funType)
398401 in (arg : args, result)
399402 AppT (VarT m') result
400403 | m' == m -> ([], result)
401− _ -> error $ "parseType: can't parse type " ++ show t
402−parseType t = error $ "parseType: can't parse type " ++ show t
404+ _ -> error $ "parseType: can't parse type " <> show t
405+parseType t = error $ "parseType: can't parse type " <> show t