Skip to content

Instantly share code, notes, and snippets.

@cmeiklejohn
Created April 11, 2013 16:03
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save cmeiklejohn/77e2c2b709d85b108aaf to your computer and use it in GitHub Desktop.
Save cmeiklejohn/77e2c2b709d85b108aaf to your computer and use it in GitHub Desktop.
admin_node.erl:42: Call to missing or unexported function admin_routes:node_route/1
admin_node.erl:75: The call riak_control_formatting:action_result({'error', 'unknown_action'},Req::any(),C::any()) breaks the contract ({'badrpc',any()},wrq:reqdata(),context()) -> {boolean(),wrq:reqdata(),context()}
admin_node.erl:89: The call riak_control_formatting:node_ring_details(P::any(),Node::atom()) will never return since the success typing is (#partition_info{index::'undefined' | integer(),partition::'undefined' | integer(),owner::atom(),vnodes::'undefined' | [{_,_}],handoffs::'undefined' | [{_,_,_}]},maybe_improper_list()) -> [{'i' | 'index' | 'node' | 'reachable' | 'status' | [any(),...],atom() | binary() | integer()}] and the contract is (partition(),maybe_improper_list()) -> [{'i' | 'index' | 'node' | 'reachable' | 'status' | [any(),...],atom() | binary() | integer()}]
admin_node_leave.erl:40: Call to missing or unexported function admin_routes:node_route/1
admin_node_stop.erl:40: Call to missing or unexported function admin_routes:node_route/1
admin_routes.erl:45: The specification for admin_routes:vnode_route/1 states that the function might also return [string()] but the inferred return is none()
admin_routes.erl:48: The specification for admin_routes:vnode_route/0 states that the function might also return [string()] but the inferred return is none()
admin_routes.erl:52: Type specification admin_routes:nodes_route() -> [string()] is a supertype of the success typing: admin_routes:nodes_route() -> [string(),...]
admin_routes.erl:54: Type specification admin_routes:partitions_route() -> [string()] is a supertype of the success typing: admin_routes:partitions_route() -> [string(),...]
admin_routes.erl:56: Type specification admin_routes:cluster_route() -> [string()] is a supertype of the success typing: admin_routes:cluster_route() -> [string(),...]
riak_control_app.erl:31: The specification for riak_control_app:start/2 states that the function might also return {'ok',pid(),_} but the inferred return is 'ignore' | {'error',_} | {'ok',pid()}
riak_control_security.erl:146: The specification for riak_control_security:csrf_token/2 states that the function might also return 'undefined' but the inferred return is [any()]
riak_control_session.erl:144: Type specification riak_control_session:init([any()]) -> {'ok',state()} is a supertype of the success typing: riak_control_session:init([]) -> {'ok',#state{vsn::'undefined' | integer(),services::'undefined' | [{atom(),'fallback' | 'primary' | 'undefined'}],partitions::'undefined' | [#partition_info{index::'undefined' | integer(),partition::'undefined' | integer(),owner::atom(),vnodes::'undefined' | [{atom(),'fallback' | 'primary' | 'undefined'}],handoffs::'undefined' | [{atom(),integer(),atom()}]}],nodes::'undefined' | [#member_info{node::atom(),status::'down' | 'incompatible' | 'invalid' | 'leaving' | 'undefined' | 'valid',reachable::'false' | 'true' | 'undefined',vnodes::'undefined' | [{{atom(),atom()},atom()}],handoffs::'undefined' | [{atom(),integer(),atom()}],ring_pct::'undefined' | float(),pending_pct::'undefined' | float(),mem_total::'undefined' | integer(),mem_used::'undefined' | integer(),mem_erlang::'undefined' | integer(),action::'leave' | 'remove' | 'undefined' | {'force_replace',atom()} | {'replace',atom()},replacement::atom()}],update_tick::'false' | 'true' | 'undefined'}}
riak_control_session.erl:378: Type specification riak_control_session:get_partition_details(#state{},{integer(),term()},handoffs()) -> #partition_info{} is a supertype of the success typing: riak_control_session:get_partition_details(#state{vsn::'undefined' | integer(),services::'undefined' | [{atom(),'fallback' | 'primary' | 'undefined'}],partitions::'undefined' | [#partition_info{index::'undefined' | integer(),partition::'undefined' | integer(),owner::atom(),vnodes::'undefined' | [{atom(),'fallback' | 'primary' | 'undefined'}],handoffs::'undefined' | [{atom(),integer(),atom()}]}],nodes::'undefined' | [#member_info{node::atom(),status::'down' | 'incompatible' | 'invalid' | 'leaving' | 'undefined' | 'valid',reachable::'false' | 'true' | 'undefined',vnodes::'undefined' | [{{atom(),atom()},atom()}],handoffs::'undefined' | [{atom(),integer(),atom()}],ring_pct::'undefined' | float(),pending_pct::'undefined' | float(),mem_total::'undefined' | integer(),mem_used::'undefined' | integer(),mem_erlang::'undefined' | integer(),action::'leave' | 'remove' | 'undefined' | {'force_replace',atom()} | {'replace',atom()},replacement::atom()}],update_tick::'false' | 'true' | 'undefined'},{integer(),atom()},[{atom(),integer(),atom()}]) -> #partition_info{index::'undefined' | integer(),partition::'undefined' | integer(),owner::atom(),vnodes::'undefined' | [{atom(),'fallback' | 'primary' | 'undefined'}],handoffs::'undefined' | [{atom(),integer(),atom()}]}
riak_control_session.erl:418: Type specification riak_control_session:nodes_and_claim_percentages(ring()) -> [any()] is a supertype of the success typing: riak_control_session:nodes_and_claim_percentages(_) -> [{_,_}]
@tmcgilchrist
Copy link

I think a bunch of these are because of the extra flag to dialyzer (-Wunderspecs) which reports specs that are too liberal / permissive.

I'm starting to think it'd be better to have that off by default cause it raises a number of false positives.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment