Index: generic/predefined.xotcl =================================================================== diff -u -re61fc14f5c25172a1d1f93bea03be54a772fb4b5 -r6b3921be54ad92034e563a09300ab2e4f49645aa --- generic/predefined.xotcl (.../predefined.xotcl) (revision e61fc14f5c25172a1d1f93bea03be54a772fb4b5) +++ generic/predefined.xotcl (.../predefined.xotcl) (revision 6b3921be54ad92034e563a09300ab2e4f49645aa) @@ -308,9 +308,9 @@ if {[::xotcl::is $obj type ::xotcl::Object] && ([$slot name] eq "mixin" || [$slot name] eq "filter") } continue - set parameterdefinition "-[namespace tail $slot]" + set name [namespace tail $slot] + set parameterdefinition "-$name" set opts [list] - if {[$slot exists required] && [$slot required]} { lappend opts required } @@ -326,6 +326,12 @@ } elseif {[$slot exists initcmd]} { set arg [::xotcl::setinstvar $slot initcmd] lappend opts initcmd + } + if {[$slot exists methodname]} { + set methodname [::xotcl::setinstvar $slot methodname] + if {$methodname ne $name} { + lappend opts arg=$methodname + } } if {[llength $opts] > 0} { append parameterdefinition :[join $opts ,] @@ -411,7 +417,7 @@ ############################################ createBootstrapAttributeSlots ::xotcl::Slot { {name "[namespace tail [::xotcl::self]]"} - {methodname "[namespace tail [::xotcl::self]]"} + {methodname} {domain "[lindex [regexp -inline {^(.*)::slot::[^:]+$} [::xotcl::self]] 1]"} {defaultmethods {get assign}} {manager "[::xotcl::self]"} @@ -470,6 +476,9 @@ set .domain [::xotcl::self callingobject] } if {${.domain} ne ""} { + if {![info exists .methodname]} { + set .methodname ${.name} + } ${.domain} __invalidateobjectparameter set cl [expr {${.per-object} ? "Object" : "Class"}] # since the domain object might be xotcl1 or xotcl2, use dispatch