@@ -15,6 +15,7 @@ import Control.Arrow (second)
1515import Data.Function (on)
1616import qualified Data.List as List
1717import qualified Data.Map as Map
18+import qualified Data.Set as Set
1819import Data.Map ((!))
1920import qualified Data.Maybe as Maybe
2021
@@ -271,7 +272,19 @@ getSubstitution (path, A.A _ pattern) =
271272
272273testsAtPath :: Path -> [Branch] -> [Test]
273274testsAtPath selectedPath branches =
274− List.nub $ Maybe.mapMaybe (testAtPath selectedPath) branches
275+ let
276+ allTests =
277+ Maybe.mapMaybe (testAtPath selectedPath) branches
278+
279+ skipVisited test curr@(uniqueTests, visitedTests) =
280+ if Set.member test visitedTests then
281+ curr
282+ else
283+ ( test : uniqueTests
284+ , Set.insert test visitedTests
285+ )
286+ in
287+ fst (foldr skipVisited ([], Set.empty) allTests)
275288
276289
277290testAtPath :: Path -> Branch -> Maybe Test