@@ -24,7 +24,7 @@ import Control.Monad (when)
2424import Control.Monad.State.Strict (State )
2525import Data.Default (def )
2626import Data.Either (lefts ,partitionEithers )
27- import qualified Data.IntMap as IntMap
27+ import qualified Data.HashMap.Strict as HashMap
2828import Data.List
2929 (intersect , mapAccumL )
3030import qualified Data.Map as Map
@@ -114,7 +114,7 @@ runNormalization
114114 -> NormalizeSession a
115115 -- ^ NormalizeSession to run
116116 -> IO a
117- runNormalization env supply globals typeTrans peEval eval rcsMap topEntities session = do
117+ runNormalization env supply globals typeTrans peEval eval rcsMap entities session = do
118118 normState <- NormalizeState
119119 <$> MVar. newMVar emptyVarEnv
120120 <*> MVar. newMVar Map. empty
@@ -123,25 +123,24 @@ runNormalization env supply globals typeTrans peEval eval rcsMap topEntities ses
123123 <*> MVar. newMVar Map. empty
124124 <*> MVar. newMVar rcsMap
125125
126- runRewriteSession rwEnv (rwState normState) session
126+ rwState <- RewriteState
127+ <$> MVar. newMVar mempty
128+ <*> MVar. newMVar globals
129+ <*> MVar. newMVar supply
130+ <*> MVar. newMVar HashMap. empty
131+ <*> MVar. newMVar 0
132+ <*> MVar. newMVar (mempty , 0 )
133+ <*> MVar. newMVar emptyVarEnv
134+ <*> pure normState
135+
136+ runRewriteSession rwEnv rwState session
127137 where
128138 rwEnv = RewriteEnv
129139 { _clashEnv = env
130140 , _typeTranslator = typeTrans
131141 , _peEvaluator = peEval
132142 , _evaluator = eval
133- , _topEntities = mkVarSet topEntities
134- }
135-
136- rwState s = RewriteState
137- { _transformCounters = mempty
138- , _bindings = globals
139- , _uniqSupply = supply
140- , _curFun = (error $ $ (curLoc) ++ " Report as bug: no curFun" , noSrcSpan)
141- , _nameCounter = 0
142- , _globalHeap = (IntMap. empty, 0 )
143- , _workFreeBinders = emptyVarEnv
144- , _extra = s
143+ , _topEntities = mkVarSet entities
145144 }
146145
147146normalize
@@ -155,7 +154,8 @@ normalize top = do
155154
156155normalize' :: Id -> NormalizeSession ([Id ], (Id , Binding Term ))
157156normalize' nm = do
158- exprM <- lookupVarEnv nm <$> Lens. use bindings
157+ bndrsV <- Lens. use bindings
158+ exprM <- MVar. withMVar bndrsV (pure . lookupVarEnv nm)
159159 let nmS = showPpr (varName nm)
160160 case exprM of
161161 Just (Binding nm' sp inl pr tm r) -> do
0 commit comments