@@ -101,7 +101,6 @@ import Control.Monad.Trans (MonadTrans (lift))
101101import Control.Monad.Trans.Maybe (MaybeT (MaybeT ), runMaybeT )
102102import Control.Monad.Writer (MonadWriter , WriterT , runWriterT )
103103import qualified Control.Monad.Writer as Writer
104- import Data.Bifoldable (bifoldMap )
105104import Data.Bifunctor (Bifunctor (bimap ))
106105import Data.Bitraversable (Bitraversable (bitraverse ))
107106import Data.ByteString (ByteString )
@@ -114,8 +113,7 @@ import Data.Functor.Identity (Identity)
114113import Data.Map (Map )
115114import qualified Data.Map as Map
116115import qualified Data.Map.Merge.Lazy as Map
117- import Data.Maybe (catMaybes , isJust )
118- import Data.Monoid (First (First , getFirst ))
116+ import Data.Maybe (isJust )
119117import Data.Sequence (Seq )
120118import qualified Data.Sequence as Seq
121119import Data.Set (Set )
@@ -523,21 +521,25 @@ saveTermComponent h terms = do
523521 dependencies :: Set S. Reference =
524522 let (tmRefs, tpRefs, tmLinks, tpLinks) = TermUtil. dependencies tm
525523 tpRefs' = Foldable. toList $ C.Type. dependencies tp
526- getTermSRef :: S.Term. TermRef -> Maybe S. Reference
527- getTermSRef (C. ReferenceBuiltin t) = Just (C. ReferenceBuiltin (tIds Vector. ! fromIntegral t))
528- getTermSRef (C.Reference. Derived (Just h) i) = Just (C.Reference. Derived (oIds Vector. ! fromIntegral h) i)
529- getTermSRef _selfCycleRef@ (C.Reference. Derived Nothing _) = Nothing
524+ getTermSRef :: S.Term. TermRef -> S. Reference
525+ getTermSRef = \ case
526+ C. ReferenceBuiltin t -> C. ReferenceBuiltin (tIds Vector. ! fromIntegral t)
527+ C.Reference. Derived mh i ->
528+ C.Reference. Derived (maybe oId (\ h -> oIds Vector. ! fromIntegral h) mh) i
530529 getTypeSRef :: S.Term. TypeRef -> S. Reference
531- getTypeSRef (C. ReferenceBuiltin t) = C. ReferenceBuiltin (tIds Vector. ! fromIntegral t)
532- getTypeSRef (C.Reference. Derived h i) = C.Reference. Derived (oIds Vector. ! fromIntegral h) i
530+ getTypeSRef = \ case
531+ C. ReferenceBuiltin t -> C. ReferenceBuiltin (tIds Vector. ! fromIntegral t)
532+ C.Reference. Derived h i -> C.Reference. Derived (oIds Vector. ! fromIntegral h) i
533533 getSTypeLink = getTypeSRef
534- getSTermLink :: S.Term. TermLink -> Maybe S. Reference
535- getSTermLink = getFirst . bifoldMap (First . getTermSRef) (First . Just . getTypeSRef)
534+ getSTermLink :: S.Term. TermLink -> S. Reference
535+ getSTermLink = \ case
536+ C.Referent. Con ref _conId -> getTypeSRef ref
537+ C.Referent. Ref ref -> getTermSRef ref
536538 in Set. fromList $
537- catMaybes
538- ( fmap getTermSRef tmRefs ++ fmap getSTermLink tmLinks)
539- ++ fmap getTypeSRef (tpRefs ++ tpRefs')
540- ++ fmap getSTypeLink tpLinks
539+ map getTermSRef tmRefs
540+ ++ map getSTermLink tmLinks
541+ ++ map getTypeSRef (tpRefs ++ tpRefs')
542+ ++ map getSTypeLink tpLinks
541543 in Set. map (,self) dependencies
542544 traverse_ (uncurry Q. addToDependentsIndex) dependencies
543545
@@ -803,7 +805,7 @@ w2cTerm ids tm = do
803805
804806-- ** Saving & loading type decls
805807
806- saveDeclComponent :: EDB m => H. Hash -> [( C. Decl Symbol ) ] -> m Db. ObjectId
808+ saveDeclComponent :: EDB m => H. Hash -> [C. Decl Symbol ] -> m Db. ObjectId
807809saveDeclComponent h decls = do
808810 when debug . traceM $ " Operations.saveDeclComponent " ++ show h
809811 sDeclElements <- traverse (c2sDecl Q. saveText primaryHashToExistingObjectId) decls
0 commit comments