improve of cmpl.
[bush.git] / tests / nameref12.sub
blob199b51c8daa72f88b4c38200b0e29973e543ce99
1 #   This program is free software: you can redistribute it and/or modify
2 #   it under the terms of the GNU General Public License as published by
3 #   the Free Software Foundation, either version 3 of the License, or
4 #   (at your option) any later version.
6 #   This program is distributed in the hope that it will be useful,
7 #   but WITHOUT ANY WARRANTY; without even the implied warranty of
8 #   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
9 #   GNU General Public License for more details.
11 #   You should have received a copy of the GNU General Public License
12 #   along with this program.  If not, see <http://www.gnu.org/licenses/>.
14 declare -n r
15 declare -n r
16 unset -n r
18 r=foo
19 declare -n r=/
21 r=%
22 declare -n r
23 unset r
25 declare -n r
26 r=^
27 declare -p r
29 unset -n r
31 declare -n foo
32 declare -a foo
33 declare -p foo
34 foo[0]=7
35 declare -p foo
36 unset foo
38 declare -n x
39 declare x=42
40 declare -p x
42 declare -n -r RO=foo
43 declare -p RO
45 unset -n r; unset r
47 # the details of this may change; currently we put namerefs and values into
48 # the tempenv if the nameref value is an invalid variable name
49 f() { echo $r; }
51 declare -n r
52 r=/ ${THIS_SH} < /dev/null
53 r=/ f
55 unset -f f
57 # the details of this may change; this will tell me when they do
58 declare -n foo ; declare -i foo=7*6 ; declare -p foo
59 unset -n foo
60 declare -n foo ; declare -i foo ; foo=7*6 ; declare -p foo
62 # used to be buggy
63 f()
65         unset var
66         declare -n ref=var
67         declare -n ref
68         declare -p ref
72 unset -f f
73 f()
75         local var
76         declare -n ref=var
77         declare -n ref
78         declare -p ref
82 unset ref; unset -n ref
83 unset var
85 var=foo
86 typeset -n ref=var[0]
87 readonly ref
88 typeset -p var
90 var2=foo
91 typeset -n ref2=var2
92 readonly ref2
93 typeset -p var2
95 unset var
96 unset -n ref ref2
98 unset var; typeset -n ref=var
99 ref[0]=foo
100 typeset -p ref var
101 unset -n ref
103 unset var; typeset -n ref
104 ref[0]=foo
105 typeset -p ref
106 unset -n ref
108 ref=global
109 f() { declare -n ref=var; ref[0]=foo1; }; f
110 f() { declare -n ref=var; ref[0]=foo2; }; f
111 declare -p ref var
113 declare -p global