<div><div dir="auto">Hey guys </div></div><div dir="auto"><br></div><div dir="auto">Why this thread is about Dialyzer?</div><div dir="auto">I created it because a TLS issue i had (see my original post).</div><div dir="auto"><br></div><div dir="auto">Thank you.</div><div dir="auto">/Frank</div><div dir="auto"><br></div><div dir="auto"> </div><div><div class="gmail_quote"><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">On Sat, Apr 27, 2019 at 08:15:10PM +0000, WW wrote:<br>
> Thank you for your answer Kostis.<br>
> But will erlang crash if any other internal function call this internal function with an argument of integer() or someother term()?<br>
<br>
   The point here is that dialyzer can *prove* that the function will<br>
not be called with anything other than the first two cases. It<br>
therefore tells you that the third catch-all case is impossible. You<br>
can safely remove that third clause.<br>
<br>
   If at some point in the future you write some code which could call<br>
the function with some other input, then dialyzer will tell you about<br>
that, too.<br>
<br>
   If you want a quiet dialyzer, the solution here is to remove the<br>
third (catch-all) clause, until you have some code which actually<br>
needs it.<br>
<br>
   Hugo.<br>
<br>
> -------------------------------------------------------------------------------------------------------------------------------------------------------------- ###=====================================================================###<br>
>  -spec convert_result_and_exit(any()) -> no_return().<br>
>  %%% <br>
>  ###=====================================================================###<br>
> convert_result_and_exit({error, ErrReason}) when is_binary(ErrReason)-> <br>
> exit({error, ErrReason}); convert_result_and_exit(no_permission)-> exit(no_permission).<br>
> <br>
> test() ->    convert_result_and_exit ( [1,2,3] ).     ( It is a use case , why "so they cannot be with any() as argument" ?  Where in the erlang doc defined that?)<br>
> <br>
> In this case, test() will crash owing to missing the convert_result_and_exit(_E) -> exit({error, <<"Unknown reason">>}).   I do not want it crash, I need a quiet exit (catch it afterwards)instead, will that be possible ?----------------------------------------------------------------------------------------------------------------------------------------------------------------<br>
> The question is : Why dialyzer could not detect the internal non-exported spec ?  Or Erlang module interal function should not have any spec at all , because dialyzer doesn't care?<br>
> Is it  the limitation of dialyzer or  wrong in the design? What is the best solution, in my situation?<br>
> BR//Wei Wang<br>
> Best Regards W.W.(KingWang) <br>
> <br>
>     On Saturday, April 27, 2019, 4:52:29 PM GMT+2, Kostis Sagonas <<a href="mailto:kostis@cs.ntua.gr" target="_blank">kostis@cs.ntua.gr</a>> wrote:  <br>
>  <br>
>  On 4/27/19 12:43 PM, WW wrote:<br>
> > But according to spec   the input of the function can be any()! It is <br>
> > obvious the _E  should be considered, otherwise erlang will crash.<br>
> > <br>
> > Am I wrong?<br>
> <br>
> Yes, you are.<br>
> <br>
> The function is not exported; all calls to it are from within the module <br>
> (i.e., known to dialyzer), so they cannot be with any() as argument; <br>
> they can only be with the term types that dialyzer has inferred.<br>
> <br>
> Kostis<br>
>   <br>
<br>
> _______________________________________________<br>
> erlang-questions mailing list<br>
> <a href="mailto:erlang-questions@erlang.org" target="_blank">erlang-questions@erlang.org</a><br>
> <a href="http://erlang.org/mailman/listinfo/erlang-questions" rel="noreferrer" target="_blank">http://erlang.org/mailman/listinfo/erlang-questions</a><br>
<br>
<br>
-- <br>
Hugo Mills             | You can get more with a kind word and a two-by-four<br>
hugo@... <a href="http://carfax.org.uk" rel="noreferrer" target="_blank">carfax.org.uk</a> | than you can with just a kind word.<br>
<a href="http://carfax.org.uk/" rel="noreferrer" target="_blank">http://carfax.org.uk/</a>  |<br>
PGP: E2AB1DE4          |                                Marcus Cole, Babylon 5<br>
_______________________________________________<br>
erlang-questions mailing list<br>
<a href="mailto:erlang-questions@erlang.org" target="_blank">erlang-questions@erlang.org</a><br>
<a href="http://erlang.org/mailman/listinfo/erlang-questions" rel="noreferrer" target="_blank">http://erlang.org/mailman/listinfo/erlang-questions</a><br>
</blockquote></div></div>