Index: library/nx/nx.tcl =================================================================== diff -u -r361fa327cab70ec1c7bf085054bb96b649ed266c -r69dd5028cf4ef20149baa013e1929b1b3bb65c2a --- library/nx/nx.tcl (.../nx.tcl) (revision 361fa327cab70ec1c7bf085054bb96b649ed266c) +++ library/nx/nx.tcl (.../nx.tcl) (revision 69dd5028cf4ef20149baa013e1929b1b3bb65c2a) @@ -1318,23 +1318,35 @@ # When slot objects are destroyed, flush the parameter cache and # delete the accessors # - #puts stderr "*** slot destroy of [self], domain ${:domain} per-object ${:per-object}" + puts stderr "*** slot destroy of [self], domain ${:domain} per-object ${:per-object}" if {${:per-object}} { ::nsf::parameter::cache::objectinvalidate ${:domain} if {[${:domain} ::nsf::methods::object::info::method exists ${:name}]} { ::nsf::method::delete ${:domain} -per-object ${:name} } - } elseif {[::nsf::is class ${:domain}]} { - ::nsf::parameter::cache::classinvalidate ${:domain} - if {[${:domain} ::nsf::methods::class::info::method exists ${:name}]} { - ::nsf::method::delete ${:domain} ${:name} - } } else { - nsf::log Warning "ignore inproper domain ${:domain} during destroy (maybe per-object not set?)" + + puts stderr ---isEnter--- + # set is [::nsf::is class ${:domain}] + set is [${:domain} ::nsf::methods::object::info::hastype ::nx::Class] + puts stderr ---isLeave($is)--- + if {$is} { + puts stderr ---1--- + ::nsf::parameter::cache::classinvalidate ${:domain} + puts stderr ---2--- + if {[${:domain} ::nsf::methods::class::info::method exists ${:name}]} { + ::nsf::method::delete ${:domain} ${:name} + } + } else { + nsf::log Warning "ignore inproper domain ${:domain} during destroy (maybe per-object not set?)" + } } } - ::nsf::next + puts stderr ---destroyEnter--- + set r [::nsf::next] + puts stderr ---destroyLeave--- + return $r } #