Safe Haskell | Safe-Inferred |
---|---|
Language | Haskell2010 |
Unison.Merge.Diff
Synopsis
- synhashDefns :: HasCallStack => (TwoWay DeclNameLookup, PartialDeclNameLookup) -> ThreeWay PrettyPrintEnvDecl -> ThreeWay (Defns (BiMultimap Referent Name) (BiMultimap TypeReference Name)) -> Defns (Map TermReferenceId (Term Symbol Ann)) (Map TypeReferenceId (Decl Symbol Ann)) -> ThreeWay (DefnsF2 (Map Name) Synhashed Referent TypeReference)
- diffSynhashedDefns :: ThreeWay (DefnsF2 (Map Name) Synhashed Referent TypeReference) -> (TwoWay (DefnsF3 (Map Name) DiffOp Synhashed Referent TypeReference), TwoWay (DefnsF2 (Map Name) Updated Referent TypeReference))
- humanizeDiffs :: ThreeWay Names -> TwoWay (DefnsF3 (Map Name) DiffOp Synhashed Referent TypeReference) -> TwoWay (DefnsF2 (Map Name) Updated Referent TypeReference) -> TwoWay (DefnsF2 (Map Name) HumanDiffOp Referent TypeReference)
Documentation
synhashDefns :: HasCallStack => (TwoWay DeclNameLookup, PartialDeclNameLookup) -> ThreeWay PrettyPrintEnvDecl -> ThreeWay (Defns (BiMultimap Referent Name) (BiMultimap TypeReference Name)) -> Defns (Map TermReferenceId (Term Symbol Ann)) (Map TypeReferenceId (Decl Symbol Ann)) -> ThreeWay (DefnsF2 (Map Name) Synhashed Referent TypeReference) Source #
synhashDefns declNameLookups ppes defns hydratedDefns
computes syntactic hashes of defns
.
diffSynhashedDefns :: ThreeWay (DefnsF2 (Map Name) Synhashed Referent TypeReference) -> (TwoWay (DefnsF3 (Map Name) DiffOp Synhashed Referent TypeReference), TwoWay (DefnsF2 (Map Name) Updated Referent TypeReference)) Source #
diffSynhashedDefns defns
, given the output of synhashDefns
, computes the two two-way diffs (each consisting of
the "core" diffs, i.e. addsdeleteupdates, alongside the propagated updates, i.e. updates that have the same synhash
but different Unison hashes).
humanizeDiffs :: ThreeWay Names -> TwoWay (DefnsF3 (Map Name) DiffOp Synhashed Referent TypeReference) -> TwoWay (DefnsF2 (Map Name) Updated Referent TypeReference) -> TwoWay (DefnsF2 (Map Name) HumanDiffOp Referent TypeReference) Source #
Post-process a diff to identify relationships humans might care about, such as whether a given addition could be interpreted as an alias of an existing definition, or whether an add and deletion could be a rename.