mirror of
git://git.code.sf.net/p/zsh/code
synced 2024-12-28 04:05:12 +01:00
51307: Improve error on attempt to define function from aliased name
This commit is contained in:
parent
c8c894f83f
commit
21baad1037
4 changed files with 18 additions and 3 deletions
|
@ -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
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
|
||||
|
|
|
@ -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
|
||||
|
|
Loading…
Reference in a new issue