bpo-42128: Structural Pattern Matching (PEP 634) (GH-22917)
Co-authored-by: Guido van Rossum <guido@python.org>
Co-authored-by: Talin <viridia@gmail.com>
Co-authored-by: Pablo Galindo <pablogsal@gmail.com>
diff --git a/Parser/asdl_c.py b/Parser/asdl_c.py
index 34bd701..8c167bc 100755
--- a/Parser/asdl_c.py
+++ b/Parser/asdl_c.py
@@ -872,9 +872,10 @@ def visitModule(self, mod):
}
PyTuple_SET_ITEM(fnames, i, field);
}
- result = PyObject_CallFunction((PyObject*)&PyType_Type, "s(O){OOOOOs}",
+ result = PyObject_CallFunction((PyObject*)&PyType_Type, "s(O){OOOOOOOs}",
type, base,
state->_fields, fnames,
+ state->__match_args__, fnames,
state->__module__,
state->ast,
state->__doc__, doc);
@@ -1005,6 +1006,7 @@ def visitModule(self, mod):
empty_tuple = PyTuple_New(0);
if (!empty_tuple ||
PyObject_SetAttrString(state->AST_type, "_fields", empty_tuple) < 0 ||
+ PyObject_SetAttrString(state->AST_type, "__match_args__", empty_tuple) < 0 ||
PyObject_SetAttrString(state->AST_type, "_attributes", empty_tuple) < 0) {
Py_XDECREF(empty_tuple);
return -1;
@@ -1405,6 +1407,7 @@ def generate_module_def(mod, f, internal_h):
state_strings = {
"ast",
"_fields",
+ "__match_args__",
"__doc__",
"__dict__",
"__module__",