module Imp.Extra.HsParsedModule where

import qualified GHC.Hs as Hs
import qualified GHC.Plugins as Plugin
import qualified Imp.Ghc as Ghc

overModule ::
  (Functor f) =>
  (Plugin.Located Ghc.HsModulePs -> f (Plugin.Located Ghc.HsModulePs)) ->
  Plugin.HsParsedModule ->
  f Plugin.HsParsedModule
overModule :: forall (f :: * -> *).
Functor f =>
(Located HsModulePs -> f (Located HsModulePs))
-> HsParsedModule -> f HsParsedModule
overModule Located HsModulePs -> f (Located HsModulePs)
f HsParsedModule
x = (\Located HsModulePs
y -> HsParsedModule
x {Hs.hpm_module = y}) (Located HsModulePs -> HsParsedModule)
-> f (Located HsModulePs) -> f HsParsedModule
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Located HsModulePs -> f (Located HsModulePs)
f (HsParsedModule -> Located HsModulePs
Hs.hpm_module HsParsedModule
x)