revset: comment that we can't swap 'or' operands by weight
Though the original code did nothing, it tried to optimize the calculation
order by weight. But we can't simply swap 'ta' and 'tb' because it would
change the order of revisions.
For future reference, this patch keeps the modified version of the original
code as comment.
--- a/mercurial/revset.py Sun Apr 26 18:05:23 2015 +0900
+++ b/mercurial/revset.py Sun Apr 26 18:27:32 2015 +0900
@@ -2162,8 +2162,10 @@
elif op == 'or':
wa, ta = optimize(x[1], False)
wb, tb = optimize(x[2], False)
- if wb < wa:
- wb, wa = wa, wb
+ # we can't reorder trees by weight because it would change the order.
+ # ("sort(a + b)" == "sort(b + a)", but "a + b" != "b + a")
+ # if wb < wa:
+ # tb, ta = ta, tb
return max(wa, wb), (op, ta, tb)
elif op == 'not':
# Optimize not public() to _notpublic() because we have a fast version