gh-133436: Correct error messages that incorrectly use "arguments"#133463
gh-133436: Correct error messages that incorrectly use "arguments"#133463StanFromIreland wants to merge 2 commits into
Conversation
| | '*' param a='=' { RAISE_SYNTAX_ERROR_KNOWN_LOCATION(a, "var-positional argument cannot have default value") } | ||
| | '*' (param_no_default | ',') param_maybe_default* a='*' (param_no_default | ',') { | ||
| RAISE_SYNTAX_ERROR_KNOWN_LOCATION(a, "* argument may appear only once") } | ||
| RAISE_SYNTAX_ERROR_KNOWN_LOCATION(a, "* marker may appear only once") } |
There was a problem hiding this comment.
I liked @picnixz suggestion though there may be an even better word?
There was a problem hiding this comment.
imo, "an asterisk may appear only once" is as clear as possible and will not cause any confusion in terms of terminology
There was a problem hiding this comment.
Other error messages refer to / as just / and to * as just *. On other hand, * marker can be confused with bare *. So I think that it is better to use just * here.
serhiy-storchaka
left a comment
There was a problem hiding this comment.
There are more:
def f(/, *a, b): pass
^
SyntaxError: at least one argument must precede /
def f(**a, b): pass
^
SyntaxError: arguments cannot follow var-keyword argument
serhiy-storchaka
left a comment
There was a problem hiding this comment.
More examples:
def f(/, a, /, b): pass
^
SyntaxError: at least one argument must precede /
def f(a, a): pass
^
SyntaxError: duplicate argument 'a' in function definition
| | '*' param a='=' { RAISE_SYNTAX_ERROR_KNOWN_LOCATION(a, "var-positional argument cannot have default value") } | ||
| | '*' (param_no_default | ',') param_maybe_default* a='*' (param_no_default | ',') { | ||
| RAISE_SYNTAX_ERROR_KNOWN_LOCATION(a, "* argument may appear only once") } | ||
| RAISE_SYNTAX_ERROR_KNOWN_LOCATION(a, "* marker may appear only once") } |
There was a problem hiding this comment.
Other error messages refer to / as just / and to * as just *. On other hand, * marker can be confused with bare *. So I think that it is better to use just * here.
|
I suggest to do all in one PR. I do not see semantic difference. There are other error messages that need corrections, see my examples. |
|
I'll close this one and the corresponding issue. We'll work with one issue and one PR instead. |
*parameter's error messages sayargumentinstead ofparameter#133436