aboutsummaryrefslogtreecommitdiffstats
path: root/lib/dialyzer
AgeCommit message (Collapse)Author
2014-11-24dialyzer: correct record updatesHans Bolinder
Correct a bug introduced in commit 8498a3.
2014-10-08dialyzer: do a minor re-factoringHans Bolinder
A minor re-factoring and generalization.
2014-10-08dialyzer: Ignore ERL_COMPILER_OPTIONS when compilingHans Bolinder
If, for instance, 'warn_unused_import' is present in ERL_COMPILER_OPTIONS then many files in Erlang/OTP (Kernel, STDLIB, ...) cannot be analyzed by Dialyzer since the option is not present when compiling Erlang/OTP, but 'warnings_as_errors' is. The case that ERL_COMPILER_OPTIONS contains 'warnings_as_errors' can only be handled by ignoring ERL_COMPILER_OPTIONS.
2014-10-08dialyzer: fix bug concerning compiler option 'warnings_as_errors'Hans Bolinder
A typical scenario: the type digraph() is used in R16 (compilation with the option 'warnings_as_errors' results in no warning); then the module is analyzed by a 17 Dialyzer where digraph() is obsolete, and since the warning is turned into an error Dialyzer fails to load the module. Thanks to Michael Truog.
2014-09-19Add note about known issue with -Wrace_conditionsMagnus Henoch
As noted on the erlang-bugs mailing list: http://erlang.org/pipermail/erlang-bugs/2014-July/004518.html
2014-09-15Update release notesErlang/OTP
2014-09-15Update version numbersErlang/OTP
2014-09-09Merge branch 'fishcakez/dialyzer_beam_opts' into maintHenrik Nord
* fishcakez/dialyzer_beam_opts: Use compile options when dialyzing beam files
2014-08-21dialyzer, hipe: Fix a bug concerning is_record/2,3Hans Bolinder
Also fixed some cases where Dialyzer could crash due to reaching system limits.
2014-08-20dialyzer: fix a -Wunderspecs bugHans Bolinder
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).
2014-07-16Use compile options when dialyzing beam filesJames Fish
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
2014-06-26hipe: Correct pretty-printing of bitstringsHans Bolinder
2014-06-19Prepare releaseErlang/OTP
2014-06-18Merge branch 'egil/fix-doc-links' into maintBjörn-Egil Dahlberg
* egil/fix-doc-links: doc: Fix broken links in Installation Guide doc: Fix broken links
2014-06-17doc: Fix broken linksBjörn-Egil Dahlberg
2014-06-17[dialyzer] Correct a doc bug introduced in 0b041238Hans Bolinder
2014-06-17[dialyzer] Use the option 'dialyzer' to control the compilerHans Bolinder
2014-06-17[dialyzer] Fix handling of literal recordsHans Bolinder
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.
2014-06-03[dialyzer] Correct docs about optionsHans Bolinder
2014-05-26Merge branch 'egil/fix-maps-pretty-layout/OTP-11947' into maintBjörn-Egil Dahlberg
* egil/fix-maps-pretty-layout/OTP-11947: dialyzer: Add Maps type mismatch test hipe,compiler: Fix Map literals pretty printing
2014-05-23hipe: fix a bug concerning typed record fieldsHans Bolinder
2014-05-13hipe: fix a bug concerning typed record fieldsHans Bolinder
When checking typed record fields Dialyzer failed to handle types containing remote types. Thanks to Erik Søe Sørensen for reporting this bug.
2014-04-29dialyzer: Add Maps type mismatch testBjörn-Egil Dahlberg
2014-04-17hipe, dialyzer: Fix a bug concerning opaque typesHans Bolinder
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.
2014-04-10Correct the name of a compiler option and fix the corresponding warningsKostis Sagonas
The option `warn_export_vars` was erroneously written as `warn_exported_vars` in Makefiles of dialyzer and typer. As a result, `erlc` was silent about such warnings (why on earth doesn't it complain on unrecognized options??) which were corrected as part of this change.
2014-04-07Update release notesErlang/OTP
2014-03-31Merge branch 'ks/hipe-is_map-support/OTP-11831'Björn-Egil Dahlberg
* ks/hipe-is_map-support/OTP-11831: Reinstate native code compilation of cerl and erl_types Take out no_native compiler attribute Add support for the compilation of the is_map/1 guard to native code Add 'map' to the set of icode_type_test()s Support the translation of the is_map BEAM instruction to Icode
2014-03-28Reinstate native code compilation of cerl and erl_typesKostis Sagonas
2014-03-28Report wall clock time instead of runtime when crashingKostis Sagonas
On SMPs, the time reports that Dialyzer produced when crashing were inaccurate. Fix this by using wall_clock rather than runtime.
2014-03-28Dialyzer now plays nicely with funs that come as "external" argumentsStavros Aronis
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.
2014-03-26Merge branch 'aronisstav/hipe/opaque_fix'Hans Bolinder
* aronisstav/hipe/opaque_fix: Don't 'opaque-decorate' a success typing using an incompatible spec
2014-03-24Don't 'opaque-decorate' a success typing using an incompatible specStavros Aronis
Without this patch Dialyzer crashes when analyzing the supplemented test case.
2014-03-24Correct some type declarationsKostis Sagonas
The types of some record fields were wrong. This file uses some module local format of race warnings and when the analysis is done transforms this format into the format of general dialyzer warnings. This change fixes the type declaration of the race_warning field of the #races{} record which was wrong. In addition, declared the type of the state field in some other record that, long ago, could not be declared since mutually recursive types were not supported by Dialyzer's analysis.
2014-03-24Use the ordsets:ordset(T) type instead of defining a local oneKostis Sagonas
2014-03-24stdlib: warn if the type map() is redefinedHans Bolinder
2014-03-21dialyzer: generalize guard constraints in a new wayHans Bolinder
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.
2014-03-20Introduce runtime_dependencies in .app filesRickard Green
Most dependencies introduced are exactly the dependencies to other applications found by xref. That is, there might be real dependencies missing. There might also be pure debug dependencies listed that probably should be removed. Each application has to be manually inspected in order to ensure that all real dependencies are listed. All dependencies introduced are to application versions used in OTP 17.0. This since the previously used version scheme wasn't designed for this, and in order to minimize the work of introducing the dependencies.
2014-03-20Introduce a new warning option, 'no_unknown'Hans Bolinder
Not (yet) documented.
2014-03-20Return warnings for unknown types and functions in Erlang ModeHans Bolinder
The warnings about unknown types and functions are now returned when calling Dialyzer from Erlang, in particular from an escript. When calling Dialyzer from the command line the warnings about unknown types and functions are output last as before; and when using the GUI the warnings are displayed in a pop-up window, as before.
2014-03-20Merge branch 'siri/master-cuddle-with-tests'Siri Hansen
* siri/master-cuddle-with-tests: Remove "coding: utf-8" from test files Change encoding for XML files to utf-8
2014-03-17dialyzer: Do not native compile modules with Maps codeBjörn-Egil Dahlberg
hipe:c/1 ignores '-compile(no_native).'
2014-03-17Remove "coding: utf-8" from test filesSiri Hansen
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
2014-03-04Improve message about deprecated built-in typesHans Bolinder
2014-02-24Merge branch 'fenollp/otp-edoc-usage-fixes'Henrik Nord
* fenollp/otp-edoc-usage-fixes: Fix edoc usage errors OTP-11702
2014-02-24Merge branch 'hb/dialyzer/fix_on_load/OTP-11743'Hans Bolinder
* hb/dialyzer/fix_on_load/OTP-11743: FIx handling of 'on_load' attribute
2014-02-24Merge branch 'hb/dialyzer/deprecate_types/OTP-10342'Hans Bolinder
* hb/dialyzer/deprecate_types/OTP-10342: Deprecate pre-defined built-in types
2014-02-24Merge branch 'schlagert/fix_basic_appups'Siri Hansen
* 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
2014-02-24Add test suites performing app and appup file checksTobias Schlager
Add the mentioned test suites for *all* library and touched non-library applications.
2014-02-24FIx handling of 'on_load' attributeHans Bolinder
[pull request from Kostis Sagonas] The handling of functions appearing in an 'on_load' attribute was wrong. Instead of considering the functions specified in these attributes as escaping from the module and performing a full analysis starting from them, the code just bypassed this analysis and only suppressed unused warning messages for these functions. This worked for most of the cases but resulted in functions (directly or indirectly) called by 'on_load' functions being reported as not called by the module. Such a case existed in the code of the 'crypto' application. To solve these issues the initialization code for functions escaping from the module was changed and the test for the on_load functionality was appropriately extended.
2014-02-23Deprecate pre-defined built-in typesHans Bolinder
The types array(), dict(), digraph(), gb_set(), gb_tree(), queue(), set(), and tid() have been deprecated. They will be removed in OTP 18.0. Instead the types array:array(), dict:dict(), digraph:graph(), gb_set:set(), gb_tree:tree(), queue:queue(), sets:set(), and ets:tid() can be used. (Note: it has always been necessary to use ets:tid().) It is allowed in OTP 17.0 to locally re-define the types array(), dict(), and so on. New types array:array/1, dict:dict/2, gb_sets:set/1, gb_trees:tree/2, queue:queue/1, and sets:set/1 have been added.