Skip to content
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): rewrite react/require-render-return #3276

Merged

Conversation

mysteryven
Copy link
Member

@mysteryven mysteryven commented May 14, 2024

Closes: #3245

It's gone now, curious about why didn't have performance improvement.

CleanShot 2024-05-14 at 20 57 17@2x

This picture generated by running all the rules.

Copy link

graphite-app bot commented May 14, 2024

Your org has enabled the Graphite merge queue for merging into main

Add the label “merge” to the PR and Graphite will automatically add it to the merge queue when it’s ready to merge. Or use the label “hotfix” to add to the merge queue as a hot fix.

You must have a Graphite account and log in to Graphite in order to use the merge queue. Sign up using this link.

Copy link
Member Author

This stack of pull requests is managed by Graphite. Learn more about stacking.

Join @mysteryven and the rest of your teammates on Graphite Graphite

@github-actions github-actions bot added the A-linter Area - Linter label May 14, 2024
Copy link

codspeed-hq bot commented May 14, 2024

CodSpeed Performance Report

Merging #3276 will not alter performance

Comparing 05-14-refactor_linter_rewrite_react/require-render-return (db4ef3e) with main (a12ed0f)

Summary

✅ 27 untouched benchmarks

@mysteryven mysteryven force-pushed the 05-14-refactor_linter_rewrite_react/require-render-return branch 2 times, most recently from a2b989a to c414d12 Compare May 14, 2024 13:06
@mysteryven mysteryven marked this pull request as draft May 14, 2024 13:32
@Boshen
Copy link
Member

Boshen commented May 14, 2024

I don't get this ... https://github.com/jsx-eslint/eslint-plugin-react/blob/d97e3ed96afe77a56fdc6fc7bdec11c28bc256e2/lib/rules/require-render-return.js#L45-L47

Why does it need to save the component and then evaluate it on program exit?

@Boshen
Copy link
Member

Boshen commented May 14, 2024

If we are inside the render method, are we able to find explicit returns through the control flow graph 🤔 ? Do you wanna playaround with the cfg and see if there's anything in it that could help?

@mysteryven
Copy link
Member Author

After reviewing the hook rule, I have a poor concept of cfg, it will be fun to give it a try!

