[squeak-dev] #perform:withArguments: not working with WeakArray

Eliot Miranda eliot.miranda at gmail.com
Thu Apr 28 15:31:07 UTC 2016


Hi Marcel,

> On Apr 28, 2016, at 7:10 AM, marcel.taeumel <Marcel.Taeumel at 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)


More information about the Squeak-dev mailing list