Squashed commit of the following:
commit 370f47d26099dd8cda4125de67048461edb797a9
Author: ssoberni <stefan.sobernig@wu-wien.ac.at>
Date: Thu Nov 4 10:56:11 2010 +0100
Due to recent changes in InterpColonVarResolver() to handle the
slow-path execution the byte-compiled [variable], an unwanted
interaction between ::nsf::setter, *certain* per-object namespaces,
and the ColonCmd()-based invocation of setter methods became
visible. In short: Given a pre-existing Tcl namespace and the
colon-prefixed call specification to a setter method,
InterpColonVarResolver() handles the var resolution request issued by
the setter method (or SetInstVar(), more precisely). In a
colon-prefixed call, the Tcl_Obj carrying the setter method name and
used to lookup the object variable contains the ":". At the same time,
the per-object namespace causes the TCL_NAMESPACE_ONLY flag to be set
which causes InterpColonVarResolver() to pass on the request. In this
setting, we end up with colon-prefixed object variables! See
tests/parameter.test for an explanatory test case. For the time being,
I fixed this by preserving and using the original, colon-free Tcl_Obj
indicating the variable name in the client data structure of the
settercmd.