-
-
Notifications
You must be signed in to change notification settings - Fork 727
refactor(linter): remove AstKind for SimpleAssignmentTarget #12401
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
refactor(linter): remove AstKind for SimpleAssignmentTarget #12401
Conversation
CodSpeed Instrumentation Performance ReportMerging #12401 will not alter performanceComparing Summary
|
|
I thought I saw a minute ago a diff in snapshots, a lint rule erroring on the That looked like a pattern that the rule maybe should be catching - the |
@overlookmotel I think you're talking about this. The snapshot update was reverted once I had applied the change that you suggested the other day, which was to remove the My understanding was that the bug from my incomplete changes had caused the reporting in the snapshot to change, but it's very possible that I could be missing something here. |
Ah ha! The diff I saw was those same lines but all in green. But, as you've explained, that was reverting a previous change. So we're all good. Sorry, my question was a complete red herring. |
All good, thanks for looking out! My goal has been to get the tests passing without changing any of the snapshots. Ideally this refactor should not influence the functionality for end users. To that end, once I get everything working, I want to also take a few cycles to look for opportunities to simplify / minimize my changes. I'll likely leave comments on my PR on anything I'm not sure about. |
Thank you for your very thorough approach. It's really appreciated. FYI: What we've noticed while making other changes to This is our bad - other parts of Oxc have very thorough test coverage, which we can lean on when making changes, but the linter is less comprehensively tested. We might want to improve that (oxc-project/backlog#170), but right now this is where we are. However, figuring out the logic of each lint rule and trying to imagine all possible edge cases is both difficult and onerous, and tricky if you're not familiar with what the lint rules do. If you don't have time to delve that deep, please feel free to leave this until review. Another side note: If you come across any unrelated bugs you want to fix, or edge cases that you want to add tests for, it'd be ideal to do that in separate PRs. This PR has quite a large diff, so it'd be preferable for ease of review if it's 100% refactor. Hope this is useful background. |
f57afc9 to
752b155
Compare
|
note to self, we need to fix all of the ecosystem CI failures before merging https://github.com/oxc-project/oxlint-ecosystem-ci/actions/runs/16538642569 (excluding oven-sh/bun as it's a diff issue) |
|
Another false positive: |
4c58946 to
07b57fb
Compare
…njs to prevent snapshot change
07b57fb to
7e34ef3
Compare
I'm curious - were there additional test cases in the main branch that also needed to be covered here? I'm not sure I follow the changes that were made. |
|
i should hopefully have fixed them all. we have an ecosystem CI, which i just ran in this branch to flag these additional errors. that's the link to the workflow above |
## [1.9.0] - 2025-07-29 ### 💥 BREAKING CHANGES - 5a7e72a semantic: [**BREAKING**] `AstNodes::program` return `&Program` not `Option<&Program>` (#12515) (overlookmotel) ### 🚀 Features - 3489ce0 linter: Add `typescript-eslint/explicit-module-boundary-types` (#12402) (Don Isaac) ### 🐛 Bug Fixes - 0fd3e87 linter: Default options for `eslint/yoda` (#12540) (Sysix) - 724776f linter: Default options for `unicorn/switch-case-braces` (#12539) (Sysix) - fda45ea linter/promise/prefer-await-to-callbacks: False positive for `addEventListener` (#12537) (Copilot) - 1a710e3 linter/array-type: Fix more false negatives (#12501) (camc314) - 2b5bf98 linter: Consistent-function-scoping false positive with hoisted var declarations (#12523) (camc314) - cc19c8b vscode: Fix statusbar icon order (#12544) (Christian Fehmer) - 209d006 linter: Parse vue lang attribute without quotes (#12517) (Sysix) - 85a34ce linter/array-type: False negative with arrays in generic args (#12500) (camc314) - 98c1fbb linter/require-await: Improve async keyword detection in get_delete_span function (#12494) (camc314) - 7c75dba linter/require-await: Improve span calculation for object properties (#12490) (camc314) - 2b261cf linter/exhaustive-deps: False positive in exhaustive deps (#12471) (camc314) ### 🚜 Refactor - a696227 linter: Remove AstKind for SimpleAssignmentTarget (#12401) (Tyler Earls) - 7af38e1 napi/oxlint: Simplify `ExternalLinterLintFileCb` type (#12572) (overlookmotel) - 543fd53 napi/oxlint: Rename `run` to `lintFile` (#12567) (overlookmotel) - 0179c86 napi/oxlint: Reverse args of `ExternalLinter::new` (#12566) (overlookmotel) - 491c401 linter: Remove `#[must_use]` from `LintService::with_*` methods (#12560) (overlookmotel) - d44b0ac linter: Remove `Runner` trait (#12559) (overlookmotel) - bea652f linter: Add `vue` and `regex` to `BuiltinLintPlugins` (#12542) (Sysix) - aa9dd21 linter/no-eval: Get source type from `Semantic` (#12514) (overlookmotel) - 5c33fc7 diagnostics: Implement `Eq` and `Ord` for `InfoPosition` (#12505) (overlookmotel) - 8c8c8bc napi/oxlint: Diagnostics communicate which rule via rule index, not rule ID (#12482) (overlookmotel) - e2d9b4d fixer: Add Debug trait to PossibleFixes and Message structs (#12493) (camc314) - f0b1f0d napi/oxlint, napi/parser: Remove source length from `RawTransferMetadata` (#12483) (overlookmotel) - 7e4959a napi/oxlint: Rename `rules` to `ruleNames` (#12477) (overlookmotel) - 7a0da04 diagnostics: Remove Option wrapper from MPSC channel and sender field (#12467) (camc314) ### 🧪 Testing - 56468c7 linter/no-unused-private-class-members: Add more test cases (#12569) (camc314) - 191a164 linter/no-unused-private-class-members: Add more test cases (#12563) (camc314) - d31adcf linter: Improve sorting diagnostics (#12504) (overlookmotel) Co-authored-by: camc314 <18101008+camc314@users.noreply.github.com>
#12596) The removal of `AstKind::SimpleAssignmentTarget` (#12401) has made it harder to determine if a node is being assigned to, because you can no longer check if the parent `AstNode` is `AstKind::SimpleAssignmentTarget`. Add a method to `MemberExpressionKind` which determines whether the parent assigns to it. Covers all possible positions where a `MemberExpression` gets assigned to - `x.y = value`, `x.y++`, `[x.y] = arr` etc. We can use this method to avoid repeating this complicated logic in many places.
Part of #11490
Progress Checklist:
SimpleAssignmentTargetfrom theENUMS_WHITE_LISToxc_semantic,oxc_formatter,oxc_ast, andoxc_manglerSnapshot updates:
SimpleAssignmentTarget, the node ids in several snapshots were updated, which is expected since the generated node ids were changed.