Skip to content

Commit 9012254

Browse files
committed
allow mut ident patterns in trait methods
closes #928
1 parent 11e0851 commit 9012254

File tree

3 files changed

+28
-12
lines changed

3 files changed

+28
-12
lines changed

crates/ra_parser/src/grammar/params.rs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -83,9 +83,10 @@ fn value_parameter(p: &mut Parser, flavor: Flavor) {
8383

8484
// test trait_fn_placeholder_parameter
8585
// trait Foo {
86-
// fn bar(_: u64);
86+
// fn bar(_: u64, mut x: i32);
8787
// }
8888
if (la0 == IDENT || la0 == UNDERSCORE) && la1 == COLON
89+
|| la0 == MUT_KW && la1 == IDENT && la2 == COLON
8990
|| la0 == AMP && la1 == IDENT && la2 == COLON
9091
|| la0 == AMP && la1 == MUT_KW && la2 == IDENT && la3 == COLON
9192
{
Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,3 @@
11
trait Foo {
2-
fn bar(_: u64);
2+
fn bar(_: u64, mut x: i32);
33
}
Lines changed: 25 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,19 +1,19 @@
1-
SOURCE_FILE@[0; 34)
2-
TRAIT_DEF@[0; 33)
1+
SOURCE_FILE@[0; 46)
2+
TRAIT_DEF@[0; 45)
33
TRAIT_KW@[0; 5)
44
WHITESPACE@[5; 6)
55
NAME@[6; 9)
66
IDENT@[6; 9) "Foo"
77
WHITESPACE@[9; 10)
8-
ITEM_LIST@[10; 33)
8+
ITEM_LIST@[10; 45)
99
L_CURLY@[10; 11)
1010
WHITESPACE@[11; 16)
11-
FN_DEF@[16; 31)
11+
FN_DEF@[16; 43)
1212
FN_KW@[16; 18)
1313
WHITESPACE@[18; 19)
1414
NAME@[19; 22)
1515
IDENT@[19; 22) "bar"
16-
PARAM_LIST@[22; 30)
16+
PARAM_LIST@[22; 42)
1717
L_PAREN@[22; 23)
1818
PARAM@[23; 29)
1919
PLACEHOLDER_PAT@[23; 24)
@@ -25,8 +25,23 @@ SOURCE_FILE@[0; 34)
2525
PATH_SEGMENT@[26; 29)
2626
NAME_REF@[26; 29)
2727
IDENT@[26; 29) "u64"
28-
R_PAREN@[29; 30)
29-
SEMI@[30; 31)
30-
WHITESPACE@[31; 32)
31-
R_CURLY@[32; 33)
32-
WHITESPACE@[33; 34)
28+
COMMA@[29; 30)
29+
WHITESPACE@[30; 31)
30+
PARAM@[31; 41)
31+
BIND_PAT@[31; 36)
32+
MUT_KW@[31; 34)
33+
WHITESPACE@[34; 35)
34+
NAME@[35; 36)
35+
IDENT@[35; 36) "x"
36+
COLON@[36; 37)
37+
WHITESPACE@[37; 38)
38+
PATH_TYPE@[38; 41)
39+
PATH@[38; 41)
40+
PATH_SEGMENT@[38; 41)
41+
NAME_REF@[38; 41)
42+
IDENT@[38; 41) "i32"
43+
R_PAREN@[41; 42)
44+
SEMI@[42; 43)
45+
WHITESPACE@[43; 44)
46+
R_CURLY@[44; 45)
47+
WHITESPACE@[45; 46)

0 commit comments

Comments
 (0)