ES4 draft: array initializer expressions
My comments:
The grammar is ambiguous.
var [x, y] = expr;
is both an assignment expression statement and a destructuring variable binding statement.
How does the "length" property work for structural type literals? Is it always a fixture?
If the array initializer is prefixed by |const| or |var| then the array properties created will be created as fixtures; if the prefix is |const| those fixtures will additionally be read-only.
Am I to read this as stating that the length is also a constant if "const" is used? It's a bit unclear.
Waldemar
'var' and 'const' need to be added to the lookahead set on ExpressionStatement. That will take care of the ambiguity.
I have a (perhaps stupid) question regarding the Array type syntax. What is the use case for a type like:
[string, double, ...boolean]
I understand the utility of heterogeneous tuples of a fixed size, and of homogeneous lists of variable size, but I don't really see when I would use a hybrid like this. What am I missing?
Enclosed is the first draft of the description of array initializer syntax, which has evolved quite a bit in ES4. The draft feels a little raw, maybe because we have yet to pin down all aspects of how structural array types interact with everything; please read critically and ask difficult questions. (The draft contains an informative section on structural array types as I think they ought to behave.)