mercurial/ancestor.py
changeset 40300 72b94f946e90
parent 40298 9cadb0f5f227
child 41244 4856c9b8cbaf
--- 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