aboutsummaryrefslogtreecommitdiffstats
path: root/lib/hipe
diff options
context:
space:
mode:
authorFredrik Gustafsson <[email protected]>2013-10-14 11:15:07 +0200
committerFredrik Gustafsson <[email protected]>2013-10-14 11:15:07 +0200
commit4db36c5ac1ade665fdf3ddfc1c5782fdf40ef0dc (patch)
treee50f3b0f0d3b96a44bbaf93c90c6670d75438e2c /lib/hipe
parent240c5e4785fee63457e87c443eff5da82976c785 (diff)
parente978ff2a2c634ef2a4af7372cf2ecce8d70743b9 (diff)
downloadotp-4db36c5ac1ade665fdf3ddfc1c5782fdf40ef0dc.tar.gz
otp-4db36c5ac1ade665fdf3ddfc1c5782fdf40ef0dc.tar.bz2
otp-4db36c5ac1ade665fdf3ddfc1c5782fdf40ef0dc.zip
Merge branch 'kostis/dialyzer_R16B02_fixes/OTP-11374' into maint
* kostis/dialyzer_R16B02_fixes/OTP-11374: Fix crash when using remote types in the tail of list types Adopt a convention about unknown modules No reason for calls to unknown modules Use the modern version of is_subtype Adopt a convention about unknown modules Fix a comment Add some more comments about what the test does
Diffstat (limited to 'lib/hipe')
-rw-r--r--lib/hipe/cerl/erl_types.erl13
1 files changed, 7 insertions, 6 deletions
diff --git a/lib/hipe/cerl/erl_types.erl b/lib/hipe/cerl/erl_types.erl
index d1243b2325..d7d8a878c5 100644
--- a/lib/hipe/cerl/erl_types.erl
+++ b/lib/hipe/cerl/erl_types.erl
@@ -671,8 +671,9 @@ t_solve_remote(?function(Domain, Range), ET, R, C) ->
{RT2, RR2} = t_solve_remote(Range, ET, R, C),
{?function(RT1, RT2), RR1 ++ RR2};
t_solve_remote(?list(Types, Term, Size), ET, R, C) ->
- {RT, RR} = t_solve_remote(Types, ET, R, C),
- {?list(RT, Term, Size), RR};
+ {RT1, RR1} = t_solve_remote(Types, ET, R, C),
+ {RT2, RR2} = t_solve_remote(Term, ET, R, C),
+ {?list(RT1, RT2, Size), RR1 ++ RR2};
t_solve_remote(?product(Types), ET, R, C) ->
{RL, RR} = list_solve_remote(Types, ET, R, C),
{?product(RL), RR};
@@ -1349,8 +1350,8 @@ t_maybe_improper_list() ->
t_maybe_improper_list(_Content, ?unit) -> ?none;
t_maybe_improper_list(?unit, _Termination) -> ?none;
t_maybe_improper_list(Content, Termination) ->
- %% Safety check
- true = t_is_subtype(t_nil(), Termination),
+ %% Safety check: would be nice to have but does not work with remote types
+ %% true = t_is_subtype(t_nil(), Termination),
?list(Content, Termination, ?unknown_qual).
-spec t_is_maybe_improper_list(erl_type()) -> boolean().
@@ -1365,8 +1366,8 @@ t_is_maybe_improper_list(_) -> false.
%% t_improper_list(?unit, _Termination) -> ?none;
%% t_improper_list(_Content, ?unit) -> ?none;
%% t_improper_list(Content, Termination) ->
-%% %% Safety check
-%% false = t_is_subtype(t_nil(), Termination),
+%% %% Safety check: would be nice to have but does not work with remote types
+%% %% false = t_is_subtype(t_nil(), Termination),
%% ?list(Content, Termination, ?any).
-spec lift_list_to_pos_empty(erl_type()) -> erl_type().