tc39 / Function-prototype-toString-revision

:fishing_pole_and_fish: ECMA-262 proposal to update Function.prototype.toString

Home Page:https://tc39.github.io/Function-prototype-toString-revision

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Include static keyword in method toString

jridgewell opened this issue · comments

Static is currently excluded from a method's toString:

class Ex {
  static test() { /* hello */ }
}

console.log(Ex.test.toString());
// => 'test() { /* hello */ }'

The decorators group would like to include it in the toString, since it can't go before the decorators.

Even unrelated to decorators, it makes sense, and follows the mental model, that if you eval Ex.test.toString() inside a similar lexical context (the body of class Ex, with the same variable bindings in scope) that it should result in a static method.

Intutiively, I like this change. To me, it seems like static is part of the method declaration just as much as async is. I don't think we should put too much stock into the details of a particular version of the spec's grammar when making these sorts of decisions.