mirror of
git://git.code.sf.net/p/zsh/code
synced 2025-06-11 19:18:01 +02: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>
|
2023-01-31 Bart Schaefer <schaefer@zsh.org>
|
||||||
|
|
||||||
* 51342: Etc/zsh-development-guide: update PARAMDEF description
|
* 51342: Etc/zsh-development-guide: update PARAMDEF description
|
||||||
|
|
|
@ -816,6 +816,7 @@ char *input_hasalias(void)
|
||||||
{
|
{
|
||||||
int flags = inbufflags;
|
int flags = inbufflags;
|
||||||
struct instacks *instackptr = instacktop;
|
struct instacks *instackptr = instacktop;
|
||||||
|
char *alias_nam = NULL;
|
||||||
|
|
||||||
for (;;)
|
for (;;)
|
||||||
{
|
{
|
||||||
|
@ -824,9 +825,9 @@ char *input_hasalias(void)
|
||||||
DPUTS(instackptr == instack, "BUG: continuation at bottom of instack");
|
DPUTS(instackptr == instack, "BUG: continuation at bottom of instack");
|
||||||
instackptr--;
|
instackptr--;
|
||||||
if (instackptr->alias)
|
if (instackptr->alias)
|
||||||
return instackptr->alias->node.nam;
|
alias_nam = instackptr->alias->node.nam;
|
||||||
flags = instackptr->flags;
|
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 &&
|
if (isset(EXECOPT) && hasalias && !isset(ALIASFUNCDEF) && argc &&
|
||||||
hasalias != input_hasalias()) {
|
hasalias != input_hasalias()) {
|
||||||
zwarn("defining function based on alias `%s'", hasalias);
|
zwarn("defining function based on alias `%s'", hasalias);
|
||||||
|
herrflush();
|
||||||
|
if (noerrs != 2)
|
||||||
|
errflag |= ERRFLAG_ERROR;
|
||||||
YYERROR(oecused);
|
YYERROR(oecused);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -123,7 +123,12 @@
|
||||||
eval 'badalias() { print does not work; }')
|
eval 'badalias() { print does not work; }')
|
||||||
1:ALIAS_FUNC_DEF off by default.
|
1:ALIAS_FUNC_DEF off by default.
|
||||||
?(eval):1: defining function based on alias `badalias'
|
?(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
|
(alias goodalias=isafunc
|
||||||
setopt ALIAS_FUNC_DEF
|
setopt ALIAS_FUNC_DEF
|
||||||
|
|
Loading…
Reference in a new issue