dillon1000/react
Commit
Browse files [hir] infer reference effects for property call
--- This PR does not add inference for normal `CallExpression`s, since built-in functions for `Array` and `Object` are usually only valid if called with a correctly-typed `this`. If we want codegen to preserve source code semantics, Forget should only add inferred types it is confident about. This PR also adds `returnEffect` to FunctionSignature. `returnEffect = Store` if this function is known to always return a captured value from `receiver` or `args`.
Changed paths29 files
First-parent comparisoncompiler/forget/src/CompilerError.ts ModifiedM compiler/forget/src/HIR/HIR.ts ModifiedM compiler/forget/src/HIR/PrintHIR.ts ModifiedM compiler/forget/src/Inference/InferReferenceEffects.ts ModifiedA compiler/forget/src/__tests__/fixtures/compiler/array-at-closure.expect.md AddedA compiler/forget/src/__tests__/fixtures/compiler/array-at-closure.js AddedA compiler/forget/src/__tests__/fixtures/compiler/array-at-effect.expect.md AddedA compiler/forget/src/__tests__/fixtures/compiler/array-at-effect.js AddedA compiler/forget/src/__tests__/fixtures/compiler/array-at-mutate-after-capture.expect.md AddedA compiler/forget/src/__tests__/fixtures/compiler/array-at-mutate-after-capture.js AddedM compiler/forget/src/__tests__/fixtures/compiler/array-property-call.expect.md ModifiedA compiler/forget/src/__tests__/fixtures/compiler/array-push-effect.expect.md AddedA compiler/forget/src/__tests__/fixtures/compiler/array-push-effect.js AddedM compiler/forget/src/__tests__/fixtures/compiler/assignment-variations-complex-lvalue-array.expect.md ModifiedA compiler/forget/src/__tests__/fixtures/compiler/error.mutate-after-aliased-freeze.expect.md AddedA compiler/forget/src/__tests__/fixtures/compiler/error.mutate-after-aliased-freeze.js AddedA compiler/forget/src/__tests__/fixtures/compiler/error.mutate-after-freeze.expect.md AddedA compiler/forget/src/__tests__/fixtures/compiler/error.mutate-after-freeze.js AddedM compiler/forget/src/__tests__/fixtures/compiler/overlapping-scopes-within-block.expect.md ModifiedM compiler/forget/src/__tests__/fixtures/compiler/reactive-scope-grouping.expect.md ModifiedM compiler/forget/src/__tests__/fixtures/compiler/reassignment-conditional.expect.md ModifiedM compiler/forget/src/__tests__/fixtures/compiler/reassignment-conditional.js ModifiedA compiler/forget/src/__tests__/fixtures/hir/array-at-closure.expect.md AddedA compiler/forget/src/__tests__/fixtures/hir/array-at-closure.js AddedA compiler/forget/src/__tests__/fixtures/hir/array-at-effect.expect.md AddedA compiler/forget/src/__tests__/fixtures/hir/array-at-effect.js AddedM compiler/forget/src/__tests__/fixtures/hir/array-property-call.expect.md ModifiedA compiler/forget/src/__tests__/fixtures/hir/array-push-effect.expect.md AddedA compiler/forget/src/__tests__/fixtures/hir/array-push-effect.js AddedPatch
Files changed
Rendering syntax-highlighted changes…