Hey, there!
This does not work (i.e. primitive failed):
m := Morph new. c := Color white. m perform: #color: withArguments: (WeakArray with: c).
Is this primitive-fail okay? If yes, we have a bug in WeakMessageSend >> #collectArguments: because it will always return a WeakArray if the arg sizes does not match. Usually a normal array otherwise.
I observed this kind of bug when using our object events like this:
m1 := Morph new. m2 := Morph new.
m1 when: #baz send: #color: to: m2 with: Color black. m1 triggerEvent: #baz withArguments: {Color white. #blubb}. "fails due to weak array" m1 triggerEvent: #baz withArguments: {Color white}. "works due to normal array"
Best, Marcel
-- View this message in context: http://forum.world.st/perform-withArguments-not-working-with-WeakArray-tp489... Sent from the Squeak - Dev mailing list archive at Nabble.com.
Hi Marcel,
On Apr 28, 2016, at 7:10 AM, marcel.taeumel Marcel.Taeumel@hpi.de wrote:
Hey, there!
This does not work (i.e. primitive failed):
m := Morph new. c := Color white. m perform: #color: withArguments: (WeakArray with: c).
Is this primitive-fail okay?
Yes. The primitive is specified to require an Array instance, not merely an indexable pointers object.
If yes, we have a bug in WeakMessageSend >> #collectArguments: because it will always return a WeakArray if the arg sizes does not match. Usually a normal array otherwise.
That's the bug.
I observed this kind of bug when using our object events like this:
m1 := Morph new. m2 := Morph new.
m1 when: #baz send: #color: to: m2 with: Color black. m1 triggerEvent: #baz withArguments: {Color white. #blubb}. "fails due to weak array" m1 triggerEvent: #baz withArguments: {Color white}. "works due to normal array"
Best, Marcel
_,,,^..^,,,_ (phone)
squeak-dev@lists.squeakfoundation.org