1
0
Fork 0
mirror of git://git.code.sf.net/p/zsh/code synced 2024-06-07 15:56:04 +02:00

51437: Fix incorrectly-passed test case, masked by unrelated bug.

A bug with zmodload when unloading/reloading a static module caused the
state of the shell options to change during K01 test.  Worked around it.
Also changed warnnestedvar messages to look more like other such.
This commit is contained in:
Bart Schaefer 2023-02-14 17:54:42 -08:00
parent 7e0c4406ce
commit 32cceefa95
3 changed files with 29 additions and 4 deletions

View File

@ -1,3 +1,8 @@
2023-02-14 Bart Schaefer <schaefer@zsh.org>
* 51437: Src/params.c, Test/K01nameref.ztst: Fix incorrectly-passed
test case, masked by unrelated bug. Improve warnnestedvar message.
2023-02-14 Peter Stephenson <p.stephenson@samsung.com>
* 51425: Src/exec.c, Test/E01OPTIONS: $(<...) shouldn't try to

View File

@ -3068,7 +3068,7 @@ check_warn_pm(Param pm, const char *pmtype, int created,
} else
return;
if (pm->node.flags & PM_SPECIAL)
if (pm->node.flags & (PM_SPECIAL|PM_NAMEREF))
return;
for (i = funcstack; i; i = i->prev) {
@ -6181,6 +6181,7 @@ setloopvar(char *name, char *value)
if (pm && (pm->node.flags & PM_NAMEREF)) {
pm->base = pm->width = 0;
pm->u.str = ztrdup(value);
pm->node.flags &= ~PM_UNSET;
pm->node.flags |= PM_NEWREF;
setscope(pm);
pm->node.flags &= ~PM_NEWREF;
@ -6248,7 +6249,7 @@ setscope(Param pm)
pm->node.nam);
unsetparam_pm(pm, 0, 1);
} else if (isset(WARNNESTEDVAR))
zwarn("%s: global reference to local variable: %s",
zwarn("reference %s in enclosing scope set to local variable %s",
pm->node.nam, pm->u.str);
}
if (pm->u.str && upscope(pm, pm->base) == pm &&

View File

@ -532,6 +532,13 @@ F:Same test, should part 5 output look like this?
>nameref-local-nameref-local
>typeset parameters
if [[ $options[typesettounset] != on ]]; then
ZTST_skip='Ignoring zmodload bug that resets TYPESET_TO_UNSET'
setopt typesettounset
fi
0:options reloaded
F:Checking for a bug in zmodload that affects later tests
typeset ptr2=var2
typeset var2=GLOBAL
() {
@ -541,7 +548,7 @@ F:Same test, should part 5 output look like this?
typeset var2=VAR2
print -r -- ${(P)ptr1}
}
0:
0:Order of evaluation with ${(P)...}
>VAR2
ary=(one two three four)
@ -666,7 +673,19 @@ F:Same test, should part 5 output look like this?
>
>scalar-local
>
*?*ref: global reference to local variable: one
*?*reference ref*to local variable one
unset -n ref
typeset -n ref
() {
setopt localoptions warn_nested_var
typeset inner
ref=inner
}
typeset -p ref
0:Global variable is a reference, warning
>typeset -n ref=inner
*?*reference ref*to local variable inner
typeset -n ptr='ary[$(echo 2)]'
typeset -a ary=(one two three)