fix(parser): validate accessor parameters in interface method signatures#18391
fix(parser): validate accessor parameters in interface method signatures#18391graphite-app[bot] merged 1 commit intomainfrom
Conversation
There was a problem hiding this comment.
Pull request overview
This PR adds validation for getter and setter accessor parameters in TypeScript interface method signatures, fixing 5 failing Babel conformance tests. The implementation ensures that getters have no parameters, setters have exactly one non-optional, non-rest parameter, and both getters and setters cannot declare 'this' parameters.
Changes:
- Added validation logic for interface method signature accessors with proper error reporting
- Added two new diagnostic functions for TS1051 (optional parameter) and TS2784 (this parameter) errors
- Updated test snapshots to reflect 5 additional passing negative test cases
Reviewed changes
Copilot reviewed 2 out of 3 changed files in this pull request and generated no comments.
| File | Description |
|---|---|
| crates/oxc_parser/src/ts/types.rs | Added comprehensive validation for getter/setter parameters in parse_getter_setter_signature_member, including checks for 'this' parameters, parameter count, optional parameters, and rest parameters |
| crates/oxc_parser/src/diagnostics.rs | Added two new diagnostic functions: setter_with_optional_parameter (TS1051) and accessor_cannot_have_this_parameter (TS2784) |
| tasks/coverage/snapshots/parser_babel.snap | Updated snapshot showing 5 additional passing tests and expected error outputs for the new validations |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
36883a7 to
9969e73
Compare
Merging this PR will not alter performance
Comparing Footnotes
|
Merge activity
|
…res (#18391) ## Summary Add validation for getter/setter accessor parameters in TypeScript interface method signatures: - A 'get' accessor cannot have parameters (TS1054) - A 'set' accessor must have exactly one parameter (TS1049) - A 'set' accessor cannot have an optional parameter (TS1051) - A 'set' accessor cannot have rest parameter (TS1053) - 'get' and 'set' accessors cannot declare 'this' parameters (TS2784) This fixes 5 failing Babel conformance tests: - `interface/get-set-invalid-optional-parameter` - `interface/get-set-invalid-parameters` - `interface/get-set-invalid-reset-parameter` - `interface/get-set-invalid-reset-parameter-babel-7` - `interface/get-set-invalid-this-parameters` 🤖 Generated with [Claude Code](https://claude.ai/code)
9969e73 to
c4132fb
Compare
### 💥 BREAKING CHANGES - 22dec6a semantic: [**BREAKING**] Remove `Scoping::scope_build_child_ids` and all related APIs (#18362) (Dunqing) - 30a4899 oxc: [**BREAKING**] Remove `CompilerInterface::semantic_child_scope_ids` (#18361) (Dunqing) - 777fc40 ast: [**BREAKING**] Add `Ident` type (#18354) (Boshen) - af0ca46 span: [**BREAKING**] Use `ModuleKind::CommonJS` for `SourceType::cjs()` (#18276) (sapphi-red) ### 🚀 Features - 0a02026 semantic: Add TS1499 code to diagnostic (#18557) (camc314) - 8b4618f parser: Add TS1500 code to diagnostic (#18547) (camc314) - 866b6b3 parser: Add TS1048 code to diagnostic (#18546) (camc314) - 1117c44 parser: Add TS1054 code to diagnostic (#18541) (camc314) - e4fcdde semantic: Add TS1053 code to diagnostic (#18539) (camc314) - bcbf396 semantic: Add TS1052 code to diagnostic (#18538) (camc314) - 8155edf semantic: Add TS1049 code to diagnostic (#18535) (camc314) - 51d3b3f parser: Add TS1502 code to diagnostic (#18534) (camc314) - 00854e8 semantic: Add TS2337 error code to super call diagnostic (#18531) (camc314) - 993fd2b parser: Parse unambiguous await with better error messages (#18480) (Boshen) - 8db0e78 linter/plugins: Handle BOMs (#18376) (overlookmotel) - 6ac09e2 linter/plugins: Support source text not being at start of buffer (#18375) (overlookmotel) - 2ef5647 ast: Add escape_raw parameter to template_element builders (#18121) (Boshen) ### 🐛 Bug Fixes - 74d0998 semantic: Update error msg for multiple `default` cases in switch stmt (#18526) (camc314) - c205b0d ast: Remove `ThisExpression` from `TSModuleReference` (#18489) (Boshen) - aed3669 parser: Parse HTML-like comments in unambiguous mode (#18442) (Boshen) - c4132fb parser: Validate accessor parameters in interface method signatures (#18391) (Boshen) - b0cd74d semantic: Allow `var` and `function` with same name in static blocks (#18358) (Boshen) - 6037995 semantic: Allow `new.target` in class field initializers (#18349) (Boshen) - 9a15c6a semantic: Do not rely on spans for node comparison in `Function::bind` (#18296) (overlookmotel) ### ⚡ Performance - 6b600c4 semantic: Skip parent lookup for function declarations in `Function::bind` (#18293) (overlookmotel) - c27ad2d semantic: Move check for function declaration out of `is_function_part_of_if_statement` (#18292) (overlookmotel) - 63eb89e semantic: Skip checking redeclarations for function expressions (#18291) (overlookmotel) - 7c12743 semantic: Skip checking unresolved exports in CommonJS files (#18250) (overlookmotel) - 2349031 allocator: Increase initial chunk size from 512B to 16KB (#18234) (Boshen) ### 📚 Documentation - 8ccd853 npm: Update package homepage URLs and add keywords (#18509) (Boshen) - 9b3165f napi/parser: Clarify when to use `parseAsync` vs `parseSync` (#18486) (Boshen) - 1b59f63 napi/parser: Correct typo in README (#18251) (overlookmotel) - 00ff75f mangler: Fix `top_level` option in example (#18233) (overlookmotel) - 2ddc073 semantic: Fix typo in comment (#18238) (overlookmotel) Co-authored-by: Boshen <1430279+Boshen@users.noreply.github.com>
Summary
Add validation for getter/setter accessor parameters in TypeScript interface method signatures:
This fixes 5 failing Babel conformance tests:
interface/get-set-invalid-optional-parameterinterface/get-set-invalid-parametersinterface/get-set-invalid-reset-parameterinterface/get-set-invalid-reset-parameter-babel-7interface/get-set-invalid-this-parameters🤖 Generated with Claude Code