diff --git a/crates/oxc_parser/src/js/class.rs b/crates/oxc_parser/src/js/class.rs index 590ffe5230..2893b54e98 100644 --- a/crates/oxc_parser/src/js/class.rs +++ b/crates/oxc_parser/src/js/class.rs @@ -775,7 +775,7 @@ impl<'a, C: Config> ParserImpl<'a, C> { pub(crate) fn check_getter(&mut self, function: &Function<'a>) { if let Some(type_parameters) = &function.type_parameters { self.error(diagnostics::accessor_cannot_have_type_parameters(type_parameters.span)); - } else if !function.params.items.is_empty() { + } else if function.params.parameters_count() != 0 { self.error(diagnostics::getter_parameters(function.params.span)); } } diff --git a/crates/oxc_parser/src/ts/types.rs b/crates/oxc_parser/src/ts/types.rs index 3d85f6a11b..31aae0d1a5 100644 --- a/crates/oxc_parser/src/ts/types.rs +++ b/crates/oxc_parser/src/ts/types.rs @@ -1423,7 +1423,7 @@ impl<'a, C: Config> ParserImpl<'a, C> { match kind { TSMethodSignatureKind::Get => { - if !params.items.is_empty() { + if params.parameters_count() != 0 { self.error(diagnostics::getter_parameters(params.span)); } } diff --git a/tasks/coverage/misc/fail/getter-rest-parameter.ts b/tasks/coverage/misc/fail/getter-rest-parameter.ts new file mode 100644 index 0000000000..d50b0aa679 --- /dev/null +++ b/tasks/coverage/misc/fail/getter-rest-parameter.ts @@ -0,0 +1,4 @@ +class C { get x(...args) {} } +({ get x(...args) {} }); +interface I { get x(...args: any[]): string } +type T = { get x(...args: any[]): string }; diff --git a/tasks/coverage/snapshots/lexer_misc.snap b/tasks/coverage/snapshots/lexer_misc.snap index e08617b31e..1160ec55ce 100644 --- a/tasks/coverage/snapshots/lexer_misc.snap +++ b/tasks/coverage/snapshots/lexer_misc.snap @@ -1,3 +1,3 @@ lexer_misc Summary: -AST Parsed : 273/273 (100.00%) -Positive Passed: 273/273 (100.00%) +AST Parsed : 274/274 (100.00%) +Positive Passed: 274/274 (100.00%) diff --git a/tasks/coverage/snapshots/parser_misc.snap b/tasks/coverage/snapshots/parser_misc.snap index 761fc677c8..b106535c0a 100644 --- a/tasks/coverage/snapshots/parser_misc.snap +++ b/tasks/coverage/snapshots/parser_misc.snap @@ -1,7 +1,7 @@ parser_misc Summary: AST Parsed : 86/86 (100.00%) Positive Passed: 86/86 (100.00%) -Negative Passed: 187/187 (100.00%) +Negative Passed: 188/188 (100.00%) × Cannot assign to 'arguments' in strict mode ╭─[misc/fail/arguments-eval-ambient.ts:2:13] @@ -455,6 +455,40 @@ Negative Passed: 187/187 (100.00%) · ── ╰──── + × A 'get' accessor must not have any formal parameters. + ╭─[misc/fail/getter-rest-parameter.ts:1:16] + 1 │ class C { get x(...args) {} } + · ───────── + 2 │ ({ get x(...args) {} }); + ╰──── + help: Remove these parameters here + + × A 'get' accessor must not have any formal parameters. + ╭─[misc/fail/getter-rest-parameter.ts:2:9] + 1 │ class C { get x(...args) {} } + 2 │ ({ get x(...args) {} }); + · ───────── + 3 │ interface I { get x(...args: any[]): string } + ╰──── + help: Remove these parameters here + + × A 'get' accessor must not have any formal parameters. + ╭─[misc/fail/getter-rest-parameter.ts:3:20] + 2 │ ({ get x(...args) {} }); + 3 │ interface I { get x(...args: any[]): string } + · ──────────────── + 4 │ type T = { get x(...args: any[]): string }; + ╰──── + help: Remove these parameters here + + × A 'get' accessor must not have any formal parameters. + ╭─[misc/fail/getter-rest-parameter.ts:4:17] + 3 │ interface I { get x(...args: any[]): string } + 4 │ type T = { get x(...args: any[]): string }; + · ──────────────── + ╰──── + help: Remove these parameters here + × HTML comments are not allowed in modules ╭─[misc/fail/html-comment-in-module.mjs:1:1] 1 │