[Python-checkins] r73033 - in sandbox/trunk/2to3/lib2to3: Grammar.txt tests/data/py2_test_grammar.py tests/data/py3_test_grammar.py
benjamin.peterson
python-checkins at python.org
Fri May 29 23:58:32 CEST 2009
Author: benjamin.peterson
Date: Fri May 29 23:58:32 2009
New Revision: 73033
Log:
update grammar for multi with statement
Modified:
sandbox/trunk/2to3/lib2to3/Grammar.txt
sandbox/trunk/2to3/lib2to3/tests/data/py2_test_grammar.py
sandbox/trunk/2to3/lib2to3/tests/data/py3_test_grammar.py
Modified: sandbox/trunk/2to3/lib2to3/Grammar.txt
==============================================================================
--- sandbox/trunk/2to3/lib2to3/Grammar.txt (original)
+++ sandbox/trunk/2to3/lib2to3/Grammar.txt Fri May 29 23:58:32 2009
@@ -90,7 +90,8 @@
['else' ':' suite]
['finally' ':' suite] |
'finally' ':' suite))
-with_stmt: 'with' test [ with_var ] ':' suite
+with_stmt: 'with' with_item (',' with_item)* ':' suite
+with_item: test ['as' expr]
with_var: 'as' expr
# NB compile.c makes sure that the default except clause is last
except_clause: 'except' [test [(',' | 'as') test]]
Modified: sandbox/trunk/2to3/lib2to3/tests/data/py2_test_grammar.py
==============================================================================
--- sandbox/trunk/2to3/lib2to3/tests/data/py2_test_grammar.py (original)
+++ sandbox/trunk/2to3/lib2to3/tests/data/py2_test_grammar.py Fri May 29 23:58:32 2009
@@ -1,5 +1,3 @@
-# Python 2's Lib/test/test_grammar.py (r66189)
-
# Python test set -- part 1, grammar.
# This just tests whether the parser accepts them all.
@@ -922,6 +920,26 @@
self.assertEqual([x for x, in [(4,), (5,), (6,)]], [4, 5, 6])
self.assertEqual(list(x for x, in [(7,), (8,), (9,)]), [7, 8, 9])
+ def test_with_statement(self):
+ class manager(object):
+ def __enter__(self):
+ return (1, 2)
+ def __exit__(self, *args):
+ pass
+
+ with manager():
+ pass
+ with manager() as x:
+ pass
+ with manager() as (x, y):
+ pass
+ with manager(), manager():
+ pass
+ with manager() as x, manager() as y:
+ pass
+ with manager() as x, manager():
+ pass
+
def testIfElseExpr(self):
# Test ifelse expressions in various cases
def _checkeval(msg, ret):
Modified: sandbox/trunk/2to3/lib2to3/tests/data/py3_test_grammar.py
==============================================================================
--- sandbox/trunk/2to3/lib2to3/tests/data/py3_test_grammar.py (original)
+++ sandbox/trunk/2to3/lib2to3/tests/data/py3_test_grammar.py Fri May 29 23:58:32 2009
@@ -868,6 +868,26 @@
self.assertEqual([x for x, in [(4,), (5,), (6,)]], [4, 5, 6])
self.assertEqual(list(x for x, in [(7,), (8,), (9,)]), [7, 8, 9])
+ def test_with_statement(self):
+ class manager(object):
+ def __enter__(self):
+ return (1, 2)
+ def __exit__(self, *args):
+ pass
+
+ with manager():
+ pass
+ with manager() as x:
+ pass
+ with manager() as (x, y):
+ pass
+ with manager(), manager():
+ pass
+ with manager() as x, manager() as y:
+ pass
+ with manager() as x, manager():
+ pass
+
def testIfElseExpr(self):
# Test ifelse expressions in various cases
def _checkeval(msg, ret):
More information about the Python-checkins
mailing list