1- {-# LANGUAGE PatternSynonyms #-}
2- {-# LANGUAGE RankNTypes #-}
31{-# LANGUAGE RecordWildCards #-}
4- {-# LANGUAGE ViewPatterns #-}
52{-# OPTIONS_GHC -Wno-orphans #-}
63
74module Unison.Codebase.Branch
@@ -131,7 +128,6 @@ import Unison.Util.List qualified as List
131128import Unison.Util.Monoid qualified as Monoid
132129import Unison.Util.Relation qualified as R
133130import Unison.Util.Relation qualified as Relation
134- import Unison.Util.Relation4 qualified as R4
135131import Unison.Util.Set qualified as Set
136132import Unison.Util.Star3 qualified as Star3
137133import Witherable (FilterableWithIndex (imapMaybe ))
@@ -192,7 +188,6 @@ terms =
192188 \ branch terms ->
193189 branch {_terms = terms}
194190 & deriveDeepTerms
195- & deriveDeepTermMetadata
196191
197192types :: Lens' (Branch0 m ) (Star TypeReference NameSegment )
198193types =
@@ -201,7 +196,6 @@ types =
201196 \ branch types ->
202197 branch {_types = types}
203198 & deriveDeepTypes
204- & deriveDeepTypeMetadata
205199
206200children :: Lens' (Branch0 m ) (Map NameSegment (Branch m ))
207201children = lens _children (\ Branch0 {.. } x -> branch0 _terms _types x _edits)
@@ -242,15 +236,11 @@ branch0 terms types children edits =
242236 -- These are all overwritten immediately
243237 deepTerms = R. empty,
244238 deepTypes = R. empty,
245- deepTermMetadata = R4. empty,
246- deepTypeMetadata = R4. empty,
247239 deepPaths = Set. empty,
248240 deepEdits = Map. empty
249241 }
250242 & deriveDeepTerms
251243 & deriveDeepTypes
252- & deriveDeepTermMetadata
253- & deriveDeepTypeMetadata
254244 & deriveDeepPaths
255245 & deriveDeepEdits
256246
@@ -299,50 +289,6 @@ deriveDeepTypes branch =
299289 children <- deepChildrenHelper e
300290 go (work <> children) (types <> acc)
301291
302- -- | Derive the 'deepTermMetadata' field of a branch.
303- deriveDeepTermMetadata :: forall m . Branch0 m -> Branch0 m
304- deriveDeepTermMetadata branch =
305- branch {deepTermMetadata = R4. fromList (makeDeepTermMetadata branch)}
306- where
307- makeDeepTermMetadata :: Branch0 m -> [(Referent , Name , Metadata. Type , Metadata. Value )]
308- makeDeepTermMetadata branch = State. evalState (go (Seq. singleton ([] , 0 , branch)) mempty ) Set. empty
309- where
310- go ::
311- Seq (DeepChildAcc m ) ->
312- [(Referent , Name , Metadata. Type , Metadata. Value )] ->
313- DeepState m [(Referent , Name , Metadata. Type , Metadata. Value )]
314- go Seq. Empty acc = pure acc
315- go (e@ (reversePrefix, _, b0) Seq. :<| work) acc = do
316- let termMetadata :: [(Referent , Name , Metadata. Type , Metadata. Value )]
317- termMetadata =
318- map
319- (\ (r, n, t, v) -> (r, Name. fromReverseSegments (n NonEmpty. :| reversePrefix), t, v))
320- (Metadata. starToR4List (_terms b0))
321- children <- deepChildrenHelper e
322- go (work <> children) (termMetadata <> acc)
323-
324- -- | Derive the 'deepTypeMetadata' field of a branch.
325- deriveDeepTypeMetadata :: forall m . Branch0 m -> Branch0 m
326- deriveDeepTypeMetadata branch =
327- branch {deepTypeMetadata = R4. fromList (makeDeepTypeMetadata branch)}
328- where
329- makeDeepTypeMetadata :: Branch0 m -> [(TypeReference , Name , Metadata. Type , Metadata. Value )]
330- makeDeepTypeMetadata branch = State. evalState (go (Seq. singleton ([] , 0 , branch)) mempty ) Set. empty
331- where
332- go ::
333- Seq (DeepChildAcc m ) ->
334- [(TypeReference , Name , Metadata. Type , Metadata. Value )] ->
335- DeepState m [(TypeReference , Name , Metadata. Type , Metadata. Value )]
336- go Seq. Empty acc = pure acc
337- go (e@ (reversePrefix, _, b0) Seq. :<| work) acc = do
338- let typeMetadata :: [(TypeReference , Name , Metadata. Type , Metadata. Value )]
339- typeMetadata =
340- map
341- (\ (r, n, t, v) -> (r, Name. fromReverseSegments (n NonEmpty. :| reversePrefix), t, v))
342- (Metadata. starToR4List (_types b0))
343- children <- deepChildrenHelper e
344- go (work <> children) (typeMetadata <> acc)
345-
346292-- | Derive the 'deepPaths' field of a branch.
347293deriveDeepPaths :: forall m . Branch0 m -> Branch0 m
348294deriveDeepPaths branch =
@@ -483,7 +429,17 @@ one = Branch . Causal.one
483429
484430empty0 :: Branch0 m
485431empty0 =
486- Branch0 mempty mempty mempty mempty True mempty mempty mempty mempty mempty mempty
432+ Branch0
433+ { _terms = mempty ,
434+ _types = mempty ,
435+ _children = Map. empty,
436+ _edits = Map. empty,
437+ isEmpty0 = True ,
438+ deepTerms = Relation. empty,
439+ deepTypes = Relation. empty,
440+ deepPaths = Set. empty,
441+ deepEdits = Map. empty
442+ }
487443
488444-- | Checks whether a branch is empty AND has no history.
489445isEmpty :: Branch m -> Bool
@@ -718,15 +674,13 @@ batchUpdatesM (toList -> actions) curBranch = foldM execActions curBranch (group
718674 pathLocation _ = ChildActions
719675
720676-- todo: consider inlining these into Actions2
721- addTermName ::
722- Referent -> NameSegment -> Metadata. Metadata -> Branch0 m -> Branch0 m
723- addTermName r new md =
724- over terms (Metadata. insertWithMetadata (r, md) . Star3. insertD1 (r, new))
725-
726- addTypeName ::
727- TypeReference -> NameSegment -> Metadata. Metadata -> Branch0 m -> Branch0 m
728- addTypeName r new md =
729- over types (Metadata. insertWithMetadata (r, md) . Star3. insertD1 (r, new))
677+ addTermName :: Referent -> NameSegment -> Branch0 m -> Branch0 m
678+ addTermName r new =
679+ over terms (Star3. insertD1 (r, new))
680+
681+ addTypeName :: TypeReference -> NameSegment -> Branch0 m -> Branch0 m
682+ addTypeName r new =
683+ over types (Star3. insertD1 (r, new))
730684
731685deleteTermName :: Referent -> NameSegment -> Branch0 m -> Branch0 m
732686deleteTermName r n b
0 commit comments