# HG changeset patch # User Yuya Nishihara # Date 1455626653 -32400 # Node ID 969a4615c4c4a79120f87ee0af11e78b8f0354cb # Parent 3d39ac06af9add4d3aa3d9c22a55ba3ed1362804 revset: add inspection data to max() and min() functions We are likely to be interested in how these functions build a result set. diff -r 3d39ac06af9a -r 969a4615c4c4 mercurial/revset.py --- a/mercurial/revset.py Tue Feb 16 21:43:51 2016 +0900 +++ b/mercurial/revset.py Tue Feb 16 21:44:13 2016 +0900 @@ -1325,12 +1325,12 @@ try: m = os.max() if m in subset: - return baseset([m]) + return baseset([m], datarepr=('', subset, os)) except ValueError: # os.max() throws a ValueError when the collection is empty. # Same as python's max(). pass - return baseset() + return baseset(datarepr=('', subset, os)) @predicate('merge()', safe=True) def merge(repo, subset, x): @@ -1370,12 +1370,12 @@ try: m = os.min() if m in subset: - return baseset([m]) + return baseset([m], datarepr=('', subset, os)) except ValueError: # os.min() throws a ValueError when the collection is empty. # Same as python's min(). pass - return baseset() + return baseset(datarepr=('', subset, os)) @predicate('modifies(pattern)', safe=True) def modifies(repo, subset, x): diff -r 3d39ac06af9a -r 969a4615c4c4 tests/test-revset.t --- a/tests/test-revset.t Tue Feb 16 21:43:51 2016 +0900 +++ b/tests/test-revset.t Tue Feb 16 21:44:13 2016 +0900 @@ -1727,7 +1727,10 @@ ('symbol', '2') ('symbol', '5'))) * set: - + , + >> 5 test chained `or` operations are flattened at parsing phase @@ -2005,8 +2008,40 @@ >> 1 - $ log 'max(1 or 2) and not 2' - $ log 'min(1 or 2) and not 1' + $ try 'max(1 or 2) and not 2' + (and + (func + ('symbol', 'max') + (or + ('symbol', '1') + ('symbol', '2'))) + (not + ('symbol', '2'))) + * set: + , + >>, + >> + $ try 'min(1 or 2) and not 1' + (and + (func + ('symbol', 'min') + (or + ('symbol', '1') + ('symbol', '2'))) + (not + ('symbol', '1'))) + * set: + , + >>, + >> $ try 'last(1 or 2, 1) and not 2' (and (func