diff -r 3570adf20d91 -r 72b94f946e90 mercurial/ancestor.py --- 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