[Xotcl] XOTcl1.5.6 and Tcl8.5b1
Gustaf Neumann
neumann at wu-wien.ac.at
Mon Oct 29 22:32:50 CET 2007
Just a small followup: Since xotcl has about 30 tests for nonposargs,
which are
all passing for tcl 8.5, i was trying to extend the xotcl regression
test, and
found some more insight:
Your original script
Class X
X instproc ListOfStringsOption {{-default ""} {-cb ""} name} {
if {$cb eq {}} { set cb "::set ::$name " } ;# global variable
eval $cb \$default
}
could be as well be repaired in 8.5 by avoiding eval with the new-style
expand operator
X instproc ListOfStringsOption {{-default {}} {-cb ""} name} {
if {$cb eq {}} { set cb "::set ::$name " } ;# global variable
{*}$cb $default
}
or strangely, by mentioning the variable "default" explicitely
in the procbody
X instproc ListOfStringsOption {{-default ""} {-cb ""} name} {
if {$cb eq {}} { set cb "::set ::$name " } ;# global variable
set _ $default
eval $cb \$default
}
I have still no clear understanding why in the original version the
variable "default" is unknown within eval. Maybe there is a
bad interaction with the byte-code compiler in Tcl 8.5...
Anyhow, altering Tcl_ObjSetVar2() to Tcl_SetVar2Ex() on the C level
works fine in all cases.
best regards
-gustaf neumann
More information about the Xotcl
mailing list