summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorBart Schaefer <schaefer@ipost.com>2020-12-27 14:36:35 -0800
committerBart Schaefer <schaefer@ipost.com>2021-04-13 21:18:35 -0700
commitf621fb7ab8ba9a7d4992a45b4b1033e7ef897154 (patch)
tree5cae7720ba5e9d659776a3bc03da8f4f4db052d2
parentMissed files from POSXIBUILTINS commit (diff)
downloadzsh-f621fb7ab8ba9a7d4992a45b4b1033e7ef897154.tar
zsh-f621fb7ab8ba9a7d4992a45b4b1033e7ef897154.tar.gz
zsh-f621fb7ab8ba9a7d4992a45b4b1033e7ef897154.tar.bz2
zsh-f621fb7ab8ba9a7d4992a45b4b1033e7ef897154.tar.lz
zsh-f621fb7ab8ba9a7d4992a45b4b1033e7ef897154.tar.xz
zsh-f621fb7ab8ba9a7d4992a45b4b1033e7ef897154.tar.zst
zsh-f621fb7ab8ba9a7d4992a45b4b1033e7ef897154.zip
Fix ${(t)var} output, add comparative test cases
-rw-r--r--Src/subst.c3
-rw-r--r--Test/E01options.ztst15
-rw-r--r--Test/E03posix.ztst14
3 files changed, 31 insertions, 1 deletions
diff --git a/Src/subst.c b/Src/subst.c
index 96e0914eb..9928be0e9 100644
--- a/Src/subst.c
+++ b/Src/subst.c
@@ -2563,7 +2563,8 @@ paramsubst(LinkList l, LinkNode n, char **str, int qt, int pf_flags,
* Handle the (t) flag: value now becomes the type
* information for the parameter.
*/
- if (v && v->pm && !(v->pm->node.flags & PM_UNSET)) {
+ if (v && v->pm && ((v->pm->node.flags & PM_DECLARED) ||
+ !(v->pm->node.flags & PM_UNSET))) {
int f = v->pm->node.flags;
switch (PM_TYPE(f)) {
diff --git a/Test/E01options.ztst b/Test/E01options.ztst
index 415f46cd7..72749e6ab 100644
--- a/Test/E01options.ztst
+++ b/Test/E01options.ztst
@@ -1451,3 +1451,18 @@ F:If this test fails at the first unsetopt, refer to P01privileged.ztst.
0q:RM_STAR_SILENT
*>zsh: sure you want to delete all 15 files in ${PWD:h}/options.tmp \[yn\]\? ${BEL}(|n)
*>zsh: sure you want to delete (all <->|more than <->) files in / \[yn\]\? ${BEL}(|n)
+
+ () {
+ local var
+ print ${(t)var}
+ }
+0:(t) returns correct type
+>scalar-local
+
+ () {
+ readonly var
+ typeset -p var
+ }
+0:readonly with typeset -p
+F:compare E03posix.ztst
+>typeset -r var=''
diff --git a/Test/E03posix.ztst b/Test/E03posix.ztst
index 5e6eddeba..c59ca4f6e 100644
--- a/Test/E03posix.ztst
+++ b/Test/E03posix.ztst
@@ -103,3 +103,17 @@
>arg1 arg2
>noktarg1
>0 0
+
+ () {
+ local var
+ print ${(t)var}
+ }
+0:(t) returns correct type
+>scalar-local
+
+ () {
+ readonly var
+ typeset -p var
+ }
+0:readonly with typeset -p
+>typeset -g -r var