on master help sign in
Constraint result size to match union
321daa4Sridhar Ratnakumar
src/JRec.hs+1−1
@@ -65,7 +65,7 @@ union ::
65 forall lhs rhs res.
65 forall lhs rhs res.
66 ( KnownNat (R.RecSize lhs),
66 ( KnownNat (R.RecSize lhs),
67 KnownNat (R.RecSize rhs),
67 KnownNat (R.RecSize rhs),
68− KnownNat (R.RecSize lhs + R.RecSize rhs),
68+ KnownNat (R.RecSize res),
69 res ~ R.Union lhs rhs,
69 res ~ R.Union lhs rhs,
70 R.RecCopy lhs lhs res,
70 R.RecCopy lhs lhs res,
71 R.RecCopy rhs rhs res
71 R.RecCopy rhs rhs res
src/JRec/Internal.hs+2−2
@@ -400,7 +400,7 @@ union ::
400 forall lhs rhs res.
400 forall lhs rhs res.
401 ( KnownNat (RecSize lhs),
401 ( KnownNat (RecSize lhs),
402 KnownNat (RecSize rhs),
402 KnownNat (RecSize rhs),
403− KnownNat (RecSize lhs + RecSize rhs),
403+ KnownNat (RecSize res),
404 res ~ Union lhs rhs,
404 res ~ Union lhs rhs,
405 RecCopy lhs lhs res,
405 RecCopy lhs lhs res,
406 RecCopy rhs rhs res
406 RecCopy rhs rhs res
@@ -410,7 +410,7 @@ union ::
410 Rec res
410 Rec res
411union lts rts =
411union lts rts =
412 let !(I# size#) =
412 let !(I# size#) =
413− fromIntegral $ natVal' (proxy# :: Proxy# (RecSize lhs + RecSize rhs))
413+ fromIntegral $ natVal' (proxy# :: Proxy# (RecSize (Union lhs rhs)))
414 in runST' $
414 in runST' $
415 ST $ \s# ->
415 ST $ \s# ->
416 case newSmallArray# size# (error "No value") s# of
416 case newSmallArray# size# (error "No value") s# of