@@ -120,12 +120,23 @@ registerHelp dep (Env vs home uid deps fx htc) =
120120-- REGISTER EFFECTS
121121
122122
123−registerEffects :: Effects.ManagerType -> Optimizer Effects.ManagerType
124−registerEffects manager =
125− do State.modify (registerEffectsHelp manager)
123+registerEffects :: ModuleName.Canonical -> Effects.ManagerType -> Optimizer Effects.ManagerType
124+registerEffects home manager =
125+ do (Env vs hm uid deps _ htc) <- State.get
126+ let newDeps = Set.union deps (getEffectDeps home manager)
127+ State.put (Env vs hm uid newDeps (Just manager) htc)
126128 return manager
127129
128130
129−registerEffectsHelp :: Effects.ManagerType -> Env -> Env
130−registerEffectsHelp manager (Env vs home uid deps _ htc) =
131− Env vs home uid deps (Just manager) htc
131+getEffectDeps :: ModuleName.Canonical -> Effects.ManagerType -> Set.Set Var.Global
132+getEffectDeps home manager =
133+ Set.fromList $ map (Var.Global home) $
134+ case manager of
135+ Effects.Cmds ->
136+ [ "init", "onEffects", "onSelfMsg", "cmdMap" ]
137+
138+ Effects.Subs ->
139+ [ "init", "onEffects", "onSelfMsg", "subMap" ]
140+
141+ Effects.Both ->
142+ [ "init", "onEffects", "onSelfMsg", "cmdMap", "subMap" ]