@@ -78,8 +78,7 @@ import Data.Tree (Forest, Tree (..), drawForest)
78import Data.FastWeakBag (FastWeakBag)
78import Data.FastWeakBag (FastWeakBag)
79import qualified Data.FastWeakBag as FastWeakBag
79import qualified Data.FastWeakBag as FastWeakBag
80import Data.Reflection
80import Data.Reflection
81−import Data.Some (Some)
81+import Data.Some (Some(Some))
82−import qualified Data.Some as Some
83import Data.Type.Coercion
82import Data.Type.Coercion
84import Data.Profunctor.Unsafe ((#.), (.#))
83import Data.Profunctor.Unsafe ((#.), (.#))
85import Data.WeakBag (WeakBag, WeakBagTicket, _weakBag_children)
84import Data.WeakBag (WeakBag, WeakBagTicket, _weakBag_children)
@@ -587,7 +586,7 @@ eventSubscribedFan !subscribed = EventSubscribed
587 { eventSubscribedHeightRef = eventSubscribedHeightRef $ _eventSubscription_subscribed $ fanSubscribedParent subscribed
586 { eventSubscribedHeightRef = eventSubscribedHeightRef $ _eventSubscription_subscribed $ fanSubscribedParent subscribed
588 , eventSubscribedRetained = toAny subscribed
587 , eventSubscribedRetained = toAny subscribed
589#ifdef DEBUG_CYCLES
588#ifdef DEBUG_CYCLES
590− , eventSubscribedGetParents = return [Some.This $ _eventSubscription_subscribed $ fanSubscribedParent subscribed]
589+ , eventSubscribedGetParents = return [Some $ _eventSubscription_subscribed $ fanSubscribedParent subscribed]
591 , eventSubscribedHasOwnHeightRef = False
590 , eventSubscribedHasOwnHeightRef = False
592 , eventSubscribedWhoCreated = whoCreatedIORef $ fanSubscribedCachedSubscribed subscribed
591 , eventSubscribedWhoCreated = whoCreatedIORef $ fanSubscribedCachedSubscribed subscribed
@@ -600,7 +599,7 @@ eventSubscribedSwitch !subscribed = EventSubscribed
600#ifdef DEBUG_CYCLES
599#ifdef DEBUG_CYCLES
601 , eventSubscribedGetParents = do
600 , eventSubscribedGetParents = do
602 s <- readIORef $ switchSubscribedCurrentParent subscribed
601 s <- readIORef $ switchSubscribedCurrentParent subscribed
603− return [Some.This $ _eventSubscription_subscribed s]
602+ return [Some $ _eventSubscription_subscribed s]
604 , eventSubscribedHasOwnHeightRef = True
603 , eventSubscribedHasOwnHeightRef = True
605 , eventSubscribedWhoCreated = whoCreatedIORef $ switchSubscribedCachedSubscribed subscribed
604 , eventSubscribedWhoCreated = whoCreatedIORef $ switchSubscribedCachedSubscribed subscribed
@@ -613,8 +612,8 @@ eventSubscribedCoincidence !subscribed = EventSubscribed
613#ifdef DEBUG_CYCLES
612#ifdef DEBUG_CYCLES
614 , eventSubscribedGetParents = do
613 , eventSubscribedGetParents = do
615 innerSubscription <- readIORef $ coincidenceSubscribedInnerParent subscribed
614 innerSubscription <- readIORef $ coincidenceSubscribedInnerParent subscribed
616− let outerParent = Some.This $ _eventSubscription_subscribed $ coincidenceSubscribedOuterParent subscribed
615+ let outerParent = Some $ _eventSubscription_subscribed $ coincidenceSubscribedOuterParent subscribed
617− innerParents = maybeToList $ fmap Some.This innerSubscription
616+ innerParents = maybeToList $ fmap Some innerSubscription
618 return $ outerParent : innerParents
617 return $ outerParent : innerParents
619 , eventSubscribedHasOwnHeightRef = True
618 , eventSubscribedHasOwnHeightRef = True
620 , eventSubscribedWhoCreated = whoCreatedIORef $ coincidenceSubscribedCachedSubscribed subscribed
619 , eventSubscribedWhoCreated = whoCreatedIORef $ coincidenceSubscribedCachedSubscribed subscribed
@@ -630,13 +629,13 @@ whoCreatedEventSubscribed = eventSubscribedWhoCreated
631walkInvalidHeightParents :: EventSubscribed x -> IO [Some (EventSubscribed x)]
630walkInvalidHeightParents :: EventSubscribed x -> IO [Some (EventSubscribed x)]
632walkInvalidHeightParents s0 = do
631walkInvalidHeightParents s0 = do
633− subscribers <- flip execStateT mempty $ ($ Some.This s0) $ fix $ \loop (Some.This s) -> do
632+ subscribers <- flip execStateT mempty $ ($ Some s0) $ fix $ \loop (Some s) -> do
634 h <- liftIO $ readIORef $ eventSubscribedHeightRef s
633 h <- liftIO $ readIORef $ eventSubscribedHeightRef s
635 when (h == invalidHeight) $ do
634 when (h == invalidHeight) $ do
636 when (eventSubscribedHasOwnHeightRef s) $ liftIO $ writeIORef (eventSubscribedHeightRef s) $! invalidHeightBeingTraversed
635 when (eventSubscribedHasOwnHeightRef s) $ liftIO $ writeIORef (eventSubscribedHeightRef s) $! invalidHeightBeingTraversed
637− modify (Some.This s :)
636+ modify (Some s :)
638 mapM_ loop =<< liftIO (eventSubscribedGetParents s)
637 mapM_ loop =<< liftIO (eventSubscribedGetParents s)
639− forM_ subscribers $ \(Some.This s) -> writeIORef (eventSubscribedHeightRef s) $! invalidHeight
638+ forM_ subscribers $ \(Some s) -> writeIORef (eventSubscribedHeightRef s) $! invalidHeight
640 return subscribers
639 return subscribers
@@ -664,7 +663,7 @@ behaviorPull !p = Behavior $ do
664 val <- liftIO $ readIORef $ pullValue p
663 val <- liftIO $ readIORef $ pullValue p
665 case val of
664 case val of
666 Just subscribed -> do
665 Just subscribed -> do
667− askParentsRef >>= mapM_ (\r -> liftIO $ modifyIORef' r (SomeBehaviorSubscribed (Some.This (BehaviorSubscribedPull subscribed)) :))
666+ askParentsRef >>= mapM_ (\r -> liftIO $ modifyIORef' r (SomeBehaviorSubscribed (Some (BehaviorSubscribedPull subscribed)) :))
668 askInvalidator >>= mapM_ (\wi -> liftIO $ modifyIORef' (pullSubscribedInvalidators subscribed) (wi:))
667 askInvalidator >>= mapM_ (\wi -> liftIO $ modifyIORef' (pullSubscribedInvalidators subscribed) (wi:))
669 liftIO $ touch $ pullSubscribedOwnInvalidator subscribed
668 liftIO $ touch $ pullSubscribedOwnInvalidator subscribed
670 return $ pullSubscribedValue subscribed
669 return $ pullSubscribedValue subscribed
@@ -683,7 +682,7 @@ behaviorPull !p = Behavior $ do
683 , pullSubscribedParents = parents
682 , pullSubscribedParents = parents
685 liftIO $ writeIORef (pullValue p) $ Just subscribed
684 liftIO $ writeIORef (pullValue p) $ Just subscribed
686− askParentsRef >>= mapM_ (\r -> liftIO $ modifyIORef' r (SomeBehaviorSubscribed (Some.This (BehaviorSubscribedPull subscribed)) :))
685+ askParentsRef >>= mapM_ (\r -> liftIO $ modifyIORef' r (SomeBehaviorSubscribed (Some (BehaviorSubscribedPull subscribed)) :))
689behaviorDyn :: Patch p => Dyn x p -> Behavior x (PatchTarget p)
688behaviorDyn :: Patch p => Dyn x p -> Behavior x (PatchTarget p)
@@ -694,7 +693,7 @@ readHoldTracked :: Hold x p -> BehaviorM x (PatchTarget p)
694readHoldTracked h = do
693readHoldTracked h = do
695 result <- liftIO $ readIORef $ holdValue h
694 result <- liftIO $ readIORef $ holdValue h
696 askInvalidator >>= mapM_ (\wi -> liftIO $ modifyIORef' (holdInvalidators h) (wi:))
695 askInvalidator >>= mapM_ (\wi -> liftIO $ modifyIORef' (holdInvalidators h) (wi:))
697− askParentsRef >>= mapM_ (\r -> liftIO $ modifyIORef' r (SomeBehaviorSubscribed (Some.This (BehaviorSubscribedHold h)) :))
696+ askParentsRef >>= mapM_ (\r -> liftIO $ modifyIORef' r (SomeBehaviorSubscribed (Some (BehaviorSubscribedHold h)) :))
698 liftIO $ touch h -- Otherwise, if this gets inlined enough, the hold's parent reference may get collected
697 liftIO $ touch h -- Otherwise, if this gets inlined enough, the hold's parent reference may get collected
699 return result
698 return result
@@ -867,7 +866,7 @@ instance HasSpiderTimeline x => Defer (Some Clear) (EventM x) where
868{-# INLINE scheduleClear #-}
867{-# INLINE scheduleClear #-}
869scheduleClear :: Defer (Some Clear) m => IORef (Maybe a) -> m ()
868scheduleClear :: Defer (Some Clear) m => IORef (Maybe a) -> m ()
870−scheduleClear r = defer $ Some.This $ Clear r
869+scheduleClear r = defer $ Some $ Clear r
872instance HasSpiderTimeline x => Defer (Some IntClear) (EventM x) where
871instance HasSpiderTimeline x => Defer (Some IntClear) (EventM x) where
873 {-# INLINE getDeferralQueue #-}
872 {-# INLINE getDeferralQueue #-}
@@ -875,7 +874,7 @@ instance HasSpiderTimeline x => Defer (Some IntClear) (EventM x) where
876{-# INLINE scheduleIntClear #-}
875{-# INLINE scheduleIntClear #-}
877scheduleIntClear :: Defer (Some IntClear) m => IORef (IntMap a) -> m ()
876scheduleIntClear :: Defer (Some IntClear) m => IORef (IntMap a) -> m ()
878−scheduleIntClear r = defer $ Some.This $ IntClear r
877+scheduleIntClear r = defer $ Some $ IntClear r
880instance HasSpiderTimeline x => Defer (Some RootClear) (EventM x) where
879instance HasSpiderTimeline x => Defer (Some RootClear) (EventM x) where
881 {-# INLINE getDeferralQueue #-}
880 {-# INLINE getDeferralQueue #-}
@@ -883,7 +882,7 @@ instance HasSpiderTimeline x => Defer (Some RootClear) (EventM x) where
884{-# INLINE scheduleRootClear #-}
883{-# INLINE scheduleRootClear #-}
885scheduleRootClear :: Defer (Some RootClear) m => IORef (DMap k Identity) -> m ()
884scheduleRootClear :: Defer (Some RootClear) m => IORef (DMap k Identity) -> m ()
886−scheduleRootClear r = defer $ Some.This $ RootClear r
885+scheduleRootClear r = defer $ Some $ RootClear r
888instance HasSpiderTimeline x => Defer (SomeResetCoincidence x) (EventM x) where
887instance HasSpiderTimeline x => Defer (SomeResetCoincidence x) (EventM x) where
889 {-# INLINE getDeferralQueue #-}
888 {-# INLINE getDeferralQueue #-}
@@ -1872,7 +1871,7 @@ mergeSubscriber m getKey = Subscriber
1872 else liftIO $ do
1871 else liftIO $ do
1873#ifdef DEBUG_CYCLES
1872#ifdef DEBUG_CYCLES
1874 nodesInvolvedInCycle <- walkInvalidHeightParents $ eventSubscribedMerge subscribed
1873 nodesInvolvedInCycle <- walkInvalidHeightParents $ eventSubscribedMerge subscribed
1875− stacks <- forM nodesInvolvedInCycle $ \(Some.This es) -> whoCreatedEventSubscribed es
1874+ stacks <- forM nodesInvolvedInCycle $ \(Some es) -> whoCreatedEventSubscribed es
1876 let cycleInfo = ":\n" <> drawForest (listsToForest stacks)
1875 let cycleInfo = ":\n" <> drawForest (listsToForest stacks)
1878 let cycleInfo = ""
1877 let cycleInfo = ""
@@ -2116,11 +2115,11 @@ runFrame a = SpiderHost $ do
2116 return result
2115 return result
2117 result <- runEventM go
2116 result <- runEventM go
2118 toClear <- readIORef $ eventEnvClears env
2117 toClear <- readIORef $ eventEnvClears env
2119− forM_ toClear $ \(Some.This (Clear ref)) -> {-# SCC "clear" #-} writeIORef ref Nothing
2118+ forM_ toClear $ \(Some (Clear ref)) -> {-# SCC "clear" #-} writeIORef ref Nothing
2120 toClearInt <- readIORef $ eventEnvIntClears env
2119 toClearInt <- readIORef $ eventEnvIntClears env
2121− forM_ toClearInt $ \(Some.This (IntClear ref)) -> {-# SCC "intClear" #-} writeIORef ref $! IntMap.empty
2120+ forM_ toClearInt $ \(Some (IntClear ref)) -> {-# SCC "intClear" #-} writeIORef ref $! IntMap.empty
2122 toClearRoot <- readIORef $ eventEnvRootClears env
2121 toClearRoot <- readIORef $ eventEnvRootClears env
2123− forM_ toClearRoot $ \(Some.This (RootClear ref)) -> {-# SCC "rootClear" #-} writeIORef ref $! DMap.empty
2122+ forM_ toClearRoot $ \(Some (RootClear ref)) -> {-# SCC "rootClear" #-} writeIORef ref $! DMap.empty
2124 toAssign <- readIORef $ eventEnvAssignments env
2123 toAssign <- readIORef $ eventEnvAssignments env
2125 toReconnectRef <- newIORef []
2124 toReconnectRef <- newIORef []
2126 coincidenceInfos <- readIORef $ eventEnvResetCoincidences env
2125 coincidenceInfos <- readIORef $ eventEnvResetCoincidences env
@@ -2480,7 +2479,7 @@ unsafeNewSpiderTimelineEnv = do
2481-- | Create a new SpiderTimelineEnv
2480-- | Create a new SpiderTimelineEnv
2482newSpiderTimeline :: IO (Some SpiderTimelineEnv)
2481newSpiderTimeline :: IO (Some SpiderTimelineEnv)
2483−newSpiderTimeline = withSpiderTimeline (pure . Some.This)
2482+newSpiderTimeline = withSpiderTimeline (pure . Some)
2485data LocalSpiderTimeline (x :: Type) s
2484data LocalSpiderTimeline (x :: Type) s