aboutsummaryrefslogtreecommitdiff
path: root/crates/ra_syntax/tests/data/parser/err
diff options
context:
space:
mode:
Diffstat (limited to 'crates/ra_syntax/tests/data/parser/err')
-rw-r--r--crates/ra_syntax/tests/data/parser/err/0000_struct_field_missing_comma.txt24
-rw-r--r--crates/ra_syntax/tests/data/parser/err/0001_item_recovery_in_file.txt18
-rw-r--r--crates/ra_syntax/tests/data/parser/err/0002_duplicate_shebang.txt8
-rw-r--r--crates/ra_syntax/tests/data/parser/err/0003_C++_semicolon.txt30
-rw-r--r--crates/ra_syntax/tests/data/parser/err/0004_use_path_bad_segment.txt8
-rw-r--r--crates/ra_syntax/tests/data/parser/err/0005_attribute_recover.txt66
-rw-r--r--crates/ra_syntax/tests/data/parser/err/0006_named_field_recovery.txt60
-rw-r--r--crates/ra_syntax/tests/data/parser/err/0007_stray_curly_in_file.txt34
-rw-r--r--crates/ra_syntax/tests/data/parser/err/0008_item_block_recovery.txt88
-rw-r--r--crates/ra_syntax/tests/data/parser/err/0009_broken_struct_type_parameter.txt38
-rw-r--r--crates/ra_syntax/tests/data/parser/err/0010_unsafe_lambda_block.txt54
-rw-r--r--crates/ra_syntax/tests/data/parser/err/0011_extern_struct.txt12
-rw-r--r--crates/ra_syntax/tests/data/parser/err/0013_invalid_type.txt46
-rw-r--r--crates/ra_syntax/tests/data/parser/err/0014_where_no_bounds.txt26
-rw-r--r--crates/ra_syntax/tests/data/parser/err/0015_curly_in_params.txt20
-rw-r--r--crates/ra_syntax/tests/data/parser/err/0016_missing_semi.txt40
-rw-r--r--crates/ra_syntax/tests/data/parser/err/0017_incomplete_binexpr.txt42
-rw-r--r--crates/ra_syntax/tests/data/parser/err/0018_incomplete_fn.txt110
-rw-r--r--crates/ra_syntax/tests/data/parser/err/0019_let_recover.txt110
-rw-r--r--crates/ra_syntax/tests/data/parser/err/0020_fn_recover.txt20
-rw-r--r--crates/ra_syntax/tests/data/parser/err/0021_incomplete_param.txt26
-rw-r--r--crates/ra_syntax/tests/data/parser/err/0022_bad_exprs.txt146
-rw-r--r--crates/ra_syntax/tests/data/parser/err/0023_mismatched_paren.txt50
-rw-r--r--crates/ra_syntax/tests/data/parser/err/0024_many_type_parens.txt446
-rw-r--r--crates/ra_syntax/tests/data/parser/err/0025_nope.txt212
-rw-r--r--crates/ra_syntax/tests/data/parser/err/0026_imp_recovery.txt44
-rw-r--r--crates/ra_syntax/tests/data/parser/err/0027_incomplere_where_for.txt30
-rw-r--r--crates/ra_syntax/tests/data/parser/err/0028_macro_2.0.txt236
-rw-r--r--crates/ra_syntax/tests/data/parser/err/0029_field_completion.txt26
-rw-r--r--crates/ra_syntax/tests/data/parser/err/0030_string_suffixes.txt90
-rw-r--r--crates/ra_syntax/tests/data/parser/err/0031_block_inner_attrs.txt146
-rw-r--r--crates/ra_syntax/tests/data/parser/err/0032_match_arms_inner_attrs.txt228
-rw-r--r--crates/ra_syntax/tests/data/parser/err/0033_match_arms_outer_attrs.txt80
33 files changed, 1315 insertions, 1299 deletions
diff --git a/crates/ra_syntax/tests/data/parser/err/0000_struct_field_missing_comma.txt b/crates/ra_syntax/tests/data/parser/err/0000_struct_field_missing_comma.txt
index 665f7599c..21ef31ba8 100644
--- a/crates/ra_syntax/tests/data/parser/err/0000_struct_field_missing_comma.txt
+++ b/crates/ra_syntax/tests/data/parser/err/0000_struct_field_missing_comma.txt
@@ -1,34 +1,34 @@
1SOURCE_FILE@[0; 34) 1SOURCE_FILE@[0; 34)
2 STRUCT_DEF@[0; 34) 2 STRUCT_DEF@[0; 34)
3 STRUCT_KW@[0; 6) 3 STRUCT_KW@[0; 6) "struct"
4 WHITESPACE@[6; 7) 4 WHITESPACE@[6; 7) " "
5 NAME@[7; 8) 5 NAME@[7; 8)
6 IDENT@[7; 8) "S" 6 IDENT@[7; 8) "S"
7 WHITESPACE@[8; 9) 7 WHITESPACE@[8; 9) " "
8 NAMED_FIELD_DEF_LIST@[9; 34) 8 NAMED_FIELD_DEF_LIST@[9; 34)
9 L_CURLY@[9; 10) 9 L_CURLY@[9; 10) "{"
10 WHITESPACE@[10; 15) 10 WHITESPACE@[10; 15) "\n "
11 NAMED_FIELD_DEF@[15; 21) 11 NAMED_FIELD_DEF@[15; 21)
12 NAME@[15; 16) 12 NAME@[15; 16)
13 IDENT@[15; 16) "a" 13 IDENT@[15; 16) "a"
14 COLON@[16; 17) 14 COLON@[16; 17) ":"
15 WHITESPACE@[17; 18) 15 WHITESPACE@[17; 18) " "
16 PATH_TYPE@[18; 21) 16 PATH_TYPE@[18; 21)
17 PATH@[18; 21) 17 PATH@[18; 21)
18 PATH_SEGMENT@[18; 21) 18 PATH_SEGMENT@[18; 21)
19 NAME_REF@[18; 21) 19 NAME_REF@[18; 21)
20 IDENT@[18; 21) "u32" 20 IDENT@[18; 21) "u32"
21 err: `expected COMMA` 21 err: `expected COMMA`
22 WHITESPACE@[21; 26) 22 WHITESPACE@[21; 26) "\n "
23 NAMED_FIELD_DEF@[26; 32) 23 NAMED_FIELD_DEF@[26; 32)
24 NAME@[26; 27) 24 NAME@[26; 27)
25 IDENT@[26; 27) "b" 25 IDENT@[26; 27) "b"
26 COLON@[27; 28) 26 COLON@[27; 28) ":"
27 WHITESPACE@[28; 29) 27 WHITESPACE@[28; 29) " "
28 PATH_TYPE@[29; 32) 28 PATH_TYPE@[29; 32)
29 PATH@[29; 32) 29 PATH@[29; 32)
30 PATH_SEGMENT@[29; 32) 30 PATH_SEGMENT@[29; 32)
31 NAME_REF@[29; 32) 31 NAME_REF@[29; 32)
32 IDENT@[29; 32) "u32" 32 IDENT@[29; 32) "u32"
33 WHITESPACE@[32; 33) 33 WHITESPACE@[32; 33) "\n"
34 R_CURLY@[33; 34) 34 R_CURLY@[33; 34) "}"
diff --git a/crates/ra_syntax/tests/data/parser/err/0001_item_recovery_in_file.txt b/crates/ra_syntax/tests/data/parser/err/0001_item_recovery_in_file.txt
index 74743d7ad..d7762c089 100644
--- a/crates/ra_syntax/tests/data/parser/err/0001_item_recovery_in_file.txt
+++ b/crates/ra_syntax/tests/data/parser/err/0001_item_recovery_in_file.txt
@@ -1,18 +1,18 @@
1SOURCE_FILE@[0; 21) 1SOURCE_FILE@[0; 21)
2 ERROR@[0; 2) 2 ERROR@[0; 2)
3 IF_KW@[0; 2) 3 IF_KW@[0; 2) "if"
4 err: `expected an item` 4 err: `expected an item`
5 WHITESPACE@[2; 3) 5 WHITESPACE@[2; 3) " "
6 err: `expected an item` 6 err: `expected an item`
7 ERROR@[3; 8) 7 ERROR@[3; 8)
8 MATCH_KW@[3; 8) 8 MATCH_KW@[3; 8) "match"
9 WHITESPACE@[8; 10) 9 WHITESPACE@[8; 10) "\n\n"
10 STRUCT_DEF@[10; 21) 10 STRUCT_DEF@[10; 21)
11 STRUCT_KW@[10; 16) 11 STRUCT_KW@[10; 16) "struct"
12 WHITESPACE@[16; 17) 12 WHITESPACE@[16; 17) " "
13 NAME@[17; 18) 13 NAME@[17; 18)
14 IDENT@[17; 18) "S" 14 IDENT@[17; 18) "S"
15 WHITESPACE@[18; 19) 15 WHITESPACE@[18; 19) " "
16 NAMED_FIELD_DEF_LIST@[19; 21) 16 NAMED_FIELD_DEF_LIST@[19; 21)
17 L_CURLY@[19; 20) 17 L_CURLY@[19; 20) "{"
18 R_CURLY@[20; 21) 18 R_CURLY@[20; 21) "}"
diff --git a/crates/ra_syntax/tests/data/parser/err/0002_duplicate_shebang.txt b/crates/ra_syntax/tests/data/parser/err/0002_duplicate_shebang.txt
index a1f041c33..76642f43b 100644
--- a/crates/ra_syntax/tests/data/parser/err/0002_duplicate_shebang.txt
+++ b/crates/ra_syntax/tests/data/parser/err/0002_duplicate_shebang.txt
@@ -1,7 +1,7 @@
1SOURCE_FILE@[0; 42) 1SOURCE_FILE@[0; 42)
2 SHEBANG@[0; 20) 2 SHEBANG@[0; 20) "#!/use/bin/env rusti"
3 WHITESPACE@[20; 21) 3 WHITESPACE@[20; 21) "\n"
4 err: `expected an item` 4 err: `expected an item`
5 ERROR@[21; 41) 5 ERROR@[21; 41)
6 SHEBANG@[21; 41) 6 SHEBANG@[21; 41) "#!/use/bin/env rusti"
7 WHITESPACE@[41; 42) 7 WHITESPACE@[41; 42) "\n"
diff --git a/crates/ra_syntax/tests/data/parser/err/0003_C++_semicolon.txt b/crates/ra_syntax/tests/data/parser/err/0003_C++_semicolon.txt
index b87fe46bd..b52aaa368 100644
--- a/crates/ra_syntax/tests/data/parser/err/0003_C++_semicolon.txt
+++ b/crates/ra_syntax/tests/data/parser/err/0003_C++_semicolon.txt
@@ -1,39 +1,39 @@
1SOURCE_FILE@[0; 40) 1SOURCE_FILE@[0; 40)
2 STRUCT_DEF@[0; 39) 2 STRUCT_DEF@[0; 39)
3 STRUCT_KW@[0; 6) 3 STRUCT_KW@[0; 6) "struct"
4 WHITESPACE@[6; 7) 4 WHITESPACE@[6; 7) " "
5 NAME@[7; 8) 5 NAME@[7; 8)
6 IDENT@[7; 8) "S" 6 IDENT@[7; 8) "S"
7 WHITESPACE@[8; 9) 7 WHITESPACE@[8; 9) " "
8 NAMED_FIELD_DEF_LIST@[9; 39) 8 NAMED_FIELD_DEF_LIST@[9; 39)
9 L_CURLY@[9; 10) 9 L_CURLY@[9; 10) "{"
10 WHITESPACE@[10; 15) 10 WHITESPACE@[10; 15) "\n "
11 NAMED_FIELD_DEF@[15; 21) 11 NAMED_FIELD_DEF@[15; 21)
12 NAME@[15; 16) 12 NAME@[15; 16)
13 IDENT@[15; 16) "a" 13 IDENT@[15; 16) "a"
14 COLON@[16; 17) 14 COLON@[16; 17) ":"
15 WHITESPACE@[17; 18) 15 WHITESPACE@[17; 18) " "
16 PATH_TYPE@[18; 21) 16 PATH_TYPE@[18; 21)
17 PATH@[18; 21) 17 PATH@[18; 21)
18 PATH_SEGMENT@[18; 21) 18 PATH_SEGMENT@[18; 21)
19 NAME_REF@[18; 21) 19 NAME_REF@[18; 21)
20 IDENT@[18; 21) "i32" 20 IDENT@[18; 21) "i32"
21 COMMA@[21; 22) 21 COMMA@[21; 22) ","
22 WHITESPACE@[22; 27) 22 WHITESPACE@[22; 27) "\n "
23 NAMED_FIELD_DEF@[27; 36) 23 NAMED_FIELD_DEF@[27; 36)
24 NAME@[27; 28) 24 NAME@[27; 28)
25 IDENT@[27; 28) "b" 25 IDENT@[27; 28) "b"
26 COLON@[28; 29) 26 COLON@[28; 29) ":"
27 WHITESPACE@[29; 30) 27 WHITESPACE@[29; 30) " "
28 PATH_TYPE@[30; 36) 28 PATH_TYPE@[30; 36)
29 PATH@[30; 36) 29 PATH@[30; 36)
30 PATH_SEGMENT@[30; 36) 30 PATH_SEGMENT@[30; 36)
31 NAME_REF@[30; 36) 31 NAME_REF@[30; 36)
32 IDENT@[30; 36) "String" 32 IDENT@[30; 36) "String"
33 COMMA@[36; 37) 33 COMMA@[36; 37) ","
34 WHITESPACE@[37; 38) 34 WHITESPACE@[37; 38) "\n"
35 R_CURLY@[38; 39) 35 R_CURLY@[38; 39) "}"
36 err: `expected item, found `;` 36 err: `expected item, found `;`
37consider removing this semicolon` 37consider removing this semicolon`
38 ERROR@[39; 40) 38 ERROR@[39; 40)
39 SEMI@[39; 40) 39 SEMI@[39; 40) ";"
diff --git a/crates/ra_syntax/tests/data/parser/err/0004_use_path_bad_segment.txt b/crates/ra_syntax/tests/data/parser/err/0004_use_path_bad_segment.txt
index 5bdb24676..fb44f21ea 100644
--- a/crates/ra_syntax/tests/data/parser/err/0004_use_path_bad_segment.txt
+++ b/crates/ra_syntax/tests/data/parser/err/0004_use_path_bad_segment.txt
@@ -1,16 +1,16 @@
1SOURCE_FILE@[0; 12) 1SOURCE_FILE@[0; 12)
2 USE_ITEM@[0; 12) 2 USE_ITEM@[0; 12)
3 USE_KW@[0; 3) 3 USE_KW@[0; 3) "use"
4 WHITESPACE@[3; 4) 4 WHITESPACE@[3; 4) " "
5 USE_TREE@[4; 11) 5 USE_TREE@[4; 11)
6 PATH@[4; 11) 6 PATH@[4; 11)
7 PATH@[4; 7) 7 PATH@[4; 7)
8 PATH_SEGMENT@[4; 7) 8 PATH_SEGMENT@[4; 7)
9 NAME_REF@[4; 7) 9 NAME_REF@[4; 7)
10 IDENT@[4; 7) "foo" 10 IDENT@[4; 7) "foo"
11 COLONCOLON@[7; 9) 11 COLONCOLON@[7; 9) "::"
12 err: `expected identifier` 12 err: `expected identifier`
13 PATH_SEGMENT@[9; 11) 13 PATH_SEGMENT@[9; 11)
14 ERROR@[9; 11) 14 ERROR@[9; 11)
15 INT_NUMBER@[9; 11) "92" 15 INT_NUMBER@[9; 11) "92"
16 SEMI@[11; 12) 16 SEMI@[11; 12) ";"
diff --git a/crates/ra_syntax/tests/data/parser/err/0005_attribute_recover.txt b/crates/ra_syntax/tests/data/parser/err/0005_attribute_recover.txt
index 381a7d6dd..1e27522bf 100644
--- a/crates/ra_syntax/tests/data/parser/err/0005_attribute_recover.txt
+++ b/crates/ra_syntax/tests/data/parser/err/0005_attribute_recover.txt
@@ -1,55 +1,55 @@
1SOURCE_FILE@[0; 54) 1SOURCE_FILE@[0; 54)
2 FN_DEF@[0; 31) 2 FN_DEF@[0; 31)
3 ATTR@[0; 18) 3 ATTR@[0; 18)
4 POUND@[0; 1) 4 POUND@[0; 1) "#"
5 TOKEN_TREE@[1; 18) 5 TOKEN_TREE@[1; 18)
6 L_BRACK@[1; 2) 6 L_BRACK@[1; 2) "["
7 IDENT@[2; 5) "foo" 7 IDENT@[2; 5) "foo"
8 TOKEN_TREE@[5; 17) 8 TOKEN_TREE@[5; 17)
9 L_PAREN@[5; 6) 9 L_PAREN@[5; 6) "("
10 IDENT@[6; 9) "foo" 10 IDENT@[6; 9) "foo"
11 COMMA@[9; 10) 11 COMMA@[9; 10) ","
12 WHITESPACE@[10; 11) 12 WHITESPACE@[10; 11) " "
13 PLUS@[11; 12) 13 PLUS@[11; 12) "+"
14 COMMA@[12; 13) 14 COMMA@[12; 13) ","
15 WHITESPACE@[13; 14) 15 WHITESPACE@[13; 14) " "
16 INT_NUMBER@[14; 16) "92" 16 INT_NUMBER@[14; 16) "92"
17 R_PAREN@[16; 17) 17 R_PAREN@[16; 17) ")"
18 R_BRACK@[17; 18) 18 R_BRACK@[17; 18) "]"
19 WHITESPACE@[18; 19) 19 WHITESPACE@[18; 19) "\n"
20 FN_KW@[19; 21) 20 FN_KW@[19; 21) "fn"
21 WHITESPACE@[21; 22) 21 WHITESPACE@[21; 22) " "
22 NAME@[22; 25) 22 NAME@[22; 25)
23 IDENT@[22; 25) "foo" 23 IDENT@[22; 25) "foo"
24 PARAM_LIST@[25; 27) 24 PARAM_LIST@[25; 27)
25 L_PAREN@[25; 26) 25 L_PAREN@[25; 26) "("
26 R_PAREN@[26; 27) 26 R_PAREN@[26; 27) ")"
27 WHITESPACE@[27; 28) 27 WHITESPACE@[27; 28) " "
28 BLOCK@[28; 31) 28 BLOCK@[28; 31)
29 L_CURLY@[28; 29) 29 L_CURLY@[28; 29) "{"
30 WHITESPACE@[29; 30) 30 WHITESPACE@[29; 30) "\n"
31 R_CURLY@[30; 31) 31 R_CURLY@[30; 31) "}"
32 WHITESPACE@[31; 34) 32 WHITESPACE@[31; 34) "\n\n\n"
33 ATTR@[34; 53) 33 ATTR@[34; 53)
34 POUND@[34; 35) 34 POUND@[34; 35) "#"
35 TOKEN_TREE@[35; 53) 35 TOKEN_TREE@[35; 53)
36 L_BRACK@[35; 36) 36 L_BRACK@[35; 36) "["
37 IDENT@[36; 39) "foo" 37 IDENT@[36; 39) "foo"
38 TOKEN_TREE@[39; 53) 38 TOKEN_TREE@[39; 53)
39 L_PAREN@[39; 40) 39 L_PAREN@[39; 40) "("
40 WHITESPACE@[40; 41) 40 WHITESPACE@[40; 41) "\n"
41 FN_KW@[41; 43) 41 FN_KW@[41; 43) "fn"
42 WHITESPACE@[43; 44) 42 WHITESPACE@[43; 44) " "
43 IDENT@[44; 47) "foo" 43 IDENT@[44; 47) "foo"
44 TOKEN_TREE@[47; 49) 44 TOKEN_TREE@[47; 49)
45 L_PAREN@[47; 48) 45 L_PAREN@[47; 48) "("
46 R_PAREN@[48; 49) 46 R_PAREN@[48; 49) ")"
47 WHITESPACE@[49; 50) 47 WHITESPACE@[49; 50) " "
48 TOKEN_TREE@[50; 53) 48 TOKEN_TREE@[50; 53)
49 L_CURLY@[50; 51) 49 L_CURLY@[50; 51) "{"
50 WHITESPACE@[51; 52) 50 WHITESPACE@[51; 52) "\n"
51 R_CURLY@[52; 53) 51 R_CURLY@[52; 53) "}"
52 err: `expected R_PAREN` 52 err: `expected R_PAREN`
53 err: `expected R_BRACK` 53 err: `expected R_BRACK`
54 err: `expected an item` 54 err: `expected an item`
55 WHITESPACE@[53; 54) 55 WHITESPACE@[53; 54) "\n"
diff --git a/crates/ra_syntax/tests/data/parser/err/0006_named_field_recovery.txt b/crates/ra_syntax/tests/data/parser/err/0006_named_field_recovery.txt
index 02f832fb7..d47b98ed4 100644
--- a/crates/ra_syntax/tests/data/parser/err/0006_named_field_recovery.txt
+++ b/crates/ra_syntax/tests/data/parser/err/0006_named_field_recovery.txt
@@ -1,74 +1,74 @@
1SOURCE_FILE@[0; 74) 1SOURCE_FILE@[0; 74)
2 STRUCT_DEF@[0; 73) 2 STRUCT_DEF@[0; 73)
3 STRUCT_KW@[0; 6) 3 STRUCT_KW@[0; 6) "struct"
4 WHITESPACE@[6; 7) 4 WHITESPACE@[6; 7) " "
5 NAME@[7; 8) 5 NAME@[7; 8)
6 IDENT@[7; 8) "S" 6 IDENT@[7; 8) "S"
7 WHITESPACE@[8; 9) 7 WHITESPACE@[8; 9) " "
8 NAMED_FIELD_DEF_LIST@[9; 73) 8 NAMED_FIELD_DEF_LIST@[9; 73)
9 L_CURLY@[9; 10) 9 L_CURLY@[9; 10) "{"
10 WHITESPACE@[10; 15) 10 WHITESPACE@[10; 15) "\n "
11 NAMED_FIELD_DEF@[15; 21) 11 NAMED_FIELD_DEF@[15; 21)
12 NAME@[15; 16) 12 NAME@[15; 16)
13 IDENT@[15; 16) "f" 13 IDENT@[15; 16) "f"
14 COLON@[16; 17) 14 COLON@[16; 17) ":"
15 WHITESPACE@[17; 18) 15 WHITESPACE@[17; 18) " "
16 PATH_TYPE@[18; 21) 16 PATH_TYPE@[18; 21)
17 PATH@[18; 21) 17 PATH@[18; 21)
18 PATH_SEGMENT@[18; 21) 18 PATH_SEGMENT@[18; 21)
19 NAME_REF@[18; 21) 19 NAME_REF@[18; 21)
20 IDENT@[18; 21) "u32" 20 IDENT@[18; 21) "u32"
21 COMMA@[21; 22) 21 COMMA@[21; 22) ","
22 WHITESPACE@[22; 27) 22 WHITESPACE@[22; 27) "\n "
23 VISIBILITY@[27; 30) 23 VISIBILITY@[27; 30)
24 PUB_KW@[27; 30) 24 PUB_KW@[27; 30) "pub"
25 WHITESPACE@[30; 31) 25 WHITESPACE@[30; 31) " "
26 err: `expected field declaration` 26 err: `expected field declaration`
27 ERROR@[31; 33) 27 ERROR@[31; 33)
28 INT_NUMBER@[31; 33) "92" 28 INT_NUMBER@[31; 33) "92"
29 err: `expected COMMA` 29 err: `expected COMMA`
30 WHITESPACE@[33; 38) 30 WHITESPACE@[33; 38) "\n "
31 err: `expected field declaration` 31 err: `expected field declaration`
32 ERROR@[38; 39) 32 ERROR@[38; 39)
33 PLUS@[38; 39) 33 PLUS@[38; 39) "+"
34 err: `expected COMMA` 34 err: `expected COMMA`
35 WHITESPACE@[39; 40) 35 WHITESPACE@[39; 40) " "
36 err: `expected field declaration` 36 err: `expected field declaration`
37 ERROR@[40; 41) 37 ERROR@[40; 41)
38 MINUS@[40; 41) 38 MINUS@[40; 41) "-"
39 err: `expected COMMA` 39 err: `expected COMMA`
40 WHITESPACE@[41; 42) 40 WHITESPACE@[41; 42) " "
41 err: `expected field declaration` 41 err: `expected field declaration`
42 ERROR@[42; 43) 42 ERROR@[42; 43)
43 STAR@[42; 43) 43 STAR@[42; 43) "*"
44 err: `expected COMMA` 44 err: `expected COMMA`
45 WHITESPACE@[43; 48) 45 WHITESPACE@[43; 48) "\n "
46 NAMED_FIELD_DEF@[48; 58) 46 NAMED_FIELD_DEF@[48; 58)
47 VISIBILITY@[48; 51) 47 VISIBILITY@[48; 51)
48 PUB_KW@[48; 51) 48 PUB_KW@[48; 51) "pub"
49 WHITESPACE@[51; 52) 49 WHITESPACE@[51; 52) " "
50 NAME@[52; 53) 50 NAME@[52; 53)
51 IDENT@[52; 53) "x" 51 IDENT@[52; 53) "x"
52 COLON@[53; 54) 52 COLON@[53; 54) ":"
53 WHITESPACE@[54; 55) 53 WHITESPACE@[54; 55) " "
54 PATH_TYPE@[55; 58) 54 PATH_TYPE@[55; 58)
55 PATH@[55; 58) 55 PATH@[55; 58)
56 PATH_SEGMENT@[55; 58) 56 PATH_SEGMENT@[55; 58)
57 NAME_REF@[55; 58) 57 NAME_REF@[55; 58)
58 IDENT@[55; 58) "u32" 58 IDENT@[55; 58) "u32"
59 COMMA@[58; 59) 59 COMMA@[58; 59) ","
60 WHITESPACE@[59; 64) 60 WHITESPACE@[59; 64) "\n "
61 NAMED_FIELD_DEF@[64; 70) 61 NAMED_FIELD_DEF@[64; 70)
62 NAME@[64; 65) 62 NAME@[64; 65)
63 IDENT@[64; 65) "z" 63 IDENT@[64; 65) "z"
64 COLON@[65; 66) 64 COLON@[65; 66) ":"
65 WHITESPACE@[66; 67) 65 WHITESPACE@[66; 67) " "
66 PATH_TYPE@[67; 70) 66 PATH_TYPE@[67; 70)
67 PATH@[67; 70) 67 PATH@[67; 70)
68 PATH_SEGMENT@[67; 70) 68 PATH_SEGMENT@[67; 70)
69 NAME_REF@[67; 70) 69 NAME_REF@[67; 70)
70 IDENT@[67; 70) "f64" 70 IDENT@[67; 70) "f64"
71 COMMA@[70; 71) 71 COMMA@[70; 71) ","
72 WHITESPACE@[71; 72) 72 WHITESPACE@[71; 72) "\n"
73 R_CURLY@[72; 73) 73 R_CURLY@[72; 73) "}"
74 WHITESPACE@[73; 74) 74 WHITESPACE@[73; 74) "\n"
diff --git a/crates/ra_syntax/tests/data/parser/err/0007_stray_curly_in_file.txt b/crates/ra_syntax/tests/data/parser/err/0007_stray_curly_in_file.txt
index d46f753ad..94066ed05 100644
--- a/crates/ra_syntax/tests/data/parser/err/0007_stray_curly_in_file.txt
+++ b/crates/ra_syntax/tests/data/parser/err/0007_stray_curly_in_file.txt
@@ -1,32 +1,32 @@
1SOURCE_FILE@[0; 31) 1SOURCE_FILE@[0; 31)
2 ERROR@[0; 1) 2 ERROR@[0; 1)
3 R_CURLY@[0; 1) 3 R_CURLY@[0; 1) "}"
4 err: `unmatched `}`` 4 err: `unmatched `}``
5 WHITESPACE@[1; 3) 5 WHITESPACE@[1; 3) "\n\n"
6 STRUCT_DEF@[3; 12) 6 STRUCT_DEF@[3; 12)
7 STRUCT_KW@[3; 9) 7 STRUCT_KW@[3; 9) "struct"
8 WHITESPACE@[9; 10) 8 WHITESPACE@[9; 10) " "
9 NAME@[10; 11) 9 NAME@[10; 11)
10 IDENT@[10; 11) "S" 10 IDENT@[10; 11) "S"
11 SEMI@[11; 12) 11 SEMI@[11; 12) ";"
12 WHITESPACE@[12; 14) 12 WHITESPACE@[12; 14) "\n\n"
13 err: `unmatched `}`` 13 err: `unmatched `}``
14 ERROR@[14; 15) 14 ERROR@[14; 15)
15 R_CURLY@[14; 15) 15 R_CURLY@[14; 15) "}"
16 WHITESPACE@[15; 17) 16 WHITESPACE@[15; 17) "\n\n"
17 FN_DEF@[17; 27) 17 FN_DEF@[17; 27)
18 FN_KW@[17; 19) 18 FN_KW@[17; 19) "fn"
19 WHITESPACE@[19; 20) 19 WHITESPACE@[19; 20) " "
20 NAME@[20; 23) 20 NAME@[20; 23)
21 IDENT@[20; 23) "foo" 21 IDENT@[20; 23) "foo"
22 PARAM_LIST@[23; 25) 22 PARAM_LIST@[23; 25)
23 L_PAREN@[23; 24) 23 L_PAREN@[23; 24) "("
24 R_PAREN@[24; 25) 24 R_PAREN@[24; 25) ")"
25 BLOCK@[25; 27) 25 BLOCK@[25; 27)
26 L_CURLY@[25; 26) 26 L_CURLY@[25; 26) "{"
27 R_CURLY@[26; 27) 27 R_CURLY@[26; 27) "}"
28 WHITESPACE@[27; 29) 28 WHITESPACE@[27; 29) "\n\n"
29 err: `unmatched `}`` 29 err: `unmatched `}``
30 ERROR@[29; 30) 30 ERROR@[29; 30)
31 R_CURLY@[29; 30) 31 R_CURLY@[29; 30) "}"
32 WHITESPACE@[30; 31) 32 WHITESPACE@[30; 31) "\n"
diff --git a/crates/ra_syntax/tests/data/parser/err/0008_item_block_recovery.txt b/crates/ra_syntax/tests/data/parser/err/0008_item_block_recovery.txt
index 870c818ae..6f5a27856 100644
--- a/crates/ra_syntax/tests/data/parser/err/0008_item_block_recovery.txt
+++ b/crates/ra_syntax/tests/data/parser/err/0008_item_block_recovery.txt
@@ -1,18 +1,18 @@
1SOURCE_FILE@[0; 95) 1SOURCE_FILE@[0; 95)
2 FN_DEF@[0; 12) 2 FN_DEF@[0; 12)
3 FN_KW@[0; 2) 3 FN_KW@[0; 2) "fn"
4 WHITESPACE@[2; 3) 4 WHITESPACE@[2; 3) " "
5 NAME@[3; 6) 5 NAME@[3; 6)
6 IDENT@[3; 6) "foo" 6 IDENT@[3; 6) "foo"
7 PARAM_LIST@[6; 8) 7 PARAM_LIST@[6; 8)
8 L_PAREN@[6; 7) 8 L_PAREN@[6; 7) "("
9 R_PAREN@[7; 8) 9 R_PAREN@[7; 8) ")"
10 WHITESPACE@[8; 9) 10 WHITESPACE@[8; 9) " "
11 BLOCK@[9; 12) 11 BLOCK@[9; 12)
12 L_CURLY@[9; 10) 12 L_CURLY@[9; 10) "{"
13 WHITESPACE@[10; 11) 13 WHITESPACE@[10; 11) "\n"
14 R_CURLY@[11; 12) 14 R_CURLY@[11; 12) "}"
15 WHITESPACE@[12; 14) 15 WHITESPACE@[12; 14) "\n\n"
16 MACRO_CALL@[14; 19) 16 MACRO_CALL@[14; 19)
17 PATH@[14; 17) 17 PATH@[14; 17)
18 PATH_SEGMENT@[14; 17) 18 PATH_SEGMENT@[14; 17)
@@ -20,58 +20,58 @@ SOURCE_FILE@[0; 95)
20 IDENT@[14; 17) "bar" 20 IDENT@[14; 17) "bar"
21 err: `expected EXCL` 21 err: `expected EXCL`
22 TOKEN_TREE@[17; 19) 22 TOKEN_TREE@[17; 19)
23 L_PAREN@[17; 18) 23 L_PAREN@[17; 18) "("
24 R_PAREN@[18; 19) 24 R_PAREN@[18; 19) ")"
25 err: `expected SEMI` 25 err: `expected SEMI`
26 WHITESPACE@[19; 20) 26 WHITESPACE@[19; 20) " "
27 err: `expected an item` 27 err: `expected an item`
28 ERROR@[20; 80) 28 ERROR@[20; 80)
29 L_CURLY@[20; 21) 29 L_CURLY@[20; 21) "{"
30 WHITESPACE@[21; 26) 30 WHITESPACE@[21; 26) "\n "
31 IF_EXPR@[26; 78) 31 IF_EXPR@[26; 78)
32 IF_KW@[26; 28) 32 IF_KW@[26; 28) "if"
33 WHITESPACE@[28; 29) 33 WHITESPACE@[28; 29) " "
34 CONDITION@[29; 33) 34 CONDITION@[29; 33)
35 LITERAL@[29; 33) 35 LITERAL@[29; 33)
36 TRUE_KW@[29; 33) 36 TRUE_KW@[29; 33) "true"
37 WHITESPACE@[33; 34) 37 WHITESPACE@[33; 34) " "
38 BLOCK@[34; 51) 38 BLOCK@[34; 51)
39 L_CURLY@[34; 35) 39 L_CURLY@[34; 35) "{"
40 WHITESPACE@[35; 44) 40 WHITESPACE@[35; 44) "\n "
41 LITERAL@[44; 45) 41 LITERAL@[44; 45)
42 INT_NUMBER@[44; 45) "1" 42 INT_NUMBER@[44; 45) "1"
43 WHITESPACE@[45; 50) 43 WHITESPACE@[45; 50) "\n "
44 R_CURLY@[50; 51) 44 R_CURLY@[50; 51) "}"
45 WHITESPACE@[51; 52) 45 WHITESPACE@[51; 52) " "
46 ELSE_KW@[52; 56) 46 ELSE_KW@[52; 56) "else"
47 WHITESPACE@[56; 57) 47 WHITESPACE@[56; 57) " "
48 BLOCK@[57; 78) 48 BLOCK@[57; 78)
49 L_CURLY@[57; 58) 49 L_CURLY@[57; 58) "{"
50 WHITESPACE@[58; 67) 50 WHITESPACE@[58; 67) "\n "
51 BIN_EXPR@[67; 72) 51 BIN_EXPR@[67; 72)
52 LITERAL@[67; 68) 52 LITERAL@[67; 68)
53 INT_NUMBER@[67; 68) "2" 53 INT_NUMBER@[67; 68) "2"
54 WHITESPACE@[68; 69) 54 WHITESPACE@[68; 69) " "
55 PLUS@[69; 70) 55 PLUS@[69; 70) "+"
56 WHITESPACE@[70; 71) 56 WHITESPACE@[70; 71) " "
57 LITERAL@[71; 72) 57 LITERAL@[71; 72)
58 INT_NUMBER@[71; 72) "3" 58 INT_NUMBER@[71; 72) "3"
59 WHITESPACE@[72; 77) 59 WHITESPACE@[72; 77) "\n "
60 R_CURLY@[77; 78) 60 R_CURLY@[77; 78) "}"
61 WHITESPACE@[78; 79) 61 WHITESPACE@[78; 79) "\n"
62 R_CURLY@[79; 80) 62 R_CURLY@[79; 80) "}"
63 WHITESPACE@[80; 82) 63 WHITESPACE@[80; 82) "\n\n"
64 FN_DEF@[82; 94) 64 FN_DEF@[82; 94)
65 FN_KW@[82; 84) 65 FN_KW@[82; 84) "fn"
66 WHITESPACE@[84; 85) 66 WHITESPACE@[84; 85) " "
67 NAME@[85; 88) 67 NAME@[85; 88)
68 IDENT@[85; 88) "baz" 68 IDENT@[85; 88) "baz"
69 PARAM_LIST@[88; 90) 69 PARAM_LIST@[88; 90)
70 L_PAREN@[88; 89) 70 L_PAREN@[88; 89) "("
71 R_PAREN@[89; 90) 71 R_PAREN@[89; 90) ")"
72 WHITESPACE@[90; 91) 72 WHITESPACE@[90; 91) " "
73 BLOCK@[91; 94) 73 BLOCK@[91; 94)
74 L_CURLY@[91; 92) 74 L_CURLY@[91; 92) "{"
75 WHITESPACE@[92; 93) 75 WHITESPACE@[92; 93) "\n"
76 R_CURLY@[93; 94) 76 R_CURLY@[93; 94) "}"
77 WHITESPACE@[94; 95) 77 WHITESPACE@[94; 95) "\n"
diff --git a/crates/ra_syntax/tests/data/parser/err/0009_broken_struct_type_parameter.txt b/crates/ra_syntax/tests/data/parser/err/0009_broken_struct_type_parameter.txt
index 26c5d395c..80568b5bd 100644
--- a/crates/ra_syntax/tests/data/parser/err/0009_broken_struct_type_parameter.txt
+++ b/crates/ra_syntax/tests/data/parser/err/0009_broken_struct_type_parameter.txt
@@ -1,33 +1,33 @@
1SOURCE_FILE@[0; 43) 1SOURCE_FILE@[0; 43)
2 STRUCT_DEF@[0; 11) 2 STRUCT_DEF@[0; 11)
3 STRUCT_KW@[0; 6) 3 STRUCT_KW@[0; 6) "struct"
4 WHITESPACE@[6; 7) 4 WHITESPACE@[6; 7) " "
5 NAME@[7; 8) 5 NAME@[7; 8)
6 IDENT@[7; 8) "S" 6 IDENT@[7; 8) "S"
7 TYPE_PARAM_LIST@[8; 11) 7 TYPE_PARAM_LIST@[8; 11)
8 L_ANGLE@[8; 9) 8 L_ANGLE@[8; 9) "<"
9 err: `expected type parameter` 9 err: `expected type parameter`
10 ERROR@[9; 11) 10 ERROR@[9; 11)
11 INT_NUMBER@[9; 11) "90" 11 INT_NUMBER@[9; 11) "90"
12 err: `expected COMMA` 12 err: `expected COMMA`
13 err: `expected R_ANGLE` 13 err: `expected R_ANGLE`
14 err: `expected `;`, `{`, or `(`` 14 err: `expected `;`, `{`, or `(``
15 WHITESPACE@[11; 12) 15 WHITESPACE@[11; 12) " "
16 err: `expected an item` 16 err: `expected an item`
17 ERROR@[12; 13) 17 ERROR@[12; 13)
18 PLUS@[12; 13) 18 PLUS@[12; 13) "+"
19 WHITESPACE@[13; 14) 19 WHITESPACE@[13; 14) " "
20 err: `expected an item` 20 err: `expected an item`
21 ERROR@[14; 15) 21 ERROR@[14; 15)
22 INT_NUMBER@[14; 15) "2" 22 INT_NUMBER@[14; 15) "2"
23 err: `expected an item` 23 err: `expected an item`
24 ERROR@[15; 16) 24 ERROR@[15; 16)
25 R_ANGLE@[15; 16) 25 R_ANGLE@[15; 16) ">"
26 WHITESPACE@[16; 17) 26 WHITESPACE@[16; 17) " "
27 err: `expected an item` 27 err: `expected an item`
28 ERROR@[17; 31) 28 ERROR@[17; 31)
29 L_CURLY@[17; 18) 29 L_CURLY@[17; 18) "{"
30 WHITESPACE@[18; 23) 30 WHITESPACE@[18; 23) "\n "
31 EXPR_STMT@[23; 24) 31 EXPR_STMT@[23; 24)
32 PATH_EXPR@[23; 24) 32 PATH_EXPR@[23; 24)
33 PATH@[23; 24) 33 PATH@[23; 24)
@@ -38,21 +38,21 @@ SOURCE_FILE@[0; 43)
38 err: `expected expression` 38 err: `expected expression`
39 EXPR_STMT@[24; 25) 39 EXPR_STMT@[24; 25)
40 ERROR@[24; 25) 40 ERROR@[24; 25)
41 COLON@[24; 25) 41 COLON@[24; 25) ":"
42 err: `expected SEMI` 42 err: `expected SEMI`
43 WHITESPACE@[25; 26) 43 WHITESPACE@[25; 26) " "
44 PATH_EXPR@[26; 29) 44 PATH_EXPR@[26; 29)
45 PATH@[26; 29) 45 PATH@[26; 29)
46 PATH_SEGMENT@[26; 29) 46 PATH_SEGMENT@[26; 29)
47 NAME_REF@[26; 29) 47 NAME_REF@[26; 29)
48 IDENT@[26; 29) "u32" 48 IDENT@[26; 29) "u32"
49 WHITESPACE@[29; 30) 49 WHITESPACE@[29; 30) "\n"
50 R_CURLY@[30; 31) 50 R_CURLY@[30; 31) "}"
51 WHITESPACE@[31; 33) 51 WHITESPACE@[31; 33) "\n\n"
52 STRUCT_DEF@[33; 42) 52 STRUCT_DEF@[33; 42)
53 STRUCT_KW@[33; 39) 53 STRUCT_KW@[33; 39) "struct"
54 WHITESPACE@[39; 40) 54 WHITESPACE@[39; 40) " "
55 NAME@[40; 41) 55 NAME@[40; 41)
56 IDENT@[40; 41) "T" 56 IDENT@[40; 41) "T"
57 SEMI@[41; 42) 57 SEMI@[41; 42) ";"
58 WHITESPACE@[42; 43) 58 WHITESPACE@[42; 43) "\n"
diff --git a/crates/ra_syntax/tests/data/parser/err/0010_unsafe_lambda_block.txt b/crates/ra_syntax/tests/data/parser/err/0010_unsafe_lambda_block.txt
index e6794a2a0..36982085a 100644
--- a/crates/ra_syntax/tests/data/parser/err/0010_unsafe_lambda_block.txt
+++ b/crates/ra_syntax/tests/data/parser/err/0010_unsafe_lambda_block.txt
@@ -1,42 +1,42 @@
1SOURCE_FILE@[0; 42) 1SOURCE_FILE@[0; 42)
2 FN_DEF@[0; 41) 2 FN_DEF@[0; 41)
3 FN_KW@[0; 2) 3 FN_KW@[0; 2) "fn"
4 WHITESPACE@[2; 3) 4 WHITESPACE@[2; 3) " "
5 NAME@[3; 7) 5 NAME@[3; 7)
6 IDENT@[3; 7) "main" 6 IDENT@[3; 7) "main"
7 PARAM_LIST@[7; 9) 7 PARAM_LIST@[7; 9)
8 L_PAREN@[7; 8) 8 L_PAREN@[7; 8) "("
9 R_PAREN@[8; 9) 9 R_PAREN@[8; 9) ")"
10 WHITESPACE@[9; 10) 10 WHITESPACE@[9; 10) " "
11 BLOCK@[10; 41) 11 BLOCK@[10; 41)
12 L_CURLY@[10; 11) 12 L_CURLY@[10; 11) "{"
13 WHITESPACE@[11; 16) 13 WHITESPACE@[11; 16) "\n "
14 EXPR_STMT@[16; 39) 14 EXPR_STMT@[16; 39)
15 LAMBDA_EXPR@[16; 38) 15 LAMBDA_EXPR@[16; 38)
16 PARAM_LIST@[16; 18) 16 PARAM_LIST@[16; 18)
17 PIPE@[16; 17) 17 PIPE@[16; 17) "|"
18 PIPE@[17; 18) 18 PIPE@[17; 18) "|"
19 WHITESPACE@[18; 19) 19 WHITESPACE@[18; 19) " "
20 RET_TYPE@[19; 24) 20 RET_TYPE@[19; 24)
21 THIN_ARROW@[19; 21) 21 THIN_ARROW@[19; 21) "->"
22 WHITESPACE@[21; 22) 22 WHITESPACE@[21; 22) " "
23 TUPLE_TYPE@[22; 24) 23 TUPLE_TYPE@[22; 24)
24 L_PAREN@[22; 23) 24 L_PAREN@[22; 23) "("
25 R_PAREN@[23; 24) 25 R_PAREN@[23; 24) ")"
26 err: `expected `{`` 26 err: `expected `{``
27 WHITESPACE@[24; 25) 27 WHITESPACE@[24; 25) " "
28 BLOCK_EXPR@[25; 38) 28 BLOCK_EXPR@[25; 38)
29 UNSAFE_KW@[25; 31) 29 UNSAFE_KW@[25; 31) "unsafe"
30 WHITESPACE@[31; 32) 30 WHITESPACE@[31; 32) " "
31 BLOCK@[32; 38) 31 BLOCK@[32; 38)
32 L_CURLY@[32; 33) 32 L_CURLY@[32; 33) "{"
33 WHITESPACE@[33; 34) 33 WHITESPACE@[33; 34) " "
34 TUPLE_EXPR@[34; 36) 34 TUPLE_EXPR@[34; 36)
35 L_PAREN@[34; 35) 35 L_PAREN@[34; 35) "("
36 R_PAREN@[35; 36) 36 R_PAREN@[35; 36) ")"
37 WHITESPACE@[36; 37) 37 WHITESPACE@[36; 37) " "
38 R_CURLY@[37; 38) 38 R_CURLY@[37; 38) "}"
39 SEMI@[38; 39) 39 SEMI@[38; 39) ";"
40 WHITESPACE@[39; 40) 40 WHITESPACE@[39; 40) "\n"
41 R_CURLY@[40; 41) 41 R_CURLY@[40; 41) "}"
42 WHITESPACE@[41; 42) 42 WHITESPACE@[41; 42) "\n"
diff --git a/crates/ra_syntax/tests/data/parser/err/0011_extern_struct.txt b/crates/ra_syntax/tests/data/parser/err/0011_extern_struct.txt
index a65cecde5..3fb0a77ef 100644
--- a/crates/ra_syntax/tests/data/parser/err/0011_extern_struct.txt
+++ b/crates/ra_syntax/tests/data/parser/err/0011_extern_struct.txt
@@ -1,13 +1,13 @@
1SOURCE_FILE@[0; 19) 1SOURCE_FILE@[0; 19)
2 ERROR@[0; 6) 2 ERROR@[0; 6)
3 ABI@[0; 6) 3 ABI@[0; 6)
4 EXTERN_KW@[0; 6) 4 EXTERN_KW@[0; 6) "extern"
5 err: `expected fn, trait or impl` 5 err: `expected fn, trait or impl`
6 WHITESPACE@[6; 7) 6 WHITESPACE@[6; 7) " "
7 STRUCT_DEF@[7; 18) 7 STRUCT_DEF@[7; 18)
8 STRUCT_KW@[7; 13) 8 STRUCT_KW@[7; 13) "struct"
9 WHITESPACE@[13; 14) 9 WHITESPACE@[13; 14) " "
10 NAME@[14; 17) 10 NAME@[14; 17)
11 IDENT@[14; 17) "Foo" 11 IDENT@[14; 17) "Foo"
12 SEMI@[17; 18) 12 SEMI@[17; 18) ";"
13 WHITESPACE@[18; 19) 13 WHITESPACE@[18; 19) "\n"
diff --git a/crates/ra_syntax/tests/data/parser/err/0013_invalid_type.txt b/crates/ra_syntax/tests/data/parser/err/0013_invalid_type.txt
index 1ec15194c..47b992b0a 100644
--- a/crates/ra_syntax/tests/data/parser/err/0013_invalid_type.txt
+++ b/crates/ra_syntax/tests/data/parser/err/0013_invalid_type.txt
@@ -1,15 +1,15 @@
1SOURCE_FILE@[0; 86) 1SOURCE_FILE@[0; 86)
2 STRUCT_DEF@[0; 72) 2 STRUCT_DEF@[0; 72)
3 VISIBILITY@[0; 3) 3 VISIBILITY@[0; 3)
4 PUB_KW@[0; 3) 4 PUB_KW@[0; 3) "pub"
5 WHITESPACE@[3; 4) 5 WHITESPACE@[3; 4) " "
6 STRUCT_KW@[4; 10) 6 STRUCT_KW@[4; 10) "struct"
7 WHITESPACE@[10; 11) 7 WHITESPACE@[10; 11) " "
8 NAME@[11; 16) 8 NAME@[11; 16)
9 IDENT@[11; 16) "Cache" 9 IDENT@[11; 16) "Cache"
10 POS_FIELD_DEF_LIST@[16; 72) 10 POS_FIELD_DEF_LIST@[16; 72)
11 L_PAREN@[16; 17) 11 L_PAREN@[16; 17) "("
12 WHITESPACE@[17; 22) 12 WHITESPACE@[17; 22) "\n "
13 POS_FIELD_DEF@[22; 68) 13 POS_FIELD_DEF@[22; 68)
14 PATH_TYPE@[22; 68) 14 PATH_TYPE@[22; 68)
15 PATH@[22; 68) 15 PATH@[22; 68)
@@ -17,7 +17,7 @@ SOURCE_FILE@[0; 86)
17 NAME_REF@[22; 29) 17 NAME_REF@[22; 29)
18 IDENT@[22; 29) "RefCell" 18 IDENT@[22; 29) "RefCell"
19 TYPE_ARG_LIST@[29; 68) 19 TYPE_ARG_LIST@[29; 68)
20 L_ANGLE@[29; 30) 20 L_ANGLE@[29; 30) "<"
21 TYPE_ARG@[30; 68) 21 TYPE_ARG@[30; 68)
22 PATH_TYPE@[30; 68) 22 PATH_TYPE@[30; 68)
23 PATH@[30; 68) 23 PATH@[30; 68)
@@ -25,16 +25,16 @@ SOURCE_FILE@[0; 86)
25 NAME_REF@[30; 37) 25 NAME_REF@[30; 37)
26 IDENT@[30; 37) "HashMap" 26 IDENT@[30; 37) "HashMap"
27 TYPE_ARG_LIST@[37; 68) 27 TYPE_ARG_LIST@[37; 68)
28 L_ANGLE@[37; 38) 28 L_ANGLE@[37; 38) "<"
29 WHITESPACE@[38; 47) 29 WHITESPACE@[38; 47) "\n "
30 TYPE_ARG@[47; 53) 30 TYPE_ARG@[47; 53)
31 PATH_TYPE@[47; 53) 31 PATH_TYPE@[47; 53)
32 PATH@[47; 53) 32 PATH@[47; 53)
33 PATH_SEGMENT@[47; 53) 33 PATH_SEGMENT@[47; 53)
34 NAME_REF@[47; 53) 34 NAME_REF@[47; 53)
35 IDENT@[47; 53) "TypeId" 35 IDENT@[47; 53) "TypeId"
36 COMMA@[53; 54) 36 COMMA@[53; 54) ","
37 WHITESPACE@[54; 63) 37 WHITESPACE@[54; 63) "\n "
38 TYPE_ARG@[63; 68) 38 TYPE_ARG@[63; 68)
39 PATH_TYPE@[63; 68) 39 PATH_TYPE@[63; 68)
40 PATH@[63; 68) 40 PATH@[63; 68)
@@ -42,11 +42,11 @@ SOURCE_FILE@[0; 86)
42 NAME_REF@[63; 66) 42 NAME_REF@[63; 66)
43 IDENT@[63; 66) "Box" 43 IDENT@[63; 66) "Box"
44 TYPE_ARG_LIST@[66; 68) 44 TYPE_ARG_LIST@[66; 68)
45 L_ANGLE@[66; 67) 45 L_ANGLE@[66; 67) "<"
46 err: `expected type` 46 err: `expected type`
47 TYPE_ARG@[67; 68) 47 TYPE_ARG@[67; 68)
48 ERROR@[67; 68) 48 ERROR@[67; 68)
49 AT@[67; 68) 49 AT@[67; 68) "@"
50 err: `expected COMMA` 50 err: `expected COMMA`
51 err: `expected R_ANGLE` 51 err: `expected R_ANGLE`
52 err: `expected COMMA` 52 err: `expected COMMA`
@@ -54,7 +54,7 @@ SOURCE_FILE@[0; 86)
54 err: `expected COMMA` 54 err: `expected COMMA`
55 err: `expected R_ANGLE` 55 err: `expected R_ANGLE`
56 err: `expected COMMA` 56 err: `expected COMMA`
57 WHITESPACE@[68; 69) 57 WHITESPACE@[68; 69) " "
58 POS_FIELD_DEF@[69; 72) 58 POS_FIELD_DEF@[69; 72)
59 PATH_TYPE@[69; 72) 59 PATH_TYPE@[69; 72)
60 PATH@[69; 72) 60 PATH@[69; 72)
@@ -68,22 +68,22 @@ SOURCE_FILE@[0; 86)
68 err: `expected an item` 68 err: `expected an item`
69 ERROR@[72; 72) 69 ERROR@[72; 72)
70 ERROR@[72; 73) 70 ERROR@[72; 73)
71 R_ANGLE@[72; 73) 71 R_ANGLE@[72; 73) ">"
72 err: `expected an item` 72 err: `expected an item`
73 ERROR@[73; 74) 73 ERROR@[73; 74)
74 COMMA@[73; 74) 74 COMMA@[73; 74) ","
75 WHITESPACE@[74; 79) 75 WHITESPACE@[74; 79) "\n "
76 err: `expected an item` 76 err: `expected an item`
77 ERROR@[79; 80) 77 ERROR@[79; 80)
78 R_ANGLE@[79; 80) 78 R_ANGLE@[79; 80) ">"
79 err: `expected an item` 79 err: `expected an item`
80 ERROR@[80; 81) 80 ERROR@[80; 81)
81 R_ANGLE@[80; 81) 81 R_ANGLE@[80; 81) ">"
82 WHITESPACE@[81; 82) 82 WHITESPACE@[81; 82) "\n"
83 err: `expected an item` 83 err: `expected an item`
84 ERROR@[82; 83) 84 ERROR@[82; 83)
85 R_PAREN@[82; 83) 85 R_PAREN@[82; 83) ")"
86 err: `expected an item` 86 err: `expected an item`
87 ERROR@[83; 84) 87 ERROR@[83; 84)
88 SEMI@[83; 84) 88 SEMI@[83; 84) ";"
89 WHITESPACE@[84; 86) 89 WHITESPACE@[84; 86) "\n\n"
diff --git a/crates/ra_syntax/tests/data/parser/err/0014_where_no_bounds.txt b/crates/ra_syntax/tests/data/parser/err/0014_where_no_bounds.txt
index a81772764..52ad7bef7 100644
--- a/crates/ra_syntax/tests/data/parser/err/0014_where_no_bounds.txt
+++ b/crates/ra_syntax/tests/data/parser/err/0014_where_no_bounds.txt
@@ -1,22 +1,22 @@
1SOURCE_FILE@[0; 23) 1SOURCE_FILE@[0; 23)
2 FN_DEF@[0; 22) 2 FN_DEF@[0; 22)
3 FN_KW@[0; 2) 3 FN_KW@[0; 2) "fn"
4 WHITESPACE@[2; 3) 4 WHITESPACE@[2; 3) " "
5 NAME@[3; 6) 5 NAME@[3; 6)
6 IDENT@[3; 6) "foo" 6 IDENT@[3; 6) "foo"
7 TYPE_PARAM_LIST@[6; 9) 7 TYPE_PARAM_LIST@[6; 9)
8 L_ANGLE@[6; 7) 8 L_ANGLE@[6; 7) "<"
9 TYPE_PARAM@[7; 8) 9 TYPE_PARAM@[7; 8)
10 NAME@[7; 8) 10 NAME@[7; 8)
11 IDENT@[7; 8) "T" 11 IDENT@[7; 8) "T"
12 R_ANGLE@[8; 9) 12 R_ANGLE@[8; 9) ">"
13 PARAM_LIST@[9; 11) 13 PARAM_LIST@[9; 11)
14 L_PAREN@[9; 10) 14 L_PAREN@[9; 10) "("
15 R_PAREN@[10; 11) 15 R_PAREN@[10; 11) ")"
16 WHITESPACE@[11; 12) 16 WHITESPACE@[11; 12) " "
17 WHERE_CLAUSE@[12; 19) 17 WHERE_CLAUSE@[12; 19)
18 WHERE_KW@[12; 17) 18 WHERE_KW@[12; 17) "where"
19 WHITESPACE@[17; 18) 19 WHITESPACE@[17; 18) " "
20 WHERE_PRED@[18; 19) 20 WHERE_PRED@[18; 19)
21 PATH_TYPE@[18; 19) 21 PATH_TYPE@[18; 19)
22 PATH@[18; 19) 22 PATH@[18; 19)
@@ -24,8 +24,8 @@ SOURCE_FILE@[0; 23)
24 NAME_REF@[18; 19) 24 NAME_REF@[18; 19)
25 IDENT@[18; 19) "T" 25 IDENT@[18; 19) "T"
26 err: `expected colon` 26 err: `expected colon`
27 WHITESPACE@[19; 20) 27 WHITESPACE@[19; 20) " "
28 BLOCK@[20; 22) 28 BLOCK@[20; 22)
29 L_CURLY@[20; 21) 29 L_CURLY@[20; 21) "{"
30 R_CURLY@[21; 22) 30 R_CURLY@[21; 22) "}"
31 WHITESPACE@[22; 23) 31 WHITESPACE@[22; 23) "\n"
diff --git a/crates/ra_syntax/tests/data/parser/err/0015_curly_in_params.txt b/crates/ra_syntax/tests/data/parser/err/0015_curly_in_params.txt
index e4d91109f..1350980f2 100644
--- a/crates/ra_syntax/tests/data/parser/err/0015_curly_in_params.txt
+++ b/crates/ra_syntax/tests/data/parser/err/0015_curly_in_params.txt
@@ -1,24 +1,24 @@
1SOURCE_FILE@[0; 14) 1SOURCE_FILE@[0; 14)
2 FN_DEF@[0; 7) 2 FN_DEF@[0; 7)
3 FN_KW@[0; 2) 3 FN_KW@[0; 2) "fn"
4 WHITESPACE@[2; 3) 4 WHITESPACE@[2; 3) " "
5 NAME@[3; 6) 5 NAME@[3; 6)
6 IDENT@[3; 6) "foo" 6 IDENT@[3; 6) "foo"
7 PARAM_LIST@[6; 7) 7 PARAM_LIST@[6; 7)
8 L_PAREN@[6; 7) 8 L_PAREN@[6; 7) "("
9 err: `expected value parameter` 9 err: `expected value parameter`
10 err: `expected R_PAREN` 10 err: `expected R_PAREN`
11 err: `expected a block` 11 err: `expected a block`
12 err: `unmatched `}`` 12 err: `unmatched `}``
13 ERROR@[7; 8) 13 ERROR@[7; 8)
14 R_CURLY@[7; 8) 14 R_CURLY@[7; 8) "}"
15 err: `expected an item` 15 err: `expected an item`
16 ERROR@[8; 9) 16 ERROR@[8; 9)
17 R_PAREN@[8; 9) 17 R_PAREN@[8; 9) ")"
18 WHITESPACE@[9; 10) 18 WHITESPACE@[9; 10) " "
19 err: `expected an item` 19 err: `expected an item`
20 ERROR@[10; 13) 20 ERROR@[10; 13)
21 L_CURLY@[10; 11) 21 L_CURLY@[10; 11) "{"
22 WHITESPACE@[11; 12) 22 WHITESPACE@[11; 12) "\n"
23 R_CURLY@[12; 13) 23 R_CURLY@[12; 13) "}"
24 WHITESPACE@[13; 14) 24 WHITESPACE@[13; 14) "\n"
diff --git a/crates/ra_syntax/tests/data/parser/err/0016_missing_semi.txt b/crates/ra_syntax/tests/data/parser/err/0016_missing_semi.txt
index 5b128caa2..dd60814a0 100644
--- a/crates/ra_syntax/tests/data/parser/err/0016_missing_semi.txt
+++ b/crates/ra_syntax/tests/data/parser/err/0016_missing_semi.txt
@@ -1,16 +1,16 @@
1SOURCE_FILE@[0; 56) 1SOURCE_FILE@[0; 56)
2 FN_DEF@[0; 55) 2 FN_DEF@[0; 55)
3 FN_KW@[0; 2) 3 FN_KW@[0; 2) "fn"
4 WHITESPACE@[2; 3) 4 WHITESPACE@[2; 3) " "
5 NAME@[3; 6) 5 NAME@[3; 6)
6 IDENT@[3; 6) "foo" 6 IDENT@[3; 6) "foo"
7 PARAM_LIST@[6; 8) 7 PARAM_LIST@[6; 8)
8 L_PAREN@[6; 7) 8 L_PAREN@[6; 7) "("
9 R_PAREN@[7; 8) 9 R_PAREN@[7; 8) ")"
10 WHITESPACE@[8; 9) 10 WHITESPACE@[8; 9) " "
11 BLOCK@[9; 55) 11 BLOCK@[9; 55)
12 L_CURLY@[9; 10) 12 L_CURLY@[9; 10) "{"
13 WHITESPACE@[10; 15) 13 WHITESPACE@[10; 15) "\n "
14 EXPR_STMT@[15; 38) 14 EXPR_STMT@[15; 38)
15 CALL_EXPR@[15; 38) 15 CALL_EXPR@[15; 38)
16 PATH_EXPR@[15; 18) 16 PATH_EXPR@[15; 18)
@@ -19,25 +19,25 @@ SOURCE_FILE@[0; 56)
19 NAME_REF@[15; 18) 19 NAME_REF@[15; 18)
20 IDENT@[15; 18) "foo" 20 IDENT@[15; 18) "foo"
21 ARG_LIST@[18; 38) 21 ARG_LIST@[18; 38)
22 L_PAREN@[18; 19) 22 L_PAREN@[18; 19) "("
23 WHITESPACE@[19; 28) 23 WHITESPACE@[19; 28) "\n "
24 LITERAL@[28; 29) 24 LITERAL@[28; 29)
25 INT_NUMBER@[28; 29) "1" 25 INT_NUMBER@[28; 29) "1"
26 COMMA@[29; 30) 26 COMMA@[29; 30) ","
27 WHITESPACE@[30; 31) 27 WHITESPACE@[30; 31) " "
28 LITERAL@[31; 32) 28 LITERAL@[31; 32)
29 INT_NUMBER@[31; 32) "2" 29 INT_NUMBER@[31; 32) "2"
30 WHITESPACE@[32; 37) 30 WHITESPACE@[32; 37) "\n "
31 R_PAREN@[37; 38) 31 R_PAREN@[37; 38) ")"
32 err: `expected SEMI` 32 err: `expected SEMI`
33 WHITESPACE@[38; 43) 33 WHITESPACE@[38; 43) "\n "
34 EXPR_STMT@[43; 53) 34 EXPR_STMT@[43; 53)
35 RETURN_EXPR@[43; 52) 35 RETURN_EXPR@[43; 52)
36 RETURN_KW@[43; 49) 36 RETURN_KW@[43; 49) "return"
37 WHITESPACE@[49; 50) 37 WHITESPACE@[49; 50) " "
38 LITERAL@[50; 52) 38 LITERAL@[50; 52)
39 INT_NUMBER@[50; 52) "92" 39 INT_NUMBER@[50; 52) "92"
40 SEMI@[52; 53) 40 SEMI@[52; 53) ";"
41 WHITESPACE@[53; 54) 41 WHITESPACE@[53; 54) "\n"
42 R_CURLY@[54; 55) 42 R_CURLY@[54; 55) "}"
43 WHITESPACE@[55; 56) 43 WHITESPACE@[55; 56) "\n"
diff --git a/crates/ra_syntax/tests/data/parser/err/0017_incomplete_binexpr.txt b/crates/ra_syntax/tests/data/parser/err/0017_incomplete_binexpr.txt
index fbfdc2c44..f115eb1dd 100644
--- a/crates/ra_syntax/tests/data/parser/err/0017_incomplete_binexpr.txt
+++ b/crates/ra_syntax/tests/data/parser/err/0017_incomplete_binexpr.txt
@@ -1,46 +1,46 @@
1SOURCE_FILE@[0; 47) 1SOURCE_FILE@[0; 47)
2 FN_DEF@[0; 46) 2 FN_DEF@[0; 46)
3 FN_KW@[0; 2) 3 FN_KW@[0; 2) "fn"
4 WHITESPACE@[2; 3) 4 WHITESPACE@[2; 3) " "
5 NAME@[3; 6) 5 NAME@[3; 6)
6 IDENT@[3; 6) "foo" 6 IDENT@[3; 6) "foo"
7 PARAM_LIST@[6; 16) 7 PARAM_LIST@[6; 16)
8 L_PAREN@[6; 7) 8 L_PAREN@[6; 7) "("
9 PARAM@[7; 15) 9 PARAM@[7; 15)
10 BIND_PAT@[7; 10) 10 BIND_PAT@[7; 10)
11 NAME@[7; 10) 11 NAME@[7; 10)
12 IDENT@[7; 10) "foo" 12 IDENT@[7; 10) "foo"
13 COLON@[10; 11) 13 COLON@[10; 11) ":"
14 WHITESPACE@[11; 12) 14 WHITESPACE@[11; 12) " "
15 PATH_TYPE@[12; 15) 15 PATH_TYPE@[12; 15)
16 PATH@[12; 15) 16 PATH@[12; 15)
17 PATH_SEGMENT@[12; 15) 17 PATH_SEGMENT@[12; 15)
18 NAME_REF@[12; 15) 18 NAME_REF@[12; 15)
19 IDENT@[12; 15) "i32" 19 IDENT@[12; 15) "i32"
20 R_PAREN@[15; 16) 20 R_PAREN@[15; 16) ")"
21 WHITESPACE@[16; 17) 21 WHITESPACE@[16; 17) " "
22 BLOCK@[17; 46) 22 BLOCK@[17; 46)
23 L_CURLY@[17; 18) 23 L_CURLY@[17; 18) "{"
24 WHITESPACE@[18; 23) 24 WHITESPACE@[18; 23) "\n "
25 LET_STMT@[23; 36) 25 LET_STMT@[23; 36)
26 LET_KW@[23; 26) 26 LET_KW@[23; 26) "let"
27 WHITESPACE@[26; 27) 27 WHITESPACE@[26; 27) " "
28 BIND_PAT@[27; 30) 28 BIND_PAT@[27; 30)
29 NAME@[27; 30) 29 NAME@[27; 30)
30 IDENT@[27; 30) "bar" 30 IDENT@[27; 30) "bar"
31 WHITESPACE@[30; 31) 31 WHITESPACE@[30; 31) " "
32 EQ@[31; 32) 32 EQ@[31; 32) "="
33 WHITESPACE@[32; 33) 33 WHITESPACE@[32; 33) " "
34 LITERAL@[33; 35) 34 LITERAL@[33; 35)
35 INT_NUMBER@[33; 35) "92" 35 INT_NUMBER@[33; 35) "92"
36 SEMI@[35; 36) 36 SEMI@[35; 36) ";"
37 WHITESPACE@[36; 41) 37 WHITESPACE@[36; 41) "\n "
38 BIN_EXPR@[41; 44) 38 BIN_EXPR@[41; 44)
39 LITERAL@[41; 42) 39 LITERAL@[41; 42)
40 INT_NUMBER@[41; 42) "1" 40 INT_NUMBER@[41; 42) "1"
41 WHITESPACE@[42; 43) 41 WHITESPACE@[42; 43) " "
42 PLUS@[43; 44) 42 PLUS@[43; 44) "+"
43 err: `expected expression` 43 err: `expected expression`
44 WHITESPACE@[44; 45) 44 WHITESPACE@[44; 45) "\n"
45 R_CURLY@[45; 46) 45 R_CURLY@[45; 46) "}"
46 WHITESPACE@[46; 47) 46 WHITESPACE@[46; 47) "\n"
diff --git a/crates/ra_syntax/tests/data/parser/err/0018_incomplete_fn.txt b/crates/ra_syntax/tests/data/parser/err/0018_incomplete_fn.txt
index 262cbba1e..9996cf824 100644
--- a/crates/ra_syntax/tests/data/parser/err/0018_incomplete_fn.txt
+++ b/crates/ra_syntax/tests/data/parser/err/0018_incomplete_fn.txt
@@ -1,131 +1,131 @@
1SOURCE_FILE@[0; 183) 1SOURCE_FILE@[0; 183)
2 IMPL_BLOCK@[0; 182) 2 IMPL_BLOCK@[0; 182)
3 IMPL_KW@[0; 4) 3 IMPL_KW@[0; 4) "impl"
4 WHITESPACE@[4; 5) 4 WHITESPACE@[4; 5) " "
5 PATH_TYPE@[5; 13) 5 PATH_TYPE@[5; 13)
6 PATH@[5; 13) 6 PATH@[5; 13)
7 PATH_SEGMENT@[5; 13) 7 PATH_SEGMENT@[5; 13)
8 NAME_REF@[5; 13) 8 NAME_REF@[5; 13)
9 IDENT@[5; 13) "FnScopes" 9 IDENT@[5; 13) "FnScopes"
10 WHITESPACE@[13; 14) 10 WHITESPACE@[13; 14) " "
11 ITEM_LIST@[14; 182) 11 ITEM_LIST@[14; 182)
12 L_CURLY@[14; 15) 12 L_CURLY@[14; 15) "{"
13 WHITESPACE@[15; 20) 13 WHITESPACE@[15; 20) "\n "
14 FN_DEF@[20; 161) 14 FN_DEF@[20; 161)
15 FN_KW@[20; 22) 15 FN_KW@[20; 22) "fn"
16 WHITESPACE@[22; 23) 16 WHITESPACE@[22; 23) " "
17 NAME@[23; 32) 17 NAME@[23; 32)
18 IDENT@[23; 32) "new_scope" 18 IDENT@[23; 32) "new_scope"
19 PARAM_LIST@[32; 35) 19 PARAM_LIST@[32; 35)
20 L_PAREN@[32; 33) 20 L_PAREN@[32; 33) "("
21 PARAM@[33; 34) 21 PARAM@[33; 34)
22 REF_PAT@[33; 34) 22 REF_PAT@[33; 34)
23 AMP@[33; 34) 23 AMP@[33; 34) "&"
24 err: `expected pattern` 24 err: `expected pattern`
25 err: `expected COLON` 25 err: `expected COLON`
26 err: `expected type` 26 err: `expected type`
27 R_PAREN@[34; 35) 27 R_PAREN@[34; 35) ")"
28 WHITESPACE@[35; 36) 28 WHITESPACE@[35; 36) " "
29 RET_TYPE@[36; 46) 29 RET_TYPE@[36; 46)
30 THIN_ARROW@[36; 38) 30 THIN_ARROW@[36; 38) "->"
31 WHITESPACE@[38; 39) 31 WHITESPACE@[38; 39) " "
32 PATH_TYPE@[39; 46) 32 PATH_TYPE@[39; 46)
33 PATH@[39; 46) 33 PATH@[39; 46)
34 PATH_SEGMENT@[39; 46) 34 PATH_SEGMENT@[39; 46)
35 NAME_REF@[39; 46) 35 NAME_REF@[39; 46)
36 IDENT@[39; 46) "ScopeId" 36 IDENT@[39; 46) "ScopeId"
37 WHITESPACE@[46; 47) 37 WHITESPACE@[46; 47) " "
38 BLOCK@[47; 161) 38 BLOCK@[47; 161)
39 L_CURLY@[47; 48) 39 L_CURLY@[47; 48) "{"
40 WHITESPACE@[48; 57) 40 WHITESPACE@[48; 57) "\n "
41 LET_STMT@[57; 85) 41 LET_STMT@[57; 85)
42 LET_KW@[57; 60) 42 LET_KW@[57; 60) "let"
43 WHITESPACE@[60; 61) 43 WHITESPACE@[60; 61) " "
44 BIND_PAT@[61; 64) 44 BIND_PAT@[61; 64)
45 NAME@[61; 64) 45 NAME@[61; 64)
46 IDENT@[61; 64) "res" 46 IDENT@[61; 64) "res"
47 WHITESPACE@[64; 65) 47 WHITESPACE@[64; 65) " "
48 EQ@[65; 66) 48 EQ@[65; 66) "="
49 WHITESPACE@[66; 67) 49 WHITESPACE@[66; 67) " "
50 METHOD_CALL_EXPR@[67; 84) 50 METHOD_CALL_EXPR@[67; 84)
51 FIELD_EXPR@[67; 78) 51 FIELD_EXPR@[67; 78)
52 PATH_EXPR@[67; 71) 52 PATH_EXPR@[67; 71)
53 PATH@[67; 71) 53 PATH@[67; 71)
54 PATH_SEGMENT@[67; 71) 54 PATH_SEGMENT@[67; 71)
55 SELF_KW@[67; 71) 55 SELF_KW@[67; 71) "self"
56 DOT@[71; 72) 56 DOT@[71; 72) "."
57 NAME_REF@[72; 78) 57 NAME_REF@[72; 78)
58 IDENT@[72; 78) "scopes" 58 IDENT@[72; 78) "scopes"
59 DOT@[78; 79) 59 DOT@[78; 79) "."
60 NAME_REF@[79; 82) 60 NAME_REF@[79; 82)
61 IDENT@[79; 82) "len" 61 IDENT@[79; 82) "len"
62 ARG_LIST@[82; 84) 62 ARG_LIST@[82; 84)
63 L_PAREN@[82; 83) 63 L_PAREN@[82; 83) "("
64 R_PAREN@[83; 84) 64 R_PAREN@[83; 84) ")"
65 SEMI@[84; 85) 65 SEMI@[84; 85) ";"
66 WHITESPACE@[85; 94) 66 WHITESPACE@[85; 94) "\n "
67 METHOD_CALL_EXPR@[94; 155) 67 METHOD_CALL_EXPR@[94; 155)
68 FIELD_EXPR@[94; 105) 68 FIELD_EXPR@[94; 105)
69 PATH_EXPR@[94; 98) 69 PATH_EXPR@[94; 98)
70 PATH@[94; 98) 70 PATH@[94; 98)
71 PATH_SEGMENT@[94; 98) 71 PATH_SEGMENT@[94; 98)
72 SELF_KW@[94; 98) 72 SELF_KW@[94; 98) "self"
73 DOT@[98; 99) 73 DOT@[98; 99) "."
74 NAME_REF@[99; 105) 74 NAME_REF@[99; 105)
75 IDENT@[99; 105) "scopes" 75 IDENT@[99; 105) "scopes"
76 DOT@[105; 106) 76 DOT@[105; 106) "."
77 NAME_REF@[106; 110) 77 NAME_REF@[106; 110)
78 IDENT@[106; 110) "push" 78 IDENT@[106; 110) "push"
79 ARG_LIST@[110; 155) 79 ARG_LIST@[110; 155)
80 L_PAREN@[110; 111) 80 L_PAREN@[110; 111) "("
81 STRUCT_LIT@[111; 154) 81 STRUCT_LIT@[111; 154)
82 PATH@[111; 120) 82 PATH@[111; 120)
83 PATH_SEGMENT@[111; 120) 83 PATH_SEGMENT@[111; 120)
84 NAME_REF@[111; 120) 84 NAME_REF@[111; 120)
85 IDENT@[111; 120) "ScopeData" 85 IDENT@[111; 120) "ScopeData"
86 WHITESPACE@[120; 121) 86 WHITESPACE@[120; 121) " "
87 NAMED_FIELD_LIST@[121; 154) 87 NAMED_FIELD_LIST@[121; 154)
88 L_CURLY@[121; 122) 88 L_CURLY@[121; 122) "{"
89 WHITESPACE@[122; 123) 89 WHITESPACE@[122; 123) " "
90 NAMED_FIELD@[123; 135) 90 NAMED_FIELD@[123; 135)
91 NAME_REF@[123; 129) 91 NAME_REF@[123; 129)
92 IDENT@[123; 129) "parent" 92 IDENT@[123; 129) "parent"
93 COLON@[129; 130) 93 COLON@[129; 130) ":"
94 WHITESPACE@[130; 131) 94 WHITESPACE@[130; 131) " "
95 PATH_EXPR@[131; 135) 95 PATH_EXPR@[131; 135)
96 PATH@[131; 135) 96 PATH@[131; 135)
97 PATH_SEGMENT@[131; 135) 97 PATH_SEGMENT@[131; 135)
98 NAME_REF@[131; 135) 98 NAME_REF@[131; 135)
99 IDENT@[131; 135) "None" 99 IDENT@[131; 135) "None"
100 COMMA@[135; 136) 100 COMMA@[135; 136) ","
101 WHITESPACE@[136; 137) 101 WHITESPACE@[136; 137) " "
102 NAMED_FIELD@[137; 152) 102 NAMED_FIELD@[137; 152)
103 NAME_REF@[137; 144) 103 NAME_REF@[137; 144)
104 IDENT@[137; 144) "entries" 104 IDENT@[137; 144) "entries"
105 COLON@[144; 145) 105 COLON@[144; 145) ":"
106 WHITESPACE@[145; 146) 106 WHITESPACE@[145; 146) " "
107 MACRO_CALL@[146; 152) 107 MACRO_CALL@[146; 152)
108 PATH@[146; 149) 108 PATH@[146; 149)
109 PATH_SEGMENT@[146; 149) 109 PATH_SEGMENT@[146; 149)
110 NAME_REF@[146; 149) 110 NAME_REF@[146; 149)
111 IDENT@[146; 149) "vec" 111 IDENT@[146; 149) "vec"
112 EXCL@[149; 150) 112 EXCL@[149; 150) "!"
113 TOKEN_TREE@[150; 152) 113 TOKEN_TREE@[150; 152)
114 L_BRACK@[150; 151) 114 L_BRACK@[150; 151) "["
115 R_BRACK@[151; 152) 115 R_BRACK@[151; 152) "]"
116 WHITESPACE@[152; 153) 116 WHITESPACE@[152; 153) " "
117 R_CURLY@[153; 154) 117 R_CURLY@[153; 154) "}"
118 R_PAREN@[154; 155) 118 R_PAREN@[154; 155) ")"
119 WHITESPACE@[155; 160) 119 WHITESPACE@[155; 160) "\n "
120 R_CURLY@[160; 161) 120 R_CURLY@[160; 161) "}"
121 WHITESPACE@[161; 167) 121 WHITESPACE@[161; 167) "\n\n "
122 FN_DEF@[167; 180) 122 FN_DEF@[167; 180)
123 FN_KW@[167; 169) 123 FN_KW@[167; 169) "fn"
124 WHITESPACE@[169; 170) 124 WHITESPACE@[169; 170) " "
125 NAME@[170; 180) 125 NAME@[170; 180)
126 IDENT@[170; 180) "set_parent" 126 IDENT@[170; 180) "set_parent"
127 err: `expected function arguments` 127 err: `expected function arguments`
128 err: `expected a block` 128 err: `expected a block`
129 WHITESPACE@[180; 181) 129 WHITESPACE@[180; 181) "\n"
130 R_CURLY@[181; 182) 130 R_CURLY@[181; 182) "}"
131 WHITESPACE@[182; 183) 131 WHITESPACE@[182; 183) "\n"
diff --git a/crates/ra_syntax/tests/data/parser/err/0019_let_recover.txt b/crates/ra_syntax/tests/data/parser/err/0019_let_recover.txt
index ee75c33ae..c12649d5e 100644
--- a/crates/ra_syntax/tests/data/parser/err/0019_let_recover.txt
+++ b/crates/ra_syntax/tests/data/parser/err/0019_let_recover.txt
@@ -1,103 +1,103 @@
1SOURCE_FILE@[0; 139) 1SOURCE_FILE@[0; 139)
2 FN_DEF@[0; 138) 2 FN_DEF@[0; 138)
3 FN_KW@[0; 2) 3 FN_KW@[0; 2) "fn"
4 WHITESPACE@[2; 3) 4 WHITESPACE@[2; 3) " "
5 NAME@[3; 6) 5 NAME@[3; 6)
6 IDENT@[3; 6) "foo" 6 IDENT@[3; 6) "foo"
7 PARAM_LIST@[6; 8) 7 PARAM_LIST@[6; 8)
8 L_PAREN@[6; 7) 8 L_PAREN@[6; 7) "("
9 R_PAREN@[7; 8) 9 R_PAREN@[7; 8) ")"
10 WHITESPACE@[8; 9) 10 WHITESPACE@[8; 9) " "
11 BLOCK@[9; 138) 11 BLOCK@[9; 138)
12 L_CURLY@[9; 10) 12 L_CURLY@[9; 10) "{"
13 WHITESPACE@[10; 15) 13 WHITESPACE@[10; 15) "\n "
14 LET_STMT@[15; 24) 14 LET_STMT@[15; 24)
15 LET_KW@[15; 18) 15 LET_KW@[15; 18) "let"
16 WHITESPACE@[18; 19) 16 WHITESPACE@[18; 19) " "
17 BIND_PAT@[19; 22) 17 BIND_PAT@[19; 22)
18 NAME@[19; 22) 18 NAME@[19; 22)
19 IDENT@[19; 22) "foo" 19 IDENT@[19; 22) "foo"
20 WHITESPACE@[22; 23) 20 WHITESPACE@[22; 23) " "
21 EQ@[23; 24) 21 EQ@[23; 24) "="
22 err: `expected expression` 22 err: `expected expression`
23 err: `expected SEMI` 23 err: `expected SEMI`
24 WHITESPACE@[24; 29) 24 WHITESPACE@[24; 29) "\n "
25 LET_STMT@[29; 41) 25 LET_STMT@[29; 41)
26 LET_KW@[29; 32) 26 LET_KW@[29; 32) "let"
27 WHITESPACE@[32; 33) 27 WHITESPACE@[32; 33) " "
28 BIND_PAT@[33; 36) 28 BIND_PAT@[33; 36)
29 NAME@[33; 36) 29 NAME@[33; 36)
30 IDENT@[33; 36) "bar" 30 IDENT@[33; 36) "bar"
31 WHITESPACE@[36; 37) 31 WHITESPACE@[36; 37) " "
32 EQ@[37; 38) 32 EQ@[37; 38) "="
33 WHITESPACE@[38; 39) 33 WHITESPACE@[38; 39) " "
34 LITERAL@[39; 40) 34 LITERAL@[39; 40)
35 INT_NUMBER@[39; 40) "1" 35 INT_NUMBER@[39; 40) "1"
36 SEMI@[40; 41) 36 SEMI@[40; 41) ";"
37 WHITESPACE@[41; 46) 37 WHITESPACE@[41; 46) "\n "
38 LET_STMT@[46; 49) 38 LET_STMT@[46; 49)
39 LET_KW@[46; 49) 39 LET_KW@[46; 49) "let"
40 err: `expected pattern` 40 err: `expected pattern`
41 err: `expected SEMI` 41 err: `expected SEMI`
42 WHITESPACE@[49; 54) 42 WHITESPACE@[49; 54) "\n "
43 LET_STMT@[54; 67) 43 LET_STMT@[54; 67)
44 LET_KW@[54; 57) 44 LET_KW@[54; 57) "let"
45 WHITESPACE@[57; 58) 45 WHITESPACE@[57; 58) " "
46 BIND_PAT@[58; 61) 46 BIND_PAT@[58; 61)
47 NAME@[58; 61) 47 NAME@[58; 61)
48 IDENT@[58; 61) "baz" 48 IDENT@[58; 61) "baz"
49 WHITESPACE@[61; 62) 49 WHITESPACE@[61; 62) " "
50 EQ@[62; 63) 50 EQ@[62; 63) "="
51 WHITESPACE@[63; 64) 51 WHITESPACE@[63; 64) " "
52 LITERAL@[64; 66) 52 LITERAL@[64; 66)
53 INT_NUMBER@[64; 66) "92" 53 INT_NUMBER@[64; 66) "92"
54 SEMI@[66; 67) 54 SEMI@[66; 67) ";"
55 WHITESPACE@[67; 72) 55 WHITESPACE@[67; 72) "\n "
56 LET_STMT@[72; 75) 56 LET_STMT@[72; 75)
57 LET_KW@[72; 75) 57 LET_KW@[72; 75) "let"
58 err: `expected pattern` 58 err: `expected pattern`
59 err: `expected SEMI` 59 err: `expected SEMI`
60 WHITESPACE@[75; 80) 60 WHITESPACE@[75; 80) "\n "
61 EXPR_STMT@[80; 90) 61 EXPR_STMT@[80; 90)
62 IF_EXPR@[80; 90) 62 IF_EXPR@[80; 90)
63 IF_KW@[80; 82) 63 IF_KW@[80; 82) "if"
64 WHITESPACE@[82; 83) 64 WHITESPACE@[82; 83) " "
65 CONDITION@[83; 87) 65 CONDITION@[83; 87)
66 LITERAL@[83; 87) 66 LITERAL@[83; 87)
67 TRUE_KW@[83; 87) 67 TRUE_KW@[83; 87) "true"
68 WHITESPACE@[87; 88) 68 WHITESPACE@[87; 88) " "
69 BLOCK@[88; 90) 69 BLOCK@[88; 90)
70 L_CURLY@[88; 89) 70 L_CURLY@[88; 89) "{"
71 R_CURLY@[89; 90) 71 R_CURLY@[89; 90) "}"
72 WHITESPACE@[90; 95) 72 WHITESPACE@[90; 95) "\n "
73 LET_STMT@[95; 98) 73 LET_STMT@[95; 98)
74 LET_KW@[95; 98) 74 LET_KW@[95; 98) "let"
75 err: `expected pattern` 75 err: `expected pattern`
76 err: `expected SEMI` 76 err: `expected SEMI`
77 WHITESPACE@[98; 103) 77 WHITESPACE@[98; 103) "\n "
78 EXPR_STMT@[103; 116) 78 EXPR_STMT@[103; 116)
79 WHILE_EXPR@[103; 116) 79 WHILE_EXPR@[103; 116)
80 WHILE_KW@[103; 108) 80 WHILE_KW@[103; 108) "while"
81 WHITESPACE@[108; 109) 81 WHITESPACE@[108; 109) " "
82 CONDITION@[109; 113) 82 CONDITION@[109; 113)
83 LITERAL@[109; 113) 83 LITERAL@[109; 113)
84 TRUE_KW@[109; 113) 84 TRUE_KW@[109; 113) "true"
85 WHITESPACE@[113; 114) 85 WHITESPACE@[113; 114) " "
86 BLOCK@[114; 116) 86 BLOCK@[114; 116)
87 L_CURLY@[114; 115) 87 L_CURLY@[114; 115) "{"
88 R_CURLY@[115; 116) 88 R_CURLY@[115; 116) "}"
89 WHITESPACE@[116; 121) 89 WHITESPACE@[116; 121) "\n "
90 LET_STMT@[121; 124) 90 LET_STMT@[121; 124)
91 LET_KW@[121; 124) 91 LET_KW@[121; 124) "let"
92 err: `expected pattern` 92 err: `expected pattern`
93 err: `expected SEMI` 93 err: `expected SEMI`
94 WHITESPACE@[124; 129) 94 WHITESPACE@[124; 129) "\n "
95 LOOP_EXPR@[129; 136) 95 LOOP_EXPR@[129; 136)
96 LOOP_KW@[129; 133) 96 LOOP_KW@[129; 133) "loop"
97 WHITESPACE@[133; 134) 97 WHITESPACE@[133; 134) " "
98 BLOCK@[134; 136) 98 BLOCK@[134; 136)
99 L_CURLY@[134; 135) 99 L_CURLY@[134; 135) "{"
100 R_CURLY@[135; 136) 100 R_CURLY@[135; 136) "}"
101 WHITESPACE@[136; 137) 101 WHITESPACE@[136; 137) "\n"
102 R_CURLY@[137; 138) 102 R_CURLY@[137; 138) "}"
103 WHITESPACE@[138; 139) 103 WHITESPACE@[138; 139) "\n"
diff --git a/crates/ra_syntax/tests/data/parser/err/0020_fn_recover.txt b/crates/ra_syntax/tests/data/parser/err/0020_fn_recover.txt
index 375fd3ad2..b48bd5dee 100644
--- a/crates/ra_syntax/tests/data/parser/err/0020_fn_recover.txt
+++ b/crates/ra_syntax/tests/data/parser/err/0020_fn_recover.txt
@@ -1,20 +1,20 @@
1SOURCE_FILE@[0; 16) 1SOURCE_FILE@[0; 16)
2 FN_DEF@[0; 2) 2 FN_DEF@[0; 2)
3 FN_KW@[0; 2) 3 FN_KW@[0; 2) "fn"
4 err: `expected a name` 4 err: `expected a name`
5 err: `expected function arguments` 5 err: `expected function arguments`
6 err: `expected a block` 6 err: `expected a block`
7 WHITESPACE@[2; 4) 7 WHITESPACE@[2; 4) "\n\n"
8 FN_DEF@[4; 15) 8 FN_DEF@[4; 15)
9 FN_KW@[4; 6) 9 FN_KW@[4; 6) "fn"
10 WHITESPACE@[6; 7) 10 WHITESPACE@[6; 7) " "
11 NAME@[7; 10) 11 NAME@[7; 10)
12 IDENT@[7; 10) "foo" 12 IDENT@[7; 10) "foo"
13 PARAM_LIST@[10; 12) 13 PARAM_LIST@[10; 12)
14 L_PAREN@[10; 11) 14 L_PAREN@[10; 11) "("
15 R_PAREN@[11; 12) 15 R_PAREN@[11; 12) ")"
16 WHITESPACE@[12; 13) 16 WHITESPACE@[12; 13) " "
17 BLOCK@[13; 15) 17 BLOCK@[13; 15)
18 L_CURLY@[13; 14) 18 L_CURLY@[13; 14) "{"
19 R_CURLY@[14; 15) 19 R_CURLY@[14; 15) "}"
20 WHITESPACE@[15; 16) 20 WHITESPACE@[15; 16) "\n"
diff --git a/crates/ra_syntax/tests/data/parser/err/0021_incomplete_param.txt b/crates/ra_syntax/tests/data/parser/err/0021_incomplete_param.txt
index 1b3dcd945..81b52c8ce 100644
--- a/crates/ra_syntax/tests/data/parser/err/0021_incomplete_param.txt
+++ b/crates/ra_syntax/tests/data/parser/err/0021_incomplete_param.txt
@@ -1,34 +1,34 @@
1SOURCE_FILE@[0; 22) 1SOURCE_FILE@[0; 22)
2 FN_DEF@[0; 21) 2 FN_DEF@[0; 21)
3 FN_KW@[0; 2) 3 FN_KW@[0; 2) "fn"
4 WHITESPACE@[2; 3) 4 WHITESPACE@[2; 3) " "
5 NAME@[3; 6) 5 NAME@[3; 6)
6 IDENT@[3; 6) "foo" 6 IDENT@[3; 6) "foo"
7 PARAM_LIST@[6; 17) 7 PARAM_LIST@[6; 17)
8 L_PAREN@[6; 7) 8 L_PAREN@[6; 7) "("
9 PARAM@[7; 13) 9 PARAM@[7; 13)
10 BIND_PAT@[7; 8) 10 BIND_PAT@[7; 8)
11 NAME@[7; 8) 11 NAME@[7; 8)
12 IDENT@[7; 8) "x" 12 IDENT@[7; 8) "x"
13 COLON@[8; 9) 13 COLON@[8; 9) ":"
14 WHITESPACE@[9; 10) 14 WHITESPACE@[9; 10) " "
15 PATH_TYPE@[10; 13) 15 PATH_TYPE@[10; 13)
16 PATH@[10; 13) 16 PATH@[10; 13)
17 PATH_SEGMENT@[10; 13) 17 PATH_SEGMENT@[10; 13)
18 NAME_REF@[10; 13) 18 NAME_REF@[10; 13)
19 IDENT@[10; 13) "i32" 19 IDENT@[10; 13) "i32"
20 COMMA@[13; 14) 20 COMMA@[13; 14) ","
21 WHITESPACE@[14; 15) 21 WHITESPACE@[14; 15) " "
22 PARAM@[15; 16) 22 PARAM@[15; 16)
23 BIND_PAT@[15; 16) 23 BIND_PAT@[15; 16)
24 NAME@[15; 16) 24 NAME@[15; 16)
25 IDENT@[15; 16) "y" 25 IDENT@[15; 16) "y"
26 err: `expected COLON` 26 err: `expected COLON`
27 err: `expected type` 27 err: `expected type`
28 R_PAREN@[16; 17) 28 R_PAREN@[16; 17) ")"
29 WHITESPACE@[17; 18) 29 WHITESPACE@[17; 18) " "
30 BLOCK@[18; 21) 30 BLOCK@[18; 21)
31 L_CURLY@[18; 19) 31 L_CURLY@[18; 19) "{"
32 WHITESPACE@[19; 20) 32 WHITESPACE@[19; 20) "\n"
33 R_CURLY@[20; 21) 33 R_CURLY@[20; 21) "}"
34 WHITESPACE@[21; 22) 34 WHITESPACE@[21; 22) "\n"
diff --git a/crates/ra_syntax/tests/data/parser/err/0022_bad_exprs.txt b/crates/ra_syntax/tests/data/parser/err/0022_bad_exprs.txt
index da3894133..6dfdfc343 100644
--- a/crates/ra_syntax/tests/data/parser/err/0022_bad_exprs.txt
+++ b/crates/ra_syntax/tests/data/parser/err/0022_bad_exprs.txt
@@ -1,69 +1,69 @@
1SOURCE_FILE@[0; 112) 1SOURCE_FILE@[0; 112)
2 FN_DEF@[0; 33) 2 FN_DEF@[0; 33)
3 FN_KW@[0; 2) 3 FN_KW@[0; 2) "fn"
4 WHITESPACE@[2; 3) 4 WHITESPACE@[2; 3) " "
5 NAME@[3; 4) 5 NAME@[3; 4)
6 IDENT@[3; 4) "a" 6 IDENT@[3; 4) "a"
7 PARAM_LIST@[4; 6) 7 PARAM_LIST@[4; 6)
8 L_PAREN@[4; 5) 8 L_PAREN@[4; 5) "("
9 R_PAREN@[5; 6) 9 R_PAREN@[5; 6) ")"
10 WHITESPACE@[6; 7) 10 WHITESPACE@[6; 7) " "
11 BLOCK@[7; 33) 11 BLOCK@[7; 33)
12 L_CURLY@[7; 8) 12 L_CURLY@[7; 8) "{"
13 WHITESPACE@[8; 9) 13 WHITESPACE@[8; 9) " "
14 EXPR_STMT@[9; 15) 14 EXPR_STMT@[9; 15)
15 ARRAY_EXPR@[9; 15) 15 ARRAY_EXPR@[9; 15)
16 L_BRACK@[9; 10) 16 L_BRACK@[9; 10) "["
17 LITERAL@[10; 11) 17 LITERAL@[10; 11)
18 INT_NUMBER@[10; 11) "1" 18 INT_NUMBER@[10; 11) "1"
19 COMMA@[11; 12) 19 COMMA@[11; 12) ","
20 WHITESPACE@[12; 13) 20 WHITESPACE@[12; 13) " "
21 LITERAL@[13; 14) 21 LITERAL@[13; 14)
22 INT_NUMBER@[13; 14) "2" 22 INT_NUMBER@[13; 14) "2"
23 COMMA@[14; 15) 23 COMMA@[14; 15) ","
24 err: `expected expression` 24 err: `expected expression`
25 err: `expected R_BRACK` 25 err: `expected R_BRACK`
26 err: `expected SEMI` 26 err: `expected SEMI`
27 WHITESPACE@[15; 16) 27 WHITESPACE@[15; 16) " "
28 err: `expected expression` 28 err: `expected expression`
29 EXPR_STMT@[16; 17) 29 EXPR_STMT@[16; 17)
30 ERROR@[16; 17) 30 ERROR@[16; 17)
31 AT@[16; 17) 31 AT@[16; 17) "@"
32 err: `expected SEMI` 32 err: `expected SEMI`
33 err: `expected expression` 33 err: `expected expression`
34 EXPR_STMT@[17; 18) 34 EXPR_STMT@[17; 18)
35 ERROR@[17; 18) 35 ERROR@[17; 18)
36 COMMA@[17; 18) 36 COMMA@[17; 18) ","
37 err: `expected SEMI` 37 err: `expected SEMI`
38 WHITESPACE@[18; 19) 38 WHITESPACE@[18; 19) " "
39 STRUCT_DEF@[19; 26) 39 STRUCT_DEF@[19; 26)
40 STRUCT_KW@[19; 25) 40 STRUCT_KW@[19; 25) "struct"
41 err: `expected a name` 41 err: `expected a name`
42 ERROR@[25; 26) 42 ERROR@[25; 26)
43 COMMA@[25; 26) 43 COMMA@[25; 26) ","
44 err: `expected `;`, `{`, or `(`` 44 err: `expected `;`, `{`, or `(``
45 WHITESPACE@[26; 27) 45 WHITESPACE@[26; 27) " "
46 LET_STMT@[27; 31) 46 LET_STMT@[27; 31)
47 LET_KW@[27; 30) 47 LET_KW@[27; 30) "let"
48 err: `expected pattern` 48 err: `expected pattern`
49 ERROR@[30; 31) 49 ERROR@[30; 31)
50 R_BRACK@[30; 31) 50 R_BRACK@[30; 31) "]"
51 err: `expected SEMI` 51 err: `expected SEMI`
52 WHITESPACE@[31; 32) 52 WHITESPACE@[31; 32) " "
53 R_CURLY@[32; 33) 53 R_CURLY@[32; 33) "}"
54 WHITESPACE@[33; 34) 54 WHITESPACE@[33; 34) "\n"
55 FN_DEF@[34; 68) 55 FN_DEF@[34; 68)
56 FN_KW@[34; 36) 56 FN_KW@[34; 36) "fn"
57 WHITESPACE@[36; 37) 57 WHITESPACE@[36; 37) " "
58 NAME@[37; 38) 58 NAME@[37; 38)
59 IDENT@[37; 38) "b" 59 IDENT@[37; 38) "b"
60 PARAM_LIST@[38; 40) 60 PARAM_LIST@[38; 40)
61 L_PAREN@[38; 39) 61 L_PAREN@[38; 39) "("
62 R_PAREN@[39; 40) 62 R_PAREN@[39; 40) ")"
63 WHITESPACE@[40; 41) 63 WHITESPACE@[40; 41) " "
64 BLOCK@[41; 68) 64 BLOCK@[41; 68)
65 L_CURLY@[41; 42) 65 L_CURLY@[41; 42) "{"
66 WHITESPACE@[42; 43) 66 WHITESPACE@[42; 43) " "
67 EXPR_STMT@[43; 52) 67 EXPR_STMT@[43; 52)
68 CALL_EXPR@[43; 52) 68 CALL_EXPR@[43; 52)
69 PATH_EXPR@[43; 46) 69 PATH_EXPR@[43; 46)
@@ -72,60 +72,60 @@ SOURCE_FILE@[0; 112)
72 NAME_REF@[43; 46) 72 NAME_REF@[43; 46)
73 IDENT@[43; 46) "foo" 73 IDENT@[43; 46) "foo"
74 ARG_LIST@[46; 52) 74 ARG_LIST@[46; 52)
75 L_PAREN@[46; 47) 75 L_PAREN@[46; 47) "("
76 LITERAL@[47; 48) 76 LITERAL@[47; 48)
77 INT_NUMBER@[47; 48) "1" 77 INT_NUMBER@[47; 48) "1"
78 COMMA@[48; 49) 78 COMMA@[48; 49) ","
79 WHITESPACE@[49; 50) 79 WHITESPACE@[49; 50) " "
80 LITERAL@[50; 51) 80 LITERAL@[50; 51)
81 INT_NUMBER@[50; 51) "2" 81 INT_NUMBER@[50; 51) "2"
82 COMMA@[51; 52) 82 COMMA@[51; 52) ","
83 err: `expected expression` 83 err: `expected expression`
84 err: `expected SEMI` 84 err: `expected SEMI`
85 WHITESPACE@[52; 53) 85 WHITESPACE@[52; 53) " "
86 err: `expected expression` 86 err: `expected expression`
87 EXPR_STMT@[53; 54) 87 EXPR_STMT@[53; 54)
88 ERROR@[53; 54) 88 ERROR@[53; 54)
89 AT@[53; 54) 89 AT@[53; 54) "@"
90 err: `expected SEMI` 90 err: `expected SEMI`
91 err: `expected expression` 91 err: `expected expression`
92 EXPR_STMT@[54; 55) 92 EXPR_STMT@[54; 55)
93 ERROR@[54; 55) 93 ERROR@[54; 55)
94 COMMA@[54; 55) 94 COMMA@[54; 55) ","
95 err: `expected SEMI` 95 err: `expected SEMI`
96 WHITESPACE@[55; 56) 96 WHITESPACE@[55; 56) " "
97 IMPL_BLOCK@[56; 60) 97 IMPL_BLOCK@[56; 60)
98 IMPL_KW@[56; 60) 98 IMPL_KW@[56; 60) "impl"
99 err: `expected type` 99 err: `expected type`
100 err: `expected `{`` 100 err: `expected `{``
101 err: `expected expression` 101 err: `expected expression`
102 EXPR_STMT@[60; 61) 102 EXPR_STMT@[60; 61)
103 ERROR@[60; 61) 103 ERROR@[60; 61)
104 COMMA@[60; 61) 104 COMMA@[60; 61) ","
105 err: `expected SEMI` 105 err: `expected SEMI`
106 WHITESPACE@[61; 62) 106 WHITESPACE@[61; 62) " "
107 LET_STMT@[62; 65) 107 LET_STMT@[62; 65)
108 LET_KW@[62; 65) 108 LET_KW@[62; 65) "let"
109 err: `expected pattern` 109 err: `expected pattern`
110 err: `expected SEMI` 110 err: `expected SEMI`
111 err: `expected expression` 111 err: `expected expression`
112 ERROR@[65; 66) 112 ERROR@[65; 66)
113 R_PAREN@[65; 66) 113 R_PAREN@[65; 66) ")"
114 WHITESPACE@[66; 67) 114 WHITESPACE@[66; 67) " "
115 R_CURLY@[67; 68) 115 R_CURLY@[67; 68) "}"
116 WHITESPACE@[68; 69) 116 WHITESPACE@[68; 69) "\n"
117 FN_DEF@[69; 111) 117 FN_DEF@[69; 111)
118 FN_KW@[69; 71) 118 FN_KW@[69; 71) "fn"
119 WHITESPACE@[71; 72) 119 WHITESPACE@[71; 72) " "
120 NAME@[72; 73) 120 NAME@[72; 73)
121 IDENT@[72; 73) "c" 121 IDENT@[72; 73) "c"
122 PARAM_LIST@[73; 75) 122 PARAM_LIST@[73; 75)
123 L_PAREN@[73; 74) 123 L_PAREN@[73; 74) "("
124 R_PAREN@[74; 75) 124 R_PAREN@[74; 75) ")"
125 WHITESPACE@[75; 76) 125 WHITESPACE@[75; 76) " "
126 BLOCK@[76; 111) 126 BLOCK@[76; 111)
127 L_CURLY@[76; 77) 127 L_CURLY@[76; 77) "{"
128 WHITESPACE@[77; 78) 128 WHITESPACE@[77; 78) " "
129 EXPR_STMT@[78; 91) 129 EXPR_STMT@[78; 91)
130 METHOD_CALL_EXPR@[78; 91) 130 METHOD_CALL_EXPR@[78; 91)
131 PATH_EXPR@[78; 81) 131 PATH_EXPR@[78; 81)
@@ -133,57 +133,57 @@ SOURCE_FILE@[0; 112)
133 PATH_SEGMENT@[78; 81) 133 PATH_SEGMENT@[78; 81)
134 NAME_REF@[78; 81) 134 NAME_REF@[78; 81)
135 IDENT@[78; 81) "foo" 135 IDENT@[78; 81) "foo"
136 DOT@[81; 82) 136 DOT@[81; 82) "."
137 NAME_REF@[82; 85) 137 NAME_REF@[82; 85)
138 IDENT@[82; 85) "bar" 138 IDENT@[82; 85) "bar"
139 ARG_LIST@[85; 91) 139 ARG_LIST@[85; 91)
140 L_PAREN@[85; 86) 140 L_PAREN@[85; 86) "("
141 LITERAL@[86; 87) 141 LITERAL@[86; 87)
142 INT_NUMBER@[86; 87) "1" 142 INT_NUMBER@[86; 87) "1"
143 COMMA@[87; 88) 143 COMMA@[87; 88) ","
144 WHITESPACE@[88; 89) 144 WHITESPACE@[88; 89) " "
145 LITERAL@[89; 90) 145 LITERAL@[89; 90)
146 INT_NUMBER@[89; 90) "2" 146 INT_NUMBER@[89; 90) "2"
147 COMMA@[90; 91) 147 COMMA@[90; 91) ","
148 err: `expected expression` 148 err: `expected expression`
149 err: `expected SEMI` 149 err: `expected SEMI`
150 WHITESPACE@[91; 92) 150 WHITESPACE@[91; 92) " "
151 err: `expected expression` 151 err: `expected expression`
152 EXPR_STMT@[92; 93) 152 EXPR_STMT@[92; 93)
153 ERROR@[92; 93) 153 ERROR@[92; 93)
154 AT@[92; 93) 154 AT@[92; 93) "@"
155 err: `expected SEMI` 155 err: `expected SEMI`
156 err: `expected expression` 156 err: `expected expression`
157 EXPR_STMT@[93; 94) 157 EXPR_STMT@[93; 94)
158 ERROR@[93; 94) 158 ERROR@[93; 94)
159 COMMA@[93; 94) 159 COMMA@[93; 94) ","
160 err: `expected SEMI` 160 err: `expected SEMI`
161 WHITESPACE@[94; 95) 161 WHITESPACE@[94; 95) " "
162 err: `expected expression` 162 err: `expected expression`
163 EXPR_STMT@[95; 96) 163 EXPR_STMT@[95; 96)
164 ERROR@[95; 96) 164 ERROR@[95; 96)
165 R_BRACK@[95; 96) 165 R_BRACK@[95; 96) "]"
166 err: `expected SEMI` 166 err: `expected SEMI`
167 err: `expected expression` 167 err: `expected expression`
168 EXPR_STMT@[96; 97) 168 EXPR_STMT@[96; 97)
169 ERROR@[96; 97) 169 ERROR@[96; 97)
170 COMMA@[96; 97) 170 COMMA@[96; 97) ","
171 err: `expected SEMI` 171 err: `expected SEMI`
172 WHITESPACE@[97; 98) 172 WHITESPACE@[97; 98) " "
173 TRAIT_DEF@[98; 104) 173 TRAIT_DEF@[98; 104)
174 TRAIT_KW@[98; 103) 174 TRAIT_KW@[98; 103) "trait"
175 err: `expected a name` 175 err: `expected a name`
176 ERROR@[103; 104) 176 ERROR@[103; 104)
177 COMMA@[103; 104) 177 COMMA@[103; 104) ","
178 err: `expected `{`` 178 err: `expected `{``
179 WHITESPACE@[104; 105) 179 WHITESPACE@[104; 105) " "
180 LET_STMT@[105; 108) 180 LET_STMT@[105; 108)
181 LET_KW@[105; 108) 181 LET_KW@[105; 108) "let"
182 err: `expected pattern` 182 err: `expected pattern`
183 err: `expected SEMI` 183 err: `expected SEMI`
184 err: `expected expression` 184 err: `expected expression`
185 ERROR@[108; 109) 185 ERROR@[108; 109)
186 R_PAREN@[108; 109) 186 R_PAREN@[108; 109) ")"
187 WHITESPACE@[109; 110) 187 WHITESPACE@[109; 110) " "
188 R_CURLY@[110; 111) 188 R_CURLY@[110; 111) "}"
189 WHITESPACE@[111; 112) 189 WHITESPACE@[111; 112) "\n"
diff --git a/crates/ra_syntax/tests/data/parser/err/0023_mismatched_paren.txt b/crates/ra_syntax/tests/data/parser/err/0023_mismatched_paren.txt
index dcca0756d..469d35082 100644
--- a/crates/ra_syntax/tests/data/parser/err/0023_mismatched_paren.txt
+++ b/crates/ra_syntax/tests/data/parser/err/0023_mismatched_paren.txt
@@ -1,43 +1,43 @@
1SOURCE_FILE@[0; 94) 1SOURCE_FILE@[0; 94)
2 FN_DEF@[0; 55) 2 FN_DEF@[0; 55)
3 FN_KW@[0; 2) 3 FN_KW@[0; 2) "fn"
4 WHITESPACE@[2; 3) 4 WHITESPACE@[2; 3) " "
5 NAME@[3; 7) 5 NAME@[3; 7)
6 IDENT@[3; 7) "main" 6 IDENT@[3; 7) "main"
7 PARAM_LIST@[7; 9) 7 PARAM_LIST@[7; 9)
8 L_PAREN@[7; 8) 8 L_PAREN@[7; 8) "("
9 R_PAREN@[8; 9) 9 R_PAREN@[8; 9) ")"
10 WHITESPACE@[9; 10) 10 WHITESPACE@[9; 10) " "
11 BLOCK@[10; 55) 11 BLOCK@[10; 55)
12 L_CURLY@[10; 11) 12 L_CURLY@[10; 11) "{"
13 WHITESPACE@[11; 16) 13 WHITESPACE@[11; 16) "\n "
14 MACRO_CALL@[16; 49) 14 MACRO_CALL@[16; 49)
15 PATH@[16; 19) 15 PATH@[16; 19)
16 PATH_SEGMENT@[16; 19) 16 PATH_SEGMENT@[16; 19)
17 NAME_REF@[16; 19) 17 NAME_REF@[16; 19)
18 IDENT@[16; 19) "foo" 18 IDENT@[16; 19) "foo"
19 EXCL@[19; 20) 19 EXCL@[19; 20) "!"
20 WHITESPACE@[20; 21) 20 WHITESPACE@[20; 21) " "
21 TOKEN_TREE@[21; 49) 21 TOKEN_TREE@[21; 49)
22 L_PAREN@[21; 22) 22 L_PAREN@[21; 22) "("
23 WHITESPACE@[22; 31) 23 WHITESPACE@[22; 31) "\n "
24 IDENT@[31; 34) "bar" 24 IDENT@[31; 34) "bar"
25 COMMA@[34; 35) 25 COMMA@[34; 35) ","
26 WHITESPACE@[35; 36) 26 WHITESPACE@[35; 36) " "
27 STRING@[36; 41) 27 STRING@[36; 41) "\"baz\""
28 COMMA@[41; 42) 28 COMMA@[41; 42) ","
29 WHITESPACE@[42; 43) 29 WHITESPACE@[42; 43) " "
30 INT_NUMBER@[43; 44) "1" 30 INT_NUMBER@[43; 44) "1"
31 COMMA@[44; 45) 31 COMMA@[44; 45) ","
32 WHITESPACE@[45; 46) 32 WHITESPACE@[45; 46) " "
33 FLOAT_NUMBER@[46; 49) "2.0" 33 FLOAT_NUMBER@[46; 49) "2.0"
34 err: `unmatched `}`` 34 err: `unmatched `}``
35 WHITESPACE@[49; 54) 35 WHITESPACE@[49; 54) "\n "
36 R_CURLY@[54; 55) 36 R_CURLY@[54; 55) "}"
37 WHITESPACE@[55; 56) 37 WHITESPACE@[55; 56) " "
38 COMMENT@[56; 91) 38 COMMENT@[56; 91) "//~ ERROR incorrect c ..."
39 WHITESPACE@[91; 92) 39 WHITESPACE@[91; 92) "\n"
40 err: `unmatched `}`` 40 err: `unmatched `}``
41 ERROR@[92; 93) 41 ERROR@[92; 93)
42 R_CURLY@[92; 93) 42 R_CURLY@[92; 93) "}"
43 WHITESPACE@[93; 94) 43 WHITESPACE@[93; 94) "\n"
diff --git a/crates/ra_syntax/tests/data/parser/err/0024_many_type_parens.txt b/crates/ra_syntax/tests/data/parser/err/0024_many_type_parens.txt
index 8720fc6ea..0fb73d838 100644
--- a/crates/ra_syntax/tests/data/parser/err/0024_many_type_parens.txt
+++ b/crates/ra_syntax/tests/data/parser/err/0024_many_type_parens.txt
@@ -1,164 +1,173 @@
1SOURCE_FILE@[0; 240) 1SOURCE_FILE@[0; 240)
2 FN_DEF@[0; 53) 2 FN_DEF@[0; 53)
3 FN_KW@[0; 2) 3 FN_KW@[0; 2) "fn"
4 WHITESPACE@[2; 3) 4 WHITESPACE@[2; 3) " "
5 NAME@[3; 4) 5 NAME@[3; 4)
6 IDENT@[3; 4) "f" 6 IDENT@[3; 4) "f"
7 TYPE_PARAM_LIST@[4; 48) 7 TYPE_PARAM_LIST@[4; 48)
8 L_ANGLE@[4; 5) 8 L_ANGLE@[4; 5) "<"
9 TYPE_PARAM@[5; 47) 9 TYPE_PARAM@[5; 47)
10 NAME@[5; 6) 10 NAME@[5; 6)
11 IDENT@[5; 6) "T" 11 IDENT@[5; 6) "T"
12 COLON@[6; 7) 12 COLON@[6; 7) ":"
13 WHITESPACE@[7; 8) 13 WHITESPACE@[7; 8) " "
14 L_PAREN@[8; 9) 14 TYPE_BOUND_LIST@[8; 47)
15 PATH_TYPE@[9; 13) 15 TYPE_BOUND@[8; 14)
16 PATH@[9; 13) 16 L_PAREN@[8; 9) "("
17 PATH_SEGMENT@[9; 13) 17 PATH_TYPE@[9; 13)
18 NAME_REF@[9; 13) 18 PATH@[9; 13)
19 IDENT@[9; 13) "Copy" 19 PATH_SEGMENT@[9; 13)
20 R_PAREN@[13; 14) 20 NAME_REF@[9; 13)
21 WHITESPACE@[14; 15) 21 IDENT@[9; 13) "Copy"
22 PLUS@[15; 16) 22 R_PAREN@[13; 14) ")"
23 WHITESPACE@[16; 17) 23 WHITESPACE@[14; 15) " "
24 L_PAREN@[17; 18) 24 PLUS@[15; 16) "+"
25 QUESTION@[18; 19) 25 WHITESPACE@[16; 17) " "
26 PATH_TYPE@[19; 24) 26 TYPE_BOUND@[17; 25)
27 PATH@[19; 24) 27 L_PAREN@[17; 18) "("
28 PATH_SEGMENT@[19; 24) 28 QUESTION@[18; 19) "?"
29 NAME_REF@[19; 24) 29 PATH_TYPE@[19; 24)
30 IDENT@[19; 24) "Sized" 30 PATH@[19; 24)
31 R_PAREN@[24; 25) 31 PATH_SEGMENT@[19; 24)
32 WHITESPACE@[25; 26) 32 NAME_REF@[19; 24)
33 PLUS@[26; 27) 33 IDENT@[19; 24) "Sized"
34 WHITESPACE@[27; 28) 34 R_PAREN@[24; 25) ")"
35 L_PAREN@[28; 29) 35 WHITESPACE@[25; 26) " "
36 FOR_TYPE@[29; 46) 36 PLUS@[26; 27) "+"
37 FOR_KW@[29; 32) 37 WHITESPACE@[27; 28) " "
38 TYPE_PARAM_LIST@[32; 36) 38 TYPE_BOUND@[28; 47)
39 L_ANGLE@[32; 33) 39 L_PAREN@[28; 29) "("
40 LIFETIME_PARAM@[33; 35) 40 FOR_TYPE@[29; 46)
41 LIFETIME@[33; 35) "'a" 41 FOR_KW@[29; 32) "for"
42 R_ANGLE@[35; 36) 42 TYPE_PARAM_LIST@[32; 36)
43 WHITESPACE@[36; 37) 43 L_ANGLE@[32; 33) "<"
44 PATH_TYPE@[37; 46) 44 LIFETIME_PARAM@[33; 35)
45 PATH@[37; 46) 45 LIFETIME@[33; 35) "\'a"
46 PATH_SEGMENT@[37; 46) 46 R_ANGLE@[35; 36) ">"
47 NAME_REF@[37; 42) 47 WHITESPACE@[36; 37) " "
48 IDENT@[37; 42) "Trait" 48 PATH_TYPE@[37; 46)
49 TYPE_ARG_LIST@[42; 46) 49 PATH@[37; 46)
50 L_ANGLE@[42; 43) 50 PATH_SEGMENT@[37; 46)
51 LIFETIME_ARG@[43; 45) 51 NAME_REF@[37; 42)
52 LIFETIME@[43; 45) "'a" 52 IDENT@[37; 42) "Trait"
53 R_ANGLE@[45; 46) 53 TYPE_ARG_LIST@[42; 46)
54 R_PAREN@[46; 47) 54 L_ANGLE@[42; 43) "<"
55 R_ANGLE@[47; 48) 55 LIFETIME_ARG@[43; 45)
56 LIFETIME@[43; 45) "\'a"
57 R_ANGLE@[45; 46) ">"
58 R_PAREN@[46; 47) ")"
59 R_ANGLE@[47; 48) ">"
56 PARAM_LIST@[48; 50) 60 PARAM_LIST@[48; 50)
57 L_PAREN@[48; 49) 61 L_PAREN@[48; 49) "("
58 R_PAREN@[49; 50) 62 R_PAREN@[49; 50) ")"
59 WHITESPACE@[50; 51) 63 WHITESPACE@[50; 51) " "
60 BLOCK@[51; 53) 64 BLOCK@[51; 53)
61 L_CURLY@[51; 52) 65 L_CURLY@[51; 52) "{"
62 R_CURLY@[52; 53) 66 R_CURLY@[52; 53) "}"
63 WHITESPACE@[53; 55) 67 WHITESPACE@[53; 55) "\n\n"
64 FN_DEF@[55; 239) 68 FN_DEF@[55; 239)
65 FN_KW@[55; 57) 69 FN_KW@[55; 57) "fn"
66 WHITESPACE@[57; 58) 70 WHITESPACE@[57; 58) " "
67 NAME@[58; 62) 71 NAME@[58; 62)
68 IDENT@[58; 62) "main" 72 IDENT@[58; 62) "main"
69 PARAM_LIST@[62; 64) 73 PARAM_LIST@[62; 64)
70 L_PAREN@[62; 63) 74 L_PAREN@[62; 63) "("
71 R_PAREN@[63; 64) 75 R_PAREN@[63; 64) ")"
72 WHITESPACE@[64; 65) 76 WHITESPACE@[64; 65) " "
73 BLOCK@[65; 239) 77 BLOCK@[65; 239)
74 L_CURLY@[65; 66) 78 L_CURLY@[65; 66) "{"
75 WHITESPACE@[66; 71) 79 WHITESPACE@[66; 71) "\n "
76 LET_STMT@[71; 121) 80 LET_STMT@[71; 121)
77 LET_KW@[71; 74) 81 LET_KW@[71; 74) "let"
78 WHITESPACE@[74; 75) 82 WHITESPACE@[74; 75) " "
79 PLACEHOLDER_PAT@[75; 76) 83 PLACEHOLDER_PAT@[75; 76)
80 UNDERSCORE@[75; 76) 84 UNDERSCORE@[75; 76) "_"
81 COLON@[76; 77) 85 COLON@[76; 77) ":"
82 WHITESPACE@[77; 78) 86 WHITESPACE@[77; 78) " "
83 PATH_TYPE@[78; 121) 87 DYN_TRAIT_TYPE@[78; 121)
84 PATH@[78; 88) 88 TYPE_BOUND_LIST@[78; 121)
85 PATH_SEGMENT@[78; 88) 89 TYPE_BOUND@[78; 88)
86 NAME_REF@[78; 81) 90 PATH_TYPE@[78; 88)
87 IDENT@[78; 81) "Box" 91 PATH@[78; 88)
88 TYPE_ARG_LIST@[81; 88) 92 PATH_SEGMENT@[78; 88)
89 L_ANGLE@[81; 82) 93 NAME_REF@[78; 81)
90 TYPE_ARG@[82; 88) 94 IDENT@[78; 81) "Box"
91 PAREN_TYPE@[82; 88) 95 TYPE_ARG_LIST@[81; 88)
92 L_PAREN@[82; 83) 96 L_ANGLE@[81; 82) "<"
93 PATH_TYPE@[83; 87) 97 TYPE_ARG@[82; 88)
94 PATH@[83; 87) 98 PAREN_TYPE@[82; 88)
95 PATH_SEGMENT@[83; 87) 99 L_PAREN@[82; 83) "("
96 NAME_REF@[83; 87) 100 PATH_TYPE@[83; 87)
97 IDENT@[83; 87) "Copy" 101 PATH@[83; 87)
98 R_PAREN@[87; 88) 102 PATH_SEGMENT@[83; 87)
99 err: `expected COMMA` 103 NAME_REF@[83; 87)
100 err: `expected R_ANGLE` 104 IDENT@[83; 87) "Copy"
101 WHITESPACE@[88; 89) 105 R_PAREN@[87; 88) ")"
102 PLUS@[89; 90) 106 err: `expected COMMA`
103 WHITESPACE@[90; 91) 107 err: `expected R_ANGLE`
104 L_PAREN@[91; 92) 108 WHITESPACE@[88; 89) " "
105 QUESTION@[92; 93) 109 PLUS@[89; 90) "+"
106 PATH_TYPE@[93; 98) 110 WHITESPACE@[90; 91) " "
107 PATH@[93; 98) 111 TYPE_BOUND@[91; 99)
108 PATH_SEGMENT@[93; 98) 112 L_PAREN@[91; 92) "("
109 NAME_REF@[93; 98) 113 QUESTION@[92; 93) "?"
110 IDENT@[93; 98) "Sized" 114 PATH_TYPE@[93; 98)
111 R_PAREN@[98; 99) 115 PATH@[93; 98)
112 WHITESPACE@[99; 100) 116 PATH_SEGMENT@[93; 98)
113 PLUS@[100; 101) 117 NAME_REF@[93; 98)
114 WHITESPACE@[101; 102) 118 IDENT@[93; 98) "Sized"
115 L_PAREN@[102; 103) 119 R_PAREN@[98; 99) ")"
116 FOR_TYPE@[103; 120) 120 WHITESPACE@[99; 100) " "
117 FOR_KW@[103; 106) 121 PLUS@[100; 101) "+"
118 TYPE_PARAM_LIST@[106; 110) 122 WHITESPACE@[101; 102) " "
119 L_ANGLE@[106; 107) 123 TYPE_BOUND@[102; 121)
120 LIFETIME_PARAM@[107; 109) 124 L_PAREN@[102; 103) "("
121 LIFETIME@[107; 109) "'a" 125 FOR_TYPE@[103; 120)
122 R_ANGLE@[109; 110) 126 FOR_KW@[103; 106) "for"
123 WHITESPACE@[110; 111) 127 TYPE_PARAM_LIST@[106; 110)
124 PATH_TYPE@[111; 120) 128 L_ANGLE@[106; 107) "<"
125 PATH@[111; 120) 129 LIFETIME_PARAM@[107; 109)
126 PATH_SEGMENT@[111; 120) 130 LIFETIME@[107; 109) "\'a"
127 NAME_REF@[111; 116) 131 R_ANGLE@[109; 110) ">"
128 IDENT@[111; 116) "Trait" 132 WHITESPACE@[110; 111) " "
129 TYPE_ARG_LIST@[116; 120) 133 PATH_TYPE@[111; 120)
130 L_ANGLE@[116; 117) 134 PATH@[111; 120)
131 LIFETIME_ARG@[117; 119) 135 PATH_SEGMENT@[111; 120)
132 LIFETIME@[117; 119) "'a" 136 NAME_REF@[111; 116)
133 R_ANGLE@[119; 120) 137 IDENT@[111; 116) "Trait"
134 R_PAREN@[120; 121) 138 TYPE_ARG_LIST@[116; 120)
135 err: `expected SEMI` 139 L_ANGLE@[116; 117) "<"
136 err: `expected expression` 140 LIFETIME_ARG@[117; 119)
141 LIFETIME@[117; 119) "\'a"
142 R_ANGLE@[119; 120) ">"
143 R_PAREN@[120; 121) ")"
144 err: `expected SEMI`
145 err: `expected expression`
137 EXPR_STMT@[121; 123) 146 EXPR_STMT@[121; 123)
138 ERROR@[121; 122) 147 ERROR@[121; 122)
139 R_ANGLE@[121; 122) 148 R_ANGLE@[121; 122) ">"
140 SEMI@[122; 123) 149 SEMI@[122; 123) ";"
141 WHITESPACE@[123; 128) 150 WHITESPACE@[123; 128) "\n "
142 LET_STMT@[128; 141) 151 LET_STMT@[128; 141)
143 LET_KW@[128; 131) 152 LET_KW@[128; 131) "let"
144 WHITESPACE@[131; 132) 153 WHITESPACE@[131; 132) " "
145 PLACEHOLDER_PAT@[132; 133) 154 PLACEHOLDER_PAT@[132; 133)
146 UNDERSCORE@[132; 133) 155 UNDERSCORE@[132; 133) "_"
147 COLON@[133; 134) 156 COLON@[133; 134) ":"
148 WHITESPACE@[134; 135) 157 WHITESPACE@[134; 135) " "
149 PATH_TYPE@[135; 141) 158 PATH_TYPE@[135; 141)
150 PATH@[135; 141) 159 PATH@[135; 141)
151 PATH_SEGMENT@[135; 141) 160 PATH_SEGMENT@[135; 141)
152 NAME_REF@[135; 138) 161 NAME_REF@[135; 138)
153 IDENT@[135; 138) "Box" 162 IDENT@[135; 138) "Box"
154 TYPE_ARG_LIST@[138; 141) 163 TYPE_ARG_LIST@[138; 141)
155 L_ANGLE@[138; 139) 164 L_ANGLE@[138; 139) "<"
156 TYPE_ARG@[139; 141) 165 TYPE_ARG@[139; 141)
157 PAREN_TYPE@[139; 141) 166 PAREN_TYPE@[139; 141)
158 L_PAREN@[139; 140) 167 L_PAREN@[139; 140) "("
159 err: `expected type` 168 err: `expected type`
160 ERROR@[140; 141) 169 ERROR@[140; 141)
161 QUESTION@[140; 141) 170 QUESTION@[140; 141) "?"
162 err: `expected R_PAREN` 171 err: `expected R_PAREN`
163 err: `expected COMMA` 172 err: `expected COMMA`
164 err: `expected R_ANGLE` 173 err: `expected R_ANGLE`
@@ -173,38 +182,38 @@ SOURCE_FILE@[0; 240)
173 err: `expected expression` 182 err: `expected expression`
174 EXPR_STMT@[146; 147) 183 EXPR_STMT@[146; 147)
175 ERROR@[146; 147) 184 ERROR@[146; 147)
176 R_PAREN@[146; 147) 185 R_PAREN@[146; 147) ")"
177 err: `expected SEMI` 186 err: `expected SEMI`
178 WHITESPACE@[147; 148) 187 WHITESPACE@[147; 148) " "
179 err: `expected expression` 188 err: `expected expression`
180 EXPR_STMT@[148; 149) 189 EXPR_STMT@[148; 149)
181 ERROR@[148; 149) 190 ERROR@[148; 149)
182 PLUS@[148; 149) 191 PLUS@[148; 149) "+"
183 err: `expected SEMI` 192 err: `expected SEMI`
184 WHITESPACE@[149; 150) 193 WHITESPACE@[149; 150) " "
185 EXPR_STMT@[150; 151) 194 EXPR_STMT@[150; 151)
186 PAREN_EXPR@[150; 151) 195 PAREN_EXPR@[150; 151)
187 L_PAREN@[150; 151) 196 L_PAREN@[150; 151) "("
188 err: `expected expression` 197 err: `expected expression`
189 err: `expected R_PAREN` 198 err: `expected R_PAREN`
190 err: `expected SEMI` 199 err: `expected SEMI`
191 EXPR_STMT@[151; 157) 200 EXPR_STMT@[151; 157)
192 FOR_EXPR@[151; 157) 201 FOR_EXPR@[151; 157)
193 FOR_KW@[151; 154) 202 FOR_KW@[151; 154) "for"
194 err: `expected pattern` 203 err: `expected pattern`
195 ERROR@[154; 155) 204 ERROR@[154; 155)
196 L_ANGLE@[154; 155) 205 L_ANGLE@[154; 155) "<"
197 err: `expected IN_KW` 206 err: `expected IN_KW`
198 err: `expected expression` 207 err: `expected expression`
199 ERROR@[155; 157) 208 ERROR@[155; 157)
200 LIFETIME@[155; 157) "'a" 209 LIFETIME@[155; 157) "\'a"
201 err: `expected a block` 210 err: `expected a block`
202 err: `expected expression` 211 err: `expected expression`
203 EXPR_STMT@[157; 158) 212 EXPR_STMT@[157; 158)
204 ERROR@[157; 158) 213 ERROR@[157; 158)
205 R_ANGLE@[157; 158) 214 R_ANGLE@[157; 158) ">"
206 err: `expected SEMI` 215 err: `expected SEMI`
207 WHITESPACE@[158; 159) 216 WHITESPACE@[158; 159) " "
208 EXPR_STMT@[159; 180) 217 EXPR_STMT@[159; 180)
209 BIN_EXPR@[159; 180) 218 BIN_EXPR@[159; 180)
210 BIN_EXPR@[159; 178) 219 BIN_EXPR@[159; 178)
@@ -215,96 +224,101 @@ SOURCE_FILE@[0; 240)
215 PATH_SEGMENT@[159; 164) 224 PATH_SEGMENT@[159; 164)
216 NAME_REF@[159; 164) 225 NAME_REF@[159; 164)
217 IDENT@[159; 164) "Trait" 226 IDENT@[159; 164) "Trait"
218 L_ANGLE@[164; 165) 227 L_ANGLE@[164; 165) "<"
219 err: `expected expression` 228 err: `expected expression`
220 ERROR@[165; 167) 229 ERROR@[165; 167)
221 LIFETIME@[165; 167) "'a" 230 LIFETIME@[165; 167) "\'a"
222 R_ANGLE@[167; 168) 231 R_ANGLE@[167; 168) ">"
223 err: `expected expression` 232 err: `expected expression`
224 ERROR@[168; 169) 233 ERROR@[168; 169)
225 R_PAREN@[168; 169) 234 R_PAREN@[168; 169) ")"
226 WHITESPACE@[169; 170) 235 WHITESPACE@[169; 170) " "
227 PLUS@[170; 171) 236 PLUS@[170; 171) "+"
228 WHITESPACE@[171; 172) 237 WHITESPACE@[171; 172) " "
229 PAREN_EXPR@[172; 178) 238 PAREN_EXPR@[172; 178)
230 L_PAREN@[172; 173) 239 L_PAREN@[172; 173) "("
231 PATH_EXPR@[173; 177) 240 PATH_EXPR@[173; 177)
232 PATH@[173; 177) 241 PATH@[173; 177)
233 PATH_SEGMENT@[173; 177) 242 PATH_SEGMENT@[173; 177)
234 NAME_REF@[173; 177) 243 NAME_REF@[173; 177)
235 IDENT@[173; 177) "Copy" 244 IDENT@[173; 177) "Copy"
236 R_PAREN@[177; 178) 245 R_PAREN@[177; 178) ")"
237 R_ANGLE@[178; 179) 246 R_ANGLE@[178; 179) ">"
238 err: `expected expression` 247 err: `expected expression`
239 ERROR@[179; 180) 248 ERROR@[179; 180)
240 SEMI@[179; 180) 249 SEMI@[179; 180) ";"
241 err: `expected SEMI` 250 err: `expected SEMI`
242 WHITESPACE@[180; 185) 251 WHITESPACE@[180; 185) "\n "
243 LET_STMT@[185; 235) 252 LET_STMT@[185; 235)
244 LET_KW@[185; 188) 253 LET_KW@[185; 188) "let"
245 WHITESPACE@[188; 189) 254 WHITESPACE@[188; 189) " "
246 PLACEHOLDER_PAT@[189; 190) 255 PLACEHOLDER_PAT@[189; 190)
247 UNDERSCORE@[189; 190) 256 UNDERSCORE@[189; 190) "_"
248 COLON@[190; 191) 257 COLON@[190; 191) ":"
249 WHITESPACE@[191; 192) 258 WHITESPACE@[191; 192) " "
250 PATH_TYPE@[192; 235) 259 DYN_TRAIT_TYPE@[192; 235)
251 PATH@[192; 215) 260 TYPE_BOUND_LIST@[192; 235)
252 PATH_SEGMENT@[192; 215) 261 TYPE_BOUND@[192; 215)
253 NAME_REF@[192; 195) 262 PATH_TYPE@[192; 215)
254 IDENT@[192; 195) "Box" 263 PATH@[192; 215)
255 TYPE_ARG_LIST@[195; 215) 264 PATH_SEGMENT@[192; 215)
256 L_ANGLE@[195; 196) 265 NAME_REF@[192; 195)
257 TYPE_ARG@[196; 215) 266 IDENT@[192; 195) "Box"
258 PAREN_TYPE@[196; 215) 267 TYPE_ARG_LIST@[195; 215)
259 L_PAREN@[196; 197) 268 L_ANGLE@[195; 196) "<"
260 FOR_TYPE@[197; 214) 269 TYPE_ARG@[196; 215)
261 FOR_KW@[197; 200) 270 PAREN_TYPE@[196; 215)
262 TYPE_PARAM_LIST@[200; 204) 271 L_PAREN@[196; 197) "("
263 L_ANGLE@[200; 201) 272 FOR_TYPE@[197; 214)
264 LIFETIME_PARAM@[201; 203) 273 FOR_KW@[197; 200) "for"
265 LIFETIME@[201; 203) "'a" 274 TYPE_PARAM_LIST@[200; 204)
266 R_ANGLE@[203; 204) 275 L_ANGLE@[200; 201) "<"
267 WHITESPACE@[204; 205) 276 LIFETIME_PARAM@[201; 203)
268 PATH_TYPE@[205; 214) 277 LIFETIME@[201; 203) "\'a"
269 PATH@[205; 214) 278 R_ANGLE@[203; 204) ">"
270 PATH_SEGMENT@[205; 214) 279 WHITESPACE@[204; 205) " "
271 NAME_REF@[205; 210) 280 PATH_TYPE@[205; 214)
272 IDENT@[205; 210) "Trait" 281 PATH@[205; 214)
273 TYPE_ARG_LIST@[210; 214) 282 PATH_SEGMENT@[205; 214)
274 L_ANGLE@[210; 211) 283 NAME_REF@[205; 210)
275 LIFETIME_ARG@[211; 213) 284 IDENT@[205; 210) "Trait"
276 LIFETIME@[211; 213) "'a" 285 TYPE_ARG_LIST@[210; 214)
277 R_ANGLE@[213; 214) 286 L_ANGLE@[210; 211) "<"
278 R_PAREN@[214; 215) 287 LIFETIME_ARG@[211; 213)
279 err: `expected COMMA` 288 LIFETIME@[211; 213) "\'a"
280 err: `expected R_ANGLE` 289 R_ANGLE@[213; 214) ">"
281 WHITESPACE@[215; 216) 290 R_PAREN@[214; 215) ")"
282 PLUS@[216; 217) 291 err: `expected COMMA`
283 WHITESPACE@[217; 218) 292 err: `expected R_ANGLE`
284 L_PAREN@[218; 219) 293 WHITESPACE@[215; 216) " "
285 PATH_TYPE@[219; 223) 294 PLUS@[216; 217) "+"
286 PATH@[219; 223) 295 WHITESPACE@[217; 218) " "
287 PATH_SEGMENT@[219; 223) 296 TYPE_BOUND@[218; 224)
288 NAME_REF@[219; 223) 297 L_PAREN@[218; 219) "("
289 IDENT@[219; 223) "Copy" 298 PATH_TYPE@[219; 223)
290 R_PAREN@[223; 224) 299 PATH@[219; 223)
291 WHITESPACE@[224; 225) 300 PATH_SEGMENT@[219; 223)
292 PLUS@[225; 226) 301 NAME_REF@[219; 223)
293 WHITESPACE@[226; 227) 302 IDENT@[219; 223) "Copy"
294 L_PAREN@[227; 228) 303 R_PAREN@[223; 224) ")"
295 QUESTION@[228; 229) 304 WHITESPACE@[224; 225) " "
296 PATH_TYPE@[229; 234) 305 PLUS@[225; 226) "+"
297 PATH@[229; 234) 306 WHITESPACE@[226; 227) " "
298 PATH_SEGMENT@[229; 234) 307 TYPE_BOUND@[227; 235)
299 NAME_REF@[229; 234) 308 L_PAREN@[227; 228) "("
300 IDENT@[229; 234) "Sized" 309 QUESTION@[228; 229) "?"
301 R_PAREN@[234; 235) 310 PATH_TYPE@[229; 234)
302 err: `expected SEMI` 311 PATH@[229; 234)
303 err: `expected expression` 312 PATH_SEGMENT@[229; 234)
313 NAME_REF@[229; 234)
314 IDENT@[229; 234) "Sized"
315 R_PAREN@[234; 235) ")"
316 err: `expected SEMI`
317 err: `expected expression`
304 EXPR_STMT@[235; 237) 318 EXPR_STMT@[235; 237)
305 ERROR@[235; 236) 319 ERROR@[235; 236)
306 R_ANGLE@[235; 236) 320 R_ANGLE@[235; 236) ">"
307 SEMI@[236; 237) 321 SEMI@[236; 237) ";"
308 WHITESPACE@[237; 238) 322 WHITESPACE@[237; 238) "\n"
309 R_CURLY@[238; 239) 323 R_CURLY@[238; 239) "}"
310 WHITESPACE@[239; 240) 324 WHITESPACE@[239; 240) "\n"
diff --git a/crates/ra_syntax/tests/data/parser/err/0025_nope.txt b/crates/ra_syntax/tests/data/parser/err/0025_nope.txt
index e0824ca56..b8d769947 100644
--- a/crates/ra_syntax/tests/data/parser/err/0025_nope.txt
+++ b/crates/ra_syntax/tests/data/parser/err/0025_nope.txt
@@ -1,158 +1,158 @@
1SOURCE_FILE@[0; 575) 1SOURCE_FILE@[0; 575)
2 FN_DEF@[0; 574) 2 FN_DEF@[0; 574)
3 FN_KW@[0; 2) 3 FN_KW@[0; 2) "fn"
4 WHITESPACE@[2; 3) 4 WHITESPACE@[2; 3) " "
5 NAME@[3; 7) 5 NAME@[3; 7)
6 IDENT@[3; 7) "main" 6 IDENT@[3; 7) "main"
7 PARAM_LIST@[7; 9) 7 PARAM_LIST@[7; 9)
8 L_PAREN@[7; 8) 8 L_PAREN@[7; 8) "("
9 R_PAREN@[8; 9) 9 R_PAREN@[8; 9) ")"
10 WHITESPACE@[9; 10) 10 WHITESPACE@[9; 10) " "
11 BLOCK@[10; 574) 11 BLOCK@[10; 574)
12 L_CURLY@[10; 11) 12 L_CURLY@[10; 11) "{"
13 WHITESPACE@[11; 16) 13 WHITESPACE@[11; 16) "\n "
14 ENUM_DEF@[16; 152) 14 ENUM_DEF@[16; 152)
15 ENUM_KW@[16; 20) 15 ENUM_KW@[16; 20) "enum"
16 WHITESPACE@[20; 21) 16 WHITESPACE@[20; 21) " "
17 NAME@[21; 25) 17 NAME@[21; 25)
18 IDENT@[21; 25) "Test" 18 IDENT@[21; 25) "Test"
19 WHITESPACE@[25; 26) 19 WHITESPACE@[25; 26) " "
20 ENUM_VARIANT_LIST@[26; 152) 20 ENUM_VARIANT_LIST@[26; 152)
21 L_CURLY@[26; 27) 21 L_CURLY@[26; 27) "{"
22 WHITESPACE@[27; 36) 22 WHITESPACE@[27; 36) "\n "
23 ENUM_VARIANT@[36; 40) 23 ENUM_VARIANT@[36; 40)
24 NAME@[36; 40) 24 NAME@[36; 40)
25 IDENT@[36; 40) "Var1" 25 IDENT@[36; 40) "Var1"
26 COMMA@[40; 41) 26 COMMA@[40; 41) ","
27 WHITESPACE@[41; 50) 27 WHITESPACE@[41; 50) "\n "
28 ENUM_VARIANT@[50; 62) 28 ENUM_VARIANT@[50; 62)
29 NAME@[50; 54) 29 NAME@[50; 54)
30 IDENT@[50; 54) "Var2" 30 IDENT@[50; 54) "Var2"
31 POS_FIELD_DEF_LIST@[54; 62) 31 POS_FIELD_DEF_LIST@[54; 62)
32 L_PAREN@[54; 55) 32 L_PAREN@[54; 55) "("
33 POS_FIELD_DEF@[55; 61) 33 POS_FIELD_DEF@[55; 61)
34 PATH_TYPE@[55; 61) 34 PATH_TYPE@[55; 61)
35 PATH@[55; 61) 35 PATH@[55; 61)
36 PATH_SEGMENT@[55; 61) 36 PATH_SEGMENT@[55; 61)
37 NAME_REF@[55; 61) 37 NAME_REF@[55; 61)
38 IDENT@[55; 61) "String" 38 IDENT@[55; 61) "String"
39 R_PAREN@[61; 62) 39 R_PAREN@[61; 62) ")"
40 COMMA@[62; 63) 40 COMMA@[62; 63) ","
41 WHITESPACE@[63; 72) 41 WHITESPACE@[63; 72) "\n "
42 ENUM_VARIANT@[72; 145) 42 ENUM_VARIANT@[72; 145)
43 NAME@[72; 76) 43 NAME@[72; 76)
44 IDENT@[72; 76) "Var3" 44 IDENT@[72; 76) "Var3"
45 WHITESPACE@[76; 77) 45 WHITESPACE@[76; 77) " "
46 NAMED_FIELD_DEF_LIST@[77; 145) 46 NAMED_FIELD_DEF_LIST@[77; 145)
47 L_CURLY@[77; 78) 47 L_CURLY@[77; 78) "{"
48 WHITESPACE@[78; 91) 48 WHITESPACE@[78; 91) "\n "
49 NAMED_FIELD_DEF@[91; 95) 49 NAMED_FIELD_DEF@[91; 95)
50 NAME@[91; 94) 50 NAME@[91; 94)
51 IDENT@[91; 94) "abc" 51 IDENT@[91; 94) "abc"
52 COLON@[94; 95) 52 COLON@[94; 95) ":"
53 err: `expected type` 53 err: `expected type`
54 err: `expected COMMA` 54 err: `expected COMMA`
55 WHITESPACE@[95; 96) 55 WHITESPACE@[95; 96) " "
56 err: `expected field` 56 err: `expected field`
57 ERROR@[96; 98) 57 ERROR@[96; 98)
58 L_CURLY@[96; 97) 58 L_CURLY@[96; 97) "{"
59 R_CURLY@[97; 98) 59 R_CURLY@[97; 98) "}"
60 err: `expected field declaration` 60 err: `expected field declaration`
61 ERROR@[98; 99) 61 ERROR@[98; 99)
62 COMMA@[98; 99) 62 COMMA@[98; 99) ","
63 WHITESPACE@[99; 100) 63 WHITESPACE@[99; 100) " "
64 COMMENT@[100; 135) 64 COMMENT@[100; 135) "//~ ERROR: expected t ..."
65 WHITESPACE@[135; 144) 65 WHITESPACE@[135; 144) "\n "
66 R_CURLY@[144; 145) 66 R_CURLY@[144; 145) "}"
67 COMMA@[145; 146) 67 COMMA@[145; 146) ","
68 WHITESPACE@[146; 151) 68 WHITESPACE@[146; 151) "\n "
69 R_CURLY@[151; 152) 69 R_CURLY@[151; 152) "}"
70 WHITESPACE@[152; 158) 70 WHITESPACE@[152; 158) "\n\n "
71 COMMENT@[158; 171) 71 COMMENT@[158; 171) "// recover..."
72 WHITESPACE@[171; 176) 72 WHITESPACE@[171; 176) "\n "
73 LET_STMT@[176; 186) 73 LET_STMT@[176; 186)
74 LET_KW@[176; 179) 74 LET_KW@[176; 179) "let"
75 WHITESPACE@[179; 180) 75 WHITESPACE@[179; 180) " "
76 BIND_PAT@[180; 181) 76 BIND_PAT@[180; 181)
77 NAME@[180; 181) 77 NAME@[180; 181)
78 IDENT@[180; 181) "a" 78 IDENT@[180; 181) "a"
79 WHITESPACE@[181; 182) 79 WHITESPACE@[181; 182) " "
80 EQ@[182; 183) 80 EQ@[182; 183) "="
81 WHITESPACE@[183; 184) 81 WHITESPACE@[183; 184) " "
82 LITERAL@[184; 185) 82 LITERAL@[184; 185)
83 INT_NUMBER@[184; 185) "1" 83 INT_NUMBER@[184; 185) "1"
84 SEMI@[185; 186) 84 SEMI@[185; 186) ";"
85 WHITESPACE@[186; 191) 85 WHITESPACE@[186; 191) "\n "
86 ENUM_DEF@[191; 223) 86 ENUM_DEF@[191; 223)
87 ENUM_KW@[191; 195) 87 ENUM_KW@[191; 195) "enum"
88 WHITESPACE@[195; 196) 88 WHITESPACE@[195; 196) " "
89 NAME@[196; 201) 89 NAME@[196; 201)
90 IDENT@[196; 201) "Test2" 90 IDENT@[196; 201) "Test2"
91 WHITESPACE@[201; 202) 91 WHITESPACE@[201; 202) " "
92 ENUM_VARIANT_LIST@[202; 223) 92 ENUM_VARIANT_LIST@[202; 223)
93 L_CURLY@[202; 203) 93 L_CURLY@[202; 203) "{"
94 WHITESPACE@[203; 212) 94 WHITESPACE@[203; 212) "\n "
95 ENUM_VARIANT@[212; 216) 95 ENUM_VARIANT@[212; 216)
96 NAME@[212; 216) 96 NAME@[212; 216)
97 IDENT@[212; 216) "Fine" 97 IDENT@[212; 216) "Fine"
98 COMMA@[216; 217) 98 COMMA@[216; 217) ","
99 WHITESPACE@[217; 222) 99 WHITESPACE@[217; 222) "\n "
100 R_CURLY@[222; 223) 100 R_CURLY@[222; 223) "}"
101 WHITESPACE@[223; 229) 101 WHITESPACE@[223; 229) "\n\n "
102 ENUM_DEF@[229; 300) 102 ENUM_DEF@[229; 300)
103 ENUM_KW@[229; 233) 103 ENUM_KW@[229; 233) "enum"
104 WHITESPACE@[233; 234) 104 WHITESPACE@[233; 234) " "
105 NAME@[234; 239) 105 NAME@[234; 239)
106 IDENT@[234; 239) "Test3" 106 IDENT@[234; 239) "Test3"
107 WHITESPACE@[239; 240) 107 WHITESPACE@[239; 240) " "
108 ENUM_VARIANT_LIST@[240; 300) 108 ENUM_VARIANT_LIST@[240; 300)
109 L_CURLY@[240; 241) 109 L_CURLY@[240; 241) "{"
110 WHITESPACE@[241; 250) 110 WHITESPACE@[241; 250) "\n "
111 ENUM_VARIANT@[250; 293) 111 ENUM_VARIANT@[250; 293)
112 NAME@[250; 259) 112 NAME@[250; 259)
113 IDENT@[250; 259) "StillFine" 113 IDENT@[250; 259) "StillFine"
114 WHITESPACE@[259; 260) 114 WHITESPACE@[259; 260) " "
115 NAMED_FIELD_DEF_LIST@[260; 293) 115 NAMED_FIELD_DEF_LIST@[260; 293)
116 L_CURLY@[260; 261) 116 L_CURLY@[260; 261) "{"
117 WHITESPACE@[261; 274) 117 WHITESPACE@[261; 274) "\n "
118 NAMED_FIELD_DEF@[274; 282) 118 NAMED_FIELD_DEF@[274; 282)
119 NAME@[274; 277) 119 NAME@[274; 277)
120 IDENT@[274; 277) "def" 120 IDENT@[274; 277) "def"
121 COLON@[277; 278) 121 COLON@[277; 278) ":"
122 WHITESPACE@[278; 279) 122 WHITESPACE@[278; 279) " "
123 PATH_TYPE@[279; 282) 123 PATH_TYPE@[279; 282)
124 PATH@[279; 282) 124 PATH@[279; 282)
125 PATH_SEGMENT@[279; 282) 125 PATH_SEGMENT@[279; 282)
126 NAME_REF@[279; 282) 126 NAME_REF@[279; 282)
127 IDENT@[279; 282) "i32" 127 IDENT@[279; 282) "i32"
128 COMMA@[282; 283) 128 COMMA@[282; 283) ","
129 WHITESPACE@[283; 292) 129 WHITESPACE@[283; 292) "\n "
130 R_CURLY@[292; 293) 130 R_CURLY@[292; 293) "}"
131 COMMA@[293; 294) 131 COMMA@[293; 294) ","
132 WHITESPACE@[294; 299) 132 WHITESPACE@[294; 299) "\n "
133 R_CURLY@[299; 300) 133 R_CURLY@[299; 300) "}"
134 WHITESPACE@[300; 306) 134 WHITESPACE@[300; 306) "\n\n "
135 EXPR_STMT@[306; 459) 135 EXPR_STMT@[306; 459)
136 BLOCK_EXPR@[306; 459) 136 BLOCK_EXPR@[306; 459)
137 BLOCK@[306; 459) 137 BLOCK@[306; 459)
138 L_CURLY@[306; 307) 138 L_CURLY@[306; 307) "{"
139 WHITESPACE@[307; 316) 139 WHITESPACE@[307; 316) "\n "
140 ENUM_DEF@[316; 453) 140 ENUM_DEF@[316; 453)
141 COMMENT@[316; 329) 141 COMMENT@[316; 329) "// fail again"
142 WHITESPACE@[329; 338) 142 WHITESPACE@[329; 338) "\n "
143 ENUM_KW@[338; 342) 143 ENUM_KW@[338; 342) "enum"
144 WHITESPACE@[342; 343) 144 WHITESPACE@[342; 343) " "
145 NAME@[343; 348) 145 NAME@[343; 348)
146 IDENT@[343; 348) "Test4" 146 IDENT@[343; 348) "Test4"
147 WHITESPACE@[348; 349) 147 WHITESPACE@[348; 349) " "
148 ENUM_VARIANT_LIST@[349; 453) 148 ENUM_VARIANT_LIST@[349; 453)
149 L_CURLY@[349; 350) 149 L_CURLY@[349; 350) "{"
150 WHITESPACE@[350; 363) 150 WHITESPACE@[350; 363) "\n "
151 ENUM_VARIANT@[363; 372) 151 ENUM_VARIANT@[363; 372)
152 NAME@[363; 367) 152 NAME@[363; 367)
153 IDENT@[363; 367) "Nope" 153 IDENT@[363; 367) "Nope"
154 POS_FIELD_DEF_LIST@[367; 372) 154 POS_FIELD_DEF_LIST@[367; 372)
155 L_PAREN@[367; 368) 155 L_PAREN@[367; 368) "("
156 POS_FIELD_DEF@[368; 371) 156 POS_FIELD_DEF@[368; 371)
157 PATH_TYPE@[368; 371) 157 PATH_TYPE@[368; 371)
158 PATH@[368; 371) 158 PATH@[368; 371)
@@ -160,44 +160,44 @@ SOURCE_FILE@[0; 575)
160 NAME_REF@[368; 371) 160 NAME_REF@[368; 371)
161 IDENT@[368; 371) "i32" 161 IDENT@[368; 371) "i32"
162 err: `expected COMMA` 162 err: `expected COMMA`
163 WHITESPACE@[371; 372) 163 WHITESPACE@[371; 372) " "
164 err: `expected a type` 164 err: `expected a type`
165 err: `expected R_PAREN` 165 err: `expected R_PAREN`
166 err: `expected COMMA` 166 err: `expected COMMA`
167 err: `expected enum variant` 167 err: `expected enum variant`
168 ERROR@[372; 372) 168 ERROR@[372; 372)
169 ERROR@[372; 374) 169 ERROR@[372; 374)
170 L_CURLY@[372; 373) 170 L_CURLY@[372; 373) "{"
171 R_CURLY@[373; 374) 171 R_CURLY@[373; 374) "}"
172 err: `expected enum variant` 172 err: `expected enum variant`
173 ERROR@[374; 375) 173 ERROR@[374; 375)
174 R_PAREN@[374; 375) 174 R_PAREN@[374; 375) ")"
175 WHITESPACE@[375; 376) 175 WHITESPACE@[375; 376) " "
176 COMMENT@[376; 396) 176 COMMENT@[376; 396) "//~ ERROR: found `{`"
177 WHITESPACE@[396; 422) 177 WHITESPACE@[396; 422) "\n ..."
178 COMMENT@[422; 443) 178 COMMENT@[422; 443) "//~^ ERROR: found `{`"
179 WHITESPACE@[443; 452) 179 WHITESPACE@[443; 452) "\n "
180 R_CURLY@[452; 453) 180 R_CURLY@[452; 453) "}"
181 WHITESPACE@[453; 458) 181 WHITESPACE@[453; 458) "\n "
182 R_CURLY@[458; 459) 182 R_CURLY@[458; 459) "}"
183 WHITESPACE@[459; 464) 183 WHITESPACE@[459; 464) "\n "
184 COMMENT@[464; 486) 184 COMMENT@[464; 486) "// still recover later"
185 WHITESPACE@[486; 491) 185 WHITESPACE@[486; 491) "\n "
186 LET_STMT@[491; 510) 186 LET_STMT@[491; 510)
187 LET_KW@[491; 494) 187 LET_KW@[491; 494) "let"
188 WHITESPACE@[494; 495) 188 WHITESPACE@[494; 495) " "
189 BIND_PAT@[495; 505) 189 BIND_PAT@[495; 505)
190 NAME@[495; 505) 190 NAME@[495; 505)
191 IDENT@[495; 505) "bad_syntax" 191 IDENT@[495; 505) "bad_syntax"
192 WHITESPACE@[505; 506) 192 WHITESPACE@[505; 506) " "
193 EQ@[506; 507) 193 EQ@[506; 507) "="
194 WHITESPACE@[507; 508) 194 WHITESPACE@[507; 508) " "
195 err: `expected expression` 195 err: `expected expression`
196 ERROR@[508; 509) 196 ERROR@[508; 509)
197 UNDERSCORE@[508; 509) 197 UNDERSCORE@[508; 509) "_"
198 SEMI@[509; 510) 198 SEMI@[509; 510) ";"
199 WHITESPACE@[510; 511) 199 WHITESPACE@[510; 511) " "
200 COMMENT@[511; 572) 200 COMMENT@[511; 572) "//~ ERROR: expected e ..."
201 WHITESPACE@[572; 573) 201 WHITESPACE@[572; 573) "\n"
202 R_CURLY@[573; 574) 202 R_CURLY@[573; 574) "}"
203 WHITESPACE@[574; 575) 203 WHITESPACE@[574; 575) "\n"
diff --git a/crates/ra_syntax/tests/data/parser/err/0026_imp_recovery.txt b/crates/ra_syntax/tests/data/parser/err/0026_imp_recovery.txt
index 9b5fadcf7..cfd06c9c9 100644
--- a/crates/ra_syntax/tests/data/parser/err/0026_imp_recovery.txt
+++ b/crates/ra_syntax/tests/data/parser/err/0026_imp_recovery.txt
@@ -1,47 +1,49 @@
1SOURCE_FILE@[0; 38) 1SOURCE_FILE@[0; 38)
2 IMPL_BLOCK@[0; 14) 2 IMPL_BLOCK@[0; 14)
3 IMPL_KW@[0; 4) 3 IMPL_KW@[0; 4) "impl"
4 TYPE_PARAM_LIST@[4; 14) 4 TYPE_PARAM_LIST@[4; 14)
5 L_ANGLE@[4; 5) 5 L_ANGLE@[4; 5) "<"
6 TYPE_PARAM@[5; 13) 6 TYPE_PARAM@[5; 13)
7 NAME@[5; 6) 7 NAME@[5; 6)
8 IDENT@[5; 6) "T" 8 IDENT@[5; 6) "T"
9 COLON@[6; 7) 9 COLON@[6; 7) ":"
10 WHITESPACE@[7; 8) 10 WHITESPACE@[7; 8) " "
11 PATH_TYPE@[8; 13) 11 TYPE_BOUND_LIST@[8; 13)
12 PATH@[8; 13) 12 TYPE_BOUND@[8; 13)
13 PATH_SEGMENT@[8; 13) 13 PATH_TYPE@[8; 13)
14 NAME_REF@[8; 13) 14 PATH@[8; 13)
15 IDENT@[8; 13) "Clone" 15 PATH_SEGMENT@[8; 13)
16 R_ANGLE@[13; 14) 16 NAME_REF@[8; 13)
17 IDENT@[8; 13) "Clone"
18 R_ANGLE@[13; 14) ">"
17 err: `expected trait or type` 19 err: `expected trait or type`
18 err: `expected `{`` 20 err: `expected `{``
19 WHITESPACE@[14; 15) 21 WHITESPACE@[14; 15) "\n"
20 IMPL_BLOCK@[15; 37) 22 IMPL_BLOCK@[15; 37)
21 IMPL_KW@[15; 19) 23 IMPL_KW@[15; 19) "impl"
22 TYPE_PARAM_LIST@[19; 22) 24 TYPE_PARAM_LIST@[19; 22)
23 L_ANGLE@[19; 20) 25 L_ANGLE@[19; 20) "<"
24 TYPE_PARAM@[20; 21) 26 TYPE_PARAM@[20; 21)
25 NAME@[20; 21) 27 NAME@[20; 21)
26 IDENT@[20; 21) "T" 28 IDENT@[20; 21) "T"
27 R_ANGLE@[21; 22) 29 R_ANGLE@[21; 22) ">"
28 WHITESPACE@[22; 23) 30 WHITESPACE@[22; 23) " "
29 PATH_TYPE@[23; 34) 31 PATH_TYPE@[23; 34)
30 PATH@[23; 34) 32 PATH@[23; 34)
31 PATH_SEGMENT@[23; 34) 33 PATH_SEGMENT@[23; 34)
32 NAME_REF@[23; 31) 34 NAME_REF@[23; 31)
33 IDENT@[23; 31) "OnceCell" 35 IDENT@[23; 31) "OnceCell"
34 TYPE_ARG_LIST@[31; 34) 36 TYPE_ARG_LIST@[31; 34)
35 L_ANGLE@[31; 32) 37 L_ANGLE@[31; 32) "<"
36 TYPE_ARG@[32; 33) 38 TYPE_ARG@[32; 33)
37 PATH_TYPE@[32; 33) 39 PATH_TYPE@[32; 33)
38 PATH@[32; 33) 40 PATH@[32; 33)
39 PATH_SEGMENT@[32; 33) 41 PATH_SEGMENT@[32; 33)
40 NAME_REF@[32; 33) 42 NAME_REF@[32; 33)
41 IDENT@[32; 33) "T" 43 IDENT@[32; 33) "T"
42 R_ANGLE@[33; 34) 44 R_ANGLE@[33; 34) ">"
43 WHITESPACE@[34; 35) 45 WHITESPACE@[34; 35) " "
44 ITEM_LIST@[35; 37) 46 ITEM_LIST@[35; 37)
45 L_CURLY@[35; 36) 47 L_CURLY@[35; 36) "{"
46 R_CURLY@[36; 37) 48 R_CURLY@[36; 37) "}"
47 WHITESPACE@[37; 38) 49 WHITESPACE@[37; 38) "\n"
diff --git a/crates/ra_syntax/tests/data/parser/err/0027_incomplere_where_for.txt b/crates/ra_syntax/tests/data/parser/err/0027_incomplere_where_for.txt
index 8a2a73b9b..c87c2c936 100644
--- a/crates/ra_syntax/tests/data/parser/err/0027_incomplere_where_for.txt
+++ b/crates/ra_syntax/tests/data/parser/err/0027_incomplere_where_for.txt
@@ -1,28 +1,28 @@
1SOURCE_FILE@[0; 30) 1SOURCE_FILE@[0; 30)
2 FN_DEF@[0; 29) 2 FN_DEF@[0; 29)
3 FN_KW@[0; 2) 3 FN_KW@[0; 2) "fn"
4 WHITESPACE@[2; 3) 4 WHITESPACE@[2; 3) " "
5 NAME@[3; 6) 5 NAME@[3; 6)
6 IDENT@[3; 6) "foo" 6 IDENT@[3; 6) "foo"
7 PARAM_LIST@[6; 8) 7 PARAM_LIST@[6; 8)
8 L_PAREN@[6; 7) 8 L_PAREN@[6; 7) "("
9 R_PAREN@[7; 8) 9 R_PAREN@[7; 8) ")"
10 WHITESPACE@[8; 13) 10 WHITESPACE@[8; 13) "\n "
11 WHERE_CLAUSE@[13; 26) 11 WHERE_CLAUSE@[13; 26)
12 WHERE_KW@[13; 18) 12 WHERE_KW@[13; 18) "where"
13 WHITESPACE@[18; 19) 13 WHITESPACE@[18; 19) " "
14 WHERE_PRED@[19; 26) 14 WHERE_PRED@[19; 26)
15 FOR_TYPE@[19; 26) 15 FOR_TYPE@[19; 26)
16 FOR_KW@[19; 22) 16 FOR_KW@[19; 22) "for"
17 TYPE_PARAM_LIST@[22; 26) 17 TYPE_PARAM_LIST@[22; 26)
18 L_ANGLE@[22; 23) 18 L_ANGLE@[22; 23) "<"
19 LIFETIME_PARAM@[23; 25) 19 LIFETIME_PARAM@[23; 25)
20 LIFETIME@[23; 25) "'a" 20 LIFETIME@[23; 25) "\'a"
21 R_ANGLE@[25; 26) 21 R_ANGLE@[25; 26) ">"
22 err: `expected a path` 22 err: `expected a path`
23 err: `expected colon` 23 err: `expected colon`
24 WHITESPACE@[26; 27) 24 WHITESPACE@[26; 27) "\n"
25 BLOCK@[27; 29) 25 BLOCK@[27; 29)
26 L_CURLY@[27; 28) 26 L_CURLY@[27; 28) "{"
27 R_CURLY@[28; 29) 27 R_CURLY@[28; 29) "}"
28 WHITESPACE@[29; 30) 28 WHITESPACE@[29; 30) "\n"
diff --git a/crates/ra_syntax/tests/data/parser/err/0028_macro_2.0.txt b/crates/ra_syntax/tests/data/parser/err/0028_macro_2.0.txt
index 181ccfa25..97ec4a5ab 100644
--- a/crates/ra_syntax/tests/data/parser/err/0028_macro_2.0.txt
+++ b/crates/ra_syntax/tests/data/parser/err/0028_macro_2.0.txt
@@ -5,80 +5,80 @@ SOURCE_FILE@[0; 349)
5 NAME_REF@[0; 5) 5 NAME_REF@[0; 5)
6 IDENT@[0; 5) "macro" 6 IDENT@[0; 5) "macro"
7 err: `expected EXCL` 7 err: `expected EXCL`
8 WHITESPACE@[5; 6) 8 WHITESPACE@[5; 6) " "
9 NAME@[6; 21) 9 NAME@[6; 21)
10 IDENT@[6; 21) "parse_use_trees" 10 IDENT@[6; 21) "parse_use_trees"
11 TOKEN_TREE@[21; 41) 11 TOKEN_TREE@[21; 41)
12 L_PAREN@[21; 22) 12 L_PAREN@[21; 22) "("
13 DOLLAR@[22; 23) 13 DOLLAR@[22; 23) "$"
14 TOKEN_TREE@[23; 32) 14 TOKEN_TREE@[23; 32)
15 L_PAREN@[23; 24) 15 L_PAREN@[23; 24) "("
16 DOLLAR@[24; 25) 16 DOLLAR@[24; 25) "$"
17 IDENT@[25; 26) "s" 17 IDENT@[25; 26) "s"
18 COLON@[26; 27) 18 COLON@[26; 27) ":"
19 IDENT@[27; 31) "expr" 19 IDENT@[27; 31) "expr"
20 R_PAREN@[31; 32) 20 R_PAREN@[31; 32) ")"
21 COMMA@[32; 33) 21 COMMA@[32; 33) ","
22 STAR@[33; 34) 22 STAR@[33; 34) "*"
23 WHITESPACE@[34; 35) 23 WHITESPACE@[34; 35) " "
24 DOLLAR@[35; 36) 24 DOLLAR@[35; 36) "$"
25 TOKEN_TREE@[36; 39) 25 TOKEN_TREE@[36; 39)
26 L_PAREN@[36; 37) 26 L_PAREN@[36; 37) "("
27 COMMA@[37; 38) 27 COMMA@[37; 38) ","
28 R_PAREN@[38; 39) 28 R_PAREN@[38; 39) ")"
29 STAR@[39; 40) 29 STAR@[39; 40) "*"
30 R_PAREN@[40; 41) 30 R_PAREN@[40; 41) ")"
31 err: `expected SEMI` 31 err: `expected SEMI`
32 WHITESPACE@[41; 42) 32 WHITESPACE@[41; 42) " "
33 err: `expected an item` 33 err: `expected an item`
34 ERROR@[42; 93) 34 ERROR@[42; 93)
35 L_CURLY@[42; 43) 35 L_CURLY@[42; 43) "{"
36 WHITESPACE@[43; 48) 36 WHITESPACE@[43; 48) "\n "
37 MACRO_CALL@[48; 91) 37 MACRO_CALL@[48; 91)
38 PATH@[48; 51) 38 PATH@[48; 51)
39 PATH_SEGMENT@[48; 51) 39 PATH_SEGMENT@[48; 51)
40 NAME_REF@[48; 51) 40 NAME_REF@[48; 51)
41 IDENT@[48; 51) "vec" 41 IDENT@[48; 51) "vec"
42 EXCL@[51; 52) 42 EXCL@[51; 52) "!"
43 TOKEN_TREE@[52; 91) 43 TOKEN_TREE@[52; 91)
44 L_BRACK@[52; 53) 44 L_BRACK@[52; 53) "["
45 WHITESPACE@[53; 62) 45 WHITESPACE@[53; 62) "\n "
46 DOLLAR@[62; 63) 46 DOLLAR@[62; 63) "$"
47 TOKEN_TREE@[63; 84) 47 TOKEN_TREE@[63; 84)
48 L_PAREN@[63; 64) 48 L_PAREN@[63; 64) "("
49 IDENT@[64; 78) "parse_use_tree" 49 IDENT@[64; 78) "parse_use_tree"
50 TOKEN_TREE@[78; 82) 50 TOKEN_TREE@[78; 82)
51 L_PAREN@[78; 79) 51 L_PAREN@[78; 79) "("
52 DOLLAR@[79; 80) 52 DOLLAR@[79; 80) "$"
53 IDENT@[80; 81) "s" 53 IDENT@[80; 81) "s"
54 R_PAREN@[81; 82) 54 R_PAREN@[81; 82) ")"
55 COMMA@[82; 83) 55 COMMA@[82; 83) ","
56 R_PAREN@[83; 84) 56 R_PAREN@[83; 84) ")"
57 STAR@[84; 85) 57 STAR@[84; 85) "*"
58 WHITESPACE@[85; 90) 58 WHITESPACE@[85; 90) "\n "
59 R_BRACK@[90; 91) 59 R_BRACK@[90; 91) "]"
60 WHITESPACE@[91; 92) 60 WHITESPACE@[91; 92) "\n"
61 R_CURLY@[92; 93) 61 R_CURLY@[92; 93) "}"
62 WHITESPACE@[93; 95) 62 WHITESPACE@[93; 95) "\n\n"
63 FN_DEF@[95; 348) 63 FN_DEF@[95; 348)
64 ATTR@[95; 102) 64 ATTR@[95; 102)
65 POUND@[95; 96) 65 POUND@[95; 96) "#"
66 TOKEN_TREE@[96; 102) 66 TOKEN_TREE@[96; 102)
67 L_BRACK@[96; 97) 67 L_BRACK@[96; 97) "["
68 IDENT@[97; 101) "test" 68 IDENT@[97; 101) "test"
69 R_BRACK@[101; 102) 69 R_BRACK@[101; 102) "]"
70 WHITESPACE@[102; 103) 70 WHITESPACE@[102; 103) "\n"
71 FN_KW@[103; 105) 71 FN_KW@[103; 105) "fn"
72 WHITESPACE@[105; 106) 72 WHITESPACE@[105; 106) " "
73 NAME@[106; 125) 73 NAME@[106; 125)
74 IDENT@[106; 125) "test_use_tree_merge" 74 IDENT@[106; 125) "test_use_tree_merge"
75 PARAM_LIST@[125; 127) 75 PARAM_LIST@[125; 127)
76 L_PAREN@[125; 126) 76 L_PAREN@[125; 126) "("
77 R_PAREN@[126; 127) 77 R_PAREN@[126; 127) ")"
78 WHITESPACE@[127; 128) 78 WHITESPACE@[127; 128) " "
79 BLOCK@[128; 348) 79 BLOCK@[128; 348)
80 L_CURLY@[128; 129) 80 L_CURLY@[128; 129) "{"
81 WHITESPACE@[129; 134) 81 WHITESPACE@[129; 134) "\n "
82 EXPR_STMT@[134; 139) 82 EXPR_STMT@[134; 139)
83 PATH_EXPR@[134; 139) 83 PATH_EXPR@[134; 139)
84 PATH@[134; 139) 84 PATH@[134; 139)
@@ -86,7 +86,7 @@ SOURCE_FILE@[0; 349)
86 NAME_REF@[134; 139) 86 NAME_REF@[134; 139)
87 IDENT@[134; 139) "macro" 87 IDENT@[134; 139) "macro"
88 err: `expected SEMI` 88 err: `expected SEMI`
89 WHITESPACE@[139; 140) 89 WHITESPACE@[139; 140) " "
90 EXPR_STMT@[140; 154) 90 EXPR_STMT@[140; 154)
91 CALL_EXPR@[140; 154) 91 CALL_EXPR@[140; 154)
92 PATH_EXPR@[140; 150) 92 PATH_EXPR@[140; 150)
@@ -95,15 +95,15 @@ SOURCE_FILE@[0; 349)
95 NAME_REF@[140; 150) 95 NAME_REF@[140; 150)
96 IDENT@[140; 150) "test_merge" 96 IDENT@[140; 150) "test_merge"
97 ARG_LIST@[150; 154) 97 ARG_LIST@[150; 154)
98 L_PAREN@[150; 151) 98 L_PAREN@[150; 151) "("
99 ARRAY_EXPR@[151; 154) 99 ARRAY_EXPR@[151; 154)
100 L_BRACK@[151; 152) 100 L_BRACK@[151; 152) "["
101 err: `expected expression` 101 err: `expected expression`
102 ERROR@[152; 153) 102 ERROR@[152; 153)
103 DOLLAR@[152; 153) 103 DOLLAR@[152; 153) "$"
104 err: `expected COMMA` 104 err: `expected COMMA`
105 PAREN_EXPR@[153; 154) 105 PAREN_EXPR@[153; 154)
106 L_PAREN@[153; 154) 106 L_PAREN@[153; 154) "("
107 err: `expected expression` 107 err: `expected expression`
108 err: `expected R_PAREN` 108 err: `expected R_PAREN`
109 err: `expected COMMA` 109 err: `expected COMMA`
@@ -114,7 +114,7 @@ SOURCE_FILE@[0; 349)
114 err: `expected expression` 114 err: `expected expression`
115 EXPR_STMT@[154; 155) 115 EXPR_STMT@[154; 155)
116 ERROR@[154; 155) 116 ERROR@[154; 155)
117 DOLLAR@[154; 155) 117 DOLLAR@[154; 155) "$"
118 err: `expected SEMI` 118 err: `expected SEMI`
119 EXPR_STMT@[155; 160) 119 EXPR_STMT@[155; 160)
120 PATH_EXPR@[155; 160) 120 PATH_EXPR@[155; 160)
@@ -126,7 +126,7 @@ SOURCE_FILE@[0; 349)
126 err: `expected expression` 126 err: `expected expression`
127 EXPR_STMT@[160; 161) 127 EXPR_STMT@[160; 161)
128 ERROR@[160; 161) 128 ERROR@[160; 161)
129 COLON@[160; 161) 129 COLON@[160; 161) ":"
130 err: `expected SEMI` 130 err: `expected SEMI`
131 EXPR_STMT@[161; 165) 131 EXPR_STMT@[161; 165)
132 PATH_EXPR@[161; 165) 132 PATH_EXPR@[161; 165)
@@ -138,59 +138,59 @@ SOURCE_FILE@[0; 349)
138 err: `expected expression` 138 err: `expected expression`
139 EXPR_STMT@[165; 166) 139 EXPR_STMT@[165; 166)
140 ERROR@[165; 166) 140 ERROR@[165; 166)
141 R_PAREN@[165; 166) 141 R_PAREN@[165; 166) ")"
142 err: `expected SEMI` 142 err: `expected SEMI`
143 err: `expected expression` 143 err: `expected expression`
144 EXPR_STMT@[166; 167) 144 EXPR_STMT@[166; 167)
145 ERROR@[166; 167) 145 ERROR@[166; 167)
146 COMMA@[166; 167) 146 COMMA@[166; 167) ","
147 err: `expected SEMI` 147 err: `expected SEMI`
148 EXPR_STMT@[167; 170) 148 EXPR_STMT@[167; 170)
149 PREFIX_EXPR@[167; 170) 149 PREFIX_EXPR@[167; 170)
150 STAR@[167; 168) 150 STAR@[167; 168) "*"
151 WHITESPACE@[168; 169) 151 WHITESPACE@[168; 169) " "
152 err: `expected expression` 152 err: `expected expression`
153 ERROR@[169; 170) 153 ERROR@[169; 170)
154 DOLLAR@[169; 170) 154 DOLLAR@[169; 170) "$"
155 err: `expected SEMI` 155 err: `expected SEMI`
156 EXPR_STMT@[170; 171) 156 EXPR_STMT@[170; 171)
157 PAREN_EXPR@[170; 171) 157 PAREN_EXPR@[170; 171)
158 L_PAREN@[170; 171) 158 L_PAREN@[170; 171) "("
159 err: `expected expression` 159 err: `expected expression`
160 err: `expected R_PAREN` 160 err: `expected R_PAREN`
161 err: `expected SEMI` 161 err: `expected SEMI`
162 err: `expected expression` 162 err: `expected expression`
163 EXPR_STMT@[171; 172) 163 EXPR_STMT@[171; 172)
164 ERROR@[171; 172) 164 ERROR@[171; 172)
165 COMMA@[171; 172) 165 COMMA@[171; 172) ","
166 err: `expected SEMI` 166 err: `expected SEMI`
167 err: `expected expression` 167 err: `expected expression`
168 EXPR_STMT@[172; 173) 168 EXPR_STMT@[172; 173)
169 ERROR@[172; 173) 169 ERROR@[172; 173)
170 R_PAREN@[172; 173) 170 R_PAREN@[172; 173) ")"
171 err: `expected SEMI` 171 err: `expected SEMI`
172 EXPR_STMT@[173; 175) 172 EXPR_STMT@[173; 175)
173 PREFIX_EXPR@[173; 175) 173 PREFIX_EXPR@[173; 175)
174 STAR@[173; 174) 174 STAR@[173; 174) "*"
175 err: `expected expression` 175 err: `expected expression`
176 ERROR@[174; 175) 176 ERROR@[174; 175)
177 R_BRACK@[174; 175) 177 R_BRACK@[174; 175) "]"
178 err: `expected SEMI` 178 err: `expected SEMI`
179 err: `expected expression` 179 err: `expected expression`
180 EXPR_STMT@[175; 176) 180 EXPR_STMT@[175; 176)
181 ERROR@[175; 176) 181 ERROR@[175; 176)
182 COMMA@[175; 176) 182 COMMA@[175; 176) ","
183 err: `expected SEMI` 183 err: `expected SEMI`
184 WHITESPACE@[176; 177) 184 WHITESPACE@[176; 177) " "
185 EXPR_STMT@[177; 180) 185 EXPR_STMT@[177; 180)
186 ARRAY_EXPR@[177; 180) 186 ARRAY_EXPR@[177; 180)
187 L_BRACK@[177; 178) 187 L_BRACK@[177; 178) "["
188 err: `expected expression` 188 err: `expected expression`
189 ERROR@[178; 179) 189 ERROR@[178; 179)
190 DOLLAR@[178; 179) 190 DOLLAR@[178; 179) "$"
191 err: `expected COMMA` 191 err: `expected COMMA`
192 PAREN_EXPR@[179; 180) 192 PAREN_EXPR@[179; 180)
193 L_PAREN@[179; 180) 193 L_PAREN@[179; 180) "("
194 err: `expected expression` 194 err: `expected expression`
195 err: `expected R_PAREN` 195 err: `expected R_PAREN`
196 err: `expected COMMA` 196 err: `expected COMMA`
@@ -200,7 +200,7 @@ SOURCE_FILE@[0; 349)
200 err: `expected expression` 200 err: `expected expression`
201 EXPR_STMT@[180; 181) 201 EXPR_STMT@[180; 181)
202 ERROR@[180; 181) 202 ERROR@[180; 181)
203 DOLLAR@[180; 181) 203 DOLLAR@[180; 181) "$"
204 err: `expected SEMI` 204 err: `expected SEMI`
205 EXPR_STMT@[181; 187) 205 EXPR_STMT@[181; 187)
206 PATH_EXPR@[181; 187) 206 PATH_EXPR@[181; 187)
@@ -212,7 +212,7 @@ SOURCE_FILE@[0; 349)
212 err: `expected expression` 212 err: `expected expression`
213 EXPR_STMT@[187; 188) 213 EXPR_STMT@[187; 188)
214 ERROR@[187; 188) 214 ERROR@[187; 188)
215 COLON@[187; 188) 215 COLON@[187; 188) ":"
216 err: `expected SEMI` 216 err: `expected SEMI`
217 EXPR_STMT@[188; 192) 217 EXPR_STMT@[188; 192)
218 PATH_EXPR@[188; 192) 218 PATH_EXPR@[188; 192)
@@ -224,102 +224,102 @@ SOURCE_FILE@[0; 349)
224 err: `expected expression` 224 err: `expected expression`
225 EXPR_STMT@[192; 193) 225 EXPR_STMT@[192; 193)
226 ERROR@[192; 193) 226 ERROR@[192; 193)
227 R_PAREN@[192; 193) 227 R_PAREN@[192; 193) ")"
228 err: `expected SEMI` 228 err: `expected SEMI`
229 err: `expected expression` 229 err: `expected expression`
230 EXPR_STMT@[193; 194) 230 EXPR_STMT@[193; 194)
231 ERROR@[193; 194) 231 ERROR@[193; 194)
232 COMMA@[193; 194) 232 COMMA@[193; 194) ","
233 err: `expected SEMI` 233 err: `expected SEMI`
234 EXPR_STMT@[194; 197) 234 EXPR_STMT@[194; 197)
235 PREFIX_EXPR@[194; 197) 235 PREFIX_EXPR@[194; 197)
236 STAR@[194; 195) 236 STAR@[194; 195) "*"
237 WHITESPACE@[195; 196) 237 WHITESPACE@[195; 196) " "
238 err: `expected expression` 238 err: `expected expression`
239 ERROR@[196; 197) 239 ERROR@[196; 197)
240 DOLLAR@[196; 197) 240 DOLLAR@[196; 197) "$"
241 err: `expected SEMI` 241 err: `expected SEMI`
242 EXPR_STMT@[197; 198) 242 EXPR_STMT@[197; 198)
243 PAREN_EXPR@[197; 198) 243 PAREN_EXPR@[197; 198)
244 L_PAREN@[197; 198) 244 L_PAREN@[197; 198) "("
245 err: `expected expression` 245 err: `expected expression`
246 err: `expected R_PAREN` 246 err: `expected R_PAREN`
247 err: `expected SEMI` 247 err: `expected SEMI`
248 err: `expected expression` 248 err: `expected expression`
249 EXPR_STMT@[198; 199) 249 EXPR_STMT@[198; 199)
250 ERROR@[198; 199) 250 ERROR@[198; 199)
251 COMMA@[198; 199) 251 COMMA@[198; 199) ","
252 err: `expected SEMI` 252 err: `expected SEMI`
253 err: `expected expression` 253 err: `expected expression`
254 EXPR_STMT@[199; 200) 254 EXPR_STMT@[199; 200)
255 ERROR@[199; 200) 255 ERROR@[199; 200)
256 R_PAREN@[199; 200) 256 R_PAREN@[199; 200) ")"
257 err: `expected SEMI` 257 err: `expected SEMI`
258 EXPR_STMT@[200; 202) 258 EXPR_STMT@[200; 202)
259 PREFIX_EXPR@[200; 202) 259 PREFIX_EXPR@[200; 202)
260 STAR@[200; 201) 260 STAR@[200; 201) "*"
261 err: `expected expression` 261 err: `expected expression`
262 ERROR@[201; 202) 262 ERROR@[201; 202)
263 R_BRACK@[201; 202) 263 R_BRACK@[201; 202) "]"
264 err: `expected SEMI` 264 err: `expected SEMI`
265 err: `expected expression` 265 err: `expected expression`
266 EXPR_STMT@[202; 203) 266 EXPR_STMT@[202; 203)
267 ERROR@[202; 203) 267 ERROR@[202; 203)
268 R_PAREN@[202; 203) 268 R_PAREN@[202; 203) ")"
269 err: `expected SEMI` 269 err: `expected SEMI`
270 WHITESPACE@[203; 204) 270 WHITESPACE@[203; 204) " "
271 BLOCK_EXPR@[204; 346) 271 BLOCK_EXPR@[204; 346)
272 BLOCK@[204; 346) 272 BLOCK@[204; 346)
273 L_CURLY@[204; 205) 273 L_CURLY@[204; 205) "{"
274 WHITESPACE@[205; 214) 274 WHITESPACE@[205; 214) "\n "
275 EXPR_STMT@[214; 340) 275 EXPR_STMT@[214; 340)
276 MACRO_CALL@[214; 339) 276 MACRO_CALL@[214; 339)
277 PATH@[214; 223) 277 PATH@[214; 223)
278 PATH_SEGMENT@[214; 223) 278 PATH_SEGMENT@[214; 223)
279 NAME_REF@[214; 223) 279 NAME_REF@[214; 223)
280 IDENT@[214; 223) "assert_eq" 280 IDENT@[214; 223) "assert_eq"
281 EXCL@[223; 224) 281 EXCL@[223; 224) "!"
282 TOKEN_TREE@[224; 339) 282 TOKEN_TREE@[224; 339)
283 L_PAREN@[224; 225) 283 L_PAREN@[224; 225) "("
284 WHITESPACE@[225; 238) 284 WHITESPACE@[225; 238) "\n "
285 IDENT@[238; 253) "merge_use_trees" 285 IDENT@[238; 253) "merge_use_trees"
286 TOKEN_TREE@[253; 284) 286 TOKEN_TREE@[253; 284)
287 L_PAREN@[253; 254) 287 L_PAREN@[253; 254) "("
288 IDENT@[254; 269) "parse_use_trees" 288 IDENT@[254; 269) "parse_use_trees"
289 EXCL@[269; 270) 289 EXCL@[269; 270) "!"
290 TOKEN_TREE@[270; 283) 290 TOKEN_TREE@[270; 283)
291 L_PAREN@[270; 271) 291 L_PAREN@[270; 271) "("
292 DOLLAR@[271; 272) 292 DOLLAR@[271; 272) "$"
293 TOKEN_TREE@[272; 281) 293 TOKEN_TREE@[272; 281)
294 L_PAREN@[272; 273) 294 L_PAREN@[272; 273) "("
295 DOLLAR@[273; 274) 295 DOLLAR@[273; 274) "$"
296 IDENT@[274; 279) "input" 296 IDENT@[274; 279) "input"
297 COMMA@[279; 280) 297 COMMA@[279; 280) ","
298 R_PAREN@[280; 281) 298 R_PAREN@[280; 281) ")"
299 STAR@[281; 282) 299 STAR@[281; 282) "*"
300 R_PAREN@[282; 283) 300 R_PAREN@[282; 283) ")"
301 R_PAREN@[283; 284) 301 R_PAREN@[283; 284) ")"
302 COMMA@[284; 285) 302 COMMA@[284; 285) ","
303 WHITESPACE@[285; 298) 303 WHITESPACE@[285; 298) "\n "
304 IDENT@[298; 313) "parse_use_trees" 304 IDENT@[298; 313) "parse_use_trees"
305 EXCL@[313; 314) 305 EXCL@[313; 314) "!"
306 TOKEN_TREE@[314; 328) 306 TOKEN_TREE@[314; 328)
307 L_PAREN@[314; 315) 307 L_PAREN@[314; 315) "("
308 DOLLAR@[315; 316) 308 DOLLAR@[315; 316) "$"
309 TOKEN_TREE@[316; 326) 309 TOKEN_TREE@[316; 326)
310 L_PAREN@[316; 317) 310 L_PAREN@[316; 317) "("
311 DOLLAR@[317; 318) 311 DOLLAR@[317; 318) "$"
312 IDENT@[318; 324) "output" 312 IDENT@[318; 324) "output"
313 COMMA@[324; 325) 313 COMMA@[324; 325) ","
314 R_PAREN@[325; 326) 314 R_PAREN@[325; 326) ")"
315 STAR@[326; 327) 315 STAR@[326; 327) "*"
316 R_PAREN@[327; 328) 316 R_PAREN@[327; 328) ")"
317 COMMA@[328; 329) 317 COMMA@[328; 329) ","
318 WHITESPACE@[329; 338) 318 WHITESPACE@[329; 338) "\n "
319 R_PAREN@[338; 339) 319 R_PAREN@[338; 339) ")"
320 SEMI@[339; 340) 320 SEMI@[339; 340) ";"
321 WHITESPACE@[340; 345) 321 WHITESPACE@[340; 345) "\n "
322 R_CURLY@[345; 346) 322 R_CURLY@[345; 346) "}"
323 WHITESPACE@[346; 347) 323 WHITESPACE@[346; 347) "\n"
324 R_CURLY@[347; 348) 324 R_CURLY@[347; 348) "}"
325 WHITESPACE@[348; 349) 325 WHITESPACE@[348; 349) "\n"
diff --git a/crates/ra_syntax/tests/data/parser/err/0029_field_completion.txt b/crates/ra_syntax/tests/data/parser/err/0029_field_completion.txt
index fd2a3f37b..27a0884f9 100644
--- a/crates/ra_syntax/tests/data/parser/err/0029_field_completion.txt
+++ b/crates/ra_syntax/tests/data/parser/err/0029_field_completion.txt
@@ -1,35 +1,35 @@
1SOURCE_FILE@[0; 24) 1SOURCE_FILE@[0; 24)
2 FN_DEF@[0; 23) 2 FN_DEF@[0; 23)
3 FN_KW@[0; 2) 3 FN_KW@[0; 2) "fn"
4 WHITESPACE@[2; 3) 4 WHITESPACE@[2; 3) " "
5 NAME@[3; 6) 5 NAME@[3; 6)
6 IDENT@[3; 6) "foo" 6 IDENT@[3; 6) "foo"
7 PARAM_LIST@[6; 12) 7 PARAM_LIST@[6; 12)
8 L_PAREN@[6; 7) 8 L_PAREN@[6; 7) "("
9 PARAM@[7; 11) 9 PARAM@[7; 11)
10 BIND_PAT@[7; 8) 10 BIND_PAT@[7; 8)
11 NAME@[7; 8) 11 NAME@[7; 8)
12 IDENT@[7; 8) "a" 12 IDENT@[7; 8) "a"
13 COLON@[8; 9) 13 COLON@[8; 9) ":"
14 WHITESPACE@[9; 10) 14 WHITESPACE@[9; 10) " "
15 PATH_TYPE@[10; 11) 15 PATH_TYPE@[10; 11)
16 PATH@[10; 11) 16 PATH@[10; 11)
17 PATH_SEGMENT@[10; 11) 17 PATH_SEGMENT@[10; 11)
18 NAME_REF@[10; 11) 18 NAME_REF@[10; 11)
19 IDENT@[10; 11) "A" 19 IDENT@[10; 11) "A"
20 R_PAREN@[11; 12) 20 R_PAREN@[11; 12) ")"
21 WHITESPACE@[12; 13) 21 WHITESPACE@[12; 13) " "
22 BLOCK@[13; 23) 22 BLOCK@[13; 23)
23 L_CURLY@[13; 14) 23 L_CURLY@[13; 14) "{"
24 WHITESPACE@[14; 19) 24 WHITESPACE@[14; 19) "\n "
25 FIELD_EXPR@[19; 21) 25 FIELD_EXPR@[19; 21)
26 PATH_EXPR@[19; 20) 26 PATH_EXPR@[19; 20)
27 PATH@[19; 20) 27 PATH@[19; 20)
28 PATH_SEGMENT@[19; 20) 28 PATH_SEGMENT@[19; 20)
29 NAME_REF@[19; 20) 29 NAME_REF@[19; 20)
30 IDENT@[19; 20) "a" 30 IDENT@[19; 20) "a"
31 DOT@[20; 21) 31 DOT@[20; 21) "."
32 err: `expected field name or number` 32 err: `expected field name or number`
33 WHITESPACE@[21; 22) 33 WHITESPACE@[21; 22) "\n"
34 R_CURLY@[22; 23) 34 R_CURLY@[22; 23) "}"
35 WHITESPACE@[23; 24) 35 WHITESPACE@[23; 24) "\n"
diff --git a/crates/ra_syntax/tests/data/parser/err/0030_string_suffixes.txt b/crates/ra_syntax/tests/data/parser/err/0030_string_suffixes.txt
index dc10e9ee7..61a28134a 100644
--- a/crates/ra_syntax/tests/data/parser/err/0030_string_suffixes.txt
+++ b/crates/ra_syntax/tests/data/parser/err/0030_string_suffixes.txt
@@ -1,26 +1,26 @@
1SOURCE_FILE@[0; 112) 1SOURCE_FILE@[0; 112)
2 FN_DEF@[0; 111) 2 FN_DEF@[0; 111)
3 FN_KW@[0; 2) 3 FN_KW@[0; 2) "fn"
4 WHITESPACE@[2; 3) 4 WHITESPACE@[2; 3) " "
5 NAME@[3; 7) 5 NAME@[3; 7)
6 IDENT@[3; 7) "main" 6 IDENT@[3; 7) "main"
7 PARAM_LIST@[7; 9) 7 PARAM_LIST@[7; 9)
8 L_PAREN@[7; 8) 8 L_PAREN@[7; 8) "("
9 R_PAREN@[8; 9) 9 R_PAREN@[8; 9) ")"
10 WHITESPACE@[9; 10) 10 WHITESPACE@[9; 10) " "
11 BLOCK@[10; 111) 11 BLOCK@[10; 111)
12 L_CURLY@[10; 11) 12 L_CURLY@[10; 11) "{"
13 WHITESPACE@[11; 16) 13 WHITESPACE@[11; 16) "\n "
14 LET_STMT@[16; 27) 14 LET_STMT@[16; 27)
15 LET_KW@[16; 19) 15 LET_KW@[16; 19) "let"
16 WHITESPACE@[19; 20) 16 WHITESPACE@[19; 20) " "
17 PLACEHOLDER_PAT@[20; 21) 17 PLACEHOLDER_PAT@[20; 21)
18 UNDERSCORE@[20; 21) 18 UNDERSCORE@[20; 21) "_"
19 WHITESPACE@[21; 22) 19 WHITESPACE@[21; 22) " "
20 EQ@[22; 23) 20 EQ@[22; 23) "="
21 WHITESPACE@[23; 24) 21 WHITESPACE@[23; 24) " "
22 LITERAL@[24; 27) 22 LITERAL@[24; 27)
23 CHAR@[24; 27) 23 CHAR@[24; 27) "\'c\'"
24 err: `expected SEMI` 24 err: `expected SEMI`
25 EXPR_STMT@[27; 31) 25 EXPR_STMT@[27; 31)
26 PATH_EXPR@[27; 30) 26 PATH_EXPR@[27; 30)
@@ -28,46 +28,46 @@ SOURCE_FILE@[0; 112)
28 PATH_SEGMENT@[27; 30) 28 PATH_SEGMENT@[27; 30)
29 NAME_REF@[27; 30) 29 NAME_REF@[27; 30)
30 IDENT@[27; 30) "u32" 30 IDENT@[27; 30) "u32"
31 SEMI@[30; 31) 31 SEMI@[30; 31) ";"
32 WHITESPACE@[31; 36) 32 WHITESPACE@[31; 36) "\n "
33 LET_STMT@[36; 60) 33 LET_STMT@[36; 60)
34 LET_KW@[36; 39) 34 LET_KW@[36; 39) "let"
35 WHITESPACE@[39; 40) 35 WHITESPACE@[39; 40) " "
36 PLACEHOLDER_PAT@[40; 41) 36 PLACEHOLDER_PAT@[40; 41)
37 UNDERSCORE@[40; 41) 37 UNDERSCORE@[40; 41) "_"
38 WHITESPACE@[41; 42) 38 WHITESPACE@[41; 42) " "
39 EQ@[42; 43) 39 EQ@[42; 43) "="
40 WHITESPACE@[43; 44) 40 WHITESPACE@[43; 44) " "
41 LITERAL@[44; 59) 41 LITERAL@[44; 59)
42 STRING@[44; 59) 42 STRING@[44; 59) "\"string\"invalid"
43 err: `Invalid literal suffix` 43 err: `Invalid literal suffix`
44 SEMI@[59; 60) 44 SEMI@[59; 60) ";"
45 WHITESPACE@[60; 65) 45 WHITESPACE@[60; 65) "\n "
46 LET_STMT@[65; 83) 46 LET_STMT@[65; 83)
47 LET_KW@[65; 68) 47 LET_KW@[65; 68) "let"
48 WHITESPACE@[68; 69) 48 WHITESPACE@[68; 69) " "
49 PLACEHOLDER_PAT@[69; 70) 49 PLACEHOLDER_PAT@[69; 70)
50 UNDERSCORE@[69; 70) 50 UNDERSCORE@[69; 70) "_"
51 WHITESPACE@[70; 71) 51 WHITESPACE@[70; 71) " "
52 EQ@[71; 72) 52 EQ@[71; 72) "="
53 WHITESPACE@[72; 73) 53 WHITESPACE@[72; 73) " "
54 LITERAL@[73; 82) 54 LITERAL@[73; 82)
55 BYTE@[73; 82) 55 BYTE@[73; 82) "b\'b\'_suff"
56 err: `Invalid literal suffix` 56 err: `Invalid literal suffix`
57 SEMI@[82; 83) 57 SEMI@[82; 83) ";"
58 WHITESPACE@[83; 88) 58 WHITESPACE@[83; 88) "\n "
59 LET_STMT@[88; 109) 59 LET_STMT@[88; 109)
60 LET_KW@[88; 91) 60 LET_KW@[88; 91) "let"
61 WHITESPACE@[91; 92) 61 WHITESPACE@[91; 92) " "
62 PLACEHOLDER_PAT@[92; 93) 62 PLACEHOLDER_PAT@[92; 93)
63 UNDERSCORE@[92; 93) 63 UNDERSCORE@[92; 93) "_"
64 WHITESPACE@[93; 94) 64 WHITESPACE@[93; 94) " "
65 EQ@[94; 95) 65 EQ@[94; 95) "="
66 WHITESPACE@[95; 96) 66 WHITESPACE@[95; 96) " "
67 LITERAL@[96; 108) 67 LITERAL@[96; 108)
68 BYTE_STRING@[96; 108) 68 BYTE_STRING@[96; 108) "b\"bs\"invalid"
69 err: `Invalid literal suffix` 69 err: `Invalid literal suffix`
70 SEMI@[108; 109) 70 SEMI@[108; 109) ";"
71 WHITESPACE@[109; 110) 71 WHITESPACE@[109; 110) "\n"
72 R_CURLY@[110; 111) 72 R_CURLY@[110; 111) "}"
73 WHITESPACE@[111; 112) 73 WHITESPACE@[111; 112) "\n"
diff --git a/crates/ra_syntax/tests/data/parser/err/0031_block_inner_attrs.txt b/crates/ra_syntax/tests/data/parser/err/0031_block_inner_attrs.txt
index 086aa79ac..80a973d4d 100644
--- a/crates/ra_syntax/tests/data/parser/err/0031_block_inner_attrs.txt
+++ b/crates/ra_syntax/tests/data/parser/err/0031_block_inner_attrs.txt
@@ -1,114 +1,114 @@
1SOURCE_FILE@[0; 350) 1SOURCE_FILE@[0; 350)
2 FN_DEF@[0; 349) 2 FN_DEF@[0; 349)
3 FN_KW@[0; 2) 3 FN_KW@[0; 2) "fn"
4 WHITESPACE@[2; 3) 4 WHITESPACE@[2; 3) " "
5 NAME@[3; 8) 5 NAME@[3; 8)
6 IDENT@[3; 8) "block" 6 IDENT@[3; 8) "block"
7 PARAM_LIST@[8; 10) 7 PARAM_LIST@[8; 10)
8 L_PAREN@[8; 9) 8 L_PAREN@[8; 9) "("
9 R_PAREN@[9; 10) 9 R_PAREN@[9; 10) ")"
10 WHITESPACE@[10; 11) 10 WHITESPACE@[10; 11) " "
11 BLOCK@[11; 349) 11 BLOCK@[11; 349)
12 L_CURLY@[11; 12) 12 L_CURLY@[11; 12) "{"
13 WHITESPACE@[12; 17) 13 WHITESPACE@[12; 17) "\n "
14 LET_STMT@[17; 129) 14 LET_STMT@[17; 129)
15 LET_KW@[17; 20) 15 LET_KW@[17; 20) "let"
16 WHITESPACE@[20; 21) 16 WHITESPACE@[20; 21) " "
17 BIND_PAT@[21; 26) 17 BIND_PAT@[21; 26)
18 NAME@[21; 26) 18 NAME@[21; 26)
19 IDENT@[21; 26) "inner" 19 IDENT@[21; 26) "inner"
20 WHITESPACE@[26; 27) 20 WHITESPACE@[26; 27) " "
21 EQ@[27; 28) 21 EQ@[27; 28) "="
22 WHITESPACE@[28; 29) 22 WHITESPACE@[28; 29) " "
23 BLOCK_EXPR@[29; 128) 23 BLOCK_EXPR@[29; 128)
24 BLOCK@[29; 128) 24 BLOCK@[29; 128)
25 L_CURLY@[29; 30) 25 L_CURLY@[29; 30) "{"
26 WHITESPACE@[30; 39) 26 WHITESPACE@[30; 39) "\n "
27 err: `A block in this position cannot accept inner attributes` 27 err: `A block in this position cannot accept inner attributes`
28 ATTR@[39; 83) 28 ATTR@[39; 83)
29 POUND@[39; 40) 29 POUND@[39; 40) "#"
30 EXCL@[40; 41) 30 EXCL@[40; 41) "!"
31 TOKEN_TREE@[41; 83) 31 TOKEN_TREE@[41; 83)
32 L_BRACK@[41; 42) 32 L_BRACK@[41; 42) "["
33 IDENT@[42; 45) "doc" 33 IDENT@[42; 45) "doc"
34 TOKEN_TREE@[45; 82) 34 TOKEN_TREE@[45; 82)
35 L_PAREN@[45; 46) 35 L_PAREN@[45; 46) "("
36 STRING@[46; 81) 36 STRING@[46; 81) "\"Inner attributes not ..."
37 R_PAREN@[81; 82) 37 R_PAREN@[81; 82) ")"
38 R_BRACK@[82; 83) 38 R_BRACK@[82; 83) "]"
39 WHITESPACE@[83; 92) 39 WHITESPACE@[83; 92) "\n "
40 COMMENT@[92; 122) 40 COMMENT@[92; 122) "//! Nor are ModuleDoc ..."
41 WHITESPACE@[122; 127) 41 WHITESPACE@[122; 127) "\n "
42 R_CURLY@[127; 128) 42 R_CURLY@[127; 128) "}"
43 SEMI@[128; 129) 43 SEMI@[128; 129) ";"
44 WHITESPACE@[129; 134) 44 WHITESPACE@[129; 134) "\n "
45 EXPR_STMT@[134; 257) 45 EXPR_STMT@[134; 257)
46 IF_EXPR@[134; 257) 46 IF_EXPR@[134; 257)
47 IF_KW@[134; 136) 47 IF_KW@[134; 136) "if"
48 WHITESPACE@[136; 137) 48 WHITESPACE@[136; 137) " "
49 CONDITION@[137; 141) 49 CONDITION@[137; 141)
50 LITERAL@[137; 141) 50 LITERAL@[137; 141)
51 TRUE_KW@[137; 141) 51 TRUE_KW@[137; 141) "true"
52 WHITESPACE@[141; 142) 52 WHITESPACE@[141; 142) " "
53 BLOCK@[142; 257) 53 BLOCK@[142; 257)
54 L_CURLY@[142; 143) 54 L_CURLY@[142; 143) "{"
55 WHITESPACE@[143; 152) 55 WHITESPACE@[143; 152) "\n "
56 err: `A block in this position cannot accept inner attributes` 56 err: `A block in this position cannot accept inner attributes`
57 ATTR@[152; 171) 57 ATTR@[152; 171)
58 POUND@[152; 153) 58 POUND@[152; 153) "#"
59 EXCL@[153; 154) 59 EXCL@[153; 154) "!"
60 TOKEN_TREE@[154; 171) 60 TOKEN_TREE@[154; 171)
61 L_BRACK@[154; 155) 61 L_BRACK@[154; 155) "["
62 IDENT@[155; 158) "doc" 62 IDENT@[155; 158) "doc"
63 TOKEN_TREE@[158; 170) 63 TOKEN_TREE@[158; 170)
64 L_PAREN@[158; 159) 64 L_PAREN@[158; 159) "("
65 STRING@[159; 169) 65 STRING@[159; 169) "\"Nor here\""
66 R_PAREN@[169; 170) 66 R_PAREN@[169; 170) ")"
67 R_BRACK@[170; 171) 67 R_BRACK@[170; 171) "]"
68 WHITESPACE@[171; 180) 68 WHITESPACE@[171; 180) "\n "
69 err: `A block in this position cannot accept inner attributes` 69 err: `A block in this position cannot accept inner attributes`
70 ATTR@[180; 212) 70 ATTR@[180; 212)
71 POUND@[180; 181) 71 POUND@[180; 181) "#"
72 EXCL@[181; 182) 72 EXCL@[181; 182) "!"
73 TOKEN_TREE@[182; 212) 73 TOKEN_TREE@[182; 212)
74 L_BRACK@[182; 183) 74 L_BRACK@[182; 183) "["
75 IDENT@[183; 186) "doc" 75 IDENT@[183; 186) "doc"
76 TOKEN_TREE@[186; 211) 76 TOKEN_TREE@[186; 211)
77 L_PAREN@[186; 187) 77 L_PAREN@[186; 187) "("
78 STRING@[187; 210) 78 STRING@[187; 210) "\"We error on each attr\""
79 R_PAREN@[210; 211) 79 R_PAREN@[210; 211) ")"
80 R_BRACK@[211; 212) 80 R_BRACK@[211; 212) "]"
81 WHITESPACE@[212; 221) 81 WHITESPACE@[212; 221) "\n "
82 COMMENT@[221; 251) 82 COMMENT@[221; 251) "//! Nor are ModuleDoc ..."
83 WHITESPACE@[251; 256) 83 WHITESPACE@[251; 256) "\n "
84 R_CURLY@[256; 257) 84 R_CURLY@[256; 257) "}"
85 WHITESPACE@[257; 262) 85 WHITESPACE@[257; 262) "\n "
86 WHILE_EXPR@[262; 347) 86 WHILE_EXPR@[262; 347)
87 WHILE_KW@[262; 267) 87 WHILE_KW@[262; 267) "while"
88 WHITESPACE@[267; 268) 88 WHITESPACE@[267; 268) " "
89 CONDITION@[268; 272) 89 CONDITION@[268; 272)
90 LITERAL@[268; 272) 90 LITERAL@[268; 272)
91 TRUE_KW@[268; 272) 91 TRUE_KW@[268; 272) "true"
92 WHITESPACE@[272; 273) 92 WHITESPACE@[272; 273) " "
93 BLOCK@[273; 347) 93 BLOCK@[273; 347)
94 L_CURLY@[273; 274) 94 L_CURLY@[273; 274) "{"
95 WHITESPACE@[274; 283) 95 WHITESPACE@[274; 283) "\n "
96 err: `A block in this position cannot accept inner attributes` 96 err: `A block in this position cannot accept inner attributes`
97 ATTR@[283; 302) 97 ATTR@[283; 302)
98 POUND@[283; 284) 98 POUND@[283; 284) "#"
99 EXCL@[284; 285) 99 EXCL@[284; 285) "!"
100 TOKEN_TREE@[285; 302) 100 TOKEN_TREE@[285; 302)
101 L_BRACK@[285; 286) 101 L_BRACK@[285; 286) "["
102 IDENT@[286; 289) "doc" 102 IDENT@[286; 289) "doc"
103 TOKEN_TREE@[289; 301) 103 TOKEN_TREE@[289; 301)
104 L_PAREN@[289; 290) 104 L_PAREN@[289; 290) "("
105 STRING@[290; 300) 105 STRING@[290; 300) "\"Nor here\""
106 R_PAREN@[300; 301) 106 R_PAREN@[300; 301) ")"
107 R_BRACK@[301; 302) 107 R_BRACK@[301; 302) "]"
108 WHITESPACE@[302; 311) 108 WHITESPACE@[302; 311) "\n "
109 COMMENT@[311; 341) 109 COMMENT@[311; 341) "//! Nor are ModuleDoc ..."
110 WHITESPACE@[341; 346) 110 WHITESPACE@[341; 346) "\n "
111 R_CURLY@[346; 347) 111 R_CURLY@[346; 347) "}"
112 WHITESPACE@[347; 348) 112 WHITESPACE@[347; 348) "\n"
113 R_CURLY@[348; 349) 113 R_CURLY@[348; 349) "}"
114 WHITESPACE@[349; 350) 114 WHITESPACE@[349; 350) "\n"
diff --git a/crates/ra_syntax/tests/data/parser/err/0032_match_arms_inner_attrs.txt b/crates/ra_syntax/tests/data/parser/err/0032_match_arms_inner_attrs.txt
index ed5735a63..92e3a1ee8 100644
--- a/crates/ra_syntax/tests/data/parser/err/0032_match_arms_inner_attrs.txt
+++ b/crates/ra_syntax/tests/data/parser/err/0032_match_arms_inner_attrs.txt
@@ -1,48 +1,48 @@
1SOURCE_FILE@[0; 293) 1SOURCE_FILE@[0; 293)
2 FN_DEF@[0; 292) 2 FN_DEF@[0; 292)
3 FN_KW@[0; 2) 3 FN_KW@[0; 2) "fn"
4 WHITESPACE@[2; 3) 4 WHITESPACE@[2; 3) " "
5 NAME@[3; 6) 5 NAME@[3; 6)
6 IDENT@[3; 6) "foo" 6 IDENT@[3; 6) "foo"
7 PARAM_LIST@[6; 8) 7 PARAM_LIST@[6; 8)
8 L_PAREN@[6; 7) 8 L_PAREN@[6; 7) "("
9 R_PAREN@[7; 8) 9 R_PAREN@[7; 8) ")"
10 WHITESPACE@[8; 9) 10 WHITESPACE@[8; 9) " "
11 BLOCK@[9; 292) 11 BLOCK@[9; 292)
12 L_CURLY@[9; 10) 12 L_CURLY@[9; 10) "{"
13 WHITESPACE@[10; 15) 13 WHITESPACE@[10; 15) "\n "
14 EXPR_STMT@[15; 101) 14 EXPR_STMT@[15; 101)
15 MATCH_EXPR@[15; 101) 15 MATCH_EXPR@[15; 101)
16 MATCH_KW@[15; 20) 16 MATCH_KW@[15; 20) "match"
17 WHITESPACE@[20; 21) 17 WHITESPACE@[20; 21) " "
18 TUPLE_EXPR@[21; 23) 18 TUPLE_EXPR@[21; 23)
19 L_PAREN@[21; 22) 19 L_PAREN@[21; 22) "("
20 R_PAREN@[22; 23) 20 R_PAREN@[22; 23) ")"
21 WHITESPACE@[23; 24) 21 WHITESPACE@[23; 24) " "
22 MATCH_ARM_LIST@[24; 101) 22 MATCH_ARM_LIST@[24; 101)
23 L_CURLY@[24; 25) 23 L_CURLY@[24; 25) "{"
24 WHITESPACE@[25; 34) 24 WHITESPACE@[25; 34) "\n "
25 MATCH_ARM@[34; 41) 25 MATCH_ARM@[34; 41)
26 PLACEHOLDER_PAT@[34; 35) 26 PLACEHOLDER_PAT@[34; 35)
27 UNDERSCORE@[34; 35) 27 UNDERSCORE@[34; 35) "_"
28 WHITESPACE@[35; 36) 28 WHITESPACE@[35; 36) " "
29 FAT_ARROW@[36; 38) 29 FAT_ARROW@[36; 38) "=>"
30 WHITESPACE@[38; 39) 30 WHITESPACE@[38; 39) " "
31 TUPLE_EXPR@[39; 41) 31 TUPLE_EXPR@[39; 41)
32 L_PAREN@[39; 40) 32 L_PAREN@[39; 40) "("
33 R_PAREN@[40; 41) 33 R_PAREN@[40; 41) ")"
34 COMMA@[41; 42) 34 COMMA@[41; 42) ","
35 WHITESPACE@[42; 51) 35 WHITESPACE@[42; 51) "\n "
36 MATCH_ARM@[51; 78) 36 MATCH_ARM@[51; 78)
37 ATTR@[51; 52) 37 ATTR@[51; 52)
38 POUND@[51; 52) 38 POUND@[51; 52) "#"
39 err: `expected `[`` 39 err: `expected `[``
40 err: `expected pattern` 40 err: `expected pattern`
41 ERROR@[52; 53) 41 ERROR@[52; 53)
42 EXCL@[52; 53) 42 EXCL@[52; 53) "!"
43 err: `expected FAT_ARROW` 43 err: `expected FAT_ARROW`
44 ARRAY_EXPR@[53; 78) 44 ARRAY_EXPR@[53; 78)
45 L_BRACK@[53; 54) 45 L_BRACK@[53; 54) "["
46 CALL_EXPR@[54; 77) 46 CALL_EXPR@[54; 77)
47 PATH_EXPR@[54; 57) 47 PATH_EXPR@[54; 57)
48 PATH@[54; 57) 48 PATH@[54; 57)
@@ -50,69 +50,69 @@ SOURCE_FILE@[0; 293)
50 NAME_REF@[54; 57) 50 NAME_REF@[54; 57)
51 IDENT@[54; 57) "doc" 51 IDENT@[54; 57) "doc"
52 ARG_LIST@[57; 77) 52 ARG_LIST@[57; 77)
53 L_PAREN@[57; 58) 53 L_PAREN@[57; 58) "("
54 LITERAL@[58; 76) 54 LITERAL@[58; 76)
55 STRING@[58; 76) 55 STRING@[58; 76) "\"Not allowed here\""
56 R_PAREN@[76; 77) 56 R_PAREN@[76; 77) ")"
57 R_BRACK@[77; 78) 57 R_BRACK@[77; 78) "]"
58 err: `expected COMMA` 58 err: `expected COMMA`
59 WHITESPACE@[78; 87) 59 WHITESPACE@[78; 87) "\n "
60 MATCH_ARM@[87; 94) 60 MATCH_ARM@[87; 94)
61 PLACEHOLDER_PAT@[87; 88) 61 PLACEHOLDER_PAT@[87; 88)
62 UNDERSCORE@[87; 88) 62 UNDERSCORE@[87; 88) "_"
63 WHITESPACE@[88; 89) 63 WHITESPACE@[88; 89) " "
64 FAT_ARROW@[89; 91) 64 FAT_ARROW@[89; 91) "=>"
65 WHITESPACE@[91; 92) 65 WHITESPACE@[91; 92) " "
66 TUPLE_EXPR@[92; 94) 66 TUPLE_EXPR@[92; 94)
67 L_PAREN@[92; 93) 67 L_PAREN@[92; 93) "("
68 R_PAREN@[93; 94) 68 R_PAREN@[93; 94) ")"
69 COMMA@[94; 95) 69 COMMA@[94; 95) ","
70 WHITESPACE@[95; 100) 70 WHITESPACE@[95; 100) "\n "
71 R_CURLY@[100; 101) 71 R_CURLY@[100; 101) "}"
72 WHITESPACE@[101; 107) 72 WHITESPACE@[101; 107) "\n\n "
73 EXPR_STMT@[107; 185) 73 EXPR_STMT@[107; 185)
74 MATCH_EXPR@[107; 185) 74 MATCH_EXPR@[107; 185)
75 MATCH_KW@[107; 112) 75 MATCH_KW@[107; 112) "match"
76 WHITESPACE@[112; 113) 76 WHITESPACE@[112; 113) " "
77 TUPLE_EXPR@[113; 115) 77 TUPLE_EXPR@[113; 115)
78 L_PAREN@[113; 114) 78 L_PAREN@[113; 114) "("
79 R_PAREN@[114; 115) 79 R_PAREN@[114; 115) ")"
80 WHITESPACE@[115; 116) 80 WHITESPACE@[115; 116) " "
81 MATCH_ARM_LIST@[116; 185) 81 MATCH_ARM_LIST@[116; 185)
82 L_CURLY@[116; 117) 82 L_CURLY@[116; 117) "{"
83 WHITESPACE@[117; 126) 83 WHITESPACE@[117; 126) "\n "
84 MATCH_ARM@[126; 133) 84 MATCH_ARM@[126; 133)
85 PLACEHOLDER_PAT@[126; 127) 85 PLACEHOLDER_PAT@[126; 127)
86 UNDERSCORE@[126; 127) 86 UNDERSCORE@[126; 127) "_"
87 WHITESPACE@[127; 128) 87 WHITESPACE@[127; 128) " "
88 FAT_ARROW@[128; 130) 88 FAT_ARROW@[128; 130) "=>"
89 WHITESPACE@[130; 131) 89 WHITESPACE@[130; 131) " "
90 TUPLE_EXPR@[131; 133) 90 TUPLE_EXPR@[131; 133)
91 L_PAREN@[131; 132) 91 L_PAREN@[131; 132) "("
92 R_PAREN@[132; 133) 92 R_PAREN@[132; 133) ")"
93 COMMA@[133; 134) 93 COMMA@[133; 134) ","
94 WHITESPACE@[134; 143) 94 WHITESPACE@[134; 143) "\n "
95 MATCH_ARM@[143; 150) 95 MATCH_ARM@[143; 150)
96 PLACEHOLDER_PAT@[143; 144) 96 PLACEHOLDER_PAT@[143; 144)
97 UNDERSCORE@[143; 144) 97 UNDERSCORE@[143; 144) "_"
98 WHITESPACE@[144; 145) 98 WHITESPACE@[144; 145) " "
99 FAT_ARROW@[145; 147) 99 FAT_ARROW@[145; 147) "=>"
100 WHITESPACE@[147; 148) 100 WHITESPACE@[147; 148) " "
101 TUPLE_EXPR@[148; 150) 101 TUPLE_EXPR@[148; 150)
102 L_PAREN@[148; 149) 102 L_PAREN@[148; 149) "("
103 R_PAREN@[149; 150) 103 R_PAREN@[149; 150) ")"
104 COMMA@[150; 151) 104 COMMA@[150; 151) ","
105 WHITESPACE@[151; 160) 105 WHITESPACE@[151; 160) "\n "
106 MATCH_ARM@[160; 179) 106 MATCH_ARM@[160; 179)
107 ATTR@[160; 161) 107 ATTR@[160; 161)
108 POUND@[160; 161) 108 POUND@[160; 161) "#"
109 err: `expected `[`` 109 err: `expected `[``
110 err: `expected pattern` 110 err: `expected pattern`
111 ERROR@[161; 162) 111 ERROR@[161; 162)
112 EXCL@[161; 162) 112 EXCL@[161; 162) "!"
113 err: `expected FAT_ARROW` 113 err: `expected FAT_ARROW`
114 ARRAY_EXPR@[162; 179) 114 ARRAY_EXPR@[162; 179)
115 L_BRACK@[162; 163) 115 L_BRACK@[162; 163) "["
116 CALL_EXPR@[163; 178) 116 CALL_EXPR@[163; 178)
117 PATH_EXPR@[163; 166) 117 PATH_EXPR@[163; 166)
118 PATH@[163; 166) 118 PATH@[163; 166)
@@ -120,45 +120,45 @@ SOURCE_FILE@[0; 293)
120 NAME_REF@[163; 166) 120 NAME_REF@[163; 166)
121 IDENT@[163; 166) "doc" 121 IDENT@[163; 166) "doc"
122 ARG_LIST@[166; 178) 122 ARG_LIST@[166; 178)
123 L_PAREN@[166; 167) 123 L_PAREN@[166; 167) "("
124 LITERAL@[167; 177) 124 LITERAL@[167; 177)
125 STRING@[167; 177) 125 STRING@[167; 177) "\"Nor here\""
126 R_PAREN@[177; 178) 126 R_PAREN@[177; 178) ")"
127 R_BRACK@[178; 179) 127 R_BRACK@[178; 179) "]"
128 WHITESPACE@[179; 184) 128 WHITESPACE@[179; 184) "\n "
129 R_CURLY@[184; 185) 129 R_CURLY@[184; 185) "}"
130 WHITESPACE@[185; 191) 130 WHITESPACE@[185; 191) "\n\n "
131 MATCH_EXPR@[191; 290) 131 MATCH_EXPR@[191; 290)
132 MATCH_KW@[191; 196) 132 MATCH_KW@[191; 196) "match"
133 WHITESPACE@[196; 197) 133 WHITESPACE@[196; 197) " "
134 TUPLE_EXPR@[197; 199) 134 TUPLE_EXPR@[197; 199)
135 L_PAREN@[197; 198) 135 L_PAREN@[197; 198) "("
136 R_PAREN@[198; 199) 136 R_PAREN@[198; 199) ")"
137 WHITESPACE@[199; 200) 137 WHITESPACE@[199; 200) " "
138 MATCH_ARM_LIST@[200; 290) 138 MATCH_ARM_LIST@[200; 290)
139 L_CURLY@[200; 201) 139 L_CURLY@[200; 201) "{"
140 WHITESPACE@[201; 210) 140 WHITESPACE@[201; 210) "\n "
141 MATCH_ARM@[210; 250) 141 MATCH_ARM@[210; 250)
142 ATTR@[210; 222) 142 ATTR@[210; 222)
143 POUND@[210; 211) 143 POUND@[210; 211) "#"
144 TOKEN_TREE@[211; 222) 144 TOKEN_TREE@[211; 222)
145 L_BRACK@[211; 212) 145 L_BRACK@[211; 212) "["
146 IDENT@[212; 215) "cfg" 146 IDENT@[212; 215) "cfg"
147 TOKEN_TREE@[215; 221) 147 TOKEN_TREE@[215; 221)
148 L_PAREN@[215; 216) 148 L_PAREN@[215; 216) "("
149 IDENT@[216; 220) "test" 149 IDENT@[216; 220) "test"
150 R_PAREN@[220; 221) 150 R_PAREN@[220; 221) ")"
151 R_BRACK@[221; 222) 151 R_BRACK@[221; 222) "]"
152 WHITESPACE@[222; 231) 152 WHITESPACE@[222; 231) "\n "
153 ATTR@[231; 232) 153 ATTR@[231; 232)
154 POUND@[231; 232) 154 POUND@[231; 232) "#"
155 err: `expected `[`` 155 err: `expected `[``
156 err: `expected pattern` 156 err: `expected pattern`
157 ERROR@[232; 233) 157 ERROR@[232; 233)
158 EXCL@[232; 233) 158 EXCL@[232; 233) "!"
159 err: `expected FAT_ARROW` 159 err: `expected FAT_ARROW`
160 ARRAY_EXPR@[233; 250) 160 ARRAY_EXPR@[233; 250)
161 L_BRACK@[233; 234) 161 L_BRACK@[233; 234) "["
162 CALL_EXPR@[234; 249) 162 CALL_EXPR@[234; 249)
163 PATH_EXPR@[234; 237) 163 PATH_EXPR@[234; 237)
164 PATH@[234; 237) 164 PATH@[234; 237)
@@ -166,36 +166,36 @@ SOURCE_FILE@[0; 293)
166 NAME_REF@[234; 237) 166 NAME_REF@[234; 237)
167 IDENT@[234; 237) "doc" 167 IDENT@[234; 237) "doc"
168 ARG_LIST@[237; 249) 168 ARG_LIST@[237; 249)
169 L_PAREN@[237; 238) 169 L_PAREN@[237; 238) "("
170 LITERAL@[238; 248) 170 LITERAL@[238; 248)
171 STRING@[238; 248) 171 STRING@[238; 248) "\"Nor here\""
172 R_PAREN@[248; 249) 172 R_PAREN@[248; 249) ")"
173 R_BRACK@[249; 250) 173 R_BRACK@[249; 250) "]"
174 err: `expected COMMA` 174 err: `expected COMMA`
175 WHITESPACE@[250; 259) 175 WHITESPACE@[250; 259) "\n "
176 MATCH_ARM@[259; 266) 176 MATCH_ARM@[259; 266)
177 PLACEHOLDER_PAT@[259; 260) 177 PLACEHOLDER_PAT@[259; 260)
178 UNDERSCORE@[259; 260) 178 UNDERSCORE@[259; 260) "_"
179 WHITESPACE@[260; 261) 179 WHITESPACE@[260; 261) " "
180 FAT_ARROW@[261; 263) 180 FAT_ARROW@[261; 263) "=>"
181 WHITESPACE@[263; 264) 181 WHITESPACE@[263; 264) " "
182 TUPLE_EXPR@[264; 266) 182 TUPLE_EXPR@[264; 266)
183 L_PAREN@[264; 265) 183 L_PAREN@[264; 265) "("
184 R_PAREN@[265; 266) 184 R_PAREN@[265; 266) ")"
185 COMMA@[266; 267) 185 COMMA@[266; 267) ","
186 WHITESPACE@[267; 276) 186 WHITESPACE@[267; 276) "\n "
187 MATCH_ARM@[276; 283) 187 MATCH_ARM@[276; 283)
188 PLACEHOLDER_PAT@[276; 277) 188 PLACEHOLDER_PAT@[276; 277)
189 UNDERSCORE@[276; 277) 189 UNDERSCORE@[276; 277) "_"
190 WHITESPACE@[277; 278) 190 WHITESPACE@[277; 278) " "
191 FAT_ARROW@[278; 280) 191 FAT_ARROW@[278; 280) "=>"
192 WHITESPACE@[280; 281) 192 WHITESPACE@[280; 281) " "
193 TUPLE_EXPR@[281; 283) 193 TUPLE_EXPR@[281; 283)
194 L_PAREN@[281; 282) 194 L_PAREN@[281; 282) "("
195 R_PAREN@[282; 283) 195 R_PAREN@[282; 283) ")"
196 COMMA@[283; 284) 196 COMMA@[283; 284) ","
197 WHITESPACE@[284; 289) 197 WHITESPACE@[284; 289) "\n "
198 R_CURLY@[289; 290) 198 R_CURLY@[289; 290) "}"
199 WHITESPACE@[290; 291) 199 WHITESPACE@[290; 291) "\n"
200 R_CURLY@[291; 292) 200 R_CURLY@[291; 292) "}"
201 WHITESPACE@[292; 293) 201 WHITESPACE@[292; 293) "\n"
diff --git a/crates/ra_syntax/tests/data/parser/err/0033_match_arms_outer_attrs.txt b/crates/ra_syntax/tests/data/parser/err/0033_match_arms_outer_attrs.txt
index f540409bc..ac9cb63f7 100644
--- a/crates/ra_syntax/tests/data/parser/err/0033_match_arms_outer_attrs.txt
+++ b/crates/ra_syntax/tests/data/parser/err/0033_match_arms_outer_attrs.txt
@@ -1,64 +1,64 @@
1SOURCE_FILE@[0; 89) 1SOURCE_FILE@[0; 89)
2 FN_DEF@[0; 88) 2 FN_DEF@[0; 88)
3 FN_KW@[0; 2) 3 FN_KW@[0; 2) "fn"
4 WHITESPACE@[2; 3) 4 WHITESPACE@[2; 3) " "
5 NAME@[3; 6) 5 NAME@[3; 6)
6 IDENT@[3; 6) "foo" 6 IDENT@[3; 6) "foo"
7 PARAM_LIST@[6; 8) 7 PARAM_LIST@[6; 8)
8 L_PAREN@[6; 7) 8 L_PAREN@[6; 7) "("
9 R_PAREN@[7; 8) 9 R_PAREN@[7; 8) ")"
10 WHITESPACE@[8; 9) 10 WHITESPACE@[8; 9) " "
11 BLOCK@[9; 88) 11 BLOCK@[9; 88)
12 L_CURLY@[9; 10) 12 L_CURLY@[9; 10) "{"
13 WHITESPACE@[10; 15) 13 WHITESPACE@[10; 15) "\n "
14 MATCH_EXPR@[15; 86) 14 MATCH_EXPR@[15; 86)
15 MATCH_KW@[15; 20) 15 MATCH_KW@[15; 20) "match"
16 WHITESPACE@[20; 21) 16 WHITESPACE@[20; 21) " "
17 TUPLE_EXPR@[21; 23) 17 TUPLE_EXPR@[21; 23)
18 L_PAREN@[21; 22) 18 L_PAREN@[21; 22) "("
19 R_PAREN@[22; 23) 19 R_PAREN@[22; 23) ")"
20 WHITESPACE@[23; 24) 20 WHITESPACE@[23; 24) " "
21 MATCH_ARM_LIST@[24; 86) 21 MATCH_ARM_LIST@[24; 86)
22 L_CURLY@[24; 25) 22 L_CURLY@[24; 25) "{"
23 WHITESPACE@[25; 34) 23 WHITESPACE@[25; 34) "\n "
24 MATCH_ARM@[34; 41) 24 MATCH_ARM@[34; 41)
25 PLACEHOLDER_PAT@[34; 35) 25 PLACEHOLDER_PAT@[34; 35)
26 UNDERSCORE@[34; 35) 26 UNDERSCORE@[34; 35) "_"
27 WHITESPACE@[35; 36) 27 WHITESPACE@[35; 36) " "
28 FAT_ARROW@[36; 38) 28 FAT_ARROW@[36; 38) "=>"
29 WHITESPACE@[38; 39) 29 WHITESPACE@[38; 39) " "
30 TUPLE_EXPR@[39; 41) 30 TUPLE_EXPR@[39; 41)
31 L_PAREN@[39; 40) 31 L_PAREN@[39; 40) "("
32 R_PAREN@[40; 41) 32 R_PAREN@[40; 41) ")"
33 COMMA@[41; 42) 33 COMMA@[41; 42) ","
34 WHITESPACE@[42; 51) 34 WHITESPACE@[42; 51) "\n "
35 MATCH_ARM@[51; 58) 35 MATCH_ARM@[51; 58)
36 PLACEHOLDER_PAT@[51; 52) 36 PLACEHOLDER_PAT@[51; 52)
37 UNDERSCORE@[51; 52) 37 UNDERSCORE@[51; 52) "_"
38 WHITESPACE@[52; 53) 38 WHITESPACE@[52; 53) " "
39 FAT_ARROW@[53; 55) 39 FAT_ARROW@[53; 55) "=>"
40 WHITESPACE@[55; 56) 40 WHITESPACE@[55; 56) " "
41 TUPLE_EXPR@[56; 58) 41 TUPLE_EXPR@[56; 58)
42 L_PAREN@[56; 57) 42 L_PAREN@[56; 57) "("
43 R_PAREN@[57; 58) 43 R_PAREN@[57; 58) ")"
44 COMMA@[58; 59) 44 COMMA@[58; 59) ","
45 WHITESPACE@[59; 68) 45 WHITESPACE@[59; 68) "\n "
46 MATCH_ARM@[68; 80) 46 MATCH_ARM@[68; 80)
47 ATTR@[68; 80) 47 ATTR@[68; 80)
48 POUND@[68; 69) 48 POUND@[68; 69) "#"
49 TOKEN_TREE@[69; 80) 49 TOKEN_TREE@[69; 80)
50 L_BRACK@[69; 70) 50 L_BRACK@[69; 70) "["
51 IDENT@[70; 73) "cfg" 51 IDENT@[70; 73) "cfg"
52 TOKEN_TREE@[73; 79) 52 TOKEN_TREE@[73; 79)
53 L_PAREN@[73; 74) 53 L_PAREN@[73; 74) "("
54 IDENT@[74; 78) "test" 54 IDENT@[74; 78) "test"
55 R_PAREN@[78; 79) 55 R_PAREN@[78; 79) ")"
56 R_BRACK@[79; 80) 56 R_BRACK@[79; 80) "]"
57 err: `expected pattern` 57 err: `expected pattern`
58 err: `expected FAT_ARROW` 58 err: `expected FAT_ARROW`
59 err: `expected expression` 59 err: `expected expression`
60 WHITESPACE@[80; 85) 60 WHITESPACE@[80; 85) "\n "
61 R_CURLY@[85; 86) 61 R_CURLY@[85; 86) "}"
62 WHITESPACE@[86; 87) 62 WHITESPACE@[86; 87) "\n"
63 R_CURLY@[87; 88) 63 R_CURLY@[87; 88) "}"
64 WHITESPACE@[88; 89) 64 WHITESPACE@[88; 89) "\n"