@Boshen Boshen marked this pull request as ready for review May 15, 2024 08:24
@Boshen Boshen force-pushed the 05-14-refactor_linter_rewrite_react/require-render-return branch from c414d12 to db4ef3e Compare May 15, 2024 08:24
@Boshen Boshen merged commit 6128171 into main May 15, 2024
31 checks passed
@Boshen Boshen deleted the 05-14-refactor_linter_rewrite_react/require-render-return branch May 15, 2024 08:40
Brooooooklyn pushed a commit to toeverything/AFFiNE that referenced this pull request May 16, 2024
[![Mend Renovate](https://app.renovatebot.com/images/banner.svg)](https://renovatebot.com)

This PR contains the following updates:

| Package | Change | Age | Adoption | Passing | Confidence |
|---|---|---|---|---|---|
| [oxlint](https://oxc-project.github.io) ([source](https://togithub.com/oxc-project/oxc/tree/HEAD/npm/oxlint)) | [`0.3.2` -> `0.3.5`](https://renovatebot.com/diffs/npm/oxlint/0.3.2/0.3.5) | [![age](https://developer.mend.io/api/mc/badges/age/npm/oxlint/0.3.5?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/oxlint/0.3.5?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/oxlint/0.3.2/0.3.5?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/oxlint/0.3.2/0.3.5?slim=true)](https://docs.renovatebot.com/merge-confidence/) |

---

### Release Notes

<details>
<summary>oxc-project/oxc (oxlint)</summary>

### [`v0.3.5`](https://togithub.com/oxc-project/oxc/releases/tag/oxlint_v0.3.5): oxlint v0.3.5

[Compare Source](https://togithub.com/oxc-project/oxc/compare/7193d75e9444ae8c2ba757b3bc64459abd0e128a...754d9f4c98aab052cf6b2756f7af12557042708d)

#### What's Changed

-   feat(linter): add use-isnan fixer for (in)equality operations by [@&#8203;DonIsaac](https://togithub.com/DonIsaac) in [oxc-project/oxc#3284
-   feat(linter/eslint): Implement fixer for unicode-bom rule by [@&#8203;jelly](https://togithub.com/jelly) in [oxc-project/oxc#3259
-   fix(linter/no-direct-mutation-state): false positive when class is declared inside a `CallExpression` by [@&#8203;Boshen](https://togithub.com/Boshen) in [oxc-project/oxc#3294
-   fix(parser): parse `DecoratorCallExpression` when `Arguments` contains `MemberExpression` by [@&#8203;Boshen](https://togithub.com/Boshen) in [oxc-project/oxc#3265
-   perf(ast): inline all `ASTBuilder` methods by [@&#8203;Boshen](https://togithub.com/Boshen) in [oxc-project/oxc#3295
-   perf(lexer): dedupe numeric separator check by [@&#8203;DonIsaac](https://togithub.com/DonIsaac) in [oxc-project/oxc#3283
-   perf(linter): rewrite react/require-render-return by [@&#8203;mysteryven](https://togithub.com/mysteryven) in [oxc-project/oxc#3276

#### New Contributors

-   [@&#8203;g-plane](https://togithub.com/g-plane) made their first contribution in [oxc-project/oxc#3268

**Full Changelog**: oxc-project/oxc@oxlint_v0.3.4...oxlint_v0.3.5

### [`v0.3.4`](https://togithub.com/oxc-project/oxc/releases/tag/oxlint_v0.3.4): oxlint v0.3.4

[Compare Source](https://togithub.com/oxc-project/oxc/compare/6149e49ef79a22004e36820c81afcb0c755fcc81...7193d75e9444ae8c2ba757b3bc64459abd0e128a)

#### What's Changed

-   [feat(linter): move react/rules_of_hooks to nursery](https://togithub.com/oxc-project/oxc/commit/6edcae86cda8922ea8f9e5eae91290018e1b1637)
-   feat(linter/eslint): Implement max-classes-per-file by [@&#8203;jelly](https://togithub.com/jelly) in [oxc-project/oxc#3241
-

**Full Changelog**: oxc-project/oxc@oxlint_v0.3.3...oxlint_v0.3.4

***

### From v0.3.3

#### What's Changed

##### Features

-   add `--symlinks` to allow symbolic walking by [@&#8203;Boshen](https://togithub.com/Boshen) in [oxc-project/oxc#3244
-   add `--format github` for github check annotation by [@&#8203;Boshen](https://togithub.com/Boshen) in [oxc-project/oxc#3191
-   change the category of all react-perf rules to perf by [@&#8203;Dunqing](https://togithub.com/Dunqing) in [oxc-project/oxc#3243
-   remove deprecated eslint v9 rules `no-return-await` and `no-mixed-operators` by [@&#8203;Boshen](https://togithub.com/Boshen) in [oxc-project/oxc#3188
-   move prefer-node-protocol to restriction by [@&#8203;Boshen](https://togithub.com/Boshen) in [oxc-project/oxc#3171

##### New Rules

-   react/rules-of-hooks by [@&#8203;rzvxa](https://togithub.com/rzvxa) in [oxc-project/oxc#3071
-   eslint/radix by [@&#8203;KubaJastrz](https://togithub.com/KubaJastrz) in [oxc-project/oxc#3167
-   eslint/no-new-native-nonconstructor by [@&#8203;Boshen](https://togithub.com/Boshen) in [oxc-project/oxc#3187
-   eslint/unicode-bom by [@&#8203;jelly](https://togithub.com/jelly) in [oxc-project/oxc#3239
-   eslint/no-empty-function rule by [@&#8203;jelly](https://togithub.com/jelly) in [oxc-project/oxc#3181
-   eslint-plugin-next/no-duplicate-head by [@&#8203;Boshen](https://togithub.com/Boshen) in [oxc-project/oxc#3174
-   eslint-plugin-next/no-page-custom-font by [@&#8203;Dunqing](https://togithub.com/Dunqing) in [oxc-project/oxc#3185
-   eslint-plugin-next/no-styled-jsx-in-document by [@&#8203;Dunqing](https://togithub.com/Dunqing) in [oxc-project/oxc#3184
-   unicorn/no-anonymous-default-export by [@&#8203;1zumii](https://togithub.com/1zumii) in [oxc-project/oxc#3220

##### Bug Fixes

-   improve `prefer-string-starts-ends-with` rule by [@&#8203;camc314](https://togithub.com/camc314) in [oxc-project/oxc#3176
-   import/export: improve multiple exports error message by [@&#8203;Dunqing](https://togithub.com/Dunqing) in [oxc-project/oxc#3160
-   import/named: handle `import { default as foo }` by [@&#8203;Boshen](https://togithub.com/Boshen) in [oxc-project/oxc#3255
-   shorten eslint/eqeqeq rule error message's span by [@&#8203;mysteryven](https://togithub.com/mysteryven) in [oxc-project/oxc#3193
-   fix(parser): correctly parse cls.fn<C> = x by [@&#8203;Dunqing](https://togithub.com/Dunqing) in [oxc-project/oxc#3208

#### New Contributors

-   [@&#8203;KubaJastrz](https://togithub.com/KubaJastrz) made their first contribution in [oxc-project/oxc#3167
-   [@&#8203;1zumii](https://togithub.com/1zumii) made their first contribution in [oxc-project/oxc#3220

**Full Changelog**: oxc-project/oxc@oxlint_v0.3.2...oxlint_v0.3.3

### [`v0.3.3`](https://togithub.com/oxc-project/oxc/releases/tag/oxlint_v0.3.3): oxlint v0.3.3

[Compare Source](https://togithub.com/oxc-project/oxc/compare/a7940868c6e66d16814ebef5c8dbbfd9b948a0cd...6149e49ef79a22004e36820c81afcb0c755fcc81)

#### What's Changed

##### Features

-   add `--symlinks` to allow symbolic walking by [@&#8203;Boshen](https://togithub.com/Boshen) in [oxc-project/oxc#3244
-   add `--format github` for github check annotation by [@&#8203;Boshen](https://togithub.com/Boshen) in [oxc-project/oxc#3191
-   change the category of all react-perf rules to perf by [@&#8203;Dunqing](https://togithub.com/Dunqing) in [oxc-project/oxc#3243
-   remove deprecated eslint v9 rules `no-return-await` and `no-mixed-operators` by [@&#8203;Boshen](https://togithub.com/Boshen) in [oxc-project/oxc#3188
-   move prefer-node-protocol to restriction by [@&#8203;Boshen](https://togithub.com/Boshen) in [oxc-project/oxc#3171

##### New Rules

-   react/rules-of-hooks by [@&#8203;rzvxa](https://togithub.com/rzvxa) in [oxc-project/oxc#3071
-   eslint/radix by [@&#8203;KubaJastrz](https://togithub.com/KubaJastrz) in [oxc-project/oxc#3167
-   eslint/no-new-native-nonconstructor by [@&#8203;Boshen](https://togithub.com/Boshen) in [oxc-project/oxc#3187
-   eslint/unicode-bom by [@&#8203;jelly](https://togithub.com/jelly) in [oxc-project/oxc#3239
-   eslint/no-empty-function rule by [@&#8203;jelly](https://togithub.com/jelly) in [oxc-project/oxc#3181
-   eslint-plugin-next/no-duplicate-head by [@&#8203;Boshen](https://togithub.com/Boshen) in [oxc-project/oxc#3174
-   eslint-plugin-next/no-page-custom-font by [@&#8203;Dunqing](https://togithub.com/Dunqing) in [oxc-project/oxc#3185
-   eslint-plugin-next/no-styled-jsx-in-document by [@&#8203;Dunqing](https://togithub.com/Dunqing) in [oxc-project/oxc#3184
-   unicorn/no-anonymous-default-export by [@&#8203;1zumii](https://togithub.com/1zumii) in [oxc-project/oxc#3220

##### Bug Fixes

-   improve `prefer-string-starts-ends-with` rule by [@&#8203;camc314](https://togithub.com/camc314) in [oxc-project/oxc#3176
-   import/export: improve multiple exports error message by [@&#8203;Dunqing](https://togithub.com/Dunqing) in [oxc-project/oxc#3160
-   import/named: handle `import { default as foo }` by [@&#8203;Boshen](https://togithub.com/Boshen) in [oxc-project/oxc#3255
-   shorten eslint/eqeqeq rule error message's span by [@&#8203;mysteryven](https://togithub.com/mysteryven) in [oxc-project/oxc#3193
-   fix(parser): correctly parse cls.fn<C> = x by [@&#8203;Dunqing](https://togithub.com/Dunqing) in [oxc-project/oxc#3208

#### New Contributors

-   [@&#8203;KubaJastrz](https://togithub.com/KubaJastrz) made their first contribution in [oxc-project/oxc#3167
-   [@&#8203;1zumii](https://togithub.com/1zumii) made their first contribution in [oxc-project/oxc#3220

**Full Changelog**: oxc-project/oxc@oxlint_v0.3.2...oxlint_v0.3.3

</details>

---

### Configuration

📅 **Schedule**: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined).

🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied.

♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.

🔕 **Ignore**: Close this PR and you won't be reminded about this update again.

---

 - [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check this box

---

This PR has been generated by [Mend Renovate](https://www.mend.io/free-developer-tools/renovate/). View repository job log [here](https://developer.mend.io/github/toeverything/AFFiNE).
<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiIzNy4zNTEuMiIsInVwZGF0ZWRJblZlciI6IjM3LjM2My41IiwidGFyZ2V0QnJhbmNoIjoiY2FuYXJ5IiwibGFiZWxzIjpbImRlcGVuZGVuY2llcyJdfQ==-->
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
A-linter Area - Linter
Projects
None yet
Development

Successfully merging this pull request may close these issues.

perf(linter): react/require_render_return
2 participants