allow assignment to array keys @ and *; minor completion fix

This commit is contained in:
Chet Ramey
2021-04-26 16:31:46 -04:00
parent d128c3ddc1
commit 3fd77612fc
20 changed files with 142 additions and 69 deletions
+1 -1
View File
@@ -1,4 +1,4 @@
BUILD_DIR=/usr/local/build/chet/bash/bash-current
BUILD_DIR=/usr/local/build/bash/bash-current
THIS_SH=$BUILD_DIR/bash
PATH=$PATH:$BUILD_DIR
+6 -7
View File
@@ -747,16 +747,15 @@ argv[1] = <b+a>
declare -A A=([$'\t']="2" [" "]="2" )
./array27.sub: line 36: ((: A[]]=2 : syntax error: invalid arithmetic operator (error token is "]=2 ")
declare -A A=([$'\t']="2" ["*"]="2" [" "]="2" ["@"]="2" )
./array27.sub: line 45: A[]]: bad array subscript
declare -A A=([$'\t']="2" ["*"]="2" [" "]="2" ["]"]="2" ["@"]="2" )
./array27.sub: line 52: A[]]: bad array subscript
declare -A A=([$'\t']="X" ["*"]="X" [" "]="X" ["@"]="X" )
./array27.sub: line 53: A[]]: bad array subscript
./array27.sub: line 60: A[]]: bad array subscript
declare -A A=([$'\t']="X" ["*"]="X" [" "]="X" ["@"]="X" )
./array27.sub: line 61: declare: `A[]]=X': not a valid identifier
./array27.sub: line 68: declare: `A[]]=X': not a valid identifier
declare -A A=(["*"]="X" ["@"]="X" )
./array27.sub: line 76: declare: `A[]]=X': not a valid identifier
declare -A A=(["*"]="X" ["@"]="X" )
./array27.sub: line 69: declare: `A[]]=X': not a valid identifier
./array27.sub: line 69: A[*]: bad array subscript
./array27.sub: line 69: A[@]: bad array subscript
declare -A A
declare -a bug4=([0]="" [1]="5" [2]="" [3]="1" [4]="")
declare -a bug=([0]="" [1]="5" [2]="" [3]="1" [4]="")
declare -a bug2=([0]="")
+7 -1
View File
@@ -38,6 +38,13 @@ done
declare -p A
unset A
declare -A A
for k in ']' '*' '@' $'\t' ' '; do
A[$k]=2
done
declare -p A
unset A
declare -A A
@@ -69,4 +76,3 @@ for k in ']' '*' '@'; do
declare "A[$k]=X"
done
declare -p A
+10 -11
View File
@@ -16,25 +16,24 @@ declare -A wheat=([two]="b" [three]="c" [one]="a" [zero]="0" )
declare -A chaff=(["hello world"]="flip" [one]="10" [zero]="5" )
./assoc.tests: line 51: waste: readonly variable
./assoc.tests: line 52: unset: waste: cannot unset: readonly variable
./assoc.tests: line 53: chaff[*]: bad array subscript
./assoc.tests: line 54: [*]=12: invalid associative array key
declare -A chaff=(["hello world"]="flip" [one]="a" )
declare -A chaff=(["*"]="12" ["hello world"]="flip" [one]="a" )
flip
argv[1] = <multiple>
argv[2] = <words>
argv[3] = <12>
argv[4] = <flip>
argv[5] = <a>
argv[1] = <multiple words>
argv[2] = <12>
argv[3] = <flip>
argv[4] = <a>
argv[1] = <multiple words>
argv[2] = <flip>
argv[3] = <a>
argv[1] = <multiple>
argv[2] = <words>
argv[3] = <flip>
argv[4] = <a>
argv[1] = <multiple words flip a>
argv[3] = <12>
argv[4] = <flip>
argv[5] = <a>
argv[1] = <multiple words 12 flip a>
./assoc.tests: line 71: declare: chaff: cannot destroy array variables in this way
./assoc.tests: line 73: chaff[*]: bad array subscript
./assoc.tests: line 74: [*]=12: invalid associative array key
declare -A wheat=([six]="6" ["foo bar"]="qux qix" )
argv[1] = <qux>
argv[2] = <qix>
+1 -1
View File
@@ -47,7 +47,7 @@ declare +i chaff
chaff[hello world]=flip
declare -p chaff
# TEST - errors
# TEST - no longer errors
waste[stuff]=other
unset waste
chaff[*]=12
+2 -3
View File
@@ -168,10 +168,9 @@ after bar: var=global
./varenv13.sub: line 16: `var[0]': not a valid identifier
./varenv13.sub: line 16: `var[@]': not a valid identifier
./varenv13.sub: line 14: declare: var: not found
./varenv13.sub: line 25: var[@]: bad array subscript
declare -A var=([0]="X" )
declare -A var=([0]="X" ["@"]="Y" )
help
./varenv13.sub: line 34: `var[0]': not a valid identifier
./varenv13.sub: line 35: `var[0]': not a valid identifier
1
declare -A var=([0]="X" )
declare -A var=([Y]="Y" )
+1
View File
@@ -22,6 +22,7 @@ typeset -A var
f() { declare -p ${!var*}; }
# this is no longer an error
var[0]=X var[@]=Y
f