Why is concise body for method definition dropped?

Brendan Eich brendan at mozilla.com
Wed Jun 5 08:40:22 PDT 2013


Brendan Eich wrote:
> Matthew Robb wrote:
>> At one point I was under the impression that the following would 
>> produce an implicit return method:
>>
>> class x {
>>    method(x) x+x
>> }
>
> We dropped it. Maybe Rick can find the meeting notes -- I'm short on 
> time due to travel today. The problem is you must terminate with a ; 
> or else the expression body may continue into what the user intended 
> to be a subsequent property name, especially one of the form we 
> considered (but ultimately rejected for now):
>
>   class C {
>     method(x) x+x
>     [symbol]: 42
>   }
>
> If there was no syntax error, then ASI does not apply.

Of course, the expression body "x+x[symbol]:42" does have a later syntax 
error, on the ":" -- but that is confusing.

Also it could be with computed property names combined with concise 
methods that you get "x+x[symbol](y)+y" (note unary "+" :-P).

It's a rabbit-hole we'd rather avoid.

/be
>
> Now we could reckon that [computed-property-name] is "out", so we can 
> put expression body back "in" -- but the future-fragility if not 
> future-hostility stayed our hands from doing this. I think that's the 
> right call, still.
>
> /be
>
>>
>>
>> On Wed, Jun 5, 2013 at 8:07 AM, Rick Waldron <waldron.rick at gmail.com 
>> <mailto:waldron.rick at gmail.com>> wrote:
>>
>>
>>
>>
>>     On Wed, Jun 5, 2013 at 10:56 AM, Matthew Robb
>> <matthewwrobb at gmail.com <mailto:matthewwrobb at gmail.com>> wrote:
>>
>>         Does a concise body method still return by default?
>>
>>
>>     ArrowFunction offers implicit return in the unbraced form:
>>
>>     let two = () => 1 + 1;
>>     two(); // 2
>>
>>     Whereas the braced form requires an explicit return, otherwise
>>     returning the default undefined.
>>
>>     Rick
>>
>>
>>
>>      /snip
>>
>>
>>
>>
>> -- 
>> - Matthew Robb
>> _______________________________________________
>> 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
>


More information about the es-discuss mailing list