[Python-checkins] bpo-40334: Add type to the assignment rule in the grammar file (GH-19963)

Lysandros Nikolaou webhook-mailer at python.org
Wed May 6 14:11:15 EDT 2020


https://github.com/python/cpython/commit/999ec9ab6af536cc2666a0847ec02331aaf00416
commit: 999ec9ab6af536cc2666a0847ec02331aaf00416
branch: master
author: Lysandros Nikolaou <lisandrosnik at gmail.com>
committer: GitHub <noreply at github.com>
date: 2020-05-06T19:11:04+01:00
summary:

bpo-40334: Add type to the assignment rule in the grammar file (GH-19963)

files:
M Grammar/python.gram
M Parser/pegen/parse.c

diff --git a/Grammar/python.gram b/Grammar/python.gram
index 0ce6ab4b4ba90..3f16768198f9d 100644
--- a/Grammar/python.gram
+++ b/Grammar/python.gram
@@ -82,7 +82,7 @@ compound_stmt[stmt_ty]:
     | &'while' while_stmt
 
 # NOTE: annotated_rhs may start with 'yield'; yield_expr must start with 'yield'
-assignment:
+assignment[stmt_ty]:
     | a=NAME ':' b=expression c=['=' d=annotated_rhs { d }] {
         CHECK_VERSION(
             6,
diff --git a/Parser/pegen/parse.c b/Parser/pegen/parse.c
index 55605d5770f1e..3b518ee263777 100644
--- a/Parser/pegen/parse.c
+++ b/Parser/pegen/parse.c
@@ -378,7 +378,7 @@ static asdl_seq* statement_newline_rule(Parser *p);
 static asdl_seq* simple_stmt_rule(Parser *p);
 static stmt_ty small_stmt_rule(Parser *p);
 static stmt_ty compound_stmt_rule(Parser *p);
-static void *assignment_rule(Parser *p);
+static stmt_ty assignment_rule(Parser *p);
 static AugOperator* augassign_rule(Parser *p);
 static stmt_ty global_stmt_rule(Parser *p);
 static stmt_ty nonlocal_stmt_rule(Parser *p);
@@ -1256,7 +1256,7 @@ small_stmt_rule(Parser *p)
     int start_col_offset = p->tokens[mark]->col_offset;
     UNUSED(start_col_offset); // Only used by EXTRA macro
     { // assignment
-        void *assignment_var;
+        stmt_ty assignment_var;
         if (
             (assignment_var = assignment_rule(p))
         )
@@ -1586,13 +1586,13 @@ compound_stmt_rule(Parser *p)
 //     | ((star_targets '='))+ (yield_expr | star_expressions) TYPE_COMMENT?
 //     | target augassign (yield_expr | star_expressions)
 //     | invalid_assignment
-static void *
+static stmt_ty
 assignment_rule(Parser *p)
 {
     if (p->error_indicator) {
         return NULL;
     }
-    void * res = NULL;
+    stmt_ty res = NULL;
     int mark = p->mark;
     if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
         p->error_indicator = 1;



More information about the Python-checkins mailing list