Skip to content

Commit 8d0a1a1

Browse files
committed
testcases update, erlfmt ast handle, maybe_match_expr
1 parent eb7bab4 commit 8d0a1a1

6 files changed

+36
-17
lines changed

apps/els_lsp/priv/code_navigation/src/diagnostics_bound_var_in_pattern_maybe.erl

+12-2
Original file line numberDiff line numberDiff line change
@@ -6,11 +6,12 @@
66
-feature(maybe_expr, enable).
77
-endif.
88

9-
-export([foo/0, maybe_expr/0]).
9+
-export([foo/0, maybe_expr/0, no_else/0]).
1010

1111
foo() ->
1212
maybe
13-
foo ?= bar()
13+
X ?= bar(),
14+
X == foo
1415
else
1516
e = Error -> Error
1617
% ^- Bound variable in pattern: Error
@@ -27,3 +28,12 @@ maybe_expr() ->
2728
else
2829
Y -> Y
2930
end.
31+
32+
no_else() ->
33+
Y = 1,
34+
maybe
35+
{ok, Y} ?= 2,
36+
X = 4,
37+
Z ?= 8,
38+
X == Z
39+
end.

apps/els_lsp/src/els_bound_var_in_pattern_diagnostics.erl

+4
Original file line numberDiff line numberDiff line change
@@ -115,6 +115,10 @@ find_vars_in_tree(Tree, Acc) ->
115115
Pattern = erl_syntax:match_expr_pattern(Tree),
116116
NewAcc = fold_pattern(Pattern, Acc),
117117
find_vars_in_tree(erl_syntax:match_expr_body(Tree), NewAcc);
118+
maybe_match_expr ->
119+
Pattern = erl_syntax:maybe_match_expr_pattern(Tree),
120+
NewAcc = fold_pattern(Pattern, Acc),
121+
find_vars_in_tree(erl_syntax:maybe_match_expr_body(Tree), NewAcc);
118122
clause ->
119123
Patterns = erl_syntax:clause_patterns(Tree),
120124
NewAcc = fold_pattern_list(Patterns, Acc),

apps/els_lsp/src/els_erlfmt_ast.erl

+2
Original file line numberDiff line numberDiff line change
@@ -46,6 +46,8 @@ erlfmt_to_st(Node) ->
4646
%% The special `match` node is encoded as a regular binary operator
4747
{op, Pos, '=', Left, Right} ->
4848
erlfmt_to_st_1({match, Pos, Left, Right});
49+
{op, Pos, '?=', Left, Right} ->
50+
erlfmt_to_st_1({maybe_match, Pos, Left, Right});
4951
%% The special `catch` node is encoded as a regular unary operator
5052
{op, Pos, 'catch', Expr} ->
5153
erlfmt_to_st_1({'catch', Pos, Expr});

apps/els_lsp/test/els_diagnostics_SUITE.erl

+13-9
Original file line numberDiff line numberDiff line change
@@ -383,15 +383,19 @@ bound_var_in_pattern_maybe(_Config) ->
383383
Errors = [],
384384
Warnings = [],
385385
Hints = [
386-
#{
387-
message => <<"Bound variable in pattern: X">>,
388-
range => {{24, 9}, {24, 10}}
389-
},
390-
#{
391-
message => <<"Bound variable in pattern: Y">>,
392-
range => {{27, 9}, {27, 10}}
393-
}
394-
],
386+
#{
387+
message => <<"Bound variable in pattern: X">>,
388+
range => {{26, 8}, {26, 9}}
389+
},
390+
#{
391+
message => <<"Bound variable in pattern: Y">>,
392+
range => {{28, 8}, {28, 9}}
393+
},
394+
#{
395+
message => <<"Bound variable in pattern: Y">>,
396+
range => {{34, 13}, {34, 14}}
397+
}
398+
],
395399
els_test:run_diagnostics_test(Path, Source, Errors, Warnings, Hints).
396400

397401
-spec bound_var_in_pattern_cannot_parse(config()) -> ok.

rebar.config

