929: allow `mut ident` patterns in trait methods r=matklad a=matklad



Co-authored-by: Aleksey Kladov <aleksey.kladov@gmail.com>
This commit is contained in:
bors[bot] 2019-03-04 14:48:55 +00:00
commit bbaf750b10
3 changed files with 28 additions and 12 deletions

View file

@ -83,9 +83,10 @@ fn value_parameter(p: &mut Parser, flavor: Flavor) {
// test trait_fn_placeholder_parameter // test trait_fn_placeholder_parameter
// trait Foo { // trait Foo {
// fn bar(_: u64); // fn bar(_: u64, mut x: i32);
// } // }
if (la0 == IDENT || la0 == UNDERSCORE) && la1 == COLON if (la0 == IDENT || la0 == UNDERSCORE) && la1 == COLON
|| la0 == MUT_KW && la1 == IDENT && la2 == COLON
|| la0 == AMP && la1 == IDENT && la2 == COLON || la0 == AMP && la1 == IDENT && la2 == COLON
|| la0 == AMP && la1 == MUT_KW && la2 == IDENT && la3 == COLON || la0 == AMP && la1 == MUT_KW && la2 == IDENT && la3 == COLON
{ {

View file

@ -1,3 +1,3 @@
trait Foo { trait Foo {
fn bar(_: u64); fn bar(_: u64, mut x: i32);
} }

View file

@ -1,19 +1,19 @@
SOURCE_FILE@[0; 34) SOURCE_FILE@[0; 46)
TRAIT_DEF@[0; 33) TRAIT_DEF@[0; 45)
TRAIT_KW@[0; 5) TRAIT_KW@[0; 5)
WHITESPACE@[5; 6) WHITESPACE@[5; 6)
NAME@[6; 9) NAME@[6; 9)
IDENT@[6; 9) "Foo" IDENT@[6; 9) "Foo"
WHITESPACE@[9; 10) WHITESPACE@[9; 10)
ITEM_LIST@[10; 33) ITEM_LIST@[10; 45)
L_CURLY@[10; 11) L_CURLY@[10; 11)
WHITESPACE@[11; 16) WHITESPACE@[11; 16)
FN_DEF@[16; 31) FN_DEF@[16; 43)
FN_KW@[16; 18) FN_KW@[16; 18)
WHITESPACE@[18; 19) WHITESPACE@[18; 19)
NAME@[19; 22) NAME@[19; 22)
IDENT@[19; 22) "bar" IDENT@[19; 22) "bar"
PARAM_LIST@[22; 30) PARAM_LIST@[22; 42)
L_PAREN@[22; 23) L_PAREN@[22; 23)
PARAM@[23; 29) PARAM@[23; 29)
PLACEHOLDER_PAT@[23; 24) PLACEHOLDER_PAT@[23; 24)
@ -25,8 +25,23 @@ SOURCE_FILE@[0; 34)
PATH_SEGMENT@[26; 29) PATH_SEGMENT@[26; 29)
NAME_REF@[26; 29) NAME_REF@[26; 29)
IDENT@[26; 29) "u64" IDENT@[26; 29) "u64"
R_PAREN@[29; 30) COMMA@[29; 30)
SEMI@[30; 31) WHITESPACE@[30; 31)
WHITESPACE@[31; 32) PARAM@[31; 41)
R_CURLY@[32; 33) BIND_PAT@[31; 36)
WHITESPACE@[33; 34) MUT_KW@[31; 34)
WHITESPACE@[34; 35)
NAME@[35; 36)
IDENT@[35; 36) "x"
COLON@[36; 37)
WHITESPACE@[37; 38)
PATH_TYPE@[38; 41)
PATH@[38; 41)
PATH_SEGMENT@[38; 41)
NAME_REF@[38; 41)
IDENT@[38; 41) "i32"
R_PAREN@[41; 42)
SEMI@[42; 43)
WHITESPACE@[43; 44)
R_CURLY@[44; 45)
WHITESPACE@[45; 46)