revset: changed _children method to use lazy structures
authorLucas Moscovicz <lmoscovicz@fb.com>
Tue, 11 Feb 2014 14:03:43 -0800
changeset 20693 d04aac468bf4
parent 20692 7af341082b76
child 20694 621c94378d0d
revset: changed _children method to use lazy structures
mercurial/revset.py
--- a/mercurial/revset.py	Mon Feb 10 12:26:45 2014 -0800
+++ b/mercurial/revset.py	Tue Feb 11 14:03:43 2014 -0800
@@ -540,18 +540,19 @@
     return subset.filter(matches)
 
 def _children(repo, narrow, parentset):
-    cs = set()
     if not parentset:
-        return baseset(cs)
+        return baseset([])
     pr = repo.changelog.parentrevs
     minrev = min(parentset)
-    for r in narrow:
-        if r <= minrev:
-            continue
-        for p in pr(r):
+
+    def matches(x):
+        if x <= minrev:
+            return False
+        for p in pr(x):
             if p in parentset:
-                cs.add(r)
-    return baseset(cs)
+                return True
+
+    return narrow.filter(matches)
 
 def children(repo, subset, x):
     """``children(set)``