From 50b1b7e47e79b34a0463fe7807b1bd42aad153c3 Mon Sep 17 00:00:00 2001 From: Mike Vitousek Date: Fri, 26 Jul 2024 15:52:18 -0700 Subject: [PATCH] Update base for Update on "[compiler] Add wrapper functions to wrap change-detection storage and loading from the memo cache" Summary: We may wish to perform some additional computation on values when they enter or exit the memo cache in change detection mode (e.g. make a deep copy, restore the original value). This builds support for doing so. In addition, it drops the "ForDebugging" part of the flag name and makes it compatible with "disableMemoization": if memoization is disabled, we implement that by not restoring the old version of the value unless we're in a source-level memo block. [ghstack-poisoned] --- .../src/ReactiveScopes/InferReactiveScopeVariables.ts | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/compiler/packages/babel-plugin-react-compiler/src/ReactiveScopes/InferReactiveScopeVariables.ts b/compiler/packages/babel-plugin-react-compiler/src/ReactiveScopes/InferReactiveScopeVariables.ts index 85589e6783..39403c2ad4 100644 --- a/compiler/packages/babel-plugin-react-compiler/src/ReactiveScopes/InferReactiveScopeVariables.ts +++ b/compiler/packages/babel-plugin-react-compiler/src/ReactiveScopes/InferReactiveScopeVariables.ts @@ -274,12 +274,14 @@ function mayHaveChanged(env: Environment, instruction: Instruction): boolean { case "GetIterator": case "IteratorNext": case "NextPropertyOf": - case "PropertyLoad": case "CallExpression": case "MethodCall": case "NewExpression": { return true; } + case "PropertyLoad": { + return instruction.value.property !== "current" + } case "LoadGlobal": { return ( instruction.value.binding.kind === "ModuleLocal" &&