packages feed

imp-1.0.1.0: source/library/Imp/Type/Target.hs

module Imp.Type.Target where

import qualified Control.Monad.Catch as Exception
import qualified GHC.Plugins as Plugin
import qualified Imp.Extra.ModuleName as ModuleName

newtype Target
  = Target Plugin.ModuleName
  deriving (Eq, Ord, Show)

fromModuleName :: Plugin.ModuleName -> Target
fromModuleName = Target

fromString :: (Exception.MonadThrow m) => String -> m Target
fromString = fmap fromModuleName . ModuleName.fromString

toModuleName :: Target -> Plugin.ModuleName
toModuleName (Target x) = x