Age | Commit message (Collapse) | Author |
|
* nox/maps-erl_prettypr:
stdlib: Add tests for Maps in erl_prettypr
Support maps in erl_prettypr
|
|
* nox/maps-improve-erl_eval:
Handle map fields in their own function in erl_eval
|
|
The API and implementation are simplistic, like for lists and tuples,
using arrays and without any connection to java.util.Map.
|
|
|
|
We want to see at least some coverage of cover itself.
|
|
* tuncer/fix-public_key-specs:
public_key(3): fix private_key/0 type definition
OTP-11627
|
|
* fenollp/shell-expand-0arity-completely:
Shell: expand 0-arity functions all the way to closing parenthesis
OTP-11684
|
|
An environment key set with the persistent option will not
be overridden by the ones configured in the application resource
file on load. This means persistent values will stick after the
application is loaded and also on application reload.
|
|
* larsr/distclean:
make clean should not remove SKIP files
OTP-11683
|
|
Add new make target 'distclean' that removes
files created by configure.
SKIP files are created by configure for instance
if configured --without-javac. They should only
be removed if one has to reconfigure, otherwise
'make clean; make' breaks.
|
|
Starting in e12b7d5331c58b41db06cadfa4af75b78b62a2b1,
sys_core_fold:eval_case/2 will crash on handwritten but legal
Core Erlang programs such as:
case let <Var> = Arg in {'x',Var} of
{x,X} -> X
end
The problem is that the only clause *is* guaranteed to match, but
cerl_clauses:match_list/2 does not understand that; all it can say is
that the clause *may* match. In those circumstances, we will need to
keep the case.
Also make sure that we keep the case if the guard is something else
than 'true'. That is not strictly necessary, because in a legal Core
Erlang program the guard in the last clause in a case must always
evaluate to 'true', so removing the guard test would still leave the
program correct. Keeping the guard, however, will make it somewhat
easier to debug an incorrect Core Erlang program. (The unsafe_case
test case has guard test in the only clause in a case, so we don't
need to write a new test case to test that.)
Reported-by: Anthony Ramine
|
|
|
|
If the argument of a case expression is a let, a seq or a case with two clauses
where the second one is a failing clause; it can be moved outside the case and
further optimisations can be performed.
module 'foo' ['t'/4]
attributes []
't'/4 =
fun (_cor14,Sub0,_cor15,_cor16) ->
let Ssa = call 'erlang':'get' ('foo') in
case let Ssa = {'ssa',_cor14,Sub0,_cor15,_cor16} in
let _rec11 = call 'erlang':'+' (_cor14, 1) in
let _cor4 = call 'erlang':'setelement' (2, Ssa, _rec11) in
{{'tmp',_cor14},_cor4} of
{NewReg,Foo} when 'true' ->
{NewReg,Foo,Ssa}
_cor20 when 'true' ->
primop 'match_failure' ({'case_clause',_cor20})
end
end
==>
module 'foo' ['t'/4]
attributes []
't'/4 =
fun (_cor14,Sub0,_cor15,_cor16) ->
let Ssa = call 'erlang':'get' ('foo') in
let _fol0 = {'ssa',_cor14,Sub0,_cor15,_cor16} in
let _rec11 = call 'erlang':'+' (_cor14, 1) in
let _cor4 = call 'erlang':'setelement' (2, _fol0, _rec11) in
let NewReg = {'tmp',_cor14} in
{NewReg,_cor4,Ssa}
end
|
|
* josevalim/suppress-all-auto-imports:
Allow all auto imports to be suppressed at once
OTP-11682
|
|
* peppe/common_test/init_per_testcase_problem:
Fix problem with logging exits that happen in init_per_testcase
OTP-11643
|
|
* nox/debugger/erl_eval_SUITE/OTP-11676:
Truly test debugger in erl_eval_SUITE copy
|
|
|
|
|
|
|
|
The module was not interpreted.
This surfaced two bugs, related to shadowed variables in binary patterns in
comprehension generators, and guard filters not properly detected. The guard
detection code from dbg_iload is deleted in favor of erl_lint:is_guard_test/1.
The erl_lint module is now safe to use because it can handle all expressions
emitted by sys_pre_expand, the following warning is thus obsolete and has been
removed from code:
%% Cannot use erl_lint here as sys_pre_expand has transformed source.
|
|
* egil/compiler/maps-fix-sys_core_fold:
compiler: Fix sys_core_fold let optimization
compiler: Add debug listing after sys_core_fold
|
|
* egil/compiler/maps-fix-codegen:
compiler: Fix codegen multiple updates for Maps
erts,compiler: Correct and amend tests for Maps
|
|
* ia/public_key/specs:
public_key: Export some dialyzer types
|
|
for <CR> and <LF> in them and return error if these offending chars
are found. See http://erlang.org/pipermail/erlang-bugs/2014-January/003998.html
for details.
lib/inets/test/ftp_suite_lib.erl: Added checks for <CR><LF> in file and directory
names.
|
|
Currently, eldap assumes that only IPv4 will be used. This change
enables callers to use IPv6 by including the [inet6] option in the
eldap:open/2 options list. This adds inet6 to the gen_tcp or ssl
connect. For backward compatibility, [inet] is the default if inet6 is
omitted.
|
|
|
|
The type annotations for alternative registries using
the {via,Module,Name} syntax was not given for
sup_name() and sup_ref() in the supervisor module.
The type annotation was inconsistent with the
documentation and causes Dialyzer to complain about
valid supervisor:start_link and supervisor:start_child
calls.
|
|
Map variable was not covered and faulty optimization could occur.
Ex.
t() ->
M0 = id(#{ "a" => 1 }),
#{ "a" := _ } = M0,
M0#{ "a" := b }.
M0 was lost in let expression optimization.
|
|
|
|
|
|
This fixes an error on multiple updates optimization for map pairs.
The error was introduced with moving to term order in Maps.
This also fixes an error where register life time was lost for values
and could result in erroneuos values being emitted in for map pairs.
Simplified v3_codegen by moving multiple update optimizations to v3_kernel.
|
|
Faulty test for maps update
|
|
|
|
* nox/tools/cover-record-update:
Properly munge record updates in cover
Don't munge record and field names in cover
|
|
* nox/eep37/OTP-11537:
Support named funs in erl_prettypr
|
|
* vladdu/debugger/fixes:
remove warning for variable exported from case
remove useless match
remove unused parameter
|
|
* hsv/using_lists_droplast:
lib/mnesia/test/ - Replace reverse(tl(reverse(L))) with lists:droplast/1
lib/ssh - Replace reverse(tl(reverse(L))) with lists:droplast/1
lib/wx - Replace reverse(tl(reverse(L))) with lists:droplast/1
Use lists:droplast/1 in orber/orber_interceptors.erl
Import and use lists:droplast/1 in v3_core/v3_kernel
OTP-11678
OTP-11677
|
|
* hsv/add_droplast_to_lists:
Added documentation of lists:droplast/1
Added tests for lists:droplast/1 to stdlib/lists_SUITE
stdlib/lists: Add function droplast/1 This functions drops the last element of a non-empty list.
|
|
* egil/erts/fix-maps-beam_load:
compiler: Update map_SUITE with error case test
erts: Maps must fail on exact updates of empty Maps
erts: Fix Maps for beam_load
|
|
M#{ key := V } should fail when M is not a Map
|
|
Exact updates on empty Maps must fail directly.
|
|
* kostis/dialyzer-r17c0-fixes:
Shut off a dialyzer unmatched return warning
Add a spec for a function that does not return
|
|
* ia/ssl/unicode-adapt:
ssl: Unicode adaptions
|
|
* hb/doc/release_name:
Make the references to various Erlang/OTP releases verbose
|
|
* hb/dialyzer/fix_app_file:
Add app-test and correct dialyzer.app.src
|
|
|
|
If cdv window is closed when progressbar was still running error
reports came to error logger (i.e. mostly test problem on slow machines)
|
|
* bjorn/erts/zlib-1.2.8/OTP-11669:
gzio.c: Remove unnecessary usage of the OF() macro
|
|
|
|
|