Hello community,

here is the log from the commit of package ghc-vector-builder for 
openSUSE:Factory checked in at 2019-02-17 12:20:40
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/ghc-vector-builder (Old)
 and      /work/SRC/openSUSE:Factory/.ghc-vector-builder.new.28833 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "ghc-vector-builder"

Sun Feb 17 12:20:40 2019 rev:4 rq:674312 version:0.3.7.2

Changes:
--------
--- /work/SRC/openSUSE:Factory/ghc-vector-builder/ghc-vector-builder.changes    
2018-10-25 09:07:04.258478838 +0200
+++ 
/work/SRC/openSUSE:Factory/.ghc-vector-builder.new.28833/ghc-vector-builder.changes
 2019-02-17 12:20:43.396210753 +0100
@@ -1,0 +2,6 @@
+Thu Feb  7 13:49:01 UTC 2019 - psim...@suse.com
+
+- Update vector-builder to version 0.3.7.2.
+  Upstream does not provide a change log file.
+
+-------------------------------------------------------------------

Old:
----
  vector-builder-0.3.6.tar.gz

New:
----
  vector-builder-0.3.7.2.tar.gz

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Other differences:
------------------
++++++ ghc-vector-builder.spec ++++++
--- /var/tmp/diff_new_pack.7euwmZ/_old  2019-02-17 12:20:44.212210529 +0100
+++ /var/tmp/diff_new_pack.7euwmZ/_new  2019-02-17 12:20:44.216210528 +0100
@@ -1,7 +1,7 @@
 #
 # spec file for package ghc-vector-builder
 #
-# Copyright (c) 2018 SUSE LINUX GmbH, Nuernberg, Germany.
+# Copyright (c) 2019 SUSE LINUX GmbH, Nuernberg, Germany.
 #
 # All modifications and additions to the file contributed by third parties
 # remain the property of their copyright owners, unless otherwise agreed
@@ -19,7 +19,7 @@
 %global pkg_name vector-builder
 %bcond_with tests
 Name:           ghc-%{pkg_name}
-Version:        0.3.6
+Version:        0.3.7.2
 Release:        0
 Summary:        Vector builder
 License:        MIT
@@ -59,8 +59,8 @@
 > >import qualified Data.Vector as A >import qualified VectorBuilder.Builder as
 B >import qualified VectorBuilder.Vector as C > > >myVector :: A.Vector a ->
 [a] -> a -> A.Vector a >myVector vector list element = > C.build builder >
-where > builder = > B.vector vector <> > foldMap B.singleton list <> >
-B.singleton element.
+where > builder = > B.vector vector <> > B.foldable list <> > B.singleton
+element.
 
 %package devel
 Summary:        Haskell %{pkg_name} library development files

++++++ vector-builder-0.3.6.tar.gz -> vector-builder-0.3.7.2.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/vector-builder-0.3.6/library/VectorBuilder/Alternative.hs 
new/vector-builder-0.3.7.2/library/VectorBuilder/Alternative.hs
--- old/vector-builder-0.3.6/library/VectorBuilder/Alternative.hs       
2018-08-03 14:51:04.000000000 +0200
+++ new/vector-builder-0.3.7.2/library/VectorBuilder/Alternative.hs     
2019-02-06 12:39:12.000000000 +0100
@@ -9,10 +9,11 @@
 import Data.Vector (Vector)
 import qualified VectorBuilder.Builder as A
 import qualified VectorBuilder.Vector as B
