Fix invalid setter parse (#12076)
* Fix invalid `setter` parse * estree Co-authored-by: Brian Ng <bng412@gmail.com>
This commit is contained in:
@@ -1795,12 +1795,20 @@ export default class ExpressionParser extends LValParser {
|
||||
return method.kind === "get" ? 0 : 1;
|
||||
}
|
||||
|
||||
// This exists so we can override within the ESTree plugin
|
||||
getObjectOrClassMethodParams(method: N.ObjectMethod | N.ClassMethod) {
|
||||
return method.params;
|
||||
}
|
||||
|
||||
// get methods aren't allowed to have any parameters
|
||||
// set methods must have exactly 1 parameter which is not a rest parameter
|
||||
checkGetterSetterParams(method: N.ObjectMethod | N.ClassMethod): void {
|
||||
const paramCount = this.getGetterSetterExpectedParamCount(method);
|
||||
const params = this.getObjectOrClassMethodParams(method);
|
||||
|
||||
const start = method.start;
|
||||
if (method.params.length !== paramCount) {
|
||||
|
||||
if (params.length !== paramCount) {
|
||||
if (method.kind === "get") {
|
||||
this.raise(start, Errors.BadGetterArity);
|
||||
} else {
|
||||
@@ -1810,7 +1818,7 @@ export default class ExpressionParser extends LValParser {
|
||||
|
||||
if (
|
||||
method.kind === "set" &&
|
||||
method.params[method.params.length - 1].type === "RestElement"
|
||||
params[params.length - 1]?.type === "RestElement"
|
||||
) {
|
||||
this.raise(start, Errors.BadSetterRestParameter);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user