The strawman changes to the grammar are still ambiguous :(

`() => {}` -> noop or Object or SyntaxError? If SyntaxError, ...why?

I think hacking around this would not get rid of the footgun, but would
just make it more complicated to understand the footgun, personally.


On Mon, Jan 5, 2015 at 2:46 PM, Domenic Denicola <[email protected]> wrote:

> What do you think the chances of this are in ES7+? That is, how
> backward-compatible is this change? The linked strawman doesn't seem to
> touch on `() => { foo: bar }` as a back-compat hazard. Do you feel hopeful?
>
> -----Original Message-----
> From: es-discuss [mailto:[email protected]] On Behalf Of
> Brendan Eich
> Sent: Monday, January 5, 2015 14:41
> To: Calvin Metcalf
> Cc: es-discuss
> Subject: Re: (x) => {foo: bar}
>
> See
>
> http://wiki.ecmascript.org/doku.php?id=strawman:block_vs_object_literal
>
> This could be done, but not for ES6. Sorry I didn't push this harder,
> earlier.
>
> /be
>
> Calvin Metcalf wrote:
> > this seems like a footgun and has tripped people up in the wild
> > https://twitter.com/jankrems/status/544645776518184960
> >
> > On Mon Jan 05 2015 at 2:05:52 PM Caitlin Potter
> > <[email protected] <mailto:[email protected]>> wrote:
> >
> >     > In the implementations I checked, this is actually allowed, but
> >     it's parsed as a label instead of what you may expect at first
> >     glance (an object).
> >
> >     For it to be a concise body, you need to change it to `let f = (x)
> >     => ({foo: bar});`. Otherwise, it's like a regular function body.
> >
> >     On Mon, Jan 5, 2015 at 2:02 PM, Frankie Bagnardi
> >     <[email protected] <mailto:[email protected]>> wrote:
> >
> >         let f = (x) => {foo: bar};
> >
> >         In the implementations I checked, this is actually allowed,
> >         but it's parsed as a label instead of what you may expect at
> >         first glance (an object).
> >
> >         Is there any reason this is allowed?  If there's no reason
> >         other than to match function(){}, this should be a syntax
> >         error, in my opinion.
> >
> >         A potentially easier and wider reaching solution here would be
> >         to restrict labels in strict mode to demand a possible
> >         break/continue, else it's a syntax error.  The only area I'd
> >         be concerned about compatibility is low level generated
> >         JavaScript.
> >
> >         Thoughts?
> >
> >         _______________________________________________
> >         es-discuss mailing list
> >         [email protected] <mailto:[email protected]>
> >         https://mail.mozilla.org/listinfo/es-discuss
> >
> >
> >     _______________________________________________
> >     es-discuss mailing list
> >     [email protected] <mailto:[email protected]>
> >     https://mail.mozilla.org/listinfo/es-discuss
> >
> > _______________________________________________
> > es-discuss mailing list
> > [email protected]
> > https://mail.mozilla.org/listinfo/es-discuss
> _______________________________________________
> es-discuss mailing list
> [email protected]
> https://mail.mozilla.org/listinfo/es-discuss
> _______________________________________________
> es-discuss mailing list
> [email protected]
> https://mail.mozilla.org/listinfo/es-discuss
>
_______________________________________________
es-discuss mailing list
[email protected]
https://mail.mozilla.org/listinfo/es-discuss

Reply via email to