[erlang-bugs] More compiler errors

Anthony Ramine n.oxyde@REDACTED
Sat Mar 1 18:17:37 CET 2014


https://github.com/erlang/otp/pull/253
https://github.com/erlang/otp/pull/254
https://github.com/erlang/otp/pull/255
https://github.com/erlang/otp/pull/256

-- 
Anthony Ramine

Le 1 mars 2014 à 15:49, Anthony Ramine <n.oxyde@REDACTED> a écrit :

> Am fixing this.
> 
> Replied inline.
> 
> Regards,
> 
> -- 
> Anthony Ramine
> 
> Le 28 févr. 2014 à 14:05, Ulf Norell <ulf.norell@REDACTED> a écrit :
> 
>> -module(bug1).
>> f() when erlang:'andalso'(true, true) ->
>>  ok.
> 
> ‘andalso’ is not a real erlang function, bug in erl_lint:is_gexpr_op/2.
> 
>> -module(bug2).
>> f(X) when erlang:'and'(bad, X) ->
>>  ok.
> 
> Pass beam_bool doesn’t handle non-boolean values in beam_bool:bopt_cg/5 and beam_bool:bopt_cg_not/1.
> 
>> -module(bug3).
>> f(Rec, Tag) ->
>>  erlang:is_record(Rec, Tag, 1) orelse error.
> 
> Pass sys_core_fold doesn’t see that erlang:is_record/3 is not a valid guard expression if its second and third arguments aren’t a literal atom and a literal integer.
> 
>> -module(bug4).
>> f(_) ->
>>  (fun f/1)().
> 
> Pass v3_core doesn’t produce a safe variable in the case a fun reference with a mismatching arity is applied directly.
> 
> From the Core spec:
> 
> 	If e0 does not evaluate to a closure, or if the number n of arguments in the application is not equal to the arity k of f, the behaviour is implementation-dependent.
> 
> If you run the Core linking pass over that module, you will see the generated Core code is rejected by the compiler itself:
> 
> $ bin/erlc +clint bug4.erl
> bug4: argument count mismatch in f/1
> 
> Emitting "let Foo = 'f'/1 in apply Foo ()" makes the compiler happy.
> 




More information about the erlang-bugs mailing list