[pypy-svn] r17568 - in pypy/dist/pypy/interpreter/pyparser: . test
ac at codespeak.net
ac at codespeak.net
Wed Sep 14 17:16:44 CEST 2005
Author: ac
Date: Wed Sep 14 17:16:40 2005
New Revision: 17568
Modified:
pypy/dist/pypy/interpreter/pyparser/astbuilder.py
pypy/dist/pypy/interpreter/pyparser/test/test_astbuilder.py
Log:
Fix parsing of generator expression as single argument to a function.
Modified: pypy/dist/pypy/interpreter/pyparser/astbuilder.py
==============================================================================
--- pypy/dist/pypy/interpreter/pyparser/astbuilder.py (original)
+++ pypy/dist/pypy/interpreter/pyparser/astbuilder.py Wed Sep 14 17:16:40 2005
@@ -96,6 +96,15 @@
index += 2 # Skip COMMA and DOUBLESTAR
dstararg_token = tokens[index]
break
+ elif cur_token.get_value() == 'for':
+ if len(arguments) != 1:
+ raise ValueError('SyntaxError("invalid syntax")') # xxx lineno...
+ expr = arguments[0]
+ genexpr_for = parse_genexpr_for(tokens[index-1:])
+ genexpr_for[0].is_outmost = True
+ gexp = ast.GenExpr(ast.GenExprInner(expr, genexpr_for))
+ arguments[0] = gexp
+ break
return arguments, stararg_token, dstararg_token
Modified: pypy/dist/pypy/interpreter/pyparser/test/test_astbuilder.py
==============================================================================
--- pypy/dist/pypy/interpreter/pyparser/test/test_astbuilder.py (original)
+++ pypy/dist/pypy/interpreter/pyparser/test/test_astbuilder.py Wed Sep 14 17:16:40 2005
@@ -170,6 +170,7 @@
"l = [i for i in ( j*2 for j in range(10) ) ]",
"l = (i for i in [ j*2 for j in ( k*3 for k in range(10) ) ] )",
"l = [i for j in ( j*2 for j in [ k*3 for k in range(10) ] ) ]",
+ "l = f(i for i in j)",
]
More information about the Pypy-commit
mailing list