dejafu 2.1.0.2 → 2.1.0.3
raw patch · 3 files changed
+19/−12 lines, 3 filesPVP: major bump suggested
API removals or changes: PVP suggests a major version bump
API changes (from Hackage documentation)
- Test.DejaFu.SCT.Internal.DPOR: initialDPORThread :: DPOR -> ThreadId
Files
- CHANGELOG.rst +11/−0
- Test/DejaFu/SCT/Internal/DPOR.hs +6/−10
- dejafu.cabal +2/−2
CHANGELOG.rst view
@@ -6,6 +6,17 @@ .. _PVP: https://pvp.haskell.org/ +2.1.0.3 (2020-02-29)+--------------------++* Git: :tag:`dejafu-2.1.0.3`+* Hackage: :hackage:`dejafu-2.1.0.3`++Fixed+~~~~~++* Fixed an internal error message.+ 2.1.0.2 (2020-02-29) --------------------
Test/DejaFu/SCT/Internal/DPOR.hs view
@@ -75,7 +75,7 @@ | not (todo `S.isSubsetOf` runnable) = fatal "thread exists in todo set but not runnable set" | not (done `S.isSubsetOf` runnable) = fatal "thread exists in done set but not runnable set" | not (taken `S.isSubsetOf` done) = fatal "thread exists in taken set but not done set"- | not (todo `disjoint` done) = fatal "thread exists in both taken set and done set"+ | not (todo `disjoint` done) = fatal "thread exists in both todo set and done set" | not (maybe True (`S.member` done) next) = fatal "taken thread does not exist in done set" | otherwise = dpor where@@ -166,14 +166,14 @@ -- ^ The initial concurrency state -> DPOR -> DPOR-incorporateTrace safeIO memtype conservative trace state0 dpor0 = grow state0 (initialDPORThread dpor0) trace dpor0 where- grow state tid trc@((d, _, a):rest) dpor =+incorporateTrace safeIO memtype conservative = grow initialThread where+ grow tid trc@((d, _, a):rest) state dpor = let tid' = tidOf tid d state' = updateCState memtype state tid' a in case dporNext dpor of Just (t, child) | t == tid' ->- validateDPOR $ dpor { dporNext = Just (tid', grow state' tid' rest child) }+ validateDPOR $ dpor { dporNext = Just (tid', grow tid' rest state' child) } | hasTodos child -> fatal "replacing child with todos!" _ -> validateDPOR $ let taken = M.insert tid' a (dporTaken dpor)@@ -183,7 +183,7 @@ , dporNext = Just (tid', subtree state' tid' sleep trc) , dporDone = S.insert tid' (dporDone dpor) }- grow _ _ [] _ = fatal "trace exhausted without reading a to-do point!"+ grow _ _ _ _ = fatal "trace exhausted without reading a to-do point!" -- check if there are to-do points in a tree hasTodos dpor = not (M.null (dporTodo dpor)) || (case dporNext dpor of Just (_, dpor') -> hasTodos dpor'; _ -> False)@@ -210,7 +210,7 @@ ((d', _, a'):_) -> M.singleton (tidOf tid d') a' [] -> M.empty }- subtree _ _ _ [] = fatal "subtree suffix empty!"+ subtree _ _ _ _ = fatal "subtree suffix empty!" -- | Produce a list of new backtracking points from an execution -- trace. These are then used to inform new \"to-do\" points in the@@ -673,10 +673,6 @@ ------------------------------------------------------------------------------- -- * Utilities---- The initial thread of a DPOR tree.-initialDPORThread :: DPOR -> ThreadId-initialDPORThread = S.elemAt 0 . dporRunnable -- | Check if a thread yielded. didYield :: ThreadAction -> Bool
dejafu.cabal view
@@ -2,7 +2,7 @@ -- documentation, see http://haskell.org/cabal/users-guide/ name: dejafu-version: 2.1.0.2+version: 2.1.0.3 synopsis: A library for unit-testing concurrent programs. description:@@ -33,7 +33,7 @@ source-repository this type: git location: https://github.com/barrucadu/dejafu.git- tag: dejafu-2.1.0.2+ tag: dejafu-2.1.0.3 library exposed-modules: Test.DejaFu