diff options
author | Fredrik Gustafsson <[email protected]> | 2013-10-14 11:15:07 +0200 |
---|---|---|
committer | Fredrik Gustafsson <[email protected]> | 2013-10-14 11:15:07 +0200 |
commit | 4db36c5ac1ade665fdf3ddfc1c5782fdf40ef0dc (patch) | |
tree | e50f3b0f0d3b96a44bbaf93c90c6670d75438e2c /lib/hipe | |
parent | 240c5e4785fee63457e87c443eff5da82976c785 (diff) | |
parent | e978ff2a2c634ef2a4af7372cf2ecce8d70743b9 (diff) | |
download | otp-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.erl | 13 |
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(). |