monadic-bang 0.2.2.1 → 0.2.2.2
raw patch · 3 files changed
+13/−7 lines, 3 filesdep ~basedep ~ghcdep ~ghc-bootPVP: major bump suggested
API removals or changes: PVP suggests a major version bump
Dependency ranges changed: base, ghc, ghc-boot
API changes (from Hackage documentation)
- MonadicBang.Internal: [$sel:col:MkLoc] :: Loc -> Int
- MonadicBang.Internal: [$sel:invalid:MkInScope] :: InScope -> Occs
- MonadicBang.Internal: [$sel:line:MkLoc] :: Loc -> Int
- MonadicBang.Internal: [$sel:valid:MkInScope] :: InScope -> Occs
+ MonadicBang.Internal: [col] :: Loc -> Int
+ MonadicBang.Internal: [invalid] :: InScope -> Occs
+ MonadicBang.Internal: [line] :: Loc -> Int
+ MonadicBang.Internal: [valid] :: InScope -> Occs
- MonadicBang.Internal: addStmts :: forall sig m. Has (PsErrors :+: (HoleFills :+: (Uniques :+: (LocalVars :+: Reader DynFlags)))) sig m => Handler m [ExprLStmt GhcPs]
+ MonadicBang.Internal: addStmts :: forall (sig :: (Type -> Type) -> Type -> Type) m. Has (PsErrors :+: ((HoleFills :: (Type -> Type) -> Type -> Type) :+: ((Uniques :: (Type -> Type) -> Type -> Type) :+: (LocalVars :+: Reader DynFlags)))) sig m => Handler m [ExprLStmt GhcPs]
- MonadicBang.Internal: bangVar :: Has (Uniques :+: Reader DynFlags) sig m => LExpr -> Loc -> m RdrName
+ MonadicBang.Internal: bangVar :: forall (sig :: (Type -> Type) -> Type -> Type) m. Has ((Uniques :: (Type -> Type) -> Type -> Type) :+: Reader DynFlags) sig m => LExpr -> Loc -> m RdrName
- MonadicBang.Internal: class Typeable (AstType a) => Handle a where {
+ MonadicBang.Internal: class Typeable AstType a => Handle (a :: k) where {
- MonadicBang.Internal: class MonadTrans t => HandlingMonadTrans t
+ MonadicBang.Internal: class MonadTrans t => HandlingMonadTrans (t :: Type -> Type -> Type -> Type)
- MonadicBang.Internal: evac :: forall a sig m. (Has Fill sig m, Data a) => Handler m a
+ MonadicBang.Internal: evac :: forall a (sig :: (Type -> Type) -> Type -> Type) m. (Has Fill sig m, Data a) => Handler m a
- MonadicBang.Internal: evacPats :: forall a m sig. (Has (Fill :+: State InScope) sig m, Data a) => Handler m a
+ MonadicBang.Internal: evacPats :: forall a m (sig :: (Type -> Type) -> Type -> Type). (Has (Fill :+: State InScope) sig m, Data a) => Handler m a
- MonadicBang.Internal: fillHoles :: (Data a, Has (PsErrors :+: (Reader Options :+: (Uniques :+: (LocalVars :+: Reader DynFlags)))) sig m) => Map Loc LExpr -> Handler m a
+ MonadicBang.Internal: fillHoles :: forall a (sig :: (Type -> Type) -> Type -> Type) m. (Data a, Has (PsErrors :+: (Reader Options :+: ((Uniques :: (Type -> Type) -> Type -> Type) :+: (LocalVars :+: Reader DynFlags)))) sig m) => Map Loc LExpr -> Handler m a
- MonadicBang.Internal: handle :: forall a sig m. (Handle a, CanFail a ~ False) => Has (Effects a) sig m => Handler m (AstType a)
+ MonadicBang.Internal: handle :: forall {k} (a :: k) (sig :: (Type -> Type) -> Type -> Type) m. (Handle a, CanFail a ~ 'False, Has (Effects a) sig m) => Handler m (AstType a)
- MonadicBang.Internal: handle' :: forall sig m m'. (Handle a, m ~ HandleFailure (CanFail a) m') => Has (Effects a) sig m' => Handler m (AstType a)
+ MonadicBang.Internal: handle' :: forall (sig :: (Type -> Type) -> Type -> Type) m (m' :: Type -> Type). (Handle a, m ~ HandleFailure (CanFail a) m', Has (Effects a) sig m') => Handler m (AstType a)
- MonadicBang.Internal: ignore :: forall (e :: Type) m a. (Monad m, Typeable a, Typeable e) => Try m a
+ MonadicBang.Internal: ignore :: forall e (m :: Type -> Type) a. (Monad m, Typeable a, Typeable e) => Try m a
- MonadicBang.Internal: isInvalid :: Has (Reader InScope) sig m => OccName -> m Bool
+ MonadicBang.Internal: isInvalid :: forall (sig :: (Type -> Type) -> Type -> Type) m. Has (Reader InScope) sig m => OccName -> m Bool
- MonadicBang.Internal: locVar :: Has Uniques sig m => String -> SrcSpan -> Loc -> m RdrName
+ MonadicBang.Internal: locVar :: forall (sig :: (Type -> Type) -> Type -> Type) m. Has (Uniques :: (Type -> Type) -> Type -> Type) sig m => String -> SrcSpan -> Loc -> m RdrName
- MonadicBang.Internal: tellLocalVar :: Has (Writer Occs) sig m => OccName -> m ()
+ MonadicBang.Internal: tellLocalVar :: forall (sig :: (Type -> Type) -> Type -> Type) m. Has (Writer Occs) sig m => OccName -> m ()
- MonadicBang.Internal: tellOne :: Has (Writer (DList w)) sig m => w -> m ()
+ MonadicBang.Internal: tellOne :: forall w (sig :: (Type -> Type) -> Type -> Type) m. Has (Writer (DList w)) sig m => w -> m ()
- MonadicBang.Internal: toMaybeT :: (HandlingMonadTrans t, Monad m) => t m a -> MaybeT m a
+ MonadicBang.Internal: toMaybeT :: forall (m :: Type -> Type) a. (HandlingMonadTrans t, Monad m) => t m a -> MaybeT m a
- MonadicBang.Internal: try :: forall e sig m a. (HandlingMonadTrans (HandleFailure (CanFail e)), Typeable a, Handle e, Monad m, Has (Effects e) sig m) => Try m a
+ MonadicBang.Internal: try :: forall {k} (e :: k) (sig :: (Type -> Type) -> Type -> Type) (m :: Type -> Type) a. (HandlingMonadTrans (HandleFailure (CanFail e)), Typeable a, Handle e, Monad m, Has (Effects e) sig m) => Try m a
- MonadicBang.Internal: tryEvac :: Monad m => [Try m a] -> Try m a
+ MonadicBang.Internal: tryEvac :: forall (m :: Type -> Type) a. Monad m => [Try m a] -> Try m a
- MonadicBang.Internal: type AstType a = (r :: Type) | r -> a;
+ MonadicBang.Internal: type AstType (a :: k) = (r :: Type) | r -> k a;
- MonadicBang.Internal: type CanFail a :: Bool;
+ MonadicBang.Internal: type CanFail (a :: k) :: Bool;
- MonadicBang.Internal: type Effects a :: (Type -> Type) -> Type -> Type;
+ MonadicBang.Internal: type Effects (a :: k) :: Type -> Type -> Type -> Type;
- MonadicBang.Internal: type Fill = PsErrors :+: Writer (DList BindStmt) :+: HoleFills :+: Uniques :+: LocalVars :+: Reader DynFlags
+ MonadicBang.Internal: type Fill = PsErrors :+: Writer DList BindStmt :+: HoleFills :: Type -> Type -> Type -> Type :+: Uniques :: Type -> Type -> Type -> Type :+: LocalVars :+: Reader DynFlags
- MonadicBang.Internal: type HoleFills = Offer Loc LExpr
+ MonadicBang.Internal: type HoleFills = Offer Loc LExpr :: k -> Type -> Type
- MonadicBang.Internal: type family HandleFailure canFail = t | t -> canFail
+ MonadicBang.Internal: type family HandleFailure (canFail :: Bool) = (t :: Type -> Type -> Type -> Type) | t -> canFail
- MonadicBang.Internal: usualTries :: (Has Fill sig m, Data a) => [Try m a]
+ MonadicBang.Internal: usualTries :: forall (sig :: (Type -> Type) -> Type -> Type) (m :: Type -> Type) a. (Has Fill sig m, Data a) => [Try m a]
- MonadicBang.Internal.Effect.Offer: OfferC :: StateC (Map k v) m a -> OfferC k v m a
+ MonadicBang.Internal.Effect.Offer: OfferC :: StateC (Map k v) m a -> OfferC k v (m :: Type -> Type) a
- MonadicBang.Internal.Effect.Offer: [Yoink] :: k -> Offer k v m (Maybe v)
+ MonadicBang.Internal.Effect.Offer: [Yoink] :: forall {k} k1 v (m :: k). k1 -> Offer k1 v m (Maybe v)
- MonadicBang.Internal.Effect.Offer: [getOfferState] :: OfferC k v m a -> StateC (Map k v) m a
+ MonadicBang.Internal.Effect.Offer: [getOfferState] :: OfferC k v (m :: Type -> Type) a -> StateC (Map k v) m a
- MonadicBang.Internal.Effect.Offer: data Offer k v m a
+ MonadicBang.Internal.Effect.Offer: data Offer k1 v (m :: k) a
- MonadicBang.Internal.Effect.Offer: newtype OfferC k v m a
+ MonadicBang.Internal.Effect.Offer: newtype OfferC k v (m :: Type -> Type) a
- MonadicBang.Internal.Effect.Offer: yoink :: Has (Offer k v) sig m => k -> m (Maybe v)
+ MonadicBang.Internal.Effect.Offer: yoink :: forall k v (sig :: (Type -> Type) -> Type -> Type) m. Has (Offer k v :: (Type -> Type) -> Type -> Type) sig m => k -> m (Maybe v)
- MonadicBang.Internal.Effect.Uniques: UniquesC :: StateC UniqSupply m a -> UniquesC m a
+ MonadicBang.Internal.Effect.Uniques: UniquesC :: StateC UniqSupply m a -> UniquesC (m :: Type -> Type) a
- MonadicBang.Internal.Effect.Uniques: [FreshUnique] :: Uniques m Unique
+ MonadicBang.Internal.Effect.Uniques: [FreshUnique] :: forall {k} (m :: k). Uniques m Unique
- MonadicBang.Internal.Effect.Uniques: [getUniquesState] :: UniquesC m a -> StateC UniqSupply m a
+ MonadicBang.Internal.Effect.Uniques: [getUniquesState] :: UniquesC (m :: Type -> Type) a -> StateC UniqSupply m a
- MonadicBang.Internal.Effect.Uniques: data Uniques m a
+ MonadicBang.Internal.Effect.Uniques: data Uniques (m :: k) a
- MonadicBang.Internal.Effect.Uniques: freshUnique :: Has Uniques sig m => m Unique
+ MonadicBang.Internal.Effect.Uniques: freshUnique :: forall (sig :: (Type -> Type) -> Type -> Type) m. Has (Uniques :: (Type -> Type) -> Type -> Type) sig m => m Unique
- MonadicBang.Internal.Effect.Uniques: newtype UniquesC m a
+ MonadicBang.Internal.Effect.Uniques: newtype UniquesC (m :: Type -> Type) a
- MonadicBang.Internal.Effect.Writer.Discard: DiscardC :: m a -> DiscardC w m a
+ MonadicBang.Internal.Effect.Writer.Discard: DiscardC :: m a -> DiscardC (w :: k) (m :: k1 -> Type) (a :: k1)
- MonadicBang.Internal.Effect.Writer.Discard: [evalDiscardC] :: DiscardC w m a -> m a
+ MonadicBang.Internal.Effect.Writer.Discard: [evalDiscardC] :: DiscardC (w :: k) (m :: k1 -> Type) (a :: k1) -> m a
- MonadicBang.Internal.Effect.Writer.Discard: evalWriter :: (Monoid w, Algebra sig m) => DiscardC w m a -> m a
+ MonadicBang.Internal.Effect.Writer.Discard: evalWriter :: forall w (sig :: (Type -> Type) -> Type -> Type) m a. (Monoid w, Algebra sig m) => DiscardC w m a -> m a
- MonadicBang.Internal.Effect.Writer.Discard: newtype DiscardC w m a
+ MonadicBang.Internal.Effect.Writer.Discard: newtype DiscardC (w :: k) (m :: k1 -> Type) (a :: k1)
- MonadicBang.Internal.Error: tellPsError :: Has PsErrors sig m => PsError -> SrcSpan -> m ()
+ MonadicBang.Internal.Error: tellPsError :: forall (sig :: (Type -> Type) -> Type -> Type) m. Has PsErrors sig m => PsError -> SrcSpan -> m ()
- MonadicBang.Internal.Error: type PsErrors = Writer (Messages PsError)
+ MonadicBang.Internal.Error: type PsErrors = Writer Messages PsError
- MonadicBang.Internal.Options: parseOptions :: Has (Throw ErrorCall) sig m => Located (HsModule GhcPs) -> [CommandLineOption] -> m Options
+ MonadicBang.Internal.Options: parseOptions :: forall (sig :: (Type -> Type) -> Type -> Type) m. Has (Throw ErrorCall) sig m => Located (HsModule GhcPs) -> [CommandLineOption] -> m Options
- MonadicBang.Internal.Utils: type Handler m a = a -> m a
+ MonadicBang.Internal.Utils: type Handler (m :: Type -> Type) a = a -> m a
- MonadicBang.Internal.Utils: type Try m a = Handler (MaybeT m) a
+ MonadicBang.Internal.Utils: type Try (m :: Type -> Type) a = Handler MaybeT m a
Files
- monadic-bang.cabal +5/−4
- src/MonadicBang/Internal.hs +1/−1
- test/MonadicBang/Test/Utils/RunGhcParser.hs +7/−2
monadic-bang.cabal view
@@ -14,7 +14,7 @@ -- PVP summary: +-+------- breaking API changes -- | | +----- non-breaking API additions -- | | | +--- code changes with no API change -version: 0.2.2.1 +version: 0.2.2.2 -- A short (one-line) description of the package. synopsis: GHC plugin to desugar ! into do-notation @@ -53,6 +53,7 @@ GHC == 9.6.3 GHC == 9.8.1 GHC == 9.10.1 + GHC == 9.12.1 source-repository head type: git @@ -85,8 +86,8 @@ PatternSynonyms -- Other library packages from which modules are imported. - build-depends: base >=4.17.0.0 && <4.21, - ghc >=9.4 && <9.11, + build-depends: base >=4.17.0.0 && <4.22, + ghc >=9.4 && <9.13, containers ^>=0.6.4.1 || ^>=0.7, transformers >=0.5.6.2 && <0.7, fused-effects ^>=1.1.1.2 @@ -121,7 +122,7 @@ -- Test dependencies. build-depends: base, ghc, - ghc-boot >=9.4 && <9.11, + ghc-boot >=9.4 && <9.13, ghc-paths ^>=0.1.0.12, transformers, monadic-bang
src/MonadicBang/Internal.hs view
@@ -371,7 +371,7 @@ -- source span can be found in the given list. fillHoles :: (Data a, Has (PsErrors :+: Reader Options :+: Uniques :+: LocalVars :+: Reader DynFlags) sig m) => Map Loc LExpr -> Handler m a fillHoles fillers ast = do - (remainingErrs, (fromDList -> binds :: [BindStmt], ast')) <- runOffer fillers . runWriter $ evac ast + (remainingErrs, (fromDList -> (binds :: [BindStmt]), ast')) <- runOffer fillers . runWriter $ evac ast MkOptions{preserveErrors} <- ask for_ binds \bind -> tellPsError (psError (bindStmtExpr bind) preserveErrors) (bangSpan $ bindStmtSpan bind) dflags <- ask
test/MonadicBang/Test/Utils/RunGhcParser.hs view
@@ -42,7 +42,7 @@ modSummary = ModSummary { ms_mod = mkModule (stringToUnit modNameStr) modName , ms_hsc_src = HsSrcFile - , ms_location = mkHomeModLocation (initFinderOpts dflags) modName "" + , ms_location = mkHomeModLocation (initFinderOpts dflags) modName (error "monadic-bang (test suite): no home path") , ms_hs_hash = fingerprintString src , ms_obj_date = Nothing , ms_dyn_obj_date = Nothing @@ -66,7 +66,12 @@ addPlugin = do let session = !getSession plugins = hsc_plugins session - setSession (session{hsc_plugins = plugins{staticPlugins = StaticPlugin (PluginWithArgs MonadicBang.plugin []) : staticPlugins plugins}}) + setSession (session{hsc_plugins = plugins{staticPlugins = StaticPlugin + { spPlugin = PluginWithArgs MonadicBang.plugin [] +#if MIN_VERSION_ghc(9,12,0) + , spInitialised = False +#endif + } : staticPlugins plugins}}) initialDynFlags :: MonadIO m => m DynFlags initialDynFlags = do