+2-3
Original file line numberDiff line numberDiff line change
@@ -2,8 +2,7 @@
22
debug_info,
33
warnings_as_errors,
44
warn_export_vars,
5-
warn_unused_import,
6-
warn_missing_spec_all
5+
warn_unused_import
76
]}.
87

98
{deps, [
@@ -15,7 +14,7 @@
1514
{docsh, "0.7.2"},
1615
{elvis_core, "~> 3.2.2"},
1716
{rebar3_format, "0.8.2"},
18-
{erlfmt, "1.3.0"},
17+
{erlfmt, "1.5.0"},
1918
{ephemeral, "2.0.4"},
2019
{tdiff, "0.1.2"},
2120
{uuid, "2.0.1", {pkg, uuid_erl}},

rebar.lock

+3-3
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
{<<"docsh">>,{pkg,<<"docsh">>,<<"0.7.2">>},0},
44
{<<"elvis_core">>,{pkg,<<"elvis_core">>,<<"3.2.2">>},0},
55
{<<"ephemeral">>,{pkg,<<"ephemeral">>,<<"2.0.4">>},0},
6-
{<<"erlfmt">>,{pkg,<<"erlfmt">>,<<"1.3.0">>},0},
6+
{<<"erlfmt">>,{pkg,<<"erlfmt">>,<<"1.5.0">>},0},
77
{<<"getopt">>,{pkg,<<"getopt">>,<<"1.0.1">>},2},
88
{<<"gradualizer">>,
99
{git,"https://github.com/josefs/Gradualizer.git",
@@ -28,7 +28,7 @@
2828
{<<"docsh">>, <<"F893D5317A0E14269DD7FE79CF95FB6B9BA23513DA0480EC6E77C73221CAE4F2">>},
2929
{<<"elvis_core">>, <<"D5AE5FB7ACDF9D23A2AA3F6E4610490A06F7E8FB33EE65E09C5EA3A0ECF64A73">>},
3030
{<<"ephemeral">>, <<"B3E57886ADD5D90C82FE3880F5954978222A122CB8BAA123667401BBAAEC51D6">>},
31-
{<<"erlfmt">>, <<"672994B92B1A809C04C46F0B781B447BF9AB7A515F5856A96177BC1962F100A9">>},
31+
{<<"erlfmt">>, <<"5DDECA120A6E8E0A0FAB7D0BB9C2339D841B1C9E51DD135EE583256DEF20DE25">>},
3232
{<<"getopt">>, <<"C73A9FA687B217F2FF79F68A3B637711BB1936E712B521D8CE466B29CBF7808A">>},
3333
{<<"jsx">>, <<"20A170ABD4335FC6DB24D5FAD1E5D677C55DADF83D1B20A8A33B5FE159892A39">>},
3434
{<<"katana_code">>, <<"0C42BDCD7E59995876AED9F678CF62E3D12EF42E0FBB2190556E64BFEBDD15C6">>},
@@ -44,7 +44,7 @@
4444
{<<"docsh">>, <<"4E7DB461BB07540D2BC3D366B8513F0197712D0495BB85744F367D3815076134">>},
4545
{<<"elvis_core">>, <<"3786F027751CC265E7389BF5AC1329DB547510D80F499B45EFE771BDAF889B36">>},
4646
{<<"ephemeral">>, <<"4B293D80F75F9C4575FF4B9C8E889A56802F40B018BF57E74F19644EFEE6C850">>},
47-
{<<"erlfmt">>, <<"2A84AA1EBA2F4FCD7DD31D5C57E9DE2BC2705DDA18DA4553F27DF7114CFAA052">>},
47+
{<<"erlfmt">>, <<"3933A40CFBE790AD94E5B650B36881DE70456319263C1479B556E9AFDBD80C75">>},
4848
{<<"getopt">>, <<"53E1AB83B9CEB65C9672D3E7A35B8092E9BDC9B3EE80721471A161C10C59959C">>},
4949
{<<"jsx">>, <<"37BECA0435F5CA8A2F45F76A46211E76418FBEF80C36F0361C249FC75059DC6D">>},
5050
{<<"katana_code">>, <<"AE3BBACA187511588F69695A9FF22251CB2CC672FDCCC180289779BDD25175EF">>},

0 commit comments

Comments
 (0)