dillon1000/react

Commit

Treat setState as non-reactive

Updates PruneNonReactiveDependencies to treat setState functions as 
non-reactive, since we know they have a stable identity. This is based on type 
inference and our recently added definitions for useState and its return type, 
so it's conservative and will only work when our inference can prove that the 
scope dependency has the SetState type. 

Note that this approach is simple and has limitations, notably the fact that the 
setState is non-reactive doesn't propagate. But it's simple, trivially correct, 
and already improves codegen somewhat, so i figured it's worth landing for now. 

## Test Plan 

Tested on internal app
Browse files
Changed paths10 files
First-parent comparison
M compiler/forget/src/HIR/HIR.ts ModifiedM compiler/forget/src/ReactiveScopes/PrintReactiveFunction.ts ModifiedM compiler/forget/src/ReactiveScopes/PruneNonReactiveDependencies.ts ModifiedM compiler/forget/src/__tests__/fixtures/compiler/concise-arrow-expr.expect.md ModifiedM compiler/forget/src/__tests__/fixtures/compiler/controlled-input.expect.md ModifiedM compiler/forget/src/__tests__/fixtures/compiler/disable-jsx-memoization.expect.md ModifiedM compiler/forget/src/__tests__/fixtures/compiler/inadvertent-mutability-readonly-lambda.expect.md ModifiedM compiler/forget/src/__tests__/fixtures/compiler/invalid-freeze-mutable-lambda.expect.md ModifiedM compiler/forget/src/__tests__/fixtures/compiler/nested-function-shadowed-identifiers.expect.md ModifiedM compiler/forget/src/__tests__/fixtures/compiler/use-callback-simple.expect.md Modified
Patch

Files changed

Rendering syntax-highlighted changes…