D561: revset: drop optimization about reordering "or" set elements
quark (Jun Wu)
phabricator at mercurial-scm.org
Wed Aug 30 09:53:15 EDT 2017
This revision was automatically updated to reflect the committed changes.
Closed by commit rHG72b5f4d53c58: revset: drop optimization about reordering "or" set elements (authored by quark).
REPOSITORY
rHG Mercurial
CHANGES SINCE LAST UPDATE
https://phab.mercurial-scm.org/D561?vs=1388&id=1432
REVISION DETAIL
https://phab.mercurial-scm.org/D561
AFFECTED FILES
mercurial/revsetlang.py
tests/test-revset.t
CHANGE DETAILS
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:
<filteredset
<spanset- 0:3>,
<addset
- <baseset [2]>,
- <spanset+ 0:2>>>
+ <spanset+ 0:2>,
+ <baseset [2]>>>
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:
- <filteredset
- <spanset+ 0:3>,
- <addset
- <baseset [2]>,
- <filteredset
- <fullreposet+ 0:10>,
- <contains 'a'>>>>
- 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:
- <addset
- <filteredset
- <spanset- 0:3>,
- <contains 'a'>>,
- <baseset [2]>>
- 1
- 0
- 2
-
test sort revset
--------------------------------------------
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
To: quark, #hg-reviewers
Cc: mercurial-devel
More information about the Mercurial-devel
mailing list