diff options
author | bors[bot] <bors[bot]@users.noreply.github.com> | 2019-03-04 14:48:55 +0000 |
---|---|---|
committer | bors[bot] <bors[bot]@users.noreply.github.com> | 2019-03-04 14:48:55 +0000 |
commit | bbaf750b10810c21d42710a5d12181ca73099525 (patch) | |
tree | 39296669d8596c646067641dff27b0c9e71a3a4f | |
parent | 11e0851dcfddfe2337bb2d404d716dbd8e4c11d7 (diff) | |
parent | 90122542b2708a4dde36758d1ff5848764858ac0 (diff) |
Merge #929
929: allow `mut ident` patterns in trait methods r=matklad a=matklad
Co-authored-by: Aleksey Kladov <[email protected]>
3 files changed, 28 insertions, 12 deletions
diff --git a/crates/ra_parser/src/grammar/params.rs b/crates/ra_parser/src/grammar/params.rs index a70f067f9..d027578b6 100644 --- a/crates/ra_parser/src/grammar/params.rs +++ b/crates/ra_parser/src/grammar/params.rs | |||
@@ -83,9 +83,10 @@ fn value_parameter(p: &mut Parser, flavor: Flavor) { | |||
83 | 83 | ||
84 | // test trait_fn_placeholder_parameter | 84 | // test trait_fn_placeholder_parameter |
85 | // trait Foo { | 85 | // trait Foo { |
86 | // fn bar(_: u64); | 86 | // fn bar(_: u64, mut x: i32); |
87 | // } | 87 | // } |
88 | if (la0 == IDENT || la0 == UNDERSCORE) && la1 == COLON | 88 | if (la0 == IDENT || la0 == UNDERSCORE) && la1 == COLON |
89 | || la0 == MUT_KW && la1 == IDENT && la2 == COLON | ||
89 | || la0 == AMP && la1 == IDENT && la2 == COLON | 90 | || la0 == AMP && la1 == IDENT && la2 == COLON |
90 | || la0 == AMP && la1 == MUT_KW && la2 == IDENT && la3 == COLON | 91 | || la0 == AMP && la1 == MUT_KW && la2 == IDENT && la3 == COLON |
91 | { | 92 | { |
diff --git a/crates/ra_syntax/tests/data/parser/inline/ok/0116_trait_fn_placeholder_parameter.rs b/crates/ra_syntax/tests/data/parser/inline/ok/0116_trait_fn_placeholder_parameter.rs index aede3f4fe..472cb8803 100644 --- a/crates/ra_syntax/tests/data/parser/inline/ok/0116_trait_fn_placeholder_parameter.rs +++ b/crates/ra_syntax/tests/data/parser/inline/ok/0116_trait_fn_placeholder_parameter.rs | |||
@@ -1,3 +1,3 @@ | |||
1 | trait Foo { | 1 | trait Foo { |
2 | fn bar(_: u64); | 2 | fn bar(_: u64, mut x: i32); |
3 | } | 3 | } |
diff --git a/crates/ra_syntax/tests/data/parser/inline/ok/0116_trait_fn_placeholder_parameter.txt b/crates/ra_syntax/tests/data/parser/inline/ok/0116_trait_fn_placeholder_parameter.txt index 248d491df..00217aef1 100644 --- a/crates/ra_syntax/tests/data/parser/inline/ok/0116_trait_fn_placeholder_parameter.txt +++ b/crates/ra_syntax/tests/data/parser/inline/ok/0116_trait_fn_placeholder_parameter.txt | |||
@@ -1,19 +1,19 @@ | |||
1 | SOURCE_FILE@[0; 34) | 1 | SOURCE_FILE@[0; 46) |
2 | TRAIT_DEF@[0; 33) | 2 | TRAIT_DEF@[0; 45) |
3 | TRAIT_KW@[0; 5) | 3 | TRAIT_KW@[0; 5) |
4 | WHITESPACE@[5; 6) | 4 | WHITESPACE@[5; 6) |
5 | NAME@[6; 9) | 5 | NAME@[6; 9) |
6 | IDENT@[6; 9) "Foo" | 6 | IDENT@[6; 9) "Foo" |
7 | WHITESPACE@[9; 10) | 7 | WHITESPACE@[9; 10) |
8 | ITEM_LIST@[10; 33) | 8 | ITEM_LIST@[10; 45) |
9 | L_CURLY@[10; 11) | 9 | L_CURLY@[10; 11) |
10 | WHITESPACE@[11; 16) | 10 | WHITESPACE@[11; 16) |
11 | FN_DEF@[16; 31) | 11 | FN_DEF@[16; 43) |
12 | FN_KW@[16; 18) | 12 | FN_KW@[16; 18) |
13 | WHITESPACE@[18; 19) | 13 | WHITESPACE@[18; 19) |
14 | NAME@[19; 22) | 14 | NAME@[19; 22) |
15 | IDENT@[19; 22) "bar" | 15 | IDENT@[19; 22) "bar" |
16 | PARAM_LIST@[22; 30) | 16 | PARAM_LIST@[22; 42) |
17 | L_PAREN@[22; 23) | 17 | L_PAREN@[22; 23) |
18 | PARAM@[23; 29) | 18 | PARAM@[23; 29) |
19 | PLACEHOLDER_PAT@[23; 24) | 19 | PLACEHOLDER_PAT@[23; 24) |
@@ -25,8 +25,23 @@ SOURCE_FILE@[0; 34) | |||
25 | PATH_SEGMENT@[26; 29) | 25 | PATH_SEGMENT@[26; 29) |
26 | NAME_REF@[26; 29) | 26 | NAME_REF@[26; 29) |
27 | IDENT@[26; 29) "u64" | 27 | IDENT@[26; 29) "u64" |
28 | R_PAREN@[29; 30) | 28 | COMMA@[29; 30) |
29 | SEMI@[30; 31) | 29 | WHITESPACE@[30; 31) |
30 | WHITESPACE@[31; 32) | 30 | PARAM@[31; 41) |
31 | R_CURLY@[32; 33) | 31 | BIND_PAT@[31; 36) |
32 | WHITESPACE@[33; 34) | 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) | ||