[erlang-questions] the record volates the declared type when I analysis the code

Dániel Szoboszlay <>
Fri Apr 18 11:55:51 CEST 2014


Hi,

I’d recommend you to decouple the type spec from the record the following way:

-record(kv, {key, value}).
-type kv() :: #kv{key::string(), value::integer()}.

Bonus feature: you can export the kv/0 type from your module (if you need to), but you can’t do that when the types are embedded into the record declaration.

Regards,
Daniel

On 2014 Apr 18, at 11:40 , Solomon <> wrote:

> Hi.
> 
> I declared a record like this:
> -record(kv, {key::string(), value::integer()}).
> 
> and I create a mnesia table to save the record 'kv'
> 
> I select the table like this:
> mnesia:dirty_select(table, [{#kv{key='_', value='$1'}, [{'>', '$1',
> 10}], ['_']}]).
> 
> then I analysis the code:
> dialyzer --plt ./.depsolver_plt ./ebin/my.beam
> 
> and I get the error:
> Record construction #kv{key::'_', value::'$1'} violates the declared
> type of field key::string() and value::integer()
> 
> How should I fix the error?
> 
> Thanks.
> _______________________________________________
> erlang-questions mailing list
> 
> http://erlang.org/mailman/listinfo/erlang-questions

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://erlang.org/pipermail/erlang-questions/attachments/20140418/7d4a3b95/attachment.html>


More information about the erlang-questions mailing list