aboutsummaryrefslogtreecommitdiffstats
path: root/lib/dialyzer/src
AgeCommit message (Collapse)Author
2012-12-20Report spec discrepancy on mismatching listsStavros Aronis
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'.
2012-11-23Update copyright yearsBjörn-Egil Dahlberg
2012-10-03Merge branch 'maint'Henrik Nord
2012-09-26Fix a crash in race condition detectionStavros Aronis
Analysis is not always able to find the variable labels and names for any kind of arguments passed to the ets module functions.
2012-09-26Remove old untested experimental extensionStavros Aronis
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.
2012-09-26Respect {plt_check,false} option when using dialyzer:run/1Stavros Aronis
2012-09-24dialyzer: Do not output warnings for unused funsHans 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.
2012-08-31Update copyright yearsBjörn-Egil Dahlberg
2012-08-24Stop a forgotten server processKostis Sagonas
Dialyzer forgot to stop a server process before finishing its analysis. This is a concurrency error detected by Concuerror.
2012-08-24Changes to fix warnings identified by running dialyzer -Wunmatched_returnsKostis Sagonas
2012-08-21Fix a bug in dialyzer_dataflowHans Bolinder
2012-08-21Add an undocumented option [--solver [v1 | v2]]Hans Bolinder
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.
2012-08-21Add an alternative implmentation of the typesignature solverHans Bolinder
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.
2012-06-08Merge branch 'lukas/otp/install_with_whitespace/OTP-10107' into maintLukas Larsson
* lukas/otp/install_with_whitespace/OTP-10107: Update to work with space in include path Update to work with whitespace in exec path
2012-06-05Update to work with whitespace in exec pathLukas Larsson
OTP-10106 OTP-10107
2012-06-01Bug fixes and improvements of dialyzer_typesigHans Bolinder
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.
2012-05-21Logfile-like statistics (enabled with --resources)Stavros Aronis
2012-05-21Anonymous SCCtoPID ETS tableStavros Aronis
2012-05-21Anonymous time serverStavros Aronis
2012-05-21Regulate all kinds of running workers up to the number of schedulersStavros Aronis
2012-05-21Relocate start and stop of timing serverStavros Aronis
2012-05-21Better names for callgaph ETS tablesStavros Aronis
2012-05-21Remove needless conversionStavros Aronis
The final version of the callgraph needs not be "reduced" for more efficient copying.
2012-05-21Fix types and specsStavros Aronis
2012-05-21Inline a function in dialyzer_workerStavros Aronis
2012-05-21Remove unused functionStavros Aronis
2012-05-21Change --time to --statistics and include more infoStavros Aronis
2012-05-21Better reflect side-effect based code in dialyzer_callgraphStavros Aronis
2012-05-21Code simplifications (tidier)Kostis Sagonas
2012-05-21More efficient calculation of module deps and postorderStavros Aronis
2012-05-21Solve big SCC constraints in parallelStavros Aronis
2012-05-21Coordinator is no longer a separate processStavros Aronis
2012-05-21All spawns are now spawn_linksStavros Aronis
2012-05-21Fix race in coordinatorStavros Aronis
2012-05-21Typesig and dataflow analyses no longer use ticket regulationStavros Aronis
2012-05-21Plain concatenation for typesig not-fixpoint listStavros Aronis
2012-05-21Ticket-based regulation of memory consumptionStavros Aronis
2012-05-21Infinity timeout for coordinator callsStavros Aronis
2012-05-21Worker PIDs are stored in an ETS tableStavros Aronis
2012-05-21Coordinator translates functions requiring further analysisStavros Aronis
2012-05-21Remove data prefetchingStavros Aronis
2012-05-21Fix specsStavros Aronis
2012-05-21Add read_concurrency option to some ETS tablesStavros Aronis
2012-05-21Avoid digraph_utils:condensation and ordering in typesigStavros Aronis
2012-05-21Simplify behaviour checking codeStavros Aronis
2012-05-21Add better timing labelsStavros Aronis
2012-05-21Parallel warning generationStavros Aronis
2012-05-21Add --time option to DialyzerStavros Aronis
2012-05-21Fix a spec in pltStavros Aronis
2012-05-21Keep mini plt for warnings passStavros Aronis