<feed xmlns='http://www.w3.org/2005/Atom'>
<title>otp.git/lib/dialyzer/test/map_SUITE_data, branch OTP-19.3.6.4</title>
<subtitle>Mirror of Erlang/OTP repository.
</subtitle>
<link rel='alternate' type='text/html' href='http://git.ninenines.eu/otp.git/'/>
<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: Substitute 'opacity' for 'opaqueness'</title>
<updated>2016-11-22T09:31:59+00:00</updated>
<author>
<name>Hans Bolinder</name>
<email>hasse@erlang.org</email>
</author>
<published>2016-11-22T09:20:55+00:00</published>
<link rel='alternate' type='text/html' href='http://git.ninenines.eu/otp.git/commit/?id=a5f88f548c7f1045b5aa9642574167df899c2f3b'/>
<id>a5f88f548c7f1045b5aa9642574167df899c2f3b</id>
<content type='text'>
Suggested by Kostis.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Suggested by Kostis.
</pre>
</div>
</content>
</entry>
<entry>
<title>dialyzer: Improve a warning message</title>
<updated>2016-11-22T09:29:04+00:00</updated>
<author>
<name>Hans Bolinder</name>
<email>hasse@erlang.org</email>
</author>
<published>2016-11-16T14:06:17+00:00</published>
<link rel='alternate' type='text/html' href='http://git.ninenines.eu/otp.git/commit/?id=773948083b57ad59eb90b5668e72175d79acbe1f'/>
<id>773948083b57ad59eb90b5668e72175d79acbe1f</id>
<content type='text'>
Messages regarding guards with orelse/andalso could look
like "Clause guard cannot succeed. The variable A was matched
against the type any()". Now they look like as if or/and is
used: "Guard test is_integer(A::atom()) can never succeed".
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Messages regarding guards with orelse/andalso could look
like "Clause guard cannot succeed. The variable A was matched
against the type any()". Now they look like as if or/and is
used: "Guard test is_integer(A::atom()) can never succeed".
</pre>
</div>
</content>
</entry>
<entry>
<title>erl_bif_types: Properly unopaque maps:merge/2 args</title>
<updated>2016-09-07T14:45:21+00:00</updated>
<author>
<name>Magnus Lång</name>
<email>margnus1@telia.com</email>
</author>
<published>2016-09-07T14:45:21+00:00</published>
<link rel='alternate' type='text/html' href='http://git.ninenines.eu/otp.git/commit/?id=5a9cc02690d033a2f3e695d7ac42c2756dbaaf04'/>
<id>5a9cc02690d033a2f3e695d7ac42c2756dbaaf04</id>
<content type='text'>
erl_bif_types:type/5 was calling erl_types:map_pairwise_merge/3 directly
with its (potentially opaque) arguments, causing Dialyzer crashes.

Bug (ERL-249) reported and minimised test case provided by Felipe
Ripoll.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
erl_bif_types:type/5 was calling erl_types:map_pairwise_merge/3 directly
with its (potentially opaque) arguments, causing Dialyzer crashes.

Bug (ERL-249) reported and minimised test case provided by Felipe
Ripoll.
</pre>
</div>
</content>
</entry>
<entry>
<title>erl_types: Normalise X:=none() pairs in t_map/3</title>
<updated>2016-06-28T11:36:11+00:00</updated>
<author>
<name>Magnus Lång</name>
<email>margnus1@telia.com</email>
</author>
<published>2016-06-28T09:23:49+00:00</published>
<link rel='alternate' type='text/html' href='http://git.ninenines.eu/otp.git/commit/?id=a296fc4d7f6f52c78da4596b9b08f39147089d44'/>
<id>a296fc4d7f6f52c78da4596b9b08f39147089d44</id>
<content type='text'>
t_map/3 previously required callers to perform this normalisation, but
as t_from_form/5 would sometimes fail to do so, this requirement is
relaxed.

Bug (ERL-177) reported and shrunk by Luke Imhoff.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
t_map/3 previously required callers to perform this normalisation, but
as t_from_form/5 would sometimes fail to do so, this requirement is
relaxed.

