On 2015/05/20 07:59:17, Michael Starzinger wrote:
On 2015/05/20 07:06:46, Dmitry Lomov (chromium) wrote:
> Here is a design I came up with yesterday evening (nothing done yet): for
>    [a, b, c, ...d]
> parser builds an ast:
>    %SpreadArrayLiteral([a,b,c], d)

This will have similar issues with evaluation order as the spread calls.
Concretely, the following:
    [a, ...b, c, ...d]
Will have evaluation order:
    "a, b, c, d, b.next(), d.next()",
Instead of:
    "a, b, b.next(), c, d, d.next()"

I didn't check with the spec draft, so I don't actually know which of these evaluation orders is the expected one. But I have the feeling the later is the
intended order. Please correct me if I am wrong.

Ah I see, you are right, I forgot that in expressions '...d' can got in the
middle as well.
In patterns, the only allowed form is [a, b, c, ...d] that does not have this
issue.
For now, I'll probably just parse ...d in array literals in patterns only.


> where builtin:
>    function SpreadArrayLiteral(lit, rest) {
>        let index = lit.length;
>        let done = false;
>        while (!done) {
>            let result = IteratorNext(rest);
>            done = result.done;
>            if (!done) lit[index+] = result.value;
>        }
>    }
> Codegen will generate the code as-is, whereas PatternRewriter will
reinterpret
> this as a pattern.



https://codereview.chromium.org/1125183008/

--
--
v8-dev mailing list
[email protected]
http://groups.google.com/group/v8-dev
--- You received this message because you are subscribed to the Google Groups "v8-dev" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
For more options, visit https://groups.google.com/d/optout.

Reply via email to