https://github.com/python/cpython/commit/bd8c1f97e1709b5e8b07c31b1bc7b73acc76169d
commit: bd8c1f97e1709b5e8b07c31b1bc7b73acc76169d
branch: main
author: Mark Jason Dominus (陶敏修) <[email protected]>
committer: encukou <[email protected]>
date: 2024-06-04T14:59:56+02:00
summary:
gh-94808: Reorganize _make_posargs and mark unused code (GH-119227)
* Reorganize four-way if-elsif-elsif-elsif as nested if-elses
* Mark unused branch in _make_posargs
`names_with_default` is never `NULL`, even if there are no names with
defaults. In that case it points to a structure with `size` zero.
Rather than eliminating the branch, we leave it behind with an `assert(0)`
in case a future change to the grammar exercises the branch.
files:
M Parser/action_helpers.c
diff --git a/Parser/action_helpers.c b/Parser/action_helpers.c
index 3f6c282ffa7a68..91b7e2f1058423 100644
--- a/Parser/action_helpers.c
+++ b/Parser/action_helpers.c
@@ -543,22 +543,30 @@ _make_posargs(Parser *p,
asdl_arg_seq *plain_names,
asdl_seq *names_with_default,
asdl_arg_seq **posargs) {
- if (plain_names != NULL && names_with_default != NULL) {
- asdl_arg_seq *names_with_default_names = _get_names(p,
names_with_default);
- if (!names_with_default_names) {
- return -1;
+
+ if (names_with_default != NULL) {
+ if (plain_names != NULL) {
+ asdl_arg_seq *names_with_default_names = _get_names(p,
names_with_default);
+ if (!names_with_default_names) {
+ return -1;
+ }
+ *posargs = (asdl_arg_seq*)_PyPegen_join_sequences(
+ p,(asdl_seq*)plain_names,
(asdl_seq*)names_with_default_names);
+ }
+ else {
+ *posargs = _get_names(p, names_with_default);
}
- *posargs = (asdl_arg_seq*)_PyPegen_join_sequences(
- p,(asdl_seq*)plain_names, (asdl_seq*)names_with_default_names);
- }
- else if (plain_names == NULL && names_with_default != NULL) {
- *posargs = _get_names(p, names_with_default);
- }
- else if (plain_names != NULL && names_with_default == NULL) {
- *posargs = plain_names;
}
else {
- *posargs = _Py_asdl_arg_seq_new(0, p->arena);
+ if (plain_names != NULL) {
+ // With the current grammar, we never get here.
+ // If that has changed, remove the assert, and test thoroughly.
+ assert(0);
+ *posargs = plain_names;
+ }
+ else {
+ *posargs = _Py_asdl_arg_seq_new(0, p->arena);
+ }
}
return *posargs == NULL ? -1 : 0;
}
_______________________________________________
Python-checkins mailing list -- [email protected]
To unsubscribe send an email to [email protected]
https://mail.python.org/mailman3/lists/python-checkins.python.org/
Member address: [email protected]