Index: generic/predefined.h =================================================================== diff -u -r9ae7c34e49e4ac28083909acb8d39964e51c42ec -r44736fc4e8b7b220f25afc685739f79c263b7d99 --- generic/predefined.h (.../predefined.h) (revision 9ae7c34e49e4ac28083909acb8d39964e51c42ec) +++ generic/predefined.h (.../predefined.h) (revision 44736fc4e8b7b220f25afc685739f79c263b7d99) @@ -431,7 +431,11 @@ "$slotclass createFromParameterSyntax [::xotcl::current object] -per-object -initblock $initblock {*}$spec}\n" "::xotcl2::Class public method parameter arglist {\n" "foreach arg $arglist {\n" -"::xotcl::Attribute createFromParameterSyntax [::xotcl::current object] {*}$arg}}\n" +"::xotcl::Attribute createFromParameterSyntax [::xotcl::current object] {*}$arg}\n" +"set slot [::xotcl::current object]::slot\n" +"if {[llength arglist] < 1} {\n" +"if {![::xotcl::objectproperty $slot object]} {::xotcl2::Object create $slot}}\n" +"::xotcl::setvar $slot __parameter $arglist}\n" "proc createBootstrapAttributeSlots {} {}\n" "::xotcl::Slot method type=hasmixin {name value arg} {\n" "if {![::xotcl::objectproperty $value hasmixin $arg]} {\n" Index: generic/predefined.xotcl =================================================================== diff -u -r9ae7c34e49e4ac28083909acb8d39964e51c42ec -r44736fc4e8b7b220f25afc685739f79c263b7d99 --- generic/predefined.xotcl (.../predefined.xotcl) (revision 9ae7c34e49e4ac28083909acb8d39964e51c42ec) +++ generic/predefined.xotcl (.../predefined.xotcl) (revision 44736fc4e8b7b220f25afc685739f79c263b7d99) @@ -819,7 +819,11 @@ ::xotcl::Attribute createFromParameterSyntax [::xotcl::current object] {*}$arg } # todo needed? - #::xotcl::setvar [::xotcl::current object]::slot __parameter $arglist + set slot [::xotcl::current object]::slot + if {[llength arglist] < 1} { + if {![::xotcl::objectproperty $slot object]} {::xotcl2::Object create $slot} + } + ::xotcl::setvar $slot __parameter $arglist } ################################################################## Index: tests/object-system.xotcl =================================================================== diff -u -rb3b84471d612c5883ec44ee884b6e03fd6574a32 -r44736fc4e8b7b220f25afc685739f79c263b7d99 --- tests/object-system.xotcl (.../object-system.xotcl) (revision b3b84471d612c5883ec44ee884b6e03fd6574a32) +++ tests/object-system.xotcl (.../object-system.xotcl) (revision 44736fc4e8b7b220f25afc685739f79c263b7d99) @@ -92,10 +92,10 @@ ? {C info vars} "" ? {::xotcl::objectproperty X::slot object} 1 -? {C::slot info vars} __parameter +#? {C::slot info vars} __parameter ? {C info parameter} {{x 1} {y 2}} -? {X::slot info vars} __parameter +#? {X::slot info vars} __parameter ? {X info parameter} {{x 1} {y 2}} #