You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
The goal of this issue is to track the main tasks for the first milestone of set theoretic types: type inference of patterns and guards, followed by body checking.
Typing description:
Non-divisible types (integer, floats, pids, etc)
Dynamic
Atoms
Maps
Domain key-types
map_fetch
map_put
map_delete
map_keys
map_values
Tuples
Generalize :open / :closed
tuple_fetch
tuple_insert
tuple_delete
tuple_values
Lists
list_hd
list_tl
Functions
apply/2 and fun.(args...)
fn ... -> ... end
Capture
Unions of closures
Type inference and checking:
Tracking of variables
Type inference of patterns
Type inference of guards
Type inference of return types
Map and struct updates
Checking of all inlined functions from Kernel
Checking of all inlined conversion functions
Checking of __STACKTRACE__ and raising functions
Tuple module
Map module
Storing of inferred types in .beam files
Support for local calls
Support for remote calls
These are additional features not required for the first milestone:
Support for __info__, module_info, and behaviour_info
Typing of :erlang inlined functions
for comprehensions
with comprehensions
Detect never matching clauses and patterns (cond, case, receive, try)
Detect overlapping clauses (case, receive, try)
Exhaustiveness checks
Unused clauses in private functions
Tracking of mismatches in equality operators
Tracking of structs in ordered comparison operators
Support for macros
Move compile.protocols to parallel compiler
Type check private (local?) functions against the union of all call types
The goal of this issue is to track the main tasks for the first milestone of set theoretic types: type inference of patterns and guards, followed by body checking.
Typing description:
:open
/:closed
apply/2
andfun.(args...)
fn ... -> ... end
Type inference and checking:
__STACKTRACE__
and raising functionsThese are additional features not required for the first milestone:
__info__
,module_info
, andbehaviour_info
for
comprehensionswith
comprehensionscompile.protocols
to parallel compilerFor the second and third milestones, see #13881.
The text was updated successfully, but these errors were encountered: