diff --git a/mercurial/revsetlang.py b/mercurial/revsetlang.py --- a/mercurial/revsetlang.py +++ b/mercurial/revsetlang.py @@ -467,9 +467,6 @@ flushss() if len(ts) == 1: return ws[0], ts[0] # 'or' operation is fully optimized out - if order != defineorder: - # reorder by weight only when f(a + b) == f(b + a) - ts = [wt[1] for wt in sorted(zip(ws, ts), key=lambda wt: wt[0])] return max(ws), (op, ('list',) + tuple(ts), order) elif op == 'not': # Optimize not public() to _notpublic() because we have a fast version diff --git a/tests/test-revset.t b/tests/test-revset.t --- a/tests/test-revset.t +++ b/tests/test-revset.t @@ -2076,19 +2076,19 @@ define) (or (list - ('symbol', '2') (range ('symbol', '0') ('symbol', '1') - follow)) + follow) + ('symbol', '2')) follow) define) * set: , , - >> + , + >> 2 1 0 @@ -2569,69 +2569,6 @@ 1 0 - 'A + B' can be rewritten to 'B + A' by weight only when the order doesn't - matter (e.g. 'X & (A + B)' can be 'X & (B + A)', but '(A + B) & X' can't): - - $ try -p optimized '0:2 & (reverse(contains("a")) + 2)' - * optimized: - (and - (range - ('symbol', '0') - ('symbol', '2') - define) - (or - (list - ('symbol', '2') - (func - ('symbol', 'reverse') - (func - ('symbol', 'contains') - ('string', 'a') - define) - follow)) - follow) - define) - * set: - , - , - , - >>> - 0 - 1 - 2 - - $ try -p optimized '(reverse(contains("a")) + 2) & 0:2' - * optimized: - (and - (range - ('symbol', '0') - ('symbol', '2') - follow) - (or - (list - (func - ('symbol', 'reverse') - (func - ('symbol', 'contains') - ('string', 'a') - define) - define) - ('symbol', '2')) - define) - define) - * set: - , - >, - > - 1 - 0 - 2 - test sort revset --------------------------------------------