#ifdef GHCI
import RdrHsSyn ( RdrNameHsExpr )
import Rename ( renameExpr )
-import StringBuffer ( stringToStringBuffer, freeStringBuffer )
import Unique ( Uniquable(..) )
import Type ( Type, splitTyConApp_maybe )
import PrelNames ( ioTyConKey )
import HsSyn
-import StringBuffer ( hGetStringBuffer )
+import StringBuffer ( hGetStringBuffer,
+ stringToStringBuffer, freeStringBuffer )
import Parser
import Lex ( PState(..), ParseResult(..) )
import SrcLoc ( mkSrcLoc )
loc = mkSrcLoc (_PK_ src_filename) 1 } of {
PFailed err -> do { hPutStrLn stderr (showSDoc err);
--- Not yet implemented in <4.11 freeStringBuffer buf;
+ freeStringBuffer buf;
return Nothing };
POk _ rdr_module@(HsModule mod_name _ _ _ _ _ _) -> do {
-- creation/destruction
hGetStringBuffer, -- :: FilePath -> IO StringBuffer
-#ifdef GHCI
stringToStringBuffer, -- :: String -> IO StringBuffer
freeStringBuffer, -- :: StringBuffer -> IO ()
-#endif
-- Lookup
currentChar, -- :: StringBuffer -> Char
#endif
import Foreign
import Char ( chr )
+import Panic ( panic )
-- urk!
#include "../lib/std/cbits/stgerror.h"
-- Turn a String into a StringBuffer
\begin{code}
-#ifdef GHCI
stringToStringBuffer :: String -> IO StringBuffer
+freeStringBuffer :: StringBuffer -> IO ()
+
+#if __GLASGOW_HASKELL__ >= 411
stringToStringBuffer str =
do let sz@(I# sz#) = length str + 1
(Ptr a#) <- mallocBytes sz
writeCharOffAddr a 0 c
fill_in cs (a `plusAddr` 1)
-freeStringBuffer :: StringBuffer -> IO ()
freeStringBuffer (StringBuffer a# _ _ _) = Foreign.free (Ptr a#)
+#else
+stringToStringBuffer = panic "stringToStringBuffer: not implemented"
+freeStringBuffer sb = return ()
#endif
+
\end{code}
-----------------------------------------------------------------------------