Age | Commit message (Collapse) | Author |
|
|
|
|
|
* sa/dialyzer-list-spec/OTP-10740:
Report spec discrepancy on mismatching lists
|
|
|
|
* sa/dialyzer-record-field-type/OTP-10681:
Fix precision of record creation violation warnings
|
|
|
|
Packages were removed in 34d865a7dfdb33ee1e69fc28885f68baeeadfd98.
|
|
Commit 0c6fe3713b9e2d6497cbfe9275d1170cefb5f169 updated the spec for
sys:handle_system_msg/5.
|
|
|
|
This patch enables Dialyzer to detect cases where a function has a specification
for a return type containing some list with elements different than the ones
Dialyzer's own algorithm can infer e.g. a function specified to return [atom()]
when actually [[atom()]] is returned.
Previously Dialyzer remained silent, under normal operation, seeing that these
two types have the empty list as a common element, so they were not 'completely
irrelevant'.
|
|
Before patch Dialyzer was reporting all the fields that were not subtypes
of the declared ones as incorrect. The correct violations are for the fields
whose intersection with the declared ones is empty.
|
|
|
|
|
|
Analysis is not always able to find the variable labels and names for any kind
of arguments passed to the ets module functions.
|
|
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.
|
|
* 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.
|
|
|
|
* sa/dialyzer-contract-variables:
Correct handling of type names in contracts
Don't rewrite unchanged PLT
Fix crash related to contract checking
OTP-10083
|
|
Variables in contracts can either be true type variables or simply names for
types thet are defined in the 'when' clauses. Consider the following example:
-spec foo(X, Options) -> {ok, X} | error when Options :: [{atom(), boolean()}].
Here X is a true variable whereas Options is a name for a type that is defined
in the when clause.
'when' clauses may further use names on the right side. These were not treated
properly by Dialyzer and could be generalized to the term() type. This patch
fixes this issue.
A further issue is the treatment of true type variables, but this is left for
another patch.
|
|
When "collapsing" heads of list elements from a list's tail into the list's
head the new head can be different.
|
|
Conflicts:
lib/hipe/cerl/erl_bif_types.erl
|
|
This reverts commit d4667d383964c1550e0a91d64b674e84f6d07e3b.
This commit was included by mistake, the correct patch will
be merged from maint.
|
|
|
|
When spawning OS (unix) processes with erlang:open_port, store the
resulting unix pid so that it can be queried later on using
erlang:port_info/1,2.
|
|
|
|
Depending of the ordering of the functions during dataflow, a
function with an infinite loop might be identified as one that
always crashes. This is fixed now, by allowing restoration of
the infinitely-looping status.
|
|
When spawning OS (unix) processes with erlang:open_port, store the
resulting unix pid so that it can be queried later on using
erlang:port_info/1,2.
|
|
|
|
|
|
|
|
Dialyzer was not reporting unused functions with 0 arity. This was not
a real issue, until we found out that there could be cases where this
could lead to false warnings. This was the case in "no_local_return.erl".
|
|
|
|
|
|
|
|
Update preloaded erlang.beam
Removed stray error in dialyzer test suite - different error message
with the new specs.
|
|
|
|
|
|
|
|
|
|
Variable substitution was not generalizing any unknown variables.
|
|
|
|
|
|
The warning is about log_mf_h having a different spec for gen_event
callback init/1 than defined in gen_event.erl. log_mf_h allows return
value {error,Reason}, while gen_even only specifies successful return
values.
This commit add {error,Reason} as a valid return value to the
gen_event callback, since this is handled by the code.
|
|
Enable warnings by default, add two options for suppressing them,
fix warning formatting and update testsuites.
|
|
|