Age | Commit message (Collapse) | Author |
|
|
|
|
|
Using the new type syntax, we can specify which keys are required, and
which are optional in a way Dialyzer could use.
|
|
|
|
erl_types typesets mandatory keys with :=, and uses "..." as a shorthand
for "any() => any()". Add these to erl_parse so that all representable
types can be written in type-specs.
|
|
* maps:from_list/1
* maps:get/2
* maps:is_key/2
* maps:merge/2
* maps:put/3
* maps:size/1
* maps:to_list/1
* maps:update/3
|
|
The type of a map is represented as a three-tuple {Pairs, DefaultKey,
DefaultValue}. DefaultKey and DefaultValue are types. Pairs is a list of
three-tuples {Key, mandatory | optional, Value}, where Key and Value are
types. All types Key must be singleton, or "known at compile time," as
the EEP put it. Examples:
#{integer()=>list()} {[], integer(), list()}
#{a=>char(), b=>atom()} {[{a, optional, char()},
{b, optional, atom()}],
none(), none()}
map() {[], any(), any()}
A more formal description of the representation and its invariants can
be found in erl_types.erl
Special thanks to Daniel S. McCain (@dsmccain) that co-authored a very
early version of this with me back in April 2014, although only the
singleton type logic remains from that version.
|
|
|
|
|
|
v3_core would generate unsafe code for the following example:
f() ->
{ok={error,E}} = foo(),
E.
Internally, the code would look similar to:
f() ->
Var = foo(),
error({badmatch,Var}),
E.
That is, there would remain a reference to an unbound variable.
Normally, sys_core_fold would remove the reference to 'E', but if
if optimization was disabled the compiler would crash.
|
|
* egil/maps-api-additions/PR-1025/OTP-13522:
stdlib: Document maps:update_with/3,4
stdlib: Add tests for maps:update_with/3,4
stdlib: Add maps:update_with/3,4
erts: Add tests for maps:take/2
stdlib: Document maps:take/2
erts: Add BIF maps:take/2
|
|
|
|
|
|
|
|
|
|
Removed pty alloc from the test since it does not work on all test targets.
Also added a final check that the upper limit of channels still holds.
|
|
The supervisor tree need some time to count down number of workers when one dies.
With a fixed waiting time in the test, there will be spurious errors. There will also be
unnecessarily long waits on some machines.
|
|
|
|
* bjorn/compiler/cuddle-with-tests:
compilation_SUITE: Use explicit exports
Remove support for running tests on a separate Erlang node
Move code from compilation_SUITE to beam_block_SUITE
Move list comprehension tests to lc_SUITE
Move catch tests to trycatch_SUITE
Remove compilation_SUITE:long_string/1
Move pattern-matching tests to match_SUITE
Remove toothless test compile_SUITE:missing_testheap/1
misc_SUITE: Add missing export of integer_encoding/0
Move test cases from compilation_SUITE to beam_utils_SUITE
Move complex_guard/1 from compilation_SUITE to guard_SUITE
Remove compilation_SUITE:guards/1
Move tests from compilation_SUITE to record_SUITE
Move bit syntax test cases from compilation_SUITE to bs_match_SUITE
Remove useless test case compilation_SUITE:otp_2141/1
compilation_SUITE: Run the Core linter for all compilations
|
|
|
|
|
|
These functions have been removed from wxWidgets-3.1 and according
to documentation have been noops anyway.
So remove them to make wx build with wxWidgets-3.1 if
wxWidgets is compiled with --enable-compat28
|
|
When recording the fact that a verify function ran, spawn a new
process to own the ETS table, to ensure that it's still there when we
want to query it.
|
|
'internal' is reserved for the ssl_crl_cache module. Since the stub
CRL cache implementation in the test module essentially uses the file
system as its "database", let's pass the directory as database handle.
|
|
Can't use single quotes to hide double quotes. Let's fix that with
more backslashes.
|
|
|
|
|
|
Maps equivalent to dict:update/3,4
|
|
|
|
|
|
With 'export_all' it is easy to add a new test case function
and forget to add its name to the list of test cases to run.
While we are it, remove unused functions and add the forgotten
test case on_load_inline/1.
|
|
It has not been used for ages.
|
|
|
|
|
|
|
|
long_string/1 was written to test that long string were handled
efficiently in beam_asm. Strings used to be stored in the string
table chunk, but are currently literals.
There does not seem that this test case is likely to find any bugs.
|
|
|
|
missing_testheap/1 is no longer relevant for the following reasons:
1) Because of the literal pool introduced in R12, no test_heap
instructions are needed in the guards.
2) beam_validator would abort the compilation if any needed test_heap
instructions were missing.
|
|
The integer_encoding/1 test is supposed to be run with a tighter
timetrap ensure that encoding of integer in BEAM files is efficient
enough.
|
|
beam_utils_SUITE didn't exist when the two test cases were written.
|
|
* xumingthepoet/maint/PR-1008/OTP-13516:
Update global_group_SUITE.erl
Fix global_group.erl
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|