Re: Parser bug: if missing ", " in list between records, the first is ignored, and no parser warnings are given.

Mattias Waldau <[email protected]>
Newsgroups gmane.comp.lang.erlang.bugs
Message-ID <[email protected]>
Yes, I can agree that

#rec{a=2}#rec{b=3}

is a matter of opinion. However, I completely fail to understand how

#rec{a=2}#rec{a=3}

can be a matter of opinion, since data in the code is LOST.

There should be a warning. My sample below shows how catastropic the missing "," can be.

/mattias

On 07/11/2014 13:22, Roland Karlsson wrote:
> Maybe we shall not discuss this for ever :)
> It is a matter of opinion after all.
>
> But - it is the same IMHO. It is a matter of operators and the need
> to set paranthesis when the precedents and right/left association is
> not obvious.
>
> The rec example can be written thus
>
> (#rec{a=2})#rec{b=3}
>
> Then everything is clear.
>
>
> /Roland
>
>
>
>> 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
>>>>>>> <[email protected] <mailto:[email protected]>>
>>>>>>> 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
>>>>>>>        [email protected] <mailto:[email protected]>
>>>>>>>        http://erlang.org/mailman/listinfo/erlang-bugs
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>> _______________________________________________
>>>>>>> erlang-bugs mailing list
>>>>>>> [email protected]
>>>>>>> http://erlang.org/mailman/listinfo/erlang-bugs
>>>>>>>
>>>>>> --
>>>>>> Loïc Hoguin
>>>>>> http://ninenines.eu
>>>>>> _______________________________________________
>>>>>> erlang-bugs mailing list
>>>>>> [email protected]
>>>>>> http://erlang.org/mailman/listinfo/erlang-bugs
>>>>>>
>>>>>
>>>> --
>>>> Loïc Hoguin
>>>> http://ninenines.eu
>>>>
>>>
>> --
>> Loïc Hoguin
>> http://ninenines.eu
>> _______________________________________________
>> erlang-bugs mailing list
>> [email protected]
>> http://erlang.org/mailman/listinfo/erlang-bugs
>>
>

_______________________________________________
erlang-bugs mailing list
[email protected]
http://erlang.org/mailman/listinfo/erlang-bugs
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.