Index: TODO =================================================================== diff -u -r8f4072d4e6bb8bae0ab7ef7e0b78526ad7852453 -r75a621dace63d1282e9abd6f0f4da5fbe11d47c5 --- TODO (.../TODO) (revision 8f4072d4e6bb8bae0ab7ef7e0b78526ad7852453) +++ TODO (.../TODO) (revision 75a621dace63d1282e9abd6f0f4da5fbe11d47c5) @@ -3965,12 +3965,19 @@ a regular expression, that should match everything. * extended regression test +nsf.c: +- generalize stack monitor by handling growing and shrinking stacks +- refactor into funciton CheckCStack() +- serializer: + * pertain perobjectdispatch and keepcallerself in serializer + * extend regression test + + ======================================================================== TODO: - document new setable object properties perobjectdispatch and keepcallerself -- pertaining perobjectdispatch and keepcallerself in serializer - behavior on keepcallerself on ordinary dispatches with implicit/explicit receiver (currently the flag is ignored, the code just commented out) Index: library/serialize/serializer.tcl =================================================================== diff -u -r8f4072d4e6bb8bae0ab7ef7e0b78526ad7852453 -r75a621dace63d1282e9abd6f0f4da5fbe11d47c5 --- library/serialize/serializer.tcl (.../serializer.tcl) (revision 8f4072d4e6bb8bae0ab7ef7e0b78526ad7852453) +++ library/serialize/serializer.tcl (.../serializer.tcl) (revision 75a621dace63d1282e9abd6f0f4da5fbe11d47c5) @@ -785,7 +785,9 @@ append cmd \ [:frameWorkCmd ::nsf::relation $o object-mixin] \ - [:frameWorkCmd ::nsf::method::assertion $o object-invar] + [:frameWorkCmd ::nsf::method::assertion $o object-invar] \ + [:frameWorkCmd ::nsf::object::property $o keepcallerself -unless 0] \ + [:frameWorkCmd ::nsf::object::property $o perobjectdispatch -unless 0] if {[$o info has type ::nx::Slot]} { # Slots needs to be initialized to ensure Index: tests/serialize.test =================================================================== diff -u -r8f4072d4e6bb8bae0ab7ef7e0b78526ad7852453 -r75a621dace63d1282e9abd6f0f4da5fbe11d47c5 --- tests/serialize.test (.../serialize.test) (revision 8f4072d4e6bb8bae0ab7ef7e0b78526ad7852453) +++ tests/serialize.test (.../serialize.test) (revision 75a621dace63d1282e9abd6f0f4da5fbe11d47c5) @@ -166,4 +166,42 @@ ? {::nsf::method::property ::C -per-object per-object-slot slotcontainer} 1 ? {::nsf::object::exists ::C::slot::a} 1 ? {::nsf::object::exists ::C::per-object-slot::x} 1 +} + +# +# check whether ::nsf::object::properties keepcallerself and +# perobjectdispatch for nx::Objects are handled correctly via serialize +# +nx::Test case serialize-object-properties { + + # + # Check on object o + # + nx::Object create o + ::nsf::object::property ::o keepcallerself 1 + ::nsf::object::property ::o perobjectdispatch 1 + + set script [o serialize] + o destroy + ? {::nsf::object::exists ::o} 0 + + eval $script + ? {::nsf::object::property ::o keepcallerself} 1 + ? {::nsf::object::property ::o perobjectdispatch} 1 + + # + # Now the same for a class + # + nx::Class create C + ::nsf::object::property ::C keepcallerself 1 + ::nsf::object::property ::C perobjectdispatch 1 + + set script [C serialize] + C destroy + ? {::nsf::object::exists ::C} 0 + + eval $script + ? {::nsf::object::property ::C keepcallerself} 1 + ? {::nsf::object::property ::C perobjectdispatch} 1 + } \ No newline at end of file