[erlang-bugs] Parser bug: if missing ", " in list between records, the first is ignored, and no parser warnings are given.

Loïc Hoguin essen@REDACTED
Fri Nov 7 13:01:55 CET 2014


I'm not sure how that relates. This expression can be reasonably written 
on purpose. The same cannot be said for #rec{a=2}#rec{b=3}.

On 11/07/2014 02:01 PM, Roland Karlsson wrote:
> If there is a warning there, then all expressions including operators,
> e.g. arithmetic, should have warnings. How about 10 + 1 rem 3 + 7. ?
> Do you know the precedence of + and rem ? What is the result?
>
> /Roland
>
>
>
>> Warnings are ordinary Erlang code which is prone to errors.
>>
>> On 11/07/2014 01:46 PM, Roland Karlsson wrote:
>>> No warning is needed methinks. It is just ordinary Erlang code.
>>> It is equal to.
>>>
>>>> REC1 = #rec{b=3}.
>>>> REC2 = REC1#rec{a=2}.
>>>
>>> Nothing strange at all.
>>>
>>>
>>> /Roland
>>>
>>>
>>>
>>>
>>>> It is legal but there probably should be a warning for this particular
>>>> case. I cannot think of a valid reason to do #rec{a=2}#rec{b=3} when
>>>> you
>>>> can just do #rec{a=2, b=3}.
>>>>
>>>> On 11/07/2014 10:09 AM, Vlad Dumitrescu wrote:
>>>>> Hi Mattias,
>>>>>
>>>>> This isn't a bug. The expression #rec{a=2}#rec{b=3} is legal, and is
>>>>> the
>>>>> same thing as (#rec{a=2})#rec{b=3} or #rec{a=2,b=3}. If the keys
>>>>> overlap, then the last one "wins".
>>>>>
>>>>> best regards,
>>>>> Vlad
>>>>>
>>>>>
>>>>> On Thu, Nov 6, 2014 at 9:21 AM, Mattias Waldau
>>>>> <mattias.waldau@REDACTED <mailto:mattias.waldau@REDACTED>>
>>>>> wrote:
>>>>>
>>>>>       This is the program
>>>>>
>>>>>       -module('missing-comma-not-detected').
>>>>>
>>>>>       -export([data/1]).
>>>>>
>>>>>       -compile(export_all).
>>>>>
>>>>>       -record(shcnode, {
>>>>>              nodename :: any(),
>>>>>              y_axis :: number(),
>>>>>              children :: [any()],
>>>>>              article_number :: number(),
>>>>>              attribute_condition :: string()}).
>>>>>
>>>>>
>>>>>       data(1) ->
>>>>>            [
>>>>>             #shcnode{nodename = start, y_axis = 0, children = [d1285]},
>>>>>             #shcnode{nodename = d1285, y_axis = 295, children = [1939,
>>>>> 1940]}
>>>>>             #shcnode{nodename = 1940, y_axis = 525, children =
>>>>> [bm3203],
>>>>>       article_number = 14432861},
>>>>>             #shcnode{nodename = 1939, y_axis = 530, children =
>>>>> [bm3203],
>>>>>       article_number = 14432860},
>>>>>             #shcnode{nodename = bm3203, y_axis = 915, children = []}
>>>>>            ].
>>>>>
>>>>>
>>>>>       Note the missing "," after  [1939, 1940]}
>>>>>
>>>>>       Only 4 rows are detected
>>>>>
>>>>>       length('missing-comma-not-detected':data(1)).
>>>>>       4
>>>>>
>>>>>       ---
>>>>>
>>>>>       If I add the comma, I get
>>>>>
>>>>>       length('missing-comma-not-detected':data(1)).
>>>>>       5
>>>>>
>>>>>       ----
>>>>>
>>>>>       I am using Erlang 17.3 on ubuntu.
>>>>>
>>>>>       erlang:system_info(otp_release).
>>>>>       "17"
>>>>>
>>>>>       36> |erl -V
>>>>>       Eshell V6.2  (abort with ^G)
>>>>>       1> |
>>>>>
>>>>>       ---
>>>>>
>>>>>       Thanks,
>>>>>
>>>>>       Mattias
>>>>>
>>>>>
>>>>>
>>>>>
>>>>>       _______________________________________________
>>>>>       erlang-bugs mailing list
>>>>>       erlang-bugs@REDACTED <mailto:erlang-bugs@REDACTED>
>>>>>       http://erlang.org/mailman/listinfo/erlang-bugs
>>>>>
>>>>>
>>>>>
>>>>>
>>>>> _______________________________________________
>>>>> erlang-bugs mailing list
>>>>> erlang-bugs@REDACTED
>>>>> http://erlang.org/mailman/listinfo/erlang-bugs
>>>>>
>>>>
>>>> --
>>>> Loïc Hoguin
>>>> http://ninenines.eu
>>>> _______________________________________________
>>>> erlang-bugs mailing list
>>>> erlang-bugs@REDACTED
>>>> http://erlang.org/mailman/listinfo/erlang-bugs
>>>>
>>>
>>>
>>
>> --
>> Loïc Hoguin
>> http://ninenines.eu
>>
>
>

-- 
Loïc Hoguin
http://ninenines.eu



More information about the erlang-bugs mailing list