diff options
author | bors[bot] <bors[bot]@users.noreply.github.com> | 2019-01-22 17:56:00 +0000 |
---|---|---|
committer | bors[bot] <bors[bot]@users.noreply.github.com> | 2019-01-22 17:56:00 +0000 |
commit | b9f65b18b85c6e942979cb7e6026ba157488f193 (patch) | |
tree | 2f994b6fdfe67d839447a239094a49c25dbb4f8d /crates | |
parent | 595a2f9900d052d0c5cc3529602aec0cbcd52614 (diff) | |
parent | c550c6759d2c684b5ebef141cebd602e90ee931a (diff) |
Merge #599
599: Allow placeholder parameters in trait function definitions r=matklad a=regiontog
fixes #597
Co-authored-by: Erlend Tobiassen <[email protected]>
Diffstat (limited to 'crates')
3 files changed, 41 insertions, 1 deletions
diff --git a/crates/ra_syntax/src/grammar/params.rs b/crates/ra_syntax/src/grammar/params.rs index 658fc5820..13158429a 100644 --- a/crates/ra_syntax/src/grammar/params.rs +++ b/crates/ra_syntax/src/grammar/params.rs | |||
@@ -79,7 +79,12 @@ fn value_parameter(p: &mut Parser, flavor: Flavor) { | |||
79 | let la1 = p.nth(1); | 79 | let la1 = p.nth(1); |
80 | let la2 = p.nth(2); | 80 | let la2 = p.nth(2); |
81 | let la3 = p.nth(3); | 81 | let la3 = p.nth(3); |
82 | if la0 == IDENT && la1 == COLON | 82 | |
83 | // test trait_fn_placeholder_parameter | ||
84 | // trait Foo { | ||
85 | // fn bar(_: u64); | ||
86 | // } | ||
87 | if (la0 == IDENT || la0 == UNDERSCORE) && la1 == COLON | ||
83 | || la0 == AMP && la1 == IDENT && la2 == COLON | 88 | || la0 == AMP && la1 == IDENT && la2 == COLON |
84 | || la0 == AMP && la1 == MUT_KW && la2 == IDENT && la3 == COLON | 89 | || la0 == AMP && la1 == MUT_KW && la2 == IDENT && la3 == COLON |
85 | { | 90 | { |
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 new file mode 100644 index 000000000..aede3f4fe --- /dev/null +++ b/crates/ra_syntax/tests/data/parser/inline/ok/0116_trait_fn_placeholder_parameter.rs | |||
@@ -0,0 +1,3 @@ | |||
1 | trait Foo { | ||
2 | fn bar(_: u64); | ||
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 new file mode 100644 index 000000000..248d491df --- /dev/null +++ b/crates/ra_syntax/tests/data/parser/inline/ok/0116_trait_fn_placeholder_parameter.txt | |||
@@ -0,0 +1,32 @@ | |||
1 | SOURCE_FILE@[0; 34) | ||
2 | TRAIT_DEF@[0; 33) | ||
3 | TRAIT_KW@[0; 5) | ||
4 | WHITESPACE@[5; 6) | ||
5 | NAME@[6; 9) | ||
6 | IDENT@[6; 9) "Foo" | ||
7 | WHITESPACE@[9; 10) | ||
8 | ITEM_LIST@[10; 33) | ||
9 | L_CURLY@[10; 11) | ||
10 | WHITESPACE@[11; 16) | ||
11 | FN_DEF@[16; 31) | ||
12 | FN_KW@[16; 18) | ||
13 | WHITESPACE@[18; 19) | ||
14 | NAME@[19; 22) | ||
15 | IDENT@[19; 22) "bar" | ||
16 | PARAM_LIST@[22; 30) | ||
17 | L_PAREN@[22; 23) | ||
18 | PARAM@[23; 29) | ||
19 | PLACEHOLDER_PAT@[23; 24) | ||
20 | UNDERSCORE@[23; 24) | ||
21 | COLON@[24; 25) | ||
22 | WHITESPACE@[25; 26) | ||
23 | PATH_TYPE@[26; 29) | ||
24 | PATH@[26; 29) | ||
25 | PATH_SEGMENT@[26; 29) | ||
26 | NAME_REF@[26; 29) | ||
27 | 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) | ||