dillon1000/react

Commit

[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`.
Browse files
Changed paths29 files
First-parent comparison
M compiler/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 Added
Patch

Files changed

Rendering syntax-highlighted changes…