@@ -1,9 +1,11 @@
1+{-# LANGUAGE BangPatterns #-}
12{-# LANGUAGE ConstraintKinds #-}
23{-# LANGUAGE FlexibleContexts #-}
34{-# LANGUAGE FlexibleInstances #-}
45{-# LANGUAGE GADTs #-}
56{-# LANGUAGE MultiParamTypeClasses #-}
67{-# LANGUAGE RankNTypes #-}
8+{-# LANGUAGE RecursiveDo #-}
79
810module Reflex.Test.Micro (testCases) where
911
@@ -12,12 +14,11 @@ import Reflex.TestPlan
1214
1315import Control.Applicative
1416import Control.Monad
17+import Control.Monad.Fix
1518import Data.Char
1619import Data.Functor.Misc
1720import Data.Monoid
18−
1921import Data.Foldable
20−
2122import qualified Data.Map as Map
2223
2324import Prelude
@@ -249,6 +250,14 @@ testCases =
249250 f <- fanMap . fmap toMap <$> events1
250251 return $ toList <$> mergeList [ select f (Const2 'b'), select f (Const2 'b'), select f (Const2 'e'), select f (Const2 'e') ]
251252
253+ , testE "lazy-hold" $ do
254+ let lazyHold :: forall t m. (Reflex t, MonadHold t m, MonadFix m) => m (Event t ())
255+ lazyHold = do
256+ rec !b <- hold never e
257+ let e = never <$ switch b
258+ return $ void e
259+ lazyHold
260+
252261 ] where
253262
254263 events1, events2, events3 :: TestPlan t m => m (Event t String)