loop unrolling and completion values in ES6

Allen Wirfs-Brock allen at wirfs-brock.com
Thu Apr 9 15:01:40 UTC 2015

> On Apr 9, 2015, at 10:44 AM, Alan Schmitt <alan.schmitt at polytechnique.org> wrote:
> 1. Let sl be the result of evaluating StatementList.
> 2. ReturnIfAbrupt(sl).
> 3. Let s be the result of evaluating StatementListItem.
> 4. If s.[[type]] is throw, return Completion(s).
> 5. If s.[[value]] is empty, let V = sl.[[value]], otherwise let V = s.[[value]].
> 6. Return Completion{[[type]]: s.[[type]], [[value]]: V, [[target]]: s.[[target]]}.
> The problem happens when the first statement of the body of the while
> loop is a break: in that case the value from the previous iteration is
> not carried over.

I agree, each kind of loop needs  to do its equivalent of step 5 above before checking for exit conditions, that is the opposite of what is currently specified.



More information about the es-discuss mailing list