[pypy-svn] pypy default: Test and fix for empty products.

arigo commits-noreply at bitbucket.org
Tue Jan 25 17:47:56 CET 2011


Author: Armin Rigo <arigo at tunes.org>
Branch: 
Changeset: r41306:c9211c2b1623
Date: 2011-01-24 15:48 +0100
http://bitbucket.org/pypy/pypy/changeset/c9211c2b1623/

Log:	Test and fix for empty products.

diff --git a/pypy/module/itertools/test/test_itertools.py b/pypy/module/itertools/test/test_itertools.py
--- a/pypy/module/itertools/test/test_itertools.py
+++ b/pypy/module/itertools/test/test_itertools.py
@@ -756,6 +756,9 @@
         prodlist = product(l, m)
         assert list(prodlist) == [(1, 'a'), (1, 'b')]
 
+        assert list(product([], [1, 2, 3])) == []
+        assert list(product([1, 2, 3], [])) == []
+
     def test_product_toomany_args(self):
         from itertools import product
         l = [1, 2]

diff --git a/pypy/module/itertools/interp_itertools.py b/pypy/module/itertools/interp_itertools.py
--- a/pypy/module/itertools/interp_itertools.py
+++ b/pypy/module/itertools/interp_itertools.py
@@ -1045,6 +1045,9 @@
         self.indicies = [(0, space.int_w(space.len(w_gear)))
                          for w_gear in self.gears_w]
         self.cont = True
+        for _, lim in self.indicies:
+            if lim <= 0:
+                self.cont = False
 
     def roll_gears(self):
         if self.num_gears == 0:


More information about the Pypy-commit mailing list