Re: [erlang-patches] Compiler/linter bug breaking unused variable warnings

Fredrik <[email protected]>
Newsgroups gmane.comp.lang.erlang.bugs,gmane.comp.lang.erlang.patches
Message-ID <[email protected]>
On 06/06/2013 01:47 AM, Anthony Ramine wrote:
> Hello,
>
> When analyzing complex expressions (i.e. comprehensions, cases, tries, ifs and receives), erl_lint does not forget about old unused variables when returning the updated variable table. This causes a bug where old
> unused variables are not recorded as such:
>
> t(X, Y) ->
>    #r{a=[ K || K<- Y ],b=[ K || K<- Y ].
>
> As erl_lint uses vtmerge_pat/2 to merge the results of the analysis of the two list comprehensions, X is marked as used and the warning is not emitted.
>
> The function vtmerge_pat/2 is used instead of the similar vtmerge/2 which does not mark multiple occurrences of a variable as usage to handle cases like the following one:
>
> t(X, Y) ->
>    #r{a=A=X,b=A=Y}.
>
> Other simpler expressions like conses, tuples and external fun references does not correctly follow this behaviour.
>
> This patch fixes both issues and makes erl_lint not return old unused variables in updated tables and makes all compound expressions use vtmerge_pat/2.
>
> 	git fetch https://github.com/nox/otp.git fix-erl_lint-variable-usage
>
> 	https://github.com/nox/otp/compare/erlang:maint...fix-erl_lint-variable-usage
> 	https://github.com/nox/otp/compare/erlang:maint...fix-erl_lint-variable-usage.patch
>
> Regards,
>
Hello,
I've fetched your patch and it should be visible in the 'pu' branch 
shortly. I also assigned it to be reviewed by the responsible team 
directly.
Thanks,

-- 

BR Fredrik Gustafsson
Erlang OTP Team

_______________________________________________
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.