--- a/mercurial/ancestor.py Sun Oct 14 01:39:22 2018 -0400
+++ b/mercurial/ancestor.py Mon Oct 08 19:11:41 2018 +0200
@@ -383,7 +383,7 @@
self._containsiter = None
return False
-class rustlazyancestors(lazyancestors):
+class rustlazyancestors(object):
def __init__(self, index, revs, stoprev=0, inclusive=False):
self._index = index
@@ -395,12 +395,26 @@
# constructor (from C code) doesn't understand anything else yet
self._initrevs = initrevs = list(revs)
- self._containsseen = set()
self._containsiter = parsers.rustlazyancestors(
index, initrevs, stoprev, inclusive)
+ def __nonzero__(self):
+ """False if the set is empty, True otherwise.
+
+ It's better to duplicate this essentially trivial method than
+ to subclass lazyancestors
+ """
+ try:
+ next(iter(self))
+ return True
+ except StopIteration:
+ return False
+
def __iter__(self):
return parsers.rustlazyancestors(self._index,
self._initrevs,
self._stoprev,
self._inclusive)
+
+ def __contains__(self, target):
+ return target in self._containsiter