[Python-checkins] bpo-35877: Make parenthesis optional for named expression in while statement (GH-11724)

Emily Morehouse webhook-mailer at python.org
Fri Feb 1 16:40:27 EST 2019


https://github.com/python/cpython/commit/d4fceaafb8e3f8700d9ec6ab37a51e903392f74f
commit: d4fceaafb8e3f8700d9ec6ab37a51e903392f74f
branch: master
author: Xtreak <tir.karthi at gmail.com>
committer: Emily Morehouse <emilyemorehouse at gmail.com>
date: 2019-02-01T14:40:16-07:00
summary:

bpo-35877: Make parenthesis optional for named expression in while statement (GH-11724)

* Add parenthesis optional in named expressions for while statement

* Add NEWS entry

files:
A Misc/NEWS.d/next/Core and Builtins/2019-02-01-22-38-11.bpo-35877.Jrse8f.rst
M Grammar/Grammar
M Lib/test/test_parser.py
M Python/graminit.c

diff --git a/Grammar/Grammar b/Grammar/Grammar
index e65a688e4cd8..a42597805979 100644
--- a/Grammar/Grammar
+++ b/Grammar/Grammar
@@ -72,7 +72,7 @@ assert_stmt: 'assert' test [',' test]
 compound_stmt: if_stmt | while_stmt | for_stmt | try_stmt | with_stmt | funcdef | classdef | decorated | async_stmt
 async_stmt: 'async' (funcdef | with_stmt | for_stmt)
 if_stmt: 'if' namedexpr_test ':' suite ('elif' namedexpr_test ':' suite)* ['else' ':' suite]
-while_stmt: 'while' test ':' suite ['else' ':' suite]
+while_stmt: 'while' namedexpr_test ':' suite ['else' ':' suite]
 for_stmt: 'for' exprlist 'in' testlist ':' [TYPE_COMMENT] suite ['else' ':' suite]
 try_stmt: ('try' ':' suite
            ((except_clause ':' suite)+
diff --git a/Lib/test/test_parser.py b/Lib/test/test_parser.py
index 19f178203642..0afeb322e9b5 100644
--- a/Lib/test/test_parser.py
+++ b/Lib/test/test_parser.py
@@ -426,6 +426,7 @@ def test_named_expressions(self):
         self.check_suite("(a := 1)")
         self.check_suite("(a := a)")
         self.check_suite("if (match := pattern.search(data)) is None: pass")
+        self.check_suite("while match := pattern.search(f.read()): pass")
         self.check_suite("[y := f(x), y**2, y**3]")
         self.check_suite("filtered_data = [y for x in data if (y := f(x)) is None]")
         self.check_suite("(y := f(x))")
diff --git a/Misc/NEWS.d/next/Core and Builtins/2019-02-01-22-38-11.bpo-35877.Jrse8f.rst b/Misc/NEWS.d/next/Core and Builtins/2019-02-01-22-38-11.bpo-35877.Jrse8f.rst
new file mode 100644
index 000000000000..1fb173fe463d
--- /dev/null
+++ b/Misc/NEWS.d/next/Core and Builtins/2019-02-01-22-38-11.bpo-35877.Jrse8f.rst	
@@ -0,0 +1,2 @@
+Make parenthesis optional for named expressions in while statement. Patch by
+Karthikeyan Singaravelan.
diff --git a/Python/graminit.c b/Python/graminit.c
index 6e0f19891baa..5cdde2789c72 100644
--- a/Python/graminit.c
+++ b/Python/graminit.c
@@ -971,7 +971,7 @@ static arc arcs_42_0[1] = {
     {103, 1},
 };
 static arc arcs_42_1[1] = {
-    {26, 2},
+    {99, 2},
 };
 static arc arcs_42_2[1] = {
     {27, 3},



More information about the Python-checkins mailing list