Age | Commit message (Collapse) | Author |
|
Dialyzer for a long time now has had hard-coded type information about
key functions of the 'file' and 'code' modules in 'erl_bif_types'.
Some of this information was not up-to-date according to the published
Erlang/OTP documentation, while some other part contained small errors.
Now that specs are available, this information should be moved to the
corresponding files, not be hard-coded in erl_bif_types.
This change takes out all information for the 'file' module and fixes
some small errors in type information for the 'code' module.
|
|
* ks/file_open-mode:
Add the {encoding, _} options to file:open/2's modes
|
|
- 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).
|
|
The change of taking out some hard-coded information about the file module
uncovered that the unfolding of recursive types was probably too shallow.
This has been fixed by unfolding it until a deeper limit (REC_TYPE_LIMIT).
While at erl_types.erl also did some cleanup changes and fixed an erroneous
io:format message.
|
|
Although the {encoding, encoding()} set of options is documented in
the manual page of the 'file' module, they do not appear in the Mode
description on that page nor in the mode() type declaration.
The patch adds this information in both the code of the module and
the documentation of the module.
To avoid duplication, the declaration of the encoding() type is added
to the 'unicode' module where it most probably belongs.
While at it, added a proper declaration for posix(), took out the
now superfluous information about the types of file:open/2 from the
erl_bif_types module, and corrected the return type of file:open/2
so that it corresponds to the published documentation.
|
|
* ks/ets-update-counter:
Fix type of ets:update_counter/3 to correspond with the documentation
|
|
|
|
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.
|
|
elib_malloc is an alternate memory allocator that
is no longer possible to build.
|
|
The code handling this BIF did not take into account that
the fun in the first argument that could return []
and therefore the return value of the BIF could also be [].
|
|
|
|
* ks/dialyzer-R14-fixes:
Various changes to dialyzer-related files for R14.
OTP-8699 ks/dialyzer-R14-fixes
Various changes to dialyzer-related files for R14.
- Dialyzer properly supports the new attribute -export_type and checks that
remote types only refer to exported types. A warning is produced if some
files/applications refer to types defined in modules which are neither in
the PLT nor in the analyzed applications.
- Support for detecting data races involving whereis/1 and unregister/1.
- More precise identification of the reason(s) why a record construction
violates the types declared for its fields.
- Fixed bug in the handling of the 'or' guard.
- Better handling of the erlang:element/2 BIF.
- Complete handling of Erlang BIFs.
|
|
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.
|
|
* bg/bif-types:
Add type information for erlang:garbage_collect_message_area/0
Add type information for erts_debug:* BIFs
Add type information for erlang:port_call/2
Add type information for erlang:display* BIFs
Add type information for the BIFs in the binary module
Introduce and use the t_endian() helper
Add type information for erlang:binary_part/2,3
Add type info for erlang:append/2 and erlang:subtract/2
Add type information for the erlang:adler32* BIFs
Add ppc64 return for erlang:system_info(hipe_architecture)
Test that all BIFs have known types
erl_types: Export is_erl_type/1
|
|
* commit 'bg/nif_error':
crypto: Add type specs for all documented functions
crypto: Use erlang:nif_error/1 to squelch false Dialyzer warnings
Add erlang:nif_error/1,2
|
|
erlang:garbage_collect_message_area/0 is undocumented and unsupported.
|
|
|
|
(erlang:port_call/2 is undocumented.)
|
|
|
|
|
|
|
|
|
|
These are aliases for '++'/2 and '--'/2.
|
|
While at it, introduce a new type for adler32 and crc32
and use it consistently within the file.
|
|
|
|
It is useful for testing.
|
|
|
|
|
|
|
|
|
|
A stub function that is supposed to be replaced by a NIF usually
calls erlang:error/1 to cause an exception if the NIF library
is not loaded. For example:
foo() ->
erlang:error(nif_not_loaded).
The problem is that although erlang:error/1 will normally never be
called, Dialyzer will think that any call to the function will fail
and thus generate false warnings. Adding a spec for the function
will not help because Dialyzer will not believe the spec.
Add erlang:nif_error/1,2 that work exactly like erlang:error/1,2.
Define the return types for both BIFs to be t_any().
erlang:nif_error is used like this:
-spec foo() -> binary().
foo() ->
erlang:nif_error(nif_not_loaded).
(The -spec is optional but highly recommended, since Dialyzer
otherwise has no chance to figure out the types.)
|
|
|
|
When defining macros the closing right parenthesis before the dot is now
mandatory.
|
|
|
|
|
|
* 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
|
|
* bg/erl_bif_types:
Add types for erts_debug:lock_counters/1
Add types for os:timestamp/0
Add types for erts_debug:dist_ext_to_term/2
erl_bif_types: add 'http_bin' as a valid packet option
OTP-8437: bg/erl_bif_types
|
|
erts_debug:lock_counters/1 is an undocumented BIF used by
the 'lcnt' module in the 'tools' application.
|
|
|
|
|
|
{packet,http_bin} is now a valid packet option for the
gen_tcp and inet modules.
|
|
|
|
|
|
environment after a number of bugs are fixed and some features
are added in the documentation build process.
- The arity calculation is updated.
- The module prefix used in the function names for bif's are
removed in the generated links so the links will look like
http://www.erlang.org/doc/man/erlang.html#append_element-2
instead of
http://www.erlang.org/doc/man/erlang.html#erlang:append_element-2
- Enhanced the menu positioning in the html documentation when a
new page is loaded.
- A number of corrections in the generation of man pages (thanks
to Sergei Golovan)
- Moved some man pages to more apropriate sections, pages in
section 4 moved to 5 and pages in 6 moved to 7.
- The legal notice is taken from the xml book file so OTP's
build process can be used for non OTP applications.
|
|
The on_load feature introduced in R13B03 adds two new internal
BIFs and extends the return value of erlang:load_module/2.
|
|
|