revset: added __add__ method to _addset
This method is intended to duck-type baseset, so we will still have _addset as a
private class but we will be able to return it without wrapping it into an
orderedlazyset or a lazyset.
--- a/mercurial/revset.py Fri Mar 14 10:22:51 2014 -0700
+++ b/mercurial/revset.py Fri Mar 14 10:23:54 2014 -0700
@@ -2425,6 +2425,17 @@
return orderedlazyset(self, filterfunc, ascending=self._ascending)
return lazyset(self, filterfunc)
+ def __add__(self, other):
+ """When both collections are ascending or descending, preserve the order
+ """
+ kwargs = {}
+ if self._ascending is not None:
+ if self.isascending() and other.isascending():
+ kwargs['ascending'] = True
+ if self.isdescending() and other.isdescending():
+ kwargs['ascending'] = False
+ return _addset(self, other, **kwargs)
+
def _iterator(self):
"""Iterate over both collections without repeating elements