revset: add inspection data to limit() and last() functions
We are likely to be interested in how these functions calculate a result set.
--- a/mercurial/revset.py Tue Feb 16 21:32:00 2016 +0900
+++ b/mercurial/revset.py Tue Feb 16 21:43:51 2016 +0900
@@ -1288,7 +1288,8 @@
break
elif y in subset:
result.append(y)
- return baseset(result)
+ return baseset(result, datarepr=('<limit n=%d, offset=%d, %r, %r>',
+ lim, ofs, subset, os))
@predicate('last(set, [n])', safe=True)
def last(repo, subset, x):
@@ -1314,7 +1315,7 @@
break
elif y in subset:
result.append(y)
- return baseset(result)
+ return baseset(result, datarepr=('<last n=%d, %r, %r>', lim, subset, os))
@predicate('max(set)', safe=True)
def maxrev(repo, subset, x):
--- a/tests/test-revset.t Tue Feb 16 21:32:00 2016 +0900
+++ b/tests/test-revset.t Tue Feb 16 21:43:51 2016 +0900
@@ -1984,11 +1984,48 @@
issue2549 - correct optimizations
- $ log 'limit(1 or 2 or 3, 2) and not 2'
+ $ try 'limit(1 or 2 or 3, 2) and not 2'
+ (and
+ (func
+ ('symbol', 'limit')
+ (list
+ (or
+ ('symbol', '1')
+ ('symbol', '2')
+ ('symbol', '3'))
+ ('symbol', '2')))
+ (not
+ ('symbol', '2')))
+ * set:
+ <filteredset
+ <baseset
+ <limit n=2, offset=0,
+ <fullreposet+ 0:9>,
+ <baseset [1, 2, 3]>>>,
+ <not
+ <baseset [2]>>>
1
$ log 'max(1 or 2) and not 2'
$ log 'min(1 or 2) and not 1'
- $ log 'last(1 or 2, 1) and not 2'
+ $ try 'last(1 or 2, 1) and not 2'
+ (and
+ (func
+ ('symbol', 'last')
+ (list
+ (or
+ ('symbol', '1')
+ ('symbol', '2'))
+ ('symbol', '1')))
+ (not
+ ('symbol', '2')))
+ * set:
+ <filteredset
+ <baseset
+ <last n=1,
+ <fullreposet+ 0:9>,
+ <baseset [2, 1]>>>,
+ <not
+ <baseset [2]>>>
issue4289 - ordering of built-ins
$ hg log -M -q -r 3:2