dillon1000/react
Commit
Browse files Replace InferReactiveIdentifiers w new inference
This PR adds one remaining feature to InferReactivePlaces: tracking indirections like LoadLocal, PropertyLoad, and similar. Consider something like: ``` // INPUT x.push(reactiveValue); // HIR t0 = LoadLocal 'x' t1 = PropertyLoad t0, 'push' t2 = LoadLocal 'reactiveValue' // reactive t3 = CallExpression mutate t0 . read t1 ( read t2 ) ``` Because a reactive value (`t2`) flows into `t0`, we want to record t0 as reactive as well. But that's just the temporary for `LoadLocal 'x'` - what's really happening is that from this point, `x` is reactive. InferReactiveIdentifiers tracked this, and now that logic is ported into InferReactivePlaces as well. That lets us remove all the actual inference from InferReactiveIdentifiers.
Changed paths5 files
First-parent comparisoncompiler/packages/babel-plugin-react-forget/src/HIR/PrintHIR.ts ModifiedM compiler/packages/babel-plugin-react-forget/src/Inference/InferReactivePlaces.ts ModifiedA compiler/packages/babel-plugin-react-forget/src/ReactiveScopes/CollectReactiveIdentifiers.ts AddedD compiler/packages/babel-plugin-react-forget/src/ReactiveScopes/InferReactiveIdentifiers.ts DeletedM compiler/packages/babel-plugin-react-forget/src/ReactiveScopes/PruneNonReactiveDependencies.ts ModifiedPatch
Files changed
Rendering syntax-highlighted changes…