#   This program is free software: you can redistribute it and/or modify
#   it under the terms of the GNU General Public License as published by
#   the Free Software Foundation, either version 3 of the License, or
#   (at your option) any later version.
#
#   This program is distributed in the hope that it will be useful,
#   but WITHOUT ANY WARRANTY; without even the implied warranty of
#   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
#   GNU General Public License for more details.
#
#   You should have received a copy of the GNU General Public License
#   along with this program.  If not, see <http://www.gnu.org/licenses/>.
#
# problems with non-fatal expansion errors through bash-4.3
: ${THIS_SH:=./bash}

${THIS_SH} -c 'echo ${x!y} second
echo after 1: $?' 2>/dev/null

${THIS_SH} -c 'echo ${#+} second
echo after 2: $?' 2>/dev/null

${THIS_SH} -c 'echo ${#foo%} second
echo after 3: $?' 2>/dev/null

${THIS_SH} -c 'b[0]=4 ; echo ${b[   ]}
echo array after 1: $?'  2>/dev/null
${THIS_SH} -c 'typeset -A v ; v["0"]=one ; echo ${v[   ]}
echo array after 2: $?'  2>/dev/null

${THIS_SH} -c 'echo ${uvar?}' ./errors6.sub
${THIS_SH} -c 'echo ${uvar:?}' ./errors6.sub
export uvar=
${THIS_SH} -c 'echo ${uvar?}' ./errors6.sub
${THIS_SH} -c 'echo ${uvar:?}' ./errors6.sub
unset uvar

echo "${-3:-${-3}}"
echo ${-3}
x=-3; echo ${!x}
echo after indir: $?

function ivar() { echo -n "${!1:-${1}}"; }
ivar -3

foo=bar
echo ${!foo}
echo ${!foo:-unset}

echo ${!var:-unset}
echo ${!var+unset}

foo=invalid-ident
echo ${!foo}
echo ${!foo:-unset}
echo ${!foo+unset}
