on master help sign in
Move overlapping instances out of TaggedTrans
a40e519Vladislav Zavialov
src/Ether/TagDispatch.hs+4−4
@@ -65,7 +65,7 @@ tagAttach :: forall tag m a . TagAttachT tag m a -> m a
65tagAttach = coerce (runIdentityT @_ @m @a)
65tagAttach = coerce (runIdentityT @_ @m @a)
66{-# INLINE tagAttach #-}
66{-# INLINE tagAttach #-}
67
67
68−instance
68+instance {-# OVERLAPPING #-}
69 ( MonadReader tag r m, trans ~ IdentityT
69 ( MonadReader tag r m, trans ~ IdentityT
70 ) => Mtl.MonadReader r (TaggedTrans (TAG_ATTACH tag) trans m)
70 ) => Mtl.MonadReader r (TaggedTrans (TAG_ATTACH tag) trans m)
71 where
71 where
@@ -79,7 +79,7 @@ instance
79 reader = reader @tag
79 reader = reader @tag
80 {-# INLINE reader #-}
80 {-# INLINE reader #-}
81
81
82−instance
82+instance {-# OVERLAPPING #-}
83 ( MonadState tag s m, trans ~ IdentityT
83 ( MonadState tag s m, trans ~ IdentityT
84 ) => Mtl.MonadState s (TaggedTrans (TAG_ATTACH tag) trans m)
84 ) => Mtl.MonadState s (TaggedTrans (TAG_ATTACH tag) trans m)
85 where
85 where
@@ -93,7 +93,7 @@ instance
93 state = state @tag
93 state = state @tag
94 {-# INLINE state #-}
94 {-# INLINE state #-}
95
95
96−instance
96+instance {-# OVERLAPPING #-}
97 ( MonadExcept tag e m, trans ~ IdentityT
97 ( MonadExcept tag e m, trans ~ IdentityT
98 ) => Mtl.MonadError e (TaggedTrans (TAG_ATTACH tag) trans m)
98 ) => Mtl.MonadError e (TaggedTrans (TAG_ATTACH tag) trans m)
99 where
99 where
@@ -104,7 +104,7 @@ instance
104 catchError = catch @tag
104 catchError = catch @tag
105 {-# INLINE catchError #-}
105 {-# INLINE catchError #-}
106
106
107−instance
107+instance {-# OVERLAPPING #-}
108 ( MonadWriter tag w m, trans ~ IdentityT
108 ( MonadWriter tag w m, trans ~ IdentityT
109 ) => Mtl.MonadWriter w (TaggedTrans (TAG_ATTACH tag) trans m)
109 ) => Mtl.MonadWriter w (TaggedTrans (TAG_ATTACH tag) trans m)
110 where
110 where
src/Ether/TaggedTrans.hs+5−5
@@ -132,7 +132,7 @@ instance Lift.LiftCallCC trans => Lift.LiftCallCC (TaggedTrans tag trans) where
132
132
133-- Instances for mtl classes
133-- Instances for mtl classes
134
134
135−instance {-# OVERLAPPABLE #-}
135+instance
136 ( Mtl.MonadCont m
136 ( Mtl.MonadCont m
137 , Lift.LiftCallCC trans
137 , Lift.LiftCallCC trans
138 , Monad (trans m)
138 , Monad (trans m)
@@ -140,7 +140,7 @@ instance {-# OVERLAPPABLE #-}
140 where
140 where
141 callCC = Lift.liftCallCC' Mtl.callCC
141 callCC = Lift.liftCallCC' Mtl.callCC
142
142
143−instance {-# OVERLAPPABLE #-}
143+instance
144 ( Mtl.MonadReader r m
144 ( Mtl.MonadReader r m
145 , Lift.LiftLocal trans
145 , Lift.LiftLocal trans
146 , Monad (trans m)
146 , Monad (trans m)
@@ -150,7 +150,7 @@ instance {-# OVERLAPPABLE #-}
150 local = Lift.liftLocal Mtl.ask Mtl.local
150 local = Lift.liftLocal Mtl.ask Mtl.local
151 reader = lift . Mtl.reader
151 reader = lift . Mtl.reader
152
152
153−instance {-# OVERLAPPABLE #-}
153+instance
154 ( Mtl.MonadState s m
154 ( Mtl.MonadState s m
155 , MonadTrans trans
155 , MonadTrans trans
156 , Monad (trans m)
156 , Monad (trans m)
@@ -160,7 +160,7 @@ instance {-# OVERLAPPABLE #-}
160 put = lift . Mtl.put
160 put = lift . Mtl.put
161 state = lift . Mtl.state
161 state = lift . Mtl.state
162
162
163−instance {-# OVERLAPPABLE #-}
163+instance
164 ( Mtl.MonadWriter w m
164 ( Mtl.MonadWriter w m
165 , Lift.LiftListen trans
165 , Lift.LiftListen trans
166 , Lift.LiftPass trans
166 , Lift.LiftPass trans
@@ -172,7 +172,7 @@ instance {-# OVERLAPPABLE #-}
172 listen = Lift.liftListen Mtl.listen
172 listen = Lift.liftListen Mtl.listen
173 pass = Lift.liftPass Mtl.pass
173 pass = Lift.liftPass Mtl.pass
174
174
175−instance {-# OVERLAPPABLE #-}
175+instance
176 ( Mtl.MonadError e m
176 ( Mtl.MonadError e m
177 , Lift.LiftCatch trans
177 , Lift.LiftCatch trans
178 , Monad (trans m)
178 , Monad (trans m)