aboutsummaryrefslogtreecommitdiff
path: root/crates/ra_syntax/test_data
diff options
context:
space:
mode:
Diffstat (limited to 'crates/ra_syntax/test_data')
-rw-r--r--crates/ra_syntax/test_data/parser/err/0005_attribute_recover.txt9
-rw-r--r--crates/ra_syntax/test_data/parser/err/0007_stray_curly_in_file.txt7
-rw-r--r--crates/ra_syntax/test_data/parser/err/0008_item_block_recovery.txt60
-rw-r--r--crates/ra_syntax/test_data/parser/err/0010_unsafe_lambda_block.txt61
-rw-r--r--crates/ra_syntax/test_data/parser/err/0014_where_no_bounds.txt7
-rw-r--r--crates/ra_syntax/test_data/parser/err/0016_missing_semi.txt63
-rw-r--r--crates/ra_syntax/test_data/parser/err/0017_incomplete_binexpr.txt47
-rw-r--r--crates/ra_syntax/test_data/parser/err/0018_incomplete_fn.txt167
-rw-r--r--crates/ra_syntax/test_data/parser/err/0019_let_recover.txt168
-rw-r--r--crates/ra_syntax/test_data/parser/err/0020_fn_recover.txt7
-rw-r--r--crates/ra_syntax/test_data/parser/err/0021_incomplete_param.txt9
-rw-r--r--crates/ra_syntax/test_data/parser/err/0022_bad_exprs.txt241
-rw-r--r--crates/ra_syntax/test_data/parser/err/0023_mismatched_paren.txt51
-rw-r--r--crates/ra_syntax/test_data/parser/err/0024_many_type_parens.txt440
-rw-r--r--crates/ra_syntax/test_data/parser/err/0025_nope.txt363
-rw-r--r--crates/ra_syntax/test_data/parser/err/0027_incomplere_where_for.txt7
-rw-r--r--crates/ra_syntax/test_data/parser/err/0028_macro_2.0.txt365
-rw-r--r--crates/ra_syntax/test_data/parser/err/0029_field_completion.txt25
-rw-r--r--crates/ra_syntax/test_data/parser/err/0031_block_inner_attrs.txt201
-rw-r--r--crates/ra_syntax/test_data/parser/err/0032_match_arms_inner_attrs.txt359
-rw-r--r--crates/ra_syntax/test_data/parser/err/0033_match_arms_outer_attrs.txt101
-rw-r--r--crates/ra_syntax/test_data/parser/err/0034_bad_box_pattern.txt157
-rw-r--r--crates/ra_syntax/test_data/parser/inline/err/0002_misplaced_label_err.txt27
-rw-r--r--crates/ra_syntax/test_data/parser/inline/err/0006_unsafe_block_in_mod.txt14
-rw-r--r--crates/ra_syntax/test_data/parser/inline/err/0007_async_without_semicolon.txt39
-rw-r--r--crates/ra_syntax/test_data/parser/inline/err/0008_pub_expr.txt27
-rw-r--r--crates/ra_syntax/test_data/parser/inline/err/0009_attr_on_expr_not_allowed.txt86
-rw-r--r--crates/ra_syntax/test_data/parser/inline/err/0010_bad_tuple_index_expr.txt79
-rw-r--r--crates/ra_syntax/test_data/parser/inline/err/0010_wrong_order_fns.txt14
-rw-r--r--crates/ra_syntax/test_data/parser/inline/err/0014_default_fn_type.txt7
-rw-r--r--crates/ra_syntax/test_data/parser/inline/ok/0001_trait_item_list.txt7
-rw-r--r--crates/ra_syntax/test_data/parser/inline/ok/0003_where_pred_for.txt9
-rw-r--r--crates/ra_syntax/test_data/parser/inline/ok/0005_function_type_params.txt7
-rw-r--r--crates/ra_syntax/test_data/parser/inline/ok/0006_self_param.txt35
-rw-r--r--crates/ra_syntax/test_data/parser/inline/ok/0008_path_part.txt169
-rw-r--r--crates/ra_syntax/test_data/parser/inline/ok/0009_loop_expr.txt28
-rw-r--r--crates/ra_syntax/test_data/parser/inline/ok/0011_field_expr.txt97
-rw-r--r--crates/ra_syntax/test_data/parser/inline/ok/0015_continue_expr.txt50
-rw-r--r--crates/ra_syntax/test_data/parser/inline/ok/0018_arb_self_types.txt14
-rw-r--r--crates/ra_syntax/test_data/parser/inline/ok/0019_unary_expr.txt67
-rw-r--r--crates/ra_syntax/test_data/parser/inline/ok/0021_impl_item_list.txt14
-rw-r--r--crates/ra_syntax/test_data/parser/inline/ok/0024_slice_pat.txt59
-rw-r--r--crates/ra_syntax/test_data/parser/inline/ok/0026_tuple_pat_fields.txt185
-rw-r--r--crates/ra_syntax/test_data/parser/inline/ok/0027_ref_pat.txt77
-rw-r--r--crates/ra_syntax/test_data/parser/inline/ok/0029_cast_expr.txt157
-rw-r--r--crates/ra_syntax/test_data/parser/inline/ok/0030_cond.txt365
-rw-r--r--crates/ra_syntax/test_data/parser/inline/ok/0031_while_expr.txt113
-rw-r--r--crates/ra_syntax/test_data/parser/inline/ok/0034_break_expr.txt86
-rw-r--r--crates/ra_syntax/test_data/parser/inline/ok/0036_unsafe_extern_fn.txt7
-rw-r--r--crates/ra_syntax/test_data/parser/inline/ok/0037_qual_paths.txt69
-rw-r--r--crates/ra_syntax/test_data/parser/inline/ok/0038_full_range_expr.txt35
-rw-r--r--crates/ra_syntax/test_data/parser/inline/ok/0040_crate_keyword_vis.txt9
-rw-r--r--crates/ra_syntax/test_data/parser/inline/ok/0042_call_expr.txt273
-rw-r--r--crates/ra_syntax/test_data/parser/inline/ok/0044_block_items.txt36
-rw-r--r--crates/ra_syntax/test_data/parser/inline/ok/0045_param_list_opt_patterns.txt7
-rw-r--r--crates/ra_syntax/test_data/parser/inline/ok/0048_path_type_with_bounds.txt14
-rw-r--r--crates/ra_syntax/test_data/parser/inline/ok/0053_path_expr.txt169
-rw-r--r--crates/ra_syntax/test_data/parser/inline/ok/0055_literal_pattern.txt131
-rw-r--r--crates/ra_syntax/test_data/parser/inline/ok/0056_where_clause.txt7
-rw-r--r--crates/ra_syntax/test_data/parser/inline/ok/0057_const_fn.txt7
-rw-r--r--crates/ra_syntax/test_data/parser/inline/ok/0058_range_pat.txt143
-rw-r--r--crates/ra_syntax/test_data/parser/inline/ok/0059_match_arms_commas.txt97
-rw-r--r--crates/ra_syntax/test_data/parser/inline/ok/0061_record_lit.txt215
-rw-r--r--crates/ra_syntax/test_data/parser/inline/ok/0062_mod_contents.txt7
-rw-r--r--crates/ra_syntax/test_data/parser/inline/ok/0064_if_expr.txt176
-rw-r--r--crates/ra_syntax/test_data/parser/inline/ok/0066_match_arm.txt277
-rw-r--r--crates/ra_syntax/test_data/parser/inline/ok/0070_stmt_bin_expr_ambiguity.txt83
-rw-r--r--crates/ra_syntax/test_data/parser/inline/ok/0071_match_expr.txt67
-rw-r--r--crates/ra_syntax/test_data/parser/inline/ok/0072_return_expr.txt35
-rw-r--r--crates/ra_syntax/test_data/parser/inline/ok/0074_stmt_postfix_expr_ambiguity.txt103
-rw-r--r--crates/ra_syntax/test_data/parser/inline/ok/0075_block.txt94
-rw-r--r--crates/ra_syntax/test_data/parser/inline/ok/0076_function_where_clause.txt7
-rw-r--r--crates/ra_syntax/test_data/parser/inline/ok/0077_try_expr.txt29
-rw-r--r--crates/ra_syntax/test_data/parser/inline/ok/0080_postfix_range.txt39
-rw-r--r--crates/ra_syntax/test_data/parser/inline/ok/0081_for_type.txt21
-rw-r--r--crates/ra_syntax/test_data/parser/inline/ok/0082_ref_expr.txt87
-rw-r--r--crates/ra_syntax/test_data/parser/inline/ok/0085_expr_literals.txt249
-rw-r--r--crates/ra_syntax/test_data/parser/inline/ok/0086_function_ret_type.txt14
-rw-r--r--crates/ra_syntax/test_data/parser/inline/ok/0088_break_ambiguity.txt114
-rw-r--r--crates/ra_syntax/test_data/parser/inline/ok/0089_extern_fn.txt7
-rw-r--r--crates/ra_syntax/test_data/parser/inline/ok/0093_index_expr.txt45
-rw-r--r--crates/ra_syntax/test_data/parser/inline/ok/0095_placeholder_pat.txt35
-rw-r--r--crates/ra_syntax/test_data/parser/inline/ok/0096_no_semi_after_block.txt233
-rw-r--r--crates/ra_syntax/test_data/parser/inline/ok/0098_const_unsafe_fn.txt7
-rw-r--r--crates/ra_syntax/test_data/parser/inline/ok/0099_param_list.txt28
-rw-r--r--crates/ra_syntax/test_data/parser/inline/ok/0100_for_expr.txt48
-rw-r--r--crates/ra_syntax/test_data/parser/inline/ok/0101_unsafe_fn.txt7
-rw-r--r--crates/ra_syntax/test_data/parser/inline/ok/0102_record_field_pat_list.txt239
-rw-r--r--crates/ra_syntax/test_data/parser/inline/ok/0103_array_expr.txt87
-rw-r--r--crates/ra_syntax/test_data/parser/inline/ok/0105_block_expr.txt63
-rw-r--r--crates/ra_syntax/test_data/parser/inline/ok/0106_lambda_expr.txt257
-rw-r--r--crates/ra_syntax/test_data/parser/inline/ok/0107_method_call_expr.txt103
-rw-r--r--crates/ra_syntax/test_data/parser/inline/ok/0108_tuple_expr.txt55
-rw-r--r--crates/ra_syntax/test_data/parser/inline/ok/0109_label.txt110
-rw-r--r--crates/ra_syntax/test_data/parser/inline/ok/0111_tuple_pat.txt59
-rw-r--r--crates/ra_syntax/test_data/parser/inline/ok/0112_bind_pat.txt233
-rw-r--r--crates/ra_syntax/test_data/parser/inline/ok/0113_nocontentexpr.txt93
-rw-r--r--crates/ra_syntax/test_data/parser/inline/ok/0118_match_guard.txt73
-rw-r--r--crates/ra_syntax/test_data/parser/inline/ok/0120_match_arms_inner_attribute.txt127
-rw-r--r--crates/ra_syntax/test_data/parser/inline/ok/0121_match_arms_outer_attributes.txt249
-rw-r--r--crates/ra_syntax/test_data/parser/inline/ok/0122_generic_lifetime_type_attribute.txt9
-rw-r--r--crates/ra_syntax/test_data/parser/inline/ok/0124_async_fn.txt7
-rw-r--r--crates/ra_syntax/test_data/parser/inline/ok/0125_crate_keyword_path.txt41
-rw-r--r--crates/ra_syntax/test_data/parser/inline/ok/0125_record_literal_field_with_attr.txt69
-rw-r--r--crates/ra_syntax/test_data/parser/inline/ok/0126_attr_on_expr_stmt.txt155
-rw-r--r--crates/ra_syntax/test_data/parser/inline/ok/0127_attr_on_last_expr_in_block.txt87
-rw-r--r--crates/ra_syntax/test_data/parser/inline/ok/0128_combined_fns.txt14
-rw-r--r--crates/ra_syntax/test_data/parser/inline/ok/0129_marco_pat.txt51
-rw-r--r--crates/ra_syntax/test_data/parser/inline/ok/0130_let_stmt.txt181
-rw-r--r--crates/ra_syntax/test_data/parser/inline/ok/0130_try_block_expr.txt42
-rw-r--r--crates/ra_syntax/test_data/parser/inline/ok/0132_box_expr.txt157
-rw-r--r--crates/ra_syntax/test_data/parser/inline/ok/0132_default_fn_type.txt7
-rw-r--r--crates/ra_syntax/test_data/parser/inline/ok/0134_nocontentexpr_after_item.txt104
-rw-r--r--crates/ra_syntax/test_data/parser/inline/ok/0137_await_expr.txt117
-rw-r--r--crates/ra_syntax/test_data/parser/inline/ok/0138_associated_type_bounds.txt7
-rw-r--r--crates/ra_syntax/test_data/parser/inline/ok/0138_expression_after_block.txt109
-rw-r--r--crates/ra_syntax/test_data/parser/inline/ok/0138_self_param_outer_attr.txt7
-rw-r--r--crates/ra_syntax/test_data/parser/inline/ok/0139_param_outer_arg.txt7
-rw-r--r--crates/ra_syntax/test_data/parser/inline/ok/0142_for_range_from.txt60
-rw-r--r--crates/ra_syntax/test_data/parser/inline/ok/0143_box_pat.txt197
-rw-r--r--crates/ra_syntax/test_data/parser/ok/0005_fn_item.txt9
-rw-r--r--crates/ra_syntax/test_data/parser/ok/0008_mod_item.txt9
-rw-r--r--crates/ra_syntax/test_data/parser/ok/0011_outer_attribute.txt7
-rw-r--r--crates/ra_syntax/test_data/parser/ok/0012_visibility.txt35
-rw-r--r--crates/ra_syntax/test_data/parser/ok/0017_attr_trailing_comma.txt7
-rw-r--r--crates/ra_syntax/test_data/parser/ok/0021_extern_fn.txt27
-rw-r--r--crates/ra_syntax/test_data/parser/ok/0025_extern_fn_in_block.txt42
-rw-r--r--crates/ra_syntax/test_data/parser/ok/0026_const_fn_in_block.txt40
-rw-r--r--crates/ra_syntax/test_data/parser/ok/0027_unsafe_fn_in_block.txt62
-rw-r--r--crates/ra_syntax/test_data/parser/ok/0028_operator_binding_power.txt349
-rw-r--r--crates/ra_syntax/test_data/parser/ok/0029_range_forms.txt281
-rw-r--r--crates/ra_syntax/test_data/parser/ok/0030_string_suffixes.txt105
-rw-r--r--crates/ra_syntax/test_data/parser/ok/0032_where_for.txt7
-rw-r--r--crates/ra_syntax/test_data/parser/ok/0033_label_break.txt409
-rw-r--r--crates/ra_syntax/test_data/parser/ok/0034_crate_path_in_call.txt61
-rw-r--r--crates/ra_syntax/test_data/parser/ok/0035_weird_exprs.txt3948
-rw-r--r--crates/ra_syntax/test_data/parser/ok/0036_fully_qualified.txt29
-rw-r--r--crates/ra_syntax/test_data/parser/ok/0038_where_pred_type.txt7
-rw-r--r--crates/ra_syntax/test_data/parser/ok/0039_raw_fn_item.txt9
-rw-r--r--crates/ra_syntax/test_data/parser/ok/0041_raw_keywords.txt79
-rw-r--r--crates/ra_syntax/test_data/parser/ok/0042_ufcs_call_list.txt103
-rw-r--r--crates/ra_syntax/test_data/parser/ok/0043_complex_assignment.txt135
-rw-r--r--crates/ra_syntax/test_data/parser/ok/0044_let_attrs.txt121
-rw-r--r--crates/ra_syntax/test_data/parser/ok/0045_block_inner_attrs.txt182
-rw-r--r--crates/ra_syntax/test_data/parser/ok/0047_minus_in_inner_pattern.txt499
-rw-r--r--crates/ra_syntax/test_data/parser/ok/0048_compound_assignment.txt375
-rw-r--r--crates/ra_syntax/test_data/parser/ok/0049_async_block.txt49
-rw-r--r--crates/ra_syntax/test_data/parser/ok/0050_async_block_as_argument.txt60
-rw-r--r--crates/ra_syntax/test_data/parser/ok/0051_parameter_attrs.txt77
-rw-r--r--crates/ra_syntax/test_data/parser/ok/0052_for_range_block.txt138
150 files changed, 9245 insertions, 8970 deletions
diff --git a/crates/ra_syntax/test_data/parser/err/0005_attribute_recover.txt b/crates/ra_syntax/test_data/parser/err/0005_attribute_recover.txt
index 6d5199a56..378b92834 100644
--- a/crates/ra_syntax/test_data/parser/err/0005_attribute_recover.txt
+++ b/crates/ra_syntax/test_data/parser/err/0005_attribute_recover.txt
@@ -25,10 +25,11 @@ SOURCE_FILE@[0; 54)
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_EXPR@[28; 31)
29 L_CURLY@[28; 29) "{" 29 BLOCK@[28; 31)
30 WHITESPACE@[29; 30) "\n" 30 L_CURLY@[28; 29) "{"
31 R_CURLY@[30; 31) "}" 31 WHITESPACE@[29; 30) "\n"
32 R_CURLY@[30; 31) "}"
32 WHITESPACE@[31; 34) "\n\n\n" 33 WHITESPACE@[31; 34) "\n\n\n"
33 ATTR@[34; 53) 34 ATTR@[34; 53)
34 POUND@[34; 35) "#" 35 POUND@[34; 35) "#"
diff --git a/crates/ra_syntax/test_data/parser/err/0007_stray_curly_in_file.txt b/crates/ra_syntax/test_data/parser/err/0007_stray_curly_in_file.txt
index b79e01238..7ae417441 100644
--- a/crates/ra_syntax/test_data/parser/err/0007_stray_curly_in_file.txt
+++ b/crates/ra_syntax/test_data/parser/err/0007_stray_curly_in_file.txt
@@ -20,9 +20,10 @@ SOURCE_FILE@[0; 31)
20 PARAM_LIST@[23; 25) 20 PARAM_LIST@[23; 25)
21 L_PAREN@[23; 24) "(" 21 L_PAREN@[23; 24) "("
22 R_PAREN@[24; 25) ")" 22 R_PAREN@[24; 25) ")"
23 BLOCK@[25; 27) 23 BLOCK_EXPR@[25; 27)
24 L_CURLY@[25; 26) "{" 24 BLOCK@[25; 27)
25 R_CURLY@[26; 27) "}" 25 L_CURLY@[25; 26) "{"
26 R_CURLY@[26; 27) "}"
26 WHITESPACE@[27; 29) "\n\n" 27 WHITESPACE@[27; 29) "\n\n"
27 ERROR@[29; 30) 28 ERROR@[29; 30)
28 R_CURLY@[29; 30) "}" 29 R_CURLY@[29; 30) "}"
diff --git a/crates/ra_syntax/test_data/parser/err/0008_item_block_recovery.txt b/crates/ra_syntax/test_data/parser/err/0008_item_block_recovery.txt
index 9a8871579..1a4b40a2b 100644
--- a/crates/ra_syntax/test_data/parser/err/0008_item_block_recovery.txt
+++ b/crates/ra_syntax/test_data/parser/err/0008_item_block_recovery.txt
@@ -8,10 +8,11 @@ SOURCE_FILE@[0; 95)
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_EXPR@[9; 12)
12 L_CURLY@[9; 10) "{" 12 BLOCK@[9; 12)
13 WHITESPACE@[10; 11) "\n" 13 L_CURLY@[9; 10) "{"
14 R_CURLY@[11; 12) "}" 14 WHITESPACE@[10; 11) "\n"
15 R_CURLY@[11; 12) "}"
15 WHITESPACE@[12; 14) "\n\n" 16 WHITESPACE@[12; 14) "\n\n"
16 MACRO_CALL@[14; 19) 17 MACRO_CALL@[14; 19)
17 PATH@[14; 17) 18 PATH@[14; 17)
@@ -32,29 +33,31 @@ SOURCE_FILE@[0; 95)
32 LITERAL@[29; 33) 33 LITERAL@[29; 33)
33 TRUE_KW@[29; 33) "true" 34 TRUE_KW@[29; 33) "true"
34 WHITESPACE@[33; 34) " " 35 WHITESPACE@[33; 34) " "
35 BLOCK@[34; 51) 36 BLOCK_EXPR@[34; 51)
36 L_CURLY@[34; 35) "{" 37 BLOCK@[34; 51)
37 WHITESPACE@[35; 44) "\n " 38 L_CURLY@[34; 35) "{"
38 LITERAL@[44; 45) 39 WHITESPACE@[35; 44) "\n "
39 INT_NUMBER@[44; 45) "1" 40 LITERAL@[44; 45)
40 WHITESPACE@[45; 50) "\n " 41 INT_NUMBER@[44; 45) "1"
41 R_CURLY@[50; 51) "}" 42 WHITESPACE@[45; 50) "\n "
43 R_CURLY@[50; 51) "}"
42 WHITESPACE@[51; 52) " " 44 WHITESPACE@[51; 52) " "
43 ELSE_KW@[52; 56) "else" 45 ELSE_KW@[52; 56) "else"
44 WHITESPACE@[56; 57) " " 46 WHITESPACE@[56; 57) " "
45 BLOCK@[57; 78) 47 BLOCK_EXPR@[57; 78)
46 L_CURLY@[57; 58) "{" 48 BLOCK@[57; 78)
47 WHITESPACE@[58; 67) "\n " 49 L_CURLY@[57; 58) "{"
48 BIN_EXPR@[67; 72) 50 WHITESPACE@[58; 67) "\n "
49 LITERAL@[67; 68) 51 BIN_EXPR@[67; 72)
50 INT_NUMBER@[67; 68) "2" 52 LITERAL@[67; 68)
51 WHITESPACE@[68; 69) " " 53 INT_NUMBER@[67; 68) "2"
52 PLUS@[69; 70) "+" 54 WHITESPACE@[68; 69) " "
53 WHITESPACE@[70; 71) " " 55 PLUS@[69; 70) "+"
54 LITERAL@[71; 72) 56 WHITESPACE@[70; 71) " "
55 INT_NUMBER@[71; 72) "3" 57 LITERAL@[71; 72)
56 WHITESPACE@[72; 77) "\n " 58 INT_NUMBER@[71; 72) "3"
57 R_CURLY@[77; 78) "}" 59 WHITESPACE@[72; 77) "\n "
60 R_CURLY@[77; 78) "}"
58 WHITESPACE@[78; 79) "\n" 61 WHITESPACE@[78; 79) "\n"
59 R_CURLY@[79; 80) "}" 62 R_CURLY@[79; 80) "}"
60 WHITESPACE@[80; 82) "\n\n" 63 WHITESPACE@[80; 82) "\n\n"
@@ -67,10 +70,11 @@ SOURCE_FILE@[0; 95)
67 L_PAREN@[88; 89) "(" 70 L_PAREN@[88; 89) "("
68 R_PAREN@[89; 90) ")" 71 R_PAREN@[89; 90) ")"
69 WHITESPACE@[90; 91) " " 72 WHITESPACE@[90; 91) " "
70 BLOCK@[91; 94) 73 BLOCK_EXPR@[91; 94)
71 L_CURLY@[91; 92) "{" 74 BLOCK@[91; 94)
72 WHITESPACE@[92; 93) "\n" 75 L_CURLY@[91; 92) "{"
73 R_CURLY@[93; 94) "}" 76 WHITESPACE@[92; 93) "\n"
77 R_CURLY@[93; 94) "}"
74 WHITESPACE@[94; 95) "\n" 78 WHITESPACE@[94; 95) "\n"
75error 17: expected EXCL 79error 17: expected EXCL
76error 19: expected SEMI 80error 19: expected SEMI
diff --git a/crates/ra_syntax/test_data/parser/err/0010_unsafe_lambda_block.txt b/crates/ra_syntax/test_data/parser/err/0010_unsafe_lambda_block.txt
index c46809f81..b73dda5ad 100644
--- a/crates/ra_syntax/test_data/parser/err/0010_unsafe_lambda_block.txt
+++ b/crates/ra_syntax/test_data/parser/err/0010_unsafe_lambda_block.txt
@@ -8,35 +8,36 @@ SOURCE_FILE@[0; 42)
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_EXPR@[10; 41)
12 L_CURLY@[10; 11) "{" 12 BLOCK@[10; 41)
13 WHITESPACE@[11; 16) "\n " 13 L_CURLY@[10; 11) "{"
14 EXPR_STMT@[16; 39) 14 WHITESPACE@[11; 16) "\n "
15 LAMBDA_EXPR@[16; 38) 15 EXPR_STMT@[16; 39)
16 PARAM_LIST@[16; 18) 16 LAMBDA_EXPR@[16; 38)
17 PIPE@[16; 17) "|" 17 PARAM_LIST@[16; 18)
18 PIPE@[17; 18) "|" 18 PIPE@[16; 17) "|"
19 WHITESPACE@[18; 19) " " 19 PIPE@[17; 18) "|"
20 RET_TYPE@[19; 24) 20 WHITESPACE@[18; 19) " "
21 THIN_ARROW@[19; 21) "->" 21 RET_TYPE@[19; 24)
22 WHITESPACE@[21; 22) " " 22 THIN_ARROW@[19; 21) "->"
23 TUPLE_TYPE@[22; 24) 23 WHITESPACE@[21; 22) " "
24 L_PAREN@[22; 23) "(" 24 TUPLE_TYPE@[22; 24)
25 R_PAREN@[23; 24) ")" 25 L_PAREN@[22; 23) "("
26 WHITESPACE@[24; 25) " " 26 R_PAREN@[23; 24) ")"
27 BLOCK_EXPR@[25; 38) 27 WHITESPACE@[24; 25) " "
28 UNSAFE_KW@[25; 31) "unsafe" 28 BLOCK_EXPR@[25; 38)
29 WHITESPACE@[31; 32) " " 29 UNSAFE_KW@[25; 31) "unsafe"
30 BLOCK@[32; 38) 30 WHITESPACE@[31; 32) " "
31 L_CURLY@[32; 33) "{" 31 BLOCK@[32; 38)
32 WHITESPACE@[33; 34) " " 32 L_CURLY@[32; 33) "{"
33 TUPLE_EXPR@[34; 36) 33 WHITESPACE@[33; 34) " "
34 L_PAREN@[34; 35) "(" 34 TUPLE_EXPR@[34; 36)
35 R_PAREN@[35; 36) ")" 35 L_PAREN@[34; 35) "("
36 WHITESPACE@[36; 37) " " 36 R_PAREN@[35; 36) ")"
37 R_CURLY@[37; 38) "}" 37 WHITESPACE@[36; 37) " "
38 SEMI@[38; 39) ";" 38 R_CURLY@[37; 38) "}"
39 WHITESPACE@[39; 40) "\n" 39 SEMI@[38; 39) ";"
40 R_CURLY@[40; 41) "}" 40 WHITESPACE@[39; 40) "\n"
41 R_CURLY@[40; 41) "}"
41 WHITESPACE@[41; 42) "\n" 42 WHITESPACE@[41; 42) "\n"
42error 24: expected `{` 43error 24: expected `{`
diff --git a/crates/ra_syntax/test_data/parser/err/0014_where_no_bounds.txt b/crates/ra_syntax/test_data/parser/err/0014_where_no_bounds.txt
index 2f0878572..0ba17cf8d 100644
--- a/crates/ra_syntax/test_data/parser/err/0014_where_no_bounds.txt
+++ b/crates/ra_syntax/test_data/parser/err/0014_where_no_bounds.txt
@@ -24,8 +24,9 @@ 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 WHITESPACE@[19; 20) " " 26 WHITESPACE@[19; 20) " "
27 BLOCK@[20; 22) 27 BLOCK_EXPR@[20; 22)
28 L_CURLY@[20; 21) "{" 28 BLOCK@[20; 22)
29 R_CURLY@[21; 22) "}" 29 L_CURLY@[20; 21) "{"
30 R_CURLY@[21; 22) "}"
30 WHITESPACE@[22; 23) "\n" 31 WHITESPACE@[22; 23) "\n"
31error 19: expected colon 32error 19: expected colon
diff --git a/crates/ra_syntax/test_data/parser/err/0016_missing_semi.txt b/crates/ra_syntax/test_data/parser/err/0016_missing_semi.txt
index 97e64dea9..bc5be6a66 100644
--- a/crates/ra_syntax/test_data/parser/err/0016_missing_semi.txt
+++ b/crates/ra_syntax/test_data/parser/err/0016_missing_semi.txt
@@ -8,36 +8,37 @@ SOURCE_FILE@[0; 56)
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_EXPR@[9; 55)
12 L_CURLY@[9; 10) "{" 12 BLOCK@[9; 55)
13 WHITESPACE@[10; 15) "\n " 13 L_CURLY@[9; 10) "{"
14 EXPR_STMT@[15; 38) 14 WHITESPACE@[10; 15) "\n "
15 CALL_EXPR@[15; 38) 15 EXPR_STMT@[15; 38)
16 PATH_EXPR@[15; 18) 16 CALL_EXPR@[15; 38)
17 PATH@[15; 18) 17 PATH_EXPR@[15; 18)
18 PATH_SEGMENT@[15; 18) 18 PATH@[15; 18)
19 NAME_REF@[15; 18) 19 PATH_SEGMENT@[15; 18)
20 IDENT@[15; 18) "foo" 20 NAME_REF@[15; 18)
21 ARG_LIST@[18; 38) 21 IDENT@[15; 18) "foo"
22 L_PAREN@[18; 19) "(" 22 ARG_LIST@[18; 38)
23 WHITESPACE@[19; 28) "\n " 23 L_PAREN@[18; 19) "("
24 LITERAL@[28; 29) 24 WHITESPACE@[19; 28) "\n "
25 INT_NUMBER@[28; 29) "1" 25 LITERAL@[28; 29)
26 COMMA@[29; 30) "," 26 INT_NUMBER@[28; 29) "1"
27 WHITESPACE@[30; 31) " " 27 COMMA@[29; 30) ","
28 LITERAL@[31; 32) 28 WHITESPACE@[30; 31) " "
29 INT_NUMBER@[31; 32) "2" 29 LITERAL@[31; 32)
30 WHITESPACE@[32; 37) "\n " 30 INT_NUMBER@[31; 32) "2"
31 R_PAREN@[37; 38) ")" 31 WHITESPACE@[32; 37) "\n "
32 WHITESPACE@[38; 43) "\n " 32 R_PAREN@[37; 38) ")"
33 EXPR_STMT@[43; 53) 33 WHITESPACE@[38; 43) "\n "
34 RETURN_EXPR@[43; 52) 34 EXPR_STMT@[43; 53)
35 RETURN_KW@[43; 49) "return" 35 RETURN_EXPR@[43; 52)
36 WHITESPACE@[49; 50) " " 36 RETURN_KW@[43; 49) "return"
37 LITERAL@[50; 52) 37 WHITESPACE@[49; 50) " "
38 INT_NUMBER@[50; 52) "92" 38 LITERAL@[50; 52)
39 SEMI@[52; 53) ";" 39 INT_NUMBER@[50; 52) "92"
40 WHITESPACE@[53; 54) "\n" 40 SEMI@[52; 53) ";"
41 R_CURLY@[54; 55) "}" 41 WHITESPACE@[53; 54) "\n"
42 R_CURLY@[54; 55) "}"
42 WHITESPACE@[55; 56) "\n" 43 WHITESPACE@[55; 56) "\n"
43error 38: expected SEMI 44error 38: expected SEMI
diff --git a/crates/ra_syntax/test_data/parser/err/0017_incomplete_binexpr.txt b/crates/ra_syntax/test_data/parser/err/0017_incomplete_binexpr.txt
index c18e20900..9033a5b38 100644
--- a/crates/ra_syntax/test_data/parser/err/0017_incomplete_binexpr.txt
+++ b/crates/ra_syntax/test_data/parser/err/0017_incomplete_binexpr.txt
@@ -19,28 +19,29 @@ SOURCE_FILE@[0; 47)
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_EXPR@[17; 46)
23 L_CURLY@[17; 18) "{" 23 BLOCK@[17; 46)
24 WHITESPACE@[18; 23) "\n " 24 L_CURLY@[17; 18) "{"
25 LET_STMT@[23; 36) 25 WHITESPACE@[18; 23) "\n "
26 LET_KW@[23; 26) "let" 26 LET_STMT@[23; 36)
27 WHITESPACE@[26; 27) " " 27 LET_KW@[23; 26) "let"
28 BIND_PAT@[27; 30) 28 WHITESPACE@[26; 27) " "
29 NAME@[27; 30) 29 BIND_PAT@[27; 30)
30 IDENT@[27; 30) "bar" 30 NAME@[27; 30)
31 WHITESPACE@[30; 31) " " 31 IDENT@[27; 30) "bar"
32 EQ@[31; 32) "=" 32 WHITESPACE@[30; 31) " "
33 WHITESPACE@[32; 33) " " 33 EQ@[31; 32) "="
34 LITERAL@[33; 35) 34 WHITESPACE@[32; 33) " "
35 INT_NUMBER@[33; 35) "92" 35 LITERAL@[33; 35)
36 SEMI@[35; 36) ";" 36 INT_NUMBER@[33; 35) "92"
37 WHITESPACE@[36; 41) "\n " 37 SEMI@[35; 36) ";"
38 BIN_EXPR@[41; 44) 38 WHITESPACE@[36; 41) "\n "
39 LITERAL@[41; 42) 39 BIN_EXPR@[41; 44)
40 INT_NUMBER@[41; 42) "1" 40 LITERAL@[41; 42)
41 WHITESPACE@[42; 43) " " 41 INT_NUMBER@[41; 42) "1"
42 PLUS@[43; 44) "+" 42 WHITESPACE@[42; 43) " "
43 WHITESPACE@[44; 45) "\n" 43 PLUS@[43; 44) "+"
44 R_CURLY@[45; 46) "}" 44 WHITESPACE@[44; 45) "\n"
45 R_CURLY@[45; 46) "}"
45 WHITESPACE@[46; 47) "\n" 46 WHITESPACE@[46; 47) "\n"
46error 44: expected expression 47error 44: expected expression
diff --git a/crates/ra_syntax/test_data/parser/err/0018_incomplete_fn.txt b/crates/ra_syntax/test_data/parser/err/0018_incomplete_fn.txt
index 52eb7d5e2..d12f4c99b 100644
--- a/crates/ra_syntax/test_data/parser/err/0018_incomplete_fn.txt
+++ b/crates/ra_syntax/test_data/parser/err/0018_incomplete_fn.txt
@@ -32,89 +32,90 @@ SOURCE_FILE@[0; 183)
32 NAME_REF@[39; 46) 32 NAME_REF@[39; 46)
33 IDENT@[39; 46) "ScopeId" 33 IDENT@[39; 46) "ScopeId"
34 WHITESPACE@[46; 47) " " 34 WHITESPACE@[46; 47) " "
35 BLOCK@[47; 161) 35 BLOCK_EXPR@[47; 161)
36 L_CURLY@[47; 48) "{" 36 BLOCK@[47; 161)
37 WHITESPACE@[48; 57) "\n " 37 L_CURLY@[47; 48) "{"
38 LET_STMT@[57; 85) 38 WHITESPACE@[48; 57) "\n "
39 LET_KW@[57; 60) "let" 39 LET_STMT@[57; 85)
40 WHITESPACE@[60; 61) " " 40 LET_KW@[57; 60) "let"
41 BIND_PAT@[61; 64) 41 WHITESPACE@[60; 61) " "
42 NAME@[61; 64) 42 BIND_PAT@[61; 64)
43 IDENT@[61; 64) "res" 43 NAME@[61; 64)
44 WHITESPACE@[64; 65) " " 44 IDENT@[61; 64) "res"
45 EQ@[65; 66) "=" 45 WHITESPACE@[64; 65) " "
46 WHITESPACE@[66; 67) " " 46 EQ@[65; 66) "="
47 METHOD_CALL_EXPR@[67; 84) 47 WHITESPACE@[66; 67) " "
48 FIELD_EXPR@[67; 78) 48 METHOD_CALL_EXPR@[67; 84)
49 PATH_EXPR@[67; 71) 49 FIELD_EXPR@[67; 78)
50 PATH@[67; 71) 50 PATH_EXPR@[67; 71)
51 PATH_SEGMENT@[67; 71) 51 PATH@[67; 71)
52 SELF_KW@[67; 71) "self" 52 PATH_SEGMENT@[67; 71)
53 DOT@[71; 72) "." 53 SELF_KW@[67; 71) "self"
54 NAME_REF@[72; 78) 54 DOT@[71; 72) "."
55 IDENT@[72; 78) "scopes" 55 NAME_REF@[72; 78)
56 DOT@[78; 79) "." 56 IDENT@[72; 78) "scopes"
57 NAME_REF@[79; 82) 57 DOT@[78; 79) "."
58 IDENT@[79; 82) "len" 58 NAME_REF@[79; 82)
59 ARG_LIST@[82; 84) 59 IDENT@[79; 82) "len"
60 L_PAREN@[82; 83) "(" 60 ARG_LIST@[82; 84)
61 R_PAREN@[83; 84) ")" 61 L_PAREN@[82; 83) "("
62 SEMI@[84; 85) ";" 62 R_PAREN@[83; 84) ")"
63 WHITESPACE@[85; 94) "\n " 63 SEMI@[84; 85) ";"
64 METHOD_CALL_EXPR@[94; 155) 64 WHITESPACE@[85; 94) "\n "
65 FIELD_EXPR@[94; 105) 65 METHOD_CALL_EXPR@[94; 155)
66 PATH_EXPR@[94; 98) 66 FIELD_EXPR@[94; 105)
67 PATH@[94; 98) 67 PATH_EXPR@[94; 98)
68 PATH_SEGMENT@[94; 98) 68 PATH@[94; 98)
69 SELF_KW@[94; 98) "self" 69 PATH_SEGMENT@[94; 98)
70 DOT@[98; 99) "." 70 SELF_KW@[94; 98) "self"
71 NAME_REF@[99; 105) 71 DOT@[98; 99) "."
72 IDENT@[99; 105) "scopes" 72 NAME_REF@[99; 105)
73 DOT@[105; 106) "." 73 IDENT@[99; 105) "scopes"
74 NAME_REF@[106; 110) 74 DOT@[105; 106) "."
75 IDENT@[106; 110) "push" 75 NAME_REF@[106; 110)
76 ARG_LIST@[110; 155) 76 IDENT@[106; 110) "push"
77 L_PAREN@[110; 111) "(" 77 ARG_LIST@[110; 155)
78 RECORD_LIT@[111; 154) 78 L_PAREN@[110; 111) "("
79 PATH@[111; 120) 79 RECORD_LIT@[111; 154)
80 PATH_SEGMENT@[111; 120) 80 PATH@[111; 120)
81 NAME_REF@[111; 120) 81 PATH_SEGMENT@[111; 120)
82 IDENT@[111; 120) "ScopeData" 82 NAME_REF@[111; 120)
83 WHITESPACE@[120; 121) " " 83 IDENT@[111; 120) "ScopeData"
84 RECORD_FIELD_LIST@[121; 154) 84 WHITESPACE@[120; 121) " "
85 L_CURLY@[121; 122) "{" 85 RECORD_FIELD_LIST@[121; 154)
86 WHITESPACE@[122; 123) " " 86 L_CURLY@[121; 122) "{"
87 RECORD_FIELD@[123; 135) 87 WHITESPACE@[122; 123) " "
88 NAME_REF@[123; 129) 88 RECORD_FIELD@[123; 135)
89 IDENT@[123; 129) "parent" 89 NAME_REF@[123; 129)
90 COLON@[129; 130) ":" 90 IDENT@[123; 129) "parent"
91 WHITESPACE@[130; 131) " " 91 COLON@[129; 130) ":"
92 PATH_EXPR@[131; 135) 92 WHITESPACE@[130; 131) " "
93 PATH@[131; 135) 93 PATH_EXPR@[131; 135)
94 PATH_SEGMENT@[131; 135) 94 PATH@[131; 135)
95 NAME_REF@[131; 135) 95 PATH_SEGMENT@[131; 135)
96 IDENT@[131; 135) "None" 96 NAME_REF@[131; 135)
97 COMMA@[135; 136) "," 97 IDENT@[131; 135) "None"
98 WHITESPACE@[136; 137) " " 98 COMMA@[135; 136) ","
99 RECORD_FIELD@[137; 152) 99 WHITESPACE@[136; 137) " "
100 NAME_REF@[137; 144) 100 RECORD_FIELD@[137; 152)
101 IDENT@[137; 144) "entries" 101 NAME_REF@[137; 144)
102 COLON@[144; 145) ":" 102 IDENT@[137; 144) "entries"
103 WHITESPACE@[145; 146) " " 103 COLON@[144; 145) ":"
104 MACRO_CALL@[146; 152) 104 WHITESPACE@[145; 146) " "
105 PATH@[146; 149) 105 MACRO_CALL@[146; 152)
106 PATH_SEGMENT@[146; 149) 106 PATH@[146; 149)
107 NAME_REF@[146; 149) 107 PATH_SEGMENT@[146; 149)
108 IDENT@[146; 149) "vec" 108 NAME_REF@[146; 149)
109 EXCL@[149; 150) "!" 109 IDENT@[146; 149) "vec"
110 TOKEN_TREE@[150; 152) 110 EXCL@[149; 150) "!"
111 L_BRACK@[150; 151) "[" 111 TOKEN_TREE@[150; 152)
112 R_BRACK@[151; 152) "]" 112 L_BRACK@[150; 151) "["
113 WHITESPACE@[152; 153) " " 113 R_BRACK@[151; 152) "]"
114 R_CURLY@[153; 154) "}" 114 WHITESPACE@[152; 153) " "
115 R_PAREN@[154; 155) ")" 115 R_CURLY@[153; 154) "}"
116 WHITESPACE@[155; 160) "\n " 116 R_PAREN@[154; 155) ")"
117 R_CURLY@[160; 161) "}" 117 WHITESPACE@[155; 160) "\n "
118 R_CURLY@[160; 161) "}"
118 WHITESPACE@[161; 167) "\n\n " 119 WHITESPACE@[161; 167) "\n\n "
119 FN_DEF@[167; 180) 120 FN_DEF@[167; 180)
120 FN_KW@[167; 169) "fn" 121 FN_KW@[167; 169) "fn"
diff --git a/crates/ra_syntax/test_data/parser/err/0019_let_recover.txt b/crates/ra_syntax/test_data/parser/err/0019_let_recover.txt
index b6710241e..cc3578e54 100644
--- a/crates/ra_syntax/test_data/parser/err/0019_let_recover.txt
+++ b/crates/ra_syntax/test_data/parser/err/0019_let_recover.txt
@@ -8,88 +8,92 @@ SOURCE_FILE@[0; 139)
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_EXPR@[9; 138)
12 L_CURLY@[9; 10) "{" 12 BLOCK@[9; 138)
13 WHITESPACE@[10; 15) "\n " 13 L_CURLY@[9; 10) "{"
14 LET_STMT@[15; 24) 14 WHITESPACE@[10; 15) "\n "
15 LET_KW@[15; 18) "let" 15 LET_STMT@[15; 24)
16 WHITESPACE@[18; 19) " " 16 LET_KW@[15; 18) "let"
17 BIND_PAT@[19; 22) 17 WHITESPACE@[18; 19) " "
18 NAME@[19; 22) 18 BIND_PAT@[19; 22)
19 IDENT@[19; 22) "foo" 19 NAME@[19; 22)
20 WHITESPACE@[22; 23) " " 20 IDENT@[19; 22) "foo"
21 EQ@[23; 24) "=" 21 WHITESPACE@[22; 23) " "
22 WHITESPACE@[24; 29) "\n " 22 EQ@[23; 24) "="
23 LET_STMT@[29; 41) 23 WHITESPACE@[24; 29) "\n "
24 LET_KW@[29; 32) "let" 24 LET_STMT@[29; 41)
25 WHITESPACE@[32; 33) " " 25 LET_KW@[29; 32) "let"
26 BIND_PAT@[33; 36) 26 WHITESPACE@[32; 33) " "
27 NAME@[33; 36) 27 BIND_PAT@[33; 36)
28 IDENT@[33; 36) "bar" 28 NAME@[33; 36)
29 WHITESPACE@[36; 37) " " 29 IDENT@[33; 36) "bar"
30 EQ@[37; 38) "=" 30 WHITESPACE@[36; 37) " "
31 WHITESPACE@[38; 39) " " 31 EQ@[37; 38) "="
32 LITERAL@[39; 40) 32 WHITESPACE@[38; 39) " "
33 INT_NUMBER@[39; 40) "1" 33 LITERAL@[39; 40)
34 SEMI@[40; 41) ";" 34 INT_NUMBER@[39; 40) "1"
35 WHITESPACE@[41; 46) "\n " 35 SEMI@[40; 41) ";"
36 LET_STMT@[46; 49) 36 WHITESPACE@[41; 46) "\n "
37 LET_KW@[46; 49) "let" 37 LET_STMT@[46; 49)
38 WHITESPACE@[49; 54) "\n " 38 LET_KW@[46; 49) "let"
39 LET_STMT@[54; 67) 39 WHITESPACE@[49; 54) "\n "
40 LET_KW@[54; 57) "let" 40 LET_STMT@[54; 67)
41 WHITESPACE@[57; 58) " " 41 LET_KW@[54; 57) "let"
42 BIND_PAT@[58; 61) 42 WHITESPACE@[57; 58) " "
43 NAME@[58; 61) 43 BIND_PAT@[58; 61)
44 IDENT@[58; 61) "baz" 44 NAME@[58; 61)
45 WHITESPACE@[61; 62) " " 45 IDENT@[58; 61) "baz"
46 EQ@[62; 63) "=" 46 WHITESPACE@[61; 62) " "
47 WHITESPACE@[63; 64) " " 47 EQ@[62; 63) "="
48 LITERAL@[64; 66) 48 WHITESPACE@[63; 64) " "
49 INT_NUMBER@[64; 66) "92" 49 LITERAL@[64; 66)
50 SEMI@[66; 67) ";" 50 INT_NUMBER@[64; 66) "92"
51 WHITESPACE@[67; 72) "\n " 51 SEMI@[66; 67) ";"
52 LET_STMT@[72; 75) 52 WHITESPACE@[67; 72) "\n "
53 LET_KW@[72; 75) "let" 53 LET_STMT@[72; 75)
54 WHITESPACE@[75; 80) "\n " 54 LET_KW@[72; 75) "let"
55 EXPR_STMT@[80; 90) 55 WHITESPACE@[75; 80) "\n "
56 IF_EXPR@[80; 90) 56 EXPR_STMT@[80; 90)
57 IF_KW@[80; 82) "if" 57 IF_EXPR@[80; 90)
58 WHITESPACE@[82; 83) " " 58 IF_KW@[80; 82) "if"
59 CONDITION@[83; 87) 59 WHITESPACE@[82; 83) " "
60 LITERAL@[83; 87) 60 CONDITION@[83; 87)
61 TRUE_KW@[83; 87) "true" 61 LITERAL@[83; 87)
62 WHITESPACE@[87; 88) " " 62 TRUE_KW@[83; 87) "true"
63 BLOCK@[88; 90) 63 WHITESPACE@[87; 88) " "
64 L_CURLY@[88; 89) "{" 64 BLOCK_EXPR@[88; 90)
65 R_CURLY@[89; 90) "}" 65 BLOCK@[88; 90)
66 WHITESPACE@[90; 95) "\n " 66 L_CURLY@[88; 89) "{"
67 LET_STMT@[95; 98) 67 R_CURLY@[89; 90) "}"
68 LET_KW@[95; 98) "let" 68 WHITESPACE@[90; 95) "\n "
69 WHITESPACE@[98; 103) "\n " 69 LET_STMT@[95; 98)
70 EXPR_STMT@[103; 116) 70 LET_KW@[95; 98) "let"
71 WHILE_EXPR@[103; 116) 71 WHITESPACE@[98; 103) "\n "
72 WHILE_KW@[103; 108) "while" 72 EXPR_STMT@[103; 116)
73 WHITESPACE@[108; 109) " " 73 WHILE_EXPR@[103; 116)
74 CONDITION@[109; 113) 74 WHILE_KW@[103; 108) "while"
75 LITERAL@[109; 113) 75 WHITESPACE@[108; 109) " "
76 TRUE_KW@[109; 113) "true" 76 CONDITION@[109; 113)
77 WHITESPACE@[113; 114) " " 77 LITERAL@[109; 113)
78 BLOCK@[114; 116) 78 TRUE_KW@[109; 113) "true"
79 L_CURLY@[114; 115) "{" 79 WHITESPACE@[113; 114) " "
80 R_CURLY@[115; 116) "}" 80 BLOCK_EXPR@[114; 116)
81 WHITESPACE@[116; 121) "\n " 81 BLOCK@[114; 116)
82 LET_STMT@[121; 124) 82 L_CURLY@[114; 115) "{"
83 LET_KW@[121; 124) "let" 83 R_CURLY@[115; 116) "}"
84 WHITESPACE@[124; 129) "\n " 84 WHITESPACE@[116; 121) "\n "
85 LOOP_EXPR@[129; 136) 85 LET_STMT@[121; 124)
86 LOOP_KW@[129; 133) "loop" 86 LET_KW@[121; 124) "let"
87 WHITESPACE@[133; 134) " " 87 WHITESPACE@[124; 129) "\n "
88 BLOCK@[134; 136) 88 LOOP_EXPR@[129; 136)
89 L_CURLY@[134; 135) "{" 89 LOOP_KW@[129; 133) "loop"
90 R_CURLY@[135; 136) "}" 90 WHITESPACE@[133; 134) " "
91 WHITESPACE@[136; 137) "\n" 91 BLOCK_EXPR@[134; 136)
92 R_CURLY@[137; 138) "}" 92 BLOCK@[134; 136)
93 L_CURLY@[134; 135) "{"
94 R_CURLY@[135; 136) "}"
95 WHITESPACE@[136; 137) "\n"
96 R_CURLY@[137; 138) "}"
93 WHITESPACE@[138; 139) "\n" 97 WHITESPACE@[138; 139) "\n"
94error 24: expected expression 98error 24: expected expression
95error 24: expected SEMI 99error 24: expected SEMI
diff --git a/crates/ra_syntax/test_data/parser/err/0020_fn_recover.txt b/crates/ra_syntax/test_data/parser/err/0020_fn_recover.txt
index 71c014028..70727d059 100644
--- a/crates/ra_syntax/test_data/parser/err/0020_fn_recover.txt
+++ b/crates/ra_syntax/test_data/parser/err/0020_fn_recover.txt
@@ -11,9 +11,10 @@ SOURCE_FILE@[0; 16)
11 L_PAREN@[10; 11) "(" 11 L_PAREN@[10; 11) "("
12 R_PAREN@[11; 12) ")" 12 R_PAREN@[11; 12) ")"
13 WHITESPACE@[12; 13) " " 13 WHITESPACE@[12; 13) " "
14 BLOCK@[13; 15) 14 BLOCK_EXPR@[13; 15)
15 L_CURLY@[13; 14) "{" 15 BLOCK@[13; 15)
16 R_CURLY@[14; 15) "}" 16 L_CURLY@[13; 14) "{"
17 R_CURLY@[14; 15) "}"
17 WHITESPACE@[15; 16) "\n" 18 WHITESPACE@[15; 16) "\n"
18error 2: expected a name 19error 2: expected a name
19error 2: expected function arguments 20error 2: expected function arguments
diff --git a/crates/ra_syntax/test_data/parser/err/0021_incomplete_param.txt b/crates/ra_syntax/test_data/parser/err/0021_incomplete_param.txt
index c125a0bc9..333782480 100644
--- a/crates/ra_syntax/test_data/parser/err/0021_incomplete_param.txt
+++ b/crates/ra_syntax/test_data/parser/err/0021_incomplete_param.txt
@@ -25,10 +25,11 @@ SOURCE_FILE@[0; 22)
25 IDENT@[15; 16) "y" 25 IDENT@[15; 16) "y"
26 R_PAREN@[16; 17) ")" 26 R_PAREN@[16; 17) ")"
27 WHITESPACE@[17; 18) " " 27 WHITESPACE@[17; 18) " "
28 BLOCK@[18; 21) 28 BLOCK_EXPR@[18; 21)
29 L_CURLY@[18; 19) "{" 29 BLOCK@[18; 21)
30 WHITESPACE@[19; 20) "\n" 30 L_CURLY@[18; 19) "{"
31 R_CURLY@[20; 21) "}" 31 WHITESPACE@[19; 20) "\n"
32 R_CURLY@[20; 21) "}"
32 WHITESPACE@[21; 22) "\n" 33 WHITESPACE@[21; 22) "\n"
33error 16: expected COLON 34error 16: expected COLON
34error 16: expected type 35error 16: expected type
diff --git a/crates/ra_syntax/test_data/parser/err/0022_bad_exprs.txt b/crates/ra_syntax/test_data/parser/err/0022_bad_exprs.txt
index 32b53bba7..ee0ac52c3 100644
--- a/crates/ra_syntax/test_data/parser/err/0022_bad_exprs.txt
+++ b/crates/ra_syntax/test_data/parser/err/0022_bad_exprs.txt
@@ -8,38 +8,39 @@ SOURCE_FILE@[0; 112)
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_EXPR@[7; 33)
12 L_CURLY@[7; 8) "{" 12 BLOCK@[7; 33)
13 WHITESPACE@[8; 9) " " 13 L_CURLY@[7; 8) "{"
14 EXPR_STMT@[9; 15) 14 WHITESPACE@[8; 9) " "
15 ARRAY_EXPR@[9; 15) 15 EXPR_STMT@[9; 15)
16 L_BRACK@[9; 10) "[" 16 ARRAY_EXPR@[9; 15)
17 LITERAL@[10; 11) 17 L_BRACK@[9; 10) "["
18 INT_NUMBER@[10; 11) "1" 18 LITERAL@[10; 11)
19 COMMA@[11; 12) "," 19 INT_NUMBER@[10; 11) "1"
20 WHITESPACE@[12; 13) " " 20 COMMA@[11; 12) ","
21 LITERAL@[13; 14) 21 WHITESPACE@[12; 13) " "
22 INT_NUMBER@[13; 14) "2" 22 LITERAL@[13; 14)
23 COMMA@[14; 15) "," 23 INT_NUMBER@[13; 14) "2"
24 WHITESPACE@[15; 16) " " 24 COMMA@[14; 15) ","
25 EXPR_STMT@[16; 17) 25 WHITESPACE@[15; 16) " "
26 ERROR@[16; 17) 26 EXPR_STMT@[16; 17)
27 AT@[16; 17) "@" 27 ERROR@[16; 17)
28 EXPR_STMT@[17; 18) 28 AT@[16; 17) "@"
29 ERROR@[17; 18) 29 EXPR_STMT@[17; 18)
30 COMMA@[17; 18) "," 30 ERROR@[17; 18)
31 WHITESPACE@[18; 19) " " 31 COMMA@[17; 18) ","
32 STRUCT_DEF@[19; 26) 32 WHITESPACE@[18; 19) " "
33 STRUCT_KW@[19; 25) "struct" 33 STRUCT_DEF@[19; 26)
34 ERROR@[25; 26) 34 STRUCT_KW@[19; 25) "struct"
35 COMMA@[25; 26) "," 35 ERROR@[25; 26)
36 WHITESPACE@[26; 27) " " 36 COMMA@[25; 26) ","
37 LET_STMT@[27; 31) 37 WHITESPACE@[26; 27) " "
38 LET_KW@[27; 30) "let" 38 LET_STMT@[27; 31)
39 ERROR@[30; 31) 39 LET_KW@[27; 30) "let"
40 R_BRACK@[30; 31) "]" 40 ERROR@[30; 31)
41 WHITESPACE@[31; 32) " " 41 R_BRACK@[30; 31) "]"
42 R_CURLY@[32; 33) "}" 42 WHITESPACE@[31; 32) " "
43 R_CURLY@[32; 33) "}"
43 WHITESPACE@[33; 34) "\n" 44 WHITESPACE@[33; 34) "\n"
44 FN_DEF@[34; 68) 45 FN_DEF@[34; 68)
45 FN_KW@[34; 36) "fn" 46 FN_KW@[34; 36) "fn"
@@ -50,45 +51,46 @@ SOURCE_FILE@[0; 112)
50 L_PAREN@[38; 39) "(" 51 L_PAREN@[38; 39) "("
51 R_PAREN@[39; 40) ")" 52 R_PAREN@[39; 40) ")"
52 WHITESPACE@[40; 41) " " 53 WHITESPACE@[40; 41) " "
53 BLOCK@[41; 68) 54 BLOCK_EXPR@[41; 68)
54 L_CURLY@[41; 42) "{" 55 BLOCK@[41; 68)
55 WHITESPACE@[42; 43) " " 56 L_CURLY@[41; 42) "{"
56 EXPR_STMT@[43; 52) 57 WHITESPACE@[42; 43) " "
57 CALL_EXPR@[43; 52) 58 EXPR_STMT@[43; 52)
58 PATH_EXPR@[43; 46) 59 CALL_EXPR@[43; 52)
59 PATH@[43; 46) 60 PATH_EXPR@[43; 46)
60 PATH_SEGMENT@[43; 46) 61 PATH@[43; 46)
61 NAME_REF@[43; 46) 62 PATH_SEGMENT@[43; 46)
62 IDENT@[43; 46) "foo" 63 NAME_REF@[43; 46)
63 ARG_LIST@[46; 52) 64 IDENT@[43; 46) "foo"
64 L_PAREN@[46; 47) "(" 65 ARG_LIST@[46; 52)
65 LITERAL@[47; 48) 66 L_PAREN@[46; 47) "("
66 INT_NUMBER@[47; 48) "1" 67 LITERAL@[47; 48)
67 COMMA@[48; 49) "," 68 INT_NUMBER@[47; 48) "1"
68 WHITESPACE@[49; 50) " " 69 COMMA@[48; 49) ","
69 LITERAL@[50; 51) 70 WHITESPACE@[49; 50) " "
70 INT_NUMBER@[50; 51) "2" 71 LITERAL@[50; 51)
71 COMMA@[51; 52) "," 72 INT_NUMBER@[50; 51) "2"
72 WHITESPACE@[52; 53) " " 73 COMMA@[51; 52) ","
73 EXPR_STMT@[53; 54) 74 WHITESPACE@[52; 53) " "
74 ERROR@[53; 54) 75 EXPR_STMT@[53; 54)
75 AT@[53; 54) "@" 76 ERROR@[53; 54)
76 EXPR_STMT@[54; 55) 77 AT@[53; 54) "@"
77 ERROR@[54; 55) 78 EXPR_STMT@[54; 55)
78 COMMA@[54; 55) "," 79 ERROR@[54; 55)
79 WHITESPACE@[55; 56) " " 80 COMMA@[54; 55) ","
80 IMPL_BLOCK@[56; 60) 81 WHITESPACE@[55; 56) " "
81 IMPL_KW@[56; 60) "impl" 82 IMPL_BLOCK@[56; 60)
82 EXPR_STMT@[60; 61) 83 IMPL_KW@[56; 60) "impl"
83 ERROR@[60; 61) 84 EXPR_STMT@[60; 61)
84 COMMA@[60; 61) "," 85 ERROR@[60; 61)
85 WHITESPACE@[61; 62) " " 86 COMMA@[60; 61) ","
86 LET_STMT@[62; 65) 87 WHITESPACE@[61; 62) " "
87 LET_KW@[62; 65) "let" 88 LET_STMT@[62; 65)
88 ERROR@[65; 66) 89 LET_KW@[62; 65) "let"
89 R_PAREN@[65; 66) ")" 90 ERROR@[65; 66)
90 WHITESPACE@[66; 67) " " 91 R_PAREN@[65; 66) ")"
91 R_CURLY@[67; 68) "}" 92 WHITESPACE@[66; 67) " "
93 R_CURLY@[67; 68) "}"
92 WHITESPACE@[68; 69) "\n" 94 WHITESPACE@[68; 69) "\n"
93 FN_DEF@[69; 111) 95 FN_DEF@[69; 111)
94 FN_KW@[69; 71) "fn" 96 FN_KW@[69; 71) "fn"
@@ -99,54 +101,55 @@ SOURCE_FILE@[0; 112)
99 L_PAREN@[73; 74) "(" 101 L_PAREN@[73; 74) "("
100 R_PAREN@[74; 75) ")" 102 R_PAREN@[74; 75) ")"
101 WHITESPACE@[75; 76) " " 103 WHITESPACE@[75; 76) " "
102 BLOCK@[76; 111) 104 BLOCK_EXPR@[76; 111)
103 L_CURLY@[76; 77) "{" 105 BLOCK@[76; 111)
104 WHITESPACE@[77; 78) " " 106 L_CURLY@[76; 77) "{"
105 EXPR_STMT@[78; 91) 107 WHITESPACE@[77; 78) " "
106 METHOD_CALL_EXPR@[78; 91) 108 EXPR_STMT@[78; 91)
107 PATH_EXPR@[78; 81) 109 METHOD_CALL_EXPR@[78; 91)
108 PATH@[78; 81) 110 PATH_EXPR@[78; 81)
109 PATH_SEGMENT@[78; 81) 111 PATH@[78; 81)
110 NAME_REF@[78; 81) 112 PATH_SEGMENT@[78; 81)
111 IDENT@[78; 81) "foo" 113 NAME_REF@[78; 81)
112 DOT@[81; 82) "." 114 IDENT@[78; 81) "foo"
113 NAME_REF@[82; 85) 115 DOT@[81; 82) "."
114 IDENT@[82; 85) "bar" 116 NAME_REF@[82; 85)
115 ARG_LIST@[85; 91) 117 IDENT@[82; 85) "bar"
116 L_PAREN@[85; 86) "(" 118 ARG_LIST@[85; 91)
117 LITERAL@[86; 87) 119 L_PAREN@[85; 86) "("
118 INT_NUMBER@[86; 87) "1" 120 LITERAL@[86; 87)
119 COMMA@[87; 88) "," 121 INT_NUMBER@[86; 87) "1"
120 WHITESPACE@[88; 89) " " 122 COMMA@[87; 88) ","
121 LITERAL@[89; 90) 123 WHITESPACE@[88; 89) " "
122 INT_NUMBER@[89; 90) "2" 124 LITERAL@[89; 90)
123 COMMA@[90; 91) "," 125 INT_NUMBER@[89; 90) "2"
124 WHITESPACE@[91; 92) " " 126 COMMA@[90; 91) ","
125 EXPR_STMT@[92; 93) 127 WHITESPACE@[91; 92) " "
126 ERROR@[92; 93) 128 EXPR_STMT@[92; 93)
127 AT@[92; 93) "@" 129 ERROR@[92; 93)
128 EXPR_STMT@[93; 94) 130 AT@[92; 93) "@"
129 ERROR@[93; 94) 131 EXPR_STMT@[93; 94)
130 COMMA@[93; 94) "," 132 ERROR@[93; 94)
131 WHITESPACE@[94; 95) " " 133 COMMA@[93; 94) ","
132 EXPR_STMT@[95; 96) 134 WHITESPACE@[94; 95) " "
133 ERROR@[95; 96) 135 EXPR_STMT@[95; 96)
134 R_BRACK@[95; 96) "]" 136 ERROR@[95; 96)
135 EXPR_STMT@[96; 97) 137 R_BRACK@[95; 96) "]"
136 ERROR@[96; 97) 138 EXPR_STMT@[96; 97)
137 COMMA@[96; 97) "," 139 ERROR@[96; 97)
138 WHITESPACE@[97; 98) " " 140 COMMA@[96; 97) ","
139 TRAIT_DEF@[98; 104) 141 WHITESPACE@[97; 98) " "
140 TRAIT_KW@[98; 103) "trait" 142 TRAIT_DEF@[98; 104)
141 ERROR@[103; 104) 143 TRAIT_KW@[98; 103) "trait"
142 COMMA@[103; 104) "," 144 ERROR@[103; 104)
143 WHITESPACE@[104; 105) " " 145 COMMA@[103; 104) ","
144 LET_STMT@[105; 108) 146 WHITESPACE@[104; 105) " "
145 LET_KW@[105; 108) "let" 147 LET_STMT@[105; 108)
146 ERROR@[108; 109) 148 LET_KW@[105; 108) "let"
147 R_PAREN@[108; 109) ")" 149 ERROR@[108; 109)
148 WHITESPACE@[109; 110) " " 150 R_PAREN@[108; 109) ")"
149 R_CURLY@[110; 111) "}" 151 WHITESPACE@[109; 110) " "
152 R_CURLY@[110; 111) "}"
150 WHITESPACE@[111; 112) "\n" 153 WHITESPACE@[111; 112) "\n"
151error 15: expected expression 154error 15: expected expression
152error 15: expected R_BRACK 155error 15: expected R_BRACK
diff --git a/crates/ra_syntax/test_data/parser/err/0023_mismatched_paren.txt b/crates/ra_syntax/test_data/parser/err/0023_mismatched_paren.txt
index f2515faa7..6dd04f80e 100644
--- a/crates/ra_syntax/test_data/parser/err/0023_mismatched_paren.txt
+++ b/crates/ra_syntax/test_data/parser/err/0023_mismatched_paren.txt
@@ -8,31 +8,32 @@ SOURCE_FILE@[0; 94)
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_EXPR@[10; 55)
12 L_CURLY@[10; 11) "{" 12 BLOCK@[10; 55)
13 WHITESPACE@[11; 16) "\n " 13 L_CURLY@[10; 11) "{"
14 MACRO_CALL@[16; 49) 14 WHITESPACE@[11; 16) "\n "
15 PATH@[16; 19) 15 MACRO_CALL@[16; 49)
16 PATH_SEGMENT@[16; 19) 16 PATH@[16; 19)
17 NAME_REF@[16; 19) 17 PATH_SEGMENT@[16; 19)
18 IDENT@[16; 19) "foo" 18 NAME_REF@[16; 19)
19 EXCL@[19; 20) "!" 19 IDENT@[16; 19) "foo"
20 WHITESPACE@[20; 21) " " 20 EXCL@[19; 20) "!"
21 TOKEN_TREE@[21; 49) 21 WHITESPACE@[20; 21) " "
22 L_PAREN@[21; 22) "(" 22 TOKEN_TREE@[21; 49)
23 WHITESPACE@[22; 31) "\n " 23 L_PAREN@[21; 22) "("
24 IDENT@[31; 34) "bar" 24 WHITESPACE@[22; 31) "\n "
25 COMMA@[34; 35) "," 25 IDENT@[31; 34) "bar"
26 WHITESPACE@[35; 36) " " 26 COMMA@[34; 35) ","
27 STRING@[36; 41) "\"baz\"" 27 WHITESPACE@[35; 36) " "
28 COMMA@[41; 42) "," 28 STRING@[36; 41) "\"baz\""
29 WHITESPACE@[42; 43) " " 29 COMMA@[41; 42) ","
30 INT_NUMBER@[43; 44) "1" 30 WHITESPACE@[42; 43) " "
31 COMMA@[44; 45) "," 31 INT_NUMBER@[43; 44) "1"
32 WHITESPACE@[45; 46) " " 32 COMMA@[44; 45) ","
33 FLOAT_NUMBER@[46; 49) "2.0" 33 WHITESPACE@[45; 46) " "
34 WHITESPACE@[49; 54) "\n " 34 FLOAT_NUMBER@[46; 49) "2.0"
35 R_CURLY@[54; 55) "}" 35 WHITESPACE@[49; 54) "\n "
36 R_CURLY@[54; 55) "}"
36 WHITESPACE@[55; 56) " " 37 WHITESPACE@[55; 56) " "
37 COMMENT@[56; 91) "//~ ERROR incorrect c ..." 38 COMMENT@[56; 91) "//~ ERROR incorrect c ..."
38 WHITESPACE@[91; 92) "\n" 39 WHITESPACE@[91; 92) "\n"
diff --git a/crates/ra_syntax/test_data/parser/err/0024_many_type_parens.txt b/crates/ra_syntax/test_data/parser/err/0024_many_type_parens.txt
index faf0fe462..198daf7b4 100644
--- a/crates/ra_syntax/test_data/parser/err/0024_many_type_parens.txt
+++ b/crates/ra_syntax/test_data/parser/err/0024_many_type_parens.txt
@@ -61,9 +61,10 @@ SOURCE_FILE@[0; 240)
61 L_PAREN@[48; 49) "(" 61 L_PAREN@[48; 49) "("
62 R_PAREN@[49; 50) ")" 62 R_PAREN@[49; 50) ")"
63 WHITESPACE@[50; 51) " " 63 WHITESPACE@[50; 51) " "
64 BLOCK@[51; 53) 64 BLOCK_EXPR@[51; 53)
65 L_CURLY@[51; 52) "{" 65 BLOCK@[51; 53)
66 R_CURLY@[52; 53) "}" 66 L_CURLY@[51; 52) "{"
67 R_CURLY@[52; 53) "}"
67 WHITESPACE@[53; 55) "\n\n" 68 WHITESPACE@[53; 55) "\n\n"
68 FN_DEF@[55; 239) 69 FN_DEF@[55; 239)
69 FN_KW@[55; 57) "fn" 70 FN_KW@[55; 57) "fn"
@@ -74,222 +75,223 @@ SOURCE_FILE@[0; 240)
74 L_PAREN@[62; 63) "(" 75 L_PAREN@[62; 63) "("
75 R_PAREN@[63; 64) ")" 76 R_PAREN@[63; 64) ")"
76 WHITESPACE@[64; 65) " " 77 WHITESPACE@[64; 65) " "
77 BLOCK@[65; 239) 78 BLOCK_EXPR@[65; 239)
78 L_CURLY@[65; 66) "{" 79 BLOCK@[65; 239)
79 WHITESPACE@[66; 71) "\n " 80 L_CURLY@[65; 66) "{"
80 LET_STMT@[71; 121) 81 WHITESPACE@[66; 71) "\n "
81 LET_KW@[71; 74) "let" 82 LET_STMT@[71; 121)
82 WHITESPACE@[74; 75) " " 83 LET_KW@[71; 74) "let"
83 PLACEHOLDER_PAT@[75; 76) 84 WHITESPACE@[74; 75) " "
84 UNDERSCORE@[75; 76) "_" 85 PLACEHOLDER_PAT@[75; 76)
85 COLON@[76; 77) ":" 86 UNDERSCORE@[75; 76) "_"
86 WHITESPACE@[77; 78) " " 87 COLON@[76; 77) ":"
87 DYN_TRAIT_TYPE@[78; 121) 88 WHITESPACE@[77; 78) " "
88 TYPE_BOUND_LIST@[78; 121) 89 DYN_TRAIT_TYPE@[78; 121)
89 TYPE_BOUND@[78; 88) 90 TYPE_BOUND_LIST@[78; 121)
90 PATH_TYPE@[78; 88) 91 TYPE_BOUND@[78; 88)
91 PATH@[78; 88) 92 PATH_TYPE@[78; 88)
92 PATH_SEGMENT@[78; 88) 93 PATH@[78; 88)
93 NAME_REF@[78; 81) 94 PATH_SEGMENT@[78; 88)
94 IDENT@[78; 81) "Box" 95 NAME_REF@[78; 81)
95 TYPE_ARG_LIST@[81; 88) 96 IDENT@[78; 81) "Box"
96 L_ANGLE@[81; 82) "<" 97 TYPE_ARG_LIST@[81; 88)
97 TYPE_ARG@[82; 88) 98 L_ANGLE@[81; 82) "<"
98 PAREN_TYPE@[82; 88) 99 TYPE_ARG@[82; 88)
99 L_PAREN@[82; 83) "(" 100 PAREN_TYPE@[82; 88)
100 PATH_TYPE@[83; 87) 101 L_PAREN@[82; 83) "("
101 PATH@[83; 87) 102 PATH_TYPE@[83; 87)
102 PATH_SEGMENT@[83; 87) 103 PATH@[83; 87)
103 NAME_REF@[83; 87) 104 PATH_SEGMENT@[83; 87)
104 IDENT@[83; 87) "Copy" 105 NAME_REF@[83; 87)
105 R_PAREN@[87; 88) ")" 106 IDENT@[83; 87) "Copy"
106 WHITESPACE@[88; 89) " " 107 R_PAREN@[87; 88) ")"
107 PLUS@[89; 90) "+" 108 WHITESPACE@[88; 89) " "
108 WHITESPACE@[90; 91) " " 109 PLUS@[89; 90) "+"
109 TYPE_BOUND@[91; 99) 110 WHITESPACE@[90; 91) " "
110 L_PAREN@[91; 92) "(" 111 TYPE_BOUND@[91; 99)
111 QUESTION@[92; 93) "?" 112 L_PAREN@[91; 92) "("
112 PATH_TYPE@[93; 98) 113 QUESTION@[92; 93) "?"
113 PATH@[93; 98) 114 PATH_TYPE@[93; 98)
114 PATH_SEGMENT@[93; 98) 115 PATH@[93; 98)
115 NAME_REF@[93; 98) 116 PATH_SEGMENT@[93; 98)
116 IDENT@[93; 98) "Sized" 117 NAME_REF@[93; 98)
117 R_PAREN@[98; 99) ")" 118 IDENT@[93; 98) "Sized"
118 WHITESPACE@[99; 100) " " 119 R_PAREN@[98; 99) ")"
119 PLUS@[100; 101) "+" 120 WHITESPACE@[99; 100) " "
120 WHITESPACE@[101; 102) " " 121 PLUS@[100; 101) "+"
121 TYPE_BOUND@[102; 121) 122 WHITESPACE@[101; 102) " "
122 L_PAREN@[102; 103) "(" 123 TYPE_BOUND@[102; 121)
123 FOR_TYPE@[103; 120) 124 L_PAREN@[102; 103) "("
124 FOR_KW@[103; 106) "for" 125 FOR_TYPE@[103; 120)
125 TYPE_PARAM_LIST@[106; 110) 126 FOR_KW@[103; 106) "for"
126 L_ANGLE@[106; 107) "<" 127 TYPE_PARAM_LIST@[106; 110)
127 LIFETIME_PARAM@[107; 109) 128 L_ANGLE@[106; 107) "<"
128 LIFETIME@[107; 109) "\'a" 129 LIFETIME_PARAM@[107; 109)
129 R_ANGLE@[109; 110) ">" 130 LIFETIME@[107; 109) "\'a"
130 WHITESPACE@[110; 111) " " 131 R_ANGLE@[109; 110) ">"
131 PATH_TYPE@[111; 120) 132 WHITESPACE@[110; 111) " "
132 PATH@[111; 120) 133 PATH_TYPE@[111; 120)
133 PATH_SEGMENT@[111; 120) 134 PATH@[111; 120)
134 NAME_REF@[111; 116) 135 PATH_SEGMENT@[111; 120)
135 IDENT@[111; 116) "Trait" 136 NAME_REF@[111; 116)
136 TYPE_ARG_LIST@[116; 120) 137 IDENT@[111; 116) "Trait"
137 L_ANGLE@[116; 117) "<" 138 TYPE_ARG_LIST@[116; 120)
138 LIFETIME_ARG@[117; 119) 139 L_ANGLE@[116; 117) "<"
139 LIFETIME@[117; 119) "\'a" 140 LIFETIME_ARG@[117; 119)
140 R_ANGLE@[119; 120) ">" 141 LIFETIME@[117; 119) "\'a"
141 R_PAREN@[120; 121) ")" 142 R_ANGLE@[119; 120) ">"
142 EXPR_STMT@[121; 123) 143 R_PAREN@[120; 121) ")"
143 ERROR@[121; 122) 144 EXPR_STMT@[121; 123)
144 R_ANGLE@[121; 122) ">" 145 ERROR@[121; 122)
145 SEMI@[122; 123) ";" 146 R_ANGLE@[121; 122) ">"
146 WHITESPACE@[123; 128) "\n " 147 SEMI@[122; 123) ";"
147 LET_STMT@[128; 141) 148 WHITESPACE@[123; 128) "\n "
148 LET_KW@[128; 131) "let" 149 LET_STMT@[128; 141)
149 WHITESPACE@[131; 132) " " 150 LET_KW@[128; 131) "let"
150 PLACEHOLDER_PAT@[132; 133) 151 WHITESPACE@[131; 132) " "
151 UNDERSCORE@[132; 133) "_" 152 PLACEHOLDER_PAT@[132; 133)
152 COLON@[133; 134) ":" 153 UNDERSCORE@[132; 133) "_"
153 WHITESPACE@[134; 135) " " 154 COLON@[133; 134) ":"
154 PATH_TYPE@[135; 141) 155 WHITESPACE@[134; 135) " "
155 PATH@[135; 141) 156 PATH_TYPE@[135; 141)
156 PATH_SEGMENT@[135; 141) 157 PATH@[135; 141)
157 NAME_REF@[135; 138) 158 PATH_SEGMENT@[135; 141)
158 IDENT@[135; 138) "Box" 159 NAME_REF@[135; 138)
159 TYPE_ARG_LIST@[138; 141) 160 IDENT@[135; 138) "Box"
160 L_ANGLE@[138; 139) "<" 161 TYPE_ARG_LIST@[138; 141)
161 TYPE_ARG@[139; 141) 162 L_ANGLE@[138; 139) "<"
162 PAREN_TYPE@[139; 141) 163 TYPE_ARG@[139; 141)
163 L_PAREN@[139; 140) "(" 164 PAREN_TYPE@[139; 141)
164 ERROR@[140; 141) 165 L_PAREN@[139; 140) "("
165 QUESTION@[140; 141) "?" 166 ERROR@[140; 141)
166 EXPR_STMT@[141; 146) 167 QUESTION@[140; 141) "?"
167 PATH_EXPR@[141; 146) 168 EXPR_STMT@[141; 146)
168 PATH@[141; 146) 169 PATH_EXPR@[141; 146)
169 PATH_SEGMENT@[141; 146) 170 PATH@[141; 146)
170 NAME_REF@[141; 146) 171 PATH_SEGMENT@[141; 146)
171 IDENT@[141; 146) "Sized" 172 NAME_REF@[141; 146)
172 EXPR_STMT@[146; 147) 173 IDENT@[141; 146) "Sized"
173 ERROR@[146; 147) 174 EXPR_STMT@[146; 147)
174 R_PAREN@[146; 147) ")" 175 ERROR@[146; 147)
175 WHITESPACE@[147; 148) " " 176 R_PAREN@[146; 147) ")"
176 EXPR_STMT@[148; 149) 177 WHITESPACE@[147; 148) " "
177 ERROR@[148; 149) 178 EXPR_STMT@[148; 149)
178 PLUS@[148; 149) "+" 179 ERROR@[148; 149)
179 WHITESPACE@[149; 150) " " 180 PLUS@[148; 149) "+"
180 EXPR_STMT@[150; 151) 181 WHITESPACE@[149; 150) " "
181 PAREN_EXPR@[150; 151) 182 EXPR_STMT@[150; 151)
182 L_PAREN@[150; 151) "(" 183 PAREN_EXPR@[150; 151)
183 EXPR_STMT@[151; 157) 184 L_PAREN@[150; 151) "("
184 FOR_EXPR@[151; 157) 185 EXPR_STMT@[151; 157)
185 FOR_KW@[151; 154) "for" 186 FOR_EXPR@[151; 157)
186 ERROR@[154; 155) 187 FOR_KW@[151; 154) "for"
187 L_ANGLE@[154; 155) "<" 188 ERROR@[154; 155)
188 ERROR@[155; 157) 189 L_ANGLE@[154; 155) "<"
189 LIFETIME@[155; 157) "\'a" 190 ERROR@[155; 157)
190 EXPR_STMT@[157; 158) 191 LIFETIME@[155; 157) "\'a"
191 ERROR@[157; 158) 192 EXPR_STMT@[157; 158)
192 R_ANGLE@[157; 158) ">" 193 ERROR@[157; 158)
193 WHITESPACE@[158; 159) " " 194 R_ANGLE@[157; 158) ">"
194 EXPR_STMT@[159; 180) 195 WHITESPACE@[158; 159) " "
195 BIN_EXPR@[159; 180) 196 EXPR_STMT@[159; 180)
196 BIN_EXPR@[159; 178) 197 BIN_EXPR@[159; 180)
197 BIN_EXPR@[159; 169) 198 BIN_EXPR@[159; 178)
198 BIN_EXPR@[159; 167) 199 BIN_EXPR@[159; 169)
199 PATH_EXPR@[159; 164) 200 BIN_EXPR@[159; 167)
200 PATH@[159; 164) 201 PATH_EXPR@[159; 164)
201 PATH_SEGMENT@[159; 164) 202 PATH@[159; 164)
202 NAME_REF@[159; 164) 203 PATH_SEGMENT@[159; 164)
203 IDENT@[159; 164) "Trait" 204 NAME_REF@[159; 164)
204 L_ANGLE@[164; 165) "<" 205 IDENT@[159; 164) "Trait"
205 ERROR@[165; 167) 206 L_ANGLE@[164; 165) "<"
206 LIFETIME@[165; 167) "\'a" 207 ERROR@[165; 167)
207 R_ANGLE@[167; 168) ">" 208 LIFETIME@[165; 167) "\'a"
208 ERROR@[168; 169) 209 R_ANGLE@[167; 168) ">"
209 R_PAREN@[168; 169) ")" 210 ERROR@[168; 169)
210 WHITESPACE@[169; 170) " " 211 R_PAREN@[168; 169) ")"
211 PLUS@[170; 171) "+" 212 WHITESPACE@[169; 170) " "
212 WHITESPACE@[171; 172) " " 213 PLUS@[170; 171) "+"
213 PAREN_EXPR@[172; 178) 214 WHITESPACE@[171; 172) " "
214 L_PAREN@[172; 173) "(" 215 PAREN_EXPR@[172; 178)
215 PATH_EXPR@[173; 177) 216 L_PAREN@[172; 173) "("
216 PATH@[173; 177) 217 PATH_EXPR@[173; 177)
217 PATH_SEGMENT@[173; 177) 218 PATH@[173; 177)
218 NAME_REF@[173; 177) 219 PATH_SEGMENT@[173; 177)
219 IDENT@[173; 177) "Copy" 220 NAME_REF@[173; 177)
220 R_PAREN@[177; 178) ")" 221 IDENT@[173; 177) "Copy"
221 R_ANGLE@[178; 179) ">" 222 R_PAREN@[177; 178) ")"
222 ERROR@[179; 180) 223 R_ANGLE@[178; 179) ">"
223 SEMI@[179; 180) ";" 224 ERROR@[179; 180)
224 WHITESPACE@[180; 185) "\n " 225 SEMI@[179; 180) ";"
225 LET_STMT@[185; 235) 226 WHITESPACE@[180; 185) "\n "
226 LET_KW@[185; 188) "let" 227 LET_STMT@[185; 235)
227 WHITESPACE@[188; 189) " " 228 LET_KW@[185; 188) "let"
228 PLACEHOLDER_PAT@[189; 190) 229 WHITESPACE@[188; 189) " "
229 UNDERSCORE@[189; 190) "_" 230 PLACEHOLDER_PAT@[189; 190)
230 COLON@[190; 191) ":" 231 UNDERSCORE@[189; 190) "_"
231 WHITESPACE@[191; 192) " " 232 COLON@[190; 191) ":"
232 DYN_TRAIT_TYPE@[192; 235) 233 WHITESPACE@[191; 192) " "
233 TYPE_BOUND_LIST@[192; 235) 234 DYN_TRAIT_TYPE@[192; 235)
234 TYPE_BOUND@[192; 215) 235 TYPE_BOUND_LIST@[192; 235)
235 PATH_TYPE@[192; 215) 236 TYPE_BOUND@[192; 215)
236 PATH@[192; 215) 237 PATH_TYPE@[192; 215)
237 PATH_SEGMENT@[192; 215) 238 PATH@[192; 215)
238 NAME_REF@[192; 195) 239 PATH_SEGMENT@[192; 215)
239 IDENT@[192; 195) "Box" 240 NAME_REF@[192; 195)
240 TYPE_ARG_LIST@[195; 215) 241 IDENT@[192; 195) "Box"
241 L_ANGLE@[195; 196) "<" 242 TYPE_ARG_LIST@[195; 215)
242 TYPE_ARG@[196; 215) 243 L_ANGLE@[195; 196) "<"
243 PAREN_TYPE@[196; 215) 244 TYPE_ARG@[196; 215)
244 L_PAREN@[196; 197) "(" 245 PAREN_TYPE@[196; 215)
245 FOR_TYPE@[197; 214) 246 L_PAREN@[196; 197) "("
246 FOR_KW@[197; 200) "for" 247 FOR_TYPE@[197; 214)
247 TYPE_PARAM_LIST@[200; 204) 248 FOR_KW@[197; 200) "for"
248 L_ANGLE@[200; 201) "<" 249 TYPE_PARAM_LIST@[200; 204)
249 LIFETIME_PARAM@[201; 203) 250 L_ANGLE@[200; 201) "<"
250 LIFETIME@[201; 203) "\'a" 251 LIFETIME_PARAM@[201; 203)
251 R_ANGLE@[203; 204) ">" 252 LIFETIME@[201; 203) "\'a"
252 WHITESPACE@[204; 205) " " 253 R_ANGLE@[203; 204) ">"
253 PATH_TYPE@[205; 214) 254 WHITESPACE@[204; 205) " "
254 PATH@[205; 214) 255 PATH_TYPE@[205; 214)
255 PATH_SEGMENT@[205; 214) 256 PATH@[205; 214)
256 NAME_REF@[205; 210) 257 PATH_SEGMENT@[205; 214)
257 IDENT@[205; 210) "Trait" 258 NAME_REF@[205; 210)
258 TYPE_ARG_LIST@[210; 214) 259 IDENT@[205; 210) "Trait"
259 L_ANGLE@[210; 211) "<" 260 TYPE_ARG_LIST@[210; 214)
260 LIFETIME_ARG@[211; 213) 261 L_ANGLE@[210; 211) "<"
261 LIFETIME@[211; 213) "\'a" 262 LIFETIME_ARG@[211; 213)
262 R_ANGLE@[213; 214) ">" 263 LIFETIME@[211; 213) "\'a"
263 R_PAREN@[214; 215) ")" 264 R_ANGLE@[213; 214) ">"
264 WHITESPACE@[215; 216) " " 265 R_PAREN@[214; 215) ")"
265 PLUS@[216; 217) "+" 266 WHITESPACE@[215; 216) " "
266 WHITESPACE@[217; 218) " " 267 PLUS@[216; 217) "+"
267 TYPE_BOUND@[218; 224) 268 WHITESPACE@[217; 218) " "
268 L_PAREN@[218; 219) "(" 269 TYPE_BOUND@[218; 224)
269 PATH_TYPE@[219; 223) 270 L_PAREN@[218; 219) "("
270 PATH@[219; 223) 271 PATH_TYPE@[219; 223)
271 PATH_SEGMENT@[219; 223) 272 PATH@[219; 223)
272 NAME_REF@[219; 223) 273 PATH_SEGMENT@[219; 223)
273 IDENT@[219; 223) "Copy" 274 NAME_REF@[219; 223)
274 R_PAREN@[223; 224) ")" 275 IDENT@[219; 223) "Copy"
275 WHITESPACE@[224; 225) " " 276 R_PAREN@[223; 224) ")"
276 PLUS@[225; 226) "+" 277 WHITESPACE@[224; 225) " "
277 WHITESPACE@[226; 227) " " 278 PLUS@[225; 226) "+"
278 TYPE_BOUND@[227; 235) 279 WHITESPACE@[226; 227) " "
279 L_PAREN@[227; 228) "(" 280 TYPE_BOUND@[227; 235)
280 QUESTION@[228; 229) "?" 281 L_PAREN@[227; 228) "("
281 PATH_TYPE@[229; 234) 282 QUESTION@[228; 229) "?"
282 PATH@[229; 234) 283 PATH_TYPE@[229; 234)
283 PATH_SEGMENT@[229; 234) 284 PATH@[229; 234)
284 NAME_REF@[229; 234) 285 PATH_SEGMENT@[229; 234)
285 IDENT@[229; 234) "Sized" 286 NAME_REF@[229; 234)
286 R_PAREN@[234; 235) ")" 287 IDENT@[229; 234) "Sized"
287 EXPR_STMT@[235; 237) 288 R_PAREN@[234; 235) ")"
288 ERROR@[235; 236) 289 EXPR_STMT@[235; 237)
289 R_ANGLE@[235; 236) ">" 290 ERROR@[235; 236)
290 SEMI@[236; 237) ";" 291 R_ANGLE@[235; 236) ">"
291 WHITESPACE@[237; 238) "\n" 292 SEMI@[236; 237) ";"
292 R_CURLY@[238; 239) "}" 293 WHITESPACE@[237; 238) "\n"
294 R_CURLY@[238; 239) "}"
293 WHITESPACE@[239; 240) "\n" 295 WHITESPACE@[239; 240) "\n"
294error 88: expected COMMA 296error 88: expected COMMA
295error 88: expected R_ANGLE 297error 88: expected R_ANGLE
diff --git a/crates/ra_syntax/test_data/parser/err/0025_nope.txt b/crates/ra_syntax/test_data/parser/err/0025_nope.txt
index 7b228a8ed..8369f4bda 100644
--- a/crates/ra_syntax/test_data/parser/err/0025_nope.txt
+++ b/crates/ra_syntax/test_data/parser/err/0025_nope.txt
@@ -8,187 +8,188 @@ SOURCE_FILE@[0; 575)
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_EXPR@[10; 574)
12 L_CURLY@[10; 11) "{" 12 BLOCK@[10; 574)
13 WHITESPACE@[11; 16) "\n " 13 L_CURLY@[10; 11) "{"
14 ENUM_DEF@[16; 152) 14 WHITESPACE@[11; 16) "\n "
15 ENUM_KW@[16; 20) "enum" 15 ENUM_DEF@[16; 152)
16 WHITESPACE@[20; 21) " " 16 ENUM_KW@[16; 20) "enum"
17 NAME@[21; 25) 17 WHITESPACE@[20; 21) " "
18 IDENT@[21; 25) "Test" 18 NAME@[21; 25)
19 WHITESPACE@[25; 26) " " 19 IDENT@[21; 25) "Test"
20 ENUM_VARIANT_LIST@[26; 152) 20 WHITESPACE@[25; 26) " "
21 L_CURLY@[26; 27) "{" 21 ENUM_VARIANT_LIST@[26; 152)
22 WHITESPACE@[27; 36) "\n " 22 L_CURLY@[26; 27) "{"
23 ENUM_VARIANT@[36; 40) 23 WHITESPACE@[27; 36) "\n "
24 NAME@[36; 40) 24 ENUM_VARIANT@[36; 40)
25 IDENT@[36; 40) "Var1" 25 NAME@[36; 40)
26 COMMA@[40; 41) "," 26 IDENT@[36; 40) "Var1"
27 WHITESPACE@[41; 50) "\n " 27 COMMA@[40; 41) ","
28 ENUM_VARIANT@[50; 62) 28 WHITESPACE@[41; 50) "\n "
29 NAME@[50; 54) 29 ENUM_VARIANT@[50; 62)
30 IDENT@[50; 54) "Var2" 30 NAME@[50; 54)
31 TUPLE_FIELD_DEF_LIST@[54; 62) 31 IDENT@[50; 54) "Var2"
32 L_PAREN@[54; 55) "(" 32 TUPLE_FIELD_DEF_LIST@[54; 62)
33 TUPLE_FIELD_DEF@[55; 61) 33 L_PAREN@[54; 55) "("
34 PATH_TYPE@[55; 61) 34 TUPLE_FIELD_DEF@[55; 61)
35 PATH@[55; 61) 35 PATH_TYPE@[55; 61)
36 PATH_SEGMENT@[55; 61) 36 PATH@[55; 61)
37 NAME_REF@[55; 61) 37 PATH_SEGMENT@[55; 61)
38 IDENT@[55; 61) "String" 38 NAME_REF@[55; 61)
39 R_PAREN@[61; 62) ")" 39 IDENT@[55; 61) "String"
40 COMMA@[62; 63) "," 40 R_PAREN@[61; 62) ")"
41 WHITESPACE@[63; 72) "\n " 41 COMMA@[62; 63) ","
42 ENUM_VARIANT@[72; 145) 42 WHITESPACE@[63; 72) "\n "
43 NAME@[72; 76) 43 ENUM_VARIANT@[72; 145)
44 IDENT@[72; 76) "Var3" 44 NAME@[72; 76)
45 WHITESPACE@[76; 77) " " 45 IDENT@[72; 76) "Var3"
46 RECORD_FIELD_DEF_LIST@[77; 145) 46 WHITESPACE@[76; 77) " "
47 L_CURLY@[77; 78) "{" 47 RECORD_FIELD_DEF_LIST@[77; 145)
48 WHITESPACE@[78; 91) "\n " 48 L_CURLY@[77; 78) "{"
49 RECORD_FIELD_DEF@[91; 95) 49 WHITESPACE@[78; 91) "\n "
50 NAME@[91; 94) 50 RECORD_FIELD_DEF@[91; 95)
51 IDENT@[91; 94) "abc" 51 NAME@[91; 94)
52 COLON@[94; 95) ":" 52 IDENT@[91; 94) "abc"
53 WHITESPACE@[95; 96) " " 53 COLON@[94; 95) ":"
54 ERROR@[96; 98) 54 WHITESPACE@[95; 96) " "
55 L_CURLY@[96; 97) "{" 55 ERROR@[96; 98)
56 R_CURLY@[97; 98) "}" 56 L_CURLY@[96; 97) "{"
57 ERROR@[98; 99) 57 R_CURLY@[97; 98) "}"
58 COMMA@[98; 99) "," 58 ERROR@[98; 99)
59 WHITESPACE@[99; 100) " " 59 COMMA@[98; 99) ","
60 COMMENT@[100; 135) "//~ ERROR: expected t ..." 60 WHITESPACE@[99; 100) " "
61 WHITESPACE@[135; 144) "\n " 61 COMMENT@[100; 135) "//~ ERROR: expected t ..."
62 R_CURLY@[144; 145) "}" 62 WHITESPACE@[135; 144) "\n "
63 COMMA@[145; 146) "," 63 R_CURLY@[144; 145) "}"
64 WHITESPACE@[146; 151) "\n " 64 COMMA@[145; 146) ","
65 R_CURLY@[151; 152) "}" 65 WHITESPACE@[146; 151) "\n "
66 WHITESPACE@[152; 158) "\n\n " 66 R_CURLY@[151; 152) "}"
67 COMMENT@[158; 171) "// recover..." 67 WHITESPACE@[152; 158) "\n\n "
68 WHITESPACE@[171; 176) "\n " 68 COMMENT@[158; 171) "// recover..."
69 LET_STMT@[176; 186) 69 WHITESPACE@[171; 176) "\n "
70 LET_KW@[176; 179) "let" 70 LET_STMT@[176; 186)
71 WHITESPACE@[179; 180) " " 71 LET_KW@[176; 179) "let"
72 BIND_PAT@[180; 181) 72 WHITESPACE@[179; 180) " "
73 NAME@[180; 181) 73 BIND_PAT@[180; 181)
74 IDENT@[180; 181) "a" 74 NAME@[180; 181)
75 WHITESPACE@[181; 182) " " 75 IDENT@[180; 181) "a"
76 EQ@[182; 183) "=" 76 WHITESPACE@[181; 182) " "
77 WHITESPACE@[183; 184) " " 77 EQ@[182; 183) "="
78 LITERAL@[184; 185) 78 WHITESPACE@[183; 184) " "
79 INT_NUMBER@[184; 185) "1" 79 LITERAL@[184; 185)
80 SEMI@[185; 186) ";" 80 INT_NUMBER@[184; 185) "1"
81 WHITESPACE@[186; 191) "\n " 81 SEMI@[185; 186) ";"
82 ENUM_DEF@[191; 223) 82 WHITESPACE@[186; 191) "\n "
83 ENUM_KW@[191; 195) "enum" 83 ENUM_DEF@[191; 223)
84 WHITESPACE@[195; 196) " " 84 ENUM_KW@[191; 195) "enum"
85 NAME@[196; 201) 85 WHITESPACE@[195; 196) " "
86 IDENT@[196; 201) "Test2" 86 NAME@[196; 201)
87 WHITESPACE@[201; 202) " " 87 IDENT@[196; 201) "Test2"
88 ENUM_VARIANT_LIST@[202; 223) 88 WHITESPACE@[201; 202) " "
89 L_CURLY@[202; 203) "{" 89 ENUM_VARIANT_LIST@[202; 223)
90 WHITESPACE@[203; 212) "\n " 90 L_CURLY@[202; 203) "{"
91 ENUM_VARIANT@[212; 216) 91 WHITESPACE@[203; 212) "\n "
92 NAME@[212; 216) 92 ENUM_VARIANT@[212; 216)
93 IDENT@[212; 216) "Fine" 93 NAME@[212; 216)
94 COMMA@[216; 217) "," 94 IDENT@[212; 216) "Fine"
95 WHITESPACE@[217; 222) "\n " 95 COMMA@[216; 217) ","
96 R_CURLY@[222; 223) "}" 96 WHITESPACE@[217; 222) "\n "
97 WHITESPACE@[223; 229) "\n\n " 97 R_CURLY@[222; 223) "}"
98 ENUM_DEF@[229; 300) 98 WHITESPACE@[223; 229) "\n\n "
99 ENUM_KW@[229; 233) "enum" 99 ENUM_DEF@[229; 300)
100 WHITESPACE@[233; 234) " " 100 ENUM_KW@[229; 233) "enum"
101 NAME@[234; 239) 101 WHITESPACE@[233; 234) " "
102 IDENT@[234; 239) "Test3" 102 NAME@[234; 239)
103 WHITESPACE@[239; 240) " " 103 IDENT@[234; 239) "Test3"
104 ENUM_VARIANT_LIST@[240; 300) 104 WHITESPACE@[239; 240) " "
105 L_CURLY@[240; 241) "{" 105 ENUM_VARIANT_LIST@[240; 300)
106 WHITESPACE@[241; 250) "\n " 106 L_CURLY@[240; 241) "{"
107 ENUM_VARIANT@[250; 293) 107 WHITESPACE@[241; 250) "\n "
108 NAME@[250; 259) 108 ENUM_VARIANT@[250; 293)
109 IDENT@[250; 259) "StillFine" 109 NAME@[250; 259)
110 WHITESPACE@[259; 260) " " 110 IDENT@[250; 259) "StillFine"
111 RECORD_FIELD_DEF_LIST@[260; 293) 111 WHITESPACE@[259; 260) " "
112 L_CURLY@[260; 261) "{" 112 RECORD_FIELD_DEF_LIST@[260; 293)
113 WHITESPACE@[261; 274) "\n " 113 L_CURLY@[260; 261) "{"
114 RECORD_FIELD_DEF@[274; 282) 114 WHITESPACE@[261; 274) "\n "
115 NAME@[274; 277) 115 RECORD_FIELD_DEF@[274; 282)
116 IDENT@[274; 277) "def" 116 NAME@[274; 277)
117 COLON@[277; 278) ":" 117 IDENT@[274; 277) "def"
118 WHITESPACE@[278; 279) " " 118 COLON@[277; 278) ":"
119 PATH_TYPE@[279; 282) 119 WHITESPACE@[278; 279) " "
120 PATH@[279; 282) 120 PATH_TYPE@[279; 282)
121 PATH_SEGMENT@[279; 282) 121 PATH@[279; 282)
122 NAME_REF@[279; 282) 122 PATH_SEGMENT@[279; 282)
123 IDENT@[279; 282) "i32" 123 NAME_REF@[279; 282)
124 COMMA@[282; 283) "," 124 IDENT@[279; 282) "i32"
125 WHITESPACE@[283; 292) "\n " 125 COMMA@[282; 283) ","
126 R_CURLY@[292; 293) "}" 126 WHITESPACE@[283; 292) "\n "
127 COMMA@[293; 294) "," 127 R_CURLY@[292; 293) "}"
128 WHITESPACE@[294; 299) "\n " 128 COMMA@[293; 294) ","
129 R_CURLY@[299; 300) "}" 129 WHITESPACE@[294; 299) "\n "
130 WHITESPACE@[300; 306) "\n\n " 130 R_CURLY@[299; 300) "}"
131 EXPR_STMT@[306; 459) 131 WHITESPACE@[300; 306) "\n\n "
132 BLOCK_EXPR@[306; 459) 132 EXPR_STMT@[306; 459)
133 BLOCK@[306; 459) 133 BLOCK_EXPR@[306; 459)
134 L_CURLY@[306; 307) "{" 134 BLOCK@[306; 459)
135 WHITESPACE@[307; 316) "\n " 135 L_CURLY@[306; 307) "{"
136 ENUM_DEF@[316; 453) 136 WHITESPACE@[307; 316) "\n "
137 COMMENT@[316; 329) "// fail again" 137 ENUM_DEF@[316; 453)
138 WHITESPACE@[329; 338) "\n " 138 COMMENT@[316; 329) "// fail again"
139 ENUM_KW@[338; 342) "enum" 139 WHITESPACE@[329; 338) "\n "
140 WHITESPACE@[342; 343) " " 140 ENUM_KW@[338; 342) "enum"
141 NAME@[343; 348) 141 WHITESPACE@[342; 343) " "
142 IDENT@[343; 348) "Test4" 142 NAME@[343; 348)
143 WHITESPACE@[348; 349) " " 143 IDENT@[343; 348) "Test4"
144 ENUM_VARIANT_LIST@[349; 453) 144 WHITESPACE@[348; 349) " "
145 L_CURLY@[349; 350) "{" 145 ENUM_VARIANT_LIST@[349; 453)
146 WHITESPACE@[350; 363) "\n " 146 L_CURLY@[349; 350) "{"
147 ENUM_VARIANT@[363; 372) 147 WHITESPACE@[350; 363) "\n "
148 NAME@[363; 367) 148 ENUM_VARIANT@[363; 372)
149 IDENT@[363; 367) "Nope" 149 NAME@[363; 367)
150 TUPLE_FIELD_DEF_LIST@[367; 372) 150 IDENT@[363; 367) "Nope"
151 L_PAREN@[367; 368) "(" 151 TUPLE_FIELD_DEF_LIST@[367; 372)
152 TUPLE_FIELD_DEF@[368; 371) 152 L_PAREN@[367; 368) "("
153 PATH_TYPE@[368; 371) 153 TUPLE_FIELD_DEF@[368; 371)
154 PATH@[368; 371) 154 PATH_TYPE@[368; 371)
155 PATH_SEGMENT@[368; 371) 155 PATH@[368; 371)
156 NAME_REF@[368; 371) 156 PATH_SEGMENT@[368; 371)
157 IDENT@[368; 371) "i32" 157 NAME_REF@[368; 371)
158 WHITESPACE@[371; 372) " " 158 IDENT@[368; 371) "i32"
159 ERROR@[372; 372) 159 WHITESPACE@[371; 372) " "
160 ERROR@[372; 374) 160 ERROR@[372; 372)
161 L_CURLY@[372; 373) "{" 161 ERROR@[372; 374)
162 R_CURLY@[373; 374) "}" 162 L_CURLY@[372; 373) "{"
163 ERROR@[374; 375) 163 R_CURLY@[373; 374) "}"
164 R_PAREN@[374; 375) ")" 164 ERROR@[374; 375)
165 WHITESPACE@[375; 376) " " 165 R_PAREN@[374; 375) ")"
166 COMMENT@[376; 396) "//~ ERROR: found `{`" 166 WHITESPACE@[375; 376) " "
167 WHITESPACE@[396; 422) "\n ..." 167 COMMENT@[376; 396) "//~ ERROR: found `{`"
168 COMMENT@[422; 443) "//~^ ERROR: found `{`" 168 WHITESPACE@[396; 422) "\n ..."
169 WHITESPACE@[443; 452) "\n " 169 COMMENT@[422; 443) "//~^ ERROR: found `{`"
170 R_CURLY@[452; 453) "}" 170 WHITESPACE@[443; 452) "\n "
171 WHITESPACE@[453; 458) "\n " 171 R_CURLY@[452; 453) "}"
172 R_CURLY@[458; 459) "}" 172 WHITESPACE@[453; 458) "\n "
173 WHITESPACE@[459; 464) "\n " 173 R_CURLY@[458; 459) "}"
174 COMMENT@[464; 486) "// still recover later" 174 WHITESPACE@[459; 464) "\n "
175 WHITESPACE@[486; 491) "\n " 175 COMMENT@[464; 486) "// still recover later"
176 LET_STMT@[491; 510) 176 WHITESPACE@[486; 491) "\n "
177 LET_KW@[491; 494) "let" 177 LET_STMT@[491; 510)
178 WHITESPACE@[494; 495) " " 178 LET_KW@[491; 494) "let"
179 BIND_PAT@[495; 505) 179 WHITESPACE@[494; 495) " "
180 NAME@[495; 505) 180 BIND_PAT@[495; 505)
181 IDENT@[495; 505) "bad_syntax" 181 NAME@[495; 505)
182 WHITESPACE@[505; 506) " " 182 IDENT@[495; 505) "bad_syntax"
183 EQ@[506; 507) "=" 183 WHITESPACE@[505; 506) " "
184 WHITESPACE@[507; 508) " " 184 EQ@[506; 507) "="
185 ERROR@[508; 509) 185 WHITESPACE@[507; 508) " "
186 UNDERSCORE@[508; 509) "_" 186 ERROR@[508; 509)
187 SEMI@[509; 510) ";" 187 UNDERSCORE@[508; 509) "_"
188 WHITESPACE@[510; 511) " " 188 SEMI@[509; 510) ";"
189 COMMENT@[511; 572) "//~ ERROR: expected e ..." 189 WHITESPACE@[510; 511) " "
190 WHITESPACE@[572; 573) "\n" 190 COMMENT@[511; 572) "//~ ERROR: expected e ..."
191 R_CURLY@[573; 574) "}" 191 WHITESPACE@[572; 573) "\n"
192 R_CURLY@[573; 574) "}"
192 WHITESPACE@[574; 575) "\n" 193 WHITESPACE@[574; 575) "\n"
193error 95: expected type 194error 95: expected type
194error 95: expected COMMA 195error 95: expected COMMA
diff --git a/crates/ra_syntax/test_data/parser/err/0027_incomplere_where_for.txt b/crates/ra_syntax/test_data/parser/err/0027_incomplere_where_for.txt
index 061e6fb31..9298b45a4 100644
--- a/crates/ra_syntax/test_data/parser/err/0027_incomplere_where_for.txt
+++ b/crates/ra_syntax/test_data/parser/err/0027_incomplere_where_for.txt
@@ -20,9 +20,10 @@ SOURCE_FILE@[0; 30)
20 LIFETIME@[23; 25) "\'a" 20 LIFETIME@[23; 25) "\'a"
21 R_ANGLE@[25; 26) ">" 21 R_ANGLE@[25; 26) ">"
22 WHITESPACE@[26; 27) "\n" 22 WHITESPACE@[26; 27) "\n"
23 BLOCK@[27; 29) 23 BLOCK_EXPR@[27; 29)
24 L_CURLY@[27; 28) "{" 24 BLOCK@[27; 29)
25 R_CURLY@[28; 29) "}" 25 L_CURLY@[27; 28) "{"
26 R_CURLY@[28; 29) "}"
26 WHITESPACE@[29; 30) "\n" 27 WHITESPACE@[29; 30) "\n"
27error 26: expected a path 28error 26: expected a path
28error 26: expected colon 29error 26: expected colon
diff --git a/crates/ra_syntax/test_data/parser/err/0028_macro_2.0.txt b/crates/ra_syntax/test_data/parser/err/0028_macro_2.0.txt
index 98bc562a3..73d322c48 100644
--- a/crates/ra_syntax/test_data/parser/err/0028_macro_2.0.txt
+++ b/crates/ra_syntax/test_data/parser/err/0028_macro_2.0.txt
@@ -73,188 +73,189 @@ SOURCE_FILE@[0; 349)
73 L_PAREN@[125; 126) "(" 73 L_PAREN@[125; 126) "("
74 R_PAREN@[126; 127) ")" 74 R_PAREN@[126; 127) ")"
75 WHITESPACE@[127; 128) " " 75 WHITESPACE@[127; 128) " "
76 BLOCK@[128; 348) 76 BLOCK_EXPR@[128; 348)
77 L_CURLY@[128; 129) "{" 77 BLOCK@[128; 348)
78 WHITESPACE@[129; 134) "\n " 78 L_CURLY@[128; 129) "{"
79 EXPR_STMT@[134; 139) 79 WHITESPACE@[129; 134) "\n "
80 PATH_EXPR@[134; 139) 80 EXPR_STMT@[134; 139)
81 PATH@[134; 139) 81 PATH_EXPR@[134; 139)
82 PATH_SEGMENT@[134; 139) 82 PATH@[134; 139)
83 NAME_REF@[134; 139) 83 PATH_SEGMENT@[134; 139)
84 IDENT@[134; 139) "macro" 84 NAME_REF@[134; 139)
85 WHITESPACE@[139; 140) " " 85 IDENT@[134; 139) "macro"
86 EXPR_STMT@[140; 154) 86 WHITESPACE@[139; 140) " "
87 CALL_EXPR@[140; 154) 87 EXPR_STMT@[140; 154)
88 PATH_EXPR@[140; 150) 88 CALL_EXPR@[140; 154)
89 PATH@[140; 150) 89 PATH_EXPR@[140; 150)
90 PATH_SEGMENT@[140; 150) 90 PATH@[140; 150)
91 NAME_REF@[140; 150) 91 PATH_SEGMENT@[140; 150)
92 IDENT@[140; 150) "test_merge" 92 NAME_REF@[140; 150)
93 ARG_LIST@[150; 154) 93 IDENT@[140; 150) "test_merge"
94 L_PAREN@[150; 151) "(" 94 ARG_LIST@[150; 154)
95 ARRAY_EXPR@[151; 154) 95 L_PAREN@[150; 151) "("
96 L_BRACK@[151; 152) "[" 96 ARRAY_EXPR@[151; 154)
97 ERROR@[152; 153) 97 L_BRACK@[151; 152) "["
98 DOLLAR@[152; 153) "$" 98 ERROR@[152; 153)
99 PAREN_EXPR@[153; 154) 99 DOLLAR@[152; 153) "$"
100 L_PAREN@[153; 154) "(" 100 PAREN_EXPR@[153; 154)
101 EXPR_STMT@[154; 155) 101 L_PAREN@[153; 154) "("
102 ERROR@[154; 155) 102 EXPR_STMT@[154; 155)
103 DOLLAR@[154; 155) "$" 103 ERROR@[154; 155)
104 EXPR_STMT@[155; 160) 104 DOLLAR@[154; 155) "$"
105 PATH_EXPR@[155; 160) 105 EXPR_STMT@[155; 160)
106 PATH@[155; 160) 106 PATH_EXPR@[155; 160)
107 PATH_SEGMENT@[155; 160) 107 PATH@[155; 160)
108 NAME_REF@[155; 160) 108 PATH_SEGMENT@[155; 160)
109 IDENT@[155; 160) "input" 109 NAME_REF@[155; 160)
110 EXPR_STMT@[160; 161) 110 IDENT@[155; 160) "input"
111 ERROR@[160; 161) 111 EXPR_STMT@[160; 161)
112 COLON@[160; 161) ":" 112 ERROR@[160; 161)
113 EXPR_STMT@[161; 165) 113 COLON@[160; 161) ":"
114 PATH_EXPR@[161; 165) 114 EXPR_STMT@[161; 165)
115 PATH@[161; 165) 115 PATH_EXPR@[161; 165)
116 PATH_SEGMENT@[161; 165) 116 PATH@[161; 165)
117 NAME_REF@[161; 165) 117 PATH_SEGMENT@[161; 165)
118 IDENT@[161; 165) "expr" 118 NAME_REF@[161; 165)
119 EXPR_STMT@[165; 166) 119 IDENT@[161; 165) "expr"
120 ERROR@[165; 166) 120 EXPR_STMT@[165; 166)
121 R_PAREN@[165; 166) ")" 121 ERROR@[165; 166)
122 EXPR_STMT@[166; 167) 122 R_PAREN@[165; 166) ")"
123 ERROR@[166; 167) 123 EXPR_STMT@[166; 167)
124 COMMA@[166; 167) "," 124 ERROR@[166; 167)
125 EXPR_STMT@[167; 170) 125 COMMA@[166; 167) ","
126 PREFIX_EXPR@[167; 170) 126 EXPR_STMT@[167; 170)
127 STAR@[167; 168) "*" 127 PREFIX_EXPR@[167; 170)
128 WHITESPACE@[168; 169) " " 128 STAR@[167; 168) "*"
129 ERROR@[169; 170) 129 WHITESPACE@[168; 169) " "
130 DOLLAR@[169; 170) "$" 130 ERROR@[169; 170)
131 EXPR_STMT@[170; 171) 131 DOLLAR@[169; 170) "$"
132 PAREN_EXPR@[170; 171) 132 EXPR_STMT@[170; 171)
133 L_PAREN@[170; 171) "(" 133 PAREN_EXPR@[170; 171)
134 EXPR_STMT@[171; 172) 134 L_PAREN@[170; 171) "("
135 ERROR@[171; 172) 135 EXPR_STMT@[171; 172)
136 COMMA@[171; 172) "," 136 ERROR@[171; 172)
137 EXPR_STMT@[172; 173) 137 COMMA@[171; 172) ","
138 ERROR@[172; 173) 138 EXPR_STMT@[172; 173)
139 R_PAREN@[172; 173) ")" 139 ERROR@[172; 173)
140 EXPR_STMT@[173; 175) 140 R_PAREN@[172; 173) ")"
141 PREFIX_EXPR@[173; 175) 141 EXPR_STMT@[173; 175)
142 STAR@[173; 174) "*" 142 PREFIX_EXPR@[173; 175)
143 ERROR@[174; 175) 143 STAR@[173; 174) "*"
144 R_BRACK@[174; 175) "]" 144 ERROR@[174; 175)
145 EXPR_STMT@[175; 176) 145 R_BRACK@[174; 175) "]"
146 ERROR@[175; 176) 146 EXPR_STMT@[175; 176)
147 COMMA@[175; 176) "," 147 ERROR@[175; 176)
148 WHITESPACE@[176; 177) " " 148 COMMA@[175; 176) ","
149 EXPR_STMT@[177; 180) 149 WHITESPACE@[176; 177) " "
150 ARRAY_EXPR@[177; 180) 150 EXPR_STMT@[177; 180)
151 L_BRACK@[177; 178) "[" 151 ARRAY_EXPR@[177; 180)
152 ERROR@[178; 179) 152 L_BRACK@[177; 178) "["
153 DOLLAR@[178; 179) "$" 153 ERROR@[178; 179)
154 PAREN_EXPR@[179; 180) 154 DOLLAR@[178; 179) "$"
155 L_PAREN@[179; 180) "(" 155 PAREN_EXPR@[179; 180)
156 EXPR_STMT@[180; 181) 156 L_PAREN@[179; 180) "("
157 ERROR@[180; 181) 157 EXPR_STMT@[180; 181)
158 DOLLAR@[180; 181) "$" 158 ERROR@[180; 181)
159 EXPR_STMT@[181; 187) 159 DOLLAR@[180; 181) "$"
160 PATH_EXPR@[181; 187) 160 EXPR_STMT@[181; 187)
161 PATH@[181; 187) 161 PATH_EXPR@[181; 187)
162 PATH_SEGMENT@[181; 187) 162 PATH@[181; 187)
163 NAME_REF@[181; 187) 163 PATH_SEGMENT@[181; 187)
164 IDENT@[181; 187) "output" 164 NAME_REF@[181; 187)
165 EXPR_STMT@[187; 188) 165 IDENT@[181; 187) "output"
166 ERROR@[187; 188) 166 EXPR_STMT@[187; 188)
167 COLON@[187; 188) ":" 167 ERROR@[187; 188)
168 EXPR_STMT@[188; 192) 168 COLON@[187; 188) ":"
169 PATH_EXPR@[188; 192) 169 EXPR_STMT@[188; 192)
170 PATH@[188; 192) 170 PATH_EXPR@[188; 192)
171 PATH_SEGMENT@[188; 192) 171 PATH@[188; 192)
172 NAME_REF@[188; 192) 172 PATH_SEGMENT@[188; 192)
173 IDENT@[188; 192) "expr" 173 NAME_REF@[188; 192)
174 EXPR_STMT@[192; 193) 174 IDENT@[188; 192) "expr"
175 ERROR@[192; 193) 175 EXPR_STMT@[192; 193)
176 R_PAREN@[192; 193) ")" 176 ERROR@[192; 193)
177 EXPR_STMT@[193; 194) 177 R_PAREN@[192; 193) ")"
178 ERROR@[193; 194) 178 EXPR_STMT@[193; 194)
179 COMMA@[193; 194) "," 179 ERROR@[193; 194)
180 EXPR_STMT@[194; 197) 180 COMMA@[193; 194) ","
181 PREFIX_EXPR@[194; 197) 181 EXPR_STMT@[194; 197)
182 STAR@[194; 195) "*" 182 PREFIX_EXPR@[194; 197)
183 WHITESPACE@[195; 196) " " 183 STAR@[194; 195) "*"
184 ERROR@[196; 197) 184 WHITESPACE@[195; 196) " "
185 DOLLAR@[196; 197) "$" 185 ERROR@[196; 197)
186 EXPR_STMT@[197; 198) 186 DOLLAR@[196; 197) "$"
187 PAREN_EXPR@[197; 198) 187 EXPR_STMT@[197; 198)
188 L_PAREN@[197; 198) "(" 188 PAREN_EXPR@[197; 198)
189 EXPR_STMT@[198; 199) 189 L_PAREN@[197; 198) "("
190 ERROR@[198; 199) 190 EXPR_STMT@[198; 199)
191 COMMA@[198; 199) "," 191 ERROR@[198; 199)
192 EXPR_STMT@[199; 200) 192 COMMA@[198; 199) ","
193 ERROR@[199; 200) 193 EXPR_STMT@[199; 200)
194 R_PAREN@[199; 200) ")" 194 ERROR@[199; 200)
195 EXPR_STMT@[200; 202) 195 R_PAREN@[199; 200) ")"
196 PREFIX_EXPR@[200; 202) 196 EXPR_STMT@[200; 202)
197 STAR@[200; 201) "*" 197 PREFIX_EXPR@[200; 202)
198 ERROR@[201; 202) 198 STAR@[200; 201) "*"
199 R_BRACK@[201; 202) "]" 199 ERROR@[201; 202)
200 EXPR_STMT@[202; 203) 200 R_BRACK@[201; 202) "]"
201 ERROR@[202; 203) 201 EXPR_STMT@[202; 203)
202 R_PAREN@[202; 203) ")" 202 ERROR@[202; 203)
203 WHITESPACE@[203; 204) " " 203 R_PAREN@[202; 203) ")"
204 BLOCK_EXPR@[204; 346) 204 WHITESPACE@[203; 204) " "
205 BLOCK@[204; 346) 205 BLOCK_EXPR@[204; 346)
206 L_CURLY@[204; 205) "{" 206 BLOCK@[204; 346)
207 WHITESPACE@[205; 214) "\n " 207 L_CURLY@[204; 205) "{"
208 EXPR_STMT@[214; 340) 208 WHITESPACE@[205; 214) "\n "
209 MACRO_CALL@[214; 339) 209 EXPR_STMT@[214; 340)
210 PATH@[214; 223) 210 MACRO_CALL@[214; 339)
211 PATH_SEGMENT@[214; 223) 211 PATH@[214; 223)
212 NAME_REF@[214; 223) 212 PATH_SEGMENT@[214; 223)
213 IDENT@[214; 223) "assert_eq" 213 NAME_REF@[214; 223)
214 EXCL@[223; 224) "!" 214 IDENT@[214; 223) "assert_eq"
215 TOKEN_TREE@[224; 339) 215 EXCL@[223; 224) "!"
216 L_PAREN@[224; 225) "(" 216 TOKEN_TREE@[224; 339)
217 WHITESPACE@[225; 238) "\n " 217 L_PAREN@[224; 225) "("
218 IDENT@[238; 253) "merge_use_trees" 218 WHITESPACE@[225; 238) "\n "
219 TOKEN_TREE@[253; 284) 219 IDENT@[238; 253) "merge_use_trees"
220 L_PAREN@[253; 254) "(" 220 TOKEN_TREE@[253; 284)
221 IDENT@[254; 269) "parse_use_trees" 221 L_PAREN@[253; 254) "("
222 EXCL@[269; 270) "!" 222 IDENT@[254; 269) "parse_use_trees"
223 TOKEN_TREE@[270; 283) 223 EXCL@[269; 270) "!"
224 L_PAREN@[270; 271) "(" 224 TOKEN_TREE@[270; 283)
225 DOLLAR@[271; 272) "$" 225 L_PAREN@[270; 271) "("
226 TOKEN_TREE@[272; 281) 226 DOLLAR@[271; 272) "$"
227 L_PAREN@[272; 273) "(" 227 TOKEN_TREE@[272; 281)
228 DOLLAR@[273; 274) "$" 228 L_PAREN@[272; 273) "("
229 IDENT@[274; 279) "input" 229 DOLLAR@[273; 274) "$"
230 COMMA@[279; 280) "," 230 IDENT@[274; 279) "input"
231 R_PAREN@[280; 281) ")" 231 COMMA@[279; 280) ","
232 STAR@[281; 282) "*" 232 R_PAREN@[280; 281) ")"
233 R_PAREN@[282; 283) ")" 233 STAR@[281; 282) "*"
234 R_PAREN@[283; 284) ")" 234 R_PAREN@[282; 283) ")"
235 COMMA@[284; 285) "," 235 R_PAREN@[283; 284) ")"
236 WHITESPACE@[285; 298) "\n " 236 COMMA@[284; 285) ","
237 IDENT@[298; 313) "parse_use_trees" 237 WHITESPACE@[285; 298) "\n "
238 EXCL@[313; 314) "!" 238 IDENT@[298; 313) "parse_use_trees"
239 TOKEN_TREE@[314; 328) 239 EXCL@[313; 314) "!"
240 L_PAREN@[314; 315) "(" 240 TOKEN_TREE@[314; 328)
241 DOLLAR@[315; 316) "$" 241 L_PAREN@[314; 315) "("
242 TOKEN_TREE@[316; 326) 242 DOLLAR@[315; 316) "$"
243 L_PAREN@[316; 317) "(" 243 TOKEN_TREE@[316; 326)
244 DOLLAR@[317; 318) "$" 244 L_PAREN@[316; 317) "("
245 IDENT@[318; 324) "output" 245 DOLLAR@[317; 318) "$"
246 COMMA@[324; 325) "," 246 IDENT@[318; 324) "output"
247 R_PAREN@[325; 326) ")" 247 COMMA@[324; 325) ","
248 STAR@[326; 327) "*" 248 R_PAREN@[325; 326) ")"
249 R_PAREN@[327; 328) ")" 249 STAR@[326; 327) "*"
250 COMMA@[328; 329) "," 250 R_PAREN@[327; 328) ")"
251 WHITESPACE@[329; 338) "\n " 251 COMMA@[328; 329) ","
252 R_PAREN@[338; 339) ")" 252 WHITESPACE@[329; 338) "\n "
253 SEMI@[339; 340) ";" 253 R_PAREN@[338; 339) ")"
254 WHITESPACE@[340; 345) "\n " 254 SEMI@[339; 340) ";"
255 R_CURLY@[345; 346) "}" 255 WHITESPACE@[340; 345) "\n "
256 WHITESPACE@[346; 347) "\n" 256 R_CURLY@[345; 346) "}"
257 R_CURLY@[347; 348) "}" 257 WHITESPACE@[346; 347) "\n"
258 R_CURLY@[347; 348) "}"
258 WHITESPACE@[348; 349) "\n" 259 WHITESPACE@[348; 349) "\n"
259error 5: expected EXCL 260error 5: expected EXCL
260error 41: expected SEMI 261error 41: expected SEMI
diff --git a/crates/ra_syntax/test_data/parser/err/0029_field_completion.txt b/crates/ra_syntax/test_data/parser/err/0029_field_completion.txt
index fb50a12fc..e3e1282ec 100644
--- a/crates/ra_syntax/test_data/parser/err/0029_field_completion.txt
+++ b/crates/ra_syntax/test_data/parser/err/0029_field_completion.txt
@@ -19,17 +19,18 @@ SOURCE_FILE@[0; 24)
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_EXPR@[13; 23)
23 L_CURLY@[13; 14) "{" 23 BLOCK@[13; 23)
24 WHITESPACE@[14; 19) "\n " 24 L_CURLY@[13; 14) "{"
25 FIELD_EXPR@[19; 21) 25 WHITESPACE@[14; 19) "\n "
26 PATH_EXPR@[19; 20) 26 FIELD_EXPR@[19; 21)
27 PATH@[19; 20) 27 PATH_EXPR@[19; 20)
28 PATH_SEGMENT@[19; 20) 28 PATH@[19; 20)
29 NAME_REF@[19; 20) 29 PATH_SEGMENT@[19; 20)
30 IDENT@[19; 20) "a" 30 NAME_REF@[19; 20)
31 DOT@[20; 21) "." 31 IDENT@[19; 20) "a"
32 WHITESPACE@[21; 22) "\n" 32 DOT@[20; 21) "."
33 R_CURLY@[22; 23) "}" 33 WHITESPACE@[21; 22) "\n"
34 R_CURLY@[22; 23) "}"
34 WHITESPACE@[23; 24) "\n" 35 WHITESPACE@[23; 24) "\n"
35error 21: expected field name or number 36error 21: expected field name or number
diff --git a/crates/ra_syntax/test_data/parser/err/0031_block_inner_attrs.txt b/crates/ra_syntax/test_data/parser/err/0031_block_inner_attrs.txt
index c205cf147..f67325b76 100644
--- a/crates/ra_syntax/test_data/parser/err/0031_block_inner_attrs.txt
+++ b/crates/ra_syntax/test_data/parser/err/0031_block_inner_attrs.txt
@@ -8,105 +8,108 @@ SOURCE_FILE@[0; 350)
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_EXPR@[11; 349)
12 L_CURLY@[11; 12) "{" 12 BLOCK@[11; 349)
13 WHITESPACE@[12; 17) "\n " 13 L_CURLY@[11; 12) "{"
14 LET_STMT@[17; 129) 14 WHITESPACE@[12; 17) "\n "
15 LET_KW@[17; 20) "let" 15 LET_STMT@[17; 129)
16 WHITESPACE@[20; 21) " " 16 LET_KW@[17; 20) "let"
17 BIND_PAT@[21; 26) 17 WHITESPACE@[20; 21) " "
18 NAME@[21; 26) 18 BIND_PAT@[21; 26)
19 IDENT@[21; 26) "inner" 19 NAME@[21; 26)
20 WHITESPACE@[26; 27) " " 20 IDENT@[21; 26) "inner"
21 EQ@[27; 28) "=" 21 WHITESPACE@[26; 27) " "
22 WHITESPACE@[28; 29) " " 22 EQ@[27; 28) "="
23 BLOCK_EXPR@[29; 128) 23 WHITESPACE@[28; 29) " "
24 BLOCK@[29; 128) 24 BLOCK_EXPR@[29; 128)
25 L_CURLY@[29; 30) "{" 25 BLOCK@[29; 128)
26 WHITESPACE@[30; 39) "\n " 26 L_CURLY@[29; 30) "{"
27 ATTR@[39; 83) 27 WHITESPACE@[30; 39) "\n "
28 POUND@[39; 40) "#" 28 ATTR@[39; 83)
29 EXCL@[40; 41) "!" 29 POUND@[39; 40) "#"
30 TOKEN_TREE@[41; 83) 30 EXCL@[40; 41) "!"
31 L_BRACK@[41; 42) "[" 31 TOKEN_TREE@[41; 83)
32 IDENT@[42; 45) "doc" 32 L_BRACK@[41; 42) "["
33 TOKEN_TREE@[45; 82) 33 IDENT@[42; 45) "doc"
34 L_PAREN@[45; 46) "(" 34 TOKEN_TREE@[45; 82)
35 STRING@[46; 81) "\"Inner attributes not ..." 35 L_PAREN@[45; 46) "("
36 R_PAREN@[81; 82) ")" 36 STRING@[46; 81) "\"Inner attributes not ..."
37 R_BRACK@[82; 83) "]" 37 R_PAREN@[81; 82) ")"
38 WHITESPACE@[83; 92) "\n " 38 R_BRACK@[82; 83) "]"
39 COMMENT@[92; 122) "//! Nor are ModuleDoc ..." 39 WHITESPACE@[83; 92) "\n "
40 WHITESPACE@[122; 127) "\n " 40 COMMENT@[92; 122) "//! Nor are ModuleDoc ..."
41 R_CURLY@[127; 128) "}" 41 WHITESPACE@[122; 127) "\n "
42 SEMI@[128; 129) ";" 42 R_CURLY@[127; 128) "}"
43 WHITESPACE@[129; 134) "\n " 43 SEMI@[128; 129) ";"
44 EXPR_STMT@[134; 257) 44 WHITESPACE@[129; 134) "\n "
45 IF_EXPR@[134; 257) 45 EXPR_STMT@[134; 257)
46 IF_KW@[134; 136) "if" 46 IF_EXPR@[134; 257)
47 WHITESPACE@[136; 137) " " 47 IF_KW@[134; 136) "if"
48 CONDITION@[137; 141) 48 WHITESPACE@[136; 137) " "
49 LITERAL@[137; 141) 49 CONDITION@[137; 141)
50 TRUE_KW@[137; 141) "true" 50 LITERAL@[137; 141)
51 WHITESPACE@[141; 142) " " 51 TRUE_KW@[137; 141) "true"
52 BLOCK@[142; 257) 52 WHITESPACE@[141; 142) " "
53 L_CURLY@[142; 143) "{" 53 BLOCK_EXPR@[142; 257)
54 WHITESPACE@[143; 152) "\n " 54 BLOCK@[142; 257)
55 ATTR@[152; 171) 55 L_CURLY@[142; 143) "{"
56 POUND@[152; 153) "#" 56 WHITESPACE@[143; 152) "\n "
57 EXCL@[153; 154) "!" 57 ATTR@[152; 171)
58 TOKEN_TREE@[154; 171) 58 POUND@[152; 153) "#"
59 L_BRACK@[154; 155) "[" 59 EXCL@[153; 154) "!"
60 IDENT@[155; 158) "doc" 60 TOKEN_TREE@[154; 171)
61 TOKEN_TREE@[158; 170) 61 L_BRACK@[154; 155) "["
62 L_PAREN@[158; 159) "(" 62 IDENT@[155; 158) "doc"
63 STRING@[159; 169) "\"Nor here\"" 63 TOKEN_TREE@[158; 170)
64 R_PAREN@[169; 170) ")" 64 L_PAREN@[158; 159) "("
65 R_BRACK@[170; 171) "]" 65 STRING@[159; 169) "\"Nor here\""
66 WHITESPACE@[171; 180) "\n " 66 R_PAREN@[169; 170) ")"
67 ATTR@[180; 212) 67 R_BRACK@[170; 171) "]"
68 POUND@[180; 181) "#" 68 WHITESPACE@[171; 180) "\n "
69 EXCL@[181; 182) "!" 69 ATTR@[180; 212)
70 TOKEN_TREE@[182; 212) 70 POUND@[180; 181) "#"
71 L_BRACK@[182; 183) "[" 71 EXCL@[181; 182) "!"
72 IDENT@[183; 186) "doc" 72 TOKEN_TREE@[182; 212)
73 TOKEN_TREE@[186; 211) 73 L_BRACK@[182; 183) "["
74 L_PAREN@[186; 187) "(" 74 IDENT@[183; 186) "doc"
75 STRING@[187; 210) "\"We error on each attr\"" 75 TOKEN_TREE@[186; 211)
76 R_PAREN@[210; 211) ")" 76 L_PAREN@[186; 187) "("
77 R_BRACK@[211; 212) "]" 77 STRING@[187; 210) "\"We error on each attr\""
78 WHITESPACE@[212; 221) "\n " 78 R_PAREN@[210; 211) ")"
79 COMMENT@[221; 251) "//! Nor are ModuleDoc ..." 79 R_BRACK@[211; 212) "]"
80 WHITESPACE@[251; 256) "\n " 80 WHITESPACE@[212; 221) "\n "
81 R_CURLY@[256; 257) "}" 81 COMMENT@[221; 251) "//! Nor are ModuleDoc ..."
82 WHITESPACE@[257; 262) "\n " 82 WHITESPACE@[251; 256) "\n "
83 WHILE_EXPR@[262; 347) 83 R_CURLY@[256; 257) "}"
84 WHILE_KW@[262; 267) "while" 84 WHITESPACE@[257; 262) "\n "
85 WHITESPACE@[267; 268) " " 85 WHILE_EXPR@[262; 347)
86 CONDITION@[268; 272) 86 WHILE_KW@[262; 267) "while"
87 LITERAL@[268; 272) 87 WHITESPACE@[267; 268) " "
88 TRUE_KW@[268; 272) "true" 88 CONDITION@[268; 272)
89 WHITESPACE@[272; 273) " " 89 LITERAL@[268; 272)
90 BLOCK@[273; 347) 90 TRUE_KW@[268; 272) "true"
91 L_CURLY@[273; 274) "{" 91 WHITESPACE@[272; 273) " "
92 WHITESPACE@[274; 283) "\n " 92 BLOCK_EXPR@[273; 347)
93 ATTR@[283; 302) 93 BLOCK@[273; 347)
94 POUND@[283; 284) "#" 94 L_CURLY@[273; 274) "{"
95 EXCL@[284; 285) "!" 95 WHITESPACE@[274; 283) "\n "
96 TOKEN_TREE@[285; 302) 96 ATTR@[283; 302)
97 L_BRACK@[285; 286) "[" 97 POUND@[283; 284) "#"
98 IDENT@[286; 289) "doc" 98 EXCL@[284; 285) "!"
99 TOKEN_TREE@[289; 301) 99 TOKEN_TREE@[285; 302)
100 L_PAREN@[289; 290) "(" 100 L_BRACK@[285; 286) "["
101 STRING@[290; 300) "\"Nor here\"" 101 IDENT@[286; 289) "doc"
102 R_PAREN@[300; 301) ")" 102 TOKEN_TREE@[289; 301)
103 R_BRACK@[301; 302) "]" 103 L_PAREN@[289; 290) "("
104 WHITESPACE@[302; 311) "\n " 104 STRING@[290; 300) "\"Nor here\""
105 COMMENT@[311; 341) "//! Nor are ModuleDoc ..." 105 R_PAREN@[300; 301) ")"
106 WHITESPACE@[341; 346) "\n " 106 R_BRACK@[301; 302) "]"
107 R_CURLY@[346; 347) "}" 107 WHITESPACE@[302; 311) "\n "
108 WHITESPACE@[347; 348) "\n" 108 COMMENT@[311; 341) "//! Nor are ModuleDoc ..."
109 R_CURLY@[348; 349) "}" 109 WHITESPACE@[341; 346) "\n "
110 R_CURLY@[346; 347) "}"
111 WHITESPACE@[347; 348) "\n"
112 R_CURLY@[348; 349) "}"
110 WHITESPACE@[349; 350) "\n" 113 WHITESPACE@[349; 350) "\n"
111error [39; 83): A block in this position cannot accept inner attributes 114error [39; 83): A block in this position cannot accept inner attributes
112error [152; 171): A block in this position cannot accept inner attributes 115error [152; 171): A block in this position cannot accept inner attributes
diff --git a/crates/ra_syntax/test_data/parser/err/0032_match_arms_inner_attrs.txt b/crates/ra_syntax/test_data/parser/err/0032_match_arms_inner_attrs.txt
index 4e8c4143b..1344fcbc2 100644
--- a/crates/ra_syntax/test_data/parser/err/0032_match_arms_inner_attrs.txt
+++ b/crates/ra_syntax/test_data/parser/err/0032_match_arms_inner_attrs.txt
@@ -8,185 +8,186 @@ SOURCE_FILE@[0; 293)
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_EXPR@[9; 292)
12 L_CURLY@[9; 10) "{" 12 BLOCK@[9; 292)
13 WHITESPACE@[10; 15) "\n " 13 L_CURLY@[9; 10) "{"
14 EXPR_STMT@[15; 101) 14 WHITESPACE@[10; 15) "\n "
15 MATCH_EXPR@[15; 101) 15 EXPR_STMT@[15; 101)
16 MATCH_KW@[15; 20) "match" 16 MATCH_EXPR@[15; 101)
17 WHITESPACE@[20; 21) " " 17 MATCH_KW@[15; 20) "match"
18 TUPLE_EXPR@[21; 23) 18 WHITESPACE@[20; 21) " "
19 L_PAREN@[21; 22) "(" 19 TUPLE_EXPR@[21; 23)
20 R_PAREN@[22; 23) ")" 20 L_PAREN@[21; 22) "("
21 WHITESPACE@[23; 24) " " 21 R_PAREN@[22; 23) ")"
22 MATCH_ARM_LIST@[24; 101) 22 WHITESPACE@[23; 24) " "
23 L_CURLY@[24; 25) "{" 23 MATCH_ARM_LIST@[24; 101)
24 WHITESPACE@[25; 34) "\n " 24 L_CURLY@[24; 25) "{"
25 MATCH_ARM@[34; 41) 25 WHITESPACE@[25; 34) "\n "
26 PLACEHOLDER_PAT@[34; 35) 26 MATCH_ARM@[34; 41)
27 UNDERSCORE@[34; 35) "_" 27 PLACEHOLDER_PAT@[34; 35)
28 WHITESPACE@[35; 36) " " 28 UNDERSCORE@[34; 35) "_"
29 FAT_ARROW@[36; 38) "=>" 29 WHITESPACE@[35; 36) " "
30 WHITESPACE@[38; 39) " " 30 FAT_ARROW@[36; 38) "=>"
31 TUPLE_EXPR@[39; 41) 31 WHITESPACE@[38; 39) " "
32 L_PAREN@[39; 40) "(" 32 TUPLE_EXPR@[39; 41)
33 R_PAREN@[40; 41) ")" 33 L_PAREN@[39; 40) "("
34 COMMA@[41; 42) "," 34 R_PAREN@[40; 41) ")"
35 WHITESPACE@[42; 51) "\n " 35 COMMA@[41; 42) ","
36 MATCH_ARM@[51; 78) 36 WHITESPACE@[42; 51) "\n "
37 ATTR@[51; 52) 37 MATCH_ARM@[51; 78)
38 POUND@[51; 52) "#" 38 ATTR@[51; 52)
39 ERROR@[52; 53) 39 POUND@[51; 52) "#"
40 EXCL@[52; 53) "!" 40 ERROR@[52; 53)
41 ARRAY_EXPR@[53; 78) 41 EXCL@[52; 53) "!"
42 L_BRACK@[53; 54) "[" 42 ARRAY_EXPR@[53; 78)
43 CALL_EXPR@[54; 77) 43 L_BRACK@[53; 54) "["
44 PATH_EXPR@[54; 57) 44 CALL_EXPR@[54; 77)
45 PATH@[54; 57) 45 PATH_EXPR@[54; 57)
46 PATH_SEGMENT@[54; 57) 46 PATH@[54; 57)
47 NAME_REF@[54; 57) 47 PATH_SEGMENT@[54; 57)
48 IDENT@[54; 57) "doc" 48 NAME_REF@[54; 57)
49 ARG_LIST@[57; 77) 49 IDENT@[54; 57) "doc"
50 L_PAREN@[57; 58) "(" 50 ARG_LIST@[57; 77)
51 LITERAL@[58; 76) 51 L_PAREN@[57; 58) "("
52 STRING@[58; 76) "\"Not allowed here\"" 52 LITERAL@[58; 76)
53 R_PAREN@[76; 77) ")" 53 STRING@[58; 76) "\"Not allowed here\""
54 R_BRACK@[77; 78) "]" 54 R_PAREN@[76; 77) ")"
55 WHITESPACE@[78; 87) "\n " 55 R_BRACK@[77; 78) "]"
56 MATCH_ARM@[87; 94) 56 WHITESPACE@[78; 87) "\n "
57 PLACEHOLDER_PAT@[87; 88) 57 MATCH_ARM@[87; 94)
58 UNDERSCORE@[87; 88) "_" 58 PLACEHOLDER_PAT@[87; 88)
59 WHITESPACE@[88; 89) " " 59 UNDERSCORE@[87; 88) "_"
60 FAT_ARROW@[89; 91) "=>" 60 WHITESPACE@[88; 89) " "
61 WHITESPACE@[91; 92) " " 61 FAT_ARROW@[89; 91) "=>"
62 TUPLE_EXPR@[92; 94) 62 WHITESPACE@[91; 92) " "
63 L_PAREN@[92; 93) "(" 63 TUPLE_EXPR@[92; 94)
64 R_PAREN@[93; 94) ")" 64 L_PAREN@[92; 93) "("
65 COMMA@[94; 95) "," 65 R_PAREN@[93; 94) ")"
66 WHITESPACE@[95; 100) "\n " 66 COMMA@[94; 95) ","
67 R_CURLY@[100; 101) "}" 67 WHITESPACE@[95; 100) "\n "
68 WHITESPACE@[101; 107) "\n\n " 68 R_CURLY@[100; 101) "}"
69 EXPR_STMT@[107; 185) 69 WHITESPACE@[101; 107) "\n\n "
70 MATCH_EXPR@[107; 185) 70 EXPR_STMT@[107; 185)
71 MATCH_KW@[107; 112) "match" 71 MATCH_EXPR@[107; 185)
72 WHITESPACE@[112; 113) " " 72 MATCH_KW@[107; 112) "match"
73 TUPLE_EXPR@[113; 115) 73 WHITESPACE@[112; 113) " "
74 L_PAREN@[113; 114) "(" 74 TUPLE_EXPR@[113; 115)
75 R_PAREN@[114; 115) ")" 75 L_PAREN@[113; 114) "("
76 WHITESPACE@[115; 116) " " 76 R_PAREN@[114; 115) ")"
77 MATCH_ARM_LIST@[116; 185) 77 WHITESPACE@[115; 116) " "
78 L_CURLY@[116; 117) "{" 78 MATCH_ARM_LIST@[116; 185)
79 WHITESPACE@[117; 126) "\n " 79 L_CURLY@[116; 117) "{"
80 MATCH_ARM@[126; 133) 80 WHITESPACE@[117; 126) "\n "
81 PLACEHOLDER_PAT@[126; 127) 81 MATCH_ARM@[126; 133)
82 UNDERSCORE@[126; 127) "_" 82 PLACEHOLDER_PAT@[126; 127)
83 WHITESPACE@[127; 128) " " 83 UNDERSCORE@[126; 127) "_"
84 FAT_ARROW@[128; 130) "=>" 84 WHITESPACE@[127; 128) " "
85 WHITESPACE@[130; 131) " " 85 FAT_ARROW@[128; 130) "=>"
86 TUPLE_EXPR@[131; 133) 86 WHITESPACE@[130; 131) " "
87 L_PAREN@[131; 132) "(" 87 TUPLE_EXPR@[131; 133)
88 R_PAREN@[132; 133) ")" 88 L_PAREN@[131; 132) "("
89 COMMA@[133; 134) "," 89 R_PAREN@[132; 133) ")"
90 WHITESPACE@[134; 143) "\n " 90 COMMA@[133; 134) ","
91 MATCH_ARM@[143; 150) 91 WHITESPACE@[134; 143) "\n "
92 PLACEHOLDER_PAT@[143; 144) 92 MATCH_ARM@[143; 150)
93 UNDERSCORE@[143; 144) "_" 93 PLACEHOLDER_PAT@[143; 144)
94 WHITESPACE@[144; 145) " " 94 UNDERSCORE@[143; 144) "_"
95 FAT_ARROW@[145; 147) "=>" 95 WHITESPACE@[144; 145) " "
96 WHITESPACE@[147; 148) " " 96 FAT_ARROW@[145; 147) "=>"
97 TUPLE_EXPR@[148; 150) 97 WHITESPACE@[147; 148) " "
98 L_PAREN@[148; 149) "(" 98 TUPLE_EXPR@[148; 150)
99 R_PAREN@[149; 150) ")" 99 L_PAREN@[148; 149) "("
100 COMMA@[150; 151) "," 100 R_PAREN@[149; 150) ")"
101 WHITESPACE@[151; 160) "\n " 101 COMMA@[150; 151) ","
102 MATCH_ARM@[160; 179) 102 WHITESPACE@[151; 160) "\n "
103 ATTR@[160; 161) 103 MATCH_ARM@[160; 179)
104 POUND@[160; 161) "#" 104 ATTR@[160; 161)
105 ERROR@[161; 162) 105 POUND@[160; 161) "#"
106 EXCL@[161; 162) "!" 106 ERROR@[161; 162)
107 ARRAY_EXPR@[162; 179) 107 EXCL@[161; 162) "!"
108 L_BRACK@[162; 163) "[" 108 ARRAY_EXPR@[162; 179)
109 CALL_EXPR@[163; 178) 109 L_BRACK@[162; 163) "["
110 PATH_EXPR@[163; 166) 110 CALL_EXPR@[163; 178)
111 PATH@[163; 166) 111 PATH_EXPR@[163; 166)
112 PATH_SEGMENT@[163; 166) 112 PATH@[163; 166)
113 NAME_REF@[163; 166) 113 PATH_SEGMENT@[163; 166)
114 IDENT@[163; 166) "doc" 114 NAME_REF@[163; 166)
115 ARG_LIST@[166; 178) 115 IDENT@[163; 166) "doc"
116 L_PAREN@[166; 167) "(" 116 ARG_LIST@[166; 178)
117 LITERAL@[167; 177) 117 L_PAREN@[166; 167) "("
118 STRING@[167; 177) "\"Nor here\"" 118 LITERAL@[167; 177)
119 R_PAREN@[177; 178) ")" 119 STRING@[167; 177) "\"Nor here\""
120 R_BRACK@[178; 179) "]" 120 R_PAREN@[177; 178) ")"
121 WHITESPACE@[179; 184) "\n " 121 R_BRACK@[178; 179) "]"
122 R_CURLY@[184; 185) "}" 122 WHITESPACE@[179; 184) "\n "
123 WHITESPACE@[185; 191) "\n\n " 123 R_CURLY@[184; 185) "}"
124 MATCH_EXPR@[191; 290) 124 WHITESPACE@[185; 191) "\n\n "
125 MATCH_KW@[191; 196) "match" 125 MATCH_EXPR@[191; 290)
126 WHITESPACE@[196; 197) " " 126 MATCH_KW@[191; 196) "match"
127 TUPLE_EXPR@[197; 199) 127 WHITESPACE@[196; 197) " "
128 L_PAREN@[197; 198) "(" 128 TUPLE_EXPR@[197; 199)
129 R_PAREN@[198; 199) ")" 129 L_PAREN@[197; 198) "("
130 WHITESPACE@[199; 200) " " 130 R_PAREN@[198; 199) ")"
131 MATCH_ARM_LIST@[200; 290) 131 WHITESPACE@[199; 200) " "
132 L_CURLY@[200; 201) "{" 132 MATCH_ARM_LIST@[200; 290)
133 WHITESPACE@[201; 210) "\n " 133 L_CURLY@[200; 201) "{"
134 MATCH_ARM@[210; 250) 134 WHITESPACE@[201; 210) "\n "
135 ATTR@[210; 222) 135 MATCH_ARM@[210; 250)
136 POUND@[210; 211) "#" 136 ATTR@[210; 222)
137 TOKEN_TREE@[211; 222) 137 POUND@[210; 211) "#"
138 L_BRACK@[211; 212) "[" 138 TOKEN_TREE@[211; 222)
139 IDENT@[212; 215) "cfg" 139 L_BRACK@[211; 212) "["
140 TOKEN_TREE@[215; 221) 140 IDENT@[212; 215) "cfg"
141 L_PAREN@[215; 216) "(" 141 TOKEN_TREE@[215; 221)
142 IDENT@[216; 220) "test" 142 L_PAREN@[215; 216) "("
143 R_PAREN@[220; 221) ")" 143 IDENT@[216; 220) "test"
144 R_BRACK@[221; 222) "]" 144 R_PAREN@[220; 221) ")"
145 WHITESPACE@[222; 231) "\n " 145 R_BRACK@[221; 222) "]"
146 ATTR@[231; 232) 146 WHITESPACE@[222; 231) "\n "
147 POUND@[231; 232) "#" 147 ATTR@[231; 232)
148 ERROR@[232; 233) 148 POUND@[231; 232) "#"
149 EXCL@[232; 233) "!" 149 ERROR@[232; 233)
150 ARRAY_EXPR@[233; 250) 150 EXCL@[232; 233) "!"
151 L_BRACK@[233; 234) "[" 151 ARRAY_EXPR@[233; 250)
152 CALL_EXPR@[234; 249) 152 L_BRACK@[233; 234) "["
153 PATH_EXPR@[234; 237) 153 CALL_EXPR@[234; 249)
154 PATH@[234; 237) 154 PATH_EXPR@[234; 237)
155 PATH_SEGMENT@[234; 237) 155 PATH@[234; 237)
156 NAME_REF@[234; 237) 156 PATH_SEGMENT@[234; 237)
157 IDENT@[234; 237) "doc" 157 NAME_REF@[234; 237)
158 ARG_LIST@[237; 249) 158 IDENT@[234; 237) "doc"
159 L_PAREN@[237; 238) "(" 159 ARG_LIST@[237; 249)
160 LITERAL@[238; 248) 160 L_PAREN@[237; 238) "("
161 STRING@[238; 248) "\"Nor here\"" 161 LITERAL@[238; 248)
162 R_PAREN@[248; 249) ")" 162 STRING@[238; 248) "\"Nor here\""
163 R_BRACK@[249; 250) "]" 163 R_PAREN@[248; 249) ")"
164 WHITESPACE@[250; 259) "\n " 164 R_BRACK@[249; 250) "]"
165 MATCH_ARM@[259; 266) 165 WHITESPACE@[250; 259) "\n "
166 PLACEHOLDER_PAT@[259; 260) 166 MATCH_ARM@[259; 266)
167 UNDERSCORE@[259; 260) "_" 167 PLACEHOLDER_PAT@[259; 260)
168 WHITESPACE@[260; 261) " " 168 UNDERSCORE@[259; 260) "_"
169 FAT_ARROW@[261; 263) "=>" 169 WHITESPACE@[260; 261) " "
170 WHITESPACE@[263; 264) " " 170 FAT_ARROW@[261; 263) "=>"
171 TUPLE_EXPR@[264; 266) 171 WHITESPACE@[263; 264) " "
172 L_PAREN@[264; 265) "(" 172 TUPLE_EXPR@[264; 266)
173 R_PAREN@[265; 266) ")" 173 L_PAREN@[264; 265) "("
174 COMMA@[266; 267) "," 174 R_PAREN@[265; 266) ")"
175 WHITESPACE@[267; 276) "\n " 175 COMMA@[266; 267) ","
176 MATCH_ARM@[276; 283) 176 WHITESPACE@[267; 276) "\n "
177 PLACEHOLDER_PAT@[276; 277) 177 MATCH_ARM@[276; 283)
178 UNDERSCORE@[276; 277) "_" 178 PLACEHOLDER_PAT@[276; 277)
179 WHITESPACE@[277; 278) " " 179 UNDERSCORE@[276; 277) "_"
180 FAT_ARROW@[278; 280) "=>" 180 WHITESPACE@[277; 278) " "
181 WHITESPACE@[280; 281) " " 181 FAT_ARROW@[278; 280) "=>"
182 TUPLE_EXPR@[281; 283) 182 WHITESPACE@[280; 281) " "
183 L_PAREN@[281; 282) "(" 183 TUPLE_EXPR@[281; 283)
184 R_PAREN@[282; 283) ")" 184 L_PAREN@[281; 282) "("
185 COMMA@[283; 284) "," 185 R_PAREN@[282; 283) ")"
186 WHITESPACE@[284; 289) "\n " 186 COMMA@[283; 284) ","
187 R_CURLY@[289; 290) "}" 187 WHITESPACE@[284; 289) "\n "
188 WHITESPACE@[290; 291) "\n" 188 R_CURLY@[289; 290) "}"
189 R_CURLY@[291; 292) "}" 189 WHITESPACE@[290; 291) "\n"
190 R_CURLY@[291; 292) "}"
190 WHITESPACE@[292; 293) "\n" 191 WHITESPACE@[292; 293) "\n"
191error 52: expected `[` 192error 52: expected `[`
192error 52: expected pattern 193error 52: expected pattern
diff --git a/crates/ra_syntax/test_data/parser/err/0033_match_arms_outer_attrs.txt b/crates/ra_syntax/test_data/parser/err/0033_match_arms_outer_attrs.txt
index e4f1f6337..b65cc3de3 100644
--- a/crates/ra_syntax/test_data/parser/err/0033_match_arms_outer_attrs.txt
+++ b/crates/ra_syntax/test_data/parser/err/0033_match_arms_outer_attrs.txt
@@ -8,56 +8,57 @@ SOURCE_FILE@[0; 89)
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_EXPR@[9; 88)
12 L_CURLY@[9; 10) "{" 12 BLOCK@[9; 88)
13 WHITESPACE@[10; 15) "\n " 13 L_CURLY@[9; 10) "{"
14 MATCH_EXPR@[15; 86) 14 WHITESPACE@[10; 15) "\n "
15 MATCH_KW@[15; 20) "match" 15 MATCH_EXPR@[15; 86)
16 WHITESPACE@[20; 21) " " 16 MATCH_KW@[15; 20) "match"
17 TUPLE_EXPR@[21; 23) 17 WHITESPACE@[20; 21) " "
18 L_PAREN@[21; 22) "(" 18 TUPLE_EXPR@[21; 23)
19 R_PAREN@[22; 23) ")" 19 L_PAREN@[21; 22) "("
20 WHITESPACE@[23; 24) " " 20 R_PAREN@[22; 23) ")"
21 MATCH_ARM_LIST@[24; 86) 21 WHITESPACE@[23; 24) " "
22 L_CURLY@[24; 25) "{" 22 MATCH_ARM_LIST@[24; 86)
23 WHITESPACE@[25; 34) "\n " 23 L_CURLY@[24; 25) "{"
24 MATCH_ARM@[34; 41) 24 WHITESPACE@[25; 34) "\n "
25 PLACEHOLDER_PAT@[34; 35) 25 MATCH_ARM@[34; 41)
26 UNDERSCORE@[34; 35) "_" 26 PLACEHOLDER_PAT@[34; 35)
27 WHITESPACE@[35; 36) " " 27 UNDERSCORE@[34; 35) "_"
28 FAT_ARROW@[36; 38) "=>" 28 WHITESPACE@[35; 36) " "
29 WHITESPACE@[38; 39) " " 29 FAT_ARROW@[36; 38) "=>"
30 TUPLE_EXPR@[39; 41) 30 WHITESPACE@[38; 39) " "
31 L_PAREN@[39; 40) "(" 31 TUPLE_EXPR@[39; 41)
32 R_PAREN@[40; 41) ")" 32 L_PAREN@[39; 40) "("
33 COMMA@[41; 42) "," 33 R_PAREN@[40; 41) ")"
34 WHITESPACE@[42; 51) "\n " 34 COMMA@[41; 42) ","
35 MATCH_ARM@[51; 58) 35 WHITESPACE@[42; 51) "\n "
36 PLACEHOLDER_PAT@[51; 52) 36 MATCH_ARM@[51; 58)
37 UNDERSCORE@[51; 52) "_" 37 PLACEHOLDER_PAT@[51; 52)
38 WHITESPACE@[52; 53) " " 38 UNDERSCORE@[51; 52) "_"
39 FAT_ARROW@[53; 55) "=>" 39 WHITESPACE@[52; 53) " "
40 WHITESPACE@[55; 56) " " 40 FAT_ARROW@[53; 55) "=>"
41 TUPLE_EXPR@[56; 58) 41 WHITESPACE@[55; 56) " "
42 L_PAREN@[56; 57) "(" 42 TUPLE_EXPR@[56; 58)
43 R_PAREN@[57; 58) ")" 43 L_PAREN@[56; 57) "("
44 COMMA@[58; 59) "," 44 R_PAREN@[57; 58) ")"
45 WHITESPACE@[59; 68) "\n " 45 COMMA@[58; 59) ","
46 MATCH_ARM@[68; 80) 46 WHITESPACE@[59; 68) "\n "
47 ATTR@[68; 80) 47 MATCH_ARM@[68; 80)
48 POUND@[68; 69) "#" 48 ATTR@[68; 80)
49 TOKEN_TREE@[69; 80) 49 POUND@[68; 69) "#"
50 L_BRACK@[69; 70) "[" 50 TOKEN_TREE@[69; 80)
51 IDENT@[70; 73) "cfg" 51 L_BRACK@[69; 70) "["
52 TOKEN_TREE@[73; 79) 52 IDENT@[70; 73) "cfg"
53 L_PAREN@[73; 74) "(" 53 TOKEN_TREE@[73; 79)
54 IDENT@[74; 78) "test" 54 L_PAREN@[73; 74) "("
55 R_PAREN@[78; 79) ")" 55 IDENT@[74; 78) "test"
56 R_BRACK@[79; 80) "]" 56 R_PAREN@[78; 79) ")"
57 WHITESPACE@[80; 85) "\n " 57 R_BRACK@[79; 80) "]"
58 R_CURLY@[85; 86) "}" 58 WHITESPACE@[80; 85) "\n "
59 WHITESPACE@[86; 87) "\n" 59 R_CURLY@[85; 86) "}"
60 R_CURLY@[87; 88) "}" 60 WHITESPACE@[86; 87) "\n"
61 R_CURLY@[87; 88) "}"
61 WHITESPACE@[88; 89) "\n" 62 WHITESPACE@[88; 89) "\n"
62error 80: expected pattern 63error 80: expected pattern
63error 80: expected FAT_ARROW 64error 80: expected FAT_ARROW
diff --git a/crates/ra_syntax/test_data/parser/err/0034_bad_box_pattern.txt b/crates/ra_syntax/test_data/parser/err/0034_bad_box_pattern.txt
index 0cdca4b55..21269fb02 100644
--- a/crates/ra_syntax/test_data/parser/err/0034_bad_box_pattern.txt
+++ b/crates/ra_syntax/test_data/parser/err/0034_bad_box_pattern.txt
@@ -8,84 +8,85 @@ SOURCE_FILE@[0; 91)
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; 89) 11 BLOCK_EXPR@[10; 89)
12 L_CURLY@[10; 11) "{" 12 BLOCK@[10; 89)
13 WHITESPACE@[11; 16) "\n " 13 L_CURLY@[10; 11) "{"
14 LET_STMT@[16; 27) 14 WHITESPACE@[11; 16) "\n "
15 LET_KW@[16; 19) "let" 15 LET_STMT@[16; 27)
16 WHITESPACE@[19; 20) " " 16 LET_KW@[16; 19) "let"
17 BIND_PAT@[20; 27) 17 WHITESPACE@[19; 20) " "
18 REF_KW@[20; 23) "ref" 18 BIND_PAT@[20; 27)
19 WHITESPACE@[23; 24) " " 19 REF_KW@[20; 23) "ref"
20 ERROR@[24; 27) 20 WHITESPACE@[23; 24) " "
21 BOX_KW@[24; 27) "box" 21 ERROR@[24; 27)
22 WHITESPACE@[27; 28) " " 22 BOX_KW@[24; 27) "box"
23 EXPR_STMT@[28; 35) 23 WHITESPACE@[27; 28) " "
24 BIN_EXPR@[28; 34) 24 EXPR_STMT@[28; 35)
25 PATH_EXPR@[28; 29) 25 BIN_EXPR@[28; 34)
26 PATH@[28; 29) 26 PATH_EXPR@[28; 29)
27 PATH_SEGMENT@[28; 29) 27 PATH@[28; 29)
28 NAME_REF@[28; 29) 28 PATH_SEGMENT@[28; 29)
29 IDENT@[28; 29) "i" 29 NAME_REF@[28; 29)
30 WHITESPACE@[29; 30) " " 30 IDENT@[28; 29) "i"
31 EQ@[30; 31) "=" 31 WHITESPACE@[29; 30) " "
32 WHITESPACE@[31; 32) " " 32 EQ@[30; 31) "="
33 TUPLE_EXPR@[32; 34) 33 WHITESPACE@[31; 32) " "
34 L_PAREN@[32; 33) "(" 34 TUPLE_EXPR@[32; 34)
35 R_PAREN@[33; 34) ")" 35 L_PAREN@[32; 33) "("
36 SEMI@[34; 35) ";" 36 R_PAREN@[33; 34) ")"
37 WHITESPACE@[35; 40) "\n " 37 SEMI@[34; 35) ";"
38 LET_STMT@[40; 51) 38 WHITESPACE@[35; 40) "\n "
39 LET_KW@[40; 43) "let" 39 LET_STMT@[40; 51)
40 WHITESPACE@[43; 44) " " 40 LET_KW@[40; 43) "let"
41 BIND_PAT@[44; 51) 41 WHITESPACE@[43; 44) " "
42 MUT_KW@[44; 47) "mut" 42 BIND_PAT@[44; 51)
43 WHITESPACE@[47; 48) " " 43 MUT_KW@[44; 47) "mut"
44 ERROR@[48; 51) 44 WHITESPACE@[47; 48) " "
45 BOX_KW@[48; 51) "box" 45 ERROR@[48; 51)
46 WHITESPACE@[51; 52) " " 46 BOX_KW@[48; 51) "box"
47 EXPR_STMT@[52; 59) 47 WHITESPACE@[51; 52) " "
48 BIN_EXPR@[52; 58) 48 EXPR_STMT@[52; 59)
49 PATH_EXPR@[52; 53) 49 BIN_EXPR@[52; 58)
50 PATH@[52; 53) 50 PATH_EXPR@[52; 53)
51 PATH_SEGMENT@[52; 53) 51 PATH@[52; 53)
52 NAME_REF@[52; 53) 52 PATH_SEGMENT@[52; 53)
53 IDENT@[52; 53) "i" 53 NAME_REF@[52; 53)
54 WHITESPACE@[53; 54) " " 54 IDENT@[52; 53) "i"
55 EQ@[54; 55) "=" 55 WHITESPACE@[53; 54) " "
56 WHITESPACE@[55; 56) " " 56 EQ@[54; 55) "="
57 TUPLE_EXPR@[56; 58) 57 WHITESPACE@[55; 56) " "
58 L_PAREN@[56; 57) "(" 58 TUPLE_EXPR@[56; 58)
59 R_PAREN@[57; 58) ")" 59 L_PAREN@[56; 57) "("
60 SEMI@[58; 59) ";" 60 R_PAREN@[57; 58) ")"
61 WHITESPACE@[59; 64) "\n " 61 SEMI@[58; 59) ";"
62 LET_STMT@[64; 79) 62 WHITESPACE@[59; 64) "\n "
63 LET_KW@[64; 67) "let" 63 LET_STMT@[64; 79)
64 WHITESPACE@[67; 68) " " 64 LET_KW@[64; 67) "let"
65 BIND_PAT@[68; 79) 65 WHITESPACE@[67; 68) " "
66 REF_KW@[68; 71) "ref" 66 BIND_PAT@[68; 79)
67 WHITESPACE@[71; 72) " " 67 REF_KW@[68; 71) "ref"
68 MUT_KW@[72; 75) "mut" 68 WHITESPACE@[71; 72) " "
69 WHITESPACE@[75; 76) " " 69 MUT_KW@[72; 75) "mut"
70 ERROR@[76; 79) 70 WHITESPACE@[75; 76) " "
71 BOX_KW@[76; 79) "box" 71 ERROR@[76; 79)
72 WHITESPACE@[79; 80) " " 72 BOX_KW@[76; 79) "box"
73 EXPR_STMT@[80; 87) 73 WHITESPACE@[79; 80) " "
74 BIN_EXPR@[80; 86) 74 EXPR_STMT@[80; 87)
75 PATH_EXPR@[80; 81) 75 BIN_EXPR@[80; 86)
76 PATH@[80; 81) 76 PATH_EXPR@[80; 81)
77 PATH_SEGMENT@[80; 81) 77 PATH@[80; 81)
78 NAME_REF@[80; 81) 78 PATH_SEGMENT@[80; 81)
79 IDENT@[80; 81) "i" 79 NAME_REF@[80; 81)
80 WHITESPACE@[81; 82) " " 80 IDENT@[80; 81) "i"
81 EQ@[82; 83) "=" 81 WHITESPACE@[81; 82) " "
82 WHITESPACE@[83; 84) " " 82 EQ@[82; 83) "="
83 TUPLE_EXPR@[84; 86) 83 WHITESPACE@[83; 84) " "
84 L_PAREN@[84; 85) "(" 84 TUPLE_EXPR@[84; 86)
85 R_PAREN@[85; 86) ")" 85 L_PAREN@[84; 85) "("
86 SEMI@[86; 87) ";" 86 R_PAREN@[85; 86) ")"
87 WHITESPACE@[87; 88) "\n" 87 SEMI@[86; 87) ";"
88 R_CURLY@[88; 89) "}" 88 WHITESPACE@[87; 88) "\n"
89 R_CURLY@[88; 89) "}"
89 WHITESPACE@[89; 91) "\n\n" 90 WHITESPACE@[89; 91) "\n\n"
90error 24: expected a name 91error 24: expected a name
91error 27: expected SEMI 92error 27: expected SEMI
diff --git a/crates/ra_syntax/test_data/parser/inline/err/0002_misplaced_label_err.txt b/crates/ra_syntax/test_data/parser/inline/err/0002_misplaced_label_err.txt
index 7abc49d5e..2950d77ef 100644
--- a/crates/ra_syntax/test_data/parser/inline/err/0002_misplaced_label_err.txt
+++ b/crates/ra_syntax/test_data/parser/inline/err/0002_misplaced_label_err.txt
@@ -8,19 +8,20 @@ SOURCE_FILE@[0; 30)
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; 29) 11 BLOCK_EXPR@[10; 29)
12 L_CURLY@[10; 11) "{" 12 BLOCK@[10; 29)
13 WHITESPACE@[11; 16) "\n " 13 L_CURLY@[10; 11) "{"
14 EXPR_STMT@[16; 22) 14 WHITESPACE@[11; 16) "\n "
15 ERROR@[16; 22) 15 EXPR_STMT@[16; 22)
16 LABEL@[16; 22) 16 ERROR@[16; 22)
17 LIFETIME@[16; 21) "\'loop" 17 LABEL@[16; 22)
18 COLON@[21; 22) ":" 18 LIFETIME@[16; 21) "\'loop"
19 WHITESPACE@[22; 23) " " 19 COLON@[21; 22) ":"
20 IMPL_BLOCK@[23; 27) 20 WHITESPACE@[22; 23) " "
21 IMPL_KW@[23; 27) "impl" 21 IMPL_BLOCK@[23; 27)
22 WHITESPACE@[27; 28) "\n" 22 IMPL_KW@[23; 27) "impl"
23 R_CURLY@[28; 29) "}" 23 WHITESPACE@[27; 28) "\n"
24 R_CURLY@[28; 29) "}"
24 WHITESPACE@[29; 30) "\n" 25 WHITESPACE@[29; 30) "\n"
25error 22: expected a loop 26error 22: expected a loop
26error 22: expected SEMI 27error 22: expected SEMI
diff --git a/crates/ra_syntax/test_data/parser/inline/err/0006_unsafe_block_in_mod.txt b/crates/ra_syntax/test_data/parser/inline/err/0006_unsafe_block_in_mod.txt
index a1871ec08..f3fbc4828 100644
--- a/crates/ra_syntax/test_data/parser/inline/err/0006_unsafe_block_in_mod.txt
+++ b/crates/ra_syntax/test_data/parser/inline/err/0006_unsafe_block_in_mod.txt
@@ -7,9 +7,10 @@ SOURCE_FILE@[0; 33)
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 BLOCK@[8; 10) 10 BLOCK_EXPR@[8; 10)
11 L_CURLY@[8; 9) "{" 11 BLOCK@[8; 10)
12 R_CURLY@[9; 10) "}" 12 L_CURLY@[8; 9) "{"
13 R_CURLY@[9; 10) "}"
13 WHITESPACE@[10; 11) " " 14 WHITESPACE@[10; 11) " "
14 ERROR@[11; 17) 15 ERROR@[11; 17)
15 UNSAFE_KW@[11; 17) "unsafe" 16 UNSAFE_KW@[11; 17) "unsafe"
@@ -27,9 +28,10 @@ SOURCE_FILE@[0; 33)
27 PARAM_LIST@[28; 30) 28 PARAM_LIST@[28; 30)
28 L_PAREN@[28; 29) "(" 29 L_PAREN@[28; 29) "("
29 R_PAREN@[29; 30) ")" 30 R_PAREN@[29; 30) ")"
30 BLOCK@[30; 32) 31 BLOCK_EXPR@[30; 32)
31 L_CURLY@[30; 31) "{" 32 BLOCK@[30; 32)
32 R_CURLY@[31; 32) "}" 33 L_CURLY@[30; 31) "{"
34 R_CURLY@[31; 32) "}"
33 WHITESPACE@[32; 33) "\n" 35 WHITESPACE@[32; 33) "\n"
34error 11: expected an item 36error 11: expected an item
35error 18: expected an item 37error 18: expected an item
diff --git a/crates/ra_syntax/test_data/parser/inline/err/0007_async_without_semicolon.txt b/crates/ra_syntax/test_data/parser/inline/err/0007_async_without_semicolon.txt
index f70adc25d..5cfe766d7 100644
--- a/crates/ra_syntax/test_data/parser/inline/err/0007_async_without_semicolon.txt
+++ b/crates/ra_syntax/test_data/parser/inline/err/0007_async_without_semicolon.txt
@@ -8,24 +8,25 @@ SOURCE_FILE@[0; 30)
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; 29) 11 BLOCK_EXPR@[9; 29)
12 L_CURLY@[9; 10) "{" 12 BLOCK@[9; 29)
13 WHITESPACE@[10; 11) " " 13 L_CURLY@[9; 10) "{"
14 LET_STMT@[11; 27) 14 WHITESPACE@[10; 11) " "
15 LET_KW@[11; 14) "let" 15 LET_STMT@[11; 27)
16 WHITESPACE@[14; 15) " " 16 LET_KW@[11; 14) "let"
17 PLACEHOLDER_PAT@[15; 16) 17 WHITESPACE@[14; 15) " "
18 UNDERSCORE@[15; 16) "_" 18 PLACEHOLDER_PAT@[15; 16)
19 WHITESPACE@[16; 17) " " 19 UNDERSCORE@[15; 16) "_"
20 EQ@[17; 18) "=" 20 WHITESPACE@[16; 17) " "
21 WHITESPACE@[18; 19) " " 21 EQ@[17; 18) "="
22 BLOCK_EXPR@[19; 27) 22 WHITESPACE@[18; 19) " "
23 ASYNC_KW@[19; 24) "async" 23 BLOCK_EXPR@[19; 27)
24 WHITESPACE@[24; 25) " " 24 ASYNC_KW@[19; 24) "async"
25 BLOCK@[25; 27) 25 WHITESPACE@[24; 25) " "
26 L_CURLY@[25; 26) "{" 26 BLOCK@[25; 27)
27 R_CURLY@[26; 27) "}" 27 L_CURLY@[25; 26) "{"
28 WHITESPACE@[27; 28) " " 28 R_CURLY@[26; 27) "}"
29 R_CURLY@[28; 29) "}" 29 WHITESPACE@[27; 28) " "
30 R_CURLY@[28; 29) "}"
30 WHITESPACE@[29; 30) "\n" 31 WHITESPACE@[29; 30) "\n"
31error 27: expected SEMI 32error 27: expected SEMI
diff --git a/crates/ra_syntax/test_data/parser/inline/err/0008_pub_expr.txt b/crates/ra_syntax/test_data/parser/inline/err/0008_pub_expr.txt
index 1dbfca698..0594f148f 100644
--- a/crates/ra_syntax/test_data/parser/inline/err/0008_pub_expr.txt
+++ b/crates/ra_syntax/test_data/parser/inline/err/0008_pub_expr.txt
@@ -8,18 +8,19 @@ SOURCE_FILE@[0; 21)
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; 20) 11 BLOCK_EXPR@[9; 20)
12 L_CURLY@[9; 10) "{" 12 BLOCK@[9; 20)
13 WHITESPACE@[10; 11) " " 13 L_CURLY@[9; 10) "{"
14 ERROR@[11; 14) 14 WHITESPACE@[10; 11) " "
15 VISIBILITY@[11; 14) 15 ERROR@[11; 14)
16 PUB_KW@[11; 14) "pub" 16 VISIBILITY@[11; 14)
17 WHITESPACE@[14; 15) " " 17 PUB_KW@[11; 14) "pub"
18 EXPR_STMT@[15; 18) 18 WHITESPACE@[14; 15) " "
19 LITERAL@[15; 17) 19 EXPR_STMT@[15; 18)
20 INT_NUMBER@[15; 17) "92" 20 LITERAL@[15; 17)
21 SEMI@[17; 18) ";" 21 INT_NUMBER@[15; 17) "92"
22 WHITESPACE@[18; 19) " " 22 SEMI@[17; 18) ";"
23 R_CURLY@[19; 20) "}" 23 WHITESPACE@[18; 19) " "
24 R_CURLY@[19; 20) "}"
24 WHITESPACE@[20; 21) "\n" 25 WHITESPACE@[20; 21) "\n"
25error 14: expected an item 26error 14: expected an item
diff --git a/crates/ra_syntax/test_data/parser/inline/err/0009_attr_on_expr_not_allowed.txt b/crates/ra_syntax/test_data/parser/inline/err/0009_attr_on_expr_not_allowed.txt
index 338776a72..eab9f5b91 100644
--- a/crates/ra_syntax/test_data/parser/inline/err/0009_attr_on_expr_not_allowed.txt
+++ b/crates/ra_syntax/test_data/parser/inline/err/0009_attr_on_expr_not_allowed.txt
@@ -8,48 +8,50 @@ SOURCE_FILE@[0; 48)
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; 47) 11 BLOCK_EXPR@[9; 47)
12 L_CURLY@[9; 10) "{" 12 BLOCK@[9; 47)
13 WHITESPACE@[10; 14) "\n " 13 L_CURLY@[9; 10) "{"
14 EXPR_STMT@[14; 25) 14 WHITESPACE@[10; 14) "\n "
15 ATTR@[14; 18) 15 EXPR_STMT@[14; 25)
16 POUND@[14; 15) "#" 16 ATTR@[14; 18)
17 TOKEN_TREE@[15; 18) 17 POUND@[14; 15) "#"
18 L_BRACK@[15; 16) "[" 18 TOKEN_TREE@[15; 18)
19 IDENT@[16; 17) "A" 19 L_BRACK@[15; 16) "["
20 R_BRACK@[17; 18) "]" 20 IDENT@[16; 17) "A"
21 WHITESPACE@[18; 19) " " 21 R_BRACK@[17; 18) "]"
22 BIN_EXPR@[19; 24) 22 WHITESPACE@[18; 19) " "
23 LITERAL@[19; 20) 23 BIN_EXPR@[19; 24)
24 INT_NUMBER@[19; 20) "1" 24 LITERAL@[19; 20)
25 WHITESPACE@[20; 21) " " 25 INT_NUMBER@[19; 20) "1"
26 PLUS@[21; 22) "+" 26 WHITESPACE@[20; 21) " "
27 WHITESPACE@[22; 23) " " 27 PLUS@[21; 22) "+"
28 LITERAL@[23; 24) 28 WHITESPACE@[22; 23) " "
29 INT_NUMBER@[23; 24) "2" 29 LITERAL@[23; 24)
30 SEMI@[24; 25) ";" 30 INT_NUMBER@[23; 24) "2"
31 WHITESPACE@[25; 29) "\n " 31 SEMI@[24; 25) ";"
32 EXPR_STMT@[29; 45) 32 WHITESPACE@[25; 29) "\n "
33 ATTR@[29; 33) 33 EXPR_STMT@[29; 45)
34 POUND@[29; 30) "#" 34 ATTR@[29; 33)
35 TOKEN_TREE@[30; 33) 35 POUND@[29; 30) "#"
36 L_BRACK@[30; 31) "[" 36 TOKEN_TREE@[30; 33)
37 IDENT@[31; 32) "B" 37 L_BRACK@[30; 31) "["
38 R_BRACK@[32; 33) "]" 38 IDENT@[31; 32) "B"
39 WHITESPACE@[33; 34) " " 39 R_BRACK@[32; 33) "]"
40 IF_EXPR@[34; 44) 40 WHITESPACE@[33; 34) " "
41 IF_KW@[34; 36) "if" 41 IF_EXPR@[34; 44)
42 WHITESPACE@[36; 37) " " 42 IF_KW@[34; 36) "if"
43 CONDITION@[37; 41) 43 WHITESPACE@[36; 37) " "
44 LITERAL@[37; 41) 44 CONDITION@[37; 41)
45 TRUE_KW@[37; 41) "true" 45 LITERAL@[37; 41)
46 WHITESPACE@[41; 42) " " 46 TRUE_KW@[37; 41) "true"
47 BLOCK@[42; 44) 47 WHITESPACE@[41; 42) " "
48 L_CURLY@[42; 43) "{" 48 BLOCK_EXPR@[42; 44)
49 R_CURLY@[43; 44) "}" 49 BLOCK@[42; 44)
50 SEMI@[44; 45) ";" 50 L_CURLY@[42; 43) "{"
51 WHITESPACE@[45; 46) "\n" 51 R_CURLY@[43; 44) "}"
52 R_CURLY@[46; 47) "}" 52 SEMI@[44; 45) ";"
53 WHITESPACE@[45; 46) "\n"
54 R_CURLY@[46; 47) "}"
53 WHITESPACE@[47; 48) "\n" 55 WHITESPACE@[47; 48) "\n"
54error 24: attributes are not allowed on BIN_EXPR 56error 24: attributes are not allowed on BIN_EXPR
55error 44: attributes are not allowed on IF_EXPR 57error 44: attributes are not allowed on IF_EXPR
diff --git a/crates/ra_syntax/test_data/parser/inline/err/0010_bad_tuple_index_expr.txt b/crates/ra_syntax/test_data/parser/inline/err/0010_bad_tuple_index_expr.txt
index 465e79e7b..8ad2a588f 100644
--- a/crates/ra_syntax/test_data/parser/inline/err/0010_bad_tuple_index_expr.txt
+++ b/crates/ra_syntax/test_data/parser/inline/err/0010_bad_tuple_index_expr.txt
@@ -8,45 +8,46 @@ SOURCE_FILE@[0; 47)
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; 46) 11 BLOCK_EXPR@[9; 46)
12 L_CURLY@[9; 10) "{" 12 BLOCK@[9; 46)
13 WHITESPACE@[10; 15) "\n " 13 L_CURLY@[9; 10) "{"
14 EXPR_STMT@[15; 20) 14 WHITESPACE@[10; 15) "\n "
15 FIELD_EXPR@[15; 19) 15 EXPR_STMT@[15; 20)
16 PATH_EXPR@[15; 16) 16 FIELD_EXPR@[15; 19)
17 PATH@[15; 16) 17 PATH_EXPR@[15; 16)
18 PATH_SEGMENT@[15; 16) 18 PATH@[15; 16)
19 NAME_REF@[15; 16) 19 PATH_SEGMENT@[15; 16)
20 IDENT@[15; 16) "x" 20 NAME_REF@[15; 16)
21 DOT@[16; 17) "." 21 IDENT@[15; 16) "x"
22 FLOAT_NUMBER@[17; 19) "0." 22 DOT@[16; 17) "."
23 SEMI@[19; 20) ";" 23 FLOAT_NUMBER@[17; 19) "0."
24 WHITESPACE@[20; 25) "\n " 24 SEMI@[19; 20) ";"
25 EXPR_STMT@[25; 32) 25 WHITESPACE@[20; 25) "\n "
26 FIELD_EXPR@[25; 31) 26 EXPR_STMT@[25; 32)
27 PATH_EXPR@[25; 26) 27 FIELD_EXPR@[25; 31)
28 PATH@[25; 26) 28 PATH_EXPR@[25; 26)
29 PATH_SEGMENT@[25; 26) 29 PATH@[25; 26)
30 NAME_REF@[25; 26) 30 PATH_SEGMENT@[25; 26)
31 IDENT@[25; 26) "x" 31 NAME_REF@[25; 26)
32 DOT@[26; 27) "." 32 IDENT@[25; 26) "x"
33 NAME_REF@[27; 31) 33 DOT@[26; 27) "."
34 INT_NUMBER@[27; 31) "1i32" 34 NAME_REF@[27; 31)
35 SEMI@[31; 32) ";" 35 INT_NUMBER@[27; 31) "1i32"
36 WHITESPACE@[32; 37) "\n " 36 SEMI@[31; 32) ";"
37 EXPR_STMT@[37; 44) 37 WHITESPACE@[32; 37) "\n "
38 FIELD_EXPR@[37; 43) 38 EXPR_STMT@[37; 44)
39 PATH_EXPR@[37; 38) 39 FIELD_EXPR@[37; 43)
40 PATH@[37; 38) 40 PATH_EXPR@[37; 38)
41 PATH_SEGMENT@[37; 38) 41 PATH@[37; 38)
42 NAME_REF@[37; 38) 42 PATH_SEGMENT@[37; 38)
43 IDENT@[37; 38) "x" 43 NAME_REF@[37; 38)
44 DOT@[38; 39) "." 44 IDENT@[37; 38) "x"
45 NAME_REF@[39; 43) 45 DOT@[38; 39) "."
46 INT_NUMBER@[39; 43) "0x01" 46 NAME_REF@[39; 43)
47 SEMI@[43; 44) ";" 47 INT_NUMBER@[39; 43) "0x01"
48 WHITESPACE@[44; 45) "\n" 48 SEMI@[43; 44) ";"
49 R_CURLY@[45; 46) "}" 49 WHITESPACE@[44; 45) "\n"
50 R_CURLY@[45; 46) "}"
50 WHITESPACE@[46; 47) "\n" 51 WHITESPACE@[46; 47) "\n"
51error [27; 31): Tuple (struct) field access is only allowed through decimal integers with no underscores or suffix 52error [27; 31): Tuple (struct) field access is only allowed through decimal integers with no underscores or suffix
52error [39; 43): Tuple (struct) field access is only allowed through decimal integers with no underscores or suffix 53error [39; 43): Tuple (struct) field access is only allowed through decimal integers with no underscores or suffix
diff --git a/crates/ra_syntax/test_data/parser/inline/err/0010_wrong_order_fns.txt b/crates/ra_syntax/test_data/parser/inline/err/0010_wrong_order_fns.txt
index b1ef210d3..2ea6a566d 100644
--- a/crates/ra_syntax/test_data/parser/inline/err/0010_wrong_order_fns.txt
+++ b/crates/ra_syntax/test_data/parser/inline/err/0010_wrong_order_fns.txt
@@ -13,9 +13,10 @@ SOURCE_FILE@[0; 50)
13 L_PAREN@[19; 20) "(" 13 L_PAREN@[19; 20) "("
14 R_PAREN@[20; 21) ")" 14 R_PAREN@[20; 21) ")"
15 WHITESPACE@[21; 22) " " 15 WHITESPACE@[21; 22) " "
16 BLOCK@[22; 24) 16 BLOCK_EXPR@[22; 24)
17 L_CURLY@[22; 23) "{" 17 BLOCK@[22; 24)
18 R_CURLY@[23; 24) "}" 18 L_CURLY@[22; 23) "{"
19 R_CURLY@[23; 24) "}"
19 WHITESPACE@[24; 25) "\n" 20 WHITESPACE@[24; 25) "\n"
20 ERROR@[25; 31) 21 ERROR@[25; 31)
21 UNSAFE_KW@[25; 31) "unsafe" 22 UNSAFE_KW@[25; 31) "unsafe"
@@ -31,9 +32,10 @@ SOURCE_FILE@[0; 50)
31 L_PAREN@[44; 45) "(" 32 L_PAREN@[44; 45) "("
32 R_PAREN@[45; 46) ")" 33 R_PAREN@[45; 46) ")"
33 WHITESPACE@[46; 47) " " 34 WHITESPACE@[46; 47) " "
34 BLOCK@[47; 49) 35 BLOCK_EXPR@[47; 49)
35 L_CURLY@[47; 48) "{" 36 BLOCK@[47; 49)
36 R_CURLY@[48; 49) "}" 37 L_CURLY@[47; 48) "{"
38 R_CURLY@[48; 49) "}"
37 WHITESPACE@[49; 50) "\n" 39 WHITESPACE@[49; 50) "\n"
38error 5: expected existential, fn, trait or impl 40error 5: expected existential, fn, trait or impl
39error 31: expected existential, fn, trait or impl 41error 31: expected existential, fn, trait or impl
diff --git a/crates/ra_syntax/test_data/parser/inline/err/0014_default_fn_type.txt b/crates/ra_syntax/test_data/parser/inline/err/0014_default_fn_type.txt
index 7da4e243f..a1a0bd7c4 100644
--- a/crates/ra_syntax/test_data/parser/inline/err/0014_default_fn_type.txt
+++ b/crates/ra_syntax/test_data/parser/inline/err/0014_default_fn_type.txt
@@ -44,9 +44,10 @@ SOURCE_FILE@[0; 62)
44 L_PAREN@[54; 55) "(" 44 L_PAREN@[54; 55) "("
45 R_PAREN@[55; 56) ")" 45 R_PAREN@[55; 56) ")"
46 WHITESPACE@[56; 57) " " 46 WHITESPACE@[56; 57) " "
47 BLOCK@[57; 59) 47 BLOCK_EXPR@[57; 59)
48 L_CURLY@[57; 58) "{" 48 BLOCK@[57; 59)
49 R_CURLY@[58; 59) "}" 49 L_CURLY@[57; 58) "{"
50 R_CURLY@[58; 59) "}"
50 WHITESPACE@[59; 60) "\n" 51 WHITESPACE@[59; 60) "\n"
51 R_CURLY@[60; 61) "}" 52 R_CURLY@[60; 61) "}"
52 WHITESPACE@[61; 62) "\n" 53 WHITESPACE@[61; 62) "\n"
diff --git a/crates/ra_syntax/test_data/parser/inline/ok/0001_trait_item_list.txt b/crates/ra_syntax/test_data/parser/inline/ok/0001_trait_item_list.txt
index 18f02bb22..d4e710dd4 100644
--- a/crates/ra_syntax/test_data/parser/inline/ok/0001_trait_item_list.txt
+++ b/crates/ra_syntax/test_data/parser/inline/ok/0001_trait_item_list.txt
@@ -50,9 +50,10 @@ SOURCE_FILE@[0; 83)
50 L_PAREN@[56; 57) "(" 50 L_PAREN@[56; 57) "("
51 R_PAREN@[57; 58) ")" 51 R_PAREN@[57; 58) ")"
52 WHITESPACE@[58; 59) " " 52 WHITESPACE@[58; 59) " "
53 BLOCK@[59; 61) 53 BLOCK_EXPR@[59; 61)
54 L_CURLY@[59; 60) "{" 54 BLOCK@[59; 61)
55 R_CURLY@[60; 61) "}" 55 L_CURLY@[59; 60) "{"
56 R_CURLY@[60; 61) "}"
56 WHITESPACE@[61; 66) "\n " 57 WHITESPACE@[61; 66) "\n "
57 FN_DEF@[66; 80) 58 FN_DEF@[66; 80)
58 FN_KW@[66; 68) "fn" 59 FN_KW@[66; 68) "fn"
diff --git a/crates/ra_syntax/test_data/parser/inline/ok/0003_where_pred_for.txt b/crates/ra_syntax/test_data/parser/inline/ok/0003_where_pred_for.txt
index 8a21ee968..e3f5a7f04 100644
--- a/crates/ra_syntax/test_data/parser/inline/ok/0003_where_pred_for.txt
+++ b/crates/ra_syntax/test_data/parser/inline/ok/0003_where_pred_for.txt
@@ -54,8 +54,9 @@ SOURCE_FILE@[0; 49)
54 IDENT@[40; 43) "str" 54 IDENT@[40; 43) "str"
55 R_PAREN@[43; 44) ")" 55 R_PAREN@[43; 44) ")"
56 WHITESPACE@[44; 45) "\n" 56 WHITESPACE@[44; 45) "\n"
57 BLOCK@[45; 48) 57 BLOCK_EXPR@[45; 48)
58 L_CURLY@[45; 46) "{" 58 BLOCK@[45; 48)
59 WHITESPACE@[46; 47) " " 59 L_CURLY@[45; 46) "{"
60 R_CURLY@[47; 48) "}" 60 WHITESPACE@[46; 47) " "
61 R_CURLY@[47; 48) "}"
61 WHITESPACE@[48; 49) "\n" 62 WHITESPACE@[48; 49) "\n"
diff --git a/crates/ra_syntax/test_data/parser/inline/ok/0005_function_type_params.txt b/crates/ra_syntax/test_data/parser/inline/ok/0005_function_type_params.txt
index c1a70d566..8ae7909f9 100644
--- a/crates/ra_syntax/test_data/parser/inline/ok/0005_function_type_params.txt
+++ b/crates/ra_syntax/test_data/parser/inline/ok/0005_function_type_params.txt
@@ -31,7 +31,8 @@ SOURCE_FILE@[0; 28)
31 PARAM_LIST@[23; 25) 31 PARAM_LIST@[23; 25)
32 L_PAREN@[23; 24) "(" 32 L_PAREN@[23; 24) "("
33 R_PAREN@[24; 25) ")" 33 R_PAREN@[24; 25) ")"
34 BLOCK@[25; 27) 34 BLOCK_EXPR@[25; 27)
35 L_CURLY@[25; 26) "{" 35 BLOCK@[25; 27)
36 R_CURLY@[26; 27) "}" 36 L_CURLY@[25; 26) "{"
37 R_CURLY@[26; 27) "}"
37 WHITESPACE@[27; 28) "\n" 38 WHITESPACE@[27; 28) "\n"
diff --git a/crates/ra_syntax/test_data/parser/inline/ok/0006_self_param.txt b/crates/ra_syntax/test_data/parser/inline/ok/0006_self_param.txt
index 8e210a6ca..0ccd12b0a 100644
--- a/crates/ra_syntax/test_data/parser/inline/ok/0006_self_param.txt
+++ b/crates/ra_syntax/test_data/parser/inline/ok/0006_self_param.txt
@@ -22,9 +22,10 @@ SOURCE_FILE@[0; 128)
22 SELF_KW@[18; 22) "self" 22 SELF_KW@[18; 22) "self"
23 R_PAREN@[22; 23) ")" 23 R_PAREN@[22; 23) ")"
24 WHITESPACE@[23; 24) " " 24 WHITESPACE@[23; 24) " "
25 BLOCK@[24; 26) 25 BLOCK_EXPR@[24; 26)
26 L_CURLY@[24; 25) "{" 26 BLOCK@[24; 26)
27 R_CURLY@[25; 26) "}" 27 L_CURLY@[24; 25) "{"
28 R_CURLY@[25; 26) "}"
28 WHITESPACE@[26; 31) "\n " 29 WHITESPACE@[26; 31) "\n "
29 FN_DEF@[31; 46) 30 FN_DEF@[31; 46)
30 FN_KW@[31; 33) "fn" 31 FN_KW@[31; 33) "fn"
@@ -39,9 +40,10 @@ SOURCE_FILE@[0; 128)
39 COMMA@[41; 42) "," 40 COMMA@[41; 42) ","
40 R_PAREN@[42; 43) ")" 41 R_PAREN@[42; 43) ")"
41 WHITESPACE@[43; 44) " " 42 WHITESPACE@[43; 44) " "
42 BLOCK@[44; 46) 43 BLOCK_EXPR@[44; 46)
43 L_CURLY@[44; 45) "{" 44 BLOCK@[44; 46)
44 R_CURLY@[45; 46) "}" 45 L_CURLY@[44; 45) "{"
46 R_CURLY@[45; 46) "}"
45 WHITESPACE@[46; 51) "\n " 47 WHITESPACE@[46; 51) "\n "
46 FN_DEF@[51; 69) 48 FN_DEF@[51; 69)
47 FN_KW@[51; 53) "fn" 49 FN_KW@[51; 53) "fn"
@@ -58,9 +60,10 @@ SOURCE_FILE@[0; 128)
58 COMMA@[64; 65) "," 60 COMMA@[64; 65) ","
59 R_PAREN@[65; 66) ")" 61 R_PAREN@[65; 66) ")"
60 WHITESPACE@[66; 67) " " 62 WHITESPACE@[66; 67) " "
61 BLOCK@[67; 69) 63 BLOCK_EXPR@[67; 69)
62 L_CURLY@[67; 68) "{" 64 BLOCK@[67; 69)
63 R_CURLY@[68; 69) "}" 65 L_CURLY@[67; 68) "{"
66 R_CURLY@[68; 69) "}"
64 WHITESPACE@[69; 74) "\n " 67 WHITESPACE@[69; 74) "\n "
65 FN_DEF@[74; 103) 68 FN_DEF@[74; 103)
66 FN_KW@[74; 76) "fn" 69 FN_KW@[74; 76) "fn"
@@ -91,9 +94,10 @@ SOURCE_FILE@[0; 128)
91 IDENT@[96; 99) "i32" 94 IDENT@[96; 99) "i32"
92 R_PAREN@[99; 100) ")" 95 R_PAREN@[99; 100) ")"
93 WHITESPACE@[100; 101) " " 96 WHITESPACE@[100; 101) " "
94 BLOCK@[101; 103) 97 BLOCK_EXPR@[101; 103)
95 L_CURLY@[101; 102) "{" 98 BLOCK@[101; 103)
96 R_CURLY@[102; 103) "}" 99 L_CURLY@[101; 102) "{"
100 R_CURLY@[102; 103) "}"
97 WHITESPACE@[103; 108) "\n " 101 WHITESPACE@[103; 108) "\n "
98 FN_DEF@[108; 125) 102 FN_DEF@[108; 125)
99 FN_KW@[108; 110) "fn" 103 FN_KW@[108; 110) "fn"
@@ -108,9 +112,10 @@ SOURCE_FILE@[0; 128)
108 SELF_KW@[117; 121) "self" 112 SELF_KW@[117; 121) "self"
109 R_PAREN@[121; 122) ")" 113 R_PAREN@[121; 122) ")"
110 WHITESPACE@[122; 123) " " 114 WHITESPACE@[122; 123) " "
111 BLOCK@[123; 125) 115 BLOCK_EXPR@[123; 125)
112 L_CURLY@[123; 124) "{" 116 BLOCK@[123; 125)
113 R_CURLY@[124; 125) "}" 117 L_CURLY@[123; 124) "{"
118 R_CURLY@[124; 125) "}"
114 WHITESPACE@[125; 126) "\n" 119 WHITESPACE@[125; 126) "\n"
115 R_CURLY@[126; 127) "}" 120 R_CURLY@[126; 127) "}"
116 WHITESPACE@[127; 128) "\n" 121 WHITESPACE@[127; 128) "\n"
diff --git a/crates/ra_syntax/test_data/parser/inline/ok/0008_path_part.txt b/crates/ra_syntax/test_data/parser/inline/ok/0008_path_part.txt
index 4108762e5..80bb7733c 100644
--- a/crates/ra_syntax/test_data/parser/inline/ok/0008_path_part.txt
+++ b/crates/ra_syntax/test_data/parser/inline/ok/0008_path_part.txt
@@ -8,88 +8,89 @@ SOURCE_FILE@[0; 103)
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; 102) 11 BLOCK_EXPR@[9; 102)
12 L_CURLY@[9; 10) "{" 12 BLOCK@[9; 102)
13 WHITESPACE@[10; 15) "\n " 13 L_CURLY@[9; 10) "{"
14 LET_STMT@[15; 33) 14 WHITESPACE@[10; 15) "\n "
15 LET_KW@[15; 18) "let" 15 LET_STMT@[15; 33)
16 WHITESPACE@[18; 19) " " 16 LET_KW@[15; 18) "let"
17 PATH_PAT@[19; 27) 17 WHITESPACE@[18; 19) " "
18 PATH@[19; 27) 18 PATH_PAT@[19; 27)
19 PATH@[19; 22) 19 PATH@[19; 27)
20 PATH_SEGMENT@[19; 22) 20 PATH@[19; 22)
21 NAME_REF@[19; 22) 21 PATH_SEGMENT@[19; 22)
22 IDENT@[19; 22) "foo" 22 NAME_REF@[19; 22)
23 COLONCOLON@[22; 24) "::" 23 IDENT@[19; 22) "foo"
24 PATH_SEGMENT@[24; 27) 24 COLONCOLON@[22; 24) "::"
25 NAME_REF@[24; 27) 25 PATH_SEGMENT@[24; 27)
26 IDENT@[24; 27) "Bar" 26 NAME_REF@[24; 27)
27 WHITESPACE@[27; 28) " " 27 IDENT@[24; 27) "Bar"
28 EQ@[28; 29) "=" 28 WHITESPACE@[27; 28) " "
29 WHITESPACE@[29; 30) " " 29 EQ@[28; 29) "="
30 TUPLE_EXPR@[30; 32) 30 WHITESPACE@[29; 30) " "
31 L_PAREN@[30; 31) "(" 31 TUPLE_EXPR@[30; 32)
32 R_PAREN@[31; 32) ")" 32 L_PAREN@[30; 31) "("
33 SEMI@[32; 33) ";" 33 R_PAREN@[31; 32) ")"
34 WHITESPACE@[33; 38) "\n " 34 SEMI@[32; 33) ";"
35 LET_STMT@[38; 53) 35 WHITESPACE@[33; 38) "\n "
36 LET_KW@[38; 41) "let" 36 LET_STMT@[38; 53)
37 WHITESPACE@[41; 42) " " 37 LET_KW@[38; 41) "let"
38 PATH_PAT@[42; 47) 38 WHITESPACE@[41; 42) " "
39 PATH@[42; 47) 39 PATH_PAT@[42; 47)
40 PATH_SEGMENT@[42; 47) 40 PATH@[42; 47)
41 COLONCOLON@[42; 44) "::" 41 PATH_SEGMENT@[42; 47)
42 NAME_REF@[44; 47) 42 COLONCOLON@[42; 44) "::"
43 IDENT@[44; 47) "Bar" 43 NAME_REF@[44; 47)
44 WHITESPACE@[47; 48) " " 44 IDENT@[44; 47) "Bar"
45 EQ@[48; 49) "=" 45 WHITESPACE@[47; 48) " "
46 WHITESPACE@[49; 50) " " 46 EQ@[48; 49) "="
47 TUPLE_EXPR@[50; 52) 47 WHITESPACE@[49; 50) " "
48 L_PAREN@[50; 51) "(" 48 TUPLE_EXPR@[50; 52)
49 R_PAREN@[51; 52) ")" 49 L_PAREN@[50; 51) "("
50 SEMI@[52; 53) ";" 50 R_PAREN@[51; 52) ")"
51 WHITESPACE@[53; 58) "\n " 51 SEMI@[52; 53) ";"
52 LET_STMT@[58; 78) 52 WHITESPACE@[53; 58) "\n "
53 LET_KW@[58; 61) "let" 53 LET_STMT@[58; 78)
54 WHITESPACE@[61; 62) " " 54 LET_KW@[58; 61) "let"
55 RECORD_PAT@[62; 72) 55 WHITESPACE@[61; 62) " "
56 PATH@[62; 65) 56 RECORD_PAT@[62; 72)
57 PATH_SEGMENT@[62; 65) 57 PATH@[62; 65)
58 NAME_REF@[62; 65) 58 PATH_SEGMENT@[62; 65)
59 IDENT@[62; 65) "Bar" 59 NAME_REF@[62; 65)
60 WHITESPACE@[65; 66) " " 60 IDENT@[62; 65) "Bar"
61 RECORD_FIELD_PAT_LIST@[66; 72) 61 WHITESPACE@[65; 66) " "
62 L_CURLY@[66; 67) "{" 62 RECORD_FIELD_PAT_LIST@[66; 72)
63 WHITESPACE@[67; 68) " " 63 L_CURLY@[66; 67) "{"
64 DOTDOT@[68; 70) ".." 64 WHITESPACE@[67; 68) " "
65 WHITESPACE@[70; 71) " " 65 DOTDOT@[68; 70) ".."
66 R_CURLY@[71; 72) "}" 66 WHITESPACE@[70; 71) " "
67 WHITESPACE@[72; 73) " " 67 R_CURLY@[71; 72) "}"
68 EQ@[73; 74) "=" 68 WHITESPACE@[72; 73) " "
69 WHITESPACE@[74; 75) " " 69 EQ@[73; 74) "="
70 TUPLE_EXPR@[75; 77) 70 WHITESPACE@[74; 75) " "
71 L_PAREN@[75; 76) "(" 71 TUPLE_EXPR@[75; 77)
72 R_PAREN@[76; 77) ")" 72 L_PAREN@[75; 76) "("
73 SEMI@[77; 78) ";" 73 R_PAREN@[76; 77) ")"
74 WHITESPACE@[78; 83) "\n " 74 SEMI@[77; 78) ";"
75 LET_STMT@[83; 100) 75 WHITESPACE@[78; 83) "\n "
76 LET_KW@[83; 86) "let" 76 LET_STMT@[83; 100)
77 WHITESPACE@[86; 87) " " 77 LET_KW@[83; 86) "let"
78 TUPLE_STRUCT_PAT@[87; 94) 78 WHITESPACE@[86; 87) " "
79 PATH@[87; 90) 79 TUPLE_STRUCT_PAT@[87; 94)
80 PATH_SEGMENT@[87; 90) 80 PATH@[87; 90)
81 NAME_REF@[87; 90) 81 PATH_SEGMENT@[87; 90)
82 IDENT@[87; 90) "Bar" 82 NAME_REF@[87; 90)
83 L_PAREN@[90; 91) "(" 83 IDENT@[87; 90) "Bar"
84 DOTDOT@[91; 93) ".." 84 L_PAREN@[90; 91) "("
85 R_PAREN@[93; 94) ")" 85 DOTDOT@[91; 93) ".."
86 WHITESPACE@[94; 95) " " 86 R_PAREN@[93; 94) ")"
87 EQ@[95; 96) "=" 87 WHITESPACE@[94; 95) " "
88 WHITESPACE@[96; 97) " " 88 EQ@[95; 96) "="
89 TUPLE_EXPR@[97; 99) 89 WHITESPACE@[96; 97) " "
90 L_PAREN@[97; 98) "(" 90 TUPLE_EXPR@[97; 99)
91 R_PAREN@[98; 99) ")" 91 L_PAREN@[97; 98) "("
92 SEMI@[99; 100) ";" 92 R_PAREN@[98; 99) ")"
93 WHITESPACE@[100; 101) "\n" 93 SEMI@[99; 100) ";"
94 R_CURLY@[101; 102) "}" 94 WHITESPACE@[100; 101) "\n"
95 R_CURLY@[101; 102) "}"
95 WHITESPACE@[102; 103) "\n" 96 WHITESPACE@[102; 103) "\n"
diff --git a/crates/ra_syntax/test_data/parser/inline/ok/0009_loop_expr.txt b/crates/ra_syntax/test_data/parser/inline/ok/0009_loop_expr.txt
index 8240aba15..2d8872022 100644
--- a/crates/ra_syntax/test_data/parser/inline/ok/0009_loop_expr.txt
+++ b/crates/ra_syntax/test_data/parser/inline/ok/0009_loop_expr.txt
@@ -8,17 +8,19 @@ SOURCE_FILE@[0; 26)
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; 25) 11 BLOCK_EXPR@[9; 25)
12 L_CURLY@[9; 10) "{" 12 BLOCK@[9; 25)
13 WHITESPACE@[10; 15) "\n " 13 L_CURLY@[9; 10) "{"
14 EXPR_STMT@[15; 23) 14 WHITESPACE@[10; 15) "\n "
15 LOOP_EXPR@[15; 22) 15 EXPR_STMT@[15; 23)
16 LOOP_KW@[15; 19) "loop" 16 LOOP_EXPR@[15; 22)
17 WHITESPACE@[19; 20) " " 17 LOOP_KW@[15; 19) "loop"
18 BLOCK@[20; 22) 18 WHITESPACE@[19; 20) " "
19 L_CURLY@[20; 21) "{" 19 BLOCK_EXPR@[20; 22)
20 R_CURLY@[21; 22) "}" 20 BLOCK@[20; 22)
21 SEMI@[22; 23) ";" 21 L_CURLY@[20; 21) "{"
22 WHITESPACE@[23; 24) "\n" 22 R_CURLY@[21; 22) "}"
23 R_CURLY@[24; 25) "}" 23 SEMI@[22; 23) ";"
24 WHITESPACE@[23; 24) "\n"
25 R_CURLY@[24; 25) "}"
24 WHITESPACE@[25; 26) "\n" 26 WHITESPACE@[25; 26) "\n"
diff --git a/crates/ra_syntax/test_data/parser/inline/ok/0011_field_expr.txt b/crates/ra_syntax/test_data/parser/inline/ok/0011_field_expr.txt
index 1d2cf2761..29b268b55 100644
--- a/crates/ra_syntax/test_data/parser/inline/ok/0011_field_expr.txt
+++ b/crates/ra_syntax/test_data/parser/inline/ok/0011_field_expr.txt
@@ -8,52 +8,53 @@ SOURCE_FILE@[0; 48)
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; 47) 11 BLOCK_EXPR@[9; 47)
12 L_CURLY@[9; 10) "{" 12 BLOCK@[9; 47)
13 WHITESPACE@[10; 15) "\n " 13 L_CURLY@[9; 10) "{"
14 EXPR_STMT@[15; 21) 14 WHITESPACE@[10; 15) "\n "
15 FIELD_EXPR@[15; 20) 15 EXPR_STMT@[15; 21)
16 PATH_EXPR@[15; 16) 16 FIELD_EXPR@[15; 20)
17 PATH@[15; 16) 17 PATH_EXPR@[15; 16)
18 PATH_SEGMENT@[15; 16) 18 PATH@[15; 16)
19 NAME_REF@[15; 16) 19 PATH_SEGMENT@[15; 16)
20 IDENT@[15; 16) "x" 20 NAME_REF@[15; 16)
21 DOT@[16; 17) "." 21 IDENT@[15; 16) "x"
22 NAME_REF@[17; 20) 22 DOT@[16; 17) "."
23 IDENT@[17; 20) "foo" 23 NAME_REF@[17; 20)
24 SEMI@[20; 21) ";" 24 IDENT@[17; 20) "foo"
25 WHITESPACE@[21; 26) "\n " 25 SEMI@[20; 21) ";"
26 EXPR_STMT@[26; 34) 26 WHITESPACE@[21; 26) "\n "
27 FIELD_EXPR@[26; 33) 27 EXPR_STMT@[26; 34)
28 FIELD_EXPR@[26; 29) 28 FIELD_EXPR@[26; 33)
29 PATH_EXPR@[26; 27) 29 FIELD_EXPR@[26; 29)
30 PATH@[26; 27) 30 PATH_EXPR@[26; 27)
31 PATH_SEGMENT@[26; 27) 31 PATH@[26; 27)
32 NAME_REF@[26; 27) 32 PATH_SEGMENT@[26; 27)
33 IDENT@[26; 27) "x" 33 NAME_REF@[26; 27)
34 DOT@[27; 28) "." 34 IDENT@[26; 27) "x"
35 NAME_REF@[28; 29) 35 DOT@[27; 28) "."
36 INT_NUMBER@[28; 29) "0" 36 NAME_REF@[28; 29)
37 DOT@[29; 30) "." 37 INT_NUMBER@[28; 29) "0"
38 NAME_REF@[30; 33) 38 DOT@[29; 30) "."
39 IDENT@[30; 33) "bar" 39 NAME_REF@[30; 33)
40 SEMI@[33; 34) ";" 40 IDENT@[30; 33) "bar"
41 WHITESPACE@[34; 39) "\n " 41 SEMI@[33; 34) ";"
42 EXPR_STMT@[39; 45) 42 WHITESPACE@[34; 39) "\n "
43 CALL_EXPR@[39; 44) 43 EXPR_STMT@[39; 45)
44 FIELD_EXPR@[39; 42) 44 CALL_EXPR@[39; 44)
45 PATH_EXPR@[39; 40) 45 FIELD_EXPR@[39; 42)
46 PATH@[39; 40) 46 PATH_EXPR@[39; 40)
47 PATH_SEGMENT@[39; 40) 47 PATH@[39; 40)
48 NAME_REF@[39; 40) 48 PATH_SEGMENT@[39; 40)
49 IDENT@[39; 40) "x" 49 NAME_REF@[39; 40)
50 DOT@[40; 41) "." 50 IDENT@[39; 40) "x"
51 NAME_REF@[41; 42) 51 DOT@[40; 41) "."
52 INT_NUMBER@[41; 42) "0" 52 NAME_REF@[41; 42)
53 ARG_LIST@[42; 44) 53 INT_NUMBER@[41; 42) "0"
54 L_PAREN@[42; 43) "(" 54 ARG_LIST@[42; 44)
55 R_PAREN@[43; 44) ")" 55 L_PAREN@[42; 43) "("
56 SEMI@[44; 45) ";" 56 R_PAREN@[43; 44) ")"
57 WHITESPACE@[45; 46) "\n" 57 SEMI@[44; 45) ";"
58 R_CURLY@[46; 47) "}" 58 WHITESPACE@[45; 46) "\n"
59 R_CURLY@[46; 47) "}"
59 WHITESPACE@[47; 48) "\n" 60 WHITESPACE@[47; 48) "\n"
diff --git a/crates/ra_syntax/test_data/parser/inline/ok/0015_continue_expr.txt b/crates/ra_syntax/test_data/parser/inline/ok/0015_continue_expr.txt
index e8cc32f2c..c051c1c86 100644
--- a/crates/ra_syntax/test_data/parser/inline/ok/0015_continue_expr.txt
+++ b/crates/ra_syntax/test_data/parser/inline/ok/0015_continue_expr.txt
@@ -8,28 +8,30 @@ SOURCE_FILE@[0; 69)
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; 68) 11 BLOCK_EXPR@[9; 68)
12 L_CURLY@[9; 10) "{" 12 BLOCK@[9; 68)
13 WHITESPACE@[10; 15) "\n " 13 L_CURLY@[9; 10) "{"
14 LOOP_EXPR@[15; 66) 14 WHITESPACE@[10; 15) "\n "
15 LOOP_KW@[15; 19) "loop" 15 LOOP_EXPR@[15; 66)
16 WHITESPACE@[19; 20) " " 16 LOOP_KW@[15; 19) "loop"
17 BLOCK@[20; 66) 17 WHITESPACE@[19; 20) " "
18 L_CURLY@[20; 21) "{" 18 BLOCK_EXPR@[20; 66)
19 WHITESPACE@[21; 30) "\n " 19 BLOCK@[20; 66)
20 EXPR_STMT@[30; 39) 20 L_CURLY@[20; 21) "{"
21 CONTINUE_EXPR@[30; 38) 21 WHITESPACE@[21; 30) "\n "
22 CONTINUE_KW@[30; 38) "continue" 22 EXPR_STMT@[30; 39)
23 SEMI@[38; 39) ";" 23 CONTINUE_EXPR@[30; 38)
24 WHITESPACE@[39; 48) "\n " 24 CONTINUE_KW@[30; 38) "continue"
25 EXPR_STMT@[48; 60) 25 SEMI@[38; 39) ";"
26 CONTINUE_EXPR@[48; 59) 26 WHITESPACE@[39; 48) "\n "
27 CONTINUE_KW@[48; 56) "continue" 27 EXPR_STMT@[48; 60)
28 WHITESPACE@[56; 57) " " 28 CONTINUE_EXPR@[48; 59)
29 LIFETIME@[57; 59) "\'l" 29 CONTINUE_KW@[48; 56) "continue"
30 SEMI@[59; 60) ";" 30 WHITESPACE@[56; 57) " "
31 WHITESPACE@[60; 65) "\n " 31 LIFETIME@[57; 59) "\'l"
32 R_CURLY@[65; 66) "}" 32 SEMI@[59; 60) ";"
33 WHITESPACE@[66; 67) "\n" 33 WHITESPACE@[60; 65) "\n "
34 R_CURLY@[67; 68) "}" 34 R_CURLY@[65; 66) "}"
35 WHITESPACE@[66; 67) "\n"
36 R_CURLY@[67; 68) "}"
35 WHITESPACE@[68; 69) "\n" 37 WHITESPACE@[68; 69) "\n"
diff --git a/crates/ra_syntax/test_data/parser/inline/ok/0018_arb_self_types.txt b/crates/ra_syntax/test_data/parser/inline/ok/0018_arb_self_types.txt
index 67d0de0f0..d0beeb81e 100644
--- a/crates/ra_syntax/test_data/parser/inline/ok/0018_arb_self_types.txt
+++ b/crates/ra_syntax/test_data/parser/inline/ok/0018_arb_self_types.txt
@@ -31,9 +31,10 @@ SOURCE_FILE@[0; 69)
31 IDENT@[25; 29) "Self" 31 IDENT@[25; 29) "Self"
32 R_PAREN@[29; 30) ")" 32 R_PAREN@[29; 30) ")"
33 WHITESPACE@[30; 31) " " 33 WHITESPACE@[30; 31) " "
34 BLOCK@[31; 33) 34 BLOCK_EXPR@[31; 33)
35 L_CURLY@[31; 32) "{" 35 BLOCK@[31; 33)
36 R_CURLY@[32; 33) "}" 36 L_CURLY@[31; 32) "{"
37 R_CURLY@[32; 33) "}"
37 WHITESPACE@[33; 38) "\n " 38 WHITESPACE@[33; 38) "\n "
38 FN_DEF@[38; 66) 39 FN_DEF@[38; 66)
39 FN_KW@[38; 40) "fn" 40 FN_KW@[38; 40) "fn"
@@ -64,9 +65,10 @@ SOURCE_FILE@[0; 69)
64 R_ANGLE@[61; 62) ">" 65 R_ANGLE@[61; 62) ">"
65 R_PAREN@[62; 63) ")" 66 R_PAREN@[62; 63) ")"
66 WHITESPACE@[63; 64) " " 67 WHITESPACE@[63; 64) " "
67 BLOCK@[64; 66) 68 BLOCK_EXPR@[64; 66)
68 L_CURLY@[64; 65) "{" 69 BLOCK@[64; 66)
69 R_CURLY@[65; 66) "}" 70 L_CURLY@[64; 65) "{"
71 R_CURLY@[65; 66) "}"
70 WHITESPACE@[66; 67) "\n" 72 WHITESPACE@[66; 67) "\n"
71 R_CURLY@[67; 68) "}" 73 R_CURLY@[67; 68) "}"
72 WHITESPACE@[68; 69) "\n" 74 WHITESPACE@[68; 69) "\n"
diff --git a/crates/ra_syntax/test_data/parser/inline/ok/0019_unary_expr.txt b/crates/ra_syntax/test_data/parser/inline/ok/0019_unary_expr.txt
index 42032f56c..2d71efd86 100644
--- a/crates/ra_syntax/test_data/parser/inline/ok/0019_unary_expr.txt
+++ b/crates/ra_syntax/test_data/parser/inline/ok/0019_unary_expr.txt
@@ -8,37 +8,38 @@ SOURCE_FILE@[0; 44)
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; 43) 11 BLOCK_EXPR@[9; 43)
12 L_CURLY@[9; 10) "{" 12 BLOCK@[9; 43)
13 WHITESPACE@[10; 15) "\n " 13 L_CURLY@[9; 10) "{"
14 EXPR_STMT@[15; 20) 14 WHITESPACE@[10; 15) "\n "
15 PREFIX_EXPR@[15; 19) 15 EXPR_STMT@[15; 20)
16 STAR@[15; 16) "*" 16 PREFIX_EXPR@[15; 19)
17 PREFIX_EXPR@[16; 19) 17 STAR@[15; 16) "*"
18 STAR@[16; 17) "*" 18 PREFIX_EXPR@[16; 19)
19 REF_EXPR@[17; 19) 19 STAR@[16; 17) "*"
20 AMP@[17; 18) "&" 20 REF_EXPR@[17; 19)
21 LITERAL@[18; 19) 21 AMP@[17; 18) "&"
22 INT_NUMBER@[18; 19) "1" 22 LITERAL@[18; 19)
23 SEMI@[19; 20) ";" 23 INT_NUMBER@[18; 19) "1"
24 WHITESPACE@[20; 25) "\n " 24 SEMI@[19; 20) ";"
25 EXPR_STMT@[25; 32) 25 WHITESPACE@[20; 25) "\n "
26 PREFIX_EXPR@[25; 31) 26 EXPR_STMT@[25; 32)
27 EXCL@[25; 26) "!" 27 PREFIX_EXPR@[25; 31)
28 PREFIX_EXPR@[26; 31) 28 EXCL@[25; 26) "!"
29 EXCL@[26; 27) "!" 29 PREFIX_EXPR@[26; 31)
30 LITERAL@[27; 31) 30 EXCL@[26; 27) "!"
31 TRUE_KW@[27; 31) "true" 31 LITERAL@[27; 31)
32 SEMI@[31; 32) ";" 32 TRUE_KW@[27; 31) "true"
33 WHITESPACE@[32; 37) "\n " 33 SEMI@[31; 32) ";"
34 EXPR_STMT@[37; 41) 34 WHITESPACE@[32; 37) "\n "
35 PREFIX_EXPR@[37; 40) 35 EXPR_STMT@[37; 41)
36 MINUS@[37; 38) "-" 36 PREFIX_EXPR@[37; 40)
37 PREFIX_EXPR@[38; 40) 37 MINUS@[37; 38) "-"
38 MINUS@[38; 39) "-" 38 PREFIX_EXPR@[38; 40)
39 LITERAL@[39; 40) 39 MINUS@[38; 39) "-"
40 INT_NUMBER@[39; 40) "1" 40 LITERAL@[39; 40)
41 SEMI@[40; 41) ";" 41 INT_NUMBER@[39; 40) "1"
42 WHITESPACE@[41; 42) "\n" 42 SEMI@[40; 41) ";"
43 R_CURLY@[42; 43) "}" 43 WHITESPACE@[41; 42) "\n"
44 R_CURLY@[42; 43) "}"
44 WHITESPACE@[43; 44) "\n" 45 WHITESPACE@[43; 44) "\n"
diff --git a/crates/ra_syntax/test_data/parser/inline/ok/0021_impl_item_list.txt b/crates/ra_syntax/test_data/parser/inline/ok/0021_impl_item_list.txt
index a893833e1..0768f0518 100644
--- a/crates/ra_syntax/test_data/parser/inline/ok/0021_impl_item_list.txt
+++ b/crates/ra_syntax/test_data/parser/inline/ok/0021_impl_item_list.txt
@@ -54,9 +54,10 @@ SOURCE_FILE@[0; 89)
54 L_PAREN@[60; 61) "(" 54 L_PAREN@[60; 61) "("
55 R_PAREN@[61; 62) ")" 55 R_PAREN@[61; 62) ")"
56 WHITESPACE@[62; 63) " " 56 WHITESPACE@[62; 63) " "
57 BLOCK@[63; 65) 57 BLOCK_EXPR@[63; 65)
58 L_CURLY@[63; 64) "{" 58 BLOCK@[63; 65)
59 R_CURLY@[64; 65) "}" 59 L_CURLY@[63; 64) "{"
60 R_CURLY@[64; 65) "}"
60 WHITESPACE@[65; 70) "\n " 61 WHITESPACE@[65; 70) "\n "
61 FN_DEF@[70; 86) 62 FN_DEF@[70; 86)
62 FN_KW@[70; 72) "fn" 63 FN_KW@[70; 72) "fn"
@@ -70,9 +71,10 @@ SOURCE_FILE@[0; 89)
70 SELF_KW@[78; 82) "self" 71 SELF_KW@[78; 82) "self"
71 R_PAREN@[82; 83) ")" 72 R_PAREN@[82; 83) ")"
72 WHITESPACE@[83; 84) " " 73 WHITESPACE@[83; 84) " "
73 BLOCK@[84; 86) 74 BLOCK_EXPR@[84; 86)
74 L_CURLY@[84; 85) "{" 75 BLOCK@[84; 86)
75 R_CURLY@[85; 86) "}" 76 L_CURLY@[84; 85) "{"
77 R_CURLY@[85; 86) "}"
76 WHITESPACE@[86; 87) "\n" 78 WHITESPACE@[86; 87) "\n"
77 R_CURLY@[87; 88) "}" 79 R_CURLY@[87; 88) "}"
78 WHITESPACE@[88; 89) "\n" 80 WHITESPACE@[88; 89) "\n"
diff --git a/crates/ra_syntax/test_data/parser/inline/ok/0024_slice_pat.txt b/crates/ra_syntax/test_data/parser/inline/ok/0024_slice_pat.txt
index 40ddbfbf6..c1d669e54 100644
--- a/crates/ra_syntax/test_data/parser/inline/ok/0024_slice_pat.txt
+++ b/crates/ra_syntax/test_data/parser/inline/ok/0024_slice_pat.txt
@@ -8,33 +8,34 @@ SOURCE_FILE@[0; 39)
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; 38) 11 BLOCK_EXPR@[10; 38)
12 L_CURLY@[10; 11) "{" 12 BLOCK@[10; 38)
13 WHITESPACE@[11; 16) "\n " 13 L_CURLY@[10; 11) "{"
14 LET_STMT@[16; 36) 14 WHITESPACE@[11; 16) "\n "
15 LET_KW@[16; 19) "let" 15 LET_STMT@[16; 36)
16 WHITESPACE@[19; 20) " " 16 LET_KW@[16; 19) "let"
17 SLICE_PAT@[20; 30) 17 WHITESPACE@[19; 20) " "
18 L_BRACK@[20; 21) "[" 18 SLICE_PAT@[20; 30)
19 BIND_PAT@[21; 22) 19 L_BRACK@[20; 21) "["
20 NAME@[21; 22) 20 BIND_PAT@[21; 22)
21 IDENT@[21; 22) "a" 21 NAME@[21; 22)
22 COMMA@[22; 23) "," 22 IDENT@[21; 22) "a"
23 WHITESPACE@[23; 24) " " 23 COMMA@[22; 23) ","
24 BIND_PAT@[24; 25) 24 WHITESPACE@[23; 24) " "
25 NAME@[24; 25) 25 BIND_PAT@[24; 25)
26 IDENT@[24; 25) "b" 26 NAME@[24; 25)
27 COMMA@[25; 26) "," 27 IDENT@[24; 25) "b"
28 WHITESPACE@[26; 27) " " 28 COMMA@[25; 26) ","
29 DOTDOT@[27; 29) ".." 29 WHITESPACE@[26; 27) " "
30 R_BRACK@[29; 30) "]" 30 DOTDOT@[27; 29) ".."
31 WHITESPACE@[30; 31) " " 31 R_BRACK@[29; 30) "]"
32 EQ@[31; 32) "=" 32 WHITESPACE@[30; 31) " "
33 WHITESPACE@[32; 33) " " 33 EQ@[31; 32) "="
34 ARRAY_EXPR@[33; 35) 34 WHITESPACE@[32; 33) " "
35 L_BRACK@[33; 34) "[" 35 ARRAY_EXPR@[33; 35)
36 R_BRACK@[34; 35) "]" 36 L_BRACK@[33; 34) "["
37 SEMI@[35; 36) ";" 37 R_BRACK@[34; 35) "]"
38 WHITESPACE@[36; 37) "\n" 38 SEMI@[35; 36) ";"
39 R_CURLY@[37; 38) "}" 39 WHITESPACE@[36; 37) "\n"
40 R_CURLY@[37; 38) "}"
40 WHITESPACE@[38; 39) "\n" 41 WHITESPACE@[38; 39) "\n"
diff --git a/crates/ra_syntax/test_data/parser/inline/ok/0026_tuple_pat_fields.txt b/crates/ra_syntax/test_data/parser/inline/ok/0026_tuple_pat_fields.txt
index 0ff936471..adc8931e2 100644
--- a/crates/ra_syntax/test_data/parser/inline/ok/0026_tuple_pat_fields.txt
+++ b/crates/ra_syntax/test_data/parser/inline/ok/0026_tuple_pat_fields.txt
@@ -8,96 +8,97 @@ SOURCE_FILE@[0; 97)
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; 96) 11 BLOCK_EXPR@[9; 96)
12 L_CURLY@[9; 10) "{" 12 BLOCK@[9; 96)
13 WHITESPACE@[10; 15) "\n " 13 L_CURLY@[9; 10) "{"
14 LET_STMT@[15; 28) 14 WHITESPACE@[10; 15) "\n "
15 LET_KW@[15; 18) "let" 15 LET_STMT@[15; 28)
16 WHITESPACE@[18; 19) " " 16 LET_KW@[15; 18) "let"
17 TUPLE_STRUCT_PAT@[19; 22) 17 WHITESPACE@[18; 19) " "
18 PATH@[19; 20) 18 TUPLE_STRUCT_PAT@[19; 22)
19 PATH_SEGMENT@[19; 20) 19 PATH@[19; 20)
20 NAME_REF@[19; 20) 20 PATH_SEGMENT@[19; 20)
21 IDENT@[19; 20) "S" 21 NAME_REF@[19; 20)
22 L_PAREN@[20; 21) "(" 22 IDENT@[19; 20) "S"
23 R_PAREN@[21; 22) ")" 23 L_PAREN@[20; 21) "("
24 WHITESPACE@[22; 23) " " 24 R_PAREN@[21; 22) ")"
25 EQ@[23; 24) "=" 25 WHITESPACE@[22; 23) " "
26 WHITESPACE@[24; 25) " " 26 EQ@[23; 24) "="
27 TUPLE_EXPR@[25; 27) 27 WHITESPACE@[24; 25) " "
28 L_PAREN@[25; 26) "(" 28 TUPLE_EXPR@[25; 27)
29 R_PAREN@[26; 27) ")" 29 L_PAREN@[25; 26) "("
30 SEMI@[27; 28) ";" 30 R_PAREN@[26; 27) ")"
31 WHITESPACE@[28; 33) "\n " 31 SEMI@[27; 28) ";"
32 LET_STMT@[33; 47) 32 WHITESPACE@[28; 33) "\n "
33 LET_KW@[33; 36) "let" 33 LET_STMT@[33; 47)
34 WHITESPACE@[36; 37) " " 34 LET_KW@[33; 36) "let"
35 TUPLE_STRUCT_PAT@[37; 41) 35 WHITESPACE@[36; 37) " "
36 PATH@[37; 38) 36 TUPLE_STRUCT_PAT@[37; 41)
37 PATH_SEGMENT@[37; 38) 37 PATH@[37; 38)
38 NAME_REF@[37; 38) 38 PATH_SEGMENT@[37; 38)
39 IDENT@[37; 38) "S" 39 NAME_REF@[37; 38)
40 L_PAREN@[38; 39) "(" 40 IDENT@[37; 38) "S"
41 PLACEHOLDER_PAT@[39; 40) 41 L_PAREN@[38; 39) "("
42 UNDERSCORE@[39; 40) "_" 42 PLACEHOLDER_PAT@[39; 40)
43 R_PAREN@[40; 41) ")" 43 UNDERSCORE@[39; 40) "_"
44 WHITESPACE@[41; 42) " " 44 R_PAREN@[40; 41) ")"
45 EQ@[42; 43) "=" 45 WHITESPACE@[41; 42) " "
46 WHITESPACE@[43; 44) " " 46 EQ@[42; 43) "="
47 TUPLE_EXPR@[44; 46) 47 WHITESPACE@[43; 44) " "
48 L_PAREN@[44; 45) "(" 48 TUPLE_EXPR@[44; 46)
49 R_PAREN@[45; 46) ")" 49 L_PAREN@[44; 45) "("
50 SEMI@[46; 47) ";" 50 R_PAREN@[45; 46) ")"
51 WHITESPACE@[47; 52) "\n " 51 SEMI@[46; 47) ";"
52 LET_STMT@[52; 67) 52 WHITESPACE@[47; 52) "\n "
53 LET_KW@[52; 55) "let" 53 LET_STMT@[52; 67)
54 WHITESPACE@[55; 56) " " 54 LET_KW@[52; 55) "let"
55 TUPLE_STRUCT_PAT@[56; 61) 55 WHITESPACE@[55; 56) " "
56 PATH@[56; 57) 56 TUPLE_STRUCT_PAT@[56; 61)
57 PATH_SEGMENT@[56; 57) 57 PATH@[56; 57)
58 NAME_REF@[56; 57) 58 PATH_SEGMENT@[56; 57)
59 IDENT@[56; 57) "S" 59 NAME_REF@[56; 57)
60 L_PAREN@[57; 58) "(" 60 IDENT@[56; 57) "S"
61 PLACEHOLDER_PAT@[58; 59) 61 L_PAREN@[57; 58) "("
62 UNDERSCORE@[58; 59) "_" 62 PLACEHOLDER_PAT@[58; 59)
63 COMMA@[59; 60) "," 63 UNDERSCORE@[58; 59) "_"
64 R_PAREN@[60; 61) ")" 64 COMMA@[59; 60) ","
65 WHITESPACE@[61; 62) " " 65 R_PAREN@[60; 61) ")"
66 EQ@[62; 63) "=" 66 WHITESPACE@[61; 62) " "
67 WHITESPACE@[63; 64) " " 67 EQ@[62; 63) "="
68 TUPLE_EXPR@[64; 66) 68 WHITESPACE@[63; 64) " "
69 L_PAREN@[64; 65) "(" 69 TUPLE_EXPR@[64; 66)
70 R_PAREN@[65; 66) ")" 70 L_PAREN@[64; 65) "("
71 SEMI@[66; 67) ";" 71 R_PAREN@[65; 66) ")"
72 WHITESPACE@[67; 72) "\n " 72 SEMI@[66; 67) ";"
73 LET_STMT@[72; 94) 73 WHITESPACE@[67; 72) "\n "
74 LET_KW@[72; 75) "let" 74 LET_STMT@[72; 94)
75 WHITESPACE@[75; 76) " " 75 LET_KW@[72; 75) "let"
76 TUPLE_STRUCT_PAT@[76; 88) 76 WHITESPACE@[75; 76) " "
77 PATH@[76; 77) 77 TUPLE_STRUCT_PAT@[76; 88)
78 PATH_SEGMENT@[76; 77) 78 PATH@[76; 77)
79 NAME_REF@[76; 77) 79 PATH_SEGMENT@[76; 77)
80 IDENT@[76; 77) "S" 80 NAME_REF@[76; 77)
81 L_PAREN@[77; 78) "(" 81 IDENT@[76; 77) "S"
82 PLACEHOLDER_PAT@[78; 79) 82 L_PAREN@[77; 78) "("
83 UNDERSCORE@[78; 79) "_" 83 PLACEHOLDER_PAT@[78; 79)
84 COMMA@[79; 80) "," 84 UNDERSCORE@[78; 79) "_"
85 WHITESPACE@[80; 81) " " 85 COMMA@[79; 80) ","
86 DOTDOT@[81; 83) ".." 86 WHITESPACE@[80; 81) " "
87 WHITESPACE@[83; 84) " " 87 DOTDOT@[81; 83) ".."
88 COMMA@[84; 85) "," 88 WHITESPACE@[83; 84) " "
89 WHITESPACE@[85; 86) " " 89 COMMA@[84; 85) ","
90 BIND_PAT@[86; 87) 90 WHITESPACE@[85; 86) " "
91 NAME@[86; 87) 91 BIND_PAT@[86; 87)
92 IDENT@[86; 87) "x" 92 NAME@[86; 87)
93 R_PAREN@[87; 88) ")" 93 IDENT@[86; 87) "x"
94 WHITESPACE@[88; 89) " " 94 R_PAREN@[87; 88) ")"
95 EQ@[89; 90) "=" 95 WHITESPACE@[88; 89) " "
96 WHITESPACE@[90; 91) " " 96 EQ@[89; 90) "="
97 TUPLE_EXPR@[91; 93) 97 WHITESPACE@[90; 91) " "
98 L_PAREN@[91; 92) "(" 98 TUPLE_EXPR@[91; 93)
99 R_PAREN@[92; 93) ")" 99 L_PAREN@[91; 92) "("
100 SEMI@[93; 94) ";" 100 R_PAREN@[92; 93) ")"
101 WHITESPACE@[94; 95) "\n" 101 SEMI@[93; 94) ";"
102 R_CURLY@[95; 96) "}" 102 WHITESPACE@[94; 95) "\n"
103 R_CURLY@[95; 96) "}"
103 WHITESPACE@[96; 97) "\n" 104 WHITESPACE@[96; 97) "\n"
diff --git a/crates/ra_syntax/test_data/parser/inline/ok/0027_ref_pat.txt b/crates/ra_syntax/test_data/parser/inline/ok/0027_ref_pat.txt
index a833b1b96..0f1a367f7 100644
--- a/crates/ra_syntax/test_data/parser/inline/ok/0027_ref_pat.txt
+++ b/crates/ra_syntax/test_data/parser/inline/ok/0027_ref_pat.txt
@@ -8,42 +8,43 @@ SOURCE_FILE@[0; 52)
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; 51) 11 BLOCK_EXPR@[10; 51)
12 L_CURLY@[10; 11) "{" 12 BLOCK@[10; 51)
13 WHITESPACE@[11; 16) "\n " 13 L_CURLY@[10; 11) "{"
14 LET_STMT@[16; 28) 14 WHITESPACE@[11; 16) "\n "
15 LET_KW@[16; 19) "let" 15 LET_STMT@[16; 28)
16 WHITESPACE@[19; 20) " " 16 LET_KW@[16; 19) "let"
17 REF_PAT@[20; 22) 17 WHITESPACE@[19; 20) " "
18 AMP@[20; 21) "&" 18 REF_PAT@[20; 22)
19 BIND_PAT@[21; 22) 19 AMP@[20; 21) "&"
20 NAME@[21; 22) 20 BIND_PAT@[21; 22)
21 IDENT@[21; 22) "a" 21 NAME@[21; 22)
22 WHITESPACE@[22; 23) " " 22 IDENT@[21; 22) "a"
23 EQ@[23; 24) "=" 23 WHITESPACE@[22; 23) " "
24 WHITESPACE@[24; 25) " " 24 EQ@[23; 24) "="
25 TUPLE_EXPR@[25; 27) 25 WHITESPACE@[24; 25) " "
26 L_PAREN@[25; 26) "(" 26 TUPLE_EXPR@[25; 27)
27 R_PAREN@[26; 27) ")" 27 L_PAREN@[25; 26) "("
28 SEMI@[27; 28) ";" 28 R_PAREN@[26; 27) ")"
29 WHITESPACE@[28; 33) "\n " 29 SEMI@[27; 28) ";"
30 LET_STMT@[33; 49) 30 WHITESPACE@[28; 33) "\n "
31 LET_KW@[33; 36) "let" 31 LET_STMT@[33; 49)
32 WHITESPACE@[36; 37) " " 32 LET_KW@[33; 36) "let"
33 REF_PAT@[37; 43) 33 WHITESPACE@[36; 37) " "
34 AMP@[37; 38) "&" 34 REF_PAT@[37; 43)
35 MUT_KW@[38; 41) "mut" 35 AMP@[37; 38) "&"
36 WHITESPACE@[41; 42) " " 36 MUT_KW@[38; 41) "mut"
37 BIND_PAT@[42; 43) 37 WHITESPACE@[41; 42) " "
38 NAME@[42; 43) 38 BIND_PAT@[42; 43)
39 IDENT@[42; 43) "b" 39 NAME@[42; 43)
40 WHITESPACE@[43; 44) " " 40 IDENT@[42; 43) "b"
41 EQ@[44; 45) "=" 41 WHITESPACE@[43; 44) " "
42 WHITESPACE@[45; 46) " " 42 EQ@[44; 45) "="
43 TUPLE_EXPR@[46; 48) 43 WHITESPACE@[45; 46) " "
44 L_PAREN@[46; 47) "(" 44 TUPLE_EXPR@[46; 48)
45 R_PAREN@[47; 48) ")" 45 L_PAREN@[46; 47) "("
46 SEMI@[48; 49) ";" 46 R_PAREN@[47; 48) ")"
47 WHITESPACE@[49; 50) "\n" 47 SEMI@[48; 49) ";"
48 R_CURLY@[50; 51) "}" 48 WHITESPACE@[49; 50) "\n"
49 R_CURLY@[50; 51) "}"
49 WHITESPACE@[51; 52) "\n" 50 WHITESPACE@[51; 52) "\n"
diff --git a/crates/ra_syntax/test_data/parser/inline/ok/0029_cast_expr.txt b/crates/ra_syntax/test_data/parser/inline/ok/0029_cast_expr.txt
index 11c14e3b4..b17a2c257 100644
--- a/crates/ra_syntax/test_data/parser/inline/ok/0029_cast_expr.txt
+++ b/crates/ra_syntax/test_data/parser/inline/ok/0029_cast_expr.txt
@@ -8,82 +8,83 @@ SOURCE_FILE@[0; 89)
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_EXPR@[9; 88)
12 L_CURLY@[9; 10) "{" 12 BLOCK@[9; 88)
13 WHITESPACE@[10; 15) "\n " 13 L_CURLY@[9; 10) "{"
14 EXPR_STMT@[15; 25) 14 WHITESPACE@[10; 15) "\n "
15 CAST_EXPR@[15; 24) 15 EXPR_STMT@[15; 25)
16 LITERAL@[15; 17) 16 CAST_EXPR@[15; 24)
17 INT_NUMBER@[15; 17) "82" 17 LITERAL@[15; 17)
18 WHITESPACE@[17; 18) " " 18 INT_NUMBER@[15; 17) "82"
19 AS_KW@[18; 20) "as" 19 WHITESPACE@[17; 18) " "
20 WHITESPACE@[20; 21) " " 20 AS_KW@[18; 20) "as"
21 PATH_TYPE@[21; 24) 21 WHITESPACE@[20; 21) " "
22 PATH@[21; 24) 22 PATH_TYPE@[21; 24)
23 PATH_SEGMENT@[21; 24) 23 PATH@[21; 24)
24 NAME_REF@[21; 24) 24 PATH_SEGMENT@[21; 24)
25 IDENT@[21; 24) "i32" 25 NAME_REF@[21; 24)
26 SEMI@[24; 25) ";" 26 IDENT@[21; 24) "i32"
27 WHITESPACE@[25; 30) "\n " 27 SEMI@[24; 25) ";"
28 EXPR_STMT@[30; 43) 28 WHITESPACE@[25; 30) "\n "
29 BIN_EXPR@[30; 42) 29 EXPR_STMT@[30; 43)
30 CAST_EXPR@[30; 38) 30 BIN_EXPR@[30; 42)
31 LITERAL@[30; 32) 31 CAST_EXPR@[30; 38)
32 INT_NUMBER@[30; 32) "81" 32 LITERAL@[30; 32)
33 WHITESPACE@[32; 33) " " 33 INT_NUMBER@[30; 32) "81"
34 AS_KW@[33; 35) "as" 34 WHITESPACE@[32; 33) " "
35 WHITESPACE@[35; 36) " " 35 AS_KW@[33; 35) "as"
36 PATH_TYPE@[36; 38) 36 WHITESPACE@[35; 36) " "
37 PATH@[36; 38) 37 PATH_TYPE@[36; 38)
38 PATH_SEGMENT@[36; 38) 38 PATH@[36; 38)
39 NAME_REF@[36; 38) 39 PATH_SEGMENT@[36; 38)
40 IDENT@[36; 38) "i8" 40 NAME_REF@[36; 38)
41 WHITESPACE@[38; 39) " " 41 IDENT@[36; 38) "i8"
42 PLUS@[39; 40) "+" 42 WHITESPACE@[38; 39) " "
43 WHITESPACE@[40; 41) " " 43 PLUS@[39; 40) "+"
44 LITERAL@[41; 42) 44 WHITESPACE@[40; 41) " "
45 INT_NUMBER@[41; 42) "1" 45 LITERAL@[41; 42)
46 SEMI@[42; 43) ";" 46 INT_NUMBER@[41; 42) "1"
47 WHITESPACE@[43; 48) "\n " 47 SEMI@[42; 43) ";"
48 EXPR_STMT@[48; 62) 48 WHITESPACE@[43; 48) "\n "
49 BIN_EXPR@[48; 61) 49 EXPR_STMT@[48; 62)
50 CAST_EXPR@[48; 57) 50 BIN_EXPR@[48; 61)
51 LITERAL@[48; 50) 51 CAST_EXPR@[48; 57)
52 INT_NUMBER@[48; 50) "79" 52 LITERAL@[48; 50)
53 WHITESPACE@[50; 51) " " 53 INT_NUMBER@[48; 50) "79"
54 AS_KW@[51; 53) "as" 54 WHITESPACE@[50; 51) " "
55 WHITESPACE@[53; 54) " " 55 AS_KW@[51; 53) "as"
56 PATH_TYPE@[54; 57) 56 WHITESPACE@[53; 54) " "
57 PATH@[54; 57) 57 PATH_TYPE@[54; 57)
58 PATH_SEGMENT@[54; 57) 58 PATH@[54; 57)
59 NAME_REF@[54; 57) 59 PATH_SEGMENT@[54; 57)
60 IDENT@[54; 57) "i16" 60 NAME_REF@[54; 57)
61 WHITESPACE@[57; 58) " " 61 IDENT@[54; 57) "i16"
62 MINUS@[58; 59) "-" 62 WHITESPACE@[57; 58) " "
63 WHITESPACE@[59; 60) " " 63 MINUS@[58; 59) "-"
64 LITERAL@[60; 61) 64 WHITESPACE@[59; 60) " "
65 INT_NUMBER@[60; 61) "1" 65 LITERAL@[60; 61)
66 SEMI@[61; 62) ";" 66 INT_NUMBER@[60; 61) "1"
67 WHITESPACE@[62; 67) "\n " 67 SEMI@[61; 62) ";"
68 EXPR_STMT@[67; 86) 68 WHITESPACE@[62; 67) "\n "
69 BIN_EXPR@[67; 85) 69 EXPR_STMT@[67; 86)
70 CAST_EXPR@[67; 77) 70 BIN_EXPR@[67; 85)
71 LITERAL@[67; 71) 71 CAST_EXPR@[67; 77)
72 INT_NUMBER@[67; 71) "0x36" 72 LITERAL@[67; 71)
73 WHITESPACE@[71; 72) " " 73 INT_NUMBER@[67; 71) "0x36"
74 AS_KW@[72; 74) "as" 74 WHITESPACE@[71; 72) " "
75 WHITESPACE@[74; 75) " " 75 AS_KW@[72; 74) "as"
76 PATH_TYPE@[75; 77) 76 WHITESPACE@[74; 75) " "
77 PATH@[75; 77) 77 PATH_TYPE@[75; 77)
78 PATH_SEGMENT@[75; 77) 78 PATH@[75; 77)
79 NAME_REF@[75; 77) 79 PATH_SEGMENT@[75; 77)
80 IDENT@[75; 77) "u8" 80 NAME_REF@[75; 77)
81 WHITESPACE@[77; 78) " " 81 IDENT@[75; 77) "u8"
82 LTEQ@[78; 80) "<=" 82 WHITESPACE@[77; 78) " "
83 WHITESPACE@[80; 81) " " 83 LTEQ@[78; 80) "<="
84 LITERAL@[81; 85) 84 WHITESPACE@[80; 81) " "
85 INT_NUMBER@[81; 85) "0x37" 85 LITERAL@[81; 85)
86 SEMI@[85; 86) ";" 86 INT_NUMBER@[81; 85) "0x37"
87 WHITESPACE@[86; 87) "\n" 87 SEMI@[85; 86) ";"
88 R_CURLY@[87; 88) "}" 88 WHITESPACE@[86; 87) "\n"
89 R_CURLY@[87; 88) "}"
89 WHITESPACE@[88; 89) "\n" 90 WHITESPACE@[88; 89) "\n"
diff --git a/crates/ra_syntax/test_data/parser/inline/ok/0030_cond.txt b/crates/ra_syntax/test_data/parser/inline/ok/0030_cond.txt
index 1c9414b21..4028ca243 100644
--- a/crates/ra_syntax/test_data/parser/inline/ok/0030_cond.txt
+++ b/crates/ra_syntax/test_data/parser/inline/ok/0030_cond.txt
@@ -8,38 +8,40 @@ SOURCE_FILE@[0; 197)
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; 37) 11 BLOCK_EXPR@[9; 37)
12 L_CURLY@[9; 10) "{" 12 BLOCK@[9; 37)
13 WHITESPACE@[10; 11) " " 13 L_CURLY@[9; 10) "{"
14 IF_EXPR@[11; 35) 14 WHITESPACE@[10; 11) " "
15 IF_KW@[11; 13) "if" 15 IF_EXPR@[11; 35)
16 WHITESPACE@[13; 14) " " 16 IF_KW@[11; 13) "if"
17 CONDITION@[14; 32) 17 WHITESPACE@[13; 14) " "
18 LET_KW@[14; 17) "let" 18 CONDITION@[14; 32)
19 WHITESPACE@[17; 18) " " 19 LET_KW@[14; 17) "let"
20 TUPLE_STRUCT_PAT@[18; 25) 20 WHITESPACE@[17; 18) " "
21 PATH@[18; 22) 21 TUPLE_STRUCT_PAT@[18; 25)
22 PATH_SEGMENT@[18; 22) 22 PATH@[18; 22)
23 NAME_REF@[18; 22) 23 PATH_SEGMENT@[18; 22)
24 IDENT@[18; 22) "Some" 24 NAME_REF@[18; 22)
25 L_PAREN@[22; 23) "(" 25 IDENT@[18; 22) "Some"
26 PLACEHOLDER_PAT@[23; 24) 26 L_PAREN@[22; 23) "("
27 UNDERSCORE@[23; 24) "_" 27 PLACEHOLDER_PAT@[23; 24)
28 R_PAREN@[24; 25) ")" 28 UNDERSCORE@[23; 24) "_"
29 WHITESPACE@[25; 26) " " 29 R_PAREN@[24; 25) ")"
30 EQ@[26; 27) "=" 30 WHITESPACE@[25; 26) " "
31 WHITESPACE@[27; 28) " " 31 EQ@[26; 27) "="
32 PATH_EXPR@[28; 32) 32 WHITESPACE@[27; 28) " "
33 PATH@[28; 32) 33 PATH_EXPR@[28; 32)
34 PATH_SEGMENT@[28; 32) 34 PATH@[28; 32)
35 NAME_REF@[28; 32) 35 PATH_SEGMENT@[28; 32)
36 IDENT@[28; 32) "None" 36 NAME_REF@[28; 32)
37 WHITESPACE@[32; 33) " " 37 IDENT@[28; 32) "None"
38 BLOCK@[33; 35) 38 WHITESPACE@[32; 33) " "
39 L_CURLY@[33; 34) "{" 39 BLOCK_EXPR@[33; 35)
40 R_CURLY@[34; 35) "}" 40 BLOCK@[33; 35)
41 WHITESPACE@[35; 36) " " 41 L_CURLY@[33; 34) "{"
42 R_CURLY@[36; 37) "}" 42 R_CURLY@[34; 35) "}"
43 WHITESPACE@[35; 36) " "
44 R_CURLY@[36; 37) "}"
43 WHITESPACE@[37; 38) "\n" 45 WHITESPACE@[37; 38) "\n"
44 FN_DEF@[38; 196) 46 FN_DEF@[38; 196)
45 FN_KW@[38; 40) "fn" 47 FN_KW@[38; 40) "fn"
@@ -50,151 +52,156 @@ SOURCE_FILE@[0; 197)
50 L_PAREN@[44; 45) "(" 52 L_PAREN@[44; 45) "("
51 R_PAREN@[45; 46) ")" 53 R_PAREN@[45; 46) ")"
52 WHITESPACE@[46; 47) " " 54 WHITESPACE@[46; 47) " "
53 BLOCK@[47; 196) 55 BLOCK_EXPR@[47; 196)
54 L_CURLY@[47; 48) "{" 56 BLOCK@[47; 196)
55 WHITESPACE@[48; 53) "\n " 57 L_CURLY@[47; 48) "{"
56 EXPR_STMT@[53; 87) 58 WHITESPACE@[48; 53) "\n "
57 IF_EXPR@[53; 87) 59 EXPR_STMT@[53; 87)
58 IF_KW@[53; 55) "if" 60 IF_EXPR@[53; 87)
59 WHITESPACE@[55; 56) " " 61 IF_KW@[53; 55) "if"
60 CONDITION@[56; 84) 62 WHITESPACE@[55; 56) " "
61 LET_KW@[56; 59) "let" 63 CONDITION@[56; 84)
62 WHITESPACE@[59; 60) " " 64 LET_KW@[56; 59) "let"
63 TUPLE_STRUCT_PAT@[60; 67) 65 WHITESPACE@[59; 60) " "
64 PATH@[60; 64) 66 TUPLE_STRUCT_PAT@[60; 67)
65 PATH_SEGMENT@[60; 64) 67 PATH@[60; 64)
66 NAME_REF@[60; 64) 68 PATH_SEGMENT@[60; 64)
67 IDENT@[60; 64) "Some" 69 NAME_REF@[60; 64)
68 L_PAREN@[64; 65) "(" 70 IDENT@[60; 64) "Some"
69 PLACEHOLDER_PAT@[65; 66) 71 L_PAREN@[64; 65) "("
70 UNDERSCORE@[65; 66) "_" 72 PLACEHOLDER_PAT@[65; 66)
71 R_PAREN@[66; 67) ")" 73 UNDERSCORE@[65; 66) "_"
72 WHITESPACE@[67; 68) " " 74 R_PAREN@[66; 67) ")"
73 PIPE@[68; 69) "|" 75 WHITESPACE@[67; 68) " "
74 WHITESPACE@[69; 70) " " 76 PIPE@[68; 69) "|"
75 TUPLE_STRUCT_PAT@[70; 77) 77 WHITESPACE@[69; 70) " "
76 PATH@[70; 74) 78 TUPLE_STRUCT_PAT@[70; 77)
77 PATH_SEGMENT@[70; 74) 79 PATH@[70; 74)
78 NAME_REF@[70; 74) 80 PATH_SEGMENT@[70; 74)
79 IDENT@[70; 74) "Some" 81 NAME_REF@[70; 74)
80 L_PAREN@[74; 75) "(" 82 IDENT@[70; 74) "Some"
81 PLACEHOLDER_PAT@[75; 76) 83 L_PAREN@[74; 75) "("
82 UNDERSCORE@[75; 76) "_" 84 PLACEHOLDER_PAT@[75; 76)
83 R_PAREN@[76; 77) ")" 85 UNDERSCORE@[75; 76) "_"
84 WHITESPACE@[77; 78) " " 86 R_PAREN@[76; 77) ")"
85 EQ@[78; 79) "=" 87 WHITESPACE@[77; 78) " "
86 WHITESPACE@[79; 80) " " 88 EQ@[78; 79) "="
87 PATH_EXPR@[80; 84) 89 WHITESPACE@[79; 80) " "
88 PATH@[80; 84) 90 PATH_EXPR@[80; 84)
89 PATH_SEGMENT@[80; 84) 91 PATH@[80; 84)
90 NAME_REF@[80; 84) 92 PATH_SEGMENT@[80; 84)
91 IDENT@[80; 84) "None" 93 NAME_REF@[80; 84)
92 WHITESPACE@[84; 85) " " 94 IDENT@[80; 84) "None"
93 BLOCK@[85; 87) 95 WHITESPACE@[84; 85) " "
94 L_CURLY@[85; 86) "{" 96 BLOCK_EXPR@[85; 87)
95 R_CURLY@[86; 87) "}" 97 BLOCK@[85; 87)
96 WHITESPACE@[87; 92) "\n " 98 L_CURLY@[85; 86) "{"
97 EXPR_STMT@[92; 118) 99 R_CURLY@[86; 87) "}"
98 IF_EXPR@[92; 118) 100 WHITESPACE@[87; 92) "\n "
99 IF_KW@[92; 94) "if" 101 EXPR_STMT@[92; 118)
100 WHITESPACE@[94; 95) " " 102 IF_EXPR@[92; 118)
101 CONDITION@[95; 115) 103 IF_KW@[92; 94) "if"
102 LET_KW@[95; 98) "let" 104 WHITESPACE@[94; 95) " "
103 WHITESPACE@[98; 99) " " 105 CONDITION@[95; 115)
104 PIPE@[99; 100) "|" 106 LET_KW@[95; 98) "let"
105 WHITESPACE@[100; 101) " " 107 WHITESPACE@[98; 99) " "
106 TUPLE_STRUCT_PAT@[101; 108) 108 PIPE@[99; 100) "|"
107 PATH@[101; 105) 109 WHITESPACE@[100; 101) " "
108 PATH_SEGMENT@[101; 105) 110 TUPLE_STRUCT_PAT@[101; 108)
109 NAME_REF@[101; 105) 111 PATH@[101; 105)
110 IDENT@[101; 105) "Some" 112 PATH_SEGMENT@[101; 105)
111 L_PAREN@[105; 106) "(" 113 NAME_REF@[101; 105)
112 PLACEHOLDER_PAT@[106; 107) 114 IDENT@[101; 105) "Some"
113 UNDERSCORE@[106; 107) "_" 115 L_PAREN@[105; 106) "("
114 R_PAREN@[107; 108) ")" 116 PLACEHOLDER_PAT@[106; 107)
115 WHITESPACE@[108; 109) " " 117 UNDERSCORE@[106; 107) "_"
116 EQ@[109; 110) "=" 118 R_PAREN@[107; 108) ")"
117 WHITESPACE@[110; 111) " " 119 WHITESPACE@[108; 109) " "
118 PATH_EXPR@[111; 115) 120 EQ@[109; 110) "="
119 PATH@[111; 115) 121 WHITESPACE@[110; 111) " "
120 PATH_SEGMENT@[111; 115) 122 PATH_EXPR@[111; 115)
121 NAME_REF@[111; 115) 123 PATH@[111; 115)
122 IDENT@[111; 115) "None" 124 PATH_SEGMENT@[111; 115)
123 WHITESPACE@[115; 116) " " 125 NAME_REF@[111; 115)
124 BLOCK@[116; 118) 126 IDENT@[111; 115) "None"
125 L_CURLY@[116; 117) "{" 127 WHITESPACE@[115; 116) " "
126 R_CURLY@[117; 118) "}" 128 BLOCK_EXPR@[116; 118)
127 WHITESPACE@[118; 123) "\n " 129 BLOCK@[116; 118)
128 EXPR_STMT@[123; 160) 130 L_CURLY@[116; 117) "{"
129 WHILE_EXPR@[123; 160) 131 R_CURLY@[117; 118) "}"
130 WHILE_KW@[123; 128) "while" 132 WHITESPACE@[118; 123) "\n "
131 WHITESPACE@[128; 129) " " 133 EXPR_STMT@[123; 160)
132 CONDITION@[129; 157) 134 WHILE_EXPR@[123; 160)
133 LET_KW@[129; 132) "let" 135 WHILE_KW@[123; 128) "while"
134 WHITESPACE@[132; 133) " " 136 WHITESPACE@[128; 129) " "
135 TUPLE_STRUCT_PAT@[133; 140) 137 CONDITION@[129; 157)
136 PATH@[133; 137) 138 LET_KW@[129; 132) "let"
137 PATH_SEGMENT@[133; 137) 139 WHITESPACE@[132; 133) " "
138 NAME_REF@[133; 137) 140 TUPLE_STRUCT_PAT@[133; 140)
139 IDENT@[133; 137) "Some" 141 PATH@[133; 137)
140 L_PAREN@[137; 138) "(" 142 PATH_SEGMENT@[133; 137)
141 PLACEHOLDER_PAT@[138; 139) 143 NAME_REF@[133; 137)
142 UNDERSCORE@[138; 139) "_" 144 IDENT@[133; 137) "Some"
143 R_PAREN@[139; 140) ")" 145 L_PAREN@[137; 138) "("
144 WHITESPACE@[140; 141) " " 146 PLACEHOLDER_PAT@[138; 139)
145 PIPE@[141; 142) "|" 147 UNDERSCORE@[138; 139) "_"
146 WHITESPACE@[142; 143) " " 148 R_PAREN@[139; 140) ")"
147 TUPLE_STRUCT_PAT@[143; 150) 149 WHITESPACE@[140; 141) " "
148 PATH@[143; 147) 150 PIPE@[141; 142) "|"
149 PATH_SEGMENT@[143; 147) 151 WHITESPACE@[142; 143) " "
150 NAME_REF@[143; 147) 152 TUPLE_STRUCT_PAT@[143; 150)
151 IDENT@[143; 147) "Some" 153 PATH@[143; 147)
152 L_PAREN@[147; 148) "(" 154 PATH_SEGMENT@[143; 147)
153 PLACEHOLDER_PAT@[148; 149) 155 NAME_REF@[143; 147)
154 UNDERSCORE@[148; 149) "_" 156 IDENT@[143; 147) "Some"
155 R_PAREN@[149; 150) ")" 157 L_PAREN@[147; 148) "("
156 WHITESPACE@[150; 151) " " 158 PLACEHOLDER_PAT@[148; 149)
157 EQ@[151; 152) "=" 159 UNDERSCORE@[148; 149) "_"
158 WHITESPACE@[152; 153) " " 160 R_PAREN@[149; 150) ")"
159 PATH_EXPR@[153; 157) 161 WHITESPACE@[150; 151) " "
160 PATH@[153; 157) 162 EQ@[151; 152) "="
161 PATH_SEGMENT@[153; 157) 163 WHITESPACE@[152; 153) " "
162 NAME_REF@[153; 157) 164 PATH_EXPR@[153; 157)
163 IDENT@[153; 157) "None" 165 PATH@[153; 157)
164 WHITESPACE@[157; 158) " " 166 PATH_SEGMENT@[153; 157)
165 BLOCK@[158; 160) 167 NAME_REF@[153; 157)
166 L_CURLY@[158; 159) "{" 168 IDENT@[153; 157) "None"
167 R_CURLY@[159; 160) "}" 169 WHITESPACE@[157; 158) " "
168 WHITESPACE@[160; 165) "\n " 170 BLOCK_EXPR@[158; 160)
169 WHILE_EXPR@[165; 194) 171 BLOCK@[158; 160)
170 WHILE_KW@[165; 170) "while" 172 L_CURLY@[158; 159) "{"
171 WHITESPACE@[170; 171) " " 173 R_CURLY@[159; 160) "}"
172 CONDITION@[171; 191) 174 WHITESPACE@[160; 165) "\n "
173 LET_KW@[171; 174) "let" 175 WHILE_EXPR@[165; 194)
174 WHITESPACE@[174; 175) " " 176 WHILE_KW@[165; 170) "while"
175 PIPE@[175; 176) "|" 177 WHITESPACE@[170; 171) " "
176 WHITESPACE@[176; 177) " " 178 CONDITION@[171; 191)
177 TUPLE_STRUCT_PAT@[177; 184) 179 LET_KW@[171; 174) "let"
178 PATH@[177; 181) 180 WHITESPACE@[174; 175) " "
179 PATH_SEGMENT@[177; 181) 181 PIPE@[175; 176) "|"
180 NAME_REF@[177; 181) 182 WHITESPACE@[176; 177) " "
181 IDENT@[177; 181) "Some" 183 TUPLE_STRUCT_PAT@[177; 184)
182 L_PAREN@[181; 182) "(" 184 PATH@[177; 181)
183 PLACEHOLDER_PAT@[182; 183) 185 PATH_SEGMENT@[177; 181)
184 UNDERSCORE@[182; 183) "_" 186 NAME_REF@[177; 181)
185 R_PAREN@[183; 184) ")" 187 IDENT@[177; 181) "Some"
186 WHITESPACE@[184; 185) " " 188 L_PAREN@[181; 182) "("
187 EQ@[185; 186) "=" 189 PLACEHOLDER_PAT@[182; 183)
188 WHITESPACE@[186; 187) " " 190 UNDERSCORE@[182; 183) "_"
189 PATH_EXPR@[187; 191) 191 R_PAREN@[183; 184) ")"
190 PATH@[187; 191) 192 WHITESPACE@[184; 185) " "
191 PATH_SEGMENT@[187; 191) 193 EQ@[185; 186) "="
192 NAME_REF@[187; 191) 194 WHITESPACE@[186; 187) " "
193 IDENT@[187; 191) "None" 195 PATH_EXPR@[187; 191)
194 WHITESPACE@[191; 192) " " 196 PATH@[187; 191)
195 BLOCK@[192; 194) 197 PATH_SEGMENT@[187; 191)
196 L_CURLY@[192; 193) "{" 198 NAME_REF@[187; 191)
197 R_CURLY@[193; 194) "}" 199 IDENT@[187; 191) "None"
198 WHITESPACE@[194; 195) "\n" 200 WHITESPACE@[191; 192) " "
199 R_CURLY@[195; 196) "}" 201 BLOCK_EXPR@[192; 194)
202 BLOCK@[192; 194)
203 L_CURLY@[192; 193) "{"
204 R_CURLY@[193; 194) "}"
205 WHITESPACE@[194; 195) "\n"
206 R_CURLY@[195; 196) "}"
200 WHITESPACE@[196; 197) "\n" 207 WHITESPACE@[196; 197) "\n"
diff --git a/crates/ra_syntax/test_data/parser/inline/ok/0031_while_expr.txt b/crates/ra_syntax/test_data/parser/inline/ok/0031_while_expr.txt
index a772117a1..9b43d624c 100644
--- a/crates/ra_syntax/test_data/parser/inline/ok/0031_while_expr.txt
+++ b/crates/ra_syntax/test_data/parser/inline/ok/0031_while_expr.txt
@@ -8,59 +8,62 @@ SOURCE_FILE@[0; 70)
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; 69) 11 BLOCK_EXPR@[9; 69)
12 L_CURLY@[9; 10) "{" 12 BLOCK@[9; 69)
13 WHITESPACE@[10; 15) "\n " 13 L_CURLY@[9; 10) "{"
14 EXPR_STMT@[15; 29) 14 WHITESPACE@[10; 15) "\n "
15 WHILE_EXPR@[15; 28) 15 EXPR_STMT@[15; 29)
16 WHILE_KW@[15; 20) "while" 16 WHILE_EXPR@[15; 28)
17 WHITESPACE@[20; 21) " " 17 WHILE_KW@[15; 20) "while"
18 CONDITION@[21; 25) 18 WHITESPACE@[20; 21) " "
19 LITERAL@[21; 25) 19 CONDITION@[21; 25)
20 TRUE_KW@[21; 25) "true" 20 LITERAL@[21; 25)
21 WHITESPACE@[25; 26) " " 21 TRUE_KW@[21; 25) "true"
22 BLOCK@[26; 28) 22 WHITESPACE@[25; 26) " "
23 L_CURLY@[26; 27) "{" 23 BLOCK_EXPR@[26; 28)
24 R_CURLY@[27; 28) "}" 24 BLOCK@[26; 28)
25 SEMI@[28; 29) ";" 25 L_CURLY@[26; 27) "{"
26 WHITESPACE@[29; 34) "\n " 26 R_CURLY@[27; 28) "}"
27 EXPR_STMT@[34; 67) 27 SEMI@[28; 29) ";"
28 WHILE_EXPR@[34; 66) 28 WHITESPACE@[29; 34) "\n "
29 WHILE_KW@[34; 39) "while" 29 EXPR_STMT@[34; 67)
30 WHITESPACE@[39; 40) " " 30 WHILE_EXPR@[34; 66)
31 CONDITION@[40; 63) 31 WHILE_KW@[34; 39) "while"
32 LET_KW@[40; 43) "let" 32 WHITESPACE@[39; 40) " "
33 WHITESPACE@[43; 44) " " 33 CONDITION@[40; 63)
34 TUPLE_STRUCT_PAT@[44; 51) 34 LET_KW@[40; 43) "let"
35 PATH@[44; 48) 35 WHITESPACE@[43; 44) " "
36 PATH_SEGMENT@[44; 48) 36 TUPLE_STRUCT_PAT@[44; 51)
37 NAME_REF@[44; 48) 37 PATH@[44; 48)
38 IDENT@[44; 48) "Some" 38 PATH_SEGMENT@[44; 48)
39 L_PAREN@[48; 49) "(" 39 NAME_REF@[44; 48)
40 BIND_PAT@[49; 50) 40 IDENT@[44; 48) "Some"
41 NAME@[49; 50) 41 L_PAREN@[48; 49) "("
42 IDENT@[49; 50) "x" 42 BIND_PAT@[49; 50)
43 R_PAREN@[50; 51) ")" 43 NAME@[49; 50)
44 WHITESPACE@[51; 52) " " 44 IDENT@[49; 50) "x"
45 EQ@[52; 53) "=" 45 R_PAREN@[50; 51) ")"
46 WHITESPACE@[53; 54) " " 46 WHITESPACE@[51; 52) " "
47 METHOD_CALL_EXPR@[54; 63) 47 EQ@[52; 53) "="
48 PATH_EXPR@[54; 56) 48 WHITESPACE@[53; 54) " "
49 PATH@[54; 56) 49 METHOD_CALL_EXPR@[54; 63)
50 PATH_SEGMENT@[54; 56) 50 PATH_EXPR@[54; 56)
51 NAME_REF@[54; 56) 51 PATH@[54; 56)
52 IDENT@[54; 56) "it" 52 PATH_SEGMENT@[54; 56)
53 DOT@[56; 57) "." 53 NAME_REF@[54; 56)
54 NAME_REF@[57; 61) 54 IDENT@[54; 56) "it"
55 IDENT@[57; 61) "next" 55 DOT@[56; 57) "."
56 ARG_LIST@[61; 63) 56 NAME_REF@[57; 61)
57 L_PAREN@[61; 62) "(" 57 IDENT@[57; 61) "next"
58 R_PAREN@[62; 63) ")" 58 ARG_LIST@[61; 63)
59 WHITESPACE@[63; 64) " " 59 L_PAREN@[61; 62) "("
60 BLOCK@[64; 66) 60 R_PAREN@[62; 63) ")"
61 L_CURLY@[64; 65) "{" 61 WHITESPACE@[63; 64) " "
62 R_CURLY@[65; 66) "}" 62 BLOCK_EXPR@[64; 66)
63 SEMI@[66; 67) ";" 63 BLOCK@[64; 66)
64 WHITESPACE@[67; 68) "\n" 64 L_CURLY@[64; 65) "{"
65 R_CURLY@[68; 69) "}" 65 R_CURLY@[65; 66) "}"
66 SEMI@[66; 67) ";"
67 WHITESPACE@[67; 68) "\n"
68 R_CURLY@[68; 69) "}"
66 WHITESPACE@[69; 70) "\n" 69 WHITESPACE@[69; 70) "\n"
diff --git a/crates/ra_syntax/test_data/parser/inline/ok/0034_break_expr.txt b/crates/ra_syntax/test_data/parser/inline/ok/0034_break_expr.txt
index 4ece7cd7e..67ffdfd67 100644
--- a/crates/ra_syntax/test_data/parser/inline/ok/0034_break_expr.txt
+++ b/crates/ra_syntax/test_data/parser/inline/ok/0034_break_expr.txt
@@ -8,46 +8,48 @@ SOURCE_FILE@[0; 102)
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; 101) 11 BLOCK_EXPR@[9; 101)
12 L_CURLY@[9; 10) "{" 12 BLOCK@[9; 101)
13 WHITESPACE@[10; 15) "\n " 13 L_CURLY@[9; 10) "{"
14 LOOP_EXPR@[15; 99) 14 WHITESPACE@[10; 15) "\n "
15 LOOP_KW@[15; 19) "loop" 15 LOOP_EXPR@[15; 99)
16 WHITESPACE@[19; 20) " " 16 LOOP_KW@[15; 19) "loop"
17 BLOCK@[20; 99) 17 WHITESPACE@[19; 20) " "
18 L_CURLY@[20; 21) "{" 18 BLOCK_EXPR@[20; 99)
19 WHITESPACE@[21; 30) "\n " 19 BLOCK@[20; 99)
20 EXPR_STMT@[30; 36) 20 L_CURLY@[20; 21) "{"
21 BREAK_EXPR@[30; 35) 21 WHITESPACE@[21; 30) "\n "
22 BREAK_KW@[30; 35) "break" 22 EXPR_STMT@[30; 36)
23 SEMI@[35; 36) ";" 23 BREAK_EXPR@[30; 35)
24 WHITESPACE@[36; 45) "\n " 24 BREAK_KW@[30; 35) "break"
25 EXPR_STMT@[45; 54) 25 SEMI@[35; 36) ";"
26 BREAK_EXPR@[45; 53) 26 WHITESPACE@[36; 45) "\n "
27 BREAK_KW@[45; 50) "break" 27 EXPR_STMT@[45; 54)
28 WHITESPACE@[50; 51) " " 28 BREAK_EXPR@[45; 53)
29 LIFETIME@[51; 53) "\'l" 29 BREAK_KW@[45; 50) "break"
30 SEMI@[53; 54) ";" 30 WHITESPACE@[50; 51) " "
31 WHITESPACE@[54; 63) "\n " 31 LIFETIME@[51; 53) "\'l"
32 EXPR_STMT@[63; 72) 32 SEMI@[53; 54) ";"
33 BREAK_EXPR@[63; 71) 33 WHITESPACE@[54; 63) "\n "
34 BREAK_KW@[63; 68) "break" 34 EXPR_STMT@[63; 72)
35 WHITESPACE@[68; 69) " " 35 BREAK_EXPR@[63; 71)
36 LITERAL@[69; 71) 36 BREAK_KW@[63; 68) "break"
37 INT_NUMBER@[69; 71) "92" 37 WHITESPACE@[68; 69) " "
38 SEMI@[71; 72) ";" 38 LITERAL@[69; 71)
39 WHITESPACE@[72; 81) "\n " 39 INT_NUMBER@[69; 71) "92"
40 EXPR_STMT@[81; 93) 40 SEMI@[71; 72) ";"
41 BREAK_EXPR@[81; 92) 41 WHITESPACE@[72; 81) "\n "
42 BREAK_KW@[81; 86) "break" 42 EXPR_STMT@[81; 93)
43 WHITESPACE@[86; 87) " " 43 BREAK_EXPR@[81; 92)
44 LIFETIME@[87; 89) "\'l" 44 BREAK_KW@[81; 86) "break"
45 WHITESPACE@[89; 90) " " 45 WHITESPACE@[86; 87) " "
46 LITERAL@[90; 92) 46 LIFETIME@[87; 89) "\'l"
47 INT_NUMBER@[90; 92) "92" 47 WHITESPACE@[89; 90) " "
48 SEMI@[92; 93) ";" 48 LITERAL@[90; 92)
49 WHITESPACE@[93; 98) "\n " 49 INT_NUMBER@[90; 92) "92"
50 R_CURLY@[98; 99) "}" 50 SEMI@[92; 93) ";"
51 WHITESPACE@[99; 100) "\n" 51 WHITESPACE@[93; 98) "\n "
52 R_CURLY@[100; 101) "}" 52 R_CURLY@[98; 99) "}"
53 WHITESPACE@[99; 100) "\n"
54 R_CURLY@[100; 101) "}"
53 WHITESPACE@[101; 102) "\n" 55 WHITESPACE@[101; 102) "\n"
diff --git a/crates/ra_syntax/test_data/parser/inline/ok/0036_unsafe_extern_fn.txt b/crates/ra_syntax/test_data/parser/inline/ok/0036_unsafe_extern_fn.txt
index b5b09b2e5..a7dfe167c 100644
--- a/crates/ra_syntax/test_data/parser/inline/ok/0036_unsafe_extern_fn.txt
+++ b/crates/ra_syntax/test_data/parser/inline/ok/0036_unsafe_extern_fn.txt
@@ -15,7 +15,8 @@ SOURCE_FILE@[0; 30)
15 L_PAREN@[24; 25) "(" 15 L_PAREN@[24; 25) "("
16 R_PAREN@[25; 26) ")" 16 R_PAREN@[25; 26) ")"
17 WHITESPACE@[26; 27) " " 17 WHITESPACE@[26; 27) " "
18 BLOCK@[27; 29) 18 BLOCK_EXPR@[27; 29)
19 L_CURLY@[27; 28) "{" 19 BLOCK@[27; 29)
20 R_CURLY@[28; 29) "}" 20 L_CURLY@[27; 28) "{"
21 R_CURLY@[28; 29) "}"
21 WHITESPACE@[29; 30) "\n" 22 WHITESPACE@[29; 30) "\n"
diff --git a/crates/ra_syntax/test_data/parser/inline/ok/0037_qual_paths.txt b/crates/ra_syntax/test_data/parser/inline/ok/0037_qual_paths.txt
index 9bfddf5d2..6e226de4b 100644
--- a/crates/ra_syntax/test_data/parser/inline/ok/0037_qual_paths.txt
+++ b/crates/ra_syntax/test_data/parser/inline/ok/0037_qual_paths.txt
@@ -41,38 +41,39 @@ SOURCE_FILE@[0; 71)
41 L_PAREN@[33; 34) "(" 41 L_PAREN@[33; 34) "("
42 R_PAREN@[34; 35) ")" 42 R_PAREN@[34; 35) ")"
43 WHITESPACE@[35; 36) " " 43 WHITESPACE@[35; 36) " "
44 BLOCK@[36; 70) 44 BLOCK_EXPR@[36; 70)
45 L_CURLY@[36; 37) "{" 45 BLOCK@[36; 70)
46 WHITESPACE@[37; 38) " " 46 L_CURLY@[36; 37) "{"
47 EXPR_STMT@[38; 68) 47 WHITESPACE@[37; 38) " "
48 CALL_EXPR@[38; 67) 48 EXPR_STMT@[38; 68)
49 PATH_EXPR@[38; 65) 49 CALL_EXPR@[38; 67)
50 PATH@[38; 65) 50 PATH_EXPR@[38; 65)
51 PATH@[38; 56) 51 PATH@[38; 65)
52 PATH_SEGMENT@[38; 56) 52 PATH@[38; 56)
53 L_ANGLE@[38; 39) "<" 53 PATH_SEGMENT@[38; 56)
54 PATH_TYPE@[39; 44) 54 L_ANGLE@[38; 39) "<"
55 PATH@[39; 44) 55 PATH_TYPE@[39; 44)
56 PATH_SEGMENT@[39; 44) 56 PATH@[39; 44)
57 NAME_REF@[39; 44) 57 PATH_SEGMENT@[39; 44)
58 IDENT@[39; 44) "usize" 58 NAME_REF@[39; 44)
59 WHITESPACE@[44; 45) " " 59 IDENT@[39; 44) "usize"
60 AS_KW@[45; 47) "as" 60 WHITESPACE@[44; 45) " "
61 WHITESPACE@[47; 48) " " 61 AS_KW@[45; 47) "as"
62 PATH_TYPE@[48; 55) 62 WHITESPACE@[47; 48) " "
63 PATH@[48; 55) 63 PATH_TYPE@[48; 55)
64 PATH_SEGMENT@[48; 55) 64 PATH@[48; 55)
65 NAME_REF@[48; 55) 65 PATH_SEGMENT@[48; 55)
66 IDENT@[48; 55) "Default" 66 NAME_REF@[48; 55)
67 R_ANGLE@[55; 56) ">" 67 IDENT@[48; 55) "Default"
68 COLONCOLON@[56; 58) "::" 68 R_ANGLE@[55; 56) ">"
69 PATH_SEGMENT@[58; 65) 69 COLONCOLON@[56; 58) "::"
70 NAME_REF@[58; 65) 70 PATH_SEGMENT@[58; 65)
71 IDENT@[58; 65) "default" 71 NAME_REF@[58; 65)
72 ARG_LIST@[65; 67) 72 IDENT@[58; 65) "default"
73 L_PAREN@[65; 66) "(" 73 ARG_LIST@[65; 67)
74 R_PAREN@[66; 67) ")" 74 L_PAREN@[65; 66) "("
75 SEMI@[67; 68) ";" 75 R_PAREN@[66; 67) ")"
76 WHITESPACE@[68; 69) " " 76 SEMI@[67; 68) ";"
77 R_CURLY@[69; 70) "}" 77 WHITESPACE@[68; 69) " "
78 R_CURLY@[69; 70) "}"
78 WHITESPACE@[70; 71) "\n" 79 WHITESPACE@[70; 71) "\n"
diff --git a/crates/ra_syntax/test_data/parser/inline/ok/0038_full_range_expr.txt b/crates/ra_syntax/test_data/parser/inline/ok/0038_full_range_expr.txt
index 477c645d1..042cee879 100644
--- a/crates/ra_syntax/test_data/parser/inline/ok/0038_full_range_expr.txt
+++ b/crates/ra_syntax/test_data/parser/inline/ok/0038_full_range_expr.txt
@@ -8,21 +8,22 @@ SOURCE_FILE@[0; 21)
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; 20) 11 BLOCK_EXPR@[9; 20)
12 L_CURLY@[9; 10) "{" 12 BLOCK@[9; 20)
13 WHITESPACE@[10; 11) " " 13 L_CURLY@[9; 10) "{"
14 EXPR_STMT@[11; 18) 14 WHITESPACE@[10; 11) " "
15 INDEX_EXPR@[11; 17) 15 EXPR_STMT@[11; 18)
16 PATH_EXPR@[11; 13) 16 INDEX_EXPR@[11; 17)
17 PATH@[11; 13) 17 PATH_EXPR@[11; 13)
18 PATH_SEGMENT@[11; 13) 18 PATH@[11; 13)
19 NAME_REF@[11; 13) 19 PATH_SEGMENT@[11; 13)
20 IDENT@[11; 13) "xs" 20 NAME_REF@[11; 13)
21 L_BRACK@[13; 14) "[" 21 IDENT@[11; 13) "xs"
22 RANGE_EXPR@[14; 16) 22 L_BRACK@[13; 14) "["
23 DOTDOT@[14; 16) ".." 23 RANGE_EXPR@[14; 16)
24 R_BRACK@[16; 17) "]" 24 DOTDOT@[14; 16) ".."
25 SEMI@[17; 18) ";" 25 R_BRACK@[16; 17) "]"
26 WHITESPACE@[18; 19) " " 26 SEMI@[17; 18) ";"
27 R_CURLY@[19; 20) "}" 27 WHITESPACE@[18; 19) " "
28 R_CURLY@[19; 20) "}"
28 WHITESPACE@[20; 21) "\n" 29 WHITESPACE@[20; 21) "\n"
diff --git a/crates/ra_syntax/test_data/parser/inline/ok/0040_crate_keyword_vis.txt b/crates/ra_syntax/test_data/parser/inline/ok/0040_crate_keyword_vis.txt
index 882e4a9ae..d180fcf20 100644
--- a/crates/ra_syntax/test_data/parser/inline/ok/0040_crate_keyword_vis.txt
+++ b/crates/ra_syntax/test_data/parser/inline/ok/0040_crate_keyword_vis.txt
@@ -11,10 +11,11 @@ SOURCE_FILE@[0; 71)
11 L_PAREN@[13; 14) "(" 11 L_PAREN@[13; 14) "("
12 R_PAREN@[14; 15) ")" 12 R_PAREN@[14; 15) ")"
13 WHITESPACE@[15; 16) " " 13 WHITESPACE@[15; 16) " "
14 BLOCK@[16; 19) 14 BLOCK_EXPR@[16; 19)
15 L_CURLY@[16; 17) "{" 15 BLOCK@[16; 19)
16 WHITESPACE@[17; 18) " " 16 L_CURLY@[16; 17) "{"
17 R_CURLY@[18; 19) "}" 17 WHITESPACE@[17; 18) " "
18 R_CURLY@[18; 19) "}"
18 WHITESPACE@[19; 20) "\n" 19 WHITESPACE@[19; 20) "\n"
19 STRUCT_DEF@[20; 49) 20 STRUCT_DEF@[20; 49)
20 STRUCT_KW@[20; 26) "struct" 21 STRUCT_KW@[20; 26) "struct"
diff --git a/crates/ra_syntax/test_data/parser/inline/ok/0042_call_expr.txt b/crates/ra_syntax/test_data/parser/inline/ok/0042_call_expr.txt
index dd8946ad2..e8003bf91 100644
--- a/crates/ra_syntax/test_data/parser/inline/ok/0042_call_expr.txt
+++ b/crates/ra_syntax/test_data/parser/inline/ok/0042_call_expr.txt
@@ -8,140 +8,141 @@ SOURCE_FILE@[0; 118)
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; 117) 11 BLOCK_EXPR@[9; 117)
12 L_CURLY@[9; 10) "{" 12 BLOCK@[9; 117)
13 WHITESPACE@[10; 15) "\n " 13 L_CURLY@[9; 10) "{"
14 LET_STMT@[15; 27) 14 WHITESPACE@[10; 15) "\n "
15 LET_KW@[15; 18) "let" 15 LET_STMT@[15; 27)
16 WHITESPACE@[18; 19) " " 16 LET_KW@[15; 18) "let"
17 PLACEHOLDER_PAT@[19; 20) 17 WHITESPACE@[18; 19) " "
18 UNDERSCORE@[19; 20) "_" 18 PLACEHOLDER_PAT@[19; 20)
19 WHITESPACE@[20; 21) " " 19 UNDERSCORE@[19; 20) "_"
20 EQ@[21; 22) "=" 20 WHITESPACE@[20; 21) " "
21 WHITESPACE@[22; 23) " " 21 EQ@[21; 22) "="
22 CALL_EXPR@[23; 26) 22 WHITESPACE@[22; 23) " "
23 PATH_EXPR@[23; 24) 23 CALL_EXPR@[23; 26)
24 PATH@[23; 24) 24 PATH_EXPR@[23; 24)
25 PATH_SEGMENT@[23; 24) 25 PATH@[23; 24)
26 NAME_REF@[23; 24) 26 PATH_SEGMENT@[23; 24)
27 IDENT@[23; 24) "f" 27 NAME_REF@[23; 24)
28 ARG_LIST@[24; 26) 28 IDENT@[23; 24) "f"
29 L_PAREN@[24; 25) "(" 29 ARG_LIST@[24; 26)
30 R_PAREN@[25; 26) ")" 30 L_PAREN@[24; 25) "("
31 SEMI@[26; 27) ";" 31 R_PAREN@[25; 26) ")"
32 WHITESPACE@[27; 32) "\n " 32 SEMI@[26; 27) ";"
33 LET_STMT@[32; 54) 33 WHITESPACE@[27; 32) "\n "
34 LET_KW@[32; 35) "let" 34 LET_STMT@[32; 54)
35 WHITESPACE@[35; 36) " " 35 LET_KW@[32; 35) "let"
36 PLACEHOLDER_PAT@[36; 37) 36 WHITESPACE@[35; 36) " "
37 UNDERSCORE@[36; 37) "_" 37 PLACEHOLDER_PAT@[36; 37)
38 WHITESPACE@[37; 38) " " 38 UNDERSCORE@[36; 37) "_"
39 EQ@[38; 39) "=" 39 WHITESPACE@[37; 38) " "
40 WHITESPACE@[39; 40) " " 40 EQ@[38; 39) "="
41 CALL_EXPR@[40; 53) 41 WHITESPACE@[39; 40) " "
42 CALL_EXPR@[40; 46) 42 CALL_EXPR@[40; 53)
43 CALL_EXPR@[40; 43) 43 CALL_EXPR@[40; 46)
44 PATH_EXPR@[40; 41) 44 CALL_EXPR@[40; 43)
45 PATH@[40; 41) 45 PATH_EXPR@[40; 41)
46 PATH_SEGMENT@[40; 41) 46 PATH@[40; 41)
47 NAME_REF@[40; 41) 47 PATH_SEGMENT@[40; 41)
48 IDENT@[40; 41) "f" 48 NAME_REF@[40; 41)
49 ARG_LIST@[41; 43) 49 IDENT@[40; 41) "f"
50 L_PAREN@[41; 42) "(" 50 ARG_LIST@[41; 43)
51 R_PAREN@[42; 43) ")" 51 L_PAREN@[41; 42) "("
52 ARG_LIST@[43; 46) 52 R_PAREN@[42; 43) ")"
53 L_PAREN@[43; 44) "(" 53 ARG_LIST@[43; 46)
54 LITERAL@[44; 45) 54 L_PAREN@[43; 44) "("
55 INT_NUMBER@[44; 45) "1" 55 LITERAL@[44; 45)
56 R_PAREN@[45; 46) ")" 56 INT_NUMBER@[44; 45) "1"
57 ARG_LIST@[46; 53) 57 R_PAREN@[45; 46) ")"
58 L_PAREN@[46; 47) "(" 58 ARG_LIST@[46; 53)
59 LITERAL@[47; 48) 59 L_PAREN@[46; 47) "("
60 INT_NUMBER@[47; 48) "1" 60 LITERAL@[47; 48)
61 COMMA@[48; 49) "," 61 INT_NUMBER@[47; 48) "1"
62 WHITESPACE@[49; 50) " " 62 COMMA@[48; 49) ","
63 LITERAL@[50; 51) 63 WHITESPACE@[49; 50) " "
64 INT_NUMBER@[50; 51) "2" 64 LITERAL@[50; 51)
65 COMMA@[51; 52) "," 65 INT_NUMBER@[50; 51) "2"
66 R_PAREN@[52; 53) ")" 66 COMMA@[51; 52) ","
67 SEMI@[53; 54) ";" 67 R_PAREN@[52; 53) ")"
68 WHITESPACE@[54; 59) "\n " 68 SEMI@[53; 54) ";"
69 LET_STMT@[59; 84) 69 WHITESPACE@[54; 59) "\n "
70 LET_KW@[59; 62) "let" 70 LET_STMT@[59; 84)
71 WHITESPACE@[62; 63) " " 71 LET_KW@[59; 62) "let"
72 PLACEHOLDER_PAT@[63; 64) 72 WHITESPACE@[62; 63) " "
73 UNDERSCORE@[63; 64) "_" 73 PLACEHOLDER_PAT@[63; 64)
74 WHITESPACE@[64; 65) " " 74 UNDERSCORE@[63; 64) "_"
75 EQ@[65; 66) "=" 75 WHITESPACE@[64; 65) " "
76 WHITESPACE@[66; 67) " " 76 EQ@[65; 66) "="
77 CALL_EXPR@[67; 83) 77 WHITESPACE@[66; 67) " "
78 PATH_EXPR@[67; 68) 78 CALL_EXPR@[67; 83)
79 PATH@[67; 68) 79 PATH_EXPR@[67; 68)
80 PATH_SEGMENT@[67; 68) 80 PATH@[67; 68)
81 NAME_REF@[67; 68) 81 PATH_SEGMENT@[67; 68)
82 IDENT@[67; 68) "f" 82 NAME_REF@[67; 68)
83 ARG_LIST@[68; 83) 83 IDENT@[67; 68) "f"
84 L_PAREN@[68; 69) "(" 84 ARG_LIST@[68; 83)
85 CALL_EXPR@[69; 82) 85 L_PAREN@[68; 69) "("
86 PATH_EXPR@[69; 80) 86 CALL_EXPR@[69; 82)
87 PATH@[69; 80) 87 PATH_EXPR@[69; 80)
88 PATH@[69; 74) 88 PATH@[69; 80)
89 PATH_SEGMENT@[69; 74) 89 PATH@[69; 74)
90 L_ANGLE@[69; 70) "<" 90 PATH_SEGMENT@[69; 74)
91 PATH_TYPE@[70; 73) 91 L_ANGLE@[69; 70) "<"
92 PATH@[70; 73) 92 PATH_TYPE@[70; 73)
93 PATH_SEGMENT@[70; 73) 93 PATH@[70; 73)
94 NAME_REF@[70; 73) 94 PATH_SEGMENT@[70; 73)
95 IDENT@[70; 73) "Foo" 95 NAME_REF@[70; 73)
96 R_ANGLE@[73; 74) ">" 96 IDENT@[70; 73) "Foo"
97 COLONCOLON@[74; 76) "::" 97 R_ANGLE@[73; 74) ">"
98 PATH_SEGMENT@[76; 80) 98 COLONCOLON@[74; 76) "::"
99 NAME_REF@[76; 80) 99 PATH_SEGMENT@[76; 80)
100 IDENT@[76; 80) "func" 100 NAME_REF@[76; 80)
101 ARG_LIST@[80; 82) 101 IDENT@[76; 80) "func"
102 L_PAREN@[80; 81) "(" 102 ARG_LIST@[80; 82)
103 R_PAREN@[81; 82) ")" 103 L_PAREN@[80; 81) "("
104 R_PAREN@[82; 83) ")" 104 R_PAREN@[81; 82) ")"
105 SEMI@[83; 84) ";" 105 R_PAREN@[82; 83) ")"
106 WHITESPACE@[84; 89) "\n " 106 SEMI@[83; 84) ";"
107 EXPR_STMT@[89; 115) 107 WHITESPACE@[84; 89) "\n "
108 CALL_EXPR@[89; 114) 108 EXPR_STMT@[89; 115)
109 PATH_EXPR@[89; 90) 109 CALL_EXPR@[89; 114)
110 PATH@[89; 90) 110 PATH_EXPR@[89; 90)
111 PATH_SEGMENT@[89; 90) 111 PATH@[89; 90)
112 NAME_REF@[89; 90) 112 PATH_SEGMENT@[89; 90)
113 IDENT@[89; 90) "f" 113 NAME_REF@[89; 90)
114 ARG_LIST@[90; 114) 114 IDENT@[89; 90) "f"
115 L_PAREN@[90; 91) "(" 115 ARG_LIST@[90; 114)
116 CALL_EXPR@[91; 113) 116 L_PAREN@[90; 91) "("
117 PATH_EXPR@[91; 111) 117 CALL_EXPR@[91; 113)
118 PATH@[91; 111) 118 PATH_EXPR@[91; 111)
119 PATH@[91; 105) 119 PATH@[91; 111)
120 PATH_SEGMENT@[91; 105) 120 PATH@[91; 105)
121 L_ANGLE@[91; 92) "<" 121 PATH_SEGMENT@[91; 105)
122 PATH_TYPE@[92; 95) 122 L_ANGLE@[91; 92) "<"
123 PATH@[92; 95) 123 PATH_TYPE@[92; 95)
124 PATH_SEGMENT@[92; 95) 124 PATH@[92; 95)
125 NAME_REF@[92; 95) 125 PATH_SEGMENT@[92; 95)
126 IDENT@[92; 95) "Foo" 126 NAME_REF@[92; 95)
127 WHITESPACE@[95; 96) " " 127 IDENT@[92; 95) "Foo"
128 AS_KW@[96; 98) "as" 128 WHITESPACE@[95; 96) " "
129 WHITESPACE@[98; 99) " " 129 AS_KW@[96; 98) "as"
130 PATH_TYPE@[99; 104) 130 WHITESPACE@[98; 99) " "
131 PATH@[99; 104) 131 PATH_TYPE@[99; 104)
132 PATH_SEGMENT@[99; 104) 132 PATH@[99; 104)
133 NAME_REF@[99; 104) 133 PATH_SEGMENT@[99; 104)
134 IDENT@[99; 104) "Trait" 134 NAME_REF@[99; 104)
135 R_ANGLE@[104; 105) ">" 135 IDENT@[99; 104) "Trait"
136 COLONCOLON@[105; 107) "::" 136 R_ANGLE@[104; 105) ">"
137 PATH_SEGMENT@[107; 111) 137 COLONCOLON@[105; 107) "::"
138 NAME_REF@[107; 111) 138 PATH_SEGMENT@[107; 111)
139 IDENT@[107; 111) "func" 139 NAME_REF@[107; 111)
140 ARG_LIST@[111; 113) 140 IDENT@[107; 111) "func"
141 L_PAREN@[111; 112) "(" 141 ARG_LIST@[111; 113)
142 R_PAREN@[112; 113) ")" 142 L_PAREN@[111; 112) "("
143 R_PAREN@[113; 114) ")" 143 R_PAREN@[112; 113) ")"
144 SEMI@[114; 115) ";" 144 R_PAREN@[113; 114) ")"
145 WHITESPACE@[115; 116) "\n" 145 SEMI@[114; 115) ";"
146 R_CURLY@[116; 117) "}" 146 WHITESPACE@[115; 116) "\n"
147 R_CURLY@[116; 117) "}"
147 WHITESPACE@[117; 118) "\n" 148 WHITESPACE@[117; 118) "\n"
diff --git a/crates/ra_syntax/test_data/parser/inline/ok/0044_block_items.txt b/crates/ra_syntax/test_data/parser/inline/ok/0044_block_items.txt
index d1a8c560a..e75d569f0 100644
--- a/crates/ra_syntax/test_data/parser/inline/ok/0044_block_items.txt
+++ b/crates/ra_syntax/test_data/parser/inline/ok/0044_block_items.txt
@@ -8,21 +8,23 @@ SOURCE_FILE@[0; 21)
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; 20) 11 BLOCK_EXPR@[7; 20)
12 L_CURLY@[7; 8) "{" 12 BLOCK@[7; 20)
13 WHITESPACE@[8; 9) " " 13 L_CURLY@[7; 8) "{"
14 FN_DEF@[9; 18) 14 WHITESPACE@[8; 9) " "
15 FN_KW@[9; 11) "fn" 15 FN_DEF@[9; 18)
16 WHITESPACE@[11; 12) " " 16 FN_KW@[9; 11) "fn"
17 NAME@[12; 13) 17 WHITESPACE@[11; 12) " "
18 IDENT@[12; 13) "b" 18 NAME@[12; 13)
19 PARAM_LIST@[13; 15) 19 IDENT@[12; 13) "b"
20 L_PAREN@[13; 14) "(" 20 PARAM_LIST@[13; 15)
21 R_PAREN@[14; 15) ")" 21 L_PAREN@[13; 14) "("
22 WHITESPACE@[15; 16) " " 22 R_PAREN@[14; 15) ")"
23 BLOCK@[16; 18) 23 WHITESPACE@[15; 16) " "
24 L_CURLY@[16; 17) "{" 24 BLOCK_EXPR@[16; 18)
25 R_CURLY@[17; 18) "}" 25 BLOCK@[16; 18)
26 WHITESPACE@[18; 19) " " 26 L_CURLY@[16; 17) "{"
27 R_CURLY@[19; 20) "}" 27 R_CURLY@[17; 18) "}"
28 WHITESPACE@[18; 19) " "
29 R_CURLY@[19; 20) "}"
28 WHITESPACE@[20; 21) "\n" 30 WHITESPACE@[20; 21) "\n"
diff --git a/crates/ra_syntax/test_data/parser/inline/ok/0045_param_list_opt_patterns.txt b/crates/ra_syntax/test_data/parser/inline/ok/0045_param_list_opt_patterns.txt
index f85d6a4bc..33886154d 100644
--- a/crates/ra_syntax/test_data/parser/inline/ok/0045_param_list_opt_patterns.txt
+++ b/crates/ra_syntax/test_data/parser/inline/ok/0045_param_list_opt_patterns.txt
@@ -40,7 +40,8 @@ SOURCE_FILE@[0; 35)
40 PARAM_LIST@[30; 32) 40 PARAM_LIST@[30; 32)
41 L_PAREN@[30; 31) "(" 41 L_PAREN@[30; 31) "("
42 R_PAREN@[31; 32) ")" 42 R_PAREN@[31; 32) ")"
43 BLOCK@[32; 34) 43 BLOCK_EXPR@[32; 34)
44 L_CURLY@[32; 33) "{" 44 BLOCK@[32; 34)
45 R_CURLY@[33; 34) "}" 45 L_CURLY@[32; 33) "{"
46 R_CURLY@[33; 34) "}"
46 WHITESPACE@[34; 35) "\n" 47 WHITESPACE@[34; 35) "\n"
diff --git a/crates/ra_syntax/test_data/parser/inline/ok/0048_path_type_with_bounds.txt b/crates/ra_syntax/test_data/parser/inline/ok/0048_path_type_with_bounds.txt
index bb948c8d8..02f2a9db6 100644
--- a/crates/ra_syntax/test_data/parser/inline/ok/0048_path_type_with_bounds.txt
+++ b/crates/ra_syntax/test_data/parser/inline/ok/0048_path_type_with_bounds.txt
@@ -34,9 +34,10 @@ SOURCE_FILE@[0; 58)
34 LIFETIME@[20; 22) "\'f" 34 LIFETIME@[20; 22) "\'f"
35 R_ANGLE@[22; 23) ">" 35 R_ANGLE@[22; 23) ">"
36 WHITESPACE@[23; 24) " " 36 WHITESPACE@[23; 24) " "
37 BLOCK@[24; 26) 37 BLOCK_EXPR@[24; 26)
38 L_CURLY@[24; 25) "{" 38 BLOCK@[24; 26)
39 R_CURLY@[25; 26) "}" 39 L_CURLY@[24; 25) "{"
40 R_CURLY@[25; 26) "}"
40 WHITESPACE@[26; 27) "\n" 41 WHITESPACE@[26; 27) "\n"
41 FN_DEF@[27; 57) 42 FN_DEF@[27; 57)
42 FN_KW@[27; 29) "fn" 43 FN_KW@[27; 29) "fn"
@@ -75,7 +76,8 @@ SOURCE_FILE@[0; 58)
75 LIFETIME@[51; 53) "\'f" 76 LIFETIME@[51; 53) "\'f"
76 R_ANGLE@[53; 54) ">" 77 R_ANGLE@[53; 54) ">"
77 WHITESPACE@[54; 55) " " 78 WHITESPACE@[54; 55) " "
78 BLOCK@[55; 57) 79 BLOCK_EXPR@[55; 57)
79 L_CURLY@[55; 56) "{" 80 BLOCK@[55; 57)
80 R_CURLY@[56; 57) "}" 81 L_CURLY@[55; 56) "{"
82 R_CURLY@[56; 57) "}"
81 WHITESPACE@[57; 58) "\n" 83 WHITESPACE@[57; 58) "\n"
diff --git a/crates/ra_syntax/test_data/parser/inline/ok/0053_path_expr.txt b/crates/ra_syntax/test_data/parser/inline/ok/0053_path_expr.txt
index bc4b97c9f..f1018fcab 100644
--- a/crates/ra_syntax/test_data/parser/inline/ok/0053_path_expr.txt
+++ b/crates/ra_syntax/test_data/parser/inline/ok/0053_path_expr.txt
@@ -8,88 +8,89 @@ SOURCE_FILE@[0; 91)
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; 90) 11 BLOCK_EXPR@[9; 90)
12 L_CURLY@[9; 10) "{" 12 BLOCK@[9; 90)
13 WHITESPACE@[10; 15) "\n " 13 L_CURLY@[9; 10) "{"
14 LET_STMT@[15; 25) 14 WHITESPACE@[10; 15) "\n "
15 LET_KW@[15; 18) "let" 15 LET_STMT@[15; 25)
16 WHITESPACE@[18; 19) " " 16 LET_KW@[15; 18) "let"
17 PLACEHOLDER_PAT@[19; 20) 17 WHITESPACE@[18; 19) " "
18 UNDERSCORE@[19; 20) "_" 18 PLACEHOLDER_PAT@[19; 20)
19 WHITESPACE@[20; 21) " " 19 UNDERSCORE@[19; 20) "_"
20 EQ@[21; 22) "=" 20 WHITESPACE@[20; 21) " "
21 WHITESPACE@[22; 23) " " 21 EQ@[21; 22) "="
22 PATH_EXPR@[23; 24) 22 WHITESPACE@[22; 23) " "
23 PATH@[23; 24) 23 PATH_EXPR@[23; 24)
24 PATH_SEGMENT@[23; 24) 24 PATH@[23; 24)
25 NAME_REF@[23; 24) 25 PATH_SEGMENT@[23; 24)
26 IDENT@[23; 24) "a" 26 NAME_REF@[23; 24)
27 SEMI@[24; 25) ";" 27 IDENT@[23; 24) "a"
28 WHITESPACE@[25; 30) "\n " 28 SEMI@[24; 25) ";"
29 LET_STMT@[30; 43) 29 WHITESPACE@[25; 30) "\n "
30 LET_KW@[30; 33) "let" 30 LET_STMT@[30; 43)
31 WHITESPACE@[33; 34) " " 31 LET_KW@[30; 33) "let"
32 PLACEHOLDER_PAT@[34; 35) 32 WHITESPACE@[33; 34) " "
33 UNDERSCORE@[34; 35) "_" 33 PLACEHOLDER_PAT@[34; 35)
34 WHITESPACE@[35; 36) " " 34 UNDERSCORE@[34; 35) "_"
35 EQ@[36; 37) "=" 35 WHITESPACE@[35; 36) " "
36 WHITESPACE@[37; 38) " " 36 EQ@[36; 37) "="
37 PATH_EXPR@[38; 42) 37 WHITESPACE@[37; 38) " "
38 PATH@[38; 42) 38 PATH_EXPR@[38; 42)
39 PATH@[38; 39) 39 PATH@[38; 42)
40 PATH_SEGMENT@[38; 39) 40 PATH@[38; 39)
41 NAME_REF@[38; 39) 41 PATH_SEGMENT@[38; 39)
42 IDENT@[38; 39) "a" 42 NAME_REF@[38; 39)
43 COLONCOLON@[39; 41) "::" 43 IDENT@[38; 39) "a"
44 PATH_SEGMENT@[41; 42) 44 COLONCOLON@[39; 41) "::"
45 NAME_REF@[41; 42) 45 PATH_SEGMENT@[41; 42)
46 IDENT@[41; 42) "b" 46 NAME_REF@[41; 42)
47 SEMI@[42; 43) ";" 47 IDENT@[41; 42) "b"
48 WHITESPACE@[43; 48) "\n " 48 SEMI@[42; 43) ";"
49 LET_STMT@[48; 65) 49 WHITESPACE@[43; 48) "\n "
50 LET_KW@[48; 51) "let" 50 LET_STMT@[48; 65)
51 WHITESPACE@[51; 52) " " 51 LET_KW@[48; 51) "let"
52 PLACEHOLDER_PAT@[52; 53) 52 WHITESPACE@[51; 52) " "
53 UNDERSCORE@[52; 53) "_" 53 PLACEHOLDER_PAT@[52; 53)
54 WHITESPACE@[53; 54) " " 54 UNDERSCORE@[52; 53) "_"
55 EQ@[54; 55) "=" 55 WHITESPACE@[53; 54) " "
56 WHITESPACE@[55; 56) " " 56 EQ@[54; 55) "="
57 PATH_EXPR@[56; 64) 57 WHITESPACE@[55; 56) " "
58 PATH@[56; 64) 58 PATH_EXPR@[56; 64)
59 PATH_SEGMENT@[56; 64) 59 PATH@[56; 64)
60 COLONCOLON@[56; 58) "::" 60 PATH_SEGMENT@[56; 64)
61 NAME_REF@[58; 59) 61 COLONCOLON@[56; 58) "::"
62 IDENT@[58; 59) "a" 62 NAME_REF@[58; 59)
63 TYPE_ARG_LIST@[59; 64) 63 IDENT@[58; 59) "a"
64 COLONCOLON@[59; 61) "::" 64 TYPE_ARG_LIST@[59; 64)
65 L_ANGLE@[61; 62) "<" 65 COLONCOLON@[59; 61) "::"
66 TYPE_ARG@[62; 63) 66 L_ANGLE@[61; 62) "<"
67 PATH_TYPE@[62; 63) 67 TYPE_ARG@[62; 63)
68 PATH@[62; 63) 68 PATH_TYPE@[62; 63)
69 PATH_SEGMENT@[62; 63) 69 PATH@[62; 63)
70 NAME_REF@[62; 63) 70 PATH_SEGMENT@[62; 63)
71 IDENT@[62; 63) "b" 71 NAME_REF@[62; 63)
72 R_ANGLE@[63; 64) ">" 72 IDENT@[62; 63) "b"
73 SEMI@[64; 65) ";" 73 R_ANGLE@[63; 64) ">"
74 WHITESPACE@[65; 70) "\n " 74 SEMI@[64; 65) ";"
75 LET_STMT@[70; 88) 75 WHITESPACE@[65; 70) "\n "
76 LET_KW@[70; 73) "let" 76 LET_STMT@[70; 88)
77 WHITESPACE@[73; 74) " " 77 LET_KW@[70; 73) "let"
78 PLACEHOLDER_PAT@[74; 75) 78 WHITESPACE@[73; 74) " "
79 UNDERSCORE@[74; 75) "_" 79 PLACEHOLDER_PAT@[74; 75)
80 WHITESPACE@[75; 76) " " 80 UNDERSCORE@[74; 75) "_"
81 EQ@[76; 77) "=" 81 WHITESPACE@[75; 76) " "
82 WHITESPACE@[77; 78) " " 82 EQ@[76; 77) "="
83 MACRO_CALL@[78; 87) 83 WHITESPACE@[77; 78) " "
84 PATH@[78; 84) 84 MACRO_CALL@[78; 87)
85 PATH_SEGMENT@[78; 84) 85 PATH@[78; 84)
86 NAME_REF@[78; 84) 86 PATH_SEGMENT@[78; 84)
87 IDENT@[78; 84) "format" 87 NAME_REF@[78; 84)
88 EXCL@[84; 85) "!" 88 IDENT@[78; 84) "format"
89 TOKEN_TREE@[85; 87) 89 EXCL@[84; 85) "!"
90 L_PAREN@[85; 86) "(" 90 TOKEN_TREE@[85; 87)
91 R_PAREN@[86; 87) ")" 91 L_PAREN@[85; 86) "("
92 SEMI@[87; 88) ";" 92 R_PAREN@[86; 87) ")"
93 WHITESPACE@[88; 89) "\n" 93 SEMI@[87; 88) ";"
94 R_CURLY@[89; 90) "}" 94 WHITESPACE@[88; 89) "\n"
95 R_CURLY@[89; 90) "}"
95 WHITESPACE@[90; 91) "\n" 96 WHITESPACE@[90; 91) "\n"
diff --git a/crates/ra_syntax/test_data/parser/inline/ok/0055_literal_pattern.txt b/crates/ra_syntax/test_data/parser/inline/ok/0055_literal_pattern.txt
index ab5dad438..2b28cec67 100644
--- a/crates/ra_syntax/test_data/parser/inline/ok/0055_literal_pattern.txt
+++ b/crates/ra_syntax/test_data/parser/inline/ok/0055_literal_pattern.txt
@@ -8,69 +8,70 @@ SOURCE_FILE@[0; 113)
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; 112) 11 BLOCK_EXPR@[10; 112)
12 L_CURLY@[10; 11) "{" 12 BLOCK@[10; 112)
13 WHITESPACE@[11; 16) "\n " 13 L_CURLY@[10; 11) "{"
14 MATCH_EXPR@[16; 110) 14 WHITESPACE@[11; 16) "\n "
15 MATCH_KW@[16; 21) "match" 15 MATCH_EXPR@[16; 110)
16 WHITESPACE@[21; 22) " " 16 MATCH_KW@[16; 21) "match"
17 TUPLE_EXPR@[22; 24) 17 WHITESPACE@[21; 22) " "
18 L_PAREN@[22; 23) "(" 18 TUPLE_EXPR@[22; 24)
19 R_PAREN@[23; 24) ")" 19 L_PAREN@[22; 23) "("
20 WHITESPACE@[24; 25) " " 20 R_PAREN@[23; 24) ")"
21 MATCH_ARM_LIST@[25; 110) 21 WHITESPACE@[24; 25) " "
22 L_CURLY@[25; 26) "{" 22 MATCH_ARM_LIST@[25; 110)
23 WHITESPACE@[26; 35) "\n " 23 L_CURLY@[25; 26) "{"
24 MATCH_ARM@[35; 43) 24 WHITESPACE@[26; 35) "\n "
25 LITERAL_PAT@[35; 37) 25 MATCH_ARM@[35; 43)
26 MINUS@[35; 36) "-" 26 LITERAL_PAT@[35; 37)
27 LITERAL@[36; 37) 27 MINUS@[35; 36) "-"
28 INT_NUMBER@[36; 37) "1" 28 LITERAL@[36; 37)
29 WHITESPACE@[37; 38) " " 29 INT_NUMBER@[36; 37) "1"
30 FAT_ARROW@[38; 40) "=>" 30 WHITESPACE@[37; 38) " "
31 WHITESPACE@[40; 41) " " 31 FAT_ARROW@[38; 40) "=>"
32 TUPLE_EXPR@[41; 43) 32 WHITESPACE@[40; 41) " "
33 L_PAREN@[41; 42) "(" 33 TUPLE_EXPR@[41; 43)
34 R_PAREN@[42; 43) ")" 34 L_PAREN@[41; 42) "("
35 COMMA@[43; 44) "," 35 R_PAREN@[42; 43) ")"
36 WHITESPACE@[44; 53) "\n " 36 COMMA@[43; 44) ","
37 MATCH_ARM@[53; 61) 37 WHITESPACE@[44; 53) "\n "
38 LITERAL_PAT@[53; 55) 38 MATCH_ARM@[53; 61)
39 LITERAL@[53; 55) 39 LITERAL_PAT@[53; 55)
40 INT_NUMBER@[53; 55) "92" 40 LITERAL@[53; 55)
41 WHITESPACE@[55; 56) " " 41 INT_NUMBER@[53; 55) "92"
42 FAT_ARROW@[56; 58) "=>" 42 WHITESPACE@[55; 56) " "
43 WHITESPACE@[58; 59) " " 43 FAT_ARROW@[56; 58) "=>"
44 TUPLE_EXPR@[59; 61) 44 WHITESPACE@[58; 59) " "
45 L_PAREN@[59; 60) "(" 45 TUPLE_EXPR@[59; 61)
46 R_PAREN@[60; 61) ")" 46 L_PAREN@[59; 60) "("
47 COMMA@[61; 62) "," 47 R_PAREN@[60; 61) ")"
48 WHITESPACE@[62; 71) "\n " 48 COMMA@[61; 62) ","
49 MATCH_ARM@[71; 80) 49 WHITESPACE@[62; 71) "\n "
50 LITERAL_PAT@[71; 74) 50 MATCH_ARM@[71; 80)
51 LITERAL@[71; 74) 51 LITERAL_PAT@[71; 74)
52 CHAR@[71; 74) "\'c\'" 52 LITERAL@[71; 74)
53 WHITESPACE@[74; 75) " " 53 CHAR@[71; 74) "\'c\'"
54 FAT_ARROW@[75; 77) "=>" 54 WHITESPACE@[74; 75) " "
55 WHITESPACE@[77; 78) " " 55 FAT_ARROW@[75; 77) "=>"
56 TUPLE_EXPR@[78; 80) 56 WHITESPACE@[77; 78) " "
57 L_PAREN@[78; 79) "(" 57 TUPLE_EXPR@[78; 80)
58 R_PAREN@[79; 80) ")" 58 L_PAREN@[78; 79) "("
59 COMMA@[80; 81) "," 59 R_PAREN@[79; 80) ")"
60 WHITESPACE@[81; 90) "\n " 60 COMMA@[80; 81) ","
61 MATCH_ARM@[90; 103) 61 WHITESPACE@[81; 90) "\n "
62 LITERAL_PAT@[90; 97) 62 MATCH_ARM@[90; 103)
63 LITERAL@[90; 97) 63 LITERAL_PAT@[90; 97)
64 STRING@[90; 97) "\"hello\"" 64 LITERAL@[90; 97)
65 WHITESPACE@[97; 98) " " 65 STRING@[90; 97) "\"hello\""
66 FAT_ARROW@[98; 100) "=>" 66 WHITESPACE@[97; 98) " "
67 WHITESPACE@[100; 101) " " 67 FAT_ARROW@[98; 100) "=>"
68 TUPLE_EXPR@[101; 103) 68 WHITESPACE@[100; 101) " "
69 L_PAREN@[101; 102) "(" 69 TUPLE_EXPR@[101; 103)
70 R_PAREN@[102; 103) ")" 70 L_PAREN@[101; 102) "("
71 COMMA@[103; 104) "," 71 R_PAREN@[102; 103) ")"
72 WHITESPACE@[104; 109) "\n " 72 COMMA@[103; 104) ","
73 R_CURLY@[109; 110) "}" 73 WHITESPACE@[104; 109) "\n "
74 WHITESPACE@[110; 111) "\n" 74 R_CURLY@[109; 110) "}"
75 R_CURLY@[111; 112) "}" 75 WHITESPACE@[110; 111) "\n"
76 R_CURLY@[111; 112) "}"
76 WHITESPACE@[112; 113) "\n" 77 WHITESPACE@[112; 113) "\n"
diff --git a/crates/ra_syntax/test_data/parser/inline/ok/0056_where_clause.txt b/crates/ra_syntax/test_data/parser/inline/ok/0056_where_clause.txt
index c86a0db3f..9a9a13370 100644
--- a/crates/ra_syntax/test_data/parser/inline/ok/0056_where_clause.txt
+++ b/crates/ra_syntax/test_data/parser/inline/ok/0056_where_clause.txt
@@ -104,7 +104,8 @@ SOURCE_FILE@[0; 116)
104 TYPE_BOUND@[110; 112) 104 TYPE_BOUND@[110; 112)
105 LIFETIME@[110; 112) "\'a" 105 LIFETIME@[110; 112) "\'a"
106 WHITESPACE@[112; 113) "\n" 106 WHITESPACE@[112; 113) "\n"
107 BLOCK@[113; 115) 107 BLOCK_EXPR@[113; 115)
108 L_CURLY@[113; 114) "{" 108 BLOCK@[113; 115)
109 R_CURLY@[114; 115) "}" 109 L_CURLY@[113; 114) "{"
110 R_CURLY@[114; 115) "}"
110 WHITESPACE@[115; 116) "\n" 111 WHITESPACE@[115; 116) "\n"
diff --git a/crates/ra_syntax/test_data/parser/inline/ok/0057_const_fn.txt b/crates/ra_syntax/test_data/parser/inline/ok/0057_const_fn.txt
index 7a8b81983..9788197be 100644
--- a/crates/ra_syntax/test_data/parser/inline/ok/0057_const_fn.txt
+++ b/crates/ra_syntax/test_data/parser/inline/ok/0057_const_fn.txt
@@ -10,7 +10,8 @@ SOURCE_FILE@[0; 18)
10 L_PAREN@[12; 13) "(" 10 L_PAREN@[12; 13) "("
11 R_PAREN@[13; 14) ")" 11 R_PAREN@[13; 14) ")"
12 WHITESPACE@[14; 15) " " 12 WHITESPACE@[14; 15) " "
13 BLOCK@[15; 17) 13 BLOCK_EXPR@[15; 17)
14 L_CURLY@[15; 16) "{" 14 BLOCK@[15; 17)
15 R_CURLY@[16; 17) "}" 15 L_CURLY@[15; 16) "{"
16 R_CURLY@[16; 17) "}"
16 WHITESPACE@[17; 18) "\n" 17 WHITESPACE@[17; 18) "\n"
diff --git a/crates/ra_syntax/test_data/parser/inline/ok/0058_range_pat.txt b/crates/ra_syntax/test_data/parser/inline/ok/0058_range_pat.txt
index 1b7e9b905..3d659ce10 100644
--- a/crates/ra_syntax/test_data/parser/inline/ok/0058_range_pat.txt
+++ b/crates/ra_syntax/test_data/parser/inline/ok/0058_range_pat.txt
@@ -8,75 +8,76 @@ SOURCE_FILE@[0; 112)
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_EXPR@[10; 111)
12 L_CURLY@[10; 11) "{" 12 BLOCK@[10; 111)
13 WHITESPACE@[11; 16) "\n " 13 L_CURLY@[10; 11) "{"
14 MATCH_EXPR@[16; 109) 14 WHITESPACE@[11; 16) "\n "
15 MATCH_KW@[16; 21) "match" 15 MATCH_EXPR@[16; 109)
16 WHITESPACE@[21; 22) " " 16 MATCH_KW@[16; 21) "match"
17 LITERAL@[22; 24) 17 WHITESPACE@[21; 22) " "
18 INT_NUMBER@[22; 24) "92" 18 LITERAL@[22; 24)
19 WHITESPACE@[24; 25) " " 19 INT_NUMBER@[22; 24) "92"
20 MATCH_ARM_LIST@[25; 109) 20 WHITESPACE@[24; 25) " "
21 L_CURLY@[25; 26) "{" 21 MATCH_ARM_LIST@[25; 109)
22 WHITESPACE@[26; 35) "\n " 22 L_CURLY@[25; 26) "{"
23 MATCH_ARM@[35; 50) 23 WHITESPACE@[26; 35) "\n "
24 RANGE_PAT@[35; 44) 24 MATCH_ARM@[35; 50)
25 LITERAL_PAT@[35; 36) 25 RANGE_PAT@[35; 44)
26 LITERAL@[35; 36) 26 LITERAL_PAT@[35; 36)
27 INT_NUMBER@[35; 36) "0" 27 LITERAL@[35; 36)
28 WHITESPACE@[36; 37) " " 28 INT_NUMBER@[35; 36) "0"
29 DOTDOTDOT@[37; 40) "..." 29 WHITESPACE@[36; 37) " "
30 WHITESPACE@[40; 41) " " 30 DOTDOTDOT@[37; 40) "..."
31 LITERAL_PAT@[41; 44) 31 WHITESPACE@[40; 41) " "
32 LITERAL@[41; 44) 32 LITERAL_PAT@[41; 44)
33 INT_NUMBER@[41; 44) "100" 33 LITERAL@[41; 44)
34 WHITESPACE@[44; 45) " " 34 INT_NUMBER@[41; 44) "100"
35 FAT_ARROW@[45; 47) "=>" 35 WHITESPACE@[44; 45) " "
36 WHITESPACE@[47; 48) " " 36 FAT_ARROW@[45; 47) "=>"
37 TUPLE_EXPR@[48; 50) 37 WHITESPACE@[47; 48) " "
38 L_PAREN@[48; 49) "(" 38 TUPLE_EXPR@[48; 50)
39 R_PAREN@[49; 50) ")" 39 L_PAREN@[48; 49) "("
40 COMMA@[50; 51) "," 40 R_PAREN@[49; 50) ")"
41 WHITESPACE@[51; 60) "\n " 41 COMMA@[50; 51) ","
42 MATCH_ARM@[60; 77) 42 WHITESPACE@[51; 60) "\n "
43 RANGE_PAT@[60; 71) 43 MATCH_ARM@[60; 77)
44 LITERAL_PAT@[60; 63) 44 RANGE_PAT@[60; 71)
45 LITERAL@[60; 63) 45 LITERAL_PAT@[60; 63)
46 INT_NUMBER@[60; 63) "101" 46 LITERAL@[60; 63)
47 WHITESPACE@[63; 64) " " 47 INT_NUMBER@[60; 63) "101"
48 DOTDOTEQ@[64; 67) "..=" 48 WHITESPACE@[63; 64) " "
49 WHITESPACE@[67; 68) " " 49 DOTDOTEQ@[64; 67) "..="
50 LITERAL_PAT@[68; 71) 50 WHITESPACE@[67; 68) " "
51 LITERAL@[68; 71) 51 LITERAL_PAT@[68; 71)
52 INT_NUMBER@[68; 71) "200" 52 LITERAL@[68; 71)
53 WHITESPACE@[71; 72) " " 53 INT_NUMBER@[68; 71) "200"
54 FAT_ARROW@[72; 74) "=>" 54 WHITESPACE@[71; 72) " "
55 WHITESPACE@[74; 75) " " 55 FAT_ARROW@[72; 74) "=>"
56 TUPLE_EXPR@[75; 77) 56 WHITESPACE@[74; 75) " "
57 L_PAREN@[75; 76) "(" 57 TUPLE_EXPR@[75; 77)
58 R_PAREN@[76; 77) ")" 58 L_PAREN@[75; 76) "("
59 COMMA@[77; 78) "," 59 R_PAREN@[76; 77) ")"
60 WHITESPACE@[78; 87) "\n " 60 COMMA@[77; 78) ","
61 MATCH_ARM@[87; 102) 61 WHITESPACE@[78; 87) "\n "
62 RANGE_PAT@[87; 97) 62 MATCH_ARM@[87; 102)
63 LITERAL_PAT@[87; 90) 63 RANGE_PAT@[87; 97)
64 LITERAL@[87; 90) 64 LITERAL_PAT@[87; 90)
65 INT_NUMBER@[87; 90) "200" 65 LITERAL@[87; 90)
66 WHITESPACE@[90; 91) " " 66 INT_NUMBER@[87; 90) "200"
67 DOTDOT@[91; 93) ".." 67 WHITESPACE@[90; 91) " "
68 WHITESPACE@[93; 94) " " 68 DOTDOT@[91; 93) ".."
69 LITERAL_PAT@[94; 97) 69 WHITESPACE@[93; 94) " "
70 LITERAL@[94; 97) 70 LITERAL_PAT@[94; 97)
71 INT_NUMBER@[94; 97) "301" 71 LITERAL@[94; 97)
72 FAT_ARROW@[97; 99) "=>" 72 INT_NUMBER@[94; 97) "301"
73 WHITESPACE@[99; 100) " " 73 FAT_ARROW@[97; 99) "=>"
74 TUPLE_EXPR@[100; 102) 74 WHITESPACE@[99; 100) " "
75 L_PAREN@[100; 101) "(" 75 TUPLE_EXPR@[100; 102)
76 R_PAREN@[101; 102) ")" 76 L_PAREN@[100; 101) "("
77 COMMA@[102; 103) "," 77 R_PAREN@[101; 102) ")"
78 WHITESPACE@[103; 108) "\n " 78 COMMA@[102; 103) ","
79 R_CURLY@[108; 109) "}" 79 WHITESPACE@[103; 108) "\n "
80 WHITESPACE@[109; 110) "\n" 80 R_CURLY@[108; 109) "}"
81 R_CURLY@[110; 111) "}" 81 WHITESPACE@[109; 110) "\n"
82 R_CURLY@[110; 111) "}"
82 WHITESPACE@[111; 112) "\n" 83 WHITESPACE@[111; 112) "\n"
diff --git a/crates/ra_syntax/test_data/parser/inline/ok/0059_match_arms_commas.txt b/crates/ra_syntax/test_data/parser/inline/ok/0059_match_arms_commas.txt
index 949117134..efcd89c4c 100644
--- a/crates/ra_syntax/test_data/parser/inline/ok/0059_match_arms_commas.txt
+++ b/crates/ra_syntax/test_data/parser/inline/ok/0059_match_arms_commas.txt
@@ -8,52 +8,53 @@ SOURCE_FILE@[0; 83)
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; 82) 11 BLOCK_EXPR@[9; 82)
12 L_CURLY@[9; 10) "{" 12 BLOCK@[9; 82)
13 WHITESPACE@[10; 15) "\n " 13 L_CURLY@[9; 10) "{"
14 MATCH_EXPR@[15; 80) 14 WHITESPACE@[10; 15) "\n "
15 MATCH_KW@[15; 20) "match" 15 MATCH_EXPR@[15; 80)
16 WHITESPACE@[20; 21) " " 16 MATCH_KW@[15; 20) "match"
17 TUPLE_EXPR@[21; 23) 17 WHITESPACE@[20; 21) " "
18 L_PAREN@[21; 22) "(" 18 TUPLE_EXPR@[21; 23)
19 R_PAREN@[22; 23) ")" 19 L_PAREN@[21; 22) "("
20 WHITESPACE@[23; 24) " " 20 R_PAREN@[22; 23) ")"
21 MATCH_ARM_LIST@[24; 80) 21 WHITESPACE@[23; 24) " "
22 L_CURLY@[24; 25) "{" 22 MATCH_ARM_LIST@[24; 80)
23 WHITESPACE@[25; 34) "\n " 23 L_CURLY@[24; 25) "{"
24 MATCH_ARM@[34; 41) 24 WHITESPACE@[25; 34) "\n "
25 PLACEHOLDER_PAT@[34; 35) 25 MATCH_ARM@[34; 41)
26 UNDERSCORE@[34; 35) "_" 26 PLACEHOLDER_PAT@[34; 35)
27 WHITESPACE@[35; 36) " " 27 UNDERSCORE@[34; 35) "_"
28 FAT_ARROW@[36; 38) "=>" 28 WHITESPACE@[35; 36) " "
29 WHITESPACE@[38; 39) " " 29 FAT_ARROW@[36; 38) "=>"
30 TUPLE_EXPR@[39; 41) 30 WHITESPACE@[38; 39) " "
31 L_PAREN@[39; 40) "(" 31 TUPLE_EXPR@[39; 41)
32 R_PAREN@[40; 41) ")" 32 L_PAREN@[39; 40) "("
33 COMMA@[41; 42) "," 33 R_PAREN@[40; 41) ")"
34 WHITESPACE@[42; 51) "\n " 34 COMMA@[41; 42) ","
35 MATCH_ARM@[51; 58) 35 WHITESPACE@[42; 51) "\n "
36 PLACEHOLDER_PAT@[51; 52) 36 MATCH_ARM@[51; 58)
37 UNDERSCORE@[51; 52) "_" 37 PLACEHOLDER_PAT@[51; 52)
38 WHITESPACE@[52; 53) " " 38 UNDERSCORE@[51; 52) "_"
39 FAT_ARROW@[53; 55) "=>" 39 WHITESPACE@[52; 53) " "
40 WHITESPACE@[55; 56) " " 40 FAT_ARROW@[53; 55) "=>"
41 BLOCK_EXPR@[56; 58) 41 WHITESPACE@[55; 56) " "
42 BLOCK@[56; 58) 42 BLOCK_EXPR@[56; 58)
43 L_CURLY@[56; 57) "{" 43 BLOCK@[56; 58)
44 R_CURLY@[57; 58) "}"