aboutsummaryrefslogtreecommitdiffstats
path: root/lib/dialyzer/src
diff options
context:
space:
mode:
authorHenrik Nord <[email protected]>2011-08-24 15:34:01 +0200
committerHenrik Nord <[email protected]>2011-08-24 15:34:06 +0200
commitadeecbacf58888df01d11c74f031581e2aab9520 (patch)
tree7e9cb5111796715d59ebc50e025ab61f14ad5226 /lib/dialyzer/src
parent7d880af82b2aafda9fe88086f790c2ba4d117955 (diff)
parent3a7af1c4934c0ce4682d88a6dafc178c1d12a703 (diff)
downloadotp-adeecbacf58888df01d11c74f031581e2aab9520.tar.gz
otp-adeecbacf58888df01d11c74f031581e2aab9520.tar.bz2
otp-adeecbacf58888df01d11c74f031581e2aab9520.zip
Merge branch 'sa/dialyzer-server-loop-fix' into dev
* sa/dialyzer-server-loop-fix: Fix server loop detection OTP-9489
Diffstat (limited to 'lib/dialyzer/src')
-rw-r--r--lib/dialyzer/src/dialyzer_typesig.erl9
1 files changed, 6 insertions, 3 deletions
diff --git a/lib/dialyzer/src/dialyzer_typesig.erl b/lib/dialyzer/src/dialyzer_typesig.erl
index c45615d670..65c2ff76bb 100644
--- a/lib/dialyzer/src/dialyzer_typesig.erl
+++ b/lib/dialyzer/src/dialyzer_typesig.erl
@@ -1684,11 +1684,14 @@ solve_scc(SCC, Map, State, TryingUnit) ->
true ->
?debug("SCC ~w reached fixpoint\n", [SCC]),
NewTypes = unsafe_lookup_type_list(Funs, Map2),
- case lists:all(fun(T) -> t_is_none(t_fun_range(T)) end, NewTypes)
+ case erl_types:any_none([t_fun_range(T) || T <- NewTypes])
andalso TryingUnit =:= false of
true ->
- UnitTypes = [t_fun(state__fun_arity(F, State), t_unit())
- || F <- Funs],
+ UnitTypes =
+ [case t_is_none(t_fun_range(T)) of
+ false -> T;
+ true -> t_fun(t_fun_args(T), t_unit())
+ end || T <- NewTypes],
Map3 = enter_type_lists(Funs, UnitTypes, Map2),
solve_scc(SCC, Map3, State, true);
false ->