Age | Commit message (Collapse) | Author |
|
|
|
* ks/dialyzer-fixes:
dialyzer: Speed up analysis of nested list comprehensions
|
|
* ks/erl_types-fixes:
erl_types: Fix pretty rare crashes and an infinite loop
OTP-8942
|
|
- Fixed pretty rare crash when taking the infimum of two tuple_sets
(initial fix by Kostis Sagonas but then a better fix was provided
by Stavros Aronis and this is the one adopted).
- Fixed pretty rare crash when using parameterized types containing unbound
variables (thanks to Nicolas Trangez for reporting it).
- Fixed pretty rare infinite loop when refining the types of an SCC whose
functions all returned none() (thanks to Stavros Aronis).
|
|
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.
|
|
|
|
-Wno_opaque, -Wrace_conditions and -Wbehaviours are only documented
in the Dialyzer command line help text. Add them to the documentation.
|
|
|
|
* ks/fix-dialyzer_plt-spec:
Dialyzer: Fix erroneous type and use the same definition in two places
|
|
|
|
Changes which fix some problems reported by dialyzer users:
1. The handling of nested opaque types
2. The handling of remote types in record expressions used as types
While at it, updated dialyzer's RELEASE_NOTES to reflect these fixes
and did some cleanups to dialyzer_utils.erl so that it gets in sync
with dialyzer's main development branch.
|
|
|
|
|
|
|
|
Bumped version number and wrote RELEASE_NOTES.
Included all changes described in release notes.
Some spec-related changes to some files in lib/hipe/cerl.
|
|
In commit 1858cb81391d2bce29b4b7620574ca60128cebf7, erl_expand_records
started to optimize is_record/2 in guards by replacing it with
pattern matching (if possible).
Unfortunately, dialyzer will no longer see the code before the
optimization, so any warnings produced in code such as:
case ExprNotProducingRecord#rec{} of
X when is_record(X, rec, N) -> ...
will refer to the optimized code and not the source code,
which is confusing for the user.
Introduce the no_is_record_optimization option for turning off
the optimization and use it in dialyzer.
Reported-by: Kostis Sagonas
|
|
|
|
|
|
|
|
|
|
|
|
|
|
* ks/hipe:
dialyzer: Fix system_limit exception in race analysis
syntax_tools: Add types and specs for most exported functions
syntax_tools: Support the --enable-native-libs configure option
syntax_tools: Remove $Id$ annotations
dialyzer: New version for the R13B04 release
hipe: Miscellaneous additions
typer: New version for the R13B04 release
Fix a HiPE compiler bug evaluating an expression that throws system_limit
OTP-8460 ks/hipe
|
|
dialyzer_callgraph:
Avoid creation of too many ets tables by the race analysis.
dialyzer_dataflow:
The digraph returned by the race analysis should not be the
translated one.
|
|
|
|
|