+import qualified Data.Vector.Generic as C
 
 
 {-# INLINABLE many #-}
-many :: Alternative m => m a -> m (Vector a)
+many :: (Alternative m, C.Vector vector a) => m a -> m (vector a)
 many = fmap B.build . manyBuilder
 
 {-# INLINABLE manyBuilder #-}
@@ -22,7 +23,7 @@
   in loop
 
 {-# INLINABLE some #-}
-some :: Alternative m => m a -> m (Vector a)
+some :: (Alternative m, C.Vector vector a) => m a -> m (vector a)
 some m = B.build <$> someBuilder m
 
 {-# INLINABLE someBuilder #-}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/vector-builder-0.3.6/library/VectorBuilder/Builder.hs 
new/vector-builder-0.3.7.2/library/VectorBuilder/Builder.hs
--- old/vector-builder-0.3.6/library/VectorBuilder/Builder.hs   2018-08-03 
14:51:04.000000000 +0200
+++ new/vector-builder-0.3.7.2/library/VectorBuilder/Builder.hs 2019-02-06 
12:39:12.000000000 +0100
@@ -4,6 +4,7 @@
   empty,
   singleton,
   vector,
+  foldable,
 )
 where
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/vector-builder-0.3.6/library/VectorBuilder/Core/Builder.hs 
new/vector-builder-0.3.7.2/library/VectorBuilder/Core/Builder.hs
--- old/vector-builder-0.3.6/library/VectorBuilder/Core/Builder.hs      
2018-08-03 14:51:04.000000000 +0200
+++ new/vector-builder-0.3.7.2/library/VectorBuilder/Core/Builder.hs    
2019-02-06 12:39:12.000000000 +0100
@@ -1,9 +1,10 @@
 module VectorBuilder.Core.Builder
 where
 
-import VectorBuilder.Prelude hiding (empty)
+import VectorBuilder.Prelude hiding (empty, concat)
 import qualified VectorBuilder.Core.Update as A
 import qualified Data.Vector.Generic as B
+import qualified Data.Vector.Generic.Mutable as C
 
 
 -- |
@@ -39,6 +40,11 @@
 vector vector =
   Builder (B.length vector) (A.writeMany vector)
 
+{-# INLINE foldable #-}
+foldable :: Foldable foldable => foldable element -> Builder element
+foldable foldable =
+  Builder (length foldable) (A.writeFoldable foldable)
+
 
 -- * Updates
 
@@ -62,6 +68,17 @@
 append =
   flip prepend
 
+{-# INLINE concat #-}
+concat :: Foldable foldable => foldable (Builder element) -> Builder element
+concat builders =
+  Builder
+    (let
+      step size (Builder builderSize _) = size + builderSize
+      in foldl' step 0 builders)
+    (A.Update (\mVector offset -> foldM_ (\index (Builder size (A.Update st)) 
->
+      st mVector index $> index + size)
+      offset
+      builders))
 
 -- * Instances
 
@@ -71,6 +88,8 @@
   {-# INLINE (<>) #-}
   (<>) =
     prepend
+  sconcat =
+    concat
 
 -- |
 -- Provides support for /O(1)/ concatenation.
@@ -81,5 +100,7 @@
   {-# INLINE mappend #-}
   mappend =
     (<>)
-
+  {-# INLINE mconcat #-}
+  mconcat =
+    concat
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/vector-builder-0.3.6/library/VectorBuilder/Core/Update.hs 
new/vector-builder-0.3.7.2/library/VectorBuilder/Core/Update.hs
--- old/vector-builder-0.3.6/library/VectorBuilder/Core/Update.hs       
2018-08-03 14:51:04.000000000 +0200
+++ new/vector-builder-0.3.7.2/library/VectorBuilder/Core/Update.hs     
2019-02-06 12:39:12.000000000 +0100
@@ -28,3 +28,8 @@
 empty :: Update element
 empty =
   Update (\_ _ -> pure ())
+
+{-# INLINE writeFoldable #-}
+writeFoldable :: Foldable foldable => foldable element -> Update element
+writeFoldable foldable =
+  Update (\mVector offset -> foldM_ (\ index element -> A.unsafeWrite mVector 
index element $> succ index) offset foldable)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/vector-builder-0.3.6/library/VectorBuilder/MonadPlus.hs 
new/vector-builder-0.3.7.2/library/VectorBuilder/MonadPlus.hs
--- old/vector-builder-0.3.6/library/VectorBuilder/MonadPlus.hs 2018-08-03 
14:51:04.000000000 +0200
+++ new/vector-builder-0.3.7.2/library/VectorBuilder/MonadPlus.hs       
2019-02-06 12:39:12.000000000 +0100
@@ -9,33 +9,51 @@
 import Data.Vector (Vector)
 import qualified VectorBuilder.Builder as A
 import qualified VectorBuilder.Vector as B
+import qualified Data.Vector.Generic as C
 
 
 {-# INLINABLE many #-}
-many :: MonadPlus m => m a -> m (Vector a)
+many :: (MonadPlus m, C.Vector vector element) => m element -> m (vector 
element)
 many m =
-  liftM B.build loop
+  liftM B.build (manyBuilder m)
+
+{-# INLINABLE manyBuilder #-}
+manyBuilder :: (MonadPlus m) => m element -> m (A.Builder element)
+manyBuilder m =
+  loop mempty
   where
-    loop =
+    loop !builder =
       mplus
         (do
           !element <- m
-          remainders <- loop
-          return (A.singleton element <> remainders))
-        (return mempty)
+          loop (builder <> A.singleton element))
+        (return builder)
+
+{-# INLINABLE many1 #-}
+many1 :: (MonadPlus m, C.Vector vector element) => m element -> m (vector 
element)
+many1 m =
+  do
+    firstElement <- m
+    builder <- manyBuilder m
+    return (B.build (A.singleton firstElement <> builder))
 
 {-# INLINABLE sepBy #-}
-sepBy :: MonadPlus m => m element -> m separator -> m (Vector element)
+sepBy :: (MonadPlus m, C.Vector vector element) => m element -> m separator -> 
m (vector element)
 sepBy elementM separatorM =
-  mplus (sepBy1 elementM separatorM) (return mempty)
+  mplus (sepBy1 elementM separatorM) (return C.empty)
 
 {-# INLINABLE sepBy1 #-}
-sepBy1 :: MonadPlus m => m element -> m separator -> m (Vector element)
+sepBy1 :: (MonadPlus m, C.Vector vector element) => m element -> m separator 
-> m (vector element)
 sepBy1 elementM separatorM =
-  liftM B.build loop
+  do
+    firstElement <- elementM
+    builder <- loop (A.singleton firstElement)
+    return (B.build builder)
   where
-    loop =
-      do
-        !element <- elementM
-        remainders <- mplus (separatorM >> loop) (return mempty)
-        return (A.singleton element <> remainders)
+    loop builder =
+      mplus
+        (do
+          separatorM
+          !element <- elementM
+          loop (builder <> A.singleton element))
+        (return builder)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/vector-builder-0.3.6/tests/Main/Sample.hs 
new/vector-builder-0.3.7.2/tests/Main/Sample.hs
--- old/vector-builder-0.3.6/tests/Main/Sample.hs       2018-08-03 
14:51:04.000000000 +0200
+++ new/vector-builder-0.3.7.2/tests/Main/Sample.hs     2019-02-06 
12:39:12.000000000 +0100
@@ -10,7 +10,8 @@
 data Sample a =
   Empty |
   Singleton a |
-  Vector (Vector a)
+  Vector (Vector a) |
+  List [a]
   deriving (Show)
 
 toBuilder :: Sample a -> A.Builder a
@@ -19,6 +20,7 @@
     Empty -> A.empty
     Singleton a -> A.singleton a
     Vector a -> A.vector a
+    List a -> A.foldable a
 
 toVector :: Sample a -> Vector a
 toVector =
@@ -26,12 +28,14 @@
     Empty -> B.empty
     Singleton a -> B.singleton a
     Vector a -> a
+    List a -> B.fromList a
 
 instance C.Arbitrary a => C.Arbitrary (Sample a) where
   arbitrary =
     do
-      constructorIndex <- C.choose (0 :: Int, 2)
+      constructorIndex <- C.choose (0 :: Int, 3)
       case constructorIndex of
         0 -> return Empty
         1 -> C.arbitrary >>= return . Singleton
         2 -> C.arbitrary >>= return . Vector
+        3 -> C.arbitrary >>= return . List
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/vector-builder-0.3.6/tests/Main.hs 
new/vector-builder-0.3.7.2/tests/Main.hs
--- old/vector-builder-0.3.6/tests/Main.hs      2018-08-03 14:51:04.000000000 
+0200
+++ new/vector-builder-0.3.7.2/tests/Main.hs    2019-02-06 12:39:12.000000000 
+0100
@@ -8,16 +8,18 @@
 import qualified VectorBuilder.Builder as A
 import qualified VectorBuilder.Vector as B
 import qualified VectorBuilder.Alternative as F
+import qualified VectorBuilder.MonadPlus as H
 import qualified Main.Sample as C
 import qualified Data.Attoparsec.Text as D
 import qualified Data.Vector as E
+import qualified Data.Text as G
 
 
 main =
   defaultMain $
   testGroup "All tests"
   [
-    testProperty "" $ \(samples :: [C.Sample Int]) ->
+    testProperty "samples" $ \(samples :: [C.Sample Int]) ->
       foldMap C.toVector samples ===
       B.build (foldMap C.toBuilder samples)
     ,
@@ -27,6 +29,33 @@
     ,
     testCase "Alternative.some on empty" $ assertEqual ""
       (Left "not enough input")
-      (D.parseOnly (F.some D.anyChar) "")
+      (D.parseOnly (F.some D.anyChar :: D.Parser (Vector Char)) "")
+    ,
+    testProperty "mconcat" $ \(samples :: [C.Sample Int]) ->
+      foldMap C.toVector samples ===
+      B.build (mconcat (map C.toBuilder samples))
+    ,
+    testProperty "foldable" $ \(elements :: [Int]) ->
+      E.fromList elements ===
+      B.build (A.foldable elements)
+    ,
+    testGroup "MonadPlus"
+    [
+      testProperty "many" $ \(elements :: [Char]) ->
+        Right (E.fromList elements) ===
+        D.parseOnly (H.many D.anyChar) (fromString elements)
+      ,
+      testProperty "many1" $ \(elements :: [Char]) ->
+        (if null elements
+          then Left "not enough input"
+          else Right (E.fromList elements)) ===
+        D.parseOnly (H.many1 D.anyChar) (fromString elements)
+      ,
+      testProperty "sepBy1" $ \(elements :: [Char]) ->
+        (if null elements
+          then Left "not enough input"
+          else Right (E.fromList elements)) ===
+        D.parseOnly (H.sepBy1 D.anyChar (D.char ',')) (G.intersperse ',' 
(fromString elements))
+    ]
   ]
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/vector-builder-0.3.6/vector-builder.cabal 
new/vector-builder-0.3.7.2/vector-builder.cabal
--- old/vector-builder-0.3.6/vector-builder.cabal       2018-08-03 
14:51:04.000000000 +0200
+++ new/vector-builder-0.3.7.2/vector-builder.cabal     2019-02-06 
12:39:12.000000000 +0100
@@ -1,7 +1,7 @@
 name:
   vector-builder
 version:
-  0.3.6
+  0.3.7.2
 synopsis:
   Vector builder
 description:
@@ -29,7 +29,7 @@
   >  where
   >    builder =
   >      B.vector vector <>
-  >      foldMap B.singleton list <>
+  >      B.foldable list <>
   >      B.singleton element
 category:
   Vector
@@ -79,7 +79,7 @@
     vector >=0.11 && <0.13,
     semigroups >=0.16 && <0.20,
     base-prelude <2,
-    base >=4.6 && <5
+    base >=4.8 && <5
 
 test-suite tests
   type:
@@ -98,57 +98,8 @@
     attoparsec >=0.13 && <0.14,
     QuickCheck >=2.8.1 && <3,
     quickcheck-instances >=0.3.11 && <0.4,
-    rerebase ==1.*,
-    tasty >=1.0.1 && <1.2,
-    tasty-hunit >=0.10 && <0.11,
-    tasty-quickcheck >=0.10 && <0.11,
+    rerebase <2,
+    tasty >=0.12 && <2,
+    tasty-hunit >=0.9 && <0.11,
+    tasty-quickcheck >=0.9 && <0.11,
     vector-builder
-
--- benchmark foldl-benchmark
---   type:
---     exitcode-stdio-1.0
---   hs-source-dirs:
---     foldl-benchmark
---   main-is:
---     Main.hs
---   ghc-options:
---     -O2
---     -threaded
---     "-with-rtsopts=-N"
---     -rtsopts
---   default-extensions:
---     Arrows, BangPatterns, ConstraintKinds, DataKinds, DefaultSignatures, 
DeriveDataTypeable, DeriveFoldable, DeriveFunctor, DeriveGeneric, 
DeriveTraversable, EmptyDataDecls, FlexibleContexts, FlexibleInstances, 
FunctionalDependencies, GADTs, GeneralizedNewtypeDeriving, LambdaCase, 
LiberalTypeSynonyms, MagicHash, MultiParamTypeClasses, MultiWayIf, 
NoImplicitPrelude, NoMonomorphismRestriction, OverloadedStrings, PatternGuards, 
ParallelListComp, QuasiQuotes, RankNTypes, RecordWildCards, 
ScopedTypeVariables, StandaloneDeriving, TemplateHaskell, TupleSections, 
TypeFamilies, TypeOperators, UnboxedTuples
---   default-language:
---     Haskell2010
---   build-depends:
---     vector-builder,
---     foldl >=1.2 && <2,
---     -- benchmarking:
---     criterion >=1.1 && <2,
---     -- general:
---     rerebase <2
-
--- test-suite foldl-profiling
---   type:
---     exitcode-stdio-1.0
---   hs-source-dirs:
---     foldl-profiling
---   main-is:
---     Main.hs
---   ghc-options:
---     -O2
---     -threaded
---     "-with-rtsopts=-N"
---     -rtsopts
---   default-extensions:
---     Arrows, BangPatterns, ConstraintKinds, DataKinds, DefaultSignatures, 
DeriveDataTypeable, DeriveFoldable, DeriveFunctor, DeriveGeneric, 
DeriveTraversable, EmptyDataDecls, FlexibleContexts, FlexibleInstances, 
FunctionalDependencies, GADTs, GeneralizedNewtypeDeriving, LambdaCase, 
LiberalTypeSynonyms, MagicHash, MultiParamTypeClasses, MultiWayIf, 
NoImplicitPrelude, NoMonomorphismRestriction, OverloadedStrings, PatternGuards, 
ParallelListComp, QuasiQuotes, RankNTypes, RecordWildCards, 
ScopedTypeVariables, StandaloneDeriving, TemplateHaskell, TupleSections, 
TypeFamilies, TypeOperators, UnboxedTuples
---   default-language:
---     Haskell2010
---   build-depends:
---     vector-builder,
---     foldl >=1.2 && <2,
---     -- benchmarking:
---     criterion >=1.1 && <2,
---     -- general:
---     bug ==1.*,
---     rerebase <2


Reply via email to