import HsSyn
import RdrName ( nameRdrName )
-import StringBuffer ( hGetStringBuffer, freeStringBuffer )
+import StringBuffer ( hGetStringBuffer )
import Parser
-import Lex ( ParseResult(..), ExtFlags(..), mkPState )
+import Lexer ( P(..), ParseResult(..), mkPState, showPFailed )
import SrcLoc ( mkSrcLoc )
import TcRnDriver ( checkOldIface, tcRnModule, tcRnExtCore, tcRnIface )
import RnEnv ( extendOrigNameCache )
import Desugar
import Flattening ( flatten )
import SimplCore
-import CoreUtils ( coreBindsSize )
import TidyPgm ( tidyCorePgm )
import CorePrep ( corePrepPgm )
-import StgSyn
import CoreToStg ( coreToStg )
import SimplStg ( stg2stg )
import CodeGen ( codeGen )
import ParserCoreUtils
import FiniteMap ( emptyFM )
import Name ( nameModule )
-import NameEnv ( emptyNameEnv )
-import NameSet ( emptyNameSet )
import Module ( Module, ModLocation(..), showModMsg )
import FastString
import Maybes ( expectJust )
showModMsg have_object mod location);
-- Typecheck
- (pcs_tc, maybe_tc_result) <- tcRnIface hsc_env pcs_ch old_iface ;
+ (pcs_tc, maybe_tc_result) <- _scc_ "tcRnIface"
+ tcRnIface hsc_env pcs_ch old_iface ;
case maybe_tc_result of {
Nothing -> return (HscFail pcs_tc);
_scc_ "Parser" do
buf <- hGetStringBuffer src_filename
- let exts = ExtFlags {glasgowExtsEF = dopt Opt_GlasgowExts dflags,
- ffiEF = dopt Opt_FFI dflags,
- withEF = dopt Opt_With dflags,
- parrEF = dopt Opt_PArr dflags}
- loc = mkSrcLoc (mkFastString src_filename) 1
+ let loc = mkSrcLoc (mkFastString src_filename) 1 0
- case parseModule buf (mkPState loc exts) of {
+ case unP parseModule (mkPState buf loc dflags) of {
- PFailed err -> do { hPutStrLn stderr (showSDoc err);
- freeStringBuffer buf;
- return Nothing };
+ PFailed l1 l2 err -> do { hPutStrLn stderr (showPFailed l1 l2 err);
+ return Nothing };
POk _ rdr_module -> do {
buf <- stringToStringBuffer str
- let exts = ExtFlags {glasgowExtsEF = dopt Opt_GlasgowExts dflags,
- ffiEF = dopt Opt_FFI dflags,
- withEF = dopt Opt_With dflags,
- parrEF = dopt Opt_PArr dflags}
- loc = mkSrcLoc FSLIT("<interactive>") 1
+ let loc = mkSrcLoc FSLIT("<interactive>") 1 0
- case parseStmt buf (mkPState loc exts) of {
+ case unP parseStmt (mkPState buf loc dflags) of {
- PFailed err -> do { hPutStrLn stderr (showSDoc err);
--- Not yet implemented in <4.11 freeStringBuffer buf;
- return Nothing };
+ PFailed l1 l2 err -> do { hPutStrLn stderr (showPFailed l1 l2 err);
+ return Nothing };
-- no stmt: the line consisted of just space or comments
POk _ Nothing -> return Nothing;
--ToDo: can't free the string buffer until we've finished this
-- compilation sweep and all the identifiers have gone away.
- --freeStringBuffer buf;
dumpIfSet_dyn dflags Opt_D_dump_parsed "Parser" (ppr rdr_stmt);
return (Just rdr_stmt)
}}
myParseIdentifier dflags str
= do buf <- stringToStringBuffer str
- let exts = ExtFlags {glasgowExtsEF = dopt Opt_GlasgowExts dflags,
- ffiEF = dopt Opt_FFI dflags,
- withEF = dopt Opt_With dflags,
- parrEF = dopt Opt_PArr dflags}
- loc = mkSrcLoc FSLIT("<interactive>") 1
+ let loc = mkSrcLoc FSLIT("<interactive>") 1 0
+ case unP parseIdentifier (mkPState buf loc dflags) of
- case parseIdentifier buf (mkPState loc exts) of
+ PFailed l1 l2 err -> do { hPutStrLn stderr (showPFailed l1 l2 err);
+ return Nothing }
- PFailed err -> do { hPutStrLn stderr (showSDoc err);
- freeStringBuffer buf;
- return Nothing }
-
- POk _ rdr_name -> do { --should, but can't: freeStringBuffer buf;
- return (Just rdr_name) }
+ POk _ rdr_name -> return (Just rdr_name)
#endif
\end{code}