aboutsummaryrefslogtreecommitdiffstats
AgeCommit message (Collapse)Author
2016-02-17stdlib: Let the linter detect old typed recordsHans Bolinder
2016-02-17stdlib: Update the linter to handle typed record fieldsHans Bolinder
2016-02-17stdlib: Update erl_expand_records to handle typed record fieldsBjörn Gustavsson
2016-02-17compiler: Update the compiler to handle typed record fieldsBjörn Gustavsson
2016-02-17stdlib: Update erl_id_trans to handle types and specsHans Bolinder
2016-02-17stdlib: Add a Cover test with typed record fieldHans Bolinder
2016-02-17stdlib: Update module shell to handle typed record fieldsHans Bolinder
2016-02-17stdlib: Update ms_transform to handle typed record fieldsHans Bolinder
2016-02-17stdlib: Modify the preprocessor as to expose typed record fieldsHans Bolinder
Problem: The types of record fields have since R12B been put in a separate form by epp:parse_file(), leaving the record declaration form untyped. The separate form, however, does not follow the syntax of type declarations, and parse transforms inspecting -type() attributes need to know about the special syntax. Since the compiler stores the return value of epp:parse_file() as debug information in the abstract code chunk ("Abst" or 'abstract_code'), tools too need to know about the special syntax, if they inspect -type() attributes in abstract code. Solution: As of this commit no separate form is created by epp:parse_file(), but the type information kept in the record fields. This means that all parse transforms and all tools inspecting -record() declarations need to recognize {typed_record_field, Field, Type}. We recommend that all parse transforms and tools be updated as to recognize typed record fields. Discussion: As of OTP 19.0, the abstract form of type declarations and function specifications is documented. An (unsatisfactory) alternative to the above solution is to document two formats of the abstract form of typed record fields: one if returned by epp:parse_file(); and one if returned by, for example, epp:parse_erl_form(). Yet another (bad) alternative is to not document the format returned by epp:erl_parse(), but instead document the idempotent function epp:restore_typed_record_fields/1, and urge authors of parse transform and tools to always call this function.
2016-02-17Merge branch 'maint'Hans Bolinder
* maint: xmerl: Remove 'no_return' Dialyzer warnings xmerl: Add suppression of Dialyzer warnings eunit: Add suppression of Dialyzer warnings debugger: Add suppression of Dialyzer warnings kernel: Add suppression of Dialyzer warnings mnesia: Add suppression of Dialyzer warnings observer: Add suppression of Dialyzer warnings runtime_tools: Add suppression of Dialyzer warnings stdlib: Add suppression of Dialyzer warnings test_server: Add suppression of Dialyzer warnings tools: Add suppression of Dialyzer warnings Conflicts: lib/stdlib/src/erl_lint.erl lib/stdlib/src/otp_internal.erl
2016-02-17Merge branch 'hb/add_dialyzer_suppressions/OTP-12862' into maintHans Bolinder
* hb/add_dialyzer_suppressions/OTP-12862: xmerl: Remove 'no_return' Dialyzer warnings xmerl: Add suppression of Dialyzer warnings eunit: Add suppression of Dialyzer warnings debugger: Add suppression of Dialyzer warnings kernel: Add suppression of Dialyzer warnings mnesia: Add suppression of Dialyzer warnings observer: Add suppression of Dialyzer warnings runtime_tools: Add suppression of Dialyzer warnings stdlib: Add suppression of Dialyzer warnings test_server: Add suppression of Dialyzer warnings tools: Add suppression of Dialyzer warnings
2016-02-17xmerl: Remove 'no_return' Dialyzer warningsHans Bolinder
2016-02-17xmerl: Add suppression of Dialyzer warningsHans Bolinder
2016-02-17eunit: Add suppression of Dialyzer warningsHans Bolinder
2016-02-17debugger: Add suppression of Dialyzer warningsHans Bolinder
2016-02-17kernel: Add suppression of Dialyzer warningsHans Bolinder
2016-02-17mnesia: Add suppression of Dialyzer warningsHans Bolinder
2016-02-17observer: Add suppression of Dialyzer warningsHans Bolinder
2016-02-17runtime_tools: Add suppression of Dialyzer warningsHans Bolinder
2016-02-17stdlib: Add suppression of Dialyzer warningsHans Bolinder
2016-02-17test_server: Add suppression of Dialyzer warningsHans Bolinder
2016-02-17tools: Add suppression of Dialyzer warningsHans Bolinder
2016-02-16Merge branch 'maint'Ingela Anderton Andin
2016-02-16Merge branch 'ia/pr/958/OTP-13334' into maintIngela Anderton Andin
* ia/pr/958/OTP-13334: ssl: verify cert signature against original cert binary
2016-02-16Merge branch 'rickard/ds-fixes-master'Rickard Green
* rickard/ds-fixes-master: Fix unique_SUITE for dirty schedulers Add dirty scheduler process termination test Ensure that work is done on the correct type of schedulers
2016-02-15Merge branch 'bjorn/cuddle-with-tests'Björn Gustavsson
* bjorn/cuddle-with-tests: erl_prim_loader_SUITE: Refactor helper functions Move record compilation errors to erl_lint_SUITE compile_SUITE: Use get_files/3 in more places compile_SUITE: Replace confusing files/2 with get_files/3
2016-02-15Merge branch 'maint'Henrik Nord
2016-02-15Merge branch 'tuncer/ei-breakage' into maintHenrik Nord
* tuncer/ei-breakage: ei: fix breakage reported by Sergei Golovan Revert "musl: fix gethostbyname_r/gethostbyaddr_ selection" OTP-13328
2016-02-15Merge branch 'maint'Björn Gustavsson
* maint: asn1: Suppress warnings for improper lists in generated code
2016-02-15Merge branch 'bjorn/asn1/suppressions/OTP-13324' into maintBjörn Gustavsson
* bjorn/asn1/suppressions/OTP-13324: asn1: Suppress warnings for improper lists in generated code
2016-02-15Merge branch 'rickard/ds-fixes' into rickard/ds-fixes-masterRickard Green
* rickard/ds-fixes: Fix unique_SUITE for dirty schedulers Add dirty scheduler process termination test Ensure that work is done on the correct type of schedulers Conflicts: erts/emulator/beam/erl_process.c erts/emulator/beam/erl_process.h erts/emulator/beam/erl_process_dump.c
2016-02-15Fix unique_SUITE for dirty schedulersRickard Green
2016-02-15Add dirty scheduler process termination testSteve Vinoski
In scheduler_SUITE add a new test that runs a single dirty I/O scheduler and launches a number of dirty I/O NIF calls that each sleep for 3 seconds. Given the single scheduler, the first of these will run while the rest queue up. Then start killing these processes, and verify they call exit correctly.
2016-02-15Ensure that work is done on the correct type of schedulersRickard Green
Only the actual call to the dirty nif is allowed to execute on dirty schedulers. The dirty nif is not allowed to execute on normal schedulers if dirty schedulers are available. Arrival of exit signals and system tasks, while a process was scheduled for execution on a dirty scheduler, could mess up the process internal state. Preparation for dirty system task has been made, but is currently unused.
2016-02-12asn1: Suppress warnings for improper lists in generated codeBjörn Gustavsson
2016-02-12Merge branch 'maint'Dan Gudmundsson
* maint: mnesia: let loader check if tablelock is needed mnesia: Avoid deadlock possibility in mnesia:del_table_copy schema
2016-02-12Merge branch 'dgud/mnesia/del_schema_hangs/OTP-13284' into maintDan Gudmundsson
* dgud/mnesia/del_schema_hangs/OTP-13284: mnesia: let loader check if tablelock is needed mnesia: Avoid deadlock possibility in mnesia:del_table_copy schema
2016-02-11erl_prim_loader_SUITE: Refactor helper functionsBjörn Gustavsson
Eliminate duplicated code by factoring out the common code for starting erl_boot_server and a slave node. Also, in the new start_boot_server/0 helper, fix a problem with Linux systems that assign 127.0.1.1 as the IP address for the hostname. Also stop using the -setcookie option when starting a node using -loader inet. The inet loading method doesn't use the distribution anymore.
2016-02-11Merge branch 'maint'Björn-Egil Dahlberg
2016-02-11Merge branch 'egil/fix-lcnt-dead-code/OTP-13319' into maintBjörn-Egil Dahlberg
* egil/fix-lcnt-dead-code/OTP-13319: tools: Remove dead code in lcnt
2016-02-10tools: Remove dead code in lcntBjörn-Egil Dahlberg
2016-02-10Merge branch 'maint'Björn Gustavsson
* maint: Eliminate crash because of unsafe delaying of sub-binary creation
2016-02-10Merge branch 'bjorn/compiler/beam_bsm/OTP-13309' into maintBjörn Gustavsson
* bjorn/compiler/beam_bsm/OTP-13309: Eliminate crash because of unsafe delaying of sub-binary creation
2016-02-10Merge branch 'maint'Siri Hansen
Conflicts: lib/stdlib/src/supervisor.erl
2016-02-10Merge branch 'nybek/speed_up_supervisor_count_children' into maintSiri Hansen
* nybek/speed_up_supervisor_count_children: Speed up supervisor:count_children/1; simple_one_for_one Add supervisor:get_callback_module/1 OTP-13290
2016-02-10Merge branch 'maint'Hans Bolinder
* maint: dialyzer: Correct byte_size() and comparisons Conflicts: lib/hipe/cerl/erl_bif_types.erl
2016-02-10Merge branch 'hb/dialyzer/fix_bitstr_bug/OTP-13312' into maintHans Bolinder
* hb/dialyzer/fix_bitstr_bug/OTP-13312: dialyzer: Correct byte_size() and comparisons
2016-02-09mnesia: let loader check if tablelock is neededDan Gudmundsson
move_table_copy needs the lock that was set previously in del_table_copy. This doesn't work on old nodes, so bump protocol version and check it. Remove old protocol conversion code, which have been around since OTP-R15. Checking if lock is needed requires rpc communication via mnesia_gvar ets table to be backwards compatible.
2016-02-09dialyzer: Correct byte_size() and comparisonsHans Bolinder
The argument of byte_size() is a bitstring(). The code in erl_bif_types that finds cases where comparisons always return true or false is corrected when it comes to maps and bit strings.
2016-02-08Merge branch 'maint'Sverker Eriksson