Age | Commit message (Collapse) | Author |
|
With silent rules, the output of make is less verbose and compilation
warnings are easier to spot. Silent rules are disabled by default and
can be disabled or enabled at will by make V=0 and make V=1.
|
|
The R15B03 release
|
|
|
|
|
|
|
|
|
|
Analysis is not always able to find the variable labels and names for any kind
of arguments passed to the ets module functions.
|
|
This extension allowed minimal detection of race conditions that were passing
through behaviour API calls, but had no tests in any suite and also caused a
crash in R15B02.
|
|
|
|
Originally reported by Joseph Wayne Norton, simplified testcase provided by Hans
Bolinder.
|
|
Dialyzer no longer outputs warnings for unused anonymous functions
("funs"). Warnings are still output for unused functions.
Funs in functions with -nowarn_unused_function attributes generated
warnings for unused functions. Unused list comprehensions also
generated warnings for unused funs.
|
|
The R15B02 release
|
|
|
|
Conflicts:
lib/diameter/autoconf/vxworks/sed.general
xcomp/README.md
|
|
|
|
|
|
Dialyzer forgot to stop a server process before finishing its analysis.
This is a concurrency error detected by Concuerror.
|
|
|
|
* maint:
Let t_inf() substitute any() for variables in a few more cases
Fix a bug in dialyzer_dataflow
|
|
|
|
* maint:
Add an undocumented option [--solver [v1 | v2]]
Add an alternative implmentation of the typesignature solver
|
|
The original implementation of the type signature solver is called 'v1'
and the newly introduced alternative implementation is called 'v2'.
It is possible to run just the one of the solvers (in case there is a
bug in for instance the v2 implementation) or both solvers
("--solver v1 --solver v2"). In the latter case an error is thrown if
the outcome differ.
|
|
An alternative implementation of the solver in dialyzer_typesig has
been introduced. It is faster than the original implementation.
Note: there is code for "loop detection". Where a loop occurs, the
evaluation is stopped and the current solution returned. This
behaviour is consistent with how the original implementation works.
There are a few known cases where the loop detection kicks in. They
are due to bugs which will hopefully be fixed in a near future.
|
|
* maint:
Update to work with space in include path
Update to work with whitespace in exec path
|
|
* lukas/otp/install_with_whitespace/OTP-10107:
Update to work with space in include path
Update to work with whitespace in exec path
|
|
OTP-10106
OTP-10107
|
|
* maint:
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.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
The final version of the callgraph needs not be "reduced" for more efficient
copying.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|