module Unison.Codebase.Patch (Patch (..)) where

import Unison.Codebase.TermEdit (TermEdit)
import Unison.Codebase.TypeEdit (TypeEdit)
import Unison.Reference (Reference)
import Unison.Util.Relation (Relation)
import Prelude hiding (head, read, subtract)

data Patch = Patch
  { Patch -> Relation Reference TermEdit
_termEdits :: Relation Reference TermEdit,
    Patch -> Relation Reference TypeEdit
_typeEdits :: Relation Reference TypeEdit
  }
  deriving (Patch -> Patch -> Bool
(Patch -> Patch -> Bool) -> (Patch -> Patch -> Bool) -> Eq Patch
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
$c== :: Patch -> Patch -> Bool
== :: Patch -> Patch -> Bool
$c/= :: Patch -> Patch -> Bool
/= :: Patch -> Patch -> Bool
Eq, Eq Patch
Eq Patch =>
(Patch -> Patch -> Ordering)
-> (Patch -> Patch -> Bool)
-> (Patch -> Patch -> Bool)
-> (Patch -> Patch -> Bool)
-> (Patch -> Patch -> Bool)
-> (Patch -> Patch -> Patch)
-> (Patch -> Patch -> Patch)
-> Ord Patch
Patch -> Patch -> Bool
Patch -> Patch -> Ordering
Patch -> Patch -> Patch
forall a.
Eq a =>
(a -> a -> Ordering)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> a)
-> (a -> a -> a)
-> Ord a
$ccompare :: Patch -> Patch -> Ordering
compare :: Patch -> Patch -> Ordering
$c< :: Patch -> Patch -> Bool
< :: Patch -> Patch -> Bool
$c<= :: Patch -> Patch -> Bool
<= :: Patch -> Patch -> Bool
$c> :: Patch -> Patch -> Bool
> :: Patch -> Patch -> Bool
$c>= :: Patch -> Patch -> Bool
>= :: Patch -> Patch -> Bool
$cmax :: Patch -> Patch -> Patch
max :: Patch -> Patch -> Patch
$cmin :: Patch -> Patch -> Patch
min :: Patch -> Patch -> Patch
Ord, Int -> Patch -> ShowS
[Patch] -> ShowS
Patch -> String
(Int -> Patch -> ShowS)
-> (Patch -> String) -> ([Patch] -> ShowS) -> Show Patch
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
$cshowsPrec :: Int -> Patch -> ShowS
showsPrec :: Int -> Patch -> ShowS
$cshow :: Patch -> String
show :: Patch -> String
$cshowList :: [Patch] -> ShowS
showList :: [Patch] -> ShowS
Show)