[PATCH 1 of 2] revset: changed generatorset code to remove unnecesary function call

Lucas Moscovicz lmoscovicz at fb.com
Mon Mar 3 15:10:12 CST 2014


# HG changeset patch
# User Lucas Moscovicz <lmoscovicz at fb.com>
# Date 1393880086 28800
#      Mon Mar 03 12:54:46 2014 -0800
# Node ID d4364169b474c6e7a17e3e8656d368998b76ae44
# Parent  c36640f9a678ab7bd96ed92a66e0377e24e71b8d
revset: changed generatorset code to remove unnecesary function call

Removed _nextitem() method, now __iter__ has that logic and __contains__ uses
__iter__ to check for membership.

diff --git a/mercurial/revset.py b/mercurial/revset.py
--- a/mercurial/revset.py
+++ b/mercurial/revset.py
@@ -2281,24 +2281,13 @@
         self._genlist = baseset([])
         self._iterated = False
 
-    def _nextitem(self):
-        l = self._iter.next()
-        self._cache[l] = True
-        self._genlist.append(l)
-        return l
-
     def __contains__(self, x):
         if x in self._cache:
             return self._cache[x]
 
-        self._iterated = True
-        while True:
-            try:
-                l = self._nextitem()
-                if l == x:
-                    return True
-            except (StopIteration):
-                break
+        for l in self:
+            if l == x:
+                return True
 
         self._cache[x] = False
         return False
@@ -2307,18 +2296,13 @@
         if self._iterated:
             for l in self._genlist:
                 yield l
-            while True:
-                try:
-                    item = self._nextitem()
-                    yield item
-                except (StopIteration):
-                    break
         else:
             self._iterated = True
-            for item in self._gen:
-                self._cache[item] = True
-                self._genlist.append(item)
-                yield item
+
+        for item in self._gen:
+            self._cache[item] = True
+            self._genlist.append(item)
+            yield item
 
     def set(self):
         return self


More information about the Mercurial-devel mailing list