diff options
author | Björn Gustavsson <bjorn@erlang.org> | 2020-06-16 05:06:23 +0200 |
---|---|---|
committer | Björn Gustavsson <bjorn@erlang.org> | 2020-06-16 11:28:46 +0200 |
commit | 8a9a443a454327cbf17120f63664caa0973e9050 (patch) | |
tree | 470078c8d3bbf30c71c15ff180f19f5f907f1f5b /lib/stdlib/test/erl_lint_SUITE.erl | |
parent | 7af22135f367ab9b94c7d6e379a30a29747173e3 (diff) | |
download | erlang-8a9a443a454327cbf17120f63664caa0973e9050.tar.gz |
Allow variables bound in 'try' to be used in 'of' clauses
The following program would not compile:
-module(foo).
baz() ->
try Bar = 42 of
_ -> Bar
after
ok
end.
The error message is "foo.erl:4: variable 'Bar' unsafe in 'try' (line 3)".
There is no reason for 'Bar' to be unsafe, because if the pattern
after `of` is reached, `Bar = 42` must have been successfully evaluated.
https://bugs.erlang.org/browse/ERL-1281
Diffstat (limited to 'lib/stdlib/test/erl_lint_SUITE.erl')
-rw-r--r-- | lib/stdlib/test/erl_lint_SUITE.erl | 5 |
1 files changed, 1 insertions, 4 deletions
diff --git a/lib/stdlib/test/erl_lint_SUITE.erl b/lib/stdlib/test/erl_lint_SUITE.erl index aa941e61b6..20f8407f85 100644 --- a/lib/stdlib/test/erl_lint_SUITE.erl +++ b/lib/stdlib/test/erl_lint_SUITE.erl @@ -1216,7 +1216,6 @@ unsafe_vars_try(Config) when is_list(Config) -> [], {errors,[{5,erl_lint,{unsafe_var,'R',{'try',3}}}, {7,erl_lint,{unsafe_var,'Rc',{'try',3}}}, - {11,erl_lint,{unsafe_var,'R',{'try',10}}}, {13,erl_lint,{unbound_var,'RR'}}, {13,erl_lint,{unbound_var,'Ro'}}, {13,erl_lint,{unsafe_var,'R',{'try',10}}}, @@ -1225,7 +1224,6 @@ unsafe_vars_try(Config) when is_list(Config) -> {15,erl_lint,{unsafe_var,'R',{'try',10}}}, {15,erl_lint,{unsafe_var,'RR',{'try',10}}}, {15,erl_lint,{unsafe_var,'Ro',{'try',10}}}, - {19,erl_lint,{unsafe_var,'R',{'try',18}}}, {21,erl_lint,{unbound_var,'RR'}}, {21,erl_lint,{unsafe_var,'R',{'try',18}}}, {23,erl_lint,{unsafe_var,'Class',{'try',18}}}, @@ -1251,8 +1249,7 @@ unsafe_vars_try(Config) when is_list(Config) -> {X,Try,R,RR,Ro,Rc,Ra,Class,Data}. ">>, [], - {errors,[{4,erl_lint,{unsafe_var,'R',{'try',3}}}, - {6,erl_lint,{unbound_var,'RR'}}, + {errors,[{6,erl_lint,{unbound_var,'RR'}}, {6,erl_lint,{unbound_var,'Ro'}}, {6,erl_lint,{unsafe_var,'R',{'try',3}}}, {8,erl_lint,{unsafe_var,'Class',{'try',3}}}, |