[erlang-questions] Dialyzer type/spec info question

Robert Virding rvirding@REDACTED
Mon Nov 17 17:39:52 CET 2014


Ah, so then in principle I can make my own specialised versions of the
dialyzer load modules which takes the core which the LFE compiler generates
and extracts the core and the type/spec data dialyzer needs. This without
any Erlang AST which LFE never generates anyway.

Now we are getting somewhere useful. With this we don't really need to be
able to store core in the .beam files if we can accept using source files
as input.

Robert


On 17 November 2014 17:32, Stavros Aronis <aronisstav@REDACTED> wrote:

> For .erl files, dialyzer calls the compiler with 'to_pp', which stops the
> compilation before code is converted to Core, and reads attributes from
> there.
>
> Judging from v3_core, line 170 the two representations should be
> compatible.
>
> /Stavros
>
> On Mon, Nov 17, 2014 at 5:11 PM, Robert Virding <rvirding@REDACTED>
> wrote:
>
>> From where does it get it if I have .erl files as input? From the AST as
>> well? Do you know if there is any difference in the data itself between the
>> AST and core? I am guessing not but want to check. If there is no
>> difference then the info could be gotten from Core. This would make it
>> easier to use dialyzer together with LFE.
>>
>> Robert
>>
>>
>> On 17 November 2014 17:03, Stavros Aronis <aronisstav@REDACTED> wrote:
>>
>>> Hi Robert,
>>>
>>> Dialyzer gets this info from beam_lib:chunks(File, [abstract_code])
>>> which corresponds to the AST and is included in beam files if +debug_info
>>> is used while compiling.
>>>
>>> To my knowledge there is no reason to not let sources be combined
>>> (except perhaps when building a PLT), but the implementation seems to
>>> require uniformity.
>>>
>>> Relevant functions:
>>> dialyzer_utils:get_abstract_code_from_{src,beam}/{1,2}, get_spec_info/3,
>>> get_record_and_type_info/1.
>>>
>>> Regards,
>>>
>>> Stavros
>>>
>>> On Mon, Nov 17, 2014 at 4:53 PM, Robert Virding <rvirding@REDACTED>
>>> wrote:
>>>
>>>> From where does dialyzer get the user added type and spec info? From
>>>> the AST, or from Core erlang which contains the same type/spec data? And
>>>> why? Can I control it?
>>>>
>>>> An extra question: why doesn't dialyzer allow me to mix input from both
>>>> .erl and .beam files? Or does it and I have missed that?
>>>>
>>>> Robert
>>>>
>>>>
>>>> _______________________________________________
>>>> erlang-questions mailing list
>>>> erlang-questions@REDACTED
>>>> http://erlang.org/mailman/listinfo/erlang-questions
>>>>
>>>>
>>>
>>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://erlang.org/pipermail/erlang-questions/attachments/20141117/236bf191/attachment.htm>


More information about the erlang-questions mailing list