[Bug #21381] Refine error messages for it and numbered parameters

This commit is contained in:
Nobuyoshi Nakada 2025-06-05 19:05:29 +09:00
parent b9e3edb3e6
commit 0e0008da0f
No known key found for this signature in database
GPG Key ID: 3582D74E1FEE4465
Notes: git 2025-06-05 11:24:07 +00:00

16
parse.y
View File

@ -12860,10 +12860,10 @@ numparam_nested_p(struct parser_params *p)
NODE *inner = local->numparam.inner; NODE *inner = local->numparam.inner;
if (outer || inner) { if (outer || inner) {
NODE *used = outer ? outer : inner; NODE *used = outer ? outer : inner;
compile_error(p, "numbered parameter is already used in\n" compile_error(p, "numbered parameter is already used in %s block\n"
"%s:%d: %s block here", "%s:%d: numbered parameter is already used here",
p->ruby_sourcefile, nd_line(used), outer ? "outer" : "inner",
outer ? "outer" : "inner"); p->ruby_sourcefile, nd_line(used));
parser_show_error_line(p, &used->nd_loc); parser_show_error_line(p, &used->nd_loc);
return 1; return 1;
} }
@ -12875,8 +12875,8 @@ numparam_used_p(struct parser_params *p)
{ {
NODE *numparam = p->lvtbl->numparam.current; NODE *numparam = p->lvtbl->numparam.current;
if (numparam) { if (numparam) {
compile_error(p, "numbered parameter is already used in\n" compile_error(p, "'it' is not allowed when a numbered parameter is already used\n"
"%s:%d: current block here", "%s:%d: numbered parameter is already used here",
p->ruby_sourcefile, nd_line(numparam)); p->ruby_sourcefile, nd_line(numparam));
parser_show_error_line(p, &numparam->nd_loc); parser_show_error_line(p, &numparam->nd_loc);
return 1; return 1;
@ -12889,8 +12889,8 @@ it_used_p(struct parser_params *p)
{ {
NODE *it = p->lvtbl->it; NODE *it = p->lvtbl->it;
if (it) { if (it) {
compile_error(p, "'it' is already used in\n" compile_error(p, "numbered parameters are not allowed when 'it' is already used\n"
"%s:%d: current block here", "%s:%d: 'it' is already used here",
p->ruby_sourcefile, nd_line(it)); p->ruby_sourcefile, nd_line(it));
parser_show_error_line(p, &it->nd_loc); parser_show_error_line(p, &it->nd_loc);
return 1; return 1;