Stuart Berg added the comment:

In addition to zip(), this problem also affects map() and filter().

The problem is that the match patterns in FixZip, FixMap, and FixFilter do not 
allow for more than one "trailer" node.  (And even if they did, their 
transform() methods aren't expecting it.)

For example, in the following expression, 'zip' is followed by two 'trailers', 
which are '(a,b)', and [0]:

zip(a,b)[0]

... but FixZip.PATTERN only expects a single trailer (the argument list), so 
the presence of a second trailer prevents the match: https://git.io/vMDP9


(Here's the relevant line of the grammar: https://git.io/vMDPJ)

I've written a patch that fixes this problem for zip, map, and filter, with 
tests.  See attached.

BTW, this problem was previously reported in 21628, but that issue was 
incorrectly closed as a duplicate, so I'm submitting my patch here.

----------
keywords: +patch
nosy: +stuarteberg
Added file: http://bugs.python.org/file46339/fix-28837.patch

_______________________________________
Python tracker <rep...@bugs.python.org>
<http://bugs.python.org/issue28837>
_______________________________________
_______________________________________________
Python-bugs-list mailing list
Unsubscribe: 
https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com

Reply via email to