about summary refs log tree commit diff
path: root/Src/builtin.c
diff options
context:
space:
mode:
authorPeter Stephenson <pws@zsh.org>2015-06-26 14:55:35 +0100
committerPeter Stephenson <pws@zsh.org>2015-06-26 14:55:35 +0100
commit42b9037ae5c1c62866d4dafee444f578c0335ff7 (patch)
tree6505195fbad3c646197f3478a89a92c0e977d609 /Src/builtin.c
parent9265e49ccbe3f52f91be3f6c457a3db0dd2f8fbc (diff)
downloadzsh-42b9037ae5c1c62866d4dafee444f578c0335ff7.tar.gz
zsh-42b9037ae5c1c62866d4dafee444f578c0335ff7.tar.xz
zsh-42b9037ae5c1c62866d4dafee444f578c0335ff7.zip
35613: Handle array slices in typeset
Diffstat (limited to 'Src/builtin.c')
-rw-r--r--Src/builtin.c9
1 files changed, 8 insertions, 1 deletions
diff --git a/Src/builtin.c b/Src/builtin.c
index bc685455d..3da16789a 100644
--- a/Src/builtin.c
+++ b/Src/builtin.c
@@ -2347,9 +2347,16 @@ typeset_single(char *cname, char *pname, Param pm, UNUSED(int func),
 	    asg->is_array = 0;
 	    keeplocal = 0;
 	    on = pm->node.flags;
+	} else if (PM_TYPE(on) == PM_ARRAY && ASG_ARRAYP(asg)) {
+	    if (!(pm = setaparam(pname, asg->value.array ? zlinklist2array(asg->value.array) :
+				 mkarray(NULL))))
+		return NULL;
+	    asg->value.array = NULL;
+	    keeplocal = 0;
+	    on = pm->node.flags;
 	} else {
 	    zerrnam(cname,
-		    "%s: array elements must be scalar", pname);
+		    "%s: inconsistent array element or slice assignment", pname);
 	    return NULL;
 	}
     }