Open21

class definitions

kajirikajirikajirikajiri

ClassTail???
雰囲気的には、下記の{以降を表しているっぽいが、

class Name {

const Name = class {

kajirikajirikajirikajiri

と思ったら1行下に書いてました。。。これは原文見た方がわかりやすそう。インデントがどっか行った
https://262.ecma-international.org/6.0/#sec-class-definitions

Syntax
ClassDeclaration[Yield, Default] :
class BindingIdentifier[?Yield] ClassTail[?Yield]
[+Default] class ClassTail[?Yield]
ClassExpression[Yield] :
class BindingIdentifier[?Yield]opt ClassTail[?Yield]
ClassTail[Yield] :
ClassHeritage[?Yield]opt { ClassBody[?Yield]opt }
ClassHeritage[Yield] :
extends LeftHandSideExpression[?Yield]
ClassBody[Yield] :
ClassElementList[?Yield]
ClassElementList[Yield] :
ClassElement[?Yield]
ClassElementList[?Yield] ClassElement[?Yield]
ClassElement[Yield] :
MethodDefinition[?Yield]
static MethodDefinition[?Yield]
;
NOTEA ClassBody is always strict code.

kajirikajirikajirikajiri

?YieldとYieldの違いはどこかに書いているのか?見た感じTsの?と同じだろう

kajirikajirikajirikajiri

書いてました上の方にextends構文ですね。なんで遺産?遺産を継承する?なんとなくわかるような
extends LeftHandSideExpression[?Yield]

kajirikajirikajirikajiri

ComputedPropertyContains
これちょいちょい出てくるよね?DeepLの翻訳でもいまいち意味が伝わってこない

kajirikajirikajirikajiri

productionsって生成みたいな意味なのね。

Static semantic rules that depend upon substructure generally do not look into class bodies except for PropertyName productions.

kajirikajirikajirikajiri

英語でforとかthatが一つだけなら読めるんだけど、for ... that ... withとかなると読めないな。。って思ってたけど、日本語でも〜の〜で〜ですみたいな事言われると解読に時間かかるし、一緒じゃね?って思えてきた。英語も慣れの問題だったのか。

kajirikajirikajirikajiri

最後のこれが何を表しているのか不明

Runtime Semantics: PrepareForTailCall ( )

kajirikajirikajirikajiri

tail position call。多分その場で呼び出すやつだと思うんだけど