Safe Haskell | Safe-Inferred |
---|---|
Language | Haskell2010 |
Unison.Merge
Contents
Synopsis
- data Diffblob libdep = Diffblob {
- conflicts :: TwoWay (DefnsF (Map Name) TermReference TypeReference)
- declNameLookups :: GThreeWay PartialDeclNameLookup DeclNameLookup
- defns :: ThreeWay UnconflictedLocalDefnsView
- defnsIds :: ThreeWay (DefnsF Set TermReferenceId TypeReferenceId)
- diff :: DefnsF2 (Map Name) CombinedDiffOp Referent TypeReference
- diffsFromLCA :: TwoWay (DefnsF3 (Map Name) DiffOp Synhashed Referent TypeReference)
- hydratedNarrowedDefns :: Defns (Map TermReferenceId (Term Symbol Ann, Type Symbol Ann)) (Map TypeReferenceId (Decl Symbol Ann))
- libdeps :: Updated (Map NameSegment libdep)
- libdepsDiffs :: TwoWay (Map NameSegment (DiffOp libdep))
- propagatedUpdates :: TwoWay (DefnsF (Map Name) (Updated Referent) (Updated TypeReference))
- simpleRenames :: TwoWay (Defns SimpleRenames SimpleRenames)
- unconflicts :: DefnsF Unconflicts Referent TypeReference
- makeDiffblob :: forall libdep m. (Eq libdep, Monad m) => DiffblobLog m -> (ThreeWay (DefnsF Set TermReferenceId TypeReferenceId) -> m (Defns (Map TermReferenceId (Term Symbol Ann, Type Symbol Ann)) (Map TypeReferenceId (Decl Symbol Ann)))) -> (ThreeWay (Set LabeledDependency) -> m (ThreeWay Names)) -> ThreeWay UnconflictedLocalDefnsView -> ThreeWay (Map NameSegment libdep) -> GThreeWay PartialDeclNameLookup DeclNameLookup -> m (Diffblob libdep)
- data DiffblobLog m = DiffblobLog {
- logDefns :: ThreeWay (DefnsF (Map Name) Referent TypeReference) -> m ()
- logNarrowedDefns :: TwoWay (Updated (DefnsF (Map Name) Referent TypeReference)) -> m ()
- logSynhashedNarrowedDefns :: TwoWay (GUpdated (DefnsF2 (Map Name) Synhashed Referent TypeReference) (DefnsF2 (Map Name) Synhashed Referent TypeReference)) -> m ()
- logDiffsFromLCA :: TwoWay (DefnsF3 (Map Name) DiffOp Synhashed Referent TypeReference) -> m ()
- logDiff :: DefnsF2 (Map Name) CombinedDiffOp Referent TypeReference -> m ()
- data Mergeblob libdep = Mergeblob {
- conflicts :: TwoWay (DefnsF (Map Name) TermReferenceId TypeReferenceId)
- typecheckedFile :: Maybe (TypecheckedUnisonFile Symbol Ann)
- unconflictedDefns :: DefnsF (Map Name) Referent TypeReference
- uniqueTypeGuids :: TwoWay (Map Name Text)
- unparsedFile :: Pretty ColorText
- unparsedSoloFiles :: ThreeWay (Pretty ColorText)
- data MergeblobError
- makeMergeblob :: Monad m => (ThreeWay (DefnsF Set TermReferenceId TypeReferenceId) -> m (Defns (Map TermReferenceId (Term Symbol Ann, Type Symbol Ann)) (Map TypeReferenceId (Decl Symbol Ann)))) -> (DefnsF Set TermReferenceId TypeReferenceId -> Set Reference -> m (DefnsF Set TermReferenceId TypeReferenceId)) -> m (Updated Names) -> (DefnsF Set TermReference TypeReference -> m (TypeLookup Symbol Ann)) -> Diffblob libdep -> TwoWay Text -> m (Either MergeblobError (Mergeblob libdep))
- data CombinedDiffOp a
- = CombinedDiffOp'Add !(EitherWayI a)
- | CombinedDiffOp'Delete !(EitherWayI a)
- | CombinedDiffOp'Update !(EitherWayI (Updated a))
- | CombinedDiffOp'Conflict !(TwoWay a)
- data DiffOp a
- = DiffOp'Add !a
- | DiffOp'Delete !a
- | DiffOp'Update !(Updated a)
- data EitherWay a
- data EitherWayI a
- = OnlyAlice a
- | OnlyBob a
- | AliceAndBob a
- data GThreeWay a b = GThreeWay {}
- data GUpdated a b = Updated {}
- data LibdepDiffOp a
- = AddLibdep !a
- | AddBothLibdeps !a !a
- | DeleteLibdep
- data Rename = Rename {}
- data SimpleRenames = SimpleRenames {}
- data Synhashed a = Synhashed {}
- data ThreeWay a = ThreeWay {}
- data TwoOrThreeWay a = TwoOrThreeWay {}
- data TwoWay a = TwoWay {}
- data TwoWayI a = TwoWayI {}
- data Unconflicts v = Unconflicts {}
- type Updated a = GUpdated a a
Documentation
Constructors
Diffblob | |
Fields
|
makeDiffblob :: forall libdep m. (Eq libdep, Monad m) => DiffblobLog m -> (ThreeWay (DefnsF Set TermReferenceId TypeReferenceId) -> m (Defns (Map TermReferenceId (Term Symbol Ann, Type Symbol Ann)) (Map TypeReferenceId (Decl Symbol Ann)))) -> (ThreeWay (Set LabeledDependency) -> m (ThreeWay Names)) -> ThreeWay UnconflictedLocalDefnsView -> ThreeWay (Map NameSegment libdep) -> GThreeWay PartialDeclNameLookup DeclNameLookup -> m (Diffblob libdep) Source #
data DiffblobLog m Source #
Constructors
DiffblobLog | |
Fields
|
data Mergeblob libdep Source #
Constructors
data MergeblobError Source #
makeMergeblob :: Monad m => (ThreeWay (DefnsF Set TermReferenceId TypeReferenceId) -> m (Defns (Map TermReferenceId (Term Symbol Ann, Type Symbol Ann)) (Map TypeReferenceId (Decl Symbol Ann)))) -> (DefnsF Set TermReferenceId TypeReferenceId -> Set Reference -> m (DefnsF Set TermReferenceId TypeReferenceId)) -> m (Updated Names) -> (DefnsF Set TermReference TypeReference -> m (TypeLookup Symbol Ann)) -> Diffblob libdep -> TwoWay Text -> m (Either MergeblobError (Mergeblob libdep)) Source #
Types
data CombinedDiffOp a Source #
The combined result of two diffs on the same thing.
Constructors
CombinedDiffOp'Add !(EitherWayI a) | |
CombinedDiffOp'Delete !(EitherWayI a) | |
CombinedDiffOp'Update !(EitherWayI (Updated a)) | |
CombinedDiffOp'Conflict !(TwoWay a) |
Instances
A diff operation is one of:
- An add (where nothing was)
- A delete (of the thing that was)
- An update (from old to new)
Constructors
DiffOp'Add !a | |
DiffOp'Delete !a | |
DiffOp'Update !(Updated a) |
Alice exclusive-or Bob?
data EitherWayI a Source #
Alice inclusive-or Bob?
Constructors
OnlyAlice a | |
OnlyBob a | |
AliceAndBob a |
Instances
Instances
Generic (GThreeWay a b) Source # | |
type Rep (GThreeWay a b) Source # | |
Defined in Unison.Merge.Internal.Types type Rep (GThreeWay a b) = D1 ('MetaData "GThreeWay" "Unison.Merge.Internal.Types" "unison-merge-0.0.0-CsoqdT2tgnzJVh8bRze97e" 'False) (C1 ('MetaCons "GThreeWay" 'PrefixI 'True) (S1 ('MetaSel ('Just "lca") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 a) :*: (S1 ('MetaSel ('Just "alice") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 b) :*: S1 ('MetaSel ('Just "bob") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 b)))) |
An updated thing.
Instances
Generic (GUpdated a b) Source # | |
(Show a, Show b) => Show (GUpdated a b) Source # | |
(NFData a, NFData b) => NFData (GUpdated a b) Source # | |
Defined in Unison.Merge.Updated | |
type Rep (GUpdated a b) Source # | |
Defined in Unison.Merge.Updated type Rep (GUpdated a b) = D1 ('MetaData "GUpdated" "Unison.Merge.Updated" "unison-merge-0.0.0-CsoqdT2tgnzJVh8bRze97e" 'False) (C1 ('MetaCons "Updated" 'PrefixI 'True) (S1 ('MetaSel ('Just "old") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 a) :*: S1 ('MetaSel ('Just "new") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 b))) |
data LibdepDiffOp a Source #
Constructors
AddLibdep !a | |
AddBothLibdeps !a !a | |
DeleteLibdep |
A "rename" is a venn partition of two non-empty sets of names: both set differences and the set intersection.
Invariant: the sets are all disjoint Invariant: it is not the case that adds and deletes are both empty
data SimpleRenames Source #
A "simple" rename is one that moves one name to another, where neither the before- nor after-name have any aliases.
A small utility type that represents a syntactic-hashed thing.
The synhash itself is a lazy field so that we can avoid computing it in certain cases, just using laziness.
Instances
Functor Synhashed Source # | |
Generic (Synhashed a) Source # | |
Show a => Show (Synhashed a) Source # | |
Eq (Synhashed a) Source # | |
Ord (Synhashed a) Source # | |
Defined in Unison.Merge.Synhashed | |
type Rep (Synhashed a) Source # | |
Defined in Unison.Merge.Synhashed type Rep (Synhashed a) = D1 ('MetaData "Synhashed" "Unison.Merge.Synhashed" "unison-merge-0.0.0-CsoqdT2tgnzJVh8bRze97e" 'False) (C1 ('MetaCons "Synhashed" 'PrefixI 'True) (S1 ('MetaSel ('Just "hash") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Hash) :*: S1 ('MetaSel ('Just "value") 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 a))) |
Instances
data TwoOrThreeWay a Source #
Constructors
TwoOrThreeWay | |
Instances
Instances
"Two-way inclusive".
Instances
data Unconflicts v Source #
Constructors
Unconflicts | |