diff options
| author | Philippe Altherr <philippe.altherr@gmail.com> | 2025-10-26 14:06:57 -0700 |
|---|---|---|
| committer | Bart Schaefer <schaefer@zsh.org> | 2025-10-26 14:06:57 -0700 |
| commit | 1e0d2b0d7e8ab7298e67f921a156697fcc433d06 (patch) | |
| tree | 40d51f08a80d19901b3b24ba41a6c5252ee5c22b /Test | |
| parent | 53732: avoid tail-call exec in always block (diff) | |
| download | zsh-1e0d2b0d7e8ab7298e67f921a156697fcc433d06.tar zsh-1e0d2b0d7e8ab7298e67f921a156697fcc433d06.tar.gz zsh-1e0d2b0d7e8ab7298e67f921a156697fcc433d06.tar.bz2 zsh-1e0d2b0d7e8ab7298e67f921a156697fcc433d06.tar.lz zsh-1e0d2b0d7e8ab7298e67f921a156697fcc433d06.tar.xz zsh-1e0d2b0d7e8ab7298e67f921a156697fcc433d06.tar.zst zsh-1e0d2b0d7e8ab7298e67f921a156697fcc433d06.zip | |
53781: fix loading of autoload variable via a reference
Diffstat (limited to 'Test')
| -rw-r--r-- | Test/B02typeset.ztst | 57 | ||||
| -rw-r--r-- | Test/K01nameref.ztst | 58 |
2 files changed, 115 insertions, 0 deletions
diff --git a/Test/B02typeset.ztst b/Test/B02typeset.ztst index 914eea92b..7cca2bd81 100644 --- a/Test/B02typeset.ztst +++ b/Test/B02typeset.ztst @@ -1120,3 +1120,60 @@ 1:Regression test for {...} parsing in typeset ?(eval):typeset:2: not valid in this context: {X} ?(eval):typeset:3: not valid in this context: {X} + + zmodload -u zsh/random + echo v=${SRANDOM/<->/integer} + typeset SRANDOM + echo v=${SRANDOM/<->/integer} +0:Global non -h variable doesn't hide special variable +>v=integer +>v=integer + + zmodload -u zsh/random + echo z=${(M)${(f)${ zmodload -ap}}:#*SRANDOM*} + typeset -g SRANDOM + echo z=${(M)${(f)${ zmodload -ap}}:#*SRANDOM*} + echo v=${SRANDOM/<->/integer} +0:Global non -h variable doesn't hide autoload variable +>z=SRANDOM (zsh/random) +>z=SRANDOM (zsh/random) +>v=integer + + zmodload -u zsh/random + echo z=${(M)${(f)${ zmodload -ap}}:#*SRANDOM*} + typeset -gh SRANDOM + echo z=${(M)${(f)${ zmodload -ap}}:#*SRANDOM*} + echo v=${SRANDOM/<->/integer} +0:Global -h variable doesn't hide autoload variable +>z=SRANDOM (zsh/random) +>z=SRANDOM (zsh/random) +>v=integer + + zmodload -u zsh/random + echo v=${SRANDOM/<->/integer} + typeset SRANDOM + echo v=${SRANDOM/<->/integer} +0:Local non -h variable doesn't hide special variable +>v=integer +>v=integer + + zmodload -u zsh/random + echo z=${(M)${(f)${ zmodload -ap}}:#*SRANDOM*} + typeset SRANDOM + echo z=${(M)${(f)${ zmodload -ap}}:#*SRANDOM*} + echo v=${SRANDOM/<->/integer} +0:Local non -h variable hides autoload variable +F:This is a bug, the non -h variable should not hide the autoload variable +>z=SRANDOM (zsh/random) +>z= +>v= + + zmodload -u zsh/random + echo z=${(M)${(f)${ zmodload -ap}}:#*SRANDOM*} + typeset -h SRANDOM + echo z=${(M)${(f)${ zmodload -ap}}:#*SRANDOM*} + echo v=${SRANDOM/<->/integer} +0:Local -h variable hides autoload variable +>z=SRANDOM (zsh/random) +>z= +>v= diff --git a/Test/K01nameref.ztst b/Test/K01nameref.ztst index 54f0aaf68..52aed0af0 100644 --- a/Test/K01nameref.ztst +++ b/Test/K01nameref.ztst @@ -1179,4 +1179,62 @@ F:previously this could create an infinite recursion and crash >typeset PS1=zz *?* + zmodload -u zsh/random + echo z=${(M)${(f)${ zmodload -ap}}:#*SRANDOM*} + typeset -n ref=SRANDOM + echo z=${(M)${(f)${ zmodload -ap}}:#*SRANDOM*} + echo v=${ref/<->/integer} + zmodload -u zsh/random + echo z=${(M)${(f)${ zmodload -ap}}:#*SRANDOM*} + echo v=${ref/<->/integer} +0:Referring and dereferring an autoload variable loads it (direct) +>z=SRANDOM (zsh/random) +>z= +>v=integer +>z=SRANDOM (zsh/random) +>v=integer + + zmodload -u zsh/random + echo z=${(M)${(f)${ zmodload -ap}}:#*SRANDOM*} + typeset -n ref=SRANDOM[1,20] + echo z=${(M)${(f)${ zmodload -ap}}:#*SRANDOM*} + echo v=${ref/<->/integer} + zmodload -u zsh/random + echo z=${(M)${(f)${ zmodload -ap}}:#*SRANDOM*} + echo v=${ref/<->/integer} +0:Referring and dereferring an autoload variable loads it (subscript) +>z=SRANDOM (zsh/random) +>z= +>v=integer +>z=SRANDOM (zsh/random) +>v=integer + + typeset -n ref=SRANDOM + echo v=${ref/<->/integer} + zmodload -u zsh/random + echo z=${(M)${(f)${ zmodload -ap}}:#*SRANDOM*} + typeset -h SRANDOM=local-variable + echo v=${ref/<->/integer} + echo NOT REACHED +1:Dereferring an autoload variable fails to load it if its hidden (direct) +>v=integer +>z=SRANDOM (zsh/random) +?(eval):6: Can't add module parameter `SRANDOM': local parameter exists +?(eval):zsh/random:6: error when adding parameter `SRANDOM' +?(eval):6: autoloading module zsh/random failed to define parameter: SRANDOM + + typeset -n ref=SRANDOM[1,20] + echo v=${ref/<->/integer} + zmodload -u zsh/random + echo z=${(M)${(f)${ zmodload -ap}}:#*SRANDOM*} + typeset -h SRANDOM=local-variable + echo v=${ref/<->/integer} + echo NOT REACHED +1:Dereferring an autoload variable fails to load it if its hidden (subscript) +>v=integer +>z=SRANDOM (zsh/random) +?(eval):6: Can't add module parameter `SRANDOM': local parameter exists +?(eval):zsh/random:6: error when adding parameter `SRANDOM' +?(eval):6: autoloading module zsh/random failed to define parameter: SRANDOM + %clean |
