@@ -260,7 +260,7 @@ import Data.Coerce
260import GHC.Base (build)
260import GHC.Base (build)
261import qualified GHC.CString as GHC
261import qualified GHC.CString as GHC
262import GHC.Exts (Addr#, ByteArray#)
262import GHC.Exts (Addr#, ByteArray#)
263−import GHCJS.Prim (JSVal (..), unpackJSString#)
263+import GHCJS.Prim (unsafeUnpackJSString#)
265unpack :: Text -> String
265unpack :: Text -> String
266unpack = coerce JSS.unpack
266unpack = coerce JSS.unpack
@@ -277,7 +277,9 @@ singleton = coerce JSS.singleton
277 unstream (S.singleton (safe a)) = singleton a
277 unstream (S.singleton (safe a)) = singleton a
280+{-# RULES "inlineJSString" forall s.
280−{-# RULES "inlineJSString" forall s. pack (GHC.Base.build (GHC.unpackFoldrCString# s)) = Text (JSString (unsafeDupablePerformIO (unpackJSString# s))) #-}
281+ pack (GHC.Base.build (GHC.unpackFoldrCString# s)) =
282+ Text (JSString (unsafeUnpackJSString# s)) #-}
282-- | /O(n)/ Convert a literal string into a JSString. Subject to fusion.
284-- | /O(n)/ Convert a literal string into a JSString. Subject to fusion.
283unpackCString# :: Addr# -> Text
285unpackCString# :: Addr# -> Text
@@ -300,6 +302,12 @@ unpackCString# addr# = Text $ SJS.unstream (SJS.streamCString# addr#)
300 unstream (S.map safe (S.streamList [a]))
302 unstream (S.map safe (S.streamList [a]))
301 = singleton a #-}
303 = singleton a #-}
305+#if MIN_VERSION_ghcjs_prim(0,1,1)
306+{-# RULES "TEXT literal prim" [0] forall a.
307+ unpackCString# a = Text (JSString (unsafeUnpackJSString# a))
303---------------------------------------------------------------------
311---------------------------------------------------------------------
304-- $character_definition
312-- $character_definition