revset: changed _iterator() in addset to use the generated list when available
authorLucas Moscovicz <lmoscovicz@fb.com>
Thu, 13 Mar 2014 14:51:04 -0700
changeset 20721 d642f176df52
parent 20720 5f8400efca0b
child 20722 6894223ebc38
revset: changed _iterator() in addset to use the generated list when available Now when all the elements have been generated, the iterator will just use the generated list instead of going through all the elements again.
mercurial/revset.py
--- a/mercurial/revset.py	Tue Mar 11 16:59:42 2014 -0700
+++ b/mercurial/revset.py	Thu Mar 13 14:51:04 2014 -0700
@@ -2353,8 +2353,9 @@
         return self._iter
 
     def __iter__(self):
-        for r in self._iterator():
-            yield r
+        if self._genlist:
+            return iter(self._genlist)
+        return iter(self._iterator())
 
     def __contains__(self, x):
         return x in self._r1 or x in self._r2