Added documentation to MethodDefinitionKind
@@ -729,10 +729,55 @@ pub enum PropertyDefinition {
SpreadObject(Node),
}
+/// Method definition kinds.
+///
+/// Starting with ECMAScript 2015, a shorter syntax for method definitions on objects initializers is introduced.
+/// It is a shorthand for a function assigned to the method's name.
+///
+/// More information:
+/// - [ECMAScript reference](https://tc39.es/ecma262/#prod-MethodDefinition)
+/// - [MDN documentation][mdn]
+///
+/// [mdn]: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Functions/Method_definitions
#[cfg_attr(feature = "serde-ast", derive(Serialize, Deserialize))]
#[derive(Clone, Debug, PartialEq, Trace, Finalize)]
pub enum MethodDefinitionKind {
+ /// The `get` syntax binds an object property to a function that will be called when that property is looked up.
+ ///
+ /// Sometimes it is desirable to allow access to a property that returns a dynamically computed value,
+ /// or you may want to reflect the status of an internal variable without requiring the use of explicit method calls.
+ /// In JavaScript, this can be accomplished with the use of a getter.
+ ///
+ /// It is not possible to simultaneously have a getter bound to a property and have that property actually hold a value,
+ /// although it is possible to use a getter and a setter in conjunction to create a type of pseudo-property.
+ ///
+ /// More information:
+ /// - [ECMAScript reference](https://tc39.es/ecma262/#prod-MethodDefinition)
+ /// - [MDN documentation][mdn]
+ ///
+ /// [mdn]: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Functions/get
Get,
+
+ /// The `set` syntax binds an object property to a function to be called when there is an attempt to set that property.
+ ///
+ /// In JavaScript, a setter can be used to execute a function whenever a specified property is attempted to be changed.
+ /// Setters are most often used in conjunction with getters to create a type of pseudo-property.
+ /// It is not possible to simultaneously have a setter on a property that holds an actual value.
+ ///
+ /// More information:
+ /// - [ECMAScript reference](https://tc39.es/ecma262/#prod-MethodDefinition)
+ /// - [MDN documentation][mdn]
+ ///
+ /// [mdn]: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Functions/set
Set,
+
+ /// Starting with ECMAScript 2015, you are able to define own methods in a shorter syntax, similar to the getters and setters.
+ ///
+ /// More information:
+ /// - [ECMAScript reference](https://tc39.es/ecma262/#prod-MethodDefinition)
+ /// - [MDN documentation][mdn]
+ ///
+ /// [mdn]: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Functions#Method_definition_syntax
Ordinary,
+ // TODO: support other method definition kinds, like `Generator`.
}
