Major milestones: * [x] Tracking of variables * [x] Type inference of patterns * [x] Type inference of guards * [x] Propagate types from guards to patterns * [x] Deal with multiple environments in orelse/andalso * [x] Deal with multiple environments in or/and * [x] Deal with multiple environments in when * [x] Inference of equality * [x] Type inference for function application and function definition * [x] Type inference of return types This is a more granular break down of what needs to be done: * [x] Map and struct updates * [x] Checking of all inlined functions from Kernel * [x] Checking of all inlined conversion functions * [x] Checking of `__STACKTRACE__` and raising functions * [x] Support for local calls * [x] Support for remote calls * [x] Support for `__info__`, `module_info`, and `behaviour_info` * [x] Typing of :erlang inlined functions * [x] `for` comprehensions * [x] generators * [x] :into * [x] :reduce * [x] Detect never matching clauses and patterns (cond, case, try) * [x] Improve pretty printing of negations * [x] Track precision * [x] case * [x] receive * [x] try * [x] definitions * [x] with * [x] `reduce` * [x] fun * [ ] Track conditional variables * [ ] case * [ ] cond * [ ] receive * [ ] try * [ ] with * [ ] `reduce` * [ ] fun * [ ] Reverse arrows * [ ] with * [x] case * [ ] cond * [ ] Inference of default args * [ ] Infer based on all loaded applications * [x] Unused clauses in private functions * [x] Tracking of mismatches in equality operators * [x] Tracking of structs in ordered comparison operators * [x] Move `compile.protocols` to parallel compiler * [x] Type checking of protocol dispatch * [x] Type checking of impls * [x] Storing of inferred types in .beam files * [x] Infer all Elixir modules at once This was extracted from #13227 and will be followed up by #15127 and #13881.
Major milestones:
This is a more granular break down of what needs to be done:
__STACKTRACE__and raising functions__info__,module_info, andbehaviour_infoforcomprehensionsreducereducecompile.protocolsto parallel compilerThis was extracted from #13227 and will be followed up by #15127 and #13881.