[erlang-bugs] More compiler errors
Kostis Sagonas
kostis@REDACTED
Fri Feb 28 23:36:28 CET 2014
On 02/28/2014 02:05 PM, Ulf Norell wrote:
> I ran some more quickcheck tests and found a few more bugs. These are
> all tested on R17-rc1:
I am obviously only speaking for myself here, but I think there is a
fine line on what is "reasonable" to expect from a compiler (and thus
what can be classified as a bug) and what is not. IMO, the Erlang
compiler has every right to refuse to compile code that is arguably
weird, to say the least.
For example, the first two programs I would not expect any sensible
programmer to write, and IMO these Erlang programs should be burned in
hell. (No sensible programmer would write erlang:'andalso' and I would
definitely do not want to have to read code that looks like that.) If
you simply change the calls from being remote calls to being operators
(e.g. write "true andalso true" for the first one -- similarly for the
second, although this one actually has a type error and should perhaps
not be compiled anyway), the BEAM compiler happily accepts them.
> -module(bug1).
> f() when erlang:'andalso'(true, true) ->
> ok.
>
> -module(bug2).
> f(X) when erlang:'and'(bad, X) ->
> ok.
The third program is the only one that I would classify as a bug here.
> -module(bug3).
> f(Rec, Tag) ->
> erlang:is_record(Rec, Tag, 1) orelse error.
The problem exists even without the erlang: part. This should be fixed.
As to this last program, IMO it's non-sensical:
> -module(bug4).
> f(_) ->
> (fun f/1)().
The compiler has every right to throw up upon seeing code like this. Why
wouldn't it? ;)
Kostis
More information about the erlang-bugs
mailing list