[erlang-questions] Force TLS v1.2

WW kingwang98@REDACTED
Sat Apr 27 22:15:10 CEST 2019


Thank you for your answer Kostis.
But will erlang crash if any other internal function call this internal function with an argument of integer() or someother term()?
-------------------------------------------------------------------------------------------------------------------------------------------------------------- ###=====================================================================###
 -spec convert_result_and_exit(any()) -> no_return().
 %%% 
 ###=====================================================================###
convert_result_and_exit({error, ErrReason}) when is_binary(ErrReason)-> 
exit({error, ErrReason}); convert_result_and_exit(no_permission)-> exit(no_permission).

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?)

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 ?----------------------------------------------------------------------------------------------------------------------------------------------------------------
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?
Is it  the limitation of dialyzer or  wrong in the design? What is the best solution, in my situation?
BR//Wei Wang
Best Regards W.W.(KingWang) 

    On Saturday, April 27, 2019, 4:52:29 PM GMT+2, Kostis Sagonas <kostis@REDACTED> wrote:  
 
 On 4/27/19 12:43 PM, WW wrote:
> But according to spec   the input of the function can be any()! It is 
> obvious the _E  should be considered, otherwise erlang will crash.
> 
> Am I wrong?

Yes, you are.

The function is not exported; all calls to it are from within the module 
(i.e., known to dialyzer), so they cannot be with any() as argument; 
they can only be with the term types that dialyzer has inferred.

Kostis
  
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://erlang.org/pipermail/erlang-questions/attachments/20190427/17c53ce3/attachment.htm>


More information about the erlang-questions mailing list