@@ -260,7 +260,7 @@ import Data.Coerce
260260import GHC.Base (build)
261261import qualified GHC.CString as GHC
262262import GHC.Exts (Addr#, ByteArray#)
263−import GHCJS.Prim (JSVal (..), unpackJSString#)
263+import GHCJS.Prim (unsafeUnpackJSString#)
264264
265265unpack :: Text -> String
266266unpack = coerce JSS.unpack
@@ -277,7 +277,9 @@ singleton = coerce JSS.singleton
277277 unstream (S.singleton (safe a)) = singleton a
278278 #-}
279279
280−{-# RULES "inlineJSString" forall s. pack (GHC.Base.build (GHC.unpackFoldrCString# s)) = Text (JSString (unsafeDupablePerformIO (unpackJSString# s))) #-}
280+{-# RULES "inlineJSString" forall s.
281+ pack (GHC.Base.build (GHC.unpackFoldrCString# s)) =
282+ Text (JSString (unsafeUnpackJSString# s)) #-}
281283
282284-- | /O(n)/ Convert a literal string into a JSString. Subject to fusion.
283285unpackCString# :: Addr# -> Text
@@ -300,6 +302,12 @@ unpackCString# addr# = Text $ SJS.unstream (SJS.streamCString# addr#)
300302 unstream (S.map safe (S.streamList [a]))
301303 = singleton a #-}
302304
305+#if MIN_VERSION_ghcjs_prim(0,1,1)
306+{-# RULES "TEXT literal prim" [0] forall a.
307+ unpackCString# a = Text (JSString (unsafeUnpackJSString# a))
308+ #-}
309+#endif
310+
303311---------------------------------------------------------------------
304312-- $character_definition
305313--