module HscMain
( newHscEnv, hscCmmFile
, hscParseIdentifier
+ , hscSimplify
+ , evalComp
+ , hscNormalIface, hscWriteIface, hscOneShot
+ , CompState (..)
#ifdef GHCI
, hscStmt, hscTcExpr, hscKcType
, compileExpr
import Parser
import Lexer
import SrcLoc ( mkSrcLoc )
-import TcRnDriver ( tcRnModule, tcRnExtCore )
+import TcRnDriver ( tcRnModule )
import TcIface ( typecheckIface )
import TcRnMonad ( initIfaceCheck, TcGblEnv(..) )
import IfaceEnv ( initNameCache )
import HscStats ( ppSourceStats )
import HscTypes
import MkExternalCore ( emitExternalCore )
-import ParserCore
-import ParserCoreUtils
import FastString
-import UniqFM ( emptyUFM )
+import LazyUniqFM ( emptyUFM )
import UniqSupply ( initUs_ )
import Bag ( unitBag )
genComp backend boot_backend = do
mod_summary <- gets compModSummary
case ms_hsc_src mod_summary of
- ExtCoreFile -> do
- mb_modguts <- hscCoreFrontEnd
- case mb_modguts of
- Nothing -> return Nothing
- Just guts -> backend guts
+ ExtCoreFile -> do
+ panic "GHC does not currently support reading External Core files"
_not_core -> do
mb_tc <- hscFileFrontEnd
case mb_tc of
--------------------------------------------------------------
-- FrontEnds
--------------------------------------------------------------
-
-hscCoreFrontEnd :: Comp (Maybe ModGuts)
-hscCoreFrontEnd =
- do hsc_env <- gets compHscEnv
- mod_summary <- gets compModSummary
- liftIO $ do
- -------------------
- -- PARSE
- -------------------
- inp <- readFile (ms_hspp_file mod_summary)
- case parseCore inp 1 of
- FailP s
- -> do errorMsg (hsc_dflags hsc_env) (text s{-ToDo: wrong-})
- return Nothing
- OkP rdr_module
- -------------------
- -- RENAME and TYPECHECK
- -------------------
- -> do (tc_msgs, maybe_tc_result) <- {-# SCC "TypeCheck" #-}
- tcRnExtCore hsc_env rdr_module
- printErrorsAndWarnings (hsc_dflags hsc_env) tc_msgs
- case maybe_tc_result of
- Nothing -> return Nothing
- Just mod_guts -> return (Just mod_guts) -- No desugaring to do!
-
-
hscFileFrontEnd :: Comp (Maybe TcGblEnv)
hscFileFrontEnd =
do hsc_env <- gets compHscEnv