dillon1000/react

Commit

Infer closures as frozen if they dont capture mutable values

Fix for the previous issue, suggested by @gsathya: when we run 
InferReferenceEffects on the outer function we check each closure to see if it 
actually captured any mutable values. If it didn't, we can mark the closure as 
readonly and memoize it independently.
Browse files
Changed paths12 files
First-parent comparison
M compiler/forget/src/HIR/HIR.ts ModifiedM compiler/forget/src/Inference/InferReferenceEffects.ts ModifiedM compiler/forget/src/ReactiveScopes/PruneNonEscapingScopes.ts ModifiedM compiler/forget/src/__tests__/fixtures/compiler/_bug.computed-call-evaluation-order.expect.md ModifiedM compiler/forget/src/__tests__/fixtures/compiler/_bug.property-call-evaluation-order.expect.md ModifiedM compiler/forget/src/__tests__/fixtures/compiler/array-at-closure.expect.md ModifiedM compiler/forget/src/__tests__/fixtures/compiler/capturing-function-runs-inference.expect.md ModifiedM compiler/forget/src/__tests__/fixtures/compiler/function-declaration-simple.expect.md ModifiedM compiler/forget/src/__tests__/fixtures/compiler/inadvertent-mutability-readonly-lambda.expect.md ModifiedM compiler/forget/src/__tests__/fixtures/compiler/useEffect-nested-lambdas.expect.md ModifiedM compiler/forget/src/__tests__/fixtures/compiler/useEffect-nested-lambdas.js ModifiedM compiler/forget/src/__tests__/fixtures/compiler/useMemo-simple.expect.md Modified
Patch

Files changed

Rendering syntax-highlighted changes…