feat(linter): implement eslint/accessor-pairs rule#16820
Merged
camc314 merged 11 commits intooxc-project:mainfrom Dec 14, 2025
Merged
feat(linter): implement eslint/accessor-pairs rule#16820camc314 merged 11 commits intooxc-project:mainfrom
camc314 merged 11 commits intooxc-project:mainfrom
Conversation
CodSpeed Performance ReportMerging #16820 will not alter performanceComparing Summary
Footnotes
|
Implements the ESLint `accessor-pairs` rule that enforces getter/setter pairs in objects, classes, and TypeScript interfaces. ## Features - Checks for setters without getters (default: enabled) - Checks for getters without setters (default: disabled) - Supports object literals, class bodies, and Object.defineProperty/defineProperties/create - TypeScript support for interfaces and type literals (enforceForTSTypes option) - Handles computed property keys using structural comparison - Separates static and instance members in classes ## Configuration options - `setWithoutGet` (default: true) - Report setters without getters - `getWithoutSet` (default: false) - Report getters without setters - `enforceForClassMembers` (default: true) - Apply to class members - `enforceForTSTypes` (default: false) - Apply to TypeScript interfaces/types Closes oxc-project#479 (partially)
- Use DefaultRuleConfig for cleaner configuration parsing - Use direct imports instead of inline paths (ClassElement) - Apply rustfmt formatting fixes
Add global reference check to avoid false positives when Object or Reflect is shadowed by a local variable. Uses ctx.scoping().find_binding() to verify the identifier refers to the global object.
- Use #[serde(default)] at struct level instead of per-field defaults - Remove default_true helper function - Add config = AccessorPairsConfig to declare_oxc_lint! macro - Add doc comments for config options
24a5a40 to
115137d
Compare
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Implements the ESLint
accessor-pairsrule that enforces getter/setter pairs in objects, classes, and TypeScript interfaces.Features
enforceForTSTypesoption)ContentEqConfiguration options
setWithoutGet(default: true) - Report setters without gettersgetWithoutSet(default: false) - Report getters without settersenforceForClassMembers(default: true) - Apply to class membersenforceForTSTypes(default: false) - Apply to TypeScript interfaces/typesTest plan
Related to #479 (ESLint core rules umbrella issue)