[erlang-questions] type specification

Zoltan Lajos Kis kiszl@REDACTED
Fri Jul 2 19:30:21 CEST 2010


On 7/2/2010 6:41 PM, Kostis Sagonas wrote:
> Serge Aleynikov wrote:
>> Can user-defined type specification be imported from or referenced to 
>> another module?
>>
>> E.g. if I have a function that returns date/time value in the same 
>> format as calendar:now_to_local_time/1 whose type t_datetime1970() is 
>> defined in the calendar module, what would the -spec of my function be:
>>
>> -spec local_time() -> ???
>> local_time() ->
>>     calendar:now_to_local_time(now()).
>
> If the type is exported (cf. the new -export_type attribute) then what 
> you want to write is as simple as:
>
>   -spec local_time() -> calendar:t_datetime1970().
>
> In this particular case, the t_datetime1970() is not exported, so you 
> either need to clone it in your module or send a request to the 
> module's maintainer to export this type.
>
> Kostis
>

Could you explain how the new export_type attribute relates to the 
opaque attribute?

In R14A it seems that if I define an opaque type (without exporting it), 
and try to use it in another module, dialyzer emits an unknown type warning.
If I export the type the warning is not emitted, but the type is not 
treated as opaque anymore...

Thank you,
Zoltan.



More information about the erlang-questions mailing list