[erlang-patches] Forbid local fun names in Core Erlang guards

Anthony Ramine <>
Wed Jan 16 15:09:39 CET 2013


The inliner seems to use integer for new variables.

I amended my patch and its message accordingly, please refetch.

-- 
Anthony Ramine

Le 16 janv. 2013 à 14:47, Anthony Ramine a écrit :

> Oops.
> 
> I was simply trying to replicate this in my rm-reverse-eta-conversion branch.
> 
> Will investigate on the proper branch now.
> 
> Regards,
> 
> -- 
> Anthony Ramine
> 
> Le 16 janv. 2013 à 14:29, Anthony Ramine a écrit :
> 
>> Thanks for the details.
>> 
>> I'll rebase against current master and try again, line 428 of compilation_SUITE
>> can't fail that way in my current branch.
>> 
>> -- 
>> Anthony Ramine
>> 
>> Le 16 janv. 2013 à 14:24, Fredrik a écrit :
>> 
>>> It was not the bootstrap, I think you have to take a look at those testcases,
>>> Here's the reason's:
>>> compilation_SUITE:self_compile_1
>>>    failed on line 428
>>>    Reason: suite_failed
>>> 
>>> 
>>> 
>>> 
>>> 
>>> 
>>> 
>>> inline_SUITE:try_inline failed on line 117
>>>    Reason: {badmatch,error}
>>> 
>>> 
>>> 
>>> 
>>> 
>>> 
>>> 
>>> inline_SUITE:try_inline
>>>    failed on line 117
>>>    Reason: {badmatch,error}
>>> 
>>> 
>>> BR Fredrik Gustafsson
>>> Erlang OTP Team
>>> On 01/16/2013 12:02 PM, Anthony Ramine wrote:
>>>> I can't reproduce any of these failures.
>>>> 
>>>> Could I have more informations about how they failed?
>>>> 
>>>> My wild guess is that it is related (maybe) to the bootstrap compiler,
>>>> but I'm probably wrong.
>>>> 
>>>> Björn, any idea?
>>>> 
>>>> Regards,
>>>> 
>>>> 
>>>> -- 
>>>> Anthony Ramine
>>>> 
>>>> Le 16 janv. 2013 à 11:46, Fredrik a écrit :
>>>> 
>>>> 
>>>>>> 
>>>>> Hello Anthony,
>>>>> 
>>>>>> 
>>>>> Your patch is failing the following testsuites and testcases:
>>>>> 
>>>>>> 
>>>>> compilation_SUITE : self_compile
>>>>> 
>>>>>> 
>>>>> inline_SUITE : decode1
>>>>> 
>>>>>> 
>>>>> inline_SUITE : pseudoknot
>>>>> 
>>>>>> 
>>>>>> 
>>>>> Please correct and give me notice,
>>>>> 
>>>>>> 
>>>>>> 
>>>>> BR Fredrik Gustafsson
>>>>> 
>>>>>> 
>>>>> Erlang OTP Team
>>>>> 
>>>>>> 
>>>>> On 01/15/2013 11:40 AM, Fredrik wrote:
>>>>> 
>>>>>>>> Hello Anthony ;)
>>>>>>>> 
>>>>>> It is now in the 'master-pu' branch.
>>>>>> 
>>>>>>>> 
>>>>>> Thanks,
>>>>>> 
>>>>>>>> 
>>>>>>>> 
>>>>>> BR Fredrik Gustafsson
>>>>>> 
>>>>>>>> 
>>>>>> Erlang OTP Team
>>>>>> 
>>>>>>>> 
>>>>>> On 01/15/2013 11:28 AM, Anthony Ramine wrote:
>>>>>> 
>>>>>>>>>> 
>>>>>>> Repost on only erlang-patches so that Fredrik's MUA see it;)
>>>>>>> 
>>>>>>>>>> 
>>>>>>>>>> 
>>>>>>> -- Anthony Ramine Début du message réexpédié :
>>>>>>> 
>>>>>>>>>>>>>> De : Anthony Ramine<>
>>>>>>>>>>>>>> 
>>>>>>>>> Objet : Rép : Local function names in Core Erlang guards
>>>>>>>>> 
>>>>>>>>>>>>>> 
>>>>>>>>> Date : 11 janvier 2013 17:12:37 HNEC
>>>>>>>>> 
>>>>>>>>>>>>>> À : erlang-bugs Bugs<>, erlang patches<>
>>>>>>>>>>>>>> Cc : Bjorn Gustavsson<>
>>>>>>>>>>>>>>>> 
>>>>>>>>>> Hi,
>>>>>>>>>> 
>>>>>>>>>>>>>>>> 
>>>>>>>>>> I wrote a really small patch to forbid local fun variables in Core Erlang guards.
>>>>>>>>>> 
>>>>>>>>>>>>>> 
>>>>>>>>> There is no test case as there is no test suite for core_lint.
>>>>>>>>> 
>>>>>>>>>>>>>>>> 
>>>>>>>>>> I know the code freeze for R16 is soon but this is really a very small thing.
>>>>>>>>>> 
>>>>>>>>>>>>>>>> 
>>>>>>>>>>   git fetchhttps://github.com/nox/otp.git  forbid-locals-in-core-guards
>>>>>>>>>> 
>>>>>>>>>>>>>>>>   https://github.com/nox/otp/compare/erlang:master...forbid-locals-in-core-guards
>>>>>>>>>>>>>>   https://github.com/nox/otp/compare/erlang:master...forbid-locals-in-core-guards.patch
>>>>>>>>>>>>>>>> 
>>>>>>>>>> Regards,
>>>>>>>>>> 
>>>>>>>>>>>>>>>> 
>>>>>>>>>> -- >  Anthony Ramine
>>>>>>>>>> 
>>>>>>>>>>>>>>>> 
>>>>>>>>>> Le 19 nov. 2012 à 11:02, Anthony Ramine a écrit :
>>>>>>>>>> 
>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>>>> 
>>>>>>>>>>> Hi,
>>>>>>>>>>> 
>>>>>>>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>> While patching the compiler to allow substitutions of variables which values are
>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>>>> 
>>>>>>>>>>> local function names [1], I discovered that core_lint doesn't forbid them in guards,
>>>>>>>>>>> 
>>>>>>>>>>>>>>>>>> 
>>>>>>>>>>> even though that makes the compiler passes further down the road generate badly-formed
>>>>>>>>>>> 
>>>>>>>>>>>>>>>>>> 
>>>>>>>>>>> BEAM code.
>>>>>>>>>>> 
>>>>>>>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>> Is that a bug in core_lint or a bug in the BEAM code generation? Should local function
>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>>>> 
>>>>>>>>>>> names be allowed in guards?
>>>>>>>>>>> 
>>>>>>>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>> If it is a bug in core_lint, I can make a patch for that; if it is a bug in the BEAM
>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>>>> 
>>>>>>>>>>> code generation I would love to fix it and remove the code I wrote to avoid the
>>>>>>>>>>> 
>>>>>>>>>>>>>>>>>> 
>>>>>>>>>>> substitution in guards... but I lack knowledge about the BEAM innards.
>>>>>>>>>>> 
>>>>>>>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>> Regards,
>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>>>>>>>> [1]http://erlang.org/pipermail/erlang-patches/2012-November/003137.html
>>>>>>>>>>>>> 
>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>> -- >>  Anthony Ramine
>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>> 
>>>>>>>> 
>>>>>>>> 
>>>>>> _______________________________________________
>>>>>> 
>>>>>>>> 
>>>>>> erlang-patches mailing list
>>>>>> 
>>>>>>>> 
>>>>>>>> http://erlang.org/mailman/listinfo/erlang-patches
>>>>>> 
>>> 
>> 
> 



More information about the erlang-patches mailing list