aboutsummaryrefslogtreecommitdiffstats
path: root/lib/stdlib
AgeCommit message (Collapse)Author
2015-06-15Merge branch 'sverk/ets-file2tab-preserve-opts/OTP-12814'Sverker Eriksson
* sverk/ets-file2tab-preserve-opts/OTP-12814: stdlib: Make ets:file2tab preserve read/write_concurrency stdlib: Fix ets_SUITE:tabfile_ext4
2015-06-15dialyzer: Modify the handling of parametrized opaque typesHans Bolinder
In OTP 17 it is possible to mix types such as dict:dict() and dict:dict(_, _) outside of the dict module (and similarly for some other opaque types in STDLIB), but the results are unfortunately possibly invalid warnings in users' code. In OTP 18 parameterized opaque types with the same name but with different number of parameters are no longer compatible when seen from outside of the module where the types are declared. The types in STDLIB have been updated accordingly; for instance -opaque dict() :: dict(_, _). has been replaced by -type dict() :: dict(_, _).
2015-06-15stdlib: Make ets:file2tab preserve read/write_concurrencySverker Eriksson
2015-06-12stdlib: Introduce precedence for operators in typesHans Bolinder
Add new functions erl_parse:type_inop_prec() and erl_parse:type_preop_prec(). Get rid of paren_type used for parentheses in types.
2015-06-10Merge branch 'rickard/timer-improvement/OTP-12650'Rickard Green
* rickard/timer-improvement/OTP-12650: Callback timer Disable accessor timer option Aux work flag descriptions Fix test cases
2015-06-09Fix test casesRickard Green
2015-06-08stdlib: Fix ets_SUITE:tabfile_ext4Sverker Eriksson
for hosts with long names.
2015-06-03Break out assert macros from eunit to stdlib assert.hrlRichard Carlsson
Several people have requested that the assert macros in EUnit should be moved out to a separate header file. This patch puts them in stdlib/include/assert.hrl, which gets included by the eunit.hrl file. Thus, nothing changes for eunit users, but the asserts can now also be included separately.
2015-06-02Merge branch 'josevalim/jv-annotate-form-type'Henrik Nord
* josevalim/jv-annotate-form-type: Annotate used types in erl_lint OTP-12800
2015-05-29Merge branch 'fishcakez/supervisor_ignore'Zandra Hird
* fishcakez/supervisor_ignore: Don't store child that returns ignore in simple supervisor OTP-12793
2015-05-29Update orddict with parameterized types and specsUENISHI Kota
With parametrized types and specs, modules using orddict can be statically checked with dialyzer. Although orddict have not been builtin types, it is good and more natural to have its exported types and specs aligned to builtin types.
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
2015-05-27stdlib: Use warning channel in test qlc_SUITE:otp_6964/1Björn-Egil Dahlberg
2015-05-27stdlib: Fix testcase for qlc_SUITEBjörn-Egil Dahlberg
2015-05-27Merge remote-tracking branch 'erlang/pr/745'Henrik Nord
* erlang/pr/745: Typofix: piecemeal
2015-05-27Update application versionsHans Bolinder
2015-05-27Annotate used types in erl_lintJosé Valim
This is a follow up to commit b5ee5c6. Similar to function calls, we also need to annotate used types on call site since this information is used later on when showing undefined type errors. Notice we don't need to annotate the type export because it is an attribute and those are always properly annotated.
2015-05-26Merge branch 'egil/opt-compile-time/OTP-12774'Björn-Egil Dahlberg
* egil/opt-compile-time/OTP-12774: stdlib: Relax erl_anno_SUITE:is_anno/1 test Update primary bootstrap compiler: Use Maps as type information compiler: Use Maps instead of dict in beam_jump compiler: Use cerl_sets instead of gb_sets in beam_type compiler: Use Maps instead of gb_trees in beam_dead compiler: Use cerl_sets instead of gb_sets in beam_jump compiler: Use cerl_sets instead of sets in v3_kernel compiler: Use cerl_sets instead of gb_sets in sys_core_fold compiler: Add cerl_sets module compiler: Scope uses gb_sets not gb_trees beam_dict: Use Maps to map function name indices beam_dict: Use Maps to map line indices beam_dict: Use Maps to map atom indices v3_codegen: Use Maps to map local functions v3_life: Refactor variable db compiler: Use lc instead of map/1 in v3_codegen stdlib: Optimize erl_anno:is_string/1 Conflicts: bootstrap/lib/kernel/ebin/inet_dns.beam bootstrap/lib/stdlib/ebin/erl_anno.beam bootstrap/lib/stdlib/ebin/erl_lint.beam
2015-05-26Typofix: piecemealAndrás Veres-Szentkirályi
2015-05-26Merge branch 'egil/cuddle-tests'Björn-Egil Dahlberg
* egil/cuddle-tests: erts: Relax monitor_SUITE:mixer/1 erts: Refactor monitor_SUITE:mixer/1 stdlib: Minor change of unicode_SUITE stdlib: Relax iterations in binary_module_SUITE:random_ref_sr_comp/1 Remove ?line macro in binary_module_SUITE:random_ref_sr_comp/1 stdlib: Relax iterations in binary_module_SUITE:random_ref_comp/1 stdlib: Remove ?line macro in binary_module_SUITE:random_ref_comp/1 stdlib: Relax filesize of io_proto_SUITE:unicode_options_gen/1 stdlib: Relax rand_SUITE timeout debugger: Relax test map_SUITE:t_guard_receive_large/1 tools: Relax lcnt test time stdlib: ets_SUITE cuddling
2015-05-26Merge branch 'josevalim/jv-annotate-form'Henrik Nord
* josevalim/jv-annotate-form: Only annotate forms when linting in the compiler OTP-12772
2015-05-26Don't store child that returns ignore in simple supervisorJames Fish
If a child of a simple_one_for_one returns ignore from its start function no longer store the child for any restart type. It is not possible to restart or delete the child because the supervisor is a simple_one_for_one. Previously a simple_one_for_one would crash, potentially without shutting down all of its children, when it tried to shutdown a child with undefined pid. Previous only one undefined pid child was stored in a simple_one_for_one supervisor no matter how many times the child start function returned ignore.
2015-05-25stdlib: Minor change of unicode_SUITEBjörn-Egil Dahlberg
2015-05-25stdlib: Relax iterations in binary_module_SUITE:random_ref_sr_comp/1Björn-Egil Dahlberg
2015-05-25Remove ?line macro in binary_module_SUITE:random_ref_sr_comp/1Björn-Egil Dahlberg
2015-05-25stdlib: Relax iterations in binary_module_SUITE:random_ref_comp/1Björn-Egil Dahlberg
2015-05-25stdlib: Remove ?line macro in binary_module_SUITE:random_ref_comp/1Björn-Egil Dahlberg
2015-05-25stdlib: Relax filesize of io_proto_SUITE:unicode_options_gen/1Björn-Egil Dahlberg
2015-05-25stdlib: Relax rand_SUITE timeoutBjörn-Egil Dahlberg
2015-05-22Merge branch 'egil/fix-hipe_libs'Björn-Egil Dahlberg
* egil/fix-hipe_libs: stdlib: Relax maps test suite for HiPE
2015-05-22stdlib: Relax erl_anno_SUITE:is_anno/1 testBjörn-Egil Dahlberg
Due to the relaxation of erl_anno:is_string/1, the test false = erl_anno:is_anno([{location,1},{text,[a,b,c]}]), is no longer valid.
2015-05-22Merge branch 'bjorn/stdlib/erl_lint'Björn Gustavsson
* bjorn/stdlib/erl_lint: Remove final (?) vestiges of support for parameterized modules
2015-05-22Only annotate forms when linting in the compilerJosé Valim
A lot of time spent on linting is due to eval_file_attribute/2 function that recursively traverses all the AST, annotating the file name on the AST nodes. This traversal happens so it is easier to add errors and warnings later on by simply introspecting the node. This patch changes eval_file_attribute/2 to only annotate forms (i.e. attributes and functions) and rely on the #lint record to keep the proper file information (which it already did before this patch). To summarize, both pre scan and pos scan will use the annotated file attribute in forms, however form/2 already maintains the proper file in #lint, which we pass around when retrieving the location information. After this patch, linting of a regular erlang module with 500LOC became twice faster when measured with eprof.
2015-05-21Merge branch 'sverk/ets-tab2file-syn/OTP-12737'Sverker Eriksson
* sverk/ets-tab2file-syn/OTP-12737: stdlib: Add 'sync' option to ets:tab2file/3
2015-05-21stdlib: Optimize erl_anno:is_string/1Björn-Egil Dahlberg
erl_anno:is_string/1 is frequently called from erl_lint and thus affects compile time. Using is_list/1 for is_string/1 is sufficient in this case.
2015-05-21Remove final (?) vestiges of support for parameterized modulesBjörn Gustavsson
Parameterized modules were removed in cdf8060868575, but a few vestiges still remained in erl_lint.
2015-05-21Update runtime dependenciesRickard Green
2015-05-20stdlib: ets_SUITE cuddlingBjörn-Egil Dahlberg
Time measurement of ets-lookups, too fast for windows.
2015-05-20stdlib: Relax maps test suite for HiPEBjörn-Egil Dahlberg
2015-05-20Merge branch 'josevalim/jv-nowarn-bif-clash'Zandra Hird
* josevalim/jv-nowarn-bif-clash: Cache nowarn_bif_clash functions in erl_lint OTP-12754
2015-05-20Merge branch 'josevalim/patch-4'Zandra Hird
* josevalim/patch-4: Speed up linting by not traversing filenames in erl_anno
2015-05-20Merge branch 'richcarl/add-uptime-function'Henrik Nord
* richcarl/add-uptime-function: Add uptime() shell command OTP-12752
2015-05-19stdlib: Use lc to implement maps:map/2Björn-Egil Dahlberg
2015-05-19stdlib: Test maps:filter/2Björn-Egil Dahlberg
2015-05-18stdlib: Document maps:filter/2Björn-Egil Dahlberg
2015-05-18stdlib: Add maps:filter/2Björn-Egil Dahlberg
2015-05-18stdlib: Add gb_sets:iterator_fromHans Bolinder
2015-05-18stdlib: Add gb_trees:iterator_frombeaver
2015-05-14Speed up linting by not traversing filenames in erl_annoJosé Valim
Compilation on Erlang 18.0-rc2 is about 10% slower than in Erlang 17. After some debugging, we have noticed that linting is on average 30% to 50% slower being the main responsible for the performance reduction. Later profiling revealed is_filename/1 to be the biggest culprit. The change in this commit brings compilation times to about the same times as Erlang 17. Note this commit doesn't change the compiler behaviour compared to Erlang 17 because we didn't sanity check the value given to the file annotation in the past. I would say checking the filename is not worth it if it means compilation becomes 10% slower on average. After all, there are many places in the compiler where it will fail if we give it a malformed tree, I wouldn't then special case file annotation.
2015-05-14Cache nowarn_bif_clash functions in erl_lintJosé Valim
When compiling parser files, because they rely heavily on inline annotations, retrieving the nowarn_bif_clash information from the compiler options is expensive. This patch stores nowarn_bif_clash in the lint record. By using erlc +'{eprof,lint_module}' when compiling the erlang parser, we noticed the time spent on nowarn_function/2 reduced from 30% to 0.01%.