51307: Improve error on attempt to define function from aliased name

This commit is contained in:
Peter Stephenson 2023-02-02 10:09:21 +00:00
parent c8c894f83f
commit 21baad1037
4 changed files with 18 additions and 3 deletions

View file

@ -1,3 +1,9 @@
2023-02-02 Peter Stephenson <p.stephenson@samsung.com>
* 51307: Src/input.c, Src/parse.c, Test/A02alias.ztst: error
on attempt to expand alias in function definition name didn't
find the original alias and printed an extra error.
2023-01-31 Bart Schaefer <schaefer@zsh.org>
* 51342: Etc/zsh-development-guide: update PARAMDEF description

View file

@ -816,6 +816,7 @@ char *input_hasalias(void)
{
int flags = inbufflags;
struct instacks *instackptr = instacktop;
char *alias_nam = NULL;
for (;;)
{
@ -824,9 +825,9 @@ char *input_hasalias(void)
DPUTS(instackptr == instack, "BUG: continuation at bottom of instack");
instackptr--;
if (instackptr->alias)
return instackptr->alias->node.nam;
alias_nam = instackptr->alias->node.nam;
flags = instackptr->flags;
}
return NULL;
return alias_nam;
}

View file

@ -2055,6 +2055,9 @@ par_simple(int *cmplx, int nr)
if (isset(EXECOPT) && hasalias && !isset(ALIASFUNCDEF) && argc &&
hasalias != input_hasalias()) {
zwarn("defining function based on alias `%s'", hasalias);
herrflush();
if (noerrs != 2)
errflag |= ERRFLAG_ERROR;
YYERROR(oecused);
}

View file

@ -123,7 +123,12 @@
eval 'badalias() { print does not work; }')
1:ALIAS_FUNC_DEF off by default.
?(eval):1: defining function based on alias `badalias'
?(eval):1: parse error near `()'
(alias firstalias=notacommand
alias secondalias=firstalias
eval 'secondalias() { print does not work either; }')
1:ALIAS_FUNC_DEF reports original alias if multiple
?(eval):1: defining function based on alias `secondalias'
(alias goodalias=isafunc
setopt ALIAS_FUNC_DEF