+ }}
+
+hscCoreFrontEnd ghci_mode dflags location hst hit pcs_ch = do {
+ -------------------
+ -- PARSE
+ -------------------
+ ; inp <- readFile (expectJust "hscCoreFrontEnd:hspp" (ml_hspp_file location))
+ ; case parseCore inp 1 of
+ FailP s -> hPutStrLn stderr s >> return (Left (HscFail pcs_ch));
+ OkP rdr_module -> do {
+ ; let this_mod = mkHomeModule (hsModuleName rdr_module)
+
+ -------------------
+ -- RENAME
+ -------------------
+ ; (pcs_rn, print_unqual, maybe_rn_result)
+ <- renameExtCore dflags hit hst pcs_ch this_mod rdr_module
+ ; case maybe_rn_result of {
+ Nothing -> return (Left (HscFail pcs_ch));
+ Just (dont_discard, new_iface, rn_decls) -> do {
+
+ -------------------
+ -- TYPECHECK
+ -------------------
+ ; maybe_tc_result
+ <- _scc_ "TypeCheck"
+ typecheckCoreModule dflags pcs_rn hst new_iface rn_decls
+ ; case maybe_tc_result of {
+ Nothing -> return (Left (HscFail pcs_ch));
+ Just (pcs_tc, tc_result) -> do {
+
+ -------------------
+ -- DESUGAR
+ -------------------
+ ; (ds_details, foreign_stuff) <- deSugarCore tc_result
+ ; return (Right (this_mod, rdr_module, dont_discard, new_iface,
+ pcs_tc, ds_details, foreign_stuff))
+ }}}}}}
+
+
+hscFrontEnd ghci_mode dflags location hst hit pcs_ch = do {
+ -------------------
+ -- PARSE
+ -------------------
+ ; maybe_parsed <- myParseModule dflags
+ (expectJust "hscRecomp:hspp" (ml_hspp_file location))
+ ; case maybe_parsed of {
+ Nothing -> return (Left (HscFail pcs_ch));
+ Just rdr_module -> do {
+ ; let this_mod = mkHomeModule (hsModuleName rdr_module)
+
+ -------------------
+ -- RENAME
+ -------------------
+ ; (pcs_rn, print_unqual, maybe_rn_result)
+ <- _scc_ "Rename"
+ renameModule dflags ghci_mode hit hst pcs_ch this_mod rdr_module
+ ; case maybe_rn_result of {
+ Nothing -> return (Left (HscFail pcs_ch));
+ Just (dont_discard, new_iface, rn_result) -> do {
+
+ -------------------
+ -- TYPECHECK
+ -------------------
+ ; maybe_tc_result
+ <- _scc_ "TypeCheck"
+ typecheckModule dflags pcs_rn hst print_unqual rn_result
+ ; case maybe_tc_result of {
+ Nothing -> return (Left (HscFail pcs_ch));
+ Just (pcs_tc, tc_result) -> do {
+
+ -------------------
+ -- DESUGAR
+ -------------------
+ ; (ds_details, foreign_stuff)
+ <- _scc_ "DeSugar"
+ deSugar dflags pcs_tc hst this_mod print_unqual tc_result
+ ; return (Right (this_mod, rdr_module, dont_discard, new_iface,
+ pcs_tc, ds_details, foreign_stuff))
+ }}}}}}}
+