dillon1000/react
Commit
Browse files [typer] Be more conservative with function type inference
It's not safe to infer types of arguments and return values because Javascript is so polymorphic. Instead just infer the type of the callee for non methods. Interestingly, even this is not conservative enough for JavaScript because Proxy can also be callable. But I think for our use cases we will treat Proxy and Functions similarly (they're all just objects) so it's ok.
Changed paths27 files
First-parent comparisoncompiler/forget/src/HIR/HIR.ts ModifiedM compiler/forget/src/HIR/InferTypes.ts ModifiedM compiler/forget/src/__tests__/fixtures/hir/_bug_conditional-break-labeled.expect.md ModifiedM compiler/forget/src/__tests__/fixtures/hir/call.expect.md ModifiedM compiler/forget/src/__tests__/fixtures/hir/component.expect.md ModifiedM compiler/forget/src/__tests__/fixtures/hir/conditional-break.expect.md ModifiedM compiler/forget/src/__tests__/fixtures/hir/conditional-on-mutable.expect.md ModifiedM compiler/forget/src/__tests__/fixtures/hir/dependencies-outputs.expect.md ModifiedM compiler/forget/src/__tests__/fixtures/hir/dependencies.expect.md ModifiedM compiler/forget/src/__tests__/fixtures/hir/extend-scopes-if.expect.md ModifiedM compiler/forget/src/__tests__/fixtures/hir/inverted-if.expect.md ModifiedM compiler/forget/src/__tests__/fixtures/hir/mutable-lifetime-loops.expect.md ModifiedM compiler/forget/src/__tests__/fixtures/hir/overlapping-scopes-interleaved-by-terminal.expect.md ModifiedM compiler/forget/src/__tests__/fixtures/hir/overlapping-scopes-interleaved.expect.md ModifiedM compiler/forget/src/__tests__/fixtures/hir/overlapping-scopes-shadowed.expect.md ModifiedM compiler/forget/src/__tests__/fixtures/hir/overlapping-scopes-shadowing-within-block.expect.md ModifiedM compiler/forget/src/__tests__/fixtures/hir/overlapping-scopes-while.expect.md ModifiedM compiler/forget/src/__tests__/fixtures/hir/overlapping-scopes-within-block.expect.md ModifiedM compiler/forget/src/__tests__/fixtures/hir/reactive-scope-grouping.expect.md ModifiedM compiler/forget/src/__tests__/fixtures/hir/reactive-scopes-if.expect.md ModifiedM compiler/forget/src/__tests__/fixtures/hir/reactive-scopes.expect.md ModifiedM compiler/forget/src/__tests__/fixtures/hir/reassignment-conditional.expect.md ModifiedM compiler/forget/src/__tests__/fixtures/hir/reassignment-separate-scopes.expect.md ModifiedM compiler/forget/src/__tests__/fixtures/hir/reassignment.expect.md ModifiedM compiler/forget/src/__tests__/fixtures/hir/switch-non-final-default.expect.md ModifiedM compiler/forget/src/__tests__/fixtures/hir/switch.expect.md ModifiedM compiler/forget/src/__tests__/fixtures/hir/type-test-return-type-inference.expect.md ModifiedPatch
Files changed
Rendering syntax-highlighted changes…