X-Git-Url: http://git.nguyen.vg/gitweb/?p=tatoo.git;a=blobdiff_plain;f=src%2Fata.ml;h=8a13705c5d5e056c4cec98123f0ab281b015ce80;hp=565dfc8bf1595a7c2a75315a239f5dde8cebdce7;hb=be682346caf089e95dc3254f89119f93797813f4;hpb=e56b9fbeaed04c1f2fb7019de34f7d8e87d6db73 diff --git a/src/ata.ml b/src/ata.ml index 565dfc8..8a13705 100644 --- a/src/ata.ml +++ b/src/ata.ml @@ -451,8 +451,11 @@ let compute_rank auto = let upward = [ `Stay ; `Parent ; `Previous_sibling ] in let downward = [ `Stay; `First_child; `Next_sibling ] in let swap dir = if dir == upward then downward else upward in - let is_satisfied q t = - Move.for_all (fun _ set -> StateSet.(is_empty (remove q set))) t + let is_satisfied dir q t = + Move.for_all (fun d set -> + if List.mem d dir then + StateSet.(is_empty (remove q set)) + else StateSet.is_empty set) t in let update_dependencies dir initacc = let rec loop acc = @@ -464,7 +467,7 @@ let compute_rank auto = Move.set deps m (StateSet.diff (Move.get deps m) to_remove) ) dir; - if is_satisfied q deps then StateSet.add q acc else acc + if is_satisfied dir q deps then StateSet.add q acc else acc ) dependencies acc in if acc == new_acc then new_acc else loop new_acc