Safe Haskell | Safe-Inferred |
---|---|
Language | Haskell2010 |
Unison.Cli.UpdateUtils
Description
This module contains functionality that is common to the general idea of "updating" a term in Unison, which is when we reassign a name from one hash to another and then see if all dependents still typecheck.
This occurs in the pull
, merge
, update
, and upgrade
commands.
Synopsis
- getNamespaceDependentsOf :: Defns (BiMultimap Referent Name) (BiMultimap TypeReference Name) -> Set Reference -> Transaction (DefnsF (Map Name) TermReferenceId TypeReferenceId)
- subtractDependents :: DefnsF Set TermReferenceId TypeReferenceId -> DefnsF (Map Name) Referent TypeReference -> DefnsF (Map Name) Referent TypeReference
- hydrateRefs :: Monad m => (Hash -> m [term]) -> (Hash -> m [typ]) -> DefnsF Set TermReferenceId TypeReferenceId -> m (Defns (Map TermReferenceId term) (Map TypeReferenceId typ))
- nameHydratedRefIds :: DefnsF (Map name) TermReferenceId TypeReferenceId -> Defns (Map TermReferenceId term) (Map TypeReferenceId typ) -> DefnsF (Map name) (TermReferenceId, term) (TypeReferenceId, typ)
- makeUniqueTypeGuids :: Map Name TypeReference -> Transaction (Map Name Text)
- parseAndTypecheck :: Pretty ColorText -> ParsingEnv Transaction -> Cli (Maybe (TypecheckedUnisonFile Symbol Ann))
Getting dependents in a namespace
getNamespaceDependentsOf :: Defns (BiMultimap Referent Name) (BiMultimap TypeReference Name) -> Set Reference -> Transaction (DefnsF (Map Name) TermReferenceId TypeReferenceId) Source #
Given a namespace and a set of dependencies, return the subset of the namespace that consists of only the (transitive) dependents of the dependencies.
subtractDependents :: DefnsF Set TermReferenceId TypeReferenceId -> DefnsF (Map Name) Referent TypeReference -> DefnsF (Map Name) Referent TypeReference Source #
Hydrating definitions
hydrateRefs :: Monad m => (Hash -> m [term]) -> (Hash -> m [typ]) -> DefnsF Set TermReferenceId TypeReferenceId -> m (Defns (Map TermReferenceId term) (Map TypeReferenceId typ)) Source #
Hydrate termtype references to actual termstypes.
nameHydratedRefIds :: DefnsF (Map name) TermReferenceId TypeReferenceId -> Defns (Map TermReferenceId term) (Map TypeReferenceId typ) -> DefnsF (Map name) (TermReferenceId, term) (TypeReferenceId, typ) Source #
Associate names with hydrated terms/types.
Unique type guids
makeUniqueTypeGuids :: Map Name TypeReference -> Transaction (Map Name Text) Source #