Bug (ERL-177) reported and shrunk by Luke Imhoff.
</pre>
</div>
</content>
</entry>
<entry>
<title>Remove support for '...' in Maps types</title>
<updated>2016-06-09T13:13:05+00:00</updated>
<author>
<name>Hans Bolinder</name>
<email>hasse@erlang.org</email>
</author>
<published>2016-06-09T11:18:07+00:00</published>
<link rel='alternate' type='text/html' href='http://git.ninenines.eu/otp.git/commit/?id=af761914c9a94a9d54c1bcc2d4fff96a58674078'/>
<id>af761914c9a94a9d54c1bcc2d4fff96a58674078</id>
<content type='text'>
It is possible that '...' is added later (OTP 20.0), but for now we
are not sure of all details.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
It is possible that '...' is added later (OTP 20.0), but for now we
are not sure of all details.
</pre>
</div>
</content>
</entry>
<entry>
<title>erl_types: Don't consider opaque keys singleton</title>
<updated>2016-04-28T14:16:10+00:00</updated>
<author>
<name>Magnus Lång</name>
<email>margnus1@telia.com</email>
</author>
<published>2016-04-19T14:43:19+00:00</published>
<link rel='alternate' type='text/html' href='http://git.ninenines.eu/otp.git/commit/?id=f0ec1835897a017ec7d7613add1870850187b7b1'/>
<id>f0ec1835897a017ec7d7613add1870850187b7b1</id>
<content type='text'>
Opaque singleton keys have the unfortunate property, unlike any other
singleton type, to overlap with other singleton types that do not have
the same internal representation. Therefore, we must not keep opaque
singletons in the Pairs list in a map type.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Opaque singleton keys have the unfortunate property, unlike any other
singleton type, to overlap with other singleton types that do not have
the same internal representation. Therefore, we must not keep opaque
singletons in the Pairs list in a map type.
</pre>
</div>
</content>
</entry>
<entry>
<title>erl_types: Fix t_subtract/2 correctness bug</title>
<updated>2016-04-28T14:16:10+00:00</updated>
<author>
<name>Magnus Lång</name>
<email>margnus1@telia.com</email>
</author>
<published>2016-04-19T13:02:17+00:00</published>
<link rel='alternate' type='text/html' href='http://git.ninenines.eu/otp.git/commit/?id=29253c06dd99717e8424c0418144fd95d232c38d'/>
<id>29253c06dd99717e8424c0418144fd95d232c38d</id>
<content type='text'>
t_subtract/2 would break its postcondition by always returning the
underapproximation none() when given a variable on the right hand side.

This broke map type parsing, since it relied on t_subtract/2 to tell it
when map keys would shadow each other.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
t_subtract/2 would break its postcondition by always returning the
underapproximation none() when given a variable on the right hand side.

This broke map type parsing, since it relied on t_subtract/2 to tell it
when map keys would shadow each other.
</pre>
</div>
</content>
</entry>
<entry>
<title>erl_types: Fix crash merging maps with opaque keys</title>
<updated>2016-04-28T14:16:10+00:00</updated>
<author>
<name>Magnus Lång</name>
<email>margnus1@telia.com</email>
</author>
<published>2016-04-18T17:19:23+00:00</published>
<link rel='alternate' type='text/html' href='http://git.ninenines.eu/otp.git/commit/?id=d2ba8674603bc4ef210ec91e6f51924f7efe8c2e'/>
<id>d2ba8674603bc4ef210ec91e6f51924f7efe8c2e</id>
<content type='text'>
Opaque keys in maps broke an assumption in
erl_types:mapmerge_otherv/3 (that the infinimum of a singleton type and
some other type would either be none() or that same singleton type),
causing a case_clause crash.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Opaque keys in maps broke an assumption in
erl_types:mapmerge_otherv/3 (that the infinimum of a singleton type and
some other type would either be none() or that same singleton type),
causing a case_clause crash.
</pre>
</div>
</content>
</entry>
<entry>
<title>dialyzer: Fix another pattern literal bug</title>
<updated>2016-04-28T14:16:10+00:00</updated>
<author>
<name>Magnus Lång</name>
<email>margnus1@telia.com</email>
</author>
<published>2016-04-18T17:01:54+00:00</published>
<link rel='alternate' type='text/html' href='http://git.ninenines.eu/otp.git/commit/?id=81234c978d1ff1295d20158ed83b296b1f5b1c9f'/>
<id>81234c978d1ff1295d20158ed83b296b1f5b1c9f</id>
<content type='text'>
dialyzer_typesig:traverse/3 would perform an unsafe optimisation when
given a cons pattern that contained a map and could be folded into a
literal with cerl:fold_literal/1. In this case, when traversing the map
a type variable would be generated, but this variable would be dropped
by the erl_types:t_cons/2 constructor by in turn calling t_sup(),
producing the overapproximation any(). However, in this particular case,
dialyzer_typesig:traverse/3 is not allowed to overapproximate, since its
result is used in an EQ-constraint.

Although erl_types:t_tuple/1 does not overapproximate like t_cons/2,
which makes the bug unlikely to affect tuples too, the fix was
nevertheless applied defensively to the case of tuples as well.

Also, fix a bug where dialyzer_utils:refold_pattern/1 would generate
syntax nodes with two {label, _} attributes.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
dialyzer_typesig:traverse/3 would perform an unsafe optimisation when
given a cons pattern that contained a map and could be folded into a
literal with cerl:fold_literal/1. In this case, when traversing the map
a type variable would be generated, but this variable would be dropped
by the erl_types:t_cons/2 constructor by in turn calling t_sup(),
producing the overapproximation any(). However, in this particular case,
dialyzer_typesig:traverse/3 is not allowed to overapproximate, since its
result is used in an EQ-constraint.

Although erl_types:t_tuple/1 does not overapproximate like t_cons/2,
which makes the bug unlikely to affect tuples too, the fix was
nevertheless applied defensively to the case of tuples as well.

Also, fix a bug where dialyzer_utils:refold_pattern/1 would generate
syntax nodes with two {label, _} attributes.
</pre>
</div>
</content>
</entry>
</feed>
