From 6fa2d8214784b6ecfc3fbcd98778d4e58fa8664e Mon Sep 17 00:00:00 2001 From: Evgenii P Date: Thu, 8 Aug 2019 09:12:07 +0700 Subject: Fix parser tests according to review --- .../test_data/parser/inline/ok/0006_self_param.rs | 6 - .../test_data/parser/inline/ok/0006_self_param.txt | 171 +------- .../parser/inline/ok/0018_arb_self_types.rs | 2 - .../parser/inline/ok/0018_arb_self_types.txt | 79 +--- .../inline/ok/0045_param_list_opt_patterns.rs | 1 - .../inline/ok/0045_param_list_opt_patterns.txt | 54 +-- .../test_data/parser/inline/ok/0099_param_list.rs | 2 - .../test_data/parser/inline/ok/0099_param_list.txt | 71 +-- .../ok/0116_trait_fn_placeholder_parameter.rs | 1 - .../ok/0116_trait_fn_placeholder_parameter.txt | 61 +-- .../parser/inline/ok/0123_param_list_vararg.rs | 1 - .../parser/inline/ok/0123_param_list_vararg.txt | 57 +-- .../parser/inline/ok/0138_self_param_outer_attr.rs | 1 + .../inline/ok/0138_self_param_outer_attr.txt | 23 + .../parser/inline/ok/0139_param_outer_arg.rs | 1 + .../parser/inline/ok/0139_param_outer_arg.txt | 32 ++ .../test_data/parser/ok/0051_parameter_attrs.rs | 21 + .../test_data/parser/ok/0051_parameter_attrs.txt | 477 +++++++++++++++++++++ 18 files changed, 576 insertions(+), 485 deletions(-) create mode 100644 crates/ra_syntax/test_data/parser/inline/ok/0138_self_param_outer_attr.rs create mode 100644 crates/ra_syntax/test_data/parser/inline/ok/0138_self_param_outer_attr.txt create mode 100644 crates/ra_syntax/test_data/parser/inline/ok/0139_param_outer_arg.rs create mode 100644 crates/ra_syntax/test_data/parser/inline/ok/0139_param_outer_arg.txt create mode 100644 crates/ra_syntax/test_data/parser/ok/0051_parameter_attrs.rs create mode 100644 crates/ra_syntax/test_data/parser/ok/0051_parameter_attrs.txt (limited to 'crates/ra_syntax') diff --git a/crates/ra_syntax/test_data/parser/inline/ok/0006_self_param.rs b/crates/ra_syntax/test_data/parser/inline/ok/0006_self_param.rs index 7811f52c0..80c0a43f5 100644 --- a/crates/ra_syntax/test_data/parser/inline/ok/0006_self_param.rs +++ b/crates/ra_syntax/test_data/parser/inline/ok/0006_self_param.rs @@ -4,10 +4,4 @@ impl S { fn c(&'a self,) {} fn d(&'a mut self, x: i32) {} fn e(mut self) {} - fn f(#[must_use] self) {} - fn g1(#[attr] self) {} - fn g2(#[attr] &self) {} - fn g3<'a>(#[attr] &mut self) {} - fn g4<'a>(#[attr] &'a self) {} - fn g5<'a>(#[attr] &'a mut self) {} } diff --git a/crates/ra_syntax/test_data/parser/inline/ok/0006_self_param.txt b/crates/ra_syntax/test_data/parser/inline/ok/0006_self_param.txt index 5c75b6c75..8e210a6ca 100644 --- a/crates/ra_syntax/test_data/parser/inline/ok/0006_self_param.txt +++ b/crates/ra_syntax/test_data/parser/inline/ok/0006_self_param.txt @@ -1,5 +1,5 @@ -SOURCE_FILE@[0; 323) - IMPL_BLOCK@[0; 322) +SOURCE_FILE@[0; 128) + IMPL_BLOCK@[0; 127) IMPL_KW@[0; 4) "impl" WHITESPACE@[4; 5) " " PATH_TYPE@[5; 6) @@ -8,7 +8,7 @@ SOURCE_FILE@[0; 323) NAME_REF@[5; 6) IDENT@[5; 6) "S" WHITESPACE@[6; 7) " " - ITEM_LIST@[7; 322) + ITEM_LIST@[7; 127) L_CURLY@[7; 8) "{" WHITESPACE@[8; 13) "\n " FN_DEF@[13; 26) @@ -111,165 +111,6 @@ SOURCE_FILE@[0; 323) BLOCK@[123; 125) L_CURLY@[123; 124) "{" R_CURLY@[124; 125) "}" - WHITESPACE@[125; 130) "\n " - FN_DEF@[130; 155) - FN_KW@[130; 132) "fn" - WHITESPACE@[132; 133) " " - NAME@[133; 134) - IDENT@[133; 134) "f" - PARAM_LIST@[134; 152) - L_PAREN@[134; 135) "(" - ATTR@[135; 146) - POUND@[135; 136) "#" - TOKEN_TREE@[136; 146) - L_BRACK@[136; 137) "[" - IDENT@[137; 145) "must_use" - R_BRACK@[145; 146) "]" - WHITESPACE@[146; 147) " " - SELF_PARAM@[147; 151) - SELF_KW@[147; 151) "self" - R_PAREN@[151; 152) ")" - WHITESPACE@[152; 153) " " - BLOCK@[153; 155) - L_CURLY@[153; 154) "{" - R_CURLY@[154; 155) "}" - WHITESPACE@[155; 160) "\n " - FN_DEF@[160; 182) - FN_KW@[160; 162) "fn" - WHITESPACE@[162; 163) " " - NAME@[163; 165) - IDENT@[163; 165) "g1" - PARAM_LIST@[165; 179) - L_PAREN@[165; 166) "(" - ATTR@[166; 173) - POUND@[166; 167) "#" - TOKEN_TREE@[167; 173) - L_BRACK@[167; 168) "[" - IDENT@[168; 172) "attr" - R_BRACK@[172; 173) "]" - WHITESPACE@[173; 174) " " - SELF_PARAM@[174; 178) - SELF_KW@[174; 178) "self" - R_PAREN@[178; 179) ")" - WHITESPACE@[179; 180) " " - BLOCK@[180; 182) - L_CURLY@[180; 181) "{" - R_CURLY@[181; 182) "}" - WHITESPACE@[182; 187) "\n " - FN_DEF@[187; 210) - FN_KW@[187; 189) "fn" - WHITESPACE@[189; 190) " " - NAME@[190; 192) - IDENT@[190; 192) "g2" - PARAM_LIST@[192; 207) - L_PAREN@[192; 193) "(" - ATTR@[193; 200) - POUND@[193; 194) "#" - TOKEN_TREE@[194; 200) - L_BRACK@[194; 195) "[" - IDENT@[195; 199) "attr" - R_BRACK@[199; 200) "]" - WHITESPACE@[200; 201) " " - SELF_PARAM@[201; 206) - AMP@[201; 202) "&" - SELF_KW@[202; 206) "self" - R_PAREN@[206; 207) ")" - WHITESPACE@[207; 208) " " - BLOCK@[208; 210) - L_CURLY@[208; 209) "{" - R_CURLY@[209; 210) "}" - WHITESPACE@[210; 215) "\n " - FN_DEF@[215; 246) - FN_KW@[215; 217) "fn" - WHITESPACE@[217; 218) " " - NAME@[218; 220) - IDENT@[218; 220) "g3" - TYPE_PARAM_LIST@[220; 224) - L_ANGLE@[220; 221) "<" - LIFETIME_PARAM@[221; 223) - LIFETIME@[221; 223) "\'a" - R_ANGLE@[223; 224) ">" - PARAM_LIST@[224; 243) - L_PAREN@[224; 225) "(" - ATTR@[225; 232) - POUND@[225; 226) "#" - TOKEN_TREE@[226; 232) - L_BRACK@[226; 227) "[" - IDENT@[227; 231) "attr" - R_BRACK@[231; 232) "]" - WHITESPACE@[232; 233) " " - SELF_PARAM@[233; 242) - AMP@[233; 234) "&" - MUT_KW@[234; 237) "mut" - WHITESPACE@[237; 238) " " - SELF_KW@[238; 242) "self" - R_PAREN@[242; 243) ")" - WHITESPACE@[243; 244) " " - BLOCK@[244; 246) - L_CURLY@[244; 245) "{" - R_CURLY@[245; 246) "}" - WHITESPACE@[246; 251) "\n " - FN_DEF@[251; 281) - FN_KW@[251; 253) "fn" - WHITESPACE@[253; 254) " " - NAME@[254; 256) - IDENT@[254; 256) "g4" - TYPE_PARAM_LIST@[256; 260) - L_ANGLE@[256; 257) "<" - LIFETIME_PARAM@[257; 259) - LIFETIME@[257; 259) "\'a" - R_ANGLE@[259; 260) ">" - PARAM_LIST@[260; 278) - L_PAREN@[260; 261) "(" - ATTR@[261; 268) - POUND@[261; 262) "#" - TOKEN_TREE@[262; 268) - L_BRACK@[262; 263) "[" - IDENT@[263; 267) "attr" - R_BRACK@[267; 268) "]" - WHITESPACE@[268; 269) " " - SELF_PARAM@[269; 277) - AMP@[269; 270) "&" - LIFETIME@[270; 272) "\'a" - WHITESPACE@[272; 273) " " - SELF_KW@[273; 277) "self" - R_PAREN@[277; 278) ")" - WHITESPACE@[278; 279) " " - BLOCK@[279; 281) - L_CURLY@[279; 280) "{" - R_CURLY@[280; 281) "}" - WHITESPACE@[281; 286) "\n " - FN_DEF@[286; 320) - FN_KW@[286; 288) "fn" - WHITESPACE@[288; 289) " " - NAME@[289; 291) - IDENT@[289; 291) "g5" - TYPE_PARAM_LIST@[291; 295) - L_ANGLE@[291; 292) "<" - LIFETIME_PARAM@[292; 294) - LIFETIME@[292; 294) "\'a" - R_ANGLE@[294; 295) ">" - PARAM_LIST@[295; 317) - L_PAREN@[295; 296) "(" - ATTR@[296; 303) - POUND@[296; 297) "#" - TOKEN_TREE@[297; 303) - L_BRACK@[297; 298) "[" - IDENT@[298; 302) "attr" - R_BRACK@[302; 303) "]" - WHITESPACE@[303; 304) " " - SELF_PARAM@[304; 316) - AMP@[304; 305) "&" - LIFETIME@[305; 307) "\'a" - WHITESPACE@[307; 308) " " - MUT_KW@[308; 311) "mut" - WHITESPACE@[311; 312) " " - SELF_KW@[312; 316) "self" - R_PAREN@[316; 317) ")" - WHITESPACE@[317; 318) " " - BLOCK@[318; 320) - L_CURLY@[318; 319) "{" - R_CURLY@[319; 320) "}" - WHITESPACE@[320; 321) "\n" - R_CURLY@[321; 322) "}" - WHITESPACE@[322; 323) "\n" + WHITESPACE@[125; 126) "\n" + R_CURLY@[126; 127) "}" + WHITESPACE@[127; 128) "\n" diff --git a/crates/ra_syntax/test_data/parser/inline/ok/0018_arb_self_types.rs b/crates/ra_syntax/test_data/parser/inline/ok/0018_arb_self_types.rs index 077216dae..6a170d5ac 100644 --- a/crates/ra_syntax/test_data/parser/inline/ok/0018_arb_self_types.rs +++ b/crates/ra_syntax/test_data/parser/inline/ok/0018_arb_self_types.rs @@ -1,6 +1,4 @@ impl S { fn a(self: &Self) {} fn b(mut self: Box) {} - fn c(#[attr] self: Self) {} - fn d(#[attr] self: Rc) {} } diff --git a/crates/ra_syntax/test_data/parser/inline/ok/0018_arb_self_types.txt b/crates/ra_syntax/test_data/parser/inline/ok/0018_arb_self_types.txt index ca49bcc26..67d0de0f0 100644 --- a/crates/ra_syntax/test_data/parser/inline/ok/0018_arb_self_types.txt +++ b/crates/ra_syntax/test_data/parser/inline/ok/0018_arb_self_types.txt @@ -1,5 +1,5 @@ -SOURCE_FILE@[0; 137) - IMPL_BLOCK@[0; 136) +SOURCE_FILE@[0; 69) + IMPL_BLOCK@[0; 68) IMPL_KW@[0; 4) "impl" WHITESPACE@[4; 5) " " PATH_TYPE@[5; 6) @@ -8,7 +8,7 @@ SOURCE_FILE@[0; 137) NAME_REF@[5; 6) IDENT@[5; 6) "S" WHITESPACE@[6; 7) " " - ITEM_LIST@[7; 136) + ITEM_LIST@[7; 68) L_CURLY@[7; 8) "{" WHITESPACE@[8; 13) "\n " FN_DEF@[13; 33) @@ -67,73 +67,6 @@ SOURCE_FILE@[0; 137) BLOCK@[64; 66) L_CURLY@[64; 65) "{" R_CURLY@[65; 66) "}" - WHITESPACE@[66; 71) "\n " - FN_DEF@[71; 98) - FN_KW@[71; 73) "fn" - WHITESPACE@[73; 74) " " - NAME@[74; 75) - IDENT@[74; 75) "c" - PARAM_LIST@[75; 95) - L_PAREN@[75; 76) "(" - ATTR@[76; 83) - POUND@[76; 77) "#" - TOKEN_TREE@[77; 83) - L_BRACK@[77; 78) "[" - IDENT@[78; 82) "attr" - R_BRACK@[82; 83) "]" - WHITESPACE@[83; 84) " " - SELF_PARAM@[84; 94) - SELF_KW@[84; 88) "self" - COLON@[88; 89) ":" - WHITESPACE@[89; 90) " " - PATH_TYPE@[90; 94) - PATH@[90; 94) - PATH_SEGMENT@[90; 94) - NAME_REF@[90; 94) - IDENT@[90; 94) "Self" - R_PAREN@[94; 95) ")" - WHITESPACE@[95; 96) " " - BLOCK@[96; 98) - L_CURLY@[96; 97) "{" - R_CURLY@[97; 98) "}" - WHITESPACE@[98; 103) "\n " - FN_DEF@[103; 134) - FN_KW@[103; 105) "fn" - WHITESPACE@[105; 106) " " - NAME@[106; 107) - IDENT@[106; 107) "d" - PARAM_LIST@[107; 131) - L_PAREN@[107; 108) "(" - ATTR@[108; 115) - POUND@[108; 109) "#" - TOKEN_TREE@[109; 115) - L_BRACK@[109; 110) "[" - IDENT@[110; 114) "attr" - R_BRACK@[114; 115) "]" - WHITESPACE@[115; 116) " " - SELF_PARAM@[116; 130) - SELF_KW@[116; 120) "self" - COLON@[120; 121) ":" - WHITESPACE@[121; 122) " " - PATH_TYPE@[122; 130) - PATH@[122; 130) - PATH_SEGMENT@[122; 130) - NAME_REF@[122; 124) - IDENT@[122; 124) "Rc" - TYPE_ARG_LIST@[124; 130) - L_ANGLE@[124; 125) "<" - TYPE_ARG@[125; 129) - PATH_TYPE@[125; 129) - PATH@[125; 129) - PATH_SEGMENT@[125; 129) - NAME_REF@[125; 129) - IDENT@[125; 129) "Self" - R_ANGLE@[129; 130) ">" - R_PAREN@[130; 131) ")" - WHITESPACE@[131; 132) " " - BLOCK@[132; 134) - L_CURLY@[132; 133) "{" - R_CURLY@[133; 134) "}" - WHITESPACE@[134; 135) "\n" - R_CURLY@[135; 136) "}" - WHITESPACE@[136; 137) "\n" + WHITESPACE@[66; 67) "\n" + R_CURLY@[67; 68) "}" + WHITESPACE@[68; 69) "\n" diff --git a/crates/ra_syntax/test_data/parser/inline/ok/0045_param_list_opt_patterns.rs b/crates/ra_syntax/test_data/parser/inline/ok/0045_param_list_opt_patterns.rs index 9833dd8f1..9b93442c0 100644 --- a/crates/ra_syntax/test_data/parser/inline/ok/0045_param_list_opt_patterns.rs +++ b/crates/ra_syntax/test_data/parser/inline/ok/0045_param_list_opt_patterns.rs @@ -1,2 +1 @@ fn foo)>(){} -fn foo)>(){} diff --git a/crates/ra_syntax/test_data/parser/inline/ok/0045_param_list_opt_patterns.txt b/crates/ra_syntax/test_data/parser/inline/ok/0045_param_list_opt_patterns.txt index 0b377dfd4..f85d6a4bc 100644 --- a/crates/ra_syntax/test_data/parser/inline/ok/0045_param_list_opt_patterns.txt +++ b/crates/ra_syntax/test_data/parser/inline/ok/0045_param_list_opt_patterns.txt @@ -1,4 +1,4 @@ -SOURCE_FILE@[0; 78) +SOURCE_FILE@[0; 35) FN_DEF@[0; 34) FN_KW@[0; 2) "fn" WHITESPACE@[2; 3) " " @@ -44,55 +44,3 @@ SOURCE_FILE@[0; 78) L_CURLY@[32; 33) "{" R_CURLY@[33; 34) "}" WHITESPACE@[34; 35) "\n" - FN_DEF@[35; 77) - FN_KW@[35; 37) "fn" - WHITESPACE@[37; 38) " " - NAME@[38; 41) - IDENT@[38; 41) "foo" - TYPE_PARAM_LIST@[41; 73) - L_ANGLE@[41; 42) "<" - TYPE_PARAM@[42; 72) - NAME@[42; 43) - IDENT@[42; 43) "F" - COLON@[43; 44) ":" - WHITESPACE@[44; 45) " " - TYPE_BOUND_LIST@[45; 72) - TYPE_BOUND@[45; 72) - PATH_TYPE@[45; 72) - PATH@[45; 72) - PATH_SEGMENT@[45; 72) - NAME_REF@[45; 50) - IDENT@[45; 50) "FnMut" - PARAM_LIST@[50; 72) - L_PAREN@[50; 51) "(" - ATTR@[51; 58) - POUND@[51; 52) "#" - TOKEN_TREE@[52; 58) - L_BRACK@[52; 53) "[" - IDENT@[53; 57) "attr" - R_BRACK@[57; 58) "]" - WHITESPACE@[58; 59) " " - PARAM@[59; 71) - REFERENCE_TYPE@[59; 71) - AMP@[59; 60) "&" - MUT_KW@[60; 63) "mut" - WHITESPACE@[63; 64) " " - PATH_TYPE@[64; 71) - PATH@[64; 71) - PATH_SEGMENT@[64; 71) - NAME_REF@[64; 67) - IDENT@[64; 67) "Foo" - TYPE_ARG_LIST@[67; 71) - L_ANGLE@[67; 68) "<" - LIFETIME_ARG@[68; 70) - LIFETIME@[68; 70) "\'a" - R_ANGLE@[70; 71) ">" - R_PAREN@[71; 72) ")" - R_ANGLE@[72; 73) ">" - PARAM_LIST@[73; 75) - L_PAREN@[73; 74) "(" - R_PAREN@[74; 75) ")" - BLOCK@[75; 77) - L_CURLY@[75; 76) "{" - R_CURLY@[76; 77) "}" - WHITESPACE@[77; 78) "\n" diff --git a/crates/ra_syntax/test_data/parser/inline/ok/0099_param_list.rs b/crates/ra_syntax/test_data/parser/inline/ok/0099_param_list.rs index 83d870ba7..9d55bedbb 100644 --- a/crates/ra_syntax/test_data/parser/inline/ok/0099_param_list.rs +++ b/crates/ra_syntax/test_data/parser/inline/ok/0099_param_list.rs @@ -2,5 +2,3 @@ fn a() {} fn b(x: i32) {} fn c(x: i32, ) {} fn d(x: i32, y: ()) {} -fn g1(#[attr1] #[attr2] pat: Type) {} -fn g2(#[attr1] x: u8) {} diff --git a/crates/ra_syntax/test_data/parser/inline/ok/0099_param_list.txt b/crates/ra_syntax/test_data/parser/inline/ok/0099_param_list.txt index a9c63fa93..80d636819 100644 --- a/crates/ra_syntax/test_data/parser/inline/ok/0099_param_list.txt +++ b/crates/ra_syntax/test_data/parser/inline/ok/0099_param_list.txt @@ -1,4 +1,4 @@ -SOURCE_FILE@[0; 130) +SOURCE_FILE@[0; 67) FN_DEF@[0; 9) FN_KW@[0; 2) "fn" WHITESPACE@[2; 3) " " @@ -97,72 +97,3 @@ SOURCE_FILE@[0; 130) L_CURLY@[64; 65) "{" R_CURLY@[65; 66) "}" WHITESPACE@[66; 67) "\n" - FN_DEF@[67; 104) - FN_KW@[67; 69) "fn" - WHITESPACE@[69; 70) " " - NAME@[70; 72) - IDENT@[70; 72) "g1" - PARAM_LIST@[72; 101) - L_PAREN@[72; 73) "(" - ATTR@[73; 81) - POUND@[73; 74) "#" - TOKEN_TREE@[74; 81) - L_BRACK@[74; 75) "[" - IDENT@[75; 80) "attr1" - R_BRACK@[80; 81) "]" - WHITESPACE@[81; 82) " " - ATTR@[82; 90) - POUND@[82; 83) "#" - TOKEN_TREE@[83; 90) - L_BRACK@[83; 84) "[" - IDENT@[84; 89) "attr2" - R_BRACK@[89; 90) "]" - WHITESPACE@[90; 91) " " - PARAM@[91; 100) - BIND_PAT@[91; 94) - NAME@[91; 94) - IDENT@[91; 94) "pat" - COLON@[94; 95) ":" - WHITESPACE@[95; 96) " " - PATH_TYPE@[96; 100) - PATH@[96; 100) - PATH_SEGMENT@[96; 100) - NAME_REF@[96; 100) - IDENT@[96; 100) "Type" - R_PAREN@[100; 101) ")" - WHITESPACE@[101; 102) " " - BLOCK@[102; 104) - L_CURLY@[102; 103) "{" - R_CURLY@[103; 104) "}" - WHITESPACE@[104; 105) "\n" - FN_DEF@[105; 129) - FN_KW@[105; 107) "fn" - WHITESPACE@[107; 108) " " - NAME@[108; 110) - IDENT@[108; 110) "g2" - PARAM_LIST@[110; 126) - L_PAREN@[110; 111) "(" - ATTR@[111; 119) - POUND@[111; 112) "#" - TOKEN_TREE@[112; 119) - L_BRACK@[112; 113) "[" - IDENT@[113; 118) "attr1" - R_BRACK@[118; 119) "]" - WHITESPACE@[119; 120) " " - PARAM@[120; 125) - BIND_PAT@[120; 121) - NAME@[120; 121) - IDENT@[120; 121) "x" - COLON@[121; 122) ":" - WHITESPACE@[122; 123) " " - PATH_TYPE@[123; 125) - PATH@[123; 125) - PATH_SEGMENT@[123; 125) - NAME_REF@[123; 125) - IDENT@[123; 125) "u8" - R_PAREN@[125; 126) ")" - WHITESPACE@[126; 127) " " - BLOCK@[127; 129) - L_CURLY@[127; 128) "{" - R_CURLY@[128; 129) "}" - WHITESPACE@[129; 130) "\n" diff --git a/crates/ra_syntax/test_data/parser/inline/ok/0116_trait_fn_placeholder_parameter.rs b/crates/ra_syntax/test_data/parser/inline/ok/0116_trait_fn_placeholder_parameter.rs index 90c4dcd2d..472cb8803 100644 --- a/crates/ra_syntax/test_data/parser/inline/ok/0116_trait_fn_placeholder_parameter.rs +++ b/crates/ra_syntax/test_data/parser/inline/ok/0116_trait_fn_placeholder_parameter.rs @@ -1,4 +1,3 @@ trait Foo { fn bar(_: u64, mut x: i32); - fn bar(#[attr] _: u64, #[attr] mut x: i32); } diff --git a/crates/ra_syntax/test_data/parser/inline/ok/0116_trait_fn_placeholder_parameter.txt b/crates/ra_syntax/test_data/parser/inline/ok/0116_trait_fn_placeholder_parameter.txt index b5c6e0a2a..158236c5a 100644 --- a/crates/ra_syntax/test_data/parser/inline/ok/0116_trait_fn_placeholder_parameter.txt +++ b/crates/ra_syntax/test_data/parser/inline/ok/0116_trait_fn_placeholder_parameter.txt @@ -1,11 +1,11 @@ -SOURCE_FILE@[0; 94) - TRAIT_DEF@[0; 93) +SOURCE_FILE@[0; 46) + TRAIT_DEF@[0; 45) TRAIT_KW@[0; 5) "trait" WHITESPACE@[5; 6) " " NAME@[6; 9) IDENT@[6; 9) "Foo" WHITESPACE@[9; 10) " " - ITEM_LIST@[10; 93) + ITEM_LIST@[10; 45) L_CURLY@[10; 11) "{" WHITESPACE@[11; 16) "\n " FN_DEF@[16; 43) @@ -42,55 +42,6 @@ SOURCE_FILE@[0; 94) IDENT@[38; 41) "i32" R_PAREN@[41; 42) ")" SEMI@[42; 43) ";" - WHITESPACE@[43; 48) "\n " - FN_DEF@[48; 91) - FN_KW@[48; 50) "fn" - WHITESPACE@[50; 51) " " - NAME@[51; 54) - IDENT@[51; 54) "bar" - PARAM_LIST@[54; 90) - L_PAREN@[54; 55) "(" - ATTR@[55; 62) - POUND@[55; 56) "#" - TOKEN_TREE@[56; 62) - L_BRACK@[56; 57) "[" - IDENT@[57; 61) "attr" - R_BRACK@[61; 62) "]" - WHITESPACE@[62; 63) " " - PARAM@[63; 69) - PLACEHOLDER_PAT@[63; 64) - UNDERSCORE@[63; 64) "_" - COLON@[64; 65) ":" - WHITESPACE@[65; 66) " " - PATH_TYPE@[66; 69) - PATH@[66; 69) - PATH_SEGMENT@[66; 69) - NAME_REF@[66; 69) - IDENT@[66; 69) "u64" - COMMA@[69; 70) "," - WHITESPACE@[70; 71) " " - ATTR@[71; 78) - POUND@[71; 72) "#" - TOKEN_TREE@[72; 78) - L_BRACK@[72; 73) "[" - IDENT@[73; 77) "attr" - R_BRACK@[77; 78) "]" - WHITESPACE@[78; 79) " " - PARAM@[79; 89) - BIND_PAT@[79; 84) - MUT_KW@[79; 82) "mut" - WHITESPACE@[82; 83) " " - NAME@[83; 84) - IDENT@[83; 84) "x" - COLON@[84; 85) ":" - WHITESPACE@[85; 86) " " - PATH_TYPE@[86; 89) - PATH@[86; 89) - PATH_SEGMENT@[86; 89) - NAME_REF@[86; 89) - IDENT@[86; 89) "i32" - R_PAREN@[89; 90) ")" - SEMI@[90; 91) ";" - WHITESPACE@[91; 92) "\n" - R_CURLY@[92; 93) "}" - WHITESPACE@[93; 94) "\n" + WHITESPACE@[43; 44) "\n" + R_CURLY@[44; 45) "}" + WHITESPACE@[45; 46) "\n" diff --git a/crates/ra_syntax/test_data/parser/inline/ok/0123_param_list_vararg.rs b/crates/ra_syntax/test_data/parser/inline/ok/0123_param_list_vararg.rs index 723d868ee..c59addaf4 100644 --- a/crates/ra_syntax/test_data/parser/inline/ok/0123_param_list_vararg.rs +++ b/crates/ra_syntax/test_data/parser/inline/ok/0123_param_list_vararg.rs @@ -1,2 +1 @@ extern "C" { fn printf(format: *const i8, ...) -> i32; } -extern "C" { fn printf(format: *const i8, #[attr] ...) -> i32; } diff --git a/crates/ra_syntax/test_data/parser/inline/ok/0123_param_list_vararg.txt b/crates/ra_syntax/test_data/parser/inline/ok/0123_param_list_vararg.txt index 8a6672781..836e8e55b 100644 --- a/crates/ra_syntax/test_data/parser/inline/ok/0123_param_list_vararg.txt +++ b/crates/ra_syntax/test_data/parser/inline/ok/0123_param_list_vararg.txt @@ -1,4 +1,4 @@ -SOURCE_FILE@[0; 122) +SOURCE_FILE@[0; 57) EXTERN_BLOCK@[0; 56) ABI@[0; 10) EXTERN_KW@[0; 6) "extern" @@ -47,58 +47,3 @@ SOURCE_FILE@[0; 122) WHITESPACE@[54; 55) " " R_CURLY@[55; 56) "}" WHITESPACE@[56; 57) "\n" - EXTERN_BLOCK@[57; 121) - ABI@[57; 67) - EXTERN_KW@[57; 63) "extern" - WHITESPACE@[63; 64) " " - STRING@[64; 67) "\"C\"" - WHITESPACE@[67; 68) " " - EXTERN_ITEM_LIST@[68; 121) - L_CURLY@[68; 69) "{" - WHITESPACE@[69; 70) " " - FN_DEF@[70; 119) - FN_KW@[70; 72) "fn" - WHITESPACE@[72; 73) " " - NAME@[73; 79) - IDENT@[73; 79) "printf" - PARAM_LIST@[79; 111) - L_PAREN@[79; 80) "(" - PARAM@[80; 97) - BIND_PAT@[80; 86) - NAME@[80; 86) - IDENT@[80; 86) "format" - COLON@[86; 87) ":" - WHITESPACE@[87; 88) " " - POINTER_TYPE@[88; 97) - STAR@[88; 89) "*" - CONST_KW@[89; 94) "const" - WHITESPACE@[94; 95) " " - PATH_TYPE@[95; 97) - PATH@[95; 97) - PATH_SEGMENT@[95; 97) - NAME_REF@[95; 97) - IDENT@[95; 97) "i8" - COMMA@[97; 98) "," - WHITESPACE@[98; 99) " " - ATTR@[99; 106) - POUND@[99; 100) "#" - TOKEN_TREE@[100; 106) - L_BRACK@[100; 101) "[" - IDENT@[101; 105) "attr" - R_BRACK@[105; 106) "]" - WHITESPACE@[106; 107) " " - DOTDOTDOT@[107; 110) "..." - R_PAREN@[110; 111) ")" - WHITESPACE@[111; 112) " " - RET_TYPE@[112; 118) - THIN_ARROW@[112; 114) "->" - WHITESPACE@[114; 115) " " - PATH_TYPE@[115; 118) - PATH@[115; 118) - PATH_SEGMENT@[115; 118) - NAME_REF@[115; 118) - IDENT@[115; 118) "i32" - SEMI@[118; 119) ";" - WHITESPACE@[119; 120) " " - R_CURLY@[120; 121) "}" - WHITESPACE@[121; 122) "\n" diff --git a/crates/ra_syntax/test_data/parser/inline/ok/0138_self_param_outer_attr.rs b/crates/ra_syntax/test_data/parser/inline/ok/0138_self_param_outer_attr.rs new file mode 100644 index 000000000..35155057a --- /dev/null +++ b/crates/ra_syntax/test_data/parser/inline/ok/0138_self_param_outer_attr.rs @@ -0,0 +1 @@ +fn f(#[must_use] self) {} diff --git a/crates/ra_syntax/test_data/parser/inline/ok/0138_self_param_outer_attr.txt b/crates/ra_syntax/test_data/parser/inline/ok/0138_self_param_outer_attr.txt new file mode 100644 index 000000000..49b14e632 --- /dev/null +++ b/crates/ra_syntax/test_data/parser/inline/ok/0138_self_param_outer_attr.txt @@ -0,0 +1,23 @@ +SOURCE_FILE@[0; 26) + FN_DEF@[0; 25) + FN_KW@[0; 2) "fn" + WHITESPACE@[2; 3) " " + NAME@[3; 4) + IDENT@[3; 4) "f" + PARAM_LIST@[4; 22) + L_PAREN@[4; 5) "(" + ATTR@[5; 16) + POUND@[5; 6) "#" + TOKEN_TREE@[6; 16) + L_BRACK@[6; 7) "[" + IDENT@[7; 15) "must_use" + R_BRACK@[15; 16) "]" + WHITESPACE@[16; 17) " " + SELF_PARAM@[17; 21) + SELF_KW@[17; 21) "self" + R_PAREN@[21; 22) ")" + WHITESPACE@[22; 23) " " + BLOCK@[23; 25) + L_CURLY@[23; 24) "{" + R_CURLY@[24; 25) "}" + WHITESPACE@[25; 26) "\n" diff --git a/crates/ra_syntax/test_data/parser/inline/ok/0139_param_outer_arg.rs b/crates/ra_syntax/test_data/parser/inline/ok/0139_param_outer_arg.rs new file mode 100644 index 000000000..c238be791 --- /dev/null +++ b/crates/ra_syntax/test_data/parser/inline/ok/0139_param_outer_arg.rs @@ -0,0 +1 @@ +fn f(#[attr1] pat: Type) {} diff --git a/crates/ra_syntax/test_data/parser/inline/ok/0139_param_outer_arg.txt b/crates/ra_syntax/test_data/parser/inline/ok/0139_param_outer_arg.txt new file mode 100644 index 000000000..91c5e5f9a --- /dev/null +++ b/crates/ra_syntax/test_data/parser/inline/ok/0139_param_outer_arg.txt @@ -0,0 +1,32 @@ +SOURCE_FILE@[0; 28) + FN_DEF@[0; 27) + FN_KW@[0; 2) "fn" + WHITESPACE@[2; 3) " " + NAME@[3; 4) + IDENT@[3; 4) "f" + PARAM_LIST@[4; 24) + L_PAREN@[4; 5) "(" + ATTR@[5; 13) + POUND@[5; 6) "#" + TOKEN_TREE@[6; 13) + L_BRACK@[6; 7) "[" + IDENT@[7; 12) "attr1" + R_BRACK@[12; 13) "]" + WHITESPACE@[13; 14) " " + PARAM@[14; 23) + BIND_PAT@[14; 17) + NAME@[14; 17) + IDENT@[14; 17) "pat" + COLON@[17; 18) ":" + WHITESPACE@[18; 19) " " + PATH_TYPE@[19; 23) + PATH@[19; 23) + PATH_SEGMENT@[19; 23) + NAME_REF@[19; 23) + IDENT@[19; 23) "Type" + R_PAREN@[23; 24) ")" + WHITESPACE@[24; 25) " " + BLOCK@[25; 27) + L_CURLY@[25; 26) "{" + R_CURLY@[26; 27) "}" + WHITESPACE@[27; 28) "\n" diff --git a/crates/ra_syntax/test_data/parser/ok/0051_parameter_attrs.rs b/crates/ra_syntax/test_data/parser/ok/0051_parameter_attrs.rs new file mode 100644 index 000000000..de350d858 --- /dev/null +++ b/crates/ra_syntax/test_data/parser/ok/0051_parameter_attrs.rs @@ -0,0 +1,21 @@ +fn g1(#[attr1] #[attr2] pat: Type) {} +fn g2(#[attr1] x: u8) {} + +extern "C" { fn printf(format: *const i8, #[attr] ...) -> i32; } + +fn foo)>(){} + +trait Foo { + fn bar(#[attr] _: u64, # [attr] mut x: i32); +} + +impl S { + fn f(#[must_use] self) {} + fn g1(#[attr] self) {} + fn g2(#[attr] &self) {} + fn g3<'a>(#[attr] &mut self) {} + fn g4<'a>(#[attr] &'a self) {} + fn g5<'a>(#[attr] &'a mut self) {} + fn c(#[attr] self: Self) {} + fn d(#[attr] self: Rc) {} +} \ No newline at end of file diff --git a/crates/ra_syntax/test_data/parser/ok/0051_parameter_attrs.txt b/crates/ra_syntax/test_data/parser/ok/0051_parameter_attrs.txt new file mode 100644 index 000000000..b360f29f4 --- /dev/null +++ b/crates/ra_syntax/test_data/parser/ok/0051_parameter_attrs.txt @@ -0,0 +1,477 @@ +SOURCE_FILE@[0; 519) + FN_DEF@[0; 37) + FN_KW@[0; 2) "fn" + WHITESPACE@[2; 3) " " + NAME@[3; 5) + IDENT@[3; 5) "g1" + PARAM_LIST@[5; 34) + L_PAREN@[5; 6) "(" + ATTR@[6; 14) + POUND@[6; 7) "#" + TOKEN_TREE@[7; 14) + L_BRACK@[7; 8) "[" + IDENT@[8; 13) "attr1" + R_BRACK@[13; 14) "]" + WHITESPACE@[14; 15) " " + ATTR@[15; 23) + POUND@[15; 16) "#" + TOKEN_TREE@[16; 23) + L_BRACK@[16; 17) "[" + IDENT@[17; 22) "attr2" + R_BRACK@[22; 23) "]" + WHITESPACE@[23; 24) " " + PARAM@[24; 33) + BIND_PAT@[24; 27) + NAME@[24; 27) + IDENT@[24; 27) "pat" + COLON@[27; 28) ":" + WHITESPACE@[28; 29) " " + PATH_TYPE@[29; 33) + PATH@[29; 33) + PATH_SEGMENT@[29; 33) + NAME_REF@[29; 33) + IDENT@[29; 33) "Type" + R_PAREN@[33; 34) ")" + WHITESPACE@[34; 35) " " + BLOCK@[35; 37) + L_CURLY@[35; 36) "{" + R_CURLY@[36; 37) "}" + WHITESPACE@[37; 38) "\n" + FN_DEF@[38; 62) + FN_KW@[38; 40) "fn" + WHITESPACE@[40; 41) " " + NAME@[41; 43) + IDENT@[41; 43) "g2" + PARAM_LIST@[43; 59) + L_PAREN@[43; 44) "(" + ATTR@[44; 52) + POUND@[44; 45) "#" + TOKEN_TREE@[45; 52) + L_BRACK@[45; 46) "[" + IDENT@[46; 51) "attr1" + R_BRACK@[51; 52) "]" + WHITESPACE@[52; 53) " " + PARAM@[53; 58) + BIND_PAT@[53; 54) + NAME@[53; 54) + IDENT@[53; 54) "x" + COLON@[54; 55) ":" + WHITESPACE@[55; 56) " " + PATH_TYPE@[56; 58) + PATH@[56; 58) + PATH_SEGMENT@[56; 58) + NAME_REF@[56; 58) + IDENT@[56; 58) "u8" + R_PAREN@[58; 59) ")" + WHITESPACE@[59; 60) " " + BLOCK@[60; 62) + L_CURLY@[60; 61) "{" + R_CURLY@[61; 62) "}" + WHITESPACE@[62; 64) "\n\n" + EXTERN_BLOCK@[64; 128) + ABI@[64; 74) + EXTERN_KW@[64; 70) "extern" + WHITESPACE@[70; 71) " " + STRING@[71; 74) "\"C\"" + WHITESPACE@[74; 75) " " + EXTERN_ITEM_LIST@[75; 128) + L_CURLY@[75; 76) "{" + WHITESPACE@[76; 77) " " + FN_DEF@[77; 126) + FN_KW@[77; 79) "fn" + WHITESPACE@[79; 80) " " + NAME@[80; 86) + IDENT@[80; 86) "printf" + PARAM_LIST@[86; 118) + L_PAREN@[86; 87) "(" + PARAM@[87; 104) + BIND_PAT@[87; 93) + NAME@[87; 93) + IDENT@[87; 93) "format" + COLON@[93; 94) ":" + WHITESPACE@[94; 95) " " + POINTER_TYPE@[95; 104) + STAR@[95; 96) "*" + CONST_KW@[96; 101) "const" + WHITESPACE@[101; 102) " " + PATH_TYPE@[102; 104) + PATH@[102; 104) + PATH_SEGMENT@[102; 104) + NAME_REF@[102; 104) + IDENT@[102; 104) "i8" + COMMA@[104; 105) "," + WHITESPACE@[105; 106) " " + ATTR@[106; 113) + POUND@[106; 107) "#" + TOKEN_TREE@[107; 113) + L_BRACK@[107; 108) "[" + IDENT@[108; 112) "attr" + R_BRACK@[112; 113) "]" + WHITESPACE@[113; 114) " " + DOTDOTDOT@[114; 117) "..." + R_PAREN@[117; 118) ")" + WHITESPACE@[118; 119) " " + RET_TYPE@[119; 125) + THIN_ARROW@[119; 121) "->" + WHITESPACE@[121; 122) " " + PATH_TYPE@[122; 125) + PATH@[122; 125) + PATH_SEGMENT@[122; 125) + NAME_REF@[122; 125) + IDENT@[122; 125) "i32" + SEMI@[125; 126) ";" + WHITESPACE@[126; 127) " " + R_CURLY@[127; 128) "}" + WHITESPACE@[128; 130) "\n\n" + FN_DEF@[130; 172) + FN_KW@[130; 132) "fn" + WHITESPACE@[132; 133) " " + NAME@[133; 136) + IDENT@[133; 136) "foo" + TYPE_PARAM_LIST@[136; 168) + L_ANGLE@[136; 137) "<" + TYPE_PARAM@[137; 167) + NAME@[137; 138) + IDENT@[137; 138) "F" + COLON@[138; 139) ":" + WHITESPACE@[139; 140) " " + TYPE_BOUND_LIST@[140; 167) + TYPE_BOUND@[140; 167) + PATH_TYPE@[140; 167) + PATH@[140; 167) + PATH_SEGMENT@[140; 167) + NAME_REF@[140; 145) + IDENT@[140; 145) "FnMut" + PARAM_LIST@[145; 167) + L_PAREN@[145; 146) "(" + ATTR@[146; 153) + POUND@[146; 147) "#" + TOKEN_TREE@[147; 153) + L_BRACK@[147; 148) "[" + IDENT@[148; 152) "attr" + R_BRACK@[152; 153) "]" + WHITESPACE@[153; 154) " " + PARAM@[154; 166) + REFERENCE_TYPE@[154; 166) + AMP@[154; 155) "&" + MUT_KW@[155; 158) "mut" + WHITESPACE@[158; 159) " " + PATH_TYPE@[159; 166) + PATH@[159; 166) + PATH_SEGMENT@[159; 166) + NAME_REF@[159; 162) + IDENT@[159; 162) "Foo" + TYPE_ARG_LIST@[162; 166) + L_ANGLE@[162; 163) "<" + LIFETIME_ARG@[163; 165) + LIFETIME@[163; 165) "\'a" + R_ANGLE@[165; 166) ">" + R_PAREN@[166; 167) ")" + R_ANGLE@[167; 168) ">" + PARAM_LIST@[168; 170) + L_PAREN@[168; 169) "(" + R_PAREN@[169; 170) ")" + BLOCK@[170; 172) + L_CURLY@[170; 171) "{" + R_CURLY@[171; 172) "}" + WHITESPACE@[172; 174) "\n\n" + TRAIT_DEF@[174; 236) + TRAIT_KW@[174; 179) "trait" + WHITESPACE@[179; 180) " " + NAME@[180; 183) + IDENT@[180; 183) "Foo" + WHITESPACE@[183; 184) " " + ITEM_LIST@[184; 236) + L_CURLY@[184; 185) "{" + WHITESPACE@[185; 190) "\n " + FN_DEF@[190; 234) + FN_KW@[190; 192) "fn" + WHITESPACE@[192; 193) " " + NAME@[193; 196) + IDENT@[193; 196) "bar" + PARAM_LIST@[196; 233) + L_PAREN@[196; 197) "(" + ATTR@[197; 204) + POUND@[197; 198) "#" + TOKEN_TREE@[198; 204) + L_BRACK@[198; 199) "[" + IDENT@[199; 203) "attr" + R_BRACK@[203; 204) "]" + WHITESPACE@[204; 205) " " + PARAM@[205; 211) + PLACEHOLDER_PAT@[205; 206) + UNDERSCORE@[205; 206) "_" + COLON@[206; 207) ":" + WHITESPACE@[207; 208) " " + PATH_TYPE@[208; 211) + PATH@[208; 211) + PATH_SEGMENT@[208; 211) + NAME_REF@[208; 211) + IDENT@[208; 211) "u64" + COMMA@[211; 212) "," + WHITESPACE@[212; 213) " " + ATTR@[213; 221) + POUND@[213; 214) "#" + WHITESPACE@[214; 215) " " + TOKEN_TREE@[215; 221) + L_BRACK@[215; 216) "[" + IDENT@[216; 220) "attr" + R_BRACK@[220; 221) "]" + WHITESPACE@[221; 222) " " + PARAM@[222; 232) + BIND_PAT@[222; 227) + MUT_KW@[222; 225) "mut" + WHITESPACE@[225; 226) " " + NAME@[226; 227) + IDENT@[226; 227) "x" + COLON@[227; 228) ":" + WHITESPACE@[228; 229) " " + PATH_TYPE@[229; 232) + PATH@[229; 232) + PATH_SEGMENT@[229; 232) + NAME_REF@[229; 232) + IDENT@[229; 232) "i32" + R_PAREN@[232; 233) ")" + SEMI@[233; 234) ";" + WHITESPACE@[234; 235) "\n" + R_CURLY@[235; 236) "}" + WHITESPACE@[236; 238) "\n\n" + IMPL_BLOCK@[238; 519) + IMPL_KW@[238; 242) "impl" + WHITESPACE@[242; 243) " " + PATH_TYPE@[243; 244) + PATH@[243; 244) + PATH_SEGMENT@[243; 244) + NAME_REF@[243; 244) + IDENT@[243; 244) "S" + WHITESPACE@[244; 245) " " + ITEM_LIST@[245; 519) + L_CURLY@[245; 246) "{" + WHITESPACE@[246; 252) "\n " + FN_DEF@[252; 277) + FN_KW@[252; 254) "fn" + WHITESPACE@[254; 255) " " + NAME@[255; 256) + IDENT@[255; 256) "f" + PARAM_LIST@[256; 274) + L_PAREN@[256; 257) "(" + ATTR@[257; 268) + POUND@[257; 258) "#" + TOKEN_TREE@[258; 268) + L_BRACK@[258; 259) "[" + IDENT@[259; 267) "must_use" + R_BRACK@[267; 268) "]" + WHITESPACE@[268; 269) " " + SELF_PARAM@[269; 273) + SELF_KW@[269; 273) "self" + R_PAREN@[273; 274) ")" + WHITESPACE@[274; 275) " " + BLOCK@[275; 277) + L_CURLY@[275; 276) "{" + R_CURLY@[276; 277) "}" + WHITESPACE@[277; 283) "\n " + FN_DEF@[283; 305) + FN_KW@[283; 285) "fn" + WHITESPACE@[285; 286) " " + NAME@[286; 288) + IDENT@[286; 288) "g1" + PARAM_LIST@[288; 302) + L_PAREN@[288; 289) "(" + ATTR@[289; 296) + POUND@[289; 290) "#" + TOKEN_TREE@[290; 296) + L_BRACK@[290; 291) "[" + IDENT@[291; 295) "attr" + R_BRACK@[295; 296) "]" + WHITESPACE@[296; 297) " " + SELF_PARAM@[297; 301) + SELF_KW@[297; 301) "self" + R_PAREN@[301; 302) ")" + WHITESPACE@[302; 303) " " + BLOCK@[303; 305) + L_CURLY@[303; 304) "{" + R_CURLY@[304; 305) "}" + WHITESPACE@[305; 311) "\n " + FN_DEF@[311; 334) + FN_KW@[311; 313) "fn" + WHITESPACE@[313; 314) " " + NAME@[314; 316) + IDENT@[314; 316) "g2" + PARAM_LIST@[316; 331) + L_PAREN@[316; 317) "(" + ATTR@[317; 324) + POUND@[317; 318) "#" + TOKEN_TREE@[318; 324) + L_BRACK@[318; 319) "[" + IDENT@[319; 323) "attr" + R_BRACK@[323; 324) "]" + WHITESPACE@[324; 325) " " + SELF_PARAM@[325; 330) + AMP@[325; 326) "&" + SELF_KW@[326; 330) "self" + R_PAREN@[330; 331) ")" + WHITESPACE@[331; 332) " " + BLOCK@[332; 334) + L_CURLY@[332; 333) "{" + R_CURLY@[333; 334) "}" + WHITESPACE@[334; 340) "\n " + FN_DEF@[340; 371) + FN_KW@[340; 342) "fn" + WHITESPACE@[342; 343) " " + NAME@[343; 345) + IDENT@[343; 345) "g3" + TYPE_PARAM_LIST@[345; 349) + L_ANGLE@[345; 346) "<" + LIFETIME_PARAM@[346; 348) + LIFETIME@[346; 348) "\'a" + R_ANGLE@[348; 349) ">" + PARAM_LIST@[349; 368) + L_PAREN@[349; 350) "(" + ATTR@[350; 357) + POUND@[350; 351) "#" + TOKEN_TREE@[351; 357) + L_BRACK@[351; 352) "[" + IDENT@[352; 356) "attr" + R_BRACK@[356; 357) "]" + WHITESPACE@[357; 358) " " + SELF_PARAM@[358; 367) + AMP@[358; 359) "&" + MUT_KW@[359; 362) "mut" + WHITESPACE@[362; 363) " " + SELF_KW@[363; 367) "self" + R_PAREN@[367; 368) ")" + WHITESPACE@[368; 369) " " + BLOCK@[369; 371) + L_CURLY@[369; 370) "{" + R_CURLY@[370; 371) "}" + WHITESPACE@[371; 377) "\n " + FN_DEF@[377; 407) + FN_KW@[377; 379) "fn" + WHITESPACE@[379; 380) " " + NAME@[380; 382) + IDENT@[380; 382) "g4" + TYPE_PARAM_LIST@[382; 386) + L_ANGLE@[382; 383) "<" + LIFETIME_PARAM@[383; 385) + LIFETIME@[383; 385) "\'a" + R_ANGLE@[385; 386) ">" + PARAM_LIST@[386; 404) + L_PAREN@[386; 387) "(" + ATTR@[387; 394) + POUND@[387; 388) "#" + TOKEN_TREE@[388; 394) + L_BRACK@[388; 389) "[" + IDENT@[389; 393) "attr" + R_BRACK@[393; 394) "]" + WHITESPACE@[394; 395) " " + SELF_PARAM@[395; 403) + AMP@[395; 396) "&" + LIFETIME@[396; 398) "\'a" + WHITESPACE@[398; 399) " " + SELF_KW@[399; 403) "self" + R_PAREN@[403; 404) ")" + WHITESPACE@[404; 405) " " + BLOCK@[405; 407) + L_CURLY@[405; 406) "{" + R_CURLY@[406; 407) "}" + WHITESPACE@[407; 413) "\n " + FN_DEF@[413; 447) + FN_KW@[413; 415) "fn" + WHITESPACE@[415; 416) " " + NAME@[416; 418) + IDENT@[416; 418) "g5" + TYPE_PARAM_LIST@[418; 422) + L_ANGLE@[418; 419) "<" + LIFETIME_PARAM@[419; 421) + LIFETIME@[419; 421) "\'a" + R_ANGLE@[421; 422) ">" + PARAM_LIST@[422; 444) + L_PAREN@[422; 423) "(" + ATTR@[423; 430) + POUND@[423; 424) "#" + TOKEN_TREE@[424; 430) + L_BRACK@[424; 425) "[" + IDENT@[425; 429) "attr" + R_BRACK@[429; 430) "]" + WHITESPACE@[430; 431) " " + SELF_PARAM@[431; 443) + AMP@[431; 432) "&" + LIFETIME@[432; 434) "\'a" + WHITESPACE@[434; 435) " " + MUT_KW@[435; 438) "mut" + WHITESPACE@[438; 439) " " + SELF_KW@[439; 443) "self" + R_PAREN@[443; 444) ")" + WHITESPACE@[444; 445) " " + BLOCK@[445; 447) + L_CURLY@[445; 446) "{" + R_CURLY@[446; 447) "}" + WHITESPACE@[447; 453) "\n " + FN_DEF@[453; 480) + FN_KW@[453; 455) "fn" + WHITESPACE@[455; 456) " " + NAME@[456; 457) + IDENT@[456; 457) "c" + PARAM_LIST@[457; 477) + L_PAREN@[457; 458) "(" + ATTR@[458; 465) + POUND@[458; 459) "#" + TOKEN_TREE@[459; 465) + L_BRACK@[459; 460) "[" + IDENT@[460; 464) "attr" + R_BRACK@[464; 465) "]" + WHITESPACE@[465; 466) " " + SELF_PARAM@[466; 476) + SELF_KW@[466; 470) "self" + COLON@[470; 471) ":" + WHITESPACE@[471; 472) " " + PATH_TYPE@[472; 476) + PATH@[472; 476) + PATH_SEGMENT@[472; 476) + NAME_REF@[472; 476) + IDENT@[472; 476) "Self" + R_PAREN@[476; 477) ")" + WHITESPACE@[477; 478) " " + BLOCK@[478; 480) + L_CURLY@[478; 479) "{" + R_CURLY@[479; 480) "}" + WHITESPACE@[480; 486) "\n " + FN_DEF@[486; 517) + FN_KW@[486; 488) "fn" + WHITESPACE@[488; 489) " " + NAME@[489; 490) + IDENT@[489; 490) "d" + PARAM_LIST@[490; 514) + L_PAREN@[490; 491) "(" + ATTR@[491; 498) + POUND@[491; 492) "#" + TOKEN_TREE@[492; 498) + L_BRACK@[492; 493) "[" + IDENT@[493; 497) "attr" + R_BRACK@[497; 498) "]" + WHITESPACE@[498; 499) " " + SELF_PARAM@[499; 513) + SELF_KW@[499; 503) "self" + COLON@[503; 504) ":" + WHITESPACE@[504; 505) " " + PATH_TYPE@[505; 513) + PATH@[505; 513) + PATH_SEGMENT@[505; 513) + NAME_REF@[505; 507) + IDENT@[505; 507) "Rc" + TYPE_ARG_LIST@[507; 513) + L_ANGLE@[507; 508) "<" + TYPE_ARG@[508; 512) + PATH_TYPE@[508; 512) + PATH@[508; 512) + PATH_SEGMENT@[508; 512) + NAME_REF@[508; 512) + IDENT@[508; 512) "Self" + R_ANGLE@[512; 513) ">" + R_PAREN@[513; 514) ")" + WHITESPACE@[514; 515) " " + BLOCK@[515; 517) + L_CURLY@[515; 516) "{" + R_CURLY@[516; 517) "}" + WHITESPACE@[517; 518) "\n" + R_CURLY@[518; 519) "}" -- cgit v1.2.3