From abae4fe16e26cf027e7c8165d27b93d74bbd18b2 Mon Sep 17 00:00:00 2001 From: Peter Stephenson Date: Mon, 18 Jun 2007 13:25:03 +0000 Subject: 23562: add KSH_ZERO_SUBSCRIPT option and leave off by default --- Test/C01arith.ztst | 9 +++++++-- Test/D05array.ztst | 8 ++++---- Test/D06subscript.ztst | 53 ++++++++++++++++++++++++++++++++++++++++++++++++++ Test/D07multibyte.ztst | 2 +- Test/E01options.ztst | 2 +- 5 files changed, 66 insertions(+), 8 deletions(-) (limited to 'Test') diff --git a/Test/C01arith.ztst b/Test/C01arith.ztst index e4ddebc12..0e9216aaf 100644 --- a/Test/C01arith.ztst +++ b/Test/C01arith.ztst @@ -91,8 +91,13 @@ >3.5 >4 - (( newarray[unsetvar]++ )) - (( newarray[unsetvar]++ )) + (( newarray[unsetvar] = 1 )) +2:error using unset variable as index +?(eval):1: assignment to invalid subscript range + + integer setvar=1 + (( newarray[setvar]++ )) + (( newarray[setvar]++ )) print ${(t)newarray} ${#newarray} ${newarray[1]} 0:setting array elements in math context >array 1 2 diff --git a/Test/D05array.ztst b/Test/D05array.ztst index 5ca83ee6d..1fa607ddc 100644 --- a/Test/D05array.ztst +++ b/Test/D05array.ztst @@ -30,12 +30,12 @@ >.. echo .$foo[0]. -0:Treat 0 like 1 ->.a. +0:Treat 0 as empty +>.. echo .$foo[0,0]. -0:Treat 0,0 like 1,1. ->.a. +0:Treat 0,0 as empty +>.. echo .$foo[0,1]. 0:Another weird way to access the first element diff --git a/Test/D06subscript.ztst b/Test/D06subscript.ztst index 4dd8a8237..6c9f477cc 100644 --- a/Test/D06subscript.ztst +++ b/Test/D06subscript.ztst @@ -182,3 +182,56 @@ echo X${${l##*}[-1]}X 0:Negative index applied to substition result from empty array >XX + + array=(one two three four) + print X$array[0]X +0:Element zero is empty if KSH_ZERO_SUBSCRIPT is off. +>XX + + array[0]=fumble +1:Can't set element zero if KSH_ZERO_SUBSCRIPT is off. +?(eval):1: array: assignment to invalid subscript range + + print X$array[(R)notfound]X +0:(R) returns empty if not found if KSH_ZERO_SUBSCRIPT is off. +>XX + + setopt KSH_ZERO_SUBSCRIPT + print X$array[0]X +0:Element zero is element one if KSH_ZERO_SUBSCRIPT is on. +>XoneX + + array[0]=fimble + print $array +0:Can set element zero if KSH_ZERO_SUBSCRIPT is on. +>fimble two three four + + print X$array[(R)notfound]X +0:(R) yuckily returns the first element on failure withe KSH_ZERO_SUBSCRIPT +>XfimbleX + + unsetopt KSH_ZERO_SUBSCRIPT + array[(R)notfound,(r)notfound]=(help help here come the seventies retreads) + print $array +0:[(R)notfound,(r)notfound] replaces the whole array +>help help here come the seventies retreads + + string="Why, if it isn't Officer Dibble" + print "[${string[0]}][${string[1]}][${string[0,3]}]" +0:String subscripts with KSH_ZERO_SUBSCRIPT unset +>[][W][Why] + + setopt KSH_ZERO_SUBSCRIPT + print "[${string[0]}][${string[1]}][${string[0,3]}]" +0:String subscripts with KSH_ZERO_SUBSCRIPT set +>[W][W][Why] + + unsetopt KSH_ZERO_SUBSCRIPT + string[0,3]="Goodness" + print $string +0:Assignment to chunk of string ignores element 0 +>Goodness, if it isn't Officer Dibble + + string[0]=! +1:Can't set only element zero of string +?(eval):1: string: assignment to invalid subscript range diff --git a/Test/D07multibyte.ztst b/Test/D07multibyte.ztst index 765559ae5..35e2bd50f 100644 --- a/Test/D07multibyte.ztst +++ b/Test/D07multibyte.ztst @@ -88,7 +88,7 @@ s=é print A${s[-2]}A B${s[-1]}B C${s[0]}C D${s[1]}D E${s[2]}E 0:Out of range subscripts with multibyte characters ->AA BéB CéC DéD EE +>AA BéB CC DéD EE print ${a[(i)é]} ${a[(I)é]} ${a[${a[(i)é]},${a[(I)é]}]} 0:Reverse indexing with multibyte characters diff --git a/Test/E01options.ztst b/Test/E01options.ztst index f8ab297c0..66bfa1955 100644 --- a/Test/E01options.ztst +++ b/Test/E01options.ztst @@ -521,7 +521,7 @@ >one one[2] >one two three >one two three two ->one one two three +>one two three fpath=(.) echo >foo 'echo foo loaded; foo() { echo foo run; }' -- cgit 1.4.1