module Unison.Merge.TwoOrThreeWay ( TwoOrThreeWay (..), forgetLca, toThreeWay, ) where import Unison.Merge.Internal.Types (ThreeWay (..), TwoOrThreeWay (..), TwoWay (..)) import Unison.Prelude forgetLca :: TwoOrThreeWay a -> TwoWay a forgetLca :: forall a. TwoOrThreeWay a -> TwoWay a forgetLca TwoOrThreeWay {a alice :: a $sel:alice:TwoOrThreeWay :: forall a. TwoOrThreeWay a -> a alice, a bob :: a $sel:bob:TwoOrThreeWay :: forall a. TwoOrThreeWay a -> a bob} = TwoWay {a alice :: a $sel:alice:TwoWay :: a alice, a bob :: a $sel:bob:TwoWay :: a bob} toThreeWay :: a -> TwoOrThreeWay a -> ThreeWay a toThreeWay :: forall a. a -> TwoOrThreeWay a -> ThreeWay a toThreeWay a x TwoOrThreeWay {a $sel:alice:TwoOrThreeWay :: forall a. TwoOrThreeWay a -> a alice :: a alice, a $sel:bob:TwoOrThreeWay :: forall a. TwoOrThreeWay a -> a bob :: a bob, Maybe a lca :: Maybe a $sel:lca:TwoOrThreeWay :: forall a. TwoOrThreeWay a -> Maybe a lca} = ThreeWay {a alice :: a $sel:alice:ThreeWay :: a alice, a bob :: a $sel:bob:ThreeWay :: a bob, $sel:lca:ThreeWay :: a lca = a -> Maybe a -> a forall a. a -> Maybe a -> a fromMaybe a x Maybe a lca}