[erlang-questions] Multiple types with the same name in Dialyzer
Thu May 26 11:24:58 CEST 2011
Anthony Ramine wrote:
> I have a type value/1 defined as `-type value(LabelT) :: ...` and I would
> like to have a type value/0 with a default LabelT type value like
> `-type value() :: value(binary())`. The file compiles just fine but Dialyzer
> complains that "Type value is already defined".
> This exception is thrown from dialyzer_utils:add_new_type/6  because the arity
> is not a part of a type identity, you can see this in erl_types:type_is_defined/3 .
> What I really don't understand is that while the arity is not a part of it, whether
> the given type is opaque or not is, so you can have both `-type t()` and `-opaque t()`.
> So I have two questions:
> - Is being unable to have both type value/0 and value/1 a bug?
> - Does being able to have both type t opaque and non-opaque have any purpose?
We are aware of these issues and we are in the process of fixing them.
Unfortunately, they require major surgery...
Sort answers to your questions:
1. No -- just a current limitation that will be lifted soon, I hope.
2. No -- it should be prohibited by erl_lint already; will happen.
More information about the erlang-questions