Generalizable Function Modifier Syntax
Brendan Eich
brendan at mozilla.org
Sat Mar 15 21:52:19 PDT 2014
Kevin Smith wrote:
> async function af() {}
> { async af() { } }
This lines up with what Luke Hoban presented at the last TC39 meeting.
So far, so good (but not a done deal by any means, of course). The main
bone of contention is the use of ! in promises future-proposed syntax.
> The hard part is arrow functions. One possibility would be to use
> another cover grammar and place the modifier to the left of the arrow
> function:
>
> modifier [NoNewLine] Identifier =>
> modifier [NoNewLine] ArgumentList =>
We could do this.
> We could probably reuse some of the existing arrow function parsing
> strategy to back up the input stream or transform the AST.
It smells, but we're used to it!
> Another possibility would be to place the modifier to the right of the
> argument list:
>
> Identifier [NoNewLine] modifier => ...
> ArgumentList [NoNewLine] modifier => ...
>
> e.g.
>
> x async=> {}
> (a, b, c) async=> {}
>
> This would be easier to parse, and would align with a potential
> "generator arrow":
>
> x *=> {}
>
> (Presuming that we can give up on arrows with empty parameter lists.)
Bletch, and don't multiple risks unnecesasrily by entangling with
opposition to empty arrow param list elision.
/be
More information about the es-discuss
mailing list