From fc075ff9064eccd3ea2da0c067ec9ef01aaeb183 Mon Sep 17 00:00:00 2001 From: Stavros Aronis Date: Thu, 10 Nov 2011 13:33:58 +0100 Subject: Allow none() as return value in callbacks --- lib/dialyzer/src/dialyzer_behaviours.erl | 15 ++++++++++----- 1 file changed, 10 insertions(+), 5 deletions(-) (limited to 'lib/dialyzer/src/dialyzer_behaviours.erl') diff --git a/lib/dialyzer/src/dialyzer_behaviours.erl b/lib/dialyzer/src/dialyzer_behaviours.erl index b478af01df..82963783d8 100644 --- a/lib/dialyzer/src/dialyzer_behaviours.erl +++ b/lib/dialyzer/src/dialyzer_behaviours.erl @@ -110,11 +110,16 @@ check_all_callbacks(Module, Behaviour, [Cb|Rest], Plt, Acc) -> Acc00 = Acc0, {ReturnType, ArgTypes} = RetArgTypes, Acc01 = - case erl_types:t_is_none(erl_types:t_inf(ReturnType, CbReturnType)) of - false -> Acc00; - true -> - [{callback_type_mismatch,[Behaviour, Function, - Arity, ReturnType]}|Acc00] + case erl_types:t_is_subtype(ReturnType, CbReturnType) of + true -> Acc00; + false -> + case erl_types:t_is_none( + erl_types:t_inf(ReturnType, CbReturnType)) of + false -> Acc00; + true -> + [{callback_type_mismatch,[Behaviour, Function, + Arity, ReturnType]}|Acc00] + end end, Acc02 = case erl_types:any_none( -- cgit v1.2.3