imp-1.0.1.0: source/library/Imp/Type/Source.hs
module Imp.Type.Source where
import qualified Control.Monad.Catch as Exception
import qualified GHC.Plugins as Plugin
import qualified Imp.Extra.ModuleName as ModuleName
data Source
= Implicit
| Explicit Plugin.ModuleName
deriving (Eq, Show)
fromModuleName :: Plugin.ModuleName -> Source
fromModuleName = Explicit
fromString :: (Exception.MonadThrow m) => String -> m Source
fromString s =
if s == "_"
then pure Implicit
else fromModuleName <$> ModuleName.fromString s
isImplicit :: Source -> Bool
isImplicit s = case s of
Implicit -> True
Explicit _ -> False