57 lines
894 B
Plaintext
57 lines
894 B
Plaintext
# Tests auto-upref with the "&name" syntax
|
|
|
|
source [file dirname [info script]]/testing.tcl
|
|
|
|
needs constraint jim
|
|
|
|
proc a1 {&b c} {
|
|
append b b
|
|
append c c
|
|
}
|
|
|
|
proc a2 {&b {dummy 3} &c} {
|
|
append b b
|
|
append c c
|
|
}
|
|
|
|
proc a3 {&b(c)} {
|
|
append b(c) b_c
|
|
}
|
|
|
|
# This is treated as a normal var "&b"
|
|
proc a4 {{&b x}} {
|
|
append &b B
|
|
}
|
|
|
|
set B 1
|
|
set C 1
|
|
|
|
test procref-1.1 {Basic test} {
|
|
a1 B $C
|
|
set B
|
|
} {1b}
|
|
|
|
test procref-1.2 {Basic test} {
|
|
a1 B $C
|
|
set B
|
|
} {1bb}
|
|
|
|
test procref-1.3 {Unset var} -body {
|
|
a1 unsetB $C
|
|
} -returnCodes error -result {can't read "unsetB": no such variable}
|
|
|
|
test procref-1.4 {Left and right args are refs} {
|
|
a2 B C
|
|
list $B $C
|
|
} {1bbb 1c}
|
|
|
|
test procref-1.5 {Invalid arg} -body {
|
|
a3 B
|
|
} -returnCodes error -result {bad variable name "b(c)": upvar won't create a scalar variable that looks like an array element}
|
|
|
|
test procref-1.6 {Default arg as ref} {
|
|
a4
|
|
} xB
|
|
|
|
testreport
|