module Splint.Parser.Native
  ( parse
  )
where

import qualified GhcPlugins as GHC
import qualified Language.Haskell.HLint as HLint

parse
  :: HLint.ParseFlags
  -> GHC.ModSummary
  -> GHC.HsParsedModule
  -> GHC.Hsc HLint.ModuleEx
parse :: ParseFlags -> ModSummary -> HsParsedModule -> Hsc ModuleEx
parse ParseFlags
_ ModSummary
_ HsParsedModule
hsParsedModule = do
  let
    apiAnns :: ApiAnns
apiAnns = HsParsedModule -> ApiAnns
GHC.hpm_annotations HsParsedModule
hsParsedModule
    hsModule :: Located (HsModule GhcPs)
hsModule = HsParsedModule -> Located (HsModule GhcPs)
GHC.hpm_module HsParsedModule
hsParsedModule
  ModuleEx -> Hsc ModuleEx
forall (f :: * -> *) a. Applicative f => a -> f a
pure (ModuleEx -> Hsc ModuleEx) -> ModuleEx -> Hsc ModuleEx
forall a b. (a -> b) -> a -> b
$ ApiAnns -> Located (HsModule GhcPs) -> ModuleEx
HLint.createModuleEx ApiAnns
apiAnns Located (HsModule GhcPs)
hsModule