priestjim / gen_rpc

A scalable RPC library for Erlang-VM based languages
Apache License 2.0
221 stars 81 forks source link

Start adding Typespec #12

Closed linearregression closed 9 years ago

linearregression commented 9 years ago
priestjim commented 9 years ago

Did you typer it or manually generate them?

linearregression commented 9 years ago

Typer then hand massage. Annotate obscure the src code make it hard to read. Context is also absent. For example: -spec waiting_for_socket({'socket_ready',port()},#state{socket::'undefined' | port(),send_timeout::'undefined' | non_neg_integer(),inactivity_timeout::'infinity' | 'undefined' | non_neg_integer(),client_ip::'undefined' | tuple(),client_node::atom()}) -> {'next_state','waiting_for_data',#state{socket::port(),send_timeout::'undefined' | non_neg_integer(),inactivity_timeout::'infinity' | 'undefined' | non_neg_integer(),client_ip::'undefined' | tuple(),client_node::atom()}} | {'stop',{'badtcp','invalid_client_ip'},#state{socket::'undefined' | port(),send_timeout::'undefined' | non_neg_integer(),inactivity_timeout::'infinity' | 'undefined' | non_neg_integer(),client_ip::'undefined' | tuple(),client_node::atom()}}. waiting_for_socket({socket_ready, Socket}, #state{client_ip=ClientIp} = State) -> ... The spec is for tool processing and honestly not economical. I was very tempted to put those that to some header file.

priestjim commented 9 years ago

You can try using make spec after running make dialyzer to get everything generated. Thanks!