diff options
author | Anthony Ramine <[email protected]> | 2013-07-22 21:41:31 +0200 |
---|---|---|
committer | Fredrik Gustafsson <[email protected]> | 2013-08-27 16:15:21 +0200 |
commit | 9ce148b1059e4da746a11f1d80a653340216c468 (patch) | |
tree | 6b1e4e88e8ed5f6e955b164bc66904783064e0a2 /lib/stdlib/test/erl_lint_SUITE.erl | |
parent | f846bf70b0c97ce66f29b0ff88a50316924bf34e (diff) | |
download | otp-9ce148b1059e4da746a11f1d80a653340216c468.tar.gz otp-9ce148b1059e4da746a11f1d80a653340216c468.tar.bz2 otp-9ce148b1059e4da746a11f1d80a653340216c468.zip |
Fix unsafe variable tracking in try expressions
Variables used in the body of a try expression were marked as unsafe
*and* used, which makes no sense as an unsafe variable can't be used.
Function vtsubtract/2 is used to forget usage of such unsafe variables.
Reported-by: Paul Davis
Diffstat (limited to 'lib/stdlib/test/erl_lint_SUITE.erl')
-rw-r--r-- | lib/stdlib/test/erl_lint_SUITE.erl | 19 |
1 files changed, 18 insertions, 1 deletions
diff --git a/lib/stdlib/test/erl_lint_SUITE.erl b/lib/stdlib/test/erl_lint_SUITE.erl index 0bcf9b3e01..a1a9839bae 100644 --- a/lib/stdlib/test/erl_lint_SUITE.erl +++ b/lib/stdlib/test/erl_lint_SUITE.erl @@ -1098,7 +1098,24 @@ unsafe_vars_try(Config) when is_list(Config) -> {10,erl_lint,{unsafe_var,'Ra',{'try',3}}}, {10,erl_lint,{unsafe_var,'Rc',{'try',3}}}, {10,erl_lint,{unsafe_var,'Ro',{'try',3}}}], - []}}], + []}}, + {unsafe_try5, + <<"bang() -> + case 1 of + nil -> + Acc = 2; + _ -> + try + Acc = 3, + Acc + catch _:_ -> + ok + end + end, + Acc. + ">>, + [], + {errors,[{13,erl_lint,{unsafe_var,'Acc',{'try',6}}}],[]}}], ?line [] = run(Config, Ts), ok. |