diff options
author | Hans Bolinder <[email protected]> | 2012-04-05 14:30:03 +0200 |
---|---|---|
committer | Hans Bolinder <[email protected]> | 2012-06-01 14:57:46 +0200 |
commit | d4d65c2138cd1fa07185623e42d3b6c1393f086b (patch) | |
tree | 135e1760502e7e7d5e59fb65809d0a7e27c9949f /bootstrap | |
parent | 61b017b0e404f7ffbdbcb3106fcfb952dd5a6207 (diff) | |
download | otp-d4d65c2138cd1fa07185623e42d3b6c1393f086b.tar.gz otp-d4d65c2138cd1fa07185623e42d3b6c1393f086b.tar.bz2 otp-d4d65c2138cd1fa07185623e42d3b6c1393f086b.zip |
Bug fixes and improvements of dialyzer_typesig
1. Sometimes the solver forgot that a list had entered the error
state. The bug has been fixed by storing the atom 'error' in
MapDict. An example where the bug occurred is
io_lib_pretty:printable_bin(). The returned spec was weaker than it
should have been, but the fix-point loop hid the bug (in this case).
2. lists:partition() has been substituted for lists:splitwith() in
enumerate_constraints(). This fix together with 3. solves a
problem with long execution times for deeply nested fun:s. An
example which is now much faster is
lib/compiler/test/lc_SUITE:deeply_nested/1
(included as dialyzer/test/small_SUITE_data/src/deep_lc.erl).
3. The calculation of components in enumerate_constraints() has been
simplified and optimized. The important thing here is that _all_ of
the simple constraints have been saturated before entering the
complex part.
4. The pretty printing of constraints has been improved.
Diffstat (limited to 'bootstrap')
0 files changed, 0 insertions, 0 deletions