- -> IO (t, (Bag WarnMsg, Bag ErrMsg))
-
-initRn dflags finder gst prs mod loc do_rn
- = do uniqs <- mkSplitUniqSupply 'r'
- names_var <- newIORef (uniqs, prsOrig prs)
- errs_var <- newIORef (emptyBag,emptyBag)
- iface_var <- newIORef (initIfaces prs)
- let rn_down = RnDown { rn_mod = mod,
- rn_loc = loc,
-
- rn_finder = finder,
- rn_dflags = dflags,
- rn_gst = gst,
-
- rn_ns = names_var,
- rn_errs = errs_var,
- rn_ifaces = iface_var,
- }
-
- -- do the business
- res <- do_rn rn_down ()
-
- -- grab errors and return
- (warns, errs) <- readIORef errs_var
-
- return (res, (warns, errs))
-
-
-initIfaces :: PersistentRenamerState -> Ifaces
-initIfaces prs
- = Ifaces { iDecls = prsDecls prs,
+ -> IO (t, PersistentCompilerState, (Bag WarnMsg, Bag ErrMsg))
+
+initRn dflags finder hst pcs mod loc do_rn
+ = do
+ let prs = pcs_PRS pcs
+ uniqs <- mkSplitUniqSupply 'r'
+ names_var <- newIORef (uniqs, origNames (prsOrig prs),
+ origIParam (prsOrig prs))
+ errs_var <- newIORef (emptyBag,emptyBag)
+ iface_var <- newIORef (initIfaces pcs)
+ let rn_down = RnDown { rn_mod = mod,
+ rn_loc = loc,
+
+ rn_finder = finder,
+ rn_dflags = dflags,
+ rn_hst = hst,
+
+ rn_ns = names_var,
+ rn_errs = errs_var,
+ rn_ifaces = iface_var,
+ }
+
+ -- do the business
+ res <- do_rn rn_down ()
+
+ -- Grab state and record it
+ (warns, errs) <- readIORef errs_var
+ new_ifaces <- readIORef iface_var
+ (_, new_origN, new_origIP) <- readIORef names_var
+ let new_orig = Orig { origNames = new_origN, origIParam = new_origIP }
+ let new_prs = prs { prsOrig = new_orig,
+ prsDecls = iDecls new_ifaces,
+ prsInsts = iInsts new_ifaces,
+ prsRules = iRules new_ifaces }
+ let new_pcs = pcs { pcs_PST = iPST new_ifaces,
+ pcs_PRS = new_prs }
+
+ return (res, new_pcs, (warns, errs))
+
+
+initIfaces :: PersistentCompilerState -> Ifaces
+initIfaces (PCS { pcs_PST = pst, pcs_PRS = prs })
+ = Ifaces { iPST = pst,
+ iDecls = prsDecls prs,