Safe Haskell | Safe-Inferred |
---|---|
Language | Haskell2010 |
Unison.Merge.Diff
Synopsis
- nameBasedNamespaceDiff :: 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)) -> (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
nameBasedNamespaceDiff :: 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)) -> (TwoWay (DefnsF3 (Map Name) DiffOp Synhashed Referent TypeReference), TwoWay (DefnsF2 (Map Name) Updated Referent TypeReference)) Source #
nameBasedNamespaceDiff db declNameLookups defns
returns Alice's and Bob's name-based namespace diffs, each in the
form:
terms :: Map Name (DiffOp (Synhashed Referent)) types :: Map Name (DiffOp (Synhashed TypeReference))
where each name is paired with its diff-op (added, deleted, or updated), relative to the LCA between Alice and Bob's branches. If the hash of a name did not change, it will not appear in the map.
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.