Age | Commit message (Collapse) | Author | |
---|---|---|---|
2016-06-09 | Remove support for '...' in Maps types | Hans Bolinder | |
It is possible that '...' is added later (OTP 20.0), but for now we are not sure of all details. | |||
2016-04-28 | dialyzer: Improve map pattern typesetting | Magnus Lång | |
2016-04-28 | dialyzer: Unfold cerl patterns containing maps | Magnus Lång | |
Dialyzer relies heavily on the assumption that the type of a literal that is used as a pattern is the type of any value that can match that pattern. For maps, that is not true, and it was causing bad analysis results. A new help function dialyzer_utils:refold_pattern/1 identifies maps in literal patterns, and unfolds and labels them, allowing them to be properly analysed. | |||
2016-04-28 | dialyzer_dataflow: Add map support | Magnus Lång | |
2016-04-28 | dialyzer_typesig: Add map support | Magnus Lång | |
2016-04-28 | erl_types: Add a map type representation | Magnus Lång | |
The type of a map is represented as a three-tuple {Pairs, DefaultKey, DefaultValue}. DefaultKey and DefaultValue are types. Pairs is a list of three-tuples {Key, mandatory | optional, Value}, where Key and Value are types. All types Key must be singleton, or "known at compile time," as the EEP put it. Examples: #{integer()=>list()} {[], integer(), list()} #{a=>char(), b=>atom()} {[{a, optional, char()}, {b, optional, atom()}], none(), none()} map() {[], any(), any()} A more formal description of the representation and its invariants can be found in erl_types.erl Special thanks to Daniel S. McCain (@dsmccain) that co-authored a very early version of this with me back in April 2014, although only the singleton type logic remains from that version. | |||
2016-02-01 | dialyzer: Remove t_parameterized_module/0 from erl_types | Stavros Aronis | |
Parameterized modules are no longer supported, so module() can only be an atom(). | |||
2016-01-14 | dialyzer: Update Maps tests | Björn-Egil Dahlberg | |