Evaluator Clause: ArrayPush does not accept unnamed map

The following code (in an evaluator group clause) works:

groups = ArrayCreate();
x = [ name = "1 - System"; letters = "C"; ];
ArrayPush(groups, x);

Where the following code silently fails:

groups = ArrayCreate();
ArrayPush(groups, [ name = "1 - System"; letters = "C"; ]);

Is there a specific reason or misuse? Or is this a bug?

Well,
How would this happen then ?
Within Evaluator, how could an implicitly defined array be added as an element of another explicitly defined array ?

So I tried to do that and this is the result of my attempt.

Edit:

And my second attempt was this:

Looks like a bug. Fixed in the next update. Thanks!

Thanks David for looking into this.
First, note that my question was related to maps, not arrays (in my example, when you define x = [ name = "1 - System"; letters = "C"; ];, then you can use x.name and x.letters to access then content of the map).

With regard to your tests, this seems like expected results.

Your first test defines 2 arrays of strings, arr1 & arr2.
Then:

  • When adding (ArrayPush) a new string at the end of each of these, you get arrays of string with the newly added string at the end.
  • When creating the 2D array (ArrayCreate(arr1, arr2)), you actually get a 2D array, 1st item is arr1, and second is arr2. Then you add a third item (arr2 again) and the output just shows that.

And your second test edit fails because the syntax { "string", "string" } is not the syntax of an array (even though that's how it's displayed with an Output command).
I think that if you'd want to add an unnamed array in another one, you could use ArrayPush(arr1, ArrayCreate( "This", "is", "an", "unnamed", "array"));