aboutsummaryrefslogtreecommitdiffstats
path: root/lib/hipe/cerl
diff options
context:
space:
mode:
authorHans Bolinder <[email protected]>2012-08-21 10:46:32 +0200
committerHans Bolinder <[email protected]>2012-08-21 10:46:32 +0200
commit064b42237d891d5fdcb6c1a351980b8291437618 (patch)
treed1156281ddb1c8af7f4273395afb704755506a05 /lib/hipe/cerl
parent73f042d16fc016fa6c1c3bded1b3333707fc668a (diff)
parent03689627871fce1a0aac7dad314448bb138e88ac (diff)
downloadotp-064b42237d891d5fdcb6c1a351980b8291437618.tar.gz
otp-064b42237d891d5fdcb6c1a351980b8291437618.tar.bz2
otp-064b42237d891d5fdcb6c1a351980b8291437618.zip
Merge branch 'hb/dialyzer/bug_fixes/OTP-10191' into maint
* hb/dialyzer/bug_fixes/OTP-10191: Let t_inf() substitute any() for variables in a few more cases Fix a bug in dialyzer_dataflow
Diffstat (limited to 'lib/hipe/cerl')
-rw-r--r--lib/hipe/cerl/erl_types.erl12
1 files changed, 8 insertions, 4 deletions
diff --git a/lib/hipe/cerl/erl_types.erl b/lib/hipe/cerl/erl_types.erl
index 1789fc79fa..410e29d269 100644
--- a/lib/hipe/cerl/erl_types.erl
+++ b/lib/hipe/cerl/erl_types.erl
@@ -2318,10 +2318,14 @@ t_inf(?product(_), _, _Mode) ->
?none;
t_inf(_, ?product(_), _Mode) ->
?none;
-t_inf(?tuple(?any, ?any, ?any), ?tuple(_, _, _) = T, _Mode) -> T;
-t_inf(?tuple(_, _, _) = T, ?tuple(?any, ?any, ?any), _Mode) -> T;
-t_inf(?tuple(?any, ?any, ?any), ?tuple_set(_) = T, _Mode) -> T;
-t_inf(?tuple_set(_) = T, ?tuple(?any, ?any, ?any), _Mode) -> T;
+t_inf(?tuple(?any, ?any, ?any), ?tuple(_, _, _) = T, _Mode) ->
+ subst_all_vars_to_any(T);
+t_inf(?tuple(_, _, _) = T, ?tuple(?any, ?any, ?any), _Mode) ->
+ subst_all_vars_to_any(T);
+t_inf(?tuple(?any, ?any, ?any), ?tuple_set(_) = T, _Mode) ->
+ subst_all_vars_to_any(T);
+t_inf(?tuple_set(_) = T, ?tuple(?any, ?any, ?any), _Mode) ->
+ subst_all_vars_to_any(T);
t_inf(?tuple(Elements1, Arity, _Tag1), ?tuple(Elements2, Arity, _Tag2), Mode) ->
case t_inf_lists_strict(Elements1, Elements2, Mode) of
bottom -> ?none;