<feed xmlns='http://www.w3.org/2005/Atom'>
<title>otp.git/lib/dialyzer/test/behaviour_SUITE_data, branch maint</title>
<subtitle>Mirror of Erlang/OTP repository.
</subtitle>
<link rel='alternate' type='text/html' href='http://git.ninenines.eu/otp.git/'/>
<entry>
<title>dialyzer: Add test cases with indentation</title>
<updated>2019-05-07T06:25:03+00:00</updated>
<author>
<name>Hans Bolinder</name>
<email>hasse@erlang.org</email>
</author>
<published>2019-04-17T11:20:56+00:00</published>
<link rel='alternate' type='text/html' href='http://git.ninenines.eu/otp.git/commit/?id=77cbe3b6ced0ca42cf3ec5c8ca0333d9418a0372'/>
<id>77cbe3b6ced0ca42cf3ec5c8ca0333d9418a0372</id>
<content type='text'>
A smallish selection of already existing tests, run with
the indentation option.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
A smallish selection of already existing tests, run with
the indentation option.
</pre>
</div>
</content>
</entry>
<entry>
<title>dialyzer: Do not call erlang:get_stacktrace()</title>
<updated>2018-02-05T13:45:37+00:00</updated>
<author>
<name>Hans Bolinder</name>
<email>hasse@erlang.org</email>
</author>
<published>2018-02-05T11:34:26+00:00</published>
<link rel='alternate' type='text/html' href='http://git.ninenines.eu/otp.git/commit/?id=35fa9cbcb2b8299ada7e5a9d9db3f70ff47f5444'/>
<id>35fa9cbcb2b8299ada7e5a9d9db3f70ff47f5444</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>Add {continue, Term} and handle_continue/2 to gen_server</title>
<updated>2017-08-05T16:58:52+00:00</updated>
<author>
<name>José Valim</name>
<email>jose.valim@plataformatec.com.br</email>
</author>
<published>2017-06-22T17:54:26+00:00</published>
<link rel='alternate' type='text/html' href='http://git.ninenines.eu/otp.git/commit/?id=69e009e3e1ad899a4609ff327a08512c86dba374'/>
<id>69e009e3e1ad899a4609ff327a08512c86dba374</id>
<content type='text'>
If the gen_server process needs to perform an action immediately
after initialization or to break the execution of a callback into
multiple steps, it can return {continue, term()} in place of the
time-out or hibernation value, which will immediately invoke the
handle_continue/2 callback with the given term.

This provides a more accessible approach to after initialization
compared to proc_lib+enter_loop that is also guaranteed to be
safe.

It also allows callbacks that need to do lengthy or stateful work
to checkpoint the state throughout multiple iterations. This can
be useful, for example, when implementing behaviours on top of
gen_server.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
If the gen_server process needs to perform an action immediately
after initialization or to break the execution of a callback into
multiple steps, it can return {continue, term()} in place of the
time-out or hibernation value, which will immediately invoke the
handle_continue/2 callback with the given term.

This provides a more accessible approach to after initialization
compared to proc_lib+enter_loop that is also guaranteed to be
safe.

