megaparsec 9.7.1 → 9.8.0
raw patch · 7 files changed
+108/−29 lines, 7 filesdep ~basePVP ok
version bump matches the API change (PVP)
Dependency ranges changed: base
API changes (from Hackage documentation)
- Text.Megaparsec.Debug: instance (GHC.Base.Monoid w, GHC.Show.Show w, GHC.Show.Show st, Text.Megaparsec.Debug.MonadParsecDbg e s m) => Text.Megaparsec.Debug.MonadParsecDbg e s (Control.Monad.Trans.RWS.Lazy.RWST r w st m)
- Text.Megaparsec.Debug: instance (GHC.Base.Monoid w, GHC.Show.Show w, GHC.Show.Show st, Text.Megaparsec.Debug.MonadParsecDbg e s m) => Text.Megaparsec.Debug.MonadParsecDbg e s (Control.Monad.Trans.RWS.Strict.RWST r w st m)
- Text.Megaparsec.Debug: instance (GHC.Base.Monoid w, GHC.Show.Show w, Text.Megaparsec.Debug.MonadParsecDbg e s m) => Text.Megaparsec.Debug.MonadParsecDbg e s (Control.Monad.Trans.Writer.Lazy.WriterT w m)
- Text.Megaparsec.Debug: instance (GHC.Base.Monoid w, GHC.Show.Show w, Text.Megaparsec.Debug.MonadParsecDbg e s m) => Text.Megaparsec.Debug.MonadParsecDbg e s (Control.Monad.Trans.Writer.Strict.WriterT w m)
- Text.Megaparsec.Debug: instance (GHC.Show.Show c, GHC.Show.Show a) => GHC.Show.Show (Text.Megaparsec.Debug.ShowComment c a)
- Text.Megaparsec.Debug: instance (GHC.Show.Show st, Text.Megaparsec.Debug.MonadParsecDbg e s m) => Text.Megaparsec.Debug.MonadParsecDbg e s (Control.Monad.Trans.State.Lazy.StateT st m)
- Text.Megaparsec.Debug: instance (GHC.Show.Show st, Text.Megaparsec.Debug.MonadParsecDbg e s m) => Text.Megaparsec.Debug.MonadParsecDbg e s (Control.Monad.Trans.State.Strict.StateT st m)
- Text.Megaparsec.Debug: instance GHC.Show.Show (Text.Megaparsec.Debug.Blind x)
- Text.Megaparsec.Error: instance (Data.Data.Data s, Data.Data.Data (Text.Megaparsec.Stream.Token s), GHC.Classes.Ord (Text.Megaparsec.Stream.Token s), Data.Data.Data e, GHC.Classes.Ord e) => Data.Data.Data (Text.Megaparsec.Error.ParseError s e)
- Text.Megaparsec.Error: instance (Data.Data.Data s, Data.Data.Data (Text.Megaparsec.Stream.Token s), GHC.Classes.Ord (Text.Megaparsec.Stream.Token s), Data.Data.Data e, GHC.Classes.Ord e) => Data.Data.Data (Text.Megaparsec.Error.ParseErrorBundle s e)
- Text.Megaparsec.Error: instance (GHC.Show.Show (Text.Megaparsec.Stream.Token s), GHC.Show.Show e) => GHC.Show.Show (Text.Megaparsec.Error.ParseError s e)
- Text.Megaparsec.Error: instance (GHC.Show.Show (Text.Megaparsec.Stream.Token s), GHC.Show.Show e, Text.Megaparsec.Error.ShowErrorComponent e, Text.Megaparsec.Stream.VisualStream s, Data.Typeable.Internal.Typeable s, Data.Typeable.Internal.Typeable e) => GHC.Exception.Type.Exception (Text.Megaparsec.Error.ParseError s e)
- Text.Megaparsec.Error: instance (GHC.Show.Show s, GHC.Show.Show (Text.Megaparsec.Stream.Token s), GHC.Show.Show e) => GHC.Show.Show (Text.Megaparsec.Error.ParseErrorBundle s e)
- Text.Megaparsec.Error: instance (GHC.Show.Show s, GHC.Show.Show (Text.Megaparsec.Stream.Token s), GHC.Show.Show e, Text.Megaparsec.Error.ShowErrorComponent e, Text.Megaparsec.Stream.VisualStream s, Text.Megaparsec.Stream.TraversableStream s, Data.Typeable.Internal.Typeable s, Data.Typeable.Internal.Typeable e) => GHC.Exception.Type.Exception (Text.Megaparsec.Error.ParseErrorBundle s e)
- Text.Megaparsec.Error: instance (Text.Megaparsec.Stream.Stream s, GHC.Classes.Ord e) => GHC.Base.Monoid (Text.Megaparsec.Error.ParseError s e)
- Text.Megaparsec.Error: instance (Text.Megaparsec.Stream.Stream s, GHC.Classes.Ord e) => GHC.Base.Semigroup (Text.Megaparsec.Error.ParseError s e)
- Text.Megaparsec.Error: instance Data.Data.Data e => Data.Data.Data (Text.Megaparsec.Error.ErrorFancy e)
- Text.Megaparsec.Error: instance Data.Data.Data t => Data.Data.Data (Text.Megaparsec.Error.ErrorItem t)
- Text.Megaparsec.Error: instance GHC.Base.Functor Text.Megaparsec.Error.ErrorFancy
- Text.Megaparsec.Error: instance GHC.Base.Functor Text.Megaparsec.Error.ErrorItem
- Text.Megaparsec.Error: instance GHC.Generics.Generic (Text.Megaparsec.Error.ErrorFancy e)
- Text.Megaparsec.Error: instance GHC.Generics.Generic (Text.Megaparsec.Error.ErrorItem t)
- Text.Megaparsec.Error: instance GHC.Generics.Generic (Text.Megaparsec.Error.ParseError s e)
- Text.Megaparsec.Error: instance GHC.Generics.Generic (Text.Megaparsec.Error.ParseErrorBundle s e)
- Text.Megaparsec.Error: instance GHC.Read.Read e => GHC.Read.Read (Text.Megaparsec.Error.ErrorFancy e)
- Text.Megaparsec.Error: instance GHC.Read.Read t => GHC.Read.Read (Text.Megaparsec.Error.ErrorItem t)
- Text.Megaparsec.Error: instance GHC.Show.Show e => GHC.Show.Show (Text.Megaparsec.Error.ErrorFancy e)
- Text.Megaparsec.Error: instance GHC.Show.Show t => GHC.Show.Show (Text.Megaparsec.Error.ErrorItem t)
- Text.Megaparsec.Error: instance Text.Megaparsec.Error.ShowErrorComponent GHC.Base.Void
- Text.Megaparsec.Error.Builder: instance (Data.Data.Data e, GHC.Classes.Ord e) => Data.Data.Data (Text.Megaparsec.Error.Builder.EF e)
- Text.Megaparsec.Error.Builder: instance (Data.Data.Data s, Data.Data.Data (Text.Megaparsec.Stream.Token s), GHC.Classes.Ord (Text.Megaparsec.Stream.Token s)) => Data.Data.Data (Text.Megaparsec.Error.Builder.ET s)
- Text.Megaparsec.Error.Builder: instance GHC.Classes.Ord e => GHC.Base.Monoid (Text.Megaparsec.Error.Builder.EF e)
- Text.Megaparsec.Error.Builder: instance GHC.Classes.Ord e => GHC.Base.Semigroup (Text.Megaparsec.Error.Builder.EF e)
- Text.Megaparsec.Error.Builder: instance GHC.Generics.Generic (Text.Megaparsec.Error.Builder.EF e)
- Text.Megaparsec.Error.Builder: instance GHC.Generics.Generic (Text.Megaparsec.Error.Builder.ET s)
- Text.Megaparsec.Error.Builder: instance Text.Megaparsec.Stream.Stream s => GHC.Base.Monoid (Text.Megaparsec.Error.Builder.ET s)
- Text.Megaparsec.Error.Builder: instance Text.Megaparsec.Stream.Stream s => GHC.Base.Semigroup (Text.Megaparsec.Error.Builder.ET s)
- Text.Megaparsec.Internal: instance (GHC.Classes.Ord e, Text.Megaparsec.Stream.Stream s) => GHC.Base.Alternative (Text.Megaparsec.Internal.ParsecT e s m)
- Text.Megaparsec.Internal: instance (GHC.Classes.Ord e, Text.Megaparsec.Stream.Stream s) => GHC.Base.MonadPlus (Text.Megaparsec.Internal.ParsecT e s m)
- Text.Megaparsec.Internal: instance (Text.Megaparsec.Stream.Stream s, Control.Monad.Fix.MonadFix m) => Control.Monad.Fix.MonadFix (Text.Megaparsec.Internal.ParsecT e s m)
- Text.Megaparsec.Internal: instance (Text.Megaparsec.Stream.Stream s, GHC.Base.Monoid a) => GHC.Base.Monoid (Text.Megaparsec.Internal.ParsecT e s m a)
- Text.Megaparsec.Internal: instance (Text.Megaparsec.Stream.Stream s, GHC.Base.Semigroup a) => GHC.Base.Semigroup (Text.Megaparsec.Internal.ParsecT e s m a)
- Text.Megaparsec.Internal: instance (a GHC.Types.~ Text.Megaparsec.Stream.Tokens s, Data.String.IsString a, GHC.Classes.Eq a, Text.Megaparsec.Stream.Stream s, GHC.Classes.Ord e) => Data.String.IsString (Text.Megaparsec.Internal.ParsecT e s m a)
- Text.Megaparsec.Internal: instance GHC.Base.Functor (Text.Megaparsec.Internal.ParsecT e s m)
- Text.Megaparsec.Internal: instance GHC.Base.Functor (Text.Megaparsec.Internal.Reply e s)
- Text.Megaparsec.Internal: instance GHC.Base.Functor (Text.Megaparsec.Internal.Result s e)
- Text.Megaparsec.Internal: instance GHC.Classes.Ord t => GHC.Base.Monoid (Text.Megaparsec.Internal.Hints t)
- Text.Megaparsec.Internal: instance GHC.Classes.Ord t => GHC.Base.Semigroup (Text.Megaparsec.Internal.Hints t)
- Text.Megaparsec.Internal: instance Text.Megaparsec.Stream.Stream s => Control.Monad.Fail.MonadFail (Text.Megaparsec.Internal.ParsecT e s m)
- Text.Megaparsec.Internal: instance Text.Megaparsec.Stream.Stream s => GHC.Base.Applicative (Text.Megaparsec.Internal.ParsecT e s m)
- Text.Megaparsec.Internal: instance Text.Megaparsec.Stream.Stream s => GHC.Base.Monad (Text.Megaparsec.Internal.ParsecT e s m)
- Text.Megaparsec.Pos: instance Data.Data.Data Text.Megaparsec.Pos.InvalidPosException
- Text.Megaparsec.Pos: instance Data.Data.Data Text.Megaparsec.Pos.Pos
- Text.Megaparsec.Pos: instance Data.Data.Data Text.Megaparsec.Pos.SourcePos
- Text.Megaparsec.Pos: instance GHC.Base.Semigroup Text.Megaparsec.Pos.Pos
- Text.Megaparsec.Pos: instance GHC.Exception.Type.Exception Text.Megaparsec.Pos.InvalidPosException
- Text.Megaparsec.Pos: instance GHC.Generics.Generic Text.Megaparsec.Pos.InvalidPosException
- Text.Megaparsec.Pos: instance GHC.Generics.Generic Text.Megaparsec.Pos.Pos
- Text.Megaparsec.Pos: instance GHC.Generics.Generic Text.Megaparsec.Pos.SourcePos
- Text.Megaparsec.Pos: instance GHC.Read.Read Text.Megaparsec.Pos.Pos
- Text.Megaparsec.Pos: instance GHC.Read.Read Text.Megaparsec.Pos.SourcePos
- Text.Megaparsec.Pos: instance GHC.Show.Show Text.Megaparsec.Pos.InvalidPosException
- Text.Megaparsec.Pos: instance GHC.Show.Show Text.Megaparsec.Pos.Pos
- Text.Megaparsec.Pos: instance GHC.Show.Show Text.Megaparsec.Pos.SourcePos
- Text.Megaparsec.State: instance (Data.Data.Data e, Data.Data.Data (Text.Megaparsec.Error.ParseError s e), Data.Data.Data s) => Data.Data.Data (Text.Megaparsec.State.State s e)
- Text.Megaparsec.State: instance (GHC.Show.Show (Text.Megaparsec.Error.ParseError s e), GHC.Show.Show s) => GHC.Show.Show (Text.Megaparsec.State.State s e)
- Text.Megaparsec.State: instance Data.Data.Data s => Data.Data.Data (Text.Megaparsec.State.PosState s)
- Text.Megaparsec.State: instance GHC.Generics.Generic (Text.Megaparsec.State.PosState s)
- Text.Megaparsec.State: instance GHC.Generics.Generic (Text.Megaparsec.State.State s e)
- Text.Megaparsec.State: instance GHC.Show.Show s => GHC.Show.Show (Text.Megaparsec.State.PosState s)
- Text.Megaparsec.Stream: instance Text.Megaparsec.Stream.TraversableStream GHC.Base.String
- Text.Megaparsec.Stream: instance Text.Megaparsec.Stream.VisualStream GHC.Base.String
+ Text.Megaparsec.Debug: instance (GHC.Internal.Base.Monoid w, GHC.Internal.Show.Show w, GHC.Internal.Show.Show st, Text.Megaparsec.Debug.MonadParsecDbg e s m) => Text.Megaparsec.Debug.MonadParsecDbg e s (Control.Monad.Trans.RWS.Lazy.RWST r w st m)
+ Text.Megaparsec.Debug: instance (GHC.Internal.Base.Monoid w, GHC.Internal.Show.Show w, GHC.Internal.Show.Show st, Text.Megaparsec.Debug.MonadParsecDbg e s m) => Text.Megaparsec.Debug.MonadParsecDbg e s (Control.Monad.Trans.RWS.Strict.RWST r w st m)
+ Text.Megaparsec.Debug: instance (GHC.Internal.Base.Monoid w, GHC.Internal.Show.Show w, Text.Megaparsec.Debug.MonadParsecDbg e s m) => Text.Megaparsec.Debug.MonadParsecDbg e s (Control.Monad.Trans.Writer.Lazy.WriterT w m)
+ Text.Megaparsec.Debug: instance (GHC.Internal.Base.Monoid w, GHC.Internal.Show.Show w, Text.Megaparsec.Debug.MonadParsecDbg e s m) => Text.Megaparsec.Debug.MonadParsecDbg e s (Control.Monad.Trans.Writer.Strict.WriterT w m)
+ Text.Megaparsec.Debug: instance (GHC.Internal.Show.Show c, GHC.Internal.Show.Show a) => GHC.Internal.Show.Show (Text.Megaparsec.Debug.ShowComment c a)
+ Text.Megaparsec.Debug: instance (GHC.Internal.Show.Show st, Text.Megaparsec.Debug.MonadParsecDbg e s m) => Text.Megaparsec.Debug.MonadParsecDbg e s (Control.Monad.Trans.State.Lazy.StateT st m)
+ Text.Megaparsec.Debug: instance (GHC.Internal.Show.Show st, Text.Megaparsec.Debug.MonadParsecDbg e s m) => Text.Megaparsec.Debug.MonadParsecDbg e s (Control.Monad.Trans.State.Strict.StateT st m)
+ Text.Megaparsec.Debug: instance GHC.Internal.Show.Show (Text.Megaparsec.Debug.Blind x)
+ Text.Megaparsec.Error: instance (GHC.Internal.Data.Data.Data s, GHC.Internal.Data.Data.Data (Text.Megaparsec.Stream.Token s), GHC.Classes.Ord (Text.Megaparsec.Stream.Token s), GHC.Internal.Data.Data.Data e, GHC.Classes.Ord e) => GHC.Internal.Data.Data.Data (Text.Megaparsec.Error.ParseError s e)
+ Text.Megaparsec.Error: instance (GHC.Internal.Data.Data.Data s, GHC.Internal.Data.Data.Data (Text.Megaparsec.Stream.Token s), GHC.Classes.Ord (Text.Megaparsec.Stream.Token s), GHC.Internal.Data.Data.Data e, GHC.Classes.Ord e) => GHC.Internal.Data.Data.Data (Text.Megaparsec.Error.ParseErrorBundle s e)
+ Text.Megaparsec.Error: instance (GHC.Internal.Show.Show (Text.Megaparsec.Stream.Token s), GHC.Internal.Show.Show e) => GHC.Internal.Show.Show (Text.Megaparsec.Error.ParseError s e)
+ Text.Megaparsec.Error: instance (GHC.Internal.Show.Show (Text.Megaparsec.Stream.Token s), GHC.Internal.Show.Show e, Text.Megaparsec.Error.ShowErrorComponent e, Text.Megaparsec.Stream.VisualStream s, GHC.Internal.Data.Typeable.Internal.Typeable s, GHC.Internal.Data.Typeable.Internal.Typeable e) => GHC.Internal.Exception.Type.Exception (Text.Megaparsec.Error.ParseError s e)
+ Text.Megaparsec.Error: instance (GHC.Internal.Show.Show s, GHC.Internal.Show.Show (Text.Megaparsec.Stream.Token s), GHC.Internal.Show.Show e) => GHC.Internal.Show.Show (Text.Megaparsec.Error.ParseErrorBundle s e)
+ Text.Megaparsec.Error: instance (GHC.Internal.Show.Show s, GHC.Internal.Show.Show (Text.Megaparsec.Stream.Token s), GHC.Internal.Show.Show e, Text.Megaparsec.Error.ShowErrorComponent e, Text.Megaparsec.Stream.VisualStream s, Text.Megaparsec.Stream.TraversableStream s, GHC.Internal.Data.Typeable.Internal.Typeable s, GHC.Internal.Data.Typeable.Internal.Typeable e) => GHC.Internal.Exception.Type.Exception (Text.Megaparsec.Error.ParseErrorBundle s e)
+ Text.Megaparsec.Error: instance (Text.Megaparsec.Stream.Stream s, GHC.Classes.Ord e) => GHC.Internal.Base.Monoid (Text.Megaparsec.Error.ParseError s e)
+ Text.Megaparsec.Error: instance (Text.Megaparsec.Stream.Stream s, GHC.Classes.Ord e) => GHC.Internal.Base.Semigroup (Text.Megaparsec.Error.ParseError s e)
+ Text.Megaparsec.Error: instance GHC.Internal.Base.Functor Text.Megaparsec.Error.ErrorFancy
+ Text.Megaparsec.Error: instance GHC.Internal.Base.Functor Text.Megaparsec.Error.ErrorItem
+ Text.Megaparsec.Error: instance GHC.Internal.Data.Data.Data e => GHC.Internal.Data.Data.Data (Text.Megaparsec.Error.ErrorFancy e)
+ Text.Megaparsec.Error: instance GHC.Internal.Data.Data.Data t => GHC.Internal.Data.Data.Data (Text.Megaparsec.Error.ErrorItem t)
+ Text.Megaparsec.Error: instance GHC.Internal.Generics.Generic (Text.Megaparsec.Error.ErrorFancy e)
+ Text.Megaparsec.Error: instance GHC.Internal.Generics.Generic (Text.Megaparsec.Error.ErrorItem t)
+ Text.Megaparsec.Error: instance GHC.Internal.Generics.Generic (Text.Megaparsec.Error.ParseError s e)
+ Text.Megaparsec.Error: instance GHC.Internal.Generics.Generic (Text.Megaparsec.Error.ParseErrorBundle s e)
+ Text.Megaparsec.Error: instance GHC.Internal.Read.Read e => GHC.Internal.Read.Read (Text.Megaparsec.Error.ErrorFancy e)
+ Text.Megaparsec.Error: instance GHC.Internal.Read.Read t => GHC.Internal.Read.Read (Text.Megaparsec.Error.ErrorItem t)
+ Text.Megaparsec.Error: instance GHC.Internal.Show.Show e => GHC.Internal.Show.Show (Text.Megaparsec.Error.ErrorFancy e)
+ Text.Megaparsec.Error: instance GHC.Internal.Show.Show t => GHC.Internal.Show.Show (Text.Megaparsec.Error.ErrorItem t)
+ Text.Megaparsec.Error: instance Text.Megaparsec.Error.ShowErrorComponent GHC.Internal.Base.Void
+ Text.Megaparsec.Error.Builder: instance (GHC.Internal.Data.Data.Data e, GHC.Classes.Ord e) => GHC.Internal.Data.Data.Data (Text.Megaparsec.Error.Builder.EF e)
+ Text.Megaparsec.Error.Builder: instance (GHC.Internal.Data.Data.Data s, GHC.Internal.Data.Data.Data (Text.Megaparsec.Stream.Token s), GHC.Classes.Ord (Text.Megaparsec.Stream.Token s)) => GHC.Internal.Data.Data.Data (Text.Megaparsec.Error.Builder.ET s)
+ Text.Megaparsec.Error.Builder: instance GHC.Classes.Ord e => GHC.Internal.Base.Monoid (Text.Megaparsec.Error.Builder.EF e)
+ Text.Megaparsec.Error.Builder: instance GHC.Classes.Ord e => GHC.Internal.Base.Semigroup (Text.Megaparsec.Error.Builder.EF e)
+ Text.Megaparsec.Error.Builder: instance GHC.Internal.Generics.Generic (Text.Megaparsec.Error.Builder.EF e)
+ Text.Megaparsec.Error.Builder: instance GHC.Internal.Generics.Generic (Text.Megaparsec.Error.Builder.ET s)
+ Text.Megaparsec.Error.Builder: instance Text.Megaparsec.Stream.Stream s => GHC.Internal.Base.Monoid (Text.Megaparsec.Error.Builder.ET s)
+ Text.Megaparsec.Error.Builder: instance Text.Megaparsec.Stream.Stream s => GHC.Internal.Base.Semigroup (Text.Megaparsec.Error.Builder.ET s)
+ Text.Megaparsec.Internal: instance (GHC.Classes.Ord e, Text.Megaparsec.Stream.Stream s) => GHC.Internal.Base.Alternative (Text.Megaparsec.Internal.ParsecT e s m)
+ Text.Megaparsec.Internal: instance (GHC.Classes.Ord e, Text.Megaparsec.Stream.Stream s) => GHC.Internal.Base.MonadPlus (Text.Megaparsec.Internal.ParsecT e s m)
+ Text.Megaparsec.Internal: instance (Text.Megaparsec.Stream.Stream s, GHC.Internal.Base.Monoid a) => GHC.Internal.Base.Monoid (Text.Megaparsec.Internal.ParsecT e s m a)
+ Text.Megaparsec.Internal: instance (Text.Megaparsec.Stream.Stream s, GHC.Internal.Base.Semigroup a) => GHC.Internal.Base.Semigroup (Text.Megaparsec.Internal.ParsecT e s m a)
+ Text.Megaparsec.Internal: instance (Text.Megaparsec.Stream.Stream s, GHC.Internal.Control.Monad.Fix.MonadFix m) => GHC.Internal.Control.Monad.Fix.MonadFix (Text.Megaparsec.Internal.ParsecT e s m)
+ Text.Megaparsec.Internal: instance (a GHC.Types.~ Text.Megaparsec.Stream.Tokens s, GHC.Internal.Data.String.IsString a, GHC.Classes.Eq a, Text.Megaparsec.Stream.Stream s, GHC.Classes.Ord e) => GHC.Internal.Data.String.IsString (Text.Megaparsec.Internal.ParsecT e s m a)
+ Text.Megaparsec.Internal: instance GHC.Classes.Ord t => GHC.Internal.Base.Monoid (Text.Megaparsec.Internal.Hints t)
+ Text.Megaparsec.Internal: instance GHC.Classes.Ord t => GHC.Internal.Base.Semigroup (Text.Megaparsec.Internal.Hints t)
+ Text.Megaparsec.Internal: instance GHC.Internal.Base.Functor (Text.Megaparsec.Internal.ParsecT e s m)
+ Text.Megaparsec.Internal: instance GHC.Internal.Base.Functor (Text.Megaparsec.Internal.Reply e s)
+ Text.Megaparsec.Internal: instance GHC.Internal.Base.Functor (Text.Megaparsec.Internal.Result s e)
+ Text.Megaparsec.Internal: instance Text.Megaparsec.Stream.Stream s => GHC.Internal.Base.Applicative (Text.Megaparsec.Internal.ParsecT e s m)
+ Text.Megaparsec.Internal: instance Text.Megaparsec.Stream.Stream s => GHC.Internal.Base.Monad (Text.Megaparsec.Internal.ParsecT e s m)
+ Text.Megaparsec.Internal: instance Text.Megaparsec.Stream.Stream s => GHC.Internal.Control.Monad.Fail.MonadFail (Text.Megaparsec.Internal.ParsecT e s m)
+ Text.Megaparsec.Pos: instance GHC.Internal.Base.Semigroup Text.Megaparsec.Pos.Pos
+ Text.Megaparsec.Pos: instance GHC.Internal.Data.Data.Data Text.Megaparsec.Pos.InvalidPosException
+ Text.Megaparsec.Pos: instance GHC.Internal.Data.Data.Data Text.Megaparsec.Pos.Pos
+ Text.Megaparsec.Pos: instance GHC.Internal.Data.Data.Data Text.Megaparsec.Pos.SourcePos
+ Text.Megaparsec.Pos: instance GHC.Internal.Exception.Type.Exception Text.Megaparsec.Pos.InvalidPosException
+ Text.Megaparsec.Pos: instance GHC.Internal.Generics.Generic Text.Megaparsec.Pos.InvalidPosException
+ Text.Megaparsec.Pos: instance GHC.Internal.Generics.Generic Text.Megaparsec.Pos.Pos
+ Text.Megaparsec.Pos: instance GHC.Internal.Generics.Generic Text.Megaparsec.Pos.SourcePos
+ Text.Megaparsec.Pos: instance GHC.Internal.Read.Read Text.Megaparsec.Pos.Pos
+ Text.Megaparsec.Pos: instance GHC.Internal.Read.Read Text.Megaparsec.Pos.SourcePos
+ Text.Megaparsec.Pos: instance GHC.Internal.Show.Show Text.Megaparsec.Pos.InvalidPosException
+ Text.Megaparsec.Pos: instance GHC.Internal.Show.Show Text.Megaparsec.Pos.Pos
+ Text.Megaparsec.Pos: instance GHC.Internal.Show.Show Text.Megaparsec.Pos.SourcePos
+ Text.Megaparsec.State: instance (GHC.Internal.Data.Data.Data e, GHC.Internal.Data.Data.Data (Text.Megaparsec.Error.ParseError s e), GHC.Internal.Data.Data.Data s) => GHC.Internal.Data.Data.Data (Text.Megaparsec.State.State s e)
+ Text.Megaparsec.State: instance (GHC.Internal.Show.Show (Text.Megaparsec.Error.ParseError s e), GHC.Internal.Show.Show s) => GHC.Internal.Show.Show (Text.Megaparsec.State.State s e)
+ Text.Megaparsec.State: instance GHC.Internal.Data.Data.Data s => GHC.Internal.Data.Data.Data (Text.Megaparsec.State.PosState s)
+ Text.Megaparsec.State: instance GHC.Internal.Generics.Generic (Text.Megaparsec.State.PosState s)
+ Text.Megaparsec.State: instance GHC.Internal.Generics.Generic (Text.Megaparsec.State.State s e)
+ Text.Megaparsec.State: instance GHC.Internal.Show.Show s => GHC.Internal.Show.Show (Text.Megaparsec.State.PosState s)
+ Text.Megaparsec.Stream: instance Text.Megaparsec.Stream.TraversableStream GHC.Internal.Base.String
+ Text.Megaparsec.Stream: instance Text.Megaparsec.Stream.VisualStream GHC.Internal.Base.String
+ Text.Megaparsec.Unicode: isZeroWidthChar :: Char -> Bool
Files
- CHANGELOG.md +12/−0
- Text/Megaparsec/Byte/Lexer.hs +4/−5
- Text/Megaparsec/Char/Lexer.hs +4/−5
- Text/Megaparsec/Internal.hs +24/−1
- Text/Megaparsec/Stream.hs +18/−15
- Text/Megaparsec/Unicode.hs +44/−1
- megaparsec.cabal +2/−2
CHANGELOG.md view
@@ -1,5 +1,17 @@ *Megaparsec follows [SemVer](https://semver.org/).* +## Megaparsec 9.8.0++* Fixed the associativity of the `(<|>)` operator. [Issue+ 412](https://github.com/mrkkrp/megaparsec/issues/412).+* Fixed the loss of precision in `decimal`, `binary`, `octal`, and+ `hexadecimal` functions in `Text.Megaparsec.Byte.Lexer` and+ `Text.Megaparsec.Char.Lexer` when they are used to parse floating point+ numbers. [Issue 479](https://github.com/mrkkrp/megaparsec/issues/479).+* Fixed handling of zero-width characters in error messages. To that end,+ added `isZeroWidthChar` function in `Text.Megaparsec.Unicode`. [Issue+ 572](https://github.com/mrkkrp/megaparsec/issues/572).+ ## Megaparsec 9.7.1 * Typo fixes and compatibility with `QuickCheck >= 2.17` for
Text/Megaparsec/Byte/Lexer.hs view
@@ -41,7 +41,6 @@ import Control.Applicative import Data.Functor (void)-import Data.List (foldl') import Data.Proxy import Data.Scientific (Scientific) import qualified Data.Scientific as Sci@@ -122,7 +121,7 @@ m a decimal_ = mkNum <$> takeWhile1P (Just "digit") isDigit where- mkNum = foldl' step 0 . chunkToTokens (Proxy :: Proxy s)+ mkNum = fromInteger . foldl' step 0 . chunkToTokens (Proxy :: Proxy s) step a w = a * 10 + fromIntegral (w - 48) {-# INLINE decimal_ #-} @@ -145,7 +144,7 @@ <$> takeWhile1P Nothing isBinDigit <?> "binary integer" where- mkNum = foldl' step 0 . chunkToTokens (Proxy :: Proxy s)+ mkNum = fromInteger . foldl' step 0 . chunkToTokens (Proxy :: Proxy s) step a w = a * 2 + fromIntegral (w - 48) isBinDigit w = w == 48 || w == 49 {-# INLINEABLE binary #-}@@ -170,7 +169,7 @@ <$> takeWhile1P Nothing isOctDigit <?> "octal integer" where- mkNum = foldl' step 0 . chunkToTokens (Proxy :: Proxy s)+ mkNum = fromInteger . foldl' step 0 . chunkToTokens (Proxy :: Proxy s) step a w = a * 8 + fromIntegral (w - 48) isOctDigit w = w - 48 < 8 {-# INLINEABLE octal #-}@@ -195,7 +194,7 @@ <$> takeWhile1P Nothing isHexDigit <?> "hexadecimal integer" where- mkNum = foldl' step 0 . chunkToTokens (Proxy :: Proxy s)+ mkNum = fromInteger . foldl' step 0 . chunkToTokens (Proxy :: Proxy s) step a w | w >= 48 && w <= 57 = a * 16 + fromIntegral (w - 48) | w >= 97 = a * 16 + fromIntegral (w - 87)
Text/Megaparsec/Char/Lexer.hs view
@@ -69,7 +69,6 @@ import Control.Applicative import Control.Monad (void) import qualified Data.Char as Char-import Data.List (foldl') import Data.List.NonEmpty (NonEmpty (..)) import Data.Maybe (fromMaybe, isJust, listToMaybe) import Data.Proxy@@ -372,7 +371,7 @@ m a decimal_ = mkNum <$> takeWhile1P (Just "digit") Char.isDigit where- mkNum = foldl' step 0 . chunkToTokens (Proxy :: Proxy s)+ mkNum = fromInteger . foldl' step 0 . chunkToTokens (Proxy :: Proxy s) step a c = a * 10 + fromIntegral (Char.digitToInt c) {-# INLINE decimal_ #-} @@ -395,7 +394,7 @@ <$> takeWhile1P Nothing isBinDigit <?> "binary integer" where- mkNum = foldl' step 0 . chunkToTokens (Proxy :: Proxy s)+ mkNum = fromInteger . foldl' step 0 . chunkToTokens (Proxy :: Proxy s) step a c = a * 2 + fromIntegral (Char.digitToInt c) isBinDigit x = x == '0' || x == '1' {-# INLINEABLE binary #-}@@ -423,7 +422,7 @@ <$> takeWhile1P Nothing Char.isOctDigit <?> "octal integer" where- mkNum = foldl' step 0 . chunkToTokens (Proxy :: Proxy s)+ mkNum = fromInteger . foldl' step 0 . chunkToTokens (Proxy :: Proxy s) step a c = a * 8 + fromIntegral (Char.digitToInt c) {-# INLINEABLE octal #-} @@ -450,7 +449,7 @@ <$> takeWhile1P Nothing Char.isHexDigit <?> "hexadecimal integer" where- mkNum = foldl' step 0 . chunkToTokens (Proxy :: Proxy s)+ mkNum = fromInteger . foldl' step 0 . chunkToTokens (Proxy :: Proxy s) step a c = a * 16 + fromIntegral (Char.digitToInt c) {-# INLINEABLE hexadecimal #-}
Text/Megaparsec/Internal.hs view
@@ -357,9 +357,32 @@ let meerr err ms = let ncerr err' s' = cerr (err' <> err) (longestMatch ms s') neok x s' hs = eok x s' (toHints (stateOffset s') err <> hs)- neerr err' s' = eerr (err' <> err) (longestMatch ms s')+ neerr err' s' =+ let combinedErr = combineErrors (stateOffset s) err err'+ in eerr combinedErr (longestMatch ms s') in unParser n s cok ncerr neok neerr in unParser m s cok cerr eok meerr+ where+ combineErrors altOffset e1 e2 = case (e1, e2) of+ (TrivialError o1 u1 p1, TrivialError o2 u2 p2) ->+ -- When merging alternative errors, if one is ahead due to try, we+ -- bring both to the alternative position and union their expected+ -- tokens.+ if o1 > altOffset || o2 > altOffset+ then+ -- At least one error is ahead, normalize to alt position. Only+ -- include expected tokens from errors at the alt position.+ let p1' = if o1 == altOffset then p1 else E.empty+ p2' = if o2 == altOffset then p2 else E.empty+ -- Use the unexpected from the error at alt position, or the+ -- furthest.+ unexp = case (o1 `compare` altOffset, o2 `compare` altOffset) of+ (EQ, _) -> u1+ (_, EQ) -> u2+ _ -> if o1 >= o2 then u1 else u2+ in TrivialError altOffset unexp (E.union p1' p2')+ else e2 <> e1+ _ -> e2 <> e1 {-# INLINE pPlus #-} -- | From two states, return the one with the greater number of processed
Text/Megaparsec/Stream.hs view
@@ -40,7 +40,7 @@ import qualified Data.ByteString.Lazy as BL import qualified Data.ByteString.Lazy.Char8 as BL8 import Data.Char (chr)-import Data.Foldable (foldl', toList)+import Data.Foldable (toList) import Data.Kind (Type) import Data.List.NonEmpty (NonEmpty (..)) import qualified Data.List.NonEmpty as NE@@ -568,8 +568,8 @@ (Token s -> Char) -> -- | Newline token and tab token (Token s, Token s) ->- -- | Increment in column position for a token- (Token s -> Pos) ->+ -- | Update column position for a token+ (Token s -> Pos -> Pos) -> -- | Offset to reach Int -> -- | Initial 'PosState' to use@@ -631,7 +631,7 @@ (g . (fromTok ch :)) | otherwise -> St- (SourcePos n l (c <> columnIncrement ch))+ (SourcePos n l (columnIncrement ch c)) (g . (fromTok ch :)) {-# INLINE reachOffset' #-} @@ -645,9 +645,9 @@ (forall b. (b -> Token s -> b) -> b -> Tokens s -> b) -> -- | Newline token and tab token (Token s, Token s) ->+ -- | Update column position for a token+ (Token s -> Pos -> Pos) -> -- | Offset to reach- -- | Increment in column position for a token- (Token s -> Pos) -> Int -> -- | Initial 'PosState' to use PosState s ->@@ -680,7 +680,7 @@ | ch == tabTok -> SourcePos n l (mkPos $ c' + w - ((c' - 1) `rem` w)) | otherwise ->- SourcePos n l (c <> columnIncrement ch)+ SourcePos n l (columnIncrement ch c) {-# INLINE reachOffsetNoLine' #-} -- | Like 'BL.splitAt' but accepts the index as an 'Int'.@@ -764,12 +764,15 @@ go !i n xs = ' ' : go (i + 1) (n - 1) xs w = unPos w' --- | Return increment in column position that corresponds to the given--- 'Char'.-charInc :: Char -> Pos-charInc ch = if Unicode.isWideChar ch then pos1 <> pos1 else pos1+-- | Return updated column position that corresponds to the given 'Char'.+charInc :: Char -> Pos -> Pos+charInc ch c+ | Unicode.isZeroWidthChar ch = c+ | Unicode.isWideChar ch = c <> pos1 <> pos1+ | otherwise = c <> pos1 --- | Return increment in column position that corresponds to the given--- 'Word8'.-byteInc :: Word8 -> Pos-byteInc _ = pos1+-- | Return updated column position that corresponds to the given 'Word8'.+byteInc :: Word8 -> Pos -> Pos+byteInc w c+ | w < 0x20 || (w >= 0x7f && w < 0xa0) = c -- C0 and C1 control chars+ | otherwise = c <> pos1
Text/Megaparsec/Unicode.hs view
@@ -16,6 +16,7 @@ ( stringLength, charLength, isWideChar,+ isZeroWidthChar, ) where @@ -33,7 +34,10 @@ -- -- @since 9.7.0 charLength :: Char -> Int-charLength ch = if isWideChar ch then 2 else 1+charLength ch+ | isZeroWidthChar ch = 0+ | isWideChar ch = 2+ | otherwise = 1 -- | Determine whether the given 'Char' is “wide”, that is, whether it spans -- 2 columns instead of one.@@ -52,6 +56,24 @@ (a, b) = wideCharRanges ! mid n = ord c +-- | Determine whether the given 'Char' is "zero-width", that is, whether it+-- has no visible representation and does not advance the cursor position.+-- This includes control characters and certain Unicode zero-width characters.+--+-- @since 9.8.0+isZeroWidthChar :: Char -> Bool+isZeroWidthChar c = go (bounds zeroWidthCharRanges)+ where+ go (lo, hi)+ | hi < lo = False+ | a <= n && n <= b = True+ | n < a = go (lo, pred mid)+ | otherwise = go (succ mid, hi)+ where+ mid = (lo + hi) `div` 2+ (a, b) = zeroWidthCharRanges ! mid+ n = ord c+ -- | Wide character ranges. wideCharRanges :: Array Int (Int, Int) wideCharRanges =@@ -178,3 +200,24 @@ (0x02f800, 0x02fa1d) ] {-# NOINLINE wideCharRanges #-}++-- | Zero-width character ranges.+zeroWidthCharRanges :: Array Int (Int, Int)+zeroWidthCharRanges =+ listArray+ (0, 12)+ [ (0x0000, 0x001f), -- C0 control characters+ (0x007f, 0x009f), -- DEL and C1 control characters+ (0x00ad, 0x00ad), -- Soft Hyphen+ (0x0300, 0x036f), -- Combining Diacritical Marks+ (0x0483, 0x0489), -- Combining Cyrillic+ (0x0591, 0x05bd), -- Hebrew combining marks+ (0x05bf, 0x05bf), -- Hebrew point+ (0x05c1, 0x05c2), -- Hebrew points+ (0x05c4, 0x05c5), -- Hebrew marks+ (0x05c7, 0x05c7), -- Hebrew point+ (0x0610, 0x061a), -- Arabic combining marks+ (0x200b, 0x200f), -- Zero width chars and directional marks+ (0x202a, 0x202e) -- Directional formatting+ ]+{-# NOINLINE zeroWidthCharRanges #-}
megaparsec.cabal view
@@ -1,6 +1,6 @@ cabal-version: 2.4 name: megaparsec-version: 9.7.1+version: 9.8.0 license: BSD-2-Clause license-file: LICENSE.md maintainer: Mark Karpov <markkarpov92@gmail.com>@@ -72,7 +72,7 @@ if flag(dev) ghc-options: -Wall -Werror -Wredundant-constraints -Wpartial-fields- -Wunused-packages -Wno-unused-imports+ -Wunused-packages else ghc-options: -O2 -Wall