Index: library/serialize/serializer.tcl =================================================================== diff -u -re415f4153e7750b77616795150822b91db1ba9d4 -r0fbefbd8effdd2cca8f5ea34ff35aebfe536ff07 --- library/serialize/serializer.tcl (.../serializer.tcl) (revision e415f4153e7750b77616795150822b91db1ba9d4) +++ library/serialize/serializer.tcl (.../serializer.tcl) (revision 0fbefbd8effdd2cca8f5ea34ff35aebfe536ff07) @@ -706,10 +706,14 @@ # object serialization is fully handled by the serializer return "# [$o {*}$modifier info method definition $m]" } - set def [$o {*}$modifier info method definition $m] - set handle [$o {*}$modifier info method handle $m] - set returns [::nsf::methodproperty $o $handle returns] - if {$returns ne ""} {append def \n [list ::nsf::methodproperty $o $handle returns $returns]} + if {[$o {*}$modifier info method type $m] eq "setter"} { + set def "" + } else { + set def [$o {*}$modifier info method definition $m] + set handle [$o {*}$modifier info method handle $m] + set returns [::nsf::methodproperty $o $handle returns] + if {$returns ne ""} {append def \n [list ::nsf::methodproperty $o $handle returns $returns]} + } return $def } Index: tests/method-modifiers.test =================================================================== diff -u -rb8b81d5258a35f294599bb755a0cc15cf363972b -r0fbefbd8effdd2cca8f5ea34ff35aebfe536ff07 --- tests/method-modifiers.test (.../method-modifiers.test) (revision b8b81d5258a35f294599bb755a0cc15cf363972b) +++ tests/method-modifiers.test (.../method-modifiers.test) (revision 0fbefbd8effdd2cca8f5ea34ff35aebfe536ff07) @@ -315,11 +315,37 @@ ? {f1 list reverse} "::f1-reverse" } +package req nx::serializer Test case class-object-attribute { - Class create C {:class-object attribute x} + Class create C { + :class-object attribute x + :attribute a:int + :create c1 + } ? {C x 1} 1 ? {C x} 1 - ? {C info methods} "" + ? {C info methods} "a" ? {C class-object info methods} x + ? {c1 a b} {expected integer but got "b" for parameter "a"} + + set s(C) [C serialize] + set s(c1) [c1 serialize] + + # Destroy object and class + c1 destroy + C destroy + + ? {nsf::isobject c1} 0 + ? {nsf::isobject C} 0 + + # create it from the serialized code + eval $s(C) + eval $s(c1) + + # tests should work as again + ? {C x} 1 + ? {C info methods} "a" + ? {C class-object info methods} x + ? {c1 a b} {expected integer but got "b" for parameter "a"} }