diff options
author | Henrik Nord <[email protected]> | 2011-08-24 15:34:01 +0200 |
---|---|---|
committer | Henrik Nord <[email protected]> | 2011-08-24 15:34:06 +0200 |
commit | adeecbacf58888df01d11c74f031581e2aab9520 (patch) | |
tree | 7e9cb5111796715d59ebc50e025ab61f14ad5226 /lib/dialyzer/src | |
parent | 7d880af82b2aafda9fe88086f790c2ba4d117955 (diff) | |
parent | 3a7af1c4934c0ce4682d88a6dafc178c1d12a703 (diff) | |
download | otp-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.erl | 9 |
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 -> |