broadcasting lists

I'm trying to use lists to broadcast complex messages, but it's not working as expected. I discovered this when trying to load a project I created about 4 years ago when the list broadcasting worked correctly.

  1. What browsers show this problem?

At least edge and firefox

  1. Please share an example project (if possible).
  1. Describes the steps to reproduce this issue.

Press the keys "a", "b", and "c"

  1. What does Snap! currently do?

"a" and "c" work as expected (the list is received as a message is received by the sprites). "b" shows the list message in the trace, but it is not received by the sprites.

  1. What should Snap! do instead?

The message should be received in all cases.

You're the victim of an experimental feature (which I totally support) that allows a broadcast to direct the message to specific sprites. If the 6.0 'send' command sticks around, I suppose the broadcast could revert to old behavior. Anyway, a two-element list is interpreted as [message, recipients] which is why the b send doesn't work. Try this:

Ah, I see. I haven't been following Snap! for a while so I guess I missed this.

Wouldn't it be more obvious to extend the broadcast block to be

broadcast message to recipients

rather than changing the behavior based on the message itself? Or is that what the send block does and it was only added this way because it is experimental?

The nested list sends, but it's received as a nested list. Under the current experimental feature, you cannot send a 2-element list.

Right: 'send message to recipients' is the new syntax. The 6.0 beta contains send, but also retains the modified syntax for broadcast.
@jens, does it make sense to revert to the old broadcast semantics if 'send' remains?

you can send a two element list, but if you're sending lists, you'd have to wrap all lists in a list and then extract item 1.

IANJ, but yes, I concur, that misfeature should go.

I've decided to let this feature in in order to not break existing projects. Let me repeat: Do not use "messages" (i.e. events) for anything but symbols. If you feel the need to send complex stuff, use a function or rethink your design.