dillon1000/react
Commit
Browse files Lint rule to forbid access of cross-fork fields (#19679)
* Lint rule to forbid access of cross-fork fields We use a shared Fiber type for both reconciler forks (old and new). It is a superset of all the fields used by both forks. However, there are some fields that should only be used in the new fork, and others that should only be used in the old fork. Ideally we would enforce this with separate Flow types for each fork. The problem is that the Fiber type is accessed by some packages outside the reconciler (like React DOM), and get passed into the reconciler as arguments. So there's no way to fork the Fiber type without also forking the packages where they are used. FiberRoot has the same issue. Instead, I've added a lint rule that forbids cross-fork access of fork-specific fields. Fields that end in `_old` or `_new` are forbidden from being used inside the new or old fork respectively. Or you can specific custom fields using the ESLint plugin options. I used this plugin to find and remove references to the effect list in d2e914a. * Mark effect list fields as old And `subtreeTag` as new. I didn't mark `lastEffect` because that name is also used by the Hook type. Not super important; could rename to `lastEffect_old` but idk if it's worth the effort.
Changed paths4 files
First-parent comparison.eslintrc.js ModifiedA scripts/eslint-rules/__tests__/no-cross-fork-types-test.internal.js AddedM scripts/eslint-rules/index.js ModifiedA scripts/eslint-rules/no-cross-fork-types.js AddedPatch
Files changed
Rendering syntax-highlighted changes…