fix: ignore stable deps in memo preservation#36429
fix: ignore stable deps in memo preservation#36429KurodaKayn wants to merge 1 commit intofacebook:mainfrom
Conversation
|
Hi @KurodaKayn! Thank you for your pull request and welcome to our community. Action RequiredIn order to merge any pull request (code, docs, etc.), we require contributors to sign our Contributor License Agreement, and we don't seem to have one on file for you. ProcessIn order for us to review and merge your suggested changes, please sign at https://code.facebook.com/cla. If you are contributing on behalf of someone else (eg your employer), the individual CLA may not be sufficient and your employer may need to sign the corporate CLA. Once the CLA is signed, our tooling will perform checks and validations. Afterwards, the pull request will be tagged with If you have received this in error or have any questions, please contact us at cla@meta.com. Thanks! |
|
Thank you for signing our Contributor License Agreement. We can now accept your code for this (and any) Meta Open Source project. Thanks! |
Summary
Fixes #35118.
ValidatePreservedManualMemoizationcould incorrectly reject an existinguseCallbackwhen the callback referenced auseStatesetter that was not listed in the manual dependency array.useStatesetters are stable values and generally do not need to be included in dependency arrays. However, in cases where the state value from the same destructuring pattern is later reassigned, the preserved manual memoization validation could infer the setter as a missing dependency and skip compilation with:This change skips non-reactive stable inferred dependencies with no property path during preserved manual memoization validation. This matches the treatment of stable values in dependency validation while still preserving checks for reactive values and property paths.
Added a regression fixture based on the repro from #35118.
How did you test this change?
Ran targeted compiler snap fixtures:
PATH="$HOME/.nvm/versions/node/v22.18.0/bin:$PATH" yarn workspace snap run snap --pattern preserve-use-callback-namespace-setter --sync