[PATCH 1 of 5] revset: have `min` and `max` method of smartset works when empty
pierre-yves.david at ens-lyon.org
pierre-yves.david at ens-lyon.org
Fri Mar 21 18:28:04 UTC 2014
# HG changeset patch
# User Pierre-Yves David <pierre-yves.david at fb.com>
# Date 1395367234 25200
# Thu Mar 20 19:00:34 2014 -0700
# Node ID ad232d545933fc511feaeceb85ba43c4cb1d5415
# Parent 170d6d591a7dbc09bfe1b509dfd8f39991e653a9
revset: have `min` and `max` method of smartset works when empty
When empty `baseset` and `lazyset` had crashing `min` and `max` methods. They
now return None when empty. Same as the other smart set do.
This is not easily testable now. But the following changeset use this one and
test it.
diff --git a/mercurial/revset.py b/mercurial/revset.py
--- a/mercurial/revset.py
+++ b/mercurial/revset.py
@@ -2208,14 +2208,18 @@ class baseset(list):
This is part of the mandatory API for smartset."""
self.sort(reverse=True)
def min(self):
- return min(self)
+ if self:
+ return min(self)
+ return None
def max(self):
- return max(self)
+ if self:
+ return max(self)
+ return None
def set(self):
"""Returns a set or a smartset containing all the elements.
The returned structure should be the fastest option for membership
@@ -2323,14 +2327,18 @@ class lazyset(object):
def descending(self):
self._subset.sort(reverse=True)
def min(self):
- return min(self)
+ if self:
+ return min(self)
+ return None
def max(self):
- return max(self)
+ if self:
+ return max(self)
+ return None
def __contains__(self, x):
c = self._cache
if x not in c:
c[x] = x in self._subset and self._condition(x)
More information about the Mercurial-devel
mailing list