It also allows callbacks that need to do lengthy or stateful work
to checkpoint the state throughout multiple iterations. This can
be useful, for example, when implementing behaviours on top of
gen_server.
</pre>
</div>
</content>
</entry>
<entry>
<title>dialyzer: Improve handling of Unicode</title>
<updated>2017-06-09T07:11:14+00:00</updated>
<author>
<name>Hans Bolinder</name>
<email>hasse@erlang.org</email>
</author>
<published>2017-05-30T13:53:09+00:00</published>
<link rel='alternate' type='text/html' href='http://git.ninenines.eu/otp.git/commit/?id=6d80a38c876831aa141b58e757fbdf5663026f95'/>
<id>6d80a38c876831aa141b58e757fbdf5663026f95</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>stdlib: Make gen_server callbacks optional</title>
<updated>2017-04-21T12:52:48+00:00</updated>
<author>
<name>Zandra Norman</name>
<email>zandra@erlang.org</email>
</author>
<published>2017-01-23T10:49:32+00:00</published>
<link rel='alternate' type='text/html' href='http://git.ninenines.eu/otp.git/commit/?id=8ca53b0f993ffbf2991e3068b76ec15b8f5eca51'/>
<id>8ca53b0f993ffbf2991e3068b76ec15b8f5eca51</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>dialyzer: Increase time limit for tests</title>
<updated>2017-02-01T08:14:57+00:00</updated>
<author>
<name>Hans Bolinder</name>
<email>hasse@erlang.org</email>
</author>
<published>2017-02-01T08:14:53+00:00</published>
<link rel='alternate' type='text/html' href='http://git.ninenines.eu/otp.git/commit/?id=918eeb95d6d96ede31a85b07b008ae686dc0dfa8'/>
<id>918eeb95d6d96ede31a85b07b008ae686dc0dfa8</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>dialyzer: Increase time limit of suites</title>
<updated>2016-08-31T13:34:54+00:00</updated>
<author>
<name>Hans Bolinder</name>
<email>hasse@erlang.org</email>
</author>
<published>2016-08-31T13:12:50+00:00</published>
<link rel='alternate' type='text/html' href='http://git.ninenines.eu/otp.git/commit/?id=b593a4f25ee3c89b34152d96119bab981f102de6'/>
<id>b593a4f25ee3c89b34152d96119bab981f102de6</id>
<content type='text'>
The test 'proper' takes some time.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
The test 'proper' takes some time.
</pre>
</div>
</content>
</entry>
<entry>
<title>dialyzer: Fix a bug in the translation of forms to types</title>
<updated>2016-04-29T12:16:38+00:00</updated>
<author>
<name>Hans Bolinder</name>
<email>hasse@erlang.org</email>
</author>
<published>2016-04-28T11:23:13+00:00</published>
<link rel='alternate' type='text/html' href='http://git.ninenines.eu/otp.git/commit/?id=ce8162c18707fa860418118bc2f4be03719dff67'/>
<id>ce8162c18707fa860418118bc2f4be03719dff67</id>
<content type='text'>
A bug is fixed, but there are more problems.

Modify erl_types.erl like this:

  -define(EXPAND_LIMIT, 500).

and bogus warnings are output (again).

Callbacks and specs are compared (subtype) in dialyzer_behaviour. If
they are expanded to different depths, then invalid warnings can be
generated.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
A bug is fixed, but there are more problems.

Modify erl_types.erl like this:

  -define(EXPAND_LIMIT, 500).

and bogus warnings are output (again).

Callbacks and specs are compared (subtype) in dialyzer_behaviour. If
they are expanded to different depths, then invalid warnings can be
generated.
</pre>
</div>
</content>
</entry>
<entry>
<title>Enhance map specs in erts, stdlib, runtime_tools</title>
<updated>2016-04-28T14:16:09+00:00</updated>
<author>
<name>Magnus Lång</name>
<email>margnus1@telia.com</email>
</author>
<published>2016-02-27T18:23:48+00:00</published>
<link rel='alternate' type='text/html' href='http://git.ninenines.eu/otp.git/commit/?id=a13d4a750dfdf9a2a96d1e7ec0054644187afa59'/>
<id>a13d4a750dfdf9a2a96d1e7ec0054644187afa59</id>
<content type='text'>
Using the new type syntax, we can specify which keys are required, and
which are optional in a way Dialyzer could use.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Using the new type syntax, we can specify which keys are required, and
which are optional in a way Dialyzer could use.
</pre>
</div>
</content>
</entry>
<entry>
<title>erl_types: Add a map type representation</title>
<updated>2016-04-28T14:14:24+00:00</updated>
<author>
<name>Magnus Lång</name>
<email>margnus1@telia.com</email>
</author>
<published>2016-02-27T16:56:22+00:00</published>
<link rel='alternate' type='text/html' href='http://git.ninenines.eu/otp.git/commit/?id=252df5612032cfba71285b5886937e88ba176529'/>
<id>252df5612032cfba71285b5886937e88ba176529</id>
<content type='text'>
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()=&gt;list()}       {[], integer(), list()}
    #{a=&gt;char(), b=&gt;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.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
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()=&gt;list()}       {[], integer(), list()}
    #{a=&gt;char(), b=&gt;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.
</pre>
</div>
</content>
</entry>
</feed>
