[erlang-questions] picky dialyzer

Björn Gustavsson bgustavsson@REDACTED
Fri Jan 14 15:40:35 CET 2011


On Thu, Jan 13, 2011 at 2:09 PM, Kostis Sagonas <kostis@REDACTED> wrote:
> Ulf Wiger wrote:
>>
>> On 13 Jan 2011, at 12:09, Kostis Sagonas wrote:
>> ....
>>>
>>> mfa() is an alias for {atom(),atom(),byte()}.
>>
>> Ahh, as in {Module, Function, Arity}?
>>
>> In the System Limits of the Efficiency Guide, it says that you can have
>> 256 arguments in a function or fun. Since dialyzer is never wrong, I will
>> assume that the Efficiency Guide is? :)
>
> Let's see...
>
> %%=========================================================
> -module(f_256).
>
> -export([f/256]).
>
> f(_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_)
> -> ok.
> %%==========================================================
>
>
> % erlc f_256.erl
> % ~/HiPE/otp/bin/erl
> Erlang R14B02 (erts-5.8.3) [source] [smp:4:4] [rq:4] [async-threads:0]
> [hipe] [kernel-poll:false]
>
> Eshell V5.8.3  (abort with ^G)
> 1> l(f_256).
> {"Kernel pid
> terminated",application_controller,"{application_terminated,kernel,shutdown}"}
>
> Crash dump was written to: erl_crash.dump
> Kernel pid terminated (application_controller)
> ({application_terminated,kernel,shutdown})
>

Works fine for me:

$ erlc f_256.erl
$ /ldisk/bjorn/otp/bin/erl
Erlang R14B02 (erts-5.8.3) [source] [smp:4:4] [rq:4] [async-threads:0]
[kernel-poll:false]

Eshell V5.8.3  (abort with ^G)
1> l(f_256).
{module,f_256}
2>


If I try to load a function with 257 arguments, the loader will
refuse to load the file:

Erlang R14B02 (erts-5.8.3) [source] [smp:4:4] [rq:4] [async-threads:0]
[kernel-poll:false]

Eshell V5.8.3  (abort with ^G)
1> c(f_257).

=ERROR REPORT==== 14-Jan-2011::15:34:45 ===
beam/beam_load.c(2115): Error loading function f_257:f/257: op
i_func_info: IaaI:
  too many arguments: 257

{error,badfile}

=ERROR REPORT==== 14-Jan-2011::15:34:45 ===
Loading of /home/bjorn/test/f_257.beam failed: badfile
2>


(Hint: Note that HiPE is not enabled in the
emulator I used.)

-- 
Björn Gustavsson, Erlang/OTP, Ericsson AB


More information about the erlang-bugs mailing list