Skip to content

Commit

Permalink
pythongh-94808: Reorganize _make_posargs and mark unused code (python…
Browse files Browse the repository at this point in the history
…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.
  • Loading branch information
mjdominus authored and noahbkim committed Jul 11, 2024
1 parent d851700 commit 3635bbc
Showing 1 changed file with 21 additions and 13 deletions.
34 changes: 21 additions & 13 deletions Parser/action_helpers.c
Original file line number Diff line number Diff line change
Expand Up @@ -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;
}
Expand Down

0 comments on commit 3635bbc

Please sign in to comment.