Notes |
(0012295 - 603 - 693 - 693 - 693 - 693 - 693)
wiz
06-12-08 21:10
|
Hi hfm, hi chris,
I looked at the patch
it calls #maIsMutatingProxy
Which is not defined anywhere in 3.10.1
Wouldn't that mean that any behaviors that should answer false would instead throw up a debugger?
Also when patching something it would be good to include a test. The test should fail before the patch is applied and pass after.
It is a good way to check one's work.
Checking one's work is a good way to gain the confidence of the harvesters.
And a good way to gaurentee you are protecting their time when they vet your fixes.
Yours in service and curiosity, --Jerome Peace |
|
(0012298 - 630 - 642 - 642 - 642 - 642 - 642)
chris
06-15-08 22:44
|
hfm, that is not a good solution, the problem is #obsoleteBehaviors is enumerating ALL objects in the image, including ones that do not inherit from Object, sending messages #isBehavior and #isObsolete won't work on those. Adding in a check for #maIsMutatingProxy would only catch the Magma proxies, not any other kinds of ProtoObjects and would still invoke the debugger.
You could move #isBehavior and #isObsolete to ProtoObject, but that would meet headwinds from those who say ProtoObject should have no methods. However, type-checks should reasonably be expected to work, since here we have system-level code using them. |
|
(0012299 - 941 - 985 - 985 - 985 - 985 - 985)
hfm
06-16-08 06:20
|
Hi Jerome. #maIsMutatingProxy is included as part of Magma package in the MagmaTester repository. Although I've tested this under 3.9, I do not believe you'd find it without installing Magma.
My checking on this was a day by day work with Magma in a production environment. I do not send a test because the conditions under which a mutating proxy appears are not very clear to me. One I've found recently was sending "self class" in a method of a persisted object, this caused a 'Unable to realize Orphaned MagmaMutatingProxy'. I fixed this via an explicit send, i.e.: "self perform: #class". Is this condition correct and enough to reproduce the problem?
Chris: The patch was not intended to catch ProtoObjects, just bypass the Magma proxies since I had never saw a debugger in other cases when fixing obsolete references. Is there are a more clean or less intrusive solution without moving #isObsolete and #isBehavior to ProtoObject? |
|