{-# OPTIONS_GHC -fno-warn-orphans #-}
module Darcs.Patch.V3 ( RepoPatchV3 ) where
import Darcs.Prelude
import Darcs.Patch.Annotate ()
import Darcs.Patch.FromPrim ( FromPrim(..) )
import Darcs.Patch.Prim.Named
( PrimPatchId
, anonymousNamedPrim, namedPrim, positivePrimPatchIds
)
import Darcs.Patch.Witnesses.Ordered ( FL(..) )
import qualified Darcs.Patch.V3.Core as Core ( RepoPatchV3(..) )
import Darcs.Patch.V3.Resolution ()
type RepoPatchV3 = Core.RepoPatchV3 PrimPatchId
instance FromPrim (RepoPatchV3 prim) where
fromAnonymousPrim :: forall wX wY.
PrimOf (RepoPatchV3 prim) wX wY -> RepoPatchV3 prim wX wY
fromAnonymousPrim = forall name (prim :: * -> * -> *) wX wY.
PrimWithName name prim wX wY -> RepoPatchV3 name prim wX wY
Core.Prim forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall (p :: * -> * -> *) wX wY. p wX wY -> NamedPrim p wX wY
anonymousNamedPrim
fromPrim :: forall wX wY.
PatchId (RepoPatchV3 prim)
-> PrimOf (RepoPatchV3 prim) wX wY -> RepoPatchV3 prim wX wY
fromPrim PatchId (RepoPatchV3 prim)
pid PrimOf (RepoPatchV3 prim) wX wY
p = forall name (prim :: * -> * -> *) wX wY.
PrimWithName name prim wX wY -> RepoPatchV3 name prim wX wY
Core.Prim (forall (p :: * -> * -> *) wX wY.
PrimPatchId -> p wX wY -> NamedPrim p wX wY
namedPrim PatchId (RepoPatchV3 prim)
pid PrimOf (RepoPatchV3 prim) wX wY
p)
fromPrims :: forall wX wY.
PatchInfo
-> FL (PrimOf (RepoPatchV3 prim)) wX wY
-> FL (RepoPatchV3 prim) wX wY
fromPrims = forall wX wY.
[PrimPatchId] -> FL prim wX wY -> FL (RepoPatchV3 prim) wX wY
go forall b c a. (b -> c) -> (a -> b) -> a -> c
. PatchInfo -> [PrimPatchId]
positivePrimPatchIds
where
go :: [PrimPatchId] -> FL prim wX wY -> FL (RepoPatchV3 prim) wX wY
go :: forall wX wY.
[PrimPatchId] -> FL prim wX wY -> FL (RepoPatchV3 prim) wX wY
go [PrimPatchId]
_ FL prim wX wY
NilFL = forall (a :: * -> * -> *) wX. FL a wX wX
NilFL
go (PrimPatchId
pid:[PrimPatchId]
pids) (prim wX wY
p:>:FL prim wY wY
ps) = forall (p :: * -> * -> *) wX wY.
FromPrim p =>
PatchId p -> PrimOf p wX wY -> p wX wY
fromPrim PrimPatchId
pid prim wX wY
p forall (a :: * -> * -> *) wX wY wZ.
a wX wY -> FL a wY wZ -> FL a wX wZ
:>: forall wX wY.
[PrimPatchId] -> FL prim wX wY -> FL (RepoPatchV3 prim) wX wY
go [PrimPatchId]
pids FL prim wY wY
ps
go [] FL prim wX wY
_ = forall a. HasCallStack => [Char] -> a
error [Char]
"positivePrimPatchIds should return an infinite list"