fix: Add support for component syntax to code-path-analyzer #19875
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.
Prerequisites checklist
What is the purpose of this pull request? (put an "X" next to an item)
[ ] Documentation update
[x] Bug fix (template)
[ ] New rule (template)
[ ] Changes an existing rule (template)
[ ] Add autofix to a rule
[ ] Add a CLI option
[ ] Add something to the core
[ ] Other, please explain:
What changes did you make? (Give an overview)
This change updates
code-path-analyzer
to support component syntax, which is the primary method of writing React components at Meta.In particular, any rules which rely on
onCodePathStart
/onCodePathEnd
don't trigger correctly when using component syntax.For example, given the following components:
the
no-unreachable-loop
rule would only trigger on the 2nd component, but not the first one. This is because, for the first component, the start of the component's body is represented by aComponentDeclaration
node and so currently nothing is starting a new code path nor ending a code path. In the 2nd case, it triggers correctly because we have an additional function wrapper, and so theFunctionDeclaration
properly begins and ends the code path.With the changes from this PR, the first component now properly triggers the lint warning:

Is there anything you'd like reviewers to focus on?