aboutsummaryrefslogtreecommitdiffstats
path: root/lib/dialyzer/src
AgeCommit message (Collapse)Author
2011-11-30Add file/line info in a particular Dialyzer crashStavros Aronis
2011-11-30Fix Dialyzer's warning for its own codeStavros Aronis
2011-11-30No warnings for underspecs with remote typesStavros Aronis
2011-11-18Wrap up behaviours patch for DialyzerStavros Aronis
Enable warnings by default, add two options for suppressing them, fix warning formatting and update testsuites.
2011-11-18Detection of callback-spec discrepanciesStavros Aronis
2011-11-18Allow none() as return value in callbacksStavros Aronis
2011-11-18Behaviour callback discrepancy detection for DialyzerStavros Aronis
2011-11-18Add lookup function for callbacksStavros Aronis
2011-11-18Store callbacks in codeserver and PLTStavros Aronis
2011-11-18Collect callback definitions during compilationStavros Aronis
2011-10-14Fix false warning about closure applicationStavros Aronis
Whenever a variable that could hold one of two or more possible closures was used in a particular application, the application was assumed to fail if ONE of the closures would fail in this application. This has been corrected to infer failing application if ALL possible closures would fail in the particular application.
2011-10-14Change category of 'might also return' warningsStavros Aronis
Dialyzer emits warnings like the following "The specification for _ states that the function might also return _ but the inferred return is _", which are actually underspecifications and not wrong type specifications. This patch makes sure that they are filed under the appropriate category.
2011-09-29Update copyright yearsBjörn-Egil Dahlberg
2011-09-27Fix bug in dataflowStavros Aronis
2011-08-30Add origin information to #fun_var closuresStavros Aronis
2011-08-29Suppress some warnings about generation of non-returning funsStavros Aronis
No warnings are emitted for funs that are non-returning when the function that generates them has a contract that specifies that it will return such a non-returning fun. The actual bug, reported by Tuncer Ayaz and simplified by Maria Christakis is included in Dialyzer's tests.
2011-08-29Fix infinite loop in dataflowStavros Aronis
2011-08-29Minor fix in dead codeStavros Aronis
2011-08-24Merge branch 'sa/dialyzer-server-loop-fix' into devHenrik Nord
* sa/dialyzer-server-loop-fix: Fix server loop detection OTP-9489
2011-08-17Fix dialyzer warning on default clause for binary comprehensionIvan Dubrov
Fixed dialyzer warning occuring on binary comprehension of form "<< <<>> || {A, B} <- [{a, b}] >>" caused by default clause inserted by compiler. Since this clause is different from the case of list comprehension, dialyzer fails to suppress that warning.
2011-08-01Fix bug when reporting unused functionsStavros Aronis
2011-05-23Fix crash when a contract range warning is emitted for a module already in pltStavros Aronis
Warnings about wrong contract ranges are post-processed to be displayed in the file/line that contains the contract, although they can also be emitted while processing other modules. For this relocation to succeed the module that contains the contract should be currently under analysis. If this is not the case the warning is displayed in the file/line of the call that proves the discrepancy in the contract.
2011-05-13Fix server loop detectionStavros Aronis
Dialyzer does not normally emit warnings for functions that implement non-terminating server loops. This detection failed when some of the elements in an SCC terminated normally (being for example list comprehensions or other generic anonymous functions that were included in the SCC). This patch fixes that.
2011-04-12Merge branch 'sa/dialyzer-invalid-spec-fix' into devHenrik Nord
* sa/dialyzer-invalid-spec-fix: Fix crash related with the contract blame assignment patch OTP-9219
2011-03-31Fix crash related with the contract blame assignment patchStavros Aronis
The relevant commit is 8342fcf5395133a19d647f2ace606af9b7fc1732. The old patch could emit warnings even for function that had a problematic spec even without refinement. This warnings would consume the relevant invalid spec warnings. This patch takes care of this by ensuring that normal invalid spec messages are emitted if the call that triggers the blame contract range warning is in another module.
2011-03-29Fix the name of an error functionMaria Christakis
2011-03-11Update copyright yearsBjörn-Egil Dahlberg
2011-03-11Merge branch 'sa/dialyzer-missing-spec' into devHenrik Nord
* sa/dialyzer-missing-spec: Add spec to dialyzer_cl_parse:get_lib_dir/1 OTP-9129
2011-03-11More descriptive warning when a tuple pattern matches a typed recordStavros Aronis
2011-03-11Better blame assignment when a spec is erroneousStavros Aronis
Applies to the specification of the return value of a function.
2011-03-11Generate better warnings for failing guardsStavros Aronis
2011-03-11Fix an erroneous warningKostis Sagonas
2011-03-11Refactoring so that a flat string() is returnedKostis Sagonas
2011-03-11Renamed error/1 function and added specsKostis Sagonas
2011-03-11Renamed error/1 function and added specsKostis Sagonas
2011-03-10Add spec to dialyzer_cl_parse:get_lib_dir/1Stavros Aronis
2011-03-09Merge branch 'aronisstav/dialyzer/dialyzer_tests/OTP-9116' into devLukas Larsson
* aronisstav/dialyzer/dialyzer_tests/OTP-9116: Increase timetrap of options1 suite Write output_plt even when plt_check is ok Create plt with erts, kernel and stdlib only Update test results as they currently appear in dev Major restructure of dialyzer's testsuite Add 'apps' option to the erlang interface Update spec file to work with new common test structure Test suites for Dialyzer
2011-03-04Merge branch 'sa/dialyzer-fix-guards' into devNiclas Axelsson
* sa/dialyzer-fix-guards: Fix warnings about guards containing not Fix errors in the handling of 'and'/'or' guards Cosmetic changes OTP-9099
2011-02-28Write output_plt even when plt_check is okStavros Aronis
2011-02-28Add 'apps' option to the erlang interfaceStavros Aronis
2011-01-20Add a --fullpath option to DialyzerKostis Sagonas
This change adds a --fullpath option to Dialyzer, which makes the warning messages contain the full path of the corresponding file. Original patch submitted by Magnus Henoch (legoscia) on 15/9/2010 and cooked to death in the 'pu' branch all this time. The patch was essentially correct and most of it has been used as is, but there have been some changes to make the code slightly prettier, avoid some code duplication, and add documentation to dialyzer's doc files and to its help message.
2011-01-18Fix warnings about guards containing notStavros Aronis
The wording of warnings about unsatisfiable guards that used 'not' was incorrect (the 'not' was not mentioned and it appeared as "Guard test is_atom(atom()) can never succeed").
2011-01-18Fix errors in the handling of 'and'/'or' guardsStavros Aronis
Apart from the obvious bug in the negative evaluation of an 'and' guard, Dialyzer handled dont_know cases rather single-mindedly towards the positive branch. This patch allows for negative results as well and does some clever guesses to narrow them down. It was constructed similarly to the handling of the 'not' guard.
2011-01-14Cosmetic changesStavros Aronis
2010-12-20Fix bug in the handling of 'or' by DialyzerStavros Aronis
Dialyzer had a minor issue when the arguments of the built-in function 'or' had the fixed value 'false'. This testcase should return no warnings: -module(false_false). -export([false_or/0]). false_or() -> false or false.
2010-12-06dialyzer: Update documentationMaria Christakis
2010-11-30dialyzer: Add support for multiple PLTsMaria Christakis
This new feature is able to take multiple PLTs, merge them during the start of the analysis, and work from there. This works provided that the PLTs do not have a module with the same name appearing in more than one PLT. The PLTs are created in the usual way: dialyzer --build_plt --output_plt PLT_1 FILES_TO_INCLUDE ... dialyzer --build_plt --output_plt PLT_N FILES_TO_INCLUDE and then can be used in either of the following ways: dialyzer FILES_TO_ANALYZE --plts PLT_1 ... PLT_N or: dialyzer --plts PLT_1 ... PLT_N -- FILES_TO_ANALYZE (Note the -- delimiter in the second case)
2010-11-26Fix typo in warningsStavros Aronis
2010-11-09dialyzer: Speed up analysis of nested list comprehensionsKostis Sagonas
Nested list comprehensions are translated into strongly connected funs but dialyzer ignored this. This meant that self-recursive analysis was normally executed for each fun and the whole fixpoint took some time to calculate. This patch adds every fun found in constraint generation to the SCC that is under analysis and then solves the SCC as a whole. Possible issues: - The returned dict contains more entries than usual. This triggered a bug in contract checking that is dealt with is this patch as well (dialyzer_contracts.erl). - As it's not easy to tell apart real fun SCCs from simple funs it performance might be hampered in the simple funs case. While doing these changes, also added and strengthened some specs. In addition, incorporated a modified patch by Ahmed Omar that fixes a bug in dialyzer_analysis_callgraph module that kept the files of only one selected directory in dialyzer's GUI.
2010-10-14dialyzer: Fix so warnings will be emitted for all public ETS tablesMaria Christakis