diff --git a/crates/ra_syntax/src/grammar/params.rs b/crates/ra_syntax/src/grammar/params.rs index 658fc582098..13158429a94 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) { let la1 = p.nth(1); let la2 = p.nth(2); let la3 = p.nth(3); - if la0 == IDENT && la1 == COLON + + // test trait_fn_placeholder_parameter + // trait Foo { + // fn bar(_: u64); + // } + if (la0 == IDENT || la0 == UNDERSCORE) && la1 == COLON || la0 == AMP && la1 == IDENT && la2 == COLON || la0 == AMP && la1 == MUT_KW && la2 == IDENT && la3 == COLON { 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 00000000000..aede3f4febb --- /dev/null +++ b/crates/ra_syntax/tests/data/parser/inline/ok/0116_trait_fn_placeholder_parameter.rs @@ -0,0 +1,3 @@ +trait Foo { + fn bar(_: u64); +} 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 00000000000..248d491dfee --- /dev/null +++ b/crates/ra_syntax/tests/data/parser/inline/ok/0116_trait_fn_placeholder_parameter.txt @@ -0,0 +1,32 @@ +SOURCE_FILE@[0; 34) + TRAIT_DEF@[0; 33) + TRAIT_KW@[0; 5) + WHITESPACE@[5; 6) + NAME@[6; 9) + IDENT@[6; 9) "Foo" + WHITESPACE@[9; 10) + ITEM_LIST@[10; 33) + L_CURLY@[10; 11) + WHITESPACE@[11; 16) + FN_DEF@[16; 31) + FN_KW@[16; 18) + WHITESPACE@[18; 19) + NAME@[19; 22) + IDENT@[19; 22) "bar" + PARAM_LIST@[22; 30) + L_PAREN@[22; 23) + PARAM@[23; 29) + PLACEHOLDER_PAT@[23; 24) + UNDERSCORE@[23; 24) + COLON@[24; 25) + WHITESPACE@[25; 26) + PATH_TYPE@[26; 29) + PATH@[26; 29) + PATH_SEGMENT@[26; 29) + NAME_REF@[26; 29) + IDENT@[26; 29) "u64" + R_PAREN@[29; 30) + SEMI@[30; 31) + WHITESPACE@[31; 32) + R_CURLY@[32; 33) + WHITESPACE@[33; 34)