# basic nameref tests
bar=one
flow=two
flip=three

foo=bar
typeset -n foo

typeset -n fee=flow

echo ${foo}
echo ${fee}

typeset -n fee=flip
echo ${fee}

typeset -n

echo turning off nameref attribute on foo
typeset +n foo=other
echo ${foo}
echo after +n foo bar = $bar

unset foo bar fee

bar=one

foo=bar
typeset -n foo

foo=two printf "%s\n" $foo
foo=two eval 'printf "%s\n" $foo'

foo=two echo $foo

unset foo bar
# other basic assignment tests
bar=one

echo "expect <one>"
recho ${bar}
typeset -n foo=bar
foo=two

echo "expect <two>"
recho ${bar}

# this appears to be a ksh93 bug; it doesn't unset foo here and messes up
# later
unset foo bar

# initial tests of working inside shell functions
echoval()
{
	typeset -n ref=$1
	printf "%s\n" $ref
}

foo=bar
bar=one
echo "expect <$foo>"
echoval foo
echo "expect <$bar>"
echoval bar

unset foo bar
changevar()
{
	typeset -n v=$1

	shift
	v="$@"
	echo "changevar: expect <$@>"
	recho "$v"
}

bar=one

echo "expect <one>"
recho ${bar}
changevar bar two
echo "expect <two>"
recho $bar

changevar bar three four five
echo "expect <three four five>"
recho "$bar"

unset foo bar
unset -n foo bar
readonly foo=one
typeset -n bar=foo
bar=4
foo=4

echo $foo
echo $bar

assignvar()
{
	typeset -n ref=$1
	shift
	ref="$@"
}

readonly foo=one

assignvar foo two three four
echo $foo

${THIS_SH} ./nameref1.sub
${THIS_SH} ./nameref2.sub
${THIS_SH} ./nameref3.sub
${THIS_SH} ./nameref4.sub
${THIS_SH} ./nameref5.sub
${THIS_SH} ./nameref6.sub
${THIS_SH} ./nameref7.sub
${THIS_SH} ./nameref8.sub
