for-loops and declaration-like init expressions

Mark S. Miller erights at google.com
Thu Jun 5 10:01:30 PDT 2014


Having this be legal as an expression makes the language more complex from
the programmer's perspective than either
* prohibiting this, by allowing only expression-statements as expressions
here, or
* accepting any declaration in this position.

I would be surprised if the status quo were simpler than both of these
alternatives from a spec perspective either. Why would this be so?




On Thu, Jun 5, 2014 at 9:50 AM, Allen Wirfs-Brock <allen at wirfs-brock.com>
wrote:

> Over and beyond the breaking change WRT function, I really don’t see the
> value in such a restriction.  There are many pointless or nonsensial things
> that can be written as expressions.  In general, we  don’t complicate the
> language to make such things illegal.
>
> Allen
>
>
> On Jun 5, 2014, at 7:58 AM, Andreas Rossberg <rossberg at google.com> wrote:
>
> > C-style for-loops allow declarations as init statements, but only some
> > of them. Yet, the others (function and class) are actually
> > syntactically legal in that position as well, because they are simply
> > parsed as expressions. Consider:
> >
> >  let x = 0
> >  for (let x = 1; ;) x  // 1
> >  for (const x = 1; ;) x  // 1
> >  for (function x(){}; ;) x  // 0
> >  for (class x(){}; ;) x  // 0
> >
> > I think these latter two examples violate the principle of least
> > surprise. I wonder if it wouldn't be cleaner to rule them out, by
> > imposing the same lookahead restrictions on for-loop init expressions
> > as there are for expression statements.
> >
> > The one caveat is that for function, that would actually be a breaking
> > change, but is it likely to be a real world one?
> >
> > What do you think?
> >
> > /Andreas
> > _______________________________________________
> > es-discuss mailing list
> > es-discuss at mozilla.org
> > https://mail.mozilla.org/listinfo/es-discuss
> >
>
> _______________________________________________
> es-discuss mailing list
> es-discuss at mozilla.org
> https://mail.mozilla.org/listinfo/es-discuss
>



-- 
    Cheers,
    --MarkM
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.mozilla.org/pipermail/es-discuss/attachments/20140605/a34db2f0/attachment.html>


More information about the es-discuss mailing list