about summary refs log tree commit diff
path: root/users/glittershark/xanthous/src
diff options
context:
space:
mode:
authorsterni <sternenseemann@systemli.org>2021-03-19T13·13+0000
committersterni <sternenseemann@systemli.org>2021-03-19T16·49+0000
commita01fe5c06fc99bd66c681b981f63534e03063aee (patch)
tree1da3ace68e4eb6d56fecc0d2d5046c9b74045904 /users/glittershark/xanthous/src
parent531fc2b80bd4ca5aac8abe371255bcd40395e766 (diff)
fix(gs/xanthous): fix build failures caused by dependency updates r/2286
The following changes in dependencies of xanthous broke the build and
have been fixed in this CL. Thus we can reenable CI for xanthous.

* random 1.2.0 removed the Read instance for StdGen, so we need use
  System.Random.Internal to un-newtype StdGen into an SMGen in the
  appropriate places as that type still has a Show and Read instance.
  Requires a new direct dependency on splitmix as well.

* witherable 4.0 renamed Data.Witherable into Witherable and no longer
  exports Filter.

* random 1.2.0 probably also broke the Function instance for GameState
  which contains a StdGen. I'm not exactly sure which change exactly
  triggered this, but the fix is easy enough: We implement a Function
  instance for SMGen using functionShow allowing us to write a Function
  instance for StdGen using functionMap. I've put these instances into
  Xanthous.Orphans.

* hgeometry 0.12.0.0 removes the triangulationEdges function (which is
  also not mentioned in the changelog, so I'm not sure if there's a
  replacement yet). Fix by pinning to 0.11.0.0 for now.

* hedgehog-classes: relax bounds on semirings

Change-Id: I3617d8916d753b386c9fa80062be6bcbdfee0131
Reviewed-on: https://cl.tvl.fyi/c/depot/+/2607
Tested-by: BuildkiteCI
Reviewed-by: glittershark <grfn@gws.fyi>
Diffstat (limited to 'users/glittershark/xanthous/src')
-rw-r--r--users/glittershark/xanthous/src/Xanthous/Game/Arbitrary.hs1
-rw-r--r--users/glittershark/xanthous/src/Xanthous/Messages/Template.hs2
-rw-r--r--users/glittershark/xanthous/src/Xanthous/Orphans.hs20
-rw-r--r--users/glittershark/xanthous/src/Xanthous/Prelude.hs4
4 files changed, 21 insertions, 6 deletions
diff --git a/users/glittershark/xanthous/src/Xanthous/Game/Arbitrary.hs b/users/glittershark/xanthous/src/Xanthous/Game/Arbitrary.hs
index a1eb789a33c9..1b15ad4ffa64 100644
--- a/users/glittershark/xanthous/src/Xanthous/Game/Arbitrary.hs
+++ b/users/glittershark/xanthous/src/Xanthous/Game/Arbitrary.hs
@@ -16,6 +16,7 @@ import qualified Xanthous.Data.EntityMap as EntityMap
 import           Xanthous.Entities.Entities ()
 import           Xanthous.Entities.Character
 import           Xanthous.Game.State
+import           Xanthous.Orphans ()
 import           Xanthous.Util.QuickCheck (GenericArbitrary(..))
 --------------------------------------------------------------------------------
 
diff --git a/users/glittershark/xanthous/src/Xanthous/Messages/Template.hs b/users/glittershark/xanthous/src/Xanthous/Messages/Template.hs
index 2998db7f7bf9..5176880355f4 100644
--- a/users/glittershark/xanthous/src/Xanthous/Messages/Template.hs
+++ b/users/glittershark/xanthous/src/Xanthous/Messages/Template.hs
@@ -28,7 +28,7 @@ module Xanthous.Messages.Template
 where
 --------------------------------------------------------------------------------
 import           Xanthous.Prelude hiding
-                 (many, concat, try, elements, some, parts, Filter)
+                 (many, concat, try, elements, some, parts)
 --------------------------------------------------------------------------------
 import           Test.QuickCheck hiding (label)
 import           Test.QuickCheck.Instances.Text ()
diff --git a/users/glittershark/xanthous/src/Xanthous/Orphans.hs b/users/glittershark/xanthous/src/Xanthous/Orphans.hs
index 39821150ef97..1fe9708edbe0 100644
--- a/users/glittershark/xanthous/src/Xanthous/Orphans.hs
+++ b/users/glittershark/xanthous/src/Xanthous/Orphans.hs
@@ -18,7 +18,8 @@ import           Graphics.Vty.Attributes
 import           Brick.Widgets.Edit
 import           Data.Text.Zipper.Generic (GenericTextZipper)
 import           Brick.Widgets.Core (getName)
-import           System.Random (StdGen)
+import           System.Random.Internal (StdGen (..))
+import           System.Random.SplitMix (SMGen ())
 import           Test.QuickCheck
 import           "quickcheck-instances" Test.QuickCheck.Instances ()
 import           Text.Megaparsec (errorBundlePretty)
@@ -304,8 +305,15 @@ instance forall t name. (NFData t, Monoid t, NFData name)
                  => NFData (Editor t name) where
   rnf ed = getName @_ @name ed `deepseq` getEditContents ed `deepseq` ()
 
-deriving via (ReadShowJSON StdGen) instance ToJSON StdGen
-deriving via (ReadShowJSON StdGen) instance FromJSON StdGen
+deriving via (ReadShowJSON SMGen) instance ToJSON SMGen
+deriving via (ReadShowJSON SMGen) instance FromJSON SMGen
+
+instance ToJSON StdGen where
+  toJSON = toJSON . unStdGen
+  toEncoding = toEncoding . unStdGen
+
+instance FromJSON StdGen where
+  parseJSON = fmap StdGen . parseJSON
 
 --------------------------------------------------------------------------------
 
@@ -326,6 +334,12 @@ instance forall t n. (CoArbitrary t, CoArbitrary n, Monoid t)
 instance CoArbitrary StdGen where
   coarbitrary = coarbitrary . show
 
+instance Function StdGen where
+  function = functionMap unStdGen StdGen
+
+instance Function SMGen where
+  function = functionShow
+
 --------------------------------------------------------------------------------
 
 deriving newtype instance (Arbitrary s, CoArbitrary (m (a, s)))
diff --git a/users/glittershark/xanthous/src/Xanthous/Prelude.hs b/users/glittershark/xanthous/src/Xanthous/Prelude.hs
index 9bec777de7b1..4d79b026f14a 100644
--- a/users/glittershark/xanthous/src/Xanthous/Prelude.hs
+++ b/users/glittershark/xanthous/src/Xanthous/Prelude.hs
@@ -7,7 +7,7 @@ module Xanthous.Prelude
   , module Control.Lens
   , module Data.Void
   , module Control.Comonad
-  , module Data.Witherable
+  , module Witherable
   , fail
 
   , (&!)
@@ -27,7 +27,7 @@ import GHC.TypeLits hiding (Text)
 import Control.Lens hiding (levels, Level)
 import Data.Void
 import Control.Comonad
-import Data.Witherable
+import Witherable
 import Control.Monad.Fail (fail)
 --------------------------------------------------------------------------------