From 978d657feff7b7d8118c89865f260b31a2eeb43f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Hu=C3=A1ng=20J=C3=B9nli=C3=A0ng?= Date: Tue, 4 Apr 2023 14:53:11 -0400 Subject: [PATCH 1/3] add class-method-parameter-decorators --- .../class-method-parameter-decorators.md | 33 +++++++++++++++++++ 1 file changed, 33 insertions(+) create mode 100644 experimental/class-method-parameter-decorators.md diff --git a/experimental/class-method-parameter-decorators.md b/experimental/class-method-parameter-decorators.md new file mode 100644 index 0000000..10030ab --- /dev/null +++ b/experimental/class-method-parameter-decorators.md @@ -0,0 +1,33 @@ +# [Decorators for Class Method and Constructor Parameters][proposal-class-method-parameter-decorators] + +## Decorator + +```js +interface Decorator <: Node { + type: "Decorator"; + expression: Expression; +} +``` + +## FunctionExpression + +```js +interface FunctionExpression <: Function, Expression { + type: "FunctionExpression"; + params: [ Pattern | Parameter ]; +} +``` + +If `params` contains a `Parameter` node, its parent must be a `MethodDefinition` under a `ClassBody` node. + +## Parameter + +```js +interface Parameter <: Node { + type: "Parameter"; + parameter: Pattern; + decorators: [ Decorator ]; +} +``` + +[proposal-class-method-parameter-decorators]: https://github.com/tc39/proposal-class-method-parameter-decorators \ No newline at end of file From 8566f25ee984b8d883c56ad4d07babf9531e7232 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Hu=C3=A1ng=20J=C3=B9nli=C3=A0ng?= Date: Thu, 6 Apr 2023 17:19:02 -0400 Subject: [PATCH 2/3] Update experimental/class-method-parameter-decorators.md Co-authored-by: Nicholas C. Zakas --- experimental/class-method-parameter-decorators.md | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/experimental/class-method-parameter-decorators.md b/experimental/class-method-parameter-decorators.md index 10030ab..f026ca3 100644 --- a/experimental/class-method-parameter-decorators.md +++ b/experimental/class-method-parameter-decorators.md @@ -12,8 +12,7 @@ interface Decorator <: Node { ## FunctionExpression ```js -interface FunctionExpression <: Function, Expression { - type: "FunctionExpression"; +extend interface FunctionExpression { params: [ Pattern | Parameter ]; } ``` From e14b62c667307624b89573b59f793bb776fb04a6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Hu=C3=A1ng=20J=C3=B9nli=C3=A0ng?= Date: Thu, 6 Apr 2023 17:39:53 -0400 Subject: [PATCH 3/3] Update experimental/class-method-parameter-decorators.md --- experimental/class-method-parameter-decorators.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/experimental/class-method-parameter-decorators.md b/experimental/class-method-parameter-decorators.md index f026ca3..0b19acc 100644 --- a/experimental/class-method-parameter-decorators.md +++ b/experimental/class-method-parameter-decorators.md @@ -17,7 +17,7 @@ extend interface FunctionExpression { } ``` -If `params` contains a `Parameter` node, its parent must be a `MethodDefinition` under a `ClassBody` node. +If `params` contains a `Parameter` node, its parent must be a `MethodDefinition`. ## Parameter