on master help sign in
obelisk-route: Fix "incomplete" pattern match

Cf: https://gitlab.haskell.org/ghc/ghc/issues/15681

commit3fa3c3e752fdf8c9dab102ca48c688e0f9f904db authorAli Abrar <aliabrar@gmail.com> dateFri 23 Aug 2019, 07:21 (7 years ago) parentf55b0fe
2 files changed+12−11
dep/reflex-platform/github.json+3−3 lib/route/src/Obelisk/Route.hs+9−8
dep/reflex-platform/github.json+3−3
@@ -1,7 +1,7 @@
11{
22 "owner": "reflex-frp",
33 "repo": "reflex-platform",
4− "branch": "ghc865-nixpkgs1903",
5− "rev": "02389f2a709a3f28ae2f3224d2c8ba81cc64c40b",
6− "sha256": "10g2yhf4la929aa1km0184asikmn0kayzlra16mqmni2f684v3z3"
4+ "branch": "aa-split-these",
5+ "rev": "c6989e20b3dad9c08c38d83cc352b9a82b6664b4",
6+ "sha256": "0h1236xb7gqy432409a3n4j32kv7a9xa8fdi9alr722bhw952yf6"
77}
lib/route/src/Obelisk/Route.hs+9−8
@@ -442,8 +442,9 @@ chainEncoder cons this rest = Encoder $ do
442442 pure $ EncoderImpl
443443 { _encoderImpl_decode = \v -> do
444444 (here, following) <- _encoderImpl_decode consValid v
445− Some r <- _encoderImpl_decode thisValid here
446− (r :/) <$> _encoderImpl_decode (runIdentity . unEncoder $ rest r) following
445+ _encoderImpl_decode thisValid here >>= \case
446+ Some r ->
447+ (r :/) <$> _encoderImpl_decode (runIdentity . unEncoder $ rest r) following
447448 , _encoderImpl_encode = \(r :/ s) ->
448449 _encoderImpl_encode consValid
449450 ( _encoderImpl_encode thisValid $ Some r
@@ -912,12 +913,12 @@ dmapEncoder keyEncoder' valueEncoderFor = unsafeEncoder $ do
912913 , encode (toEncoder (DMap.findWithDefault (error . keyError $ gshow k') k' valueDecoders)) v'
913914 )
914915 , _encoderImpl_decode = \m -> fmap DMap.fromList . forM (Map.toList m) $ \(k,v) -> do
915− Some (k' :: k' t) <- tryDecode keyEncoder k
916− case DMap.lookup k' valueDecoders of
917− Nothing -> throwError . T.pack . keyError $ gshow k'
918− Just (Decoder e) -> do
919− v' <- tryDecode e v
920− return (k' :=> Identity v')
916+ tryDecode keyEncoder k >>= \case
917+ Some (k' :: k' t) -> case DMap.lookup k' valueDecoders of
918+ Nothing -> throwError . T.pack . keyError $ gshow k'
919+ Just (Decoder e) -> do
920+ v' <- tryDecode e v
921+ return (k' :=> Identity v')
921922 }
922923
923924fieldMapEncoder :: forall check parse r.