fix(linter/plugins): defineRule call createOnce lazily#14062
Merged
graphite-app[bot] merged 1 commit intomainfrom Sep 24, 2025
Merged
Conversation
Member
Author
How to use the Graphite Merge QueueAdd either label to this PR to merge it via the merge queue:
You must have a Graphite account in order to use the merge queue. Sign up using this link. An organization admin has enabled the Graphite Merge Queue in this repository. Please do not merge from GitHub as this will restart CI on PRs being processed by the merge queue. This stack of pull requests is managed by Graphite. Learn more about stacking. |
Member
Author
Merge activity
|
f3cd2f8 to
6717384
Compare
da57153 to
92e264d
Compare
This was referenced Sep 23, 2025
6717384 to
547b20e
Compare
92e264d to
b605733
Compare
Previously `defineRule`, when passed a rule with a `createOnce` method, would call `createOnce` immediately. When the rule is used in Oxlint, this resulted in `createOnce` being called twice. `createOnce` might do some fairly expensive set-up work, so we only want to call it once (as the name suggests!). Instead, `defineRule` don't call `createOnce` immediately. Call it the first time the `create` method which `defineRule` creates is called. This means that, when using Oxlint: 1. `createOnce` is only called once. 2. `defineRule` call is cheaper. i.e. the cost of making the rule ESLint-compatible is only paid when the user is running the rule in ESLint, not in Oxlint.
b605733 to
f2b3934
Compare
547b20e to
7bd01ed
Compare
Base automatically changed from
09-23-test_linter_plugins_test_returning_false_from_before_hook_skips_visitation_in_eslint
to
main
September 24, 2025 00:08
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.

Previously
defineRule, when passed a rule with acreateOncemethod, would callcreateOnceimmediately.When the rule is used in Oxlint, this resulted in
createOncebeing called twice.createOncemight do some fairly expensive set-up work, so we only want to call it once (as the name suggests!).Instead,
defineRuledon't callcreateOnceimmediately. Call it the first time thecreatemethod whichdefineRulecreates is called.This means that, when using Oxlint:
createOnceis only called once.defineRulecall is cheaper.i.e. the cost of making the rule ESLint-compatible is only paid when the user is running the rule in ESLint, not in Oxlint.