module Imp.Extra.ModuleName where import qualified Control.Monad.Catch as Exception import qualified GHC.Plugins as Plugin import qualified Imp.Exception.InvalidModuleName as InvalidModuleName import qualified Imp.Extra.ReadP as ReadP fromString :: (Exception.MonadThrow m) => String -> m Plugin.ModuleName fromString :: forall (m :: * -> *). MonadThrow m => String -> m ModuleName fromString String x = m ModuleName -> (ModuleName -> m ModuleName) -> Maybe ModuleName -> m ModuleName forall b a. b -> (a -> b) -> Maybe a -> b maybe (InvalidModuleName -> m ModuleName forall e a. (HasCallStack, Exception e) => e -> m a forall (m :: * -> *) e a. (MonadThrow m, HasCallStack, Exception e) => e -> m a Exception.throwM (InvalidModuleName -> m ModuleName) -> InvalidModuleName -> m ModuleName forall a b. (a -> b) -> a -> b $ String -> InvalidModuleName InvalidModuleName.new String x) ModuleName -> m ModuleName forall a. a -> m a forall (f :: * -> *) a. Applicative f => a -> f a pure (Maybe ModuleName -> m ModuleName) -> Maybe ModuleName -> m ModuleName forall a b. (a -> b) -> a -> b $ ReadP ModuleName -> String -> Maybe ModuleName forall a. ReadP a -> String -> Maybe a ReadP.run ReadP ModuleName Plugin.parseModuleName String x