mirror of
https://git.code.sf.net/p/zsh/code
synced 2026-04-18 06:53:35 -04:00
53790: corrections to reference loop detection
This commit is contained in:
committed by
Bart Schaefer
parent
7546c18076
commit
938b3c9475
@@ -450,6 +450,25 @@ F:unexpected side-effects of previous tests
|
||||
1:looping assignment not allowed
|
||||
*?*invalid self reference
|
||||
|
||||
typeset ptr1=not-a-ref
|
||||
() {
|
||||
typeset -n ptr1=ptr1
|
||||
() {
|
||||
typeset -n ptr1=ptr1
|
||||
echo $ptr1
|
||||
}
|
||||
}
|
||||
0:regression: not a self reference (test 1)
|
||||
>not-a-ref
|
||||
|
||||
typeset -n ptr1
|
||||
typeset -n ptr2=ptr1
|
||||
() {
|
||||
typeset ptr2=no-a-ref
|
||||
typeset -n ptr1=ptr2
|
||||
}
|
||||
0:regression: not a self reference (test 2)
|
||||
|
||||
unset -n ptr2
|
||||
typeset -n ptr2='path[2]'
|
||||
print -r -- $ptr2
|
||||
|
||||
@@ -429,14 +429,7 @@ F:Here ptr1 points to global ptr2 so assignment succeeds
|
||||
setopt localoptions errreturn
|
||||
private -n ptr2
|
||||
typeset -n ptr1=ptr2
|
||||
typeset -p ptr1 ptr2
|
||||
typeset val=LOCAL
|
||||
() {
|
||||
ptr1=val
|
||||
typeset -n
|
||||
printf "v %s=%s\n" ptr1 "$ptr1" ptr2 "$ptr2"
|
||||
}
|
||||
typeset -p ptr1 ptr2
|
||||
echo NOT REACHED
|
||||
}
|
||||
typeset -p ptr1 ptr2
|
||||
1:up-reference for private namerefs, end is in scope but private
|
||||
@@ -445,6 +438,20 @@ F:Should we allow "public" namerefs to private parameters?
|
||||
*?*no such variable: ptr1
|
||||
*?*no such variable: ptr2
|
||||
|
||||
() {
|
||||
typeset ptr2=foo
|
||||
typeset -n ptr1=ptr2
|
||||
() {
|
||||
setopt localoptions errreturn
|
||||
private -n ptr2
|
||||
typeset -n ptr1=ptr2
|
||||
echo NOT REACHED
|
||||
}
|
||||
}
|
||||
1:regression test for invalid reference detection
|
||||
F:Should we allow "public" namerefs to private parameters?
|
||||
*?*ptr2: invalid reference
|
||||
|
||||
() {
|
||||
private x=1
|
||||
unset x
|
||||
|
||||
Reference in New Issue
Block a user