module Unison.Codebase.Branch.Names
( namesDiff,
toNames,
toPrettyPrintEnvDecl,
)
where
import Unison.Codebase.Branch
import Unison.Codebase.Branch.Type qualified as Branch
import Unison.Names (Names (..))
import Unison.Names qualified as Names
import Unison.NamesWithHistory qualified as Names
import Unison.PrettyPrintEnv.Names qualified as PPE
import Unison.PrettyPrintEnvDecl qualified as PPED
import Prelude hiding (head, read, subtract)
toPrettyPrintEnvDecl :: Int -> Branch0 m -> PPED.PrettyPrintEnvDecl
toPrettyPrintEnvDecl :: forall (m :: * -> *). Int -> Branch0 m -> PrettyPrintEnvDecl
toPrettyPrintEnvDecl Int
hashLength Branch0 m
b =
let names :: Names
names = Branch0 m -> Names
forall (m :: * -> *). Branch0 m -> Names
toNames Branch0 m
b
in Namer -> Suffixifier -> PrettyPrintEnvDecl
PPED.makePPED (Int -> Names -> Namer
PPE.hqNamer Int
hashLength Names
names) (Names -> Suffixifier
PPE.suffixifyByHash Names
names)
toNames :: Branch0 m -> Names
toNames :: forall (m :: * -> *). Branch0 m -> Names
toNames =
Defns (Relation Referent Name) (Relation TypeReference Name)
-> Names
Names.fromRelations (Defns (Relation Referent Name) (Relation TypeReference Name)
-> Names)
-> (Branch0 m
-> Defns (Relation Referent Name) (Relation TypeReference Name))
-> Branch0 m
-> Names
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Branch0 m
-> Defns (Relation Referent Name) (Relation TypeReference Name)
forall (m :: * -> *).
Branch0 m
-> Defns (Relation Referent Name) (Relation TypeReference Name)
Branch.deepDefns
namesDiff :: Branch m -> Branch m -> Names.Diff
namesDiff :: forall (m :: * -> *). Branch m -> Branch m -> Diff
namesDiff Branch m
b1 Branch m
b2 = Names -> Names -> Diff
Names.diff (Branch0 m -> Names
forall (m :: * -> *). Branch0 m -> Names
toNames (Branch m -> Branch0 m
forall (m :: * -> *). Branch m -> Branch0 m
head Branch m
b1)) (Branch0 m -> Names
forall (m :: * -> *). Branch0 m -> Names
toNames (Branch m -> Branch0 m
forall (m :: * -> *). Branch m -> Branch0 m
head Branch m
b2))