1- {-# LANGUAGE FlexibleContexts, GeneralizedNewtypeDeriving, OverloadedStrings, RecordWildCards, TypeApplications, TypeOperators #-}
1+ {-# LANGUAGE FlexibleContexts, GeneralizedNewtypeDeriving, OverloadedStrings, RankNTypes, RecordWildCards, TypeApplications, TypeOperators #-}
22module Analysis.ScopeGraph
33( ScopeGraph
44, Entry (.. )
@@ -10,6 +10,7 @@ import Analysis.Eval
1010import Analysis.FlowInsensitive
1111import Control.Applicative (Alternative (.. ))
1212import Control.Effect.Carrier
13+ import Control.Effect.Fail
1314import Control.Effect.Fresh
1415import Control.Effect.Reader
1516import Control.Effect.State
@@ -45,17 +46,24 @@ scopeGraph
4546 = run
4647 . runFresh
4748 . runHeap
48- . traverse runFile
49+ . traverse ( runFile eval)
4950
5051runFile
5152 :: ( Carrier sig m
5253 , Effect sig
5354 , Member Fresh sig
5455 , Member (State (Heap User ScopeGraph )) sig
56+ , Ord term
5557 )
56- => File (Term (Core. Ann :+: Core. Core ) User )
58+ => (forall sig m
59+ . (Carrier sig m , Member (Reader Loc ) sig , MonadFail m )
60+ => Analysis term User ScopeGraph m
61+ -> (term -> m ScopeGraph )
62+ -> (term -> m ScopeGraph )
63+ )
64+ -> File term
5765 -> m (File (Either (Loc , String ) ScopeGraph ))
58- runFile file = traverse run file
66+ runFile eval file = traverse run file
5967 where run = runReader (fileLoc file)
6068 . runReader (Map. empty @ User @ Loc )
6169 . runFailWithLoc
0 commit comments