# HG changeset patch # User Yuya Nishihara # Date 1455626631 -32400 # Node ID 3d39ac06af9add4d3aa3d9c22a55ba3ed1362804 # Parent 02d7faaf455c2f9793fa48cf7c984a971a46fb19 revset: add inspection data to limit() and last() functions We are likely to be interested in how these functions calculate a result set. diff -r 02d7faaf455c -r 3d39ac06af9a mercurial/revset.py --- 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=('', + 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=('', lim, subset, os)) @predicate('max(set)', safe=True) def maxrev(repo, subset, x): diff -r 02d7faaf455c -r 3d39ac06af9a tests/test-revset.t --- 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: + , + >>, + >> 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: + , + >>, + >> issue4289 - ordering of built-ins $ hg log -M -q -r 3:2