54063: Simplifications for resolve_nameref() and setscope()

This commit is contained in:
Philippe Altherr
2026-02-16 15:42:04 -08:00
committed by Bart Schaefer
parent 77045ef899
commit f6bf286da7
6 changed files with 108 additions and 139 deletions

View File

@@ -469,6 +469,14 @@ F:unexpected side-effects of previous tests
}
0:regression: not a self reference (test 2)
typeset ptr2=foo
() {
typeset -n ptr1=ptr2
typeset -n ptr2=ptr1
}
0:regression: not a self reference (test 3)
unset -n ptr2
typeset -n ptr2='path[2]'
print -r -- $ptr2
@@ -1612,4 +1620,38 @@ F:converting from association/array to string should work here too
>typeset -A var=( [z]=Z )
>typeset -A var=( [z]=Z )
typeset ptr1=foo
() {
typeset -n ptr1
typeset -n ptr2=ptr1
ptr1=ptr2
echo ptr1=$ptr1
}
1:regression: reference loop with same name enclosing variable
?(anon):3: ptr2: invalid self reference
typeset -n ref=ref[1]
1:self reference with subscript
*?*: ref: invalid self reference
typeset var=foo
typeset -n ref=var
() {
typeset -n ref
ref=""
ref=ref
echo $ref
}
0:reference always prefers enclosing variable over itself
>foo
typeset -n ref1
() {
typeset -n ref2=ref3
ref1=ref2
typeset -nu ref3=ref1
}
1:self reference via upper reference
?(anon):3: ref1: invalid self reference
%clean