From 9949c1e03cdde87548371d5a9b53a997e3088dc6 Mon Sep 17 00:00:00 2001 From: Stavros Aronis Date: Wed, 30 Nov 2011 20:19:31 +0100 Subject: Fix crash in Dialyzer Variable substitution was not generalizing any unknown variables. --- lib/dialyzer/src/dialyzer_typesig.erl | 3 +-- lib/dialyzer/test/small_SUITE_data/src/maybe_improper.erl | 7 +++++++ 2 files changed, 8 insertions(+), 2 deletions(-) create mode 100644 lib/dialyzer/test/small_SUITE_data/src/maybe_improper.erl (limited to 'lib/dialyzer') diff --git a/lib/dialyzer/src/dialyzer_typesig.erl b/lib/dialyzer/src/dialyzer_typesig.erl index 92868b6878..4268814859 100644 --- a/lib/dialyzer/src/dialyzer_typesig.erl +++ b/lib/dialyzer/src/dialyzer_typesig.erl @@ -2046,8 +2046,7 @@ lookup_type(Key, Map) -> %% case cerl:is_literal(Key) of %% true -> t_from_term(cerl:concrete(Key)); %% false -> - Subst = t_subst(Key, Map), - t_sup(Subst, Subst). + t_subst(Key, Map). %% end. mk_var(Var) -> diff --git a/lib/dialyzer/test/small_SUITE_data/src/maybe_improper.erl b/lib/dialyzer/test/small_SUITE_data/src/maybe_improper.erl new file mode 100644 index 0000000000..1743d81493 --- /dev/null +++ b/lib/dialyzer/test/small_SUITE_data/src/maybe_improper.erl @@ -0,0 +1,7 @@ +-module(maybe_improper). + +-export([s/1]). + +-spec s(maybe_improper_list(X,Y)) -> {[X], maybe_improper_list(X,Y)}. +s(A) -> + lists:split(2,A). -- cgit v1.2.3