aboutsummaryrefslogtreecommitdiffstats
path: root/erts/doc
AgeCommit message (Collapse)Author
2015-10-08Take out automatic insertion of 'undefined' from typed record fieldsKostis Sagonas
Background ----------- In record fields with a type declaration but without an initializer, the Erlang parser inserted automatically the singleton type 'undefined' to the list of declared types, if that value was not present there. I.e. the record declaration: -record(rec, {f1 :: float(), f2 = 42 :: integer(), f3 :: some_mod:some_typ()}). was translated by the parser to: -record(rec, {f1 :: float() | 'undefined', f2 = 42 :: integer(), f3 :: some_mod:some_typ() | 'undefined'}). The rationale for this was that creation of a "dummy" #rec{} record should not result in a warning from dialyzer that e.g. the implicit initialization of the #rec.f1 field violates its type declaration. Problems --------- This seemingly innocent action has some unforeseen consequences. For starters, there is no way for programmers to declare that e.g. only floats make sense for the f1 field of #rec{} records when there is no `obvious' default initializer for this field. (This also affects tools like PropEr that use these declarations produced by the Erlang parser to generate random instances of records for testing purposes.) It also means that dialyzer does not warn if e.g. an is_atom/1 test or something more exotic like an atom_to_list/1 call is performed on the value of the f1 field. Similarly, there is no way to extend dialyzer to warn if it finds record constructions where f1 is not initialized to some float. Last but not least, it is semantically problematic when the type of the field is an opaque type: creating a union of an opaque and a structured type is very problematic for analysis because it fundamentally breaks the opacity of the term at that point. Change ------- To solve these problems the parser will not automatically insert the 'undefined' value anymore; instead the user has the option to choose the places where this value makes sense (for the field) and where it does not and insert the | 'undefined' there manually. Consequences of this change ---------------------------- This change means that dialyzer will issue a warning for all places where records with uninitialized fields are created and those fields have a declared type that is incompatible with 'undefined' (e.g. float()). This warning can be suppressed easily by adding | 'undefined' to the type of this field. This also adds documentation that the user really intends to create records where this field is uninitialized.
2015-10-06Merge branch 'maint'Sverker Eriksson
2015-10-06Merge branch 'sverk/erts/doc-review' into maintSverker Eriksson
* sverk/erts/doc-review: erts: Spell-check erlang.xml erts: Review newer additions to erlang.xml erts: Review module erlang docs erts: Update module erlang docs erts: Review time correction docs erts: Update erts time correction docs
2015-10-05erts: Spell-check erlang.xmlSverker Eriksson
2015-10-02Merge branch 'maint'Zandra
2015-10-02Merge branch 'essen/missing-behavior-absform' into maintZandra
* essen/missing-behavior-absform: Add missing behavior/behaviours to absform docs
2015-10-01erts: Review newer additions to erlang.xmlSverker Eriksson
Trying to adopt same style as done by xsipewe in e17e236cd1661bc for later additions.
2015-10-01erts: Review module erlang docsSverker Eriksson
2015-10-01erts: Update module erlang docsxsipewe
Rebased 6ac77046b05cd3cb7b117 on OTP-18.1 Conflicts: erts/doc/src/erlang.xml
2015-10-01erts: Review time correction docsSverker Eriksson
2015-10-01erts: Update erts time correction docsxsipewe
2015-10-01Merge branch 'maint'Henrik Nord
2015-10-01Merge branch 'maint-17' into maintHenrik Nord
Conflicts: OTP_VERSION erts/doc/src/notes.xml erts/vsn.mk lib/debugger/doc/src/notes.xml lib/debugger/vsn.mk otp_versions.table
2015-09-30Merge branch 'maint'Henrik Nord
2015-09-30Merge branch 'c-rack/fix-list_to_bitstring-example' into maintHenrik Nord
* c-rack/fix-list_to_bitstring-example: Typos in documentation example of list_to_bitstring/1 OTP-13017
2015-09-23Merge tag 'OTP-18.1'Henrik Nord
=== OTP-18.1 === Changed Applications: - compiler-6.0.1 - crypto-3.6.1 - debugger-4.1.1 - dialyzer-2.8.1 - diameter-1.11 - erts-7.1 - eunit-2.2.11 - hipe-3.13 - inets-6.0.1 - kernel-4.1 - mnesia-4.13.1 - odbc-2.11.1 - public_key-1.0.1 - sasl-2.6 - ssh-4.1 - ssl-7.1 - stdlib-2.6 - tools-2.8.1 - wx-1.5 Unchanged Applications: - asn1-4.0 - common_test-1.11 - cosEvent-2.2 - cosEventDomain-1.2 - cosFileTransfer-1.2 - cosNotification-1.2 - cosProperty-1.2 - cosTime-1.2 - cosTransactions-1.3 - edoc-0.7.17 - eldap-1.2 - erl_docgen-0.4 - erl_interface-3.8 - et-1.5.1 - gs-1.6 - ic-4.4 - jinterface-1.6 - megaco-3.18 - observer-2.1 - orber-3.8 - os_mon-2.4 - ose-1.1 - otp_mibs-1.1 - parsetools-2.1 - percept-0.8.11 - reltool-0.7 - runtime_tools-1.9.1 - snmp-5.2 - syntax_tools-1.7 - test_server-3.9 - typer-0.9.9 - webtool-0.9 - xmerl-1.3.8 Conflicts: OTP_VERSION erts/vsn.mk
2015-09-21Prepare releaseErlang/OTP
2015-09-15Typos in documentation example of list_to_bitstring/1Constantin Rack
2015-09-07Prepare releaseErlang/OTP
2015-08-28Add missing behavior/behaviours to absform docsLoïc Hoguin
2015-08-20Merge branch 'maint'Henrik Nord
Conflicts: OTP_VERSION erts/vsn.mk
2015-08-18Prepare releaseErlang/OTP
2015-07-14Merge branch 'lukas/ose/remove/OTP-12573'Lukas Larsson
* lukas/ose/remove/OTP-12573: Remove OSE from erl_interface ose: Remove all code related to the OSE port
2015-07-10ose: Remove all code related to the OSE portLukas Larsson
The OSE port is no longer supported and this commit removed it and any changes related to it. The things that were general improvements have been left in the code.
2015-07-08Prepare releaseErlang/OTP
2015-07-06Prepare releaseErlang/OTP
2015-06-30Prepare releaseErlang/OTP
2015-06-25Prepare releaseErlang/OTP
2015-06-23Prepare releaseErlang/OTP
2015-06-22Merge branch 'vinoski/driver-doc-fix/OTP-12855'Rickard Green
* vinoski/driver-doc-fix/OTP-12855: Fix documentation of ERL_DRV_ERROR_ERRNO
2015-06-22Fix documentation of ERL_DRV_ERROR_ERRNOSteve Vinoski
2015-06-22Merge branch 'bruce/change-license'Bruce Yinhe
OTP-12845 * bruce/change-license: fix errors caused by changed line numbers Change license text to APLv2
2015-06-18Minor doc fixesRickard Green
2015-06-18Change license text to APLv2Bruce Yinhe
2015-06-17Merge branch 'egil/license-compliance/OTP-12848'Björn-Egil Dahlberg
* egil/license-compliance/OTP-12848: Revert "lcnt: Let runq locks reflect actual call location" Revert "Demote rare debug slogan of message discarding to debug build" Revert "Add missing error string to syslog logging in epmd" Revert "Add run queue index to process dump info" Revert "Add thread index to allocator enomem dump slogan" Revert "Add number of entries to mnesia copy debug message"
2015-06-16Revert "Add run queue index to process dump info"Björn-Egil Dahlberg
This reverts commit 345af4a0c8d68b9369c3556fa6d911854c123d3f.
2015-06-16Revert "Add thread index to allocator enomem dump slogan"Björn-Egil Dahlberg
This reverts commit 5d5f9c1857029d7e8e1de141e29d20dd3de929be.
2015-06-16Merge branch 'tomas-abrahamsson/patch-1'Henrik Nord
* tomas-abrahamsson/patch-1: Add forgotten argument to example in erl_nif doc
2015-06-12Update the documentation of the abstract formatHans Bolinder
The parenthesized type with tag 'paren_type' is no longer created by the Erlang Parser as of OTP 18.0. The tag 'user_type' is used for user defined types as of OTP 18.0. In releases before commit 7ad783 'type' is used.
2015-06-12Document abstract format of type-related treesAnthony Ramine
2015-06-10Merge branch 'rickard/delayed-delete-node/OTP-12802'Rickard Green
* rickard/delayed-delete-node/OTP-12802: Delayed node table GC
2015-06-10Delayed node table GCRickard Green
2015-06-05Add forgotten argument to example in erl_nif docTomas Abrahamsson
In the documentation for erl_nif, in the map iterator example, the iterator argument was forgotten in the call to function enif_map_iterator_create. This is now fixed.
2015-06-03Merge commit fixing typoHenrik Nord
Thanks to Nathanael Bartley
2015-06-01Merge branch 'vinoski/enif-raise-exception/OTP-12770'Sverker Eriksson
* vinoski/enif-raise-exception/OTP-12770: Add enif_raise_exception Enhance enif_has_pending_exception Fix for enif_schedule_nif and exceptions Conflicts: erts/doc/src/erl_nif.xml
2015-06-01Merge branch 'sverk/nif-map-docs'Sverker Eriksson
* sverk/nif-map-docs: erts: Cleanup fsummary lines in erl_nif docs erts: Fix alphabetic order in erl_nif doc erts: Add docs for map functions in nif API erts: Rename ErlNifMapIteratorEntry enums
2015-05-28erts: Cleanup fsummary lines in erl_nif docsSverker Eriksson
by removing all full stop.
2015-05-28erts: Fix alphabetic order in erl_nif docSverker Eriksson
enif_make_reverse_list was at the wrong place
2015-05-28erts: Add docs for map functions in nif APISverker Eriksson
2015-05-28Merge branch 'richcarl/warnings-by-default/OTP-12781'Björn-Egil Dahlberg
* richcarl/warnings-by-default/OTP-12781: stdlib: Use warning channel in test qlc_SUITE:otp_6964/1 stdlib: Fix testcase for qlc_SUITE kernel: Fix code_SUITE with respect to new logger default Map error logger warnings to warning messages by default