Age | Commit message (Collapse) | Author |
|
* Mention the option 'check_plt' among gui() options.
* No longer check a PLT twice when the analysis type is 'plt_check'.
* No longer raise a case_clause error when checking a PLT finds warnings.
Thanks to James Fish.
|
|
* aronisstav/dialyzer-inv-mult:
Fix a bug related to constraints generated for erlang:'*'/2
OTP-12725
|
|
For Rst = A1 * A2, typesig for erlang:'*'/2 was constraining the
arguments A1 and A2 in the 'reverse' direction by requiring that A2 is a
subtype of Rst div A1, unless A1 is a hard zero. This is not correct: if
for example both Rst and A1 are non_negative, such a constraint will
first force A1 to be non-zero for the division to go through and then
require A2 to be non_negative as non_negative div positive =
non_negative, always (see commited test).
In the fixed version, we are not constraining an argument if the other
operand *may* be zero.
|
|
|
|
Replace the undocumented option 'no_unknown' with the documented
option 'unknown'.
|
|
|
|
|
|
Thanks to James Fish for the bug report, and to Stavros Aronis for
fixing the bug.
|
|
The tests cannot be handled by earlier versions of Dialyzer.
|
|
In particular fix handling of records.
|
|
|
|
It is allowed in Erlang/OTP 17 to redefine the map() types. However,
Dialyzer did not handle local map() types correctly.
|
|
The -dialyzer() attribute can be used for suppressing warnings in a
module by specifying functions or warning options. It can also be used
for requesting warnings in a module.
|
|
|
|
* maint:
dialyzer: correct record updates
|
|
Correct a bug introduced in commit 8498a3.
|
|
After introducing maps for supervisor flags and child specs two tests
in behaviour_SUITE started failing:
behaviour_SUITE:custom_sup - failed because the type of the Period
(MaxT) property had been changed (corrected) from non_neg_integer() to
pos_integer() in the specification of the init callback in
supervisor.erl
behaviour_SUITE:supervisor_incorrect_return - same as above, plus the
introduction of #{} as possible value for the supervisor flags and
child_specs.
|
|
|
|
* fishcakez/dialyzer_beam_opts:
Use compile options when dialyzing beam files
|
|
* maint:
dialyzer, hipe: Fix a bug concerning is_record/2,3
|
|
Also fixed some cases where Dialyzer could crash due to reaching
system limits.
|
|
* maint:
dialyzer: fix a -Wunderspecs bug
|
|
Sometimes bogus warnings were generated for parametrized types.
Thanks to Krzesimir Sarnecki for pointing the bug out.
Also corrected warnings where the structure of opaque types were
exposed (thanks to Kostis for pointing the bug out).
|
|
Fetch the compile options from beam files, and use them when creating
core from the abstract code. Previously the options were ignored.
Test by Henrik Nordh
|
|
* maint:
hipe: Correct pretty-printing of bitstrings
|
|
|
|
* maint:
[dialyzer] Correct a doc bug introduced in 0b041238
[dialyzer] Use the option 'dialyzer' to control the compiler
[dialyzer] Fix handling of literal records
|
|
This ticket is about records in Erlang code, and when to check the
fields against the (optional) types given when defining records.
Dialyzer operates on the Erlang Core format, where there are no trace
of records. The fix implemented is a Real Hack:
Given the new option 'dialyzer' erl_expand_records marks the line
number of records in a way that is undone by v3_core, which in turn
inserts annotations that can be recognized by Dialyzer.
|
|
|
|
* egil/fix-maps-pretty-layout/OTP-11947:
dialyzer: Add Maps type mismatch test
hipe,compiler: Fix Map literals pretty printing
|
|
* maint:
hipe: fix a bug concerning typed record fields
|
|
|
|
* maint:
hipe: fix a bug concerning typed record fields
|
|
When checking typed record fields Dialyzer failed to handle
types containing remote types.
Thanks to Erik Søe Sørensen for reporting this bug.
|
|
The pre-defined types array(), dict(), digraph(), gb_set(), gb_tree(),
queue(), set(), and tid() have been removed.
|
|
|
|
|
|
Dialyzer sometimes output warnings like
Attempt to test for inequality between a term of type 'false' and a
term of opaque type 'false' | gb_set()
The reason was that erl_types:t_inf/3 when called from
erl_types:t_find_unknown_opaque() did not return 'false' but found the
mismatch. It should not return the mismatch unless the intersection is
empty ('none').
Thanks to Shayan Pooya [[email protected]] for pointing out the bug.
|
|
Two steps are needed to make this work:
1) Avoid generating the additional "apply_constraint" in dialyzer_typesig by
reporting every function argument as a potential external function (patch on
dialyzer_dep).
This will produce correct success typings for all functions in the test case,
but dataflow would miss the key warnings that help identify the bugs.
2) Patch dialyzer_dataflow so that it uses the "handle just external" path as a
fallback whenever there are any external calls. As a result, if we have info
about some paths, then:
a) use the old "handle known apply" code to mark these functions as used and
b) ignore the generalized result and use the one found by typesig for the
return value of the apply itself.
|
|
* aronisstav/hipe/opaque_fix:
Don't 'opaque-decorate' a success typing using an incompatible spec
|
|
Without this patch Dialyzer crashes when analyzing the supplemented test case.
|
|
|
|
Guard constraints used to be limited to a certain depth, which handled
mutually depending constraints safely, but also sometimes introduced
unnecessary generalizations.
This patch puts no explicit limit upon guard constraints (other than
those that already exist in erl_types), but breaks cycles by replacing
variables with the any() type.
In some cases the old method resulted in more warnings, but since the
limit was quite arbitrary and mutually depending guard constraints are
(very) rare, the new method should been seen as an improvement since
it handles cases that used to make Dialyzer loop or miss warnings.
|
|
Not (yet) documented.
|
|
UTF-8 is now the default encoding and should no longer be
specified. These have probably been merged from maint earlier and the
coding statement was missed.
lib/dialyzer/test/opaque_SUITE_data/src/modules/opaque_erl_scan.erl
lib/diameter/test/diameter_codec_test.erl
lib/ssh/test/ssh_unicode_SUITE.erl
|
|
|
|
* hb/dialyzer/fix_on_load/OTP-11743:
FIx handling of 'on_load' attribute
|
|
* hb/dialyzer/deprecate_types/OTP-10342:
Deprecate pre-defined built-in types
|
|
* schlagert/fix_basic_appups:
Dynamically configure typer_SUITE according to environment
Disable hipe_SUITE when environment doesn't support it
Make hipe non-upgradable by setting appup file empty
Fix missing module on hipe app file template
Add test suites performing app and appup file checks
Introduce appup test utility
Fix library application appup files
Fix non-library appup files according to issue #240
OTP-11744
|
|
Add the mentioned test suites for *all* library and touched
non-library applications.
|