aboutsummaryrefslogtreecommitdiff
path: root/crates/ra_syntax/tests/data
diff options
context:
space:
mode:
Diffstat (limited to 'crates/ra_syntax/tests/data')
-rw-r--r--crates/ra_syntax/tests/data/parser/err/0000_struct_field_missing_comma.txt24
-rw-r--r--crates/ra_syntax/tests/data/parser/err/0001_item_recovery_in_file.txt18
-rw-r--r--crates/ra_syntax/tests/data/parser/err/0002_duplicate_shebang.txt8
-rw-r--r--crates/ra_syntax/tests/data/parser/err/0003_C++_semicolon.txt30
-rw-r--r--crates/ra_syntax/tests/data/parser/err/0004_use_path_bad_segment.txt8
-rw-r--r--crates/ra_syntax/tests/data/parser/err/0005_attribute_recover.txt66
-rw-r--r--crates/ra_syntax/tests/data/parser/err/0006_named_field_recovery.txt60
-rw-r--r--crates/ra_syntax/tests/data/parser/err/0007_stray_curly_in_file.txt34
-rw-r--r--crates/ra_syntax/tests/data/parser/err/0008_item_block_recovery.txt88
-rw-r--r--crates/ra_syntax/tests/data/parser/err/0009_broken_struct_type_parameter.txt38
-rw-r--r--crates/ra_syntax/tests/data/parser/err/0010_unsafe_lambda_block.txt54
-rw-r--r--crates/ra_syntax/tests/data/parser/err/0011_extern_struct.txt12
-rw-r--r--crates/ra_syntax/tests/data/parser/err/0013_invalid_type.txt46
-rw-r--r--crates/ra_syntax/tests/data/parser/err/0014_where_no_bounds.txt26
-rw-r--r--crates/ra_syntax/tests/data/parser/err/0015_curly_in_params.txt20
-rw-r--r--crates/ra_syntax/tests/data/parser/err/0016_missing_semi.txt40
-rw-r--r--crates/ra_syntax/tests/data/parser/err/0017_incomplete_binexpr.txt42
-rw-r--r--crates/ra_syntax/tests/data/parser/err/0018_incomplete_fn.txt110
-rw-r--r--crates/ra_syntax/tests/data/parser/err/0019_let_recover.txt110
-rw-r--r--crates/ra_syntax/tests/data/parser/err/0020_fn_recover.txt20
-rw-r--r--crates/ra_syntax/tests/data/parser/err/0021_incomplete_param.txt26
-rw-r--r--crates/ra_syntax/tests/data/parser/err/0022_bad_exprs.txt146
-rw-r--r--crates/ra_syntax/tests/data/parser/err/0023_mismatched_paren.txt50
-rw-r--r--crates/ra_syntax/tests/data/parser/err/0024_many_type_parens.txt446
-rw-r--r--crates/ra_syntax/tests/data/parser/err/0025_nope.txt212
-rw-r--r--crates/ra_syntax/tests/data/parser/err/0026_imp_recovery.txt44
-rw-r--r--crates/ra_syntax/tests/data/parser/err/0027_incomplere_where_for.txt30
-rw-r--r--crates/ra_syntax/tests/data/parser/err/0028_macro_2.0.txt236
-rw-r--r--crates/ra_syntax/tests/data/parser/err/0029_field_completion.txt26
-rw-r--r--crates/ra_syntax/tests/data/parser/err/0030_string_suffixes.txt90
-rw-r--r--crates/ra_syntax/tests/data/parser/err/0031_block_inner_attrs.txt146
-rw-r--r--crates/ra_syntax/tests/data/parser/err/0032_match_arms_inner_attrs.txt228
-rw-r--r--crates/ra_syntax/tests/data/parser/err/0033_match_arms_outer_attrs.txt80
-rw-r--r--crates/ra_syntax/tests/data/parser/inline/err/0001_array_type_missing_semi.txt24
-rw-r--r--crates/ra_syntax/tests/data/parser/inline/err/0002_misplaced_label_err.txt28
-rw-r--r--crates/ra_syntax/tests/data/parser/inline/err/0003_pointer_type_no_mutability.txt20
-rw-r--r--crates/ra_syntax/tests/data/parser/inline/err/0004_impl_type.txt68
-rw-r--r--crates/ra_syntax/tests/data/parser/inline/err/0005_fn_pointer_type_missing_fn.txt22
-rw-r--r--crates/ra_syntax/tests/data/parser/inline/err/0006_unsafe_block_in_mod.txt40
-rw-r--r--crates/ra_syntax/tests/data/parser/inline/err/0007_async_without_semicolon.txt40
-rw-r--r--crates/ra_syntax/tests/data/parser/inline/err/0008_pub_expr.txt26
-rw-r--r--crates/ra_syntax/tests/data/parser/inline/err/0009_attr_on_expr_not_allowed.txt60
-rw-r--r--crates/ra_syntax/tests/data/parser/inline/ok/0001_trait_item_list.txt82
-rw-r--r--crates/ra_syntax/tests/data/parser/inline/ok/0002_use_tree_list.txt106
-rw-r--r--crates/ra_syntax/tests/data/parser/inline/ok/0003_where_pred_for.txt80
-rw-r--r--crates/ra_syntax/tests/data/parser/inline/ok/0004_value_parameters_no_patterns.txt62
-rw-r--r--crates/ra_syntax/tests/data/parser/inline/ok/0005_function_type_params.txt51
-rw-r--r--crates/ra_syntax/tests/data/parser/inline/ok/0006_self_param.txt138
-rw-r--r--crates/ra_syntax/tests/data/parser/inline/ok/0007_type_param_bounds.txt60
-rw-r--r--crates/ra_syntax/tests/data/parser/inline/ok/0008_path_part.txt112
-rw-r--r--crates/ra_syntax/tests/data/parser/inline/ok/0009_loop_expr.txt30
-rw-r--r--crates/ra_syntax/tests/data/parser/inline/ok/0010_extern_block.txt10
-rw-r--r--crates/ra_syntax/tests/data/parser/inline/ok/0011_field_expr.txt32
-rw-r--r--crates/ra_syntax/tests/data/parser/inline/ok/0012_type_item_where_clause.txt40
-rw-r--r--crates/ra_syntax/tests/data/parser/inline/ok/0013_pointer_type_mut.txt48
-rw-r--r--crates/ra_syntax/tests/data/parser/inline/ok/0014_never_type.txt16
-rw-r--r--crates/ra_syntax/tests/data/parser/inline/ok/0015_continue_expr.txt46
-rw-r--r--crates/ra_syntax/tests/data/parser/inline/ok/0016_unsafe_trait.txt16
-rw-r--r--crates/ra_syntax/tests/data/parser/inline/ok/0017_array_type.txt26
-rw-r--r--crates/ra_syntax/tests/data/parser/inline/ok/0018_arb_self_types.txt68
-rw-r--r--crates/ra_syntax/tests/data/parser/inline/ok/0019_unary_expr.txt46
-rw-r--r--crates/ra_syntax/tests/data/parser/inline/ok/0020_use_star.txt60
-rw-r--r--crates/ra_syntax/tests/data/parser/inline/ok/0021_impl_item_list.txt82
-rw-r--r--crates/ra_syntax/tests/data/parser/inline/ok/0022_crate_visibility.txt72
-rw-r--r--crates/ra_syntax/tests/data/parser/inline/ok/0023_placeholder_type.txt16
-rw-r--r--crates/ra_syntax/tests/data/parser/inline/ok/0024_slice_pat.txt50
-rw-r--r--crates/ra_syntax/tests/data/parser/inline/ok/0025_slice_type.txt22
-rw-r--r--crates/ra_syntax/tests/data/parser/inline/ok/0026_tuple_pat_fields.txt126
-rw-r--r--crates/ra_syntax/tests/data/parser/inline/ok/0027_ref_pat.txt62
-rw-r--r--crates/ra_syntax/tests/data/parser/inline/ok/0028_impl_trait_type.txt73
-rw-r--r--crates/ra_syntax/tests/data/parser/inline/ok/0029_cast_expr.rs1
-rw-r--r--crates/ra_syntax/tests/data/parser/inline/ok/0029_cast_expr.txt86
-rw-r--r--crates/ra_syntax/tests/data/parser/inline/ok/0030_cond.txt208
-rw-r--r--crates/ra_syntax/tests/data/parser/inline/ok/0031_while_expr.txt68
-rw-r--r--crates/ra_syntax/tests/data/parser/inline/ok/0032_fn_pointer_type.txt76
-rw-r--r--crates/ra_syntax/tests/data/parser/inline/ok/0033_reference_type;.txt68
-rw-r--r--crates/ra_syntax/tests/data/parser/inline/ok/0034_break_expr.txt66
-rw-r--r--crates/ra_syntax/tests/data/parser/inline/ok/0036_unsafe_extern_fn.txt28
-rw-r--r--crates/ra_syntax/tests/data/parser/inline/ok/0037_qual_paths.txt64
-rw-r--r--crates/ra_syntax/tests/data/parser/inline/ok/0038_full_range_expr.txt28
-rw-r--r--crates/ra_syntax/tests/data/parser/inline/ok/0039_type_arg.txt30
-rw-r--r--crates/ra_syntax/tests/data/parser/inline/ok/0040_crate_keyword_vis.txt62
-rw-r--r--crates/ra_syntax/tests/data/parser/inline/ok/0041_trait_item.rs1
-rw-r--r--crates/ra_syntax/tests/data/parser/inline/ok/0041_trait_item.txt144
-rw-r--r--crates/ra_syntax/tests/data/parser/inline/ok/0042_call_expr.txt126
-rw-r--r--crates/ra_syntax/tests/data/parser/inline/ok/0043_use_alias.txt96
-rw-r--r--crates/ra_syntax/tests/data/parser/inline/ok/0044_block_items.txt34
-rw-r--r--crates/ra_syntax/tests/data/parser/inline/ok/0045_param_list_opt_patterns.txt70
-rw-r--r--crates/ra_syntax/tests/data/parser/inline/ok/0046_singleton_tuple_type.txt20
-rw-r--r--crates/ra_syntax/tests/data/parser/inline/ok/0047_unsafe_default_impl.txt20
-rw-r--r--crates/ra_syntax/tests/data/parser/inline/ok/0048_path_type_with_bounds.rs1
-rw-r--r--crates/ra_syntax/tests/data/parser/inline/ok/0048_path_type_with_bounds.txt91
-rw-r--r--crates/ra_syntax/tests/data/parser/inline/ok/0049_let_stmt;.txt70
-rw-r--r--crates/ra_syntax/tests/data/parser/inline/ok/0050_fn_decl.txt26
-rw-r--r--crates/ra_syntax/tests/data/parser/inline/ok/0051_unit_type.txt18
-rw-r--r--crates/ra_syntax/tests/data/parser/inline/ok/0052_path_type.txt66
-rw-r--r--crates/ra_syntax/tests/data/parser/inline/ok/0053_path_expr.txt98
-rw-r--r--crates/ra_syntax/tests/data/parser/inline/ok/0054_field_attrs.txt46
-rw-r--r--crates/ra_syntax/tests/data/parser/inline/ok/0055_literal_pattern.txt98
-rw-r--r--crates/ra_syntax/tests/data/parser/inline/ok/0056_where_clause.txt125
-rw-r--r--crates/ra_syntax/tests/data/parser/inline/ok/0057_const_fn.txt20
-rw-r--r--crates/ra_syntax/tests/data/parser/inline/ok/0058_range_pat.txt90
-rw-r--r--crates/ra_syntax/tests/data/parser/inline/ok/0059_match_arms_commas.txt80
-rw-r--r--crates/ra_syntax/tests/data/parser/inline/ok/0060_extern_crate.txt12
-rw-r--r--crates/ra_syntax/tests/data/parser/inline/ok/0061_struct_lit.txt86
-rw-r--r--crates/ra_syntax/tests/data/parser/inline/ok/0062_mod_contents.txt62
-rw-r--r--crates/ra_syntax/tests/data/parser/inline/ok/0063_impl_block_neg.txt20
-rw-r--r--crates/ra_syntax/tests/data/parser/inline/ok/0064_if_expr.txt118
-rw-r--r--crates/ra_syntax/tests/data/parser/inline/ok/0065_dyn_trait_type.txt73
-rw-r--r--crates/ra_syntax/tests/data/parser/inline/ok/0066_match_arm.txt164
-rw-r--r--crates/ra_syntax/tests/data/parser/inline/ok/0067_crate_path.txt12
-rw-r--r--crates/ra_syntax/tests/data/parser/inline/ok/0068_union_items.txt42
-rw-r--r--crates/ra_syntax/tests/data/parser/inline/ok/0069_use_tree_list_after_path.txt32
-rw-r--r--crates/ra_syntax/tests/data/parser/inline/ok/0070_stmt_bin_expr_ambiguity.txt56
-rw-r--r--crates/ra_syntax/tests/data/parser/inline/ok/0071_match_expr.txt52
-rw-r--r--crates/ra_syntax/tests/data/parser/inline/ok/0072_return_expr.txt32
-rw-r--r--crates/ra_syntax/tests/data/parser/inline/ok/0073_type_item_type_params.txt22
-rw-r--r--crates/ra_syntax/tests/data/parser/inline/ok/0074_stmt_postfix_expr_ambiguity.txt82
-rw-r--r--crates/ra_syntax/tests/data/parser/inline/ok/0075_block.txt100
-rw-r--r--crates/ra_syntax/tests/data/parser/inline/ok/0076_function_where_clause.txt42
-rw-r--r--crates/ra_syntax/tests/data/parser/inline/ok/0077_try_expr.txt24
-rw-r--r--crates/ra_syntax/tests/data/parser/inline/ok/0078_type_item.txt14
-rw-r--r--crates/ra_syntax/tests/data/parser/inline/ok/0079_impl_block.txt12
-rw-r--r--crates/ra_syntax/tests/data/parser/inline/ok/0080_postfix_range.txt34
-rw-r--r--crates/ra_syntax/tests/data/parser/inline/ok/0081_for_type.txt172
-rw-r--r--crates/ra_syntax/tests/data/parser/inline/ok/0082_ref_expr.txt64
-rw-r--r--crates/ra_syntax/tests/data/parser/inline/ok/0083_struct_items.txt78
-rw-r--r--crates/ra_syntax/tests/data/parser/inline/ok/0084_paren_type.txt18
-rw-r--r--crates/ra_syntax/tests/data/parser/inline/ok/0085_expr_literals.txt194
-rw-r--r--crates/ra_syntax/tests/data/parser/inline/ok/0086_function_ret_type.txt42
-rw-r--r--crates/ra_syntax/tests/data/parser/inline/ok/0087_unsafe_impl.txt16
-rw-r--r--crates/ra_syntax/tests/data/parser/inline/ok/0088_break_ambiguity.txt78
-rw-r--r--crates/ra_syntax/tests/data/parser/inline/ok/0089_extern_fn.txt20
-rw-r--r--crates/ra_syntax/tests/data/parser/inline/ok/0090_type_param_default.txt18
-rw-r--r--crates/ra_syntax/tests/data/parser/inline/ok/0091_auto_trait.txt16
-rw-r--r--crates/ra_syntax/tests/data/parser/inline/ok/0092_fn_pointer_type_with_ret.txt30
-rw-r--r--crates/ra_syntax/tests/data/parser/inline/ok/0093_index_expr.txt30
-rw-r--r--crates/ra_syntax/tests/data/parser/inline/ok/0094_unsafe_auto_trait.txt20
-rw-r--r--crates/ra_syntax/tests/data/parser/inline/ok/0095_placeholder_pat.txt38
-rw-r--r--crates/ra_syntax/tests/data/parser/inline/ok/0096_no_semi_after_block.txt146
-rw-r--r--crates/ra_syntax/tests/data/parser/inline/ok/0097_default_impl.txt16
-rw-r--r--crates/ra_syntax/tests/data/parser/inline/ok/0098_const_unsafe_fn.txt24
-rw-r--r--crates/ra_syntax/tests/data/parser/inline/ok/0099_param_list.txt92
-rw-r--r--crates/ra_syntax/tests/data/parser/inline/ok/0100_for_expr.txt42
-rw-r--r--crates/ra_syntax/tests/data/parser/inline/ok/0101_unsafe_fn.txt20
-rw-r--r--crates/ra_syntax/tests/data/parser/inline/ok/0102_field_pat_list.txt156
-rw-r--r--crates/ra_syntax/tests/data/parser/inline/ok/0103_array_expr.txt60
-rw-r--r--crates/ra_syntax/tests/data/parser/inline/ok/0104_path_fn_trait_args.txt36
-rw-r--r--crates/ra_syntax/tests/data/parser/inline/ok/0105_block_expr.txt52
-rw-r--r--crates/ra_syntax/tests/data/parser/inline/ok/0106_lambda_expr.rs3
-rw-r--r--crates/ra_syntax/tests/data/parser/inline/ok/0106_lambda_expr.txt136
-rw-r--r--crates/ra_syntax/tests/data/parser/inline/ok/0107_method_call_expr.txt50
-rw-r--r--crates/ra_syntax/tests/data/parser/inline/ok/0108_tuple_expr.txt44
-rw-r--r--crates/ra_syntax/tests/data/parser/inline/ok/0109_label.txt82
-rw-r--r--crates/ra_syntax/tests/data/parser/inline/ok/0110_use_path.txt40
-rw-r--r--crates/ra_syntax/tests/data/parser/inline/ok/0111_tuple_pat.txt50
-rw-r--r--crates/ra_syntax/tests/data/parser/inline/ok/0112_bind_pat.txt172
-rw-r--r--crates/ra_syntax/tests/data/parser/inline/ok/0113_nocontentexpr.txt62
-rw-r--r--crates/ra_syntax/tests/data/parser/inline/ok/0114_tuple_struct_where.txt54
-rw-r--r--crates/ra_syntax/tests/data/parser/inline/ok/0115_pos_field_attrs.txt44
-rw-r--r--crates/ra_syntax/tests/data/parser/inline/ok/0116_trait_fn_placeholder_parameter.txt44
-rw-r--r--crates/ra_syntax/tests/data/parser/inline/ok/0117_macro_call_type.txt44
-rw-r--r--crates/ra_syntax/tests/data/parser/inline/ok/0118_impl_inner_attributes.txt44
-rw-r--r--crates/ra_syntax/tests/data/parser/inline/ok/0118_match_guard.txt58
-rw-r--r--crates/ra_syntax/tests/data/parser/inline/ok/0120_match_arms_inner_attribute.txt100
-rw-r--r--crates/ra_syntax/tests/data/parser/inline/ok/0121_match_arms_outer_attributes.txt184
-rw-r--r--crates/ra_syntax/tests/data/parser/inline/ok/0122_generic_lifetime_type_attribute.txt64
-rw-r--r--crates/ra_syntax/tests/data/parser/inline/ok/0123_param_list_vararg.txt50
-rw-r--r--crates/ra_syntax/tests/data/parser/inline/ok/0124_async_fn.txt20
-rw-r--r--crates/ra_syntax/tests/data/parser/inline/ok/0125_crate_keyword_path.txt30
-rw-r--r--crates/ra_syntax/tests/data/parser/inline/ok/0125_struct_literal_field_with_attr.txt46
-rw-r--r--crates/ra_syntax/tests/data/parser/inline/ok/0126_attr_on_expr_stmt.txt92
-rw-r--r--crates/ra_syntax/tests/data/parser/inline/ok/0127_attr_on_last_expr_in_block.txt60
-rw-r--r--crates/ra_syntax/tests/data/parser/ok/0001_struct_item.txt42
-rw-r--r--crates/ra_syntax/tests/data/parser/ok/0002_struct_item_field.txt18
-rw-r--r--crates/ra_syntax/tests/data/parser/ok/0004_file_shebang.txt2
-rw-r--r--crates/ra_syntax/tests/data/parser/ok/0005_fn_item.txt18
-rw-r--r--crates/ra_syntax/tests/data/parser/ok/0006_inner_attributes.txt212
-rw-r--r--crates/ra_syntax/tests/data/parser/ok/0007_extern_crate.txt50
-rw-r--r--crates/ra_syntax/tests/data/parser/ok/0008_mod_item.txt110
-rw-r--r--crates/ra_syntax/tests/data/parser/ok/0009_use_item.txt16
-rw-r--r--crates/ra_syntax/tests/data/parser/ok/0010_use_path_segments.txt26
-rw-r--r--crates/ra_syntax/tests/data/parser/ok/0011_outer_attribute.txt36
-rw-r--r--crates/ra_syntax/tests/data/parser/ok/0012_visibility.txt120
-rw-r--r--crates/ra_syntax/tests/data/parser/ok/0013_use_path_self_super.txt48
-rw-r--r--crates/ra_syntax/tests/data/parser/ok/0014_use_tree.txt98
-rw-r--r--crates/ra_syntax/tests/data/parser/ok/0015_use_tree.txt60
-rw-r--r--crates/ra_syntax/tests/data/parser/ok/0016_struct_flavors.txt86
-rw-r--r--crates/ra_syntax/tests/data/parser/ok/0017_attr_trailing_comma.txt30
-rw-r--r--crates/ra_syntax/tests/data/parser/ok/0018_struct_type_params.txt290
-rw-r--r--crates/ra_syntax/tests/data/parser/ok/0019_enums.txt154
-rw-r--r--crates/ra_syntax/tests/data/parser/ok/0020_type_param_bounds.rs1
-rw-r--r--crates/ra_syntax/tests/data/parser/ok/0020_type_param_bounds.txt334
-rw-r--r--crates/ra_syntax/tests/data/parser/ok/0021_extern_fn.txt74
-rw-r--r--crates/ra_syntax/tests/data/parser/ok/0022_empty_extern_block.txt28
-rw-r--r--crates/ra_syntax/tests/data/parser/ok/0023_static_items.txt40
-rw-r--r--crates/ra_syntax/tests/data/parser/ok/0024_const_item.txt40
-rw-r--r--crates/ra_syntax/tests/data/parser/ok/0025_extern_fn_in_block.txt38
-rw-r--r--crates/ra_syntax/tests/data/parser/ok/0026_const_fn_in_block.txt38
-rw-r--r--crates/ra_syntax/tests/data/parser/ok/0027_unsafe_fn_in_block.txt52
-rw-r--r--crates/ra_syntax/tests/data/parser/ok/0028_operator_binding_power.txt190
-rw-r--r--crates/ra_syntax/tests/data/parser/ok/0029_range_forms.txt138
-rw-r--r--crates/ra_syntax/tests/data/parser/ok/0030_traits.txt96
-rw-r--r--crates/ra_syntax/tests/data/parser/ok/0031_extern.txt796
-rw-r--r--crates/ra_syntax/tests/data/parser/ok/0032_where_for.txt115
-rw-r--r--crates/ra_syntax/tests/data/parser/ok/0033_label_break.txt224
-rw-r--r--crates/ra_syntax/tests/data/parser/ok/0034_crate_path_in_call.txt32
-rw-r--r--crates/ra_syntax/tests/data/parser/ok/0035_weird_exprs.txt2524
-rw-r--r--crates/ra_syntax/tests/data/parser/ok/0036_fully_qualified.txt98
-rw-r--r--crates/ra_syntax/tests/data/parser/ok/0037_mod.txt22
-rw-r--r--crates/ra_syntax/tests/data/parser/ok/0038_where_pred_type.txt44
-rw-r--r--crates/ra_syntax/tests/data/parser/ok/0039_raw_fn_item.txt18
-rw-r--r--crates/ra_syntax/tests/data/parser/ok/0040_raw_struct_item_field.txt18
-rw-r--r--crates/ra_syntax/tests/data/parser/ok/0041_raw_keywords.txt50
-rw-r--r--crates/ra_syntax/tests/data/parser/ok/0042_ufcs_call_list.txt114
-rw-r--r--crates/ra_syntax/tests/data/parser/ok/0043_complex_assignment.txt102
-rw-r--r--crates/ra_syntax/tests/data/parser/ok/0044_let_attrs.txt76
-rw-r--r--crates/ra_syntax/tests/data/parser/ok/0045_block_inner_attrs.txt236
-rw-r--r--crates/ra_syntax/tests/data/parser/ok/0046_extern_inner_attributes.txt36
-rw-r--r--crates/ra_syntax/tests/data/parser/ok/0047_minus_in_inner_pattern.txt310
-rw-r--r--crates/ra_syntax/tests/data/parser/ok/0048_compound_assignment.txt160
-rw-r--r--crates/ra_syntax/tests/data/parser/ok/0049_async_block.rs5
-rw-r--r--crates/ra_syntax/tests/data/parser/ok/0049_async_block.txt35
-rw-r--r--crates/ra_syntax/tests/data/parser/ok/0050_async_block_as_argument.rs5
-rw-r--r--crates/ra_syntax/tests/data/parser/ok/0050_async_block_as_argument.txt90
225 files changed, 9453 insertions, 8983 deletions
diff --git a/crates/ra_syntax/tests/data/parser/err/0000_struct_field_missing_comma.txt b/crates/ra_syntax/tests/data/parser/err/0000_struct_field_missing_comma.txt
index 665f7599c..21ef31ba8 100644
--- a/crates/ra_syntax/tests/data/parser/err/0000_struct_field_missing_comma.txt
+++ b/crates/ra_syntax/tests/data/parser/err/0000_struct_field_missing_comma.txt
@@ -1,34 +1,34 @@
1SOURCE_FILE@[0; 34) 1SOURCE_FILE@[0; 34)
2 STRUCT_DEF@[0; 34) 2 STRUCT_DEF@[0; 34)
3 STRUCT_KW@[0; 6) 3 STRUCT_KW@[0; 6) "struct"
4 WHITESPACE@[6; 7) 4 WHITESPACE@[6; 7) " "
5 NAME@[7; 8) 5 NAME@[7; 8)
6 IDENT@[7; 8) "S" 6 IDENT@[7; 8) "S"
7 WHITESPACE@[8; 9) 7 WHITESPACE@[8; 9) " "
8 NAMED_FIELD_DEF_LIST@[9; 34) 8 NAMED_FIELD_DEF_LIST@[9; 34)
9 L_CURLY@[9; 10) 9 L_CURLY@[9; 10) "{"
10 WHITESPACE@[10; 15) 10 WHITESPACE@[10; 15) "\n "
11 NAMED_FIELD_DEF@[15; 21) 11 NAMED_FIELD_DEF@[15; 21)
12 NAME@[15; 16) 12 NAME@[15; 16)
13 IDENT@[15; 16) "a" 13 IDENT@[15; 16) "a"
14 COLON@[16; 17) 14 COLON@[16; 17) ":"
15 WHITESPACE@[17; 18) 15 WHITESPACE@[17; 18) " "
16 PATH_TYPE@[18; 21) 16 PATH_TYPE@[18; 21)
17 PATH@[18; 21) 17 PATH@[18; 21)
18 PATH_SEGMENT@[18; 21) 18 PATH_SEGMENT@[18; 21)
19 NAME_REF@[18; 21) 19 NAME_REF@[18; 21)
20 IDENT@[18; 21) "u32" 20 IDENT@[18; 21) "u32"
21 err: `expected COMMA` 21 err: `expected COMMA`
22 WHITESPACE@[21; 26) 22 WHITESPACE@[21; 26) "\n "
23 NAMED_FIELD_DEF@[26; 32) 23 NAMED_FIELD_DEF@[26; 32)
24 NAME@[26; 27) 24 NAME@[26; 27)
25 IDENT@[26; 27) "b" 25 IDENT@[26; 27) "b"
26 COLON@[27; 28) 26 COLON@[27; 28) ":"
27 WHITESPACE@[28; 29) 27 WHITESPACE@[28; 29) " "
28 PATH_TYPE@[29; 32) 28 PATH_TYPE@[29; 32)
29 PATH@[29; 32) 29 PATH@[29; 32)
30 PATH_SEGMENT@[29; 32) 30 PATH_SEGMENT@[29; 32)
31 NAME_REF@[29; 32) 31 NAME_REF@[29; 32)
32 IDENT@[29; 32) "u32" 32 IDENT@[29; 32) "u32"
33 WHITESPACE@[32; 33) 33 WHITESPACE@[32; 33) "\n"
34 R_CURLY@[33; 34) 34 R_CURLY@[33; 34) "}"
diff --git a/crates/ra_syntax/tests/data/parser/err/0001_item_recovery_in_file.txt b/crates/ra_syntax/tests/data/parser/err/0001_item_recovery_in_file.txt
index 74743d7ad..d7762c089 100644
--- a/crates/ra_syntax/tests/data/parser/err/0001_item_recovery_in_file.txt
+++ b/crates/ra_syntax/tests/data/parser/err/0001_item_recovery_in_file.txt
@@ -1,18 +1,18 @@
1SOURCE_FILE@[0; 21) 1SOURCE_FILE@[0; 21)
2 ERROR@[0; 2) 2 ERROR@[0; 2)
3 IF_KW@[0; 2) 3 IF_KW@[0; 2) "if"
4 err: `expected an item` 4 err: `expected an item`
5 WHITESPACE@[2; 3) 5 WHITESPACE@[2; 3) " "
6 err: `expected an item` 6 err: `expected an item`
7 ERROR@[3; 8) 7 ERROR@[3; 8)
8 MATCH_KW@[3; 8) 8 MATCH_KW@[3; 8) "match"
9 WHITESPACE@[8; 10) 9 WHITESPACE@[8; 10) "\n\n"
10 STRUCT_DEF@[10; 21) 10 STRUCT_DEF@[10; 21)
11 STRUCT_KW@[10; 16) 11 STRUCT_KW@[10; 16) "struct"
12 WHITESPACE@[16; 17) 12 WHITESPACE@[16; 17) " "
13 NAME@[17; 18) 13 NAME@[17; 18)
14 IDENT@[17; 18) "S" 14 IDENT@[17; 18) "S"
15 WHITESPACE@[18; 19) 15 WHITESPACE@[18; 19) " "
16 NAMED_FIELD_DEF_LIST@[19; 21) 16 NAMED_FIELD_DEF_LIST@[19; 21)
17 L_CURLY@[19; 20) 17 L_CURLY@[19; 20) "{"
18 R_CURLY@[20; 21) 18 R_CURLY@[20; 21) "}"
diff --git a/crates/ra_syntax/tests/data/parser/err/0002_duplicate_shebang.txt b/crates/ra_syntax/tests/data/parser/err/0002_duplicate_shebang.txt
index a1f041c33..76642f43b 100644
--- a/crates/ra_syntax/tests/data/parser/err/0002_duplicate_shebang.txt
+++ b/crates/ra_syntax/tests/data/parser/err/0002_duplicate_shebang.txt
@@ -1,7 +1,7 @@
1SOURCE_FILE@[0; 42) 1SOURCE_FILE@[0; 42)
2 SHEBANG@[0; 20) 2 SHEBANG@[0; 20) "#!/use/bin/env rusti"
3 WHITESPACE@[20; 21) 3 WHITESPACE@[20; 21) "\n"
4 err: `expected an item` 4 err: `expected an item`
5 ERROR@[21; 41) 5 ERROR@[21; 41)
6 SHEBANG@[21; 41) 6 SHEBANG@[21; 41) "#!/use/bin/env rusti"
7 WHITESPACE@[41; 42) 7 WHITESPACE@[41; 42) "\n"
diff --git a/crates/ra_syntax/tests/data/parser/err/0003_C++_semicolon.txt b/crates/ra_syntax/tests/data/parser/err/0003_C++_semicolon.txt
index b87fe46bd..b52aaa368 100644
--- a/crates/ra_syntax/tests/data/parser/err/0003_C++_semicolon.txt
+++ b/crates/ra_syntax/tests/data/parser/err/0003_C++_semicolon.txt
@@ -1,39 +1,39 @@
1SOURCE_FILE@[0; 40) 1SOURCE_FILE@[0; 40)
2 STRUCT_DEF@[0; 39) 2 STRUCT_DEF@[0; 39)
3 STRUCT_KW@[0; 6) 3 STRUCT_KW@[0; 6) "struct"
4 WHITESPACE@[6; 7) 4 WHITESPACE@[6; 7) " "
5 NAME@[7; 8) 5 NAME@[7; 8)
6 IDENT@[7; 8) "S" 6 IDENT@[7; 8) "S"
7 WHITESPACE@[8; 9) 7 WHITESPACE@[8; 9) " "
8 NAMED_FIELD_DEF_LIST@[9; 39) 8 NAMED_FIELD_DEF_LIST@[9; 39)
9 L_CURLY@[9; 10) 9 L_CURLY@[9; 10) "{"
10 WHITESPACE@[10; 15) 10 WHITESPACE@[10; 15) "\n "
11 NAMED_FIELD_DEF@[15; 21) 11 NAMED_FIELD_DEF@[15; 21)
12 NAME@[15; 16) 12 NAME@[15; 16)
13 IDENT@[15; 16) "a" 13 IDENT@[15; 16) "a"
14 COLON@[16; 17) 14 COLON@[16; 17) ":"
15 WHITESPACE@[17; 18) 15 WHITESPACE@[17; 18) " "
16 PATH_TYPE@[18; 21) 16 PATH_TYPE@[18; 21)
17 PATH@[18; 21) 17 PATH@[18; 21)
18 PATH_SEGMENT@[18; 21) 18 PATH_SEGMENT@[18; 21)
19 NAME_REF@[18; 21) 19 NAME_REF@[18; 21)
20 IDENT@[18; 21) "i32" 20 IDENT@[18; 21) "i32"
21 COMMA@[21; 22) 21 COMMA@[21; 22) ","
22 WHITESPACE@[22; 27) 22 WHITESPACE@[22; 27) "\n "
23 NAMED_FIELD_DEF@[27; 36) 23 NAMED_FIELD_DEF@[27; 36)
24 NAME@[27; 28) 24 NAME@[27; 28)
25 IDENT@[27; 28) "b" 25 IDENT@[27; 28) "b"
26 COLON@[28; 29) 26 COLON@[28; 29) ":"
27 WHITESPACE@[29; 30) 27 WHITESPACE@[29; 30) " "
28 PATH_TYPE@[30; 36) 28 PATH_TYPE@[30; 36)
29 PATH@[30; 36) 29 PATH@[30; 36)
30 PATH_SEGMENT@[30; 36) 30 PATH_SEGMENT@[30; 36)
31 NAME_REF@[30; 36) 31 NAME_REF@[30; 36)
32 IDENT@[30; 36) "String" 32 IDENT@[30; 36) "String"
33 COMMA@[36; 37) 33 COMMA@[36; 37) ","
34 WHITESPACE@[37; 38) 34 WHITESPACE@[37; 38) "\n"
35 R_CURLY@[38; 39) 35 R_CURLY@[38; 39) "}"
36 err: `expected item, found `;` 36 err: `expected item, found `;`
37consider removing this semicolon` 37consider removing this semicolon`
38 ERROR@[39; 40) 38 ERROR@[39; 40)
39 SEMI@[39; 40) 39 SEMI@[39; 40) ";"
diff --git a/crates/ra_syntax/tests/data/parser/err/0004_use_path_bad_segment.txt b/crates/ra_syntax/tests/data/parser/err/0004_use_path_bad_segment.txt
index 5bdb24676..fb44f21ea 100644
--- a/crates/ra_syntax/tests/data/parser/err/0004_use_path_bad_segment.txt
+++ b/crates/ra_syntax/tests/data/parser/err/0004_use_path_bad_segment.txt
@@ -1,16 +1,16 @@
1SOURCE_FILE@[0; 12) 1SOURCE_FILE@[0; 12)
2 USE_ITEM@[0; 12) 2 USE_ITEM@[0; 12)
3 USE_KW@[0; 3) 3 USE_KW@[0; 3) "use"
4 WHITESPACE@[3; 4) 4 WHITESPACE@[3; 4) " "
5 USE_TREE@[4; 11) 5 USE_TREE@[4; 11)
6 PATH@[4; 11) 6 PATH@[4; 11)
7 PATH@[4; 7) 7 PATH@[4; 7)
8 PATH_SEGMENT@[4; 7) 8 PATH_SEGMENT@[4; 7)
9 NAME_REF@[4; 7) 9 NAME_REF@[4; 7)
10 IDENT@[4; 7) "foo" 10 IDENT@[4; 7) "foo"
11 COLONCOLON@[7; 9) 11 COLONCOLON@[7; 9) "::"
12 err: `expected identifier` 12 err: `expected identifier`
13 PATH_SEGMENT@[9; 11) 13 PATH_SEGMENT@[9; 11)
14 ERROR@[9; 11) 14 ERROR@[9; 11)
15 INT_NUMBER@[9; 11) "92" 15 INT_NUMBER@[9; 11) "92"
16 SEMI@[11; 12) 16 SEMI@[11; 12) ";"
diff --git a/crates/ra_syntax/tests/data/parser/err/0005_attribute_recover.txt b/crates/ra_syntax/tests/data/parser/err/0005_attribute_recover.txt
index 381a7d6dd..1e27522bf 100644
--- a/crates/ra_syntax/tests/data/parser/err/0005_attribute_recover.txt
+++ b/crates/ra_syntax/tests/data/parser/err/0005_attribute_recover.txt
@@ -1,55 +1,55 @@
1SOURCE_FILE@[0; 54) 1SOURCE_FILE@[0; 54)
2 FN_DEF@[0; 31) 2 FN_DEF@[0; 31)
3 ATTR@[0; 18) 3 ATTR@[0; 18)
4 POUND@[0; 1) 4 POUND@[0; 1) "#"
5 TOKEN_TREE@[1; 18) 5 TOKEN_TREE@[1; 18)
6 L_BRACK@[1; 2) 6 L_BRACK@[1; 2) "["
7 IDENT@[2; 5) "foo" 7 IDENT@[2; 5) "foo"
8 TOKEN_TREE@[5; 17) 8 TOKEN_TREE@[5; 17)
9 L_PAREN@[5; 6) 9 L_PAREN@[5; 6) "("
10 IDENT@[6; 9) "foo" 10 IDENT@[6; 9) "foo"
11 COMMA@[9; 10) 11 COMMA@[9; 10) ","
12 WHITESPACE@[10; 11) 12 WHITESPACE@[10; 11) " "
13 PLUS@[11; 12) 13 PLUS@[11; 12) "+"
14 COMMA@[12; 13) 14 COMMA@[12; 13) ","
15 WHITESPACE@[13; 14) 15 WHITESPACE@[13; 14) " "
16 INT_NUMBER@[14; 16) "92" 16 INT_NUMBER@[14; 16) "92"
17 R_PAREN@[16; 17) 17 R_PAREN@[16; 17) ")"
18 R_BRACK@[17; 18) 18 R_BRACK@[17; 18) "]"
19 WHITESPACE@[18; 19) 19 WHITESPACE@[18; 19) "\n"
20 FN_KW@[19; 21) 20 FN_KW@[19; 21) "fn"
21 WHITESPACE@[21; 22) 21 WHITESPACE@[21; 22) " "
22 NAME@[22; 25) 22 NAME@[22; 25)
23 IDENT@[22; 25) "foo" 23 IDENT@[22; 25) "foo"
24 PARAM_LIST@[25; 27) 24 PARAM_LIST@[25; 27)
25 L_PAREN@[25; 26) 25 L_PAREN@[25; 26) "("
26 R_PAREN@[26; 27) 26 R_PAREN@[26; 27) ")"
27 WHITESPACE@[27; 28) 27 WHITESPACE@[27; 28) " "
28 BLOCK@[28; 31) 28 BLOCK@[28; 31)
29 L_CURLY@[28; 29) 29 L_CURLY@[28; 29) "{"
30 WHITESPACE@[29; 30) 30 WHITESPACE@[29; 30) "\n"
31 R_CURLY@[30; 31) 31 R_CURLY@[30; 31) "}"
32 WHITESPACE@[31; 34) 32 WHITESPACE@[31; 34) "\n\n\n"
33 ATTR@[34; 53) 33 ATTR@[34; 53)
34 POUND@[34; 35) 34 POUND@[34; 35) "#"
35 TOKEN_TREE@[35; 53) 35 TOKEN_TREE@[35; 53)
36 L_BRACK@[35; 36) 36 L_BRACK@[35; 36) "["
37 IDENT@[36; 39) "foo" 37 IDENT@[36; 39) "foo"
38 TOKEN_TREE@[39; 53) 38 TOKEN_TREE@[39; 53)
39 L_PAREN@[39; 40) 39 L_PAREN@[39; 40) "("
40 WHITESPACE@[40; 41) 40 WHITESPACE@[40; 41) "\n"
41 FN_KW@[41; 43) 41 FN_KW@[41; 43) "fn"
42 WHITESPACE@[43; 44) 42 WHITESPACE@[43; 44) " "
43 IDENT@[44; 47) "foo" 43 IDENT@[44; 47) "foo"
44 TOKEN_TREE@[47; 49) 44 TOKEN_TREE@[47; 49)
45 L_PAREN@[47; 48) 45 L_PAREN@[47; 48) "("
46 R_PAREN@[48; 49) 46 R_PAREN@[48; 49) ")"
47 WHITESPACE@[49; 50) 47 WHITESPACE@[49; 50) " "
48 TOKEN_TREE@[50; 53) 48 TOKEN_TREE@[50; 53)
49 L_CURLY@[50; 51) 49 L_CURLY@[50; 51) "{"
50 WHITESPACE@[51; 52) 50 WHITESPACE@[51; 52) "\n"
51 R_CURLY@[52; 53) 51 R_CURLY@[52; 53) "}"
52 err: `expected R_PAREN` 52 err: `expected R_PAREN`
53 err: `expected R_BRACK` 53 err: `expected R_BRACK`
54 err: `expected an item` 54 err: `expected an item`
55 WHITESPACE@[53; 54) 55 WHITESPACE@[53; 54) "\n"
diff --git a/crates/ra_syntax/tests/data/parser/err/0006_named_field_recovery.txt b/crates/ra_syntax/tests/data/parser/err/0006_named_field_recovery.txt
index 02f832fb7..d47b98ed4 100644
--- a/crates/ra_syntax/tests/data/parser/err/0006_named_field_recovery.txt
+++ b/crates/ra_syntax/tests/data/parser/err/0006_named_field_recovery.txt
@@ -1,74 +1,74 @@
1SOURCE_FILE@[0; 74) 1SOURCE_FILE@[0; 74)
2 STRUCT_DEF@[0; 73) 2 STRUCT_DEF@[0; 73)
3 STRUCT_KW@[0; 6) 3 STRUCT_KW@[0; 6) "struct"
4 WHITESPACE@[6; 7) 4 WHITESPACE@[6; 7) " "
5 NAME@[7; 8) 5 NAME@[7; 8)
6 IDENT@[7; 8) "S" 6 IDENT@[7; 8) "S"
7 WHITESPACE@[8; 9) 7 WHITESPACE@[8; 9) " "
8 NAMED_FIELD_DEF_LIST@[9; 73) 8 NAMED_FIELD_DEF_LIST@[9; 73)
9 L_CURLY@[9; 10) 9 L_CURLY@[9; 10) "{"
10 WHITESPACE@[10; 15) 10 WHITESPACE@[10; 15) "\n "
11 NAMED_FIELD_DEF@[15; 21) 11 NAMED_FIELD_DEF@[15; 21)
12 NAME@[15; 16) 12 NAME@[15; 16)
13 IDENT@[15; 16) "f" 13 IDENT@[15; 16) "f"
14 COLON@[16; 17) 14 COLON@[16; 17) ":"
15 WHITESPACE@[17; 18) 15 WHITESPACE@[17; 18) " "
16 PATH_TYPE@[18; 21) 16 PATH_TYPE@[18; 21)
17 PATH@[18; 21) 17 PATH@[18; 21)
18 PATH_SEGMENT@[18; 21) 18 PATH_SEGMENT@[18; 21)
19 NAME_REF@[18; 21) 19 NAME_REF@[18; 21)
20 IDENT@[18; 21) "u32" 20 IDENT@[18; 21) "u32"
21 COMMA@[21; 22) 21 COMMA@[21; 22) ","
22 WHITESPACE@[22; 27) 22 WHITESPACE@[22; 27) "\n "
23 VISIBILITY@[27; 30) 23 VISIBILITY@[27; 30)
24 PUB_KW@[27; 30) 24 PUB_KW@[27; 30) "pub"
25 WHITESPACE@[30; 31) 25 WHITESPACE@[30; 31) " "
26 err: `expected field declaration` 26 err: `expected field declaration`
27 ERROR@[31; 33) 27 ERROR@[31; 33)
28 INT_NUMBER@[31; 33) "92" 28 INT_NUMBER@[31; 33) "92"
29 err: `expected COMMA` 29 err: `expected COMMA`
30 WHITESPACE@[33; 38) 30 WHITESPACE@[33; 38) "\n "
31 err: `expected field declaration` 31 err: `expected field declaration`
32 ERROR@[38; 39) 32 ERROR@[38; 39)
33 PLUS@[38; 39) 33 PLUS@[38; 39) "+"
34 err: `expected COMMA` 34 err: `expected COMMA`
35 WHITESPACE@[39; 40) 35 WHITESPACE@[39; 40) " "
36 err: `expected field declaration` 36 err: `expected field declaration`
37 ERROR@[40; 41) 37 ERROR@[40; 41)
38 MINUS@[40; 41) 38 MINUS@[40; 41) "-"
39 err: `expected COMMA` 39 err: `expected COMMA`
40 WHITESPACE@[41; 42) 40 WHITESPACE@[41; 42) " "
41 err: `expected field declaration` 41 err: `expected field declaration`
42 ERROR@[42; 43) 42 ERROR@[42; 43)
43 STAR@[42; 43) 43 STAR@[42; 43) "*"
44 err: `expected COMMA` 44 err: `expected COMMA`
45 WHITESPACE@[43; 48) 45 WHITESPACE@[43; 48) "\n "
46 NAMED_FIELD_DEF@[48; 58) 46 NAMED_FIELD_DEF@[48; 58)
47 VISIBILITY@[48; 51) 47 VISIBILITY@[48; 51)
48 PUB_KW@[48; 51) 48 PUB_KW@[48; 51) "pub"
49 WHITESPACE@[51; 52) 49 WHITESPACE@[51; 52) " "
50 NAME@[52; 53) 50 NAME@[52; 53)
51 IDENT@[52; 53) "x" 51 IDENT@[52; 53) "x"
52 COLON@[53; 54) 52 COLON@[53; 54) ":"
53 WHITESPACE@[54; 55) 53 WHITESPACE@[54; 55) " "
54 PATH_TYPE@[55; 58) 54 PATH_TYPE@[55; 58)
55 PATH@[55; 58) 55 PATH@[55; 58)
56 PATH_SEGMENT@[55; 58) 56 PATH_SEGMENT@[55; 58)
57 NAME_REF@[55; 58) 57 NAME_REF@[55; 58)
58 IDENT@[55; 58) "u32" 58 IDENT@[55; 58) "u32"
59 COMMA@[58; 59) 59 COMMA@[58; 59) ","
60 WHITESPACE@[59; 64) 60 WHITESPACE@[59; 64) "\n "
61 NAMED_FIELD_DEF@[64; 70) 61 NAMED_FIELD_DEF@[64; 70)
62 NAME@[64; 65) 62 NAME@[64; 65)
63 IDENT@[64; 65) "z" 63 IDENT@[64; 65) "z"
64 COLON@[65; 66) 64 COLON@[65; 66) ":"
65 WHITESPACE@[66; 67) 65 WHITESPACE@[66; 67) " "
66 PATH_TYPE@[67; 70) 66 PATH_TYPE@[67; 70)
67 PATH@[67; 70) 67 PATH@[67; 70)
68 PATH_SEGMENT@[67; 70) 68 PATH_SEGMENT@[67; 70)
69 NAME_REF@[67; 70) 69 NAME_REF@[67; 70)
70 IDENT@[67; 70) "f64" 70 IDENT@[67; 70) "f64"
71 COMMA@[70; 71) 71 COMMA@[70; 71) ","
72 WHITESPACE@[71; 72) 72 WHITESPACE@[71; 72) "\n"
73 R_CURLY@[72; 73) 73 R_CURLY@[72; 73) "}"
74 WHITESPACE@[73; 74) 74 WHITESPACE@[73; 74) "\n"
diff --git a/crates/ra_syntax/tests/data/parser/err/0007_stray_curly_in_file.txt b/crates/ra_syntax/tests/data/parser/err/0007_stray_curly_in_file.txt
index d46f753ad..94066ed05 100644
--- a/crates/ra_syntax/tests/data/parser/err/0007_stray_curly_in_file.txt
+++ b/crates/ra_syntax/tests/data/parser/err/0007_stray_curly_in_file.txt
@@ -1,32 +1,32 @@
1SOURCE_FILE@[0; 31) 1SOURCE_FILE@[0; 31)
2 ERROR@[0; 1) 2 ERROR@[0; 1)
3 R_CURLY@[0; 1) 3 R_CURLY@[0; 1) "}"
4 err: `unmatched `}`` 4 err: `unmatched `}``
5 WHITESPACE@[1; 3) 5 WHITESPACE@[1; 3) "\n\n"
6 STRUCT_DEF@[3; 12) 6 STRUCT_DEF@[3; 12)
7 STRUCT_KW@[3; 9) 7 STRUCT_KW@[3; 9) "struct"
8 WHITESPACE@[9; 10) 8 WHITESPACE@[9; 10) " "
9 NAME@[10; 11) 9 NAME@[10; 11)
10 IDENT@[10; 11) "S" 10 IDENT@[10; 11) "S"
11 SEMI@[11; 12) 11 SEMI@[11; 12) ";"
12 WHITESPACE@[12; 14) 12 WHITESPACE@[12; 14) "\n\n"
13 err: `unmatched `}`` 13 err: `unmatched `}``
14 ERROR@[14; 15) 14 ERROR@[14; 15)
15 R_CURLY@[14; 15) 15 R_CURLY@[14; 15) "}"
16 WHITESPACE@[15; 17) 16 WHITESPACE@[15; 17) "\n\n"
17 FN_DEF@[17; 27) 17 FN_DEF@[17; 27)
18 FN_KW@[17; 19) 18 FN_KW@[17; 19) "fn"
19 WHITESPACE@[19; 20) 19 WHITESPACE@[19; 20) " "
20 NAME@[20; 23) 20 NAME@[20; 23)
21 IDENT@[20; 23) "foo" 21 IDENT@[20; 23) "foo"
22 PARAM_LIST@[23; 25) 22 PARAM_LIST@[23; 25)
23 L_PAREN@[23; 24) 23 L_PAREN@[23; 24) "("
24 R_PAREN@[24; 25) 24 R_PAREN@[24; 25) ")"
25 BLOCK@[25; 27) 25 BLOCK@[25; 27)
26 L_CURLY@[25; 26) 26 L_CURLY@[25; 26) "{"
27 R_CURLY@[26; 27) 27 R_CURLY@[26; 27) "}"
28 WHITESPACE@[27; 29) 28 WHITESPACE@[27; 29) "\n\n"
29 err: `unmatched `}`` 29 err: `unmatched `}``
30 ERROR@[29; 30) 30 ERROR@[29; 30)
31 R_CURLY@[29; 30) 31 R_CURLY@[29; 30) "}"
32 WHITESPACE@[30; 31) 32 WHITESPACE@[30; 31) "\n"
diff --git a/crates/ra_syntax/tests/data/parser/err/0008_item_block_recovery.txt b/crates/ra_syntax/tests/data/parser/err/0008_item_block_recovery.txt
index 870c818ae..6f5a27856 100644
--- a/crates/ra_syntax/tests/data/parser/err/0008_item_block_recovery.txt
+++ b/crates/ra_syntax/tests/data/parser/err/0008_item_block_recovery.txt
@@ -1,18 +1,18 @@
1SOURCE_FILE@[0; 95) 1SOURCE_FILE@[0; 95)
2 FN_DEF@[0; 12) 2 FN_DEF@[0; 12)
3 FN_KW@[0; 2) 3 FN_KW@[0; 2) "fn"
4 WHITESPACE@[2; 3) 4 WHITESPACE@[2; 3) " "
5 NAME@[3; 6) 5 NAME@[3; 6)
6 IDENT@[3; 6) "foo" 6 IDENT@[3; 6) "foo"
7 PARAM_LIST@[6; 8) 7 PARAM_LIST@[6; 8)
8 L_PAREN@[6; 7) 8 L_PAREN@[6; 7) "("
9 R_PAREN@[7; 8) 9 R_PAREN@[7; 8) ")"
10 WHITESPACE@[8; 9) 10 WHITESPACE@[8; 9) " "
11 BLOCK@[9; 12) 11 BLOCK@[9; 12)
12 L_CURLY@[9; 10) 12 L_CURLY@[9; 10) "{"
13 WHITESPACE@[10; 11) 13 WHITESPACE@[10; 11) "\n"
14 R_CURLY@[11; 12) 14 R_CURLY@[11; 12) "}"
15 WHITESPACE@[12; 14) 15 WHITESPACE@[12; 14) "\n\n"
16 MACRO_CALL@[14; 19) 16 MACRO_CALL@[14; 19)
17 PATH@[14; 17) 17 PATH@[14; 17)
18 PATH_SEGMENT@[14; 17) 18 PATH_SEGMENT@[14; 17)
@@ -20,58 +20,58 @@ SOURCE_FILE@[0; 95)
20 IDENT@[14; 17) "bar" 20 IDENT@[14; 17) "bar"
21 err: `expected EXCL` 21 err: `expected EXCL`
22 TOKEN_TREE@[17; 19) 22 TOKEN_TREE@[17; 19)
23 L_PAREN@[17; 18) 23 L_PAREN@[17; 18) "("
24 R_PAREN@[18; 19) 24 R_PAREN@[18; 19) ")"
25 err: `expected SEMI` 25 err: `expected SEMI`
26 WHITESPACE@[19; 20) 26 WHITESPACE@[19; 20) " "
27 err: `expected an item` 27 err: `expected an item`
28 ERROR@[20; 80) 28 ERROR@[20; 80)
29 L_CURLY@[20; 21) 29 L_CURLY@[20; 21) "{"
30 WHITESPACE@[21; 26) 30 WHITESPACE@[21; 26) "\n "
31 IF_EXPR@[26; 78) 31 IF_EXPR@[26; 78)
32 IF_KW@[26; 28) 32 IF_KW@[26; 28) "if"
33 WHITESPACE@[28; 29) 33 WHITESPACE@[28; 29) " "
34 CONDITION@[29; 33) 34 CONDITION@[29; 33)
35 LITERAL@[29; 33) 35 LITERAL@[29; 33)
36 TRUE_KW@[29; 33) 36 TRUE_KW@[29; 33) "true"
37 WHITESPACE@[33; 34) 37 WHITESPACE@[33; 34) " "
38 BLOCK@[34; 51) 38 BLOCK@[34; 51)
39 L_CURLY@[34; 35) 39 L_CURLY@[34; 35) "{"
40 WHITESPACE@[35; 44) 40 WHITESPACE@[35; 44) "\n "
41 LITERAL@[44; 45) 41 LITERAL@[44; 45)
42 INT_NUMBER@[44; 45) "1" 42 INT_NUMBER@[44; 45) "1"
43 WHITESPACE@[45; 50) 43 WHITESPACE@[45; 50) "\n "
44 R_CURLY@[50; 51) 44 R_CURLY@[50; 51) "}"
45 WHITESPACE@[51; 52) 45 WHITESPACE@[51; 52) " "
46 ELSE_KW@[52; 56) 46 ELSE_KW@[52; 56) "else"
47 WHITESPACE@[56; 57) 47 WHITESPACE@[56; 57) " "
48 BLOCK@[57; 78) 48 BLOCK@[57; 78)
49 L_CURLY@[57; 58) 49 L_CURLY@[57; 58) "{"
50 WHITESPACE@[58; 67) 50 WHITESPACE@[58; 67) "\n "
51 BIN_EXPR@[67; 72) 51 BIN_EXPR@[67; 72)
52 LITERAL@[67; 68) 52 LITERAL@[67; 68)
53 INT_NUMBER@[67; 68) "2" 53 INT_NUMBER@[67; 68) "2"
54 WHITESPACE@[68; 69) 54 WHITESPACE@[68; 69) " "
55 PLUS@[69; 70) 55 PLUS@[69; 70) "+"
56 WHITESPACE@[70; 71) 56 WHITESPACE@[70; 71) " "
57 LITERAL@[71; 72) 57 LITERAL@[71; 72)
58 INT_NUMBER@[71; 72) "3" 58 INT_NUMBER@[71; 72) "3"
59 WHITESPACE@[72; 77) 59 WHITESPACE@[72; 77) "\n "
60 R_CURLY@[77; 78) 60 R_CURLY@[77; 78) "}"
61 WHITESPACE@[78; 79) 61 WHITESPACE@[78; 79) "\n"
62 R_CURLY@[79; 80) 62 R_CURLY@[79; 80) "}"
63 WHITESPACE@[80; 82) 63 WHITESPACE@[80; 82) "\n\n"
64 FN_DEF@[82; 94) 64 FN_DEF@[82; 94)
65 FN_KW@[82; 84) 65 FN_KW@[82; 84) "fn"
66 WHITESPACE@[84; 85) 66 WHITESPACE@[84; 85) " "
67 NAME@[85; 88) 67 NAME@[85; 88)
68 IDENT@[85; 88) "baz" 68 IDENT@[85; 88) "baz"
69 PARAM_LIST@[88; 90) 69 PARAM_LIST@[88; 90)
70 L_PAREN@[88; 89) 70 L_PAREN@[88; 89) "("
71 R_PAREN@[89; 90) 71 R_PAREN@[89; 90) ")"
72 WHITESPACE@[90; 91) 72 WHITESPACE@[90; 91) " "
73 BLOCK@[91; 94) 73 BLOCK@[91; 94)
74 L_CURLY@[91; 92) 74 L_CURLY@[91; 92) "{"
75 WHITESPACE@[92; 93) 75 WHITESPACE@[92; 93) "\n"
76 R_CURLY@[93; 94) 76 R_CURLY@[93; 94) "}"
77 WHITESPACE@[94; 95) 77 WHITESPACE@[94; 95) "\n"
diff --git a/crates/ra_syntax/tests/data/parser/err/0009_broken_struct_type_parameter.txt b/crates/ra_syntax/tests/data/parser/err/0009_broken_struct_type_parameter.txt
index 26c5d395c..80568b5bd 100644
--- a/crates/ra_syntax/tests/data/parser/err/0009_broken_struct_type_parameter.txt
+++ b/crates/ra_syntax/tests/data/parser/err/0009_broken_struct_type_parameter.txt
@@ -1,33 +1,33 @@
1SOURCE_FILE@[0; 43) 1SOURCE_FILE@[0; 43)
2 STRUCT_DEF@[0; 11) 2 STRUCT_DEF@[0; 11)
3 STRUCT_KW@[0; 6) 3 STRUCT_KW@[0; 6) "struct"
4 WHITESPACE@[6; 7) 4 WHITESPACE@[6; 7) " "
5 NAME@[7; 8) 5 NAME@[7; 8)
6 IDENT@[7; 8) "S" 6 IDENT@[7; 8) "S"
7 TYPE_PARAM_LIST@[8; 11) 7 TYPE_PARAM_LIST@[8; 11)
8 L_ANGLE@[8; 9) 8 L_ANGLE@[8; 9) "<"
9 err: `expected type parameter` 9 err: `expected type parameter`
10 ERROR@[9; 11) 10 ERROR@[9; 11)
11 INT_NUMBER@[9; 11) "90" 11 INT_NUMBER@[9; 11) "90"
12 err: `expected COMMA` 12 err: `expected COMMA`
13 err: `expected R_ANGLE` 13 err: `expected R_ANGLE`
14 err: `expected `;`, `{`, or `(`` 14 err: `expected `;`, `{`, or `(``
15 WHITESPACE@[11; 12) 15 WHITESPACE@[11; 12) " "
16 err: `expected an item` 16 err: `expected an item`
17 ERROR@[12; 13) 17 ERROR@[12; 13)
18 PLUS@[12; 13) 18 PLUS@[12; 13) "+"
19 WHITESPACE@[13; 14) 19 WHITESPACE@[13; 14) " "
20 err: `expected an item` 20 err: `expected an item`
21 ERROR@[14; 15) 21 ERROR@[14; 15)
22 INT_NUMBER@[14; 15) "2" 22 INT_NUMBER@[14; 15) "2"
23 err: `expected an item` 23 err: `expected an item`
24 ERROR@[15; 16) 24 ERROR@[15; 16)
25 R_ANGLE@[15; 16) 25 R_ANGLE@[15; 16) ">"
26 WHITESPACE@[16; 17) 26 WHITESPACE@[16; 17) " "
27 err: `expected an item` 27 err: `expected an item`
28 ERROR@[17; 31) 28 ERROR@[17; 31)
29 L_CURLY@[17; 18) 29 L_CURLY@[17; 18) "{"
30 WHITESPACE@[18; 23) 30 WHITESPACE@[18; 23) "\n "
31 EXPR_STMT@[23; 24) 31 EXPR_STMT@[23; 24)
32 PATH_EXPR@[23; 24) 32 PATH_EXPR@[23; 24)
33 PATH@[23; 24) 33 PATH@[23; 24)
@@ -38,21 +38,21 @@ SOURCE_FILE@[0; 43)
38 err: `expected expression` 38 err: `expected expression`
39 EXPR_STMT@[24; 25) 39 EXPR_STMT@[24; 25)
40 ERROR@[24; 25) 40 ERROR@[24; 25)
41 COLON@[24; 25) 41 COLON@[24; 25) ":"
42 err: `expected SEMI` 42 err: `expected SEMI`
43 WHITESPACE@[25; 26) 43 WHITESPACE@[25; 26) " "
44 PATH_EXPR@[26; 29) 44 PATH_EXPR@[26; 29)
45 PATH@[26; 29) 45 PATH@[26; 29)
46 PATH_SEGMENT@[26; 29) 46 PATH_SEGMENT@[26; 29)
47 NAME_REF@[26; 29) 47 NAME_REF@[26; 29)
48 IDENT@[26; 29) "u32" 48 IDENT@[26; 29) "u32"
49 WHITESPACE@[29; 30) 49 WHITESPACE@[29; 30) "\n"
50 R_CURLY@[30; 31) 50 R_CURLY@[30; 31) "}"
51 WHITESPACE@[31; 33) 51 WHITESPACE@[31; 33) "\n\n"
52 STRUCT_DEF@[33; 42) 52 STRUCT_DEF@[33; 42)
53 STRUCT_KW@[33; 39) 53 STRUCT_KW@[33; 39) "struct"
54 WHITESPACE@[39; 40) 54 WHITESPACE@[39; 40) " "
55 NAME@[40; 41) 55 NAME@[40; 41)
56 IDENT@[40; 41) "T" 56 IDENT@[40; 41) "T"
57 SEMI@[41; 42) 57 SEMI@[41; 42) ";"
58 WHITESPACE@[42; 43) 58 WHITESPACE@[42; 43) "\n"
diff --git a/crates/ra_syntax/tests/data/parser/err/0010_unsafe_lambda_block.txt b/crates/ra_syntax/tests/data/parser/err/0010_unsafe_lambda_block.txt
index e6794a2a0..36982085a 100644
--- a/crates/ra_syntax/tests/data/parser/err/0010_unsafe_lambda_block.txt
+++ b/crates/ra_syntax/tests/data/parser/err/0010_unsafe_lambda_block.txt
@@ -1,42 +1,42 @@
1SOURCE_FILE@[0; 42) 1SOURCE_FILE@[0; 42)
2 FN_DEF@[0; 41) 2 FN_DEF@[0; 41)
3 FN_KW@[0; 2) 3 FN_KW@[0; 2) "fn"
4 WHITESPACE@[2; 3) 4 WHITESPACE@[2; 3) " "
5 NAME@[3; 7) 5 NAME@[3; 7)
6 IDENT@[3; 7) "main" 6 IDENT@[3; 7) "main"
7 PARAM_LIST@[7; 9) 7 PARAM_LIST@[7; 9)
8 L_PAREN@[7; 8) 8 L_PAREN@[7; 8) "("
9 R_PAREN@[8; 9) 9 R_PAREN@[8; 9) ")"
10 WHITESPACE@[9; 10) 10 WHITESPACE@[9; 10) " "
11 BLOCK@[10; 41) 11 BLOCK@[10; 41)
12 L_CURLY@[10; 11) 12 L_CURLY@[10; 11) "{"
13 WHITESPACE@[11; 16) 13 WHITESPACE@[11; 16) "\n "
14 EXPR_STMT@[16; 39) 14 EXPR_STMT@[16; 39)
15 LAMBDA_EXPR@[16; 38) 15 LAMBDA_EXPR@[16; 38)
16 PARAM_LIST@[16; 18) 16 PARAM_LIST@[16; 18)
17 PIPE@[16; 17) 17 PIPE@[16; 17) "|"
18 PIPE@[17; 18) 18 PIPE@[17; 18) "|"
19 WHITESPACE@[18; 19) 19 WHITESPACE@[18; 19) " "
20 RET_TYPE@[19; 24) 20 RET_TYPE@[19; 24)
21 THIN_ARROW@[19; 21) 21 THIN_ARROW@[19; 21) "->"
22 WHITESPACE@[21; 22) 22 WHITESPACE@[21; 22) " "
23 TUPLE_TYPE@[22; 24) 23 TUPLE_TYPE@[22; 24)
24 L_PAREN@[22; 23) 24 L_PAREN@[22; 23) "("
25 R_PAREN@[23; 24) 25 R_PAREN@[23; 24) ")"
26 err: `expected `{`` 26 err: `expected `{``
27 WHITESPACE@[24; 25) 27 WHITESPACE@[24; 25) " "
28 BLOCK_EXPR@[25; 38) 28 BLOCK_EXPR@[25; 38)
29 UNSAFE_KW@[25; 31) 29 UNSAFE_KW@[25; 31) "unsafe"
30 WHITESPACE@[31; 32) 30 WHITESPACE@[31; 32) " "
31 BLOCK@[32; 38) 31 BLOCK@[32; 38)
32 L_CURLY@[32; 33) 32 L_CURLY@[32; 33) "{"
33 WHITESPACE@[33; 34) 33 WHITESPACE@[33; 34) " "
34 TUPLE_EXPR@[34; 36) 34 TUPLE_EXPR@[34; 36)
35 L_PAREN@[34; 35) 35 L_PAREN@[34; 35) "("
36 R_PAREN@[35; 36) 36 R_PAREN@[35; 36) ")"
37 WHITESPACE@[36; 37) 37 WHITESPACE@[36; 37) " "
38 R_CURLY@[37; 38) 38 R_CURLY@[37; 38) "}"
39 SEMI@[38; 39) 39 SEMI@[38; 39) ";"
40 WHITESPACE@[39; 40) 40 WHITESPACE@[39; 40) "\n"
41 R_CURLY@[40; 41) 41 R_CURLY@[40; 41) "}"
42 WHITESPACE@[41; 42) 42 WHITESPACE@[41; 42) "\n"
diff --git a/crates/ra_syntax/tests/data/parser/err/0011_extern_struct.txt b/crates/ra_syntax/tests/data/parser/err/0011_extern_struct.txt
index a65cecde5..3fb0a77ef 100644
--- a/crates/ra_syntax/tests/data/parser/err/0011_extern_struct.txt
+++ b/crates/ra_syntax/tests/data/parser/err/0011_extern_struct.txt
@@ -1,13 +1,13 @@
1SOURCE_FILE@[0; 19) 1SOURCE_FILE@[0; 19)
2 ERROR@[0; 6) 2 ERROR@[0; 6)
3 ABI@[0; 6) 3 ABI@[0; 6)
4 EXTERN_KW@[0; 6) 4 EXTERN_KW@[0; 6) "extern"
5 err: `expected fn, trait or impl` 5 err: `expected fn, trait or impl`
6 WHITESPACE@[6; 7) 6 WHITESPACE@[6; 7) " "
7 STRUCT_DEF@[7; 18) 7 STRUCT_DEF@[7; 18)
8 STRUCT_KW@[7; 13) 8 STRUCT_KW@[7; 13) "struct"
9 WHITESPACE@[13; 14) 9 WHITESPACE@[13; 14) " "
10 NAME@[14; 17) 10 NAME@[14; 17)
11 IDENT@[14; 17) "Foo" 11 IDENT@[14; 17) "Foo"
12 SEMI@[17; 18) 12 SEMI@[17; 18) ";"
13 WHITESPACE@[18; 19) 13 WHITESPACE@[18; 19) "\n"
diff --git a/crates/ra_syntax/tests/data/parser/err/0013_invalid_type.txt b/crates/ra_syntax/tests/data/parser/err/0013_invalid_type.txt
index 1ec15194c..47b992b0a 100644
--- a/crates/ra_syntax/tests/data/parser/err/0013_invalid_type.txt
+++ b/crates/ra_syntax/tests/data/parser/err/0013_invalid_type.txt
@@ -1,15 +1,15 @@
1SOURCE_FILE@[0; 86) 1SOURCE_FILE@[0; 86)
2 STRUCT_DEF@[0; 72) 2 STRUCT_DEF@[0; 72)
3 VISIBILITY@[0; 3) 3 VISIBILITY@[0; 3)
4 PUB_KW@[0; 3) 4 PUB_KW@[0; 3) "pub"
5 WHITESPACE@[3; 4) 5 WHITESPACE@[3; 4) " "
6 STRUCT_KW@[4; 10) 6 STRUCT_KW@[4; 10) "struct"
7 WHITESPACE@[10; 11) 7 WHITESPACE@[10; 11) " "
8 NAME@[11; 16) 8 NAME@[11; 16)
9 IDENT@[11; 16) "Cache" 9 IDENT@[11; 16) "Cache"
10 POS_FIELD_DEF_LIST@[16; 72) 10 POS_FIELD_DEF_LIST@[16; 72)
11 L_PAREN@[16; 17) 11 L_PAREN@[16; 17) "("
12 WHITESPACE@[17; 22) 12 WHITESPACE@[17; 22) "\n "
13 POS_FIELD_DEF@[22; 68) 13 POS_FIELD_DEF@[22; 68)
14 PATH_TYPE@[22; 68) 14 PATH_TYPE@[22; 68)
15 PATH@[22; 68) 15 PATH@[22; 68)
@@ -17,7 +17,7 @@ SOURCE_FILE@[0; 86)
17 NAME_REF@[22; 29) 17 NAME_REF@[22; 29)
18 IDENT@[22; 29) "RefCell" 18 IDENT@[22; 29) "RefCell"
19 TYPE_ARG_LIST@[29; 68) 19 TYPE_ARG_LIST@[29; 68)
20 L_ANGLE@[29; 30) 20 L_ANGLE@[29; 30) "<"
21 TYPE_ARG@[30; 68) 21 TYPE_ARG@[30; 68)
22 PATH_TYPE@[30; 68) 22 PATH_TYPE@[30; 68)
23 PATH@[30; 68) 23 PATH@[30; 68)
@@ -25,16 +25,16 @@ SOURCE_FILE@[0; 86)
25 NAME_REF@[30; 37) 25 NAME_REF@[30; 37)
26 IDENT@[30; 37) "HashMap" 26 IDENT@[30; 37) "HashMap"
27 TYPE_ARG_LIST@[37; 68) 27 TYPE_ARG_LIST@[37; 68)
28 L_ANGLE@[37; 38) 28 L_ANGLE@[37; 38) "<"
29 WHITESPACE@[38; 47) 29 WHITESPACE@[38; 47) "\n "
30 TYPE_ARG@[47; 53) 30 TYPE_ARG@[47; 53)
31 PATH_TYPE@[47; 53) 31 PATH_TYPE@[47; 53)
32 PATH@[47; 53) 32 PATH@[47; 53)
33 PATH_SEGMENT@[47; 53) 33 PATH_SEGMENT@[47; 53)
34 NAME_REF@[47; 53) 34 NAME_REF@[47; 53)
35 IDENT@[47; 53) "TypeId" 35 IDENT@[47; 53) "TypeId"
36 COMMA@[53; 54) 36 COMMA@[53; 54) ","
37 WHITESPACE@[54; 63) 37 WHITESPACE@[54; 63) "\n "
38 TYPE_ARG@[63; 68) 38 TYPE_ARG@[63; 68)
39 PATH_TYPE@[63; 68) 39 PATH_TYPE@[63; 68)
40 PATH@[63; 68) 40 PATH@[63; 68)
@@ -42,11 +42,11 @@ SOURCE_FILE@[0; 86)
42 NAME_REF@[63; 66) 42 NAME_REF@[63; 66)
43 IDENT@[63; 66) "Box" 43 IDENT@[63; 66) "Box"
44 TYPE_ARG_LIST@[66; 68) 44 TYPE_ARG_LIST@[66; 68)
45 L_ANGLE@[66; 67) 45 L_ANGLE@[66; 67) "<"
46 err: `expected type` 46 err: `expected type`
47 TYPE_ARG@[67; 68) 47 TYPE_ARG@[67; 68)
48 ERROR@[67; 68) 48 ERROR@[67; 68)
49 AT@[67; 68) 49 AT@[67; 68) "@"
50 err: `expected COMMA` 50 err: `expected COMMA`
51 err: `expected R_ANGLE` 51 err: `expected R_ANGLE`
52 err: `expected COMMA` 52 err: `expected COMMA`
@@ -54,7 +54,7 @@ SOURCE_FILE@[0; 86)
54 err: `expected COMMA` 54 err: `expected COMMA`
55 err: `expected R_ANGLE` 55 err: `expected R_ANGLE`
56 err: `expected COMMA` 56 err: `expected COMMA`
57 WHITESPACE@[68; 69) 57 WHITESPACE@[68; 69) " "
58 POS_FIELD_DEF@[69; 72) 58 POS_FIELD_DEF@[69; 72)
59 PATH_TYPE@[69; 72) 59 PATH_TYPE@[69; 72)
60 PATH@[69; 72) 60 PATH@[69; 72)
@@ -68,22 +68,22 @@ SOURCE_FILE@[0; 86)
68 err: `expected an item` 68 err: `expected an item`
69 ERROR@[72; 72) 69 ERROR@[72; 72)
70 ERROR@[72; 73) 70 ERROR@[72; 73)
71 R_ANGLE@[72; 73) 71 R_ANGLE@[72; 73) ">"
72 err: `expected an item` 72 err: `expected an item`
73 ERROR@[73; 74) 73 ERROR@[73; 74)
74 COMMA@[73; 74) 74 COMMA@[73; 74) ","
75 WHITESPACE@[74; 79) 75 WHITESPACE@[74; 79) "\n "
76 err: `expected an item` 76 err: `expected an item`
77 ERROR@[79; 80) 77 ERROR@[79; 80)
78 R_ANGLE@[79; 80) 78 R_ANGLE@[79; 80) ">"
79 err: `expected an item` 79 err: `expected an item`
80 ERROR@[80; 81) 80 ERROR@[80; 81)
81 R_ANGLE@[80; 81) 81 R_ANGLE@[80; 81) ">"
82 WHITESPACE@[81; 82) 82 WHITESPACE@[81; 82) "\n"
83 err: `expected an item` 83 err: `expected an item`
84 ERROR@[82; 83) 84 ERROR@[82; 83)
85 R_PAREN@[82; 83) 85 R_PAREN@[82; 83) ")"
86 err: `expected an item` 86 err: `expected an item`
87 ERROR@[83; 84) 87 ERROR@[83; 84)
88 SEMI@[83; 84) 88 SEMI@[83; 84) ";"
89 WHITESPACE@[84; 86) 89 WHITESPACE@[84; 86) "\n\n"
diff --git a/crates/ra_syntax/tests/data/parser/err/0014_where_no_bounds.txt b/crates/ra_syntax/tests/data/parser/err/0014_where_no_bounds.txt
index a81772764..52ad7bef7 100644
--- a/crates/ra_syntax/tests/data/parser/err/0014_where_no_bounds.txt
+++ b/crates/ra_syntax/tests/data/parser/err/0014_where_no_bounds.txt
@@ -1,22 +1,22 @@
1SOURCE_FILE@[0; 23) 1SOURCE_FILE@[0; 23)
2 FN_DEF@[0; 22) 2 FN_DEF@[0; 22)
3 FN_KW@[0; 2) 3 FN_KW@[0; 2) "fn"
4 WHITESPACE@[2; 3) 4 WHITESPACE@[2; 3) " "
5 NAME@[3; 6) 5 NAME@[3; 6)
6 IDENT@[3; 6) "foo" 6 IDENT@[3; 6) "foo"
7 TYPE_PARAM_LIST@[6; 9) 7 TYPE_PARAM_LIST@[6; 9)
8 L_ANGLE@[6; 7) 8 L_ANGLE@[6; 7) "<"
9 TYPE_PARAM@[7; 8) 9 TYPE_PARAM@[7; 8)
10 NAME@[7; 8) 10 NAME@[7; 8)
11 IDENT@[7; 8) "T" 11 IDENT@[7; 8) "T"
12 R_ANGLE@[8; 9) 12 R_ANGLE@[8; 9) ">"
13 PARAM_LIST@[9; 11) 13 PARAM_LIST@[9; 11)
14 L_PAREN@[9; 10) 14 L_PAREN@[9; 10) "("
15 R_PAREN@[10; 11) 15 R_PAREN@[10; 11) ")"
16 WHITESPACE@[11; 12) 16 WHITESPACE@[11; 12) " "
17 WHERE_CLAUSE@[12; 19) 17 WHERE_CLAUSE@[12; 19)
18 WHERE_KW@[12; 17) 18 WHERE_KW@[12; 17) "where"
19 WHITESPACE@[17; 18) 19 WHITESPACE@[17; 18) " "
20 WHERE_PRED@[18; 19) 20 WHERE_PRED@[18; 19)
21 PATH_TYPE@[18; 19) 21 PATH_TYPE@[18; 19)
22 PATH@[18; 19) 22 PATH@[18; 19)
@@ -24,8 +24,8 @@ SOURCE_FILE@[0; 23)
24 NAME_REF@[18; 19) 24 NAME_REF@[18; 19)
25 IDENT@[18; 19) "T" 25 IDENT@[18; 19) "T"
26 err: `expected colon` 26 err: `expected colon`
27 WHITESPACE@[19; 20) 27 WHITESPACE@[19; 20) " "
28 BLOCK@[20; 22) 28 BLOCK@[20; 22)
29 L_CURLY@[20; 21) 29 L_CURLY@[20; 21) "{"
30 R_CURLY@[21; 22) 30 R_CURLY@[21; 22) "}"
31 WHITESPACE@[22; 23) 31 WHITESPACE@[22; 23) "\n"
diff --git a/crates/ra_syntax/tests/data/parser/err/0015_curly_in_params.txt b/crates/ra_syntax/tests/data/parser/err/0015_curly_in_params.txt
index e4d91109f..1350980f2 100644
--- a/crates/ra_syntax/tests/data/parser/err/0015_curly_in_params.txt
+++ b/crates/ra_syntax/tests/data/parser/err/0015_curly_in_params.txt
@@ -1,24 +1,24 @@
1SOURCE_FILE@[0; 14) 1SOURCE_FILE@[0; 14)
2 FN_DEF@[0; 7) 2 FN_DEF@[0; 7)
3 FN_KW@[0; 2) 3 FN_KW@[0; 2) "fn"
4 WHITESPACE@[2; 3) 4 WHITESPACE@[2; 3) " "
5 NAME@[3; 6) 5 NAME@[3; 6)
6 IDENT@[3; 6) "foo" 6 IDENT@[3; 6) "foo"
7 PARAM_LIST@[6; 7) 7 PARAM_LIST@[6; 7)
8 L_PAREN@[6; 7) 8 L_PAREN@[6; 7) "("
9 err: `expected value parameter` 9 err: `expected value parameter`
10 err: `expected R_PAREN` 10 err: `expected R_PAREN`
11 err: `expected a block` 11 err: `expected a block`
12 err: `unmatched `}`` 12 err: `unmatched `}``
13 ERROR@[7; 8) 13 ERROR@[7; 8)
14 R_CURLY@[7; 8) 14 R_CURLY@[7; 8) "}"
15 err: `expected an item` 15 err: `expected an item`
16 ERROR@[8; 9) 16 ERROR@[8; 9)
17 R_PAREN@[8; 9) 17 R_PAREN@[8; 9) ")"
18 WHITESPACE@[9; 10) 18 WHITESPACE@[9; 10) " "
19 err: `expected an item` 19 err: `expected an item`
20 ERROR@[10; 13) 20 ERROR@[10; 13)
21 L_CURLY@[10; 11) 21 L_CURLY@[10; 11) "{"
22 WHITESPACE@[11; 12) 22 WHITESPACE@[11; 12) "\n"
23 R_CURLY@[12; 13) 23 R_CURLY@[12; 13) "}"
24 WHITESPACE@[13; 14) 24 WHITESPACE@[13; 14) "\n"
diff --git a/crates/ra_syntax/tests/data/parser/err/0016_missing_semi.txt b/crates/ra_syntax/tests/data/parser/err/0016_missing_semi.txt
index 5b128caa2..dd60814a0 100644
--- a/crates/ra_syntax/tests/data/parser/err/0016_missing_semi.txt
+++ b/crates/ra_syntax/tests/data/parser/err/0016_missing_semi.txt
@@ -1,16 +1,16 @@
1SOURCE_FILE@[0; 56) 1SOURCE_FILE@[0; 56)
2 FN_DEF@[0; 55) 2 FN_DEF@[0; 55)
3 FN_KW@[0; 2) 3 FN_KW@[0; 2) "fn"
4 WHITESPACE@[2; 3) 4 WHITESPACE@[2; 3) " "
5 NAME@[3; 6) 5 NAME@[3; 6)
6 IDENT@[3; 6) "foo" 6 IDENT@[3; 6) "foo"
7 PARAM_LIST@[6; 8) 7 PARAM_LIST@[6; 8)
8 L_PAREN@[6; 7) 8 L_PAREN@[6; 7) "("
9 R_PAREN@[7; 8) 9 R_PAREN@[7; 8) ")"
10 WHITESPACE@[8; 9) 10 WHITESPACE@[8; 9) " "
11 BLOCK@[9; 55) 11 BLOCK@[9; 55)
12 L_CURLY@[9; 10) 12 L_CURLY@[9; 10) "{"
13 WHITESPACE@[10; 15) 13 WHITESPACE@[10; 15) "\n "
14 EXPR_STMT@[15; 38) 14 EXPR_STMT@[15; 38)
15 CALL_EXPR@[15; 38) 15 CALL_EXPR@[15; 38)
16 PATH_EXPR@[15; 18) 16 PATH_EXPR@[15; 18)
@@ -19,25 +19,25 @@ SOURCE_FILE@[0; 56)
19 NAME_REF@[15; 18) 19 NAME_REF@[15; 18)
20 IDENT@[15; 18) "foo" 20 IDENT@[15; 18) "foo"
21 ARG_LIST@[18; 38) 21 ARG_LIST@[18; 38)
22 L_PAREN@[18; 19) 22 L_PAREN@[18; 19) "("
23 WHITESPACE@[19; 28) 23 WHITESPACE@[19; 28) "\n "
24 LITERAL@[28; 29) 24 LITERAL@[28; 29)
25 INT_NUMBER@[28; 29) "1" 25 INT_NUMBER@[28; 29) "1"
26 COMMA@[29; 30) 26 COMMA@[29; 30) ","
27 WHITESPACE@[30; 31) 27 WHITESPACE@[30; 31) " "
28 LITERAL@[31; 32) 28 LITERAL@[31; 32)
29 INT_NUMBER@[31; 32) "2" 29 INT_NUMBER@[31; 32) "2"
30 WHITESPACE@[32; 37) 30 WHITESPACE@[32; 37) "\n "
31 R_PAREN@[37; 38) 31 R_PAREN@[37; 38) ")"
32 err: `expected SEMI` 32 err: `expected SEMI`
33 WHITESPACE@[38; 43) 33 WHITESPACE@[38; 43) "\n "
34 EXPR_STMT@[43; 53) 34 EXPR_STMT@[43; 53)
35 RETURN_EXPR@[43; 52) 35 RETURN_EXPR@[43; 52)
36 RETURN_KW@[43; 49) 36 RETURN_KW@[43; 49) "return"
37 WHITESPACE@[49; 50) 37 WHITESPACE@[49; 50) " "
38 LITERAL@[50; 52) 38 LITERAL@[50; 52)
39 INT_NUMBER@[50; 52) "92" 39 INT_NUMBER@[50; 52) "92"
40 SEMI@[52; 53) 40 SEMI@[52; 53) ";"
41 WHITESPACE@[53; 54) 41 WHITESPACE@[53; 54) "\n"
42 R_CURLY@[54; 55) 42 R_CURLY@[54; 55) "}"
43 WHITESPACE@[55; 56) 43 WHITESPACE@[55; 56) "\n"
diff --git a/crates/ra_syntax/tests/data/parser/err/0017_incomplete_binexpr.txt b/crates/ra_syntax/tests/data/parser/err/0017_incomplete_binexpr.txt
index fbfdc2c44..f115eb1dd 100644
--- a/crates/ra_syntax/tests/data/parser/err/0017_incomplete_binexpr.txt
+++ b/crates/ra_syntax/tests/data/parser/err/0017_incomplete_binexpr.txt
@@ -1,46 +1,46 @@
1SOURCE_FILE@[0; 47) 1SOURCE_FILE@[0; 47)
2 FN_DEF@[0; 46) 2 FN_DEF@[0; 46)
3 FN_KW@[0; 2) 3 FN_KW@[0; 2) "fn"
4 WHITESPACE@[2; 3) 4 WHITESPACE@[2; 3) " "
5 NAME@[3; 6) 5 NAME@[3; 6)
6 IDENT@[3; 6) "foo" 6 IDENT@[3; 6) "foo"
7 PARAM_LIST@[6; 16) 7 PARAM_LIST@[6; 16)
8 L_PAREN@[6; 7) 8 L_PAREN@[6; 7) "("
9 PARAM@[7; 15) 9 PARAM@[7; 15)
10 BIND_PAT@[7; 10) 10 BIND_PAT@[7; 10)
11 NAME@[7; 10) 11 NAME@[7; 10)
12 IDENT@[7; 10) "foo" 12 IDENT@[7; 10) "foo"
13 COLON@[10; 11) 13 COLON@[10; 11) ":"
14 WHITESPACE@[11; 12) 14 WHITESPACE@[11; 12) " "
15 PATH_TYPE@[12; 15) 15 PATH_TYPE@[12; 15)
16 PATH@[12; 15) 16 PATH@[12; 15)
17 PATH_SEGMENT@[12; 15) 17 PATH_SEGMENT@[12; 15)
18 NAME_REF@[12; 15) 18 NAME_REF@[12; 15)
19 IDENT@[12; 15) "i32" 19 IDENT@[12; 15) "i32"
20 R_PAREN@[15; 16) 20 R_PAREN@[15; 16) ")"
21 WHITESPACE@[16; 17) 21 WHITESPACE@[16; 17) " "
22 BLOCK@[17; 46) 22 BLOCK@[17; 46)
23 L_CURLY@[17; 18) 23 L_CURLY@[17; 18) "{"
24 WHITESPACE@[18; 23) 24 WHITESPACE@[18; 23) "\n "
25 LET_STMT@[23; 36) 25 LET_STMT@[23; 36)
26 LET_KW@[23; 26) 26 LET_KW@[23; 26) "let"
27 WHITESPACE@[26; 27) 27 WHITESPACE@[26; 27) " "
28 BIND_PAT@[27; 30) 28 BIND_PAT@[27; 30)
29 NAME@[27; 30) 29 NAME@[27; 30)
30 IDENT@[27; 30) "bar" 30 IDENT@[27; 30) "bar"
31 WHITESPACE@[30; 31) 31 WHITESPACE@[30; 31) " "
32 EQ@[31; 32) 32 EQ@[31; 32) "="
33 WHITESPACE@[32; 33) 33 WHITESPACE@[32; 33) " "
34 LITERAL@[33; 35) 34 LITERAL@[33; 35)
35 INT_NUMBER@[33; 35) "92" 35 INT_NUMBER@[33; 35) "92"
36 SEMI@[35; 36) 36 SEMI@[35; 36) ";"
37 WHITESPACE@[36; 41) 37 WHITESPACE@[36; 41) "\n "
38 BIN_EXPR@[41; 44) 38 BIN_EXPR@[41; 44)
39 LITERAL@[41; 42) 39 LITERAL@[41; 42)
40 INT_NUMBER@[41; 42) "1" 40 INT_NUMBER@[41; 42) "1"
41 WHITESPACE@[42; 43) 41 WHITESPACE@[42; 43) " "
42 PLUS@[43; 44) 42 PLUS@[43; 44) "+"
43 err: `expected expression` 43 err: `expected expression`
44 WHITESPACE@[44; 45) 44 WHITESPACE@[44; 45) "\n"
45 R_CURLY@[45; 46) 45 R_CURLY@[45; 46) "}"
46 WHITESPACE@[46; 47) 46 WHITESPACE@[46; 47) "\n"
diff --git a/crates/ra_syntax/tests/data/parser/err/0018_incomplete_fn.txt b/crates/ra_syntax/tests/data/parser/err/0018_incomplete_fn.txt
index 262cbba1e..9996cf824 100644
--- a/crates/ra_syntax/tests/data/parser/err/0018_incomplete_fn.txt
+++ b/crates/ra_syntax/tests/data/parser/err/0018_incomplete_fn.txt
@@ -1,131 +1,131 @@
1SOURCE_FILE@[0; 183) 1SOURCE_FILE@[0; 183)
2 IMPL_BLOCK@[0; 182) 2 IMPL_BLOCK@[0; 182)
3 IMPL_KW@[0; 4) 3 IMPL_KW@[0; 4) "impl"
4 WHITESPACE@[4; 5) 4 WHITESPACE@[4; 5) " "
5 PATH_TYPE@[5; 13) 5 PATH_TYPE@[5; 13)
6 PATH@[5; 13) 6 PATH@[5; 13)
7 PATH_SEGMENT@[5; 13) 7 PATH_SEGMENT@[5; 13)
8 NAME_REF@[5; 13) 8 NAME_REF@[5; 13)
9 IDENT@[5; 13) "FnScopes" 9 IDENT@[5; 13) "FnScopes"
10 WHITESPACE@[13; 14) 10 WHITESPACE@[13; 14) " "
11 ITEM_LIST@[14; 182) 11 ITEM_LIST@[14; 182)
12 L_CURLY@[14; 15) 12 L_CURLY@[14; 15) "{"
13 WHITESPACE@[15; 20) 13 WHITESPACE@[15; 20) "\n "
14 FN_DEF@[20; 161) 14 FN_DEF@[20; 161)
15 FN_KW@[20; 22) 15 FN_KW@[20; 22) "fn"
16 WHITESPACE@[22; 23) 16 WHITESPACE@[22; 23) " "
17 NAME@[23; 32) 17 NAME@[23; 32)
18 IDENT@[23; 32) "new_scope" 18 IDENT@[23; 32) "new_scope"
19 PARAM_LIST@[32; 35) 19 PARAM_LIST@[32; 35)
20 L_PAREN@[32; 33) 20 L_PAREN@[32; 33) "("
21 PARAM@[33; 34) 21 PARAM@[33; 34)
22 REF_PAT@[33; 34) 22 REF_PAT@[33; 34)
23 AMP@[33; 34) 23 AMP@[33; 34) "&"
24 err: `expected pattern` 24 err: `expected pattern`
25 err: `expected COLON` 25 err: `expected COLON`
26 err: `expected type` 26 err: `expected type`
27 R_PAREN@[34; 35) 27 R_PAREN@[34; 35) ")"
28 WHITESPACE@[35; 36) 28 WHITESPACE@[35; 36) " "
29 RET_TYPE@[36; 46) 29 RET_TYPE@[36; 46)
30 THIN_ARROW@[36; 38) 30 THIN_ARROW@[36; 38) "->"
31 WHITESPACE@[38; 39) 31 WHITESPACE@[38; 39) " "
32 PATH_TYPE@[39; 46) 32 PATH_TYPE@[39; 46)
33 PATH@[39; 46) 33 PATH@[39; 46)
34 PATH_SEGMENT@[39; 46) 34 PATH_SEGMENT@[39; 46)
35 NAME_REF@[39; 46) 35 NAME_REF@[39; 46)
36 IDENT@[39; 46) "ScopeId" 36 IDENT@[39; 46) "ScopeId"
37 WHITESPACE@[46; 47) 37 WHITESPACE@[46; 47) " "
38 BLOCK@[47; 161) 38 BLOCK@[47; 161)
39 L_CURLY@[47; 48) 39 L_CURLY@[47; 48) "{"
40 WHITESPACE@[48; 57) 40 WHITESPACE@[48; 57) "\n "
41 LET_STMT@[57; 85) 41 LET_STMT@[57; 85)
42 LET_KW@[57; 60) 42 LET_KW@[57; 60) "let"
43 WHITESPACE@[60; 61) 43 WHITESPACE@[60; 61) " "
44 BIND_PAT@[61; 64) 44 BIND_PAT@[61; 64)
45 NAME@[61; 64) 45 NAME@[61; 64)
46 IDENT@[61; 64) "res" 46 IDENT@[61; 64) "res"
47 WHITESPACE@[64; 65) 47 WHITESPACE@[64; 65) " "
48 EQ@[65; 66) 48 EQ@[65; 66) "="
49 WHITESPACE@[66; 67) 49 WHITESPACE@[66; 67) " "
50 METHOD_CALL_EXPR@[67; 84) 50 METHOD_CALL_EXPR@[67; 84)
51 FIELD_EXPR@[67; 78) 51 FIELD_EXPR@[67; 78)
52 PATH_EXPR@[67; 71) 52 PATH_EXPR@[67; 71)
53 PATH@[67; 71) 53 PATH@[67; 71)
54 PATH_SEGMENT@[67; 71) 54 PATH_SEGMENT@[67; 71)
55 SELF_KW@[67; 71) 55 SELF_KW@[67; 71) "self"
56 DOT@[71; 72) 56 DOT@[71; 72) "."
57 NAME_REF@[72; 78) 57 NAME_REF@[72; 78)
58 IDENT@[72; 78) "scopes" 58 IDENT@[72; 78) "scopes"
59 DOT@[78; 79) 59 DOT@[78; 79) "."
60 NAME_REF@[79; 82) 60 NAME_REF@[79; 82)
61 IDENT@[79; 82) "len" 61 IDENT@[79; 82) "len"
62 ARG_LIST@[82; 84) 62 ARG_LIST@[82; 84)
63 L_PAREN@[82; 83) 63 L_PAREN@[82; 83) "("
64 R_PAREN@[83; 84) 64 R_PAREN@[83; 84) ")"
65 SEMI@[84; 85) 65 SEMI@[84; 85) ";"
66 WHITESPACE@[85; 94) 66 WHITESPACE@[85; 94) "\n "
67 METHOD_CALL_EXPR@[94; 155) 67 METHOD_CALL_EXPR@[94; 155)
68 FIELD_EXPR@[94; 105) 68 FIELD_EXPR@[94; 105)
69 PATH_EXPR@[94; 98) 69 PATH_EXPR@[94; 98)
70 PATH@[94; 98) 70 PATH@[94; 98)
71 PATH_SEGMENT@[94; 98) 71 PATH_SEGMENT@[94; 98)
72 SELF_KW@[94; 98) 72 SELF_KW@[94; 98) "self"
73 DOT@[98; 99) 73 DOT@[98; 99) "."
74 NAME_REF@[99; 105) 74 NAME_REF@[99; 105)
75 IDENT@[99; 105) "scopes" 75 IDENT@[99; 105) "scopes"
76 DOT@[105; 106) 76 DOT@[105; 106) "."
77 NAME_REF@[106; 110) 77 NAME_REF@[106; 110)
78 IDENT@[106; 110) "push" 78 IDENT@[106; 110) "push"
79 ARG_LIST@[110; 155) 79 ARG_LIST@[110; 155)
80 L_PAREN@[110; 111) 80 L_PAREN@[110; 111) "("
81 STRUCT_LIT@[111; 154) 81 STRUCT_LIT@[111; 154)
82 PATH@[111; 120) 82 PATH@[111; 120)
83 PATH_SEGMENT@[111; 120) 83 PATH_SEGMENT@[111; 120)
84 NAME_REF@[111; 120) 84 NAME_REF@[111; 120)
85 IDENT@[111; 120) "ScopeData" 85 IDENT@[111; 120) "ScopeData"
86 WHITESPACE@[120; 121) 86 WHITESPACE@[120; 121) " "
87 NAMED_FIELD_LIST@[121; 154) 87 NAMED_FIELD_LIST@[121; 154)
88 L_CURLY@[121; 122) 88 L_CURLY@[121; 122) "{"
89 WHITESPACE@[122; 123) 89 WHITESPACE@[122; 123) " "
90 NAMED_FIELD@[123; 135) 90 NAMED_FIELD@[123; 135)
91 NAME_REF@[123; 129) 91 NAME_REF@[123; 129)
92 IDENT@[123; 129) "parent" 92 IDENT@[123; 129) "parent"
93 COLON@[129; 130) 93 COLON@[129; 130) ":"
94 WHITESPACE@[130; 131) 94 WHITESPACE@[130; 131) " "
95 PATH_EXPR@[131; 135) 95 PATH_EXPR@[131; 135)
96 PATH@[131; 135) 96 PATH@[131; 135)
97 PATH_SEGMENT@[131; 135) 97 PATH_SEGMENT@[131; 135)
98 NAME_REF@[131; 135) 98 NAME_REF@[131; 135)
99 IDENT@[131; 135) "None" 99 IDENT@[131; 135) "None"
100 COMMA@[135; 136) 100 COMMA@[135; 136) ","
101 WHITESPACE@[136; 137) 101 WHITESPACE@[136; 137) " "
102 NAMED_FIELD@[137; 152) 102 NAMED_FIELD@[137; 152)
103 NAME_REF@[137; 144) 103 NAME_REF@[137; 144)
104 IDENT@[137; 144) "entries" 104 IDENT@[137; 144) "entries"
105 COLON@[144; 145) 105 COLON@[144; 145) ":"
106 WHITESPACE@[145; 146) 106 WHITESPACE@[145; 146) " "
107 MACRO_CALL@[146; 152) 107 MACRO_CALL@[146; 152)
108 PATH@[146; 149) 108 PATH@[146; 149)
109 PATH_SEGMENT@[146; 149) 109 PATH_SEGMENT@[146; 149)
110 NAME_REF@[146; 149) 110 NAME_REF@[146; 149)
111 IDENT@[146; 149) "vec" 111 IDENT@[146; 149) "vec"
112 EXCL@[149; 150) 112 EXCL@[149; 150) "!"
113 TOKEN_TREE@[150; 152) 113 TOKEN_TREE@[150; 152)
114 L_BRACK@[150; 151) 114 L_BRACK@[150; 151) "["
115 R_BRACK@[151; 152) 115 R_BRACK@[151; 152) "]"
116 WHITESPACE@[152; 153) 116 WHITESPACE@[152; 153) " "
117 R_CURLY@[153; 154) 117 R_CURLY@[153; 154) "}"
118 R_PAREN@[154; 155) 118 R_PAREN@[154; 155) ")"
119 WHITESPACE@[155; 160) 119 WHITESPACE@[155; 160) "\n "
120 R_CURLY@[160; 161) 120 R_CURLY@[160; 161) "}"
121 WHITESPACE@[161; 167) 121 WHITESPACE@[161; 167) "\n\n "
122 FN_DEF@[167; 180) 122 FN_DEF@[167; 180)
123 FN_KW@[167; 169) 123 FN_KW@[167; 169) "fn"
124 WHITESPACE@[169; 170) 124 WHITESPACE@[169; 170) " "
125 NAME@[170; 180) 125 NAME@[170; 180)
126 IDENT@[170; 180) "set_parent" 126 IDENT@[170; 180) "set_parent"
127 err: `expected function arguments` 127 err: `expected function arguments`
128 err: `expected a block` 128 err: `expected a block`
129 WHITESPACE@[180; 181) 129 WHITESPACE@[180; 181) "\n"
130 R_CURLY@[181; 182) 130 R_CURLY@[181; 182) "}"
131 WHITESPACE@[182; 183) 131 WHITESPACE@[182; 183) "\n"
diff --git a/crates/ra_syntax/tests/data/parser/err/0019_let_recover.txt b/crates/ra_syntax/tests/data/parser/err/0019_let_recover.txt
index ee75c33ae..c12649d5e 100644
--- a/crates/ra_syntax/tests/data/parser/err/0019_let_recover.txt
+++ b/crates/ra_syntax/tests/data/parser/err/0019_let_recover.txt
@@ -1,103 +1,103 @@
1SOURCE_FILE@[0; 139) 1SOURCE_FILE@[0; 139)
2 FN_DEF@[0; 138) 2 FN_DEF@[0; 138)
3 FN_KW@[0; 2) 3 FN_KW@[0; 2) "fn"
4 WHITESPACE@[2; 3) 4 WHITESPACE@[2; 3) " "
5 NAME@[3; 6) 5 NAME@[3; 6)
6 IDENT@[3; 6) "foo" 6 IDENT@[3; 6) "foo"
7 PARAM_LIST@[6; 8) 7 PARAM_LIST@[6; 8)
8 L_PAREN@[6; 7) 8 L_PAREN@[6; 7) "("
9 R_PAREN@[7; 8) 9 R_PAREN@[7; 8) ")"
10 WHITESPACE@[8; 9) 10 WHITESPACE@[8; 9) " "
11 BLOCK@[9; 138) 11 BLOCK@[9; 138)
12 L_CURLY@[9; 10) 12 L_CURLY@[9; 10) "{"
13 WHITESPACE@[10; 15) 13 WHITESPACE@[10; 15) "\n "
14 LET_STMT@[15; 24) 14 LET_STMT@[15; 24)
15 LET_KW@[15; 18) 15 LET_KW@[15; 18) "let"
16 WHITESPACE@[18; 19) 16 WHITESPACE@[18; 19) " "
17 BIND_PAT@[19; 22) 17 BIND_PAT@[19; 22)
18 NAME@[19; 22) 18 NAME@[19; 22)
19 IDENT@[19; 22) "foo" 19 IDENT@[19; 22) "foo"
20 WHITESPACE@[22; 23) 20 WHITESPACE@[22; 23) " "
21 EQ@[23; 24) 21 EQ@[23; 24) "="
22 err: `expected expression` 22 err: `expected expression`
23 err: `expected SEMI` 23 err: `expected SEMI`
24 WHITESPACE@[24; 29) 24 WHITESPACE@[24; 29) "\n "
25 LET_STMT@[29; 41) 25 LET_STMT@[29; 41)
26 LET_KW@[29; 32) 26 LET_KW@[29; 32) "let"
27 WHITESPACE@[32; 33) 27 WHITESPACE@[32; 33) " "
28 BIND_PAT@[33; 36) 28 BIND_PAT@[33; 36)
29 NAME@[33; 36) 29 NAME@[33; 36)
30 IDENT@[33; 36) "bar" 30 IDENT@[33; 36) "bar"
31 WHITESPACE@[36; 37) 31 WHITESPACE@[36; 37) " "
32 EQ@[37; 38) 32 EQ@[37; 38) "="
33 WHITESPACE@[38; 39) 33 WHITESPACE@[38; 39) " "
34 LITERAL@[39; 40) 34 LITERAL@[39; 40)
35 INT_NUMBER@[39; 40) "1" 35 INT_NUMBER@[39; 40) "1"
36 SEMI@[40; 41) 36 SEMI@[40; 41) ";"
37 WHITESPACE@[41; 46) 37 WHITESPACE@[41; 46) "\n "
38 LET_STMT@[46; 49) 38 LET_STMT@[46; 49)
39 LET_KW@[46; 49) 39 LET_KW@[46; 49) "let"
40 err: `expected pattern` 40 err: `expected pattern`
41 err: `expected SEMI` 41 err: `expected SEMI`
42 WHITESPACE@[49; 54) 42 WHITESPACE@[49; 54) "\n "
43 LET_STMT@[54; 67) 43 LET_STMT@[54; 67)
44 LET_KW@[54; 57) 44 LET_KW@[54; 57) "let"
45 WHITESPACE@[57; 58) 45 WHITESPACE@[57; 58) " "
46 BIND_PAT@[58; 61) 46 BIND_PAT@[58; 61)
47 NAME@[58; 61) 47 NAME@[58; 61)
48 IDENT@[58; 61) "baz" 48 IDENT@[58; 61) "baz"
49 WHITESPACE@[61; 62) 49 WHITESPACE@[61; 62) " "
50 EQ@[62; 63) 50 EQ@[62; 63) "="
51 WHITESPACE@[63; 64) 51 WHITESPACE@[63; 64) " "
52 LITERAL@[64; 66) 52 LITERAL@[64; 66)
53 INT_NUMBER@[64; 66) "92" 53 INT_NUMBER@[64; 66) "92"
54 SEMI@[66; 67) 54 SEMI@[66; 67) ";"
55 WHITESPACE@[67; 72) 55 WHITESPACE@[67; 72) "\n "
56 LET_STMT@[72; 75) 56 LET_STMT@[72; 75)
57 LET_KW@[72; 75) 57 LET_KW@[72; 75) "let"
58 err: `expected pattern` 58 err: `expected pattern`
59 err: `expected SEMI` 59 err: `expected SEMI`
60 WHITESPACE@[75; 80) 60 WHITESPACE@[75; 80) "\n "
61 EXPR_STMT@[80; 90) 61 EXPR_STMT@[80; 90)
62 IF_EXPR@[80; 90) 62 IF_EXPR@[80; 90)
63 IF_KW@[80; 82) 63 IF_KW@[80; 82) "if"
64 WHITESPACE@[82; 83) 64 WHITESPACE@[82; 83) " "
65 CONDITION@[83; 87) 65 CONDITION@[83; 87)
66 LITERAL@[83; 87) 66 LITERAL@[83; 87)
67 TRUE_KW@[83; 87) 67 TRUE_KW@[83; 87) "true"
68 WHITESPACE@[87; 88) 68 WHITESPACE@[87; 88) " "
69 BLOCK@[88; 90) 69 BLOCK@[88; 90)
70 L_CURLY@[88; 89) 70 L_CURLY@[88; 89) "{"
71 R_CURLY@[89; 90) 71 R_CURLY@[89; 90) "}"
72 WHITESPACE@[90; 95) 72 WHITESPACE@[90; 95) "\n "
73 LET_STMT@[95; 98) 73 LET_STMT@[95; 98)
74 LET_KW@[95; 98) 74 LET_KW@[95; 98) "let"
75 err: `expected pattern` 75 err: `expected pattern`
76 err: `expected SEMI` 76 err: `expected SEMI`
77 WHITESPACE@[98; 103) 77 WHITESPACE@[98; 103) "\n "
78 EXPR_STMT@[103; 116) 78 EXPR_STMT@[103; 116)
79 WHILE_EXPR@[103; 116) 79 WHILE_EXPR@[103; 116)
80 WHILE_KW@[103; 108) 80 WHILE_KW@[103; 108) "while"
81 WHITESPACE@[108; 109) 81 WHITESPACE@[108; 109) " "
82 CONDITION@[109; 113) 82 CONDITION@[109; 113)
83 LITERAL@[109; 113) 83 LITERAL@[109; 113)
84 TRUE_KW@[109; 113) 84 TRUE_KW@[109; 113) "true"
85 WHITESPACE@[113; 114) 85 WHITESPACE@[113; 114) " "
86 BLOCK@[114; 116) 86 BLOCK@[114; 116)
87 L_CURLY@[114; 115) 87 L_CURLY@[114; 115) "{"
88 R_CURLY@[115; 116) 88 R_CURLY@[115; 116) "}"
89 WHITESPACE@[116; 121) 89 WHITESPACE@[116; 121) "\n "
90 LET_STMT@[121; 124) 90 LET_STMT@[121; 124)
91 LET_KW@[121; 124) 91 LET_KW@[121; 124) "let"
92 err: `expected pattern` 92 err: `expected pattern`
93 err: `expected SEMI` 93 err: `expected SEMI`
94 WHITESPACE@[124; 129) 94 WHITESPACE@[124; 129) "\n "
95 LOOP_EXPR@[129; 136) 95 LOOP_EXPR@[129; 136)
96 LOOP_KW@[129; 133) 96 LOOP_KW@[129; 133) "loop"
97 WHITESPACE@[133; 134) 97 WHITESPACE@[133; 134) " "
98 BLOCK@[134; 136) 98 BLOCK@[134; 136)
99 L_CURLY@[134; 135) 99 L_CURLY@[134; 135) "{"
100 R_CURLY@[135; 136) 100 R_CURLY@[135; 136) "}"
101 WHITESPACE@[136; 137) 101 WHITESPACE@[136; 137) "\n"
102 R_CURLY@[137; 138) 102 R_CURLY@[137; 138) "}"
103 WHITESPACE@[138; 139) 103 WHITESPACE@[138; 139) "\n"
diff --git a/crates/ra_syntax/tests/data/parser/err/0020_fn_recover.txt b/crates/ra_syntax/tests/data/parser/err/0020_fn_recover.txt
index 375fd3ad2..b48bd5dee 100644
--- a/crates/ra_syntax/tests/data/parser/err/0020_fn_recover.txt
+++ b/crates/ra_syntax/tests/data/parser/err/0020_fn_recover.txt
@@ -1,20 +1,20 @@
1SOURCE_FILE@[0; 16) 1SOURCE_FILE@[0; 16)
2 FN_DEF@[0; 2) 2 FN_DEF@[0; 2)
3 FN_KW@[0; 2) 3 FN_KW@[0; 2) "fn"
4 err: `expected a name` 4 err: `expected a name`
5 err: `expected function arguments` 5 err: `expected function arguments`
6 err: `expected a block` 6 err: `expected a block`
7 WHITESPACE@[2; 4) 7 WHITESPACE@[2; 4) "\n\n"
8 FN_DEF@[4; 15) 8 FN_DEF@[4; 15)
9 FN_KW@[4; 6) 9 FN_KW@[4; 6) "fn"
10 WHITESPACE@[6; 7) 10 WHITESPACE@[6; 7) " "
11 NAME@[7; 10) 11 NAME@[7; 10)
12 IDENT@[7; 10) "foo" 12 IDENT@[7; 10) "foo"
13 PARAM_LIST@[10; 12) 13 PARAM_LIST@[10; 12)
14 L_PAREN@[10; 11) 14 L_PAREN@[10; 11) "("
15 R_PAREN@[11; 12) 15 R_PAREN@[11; 12) ")"
16 WHITESPACE@[12; 13) 16 WHITESPACE@[12; 13) " "
17 BLOCK@[13; 15) 17 BLOCK@[13; 15)
18 L_CURLY@[13; 14) 18 L_CURLY@[13; 14) "{"
19 R_CURLY@[14; 15) 19 R_CURLY@[14; 15) "}"
20 WHITESPACE@[15; 16) 20 WHITESPACE@[15; 16) "\n"
diff --git a/crates/ra_syntax/tests/data/parser/err/0021_incomplete_param.txt b/crates/ra_syntax/tests/data/parser/err/0021_incomplete_param.txt
index 1b3dcd945..81b52c8ce 100644
--- a/crates/ra_syntax/tests/data/parser/err/0021_incomplete_param.txt
+++ b/crates/ra_syntax/tests/data/parser/err/0021_incomplete_param.txt
@@ -1,34 +1,34 @@
1SOURCE_FILE@[0; 22) 1SOURCE_FILE@[0; 22)
2 FN_DEF@[0; 21) 2 FN_DEF@[0; 21)
3 FN_KW@[0; 2) 3 FN_KW@[0; 2) "fn"
4 WHITESPACE@[2; 3) 4 WHITESPACE@[2; 3) " "
5 NAME@[3; 6) 5 NAME@[3; 6)
6 IDENT@[3; 6) "foo" 6 IDENT@[3; 6) "foo"
7 PARAM_LIST@[6; 17) 7 PARAM_LIST@[6; 17)
8 L_PAREN@[6; 7) 8 L_PAREN@[6; 7) "("
9 PARAM@[7; 13) 9 PARAM@[7; 13)
10 BIND_PAT@[7; 8) 10 BIND_PAT@[7; 8)
11 NAME@[7; 8) 11 NAME@[7; 8)
12 IDENT@[7; 8) "x" 12 IDENT@[7; 8) "x"
13 COLON@[8; 9) 13 COLON@[8; 9) ":"
14 WHITESPACE@[9; 10) 14 WHITESPACE@[9; 10) " "
15 PATH_TYPE@[10; 13) 15 PATH_TYPE@[10; 13)
16 PATH@[10; 13) 16 PATH@[10; 13)
17 PATH_SEGMENT@[10; 13) 17 PATH_SEGMENT@[10; 13)
18 NAME_REF@[10; 13) 18 NAME_REF@[10; 13)
19 IDENT@[10; 13) "i32" 19 IDENT@[10; 13) "i32"
20 COMMA@[13; 14) 20 COMMA@[13; 14) ","
21 WHITESPACE@[14; 15) 21 WHITESPACE@[14; 15) " "
22 PARAM@[15; 16) 22 PARAM@[15; 16)
23 BIND_PAT@[15; 16) 23 BIND_PAT@[15; 16)
24 NAME@[15; 16) 24 NAME@[15; 16)
25 IDENT@[15; 16) "y" 25 IDENT@[15; 16) "y"
26 err: `expected COLON` 26 err: `expected COLON`
27 err: `expected type` 27 err: `expected type`
28 R_PAREN@[16; 17) 28 R_PAREN@[16; 17) ")"
29 WHITESPACE@[17; 18) 29 WHITESPACE@[17; 18) " "
30 BLOCK@[18; 21) 30 BLOCK@[18; 21)
31 L_CURLY@[18; 19) 31 L_CURLY@[18; 19) "{"
32 WHITESPACE@[19; 20) 32 WHITESPACE@[19; 20) "\n"
33 R_CURLY@[20; 21) 33 R_CURLY@[20; 21) "}"
34 WHITESPACE@[21; 22) 34 WHITESPACE@[21; 22) "\n"
diff --git a/crates/ra_syntax/tests/data/parser/err/0022_bad_exprs.txt b/crates/ra_syntax/tests/data/parser/err/0022_bad_exprs.txt
index da3894133..6dfdfc343 100644
--- a/crates/ra_syntax/tests/data/parser/err/0022_bad_exprs.txt
+++ b/crates/ra_syntax/tests/data/parser/err/0022_bad_exprs.txt
@@ -1,69 +1,69 @@
1SOURCE_FILE@[0; 112) 1SOURCE_FILE@[0; 112)
2 FN_DEF@[0; 33) 2 FN_DEF@[0; 33)
3 FN_KW@[0; 2) 3 FN_KW@[0; 2) "fn"
4 WHITESPACE@[2; 3) 4 WHITESPACE@[2; 3) " "
5 NAME@[3; 4) 5 NAME@[3; 4)
6 IDENT@[3; 4) "a" 6 IDENT@[3; 4) "a"
7 PARAM_LIST@[4; 6) 7 PARAM_LIST@[4; 6)
8 L_PAREN@[4; 5) 8 L_PAREN@[4; 5) "("
9 R_PAREN@[5; 6) 9 R_PAREN@[5; 6) ")"
10 WHITESPACE@[6; 7) 10 WHITESPACE@[6; 7) " "
11 BLOCK@[7; 33) 11 BLOCK@[7; 33)
12 L_CURLY@[7; 8) 12 L_CURLY@[7; 8) "{"
13 WHITESPACE@[8; 9) 13 WHITESPACE@[8; 9) " "
14 EXPR_STMT@[9; 15) 14 EXPR_STMT@[9; 15)
15 ARRAY_EXPR@[9; 15) 15 ARRAY_EXPR@[9; 15)
16 L_BRACK@[9; 10) 16 L_BRACK@[9; 10) "["
17 LITERAL@[10; 11) 17 LITERAL@[10; 11)
18 INT_NUMBER@[10; 11) "1" 18 INT_NUMBER@[10; 11) "1"
19 COMMA@[11; 12) 19 COMMA@[11; 12) ","
20 WHITESPACE@[12; 13) 20 WHITESPACE@[12; 13) " "
21 LITERAL@[13; 14) 21 LITERAL@[13; 14)
22 INT_NUMBER@[13; 14) "2" 22 INT_NUMBER@[13; 14) "2"
23 COMMA@[14; 15) 23 COMMA@[14; 15) ","
24 err: `expected expression` 24 err: `expected expression`
25 err: `expected R_BRACK` 25 err: `expected R_BRACK`
26 err: `expected SEMI` 26 err: `expected SEMI`
27 WHITESPACE@[15; 16) 27 WHITESPACE@[15; 16) " "
28 err: `expected expression` 28 err: `expected expression`
29 EXPR_STMT@[16; 17) 29 EXPR_STMT@[16; 17)
30 ERROR@[16; 17) 30 ERROR@[16; 17)
31 AT@[16; 17) 31 AT@[16; 17) "@"
32 err: `expected SEMI` 32 err: `expected SEMI`
33 err: `expected expression` 33 err: `expected expression`
34 EXPR_STMT@[17; 18) 34 EXPR_STMT@[17; 18)
35 ERROR@[17; 18) 35 ERROR@[17; 18)
36 COMMA@[17; 18) 36 COMMA@[17; 18) ","
37 err: `expected SEMI` 37 err: `expected SEMI`
38 WHITESPACE@[18; 19) 38 WHITESPACE@[18; 19) " "
39 STRUCT_DEF@[19; 26) 39 STRUCT_DEF@[19; 26)
40 STRUCT_KW@[19; 25) 40 STRUCT_KW@[19; 25) "struct"
41 err: `expected a name` 41 err: `expected a name`
42 ERROR@[25; 26) 42 ERROR@[25; 26)
43 COMMA@[25; 26) 43 COMMA@[25; 26) ","
44 err: `expected `;`, `{`, or `(`` 44 err: `expected `;`, `{`, or `(``
45 WHITESPACE@[26; 27) 45 WHITESPACE@[26; 27) " "
46 LET_STMT@[27; 31) 46 LET_STMT@[27; 31)
47 LET_KW@[27; 30) 47 LET_KW@[27; 30) "let"
48 err: `expected pattern` 48 err: `expected pattern`
49 ERROR@[30; 31) 49 ERROR@[30; 31)
50 R_BRACK@[30; 31) 50 R_BRACK@[30; 31) "]"
51 err: `expected SEMI` 51 err: `expected SEMI`
52 WHITESPACE@[31; 32) 52 WHITESPACE@[31; 32) " "
53 R_CURLY@[32; 33) 53 R_CURLY@[32; 33) "}"
54 WHITESPACE@[33; 34) 54 WHITESPACE@[33; 34) "\n"
55 FN_DEF@[34; 68) 55 FN_DEF@[34; 68)
56 FN_KW@[34; 36) 56 FN_KW@[34; 36) "fn"
57 WHITESPACE@[36; 37) 57 WHITESPACE@[36; 37) " "
58 NAME@[37; 38) 58 NAME@[37; 38)
59 IDENT@[37; 38) "b" 59 IDENT@[37; 38) "b"
60 PARAM_LIST@[38; 40) 60 PARAM_LIST@[38; 40)
61 L_PAREN@[38; 39) 61 L_PAREN@[38; 39) "("
62 R_PAREN@[39; 40) 62 R_PAREN@[39; 40) ")"
63 WHITESPACE@[40; 41) 63 WHITESPACE@[40; 41) " "
64 BLOCK@[41; 68) 64 BLOCK@[41; 68)
65 L_CURLY@[41; 42) 65 L_CURLY@[41; 42) "{"
66 WHITESPACE@[42; 43) 66 WHITESPACE@[42; 43) " "
67 EXPR_STMT@[43; 52) 67 EXPR_STMT@[43; 52)
68 CALL_EXPR@[43; 52) 68 CALL_EXPR@[43; 52)
69 PATH_EXPR@[43; 46) 69 PATH_EXPR@[43; 46)
@@ -72,60 +72,60 @@ SOURCE_FILE@[0; 112)
72 NAME_REF@[43; 46) 72 NAME_REF@[43; 46)
73 IDENT@[43; 46) "foo" 73 IDENT@[43; 46) "foo"
74 ARG_LIST@[46; 52) 74 ARG_LIST@[46; 52)
75 L_PAREN@[46; 47) 75 L_PAREN@[46; 47) "("
76 LITERAL@[47; 48) 76 LITERAL@[47; 48)
77 INT_NUMBER@[47; 48) "1" 77 INT_NUMBER@[47; 48) "1"
78 COMMA@[48; 49) 78 COMMA@[48; 49) ","
79 WHITESPACE@[49; 50) 79 WHITESPACE@[49; 50) " "
80 LITERAL@[50; 51) 80 LITERAL@[50; 51)
81 INT_NUMBER@[50; 51) "2" 81 INT_NUMBER@[50; 51) "2"
82 COMMA@[51; 52) 82 COMMA@[51; 52) ","
83 err: `expected expression` 83 err: `expected expression`
84 err: `expected SEMI` 84 err: `expected SEMI`
85 WHITESPACE@[52; 53) 85 WHITESPACE@[52; 53) " "
86 err: `expected expression` 86 err: `expected expression`
87 EXPR_STMT@[53; 54) 87 EXPR_STMT@[53; 54)
88 ERROR@[53; 54) 88 ERROR@[53; 54)
89 AT@[53; 54) 89 AT@[53; 54) "@"
90 err: `expected SEMI` 90 err: `expected SEMI`
91 err: `expected expression` 91 err: `expected expression`
92 EXPR_STMT@[54; 55) 92 EXPR_STMT@[54; 55)
93 ERROR@[54; 55) 93 ERROR@[54; 55)
94 COMMA@[54; 55) 94 COMMA@[54; 55) ","
95 err: `expected SEMI` 95 err: `expected SEMI`
96 WHITESPACE@[55; 56) 96 WHITESPACE@[55; 56) " "
97 IMPL_BLOCK@[56; 60) 97 IMPL_BLOCK@[56; 60)
98 IMPL_KW@[56; 60) 98 IMPL_KW@[56; 60) "impl"
99 err: `expected type` 99 err: `expected type`
100 err: `expected `{`` 100 err: `expected `{``
101 err: `expected expression` 101 err: `expected expression`
102 EXPR_STMT@[60; 61) 102 EXPR_STMT@[60; 61)
103 ERROR@[60; 61) 103 ERROR@[60; 61)
104 COMMA@[60; 61) 104 COMMA@[60; 61) ","
105 err: `expected SEMI` 105 err: `expected SEMI`
106 WHITESPACE@[61; 62) 106 WHITESPACE@[61; 62) " "
107 LET_STMT@[62; 65) 107 LET_STMT@[62; 65)
108 LET_KW@[62; 65) 108 LET_KW@[62; 65) "let"
109 err: `expected pattern` 109 err: `expected pattern`
110 err: `expected SEMI` 110 err: `expected SEMI`
111 err: `expected expression` 111 err: `expected expression`
112 ERROR@[65; 66) 112 ERROR@[65; 66)
113 R_PAREN@[65; 66) 113 R_PAREN@[65; 66) ")"
114 WHITESPACE@[66; 67) 114 WHITESPACE@[66; 67) " "
115 R_CURLY@[67; 68) 115 R_CURLY@[67; 68) "}"
116 WHITESPACE@[68; 69) 116 WHITESPACE@[68; 69) "\n"
117 FN_DEF@[69; 111) 117 FN_DEF@[69; 111)
118 FN_KW@[69; 71) 118 FN_KW@[69; 71) "fn"
119 WHITESPACE@[71; 72) 119 WHITESPACE@[71; 72) " "
120 NAME@[72; 73) 120 NAME@[72; 73)
121 IDENT@[72; 73) "c" 121 IDENT@[72; 73) "c"
122 PARAM_LIST@[73; 75) 122 PARAM_LIST@[73; 75)
123 L_PAREN@[73; 74) 123 L_PAREN@[73; 74) "("
124 R_PAREN@[74; 75) 124 R_PAREN@[74; 75) ")"
125 WHITESPACE@[75; 76) 125 WHITESPACE@[75; 76) " "
126 BLOCK@[76; 111) 126 BLOCK@[76; 111)
127 L_CURLY@[76; 77) 127 L_CURLY@[76; 77) "{"
128 WHITESPACE@[77; 78) 128 WHITESPACE@[77; 78) " "
129 EXPR_STMT@[78; 91) 129 EXPR_STMT@[78; 91)
130 METHOD_CALL_EXPR@[78; 91) 130 METHOD_CALL_EXPR@[78; 91)
131 PATH_EXPR@[78; 81) 131 PATH_EXPR@[78; 81)
@@ -133,57 +133,57 @@ SOURCE_FILE@[0; 112)
133 PATH_SEGMENT@[78; 81) 133 PATH_SEGMENT@[78; 81)
134 NAME_REF@[78; 81) 134 NAME_REF@[78; 81)
135 IDENT@[78; 81) "foo" 135 IDENT@[78; 81) "foo"
136 DOT@[81; 82) 136 DOT@[81; 82) "."
137 NAME_REF@[82; 85) 137 NAME_REF@[82; 85)
138 IDENT@[82; 85) "bar" 138 IDENT@[82; 85) "bar"
139 ARG_LIST@[85; 91) 139 ARG_LIST@[85; 91)
140 L_PAREN@[85; 86) 140 L_PAREN@[85; 86) "("
141 LITERAL@[86; 87) 141 LITERAL@[86; 87)
142 INT_NUMBER@[86; 87) "1" 142 INT_NUMBER@[86; 87) "1"
143 COMMA@[87; 88) 143 COMMA@[87; 88) ","
144 WHITESPACE@[88; 89) 144 WHITESPACE@[88; 89) " "
145 LITERAL@[89; 90) 145 LITERAL@[89; 90)
146 INT_NUMBER@[89; 90) "2" 146 INT_NUMBER@[89; 90) "2"
147 COMMA@[90; 91) 147 COMMA@[90; 91) ","
148 err: `expected expression` 148 err: `expected expression`
149 err: `expected SEMI` 149 err: `expected SEMI`
150 WHITESPACE@[91; 92) 150 WHITESPACE@[91; 92) " "
151 err: `expected expression` 151 err: `expected expression`
152 EXPR_STMT@[92; 93) 152 EXPR_STMT@[92; 93)
153 ERROR@[92; 93) 153 ERROR@[92; 93)
154 AT@[92; 93) 154 AT@[92; 93) "@"
155 err: `expected SEMI` 155 err: `expected SEMI`
156 err: `expected expression` 156 err: `expected expression`
157 EXPR_STMT@[93; 94) 157 EXPR_STMT@[93; 94)
158 ERROR@[93; 94) 158 ERROR@[93; 94)
159 COMMA@[93; 94) 159 COMMA@[93; 94) ","
160 err: `expected SEMI` 160 err: `expected SEMI`
161 WHITESPACE@[94; 95) 161 WHITESPACE@[94; 95) " "
162 err: `expected expression` 162 err: `expected expression`
163 EXPR_STMT@[95; 96) 163 EXPR_STMT@[95; 96)
164 ERROR@[95; 96) 164 ERROR@[95; 96)
165 R_BRACK@[95; 96) 165 R_BRACK@[95; 96) "]"
166 err: `expected SEMI` 166 err: `expected SEMI`
167 err: `expected expression` 167 err: `expected expression`
168 EXPR_STMT@[96; 97) 168 EXPR_STMT@[96; 97)
169 ERROR@[96; 97) 169 ERROR@[96; 97)
170 COMMA@[96; 97) 170 COMMA@[96; 97) ","
171 err: `expected SEMI` 171 err: `expected SEMI`
172 WHITESPACE@[97; 98) 172 WHITESPACE@[97; 98) " "
173 TRAIT_DEF@[98; 104) 173 TRAIT_DEF@[98; 104)
174 TRAIT_KW@[98; 103) 174 TRAIT_KW@[98; 103) "trait"
175 err: `expected a name` 175 err: `expected a name`
176 ERROR@[103; 104) 176 ERROR@[103; 104)
177 COMMA@[103; 104) 177 COMMA@[103; 104) ","
178 err: `expected `{`` 178 err: `expected `{``
179 WHITESPACE@[104; 105) 179 WHITESPACE@[104; 105) " "
180 LET_STMT@[105; 108) 180 LET_STMT@[105; 108)
181 LET_KW@[105; 108) 181 LET_KW@[105; 108) "let"
182 err: `expected pattern` 182 err: `expected pattern`
183 err: `expected SEMI` 183 err: `expected SEMI`
184 err: `expected expression` 184 err: `expected expression`
185 ERROR@[108; 109) 185 ERROR@[108; 109)
186 R_PAREN@[108; 109) 186 R_PAREN@[108; 109) ")"
187 WHITESPACE@[109; 110) 187 WHITESPACE@[109; 110) " "
188 R_CURLY@[110; 111) 188 R_CURLY@[110; 111) "}"
189 WHITESPACE@[111; 112) 189 WHITESPACE@[111; 112) "\n"
diff --git a/crates/ra_syntax/tests/data/parser/err/0023_mismatched_paren.txt b/crates/ra_syntax/tests/data/parser/err/0023_mismatched_paren.txt
index dcca0756d..469d35082 100644
--- a/crates/ra_syntax/tests/data/parser/err/0023_mismatched_paren.txt
+++ b/crates/ra_syntax/tests/data/parser/err/0023_mismatched_paren.txt
@@ -1,43 +1,43 @@
1SOURCE_FILE@[0; 94) 1SOURCE_FILE@[0; 94)
2 FN_DEF@[0; 55) 2 FN_DEF@[0; 55)
3 FN_KW@[0; 2) 3 FN_KW@[0; 2) "fn"
4 WHITESPACE@[2; 3) 4 WHITESPACE@[2; 3) " "
5 NAME@[3; 7) 5 NAME@[3; 7)
6 IDENT@[3; 7) "main" 6 IDENT@[3; 7) "main"
7 PARAM_LIST@[7; 9) 7 PARAM_LIST@[7; 9)
8 L_PAREN@[7; 8) 8 L_PAREN@[7; 8) "("
9 R_PAREN@[8; 9) 9 R_PAREN@[8; 9) ")"
10 WHITESPACE@[9; 10) 10 WHITESPACE@[9; 10) " "
11 BLOCK@[10; 55) 11 BLOCK@[10; 55)
12 L_CURLY@[10; 11) 12 L_CURLY@[10; 11) "{"
13 WHITESPACE@[11; 16) 13 WHITESPACE@[11; 16) "\n "
14 MACRO_CALL@[16; 49) 14 MACRO_CALL@[16; 49)
15 PATH@[16; 19) 15 PATH@[16; 19)
16 PATH_SEGMENT@[16; 19) 16 PATH_SEGMENT@[16; 19)
17 NAME_REF@[16; 19) 17 NAME_REF@[16; 19)
18 IDENT@[16; 19) "foo" 18 IDENT@[16; 19) "foo"
19 EXCL@[19; 20) 19 EXCL@[19; 20) "!"
20 WHITESPACE@[20; 21) 20 WHITESPACE@[20; 21) " "
21 TOKEN_TREE@[21; 49) 21 TOKEN_TREE@[21; 49)
22 L_PAREN@[21; 22) 22 L_PAREN@[21; 22) "("
23 WHITESPACE@[22; 31) 23 WHITESPACE@[22; 31) "\n "
24 IDENT@[31; 34) "bar" 24 IDENT@[31; 34) "bar"
25 COMMA@[34; 35) 25 COMMA@[34; 35) ","
26 WHITESPACE@[35; 36) 26 WHITESPACE@[35; 36) " "
27 STRING@[36; 41) 27 STRING@[36; 41) "\"baz\""
28 COMMA@[41; 42) 28 COMMA@[41; 42) ","
29 WHITESPACE@[42; 43) 29 WHITESPACE@[42; 43) " "
30 INT_NUMBER@[43; 44) "1" 30 INT_NUMBER@[43; 44) "1"
31 COMMA@[44; 45) 31 COMMA@[44; 45) ","
32 WHITESPACE@[45; 46) 32 WHITESPACE@[45; 46) " "
33 FLOAT_NUMBER@[46; 49) "2.0" 33 FLOAT_NUMBER@[46; 49) "2.0"
34 err: `unmatched `}`` 34 err: `unmatched `}``
35 WHITESPACE@[49; 54) 35 WHITESPACE@[49; 54) "\n "
36 R_CURLY@[54; 55) 36 R_CURLY@[54; 55) "}"
37 WHITESPACE@[55; 56) 37 WHITESPACE@[55; 56) " "
38 COMMENT@[56; 91) 38 COMMENT@[56; 91) "//~ ERROR incorrect c ..."
39 WHITESPACE@[91; 92) 39 WHITESPACE@[91; 92) "\n"
40 err: `unmatched `}`` 40 err: `unmatched `}``
41 ERROR@[92; 93) 41 ERROR@[92; 93)
42 R_CURLY@[92; 93) 42 R_CURLY@[92; 93) "}"
43 WHITESPACE@[93; 94) 43 WHITESPACE@[93; 94) "\n"
diff --git a/crates/ra_syntax/tests/data/parser/err/0024_many_type_parens.txt b/crates/ra_syntax/tests/data/parser/err/0024_many_type_parens.txt
index 8720fc6ea..0fb73d838 100644
--- a/crates/ra_syntax/tests/data/parser/err/0024_many_type_parens.txt
+++ b/crates/ra_syntax/tests/data/parser/err/0024_many_type_parens.txt
@@ -1,164 +1,173 @@
1SOURCE_FILE@[0; 240) 1SOURCE_FILE@[0; 240)
2 FN_DEF@[0; 53) 2 FN_DEF@[0; 53)
3 FN_KW@[0; 2) 3 FN_KW@[0; 2) "fn"
4 WHITESPACE@[2; 3) 4 WHITESPACE@[2; 3) " "
5 NAME@[3; 4) 5 NAME@[3; 4)
6 IDENT@[3; 4) "f" 6 IDENT@[3; 4) "f"
7 TYPE_PARAM_LIST@[4; 48) 7 TYPE_PARAM_LIST@[4; 48)
8 L_ANGLE@[4; 5) 8 L_ANGLE@[4; 5) "<"
9 TYPE_PARAM@[5; 47) 9 TYPE_PARAM@[5; 47)
10 NAME@[5; 6) 10 NAME@[5; 6)
11 IDENT@[5; 6) "T" 11 IDENT@[5; 6) "T"
12 COLON@[6; 7) 12 COLON@[6; 7) ":"
13 WHITESPACE@[7; 8) 13 WHITESPACE@[7; 8) " "
14 L_PAREN@[8; 9) 14 TYPE_BOUND_LIST@[8; 47)
15 PATH_TYPE@[9; 13) 15 TYPE_BOUND@[8; 14)
16 PATH@[9; 13) 16 L_PAREN@[8; 9) "("
17 PATH_SEGMENT@[9; 13) 17 PATH_TYPE@[9; 13)
18 NAME_REF@[9; 13) 18 PATH@[9; 13)
19 IDENT@[9; 13) "Copy" 19 PATH_SEGMENT@[9; 13)
20 R_PAREN@[13; 14) 20 NAME_REF@[9; 13)
21 WHITESPACE@[14; 15) 21 IDENT@[9; 13) "Copy"
22 PLUS@[15; 16) 22 R_PAREN@[13; 14) ")"
23 WHITESPACE@[16; 17) 23 WHITESPACE@[14; 15) " "
24 L_PAREN@[17; 18) 24 PLUS@[15; 16) "+"
25 QUESTION@[18; 19) 25 WHITESPACE@[16; 17) " "
26 PATH_TYPE@[19; 24) 26 TYPE_BOUND@[17; 25)
27 PATH@[19; 24) 27 L_PAREN@[17; 18) "("
28 PATH_SEGMENT@[19; 24) 28 QUESTION@[18; 19) "?"
29 NAME_REF@[19; 24) 29 PATH_TYPE@[19; 24)
30 IDENT@[19; 24) "Sized" 30 PATH@[19; 24)
31 R_PAREN@[24; 25) 31 PATH_SEGMENT@[19; 24)
32 WHITESPACE@[25; 26) 32 NAME_REF@[19; 24)
33 PLUS@[26; 27) 33 IDENT@[19; 24) "Sized"
34 WHITESPACE@[27; 28) 34 R_PAREN@[24; 25) ")"
35 L_PAREN@[28; 29) 35 WHITESPACE@[25; 26) " "
36 FOR_TYPE@[29; 46) 36 PLUS@[26; 27) "+"
37 FOR_KW@[29; 32) 37 WHITESPACE@[27; 28) " "
38 TYPE_PARAM_LIST@[32; 36) 38 TYPE_BOUND@[28; 47)
39 L_ANGLE@[32; 33) 39 L_PAREN@[28; 29) "("
40 LIFETIME_PARAM@[33; 35) 40 FOR_TYPE@[29; 46)
41 LIFETIME@[33; 35) "'a" 41 FOR_KW@[29; 32) "for"
42 R_ANGLE@[35; 36) 42 TYPE_PARAM_LIST@[32; 36)
43 WHITESPACE@[36; 37) 43 L_ANGLE@[32; 33) "<"
44 PATH_TYPE@[37; 46) 44 LIFETIME_PARAM@[33; 35)
45 PATH@[37; 46) 45 LIFETIME@[33; 35) "\'a"
46 PATH_SEGMENT@[37; 46) 46 R_ANGLE@[35; 36) ">"
47 NAME_REF@[37; 42) 47 WHITESPACE@[36; 37) " "
48 IDENT@[37; 42) "Trait" 48 PATH_TYPE@[37; 46)
49 TYPE_ARG_LIST@[42; 46) 49 PATH@[37; 46)
50 L_ANGLE@[42; 43) 50 PATH_SEGMENT@[37; 46)
51 LIFETIME_ARG@[43; 45) 51 NAME_REF@[37; 42)
52 LIFETIME@[43; 45) "'a" 52 IDENT@[37; 42) "Trait"
53 R_ANGLE@[45; 46) 53 TYPE_ARG_LIST@[42; 46)
54 R_PAREN@[46; 47) 54 L_ANGLE@[42; 43) "<"
55 R_ANGLE@[47; 48) 55 LIFETIME_ARG@[43; 45)
56 LIFETIME@[43; 45) "\'a"
57 R_ANGLE@[45; 46) ">"
58 R_PAREN@[46; 47) ")"
59 R_ANGLE@[47; 48) ">"
56 PARAM_LIST@[48; 50) 60 PARAM_LIST@[48; 50)
57 L_PAREN@[48; 49) 61 L_PAREN@[48; 49) "("
58 R_PAREN@[49; 50) 62 R_PAREN@[49; 50) ")"
59 WHITESPACE@[50; 51) 63 WHITESPACE@[50; 51) " "
60 BLOCK@[51; 53) 64 BLOCK@[51; 53)
61 L_CURLY@[51; 52) 65 L_CURLY@[51; 52) "{"
62 R_CURLY@[52; 53) 66 R_CURLY@[52; 53) "}"
63 WHITESPACE@[53; 55) 67 WHITESPACE@[53; 55) "\n\n"
64 FN_DEF@[55; 239) 68 FN_DEF@[55; 239)
65 FN_KW@[55; 57) 69 FN_KW@[55; 57) "fn"
66 WHITESPACE@[57; 58) 70 WHITESPACE@[57; 58) " "
67 NAME@[58; 62) 71 NAME@[58; 62)
68 IDENT@[58; 62) "main" 72 IDENT@[58; 62) "main"
69 PARAM_LIST@[62; 64) 73 PARAM_LIST@[62; 64)
70 L_PAREN@[62; 63) 74 L_PAREN@[62; 63) "("
71 R_PAREN@[63; 64) 75 R_PAREN@[63; 64) ")"
72 WHITESPACE@[64; 65) 76 WHITESPACE@[64; 65) " "
73 BLOCK@[65; 239) 77 BLOCK@[65; 239)
74 L_CURLY@[65; 66) 78 L_CURLY@[65; 66) "{"
75 WHITESPACE@[66; 71) 79 WHITESPACE@[66; 71) "\n "
76 LET_STMT@[71; 121) 80 LET_STMT@[71; 121)
77 LET_KW@[71; 74) 81 LET_KW@[71; 74) "let"
78 WHITESPACE@[74; 75) 82 WHITESPACE@[74; 75) " "
79 PLACEHOLDER_PAT@[75; 76) 83 PLACEHOLDER_PAT@[75; 76)
80 UNDERSCORE@[75; 76) 84 UNDERSCORE@[75; 76) "_"
81 COLON@[76; 77) 85 COLON@[76; 77) ":"
82 WHITESPACE@[77; 78) 86 WHITESPACE@[77; 78) " "
83 PATH_TYPE@[78; 121) 87 DYN_TRAIT_TYPE@[78; 121)
84 PATH@[78; 88) 88 TYPE_BOUND_LIST@[78; 121)
85 PATH_SEGMENT@[78; 88) 89 TYPE_BOUND@[78; 88)
86 NAME_REF@[78; 81) 90 PATH_TYPE@[78; 88)
87 IDENT@[78; 81) "Box" 91 PATH@[78; 88)
88 TYPE_ARG_LIST@[81; 88) 92 PATH_SEGMENT@[78; 88)
89 L_ANGLE@[81; 82) 93 NAME_REF@[78; 81)
90 TYPE_ARG@[82; 88) 94 IDENT@[78; 81) "Box"
91 PAREN_TYPE@[82; 88) 95 TYPE_ARG_LIST@[81; 88)
92 L_PAREN@[82; 83) 96 L_ANGLE@[81; 82) "<"
93 PATH_TYPE@[83; 87) 97 TYPE_ARG@[82; 88)
94 PATH@[83; 87) 98 PAREN_TYPE@[82; 88)
95 PATH_SEGMENT@[83; 87) 99 L_PAREN@[82; 83) "("
96 NAME_REF@[83; 87) 100 PATH_TYPE@[83; 87)
97 IDENT@[83; 87) "Copy" 101 PATH@[83; 87)
98 R_PAREN@[87; 88) 102 PATH_SEGMENT@[83; 87)
99 err: `expected COMMA` 103 NAME_REF@[83; 87)
100 err: `expected R_ANGLE` 104 IDENT@[83; 87) "Copy"
101 WHITESPACE@[88; 89) 105 R_PAREN@[87; 88) ")"
102 PLUS@[89; 90) 106 err: `expected COMMA`
103 WHITESPACE@[90; 91) 107 err: `expected R_ANGLE`
104 L_PAREN@[91; 92) 108 WHITESPACE@[88; 89) " "
105 QUESTION@[92; 93) 109 PLUS@[89; 90) "+"
106 PATH_TYPE@[93; 98) 110 WHITESPACE@[90; 91) " "
107 PATH@[93; 98) 111 TYPE_BOUND@[91; 99)
108 PATH_SEGMENT@[93; 98) 112 L_PAREN@[91; 92) "("
109 NAME_REF@[93; 98) 113 QUESTION@[92; 93) "?"
110 IDENT@[93; 98) "Sized" 114 PATH_TYPE@[93; 98)
111 R_PAREN@[98; 99) 115 PATH@[93; 98)
112 WHITESPACE@[99; 100) 116 PATH_SEGMENT@[93; 98)
113 PLUS@[100; 101) 117 NAME_REF@[93; 98)
114 WHITESPACE@[101; 102) 118 IDENT@[93; 98) "Sized"
115 L_PAREN@[102; 103) 119 R_PAREN@[98; 99) ")"
116 FOR_TYPE@[103; 120) 120 WHITESPACE@[99; 100) " "
117 FOR_KW@[103; 106) 121 PLUS@[100; 101) "+"
118 TYPE_PARAM_LIST@[106; 110) 122 WHITESPACE@[101; 102) " "
119 L_ANGLE@[106; 107) 123 TYPE_BOUND@[102; 121)
120 LIFETIME_PARAM@[107; 109) 124 L_PAREN@[102; 103) "("
121 LIFETIME@[107; 109) "'a" 125 FOR_TYPE@[103; 120)
122 R_ANGLE@[109; 110) 126 FOR_KW@[103; 106) "for"
123 WHITESPACE@[110; 111) 127 TYPE_PARAM_LIST@[106; 110)
124 PATH_TYPE@[111; 120) 128 L_ANGLE@[106; 107) "<"
125 PATH@[111; 120) 129 LIFETIME_PARAM@[107; 109)
126 PATH_SEGMENT@[111; 120) 130 LIFETIME@[107; 109) "\'a"
127 NAME_REF@[111; 116) 131 R_ANGLE@[109; 110) ">"
128 IDENT@[111; 116) "Trait" 132 WHITESPACE@[110; 111) " "
129 TYPE_ARG_LIST@[116; 120) 133 PATH_TYPE@[111; 120)
130 L_ANGLE@[116; 117) 134 PATH@[111; 120)
131 LIFETIME_ARG@[117; 119) 135 PATH_SEGMENT@[111; 120)
132 LIFETIME@[117; 119) "'a" 136 NAME_REF@[111; 116)
133 R_ANGLE@[119; 120) 137 IDENT@[111; 116) "Trait"
134 R_PAREN@[120; 121) 138 TYPE_ARG_LIST@[116; 120)
135 err: `expected SEMI` 139 L_ANGLE@[116; 117) "<"
136 err: `expected expression` 140 LIFETIME_ARG@[117; 119)
141 LIFETIME@[117; 119) "\'a"
142 R_ANGLE@[119; 120) ">"
143 R_PAREN@[120; 121) ")"
144 err: `expected SEMI`
145 err: `expected expression`
137 EXPR_STMT@[121; 123) 146 EXPR_STMT@[121; 123)
138 ERROR@[121; 122) 147 ERROR@[121; 122)
139 R_ANGLE@[121; 122) 148 R_ANGLE@[121; 122) ">"
140 SEMI@[122; 123) 149 SEMI@[122; 123) ";"
141 WHITESPACE@[123; 128) 150 WHITESPACE@[123; 128) "\n "
142 LET_STMT@[128; 141) 151 LET_STMT@[128; 141)
143 LET_KW@[128; 131) 152 LET_KW@[128; 131) "let"
144 WHITESPACE@[131; 132) 153 WHITESPACE@[131; 132) " "
145 PLACEHOLDER_PAT@[132; 133) 154 PLACEHOLDER_PAT@[132; 133)
146 UNDERSCORE@[132; 133) 155 UNDERSCORE@[132; 133) "_"
147 COLON@[133; 134) 156 COLON@[133; 134) ":"
148 WHITESPACE@[134; 135) 157 WHITESPACE@[134; 135) " "
149 PATH_TYPE@[135; 141) 158 PATH_TYPE@[135; 141)
150 PATH@[135; 141) 159 PATH@[135; 141)
151 PATH_SEGMENT@[135; 141) 160 PATH_SEGMENT@[135; 141)
152 NAME_REF@[135; 138) 161 NAME_REF@[135; 138)
153 IDENT@[135; 138) "Box" 162 IDENT@[135; 138) "Box"
154 TYPE_ARG_LIST@[138; 141) 163 TYPE_ARG_LIST@[138; 141)
155 L_ANGLE@[138; 139) 164 L_ANGLE@[138; 139) "<"
156 TYPE_ARG@[139; 141) 165 TYPE_ARG@[139; 141)
157 PAREN_TYPE@[139; 141) 166 PAREN_TYPE@[139; 141)
158 L_PAREN@[139; 140) 167 L_PAREN@[139; 140) "("
159 err: `expected type` 168 err: `expected type`
160 ERROR@[140; 141) 169 ERROR@[140; 141)
161 QUESTION@[140; 141) 170 QUESTION@[140; 141) "?"
162 err: `expected R_PAREN` 171 err: `expected R_PAREN`
163 err: `expected COMMA` 172 err: `expected COMMA`
164 err: `expected R_ANGLE` 173 err: `expected R_ANGLE`
@@ -173,38 +182,38 @@ SOURCE_FILE@[0; 240)
173 err: `expected expression` 182 err: `expected expression`
174 EXPR_STMT@[146; 147) 183 EXPR_STMT@[146; 147)
175 ERROR@[146; 147) 184 ERROR@[146; 147)
176 R_PAREN@[146; 147) 185 R_PAREN@[146; 147) ")"
177 err: `expected SEMI` 186 err: `expected SEMI`
178 WHITESPACE@[147; 148) 187 WHITESPACE@[147; 148) " "
179 err: `expected expression` 188 err: `expected expression`
180 EXPR_STMT@[148; 149) 189 EXPR_STMT@[148; 149)
181 ERROR@[148; 149) 190 ERROR@[148; 149)
182 PLUS@[148; 149) 191 PLUS@[148; 149) "+"
183 err: `expected SEMI` 192 err: `expected SEMI`
184 WHITESPACE@[149; 150) 193 WHITESPACE@[149; 150) " "
185 EXPR_STMT@[150; 151) 194 EXPR_STMT@[150; 151)
186 PAREN_EXPR@[150; 151) 195 PAREN_EXPR@[150; 151)
187 L_PAREN@[150; 151) 196 L_PAREN@[150; 151) "("
188 err: `expected expression` 197 err: `expected expression`
189 err: `expected R_PAREN` 198 err: `expected R_PAREN`
190 err: `expected SEMI` 199 err: `expected SEMI`
191 EXPR_STMT@[151; 157) 200 EXPR_STMT@[151; 157)
192 FOR_EXPR@[151; 157) 201 FOR_EXPR@[151; 157)
193 FOR_KW@[151; 154) 202 FOR_KW@[151; 154) "for"
194 err: `expected pattern` 203 err: `expected pattern`
195 ERROR@[154; 155) 204 ERROR@[154; 155)
196 L_ANGLE@[154; 155) 205 L_ANGLE@[154; 155) "<"
197 err: `expected IN_KW` 206 err: `expected IN_KW`
198 err: `expected expression` 207 err: `expected expression`
199 ERROR@[155; 157) 208 ERROR@[155; 157)
200 LIFETIME@[155; 157) "'a" 209 LIFETIME@[155; 157) "\'a"
201 err: `expected a block` 210 err: `expected a block`
202 err: `expected expression` 211 err: `expected expression`
203 EXPR_STMT@[157; 158) 212 EXPR_STMT@[157; 158)
204 ERROR@[157; 158) 213 ERROR@[157; 158)
205 R_ANGLE@[157; 158) 214 R_ANGLE@[157; 158) ">"
206 err: `expected SEMI` 215 err: `expected SEMI`
207 WHITESPACE@[158; 159) 216 WHITESPACE@[158; 159) " "
208 EXPR_STMT@[159; 180) 217 EXPR_STMT@[159; 180)
209 BIN_EXPR@[159; 180) 218 BIN_EXPR@[159; 180)
210 BIN_EXPR@[159; 178) 219 BIN_EXPR@[159; 178)
@@ -215,96 +224,101 @@ SOURCE_FILE@[0; 240)
215 PATH_SEGMENT@[159; 164) 224 PATH_SEGMENT@[159; 164)
216 NAME_REF@[159; 164) 225 NAME_REF@[159; 164)
217 IDENT@[159; 164) "Trait" 226 IDENT@[159; 164) "Trait"
218 L_ANGLE@[164; 165) 227 L_ANGLE@[164; 165) "<"
219 err: `expected expression` 228 err: `expected expression`
220 ERROR@[165; 167) 229 ERROR@[165; 167)
221 LIFETIME@[165; 167) "'a" 230 LIFETIME@[165; 167) "\'a"
222 R_ANGLE@[167; 168) 231 R_ANGLE@[167; 168) ">"
223 err: `expected expression` 232 err: `expected expression`
224 ERROR@[168; 169) 233 ERROR@[168; 169)
225 R_PAREN@[168; 169) 234 R_PAREN@[168; 169) ")"
226 WHITESPACE@[169; 170) 235 WHITESPACE@[169; 170) " "
227 PLUS@[170; 171) 236 PLUS@[170; 171) "+"
228 WHITESPACE@[171; 172) 237 WHITESPACE@[171; 172) " "
229 PAREN_EXPR@[172; 178) 238 PAREN_EXPR@[172; 178)
230 L_PAREN@[172; 173) 239 L_PAREN@[172; 173) "("
231 PATH_EXPR@[173; 177) 240 PATH_EXPR@[173; 177)
232 PATH@[173; 177) 241 PATH@[173; 177)
233 PATH_SEGMENT@[173; 177) 242 PATH_SEGMENT@[173; 177)
234 NAME_REF@[173; 177) 243 NAME_REF@[173; 177)
235 IDENT@[173; 177) "Copy" 244 IDENT@[173; 177) "Copy"
236 R_PAREN@[177; 178) 245 R_PAREN@[177; 178) ")"
237 R_ANGLE@[178; 179) 246 R_ANGLE@[178; 179) ">"
238 err: `expected expression` 247 err: `expected expression`
239 ERROR@[179; 180) 248 ERROR@[179; 180)
240 SEMI@[179; 180) 249 SEMI@[179; 180) ";"
241 err: `expected SEMI` 250 err: `expected SEMI`
242 WHITESPACE@[180; 185) 251 WHITESPACE@[180; 185) "\n "
243 LET_STMT@[185; 235) 252 LET_STMT@[185; 235)
244 LET_KW@[185; 188) 253 LET_KW@[185; 188) "let"
245 WHITESPACE@[188; 189) 254 WHITESPACE@[188; 189) " "
246 PLACEHOLDER_PAT@[189; 190) 255 PLACEHOLDER_PAT@[189; 190)
247 UNDERSCORE@[189; 190) 256 UNDERSCORE@[189; 190) "_"
248 COLON@[190; 191) 257 COLON@[190; 191) ":"
249 WHITESPACE@[191; 192) 258 WHITESPACE@[191; 192) " "
250 PATH_TYPE@[192; 235) 259 DYN_TRAIT_TYPE@[192; 235)
251 PATH@[192; 215) 260 TYPE_BOUND_LIST@[192; 235)
252 PATH_SEGMENT@[192; 215) 261 TYPE_BOUND@[192; 215)
253 NAME_REF@[192; 195) 262 PATH_TYPE@[192; 215)
254 IDENT@[192; 195) "Box" 263 PATH@[192; 215)
255 TYPE_ARG_LIST@[195; 215) 264 PATH_SEGMENT@[192; 215)
256 L_ANGLE@[195; 196) 265 NAME_REF@[192; 195)
257 TYPE_ARG@[196; 215) 266 IDENT@[192; 195) "Box"
258 PAREN_TYPE@[196; 215) 267 TYPE_ARG_LIST@[195; 215)
259 L_PAREN@[196; 197) 268 L_ANGLE@[195; 196) "<"
260 FOR_TYPE@[197; 214) 269 TYPE_ARG@[196; 215)
261 FOR_KW@[197; 200) 270 PAREN_TYPE@[196; 215)
262 TYPE_PARAM_LIST@[200; 204) 271 L_PAREN@[196; 197) "("
263 L_ANGLE@[200; 201) 272 FOR_TYPE@[197; 214)
264 LIFETIME_PARAM@[201; 203) 273 FOR_KW@[197; 200) "for"
265 LIFETIME@[201; 203) "'a" 274 TYPE_PARAM_LIST@[200; 204)
266 R_ANGLE@[203; 204) 275 L_ANGLE@[200; 201) "<"
267 WHITESPACE@[204; 205) 276 LIFETIME_PARAM@[201; 203)
268 PATH_TYPE@[205; 214) 277 LIFETIME@[201; 203) "\'a"
269 PATH@[205; 214) 278 R_ANGLE@[203; 204) ">"
270 PATH_SEGMENT@[205; 214) 279 WHITESPACE@[204; 205) " "
271 NAME_REF@[205; 210) 280 PATH_TYPE@[205; 214)
272 IDENT@[205; 210) "Trait" 281 PATH@[205; 214)
273 TYPE_ARG_LIST@[210; 214) 282 PATH_SEGMENT@[205; 214)
274 L_ANGLE@[210; 211) 283 NAME_REF@[205; 210)
275 LIFETIME_ARG@[211; 213) 284 IDENT@[205; 210) "Trait"
276 LIFETIME@[211; 213) "'a" 285 TYPE_ARG_LIST@[210; 214)
277 R_ANGLE@[213; 214) 286 L_ANGLE@[210; 211) "<"
278 R_PAREN@[214; 215) 287 LIFETIME_ARG@[211; 213)
279 err: `expected COMMA` 288 LIFETIME@[211; 213) "\'a"
280 err: `expected R_ANGLE` 289 R_ANGLE@[213; 214) ">"
281 WHITESPACE@[215; 216) 290 R_PAREN@[214; 215) ")"
282 PLUS@[216; 217) 291 err: `expected COMMA`
283 WHITESPACE@[217; 218) 292 err: `expected R_ANGLE`
284 L_PAREN@[218; 219) 293 WHITESPACE@[215; 216) " "
285 PATH_TYPE@[219; 223) 294 PLUS@[216; 217) "+"
286 PATH@[219; 223) 295 WHITESPACE@[217; 218) " "
287 PATH_SEGMENT@[219; 223) 296 TYPE_BOUND@[218; 224)
288 NAME_REF@[219; 223) 297 L_PAREN@[218; 219) "("
289 IDENT@[219; 223) "Copy" 298 PATH_TYPE@[219; 223)
290 R_PAREN@[223; 224) 299 PATH@[219; 223)
291 WHITESPACE@[224; 225) 300 PATH_SEGMENT@[219; 223)
292 PLUS@[225; 226) 301 NAME_REF@[219; 223)
293 WHITESPACE@[226; 227) 302 IDENT@[219; 223) "Copy"
294 L_PAREN@[227; 228) 303 R_PAREN@[223; 224) ")"
295 QUESTION@[228; 229) 304 WHITESPACE@[224; 225) " "
296 PATH_TYPE@[229; 234) 305 PLUS@[225; 226) "+"
297 PATH@[229; 234) 306 WHITESPACE@[226; 227) " "
298 PATH_SEGMENT@[229; 234) 307 TYPE_BOUND@[227; 235)
299 NAME_REF@[229; 234) 308 L_PAREN@[227; 228) "("
300 IDENT@[229; 234) "Sized" 309 QUESTION@[228; 229) "?"
301 R_PAREN@[234; 235) 310 PATH_TYPE@[229; 234)
302 err: `expected SEMI` 311 PATH@[229; 234)
303 err: `expected expression` 312 PATH_SEGMENT@[229; 234)
313 NAME_REF@[229; 234)
314 IDENT@[229; 234) "Sized"
315 R_PAREN@[234; 235) ")"
316 err: `expected SEMI`
317 err: `expected expression`
304 EXPR_STMT@[235; 237) 318 EXPR_STMT@[235; 237)
305 ERROR@[235; 236) 319 ERROR@[235; 236)
306 R_ANGLE@[235; 236) 320 R_ANGLE@[235; 236) ">"
307 SEMI@[236; 237) 321 SEMI@[236; 237) ";"
308 WHITESPACE@[237; 238) 322 WHITESPACE@[237; 238) "\n"
309 R_CURLY@[238; 239) 323 R_CURLY@[238; 239) "}"
310 WHITESPACE@[239; 240) 324 WHITESPACE@[239; 240) "\n"
diff --git a/crates/ra_syntax/tests/data/parser/err/0025_nope.txt b/crates/ra_syntax/tests/data/parser/err/0025_nope.txt
index e0824ca56..b8d769947 100644
--- a/crates/ra_syntax/tests/data/parser/err/0025_nope.txt
+++ b/crates/ra_syntax/tests/data/parser/err/0025_nope.txt
@@ -1,158 +1,158 @@
1SOURCE_FILE@[0; 575) 1SOURCE_FILE@[0; 575)
2 FN_DEF@[0; 574) 2 FN_DEF@[0; 574)
3 FN_KW@[0; 2) 3 FN_KW@[0; 2) "fn"
4 WHITESPACE@[2; 3) 4 WHITESPACE@[2; 3) " "
5 NAME@[3; 7) 5 NAME@[3; 7)
6 IDENT@[3; 7) "main" 6 IDENT@[3; 7) "main"
7 PARAM_LIST@[7; 9) 7 PARAM_LIST@[7; 9)
8 L_PAREN@[7; 8) 8 L_PAREN@[7; 8) "("
9 R_PAREN@[8; 9) 9 R_PAREN@[8; 9) ")"
10 WHITESPACE@[9; 10) 10 WHITESPACE@[9; 10) " "
11 BLOCK@[10; 574) 11 BLOCK@[10; 574)
12 L_CURLY@[10; 11) 12 L_CURLY@[10; 11) "{"
13 WHITESPACE@[11; 16) 13 WHITESPACE@[11; 16) "\n "
14 ENUM_DEF@[16; 152) 14 ENUM_DEF@[16; 152)
15 ENUM_KW@[16; 20) 15 ENUM_KW@[16; 20) "enum"
16 WHITESPACE@[20; 21) 16 WHITESPACE@[20; 21) " "
17 NAME@[21; 25) 17 NAME@[21; 25)
18 IDENT@[21; 25) "Test" 18 IDENT@[21; 25) "Test"
19 WHITESPACE@[25; 26) 19 WHITESPACE@[25; 26) " "
20 ENUM_VARIANT_LIST@[26; 152) 20 ENUM_VARIANT_LIST@[26; 152)
21 L_CURLY@[26; 27) 21 L_CURLY@[26; 27) "{"
22 WHITESPACE@[27; 36) 22 WHITESPACE@[27; 36) "\n "
23 ENUM_VARIANT@[36; 40) 23 ENUM_VARIANT@[36; 40)
24 NAME@[36; 40) 24 NAME@[36; 40)
25 IDENT@[36; 40) "Var1" 25 IDENT@[36; 40) "Var1"
26 COMMA@[40; 41) 26 COMMA@[40; 41) ","
27 WHITESPACE@[41; 50) 27 WHITESPACE@[41; 50) "\n "
28 ENUM_VARIANT@[50; 62) 28 ENUM_VARIANT@[50; 62)
29 NAME@[50; 54) 29 NAME@[50; 54)
30 IDENT@[50; 54) "Var2" 30 IDENT@[50; 54) "Var2"
31 POS_FIELD_DEF_LIST@[54; 62) 31 POS_FIELD_DEF_LIST@[54; 62)
32 L_PAREN@[54; 55) 32 L_PAREN@[54; 55) "("
33 POS_FIELD_DEF@[55; 61) 33 POS_FIELD_DEF@[55; 61)
34 PATH_TYPE@[55; 61) 34 PATH_TYPE@[55; 61)
35 PATH@[55; 61) 35 PATH@[55; 61)
36 PATH_SEGMENT@[55; 61) 36 PATH_SEGMENT@[55; 61)
37 NAME_REF@[55; 61) 37 NAME_REF@[55; 61)
38 IDENT@[55; 61) "String" 38 IDENT@[55; 61) "String"
39 R_PAREN@[61; 62) 39 R_PAREN@[61; 62) ")"
40 COMMA@[62; 63) 40 COMMA@[62; 63) ","
41 WHITESPACE@[63; 72) 41 WHITESPACE@[63; 72) "\n "
42 ENUM_VARIANT@[72; 145) 42 ENUM_VARIANT@[72; 145)
43 NAME@[72; 76) 43 NAME@[72; 76)
44 IDENT@[72; 76) "Var3" 44 IDENT@[72; 76) "Var3"
45 WHITESPACE@[76; 77) 45 WHITESPACE@[76; 77) " "
46 NAMED_FIELD_DEF_LIST@[77; 145) 46 NAMED_FIELD_DEF_LIST@[77; 145)
47 L_CURLY@[77; 78) 47 L_CURLY@[77; 78) "{"
48 WHITESPACE@[78; 91) 48 WHITESPACE@[78; 91) "\n "
49 NAMED_FIELD_DEF@[91; 95) 49 NAMED_FIELD_DEF@[91; 95)
50 NAME@[91; 94) 50 NAME@[91; 94)
51 IDENT@[91; 94) "abc" 51 IDENT@[91; 94) "abc"
52 COLON@[94; 95) 52 COLON@[94; 95) ":"
53 err: `expected type` 53 err: `expected type`
54 err: `expected COMMA` 54 err: `expected COMMA`
55 WHITESPACE@[95; 96) 55 WHITESPACE@[95; 96) " "
56 err: `expected field` 56 err: `expected field`
57 ERROR@[96; 98) 57 ERROR@[96; 98)
58 L_CURLY@[96; 97) 58 L_CURLY@[96; 97) "{"
59 R_CURLY@[97; 98) 59 R_CURLY@[97; 98) "}"
60 err: `expected field declaration` 60 err: `expected field declaration`
61 ERROR@[98; 99) 61 ERROR@[98; 99)
62 COMMA@[98; 99) 62 COMMA@[98; 99) ","
63 WHITESPACE@[99; 100) 63 WHITESPACE@[99; 100) " "
64 COMMENT@[100; 135) 64 COMMENT@[100; 135) "//~ ERROR: expected t ..."
65 WHITESPACE@[135; 144) 65 WHITESPACE@[135; 144) "\n "
66 R_CURLY@[144; 145) 66 R_CURLY@[144; 145) "}"
67 COMMA@[145; 146) 67 COMMA@[145; 146) ","
68 WHITESPACE@[146; 151) 68 WHITESPACE@[146; 151) "\n "
69 R_CURLY@[151; 152) 69 R_CURLY@[151; 152) "}"
70 WHITESPACE@[152; 158) 70 WHITESPACE@[152; 158) "\n\n "
71 COMMENT@[158; 171) 71 COMMENT@[158; 171) "// recover..."
72 WHITESPACE@[171; 176) 72 WHITESPACE@[171; 176) "\n "
73 LET_STMT@[176; 186) 73 LET_STMT@[176; 186)
74 LET_KW@[176; 179) 74 LET_KW@[176; 179) "let"
75 WHITESPACE@[179; 180) 75 WHITESPACE@[179; 180) " "
76 BIND_PAT@[180; 181) 76 BIND_PAT@[180; 181)
77 NAME@[180; 181) 77 NAME@[180; 181)
78 IDENT@[180; 181) "a" 78 IDENT@[180; 181) "a"
79 WHITESPACE@[181; 182) 79 WHITESPACE@[181; 182) " "
80 EQ@[182; 183) 80 EQ@[182; 183) "="
81 WHITESPACE@[183; 184) 81 WHITESPACE@[183; 184) " "
82 LITERAL@[184; 185) 82 LITERAL@[184; 185)
83 INT_NUMBER@[184; 185) "1" 83 INT_NUMBER@[184; 185) "1"
84 SEMI@[185; 186) 84 SEMI@[185; 186) ";"
85 WHITESPACE@[186; 191) 85 WHITESPACE@[186; 191) "\n "
86 ENUM_DEF@[191; 223) 86 ENUM_DEF@[191; 223)
87 ENUM_KW@[191; 195) 87 ENUM_KW@[191; 195) "enum"
88 WHITESPACE@[195; 196) 88 WHITESPACE@[195; 196) " "
89 NAME@[196; 201) 89 NAME@[196; 201)
90 IDENT@[196; 201) "Test2" 90 IDENT@[196; 201) "Test2"
91 WHITESPACE@[201; 202) 91 WHITESPACE@[201; 202) " "
92 ENUM_VARIANT_LIST@[202; 223) 92 ENUM_VARIANT_LIST@[202; 223)
93 L_CURLY@[202; 203) 93 L_CURLY@[202; 203) "{"
94 WHITESPACE@[203; 212) 94 WHITESPACE@[203; 212) "\n "
95 ENUM_VARIANT@[212; 216) 95 ENUM_VARIANT@[212; 216)
96 NAME@[212; 216) 96 NAME@[212; 216)
97 IDENT@[212; 216) "Fine" 97 IDENT@[212; 216) "Fine"
98 COMMA@[216; 217) 98 COMMA@[216; 217) ","
99 WHITESPACE@[217; 222) 99 WHITESPACE@[217; 222) "\n "
100 R_CURLY@[222; 223) 100 R_CURLY@[222; 223) "}"
101 WHITESPACE@[223; 229) 101 WHITESPACE@[223; 229) "\n\n "
102 ENUM_DEF@[229; 300) 102 ENUM_DEF@[229; 300)
103 ENUM_KW@[229; 233) 103 ENUM_KW@[229; 233) "enum"
104 WHITESPACE@[233; 234) 104 WHITESPACE@[233; 234) " "
105 NAME@[234; 239) 105 NAME@[234; 239)
106 IDENT@[234; 239) "Test3" 106 IDENT@[234; 239) "Test3"
107 WHITESPACE@[239; 240) 107 WHITESPACE@[239; 240) " "
108 ENUM_VARIANT_LIST@[240; 300) 108 ENUM_VARIANT_LIST@[240; 300)
109 L_CURLY@[240; 241) 109 L_CURLY@[240; 241) "{"
110 WHITESPACE@[241; 250) 110 WHITESPACE@[241; 250) "\n "
111 ENUM_VARIANT@[250; 293) 111 ENUM_VARIANT@[250; 293)
112 NAME@[250; 259) 112 NAME@[250; 259)
113 IDENT@[250; 259) "StillFine" 113 IDENT@[250; 259) "StillFine"
114 WHITESPACE@[259; 260) 114 WHITESPACE@[259; 260) " "
115 NAMED_FIELD_DEF_LIST@[260; 293) 115 NAMED_FIELD_DEF_LIST@[260; 293)
116 L_CURLY@[260; 261) 116 L_CURLY@[260; 261) "{"
117 WHITESPACE@[261; 274) 117 WHITESPACE@[261; 274) "\n "
118 NAMED_FIELD_DEF@[274; 282) 118 NAMED_FIELD_DEF@[274; 282)
119 NAME@[274; 277) 119 NAME@[274; 277)
120 IDENT@[274; 277) "def" 120 IDENT@[274; 277) "def"
121 COLON@[277; 278) 121 COLON@[277; 278) ":"
122 WHITESPACE@[278; 279) 122 WHITESPACE@[278; 279) " "
123 PATH_TYPE@[279; 282) 123 PATH_TYPE@[279; 282)
124 PATH@[279; 282) 124 PATH@[279; 282)
125 PATH_SEGMENT@[279; 282) 125 PATH_SEGMENT@[279; 282)
126 NAME_REF@[279; 282) 126 NAME_REF@[279; 282)
127 IDENT@[279; 282) "i32" 127 IDENT@[279; 282) "i32"
128 COMMA@[282; 283) 128 COMMA@[282; 283) ","
129 WHITESPACE@[283; 292) 129 WHITESPACE@[283; 292) "\n "
130 R_CURLY@[292; 293) 130 R_CURLY@[292; 293) "}"
131 COMMA@[293; 294) 131 COMMA@[293; 294) ","
132 WHITESPACE@[294; 299) 132 WHITESPACE@[294; 299) "\n "
133 R_CURLY@[299; 300) 133 R_CURLY@[299; 300) "}"
134 WHITESPACE@[300; 306) 134 WHITESPACE@[300; 306) "\n\n "
135 EXPR_STMT@[306; 459) 135 EXPR_STMT@[306; 459)
136 BLOCK_EXPR@[306; 459) 136 BLOCK_EXPR@[306; 459)
137 BLOCK@[306; 459) 137 BLOCK@[306; 459)
138 L_CURLY@[306; 307) 138 L_CURLY@[306; 307) "{"
139 WHITESPACE@[307; 316) 139 WHITESPACE@[307; 316) "\n "
140 ENUM_DEF@[316; 453) 140 ENUM_DEF@[316; 453)
141 COMMENT@[316; 329) 141 COMMENT@[316; 329) "// fail again"
142 WHITESPACE@[329; 338) 142 WHITESPACE@[329; 338) "\n "
143 ENUM_KW@[338; 342) 143 ENUM_KW@[338; 342) "enum"
144 WHITESPACE@[342; 343) 144 WHITESPACE@[342; 343) " "
145 NAME@[343; 348) 145 NAME@[343; 348)
146 IDENT@[343; 348) "Test4" 146 IDENT@[343; 348) "Test4"
147 WHITESPACE@[348; 349) 147 WHITESPACE@[348; 349) " "
148 ENUM_VARIANT_LIST@[349; 453) 148 ENUM_VARIANT_LIST@[349; 453)
149 L_CURLY@[349; 350) 149 L_CURLY@[349; 350) "{"
150 WHITESPACE@[350; 363) 150 WHITESPACE@[350; 363) "\n "
151 ENUM_VARIANT@[363; 372) 151 ENUM_VARIANT@[363; 372)
152 NAME@[363; 367) 152 NAME@[363; 367)
153 IDENT@[363; 367) "Nope" 153 IDENT@[363; 367) "Nope"
154 POS_FIELD_DEF_LIST@[367; 372) 154 POS_FIELD_DEF_LIST@[367; 372)
155 L_PAREN@[367; 368) 155 L_PAREN@[367; 368) "("
156 POS_FIELD_DEF@[368; 371) 156 POS_FIELD_DEF@[368; 371)
157 PATH_TYPE@[368; 371) 157 PATH_TYPE@[368; 371)
158 PATH@[368; 371) 158 PATH@[368; 371)
@@ -160,44 +160,44 @@ SOURCE_FILE@[0; 575)
160 NAME_REF@[368; 371) 160 NAME_REF@[368; 371)
161 IDENT@[368; 371) "i32" 161 IDENT@[368; 371) "i32"
162 err: `expected COMMA` 162 err: `expected COMMA`
163 WHITESPACE@[371; 372) 163 WHITESPACE@[371; 372) " "
164 err: `expected a type` 164 err: `expected a type`
165 err: `expected R_PAREN` 165 err: `expected R_PAREN`
166 err: `expected COMMA` 166 err: `expected COMMA`
167 err: `expected enum variant` 167 err: `expected enum variant`
168 ERROR@[372; 372) 168 ERROR@[372; 372)
169 ERROR@[372; 374) 169 ERROR@[372; 374)
170 L_CURLY@[372; 373) 170 L_CURLY@[372; 373) "{"
171 R_CURLY@[373; 374) 171 R_CURLY@[373; 374) "}"
172 err: `expected enum variant` 172 err: `expected enum variant`
173 ERROR@[374; 375) 173 ERROR@[374; 375)
174 R_PAREN@[374; 375) 174 R_PAREN@[374; 375) ")"
175 WHITESPACE@[375; 376) 175 WHITESPACE@[375; 376) " "
176 COMMENT@[376; 396) 176 COMMENT@[376; 396) "//~ ERROR: found `{`"
177 WHITESPACE@[396; 422) 177 WHITESPACE@[396; 422) "\n ..."
178 COMMENT@[422; 443) 178 COMMENT@[422; 443) "//~^ ERROR: found `{`"
179 WHITESPACE@[443; 452) 179 WHITESPACE@[443; 452) "\n "
180 R_CURLY@[452; 453) 180 R_CURLY@[452; 453) "}"
181 WHITESPACE@[453; 458) 181 WHITESPACE@[453; 458) "\n "
182 R_CURLY@[458; 459) 182 R_CURLY@[458; 459) "}"
183 WHITESPACE@[459; 464) 183 WHITESPACE@[459; 464) "\n "
184 COMMENT@[464; 486) 184 COMMENT@[464; 486) "// still recover later"
185 WHITESPACE@[486; 491) 185 WHITESPACE@[486; 491) "\n "
186 LET_STMT@[491; 510) 186 LET_STMT@[491; 510)
187 LET_KW@[491; 494) 187 LET_KW@[491; 494) "let"
188 WHITESPACE@[494; 495) 188 WHITESPACE@[494; 495) " "
189 BIND_PAT@[495; 505) 189 BIND_PAT@[495; 505)
190 NAME@[495; 505) 190 NAME@[495; 505)
191 IDENT@[495; 505) "bad_syntax" 191 IDENT@[495; 505) "bad_syntax"
192 WHITESPACE@[505; 506) 192 WHITESPACE@[505; 506) " "
193 EQ@[506; 507) 193 EQ@[506; 507) "="
194 WHITESPACE@[507; 508) 194 WHITESPACE@[507; 508) " "
195 err: `expected expression` 195 err: `expected expression`
196 ERROR@[508; 509) 196 ERROR@[508; 509)
197 UNDERSCORE@[508; 509) 197 UNDERSCORE@[508; 509) "_"
198 SEMI@[509; 510) 198 SEMI@[509; 510) ";"
199 WHITESPACE@[510; 511) 199 WHITESPACE@[510; 511) " "
200 COMMENT@[511; 572) 200 COMMENT@[511; 572) "//~ ERROR: expected e ..."
201 WHITESPACE@[572; 573) 201 WHITESPACE@[572; 573) "\n"
202 R_CURLY@[573; 574) 202 R_CURLY@[573; 574) "}"
203 WHITESPACE@[574; 575) 203 WHITESPACE@[574; 575) "\n"
diff --git a/crates/ra_syntax/tests/data/parser/err/0026_imp_recovery.txt b/crates/ra_syntax/tests/data/parser/err/0026_imp_recovery.txt
index 9b5fadcf7..cfd06c9c9 100644
--- a/crates/ra_syntax/tests/data/parser/err/0026_imp_recovery.txt
+++ b/crates/ra_syntax/tests/data/parser/err/0026_imp_recovery.txt
@@ -1,47 +1,49 @@
1SOURCE_FILE@[0; 38) 1SOURCE_FILE@[0; 38)
2 IMPL_BLOCK@[0; 14) 2 IMPL_BLOCK@[0; 14)
3 IMPL_KW@[0; 4) 3 IMPL_KW@[0; 4) "impl"
4 TYPE_PARAM_LIST@[4; 14) 4 TYPE_PARAM_LIST@[4; 14)
5 L_ANGLE@[4; 5) 5 L_ANGLE@[4; 5) "<"
6 TYPE_PARAM@[5; 13) 6 TYPE_PARAM@[5; 13)
7 NAME@[5; 6) 7 NAME@[5; 6)
8 IDENT@[5; 6) "T" 8 IDENT@[5; 6) "T"
9 COLON@[6; 7) 9 COLON@[6; 7) ":"
10 WHITESPACE@[7; 8) 10 WHITESPACE@[7; 8) " "
11 PATH_TYPE@[8; 13) 11 TYPE_BOUND_LIST@[8; 13)
12 PATH@[8; 13) 12 TYPE_BOUND@[8; 13)
13 PATH_SEGMENT@[8; 13) 13 PATH_TYPE@[8; 13)
14 NAME_REF@[8; 13) 14 PATH@[8; 13)
15 IDENT@[8; 13) "Clone" 15 PATH_SEGMENT@[8; 13)
16 R_ANGLE@[13; 14) 16 NAME_REF@[8; 13)
17 IDENT@[8; 13) "Clone"
18 R_ANGLE@[13; 14) ">"
17 err: `expected trait or type` 19 err: `expected trait or type`
18 err: `expected `{`` 20 err: `expected `{``
19 WHITESPACE@[14; 15) 21 WHITESPACE@[14; 15) "\n"
20 IMPL_BLOCK@[15; 37) 22 IMPL_BLOCK@[15; 37)
21 IMPL_KW@[15; 19) 23 IMPL_KW@[15; 19) "impl"
22 TYPE_PARAM_LIST@[19; 22) 24 TYPE_PARAM_LIST@[19; 22)
23 L_ANGLE@[19; 20) 25 L_ANGLE@[19; 20) "<"
24 TYPE_PARAM@[20; 21) 26 TYPE_PARAM@[20; 21)
25 NAME@[20; 21) 27 NAME@[20; 21)
26 IDENT@[20; 21) "T" 28 IDENT@[20; 21) "T"
27 R_ANGLE@[21; 22) 29 R_ANGLE@[21; 22) ">"
28 WHITESPACE@[22; 23) 30 WHITESPACE@[22; 23) " "
29 PATH_TYPE@[23; 34) 31 PATH_TYPE@[23; 34)
30 PATH@[23; 34) 32 PATH@[23; 34)
31 PATH_SEGMENT@[23; 34) 33 PATH_SEGMENT@[23; 34)
32 NAME_REF@[23; 31) 34 NAME_REF@[23; 31)
33 IDENT@[23; 31) "OnceCell" 35 IDENT@[23; 31) "OnceCell"
34 TYPE_ARG_LIST@[31; 34) 36 TYPE_ARG_LIST@[31; 34)
35 L_ANGLE@[31; 32) 37 L_ANGLE@[31; 32) "<"
36 TYPE_ARG@[32; 33) 38 TYPE_ARG@[32; 33)
37 PATH_TYPE@[32; 33) 39 PATH_TYPE@[32; 33)
38 PATH@[32; 33) 40 PATH@[32; 33)
39 PATH_SEGMENT@[32; 33) 41 PATH_SEGMENT@[32; 33)
40 NAME_REF@[32; 33) 42 NAME_REF@[32; 33)
41 IDENT@[32; 33) "T" 43 IDENT@[32; 33) "T"
42 R_ANGLE@[33; 34) 44 R_ANGLE@[33; 34) ">"
43 WHITESPACE@[34; 35) 45 WHITESPACE@[34; 35) " "
44 ITEM_LIST@[35; 37) 46 ITEM_LIST@[35; 37)
45 L_CURLY@[35; 36) 47 L_CURLY@[35; 36) "{"
46 R_CURLY@[36; 37) 48 R_CURLY@[36; 37) "}"
47 WHITESPACE@[37; 38) 49 WHITESPACE@[37; 38) "\n"
diff --git a/crates/ra_syntax/tests/data/parser/err/0027_incomplere_where_for.txt b/crates/ra_syntax/tests/data/parser/err/0027_incomplere_where_for.txt
index 8a2a73b9b..c87c2c936 100644
--- a/crates/ra_syntax/tests/data/parser/err/0027_incomplere_where_for.txt
+++ b/crates/ra_syntax/tests/data/parser/err/0027_incomplere_where_for.txt
@@ -1,28 +1,28 @@
1SOURCE_FILE@[0; 30) 1SOURCE_FILE@[0; 30)
2 FN_DEF@[0; 29) 2 FN_DEF@[0; 29)
3 FN_KW@[0; 2) 3 FN_KW@[0; 2) "fn"
4 WHITESPACE@[2; 3) 4 WHITESPACE@[2; 3) " "
5 NAME@[3; 6) 5 NAME@[3; 6)
6 IDENT@[3; 6) "foo" 6 IDENT@[3; 6) "foo"
7 PARAM_LIST@[6; 8) 7 PARAM_LIST@[6; 8)
8 L_PAREN@[6; 7) 8 L_PAREN@[6; 7) "("
9 R_PAREN@[7; 8) 9 R_PAREN@[7; 8) ")"
10 WHITESPACE@[8; 13) 10 WHITESPACE@[8; 13) "\n "
11 WHERE_CLAUSE@[13; 26) 11 WHERE_CLAUSE@[13; 26)
12 WHERE_KW@[13; 18) 12 WHERE_KW@[13; 18) "where"
13 WHITESPACE@[18; 19) 13 WHITESPACE@[18; 19) " "
14 WHERE_PRED@[19; 26) 14 WHERE_PRED@[19; 26)
15 FOR_TYPE@[19; 26) 15 FOR_TYPE@[19; 26)
16 FOR_KW@[19; 22) 16 FOR_KW@[19; 22) "for"
17 TYPE_PARAM_LIST@[22; 26) 17 TYPE_PARAM_LIST@[22; 26)
18 L_ANGLE@[22; 23) 18 L_ANGLE@[22; 23) "<"
19 LIFETIME_PARAM@[23; 25) 19 LIFETIME_PARAM@[23; 25)
20 LIFETIME@[23; 25) "'a" 20 LIFETIME@[23; 25) "\'a"
21 R_ANGLE@[25; 26) 21 R_ANGLE@[25; 26) ">"
22 err: `expected a path` 22 err: `expected a path`
23 err: `expected colon` 23 err: `expected colon`
24 WHITESPACE@[26; 27) 24 WHITESPACE@[26; 27) "\n"
25 BLOCK@[27; 29) 25 BLOCK@[27; 29)
26 L_CURLY@[27; 28) 26 L_CURLY@[27; 28) "{"
27 R_CURLY@[28; 29) 27 R_CURLY@[28; 29) "}"
28 WHITESPACE@[29; 30) 28 WHITESPACE@[29; 30) "\n"
diff --git a/crates/ra_syntax/tests/data/parser/err/0028_macro_2.0.txt b/crates/ra_syntax/tests/data/parser/err/0028_macro_2.0.txt
index 181ccfa25..97ec4a5ab 100644
--- a/crates/ra_syntax/tests/data/parser/err/0028_macro_2.0.txt
+++ b/crates/ra_syntax/tests/data/parser/err/0028_macro_2.0.txt
@@ -5,80 +5,80 @@ SOURCE_FILE@[0; 349)
5 NAME_REF@[0; 5) 5 NAME_REF@[0; 5)
6 IDENT@[0; 5) "macro" 6 IDENT@[0; 5) "macro"
7 err: `expected EXCL` 7 err: `expected EXCL`
8 WHITESPACE@[5; 6) 8 WHITESPACE@[5; 6) " "
9 NAME@[6; 21) 9 NAME@[6; 21)
10 IDENT@[6; 21) "parse_use_trees" 10 IDENT@[6; 21) "parse_use_trees"
11 TOKEN_TREE@[21; 41) 11 TOKEN_TREE@[21; 41)
12 L_PAREN@[21; 22) 12 L_PAREN@[21; 22) "("
13 DOLLAR@[22; 23) 13 DOLLAR@[22; 23) "$"
14 TOKEN_TREE@[23; 32) 14 TOKEN_TREE@[23; 32)
15 L_PAREN@[23; 24) 15 L_PAREN@[23; 24) "("
16 DOLLAR@[24; 25) 16 DOLLAR@[24; 25) "$"
17 IDENT@[25; 26) "s" 17 IDENT@[25; 26) "s"
18 COLON@[26; 27) 18 COLON@[26; 27) ":"
19 IDENT@[27; 31) "expr" 19 IDENT@[27; 31) "expr"
20 R_PAREN@[31; 32) 20 R_PAREN@[31; 32) ")"
21 COMMA@[32; 33) 21 COMMA@[32; 33) ","
22 STAR@[33; 34) 22 STAR@[33; 34) "*"
23 WHITESPACE@[34; 35) 23 WHITESPACE@[34; 35) " "
24 DOLLAR@[35; 36) 24 DOLLAR@[35; 36) "$"
25 TOKEN_TREE@[36; 39) 25 TOKEN_TREE@[36; 39)
26 L_PAREN@[36; 37) 26 L_PAREN@[36; 37) "("
27 COMMA@[37; 38) 27 COMMA@[37; 38) ","
28 R_PAREN@[38; 39) 28 R_PAREN@[38; 39) ")"
29 STAR@[39; 40) 29 STAR@[39; 40) "*"
30 R_PAREN@[40; 41) 30 R_PAREN@[40; 41) ")"
31 err: `expected SEMI` 31 err: `expected SEMI`
32 WHITESPACE@[41; 42) 32 WHITESPACE@[41; 42) " "
33 err: `expected an item` 33 err: `expected an item`
34 ERROR@[42; 93) 34 ERROR@[42; 93)
35 L_CURLY@[42; 43) 35 L_CURLY@[42; 43) "{"
36 WHITESPACE@[43; 48) 36 WHITESPACE@[43; 48) "\n "
37 MACRO_CALL@[48; 91) 37 MACRO_CALL@[48; 91)
38 PATH@[48; 51) 38 PATH@[48; 51)
39 PATH_SEGMENT@[48; 51) 39 PATH_SEGMENT@[48; 51)
40 NAME_REF@[48; 51) 40 NAME_REF@[48; 51)
41 IDENT@[48; 51) "vec" 41 IDENT@[48; 51) "vec"
42 EXCL@[51; 52) 42 EXCL@[51; 52) "!"
43 TOKEN_TREE@[52; 91) 43 TOKEN_TREE@[52; 91)
44 L_BRACK@[52; 53) 44 L_BRACK@[52; 53) "["
45 WHITESPACE@[53; 62) 45 WHITESPACE@[53; 62) "\n "
46 DOLLAR@[62; 63) 46 DOLLAR@[62; 63) "$"
47 TOKEN_TREE@[63; 84) 47 TOKEN_TREE@[63; 84)
48 L_PAREN@[63; 64) 48 L_PAREN@[63; 64) "("
49 IDENT@[64; 78) "parse_use_tree" 49 IDENT@[64; 78) "parse_use_tree"
50 TOKEN_TREE@[78; 82) 50 TOKEN_TREE@[78; 82)
51 L_PAREN@[78; 79) 51 L_PAREN@[78; 79) "("
52 DOLLAR@[79; 80) 52 DOLLAR@[79; 80) "$"
53 IDENT@[80; 81) "s" 53 IDENT@[80; 81) "s"
54 R_PAREN@[81; 82) 54 R_PAREN@[81; 82) ")"
55 COMMA@[82; 83) 55 COMMA@[82; 83) ","
56 R_PAREN@[83; 84) 56 R_PAREN@[83; 84) ")"
57 STAR@[84; 85) 57 STAR@[84; 85) "*"
58 WHITESPACE@[85; 90) 58 WHITESPACE@[85; 90) "\n "
59 R_BRACK@[90; 91) 59 R_BRACK@[90; 91) "]"
60 WHITESPACE@[91; 92) 60 WHITESPACE@[91; 92) "\n"
61 R_CURLY@[92; 93) 61 R_CURLY@[92; 93) "}"
62 WHITESPACE@[93; 95) 62 WHITESPACE@[93; 95) "\n\n"
63 FN_DEF@[95; 348) 63 FN_DEF@[95; 348)
64 ATTR@[95; 102) 64 ATTR@[95; 102)
65 POUND@[95; 96) 65 POUND@[95; 96) "#"
66 TOKEN_TREE@[96; 102) 66 TOKEN_TREE@[96; 102)
67 L_BRACK@[96; 97) 67 L_BRACK@[96; 97) "["
68 IDENT@[97; 101) "test" 68 IDENT@[97; 101) "test"
69 R_BRACK@[101; 102) 69 R_BRACK@[101; 102) "]"
70 WHITESPACE@[102; 103) 70 WHITESPACE@[102; 103) "\n"
71 FN_KW@[103; 105) 71 FN_KW@[103; 105) "fn"
72 WHITESPACE@[105; 106) 72 WHITESPACE@[105; 106) " "
73 NAME@[106; 125) 73 NAME@[106; 125)
74 IDENT@[106; 125) "test_use_tree_merge" 74 IDENT@[106; 125) "test_use_tree_merge"
75 PARAM_LIST@[125; 127) 75 PARAM_LIST@[125; 127)
76 L_PAREN@[125; 126) 76 L_PAREN@[125; 126) "("
77 R_PAREN@[126; 127) 77 R_PAREN@[126; 127) ")"
78 WHITESPACE@[127; 128) 78 WHITESPACE@[127; 128) " "
79 BLOCK@[128; 348) 79 BLOCK@[128; 348)
80 L_CURLY@[128; 129) 80 L_CURLY@[128; 129) "{"
81 WHITESPACE@[129; 134) 81 WHITESPACE@[129; 134) "\n "
82 EXPR_STMT@[134; 139) 82 EXPR_STMT@[134; 139)
83 PATH_EXPR@[134; 139) 83 PATH_EXPR@[134; 139)
84 PATH@[134; 139) 84 PATH@[134; 139)
@@ -86,7 +86,7 @@ SOURCE_FILE@[0; 349)
86 NAME_REF@[134; 139) 86 NAME_REF@[134; 139)
87 IDENT@[134; 139) "macro" 87 IDENT@[134; 139) "macro"
88 err: `expected SEMI` 88 err: `expected SEMI`
89 WHITESPACE@[139; 140) 89 WHITESPACE@[139; 140) " "
90 EXPR_STMT@[140; 154) 90 EXPR_STMT@[140; 154)
91 CALL_EXPR@[140; 154) 91 CALL_EXPR@[140; 154)
92 PATH_EXPR@[140; 150) 92 PATH_EXPR@[140; 150)
@@ -95,15 +95,15 @@ SOURCE_FILE@[0; 349)
95 NAME_REF@[140; 150) 95 NAME_REF@[140; 150)
96 IDENT@[140; 150) "test_merge" 96 IDENT@[140; 150) "test_merge"
97 ARG_LIST@[150; 154) 97 ARG_LIST@[150; 154)
98 L_PAREN@[150; 151) 98 L_PAREN@[150; 151) "("
99 ARRAY_EXPR@[151; 154) 99 ARRAY_EXPR@[151; 154)
100 L_BRACK@[151; 152) 100 L_BRACK@[151; 152) "["
101 err: `expected expression` 101 err: `expected expression`
102 ERROR@[152; 153) 102 ERROR@[152; 153)
103 DOLLAR@[152; 153) 103 DOLLAR@[152; 153) "$"
104 err: `expected COMMA` 104 err: `expected COMMA`
105 PAREN_EXPR@[153; 154) 105 PAREN_EXPR@[153; 154)
106 L_PAREN@[153; 154) 106 L_PAREN@[153; 154) "("
107 err: `expected expression` 107 err: `expected expression`
108 err: `expected R_PAREN` 108 err: `expected R_PAREN`
109 err: `expected COMMA` 109 err: `expected COMMA`
@@ -114,7 +114,7 @@ SOURCE_FILE@[0; 349)
114 err: `expected expression` 114 err: `expected expression`
115 EXPR_STMT@[154; 155) 115 EXPR_STMT@[154; 155)
116 ERROR@[154; 155) 116 ERROR@[154; 155)
117 DOLLAR@[154; 155) 117 DOLLAR@[154; 155) "$"
118 err: `expected SEMI` 118 err: `expected SEMI`
119 EXPR_STMT@[155; 160) 119 EXPR_STMT@[155; 160)
120 PATH_EXPR@[155; 160) 120 PATH_EXPR@[155; 160)
@@ -126,7 +126,7 @@ SOURCE_FILE@[0; 349)
126 err: `expected expression` 126 err: `expected expression`
127 EXPR_STMT@[160; 161) 127 EXPR_STMT@[160; 161)
128 ERROR@[160; 161) 128 ERROR@[160; 161)
129 COLON@[160; 161) 129 COLON@[160; 161) ":"
130 err: `expected SEMI` 130 err: `expected SEMI`
131 EXPR_STMT@[161; 165) 131 EXPR_STMT@[161; 165)
132 PATH_EXPR@[161; 165) 132 PATH_EXPR@[161; 165)
@@ -138,59 +138,59 @@ SOURCE_FILE@[0; 349)
138 err: `expected expression` 138 err: `expected expression`
139 EXPR_STMT@[165; 166) 139 EXPR_STMT@[165; 166)
140 ERROR@[165; 166) 140 ERROR@[165; 166)
141 R_PAREN@[165; 166) 141 R_PAREN@[165; 166) ")"
142 err: `expected SEMI` 142 err: `expected SEMI`
143 err: `expected expression` 143 err: `expected expression`
144 EXPR_STMT@[166; 167) 144 EXPR_STMT@[166; 167)
145 ERROR@[166; 167) 145 ERROR@[166; 167)
146 COMMA@[166; 167) 146 COMMA@[166; 167) ","
147 err: `expected SEMI` 147 err: `expected SEMI`
148 EXPR_STMT@[167; 170) 148 EXPR_STMT@[167; 170)
149 PREFIX_EXPR@[167; 170) 149 PREFIX_EXPR@[167; 170)
150 STAR@[167; 168) 150 STAR@[167; 168) "*"
151 WHITESPACE@[168; 169) 151 WHITESPACE@[168; 169) " "
152 err: `expected expression` 152 err: `expected expression`
153 ERROR@[169; 170) 153 ERROR@[169; 170)
154 DOLLAR@[169; 170) 154 DOLLAR@[169; 170) "$"
155 err: `expected SEMI` 155 err: `expected SEMI`
156 EXPR_STMT@[170; 171) 156 EXPR_STMT@[170; 171)
157 PAREN_EXPR@[170; 171) 157 PAREN_EXPR@[170; 171)
158 L_PAREN@[170; 171) 158 L_PAREN@[170; 171) "("
159 err: `expected expression` 159 err: `expected expression`
160 err: `expected R_PAREN` 160 err: `expected R_PAREN`
161 err: `expected SEMI` 161 err: `expected SEMI`
162 err: `expected expression` 162 err: `expected expression`
163 EXPR_STMT@[171; 172) 163 EXPR_STMT@[171; 172)
164 ERROR@[171; 172) 164 ERROR@[171; 172)
165 COMMA@[171; 172) 165 COMMA@[171; 172) ","
166 err: `expected SEMI` 166 err: `expected SEMI`
167 err: `expected expression` 167 err: `expected expression`
168 EXPR_STMT@[172; 173) 168 EXPR_STMT@[172; 173)
169 ERROR@[172; 173) 169 ERROR@[172; 173)
170 R_PAREN@[172; 173) 170 R_PAREN@[172; 173) ")"
171 err: `expected SEMI` 171 err: `expected SEMI`
172 EXPR_STMT@[173; 175) 172 EXPR_STMT@[173; 175)
173 PREFIX_EXPR@[173; 175) 173 PREFIX_EXPR@[173; 175)
174 STAR@[173; 174) 174 STAR@[173; 174) "*"
175 err: `expected expression` 175 err: `expected expression`
176 ERROR@[174; 175) 176 ERROR@[174; 175)
177 R_BRACK@[174; 175) 177 R_BRACK@[174; 175) "]"
178 err: `expected SEMI` 178 err: `expected SEMI`
179 err: `expected expression` 179 err: `expected expression`
180 EXPR_STMT@[175; 176) 180 EXPR_STMT@[175; 176)
181 ERROR@[175; 176) 181 ERROR@[175; 176)
182 COMMA@[175; 176) 182 COMMA@[175; 176) ","
183 err: `expected SEMI` 183 err: `expected SEMI`
184 WHITESPACE@[176; 177) 184 WHITESPACE@[176; 177) " "
185 EXPR_STMT@[177; 180) 185 EXPR_STMT@[177; 180)
186 ARRAY_EXPR@[177; 180) 186 ARRAY_EXPR@[177; 180)
187 L_BRACK@[177; 178) 187 L_BRACK@[177; 178) "["
188 err: `expected expression` 188 err: `expected expression`
189 ERROR@[178; 179) 189 ERROR@[178; 179)
190 DOLLAR@[178; 179) 190 DOLLAR@[178; 179) "$"
191 err: `expected COMMA` 191 err: `expected COMMA`
192 PAREN_EXPR@[179; 180) 192 PAREN_EXPR@[179; 180)
193 L_PAREN@[179; 180) 193 L_PAREN@[179; 180) "("
194 err: `expected expression` 194 err: `expected expression`
195 err: `expected R_PAREN` 195 err: `expected R_PAREN`
196 err: `expected COMMA` 196 err: `expected COMMA`
@@ -200,7 +200,7 @@ SOURCE_FILE@[0; 349)
200 err: `expected expression` 200 err: `expected expression`
201 EXPR_STMT@[180; 181) 201 EXPR_STMT@[180; 181)
202 ERROR@[180; 181) 202 ERROR@[180; 181)
203 DOLLAR@[180; 181) 203 DOLLAR@[180; 181) "$"
204 err: `expected SEMI` 204 err: `expected SEMI`
205 EXPR_STMT@[181; 187) 205 EXPR_STMT@[181; 187)
206 PATH_EXPR@[181; 187) 206 PATH_EXPR@[181; 187)
@@ -212,7 +212,7 @@ SOURCE_FILE@[0; 349)
212 err: `expected expression` 212 err: `expected expression`
213 EXPR_STMT@[187; 188) 213 EXPR_STMT@[187; 188)
214 ERROR@[187; 188) 214 ERROR@[187; 188)
215 COLON@[187; 188) 215 COLON@[187; 188) ":"
216 err: `expected SEMI` 216 err: `expected SEMI`
217 EXPR_STMT@[188; 192) 217 EXPR_STMT@[188; 192)
218 PATH_EXPR@[188; 192) 218 PATH_EXPR@[188; 192)
@@ -224,102 +224,102 @@ SOURCE_FILE@[0; 349)
224 err: `expected expression` 224 err: `expected expression`
225 EXPR_STMT@[192; 193) 225 EXPR_STMT@[192; 193)
226 ERROR@[192; 193) 226 ERROR@[192; 193)
227 R_PAREN@[192; 193) 227 R_PAREN@[192; 193) ")"
228 err: `expected SEMI` 228 err: `expected SEMI`
229 err: `expected expression` 229 err: `expected expression`
230 EXPR_STMT@[193; 194) 230 EXPR_STMT@[193; 194)
231 ERROR@[193; 194) 231 ERROR@[193; 194)
232 COMMA@[193; 194) 232 COMMA@[193; 194) ","
233 err: `expected SEMI` 233 err: `expected SEMI`
234 EXPR_STMT@[194; 197) 234 EXPR_STMT@[194; 197)
235 PREFIX_EXPR@[194; 197) 235 PREFIX_EXPR@[194; 197)
236 STAR@[194; 195) 236 STAR@[194; 195) "*"
237 WHITESPACE@[195; 196) 237 WHITESPACE@[195; 196) " "
238 err: `expected expression` 238 err: `expected expression`
239 ERROR@[196; 197) 239 ERROR@[196; 197)
240 DOLLAR@[196; 197) 240 DOLLAR@[196; 197) "$"
241 err: `expected SEMI` 241 err: `expected SEMI`
242 EXPR_STMT@[197; 198) 242 EXPR_STMT@[197; 198)
243 PAREN_EXPR@[197; 198) 243 PAREN_EXPR@[197; 198)
244 L_PAREN@[197; 198) 244 L_PAREN@[197; 198) "("
245 err: `expected expression` 245 err: `expected expression`
246 err: `expected R_PAREN` 246 err: `expected R_PAREN`
247 err: `expected SEMI` 247 err: `expected SEMI`
248 err: `expected expression` 248 err: `expected expression`
249 EXPR_STMT@[198; 199) 249 EXPR_STMT@[198; 199)
250 ERROR@[198; 199) 250 ERROR@[198; 199)
251 COMMA@[198; 199) 251 COMMA@[198; 199) ","
252 err: `expected SEMI` 252 err: `expected SEMI`
253 err: `expected expression` 253 err: `expected expression`
254 EXPR_STMT@[199; 200) 254 EXPR_STMT@[199; 200)
255 ERROR@[199; 200) 255 ERROR@[199; 200)
256 R_PAREN@[199; 200) 256 R_PAREN@[199; 200) ")"
257 err: `expected SEMI` 257 err: `expected SEMI`
258 EXPR_STMT@[200; 202) 258 EXPR_STMT@[200; 202)
259 PREFIX_EXPR@[200; 202) 259 PREFIX_EXPR@[200; 202)
260 STAR@[200; 201) 260 STAR@[200; 201) "*"
261 err: `expected expression` 261 err: `expected expression`
262 ERROR@[201; 202) 262 ERROR@[201; 202)
263 R_BRACK@[201; 202) 263 R_BRACK@[201; 202) "]"
264 err: `expected SEMI` 264 err: `expected SEMI`
265 err: `expected expression` 265 err: `expected expression`
266 EXPR_STMT@[202; 203) 266 EXPR_STMT@[202; 203)
267 ERROR@[202; 203) 267 ERROR@[202; 203)
268 R_PAREN@[202; 203) 268 R_PAREN@[202; 203) ")"
269 err: `expected SEMI` 269 err: `expected SEMI`
270 WHITESPACE@[203; 204) 270 WHITESPACE@[203; 204) " "
271 BLOCK_EXPR@[204; 346) 271 BLOCK_EXPR@[204; 346)
272 BLOCK@[204; 346) 272 BLOCK@[204; 346)
273 L_CURLY@[204; 205) 273 L_CURLY@[204; 205) "{"
274 WHITESPACE@[205; 214) 274 WHITESPACE@[205; 214) "\n "
275 EXPR_STMT@[214; 340) 275 EXPR_STMT@[214; 340)
276 MACRO_CALL@[214; 339) 276 MACRO_CALL@[214; 339)
277 PATH@[214; 223) 277 PATH@[214; 223)
278 PATH_SEGMENT@[214; 223) 278 PATH_SEGMENT@[214; 223)
279 NAME_REF@[214; 223) 279 NAME_REF@[214; 223)
280 IDENT@[214; 223) "assert_eq" 280 IDENT@[214; 223) "assert_eq"
281 EXCL@[223; 224) 281 EXCL@[223; 224) "!"
282 TOKEN_TREE@[224; 339) 282 TOKEN_TREE@[224; 339)
283 L_PAREN@[224; 225) 283 L_PAREN@[224; 225) "("
284 WHITESPACE@[225; 238) 284 WHITESPACE@[225; 238) "\n "
285 IDENT@[238; 253) "merge_use_trees" 285 IDENT@[238; 253) "merge_use_trees"
286 TOKEN_TREE@[253; 284) 286 TOKEN_TREE@[253; 284)
287 L_PAREN@[253; 254) 287 L_PAREN@[253; 254) "("
288 IDENT@[254; 269) "parse_use_trees" 288 IDENT@[254; 269) "parse_use_trees"
289 EXCL@[269; 270) 289 EXCL@[269; 270) "!"
290 TOKEN_TREE@[270; 283) 290 TOKEN_TREE@[270; 283)
291 L_PAREN@[270; 271) 291 L_PAREN@[270; 271) "("
292 DOLLAR@[271; 272) 292 DOLLAR@[271; 272) "$"
293 TOKEN_TREE@[272; 281) 293 TOKEN_TREE@[272; 281)
294 L_PAREN@[272; 273) 294 L_PAREN@[272; 273) "("
295 DOLLAR@[273; 274) 295 DOLLAR@[273; 274) "$"
296 IDENT@[274; 279) "input" 296 IDENT@[274; 279) "input"
297 COMMA@[279; 280) 297 COMMA@[279; 280) ","
298 R_PAREN@[280; 281) 298 R_PAREN@[280; 281) ")"
299 STAR@[281; 282) 299 STAR@[281; 282) "*"
300 R_PAREN@[282; 283) 300 R_PAREN@[282; 283) ")"
301 R_PAREN@[283; 284) 301 R_PAREN@[283; 284) ")"
302 COMMA@[284; 285) 302 COMMA@[284; 285) ","
303 WHITESPACE@[285; 298) 303 WHITESPACE@[285; 298) "\n "
304 IDENT@[298; 313) "parse_use_trees" 304 IDENT@[298; 313) "parse_use_trees"
305 EXCL@[313; 314) 305 EXCL@[313; 314) "!"
306 TOKEN_TREE@[314; 328) 306 TOKEN_TREE@[314; 328)
307 L_PAREN@[314; 315) 307 L_PAREN@[314; 315) "("
308 DOLLAR@[315; 316) 308 DOLLAR@[315; 316) "$"
309 TOKEN_TREE@[316; 326) 309 TOKEN_TREE@[316; 326)
310 L_PAREN@[316; 317) 310 L_PAREN@[316; 317) "("
311 DOLLAR@[317; 318) 311 DOLLAR@[317; 318) "$"
312 IDENT@[318; 324) "output" 312 IDENT@[318; 324) "output"
313 COMMA@[324; 325) 313 COMMA@[324; 325) ","
314 R_PAREN@[325; 326) 314 R_PAREN@[325; 326) ")"
315 STAR@[326; 327) 315 STAR@[326; 327) "*"
316 R_PAREN@[327; 328) 316 R_PAREN@[327; 328) ")"
317 COMMA@[328; 329) 317 COMMA@[328; 329) ","
318 WHITESPACE@[329; 338) 318 WHITESPACE@[329; 338) "\n "
319 R_PAREN@[338; 339) 319 R_PAREN@[338; 339) ")"
320 SEMI@[339; 340) 320 SEMI@[339; 340) ";"
321 WHITESPACE@[340; 345) 321 WHITESPACE@[340; 345) "\n "
322 R_CURLY@[345; 346) 322 R_CURLY@[345; 346) "}"
323 WHITESPACE@[346; 347) 323 WHITESPACE@[346; 347) "\n"
324 R_CURLY@[347; 348) 324 R_CURLY@[347; 348) "}"
325 WHITESPACE@[348; 349) 325 WHITESPACE@[348; 349) "\n"
diff --git a/crates/ra_syntax/tests/data/parser/err/0029_field_completion.txt b/crates/ra_syntax/tests/data/parser/err/0029_field_completion.txt
index fd2a3f37b..27a0884f9 100644
--- a/crates/ra_syntax/tests/data/parser/err/0029_field_completion.txt
+++ b/crates/ra_syntax/tests/data/parser/err/0029_field_completion.txt
@@ -1,35 +1,35 @@
1SOURCE_FILE@[0; 24) 1SOURCE_FILE@[0; 24)
2 FN_DEF@[0; 23) 2 FN_DEF@[0; 23)
3 FN_KW@[0; 2) 3 FN_KW@[0; 2) "fn"
4 WHITESPACE@[2; 3) 4 WHITESPACE@[2; 3) " "
5 NAME@[3; 6) 5 NAME@[3; 6)
6 IDENT@[3; 6) "foo" 6 IDENT@[3; 6) "foo"
7 PARAM_LIST@[6; 12) 7 PARAM_LIST@[6; 12)
8 L_PAREN@[6; 7) 8 L_PAREN@[6; 7) "("
9 PARAM@[7; 11) 9 PARAM@[7; 11)
10 BIND_PAT@[7; 8) 10 BIND_PAT@[7; 8)
11 NAME@[7; 8) 11 NAME@[7; 8)
12 IDENT@[7; 8) "a" 12 IDENT@[7; 8) "a"
13 COLON@[8; 9) 13 COLON@[8; 9) ":"
14 WHITESPACE@[9; 10) 14 WHITESPACE@[9; 10) " "
15 PATH_TYPE@[10; 11) 15 PATH_TYPE@[10; 11)
16 PATH@[10; 11) 16 PATH@[10; 11)
17 PATH_SEGMENT@[10; 11) 17 PATH_SEGMENT@[10; 11)
18 NAME_REF@[10; 11) 18 NAME_REF@[10; 11)
19 IDENT@[10; 11) "A" 19 IDENT@[10; 11) "A"
20 R_PAREN@[11; 12) 20 R_PAREN@[11; 12) ")"
21 WHITESPACE@[12; 13) 21 WHITESPACE@[12; 13) " "
22 BLOCK@[13; 23) 22 BLOCK@[13; 23)
23 L_CURLY@[13; 14) 23 L_CURLY@[13; 14) "{"
24 WHITESPACE@[14; 19) 24 WHITESPACE@[14; 19) "\n "
25 FIELD_EXPR@[19; 21) 25 FIELD_EXPR@[19; 21)
26 PATH_EXPR@[19; 20) 26 PATH_EXPR@[19; 20)
27 PATH@[19; 20) 27 PATH@[19; 20)
28 PATH_SEGMENT@[19; 20) 28 PATH_SEGMENT@[19; 20)
29 NAME_REF@[19; 20) 29 NAME_REF@[19; 20)
30 IDENT@[19; 20) "a" 30 IDENT@[19; 20) "a"
31 DOT@[20; 21) 31 DOT@[20; 21) "."
32 err: `expected field name or number` 32 err: `expected field name or number`
33 WHITESPACE@[21; 22) 33 WHITESPACE@[21; 22) "\n"
34 R_CURLY@[22; 23) 34 R_CURLY@[22; 23) "}"
35 WHITESPACE@[23; 24) 35 WHITESPACE@[23; 24) "\n"
diff --git a/crates/ra_syntax/tests/data/parser/err/0030_string_suffixes.txt b/crates/ra_syntax/tests/data/parser/err/0030_string_suffixes.txt
index dc10e9ee7..61a28134a 100644
--- a/crates/ra_syntax/tests/data/parser/err/0030_string_suffixes.txt
+++ b/crates/ra_syntax/tests/data/parser/err/0030_string_suffixes.txt
@@ -1,26 +1,26 @@
1SOURCE_FILE@[0; 112) 1SOURCE_FILE@[0; 112)
2 FN_DEF@[0; 111) 2 FN_DEF@[0; 111)
3 FN_KW@[0; 2) 3 FN_KW@[0; 2) "fn"
4 WHITESPACE@[2; 3) 4 WHITESPACE@[2; 3) " "
5 NAME@[3; 7) 5 NAME@[3; 7)
6 IDENT@[3; 7) "main" 6 IDENT@[3; 7) "main"
7 PARAM_LIST@[7; 9) 7 PARAM_LIST@[7; 9)
8 L_PAREN@[7; 8) 8 L_PAREN@[7; 8) "("
9 R_PAREN@[8; 9) 9 R_PAREN@[8; 9) ")"
10 WHITESPACE@[9; 10) 10 WHITESPACE@[9; 10) " "
11 BLOCK@[10; 111) 11 BLOCK@[10; 111)
12 L_CURLY@[10; 11) 12 L_CURLY@[10; 11) "{"
13 WHITESPACE@[11; 16) 13 WHITESPACE@[11; 16) "\n "
14 LET_STMT@[16; 27) 14 LET_STMT@[16; 27)
15 LET_KW@[16; 19) 15 LET_KW@[16; 19) "let"
16 WHITESPACE@[19; 20) 16 WHITESPACE@[19; 20) " "
17 PLACEHOLDER_PAT@[20; 21) 17 PLACEHOLDER_PAT@[20; 21)
18 UNDERSCORE@[20; 21) 18 UNDERSCORE@[20; 21) "_"
19 WHITESPACE@[21; 22) 19 WHITESPACE@[21; 22) " "
20 EQ@[22; 23) 20 EQ@[22; 23) "="
21 WHITESPACE@[23; 24) 21 WHITESPACE@[23; 24) " "
22 LITERAL@[24; 27) 22 LITERAL@[24; 27)
23 CHAR@[24; 27) 23 CHAR@[24; 27) "\'c\'"
24 err: `expected SEMI` 24 err: `expected SEMI`
25 EXPR_STMT@[27; 31) 25 EXPR_STMT@[27; 31)
26 PATH_EXPR@[27; 30) 26 PATH_EXPR@[27; 30)
@@ -28,46 +28,46 @@ SOURCE_FILE@[0; 112)
28 PATH_SEGMENT@[27; 30) 28 PATH_SEGMENT@[27; 30)
29 NAME_REF@[27; 30) 29 NAME_REF@[27; 30)
30 IDENT@[27; 30) "u32" 30 IDENT@[27; 30) "u32"
31 SEMI@[30; 31) 31 SEMI@[30; 31) ";"
32 WHITESPACE@[31; 36) 32 WHITESPACE@[31; 36) "\n "
33 LET_STMT@[36; 60) 33 LET_STMT@[36; 60)
34 LET_KW@[36; 39) 34 LET_KW@[36; 39) "let"
35 WHITESPACE@[39; 40) 35 WHITESPACE@[39; 40) " "
36 PLACEHOLDER_PAT@[40; 41) 36 PLACEHOLDER_PAT@[40; 41)
37 UNDERSCORE@[40; 41) 37 UNDERSCORE@[40; 41) "_"
38 WHITESPACE@[41; 42) 38 WHITESPACE@[41; 42) " "
39 EQ@[42; 43) 39 EQ@[42; 43) "="
40 WHITESPACE@[43; 44) 40 WHITESPACE@[43; 44) " "
41 LITERAL@[44; 59) 41 LITERAL@[44; 59)
42 STRING@[44; 59) 42 STRING@[44; 59) "\"string\"invalid"
43 err: `Invalid literal suffix` 43 err: `Invalid literal suffix`
44 SEMI@[59; 60) 44 SEMI@[59; 60) ";"
45 WHITESPACE@[60; 65) 45 WHITESPACE@[60; 65) "\n "
46 LET_STMT@[65; 83) 46 LET_STMT@[65; 83)
47 LET_KW@[65; 68) 47 LET_KW@[65; 68) "let"
48 WHITESPACE@[68; 69) 48 WHITESPACE@[68; 69) " "
49 PLACEHOLDER_PAT@[69; 70) 49 PLACEHOLDER_PAT@[69; 70)
50 UNDERSCORE@[69; 70) 50 UNDERSCORE@[69; 70) "_"
51 WHITESPACE@[70; 71) 51 WHITESPACE@[70; 71) " "
52 EQ@[71; 72) 52 EQ@[71; 72) "="
53 WHITESPACE@[72; 73) 53 WHITESPACE@[72; 73) " "
54 LITERAL@[73; 82) 54 LITERAL@[73; 82)
55 BYTE@[73; 82) 55 BYTE@[73; 82) "b\'b\'_suff"
56 err: `Invalid literal suffix` 56 err: `Invalid literal suffix`
57 SEMI@[82; 83) 57 SEMI@[82; 83) ";"
58 WHITESPACE@[83; 88) 58 WHITESPACE@[83; 88) "\n "
59 LET_STMT@[88; 109) 59 LET_STMT@[88; 109)
60 LET_KW@[88; 91) 60 LET_KW@[88; 91) "let"
61 WHITESPACE@[91; 92) 61 WHITESPACE@[91; 92) " "
62 PLACEHOLDER_PAT@[92; 93) 62 PLACEHOLDER_PAT@[92; 93)
63 UNDERSCORE@[92; 93) 63 UNDERSCORE@[92; 93) "_"
64 WHITESPACE@[93; 94) 64 WHITESPACE@[93; 94) " "
65 EQ@[94; 95) 65 EQ@[94; 95) "="
66 WHITESPACE@[95; 96) 66 WHITESPACE@[95; 96) " "
67 LITERAL@[96; 108) 67 LITERAL@[96; 108)
68 BYTE_STRING@[96; 108) 68 BYTE_STRING@[96; 108) "b\"bs\"invalid"
69 err: `Invalid literal suffix` 69 err: `Invalid literal suffix`
70 SEMI@[108; 109) 70 SEMI@[108; 109) ";"
71 WHITESPACE@[109; 110) 71 WHITESPACE@[109; 110) "\n"
72 R_CURLY@[110; 111) 72 R_CURLY@[110; 111) "}"
73 WHITESPACE@[111; 112) 73 WHITESPACE@[111; 112) "\n"
diff --git a/crates/ra_syntax/tests/data/parser/err/0031_block_inner_attrs.txt b/crates/ra_syntax/tests/data/parser/err/0031_block_inner_attrs.txt
index 086aa79ac..80a973d4d 100644
--- a/crates/ra_syntax/tests/data/parser/err/0031_block_inner_attrs.txt
+++ b/crates/ra_syntax/tests/data/parser/err/0031_block_inner_attrs.txt
@@ -1,114 +1,114 @@
1SOURCE_FILE@[0; 350) 1SOURCE_FILE@[0; 350)
2 FN_DEF@[0; 349) 2 FN_DEF@[0; 349)
3 FN_KW@[0; 2) 3 FN_KW@[0; 2) "fn"
4 WHITESPACE@[2; 3) 4 WHITESPACE@[2; 3) " "
5 NAME@[3; 8) 5 NAME@[3; 8)
6 IDENT@[3; 8) "block" 6 IDENT@[3; 8) "block"
7 PARAM_LIST@[8; 10) 7 PARAM_LIST@[8; 10)
8 L_PAREN@[8; 9) 8 L_PAREN@[8; 9) "("
9 R_PAREN@[9; 10) 9 R_PAREN@[9; 10) ")"
10 WHITESPACE@[10; 11) 10 WHITESPACE@[10; 11) " "
11 BLOCK@[11; 349) 11 BLOCK@[11; 349)
12 L_CURLY@[11; 12) 12 L_CURLY@[11; 12) "{"
13 WHITESPACE@[12; 17) 13 WHITESPACE@[12; 17) "\n "
14 LET_STMT@[17; 129) 14 LET_STMT@[17; 129)
15 LET_KW@[17; 20) 15 LET_KW@[17; 20) "let"
16 WHITESPACE@[20; 21) 16 WHITESPACE@[20; 21) " "
17 BIND_PAT@[21; 26) 17 BIND_PAT@[21; 26)
18 NAME@[21; 26) 18 NAME@[21; 26)
19 IDENT@[21; 26) "inner" 19 IDENT@[21; 26) "inner"
20 WHITESPACE@[26; 27) 20 WHITESPACE@[26; 27) " "
21 EQ@[27; 28) 21 EQ@[27; 28) "="
22 WHITESPACE@[28; 29) 22 WHITESPACE@[28; 29) " "
23 BLOCK_EXPR@[29; 128) 23 BLOCK_EXPR@[29; 128)
24 BLOCK@[29; 128) 24 BLOCK@[29; 128)
25 L_CURLY@[29; 30) 25 L_CURLY@[29; 30) "{"
26 WHITESPACE@[30; 39) 26 WHITESPACE@[30; 39) "\n "
27 err: `A block in this position cannot accept inner attributes` 27 err: `A block in this position cannot accept inner attributes`
28 ATTR@[39; 83) 28 ATTR@[39; 83)
29 POUND@[39; 40) 29 POUND@[39; 40) "#"
30 EXCL@[40; 41) 30 EXCL@[40; 41) "!"
31 TOKEN_TREE@[41; 83) 31 TOKEN_TREE@[41; 83)
32 L_BRACK@[41; 42) 32 L_BRACK@[41; 42) "["
33 IDENT@[42; 45) "doc" 33 IDENT@[42; 45) "doc"
34 TOKEN_TREE@[45; 82) 34 TOKEN_TREE@[45; 82)
35 L_PAREN@[45; 46) 35 L_PAREN@[45; 46) "("
36 STRING@[46; 81) 36 STRING@[46; 81) "\"Inner attributes not ..."
37 R_PAREN@[81; 82) 37 R_PAREN@[81; 82) ")"
38 R_BRACK@[82; 83) 38 R_BRACK@[82; 83) "]"
39 WHITESPACE@[83; 92) 39 WHITESPACE@[83; 92) "\n "
40 COMMENT@[92; 122) 40 COMMENT@[92; 122) "//! Nor are ModuleDoc ..."
41 WHITESPACE@[122; 127) 41 WHITESPACE@[122; 127) "\n "
42 R_CURLY@[127; 128) 42 R_CURLY@[127; 128) "}"
43 SEMI@[128; 129) 43 SEMI@[128; 129) ";"
44 WHITESPACE@[129; 134) 44 WHITESPACE@[129; 134) "\n "
45 EXPR_STMT@[134; 257) 45 EXPR_STMT@[134; 257)
46 IF_EXPR@[134; 257) 46 IF_EXPR@[134; 257)
47 IF_KW@[134; 136) 47 IF_KW@[134; 136) "if"
48 WHITESPACE@[136; 137) 48 WHITESPACE@[136; 137) " "
49 CONDITION@[137; 141) 49 CONDITION@[137; 141)
50 LITERAL@[137; 141) 50 LITERAL@[137; 141)
51 TRUE_KW@[137; 141) 51 TRUE_KW@[137; 141) "true"
52 WHITESPACE@[141; 142) 52 WHITESPACE@[141; 142) " "
53 BLOCK@[142; 257) 53 BLOCK@[142; 257)
54 L_CURLY@[142; 143) 54 L_CURLY@[142; 143) "{"
55 WHITESPACE@[143; 152) 55 WHITESPACE@[143; 152) "\n "
56 err: `A block in this position cannot accept inner attributes` 56 err: `A block in this position cannot accept inner attributes`
57 ATTR@[152; 171) 57 ATTR@[152; 171)
58 POUND@[152; 153) 58 POUND@[152; 153) "#"
59 EXCL@[153; 154) 59 EXCL@[153; 154) "!"
60 TOKEN_TREE@[154; 171) 60 TOKEN_TREE@[154; 171)
61 L_BRACK@[154; 155) 61 L_BRACK@[154; 155) "["
62 IDENT@[155; 158) "doc" 62 IDENT@[155; 158) "doc"
63 TOKEN_TREE@[158; 170) 63 TOKEN_TREE@[158; 170)
64 L_PAREN@[158; 159) 64 L_PAREN@[158; 159) "("
65 STRING@[159; 169) 65 STRING@[159; 169) "\"Nor here\""
66 R_PAREN@[169; 170) 66 R_PAREN@[169; 170) ")"
67 R_BRACK@[170; 171) 67 R_BRACK@[170; 171) "]"
68 WHITESPACE@[171; 180) 68 WHITESPACE@[171; 180) "\n "
69 err: `A block in this position cannot accept inner attributes` 69 err: `A block in this position cannot accept inner attributes`
70 ATTR@[180; 212) 70 ATTR@[180; 212)
71 POUND@[180; 181) 71 POUND@[180; 181) "#"
72 EXCL@[181; 182) 72 EXCL@[181; 182) "!"
73 TOKEN_TREE@[182; 212) 73 TOKEN_TREE@[182; 212)
74 L_BRACK@[182; 183) 74 L_BRACK@[182; 183) "["
75 IDENT@[183; 186) "doc" 75 IDENT@[183; 186) "doc"
76 TOKEN_TREE@[186; 211) 76 TOKEN_TREE@[186; 211)
77 L_PAREN@[186; 187) 77 L_PAREN@[186; 187) "("
78 STRING@[187; 210) 78 STRING@[187; 210) "\"We error on each attr\""
79 R_PAREN@[210; 211) 79 R_PAREN@[210; 211) ")"
80 R_BRACK@[211; 212) 80 R_BRACK@[211; 212) "]"
81 WHITESPACE@[212; 221) 81 WHITESPACE@[212; 221) "\n "
82 COMMENT@[221; 251) 82 COMMENT@[221; 251) "//! Nor are ModuleDoc ..."
83 WHITESPACE@[251; 256) 83 WHITESPACE@[251; 256) "\n "
84 R_CURLY@[256; 257) 84 R_CURLY@[256; 257) "}"
85 WHITESPACE@[257; 262) 85 WHITESPACE@[257; 262) "\n "
86 WHILE_EXPR@[262; 347) 86 WHILE_EXPR@[262; 347)
87 WHILE_KW@[262; 267) 87 WHILE_KW@[262; 267) "while"
88 WHITESPACE@[267; 268) 88 WHITESPACE@[267; 268) " "
89 CONDITION@[268; 272) 89 CONDITION@[268; 272)
90 LITERAL@[268; 272) 90 LITERAL@[268; 272)
91 TRUE_KW@[268; 272) 91 TRUE_KW@[268; 272) "true"
92 WHITESPACE@[272; 273) 92 WHITESPACE@[272; 273) " "
93 BLOCK@[273; 347) 93 BLOCK@[273; 347)
94 L_CURLY@[273; 274) 94 L_CURLY@[273; 274) "{"
95 WHITESPACE@[274; 283) 95 WHITESPACE@[274; 283) "\n "
96 err: `A block in this position cannot accept inner attributes` 96 err: `A block in this position cannot accept inner attributes`
97 ATTR@[283; 302) 97 ATTR@[283; 302)
98 POUND@[283; 284) 98 POUND@[283; 284) "#"
99 EXCL@[284; 285) 99 EXCL@[284; 285) "!"
100 TOKEN_TREE@[285; 302) 100 TOKEN_TREE@[285; 302)
101 L_BRACK@[285; 286) 101 L_BRACK@[285; 286) "["
102 IDENT@[286; 289) "doc" 102 IDENT@[286; 289) "doc"
103 TOKEN_TREE@[289; 301) 103 TOKEN_TREE@[289; 301)
104 L_PAREN@[289; 290) 104 L_PAREN@[289; 290) "("
105 STRING@[290; 300) 105 STRING@[290; 300) "\"Nor here\""
106 R_PAREN@[300; 301) 106 R_PAREN@[300; 301) ")"
107 R_BRACK@[301; 302) 107 R_BRACK@[301; 302) "]"
108 WHITESPACE@[302; 311) 108 WHITESPACE@[302; 311) "\n "
109 COMMENT@[311; 341) 109 COMMENT@[311; 341) "//! Nor are ModuleDoc ..."
110 WHITESPACE@[341; 346) 110 WHITESPACE@[341; 346) "\n "
111 R_CURLY@[346; 347) 111 R_CURLY@[346; 347) "}"
112 WHITESPACE@[347; 348) 112 WHITESPACE@[347; 348) "\n"
113 R_CURLY@[348; 349) 113 R_CURLY@[348; 349) "}"
114 WHITESPACE@[349; 350) 114 WHITESPACE@[349; 350) "\n"
diff --git a/crates/ra_syntax/tests/data/parser/err/0032_match_arms_inner_attrs.txt b/crates/ra_syntax/tests/data/parser/err/0032_match_arms_inner_attrs.txt
index ed5735a63..92e3a1ee8 100644
--- a/crates/ra_syntax/tests/data/parser/err/0032_match_arms_inner_attrs.txt
+++ b/crates/ra_syntax/tests/data/parser/err/0032_match_arms_inner_attrs.txt
@@ -1,48 +1,48 @@
1SOURCE_FILE@[0; 293) 1SOURCE_FILE@[0; 293)
2 FN_DEF@[0; 292) 2 FN_DEF@[0; 292)
3 FN_KW@[0; 2) 3 FN_KW@[0; 2) "fn"
4 WHITESPACE@[2; 3) 4 WHITESPACE@[2; 3) " "
5 NAME@[3; 6) 5 NAME@[3; 6)
6 IDENT@[3; 6) "foo" 6 IDENT@[3; 6) "foo"
7 PARAM_LIST@[6; 8) 7 PARAM_LIST@[6; 8)
8 L_PAREN@[6; 7) 8 L_PAREN@[6; 7) "("
9 R_PAREN@[7; 8) 9 R_PAREN@[7; 8) ")"
10 WHITESPACE@[8; 9) 10 WHITESPACE@[8; 9) " "
11 BLOCK@[9; 292) 11 BLOCK@[9; 292)
12 L_CURLY@[9; 10) 12 L_CURLY@[9; 10) "{"
13 WHITESPACE@[10; 15) 13 WHITESPACE@[10; 15) "\n "
14 EXPR_STMT@[15; 101) 14 EXPR_STMT@[15; 101)
15 MATCH_EXPR@[15; 101) 15 MATCH_EXPR@[15; 101)
16 MATCH_KW@[15; 20) 16 MATCH_KW@[15; 20) "match"
17 WHITESPACE@[20; 21) 17 WHITESPACE@[20; 21) " "
18 TUPLE_EXPR@[21; 23) 18 TUPLE_EXPR@[21; 23)
19 L_PAREN@[21; 22) 19 L_PAREN@[21; 22) "("
20 R_PAREN@[22; 23) 20 R_PAREN@[22; 23) ")"
21 WHITESPACE@[23; 24) 21 WHITESPACE@[23; 24) " "
22 MATCH_ARM_LIST@[24; 101) 22 MATCH_ARM_LIST@[24; 101)
23 L_CURLY@[24; 25) 23 L_CURLY@[24; 25) "{"
24 WHITESPACE@[25; 34) 24 WHITESPACE@[25; 34) "\n "
25 MATCH_ARM@[34; 41) 25 MATCH_ARM@[34; 41)
26 PLACEHOLDER_PAT@[34; 35) 26 PLACEHOLDER_PAT@[34; 35)
27 UNDERSCORE@[34; 35) 27 UNDERSCORE@[34; 35) "_"
28 WHITESPACE@[35; 36) 28 WHITESPACE@[35; 36) " "
29 FAT_ARROW@[36; 38) 29 FAT_ARROW@[36; 38) "=>"
30 WHITESPACE@[38; 39) 30 WHITESPACE@[38; 39) " "
31 TUPLE_EXPR@[39; 41) 31 TUPLE_EXPR@[39; 41)
32 L_PAREN@[39; 40) 32 L_PAREN@[39; 40) "("
33 R_PAREN@[40; 41) 33 R_PAREN@[40; 41) ")"
34 COMMA@[41; 42) 34 COMMA@[41; 42) ","
35 WHITESPACE@[42; 51) 35 WHITESPACE@[42; 51) "\n "
36 MATCH_ARM@[51; 78) 36 MATCH_ARM@[51; 78)
37 ATTR@[51; 52) 37 ATTR@[51; 52)
38 POUND@[51; 52) 38 POUND@[51; 52) "#"
39 err: `expected `[`` 39 err: `expected `[``
40 err: `expected pattern` 40 err: `expected pattern`
41 ERROR@[52; 53) 41 ERROR@[52; 53)
42 EXCL@[52; 53) 42 EXCL@[52; 53) "!"
43 err: `expected FAT_ARROW` 43 err: `expected FAT_ARROW`
44 ARRAY_EXPR@[53; 78) 44 ARRAY_EXPR@[53; 78)
45 L_BRACK@[53; 54) 45 L_BRACK@[53; 54) "["
46 CALL_EXPR@[54; 77) 46 CALL_EXPR@[54; 77)
47 PATH_EXPR@[54; 57) 47 PATH_EXPR@[54; 57)
48 PATH@[54; 57) 48 PATH@[54; 57)
@@ -50,69 +50,69 @@ SOURCE_FILE@[0; 293)
50 NAME_REF@[54; 57) 50 NAME_REF@[54; 57)
51 IDENT@[54; 57) "doc" 51 IDENT@[54; 57) "doc"
52 ARG_LIST@[57; 77) 52 ARG_LIST@[57; 77)
53 L_PAREN@[57; 58) 53 L_PAREN@[57; 58) "("
54 LITERAL@[58; 76) 54 LITERAL@[58; 76)
55 STRING@[58; 76) 55 STRING@[58; 76) "\"Not allowed here\""
56 R_PAREN@[76; 77) 56 R_PAREN@[76; 77) ")"
57 R_BRACK@[77; 78) 57 R_BRACK@[77; 78) "]"
58 err: `expected COMMA` 58 err: `expected COMMA`
59 WHITESPACE@[78; 87) 59 WHITESPACE@[78; 87) "\n "
60 MATCH_ARM@[87; 94) 60 MATCH_ARM@[87; 94)
61 PLACEHOLDER_PAT@[87; 88) 61 PLACEHOLDER_PAT@[87; 88)
62 UNDERSCORE@[87; 88) 62 UNDERSCORE@[87; 88) "_"
63 WHITESPACE@[88; 89) 63 WHITESPACE@[88; 89) " "
64 FAT_ARROW@[89; 91) 64 FAT_ARROW@[89; 91) "=>"
65 WHITESPACE@[91; 92) 65 WHITESPACE@[91; 92) " "
66 TUPLE_EXPR@[92; 94) 66 TUPLE_EXPR@[92; 94)
67 L_PAREN@[92; 93) 67 L_PAREN@[92; 93) "("
68 R_PAREN@[93; 94) 68 R_PAREN@[93; 94) ")"
69 COMMA@[94; 95) 69 COMMA@[94; 95) ","
70 WHITESPACE@[95; 100) 70 WHITESPACE@[95; 100) "\n "
71 R_CURLY@[100; 101) 71 R_CURLY@[100; 101) "}"
72 WHITESPACE@[101; 107) 72 WHITESPACE@[101; 107) "\n\n "
73 EXPR_STMT@[107; 185) 73 EXPR_STMT@[107; 185)
74 MATCH_EXPR@[107; 185) 74 MATCH_EXPR@[107; 185)
75 MATCH_KW@[107; 112) 75 MATCH_KW@[107; 112) "match"
76 WHITESPACE@[112; 113) 76 WHITESPACE@[112; 113) " "
77 TUPLE_EXPR@[113; 115) 77 TUPLE_EXPR@[113; 115)
78 L_PAREN@[113; 114) 78 L_PAREN@[113; 114) "("
79 R_PAREN@[114; 115) 79 R_PAREN@[114; 115) ")"
80 WHITESPACE@[115; 116) 80 WHITESPACE@[115; 116) " "
81 MATCH_ARM_LIST@[116; 185) 81 MATCH_ARM_LIST@[116; 185)
82 L_CURLY@[116; 117) 82 L_CURLY@[116; 117) "{"
83 WHITESPACE@[117; 126) 83 WHITESPACE@[117; 126) "\n "
84 MATCH_ARM@[126; 133) 84 MATCH_ARM@[126; 133)
85 PLACEHOLDER_PAT@[126; 127) 85 PLACEHOLDER_PAT@[126; 127)
86 UNDERSCORE@[126; 127) 86 UNDERSCORE@[126; 127) "_"
87 WHITESPACE@[127; 128) 87 WHITESPACE@[127; 128) " "
88 FAT_ARROW@[128; 130) 88 FAT_ARROW@[128; 130) "=>"
89 WHITESPACE@[130; 131) 89 WHITESPACE@[130; 131) " "
90 TUPLE_EXPR@[131; 133) 90 TUPLE_EXPR@[131; 133)
91 L_PAREN@[131; 132) 91 L_PAREN@[131; 132) "("
92 R_PAREN@[132; 133) 92 R_PAREN@[132; 133) ")"
93 COMMA@[133; 134) 93 COMMA@[133; 134) ","
94 WHITESPACE@[134; 143) 94 WHITESPACE@[134; 143) "\n "
95 MATCH_ARM@[143; 150) 95 MATCH_ARM@[143; 150)
96 PLACEHOLDER_PAT@[143; 144) 96 PLACEHOLDER_PAT@[143; 144)
97 UNDERSCORE@[143; 144) 97 UNDERSCORE@[143; 144) "_"
98 WHITESPACE@[144; 145) 98 WHITESPACE@[144; 145) " "
99 FAT_ARROW@[145; 147) 99 FAT_ARROW@[145; 147) "=>"
100 WHITESPACE@[147; 148) 100 WHITESPACE@[147; 148) " "
101 TUPLE_EXPR@[148; 150) 101 TUPLE_EXPR@[148; 150)
102 L_PAREN@[148; 149) 102 L_PAREN@[148; 149) "("
103 R_PAREN@[149; 150) 103 R_PAREN@[149; 150) ")"
104 COMMA@[150; 151) 104 COMMA@[150; 151) ","
105 WHITESPACE@[151; 160) 105 WHITESPACE@[151; 160) "\n "
106 MATCH_ARM@[160; 179) 106 MATCH_ARM@[160; 179)
107 ATTR@[160; 161) 107 ATTR@[160; 161)
108 POUND@[160; 161) 108 POUND@[160; 161) "#"
109 err: `expected `[`` 109 err: `expected `[``
110 err: `expected pattern` 110 err: `expected pattern`
111 ERROR@[161; 162) 111 ERROR@[161; 162)
112 EXCL@[161; 162) 112 EXCL@[161; 162) "!"
113 err: `expected FAT_ARROW` 113 err: `expected FAT_ARROW`
114 ARRAY_EXPR@[162; 179) 114 ARRAY_EXPR@[162; 179)
115 L_BRACK@[162; 163) 115 L_BRACK@[162; 163) "["
116 CALL_EXPR@[163; 178) 116 CALL_EXPR@[163; 178)
117 PATH_EXPR@[163; 166) 117 PATH_EXPR@[163; 166)
118 PATH@[163; 166) 118 PATH@[163; 166)
@@ -120,45 +120,45 @@ SOURCE_FILE@[0; 293)
120 NAME_REF@[163; 166) 120 NAME_REF@[163; 166)
121 IDENT@[163; 166) "doc" 121 IDENT@[163; 166) "doc"
122 ARG_LIST@[166; 178) 122 ARG_LIST@[166; 178)
123 L_PAREN@[166; 167) 123 L_PAREN@[166; 167) "("
124 LITERAL@[167; 177) 124 LITERAL@[167; 177)
125 STRING@[167; 177) 125 STRING@[167; 177) "\"Nor here\""
126 R_PAREN@[177; 178) 126 R_PAREN@[177; 178) ")"
127 R_BRACK@[178; 179) 127 R_BRACK@[178; 179) "]"
128 WHITESPACE@[179; 184) 128 WHITESPACE@[179; 184) "\n "
129 R_CURLY@[184; 185) 129 R_CURLY@[184; 185) "}"
130 WHITESPACE@[185; 191) 130 WHITESPACE@[185; 191) "\n\n "
131 MATCH_EXPR@[191; 290) 131 MATCH_EXPR@[191; 290)
132 MATCH_KW@[191; 196) 132 MATCH_KW@[191; 196) "match"
133 WHITESPACE@[196; 197) 133 WHITESPACE@[196; 197) " "
134 TUPLE_EXPR@[197; 199) 134 TUPLE_EXPR@[197; 199)
135 L_PAREN@[197; 198) 135 L_PAREN@[197; 198) "("
136 R_PAREN@[198; 199) 136 R_PAREN@[198; 199) ")"
137 WHITESPACE@[199; 200) 137 WHITESPACE@[199; 200) " "
138 MATCH_ARM_LIST@[200; 290) 138 MATCH_ARM_LIST@[200; 290)
139 L_CURLY@[200; 201) 139 L_CURLY@[200; 201) "{"
140 WHITESPACE@[201; 210) 140 WHITESPACE@[201; 210) "\n "
141 MATCH_ARM@[210; 250) 141 MATCH_ARM@[210; 250)
142 ATTR@[210; 222) 142 ATTR@[210; 222)
143 POUND@[210; 211) 143 POUND@[210; 211) "#"
144 TOKEN_TREE@[211; 222) 144 TOKEN_TREE@[211; 222)
145 L_BRACK@[211; 212) 145 L_BRACK@[211; 212) "["
146 IDENT@[212; 215) "cfg" 146 IDENT@[212; 215) "cfg"
147 TOKEN_TREE@[215; 221) 147 TOKEN_TREE@[215; 221)
148 L_PAREN@[215; 216) 148 L_PAREN@[215; 216) "("
149 IDENT@[216; 220) "test" 149 IDENT@[216; 220) "test"
150 R_PAREN@[220; 221) 150 R_PAREN@[220; 221) ")"
151 R_BRACK@[221; 222) 151 R_BRACK@[221; 222) "]"
152 WHITESPACE@[222; 231) 152 WHITESPACE@[222; 231) "\n "
153 ATTR@[231; 232) 153 ATTR@[231; 232)
154 POUND@[231; 232) 154 POUND@[231; 232) "#"
155 err: `expected `[`` 155 err: `expected `[``
156 err: `expected pattern` 156 err: `expected pattern`
157 ERROR@[232; 233) 157 ERROR@[232; 233)
158 EXCL@[232; 233) 158 EXCL@[232; 233) "!"
159 err: `expected FAT_ARROW` 159 err: `expected FAT_ARROW`
160 ARRAY_EXPR@[233; 250) 160 ARRAY_EXPR@[233; 250)
161 L_BRACK@[233; 234) 161 L_BRACK@[233; 234) "["
162 CALL_EXPR@[234; 249) 162 CALL_EXPR@[234; 249)
163 PATH_EXPR@[234; 237) 163 PATH_EXPR@[234; 237)
164 PATH@[234; 237) 164 PATH@[234; 237)
@@ -166,36 +166,36 @@ SOURCE_FILE@[0; 293)
166 NAME_REF@[234; 237) 166 NAME_REF@[234; 237)
167 IDENT@[234; 237) "doc" 167 IDENT@[234; 237) "doc"
168 ARG_LIST@[237; 249) 168 ARG_LIST@[237; 249)
169 L_PAREN@[237; 238) 169 L_PAREN@[237; 238) "("
170 LITERAL@[238; 248) 170 LITERAL@[238; 248)
171 STRING@[238; 248) 171 STRING@[238; 248) "\"Nor here\""
172 R_PAREN@[248; 249) 172 R_PAREN@[248; 249) ")"
173 R_BRACK@[249; 250) 173 R_BRACK@[249; 250) "]"
174 err: `expected COMMA` 174 err: `expected COMMA`
175 WHITESPACE@[250; 259) 175 WHITESPACE@[250; 259) "\n "
176 MATCH_ARM@[259; 266) 176 MATCH_ARM@[259; 266)
177 PLACEHOLDER_PAT@[259; 260) 177 PLACEHOLDER_PAT@[259; 260)
178 UNDERSCORE@[259; 260) 178 UNDERSCORE@[259; 260) "_"
179 WHITESPACE@[260; 261) 179 WHITESPACE@[260; 261) " "
180 FAT_ARROW@[261; 263) 180 FAT_ARROW@[261; 263) "=>"
181 WHITESPACE@[263; 264) 181 WHITESPACE@[263; 264) " "
182 TUPLE_EXPR@[264; 266) 182 TUPLE_EXPR@[264; 266)
183 L_PAREN@[264; 265) 183 L_PAREN@[264; 265) "("
184 R_PAREN@[265; 266) 184 R_PAREN@[265; 266) ")"
185 COMMA@[266; 267) 185 COMMA@[266; 267) ","
186 WHITESPACE@[267; 276) 186 WHITESPACE@[267; 276) "\n "
187 MATCH_ARM@[276; 283) 187 MATCH_ARM@[276; 283)
188 PLACEHOLDER_PAT@[276; 277) 188 PLACEHOLDER_PAT@[276; 277)
189 UNDERSCORE@[276; 277) 189 UNDERSCORE@[276; 277) "_"
190 WHITESPACE@[277; 278) 190 WHITESPACE@[277; 278) " "
191 FAT_ARROW@[278; 280) 191 FAT_ARROW@[278; 280) "=>"
192 WHITESPACE@[280; 281) 192 WHITESPACE@[280; 281) " "
193 TUPLE_EXPR@[281; 283) 193 TUPLE_EXPR@[281; 283)
194 L_PAREN@[281; 282) 194 L_PAREN@[281; 282) "("
195 R_PAREN@[282; 283) 195 R_PAREN@[282; 283) ")"
196 COMMA@[283; 284) 196 COMMA@[283; 284) ","
197 WHITESPACE@[284; 289) 197 WHITESPACE@[284; 289) "\n "
198 R_CURLY@[289; 290) 198 R_CURLY@[289; 290) "}"
199 WHITESPACE@[290; 291) 199 WHITESPACE@[290; 291) "\n"
200 R_CURLY@[291; 292) 200 R_CURLY@[291; 292) "}"
201 WHITESPACE@[292; 293) 201 WHITESPACE@[292; 293) "\n"
diff --git a/crates/ra_syntax/tests/data/parser/err/0033_match_arms_outer_attrs.txt b/crates/ra_syntax/tests/data/parser/err/0033_match_arms_outer_attrs.txt
index f540409bc..ac9cb63f7 100644
--- a/crates/ra_syntax/tests/data/parser/err/0033_match_arms_outer_attrs.txt
+++ b/crates/ra_syntax/tests/data/parser/err/0033_match_arms_outer_attrs.txt
@@ -1,64 +1,64 @@
1SOURCE_FILE@[0; 89) 1SOURCE_FILE@[0; 89)
2 FN_DEF@[0; 88) 2 FN_DEF@[0; 88)
3 FN_KW@[0; 2) 3 FN_KW@[0; 2) "fn"
4 WHITESPACE@[2; 3) 4 WHITESPACE@[2; 3) " "
5 NAME@[3; 6) 5 NAME@[3; 6)
6 IDENT@[3; 6) "foo" 6 IDENT@[3; 6) "foo"
7 PARAM_LIST@[6; 8) 7 PARAM_LIST@[6; 8)
8 L_PAREN@[6; 7) 8 L_PAREN@[6; 7) "("
9 R_PAREN@[7; 8) 9 R_PAREN@[7; 8) ")"
10 WHITESPACE@[8; 9) 10 WHITESPACE@[8; 9) " "
11 BLOCK@[9; 88) 11 BLOCK@[9; 88)
12 L_CURLY@[9; 10) 12 L_CURLY@[9; 10) "{"
13 WHITESPACE@[10; 15) 13 WHITESPACE@[10; 15) "\n "
14 MATCH_EXPR@[15; 86) 14 MATCH_EXPR@[15; 86)
15 MATCH_KW@[15; 20) 15 MATCH_KW@[15; 20) "match"
16 WHITESPACE@[20; 21) 16 WHITESPACE@[20; 21) " "
17 TUPLE_EXPR@[21; 23) 17 TUPLE_EXPR@[21; 23)
18 L_PAREN@[21; 22) 18 L_PAREN@[21; 22) "("
19 R_PAREN@[22; 23) 19 R_PAREN@[22; 23) ")"
20 WHITESPACE@[23; 24) 20 WHITESPACE@[23; 24) " "
21 MATCH_ARM_LIST@[24; 86) 21 MATCH_ARM_LIST@[24; 86)
22 L_CURLY@[24; 25) 22 L_CURLY@[24; 25) "{"
23 WHITESPACE@[25; 34) 23 WHITESPACE@[25; 34) "\n "
24 MATCH_ARM@[34; 41) 24 MATCH_ARM@[34; 41)
25 PLACEHOLDER_PAT@[34; 35) 25 PLACEHOLDER_PAT@[34; 35)
26 UNDERSCORE@[34; 35) 26 UNDERSCORE@[34; 35) "_"
27 WHITESPACE@[35; 36) 27 WHITESPACE@[35; 36) " "
28 FAT_ARROW@[36; 38) 28 FAT_ARROW@[36; 38) "=>"
29 WHITESPACE@[38; 39) 29 WHITESPACE@[38; 39) " "
30 TUPLE_EXPR@[39; 41) 30 TUPLE_EXPR@[39; 41)
31 L_PAREN@[39; 40) 31 L_PAREN@[39; 40) "("
32 R_PAREN@[40; 41) 32 R_PAREN@[40; 41) ")"
33 COMMA@[41; 42) 33 COMMA@[41; 42) ","
34 WHITESPACE@[42; 51) 34 WHITESPACE@[42; 51) "\n "
35 MATCH_ARM@[51; 58) 35 MATCH_ARM@[51; 58)
36 PLACEHOLDER_PAT@[51; 52) 36 PLACEHOLDER_PAT@[51; 52)
37 UNDERSCORE@[51; 52) 37 UNDERSCORE@[51; 52) "_"
38 WHITESPACE@[52; 53) 38 WHITESPACE@[52; 53) " "
39 FAT_ARROW@[53; 55) 39 FAT_ARROW@[53; 55) "=>"
40 WHITESPACE@[55; 56) 40 WHITESPACE@[55; 56) " "
41 TUPLE_EXPR@[56; 58) 41 TUPLE_EXPR@[56; 58)
42 L_PAREN@[56; 57) 42 L_PAREN@[56; 57) "("
43 R_PAREN@[57; 58) 43 R_PAREN@[57; 58) ")"
44 COMMA@[58; 59) 44 COMMA@[58; 59) ","
45 WHITESPACE@[59; 68) 45 WHITESPACE@[59; 68) "\n "
46 MATCH_ARM@[68; 80) 46 MATCH_ARM@[68; 80)
47 ATTR@[68; 80) 47 ATTR@[68; 80)
48 POUND@[68; 69) 48 POUND@[68; 69) "#"
49 TOKEN_TREE@[69; 80) 49 TOKEN_TREE@[69; 80)
50 L_BRACK@[69; 70) 50 L_BRACK@[69; 70) "["
51 IDENT@[70; 73) "cfg" 51 IDENT@[70; 73) "cfg"
52 TOKEN_TREE@[73; 79) 52 TOKEN_TREE@[73; 79)
53 L_PAREN@[73; 74) 53 L_PAREN@[73; 74) "("
54 IDENT@[74; 78) "test" 54 IDENT@[74; 78) "test"
55 R_PAREN@[78; 79) 55 R_PAREN@[78; 79) ")"
56 R_BRACK@[79; 80) 56 R_BRACK@[79; 80) "]"
57 err: `expected pattern` 57 err: `expected pattern`
58 err: `expected FAT_ARROW` 58 err: `expected FAT_ARROW`
59 err: `expected expression` 59 err: `expected expression`
60 WHITESPACE@[80; 85) 60 WHITESPACE@[80; 85) "\n "
61 R_CURLY@[85; 86) 61 R_CURLY@[85; 86) "}"
62 WHITESPACE@[86; 87) 62 WHITESPACE@[86; 87) "\n"
63 R_CURLY@[87; 88) 63 R_CURLY@[87; 88) "}"
64 WHITESPACE@[88; 89) 64 WHITESPACE@[88; 89) "\n"
diff --git a/crates/ra_syntax/tests/data/parser/inline/err/0001_array_type_missing_semi.txt b/crates/ra_syntax/tests/data/parser/inline/err/0001_array_type_missing_semi.txt
index f02027972..3020f9086 100644
--- a/crates/ra_syntax/tests/data/parser/inline/err/0001_array_type_missing_semi.txt
+++ b/crates/ra_syntax/tests/data/parser/inline/err/0001_array_type_missing_semi.txt
@@ -1,27 +1,27 @@
1SOURCE_FILE@[0; 18) 1SOURCE_FILE@[0; 18)
2 TYPE_ALIAS_DEF@[0; 12) 2 TYPE_ALIAS_DEF@[0; 12)
3 TYPE_KW@[0; 4) 3 TYPE_KW@[0; 4) "type"
4 WHITESPACE@[4; 5) 4 WHITESPACE@[4; 5) " "
5 NAME@[5; 6) 5 NAME@[5; 6)
6 IDENT@[5; 6) "T" 6 IDENT@[5; 6) "T"
7 WHITESPACE@[6; 7) 7 WHITESPACE@[6; 7) " "
8 EQ@[7; 8) 8 EQ@[7; 8) "="
9 WHITESPACE@[8; 9) 9 WHITESPACE@[8; 9) " "
10 SLICE_TYPE@[9; 12) 10 SLICE_TYPE@[9; 12)
11 L_BRACK@[9; 10) 11 L_BRACK@[9; 10) "["
12 TUPLE_TYPE@[10; 12) 12 TUPLE_TYPE@[10; 12)
13 L_PAREN@[10; 11) 13 L_PAREN@[10; 11) "("
14 R_PAREN@[11; 12) 14 R_PAREN@[11; 12) ")"
15 err: `expected `;` or `]`` 15 err: `expected `;` or `]``
16 err: `expected SEMI` 16 err: `expected SEMI`
17 WHITESPACE@[12; 13) 17 WHITESPACE@[12; 13) " "
18 err: `expected an item` 18 err: `expected an item`
19 ERROR@[13; 15) 19 ERROR@[13; 15)
20 INT_NUMBER@[13; 15) "92" 20 INT_NUMBER@[13; 15) "92"
21 err: `expected an item` 21 err: `expected an item`
22 ERROR@[15; 16) 22 ERROR@[15; 16)
23 R_BRACK@[15; 16) 23 R_BRACK@[15; 16) "]"
24 err: `expected an item` 24 err: `expected an item`
25 ERROR@[16; 17) 25 ERROR@[16; 17)
26 SEMI@[16; 17) 26 SEMI@[16; 17) ";"
27 WHITESPACE@[17; 18) 27 WHITESPACE@[17; 18) "\n"
diff --git a/crates/ra_syntax/tests/data/parser/inline/err/0002_misplaced_label_err.txt b/crates/ra_syntax/tests/data/parser/inline/err/0002_misplaced_label_err.txt
index 8021aee00..d61d8e73e 100644
--- a/crates/ra_syntax/tests/data/parser/inline/err/0002_misplaced_label_err.txt
+++ b/crates/ra_syntax/tests/data/parser/inline/err/0002_misplaced_label_err.txt
@@ -1,28 +1,28 @@
1SOURCE_FILE@[0; 30) 1SOURCE_FILE@[0; 30)
2 FN_DEF@[0; 29) 2 FN_DEF@[0; 29)
3 FN_KW@[0; 2) 3 FN_KW@[0; 2) "fn"
4 WHITESPACE@[2; 3) 4 WHITESPACE@[2; 3) " "
5 NAME@[3; 7) 5 NAME@[3; 7)
6 IDENT@[3; 7) "main" 6 IDENT@[3; 7) "main"
7 PARAM_LIST@[7; 9) 7 PARAM_LIST@[7; 9)
8 L_PAREN@[7; 8) 8 L_PAREN@[7; 8) "("
9 R_PAREN@[8; 9) 9 R_PAREN@[8; 9) ")"
10 WHITESPACE@[9; 10) 10 WHITESPACE@[9; 10) " "
11 BLOCK@[10; 29) 11 BLOCK@[10; 29)
12 L_CURLY@[10; 11) 12 L_CURLY@[10; 11) "{"
13 WHITESPACE@[11; 16) 13 WHITESPACE@[11; 16) "\n "
14 EXPR_STMT@[16; 22) 14 EXPR_STMT@[16; 22)
15 ERROR@[16; 22) 15 ERROR@[16; 22)
16 LABEL@[16; 22) 16 LABEL@[16; 22)
17 LIFETIME@[16; 21) "'loop" 17 LIFETIME@[16; 21) "\'loop"
18 COLON@[21; 22) 18 COLON@[21; 22) ":"
19 err: `expected a loop` 19 err: `expected a loop`
20 err: `expected SEMI` 20 err: `expected SEMI`
21 WHITESPACE@[22; 23) 21 WHITESPACE@[22; 23) " "
22 IMPL_BLOCK@[23; 27) 22 IMPL_BLOCK@[23; 27)
23 IMPL_KW@[23; 27) 23 IMPL_KW@[23; 27) "impl"
24 err: `expected type` 24 err: `expected type`
25 err: `expected `{`` 25 err: `expected `{``
26 WHITESPACE@[27; 28) 26 WHITESPACE@[27; 28) "\n"
27 R_CURLY@[28; 29) 27 R_CURLY@[28; 29) "}"
28 WHITESPACE@[29; 30) 28 WHITESPACE@[29; 30) "\n"
diff --git a/crates/ra_syntax/tests/data/parser/inline/err/0003_pointer_type_no_mutability.txt b/crates/ra_syntax/tests/data/parser/inline/err/0003_pointer_type_no_mutability.txt
index b11171fd0..3d7a6a745 100644
--- a/crates/ra_syntax/tests/data/parser/inline/err/0003_pointer_type_no_mutability.txt
+++ b/crates/ra_syntax/tests/data/parser/inline/err/0003_pointer_type_no_mutability.txt
@@ -1,17 +1,17 @@
1SOURCE_FILE@[0; 14) 1SOURCE_FILE@[0; 14)
2 TYPE_ALIAS_DEF@[0; 13) 2 TYPE_ALIAS_DEF@[0; 13)
3 TYPE_KW@[0; 4) 3 TYPE_KW@[0; 4) "type"
4 WHITESPACE@[4; 5) 4 WHITESPACE@[4; 5) " "
5 NAME@[5; 6) 5 NAME@[5; 6)
6 IDENT@[5; 6) "T" 6 IDENT@[5; 6) "T"
7 WHITESPACE@[6; 7) 7 WHITESPACE@[6; 7) " "
8 EQ@[7; 8) 8 EQ@[7; 8) "="
9 WHITESPACE@[8; 9) 9 WHITESPACE@[8; 9) " "
10 POINTER_TYPE@[9; 12) 10 POINTER_TYPE@[9; 12)
11 STAR@[9; 10) 11 STAR@[9; 10) "*"
12 err: `expected mut or const in raw pointer type (use `*mut T` or `*const T` as appropriate)` 12 err: `expected mut or const in raw pointer type (use `*mut T` or `*const T` as appropriate)`
13 TUPLE_TYPE@[10; 12) 13 TUPLE_TYPE@[10; 12)
14 L_PAREN@[10; 11) 14 L_PAREN@[10; 11) "("
15 R_PAREN@[11; 12) 15 R_PAREN@[11; 12) ")"
16 SEMI@[12; 13) 16 SEMI@[12; 13) ";"
17 WHITESPACE@[13; 14) 17 WHITESPACE@[13; 14) "\n"
diff --git a/crates/ra_syntax/tests/data/parser/inline/err/0004_impl_type.txt b/crates/ra_syntax/tests/data/parser/inline/err/0004_impl_type.txt
index 6875ed016..86f84459a 100644
--- a/crates/ra_syntax/tests/data/parser/inline/err/0004_impl_type.txt
+++ b/crates/ra_syntax/tests/data/parser/inline/err/0004_impl_type.txt
@@ -1,79 +1,79 @@
1SOURCE_FILE@[0; 87) 1SOURCE_FILE@[0; 87)
2 IMPL_BLOCK@[0; 12) 2 IMPL_BLOCK@[0; 12)
3 IMPL_KW@[0; 4) 3 IMPL_KW@[0; 4) "impl"
4 WHITESPACE@[4; 5) 4 WHITESPACE@[4; 5) " "
5 PATH_TYPE@[5; 9) 5 PATH_TYPE@[5; 9)
6 PATH@[5; 9) 6 PATH@[5; 9)
7 PATH_SEGMENT@[5; 9) 7 PATH_SEGMENT@[5; 9)
8 NAME_REF@[5; 9) 8 NAME_REF@[5; 9)
9 IDENT@[5; 9) "Type" 9 IDENT@[5; 9) "Type"
10 WHITESPACE@[9; 10) 10 WHITESPACE@[9; 10) " "
11 ITEM_LIST@[10; 12) 11 ITEM_LIST@[10; 12)
12 L_CURLY@[10; 11) 12 L_CURLY@[10; 11) "{"
13 R_CURLY@[11; 12) 13 R_CURLY@[11; 12) "}"
14 WHITESPACE@[12; 13) 14 WHITESPACE@[12; 13) "\n"
15 IMPL_BLOCK@[13; 33) 15 IMPL_BLOCK@[13; 33)
16 IMPL_KW@[13; 17) 16 IMPL_KW@[13; 17) "impl"
17 WHITESPACE@[17; 18) 17 WHITESPACE@[17; 18) " "
18 PATH_TYPE@[18; 24) 18 PATH_TYPE@[18; 24)
19 PATH@[18; 24) 19 PATH@[18; 24)
20 PATH_SEGMENT@[18; 24) 20 PATH_SEGMENT@[18; 24)
21 NAME_REF@[18; 24) 21 NAME_REF@[18; 24)
22 IDENT@[18; 24) "Trait1" 22 IDENT@[18; 24) "Trait1"
23 WHITESPACE@[24; 25) 23 WHITESPACE@[24; 25) " "
24 FOR_KW@[25; 28) 24 FOR_KW@[25; 28) "for"
25 WHITESPACE@[28; 29) 25 WHITESPACE@[28; 29) " "
26 PATH_TYPE@[29; 30) 26 PATH_TYPE@[29; 30)
27 PATH@[29; 30) 27 PATH@[29; 30)
28 PATH_SEGMENT@[29; 30) 28 PATH_SEGMENT@[29; 30)
29 NAME_REF@[29; 30) 29 NAME_REF@[29; 30)
30 IDENT@[29; 30) "T" 30 IDENT@[29; 30) "T"
31 WHITESPACE@[30; 31) 31 WHITESPACE@[30; 31) " "
32 ITEM_LIST@[31; 33) 32 ITEM_LIST@[31; 33)
33 L_CURLY@[31; 32) 33 L_CURLY@[31; 32) "{"
34 R_CURLY@[32; 33) 34 R_CURLY@[32; 33) "}"
35 WHITESPACE@[33; 34) 35 WHITESPACE@[33; 34) "\n"
36 IMPL_BLOCK@[34; 38) 36 IMPL_BLOCK@[34; 38)
37 IMPL_KW@[34; 38) 37 IMPL_KW@[34; 38) "impl"
38 err: `expected trait or type` 38 err: `expected trait or type`
39 err: `expected `{`` 39 err: `expected `{``
40 WHITESPACE@[38; 39) 40 WHITESPACE@[38; 39) " "
41 IMPL_BLOCK@[39; 54) 41 IMPL_BLOCK@[39; 54)
42 IMPL_KW@[39; 43) 42 IMPL_KW@[39; 43) "impl"
43 WHITESPACE@[43; 44) 43 WHITESPACE@[43; 44) " "
44 PATH_TYPE@[44; 51) 44 PATH_TYPE@[44; 51)
45 PATH@[44; 51) 45 PATH@[44; 51)
46 PATH_SEGMENT@[44; 51) 46 PATH_SEGMENT@[44; 51)
47 NAME_REF@[44; 51) 47 NAME_REF@[44; 51)
48 IDENT@[44; 51) "NotType" 48 IDENT@[44; 51) "NotType"
49 WHITESPACE@[51; 52) 49 WHITESPACE@[51; 52) " "
50 ITEM_LIST@[52; 54) 50 ITEM_LIST@[52; 54)
51 L_CURLY@[52; 53) 51 L_CURLY@[52; 53) "{"
52 R_CURLY@[53; 54) 52 R_CURLY@[53; 54) "}"
53 WHITESPACE@[54; 55) 53 WHITESPACE@[54; 55) "\n"
54 IMPL_BLOCK@[55; 70) 54 IMPL_BLOCK@[55; 70)
55 IMPL_KW@[55; 59) 55 IMPL_KW@[55; 59) "impl"
56 WHITESPACE@[59; 60) 56 WHITESPACE@[59; 60) " "
57 PATH_TYPE@[60; 66) 57 PATH_TYPE@[60; 66)
58 PATH@[60; 66) 58 PATH@[60; 66)
59 PATH_SEGMENT@[60; 66) 59 PATH_SEGMENT@[60; 66)
60 NAME_REF@[60; 66) 60 NAME_REF@[60; 66)
61 IDENT@[60; 66) "Trait2" 61 IDENT@[60; 66) "Trait2"
62 WHITESPACE@[66; 67) 62 WHITESPACE@[66; 67) " "
63 FOR_KW@[67; 70) 63 FOR_KW@[67; 70) "for"
64 err: `expected trait or type` 64 err: `expected trait or type`
65 err: `expected `{`` 65 err: `expected `{``
66 WHITESPACE@[70; 71) 66 WHITESPACE@[70; 71) " "
67 IMPL_BLOCK@[71; 86) 67 IMPL_BLOCK@[71; 86)
68 IMPL_KW@[71; 75) 68 IMPL_KW@[71; 75) "impl"
69 WHITESPACE@[75; 76) 69 WHITESPACE@[75; 76) " "
70 PATH_TYPE@[76; 83) 70 PATH_TYPE@[76; 83)
71 PATH@[76; 83) 71 PATH@[76; 83)
72 PATH_SEGMENT@[76; 83) 72 PATH_SEGMENT@[76; 83)
73 NAME_REF@[76; 83) 73 NAME_REF@[76; 83)
74 IDENT@[76; 83) "NotType" 74 IDENT@[76; 83) "NotType"
75 WHITESPACE@[83; 84) 75 WHITESPACE@[83; 84) " "
76 ITEM_LIST@[84; 86) 76 ITEM_LIST@[84; 86)
77 L_CURLY@[84; 85) 77 L_CURLY@[84; 85) "{"
78 R_CURLY@[85; 86) 78 R_CURLY@[85; 86) "}"
79 WHITESPACE@[86; 87) 79 WHITESPACE@[86; 87) "\n"
diff --git a/crates/ra_syntax/tests/data/parser/inline/err/0005_fn_pointer_type_missing_fn.txt b/crates/ra_syntax/tests/data/parser/inline/err/0005_fn_pointer_type_missing_fn.txt
index ab879db03..4587525aa 100644
--- a/crates/ra_syntax/tests/data/parser/inline/err/0005_fn_pointer_type_missing_fn.txt
+++ b/crates/ra_syntax/tests/data/parser/inline/err/0005_fn_pointer_type_missing_fn.txt
@@ -1,23 +1,23 @@
1SOURCE_FILE@[0; 20) 1SOURCE_FILE@[0; 20)
2 TYPE_ALIAS_DEF@[0; 15) 2 TYPE_ALIAS_DEF@[0; 15)
3 TYPE_KW@[0; 4) 3 TYPE_KW@[0; 4) "type"
4 WHITESPACE@[4; 5) 4 WHITESPACE@[4; 5) " "
5 NAME@[5; 6) 5 NAME@[5; 6)
6 IDENT@[5; 6) "F" 6 IDENT@[5; 6) "F"
7 WHITESPACE@[6; 7) 7 WHITESPACE@[6; 7) " "
8 EQ@[7; 8) 8 EQ@[7; 8) "="
9 WHITESPACE@[8; 9) 9 WHITESPACE@[8; 9) " "
10 UNSAFE_KW@[9; 15) 10 UNSAFE_KW@[9; 15) "unsafe"
11 err: `expected `fn`` 11 err: `expected `fn``
12 err: `expected SEMI` 12 err: `expected SEMI`
13 WHITESPACE@[15; 16) 13 WHITESPACE@[15; 16) " "
14 err: `expected an item` 14 err: `expected an item`
15 ERROR@[16; 17) 15 ERROR@[16; 17)
16 L_PAREN@[16; 17) 16 L_PAREN@[16; 17) "("
17 err: `expected an item` 17 err: `expected an item`
18 ERROR@[17; 18) 18 ERROR@[17; 18)
19 R_PAREN@[17; 18) 19 R_PAREN@[17; 18) ")"
20 err: `expected an item` 20 err: `expected an item`
21 ERROR@[18; 19) 21 ERROR@[18; 19)
22 SEMI@[18; 19) 22 SEMI@[18; 19) ";"
23 WHITESPACE@[19; 20) 23 WHITESPACE@[19; 20) "\n"
diff --git a/crates/ra_syntax/tests/data/parser/inline/err/0006_unsafe_block_in_mod.txt b/crates/ra_syntax/tests/data/parser/inline/err/0006_unsafe_block_in_mod.txt
index d2da2bad7..fefa35c20 100644
--- a/crates/ra_syntax/tests/data/parser/inline/err/0006_unsafe_block_in_mod.txt
+++ b/crates/ra_syntax/tests/data/parser/inline/err/0006_unsafe_block_in_mod.txt
@@ -1,35 +1,35 @@
1SOURCE_FILE@[0; 33) 1SOURCE_FILE@[0; 33)
2 FN_DEF@[0; 10) 2 FN_DEF@[0; 10)
3 FN_KW@[0; 2) 3 FN_KW@[0; 2) "fn"
4 WHITESPACE@[2; 3) 4 WHITESPACE@[2; 3) " "
5 NAME@[3; 6) 5 NAME@[3; 6)
6 IDENT@[3; 6) "foo" 6 IDENT@[3; 6) "foo"
7 PARAM_LIST@[6; 8) 7 PARAM_LIST@[6; 8)
8 L_PAREN@[6; 7) 8 L_PAREN@[6; 7) "("
9 R_PAREN@[7; 8) 9 R_PAREN@[7; 8) ")"
10 BLOCK@[8; 10) 10 BLOCK@[8; 10)
11 L_CURLY@[8; 9) 11 L_CURLY@[8; 9) "{"
12 R_CURLY@[9; 10) 12 R_CURLY@[9; 10) "}"
13 WHITESPACE@[10; 11) 13 WHITESPACE@[10; 11) " "
14 err: `expected an item` 14 err: `expected an item`
15 ERROR@[11; 17) 15 ERROR@[11; 17)
16 UNSAFE_KW@[11; 17) 16 UNSAFE_KW@[11; 17) "unsafe"
17 WHITESPACE@[17; 18) 17 WHITESPACE@[17; 18) " "
18 err: `expected an item` 18 err: `expected an item`
19 ERROR@[18; 21) 19 ERROR@[18; 21)
20 L_CURLY@[18; 19) 20 L_CURLY@[18; 19) "{"
21 WHITESPACE@[19; 20) 21 WHITESPACE@[19; 20) " "
22 R_CURLY@[20; 21) 22 R_CURLY@[20; 21) "}"
23 WHITESPACE@[21; 22) 23 WHITESPACE@[21; 22) " "
24 FN_DEF@[22; 32) 24 FN_DEF@[22; 32)
25 FN_KW@[22; 24) 25 FN_KW@[22; 24) "fn"
26 WHITESPACE@[24; 25) 26 WHITESPACE@[24; 25) " "
27 NAME@[25; 28) 27 NAME@[25; 28)
28 IDENT@[25; 28) "bar" 28 IDENT@[25; 28) "bar"
29 PARAM_LIST@[28; 30) 29 PARAM_LIST@[28; 30)
30 L_PAREN@[28; 29) 30 L_PAREN@[28; 29) "("
31 R_PAREN@[29; 30) 31 R_PAREN@[29; 30) ")"
32 BLOCK@[30; 32) 32 BLOCK@[30; 32)
33 L_CURLY@[30; 31) 33 L_CURLY@[30; 31) "{"
34 R_CURLY@[31; 32) 34 R_CURLY@[31; 32) "}"
35 WHITESPACE@[32; 33) 35 WHITESPACE@[32; 33) "\n"
diff --git a/crates/ra_syntax/tests/data/parser/inline/err/0007_async_without_semicolon.txt b/crates/ra_syntax/tests/data/parser/inline/err/0007_async_without_semicolon.txt
index bb9a2d029..8afcd5429 100644
--- a/crates/ra_syntax/tests/data/parser/inline/err/0007_async_without_semicolon.txt
+++ b/crates/ra_syntax/tests/data/parser/inline/err/0007_async_without_semicolon.txt
@@ -1,31 +1,31 @@
1SOURCE_FILE@[0; 30) 1SOURCE_FILE@[0; 30)
2 FN_DEF@[0; 29) 2 FN_DEF@[0; 29)
3 FN_KW@[0; 2) 3 FN_KW@[0; 2) "fn"
4 WHITESPACE@[2; 3) 4 WHITESPACE@[2; 3) " "
5 NAME@[3; 6) 5 NAME@[3; 6)
6 IDENT@[3; 6) "foo" 6 IDENT@[3; 6) "foo"
7 PARAM_LIST@[6; 8) 7 PARAM_LIST@[6; 8)
8 L_PAREN@[6; 7) 8 L_PAREN@[6; 7) "("
9 R_PAREN@[7; 8) 9 R_PAREN@[7; 8) ")"
10 WHITESPACE@[8; 9) 10 WHITESPACE@[8; 9) " "
11 BLOCK@[9; 29) 11 BLOCK@[9; 29)
12 L_CURLY@[9; 10) 12 L_CURLY@[9; 10) "{"
13 WHITESPACE@[10; 11) 13 WHITESPACE@[10; 11) " "
14 LET_STMT@[11; 27) 14 LET_STMT@[11; 27)
15 LET_KW@[11; 14) 15 LET_KW@[11; 14) "let"
16 WHITESPACE@[14; 15) 16 WHITESPACE@[14; 15) " "
17 PLACEHOLDER_PAT@[15; 16) 17 PLACEHOLDER_PAT@[15; 16)
18 UNDERSCORE@[15; 16) 18 UNDERSCORE@[15; 16) "_"
19 WHITESPACE@[16; 17) 19 WHITESPACE@[16; 17) " "
20 EQ@[17; 18) 20 EQ@[17; 18) "="
21 WHITESPACE@[18; 19) 21 WHITESPACE@[18; 19) " "
22 BLOCK_EXPR@[19; 27) 22 BLOCK_EXPR@[19; 27)
23 ASYNC_KW@[19; 24) 23 ASYNC_KW@[19; 24) "async"
24 WHITESPACE@[24; 25) 24 WHITESPACE@[24; 25) " "
25 BLOCK@[25; 27) 25 BLOCK@[25; 27)
26 L_CURLY@[25; 26) 26 L_CURLY@[25; 26) "{"
27 R_CURLY@[26; 27) 27 R_CURLY@[26; 27) "}"
28 err: `expected SEMI` 28 err: `expected SEMI`
29 WHITESPACE@[27; 28) 29 WHITESPACE@[27; 28) " "
30 R_CURLY@[28; 29) 30 R_CURLY@[28; 29) "}"
31 WHITESPACE@[29; 30) 31 WHITESPACE@[29; 30) "\n"
diff --git a/crates/ra_syntax/tests/data/parser/inline/err/0008_pub_expr.txt b/crates/ra_syntax/tests/data/parser/inline/err/0008_pub_expr.txt
index e65d9c9e1..1af31c48b 100644
--- a/crates/ra_syntax/tests/data/parser/inline/err/0008_pub_expr.txt
+++ b/crates/ra_syntax/tests/data/parser/inline/err/0008_pub_expr.txt
@@ -1,25 +1,25 @@
1SOURCE_FILE@[0; 21) 1SOURCE_FILE@[0; 21)
2 FN_DEF@[0; 20) 2 FN_DEF@[0; 20)
3 FN_KW@[0; 2) 3 FN_KW@[0; 2) "fn"
4 WHITESPACE@[2; 3) 4 WHITESPACE@[2; 3) " "
5 NAME@[3; 6) 5 NAME@[3; 6)
6 IDENT@[3; 6) "foo" 6 IDENT@[3; 6) "foo"
7 PARAM_LIST@[6; 8) 7 PARAM_LIST@[6; 8)
8 L_PAREN@[6; 7) 8 L_PAREN@[6; 7) "("
9 R_PAREN@[7; 8) 9 R_PAREN@[7; 8) ")"
10 WHITESPACE@[8; 9) 10 WHITESPACE@[8; 9) " "
11 BLOCK@[9; 20) 11 BLOCK@[9; 20)
12 L_CURLY@[9; 10) 12 L_CURLY@[9; 10) "{"
13 WHITESPACE@[10; 11) 13 WHITESPACE@[10; 11) " "
14 ERROR@[11; 14) 14 ERROR@[11; 14)
15 VISIBILITY@[11; 14) 15 VISIBILITY@[11; 14)
16 PUB_KW@[11; 14) 16 PUB_KW@[11; 14) "pub"
17 err: `expected an item` 17 err: `expected an item`
18 WHITESPACE@[14; 15) 18 WHITESPACE@[14; 15) " "
19 EXPR_STMT@[15; 18) 19 EXPR_STMT@[15; 18)
20 LITERAL@[15; 17) 20 LITERAL@[15; 17)
21 INT_NUMBER@[15; 17) "92" 21 INT_NUMBER@[15; 17) "92"
22 SEMI@[17; 18) 22 SEMI@[17; 18) ";"
23 WHITESPACE@[18; 19) 23 WHITESPACE@[18; 19) " "
24 R_CURLY@[19; 20) 24 R_CURLY@[19; 20) "}"
25 WHITESPACE@[20; 21) 25 WHITESPACE@[20; 21) "\n"
diff --git a/crates/ra_syntax/tests/data/parser/inline/err/0009_attr_on_expr_not_allowed.txt b/crates/ra_syntax/tests/data/parser/inline/err/0009_attr_on_expr_not_allowed.txt
index fdea1ec1e..9d50a520f 100644
--- a/crates/ra_syntax/tests/data/parser/inline/err/0009_attr_on_expr_not_allowed.txt
+++ b/crates/ra_syntax/tests/data/parser/inline/err/0009_attr_on_expr_not_allowed.txt
@@ -1,55 +1,55 @@
1SOURCE_FILE@[0; 48) 1SOURCE_FILE@[0; 48)
2 FN_DEF@[0; 47) 2 FN_DEF@[0; 47)
3 FN_KW@[0; 2) 3 FN_KW@[0; 2) "fn"
4 WHITESPACE@[2; 3) 4 WHITESPACE@[2; 3) " "
5 NAME@[3; 6) 5 NAME@[3; 6)
6 IDENT@[3; 6) "foo" 6 IDENT@[3; 6) "foo"
7 PARAM_LIST@[6; 8) 7 PARAM_LIST@[6; 8)
8 L_PAREN@[6; 7) 8 L_PAREN@[6; 7) "("
9 R_PAREN@[7; 8) 9 R_PAREN@[7; 8) ")"
10 WHITESPACE@[8; 9) 10 WHITESPACE@[8; 9) " "
11 BLOCK@[9; 47) 11 BLOCK@[9; 47)
12 L_CURLY@[9; 10) 12 L_CURLY@[9; 10) "{"
13 WHITESPACE@[10; 14) 13 WHITESPACE@[10; 14) "\n "
14 EXPR_STMT@[14; 25) 14 EXPR_STMT@[14; 25)
15 ATTR@[14; 18) 15 ATTR@[14; 18)
16 POUND@[14; 15) 16 POUND@[14; 15) "#"
17 TOKEN_TREE@[15; 18) 17 TOKEN_TREE@[15; 18)
18 L_BRACK@[15; 16) 18 L_BRACK@[15; 16) "["
19 IDENT@[16; 17) "A" 19 IDENT@[16; 17) "A"
20 R_BRACK@[17; 18) 20 R_BRACK@[17; 18) "]"
21 WHITESPACE@[18; 19) 21 WHITESPACE@[18; 19) " "
22 BIN_EXPR@[19; 24) 22 BIN_EXPR@[19; 24)
23 LITERAL@[19; 20) 23 LITERAL@[19; 20)
24 INT_NUMBER@[19; 20) "1" 24 INT_NUMBER@[19; 20) "1"
25 WHITESPACE@[20; 21) 25 WHITESPACE@[20; 21) " "
26 PLUS@[21; 22) 26 PLUS@[21; 22) "+"
27 WHITESPACE@[22; 23) 27 WHITESPACE@[22; 23) " "
28 LITERAL@[23; 24) 28 LITERAL@[23; 24)
29 INT_NUMBER@[23; 24) "2" 29 INT_NUMBER@[23; 24) "2"
30 err: `attributes are not allowed on BIN_EXPR` 30 err: `attributes are not allowed on BIN_EXPR`
31 SEMI@[24; 25) 31 SEMI@[24; 25) ";"
32 WHITESPACE@[25; 29) 32 WHITESPACE@[25; 29) "\n "
33 EXPR_STMT@[29; 45) 33 EXPR_STMT@[29; 45)
34 ATTR@[29; 33) 34 ATTR@[29; 33)
35 POUND@[29; 30) 35 POUND@[29; 30) "#"
36 TOKEN_TREE@[30; 33) 36 TOKEN_TREE@[30; 33)
37 L_BRACK@[30; 31) 37 L_BRACK@[30; 31) "["
38 IDENT@[31; 32) "B" 38 IDENT@[31; 32) "B"
39 R_BRACK@[32; 33) 39 R_BRACK@[32; 33) "]"
40 WHITESPACE@[33; 34) 40 WHITESPACE@[33; 34) " "
41 IF_EXPR@[34; 44) 41 IF_EXPR@[34; 44)
42 IF_KW@[34; 36) 42 IF_KW@[34; 36) "if"
43 WHITESPACE@[36; 37) 43 WHITESPACE@[36; 37) " "
44 CONDITION@[37; 41) 44 CONDITION@[37; 41)
45 LITERAL@[37; 41) 45 LITERAL@[37; 41)
46 TRUE_KW@[37; 41) 46 TRUE_KW@[37; 41) "true"
47 WHITESPACE@[41; 42) 47 WHITESPACE@[41; 42) " "
48 BLOCK@[42; 44) 48 BLOCK@[42; 44)
49 L_CURLY@[42; 43) 49 L_CURLY@[42; 43) "{"
50 R_CURLY@[43; 44) 50 R_CURLY@[43; 44) "}"
51 err: `attributes are not allowed on IF_EXPR` 51 err: `attributes are not allowed on IF_EXPR`
52 SEMI@[44; 45) 52 SEMI@[44; 45) ";"
53 WHITESPACE@[45; 46) 53 WHITESPACE@[45; 46) "\n"
54 R_CURLY@[46; 47) 54 R_CURLY@[46; 47) "}"
55 WHITESPACE@[47; 48) 55 WHITESPACE@[47; 48) "\n"
diff --git a/crates/ra_syntax/tests/data/parser/inline/ok/0001_trait_item_list.txt b/crates/ra_syntax/tests/data/parser/inline/ok/0001_trait_item_list.txt
index 7c9e1e621..18f02bb22 100644
--- a/crates/ra_syntax/tests/data/parser/inline/ok/0001_trait_item_list.txt
+++ b/crates/ra_syntax/tests/data/parser/inline/ok/0001_trait_item_list.txt
@@ -1,69 +1,71 @@
1SOURCE_FILE@[0; 83) 1SOURCE_FILE@[0; 83)
2 IMPL_BLOCK@[0; 82) 2 IMPL_BLOCK@[0; 82)
3 IMPL_KW@[0; 4) 3 IMPL_KW@[0; 4) "impl"
4 WHITESPACE@[4; 5) 4 WHITESPACE@[4; 5) " "
5 PATH_TYPE@[5; 6) 5 PATH_TYPE@[5; 6)
6 PATH@[5; 6) 6 PATH@[5; 6)
7 PATH_SEGMENT@[5; 6) 7 PATH_SEGMENT@[5; 6)
8 NAME_REF@[5; 6) 8 NAME_REF@[5; 6)
9 IDENT@[5; 6) "F" 9 IDENT@[5; 6) "F"
10 WHITESPACE@[6; 7) 10 WHITESPACE@[6; 7) " "
11 ITEM_LIST@[7; 82) 11 ITEM_LIST@[7; 82)
12 L_CURLY@[7; 8) 12 L_CURLY@[7; 8) "{"
13 WHITESPACE@[8; 13) 13 WHITESPACE@[8; 13) "\n "
14 TYPE_ALIAS_DEF@[13; 27) 14 TYPE_ALIAS_DEF@[13; 27)
15 TYPE_KW@[13; 17) 15 TYPE_KW@[13; 17) "type"
16 WHITESPACE@[17; 18) 16 WHITESPACE@[17; 18) " "
17 NAME@[18; 19) 17 NAME@[18; 19)
18 IDENT@[18; 19) "A" 18 IDENT@[18; 19) "A"
19 COLON@[19; 20) 19 COLON@[19; 20) ":"
20 WHITESPACE@[20; 21) 20 WHITESPACE@[20; 21) " "
21 PATH_TYPE@[21; 26) 21 TYPE_BOUND_LIST@[21; 26)
22 PATH@[21; 26) 22 TYPE_BOUND@[21; 26)
23 PATH_SEGMENT@[21; 26) 23 PATH_TYPE@[21; 26)
24 NAME_REF@[21; 26) 24 PATH@[21; 26)
25 IDENT@[21; 26) "Clone" 25 PATH_SEGMENT@[21; 26)
26 SEMI@[26; 27) 26 NAME_REF@[21; 26)
27 WHITESPACE@[27; 32) 27 IDENT@[21; 26) "Clone"
28 SEMI@[26; 27) ";"
29 WHITESPACE@[27; 32) "\n "
28 CONST_DEF@[32; 45) 30 CONST_DEF@[32; 45)
29 CONST_KW@[32; 37) 31 CONST_KW@[32; 37) "const"
30 WHITESPACE@[37; 38) 32 WHITESPACE@[37; 38) " "
31 NAME@[38; 39) 33 NAME@[38; 39)
32 IDENT@[38; 39) "B" 34 IDENT@[38; 39) "B"
33 COLON@[39; 40) 35 COLON@[39; 40) ":"
34 WHITESPACE@[40; 41) 36 WHITESPACE@[40; 41) " "
35 PATH_TYPE@[41; 44) 37 PATH_TYPE@[41; 44)
36 PATH@[41; 44) 38 PATH@[41; 44)
37 PATH_SEGMENT@[41; 44) 39 PATH_SEGMENT@[41; 44)
38 NAME_REF@[41; 44) 40 NAME_REF@[41; 44)
39 IDENT@[41; 44) "i32" 41 IDENT@[41; 44) "i32"
40 SEMI@[44; 45) 42 SEMI@[44; 45) ";"
41 WHITESPACE@[45; 50) 43 WHITESPACE@[45; 50) "\n "
42 FN_DEF@[50; 61) 44 FN_DEF@[50; 61)
43 FN_KW@[50; 52) 45 FN_KW@[50; 52) "fn"
44 WHITESPACE@[52; 53) 46 WHITESPACE@[52; 53) " "
45 NAME@[53; 56) 47 NAME@[53; 56)
46 IDENT@[53; 56) "foo" 48 IDENT@[53; 56) "foo"
47 PARAM_LIST@[56; 58) 49 PARAM_LIST@[56; 58)
48 L_PAREN@[56; 57) 50 L_PAREN@[56; 57) "("
49 R_PAREN@[57; 58) 51 R_PAREN@[57; 58) ")"
50 WHITESPACE@[58; 59) 52 WHITESPACE@[58; 59) " "
51 BLOCK@[59; 61) 53 BLOCK@[59; 61)
52 L_CURLY@[59; 60) 54 L_CURLY@[59; 60) "{"
53 R_CURLY@[60; 61) 55 R_CURLY@[60; 61) "}"
54 WHITESPACE@[61; 66) 56 WHITESPACE@[61; 66) "\n "
55 FN_DEF@[66; 80) 57 FN_DEF@[66; 80)
56 FN_KW@[66; 68) 58 FN_KW@[66; 68) "fn"
57 WHITESPACE@[68; 69) 59 WHITESPACE@[68; 69) " "
58 NAME@[69; 72) 60 NAME@[69; 72)
59 IDENT@[69; 72) "bar" 61 IDENT@[69; 72) "bar"
60 PARAM_LIST@[72; 79) 62 PARAM_LIST@[72; 79)
61 L_PAREN@[72; 73) 63 L_PAREN@[72; 73) "("
62 SELF_PARAM@[73; 78) 64 SELF_PARAM@[73; 78)
63 AMP@[73; 74) 65 AMP@[73; 74) "&"
64 SELF_KW@[74; 78) 66 SELF_KW@[74; 78) "self"
65 R_PAREN@[78; 79) 67 R_PAREN@[78; 79) ")"
66 SEMI@[79; 80) 68 SEMI@[79; 80) ";"
67 WHITESPACE@[80; 81) 69 WHITESPACE@[80; 81) "\n"
68 R_CURLY@[81; 82) 70 R_CURLY@[81; 82) "}"
69 WHITESPACE@[82; 83) 71 WHITESPACE@[82; 83) "\n"
diff --git a/crates/ra_syntax/tests/data/parser/inline/ok/0002_use_tree_list.txt b/crates/ra_syntax/tests/data/parser/inline/ok/0002_use_tree_list.txt
index 89a0b9f2a..1b318dfb9 100644
--- a/crates/ra_syntax/tests/data/parser/inline/ok/0002_use_tree_list.txt
+++ b/crates/ra_syntax/tests/data/parser/inline/ok/0002_use_tree_list.txt
@@ -1,31 +1,31 @@
1SOURCE_FILE@[0; 250) 1SOURCE_FILE@[0; 250)
2 USE_ITEM@[0; 58) 2 USE_ITEM@[0; 58)
3 USE_KW@[0; 3) 3 USE_KW@[0; 3) "use"
4 WHITESPACE@[3; 4) 4 WHITESPACE@[3; 4) " "
5 USE_TREE@[4; 57) 5 USE_TREE@[4; 57)
6 USE_TREE_LIST@[4; 57) 6 USE_TREE_LIST@[4; 57)
7 L_CURLY@[4; 5) 7 L_CURLY@[4; 5) "{"
8 USE_TREE@[5; 28) 8 USE_TREE@[5; 28)
9 PATH@[5; 28) 9 PATH@[5; 28)
10 PATH@[5; 22) 10 PATH@[5; 22)
11 PATH@[5; 16) 11 PATH@[5; 16)
12 PATH@[5; 10) 12 PATH@[5; 10)
13 PATH_SEGMENT@[5; 10) 13 PATH_SEGMENT@[5; 10)
14 CRATE_KW@[5; 10) 14 CRATE_KW@[5; 10) "crate"
15 COLONCOLON@[10; 12) 15 COLONCOLON@[10; 12) "::"
16 PATH_SEGMENT@[12; 16) 16 PATH_SEGMENT@[12; 16)
17 NAME_REF@[12; 16) 17 NAME_REF@[12; 16)
18 IDENT@[12; 16) "path" 18 IDENT@[12; 16) "path"
19 COLONCOLON@[16; 18) 19 COLONCOLON@[16; 18) "::"
20 PATH_SEGMENT@[18; 22) 20 PATH_SEGMENT@[18; 22)
21 NAME_REF@[18; 22) 21 NAME_REF@[18; 22)
22 IDENT@[18; 22) "from" 22 IDENT@[18; 22) "from"
23 COLONCOLON@[22; 24) 23 COLONCOLON@[22; 24) "::"
24 PATH_SEGMENT@[24; 28) 24 PATH_SEGMENT@[24; 28)
25 NAME_REF@[24; 28) 25 NAME_REF@[24; 28)
26 IDENT@[24; 28) "root" 26 IDENT@[24; 28) "root"
27 COMMA@[28; 29) 27 COMMA@[28; 29) ","
28 WHITESPACE@[29; 30) 28 WHITESPACE@[29; 30) " "
29 USE_TREE@[30; 56) 29 USE_TREE@[30; 56)
30 PATH@[30; 56) 30 PATH@[30; 56)
31 PATH@[30; 44) 31 PATH@[30; 44)
@@ -34,29 +34,29 @@ SOURCE_FILE@[0; 250)
34 PATH_SEGMENT@[30; 32) 34 PATH_SEGMENT@[30; 32)
35 NAME_REF@[30; 32) 35 NAME_REF@[30; 32)
36 IDENT@[30; 32) "or" 36 IDENT@[30; 32) "or"
37 COLONCOLON@[32; 34) 37 COLONCOLON@[32; 34) "::"
38 PATH_SEGMENT@[34; 38) 38 PATH_SEGMENT@[34; 38)
39 NAME_REF@[34; 38) 39 NAME_REF@[34; 38)
40 IDENT@[34; 38) "path" 40 IDENT@[34; 38) "path"
41 COLONCOLON@[38; 40) 41 COLONCOLON@[38; 40) "::"
42 PATH_SEGMENT@[40; 44) 42 PATH_SEGMENT@[40; 44)
43 NAME_REF@[40; 44) 43 NAME_REF@[40; 44)
44 IDENT@[40; 44) "from" 44 IDENT@[40; 44) "from"
45 COLONCOLON@[44; 46) 45 COLONCOLON@[44; 46) "::"
46 PATH_SEGMENT@[46; 56) 46 PATH_SEGMENT@[46; 56)
47 NAME_REF@[46; 56) 47 NAME_REF@[46; 56)
48 IDENT@[46; 56) "crate_name" 48 IDENT@[46; 56) "crate_name"
49 R_CURLY@[56; 57) 49 R_CURLY@[56; 57) "}"
50 SEMI@[57; 58) 50 SEMI@[57; 58) ";"
51 WHITESPACE@[58; 59) 51 WHITESPACE@[58; 59) " "
52 COMMENT@[59; 97) 52 COMMENT@[59; 97) "// Rust 2018 (with a ..."
53 WHITESPACE@[97; 98) 53 WHITESPACE@[97; 98) "\n"
54 USE_ITEM@[98; 121) 54 USE_ITEM@[98; 121)
55 USE_KW@[98; 101) 55 USE_KW@[98; 101) "use"
56 WHITESPACE@[101; 102) 56 WHITESPACE@[101; 102) " "
57 USE_TREE@[102; 120) 57 USE_TREE@[102; 120)
58 USE_TREE_LIST@[102; 120) 58 USE_TREE_LIST@[102; 120)
59 L_CURLY@[102; 103) 59 L_CURLY@[102; 103) "{"
60 USE_TREE@[103; 119) 60 USE_TREE@[103; 119)
61 PATH@[103; 119) 61 PATH@[103; 119)
62 PATH@[103; 113) 62 PATH@[103; 113)
@@ -64,26 +64,26 @@ SOURCE_FILE@[0; 250)
64 PATH_SEGMENT@[103; 107) 64 PATH_SEGMENT@[103; 107)
65 NAME_REF@[103; 107) 65 NAME_REF@[103; 107)
66 IDENT@[103; 107) "path" 66 IDENT@[103; 107) "path"
67 COLONCOLON@[107; 109) 67 COLONCOLON@[107; 109) "::"
68 PATH_SEGMENT@[109; 113) 68 PATH_SEGMENT@[109; 113)
69 NAME_REF@[109; 113) 69 NAME_REF@[109; 113)
70 IDENT@[109; 113) "from" 70 IDENT@[109; 113) "from"
71 COLONCOLON@[113; 115) 71 COLONCOLON@[113; 115) "::"
72 PATH_SEGMENT@[115; 119) 72 PATH_SEGMENT@[115; 119)
73 NAME_REF@[115; 119) 73 NAME_REF@[115; 119)
74 IDENT@[115; 119) "root" 74 IDENT@[115; 119) "root"
75 R_CURLY@[119; 120) 75 R_CURLY@[119; 120) "}"
76 SEMI@[120; 121) 76 SEMI@[120; 121) ";"
77 WHITESPACE@[121; 122) 77 WHITESPACE@[121; 122) " "
78 COMMENT@[122; 134) 78 COMMENT@[122; 134) "// Rust 2015"
79 WHITESPACE@[134; 135) 79 WHITESPACE@[134; 135) "\n"
80 USE_ITEM@[135; 166) 80 USE_ITEM@[135; 166)
81 USE_KW@[135; 138) 81 USE_KW@[135; 138) "use"
82 WHITESPACE@[138; 139) 82 WHITESPACE@[138; 139) " "
83 USE_TREE@[139; 165) 83 USE_TREE@[139; 165)
84 COLONCOLON@[139; 141) 84 COLONCOLON@[139; 141) "::"
85 USE_TREE_LIST@[141; 165) 85 USE_TREE_LIST@[141; 165)
86 L_CURLY@[141; 142) 86 L_CURLY@[141; 142) "{"
87 USE_TREE@[142; 164) 87 USE_TREE@[142; 164)
88 PATH@[142; 164) 88 PATH@[142; 164)
89 PATH@[142; 158) 89 PATH@[142; 158)
@@ -91,45 +91,45 @@ SOURCE_FILE@[0; 250)
91 PATH_SEGMENT@[142; 146) 91 PATH_SEGMENT@[142; 146)
92 NAME_REF@[142; 146) 92 NAME_REF@[142; 146)
93 IDENT@[142; 146) "some" 93 IDENT@[142; 146) "some"
94 COLONCOLON@[146; 148) 94 COLONCOLON@[146; 148) "::"
95 PATH_SEGMENT@[148; 158) 95 PATH_SEGMENT@[148; 158)
96 NAME_REF@[148; 158) 96 NAME_REF@[148; 158)
97 IDENT@[148; 158) "arbritrary" 97 IDENT@[148; 158) "arbritrary"
98 COLONCOLON@[158; 160) 98 COLONCOLON@[158; 160) "::"
99 PATH_SEGMENT@[160; 164) 99 PATH_SEGMENT@[160; 164)
100 NAME_REF@[160; 164) 100 NAME_REF@[160; 164)
101 IDENT@[160; 164) "path" 101 IDENT@[160; 164) "path"
102 R_CURLY@[164; 165) 102 R_CURLY@[164; 165) "}"
103 SEMI@[165; 166) 103 SEMI@[165; 166) ";"
104 WHITESPACE@[166; 167) 104 WHITESPACE@[166; 167) " "
105 COMMENT@[167; 179) 105 COMMENT@[167; 179) "// Rust 2015"
106 WHITESPACE@[179; 180) 106 WHITESPACE@[179; 180) "\n"
107 USE_ITEM@[180; 206) 107 USE_ITEM@[180; 206)
108 USE_KW@[180; 183) 108 USE_KW@[180; 183) "use"
109 WHITESPACE@[183; 184) 109 WHITESPACE@[183; 184) " "
110 USE_TREE@[184; 205) 110 USE_TREE@[184; 205)
111 COLONCOLON@[184; 186) 111 COLONCOLON@[184; 186) "::"
112 USE_TREE_LIST@[186; 205) 112 USE_TREE_LIST@[186; 205)
113 L_CURLY@[186; 187) 113 L_CURLY@[186; 187) "{"
114 USE_TREE@[187; 204) 114 USE_TREE@[187; 204)
115 USE_TREE_LIST@[187; 204) 115 USE_TREE_LIST@[187; 204)
116 L_CURLY@[187; 188) 116 L_CURLY@[187; 188) "{"
117 USE_TREE@[188; 203) 117 USE_TREE@[188; 203)
118 USE_TREE_LIST@[188; 203) 118 USE_TREE_LIST@[188; 203)
119 L_CURLY@[188; 189) 119 L_CURLY@[188; 189) "{"
120 USE_TREE@[189; 202) 120 USE_TREE@[189; 202)
121 PATH@[189; 202) 121 PATH@[189; 202)
122 PATH@[189; 194) 122 PATH@[189; 194)
123 PATH_SEGMENT@[189; 194) 123 PATH_SEGMENT@[189; 194)
124 CRATE_KW@[189; 194) 124 CRATE_KW@[189; 194) "crate"
125 COLONCOLON@[194; 196) 125 COLONCOLON@[194; 196) "::"
126 PATH_SEGMENT@[196; 202) 126 PATH_SEGMENT@[196; 202)
127 NAME_REF@[196; 202) 127 NAME_REF@[196; 202)
128 IDENT@[196; 202) "export" 128 IDENT@[196; 202) "export"
129 R_CURLY@[202; 203) 129 R_CURLY@[202; 203) "}"
130 R_CURLY@[203; 204) 130 R_CURLY@[203; 204) "}"
131 R_CURLY@[204; 205) 131 R_CURLY@[204; 205) "}"
132 SEMI@[205; 206) 132 SEMI@[205; 206) ";"
133 WHITESPACE@[206; 207) 133 WHITESPACE@[206; 207) " "
134 COMMENT@[207; 249) 134 COMMENT@[207; 249) "// Nonsensical but pe ..."
135 WHITESPACE@[249; 250) 135 WHITESPACE@[249; 250) "\n"
diff --git a/crates/ra_syntax/tests/data/parser/inline/ok/0003_where_pred_for.txt b/crates/ra_syntax/tests/data/parser/inline/ok/0003_where_pred_for.txt
index 41420ea92..8a21ee968 100644
--- a/crates/ra_syntax/tests/data/parser/inline/ok/0003_where_pred_for.txt
+++ b/crates/ra_syntax/tests/data/parser/inline/ok/0003_where_pred_for.txt
@@ -1,59 +1,61 @@
1SOURCE_FILE@[0; 49) 1SOURCE_FILE@[0; 49)
2 FN_DEF@[0; 48) 2 FN_DEF@[0; 48)
3 FN_KW@[0; 2) 3 FN_KW@[0; 2) "fn"
4 WHITESPACE@[2; 3) 4 WHITESPACE@[2; 3) " "
5 NAME@[3; 7) 5 NAME@[3; 7)
6 IDENT@[3; 7) "test" 6 IDENT@[3; 7) "test"
7 TYPE_PARAM_LIST@[7; 10) 7 TYPE_PARAM_LIST@[7; 10)
8 L_ANGLE@[7; 8) 8 L_ANGLE@[7; 8) "<"
9 TYPE_PARAM@[8; 9) 9 TYPE_PARAM@[8; 9)
10 NAME@[8; 9) 10 NAME@[8; 9)
11 IDENT@[8; 9) "F" 11 IDENT@[8; 9) "F"
12 R_ANGLE@[9; 10) 12 R_ANGLE@[9; 10) ">"
13 PARAM_LIST@[10; 12) 13 PARAM_LIST@[10; 12)
14 L_PAREN@[10; 11) 14 L_PAREN@[10; 11) "("
15 R_PAREN@[11; 12) 15 R_PAREN@[11; 12) ")"
16 WHITESPACE@[12; 13) 16 WHITESPACE@[12; 13) "\n"
17 WHERE_CLAUSE@[13; 44) 17 WHERE_CLAUSE@[13; 44)
18 WHERE_KW@[13; 18) 18 WHERE_KW@[13; 18) "where"
19 WHITESPACE@[18; 22) 19 WHITESPACE@[18; 22) "\n "
20 WHERE_PRED@[22; 44) 20 WHERE_PRED@[22; 44)
21 FOR_TYPE@[22; 31) 21 FOR_TYPE@[22; 31)
22 FOR_KW@[22; 25) 22 FOR_KW@[22; 25) "for"
23 TYPE_PARAM_LIST@[25; 29) 23 TYPE_PARAM_LIST@[25; 29)
24 L_ANGLE@[25; 26) 24 L_ANGLE@[25; 26) "<"
25 LIFETIME_PARAM@[26; 28) 25 LIFETIME_PARAM@[26; 28)
26 LIFETIME@[26; 28) "'a" 26 LIFETIME@[26; 28) "\'a"
27 R_ANGLE@[28; 29) 27 R_ANGLE@[28; 29) ">"
28 WHITESPACE@[29; 30) 28 WHITESPACE@[29; 30) " "
29 PATH_TYPE@[30; 31) 29 PATH_TYPE@[30; 31)
30 PATH@[30; 31) 30 PATH@[30; 31)
31 PATH_SEGMENT@[30; 31) 31 PATH_SEGMENT@[30; 31)
32 NAME_REF@[30; 31) 32 NAME_REF@[30; 31)
33 IDENT@[30; 31) "F" 33 IDENT@[30; 31) "F"
34 COLON@[31; 32) 34 COLON@[31; 32) ":"
35 WHITESPACE@[32; 33) 35 WHITESPACE@[32; 33) " "
36 PATH_TYPE@[33; 44) 36 TYPE_BOUND_LIST@[33; 44)
37 PATH@[33; 44) 37 TYPE_BOUND@[33; 44)
38 PATH_SEGMENT@[33; 44) 38 PATH_TYPE@[33; 44)
39 NAME_REF@[33; 35) 39 PATH@[33; 44)
40 IDENT@[33; 35) "Fn" 40 PATH_SEGMENT@[33; 44)
41 PARAM_LIST@[35; 44) 41 NAME_REF@[33; 35)
42 L_PAREN@[35; 36) 42 IDENT@[33; 35) "Fn"
43 PARAM@[36; 43) 43 PARAM_LIST@[35; 44)
44 REFERENCE_TYPE@[36; 43) 44 L_PAREN@[35; 36) "("
45 AMP@[36; 37) 45 PARAM@[36; 43)
46 LIFETIME@[37; 39) "'a" 46 REFERENCE_TYPE@[36; 43)
47 WHITESPACE@[39; 40) 47 AMP@[36; 37) "&"
48 PATH_TYPE@[40; 43) 48 LIFETIME@[37; 39) "\'a"
49 PATH@[40; 43) 49 WHITESPACE@[39; 40) " "
50 PATH_SEGMENT@[40; 43) 50 PATH_TYPE@[40; 43)
51 NAME_REF@[40; 43) 51 PATH@[40; 43)
52 IDENT@[40; 43) "str" 52 PATH_SEGMENT@[40; 43)
53 R_PAREN@[43; 44) 53 NAME_REF@[40; 43)
54 WHITESPACE@[44; 45) 54 IDENT@[40; 43) "str"
55 R_PAREN@[43; 44) ")"
56 WHITESPACE@[44; 45) "\n"
55 BLOCK@[45; 48) 57 BLOCK@[45; 48)
56 L_CURLY@[45; 46) 58 L_CURLY@[45; 46) "{"
57 WHITESPACE@[46; 47) 59 WHITESPACE@[46; 47) " "
58 R_CURLY@[47; 48) 60 R_CURLY@[47; 48) "}"
59 WHITESPACE@[48; 49) 61 WHITESPACE@[48; 49) "\n"
diff --git a/crates/ra_syntax/tests/data/parser/inline/ok/0004_value_parameters_no_patterns.txt b/crates/ra_syntax/tests/data/parser/inline/ok/0004_value_parameters_no_patterns.txt
index 90284a2aa..8cfba8420 100644
--- a/crates/ra_syntax/tests/data/parser/inline/ok/0004_value_parameters_no_patterns.txt
+++ b/crates/ra_syntax/tests/data/parser/inline/ok/0004_value_parameters_no_patterns.txt
@@ -1,19 +1,19 @@
1SOURCE_FILE@[0; 54) 1SOURCE_FILE@[0; 54)
2 TYPE_ALIAS_DEF@[0; 53) 2 TYPE_ALIAS_DEF@[0; 53)
3 TYPE_KW@[0; 4) 3 TYPE_KW@[0; 4) "type"
4 WHITESPACE@[4; 5) 4 WHITESPACE@[4; 5) " "
5 NAME@[5; 6) 5 NAME@[5; 6)
6 IDENT@[5; 6) "F" 6 IDENT@[5; 6) "F"
7 WHITESPACE@[6; 7) 7 WHITESPACE@[6; 7) " "
8 EQ@[7; 8) 8 EQ@[7; 8) "="
9 WHITESPACE@[8; 9) 9 WHITESPACE@[8; 9) " "
10 PATH_TYPE@[9; 52) 10 PATH_TYPE@[9; 52)
11 PATH@[9; 52) 11 PATH@[9; 52)
12 PATH_SEGMENT@[9; 52) 12 PATH_SEGMENT@[9; 52)
13 NAME_REF@[9; 12) 13 NAME_REF@[9; 12)
14 IDENT@[9; 12) "Box" 14 IDENT@[9; 12) "Box"
15 TYPE_ARG_LIST@[12; 52) 15 TYPE_ARG_LIST@[12; 52)
16 L_ANGLE@[12; 13) 16 L_ANGLE@[12; 13) "<"
17 TYPE_ARG@[13; 51) 17 TYPE_ARG@[13; 51)
18 PATH_TYPE@[13; 51) 18 PATH_TYPE@[13; 51)
19 PATH@[13; 51) 19 PATH@[13; 51)
@@ -21,61 +21,61 @@ SOURCE_FILE@[0; 54)
21 NAME_REF@[13; 15) 21 NAME_REF@[13; 15)
22 IDENT@[13; 15) "Fn" 22 IDENT@[13; 15) "Fn"
23 PARAM_LIST@[15; 51) 23 PARAM_LIST@[15; 51)
24 L_PAREN@[15; 16) 24 L_PAREN@[15; 16) "("
25 PARAM@[16; 22) 25 PARAM@[16; 22)
26 BIND_PAT@[16; 17) 26 BIND_PAT@[16; 17)
27 NAME@[16; 17) 27 NAME@[16; 17)
28 IDENT@[16; 17) "a" 28 IDENT@[16; 17) "a"
29 COLON@[17; 18) 29 COLON@[17; 18) ":"
30 WHITESPACE@[18; 19) 30 WHITESPACE@[18; 19) " "
31 PATH_TYPE@[19; 22) 31 PATH_TYPE@[19; 22)
32 PATH@[19; 22) 32 PATH@[19; 22)
33 PATH_SEGMENT@[19; 22) 33 PATH_SEGMENT@[19; 22)
34 NAME_REF@[19; 22) 34 NAME_REF@[19; 22)
35 IDENT@[19; 22) "i32" 35 IDENT@[19; 22) "i32"
36 COMMA@[22; 23) 36 COMMA@[22; 23) ","
37 WHITESPACE@[23; 24) 37 WHITESPACE@[23; 24) " "
38 PARAM@[24; 32) 38 PARAM@[24; 32)
39 REF_PAT@[24; 26) 39 REF_PAT@[24; 26)
40 AMP@[24; 25) 40 AMP@[24; 25) "&"
41 BIND_PAT@[25; 26) 41 BIND_PAT@[25; 26)
42 NAME@[25; 26) 42 NAME@[25; 26)
43 IDENT@[25; 26) "b" 43 IDENT@[25; 26) "b"
44 COLON@[26; 27) 44 COLON@[26; 27) ":"
45 WHITESPACE@[27; 28) 45 WHITESPACE@[27; 28) " "
46 REFERENCE_TYPE@[28; 32) 46 REFERENCE_TYPE@[28; 32)
47 AMP@[28; 29) 47 AMP@[28; 29) "&"
48 PATH_TYPE@[29; 32) 48 PATH_TYPE@[29; 32)
49 PATH@[29; 32) 49 PATH@[29; 32)
50 PATH_SEGMENT@[29; 32) 50 PATH_SEGMENT@[29; 32)
51 NAME_REF@[29; 32) 51 NAME_REF@[29; 32)
52 IDENT@[29; 32) "i32" 52 IDENT@[29; 32) "i32"
53 COMMA@[32; 33) 53 COMMA@[32; 33) ","
54 WHITESPACE@[33; 34) 54 WHITESPACE@[33; 34) " "
55 PARAM@[34; 46) 55 PARAM@[34; 46)
56 REF_PAT@[34; 40) 56 REF_PAT@[34; 40)
57 AMP@[34; 35) 57 AMP@[34; 35) "&"
58 MUT_KW@[35; 38) 58 MUT_KW@[35; 38) "mut"
59 WHITESPACE@[38; 39) 59 WHITESPACE@[38; 39) " "
60 BIND_PAT@[39; 40) 60 BIND_PAT@[39; 40)
61 NAME@[39; 40) 61 NAME@[39; 40)
62 IDENT@[39; 40) "c" 62 IDENT@[39; 40) "c"
63 COLON@[40; 41) 63 COLON@[40; 41) ":"
64 WHITESPACE@[41; 42) 64 WHITESPACE@[41; 42) " "
65 REFERENCE_TYPE@[42; 46) 65 REFERENCE_TYPE@[42; 46)
66 AMP@[42; 43) 66 AMP@[42; 43) "&"
67 PATH_TYPE@[43; 46) 67 PATH_TYPE@[43; 46)
68 PATH@[43; 46) 68 PATH@[43; 46)
69 PATH_SEGMENT@[43; 46) 69 PATH_SEGMENT@[43; 46)
70 NAME_REF@[43; 46) 70 NAME_REF@[43; 46)
71 IDENT@[43; 46) "i32" 71 IDENT@[43; 46) "i32"
72 COMMA@[46; 47) 72 COMMA@[46; 47) ","
73 WHITESPACE@[47; 48) 73 WHITESPACE@[47; 48) " "
74 PARAM@[48; 50) 74 PARAM@[48; 50)
75 TUPLE_TYPE@[48; 50) 75 TUPLE_TYPE@[48; 50)
76 L_PAREN@[48; 49) 76 L_PAREN@[48; 49) "("
77 R_PAREN@[49; 50) 77 R_PAREN@[49; 50) ")"
78 R_PAREN@[50; 51) 78 R_PAREN@[50; 51) ")"
79 R_ANGLE@[51; 52) 79 R_ANGLE@[51; 52) ">"
80 SEMI@[52; 53) 80 SEMI@[52; 53) ";"
81 WHITESPACE@[53; 54) 81 WHITESPACE@[53; 54) "\n"
diff --git a/crates/ra_syntax/tests/data/parser/inline/ok/0005_function_type_params.txt b/crates/ra_syntax/tests/data/parser/inline/ok/0005_function_type_params.txt
index b20f13267..c1a70d566 100644
--- a/crates/ra_syntax/tests/data/parser/inline/ok/0005_function_type_params.txt
+++ b/crates/ra_syntax/tests/data/parser/inline/ok/0005_function_type_params.txt
@@ -1,34 +1,37 @@
1SOURCE_FILE@[0; 28) 1SOURCE_FILE@[0; 28)
2 FN_DEF@[0; 27) 2 FN_DEF@[0; 27)
3 FN_KW@[0; 2) 3 FN_KW@[0; 2) "fn"
4 WHITESPACE@[2; 3) 4 WHITESPACE@[2; 3) " "
5 NAME@[3; 6) 5 NAME@[3; 6)
6 IDENT@[3; 6) "foo" 6 IDENT@[3; 6) "foo"
7 TYPE_PARAM_LIST@[6; 23) 7 TYPE_PARAM_LIST@[6; 23)
8 L_ANGLE@[6; 7) 8 L_ANGLE@[6; 7) "<"
9 TYPE_PARAM@[7; 22) 9 TYPE_PARAM@[7; 22)
10 NAME@[7; 8) 10 NAME@[7; 8)
11 IDENT@[7; 8) "T" 11 IDENT@[7; 8) "T"
12 COLON@[8; 9) 12 COLON@[8; 9) ":"
13 WHITESPACE@[9; 10) 13 WHITESPACE@[9; 10) " "
14 PATH_TYPE@[10; 22) 14 TYPE_BOUND_LIST@[10; 22)
15 PATH@[10; 15) 15 TYPE_BOUND@[10; 15)
16 PATH_SEGMENT@[10; 15) 16 PATH_TYPE@[10; 15)
17 NAME_REF@[10; 15) 17 PATH@[10; 15)
18 IDENT@[10; 15) "Clone" 18 PATH_SEGMENT@[10; 15)
19 WHITESPACE@[15; 16) 19 NAME_REF@[10; 15)
20 PLUS@[16; 17) 20 IDENT@[10; 15) "Clone"
21 WHITESPACE@[17; 18) 21 WHITESPACE@[15; 16) " "
22 PATH_TYPE@[18; 22) 22 PLUS@[16; 17) "+"
23 PATH@[18; 22) 23 WHITESPACE@[17; 18) " "
24 PATH_SEGMENT@[18; 22) 24 TYPE_BOUND@[18; 22)
25 NAME_REF@[18; 22) 25 PATH_TYPE@[18; 22)
26 IDENT@[18; 22) "Copy" 26 PATH@[18; 22)
27 R_ANGLE@[22; 23) 27 PATH_SEGMENT@[18; 22)
28 NAME_REF@[18; 22)
29 IDENT@[18; 22) "Copy"
30 R_ANGLE@[22; 23) ">"
28 PARAM_LIST@[23; 25) 31 PARAM_LIST@[23; 25)
29 L_PAREN@[23; 24) 32 L_PAREN@[23; 24) "("
30 R_PAREN@[24; 25) 33 R_PAREN@[24; 25) ")"
31 BLOCK@[25; 27) 34 BLOCK@[25; 27)
32 L_CURLY@[25; 26) 35 L_CURLY@[25; 26) "{"
33 R_CURLY@[26; 27) 36 R_CURLY@[26; 27) "}"
34 WHITESPACE@[27; 28) 37 WHITESPACE@[27; 28) "\n"
diff --git a/crates/ra_syntax/tests/data/parser/inline/ok/0006_self_param.txt b/crates/ra_syntax/tests/data/parser/inline/ok/0006_self_param.txt
index 4df01c6e5..8e210a6ca 100644
--- a/crates/ra_syntax/tests/data/parser/inline/ok/0006_self_param.txt
+++ b/crates/ra_syntax/tests/data/parser/inline/ok/0006_self_param.txt
@@ -1,116 +1,116 @@
1SOURCE_FILE@[0; 128) 1SOURCE_FILE@[0; 128)
2 IMPL_BLOCK@[0; 127) 2 IMPL_BLOCK@[0; 127)
3 IMPL_KW@[0; 4) 3 IMPL_KW@[0; 4) "impl"
4 WHITESPACE@[4; 5) 4 WHITESPACE@[4; 5) " "
5 PATH_TYPE@[5; 6) 5 PATH_TYPE@[5; 6)
6 PATH@[5; 6) 6 PATH@[5; 6)
7 PATH_SEGMENT@[5; 6) 7 PATH_SEGMENT@[5; 6)
8 NAME_REF@[5; 6) 8 NAME_REF@[5; 6)
9 IDENT@[5; 6) "S" 9 IDENT@[5; 6) "S"
10 WHITESPACE@[6; 7) 10 WHITESPACE@[6; 7) " "
11 ITEM_LIST@[7; 127) 11 ITEM_LIST@[7; 127)
12 L_CURLY@[7; 8) 12 L_CURLY@[7; 8) "{"
13 WHITESPACE@[8; 13) 13 WHITESPACE@[8; 13) "\n "
14 FN_DEF@[13; 26) 14 FN_DEF@[13; 26)
15 FN_KW@[13; 15) 15 FN_KW@[13; 15) "fn"
16 WHITESPACE@[15; 16) 16 WHITESPACE@[15; 16) " "
17 NAME@[16; 17) 17 NAME@[16; 17)
18 IDENT@[16; 17) "a" 18 IDENT@[16; 17) "a"
19 PARAM_LIST@[17; 23) 19 PARAM_LIST@[17; 23)
20 L_PAREN@[17; 18) 20 L_PAREN@[17; 18) "("
21 SELF_PARAM@[18; 22) 21 SELF_PARAM@[18; 22)
22 SELF_KW@[18; 22) 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@[24; 26)
26 L_CURLY@[24; 25) 26 L_CURLY@[24; 25) "{"
27 R_CURLY@[25; 26) 27 R_CURLY@[25; 26) "}"
28 WHITESPACE@[26; 31) 28 WHITESPACE@[26; 31) "\n "
29 FN_DEF@[31; 46) 29 FN_DEF@[31; 46)
30 FN_KW@[31; 33) 30 FN_KW@[31; 33) "fn"
31 WHITESPACE@[33; 34) 31 WHITESPACE@[33; 34) " "
32 NAME@[34; 35) 32 NAME@[34; 35)
33 IDENT@[34; 35) "b" 33 IDENT@[34; 35) "b"
34 PARAM_LIST@[35; 43) 34 PARAM_LIST@[35; 43)
35 L_PAREN@[35; 36) 35 L_PAREN@[35; 36) "("
36 SELF_PARAM@[36; 41) 36 SELF_PARAM@[36; 41)
37 AMP@[36; 37) 37 AMP@[36; 37) "&"
38 SELF_KW@[37; 41) 38 SELF_KW@[37; 41) "self"
39 COMMA@[41; 42) 39 COMMA@[41; 42) ","
40 R_PAREN@[42; 43) 40 R_PAREN@[42; 43) ")"
41 WHITESPACE@[43; 44) 41 WHITESPACE@[43; 44) " "
42 BLOCK@[44; 46) 42 BLOCK@[44; 46)
43 L_CURLY@[44; 45) 43 L_CURLY@[44; 45) "{"
44 R_CURLY@[45; 46) 44 R_CURLY@[45; 46) "}"
45 WHITESPACE@[46; 51) 45 WHITESPACE@[46; 51) "\n "
46 FN_DEF@[51; 69) 46 FN_DEF@[51; 69)
47 FN_KW@[51; 53) 47 FN_KW@[51; 53) "fn"
48 WHITESPACE@[53; 54) 48 WHITESPACE@[53; 54) " "
49 NAME@[54; 55) 49 NAME@[54; 55)
50 IDENT@[54; 55) "c" 50 IDENT@[54; 55) "c"
51 PARAM_LIST@[55; 66) 51 PARAM_LIST@[55; 66)
52 L_PAREN@[55; 56) 52 L_PAREN@[55; 56) "("
53 SELF_PARAM@[56; 64) 53 SELF_PARAM@[56; 64)
54 AMP@[56; 57) 54 AMP@[56; 57) "&"
55 LIFETIME@[57; 59) "'a" 55 LIFETIME@[57; 59) "\'a"
56 WHITESPACE@[59; 60) 56 WHITESPACE@[59; 60) " "
57 SELF_KW@[60; 64) 57 SELF_KW@[60; 64) "self"
58 COMMA@[64; 65) 58 COMMA@[64; 65) ","
59 R_PAREN@[65; 66) 59 R_PAREN@[65; 66) ")"
60 WHITESPACE@[66; 67) 60 WHITESPACE@[66; 67) " "
61 BLOCK@[67; 69) 61 BLOCK@[67; 69)
62 L_CURLY@[67; 68) 62 L_CURLY@[67; 68) "{"
63 R_CURLY@[68; 69) 63 R_CURLY@[68; 69) "}"
64 WHITESPACE@[69; 74) 64 WHITESPACE@[69; 74) "\n "
65 FN_DEF@[74; 103) 65 FN_DEF@[74; 103)
66 FN_KW@[74; 76) 66 FN_KW@[74; 76) "fn"
67 WHITESPACE@[76; 77) 67 WHITESPACE@[76; 77) " "
68 NAME@[77; 78) 68 NAME@[77; 78)
69 IDENT@[77; 78) "d" 69 IDENT@[77; 78) "d"
70 PARAM_LIST@[78; 100) 70 PARAM_LIST@[78; 100)
71 L_PAREN@[78; 79) 71 L_PAREN@[78; 79) "("
72 SELF_PARAM@[79; 91) 72 SELF_PARAM@[79; 91)
73 AMP@[79; 80) 73 AMP@[79; 80) "&"
74 LIFETIME@[80; 82) "'a" 74 LIFETIME@[80; 82) "\'a"
75 WHITESPACE@[82; 83) 75 WHITESPACE@[82; 83) " "
76 MUT_KW@[83; 86) 76 MUT_KW@[83; 86) "mut"
77 WHITESPACE@[86; 87) 77 WHITESPACE@[86; 87) " "
78 SELF_KW@[87; 91) 78 SELF_KW@[87; 91) "self"
79 COMMA@[91; 92) 79 COMMA@[91; 92) ","
80 WHITESPACE@[92; 93) 80 WHITESPACE@[92; 93) " "
81 PARAM@[93; 99) 81 PARAM@[93; 99)
82 BIND_PAT@[93; 94) 82 BIND_PAT@[93; 94)
83 NAME@[93; 94) 83 NAME@[93; 94)
84 IDENT@[93; 94) "x" 84 IDENT@[93; 94) "x"
85 COLON@[94; 95) 85 COLON@[94; 95) ":"
86 WHITESPACE@[95; 96) 86 WHITESPACE@[95; 96) " "
87 PATH_TYPE@[96; 99) 87 PATH_TYPE@[96; 99)
88 PATH@[96; 99) 88 PATH@[96; 99)
89 PATH_SEGMENT@[96; 99) 89 PATH_SEGMENT@[96; 99)
90 NAME_REF@[96; 99) 90 NAME_REF@[96; 99)
91 IDENT@[96; 99) "i32" 91 IDENT@[96; 99) "i32"
92 R_PAREN@[99; 100) 92 R_PAREN@[99; 100) ")"
93 WHITESPACE@[100; 101) 93 WHITESPACE@[100; 101) " "
94 BLOCK@[101; 103) 94 BLOCK@[101; 103)
95 L_CURLY@[101; 102) 95 L_CURLY@[101; 102) "{"
96 R_CURLY@[102; 103) 96 R_CURLY@[102; 103) "}"
97 WHITESPACE@[103; 108) 97 WHITESPACE@[103; 108) "\n "
98 FN_DEF@[108; 125) 98 FN_DEF@[108; 125)
99 FN_KW@[108; 110) 99 FN_KW@[108; 110) "fn"
100 WHITESPACE@[110; 111) 100 WHITESPACE@[110; 111) " "
101 NAME@[111; 112) 101 NAME@[111; 112)
102 IDENT@[111; 112) "e" 102 IDENT@[111; 112) "e"
103 PARAM_LIST@[112; 122) 103 PARAM_LIST@[112; 122)
104 L_PAREN@[112; 113) 104 L_PAREN@[112; 113) "("
105 SELF_PARAM@[113; 121) 105 SELF_PARAM@[113; 121)
106 MUT_KW@[113; 116) 106 MUT_KW@[113; 116) "mut"
107 WHITESPACE@[116; 117) 107 WHITESPACE@[116; 117) " "
108 SELF_KW@[117; 121) 108 SELF_KW@[117; 121) "self"
109 R_PAREN@[121; 122) 109 R_PAREN@[121; 122) ")"
110 WHITESPACE@[122; 123) 110 WHITESPACE@[122; 123) " "
111 BLOCK@[123; 125) 111 BLOCK@[123; 125)
112 L_CURLY@[123; 124) 112 L_CURLY@[123; 124) "{"
113 R_CURLY@[124; 125) 113 R_CURLY@[124; 125) "}"
114 WHITESPACE@[125; 126) 114 WHITESPACE@[125; 126) "\n"
115 R_CURLY@[126; 127) 115 R_CURLY@[126; 127) "}"
116 WHITESPACE@[127; 128) 116 WHITESPACE@[127; 128) "\n"
diff --git a/crates/ra_syntax/tests/data/parser/inline/ok/0007_type_param_bounds.txt b/crates/ra_syntax/tests/data/parser/inline/ok/0007_type_param_bounds.txt
index 745cf8798..a7186c7a8 100644
--- a/crates/ra_syntax/tests/data/parser/inline/ok/0007_type_param_bounds.txt
+++ b/crates/ra_syntax/tests/data/parser/inline/ok/0007_type_param_bounds.txt
@@ -1,36 +1,40 @@
1SOURCE_FILE@[0; 35) 1SOURCE_FILE@[0; 35)
2 STRUCT_DEF@[0; 34) 2 STRUCT_DEF@[0; 34)
3 STRUCT_KW@[0; 6) 3 STRUCT_KW@[0; 6) "struct"
4 WHITESPACE@[6; 7) 4 WHITESPACE@[6; 7) " "
5 NAME@[7; 8) 5 NAME@[7; 8)
6 IDENT@[7; 8) "S" 6 IDENT@[7; 8) "S"
7 TYPE_PARAM_LIST@[8; 33) 7 TYPE_PARAM_LIST@[8; 33)
8 L_ANGLE@[8; 9) 8 L_ANGLE@[8; 9) "<"
9 TYPE_PARAM@[9; 32) 9 TYPE_PARAM@[9; 32)
10 NAME@[9; 10) 10 NAME@[9; 10)
11 IDENT@[9; 10) "T" 11 IDENT@[9; 10) "T"
12 COLON@[10; 11) 12 COLON@[10; 11) ":"
13 WHITESPACE@[11; 12) 13 WHITESPACE@[11; 12) " "
14 LIFETIME@[12; 14) "'a" 14 TYPE_BOUND_LIST@[12; 32)
15 WHITESPACE@[14; 15) 15 TYPE_BOUND@[12; 14)
16 PLUS@[15; 16) 16 LIFETIME@[12; 14) "\'a"
17 WHITESPACE@[16; 17) 17 WHITESPACE@[14; 15) " "
18 QUESTION@[17; 18) 18 PLUS@[15; 16) "+"
19 PATH_TYPE@[18; 32) 19 WHITESPACE@[16; 17) " "
20 PATH@[18; 23) 20 TYPE_BOUND@[17; 23)
21 PATH_SEGMENT@[18; 23) 21 QUESTION@[17; 18) "?"
22 NAME_REF@[18; 23) 22 PATH_TYPE@[18; 23)
23 IDENT@[18; 23) "Sized" 23 PATH@[18; 23)
24 WHITESPACE@[23; 24) 24 PATH_SEGMENT@[18; 23)
25 PLUS@[24; 25) 25 NAME_REF@[18; 23)
26 WHITESPACE@[25; 26) 26 IDENT@[18; 23) "Sized"
27 L_PAREN@[26; 27) 27 WHITESPACE@[23; 24) " "
28 PATH_TYPE@[27; 31) 28 PLUS@[24; 25) "+"
29 PATH@[27; 31) 29 WHITESPACE@[25; 26) " "
30 PATH_SEGMENT@[27; 31) 30 TYPE_BOUND@[26; 32)
31 NAME_REF@[27; 31) 31 L_PAREN@[26; 27) "("
32 IDENT@[27; 31) "Copy" 32 PATH_TYPE@[27; 31)
33 R_PAREN@[31; 32) 33 PATH@[27; 31)
34 R_ANGLE@[32; 33) 34 PATH_SEGMENT@[27; 31)
35 SEMI@[33; 34) 35 NAME_REF@[27; 31)
36 WHITESPACE@[34; 35) 36 IDENT@[27; 31) "Copy"
37 R_PAREN@[31; 32) ")"
38 R_ANGLE@[32; 33) ">"
39 SEMI@[33; 34) ";"
40 WHITESPACE@[34; 35) "\n"
diff --git a/crates/ra_syntax/tests/data/parser/inline/ok/0008_path_part.txt b/crates/ra_syntax/tests/data/parser/inline/ok/0008_path_part.txt
index 0020cfb4d..0c6be485e 100644
--- a/crates/ra_syntax/tests/data/parser/inline/ok/0008_path_part.txt
+++ b/crates/ra_syntax/tests/data/parser/inline/ok/0008_path_part.txt
@@ -1,95 +1,95 @@
1SOURCE_FILE@[0; 103) 1SOURCE_FILE@[0; 103)
2 FN_DEF@[0; 102) 2 FN_DEF@[0; 102)
3 FN_KW@[0; 2) 3 FN_KW@[0; 2) "fn"
4 WHITESPACE@[2; 3) 4 WHITESPACE@[2; 3) " "
5 NAME@[3; 6) 5 NAME@[3; 6)
6 IDENT@[3; 6) "foo" 6 IDENT@[3; 6) "foo"
7 PARAM_LIST@[6; 8) 7 PARAM_LIST@[6; 8)
8 L_PAREN@[6; 7) 8 L_PAREN@[6; 7) "("
9 R_PAREN@[7; 8) 9 R_PAREN@[7; 8) ")"
10 WHITESPACE@[8; 9) 10 WHITESPACE@[8; 9) " "
11 BLOCK@[9; 102) 11 BLOCK@[9; 102)
12 L_CURLY@[9; 10) 12 L_CURLY@[9; 10) "{"
13 WHITESPACE@[10; 15) 13 WHITESPACE@[10; 15) "\n "
14 LET_STMT@[15; 33) 14 LET_STMT@[15; 33)
15 LET_KW@[15; 18) 15 LET_KW@[15; 18) "let"
16 WHITESPACE@[18; 19) 16 WHITESPACE@[18; 19) " "
17 PATH_PAT@[19; 27) 17 PATH_PAT@[19; 27)
18 PATH@[19; 27) 18 PATH@[19; 27)
19 PATH@[19; 22) 19 PATH@[19; 22)
20 PATH_SEGMENT@[19; 22) 20 PATH_SEGMENT@[19; 22)
21 NAME_REF@[19; 22) 21 NAME_REF@[19; 22)
22 IDENT@[19; 22) "foo" 22 IDENT@[19; 22) "foo"
23 COLONCOLON@[22; 24) 23 COLONCOLON@[22; 24) "::"
24 PATH_SEGMENT@[24; 27) 24 PATH_SEGMENT@[24; 27)
25 NAME_REF@[24; 27) 25 NAME_REF@[24; 27)
26 IDENT@[24; 27) "Bar" 26 IDENT@[24; 27) "Bar"
27 WHITESPACE@[27; 28) 27 WHITESPACE@[27; 28) " "
28 EQ@[28; 29) 28 EQ@[28; 29) "="
29 WHITESPACE@[29; 30) 29 WHITESPACE@[29; 30) " "
30 TUPLE_EXPR@[30; 32) 30 TUPLE_EXPR@[30; 32)
31 L_PAREN@[30; 31) 31 L_PAREN@[30; 31) "("
32 R_PAREN@[31; 32) 32 R_PAREN@[31; 32) ")"
33 SEMI@[32; 33) 33 SEMI@[32; 33) ";"
34 WHITESPACE@[33; 38) 34 WHITESPACE@[33; 38) "\n "
35 LET_STMT@[38; 53) 35 LET_STMT@[38; 53)
36 LET_KW@[38; 41) 36 LET_KW@[38; 41) "let"
37 WHITESPACE@[41; 42) 37 WHITESPACE@[41; 42) " "
38 PATH_PAT@[42; 47) 38 PATH_PAT@[42; 47)
39 PATH@[42; 47) 39 PATH@[42; 47)
40 PATH_SEGMENT@[42; 47) 40 PATH_SEGMENT@[42; 47)
41 COLONCOLON@[42; 44) 41 COLONCOLON@[42; 44) "::"
42 NAME_REF@[44; 47) 42 NAME_REF@[44; 47)
43 IDENT@[44; 47) "Bar" 43 IDENT@[44; 47) "Bar"
44 WHITESPACE@[47; 48) 44 WHITESPACE@[47; 48) " "
45 EQ@[48; 49) 45 EQ@[48; 49) "="
46 WHITESPACE@[49; 50) 46 WHITESPACE@[49; 50) " "
47 TUPLE_EXPR@[50; 52) 47 TUPLE_EXPR@[50; 52)
48 L_PAREN@[50; 51) 48 L_PAREN@[50; 51) "("
49 R_PAREN@[51; 52) 49 R_PAREN@[51; 52) ")"
50 SEMI@[52; 53) 50 SEMI@[52; 53) ";"
51 WHITESPACE@[53; 58) 51 WHITESPACE@[53; 58) "\n "
52 LET_STMT@[58; 78) 52 LET_STMT@[58; 78)
53 LET_KW@[58; 61) 53 LET_KW@[58; 61) "let"
54 WHITESPACE@[61; 62) 54 WHITESPACE@[61; 62) " "
55 STRUCT_PAT@[62; 72) 55 STRUCT_PAT@[62; 72)
56 PATH@[62; 65) 56 PATH@[62; 65)
57 PATH_SEGMENT@[62; 65) 57 PATH_SEGMENT@[62; 65)
58 NAME_REF@[62; 65) 58 NAME_REF@[62; 65)
59 IDENT@[62; 65) "Bar" 59 IDENT@[62; 65) "Bar"
60 WHITESPACE@[65; 66) 60 WHITESPACE@[65; 66) " "
61 FIELD_PAT_LIST@[66; 72) 61 FIELD_PAT_LIST@[66; 72)
62 L_CURLY@[66; 67) 62 L_CURLY@[66; 67) "{"
63 WHITESPACE@[67; 68) 63 WHITESPACE@[67; 68) " "
64 DOTDOT@[68; 70) 64 DOTDOT@[68; 70) ".."
65 WHITESPACE@[70; 71) 65 WHITESPACE@[70; 71) " "
66 R_CURLY@[71; 72) 66 R_CURLY@[71; 72) "}"
67 WHITESPACE@[72; 73) 67 WHITESPACE@[72; 73) " "
68 EQ@[73; 74) 68 EQ@[73; 74) "="
69 WHITESPACE@[74; 75) 69 WHITESPACE@[74; 75) " "
70 TUPLE_EXPR@[75; 77) 70 TUPLE_EXPR@[75; 77)
71 L_PAREN@[75; 76) 71 L_PAREN@[75; 76) "("
72 R_PAREN@[76; 77) 72 R_PAREN@[76; 77) ")"
73 SEMI@[77; 78) 73 SEMI@[77; 78) ";"
74 WHITESPACE@[78; 83) 74 WHITESPACE@[78; 83) "\n "
75 LET_STMT@[83; 100) 75 LET_STMT@[83; 100)
76 LET_KW@[83; 86) 76 LET_KW@[83; 86) "let"
77 WHITESPACE@[86; 87) 77 WHITESPACE@[86; 87) " "
78 TUPLE_STRUCT_PAT@[87; 94) 78 TUPLE_STRUCT_PAT@[87; 94)
79 PATH@[87; 90) 79 PATH@[87; 90)
80 PATH_SEGMENT@[87; 90) 80 PATH_SEGMENT@[87; 90)
81 NAME_REF@[87; 90) 81 NAME_REF@[87; 90)
82 IDENT@[87; 90) "Bar" 82 IDENT@[87; 90) "Bar"
83 L_PAREN@[90; 91) 83 L_PAREN@[90; 91) "("
84 DOTDOT@[91; 93) 84 DOTDOT@[91; 93) ".."
85 R_PAREN@[93; 94) 85 R_PAREN@[93; 94) ")"
86 WHITESPACE@[94; 95) 86 WHITESPACE@[94; 95) " "
87 EQ@[95; 96) 87 EQ@[95; 96) "="
88 WHITESPACE@[96; 97) 88 WHITESPACE@[96; 97) " "
89 TUPLE_EXPR@[97; 99) 89 TUPLE_EXPR@[97; 99)
90 L_PAREN@[97; 98) 90 L_PAREN@[97; 98) "("
91 R_PAREN@[98; 99) 91 R_PAREN@[98; 99) ")"
92 SEMI@[99; 100) 92 SEMI@[99; 100) ";"
93 WHITESPACE@[100; 101) 93 WHITESPACE@[100; 101) "\n"
94 R_CURLY@[101; 102) 94 R_CURLY@[101; 102) "}"
95 WHITESPACE@[102; 103) 95 WHITESPACE@[102; 103) "\n"
diff --git a/crates/ra_syntax/tests/data/parser/inline/ok/0009_loop_expr.txt b/crates/ra_syntax/tests/data/parser/inline/ok/0009_loop_expr.txt
index c3c64c322..8240aba15 100644
--- a/crates/ra_syntax/tests/data/parser/inline/ok/0009_loop_expr.txt
+++ b/crates/ra_syntax/tests/data/parser/inline/ok/0009_loop_expr.txt
@@ -1,24 +1,24 @@
1SOURCE_FILE@[0; 26) 1SOURCE_FILE@[0; 26)
2 FN_DEF@[0; 25) 2 FN_DEF@[0; 25)
3 FN_KW@[0; 2) 3 FN_KW@[0; 2) "fn"
4 WHITESPACE@[2; 3) 4 WHITESPACE@[2; 3) " "
5 NAME@[3; 6) 5 NAME@[3; 6)
6 IDENT@[3; 6) "foo" 6 IDENT@[3; 6) "foo"
7 PARAM_LIST@[6; 8) 7 PARAM_LIST@[6; 8)
8 L_PAREN@[6; 7) 8 L_PAREN@[6; 7) "("
9 R_PAREN@[7; 8) 9 R_PAREN@[7; 8) ")"
10 WHITESPACE@[8; 9) 10 WHITESPACE@[8; 9) " "
11 BLOCK@[9; 25) 11 BLOCK@[9; 25)
12 L_CURLY@[9; 10) 12 L_CURLY@[9; 10) "{"
13 WHITESPACE@[10; 15) 13 WHITESPACE@[10; 15) "\n "
14 EXPR_STMT@[15; 23) 14 EXPR_STMT@[15; 23)
15 LOOP_EXPR@[15; 22) 15 LOOP_EXPR@[15; 22)
16 LOOP_KW@[15; 19) 16 LOOP_KW@[15; 19) "loop"
17 WHITESPACE@[19; 20) 17 WHITESPACE@[19; 20) " "
18 BLOCK@[20; 22) 18 BLOCK@[20; 22)
19 L_CURLY@[20; 21) 19 L_CURLY@[20; 21) "{"
20 R_CURLY@[21; 22) 20 R_CURLY@[21; 22) "}"
21 SEMI@[22; 23) 21 SEMI@[22; 23) ";"
22 WHITESPACE@[23; 24) 22 WHITESPACE@[23; 24) "\n"
23 R_CURLY@[24; 25) 23 R_CURLY@[24; 25) "}"
24 WHITESPACE@[25; 26) 24 WHITESPACE@[25; 26) "\n"
diff --git a/crates/ra_syntax/tests/data/parser/inline/ok/0010_extern_block.txt b/crates/ra_syntax/tests/data/parser/inline/ok/0010_extern_block.txt
index 7e79c2280..506f56fff 100644
--- a/crates/ra_syntax/tests/data/parser/inline/ok/0010_extern_block.txt
+++ b/crates/ra_syntax/tests/data/parser/inline/ok/0010_extern_block.txt
@@ -1,9 +1,9 @@
1SOURCE_FILE@[0; 10) 1SOURCE_FILE@[0; 10)
2 EXTERN_BLOCK@[0; 9) 2 EXTERN_BLOCK@[0; 9)
3 ABI@[0; 6) 3 ABI@[0; 6)
4 EXTERN_KW@[0; 6) 4 EXTERN_KW@[0; 6) "extern"
5 WHITESPACE@[6; 7) 5 WHITESPACE@[6; 7) " "
6 EXTERN_ITEM_LIST@[7; 9) 6 EXTERN_ITEM_LIST@[7; 9)
7 L_CURLY@[7; 8) 7 L_CURLY@[7; 8) "{"
8 R_CURLY@[8; 9) 8 R_CURLY@[8; 9) "}"
9 WHITESPACE@[9; 10) 9 WHITESPACE@[9; 10) "\n"
diff --git a/crates/ra_syntax/tests/data/parser/inline/ok/0011_field_expr.txt b/crates/ra_syntax/tests/data/parser/inline/ok/0011_field_expr.txt
index 03fbf092b..a86702843 100644
--- a/crates/ra_syntax/tests/data/parser/inline/ok/0011_field_expr.txt
+++ b/crates/ra_syntax/tests/data/parser/inline/ok/0011_field_expr.txt
@@ -1,16 +1,16 @@
1SOURCE_FILE@[0; 37) 1SOURCE_FILE@[0; 37)
2 FN_DEF@[0; 36) 2 FN_DEF@[0; 36)
3 FN_KW@[0; 2) 3 FN_KW@[0; 2) "fn"
4 WHITESPACE@[2; 3) 4 WHITESPACE@[2; 3) " "
5 NAME@[3; 6) 5 NAME@[3; 6)
6 IDENT@[3; 6) "foo" 6 IDENT@[3; 6) "foo"
7 PARAM_LIST@[6; 8) 7 PARAM_LIST@[6; 8)
8 L_PAREN@[6; 7) 8 L_PAREN@[6; 7) "("
9 R_PAREN@[7; 8) 9 R_PAREN@[7; 8) ")"
10 WHITESPACE@[8; 9) 10 WHITESPACE@[8; 9) " "
11 BLOCK@[9; 36) 11 BLOCK@[9; 36)
12 L_CURLY@[9; 10) 12 L_CURLY@[9; 10) "{"
13 WHITESPACE@[10; 15) 13 WHITESPACE@[10; 15) "\n "
14 EXPR_STMT@[15; 21) 14 EXPR_STMT@[15; 21)
15 FIELD_EXPR@[15; 20) 15 FIELD_EXPR@[15; 20)
16 PATH_EXPR@[15; 16) 16 PATH_EXPR@[15; 16)
@@ -18,11 +18,11 @@ SOURCE_FILE@[0; 37)
18 PATH_SEGMENT@[15; 16) 18 PATH_SEGMENT@[15; 16)
19 NAME_REF@[15; 16) 19 NAME_REF@[15; 16)
20 IDENT@[15; 16) "x" 20 IDENT@[15; 16) "x"
21 DOT@[16; 17) 21 DOT@[16; 17) "."
22 NAME_REF@[17; 20) 22 NAME_REF@[17; 20)
23 IDENT@[17; 20) "foo" 23 IDENT@[17; 20) "foo"
24 SEMI@[20; 21) 24 SEMI@[20; 21) ";"
25 WHITESPACE@[21; 26) 25 WHITESPACE@[21; 26) "\n "
26 EXPR_STMT@[26; 34) 26 EXPR_STMT@[26; 34)
27 FIELD_EXPR@[26; 33) 27 FIELD_EXPR@[26; 33)
28 FIELD_EXPR@[26; 29) 28 FIELD_EXPR@[26; 29)
@@ -31,12 +31,12 @@ SOURCE_FILE@[0; 37)
31 PATH_SEGMENT@[26; 27) 31 PATH_SEGMENT@[26; 27)
32 NAME_REF@[26; 27) 32 NAME_REF@[26; 27)
33 IDENT@[26; 27) "x" 33 IDENT@[26; 27) "x"
34 DOT@[27; 28) 34 DOT@[27; 28) "."
35 INT_NUMBER@[28; 29) "0" 35 INT_NUMBER@[28; 29) "0"
36 DOT@[29; 30) 36 DOT@[29; 30) "."
37 NAME_REF@[30; 33) 37 NAME_REF@[30; 33)
38 IDENT@[30; 33) "bar" 38 IDENT@[30; 33) "bar"
39 SEMI@[33; 34) 39 SEMI@[33; 34) ";"
40 WHITESPACE@[34; 35) 40 WHITESPACE@[34; 35) "\n"
41 R_CURLY@[35; 36) 41 R_CURLY@[35; 36) "}"
42 WHITESPACE@[36; 37) 42 WHITESPACE@[36; 37) "\n"
diff --git a/crates/ra_syntax/tests/data/parser/inline/ok/0012_type_item_where_clause.txt b/crates/ra_syntax/tests/data/parser/inline/ok/0012_type_item_where_clause.txt
index 9a5f46bab..da04dac5c 100644
--- a/crates/ra_syntax/tests/data/parser/inline/ok/0012_type_item_where_clause.txt
+++ b/crates/ra_syntax/tests/data/parser/inline/ok/0012_type_item_where_clause.txt
@@ -1,31 +1,33 @@
1SOURCE_FILE@[0; 31) 1SOURCE_FILE@[0; 31)
2 TYPE_ALIAS_DEF@[0; 30) 2 TYPE_ALIAS_DEF@[0; 30)
3 TYPE_KW@[0; 4) 3 TYPE_KW@[0; 4) "type"
4 WHITESPACE@[4; 5) 4 WHITESPACE@[4; 5) " "
5 NAME@[5; 8) 5 NAME@[5; 8)
6 IDENT@[5; 8) "Foo" 6 IDENT@[5; 8) "Foo"
7 WHITESPACE@[8; 9) 7 WHITESPACE@[8; 9) " "
8 WHERE_CLAUSE@[9; 24) 8 WHERE_CLAUSE@[9; 24)
9 WHERE_KW@[9; 14) 9 WHERE_KW@[9; 14) "where"
10 WHITESPACE@[14; 15) 10 WHITESPACE@[14; 15) " "
11 WHERE_PRED@[15; 24) 11 WHERE_PRED@[15; 24)
12 PATH_TYPE@[15; 18) 12 PATH_TYPE@[15; 18)
13 PATH@[15; 18) 13 PATH@[15; 18)
14 PATH_SEGMENT@[15; 18) 14 PATH_SEGMENT@[15; 18)
15 NAME_REF@[15; 18) 15 NAME_REF@[15; 18)
16 IDENT@[15; 18) "Foo" 16 IDENT@[15; 18) "Foo"
17 COLON@[18; 19) 17 COLON@[18; 19) ":"
18 WHITESPACE@[19; 20) 18 WHITESPACE@[19; 20) " "
19 PATH_TYPE@[20; 24) 19 TYPE_BOUND_LIST@[20; 24)
20 PATH@[20; 24) 20 TYPE_BOUND@[20; 24)
21 PATH_SEGMENT@[20; 24) 21 PATH_TYPE@[20; 24)
22 NAME_REF@[20; 24) 22 PATH@[20; 24)
23 IDENT@[20; 24) "Copy" 23 PATH_SEGMENT@[20; 24)
24 WHITESPACE@[24; 25) 24 NAME_REF@[20; 24)
25 EQ@[25; 26) 25 IDENT@[20; 24) "Copy"
26 WHITESPACE@[26; 27) 26 WHITESPACE@[24; 25) " "
27 EQ@[25; 26) "="
28 WHITESPACE@[26; 27) " "
27 TUPLE_TYPE@[27; 29) 29 TUPLE_TYPE@[27; 29)
28 L_PAREN@[27; 28) 30 L_PAREN@[27; 28) "("
29 R_PAREN@[28; 29) 31 R_PAREN@[28; 29) ")"
30 SEMI@[29; 30) 32 SEMI@[29; 30) ";"
31 WHITESPACE@[30; 31) 33 WHITESPACE@[30; 31) "\n"
diff --git a/crates/ra_syntax/tests/data/parser/inline/ok/0013_pointer_type_mut.txt b/crates/ra_syntax/tests/data/parser/inline/ok/0013_pointer_type_mut.txt
index 8f1d9ca98..c05f873d6 100644
--- a/crates/ra_syntax/tests/data/parser/inline/ok/0013_pointer_type_mut.txt
+++ b/crates/ra_syntax/tests/data/parser/inline/ok/0013_pointer_type_mut.txt
@@ -1,35 +1,35 @@
1SOURCE_FILE@[0; 36) 1SOURCE_FILE@[0; 36)
2 TYPE_ALIAS_DEF@[0; 17) 2 TYPE_ALIAS_DEF@[0; 17)
3 TYPE_KW@[0; 4) 3 TYPE_KW@[0; 4) "type"
4 WHITESPACE@[4; 5) 4 WHITESPACE@[4; 5) " "
5 NAME@[5; 6) 5 NAME@[5; 6)
6 IDENT@[5; 6) "M" 6 IDENT@[5; 6) "M"
7 WHITESPACE@[6; 7) 7 WHITESPACE@[6; 7) " "
8 EQ@[7; 8) 8 EQ@[7; 8) "="
9 WHITESPACE@[8; 9) 9 WHITESPACE@[8; 9) " "
10 POINTER_TYPE@[9; 16) 10 POINTER_TYPE@[9; 16)
11 STAR@[9; 10) 11 STAR@[9; 10) "*"
12 MUT_KW@[10; 13) 12 MUT_KW@[10; 13) "mut"
13 WHITESPACE@[13; 14) 13 WHITESPACE@[13; 14) " "
14 TUPLE_TYPE@[14; 16) 14 TUPLE_TYPE@[14; 16)
15 L_PAREN@[14; 15) 15 L_PAREN@[14; 15) "("
16 R_PAREN@[15; 16) 16 R_PAREN@[15; 16) ")"
17 SEMI@[16; 17) 17 SEMI@[16; 17) ";"
18 WHITESPACE@[17; 18) 18 WHITESPACE@[17; 18) "\n"
19 TYPE_ALIAS_DEF@[18; 35) 19 TYPE_ALIAS_DEF@[18; 35)
20 TYPE_KW@[18; 22) 20 TYPE_KW@[18; 22) "type"
21 WHITESPACE@[22; 23) 21 WHITESPACE@[22; 23) " "
22 NAME@[23; 24) 22 NAME@[23; 24)
23 IDENT@[23; 24) "C" 23 IDENT@[23; 24) "C"
24 WHITESPACE@[24; 25) 24 WHITESPACE@[24; 25) " "
25 EQ@[25; 26) 25 EQ@[25; 26) "="
26 WHITESPACE@[26; 27) 26 WHITESPACE@[26; 27) " "
27 POINTER_TYPE@[27; 34) 27 POINTER_TYPE@[27; 34)
28 STAR@[27; 28) 28 STAR@[27; 28) "*"
29 MUT_KW@[28; 31) 29 MUT_KW@[28; 31) "mut"
30 WHITESPACE@[31; 32) 30 WHITESPACE@[31; 32) " "
31 TUPLE_TYPE@[32; 34) 31 TUPLE_TYPE@[32; 34)
32 L_PAREN@[32; 33) 32 L_PAREN@[32; 33) "("
33 R_PAREN@[33; 34) 33 R_PAREN@[33; 34) ")"
34 SEMI@[34; 35) 34 SEMI@[34; 35) ";"
35 WHITESPACE@[35; 36) 35 WHITESPACE@[35; 36) "\n"
diff --git a/crates/ra_syntax/tests/data/parser/inline/ok/0014_never_type.txt b/crates/ra_syntax/tests/data/parser/inline/ok/0014_never_type.txt
index eaa6eb1c0..ac53e4fd3 100644
--- a/crates/ra_syntax/tests/data/parser/inline/ok/0014_never_type.txt
+++ b/crates/ra_syntax/tests/data/parser/inline/ok/0014_never_type.txt
@@ -1,13 +1,13 @@
1SOURCE_FILE@[0; 16) 1SOURCE_FILE@[0; 16)
2 TYPE_ALIAS_DEF@[0; 15) 2 TYPE_ALIAS_DEF@[0; 15)
3 TYPE_KW@[0; 4) 3 TYPE_KW@[0; 4) "type"
4 WHITESPACE@[4; 5) 4 WHITESPACE@[4; 5) " "
5 NAME@[5; 10) 5 NAME@[5; 10)
6 IDENT@[5; 10) "Never" 6 IDENT@[5; 10) "Never"
7 WHITESPACE@[10; 11) 7 WHITESPACE@[10; 11) " "
8 EQ@[11; 12) 8 EQ@[11; 12) "="
9 WHITESPACE@[12; 13) 9 WHITESPACE@[12; 13) " "
10 NEVER_TYPE@[13; 14) 10 NEVER_TYPE@[13; 14)
11 EXCL@[13; 14) 11 EXCL@[13; 14) "!"
12 SEMI@[14; 15) 12 SEMI@[14; 15) ";"
13 WHITESPACE@[15; 16) 13 WHITESPACE@[15; 16) "\n"
diff --git a/crates/ra_syntax/tests/data/parser/inline/ok/0015_continue_expr.txt b/crates/ra_syntax/tests/data/parser/inline/ok/0015_continue_expr.txt
index 39be5b2c8..e8cc32f2c 100644
--- a/crates/ra_syntax/tests/data/parser/inline/ok/0015_continue_expr.txt
+++ b/crates/ra_syntax/tests/data/parser/inline/ok/0015_continue_expr.txt
@@ -1,35 +1,35 @@
1SOURCE_FILE@[0; 69) 1SOURCE_FILE@[0; 69)
2 FN_DEF@[0; 68) 2 FN_DEF@[0; 68)
3 FN_KW@[0; 2) 3 FN_KW@[0; 2) "fn"
4 WHITESPACE@[2; 3) 4 WHITESPACE@[2; 3) " "
5 NAME@[3; 6) 5 NAME@[3; 6)
6 IDENT@[3; 6) "foo" 6 IDENT@[3; 6) "foo"
7 PARAM_LIST@[6; 8) 7 PARAM_LIST@[6; 8)
8 L_PAREN@[6; 7) 8 L_PAREN@[6; 7) "("
9 R_PAREN@[7; 8) 9 R_PAREN@[7; 8) ")"
10 WHITESPACE@[8; 9) 10 WHITESPACE@[8; 9) " "
11 BLOCK@[9; 68) 11 BLOCK@[9; 68)
12 L_CURLY@[9; 10) 12 L_CURLY@[9; 10) "{"
13 WHITESPACE@[10; 15) 13 WHITESPACE@[10; 15) "\n "
14 LOOP_EXPR@[15; 66) 14 LOOP_EXPR@[15; 66)
15 LOOP_KW@[15; 19) 15 LOOP_KW@[15; 19) "loop"
16 WHITESPACE@[19; 20) 16 WHITESPACE@[19; 20) " "
17 BLOCK@[20; 66) 17 BLOCK@[20; 66)
18 L_CURLY@[20; 21) 18 L_CURLY@[20; 21) "{"
19 WHITESPACE@[21; 30) 19 WHITESPACE@[21; 30) "\n "
20 EXPR_STMT@[30; 39) 20 EXPR_STMT@[30; 39)
21 CONTINUE_EXPR@[30; 38) 21 CONTINUE_EXPR@[30; 38)
22 CONTINUE_KW@[30; 38) 22 CONTINUE_KW@[30; 38) "continue"
23 SEMI@[38; 39) 23 SEMI@[38; 39) ";"
24 WHITESPACE@[39; 48) 24 WHITESPACE@[39; 48) "\n "
25 EXPR_STMT@[48; 60) 25 EXPR_STMT@[48; 60)
26 CONTINUE_EXPR@[48; 59) 26 CONTINUE_EXPR@[48; 59)
27 CONTINUE_KW@[48; 56) 27 CONTINUE_KW@[48; 56) "continue"
28 WHITESPACE@[56; 57) 28 WHITESPACE@[56; 57) " "
29 LIFETIME@[57; 59) "'l" 29 LIFETIME@[57; 59) "\'l"
30 SEMI@[59; 60) 30 SEMI@[59; 60) ";"
31 WHITESPACE@[60; 65) 31 WHITESPACE@[60; 65) "\n "
32 R_CURLY@[65; 66) 32 R_CURLY@[65; 66) "}"
33 WHITESPACE@[66; 67) 33 WHITESPACE@[66; 67) "\n"
34 R_CURLY@[67; 68) 34 R_CURLY@[67; 68) "}"
35 WHITESPACE@[68; 69) 35 WHITESPACE@[68; 69) "\n"
diff --git a/crates/ra_syntax/tests/data/parser/inline/ok/0016_unsafe_trait.txt b/crates/ra_syntax/tests/data/parser/inline/ok/0016_unsafe_trait.txt
index 3669c93a8..7b43f1294 100644
--- a/crates/ra_syntax/tests/data/parser/inline/ok/0016_unsafe_trait.txt
+++ b/crates/ra_syntax/tests/data/parser/inline/ok/0016_unsafe_trait.txt
@@ -1,13 +1,13 @@
1SOURCE_FILE@[0; 18) 1SOURCE_FILE@[0; 18)
2 TRAIT_DEF@[0; 17) 2 TRAIT_DEF@[0; 17)
3 UNSAFE_KW@[0; 6) 3 UNSAFE_KW@[0; 6) "unsafe"
4 WHITESPACE@[6; 7) 4 WHITESPACE@[6; 7) " "
5 TRAIT_KW@[7; 12) 5 TRAIT_KW@[7; 12) "trait"
6 WHITESPACE@[12; 13) 6 WHITESPACE@[12; 13) " "
7 NAME@[13; 14) 7 NAME@[13; 14)
8 IDENT@[13; 14) "T" 8 IDENT@[13; 14) "T"
9 WHITESPACE@[14; 15) 9 WHITESPACE@[14; 15) " "
10 ITEM_LIST@[15; 17) 10 ITEM_LIST@[15; 17)
11 L_CURLY@[15; 16) 11 L_CURLY@[15; 16) "{"
12 R_CURLY@[16; 17) 12 R_CURLY@[16; 17) "}"
13 WHITESPACE@[17; 18) 13 WHITESPACE@[17; 18) "\n"
diff --git a/crates/ra_syntax/tests/data/parser/inline/ok/0017_array_type.txt b/crates/ra_syntax/tests/data/parser/inline/ok/0017_array_type.txt
index de09902bb..b4055c9f0 100644
--- a/crates/ra_syntax/tests/data/parser/inline/ok/0017_array_type.txt
+++ b/crates/ra_syntax/tests/data/parser/inline/ok/0017_array_type.txt
@@ -1,21 +1,21 @@
1SOURCE_FILE@[0; 19) 1SOURCE_FILE@[0; 19)
2 TYPE_ALIAS_DEF@[0; 18) 2 TYPE_ALIAS_DEF@[0; 18)
3 TYPE_KW@[0; 4) 3 TYPE_KW@[0; 4) "type"
4 WHITESPACE@[4; 5) 4 WHITESPACE@[4; 5) " "
5 NAME@[5; 6) 5 NAME@[5; 6)
6 IDENT@[5; 6) "T" 6 IDENT@[5; 6) "T"
7 WHITESPACE@[6; 7) 7 WHITESPACE@[6; 7) " "
8 EQ@[7; 8) 8 EQ@[7; 8) "="
9 WHITESPACE@[8; 9) 9 WHITESPACE@[8; 9) " "
10 ARRAY_TYPE@[9; 17) 10 ARRAY_TYPE@[9; 17)
11 L_BRACK@[9; 10) 11 L_BRACK@[9; 10) "["
12 TUPLE_TYPE@[10; 12) 12 TUPLE_TYPE@[10; 12)
13 L_PAREN@[10; 11) 13 L_PAREN@[10; 11) "("
14 R_PAREN@[11; 12) 14 R_PAREN@[11; 12) ")"
15 SEMI@[12; 13) 15 SEMI@[12; 13) ";"
16 WHITESPACE@[13; 14) 16 WHITESPACE@[13; 14) " "
17 LITERAL@[14; 16) 17 LITERAL@[14; 16)
18 INT_NUMBER@[14; 16) "92" 18 INT_NUMBER@[14; 16) "92"
19 R_BRACK@[16; 17) 19 R_BRACK@[16; 17) "]"
20 SEMI@[17; 18) 20 SEMI@[17; 18) ";"
21 WHITESPACE@[18; 19) 21 WHITESPACE@[18; 19) "\n"
diff --git a/crates/ra_syntax/tests/data/parser/inline/ok/0018_arb_self_types.txt b/crates/ra_syntax/tests/data/parser/inline/ok/0018_arb_self_types.txt
index 03139f7a4..67d0de0f0 100644
--- a/crates/ra_syntax/tests/data/parser/inline/ok/0018_arb_self_types.txt
+++ b/crates/ra_syntax/tests/data/parser/inline/ok/0018_arb_self_types.txt
@@ -1,72 +1,72 @@
1SOURCE_FILE@[0; 69) 1SOURCE_FILE@[0; 69)
2 IMPL_BLOCK@[0; 68) 2 IMPL_BLOCK@[0; 68)
3 IMPL_KW@[0; 4) 3 IMPL_KW@[0; 4) "impl"
4 WHITESPACE@[4; 5) 4 WHITESPACE@[4; 5) " "
5 PATH_TYPE@[5; 6) 5 PATH_TYPE@[5; 6)
6 PATH@[5; 6) 6 PATH@[5; 6)
7 PATH_SEGMENT@[5; 6) 7 PATH_SEGMENT@[5; 6)
8 NAME_REF@[5; 6) 8 NAME_REF@[5; 6)
9 IDENT@[5; 6) "S" 9 IDENT@[5; 6) "S"
10 WHITESPACE@[6; 7) 10 WHITESPACE@[6; 7) " "
11 ITEM_LIST@[7; 68) 11 ITEM_LIST@[7; 68)
12 L_CURLY@[7; 8) 12 L_CURLY@[7; 8) "{"
13 WHITESPACE@[8; 13) 13 WHITESPACE@[8; 13) "\n "
14 FN_DEF@[13; 33) 14 FN_DEF@[13; 33)
15 FN_KW@[13; 15) 15 FN_KW@[13; 15) "fn"
16 WHITESPACE@[15; 16) 16 WHITESPACE@[15; 16) " "
17 NAME@[16; 17) 17 NAME@[16; 17)
18 IDENT@[16; 17) "a" 18 IDENT@[16; 17) "a"
19 PARAM_LIST@[17; 30) 19 PARAM_LIST@[17; 30)
20 L_PAREN@[17; 18) 20 L_PAREN@[17; 18) "("
21 SELF_PARAM@[18; 29) 21 SELF_PARAM@[18; 29)
22 SELF_KW@[18; 22) 22 SELF_KW@[18; 22) "self"
23 COLON@[22; 23) 23 COLON@[22; 23) ":"
24 WHITESPACE@[23; 24) 24 WHITESPACE@[23; 24) " "
25 REFERENCE_TYPE@[24; 29) 25 REFERENCE_TYPE@[24; 29)
26 AMP@[24; 25) 26 AMP@[24; 25) "&"
27 PATH_TYPE@[25; 29) 27 PATH_TYPE@[25; 29)
28 PATH@[25; 29) 28 PATH@[25; 29)
29 PATH_SEGMENT@[25; 29) 29 PATH_SEGMENT@[25; 29)
30 NAME_REF@[25; 29) 30 NAME_REF@[25; 29)
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@[31; 33)
35 L_CURLY@[31; 32) 35 L_CURLY@[31; 32) "{"
36 R_CURLY@[32; 33) 36 R_CURLY@[32; 33) "}"
37 WHITESPACE@[33; 38) 37 WHITESPACE@[33; 38) "\n "
38 FN_DEF@[38; 66) 38 FN_DEF@[38; 66)
39 FN_KW@[38; 40) 39 FN_KW@[38; 40) "fn"
40 WHITESPACE@[40; 41) 40 WHITESPACE@[40; 41) " "
41 NAME@[41; 42) 41 NAME@[41; 42)
42 IDENT@[41; 42) "b" 42 IDENT@[41; 42) "b"
43 PARAM_LIST@[42; 63) 43 PARAM_LIST@[42; 63)
44 L_PAREN@[42; 43) 44 L_PAREN@[42; 43) "("
45 SELF_PARAM@[43; 62) 45 SELF_PARAM@[43; 62)
46 MUT_KW@[43; 46) 46 MUT_KW@[43; 46) "mut"
47 WHITESPACE@[46; 47) 47 WHITESPACE@[46; 47) " "
48 SELF_KW@[47; 51) 48 SELF_KW@[47; 51) "self"
49 COLON@[51; 52) 49 COLON@[51; 52) ":"
50 WHITESPACE@[52; 53) 50 WHITESPACE@[52; 53) " "
51 PATH_TYPE@[53; 62) 51 PATH_TYPE@[53; 62)
52 PATH@[53; 62) 52 PATH@[53; 62)
53 PATH_SEGMENT@[53; 62) 53 PATH_SEGMENT@[53; 62)
54 NAME_REF@[53; 56) 54 NAME_REF@[53; 56)
55 IDENT@[53; 56) "Box" 55 IDENT@[53; 56) "Box"
56 TYPE_ARG_LIST@[56; 62) 56 TYPE_ARG_LIST@[56; 62)
57 L_ANGLE@[56; 57) 57 L_ANGLE@[56; 57) "<"
58 TYPE_ARG@[57; 61) 58 TYPE_ARG@[57; 61)
59 PATH_TYPE@[57; 61) 59 PATH_TYPE@[57; 61)
60 PATH@[57; 61) 60 PATH@[57; 61)
61 PATH_SEGMENT@[57; 61) 61 PATH_SEGMENT@[57; 61)
62 NAME_REF@[57; 61) 62 NAME_REF@[57; 61)
63 IDENT@[57; 61) "Self" 63 IDENT@[57; 61) "Self"
64 R_ANGLE@[61; 62) 64 R_ANGLE@[61; 62) ">"
65 R_PAREN@[62; 63) 65 R_PAREN@[62; 63) ")"
66 WHITESPACE@[63; 64) 66 WHITESPACE@[63; 64) " "
67 BLOCK@[64; 66) 67 BLOCK@[64; 66)
68 L_CURLY@[64; 65) 68 L_CURLY@[64; 65) "{"
69 R_CURLY@[65; 66) 69 R_CURLY@[65; 66) "}"
70 WHITESPACE@[66; 67) 70 WHITESPACE@[66; 67) "\n"
71 R_CURLY@[67; 68) 71 R_CURLY@[67; 68) "}"
72 WHITESPACE@[68; 69) 72 WHITESPACE@[68; 69) "\n"
diff --git a/crates/ra_syntax/tests/data/parser/inline/ok/0019_unary_expr.txt b/crates/ra_syntax/tests/data/parser/inline/ok/0019_unary_expr.txt
index 72d7d8bfb..42032f56c 100644
--- a/crates/ra_syntax/tests/data/parser/inline/ok/0019_unary_expr.txt
+++ b/crates/ra_syntax/tests/data/parser/inline/ok/0019_unary_expr.txt
@@ -1,44 +1,44 @@
1SOURCE_FILE@[0; 44) 1SOURCE_FILE@[0; 44)
2 FN_DEF@[0; 43) 2 FN_DEF@[0; 43)
3 FN_KW@[0; 2) 3 FN_KW@[0; 2) "fn"
4 WHITESPACE@[2; 3) 4 WHITESPACE@[2; 3) " "
5 NAME@[3; 6) 5 NAME@[3; 6)
6 IDENT@[3; 6) "foo" 6 IDENT@[3; 6) "foo"
7 PARAM_LIST@[6; 8) 7 PARAM_LIST@[6; 8)
8 L_PAREN@[6; 7) 8 L_PAREN@[6; 7) "("
9 R_PAREN@[7; 8) 9 R_PAREN@[7; 8) ")"
10 WHITESPACE@[8; 9) 10 WHITESPACE@[8; 9) " "
11 BLOCK@[9; 43) 11 BLOCK@[9; 43)
12 L_CURLY@[9; 10) 12 L_CURLY@[9; 10) "{"
13 WHITESPACE@[10; 15) 13 WHITESPACE@[10; 15) "\n "
14 EXPR_STMT@[15; 20) 14 EXPR_STMT@[15; 20)
15 PREFIX_EXPR@[15; 19) 15 PREFIX_EXPR@[15; 19)
16 STAR@[15; 16) 16 STAR@[15; 16) "*"
17 PREFIX_EXPR@[16; 19) 17 PREFIX_EXPR@[16; 19)
18 STAR@[16; 17) 18 STAR@[16; 17) "*"
19 REF_EXPR@[17; 19) 19 REF_EXPR@[17; 19)
20 AMP@[17; 18) 20 AMP@[17; 18) "&"
21 LITERAL@[18; 19) 21 LITERAL@[18; 19)
22 INT_NUMBER@[18; 19) "1" 22 INT_NUMBER@[18; 19) "1"
23 SEMI@[19; 20) 23 SEMI@[19; 20) ";"
24 WHITESPACE@[20; 25) 24 WHITESPACE@[20; 25) "\n "
25 EXPR_STMT@[25; 32) 25 EXPR_STMT@[25; 32)
26 PREFIX_EXPR@[25; 31) 26 PREFIX_EXPR@[25; 31)
27 EXCL@[25; 26) 27 EXCL@[25; 26) "!"
28 PREFIX_EXPR@[26; 31) 28 PREFIX_EXPR@[26; 31)
29 EXCL@[26; 27) 29 EXCL@[26; 27) "!"
30 LITERAL@[27; 31) 30 LITERAL@[27; 31)
31 TRUE_KW@[27; 31) 31 TRUE_KW@[27; 31) "true"
32 SEMI@[31; 32) 32 SEMI@[31; 32) ";"
33 WHITESPACE@[32; 37) 33 WHITESPACE@[32; 37) "\n "
34 EXPR_STMT@[37; 41) 34 EXPR_STMT@[37; 41)
35 PREFIX_EXPR@[37; 40) 35 PREFIX_EXPR@[37; 40)
36 MINUS@[37; 38) 36 MINUS@[37; 38) "-"
37 PREFIX_EXPR@[38; 40) 37 PREFIX_EXPR@[38; 40)
38 MINUS@[38; 39) 38 MINUS@[38; 39) "-"
39 LITERAL@[39; 40) 39 LITERAL@[39; 40)
40 INT_NUMBER@[39; 40) "1" 40 INT_NUMBER@[39; 40) "1"
41 SEMI@[40; 41) 41 SEMI@[40; 41) ";"
42 WHITESPACE@[41; 42) 42 WHITESPACE@[41; 42) "\n"
43 R_CURLY@[42; 43) 43 R_CURLY@[42; 43) "}"
44 WHITESPACE@[43; 44) 44 WHITESPACE@[43; 44) "\n"
diff --git a/crates/ra_syntax/tests/data/parser/inline/ok/0020_use_star.txt b/crates/ra_syntax/tests/data/parser/inline/ok/0020_use_star.txt
index 2db3cbf9e..dd2095d90 100644
--- a/crates/ra_syntax/tests/data/parser/inline/ok/0020_use_star.txt
+++ b/crates/ra_syntax/tests/data/parser/inline/ok/0020_use_star.txt
@@ -1,59 +1,59 @@
1SOURCE_FILE@[0; 60) 1SOURCE_FILE@[0; 60)
2 USE_ITEM@[0; 6) 2 USE_ITEM@[0; 6)
3 USE_KW@[0; 3) 3 USE_KW@[0; 3) "use"
4 WHITESPACE@[3; 4) 4 WHITESPACE@[3; 4) " "
5 USE_TREE@[4; 5) 5 USE_TREE@[4; 5)
6 STAR@[4; 5) 6 STAR@[4; 5) "*"
7 SEMI@[5; 6) 7 SEMI@[5; 6) ";"
8 WHITESPACE@[6; 7) 8 WHITESPACE@[6; 7) "\n"
9 USE_ITEM@[7; 15) 9 USE_ITEM@[7; 15)
10 USE_KW@[7; 10) 10 USE_KW@[7; 10) "use"
11 WHITESPACE@[10; 11) 11 WHITESPACE@[10; 11) " "
12 USE_TREE@[11; 14) 12 USE_TREE@[11; 14)
13 COLONCOLON@[11; 13) 13 COLONCOLON@[11; 13) "::"
14 STAR@[13; 14) 14 STAR@[13; 14) "*"
15 SEMI@[14; 15) 15 SEMI@[14; 15) ";"
16 WHITESPACE@[15; 16) 16 WHITESPACE@[15; 16) "\n"
17 USE_ITEM@[16; 36) 17 USE_ITEM@[16; 36)
18 USE_KW@[16; 19) 18 USE_KW@[16; 19) "use"
19 WHITESPACE@[19; 20) 19 WHITESPACE@[19; 20) " "
20 USE_TREE@[20; 35) 20 USE_TREE@[20; 35)
21 PATH@[20; 30) 21 PATH@[20; 30)
22 PATH@[20; 24) 22 PATH@[20; 24)
23 PATH_SEGMENT@[20; 24) 23 PATH_SEGMENT@[20; 24)
24 NAME_REF@[20; 24) 24 NAME_REF@[20; 24)
25 IDENT@[20; 24) "some" 25 IDENT@[20; 24) "some"
26 COLONCOLON@[24; 26) 26 COLONCOLON@[24; 26) "::"
27 PATH_SEGMENT@[26; 30) 27 PATH_SEGMENT@[26; 30)
28 NAME_REF@[26; 30) 28 NAME_REF@[26; 30)
29 IDENT@[26; 30) "path" 29 IDENT@[26; 30) "path"
30 COLONCOLON@[30; 32) 30 COLONCOLON@[30; 32) "::"
31 USE_TREE_LIST@[32; 35) 31 USE_TREE_LIST@[32; 35)
32 L_CURLY@[32; 33) 32 L_CURLY@[32; 33) "{"
33 USE_TREE@[33; 34) 33 USE_TREE@[33; 34)
34 STAR@[33; 34) 34 STAR@[33; 34) "*"
35 R_CURLY@[34; 35) 35 R_CURLY@[34; 35) "}"
36 SEMI@[35; 36) 36 SEMI@[35; 36) ";"
37 WHITESPACE@[36; 37) 37 WHITESPACE@[36; 37) "\n"
38 USE_ITEM@[37; 59) 38 USE_ITEM@[37; 59)
39 USE_KW@[37; 40) 39 USE_KW@[37; 40) "use"
40 WHITESPACE@[40; 41) 40 WHITESPACE@[40; 41) " "
41 USE_TREE@[41; 58) 41 USE_TREE@[41; 58)
42 PATH@[41; 51) 42 PATH@[41; 51)
43 PATH@[41; 45) 43 PATH@[41; 45)
44 PATH_SEGMENT@[41; 45) 44 PATH_SEGMENT@[41; 45)
45 NAME_REF@[41; 45) 45 NAME_REF@[41; 45)
46 IDENT@[41; 45) "some" 46 IDENT@[41; 45) "some"
47 COLONCOLON@[45; 47) 47 COLONCOLON@[45; 47) "::"
48 PATH_SEGMENT@[47; 51) 48 PATH_SEGMENT@[47; 51)
49 NAME_REF@[47; 51) 49 NAME_REF@[47; 51)
50 IDENT@[47; 51) "path" 50 IDENT@[47; 51) "path"
51 COLONCOLON@[51; 53) 51 COLONCOLON@[51; 53) "::"
52 USE_TREE_LIST@[53; 58) 52 USE_TREE_LIST@[53; 58)
53 L_CURLY@[53; 54) 53 L_CURLY@[53; 54) "{"
54 USE_TREE@[54; 57) 54 USE_TREE@[54; 57)
55 COLONCOLON@[54; 56) 55 COLONCOLON@[54; 56) "::"
56 STAR@[56; 57) 56 STAR@[56; 57) "*"
57 R_CURLY@[57; 58) 57 R_CURLY@[57; 58) "}"
58 SEMI@[58; 59) 58 SEMI@[58; 59) ";"
59 WHITESPACE@[59; 60) 59 WHITESPACE@[59; 60) "\n"
diff --git a/crates/ra_syntax/tests/data/parser/inline/ok/0021_impl_item_list.txt b/crates/ra_syntax/tests/data/parser/inline/ok/0021_impl_item_list.txt
index 08a0b786d..a893833e1 100644
--- a/crates/ra_syntax/tests/data/parser/inline/ok/0021_impl_item_list.txt
+++ b/crates/ra_syntax/tests/data/parser/inline/ok/0021_impl_item_list.txt
@@ -1,78 +1,78 @@
1SOURCE_FILE@[0; 89) 1SOURCE_FILE@[0; 89)
2 IMPL_BLOCK@[0; 88) 2 IMPL_BLOCK@[0; 88)
3 IMPL_KW@[0; 4) 3 IMPL_KW@[0; 4) "impl"
4 WHITESPACE@[4; 5) 4 WHITESPACE@[4; 5) " "
5 PATH_TYPE@[5; 6) 5 PATH_TYPE@[5; 6)
6 PATH@[5; 6) 6 PATH@[5; 6)
7 PATH_SEGMENT@[5; 6) 7 PATH_SEGMENT@[5; 6)
8 NAME_REF@[5; 6) 8 NAME_REF@[5; 6)
9 IDENT@[5; 6) "F" 9 IDENT@[5; 6) "F"
10 WHITESPACE@[6; 7) 10 WHITESPACE@[6; 7) " "
11 ITEM_LIST@[7; 88) 11 ITEM_LIST@[7; 88)
12 L_CURLY@[7; 8) 12 L_CURLY@[7; 8) "{"
13 WHITESPACE@[8; 13) 13 WHITESPACE@[8; 13) "\n "
14 TYPE_ALIAS_DEF@[13; 26) 14 TYPE_ALIAS_DEF@[13; 26)
15 TYPE_KW@[13; 17) 15 TYPE_KW@[13; 17) "type"
16 WHITESPACE@[17; 18) 16 WHITESPACE@[17; 18) " "
17 NAME@[18; 19) 17 NAME@[18; 19)
18 IDENT@[18; 19) "A" 18 IDENT@[18; 19) "A"
19 WHITESPACE@[19; 20) 19 WHITESPACE@[19; 20) " "
20 EQ@[20; 21) 20 EQ@[20; 21) "="
21 WHITESPACE@[21; 22) 21 WHITESPACE@[21; 22) " "
22 PATH_TYPE@[22; 25) 22 PATH_TYPE@[22; 25)
23 PATH@[22; 25) 23 PATH@[22; 25)
24 PATH_SEGMENT@[22; 25) 24 PATH_SEGMENT@[22; 25)
25 NAME_REF@[22; 25) 25 NAME_REF@[22; 25)
26 IDENT@[22; 25) "i32" 26 IDENT@[22; 25) "i32"
27 SEMI@[25; 26) 27 SEMI@[25; 26) ";"
28 WHITESPACE@[26; 31) 28 WHITESPACE@[26; 31) "\n "
29 CONST_DEF@[31; 49) 29 CONST_DEF@[31; 49)
30 CONST_KW@[31; 36) 30 CONST_KW@[31; 36) "const"
31 WHITESPACE@[36; 37) 31 WHITESPACE@[36; 37) " "
32 NAME@[37; 38) 32 NAME@[37; 38)
33 IDENT@[37; 38) "B" 33 IDENT@[37; 38) "B"
34 COLON@[38; 39) 34 COLON@[38; 39) ":"
35 WHITESPACE@[39; 40) 35 WHITESPACE@[39; 40) " "
36 PATH_TYPE@[40; 43) 36 PATH_TYPE@[40; 43)
37 PATH@[40; 43) 37 PATH@[40; 43)
38 PATH_SEGMENT@[40; 43) 38 PATH_SEGMENT@[40; 43)
39 NAME_REF@[40; 43) 39 NAME_REF@[40; 43)
40 IDENT@[40; 43) "i32" 40 IDENT@[40; 43) "i32"
41 WHITESPACE@[43; 44) 41 WHITESPACE@[43; 44) " "
42 EQ@[44; 45) 42 EQ@[44; 45) "="
43 WHITESPACE@[45; 46) 43 WHITESPACE@[45; 46) " "
44 LITERAL@[46; 48) 44 LITERAL@[46; 48)
45 INT_NUMBER@[46; 48) "92" 45 INT_NUMBER@[46; 48) "92"
46 SEMI@[48; 49) 46 SEMI@[48; 49) ";"
47 WHITESPACE@[49; 54) 47 WHITESPACE@[49; 54) "\n "
48 FN_DEF@[54; 65) 48 FN_DEF@[54; 65)
49 FN_KW@[54; 56) 49 FN_KW@[54; 56) "fn"
50 WHITESPACE@[56; 57) 50 WHITESPACE@[56; 57) " "
51 NAME@[57; 60) 51 NAME@[57; 60)
52 IDENT@[57; 60) "foo" 52 IDENT@[57; 60) "foo"
53 PARAM_LIST@[60; 62) 53 PARAM_LIST@[60; 62)
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@[63; 65)
58 L_CURLY@[63; 64) 58 L_CURLY@[63; 64) "{"
59 R_CURLY@[64; 65) 59 R_CURLY@[64; 65) "}"
60 WHITESPACE@[65; 70) 60 WHITESPACE@[65; 70) "\n "
61 FN_DEF@[70; 86) 61 FN_DEF@[70; 86)
62 FN_KW@[70; 72) 62 FN_KW@[70; 72) "fn"
63 WHITESPACE@[72; 73) 63 WHITESPACE@[72; 73) " "
64 NAME@[73; 76) 64 NAME@[73; 76)
65 IDENT@[73; 76) "bar" 65 IDENT@[73; 76) "bar"
66 PARAM_LIST@[76; 83) 66 PARAM_LIST@[76; 83)
67 L_PAREN@[76; 77) 67 L_PAREN@[76; 77) "("
68 SELF_PARAM@[77; 82) 68 SELF_PARAM@[77; 82)
69 AMP@[77; 78) 69 AMP@[77; 78) "&"
70 SELF_KW@[78; 82) 70 SELF_KW@[78; 82) "self"
71 R_PAREN@[82; 83) 71 R_PAREN@[82; 83) ")"
72 WHITESPACE@[83; 84) 72 WHITESPACE@[83; 84) " "
73 BLOCK@[84; 86) 73 BLOCK@[84; 86)
74 L_CURLY@[84; 85) 74 L_CURLY@[84; 85) "{"
75 R_CURLY@[85; 86) 75 R_CURLY@[85; 86) "}"
76 WHITESPACE@[86; 87) 76 WHITESPACE@[86; 87) "\n"
77 R_CURLY@[87; 88) 77 R_CURLY@[87; 88) "}"
78 WHITESPACE@[88; 89) 78 WHITESPACE@[88; 89) "\n"
diff --git a/crates/ra_syntax/tests/data/parser/inline/ok/0022_crate_visibility.txt b/crates/ra_syntax/tests/data/parser/inline/ok/0022_crate_visibility.txt
index 7d137cfe9..891943f6e 100644
--- a/crates/ra_syntax/tests/data/parser/inline/ok/0022_crate_visibility.txt
+++ b/crates/ra_syntax/tests/data/parser/inline/ok/0022_crate_visibility.txt
@@ -1,53 +1,53 @@
1SOURCE_FILE@[0; 81) 1SOURCE_FILE@[0; 81)
2 STRUCT_DEF@[0; 20) 2 STRUCT_DEF@[0; 20)
3 VISIBILITY@[0; 10) 3 VISIBILITY@[0; 10)
4 PUB_KW@[0; 3) 4 PUB_KW@[0; 3) "pub"
5 L_PAREN@[3; 4) 5 L_PAREN@[3; 4) "("
6 CRATE_KW@[4; 9) 6 CRATE_KW@[4; 9) "crate"
7 R_PAREN@[9; 10) 7 R_PAREN@[9; 10) ")"
8 WHITESPACE@[10; 11) 8 WHITESPACE@[10; 11) " "
9 STRUCT_KW@[11; 17) 9 STRUCT_KW@[11; 17) "struct"
10 WHITESPACE@[17; 18) 10 WHITESPACE@[17; 18) " "
11 NAME@[18; 19) 11 NAME@[18; 19)
12 IDENT@[18; 19) "S" 12 IDENT@[18; 19) "S"
13 SEMI@[19; 20) 13 SEMI@[19; 20) ";"
14 WHITESPACE@[20; 21) 14 WHITESPACE@[20; 21) "\n"
15 STRUCT_DEF@[21; 40) 15 STRUCT_DEF@[21; 40)
16 VISIBILITY@[21; 30) 16 VISIBILITY@[21; 30)
17 PUB_KW@[21; 24) 17 PUB_KW@[21; 24) "pub"
18 L_PAREN@[24; 25) 18 L_PAREN@[24; 25) "("
19 SELF_KW@[25; 29) 19 SELF_KW@[25; 29) "self"
20 R_PAREN@[29; 30) 20 R_PAREN@[29; 30) ")"
21 WHITESPACE@[30; 31) 21 WHITESPACE@[30; 31) " "
22 STRUCT_KW@[31; 37) 22 STRUCT_KW@[31; 37) "struct"
23 WHITESPACE@[37; 38) 23 WHITESPACE@[37; 38) " "
24 NAME@[38; 39) 24 NAME@[38; 39)
25 IDENT@[38; 39) "S" 25 IDENT@[38; 39) "S"
26 SEMI@[39; 40) 26 SEMI@[39; 40) ";"
27 WHITESPACE@[40; 41) 27 WHITESPACE@[40; 41) "\n"
28 STRUCT_DEF@[41; 60) 28 STRUCT_DEF@[41; 60)
29 VISIBILITY@[41; 50) 29 VISIBILITY@[41; 50)
30 PUB_KW@[41; 44) 30 PUB_KW@[41; 44) "pub"
31 L_PAREN@[44; 45) 31 L_PAREN@[44; 45) "("
32 SELF_KW@[45; 49) 32 SELF_KW@[45; 49) "self"
33 R_PAREN@[49; 50) 33 R_PAREN@[49; 50) ")"
34 WHITESPACE@[50; 51) 34 WHITESPACE@[50; 51) " "
35 STRUCT_KW@[51; 57) 35 STRUCT_KW@[51; 57) "struct"
36 WHITESPACE@[57; 58) 36 WHITESPACE@[57; 58) " "
37 NAME@[58; 59) 37 NAME@[58; 59)
38 IDENT@[58; 59) "S" 38 IDENT@[58; 59) "S"
39 SEMI@[59; 60) 39 SEMI@[59; 60) ";"
40 WHITESPACE@[60; 61) 40 WHITESPACE@[60; 61) "\n"
41 STRUCT_DEF@[61; 80) 41 STRUCT_DEF@[61; 80)
42 VISIBILITY@[61; 70) 42 VISIBILITY@[61; 70)
43 PUB_KW@[61; 64) 43 PUB_KW@[61; 64) "pub"
44 L_PAREN@[64; 65) 44 L_PAREN@[64; 65) "("
45 SELF_KW@[65; 69) 45 SELF_KW@[65; 69) "self"
46 R_PAREN@[69; 70) 46 R_PAREN@[69; 70) ")"
47 WHITESPACE@[70; 71) 47 WHITESPACE@[70; 71) " "
48 STRUCT_KW@[71; 77) 48 STRUCT_KW@[71; 77) "struct"
49 WHITESPACE@[77; 78) 49 WHITESPACE@[77; 78) " "
50 NAME@[78; 79) 50 NAME@[78; 79)
51 IDENT@[78; 79) "S" 51 IDENT@[78; 79) "S"
52 SEMI@[79; 80) 52 SEMI@[79; 80) ";"
53 WHITESPACE@[80; 81) 53 WHITESPACE@[80; 81) "\n"
diff --git a/crates/ra_syntax/tests/data/parser/inline/ok/0023_placeholder_type.txt b/crates/ra_syntax/tests/data/parser/inline/ok/0023_placeholder_type.txt
index bb9bb57ea..0f32aec9e 100644
--- a/crates/ra_syntax/tests/data/parser/inline/ok/0023_placeholder_type.txt
+++ b/crates/ra_syntax/tests/data/parser/inline/ok/0023_placeholder_type.txt
@@ -1,13 +1,13 @@
1SOURCE_FILE@[0; 22) 1SOURCE_FILE@[0; 22)
2 TYPE_ALIAS_DEF@[0; 21) 2 TYPE_ALIAS_DEF@[0; 21)
3 TYPE_KW@[0; 4) 3 TYPE_KW@[0; 4) "type"
4 WHITESPACE@[4; 5) 4 WHITESPACE@[4; 5) " "
5 NAME@[5; 16) 5 NAME@[5; 16)
6 IDENT@[5; 16) "Placeholder" 6 IDENT@[5; 16) "Placeholder"
7 WHITESPACE@[16; 17) 7 WHITESPACE@[16; 17) " "
8 EQ@[17; 18) 8 EQ@[17; 18) "="
9 WHITESPACE@[18; 19) 9 WHITESPACE@[18; 19) " "
10 PLACEHOLDER_TYPE@[19; 20) 10 PLACEHOLDER_TYPE@[19; 20)
11 UNDERSCORE@[19; 20) 11 UNDERSCORE@[19; 20) "_"
12 SEMI@[20; 21) 12 SEMI@[20; 21) ";"
13 WHITESPACE@[21; 22) 13 WHITESPACE@[21; 22) "\n"
diff --git a/crates/ra_syntax/tests/data/parser/inline/ok/0024_slice_pat.txt b/crates/ra_syntax/tests/data/parser/inline/ok/0024_slice_pat.txt
index 72987308d..40ddbfbf6 100644
--- a/crates/ra_syntax/tests/data/parser/inline/ok/0024_slice_pat.txt
+++ b/crates/ra_syntax/tests/data/parser/inline/ok/0024_slice_pat.txt
@@ -1,40 +1,40 @@
1SOURCE_FILE@[0; 39) 1SOURCE_FILE@[0; 39)
2 FN_DEF@[0; 38) 2 FN_DEF@[0; 38)
3 FN_KW@[0; 2) 3 FN_KW@[0; 2) "fn"
4 WHITESPACE@[2; 3) 4 WHITESPACE@[2; 3) " "
5 NAME@[3; 7) 5 NAME@[3; 7)
6 IDENT@[3; 7) "main" 6 IDENT@[3; 7) "main"
7 PARAM_LIST@[7; 9) 7 PARAM_LIST@[7; 9)
8 L_PAREN@[7; 8) 8 L_PAREN@[7; 8) "("
9 R_PAREN@[8; 9) 9 R_PAREN@[8; 9) ")"
10 WHITESPACE@[9; 10) 10 WHITESPACE@[9; 10) " "
11 BLOCK@[10; 38) 11 BLOCK@[10; 38)
12 L_CURLY@[10; 11) 12 L_CURLY@[10; 11) "{"
13 WHITESPACE@[11; 16) 13 WHITESPACE@[11; 16) "\n "
14 LET_STMT@[16; 36) 14 LET_STMT@[16; 36)
15 LET_KW@[16; 19) 15 LET_KW@[16; 19) "let"
16 WHITESPACE@[19; 20) 16 WHITESPACE@[19; 20) " "
17 SLICE_PAT@[20; 30) 17 SLICE_PAT@[20; 30)
18 L_BRACK@[20; 21) 18 L_BRACK@[20; 21) "["
19 BIND_PAT@[21; 22) 19 BIND_PAT@[21; 22)
20 NAME@[21; 22) 20 NAME@[21; 22)
21 IDENT@[21; 22) "a" 21 IDENT@[21; 22) "a"
22 COMMA@[22; 23) 22 COMMA@[22; 23) ","
23 WHITESPACE@[23; 24) 23 WHITESPACE@[23; 24) " "
24 BIND_PAT@[24; 25) 24 BIND_PAT@[24; 25)
25 NAME@[24; 25) 25 NAME@[24; 25)
26 IDENT@[24; 25) "b" 26 IDENT@[24; 25) "b"
27 COMMA@[25; 26) 27 COMMA@[25; 26) ","
28 WHITESPACE@[26; 27) 28 WHITESPACE@[26; 27) " "
29 DOTDOT@[27; 29) 29 DOTDOT@[27; 29) ".."
30 R_BRACK@[29; 30) 30 R_BRACK@[29; 30) "]"
31 WHITESPACE@[30; 31) 31 WHITESPACE@[30; 31) " "
32 EQ@[31; 32) 32 EQ@[31; 32) "="
33 WHITESPACE@[32; 33) 33 WHITESPACE@[32; 33) " "
34 ARRAY_EXPR@[33; 35) 34 ARRAY_EXPR@[33; 35)
35 L_BRACK@[33; 34) 35 L_BRACK@[33; 34) "["
36 R_BRACK@[34; 35) 36 R_BRACK@[34; 35) "]"
37 SEMI@[35; 36) 37 SEMI@[35; 36) ";"
38 WHITESPACE@[36; 37) 38 WHITESPACE@[36; 37) "\n"
39 R_CURLY@[37; 38) 39 R_CURLY@[37; 38) "}"
40 WHITESPACE@[38; 39) 40 WHITESPACE@[38; 39) "\n"
diff --git a/crates/ra_syntax/tests/data/parser/inline/ok/0025_slice_type.txt b/crates/ra_syntax/tests/data/parser/inline/ok/0025_slice_type.txt
index c5f70ca3a..b3a24281e 100644
--- a/crates/ra_syntax/tests/data/parser/inline/ok/0025_slice_type.txt
+++ b/crates/ra_syntax/tests/data/parser/inline/ok/0025_slice_type.txt
@@ -1,17 +1,17 @@
1SOURCE_FILE@[0; 15) 1SOURCE_FILE@[0; 15)
2 TYPE_ALIAS_DEF@[0; 14) 2 TYPE_ALIAS_DEF@[0; 14)
3 TYPE_KW@[0; 4) 3 TYPE_KW@[0; 4) "type"
4 WHITESPACE@[4; 5) 4 WHITESPACE@[4; 5) " "
5 NAME@[5; 6) 5 NAME@[5; 6)
6 IDENT@[5; 6) "T" 6 IDENT@[5; 6) "T"
7 WHITESPACE@[6; 7) 7 WHITESPACE@[6; 7) " "
8 EQ@[7; 8) 8 EQ@[7; 8) "="
9 WHITESPACE@[8; 9) 9 WHITESPACE@[8; 9) " "
10 SLICE_TYPE@[9; 13) 10 SLICE_TYPE@[9; 13)
11 L_BRACK@[9; 10) 11 L_BRACK@[9; 10) "["
12 TUPLE_TYPE@[10; 12) 12 TUPLE_TYPE@[10; 12)
13 L_PAREN@[10; 11) 13 L_PAREN@[10; 11) "("
14 R_PAREN@[11; 12) 14 R_PAREN@[11; 12) ")"
15 R_BRACK@[12; 13) 15 R_BRACK@[12; 13) "]"
16 SEMI@[13; 14) 16 SEMI@[13; 14) ";"
17 WHITESPACE@[14; 15) 17 WHITESPACE@[14; 15) "\n"
diff --git a/crates/ra_syntax/tests/data/parser/inline/ok/0026_tuple_pat_fields.txt b/crates/ra_syntax/tests/data/parser/inline/ok/0026_tuple_pat_fields.txt
index 737fbec22..0ff936471 100644
--- a/crates/ra_syntax/tests/data/parser/inline/ok/0026_tuple_pat_fields.txt
+++ b/crates/ra_syntax/tests/data/parser/inline/ok/0026_tuple_pat_fields.txt
@@ -1,103 +1,103 @@
1SOURCE_FILE@[0; 97) 1SOURCE_FILE@[0; 97)
2 FN_DEF@[0; 96) 2 FN_DEF@[0; 96)
3 FN_KW@[0; 2) 3 FN_KW@[0; 2) "fn"
4 WHITESPACE@[2; 3) 4 WHITESPACE@[2; 3) " "
5 NAME@[3; 6) 5 NAME@[3; 6)
6 IDENT@[3; 6) "foo" 6 IDENT@[3; 6) "foo"
7 PARAM_LIST@[6; 8) 7 PARAM_LIST@[6; 8)
8 L_PAREN@[6; 7) 8 L_PAREN@[6; 7) "("
9 R_PAREN@[7; 8) 9 R_PAREN@[7; 8) ")"
10 WHITESPACE@[8; 9) 10 WHITESPACE@[8; 9) " "
11 BLOCK@[9; 96) 11 BLOCK@[9; 96)
12 L_CURLY@[9; 10) 12 L_CURLY@[9; 10) "{"
13 WHITESPACE@[10; 15) 13 WHITESPACE@[10; 15) "\n "
14 LET_STMT@[15; 28) 14 LET_STMT@[15; 28)
15 LET_KW@[15; 18) 15 LET_KW@[15; 18) "let"
16 WHITESPACE@[18; 19) 16 WHITESPACE@[18; 19) " "
17 TUPLE_STRUCT_PAT@[19; 22) 17 TUPLE_STRUCT_PAT@[19; 22)
18 PATH@[19; 20) 18 PATH@[19; 20)
19 PATH_SEGMENT@[19; 20) 19 PATH_SEGMENT@[19; 20)
20 NAME_REF@[19; 20) 20 NAME_REF@[19; 20)
21 IDENT@[19; 20) "S" 21 IDENT@[19; 20) "S"
22 L_PAREN@[20; 21) 22 L_PAREN@[20; 21) "("
23 R_PAREN@[21; 22) 23 R_PAREN@[21; 22) ")"
24 WHITESPACE@[22; 23) 24 WHITESPACE@[22; 23) " "
25 EQ@[23; 24) 25 EQ@[23; 24) "="
26 WHITESPACE@[24; 25) 26 WHITESPACE@[24; 25) " "
27 TUPLE_EXPR@[25; 27) 27 TUPLE_EXPR@[25; 27)
28 L_PAREN@[25; 26) 28 L_PAREN@[25; 26) "("
29 R_PAREN@[26; 27) 29 R_PAREN@[26; 27) ")"
30 SEMI@[27; 28) 30 SEMI@[27; 28) ";"
31 WHITESPACE@[28; 33) 31 WHITESPACE@[28; 33) "\n "
32 LET_STMT@[33; 47) 32 LET_STMT@[33; 47)
33 LET_KW@[33; 36) 33 LET_KW@[33; 36) "let"
34 WHITESPACE@[36; 37) 34 WHITESPACE@[36; 37) " "
35 TUPLE_STRUCT_PAT@[37; 41) 35 TUPLE_STRUCT_PAT@[37; 41)
36 PATH@[37; 38) 36 PATH@[37; 38)
37 PATH_SEGMENT@[37; 38) 37 PATH_SEGMENT@[37; 38)
38 NAME_REF@[37; 38) 38 NAME_REF@[37; 38)
39 IDENT@[37; 38) "S" 39 IDENT@[37; 38) "S"
40 L_PAREN@[38; 39) 40 L_PAREN@[38; 39) "("
41 PLACEHOLDER_PAT@[39; 40) 41 PLACEHOLDER_PAT@[39; 40)
42 UNDERSCORE@[39; 40) 42 UNDERSCORE@[39; 40) "_"
43 R_PAREN@[40; 41) 43 R_PAREN@[40; 41) ")"
44 WHITESPACE@[41; 42) 44 WHITESPACE@[41; 42) " "
45 EQ@[42; 43) 45 EQ@[42; 43) "="
46 WHITESPACE@[43; 44) 46 WHITESPACE@[43; 44) " "
47 TUPLE_EXPR@[44; 46) 47 TUPLE_EXPR@[44; 46)
48 L_PAREN@[44; 45) 48 L_PAREN@[44; 45) "("
49 R_PAREN@[45; 46) 49 R_PAREN@[45; 46) ")"
50 SEMI@[46; 47) 50 SEMI@[46; 47) ";"
51 WHITESPACE@[47; 52) 51 WHITESPACE@[47; 52) "\n "
52 LET_STMT@[52; 67) 52 LET_STMT@[52; 67)
53 LET_KW@[52; 55) 53 LET_KW@[52; 55) "let"
54 WHITESPACE@[55; 56) 54 WHITESPACE@[55; 56) " "
55 TUPLE_STRUCT_PAT@[56; 61) 55 TUPLE_STRUCT_PAT@[56; 61)
56 PATH@[56; 57) 56 PATH@[56; 57)
57 PATH_SEGMENT@[56; 57) 57 PATH_SEGMENT@[56; 57)
58 NAME_REF@[56; 57) 58 NAME_REF@[56; 57)
59 IDENT@[56; 57) "S" 59 IDENT@[56; 57) "S"
60 L_PAREN@[57; 58) 60 L_PAREN@[57; 58) "("
61 PLACEHOLDER_PAT@[58; 59) 61 PLACEHOLDER_PAT@[58; 59)
62 UNDERSCORE@[58; 59) 62 UNDERSCORE@[58; 59) "_"
63 COMMA@[59; 60) 63 COMMA@[59; 60) ","
64 R_PAREN@[60; 61) 64 R_PAREN@[60; 61) ")"
65 WHITESPACE@[61; 62) 65 WHITESPACE@[61; 62) " "
66 EQ@[62; 63) 66 EQ@[62; 63) "="
67 WHITESPACE@[63; 64) 67 WHITESPACE@[63; 64) " "
68 TUPLE_EXPR@[64; 66) 68 TUPLE_EXPR@[64; 66)
69 L_PAREN@[64; 65) 69 L_PAREN@[64; 65) "("
70 R_PAREN@[65; 66) 70 R_PAREN@[65; 66) ")"
71 SEMI@[66; 67) 71 SEMI@[66; 67) ";"
72 WHITESPACE@[67; 72) 72 WHITESPACE@[67; 72) "\n "
73 LET_STMT@[72; 94) 73 LET_STMT@[72; 94)
74 LET_KW@[72; 75) 74 LET_KW@[72; 75) "let"
75 WHITESPACE@[75; 76) 75 WHITESPACE@[75; 76) " "
76 TUPLE_STRUCT_PAT@[76; 88) 76 TUPLE_STRUCT_PAT@[76; 88)
77 PATH@[76; 77) 77 PATH@[76; 77)
78 PATH_SEGMENT@[76; 77) 78 PATH_SEGMENT@[76; 77)
79 NAME_REF@[76; 77) 79 NAME_REF@[76; 77)
80 IDENT@[76; 77) "S" 80 IDENT@[76; 77) "S"
81 L_PAREN@[77; 78) 81 L_PAREN@[77; 78) "("
82 PLACEHOLDER_PAT@[78; 79) 82 PLACEHOLDER_PAT@[78; 79)
83 UNDERSCORE@[78; 79) 83 UNDERSCORE@[78; 79) "_"
84 COMMA@[79; 80) 84 COMMA@[79; 80) ","
85 WHITESPACE@[80; 81) 85 WHITESPACE@[80; 81) " "
86 DOTDOT@[81; 83) 86 DOTDOT@[81; 83) ".."
87 WHITESPACE@[83; 84) 87 WHITESPACE@[83; 84) " "
88 COMMA@[84; 85) 88 COMMA@[84; 85) ","
89 WHITESPACE@[85; 86) 89 WHITESPACE@[85; 86) " "
90 BIND_PAT@[86; 87) 90 BIND_PAT@[86; 87)
91 NAME@[86; 87) 91 NAME@[86; 87)
92 IDENT@[86; 87) "x" 92 IDENT@[86; 87) "x"
93 R_PAREN@[87; 88) 93 R_PAREN@[87; 88) ")"
94 WHITESPACE@[88; 89) 94 WHITESPACE@[88; 89) " "
95 EQ@[89; 90) 95 EQ@[89; 90) "="
96 WHITESPACE@[90; 91) 96 WHITESPACE@[90; 91) " "
97 TUPLE_EXPR@[91; 93) 97 TUPLE_EXPR@[91; 93)
98 L_PAREN@[91; 92) 98 L_PAREN@[91; 92) "("
99 R_PAREN@[92; 93) 99 R_PAREN@[92; 93) ")"
100 SEMI@[93; 94) 100 SEMI@[93; 94) ";"
101 WHITESPACE@[94; 95) 101 WHITESPACE@[94; 95) "\n"
102 R_CURLY@[95; 96) 102 R_CURLY@[95; 96) "}"
103 WHITESPACE@[96; 97) 103 WHITESPACE@[96; 97) "\n"
diff --git a/crates/ra_syntax/tests/data/parser/inline/ok/0027_ref_pat.txt b/crates/ra_syntax/tests/data/parser/inline/ok/0027_ref_pat.txt
index 008f4f159..a833b1b96 100644
--- a/crates/ra_syntax/tests/data/parser/inline/ok/0027_ref_pat.txt
+++ b/crates/ra_syntax/tests/data/parser/inline/ok/0027_ref_pat.txt
@@ -1,49 +1,49 @@
1SOURCE_FILE@[0; 52) 1SOURCE_FILE@[0; 52)
2 FN_DEF@[0; 51) 2 FN_DEF@[0; 51)
3 FN_KW@[0; 2) 3 FN_KW@[0; 2) "fn"
4 WHITESPACE@[2; 3) 4 WHITESPACE@[2; 3) " "
5 NAME@[3; 7) 5 NAME@[3; 7)
6 IDENT@[3; 7) "main" 6 IDENT@[3; 7) "main"
7 PARAM_LIST@[7; 9) 7 PARAM_LIST@[7; 9)
8 L_PAREN@[7; 8) 8 L_PAREN@[7; 8) "("
9 R_PAREN@[8; 9) 9 R_PAREN@[8; 9) ")"
10 WHITESPACE@[9; 10) 10 WHITESPACE@[9; 10) " "
11 BLOCK@[10; 51) 11 BLOCK@[10; 51)
12 L_CURLY@[10; 11) 12 L_CURLY@[10; 11) "{"
13 WHITESPACE@[11; 16) 13 WHITESPACE@[11; 16) "\n "
14 LET_STMT@[16; 28) 14 LET_STMT@[16; 28)
15 LET_KW@[16; 19) 15 LET_KW@[16; 19) "let"
16 WHITESPACE@[19; 20) 16 WHITESPACE@[19; 20) " "
17 REF_PAT@[20; 22) 17 REF_PAT@[20; 22)
18 AMP@[20; 21) 18 AMP@[20; 21) "&"
19 BIND_PAT@[21; 22) 19 BIND_PAT@[21; 22)
20 NAME@[21; 22) 20 NAME@[21; 22)
21 IDENT@[21; 22) "a" 21 IDENT@[21; 22) "a"
22 WHITESPACE@[22; 23) 22 WHITESPACE@[22; 23) " "
23 EQ@[23; 24) 23 EQ@[23; 24) "="
24 WHITESPACE@[24; 25) 24 WHITESPACE@[24; 25) " "
25 TUPLE_EXPR@[25; 27) 25 TUPLE_EXPR@[25; 27)
26 L_PAREN@[25; 26) 26 L_PAREN@[25; 26) "("
27 R_PAREN@[26; 27) 27 R_PAREN@[26; 27) ")"
28 SEMI@[27; 28) 28 SEMI@[27; 28) ";"
29 WHITESPACE@[28; 33) 29 WHITESPACE@[28; 33) "\n "
30 LET_STMT@[33; 49) 30 LET_STMT@[33; 49)
31 LET_KW@[33; 36) 31 LET_KW@[33; 36) "let"
32 WHITESPACE@[36; 37) 32 WHITESPACE@[36; 37) " "
33 REF_PAT@[37; 43) 33 REF_PAT@[37; 43)
34 AMP@[37; 38) 34 AMP@[37; 38) "&"
35 MUT_KW@[38; 41) 35 MUT_KW@[38; 41) "mut"
36 WHITESPACE@[41; 42) 36 WHITESPACE@[41; 42) " "
37 BIND_PAT@[42; 43) 37 BIND_PAT@[42; 43)
38 NAME@[42; 43) 38 NAME@[42; 43)
39 IDENT@[42; 43) "b" 39 IDENT@[42; 43) "b"
40 WHITESPACE@[43; 44) 40 WHITESPACE@[43; 44) " "
41 EQ@[44; 45) 41 EQ@[44; 45) "="
42 WHITESPACE@[45; 46) 42 WHITESPACE@[45; 46) " "
43 TUPLE_EXPR@[46; 48) 43 TUPLE_EXPR@[46; 48)
44 L_PAREN@[46; 47) 44 L_PAREN@[46; 47) "("
45 R_PAREN@[47; 48) 45 R_PAREN@[47; 48) ")"
46 SEMI@[48; 49) 46 SEMI@[48; 49) ";"
47 WHITESPACE@[49; 50) 47 WHITESPACE@[49; 50) "\n"
48 R_CURLY@[50; 51) 48 R_CURLY@[50; 51) "}"
49 WHITESPACE@[51; 52) 49 WHITESPACE@[51; 52) "\n"
diff --git a/crates/ra_syntax/tests/data/parser/inline/ok/0028_impl_trait_type.txt b/crates/ra_syntax/tests/data/parser/inline/ok/0028_impl_trait_type.txt
index 3b676fb4c..f07027fa7 100644
--- a/crates/ra_syntax/tests/data/parser/inline/ok/0028_impl_trait_type.txt
+++ b/crates/ra_syntax/tests/data/parser/inline/ok/0028_impl_trait_type.txt
@@ -1,40 +1,43 @@
1SOURCE_FILE@[0; 43) 1SOURCE_FILE@[0; 43)
2 TYPE_ALIAS_DEF@[0; 42) 2 TYPE_ALIAS_DEF@[0; 42)
3 TYPE_KW@[0; 4) 3 TYPE_KW@[0; 4) "type"
4 WHITESPACE@[4; 5) 4 WHITESPACE@[4; 5) " "
5 NAME@[5; 6) 5 NAME@[5; 6)
6 IDENT@[5; 6) "A" 6 IDENT@[5; 6) "A"
7 WHITESPACE@[6; 7) 7 WHITESPACE@[6; 7) " "
8 EQ@[7; 8) 8 EQ@[7; 8) "="
9 WHITESPACE@[8; 9) 9 WHITESPACE@[8; 9) " "
10 IMPL_TRAIT_TYPE@[9; 41) 10 IMPL_TRAIT_TYPE@[9; 41)
11 IMPL_KW@[9; 13) 11 IMPL_KW@[9; 13) "impl"
12 WHITESPACE@[13; 14) 12 WHITESPACE@[13; 14) " "
13 PATH_TYPE@[14; 41) 13 TYPE_BOUND_LIST@[14; 41)
14 PATH@[14; 36) 14 TYPE_BOUND@[14; 36)
15 PATH_SEGMENT@[14; 36) 15 PATH_TYPE@[14; 36)
16 NAME_REF@[14; 22) 16 PATH@[14; 36)
17 IDENT@[14; 22) "Iterator" 17 PATH_SEGMENT@[14; 36)
18 TYPE_ARG_LIST@[22; 36) 18 NAME_REF@[14; 22)
19 L_ANGLE@[22; 23) 19 IDENT@[14; 22) "Iterator"
20 ASSOC_TYPE_ARG@[23; 35) 20 TYPE_ARG_LIST@[22; 36)
21 NAME_REF@[23; 27) 21 L_ANGLE@[22; 23) "<"
22 IDENT@[23; 27) "Item" 22 ASSOC_TYPE_ARG@[23; 35)
23 EQ@[27; 28) 23 NAME_REF@[23; 27)
24 PATH_TYPE@[28; 35) 24 IDENT@[23; 27) "Item"
25 PATH@[28; 35) 25 EQ@[27; 28) "="
26 PATH_SEGMENT@[28; 35) 26 PATH_TYPE@[28; 35)
27 NAME_REF@[28; 31) 27 PATH@[28; 35)
28 IDENT@[28; 31) "Foo" 28 PATH_SEGMENT@[28; 35)
29 TYPE_ARG_LIST@[31; 35) 29 NAME_REF@[28; 31)
30 L_ANGLE@[31; 32) 30 IDENT@[28; 31) "Foo"
31 LIFETIME_ARG@[32; 34) 31 TYPE_ARG_LIST@[31; 35)
32 LIFETIME@[32; 34) "'a" 32 L_ANGLE@[31; 32) "<"
33 R_ANGLE@[34; 35) 33 LIFETIME_ARG@[32; 34)
34 R_ANGLE@[35; 36) 34 LIFETIME@[32; 34) "\'a"
35 WHITESPACE@[36; 37) 35 R_ANGLE@[34; 35) ">"
36 PLUS@[37; 38) 36 R_ANGLE@[35; 36) ">"
37 WHITESPACE@[38; 39) 37 WHITESPACE@[36; 37) " "
38 LIFETIME@[39; 41) "'a" 38 PLUS@[37; 38) "+"
39 SEMI@[41; 42) 39 WHITESPACE@[38; 39) " "
40 WHITESPACE@[42; 43) 40 TYPE_BOUND@[39; 41)
41 LIFETIME@[39; 41) "\'a"
42 SEMI@[41; 42) ";"
43 WHITESPACE@[42; 43) "\n"
diff --git a/crates/ra_syntax/tests/data/parser/inline/ok/0029_cast_expr.rs b/crates/ra_syntax/tests/data/parser/inline/ok/0029_cast_expr.rs
index b571a5860..bfe8e4b36 100644
--- a/crates/ra_syntax/tests/data/parser/inline/ok/0029_cast_expr.rs
+++ b/crates/ra_syntax/tests/data/parser/inline/ok/0029_cast_expr.rs
@@ -2,4 +2,5 @@ fn foo() {
2 82 as i32; 2 82 as i32;
3 81 as i8 + 1; 3 81 as i8 + 1;
4 79 as i16 - 1; 4 79 as i16 - 1;
5 0x36 as u8 <= 0x37;
5} 6}
diff --git a/crates/ra_syntax/tests/data/parser/inline/ok/0029_cast_expr.txt b/crates/ra_syntax/tests/data/parser/inline/ok/0029_cast_expr.txt
index cb56aef0b..11c14e3b4 100644
--- a/crates/ra_syntax/tests/data/parser/inline/ok/0029_cast_expr.txt
+++ b/crates/ra_syntax/tests/data/parser/inline/ok/0029_cast_expr.txt
@@ -1,69 +1,89 @@
1SOURCE_FILE@[0; 65) 1SOURCE_FILE@[0; 89)
2 FN_DEF@[0; 64) 2 FN_DEF@[0; 88)
3 FN_KW@[0; 2) 3 FN_KW@[0; 2) "fn"
4 WHITESPACE@[2; 3) 4 WHITESPACE@[2; 3) " "
5 NAME@[3; 6) 5 NAME@[3; 6)
6 IDENT@[3; 6) "foo" 6 IDENT@[3; 6) "foo"
7 PARAM_LIST@[6; 8) 7 PARAM_LIST@[6; 8)
8 L_PAREN@[6; 7) 8 L_PAREN@[6; 7) "("
9 R_PAREN@[7; 8) 9 R_PAREN@[7; 8) ")"
10 WHITESPACE@[8; 9) 10 WHITESPACE@[8; 9) " "
11 BLOCK@[9; 64) 11 BLOCK@[9; 88)
12 L_CURLY@[9; 10) 12 L_CURLY@[9; 10) "{"
13 WHITESPACE@[10; 15) 13 WHITESPACE@[10; 15) "\n "
14 EXPR_STMT@[15; 25) 14 EXPR_STMT@[15; 25)
15 CAST_EXPR@[15; 24) 15 CAST_EXPR@[15; 24)
16 LITERAL@[15; 17) 16 LITERAL@[15; 17)
17 INT_NUMBER@[15; 17) "82" 17 INT_NUMBER@[15; 17) "82"
18 WHITESPACE@[17; 18) 18 WHITESPACE@[17; 18) " "
19 AS_KW@[18; 20) 19 AS_KW@[18; 20) "as"
20 WHITESPACE@[20; 21) 20 WHITESPACE@[20; 21) " "
21 PATH_TYPE@[21; 24) 21 PATH_TYPE@[21; 24)
22 PATH@[21; 24) 22 PATH@[21; 24)
23 PATH_SEGMENT@[21; 24) 23 PATH_SEGMENT@[21; 24)
24 NAME_REF@[21; 24) 24 NAME_REF@[21; 24)
25 IDENT@[21; 24) "i32" 25 IDENT@[21; 24) "i32"
26 SEMI@[24; 25) 26 SEMI@[24; 25) ";"
27 WHITESPACE@[25; 30) 27 WHITESPACE@[25; 30) "\n "
28 EXPR_STMT@[30; 43) 28 EXPR_STMT@[30; 43)
29 BIN_EXPR@[30; 42) 29 BIN_EXPR@[30; 42)
30 CAST_EXPR@[30; 38) 30 CAST_EXPR@[30; 38)
31 LITERAL@[30; 32) 31 LITERAL@[30; 32)
32 INT_NUMBER@[30; 32) "81" 32 INT_NUMBER@[30; 32) "81"
33 WHITESPACE@[32; 33) 33 WHITESPACE@[32; 33) " "
34 AS_KW@[33; 35) 34 AS_KW@[33; 35) "as"
35 WHITESPACE@[35; 36) 35 WHITESPACE@[35; 36) " "
36 PATH_TYPE@[36; 38) 36 PATH_TYPE@[36; 38)
37 PATH@[36; 38) 37 PATH@[36; 38)
38 PATH_SEGMENT@[36; 38) 38 PATH_SEGMENT@[36; 38)
39 NAME_REF@[36; 38) 39 NAME_REF@[36; 38)
40 IDENT@[36; 38) "i8" 40 IDENT@[36; 38) "i8"
41 WHITESPACE@[38; 39) 41 WHITESPACE@[38; 39) " "
42 PLUS@[39; 40) 42 PLUS@[39; 40) "+"
43 WHITESPACE@[40; 41) 43 WHITESPACE@[40; 41) " "
44 LITERAL@[41; 42) 44 LITERAL@[41; 42)
45 INT_NUMBER@[41; 42) "1" 45 INT_NUMBER@[41; 42) "1"
46 SEMI@[42; 43) 46 SEMI@[42; 43) ";"
47 WHITESPACE@[43; 48) 47 WHITESPACE@[43; 48) "\n "
48 EXPR_STMT@[48; 62) 48 EXPR_STMT@[48; 62)
49 BIN_EXPR@[48; 61) 49 BIN_EXPR@[48; 61)
50 CAST_EXPR@[48; 57) 50 CAST_EXPR@[48; 57)
51 LITERAL@[48; 50) 51 LITERAL@[48; 50)
52 INT_NUMBER@[48; 50) "79" 52 INT_NUMBER@[48; 50) "79"
53 WHITESPACE@[50; 51) 53 WHITESPACE@[50; 51) " "
54 AS_KW@[51; 53) 54 AS_KW@[51; 53) "as"
55 WHITESPACE@[53; 54) 55 WHITESPACE@[53; 54) " "
56 PATH_TYPE@[54; 57) 56 PATH_TYPE@[54; 57)
57 PATH@[54; 57) 57 PATH@[54; 57)
58 PATH_SEGMENT@[54; 57) 58 PATH_SEGMENT@[54; 57)
59 NAME_REF@[54; 57) 59 NAME_REF@[54; 57)
60 IDENT@[54; 57) "i16" 60 IDENT@[54; 57) "i16"
61 WHITESPACE@[57; 58) 61 WHITESPACE@[57; 58) " "
62 MINUS@[58; 59) 62 MINUS@[58; 59) "-"
63 WHITESPACE@[59; 60) 63 WHITESPACE@[59; 60) " "
64 LITERAL@[60; 61) 64 LITERAL@[60; 61)
65 INT_NUMBER@[60; 61) "1" 65 INT_NUMBER@[60; 61) "1"
66 SEMI@[61; 62) 66 SEMI@[61; 62) ";"
67 WHITESPACE@[62; 63) 67 WHITESPACE@[62; 67) "\n "
68 R_CURLY@[63; 64) 68 EXPR_STMT@[67; 86)
69 WHITESPACE@[64; 65) 69 BIN_EXPR@[67; 85)
70 CAST_EXPR@[67; 77)
71 LITERAL@[67; 71)
72 INT_NUMBER@[67; 71) "0x36"
73 WHITESPACE@[71; 72) " "
74 AS_KW@[72; 74) "as"
75 WHITESPACE@[74; 75) " "
76 PATH_TYPE@[75; 77)
77 PATH@[75; 77)
78 PATH_SEGMENT@[75; 77)
79 NAME_REF@[75; 77)
80 IDENT@[75; 77) "u8"
81 WHITESPACE@[77; 78) " "
82 LTEQ@[78; 80) "<="
83 WHITESPACE@[80; 81) " "
84 LITERAL@[81; 85)
85 INT_NUMBER@[81; 85) "0x37"
86 SEMI@[85; 86) ";"
87 WHITESPACE@[86; 87) "\n"
88 R_CURLY@[87; 88) "}"
89 WHITESPACE@[88; 89) "\n"
diff --git a/crates/ra_syntax/tests/data/parser/inline/ok/0030_cond.txt b/crates/ra_syntax/tests/data/parser/inline/ok/0030_cond.txt
index 6dea1848b..1c9414b21 100644
--- a/crates/ra_syntax/tests/data/parser/inline/ok/0030_cond.txt
+++ b/crates/ra_syntax/tests/data/parser/inline/ok/0030_cond.txt
@@ -1,200 +1,200 @@
1SOURCE_FILE@[0; 197) 1SOURCE_FILE@[0; 197)
2 FN_DEF@[0; 37) 2 FN_DEF@[0; 37)
3 FN_KW@[0; 2) 3 FN_KW@[0; 2) "fn"
4 WHITESPACE@[2; 3) 4 WHITESPACE@[2; 3) " "
5 NAME@[3; 6) 5 NAME@[3; 6)
6 IDENT@[3; 6) "foo" 6 IDENT@[3; 6) "foo"
7 PARAM_LIST@[6; 8) 7 PARAM_LIST@[6; 8)
8 L_PAREN@[6; 7) 8 L_PAREN@[6; 7) "("
9 R_PAREN@[7; 8) 9 R_PAREN@[7; 8) ")"
10 WHITESPACE@[8; 9) 10 WHITESPACE@[8; 9) " "
11 BLOCK@[9; 37) 11 BLOCK@[9; 37)
12 L_CURLY@[9; 10) 12 L_CURLY@[9; 10) "{"
13 WHITESPACE@[10; 11) 13 WHITESPACE@[10; 11) " "
14 IF_EXPR@[11; 35) 14 IF_EXPR@[11; 35)
15 IF_KW@[11; 13) 15 IF_KW@[11; 13) "if"
16 WHITESPACE@[13; 14) 16 WHITESPACE@[13; 14) " "
17 CONDITION@[14; 32) 17 CONDITION@[14; 32)
18 LET_KW@[14; 17) 18 LET_KW@[14; 17) "let"
19 WHITESPACE@[17; 18) 19 WHITESPACE@[17; 18) " "
20 TUPLE_STRUCT_PAT@[18; 25) 20 TUPLE_STRUCT_PAT@[18; 25)
21 PATH@[18; 22) 21 PATH@[18; 22)
22 PATH_SEGMENT@[18; 22) 22 PATH_SEGMENT@[18; 22)
23 NAME_REF@[18; 22) 23 NAME_REF@[18; 22)
24 IDENT@[18; 22) "Some" 24 IDENT@[18; 22) "Some"
25 L_PAREN@[22; 23) 25 L_PAREN@[22; 23) "("
26 PLACEHOLDER_PAT@[23; 24) 26 PLACEHOLDER_PAT@[23; 24)
27 UNDERSCORE@[23; 24) 27 UNDERSCORE@[23; 24) "_"
28 R_PAREN@[24; 25) 28 R_PAREN@[24; 25) ")"
29 WHITESPACE@[25; 26) 29 WHITESPACE@[25; 26) " "
30 EQ@[26; 27) 30 EQ@[26; 27) "="
31 WHITESPACE@[27; 28) 31 WHITESPACE@[27; 28) " "
32 PATH_EXPR@[28; 32) 32 PATH_EXPR@[28; 32)
33 PATH@[28; 32) 33 PATH@[28; 32)
34 PATH_SEGMENT@[28; 32) 34 PATH_SEGMENT@[28; 32)
35 NAME_REF@[28; 32) 35 NAME_REF@[28; 32)
36 IDENT@[28; 32) "None" 36 IDENT@[28; 32) "None"
37 WHITESPACE@[32; 33) 37 WHITESPACE@[32; 33) " "
38 BLOCK@[33; 35) 38 BLOCK@[33; 35)
39 L_CURLY@[33; 34) 39 L_CURLY@[33; 34) "{"
40 R_CURLY@[34; 35) 40 R_CURLY@[34; 35) "}"
41 WHITESPACE@[35; 36) 41 WHITESPACE@[35; 36) " "
42 R_CURLY@[36; 37) 42 R_CURLY@[36; 37) "}"
43 WHITESPACE@[37; 38) 43 WHITESPACE@[37; 38) "\n"
44 FN_DEF@[38; 196) 44 FN_DEF@[38; 196)
45 FN_KW@[38; 40) 45 FN_KW@[38; 40) "fn"
46 WHITESPACE@[40; 41) 46 WHITESPACE@[40; 41) " "
47 NAME@[41; 44) 47 NAME@[41; 44)
48 IDENT@[41; 44) "bar" 48 IDENT@[41; 44) "bar"
49 PARAM_LIST@[44; 46) 49 PARAM_LIST@[44; 46)
50 L_PAREN@[44; 45) 50 L_PAREN@[44; 45) "("
51 R_PAREN@[45; 46) 51 R_PAREN@[45; 46) ")"
52 WHITESPACE@[46; 47) 52 WHITESPACE@[46; 47) " "
53 BLOCK@[47; 196) 53 BLOCK@[47; 196)
54 L_CURLY@[47; 48) 54 L_CURLY@[47; 48) "{"
55 WHITESPACE@[48; 53) 55 WHITESPACE@[48; 53) "\n "
56 EXPR_STMT@[53; 87) 56 EXPR_STMT@[53; 87)
57 IF_EXPR@[53; 87) 57 IF_EXPR@[53; 87)
58 IF_KW@[53; 55) 58 IF_KW@[53; 55) "if"
59 WHITESPACE@[55; 56) 59 WHITESPACE@[55; 56) " "
60 CONDITION@[56; 84) 60 CONDITION@[56; 84)
61 LET_KW@[56; 59) 61 LET_KW@[56; 59) "let"
62 WHITESPACE@[59; 60) 62 WHITESPACE@[59; 60) " "
63 TUPLE_STRUCT_PAT@[60; 67) 63 TUPLE_STRUCT_PAT@[60; 67)
64 PATH@[60; 64) 64 PATH@[60; 64)
65 PATH_SEGMENT@[60; 64) 65 PATH_SEGMENT@[60; 64)
66 NAME_REF@[60; 64) 66 NAME_REF@[60; 64)
67 IDENT@[60; 64) "Some" 67 IDENT@[60; 64) "Some"
68 L_PAREN@[64; 65) 68 L_PAREN@[64; 65) "("
69 PLACEHOLDER_PAT@[65; 66) 69 PLACEHOLDER_PAT@[65; 66)
70 UNDERSCORE@[65; 66) 70 UNDERSCORE@[65; 66) "_"
71 R_PAREN@[66; 67) 71 R_PAREN@[66; 67) ")"
72 WHITESPACE@[67; 68) 72 WHITESPACE@[67; 68) " "
73 PIPE@[68; 69) 73 PIPE@[68; 69) "|"
74 WHITESPACE@[69; 70) 74 WHITESPACE@[69; 70) " "
75 TUPLE_STRUCT_PAT@[70; 77) 75 TUPLE_STRUCT_PAT@[70; 77)
76 PATH@[70; 74) 76 PATH@[70; 74)
77 PATH_SEGMENT@[70; 74) 77 PATH_SEGMENT@[70; 74)
78 NAME_REF@[70; 74) 78 NAME_REF@[70; 74)
79 IDENT@[70; 74) "Some" 79 IDENT@[70; 74) "Some"
80 L_PAREN@[74; 75) 80 L_PAREN@[74; 75) "("
81 PLACEHOLDER_PAT@[75; 76) 81 PLACEHOLDER_PAT@[75; 76)
82 UNDERSCORE@[75; 76) 82 UNDERSCORE@[75; 76) "_"
83 R_PAREN@[76; 77) 83 R_PAREN@[76; 77) ")"
84 WHITESPACE@[77; 78) 84 WHITESPACE@[77; 78) " "
85 EQ@[78; 79) 85 EQ@[78; 79) "="
86 WHITESPACE@[79; 80) 86 WHITESPACE@[79; 80) " "
87 PATH_EXPR@[80; 84) 87 PATH_EXPR@[80; 84)
88 PATH@[80; 84) 88 PATH@[80; 84)
89 PATH_SEGMENT@[80; 84) 89 PATH_SEGMENT@[80; 84)
90 NAME_REF@[80; 84) 90 NAME_REF@[80; 84)
91 IDENT@[80; 84) "None" 91 IDENT@[80; 84) "None"
92 WHITESPACE@[84; 85) 92 WHITESPACE@[84; 85) " "
93 BLOCK@[85; 87) 93 BLOCK@[85; 87)
94 L_CURLY@[85; 86) 94 L_CURLY@[85; 86) "{"
95 R_CURLY@[86; 87) 95 R_CURLY@[86; 87) "}"
96 WHITESPACE@[87; 92) 96 WHITESPACE@[87; 92) "\n "
97 EXPR_STMT@[92; 118) 97 EXPR_STMT@[92; 118)
98 IF_EXPR@[92; 118) 98 IF_EXPR@[92; 118)
99 IF_KW@[92; 94) 99 IF_KW@[92; 94) "if"
100 WHITESPACE@[94; 95) 100 WHITESPACE@[94; 95) " "
101 CONDITION@[95; 115) 101 CONDITION@[95; 115)
102 LET_KW@[95; 98) 102 LET_KW@[95; 98) "let"
103 WHITESPACE@[98; 99) 103 WHITESPACE@[98; 99) " "
104 PIPE@[99; 100) 104 PIPE@[99; 100) "|"
105 WHITESPACE@[100; 101) 105 WHITESPACE@[100; 101) " "
106 TUPLE_STRUCT_PAT@[101; 108) 106 TUPLE_STRUCT_PAT@[101; 108)
107 PATH@[101; 105) 107 PATH@[101; 105)
108 PATH_SEGMENT@[101; 105) 108 PATH_SEGMENT@[101; 105)
109 NAME_REF@[101; 105) 109 NAME_REF@[101; 105)
110 IDENT@[101; 105) "Some" 110 IDENT@[101; 105) "Some"
111 L_PAREN@[105; 106) 111 L_PAREN@[105; 106) "("
112 PLACEHOLDER_PAT@[106; 107) 112 PLACEHOLDER_PAT@[106; 107)
113 UNDERSCORE@[106; 107) 113 UNDERSCORE@[106; 107) "_"
114 R_PAREN@[107; 108) 114 R_PAREN@[107; 108) ")"
115 WHITESPACE@[108; 109) 115 WHITESPACE@[108; 109) " "
116 EQ@[109; 110) 116 EQ@[109; 110) "="
117 WHITESPACE@[110; 111) 117 WHITESPACE@[110; 111) " "
118 PATH_EXPR@[111; 115) 118 PATH_EXPR@[111; 115)
119 PATH@[111; 115) 119 PATH@[111; 115)
120 PATH_SEGMENT@[111; 115) 120 PATH_SEGMENT@[111; 115)
121 NAME_REF@[111; 115) 121 NAME_REF@[111; 115)
122 IDENT@[111; 115) "None" 122 IDENT@[111; 115) "None"
123 WHITESPACE@[115; 116) 123 WHITESPACE@[115; 116) " "
124 BLOCK@[116; 118) 124 BLOCK@[116; 118)
125 L_CURLY@[116; 117) 125 L_CURLY@[116; 117) "{"
126 R_CURLY@[117; 118) 126 R_CURLY@[117; 118) "}"
127 WHITESPACE@[118; 123) 127 WHITESPACE@[118; 123) "\n "
128 EXPR_STMT@[123; 160) 128 EXPR_STMT@[123; 160)
129 WHILE_EXPR@[123; 160) 129 WHILE_EXPR@[123; 160)
130 WHILE_KW@[123; 128) 130 WHILE_KW@[123; 128) "while"
131 WHITESPACE@[128; 129) 131 WHITESPACE@[128; 129) " "
132 CONDITION@[129; 157) 132 CONDITION@[129; 157)
133 LET_KW@[129; 132) 133 LET_KW@[129; 132) "let"
134 WHITESPACE@[132; 133) 134 WHITESPACE@[132; 133) " "
135 TUPLE_STRUCT_PAT@[133; 140) 135 TUPLE_STRUCT_PAT@[133; 140)
136 PATH@[133; 137) 136 PATH@[133; 137)
137 PATH_SEGMENT@[133; 137) 137 PATH_SEGMENT@[133; 137)
138 NAME_REF@[133; 137) 138 NAME_REF@[133; 137)
139 IDENT@[133; 137) "Some" 139 IDENT@[133; 137) "Some"
140 L_PAREN@[137; 138) 140 L_PAREN@[137; 138) "("
141 PLACEHOLDER_PAT@[138; 139) 141 PLACEHOLDER_PAT@[138; 139)
142 UNDERSCORE@[138; 139) 142 UNDERSCORE@[138; 139) "_"
143 R_PAREN@[139; 140) 143 R_PAREN@[139; 140) ")"
144 WHITESPACE@[140; 141) 144 WHITESPACE@[140; 141) " "
145 PIPE@[141; 142) 145 PIPE@[141; 142) "|"
146 WHITESPACE@[142; 143) 146 WHITESPACE@[142; 143) " "
147 TUPLE_STRUCT_PAT@[143; 150) 147 TUPLE_STRUCT_PAT@[143; 150)
148 PATH@[143; 147) 148 PATH@[143; 147)
149 PATH_SEGMENT@[143; 147) 149 PATH_SEGMENT@[143; 147)
150 NAME_REF@[143; 147) 150 NAME_REF@[143; 147)
151 IDENT@[143; 147) "Some" 151 IDENT@[143; 147) "Some"
152 L_PAREN@[147; 148) 152 L_PAREN@[147; 148) "("
153 PLACEHOLDER_PAT@[148; 149) 153 PLACEHOLDER_PAT@[148; 149)
154 UNDERSCORE@[148; 149) 154 UNDERSCORE@[148; 149) "_"
155 R_PAREN@[149; 150) 155 R_PAREN@[149; 150) ")"
156 WHITESPACE@[150; 151) 156 WHITESPACE@[150; 151) " "
157 EQ@[151; 152) 157 EQ@[151; 152) "="
158 WHITESPACE@[152; 153) 158 WHITESPACE@[152; 153) " "
159 PATH_EXPR@[153; 157) 159 PATH_EXPR@[153; 157)
160 PATH@[153; 157) 160 PATH@[153; 157)
161 PATH_SEGMENT@[153; 157) 161 PATH_SEGMENT@[153; 157)
162 NAME_REF@[153; 157) 162 NAME_REF@[153; 157)
163 IDENT@[153; 157) "None" 163 IDENT@[153; 157) "None"
164 WHITESPACE@[157; 158) 164 WHITESPACE@[157; 158) " "
165 BLOCK@[158; 160) 165 BLOCK@[158; 160)
166 L_CURLY@[158; 159) 166 L_CURLY@[158; 159) "{"
167 R_CURLY@[159; 160) 167 R_CURLY@[159; 160) "}"
168 WHITESPACE@[160; 165) 168 WHITESPACE@[160; 165) "\n "
169 WHILE_EXPR@[165; 194) 169 WHILE_EXPR@[165; 194)
170 WHILE_KW@[165; 170) 170 WHILE_KW@[165; 170) "while"
171 WHITESPACE@[170; 171) 171 WHITESPACE@[170; 171) " "
172 CONDITION@[171; 191) 172 CONDITION@[171; 191)
173 LET_KW@[171; 174) 173 LET_KW@[171; 174) "let"
174 WHITESPACE@[174; 175) 174 WHITESPACE@[174; 175) " "
175 PIPE@[175; 176) 175 PIPE@[175; 176) "|"
176 WHITESPACE@[176; 177) 176 WHITESPACE@[176; 177) " "
177 TUPLE_STRUCT_PAT@[177; 184) 177 TUPLE_STRUCT_PAT@[177; 184)
178 PATH@[177; 181) 178 PATH@[177; 181)
179 PATH_SEGMENT@[177; 181) 179 PATH_SEGMENT@[177; 181)
180 NAME_REF@[177; 181) 180 NAME_REF@[177; 181)
181 IDENT@[177; 181) "Some" 181 IDENT@[177; 181) "Some"
182 L_PAREN@[181; 182) 182 L_PAREN@[181; 182) "("
183 PLACEHOLDER_PAT@[182; 183) 183 PLACEHOLDER_PAT@[182; 183)
184 UNDERSCORE@[182; 183) 184 UNDERSCORE@[182; 183) "_"
185 R_PAREN@[183; 184) 185 R_PAREN@[183; 184) ")"
186 WHITESPACE@[184; 185) 186 WHITESPACE@[184; 185) " "
187 EQ@[185; 186) 187 EQ@[185; 186) "="
188 WHITESPACE@[186; 187) 188 WHITESPACE@[186; 187) " "
189 PATH_EXPR@[187; 191) 189 PATH_EXPR@[187; 191)
190 PATH@[187; 191) 190 PATH@[187; 191)
191 PATH_SEGMENT@[187; 191) 191 PATH_SEGMENT@[187; 191)
192 NAME_REF@[187; 191) 192 NAME_REF@[187; 191)
193 IDENT@[187; 191) "None" 193 IDENT@[187; 191) "None"
194 WHITESPACE@[191; 192) 194 WHITESPACE@[191; 192) " "
195 BLOCK@[192; 194) 195 BLOCK@[192; 194)
196 L_CURLY@[192; 193) 196 L_CURLY@[192; 193) "{"
197 R_CURLY@[193; 194) 197 R_CURLY@[193; 194) "}"
198 WHITESPACE@[194; 195) 198 WHITESPACE@[194; 195) "\n"
199 R_CURLY@[195; 196) 199 R_CURLY@[195; 196) "}"
200 WHITESPACE@[196; 197) 200 WHITESPACE@[196; 197) "\n"
diff --git a/crates/ra_syntax/tests/data/parser/inline/ok/0031_while_expr.txt b/crates/ra_syntax/tests/data/parser/inline/ok/0031_while_expr.txt
index f9b074e82..a772117a1 100644
--- a/crates/ra_syntax/tests/data/parser/inline/ok/0031_while_expr.txt
+++ b/crates/ra_syntax/tests/data/parser/inline/ok/0031_while_expr.txt
@@ -1,66 +1,66 @@
1SOURCE_FILE@[0; 70) 1SOURCE_FILE@[0; 70)
2 FN_DEF@[0; 69) 2 FN_DEF@[0; 69)
3 FN_KW@[0; 2) 3 FN_KW@[0; 2) "fn"
4 WHITESPACE@[2; 3) 4 WHITESPACE@[2; 3) " "
5 NAME@[3; 6) 5 NAME@[3; 6)
6 IDENT@[3; 6) "foo" 6 IDENT@[3; 6) "foo"
7 PARAM_LIST@[6; 8) 7 PARAM_LIST@[6; 8)
8 L_PAREN@[6; 7) 8 L_PAREN@[6; 7) "("
9 R_PAREN@[7; 8) 9 R_PAREN@[7; 8) ")"
10 WHITESPACE@[8; 9) 10 WHITESPACE@[8; 9) " "
11 BLOCK@[9; 69) 11 BLOCK@[9; 69)
12 L_CURLY@[9; 10) 12 L_CURLY@[9; 10) "{"
13 WHITESPACE@[10; 15) 13 WHITESPACE@[10; 15) "\n "
14 EXPR_STMT@[15; 29) 14 EXPR_STMT@[15; 29)
15 WHILE_EXPR@[15; 28) 15 WHILE_EXPR@[15; 28)
16 WHILE_KW@[15; 20) 16 WHILE_KW@[15; 20) "while"
17 WHITESPACE@[20; 21) 17 WHITESPACE@[20; 21) " "
18 CONDITION@[21; 25) 18 CONDITION@[21; 25)
19 LITERAL@[21; 25) 19 LITERAL@[21; 25)
20 TRUE_KW@[21; 25) 20 TRUE_KW@[21; 25) "true"
21 WHITESPACE@[25; 26) 21 WHITESPACE@[25; 26) " "
22 BLOCK@[26; 28) 22 BLOCK@[26; 28)
23 L_CURLY@[26; 27) 23 L_CURLY@[26; 27) "{"
24 R_CURLY@[27; 28) 24 R_CURLY@[27; 28) "}"
25 SEMI@[28; 29) 25 SEMI@[28; 29) ";"
26 WHITESPACE@[29; 34) 26 WHITESPACE@[29; 34) "\n "
27 EXPR_STMT@[34; 67) 27 EXPR_STMT@[34; 67)
28 WHILE_EXPR@[34; 66) 28 WHILE_EXPR@[34; 66)
29 WHILE_KW@[34; 39) 29 WHILE_KW@[34; 39) "while"
30 WHITESPACE@[39; 40) 30 WHITESPACE@[39; 40) " "
31 CONDITION@[40; 63) 31 CONDITION@[40; 63)
32 LET_KW@[40; 43) 32 LET_KW@[40; 43) "let"
33 WHITESPACE@[43; 44) 33 WHITESPACE@[43; 44) " "
34 TUPLE_STRUCT_PAT@[44; 51) 34 TUPLE_STRUCT_PAT@[44; 51)
35 PATH@[44; 48) 35 PATH@[44; 48)
36 PATH_SEGMENT@[44; 48) 36 PATH_SEGMENT@[44; 48)
37 NAME_REF@[44; 48) 37 NAME_REF@[44; 48)
38 IDENT@[44; 48) "Some" 38 IDENT@[44; 48) "Some"
39 L_PAREN@[48; 49) 39 L_PAREN@[48; 49) "("
40 BIND_PAT@[49; 50) 40 BIND_PAT@[49; 50)
41 NAME@[49; 50) 41 NAME@[49; 50)
42 IDENT@[49; 50) "x" 42 IDENT@[49; 50) "x"
43 R_PAREN@[50; 51) 43 R_PAREN@[50; 51) ")"
44 WHITESPACE@[51; 52) 44 WHITESPACE@[51; 52) " "
45 EQ@[52; 53) 45 EQ@[52; 53) "="
46 WHITESPACE@[53; 54) 46 WHITESPACE@[53; 54) " "
47 METHOD_CALL_EXPR@[54; 63) 47 METHOD_CALL_EXPR@[54; 63)
48 PATH_EXPR@[54; 56) 48 PATH_EXPR@[54; 56)
49 PATH@[54; 56) 49 PATH@[54; 56)
50 PATH_SEGMENT@[54; 56) 50 PATH_SEGMENT@[54; 56)
51 NAME_REF@[54; 56) 51 NAME_REF@[54; 56)
52 IDENT@[54; 56) "it" 52 IDENT@[54; 56) "it"
53 DOT@[56; 57) 53 DOT@[56; 57) "."
54 NAME_REF@[57; 61) 54 NAME_REF@[57; 61)
55 IDENT@[57; 61) "next" 55 IDENT@[57; 61) "next"
56 ARG_LIST@[61; 63) 56 ARG_LIST@[61; 63)
57 L_PAREN@[61; 62) 57 L_PAREN@[61; 62) "("
58 R_PAREN@[62; 63) 58 R_PAREN@[62; 63) ")"
59 WHITESPACE@[63; 64) 59 WHITESPACE@[63; 64) " "
60 BLOCK@[64; 66) 60 BLOCK@[64; 66)
61 L_CURLY@[64; 65) 61 L_CURLY@[64; 65) "{"
62 R_CURLY@[65; 66) 62 R_CURLY@[65; 66) "}"
63 SEMI@[66; 67) 63 SEMI@[66; 67) ";"
64 WHITESPACE@[67; 68) 64 WHITESPACE@[67; 68) "\n"
65 R_CURLY@[68; 69) 65 R_CURLY@[68; 69) "}"
66 WHITESPACE@[69; 70) 66 WHITESPACE@[69; 70) "\n"
diff --git a/crates/ra_syntax/tests/data/parser/inline/ok/0032_fn_pointer_type.txt b/crates/ra_syntax/tests/data/parser/inline/ok/0032_fn_pointer_type.txt
index d0aa429fd..89cf543e7 100644
--- a/crates/ra_syntax/tests/data/parser/inline/ok/0032_fn_pointer_type.txt
+++ b/crates/ra_syntax/tests/data/parser/inline/ok/0032_fn_pointer_type.txt
@@ -1,55 +1,55 @@
1SOURCE_FILE@[0; 70) 1SOURCE_FILE@[0; 70)
2 TYPE_ALIAS_DEF@[0; 14) 2 TYPE_ALIAS_DEF@[0; 14)
3 TYPE_KW@[0; 4) 3 TYPE_KW@[0; 4) "type"
4 WHITESPACE@[4; 5) 4 WHITESPACE@[4; 5) " "
5 NAME@[5; 6) 5 NAME@[5; 6)
6 IDENT@[5; 6) "A" 6 IDENT@[5; 6) "A"
7 WHITESPACE@[6; 7) 7 WHITESPACE@[6; 7) " "
8 EQ@[7; 8) 8 EQ@[7; 8) "="
9 WHITESPACE@[8; 9) 9 WHITESPACE@[8; 9) " "
10 FN_POINTER_TYPE@[9; 13) 10 FN_POINTER_TYPE@[9; 13)
11 FN_KW@[9; 11) 11 FN_KW@[9; 11) "fn"
12 PARAM_LIST@[11; 13) 12 PARAM_LIST@[11; 13)
13 L_PAREN@[11; 12) 13 L_PAREN@[11; 12) "("
14 R_PAREN@[12; 13) 14 R_PAREN@[12; 13) ")"
15 SEMI@[13; 14) 15 SEMI@[13; 14) ";"
16 WHITESPACE@[14; 15) 16 WHITESPACE@[14; 15) "\n"
17 TYPE_ALIAS_DEF@[15; 36) 17 TYPE_ALIAS_DEF@[15; 36)
18 TYPE_KW@[15; 19) 18 TYPE_KW@[15; 19) "type"
19 WHITESPACE@[19; 20) 19 WHITESPACE@[19; 20) " "
20 NAME@[20; 21) 20 NAME@[20; 21)
21 IDENT@[20; 21) "B" 21 IDENT@[20; 21) "B"
22 WHITESPACE@[21; 22) 22 WHITESPACE@[21; 22) " "
23 EQ@[22; 23) 23 EQ@[22; 23) "="
24 WHITESPACE@[23; 24) 24 WHITESPACE@[23; 24) " "
25 FN_POINTER_TYPE@[24; 35) 25 FN_POINTER_TYPE@[24; 35)
26 UNSAFE_KW@[24; 30) 26 UNSAFE_KW@[24; 30) "unsafe"
27 WHITESPACE@[30; 31) 27 WHITESPACE@[30; 31) " "
28 FN_KW@[31; 33) 28 FN_KW@[31; 33) "fn"
29 PARAM_LIST@[33; 35) 29 PARAM_LIST@[33; 35)
30 L_PAREN@[33; 34) 30 L_PAREN@[33; 34) "("
31 R_PAREN@[34; 35) 31 R_PAREN@[34; 35) ")"
32 SEMI@[35; 36) 32 SEMI@[35; 36) ";"
33 WHITESPACE@[36; 37) 33 WHITESPACE@[36; 37) "\n"
34 TYPE_ALIAS_DEF@[37; 69) 34 TYPE_ALIAS_DEF@[37; 69)
35 TYPE_KW@[37; 41) 35 TYPE_KW@[37; 41) "type"
36 WHITESPACE@[41; 42) 36 WHITESPACE@[41; 42) " "
37 NAME@[42; 43) 37 NAME@[42; 43)
38 IDENT@[42; 43) "C" 38 IDENT@[42; 43) "C"
39 WHITESPACE@[43; 44) 39 WHITESPACE@[43; 44) " "
40 EQ@[44; 45) 40 EQ@[44; 45) "="
41 WHITESPACE@[45; 46) 41 WHITESPACE@[45; 46) " "
42 FN_POINTER_TYPE@[46; 68) 42 FN_POINTER_TYPE@[46; 68)
43 UNSAFE_KW@[46; 52) 43 UNSAFE_KW@[46; 52) "unsafe"
44 WHITESPACE@[52; 53) 44 WHITESPACE@[52; 53) " "
45 ABI@[53; 63) 45 ABI@[53; 63)
46 EXTERN_KW@[53; 59) 46 EXTERN_KW@[53; 59) "extern"
47 WHITESPACE@[59; 60) 47 WHITESPACE@[59; 60) " "
48 STRING@[60; 63) 48 STRING@[60; 63) "\"C\""
49 WHITESPACE@[63; 64) 49 WHITESPACE@[63; 64) " "
50 FN_KW@[64; 66) 50 FN_KW@[64; 66) "fn"
51 PARAM_LIST@[66; 68) 51 PARAM_LIST@[66; 68)
52 L_PAREN@[66; 67) 52 L_PAREN@[66; 67) "("
53 R_PAREN@[67; 68) 53 R_PAREN@[67; 68) ")"
54 SEMI@[68; 69) 54 SEMI@[68; 69) ";"
55 WHITESPACE@[69; 70) 55 WHITESPACE@[69; 70) "\n"
diff --git a/crates/ra_syntax/tests/data/parser/inline/ok/0033_reference_type;.txt b/crates/ra_syntax/tests/data/parser/inline/ok/0033_reference_type;.txt
index c015dddeb..7642ea659 100644
--- a/crates/ra_syntax/tests/data/parser/inline/ok/0033_reference_type;.txt
+++ b/crates/ra_syntax/tests/data/parser/inline/ok/0033_reference_type;.txt
@@ -1,50 +1,50 @@
1SOURCE_FILE@[0; 54) 1SOURCE_FILE@[0; 54)
2 TYPE_ALIAS_DEF@[0; 13) 2 TYPE_ALIAS_DEF@[0; 13)
3 TYPE_KW@[0; 4) 3 TYPE_KW@[0; 4) "type"
4 WHITESPACE@[4; 5) 4 WHITESPACE@[4; 5) " "
5 NAME@[5; 6) 5 NAME@[5; 6)
6 IDENT@[5; 6) "A" 6 IDENT@[5; 6) "A"
7 WHITESPACE@[6; 7) 7 WHITESPACE@[6; 7) " "
8 EQ@[7; 8) 8 EQ@[7; 8) "="
9 WHITESPACE@[8; 9) 9 WHITESPACE@[8; 9) " "
10 REFERENCE_TYPE@[9; 12) 10 REFERENCE_TYPE@[9; 12)
11 AMP@[9; 10) 11 AMP@[9; 10) "&"
12 TUPLE_TYPE@[10; 12) 12 TUPLE_TYPE@[10; 12)
13 L_PAREN@[10; 11) 13 L_PAREN@[10; 11) "("
14 R_PAREN@[11; 12) 14 R_PAREN@[11; 12) ")"
15 SEMI@[12; 13) 15 SEMI@[12; 13) ";"
16 WHITESPACE@[13; 14) 16 WHITESPACE@[13; 14) "\n"
17 TYPE_ALIAS_DEF@[14; 35) 17 TYPE_ALIAS_DEF@[14; 35)
18 TYPE_KW@[14; 18) 18 TYPE_KW@[14; 18) "type"
19 WHITESPACE@[18; 19) 19 WHITESPACE@[18; 19) " "
20 NAME@[19; 20) 20 NAME@[19; 20)
21 IDENT@[19; 20) "B" 21 IDENT@[19; 20) "B"
22 WHITESPACE@[20; 21) 22 WHITESPACE@[20; 21) " "
23 EQ@[21; 22) 23 EQ@[21; 22) "="
24 WHITESPACE@[22; 23) 24 WHITESPACE@[22; 23) " "
25 REFERENCE_TYPE@[23; 34) 25 REFERENCE_TYPE@[23; 34)
26 AMP@[23; 24) 26 AMP@[23; 24) "&"
27 LIFETIME@[24; 31) "'static" 27 LIFETIME@[24; 31) "\'static"
28 WHITESPACE@[31; 32) 28 WHITESPACE@[31; 32) " "
29 TUPLE_TYPE@[32; 34) 29 TUPLE_TYPE@[32; 34)
30 L_PAREN@[32; 33) 30 L_PAREN@[32; 33) "("
31 R_PAREN@[33; 34) 31 R_PAREN@[33; 34) ")"
32 SEMI@[34; 35) 32 SEMI@[34; 35) ";"
33 WHITESPACE@[35; 36) 33 WHITESPACE@[35; 36) "\n"
34 TYPE_ALIAS_DEF@[36; 53) 34 TYPE_ALIAS_DEF@[36; 53)
35 TYPE_KW@[36; 40) 35 TYPE_KW@[36; 40) "type"
36 WHITESPACE@[40; 41) 36 WHITESPACE@[40; 41) " "
37 NAME@[41; 42) 37 NAME@[41; 42)
38 IDENT@[41; 42) "C" 38 IDENT@[41; 42) "C"
39 WHITESPACE@[42; 43) 39 WHITESPACE@[42; 43) " "
40 EQ@[43; 44) 40 EQ@[43; 44) "="
41 WHITESPACE@[44; 45) 41 WHITESPACE@[44; 45) " "
42 REFERENCE_TYPE@[45; 52) 42 REFERENCE_TYPE@[45; 52)
43 AMP@[45; 46) 43 AMP@[45; 46) "&"
44 MUT_KW@[46; 49) 44 MUT_KW@[46; 49) "mut"
45 WHITESPACE@[49; 50) 45 WHITESPACE@[49; 50) " "
46 TUPLE_TYPE@[50; 52) 46 TUPLE_TYPE@[50; 52)
47 L_PAREN@[50; 51) 47 L_PAREN@[50; 51) "("
48 R_PAREN@[51; 52) 48 R_PAREN@[51; 52) ")"
49 SEMI@[52; 53) 49 SEMI@[52; 53) ";"
50 WHITESPACE@[53; 54) 50 WHITESPACE@[53; 54) "\n"
diff --git a/crates/ra_syntax/tests/data/parser/inline/ok/0034_break_expr.txt b/crates/ra_syntax/tests/data/parser/inline/ok/0034_break_expr.txt
index 1877311e8..4ece7cd7e 100644
--- a/crates/ra_syntax/tests/data/parser/inline/ok/0034_break_expr.txt
+++ b/crates/ra_syntax/tests/data/parser/inline/ok/0034_break_expr.txt
@@ -1,53 +1,53 @@
1SOURCE_FILE@[0; 102) 1SOURCE_FILE@[0; 102)
2 FN_DEF@[0; 101) 2 FN_DEF@[0; 101)
3 FN_KW@[0; 2) 3 FN_KW@[0; 2) "fn"
4 WHITESPACE@[2; 3) 4 WHITESPACE@[2; 3) " "
5 NAME@[3; 6) 5 NAME@[3; 6)
6 IDENT@[3; 6) "foo" 6 IDENT@[3; 6) "foo"
7 PARAM_LIST@[6; 8) 7 PARAM_LIST@[6; 8)
8 L_PAREN@[6; 7) 8 L_PAREN@[6; 7) "("
9 R_PAREN@[7; 8) 9 R_PAREN@[7; 8) ")"
10 WHITESPACE@[8; 9) 10 WHITESPACE@[8; 9) " "
11 BLOCK@[9; 101) 11 BLOCK@[9; 101)
12 L_CURLY@[9; 10) 12 L_CURLY@[9; 10) "{"
13 WHITESPACE@[10; 15) 13 WHITESPACE@[10; 15) "\n "
14 LOOP_EXPR@[15; 99) 14 LOOP_EXPR@[15; 99)
15 LOOP_KW@[15; 19) 15 LOOP_KW@[15; 19) "loop"
16 WHITESPACE@[19; 20) 16 WHITESPACE@[19; 20) " "
17 BLOCK@[20; 99) 17 BLOCK@[20; 99)
18 L_CURLY@[20; 21) 18 L_CURLY@[20; 21) "{"
19 WHITESPACE@[21; 30) 19 WHITESPACE@[21; 30) "\n "
20 EXPR_STMT@[30; 36) 20 EXPR_STMT@[30; 36)
21 BREAK_EXPR@[30; 35) 21 BREAK_EXPR@[30; 35)
22 BREAK_KW@[30; 35) 22 BREAK_KW@[30; 35) "break"
23 SEMI@[35; 36) 23 SEMI@[35; 36) ";"
24 WHITESPACE@[36; 45) 24 WHITESPACE@[36; 45) "\n "
25 EXPR_STMT@[45; 54) 25 EXPR_STMT@[45; 54)
26 BREAK_EXPR@[45; 53) 26 BREAK_EXPR@[45; 53)
27 BREAK_KW@[45; 50) 27 BREAK_KW@[45; 50) "break"
28 WHITESPACE@[50; 51) 28 WHITESPACE@[50; 51) " "
29 LIFETIME@[51; 53) "'l" 29 LIFETIME@[51; 53) "\'l"
30 SEMI@[53; 54) 30 SEMI@[53; 54) ";"
31 WHITESPACE@[54; 63) 31 WHITESPACE@[54; 63) "\n "
32 EXPR_STMT@[63; 72) 32 EXPR_STMT@[63; 72)
33 BREAK_EXPR@[63; 71) 33 BREAK_EXPR@[63; 71)
34 BREAK_KW@[63; 68) 34 BREAK_KW@[63; 68) "break"
35 WHITESPACE@[68; 69) 35 WHITESPACE@[68; 69) " "
36 LITERAL@[69; 71) 36 LITERAL@[69; 71)
37 INT_NUMBER@[69; 71) "92" 37 INT_NUMBER@[69; 71) "92"
38 SEMI@[71; 72) 38 SEMI@[71; 72) ";"
39 WHITESPACE@[72; 81) 39 WHITESPACE@[72; 81) "\n "
40 EXPR_STMT@[81; 93) 40 EXPR_STMT@[81; 93)
41 BREAK_EXPR@[81; 92) 41 BREAK_EXPR@[81; 92)
42 BREAK_KW@[81; 86) 42 BREAK_KW@[81; 86) "break"
43 WHITESPACE@[86; 87) 43 WHITESPACE@[86; 87) " "
44 LIFETIME@[87; 89) "'l" 44 LIFETIME@[87; 89) "\'l"
45 WHITESPACE@[89; 90) 45 WHITESPACE@[89; 90) " "
46 LITERAL@[90; 92) 46 LITERAL@[90; 92)
47 INT_NUMBER@[90; 92) "92" 47 INT_NUMBER@[90; 92) "92"
48 SEMI@[92; 93) 48 SEMI@[92; 93) ";"
49 WHITESPACE@[93; 98) 49 WHITESPACE@[93; 98) "\n "
50 R_CURLY@[98; 99) 50 R_CURLY@[98; 99) "}"
51 WHITESPACE@[99; 100) 51 WHITESPACE@[99; 100) "\n"
52 R_CURLY@[100; 101) 52 R_CURLY@[100; 101) "}"
53 WHITESPACE@[101; 102) 53 WHITESPACE@[101; 102) "\n"
diff --git a/crates/ra_syntax/tests/data/parser/inline/ok/0036_unsafe_extern_fn.txt b/crates/ra_syntax/tests/data/parser/inline/ok/0036_unsafe_extern_fn.txt
index 0cde40595..b5b09b2e5 100644
--- a/crates/ra_syntax/tests/data/parser/inline/ok/0036_unsafe_extern_fn.txt
+++ b/crates/ra_syntax/tests/data/parser/inline/ok/0036_unsafe_extern_fn.txt
@@ -1,21 +1,21 @@
1SOURCE_FILE@[0; 30) 1SOURCE_FILE@[0; 30)
2 FN_DEF@[0; 29) 2 FN_DEF@[0; 29)
3 UNSAFE_KW@[0; 6) 3 UNSAFE_KW@[0; 6) "unsafe"
4 WHITESPACE@[6; 7) 4 WHITESPACE@[6; 7) " "
5 ABI@[7; 17) 5 ABI@[7; 17)
6 EXTERN_KW@[7; 13) 6 EXTERN_KW@[7; 13) "extern"
7 WHITESPACE@[13; 14) 7 WHITESPACE@[13; 14) " "
8 STRING@[14; 17) 8 STRING@[14; 17) "\"C\""
9 WHITESPACE@[17; 18) 9 WHITESPACE@[17; 18) " "
10 FN_KW@[18; 20) 10 FN_KW@[18; 20) "fn"
11 WHITESPACE@[20; 21) 11 WHITESPACE@[20; 21) " "
12 NAME@[21; 24) 12 NAME@[21; 24)
13 IDENT@[21; 24) "foo" 13 IDENT@[21; 24) "foo"
14 PARAM_LIST@[24; 26) 14 PARAM_LIST@[24; 26)
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@[27; 29)
19 L_CURLY@[27; 28) 19 L_CURLY@[27; 28) "{"
20 R_CURLY@[28; 29) 20 R_CURLY@[28; 29) "}"
21 WHITESPACE@[29; 30) 21 WHITESPACE@[29; 30) "\n"
diff --git a/crates/ra_syntax/tests/data/parser/inline/ok/0037_qual_paths.txt b/crates/ra_syntax/tests/data/parser/inline/ok/0037_qual_paths.txt
index fbc548695..9bfddf5d2 100644
--- a/crates/ra_syntax/tests/data/parser/inline/ok/0037_qual_paths.txt
+++ b/crates/ra_syntax/tests/data/parser/inline/ok/0037_qual_paths.txt
@@ -1,78 +1,78 @@
1SOURCE_FILE@[0; 71) 1SOURCE_FILE@[0; 71)
2 TYPE_ALIAS_DEF@[0; 26) 2 TYPE_ALIAS_DEF@[0; 26)
3 TYPE_KW@[0; 4) 3 TYPE_KW@[0; 4) "type"
4 WHITESPACE@[4; 5) 4 WHITESPACE@[4; 5) " "
5 NAME@[5; 6) 5 NAME@[5; 6)
6 IDENT@[5; 6) "X" 6 IDENT@[5; 6) "X"
7 WHITESPACE@[6; 7) 7 WHITESPACE@[6; 7) " "
8 EQ@[7; 8) 8 EQ@[7; 8) "="
9 WHITESPACE@[8; 9) 9 WHITESPACE@[8; 9) " "
10 PATH_TYPE@[9; 25) 10 PATH_TYPE@[9; 25)
11 PATH@[9; 25) 11 PATH@[9; 25)
12 PATH@[9; 17) 12 PATH@[9; 17)
13 PATH_SEGMENT@[9; 17) 13 PATH_SEGMENT@[9; 17)
14 L_ANGLE@[9; 10) 14 L_ANGLE@[9; 10) "<"
15 PATH_TYPE@[10; 11) 15 PATH_TYPE@[10; 11)
16 PATH@[10; 11) 16 PATH@[10; 11)
17 PATH_SEGMENT@[10; 11) 17 PATH_SEGMENT@[10; 11)
18 NAME_REF@[10; 11) 18 NAME_REF@[10; 11)
19 IDENT@[10; 11) "A" 19 IDENT@[10; 11) "A"
20 WHITESPACE@[11; 12) 20 WHITESPACE@[11; 12) " "
21 AS_KW@[12; 14) 21 AS_KW@[12; 14) "as"
22 WHITESPACE@[14; 15) 22 WHITESPACE@[14; 15) " "
23 PATH_TYPE@[15; 16) 23 PATH_TYPE@[15; 16)
24 PATH@[15; 16) 24 PATH@[15; 16)
25 PATH_SEGMENT@[15; 16) 25 PATH_SEGMENT@[15; 16)
26 NAME_REF@[15; 16) 26 NAME_REF@[15; 16)
27 IDENT@[15; 16) "B" 27 IDENT@[15; 16) "B"
28 R_ANGLE@[16; 17) 28 R_ANGLE@[16; 17) ">"
29 COLONCOLON@[17; 19) 29 COLONCOLON@[17; 19) "::"
30 PATH_SEGMENT@[19; 25) 30 PATH_SEGMENT@[19; 25)
31 NAME_REF@[19; 25) 31 NAME_REF@[19; 25)
32 IDENT@[19; 25) "Output" 32 IDENT@[19; 25) "Output"
33 SEMI@[25; 26) 33 SEMI@[25; 26) ";"
34 WHITESPACE@[26; 27) 34 WHITESPACE@[26; 27) "\n"
35 FN_DEF@[27; 70) 35 FN_DEF@[27; 70)
36 FN_KW@[27; 29) 36 FN_KW@[27; 29) "fn"
37 WHITESPACE@[29; 30) 37 WHITESPACE@[29; 30) " "
38 NAME@[30; 33) 38 NAME@[30; 33)
39 IDENT@[30; 33) "foo" 39 IDENT@[30; 33) "foo"
40 PARAM_LIST@[33; 35) 40 PARAM_LIST@[33; 35)
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@[36; 70)
45 L_CURLY@[36; 37) 45 L_CURLY@[36; 37) "{"
46 WHITESPACE@[37; 38) 46 WHITESPACE@[37; 38) " "
47 EXPR_STMT@[38; 68) 47 EXPR_STMT@[38; 68)
48 CALL_EXPR@[38; 67) 48 CALL_EXPR@[38; 67)
49 PATH_EXPR@[38; 65) 49 PATH_EXPR@[38; 65)
50 PATH@[38; 65) 50 PATH@[38; 65)
51 PATH@[38; 56) 51 PATH@[38; 56)
52 PATH_SEGMENT@[38; 56) 52 PATH_SEGMENT@[38; 56)
53 L_ANGLE@[38; 39) 53 L_ANGLE@[38; 39) "<"
54 PATH_TYPE@[39; 44) 54 PATH_TYPE@[39; 44)
55 PATH@[39; 44) 55 PATH@[39; 44)
56 PATH_SEGMENT@[39; 44) 56 PATH_SEGMENT@[39; 44)
57 NAME_REF@[39; 44) 57 NAME_REF@[39; 44)
58 IDENT@[39; 44) "usize" 58 IDENT@[39; 44) "usize"
59 WHITESPACE@[44; 45) 59 WHITESPACE@[44; 45) " "
60 AS_KW@[45; 47) 60 AS_KW@[45; 47) "as"
61 WHITESPACE@[47; 48) 61 WHITESPACE@[47; 48) " "
62 PATH_TYPE@[48; 55) 62 PATH_TYPE@[48; 55)
63 PATH@[48; 55) 63 PATH@[48; 55)
64 PATH_SEGMENT@[48; 55) 64 PATH_SEGMENT@[48; 55)
65 NAME_REF@[48; 55) 65 NAME_REF@[48; 55)
66 IDENT@[48; 55) "Default" 66 IDENT@[48; 55) "Default"
67 R_ANGLE@[55; 56) 67 R_ANGLE@[55; 56) ">"
68 COLONCOLON@[56; 58) 68 COLONCOLON@[56; 58) "::"
69 PATH_SEGMENT@[58; 65) 69 PATH_SEGMENT@[58; 65)
70 NAME_REF@[58; 65) 70 NAME_REF@[58; 65)
71 IDENT@[58; 65) "default" 71 IDENT@[58; 65) "default"
72 ARG_LIST@[65; 67) 72 ARG_LIST@[65; 67)
73 L_PAREN@[65; 66) 73 L_PAREN@[65; 66) "("
74 R_PAREN@[66; 67) 74 R_PAREN@[66; 67) ")"
75 SEMI@[67; 68) 75 SEMI@[67; 68) ";"
76 WHITESPACE@[68; 69) 76 WHITESPACE@[68; 69) " "
77 R_CURLY@[69; 70) 77 R_CURLY@[69; 70) "}"
78 WHITESPACE@[70; 71) 78 WHITESPACE@[70; 71) "\n"
diff --git a/crates/ra_syntax/tests/data/parser/inline/ok/0038_full_range_expr.txt b/crates/ra_syntax/tests/data/parser/inline/ok/0038_full_range_expr.txt
index caef145ce..477c645d1 100644
--- a/crates/ra_syntax/tests/data/parser/inline/ok/0038_full_range_expr.txt
+++ b/crates/ra_syntax/tests/data/parser/inline/ok/0038_full_range_expr.txt
@@ -1,16 +1,16 @@
1SOURCE_FILE@[0; 21) 1SOURCE_FILE@[0; 21)
2 FN_DEF@[0; 20) 2 FN_DEF@[0; 20)
3 FN_KW@[0; 2) 3 FN_KW@[0; 2) "fn"
4 WHITESPACE@[2; 3) 4 WHITESPACE@[2; 3) " "
5 NAME@[3; 6) 5 NAME@[3; 6)
6 IDENT@[3; 6) "foo" 6 IDENT@[3; 6) "foo"
7 PARAM_LIST@[6; 8) 7 PARAM_LIST@[6; 8)
8 L_PAREN@[6; 7) 8 L_PAREN@[6; 7) "("
9 R_PAREN@[7; 8) 9 R_PAREN@[7; 8) ")"
10 WHITESPACE@[8; 9) 10 WHITESPACE@[8; 9) " "
11 BLOCK@[9; 20) 11 BLOCK@[9; 20)
12 L_CURLY@[9; 10) 12 L_CURLY@[9; 10) "{"
13 WHITESPACE@[10; 11) 13 WHITESPACE@[10; 11) " "
14 EXPR_STMT@[11; 18) 14 EXPR_STMT@[11; 18)
15 INDEX_EXPR@[11; 17) 15 INDEX_EXPR@[11; 17)
16 PATH_EXPR@[11; 13) 16 PATH_EXPR@[11; 13)
@@ -18,11 +18,11 @@ SOURCE_FILE@[0; 21)
18 PATH_SEGMENT@[11; 13) 18 PATH_SEGMENT@[11; 13)
19 NAME_REF@[11; 13) 19 NAME_REF@[11; 13)
20 IDENT@[11; 13) "xs" 20 IDENT@[11; 13) "xs"
21 L_BRACK@[13; 14) 21 L_BRACK@[13; 14) "["
22 RANGE_EXPR@[14; 16) 22 RANGE_EXPR@[14; 16)
23 DOTDOT@[14; 16) 23 DOTDOT@[14; 16) ".."
24 R_BRACK@[16; 17) 24 R_BRACK@[16; 17) "]"
25 SEMI@[17; 18) 25 SEMI@[17; 18) ";"
26 WHITESPACE@[18; 19) 26 WHITESPACE@[18; 19) " "
27 R_CURLY@[19; 20) 27 R_CURLY@[19; 20) "}"
28 WHITESPACE@[20; 21) 28 WHITESPACE@[20; 21) "\n"
diff --git a/crates/ra_syntax/tests/data/parser/inline/ok/0039_type_arg.txt b/crates/ra_syntax/tests/data/parser/inline/ok/0039_type_arg.txt
index cef13b6aa..4786bf77a 100644
--- a/crates/ra_syntax/tests/data/parser/inline/ok/0039_type_arg.txt
+++ b/crates/ra_syntax/tests/data/parser/inline/ok/0039_type_arg.txt
@@ -1,40 +1,40 @@
1SOURCE_FILE@[0; 36) 1SOURCE_FILE@[0; 36)
2 TYPE_ALIAS_DEF@[0; 35) 2 TYPE_ALIAS_DEF@[0; 35)
3 TYPE_KW@[0; 4) 3 TYPE_KW@[0; 4) "type"
4 WHITESPACE@[4; 5) 4 WHITESPACE@[4; 5) " "
5 NAME@[5; 6) 5 NAME@[5; 6)
6 IDENT@[5; 6) "A" 6 IDENT@[5; 6) "A"
7 WHITESPACE@[6; 7) 7 WHITESPACE@[6; 7) " "
8 EQ@[7; 8) 8 EQ@[7; 8) "="
9 WHITESPACE@[8; 9) 9 WHITESPACE@[8; 9) " "
10 PATH_TYPE@[9; 34) 10 PATH_TYPE@[9; 34)
11 PATH@[9; 34) 11 PATH@[9; 34)
12 PATH_SEGMENT@[9; 34) 12 PATH_SEGMENT@[9; 34)
13 NAME_REF@[9; 10) 13 NAME_REF@[9; 10)
14 IDENT@[9; 10) "B" 14 IDENT@[9; 10) "B"
15 TYPE_ARG_LIST@[10; 34) 15 TYPE_ARG_LIST@[10; 34)
16 L_ANGLE@[10; 11) 16 L_ANGLE@[10; 11) "<"
17 LIFETIME_ARG@[11; 18) 17 LIFETIME_ARG@[11; 18)
18 LIFETIME@[11; 18) "'static" 18 LIFETIME@[11; 18) "\'static"
19 COMMA@[18; 19) 19 COMMA@[18; 19) ","
20 WHITESPACE@[19; 20) 20 WHITESPACE@[19; 20) " "
21 TYPE_ARG@[20; 23) 21 TYPE_ARG@[20; 23)
22 PATH_TYPE@[20; 23) 22 PATH_TYPE@[20; 23)
23 PATH@[20; 23) 23 PATH@[20; 23)
24 PATH_SEGMENT@[20; 23) 24 PATH_SEGMENT@[20; 23)
25 NAME_REF@[20; 23) 25 NAME_REF@[20; 23)
26 IDENT@[20; 23) "i32" 26 IDENT@[20; 23) "i32"
27 COMMA@[23; 24) 27 COMMA@[23; 24) ","
28 WHITESPACE@[24; 25) 28 WHITESPACE@[24; 25) " "
29 ASSOC_TYPE_ARG@[25; 33) 29 ASSOC_TYPE_ARG@[25; 33)
30 NAME_REF@[25; 29) 30 NAME_REF@[25; 29)
31 IDENT@[25; 29) "Item" 31 IDENT@[25; 29) "Item"
32 EQ@[29; 30) 32 EQ@[29; 30) "="
33 PATH_TYPE@[30; 33) 33 PATH_TYPE@[30; 33)
34 PATH@[30; 33) 34 PATH@[30; 33)
35 PATH_SEGMENT@[30; 33) 35 PATH_SEGMENT@[30; 33)
36 NAME_REF@[30; 33) 36 NAME_REF@[30; 33)
37 IDENT@[30; 33) "u64" 37 IDENT@[30; 33) "u64"
38 R_ANGLE@[33; 34) 38 R_ANGLE@[33; 34) ">"
39 SEMI@[34; 35) 39 SEMI@[34; 35) ";"
40 WHITESPACE@[35; 36) 40 WHITESPACE@[35; 36) "\n"
diff --git a/crates/ra_syntax/tests/data/parser/inline/ok/0040_crate_keyword_vis.txt b/crates/ra_syntax/tests/data/parser/inline/ok/0040_crate_keyword_vis.txt
index 695734d54..fb8246174 100644
--- a/crates/ra_syntax/tests/data/parser/inline/ok/0040_crate_keyword_vis.txt
+++ b/crates/ra_syntax/tests/data/parser/inline/ok/0040_crate_keyword_vis.txt
@@ -1,62 +1,62 @@
1SOURCE_FILE@[0; 71) 1SOURCE_FILE@[0; 71)
2 FN_DEF@[0; 19) 2 FN_DEF@[0; 19)
3 VISIBILITY@[0; 5) 3 VISIBILITY@[0; 5)
4 CRATE_KW@[0; 5) 4 CRATE_KW@[0; 5) "crate"
5 WHITESPACE@[5; 6) 5 WHITESPACE@[5; 6) " "
6 FN_KW@[6; 8) 6 FN_KW@[6; 8) "fn"
7 WHITESPACE@[8; 9) 7 WHITESPACE@[8; 9) " "
8 NAME@[9; 13) 8 NAME@[9; 13)
9 IDENT@[9; 13) "main" 9 IDENT@[9; 13) "main"
10 PARAM_LIST@[13; 15) 10 PARAM_LIST@[13; 15)
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@[16; 19)
15 L_CURLY@[16; 17) 15 L_CURLY@[16; 17) "{"
16 WHITESPACE@[17; 18) 16 WHITESPACE@[17; 18) " "
17 R_CURLY@[18; 19) 17 R_CURLY@[18; 19) "}"
18 WHITESPACE@[19; 20) 18 WHITESPACE@[19; 20) "\n"
19 STRUCT_DEF@[20; 49) 19 STRUCT_DEF@[20; 49)
20 STRUCT_KW@[20; 26) 20 STRUCT_KW@[20; 26) "struct"
21 WHITESPACE@[26; 27) 21 WHITESPACE@[26; 27) " "
22 NAME@[27; 28) 22 NAME@[27; 28)
23 IDENT@[27; 28) "S" 23 IDENT@[27; 28) "S"
24 WHITESPACE@[28; 29) 24 WHITESPACE@[28; 29) " "
25 NAMED_FIELD_DEF_LIST@[29; 49) 25 NAMED_FIELD_DEF_LIST@[29; 49)
26 L_CURLY@[29; 30) 26 L_CURLY@[29; 30) "{"
27 WHITESPACE@[30; 31) 27 WHITESPACE@[30; 31) " "
28 NAMED_FIELD_DEF@[31; 47) 28 NAMED_FIELD_DEF@[31; 47)
29 VISIBILITY@[31; 36) 29 VISIBILITY@[31; 36)
30 CRATE_KW@[31; 36) 30 CRATE_KW@[31; 36) "crate"
31 WHITESPACE@[36; 37) 31 WHITESPACE@[36; 37) " "
32 NAME@[37; 42) 32 NAME@[37; 42)
33 IDENT@[37; 42) "field" 33 IDENT@[37; 42) "field"
34 COLON@[42; 43) 34 COLON@[42; 43) ":"
35 WHITESPACE@[43; 44) 35 WHITESPACE@[43; 44) " "
36 PATH_TYPE@[44; 47) 36 PATH_TYPE@[44; 47)
37 PATH@[44; 47) 37 PATH@[44; 47)
38 PATH_SEGMENT@[44; 47) 38 PATH_SEGMENT@[44; 47)
39 NAME_REF@[44; 47) 39 NAME_REF@[44; 47)
40 IDENT@[44; 47) "u32" 40 IDENT@[44; 47) "u32"
41 WHITESPACE@[47; 48) 41 WHITESPACE@[47; 48) " "
42 R_CURLY@[48; 49) 42 R_CURLY@[48; 49) "}"
43 WHITESPACE@[49; 50) 43 WHITESPACE@[49; 50) "\n"
44 STRUCT_DEF@[50; 70) 44 STRUCT_DEF@[50; 70)
45 STRUCT_KW@[50; 56) 45 STRUCT_KW@[50; 56) "struct"
46 WHITESPACE@[56; 57) 46 WHITESPACE@[56; 57) " "
47 NAME@[57; 58) 47 NAME@[57; 58)
48 IDENT@[57; 58) "T" 48 IDENT@[57; 58) "T"
49 POS_FIELD_DEF_LIST@[58; 69) 49 POS_FIELD_DEF_LIST@[58; 69)
50 L_PAREN@[58; 59) 50 L_PAREN@[58; 59) "("
51 POS_FIELD_DEF@[59; 68) 51 POS_FIELD_DEF@[59; 68)
52 VISIBILITY@[59; 64) 52 VISIBILITY@[59; 64)
53 CRATE_KW@[59; 64) 53 CRATE_KW@[59; 64) "crate"
54 WHITESPACE@[64; 65) 54 WHITESPACE@[64; 65) " "
55 PATH_TYPE@[65; 68) 55 PATH_TYPE@[65; 68)
56 PATH@[65; 68) 56 PATH@[65; 68)
57 PATH_SEGMENT@[65; 68) 57 PATH_SEGMENT@[65; 68)
58 NAME_REF@[65; 68) 58 NAME_REF@[65; 68)
59 IDENT@[65; 68) "u32" 59 IDENT@[65; 68) "u32"
60 R_PAREN@[68; 69) 60 R_PAREN@[68; 69) ")"
61 SEMI@[69; 70) 61 SEMI@[69; 70) ";"
62 WHITESPACE@[70; 71) 62 WHITESPACE@[70; 71) "\n"
diff --git a/crates/ra_syntax/tests/data/parser/inline/ok/0041_trait_item.rs b/crates/ra_syntax/tests/data/parser/inline/ok/0041_trait_item.rs
index 4385afca9..32761dd03 100644
--- a/crates/ra_syntax/tests/data/parser/inline/ok/0041_trait_item.rs
+++ b/crates/ra_syntax/tests/data/parser/inline/ok/0041_trait_item.rs
@@ -1 +1,2 @@
1trait T<U>: Hash + Clone where U: Copy {} 1trait T<U>: Hash + Clone where U: Copy {}
2trait X<U: Debug + Display>: Hash + Clone where U: Copy {}
diff --git a/crates/ra_syntax/tests/data/parser/inline/ok/0041_trait_item.txt b/crates/ra_syntax/tests/data/parser/inline/ok/0041_trait_item.txt
index 333a737ec..578361715 100644
--- a/crates/ra_syntax/tests/data/parser/inline/ok/0041_trait_item.txt
+++ b/crates/ra_syntax/tests/data/parser/inline/ok/0041_trait_item.txt
@@ -1,49 +1,125 @@
1SOURCE_FILE@[0; 42) 1SOURCE_FILE@[0; 101)
2 TRAIT_DEF@[0; 41) 2 TRAIT_DEF@[0; 41)
3 TRAIT_KW@[0; 5) 3 TRAIT_KW@[0; 5) "trait"
4 WHITESPACE@[5; 6) 4 WHITESPACE@[5; 6) " "
5 NAME@[6; 7) 5 NAME@[6; 7)
6 IDENT@[6; 7) "T" 6 IDENT@[6; 7) "T"
7 TYPE_PARAM_LIST@[7; 10) 7 TYPE_PARAM_LIST@[7; 10)
8 L_ANGLE@[7; 8) 8 L_ANGLE@[7; 8) "<"
9 TYPE_PARAM@[8; 9) 9 TYPE_PARAM@[8; 9)
10 NAME@[8; 9) 10 NAME@[8; 9)
11 IDENT@[8; 9) "U" 11 IDENT@[8; 9) "U"
12 R_ANGLE@[9; 10) 12 R_ANGLE@[9; 10) ">"
13 COLON@[10; 11) 13 COLON@[10; 11) ":"
14 WHITESPACE@[11; 12) 14 WHITESPACE@[11; 12) " "
15 PATH_TYPE@[12; 24) 15 TYPE_BOUND_LIST@[12; 24)
16 PATH@[12; 16) 16 TYPE_BOUND@[12; 16)
17 PATH_SEGMENT@[12; 16) 17 PATH_TYPE@[12; 16)
18 NAME_REF@[12; 16) 18 PATH@[12; 16)
19 IDENT@[12; 16) "Hash" 19 PATH_SEGMENT@[12; 16)
20 WHITESPACE@[16; 17) 20 NAME_REF@[12; 16)
21 PLUS@[17; 18) 21 IDENT@[12; 16) "Hash"
22 WHITESPACE@[18; 19) 22 WHITESPACE@[16; 17) " "
23 PATH_TYPE@[19; 24) 23 PLUS@[17; 18) "+"
24 PATH@[19; 24) 24 WHITESPACE@[18; 19) " "
25 PATH_SEGMENT@[19; 24) 25 TYPE_BOUND@[19; 24)
26 NAME_REF@[19; 24) 26 PATH_TYPE@[19; 24)
27 IDENT@[19; 24) "Clone" 27 PATH@[19; 24)
28 WHITESPACE@[24; 25) 28 PATH_SEGMENT@[19; 24)
29 NAME_REF@[19; 24)
30 IDENT@[19; 24) "Clone"
31 WHITESPACE@[24; 25) " "
29 WHERE_CLAUSE@[25; 38) 32 WHERE_CLAUSE@[25; 38)
30 WHERE_KW@[25; 30) 33 WHERE_KW@[25; 30) "where"
31 WHITESPACE@[30; 31) 34 WHITESPACE@[30; 31) " "
32 WHERE_PRED@[31; 38) 35 WHERE_PRED@[31; 38)
33 PATH_TYPE@[31; 32) 36 PATH_TYPE@[31; 32)
34 PATH@[31; 32) 37 PATH@[31; 32)
35 PATH_SEGMENT@[31; 32) 38 PATH_SEGMENT@[31; 32)
36 NAME_REF@[31; 32) 39 NAME_REF@[31; 32)
37 IDENT@[31; 32) "U" 40 IDENT@[31; 32) "U"
38 COLON@[32; 33) 41 COLON@[32; 33) ":"
39 WHITESPACE@[33; 34) 42 WHITESPACE@[33; 34) " "
40 PATH_TYPE@[34; 38) 43 TYPE_BOUND_LIST@[34; 38)
41 PATH@[34; 38) 44 TYPE_BOUND@[34; 38)
42 PATH_SEGMENT@[34; 38) 45 PATH_TYPE@[34; 38)
43 NAME_REF@[34; 38) 46 PATH@[34; 38)
44 IDENT@[34; 38) "Copy" 47 PATH_SEGMENT@[34; 38)
45 WHITESPACE@[38; 39) 48 NAME_REF@[34; 38)
49 IDENT@[34; 38) "Copy"
50 WHITESPACE@[38; 39) " "
46 ITEM_LIST@[39; 41) 51 ITEM_LIST@[39; 41)
47 L_CURLY@[39; 40) 52 L_CURLY@[39; 40) "{"
48 R_CURLY@[40; 41) 53 R_CURLY@[40; 41) "}"
49 WHITESPACE@[41; 42) 54 WHITESPACE@[41; 42) "\n"
55 TRAIT_DEF@[42; 100)
56 TRAIT_KW@[42; 47) "trait"
57 WHITESPACE@[47; 48) " "
58 NAME@[48; 49)
59 IDENT@[48; 49) "X"
60 TYPE_PARAM_LIST@[49; 69)
61 L_ANGLE@[49; 50) "<"
62 TYPE_PARAM@[50; 68)
63 NAME@[50; 51)
64 IDENT@[50; 51) "U"
65 COLON@[51; 52) ":"
66 WHITESPACE@[52; 53) " "
67 TYPE_BOUND_LIST@[53; 68)
68 TYPE_BOUND@[53; 58)
69 PATH_TYPE@[53; 58)
70 PATH@[53; 58)
71 PATH_SEGMENT@[53; 58)
72 NAME_REF@[53; 58)
73 IDENT@[53; 58) "Debug"
74 WHITESPACE@[58; 59) " "
75 PLUS@[59; 60) "+"
76 WHITESPACE@[60; 61) " "
77 TYPE_BOUND@[61; 68)
78 PATH_TYPE@[61; 68)
79 PATH@[61; 68)
80 PATH_SEGMENT@[61; 68)
81 NAME_REF@[61; 68)
82 IDENT@[61; 68) "Display"
83 R_ANGLE@[68; 69) ">"
84 COLON@[69; 70) ":"
85 WHITESPACE@[70; 71) " "
86 TYPE_BOUND_LIST@[71; 83)
87 TYPE_BOUND@[71; 75)
88 PATH_TYPE@[71; 75)
89 PATH@[71; 75)
90 PATH_SEGMENT@[71; 75)
91 NAME_REF@[71; 75)
92 IDENT@[71; 75) "Hash"
93 WHITESPACE@[75; 76) " "
94 PLUS@[76; 77) "+"
95 WHITESPACE@[77; 78) " "
96 TYPE_BOUND@[78; 83)
97 PATH_TYPE@[78; 83)
98 PATH@[78; 83)
99 PATH_SEGMENT@[78; 83)
100 NAME_REF@[78; 83)
101 IDENT@[78; 83) "Clone"
102 WHITESPACE@[83; 84) " "
103 WHERE_CLAUSE@[84; 97)
104 WHERE_KW@[84; 89) "where"
105 WHITESPACE@[89; 90) " "
106 WHERE_PRED@[90; 97)
107 PATH_TYPE@[90; 91)
108 PATH@[90; 91)
109 PATH_SEGMENT@[90; 91)
110 NAME_REF@[90; 91)
111 IDENT@[90; 91) "U"
112 COLON@[91; 92) ":"
113 WHITESPACE@[92; 93) " "
114 TYPE_BOUND_LIST@[93; 97)
115 TYPE_BOUND@[93; 97)
116 PATH_TYPE@[93; 97)
117 PATH@[93; 97)
118 PATH_SEGMENT@[93; 97)
119 NAME_REF@[93; 97)
120 IDENT@[93; 97) "Copy"
121 WHITESPACE@[97; 98) " "
122 ITEM_LIST@[98; 100)
123 L_CURLY@[98; 99) "{"
124 R_CURLY@[99; 100) "}"
125 WHITESPACE@[100; 101) "\n"
diff --git a/crates/ra_syntax/tests/data/parser/inline/ok/0042_call_expr.txt b/crates/ra_syntax/tests/data/parser/inline/ok/0042_call_expr.txt
index 0ddf393f2..dd8946ad2 100644
--- a/crates/ra_syntax/tests/data/parser/inline/ok/0042_call_expr.txt
+++ b/crates/ra_syntax/tests/data/parser/inline/ok/0042_call_expr.txt
@@ -1,24 +1,24 @@
1SOURCE_FILE@[0; 118) 1SOURCE_FILE@[0; 118)
2 FN_DEF@[0; 117) 2 FN_DEF@[0; 117)
3 FN_KW@[0; 2) 3 FN_KW@[0; 2) "fn"
4 WHITESPACE@[2; 3) 4 WHITESPACE@[2; 3) " "
5 NAME@[3; 6) 5 NAME@[3; 6)
6 IDENT@[3; 6) "foo" 6 IDENT@[3; 6) "foo"
7 PARAM_LIST@[6; 8) 7 PARAM_LIST@[6; 8)
8 L_PAREN@[6; 7) 8 L_PAREN@[6; 7) "("
9 R_PAREN@[7; 8) 9 R_PAREN@[7; 8) ")"
10 WHITESPACE@[8; 9) 10 WHITESPACE@[8; 9) " "
11 BLOCK@[9; 117) 11 BLOCK@[9; 117)
12 L_CURLY@[9; 10) 12 L_CURLY@[9; 10) "{"
13 WHITESPACE@[10; 15) 13 WHITESPACE@[10; 15) "\n "
14 LET_STMT@[15; 27) 14 LET_STMT@[15; 27)
15 LET_KW@[15; 18) 15 LET_KW@[15; 18) "let"
16 WHITESPACE@[18; 19) 16 WHITESPACE@[18; 19) " "
17 PLACEHOLDER_PAT@[19; 20) 17 PLACEHOLDER_PAT@[19; 20)
18 UNDERSCORE@[19; 20) 18 UNDERSCORE@[19; 20) "_"
19 WHITESPACE@[20; 21) 19 WHITESPACE@[20; 21) " "
20 EQ@[21; 22) 20 EQ@[21; 22) "="
21 WHITESPACE@[22; 23) 21 WHITESPACE@[22; 23) " "
22 CALL_EXPR@[23; 26) 22 CALL_EXPR@[23; 26)
23 PATH_EXPR@[23; 24) 23 PATH_EXPR@[23; 24)
24 PATH@[23; 24) 24 PATH@[23; 24)
@@ -26,18 +26,18 @@ SOURCE_FILE@[0; 118)
26 NAME_REF@[23; 24) 26 NAME_REF@[23; 24)
27 IDENT@[23; 24) "f" 27 IDENT@[23; 24) "f"
28 ARG_LIST@[24; 26) 28 ARG_LIST@[24; 26)
29 L_PAREN@[24; 25) 29 L_PAREN@[24; 25) "("
30 R_PAREN@[25; 26) 30 R_PAREN@[25; 26) ")"
31 SEMI@[26; 27) 31 SEMI@[26; 27) ";"
32 WHITESPACE@[27; 32) 32 WHITESPACE@[27; 32) "\n "
33 LET_STMT@[32; 54) 33 LET_STMT@[32; 54)
34 LET_KW@[32; 35) 34 LET_KW@[32; 35) "let"
35 WHITESPACE@[35; 36) 35 WHITESPACE@[35; 36) " "
36 PLACEHOLDER_PAT@[36; 37) 36 PLACEHOLDER_PAT@[36; 37)
37 UNDERSCORE@[36; 37) 37 UNDERSCORE@[36; 37) "_"
38 WHITESPACE@[37; 38) 38 WHITESPACE@[37; 38) " "
39 EQ@[38; 39) 39 EQ@[38; 39) "="
40 WHITESPACE@[39; 40) 40 WHITESPACE@[39; 40) " "
41 CALL_EXPR@[40; 53) 41 CALL_EXPR@[40; 53)
42 CALL_EXPR@[40; 46) 42 CALL_EXPR@[40; 46)
43 CALL_EXPR@[40; 43) 43 CALL_EXPR@[40; 43)
@@ -47,33 +47,33 @@ SOURCE_FILE@[0; 118)
47 NAME_REF@[40; 41) 47 NAME_REF@[40; 41)
48 IDENT@[40; 41) "f" 48 IDENT@[40; 41) "f"
49 ARG_LIST@[41; 43) 49 ARG_LIST@[41; 43)
50 L_PAREN@[41; 42) 50 L_PAREN@[41; 42) "("
51 R_PAREN@[42; 43) 51 R_PAREN@[42; 43) ")"
52 ARG_LIST@[43; 46) 52 ARG_LIST@[43; 46)
53 L_PAREN@[43; 44) 53 L_PAREN@[43; 44) "("
54 LITERAL@[44; 45) 54 LITERAL@[44; 45)
55 INT_NUMBER@[44; 45) "1" 55 INT_NUMBER@[44; 45) "1"
56 R_PAREN@[45; 46) 56 R_PAREN@[45; 46) ")"
57 ARG_LIST@[46; 53) 57 ARG_LIST@[46; 53)
58 L_PAREN@[46; 47) 58 L_PAREN@[46; 47) "("
59 LITERAL@[47; 48) 59 LITERAL@[47; 48)
60 INT_NUMBER@[47; 48) "1" 60 INT_NUMBER@[47; 48) "1"
61 COMMA@[48; 49) 61 COMMA@[48; 49) ","
62 WHITESPACE@[49; 50) 62 WHITESPACE@[49; 50) " "
63 LITERAL@[50; 51) 63 LITERAL@[50; 51)
64 INT_NUMBER@[50; 51) "2" 64 INT_NUMBER@[50; 51) "2"
65 COMMA@[51; 52) 65 COMMA@[51; 52) ","
66 R_PAREN@[52; 53) 66 R_PAREN@[52; 53) ")"
67 SEMI@[53; 54) 67 SEMI@[53; 54) ";"
68 WHITESPACE@[54; 59) 68 WHITESPACE@[54; 59) "\n "
69 LET_STMT@[59; 84) 69 LET_STMT@[59; 84)
70 LET_KW@[59; 62) 70 LET_KW@[59; 62) "let"
71 WHITESPACE@[62; 63) 71 WHITESPACE@[62; 63) " "
72 PLACEHOLDER_PAT@[63; 64) 72 PLACEHOLDER_PAT@[63; 64)
73 UNDERSCORE@[63; 64) 73 UNDERSCORE@[63; 64) "_"
74 WHITESPACE@[64; 65) 74 WHITESPACE@[64; 65) " "
75 EQ@[65; 66) 75 EQ@[65; 66) "="
76 WHITESPACE@[66; 67) 76 WHITESPACE@[66; 67) " "
77 CALL_EXPR@[67; 83) 77 CALL_EXPR@[67; 83)
78 PATH_EXPR@[67; 68) 78 PATH_EXPR@[67; 68)
79 PATH@[67; 68) 79 PATH@[67; 68)
@@ -81,29 +81,29 @@ SOURCE_FILE@[0; 118)
81 NAME_REF@[67; 68) 81 NAME_REF@[67; 68)
82 IDENT@[67; 68) "f" 82 IDENT@[67; 68) "f"
83 ARG_LIST@[68; 83) 83 ARG_LIST@[68; 83)
84 L_PAREN@[68; 69) 84 L_PAREN@[68; 69) "("
85 CALL_EXPR@[69; 82) 85 CALL_EXPR@[69; 82)
86 PATH_EXPR@[69; 80) 86 PATH_EXPR@[69; 80)
87 PATH@[69; 80) 87 PATH@[69; 80)
88 PATH@[69; 74) 88 PATH@[69; 74)
89 PATH_SEGMENT@[69; 74) 89 PATH_SEGMENT@[69; 74)
90 L_ANGLE@[69; 70) 90 L_ANGLE@[69; 70) "<"
91 PATH_TYPE@[70; 73) 91 PATH_TYPE@[70; 73)
92 PATH@[70; 73) 92 PATH@[70; 73)
93 PATH_SEGMENT@[70; 73) 93 PATH_SEGMENT@[70; 73)
94 NAME_REF@[70; 73) 94 NAME_REF@[70; 73)
95 IDENT@[70; 73) "Foo" 95 IDENT@[70; 73) "Foo"
96 R_ANGLE@[73; 74) 96 R_ANGLE@[73; 74) ">"
97 COLONCOLON@[74; 76) 97 COLONCOLON@[74; 76) "::"
98 PATH_SEGMENT@[76; 80) 98 PATH_SEGMENT@[76; 80)
99 NAME_REF@[76; 80) 99 NAME_REF@[76; 80)
100 IDENT@[76; 80) "func" 100 IDENT@[76; 80) "func"
101 ARG_LIST@[80; 82) 101 ARG_LIST@[80; 82)
102 L_PAREN@[80; 81) 102 L_PAREN@[80; 81) "("
103 R_PAREN@[81; 82) 103 R_PAREN@[81; 82) ")"
104 R_PAREN@[82; 83) 104 R_PAREN@[82; 83) ")"
105 SEMI@[83; 84) 105 SEMI@[83; 84) ";"
106 WHITESPACE@[84; 89) 106 WHITESPACE@[84; 89) "\n "
107 EXPR_STMT@[89; 115) 107 EXPR_STMT@[89; 115)
108 CALL_EXPR@[89; 114) 108 CALL_EXPR@[89; 114)
109 PATH_EXPR@[89; 90) 109 PATH_EXPR@[89; 90)
@@ -112,36 +112,36 @@ SOURCE_FILE@[0; 118)
112 NAME_REF@[89; 90) 112 NAME_REF@[89; 90)
113 IDENT@[89; 90) "f" 113 IDENT@[89; 90) "f"
114 ARG_LIST@[90; 114) 114 ARG_LIST@[90; 114)
115 L_PAREN@[90; 91) 115 L_PAREN@[90; 91) "("
116 CALL_EXPR@[91; 113) 116 CALL_EXPR@[91; 113)
117 PATH_EXPR@[91; 111) 117 PATH_EXPR@[91; 111)
118 PATH@[91; 111) 118 PATH@[91; 111)
119 PATH@[91; 105) 119 PATH@[91; 105)
120 PATH_SEGMENT@[91; 105) 120 PATH_SEGMENT@[91; 105)
121 L_ANGLE@[91; 92) 121 L_ANGLE@[91; 92) "<"
122 PATH_TYPE@[92; 95) 122 PATH_TYPE@[92; 95)
123 PATH@[92; 95) 123 PATH@[92; 95)
124 PATH_SEGMENT@[92; 95) 124 PATH_SEGMENT@[92; 95)
125 NAME_REF@[92; 95) 125 NAME_REF@[92; 95)
126 IDENT@[92; 95) "Foo" 126 IDENT@[92; 95) "Foo"
127 WHITESPACE@[95; 96) 127 WHITESPACE@[95; 96) " "
128 AS_KW@[96; 98) 128 AS_KW@[96; 98) "as"
129 WHITESPACE@[98; 99) 129 WHITESPACE@[98; 99) " "
130 PATH_TYPE@[99; 104) 130 PATH_TYPE@[99; 104)
131 PATH@[99; 104) 131 PATH@[99; 104)
132 PATH_SEGMENT@[99; 104) 132 PATH_SEGMENT@[99; 104)
133 NAME_REF@[99; 104) 133 NAME_REF@[99; 104)
134 IDENT@[99; 104) "Trait" 134 IDENT@[99; 104) "Trait"
135 R_ANGLE@[104; 105) 135 R_ANGLE@[104; 105) ">"
136 COLONCOLON@[105; 107) 136 COLONCOLON@[105; 107) "::"
137 PATH_SEGMENT@[107; 111) 137 PATH_SEGMENT@[107; 111)
138 NAME_REF@[107; 111) 138 NAME_REF@[107; 111)
139 IDENT@[107; 111) "func" 139 IDENT@[107; 111) "func"
140 ARG_LIST@[111; 113) 140 ARG_LIST@[111; 113)
141 L_PAREN@[111; 112) 141 L_PAREN@[111; 112) "("
142 R_PAREN@[112; 113) 142 R_PAREN@[112; 113) ")"
143 R_PAREN@[113; 114) 143 R_PAREN@[113; 114) ")"
144 SEMI@[114; 115) 144 SEMI@[114; 115) ";"
145 WHITESPACE@[115; 116) 145 WHITESPACE@[115; 116) "\n"
146 R_CURLY@[116; 117) 146 R_CURLY@[116; 117) "}"
147 WHITESPACE@[117; 118) 147 WHITESPACE@[117; 118) "\n"
diff --git a/crates/ra_syntax/tests/data/parser/inline/ok/0043_use_alias.txt b/crates/ra_syntax/tests/data/parser/inline/ok/0043_use_alias.txt
index 0c8dec81d..18d8a151f 100644
--- a/crates/ra_syntax/tests/data/parser/inline/ok/0043_use_alias.txt
+++ b/crates/ra_syntax/tests/data/parser/inline/ok/0043_use_alias.txt
@@ -1,73 +1,73 @@
1SOURCE_FILE@[0; 198) 1SOURCE_FILE@[0; 198)
2 USE_ITEM@[0; 28) 2 USE_ITEM@[0; 28)
3 USE_KW@[0; 3) 3 USE_KW@[0; 3) "use"
4 WHITESPACE@[3; 4) 4 WHITESPACE@[3; 4) " "
5 USE_TREE@[4; 27) 5 USE_TREE@[4; 27)
6 PATH@[4; 14) 6 PATH@[4; 14)
7 PATH@[4; 8) 7 PATH@[4; 8)
8 PATH_SEGMENT@[4; 8) 8 PATH_SEGMENT@[4; 8)
9 NAME_REF@[4; 8) 9 NAME_REF@[4; 8)
10 IDENT@[4; 8) "some" 10 IDENT@[4; 8) "some"
11 COLONCOLON@[8; 10) 11 COLONCOLON@[8; 10) "::"
12 PATH_SEGMENT@[10; 14) 12 PATH_SEGMENT@[10; 14)
13 NAME_REF@[10; 14) 13 NAME_REF@[10; 14)
14 IDENT@[10; 14) "path" 14 IDENT@[10; 14) "path"
15 WHITESPACE@[14; 15) 15 WHITESPACE@[14; 15) " "
16 ALIAS@[15; 27) 16 ALIAS@[15; 27)
17 AS_KW@[15; 17) 17 AS_KW@[15; 17) "as"
18 WHITESPACE@[17; 18) 18 WHITESPACE@[17; 18) " "
19 NAME@[18; 27) 19 NAME@[18; 27)
20 IDENT@[18; 27) "some_name" 20 IDENT@[18; 27) "some_name"
21 SEMI@[27; 28) 21 SEMI@[27; 28) ";"
22 WHITESPACE@[28; 29) 22 WHITESPACE@[28; 29) "\n"
23 USE_ITEM@[29; 181) 23 USE_ITEM@[29; 181)
24 USE_KW@[29; 32) 24 USE_KW@[29; 32) "use"
25 WHITESPACE@[32; 33) 25 WHITESPACE@[32; 33) " "
26 USE_TREE@[33; 180) 26 USE_TREE@[33; 180)
27 PATH@[33; 37) 27 PATH@[33; 37)
28 PATH_SEGMENT@[33; 37) 28 PATH_SEGMENT@[33; 37)
29 NAME_REF@[33; 37) 29 NAME_REF@[33; 37)
30 IDENT@[33; 37) "some" 30 IDENT@[33; 37) "some"
31 COLONCOLON@[37; 39) 31 COLONCOLON@[37; 39) "::"
32 USE_TREE_LIST@[39; 180) 32 USE_TREE_LIST@[39; 180)
33 L_CURLY@[39; 40) 33 L_CURLY@[39; 40) "{"
34 WHITESPACE@[40; 42) 34 WHITESPACE@[40; 42) "\n "
35 USE_TREE@[42; 72) 35 USE_TREE@[42; 72)
36 PATH@[42; 53) 36 PATH@[42; 53)
37 PATH@[42; 47) 37 PATH@[42; 47)
38 PATH_SEGMENT@[42; 47) 38 PATH_SEGMENT@[42; 47)
39 NAME_REF@[42; 47) 39 NAME_REF@[42; 47)
40 IDENT@[42; 47) "other" 40 IDENT@[42; 47) "other"
41 COLONCOLON@[47; 49) 41 COLONCOLON@[47; 49) "::"
42 PATH_SEGMENT@[49; 53) 42 PATH_SEGMENT@[49; 53)
43 NAME_REF@[49; 53) 43 NAME_REF@[49; 53)
44 IDENT@[49; 53) "path" 44 IDENT@[49; 53) "path"
45 WHITESPACE@[53; 54) 45 WHITESPACE@[53; 54) " "
46 ALIAS@[54; 72) 46 ALIAS@[54; 72)
47 AS_KW@[54; 56) 47 AS_KW@[54; 56) "as"
48 WHITESPACE@[56; 57) 48 WHITESPACE@[56; 57) " "
49 NAME@[57; 72) 49 NAME@[57; 72)
50 IDENT@[57; 72) "some_other_name" 50 IDENT@[57; 72) "some_other_name"
51 COMMA@[72; 73) 51 COMMA@[72; 73) ","
52 WHITESPACE@[73; 75) 52 WHITESPACE@[73; 75) "\n "
53 USE_TREE@[75; 108) 53 USE_TREE@[75; 108)
54 PATH@[75; 90) 54 PATH@[75; 90)
55 PATH@[75; 84) 55 PATH@[75; 84)
56 PATH_SEGMENT@[75; 84) 56 PATH_SEGMENT@[75; 84)
57 NAME_REF@[75; 84) 57 NAME_REF@[75; 84)
58 IDENT@[75; 84) "different" 58 IDENT@[75; 84) "different"
59 COLONCOLON@[84; 86) 59 COLONCOLON@[84; 86) "::"
60 PATH_SEGMENT@[86; 90) 60 PATH_SEGMENT@[86; 90)
61 NAME_REF@[86; 90) 61 NAME_REF@[86; 90)
62 IDENT@[86; 90) "path" 62 IDENT@[86; 90) "path"
63 WHITESPACE@[90; 91) 63 WHITESPACE@[90; 91) " "
64 ALIAS@[91; 108) 64 ALIAS@[91; 108)
65 AS_KW@[91; 93) 65 AS_KW@[91; 93) "as"
66 WHITESPACE@[93; 94) 66 WHITESPACE@[93; 94) " "
67 NAME@[94; 108) 67 NAME@[94; 108)
68 IDENT@[94; 108) "different_name" 68 IDENT@[94; 108) "different_name"
69 COMMA@[108; 109) 69 COMMA@[108; 109) ","
70 WHITESPACE@[109; 111) 70 WHITESPACE@[109; 111) "\n "
71 USE_TREE@[111; 129) 71 USE_TREE@[111; 129)
72 PATH@[111; 129) 72 PATH@[111; 129)
73 PATH@[111; 123) 73 PATH@[111; 123)
@@ -75,16 +75,16 @@ SOURCE_FILE@[0; 198)
75 PATH_SEGMENT@[111; 114) 75 PATH_SEGMENT@[111; 114)
76 NAME_REF@[111; 114) 76 NAME_REF@[111; 114)
77 IDENT@[111; 114) "yet" 77 IDENT@[111; 114) "yet"
78 COLONCOLON@[114; 116) 78 COLONCOLON@[114; 116) "::"
79 PATH_SEGMENT@[116; 123) 79 PATH_SEGMENT@[116; 123)
80 NAME_REF@[116; 123) 80 NAME_REF@[116; 123)
81 IDENT@[116; 123) "another" 81 IDENT@[116; 123) "another"
82 COLONCOLON@[123; 125) 82 COLONCOLON@[123; 125) "::"
83 PATH_SEGMENT@[125; 129) 83 PATH_SEGMENT@[125; 129)
84 NAME_REF@[125; 129) 84 NAME_REF@[125; 129)
85 IDENT@[125; 129) "path" 85 IDENT@[125; 129) "path"
86 COMMA@[129; 130) 86 COMMA@[129; 130) ","
87 WHITESPACE@[130; 132) 87 WHITESPACE@[130; 132) "\n "
88 USE_TREE@[132; 178) 88 USE_TREE@[132; 178)
89 PATH@[132; 175) 89 PATH@[132; 175)
90 PATH@[132; 164) 90 PATH@[132; 164)
@@ -95,44 +95,44 @@ SOURCE_FILE@[0; 198)
95 PATH_SEGMENT@[132; 139) 95 PATH_SEGMENT@[132; 139)
96 NAME_REF@[132; 139) 96 NAME_REF@[132; 139)
97 IDENT@[132; 139) "running" 97 IDENT@[132; 139) "running"
98 COLONCOLON@[139; 141) 98 COLONCOLON@[139; 141) "::"
99 PATH_SEGMENT@[141; 144) 99 PATH_SEGMENT@[141; 144)
100 NAME_REF@[141; 144) 100 NAME_REF@[141; 144)
101 IDENT@[141; 144) "out" 101 IDENT@[141; 144) "out"
102 COLONCOLON@[144; 146) 102 COLONCOLON@[144; 146) "::"
103 PATH_SEGMENT@[146; 148) 103 PATH_SEGMENT@[146; 148)
104 NAME_REF@[146; 148) 104 NAME_REF@[146; 148)
105 IDENT@[146; 148) "of" 105 IDENT@[146; 148) "of"
106 COLONCOLON@[148; 150) 106 COLONCOLON@[148; 150) "::"
107 PATH_SEGMENT@[150; 158) 107 PATH_SEGMENT@[150; 158)
108 NAME_REF@[150; 158) 108 NAME_REF@[150; 158)
109 IDENT@[150; 158) "synonyms" 109 IDENT@[150; 158) "synonyms"
110 COLONCOLON@[158; 160) 110 COLONCOLON@[158; 160) "::"
111 PATH_SEGMENT@[160; 164) 111 PATH_SEGMENT@[160; 164)
112 NAME_REF@[160; 164) 112 NAME_REF@[160; 164)
113 IDENT@[160; 164) "for_" 113 IDENT@[160; 164) "for_"
114 COLONCOLON@[164; 166) 114 COLONCOLON@[164; 166) "::"
115 PATH_SEGMENT@[166; 175) 115 PATH_SEGMENT@[166; 175)
116 NAME_REF@[166; 175) 116 NAME_REF@[166; 175)
117 IDENT@[166; 175) "different" 117 IDENT@[166; 175) "different"
118 COLONCOLON@[175; 177) 118 COLONCOLON@[175; 177) "::"
119 STAR@[177; 178) 119 STAR@[177; 178) "*"
120 WHITESPACE@[178; 179) 120 WHITESPACE@[178; 179) "\n"
121 R_CURLY@[179; 180) 121 R_CURLY@[179; 180) "}"
122 SEMI@[180; 181) 122 SEMI@[180; 181) ";"
123 WHITESPACE@[181; 182) 123 WHITESPACE@[181; 182) "\n"
124 USE_ITEM@[182; 197) 124 USE_ITEM@[182; 197)
125 USE_KW@[182; 185) 125 USE_KW@[182; 185) "use"
126 WHITESPACE@[185; 186) 126 WHITESPACE@[185; 186) " "
127 USE_TREE@[186; 196) 127 USE_TREE@[186; 196)
128 PATH@[186; 191) 128 PATH@[186; 191)
129 PATH_SEGMENT@[186; 191) 129 PATH_SEGMENT@[186; 191)
130 NAME_REF@[186; 191) 130 NAME_REF@[186; 191)
131 IDENT@[186; 191) "Trait" 131 IDENT@[186; 191) "Trait"
132 WHITESPACE@[191; 192) 132 WHITESPACE@[191; 192) " "
133 ALIAS@[192; 196) 133 ALIAS@[192; 196)
134 AS_KW@[192; 194) 134 AS_KW@[192; 194) "as"
135 WHITESPACE@[194; 195) 135 WHITESPACE@[194; 195) " "
136 UNDERSCORE@[195; 196) 136 UNDERSCORE@[195; 196) "_"
137 SEMI@[196; 197) 137 SEMI@[196; 197) ";"
138 WHITESPACE@[197; 198) 138 WHITESPACE@[197; 198) "\n"
diff --git a/crates/ra_syntax/tests/data/parser/inline/ok/0044_block_items.txt b/crates/ra_syntax/tests/data/parser/inline/ok/0044_block_items.txt
index dd1843ee5..d1a8c560a 100644
--- a/crates/ra_syntax/tests/data/parser/inline/ok/0044_block_items.txt
+++ b/crates/ra_syntax/tests/data/parser/inline/ok/0044_block_items.txt
@@ -1,28 +1,28 @@
1SOURCE_FILE@[0; 21) 1SOURCE_FILE@[0; 21)
2 FN_DEF@[0; 20) 2 FN_DEF@[0; 20)
3 FN_KW@[0; 2) 3 FN_KW@[0; 2) "fn"
4 WHITESPACE@[2; 3) 4 WHITESPACE@[2; 3) " "
5 NAME@[3; 4) 5 NAME@[3; 4)
6 IDENT@[3; 4) "a" 6 IDENT@[3; 4) "a"
7 PARAM_LIST@[4; 6) 7 PARAM_LIST@[4; 6)
8 L_PAREN@[4; 5) 8 L_PAREN@[4; 5) "("
9 R_PAREN@[5; 6) 9 R_PAREN@[5; 6) ")"
10 WHITESPACE@[6; 7) 10 WHITESPACE@[6; 7) " "
11 BLOCK@[7; 20) 11 BLOCK@[7; 20)
12 L_CURLY@[7; 8) 12 L_CURLY@[7; 8) "{"
13 WHITESPACE@[8; 9) 13 WHITESPACE@[8; 9) " "
14 FN_DEF@[9; 18) 14 FN_DEF@[9; 18)
15 FN_KW@[9; 11) 15 FN_KW@[9; 11) "fn"
16 WHITESPACE@[11; 12) 16 WHITESPACE@[11; 12) " "
17 NAME@[12; 13) 17 NAME@[12; 13)
18 IDENT@[12; 13) "b" 18 IDENT@[12; 13) "b"
19 PARAM_LIST@[13; 15) 19 PARAM_LIST@[13; 15)
20 L_PAREN@[13; 14) 20 L_PAREN@[13; 14) "("
21 R_PAREN@[14; 15) 21 R_PAREN@[14; 15) ")"
22 WHITESPACE@[15; 16) 22 WHITESPACE@[15; 16) " "
23 BLOCK@[16; 18) 23 BLOCK@[16; 18)
24 L_CURLY@[16; 17) 24 L_CURLY@[16; 17) "{"
25 R_CURLY@[17; 18) 25 R_CURLY@[17; 18) "}"
26 WHITESPACE@[18; 19) 26 WHITESPACE@[18; 19) " "
27 R_CURLY@[19; 20) 27 R_CURLY@[19; 20) "}"
28 WHITESPACE@[20; 21) 28 WHITESPACE@[20; 21) "\n"
diff --git a/crates/ra_syntax/tests/data/parser/inline/ok/0045_param_list_opt_patterns.txt b/crates/ra_syntax/tests/data/parser/inline/ok/0045_param_list_opt_patterns.txt
index 2ce7a6714..f85d6a4bc 100644
--- a/crates/ra_syntax/tests/data/parser/inline/ok/0045_param_list_opt_patterns.txt
+++ b/crates/ra_syntax/tests/data/parser/inline/ok/0045_param_list_opt_patterns.txt
@@ -1,44 +1,46 @@
1SOURCE_FILE@[0; 35) 1SOURCE_FILE@[0; 35)
2 FN_DEF@[0; 34) 2 FN_DEF@[0; 34)
3 FN_KW@[0; 2) 3 FN_KW@[0; 2) "fn"
4 WHITESPACE@[2; 3) 4 WHITESPACE@[2; 3) " "
5 NAME@[3; 6) 5 NAME@[3; 6)
6 IDENT@[3; 6) "foo" 6 IDENT@[3; 6) "foo"
7 TYPE_PARAM_LIST@[6; 30) 7 TYPE_PARAM_LIST@[6; 30)
8 L_ANGLE@[6; 7) 8 L_ANGLE@[6; 7) "<"
9 TYPE_PARAM@[7; 29) 9 TYPE_PARAM@[7; 29)
10 NAME@[7; 8) 10 NAME@[7; 8)
11 IDENT@[7; 8) "F" 11 IDENT@[7; 8) "F"
12 COLON@[8; 9) 12 COLON@[8; 9) ":"
13 WHITESPACE@[9; 10) 13 WHITESPACE@[9; 10) " "
14 PATH_TYPE@[10; 29) 14 TYPE_BOUND_LIST@[10; 29)
15 PATH@[10; 29) 15 TYPE_BOUND@[10; 29)
16 PATH_SEGMENT@[10; 29) 16 PATH_TYPE@[10; 29)
17 NAME_REF@[10; 15) 17 PATH@[10; 29)
18 IDENT@[10; 15) "FnMut" 18 PATH_SEGMENT@[10; 29)
19 PARAM_LIST@[15; 29) 19 NAME_REF@[10; 15)
20 L_PAREN@[15; 16) 20 IDENT@[10; 15) "FnMut"
21 PARAM@[16; 28) 21 PARAM_LIST@[15; 29)
22 REFERENCE_TYPE@[16; 28) 22 L_PAREN@[15; 16) "("
23 AMP@[16; 17) 23 PARAM@[16; 28)
24 MUT_KW@[17; 20) 24 REFERENCE_TYPE@[16; 28)
25 WHITESPACE@[20; 21) 25 AMP@[16; 17) "&"
26 PATH_TYPE@[21; 28) 26 MUT_KW@[17; 20) "mut"
27 PATH@[21; 28) 27 WHITESPACE@[20; 21) " "
28 PATH_SEGMENT@[21; 28) 28 PATH_TYPE@[21; 28)
29 NAME_REF@[21; 24) 29 PATH@[21; 28)
30 IDENT@[21; 24) "Foo" 30 PATH_SEGMENT@[21; 28)
31 TYPE_ARG_LIST@[24; 28) 31 NAME_REF@[21; 24)
32 L_ANGLE@[24; 25) 32 IDENT@[21; 24) "Foo"
33 LIFETIME_ARG@[25; 27) 33 TYPE_ARG_LIST@[24; 28)
34 LIFETIME@[25; 27) "'a" 34 L_ANGLE@[24; 25) "<"
35 R_ANGLE@[27; 28) 35 LIFETIME_ARG@[25; 27)
36 R_PAREN@[28; 29) 36 LIFETIME@[25; 27) "\'a"
37 R_ANGLE@[29; 30) 37 R_ANGLE@[27; 28) ">"
38 R_PAREN@[28; 29) ")"
39 R_ANGLE@[29; 30) ">"
38 PARAM_LIST@[30; 32) 40 PARAM_LIST@[30; 32)
39 L_PAREN@[30; 31) 41 L_PAREN@[30; 31) "("
40 R_PAREN@[31; 32) 42 R_PAREN@[31; 32) ")"
41 BLOCK@[32; 34) 43 BLOCK@[32; 34)
42 L_CURLY@[32; 33) 44 L_CURLY@[32; 33) "{"
43 R_CURLY@[33; 34) 45 R_CURLY@[33; 34) "}"
44 WHITESPACE@[34; 35) 46 WHITESPACE@[34; 35) "\n"
diff --git a/crates/ra_syntax/tests/data/parser/inline/ok/0046_singleton_tuple_type.txt b/crates/ra_syntax/tests/data/parser/inline/ok/0046_singleton_tuple_type.txt
index 33549028b..c7b4e614d 100644
--- a/crates/ra_syntax/tests/data/parser/inline/ok/0046_singleton_tuple_type.txt
+++ b/crates/ra_syntax/tests/data/parser/inline/ok/0046_singleton_tuple_type.txt
@@ -1,20 +1,20 @@
1SOURCE_FILE@[0; 17) 1SOURCE_FILE@[0; 17)
2 TYPE_ALIAS_DEF@[0; 16) 2 TYPE_ALIAS_DEF@[0; 16)
3 TYPE_KW@[0; 4) 3 TYPE_KW@[0; 4) "type"
4 WHITESPACE@[4; 5) 4 WHITESPACE@[4; 5) " "
5 NAME@[5; 6) 5 NAME@[5; 6)
6 IDENT@[5; 6) "T" 6 IDENT@[5; 6) "T"
7 WHITESPACE@[6; 7) 7 WHITESPACE@[6; 7) " "
8 EQ@[7; 8) 8 EQ@[7; 8) "="
9 WHITESPACE@[8; 9) 9 WHITESPACE@[8; 9) " "
10 TUPLE_TYPE@[9; 15) 10 TUPLE_TYPE@[9; 15)
11 L_PAREN@[9; 10) 11 L_PAREN@[9; 10) "("
12 PATH_TYPE@[10; 13) 12 PATH_TYPE@[10; 13)
13 PATH@[10; 13) 13 PATH@[10; 13)
14 PATH_SEGMENT@[10; 13) 14 PATH_SEGMENT@[10; 13)
15 NAME_REF@[10; 13) 15 NAME_REF@[10; 13)
16 IDENT@[10; 13) "i32" 16 IDENT@[10; 13) "i32"
17 COMMA@[13; 14) 17 COMMA@[13; 14) ","
18 R_PAREN@[14; 15) 18 R_PAREN@[14; 15) ")"
19 SEMI@[15; 16) 19 SEMI@[15; 16) ";"
20 WHITESPACE@[16; 17) 20 WHITESPACE@[16; 17) "\n"
diff --git a/crates/ra_syntax/tests/data/parser/inline/ok/0047_unsafe_default_impl.txt b/crates/ra_syntax/tests/data/parser/inline/ok/0047_unsafe_default_impl.txt
index 5d68e88d6..8f3dcaf88 100644
--- a/crates/ra_syntax/tests/data/parser/inline/ok/0047_unsafe_default_impl.txt
+++ b/crates/ra_syntax/tests/data/parser/inline/ok/0047_unsafe_default_impl.txt
@@ -1,18 +1,18 @@
1SOURCE_FILE@[0; 27) 1SOURCE_FILE@[0; 27)
2 IMPL_BLOCK@[0; 26) 2 IMPL_BLOCK@[0; 26)
3 UNSAFE_KW@[0; 6) 3 UNSAFE_KW@[0; 6) "unsafe"
4 WHITESPACE@[6; 7) 4 WHITESPACE@[6; 7) " "
5 DEFAULT_KW@[7; 14) 5 DEFAULT_KW@[7; 14) "default"
6 WHITESPACE@[14; 15) 6 WHITESPACE@[14; 15) " "
7 IMPL_KW@[15; 19) 7 IMPL_KW@[15; 19) "impl"
8 WHITESPACE@[19; 20) 8 WHITESPACE@[19; 20) " "
9 PATH_TYPE@[20; 23) 9 PATH_TYPE@[20; 23)
10 PATH@[20; 23) 10 PATH@[20; 23)
11 PATH_SEGMENT@[20; 23) 11 PATH_SEGMENT@[20; 23)
12 NAME_REF@[20; 23) 12 NAME_REF@[20; 23)
13 IDENT@[20; 23) "Foo" 13 IDENT@[20; 23) "Foo"
14 WHITESPACE@[23; 24) 14 WHITESPACE@[23; 24) " "
15 ITEM_LIST@[24; 26) 15 ITEM_LIST@[24; 26)
16 L_CURLY@[24; 25) 16 L_CURLY@[24; 25) "{"
17 R_CURLY@[25; 26) 17 R_CURLY@[25; 26) "}"
18 WHITESPACE@[26; 27) 18 WHITESPACE@[26; 27) "\n"
diff --git a/crates/ra_syntax/tests/data/parser/inline/ok/0048_path_type_with_bounds.rs b/crates/ra_syntax/tests/data/parser/inline/ok/0048_path_type_with_bounds.rs
index 215210e27..4bb0f63b7 100644
--- a/crates/ra_syntax/tests/data/parser/inline/ok/0048_path_type_with_bounds.rs
+++ b/crates/ra_syntax/tests/data/parser/inline/ok/0048_path_type_with_bounds.rs
@@ -1 +1,2 @@
1fn foo() -> Box<T + 'f> {} 1fn foo() -> Box<T + 'f> {}
2fn foo() -> Box<dyn T + 'f> {}
diff --git a/crates/ra_syntax/tests/data/parser/inline/ok/0048_path_type_with_bounds.txt b/crates/ra_syntax/tests/data/parser/inline/ok/0048_path_type_with_bounds.txt
index 911a27ea1..bb948c8d8 100644
--- a/crates/ra_syntax/tests/data/parser/inline/ok/0048_path_type_with_bounds.txt
+++ b/crates/ra_syntax/tests/data/parser/inline/ok/0048_path_type_with_bounds.txt
@@ -1,36 +1,81 @@
1SOURCE_FILE@[0; 27) 1SOURCE_FILE@[0; 58)
2 FN_DEF@[0; 26) 2 FN_DEF@[0; 26)
3 FN_KW@[0; 2) 3 FN_KW@[0; 2) "fn"
4 WHITESPACE@[2; 3) 4 WHITESPACE@[2; 3) " "
5 NAME@[3; 6) 5 NAME@[3; 6)
6 IDENT@[3; 6) "foo" 6 IDENT@[3; 6) "foo"
7 PARAM_LIST@[6; 8) 7 PARAM_LIST@[6; 8)
8 L_PAREN@[6; 7) 8 L_PAREN@[6; 7) "("
9 R_PAREN@[7; 8) 9 R_PAREN@[7; 8) ")"
10 WHITESPACE@[8; 9) 10 WHITESPACE@[8; 9) " "
11 RET_TYPE@[9; 23) 11 RET_TYPE@[9; 23)
12 THIN_ARROW@[9; 11) 12 THIN_ARROW@[9; 11) "->"
13 WHITESPACE@[11; 12) 13 WHITESPACE@[11; 12) " "
14 PATH_TYPE@[12; 23) 14 PATH_TYPE@[12; 23)
15 PATH@[12; 23) 15 PATH@[12; 23)
16 PATH_SEGMENT@[12; 23) 16 PATH_SEGMENT@[12; 23)
17 NAME_REF@[12; 15) 17 NAME_REF@[12; 15)
18 IDENT@[12; 15) "Box" 18 IDENT@[12; 15) "Box"
19 TYPE_ARG_LIST@[15; 23) 19 TYPE_ARG_LIST@[15; 23)
20 L_ANGLE@[15; 16) 20 L_ANGLE@[15; 16) "<"
21 TYPE_ARG@[16; 22) 21 TYPE_ARG@[16; 22)
22 PATH_TYPE@[16; 22) 22 DYN_TRAIT_TYPE@[16; 22)
23 PATH@[16; 17) 23 TYPE_BOUND_LIST@[16; 22)
24 PATH_SEGMENT@[16; 17) 24 TYPE_BOUND@[16; 17)
25 NAME_REF@[16; 17) 25 PATH_TYPE@[16; 17)
26 IDENT@[16; 17) "T" 26 PATH@[16; 17)
27 WHITESPACE@[17; 18) 27 PATH_SEGMENT@[16; 17)
28 PLUS@[18; 19) 28 NAME_REF@[16; 17)
29 WHITESPACE@[19; 20) 29 IDENT@[16; 17) "T"
30 LIFETIME@[20; 22) "'f" 30 WHITESPACE@[17; 18) " "
31 R_ANGLE@[22; 23) 31 PLUS@[18; 19) "+"
32 WHITESPACE@[23; 24) 32 WHITESPACE@[19; 20) " "
33 TYPE_BOUND@[20; 22)
34 LIFETIME@[20; 22) "\'f"
35 R_ANGLE@[22; 23) ">"
36 WHITESPACE@[23; 24) " "
33 BLOCK@[24; 26) 37 BLOCK@[24; 26)
34 L_CURLY@[24; 25) 38 L_CURLY@[24; 25) "{"
35 R_CURLY@[25; 26) 39 R_CURLY@[25; 26) "}"
36 WHITESPACE@[26; 27) 40 WHITESPACE@[26; 27) "\n"
41 FN_DEF@[27; 57)
42 FN_KW@[27; 29) "fn"
43 WHITESPACE@[29; 30) " "
44 NAME@[30; 33)
45 IDENT@[30; 33) "foo"
46 PARAM_LIST@[33; 35)
47 L_PAREN@[33; 34) "("
48 R_PAREN@[34; 35) ")"
49 WHITESPACE@[35; 36) " "
50 RET_TYPE@[36; 54)
51 THIN_ARROW@[36; 38) "->"
52 WHITESPACE@[38; 39) " "
53 PATH_TYPE@[39; 54)
54 PATH@[39; 54)
55 PATH_SEGMENT@[39; 54)
56 NAME_REF@[39; 42)
57 IDENT@[39; 42) "Box"
58 TYPE_ARG_LIST@[42; 54)
59 L_ANGLE@[42; 43) "<"
60 TYPE_ARG@[43; 53)
61 DYN_TRAIT_TYPE@[43; 53)
62 DYN_KW@[43; 46) "dyn"
63 WHITESPACE@[46; 47) " "
64 TYPE_BOUND_LIST@[47; 53)
65 TYPE_BOUND@[47; 48)
66 PATH_TYPE@[47; 48)
67 PATH@[47; 48)
68 PATH_SEGMENT@[47; 48)
69 NAME_REF@[47; 48)
70 IDENT@[47; 48) "T"
71 WHITESPACE@[48; 49) " "
72 PLUS@[49; 50) "+"
73 WHITESPACE@[50; 51) " "
74 TYPE_BOUND@[51; 53)
75 LIFETIME@[51; 53) "\'f"
76 R_ANGLE@[53; 54) ">"
77 WHITESPACE@[54; 55) " "
78 BLOCK@[55; 57)
79 L_CURLY@[55; 56) "{"
80 R_CURLY@[56; 57) "}"
81 WHITESPACE@[57; 58) "\n"
diff --git a/crates/ra_syntax/tests/data/parser/inline/ok/0049_let_stmt;.txt b/crates/ra_syntax/tests/data/parser/inline/ok/0049_let_stmt;.txt
index 9c2aad7e0..1f7aa3587 100644
--- a/crates/ra_syntax/tests/data/parser/inline/ok/0049_let_stmt;.txt
+++ b/crates/ra_syntax/tests/data/parser/inline/ok/0049_let_stmt;.txt
@@ -1,71 +1,71 @@
1SOURCE_FILE@[0; 77) 1SOURCE_FILE@[0; 77)
2 FN_DEF@[0; 76) 2 FN_DEF@[0; 76)
3 FN_KW@[0; 2) 3 FN_KW@[0; 2) "fn"
4 WHITESPACE@[2; 3) 4 WHITESPACE@[2; 3) " "
5 NAME@[3; 6) 5 NAME@[3; 6)
6 IDENT@[3; 6) "foo" 6 IDENT@[3; 6) "foo"
7 PARAM_LIST@[6; 8) 7 PARAM_LIST@[6; 8)
8 L_PAREN@[6; 7) 8 L_PAREN@[6; 7) "("
9 R_PAREN@[7; 8) 9 R_PAREN@[7; 8) ")"
10 WHITESPACE@[8; 9) 10 WHITESPACE@[8; 9) " "
11 BLOCK@[9; 76) 11 BLOCK@[9; 76)
12 L_CURLY@[9; 10) 12 L_CURLY@[9; 10) "{"
13 WHITESPACE@[10; 15) 13 WHITESPACE@[10; 15) "\n "
14 LET_STMT@[15; 21) 14 LET_STMT@[15; 21)
15 LET_KW@[15; 18) 15 LET_KW@[15; 18) "let"
16 WHITESPACE@[18; 19) 16 WHITESPACE@[18; 19) " "
17 BIND_PAT@[19; 20) 17 BIND_PAT@[19; 20)
18 NAME@[19; 20) 18 NAME@[19; 20)
19 IDENT@[19; 20) "a" 19 IDENT@[19; 20) "a"
20 SEMI@[20; 21) 20 SEMI@[20; 21) ";"
21 WHITESPACE@[21; 26) 21 WHITESPACE@[21; 26) "\n "
22 LET_STMT@[26; 37) 22 LET_STMT@[26; 37)
23 LET_KW@[26; 29) 23 LET_KW@[26; 29) "let"
24 WHITESPACE@[29; 30) 24 WHITESPACE@[29; 30) " "
25 BIND_PAT@[30; 31) 25 BIND_PAT@[30; 31)
26 NAME@[30; 31) 26 NAME@[30; 31)
27 IDENT@[30; 31) "b" 27 IDENT@[30; 31) "b"
28 COLON@[31; 32) 28 COLON@[31; 32) ":"
29 WHITESPACE@[32; 33) 29 WHITESPACE@[32; 33) " "
30 PATH_TYPE@[33; 36) 30 PATH_TYPE@[33; 36)
31 PATH@[33; 36) 31 PATH@[33; 36)
32 PATH_SEGMENT@[33; 36) 32 PATH_SEGMENT@[33; 36)
33 NAME_REF@[33; 36) 33 NAME_REF@[33; 36)
34 IDENT@[33; 36) "i32" 34 IDENT@[33; 36) "i32"
35 SEMI@[36; 37) 35 SEMI@[36; 37) ";"
36 WHITESPACE@[37; 42) 36 WHITESPACE@[37; 42) "\n "
37 LET_STMT@[42; 53) 37 LET_STMT@[42; 53)
38 LET_KW@[42; 45) 38 LET_KW@[42; 45) "let"
39 WHITESPACE@[45; 46) 39 WHITESPACE@[45; 46) " "
40 BIND_PAT@[46; 47) 40 BIND_PAT@[46; 47)
41 NAME@[46; 47) 41 NAME@[46; 47)
42 IDENT@[46; 47) "c" 42 IDENT@[46; 47) "c"
43 WHITESPACE@[47; 48) 43 WHITESPACE@[47; 48) " "
44 EQ@[48; 49) 44 EQ@[48; 49) "="
45 WHITESPACE@[49; 50) 45 WHITESPACE@[49; 50) " "
46 LITERAL@[50; 52) 46 LITERAL@[50; 52)
47 INT_NUMBER@[50; 52) "92" 47 INT_NUMBER@[50; 52) "92"
48 SEMI@[52; 53) 48 SEMI@[52; 53) ";"
49 WHITESPACE@[53; 58) 49 WHITESPACE@[53; 58) "\n "
50 LET_STMT@[58; 74) 50 LET_STMT@[58; 74)
51 LET_KW@[58; 61) 51 LET_KW@[58; 61) "let"
52 WHITESPACE@[61; 62) 52 WHITESPACE@[61; 62) " "
53 BIND_PAT@[62; 63) 53 BIND_PAT@[62; 63)
54 NAME@[62; 63) 54 NAME@[62; 63)
55 IDENT@[62; 63) "d" 55 IDENT@[62; 63) "d"
56 COLON@[63; 64) 56 COLON@[63; 64) ":"
57 WHITESPACE@[64; 65) 57 WHITESPACE@[64; 65) " "
58 PATH_TYPE@[65; 68) 58 PATH_TYPE@[65; 68)
59 PATH@[65; 68) 59 PATH@[65; 68)
60 PATH_SEGMENT@[65; 68) 60 PATH_SEGMENT@[65; 68)
61 NAME_REF@[65; 68) 61 NAME_REF@[65; 68)
62 IDENT@[65; 68) "i32" 62 IDENT@[65; 68) "i32"
63 WHITESPACE@[68; 69) 63 WHITESPACE@[68; 69) " "
64 EQ@[69; 70) 64 EQ@[69; 70) "="
65 WHITESPACE@[70; 71) 65 WHITESPACE@[70; 71) " "
66 LITERAL@[71; 73) 66 LITERAL@[71; 73)
67 INT_NUMBER@[71; 73) "92" 67 INT_NUMBER@[71; 73) "92"
68 SEMI@[73; 74) 68 SEMI@[73; 74) ";"
69 WHITESPACE@[74; 75) 69 WHITESPACE@[74; 75) "\n"
70 R_CURLY@[75; 76) 70 R_CURLY@[75; 76) "}"
71 WHITESPACE@[76; 77) 71 WHITESPACE@[76; 77) "\n"
diff --git a/crates/ra_syntax/tests/data/parser/inline/ok/0050_fn_decl.txt b/crates/ra_syntax/tests/data/parser/inline/ok/0050_fn_decl.txt
index bb87e1d06..19f961e29 100644
--- a/crates/ra_syntax/tests/data/parser/inline/ok/0050_fn_decl.txt
+++ b/crates/ra_syntax/tests/data/parser/inline/ok/0050_fn_decl.txt
@@ -1,22 +1,22 @@
1SOURCE_FILE@[0; 22) 1SOURCE_FILE@[0; 22)
2 TRAIT_DEF@[0; 21) 2 TRAIT_DEF@[0; 21)
3 TRAIT_KW@[0; 5) 3 TRAIT_KW@[0; 5) "trait"
4 WHITESPACE@[5; 6) 4 WHITESPACE@[5; 6) " "
5 NAME@[6; 7) 5 NAME@[6; 7)
6 IDENT@[6; 7) "T" 6 IDENT@[6; 7) "T"
7 WHITESPACE@[7; 8) 7 WHITESPACE@[7; 8) " "
8 ITEM_LIST@[8; 21) 8 ITEM_LIST@[8; 21)
9 L_CURLY@[8; 9) 9 L_CURLY@[8; 9) "{"
10 WHITESPACE@[9; 10) 10 WHITESPACE@[9; 10) " "
11 FN_DEF@[10; 19) 11 FN_DEF@[10; 19)
12 FN_KW@[10; 12) 12 FN_KW@[10; 12) "fn"
13 WHITESPACE@[12; 13) 13 WHITESPACE@[12; 13) " "
14 NAME@[13; 16) 14 NAME@[13; 16)
15 IDENT@[13; 16) "foo" 15 IDENT@[13; 16) "foo"
16 PARAM_LIST@[16; 18) 16 PARAM_LIST@[16; 18)
17 L_PAREN@[16; 17) 17 L_PAREN@[16; 17) "("
18 R_PAREN@[17; 18) 18 R_PAREN@[17; 18) ")"
19 SEMI@[18; 19) 19 SEMI@[18; 19) ";"
20 WHITESPACE@[19; 20) 20 WHITESPACE@[19; 20) " "
21 R_CURLY@[20; 21) 21 R_CURLY@[20; 21) "}"
22 WHITESPACE@[21; 22) 22 WHITESPACE@[21; 22) "\n"
diff --git a/crates/ra_syntax/tests/data/parser/inline/ok/0051_unit_type.txt b/crates/ra_syntax/tests/data/parser/inline/ok/0051_unit_type.txt
index 5a6a2a829..6a469f8aa 100644
--- a/crates/ra_syntax/tests/data/parser/inline/ok/0051_unit_type.txt
+++ b/crates/ra_syntax/tests/data/parser/inline/ok/0051_unit_type.txt
@@ -1,14 +1,14 @@
1SOURCE_FILE@[0; 13) 1SOURCE_FILE@[0; 13)
2 TYPE_ALIAS_DEF@[0; 12) 2 TYPE_ALIAS_DEF@[0; 12)
3 TYPE_KW@[0; 4) 3 TYPE_KW@[0; 4) "type"
4 WHITESPACE@[4; 5) 4 WHITESPACE@[4; 5) " "
5 NAME@[5; 6) 5 NAME@[5; 6)
6 IDENT@[5; 6) "T" 6 IDENT@[5; 6) "T"
7 WHITESPACE@[6; 7) 7 WHITESPACE@[6; 7) " "
8 EQ@[7; 8) 8 EQ@[7; 8) "="
9 WHITESPACE@[8; 9) 9 WHITESPACE@[8; 9) " "
10 TUPLE_TYPE@[9; 11) 10 TUPLE_TYPE@[9; 11)
11 L_PAREN@[9; 10) 11 L_PAREN@[9; 10) "("
12 R_PAREN@[10; 11) 12 R_PAREN@[10; 11) ")"
13 SEMI@[11; 12) 13 SEMI@[11; 12) ";"
14 WHITESPACE@[12; 13) 14 WHITESPACE@[12; 13) "\n"
diff --git a/crates/ra_syntax/tests/data/parser/inline/ok/0052_path_type.txt b/crates/ra_syntax/tests/data/parser/inline/ok/0052_path_type.txt
index 0531b8fba..ee55ee219 100644
--- a/crates/ra_syntax/tests/data/parser/inline/ok/0052_path_type.txt
+++ b/crates/ra_syntax/tests/data/parser/inline/ok/0052_path_type.txt
@@ -1,70 +1,70 @@
1SOURCE_FILE@[0; 71) 1SOURCE_FILE@[0; 71)
2 TYPE_ALIAS_DEF@[0; 13) 2 TYPE_ALIAS_DEF@[0; 13)
3 TYPE_KW@[0; 4) 3 TYPE_KW@[0; 4) "type"
4 WHITESPACE@[4; 5) 4 WHITESPACE@[4; 5) " "
5 NAME@[5; 6) 5 NAME@[5; 6)
6 IDENT@[5; 6) "A" 6 IDENT@[5; 6) "A"
7 WHITESPACE@[6; 7) 7 WHITESPACE@[6; 7) " "
8 EQ@[7; 8) 8 EQ@[7; 8) "="
9 WHITESPACE@[8; 9) 9 WHITESPACE@[8; 9) " "
10 PATH_TYPE@[9; 12) 10 PATH_TYPE@[9; 12)
11 PATH@[9; 12) 11 PATH@[9; 12)
12 PATH_SEGMENT@[9; 12) 12 PATH_SEGMENT@[9; 12)
13 NAME_REF@[9; 12) 13 NAME_REF@[9; 12)
14 IDENT@[9; 12) "Foo" 14 IDENT@[9; 12) "Foo"
15 SEMI@[12; 13) 15 SEMI@[12; 13) ";"
16 WHITESPACE@[13; 14) 16 WHITESPACE@[13; 14) "\n"
17 TYPE_ALIAS_DEF@[14; 29) 17 TYPE_ALIAS_DEF@[14; 29)
18 TYPE_KW@[14; 18) 18 TYPE_KW@[14; 18) "type"
19 WHITESPACE@[18; 19) 19 WHITESPACE@[18; 19) " "
20 NAME@[19; 20) 20 NAME@[19; 20)
21 IDENT@[19; 20) "B" 21 IDENT@[19; 20) "B"
22 WHITESPACE@[20; 21) 22 WHITESPACE@[20; 21) " "
23 EQ@[21; 22) 23 EQ@[21; 22) "="
24 WHITESPACE@[22; 23) 24 WHITESPACE@[22; 23) " "
25 PATH_TYPE@[23; 28) 25 PATH_TYPE@[23; 28)
26 PATH@[23; 28) 26 PATH@[23; 28)
27 PATH_SEGMENT@[23; 28) 27 PATH_SEGMENT@[23; 28)
28 COLONCOLON@[23; 25) 28 COLONCOLON@[23; 25) "::"
29 NAME_REF@[25; 28) 29 NAME_REF@[25; 28)
30 IDENT@[25; 28) "Foo" 30 IDENT@[25; 28) "Foo"
31 SEMI@[28; 29) 31 SEMI@[28; 29) ";"
32 WHITESPACE@[29; 30) 32 WHITESPACE@[29; 30) "\n"
33 TYPE_ALIAS_DEF@[30; 49) 33 TYPE_ALIAS_DEF@[30; 49)
34 TYPE_KW@[30; 34) 34 TYPE_KW@[30; 34) "type"
35 WHITESPACE@[34; 35) 35 WHITESPACE@[34; 35) " "
36 NAME@[35; 36) 36 NAME@[35; 36)
37 IDENT@[35; 36) "C" 37 IDENT@[35; 36) "C"
38 WHITESPACE@[36; 37) 38 WHITESPACE@[36; 37) " "
39 EQ@[37; 38) 39 EQ@[37; 38) "="
40 WHITESPACE@[38; 39) 40 WHITESPACE@[38; 39) " "
41 PATH_TYPE@[39; 48) 41 PATH_TYPE@[39; 48)
42 PATH@[39; 48) 42 PATH@[39; 48)
43 PATH@[39; 43) 43 PATH@[39; 43)
44 PATH_SEGMENT@[39; 43) 44 PATH_SEGMENT@[39; 43)
45 SELF_KW@[39; 43) 45 SELF_KW@[39; 43) "self"
46 COLONCOLON@[43; 45) 46 COLONCOLON@[43; 45) "::"
47 PATH_SEGMENT@[45; 48) 47 PATH_SEGMENT@[45; 48)
48 NAME_REF@[45; 48) 48 NAME_REF@[45; 48)
49 IDENT@[45; 48) "Foo" 49 IDENT@[45; 48) "Foo"
50 SEMI@[48; 49) 50 SEMI@[48; 49) ";"
51 WHITESPACE@[49; 50) 51 WHITESPACE@[49; 50) "\n"
52 TYPE_ALIAS_DEF@[50; 70) 52 TYPE_ALIAS_DEF@[50; 70)
53 TYPE_KW@[50; 54) 53 TYPE_KW@[50; 54) "type"
54 WHITESPACE@[54; 55) 54 WHITESPACE@[54; 55) " "
55 NAME@[55; 56) 55 NAME@[55; 56)
56 IDENT@[55; 56) "D" 56 IDENT@[55; 56) "D"
57 WHITESPACE@[56; 57) 57 WHITESPACE@[56; 57) " "
58 EQ@[57; 58) 58 EQ@[57; 58) "="
59 WHITESPACE@[58; 59) 59 WHITESPACE@[58; 59) " "
60 PATH_TYPE@[59; 69) 60 PATH_TYPE@[59; 69)
61 PATH@[59; 69) 61 PATH@[59; 69)
62 PATH@[59; 64) 62 PATH@[59; 64)
63 PATH_SEGMENT@[59; 64) 63 PATH_SEGMENT@[59; 64)
64 SUPER_KW@[59; 64) 64 SUPER_KW@[59; 64) "super"
65 COLONCOLON@[64; 66) 65 COLONCOLON@[64; 66) "::"
66 PATH_SEGMENT@[66; 69) 66 PATH_SEGMENT@[66; 69)
67 NAME_REF@[66; 69) 67 NAME_REF@[66; 69)
68 IDENT@[66; 69) "Foo" 68 IDENT@[66; 69) "Foo"
69 SEMI@[69; 70) 69 SEMI@[69; 70) ";"
70 WHITESPACE@[70; 71) 70 WHITESPACE@[70; 71) "\n"
diff --git a/crates/ra_syntax/tests/data/parser/inline/ok/0053_path_expr.txt b/crates/ra_syntax/tests/data/parser/inline/ok/0053_path_expr.txt
index 673ea1d3d..bc4b97c9f 100644
--- a/crates/ra_syntax/tests/data/parser/inline/ok/0053_path_expr.txt
+++ b/crates/ra_syntax/tests/data/parser/inline/ok/0053_path_expr.txt
@@ -1,95 +1,95 @@
1SOURCE_FILE@[0; 91) 1SOURCE_FILE@[0; 91)
2 FN_DEF@[0; 90) 2 FN_DEF@[0; 90)
3 FN_KW@[0; 2) 3 FN_KW@[0; 2) "fn"
4 WHITESPACE@[2; 3) 4 WHITESPACE@[2; 3) " "
5 NAME@[3; 6) 5 NAME@[3; 6)
6 IDENT@[3; 6) "foo" 6 IDENT@[3; 6) "foo"
7 PARAM_LIST@[6; 8) 7 PARAM_LIST@[6; 8)
8 L_PAREN@[6; 7) 8 L_PAREN@[6; 7) "("
9 R_PAREN@[7; 8) 9 R_PAREN@[7; 8) ")"
10 WHITESPACE@[8; 9) 10 WHITESPACE@[8; 9) " "
11 BLOCK@[9; 90) 11 BLOCK@[9; 90)
12 L_CURLY@[9; 10) 12 L_CURLY@[9; 10) "{"
13 WHITESPACE@[10; 15) 13 WHITESPACE@[10; 15) "\n "
14 LET_STMT@[15; 25) 14 LET_STMT@[15; 25)
15 LET_KW@[15; 18) 15 LET_KW@[15; 18) "let"
16 WHITESPACE@[18; 19) 16 WHITESPACE@[18; 19) " "
17 PLACEHOLDER_PAT@[19; 20) 17 PLACEHOLDER_PAT@[19; 20)
18 UNDERSCORE@[19; 20) 18 UNDERSCORE@[19; 20) "_"
19 WHITESPACE@[20; 21) 19 WHITESPACE@[20; 21) " "
20 EQ@[21; 22) 20 EQ@[21; 22) "="
21 WHITESPACE@[22; 23) 21 WHITESPACE@[22; 23) " "
22 PATH_EXPR@[23; 24) 22 PATH_EXPR@[23; 24)
23 PATH@[23; 24) 23 PATH@[23; 24)
24 PATH_SEGMENT@[23; 24) 24 PATH_SEGMENT@[23; 24)
25 NAME_REF@[23; 24) 25 NAME_REF@[23; 24)
26 IDENT@[23; 24) "a" 26 IDENT@[23; 24) "a"
27 SEMI@[24; 25) 27 SEMI@[24; 25) ";"
28 WHITESPACE@[25; 30) 28 WHITESPACE@[25; 30) "\n "
29 LET_STMT@[30; 43) 29 LET_STMT@[30; 43)
30 LET_KW@[30; 33) 30 LET_KW@[30; 33) "let"
31 WHITESPACE@[33; 34) 31 WHITESPACE@[33; 34) " "
32 PLACEHOLDER_PAT@[34; 35) 32 PLACEHOLDER_PAT@[34; 35)
33 UNDERSCORE@[34; 35) 33 UNDERSCORE@[34; 35) "_"
34 WHITESPACE@[35; 36) 34 WHITESPACE@[35; 36) " "
35 EQ@[36; 37) 35 EQ@[36; 37) "="
36 WHITESPACE@[37; 38) 36 WHITESPACE@[37; 38) " "
37 PATH_EXPR@[38; 42) 37 PATH_EXPR@[38; 42)
38 PATH@[38; 42) 38 PATH@[38; 42)
39 PATH@[38; 39) 39 PATH@[38; 39)
40 PATH_SEGMENT@[38; 39) 40 PATH_SEGMENT@[38; 39)
41 NAME_REF@[38; 39) 41 NAME_REF@[38; 39)
42 IDENT@[38; 39) "a" 42 IDENT@[38; 39) "a"
43 COLONCOLON@[39; 41) 43 COLONCOLON@[39; 41) "::"
44 PATH_SEGMENT@[41; 42) 44 PATH_SEGMENT@[41; 42)
45 NAME_REF@[41; 42) 45 NAME_REF@[41; 42)
46 IDENT@[41; 42) "b" 46 IDENT@[41; 42) "b"
47 SEMI@[42; 43) 47 SEMI@[42; 43) ";"
48 WHITESPACE@[43; 48) 48 WHITESPACE@[43; 48) "\n "
49 LET_STMT@[48; 65) 49 LET_STMT@[48; 65)
50 LET_KW@[48; 51) 50 LET_KW@[48; 51) "let"
51 WHITESPACE@[51; 52) 51 WHITESPACE@[51; 52) " "
52 PLACEHOLDER_PAT@[52; 53) 52 PLACEHOLDER_PAT@[52; 53)
53 UNDERSCORE@[52; 53) 53 UNDERSCORE@[52; 53) "_"
54 WHITESPACE@[53; 54) 54 WHITESPACE@[53; 54) " "
55 EQ@[54; 55) 55 EQ@[54; 55) "="
56 WHITESPACE@[55; 56) 56 WHITESPACE@[55; 56) " "
57 PATH_EXPR@[56; 64) 57 PATH_EXPR@[56; 64)
58 PATH@[56; 64) 58 PATH@[56; 64)
59 PATH_SEGMENT@[56; 64) 59 PATH_SEGMENT@[56; 64)
60 COLONCOLON@[56; 58) 60 COLONCOLON@[56; 58) "::"
61 NAME_REF@[58; 59) 61 NAME_REF@[58; 59)
62 IDENT@[58; 59) "a" 62 IDENT@[58; 59) "a"
63 TYPE_ARG_LIST@[59; 64) 63 TYPE_ARG_LIST@[59; 64)
64 COLONCOLON@[59; 61) 64 COLONCOLON@[59; 61) "::"
65 L_ANGLE@[61; 62) 65 L_ANGLE@[61; 62) "<"
66 TYPE_ARG@[62; 63) 66 TYPE_ARG@[62; 63)
67 PATH_TYPE@[62; 63) 67 PATH_TYPE@[62; 63)
68 PATH@[62; 63) 68 PATH@[62; 63)
69 PATH_SEGMENT@[62; 63) 69 PATH_SEGMENT@[62; 63)
70 NAME_REF@[62; 63) 70 NAME_REF@[62; 63)
71 IDENT@[62; 63) "b" 71 IDENT@[62; 63) "b"
72 R_ANGLE@[63; 64) 72 R_ANGLE@[63; 64) ">"
73 SEMI@[64; 65) 73 SEMI@[64; 65) ";"
74 WHITESPACE@[65; 70) 74 WHITESPACE@[65; 70) "\n "
75 LET_STMT@[70; 88) 75 LET_STMT@[70; 88)
76 LET_KW@[70; 73) 76 LET_KW@[70; 73) "let"
77 WHITESPACE@[73; 74) 77 WHITESPACE@[73; 74) " "
78 PLACEHOLDER_PAT@[74; 75) 78 PLACEHOLDER_PAT@[74; 75)
79 UNDERSCORE@[74; 75) 79 UNDERSCORE@[74; 75) "_"
80 WHITESPACE@[75; 76) 80 WHITESPACE@[75; 76) " "
81 EQ@[76; 77) 81 EQ@[76; 77) "="
82 WHITESPACE@[77; 78) 82 WHITESPACE@[77; 78) " "
83 MACRO_CALL@[78; 87) 83 MACRO_CALL@[78; 87)
84 PATH@[78; 84) 84 PATH@[78; 84)
85 PATH_SEGMENT@[78; 84) 85 PATH_SEGMENT@[78; 84)
86 NAME_REF@[78; 84) 86 NAME_REF@[78; 84)
87 IDENT@[78; 84) "format" 87 IDENT@[78; 84) "format"
88 EXCL@[84; 85) 88 EXCL@[84; 85) "!"
89 TOKEN_TREE@[85; 87) 89 TOKEN_TREE@[85; 87)
90 L_PAREN@[85; 86) 90 L_PAREN@[85; 86) "("
91 R_PAREN@[86; 87) 91 R_PAREN@[86; 87) ")"
92 SEMI@[87; 88) 92 SEMI@[87; 88) ";"
93 WHITESPACE@[88; 89) 93 WHITESPACE@[88; 89) "\n"
94 R_CURLY@[89; 90) 94 R_CURLY@[89; 90) "}"
95 WHITESPACE@[90; 91) 95 WHITESPACE@[90; 91) "\n"
diff --git a/crates/ra_syntax/tests/data/parser/inline/ok/0054_field_attrs.txt b/crates/ra_syntax/tests/data/parser/inline/ok/0054_field_attrs.txt
index e02ebf400..f214d1d47 100644
--- a/crates/ra_syntax/tests/data/parser/inline/ok/0054_field_attrs.txt
+++ b/crates/ra_syntax/tests/data/parser/inline/ok/0054_field_attrs.txt
@@ -1,42 +1,42 @@
1SOURCE_FILE@[0; 64) 1SOURCE_FILE@[0; 64)
2 STRUCT_DEF@[0; 63) 2 STRUCT_DEF@[0; 63)
3 STRUCT_KW@[0; 6) 3 STRUCT_KW@[0; 6) "struct"
4 WHITESPACE@[6; 7) 4 WHITESPACE@[6; 7) " "
5 NAME@[7; 8) 5 NAME@[7; 8)
6 IDENT@[7; 8) "S" 6 IDENT@[7; 8) "S"
7 WHITESPACE@[8; 9) 7 WHITESPACE@[8; 9) " "
8 NAMED_FIELD_DEF_LIST@[9; 63) 8 NAMED_FIELD_DEF_LIST@[9; 63)
9 L_CURLY@[9; 10) 9 L_CURLY@[9; 10) "{"
10 WHITESPACE@[10; 15) 10 WHITESPACE@[10; 15) "\n "
11 NAMED_FIELD_DEF@[15; 60) 11 NAMED_FIELD_DEF@[15; 60)
12 ATTR@[15; 43) 12 ATTR@[15; 43)
13 POUND@[15; 16) 13 POUND@[15; 16) "#"
14 TOKEN_TREE@[16; 43) 14 TOKEN_TREE@[16; 43)
15 L_BRACK@[16; 17) 15 L_BRACK@[16; 17) "["
16 IDENT@[17; 22) "serde" 16 IDENT@[17; 22) "serde"
17 TOKEN_TREE@[22; 42) 17 TOKEN_TREE@[22; 42)
18 L_PAREN@[22; 23) 18 L_PAREN@[22; 23) "("
19 IDENT@[23; 27) "with" 19 IDENT@[23; 27) "with"
20 WHITESPACE@[27; 28) 20 WHITESPACE@[27; 28) " "
21 EQ@[28; 29) 21 EQ@[28; 29) "="
22 WHITESPACE@[29; 30) 22 WHITESPACE@[29; 30) " "
23 STRING@[30; 41) 23 STRING@[30; 41) "\"url_serde\""
24 R_PAREN@[41; 42) 24 R_PAREN@[41; 42) ")"
25 R_BRACK@[42; 43) 25 R_BRACK@[42; 43) "]"
26 WHITESPACE@[43; 48) 26 WHITESPACE@[43; 48) "\n "
27 VISIBILITY@[48; 51) 27 VISIBILITY@[48; 51)
28 PUB_KW@[48; 51) 28 PUB_KW@[48; 51) "pub"
29 WHITESPACE@[51; 52) 29 WHITESPACE@[51; 52) " "
30 NAME@[52; 55) 30 NAME@[52; 55)
31 IDENT@[52; 55) "uri" 31 IDENT@[52; 55) "uri"
32 COLON@[55; 56) 32 COLON@[55; 56) ":"
33 WHITESPACE@[56; 57) 33 WHITESPACE@[56; 57) " "
34 PATH_TYPE@[57; 60) 34 PATH_TYPE@[57; 60)
35 PATH@[57; 60) 35 PATH@[57; 60)
36 PATH_SEGMENT@[57; 60) 36 PATH_SEGMENT@[57; 60)
37 NAME_REF@[57; 60) 37 NAME_REF@[57; 60)
38 IDENT@[57; 60) "Uri" 38 IDENT@[57; 60) "Uri"
39 COMMA@[60; 61) 39 COMMA@[60; 61) ","
40 WHITESPACE@[61; 62) 40 WHITESPACE@[61; 62) "\n"
41 R_CURLY@[62; 63) 41 R_CURLY@[62; 63) "}"
42 WHITESPACE@[63; 64) 42 WHITESPACE@[63; 64) "\n"
diff --git a/crates/ra_syntax/tests/data/parser/inline/ok/0055_literal_pattern.txt b/crates/ra_syntax/tests/data/parser/inline/ok/0055_literal_pattern.txt
index 51c5ab7f2..ab5dad438 100644
--- a/crates/ra_syntax/tests/data/parser/inline/ok/0055_literal_pattern.txt
+++ b/crates/ra_syntax/tests/data/parser/inline/ok/0055_literal_pattern.txt
@@ -1,76 +1,76 @@
1SOURCE_FILE@[0; 113) 1SOURCE_FILE@[0; 113)
2 FN_DEF@[0; 112) 2 FN_DEF@[0; 112)
3 FN_KW@[0; 2) 3 FN_KW@[0; 2) "fn"
4 WHITESPACE@[2; 3) 4 WHITESPACE@[2; 3) " "
5 NAME@[3; 7) 5 NAME@[3; 7)
6 IDENT@[3; 7) "main" 6 IDENT@[3; 7) "main"
7 PARAM_LIST@[7; 9) 7 PARAM_LIST@[7; 9)
8 L_PAREN@[7; 8) 8 L_PAREN@[7; 8) "("
9 R_PAREN@[8; 9) 9 R_PAREN@[8; 9) ")"
10 WHITESPACE@[9; 10) 10 WHITESPACE@[9; 10) " "
11 BLOCK@[10; 112) 11 BLOCK@[10; 112)
12 L_CURLY@[10; 11) 12 L_CURLY@[10; 11) "{"
13 WHITESPACE@[11; 16) 13 WHITESPACE@[11; 16) "\n "
14 MATCH_EXPR@[16; 110) 14 MATCH_EXPR@[16; 110)
15 MATCH_KW@[16; 21) 15 MATCH_KW@[16; 21) "match"
16 WHITESPACE@[21; 22) 16 WHITESPACE@[21; 22) " "
17 TUPLE_EXPR@[22; 24) 17 TUPLE_EXPR@[22; 24)
18 L_PAREN@[22; 23) 18 L_PAREN@[22; 23) "("
19 R_PAREN@[23; 24) 19 R_PAREN@[23; 24) ")"
20 WHITESPACE@[24; 25) 20 WHITESPACE@[24; 25) " "
21 MATCH_ARM_LIST@[25; 110) 21 MATCH_ARM_LIST@[25; 110)
22 L_CURLY@[25; 26) 22 L_CURLY@[25; 26) "{"
23 WHITESPACE@[26; 35) 23 WHITESPACE@[26; 35) "\n "
24 MATCH_ARM@[35; 43) 24 MATCH_ARM@[35; 43)
25 LITERAL_PAT@[35; 37) 25 LITERAL_PAT@[35; 37)
26 MINUS@[35; 36) 26 MINUS@[35; 36) "-"
27 LITERAL@[36; 37) 27 LITERAL@[36; 37)
28 INT_NUMBER@[36; 37) "1" 28 INT_NUMBER@[36; 37) "1"
29 WHITESPACE@[37; 38) 29 WHITESPACE@[37; 38) " "
30 FAT_ARROW@[38; 40) 30 FAT_ARROW@[38; 40) "=>"
31 WHITESPACE@[40; 41) 31 WHITESPACE@[40; 41) " "
32 TUPLE_EXPR@[41; 43) 32 TUPLE_EXPR@[41; 43)
33 L_PAREN@[41; 42) 33 L_PAREN@[41; 42) "("
34 R_PAREN@[42; 43) 34 R_PAREN@[42; 43) ")"
35 COMMA@[43; 44) 35 COMMA@[43; 44) ","
36 WHITESPACE@[44; 53) 36 WHITESPACE@[44; 53) "\n "
37 MATCH_ARM@[53; 61) 37 MATCH_ARM@[53; 61)
38 LITERAL_PAT@[53; 55) 38 LITERAL_PAT@[53; 55)
39 LITERAL@[53; 55) 39 LITERAL@[53; 55)
40 INT_NUMBER@[53; 55) "92" 40 INT_NUMBER@[53; 55) "92"
41 WHITESPACE@[55; 56) 41 WHITESPACE@[55; 56) " "
42 FAT_ARROW@[56; 58) 42 FAT_ARROW@[56; 58) "=>"
43 WHITESPACE@[58; 59) 43 WHITESPACE@[58; 59) " "
44 TUPLE_EXPR@[59; 61) 44 TUPLE_EXPR@[59; 61)
45 L_PAREN@[59; 60) 45 L_PAREN@[59; 60) "("
46 R_PAREN@[60; 61) 46 R_PAREN@[60; 61) ")"
47 COMMA@[61; 62) 47 COMMA@[61; 62) ","
48 WHITESPACE@[62; 71) 48 WHITESPACE@[62; 71) "\n "
49 MATCH_ARM@[71; 80) 49 MATCH_ARM@[71; 80)
50 LITERAL_PAT@[71; 74) 50 LITERAL_PAT@[71; 74)
51 LITERAL@[71; 74) 51 LITERAL@[71; 74)
52 CHAR@[71; 74) 52 CHAR@[71; 74) "\'c\'"
53 WHITESPACE@[74; 75) 53 WHITESPACE@[74; 75) " "
54 FAT_ARROW@[75; 77) 54 FAT_ARROW@[75; 77) "=>"
55 WHITESPACE@[77; 78) 55 WHITESPACE@[77; 78) " "
56 TUPLE_EXPR@[78; 80) 56 TUPLE_EXPR@[78; 80)
57 L_PAREN@[78; 79) 57 L_PAREN@[78; 79) "("
58 R_PAREN@[79; 80) 58 R_PAREN@[79; 80) ")"
59 COMMA@[80; 81) 59 COMMA@[80; 81) ","
60 WHITESPACE@[81; 90) 60 WHITESPACE@[81; 90) "\n "
61 MATCH_ARM@[90; 103) 61 MATCH_ARM@[90; 103)
62 LITERAL_PAT@[90; 97) 62 LITERAL_PAT@[90; 97)
63 LITERAL@[90; 97) 63 LITERAL@[90; 97)
64 STRING@[90; 97) 64 STRING@[90; 97) "\"hello\""
65 WHITESPACE@[97; 98) 65 WHITESPACE@[97; 98) " "
66 FAT_ARROW@[98; 100) 66 FAT_ARROW@[98; 100) "=>"
67 WHITESPACE@[100; 101) 67 WHITESPACE@[100; 101) " "
68 TUPLE_EXPR@[101; 103) 68 TUPLE_EXPR@[101; 103)
69 L_PAREN@[101; 102) 69 L_PAREN@[101; 102) "("
70 R_PAREN@[102; 103) 70 R_PAREN@[102; 103) ")"
71 COMMA@[103; 104) 71 COMMA@[103; 104) ","
72 WHITESPACE@[104; 109) 72 WHITESPACE@[104; 109) "\n "
73 R_CURLY@[109; 110) 73 R_CURLY@[109; 110) "}"
74 WHITESPACE@[110; 111) 74 WHITESPACE@[110; 111) "\n"
75 R_CURLY@[111; 112) 75 R_CURLY@[111; 112) "}"
76 WHITESPACE@[112; 113) 76 WHITESPACE@[112; 113) "\n"
diff --git a/crates/ra_syntax/tests/data/parser/inline/ok/0056_where_clause.txt b/crates/ra_syntax/tests/data/parser/inline/ok/0056_where_clause.txt
index 68485dc0b..c86a0db3f 100644
--- a/crates/ra_syntax/tests/data/parser/inline/ok/0056_where_clause.txt
+++ b/crates/ra_syntax/tests/data/parser/inline/ok/0056_where_clause.txt
@@ -1,54 +1,61 @@
1SOURCE_FILE@[0; 116) 1SOURCE_FILE@[0; 116)
2 FN_DEF@[0; 115) 2 FN_DEF@[0; 115)
3 FN_KW@[0; 2) 3 FN_KW@[0; 2) "fn"
4 WHITESPACE@[2; 3) 4 WHITESPACE@[2; 3) " "
5 NAME@[3; 6) 5 NAME@[3; 6)
6 IDENT@[3; 6) "foo" 6 IDENT@[3; 6) "foo"
7 PARAM_LIST@[6; 8) 7 PARAM_LIST@[6; 8)
8 L_PAREN@[6; 7) 8 L_PAREN@[6; 7) "("
9 R_PAREN@[7; 8) 9 R_PAREN@[7; 8) ")"
10 WHITESPACE@[8; 9) 10 WHITESPACE@[8; 9) "\n"
11 WHERE_CLAUSE@[9; 112) 11 WHERE_CLAUSE@[9; 112)
12 WHERE_KW@[9; 14) 12 WHERE_KW@[9; 14) "where"
13 WHITESPACE@[14; 18) 13 WHITESPACE@[14; 18) "\n "
14 WHERE_PRED@[18; 29) 14 WHERE_PRED@[18; 29)
15 LIFETIME@[18; 20) "'a" 15 LIFETIME@[18; 20) "\'a"
16 COLON@[20; 21) 16 COLON@[20; 21) ":"
17 WHITESPACE@[21; 22) 17 WHITESPACE@[21; 22) " "
18 LIFETIME@[22; 24) "'b" 18 TYPE_BOUND_LIST@[22; 29)
19 WHITESPACE@[24; 25) 19 TYPE_BOUND@[22; 24)
20 PLUS@[25; 26) 20 LIFETIME@[22; 24) "\'b"
21 WHITESPACE@[26; 27) 21 WHITESPACE@[24; 25) " "
22 LIFETIME@[27; 29) "'c" 22 PLUS@[25; 26) "+"
23 COMMA@[29; 30) 23 WHITESPACE@[26; 27) " "
24 WHITESPACE@[30; 34) 24 TYPE_BOUND@[27; 29)
25 LIFETIME@[27; 29) "\'c"
26 COMMA@[29; 30) ","
27 WHITESPACE@[30; 34) "\n "
25 WHERE_PRED@[34; 59) 28 WHERE_PRED@[34; 59)
26 PATH_TYPE@[34; 35) 29 PATH_TYPE@[34; 35)
27 PATH@[34; 35) 30 PATH@[34; 35)
28 PATH_SEGMENT@[34; 35) 31 PATH_SEGMENT@[34; 35)
29 NAME_REF@[34; 35) 32 NAME_REF@[34; 35)
30 IDENT@[34; 35) "T" 33 IDENT@[34; 35) "T"
31 COLON@[35; 36) 34 COLON@[35; 36) ":"
32 WHITESPACE@[36; 37) 35 WHITESPACE@[36; 37) " "
33 PATH_TYPE@[37; 59) 36 TYPE_BOUND_LIST@[37; 59)
34 PATH@[37; 42) 37 TYPE_BOUND@[37; 42)
35 PATH_SEGMENT@[37; 42) 38 PATH_TYPE@[37; 42)
36 NAME_REF@[37; 42) 39 PATH@[37; 42)
37 IDENT@[37; 42) "Clone" 40 PATH_SEGMENT@[37; 42)
38 WHITESPACE@[42; 43) 41 NAME_REF@[37; 42)
39 PLUS@[43; 44) 42 IDENT@[37; 42) "Clone"
40 WHITESPACE@[44; 45) 43 WHITESPACE@[42; 43) " "
41 PATH_TYPE@[45; 59) 44 PLUS@[43; 44) "+"
42 PATH@[45; 49) 45 WHITESPACE@[44; 45) " "
43 PATH_SEGMENT@[45; 49) 46 TYPE_BOUND@[45; 49)
44 NAME_REF@[45; 49) 47 PATH_TYPE@[45; 49)
45 IDENT@[45; 49) "Copy" 48 PATH@[45; 49)
46 WHITESPACE@[49; 50) 49 PATH_SEGMENT@[45; 49)
47 PLUS@[50; 51) 50 NAME_REF@[45; 49)
48 WHITESPACE@[51; 52) 51 IDENT@[45; 49) "Copy"
49 LIFETIME@[52; 59) "'static" 52 WHITESPACE@[49; 50) " "
50 COMMA@[59; 60) 53 PLUS@[50; 51) "+"
51 WHITESPACE@[60; 64) 54 WHITESPACE@[51; 52) " "
55 TYPE_BOUND@[52; 59)
56 LIFETIME@[52; 59) "\'static"
57 COMMA@[59; 60) ","
58 WHITESPACE@[60; 64) "\n "
52 WHERE_PRED@[64; 82) 59 WHERE_PRED@[64; 82)
53 PATH_TYPE@[64; 78) 60 PATH_TYPE@[64; 78)
54 PATH@[64; 78) 61 PATH@[64; 78)
@@ -56,44 +63,48 @@ SOURCE_FILE@[0; 116)
56 PATH_SEGMENT@[64; 72) 63 PATH_SEGMENT@[64; 72)
57 NAME_REF@[64; 72) 64 NAME_REF@[64; 72)
58 IDENT@[64; 72) "Iterator" 65 IDENT@[64; 72) "Iterator"
59 COLONCOLON@[72; 74) 66 COLONCOLON@[72; 74) "::"
60 PATH_SEGMENT@[74; 78) 67 PATH_SEGMENT@[74; 78)
61 NAME_REF@[74; 78) 68 NAME_REF@[74; 78)
62 IDENT@[74; 78) "Item" 69 IDENT@[74; 78) "Item"
63 COLON@[78; 79) 70 COLON@[78; 79) ":"
64 WHITESPACE@[79; 80) 71 WHITESPACE@[79; 80) " "
65 LIFETIME@[80; 82) "'a" 72 TYPE_BOUND_LIST@[80; 82)
66 COMMA@[82; 83) 73 TYPE_BOUND@[80; 82)
67 WHITESPACE@[83; 87) 74 LIFETIME@[80; 82) "\'a"
75 COMMA@[82; 83) ","
76 WHITESPACE@[83; 87) "\n "
68 WHERE_PRED@[87; 112) 77 WHERE_PRED@[87; 112)
69 PATH_TYPE@[87; 108) 78 PATH_TYPE@[87; 108)
70 PATH@[87; 108) 79 PATH@[87; 108)
71 PATH@[87; 102) 80 PATH@[87; 102)
72 PATH_SEGMENT@[87; 102) 81 PATH_SEGMENT@[87; 102)
73 L_ANGLE@[87; 88) 82 L_ANGLE@[87; 88) "<"
74 PATH_TYPE@[88; 89) 83 PATH_TYPE@[88; 89)
75 PATH@[88; 89) 84 PATH@[88; 89)
76 PATH_SEGMENT@[88; 89) 85 PATH_SEGMENT@[88; 89)
77 NAME_REF@[88; 89) 86 NAME_REF@[88; 89)
78 IDENT@[88; 89) "T" 87 IDENT@[88; 89) "T"
79 WHITESPACE@[89; 90) 88 WHITESPACE@[89; 90) " "
80 AS_KW@[90; 92) 89 AS_KW@[90; 92) "as"
81 WHITESPACE@[92; 93) 90 WHITESPACE@[92; 93) " "
82 PATH_TYPE@[93; 101) 91 PATH_TYPE@[93; 101)
83 PATH@[93; 101) 92 PATH@[93; 101)
84 PATH_SEGMENT@[93; 101) 93 PATH_SEGMENT@[93; 101)
85 NAME_REF@[93; 101) 94 NAME_REF@[93; 101)
86 IDENT@[93; 101) "Iterator" 95 IDENT@[93; 101) "Iterator"
87 R_ANGLE@[101; 102) 96 R_ANGLE@[101; 102) ">"
88 COLONCOLON@[102; 104) 97 COLONCOLON@[102; 104) "::"
89 PATH_SEGMENT@[104; 108) 98 PATH_SEGMENT@[104; 108)
90 NAME_REF@[104; 108) 99 NAME_REF@[104; 108)
91 IDENT@[104; 108) "Item" 100 IDENT@[104; 108) "Item"
92 COLON@[108; 109) 101 COLON@[108; 109) ":"
93 WHITESPACE@[109; 110) 102 WHITESPACE@[109; 110) " "
94 LIFETIME@[110; 112) "'a" 103 TYPE_BOUND_LIST@[110; 112)
95 WHITESPACE@[112; 113) 104 TYPE_BOUND@[110; 112)
105 LIFETIME@[110; 112) "\'a"
106 WHITESPACE@[112; 113) "\n"
96 BLOCK@[113; 115) 107 BLOCK@[113; 115)
97 L_CURLY@[113; 114) 108 L_CURLY@[113; 114) "{"
98 R_CURLY@[114; 115) 109 R_CURLY@[114; 115) "}"
99 WHITESPACE@[115; 116) 110 WHITESPACE@[115; 116) "\n"
diff --git a/crates/ra_syntax/tests/data/parser/inline/ok/0057_const_fn.txt b/crates/ra_syntax/tests/data/parser/inline/ok/0057_const_fn.txt
index 8206d973b..7a8b81983 100644
--- a/crates/ra_syntax/tests/data/parser/inline/ok/0057_const_fn.txt
+++ b/crates/ra_syntax/tests/data/parser/inline/ok/0057_const_fn.txt
@@ -1,16 +1,16 @@
1SOURCE_FILE@[0; 18) 1SOURCE_FILE@[0; 18)
2 FN_DEF@[0; 17) 2 FN_DEF@[0; 17)
3 CONST_KW@[0; 5) 3 CONST_KW@[0; 5) "const"
4 WHITESPACE@[5; 6) 4 WHITESPACE@[5; 6) " "
5 FN_KW@[6; 8) 5 FN_KW@[6; 8) "fn"
6 WHITESPACE@[8; 9) 6 WHITESPACE@[8; 9) " "
7 NAME@[9; 12) 7 NAME@[9; 12)
8 IDENT@[9; 12) "foo" 8 IDENT@[9; 12) "foo"
9 PARAM_LIST@[12; 14) 9 PARAM_LIST@[12; 14)
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@[15; 17)
14 L_CURLY@[15; 16) 14 L_CURLY@[15; 16) "{"
15 R_CURLY@[16; 17) 15 R_CURLY@[16; 17) "}"
16 WHITESPACE@[17; 18) 16 WHITESPACE@[17; 18) "\n"
diff --git a/crates/ra_syntax/tests/data/parser/inline/ok/0058_range_pat.txt b/crates/ra_syntax/tests/data/parser/inline/ok/0058_range_pat.txt
index de54c49e6..1b7e9b905 100644
--- a/crates/ra_syntax/tests/data/parser/inline/ok/0058_range_pat.txt
+++ b/crates/ra_syntax/tests/data/parser/inline/ok/0058_range_pat.txt
@@ -1,82 +1,82 @@
1SOURCE_FILE@[0; 112) 1SOURCE_FILE@[0; 112)
2 FN_DEF@[0; 111) 2 FN_DEF@[0; 111)
3 FN_KW@[0; 2) 3 FN_KW@[0; 2) "fn"
4 WHITESPACE@[2; 3) 4 WHITESPACE@[2; 3) " "
5 NAME@[3; 7) 5 NAME@[3; 7)
6 IDENT@[3; 7) "main" 6 IDENT@[3; 7) "main"
7 PARAM_LIST@[7; 9) 7 PARAM_LIST@[7; 9)
8 L_PAREN@[7; 8) 8 L_PAREN@[7; 8) "("
9 R_PAREN@[8; 9) 9 R_PAREN@[8; 9) ")"
10 WHITESPACE@[9; 10) 10 WHITESPACE@[9; 10) " "
11 BLOCK@[10; 111) 11 BLOCK@[10; 111)
12 L_CURLY@[10; 11) 12 L_CURLY@[10; 11) "{"
13 WHITESPACE@[11; 16) 13 WHITESPACE@[11; 16) "\n "
14 MATCH_EXPR@[16; 109) 14 MATCH_EXPR@[16; 109)
15 MATCH_KW@[16; 21) 15 MATCH_KW@[16; 21) "match"
16 WHITESPACE@[21; 22) 16 WHITESPACE@[21; 22) " "
17 LITERAL@[22; 24) 17 LITERAL@[22; 24)
18 INT_NUMBER@[22; 24) "92" 18 INT_NUMBER@[22; 24) "92"
19 WHITESPACE@[24; 25) 19 WHITESPACE@[24; 25) " "
20 MATCH_ARM_LIST@[25; 109) 20 MATCH_ARM_LIST@[25; 109)
21 L_CURLY@[25; 26) 21 L_CURLY@[25; 26) "{"
22 WHITESPACE@[26; 35) 22 WHITESPACE@[26; 35) "\n "
23 MATCH_ARM@[35; 50) 23 MATCH_ARM@[35; 50)
24 RANGE_PAT@[35; 44) 24 RANGE_PAT@[35; 44)
25 LITERAL_PAT@[35; 36) 25 LITERAL_PAT@[35; 36)
26 LITERAL@[35; 36) 26 LITERAL@[35; 36)
27 INT_NUMBER@[35; 36) "0" 27 INT_NUMBER@[35; 36) "0"
28 WHITESPACE@[36; 37) 28 WHITESPACE@[36; 37) " "
29 DOTDOTDOT@[37; 40) 29 DOTDOTDOT@[37; 40) "..."
30 WHITESPACE@[40; 41) 30 WHITESPACE@[40; 41) " "
31 LITERAL_PAT@[41; 44) 31 LITERAL_PAT@[41; 44)
32 LITERAL@[41; 44) 32 LITERAL@[41; 44)
33 INT_NUMBER@[41; 44) "100" 33 INT_NUMBER@[41; 44) "100"
34 WHITESPACE@[44; 45) 34 WHITESPACE@[44; 45) " "
35 FAT_ARROW@[45; 47) 35 FAT_ARROW@[45; 47) "=>"
36 WHITESPACE@[47; 48) 36 WHITESPACE@[47; 48) " "
37 TUPLE_EXPR@[48; 50) 37 TUPLE_EXPR@[48; 50)
38 L_PAREN@[48; 49) 38 L_PAREN@[48; 49) "("
39 R_PAREN@[49; 50) 39 R_PAREN@[49; 50) ")"
40 COMMA@[50; 51) 40 COMMA@[50; 51) ","
41 WHITESPACE@[51; 60) 41 WHITESPACE@[51; 60) "\n "
42 MATCH_ARM@[60; 77) 42 MATCH_ARM@[60; 77)
43 RANGE_PAT@[60; 71) 43 RANGE_PAT@[60; 71)
44 LITERAL_PAT@[60; 63) 44 LITERAL_PAT@[60; 63)
45 LITERAL@[60; 63) 45 LITERAL@[60; 63)
46 INT_NUMBER@[60; 63) "101" 46 INT_NUMBER@[60; 63) "101"
47 WHITESPACE@[63; 64) 47 WHITESPACE@[63; 64) " "
48 DOTDOTEQ@[64; 67) 48 DOTDOTEQ@[64; 67) "..="
49 WHITESPACE@[67; 68) 49 WHITESPACE@[67; 68) " "
50 LITERAL_PAT@[68; 71) 50 LITERAL_PAT@[68; 71)
51 LITERAL@[68; 71) 51 LITERAL@[68; 71)
52 INT_NUMBER@[68; 71) "200" 52 INT_NUMBER@[68; 71) "200"
53 WHITESPACE@[71; 72) 53 WHITESPACE@[71; 72) " "
54 FAT_ARROW@[72; 74) 54 FAT_ARROW@[72; 74) "=>"
55 WHITESPACE@[74; 75) 55 WHITESPACE@[74; 75) " "
56 TUPLE_EXPR@[75; 77) 56 TUPLE_EXPR@[75; 77)
57 L_PAREN@[75; 76) 57 L_PAREN@[75; 76) "("
58 R_PAREN@[76; 77) 58 R_PAREN@[76; 77) ")"
59 COMMA@[77; 78) 59 COMMA@[77; 78) ","
60 WHITESPACE@[78; 87) 60 WHITESPACE@[78; 87) "\n "
61 MATCH_ARM@[87; 102) 61 MATCH_ARM@[87; 102)
62 RANGE_PAT@[87; 97) 62 RANGE_PAT@[87; 97)
63 LITERAL_PAT@[87; 90) 63 LITERAL_PAT@[87; 90)
64 LITERAL@[87; 90) 64 LITERAL@[87; 90)
65 INT_NUMBER@[87; 90) "200" 65 INT_NUMBER@[87; 90) "200"
66 WHITESPACE@[90; 91) 66 WHITESPACE@[90; 91) " "
67 DOTDOT@[91; 93) 67 DOTDOT@[91; 93) ".."
68 WHITESPACE@[93; 94) 68 WHITESPACE@[93; 94) " "
69 LITERAL_PAT@[94; 97) 69 LITERAL_PAT@[94; 97)
70 LITERAL@[94; 97) 70 LITERAL@[94; 97)
71 INT_NUMBER@[94; 97) "301" 71 INT_NUMBER@[94; 97) "301"
72 FAT_ARROW@[97; 99) 72 FAT_ARROW@[97; 99) "=>"
73 WHITESPACE@[99; 100) 73 WHITESPACE@[99; 100) " "
74 TUPLE_EXPR@[100; 102) 74 TUPLE_EXPR@[100; 102)
75 L_PAREN@[100; 101) 75 L_PAREN@[100; 101) "("
76 R_PAREN@[101; 102) 76 R_PAREN@[101; 102) ")"
77 COMMA@[102; 103) 77 COMMA@[102; 103) ","
78 WHITESPACE@[103; 108) 78 WHITESPACE@[103; 108) "\n "
79 R_CURLY@[108; 109) 79 R_CURLY@[108; 109) "}"
80 WHITESPACE@[109; 110) 80 WHITESPACE@[109; 110) "\n"
81 R_CURLY@[110; 111) 81 R_CURLY@[110; 111) "}"
82 WHITESPACE@[111; 112) 82 WHITESPACE@[111; 112) "\n"
diff --git a/crates/ra_syntax/tests/data/parser/inline/ok/0059_match_arms_commas.txt b/crates/ra_syntax/tests/data/parser/inline/ok/0059_match_arms_commas.txt
index 1034846c8..949117134 100644
--- a/crates/ra_syntax/tests/data/parser/inline/ok/0059_match_arms_commas.txt
+++ b/crates/ra_syntax/tests/data/parser/inline/ok/0059_match_arms_commas.txt
@@ -1,59 +1,59 @@
1SOURCE_FILE@[0; 83) 1SOURCE_FILE@[0; 83)
2 FN_DEF@[0; 82) 2 FN_DEF@[0; 82)
3 FN_KW@[0; 2) 3 FN_KW@[0; 2) "fn"
4 WHITESPACE@[2; 3) 4 WHITESPACE@[2; 3) " "
5 NAME@[3; 6) 5 NAME@[3; 6)
6 IDENT@[3; 6) "foo" 6 IDENT@[3; 6) "foo"
7 PARAM_LIST@[6; 8) 7 PARAM_LIST@[6; 8)
8 L_PAREN@[6; 7) 8 L_PAREN@[6; 7) "("
9 R_PAREN@[7; 8) 9 R_PAREN@[7; 8) ")"
10 WHITESPACE@[8; 9) 10 WHITESPACE@[8; 9) " "
11 BLOCK@[9; 82) 11 BLOCK@[9; 82)
12 L_CURLY@[9; 10) 12 L_CURLY@[9; 10) "{"
13 WHITESPACE@[10; 15) 13 WHITESPACE@[10; 15) "\n "
14 MATCH_EXPR@[15; 80) 14 MATCH_EXPR@[15; 80)
15 MATCH_KW@[15; 20) 15 MATCH_KW@[15; 20) "match"
16 WHITESPACE@[20; 21) 16 WHITESPACE@[20; 21) " "
17 TUPLE_EXPR@[21; 23) 17 TUPLE_EXPR@[21; 23)
18 L_PAREN@[21; 22) 18 L_PAREN@[21; 22) "("
19 R_PAREN@[22; 23) 19 R_PAREN@[22; 23) ")"
20 WHITESPACE@[23; 24) 20 WHITESPACE@[23; 24) " "
21 MATCH_ARM_LIST@[24; 80) 21 MATCH_ARM_LIST@[24; 80)
22 L_CURLY@[24; 25) 22 L_CURLY@[24; 25) "{"
23 WHITESPACE@[25; 34) 23 WHITESPACE@[25; 34) "\n "
24 MATCH_ARM@[34; 41) 24 MATCH_ARM@[34; 41)
25 PLACEHOLDER_PAT@[34; 35) 25 PLACEHOLDER_PAT@[34; 35)
26 UNDERSCORE@[34; 35) 26 UNDERSCORE@[34; 35) "_"
27 WHITESPACE@[35; 36) 27 WHITESPACE@[35; 36) " "
28 FAT_ARROW@[36; 38) 28 FAT_ARROW@[36; 38) "=>"
29 WHITESPACE@[38; 39) 29 WHITESPACE@[38; 39) " "
30 TUPLE_EXPR@[39; 41) 30 TUPLE_EXPR@[39; 41)
31 L_PAREN@[39; 40) 31 L_PAREN@[39; 40) "("
32 R_PAREN@[40; 41) 32 R_PAREN@[40; 41) ")"
33 COMMA@[41; 42) 33 COMMA@[41; 42) ","
34 WHITESPACE@[42; 51) 34 WHITESPACE@[42; 51) "\n "
35 MATCH_ARM@[51; 58) 35 MATCH_ARM@[51; 58)
36 PLACEHOLDER_PAT@[51; 52) 36 PLACEHOLDER_PAT@[51; 52)
37 UNDERSCORE@[51; 52) 37 UNDERSCORE@[51; 52) "_"
38 WHITESPACE@[52; 53) 38 WHITESPACE@[52; 53) " "
39 FAT_ARROW@[53; 55) 39 FAT_ARROW@[53; 55) "=>"
40 WHITESPACE@[55; 56) 40 WHITESPACE@[55; 56) " "
41 BLOCK_EXPR@[56; 58) 41 BLOCK_EXPR@[56; 58)
42 BLOCK@[56; 58) 42 BLOCK@[56; 58)
43 L_CURLY@[56; 57) 43 L_CURLY@[56; 57) "{"
44 R_CURLY@[57; 58) 44 R_CURLY@[57; 58) "}"
45 WHITESPACE@[58; 67) 45 WHITESPACE@[58; 67) "\n "
46 MATCH_ARM@[67; 74) 46 MATCH_ARM@[67; 74)
47 PLACEHOLDER_PAT@[67; 68) 47 PLACEHOLDER_PAT@[67; 68)
48 UNDERSCORE@[67; 68) 48 UNDERSCORE@[67; 68) "_"
49 WHITESPACE@[68; 69) 49 WHITESPACE@[68; 69) " "
50 FAT_ARROW@[69; 71) 50 FAT_ARROW@[69; 71) "=>"
51 WHITESPACE@[71; 72) 51 WHITESPACE@[71; 72) " "
52 TUPLE_EXPR@[72; 74) 52 TUPLE_EXPR@[72; 74)
53 L_PAREN@[72; 73) 53 L_PAREN@[72; 73) "("
54 R_PAREN@[73; 74) 54 R_PAREN@[73; 74) ")"
55 WHITESPACE@[74; 79) 55 WHITESPACE@[74; 79) "\n "
56 R_CURLY@[79; 80) 56 R_CURLY@[79; 80) "}"
57 WHITESPACE@[80; 81) 57 WHITESPACE@[80; 81) "\n"
58 R_CURLY@[81; 82) 58 R_CURLY@[81; 82) "}"
59 WHITESPACE@[82; 83) 59 WHITESPACE@[82; 83) "\n"
diff --git a/crates/ra_syntax/tests/data/parser/inline/ok/0060_extern_crate.txt b/crates/ra_syntax/tests/data/parser/inline/ok/0060_extern_crate.txt
index a7b428787..7667201ba 100644
--- a/crates/ra_syntax/tests/data/parser/inline/ok/0060_extern_crate.txt
+++ b/crates/ra_syntax/tests/data/parser/inline/ok/0060_extern_crate.txt
@@ -1,10 +1,10 @@
1SOURCE_FILE@[0; 18) 1SOURCE_FILE@[0; 18)
2 EXTERN_CRATE_ITEM@[0; 17) 2 EXTERN_CRATE_ITEM@[0; 17)
3 EXTERN_KW@[0; 6) 3 EXTERN_KW@[0; 6) "extern"
4 WHITESPACE@[6; 7) 4 WHITESPACE@[6; 7) " "
5 CRATE_KW@[7; 12) 5 CRATE_KW@[7; 12) "crate"
6 WHITESPACE@[12; 13) 6 WHITESPACE@[12; 13) " "
7 NAME_REF@[13; 16) 7 NAME_REF@[13; 16)
8 IDENT@[13; 16) "foo" 8 IDENT@[13; 16) "foo"
9 SEMI@[16; 17) 9 SEMI@[16; 17) ";"
10 WHITESPACE@[17; 18) 10 WHITESPACE@[17; 18) "\n"
diff --git a/crates/ra_syntax/tests/data/parser/inline/ok/0061_struct_lit.txt b/crates/ra_syntax/tests/data/parser/inline/ok/0061_struct_lit.txt
index aec25403d..94d1bfe2e 100644
--- a/crates/ra_syntax/tests/data/parser/inline/ok/0061_struct_lit.txt
+++ b/crates/ra_syntax/tests/data/parser/inline/ok/0061_struct_lit.txt
@@ -1,80 +1,80 @@
1SOURCE_FILE@[0; 86) 1SOURCE_FILE@[0; 86)
2 FN_DEF@[0; 85) 2 FN_DEF@[0; 85)
3 FN_KW@[0; 2) 3 FN_KW@[0; 2) "fn"
4 WHITESPACE@[2; 3) 4 WHITESPACE@[2; 3) " "
5 NAME@[3; 6) 5 NAME@[3; 6)
6 IDENT@[3; 6) "foo" 6 IDENT@[3; 6) "foo"
7 PARAM_LIST@[6; 8) 7 PARAM_LIST@[6; 8)
8 L_PAREN@[6; 7) 8 L_PAREN@[6; 7) "("
9 R_PAREN@[7; 8) 9 R_PAREN@[7; 8) ")"
10 WHITESPACE@[8; 9) 10 WHITESPACE@[8; 9) " "
11 BLOCK@[9; 85) 11 BLOCK@[9; 85)
12 L_CURLY@[9; 10) 12 L_CURLY@[9; 10) "{"
13 WHITESPACE@[10; 15) 13 WHITESPACE@[10; 15) "\n "
14 EXPR_STMT@[15; 20) 14 EXPR_STMT@[15; 20)
15 STRUCT_LIT@[15; 19) 15 STRUCT_LIT@[15; 19)
16 PATH@[15; 16) 16 PATH@[15; 16)
17 PATH_SEGMENT@[15; 16) 17 PATH_SEGMENT@[15; 16)
18 NAME_REF@[15; 16) 18 NAME_REF@[15; 16)
19 IDENT@[15; 16) "S" 19 IDENT@[15; 16) "S"
20 WHITESPACE@[16; 17) 20 WHITESPACE@[16; 17) " "
21 NAMED_FIELD_LIST@[17; 19) 21 NAMED_FIELD_LIST@[17; 19)
22 L_CURLY@[17; 18) 22 L_CURLY@[17; 18) "{"
23 R_CURLY@[18; 19) 23 R_CURLY@[18; 19) "}"
24 SEMI@[19; 20) 24 SEMI@[19; 20) ";"
25 WHITESPACE@[20; 25) 25 WHITESPACE@[20; 25) "\n "
26 EXPR_STMT@[25; 41) 26 EXPR_STMT@[25; 41)
27 STRUCT_LIT@[25; 40) 27 STRUCT_LIT@[25; 40)
28 PATH@[25; 26) 28 PATH@[25; 26)
29 PATH_SEGMENT@[25; 26) 29 PATH_SEGMENT@[25; 26)
30 NAME_REF@[25; 26) 30 NAME_REF@[25; 26)
31 IDENT@[25; 26) "S" 31 IDENT@[25; 26) "S"
32 WHITESPACE@[26; 27) 32 WHITESPACE@[26; 27) " "
33 NAMED_FIELD_LIST@[27; 40) 33 NAMED_FIELD_LIST@[27; 40)
34 L_CURLY@[27; 28) 34 L_CURLY@[27; 28) "{"
35 WHITESPACE@[28; 29) 35 WHITESPACE@[28; 29) " "
36 NAMED_FIELD@[29; 30) 36 NAMED_FIELD@[29; 30)
37 NAME_REF@[29; 30) 37 NAME_REF@[29; 30)
38 IDENT@[29; 30) "x" 38 IDENT@[29; 30) "x"
39 COMMA@[30; 31) 39 COMMA@[30; 31) ","
40 WHITESPACE@[31; 32) 40 WHITESPACE@[31; 32) " "
41 NAMED_FIELD@[32; 37) 41 NAMED_FIELD@[32; 37)
42 NAME_REF@[32; 33) 42 NAME_REF@[32; 33)
43 IDENT@[32; 33) "y" 43 IDENT@[32; 33) "y"
44 COLON@[33; 34) 44 COLON@[33; 34) ":"
45 WHITESPACE@[34; 35) 45 WHITESPACE@[34; 35) " "
46 LITERAL@[35; 37) 46 LITERAL@[35; 37)
47 INT_NUMBER@[35; 37) "32" 47 INT_NUMBER@[35; 37) "32"
48 COMMA@[37; 38) 48 COMMA@[37; 38) ","
49 WHITESPACE@[38; 39) 49 WHITESPACE@[38; 39) " "
50 R_CURLY@[39; 40) 50 R_CURLY@[39; 40) "}"
51 SEMI@[40; 41) 51 SEMI@[40; 41) ";"
52 WHITESPACE@[41; 46) 52 WHITESPACE@[41; 46) "\n "
53 EXPR_STMT@[46; 83) 53 EXPR_STMT@[46; 83)
54 STRUCT_LIT@[46; 82) 54 STRUCT_LIT@[46; 82)
55 PATH@[46; 47) 55 PATH@[46; 47)
56 PATH_SEGMENT@[46; 47) 56 PATH_SEGMENT@[46; 47)
57 NAME_REF@[46; 47) 57 NAME_REF@[46; 47)
58 IDENT@[46; 47) "S" 58 IDENT@[46; 47) "S"
59 WHITESPACE@[47; 48) 59 WHITESPACE@[47; 48) " "
60 NAMED_FIELD_LIST@[48; 82) 60 NAMED_FIELD_LIST@[48; 82)
61 L_CURLY@[48; 49) 61 L_CURLY@[48; 49) "{"
62 WHITESPACE@[49; 50) 62 WHITESPACE@[49; 50) " "
63 NAMED_FIELD@[50; 51) 63 NAMED_FIELD@[50; 51)
64 NAME_REF@[50; 51) 64 NAME_REF@[50; 51)
65 IDENT@[50; 51) "x" 65 IDENT@[50; 51) "x"
66 COMMA@[51; 52) 66 COMMA@[51; 52) ","
67 WHITESPACE@[52; 53) 67 WHITESPACE@[52; 53) " "
68 NAMED_FIELD@[53; 58) 68 NAMED_FIELD@[53; 58)
69 NAME_REF@[53; 54) 69 NAME_REF@[53; 54)
70 IDENT@[53; 54) "y" 70 IDENT@[53; 54) "y"
71 COLON@[54; 55) 71 COLON@[54; 55) ":"
72 WHITESPACE@[55; 56) 72 WHITESPACE@[55; 56) " "
73 LITERAL@[56; 58) 73 LITERAL@[56; 58)
74 INT_NUMBER@[56; 58) "32" 74 INT_NUMBER@[56; 58) "32"
75 COMMA@[58; 59) 75 COMMA@[58; 59) ","
76 WHITESPACE@[59; 60) 76 WHITESPACE@[59; 60) " "
77 DOTDOT@[60; 62) 77 DOTDOT@[60; 62) ".."
78 CALL_EXPR@[62; 80) 78 CALL_EXPR@[62; 80)
79 PATH_EXPR@[62; 78) 79 PATH_EXPR@[62; 78)
80 PATH@[62; 78) 80 PATH@[62; 78)
@@ -82,16 +82,16 @@ SOURCE_FILE@[0; 86)
82 PATH_SEGMENT@[62; 69) 82 PATH_SEGMENT@[62; 69)
83 NAME_REF@[62; 69) 83 NAME_REF@[62; 69)
84 IDENT@[62; 69) "Default" 84 IDENT@[62; 69) "Default"
85 COLONCOLON@[69; 71) 85 COLONCOLON@[69; 71) "::"
86 PATH_SEGMENT@[71; 78) 86 PATH_SEGMENT@[71; 78)
87 NAME_REF@[71; 78) 87 NAME_REF@[71; 78)
88 IDENT@[71; 78) "default" 88 IDENT@[71; 78) "default"
89 ARG_LIST@[78; 80) 89 ARG_LIST@[78; 80)
90 L_PAREN@[78; 79) 90 L_PAREN@[78; 79) "("
91 R_PAREN@[79; 80) 91 R_PAREN@[79; 80) ")"
92 WHITESPACE@[80; 81) 92 WHITESPACE@[80; 81) " "
93 R_CURLY@[81; 82) 93 R_CURLY@[81; 82) "}"
94 SEMI@[82; 83) 94 SEMI@[82; 83) ";"
95 WHITESPACE@[83; 84) 95 WHITESPACE@[83; 84) "\n"
96 R_CURLY@[84; 85) 96 R_CURLY@[84; 85) "}"
97 WHITESPACE@[85; 86) 97 WHITESPACE@[85; 86) "\n"
diff --git a/crates/ra_syntax/tests/data/parser/inline/ok/0062_mod_contents.txt b/crates/ra_syntax/tests/data/parser/inline/ok/0062_mod_contents.txt
index 6ccd0ffc3..db2b9a582 100644
--- a/crates/ra_syntax/tests/data/parser/inline/ok/0062_mod_contents.txt
+++ b/crates/ra_syntax/tests/data/parser/inline/ok/0062_mod_contents.txt
@@ -1,66 +1,66 @@
1SOURCE_FILE@[0; 70) 1SOURCE_FILE@[0; 70)
2 FN_DEF@[0; 11) 2 FN_DEF@[0; 11)
3 FN_KW@[0; 2) 3 FN_KW@[0; 2) "fn"
4 WHITESPACE@[2; 3) 4 WHITESPACE@[2; 3) " "
5 NAME@[3; 6) 5 NAME@[3; 6)
6 IDENT@[3; 6) "foo" 6 IDENT@[3; 6) "foo"
7 PARAM_LIST@[6; 8) 7 PARAM_LIST@[6; 8)
8 L_PAREN@[6; 7) 8 L_PAREN@[6; 7) "("
9 R_PAREN@[7; 8) 9 R_PAREN@[7; 8) ")"
10 WHITESPACE@[8; 9) 10 WHITESPACE@[8; 9) " "
11 BLOCK@[9; 11) 11 BLOCK@[9; 11)
12 L_CURLY@[9; 10) 12 L_CURLY@[9; 10) "{"
13 R_CURLY@[10; 11) 13 R_CURLY@[10; 11) "}"
14 WHITESPACE@[11; 12) 14 WHITESPACE@[11; 12) "\n"
15 MACRO_CALL@[12; 31) 15 MACRO_CALL@[12; 31)
16 PATH@[12; 23) 16 PATH@[12; 23)
17 PATH_SEGMENT@[12; 23) 17 PATH_SEGMENT@[12; 23)
18 NAME_REF@[12; 23) 18 NAME_REF@[12; 23)
19 IDENT@[12; 23) "macro_rules" 19 IDENT@[12; 23) "macro_rules"
20 EXCL@[23; 24) 20 EXCL@[23; 24) "!"
21 WHITESPACE@[24; 25) 21 WHITESPACE@[24; 25) " "
22 NAME@[25; 28) 22 NAME@[25; 28)
23 IDENT@[25; 28) "foo" 23 IDENT@[25; 28) "foo"
24 WHITESPACE@[28; 29) 24 WHITESPACE@[28; 29) " "
25 TOKEN_TREE@[29; 31) 25 TOKEN_TREE@[29; 31)
26 L_CURLY@[29; 30) 26 L_CURLY@[29; 30) "{"
27 R_CURLY@[30; 31) 27 R_CURLY@[30; 31) "}"
28 WHITESPACE@[31; 32) 28 WHITESPACE@[31; 32) "\n"
29 MACRO_CALL@[32; 44) 29 MACRO_CALL@[32; 44)
30 PATH@[32; 40) 30 PATH@[32; 40)
31 PATH@[32; 35) 31 PATH@[32; 35)
32 PATH_SEGMENT@[32; 35) 32 PATH_SEGMENT@[32; 35)
33 NAME_REF@[32; 35) 33 NAME_REF@[32; 35)
34 IDENT@[32; 35) "foo" 34 IDENT@[32; 35) "foo"
35 COLONCOLON@[35; 37) 35 COLONCOLON@[35; 37) "::"
36 PATH_SEGMENT@[37; 40) 36 PATH_SEGMENT@[37; 40)
37 NAME_REF@[37; 40) 37 NAME_REF@[37; 40)
38 IDENT@[37; 40) "bar" 38 IDENT@[37; 40) "bar"
39 EXCL@[40; 41) 39 EXCL@[40; 41) "!"
40 TOKEN_TREE@[41; 43) 40 TOKEN_TREE@[41; 43)
41 L_PAREN@[41; 42) 41 L_PAREN@[41; 42) "("
42 R_PAREN@[42; 43) 42 R_PAREN@[42; 43) ")"
43 SEMI@[43; 44) 43 SEMI@[43; 44) ";"
44 WHITESPACE@[44; 45) 44 WHITESPACE@[44; 45) "\n"
45 MACRO_CALL@[45; 59) 45 MACRO_CALL@[45; 59)
46 PATH@[45; 55) 46 PATH@[45; 55)
47 PATH@[45; 50) 47 PATH@[45; 50)
48 PATH_SEGMENT@[45; 50) 48 PATH_SEGMENT@[45; 50)
49 SUPER_KW@[45; 50) 49 SUPER_KW@[45; 50) "super"
50 COLONCOLON@[50; 52) 50 COLONCOLON@[50; 52) "::"
51 PATH_SEGMENT@[52; 55) 51 PATH_SEGMENT@[52; 55)
52 NAME_REF@[52; 55) 52 NAME_REF@[52; 55)
53 IDENT@[52; 55) "baz" 53 IDENT@[52; 55) "baz"
54 EXCL@[55; 56) 54 EXCL@[55; 56) "!"
55 WHITESPACE@[56; 57) 55 WHITESPACE@[56; 57) " "
56 TOKEN_TREE@[57; 59) 56 TOKEN_TREE@[57; 59)
57 L_CURLY@[57; 58) 57 L_CURLY@[57; 58) "{"
58 R_CURLY@[58; 59) 58 R_CURLY@[58; 59) "}"
59 WHITESPACE@[59; 60) 59 WHITESPACE@[59; 60) "\n"
60 STRUCT_DEF@[60; 69) 60 STRUCT_DEF@[60; 69)
61 STRUCT_KW@[60; 66) 61 STRUCT_KW@[60; 66) "struct"
62 WHITESPACE@[66; 67) 62 WHITESPACE@[66; 67) " "
63 NAME@[67; 68) 63 NAME@[67; 68)
64 IDENT@[67; 68) "S" 64 IDENT@[67; 68) "S"
65 SEMI@[68; 69) 65 SEMI@[68; 69) ";"
66 WHITESPACE@[69; 70) 66 WHITESPACE@[69; 70) "\n"
diff --git a/crates/ra_syntax/tests/data/parser/inline/ok/0063_impl_block_neg.txt b/crates/ra_syntax/tests/data/parser/inline/ok/0063_impl_block_neg.txt
index 563e43508..dfff947fe 100644
--- a/crates/ra_syntax/tests/data/parser/inline/ok/0063_impl_block_neg.txt
+++ b/crates/ra_syntax/tests/data/parser/inline/ok/0063_impl_block_neg.txt
@@ -1,23 +1,23 @@
1SOURCE_FILE@[0; 20) 1SOURCE_FILE@[0; 20)
2 IMPL_BLOCK@[0; 19) 2 IMPL_BLOCK@[0; 19)
3 IMPL_KW@[0; 4) 3 IMPL_KW@[0; 4) "impl"
4 WHITESPACE@[4; 5) 4 WHITESPACE@[4; 5) " "
5 EXCL@[5; 6) 5 EXCL@[5; 6) "!"
6 PATH_TYPE@[6; 10) 6 PATH_TYPE@[6; 10)
7 PATH@[6; 10) 7 PATH@[6; 10)
8 PATH_SEGMENT@[6; 10) 8 PATH_SEGMENT@[6; 10)
9 NAME_REF@[6; 10) 9 NAME_REF@[6; 10)
10 IDENT@[6; 10) "Send" 10 IDENT@[6; 10) "Send"
11 WHITESPACE@[10; 11) 11 WHITESPACE@[10; 11) " "
12 FOR_KW@[11; 14) 12 FOR_KW@[11; 14) "for"
13 WHITESPACE@[14; 15) 13 WHITESPACE@[14; 15) " "
14 PATH_TYPE@[15; 16) 14 PATH_TYPE@[15; 16)
15 PATH@[15; 16) 15 PATH@[15; 16)
16 PATH_SEGMENT@[15; 16) 16 PATH_SEGMENT@[15; 16)
17 NAME_REF@[15; 16) 17 NAME_REF@[15; 16)
18 IDENT@[15; 16) "X" 18 IDENT@[15; 16) "X"
19 WHITESPACE@[16; 17) 19 WHITESPACE@[16; 17) " "
20 ITEM_LIST@[17; 19) 20 ITEM_LIST@[17; 19)
21 L_CURLY@[17; 18) 21 L_CURLY@[17; 18) "{"
22 R_CURLY@[18; 19) 22 R_CURLY@[18; 19) "}"
23 WHITESPACE@[19; 20) 23 WHITESPACE@[19; 20) "\n"
diff --git a/crates/ra_syntax/tests/data/parser/inline/ok/0064_if_expr.txt b/crates/ra_syntax/tests/data/parser/inline/ok/0064_if_expr.txt
index 637d23d9e..554bda6fb 100644
--- a/crates/ra_syntax/tests/data/parser/inline/ok/0064_if_expr.txt
+++ b/crates/ra_syntax/tests/data/parser/inline/ok/0064_if_expr.txt
@@ -1,95 +1,95 @@
1SOURCE_FILE@[0; 107) 1SOURCE_FILE@[0; 107)
2 FN_DEF@[0; 106) 2 FN_DEF@[0; 106)
3 FN_KW@[0; 2) 3 FN_KW@[0; 2) "fn"
4 WHITESPACE@[2; 3) 4 WHITESPACE@[2; 3) " "
5 NAME@[3; 6) 5 NAME@[3; 6)
6 IDENT@[3; 6) "foo" 6 IDENT@[3; 6) "foo"
7 PARAM_LIST@[6; 8) 7 PARAM_LIST@[6; 8)
8 L_PAREN@[6; 7) 8 L_PAREN@[6; 7) "("
9 R_PAREN@[7; 8) 9 R_PAREN@[7; 8) ")"
10 WHITESPACE@[8; 9) 10 WHITESPACE@[8; 9) " "
11 BLOCK@[9; 106) 11 BLOCK@[9; 106)
12 L_CURLY@[9; 10) 12 L_CURLY@[9; 10) "{"
13 WHITESPACE@[10; 15) 13 WHITESPACE@[10; 15) "\n "
14 EXPR_STMT@[15; 26) 14 EXPR_STMT@[15; 26)
15 IF_EXPR@[15; 25) 15 IF_EXPR@[15; 25)
16 IF_KW@[15; 17) 16 IF_KW@[15; 17) "if"
17 WHITESPACE@[17; 18) 17 WHITESPACE@[17; 18) " "
18 CONDITION@[18; 22) 18 CONDITION@[18; 22)
19 LITERAL@[18; 22) 19 LITERAL@[18; 22)
20 TRUE_KW@[18; 22) 20 TRUE_KW@[18; 22) "true"
21 WHITESPACE@[22; 23) 21 WHITESPACE@[22; 23) " "
22 BLOCK@[23; 25) 22 BLOCK@[23; 25)
23 L_CURLY@[23; 24) 23 L_CURLY@[23; 24) "{"
24 R_CURLY@[24; 25) 24 R_CURLY@[24; 25) "}"
25 SEMI@[25; 26) 25 SEMI@[25; 26) ";"
26 WHITESPACE@[26; 31) 26 WHITESPACE@[26; 31) "\n "
27 EXPR_STMT@[31; 50) 27 EXPR_STMT@[31; 50)
28 IF_EXPR@[31; 49) 28 IF_EXPR@[31; 49)
29 IF_KW@[31; 33) 29 IF_KW@[31; 33) "if"
30 WHITESPACE@[33; 34) 30 WHITESPACE@[33; 34) " "
31 CONDITION@[34; 38) 31 CONDITION@[34; 38)
32 LITERAL@[34; 38) 32 LITERAL@[34; 38)
33 TRUE_KW@[34; 38) 33 TRUE_KW@[34; 38) "true"
34 WHITESPACE@[38; 39) 34 WHITESPACE@[38; 39) " "
35 BLOCK@[39; 41) 35 BLOCK@[39; 41)
36 L_CURLY@[39; 40) 36 L_CURLY@[39; 40) "{"
37 R_CURLY@[40; 41) 37 R_CURLY@[40; 41) "}"
38 WHITESPACE@[41; 42) 38 WHITESPACE@[41; 42) " "
39 ELSE_KW@[42; 46) 39 ELSE_KW@[42; 46) "else"
40 WHITESPACE@[46; 47) 40 WHITESPACE@[46; 47) " "
41 BLOCK@[47; 49) 41 BLOCK@[47; 49)
42 L_CURLY@[47; 48) 42 L_CURLY@[47; 48) "{"
43 R_CURLY@[48; 49) 43 R_CURLY@[48; 49) "}"
44 SEMI@[49; 50) 44 SEMI@[49; 50) ";"
45 WHITESPACE@[50; 55) 45 WHITESPACE@[50; 55) "\n "
46 EXPR_STMT@[55; 91) 46 EXPR_STMT@[55; 91)
47 IF_EXPR@[55; 90) 47 IF_EXPR@[55; 90)
48 IF_KW@[55; 57) 48 IF_KW@[55; 57) "if"
49 WHITESPACE@[57; 58) 49 WHITESPACE@[57; 58) " "
50 CONDITION@[58; 62) 50 CONDITION@[58; 62)
51 LITERAL@[58; 62) 51 LITERAL@[58; 62)
52 TRUE_KW@[58; 62) 52 TRUE_KW@[58; 62) "true"
53 WHITESPACE@[62; 63) 53 WHITESPACE@[62; 63) " "
54 BLOCK@[63; 65) 54 BLOCK@[63; 65)
55 L_CURLY@[63; 64) 55 L_CURLY@[63; 64) "{"
56 R_CURLY@[64; 65) 56 R_CURLY@[64; 65) "}"
57 WHITESPACE@[65; 66) 57 WHITESPACE@[65; 66) " "
58 ELSE_KW@[66; 70) 58 ELSE_KW@[66; 70) "else"
59 WHITESPACE@[70; 71) 59 WHITESPACE@[70; 71) " "
60 IF_EXPR@[71; 90) 60 IF_EXPR@[71; 90)
61 IF_KW@[71; 73) 61 IF_KW@[71; 73) "if"
62 WHITESPACE@[73; 74) 62 WHITESPACE@[73; 74) " "
63 CONDITION@[74; 79) 63 CONDITION@[74; 79)
64 LITERAL@[74; 79) 64 LITERAL@[74; 79)
65 FALSE_KW@[74; 79) 65 FALSE_KW@[74; 79) "false"
66 WHITESPACE@[79; 80) 66 WHITESPACE@[79; 80) " "
67 BLOCK@[80; 82) 67 BLOCK@[80; 82)
68 L_CURLY@[80; 81) 68 L_CURLY@[80; 81) "{"
69 R_CURLY@[81; 82) 69 R_CURLY@[81; 82) "}"
70 WHITESPACE@[82; 83) 70 WHITESPACE@[82; 83) " "
71 ELSE_KW@[83; 87) 71 ELSE_KW@[83; 87) "else"
72 WHITESPACE@[87; 88) 72 WHITESPACE@[87; 88) " "
73 BLOCK@[88; 90) 73 BLOCK@[88; 90)
74 L_CURLY@[88; 89) 74 L_CURLY@[88; 89) "{"
75 R_CURLY@[89; 90) 75 R_CURLY@[89; 90) "}"
76 SEMI@[90; 91) 76 SEMI@[90; 91) ";"
77 WHITESPACE@[91; 96) 77 WHITESPACE@[91; 96) "\n "
78 EXPR_STMT@[96; 104) 78 EXPR_STMT@[96; 104)
79 IF_EXPR@[96; 103) 79 IF_EXPR@[96; 103)
80 IF_KW@[96; 98) 80 IF_KW@[96; 98) "if"
81 WHITESPACE@[98; 99) 81 WHITESPACE@[98; 99) " "
82 CONDITION@[99; 100) 82 CONDITION@[99; 100)
83 PATH_EXPR@[99; 100) 83 PATH_EXPR@[99; 100)
84 PATH@[99; 100) 84 PATH@[99; 100)
85 PATH_SEGMENT@[99; 100) 85 PATH_SEGMENT@[99; 100)
86 NAME_REF@[99; 100) 86 NAME_REF@[99; 100)
87 IDENT@[99; 100) "S" 87 IDENT@[99; 100) "S"
88 WHITESPACE@[100; 101) 88 WHITESPACE@[100; 101) " "
89 BLOCK@[101; 103) 89 BLOCK@[101; 103)
90 L_CURLY@[101; 102) 90 L_CURLY@[101; 102) "{"
91 R_CURLY@[102; 103) 91 R_CURLY@[102; 103) "}"
92 SEMI@[103; 104) 92 SEMI@[103; 104) ";"
93 WHITESPACE@[104; 105) 93 WHITESPACE@[104; 105) "\n"
94 R_CURLY@[105; 106) 94 R_CURLY@[105; 106) "}"
95 WHITESPACE@[106; 107) 95 WHITESPACE@[106; 107) "\n"
diff --git a/crates/ra_syntax/tests/data/parser/inline/ok/0065_dyn_trait_type.txt b/crates/ra_syntax/tests/data/parser/inline/ok/0065_dyn_trait_type.txt
index f6a0967f2..2ee0dc199 100644
--- a/crates/ra_syntax/tests/data/parser/inline/ok/0065_dyn_trait_type.txt
+++ b/crates/ra_syntax/tests/data/parser/inline/ok/0065_dyn_trait_type.txt
@@ -1,40 +1,43 @@
1SOURCE_FILE@[0; 42) 1SOURCE_FILE@[0; 42)
2 TYPE_ALIAS_DEF@[0; 41) 2 TYPE_ALIAS_DEF@[0; 41)
3 TYPE_KW@[0; 4) 3 TYPE_KW@[0; 4) "type"
4 WHITESPACE@[4; 5) 4 WHITESPACE@[4; 5) " "
5 NAME@[5; 6) 5 NAME@[5; 6)
6 IDENT@[5; 6) "A" 6 IDENT@[5; 6) "A"
7 WHITESPACE@[6; 7) 7 WHITESPACE@[6; 7) " "
8 EQ@[7; 8) 8 EQ@[7; 8) "="
9 WHITESPACE@[8; 9) 9 WHITESPACE@[8; 9) " "
10 DYN_TRAIT_TYPE@[9; 40) 10 DYN_TRAIT_TYPE@[9; 40)
11 DYN_KW@[9; 12) 11 DYN_KW@[9; 12) "dyn"
12 WHITESPACE@[12; 13) 12 WHITESPACE@[12; 13) " "
13 PATH_TYPE@[13; 40) 13 TYPE_BOUND_LIST@[13; 40)
14 PATH@[13; 35) 14 TYPE_BOUND@[13; 35)
15 PATH_SEGMENT@[13; 35) 15 PATH_TYPE@[13; 35)
16 NAME_REF@[13; 21) 16 PATH@[13; 35)
17 IDENT@[13; 21) "Iterator" 17 PATH_SEGMENT@[13; 35)
18 TYPE_ARG_LIST@[21; 35) 18 NAME_REF@[13; 21)
19 L_ANGLE@[21; 22) 19 IDENT@[13; 21) "Iterator"
20 ASSOC_TYPE_ARG@[22; 34) 20 TYPE_ARG_LIST@[21; 35)
21 NAME_REF@[22; 26) 21 L_ANGLE@[21; 22) "<"
22 IDENT@[22; 26) "Item" 22 ASSOC_TYPE_ARG@[22; 34)
23 EQ@[26; 27) 23 NAME_REF@[22; 26)
24 PATH_TYPE@[27; 34) 24 IDENT@[22; 26) "Item"
25 PATH@[27; 34) 25 EQ@[26; 27) "="
26 PATH_SEGMENT@[27; 34) 26 PATH_TYPE@[27; 34)
27 NAME_REF@[27; 30) 27 PATH@[27; 34)
28 IDENT@[27; 30) "Foo" 28 PATH_SEGMENT@[27; 34)
29 TYPE_ARG_LIST@[30; 34) 29 NAME_REF@[27; 30)
30 L_ANGLE@[30; 31) 30 IDENT@[27; 30) "Foo"
31 LIFETIME_ARG@[31; 33) 31 TYPE_ARG_LIST@[30; 34)
32 LIFETIME@[31; 33) "'a" 32 L_ANGLE@[30; 31) "<"
33 R_ANGLE@[33; 34) 33 LIFETIME_ARG@[31; 33)
34 R_ANGLE@[34; 35) 34 LIFETIME@[31; 33) "\'a"
35 WHITESPACE@[35; 36) 35 R_ANGLE@[33; 34) ">"
36 PLUS@[36; 37) 36 R_ANGLE@[34; 35) ">"
37 WHITESPACE@[37; 38) 37 WHITESPACE@[35; 36) " "
38 LIFETIME@[38; 40) "'a" 38 PLUS@[36; 37) "+"
39 SEMI@[40; 41) 39 WHITESPACE@[37; 38) " "
40 WHITESPACE@[41; 42) 40 TYPE_BOUND@[38; 40)
41 LIFETIME@[38; 40) "\'a"
42 SEMI@[40; 41) ";"
43 WHITESPACE@[41; 42) "\n"
diff --git a/crates/ra_syntax/tests/data/parser/inline/ok/0066_match_arm.txt b/crates/ra_syntax/tests/data/parser/inline/ok/0066_match_arm.txt
index b44e61879..041e7179e 100644
--- a/crates/ra_syntax/tests/data/parser/inline/ok/0066_match_arm.txt
+++ b/crates/ra_syntax/tests/data/parser/inline/ok/0066_match_arm.txt
@@ -1,149 +1,149 @@
1SOURCE_FILE@[0; 167) 1SOURCE_FILE@[0; 167)
2 FN_DEF@[0; 166) 2 FN_DEF@[0; 166)
3 FN_KW@[0; 2) 3 FN_KW@[0; 2) "fn"
4 WHITESPACE@[2; 3) 4 WHITESPACE@[2; 3) " "
5 NAME@[3; 6) 5 NAME@[3; 6)
6 IDENT@[3; 6) "foo" 6 IDENT@[3; 6) "foo"
7 PARAM_LIST@[6; 8) 7 PARAM_LIST@[6; 8)
8 L_PAREN@[6; 7) 8 L_PAREN@[6; 7) "("
9 R_PAREN@[7; 8) 9 R_PAREN@[7; 8) ")"
10 WHITESPACE@[8; 9) 10 WHITESPACE@[8; 9) " "
11 BLOCK@[9; 166) 11 BLOCK@[9; 166)
12 L_CURLY@[9; 10) 12 L_CURLY@[9; 10) "{"
13 WHITESPACE@[10; 15) 13 WHITESPACE@[10; 15) "\n "
14 EXPR_STMT@[15; 164) 14 EXPR_STMT@[15; 164)
15 MATCH_EXPR@[15; 163) 15 MATCH_EXPR@[15; 163)
16 MATCH_KW@[15; 20) 16 MATCH_KW@[15; 20) "match"
17 WHITESPACE@[20; 21) 17 WHITESPACE@[20; 21) " "
18 TUPLE_EXPR@[21; 23) 18 TUPLE_EXPR@[21; 23)
19 L_PAREN@[21; 22) 19 L_PAREN@[21; 22) "("
20 R_PAREN@[22; 23) 20 R_PAREN@[22; 23) ")"
21 WHITESPACE@[23; 24) 21 WHITESPACE@[23; 24) " "
22 MATCH_ARM_LIST@[24; 163) 22 MATCH_ARM_LIST@[24; 163)
23 L_CURLY@[24; 25) 23 L_CURLY@[24; 25) "{"
24 WHITESPACE@[25; 34) 24 WHITESPACE@[25; 34) "\n "
25 MATCH_ARM@[34; 41) 25 MATCH_ARM@[34; 41)
26 PLACEHOLDER_PAT@[34; 35) 26 PLACEHOLDER_PAT@[34; 35)
27 UNDERSCORE@[34; 35) 27 UNDERSCORE@[34; 35) "_"
28 WHITESPACE@[35; 36) 28 WHITESPACE@[35; 36) " "
29 FAT_ARROW@[36; 38) 29 FAT_ARROW@[36; 38) "=>"
30 WHITESPACE@[38; 39) 30 WHITESPACE@[38; 39) " "
31 TUPLE_EXPR@[39; 41) 31 TUPLE_EXPR@[39; 41)
32 L_PAREN@[39; 40) 32 L_PAREN@[39; 40) "("
33 R_PAREN@[40; 41) 33 R_PAREN@[40; 41) ")"
34 COMMA@[41; 42) 34 COMMA@[41; 42) ","
35 WHITESPACE@[42; 51) 35 WHITESPACE@[42; 51) "\n "
36 MATCH_ARM@[51; 83) 36 MATCH_ARM@[51; 83)
37 PLACEHOLDER_PAT@[51; 52) 37 PLACEHOLDER_PAT@[51; 52)
38 UNDERSCORE@[51; 52) 38 UNDERSCORE@[51; 52) "_"
39 WHITESPACE@[52; 53) 39 WHITESPACE@[52; 53) " "
40 MATCH_GUARD@[53; 77) 40 MATCH_GUARD@[53; 77)
41 IF_KW@[53; 55) 41 IF_KW@[53; 55) "if"
42 WHITESPACE@[55; 56) 42 WHITESPACE@[55; 56) " "
43 BIN_EXPR@[56; 77) 43 BIN_EXPR@[56; 77)
44 PATH_EXPR@[56; 60) 44 PATH_EXPR@[56; 60)
45 PATH@[56; 60) 45 PATH@[56; 60)
46 PATH_SEGMENT@[56; 60) 46 PATH_SEGMENT@[56; 60)
47 NAME_REF@[56; 60) 47 NAME_REF@[56; 60)
48 IDENT@[56; 60) "Test" 48 IDENT@[56; 60) "Test"
49 WHITESPACE@[60; 61) 49 WHITESPACE@[60; 61) " "
50 R_ANGLE@[61; 62) 50 R_ANGLE@[61; 62) ">"
51 WHITESPACE@[62; 63) 51 WHITESPACE@[62; 63) " "
52 STRUCT_LIT@[63; 77) 52 STRUCT_LIT@[63; 77)
53 PATH@[63; 67) 53 PATH@[63; 67)
54 PATH_SEGMENT@[63; 67) 54 PATH_SEGMENT@[63; 67)
55 NAME_REF@[63; 67) 55 NAME_REF@[63; 67)
56 IDENT@[63; 67) "Test" 56 IDENT@[63; 67) "Test"
57 NAMED_FIELD_LIST@[67; 77) 57 NAMED_FIELD_LIST@[67; 77)
58 L_CURLY@[67; 68) 58 L_CURLY@[67; 68) "{"
59 NAMED_FIELD@[68; 76) 59 NAMED_FIELD@[68; 76)
60 NAME_REF@[68; 73) 60 NAME_REF@[68; 73)
61 IDENT@[68; 73) "field" 61 IDENT@[68; 73) "field"
62 COLON@[73; 74) 62 COLON@[73; 74) ":"
63 WHITESPACE@[74; 75) 63 WHITESPACE@[74; 75) " "
64 LITERAL@[75; 76) 64 LITERAL@[75; 76)
65 INT_NUMBER@[75; 76) "0" 65 INT_NUMBER@[75; 76) "0"
66 R_CURLY@[76; 77) 66 R_CURLY@[76; 77) "}"
67 WHITESPACE@[77; 78) 67 WHITESPACE@[77; 78) " "
68 FAT_ARROW@[78; 80) 68 FAT_ARROW@[78; 80) "=>"
69 WHITESPACE@[80; 81) 69 WHITESPACE@[80; 81) " "
70 TUPLE_EXPR@[81; 83) 70 TUPLE_EXPR@[81; 83)
71 L_PAREN@[81; 82) 71 L_PAREN@[81; 82) "("
72 R_PAREN@[82; 83) 72 R_PAREN@[82; 83) ")"
73 COMMA@[83; 84) 73 COMMA@[83; 84) ","
74 WHITESPACE@[84; 93) 74 WHITESPACE@[84; 93) "\n "
75 MATCH_ARM@[93; 109) 75 MATCH_ARM@[93; 109)
76 BIND_PAT@[93; 94) 76 BIND_PAT@[93; 94)
77 NAME@[93; 94) 77 NAME@[93; 94)
78 IDENT@[93; 94) "X" 78 IDENT@[93; 94) "X"
79 WHITESPACE@[94; 95) 79 WHITESPACE@[94; 95) " "
80 PIPE@[95; 96) 80 PIPE@[95; 96) "|"
81 WHITESPACE@[96; 97) 81 WHITESPACE@[96; 97) " "
82 BIND_PAT@[97; 98) 82 BIND_PAT@[97; 98)
83 NAME@[97; 98) 83 NAME@[97; 98)
84 IDENT@[97; 98) "Y" 84 IDENT@[97; 98) "Y"
85 WHITESPACE@[98; 99) 85 WHITESPACE@[98; 99) " "
86 MATCH_GUARD@[99; 103) 86 MATCH_GUARD@[99; 103)
87 IF_KW@[99; 101) 87 IF_KW@[99; 101) "if"
88 WHITESPACE@[101; 102) 88 WHITESPACE@[101; 102) " "
89 PATH_EXPR@[102; 103) 89 PATH_EXPR@[102; 103)
90 PATH@[102; 103) 90 PATH@[102; 103)
91 PATH_SEGMENT@[102; 103) 91 PATH_SEGMENT@[102; 103)
92 NAME_REF@[102; 103) 92 NAME_REF@[102; 103)
93 IDENT@[102; 103) "Z" 93 IDENT@[102; 103) "Z"
94 WHITESPACE@[103; 104) 94 WHITESPACE@[103; 104) " "
95 FAT_ARROW@[104; 106) 95 FAT_ARROW@[104; 106) "=>"
96 WHITESPACE@[106; 107) 96 WHITESPACE@[106; 107) " "
97 TUPLE_EXPR@[107; 109) 97 TUPLE_EXPR@[107; 109)
98 L_PAREN@[107; 108) 98 L_PAREN@[107; 108) "("
99 R_PAREN@[108; 109) 99 R_PAREN@[108; 109) ")"
100 COMMA@[109; 110) 100 COMMA@[109; 110) ","
101 WHITESPACE@[110; 119) 101 WHITESPACE@[110; 119) "\n "
102 MATCH_ARM@[119; 137) 102 MATCH_ARM@[119; 137)
103 PIPE@[119; 120) 103 PIPE@[119; 120) "|"
104 WHITESPACE@[120; 121) 104 WHITESPACE@[120; 121) " "
105 BIND_PAT@[121; 122) 105 BIND_PAT@[121; 122)
106 NAME@[121; 122) 106 NAME@[121; 122)
107 IDENT@[121; 122) "X" 107 IDENT@[121; 122) "X"
108 WHITESPACE@[122; 123) 108 WHITESPACE@[122; 123) " "
109 PIPE@[123; 124) 109 PIPE@[123; 124) "|"
110 WHITESPACE@[124; 125) 110 WHITESPACE@[124; 125) " "
111 BIND_PAT@[125; 126) 111 BIND_PAT@[125; 126)
112 NAME@[125; 126) 112 NAME@[125; 126)
113 IDENT@[125; 126) "Y" 113 IDENT@[125; 126) "Y"
114 WHITESPACE@[126; 127) 114 WHITESPACE@[126; 127) " "
115 MATCH_GUARD@[127; 131) 115 MATCH_GUARD@[127; 131)
116 IF_KW@[127; 129) 116 IF_KW@[127; 129) "if"
117 WHITESPACE@[129; 130) 117 WHITESPACE@[129; 130) " "
118 PATH_EXPR@[130; 131) 118 PATH_EXPR@[130; 131)
119 PATH@[130; 131) 119 PATH@[130; 131)
120 PATH_SEGMENT@[130; 131) 120 PATH_SEGMENT@[130; 131)
121 NAME_REF@[130; 131) 121 NAME_REF@[130; 131)
122 IDENT@[130; 131) "Z" 122 IDENT@[130; 131) "Z"
123 WHITESPACE@[131; 132) 123 WHITESPACE@[131; 132) " "
124 FAT_ARROW@[132; 134) 124 FAT_ARROW@[132; 134) "=>"
125 WHITESPACE@[134; 135) 125 WHITESPACE@[134; 135) " "
126 TUPLE_EXPR@[135; 137) 126 TUPLE_EXPR@[135; 137)
127 L_PAREN@[135; 136) 127 L_PAREN@[135; 136) "("
128 R_PAREN@[136; 137) 128 R_PAREN@[136; 137) ")"
129 COMMA@[137; 138) 129 COMMA@[137; 138) ","
130 WHITESPACE@[138; 147) 130 WHITESPACE@[138; 147) "\n "
131 MATCH_ARM@[147; 156) 131 MATCH_ARM@[147; 156)
132 PIPE@[147; 148) 132 PIPE@[147; 148) "|"
133 WHITESPACE@[148; 149) 133 WHITESPACE@[148; 149) " "
134 BIND_PAT@[149; 150) 134 BIND_PAT@[149; 150)
135 NAME@[149; 150) 135 NAME@[149; 150)
136 IDENT@[149; 150) "X" 136 IDENT@[149; 150) "X"
137 WHITESPACE@[150; 151) 137 WHITESPACE@[150; 151) " "
138 FAT_ARROW@[151; 153) 138 FAT_ARROW@[151; 153) "=>"
139 WHITESPACE@[153; 154) 139 WHITESPACE@[153; 154) " "
140 TUPLE_EXPR@[154; 156) 140 TUPLE_EXPR@[154; 156)
141 L_PAREN@[154; 155) 141 L_PAREN@[154; 155) "("
142 R_PAREN@[155; 156) 142 R_PAREN@[155; 156) ")"
143 COMMA@[156; 157) 143 COMMA@[156; 157) ","
144 WHITESPACE@[157; 162) 144 WHITESPACE@[157; 162) "\n "
145 R_CURLY@[162; 163) 145 R_CURLY@[162; 163) "}"
146 SEMI@[163; 164) 146 SEMI@[163; 164) ";"
147 WHITESPACE@[164; 165) 147 WHITESPACE@[164; 165) "\n"
148 R_CURLY@[165; 166) 148 R_CURLY@[165; 166) "}"
149 WHITESPACE@[166; 167) 149 WHITESPACE@[166; 167) "\n"
diff --git a/crates/ra_syntax/tests/data/parser/inline/ok/0067_crate_path.txt b/crates/ra_syntax/tests/data/parser/inline/ok/0067_crate_path.txt
index 382286457..f2ba4e909 100644
--- a/crates/ra_syntax/tests/data/parser/inline/ok/0067_crate_path.txt
+++ b/crates/ra_syntax/tests/data/parser/inline/ok/0067_crate_path.txt
@@ -1,15 +1,15 @@
1SOURCE_FILE@[0; 16) 1SOURCE_FILE@[0; 16)
2 USE_ITEM@[0; 15) 2 USE_ITEM@[0; 15)
3 USE_KW@[0; 3) 3 USE_KW@[0; 3) "use"
4 WHITESPACE@[3; 4) 4 WHITESPACE@[3; 4) " "
5 USE_TREE@[4; 14) 5 USE_TREE@[4; 14)
6 PATH@[4; 14) 6 PATH@[4; 14)
7 PATH@[4; 9) 7 PATH@[4; 9)
8 PATH_SEGMENT@[4; 9) 8 PATH_SEGMENT@[4; 9)
9 CRATE_KW@[4; 9) 9 CRATE_KW@[4; 9) "crate"
10 COLONCOLON@[9; 11) 10 COLONCOLON@[9; 11) "::"
11 PATH_SEGMENT@[11; 14) 11 PATH_SEGMENT@[11; 14)
12 NAME_REF@[11; 14) 12 NAME_REF@[11; 14)
13 IDENT@[11; 14) "foo" 13 IDENT@[11; 14) "foo"
14 SEMI@[14; 15) 14 SEMI@[14; 15) ";"
15 WHITESPACE@[15; 16) 15 WHITESPACE@[15; 16) "\n"
diff --git a/crates/ra_syntax/tests/data/parser/inline/ok/0068_union_items.txt b/crates/ra_syntax/tests/data/parser/inline/ok/0068_union_items.txt
index 2d2fb1a0b..4b653317b 100644
--- a/crates/ra_syntax/tests/data/parser/inline/ok/0068_union_items.txt
+++ b/crates/ra_syntax/tests/data/parser/inline/ok/0068_union_items.txt
@@ -1,46 +1,46 @@
1SOURCE_FILE@[0; 51) 1SOURCE_FILE@[0; 51)
2 STRUCT_DEF@[0; 12) 2 STRUCT_DEF@[0; 12)
3 UNION_KW@[0; 5) 3 UNION_KW@[0; 5) "union"
4 WHITESPACE@[5; 6) 4 WHITESPACE@[5; 6) " "
5 NAME@[6; 9) 5 NAME@[6; 9)
6 IDENT@[6; 9) "Foo" 6 IDENT@[6; 9) "Foo"
7 WHITESPACE@[9; 10) 7 WHITESPACE@[9; 10) " "
8 NAMED_FIELD_DEF_LIST@[10; 12) 8 NAMED_FIELD_DEF_LIST@[10; 12)
9 L_CURLY@[10; 11) 9 L_CURLY@[10; 11) "{"
10 R_CURLY@[11; 12) 10 R_CURLY@[11; 12) "}"
11 WHITESPACE@[12; 13) 11 WHITESPACE@[12; 13) "\n"
12 STRUCT_DEF@[13; 50) 12 STRUCT_DEF@[13; 50)
13 UNION_KW@[13; 18) 13 UNION_KW@[13; 18) "union"
14 WHITESPACE@[18; 19) 14 WHITESPACE@[18; 19) " "
15 NAME@[19; 22) 15 NAME@[19; 22)
16 IDENT@[19; 22) "Foo" 16 IDENT@[19; 22) "Foo"
17 WHITESPACE@[22; 23) 17 WHITESPACE@[22; 23) " "
18 NAMED_FIELD_DEF_LIST@[23; 50) 18 NAMED_FIELD_DEF_LIST@[23; 50)
19 L_CURLY@[23; 24) 19 L_CURLY@[23; 24) "{"
20 WHITESPACE@[24; 29) 20 WHITESPACE@[24; 29) "\n "
21 NAMED_FIELD_DEF@[29; 35) 21 NAMED_FIELD_DEF@[29; 35)
22 NAME@[29; 30) 22 NAME@[29; 30)
23 IDENT@[29; 30) "a" 23 IDENT@[29; 30) "a"
24 COLON@[30; 31) 24 COLON@[30; 31) ":"
25 WHITESPACE@[31; 32) 25 WHITESPACE@[31; 32) " "
26 PATH_TYPE@[32; 35) 26 PATH_TYPE@[32; 35)
27 PATH@[32; 35) 27 PATH@[32; 35)
28 PATH_SEGMENT@[32; 35) 28 PATH_SEGMENT@[32; 35)
29 NAME_REF@[32; 35) 29 NAME_REF@[32; 35)
30 IDENT@[32; 35) "i32" 30 IDENT@[32; 35) "i32"
31 COMMA@[35; 36) 31 COMMA@[35; 36) ","
32 WHITESPACE@[36; 41) 32 WHITESPACE@[36; 41) "\n "
33 NAMED_FIELD_DEF@[41; 47) 33 NAMED_FIELD_DEF@[41; 47)
34 NAME@[41; 42) 34 NAME@[41; 42)
35 IDENT@[41; 42) "b" 35 IDENT@[41; 42) "b"
36 COLON@[42; 43) 36 COLON@[42; 43) ":"
37 WHITESPACE@[43; 44) 37 WHITESPACE@[43; 44) " "
38 PATH_TYPE@[44; 47) 38 PATH_TYPE@[44; 47)
39 PATH@[44; 47) 39 PATH@[44; 47)
40 PATH_SEGMENT@[44; 47) 40 PATH_SEGMENT@[44; 47)
41 NAME_REF@[44; 47) 41 NAME_REF@[44; 47)
42 IDENT@[44; 47) "f32" 42 IDENT@[44; 47) "f32"
43 COMMA@[47; 48) 43 COMMA@[47; 48) ","
44 WHITESPACE@[48; 49) 44 WHITESPACE@[48; 49) "\n"
45 R_CURLY@[49; 50) 45 R_CURLY@[49; 50) "}"
46 WHITESPACE@[50; 51) 46 WHITESPACE@[50; 51) "\n"
diff --git a/crates/ra_syntax/tests/data/parser/inline/ok/0069_use_tree_list_after_path.txt b/crates/ra_syntax/tests/data/parser/inline/ok/0069_use_tree_list_after_path.txt
index cac746e5b..86afc9362 100644
--- a/crates/ra_syntax/tests/data/parser/inline/ok/0069_use_tree_list_after_path.txt
+++ b/crates/ra_syntax/tests/data/parser/inline/ok/0069_use_tree_list_after_path.txt
@@ -1,37 +1,37 @@
1SOURCE_FILE@[0; 37) 1SOURCE_FILE@[0; 37)
2 USE_ITEM@[0; 18) 2 USE_ITEM@[0; 18)
3 USE_KW@[0; 3) 3 USE_KW@[0; 3) "use"
4 WHITESPACE@[3; 4) 4 WHITESPACE@[3; 4) " "
5 USE_TREE@[4; 17) 5 USE_TREE@[4; 17)
6 PATH@[4; 9) 6 PATH@[4; 9)
7 PATH_SEGMENT@[4; 9) 7 PATH_SEGMENT@[4; 9)
8 CRATE_KW@[4; 9) 8 CRATE_KW@[4; 9) "crate"
9 COLONCOLON@[9; 11) 9 COLONCOLON@[9; 11) "::"
10 USE_TREE_LIST@[11; 17) 10 USE_TREE_LIST@[11; 17)
11 L_CURLY@[11; 12) 11 L_CURLY@[11; 12) "{"
12 USE_TREE@[12; 16) 12 USE_TREE@[12; 16)
13 PATH@[12; 16) 13 PATH@[12; 16)
14 PATH_SEGMENT@[12; 16) 14 PATH_SEGMENT@[12; 16)
15 NAME_REF@[12; 16) 15 NAME_REF@[12; 16)
16 IDENT@[12; 16) "Item" 16 IDENT@[12; 16) "Item"
17 R_CURLY@[16; 17) 17 R_CURLY@[16; 17) "}"
18 SEMI@[17; 18) 18 SEMI@[17; 18) ";"
19 WHITESPACE@[18; 19) 19 WHITESPACE@[18; 19) "\n"
20 USE_ITEM@[19; 36) 20 USE_ITEM@[19; 36)
21 USE_KW@[19; 22) 21 USE_KW@[19; 22) "use"
22 WHITESPACE@[22; 23) 22 WHITESPACE@[22; 23) " "
23 USE_TREE@[23; 35) 23 USE_TREE@[23; 35)
24 PATH@[23; 27) 24 PATH@[23; 27)
25 PATH_SEGMENT@[23; 27) 25 PATH_SEGMENT@[23; 27)
26 SELF_KW@[23; 27) 26 SELF_KW@[23; 27) "self"
27 COLONCOLON@[27; 29) 27 COLONCOLON@[27; 29) "::"
28 USE_TREE_LIST@[29; 35) 28 USE_TREE_LIST@[29; 35)
29 L_CURLY@[29; 30) 29 L_CURLY@[29; 30) "{"
30 USE_TREE@[30; 34) 30 USE_TREE@[30; 34)
31 PATH@[30; 34) 31 PATH@[30; 34)
32 PATH_SEGMENT@[30; 34) 32 PATH_SEGMENT@[30; 34)
33 NAME_REF@[30; 34) 33 NAME_REF@[30; 34)
34 IDENT@[30; 34) "Item" 34 IDENT@[30; 34) "Item"
35 R_CURLY@[34; 35) 35 R_CURLY@[34; 35) "}"
36 SEMI@[35; 36) 36 SEMI@[35; 36) ";"
37 WHITESPACE@[36; 37) 37 WHITESPACE@[36; 37) "\n"
diff --git a/crates/ra_syntax/tests/data/parser/inline/ok/0070_stmt_bin_expr_ambiguity.txt b/crates/ra_syntax/tests/data/parser/inline/ok/0070_stmt_bin_expr_ambiguity.txt
index d8c599537..40333d565 100644
--- a/crates/ra_syntax/tests/data/parser/inline/ok/0070_stmt_bin_expr_ambiguity.txt
+++ b/crates/ra_syntax/tests/data/parser/inline/ok/0070_stmt_bin_expr_ambiguity.txt
@@ -1,52 +1,52 @@
1SOURCE_FILE@[0; 46) 1SOURCE_FILE@[0; 46)
2 FN_DEF@[0; 45) 2 FN_DEF@[0; 45)
3 FN_KW@[0; 2) 3 FN_KW@[0; 2) "fn"
4 WHITESPACE@[2; 3) 4 WHITESPACE@[2; 3) " "
5 NAME@[3; 6) 5 NAME@[3; 6)
6 IDENT@[3; 6) "foo" 6 IDENT@[3; 6) "foo"
7 PARAM_LIST@[6; 8) 7 PARAM_LIST@[6; 8)
8 L_PAREN@[6; 7) 8 L_PAREN@[6; 7) "("
9 R_PAREN@[7; 8) 9 R_PAREN@[7; 8) ")"
10 WHITESPACE@[8; 9) 10 WHITESPACE@[8; 9) " "
11 BLOCK@[9; 45) 11 BLOCK@[9; 45)
12 L_CURLY@[9; 10) 12 L_CURLY@[9; 10) "{"
13 WHITESPACE@[10; 15) 13 WHITESPACE@[10; 15) "\n "
14 LET_STMT@[15; 31) 14 LET_STMT@[15; 31)
15 LET_KW@[15; 18) 15 LET_KW@[15; 18) "let"
16 WHITESPACE@[18; 19) 16 WHITESPACE@[18; 19) " "
17 PLACEHOLDER_PAT@[19; 20) 17 PLACEHOLDER_PAT@[19; 20)
18 UNDERSCORE@[19; 20) 18 UNDERSCORE@[19; 20) "_"
19 WHITESPACE@[20; 21) 19 WHITESPACE@[20; 21) " "
20 EQ@[21; 22) 20 EQ@[21; 22) "="
21 WHITESPACE@[22; 23) 21 WHITESPACE@[22; 23) " "
22 BIN_EXPR@[23; 30) 22 BIN_EXPR@[23; 30)
23 BLOCK_EXPR@[23; 26) 23 BLOCK_EXPR@[23; 26)
24 BLOCK@[23; 26) 24 BLOCK@[23; 26)
25 L_CURLY@[23; 24) 25 L_CURLY@[23; 24) "{"
26 LITERAL@[24; 25) 26 LITERAL@[24; 25)
27 INT_NUMBER@[24; 25) "1" 27 INT_NUMBER@[24; 25) "1"
28 R_CURLY@[25; 26) 28 R_CURLY@[25; 26) "}"
29 WHITESPACE@[26; 27) 29 WHITESPACE@[26; 27) " "
30 AMP@[27; 28) 30 AMP@[27; 28) "&"
31 WHITESPACE@[28; 29) 31 WHITESPACE@[28; 29) " "
32 LITERAL@[29; 30) 32 LITERAL@[29; 30)
33 INT_NUMBER@[29; 30) "2" 33 INT_NUMBER@[29; 30) "2"
34 SEMI@[30; 31) 34 SEMI@[30; 31) ";"
35 WHITESPACE@[31; 36) 35 WHITESPACE@[31; 36) "\n "
36 EXPR_STMT@[36; 39) 36 EXPR_STMT@[36; 39)
37 BLOCK_EXPR@[36; 39) 37 BLOCK_EXPR@[36; 39)
38 BLOCK@[36; 39) 38 BLOCK@[36; 39)
39 L_CURLY@[36; 37) 39 L_CURLY@[36; 37) "{"
40 LITERAL@[37; 38) 40 LITERAL@[37; 38)
41 INT_NUMBER@[37; 38) "1" 41 INT_NUMBER@[37; 38) "1"
42 R_CURLY@[38; 39) 42 R_CURLY@[38; 39) "}"
43 WHITESPACE@[39; 40) 43 WHITESPACE@[39; 40) " "
44 EXPR_STMT@[40; 43) 44 EXPR_STMT@[40; 43)
45 REF_EXPR@[40; 42) 45 REF_EXPR@[40; 42)
46 AMP@[40; 41) 46 AMP@[40; 41) "&"
47 LITERAL@[41; 42) 47 LITERAL@[41; 42)
48 INT_NUMBER@[41; 42) "2" 48 INT_NUMBER@[41; 42) "2"
49 SEMI@[42; 43) 49 SEMI@[42; 43) ";"
50 WHITESPACE@[43; 44) 50 WHITESPACE@[43; 44) "\n"
51 R_CURLY@[44; 45) 51 R_CURLY@[44; 45) "}"
52 WHITESPACE@[45; 46) 52 WHITESPACE@[45; 46) "\n"
diff --git a/crates/ra_syntax/tests/data/parser/inline/ok/0071_match_expr.txt b/crates/ra_syntax/tests/data/parser/inline/ok/0071_match_expr.txt
index cc22bd3b2..658948c66 100644
--- a/crates/ra_syntax/tests/data/parser/inline/ok/0071_match_expr.txt
+++ b/crates/ra_syntax/tests/data/parser/inline/ok/0071_match_expr.txt
@@ -1,44 +1,44 @@
1SOURCE_FILE@[0; 47) 1SOURCE_FILE@[0; 47)
2 FN_DEF@[0; 46) 2 FN_DEF@[0; 46)
3 FN_KW@[0; 2) 3 FN_KW@[0; 2) "fn"
4 WHITESPACE@[2; 3) 4 WHITESPACE@[2; 3) " "
5 NAME@[3; 6) 5 NAME@[3; 6)
6 IDENT@[3; 6) "foo" 6 IDENT@[3; 6) "foo"
7 PARAM_LIST@[6; 8) 7 PARAM_LIST@[6; 8)
8 L_PAREN@[6; 7) 8 L_PAREN@[6; 7) "("
9 R_PAREN@[7; 8) 9 R_PAREN@[7; 8) ")"
10 WHITESPACE@[8; 9) 10 WHITESPACE@[8; 9) " "
11 BLOCK@[9; 46) 11 BLOCK@[9; 46)
12 L_CURLY@[9; 10) 12 L_CURLY@[9; 10) "{"
13 WHITESPACE@[10; 15) 13 WHITESPACE@[10; 15) "\n "
14 EXPR_STMT@[15; 28) 14 EXPR_STMT@[15; 28)
15 MATCH_EXPR@[15; 27) 15 MATCH_EXPR@[15; 27)
16 MATCH_KW@[15; 20) 16 MATCH_KW@[15; 20) "match"
17 WHITESPACE@[20; 21) 17 WHITESPACE@[20; 21) " "
18 TUPLE_EXPR@[21; 23) 18 TUPLE_EXPR@[21; 23)
19 L_PAREN@[21; 22) 19 L_PAREN@[21; 22) "("
20 R_PAREN@[22; 23) 20 R_PAREN@[22; 23) ")"
21 WHITESPACE@[23; 24) 21 WHITESPACE@[23; 24) " "
22 MATCH_ARM_LIST@[24; 27) 22 MATCH_ARM_LIST@[24; 27)
23 L_CURLY@[24; 25) 23 L_CURLY@[24; 25) "{"
24 WHITESPACE@[25; 26) 24 WHITESPACE@[25; 26) " "
25 R_CURLY@[26; 27) 25 R_CURLY@[26; 27) "}"
26 SEMI@[27; 28) 26 SEMI@[27; 28) ";"
27 WHITESPACE@[28; 33) 27 WHITESPACE@[28; 33) "\n "
28 EXPR_STMT@[33; 44) 28 EXPR_STMT@[33; 44)
29 MATCH_EXPR@[33; 43) 29 MATCH_EXPR@[33; 43)
30 MATCH_KW@[33; 38) 30 MATCH_KW@[33; 38) "match"
31 WHITESPACE@[38; 39) 31 WHITESPACE@[38; 39) " "
32 PATH_EXPR@[39; 40) 32 PATH_EXPR@[39; 40)
33 PATH@[39; 40) 33 PATH@[39; 40)
34 PATH_SEGMENT@[39; 40) 34 PATH_SEGMENT@[39; 40)
35 NAME_REF@[39; 40) 35 NAME_REF@[39; 40)
36 IDENT@[39; 40) "S" 36 IDENT@[39; 40) "S"
37 WHITESPACE@[40; 41) 37 WHITESPACE@[40; 41) " "
38 MATCH_ARM_LIST@[41; 43) 38 MATCH_ARM_LIST@[41; 43)
39 L_CURLY@[41; 42) 39 L_CURLY@[41; 42) "{"
40 R_CURLY@[42; 43) 40 R_CURLY@[42; 43) "}"
41 SEMI@[43; 44) 41 SEMI@[43; 44) ";"
42 WHITESPACE@[44; 45) 42 WHITESPACE@[44; 45) "\n"
43 R_CURLY@[45; 46) 43 R_CURLY@[45; 46) "}"
44 WHITESPACE@[46; 47) 44 WHITESPACE@[46; 47) "\n"
diff --git a/crates/ra_syntax/tests/data/parser/inline/ok/0072_return_expr.txt b/crates/ra_syntax/tests/data/parser/inline/ok/0072_return_expr.txt
index f8d1db41c..cd9e10bed 100644
--- a/crates/ra_syntax/tests/data/parser/inline/ok/0072_return_expr.txt
+++ b/crates/ra_syntax/tests/data/parser/inline/ok/0072_return_expr.txt
@@ -1,28 +1,28 @@
1SOURCE_FILE@[0; 40) 1SOURCE_FILE@[0; 40)
2 FN_DEF@[0; 39) 2 FN_DEF@[0; 39)
3 FN_KW@[0; 2) 3 FN_KW@[0; 2) "fn"
4 WHITESPACE@[2; 3) 4 WHITESPACE@[2; 3) " "
5 NAME@[3; 6) 5 NAME@[3; 6)
6 IDENT@[3; 6) "foo" 6 IDENT@[3; 6) "foo"
7 PARAM_LIST@[6; 8) 7 PARAM_LIST@[6; 8)
8 L_PAREN@[6; 7) 8 L_PAREN@[6; 7) "("
9 R_PAREN@[7; 8) 9 R_PAREN@[7; 8) ")"
10 WHITESPACE@[8; 9) 10 WHITESPACE@[8; 9) " "
11 BLOCK@[9; 39) 11 BLOCK@[9; 39)
12 L_CURLY@[9; 10) 12 L_CURLY@[9; 10) "{"
13 WHITESPACE@[10; 15) 13 WHITESPACE@[10; 15) "\n "
14 EXPR_STMT@[15; 22) 14 EXPR_STMT@[15; 22)
15 RETURN_EXPR@[15; 21) 15 RETURN_EXPR@[15; 21)
16 RETURN_KW@[15; 21) 16 RETURN_KW@[15; 21) "return"
17 SEMI@[21; 22) 17 SEMI@[21; 22) ";"
18 WHITESPACE@[22; 27) 18 WHITESPACE@[22; 27) "\n "
19 EXPR_STMT@[27; 37) 19 EXPR_STMT@[27; 37)
20 RETURN_EXPR@[27; 36) 20 RETURN_EXPR@[27; 36)
21 RETURN_KW@[27; 33) 21 RETURN_KW@[27; 33) "return"
22 WHITESPACE@[33; 34) 22 WHITESPACE@[33; 34) " "
23 LITERAL@[34; 36) 23 LITERAL@[34; 36)
24 INT_NUMBER@[34; 36) "92" 24 INT_NUMBER@[34; 36) "92"
25 SEMI@[36; 37) 25 SEMI@[36; 37) ";"
26 WHITESPACE@[37; 38) 26 WHITESPACE@[37; 38) "\n"
27 R_CURLY@[38; 39) 27 R_CURLY@[38; 39) "}"
28 WHITESPACE@[39; 40) 28 WHITESPACE@[39; 40) "\n"
diff --git a/crates/ra_syntax/tests/data/parser/inline/ok/0073_type_item_type_params.txt b/crates/ra_syntax/tests/data/parser/inline/ok/0073_type_item_type_params.txt
index 49ce9ad5e..2dd6db28f 100644
--- a/crates/ra_syntax/tests/data/parser/inline/ok/0073_type_item_type_params.txt
+++ b/crates/ra_syntax/tests/data/parser/inline/ok/0073_type_item_type_params.txt
@@ -1,20 +1,20 @@
1SOURCE_FILE@[0; 21) 1SOURCE_FILE@[0; 21)
2 TYPE_ALIAS_DEF@[0; 20) 2 TYPE_ALIAS_DEF@[0; 20)
3 TYPE_KW@[0; 4) 3 TYPE_KW@[0; 4) "type"
4 WHITESPACE@[4; 5) 4 WHITESPACE@[4; 5) " "
5 NAME@[5; 11) 5 NAME@[5; 11)
6 IDENT@[5; 11) "Result" 6 IDENT@[5; 11) "Result"
7 TYPE_PARAM_LIST@[11; 14) 7 TYPE_PARAM_LIST@[11; 14)
8 L_ANGLE@[11; 12) 8 L_ANGLE@[11; 12) "<"
9 TYPE_PARAM@[12; 13) 9 TYPE_PARAM@[12; 13)
10 NAME@[12; 13) 10 NAME@[12; 13)
11 IDENT@[12; 13) "T" 11 IDENT@[12; 13) "T"
12 R_ANGLE@[13; 14) 12 R_ANGLE@[13; 14) ">"
13 WHITESPACE@[14; 15) 13 WHITESPACE@[14; 15) " "
14 EQ@[15; 16) 14 EQ@[15; 16) "="
15 WHITESPACE@[16; 17) 15 WHITESPACE@[16; 17) " "
16 TUPLE_TYPE@[17; 19) 16 TUPLE_TYPE@[17; 19)
17 L_PAREN@[17; 18) 17 L_PAREN@[17; 18) "("
18 R_PAREN@[18; 19) 18 R_PAREN@[18; 19) ")"
19 SEMI@[19; 20) 19 SEMI@[19; 20) ";"
20 WHITESPACE@[20; 21) 20 WHITESPACE@[20; 21) "\n"
diff --git a/crates/ra_syntax/tests/data/parser/inline/ok/0074_stmt_postfix_expr_ambiguity.txt b/crates/ra_syntax/tests/data/parser/inline/ok/0074_stmt_postfix_expr_ambiguity.txt
index 48e0026af..48af2f350 100644
--- a/crates/ra_syntax/tests/data/parser/inline/ok/0074_stmt_postfix_expr_ambiguity.txt
+++ b/crates/ra_syntax/tests/data/parser/inline/ok/0074_stmt_postfix_expr_ambiguity.txt
@@ -1,62 +1,62 @@
1SOURCE_FILE@[0; 84) 1SOURCE_FILE@[0; 84)
2 FN_DEF@[0; 83) 2 FN_DEF@[0; 83)
3 FN_KW@[0; 2) 3 FN_KW@[0; 2) "fn"
4 WHITESPACE@[2; 3) 4 WHITESPACE@[2; 3) " "
5 NAME@[3; 6) 5 NAME@[3; 6)
6 IDENT@[3; 6) "foo" 6 IDENT@[3; 6) "foo"
7 PARAM_LIST@[6; 8) 7 PARAM_LIST@[6; 8)
8 L_PAREN@[6; 7) 8 L_PAREN@[6; 7) "("
9 R_PAREN@[7; 8) 9 R_PAREN@[7; 8) ")"
10 WHITESPACE@[8; 9) 10 WHITESPACE@[8; 9) " "
11 BLOCK@[9; 83) 11 BLOCK@[9; 83)
12 L_CURLY@[9; 10) 12 L_CURLY@[9; 10) "{"
13 WHITESPACE@[10; 15) 13 WHITESPACE@[10; 15) "\n "
14 MATCH_EXPR@[15; 81) 14 MATCH_EXPR@[15; 81)
15 MATCH_KW@[15; 20) 15 MATCH_KW@[15; 20) "match"
16 WHITESPACE@[20; 21) 16 WHITESPACE@[20; 21) " "
17 TUPLE_EXPR@[21; 23) 17 TUPLE_EXPR@[21; 23)
18 L_PAREN@[21; 22) 18 L_PAREN@[21; 22) "("
19 R_PAREN@[22; 23) 19 R_PAREN@[22; 23) ")"
20 WHITESPACE@[23; 24) 20 WHITESPACE@[23; 24) " "
21 MATCH_ARM_LIST@[24; 81) 21 MATCH_ARM_LIST@[24; 81)
22 L_CURLY@[24; 25) 22 L_CURLY@[24; 25) "{"
23 WHITESPACE@[25; 34) 23 WHITESPACE@[25; 34) "\n "
24 MATCH_ARM@[34; 41) 24 MATCH_ARM@[34; 41)
25 PLACEHOLDER_PAT@[34; 35) 25 PLACEHOLDER_PAT@[34; 35)
26 UNDERSCORE@[34; 35) 26 UNDERSCORE@[34; 35) "_"
27 WHITESPACE@[35; 36) 27 WHITESPACE@[35; 36) " "
28 FAT_ARROW@[36; 38) 28 FAT_ARROW@[36; 38) "=>"
29 WHITESPACE@[38; 39) 29 WHITESPACE@[38; 39) " "
30 BLOCK_EXPR@[39; 41) 30 BLOCK_EXPR@[39; 41)
31 BLOCK@[39; 41) 31 BLOCK@[39; 41)
32 L_CURLY@[39; 40) 32 L_CURLY@[39; 40) "{"
33 R_CURLY@[40; 41) 33 R_CURLY@[40; 41) "}"
34 WHITESPACE@[41; 50) 34 WHITESPACE@[41; 50) "\n "
35 MATCH_ARM@[50; 58) 35 MATCH_ARM@[50; 58)
36 TUPLE_PAT@[50; 52) 36 TUPLE_PAT@[50; 52)
37 L_PAREN@[50; 51) 37 L_PAREN@[50; 51) "("
38 R_PAREN@[51; 52) 38 R_PAREN@[51; 52) ")"
39 WHITESPACE@[52; 53) 39 WHITESPACE@[52; 53) " "
40 FAT_ARROW@[53; 55) 40 FAT_ARROW@[53; 55) "=>"
41 WHITESPACE@[55; 56) 41 WHITESPACE@[55; 56) " "
42 BLOCK_EXPR@[56; 58) 42 BLOCK_EXPR@[56; 58)
43 BLOCK@[56; 58) 43 BLOCK@[56; 58)
44 L_CURLY@[56; 57) 44 L_CURLY@[56; 57) "{"
45 R_CURLY@[57; 58) 45 R_CURLY@[57; 58) "}"
46 WHITESPACE@[58; 67) 46 WHITESPACE@[58; 67) "\n "
47 MATCH_ARM@[67; 75) 47 MATCH_ARM@[67; 75)
48 SLICE_PAT@[67; 69) 48 SLICE_PAT@[67; 69)
49 L_BRACK@[67; 68) 49 L_BRACK@[67; 68) "["
50 R_BRACK@[68; 69) 50 R_BRACK@[68; 69) "]"
51 WHITESPACE@[69; 70) 51 WHITESPACE@[69; 70) " "
52 FAT_ARROW@[70; 72) 52 FAT_ARROW@[70; 72) "=>"
53 WHITESPACE@[72; 73) 53 WHITESPACE@[72; 73) " "
54 BLOCK_EXPR@[73; 75) 54 BLOCK_EXPR@[73; 75)
55 BLOCK@[73; 75) 55 BLOCK@[73; 75)
56 L_CURLY@[73; 74) 56 L_CURLY@[73; 74) "{"
57 R_CURLY@[74; 75) 57 R_CURLY@[74; 75) "}"
58 WHITESPACE@[75; 80) 58 WHITESPACE@[75; 80) "\n "
59 R_CURLY@[80; 81) 59 R_CURLY@[80; 81) "}"
60 WHITESPACE@[81; 82) 60 WHITESPACE@[81; 82) "\n"
61 R_CURLY@[82; 83) 61 R_CURLY@[82; 83) "}"
62 WHITESPACE@[83; 84) 62 WHITESPACE@[83; 84) "\n"
diff --git a/crates/ra_syntax/tests/data/parser/inline/ok/0075_block.txt b/crates/ra_syntax/tests/data/parser/inline/ok/0075_block.txt
index c13e22b3a..36983590f 100644
--- a/crates/ra_syntax/tests/data/parser/inline/ok/0075_block.txt
+++ b/crates/ra_syntax/tests/data/parser/inline/ok/0075_block.txt
@@ -1,86 +1,86 @@
1SOURCE_FILE@[0; 65) 1SOURCE_FILE@[0; 65)
2 FN_DEF@[0; 9) 2 FN_DEF@[0; 9)
3 FN_KW@[0; 2) 3 FN_KW@[0; 2) "fn"
4 WHITESPACE@[2; 3) 4 WHITESPACE@[2; 3) " "
5 NAME@[3; 4) 5 NAME@[3; 4)
6 IDENT@[3; 4) "a" 6 IDENT@[3; 4) "a"
7 PARAM_LIST@[4; 6) 7 PARAM_LIST@[4; 6)
8 L_PAREN@[4; 5) 8 L_PAREN@[4; 5) "("
9 R_PAREN@[5; 6) 9 R_PAREN@[5; 6) ")"
10 WHITESPACE@[6; 7) 10 WHITESPACE@[6; 7) " "
11 BLOCK@[7; 9) 11 BLOCK@[7; 9)
12 L_CURLY@[7; 8) 12 L_CURLY@[7; 8) "{"
13 R_CURLY@[8; 9) 13 R_CURLY@[8; 9) "}"
14 WHITESPACE@[9; 10) 14 WHITESPACE@[9; 10) "\n"
15 FN_DEF@[10; 31) 15 FN_DEF@[10; 31)
16 FN_KW@[10; 12) 16 FN_KW@[10; 12) "fn"
17 WHITESPACE@[12; 13) 17 WHITESPACE@[12; 13) " "
18 NAME@[13; 14) 18 NAME@[13; 14)
19 IDENT@[13; 14) "b" 19 IDENT@[13; 14) "b"
20 PARAM_LIST@[14; 16) 20 PARAM_LIST@[14; 16)
21 L_PAREN@[14; 15) 21 L_PAREN@[14; 15) "("
22 R_PAREN@[15; 16) 22 R_PAREN@[15; 16) ")"
23 WHITESPACE@[16; 17) 23 WHITESPACE@[16; 17) " "
24 BLOCK@[17; 31) 24 BLOCK@[17; 31)
25 L_CURLY@[17; 18) 25 L_CURLY@[17; 18) "{"
26 WHITESPACE@[18; 19) 26 WHITESPACE@[18; 19) " "
27 LET_STMT@[19; 29) 27 LET_STMT@[19; 29)
28 LET_KW@[19; 22) 28 LET_KW@[19; 22) "let"
29 WHITESPACE@[22; 23) 29 WHITESPACE@[22; 23) " "
30 PLACEHOLDER_PAT@[23; 24) 30 PLACEHOLDER_PAT@[23; 24)
31 UNDERSCORE@[23; 24) 31 UNDERSCORE@[23; 24) "_"
32 WHITESPACE@[24; 25) 32 WHITESPACE@[24; 25) " "
33 EQ@[25; 26) 33 EQ@[25; 26) "="
34 WHITESPACE@[26; 27) 34 WHITESPACE@[26; 27) " "
35 LITERAL@[27; 28) 35 LITERAL@[27; 28)
36 INT_NUMBER@[27; 28) "1" 36 INT_NUMBER@[27; 28) "1"
37 SEMI@[28; 29) 37 SEMI@[28; 29) ";"
38 WHITESPACE@[29; 30) 38 WHITESPACE@[29; 30) " "
39 R_CURLY@[30; 31) 39 R_CURLY@[30; 31) "}"
40 WHITESPACE@[31; 32) 40 WHITESPACE@[31; 32) "\n"
41 FN_DEF@[32; 48) 41 FN_DEF@[32; 48)
42 FN_KW@[32; 34) 42 FN_KW@[32; 34) "fn"
43 WHITESPACE@[34; 35) 43 WHITESPACE@[34; 35) " "
44 NAME@[35; 36) 44 NAME@[35; 36)
45 IDENT@[35; 36) "c" 45 IDENT@[35; 36) "c"
46 PARAM_LIST@[36; 38) 46 PARAM_LIST@[36; 38)
47 L_PAREN@[36; 37) 47 L_PAREN@[36; 37) "("
48 R_PAREN@[37; 38) 48 R_PAREN@[37; 38) ")"
49 WHITESPACE@[38; 39) 49 WHITESPACE@[38; 39) " "
50 BLOCK@[39; 48) 50 BLOCK@[39; 48)
51 L_CURLY@[39; 40) 51 L_CURLY@[39; 40) "{"
52 WHITESPACE@[40; 41) 52 WHITESPACE@[40; 41) " "
53 EXPR_STMT@[41; 43) 53 EXPR_STMT@[41; 43)
54 LITERAL@[41; 42) 54 LITERAL@[41; 42)
55 INT_NUMBER@[41; 42) "1" 55 INT_NUMBER@[41; 42) "1"
56 SEMI@[42; 43) 56 SEMI@[42; 43) ";"
57 WHITESPACE@[43; 44) 57 WHITESPACE@[43; 44) " "
58 EXPR_STMT@[44; 46) 58 EXPR_STMT@[44; 46)
59 LITERAL@[44; 45) 59 LITERAL@[44; 45)
60 INT_NUMBER@[44; 45) "2" 60 INT_NUMBER@[44; 45) "2"
61 SEMI@[45; 46) 61 SEMI@[45; 46) ";"
62 WHITESPACE@[46; 47) 62 WHITESPACE@[46; 47) " "
63 R_CURLY@[47; 48) 63 R_CURLY@[47; 48) "}"
64 WHITESPACE@[48; 49) 64 WHITESPACE@[48; 49) "\n"
65 FN_DEF@[49; 64) 65 FN_DEF@[49; 64)
66 FN_KW@[49; 51) 66 FN_KW@[49; 51) "fn"
67 WHITESPACE@[51; 52) 67 WHITESPACE@[51; 52) " "
68 NAME@[52; 53) 68 NAME@[52; 53)
69 IDENT@[52; 53) "d" 69 IDENT@[52; 53) "d"
70 PARAM_LIST@[53; 55) 70 PARAM_LIST@[53; 55)
71 L_PAREN@[53; 54) 71 L_PAREN@[53; 54) "("
72 R_PAREN@[54; 55) 72 R_PAREN@[54; 55) ")"
73 WHITESPACE@[55; 56) 73 WHITESPACE@[55; 56) " "
74 BLOCK@[56; 64) 74 BLOCK@[56; 64)
75 L_CURLY@[56; 57) 75 L_CURLY@[56; 57) "{"
76 WHITESPACE@[57; 58) 76 WHITESPACE@[57; 58) " "
77 EXPR_STMT@[58; 60) 77 EXPR_STMT@[58; 60)
78 LITERAL@[58; 59) 78 LITERAL@[58; 59)
79 INT_NUMBER@[58; 59) "1" 79 INT_NUMBER@[58; 59) "1"
80 SEMI@[59; 60) 80 SEMI@[59; 60) ";"
81 WHITESPACE@[60; 61) 81 WHITESPACE@[60; 61) " "
82 LITERAL@[61; 62) 82 LITERAL@[61; 62)
83 INT_NUMBER@[61; 62) "2" 83 INT_NUMBER@[61; 62) "2"
84 WHITESPACE@[62; 63) 84 WHITESPACE@[62; 63) " "
85 R_CURLY@[63; 64) 85 R_CURLY@[63; 64) "}"
86 WHITESPACE@[64; 65) 86 WHITESPACE@[64; 65) "\n"
diff --git a/crates/ra_syntax/tests/data/parser/inline/ok/0076_function_where_clause.txt b/crates/ra_syntax/tests/data/parser/inline/ok/0076_function_where_clause.txt
index b58d09e35..32979c523 100644
--- a/crates/ra_syntax/tests/data/parser/inline/ok/0076_function_where_clause.txt
+++ b/crates/ra_syntax/tests/data/parser/inline/ok/0076_function_where_clause.txt
@@ -1,37 +1,39 @@
1SOURCE_FILE@[0; 29) 1SOURCE_FILE@[0; 29)
2 FN_DEF@[0; 28) 2 FN_DEF@[0; 28)
3 FN_KW@[0; 2) 3 FN_KW@[0; 2) "fn"
4 WHITESPACE@[2; 3) 4 WHITESPACE@[2; 3) " "
5 NAME@[3; 6) 5 NAME@[3; 6)
6 IDENT@[3; 6) "foo" 6 IDENT@[3; 6) "foo"
7 TYPE_PARAM_LIST@[6; 9) 7 TYPE_PARAM_LIST@[6; 9)
8 L_ANGLE@[6; 7) 8 L_ANGLE@[6; 7) "<"
9 TYPE_PARAM@[7; 8) 9 TYPE_PARAM@[7; 8)
10 NAME@[7; 8) 10 NAME@[7; 8)
11 IDENT@[7; 8) "T" 11 IDENT@[7; 8) "T"
12 R_ANGLE@[8; 9) 12 R_ANGLE@[8; 9) ">"
13 PARAM_LIST@[9; 11) 13 PARAM_LIST@[9; 11)
14 L_PAREN@[9; 10) 14 L_PAREN@[9; 10) "("
15 R_PAREN@[10; 11) 15 R_PAREN@[10; 11) ")"
16 WHITESPACE@[11; 12) 16 WHITESPACE@[11; 12) " "
17 WHERE_CLAUSE@[12; 25) 17 WHERE_CLAUSE@[12; 25)
18 WHERE_KW@[12; 17) 18 WHERE_KW@[12; 17) "where"
19 WHITESPACE@[17; 18) 19 WHITESPACE@[17; 18) " "
20 WHERE_PRED@[18; 25) 20 WHERE_PRED@[18; 25)
21 PATH_TYPE@[18; 19) 21 PATH_TYPE@[18; 19)
22 PATH@[18; 19) 22 PATH@[18; 19)
23 PATH_SEGMENT@[18; 19) 23 PATH_SEGMENT@[18; 19)
24 NAME_REF@[18; 19) 24 NAME_REF@[18; 19)
25 IDENT@[18; 19) "T" 25 IDENT@[18; 19) "T"
26 COLON@[19; 20) 26 COLON@[19; 20) ":"
27 WHITESPACE@[20; 21) 27 WHITESPACE@[20; 21) " "
28 PATH_TYPE@[21; 25) 28 TYPE_BOUND_LIST@[21; 25)
29 PATH@[21; 25) 29 TYPE_BOUND@[21; 25)
30 PATH_SEGMENT@[21; 25) 30 PATH_TYPE@[21; 25)
31 NAME_REF@[21; 25) 31 PATH@[21; 25)
32 IDENT@[21; 25) "Copy" 32 PATH_SEGMENT@[21; 25)
33 WHITESPACE@[25; 26) 33 NAME_REF@[21; 25)
34 IDENT@[21; 25) "Copy"
35 WHITESPACE@[25; 26) " "
34 BLOCK@[26; 28) 36 BLOCK@[26; 28)
35 L_CURLY@[26; 27) 37 L_CURLY@[26; 27) "{"
36 R_CURLY@[27; 28) 38 R_CURLY@[27; 28) "}"
37 WHITESPACE@[28; 29) 39 WHITESPACE@[28; 29) "\n"
diff --git a/crates/ra_syntax/tests/data/parser/inline/ok/0077_try_expr.txt b/crates/ra_syntax/tests/data/parser/inline/ok/0077_try_expr.txt
index f47e6da55..72de14b98 100644
--- a/crates/ra_syntax/tests/data/parser/inline/ok/0077_try_expr.txt
+++ b/crates/ra_syntax/tests/data/parser/inline/ok/0077_try_expr.txt
@@ -1,16 +1,16 @@
1SOURCE_FILE@[0; 21) 1SOURCE_FILE@[0; 21)
2 FN_DEF@[0; 20) 2 FN_DEF@[0; 20)
3 FN_KW@[0; 2) 3 FN_KW@[0; 2) "fn"
4 WHITESPACE@[2; 3) 4 WHITESPACE@[2; 3) " "
5 NAME@[3; 6) 5 NAME@[3; 6)
6 IDENT@[3; 6) "foo" 6 IDENT@[3; 6) "foo"
7 PARAM_LIST@[6; 8) 7 PARAM_LIST@[6; 8)
8 L_PAREN@[6; 7) 8 L_PAREN@[6; 7) "("
9 R_PAREN@[7; 8) 9 R_PAREN@[7; 8) ")"
10 WHITESPACE@[8; 9) 10 WHITESPACE@[8; 9) " "
11 BLOCK@[9; 20) 11 BLOCK@[9; 20)
12 L_CURLY@[9; 10) 12 L_CURLY@[9; 10) "{"
13 WHITESPACE@[10; 15) 13 WHITESPACE@[10; 15) "\n "
14 EXPR_STMT@[15; 18) 14 EXPR_STMT@[15; 18)
15 TRY_EXPR@[15; 17) 15 TRY_EXPR@[15; 17)
16 PATH_EXPR@[15; 16) 16 PATH_EXPR@[15; 16)
@@ -18,8 +18,8 @@ SOURCE_FILE@[0; 21)
18 PATH_SEGMENT@[15; 16) 18 PATH_SEGMENT@[15; 16)
19 NAME_REF@[15; 16) 19 NAME_REF@[15; 16)
20 IDENT@[15; 16) "x" 20 IDENT@[15; 16) "x"
21 QUESTION@[16; 17) 21 QUESTION@[16; 17) "?"
22 SEMI@[17; 18) 22 SEMI@[17; 18) ";"
23 WHITESPACE@[18; 19) 23 WHITESPACE@[18; 19) "\n"
24 R_CURLY@[19; 20) 24 R_CURLY@[19; 20) "}"
25 WHITESPACE@[20; 21) 25 WHITESPACE@[20; 21) "\n"
diff --git a/crates/ra_syntax/tests/data/parser/inline/ok/0078_type_item.txt b/crates/ra_syntax/tests/data/parser/inline/ok/0078_type_item.txt
index a62a9d1e7..4bc0b1858 100644
--- a/crates/ra_syntax/tests/data/parser/inline/ok/0078_type_item.txt
+++ b/crates/ra_syntax/tests/data/parser/inline/ok/0078_type_item.txt
@@ -1,16 +1,16 @@
1SOURCE_FILE@[0; 16) 1SOURCE_FILE@[0; 16)
2 TYPE_ALIAS_DEF@[0; 15) 2 TYPE_ALIAS_DEF@[0; 15)
3 TYPE_KW@[0; 4) 3 TYPE_KW@[0; 4) "type"
4 WHITESPACE@[4; 5) 4 WHITESPACE@[4; 5) " "
5 NAME@[5; 8) 5 NAME@[5; 8)
6 IDENT@[5; 8) "Foo" 6 IDENT@[5; 8) "Foo"
7 WHITESPACE@[8; 9) 7 WHITESPACE@[8; 9) " "
8 EQ@[9; 10) 8 EQ@[9; 10) "="
9 WHITESPACE@[10; 11) 9 WHITESPACE@[10; 11) " "
10 PATH_TYPE@[11; 14) 10 PATH_TYPE@[11; 14)
11 PATH@[11; 14) 11 PATH@[11; 14)
12 PATH_SEGMENT@[11; 14) 12 PATH_SEGMENT@[11; 14)
13 NAME_REF@[11; 14) 13 NAME_REF@[11; 14)
14 IDENT@[11; 14) "Bar" 14 IDENT@[11; 14) "Bar"
15 SEMI@[14; 15) 15 SEMI@[14; 15) ";"
16 WHITESPACE@[15; 16) 16 WHITESPACE@[15; 16) "\n"
diff --git a/crates/ra_syntax/tests/data/parser/inline/ok/0079_impl_block.txt b/crates/ra_syntax/tests/data/parser/inline/ok/0079_impl_block.txt
index a2c218aa9..bda3435e8 100644
--- a/crates/ra_syntax/tests/data/parser/inline/ok/0079_impl_block.txt
+++ b/crates/ra_syntax/tests/data/parser/inline/ok/0079_impl_block.txt
@@ -1,14 +1,14 @@
1SOURCE_FILE@[0; 12) 1SOURCE_FILE@[0; 12)
2 IMPL_BLOCK@[0; 11) 2 IMPL_BLOCK@[0; 11)
3 IMPL_KW@[0; 4) 3 IMPL_KW@[0; 4) "impl"
4 WHITESPACE@[4; 5) 4 WHITESPACE@[4; 5) " "
5 PATH_TYPE@[5; 8) 5 PATH_TYPE@[5; 8)
6 PATH@[5; 8) 6 PATH@[5; 8)
7 PATH_SEGMENT@[5; 8) 7 PATH_SEGMENT@[5; 8)
8 NAME_REF@[5; 8) 8 NAME_REF@[5; 8)
9 IDENT@[5; 8) "Foo" 9 IDENT@[5; 8) "Foo"
10 WHITESPACE@[8; 9) 10 WHITESPACE@[8; 9) " "
11 ITEM_LIST@[9; 11) 11 ITEM_LIST@[9; 11)
12 L_CURLY@[9; 10) 12 L_CURLY@[9; 10) "{"
13 R_CURLY@[10; 11) 13 R_CURLY@[10; 11) "}"
14 WHITESPACE@[11; 12) 14 WHITESPACE@[11; 12) "\n"
diff --git a/crates/ra_syntax/tests/data/parser/inline/ok/0080_postfix_range.txt b/crates/ra_syntax/tests/data/parser/inline/ok/0080_postfix_range.txt
index 415ff2a20..541add812 100644
--- a/crates/ra_syntax/tests/data/parser/inline/ok/0080_postfix_range.txt
+++ b/crates/ra_syntax/tests/data/parser/inline/ok/0080_postfix_range.txt
@@ -1,30 +1,30 @@
1SOURCE_FILE@[0; 26) 1SOURCE_FILE@[0; 26)
2 FN_DEF@[0; 25) 2 FN_DEF@[0; 25)
3 FN_KW@[0; 2) 3 FN_KW@[0; 2) "fn"
4 WHITESPACE@[2; 3) 4 WHITESPACE@[2; 3) " "
5 NAME@[3; 6) 5 NAME@[3; 6)
6 IDENT@[3; 6) "foo" 6 IDENT@[3; 6) "foo"
7 PARAM_LIST@[6; 8) 7 PARAM_LIST@[6; 8)
8 L_PAREN@[6; 7) 8 L_PAREN@[6; 7) "("
9 R_PAREN@[7; 8) 9 R_PAREN@[7; 8) ")"
10 WHITESPACE@[8; 9) 10 WHITESPACE@[8; 9) " "
11 BLOCK@[9; 25) 11 BLOCK@[9; 25)
12 L_CURLY@[9; 10) 12 L_CURLY@[9; 10) "{"
13 WHITESPACE@[10; 11) 13 WHITESPACE@[10; 11) " "
14 LET_STMT@[11; 23) 14 LET_STMT@[11; 23)
15 LET_KW@[11; 14) 15 LET_KW@[11; 14) "let"
16 WHITESPACE@[14; 15) 16 WHITESPACE@[14; 15) " "
17 BIND_PAT@[15; 16) 17 BIND_PAT@[15; 16)
18 NAME@[15; 16) 18 NAME@[15; 16)
19 IDENT@[15; 16) "x" 19 IDENT@[15; 16) "x"
20 WHITESPACE@[16; 17) 20 WHITESPACE@[16; 17) " "
21 EQ@[17; 18) 21 EQ@[17; 18) "="
22 WHITESPACE@[18; 19) 22 WHITESPACE@[18; 19) " "
23 RANGE_EXPR@[19; 22) 23 RANGE_EXPR@[19; 22)
24 LITERAL@[19; 20) 24 LITERAL@[19; 20)
25 INT_NUMBER@[19; 20) "1" 25 INT_NUMBER@[19; 20) "1"
26 DOTDOT@[20; 22) 26 DOTDOT@[20; 22) ".."
27 SEMI@[22; 23) 27 SEMI@[22; 23) ";"
28 WHITESPACE@[23; 24) 28 WHITESPACE@[23; 24) " "
29 R_CURLY@[24; 25) 29 R_CURLY@[24; 25) "}"
30 WHITESPACE@[25; 26) 30 WHITESPACE@[25; 26) "\n"
diff --git a/crates/ra_syntax/tests/data/parser/inline/ok/0081_for_type.txt b/crates/ra_syntax/tests/data/parser/inline/ok/0081_for_type.txt
index 568f61fb2..599cf9452 100644
--- a/crates/ra_syntax/tests/data/parser/inline/ok/0081_for_type.txt
+++ b/crates/ra_syntax/tests/data/parser/inline/ok/0081_for_type.txt
@@ -1,155 +1,159 @@
1SOURCE_FILE@[0; 135) 1SOURCE_FILE@[0; 135)
2 TYPE_ALIAS_DEF@[0; 28) 2 TYPE_ALIAS_DEF@[0; 28)
3 TYPE_KW@[0; 4) 3 TYPE_KW@[0; 4) "type"
4 WHITESPACE@[4; 5) 4 WHITESPACE@[4; 5) " "
5 NAME@[5; 6) 5 NAME@[5; 6)
6 IDENT@[5; 6) "A" 6 IDENT@[5; 6) "A"
7 WHITESPACE@[6; 7) 7 WHITESPACE@[6; 7) " "
8 EQ@[7; 8) 8 EQ@[7; 8) "="
9 WHITESPACE@[8; 9) 9 WHITESPACE@[8; 9) " "
10 FOR_TYPE@[9; 27) 10 FOR_TYPE@[9; 27)
11 FOR_KW@[9; 12) 11 FOR_KW@[9; 12) "for"
12 TYPE_PARAM_LIST@[12; 16) 12 TYPE_PARAM_LIST@[12; 16)
13 L_ANGLE@[12; 13) 13 L_ANGLE@[12; 13) "<"
14 LIFETIME_PARAM@[13; 15) 14 LIFETIME_PARAM@[13; 15)
15 LIFETIME@[13; 15) "'a" 15 LIFETIME@[13; 15) "\'a"
16 R_ANGLE@[15; 16) 16 R_ANGLE@[15; 16) ">"
17 WHITESPACE@[16; 17) 17 WHITESPACE@[16; 17) " "
18 FN_POINTER_TYPE@[17; 27) 18 FN_POINTER_TYPE@[17; 27)
19 FN_KW@[17; 19) 19 FN_KW@[17; 19) "fn"
20 PARAM_LIST@[19; 21) 20 PARAM_LIST@[19; 21)
21 L_PAREN@[19; 20) 21 L_PAREN@[19; 20) "("
22 R_PAREN@[20; 21) 22 R_PAREN@[20; 21) ")"
23 WHITESPACE@[21; 22) 23 WHITESPACE@[21; 22) " "
24 RET_TYPE@[22; 27) 24 RET_TYPE@[22; 27)
25 THIN_ARROW@[22; 24) 25 THIN_ARROW@[22; 24) "->"
26 WHITESPACE@[24; 25) 26 WHITESPACE@[24; 25) " "
27 TUPLE_TYPE@[25; 27) 27 TUPLE_TYPE@[25; 27)
28 L_PAREN@[25; 26) 28 L_PAREN@[25; 26) "("
29 R_PAREN@[26; 27) 29 R_PAREN@[26; 27) ")"
30 SEMI@[27; 28) 30 SEMI@[27; 28) ";"
31 WHITESPACE@[28; 29) 31 WHITESPACE@[28; 29) "\n"
32 FN_DEF@[29; 79) 32 FN_DEF@[29; 79)
33 FN_KW@[29; 31) 33 FN_KW@[29; 31) "fn"
34 WHITESPACE@[31; 32) 34 WHITESPACE@[31; 32) " "
35 NAME@[32; 35) 35 NAME@[32; 35)
36 IDENT@[32; 35) "foo" 36 IDENT@[32; 35) "foo"
37 TYPE_PARAM_LIST@[35; 38) 37 TYPE_PARAM_LIST@[35; 38)
38 L_ANGLE@[35; 36) 38 L_ANGLE@[35; 36) "<"
39 TYPE_PARAM@[36; 37) 39 TYPE_PARAM@[36; 37)
40 NAME@[36; 37) 40 NAME@[36; 37)
41 IDENT@[36; 37) "T" 41 IDENT@[36; 37) "T"
42 R_ANGLE@[37; 38) 42 R_ANGLE@[37; 38) ">"
43 PARAM_LIST@[38; 46) 43 PARAM_LIST@[38; 46)
44 L_PAREN@[38; 39) 44 L_PAREN@[38; 39) "("
45 PARAM@[39; 45) 45 PARAM@[39; 45)
46 BIND_PAT@[39; 41) 46 BIND_PAT@[39; 41)
47 NAME@[39; 41) 47 NAME@[39; 41)
48 IDENT@[39; 41) "_t" 48 IDENT@[39; 41) "_t"
49 COLON@[41; 42) 49 COLON@[41; 42) ":"
50 WHITESPACE@[42; 43) 50 WHITESPACE@[42; 43) " "
51 REFERENCE_TYPE@[43; 45) 51 REFERENCE_TYPE@[43; 45)
52 AMP@[43; 44) 52 AMP@[43; 44) "&"
53 PATH_TYPE@[44; 45) 53 PATH_TYPE@[44; 45)
54 PATH@[44; 45) 54 PATH@[44; 45)
55 PATH_SEGMENT@[44; 45) 55 PATH_SEGMENT@[44; 45)
56 NAME_REF@[44; 45) 56 NAME_REF@[44; 45)
57 IDENT@[44; 45) "T" 57 IDENT@[44; 45) "T"
58 R_PAREN@[45; 46) 58 R_PAREN@[45; 46) ")"
59 WHITESPACE@[46; 47) 59 WHITESPACE@[46; 47) " "
60 WHERE_CLAUSE@[47; 76) 60 WHERE_CLAUSE@[47; 76)
61 WHERE_KW@[47; 52) 61 WHERE_KW@[47; 52) "where"
62 WHITESPACE@[52; 53) 62 WHITESPACE@[52; 53) " "
63 WHERE_PRED@[53; 76) 63 WHERE_PRED@[53; 76)
64 FOR_TYPE@[53; 66) 64 FOR_TYPE@[53; 66)
65 FOR_KW@[53; 56) 65 FOR_KW@[53; 56) "for"
66 TYPE_PARAM_LIST@[56; 60) 66 TYPE_PARAM_LIST@[56; 60)
67 L_ANGLE@[56; 57) 67 L_ANGLE@[56; 57) "<"
68 LIFETIME_PARAM@[57; 59) 68 LIFETIME_PARAM@[57; 59)
69 LIFETIME@[57; 59) "'a" 69 LIFETIME@[57; 59) "\'a"
70 R_ANGLE@[59; 60) 70 R_ANGLE@[59; 60) ">"
71 WHITESPACE@[60; 61) 71 WHITESPACE@[60; 61) " "
72 REFERENCE_TYPE@[61; 66) 72 REFERENCE_TYPE@[61; 66)
73 AMP@[61; 62) 73 AMP@[61; 62) "&"
74 LIFETIME@[62; 64) "'a" 74 LIFETIME@[62; 64) "\'a"
75 WHITESPACE@[64; 65) 75 WHITESPACE@[64; 65) " "
76 PATH_TYPE@[65; 66) 76 PATH_TYPE@[65; 66)
77 PATH@[65; 66) 77 PATH@[65; 66)
78 PATH_SEGMENT@[65; 66) 78 PATH_SEGMENT@[65; 66)
79 NAME_REF@[65; 66) 79 NAME_REF@[65; 66)
80 IDENT@[65; 66) "T" 80 IDENT@[65; 66) "T"
81 COLON@[66; 67) 81 COLON@[66; 67) ":"
82 WHITESPACE@[67; 68) 82 WHITESPACE@[67; 68) " "
83 PATH_TYPE@[68; 76) 83 TYPE_BOUND_LIST@[68; 76)
84 PATH@[68; 76) 84 TYPE_BOUND@[68; 76)
85 PATH_SEGMENT@[68; 76) 85 PATH_TYPE@[68; 76)
86 NAME_REF@[68; 76) 86 PATH@[68; 76)
87 IDENT@[68; 76) "Iterator" 87 PATH_SEGMENT@[68; 76)
88 WHITESPACE@[76; 77) 88 NAME_REF@[68; 76)
89 IDENT@[68; 76) "Iterator"
90 WHITESPACE@[76; 77) " "
89 BLOCK@[77; 79) 91 BLOCK@[77; 79)
90 L_CURLY@[77; 78) 92 L_CURLY@[77; 78) "{"
91 R_CURLY@[78; 79) 93 R_CURLY@[78; 79) "}"
92 WHITESPACE@[79; 80) 94 WHITESPACE@[79; 80) "\n"
93 FN_DEF@[80; 134) 95 FN_DEF@[80; 134)
94 FN_KW@[80; 82) 96 FN_KW@[80; 82) "fn"
95 WHITESPACE@[82; 83) 97 WHITESPACE@[82; 83) " "
96 NAME@[83; 86) 98 NAME@[83; 86)
97 IDENT@[83; 86) "bar" 99 IDENT@[83; 86) "bar"
98 TYPE_PARAM_LIST@[86; 89) 100 TYPE_PARAM_LIST@[86; 89)
99 L_ANGLE@[86; 87) 101 L_ANGLE@[86; 87) "<"
100 TYPE_PARAM@[87; 88) 102 TYPE_PARAM@[87; 88)
101 NAME@[87; 88) 103 NAME@[87; 88)
102 IDENT@[87; 88) "T" 104 IDENT@[87; 88) "T"
103 R_ANGLE@[88; 89) 105 R_ANGLE@[88; 89) ">"
104 PARAM_LIST@[89; 97) 106 PARAM_LIST@[89; 97)
105 L_PAREN@[89; 90) 107 L_PAREN@[89; 90) "("
106 PARAM@[90; 96) 108 PARAM@[90; 96)
107 BIND_PAT@[90; 92) 109 BIND_PAT@[90; 92)
108 NAME@[90; 92) 110 NAME@[90; 92)
109 IDENT@[90; 92) "_t" 111 IDENT@[90; 92) "_t"
110 COLON@[92; 93) 112 COLON@[92; 93) ":"
111 WHITESPACE@[93; 94) 113 WHITESPACE@[93; 94) " "
112 REFERENCE_TYPE@[94; 96) 114 REFERENCE_TYPE@[94; 96)
113 AMP@[94; 95) 115 AMP@[94; 95) "&"
114 PATH_TYPE@[95; 96) 116 PATH_TYPE@[95; 96)
115 PATH@[95; 96) 117 PATH@[95; 96)
116 PATH_SEGMENT@[95; 96) 118 PATH_SEGMENT@[95; 96)
117 NAME_REF@[95; 96) 119 NAME_REF@[95; 96)
118 IDENT@[95; 96) "T" 120 IDENT@[95; 96) "T"
119 R_PAREN@[96; 97) 121 R_PAREN@[96; 97) ")"
120 WHITESPACE@[97; 98) 122 WHITESPACE@[97; 98) " "
121 WHERE_CLAUSE@[98; 131) 123 WHERE_CLAUSE@[98; 131)
122 WHERE_KW@[98; 103) 124 WHERE_KW@[98; 103) "where"
123 WHITESPACE@[103; 104) 125 WHITESPACE@[103; 104) " "
124 WHERE_PRED@[104; 131) 126 WHERE_PRED@[104; 131)
125 FOR_TYPE@[104; 121) 127 FOR_TYPE@[104; 121)
126 FOR_KW@[104; 107) 128 FOR_KW@[104; 107) "for"
127 TYPE_PARAM_LIST@[107; 111) 129 TYPE_PARAM_LIST@[107; 111)
128 L_ANGLE@[107; 108) 130 L_ANGLE@[107; 108) "<"
129 LIFETIME_PARAM@[108; 110) 131 LIFETIME_PARAM@[108; 110)
130 LIFETIME@[108; 110) "'a" 132 LIFETIME@[108; 110) "\'a"
131 R_ANGLE@[110; 111) 133 R_ANGLE@[110; 111) ">"
132 WHITESPACE@[111; 112) 134 WHITESPACE@[111; 112) " "
133 REFERENCE_TYPE@[112; 121) 135 REFERENCE_TYPE@[112; 121)
134 AMP@[112; 113) 136 AMP@[112; 113) "&"
135 LIFETIME@[113; 115) "'a" 137 LIFETIME@[113; 115) "\'a"
136 WHITESPACE@[115; 116) 138 WHITESPACE@[115; 116) " "
137 MUT_KW@[116; 119) 139 MUT_KW@[116; 119) "mut"
138 WHITESPACE@[119; 120) 140 WHITESPACE@[119; 120) " "
139 PATH_TYPE@[120; 121) 141 PATH_TYPE@[120; 121)
140 PATH@[120; 121) 142 PATH@[120; 121)
141 PATH_SEGMENT@[120; 121) 143 PATH_SEGMENT@[120; 121)
142 NAME_REF@[120; 121) 144 NAME_REF@[120; 121)
143 IDENT@[120; 121) "T" 145 IDENT@[120; 121) "T"
144 COLON@[121; 122) 146 COLON@[121; 122) ":"
145 WHITESPACE@[122; 123) 147 WHITESPACE@[122; 123) " "
146 PATH_TYPE@[123; 131) 148 TYPE_BOUND_LIST@[123; 131)
147 PATH@[123; 131) 149 TYPE_BOUND@[123; 131)
148 PATH_SEGMENT@[123; 131) 150 PATH_TYPE@[123; 131)
149 NAME_REF@[123; 131) 151 PATH@[123; 131)
150 IDENT@[123; 131) "Iterator" 152 PATH_SEGMENT@[123; 131)
151 WHITESPACE@[131; 132) 153 NAME_REF@[123; 131)
154 IDENT@[123; 131) "Iterator"
155 WHITESPACE@[131; 132) " "
152 BLOCK@[132; 134) 156 BLOCK@[132; 134)
153 L_CURLY@[132; 133) 157 L_CURLY@[132; 133) "{"
154 R_CURLY@[133; 134) 158 R_CURLY@[133; 134) "}"
155 WHITESPACE@[134; 135) 159 WHITESPACE@[134; 135) "\n"
diff --git a/crates/ra_syntax/tests/data/parser/inline/ok/0082_ref_expr.txt b/crates/ra_syntax/tests/data/parser/inline/ok/0082_ref_expr.txt
index 2cd888762..87a56d8ce 100644
--- a/crates/ra_syntax/tests/data/parser/inline/ok/0082_ref_expr.txt
+++ b/crates/ra_syntax/tests/data/parser/inline/ok/0082_ref_expr.txt
@@ -1,44 +1,44 @@
1SOURCE_FILE@[0; 52) 1SOURCE_FILE@[0; 52)
2 FN_DEF@[0; 51) 2 FN_DEF@[0; 51)
3 FN_KW@[0; 2) 3 FN_KW@[0; 2) "fn"
4 WHITESPACE@[2; 3) 4 WHITESPACE@[2; 3) " "
5 NAME@[3; 6) 5 NAME@[3; 6)
6 IDENT@[3; 6) "foo" 6 IDENT@[3; 6) "foo"
7 PARAM_LIST@[6; 8) 7 PARAM_LIST@[6; 8)
8 L_PAREN@[6; 7) 8 L_PAREN@[6; 7) "("
9 R_PAREN@[7; 8) 9 R_PAREN@[7; 8) ")"
10 WHITESPACE@[8; 9) 10 WHITESPACE@[8; 9) " "
11 BLOCK@[9; 51) 11 BLOCK@[9; 51)
12 L_CURLY@[9; 10) 12 L_CURLY@[9; 10) "{"
13 WHITESPACE@[10; 15) 13 WHITESPACE@[10; 15) "\n "
14 LET_STMT@[15; 26) 14 LET_STMT@[15; 26)
15 LET_KW@[15; 18) 15 LET_KW@[15; 18) "let"
16 WHITESPACE@[18; 19) 16 WHITESPACE@[18; 19) " "
17 PLACEHOLDER_PAT@[19; 20) 17 PLACEHOLDER_PAT@[19; 20)
18 UNDERSCORE@[19; 20) 18 UNDERSCORE@[19; 20) "_"
19 WHITESPACE@[20; 21) 19 WHITESPACE@[20; 21) " "
20 EQ@[21; 22) 20 EQ@[21; 22) "="
21 WHITESPACE@[22; 23) 21 WHITESPACE@[22; 23) " "
22 REF_EXPR@[23; 25) 22 REF_EXPR@[23; 25)
23 AMP@[23; 24) 23 AMP@[23; 24) "&"
24 LITERAL@[24; 25) 24 LITERAL@[24; 25)
25 INT_NUMBER@[24; 25) "1" 25 INT_NUMBER@[24; 25) "1"
26 SEMI@[25; 26) 26 SEMI@[25; 26) ";"
27 WHITESPACE@[26; 31) 27 WHITESPACE@[26; 31) "\n "
28 LET_STMT@[31; 49) 28 LET_STMT@[31; 49)
29 LET_KW@[31; 34) 29 LET_KW@[31; 34) "let"
30 WHITESPACE@[34; 35) 30 WHITESPACE@[34; 35) " "
31 PLACEHOLDER_PAT@[35; 36) 31 PLACEHOLDER_PAT@[35; 36)
32 UNDERSCORE@[35; 36) 32 UNDERSCORE@[35; 36) "_"
33 WHITESPACE@[36; 37) 33 WHITESPACE@[36; 37) " "
34 EQ@[37; 38) 34 EQ@[37; 38) "="
35 WHITESPACE@[38; 39) 35 WHITESPACE@[38; 39) " "
36 REF_EXPR@[39; 48) 36 REF_EXPR@[39; 48)
37 AMP@[39; 40) 37 AMP@[39; 40) "&"
38 MUT_KW@[40; 43) 38 MUT_KW@[40; 43) "mut"
39 WHITESPACE@[43; 44) 39 WHITESPACE@[43; 44) " "
40 REF_EXPR@[44; 48) 40 REF_EXPR@[44; 48)
41 AMP@[44; 45) 41 AMP@[44; 45) "&"
42 CALL_EXPR@[45; 48) 42 CALL_EXPR@[45; 48)
43 PATH_EXPR@[45; 46) 43 PATH_EXPR@[45; 46)
44 PATH@[45; 46) 44 PATH@[45; 46)
@@ -46,9 +46,9 @@ SOURCE_FILE@[0; 52)
46 NAME_REF@[45; 46) 46 NAME_REF@[45; 46)
47 IDENT@[45; 46) "f" 47 IDENT@[45; 46) "f"
48 ARG_LIST@[46; 48) 48 ARG_LIST@[46; 48)
49 L_PAREN@[46; 47) 49 L_PAREN@[46; 47) "("
50 R_PAREN@[47; 48) 50 R_PAREN@[47; 48) ")"
51 SEMI@[48; 49) 51 SEMI@[48; 49) ";"
52 WHITESPACE@[49; 50) 52 WHITESPACE@[49; 50) "\n"
53 R_CURLY@[50; 51) 53 R_CURLY@[50; 51) "}"
54 WHITESPACE@[51; 52) 54 WHITESPACE@[51; 52) "\n"
diff --git a/crates/ra_syntax/tests/data/parser/inline/ok/0083_struct_items.txt b/crates/ra_syntax/tests/data/parser/inline/ok/0083_struct_items.txt
index 6247729f6..62d93512b 100644
--- a/crates/ra_syntax/tests/data/parser/inline/ok/0083_struct_items.txt
+++ b/crates/ra_syntax/tests/data/parser/inline/ok/0083_struct_items.txt
@@ -1,87 +1,87 @@
1SOURCE_FILE@[0; 106) 1SOURCE_FILE@[0; 106)
2 STRUCT_DEF@[0; 11) 2 STRUCT_DEF@[0; 11)
3 STRUCT_KW@[0; 6) 3 STRUCT_KW@[0; 6) "struct"
4 WHITESPACE@[6; 7) 4 WHITESPACE@[6; 7) " "
5 NAME@[7; 10) 5 NAME@[7; 10)
6 IDENT@[7; 10) "Foo" 6 IDENT@[7; 10) "Foo"
7 SEMI@[10; 11) 7 SEMI@[10; 11) ";"
8 WHITESPACE@[11; 12) 8 WHITESPACE@[11; 12) "\n"
9 STRUCT_DEF@[12; 25) 9 STRUCT_DEF@[12; 25)
10 STRUCT_KW@[12; 18) 10 STRUCT_KW@[12; 18) "struct"
11 WHITESPACE@[18; 19) 11 WHITESPACE@[18; 19) " "
12 NAME@[19; 22) 12 NAME@[19; 22)
13 IDENT@[19; 22) "Foo" 13 IDENT@[19; 22) "Foo"
14 WHITESPACE@[22; 23) 14 WHITESPACE@[22; 23) " "
15 NAMED_FIELD_DEF_LIST@[23; 25) 15 NAMED_FIELD_DEF_LIST@[23; 25)
16 L_CURLY@[23; 24) 16 L_CURLY@[23; 24) "{"
17 R_CURLY@[24; 25) 17 R_CURLY@[24; 25) "}"
18 WHITESPACE@[25; 26) 18 WHITESPACE@[25; 26) "\n"
19 STRUCT_DEF@[26; 39) 19 STRUCT_DEF@[26; 39)
20 STRUCT_KW@[26; 32) 20 STRUCT_KW@[26; 32) "struct"
21 WHITESPACE@[32; 33) 21 WHITESPACE@[32; 33) " "
22 NAME@[33; 36) 22 NAME@[33; 36)
23 IDENT@[33; 36) "Foo" 23 IDENT@[33; 36) "Foo"
24 POS_FIELD_DEF_LIST@[36; 38) 24 POS_FIELD_DEF_LIST@[36; 38)
25 L_PAREN@[36; 37) 25 L_PAREN@[36; 37) "("
26 R_PAREN@[37; 38) 26 R_PAREN@[37; 38) ")"
27 SEMI@[38; 39) 27 SEMI@[38; 39) ";"
28 WHITESPACE@[39; 40) 28 WHITESPACE@[39; 40) "\n"
29 STRUCT_DEF@[40; 66) 29 STRUCT_DEF@[40; 66)
30 STRUCT_KW@[40; 46) 30 STRUCT_KW@[40; 46) "struct"
31 WHITESPACE@[46; 47) 31 WHITESPACE@[46; 47) " "
32 NAME@[47; 50) 32 NAME@[47; 50)
33 IDENT@[47; 50) "Foo" 33 IDENT@[47; 50) "Foo"
34 POS_FIELD_DEF_LIST@[50; 65) 34 POS_FIELD_DEF_LIST@[50; 65)
35 L_PAREN@[50; 51) 35 L_PAREN@[50; 51) "("
36 POS_FIELD_DEF@[51; 57) 36 POS_FIELD_DEF@[51; 57)
37 PATH_TYPE@[51; 57) 37 PATH_TYPE@[51; 57)
38 PATH@[51; 57) 38 PATH@[51; 57)
39 PATH_SEGMENT@[51; 57) 39 PATH_SEGMENT@[51; 57)
40 NAME_REF@[51; 57) 40 NAME_REF@[51; 57)
41 IDENT@[51; 57) "String" 41 IDENT@[51; 57) "String"
42 COMMA@[57; 58) 42 COMMA@[57; 58) ","
43 WHITESPACE@[58; 59) 43 WHITESPACE@[58; 59) " "
44 POS_FIELD_DEF@[59; 64) 44 POS_FIELD_DEF@[59; 64)
45 PATH_TYPE@[59; 64) 45 PATH_TYPE@[59; 64)
46 PATH@[59; 64) 46 PATH@[59; 64)
47 PATH_SEGMENT@[59; 64) 47 PATH_SEGMENT@[59; 64)
48 NAME_REF@[59; 64) 48 NAME_REF@[59; 64)
49 IDENT@[59; 64) "usize" 49 IDENT@[59; 64) "usize"
50 R_PAREN@[64; 65) 50 R_PAREN@[64; 65) ")"
51 SEMI@[65; 66) 51 SEMI@[65; 66) ";"
52 WHITESPACE@[66; 67) 52 WHITESPACE@[66; 67) "\n"
53 STRUCT_DEF@[67; 105) 53 STRUCT_DEF@[67; 105)
54 STRUCT_KW@[67; 73) 54 STRUCT_KW@[67; 73) "struct"
55 WHITESPACE@[73; 74) 55 WHITESPACE@[73; 74) " "
56 NAME@[74; 77) 56 NAME@[74; 77)
57 IDENT@[74; 77) "Foo" 57 IDENT@[74; 77) "Foo"
58 WHITESPACE@[77; 78) 58 WHITESPACE@[77; 78) " "
59 NAMED_FIELD_DEF_LIST@[78; 105) 59 NAMED_FIELD_DEF_LIST@[78; 105)
60 L_CURLY@[78; 79) 60 L_CURLY@[78; 79) "{"
61 WHITESPACE@[79; 84) 61 WHITESPACE@[79; 84) "\n "
62 NAMED_FIELD_DEF@[84; 90) 62 NAMED_FIELD_DEF@[84; 90)
63 NAME@[84; 85) 63 NAME@[84; 85)
64 IDENT@[84; 85) "a" 64 IDENT@[84; 85) "a"
65 COLON@[85; 86) 65 COLON@[85; 86) ":"
66 WHITESPACE@[86; 87) 66 WHITESPACE@[86; 87) " "
67 PATH_TYPE@[87; 90) 67 PATH_TYPE@[87; 90)
68 PATH@[87; 90) 68 PATH@[87; 90)
69 PATH_SEGMENT@[87; 90) 69 PATH_SEGMENT@[87; 90)
70 NAME_REF@[87; 90) 70 NAME_REF@[87; 90)
71 IDENT@[87; 90) "i32" 71 IDENT@[87; 90) "i32"
72 COMMA@[90; 91) 72 COMMA@[90; 91) ","
73 WHITESPACE@[91; 96) 73 WHITESPACE@[91; 96) "\n "
74 NAMED_FIELD_DEF@[96; 102) 74 NAMED_FIELD_DEF@[96; 102)
75 NAME@[96; 97) 75 NAME@[96; 97)
76 IDENT@[96; 97) "b" 76 IDENT@[96; 97) "b"
77 COLON@[97; 98) 77 COLON@[97; 98) ":"
78 WHITESPACE@[98; 99) 78 WHITESPACE@[98; 99) " "
79 PATH_TYPE@[99; 102) 79 PATH_TYPE@[99; 102)
80 PATH@[99; 102) 80 PATH@[99; 102)
81 PATH_SEGMENT@[99; 102) 81 PATH_SEGMENT@[99; 102)
82 NAME_REF@[99; 102) 82 NAME_REF@[99; 102)
83 IDENT@[99; 102) "f32" 83 IDENT@[99; 102) "f32"
84 COMMA@[102; 103) 84 COMMA@[102; 103) ","
85 WHITESPACE@[103; 104) 85 WHITESPACE@[103; 104) "\n"
86 R_CURLY@[104; 105) 86 R_CURLY@[104; 105) "}"
87 WHITESPACE@[105; 106) 87 WHITESPACE@[105; 106) "\n"
diff --git a/crates/ra_syntax/tests/data/parser/inline/ok/0084_paren_type.txt b/crates/ra_syntax/tests/data/parser/inline/ok/0084_paren_type.txt
index 76b52bf89..c0cf48af5 100644
--- a/crates/ra_syntax/tests/data/parser/inline/ok/0084_paren_type.txt
+++ b/crates/ra_syntax/tests/data/parser/inline/ok/0084_paren_type.txt
@@ -1,19 +1,19 @@
1SOURCE_FILE@[0; 16) 1SOURCE_FILE@[0; 16)
2 TYPE_ALIAS_DEF@[0; 15) 2 TYPE_ALIAS_DEF@[0; 15)
3 TYPE_KW@[0; 4) 3 TYPE_KW@[0; 4) "type"
4 WHITESPACE@[4; 5) 4 WHITESPACE@[4; 5) " "
5 NAME@[5; 6) 5 NAME@[5; 6)
6 IDENT@[5; 6) "T" 6 IDENT@[5; 6) "T"
7 WHITESPACE@[6; 7) 7 WHITESPACE@[6; 7) " "
8 EQ@[7; 8) 8 EQ@[7; 8) "="
9 WHITESPACE@[8; 9) 9 WHITESPACE@[8; 9) " "
10 PAREN_TYPE@[9; 14) 10 PAREN_TYPE@[9; 14)
11 L_PAREN@[9; 10) 11 L_PAREN@[9; 10) "("
12 PATH_TYPE@[10; 13) 12 PATH_TYPE@[10; 13)
13 PATH@[10; 13) 13 PATH@[10; 13)
14 PATH_SEGMENT@[10; 13) 14 PATH_SEGMENT@[10; 13)
15 NAME_REF@[10; 13) 15 NAME_REF@[10; 13)
16 IDENT@[10; 13) "i32" 16 IDENT@[10; 13) "i32"
17 R_PAREN@[13; 14) 17 R_PAREN@[13; 14) ")"
18 SEMI@[14; 15) 18 SEMI@[14; 15) ";"
19 WHITESPACE@[15; 16) 19 WHITESPACE@[15; 16) "\n"
diff --git a/crates/ra_syntax/tests/data/parser/inline/ok/0085_expr_literals.txt b/crates/ra_syntax/tests/data/parser/inline/ok/0085_expr_literals.txt
index 1d88f952d..2f2be32b9 100644
--- a/crates/ra_syntax/tests/data/parser/inline/ok/0085_expr_literals.txt
+++ b/crates/ra_syntax/tests/data/parser/inline/ok/0085_expr_literals.txt
@@ -1,135 +1,135 @@
1SOURCE_FILE@[0; 189) 1SOURCE_FILE@[0; 189)
2 FN_DEF@[0; 188) 2 FN_DEF@[0; 188)
3 FN_KW@[0; 2) 3 FN_KW@[0; 2) "fn"
4 WHITESPACE@[2; 3) 4 WHITESPACE@[2; 3) " "
5 NAME@[3; 6) 5 NAME@[3; 6)
6 IDENT@[3; 6) "foo" 6 IDENT@[3; 6) "foo"
7 PARAM_LIST@[6; 8) 7 PARAM_LIST@[6; 8)
8 L_PAREN@[6; 7) 8 L_PAREN@[6; 7) "("
9 R_PAREN@[7; 8) 9 R_PAREN@[7; 8) ")"
10 WHITESPACE@[8; 9) 10 WHITESPACE@[8; 9) " "
11 BLOCK@[9; 188) 11 BLOCK@[9; 188)
12 L_CURLY@[9; 10) 12 L_CURLY@[9; 10) "{"
13 WHITESPACE@[10; 15) 13 WHITESPACE@[10; 15) "\n "
14 LET_STMT@[15; 28) 14 LET_STMT@[15; 28)
15 LET_KW@[15; 18) 15 LET_KW@[15; 18) "let"
16 WHITESPACE@[18; 19) 16 WHITESPACE@[18; 19) " "
17 PLACEHOLDER_PAT@[19; 20) 17 PLACEHOLDER_PAT@[19; 20)
18 UNDERSCORE@[19; 20) 18 UNDERSCORE@[19; 20) "_"
19 WHITESPACE@[20; 21) 19 WHITESPACE@[20; 21) " "
20 EQ@[21; 22) 20 EQ@[21; 22) "="
21 WHITESPACE@[22; 23) 21 WHITESPACE@[22; 23) " "
22 LITERAL@[23; 27) 22 LITERAL@[23; 27)
23 TRUE_KW@[23; 27) 23 TRUE_KW@[23; 27) "true"
24 SEMI@[27; 28) 24 SEMI@[27; 28) ";"
25 WHITESPACE@[28; 33) 25 WHITESPACE@[28; 33) "\n "
26 LET_STMT@[33; 47) 26 LET_STMT@[33; 47)
27 LET_KW@[33; 36) 27 LET_KW@[33; 36) "let"
28 WHITESPACE@[36; 37) 28 WHITESPACE@[36; 37) " "
29 PLACEHOLDER_PAT@[37; 38) 29 PLACEHOLDER_PAT@[37; 38)
30 UNDERSCORE@[37; 38) 30 UNDERSCORE@[37; 38) "_"
31 WHITESPACE@[38; 39) 31 WHITESPACE@[38; 39) " "
32 EQ@[39; 40) 32 EQ@[39; 40) "="
33 WHITESPACE@[40; 41) 33 WHITESPACE@[40; 41) " "
34 LITERAL@[41; 46) 34 LITERAL@[41; 46)
35 FALSE_KW@[41; 46) 35 FALSE_KW@[41; 46) "false"
36 SEMI@[46; 47) 36 SEMI@[46; 47) ";"
37 WHITESPACE@[47; 52) 37 WHITESPACE@[47; 52) "\n "
38 LET_STMT@[52; 62) 38 LET_STMT@[52; 62)
39 LET_KW@[52; 55) 39 LET_KW@[52; 55) "let"
40 WHITESPACE@[55; 56) 40 WHITESPACE@[55; 56) " "
41 PLACEHOLDER_PAT@[56; 57) 41 PLACEHOLDER_PAT@[56; 57)
42 UNDERSCORE@[56; 57) 42 UNDERSCORE@[56; 57) "_"
43 WHITESPACE@[57; 58) 43 WHITESPACE@[57; 58) " "
44 EQ@[58; 59) 44 EQ@[58; 59) "="
45 WHITESPACE@[59; 60) 45 WHITESPACE@[59; 60) " "
46 LITERAL@[60; 61) 46 LITERAL@[60; 61)
47 INT_NUMBER@[60; 61) "1" 47 INT_NUMBER@[60; 61) "1"
48 SEMI@[61; 62) 48 SEMI@[61; 62) ";"
49 WHITESPACE@[62; 67) 49 WHITESPACE@[62; 67) "\n "
50 LET_STMT@[67; 79) 50 LET_STMT@[67; 79)
51 LET_KW@[67; 70) 51 LET_KW@[67; 70) "let"
52 WHITESPACE@[70; 71) 52 WHITESPACE@[70; 71) " "
53 PLACEHOLDER_PAT@[71; 72) 53 PLACEHOLDER_PAT@[71; 72)
54 UNDERSCORE@[71; 72) 54 UNDERSCORE@[71; 72) "_"
55 WHITESPACE@[72; 73) 55 WHITESPACE@[72; 73) " "
56 EQ@[73; 74) 56 EQ@[73; 74) "="
57 WHITESPACE@[74; 75) 57 WHITESPACE@[74; 75) " "
58 LITERAL@[75; 78) 58 LITERAL@[75; 78)
59 FLOAT_NUMBER@[75; 78) "2.0" 59 FLOAT_NUMBER@[75; 78) "2.0"
60 SEMI@[78; 79) 60 SEMI@[78; 79) ";"
61 WHITESPACE@[79; 84) 61 WHITESPACE@[79; 84) "\n "
62 LET_STMT@[84; 97) 62 LET_STMT@[84; 97)
63 LET_KW@[84; 87) 63 LET_KW@[84; 87) "let"
64 WHITESPACE@[87; 88) 64 WHITESPACE@[87; 88) " "
65 PLACEHOLDER_PAT@[88; 89) 65 PLACEHOLDER_PAT@[88; 89)
66 UNDERSCORE@[88; 89) 66 UNDERSCORE@[88; 89) "_"
67 WHITESPACE@[89; 90) 67 WHITESPACE@[89; 90) " "
68 EQ@[90; 91) 68 EQ@[90; 91) "="
69 WHITESPACE@[91; 92) 69 WHITESPACE@[91; 92) " "
70 LITERAL@[92; 96) 70 LITERAL@[92; 96)
71 BYTE@[92; 96) 71 BYTE@[92; 96) "b\'a\'"
72 SEMI@[96; 97) 72 SEMI@[96; 97) ";"
73 WHITESPACE@[97; 102) 73 WHITESPACE@[97; 102) "\n "
74 LET_STMT@[102; 114) 74 LET_STMT@[102; 114)
75 LET_KW@[102; 105) 75 LET_KW@[102; 105) "let"
76 WHITESPACE@[105; 106) 76 WHITESPACE@[105; 106) " "
77 PLACEHOLDER_PAT@[106; 107) 77 PLACEHOLDER_PAT@[106; 107)
78 UNDERSCORE@[106; 107) 78 UNDERSCORE@[106; 107) "_"
79 WHITESPACE@[107; 108) 79 WHITESPACE@[107; 108) " "
80 EQ@[108; 109) 80 EQ@[108; 109) "="
81 WHITESPACE@[109; 110) 81 WHITESPACE@[109; 110) " "
82 LITERAL@[110; 113) 82 LITERAL@[110; 113)
83 CHAR@[110; 113) 83 CHAR@[110; 113) "\'b\'"
84 SEMI@[113; 114) 84 SEMI@[113; 114) ";"
85 WHITESPACE@[114; 119) 85 WHITESPACE@[114; 119) "\n "
86 LET_STMT@[119; 131) 86 LET_STMT@[119; 131)
87 LET_KW@[119; 122) 87 LET_KW@[119; 122) "let"
88 WHITESPACE@[122; 123) 88 WHITESPACE@[122; 123) " "
89 PLACEHOLDER_PAT@[123; 124) 89 PLACEHOLDER_PAT@[123; 124)
90 UNDERSCORE@[123; 124) 90 UNDERSCORE@[123; 124) "_"
91 WHITESPACE@[124; 125) 91 WHITESPACE@[124; 125) " "
92 EQ@[125; 126) 92 EQ@[125; 126) "="
93 WHITESPACE@[126; 127) 93 WHITESPACE@[126; 127) " "
94 LITERAL@[127; 130) 94 LITERAL@[127; 130)
95 STRING@[127; 130) 95 STRING@[127; 130) "\"c\""
96 SEMI@[130; 131) 96 SEMI@[130; 131) ";"
97 WHITESPACE@[131; 136) 97 WHITESPACE@[131; 136) "\n "
98 LET_STMT@[136; 149) 98 LET_STMT@[136; 149)
99 LET_KW@[136; 139) 99 LET_KW@[136; 139) "let"
100 WHITESPACE@[139; 140) 100 WHITESPACE@[139; 140) " "
101 PLACEHOLDER_PAT@[140; 141) 101 PLACEHOLDER_PAT@[140; 141)
102 UNDERSCORE@[140; 141) 102 UNDERSCORE@[140; 141) "_"
103 WHITESPACE@[141; 142) 103 WHITESPACE@[141; 142) " "
104 EQ@[142; 143) 104 EQ@[142; 143) "="
105 WHITESPACE@[143; 144) 105 WHITESPACE@[143; 144) " "
106 LITERAL@[144; 148) 106 LITERAL@[144; 148)
107 RAW_STRING@[144; 148) 107 RAW_STRING@[144; 148) "r\"d\""
108 SEMI@[148; 149) 108 SEMI@[148; 149) ";"
109 WHITESPACE@[149; 154) 109 WHITESPACE@[149; 154) "\n "
110 LET_STMT@[154; 167) 110 LET_STMT@[154; 167)
111 LET_KW@[154; 157) 111 LET_KW@[154; 157) "let"
112 WHITESPACE@[157; 158) 112 WHITESPACE@[157; 158) " "
113 PLACEHOLDER_PAT@[158; 159) 113 PLACEHOLDER_PAT@[158; 159)
114 UNDERSCORE@[158; 159) 114 UNDERSCORE@[158; 159) "_"
115 WHITESPACE@[159; 160) 115 WHITESPACE@[159; 160) " "
116 EQ@[160; 161) 116 EQ@[160; 161) "="
117 WHITESPACE@[161; 162) 117 WHITESPACE@[161; 162) " "
118 LITERAL@[162; 166) 118 LITERAL@[162; 166)
119 BYTE_STRING@[162; 166) 119 BYTE_STRING@[162; 166) "b\"e\""
120 SEMI@[166; 167) 120 SEMI@[166; 167) ";"
121 WHITESPACE@[167; 172) 121 WHITESPACE@[167; 172) "\n "
122 LET_STMT@[172; 186) 122 LET_STMT@[172; 186)
123 LET_KW@[172; 175) 123 LET_KW@[172; 175) "let"
124 WHITESPACE@[175; 176) 124 WHITESPACE@[175; 176) " "
125 PLACEHOLDER_PAT@[176; 177) 125 PLACEHOLDER_PAT@[176; 177)
126 UNDERSCORE@[176; 177) 126 UNDERSCORE@[176; 177) "_"
127 WHITESPACE@[177; 178) 127 WHITESPACE@[177; 178) " "
128 EQ@[178; 179) 128 EQ@[178; 179) "="
129 WHITESPACE@[179; 180) 129 WHITESPACE@[179; 180) " "
130 LITERAL@[180; 185) 130 LITERAL@[180; 185)
131 RAW_BYTE_STRING@[180; 185) 131 RAW_BYTE_STRING@[180; 185) "br\"f\""
132 SEMI@[185; 186) 132 SEMI@[185; 186) ";"
133 WHITESPACE@[186; 187) 133 WHITESPACE@[186; 187) "\n"
134 R_CURLY@[187; 188) 134 R_CURLY@[187; 188) "}"
135 WHITESPACE@[188; 189) 135 WHITESPACE@[188; 189) "\n"
diff --git a/crates/ra_syntax/tests/data/parser/inline/ok/0086_function_ret_type.txt b/crates/ra_syntax/tests/data/parser/inline/ok/0086_function_ret_type.txt
index 1edf9412f..ac793c95c 100644
--- a/crates/ra_syntax/tests/data/parser/inline/ok/0086_function_ret_type.txt
+++ b/crates/ra_syntax/tests/data/parser/inline/ok/0086_function_ret_type.txt
@@ -1,34 +1,34 @@
1SOURCE_FILE@[0; 30) 1SOURCE_FILE@[0; 30)
2 FN_DEF@[0; 11) 2 FN_DEF@[0; 11)
3 FN_KW@[0; 2) 3 FN_KW@[0; 2) "fn"
4 WHITESPACE@[2; 3) 4 WHITESPACE@[2; 3) " "
5 NAME@[3; 6) 5 NAME@[3; 6)
6 IDENT@[3; 6) "foo" 6 IDENT@[3; 6) "foo"
7 PARAM_LIST@[6; 8) 7 PARAM_LIST@[6; 8)
8 L_PAREN@[6; 7) 8 L_PAREN@[6; 7) "("
9 R_PAREN@[7; 8) 9 R_PAREN@[7; 8) ")"
10 WHITESPACE@[8; 9) 10 WHITESPACE@[8; 9) " "
11 BLOCK@[9; 11) 11 BLOCK@[9; 11)
12 L_CURLY@[9; 10) 12 L_CURLY@[9; 10) "{"
13 R_CURLY@[10; 11) 13 R_CURLY@[10; 11) "}"
14 WHITESPACE@[11; 12) 14 WHITESPACE@[11; 12) "\n"
15 FN_DEF@[12; 29) 15 FN_DEF@[12; 29)
16 FN_KW@[12; 14) 16 FN_KW@[12; 14) "fn"
17 WHITESPACE@[14; 15) 17 WHITESPACE@[14; 15) " "
18 NAME@[15; 18) 18 NAME@[15; 18)
19 IDENT@[15; 18) "bar" 19 IDENT@[15; 18) "bar"
20 PARAM_LIST@[18; 20) 20 PARAM_LIST@[18; 20)
21 L_PAREN@[18; 19) 21 L_PAREN@[18; 19) "("
22 R_PAREN@[19; 20) 22 R_PAREN@[19; 20) ")"
23 WHITESPACE@[20; 21) 23 WHITESPACE@[20; 21) " "
24 RET_TYPE@[21; 26) 24 RET_TYPE@[21; 26)
25 THIN_ARROW@[21; 23) 25 THIN_ARROW@[21; 23) "->"
26 WHITESPACE@[23; 24) 26 WHITESPACE@[23; 24) " "
27 TUPLE_TYPE@[24; 26) 27 TUPLE_TYPE@[24; 26)
28 L_PAREN@[24; 25) 28 L_PAREN@[24; 25) "("
29 R_PAREN@[25; 26) 29 R_PAREN@[25; 26) ")"
30 WHITESPACE@[26; 27) 30 WHITESPACE@[26; 27) " "
31 BLOCK@[27; 29) 31 BLOCK@[27; 29)
32 L_CURLY@[27; 28) 32 L_CURLY@[27; 28) "{"
33 R_CURLY@[28; 29) 33 R_CURLY@[28; 29) "}"
34 WHITESPACE@[29; 30) 34 WHITESPACE@[29; 30) "\n"
diff --git a/crates/ra_syntax/tests/data/parser/inline/ok/0087_unsafe_impl.txt b/crates/ra_syntax/tests/data/parser/inline/ok/0087_unsafe_impl.txt
index d93c0df4d..590e2a88f 100644
--- a/crates/ra_syntax/tests/data/parser/inline/ok/0087_unsafe_impl.txt
+++ b/crates/ra_syntax/tests/data/parser/inline/ok/0087_unsafe_impl.txt
@@ -1,16 +1,16 @@
1SOURCE_FILE@[0; 19) 1SOURCE_FILE@[0; 19)
2 IMPL_BLOCK@[0; 18) 2 IMPL_BLOCK@[0; 18)
3 UNSAFE_KW@[0; 6) 3 UNSAFE_KW@[0; 6) "unsafe"
4 WHITESPACE@[6; 7) 4 WHITESPACE@[6; 7) " "
5 IMPL_KW@[7; 11) 5 IMPL_KW@[7; 11) "impl"
6 WHITESPACE@[11; 12) 6 WHITESPACE@[11; 12) " "
7 PATH_TYPE@[12; 15) 7 PATH_TYPE@[12; 15)
8 PATH@[12; 15) 8 PATH@[12; 15)
9 PATH_SEGMENT@[12; 15) 9 PATH_SEGMENT@[12; 15)
10 NAME_REF@[12; 15) 10 NAME_REF@[12; 15)
11 IDENT@[12; 15) "Foo" 11 IDENT@[12; 15) "Foo"
12 WHITESPACE@[15; 16) 12 WHITESPACE@[15; 16) " "
13 ITEM_LIST@[16; 18) 13 ITEM_LIST@[16; 18)
14 L_CURLY@[16; 17) 14 L_CURLY@[16; 17) "{"
15 R_CURLY@[17; 18) 15 R_CURLY@[17; 18) "}"
16 WHITESPACE@[18; 19) 16 WHITESPACE@[18; 19) "\n"
diff --git a/crates/ra_syntax/tests/data/parser/inline/ok/0088_break_ambiguity.txt b/crates/ra_syntax/tests/data/parser/inline/ok/0088_break_ambiguity.txt
index 6032a6c17..b93a10c5b 100644
--- a/crates/ra_syntax/tests/data/parser/inline/ok/0088_break_ambiguity.txt
+++ b/crates/ra_syntax/tests/data/parser/inline/ok/0088_break_ambiguity.txt
@@ -1,65 +1,65 @@
1SOURCE_FILE@[0; 88) 1SOURCE_FILE@[0; 88)
2 FN_DEF@[0; 87) 2 FN_DEF@[0; 87)
3 FN_KW@[0; 2) 3 FN_KW@[0; 2) "fn"
4 WHITESPACE@[2; 3) 4 WHITESPACE@[2; 3) " "
5 NAME@[3; 6) 5 NAME@[3; 6)
6 IDENT@[3; 6) "foo" 6 IDENT@[3; 6) "foo"
7 PARAM_LIST@[6; 8) 7 PARAM_LIST@[6; 8)
8 L_PAREN@[6; 7) 8 L_PAREN@[6; 7) "("
9 R_PAREN@[7; 8) 9 R_PAREN@[7; 8) ")"
10 BLOCK@[8; 87) 10 BLOCK@[8; 87)
11 L_CURLY@[8; 9) 11 L_CURLY@[8; 9) "{"
12 WHITESPACE@[9; 14) 12 WHITESPACE@[9; 14) "\n "
13 EXPR_STMT@[14; 25) 13 EXPR_STMT@[14; 25)
14 IF_EXPR@[14; 25) 14 IF_EXPR@[14; 25)
15 IF_KW@[14; 16) 15 IF_KW@[14; 16) "if"
16 WHITESPACE@[16; 17) 16 WHITESPACE@[16; 17) " "
17 CONDITION@[17; 22) 17 CONDITION@[17; 22)
18 BREAK_EXPR@[17; 22) 18 BREAK_EXPR@[17; 22)
19 BREAK_KW@[17; 22) 19 BREAK_KW@[17; 22) "break"
20 WHITESPACE@[22; 23) 20 WHITESPACE@[22; 23) " "
21 BLOCK@[23; 25) 21 BLOCK@[23; 25)
22 L_CURLY@[23; 24) 22 L_CURLY@[23; 24) "{"
23 R_CURLY@[24; 25) 23 R_CURLY@[24; 25) "}"
24 WHITESPACE@[25; 30) 24 WHITESPACE@[25; 30) "\n "
25 EXPR_STMT@[30; 44) 25 EXPR_STMT@[30; 44)
26 WHILE_EXPR@[30; 44) 26 WHILE_EXPR@[30; 44)
27 WHILE_KW@[30; 35) 27 WHILE_KW@[30; 35) "while"
28 WHITESPACE@[35; 36) 28 WHITESPACE@[35; 36) " "
29 CONDITION@[36; 41) 29 CONDITION@[36; 41)
30 BREAK_EXPR@[36; 41) 30 BREAK_EXPR@[36; 41)
31 BREAK_KW@[36; 41) 31 BREAK_KW@[36; 41) "break"
32 WHITESPACE@[41; 42) 32 WHITESPACE@[41; 42) " "
33 BLOCK@[42; 44) 33 BLOCK@[42; 44)
34 L_CURLY@[42; 43) 34 L_CURLY@[42; 43) "{"
35 R_CURLY@[43; 44) 35 R_CURLY@[43; 44) "}"
36 WHITESPACE@[44; 49) 36 WHITESPACE@[44; 49) "\n "
37 EXPR_STMT@[49; 66) 37 EXPR_STMT@[49; 66)
38 FOR_EXPR@[49; 66) 38 FOR_EXPR@[49; 66)
39 FOR_KW@[49; 52) 39 FOR_KW@[49; 52) "for"
40 WHITESPACE@[52; 53) 40 WHITESPACE@[52; 53) " "
41 BIND_PAT@[53; 54) 41 BIND_PAT@[53; 54)
42 NAME@[53; 54) 42 NAME@[53; 54)
43 IDENT@[53; 54) "i" 43 IDENT@[53; 54) "i"
44 WHITESPACE@[54; 55) 44 WHITESPACE@[54; 55) " "
45 IN_KW@[55; 57) 45 IN_KW@[55; 57) "in"
46 WHITESPACE@[57; 58) 46 WHITESPACE@[57; 58) " "
47 BREAK_EXPR@[58; 63) 47 BREAK_EXPR@[58; 63)
48 BREAK_KW@[58; 63) 48 BREAK_KW@[58; 63) "break"
49 WHITESPACE@[63; 64) 49 WHITESPACE@[63; 64) " "
50 BLOCK@[64; 66) 50 BLOCK@[64; 66)
51 L_CURLY@[64; 65) 51 L_CURLY@[64; 65) "{"
52 R_CURLY@[65; 66) 52 R_CURLY@[65; 66) "}"
53 WHITESPACE@[66; 71) 53 WHITESPACE@[66; 71) "\n "
54 MATCH_EXPR@[71; 85) 54 MATCH_EXPR@[71; 85)
55 MATCH_KW@[71; 76) 55 MATCH_KW@[71; 76) "match"
56 WHITESPACE@[76; 77) 56 WHITESPACE@[76; 77) " "
57 BREAK_EXPR@[77; 82) 57 BREAK_EXPR@[77; 82)
58 BREAK_KW@[77; 82) 58 BREAK_KW@[77; 82) "break"
59 WHITESPACE@[82; 83) 59 WHITESPACE@[82; 83) " "
60 MATCH_ARM_LIST@[83; 85) 60 MATCH_ARM_LIST@[83; 85)
61 L_CURLY@[83; 84) 61 L_CURLY@[83; 84) "{"
62 R_CURLY@[84; 85) 62 R_CURLY@[84; 85) "}"
63 WHITESPACE@[85; 86) 63 WHITESPACE@[85; 86) "\n"
64 R_CURLY@[86; 87) 64 R_CURLY@[86; 87) "}"
65 WHITESPACE@[87; 88) 65 WHITESPACE@[87; 88) "\n"
diff --git a/crates/ra_syntax/tests/data/parser/inline/ok/0089_extern_fn.txt b/crates/ra_syntax/tests/data/parser/inline/ok/0089_extern_fn.txt
index d2b26566d..ed5339e64 100644
--- a/crates/ra_syntax/tests/data/parser/inline/ok/0089_extern_fn.txt
+++ b/crates/ra_syntax/tests/data/parser/inline/ok/0089_extern_fn.txt
@@ -1,17 +1,17 @@
1SOURCE_FILE@[0; 19) 1SOURCE_FILE@[0; 19)
2 FN_DEF@[0; 18) 2 FN_DEF@[0; 18)
3 ABI@[0; 6) 3 ABI@[0; 6)
4 EXTERN_KW@[0; 6) 4 EXTERN_KW@[0; 6) "extern"
5 WHITESPACE@[6; 7) 5 WHITESPACE@[6; 7) " "
6 FN_KW@[7; 9) 6 FN_KW@[7; 9) "fn"
7 WHITESPACE@[9; 10) 7 WHITESPACE@[9; 10) " "
8 NAME@[10; 13) 8 NAME@[10; 13)
9 IDENT@[10; 13) "foo" 9 IDENT@[10; 13) "foo"
10 PARAM_LIST@[13; 15) 10 PARAM_LIST@[13; 15)
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; 18) 14 BLOCK@[16; 18)
15 L_CURLY@[16; 17) 15 L_CURLY@[16; 17) "{"
16 R_CURLY@[17; 18) 16 R_CURLY@[17; 18) "}"
17 WHITESPACE@[18; 19) 17 WHITESPACE@[18; 19) "\n"
diff --git a/crates/ra_syntax/tests/data/parser/inline/ok/0090_type_param_default.txt b/crates/ra_syntax/tests/data/parser/inline/ok/0090_type_param_default.txt
index 59b3fbd2e..8d2579cd6 100644
--- a/crates/ra_syntax/tests/data/parser/inline/ok/0090_type_param_default.txt
+++ b/crates/ra_syntax/tests/data/parser/inline/ok/0090_type_param_default.txt
@@ -1,22 +1,22 @@
1SOURCE_FILE@[0; 19) 1SOURCE_FILE@[0; 19)
2 STRUCT_DEF@[0; 18) 2 STRUCT_DEF@[0; 18)
3 STRUCT_KW@[0; 6) 3 STRUCT_KW@[0; 6) "struct"
4 WHITESPACE@[6; 7) 4 WHITESPACE@[6; 7) " "
5 NAME@[7; 8) 5 NAME@[7; 8)
6 IDENT@[7; 8) "S" 6 IDENT@[7; 8) "S"
7 TYPE_PARAM_LIST@[8; 17) 7 TYPE_PARAM_LIST@[8; 17)
8 L_ANGLE@[8; 9) 8 L_ANGLE@[8; 9) "<"
9 TYPE_PARAM@[9; 16) 9 TYPE_PARAM@[9; 16)
10 NAME@[9; 10) 10 NAME@[9; 10)
11 IDENT@[9; 10) "T" 11 IDENT@[9; 10) "T"
12 WHITESPACE@[10; 11) 12 WHITESPACE@[10; 11) " "
13 EQ@[11; 12) 13 EQ@[11; 12) "="
14 WHITESPACE@[12; 13) 14 WHITESPACE@[12; 13) " "
15 PATH_TYPE@[13; 16) 15 PATH_TYPE@[13; 16)
16 PATH@[13; 16) 16 PATH@[13; 16)
17 PATH_SEGMENT@[13; 16) 17 PATH_SEGMENT@[13; 16)
18 NAME_REF@[13; 16) 18 NAME_REF@[13; 16)
19 IDENT@[13; 16) "i32" 19 IDENT@[13; 16) "i32"
20 R_ANGLE@[16; 17) 20 R_ANGLE@[16; 17) ">"
21 SEMI@[17; 18) 21 SEMI@[17; 18) ";"
22 WHITESPACE@[18; 19) 22 WHITESPACE@[18; 19) "\n"
diff --git a/crates/ra_syntax/tests/data/parser/inline/ok/0091_auto_trait.txt b/crates/ra_syntax/tests/data/parser/inline/ok/0091_auto_trait.txt
index 8b3ce28d0..7093c2b1f 100644
--- a/crates/ra_syntax/tests/data/parser/inline/ok/0091_auto_trait.txt
+++ b/crates/ra_syntax/tests/data/parser/inline/ok/0091_auto_trait.txt
@@ -1,13 +1,13 @@
1SOURCE_FILE@[0; 16) 1SOURCE_FILE@[0; 16)
2 TRAIT_DEF@[0; 15) 2 TRAIT_DEF@[0; 15)
3 AUTO_KW@[0; 4) 3 AUTO_KW@[0; 4) "auto"
4 WHITESPACE@[4; 5) 4 WHITESPACE@[4; 5) " "
5 TRAIT_KW@[5; 10) 5 TRAIT_KW@[5; 10) "trait"
6 WHITESPACE@[10; 11) 6 WHITESPACE@[10; 11) " "
7 NAME@[11; 12) 7 NAME@[11; 12)
8 IDENT@[11; 12) "T" 8 IDENT@[11; 12) "T"
9 WHITESPACE@[12; 13) 9 WHITESPACE@[12; 13) " "
10 ITEM_LIST@[13; 15) 10 ITEM_LIST@[13; 15)
11 L_CURLY@[13; 14) 11 L_CURLY@[13; 14) "{"
12 R_CURLY@[14; 15) 12 R_CURLY@[14; 15) "}"
13 WHITESPACE@[15; 16) 13 WHITESPACE@[15; 16) "\n"
diff --git a/crates/ra_syntax/tests/data/parser/inline/ok/0092_fn_pointer_type_with_ret.txt b/crates/ra_syntax/tests/data/parser/inline/ok/0092_fn_pointer_type_with_ret.txt
index dc42a5c00..fae822367 100644
--- a/crates/ra_syntax/tests/data/parser/inline/ok/0092_fn_pointer_type_with_ret.txt
+++ b/crates/ra_syntax/tests/data/parser/inline/ok/0092_fn_pointer_type_with_ret.txt
@@ -1,23 +1,23 @@
1SOURCE_FILE@[0; 21) 1SOURCE_FILE@[0; 21)
2 TYPE_ALIAS_DEF@[0; 20) 2 TYPE_ALIAS_DEF@[0; 20)
3 TYPE_KW@[0; 4) 3 TYPE_KW@[0; 4) "type"
4 WHITESPACE@[4; 5) 4 WHITESPACE@[4; 5) " "
5 NAME@[5; 6) 5 NAME@[5; 6)
6 IDENT@[5; 6) "F" 6 IDENT@[5; 6) "F"
7 WHITESPACE@[6; 7) 7 WHITESPACE@[6; 7) " "
8 EQ@[7; 8) 8 EQ@[7; 8) "="
9 WHITESPACE@[8; 9) 9 WHITESPACE@[8; 9) " "
10 FN_POINTER_TYPE@[9; 19) 10 FN_POINTER_TYPE@[9; 19)
11 FN_KW@[9; 11) 11 FN_KW@[9; 11) "fn"
12 PARAM_LIST@[11; 13) 12 PARAM_LIST@[11; 13)
13 L_PAREN@[11; 12) 13 L_PAREN@[11; 12) "("
14 R_PAREN@[12; 13) 14 R_PAREN@[12; 13) ")"
15 WHITESPACE@[13; 14) 15 WHITESPACE@[13; 14) " "
16 RET_TYPE@[14; 19) 16 RET_TYPE@[14; 19)
17 THIN_ARROW@[14; 16) 17 THIN_ARROW@[14; 16) "->"
18 WHITESPACE@[16; 17) 18 WHITESPACE@[16; 17) " "
19 TUPLE_TYPE@[17; 19) 19 TUPLE_TYPE@[17; 19)
20 L_PAREN@[17; 18) 20 L_PAREN@[17; 18) "("
21 R_PAREN@[18; 19) 21 R_PAREN@[18; 19) ")"
22 SEMI@[19; 20) 22 SEMI@[19; 20) ";"
23 WHITESPACE@[20; 21) 23 WHITESPACE@[20; 21) "\n"
diff --git a/crates/ra_syntax/tests/data/parser/inline/ok/0093_index_expr.txt b/crates/ra_syntax/tests/data/parser/inline/ok/0093_index_expr.txt
index 6e10be559..b4a71f925 100644
--- a/crates/ra_syntax/tests/data/parser/inline/ok/0093_index_expr.txt
+++ b/crates/ra_syntax/tests/data/parser/inline/ok/0093_index_expr.txt
@@ -1,16 +1,16 @@
1SOURCE_FILE@[0; 26) 1SOURCE_FILE@[0; 26)
2 FN_DEF@[0; 25) 2 FN_DEF@[0; 25)
3 FN_KW@[0; 2) 3 FN_KW@[0; 2) "fn"
4 WHITESPACE@[2; 3) 4 WHITESPACE@[2; 3) " "
5 NAME@[3; 6) 5 NAME@[3; 6)
6 IDENT@[3; 6) "foo" 6 IDENT@[3; 6) "foo"
7 PARAM_LIST@[6; 8) 7 PARAM_LIST@[6; 8)
8 L_PAREN@[6; 7) 8 L_PAREN@[6; 7) "("
9 R_PAREN@[7; 8) 9 R_PAREN@[7; 8) ")"
10 WHITESPACE@[8; 9) 10 WHITESPACE@[8; 9) " "
11 BLOCK@[9; 25) 11 BLOCK@[9; 25)
12 L_CURLY@[9; 10) 12 L_CURLY@[9; 10) "{"
13 WHITESPACE@[10; 15) 13 WHITESPACE@[10; 15) "\n "
14 EXPR_STMT@[15; 23) 14 EXPR_STMT@[15; 23)
15 INDEX_EXPR@[15; 22) 15 INDEX_EXPR@[15; 22)
16 INDEX_EXPR@[15; 19) 16 INDEX_EXPR@[15; 19)
@@ -19,15 +19,15 @@ SOURCE_FILE@[0; 26)
19 PATH_SEGMENT@[15; 16) 19 PATH_SEGMENT@[15; 16)
20 NAME_REF@[15; 16) 20 NAME_REF@[15; 16)
21 IDENT@[15; 16) "x" 21 IDENT@[15; 16) "x"
22 L_BRACK@[16; 17) 22 L_BRACK@[16; 17) "["
23 LITERAL@[17; 18) 23 LITERAL@[17; 18)
24 INT_NUMBER@[17; 18) "1" 24 INT_NUMBER@[17; 18) "1"
25 R_BRACK@[18; 19) 25 R_BRACK@[18; 19) "]"
26 L_BRACK@[19; 20) 26 L_BRACK@[19; 20) "["
27 LITERAL@[20; 21) 27 LITERAL@[20; 21)
28 INT_NUMBER@[20; 21) "2" 28 INT_NUMBER@[20; 21) "2"
29 R_BRACK@[21; 22) 29 R_BRACK@[21; 22) "]"
30 SEMI@[22; 23) 30 SEMI@[22; 23) ";"
31 WHITESPACE@[23; 24) 31 WHITESPACE@[23; 24) "\n"
32 R_CURLY@[24; 25) 32 R_CURLY@[24; 25) "}"
33 WHITESPACE@[25; 26) 33 WHITESPACE@[25; 26) "\n"
diff --git a/crates/ra_syntax/tests/data/parser/inline/ok/0094_unsafe_auto_trait.txt b/crates/ra_syntax/tests/data/parser/inline/ok/0094_unsafe_auto_trait.txt
index b541ceff8..3da3beaf4 100644
--- a/crates/ra_syntax/tests/data/parser/inline/ok/0094_unsafe_auto_trait.txt
+++ b/crates/ra_syntax/tests/data/parser/inline/ok/0094_unsafe_auto_trait.txt
@@ -1,15 +1,15 @@
1SOURCE_FILE@[0; 23) 1SOURCE_FILE@[0; 23)
2 TRAIT_DEF@[0; 22) 2 TRAIT_DEF@[0; 22)
3 UNSAFE_KW@[0; 6) 3 UNSAFE_KW@[0; 6) "unsafe"
4 WHITESPACE@[6; 7) 4 WHITESPACE@[6; 7) " "
5 AUTO_KW@[7; 11) 5 AUTO_KW@[7; 11) "auto"
6 WHITESPACE@[11; 12) 6 WHITESPACE@[11; 12) " "
7 TRAIT_KW@[12; 17) 7 TRAIT_KW@[12; 17) "trait"
8 WHITESPACE@[17; 18) 8 WHITESPACE@[17; 18) " "
9 NAME@[18; 19) 9 NAME@[18; 19)
10 IDENT@[18; 19) "T" 10 IDENT@[18; 19) "T"
11 WHITESPACE@[19; 20) 11 WHITESPACE@[19; 20) " "
12 ITEM_LIST@[20; 22) 12 ITEM_LIST@[20; 22)
13 L_CURLY@[20; 21) 13 L_CURLY@[20; 21) "{"
14 R_CURLY@[21; 22) 14 R_CURLY@[21; 22) "}"
15 WHITESPACE@[22; 23) 15 WHITESPACE@[22; 23) "\n"
diff --git a/crates/ra_syntax/tests/data/parser/inline/ok/0095_placeholder_pat.txt b/crates/ra_syntax/tests/data/parser/inline/ok/0095_placeholder_pat.txt
index 08ba391e3..f11bc1fc8 100644
--- a/crates/ra_syntax/tests/data/parser/inline/ok/0095_placeholder_pat.txt
+++ b/crates/ra_syntax/tests/data/parser/inline/ok/0095_placeholder_pat.txt
@@ -1,28 +1,28 @@
1SOURCE_FILE@[0; 26) 1SOURCE_FILE@[0; 26)
2 FN_DEF@[0; 25) 2 FN_DEF@[0; 25)
3 FN_KW@[0; 2) 3 FN_KW@[0; 2) "fn"
4 WHITESPACE@[2; 3) 4 WHITESPACE@[2; 3) " "
5 NAME@[3; 7) 5 NAME@[3; 7)
6 IDENT@[3; 7) "main" 6 IDENT@[3; 7) "main"
7 PARAM_LIST@[7; 9) 7 PARAM_LIST@[7; 9)
8 L_PAREN@[7; 8) 8 L_PAREN@[7; 8) "("
9 R_PAREN@[8; 9) 9 R_PAREN@[8; 9) ")"
10 WHITESPACE@[9; 10) 10 WHITESPACE@[9; 10) " "
11 BLOCK@[10; 25) 11 BLOCK@[10; 25)
12 L_CURLY@[10; 11) 12 L_CURLY@[10; 11) "{"
13 WHITESPACE@[11; 12) 13 WHITESPACE@[11; 12) " "
14 LET_STMT@[12; 23) 14 LET_STMT@[12; 23)
15 LET_KW@[12; 15) 15 LET_KW@[12; 15) "let"
16 WHITESPACE@[15; 16) 16 WHITESPACE@[15; 16) " "
17 PLACEHOLDER_PAT@[16; 17) 17 PLACEHOLDER_PAT@[16; 17)
18 UNDERSCORE@[16; 17) 18 UNDERSCORE@[16; 17) "_"
19 WHITESPACE@[17; 18) 19 WHITESPACE@[17; 18) " "
20 EQ@[18; 19) 20 EQ@[18; 19) "="
21 WHITESPACE@[19; 20) 21 WHITESPACE@[19; 20) " "
22 TUPLE_EXPR@[20; 22) 22 TUPLE_EXPR@[20; 22)
23 L_PAREN@[20; 21) 23 L_PAREN@[20; 21) "("
24 R_PAREN@[21; 22) 24 R_PAREN@[21; 22) ")"
25 SEMI@[22; 23) 25 SEMI@[22; 23) ";"
26 WHITESPACE@[23; 24) 26 WHITESPACE@[23; 24) " "
27 R_CURLY@[24; 25) 27 R_CURLY@[24; 25) "}"
28 WHITESPACE@[25; 26) 28 WHITESPACE@[25; 26) "\n"
diff --git a/crates/ra_syntax/tests/data/parser/inline/ok/0096_no_semi_after_block.txt b/crates/ra_syntax/tests/data/parser/inline/ok/0096_no_semi_after_block.txt
index ac789651a..5291f59d5 100644
--- a/crates/ra_syntax/tests/data/parser/inline/ok/0096_no_semi_after_block.txt
+++ b/crates/ra_syntax/tests/data/parser/inline/ok/0096_no_semi_after_block.txt
@@ -1,124 +1,124 @@
1SOURCE_FILE@[0; 167) 1SOURCE_FILE@[0; 167)
2 FN_DEF@[0; 166) 2 FN_DEF@[0; 166)
3 FN_KW@[0; 2) 3 FN_KW@[0; 2) "fn"
4 WHITESPACE@[2; 3) 4 WHITESPACE@[2; 3) " "
5 NAME@[3; 6) 5 NAME@[3; 6)
6 IDENT@[3; 6) "foo" 6 IDENT@[3; 6) "foo"
7 PARAM_LIST@[6; 8) 7 PARAM_LIST@[6; 8)
8 L_PAREN@[6; 7) 8 L_PAREN@[6; 7) "("
9 R_PAREN@[7; 8) 9 R_PAREN@[7; 8) ")"
10 WHITESPACE@[8; 9) 10 WHITESPACE@[8; 9) " "
11 BLOCK@[9; 166) 11 BLOCK@[9; 166)
12 L_CURLY@[9; 10) 12 L_CURLY@[9; 10) "{"
13 WHITESPACE@[10; 15) 13 WHITESPACE@[10; 15) "\n "
14 EXPR_STMT@[15; 25) 14 EXPR_STMT@[15; 25)
15 IF_EXPR@[15; 25) 15 IF_EXPR@[15; 25)
16 IF_KW@[15; 17) 16 IF_KW@[15; 17) "if"
17 WHITESPACE@[17; 18) 17 WHITESPACE@[17; 18) " "
18 CONDITION@[18; 22) 18 CONDITION@[18; 22)
19 LITERAL@[18; 22) 19 LITERAL@[18; 22)
20 TRUE_KW@[18; 22) 20 TRUE_KW@[18; 22) "true"
21 WHITESPACE@[22; 23) 21 WHITESPACE@[22; 23) " "
22 BLOCK@[23; 25) 22 BLOCK@[23; 25)
23 L_CURLY@[23; 24) 23 L_CURLY@[23; 24) "{"
24 R_CURLY@[24; 25) 24 R_CURLY@[24; 25) "}"
25 WHITESPACE@[25; 30) 25 WHITESPACE@[25; 30) "\n "
26 EXPR_STMT@[30; 37) 26 EXPR_STMT@[30; 37)
27 LOOP_EXPR@[30; 37) 27 LOOP_EXPR@[30; 37)
28 LOOP_KW@[30; 34) 28 LOOP_KW@[30; 34) "loop"
29 WHITESPACE@[34; 35) 29 WHITESPACE@[34; 35) " "
30 BLOCK@[35; 37) 30 BLOCK@[35; 37)
31 L_CURLY@[35; 36) 31 L_CURLY@[35; 36) "{"
32 R_CURLY@[36; 37) 32 R_CURLY@[36; 37) "}"
33 WHITESPACE@[37; 42) 33 WHITESPACE@[37; 42) "\n "
34 EXPR_STMT@[42; 53) 34 EXPR_STMT@[42; 53)
35 MATCH_EXPR@[42; 53) 35 MATCH_EXPR@[42; 53)
36 MATCH_KW@[42; 47) 36 MATCH_KW@[42; 47) "match"
37 WHITESPACE@[47; 48) 37 WHITESPACE@[47; 48) " "
38 TUPLE_EXPR@[48; 50) 38 TUPLE_EXPR@[48; 50)
39 L_PAREN@[48; 49) 39 L_PAREN@[48; 49) "("
40 R_PAREN@[49; 50) 40 R_PAREN@[49; 50) ")"
41 WHITESPACE@[50; 51) 41 WHITESPACE@[50; 51) " "
42 MATCH_ARM_LIST@[51; 53) 42 MATCH_ARM_LIST@[51; 53)
43 L_CURLY@[51; 52) 43 L_CURLY@[51; 52) "{"
44 R_CURLY@[52; 53) 44 R_CURLY@[52; 53) "}"
45 WHITESPACE@[53; 58) 45 WHITESPACE@[53; 58) "\n "
46 EXPR_STMT@[58; 71) 46 EXPR_STMT@[58; 71)
47 WHILE_EXPR@[58; 71) 47 WHILE_EXPR@[58; 71)
48 WHILE_KW@[58; 63) 48 WHILE_KW@[58; 63) "while"
49 WHITESPACE@[63; 64) 49 WHITESPACE@[63; 64) " "
50 CONDITION@[64; 68) 50 CONDITION@[64; 68)
51 LITERAL@[64; 68) 51 LITERAL@[64; 68)
52 TRUE_KW@[64; 68) 52 TRUE_KW@[64; 68) "true"
53 WHITESPACE@[68; 69) 53 WHITESPACE@[68; 69) " "
54 BLOCK@[69; 71) 54 BLOCK@[69; 71)
55 L_CURLY@[69; 70) 55 L_CURLY@[69; 70) "{"
56 R_CURLY@[70; 71) 56 R_CURLY@[70; 71) "}"
57 WHITESPACE@[71; 76) 57 WHITESPACE@[71; 76) "\n "
58 EXPR_STMT@[76; 90) 58 EXPR_STMT@[76; 90)
59 FOR_EXPR@[76; 90) 59 FOR_EXPR@[76; 90)
60 FOR_KW@[76; 79) 60 FOR_KW@[76; 79) "for"
61 WHITESPACE@[79; 80) 61 WHITESPACE@[79; 80) " "
62 PLACEHOLDER_PAT@[80; 81) 62 PLACEHOLDER_PAT@[80; 81)
63 UNDERSCORE@[80; 81) 63 UNDERSCORE@[80; 81) "_"
64 WHITESPACE@[81; 82) 64 WHITESPACE@[81; 82) " "
65 IN_KW@[82; 84) 65 IN_KW@[82; 84) "in"
66 WHITESPACE@[84; 85) 66 WHITESPACE@[84; 85) " "
67 TUPLE_EXPR@[85; 87) 67 TUPLE_EXPR@[85; 87)
68 L_PAREN@[85; 86) 68 L_PAREN@[85; 86) "("
69 R_PAREN@[86; 87) 69 R_PAREN@[86; 87) ")"
70 WHITESPACE@[87; 88) 70 WHITESPACE@[87; 88) " "
71 BLOCK@[88; 90) 71 BLOCK@[88; 90)
72 L_CURLY@[88; 89) 72 L_CURLY@[88; 89) "{"
73 R_CURLY@[89; 90) 73 R_CURLY@[89; 90) "}"
74 WHITESPACE@[90; 95) 74 WHITESPACE@[90; 95) "\n "
75 EXPR_STMT@[95; 97) 75 EXPR_STMT@[95; 97)
76 BLOCK_EXPR@[95; 97) 76 BLOCK_EXPR@[95; 97)
77 BLOCK@[95; 97) 77 BLOCK@[95; 97)
78 L_CURLY@[95; 96) 78 L_CURLY@[95; 96) "{"
79 R_CURLY@[96; 97) 79 R_CURLY@[96; 97) "}"
80 WHITESPACE@[97; 102) 80 WHITESPACE@[97; 102) "\n "
81 EXPR_STMT@[102; 104) 81 EXPR_STMT@[102; 104)
82 BLOCK_EXPR@[102; 104) 82 BLOCK_EXPR@[102; 104)
83 BLOCK@[102; 104) 83 BLOCK@[102; 104)
84 L_CURLY@[102; 103) 84 L_CURLY@[102; 103) "{"
85 R_CURLY@[103; 104) 85 R_CURLY@[103; 104) "}"
86 WHITESPACE@[104; 109) 86 WHITESPACE@[104; 109) "\n "
87 EXPR_STMT@[109; 152) 87 EXPR_STMT@[109; 152)
88 MACRO_CALL@[109; 152) 88 MACRO_CALL@[109; 152)
89 PATH@[109; 120) 89 PATH@[109; 120)
90 PATH_SEGMENT@[109; 120) 90 PATH_SEGMENT@[109; 120)
91 NAME_REF@[109; 120) 91 NAME_REF@[109; 120)
92 IDENT@[109; 120) "macro_rules" 92 IDENT@[109; 120) "macro_rules"
93 EXCL@[120; 121) 93 EXCL@[120; 121) "!"
94 WHITESPACE@[121; 122) 94 WHITESPACE@[121; 122) " "
95 NAME@[122; 126) 95 NAME@[122; 126)
96 IDENT@[122; 126) "test" 96 IDENT@[122; 126) "test"
97 WHITESPACE@[126; 127) 97 WHITESPACE@[126; 127) " "
98 TOKEN_TREE@[127; 152) 98 TOKEN_TREE@[127; 152)
99 L_CURLY@[127; 128) 99 L_CURLY@[127; 128) "{"
100 WHITESPACE@[128; 138) 100 WHITESPACE@[128; 138) "\n "
101 TOKEN_TREE@[138; 140) 101 TOKEN_TREE@[138; 140)
102 L_PAREN@[138; 139) 102 L_PAREN@[138; 139) "("
103 R_PAREN@[139; 140) 103 R_PAREN@[139; 140) ")"
104 WHITESPACE@[140; 141) 104 WHITESPACE@[140; 141) " "
105 FAT_ARROW@[141; 143) 105 FAT_ARROW@[141; 143) "=>"
106 WHITESPACE@[143; 144) 106 WHITESPACE@[143; 144) " "
107 TOKEN_TREE@[144; 146) 107 TOKEN_TREE@[144; 146)
108 L_CURLY@[144; 145) 108 L_CURLY@[144; 145) "{"
109 R_CURLY@[145; 146) 109 R_CURLY@[145; 146) "}"
110 WHITESPACE@[146; 151) 110 WHITESPACE@[146; 151) "\n "
111 R_CURLY@[151; 152) 111 R_CURLY@[151; 152) "}"
112 WHITESPACE@[152; 157) 112 WHITESPACE@[152; 157) "\n "
113 MACRO_CALL@[157; 164) 113 MACRO_CALL@[157; 164)
114 PATH@[157; 161) 114 PATH@[157; 161)
115 PATH_SEGMENT@[157; 161) 115 PATH_SEGMENT@[157; 161)
116 NAME_REF@[157; 161) 116 NAME_REF@[157; 161)
117 IDENT@[157; 161) "test" 117 IDENT@[157; 161) "test"
118 EXCL@[161; 162) 118 EXCL@[161; 162) "!"
119 TOKEN_TREE@[162; 164) 119 TOKEN_TREE@[162; 164)
120 L_CURLY@[162; 163) 120 L_CURLY@[162; 163) "{"
121 R_CURLY@[163; 164) 121 R_CURLY@[163; 164) "}"
122 WHITESPACE@[164; 165) 122 WHITESPACE@[164; 165) "\n"
123 R_CURLY@[165; 166) 123 R_CURLY@[165; 166) "}"
124 WHITESPACE@[166; 167) 124 WHITESPACE@[166; 167) "\n"
diff --git a/crates/ra_syntax/tests/data/parser/inline/ok/0097_default_impl.txt b/crates/ra_syntax/tests/data/parser/inline/ok/0097_default_impl.txt
index 0b9af800b..ada94a824 100644
--- a/crates/ra_syntax/tests/data/parser/inline/ok/0097_default_impl.txt
+++ b/crates/ra_syntax/tests/data/parser/inline/ok/0097_default_impl.txt
@@ -1,16 +1,16 @@
1SOURCE_FILE@[0; 20) 1SOURCE_FILE@[0; 20)
2 IMPL_BLOCK@[0; 19) 2 IMPL_BLOCK@[0; 19)
3 DEFAULT_KW@[0; 7) 3 DEFAULT_KW@[0; 7) "default"
4 WHITESPACE@[7; 8) 4 WHITESPACE@[7; 8) " "
5 IMPL_KW@[8; 12) 5 IMPL_KW@[8; 12) "impl"
6 WHITESPACE@[12; 13) 6 WHITESPACE@[12; 13) " "
7 PATH_TYPE@[13; 16) 7 PATH_TYPE@[13; 16)
8 PATH@[13; 16) 8 PATH@[13; 16)
9 PATH_SEGMENT@[13; 16) 9 PATH_SEGMENT@[13; 16)
10 NAME_REF@[13; 16) 10 NAME_REF@[13; 16)
11 IDENT@[13; 16) "Foo" 11 IDENT@[13; 16) "Foo"
12 WHITESPACE@[16; 17) 12 WHITESPACE@[16; 17) " "
13 ITEM_LIST@[17; 19) 13 ITEM_LIST@[17; 19)
14 L_CURLY@[17; 18) 14 L_CURLY@[17; 18) "{"
15 R_CURLY@[18; 19) 15 R_CURLY@[18; 19) "}"
16 WHITESPACE@[19; 20) 16 WHITESPACE@[19; 20) "\n"
diff --git a/crates/ra_syntax/tests/data/parser/inline/ok/0098_const_unsafe_fn.txt b/crates/ra_syntax/tests/data/parser/inline/ok/0098_const_unsafe_fn.txt
index 814c9f1a0..0dd42ab8e 100644
--- a/crates/ra_syntax/tests/data/parser/inline/ok/0098_const_unsafe_fn.txt
+++ b/crates/ra_syntax/tests/data/parser/inline/ok/0098_const_unsafe_fn.txt
@@ -1,18 +1,18 @@
1SOURCE_FILE@[0; 25) 1SOURCE_FILE@[0; 25)
2 FN_DEF@[0; 24) 2 FN_DEF@[0; 24)
3 CONST_KW@[0; 5) 3 CONST_KW@[0; 5) "const"
4 WHITESPACE@[5; 6) 4 WHITESPACE@[5; 6) " "
5 UNSAFE_KW@[6; 12) 5 UNSAFE_KW@[6; 12) "unsafe"
6 WHITESPACE@[12; 13) 6 WHITESPACE@[12; 13) " "
7 FN_KW@[13; 15) 7 FN_KW@[13; 15) "fn"
8 WHITESPACE@[15; 16) 8 WHITESPACE@[15; 16) " "
9 NAME@[16; 19) 9 NAME@[16; 19)
10 IDENT@[16; 19) "foo" 10 IDENT@[16; 19) "foo"
11 PARAM_LIST@[19; 21) 11 PARAM_LIST@[19; 21)
12 L_PAREN@[19; 20) 12 L_PAREN@[19; 20) "("
13 R_PAREN@[20; 21) 13 R_PAREN@[20; 21) ")"
14 WHITESPACE@[21; 22) 14 WHITESPACE@[21; 22) " "
15 BLOCK@[22; 24) 15 BLOCK@[22; 24)
16 L_CURLY@[22; 23) 16 L_CURLY@[22; 23) "{"
17 R_CURLY@[23; 24) 17 R_CURLY@[23; 24) "}"
18 WHITESPACE@[24; 25) 18 WHITESPACE@[24; 25) "\n"
diff --git a/crates/ra_syntax/tests/data/parser/inline/ok/0099_param_list.txt b/crates/ra_syntax/tests/data/parser/inline/ok/0099_param_list.txt
index 503fc97ff..80d636819 100644
--- a/crates/ra_syntax/tests/data/parser/inline/ok/0099_param_list.txt
+++ b/crates/ra_syntax/tests/data/parser/inline/ok/0099_param_list.txt
@@ -1,99 +1,99 @@
1SOURCE_FILE@[0; 67) 1SOURCE_FILE@[0; 67)
2 FN_DEF@[0; 9) 2 FN_DEF@[0; 9)
3 FN_KW@[0; 2) 3 FN_KW@[0; 2) "fn"
4 WHITESPACE@[2; 3) 4 WHITESPACE@[2; 3) " "
5 NAME@[3; 4) 5 NAME@[3; 4)
6 IDENT@[3; 4) "a" 6 IDENT@[3; 4) "a"
7 PARAM_LIST@[4; 6) 7 PARAM_LIST@[4; 6)
8 L_PAREN@[4; 5) 8 L_PAREN@[4; 5) "("
9 R_PAREN@[5; 6) 9 R_PAREN@[5; 6) ")"
10 WHITESPACE@[6; 7) 10 WHITESPACE@[6; 7) " "
11 BLOCK@[7; 9) 11 BLOCK@[7; 9)
12 L_CURLY@[7; 8) 12 L_CURLY@[7; 8) "{"
13 R_CURLY@[8; 9) 13 R_CURLY@[8; 9) "}"
14 WHITESPACE@[9; 10) 14 WHITESPACE@[9; 10) "\n"
15 FN_DEF@[10; 25) 15 FN_DEF@[10; 25)
16 FN_KW@[10; 12) 16 FN_KW@[10; 12) "fn"
17 WHITESPACE@[12; 13) 17 WHITESPACE@[12; 13) " "
18 NAME@[13; 14) 18 NAME@[13; 14)
19 IDENT@[13; 14) "b" 19 IDENT@[13; 14) "b"
20 PARAM_LIST@[14; 22) 20 PARAM_LIST@[14; 22)
21 L_PAREN@[14; 15) 21 L_PAREN@[14; 15) "("
22 PARAM@[15; 21) 22 PARAM@[15; 21)
23 BIND_PAT@[15; 16) 23 BIND_PAT@[15; 16)
24 NAME@[15; 16) 24 NAME@[15; 16)
25 IDENT@[15; 16) "x" 25 IDENT@[15; 16) "x"
26 COLON@[16; 17) 26 COLON@[16; 17) ":"
27 WHITESPACE@[17; 18) 27 WHITESPACE@[17; 18) " "
28 PATH_TYPE@[18; 21) 28 PATH_TYPE@[18; 21)
29 PATH@[18; 21) 29 PATH@[18; 21)
30 PATH_SEGMENT@[18; 21) 30 PATH_SEGMENT@[18; 21)
31 NAME_REF@[18; 21) 31 NAME_REF@[18; 21)
32 IDENT@[18; 21) "i32" 32 IDENT@[18; 21) "i32"
33 R_PAREN@[21; 22) 33 R_PAREN@[21; 22) ")"
34 WHITESPACE@[22; 23) 34 WHITESPACE@[22; 23) " "
35 BLOCK@[23; 25) 35 BLOCK@[23; 25)
36 L_CURLY@[23; 24) 36 L_CURLY@[23; 24) "{"
37 R_CURLY@[24; 25) 37 R_CURLY@[24; 25) "}"
38 WHITESPACE@[25; 26) 38 WHITESPACE@[25; 26) "\n"
39 FN_DEF@[26; 43) 39 FN_DEF@[26; 43)
40 FN_KW@[26; 28) 40 FN_KW@[26; 28) "fn"
41 WHITESPACE@[28; 29) 41 WHITESPACE@[28; 29) " "
42 NAME@[29; 30) 42 NAME@[29; 30)
43 IDENT@[29; 30) "c" 43 IDENT@[29; 30) "c"
44 PARAM_LIST@[30; 40) 44 PARAM_LIST@[30; 40)
45 L_PAREN@[30; 31) 45 L_PAREN@[30; 31) "("
46 PARAM@[31; 37) 46 PARAM@[31; 37)
47 BIND_PAT@[31; 32) 47 BIND_PAT@[31; 32)
48 NAME@[31; 32) 48 NAME@[31; 32)
49 IDENT@[31; 32) "x" 49 IDENT@[31; 32) "x"
50 COLON@[32; 33) 50 COLON@[32; 33) ":"
51 WHITESPACE@[33; 34) 51 WHITESPACE@[33; 34) " "
52 PATH_TYPE@[34; 37) 52 PATH_TYPE@[34; 37)
53 PATH@[34; 37) 53 PATH@[34; 37)
54 PATH_SEGMENT@[34; 37) 54 PATH_SEGMENT@[34; 37)
55 NAME_REF@[34; 37) 55 NAME_REF@[34; 37)
56 IDENT@[34; 37) "i32" 56 IDENT@[34; 37) "i32"
57 COMMA@[37; 38) 57 COMMA@[37; 38) ","
58 WHITESPACE@[38; 39) 58 WHITESPACE@[38; 39) " "
59 R_PAREN@[39; 40) 59 R_PAREN@[39; 40) ")"
60 WHITESPACE@[40; 41) 60 WHITESPACE@[40; 41) " "
61 BLOCK@[41; 43) 61 BLOCK@[41; 43)
62 L_CURLY@[41; 42) 62 L_CURLY@[41; 42) "{"
63 R_CURLY@[42; 43) 63 R_CURLY@[42; 43) "}"
64 WHITESPACE@[43; 44) 64 WHITESPACE@[43; 44) "\n"
65 FN_DEF@[44; 66) 65 FN_DEF@[44; 66)
66 FN_KW@[44; 46) 66 FN_KW@[44; 46) "fn"
67 WHITESPACE@[46; 47) 67 WHITESPACE@[46; 47) " "
68 NAME@[47; 48) 68 NAME@[47; 48)
69 IDENT@[47; 48) "d" 69 IDENT@[47; 48) "d"
70 PARAM_LIST@[48; 63) 70 PARAM_LIST@[48; 63)
71 L_PAREN@[48; 49) 71 L_PAREN@[48; 49) "("
72 PARAM@[49; 55) 72 PARAM@[49; 55)
73 BIND_PAT@[49; 50) 73 BIND_PAT@[49; 50)
74 NAME@[49; 50) 74 NAME@[49; 50)
75 IDENT@[49; 50) "x" 75 IDENT@[49; 50) "x"
76 COLON@[50; 51) 76 COLON@[50; 51) ":"
77 WHITESPACE@[51; 52) 77 WHITESPACE@[51; 52) " "
78 PATH_TYPE@[52; 55) 78 PATH_TYPE@[52; 55)
79 PATH@[52; 55) 79 PATH@[52; 55)
80 PATH_SEGMENT@[52; 55) 80 PATH_SEGMENT@[52; 55)
81 NAME_REF@[52; 55) 81 NAME_REF@[52; 55)
82 IDENT@[52; 55) "i32" 82 IDENT@[52; 55) "i32"
83 COMMA@[55; 56) 83 COMMA@[55; 56) ","
84 WHITESPACE@[56; 57) 84 WHITESPACE@[56; 57) " "
85 PARAM@[57; 62) 85 PARAM@[57; 62)
86 BIND_PAT@[57; 58) 86 BIND_PAT@[57; 58)
87 NAME@[57; 58) 87 NAME@[57; 58)
88 IDENT@[57; 58) "y" 88 IDENT@[57; 58) "y"
89 COLON@[58; 59) 89 COLON@[58; 59) ":"
90 WHITESPACE@[59; 60) 90 WHITESPACE@[59; 60) " "
91 TUPLE_TYPE@[60; 62) 91 TUPLE_TYPE@[60; 62)
92 L_PAREN@[60; 61) 92 L_PAREN@[60; 61) "("
93 R_PAREN@[61; 62) 93 R_PAREN@[61; 62) ")"
94 R_PAREN@[62; 63) 94 R_PAREN@[62; 63) ")"
95 WHITESPACE@[63; 64) 95 WHITESPACE@[63; 64) " "
96 BLOCK@[64; 66) 96 BLOCK@[64; 66)
97 L_CURLY@[64; 65) 97 L_CURLY@[64; 65) "{"
98 R_CURLY@[65; 66) 98 R_CURLY@[65; 66) "}"
99 WHITESPACE@[66; 67) 99 WHITESPACE@[66; 67) "\n"
diff --git a/crates/ra_syntax/tests/data/parser/inline/ok/0100_for_expr.txt b/crates/ra_syntax/tests/data/parser/inline/ok/0100_for_expr.txt
index 998f12110..09e108570 100644
--- a/crates/ra_syntax/tests/data/parser/inline/ok/0100_for_expr.txt
+++ b/crates/ra_syntax/tests/data/parser/inline/ok/0100_for_expr.txt
@@ -1,34 +1,34 @@
1SOURCE_FILE@[0; 33) 1SOURCE_FILE@[0; 33)
2 FN_DEF@[0; 32) 2 FN_DEF@[0; 32)
3 FN_KW@[0; 2) 3 FN_KW@[0; 2) "fn"
4 WHITESPACE@[2; 3) 4 WHITESPACE@[2; 3) " "
5 NAME@[3; 6) 5 NAME@[3; 6)
6 IDENT@[3; 6) "foo" 6 IDENT@[3; 6) "foo"
7 PARAM_LIST@[6; 8) 7 PARAM_LIST@[6; 8)
8 L_PAREN@[6; 7) 8 L_PAREN@[6; 7) "("
9 R_PAREN@[7; 8) 9 R_PAREN@[7; 8) ")"
10 WHITESPACE@[8; 9) 10 WHITESPACE@[8; 9) " "
11 BLOCK@[9; 32) 11 BLOCK@[9; 32)
12 L_CURLY@[9; 10) 12 L_CURLY@[9; 10) "{"
13 WHITESPACE@[10; 15) 13 WHITESPACE@[10; 15) "\n "
14 EXPR_STMT@[15; 30) 14 EXPR_STMT@[15; 30)
15 FOR_EXPR@[15; 29) 15 FOR_EXPR@[15; 29)
16 FOR_KW@[15; 18) 16 FOR_KW@[15; 18) "for"
17 WHITESPACE@[18; 19) 17 WHITESPACE@[18; 19) " "
18 BIND_PAT@[19; 20) 18 BIND_PAT@[19; 20)
19 NAME@[19; 20) 19 NAME@[19; 20)
20 IDENT@[19; 20) "x" 20 IDENT@[19; 20) "x"
21 WHITESPACE@[20; 21) 21 WHITESPACE@[20; 21) " "
22 IN_KW@[21; 23) 22 IN_KW@[21; 23) "in"
23 WHITESPACE@[23; 24) 23 WHITESPACE@[23; 24) " "
24 ARRAY_EXPR@[24; 26) 24 ARRAY_EXPR@[24; 26)
25 L_BRACK@[24; 25) 25 L_BRACK@[24; 25) "["
26 R_BRACK@[25; 26) 26 R_BRACK@[25; 26) "]"
27 WHITESPACE@[26; 27) 27 WHITESPACE@[26; 27) " "
28 BLOCK@[27; 29) 28 BLOCK@[27; 29)
29 L_CURLY@[27; 28) 29 L_CURLY@[27; 28) "{"
30 R_CURLY@[28; 29) 30 R_CURLY@[28; 29) "}"
31 SEMI@[29; 30) 31 SEMI@[29; 30) ";"
32 WHITESPACE@[30; 31) 32 WHITESPACE@[30; 31) "\n"
33 R_CURLY@[31; 32) 33 R_CURLY@[31; 32) "}"
34 WHITESPACE@[32; 33) 34 WHITESPACE@[32; 33) "\n"
diff --git a/crates/ra_syntax/tests/data/parser/inline/ok/0101_unsafe_fn.txt b/crates/ra_syntax/tests/data/parser/inline/ok/0101_unsafe_fn.txt
index 5498dbcbb..1a60f6ffe 100644
--- a/crates/ra_syntax/tests/data/parser/inline/ok/0101_unsafe_fn.txt
+++ b/crates/ra_syntax/tests/data/parser/inline/ok/0101_unsafe_fn.txt
@@ -1,16 +1,16 @@
1SOURCE_FILE@[0; 19) 1SOURCE_FILE@[0; 19)
2 FN_DEF@[0; 18) 2 FN_DEF@[0; 18)
3 UNSAFE_KW@[0; 6) 3 UNSAFE_KW@[0; 6) "unsafe"
4 WHITESPACE@[6; 7) 4 WHITESPACE@[6; 7) " "
5 FN_KW@[7; 9) 5 FN_KW@[7; 9) "fn"
6 WHITESPACE@[9; 10) 6 WHITESPACE@[9; 10) " "
7 NAME@[10; 13) 7 NAME@[10; 13)
8 IDENT@[10; 13) "foo" 8 IDENT@[10; 13) "foo"
9 PARAM_LIST@[13; 15) 9 PARAM_LIST@[13; 15)
10 L_PAREN@[13; 14) 10 L_PAREN@[13; 14) "("
11 R_PAREN@[14; 15) 11 R_PAREN@[14; 15) ")"
12 WHITESPACE@[15; 16) 12 WHITESPACE@[15; 16) " "
13 BLOCK@[16; 18) 13 BLOCK@[16; 18)
14 L_CURLY@[16; 17) 14 L_CURLY@[16; 17) "{"
15 R_CURLY@[17; 18) 15 R_CURLY@[17; 18) "}"
16 WHITESPACE@[18; 19) 16 WHITESPACE@[18; 19) "\n"
diff --git a/crates/ra_syntax/tests/data/parser/inline/ok/0102_field_pat_list.txt b/crates/ra_syntax/tests/data/parser/inline/ok/0102_field_pat_list.txt
index 3f7bb10d2..a2af4fc60 100644
--- a/crates/ra_syntax/tests/data/parser/inline/ok/0102_field_pat_list.txt
+++ b/crates/ra_syntax/tests/data/parser/inline/ok/0102_field_pat_list.txt
@@ -1,130 +1,130 @@
1SOURCE_FILE@[0; 119) 1SOURCE_FILE@[0; 119)
2 FN_DEF@[0; 118) 2 FN_DEF@[0; 118)
3 FN_KW@[0; 2) 3 FN_KW@[0; 2) "fn"
4 WHITESPACE@[2; 3) 4 WHITESPACE@[2; 3) " "
5 NAME@[3; 6) 5 NAME@[3; 6)
6 IDENT@[3; 6) "foo" 6 IDENT@[3; 6) "foo"
7 PARAM_LIST@[6; 8) 7 PARAM_LIST@[6; 8)
8 L_PAREN@[6; 7) 8 L_PAREN@[6; 7) "("
9 R_PAREN@[7; 8) 9 R_PAREN@[7; 8) ")"
10 WHITESPACE@[8; 9) 10 WHITESPACE@[8; 9) " "
11 BLOCK@[9; 118) 11 BLOCK@[9; 118)
12 L_CURLY@[9; 10) 12 L_CURLY@[9; 10) "{"
13 WHITESPACE@[10; 15) 13 WHITESPACE@[10; 15) "\n "
14 LET_STMT@[15; 29) 14 LET_STMT@[15; 29)
15 LET_KW@[15; 18) 15 LET_KW@[15; 18) "let"
16 WHITESPACE@[18; 19) 16 WHITESPACE@[18; 19) " "
17 STRUCT_PAT@[19; 23) 17 STRUCT_PAT@[19; 23)
18 PATH@[19; 20) 18 PATH@[19; 20)
19 PATH_SEGMENT@[19; 20) 19 PATH_SEGMENT@[19; 20)
20 NAME_REF@[19; 20) 20 NAME_REF@[19; 20)
21 IDENT@[19; 20) "S" 21 IDENT@[19; 20) "S"
22 WHITESPACE@[20; 21) 22 WHITESPACE@[20; 21) " "
23 FIELD_PAT_LIST@[21; 23) 23 FIELD_PAT_LIST@[21; 23)
24 L_CURLY@[21; 22) 24 L_CURLY@[21; 22) "{"
25 R_CURLY@[22; 23) 25 R_CURLY@[22; 23) "}"
26 WHITESPACE@[23; 24) 26 WHITESPACE@[23; 24) " "
27 EQ@[24; 25) 27 EQ@[24; 25) "="
28 WHITESPACE@[25; 26) 28 WHITESPACE@[25; 26) " "
29 TUPLE_EXPR@[26; 28) 29 TUPLE_EXPR@[26; 28)
30 L_PAREN@[26; 27) 30 L_PAREN@[26; 27) "("
31 R_PAREN@[27; 28) 31 R_PAREN@[27; 28) ")"
32 SEMI@[28; 29) 32 SEMI@[28; 29) ";"
33 WHITESPACE@[29; 34) 33 WHITESPACE@[29; 34) "\n "
34 LET_STMT@[34; 62) 34 LET_STMT@[34; 62)
35 LET_KW@[34; 37) 35 LET_KW@[34; 37) "let"
36 WHITESPACE@[37; 38) 36 WHITESPACE@[37; 38) " "
37 STRUCT_PAT@[38; 56) 37 STRUCT_PAT@[38; 56)
38 PATH@[38; 39) 38 PATH@[38; 39)
39 PATH_SEGMENT@[38; 39) 39 PATH_SEGMENT@[38; 39)
40 NAME_REF@[38; 39) 40 NAME_REF@[38; 39)
41 IDENT@[38; 39) "S" 41 IDENT@[38; 39) "S"
42 WHITESPACE@[39; 40) 42 WHITESPACE@[39; 40) " "
43 FIELD_PAT_LIST@[40; 56) 43 FIELD_PAT_LIST@[40; 56)
44 L_CURLY@[40; 41) 44 L_CURLY@[40; 41) "{"
45 WHITESPACE@[41; 42) 45 WHITESPACE@[41; 42) " "
46 BIND_PAT@[42; 43) 46 BIND_PAT@[42; 43)
47 NAME@[42; 43) 47 NAME@[42; 43)
48 IDENT@[42; 43) "f" 48 IDENT@[42; 43) "f"
49 COMMA@[43; 44) 49 COMMA@[43; 44) ","
50 WHITESPACE@[44; 45) 50 WHITESPACE@[44; 45) " "
51 BIND_PAT@[45; 54) 51 BIND_PAT@[45; 54)
52 REF_KW@[45; 48) 52 REF_KW@[45; 48) "ref"
53 WHITESPACE@[48; 49) 53 WHITESPACE@[48; 49) " "
54 MUT_KW@[49; 52) 54 MUT_KW@[49; 52) "mut"
55 WHITESPACE@[52; 53) 55 WHITESPACE@[52; 53) " "
56 NAME@[53; 54) 56 NAME@[53; 54)
57 IDENT@[53; 54) "g" 57 IDENT@[53; 54) "g"
58 WHITESPACE@[54; 55) 58 WHITESPACE@[54; 55) " "
59 R_CURLY@[55; 56) 59 R_CURLY@[55; 56) "}"
60 WHITESPACE@[56; 57) 60 WHITESPACE@[56; 57) " "
61 EQ@[57; 58) 61 EQ@[57; 58) "="
62 WHITESPACE@[58; 59) 62 WHITESPACE@[58; 59) " "
63 TUPLE_EXPR@[59; 61) 63 TUPLE_EXPR@[59; 61)
64 L_PAREN@[59; 60) 64 L_PAREN@[59; 60) "("
65 R_PAREN@[60; 61) 65 R_PAREN@[60; 61) ")"
66 SEMI@[61; 62) 66 SEMI@[61; 62) ";"
67 WHITESPACE@[62; 67) 67 WHITESPACE@[62; 67) "\n "
68 LET_STMT@[67; 90) 68 LET_STMT@[67; 90)
69 LET_KW@[67; 70) 69 LET_KW@[67; 70) "let"
70 WHITESPACE@[70; 71) 70 WHITESPACE@[70; 71) " "
71 STRUCT_PAT@[71; 84) 71 STRUCT_PAT@[71; 84)
72 PATH@[71; 72) 72 PATH@[71; 72)
73 PATH_SEGMENT@[71; 72) 73 PATH_SEGMENT@[71; 72)
74 NAME_REF@[71; 72) 74 NAME_REF@[71; 72)
75 IDENT@[71; 72) "S" 75 IDENT@[71; 72) "S"
76 WHITESPACE@[72; 73) 76 WHITESPACE@[72; 73) " "
77 FIELD_PAT_LIST@[73; 84) 77 FIELD_PAT_LIST@[73; 84)
78 L_CURLY@[73; 74) 78 L_CURLY@[73; 74) "{"
79 WHITESPACE@[74; 75) 79 WHITESPACE@[74; 75) " "
80 FIELD_PAT@[75; 79) 80 FIELD_PAT@[75; 79)
81 NAME@[75; 76) 81 NAME@[75; 76)
82 IDENT@[75; 76) "h" 82 IDENT@[75; 76) "h"
83 COLON@[76; 77) 83 COLON@[76; 77) ":"
84 WHITESPACE@[77; 78) 84 WHITESPACE@[77; 78) " "
85 PLACEHOLDER_PAT@[78; 79) 85 PLACEHOLDER_PAT@[78; 79)
86 UNDERSCORE@[78; 79) 86 UNDERSCORE@[78; 79) "_"
87 COMMA@[79; 80) 87 COMMA@[79; 80) ","
88 WHITESPACE@[80; 81) 88 WHITESPACE@[80; 81) " "
89 DOTDOT@[81; 83) 89 DOTDOT@[81; 83) ".."
90 R_CURLY@[83; 84) 90 R_CURLY@[83; 84) "}"
91 WHITESPACE@[84; 85) 91 WHITESPACE@[84; 85) " "
92 EQ@[85; 86) 92 EQ@[85; 86) "="
93 WHITESPACE@[86; 87) 93 WHITESPACE@[86; 87) " "
94 TUPLE_EXPR@[87; 89) 94 TUPLE_EXPR@[87; 89)
95 L_PAREN@[87; 88) 95 L_PAREN@[87; 88) "("
96 R_PAREN@[88; 89) 96 R_PAREN@[88; 89) ")"
97 SEMI@[89; 90) 97 SEMI@[89; 90) ";"
98 WHITESPACE@[90; 95) 98 WHITESPACE@[90; 95) "\n "
99 LET_STMT@[95; 116) 99 LET_STMT@[95; 116)
100 LET_KW@[95; 98) 100 LET_KW@[95; 98) "let"
101 WHITESPACE@[98; 99) 101 WHITESPACE@[98; 99) " "
102 STRUCT_PAT@[99; 110) 102 STRUCT_PAT@[99; 110)
103 PATH@[99; 100) 103 PATH@[99; 100)
104 PATH_SEGMENT@[99; 100) 104 PATH_SEGMENT@[99; 100)
105 NAME_REF@[99; 100) 105 NAME_REF@[99; 100)
106 IDENT@[99; 100) "S" 106 IDENT@[99; 100) "S"
107 WHITESPACE@[100; 101) 107 WHITESPACE@[100; 101) " "
108 FIELD_PAT_LIST@[101; 110) 108 FIELD_PAT_LIST@[101; 110)
109 L_CURLY@[101; 102) 109 L_CURLY@[101; 102) "{"
110 WHITESPACE@[102; 103) 110 WHITESPACE@[102; 103) " "
111 FIELD_PAT@[103; 107) 111 FIELD_PAT@[103; 107)
112 NAME@[103; 104) 112 NAME@[103; 104)
113 IDENT@[103; 104) "h" 113 IDENT@[103; 104) "h"
114 COLON@[104; 105) 114 COLON@[104; 105) ":"
115 WHITESPACE@[105; 106) 115 WHITESPACE@[105; 106) " "
116 PLACEHOLDER_PAT@[106; 107) 116 PLACEHOLDER_PAT@[106; 107)
117 UNDERSCORE@[106; 107) 117 UNDERSCORE@[106; 107) "_"
118 COMMA@[107; 108) 118 COMMA@[107; 108) ","
119 WHITESPACE@[108; 109) 119 WHITESPACE@[108; 109) " "
120 R_CURLY@[109; 110) 120 R_CURLY@[109; 110) "}"
121 WHITESPACE@[110; 111) 121 WHITESPACE@[110; 111) " "
122 EQ@[111; 112) 122 EQ@[111; 112) "="
123 WHITESPACE@[112; 113) 123 WHITESPACE@[112; 113) " "
124 TUPLE_EXPR@[113; 115) 124 TUPLE_EXPR@[113; 115)
125 L_PAREN@[113; 114) 125 L_PAREN@[113; 114) "("
126 R_PAREN@[114; 115) 126 R_PAREN@[114; 115) ")"
127 SEMI@[115; 116) 127 SEMI@[115; 116) ";"
128 WHITESPACE@[116; 117) 128 WHITESPACE@[116; 117) "\n"
129 R_CURLY@[117; 118) 129 R_CURLY@[117; 118) "}"
130 WHITESPACE@[118; 119) 130 WHITESPACE@[118; 119) "\n"
diff --git a/crates/ra_syntax/tests/data/parser/inline/ok/0103_array_expr.txt b/crates/ra_syntax/tests/data/parser/inline/ok/0103_array_expr.txt
index 42df7c450..e74e231b3 100644
--- a/crates/ra_syntax/tests/data/parser/inline/ok/0103_array_expr.txt
+++ b/crates/ra_syntax/tests/data/parser/inline/ok/0103_array_expr.txt
@@ -1,54 +1,54 @@
1SOURCE_FILE@[0; 55) 1SOURCE_FILE@[0; 55)
2 FN_DEF@[0; 54) 2 FN_DEF@[0; 54)
3 FN_KW@[0; 2) 3 FN_KW@[0; 2) "fn"
4 WHITESPACE@[2; 3) 4 WHITESPACE@[2; 3) " "
5 NAME@[3; 6) 5 NAME@[3; 6)
6 IDENT@[3; 6) "foo" 6 IDENT@[3; 6) "foo"
7 PARAM_LIST@[6; 8) 7 PARAM_LIST@[6; 8)
8 L_PAREN@[6; 7) 8 L_PAREN@[6; 7) "("
9 R_PAREN@[7; 8) 9 R_PAREN@[7; 8) ")"
10 WHITESPACE@[8; 9) 10 WHITESPACE@[8; 9) " "
11 BLOCK@[9; 54) 11 BLOCK@[9; 54)
12 L_CURLY@[9; 10) 12 L_CURLY@[9; 10) "{"
13 WHITESPACE@[10; 15) 13 WHITESPACE@[10; 15) "\n "
14 EXPR_STMT@[15; 18) 14 EXPR_STMT@[15; 18)
15 ARRAY_EXPR@[15; 17) 15 ARRAY_EXPR@[15; 17)
16 L_BRACK@[15; 16) 16 L_BRACK@[15; 16) "["
17 R_BRACK@[16; 17) 17 R_BRACK@[16; 17) "]"
18 SEMI@[17; 18) 18 SEMI@[17; 18) ";"
19 WHITESPACE@[18; 23) 19 WHITESPACE@[18; 23) "\n "
20 EXPR_STMT@[23; 27) 20 EXPR_STMT@[23; 27)
21 ARRAY_EXPR@[23; 26) 21 ARRAY_EXPR@[23; 26)
22 L_BRACK@[23; 24) 22 L_BRACK@[23; 24) "["
23 LITERAL@[24; 25) 23 LITERAL@[24; 25)
24 INT_NUMBER@[24; 25) "1" 24 INT_NUMBER@[24; 25) "1"
25 R_BRACK@[25; 26) 25 R_BRACK@[25; 26) "]"
26 SEMI@[26; 27) 26 SEMI@[26; 27) ";"
27 WHITESPACE@[27; 32) 27 WHITESPACE@[27; 32) "\n "
28 EXPR_STMT@[32; 40) 28 EXPR_STMT@[32; 40)
29 ARRAY_EXPR@[32; 39) 29 ARRAY_EXPR@[32; 39)
30 L_BRACK@[32; 33) 30 L_BRACK@[32; 33) "["
31 LITERAL@[33; 34) 31 LITERAL@[33; 34)
32 INT_NUMBER@[33; 34) "1" 32 INT_NUMBER@[33; 34) "1"
33 COMMA@[34; 35) 33 COMMA@[34; 35) ","
34 WHITESPACE@[35; 36) 34 WHITESPACE@[35; 36) " "
35 LITERAL@[36; 37) 35 LITERAL@[36; 37)
36 INT_NUMBER@[36; 37) "2" 36 INT_NUMBER@[36; 37) "2"
37 COMMA@[37; 38) 37 COMMA@[37; 38) ","
38 R_BRACK@[38; 39) 38 R_BRACK@[38; 39) "]"
39 SEMI@[39; 40) 39 SEMI@[39; 40) ";"
40 WHITESPACE@[40; 45) 40 WHITESPACE@[40; 45) "\n "
41 EXPR_STMT@[45; 52) 41 EXPR_STMT@[45; 52)
42 ARRAY_EXPR@[45; 51) 42 ARRAY_EXPR@[45; 51)
43 L_BRACK@[45; 46) 43 L_BRACK@[45; 46) "["
44 LITERAL@[46; 47) 44 LITERAL@[46; 47)
45 INT_NUMBER@[46; 47) "1" 45 INT_NUMBER@[46; 47) "1"
46 SEMI@[47; 48) 46 SEMI@[47; 48) ";"
47 WHITESPACE@[48; 49) 47 WHITESPACE@[48; 49) " "
48 LITERAL@[49; 50) 48 LITERAL@[49; 50)
49 INT_NUMBER@[49; 50) "2" 49 INT_NUMBER@[49; 50) "2"
50 R_BRACK@[50; 51) 50 R_BRACK@[50; 51) "]"
51 SEMI@[51; 52) 51 SEMI@[51; 52) ";"
52 WHITESPACE@[52; 53) 52 WHITESPACE@[52; 53) "\n"
53 R_CURLY@[53; 54) 53 R_CURLY@[53; 54) "}"
54 WHITESPACE@[54; 55) 54 WHITESPACE@[54; 55) "\n"
diff --git a/crates/ra_syntax/tests/data/parser/inline/ok/0104_path_fn_trait_args.txt b/crates/ra_syntax/tests/data/parser/inline/ok/0104_path_fn_trait_args.txt
index 0254c998d..d6f196811 100644
--- a/crates/ra_syntax/tests/data/parser/inline/ok/0104_path_fn_trait_args.txt
+++ b/crates/ra_syntax/tests/data/parser/inline/ok/0104_path_fn_trait_args.txt
@@ -1,19 +1,19 @@
1SOURCE_FILE@[0; 32) 1SOURCE_FILE@[0; 32)
2 TYPE_ALIAS_DEF@[0; 31) 2 TYPE_ALIAS_DEF@[0; 31)
3 TYPE_KW@[0; 4) 3 TYPE_KW@[0; 4) "type"
4 WHITESPACE@[4; 5) 4 WHITESPACE@[4; 5) " "
5 NAME@[5; 6) 5 NAME@[5; 6)
6 IDENT@[5; 6) "F" 6 IDENT@[5; 6) "F"
7 WHITESPACE@[6; 7) 7 WHITESPACE@[6; 7) " "
8 EQ@[7; 8) 8 EQ@[7; 8) "="
9 WHITESPACE@[8; 9) 9 WHITESPACE@[8; 9) " "
10 PATH_TYPE@[9; 30) 10 PATH_TYPE@[9; 30)
11 PATH@[9; 30) 11 PATH@[9; 30)
12 PATH_SEGMENT@[9; 30) 12 PATH_SEGMENT@[9; 30)
13 NAME_REF@[9; 12) 13 NAME_REF@[9; 12)
14 IDENT@[9; 12) "Box" 14 IDENT@[9; 12) "Box"
15 TYPE_ARG_LIST@[12; 30) 15 TYPE_ARG_LIST@[12; 30)
16 L_ANGLE@[12; 13) 16 L_ANGLE@[12; 13) "<"
17 TYPE_ARG@[13; 29) 17 TYPE_ARG@[13; 29)
18 PATH_TYPE@[13; 29) 18 PATH_TYPE@[13; 29)
19 PATH@[13; 29) 19 PATH@[13; 29)
@@ -21,26 +21,26 @@ SOURCE_FILE@[0; 32)
21 NAME_REF@[13; 15) 21 NAME_REF@[13; 15)
22 IDENT@[13; 15) "Fn" 22 IDENT@[13; 15) "Fn"
23 PARAM_LIST@[15; 23) 23 PARAM_LIST@[15; 23)
24 L_PAREN@[15; 16) 24 L_PAREN@[15; 16) "("
25 PARAM@[16; 22) 25 PARAM@[16; 22)
26 BIND_PAT@[16; 17) 26 BIND_PAT@[16; 17)
27 NAME@[16; 17) 27 NAME@[16; 17)
28 IDENT@[16; 17) "x" 28 IDENT@[16; 17) "x"
29 COLON@[17; 18) 29 COLON@[17; 18) ":"
30 WHITESPACE@[18; 19) 30 WHITESPACE@[18; 19) " "
31 PATH_TYPE@[19; 22) 31 PATH_TYPE@[19; 22)
32 PATH@[19; 22) 32 PATH@[19; 22)
33 PATH_SEGMENT@[19; 22) 33 PATH_SEGMENT@[19; 22)
34 NAME_REF@[19; 22) 34 NAME_REF@[19; 22)
35 IDENT@[19; 22) "i32" 35 IDENT@[19; 22) "i32"
36 R_PAREN@[22; 23) 36 R_PAREN@[22; 23) ")"
37 WHITESPACE@[23; 24) 37 WHITESPACE@[23; 24) " "
38 RET_TYPE@[24; 29) 38 RET_TYPE@[24; 29)
39 THIN_ARROW@[24; 26) 39 THIN_ARROW@[24; 26) "->"
40 WHITESPACE@[26; 27) 40 WHITESPACE@[26; 27) " "
41 TUPLE_TYPE@[27; 29) 41 TUPLE_TYPE@[27; 29)
42 L_PAREN@[27; 28) 42 L_PAREN@[27; 28) "("
43 R_PAREN@[28; 29) 43 R_PAREN@[28; 29) ")"
44 R_ANGLE@[29; 30) 44 R_ANGLE@[29; 30) ">"
45 SEMI@[30; 31) 45 SEMI@[30; 31) ";"
46 WHITESPACE@[31; 32) 46 WHITESPACE@[31; 32) "\n"
diff --git a/crates/ra_syntax/tests/data/parser/inline/ok/0105_block_expr.txt b/crates/ra_syntax/tests/data/parser/inline/ok/0105_block_expr.txt
index eeb184ab2..4bc446a55 100644
--- a/crates/ra_syntax/tests/data/parser/inline/ok/0105_block_expr.txt
+++ b/crates/ra_syntax/tests/data/parser/inline/ok/0105_block_expr.txt
@@ -1,42 +1,42 @@
1SOURCE_FILE@[0; 52) 1SOURCE_FILE@[0; 52)
2 FN_DEF@[0; 51) 2 FN_DEF@[0; 51)
3 FN_KW@[0; 2) 3 FN_KW@[0; 2) "fn"
4 WHITESPACE@[2; 3) 4 WHITESPACE@[2; 3) " "
5 NAME@[3; 6) 5 NAME@[3; 6)
6 IDENT@[3; 6) "foo" 6 IDENT@[3; 6) "foo"
7 PARAM_LIST@[6; 8) 7 PARAM_LIST@[6; 8)
8 L_PAREN@[6; 7) 8 L_PAREN@[6; 7) "("
9 R_PAREN@[7; 8) 9 R_PAREN@[7; 8) ")"
10 WHITESPACE@[8; 9) 10 WHITESPACE@[8; 9) " "
11 BLOCK@[9; 51) 11 BLOCK@[9; 51)
12 L_CURLY@[9; 10) 12 L_CURLY@[9; 10) "{"
13 WHITESPACE@[10; 15) 13 WHITESPACE@[10; 15) "\n "
14 EXPR_STMT@[15; 18) 14 EXPR_STMT@[15; 18)
15 BLOCK_EXPR@[15; 17) 15 BLOCK_EXPR@[15; 17)
16 BLOCK@[15; 17) 16 BLOCK@[15; 17)
17 L_CURLY@[15; 16) 17 L_CURLY@[15; 16) "{"
18 R_CURLY@[16; 17) 18 R_CURLY@[16; 17) "}"
19 SEMI@[17; 18) 19 SEMI@[17; 18) ";"
20 WHITESPACE@[18; 23) 20 WHITESPACE@[18; 23) "\n "
21 EXPR_STMT@[23; 33) 21 EXPR_STMT@[23; 33)
22 BLOCK_EXPR@[23; 32) 22 BLOCK_EXPR@[23; 32)
23 UNSAFE_KW@[23; 29) 23 UNSAFE_KW@[23; 29) "unsafe"
24 WHITESPACE@[29; 30) 24 WHITESPACE@[29; 30) " "
25 BLOCK@[30; 32) 25 BLOCK@[30; 32)
26 L_CURLY@[30; 31) 26 L_CURLY@[30; 31) "{"
27 R_CURLY@[31; 32) 27 R_CURLY@[31; 32) "}"
28 SEMI@[32; 33) 28 SEMI@[32; 33) ";"
29 WHITESPACE@[33; 38) 29 WHITESPACE@[33; 38) "\n "
30 EXPR_STMT@[38; 49) 30 EXPR_STMT@[38; 49)
31 BLOCK_EXPR@[38; 48) 31 BLOCK_EXPR@[38; 48)
32 LABEL@[38; 45) 32 LABEL@[38; 45)
33 LIFETIME@[38; 44) "'label" 33 LIFETIME@[38; 44) "\'label"
34 COLON@[44; 45) 34 COLON@[44; 45) ":"
35 WHITESPACE@[45; 46) 35 WHITESPACE@[45; 46) " "
36 BLOCK@[46; 48) 36 BLOCK@[46; 48)
37 L_CURLY@[46; 47) 37 L_CURLY@[46; 47) "{"
38 R_CURLY@[47; 48) 38 R_CURLY@[47; 48) "}"
39 SEMI@[48; 49) 39 SEMI@[48; 49) ";"
40 WHITESPACE@[49; 50) 40 WHITESPACE@[49; 50) "\n"
41 R_CURLY@[50; 51) 41 R_CURLY@[50; 51) "}"
42 WHITESPACE@[51; 52) 42 WHITESPACE@[51; 52) "\n"
diff --git a/crates/ra_syntax/tests/data/parser/inline/ok/0106_lambda_expr.rs b/crates/ra_syntax/tests/data/parser/inline/ok/0106_lambda_expr.rs
index c20d29751..075717823 100644
--- a/crates/ra_syntax/tests/data/parser/inline/ok/0106_lambda_expr.rs
+++ b/crates/ra_syntax/tests/data/parser/inline/ok/0106_lambda_expr.rs
@@ -3,4 +3,7 @@ fn foo() {
3 || -> i32 { 92 }; 3 || -> i32 { 92 };
4 |x| x; 4 |x| x;
5 move |x: i32,| x; 5 move |x: i32,| x;
6 async || {};
7 move || {};
8 async move || {};
6} 9}
diff --git a/crates/ra_syntax/tests/data/parser/inline/ok/0106_lambda_expr.txt b/crates/ra_syntax/tests/data/parser/inline/ok/0106_lambda_expr.txt
index 98271c233..a05218118 100644
--- a/crates/ra_syntax/tests/data/parser/inline/ok/0106_lambda_expr.txt
+++ b/crates/ra_syntax/tests/data/parser/inline/ok/0106_lambda_expr.txt
@@ -1,95 +1,139 @@
1SOURCE_FILE@[0; 79) 1SOURCE_FILE@[0; 134)
2 FN_DEF@[0; 78) 2 FN_DEF@[0; 133)
3 FN_KW@[0; 2) 3 FN_KW@[0; 2) "fn"
4 WHITESPACE@[2; 3) 4 WHITESPACE@[2; 3) " "
5 NAME@[3; 6) 5 NAME@[3; 6)
6 IDENT@[3; 6) "foo" 6 IDENT@[3; 6) "foo"
7 PARAM_LIST@[6; 8) 7 PARAM_LIST@[6; 8)
8 L_PAREN@[6; 7) 8 L_PAREN@[6; 7) "("
9 R_PAREN@[7; 8) 9 R_PAREN@[7; 8) ")"
10 WHITESPACE@[8; 9) 10 WHITESPACE@[8; 9) " "
11 BLOCK@[9; 78) 11 BLOCK@[9; 133)
12 L_CURLY@[9; 10) 12 L_CURLY@[9; 10) "{"
13 WHITESPACE@[10; 15) 13 WHITESPACE@[10; 15) "\n "
14 EXPR_STMT@[15; 21) 14 EXPR_STMT@[15; 21)
15 LAMBDA_EXPR@[15; 20) 15 LAMBDA_EXPR@[15; 20)
16 PARAM_LIST@[15; 17) 16 PARAM_LIST@[15; 17)
17 PIPE@[15; 16) 17 PIPE@[15; 16) "|"
18 PIPE@[16; 17) 18 PIPE@[16; 17) "|"
19 WHITESPACE@[17; 18) 19 WHITESPACE@[17; 18) " "
20 TUPLE_EXPR@[18; 20) 20 TUPLE_EXPR@[18; 20)
21 L_PAREN@[18; 19) 21 L_PAREN@[18; 19) "("
22 R_PAREN@[19; 20) 22 R_PAREN@[19; 20) ")"
23 SEMI@[20; 21) 23 SEMI@[20; 21) ";"
24 WHITESPACE@[21; 26) 24 WHITESPACE@[21; 26) "\n "
25 EXPR_STMT@[26; 43) 25 EXPR_STMT@[26; 43)
26 LAMBDA_EXPR@[26; 42) 26 LAMBDA_EXPR@[26; 42)
27 PARAM_LIST@[26; 28) 27 PARAM_LIST@[26; 28)
28 PIPE@[26; 27) 28 PIPE@[26; 27) "|"
29 PIPE@[27; 28) 29 PIPE@[27; 28) "|"
30 WHITESPACE@[28; 29) 30 WHITESPACE@[28; 29) " "
31 RET_TYPE@[29; 35) 31 RET_TYPE@[29; 35)
32 THIN_ARROW@[29; 31) 32 THIN_ARROW@[29; 31) "->"
33 WHITESPACE@[31; 32) 33 WHITESPACE@[31; 32) " "
34 PATH_TYPE@[32; 35) 34 PATH_TYPE@[32; 35)
35 PATH@[32; 35) 35 PATH@[32; 35)
36 PATH_SEGMENT@[32; 35) 36 PATH_SEGMENT@[32; 35)
37 NAME_REF@[32; 35) 37 NAME_REF@[32; 35)
38 IDENT@[32; 35) "i32" 38 IDENT@[32; 35) "i32"
39 WHITESPACE@[35; 36) 39 WHITESPACE@[35; 36) " "
40 BLOCK_EXPR@[36; 42) 40 BLOCK_EXPR@[36; 42)
41 BLOCK@[36; 42) 41 BLOCK@[36; 42)
42 L_CURLY@[36; 37) 42 L_CURLY@[36; 37) "{"
43 WHITESPACE@[37; 38) 43 WHITESPACE@[37; 38) " "
44 LITERAL@[38; 40) 44 LITERAL@[38; 40)
45 INT_NUMBER@[38; 40) "92" 45 INT_NUMBER@[38; 40) "92"
46 WHITESPACE@[40; 41) 46 WHITESPACE@[40; 41) " "
47 R_CURLY@[41; 42) 47 R_CURLY@[41; 42) "}"
48 SEMI@[42; 43) 48 SEMI@[42; 43) ";"
49 WHITESPACE@[43; 48) 49 WHITESPACE@[43; 48) "\n "
50 EXPR_STMT@[48; 54) 50 EXPR_STMT@[48; 54)
51 LAMBDA_EXPR@[48; 53) 51 LAMBDA_EXPR@[48; 53)
52 PARAM_LIST@[48; 51) 52 PARAM_LIST@[48; 51)
53 PIPE@[48; 49) 53 PIPE@[48; 49) "|"
54 PARAM@[49; 50) 54 PARAM@[49; 50)
55 BIND_PAT@[49; 50) 55 BIND_PAT@[49; 50)
56 NAME@[49; 50) 56 NAME@[49; 50)
57 IDENT@[49; 50) "x" 57 IDENT@[49; 50) "x"
58 PIPE@[50; 51) 58 PIPE@[50; 51) "|"
59 WHITESPACE@[51; 52) 59 WHITESPACE@[51; 52) " "
60 PATH_EXPR@[52; 53) 60 PATH_EXPR@[52; 53)
61 PATH@[52; 53) 61 PATH@[52; 53)
62 PATH_SEGMENT@[52; 53) 62 PATH_SEGMENT@[52; 53)
63 NAME_REF@[52; 53) 63 NAME_REF@[52; 53)
64 IDENT@[52; 53) "x" 64 IDENT@[52; 53) "x"
65 SEMI@[53; 54) 65 SEMI@[53; 54) ";"
66 WHITESPACE@[54; 59) 66 WHITESPACE@[54; 59) "\n "
67 EXPR_STMT@[59; 76) 67 EXPR_STMT@[59; 76)
68 LAMBDA_EXPR@[59; 75) 68 LAMBDA_EXPR@[59; 75)
69 MOVE_KW@[59; 63) 69 MOVE_KW@[59; 63) "move"
70 WHITESPACE@[63; 64) 70 WHITESPACE@[63; 64) " "
71 PARAM_LIST@[64; 73) 71 PARAM_LIST@[64; 73)
72 PIPE@[64; 65) 72 PIPE@[64; 65) "|"
73 PARAM@[65; 71) 73 PARAM@[65; 71)
74 BIND_PAT@[65; 66) 74 BIND_PAT@[65; 66)
75 NAME@[65; 66) 75 NAME@[65; 66)
76 IDENT@[65; 66) "x" 76 IDENT@[65; 66) "x"
77 COLON@[66; 67) 77 COLON@[66; 67) ":"
78 WHITESPACE@[67; 68) 78 WHITESPACE@[67; 68) " "
79 PATH_TYPE@[68; 71) 79 PATH_TYPE@[68; 71)
80 PATH@[68; 71) 80 PATH@[68; 71)
81 PATH_SEGMENT@[68; 71) 81 PATH_SEGMENT@[68; 71)
82 NAME_REF@[68; 71) 82 NAME_REF@[68; 71)
83 IDENT@[68; 71) "i32" 83 IDENT@[68; 71) "i32"
84 COMMA@[71; 72) 84 COMMA@[71; 72) ","
85 PIPE@[72; 73) 85 PIPE@[72; 73) "|"
86 WHITESPACE@[73; 74) 86 WHITESPACE@[73; 74) " "
87 PATH_EXPR@[74; 75) 87 PATH_EXPR@[74; 75)
88 PATH@[74; 75) 88 PATH@[74; 75)
89 PATH_SEGMENT@[74; 75) 89 PATH_SEGMENT@[74; 75)
90 NAME_REF@[74; 75) 90 NAME_REF@[74; 75)
91 IDENT@[74; 75) "x" 91 IDENT@[74; 75) "x"
92 SEMI@[75; 76) 92 SEMI@[75; 76) ";"
93 WHITESPACE@[76; 77) 93 WHITESPACE@[76; 81) "\n "
94 R_CURLY@[77; 78) 94 EXPR_STMT@[81; 93)
95 WHITESPACE@[78; 79) 95 LAMBDA_EXPR@[81; 92)
96 ASYNC_KW@[81; 86) "async"
97 WHITESPACE@[86; 87) " "
98 PARAM_LIST@[87; 89)
99 PIPE@[87; 88) "|"
100 PIPE@[88; 89) "|"
101 WHITESPACE@[89; 90) " "
102 BLOCK_EXPR@[90; 92)
103 BLOCK@[90; 92)
104 L_CURLY@[90; 91) "{"
105 R_CURLY@[91; 92) "}"
106 SEMI@[92; 93) ";"
107 WHITESPACE@[93; 98) "\n "
108 EXPR_STMT@[98; 109)
109 LAMBDA_EXPR@[98; 108)
110 MOVE_KW@[98; 102) "move"
111 WHITESPACE@[102; 103) " "
112 PARAM_LIST@[103; 105)
113 PIPE@[103; 104) "|"
114 PIPE@[104; 105) "|"
115 WHITESPACE@[105; 106) " "
116 BLOCK_EXPR@[106; 108)
117 BLOCK@[106; 108)
118 L_CURLY@[106; 107) "{"
119 R_CURLY@[107; 108) "}"
120 SEMI@[108; 109) ";"
121 WHITESPACE@[109; 114) "\n "
122 EXPR_STMT@[114; 131)
123 LAMBDA_EXPR@[114; 130)
124 ASYNC_KW@[114; 119) "async"
125 WHITESPACE@[119; 120) " "
126 MOVE_KW@[120; 124) "move"
127 WHITESPACE@[124; 125) " "
128 PARAM_LIST@[125; 127)
129 PIPE@[125; 126) "|"
130 PIPE@[126; 127) "|"
131 WHITESPACE@[127; 128) " "
132 BLOCK_EXPR@[128; 130)
133 BLOCK@[128; 130)
134 L_CURLY@[128; 129) "{"
135 R_CURLY@[129; 130) "}"
136 SEMI@[130; 131) ";"
137 WHITESPACE@[131; 132) "\n"
138 R_CURLY@[132; 133) "}"
139 WHITESPACE@[133; 134) "\n"
diff --git a/crates/ra_syntax/tests/data/parser/inline/ok/0107_method_call_expr.txt b/crates/ra_syntax/tests/data/parser/inline/ok/0107_method_call_expr.txt
index 51ecfdf78..bc28b293e 100644
--- a/crates/ra_syntax/tests/data/parser/inline/ok/0107_method_call_expr.txt
+++ b/crates/ra_syntax/tests/data/parser/inline/ok/0107_method_call_expr.txt
@@ -1,16 +1,16 @@
1SOURCE_FILE@[0; 49) 1SOURCE_FILE@[0; 49)
2 FN_DEF@[0; 48) 2 FN_DEF@[0; 48)
3 FN_KW@[0; 2) 3 FN_KW@[0; 2) "fn"
4 WHITESPACE@[2; 3) 4 WHITESPACE@[2; 3) " "
5 NAME@[3; 6) 5 NAME@[3; 6)
6 IDENT@[3; 6) "foo" 6 IDENT@[3; 6) "foo"
7 PARAM_LIST@[6; 8) 7 PARAM_LIST@[6; 8)
8 L_PAREN@[6; 7) 8 L_PAREN@[6; 7) "("
9 R_PAREN@[7; 8) 9 R_PAREN@[7; 8) ")"
10 WHITESPACE@[8; 9) 10 WHITESPACE@[8; 9) " "
11 BLOCK@[9; 48) 11 BLOCK@[9; 48)
12 L_CURLY@[9; 10) 12 L_CURLY@[9; 10) "{"
13 WHITESPACE@[10; 15) 13 WHITESPACE@[10; 15) "\n "
14 EXPR_STMT@[15; 23) 14 EXPR_STMT@[15; 23)
15 METHOD_CALL_EXPR@[15; 22) 15 METHOD_CALL_EXPR@[15; 22)
16 PATH_EXPR@[15; 16) 16 PATH_EXPR@[15; 16)
@@ -18,14 +18,14 @@ SOURCE_FILE@[0; 49)
18 PATH_SEGMENT@[15; 16) 18 PATH_SEGMENT@[15; 16)
19 NAME_REF@[15; 16) 19 NAME_REF@[15; 16)
20 IDENT@[15; 16) "x" 20 IDENT@[15; 16) "x"
21 DOT@[16; 17) 21 DOT@[16; 17) "."
22 NAME_REF@[17; 20) 22 NAME_REF@[17; 20)
23 IDENT@[17; 20) "foo" 23 IDENT@[17; 20) "foo"
24 ARG_LIST@[20; 22) 24 ARG_LIST@[20; 22)
25 L_PAREN@[20; 21) 25 L_PAREN@[20; 21) "("
26 R_PAREN@[21; 22) 26 R_PAREN@[21; 22) ")"
27 SEMI@[22; 23) 27 SEMI@[22; 23) ";"
28 WHITESPACE@[23; 28) 28 WHITESPACE@[23; 28) "\n "
29 EXPR_STMT@[28; 46) 29 EXPR_STMT@[28; 46)
30 METHOD_CALL_EXPR@[28; 45) 30 METHOD_CALL_EXPR@[28; 45)
31 PATH_EXPR@[28; 29) 31 PATH_EXPR@[28; 29)
@@ -33,30 +33,30 @@ SOURCE_FILE@[0; 49)
33 PATH_SEGMENT@[28; 29) 33 PATH_SEGMENT@[28; 29)
34 NAME_REF@[28; 29) 34 NAME_REF@[28; 29)
35 IDENT@[28; 29) "y" 35 IDENT@[28; 29) "y"
36 DOT@[29; 30) 36 DOT@[29; 30) "."
37 NAME_REF@[30; 33) 37 NAME_REF@[30; 33)
38 IDENT@[30; 33) "bar" 38 IDENT@[30; 33) "bar"
39 TYPE_ARG_LIST@[33; 38) 39 TYPE_ARG_LIST@[33; 38)
40 COLONCOLON@[33; 35) 40 COLONCOLON@[33; 35) "::"
41 L_ANGLE@[35; 36) 41 L_ANGLE@[35; 36) "<"
42 TYPE_ARG@[36; 37) 42 TYPE_ARG@[36; 37)
43 PATH_TYPE@[36; 37) 43 PATH_TYPE@[36; 37)
44 PATH@[36; 37) 44 PATH@[36; 37)
45 PATH_SEGMENT@[36; 37) 45 PATH_SEGMENT@[36; 37)
46 NAME_REF@[36; 37) 46 NAME_REF@[36; 37)
47 IDENT@[36; 37) "T" 47 IDENT@[36; 37) "T"
48 R_ANGLE@[37; 38) 48 R_ANGLE@[37; 38) ">"
49 ARG_LIST@[38; 45) 49 ARG_LIST@[38; 45)
50 L_PAREN@[38; 39) 50 L_PAREN@[38; 39) "("
51 LITERAL@[39; 40) 51 LITERAL@[39; 40)
52 INT_NUMBER@[39; 40) "1" 52 INT_NUMBER@[39; 40) "1"
53 COMMA@[40; 41) 53 COMMA@[40; 41) ","
54 WHITESPACE@[41; 42) 54 WHITESPACE@[41; 42) " "
55 LITERAL@[42; 43) 55 LITERAL@[42; 43)
56 INT_NUMBER@[42; 43) "2" 56 INT_NUMBER@[42; 43) "2"
57 COMMA@[43; 44) 57 COMMA@[43; 44) ","
58 R_PAREN@[44; 45) 58 R_PAREN@[44; 45) ")"
59 SEMI@[45; 46) 59 SEMI@[45; 46) ";"
60 WHITESPACE@[46; 47) 60 WHITESPACE@[46; 47) "\n"
61 R_CURLY@[47; 48) 61 R_CURLY@[47; 48) "}"
62 WHITESPACE@[48; 49) 62 WHITESPACE@[48; 49) "\n"
diff --git a/crates/ra_syntax/tests/data/parser/inline/ok/0108_tuple_expr.txt b/crates/ra_syntax/tests/data/parser/inline/ok/0108_tuple_expr.txt
index 4e427c909..32be7a849 100644
--- a/crates/ra_syntax/tests/data/parser/inline/ok/0108_tuple_expr.txt
+++ b/crates/ra_syntax/tests/data/parser/inline/ok/0108_tuple_expr.txt
@@ -1,38 +1,38 @@
1SOURCE_FILE@[0; 40) 1SOURCE_FILE@[0; 40)
2 FN_DEF@[0; 39) 2 FN_DEF@[0; 39)
3 FN_KW@[0; 2) 3 FN_KW@[0; 2) "fn"
4 WHITESPACE@[2; 3) 4 WHITESPACE@[2; 3) " "
5 NAME@[3; 6) 5 NAME@[3; 6)
6 IDENT@[3; 6) "foo" 6 IDENT@[3; 6) "foo"
7 PARAM_LIST@[6; 8) 7 PARAM_LIST@[6; 8)
8 L_PAREN@[6; 7) 8 L_PAREN@[6; 7) "("
9 R_PAREN@[7; 8) 9 R_PAREN@[7; 8) ")"
10 WHITESPACE@[8; 9) 10 WHITESPACE@[8; 9) " "
11 BLOCK@[9; 39) 11 BLOCK@[9; 39)
12 L_CURLY@[9; 10) 12 L_CURLY@[9; 10) "{"
13 WHITESPACE@[10; 15) 13 WHITESPACE@[10; 15) "\n "
14 EXPR_STMT@[15; 18) 14 EXPR_STMT@[15; 18)
15 TUPLE_EXPR@[15; 17) 15 TUPLE_EXPR@[15; 17)
16 L_PAREN@[15; 16) 16 L_PAREN@[15; 16) "("
17 R_PAREN@[16; 17) 17 R_PAREN@[16; 17) ")"
18 SEMI@[17; 18) 18 SEMI@[17; 18) ";"
19 WHITESPACE@[18; 23) 19 WHITESPACE@[18; 23) "\n "
20 EXPR_STMT@[23; 27) 20 EXPR_STMT@[23; 27)
21 PAREN_EXPR@[23; 26) 21 PAREN_EXPR@[23; 26)
22 L_PAREN@[23; 24) 22 L_PAREN@[23; 24) "("
23 LITERAL@[24; 25) 23 LITERAL@[24; 25)
24 INT_NUMBER@[24; 25) "1" 24 INT_NUMBER@[24; 25) "1"
25 R_PAREN@[25; 26) 25 R_PAREN@[25; 26) ")"
26 SEMI@[26; 27) 26 SEMI@[26; 27) ";"
27 WHITESPACE@[27; 32) 27 WHITESPACE@[27; 32) "\n "
28 EXPR_STMT@[32; 37) 28 EXPR_STMT@[32; 37)
29 TUPLE_EXPR@[32; 36) 29 TUPLE_EXPR@[32; 36)
30 L_PAREN@[32; 33) 30 L_PAREN@[32; 33) "("
31 LITERAL@[33; 34) 31 LITERAL@[33; 34)
32 INT_NUMBER@[33; 34) "1" 32 INT_NUMBER@[33; 34) "1"
33 COMMA@[34; 35) 33 COMMA@[34; 35) ","
34 R_PAREN@[35; 36) 34 R_PAREN@[35; 36) ")"
35 SEMI@[36; 37) 35 SEMI@[36; 37) ";"
36 WHITESPACE@[37; 38) 36 WHITESPACE@[37; 38) "\n"
37 R_CURLY@[38; 39) 37 R_CURLY@[38; 39) "}"
38 WHITESPACE@[39; 40) 38 WHITESPACE@[39; 40) "\n"
diff --git a/crates/ra_syntax/tests/data/parser/inline/ok/0109_label.txt b/crates/ra_syntax/tests/data/parser/inline/ok/0109_label.txt
index c641c3b16..39e4f4b3e 100644
--- a/crates/ra_syntax/tests/data/parser/inline/ok/0109_label.txt
+++ b/crates/ra_syntax/tests/data/parser/inline/ok/0109_label.txt
@@ -1,64 +1,64 @@
1SOURCE_FILE@[0; 74) 1SOURCE_FILE@[0; 74)
2 FN_DEF@[0; 73) 2 FN_DEF@[0; 73)
3 FN_KW@[0; 2) 3 FN_KW@[0; 2) "fn"
4 WHITESPACE@[2; 3) 4 WHITESPACE@[2; 3) " "
5 NAME@[3; 6) 5 NAME@[3; 6)
6 IDENT@[3; 6) "foo" 6 IDENT@[3; 6) "foo"
7 PARAM_LIST@[6; 8) 7 PARAM_LIST@[6; 8)
8 L_PAREN@[6; 7) 8 L_PAREN@[6; 7) "("
9 R_PAREN@[7; 8) 9 R_PAREN@[7; 8) ")"
10 WHITESPACE@[8; 9) 10 WHITESPACE@[8; 9) " "
11 BLOCK@[9; 73) 11 BLOCK@[9; 73)
12 L_CURLY@[9; 10) 12 L_CURLY@[9; 10) "{"
13 WHITESPACE@[10; 15) 13 WHITESPACE@[10; 15) "\n "
14 EXPR_STMT@[15; 26) 14 EXPR_STMT@[15; 26)
15 LOOP_EXPR@[15; 26) 15 LOOP_EXPR@[15; 26)
16 LABEL@[15; 18) 16 LABEL@[15; 18)
17 LIFETIME@[15; 17) "'a" 17 LIFETIME@[15; 17) "\'a"
18 COLON@[17; 18) 18 COLON@[17; 18) ":"
19 WHITESPACE@[18; 19) 19 WHITESPACE@[18; 19) " "
20 LOOP_KW@[19; 23) 20 LOOP_KW@[19; 23) "loop"
21 WHITESPACE@[23; 24) 21 WHITESPACE@[23; 24) " "
22 BLOCK@[24; 26) 22 BLOCK@[24; 26)
23 L_CURLY@[24; 25) 23 L_CURLY@[24; 25) "{"
24 R_CURLY@[25; 26) 24 R_CURLY@[25; 26) "}"
25 WHITESPACE@[26; 31) 25 WHITESPACE@[26; 31) "\n "
26 EXPR_STMT@[31; 48) 26 EXPR_STMT@[31; 48)
27 WHILE_EXPR@[31; 48) 27 WHILE_EXPR@[31; 48)
28 LABEL@[31; 34) 28 LABEL@[31; 34)
29 LIFETIME@[31; 33) "'b" 29 LIFETIME@[31; 33) "\'b"
30 COLON@[33; 34) 30 COLON@[33; 34) ":"
31 WHITESPACE@[34; 35) 31 WHITESPACE@[34; 35) " "
32 WHILE_KW@[35; 40) 32 WHILE_KW@[35; 40) "while"
33 WHITESPACE@[40; 41) 33 WHITESPACE@[40; 41) " "
34 CONDITION@[41; 45) 34 CONDITION@[41; 45)
35 LITERAL@[41; 45) 35 LITERAL@[41; 45)
36 TRUE_KW@[41; 45) 36 TRUE_KW@[41; 45) "true"
37 WHITESPACE@[45; 46) 37 WHITESPACE@[45; 46) " "
38 BLOCK@[46; 48) 38 BLOCK@[46; 48)
39 L_CURLY@[46; 47) 39 L_CURLY@[46; 47) "{"
40 R_CURLY@[47; 48) 40 R_CURLY@[47; 48) "}"
41 WHITESPACE@[48; 53) 41 WHITESPACE@[48; 53) "\n "
42 FOR_EXPR@[53; 71) 42 FOR_EXPR@[53; 71)
43 LABEL@[53; 56) 43 LABEL@[53; 56)
44 LIFETIME@[53; 55) "'c" 44 LIFETIME@[53; 55) "\'c"
45 COLON@[55; 56) 45 COLON@[55; 56) ":"
46 WHITESPACE@[56; 57) 46 WHITESPACE@[56; 57) " "
47 FOR_KW@[57; 60) 47 FOR_KW@[57; 60) "for"
48 WHITESPACE@[60; 61) 48 WHITESPACE@[60; 61) " "
49 BIND_PAT@[61; 62) 49 BIND_PAT@[61; 62)
50 NAME@[61; 62) 50 NAME@[61; 62)
51 IDENT@[61; 62) "x" 51 IDENT@[61; 62) "x"
52 WHITESPACE@[62; 63) 52 WHITESPACE@[62; 63) " "
53 IN_KW@[63; 65) 53 IN_KW@[63; 65) "in"
54 WHITESPACE@[65; 66) 54 WHITESPACE@[65; 66) " "
55 TUPLE_EXPR@[66; 68) 55 TUPLE_EXPR@[66; 68)
56 L_PAREN@[66; 67) 56 L_PAREN@[66; 67) "("
57 R_PAREN@[67; 68) 57 R_PAREN@[67; 68) ")"
58 WHITESPACE@[68; 69) 58 WHITESPACE@[68; 69) " "
59 BLOCK@[69; 71) 59 BLOCK@[69; 71)
60 L_CURLY@[69; 70) 60 L_CURLY@[69; 70) "{"
61 R_CURLY@[70; 71) 61 R_CURLY@[70; 71) "}"
62 WHITESPACE@[71; 72) 62 WHITESPACE@[71; 72) "\n"
63 R_CURLY@[72; 73) 63 R_CURLY@[72; 73) "}"
64 WHITESPACE@[73; 74) 64 WHITESPACE@[73; 74) "\n"
diff --git a/crates/ra_syntax/tests/data/parser/inline/ok/0110_use_path.txt b/crates/ra_syntax/tests/data/parser/inline/ok/0110_use_path.txt
index 420449e61..7dbcd3927 100644
--- a/crates/ra_syntax/tests/data/parser/inline/ok/0110_use_path.txt
+++ b/crates/ra_syntax/tests/data/parser/inline/ok/0110_use_path.txt
@@ -1,38 +1,38 @@
1SOURCE_FILE@[0; 154) 1SOURCE_FILE@[0; 154)
2 USE_ITEM@[0; 17) 2 USE_ITEM@[0; 17)
3 USE_KW@[0; 3) 3 USE_KW@[0; 3) "use"
4 WHITESPACE@[3; 4) 4 WHITESPACE@[3; 4) " "
5 USE_TREE@[4; 16) 5 USE_TREE@[4; 16)
6 PATH@[4; 16) 6 PATH@[4; 16)
7 PATH_SEGMENT@[4; 16) 7 PATH_SEGMENT@[4; 16)
8 COLONCOLON@[4; 6) 8 COLONCOLON@[4; 6) "::"
9 NAME_REF@[6; 16) 9 NAME_REF@[6; 16)
10 IDENT@[6; 16) "crate_name" 10 IDENT@[6; 16) "crate_name"
11 SEMI@[16; 17) 11 SEMI@[16; 17) ";"
12 WHITESPACE@[17; 18) 12 WHITESPACE@[17; 18) " "
13 COMMENT@[18; 45) 13 COMMENT@[18; 45) "// Rust 2018 - All fl ..."
14 WHITESPACE@[45; 46) 14 WHITESPACE@[45; 46) "\n"
15 USE_ITEM@[46; 61) 15 USE_ITEM@[46; 61)
16 USE_KW@[46; 49) 16 USE_KW@[46; 49) "use"
17 WHITESPACE@[49; 50) 17 WHITESPACE@[49; 50) " "
18 USE_TREE@[50; 60) 18 USE_TREE@[50; 60)
19 PATH@[50; 60) 19 PATH@[50; 60)
20 PATH_SEGMENT@[50; 60) 20 PATH_SEGMENT@[50; 60)
21 NAME_REF@[50; 60) 21 NAME_REF@[50; 60)
22 IDENT@[50; 60) "crate_name" 22 IDENT@[50; 60) "crate_name"
23 SEMI@[60; 61) 23 SEMI@[60; 61) ";"
24 WHITESPACE@[61; 62) 24 WHITESPACE@[61; 62) " "
25 COMMENT@[62; 91) 25 COMMENT@[62; 91) "// Rust 2018 - Anchor ..."
26 WHITESPACE@[91; 92) 26 WHITESPACE@[91; 92) "\n"
27 USE_ITEM@[92; 124) 27 USE_ITEM@[92; 124)
28 USE_KW@[92; 95) 28 USE_KW@[92; 95) "use"
29 WHITESPACE@[95; 96) 29 WHITESPACE@[95; 96) " "
30 USE_TREE@[96; 123) 30 USE_TREE@[96; 123)
31 PATH@[96; 123) 31 PATH@[96; 123)
32 PATH_SEGMENT@[96; 123) 32 PATH_SEGMENT@[96; 123)
33 NAME_REF@[96; 123) 33 NAME_REF@[96; 123)
34 IDENT@[96; 123) "item_in_scope_or_crate_name" 34 IDENT@[96; 123) "item_in_scope_or_crat ..."
35 SEMI@[123; 124) 35 SEMI@[123; 124) ";"
36 WHITESPACE@[124; 125) 36 WHITESPACE@[124; 125) " "
37 COMMENT@[125; 153) 37 COMMENT@[125; 153) "// Rust 2018 - Unifor ..."
38 WHITESPACE@[153; 154) 38 WHITESPACE@[153; 154) "\n"
diff --git a/crates/ra_syntax/tests/data/parser/inline/ok/0111_tuple_pat.txt b/crates/ra_syntax/tests/data/parser/inline/ok/0111_tuple_pat.txt
index 2471f6f8c..aef3f7e0f 100644
--- a/crates/ra_syntax/tests/data/parser/inline/ok/0111_tuple_pat.txt
+++ b/crates/ra_syntax/tests/data/parser/inline/ok/0111_tuple_pat.txt
@@ -1,40 +1,40 @@
1SOURCE_FILE@[0; 39) 1SOURCE_FILE@[0; 39)
2 FN_DEF@[0; 38) 2 FN_DEF@[0; 38)
3 FN_KW@[0; 2) 3 FN_KW@[0; 2) "fn"
4 WHITESPACE@[2; 3) 4 WHITESPACE@[2; 3) " "
5 NAME@[3; 7) 5 NAME@[3; 7)
6 IDENT@[3; 7) "main" 6 IDENT@[3; 7) "main"
7 PARAM_LIST@[7; 9) 7 PARAM_LIST@[7; 9)
8 L_PAREN@[7; 8) 8 L_PAREN@[7; 8) "("
9 R_PAREN@[8; 9) 9 R_PAREN@[8; 9) ")"
10 WHITESPACE@[9; 10) 10 WHITESPACE@[9; 10) " "
11 BLOCK@[10; 38) 11 BLOCK@[10; 38)
12 L_CURLY@[10; 11) 12 L_CURLY@[10; 11) "{"
13 WHITESPACE@[11; 16) 13 WHITESPACE@[11; 16) "\n "
14 LET_STMT@[16; 36) 14 LET_STMT@[16; 36)
15 LET_KW@[16; 19) 15 LET_KW@[16; 19) "let"
16 WHITESPACE@[19; 20) 16 WHITESPACE@[19; 20) " "
17 TUPLE_PAT@[20; 30) 17 TUPLE_PAT@[20; 30)
18 L_PAREN@[20; 21) 18 L_PAREN@[20; 21) "("
19 BIND_PAT@[21; 22) 19 BIND_PAT@[21; 22)
20 NAME@[21; 22) 20 NAME@[21; 22)
21 IDENT@[21; 22) "a" 21 IDENT@[21; 22) "a"
22 COMMA@[22; 23) 22 COMMA@[22; 23) ","
23 WHITESPACE@[23; 24) 23 WHITESPACE@[23; 24) " "
24 BIND_PAT@[24; 25) 24 BIND_PAT@[24; 25)
25 NAME@[24; 25) 25 NAME@[24; 25)
26 IDENT@[24; 25) "b" 26 IDENT@[24; 25) "b"
27 COMMA@[25; 26) 27 COMMA@[25; 26) ","
28 WHITESPACE@[26; 27) 28 WHITESPACE@[26; 27) " "
29 DOTDOT@[27; 29) 29 DOTDOT@[27; 29) ".."
30 R_PAREN@[29; 30) 30 R_PAREN@[29; 30) ")"
31 WHITESPACE@[30; 31) 31 WHITESPACE@[30; 31) " "
32 EQ@[31; 32) 32 EQ@[31; 32) "="
33 WHITESPACE@[32; 33) 33 WHITESPACE@[32; 33) " "
34 TUPLE_EXPR@[33; 35) 34 TUPLE_EXPR@[33; 35)
35 L_PAREN@[33; 34) 35 L_PAREN@[33; 34) "("
36 R_PAREN@[34; 35) 36 R_PAREN@[34; 35) ")"
37 SEMI@[35; 36) 37 SEMI@[35; 36) ";"
38 WHITESPACE@[36; 37) 38 WHITESPACE@[36; 37) "\n"
39 R_CURLY@[37; 38) 39 R_CURLY@[37; 38) "}"
40 WHITESPACE@[38; 39) 40 WHITESPACE@[38; 39) "\n"
diff --git a/crates/ra_syntax/tests/data/parser/inline/ok/0112_bind_pat.txt b/crates/ra_syntax/tests/data/parser/inline/ok/0112_bind_pat.txt
index 86f8154ea..ab0f88507 100644
--- a/crates/ra_syntax/tests/data/parser/inline/ok/0112_bind_pat.txt
+++ b/crates/ra_syntax/tests/data/parser/inline/ok/0112_bind_pat.txt
@@ -1,127 +1,127 @@
1SOURCE_FILE@[0; 146) 1SOURCE_FILE@[0; 146)
2 FN_DEF@[0; 145) 2 FN_DEF@[0; 145)
3 FN_KW@[0; 2) 3 FN_KW@[0; 2) "fn"
4 WHITESPACE@[2; 3) 4 WHITESPACE@[2; 3) " "
5 NAME@[3; 7) 5 NAME@[3; 7)
6 IDENT@[3; 7) "main" 6 IDENT@[3; 7) "main"
7 PARAM_LIST@[7; 9) 7 PARAM_LIST@[7; 9)
8 L_PAREN@[7; 8) 8 L_PAREN@[7; 8) "("
9 R_PAREN@[8; 9) 9 R_PAREN@[8; 9) ")"
10 WHITESPACE@[9; 10) 10 WHITESPACE@[9; 10) " "
11 BLOCK@[10; 145) 11 BLOCK@[10; 145)
12 L_CURLY@[10; 11) 12 L_CURLY@[10; 11) "{"
13 WHITESPACE@[11; 16) 13 WHITESPACE@[11; 16) "\n "
14 LET_STMT@[16; 27) 14 LET_STMT@[16; 27)
15 LET_KW@[16; 19) 15 LET_KW@[16; 19) "let"
16 WHITESPACE@[19; 20) 16 WHITESPACE@[19; 20) " "
17 BIND_PAT@[20; 21) 17 BIND_PAT@[20; 21)
18 NAME@[20; 21) 18 NAME@[20; 21)
19 IDENT@[20; 21) "a" 19 IDENT@[20; 21) "a"
20 WHITESPACE@[21; 22) 20 WHITESPACE@[21; 22) " "
21 EQ@[22; 23) 21 EQ@[22; 23) "="
22 WHITESPACE@[23; 24) 22 WHITESPACE@[23; 24) " "
23 TUPLE_EXPR@[24; 26) 23 TUPLE_EXPR@[24; 26)
24 L_PAREN@[24; 25) 24 L_PAREN@[24; 25) "("
25 R_PAREN@[25; 26) 25 R_PAREN@[25; 26) ")"
26 SEMI@[26; 27) 26 SEMI@[26; 27) ";"
27 WHITESPACE@[27; 32) 27 WHITESPACE@[27; 32) "\n "
28 LET_STMT@[32; 47) 28 LET_STMT@[32; 47)
29 LET_KW@[32; 35) 29 LET_KW@[32; 35) "let"
30 WHITESPACE@[35; 36) 30 WHITESPACE@[35; 36) " "
31 BIND_PAT@[36; 41) 31 BIND_PAT@[36; 41)
32 MUT_KW@[36; 39) 32 MUT_KW@[36; 39) "mut"
33 WHITESPACE@[39; 40) 33 WHITESPACE@[39; 40) " "
34 NAME@[40; 41) 34 NAME@[40; 41)
35 IDENT@[40; 41) "b" 35 IDENT@[40; 41) "b"
36 WHITESPACE@[41; 42) 36 WHITESPACE@[41; 42) " "
37 EQ@[42; 43) 37 EQ@[42; 43) "="
38 WHITESPACE@[43; 44) 38 WHITESPACE@[43; 44) " "
39 TUPLE_EXPR@[44; 46) 39 TUPLE_EXPR@[44; 46)
40 L_PAREN@[44; 45) 40 L_PAREN@[44; 45) "("
41 R_PAREN@[45; 46) 41 R_PAREN@[45; 46) ")"
42 SEMI@[46; 47) 42 SEMI@[46; 47) ";"
43 WHITESPACE@[47; 52) 43 WHITESPACE@[47; 52) "\n "
44 LET_STMT@[52; 67) 44 LET_STMT@[52; 67)
45 LET_KW@[52; 55) 45 LET_KW@[52; 55) "let"
46 WHITESPACE@[55; 56) 46 WHITESPACE@[55; 56) " "
47 BIND_PAT@[56; 61) 47 BIND_PAT@[56; 61)
48 REF_KW@[56; 59) 48 REF_KW@[56; 59) "ref"
49 WHITESPACE@[59; 60) 49 WHITESPACE@[59; 60) " "
50 NAME@[60; 61) 50 NAME@[60; 61)
51 IDENT@[60; 61) "c" 51 IDENT@[60; 61) "c"
52 WHITESPACE@[61; 62) 52 WHITESPACE@[61; 62) " "
53 EQ@[62; 63) 53 EQ@[62; 63) "="
54 WHITESPACE@[63; 64) 54 WHITESPACE@[63; 64) " "
55 TUPLE_EXPR@[64; 66) 55 TUPLE_EXPR@[64; 66)
56 L_PAREN@[64; 65) 56 L_PAREN@[64; 65) "("
57 R_PAREN@[65; 66) 57 R_PAREN@[65; 66) ")"
58 SEMI@[66; 67) 58 SEMI@[66; 67) ";"
59 WHITESPACE@[67; 72) 59 WHITESPACE@[67; 72) "\n "
60 LET_STMT@[72; 91) 60 LET_STMT@[72; 91)
61 LET_KW@[72; 75) 61 LET_KW@[72; 75) "let"
62 WHITESPACE@[75; 76) 62 WHITESPACE@[75; 76) " "
63 BIND_PAT@[76; 85) 63 BIND_PAT@[76; 85)
64 REF_KW@[76; 79) 64 REF_KW@[76; 79) "ref"
65 WHITESPACE@[79; 80) 65 WHITESPACE@[79; 80) " "
66 MUT_KW@[80; 83) 66 MUT_KW@[80; 83) "mut"
67 WHITESPACE@[83; 84) 67 WHITESPACE@[83; 84) " "
68 NAME@[84; 85) 68 NAME@[84; 85)
69 IDENT@[84; 85) "d" 69 IDENT@[84; 85) "d"
70 WHITESPACE@[85; 86) 70 WHITESPACE@[85; 86) " "
71 EQ@[86; 87) 71 EQ@[86; 87) "="
72 WHITESPACE@[87; 88) 72 WHITESPACE@[87; 88) " "
73 TUPLE_EXPR@[88; 90) 73 TUPLE_EXPR@[88; 90)
74 L_PAREN@[88; 89) 74 L_PAREN@[88; 89) "("
75 R_PAREN@[89; 90) 75 R_PAREN@[89; 90) ")"
76 SEMI@[90; 91) 76 SEMI@[90; 91) ";"
77 WHITESPACE@[91; 96) 77 WHITESPACE@[91; 96) "\n "
78 LET_STMT@[96; 111) 78 LET_STMT@[96; 111)
79 LET_KW@[96; 99) 79 LET_KW@[96; 99) "let"
80 WHITESPACE@[99; 100) 80 WHITESPACE@[99; 100) " "
81 BIND_PAT@[100; 105) 81 BIND_PAT@[100; 105)
82 NAME@[100; 101) 82 NAME@[100; 101)
83 IDENT@[100; 101) "e" 83 IDENT@[100; 101) "e"
84 WHITESPACE@[101; 102) 84 WHITESPACE@[101; 102) " "
85 AT@[102; 103) 85 AT@[102; 103) "@"
86 WHITESPACE@[103; 104) 86 WHITESPACE@[103; 104) " "
87 PLACEHOLDER_PAT@[104; 105) 87 PLACEHOLDER_PAT@[104; 105)
88 UNDERSCORE@[104; 105) 88 UNDERSCORE@[104; 105) "_"
89 WHITESPACE@[105; 106) 89 WHITESPACE@[105; 106) " "
90 EQ@[106; 107) 90 EQ@[106; 107) "="
91 WHITESPACE@[107; 108) 91 WHITESPACE@[107; 108) " "
92 TUPLE_EXPR@[108; 110) 92 TUPLE_EXPR@[108; 110)
93 L_PAREN@[108; 109) 93 L_PAREN@[108; 109) "("
94 R_PAREN@[109; 110) 94 R_PAREN@[109; 110) ")"
95 SEMI@[110; 111) 95 SEMI@[110; 111) ";"
96 WHITESPACE@[111; 116) 96 WHITESPACE@[111; 116) "\n "
97 LET_STMT@[116; 143) 97 LET_STMT@[116; 143)
98 LET_KW@[116; 119) 98 LET_KW@[116; 119) "let"
99 WHITESPACE@[119; 120) 99 WHITESPACE@[119; 120) " "
100 BIND_PAT@[120; 137) 100 BIND_PAT@[120; 137)
101 REF_KW@[120; 123) 101 REF_KW@[120; 123) "ref"
102 WHITESPACE@[123; 124) 102 WHITESPACE@[123; 124) " "
103 MUT_KW@[124; 127) 103 MUT_KW@[124; 127) "mut"
104 WHITESPACE@[127; 128) 104 WHITESPACE@[127; 128) " "
105 NAME@[128; 129) 105 NAME@[128; 129)
106 IDENT@[128; 129) "f" 106 IDENT@[128; 129) "f"
107 WHITESPACE@[129; 130) 107 WHITESPACE@[129; 130) " "
108 AT@[130; 131) 108 AT@[130; 131) "@"
109 WHITESPACE@[131; 132) 109 WHITESPACE@[131; 132) " "
110 BIND_PAT@[132; 137) 110 BIND_PAT@[132; 137)
111 NAME@[132; 133) 111 NAME@[132; 133)
112 IDENT@[132; 133) "g" 112 IDENT@[132; 133) "g"
113 WHITESPACE@[133; 134) 113 WHITESPACE@[133; 134) " "
114 AT@[134; 135) 114 AT@[134; 135) "@"
115 WHITESPACE@[135; 136) 115 WHITESPACE@[135; 136) " "
116 PLACEHOLDER_PAT@[136; 137) 116 PLACEHOLDER_PAT@[136; 137)
117 UNDERSCORE@[136; 137) 117 UNDERSCORE@[136; 137) "_"
118 WHITESPACE@[137; 138) 118 WHITESPACE@[137; 138) " "
119 EQ@[138; 139) 119 EQ@[138; 139) "="
120 WHITESPACE@[139; 140) 120 WHITESPACE@[139; 140) " "
121 TUPLE_EXPR@[140; 142) 121 TUPLE_EXPR@[140; 142)
122 L_PAREN@[140; 141) 122 L_PAREN@[140; 141) "("
123 R_PAREN@[141; 142) 123 R_PAREN@[141; 142) ")"
124 SEMI@[142; 143) 124 SEMI@[142; 143) ";"
125 WHITESPACE@[143; 144) 125 WHITESPACE@[143; 144) "\n"
126 R_CURLY@[144; 145) 126 R_CURLY@[144; 145) "}"
127 WHITESPACE@[145; 146) 127 WHITESPACE@[145; 146) "\n"
diff --git a/crates/ra_syntax/tests/data/parser/inline/ok/0113_nocontentexpr.txt b/crates/ra_syntax/tests/data/parser/inline/ok/0113_nocontentexpr.txt
index db91e3075..601a5bae9 100644
--- a/crates/ra_syntax/tests/data/parser/inline/ok/0113_nocontentexpr.txt
+++ b/crates/ra_syntax/tests/data/parser/inline/ok/0113_nocontentexpr.txt
@@ -1,18 +1,18 @@
1SOURCE_FILE@[0; 50) 1SOURCE_FILE@[0; 50)
2 FN_DEF@[0; 49) 2 FN_DEF@[0; 49)
3 FN_KW@[0; 2) 3 FN_KW@[0; 2) "fn"
4 WHITESPACE@[2; 3) 4 WHITESPACE@[2; 3) " "
5 NAME@[3; 6) 5 NAME@[3; 6)
6 IDENT@[3; 6) "foo" 6 IDENT@[3; 6) "foo"
7 PARAM_LIST@[6; 8) 7 PARAM_LIST@[6; 8)
8 L_PAREN@[6; 7) 8 L_PAREN@[6; 7) "("
9 R_PAREN@[7; 8) 9 R_PAREN@[7; 8) ")"
10 BLOCK@[8; 49) 10 BLOCK@[8; 49)
11 L_CURLY@[8; 9) 11 L_CURLY@[8; 9) "{"
12 WHITESPACE@[9; 14) 12 WHITESPACE@[9; 14) "\n "
13 SEMI@[14; 15) 13 SEMI@[14; 15) ";"
14 SEMI@[15; 16) 14 SEMI@[15; 16) ";"
15 SEMI@[16; 17) 15 SEMI@[16; 17) ";"
16 EXPR_STMT@[17; 29) 16 EXPR_STMT@[17; 29)
17 CALL_EXPR@[17; 28) 17 CALL_EXPR@[17; 28)
18 PATH_EXPR@[17; 26) 18 PATH_EXPR@[17; 26)
@@ -21,24 +21,24 @@ SOURCE_FILE@[0; 50)
21 NAME_REF@[17; 26) 21 NAME_REF@[17; 26)
22 IDENT@[17; 26) "some_expr" 22 IDENT@[17; 26) "some_expr"
23 ARG_LIST@[26; 28) 23 ARG_LIST@[26; 28)
24 L_PAREN@[26; 27) 24 L_PAREN@[26; 27) "("
25 R_PAREN@[27; 28) 25 R_PAREN@[27; 28) ")"
26 SEMI@[28; 29) 26 SEMI@[28; 29) ";"
27 SEMI@[29; 30) 27 SEMI@[29; 30) ";"
28 SEMI@[30; 31) 28 SEMI@[30; 31) ";"
29 SEMI@[31; 32) 29 SEMI@[31; 32) ";"
30 EXPR_STMT@[32; 38) 30 EXPR_STMT@[32; 38)
31 BLOCK_EXPR@[32; 37) 31 BLOCK_EXPR@[32; 37)
32 BLOCK@[32; 37) 32 BLOCK@[32; 37)
33 L_CURLY@[32; 33) 33 L_CURLY@[32; 33) "{"
34 SEMI@[33; 34) 34 SEMI@[33; 34) ";"
35 SEMI@[34; 35) 35 SEMI@[34; 35) ";"
36 SEMI@[35; 36) 36 SEMI@[35; 36) ";"
37 R_CURLY@[36; 37) 37 R_CURLY@[36; 37) "}"
38 SEMI@[37; 38) 38 SEMI@[37; 38) ";"
39 SEMI@[38; 39) 39 SEMI@[38; 39) ";"
40 SEMI@[39; 40) 40 SEMI@[39; 40) ";"
41 SEMI@[40; 41) 41 SEMI@[40; 41) ";"
42 CALL_EXPR@[41; 47) 42 CALL_EXPR@[41; 47)
43 PATH_EXPR@[41; 43) 43 PATH_EXPR@[41; 43)
44 PATH@[41; 43) 44 PATH@[41; 43)
@@ -46,11 +46,11 @@ SOURCE_FILE@[0; 50)
46 NAME_REF@[41; 43) 46 NAME_REF@[41; 43)
47 IDENT@[41; 43) "Ok" 47 IDENT@[41; 43) "Ok"
48 ARG_LIST@[43; 47) 48 ARG_LIST@[43; 47)
49 L_PAREN@[43; 44) 49 L_PAREN@[43; 44) "("
50 TUPLE_EXPR@[44; 46) 50 TUPLE_EXPR@[44; 46)
51 L_PAREN@[44; 45) 51 L_PAREN@[44; 45) "("
52 R_PAREN@[45; 46) 52 R_PAREN@[45; 46) ")"
53 R_PAREN@[46; 47) 53 R_PAREN@[46; 47) ")"
54 WHITESPACE@[47; 48) 54 WHITESPACE@[47; 48) "\n"
55 R_CURLY@[48; 49) 55 R_CURLY@[48; 49) "}"
56 WHITESPACE@[49; 50) 56 WHITESPACE@[49; 50) "\n"
diff --git a/crates/ra_syntax/tests/data/parser/inline/ok/0114_tuple_struct_where.txt b/crates/ra_syntax/tests/data/parser/inline/ok/0114_tuple_struct_where.txt
index 4f439f21c..8534592b9 100644
--- a/crates/ra_syntax/tests/data/parser/inline/ok/0114_tuple_struct_where.txt
+++ b/crates/ra_syntax/tests/data/parser/inline/ok/0114_tuple_struct_where.txt
@@ -1,62 +1,64 @@
1SOURCE_FILE@[0; 53) 1SOURCE_FILE@[0; 53)
2 STRUCT_DEF@[0; 33) 2 STRUCT_DEF@[0; 33)
3 STRUCT_KW@[0; 6) 3 STRUCT_KW@[0; 6) "struct"
4 WHITESPACE@[6; 7) 4 WHITESPACE@[6; 7) " "
5 NAME@[7; 11) 5 NAME@[7; 11)
6 IDENT@[7; 11) "Test" 6 IDENT@[7; 11) "Test"
7 TYPE_PARAM_LIST@[11; 14) 7 TYPE_PARAM_LIST@[11; 14)
8 L_ANGLE@[11; 12) 8 L_ANGLE@[11; 12) "<"
9 TYPE_PARAM@[12; 13) 9 TYPE_PARAM@[12; 13)
10 NAME@[12; 13) 10 NAME@[12; 13)
11 IDENT@[12; 13) "T" 11 IDENT@[12; 13) "T"
12 R_ANGLE@[13; 14) 12 R_ANGLE@[13; 14) ">"
13 POS_FIELD_DEF_LIST@[14; 17) 13 POS_FIELD_DEF_LIST@[14; 17)
14 L_PAREN@[14; 15) 14 L_PAREN@[14; 15) "("
15 POS_FIELD_DEF@[15; 16) 15 POS_FIELD_DEF@[15; 16)
16 PATH_TYPE@[15; 16) 16 PATH_TYPE@[15; 16)
17 PATH@[15; 16) 17 PATH@[15; 16)
18 PATH_SEGMENT@[15; 16) 18 PATH_SEGMENT@[15; 16)
19 NAME_REF@[15; 16) 19 NAME_REF@[15; 16)
20 IDENT@[15; 16) "T" 20 IDENT@[15; 16) "T"
21 R_PAREN@[16; 17) 21 R_PAREN@[16; 17) ")"
22 WHITESPACE@[17; 18) 22 WHITESPACE@[17; 18) " "
23 WHERE_CLAUSE@[18; 32) 23 WHERE_CLAUSE@[18; 32)
24 WHERE_KW@[18; 23) 24 WHERE_KW@[18; 23) "where"
25 WHITESPACE@[23; 24) 25 WHITESPACE@[23; 24) " "
26 WHERE_PRED@[24; 32) 26 WHERE_PRED@[24; 32)
27 PATH_TYPE@[24; 25) 27 PATH_TYPE@[24; 25)
28 PATH@[24; 25) 28 PATH@[24; 25)
29 PATH_SEGMENT@[24; 25) 29 PATH_SEGMENT@[24; 25)
30 NAME_REF@[24; 25) 30 NAME_REF@[24; 25)
31 IDENT@[24; 25) "T" 31 IDENT@[24; 25) "T"
32 COLON@[25; 26) 32 COLON@[25; 26) ":"
33 WHITESPACE@[26; 27) 33 WHITESPACE@[26; 27) " "
34 PATH_TYPE@[27; 32) 34 TYPE_BOUND_LIST@[27; 32)
35 PATH@[27; 32) 35 TYPE_BOUND@[27; 32)
36 PATH_SEGMENT@[27; 32) 36 PATH_TYPE@[27; 32)
37 NAME_REF@[27; 32) 37 PATH@[27; 32)
38 IDENT@[27; 32) "Clone" 38 PATH_SEGMENT@[27; 32)
39 SEMI@[32; 33) 39 NAME_REF@[27; 32)
40 WHITESPACE@[33; 34) 40 IDENT@[27; 32) "Clone"
41 SEMI@[32; 33) ";"
42 WHITESPACE@[33; 34) "\n"
41 STRUCT_DEF@[34; 52) 43 STRUCT_DEF@[34; 52)
42 STRUCT_KW@[34; 40) 44 STRUCT_KW@[34; 40) "struct"
43 WHITESPACE@[40; 41) 45 WHITESPACE@[40; 41) " "
44 NAME@[41; 45) 46 NAME@[41; 45)
45 IDENT@[41; 45) "Test" 47 IDENT@[41; 45) "Test"
46 TYPE_PARAM_LIST@[45; 48) 48 TYPE_PARAM_LIST@[45; 48)
47 L_ANGLE@[45; 46) 49 L_ANGLE@[45; 46) "<"
48 TYPE_PARAM@[46; 47) 50 TYPE_PARAM@[46; 47)
49 NAME@[46; 47) 51 NAME@[46; 47)
50 IDENT@[46; 47) "T" 52 IDENT@[46; 47) "T"
51 R_ANGLE@[47; 48) 53 R_ANGLE@[47; 48) ">"
52 POS_FIELD_DEF_LIST@[48; 51) 54 POS_FIELD_DEF_LIST@[48; 51)
53 L_PAREN@[48; 49) 55 L_PAREN@[48; 49) "("
54 POS_FIELD_DEF@[49; 50) 56 POS_FIELD_DEF@[49; 50)
55 PATH_TYPE@[49; 50) 57 PATH_TYPE@[49; 50)
56 PATH@[49; 50) 58 PATH@[49; 50)
57 PATH_SEGMENT@[49; 50) 59 PATH_SEGMENT@[49; 50)
58 NAME_REF@[49; 50) 60 NAME_REF@[49; 50)
59 IDENT@[49; 50) "T" 61 IDENT@[49; 50) "T"
60 R_PAREN@[50; 51) 62 R_PAREN@[50; 51) ")"
61 SEMI@[51; 52) 63 SEMI@[51; 52) ";"
62 WHITESPACE@[52; 53) 64 WHITESPACE@[52; 53) "\n"
diff --git a/crates/ra_syntax/tests/data/parser/inline/ok/0115_pos_field_attrs.txt b/crates/ra_syntax/tests/data/parser/inline/ok/0115_pos_field_attrs.txt
index 4da84ba48..6dd3a9b93 100644
--- a/crates/ra_syntax/tests/data/parser/inline/ok/0115_pos_field_attrs.txt
+++ b/crates/ra_syntax/tests/data/parser/inline/ok/0115_pos_field_attrs.txt
@@ -1,39 +1,39 @@
1SOURCE_FILE@[0; 60) 1SOURCE_FILE@[0; 60)
2 STRUCT_DEF@[0; 59) 2 STRUCT_DEF@[0; 59)
3 STRUCT_KW@[0; 6) 3 STRUCT_KW@[0; 6) "struct"
4 WHITESPACE@[6; 7) 4 WHITESPACE@[6; 7) " "
5 NAME@[7; 8) 5 NAME@[7; 8)
6 IDENT@[7; 8) "S" 6 IDENT@[7; 8) "S"
7 WHITESPACE@[8; 9) 7 WHITESPACE@[8; 9) " "
8 POS_FIELD_DEF_LIST@[9; 58) 8 POS_FIELD_DEF_LIST@[9; 58)
9 L_PAREN@[9; 10) 9 L_PAREN@[9; 10) "("
10 WHITESPACE@[10; 15) 10 WHITESPACE@[10; 15) "\n "
11 POS_FIELD_DEF@[15; 55) 11 POS_FIELD_DEF@[15; 55)
12 ATTR@[15; 43) 12 ATTR@[15; 43)
13 POUND@[15; 16) 13 POUND@[15; 16) "#"
14 TOKEN_TREE@[16; 43) 14 TOKEN_TREE@[16; 43)
15 L_BRACK@[16; 17) 15 L_BRACK@[16; 17) "["
16 IDENT@[17; 22) "serde" 16 IDENT@[17; 22) "serde"
17 TOKEN_TREE@[22; 42) 17 TOKEN_TREE@[22; 42)
18 L_PAREN@[22; 23) 18 L_PAREN@[22; 23) "("
19 IDENT@[23; 27) "with" 19 IDENT@[23; 27) "with"
20 WHITESPACE@[27; 28) 20 WHITESPACE@[27; 28) " "
21 EQ@[28; 29) 21 EQ@[28; 29) "="
22 WHITESPACE@[29; 30) 22 WHITESPACE@[29; 30) " "
23 STRING@[30; 41) 23 STRING@[30; 41) "\"url_serde\""
24 R_PAREN@[41; 42) 24 R_PAREN@[41; 42) ")"
25 R_BRACK@[42; 43) 25 R_BRACK@[42; 43) "]"
26 WHITESPACE@[43; 48) 26 WHITESPACE@[43; 48) "\n "
27 VISIBILITY@[48; 51) 27 VISIBILITY@[48; 51)
28 PUB_KW@[48; 51) 28 PUB_KW@[48; 51) "pub"
29 WHITESPACE@[51; 52) 29 WHITESPACE@[51; 52) " "
30 PATH_TYPE@[52; 55) 30 PATH_TYPE@[52; 55)
31 PATH@[52; 55) 31 PATH@[52; 55)
32 PATH_SEGMENT@[52; 55) 32 PATH_SEGMENT@[52; 55)
33 NAME_REF@[52; 55) 33 NAME_REF@[52; 55)
34 IDENT@[52; 55) "Uri" 34 IDENT@[52; 55) "Uri"
35 COMMA@[55; 56) 35 COMMA@[55; 56) ","
36 WHITESPACE@[56; 57) 36 WHITESPACE@[56; 57) "\n"
37 R_PAREN@[57; 58) 37 R_PAREN@[57; 58) ")"
38 SEMI@[58; 59) 38 SEMI@[58; 59) ";"
39 WHITESPACE@[59; 60) 39 WHITESPACE@[59; 60) "\n"
diff --git a/crates/ra_syntax/tests/data/parser/inline/ok/0116_trait_fn_placeholder_parameter.txt b/crates/ra_syntax/tests/data/parser/inline/ok/0116_trait_fn_placeholder_parameter.txt
index 00217aef1..158236c5a 100644
--- a/crates/ra_syntax/tests/data/parser/inline/ok/0116_trait_fn_placeholder_parameter.txt
+++ b/crates/ra_syntax/tests/data/parser/inline/ok/0116_trait_fn_placeholder_parameter.txt
@@ -1,47 +1,47 @@
1SOURCE_FILE@[0; 46) 1SOURCE_FILE@[0; 46)
2 TRAIT_DEF@[0; 45) 2 TRAIT_DEF@[0; 45)
3 TRAIT_KW@[0; 5) 3 TRAIT_KW@[0; 5) "trait"
4 WHITESPACE@[5; 6) 4 WHITESPACE@[5; 6) " "
5 NAME@[6; 9) 5 NAME@[6; 9)
6 IDENT@[6; 9) "Foo" 6 IDENT@[6; 9) "Foo"
7 WHITESPACE@[9; 10) 7 WHITESPACE@[9; 10) " "
8 ITEM_LIST@[10; 45) 8 ITEM_LIST@[10; 45)
9 L_CURLY@[10; 11) 9 L_CURLY@[10; 11) "{"
10 WHITESPACE@[11; 16) 10 WHITESPACE@[11; 16) "\n "
11 FN_DEF@[16; 43) 11 FN_DEF@[16; 43)
12 FN_KW@[16; 18) 12 FN_KW@[16; 18) "fn"
13 WHITESPACE@[18; 19) 13 WHITESPACE@[18; 19) " "
14 NAME@[19; 22) 14 NAME@[19; 22)
15 IDENT@[19; 22) "bar" 15 IDENT@[19; 22) "bar"
16 PARAM_LIST@[22; 42) 16 PARAM_LIST@[22; 42)
17 L_PAREN@[22; 23) 17 L_PAREN@[22; 23) "("
18 PARAM@[23; 29) 18 PARAM@[23; 29)
19 PLACEHOLDER_PAT@[23; 24) 19 PLACEHOLDER_PAT@[23; 24)
20 UNDERSCORE@[23; 24) 20 UNDERSCORE@[23; 24) "_"
21 COLON@[24; 25) 21 COLON@[24; 25) ":"
22 WHITESPACE@[25; 26) 22 WHITESPACE@[25; 26) " "
23 PATH_TYPE@[26; 29) 23 PATH_TYPE@[26; 29)
24 PATH@[26; 29) 24 PATH@[26; 29)
25 PATH_SEGMENT@[26; 29) 25 PATH_SEGMENT@[26; 29)
26 NAME_REF@[26; 29) 26 NAME_REF@[26; 29)
27 IDENT@[26; 29) "u64" 27 IDENT@[26; 29) "u64"
28 COMMA@[29; 30) 28 COMMA@[29; 30) ","
29 WHITESPACE@[30; 31) 29 WHITESPACE@[30; 31) " "
30 PARAM@[31; 41) 30 PARAM@[31; 41)
31 BIND_PAT@[31; 36) 31 BIND_PAT@[31; 36)
32 MUT_KW@[31; 34) 32 MUT_KW@[31; 34) "mut"
33 WHITESPACE@[34; 35) 33 WHITESPACE@[34; 35) " "
34 NAME@[35; 36) 34 NAME@[35; 36)
35 IDENT@[35; 36) "x" 35 IDENT@[35; 36) "x"
36 COLON@[36; 37) 36 COLON@[36; 37) ":"
37 WHITESPACE@[37; 38) 37 WHITESPACE@[37; 38) " "
38 PATH_TYPE@[38; 41) 38 PATH_TYPE@[38; 41)
39 PATH@[38; 41) 39 PATH@[38; 41)
40 PATH_SEGMENT@[38; 41) 40 PATH_SEGMENT@[38; 41)
41 NAME_REF@[38; 41) 41 NAME_REF@[38; 41)
42 IDENT@[38; 41) "i32" 42 IDENT@[38; 41) "i32"
43 R_PAREN@[41; 42) 43 R_PAREN@[41; 42) ")"
44 SEMI@[42; 43) 44 SEMI@[42; 43) ";"
45 WHITESPACE@[43; 44) 45 WHITESPACE@[43; 44) "\n"
46 R_CURLY@[44; 45) 46 R_CURLY@[44; 45) "}"
47 WHITESPACE@[45; 46) 47 WHITESPACE@[45; 46) "\n"
diff --git a/crates/ra_syntax/tests/data/parser/inline/ok/0117_macro_call_type.txt b/crates/ra_syntax/tests/data/parser/inline/ok/0117_macro_call_type.txt
index 608b4a5f0..892dc813a 100644
--- a/crates/ra_syntax/tests/data/parser/inline/ok/0117_macro_call_type.txt
+++ b/crates/ra_syntax/tests/data/parser/inline/ok/0117_macro_call_type.txt
@@ -1,43 +1,43 @@
1SOURCE_FILE@[0; 41) 1SOURCE_FILE@[0; 41)
2 TYPE_ALIAS_DEF@[0; 16) 2 TYPE_ALIAS_DEF@[0; 16)
3 TYPE_KW@[0; 4) 3 TYPE_KW@[0; 4) "type"
4 WHITESPACE@[4; 5) 4 WHITESPACE@[4; 5) " "
5 NAME@[5; 6) 5 NAME@[5; 6)
6 IDENT@[5; 6) "A" 6 IDENT@[5; 6) "A"
7 WHITESPACE@[6; 7) 7 WHITESPACE@[6; 7) " "
8 EQ@[7; 8) 8 EQ@[7; 8) "="
9 WHITESPACE@[8; 9) 9 WHITESPACE@[8; 9) " "
10 MACRO_CALL@[9; 15) 10 MACRO_CALL@[9; 15)
11 PATH@[9; 12) 11 PATH@[9; 12)
12 PATH_SEGMENT@[9; 12) 12 PATH_SEGMENT@[9; 12)
13 NAME_REF@[9; 12) 13 NAME_REF@[9; 12)
14 IDENT@[9; 12) "foo" 14 IDENT@[9; 12) "foo"
15 EXCL@[12; 13) 15 EXCL@[12; 13) "!"
16 TOKEN_TREE@[13; 15) 16 TOKEN_TREE@[13; 15)
17 L_PAREN@[13; 14) 17 L_PAREN@[13; 14) "("
18 R_PAREN@[14; 15) 18 R_PAREN@[14; 15) ")"
19 SEMI@[15; 16) 19 SEMI@[15; 16) ";"
20 WHITESPACE@[16; 17) 20 WHITESPACE@[16; 17) "\n"
21 TYPE_ALIAS_DEF@[17; 40) 21 TYPE_ALIAS_DEF@[17; 40)
22 TYPE_KW@[17; 21) 22 TYPE_KW@[17; 21) "type"
23 WHITESPACE@[21; 22) 23 WHITESPACE@[21; 22) " "
24 NAME@[22; 23) 24 NAME@[22; 23)
25 IDENT@[22; 23) "B" 25 IDENT@[22; 23) "B"
26 WHITESPACE@[23; 24) 26 WHITESPACE@[23; 24) " "
27 EQ@[24; 25) 27 EQ@[24; 25) "="
28 WHITESPACE@[25; 26) 28 WHITESPACE@[25; 26) " "
29 MACRO_CALL@[26; 39) 29 MACRO_CALL@[26; 39)
30 PATH@[26; 36) 30 PATH@[26; 36)
31 PATH@[26; 31) 31 PATH@[26; 31)
32 PATH_SEGMENT@[26; 31) 32 PATH_SEGMENT@[26; 31)
33 CRATE_KW@[26; 31) 33 CRATE_KW@[26; 31) "crate"
34 COLONCOLON@[31; 33) 34 COLONCOLON@[31; 33) "::"
35 PATH_SEGMENT@[33; 36) 35 PATH_SEGMENT@[33; 36)
36 NAME_REF@[33; 36) 36 NAME_REF@[33; 36)
37 IDENT@[33; 36) "foo" 37 IDENT@[33; 36) "foo"
38 EXCL@[36; 37) 38 EXCL@[36; 37) "!"
39 TOKEN_TREE@[37; 39) 39 TOKEN_TREE@[37; 39)
40 L_PAREN@[37; 38) 40 L_PAREN@[37; 38) "("
41 R_PAREN@[38; 39) 41 R_PAREN@[38; 39) ")"
42 SEMI@[39; 40) 42 SEMI@[39; 40) ";"
43 WHITESPACE@[40; 41) 43 WHITESPACE@[40; 41) "\n"
diff --git a/crates/ra_syntax/tests/data/parser/inline/ok/0118_impl_inner_attributes.txt b/crates/ra_syntax/tests/data/parser/inline/ok/0118_impl_inner_attributes.txt
index 3b761b7bb..0ef3eeb75 100644
--- a/crates/ra_syntax/tests/data/parser/inline/ok/0118_impl_inner_attributes.txt
+++ b/crates/ra_syntax/tests/data/parser/inline/ok/0118_impl_inner_attributes.txt
@@ -1,38 +1,38 @@
1SOURCE_FILE@[0; 94) 1SOURCE_FILE@[0; 94)
2 ENUM_DEF@[0; 8) 2 ENUM_DEF@[0; 8)
3 ENUM_KW@[0; 4) 3 ENUM_KW@[0; 4) "enum"
4 WHITESPACE@[4; 5) 4 WHITESPACE@[4; 5) " "
5 NAME@[5; 6) 5 NAME@[5; 6)
6 IDENT@[5; 6) "F" 6 IDENT@[5; 6) "F"
7 ENUM_VARIANT_LIST@[6; 8) 7 ENUM_VARIANT_LIST@[6; 8)
8 L_CURLY@[6; 7) 8 L_CURLY@[6; 7) "{"
9 R_CURLY@[7; 8) 9 R_CURLY@[7; 8) "}"
10 WHITESPACE@[8; 9) 10 WHITESPACE@[8; 9) "\n"
11 IMPL_BLOCK@[9; 93) 11 IMPL_BLOCK@[9; 93)
12 IMPL_KW@[9; 13) 12 IMPL_KW@[9; 13) "impl"
13 WHITESPACE@[13; 14) 13 WHITESPACE@[13; 14) " "
14 PATH_TYPE@[14; 15) 14 PATH_TYPE@[14; 15)
15 PATH@[14; 15) 15 PATH@[14; 15)
16 PATH_SEGMENT@[14; 15) 16 PATH_SEGMENT@[14; 15)
17 NAME_REF@[14; 15) 17 NAME_REF@[14; 15)
18 IDENT@[14; 15) "F" 18 IDENT@[14; 15) "F"
19 WHITESPACE@[15; 16) 19 WHITESPACE@[15; 16) " "
20 ITEM_LIST@[16; 93) 20 ITEM_LIST@[16; 93)
21 L_CURLY@[16; 17) 21 L_CURLY@[16; 17) "{"
22 WHITESPACE@[17; 23) 22 WHITESPACE@[17; 23) "\n "
23 COMMENT@[23; 48) 23 COMMENT@[23; 48) "//! This is a doc com ..."
24 WHITESPACE@[48; 54) 24 WHITESPACE@[48; 54) "\n "
25 ATTR@[54; 91) 25 ATTR@[54; 91)
26 POUND@[54; 55) 26 POUND@[54; 55) "#"
27 EXCL@[55; 56) 27 EXCL@[55; 56) "!"
28 TOKEN_TREE@[56; 91) 28 TOKEN_TREE@[56; 91)
29 L_BRACK@[56; 57) 29 L_BRACK@[56; 57) "["
30 IDENT@[57; 60) "doc" 30 IDENT@[57; 60) "doc"
31 TOKEN_TREE@[60; 90) 31 TOKEN_TREE@[60; 90)
32 L_PAREN@[60; 61) 32 L_PAREN@[60; 61) "("
33 STRING@[61; 89) 33 STRING@[61; 89) "\"This is also a doc c ..."
34 R_PAREN@[89; 90) 34 R_PAREN@[89; 90) ")"
35 R_BRACK@[90; 91) 35 R_BRACK@[90; 91) "]"
36 WHITESPACE@[91; 92) 36 WHITESPACE@[91; 92) "\n"
37 R_CURLY@[92; 93) 37 R_CURLY@[92; 93) "}"
38 WHITESPACE@[93; 94) 38 WHITESPACE@[93; 94) "\n"
diff --git a/crates/ra_syntax/tests/data/parser/inline/ok/0118_match_guard.txt b/crates/ra_syntax/tests/data/parser/inline/ok/0118_match_guard.txt
index 27553882d..d53e10e86 100644
--- a/crates/ra_syntax/tests/data/parser/inline/ok/0118_match_guard.txt
+++ b/crates/ra_syntax/tests/data/parser/inline/ok/0118_match_guard.txt
@@ -1,47 +1,47 @@
1SOURCE_FILE@[0; 58) 1SOURCE_FILE@[0; 58)
2 FN_DEF@[0; 57) 2 FN_DEF@[0; 57)
3 FN_KW@[0; 2) 3 FN_KW@[0; 2) "fn"
4 WHITESPACE@[2; 3) 4 WHITESPACE@[2; 3) " "
5 NAME@[3; 6) 5 NAME@[3; 6)
6 IDENT@[3; 6) "foo" 6 IDENT@[3; 6) "foo"
7 PARAM_LIST@[6; 8) 7 PARAM_LIST@[6; 8)
8 L_PAREN@[6; 7) 8 L_PAREN@[6; 7) "("
9 R_PAREN@[7; 8) 9 R_PAREN@[7; 8) ")"
10 WHITESPACE@[8; 9) 10 WHITESPACE@[8; 9) " "
11 BLOCK@[9; 57) 11 BLOCK@[9; 57)
12 L_CURLY@[9; 10) 12 L_CURLY@[9; 10) "{"
13 WHITESPACE@[10; 15) 13 WHITESPACE@[10; 15) "\n "
14 MATCH_EXPR@[15; 55) 14 MATCH_EXPR@[15; 55)
15 MATCH_KW@[15; 20) 15 MATCH_KW@[15; 20) "match"
16 WHITESPACE@[20; 21) 16 WHITESPACE@[20; 21) " "
17 TUPLE_EXPR@[21; 23) 17 TUPLE_EXPR@[21; 23)
18 L_PAREN@[21; 22) 18 L_PAREN@[21; 22) "("
19 R_PAREN@[22; 23) 19 R_PAREN@[22; 23) ")"
20 WHITESPACE@[23; 24) 20 WHITESPACE@[23; 24) " "
21 MATCH_ARM_LIST@[24; 55) 21 MATCH_ARM_LIST@[24; 55)
22 L_CURLY@[24; 25) 22 L_CURLY@[24; 25) "{"
23 WHITESPACE@[25; 34) 23 WHITESPACE@[25; 34) "\n "
24 MATCH_ARM@[34; 48) 24 MATCH_ARM@[34; 48)
25 PLACEHOLDER_PAT@[34; 35) 25 PLACEHOLDER_PAT@[34; 35)
26 UNDERSCORE@[34; 35) 26 UNDERSCORE@[34; 35) "_"
27 WHITESPACE@[35; 36) 27 WHITESPACE@[35; 36) " "
28 MATCH_GUARD@[36; 42) 28 MATCH_GUARD@[36; 42)
29 IF_KW@[36; 38) 29 IF_KW@[36; 38) "if"
30 WHITESPACE@[38; 39) 30 WHITESPACE@[38; 39) " "
31 PATH_EXPR@[39; 42) 31 PATH_EXPR@[39; 42)
32 PATH@[39; 42) 32 PATH@[39; 42)
33 PATH_SEGMENT@[39; 42) 33 PATH_SEGMENT@[39; 42)
34 NAME_REF@[39; 42) 34 NAME_REF@[39; 42)
35 IDENT@[39; 42) "foo" 35 IDENT@[39; 42) "foo"
36 WHITESPACE@[42; 43) 36 WHITESPACE@[42; 43) " "
37 FAT_ARROW@[43; 45) 37 FAT_ARROW@[43; 45) "=>"
38 WHITESPACE@[45; 46) 38 WHITESPACE@[45; 46) " "
39 TUPLE_EXPR@[46; 48) 39 TUPLE_EXPR@[46; 48)
40 L_PAREN@[46; 47) 40 L_PAREN@[46; 47) "("
41 R_PAREN@[47; 48) 41 R_PAREN@[47; 48) ")"
42 COMMA@[48; 49) 42 COMMA@[48; 49) ","
43 WHITESPACE@[49; 54) 43 WHITESPACE@[49; 54) "\n "
44 R_CURLY@[54; 55) 44 R_CURLY@[54; 55) "}"
45 WHITESPACE@[55; 56) 45 WHITESPACE@[55; 56) "\n"
46 R_CURLY@[56; 57) 46 R_CURLY@[56; 57) "}"
47 WHITESPACE@[57; 58) 47 WHITESPACE@[57; 58) "\n"
diff --git a/crates/ra_syntax/tests/data/parser/inline/ok/0120_match_arms_inner_attribute.txt b/crates/ra_syntax/tests/data/parser/inline/ok/0120_match_arms_inner_attribute.txt
index b39a217bd..17c296327 100644
--- a/crates/ra_syntax/tests/data/parser/inline/ok/0120_match_arms_inner_attribute.txt
+++ b/crates/ra_syntax/tests/data/parser/inline/ok/0120_match_arms_inner_attribute.txt
@@ -1,74 +1,74 @@
1SOURCE_FILE@[0; 139) 1SOURCE_FILE@[0; 139)
2 FN_DEF@[0; 138) 2 FN_DEF@[0; 138)
3 FN_KW@[0; 2) 3 FN_KW@[0; 2) "fn"
4 WHITESPACE@[2; 3) 4 WHITESPACE@[2; 3) " "
5 NAME@[3; 6) 5 NAME@[3; 6)
6 IDENT@[3; 6) "foo" 6 IDENT@[3; 6) "foo"
7 PARAM_LIST@[6; 8) 7 PARAM_LIST@[6; 8)
8 L_PAREN@[6; 7) 8 L_PAREN@[6; 7) "("
9 R_PAREN@[7; 8) 9 R_PAREN@[7; 8) ")"
10 WHITESPACE@[8; 9) 10 WHITESPACE@[8; 9) " "
11 BLOCK@[9; 138) 11 BLOCK@[9; 138)
12 L_CURLY@[9; 10) 12 L_CURLY@[9; 10) "{"
13 WHITESPACE@[10; 15) 13 WHITESPACE@[10; 15) "\n "
14 MATCH_EXPR@[15; 136) 14 MATCH_EXPR@[15; 136)
15 MATCH_KW@[15; 20) 15 MATCH_KW@[15; 20) "match"
16 WHITESPACE@[20; 21) 16 WHITESPACE@[20; 21) " "
17 TUPLE_EXPR@[21; 23) 17 TUPLE_EXPR@[21; 23)
18 L_PAREN@[21; 22) 18 L_PAREN@[21; 22) "("
19 R_PAREN@[22; 23) 19 R_PAREN@[22; 23) ")"
20 WHITESPACE@[23; 24) 20 WHITESPACE@[23; 24) " "
21 MATCH_ARM_LIST@[24; 136) 21 MATCH_ARM_LIST@[24; 136)
22 L_CURLY@[24; 25) 22 L_CURLY@[24; 25) "{"
23 WHITESPACE@[25; 34) 23 WHITESPACE@[25; 34) "\n "
24 ATTR@[34; 60) 24 ATTR@[34; 60)
25 POUND@[34; 35) 25 POUND@[34; 35) "#"
26 EXCL@[35; 36) 26 EXCL@[35; 36) "!"
27 TOKEN_TREE@[36; 60) 27 TOKEN_TREE@[36; 60)
28 L_BRACK@[36; 37) 28 L_BRACK@[36; 37) "["
29 IDENT@[37; 40) "doc" 29 IDENT@[37; 40) "doc"
30 TOKEN_TREE@[40; 59) 30 TOKEN_TREE@[40; 59)
31 L_PAREN@[40; 41) 31 L_PAREN@[40; 41) "("
32 STRING@[41; 58) 32 STRING@[41; 58) "\"Inner attribute\""
33 R_PAREN@[58; 59) 33 R_PAREN@[58; 59) ")"
34 R_BRACK@[59; 60) 34 R_BRACK@[59; 60) "]"
35 WHITESPACE@[60; 69) 35 WHITESPACE@[60; 69) "\n "
36 ATTR@[69; 86) 36 ATTR@[69; 86)
37 POUND@[69; 70) 37 POUND@[69; 70) "#"
38 EXCL@[70; 71) 38 EXCL@[70; 71) "!"
39 TOKEN_TREE@[71; 86) 39 TOKEN_TREE@[71; 86)
40 L_BRACK@[71; 72) 40 L_BRACK@[71; 72) "["
41 IDENT@[72; 75) "doc" 41 IDENT@[72; 75) "doc"
42 TOKEN_TREE@[75; 85) 42 TOKEN_TREE@[75; 85)
43 L_PAREN@[75; 76) 43 L_PAREN@[75; 76) "("
44 STRING@[76; 84) 44 STRING@[76; 84) "\"Can be\""
45 R_PAREN@[84; 85) 45 R_PAREN@[84; 85) ")"
46 R_BRACK@[85; 86) 46 R_BRACK@[85; 86) "]"
47 WHITESPACE@[86; 95) 47 WHITESPACE@[86; 95) "\n "
48 ATTR@[95; 113) 48 ATTR@[95; 113)
49 POUND@[95; 96) 49 POUND@[95; 96) "#"
50 EXCL@[96; 97) 50 EXCL@[96; 97) "!"
51 TOKEN_TREE@[97; 113) 51 TOKEN_TREE@[97; 113)
52 L_BRACK@[97; 98) 52 L_BRACK@[97; 98) "["
53 IDENT@[98; 101) "doc" 53 IDENT@[98; 101) "doc"
54 TOKEN_TREE@[101; 112) 54 TOKEN_TREE@[101; 112)
55 L_PAREN@[101; 102) 55 L_PAREN@[101; 102) "("
56 STRING@[102; 111) 56 STRING@[102; 111) "\"Stacked\""
57 R_PAREN@[111; 112) 57 R_PAREN@[111; 112) ")"
58 R_BRACK@[112; 113) 58 R_BRACK@[112; 113) "]"
59 WHITESPACE@[113; 122) 59 WHITESPACE@[113; 122) "\n "
60 MATCH_ARM@[122; 129) 60 MATCH_ARM@[122; 129)
61 PLACEHOLDER_PAT@[122; 123) 61 PLACEHOLDER_PAT@[122; 123)
62 UNDERSCORE@[122; 123) 62 UNDERSCORE@[122; 123) "_"
63 WHITESPACE@[123; 124) 63 WHITESPACE@[123; 124) " "
64 FAT_ARROW@[124; 126) 64 FAT_ARROW@[124; 126) "=>"
65 WHITESPACE@[126; 127) 65 WHITESPACE@[126; 127) " "
66 TUPLE_EXPR@[127; 129) 66 TUPLE_EXPR@[127; 129)
67 L_PAREN@[127; 128) 67 L_PAREN@[127; 128) "("
68 R_PAREN@[128; 129) 68 R_PAREN@[128; 129) ")"
69 COMMA@[129; 130) 69 COMMA@[129; 130) ","
70 WHITESPACE@[130; 135) 70 WHITESPACE@[130; 135) "\n "
71 R_CURLY@[135; 136) 71 R_CURLY@[135; 136) "}"
72 WHITESPACE@[136; 137) 72 WHITESPACE@[136; 137) "\n"
73 R_CURLY@[137; 138) 73 R_CURLY@[137; 138) "}"
74 WHITESPACE@[138; 139) 74 WHITESPACE@[138; 139) "\n"
diff --git a/crates/ra_syntax/tests/data/parser/inline/ok/0121_match_arms_outer_attributes.txt b/crates/ra_syntax/tests/data/parser/inline/ok/0121_match_arms_outer_attributes.txt
index e52a290bf..9c238e869 100644
--- a/crates/ra_syntax/tests/data/parser/inline/ok/0121_match_arms_outer_attributes.txt
+++ b/crates/ra_syntax/tests/data/parser/inline/ok/0121_match_arms_outer_attributes.txt
@@ -1,135 +1,135 @@
1SOURCE_FILE@[0; 259) 1SOURCE_FILE@[0; 259)
2 FN_DEF@[0; 258) 2 FN_DEF@[0; 258)
3 FN_KW@[0; 2) 3 FN_KW@[0; 2) "fn"
4 WHITESPACE@[2; 3) 4 WHITESPACE@[2; 3) " "
5 NAME@[3; 6) 5 NAME@[3; 6)
6 IDENT@[3; 6) "foo" 6 IDENT@[3; 6) "foo"
7 PARAM_LIST@[6; 8) 7 PARAM_LIST@[6; 8)
8 L_PAREN@[6; 7) 8 L_PAREN@[6; 7) "("
9 R_PAREN@[7; 8) 9 R_PAREN@[7; 8) ")"
10 WHITESPACE@[8; 9) 10 WHITESPACE@[8; 9) " "
11 BLOCK@[9; 258) 11 BLOCK@[9; 258)
12 L_CURLY@[9; 10) 12 L_CURLY@[9; 10) "{"
13 WHITESPACE@[10; 15) 13 WHITESPACE@[10; 15) "\n "
14 MATCH_EXPR@[15; 256) 14 MATCH_EXPR@[15; 256)
15 MATCH_KW@[15; 20) 15 MATCH_KW@[15; 20) "match"
16 WHITESPACE@[20; 21) 16 WHITESPACE@[20; 21) " "
17 TUPLE_EXPR@[21; 23) 17 TUPLE_EXPR@[21; 23)
18 L_PAREN@[21; 22) 18 L_PAREN@[21; 22) "("
19 R_PAREN@[22; 23) 19 R_PAREN@[22; 23) ")"
20 WHITESPACE@[23; 24) 20 WHITESPACE@[23; 24) " "
21 MATCH_ARM_LIST@[24; 256) 21 MATCH_ARM_LIST@[24; 256)
22 L_CURLY@[24; 25) 22 L_CURLY@[24; 25) "{"
23 WHITESPACE@[25; 34) 23 WHITESPACE@[25; 34) "\n "
24 MATCH_ARM@[34; 74) 24 MATCH_ARM@[34; 74)
25 ATTR@[34; 58) 25 ATTR@[34; 58)
26 POUND@[34; 35) 26 POUND@[34; 35) "#"
27 TOKEN_TREE@[35; 58) 27 TOKEN_TREE@[35; 58)
28 L_BRACK@[35; 36) 28 L_BRACK@[35; 36) "["
29 IDENT@[36; 39) "cfg" 29 IDENT@[36; 39) "cfg"
30 TOKEN_TREE@[39; 57) 30 TOKEN_TREE@[39; 57)
31 L_PAREN@[39; 40) 31 L_PAREN@[39; 40) "("
32 IDENT@[40; 47) "feature" 32 IDENT@[40; 47) "feature"
33 WHITESPACE@[47; 48) 33 WHITESPACE@[47; 48) " "
34 EQ@[48; 49) 34 EQ@[48; 49) "="
35 WHITESPACE@[49; 50) 35 WHITESPACE@[49; 50) " "
36 STRING@[50; 56) 36 STRING@[50; 56) "\"some\""
37 R_PAREN@[56; 57) 37 R_PAREN@[56; 57) ")"
38 R_BRACK@[57; 58) 38 R_BRACK@[57; 58) "]"
39 WHITESPACE@[58; 67) 39 WHITESPACE@[58; 67) "\n "
40 PLACEHOLDER_PAT@[67; 68) 40 PLACEHOLDER_PAT@[67; 68)
41 UNDERSCORE@[67; 68) 41 UNDERSCORE@[67; 68) "_"
42 WHITESPACE@[68; 69) 42 WHITESPACE@[68; 69) " "
43 FAT_ARROW@[69; 71) 43 FAT_ARROW@[69; 71) "=>"
44 WHITESPACE@[71; 72) 44 WHITESPACE@[71; 72) " "
45 TUPLE_EXPR@[72; 74) 45 TUPLE_EXPR@[72; 74)
46 L_PAREN@[72; 73) 46 L_PAREN@[72; 73) "("
47 R_PAREN@[73; 74) 47 R_PAREN@[73; 74) ")"
48 COMMA@[74; 75) 48 COMMA@[74; 75) ","
49 WHITESPACE@[75; 84) 49 WHITESPACE@[75; 84) "\n "
50 MATCH_ARM@[84; 125) 50 MATCH_ARM@[84; 125)
51 ATTR@[84; 109) 51 ATTR@[84; 109)
52 POUND@[84; 85) 52 POUND@[84; 85) "#"
53 TOKEN_TREE@[85; 109) 53 TOKEN_TREE@[85; 109)
54 L_BRACK@[85; 86) 54 L_BRACK@[85; 86) "["
55 IDENT@[86; 89) "cfg" 55 IDENT@[86; 89) "cfg"
56 TOKEN_TREE@[89; 108) 56 TOKEN_TREE@[89; 108)
57 L_PAREN@[89; 90) 57 L_PAREN@[89; 90) "("
58 IDENT@[90; 97) "feature" 58 IDENT@[90; 97) "feature"
59 WHITESPACE@[97; 98) 59 WHITESPACE@[97; 98) " "
60 EQ@[98; 99) 60 EQ@[98; 99) "="
61 WHITESPACE@[99; 100) 61 WHITESPACE@[99; 100) " "
62 STRING@[100; 107) 62 STRING@[100; 107) "\"other\""
63 R_PAREN@[107; 108) 63 R_PAREN@[107; 108) ")"
64 R_BRACK@[108; 109) 64 R_BRACK@[108; 109) "]"
65 WHITESPACE@[109; 118) 65 WHITESPACE@[109; 118) "\n "
66 PLACEHOLDER_PAT@[118; 119) 66 PLACEHOLDER_PAT@[118; 119)
67 UNDERSCORE@[118; 119) 67 UNDERSCORE@[118; 119) "_"
68 WHITESPACE@[119; 120) 68 WHITESPACE@[119; 120) " "
69 FAT_ARROW@[120; 122) 69 FAT_ARROW@[120; 122) "=>"
70 WHITESPACE@[122; 123) 70 WHITESPACE@[122; 123) " "
71 TUPLE_EXPR@[123; 125) 71 TUPLE_EXPR@[123; 125)
72 L_PAREN@[123; 124) 72 L_PAREN@[123; 124) "("
73 R_PAREN@[124; 125) 73 R_PAREN@[124; 125) ")"
74 COMMA@[125; 126) 74 COMMA@[125; 126) ","
75 WHITESPACE@[126; 135) 75 WHITESPACE@[126; 135) "\n "
76 MATCH_ARM@[135; 249) 76 MATCH_ARM@[135; 249)
77 ATTR@[135; 159) 77 ATTR@[135; 159)
78 POUND@[135; 136) 78 POUND@[135; 136) "#"
79 TOKEN_TREE@[136; 159) 79 TOKEN_TREE@[136; 159)
80 L_BRACK@[136; 137) 80 L_BRACK@[136; 137) "["
81 IDENT@[137; 140) "cfg" 81 IDENT@[137; 140) "cfg"
82 TOKEN_TREE@[140; 158) 82 TOKEN_TREE@[140; 158)
83 L_PAREN@[140; 141) 83 L_PAREN@[140; 141) "("
84 IDENT@[141; 148) "feature" 84 IDENT@[141; 148) "feature"
85 WHITESPACE@[148; 149) 85 WHITESPACE@[148; 149) " "
86 EQ@[149; 150) 86 EQ@[149; 150) "="
87 WHITESPACE@[150; 151) 87 WHITESPACE@[150; 151) " "
88 STRING@[151; 157) 88 STRING@[151; 157) "\"many\""
89 R_PAREN@[157; 158) 89 R_PAREN@[157; 158) ")"
90 R_BRACK@[158; 159) 90 R_BRACK@[158; 159) "]"
91 WHITESPACE@[159; 168) 91 WHITESPACE@[159; 168) "\n "
92 ATTR@[168; 198) 92 ATTR@[168; 198)
93 POUND@[168; 169) 93 POUND@[168; 169) "#"
94 TOKEN_TREE@[169; 198) 94 TOKEN_TREE@[169; 198)
95 L_BRACK@[169; 170) 95 L_BRACK@[169; 170) "["
96 IDENT@[170; 173) "cfg" 96 IDENT@[170; 173) "cfg"
97 TOKEN_TREE@[173; 197) 97 TOKEN_TREE@[173; 197)
98 L_PAREN@[173; 174) 98 L_PAREN@[173; 174) "("
99 IDENT@[174; 181) "feature" 99 IDENT@[174; 181) "feature"
100 WHITESPACE@[181; 182) 100 WHITESPACE@[181; 182) " "
101 EQ@[182; 183) 101 EQ@[182; 183) "="
102 WHITESPACE@[183; 184) 102 WHITESPACE@[183; 184) " "
103 STRING@[184; 196) 103 STRING@[184; 196) "\"attributes\""
104 R_PAREN@[196; 197) 104 R_PAREN@[196; 197) ")"
105 R_BRACK@[197; 198) 105 R_BRACK@[197; 198) "]"
106 WHITESPACE@[198; 207) 106 WHITESPACE@[198; 207) "\n "
107 ATTR@[207; 233) 107 ATTR@[207; 233)
108 POUND@[207; 208) 108 POUND@[207; 208) "#"
109 TOKEN_TREE@[208; 233) 109 TOKEN_TREE@[208; 233)
110 L_BRACK@[208; 209) 110 L_BRACK@[208; 209) "["
111 IDENT@[209; 212) "cfg" 111 IDENT@[209; 212) "cfg"
112 TOKEN_TREE@[212; 232) 112 TOKEN_TREE@[212; 232)
113 L_PAREN@[212; 213) 113 L_PAREN@[212; 213) "("
114 IDENT@[213; 220) "feature" 114 IDENT@[213; 220) "feature"
115 WHITESPACE@[220; 221) 115 WHITESPACE@[220; 221) " "
116 EQ@[221; 222) 116 EQ@[221; 222) "="
117 WHITESPACE@[222; 223) 117 WHITESPACE@[222; 223) " "
118 STRING@[223; 231) 118 STRING@[223; 231) "\"before\""
119 R_PAREN@[231; 232) 119 R_PAREN@[231; 232) ")"
120 R_BRACK@[232; 233) 120 R_BRACK@[232; 233) "]"
121 WHITESPACE@[233; 242) 121 WHITESPACE@[233; 242) "\n "
122 PLACEHOLDER_PAT@[242; 243) 122 PLACEHOLDER_PAT@[242; 243)
123 UNDERSCORE@[242; 243) 123 UNDERSCORE@[242; 243) "_"
124 WHITESPACE@[243; 244) 124 WHITESPACE@[243; 244) " "
125 FAT_ARROW@[244; 246) 125 FAT_ARROW@[244; 246) "=>"
126 WHITESPACE@[246; 247) 126 WHITESPACE@[246; 247) " "
127 TUPLE_EXPR@[247; 249) 127 TUPLE_EXPR@[247; 249)
128 L_PAREN@[247; 248) 128 L_PAREN@[247; 248) "("
129 R_PAREN@[248; 249) 129 R_PAREN@[248; 249) ")"
130 COMMA@[249; 250) 130 COMMA@[249; 250) ","
131 WHITESPACE@[250; 255) 131 WHITESPACE@[250; 255) "\n "
132 R_CURLY@[255; 256) 132 R_CURLY@[255; 256) "}"
133 WHITESPACE@[256; 257) 133 WHITESPACE@[256; 257) "\n"
134 R_CURLY@[257; 258) 134 R_CURLY@[257; 258) "}"
135 WHITESPACE@[258; 259) 135 WHITESPACE@[258; 259) "\n"
diff --git a/crates/ra_syntax/tests/data/parser/inline/ok/0122_generic_lifetime_type_attribute.txt b/crates/ra_syntax/tests/data/parser/inline/ok/0122_generic_lifetime_type_attribute.txt
index 6a6aa89e8..a45995236 100644
--- a/crates/ra_syntax/tests/data/parser/inline/ok/0122_generic_lifetime_type_attribute.txt
+++ b/crates/ra_syntax/tests/data/parser/inline/ok/0122_generic_lifetime_type_attribute.txt
@@ -1,61 +1,61 @@
1SOURCE_FILE@[0; 64) 1SOURCE_FILE@[0; 64)
2 FN_DEF@[0; 63) 2 FN_DEF@[0; 63)
3 FN_KW@[0; 2) 3 FN_KW@[0; 2) "fn"
4 WHITESPACE@[2; 3) 4 WHITESPACE@[2; 3) " "
5 NAME@[3; 6) 5 NAME@[3; 6)
6 IDENT@[3; 6) "foo" 6 IDENT@[3; 6) "foo"
7 TYPE_PARAM_LIST@[6; 49) 7 TYPE_PARAM_LIST@[6; 49)
8 L_ANGLE@[6; 7) 8 L_ANGLE@[6; 7) "<"
9 LIFETIME_PARAM@[7; 29) 9 LIFETIME_PARAM@[7; 29)
10 ATTR@[7; 26) 10 ATTR@[7; 26)
11 POUND@[7; 8) 11 POUND@[7; 8) "#"
12 TOKEN_TREE@[8; 26) 12 TOKEN_TREE@[8; 26)
13 L_BRACK@[8; 9) 13 L_BRACK@[8; 9) "["
14 IDENT@[9; 15) "derive" 14 IDENT@[9; 15) "derive"
15 TOKEN_TREE@[15; 25) 15 TOKEN_TREE@[15; 25)
16 L_PAREN@[15; 16) 16 L_PAREN@[15; 16) "("
17 IDENT@[16; 24) "Lifetime" 17 IDENT@[16; 24) "Lifetime"
18 R_PAREN@[24; 25) 18 R_PAREN@[24; 25) ")"
19 R_BRACK@[25; 26) 19 R_BRACK@[25; 26) "]"
20 WHITESPACE@[26; 27) 20 WHITESPACE@[26; 27) " "
21 LIFETIME@[27; 29) "'a" 21 LIFETIME@[27; 29) "\'a"
22 COMMA@[29; 30) 22 COMMA@[29; 30) ","
23 WHITESPACE@[30; 31) 23 WHITESPACE@[30; 31) " "
24 TYPE_PARAM@[31; 48) 24 TYPE_PARAM@[31; 48)
25 ATTR@[31; 46) 25 ATTR@[31; 46)
26 POUND@[31; 32) 26 POUND@[31; 32) "#"
27 TOKEN_TREE@[32; 46) 27 TOKEN_TREE@[32; 46)
28 L_BRACK@[32; 33) 28 L_BRACK@[32; 33) "["
29 IDENT@[33; 39) "derive" 29 IDENT@[33; 39) "derive"
30 TOKEN_TREE@[39; 45) 30 TOKEN_TREE@[39; 45)
31 L_PAREN@[39; 40) 31 L_PAREN@[39; 40) "("
32 IDENT@[40; 44) "Type" 32 IDENT@[40; 44) "Type"
33 R_PAREN@[44; 45) 33 R_PAREN@[44; 45) ")"
34 R_BRACK@[45; 46) 34 R_BRACK@[45; 46) "]"
35 WHITESPACE@[46; 47) 35 WHITESPACE@[46; 47) " "
36 NAME@[47; 48) 36 NAME@[47; 48)
37 IDENT@[47; 48) "T" 37 IDENT@[47; 48) "T"
38 R_ANGLE@[48; 49) 38 R_ANGLE@[48; 49) ">"
39 PARAM_LIST@[49; 59) 39 PARAM_LIST@[49; 59)
40 L_PAREN@[49; 50) 40 L_PAREN@[49; 50) "("
41 PARAM@[50; 58) 41 PARAM@[50; 58)
42 PLACEHOLDER_PAT@[50; 51) 42 PLACEHOLDER_PAT@[50; 51)
43 UNDERSCORE@[50; 51) 43 UNDERSCORE@[50; 51) "_"
44 COLON@[51; 52) 44 COLON@[51; 52) ":"
45 WHITESPACE@[52; 53) 45 WHITESPACE@[52; 53) " "
46 REFERENCE_TYPE@[53; 58) 46 REFERENCE_TYPE@[53; 58)
47 AMP@[53; 54) 47 AMP@[53; 54) "&"
48 LIFETIME@[54; 56) "'a" 48 LIFETIME@[54; 56) "\'a"
49 WHITESPACE@[56; 57) 49 WHITESPACE@[56; 57) " "
50 PATH_TYPE@[57; 58) 50 PATH_TYPE@[57; 58)
51 PATH@[57; 58) 51 PATH@[57; 58)
52 PATH_SEGMENT@[57; 58) 52 PATH_SEGMENT@[57; 58)
53 NAME_REF@[57; 58) 53 NAME_REF@[57; 58)
54 IDENT@[57; 58) "T" 54 IDENT@[57; 58) "T"
55 R_PAREN@[58; 59) 55 R_PAREN@[58; 59) ")"
56 WHITESPACE@[59; 60) 56 WHITESPACE@[59; 60) " "
57 BLOCK@[60; 63) 57 BLOCK@[60; 63)
58 L_CURLY@[60; 61) 58 L_CURLY@[60; 61) "{"
59 WHITESPACE@[61; 62) 59 WHITESPACE@[61; 62) "\n"
60 R_CURLY@[62; 63) 60 R_CURLY@[62; 63) "}"
61 WHITESPACE@[63; 64) 61 WHITESPACE@[63; 64) "\n"
diff --git a/crates/ra_syntax/tests/data/parser/inline/ok/0123_param_list_vararg.txt b/crates/ra_syntax/tests/data/parser/inline/ok/0123_param_list_vararg.txt
index 8bb9949ab..836e8e55b 100644
--- a/crates/ra_syntax/tests/data/parser/inline/ok/0123_param_list_vararg.txt
+++ b/crates/ra_syntax/tests/data/parser/inline/ok/0123_param_list_vararg.txt
@@ -1,49 +1,49 @@
1SOURCE_FILE@[0; 57) 1SOURCE_FILE@[0; 57)
2 EXTERN_BLOCK@[0; 56) 2 EXTERN_BLOCK@[0; 56)
3 ABI@[0; 10) 3 ABI@[0; 10)
4 EXTERN_KW@[0; 6) 4 EXTERN_KW@[0; 6) "extern"
5 WHITESPACE@[6; 7) 5 WHITESPACE@[6; 7) " "
6 STRING@[7; 10) 6 STRING@[7; 10) "\"C\""
7 WHITESPACE@[10; 11) 7 WHITESPACE@[10; 11) " "
8 EXTERN_ITEM_LIST@[11; 56) 8 EXTERN_ITEM_LIST@[11; 56)
9 L_CURLY@[11; 12) 9 L_CURLY@[11; 12) "{"
10 WHITESPACE@[12; 13) 10 WHITESPACE@[12; 13) " "
11 FN_DEF@[13; 54) 11 FN_DEF@[13; 54)
12 FN_KW@[13; 15) 12 FN_KW@[13; 15) "fn"
13 WHITESPACE@[15; 16) 13 WHITESPACE@[15; 16) " "
14 NAME@[16; 22) 14 NAME@[16; 22)
15 IDENT@[16; 22) "printf" 15 IDENT@[16; 22) "printf"
16 PARAM_LIST@[22; 46) 16 PARAM_LIST@[22; 46)
17 L_PAREN@[22; 23) 17 L_PAREN@[22; 23) "("
18 PARAM@[23; 40) 18 PARAM@[23; 40)
19 BIND_PAT@[23; 29) 19 BIND_PAT@[23; 29)
20 NAME@[23; 29) 20 NAME@[23; 29)
21 IDENT@[23; 29) "format" 21 IDENT@[23; 29) "format"
22 COLON@[29; 30) 22 COLON@[29; 30) ":"
23 WHITESPACE@[30; 31) 23 WHITESPACE@[30; 31) " "
24 POINTER_TYPE@[31; 40) 24 POINTER_TYPE@[31; 40)
25 STAR@[31; 32) 25 STAR@[31; 32) "*"
26 CONST_KW@[32; 37) 26 CONST_KW@[32; 37) "const"
27 WHITESPACE@[37; 38) 27 WHITESPACE@[37; 38) " "
28 PATH_TYPE@[38; 40) 28 PATH_TYPE@[38; 40)
29 PATH@[38; 40) 29 PATH@[38; 40)
30 PATH_SEGMENT@[38; 40) 30 PATH_SEGMENT@[38; 40)
31 NAME_REF@[38; 40) 31 NAME_REF@[38; 40)
32 IDENT@[38; 40) "i8" 32 IDENT@[38; 40) "i8"
33 COMMA@[40; 41) 33 COMMA@[40; 41) ","
34 WHITESPACE@[41; 42) 34 WHITESPACE@[41; 42) " "
35 DOTDOTDOT@[42; 45) 35 DOTDOTDOT@[42; 45) "..."
36 R_PAREN@[45; 46) 36 R_PAREN@[45; 46) ")"
37 WHITESPACE@[46; 47) 37 WHITESPACE@[46; 47) " "
38 RET_TYPE@[47; 53) 38 RET_TYPE@[47; 53)
39 THIN_ARROW@[47; 49) 39 THIN_ARROW@[47; 49) "->"
40 WHITESPACE@[49; 50) 40 WHITESPACE@[49; 50) " "
41 PATH_TYPE@[50; 53) 41 PATH_TYPE@[50; 53)
42 PATH@[50; 53) 42 PATH@[50; 53)
43 PATH_SEGMENT@[50; 53) 43 PATH_SEGMENT@[50; 53)
44 NAME_REF@[50; 53) 44 NAME_REF@[50; 53)
45 IDENT@[50; 53) "i32" 45 IDENT@[50; 53) "i32"
46 SEMI@[53; 54) 46 SEMI@[53; 54) ";"
47 WHITESPACE@[54; 55) 47 WHITESPACE@[54; 55) " "
48 R_CURLY@[55; 56) 48 R_CURLY@[55; 56) "}"
49 WHITESPACE@[56; 57) 49 WHITESPACE@[56; 57) "\n"
diff --git a/crates/ra_syntax/tests/data/parser/inline/ok/0124_async_fn.txt b/crates/ra_syntax/tests/data/parser/inline/ok/0124_async_fn.txt
index d1a706ecc..f0610e781 100644
--- a/crates/ra_syntax/tests/data/parser/inline/ok/0124_async_fn.txt
+++ b/crates/ra_syntax/tests/data/parser/inline/ok/0124_async_fn.txt
@@ -1,16 +1,16 @@
1SOURCE_FILE@[0; 18) 1SOURCE_FILE@[0; 18)
2 FN_DEF@[0; 17) 2 FN_DEF@[0; 17)
3 ASYNC_KW@[0; 5) 3 ASYNC_KW@[0; 5) "async"
4 WHITESPACE@[5; 6) 4 WHITESPACE@[5; 6) " "
5 FN_KW@[6; 8) 5 FN_KW@[6; 8) "fn"
6 WHITESPACE@[8; 9) 6 WHITESPACE@[8; 9) " "
7 NAME@[9; 12) 7 NAME@[9; 12)
8 IDENT@[9; 12) "foo" 8 IDENT@[9; 12) "foo"
9 PARAM_LIST@[12; 14) 9 PARAM_LIST@[12; 14)
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@[15; 17)
14 L_CURLY@[15; 16) 14 L_CURLY@[15; 16) "{"
15 R_CURLY@[16; 17) 15 R_CURLY@[16; 17) "}"
16 WHITESPACE@[17; 18) 16 WHITESPACE@[17; 18) "\n"
diff --git a/crates/ra_syntax/tests/data/parser/inline/ok/0125_crate_keyword_path.txt b/crates/ra_syntax/tests/data/parser/inline/ok/0125_crate_keyword_path.txt
index 7c637b079..4afe9c555 100644
--- a/crates/ra_syntax/tests/data/parser/inline/ok/0125_crate_keyword_path.txt
+++ b/crates/ra_syntax/tests/data/parser/inline/ok/0125_crate_keyword_path.txt
@@ -1,31 +1,31 @@
1SOURCE_FILE@[0; 27) 1SOURCE_FILE@[0; 27)
2 FN_DEF@[0; 26) 2 FN_DEF@[0; 26)
3 FN_KW@[0; 2) 3 FN_KW@[0; 2) "fn"
4 WHITESPACE@[2; 3) 4 WHITESPACE@[2; 3) " "
5 NAME@[3; 6) 5 NAME@[3; 6)
6 IDENT@[3; 6) "foo" 6 IDENT@[3; 6) "foo"
7 PARAM_LIST@[6; 8) 7 PARAM_LIST@[6; 8)
8 L_PAREN@[6; 7) 8 L_PAREN@[6; 7) "("
9 R_PAREN@[7; 8) 9 R_PAREN@[7; 8) ")"
10 WHITESPACE@[8; 9) 10 WHITESPACE@[8; 9) " "
11 BLOCK@[9; 26) 11 BLOCK@[9; 26)
12 L_CURLY@[9; 10) 12 L_CURLY@[9; 10) "{"
13 WHITESPACE@[10; 11) 13 WHITESPACE@[10; 11) " "
14 EXPR_STMT@[11; 24) 14 EXPR_STMT@[11; 24)
15 CALL_EXPR@[11; 23) 15 CALL_EXPR@[11; 23)
16 PATH_EXPR@[11; 21) 16 PATH_EXPR@[11; 21)
17 PATH@[11; 21) 17 PATH@[11; 21)
18 PATH@[11; 16) 18 PATH@[11; 16)
19 PATH_SEGMENT@[11; 16) 19 PATH_SEGMENT@[11; 16)
20 CRATE_KW@[11; 16) 20 CRATE_KW@[11; 16) "crate"
21 COLONCOLON@[16; 18) 21 COLONCOLON@[16; 18) "::"
22 PATH_SEGMENT@[18; 21) 22 PATH_SEGMENT@[18; 21)
23 NAME_REF@[18; 21) 23 NAME_REF@[18; 21)
24 IDENT@[18; 21) "foo" 24 IDENT@[18; 21) "foo"
25 ARG_LIST@[21; 23) 25 ARG_LIST@[21; 23)
26 L_PAREN@[21; 22) 26 L_PAREN@[21; 22) "("
27 R_PAREN@[22; 23) 27 R_PAREN@[22; 23) ")"
28 SEMI@[23; 24) 28 SEMI@[23; 24) ";"
29 WHITESPACE@[24; 25) 29 WHITESPACE@[24; 25) " "
30 R_CURLY@[25; 26) 30 R_CURLY@[25; 26) "}"
31 WHITESPACE@[26; 27) 31 WHITESPACE@[26; 27) "\n"
diff --git a/crates/ra_syntax/tests/data/parser/inline/ok/0125_struct_literal_field_with_attr.txt b/crates/ra_syntax/tests/data/parser/inline/ok/0125_struct_literal_field_with_attr.txt
index 34c80500a..f9c5ec124 100644
--- a/crates/ra_syntax/tests/data/parser/inline/ok/0125_struct_literal_field_with_attr.txt
+++ b/crates/ra_syntax/tests/data/parser/inline/ok/0125_struct_literal_field_with_attr.txt
@@ -1,45 +1,45 @@
1SOURCE_FILE@[0; 46) 1SOURCE_FILE@[0; 46)
2 FN_DEF@[0; 45) 2 FN_DEF@[0; 45)
3 FN_KW@[0; 2) 3 FN_KW@[0; 2) "fn"
4 WHITESPACE@[2; 3) 4 WHITESPACE@[2; 3) " "
5 NAME@[3; 7) 5 NAME@[3; 7)
6 IDENT@[3; 7) "main" 6 IDENT@[3; 7) "main"
7 PARAM_LIST@[7; 9) 7 PARAM_LIST@[7; 9)
8 L_PAREN@[7; 8) 8 L_PAREN@[7; 8) "("
9 R_PAREN@[8; 9) 9 R_PAREN@[8; 9) ")"
10 WHITESPACE@[9; 10) 10 WHITESPACE@[9; 10) " "
11 BLOCK@[10; 45) 11 BLOCK@[10; 45)
12 L_CURLY@[10; 11) 12 L_CURLY@[10; 11) "{"
13 WHITESPACE@[11; 16) 13 WHITESPACE@[11; 16) "\n "
14 STRUCT_LIT@[16; 43) 14 STRUCT_LIT@[16; 43)
15 PATH@[16; 17) 15 PATH@[16; 17)
16 PATH_SEGMENT@[16; 17) 16 PATH_SEGMENT@[16; 17)
17 NAME_REF@[16; 17) 17 NAME_REF@[16; 17)
18 IDENT@[16; 17) "S" 18 IDENT@[16; 17) "S"
19 WHITESPACE@[17; 18) 19 WHITESPACE@[17; 18) " "
20 NAMED_FIELD_LIST@[18; 43) 20 NAMED_FIELD_LIST@[18; 43)
21 L_CURLY@[18; 19) 21 L_CURLY@[18; 19) "{"
22 WHITESPACE@[19; 20) 22 WHITESPACE@[19; 20) " "
23 NAMED_FIELD@[20; 41) 23 NAMED_FIELD@[20; 41)
24 ATTR@[20; 32) 24 ATTR@[20; 32)
25 POUND@[20; 21) 25 POUND@[20; 21) "#"
26 TOKEN_TREE@[21; 32) 26 TOKEN_TREE@[21; 32)
27 L_BRACK@[21; 22) 27 L_BRACK@[21; 22) "["
28 IDENT@[22; 25) "cfg" 28 IDENT@[22; 25) "cfg"
29 TOKEN_TREE@[25; 31) 29 TOKEN_TREE@[25; 31)
30 L_PAREN@[25; 26) 30 L_PAREN@[25; 26) "("
31 IDENT@[26; 30) "test" 31 IDENT@[26; 30) "test"
32 R_PAREN@[30; 31) 32 R_PAREN@[30; 31) ")"
33 R_BRACK@[31; 32) 33 R_BRACK@[31; 32) "]"
34 WHITESPACE@[32; 33) 34 WHITESPACE@[32; 33) " "
35 NAME_REF@[33; 38) 35 NAME_REF@[33; 38)
36 IDENT@[33; 38) "field" 36 IDENT@[33; 38) "field"
37 COLON@[38; 39) 37 COLON@[38; 39) ":"
38 WHITESPACE@[39; 40) 38 WHITESPACE@[39; 40) " "
39 LITERAL@[40; 41) 39 LITERAL@[40; 41)
40 INT_NUMBER@[40; 41) "1" 40 INT_NUMBER@[40; 41) "1"
41 WHITESPACE@[41; 42) 41 WHITESPACE@[41; 42) " "
42 R_CURLY@[42; 43) 42 R_CURLY@[42; 43) "}"
43 WHITESPACE@[43; 44) 43 WHITESPACE@[43; 44) "\n"
44 R_CURLY@[44; 45) 44 R_CURLY@[44; 45) "}"
45 WHITESPACE@[45; 46) 45 WHITESPACE@[45; 46) "\n"
diff --git a/crates/ra_syntax/tests/data/parser/inline/ok/0126_attr_on_expr_stmt.txt b/crates/ra_syntax/tests/data/parser/inline/ok/0126_attr_on_expr_stmt.txt
index 7cd525cc7..c15c7573a 100644
--- a/crates/ra_syntax/tests/data/parser/inline/ok/0126_attr_on_expr_stmt.txt
+++ b/crates/ra_syntax/tests/data/parser/inline/ok/0126_attr_on_expr_stmt.txt
@@ -1,24 +1,24 @@
1SOURCE_FILE@[0; 82) 1SOURCE_FILE@[0; 82)
2 FN_DEF@[0; 81) 2 FN_DEF@[0; 81)
3 FN_KW@[0; 2) 3 FN_KW@[0; 2) "fn"
4 WHITESPACE@[2; 3) 4 WHITESPACE@[2; 3) " "
5 NAME@[3; 6) 5 NAME@[3; 6)
6 IDENT@[3; 6) "foo" 6 IDENT@[3; 6) "foo"
7 PARAM_LIST@[6; 8) 7 PARAM_LIST@[6; 8)
8 L_PAREN@[6; 7) 8 L_PAREN@[6; 7) "("
9 R_PAREN@[7; 8) 9 R_PAREN@[7; 8) ")"
10 WHITESPACE@[8; 9) 10 WHITESPACE@[8; 9) " "
11 BLOCK@[9; 81) 11 BLOCK@[9; 81)
12 L_CURLY@[9; 10) 12 L_CURLY@[9; 10) "{"
13 WHITESPACE@[10; 15) 13 WHITESPACE@[10; 15) "\n "
14 EXPR_STMT@[15; 26) 14 EXPR_STMT@[15; 26)
15 ATTR@[15; 19) 15 ATTR@[15; 19)
16 POUND@[15; 16) 16 POUND@[15; 16) "#"
17 TOKEN_TREE@[16; 19) 17 TOKEN_TREE@[16; 19)
18 L_BRACK@[16; 17) 18 L_BRACK@[16; 17) "["
19 IDENT@[17; 18) "A" 19 IDENT@[17; 18) "A"
20 R_BRACK@[18; 19) 20 R_BRACK@[18; 19) "]"
21 WHITESPACE@[19; 20) 21 WHITESPACE@[19; 20) " "
22 CALL_EXPR@[20; 25) 22 CALL_EXPR@[20; 25)
23 PATH_EXPR@[20; 23) 23 PATH_EXPR@[20; 23)
24 PATH@[20; 23) 24 PATH@[20; 23)
@@ -26,63 +26,63 @@ SOURCE_FILE@[0; 82)
26 NAME_REF@[20; 23) 26 NAME_REF@[20; 23)
27 IDENT@[20; 23) "foo" 27 IDENT@[20; 23) "foo"
28 ARG_LIST@[23; 25) 28 ARG_LIST@[23; 25)
29 L_PAREN@[23; 24) 29 L_PAREN@[23; 24) "("
30 R_PAREN@[24; 25) 30 R_PAREN@[24; 25) ")"
31 SEMI@[25; 26) 31 SEMI@[25; 26) ";"
32 WHITESPACE@[26; 31) 32 WHITESPACE@[26; 31) "\n "
33 EXPR_STMT@[31; 42) 33 EXPR_STMT@[31; 42)
34 ATTR@[31; 35) 34 ATTR@[31; 35)
35 POUND@[31; 32) 35 POUND@[31; 32) "#"
36 TOKEN_TREE@[32; 35) 36 TOKEN_TREE@[32; 35)
37 L_BRACK@[32; 33) 37 L_BRACK@[32; 33) "["
38 IDENT@[33; 34) "B" 38 IDENT@[33; 34) "B"
39 R_BRACK@[34; 35) 39 R_BRACK@[34; 35) "]"
40 WHITESPACE@[35; 36) 40 WHITESPACE@[35; 36) " "
41 MACRO_CALL@[36; 42) 41 MACRO_CALL@[36; 42)
42 PATH@[36; 39) 42 PATH@[36; 39)
43 PATH_SEGMENT@[36; 39) 43 PATH_SEGMENT@[36; 39)
44 NAME_REF@[36; 39) 44 NAME_REF@[36; 39)
45 IDENT@[36; 39) "bar" 45 IDENT@[36; 39) "bar"
46 EXCL@[39; 40) 46 EXCL@[39; 40) "!"
47 TOKEN_TREE@[40; 42) 47 TOKEN_TREE@[40; 42)
48 L_CURLY@[40; 41) 48 L_CURLY@[40; 41) "{"
49 R_CURLY@[41; 42) 49 R_CURLY@[41; 42) "}"
50 WHITESPACE@[42; 47) 50 WHITESPACE@[42; 47) "\n "
51 EXPR_STMT@[47; 59) 51 EXPR_STMT@[47; 59)
52 ATTR@[47; 51) 52 ATTR@[47; 51)
53 POUND@[47; 48) 53 POUND@[47; 48) "#"
54 TOKEN_TREE@[48; 51) 54 TOKEN_TREE@[48; 51)
55 L_BRACK@[48; 49) 55 L_BRACK@[48; 49) "["
56 IDENT@[49; 50) "C" 56 IDENT@[49; 50) "C"
57 R_BRACK@[50; 51) 57 R_BRACK@[50; 51) "]"
58 WHITESPACE@[51; 52) 58 WHITESPACE@[51; 52) " "
59 ATTR@[52; 56) 59 ATTR@[52; 56)
60 POUND@[52; 53) 60 POUND@[52; 53) "#"
61 TOKEN_TREE@[53; 56) 61 TOKEN_TREE@[53; 56)
62 L_BRACK@[53; 54) 62 L_BRACK@[53; 54) "["
63 IDENT@[54; 55) "D" 63 IDENT@[54; 55) "D"
64 R_BRACK@[55; 56) 64 R_BRACK@[55; 56) "]"
65 WHITESPACE@[56; 57) 65 WHITESPACE@[56; 57) " "
66 BLOCK_EXPR@[57; 59) 66 BLOCK_EXPR@[57; 59)
67 BLOCK@[57; 59) 67 BLOCK@[57; 59)
68 L_CURLY@[57; 58) 68 L_CURLY@[57; 58) "{"
69 R_CURLY@[58; 59) 69 R_CURLY@[58; 59) "}"
70 WHITESPACE@[59; 64) 70 WHITESPACE@[59; 64) "\n "
71 EXPR_STMT@[64; 79) 71 EXPR_STMT@[64; 79)
72 ATTR@[64; 68) 72 ATTR@[64; 68)
73 POUND@[64; 65) 73 POUND@[64; 65) "#"
74 TOKEN_TREE@[65; 68) 74 TOKEN_TREE@[65; 68)
75 L_BRACK@[65; 66) 75 L_BRACK@[65; 66) "["
76 IDENT@[66; 67) "D" 76 IDENT@[66; 67) "D"
77 R_BRACK@[67; 68) 77 R_BRACK@[67; 68) "]"
78 WHITESPACE@[68; 69) 78 WHITESPACE@[68; 69) " "
79 RETURN_EXPR@[69; 78) 79 RETURN_EXPR@[69; 78)
80 RETURN_KW@[69; 75) 80 RETURN_KW@[69; 75) "return"
81 WHITESPACE@[75; 76) 81 WHITESPACE@[75; 76) " "
82 TUPLE_EXPR@[76; 78) 82 TUPLE_EXPR@[76; 78)
83 L_PAREN@[76; 77) 83 L_PAREN@[76; 77) "("
84 R_PAREN@[77; 78) 84 R_PAREN@[77; 78) ")"
85 SEMI@[78; 79) 85 SEMI@[78; 79) ";"
86 WHITESPACE@[79; 80) 86 WHITESPACE@[79; 80) "\n"
87 R_CURLY@[80; 81) 87 R_CURLY@[80; 81) "}"
88 WHITESPACE@[81; 82) 88 WHITESPACE@[81; 82) "\n"
diff --git a/crates/ra_syntax/tests/data/parser/inline/ok/0127_attr_on_last_expr_in_block.txt b/crates/ra_syntax/tests/data/parser/inline/ok/0127_attr_on_last_expr_in_block.txt
index 4af64559c..62a6a7bc0 100644
--- a/crates/ra_syntax/tests/data/parser/inline/ok/0127_attr_on_last_expr_in_block.txt
+++ b/crates/ra_syntax/tests/data/parser/inline/ok/0127_attr_on_last_expr_in_block.txt
@@ -1,54 +1,54 @@
1SOURCE_FILE@[0; 47) 1SOURCE_FILE@[0; 47)
2 FN_DEF@[0; 46) 2 FN_DEF@[0; 46)
3 FN_KW@[0; 2) 3 FN_KW@[0; 2) "fn"
4 WHITESPACE@[2; 3) 4 WHITESPACE@[2; 3) " "
5 NAME@[3; 6) 5 NAME@[3; 6)
6 IDENT@[3; 6) "foo" 6 IDENT@[3; 6) "foo"
7 PARAM_LIST@[6; 8) 7 PARAM_LIST@[6; 8)
8 L_PAREN@[6; 7) 8 L_PAREN@[6; 7) "("
9 R_PAREN@[7; 8) 9 R_PAREN@[7; 8) ")"
10 WHITESPACE@[8; 9) 10 WHITESPACE@[8; 9) " "
11 BLOCK@[9; 46) 11 BLOCK@[9; 46)
12 L_CURLY@[9; 10) 12 L_CURLY@[9; 10) "{"
13 WHITESPACE@[10; 15) 13 WHITESPACE@[10; 15) "\n "
14 EXPR_STMT@[15; 31) 14 EXPR_STMT@[15; 31)
15 BLOCK_EXPR@[15; 31) 15 BLOCK_EXPR@[15; 31)
16 BLOCK@[15; 31) 16 BLOCK@[15; 31)
17 L_CURLY@[15; 16) 17 L_CURLY@[15; 16) "{"
18 WHITESPACE@[16; 17) 18 WHITESPACE@[16; 17) " "
19 TRY_EXPR@[17; 29) 19 TRY_EXPR@[17; 29)
20 ATTR@[17; 21) 20 ATTR@[17; 21)
21 POUND@[17; 18) 21 POUND@[17; 18) "#"
22 TOKEN_TREE@[18; 21) 22 TOKEN_TREE@[18; 21)
23 L_BRACK@[18; 19) 23 L_BRACK@[18; 19) "["
24 IDENT@[19; 20) "A" 24 IDENT@[19; 20) "A"
25 R_BRACK@[20; 21) 25 R_BRACK@[20; 21) "]"
26 WHITESPACE@[21; 22) 26 WHITESPACE@[21; 22) " "
27 MACRO_CALL@[22; 28) 27 MACRO_CALL@[22; 28)
28 PATH@[22; 25) 28 PATH@[22; 25)
29 PATH_SEGMENT@[22; 25) 29 PATH_SEGMENT@[22; 25)
30 NAME_REF@[22; 25) 30 NAME_REF@[22; 25)
31 IDENT@[22; 25) "bar" 31 IDENT@[22; 25) "bar"
32 EXCL@[25; 26) 32 EXCL@[25; 26) "!"
33 TOKEN_TREE@[26; 28) 33 TOKEN_TREE@[26; 28)
34 L_PAREN@[26; 27) 34 L_PAREN@[26; 27) "("
35 R_PAREN@[27; 28) 35 R_PAREN@[27; 28) ")"
36 QUESTION@[28; 29) 36 QUESTION@[28; 29) "?"
37 WHITESPACE@[29; 30) 37 WHITESPACE@[29; 30) " "
38 R_CURLY@[30; 31) 38 R_CURLY@[30; 31) "}"
39 WHITESPACE@[31; 36) 39 WHITESPACE@[31; 36) "\n "
40 REF_EXPR@[36; 44) 40 REF_EXPR@[36; 44)
41 ATTR@[36; 40) 41 ATTR@[36; 40)
42 POUND@[36; 37) 42 POUND@[36; 37) "#"
43 TOKEN_TREE@[37; 40) 43 TOKEN_TREE@[37; 40)
44 L_BRACK@[37; 38) 44 L_BRACK@[37; 38) "["
45 IDENT@[38; 39) "B" 45 IDENT@[38; 39) "B"
46 R_BRACK@[39; 40) 46 R_BRACK@[39; 40) "]"
47 WHITESPACE@[40; 41) 47 WHITESPACE@[40; 41) " "
48 AMP@[41; 42) 48 AMP@[41; 42) "&"
49 TUPLE_EXPR@[42; 44) 49 TUPLE_EXPR@[42; 44)
50 L_PAREN@[42; 43) 50 L_PAREN@[42; 43) "("
51 R_PAREN@[43; 44) 51 R_PAREN@[43; 44) ")"
52 WHITESPACE@[44; 45) 52 WHITESPACE@[44; 45) "\n"
53 R_CURLY@[45; 46) 53 R_CURLY@[45; 46) "}"
54 WHITESPACE@[46; 47) 54 WHITESPACE@[46; 47) "\n"
diff --git a/crates/ra_syntax/tests/data/parser/ok/0001_struct_item.txt b/crates/ra_syntax/tests/data/parser/ok/0001_struct_item.txt
index 12497e1a9..c6653cf25 100644
--- a/crates/ra_syntax/tests/data/parser/ok/0001_struct_item.txt
+++ b/crates/ra_syntax/tests/data/parser/ok/0001_struct_item.txt
@@ -1,37 +1,39 @@
1SOURCE_FILE@[0; 32) 1SOURCE_FILE@[0; 32)
2 STRUCT_DEF@[0; 31) 2 STRUCT_DEF@[0; 31)
3 STRUCT_KW@[0; 6) 3 STRUCT_KW@[0; 6) "struct"
4 WHITESPACE@[6; 7) 4 WHITESPACE@[6; 7) " "
5 NAME@[7; 8) 5 NAME@[7; 8)
6 IDENT@[7; 8) "S" 6 IDENT@[7; 8) "S"
7 TYPE_PARAM_LIST@[8; 17) 7 TYPE_PARAM_LIST@[8; 17)
8 L_ANGLE@[8; 9) 8 L_ANGLE@[8; 9) "<"
9 TYPE_PARAM@[9; 16) 9 TYPE_PARAM@[9; 16)
10 NAME@[9; 10) 10 NAME@[9; 10)
11 IDENT@[9; 10) "T" 11 IDENT@[9; 10) "T"
12 COLON@[10; 11) 12 COLON@[10; 11) ":"
13 WHITESPACE@[11; 12) 13 WHITESPACE@[11; 12) " "
14 PATH_TYPE@[12; 16) 14 TYPE_BOUND_LIST@[12; 16)
15 PATH@[12; 16) 15 TYPE_BOUND@[12; 16)
16 PATH_SEGMENT@[12; 16) 16 PATH_TYPE@[12; 16)
17 NAME_REF@[12; 16) 17 PATH@[12; 16)
18 IDENT@[12; 16) "Copy" 18 PATH_SEGMENT@[12; 16)
19 R_ANGLE@[16; 17) 19 NAME_REF@[12; 16)
20 WHITESPACE@[17; 18) 20 IDENT@[12; 16) "Copy"
21 R_ANGLE@[16; 17) ">"
22 WHITESPACE@[17; 18) " "
21 NAMED_FIELD_DEF_LIST@[18; 31) 23 NAMED_FIELD_DEF_LIST@[18; 31)
22 L_CURLY@[18; 19) 24 L_CURLY@[18; 19) "{"
23 WHITESPACE@[19; 24) 25 WHITESPACE@[19; 24) "\n "
24 NAMED_FIELD_DEF@[24; 28) 26 NAMED_FIELD_DEF@[24; 28)
25 NAME@[24; 25) 27 NAME@[24; 25)
26 IDENT@[24; 25) "f" 28 IDENT@[24; 25) "f"
27 COLON@[25; 26) 29 COLON@[25; 26) ":"
28 WHITESPACE@[26; 27) 30 WHITESPACE@[26; 27) " "
29 PATH_TYPE@[27; 28) 31 PATH_TYPE@[27; 28)
30 PATH@[27; 28) 32 PATH@[27; 28)
31 PATH_SEGMENT@[27; 28) 33 PATH_SEGMENT@[27; 28)
32 NAME_REF@[27; 28) 34 NAME_REF@[27; 28)
33 IDENT@[27; 28) "T" 35 IDENT@[27; 28) "T"
34 COMMA@[28; 29) 36 COMMA@[28; 29) ","
35 WHITESPACE@[29; 30) 37 WHITESPACE@[29; 30) "\n"
36 R_CURLY@[30; 31) 38 R_CURLY@[30; 31) "}"
37 WHITESPACE@[31; 32) 39 WHITESPACE@[31; 32) "\n"
diff --git a/crates/ra_syntax/tests/data/parser/ok/0002_struct_item_field.txt b/crates/ra_syntax/tests/data/parser/ok/0002_struct_item_field.txt
index 2f588c598..d0565ea83 100644
--- a/crates/ra_syntax/tests/data/parser/ok/0002_struct_item_field.txt
+++ b/crates/ra_syntax/tests/data/parser/ok/0002_struct_item_field.txt
@@ -1,22 +1,22 @@
1SOURCE_FILE@[0; 25) 1SOURCE_FILE@[0; 25)
2 STRUCT_DEF@[0; 25) 2 STRUCT_DEF@[0; 25)
3 STRUCT_KW@[0; 6) 3 STRUCT_KW@[0; 6) "struct"
4 WHITESPACE@[6; 7) 4 WHITESPACE@[6; 7) " "
5 NAME@[7; 8) 5 NAME@[7; 8)
6 IDENT@[7; 8) "S" 6 IDENT@[7; 8) "S"
7 WHITESPACE@[8; 9) 7 WHITESPACE@[8; 9) " "
8 NAMED_FIELD_DEF_LIST@[9; 25) 8 NAMED_FIELD_DEF_LIST@[9; 25)
9 L_CURLY@[9; 10) 9 L_CURLY@[9; 10) "{"
10 WHITESPACE@[10; 15) 10 WHITESPACE@[10; 15) "\n "
11 NAMED_FIELD_DEF@[15; 23) 11 NAMED_FIELD_DEF@[15; 23)
12 NAME@[15; 18) 12 NAME@[15; 18)
13 IDENT@[15; 18) "foo" 13 IDENT@[15; 18) "foo"
14 COLON@[18; 19) 14 COLON@[18; 19) ":"
15 WHITESPACE@[19; 20) 15 WHITESPACE@[19; 20) " "
16 PATH_TYPE@[20; 23) 16 PATH_TYPE@[20; 23)
17 PATH@[20; 23) 17 PATH@[20; 23)
18 PATH_SEGMENT@[20; 23) 18 PATH_SEGMENT@[20; 23)
19 NAME_REF@[20; 23) 19 NAME_REF@[20; 23)
20 IDENT@[20; 23) "u32" 20 IDENT@[20; 23) "u32"
21 WHITESPACE@[23; 24) 21 WHITESPACE@[23; 24) "\n"
22 R_CURLY@[24; 25) 22 R_CURLY@[24; 25) "}"
diff --git a/crates/ra_syntax/tests/data/parser/ok/0004_file_shebang.txt b/crates/ra_syntax/tests/data/parser/ok/0004_file_shebang.txt
index 31395ffc2..e3915c2df 100644
--- a/crates/ra_syntax/tests/data/parser/ok/0004_file_shebang.txt
+++ b/crates/ra_syntax/tests/data/parser/ok/0004_file_shebang.txt
@@ -1,2 +1,2 @@
1SOURCE_FILE@[0; 20) 1SOURCE_FILE@[0; 20)
2 SHEBANG@[0; 20) 2 SHEBANG@[0; 20) "#!/use/bin/env rusti"
diff --git a/crates/ra_syntax/tests/data/parser/ok/0005_fn_item.txt b/crates/ra_syntax/tests/data/parser/ok/0005_fn_item.txt
index c5eb46888..9b63a24e4 100644
--- a/crates/ra_syntax/tests/data/parser/ok/0005_fn_item.txt
+++ b/crates/ra_syntax/tests/data/parser/ok/0005_fn_item.txt
@@ -1,15 +1,15 @@
1SOURCE_FILE@[0; 13) 1SOURCE_FILE@[0; 13)
2 FN_DEF@[0; 12) 2 FN_DEF@[0; 12)
3 FN_KW@[0; 2) 3 FN_KW@[0; 2) "fn"
4 WHITESPACE@[2; 3) 4 WHITESPACE@[2; 3) " "
5 NAME@[3; 6) 5 NAME@[3; 6)
6 IDENT@[3; 6) "foo" 6 IDENT@[3; 6) "foo"
7 PARAM_LIST@[6; 8) 7 PARAM_LIST@[6; 8)
8 L_PAREN@[6; 7) 8 L_PAREN@[6; 7) "("
9 R_PAREN@[7; 8) 9 R_PAREN@[7; 8) ")"
10 WHITESPACE@[8; 9) 10 WHITESPACE@[8; 9) " "
11 BLOCK@[9; 12) 11 BLOCK@[9; 12)
12 L_CURLY@[9; 10) 12 L_CURLY@[9; 10) "{"
13 WHITESPACE@[10; 11) 13 WHITESPACE@[10; 11) "\n"
14 R_CURLY@[11; 12) 14 R_CURLY@[11; 12) "}"
15 WHITESPACE@[12; 13) 15 WHITESPACE@[12; 13) "\n"
diff --git a/crates/ra_syntax/tests/data/parser/ok/0006_inner_attributes.txt b/crates/ra_syntax/tests/data/parser/ok/0006_inner_attributes.txt
index 05b114b54..d8cabc9af 100644
--- a/crates/ra_syntax/tests/data/parser/ok/0006_inner_attributes.txt
+++ b/crates/ra_syntax/tests/data/parser/ok/0006_inner_attributes.txt
@@ -1,164 +1,164 @@
1SOURCE_FILE@[0; 236) 1SOURCE_FILE@[0; 236)
2 ATTR@[0; 8) 2 ATTR@[0; 8)
3 POUND@[0; 1) 3 POUND@[0; 1) "#"
4 EXCL@[1; 2) 4 EXCL@[1; 2) "!"
5 TOKEN_TREE@[2; 8) 5 TOKEN_TREE@[2; 8)
6 L_BRACK@[2; 3) 6 L_BRACK@[2; 3) "["
7 IDENT@[3; 7) "attr" 7 IDENT@[3; 7) "attr"
8 R_BRACK@[7; 8) 8 R_BRACK@[7; 8) "]"
9 WHITESPACE@[8; 9) 9 WHITESPACE@[8; 9) "\n"
10 ATTR@[9; 23) 10 ATTR@[9; 23)
11 POUND@[9; 10) 11 POUND@[9; 10) "#"
12 EXCL@[10; 11) 12 EXCL@[10; 11) "!"
13 TOKEN_TREE@[11; 23) 13 TOKEN_TREE@[11; 23)
14 L_BRACK@[11; 12) 14 L_BRACK@[11; 12) "["
15 IDENT@[12; 16) "attr" 15 IDENT@[12; 16) "attr"
16 TOKEN_TREE@[16; 22) 16 TOKEN_TREE@[16; 22)
17 L_PAREN@[16; 17) 17 L_PAREN@[16; 17) "("
18 TRUE_KW@[17; 21) 18 TRUE_KW@[17; 21) "true"
19 R_PAREN@[21; 22) 19 R_PAREN@[21; 22) ")"
20 R_BRACK@[22; 23) 20 R_BRACK@[22; 23) "]"
21 WHITESPACE@[23; 24) 21 WHITESPACE@[23; 24) "\n"
22 ATTR@[24; 39) 22 ATTR@[24; 39)
23 POUND@[24; 25) 23 POUND@[24; 25) "#"
24 EXCL@[25; 26) 24 EXCL@[25; 26) "!"
25 TOKEN_TREE@[26; 39) 25 TOKEN_TREE@[26; 39)
26 L_BRACK@[26; 27) 26 L_BRACK@[26; 27) "["
27 IDENT@[27; 31) "attr" 27 IDENT@[27; 31) "attr"
28 TOKEN_TREE@[31; 38) 28 TOKEN_TREE@[31; 38)
29 L_PAREN@[31; 32) 29 L_PAREN@[31; 32) "("
30 IDENT@[32; 37) "ident" 30 IDENT@[32; 37) "ident"
31 R_PAREN@[37; 38) 31 R_PAREN@[37; 38) ")"
32 R_BRACK@[38; 39) 32 R_BRACK@[38; 39) "]"
33 WHITESPACE@[39; 40) 33 WHITESPACE@[39; 40) "\n"
34 ATTR@[40; 116) 34 ATTR@[40; 116)
35 POUND@[40; 41) 35 POUND@[40; 41) "#"
36 EXCL@[41; 42) 36 EXCL@[41; 42) "!"
37 TOKEN_TREE@[42; 116) 37 TOKEN_TREE@[42; 116)
38 L_BRACK@[42; 43) 38 L_BRACK@[42; 43) "["
39 IDENT@[43; 47) "attr" 39 IDENT@[43; 47) "attr"
40 TOKEN_TREE@[47; 115) 40 TOKEN_TREE@[47; 115)
41 L_PAREN@[47; 48) 41 L_PAREN@[47; 48) "("
42 IDENT@[48; 53) "ident" 42 IDENT@[48; 53) "ident"
43 COMMA@[53; 54) 43 COMMA@[53; 54) ","
44 WHITESPACE@[54; 55) 44 WHITESPACE@[54; 55) " "
45 INT_NUMBER@[55; 58) "100" 45 INT_NUMBER@[55; 58) "100"
46 COMMA@[58; 59) 46 COMMA@[58; 59) ","
47 WHITESPACE@[59; 60) 47 WHITESPACE@[59; 60) " "
48 TRUE_KW@[60; 64) 48 TRUE_KW@[60; 64) "true"
49 COMMA@[64; 65) 49 COMMA@[64; 65) ","
50 WHITESPACE@[65; 66) 50 WHITESPACE@[65; 66) " "
51 STRING@[66; 72) 51 STRING@[66; 72) "\"true\""
52 COMMA@[72; 73) 52 COMMA@[72; 73) ","
53 WHITESPACE@[73; 74) 53 WHITESPACE@[73; 74) " "
54 IDENT@[74; 79) "ident" 54 IDENT@[74; 79) "ident"
55 WHITESPACE@[79; 80) 55 WHITESPACE@[79; 80) " "
56 EQ@[80; 81) 56 EQ@[80; 81) "="
57 WHITESPACE@[81; 82) 57 WHITESPACE@[81; 82) " "
58 INT_NUMBER@[82; 85) "100" 58 INT_NUMBER@[82; 85) "100"
59 COMMA@[85; 86) 59 COMMA@[85; 86) ","
60 WHITESPACE@[86; 87) 60 WHITESPACE@[86; 87) " "
61 IDENT@[87; 92) "ident" 61 IDENT@[87; 92) "ident"
62 WHITESPACE@[92; 93) 62 WHITESPACE@[92; 93) " "
63 EQ@[93; 94) 63 EQ@[93; 94) "="
64 WHITESPACE@[94; 95) 64 WHITESPACE@[94; 95) " "
65 STRING@[95; 102) 65 STRING@[95; 102) "\"hello\""
66 COMMA@[102; 103) 66 COMMA@[102; 103) ","
67 WHITESPACE@[103; 104) 67 WHITESPACE@[103; 104) " "
68 IDENT@[104; 109) "ident" 68 IDENT@[104; 109) "ident"
69 TOKEN_TREE@[109; 114) 69 TOKEN_TREE@[109; 114)
70 L_PAREN@[109; 110) 70 L_PAREN@[109; 110) "("
71 INT_NUMBER@[110; 113) "100" 71 INT_NUMBER@[110; 113) "100"
72 R_PAREN@[113; 114) 72 R_PAREN@[113; 114) ")"
73 R_PAREN@[114; 115) 73 R_PAREN@[114; 115) ")"
74 R_BRACK@[115; 116) 74 R_BRACK@[115; 116) "]"
75 WHITESPACE@[116; 117) 75 WHITESPACE@[116; 117) "\n"
76 ATTR@[117; 130) 76 ATTR@[117; 130)
77 POUND@[117; 118) 77 POUND@[117; 118) "#"
78 EXCL@[118; 119) 78 EXCL@[118; 119) "!"
79 TOKEN_TREE@[119; 130) 79 TOKEN_TREE@[119; 130)
80 L_BRACK@[119; 120) 80 L_BRACK@[119; 120) "["
81 IDENT@[120; 124) "attr" 81 IDENT@[120; 124) "attr"
82 TOKEN_TREE@[124; 129) 82 TOKEN_TREE@[124; 129)
83 L_PAREN@[124; 125) 83 L_PAREN@[124; 125) "("
84 INT_NUMBER@[125; 128) "100" 84 INT_NUMBER@[125; 128) "100"
85 R_PAREN@[128; 129) 85 R_PAREN@[128; 129) ")"
86 R_BRACK@[129; 130) 86 R_BRACK@[129; 130) "]"
87 WHITESPACE@[130; 131) 87 WHITESPACE@[130; 131) "\n"
88 ATTR@[131; 155) 88 ATTR@[131; 155)
89 POUND@[131; 132) 89 POUND@[131; 132) "#"
90 EXCL@[132; 133) 90 EXCL@[132; 133) "!"
91 TOKEN_TREE@[133; 155) 91 TOKEN_TREE@[133; 155)
92 L_BRACK@[133; 134) 92 L_BRACK@[133; 134) "["
93 IDENT@[134; 138) "attr" 93 IDENT@[134; 138) "attr"
94 TOKEN_TREE@[138; 154) 94 TOKEN_TREE@[138; 154)
95 L_PAREN@[138; 139) 95 L_PAREN@[138; 139) "("
96 IDENT@[139; 146) "enabled" 96 IDENT@[139; 146) "enabled"
97 WHITESPACE@[146; 147) 97 WHITESPACE@[146; 147) " "
98 EQ@[147; 148) 98 EQ@[147; 148) "="
99 WHITESPACE@[148; 149) 99 WHITESPACE@[148; 149) " "
100 TRUE_KW@[149; 153) 100 TRUE_KW@[149; 153) "true"
101 R_PAREN@[153; 154) 101 R_PAREN@[153; 154) ")"
102 R_BRACK@[154; 155) 102 R_BRACK@[154; 155) "]"
103 WHITESPACE@[155; 156) 103 WHITESPACE@[155; 156) "\n"
104 ATTR@[156; 173) 104 ATTR@[156; 173)
105 POUND@[156; 157) 105 POUND@[156; 157) "#"
106 EXCL@[157; 158) 106 EXCL@[157; 158) "!"
107 TOKEN_TREE@[158; 173) 107 TOKEN_TREE@[158; 173)
108 L_BRACK@[158; 159) 108 L_BRACK@[158; 159) "["
109 IDENT@[159; 166) "enabled" 109 IDENT@[159; 166) "enabled"
110 TOKEN_TREE@[166; 172) 110 TOKEN_TREE@[166; 172)
111 L_PAREN@[166; 167) 111 L_PAREN@[166; 167) "("
112 TRUE_KW@[167; 171) 112 TRUE_KW@[167; 171) "true"
113 R_PAREN@[171; 172) 113 R_PAREN@[171; 172) ")"
114 R_BRACK@[172; 173) 114 R_BRACK@[172; 173) "]"
115 WHITESPACE@[173; 174) 115 WHITESPACE@[173; 174) "\n"
116 ATTR@[174; 191) 116 ATTR@[174; 191)
117 POUND@[174; 175) 117 POUND@[174; 175) "#"
118 EXCL@[175; 176) 118 EXCL@[175; 176) "!"
119 TOKEN_TREE@[176; 191) 119 TOKEN_TREE@[176; 191)
120 L_BRACK@[176; 177) 120 L_BRACK@[176; 177) "["
121 IDENT@[177; 181) "attr" 121 IDENT@[177; 181) "attr"
122 TOKEN_TREE@[181; 190) 122 TOKEN_TREE@[181; 190)
123 L_PAREN@[181; 182) 123 L_PAREN@[181; 182) "("
124 STRING@[182; 189) 124 STRING@[182; 189) "\"hello\""
125 R_PAREN@[189; 190) 125 R_PAREN@[189; 190) ")"
126 R_BRACK@[190; 191) 126 R_BRACK@[190; 191) "]"
127 WHITESPACE@[191; 192) 127 WHITESPACE@[191; 192) "\n"
128 ATTR@[192; 214) 128 ATTR@[192; 214)
129 POUND@[192; 193) 129 POUND@[192; 193) "#"
130 EXCL@[193; 194) 130 EXCL@[193; 194) "!"
131 TOKEN_TREE@[194; 214) 131 TOKEN_TREE@[194; 214)
132 L_BRACK@[194; 195) 132 L_BRACK@[194; 195) "["
133 IDENT@[195; 199) "repr" 133 IDENT@[195; 199) "repr"
134 TOKEN_TREE@[199; 213) 134 TOKEN_TREE@[199; 213)
135 L_PAREN@[199; 200) 135 L_PAREN@[199; 200) "("
136 IDENT@[200; 201) "C" 136 IDENT@[200; 201) "C"
137 COMMA@[201; 202) 137 COMMA@[201; 202) ","
138 WHITESPACE@[202; 203) 138 WHITESPACE@[202; 203) " "
139 IDENT@[203; 208) "align" 139 IDENT@[203; 208) "align"
140 WHITESPACE@[208; 209) 140 WHITESPACE@[208; 209) " "
141 EQ@[209; 210) 141 EQ@[209; 210) "="
142 WHITESPACE@[210; 211) 142 WHITESPACE@[210; 211) " "
143 INT_NUMBER@[211; 212) "4" 143 INT_NUMBER@[211; 212) "4"
144 R_PAREN@[212; 213) 144 R_PAREN@[212; 213) ")"
145 R_BRACK@[213; 214) 145 R_BRACK@[213; 214) "]"
146 WHITESPACE@[214; 215) 146 WHITESPACE@[214; 215) "\n"
147 ATTR@[215; 236) 147 ATTR@[215; 236)
148 POUND@[215; 216) 148 POUND@[215; 216) "#"
149 EXCL@[216; 217) 149 EXCL@[216; 217) "!"
150 TOKEN_TREE@[217; 236) 150 TOKEN_TREE@[217; 236)
151 L_BRACK@[217; 218) 151 L_BRACK@[217; 218) "["
152 IDENT@[218; 222) "repr" 152 IDENT@[218; 222) "repr"
153 TOKEN_TREE@[222; 235) 153 TOKEN_TREE@[222; 235)
154 L_PAREN@[222; 223) 154 L_PAREN@[222; 223) "("
155 IDENT@[223; 224) "C" 155 IDENT@[223; 224) "C"
156 COMMA@[224; 225) 156 COMMA@[224; 225) ","
157 WHITESPACE@[225; 226) 157 WHITESPACE@[225; 226) " "
158 IDENT@[226; 231) "align" 158 IDENT@[226; 231) "align"
159 TOKEN_TREE@[231; 234) 159 TOKEN_TREE@[231; 234)
160 L_PAREN@[231; 232) 160 L_PAREN@[231; 232) "("
161 INT_NUMBER@[232; 233) "4" 161 INT_NUMBER@[232; 233) "4"
162 R_PAREN@[233; 234) 162 R_PAREN@[233; 234) ")"
163 R_PAREN@[234; 235) 163 R_PAREN@[234; 235) ")"
164 R_BRACK@[235; 236) 164 R_BRACK@[235; 236) "]"
diff --git a/crates/ra_syntax/tests/data/parser/ok/0007_extern_crate.txt b/crates/ra_syntax/tests/data/parser/ok/0007_extern_crate.txt
index 0176260c1..1ffa36c7e 100644
--- a/crates/ra_syntax/tests/data/parser/ok/0007_extern_crate.txt
+++ b/crates/ra_syntax/tests/data/parser/ok/0007_extern_crate.txt
@@ -1,40 +1,40 @@
1SOURCE_FILE@[0; 69) 1SOURCE_FILE@[0; 69)
2 EXTERN_CRATE_ITEM@[0; 17) 2 EXTERN_CRATE_ITEM@[0; 17)
3 EXTERN_KW@[0; 6) 3 EXTERN_KW@[0; 6) "extern"
4 WHITESPACE@[6; 7) 4 WHITESPACE@[6; 7) " "
5 CRATE_KW@[7; 12) 5 CRATE_KW@[7; 12) "crate"
6 WHITESPACE@[12; 13) 6 WHITESPACE@[12; 13) " "
7 NAME_REF@[13; 16) 7 NAME_REF@[13; 16)
8 IDENT@[13; 16) "foo" 8 IDENT@[13; 16) "foo"
9 SEMI@[16; 17) 9 SEMI@[16; 17) ";"
10 WHITESPACE@[17; 18) 10 WHITESPACE@[17; 18) "\n"
11 EXTERN_CRATE_ITEM@[18; 42) 11 EXTERN_CRATE_ITEM@[18; 42)
12 EXTERN_KW@[18; 24) 12 EXTERN_KW@[18; 24) "extern"
13 WHITESPACE@[24; 25) 13 WHITESPACE@[24; 25) " "
14 CRATE_KW@[25; 30) 14 CRATE_KW@[25; 30) "crate"
15 WHITESPACE@[30; 31) 15 WHITESPACE@[30; 31) " "
16 NAME_REF@[31; 34) 16 NAME_REF@[31; 34)
17 IDENT@[31; 34) "foo" 17 IDENT@[31; 34) "foo"
18 WHITESPACE@[34; 35) 18 WHITESPACE@[34; 35) " "
19 ALIAS@[35; 41) 19 ALIAS@[35; 41)
20 AS_KW@[35; 37) 20 AS_KW@[35; 37) "as"
21 WHITESPACE@[37; 38) 21 WHITESPACE@[37; 38) " "
22 NAME@[38; 41) 22 NAME@[38; 41)
23 IDENT@[38; 41) "bar" 23 IDENT@[38; 41) "bar"
24 SEMI@[41; 42) 24 SEMI@[41; 42) ";"
25 WHITESPACE@[42; 43) 25 WHITESPACE@[42; 43) "\n"
26 EXTERN_CRATE_ITEM@[43; 68) 26 EXTERN_CRATE_ITEM@[43; 68)
27 EXTERN_KW@[43; 49) 27 EXTERN_KW@[43; 49) "extern"
28 WHITESPACE@[49; 50) 28 WHITESPACE@[49; 50) " "
29 CRATE_KW@[50; 55) 29 CRATE_KW@[50; 55) "crate"
30 WHITESPACE@[55; 56) 30 WHITESPACE@[55; 56) " "
31 SELF_KW@[56; 60) 31 SELF_KW@[56; 60)
32 SELF_KW@[56; 60) 32 SELF_KW@[56; 60) "self"
33 WHITESPACE@[60; 61) 33 WHITESPACE@[60; 61) " "
34 ALIAS@[61; 67) 34 ALIAS@[61; 67)
35 AS_KW@[61; 63) 35 AS_KW@[61; 63) "as"
36 WHITESPACE@[63; 64) 36 WHITESPACE@[63; 64) " "
37 NAME@[64; 67) 37 NAME@[64; 67)
38 IDENT@[64; 67) "baz" 38 IDENT@[64; 67) "baz"
39 SEMI@[67; 68) 39 SEMI@[67; 68) ";"
40 WHITESPACE@[68; 69) 40 WHITESPACE@[68; 69) "\n"
diff --git a/crates/ra_syntax/tests/data/parser/ok/0008_mod_item.txt b/crates/ra_syntax/tests/data/parser/ok/0008_mod_item.txt
index 139349fed..9152d6eb6 100644
--- a/crates/ra_syntax/tests/data/parser/ok/0008_mod_item.txt
+++ b/crates/ra_syntax/tests/data/parser/ok/0008_mod_item.txt
@@ -1,90 +1,90 @@
1SOURCE_FILE@[0; 118) 1SOURCE_FILE@[0; 118)
2 MODULE@[0; 6) 2 MODULE@[0; 6)
3 MOD_KW@[0; 3) 3 MOD_KW@[0; 3) "mod"
4 WHITESPACE@[3; 4) 4 WHITESPACE@[3; 4) " "
5 NAME@[4; 5) 5 NAME@[4; 5)
6 IDENT@[4; 5) "a" 6 IDENT@[4; 5) "a"
7 SEMI@[5; 6) 7 SEMI@[5; 6) ";"
8 WHITESPACE@[6; 8) 8 WHITESPACE@[6; 8) "\n\n"
9 MODULE@[8; 17) 9 MODULE@[8; 17)
10 MOD_KW@[8; 11) 10 MOD_KW@[8; 11) "mod"
11 WHITESPACE@[11; 12) 11 WHITESPACE@[11; 12) " "
12 NAME@[12; 13) 12 NAME@[12; 13)
13 IDENT@[12; 13) "b" 13 IDENT@[12; 13) "b"
14 WHITESPACE@[13; 14) 14 WHITESPACE@[13; 14) " "
15 ITEM_LIST@[14; 17) 15 ITEM_LIST@[14; 17)
16 L_CURLY@[14; 15) 16 L_CURLY@[14; 15) "{"
17 WHITESPACE@[15; 16) 17 WHITESPACE@[15; 16) "\n"
18 R_CURLY@[16; 17) 18 R_CURLY@[16; 17) "}"
19 WHITESPACE@[17; 19) 19 WHITESPACE@[17; 19) "\n\n"
20 MODULE@[19; 65) 20 MODULE@[19; 65)
21 MOD_KW@[19; 22) 21 MOD_KW@[19; 22) "mod"
22 WHITESPACE@[22; 23) 22 WHITESPACE@[22; 23) " "
23 NAME@[23; 24) 23 NAME@[23; 24)
24 IDENT@[23; 24) "c" 24 IDENT@[23; 24) "c"
25 WHITESPACE@[24; 25) 25 WHITESPACE@[24; 25) " "
26 ITEM_LIST@[25; 65) 26 ITEM_LIST@[25; 65)
27 L_CURLY@[25; 26) 27 L_CURLY@[25; 26) "{"
28 WHITESPACE@[26; 31) 28 WHITESPACE@[26; 31) "\n "
29 FN_DEF@[31; 47) 29 FN_DEF@[31; 47)
30 FN_KW@[31; 33) 30 FN_KW@[31; 33) "fn"
31 WHITESPACE@[33; 34) 31 WHITESPACE@[33; 34) " "
32 NAME@[34; 37) 32 NAME@[34; 37)
33 IDENT@[34; 37) "foo" 33 IDENT@[34; 37) "foo"
34 PARAM_LIST@[37; 39) 34 PARAM_LIST@[37; 39)
35 L_PAREN@[37; 38) 35 L_PAREN@[37; 38) "("
36 R_PAREN@[38; 39) 36 R_PAREN@[38; 39) ")"
37 WHITESPACE@[39; 40) 37 WHITESPACE@[39; 40) " "
38 BLOCK@[40; 47) 38 BLOCK@[40; 47)
39 L_CURLY@[40; 41) 39 L_CURLY@[40; 41) "{"
40 WHITESPACE@[41; 46) 40 WHITESPACE@[41; 46) "\n "
41 R_CURLY@[46; 47) 41 R_CURLY@[46; 47) "}"
42 WHITESPACE@[47; 52) 42 WHITESPACE@[47; 52) "\n "
43 STRUCT_DEF@[52; 63) 43 STRUCT_DEF@[52; 63)
44 STRUCT_KW@[52; 58) 44 STRUCT_KW@[52; 58) "struct"
45 WHITESPACE@[58; 59) 45 WHITESPACE@[58; 59) " "
46 NAME@[59; 60) 46 NAME@[59; 60)
47 IDENT@[59; 60) "S" 47 IDENT@[59; 60) "S"
48 WHITESPACE@[60; 61) 48 WHITESPACE@[60; 61) " "
49 NAMED_FIELD_DEF_LIST@[61; 63) 49 NAMED_FIELD_DEF_LIST@[61; 63)
50 L_CURLY@[61; 62) 50 L_CURLY@[61; 62) "{"
51 R_CURLY@[62; 63) 51 R_CURLY@[62; 63) "}"
52 WHITESPACE@[63; 64) 52 WHITESPACE@[63; 64) "\n"
53 R_CURLY@[64; 65) 53 R_CURLY@[64; 65) "}"
54 WHITESPACE@[65; 67) 54 WHITESPACE@[65; 67) "\n\n"
55 MODULE@[67; 118) 55 MODULE@[67; 118)
56 MOD_KW@[67; 70) 56 MOD_KW@[67; 70) "mod"
57 WHITESPACE@[70; 71) 57 WHITESPACE@[70; 71) " "
58 NAME@[71; 72) 58 NAME@[71; 72)
59 IDENT@[71; 72) "d" 59 IDENT@[71; 72) "d"
60 WHITESPACE@[72; 73) 60 WHITESPACE@[72; 73) " "
61 ITEM_LIST@[73; 118) 61 ITEM_LIST@[73; 118)
62 L_CURLY@[73; 74) 62 L_CURLY@[73; 74) "{"
63 WHITESPACE@[74; 79) 63 WHITESPACE@[74; 79) "\n "
64 ATTR@[79; 87) 64 ATTR@[79; 87)
65 POUND@[79; 80) 65 POUND@[79; 80) "#"
66 EXCL@[80; 81) 66 EXCL@[80; 81) "!"
67 TOKEN_TREE@[81; 87) 67 TOKEN_TREE@[81; 87)
68 L_BRACK@[81; 82) 68 L_BRACK@[81; 82) "["
69 IDENT@[82; 86) "attr" 69 IDENT@[82; 86) "attr"
70 R_BRACK@[86; 87) 70 R_BRACK@[86; 87) "]"
71 WHITESPACE@[87; 92) 71 WHITESPACE@[87; 92) "\n "
72 MODULE@[92; 98) 72 MODULE@[92; 98)
73 MOD_KW@[92; 95) 73 MOD_KW@[92; 95) "mod"
74 WHITESPACE@[95; 96) 74 WHITESPACE@[95; 96) " "
75 NAME@[96; 97) 75 NAME@[96; 97)
76 IDENT@[96; 97) "e" 76 IDENT@[96; 97) "e"
77 SEMI@[97; 98) 77 SEMI@[97; 98) ";"
78 WHITESPACE@[98; 103) 78 WHITESPACE@[98; 103) "\n "
79 MODULE@[103; 116) 79 MODULE@[103; 116)
80 MOD_KW@[103; 106) 80 MOD_KW@[103; 106) "mod"
81 WHITESPACE@[106; 107) 81 WHITESPACE@[106; 107) " "
82 NAME@[107; 108) 82 NAME@[107; 108)
83 IDENT@[107; 108) "f" 83 IDENT@[107; 108) "f"
84 WHITESPACE@[108; 109) 84 WHITESPACE@[108; 109) " "
85 ITEM_LIST@[109; 116) 85 ITEM_LIST@[109; 116)
86 L_CURLY@[109; 110) 86 L_CURLY@[109; 110) "{"
87 WHITESPACE@[110; 115) 87 WHITESPACE@[110; 115) "\n "
88 R_CURLY@[115; 116) 88 R_CURLY@[115; 116) "}"
89 WHITESPACE@[116; 117) 89 WHITESPACE@[116; 117) "\n"
90 R_CURLY@[117; 118) 90 R_CURLY@[117; 118) "}"
diff --git a/crates/ra_syntax/tests/data/parser/ok/0009_use_item.txt b/crates/ra_syntax/tests/data/parser/ok/0009_use_item.txt
index 9e67d176a..41db9dbb7 100644
--- a/crates/ra_syntax/tests/data/parser/ok/0009_use_item.txt
+++ b/crates/ra_syntax/tests/data/parser/ok/0009_use_item.txt
@@ -1,21 +1,21 @@
1SOURCE_FILE@[0; 19) 1SOURCE_FILE@[0; 19)
2 USE_ITEM@[0; 8) 2 USE_ITEM@[0; 8)
3 USE_KW@[0; 3) 3 USE_KW@[0; 3) "use"
4 WHITESPACE@[3; 4) 4 WHITESPACE@[3; 4) " "
5 USE_TREE@[4; 7) 5 USE_TREE@[4; 7)
6 PATH@[4; 7) 6 PATH@[4; 7)
7 PATH_SEGMENT@[4; 7) 7 PATH_SEGMENT@[4; 7)
8 NAME_REF@[4; 7) 8 NAME_REF@[4; 7)
9 IDENT@[4; 7) "foo" 9 IDENT@[4; 7) "foo"
10 SEMI@[7; 8) 10 SEMI@[7; 8) ";"
11 WHITESPACE@[8; 9) 11 WHITESPACE@[8; 9) "\n"
12 USE_ITEM@[9; 19) 12 USE_ITEM@[9; 19)
13 USE_KW@[9; 12) 13 USE_KW@[9; 12) "use"
14 WHITESPACE@[12; 13) 14 WHITESPACE@[12; 13) " "
15 USE_TREE@[13; 18) 15 USE_TREE@[13; 18)
16 PATH@[13; 18) 16 PATH@[13; 18)
17 PATH_SEGMENT@[13; 18) 17 PATH_SEGMENT@[13; 18)
18 COLONCOLON@[13; 15) 18 COLONCOLON@[13; 15) "::"
19 NAME_REF@[15; 18) 19 NAME_REF@[15; 18)
20 IDENT@[15; 18) "bar" 20 IDENT@[15; 18) "bar"
21 SEMI@[18; 19) 21 SEMI@[18; 19) ";"
diff --git a/crates/ra_syntax/tests/data/parser/ok/0010_use_path_segments.txt b/crates/ra_syntax/tests/data/parser/ok/0010_use_path_segments.txt
index d0d2c17ed..09871b84d 100644
--- a/crates/ra_syntax/tests/data/parser/ok/0010_use_path_segments.txt
+++ b/crates/ra_syntax/tests/data/parser/ok/0010_use_path_segments.txt
@@ -1,28 +1,28 @@
1SOURCE_FILE@[0; 40) 1SOURCE_FILE@[0; 40)
2 USE_ITEM@[0; 20) 2 USE_ITEM@[0; 20)
3 USE_KW@[0; 3) 3 USE_KW@[0; 3) "use"
4 WHITESPACE@[3; 4) 4 WHITESPACE@[3; 4) " "
5 USE_TREE@[4; 19) 5 USE_TREE@[4; 19)
6 PATH@[4; 19) 6 PATH@[4; 19)
7 PATH@[4; 14) 7 PATH@[4; 14)
8 PATH@[4; 9) 8 PATH@[4; 9)
9 PATH_SEGMENT@[4; 9) 9 PATH_SEGMENT@[4; 9)
10 COLONCOLON@[4; 6) 10 COLONCOLON@[4; 6) "::"
11 NAME_REF@[6; 9) 11 NAME_REF@[6; 9)
12 IDENT@[6; 9) "foo" 12 IDENT@[6; 9) "foo"
13 COLONCOLON@[9; 11) 13 COLONCOLON@[9; 11) "::"
14 PATH_SEGMENT@[11; 14) 14 PATH_SEGMENT@[11; 14)
15 NAME_REF@[11; 14) 15 NAME_REF@[11; 14)
16 IDENT@[11; 14) "bar" 16 IDENT@[11; 14) "bar"
17 COLONCOLON@[14; 16) 17 COLONCOLON@[14; 16) "::"
18 PATH_SEGMENT@[16; 19) 18 PATH_SEGMENT@[16; 19)
19 NAME_REF@[16; 19) 19 NAME_REF@[16; 19)
20 IDENT@[16; 19) "baz" 20 IDENT@[16; 19) "baz"
21 SEMI@[19; 20) 21 SEMI@[19; 20) ";"
22 WHITESPACE@[20; 21) 22 WHITESPACE@[20; 21) "\n"
23 USE_ITEM@[21; 39) 23 USE_ITEM@[21; 39)
24 USE_KW@[21; 24) 24 USE_KW@[21; 24) "use"
25 WHITESPACE@[24; 25) 25 WHITESPACE@[24; 25) " "
26 USE_TREE@[25; 38) 26 USE_TREE@[25; 38)
27 PATH@[25; 38) 27 PATH@[25; 38)
28 PATH@[25; 33) 28 PATH@[25; 33)
@@ -30,13 +30,13 @@ SOURCE_FILE@[0; 40)
30 PATH_SEGMENT@[25; 28) 30 PATH_SEGMENT@[25; 28)
31 NAME_REF@[25; 28) 31 NAME_REF@[25; 28)
32 IDENT@[25; 28) "foo" 32 IDENT@[25; 28) "foo"
33 COLONCOLON@[28; 30) 33 COLONCOLON@[28; 30) "::"
34 PATH_SEGMENT@[30; 33) 34 PATH_SEGMENT@[30; 33)
35 NAME_REF@[30; 33) 35 NAME_REF@[30; 33)
36 IDENT@[30; 33) "bar" 36 IDENT@[30; 33) "bar"
37 COLONCOLON@[33; 35) 37 COLONCOLON@[33; 35) "::"
38 PATH_SEGMENT@[35; 38) 38 PATH_SEGMENT@[35; 38)
39 NAME_REF@[35; 38) 39 NAME_REF@[35; 38)
40 IDENT@[35; 38) "baz" 40 IDENT@[35; 38) "baz"
41 SEMI@[38; 39) 41 SEMI@[38; 39) ";"
42 WHITESPACE@[39; 40) 42 WHITESPACE@[39; 40) "\n"
diff --git a/crates/ra_syntax/tests/data/parser/ok/0011_outer_attribute.txt b/crates/ra_syntax/tests/data/parser/ok/0011_outer_attribute.txt
index 0f5f37474..2a0dc7bad 100644
--- a/crates/ra_syntax/tests/data/parser/ok/0011_outer_attribute.txt
+++ b/crates/ra_syntax/tests/data/parser/ok/0011_outer_attribute.txt
@@ -1,32 +1,32 @@
1SOURCE_FILE@[0; 35) 1SOURCE_FILE@[0; 35)
2 FN_DEF@[0; 34) 2 FN_DEF@[0; 34)
3 ATTR@[0; 12) 3 ATTR@[0; 12)
4 POUND@[0; 1) 4 POUND@[0; 1) "#"
5 TOKEN_TREE@[1; 12) 5 TOKEN_TREE@[1; 12)
6 L_BRACK@[1; 2) 6 L_BRACK@[1; 2) "["
7 IDENT@[2; 5) "cfg" 7 IDENT@[2; 5) "cfg"
8 TOKEN_TREE@[5; 11) 8 TOKEN_TREE@[5; 11)
9 L_PAREN@[5; 6) 9 L_PAREN@[5; 6) "("
10 IDENT@[6; 10) "test" 10 IDENT@[6; 10) "test"
11 R_PAREN@[10; 11) 11 R_PAREN@[10; 11) ")"
12 R_BRACK@[11; 12) 12 R_BRACK@[11; 12) "]"
13 WHITESPACE@[12; 13) 13 WHITESPACE@[12; 13) "\n"
14 ATTR@[13; 22) 14 ATTR@[13; 22)
15 POUND@[13; 14) 15 POUND@[13; 14) "#"
16 TOKEN_TREE@[14; 22) 16 TOKEN_TREE@[14; 22)
17 L_BRACK@[14; 15) 17 L_BRACK@[14; 15) "["
18 IDENT@[15; 21) "ignore" 18 IDENT@[15; 21) "ignore"
19 R_BRACK@[21; 22) 19 R_BRACK@[21; 22) "]"
20 WHITESPACE@[22; 23) 20 WHITESPACE@[22; 23) "\n"
21 FN_KW@[23; 25) 21 FN_KW@[23; 25) "fn"
22 WHITESPACE@[25; 26) 22 WHITESPACE@[25; 26) " "
23 NAME@[26; 29) 23 NAME@[26; 29)
24 IDENT@[26; 29) "foo" 24 IDENT@[26; 29) "foo"
25 PARAM_LIST@[29; 31) 25 PARAM_LIST@[29; 31)
26 L_PAREN@[29; 30) 26 L_PAREN@[29; 30) "("
27 R_PAREN@[30; 31) 27 R_PAREN@[30; 31) ")"
28 WHITESPACE@[31; 32) 28 WHITESPACE@[31; 32) " "
29 BLOCK@[32; 34) 29 BLOCK@[32; 34)
30 L_CURLY@[32; 33) 30 L_CURLY@[32; 33) "{"
31 R_CURLY@[33; 34) 31 R_CURLY@[33; 34) "}"
32 WHITESPACE@[34; 35) 32 WHITESPACE@[34; 35) "\n"
diff --git a/crates/ra_syntax/tests/data/parser/ok/0012_visibility.txt b/crates/ra_syntax/tests/data/parser/ok/0012_visibility.txt
index 15f547d29..c9d038c19 100644
--- a/crates/ra_syntax/tests/data/parser/ok/0012_visibility.txt
+++ b/crates/ra_syntax/tests/data/parser/ok/0012_visibility.txt
@@ -1,102 +1,102 @@
1SOURCE_FILE@[0; 98) 1SOURCE_FILE@[0; 98)
2 FN_DEF@[0; 9) 2 FN_DEF@[0; 9)
3 FN_KW@[0; 2) 3 FN_KW@[0; 2) "fn"
4 WHITESPACE@[2; 3) 4 WHITESPACE@[2; 3) " "
5 NAME@[3; 4) 5 NAME@[3; 4)
6 IDENT@[3; 4) "a" 6 IDENT@[3; 4) "a"
7 PARAM_LIST@[4; 6) 7 PARAM_LIST@[4; 6)
8 L_PAREN@[4; 5) 8 L_PAREN@[4; 5) "("
9 R_PAREN@[5; 6) 9 R_PAREN@[5; 6) ")"
10 WHITESPACE@[6; 7) 10 WHITESPACE@[6; 7) " "
11 BLOCK@[7; 9) 11 BLOCK@[7; 9)
12 L_CURLY@[7; 8) 12 L_CURLY@[7; 8) "{"
13 R_CURLY@[8; 9) 13 R_CURLY@[8; 9) "}"
14 WHITESPACE@[9; 10) 14 WHITESPACE@[9; 10) "\n"
15 FN_DEF@[10; 23) 15 FN_DEF@[10; 23)
16 VISIBILITY@[10; 13) 16 VISIBILITY@[10; 13)
17 PUB_KW@[10; 13) 17 PUB_KW@[10; 13) "pub"
18 WHITESPACE@[13; 14) 18 WHITESPACE@[13; 14) " "
19 FN_KW@[14; 16) 19 FN_KW@[14; 16) "fn"
20 WHITESPACE@[16; 17) 20 WHITESPACE@[16; 17) " "
21 NAME@[17; 18) 21 NAME@[17; 18)
22 IDENT@[17; 18) "b" 22 IDENT@[17; 18) "b"
23 PARAM_LIST@[18; 20) 23 PARAM_LIST@[18; 20)
24 L_PAREN@[18; 19) 24 L_PAREN@[18; 19) "("
25 R_PAREN@[19; 20) 25 R_PAREN@[19; 20) ")"
26 WHITESPACE@[20; 21) 26 WHITESPACE@[20; 21) " "
27 BLOCK@[21; 23) 27 BLOCK@[21; 23)
28 L_CURLY@[21; 22) 28 L_CURLY@[21; 22) "{"
29 R_CURLY@[22; 23) 29 R_CURLY@[22; 23) "}"
30 WHITESPACE@[23; 24) 30 WHITESPACE@[23; 24) "\n"
31 FN_DEF@[24; 44) 31 FN_DEF@[24; 44)
32 VISIBILITY@[24; 34) 32 VISIBILITY@[24; 34)
33 PUB_KW@[24; 27) 33 PUB_KW@[24; 27) "pub"
34 L_PAREN@[27; 28) 34 L_PAREN@[27; 28) "("
35 CRATE_KW@[28; 33) 35 CRATE_KW@[28; 33) "crate"
36 R_PAREN@[33; 34) 36 R_PAREN@[33; 34) ")"
37 WHITESPACE@[34; 35) 37 WHITESPACE@[34; 35) " "
38 FN_KW@[35; 37) 38 FN_KW@[35; 37) "fn"
39 WHITESPACE@[37; 38) 39 WHITESPACE@[37; 38) " "
40 NAME@[38; 39) 40 NAME@[38; 39)
41 IDENT@[38; 39) "c" 41 IDENT@[38; 39) "c"
42 PARAM_LIST@[39; 41) 42 PARAM_LIST@[39; 41)
43 L_PAREN@[39; 40) 43 L_PAREN@[39; 40) "("
44 R_PAREN@[40; 41) 44 R_PAREN@[40; 41) ")"
45 WHITESPACE@[41; 42) 45 WHITESPACE@[41; 42) " "
46 BLOCK@[42; 44) 46 BLOCK@[42; 44)
47 L_CURLY@[42; 43) 47 L_CURLY@[42; 43) "{"
48 R_CURLY@[43; 44) 48 R_CURLY@[43; 44) "}"
49 WHITESPACE@[44; 45) 49 WHITESPACE@[44; 45) "\n"
50 FN_DEF@[45; 65) 50 FN_DEF@[45; 65)
51 VISIBILITY@[45; 55) 51 VISIBILITY@[45; 55)
52 PUB_KW@[45; 48) 52 PUB_KW@[45; 48) "pub"
53 L_PAREN@[48; 49) 53 L_PAREN@[48; 49) "("
54 SUPER_KW@[49; 54) 54 SUPER_KW@[49; 54) "super"
55 R_PAREN@[54; 55) 55 R_PAREN@[54; 55) ")"
56 WHITESPACE@[55; 56) 56 WHITESPACE@[55; 56) " "
57 FN_KW@[56; 58) 57 FN_KW@[56; 58) "fn"
58 WHITESPACE@[58; 59) 58 WHITESPACE@[58; 59) " "
59 NAME@[59; 60) 59 NAME@[59; 60)
60 IDENT@[59; 60) "d" 60 IDENT@[59; 60) "d"
61 PARAM_LIST@[60; 62) 61 PARAM_LIST@[60; 62)
62 L_PAREN@[60; 61) 62 L_PAREN@[60; 61) "("
63 R_PAREN@[61; 62) 63 R_PAREN@[61; 62) ")"
64 WHITESPACE@[62; 63) 64 WHITESPACE@[62; 63) " "
65 BLOCK@[63; 65) 65 BLOCK@[63; 65)
66 L_CURLY@[63; 64) 66 L_CURLY@[63; 64) "{"
67 R_CURLY@[64; 65) 67 R_CURLY@[64; 65) "}"
68 WHITESPACE@[65; 66) 68 WHITESPACE@[65; 66) "\n"
69 FN_DEF@[66; 97) 69 FN_DEF@[66; 97)
70 VISIBILITY@[66; 87) 70 VISIBILITY@[66; 87)
71 PUB_KW@[66; 69) 71 PUB_KW@[66; 69) "pub"
72 L_PAREN@[69; 70) 72 L_PAREN@[69; 70) "("
73 IN_KW@[70; 72) 73 IN_KW@[70; 72) "in"
74 WHITESPACE@[72; 73) 74 WHITESPACE@[72; 73) " "
75 PATH@[73; 86) 75 PATH@[73; 86)
76 PATH@[73; 81) 76 PATH@[73; 81)
77 PATH@[73; 76) 77 PATH@[73; 76)
78 PATH_SEGMENT@[73; 76) 78 PATH_SEGMENT@[73; 76)
79 NAME_REF@[73; 76) 79 NAME_REF@[73; 76)
80 IDENT@[73; 76) "foo" 80 IDENT@[73; 76) "foo"
81 COLONCOLON@[76; 78) 81 COLONCOLON@[76; 78) "::"
82 PATH_SEGMENT@[78; 81) 82 PATH_SEGMENT@[78; 81)
83 NAME_REF@[78; 81) 83 NAME_REF@[78; 81)
84 IDENT@[78; 81) "bar" 84 IDENT@[78; 81) "bar"
85 COLONCOLON@[81; 83) 85 COLONCOLON@[81; 83) "::"
86 PATH_SEGMENT@[83; 86) 86 PATH_SEGMENT@[83; 86)
87 NAME_REF@[83; 86) 87 NAME_REF@[83; 86)
88 IDENT@[83; 86) "baz" 88 IDENT@[83; 86) "baz"
89 R_PAREN@[86; 87) 89 R_PAREN@[86; 87) ")"
90 WHITESPACE@[87; 88) 90 WHITESPACE@[87; 88) " "
91 FN_KW@[88; 90) 91 FN_KW@[88; 90) "fn"
92 WHITESPACE@[90; 91) 92 WHITESPACE@[90; 91) " "
93 NAME@[91; 92) 93 NAME@[91; 92)
94 IDENT@[91; 92) "e" 94 IDENT@[91; 92) "e"
95 PARAM_LIST@[92; 94) 95 PARAM_LIST@[92; 94)
96 L_PAREN@[92; 93) 96 L_PAREN@[92; 93) "("
97 R_PAREN@[93; 94) 97 R_PAREN@[93; 94) ")"
98 WHITESPACE@[94; 95) 98 WHITESPACE@[94; 95) " "
99 BLOCK@[95; 97) 99 BLOCK@[95; 97)
100 L_CURLY@[95; 96) 100 L_CURLY@[95; 96) "{"
101 R_CURLY@[96; 97) 101 R_CURLY@[96; 97) "}"
102 WHITESPACE@[97; 98) 102 WHITESPACE@[97; 98) "\n"
diff --git a/crates/ra_syntax/tests/data/parser/ok/0013_use_path_self_super.txt b/crates/ra_syntax/tests/data/parser/ok/0013_use_path_self_super.txt
index 1ed498f82..50730e958 100644
--- a/crates/ra_syntax/tests/data/parser/ok/0013_use_path_self_super.txt
+++ b/crates/ra_syntax/tests/data/parser/ok/0013_use_path_self_super.txt
@@ -1,57 +1,57 @@
1SOURCE_FILE@[0; 65) 1SOURCE_FILE@[0; 65)
2 USE_ITEM@[0; 14) 2 USE_ITEM@[0; 14)
3 USE_KW@[0; 3) 3 USE_KW@[0; 3) "use"
4 WHITESPACE@[3; 4) 4 WHITESPACE@[3; 4) " "
5 USE_TREE@[4; 13) 5 USE_TREE@[4; 13)
6 PATH@[4; 13) 6 PATH@[4; 13)
7 PATH@[4; 8) 7 PATH@[4; 8)
8 PATH_SEGMENT@[4; 8) 8 PATH_SEGMENT@[4; 8)
9 SELF_KW@[4; 8) 9 SELF_KW@[4; 8) "self"
10 COLONCOLON@[8; 10) 10 COLONCOLON@[8; 10) "::"
11 PATH_SEGMENT@[10; 13) 11 PATH_SEGMENT@[10; 13)
12 NAME_REF@[10; 13) 12 NAME_REF@[10; 13)
13 IDENT@[10; 13) "foo" 13 IDENT@[10; 13) "foo"
14 SEMI@[13; 14) 14 SEMI@[13; 14) ";"
15 WHITESPACE@[14; 15) 15 WHITESPACE@[14; 15) "\n"
16 USE_ITEM@[15; 37) 16 USE_ITEM@[15; 37)
17 USE_KW@[15; 18) 17 USE_KW@[15; 18) "use"
18 WHITESPACE@[18; 19) 18 WHITESPACE@[18; 19) " "
19 USE_TREE@[19; 36) 19 USE_TREE@[19; 36)
20 PATH@[19; 36) 20 PATH@[19; 36)
21 PATH@[19; 31) 21 PATH@[19; 31)
22 PATH@[19; 24) 22 PATH@[19; 24)
23 PATH_SEGMENT@[19; 24) 23 PATH_SEGMENT@[19; 24)
24 SUPER_KW@[19; 24) 24 SUPER_KW@[19; 24) "super"
25 COLONCOLON@[24; 26) 25 COLONCOLON@[24; 26) "::"
26 PATH_SEGMENT@[26; 31) 26 PATH_SEGMENT@[26; 31)
27 SUPER_KW@[26; 31) 27 SUPER_KW@[26; 31) "super"
28 COLONCOLON@[31; 33) 28 COLONCOLON@[31; 33) "::"
29 PATH_SEGMENT@[33; 36) 29 PATH_SEGMENT@[33; 36)
30 NAME_REF@[33; 36) 30 NAME_REF@[33; 36)
31 IDENT@[33; 36) "bar" 31 IDENT@[33; 36) "bar"
32 SEMI@[36; 37) 32 SEMI@[36; 37) ";"
33 WHITESPACE@[37; 38) 33 WHITESPACE@[37; 38) "\n"
34 USE_ITEM@[38; 64) 34 USE_ITEM@[38; 64)
35 USE_KW@[38; 41) 35 USE_KW@[38; 41) "use"
36 WHITESPACE@[41; 42) 36 WHITESPACE@[41; 42) " "
37 USE_TREE@[42; 63) 37 USE_TREE@[42; 63)
38 PATH@[42; 63) 38 PATH@[42; 63)
39 PATH@[42; 58) 39 PATH@[42; 58)
40 PATH@[42; 51) 40 PATH@[42; 51)
41 PATH@[42; 48) 41 PATH@[42; 48)
42 PATH_SEGMENT@[42; 48) 42 PATH_SEGMENT@[42; 48)
43 COLONCOLON@[42; 44) 43 COLONCOLON@[42; 44) "::"
44 SELF_KW@[44; 48) 44 SELF_KW@[44; 48) "self"
45 COLONCOLON@[48; 50) 45 COLONCOLON@[48; 50) "::"
46 PATH_SEGMENT@[50; 51) 46 PATH_SEGMENT@[50; 51)
47 NAME_REF@[50; 51) 47 NAME_REF@[50; 51)
48 IDENT@[50; 51) "a" 48 IDENT@[50; 51) "a"
49 COLONCOLON@[51; 53) 49 COLONCOLON@[51; 53) "::"
50 PATH_SEGMENT@[53; 58) 50 PATH_SEGMENT@[53; 58)
51 SUPER_KW@[53; 58) 51 SUPER_KW@[53; 58) "super"
52 COLONCOLON@[58; 60) 52 COLONCOLON@[58; 60) "::"
53 PATH_SEGMENT@[60; 63) 53 PATH_SEGMENT@[60; 63)
54 NAME_REF@[60; 63) 54 NAME_REF@[60; 63)
55 IDENT@[60; 63) "bar" 55 IDENT@[60; 63) "bar"
56 SEMI@[63; 64) 56 SEMI@[63; 64) ";"
57 WHITESPACE@[64; 65) 57 WHITESPACE@[64; 65) "\n"
diff --git a/crates/ra_syntax/tests/data/parser/ok/0014_use_tree.txt b/crates/ra_syntax/tests/data/parser/ok/0014_use_tree.txt
index 55eee5acc..3fe34d001 100644
--- a/crates/ra_syntax/tests/data/parser/ok/0014_use_tree.txt
+++ b/crates/ra_syntax/tests/data/parser/ok/0014_use_tree.txt
@@ -1,95 +1,95 @@
1SOURCE_FILE@[0; 81) 1SOURCE_FILE@[0; 81)
2 USE_ITEM@[0; 6) 2 USE_ITEM@[0; 6)
3 USE_KW@[0; 3) 3 USE_KW@[0; 3) "use"
4 WHITESPACE@[3; 4) 4 WHITESPACE@[3; 4) " "
5 USE_TREE@[4; 5) 5 USE_TREE@[4; 5)
6 STAR@[4; 5) 6 STAR@[4; 5) "*"
7 SEMI@[5; 6) 7 SEMI@[5; 6) ";"
8 WHITESPACE@[6; 7) 8 WHITESPACE@[6; 7) "\n"
9 USE_ITEM@[7; 15) 9 USE_ITEM@[7; 15)
10 USE_KW@[7; 10) 10 USE_KW@[7; 10) "use"
11 WHITESPACE@[10; 11) 11 WHITESPACE@[10; 11) " "
12 USE_TREE@[11; 14) 12 USE_TREE@[11; 14)
13 COLONCOLON@[11; 13) 13 COLONCOLON@[11; 13) "::"
14 STAR@[13; 14) 14 STAR@[13; 14) "*"
15 SEMI@[14; 15) 15 SEMI@[14; 15) ";"
16 WHITESPACE@[15; 16) 16 WHITESPACE@[15; 16) "\n"
17 USE_ITEM@[16; 25) 17 USE_ITEM@[16; 25)
18 USE_KW@[16; 19) 18 USE_KW@[16; 19) "use"
19 WHITESPACE@[19; 20) 19 WHITESPACE@[19; 20) " "
20 USE_TREE@[20; 24) 20 USE_TREE@[20; 24)
21 COLONCOLON@[20; 22) 21 COLONCOLON@[20; 22) "::"
22 USE_TREE_LIST@[22; 24) 22 USE_TREE_LIST@[22; 24)
23 L_CURLY@[22; 23) 23 L_CURLY@[22; 23) "{"
24 R_CURLY@[23; 24) 24 R_CURLY@[23; 24) "}"
25 SEMI@[24; 25) 25 SEMI@[24; 25) ";"
26 WHITESPACE@[25; 26) 26 WHITESPACE@[25; 26) "\n"
27 USE_ITEM@[26; 33) 27 USE_ITEM@[26; 33)
28 USE_KW@[26; 29) 28 USE_KW@[26; 29) "use"
29 WHITESPACE@[29; 30) 29 WHITESPACE@[29; 30) " "
30 USE_TREE@[30; 32) 30 USE_TREE@[30; 32)
31 USE_TREE_LIST@[30; 32) 31 USE_TREE_LIST@[30; 32)
32 L_CURLY@[30; 31) 32 L_CURLY@[30; 31) "{"
33 R_CURLY@[31; 32) 33 R_CURLY@[31; 32) "}"
34 SEMI@[32; 33) 34 SEMI@[32; 33) ";"
35 WHITESPACE@[33; 34) 35 WHITESPACE@[33; 34) "\n"
36 USE_ITEM@[34; 45) 36 USE_ITEM@[34; 45)
37 USE_KW@[34; 37) 37 USE_KW@[34; 37) "use"
38 WHITESPACE@[37; 38) 38 WHITESPACE@[37; 38) " "
39 USE_TREE@[38; 44) 39 USE_TREE@[38; 44)
40 PATH@[38; 41) 40 PATH@[38; 41)
41 PATH_SEGMENT@[38; 41) 41 PATH_SEGMENT@[38; 41)
42 NAME_REF@[38; 41) 42 NAME_REF@[38; 41)
43 IDENT@[38; 41) "foo" 43 IDENT@[38; 41) "foo"
44 COLONCOLON@[41; 43) 44 COLONCOLON@[41; 43) "::"
45 STAR@[43; 44) 45 STAR@[43; 44) "*"
46 SEMI@[44; 45) 46 SEMI@[44; 45) ";"
47 WHITESPACE@[45; 46) 47 WHITESPACE@[45; 46) "\n"
48 USE_ITEM@[46; 58) 48 USE_ITEM@[46; 58)
49 USE_KW@[46; 49) 49 USE_KW@[46; 49) "use"
50 WHITESPACE@[49; 50) 50 WHITESPACE@[49; 50) " "
51 USE_TREE@[50; 57) 51 USE_TREE@[50; 57)
52 PATH@[50; 53) 52 PATH@[50; 53)
53 PATH_SEGMENT@[50; 53) 53 PATH_SEGMENT@[50; 53)
54 NAME_REF@[50; 53) 54 NAME_REF@[50; 53)
55 IDENT@[50; 53) "foo" 55 IDENT@[50; 53) "foo"
56 COLONCOLON@[53; 55) 56 COLONCOLON@[53; 55) "::"
57 USE_TREE_LIST@[55; 57) 57 USE_TREE_LIST@[55; 57)
58 L_CURLY@[55; 56) 58 L_CURLY@[55; 56) "{"
59 R_CURLY@[56; 57) 59 R_CURLY@[56; 57) "}"
60 SEMI@[57; 58) 60 SEMI@[57; 58) ";"
61 WHITESPACE@[58; 59) 61 WHITESPACE@[58; 59) "\n"
62 USE_ITEM@[59; 80) 62 USE_ITEM@[59; 80)
63 USE_KW@[59; 62) 63 USE_KW@[59; 62) "use"
64 WHITESPACE@[62; 63) 64 WHITESPACE@[62; 63) " "
65 USE_TREE@[63; 79) 65 USE_TREE@[63; 79)
66 PATH@[63; 68) 66 PATH@[63; 68)
67 PATH_SEGMENT@[63; 68) 67 PATH_SEGMENT@[63; 68)
68 COLONCOLON@[63; 65) 68 COLONCOLON@[63; 65) "::"
69 NAME_REF@[65; 68) 69 NAME_REF@[65; 68)
70 IDENT@[65; 68) "foo" 70 IDENT@[65; 68) "foo"
71 COLONCOLON@[68; 70) 71 COLONCOLON@[68; 70) "::"
72 USE_TREE_LIST@[70; 79) 72 USE_TREE_LIST@[70; 79)
73 L_CURLY@[70; 71) 73 L_CURLY@[70; 71) "{"
74 USE_TREE@[71; 72) 74 USE_TREE@[71; 72)
75 PATH@[71; 72) 75 PATH@[71; 72)
76 PATH_SEGMENT@[71; 72) 76 PATH_SEGMENT@[71; 72)
77 NAME_REF@[71; 72) 77 NAME_REF@[71; 72)
78 IDENT@[71; 72) "a" 78 IDENT@[71; 72) "a"
79 COMMA@[72; 73) 79 COMMA@[72; 73) ","
80 WHITESPACE@[73; 74) 80 WHITESPACE@[73; 74) " "
81 USE_TREE@[74; 75) 81 USE_TREE@[74; 75)
82 PATH@[74; 75) 82 PATH@[74; 75)
83 PATH_SEGMENT@[74; 75) 83 PATH_SEGMENT@[74; 75)
84 NAME_REF@[74; 75) 84 NAME_REF@[74; 75)
85 IDENT@[74; 75) "b" 85 IDENT@[74; 75) "b"
86 COMMA@[75; 76) 86 COMMA@[75; 76) ","
87 WHITESPACE@[76; 77) 87 WHITESPACE@[76; 77) " "
88 USE_TREE@[77; 78) 88 USE_TREE@[77; 78)
89 PATH@[77; 78) 89 PATH@[77; 78)
90 PATH_SEGMENT@[77; 78) 90 PATH_SEGMENT@[77; 78)
91 NAME_REF@[77; 78) 91 NAME_REF@[77; 78)
92 IDENT@[77; 78) "c" 92 IDENT@[77; 78) "c"
93 R_CURLY@[78; 79) 93 R_CURLY@[78; 79) "}"
94 SEMI@[79; 80) 94 SEMI@[79; 80) ";"
95 WHITESPACE@[80; 81) 95 WHITESPACE@[80; 81) "\n"
diff --git a/crates/ra_syntax/tests/data/parser/ok/0015_use_tree.txt b/crates/ra_syntax/tests/data/parser/ok/0015_use_tree.txt
index 8a4117673..e63f14253 100644
--- a/crates/ra_syntax/tests/data/parser/ok/0015_use_tree.txt
+++ b/crates/ra_syntax/tests/data/parser/ok/0015_use_tree.txt
@@ -1,65 +1,65 @@
1SOURCE_FILE@[0; 55) 1SOURCE_FILE@[0; 55)
2 USE_ITEM@[0; 15) 2 USE_ITEM@[0; 15)
3 USE_KW@[0; 3) 3 USE_KW@[0; 3) "use"
4 WHITESPACE@[3; 4) 4 WHITESPACE@[3; 4) " "
5 USE_TREE@[4; 14) 5 USE_TREE@[4; 14)
6 PATH@[4; 7) 6 PATH@[4; 7)
7 PATH_SEGMENT@[4; 7) 7 PATH_SEGMENT@[4; 7)
8 NAME_REF@[4; 7) 8 NAME_REF@[4; 7)
9 IDENT@[4; 7) "foo" 9 IDENT@[4; 7) "foo"
10 WHITESPACE@[7; 8) 10 WHITESPACE@[7; 8) " "
11 ALIAS@[8; 14) 11 ALIAS@[8; 14)
12 AS_KW@[8; 10) 12 AS_KW@[8; 10) "as"
13 WHITESPACE@[10; 11) 13 WHITESPACE@[10; 11) " "
14 NAME@[11; 14) 14 NAME@[11; 14)
15 IDENT@[11; 14) "bar" 15 IDENT@[11; 14) "bar"
16 SEMI@[14; 15) 16 SEMI@[14; 15) ";"
17 WHITESPACE@[15; 16) 17 WHITESPACE@[15; 16) "\n"
18 USE_ITEM@[16; 54) 18 USE_ITEM@[16; 54)
19 USE_KW@[16; 19) 19 USE_KW@[16; 19) "use"
20 WHITESPACE@[19; 20) 20 WHITESPACE@[19; 20) " "
21 USE_TREE@[20; 53) 21 USE_TREE@[20; 53)
22 PATH@[20; 23) 22 PATH@[20; 23)
23 PATH_SEGMENT@[20; 23) 23 PATH_SEGMENT@[20; 23)
24 NAME_REF@[20; 23) 24 NAME_REF@[20; 23)
25 IDENT@[20; 23) "foo" 25 IDENT@[20; 23) "foo"
26 COLONCOLON@[23; 25) 26 COLONCOLON@[23; 25) "::"
27 USE_TREE_LIST@[25; 53) 27 USE_TREE_LIST@[25; 53)
28 L_CURLY@[25; 26) 28 L_CURLY@[25; 26) "{"
29 USE_TREE@[26; 32) 29 USE_TREE@[26; 32)
30 PATH@[26; 27) 30 PATH@[26; 27)
31 PATH_SEGMENT@[26; 27) 31 PATH_SEGMENT@[26; 27)
32 NAME_REF@[26; 27) 32 NAME_REF@[26; 27)
33 IDENT@[26; 27) "a" 33 IDENT@[26; 27) "a"
34 WHITESPACE@[27; 28) 34 WHITESPACE@[27; 28) " "
35 ALIAS@[28; 32) 35 ALIAS@[28; 32)
36 AS_KW@[28; 30) 36 AS_KW@[28; 30) "as"
37 WHITESPACE@[30; 31) 37 WHITESPACE@[30; 31) " "
38 NAME@[31; 32) 38 NAME@[31; 32)
39 IDENT@[31; 32) "b" 39 IDENT@[31; 32) "b"
40 COMMA@[32; 33) 40 COMMA@[32; 33) ","
41 WHITESPACE@[33; 34) 41 WHITESPACE@[33; 34) " "
42 USE_TREE@[34; 35) 42 USE_TREE@[34; 35)
43 STAR@[34; 35) 43 STAR@[34; 35) "*"
44 COMMA@[35; 36) 44 COMMA@[35; 36) ","
45 WHITESPACE@[36; 37) 45 WHITESPACE@[36; 37) " "
46 USE_TREE@[37; 40) 46 USE_TREE@[37; 40)
47 COLONCOLON@[37; 39) 47 COLONCOLON@[37; 39) "::"
48 STAR@[39; 40) 48 STAR@[39; 40) "*"
49 COMMA@[40; 41) 49 COMMA@[40; 41) ","
50 WHITESPACE@[41; 42) 50 WHITESPACE@[41; 42) " "
51 USE_TREE@[42; 52) 51 USE_TREE@[42; 52)
52 PATH@[42; 47) 52 PATH@[42; 47)
53 PATH_SEGMENT@[42; 47) 53 PATH_SEGMENT@[42; 47)
54 COLONCOLON@[42; 44) 54 COLONCOLON@[42; 44) "::"
55 NAME_REF@[44; 47) 55 NAME_REF@[44; 47)
56 IDENT@[44; 47) "foo" 56 IDENT@[44; 47) "foo"
57 WHITESPACE@[47; 48) 57 WHITESPACE@[47; 48) " "
58 ALIAS@[48; 52) 58 ALIAS@[48; 52)
59 AS_KW@[48; 50) 59 AS_KW@[48; 50) "as"
60 WHITESPACE@[50; 51) 60 WHITESPACE@[50; 51) " "
61 NAME@[51; 52) 61 NAME@[51; 52)
62 IDENT@[51; 52) "x" 62 IDENT@[51; 52) "x"
63 R_CURLY@[52; 53) 63 R_CURLY@[52; 53) "}"
64 SEMI@[53; 54) 64 SEMI@[53; 54) ";"
65 WHITESPACE@[54; 55) 65 WHITESPACE@[54; 55) "\n"
diff --git a/crates/ra_syntax/tests/data/parser/ok/0016_struct_flavors.txt b/crates/ra_syntax/tests/data/parser/ok/0016_struct_flavors.txt
index d021d6de6..ac44093e8 100644
--- a/crates/ra_syntax/tests/data/parser/ok/0016_struct_flavors.txt
+++ b/crates/ra_syntax/tests/data/parser/ok/0016_struct_flavors.txt
@@ -1,93 +1,93 @@
1SOURCE_FILE@[0; 97) 1SOURCE_FILE@[0; 97)
2 STRUCT_DEF@[0; 9) 2 STRUCT_DEF@[0; 9)
3 STRUCT_KW@[0; 6) 3 STRUCT_KW@[0; 6) "struct"
4 WHITESPACE@[6; 7) 4 WHITESPACE@[6; 7) " "
5 NAME@[7; 8) 5 NAME@[7; 8)
6 IDENT@[7; 8) "A" 6 IDENT@[7; 8) "A"
7 SEMI@[8; 9) 7 SEMI@[8; 9) ";"
8 WHITESPACE@[9; 10) 8 WHITESPACE@[9; 10) "\n"
9 STRUCT_DEF@[10; 21) 9 STRUCT_DEF@[10; 21)
10 STRUCT_KW@[10; 16) 10 STRUCT_KW@[10; 16) "struct"
11 WHITESPACE@[16; 17) 11 WHITESPACE@[16; 17) " "
12 NAME@[17; 18) 12 NAME@[17; 18)
13 IDENT@[17; 18) "B" 13 IDENT@[17; 18) "B"
14 WHITESPACE@[18; 19) 14 WHITESPACE@[18; 19) " "
15 NAMED_FIELD_DEF_LIST@[19; 21) 15 NAMED_FIELD_DEF_LIST@[19; 21)
16 L_CURLY@[19; 20) 16 L_CURLY@[19; 20) "{"
17 R_CURLY@[20; 21) 17 R_CURLY@[20; 21) "}"
18 WHITESPACE@[21; 22) 18 WHITESPACE@[21; 22) "\n"
19 STRUCT_DEF@[22; 33) 19 STRUCT_DEF@[22; 33)
20 STRUCT_KW@[22; 28) 20 STRUCT_KW@[22; 28) "struct"
21 WHITESPACE@[28; 29) 21 WHITESPACE@[28; 29) " "
22 NAME@[29; 30) 22 NAME@[29; 30)
23 IDENT@[29; 30) "C" 23 IDENT@[29; 30) "C"
24 POS_FIELD_DEF_LIST@[30; 32) 24 POS_FIELD_DEF_LIST@[30; 32)
25 L_PAREN@[30; 31) 25 L_PAREN@[30; 31) "("
26 R_PAREN@[31; 32) 26 R_PAREN@[31; 32) ")"
27 SEMI@[32; 33) 27 SEMI@[32; 33) ";"
28 WHITESPACE@[33; 35) 28 WHITESPACE@[33; 35) "\n\n"
29 STRUCT_DEF@[35; 74) 29 STRUCT_DEF@[35; 74)
30 STRUCT_KW@[35; 41) 30 STRUCT_KW@[35; 41) "struct"
31 WHITESPACE@[41; 42) 31 WHITESPACE@[41; 42) " "
32 NAME@[42; 43) 32 NAME@[42; 43)
33 IDENT@[42; 43) "D" 33 IDENT@[42; 43) "D"
34 WHITESPACE@[43; 44) 34 WHITESPACE@[43; 44) " "
35 NAMED_FIELD_DEF_LIST@[44; 74) 35 NAMED_FIELD_DEF_LIST@[44; 74)
36 L_CURLY@[44; 45) 36 L_CURLY@[44; 45) "{"
37 WHITESPACE@[45; 50) 37 WHITESPACE@[45; 50) "\n "
38 NAMED_FIELD_DEF@[50; 56) 38 NAMED_FIELD_DEF@[50; 56)
39 NAME@[50; 51) 39 NAME@[50; 51)
40 IDENT@[50; 51) "a" 40 IDENT@[50; 51) "a"
41 COLON@[51; 52) 41 COLON@[51; 52) ":"
42 WHITESPACE@[52; 53) 42 WHITESPACE@[52; 53) " "
43 PATH_TYPE@[53; 56) 43 PATH_TYPE@[53; 56)
44 PATH@[53; 56) 44 PATH@[53; 56)
45 PATH_SEGMENT@[53; 56) 45 PATH_SEGMENT@[53; 56)
46 NAME_REF@[53; 56) 46 NAME_REF@[53; 56)
47 IDENT@[53; 56) "u32" 47 IDENT@[53; 56) "u32"
48 COMMA@[56; 57) 48 COMMA@[56; 57) ","
49 WHITESPACE@[57; 62) 49 WHITESPACE@[57; 62) "\n "
50 NAMED_FIELD_DEF@[62; 72) 50 NAMED_FIELD_DEF@[62; 72)
51 VISIBILITY@[62; 65) 51 VISIBILITY@[62; 65)
52 PUB_KW@[62; 65) 52 PUB_KW@[62; 65) "pub"
53 WHITESPACE@[65; 66) 53 WHITESPACE@[65; 66) " "
54 NAME@[66; 67) 54 NAME@[66; 67)
55 IDENT@[66; 67) "b" 55 IDENT@[66; 67) "b"
56 COLON@[67; 68) 56 COLON@[67; 68) ":"
57 WHITESPACE@[68; 69) 57 WHITESPACE@[68; 69) " "
58 PATH_TYPE@[69; 72) 58 PATH_TYPE@[69; 72)
59 PATH@[69; 72) 59 PATH@[69; 72)
60 PATH_SEGMENT@[69; 72) 60 PATH_SEGMENT@[69; 72)
61 NAME_REF@[69; 72) 61 NAME_REF@[69; 72)
62 IDENT@[69; 72) "u32" 62 IDENT@[69; 72) "u32"
63 WHITESPACE@[72; 73) 63 WHITESPACE@[72; 73) "\n"
64 R_CURLY@[73; 74) 64 R_CURLY@[73; 74) "}"
65 WHITESPACE@[74; 76) 65 WHITESPACE@[74; 76) "\n\n"
66 STRUCT_DEF@[76; 96) 66 STRUCT_DEF@[76; 96)
67 STRUCT_KW@[76; 82) 67 STRUCT_KW@[76; 82) "struct"
68 WHITESPACE@[82; 83) 68 WHITESPACE@[82; 83) " "
69 NAME@[83; 84) 69 NAME@[83; 84)
70 IDENT@[83; 84) "E" 70 IDENT@[83; 84) "E"
71 POS_FIELD_DEF_LIST@[84; 95) 71 POS_FIELD_DEF_LIST@[84; 95)
72 L_PAREN@[84; 85) 72 L_PAREN@[84; 85) "("
73 POS_FIELD_DEF@[85; 90) 73 POS_FIELD_DEF@[85; 90)
74 VISIBILITY@[85; 88) 74 VISIBILITY@[85; 88)
75 PUB_KW@[85; 88) 75 PUB_KW@[85; 88) "pub"
76 WHITESPACE@[88; 89) 76 WHITESPACE@[88; 89) " "
77 PATH_TYPE@[89; 90) 77 PATH_TYPE@[89; 90)
78 PATH@[89; 90) 78 PATH@[89; 90)
79 PATH_SEGMENT@[89; 90) 79 PATH_SEGMENT@[89; 90)
80 NAME_REF@[89; 90) 80 NAME_REF@[89; 90)
81 IDENT@[89; 90) "x" 81 IDENT@[89; 90) "x"
82 COMMA@[90; 91) 82 COMMA@[90; 91) ","
83 WHITESPACE@[91; 92) 83 WHITESPACE@[91; 92) " "
84 POS_FIELD_DEF@[92; 93) 84 POS_FIELD_DEF@[92; 93)
85 PATH_TYPE@[92; 93) 85 PATH_TYPE@[92; 93)
86 PATH@[92; 93) 86 PATH@[92; 93)
87 PATH_SEGMENT@[92; 93) 87 PATH_SEGMENT@[92; 93)
88 NAME_REF@[92; 93) 88 NAME_REF@[92; 93)
89 IDENT@[92; 93) "y" 89 IDENT@[92; 93) "y"
90 COMMA@[93; 94) 90 COMMA@[93; 94) ","
91 R_PAREN@[94; 95) 91 R_PAREN@[94; 95) ")"
92 SEMI@[95; 96) 92 SEMI@[95; 96) ";"
93 WHITESPACE@[96; 97) 93 WHITESPACE@[96; 97) "\n"
diff --git a/crates/ra_syntax/tests/data/parser/ok/0017_attr_trailing_comma.txt b/crates/ra_syntax/tests/data/parser/ok/0017_attr_trailing_comma.txt
index d49341bc5..cd8f038de 100644
--- a/crates/ra_syntax/tests/data/parser/ok/0017_attr_trailing_comma.txt
+++ b/crates/ra_syntax/tests/data/parser/ok/0017_attr_trailing_comma.txt
@@ -1,26 +1,26 @@
1SOURCE_FILE@[0; 23) 1SOURCE_FILE@[0; 23)
2 FN_DEF@[0; 22) 2 FN_DEF@[0; 22)
3 ATTR@[0; 10) 3 ATTR@[0; 10)
4 POUND@[0; 1) 4 POUND@[0; 1) "#"
5 TOKEN_TREE@[1; 10) 5 TOKEN_TREE@[1; 10)
6 L_BRACK@[1; 2) 6 L_BRACK@[1; 2) "["
7 IDENT@[2; 5) "foo" 7 IDENT@[2; 5) "foo"
8 TOKEN_TREE@[5; 9) 8 TOKEN_TREE@[5; 9)
9 L_PAREN@[5; 6) 9 L_PAREN@[5; 6) "("
10 IDENT@[6; 7) "a" 10 IDENT@[6; 7) "a"
11 COMMA@[7; 8) 11 COMMA@[7; 8) ","
12 R_PAREN@[8; 9) 12 R_PAREN@[8; 9) ")"
13 R_BRACK@[9; 10) 13 R_BRACK@[9; 10) "]"
14 WHITESPACE@[10; 11) 14 WHITESPACE@[10; 11) "\n"
15 FN_KW@[11; 13) 15 FN_KW@[11; 13) "fn"
16 WHITESPACE@[13; 14) 16 WHITESPACE@[13; 14) " "
17 NAME@[14; 17) 17 NAME@[14; 17)
18 IDENT@[14; 17) "foo" 18 IDENT@[14; 17) "foo"
19 PARAM_LIST@[17; 19) 19 PARAM_LIST@[17; 19)
20 L_PAREN@[17; 18) 20 L_PAREN@[17; 18) "("
21 R_PAREN@[18; 19) 21 R_PAREN@[18; 19) ")"
22 WHITESPACE@[19; 20) 22 WHITESPACE@[19; 20) " "
23 BLOCK@[20; 22) 23 BLOCK@[20; 22)
24 L_CURLY@[20; 21) 24 L_CURLY@[20; 21) "{"
25 R_CURLY@[21; 22) 25 R_CURLY@[21; 22) "}"
26 WHITESPACE@[22; 23) 26 WHITESPACE@[22; 23) "\n"
diff --git a/crates/ra_syntax/tests/data/parser/ok/0018_struct_type_params.txt b/crates/ra_syntax/tests/data/parser/ok/0018_struct_type_params.txt
index 05480c81b..3f06f20f9 100644
--- a/crates/ra_syntax/tests/data/parser/ok/0018_struct_type_params.txt
+++ b/crates/ra_syntax/tests/data/parser/ok/0018_struct_type_params.txt
@@ -1,257 +1,257 @@
1SOURCE_FILE@[0; 290) 1SOURCE_FILE@[0; 290)
2 STRUCT_DEF@[0; 13) 2 STRUCT_DEF@[0; 13)
3 STRUCT_KW@[0; 6) 3 STRUCT_KW@[0; 6) "struct"
4 WHITESPACE@[6; 7) 4 WHITESPACE@[6; 7) " "
5 NAME@[7; 9) 5 NAME@[7; 9)
6 IDENT@[7; 9) "S1" 6 IDENT@[7; 9) "S1"
7 TYPE_PARAM_LIST@[9; 12) 7 TYPE_PARAM_LIST@[9; 12)
8 L_ANGLE@[9; 10) 8 L_ANGLE@[9; 10) "<"
9 TYPE_PARAM@[10; 11) 9 TYPE_PARAM@[10; 11)
10 NAME@[10; 11) 10 NAME@[10; 11)
11 IDENT@[10; 11) "T" 11 IDENT@[10; 11) "T"
12 R_ANGLE@[11; 12) 12 R_ANGLE@[11; 12) ">"
13 SEMI@[12; 13) 13 SEMI@[12; 13) ";"
14 WHITESPACE@[13; 14) 14 WHITESPACE@[13; 14) "\n"
15 STRUCT_DEF@[14; 32) 15 STRUCT_DEF@[14; 32)
16 STRUCT_KW@[14; 20) 16 STRUCT_KW@[14; 20) "struct"
17 WHITESPACE@[20; 21) 17 WHITESPACE@[20; 21) " "
18 NAME@[21; 23) 18 NAME@[21; 23)
19 IDENT@[21; 23) "S2" 19 IDENT@[21; 23) "S2"
20 TYPE_PARAM_LIST@[23; 26) 20 TYPE_PARAM_LIST@[23; 26)
21 L_ANGLE@[23; 24) 21 L_ANGLE@[23; 24) "<"
22 TYPE_PARAM@[24; 25) 22 TYPE_PARAM@[24; 25)
23 NAME@[24; 25) 23 NAME@[24; 25)
24 IDENT@[24; 25) "T" 24 IDENT@[24; 25) "T"
25 R_ANGLE@[25; 26) 25 R_ANGLE@[25; 26) ">"
26 POS_FIELD_DEF_LIST@[26; 31) 26 POS_FIELD_DEF_LIST@[26; 31)
27 L_PAREN@[26; 27) 27 L_PAREN@[26; 27) "("
28 POS_FIELD_DEF@[27; 30) 28 POS_FIELD_DEF@[27; 30)
29 PATH_TYPE@[27; 30) 29 PATH_TYPE@[27; 30)
30 PATH@[27; 30) 30 PATH@[27; 30)
31 PATH_SEGMENT@[27; 30) 31 PATH_SEGMENT@[27; 30)
32 NAME_REF@[27; 30) 32 NAME_REF@[27; 30)
33 IDENT@[27; 30) "u32" 33 IDENT@[27; 30) "u32"
34 R_PAREN@[30; 31) 34 R_PAREN@[30; 31) ")"
35 SEMI@[31; 32) 35 SEMI@[31; 32) ";"
36 WHITESPACE@[32; 33) 36 WHITESPACE@[32; 33) "\n"
37 STRUCT_DEF@[33; 56) 37 STRUCT_DEF@[33; 56)
38 STRUCT_KW@[33; 39) 38 STRUCT_KW@[33; 39) "struct"
39 WHITESPACE@[39; 40) 39 WHITESPACE@[39; 40) " "
40 NAME@[40; 42) 40 NAME@[40; 42)
41 IDENT@[40; 42) "S3" 41 IDENT@[40; 42) "S3"
42 TYPE_PARAM_LIST@[42; 45) 42 TYPE_PARAM_LIST@[42; 45)
43 L_ANGLE@[42; 43) 43 L_ANGLE@[42; 43) "<"
44 TYPE_PARAM@[43; 44) 44 TYPE_PARAM@[43; 44)
45 NAME@[43; 44) 45 NAME@[43; 44)
46 IDENT@[43; 44) "T" 46 IDENT@[43; 44) "T"
47 R_ANGLE@[44; 45) 47 R_ANGLE@[44; 45) ">"
48 WHITESPACE@[45; 46) 48 WHITESPACE@[45; 46) " "
49 NAMED_FIELD_DEF_LIST@[46; 56) 49 NAMED_FIELD_DEF_LIST@[46; 56)
50 L_CURLY@[46; 47) 50 L_CURLY@[46; 47) "{"
51 WHITESPACE@[47; 48) 51 WHITESPACE@[47; 48) " "
52 NAMED_FIELD_DEF@[48; 54) 52 NAMED_FIELD_DEF@[48; 54)
53 NAME@[48; 49) 53 NAME@[48; 49)
54 IDENT@[48; 49) "u" 54 IDENT@[48; 49) "u"
55 COLON@[49; 50) 55 COLON@[49; 50) ":"
56 WHITESPACE@[50; 51) 56 WHITESPACE@[50; 51) " "
57 PATH_TYPE@[51; 54) 57 PATH_TYPE@[51; 54)
58 PATH@[51; 54) 58 PATH@[51; 54)
59 PATH_SEGMENT@[51; 54) 59 PATH_SEGMENT@[51; 54)
60 NAME_REF@[51; 54) 60 NAME_REF@[51; 54)
61 IDENT@[51; 54) "u32" 61 IDENT@[51; 54) "u32"
62 WHITESPACE@[54; 55) 62 WHITESPACE@[54; 55) " "
63 R_CURLY@[55; 56) 63 R_CURLY@[55; 56) "}"
64 WHITESPACE@[56; 58) 64 WHITESPACE@[56; 58) "\n\n"
65 STRUCT_DEF@[58; 70) 65 STRUCT_DEF@[58; 70)
66 STRUCT_KW@[58; 64) 66 STRUCT_KW@[58; 64) "struct"
67 WHITESPACE@[64; 65) 67 WHITESPACE@[64; 65) " "
68 NAME@[65; 67) 68 NAME@[65; 67)
69 IDENT@[65; 67) "S4" 69 IDENT@[65; 67) "S4"
70 TYPE_PARAM_LIST@[67; 69) 70 TYPE_PARAM_LIST@[67; 69)
71 L_ANGLE@[67; 68) 71 L_ANGLE@[67; 68) "<"
72 R_ANGLE@[68; 69) 72 R_ANGLE@[68; 69) ">"
73 SEMI@[69; 70) 73 SEMI@[69; 70) ";"
74 WHITESPACE@[70; 71) 74 WHITESPACE@[70; 71) "\n"
75 STRUCT_DEF@[71; 85) 75 STRUCT_DEF@[71; 85)
76 STRUCT_KW@[71; 77) 76 STRUCT_KW@[71; 77) "struct"
77 WHITESPACE@[77; 78) 77 WHITESPACE@[77; 78) " "
78 NAME@[78; 80) 78 NAME@[78; 80)
79 IDENT@[78; 80) "S5" 79 IDENT@[78; 80) "S5"
80 TYPE_PARAM_LIST@[80; 84) 80 TYPE_PARAM_LIST@[80; 84)
81 L_ANGLE@[80; 81) 81 L_ANGLE@[80; 81) "<"
82 LIFETIME_PARAM@[81; 83) 82 LIFETIME_PARAM@[81; 83)
83 LIFETIME@[81; 83) "'a" 83 LIFETIME@[81; 83) "\'a"
84 R_ANGLE@[83; 84) 84 R_ANGLE@[83; 84) ">"
85 SEMI@[84; 85) 85 SEMI@[84; 85) ";"
86 WHITESPACE@[85; 86) 86 WHITESPACE@[85; 86) "\n"
87 STRUCT_DEF@[86; 101) 87 STRUCT_DEF@[86; 101)
88 STRUCT_KW@[86; 92) 88 STRUCT_KW@[86; 92) "struct"
89 WHITESPACE@[92; 93) 89 WHITESPACE@[92; 93) " "
90 NAME@[93; 95) 90 NAME@[93; 95)
91 IDENT@[93; 95) "S6" 91 IDENT@[93; 95) "S6"
92 TYPE_PARAM_LIST@[95; 100) 92 TYPE_PARAM_LIST@[95; 100)
93 L_ANGLE@[95; 96) 93 L_ANGLE@[95; 96) "<"
94 LIFETIME_PARAM@[96; 99) 94 LIFETIME_PARAM@[96; 99)
95 LIFETIME@[96; 98) "'a" 95 LIFETIME@[96; 98) "\'a"
96 COLON@[98; 99) 96 COLON@[98; 99) ":"
97 R_ANGLE@[99; 100) 97 R_ANGLE@[99; 100) ">"
98 SEMI@[100; 101) 98 SEMI@[100; 101) ";"
99 WHITESPACE@[101; 102) 99 WHITESPACE@[101; 102) "\n"
100 STRUCT_DEF@[102; 120) 100 STRUCT_DEF@[102; 120)
101 STRUCT_KW@[102; 108) 101 STRUCT_KW@[102; 108) "struct"
102 WHITESPACE@[108; 109) 102 WHITESPACE@[108; 109) " "
103 NAME@[109; 111) 103 NAME@[109; 111)
104 IDENT@[109; 111) "S7" 104 IDENT@[109; 111) "S7"
105 TYPE_PARAM_LIST@[111; 119) 105 TYPE_PARAM_LIST@[111; 119)
106 L_ANGLE@[111; 112) 106 L_ANGLE@[111; 112) "<"
107 LIFETIME_PARAM@[112; 118) 107 LIFETIME_PARAM@[112; 118)
108 LIFETIME@[112; 114) "'a" 108 LIFETIME@[112; 114) "\'a"
109 COLON@[114; 115) 109 COLON@[114; 115) ":"
110 WHITESPACE@[115; 116) 110 WHITESPACE@[115; 116) " "
111 LIFETIME@[116; 118) "'b" 111 LIFETIME@[116; 118) "\'b"
112 R_ANGLE@[118; 119) 112 R_ANGLE@[118; 119) ">"
113 SEMI@[119; 120) 113 SEMI@[119; 120) ";"
114 WHITESPACE@[120; 121) 114 WHITESPACE@[120; 121) "\n"
115 STRUCT_DEF@[121; 142) 115 STRUCT_DEF@[121; 142)
116 STRUCT_KW@[121; 127) 116 STRUCT_KW@[121; 127) "struct"
117 WHITESPACE@[127; 128) 117 WHITESPACE@[127; 128) " "
118 NAME@[128; 130) 118 NAME@[128; 130)
119 IDENT@[128; 130) "S8" 119 IDENT@[128; 130) "S8"
120 TYPE_PARAM_LIST@[130; 141) 120 TYPE_PARAM_LIST@[130; 141)
121 L_ANGLE@[130; 131) 121 L_ANGLE@[130; 131) "<"
122 LIFETIME_PARAM@[131; 139) 122 LIFETIME_PARAM@[131; 139)
123 LIFETIME@[131; 133) "'a" 123 LIFETIME@[131; 133) "\'a"
124 COLON@[133; 134) 124 COLON@[133; 134) ":"
125 WHITESPACE@[134; 135) 125 WHITESPACE@[134; 135) " "
126 LIFETIME@[135; 137) "'b" 126 LIFETIME@[135; 137) "\'b"
127 WHITESPACE@[137; 138) 127 WHITESPACE@[137; 138) " "
128 PLUS@[138; 139) 128 PLUS@[138; 139) "+"
129 WHITESPACE@[139; 140) 129 WHITESPACE@[139; 140) " "
130 R_ANGLE@[140; 141) 130 R_ANGLE@[140; 141) ">"
131 SEMI@[141; 142) 131 SEMI@[141; 142) ";"
132 WHITESPACE@[142; 143) 132 WHITESPACE@[142; 143) "\n"
133 STRUCT_DEF@[143; 166) 133 STRUCT_DEF@[143; 166)
134 STRUCT_KW@[143; 149) 134 STRUCT_KW@[143; 149) "struct"
135 WHITESPACE@[149; 150) 135 WHITESPACE@[149; 150) " "
136 NAME@[150; 152) 136 NAME@[150; 152)
137 IDENT@[150; 152) "S9" 137 IDENT@[150; 152) "S9"
138 TYPE_PARAM_LIST@[152; 165) 138 TYPE_PARAM_LIST@[152; 165)
139 L_ANGLE@[152; 153) 139 L_ANGLE@[152; 153) "<"
140 LIFETIME_PARAM@[153; 164) 140 LIFETIME_PARAM@[153; 164)
141 LIFETIME@[153; 155) "'a" 141 LIFETIME@[153; 155) "\'a"
142 COLON@[155; 156) 142 COLON@[155; 156) ":"
143 WHITESPACE@[156; 157) 143 WHITESPACE@[156; 157) " "
144 LIFETIME@[157; 159) "'b" 144 LIFETIME@[157; 159) "\'b"
145 WHITESPACE@[159; 160) 145 WHITESPACE@[159; 160) " "
146 PLUS@[160; 161) 146 PLUS@[160; 161) "+"
147 WHITESPACE@[161; 162) 147 WHITESPACE@[161; 162) " "
148 LIFETIME@[162; 164) "'c" 148 LIFETIME@[162; 164) "\'c"
149 R_ANGLE@[164; 165) 149 R_ANGLE@[164; 165) ">"
150 SEMI@[165; 166) 150 SEMI@[165; 166) ";"
151 WHITESPACE@[166; 167) 151 WHITESPACE@[166; 167) "\n"
152 STRUCT_DEF@[167; 183) 152 STRUCT_DEF@[167; 183)
153 STRUCT_KW@[167; 173) 153 STRUCT_KW@[167; 173) "struct"
154 WHITESPACE@[173; 174) 154 WHITESPACE@[173; 174) " "
155 NAME@[174; 177) 155 NAME@[174; 177)
156 IDENT@[174; 177) "S10" 156 IDENT@[174; 177) "S10"
157 TYPE_PARAM_LIST@[177; 182) 157 TYPE_PARAM_LIST@[177; 182)
158 L_ANGLE@[177; 178) 158 L_ANGLE@[177; 178) "<"
159 LIFETIME_PARAM@[178; 180) 159 LIFETIME_PARAM@[178; 180)
160 LIFETIME@[178; 180) "'a" 160 LIFETIME@[178; 180) "\'a"
161 COMMA@[180; 181) 161 COMMA@[180; 181) ","
162 R_ANGLE@[181; 182) 162 R_ANGLE@[181; 182) ">"
163 SEMI@[182; 183) 163 SEMI@[182; 183) ";"
164 WHITESPACE@[183; 184) 164 WHITESPACE@[183; 184) "\n"
165 STRUCT_DEF@[184; 203) 165 STRUCT_DEF@[184; 203)
166 STRUCT_KW@[184; 190) 166 STRUCT_KW@[184; 190) "struct"
167 WHITESPACE@[190; 191) 167 WHITESPACE@[190; 191) " "
168 NAME@[191; 194) 168 NAME@[191; 194)
169 IDENT@[191; 194) "S11" 169 IDENT@[191; 194) "S11"
170 TYPE_PARAM_LIST@[194; 202) 170 TYPE_PARAM_LIST@[194; 202)
171 L_ANGLE@[194; 195) 171 L_ANGLE@[194; 195) "<"
172 LIFETIME_PARAM@[195; 197) 172 LIFETIME_PARAM@[195; 197)
173 LIFETIME@[195; 197) "'a" 173 LIFETIME@[195; 197) "\'a"
174 COMMA@[197; 198) 174 COMMA@[197; 198) ","
175 WHITESPACE@[198; 199) 175 WHITESPACE@[198; 199) " "
176 LIFETIME_PARAM@[199; 201) 176 LIFETIME_PARAM@[199; 201)
177 LIFETIME@[199; 201) "'b" 177 LIFETIME@[199; 201) "\'b"
178 R_ANGLE@[201; 202) 178 R_ANGLE@[201; 202) ">"
179 SEMI@[202; 203) 179 SEMI@[202; 203) ";"
180 WHITESPACE@[203; 204) 180 WHITESPACE@[203; 204) "\n"
181 STRUCT_DEF@[204; 233) 181 STRUCT_DEF@[204; 233)
182 STRUCT_KW@[204; 210) 182 STRUCT_KW@[204; 210) "struct"
183 WHITESPACE@[210; 211) 183 WHITESPACE@[210; 211) " "
184 NAME@[211; 214) 184 NAME@[211; 214)
185 IDENT@[211; 214) "S12" 185 IDENT@[211; 214) "S12"
186 TYPE_PARAM_LIST@[214; 232) 186 TYPE_PARAM_LIST@[214; 232)
187 L_ANGLE@[214; 215) 187 L_ANGLE@[214; 215) "<"
188 LIFETIME_PARAM@[215; 222) 188 LIFETIME_PARAM@[215; 222)
189 LIFETIME@[215; 217) "'a" 189 LIFETIME@[215; 217) "\'a"
190 COLON@[217; 218) 190 COLON@[217; 218) ":"
191 WHITESPACE@[218; 219) 191 WHITESPACE@[218; 219) " "
192 LIFETIME@[219; 221) "'b" 192 LIFETIME@[219; 221) "\'b"
193 PLUS@[221; 222) 193 PLUS@[221; 222) "+"
194 COMMA@[222; 223) 194 COMMA@[222; 223) ","
195 WHITESPACE@[223; 224) 195 WHITESPACE@[223; 224) " "
196 LIFETIME_PARAM@[224; 230) 196 LIFETIME_PARAM@[224; 230)
197 LIFETIME@[224; 226) "'b" 197 LIFETIME@[224; 226) "\'b"
198 COLON@[226; 227) 198 COLON@[226; 227) ":"
199 WHITESPACE@[227; 228) 199 WHITESPACE@[227; 228) " "
200 LIFETIME@[228; 230) "'c" 200 LIFETIME@[228; 230) "\'c"
201 COMMA@[230; 231) 201 COMMA@[230; 231) ","
202 R_ANGLE@[231; 232) 202 R_ANGLE@[231; 232) ">"
203 SEMI@[232; 233) 203 SEMI@[232; 233) ";"
204 WHITESPACE@[233; 235) 204 WHITESPACE@[233; 235) "\n\n"
205 STRUCT_DEF@[235; 249) 205 STRUCT_DEF@[235; 249)
206 STRUCT_KW@[235; 241) 206 STRUCT_KW@[235; 241) "struct"
207 WHITESPACE@[241; 242) 207 WHITESPACE@[241; 242) " "
208 NAME@[242; 245) 208 NAME@[242; 245)
209 IDENT@[242; 245) "S13" 209 IDENT@[242; 245) "S13"
210 TYPE_PARAM_LIST@[245; 248) 210 TYPE_PARAM_LIST@[245; 248)
211 L_ANGLE@[245; 246) 211 L_ANGLE@[245; 246) "<"
212 TYPE_PARAM@[246; 247) 212 TYPE_PARAM@[246; 247)
213 NAME@[246; 247) 213 NAME@[246; 247)
214 IDENT@[246; 247) "T" 214 IDENT@[246; 247) "T"
215 R_ANGLE@[247; 248) 215 R_ANGLE@[247; 248) ">"
216 SEMI@[248; 249) 216 SEMI@[248; 249) ";"
217 WHITESPACE@[249; 250) 217 WHITESPACE@[249; 250) "\n"
218 STRUCT_DEF@[250; 267) 218 STRUCT_DEF@[250; 267)
219 STRUCT_KW@[250; 256) 219 STRUCT_KW@[250; 256) "struct"
220 WHITESPACE@[256; 257) 220 WHITESPACE@[256; 257) " "
221 NAME@[257; 260) 221 NAME@[257; 260)
222 IDENT@[257; 260) "S14" 222 IDENT@[257; 260) "S14"
223 TYPE_PARAM_LIST@[260; 266) 223 TYPE_PARAM_LIST@[260; 266)
224 L_ANGLE@[260; 261) 224 L_ANGLE@[260; 261) "<"
225 TYPE_PARAM@[261; 262) 225 TYPE_PARAM@[261; 262)
226 NAME@[261; 262) 226 NAME@[261; 262)
227 IDENT@[261; 262) "T" 227 IDENT@[261; 262) "T"
228 COMMA@[262; 263) 228 COMMA@[262; 263) ","
229 WHITESPACE@[263; 264) 229 WHITESPACE@[263; 264) " "
230 TYPE_PARAM@[264; 265) 230 TYPE_PARAM@[264; 265)
231 NAME@[264; 265) 231 NAME@[264; 265)
232 IDENT@[264; 265) "U" 232 IDENT@[264; 265) "U"
233 R_ANGLE@[265; 266) 233 R_ANGLE@[265; 266) ">"
234 SEMI@[266; 267) 234 SEMI@[266; 267) ";"
235 WHITESPACE@[267; 268) 235 WHITESPACE@[267; 268) "\n"
236 STRUCT_DEF@[268; 289) 236 STRUCT_DEF@[268; 289)
237 STRUCT_KW@[268; 274) 237 STRUCT_KW@[268; 274) "struct"
238 WHITESPACE@[274; 275) 238 WHITESPACE@[274; 275) " "
239 NAME@[275; 278) 239 NAME@[275; 278)
240 IDENT@[275; 278) "S15" 240 IDENT@[275; 278) "S15"
241 TYPE_PARAM_LIST@[278; 288) 241 TYPE_PARAM_LIST@[278; 288)
242 L_ANGLE@[278; 279) 242 L_ANGLE@[278; 279) "<"
243 LIFETIME_PARAM@[279; 281) 243 LIFETIME_PARAM@[279; 281)
244 LIFETIME@[279; 281) "'a" 244 LIFETIME@[279; 281) "\'a"
245 COMMA@[281; 282) 245 COMMA@[281; 282) ","
246 WHITESPACE@[282; 283) 246 WHITESPACE@[282; 283) " "
247 TYPE_PARAM@[283; 284) 247 TYPE_PARAM@[283; 284)
248 NAME@[283; 284) 248 NAME@[283; 284)
249 IDENT@[283; 284) "T" 249 IDENT@[283; 284) "T"
250 COMMA@[284; 285) 250 COMMA@[284; 285) ","
251 WHITESPACE@[285; 286) 251 WHITESPACE@[285; 286) " "
252 TYPE_PARAM@[286; 287) 252 TYPE_PARAM@[286; 287)
253 NAME@[286; 287) 253 NAME@[286; 287)
254 IDENT@[286; 287) "U" 254 IDENT@[286; 287) "U"
255 R_ANGLE@[287; 288) 255 R_ANGLE@[287; 288) ">"
256 SEMI@[288; 289) 256 SEMI@[288; 289) ";"
257 WHITESPACE@[289; 290) 257 WHITESPACE@[289; 290) "\n"
diff --git a/crates/ra_syntax/tests/data/parser/ok/0019_enums.txt b/crates/ra_syntax/tests/data/parser/ok/0019_enums.txt
index 2ac55cfbc..37753a7d0 100644
--- a/crates/ra_syntax/tests/data/parser/ok/0019_enums.txt
+++ b/crates/ra_syntax/tests/data/parser/ok/0019_enums.txt
@@ -1,155 +1,155 @@
1SOURCE_FILE@[0; 182) 1SOURCE_FILE@[0; 182)
2 ENUM_DEF@[0; 11) 2 ENUM_DEF@[0; 11)
3 ENUM_KW@[0; 4) 3 ENUM_KW@[0; 4) "enum"
4 WHITESPACE@[4; 5) 4 WHITESPACE@[4; 5) " "
5 NAME@[5; 7) 5 NAME@[5; 7)
6 IDENT@[5; 7) "E1" 6 IDENT@[5; 7) "E1"
7 WHITESPACE@[7; 8) 7 WHITESPACE@[7; 8) " "
8 ENUM_VARIANT_LIST@[8; 11) 8 ENUM_VARIANT_LIST@[8; 11)
9 L_CURLY@[8; 9) 9 L_CURLY@[8; 9) "{"
10 WHITESPACE@[9; 10) 10 WHITESPACE@[9; 10) "\n"
11 R_CURLY@[10; 11) 11 R_CURLY@[10; 11) "}"
12 WHITESPACE@[11; 13) 12 WHITESPACE@[11; 13) "\n\n"
13 ENUM_DEF@[13; 27) 13 ENUM_DEF@[13; 27)
14 ENUM_KW@[13; 17) 14 ENUM_KW@[13; 17) "enum"
15 WHITESPACE@[17; 18) 15 WHITESPACE@[17; 18) " "
16 NAME@[18; 20) 16 NAME@[18; 20)
17 IDENT@[18; 20) "E2" 17 IDENT@[18; 20) "E2"
18 TYPE_PARAM_LIST@[20; 23) 18 TYPE_PARAM_LIST@[20; 23)
19 L_ANGLE@[20; 21) 19 L_ANGLE@[20; 21) "<"
20 TYPE_PARAM@[21; 22) 20 TYPE_PARAM@[21; 22)
21 NAME@[21; 22) 21 NAME@[21; 22)
22 IDENT@[21; 22) "T" 22 IDENT@[21; 22) "T"
23 R_ANGLE@[22; 23) 23 R_ANGLE@[22; 23) ">"
24 WHITESPACE@[23; 24) 24 WHITESPACE@[23; 24) " "
25 ENUM_VARIANT_LIST@[24; 27) 25 ENUM_VARIANT_LIST@[24; 27)
26 L_CURLY@[24; 25) 26 L_CURLY@[24; 25) "{"
27 WHITESPACE@[25; 26) 27 WHITESPACE@[25; 26) "\n"
28 R_CURLY@[26; 27) 28 R_CURLY@[26; 27) "}"
29 WHITESPACE@[27; 29) 29 WHITESPACE@[27; 29) "\n\n"
30 ENUM_DEF@[29; 46) 30 ENUM_DEF@[29; 46)
31 ENUM_KW@[29; 33) 31 ENUM_KW@[29; 33) "enum"
32 WHITESPACE@[33; 34) 32 WHITESPACE@[33; 34) " "
33 NAME@[34; 36) 33 NAME@[34; 36)
34 IDENT@[34; 36) "E3" 34 IDENT@[34; 36) "E3"
35 WHITESPACE@[36; 37) 35 WHITESPACE@[36; 37) " "
36 ENUM_VARIANT_LIST@[37; 46) 36 ENUM_VARIANT_LIST@[37; 46)
37 L_CURLY@[37; 38) 37 L_CURLY@[37; 38) "{"
38 WHITESPACE@[38; 43) 38 WHITESPACE@[38; 43) "\n "
39 ENUM_VARIANT@[43; 44) 39 ENUM_VARIANT@[43; 44)
40 NAME@[43; 44) 40 NAME@[43; 44)
41 IDENT@[43; 44) "X" 41 IDENT@[43; 44) "X"
42 WHITESPACE@[44; 45) 42 WHITESPACE@[44; 45) "\n"
43 R_CURLY@[45; 46) 43 R_CURLY@[45; 46) "}"
44 WHITESPACE@[46; 48) 44 WHITESPACE@[46; 48) "\n\n"
45 ENUM_DEF@[48; 66) 45 ENUM_DEF@[48; 66)
46 ENUM_KW@[48; 52) 46 ENUM_KW@[48; 52) "enum"
47 WHITESPACE@[52; 53) 47 WHITESPACE@[52; 53) " "
48 NAME@[53; 55) 48 NAME@[53; 55)
49 IDENT@[53; 55) "E4" 49 IDENT@[53; 55) "E4"
50 WHITESPACE@[55; 56) 50 WHITESPACE@[55; 56) " "
51 ENUM_VARIANT_LIST@[56; 66) 51 ENUM_VARIANT_LIST@[56; 66)
52 L_CURLY@[56; 57) 52 L_CURLY@[56; 57) "{"
53 WHITESPACE@[57; 62) 53 WHITESPACE@[57; 62) "\n "
54 ENUM_VARIANT@[62; 63) 54 ENUM_VARIANT@[62; 63)
55 NAME@[62; 63) 55 NAME@[62; 63)
56 IDENT@[62; 63) "X" 56 IDENT@[62; 63) "X"
57 COMMA@[63; 64) 57 COMMA@[63; 64) ","
58 WHITESPACE@[64; 65) 58 WHITESPACE@[64; 65) "\n"
59 R_CURLY@[65; 66) 59 R_CURLY@[65; 66) "}"
60 WHITESPACE@[66; 68) 60 WHITESPACE@[66; 68) "\n\n"
61 ENUM_DEF@[68; 181) 61 ENUM_DEF@[68; 181)
62 ENUM_KW@[68; 72) 62 ENUM_KW@[68; 72) "enum"
63 WHITESPACE@[72; 73) 63 WHITESPACE@[72; 73) " "
64 NAME@[73; 75) 64 NAME@[73; 75)
65 IDENT@[73; 75) "E5" 65 IDENT@[73; 75) "E5"
66 WHITESPACE@[75; 76) 66 WHITESPACE@[75; 76) " "
67 ENUM_VARIANT_LIST@[76; 181) 67 ENUM_VARIANT_LIST@[76; 181)
68 L_CURLY@[76; 77) 68 L_CURLY@[76; 77) "{"
69 WHITESPACE@[77; 82) 69 WHITESPACE@[77; 82) "\n "
70 ENUM_VARIANT@[82; 83) 70 ENUM_VARIANT@[82; 83)
71 NAME@[82; 83) 71 NAME@[82; 83)
72 IDENT@[82; 83) "A" 72 IDENT@[82; 83) "A"
73 COMMA@[83; 84) 73 COMMA@[83; 84) ","
74 WHITESPACE@[84; 89) 74 WHITESPACE@[84; 89) "\n "
75 ENUM_VARIANT@[89; 95) 75 ENUM_VARIANT@[89; 95)
76 NAME@[89; 90) 76 NAME@[89; 90)
77 IDENT@[89; 90) "B" 77 IDENT@[89; 90) "B"
78 WHITESPACE@[90; 91) 78 WHITESPACE@[90; 91) " "
79 EQ@[91; 92) 79 EQ@[91; 92) "="
80 WHITESPACE@[92; 93) 80 WHITESPACE@[92; 93) " "
81 LITERAL@[93; 95) 81 LITERAL@[93; 95)
82 INT_NUMBER@[93; 95) "92" 82 INT_NUMBER@[93; 95) "92"
83 COMMA@[95; 96) 83 COMMA@[95; 96) ","
84 WHITESPACE@[96; 101) 84 WHITESPACE@[96; 101) "\n "
85 ENUM_VARIANT@[101; 146) 85 ENUM_VARIANT@[101; 146)
86 NAME@[101; 102) 86 NAME@[101; 102)
87 IDENT@[101; 102) "C" 87 IDENT@[101; 102) "C"
88 WHITESPACE@[102; 103) 88 WHITESPACE@[102; 103) " "
89 NAMED_FIELD_DEF_LIST@[103; 146) 89 NAMED_FIELD_DEF_LIST@[103; 146)
90 L_CURLY@[103; 104) 90 L_CURLY@[103; 104) "{"
91 WHITESPACE@[104; 113) 91 WHITESPACE@[104; 113) "\n "
92 NAMED_FIELD_DEF@[113; 119) 92 NAMED_FIELD_DEF@[113; 119)
93 NAME@[113; 114) 93 NAME@[113; 114)
94 IDENT@[113; 114) "a" 94 IDENT@[113; 114) "a"
95 COLON@[114; 115) 95 COLON@[114; 115) ":"
96 WHITESPACE@[115; 116) 96 WHITESPACE@[115; 116) " "
97 PATH_TYPE@[116; 119) 97 PATH_TYPE@[116; 119)
98 PATH@[116; 119) 98 PATH@[116; 119)
99 PATH_SEGMENT@[116; 119) 99 PATH_SEGMENT@[116; 119)
100 NAME_REF@[116; 119) 100 NAME_REF@[116; 119)
101 IDENT@[116; 119) "u32" 101 IDENT@[116; 119) "u32"
102 COMMA@[119; 120) 102 COMMA@[119; 120) ","
103 WHITESPACE@[120; 129) 103 WHITESPACE@[120; 129) "\n "
104 NAMED_FIELD_DEF@[129; 139) 104 NAMED_FIELD_DEF@[129; 139)
105 VISIBILITY@[129; 132) 105 VISIBILITY@[129; 132)
106 PUB_KW@[129; 132) 106 PUB_KW@[129; 132) "pub"
107 WHITESPACE@[132; 133) 107 WHITESPACE@[132; 133) " "
108 NAME@[133; 134) 108 NAME@[133; 134)
109 IDENT@[133; 134) "b" 109 IDENT@[133; 134) "b"
110 COLON@[134; 135) 110 COLON@[134; 135) ":"
111 WHITESPACE@[135; 136) 111 WHITESPACE@[135; 136) " "
112 PATH_TYPE@[136; 139) 112 PATH_TYPE@[136; 139)
113 PATH@[136; 139) 113 PATH@[136; 139)
114 PATH_SEGMENT@[136; 139) 114 PATH_SEGMENT@[136; 139)
115 NAME_REF@[136; 139) 115 NAME_REF@[136; 139)
116 IDENT@[136; 139) "f64" 116 IDENT@[136; 139) "f64"
117 COMMA@[139; 140) 117 COMMA@[139; 140) ","
118 WHITESPACE@[140; 145) 118 WHITESPACE@[140; 145) "\n "
119 R_CURLY@[145; 146) 119 R_CURLY@[145; 146) "}"
120 COMMA@[146; 147) 120 COMMA@[146; 147) ","
121 WHITESPACE@[147; 152) 121 WHITESPACE@[147; 152) "\n "
122 ENUM_VARIANT@[152; 156) 122 ENUM_VARIANT@[152; 156)
123 NAME@[152; 153) 123 NAME@[152; 153)
124 IDENT@[152; 153) "F" 124 IDENT@[152; 153) "F"
125 WHITESPACE@[153; 154) 125 WHITESPACE@[153; 154) " "
126 NAMED_FIELD_DEF_LIST@[154; 156) 126 NAMED_FIELD_DEF_LIST@[154; 156)
127 L_CURLY@[154; 155) 127 L_CURLY@[154; 155) "{"
128 R_CURLY@[155; 156) 128 R_CURLY@[155; 156) "}"
129 COMMA@[156; 157) 129 COMMA@[156; 157) ","
130 WHITESPACE@[157; 162) 130 WHITESPACE@[157; 162) "\n "
131 ENUM_VARIANT@[162; 169) 131 ENUM_VARIANT@[162; 169)
132 NAME@[162; 163) 132 NAME@[162; 163)
133 IDENT@[162; 163) "D" 133 IDENT@[162; 163) "D"
134 POS_FIELD_DEF_LIST@[163; 169) 134 POS_FIELD_DEF_LIST@[163; 169)
135 L_PAREN@[163; 164) 135 L_PAREN@[163; 164) "("
136 POS_FIELD_DEF@[164; 167) 136 POS_FIELD_DEF@[164; 167)
137 PATH_TYPE@[164; 167) 137 PATH_TYPE@[164; 167)
138 PATH@[164; 167) 138 PATH@[164; 167)
139 PATH_SEGMENT@[164; 167) 139 PATH_SEGMENT@[164; 167)
140 NAME_REF@[164; 167) 140 NAME_REF@[164; 167)
141 IDENT@[164; 167) "u32" 141 IDENT@[164; 167) "u32"
142 COMMA@[167; 168) 142 COMMA@[167; 168) ","
143 R_PAREN@[168; 169) 143 R_PAREN@[168; 169) ")"
144 COMMA@[169; 170) 144 COMMA@[169; 170) ","
145 WHITESPACE@[170; 175) 145 WHITESPACE@[170; 175) "\n "
146 ENUM_VARIANT@[175; 178) 146 ENUM_VARIANT@[175; 178)
147 NAME@[175; 176) 147 NAME@[175; 176)
148 IDENT@[175; 176) "E" 148 IDENT@[175; 176) "E"
149 POS_FIELD_DEF_LIST@[176; 178) 149 POS_FIELD_DEF_LIST@[176; 178)
150 L_PAREN@[176; 177) 150 L_PAREN@[176; 177) "("
151 R_PAREN@[177; 178) 151 R_PAREN@[177; 178) ")"
152 COMMA@[178; 179) 152 COMMA@[178; 179) ","
153 WHITESPACE@[179; 180) 153 WHITESPACE@[179; 180) "\n"
154 R_CURLY@[180; 181) 154 R_CURLY@[180; 181) "}"
155 WHITESPACE@[181; 182) 155 WHITESPACE@[181; 182) "\n"
diff --git a/crates/ra_syntax/tests/data/parser/ok/0020_type_param_bounds.rs b/crates/ra_syntax/tests/data/parser/ok/0020_type_param_bounds.rs
index a1b9f00a4..712898978 100644
--- a/crates/ra_syntax/tests/data/parser/ok/0020_type_param_bounds.rs
+++ b/crates/ra_syntax/tests/data/parser/ok/0020_type_param_bounds.rs
@@ -7,3 +7,4 @@ struct F<T: 'a + 'd + Clone>;
7struct G<T: Clone + Copy>; 7struct G<T: Clone + Copy>;
8struct H<T: ::Foo + self::Bar + 'a>; 8struct H<T: ::Foo + self::Bar + 'a>;
9struct I<T:, U:,>; 9struct I<T:, U:,>;
10struct K<'a: 'd, 'd: 'a + 'b, T: 'a + 'd + Clone>; \ No newline at end of file
diff --git a/crates/ra_syntax/tests/data/parser/ok/0020_type_param_bounds.txt b/crates/ra_syntax/tests/data/parser/ok/0020_type_param_bounds.txt
index b70a1d19a..18a5fd784 100644
--- a/crates/ra_syntax/tests/data/parser/ok/0020_type_param_bounds.txt
+++ b/crates/ra_syntax/tests/data/parser/ok/0020_type_param_bounds.txt
@@ -1,198 +1,268 @@
1SOURCE_FILE@[0; 200) 1SOURCE_FILE@[0; 250)
2 STRUCT_DEF@[0; 12) 2 STRUCT_DEF@[0; 12)
3 STRUCT_KW@[0; 6) 3 STRUCT_KW@[0; 6) "struct"
4 WHITESPACE@[6; 7) 4 WHITESPACE@[6; 7) " "
5 NAME@[7; 8) 5 NAME@[7; 8)
6 IDENT@[7; 8) "A" 6 IDENT@[7; 8) "A"
7 TYPE_PARAM_LIST@[8; 11) 7 TYPE_PARAM_LIST@[8; 11)
8 L_ANGLE@[8; 9) 8 L_ANGLE@[8; 9) "<"
9 TYPE_PARAM@[9; 10) 9 TYPE_PARAM@[9; 10)
10 NAME@[9; 10) 10 NAME@[9; 10)
11 IDENT@[9; 10) "T" 11 IDENT@[9; 10) "T"
12 R_ANGLE@[10; 11) 12 R_ANGLE@[10; 11) ">"
13 SEMI@[11; 12) 13 SEMI@[11; 12) ";"
14 WHITESPACE@[12; 13) 14 WHITESPACE@[12; 13) "\n"
15 STRUCT_DEF@[13; 26) 15 STRUCT_DEF@[13; 26)
16 STRUCT_KW@[13; 19) 16 STRUCT_KW@[13; 19) "struct"
17 WHITESPACE@[19; 20) 17 WHITESPACE@[19; 20) " "
18 NAME@[20; 21) 18 NAME@[20; 21)
19 IDENT@[20; 21) "B" 19 IDENT@[20; 21) "B"
20 TYPE_PARAM_LIST@[21; 25) 20 TYPE_PARAM_LIST@[21; 25)
21 L_ANGLE@[21; 22) 21 L_ANGLE@[21; 22) "<"
22 TYPE_PARAM@[22; 24) 22 TYPE_PARAM@[22; 24)
23 NAME@[22; 23) 23 NAME@[22; 23)
24 IDENT@[22; 23) "T" 24 IDENT@[22; 23) "T"
25 COLON@[23; 24) 25 COLON@[23; 24) ":"
26 R_ANGLE@[24; 25) 26 TYPE_BOUND_LIST@[24; 24)
27 SEMI@[25; 26) 27 R_ANGLE@[24; 25) ">"
28 WHITESPACE@[26; 27) 28 SEMI@[25; 26) ";"
29 WHITESPACE@[26; 27) "\n"
29 STRUCT_DEF@[27; 43) 30 STRUCT_DEF@[27; 43)
30 STRUCT_KW@[27; 33) 31 STRUCT_KW@[27; 33) "struct"
31 WHITESPACE@[33; 34) 32 WHITESPACE@[33; 34) " "
32 NAME@[34; 35) 33 NAME@[34; 35)
33 IDENT@[34; 35) "C" 34 IDENT@[34; 35) "C"
34 TYPE_PARAM_LIST@[35; 42) 35 TYPE_PARAM_LIST@[35; 42)
35 L_ANGLE@[35; 36) 36 L_ANGLE@[35; 36) "<"
36 TYPE_PARAM@[36; 41) 37 TYPE_PARAM@[36; 41)
37 NAME@[36; 37) 38 NAME@[36; 37)
38 IDENT@[36; 37) "T" 39 IDENT@[36; 37) "T"
39 COLON@[37; 38) 40 COLON@[37; 38) ":"
40 WHITESPACE@[38; 39) 41 WHITESPACE@[38; 39) " "
41 LIFETIME@[39; 41) "'a" 42 TYPE_BOUND_LIST@[39; 41)
42 R_ANGLE@[41; 42) 43 TYPE_BOUND@[39; 41)
43 SEMI@[42; 43) 44 LIFETIME@[39; 41) "\'a"
44 WHITESPACE@[43; 44) 45 R_ANGLE@[41; 42) ">"
46 SEMI@[42; 43) ";"
47 WHITESPACE@[43; 44) "\n"
45 STRUCT_DEF@[44; 63) 48 STRUCT_DEF@[44; 63)
46 STRUCT_KW@[44; 50) 49 STRUCT_KW@[44; 50) "struct"
47 WHITESPACE@[50; 51) 50 WHITESPACE@[50; 51) " "
48 NAME@[51; 52) 51 NAME@[51; 52)
49 IDENT@[51; 52) "D" 52 IDENT@[51; 52) "D"
50 TYPE_PARAM_LIST@[52; 62) 53 TYPE_PARAM_LIST@[52; 62)
51 L_ANGLE@[52; 53) 54 L_ANGLE@[52; 53) "<"
52 TYPE_PARAM@[53; 60) 55 TYPE_PARAM@[53; 60)
53 NAME@[53; 54) 56 NAME@[53; 54)
54 IDENT@[53; 54) "T" 57 IDENT@[53; 54) "T"
55 COLON@[54; 55) 58 COLON@[54; 55) ":"
56 WHITESPACE@[55; 56) 59 WHITESPACE@[55; 56) " "
57 LIFETIME@[56; 58) "'a" 60 TYPE_BOUND_LIST@[56; 60)
58 WHITESPACE@[58; 59) 61 TYPE_BOUND@[56; 58)
59 PLUS@[59; 60) 62 LIFETIME@[56; 58) "\'a"
60 WHITESPACE@[60; 61) 63 WHITESPACE@[58; 59) " "
61 R_ANGLE@[61; 62) 64 PLUS@[59; 60) "+"
62 SEMI@[62; 63) 65 WHITESPACE@[60; 61) " "
63 WHITESPACE@[63; 64) 66 R_ANGLE@[61; 62) ">"
67 SEMI@[62; 63) ";"
68 WHITESPACE@[63; 64) "\n"
64 STRUCT_DEF@[64; 86) 69 STRUCT_DEF@[64; 86)
65 STRUCT_KW@[64; 70) 70 STRUCT_KW@[64; 70) "struct"
66 WHITESPACE@[70; 71) 71 WHITESPACE@[70; 71) " "
67 NAME@[71; 72) 72 NAME@[71; 72)
68 IDENT@[71; 72) "E" 73 IDENT@[71; 72) "E"
69 TYPE_PARAM_LIST@[72; 85) 74 TYPE_PARAM_LIST@[72; 85)
70 L_ANGLE@[72; 73) 75 L_ANGLE@[72; 73) "<"
71 TYPE_PARAM@[73; 83) 76 TYPE_PARAM@[73; 83)
72 NAME@[73; 74) 77 NAME@[73; 74)
73 IDENT@[73; 74) "T" 78 IDENT@[73; 74) "T"
74 COLON@[74; 75) 79 COLON@[74; 75) ":"
75 WHITESPACE@[75; 76) 80 WHITESPACE@[75; 76) " "
76 LIFETIME@[76; 78) "'a" 81 TYPE_BOUND_LIST@[76; 83)
77 WHITESPACE@[78; 79) 82 TYPE_BOUND@[76; 78)
78 PLUS@[79; 80) 83 LIFETIME@[76; 78) "\'a"
79 WHITESPACE@[80; 81) 84 WHITESPACE@[78; 79) " "
80 LIFETIME@[81; 83) "'d" 85 PLUS@[79; 80) "+"
81 WHITESPACE@[83; 84) 86 WHITESPACE@[80; 81) " "
82 R_ANGLE@[84; 85) 87 TYPE_BOUND@[81; 83)
83 SEMI@[85; 86) 88 LIFETIME@[81; 83) "\'d"
84 WHITESPACE@[86; 87) 89 WHITESPACE@[83; 84) " "
90 R_ANGLE@[84; 85) ">"
91 SEMI@[85; 86) ";"
92 WHITESPACE@[86; 87) "\n"
85 STRUCT_DEF@[87; 116) 93 STRUCT_DEF@[87; 116)
86 STRUCT_KW@[87; 93) 94 STRUCT_KW@[87; 93) "struct"
87 WHITESPACE@[93; 94) 95 WHITESPACE@[93; 94) " "
88 NAME@[94; 95) 96 NAME@[94; 95)
89 IDENT@[94; 95) "F" 97 IDENT@[94; 95) "F"
90 TYPE_PARAM_LIST@[95; 115) 98 TYPE_PARAM_LIST@[95; 115)
91 L_ANGLE@[95; 96) 99 L_ANGLE@[95; 96) "<"
92 TYPE_PARAM@[96; 114) 100 TYPE_PARAM@[96; 114)
93 NAME@[96; 97) 101 NAME@[96; 97)
94 IDENT@[96; 97) "T" 102 IDENT@[96; 97) "T"
95 COLON@[97; 98) 103 COLON@[97; 98) ":"
96 WHITESPACE@[98; 99) 104 WHITESPACE@[98; 99) " "
97 LIFETIME@[99; 101) "'a" 105 TYPE_BOUND_LIST@[99; 114)
98 WHITESPACE@[101; 102) 106 TYPE_BOUND@[99; 101)
99 PLUS@[102; 103) 107 LIFETIME@[99; 101) "\'a"
100 WHITESPACE@[103; 104) 108 WHITESPACE@[101; 102) " "
101 LIFETIME@[104; 106) "'d" 109 PLUS@[102; 103) "+"
102 WHITESPACE@[106; 107) 110 WHITESPACE@[103; 104) " "
103 PLUS@[107; 108) 111 TYPE_BOUND@[104; 106)
104 WHITESPACE@[108; 109) 112 LIFETIME@[104; 106) "\'d"
105 PATH_TYPE@[109; 114) 113 WHITESPACE@[106; 107) " "
106 PATH@[109; 114) 114 PLUS@[107; 108) "+"
107 PATH_SEGMENT@[109; 114) 115 WHITESPACE@[108; 109) " "
108 NAME_REF@[109; 114) 116 TYPE_BOUND@[109; 114)
109 IDENT@[109; 114) "Clone" 117 PATH_TYPE@[109; 114)
110 R_ANGLE@[114; 115) 118 PATH@[109; 114)
111 SEMI@[115; 116) 119 PATH_SEGMENT@[109; 114)
112 WHITESPACE@[116; 117) 120 NAME_REF@[109; 114)
121 IDENT@[109; 114) "Clone"
122 R_ANGLE@[114; 115) ">"
123 SEMI@[115; 116) ";"
124 WHITESPACE@[116; 117) "\n"
113 STRUCT_DEF@[117; 143) 125 STRUCT_DEF@[117; 143)
114 STRUCT_KW@[117; 123) 126 STRUCT_KW@[117; 123) "struct"
115 WHITESPACE@[123; 124) 127 WHITESPACE@[123; 124) " "
116 NAME@[124; 125) 128 NAME@[124; 125)
117 IDENT@[124; 125) "G" 129 IDENT@[124; 125) "G"
118 TYPE_PARAM_LIST@[125; 142) 130 TYPE_PARAM_LIST@[125; 142)
119 L_ANGLE@[125; 126) 131 L_ANGLE@[125; 126) "<"
120 TYPE_PARAM@[126; 141) 132 TYPE_PARAM@[126; 141)
121 NAME@[126; 127) 133 NAME@[126; 127)
122 IDENT@[126; 127) "T" 134 IDENT@[126; 127) "T"
123 COLON@[127; 128) 135 COLON@[127; 128) ":"
124 WHITESPACE@[128; 129) 136 WHITESPACE@[128; 129) " "
125 PATH_TYPE@[129; 141) 137 TYPE_BOUND_LIST@[129; 141)
126 PATH@[129; 134) 138 TYPE_BOUND@[129; 134)
127 PATH_SEGMENT@[129; 134) 139 PATH_TYPE@[129; 134)
128 NAME_REF@[129; 134) 140 PATH@[129; 134)
129 IDENT@[129; 134) "Clone" 141 PATH_SEGMENT@[129; 134)
130 WHITESPACE@[134; 135) 142 NAME_REF@[129; 134)
131 PLUS@[135; 136) 143 IDENT@[129; 134) "Clone"
132 WHITESPACE@[136; 137) 144 WHITESPACE@[134; 135) " "
133 PATH_TYPE@[137; 141) 145 PLUS@[135; 136) "+"
134 PATH@[137; 141) 146 WHITESPACE@[136; 137) " "
135 PATH_SEGMENT@[137; 141) 147 TYPE_BOUND@[137; 141)
136 NAME_REF@[137; 141) 148 PATH_TYPE@[137; 141)
137 IDENT@[137; 141) "Copy" 149 PATH@[137; 141)
138 R_ANGLE@[141; 142) 150 PATH_SEGMENT@[137; 141)
139 SEMI@[142; 143) 151 NAME_REF@[137; 141)
140 WHITESPACE@[143; 144) 152 IDENT@[137; 141) "Copy"
153 R_ANGLE@[141; 142) ">"
154 SEMI@[142; 143) ";"
155 WHITESPACE@[143; 144) "\n"
141 STRUCT_DEF@[144; 180) 156 STRUCT_DEF@[144; 180)
142 STRUCT_KW@[144; 150) 157 STRUCT_KW@[144; 150) "struct"
143 WHITESPACE@[150; 151) 158 WHITESPACE@[150; 151) " "
144 NAME@[151; 152) 159 NAME@[151; 152)
145 IDENT@[151; 152) "H" 160 IDENT@[151; 152) "H"
146 TYPE_PARAM_LIST@[152; 179) 161 TYPE_PARAM_LIST@[152; 179)
147 L_ANGLE@[152; 153) 162 L_ANGLE@[152; 153) "<"
148 TYPE_PARAM@[153; 178) 163 TYPE_PARAM@[153; 178)
149 NAME@[153; 154) 164 NAME@[153; 154)
150 IDENT@[153; 154) "T" 165 IDENT@[153; 154) "T"
151 COLON@[154; 155) 166 COLON@[154; 155) ":"
152 WHITESPACE@[155; 156) 167 WHITESPACE@[155; 156) " "
153 PATH_TYPE@[156; 178) 168 TYPE_BOUND_LIST@[156; 178)
154 PATH@[156; 161) 169 TYPE_BOUND@[156; 161)
155 PATH_SEGMENT@[156; 161) 170 PATH_TYPE@[156; 161)
156 COLONCOLON@[156; 158) 171 PATH@[156; 161)
157 NAME_REF@[158; 161) 172 PATH_SEGMENT@[156; 161)
158 IDENT@[158; 161) "Foo" 173 COLONCOLON@[156; 158) "::"
159 WHITESPACE@[161; 162) 174 NAME_REF@[158; 161)
160 PLUS@[162; 163) 175 IDENT@[158; 161) "Foo"
161 WHITESPACE@[163; 164) 176 WHITESPACE@[161; 162) " "
162 PATH_TYPE@[164; 178) 177 PLUS@[162; 163) "+"
163 PATH@[164; 173) 178 WHITESPACE@[163; 164) " "
164 PATH@[164; 168) 179 TYPE_BOUND@[164; 173)
165 PATH_SEGMENT@[164; 168) 180 PATH_TYPE@[164; 173)
166 SELF_KW@[164; 168) 181 PATH@[164; 173)
167 COLONCOLON@[168; 170) 182 PATH@[164; 168)
168 PATH_SEGMENT@[170; 173) 183 PATH_SEGMENT@[164; 168)
169 NAME_REF@[170; 173) 184 SELF_KW@[164; 168) "self"
170 IDENT@[170; 173) "Bar" 185 COLONCOLON@[168; 170) "::"
171 WHITESPACE@[173; 174) 186 PATH_SEGMENT@[170; 173)
172 PLUS@[174; 175) 187 NAME_REF@[170; 173)
173 WHITESPACE@[175; 176) 188 IDENT@[170; 173) "Bar"
174 LIFETIME@[176; 178) "'a" 189 WHITESPACE@[173; 174) " "
175 R_ANGLE@[178; 179) 190 PLUS@[174; 175) "+"
176 SEMI@[179; 180) 191 WHITESPACE@[175; 176) " "
177 WHITESPACE@[180; 181) 192 TYPE_BOUND@[176; 178)
193 LIFETIME@[176; 178) "\'a"
194 R_ANGLE@[178; 179) ">"
195 SEMI@[179; 180) ";"
196 WHITESPACE@[180; 181) "\n"
178 STRUCT_DEF@[181; 199) 197 STRUCT_DEF@[181; 199)
179 STRUCT_KW@[181; 187) 198 STRUCT_KW@[181; 187) "struct"
180 WHITESPACE@[187; 188) 199 WHITESPACE@[187; 188) " "
181 NAME@[188; 189) 200 NAME@[188; 189)
182 IDENT@[188; 189) "I" 201 IDENT@[188; 189) "I"
183 TYPE_PARAM_LIST@[189; 198) 202 TYPE_PARAM_LIST@[189; 198)
184 L_ANGLE@[189; 190) 203 L_ANGLE@[189; 190) "<"
185 TYPE_PARAM@[190; 192) 204 TYPE_PARAM@[190; 192)
186 NAME@[190; 191) 205 NAME@[190; 191)
187 IDENT@[190; 191) "T" 206 IDENT@[190; 191) "T"
188 COLON@[191; 192) 207 COLON@[191; 192) ":"
189 COMMA@[192; 193) 208 TYPE_BOUND_LIST@[192; 192)
190 WHITESPACE@[193; 194) 209 COMMA@[192; 193) ","
210 WHITESPACE@[193; 194) " "
191 TYPE_PARAM@[194; 196) 211 TYPE_PARAM@[194; 196)
192 NAME@[194; 195) 212 NAME@[194; 195)
193 IDENT@[194; 195) "U" 213 IDENT@[194; 195) "U"
194 COLON@[195; 196) 214 COLON@[195; 196) ":"
195 COMMA@[196; 197) 215 TYPE_BOUND_LIST@[196; 196)
196 R_ANGLE@[197; 198) 216 COMMA@[196; 197) ","
197 SEMI@[198; 199) 217 R_ANGLE@[197; 198) ">"
198 WHITESPACE@[199; 200) 218 SEMI@[198; 199) ";"
219 WHITESPACE@[199; 200) "\n"
220 STRUCT_DEF@[200; 250)
221 STRUCT_KW@[200; 206) "struct"
222 WHITESPACE@[206; 207) " "
223 NAME@[207; 208)
224 IDENT@[207; 208) "K"
225 TYPE_PARAM_LIST@[208; 249)
226 L_ANGLE@[208; 209) "<"
227 LIFETIME_PARAM@[209; 215)
228 LIFETIME@[209; 211) "\'a"
229 COLON@[211; 212) ":"
230 WHITESPACE@[212; 213) " "
231 LIFETIME@[213; 215) "\'d"
232 COMMA@[215; 216) ","
233 WHITESPACE@[216; 217) " "
234 LIFETIME_PARAM@[217; 228)
235 LIFETIME@[217; 219) "\'d"
236 COLON@[219; 220) ":"
237 WHITESPACE@[220; 221) " "
238 LIFETIME@[221; 223) "\'a"
239 WHITESPACE@[223; 224) " "
240 PLUS@[224; 225) "+"
241 WHITESPACE@[225; 226) " "
242 LIFETIME@[226; 228) "\'b"
243 COMMA@[228; 229) ","
244 WHITESPACE@[229; 230) " "
245 TYPE_PARAM@[230; 248)
246 NAME@[230; 231)
247 IDENT@[230; 231) "T"
248 COLON@[231; 232) ":"
249 WHITESPACE@[232; 233) " "
250 TYPE_BOUND_LIST@[233; 248)
251 TYPE_BOUND@[233; 235)
252 LIFETIME@[233; 235) "\'a"
253 WHITESPACE@[235; 236) " "
254 PLUS@[236; 237) "+"
255 WHITESPACE@[237; 238) " "
256 TYPE_BOUND@[238; 240)
257 LIFETIME@[238; 240) "\'d"
258 WHITESPACE@[240; 241) " "
259 PLUS@[241; 242) "+"
260 WHITESPACE@[242; 243) " "
261 TYPE_BOUND@[243; 248)
262 PATH_TYPE@[243; 248)
263 PATH@[243; 248)
264 PATH_SEGMENT@[243; 248)
265 NAME_REF@[243; 248)
266 IDENT@[243; 248) "Clone"
267 R_ANGLE@[248; 249) ">"
268 SEMI@[249; 250) ";"
diff --git a/crates/ra_syntax/tests/data/parser/ok/0021_extern_fn.txt b/crates/ra_syntax/tests/data/parser/ok/0021_extern_fn.txt
index 6644d6ca2..a4e75ec75 100644
--- a/crates/ra_syntax/tests/data/parser/ok/0021_extern_fn.txt
+++ b/crates/ra_syntax/tests/data/parser/ok/0021_extern_fn.txt
@@ -1,56 +1,56 @@
1SOURCE_FILE@[0; 71) 1SOURCE_FILE@[0; 71)
2 FN_DEF@[0; 19) 2 FN_DEF@[0; 19)
3 ABI@[0; 6) 3 ABI@[0; 6)
4 EXTERN_KW@[0; 6) 4 EXTERN_KW@[0; 6) "extern"
5 WHITESPACE@[6; 7) 5 WHITESPACE@[6; 7) " "
6 FN_KW@[7; 9) 6 FN_KW@[7; 9) "fn"
7 WHITESPACE@[9; 10) 7 WHITESPACE@[9; 10) " "
8 NAME@[10; 13) 8 NAME@[10; 13)
9 IDENT@[10; 13) "foo" 9 IDENT@[10; 13) "foo"
10 PARAM_LIST@[13; 15) 10 PARAM_LIST@[13; 15)
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@[16; 19)
15 L_CURLY@[16; 17) 15 L_CURLY@[16; 17) "{"
16 WHITESPACE@[17; 18) 16 WHITESPACE@[17; 18) "\n"
17 R_CURLY@[18; 19) 17 R_CURLY@[18; 19) "}"
18 WHITESPACE@[19; 21) 18 WHITESPACE@[19; 21) "\n\n"
19 FN_DEF@[21; 44) 19 FN_DEF@[21; 44)
20 ABI@[21; 31) 20 ABI@[21; 31)
21 EXTERN_KW@[21; 27) 21 EXTERN_KW@[21; 27) "extern"
22 WHITESPACE@[27; 28) 22 WHITESPACE@[27; 28) " "
23 STRING@[28; 31) 23 STRING@[28; 31) "\"C\""
24 WHITESPACE@[31; 32) 24 WHITESPACE@[31; 32) " "
25 FN_KW@[32; 34) 25 FN_KW@[32; 34) "fn"
26 WHITESPACE@[34; 35) 26 WHITESPACE@[34; 35) " "
27 NAME@[35; 38) 27 NAME@[35; 38)
28 IDENT@[35; 38) "bar" 28 IDENT@[35; 38) "bar"
29 PARAM_LIST@[38; 40) 29 PARAM_LIST@[38; 40)
30 L_PAREN@[38; 39) 30 L_PAREN@[38; 39) "("
31 R_PAREN@[39; 40) 31 R_PAREN@[39; 40) ")"
32 WHITESPACE@[40; 41) 32 WHITESPACE@[40; 41) " "
33 BLOCK@[41; 44) 33 BLOCK@[41; 44)
34 L_CURLY@[41; 42) 34 L_CURLY@[41; 42) "{"
35 WHITESPACE@[42; 43) 35 WHITESPACE@[42; 43) "\n"
36 R_CURLY@[43; 44) 36 R_CURLY@[43; 44) "}"
37 WHITESPACE@[44; 46) 37 WHITESPACE@[44; 46) "\n\n"
38 FN_DEF@[46; 70) 38 FN_DEF@[46; 70)
39 ABI@[46; 57) 39 ABI@[46; 57)
40 EXTERN_KW@[46; 52) 40 EXTERN_KW@[46; 52) "extern"
41 WHITESPACE@[52; 53) 41 WHITESPACE@[52; 53) " "
42 RAW_STRING@[53; 57) 42 RAW_STRING@[53; 57) "r\"D\""
43 WHITESPACE@[57; 58) 43 WHITESPACE@[57; 58) " "
44 FN_KW@[58; 60) 44 FN_KW@[58; 60) "fn"
45 WHITESPACE@[60; 61) 45 WHITESPACE@[60; 61) " "
46 NAME@[61; 64) 46 NAME@[61; 64)
47 IDENT@[61; 64) "baz" 47 IDENT@[61; 64) "baz"
48 PARAM_LIST@[64; 66) 48 PARAM_LIST@[64; 66)
49 L_PAREN@[64; 65) 49 L_PAREN@[64; 65) "("
50 R_PAREN@[65; 66) 50 R_PAREN@[65; 66) ")"
51 WHITESPACE@[66; 67) 51 WHITESPACE@[66; 67) " "
52 BLOCK@[67; 70) 52 BLOCK@[67; 70)
53 L_CURLY@[67; 68) 53 L_CURLY@[67; 68) "{"
54 WHITESPACE@[68; 69) 54 WHITESPACE@[68; 69) "\n"
55 R_CURLY@[69; 70) 55 R_CURLY@[69; 70) "}"
56 WHITESPACE@[70; 71) 56 WHITESPACE@[70; 71) "\n"
diff --git a/crates/ra_syntax/tests/data/parser/ok/0022_empty_extern_block.txt b/crates/ra_syntax/tests/data/parser/ok/0022_empty_extern_block.txt
index 8f044e0b1..bbbd95fd9 100644
--- a/crates/ra_syntax/tests/data/parser/ok/0022_empty_extern_block.txt
+++ b/crates/ra_syntax/tests/data/parser/ok/0022_empty_extern_block.txt
@@ -1,21 +1,21 @@
1SOURCE_FILE@[0; 27) 1SOURCE_FILE@[0; 27)
2 EXTERN_BLOCK@[0; 10) 2 EXTERN_BLOCK@[0; 10)
3 ABI@[0; 6) 3 ABI@[0; 6)
4 EXTERN_KW@[0; 6) 4 EXTERN_KW@[0; 6) "extern"
5 WHITESPACE@[6; 7) 5 WHITESPACE@[6; 7) " "
6 EXTERN_ITEM_LIST@[7; 10) 6 EXTERN_ITEM_LIST@[7; 10)
7 L_CURLY@[7; 8) 7 L_CURLY@[7; 8) "{"
8 WHITESPACE@[8; 9) 8 WHITESPACE@[8; 9) "\n"
9 R_CURLY@[9; 10) 9 R_CURLY@[9; 10) "}"
10 WHITESPACE@[10; 12) 10 WHITESPACE@[10; 12) "\n\n"
11 EXTERN_BLOCK@[12; 26) 11 EXTERN_BLOCK@[12; 26)
12 ABI@[12; 22) 12 ABI@[12; 22)
13 EXTERN_KW@[12; 18) 13 EXTERN_KW@[12; 18) "extern"
14 WHITESPACE@[18; 19) 14 WHITESPACE@[18; 19) " "
15 STRING@[19; 22) 15 STRING@[19; 22) "\"C\""
16 WHITESPACE@[22; 23) 16 WHITESPACE@[22; 23) " "
17 EXTERN_ITEM_LIST@[23; 26) 17 EXTERN_ITEM_LIST@[23; 26)
18 L_CURLY@[23; 24) 18 L_CURLY@[23; 24) "{"
19 WHITESPACE@[24; 25) 19 WHITESPACE@[24; 25) "\n"
20 R_CURLY@[25; 26) 20 R_CURLY@[25; 26) "}"
21 WHITESPACE@[26; 27) 21 WHITESPACE@[26; 27) "\n"
diff --git a/crates/ra_syntax/tests/data/parser/ok/0023_static_items.txt b/crates/ra_syntax/tests/data/parser/ok/0023_static_items.txt
index f7b107d1d..5591f95eb 100644
--- a/crates/ra_syntax/tests/data/parser/ok/0023_static_items.txt
+++ b/crates/ra_syntax/tests/data/parser/ok/0023_static_items.txt
@@ -1,41 +1,41 @@
1SOURCE_FILE@[0; 47) 1SOURCE_FILE@[0; 47)
2 STATIC_DEF@[0; 20) 2 STATIC_DEF@[0; 20)
3 STATIC_KW@[0; 6) 3 STATIC_KW@[0; 6) "static"
4 WHITESPACE@[6; 7) 4 WHITESPACE@[6; 7) " "
5 NAME@[7; 10) 5 NAME@[7; 10)
6 IDENT@[7; 10) "FOO" 6 IDENT@[7; 10) "FOO"
7 COLON@[10; 11) 7 COLON@[10; 11) ":"
8 WHITESPACE@[11; 12) 8 WHITESPACE@[11; 12) " "
9 PATH_TYPE@[12; 15) 9 PATH_TYPE@[12; 15)
10 PATH@[12; 15) 10 PATH@[12; 15)
11 PATH_SEGMENT@[12; 15) 11 PATH_SEGMENT@[12; 15)
12 NAME_REF@[12; 15) 12 NAME_REF@[12; 15)
13 IDENT@[12; 15) "u32" 13 IDENT@[12; 15) "u32"
14 WHITESPACE@[15; 16) 14 WHITESPACE@[15; 16) " "
15 EQ@[16; 17) 15 EQ@[16; 17) "="
16 WHITESPACE@[17; 18) 16 WHITESPACE@[17; 18) " "
17 LITERAL@[18; 19) 17 LITERAL@[18; 19)
18 INT_NUMBER@[18; 19) "1" 18 INT_NUMBER@[18; 19) "1"
19 SEMI@[19; 20) 19 SEMI@[19; 20) ";"
20 WHITESPACE@[20; 21) 20 WHITESPACE@[20; 21) "\n"
21 STATIC_DEF@[21; 46) 21 STATIC_DEF@[21; 46)
22 STATIC_KW@[21; 27) 22 STATIC_KW@[21; 27) "static"
23 WHITESPACE@[27; 28) 23 WHITESPACE@[27; 28) " "
24 MUT_KW@[28; 31) 24 MUT_KW@[28; 31) "mut"
25 WHITESPACE@[31; 32) 25 WHITESPACE@[31; 32) " "
26 NAME@[32; 35) 26 NAME@[32; 35)
27 IDENT@[32; 35) "BAR" 27 IDENT@[32; 35) "BAR"
28 COLON@[35; 36) 28 COLON@[35; 36) ":"
29 WHITESPACE@[36; 37) 29 WHITESPACE@[36; 37) " "
30 PATH_TYPE@[37; 40) 30 PATH_TYPE@[37; 40)
31 PATH@[37; 40) 31 PATH@[37; 40)
32 PATH_SEGMENT@[37; 40) 32 PATH_SEGMENT@[37; 40)
33 NAME_REF@[37; 40) 33 NAME_REF@[37; 40)
34 IDENT@[37; 40) "i32" 34 IDENT@[37; 40) "i32"
35 WHITESPACE@[40; 41) 35 WHITESPACE@[40; 41) " "
36 EQ@[41; 42) 36 EQ@[41; 42) "="
37 WHITESPACE@[42; 43) 37 WHITESPACE@[42; 43) " "
38 LITERAL@[43; 45) 38 LITERAL@[43; 45)
39 INT_NUMBER@[43; 45) "92" 39 INT_NUMBER@[43; 45) "92"
40 SEMI@[45; 46) 40 SEMI@[45; 46) ";"
41 WHITESPACE@[46; 47) 41 WHITESPACE@[46; 47) "\n"
diff --git a/crates/ra_syntax/tests/data/parser/ok/0024_const_item.txt b/crates/ra_syntax/tests/data/parser/ok/0024_const_item.txt
index 9cebc4673..dea8a3a97 100644
--- a/crates/ra_syntax/tests/data/parser/ok/0024_const_item.txt
+++ b/crates/ra_syntax/tests/data/parser/ok/0024_const_item.txt
@@ -1,41 +1,41 @@
1SOURCE_FILE@[0; 46) 1SOURCE_FILE@[0; 46)
2 CONST_DEF@[0; 20) 2 CONST_DEF@[0; 20)
3 CONST_KW@[0; 5) 3 CONST_KW@[0; 5) "const"
4 WHITESPACE@[5; 6) 4 WHITESPACE@[5; 6) " "
5 NAME@[6; 9) 5 NAME@[6; 9)
6 IDENT@[6; 9) "FOO" 6 IDENT@[6; 9) "FOO"
7 COLON@[9; 10) 7 COLON@[9; 10) ":"
8 WHITESPACE@[10; 11) 8 WHITESPACE@[10; 11) " "
9 PATH_TYPE@[11; 14) 9 PATH_TYPE@[11; 14)
10 PATH@[11; 14) 10 PATH@[11; 14)
11 PATH_SEGMENT@[11; 14) 11 PATH_SEGMENT@[11; 14)
12 NAME_REF@[11; 14) 12 NAME_REF@[11; 14)
13 IDENT@[11; 14) "u32" 13 IDENT@[11; 14) "u32"
14 WHITESPACE@[14; 15) 14 WHITESPACE@[14; 15) " "
15 EQ@[15; 16) 15 EQ@[15; 16) "="
16 WHITESPACE@[16; 17) 16 WHITESPACE@[16; 17) " "
17 LITERAL@[17; 19) 17 LITERAL@[17; 19)
18 INT_NUMBER@[17; 19) "92" 18 INT_NUMBER@[17; 19) "92"
19 SEMI@[19; 20) 19 SEMI@[19; 20) ";"
20 WHITESPACE@[20; 21) 20 WHITESPACE@[20; 21) "\n"
21 CONST_DEF@[21; 45) 21 CONST_DEF@[21; 45)
22 CONST_KW@[21; 26) 22 CONST_KW@[21; 26) "const"
23 WHITESPACE@[26; 27) 23 WHITESPACE@[26; 27) " "
24 MUT_KW@[27; 30) 24 MUT_KW@[27; 30) "mut"
25 WHITESPACE@[30; 31) 25 WHITESPACE@[30; 31) " "
26 NAME@[31; 34) 26 NAME@[31; 34)
27 IDENT@[31; 34) "BAR" 27 IDENT@[31; 34) "BAR"
28 COLON@[34; 35) 28 COLON@[34; 35) ":"
29 WHITESPACE@[35; 36) 29 WHITESPACE@[35; 36) " "
30 PATH_TYPE@[36; 39) 30 PATH_TYPE@[36; 39)
31 PATH@[36; 39) 31 PATH@[36; 39)
32 PATH_SEGMENT@[36; 39) 32 PATH_SEGMENT@[36; 39)
33 NAME_REF@[36; 39) 33 NAME_REF@[36; 39)
34 IDENT@[36; 39) "u32" 34 IDENT@[36; 39) "u32"
35 WHITESPACE@[39; 40) 35 WHITESPACE@[39; 40) " "
36 EQ@[40; 41) 36 EQ@[40; 41) "="
37 WHITESPACE@[41; 42) 37 WHITESPACE@[41; 42) " "
38 LITERAL@[42; 44) 38 LITERAL@[42; 44)
39 INT_NUMBER@[42; 44) "62" 39 INT_NUMBER@[42; 44) "62"
40 SEMI@[44; 45) 40 SEMI@[44; 45) ";"
41 WHITESPACE@[45; 46) 41 WHITESPACE@[45; 46) "\n"
diff --git a/crates/ra_syntax/tests/data/parser/ok/0025_extern_fn_in_block.txt b/crates/ra_syntax/tests/data/parser/ok/0025_extern_fn_in_block.txt
index e34ae9c65..a345f4bc2 100644
--- a/crates/ra_syntax/tests/data/parser/ok/0025_extern_fn_in_block.txt
+++ b/crates/ra_syntax/tests/data/parser/ok/0025_extern_fn_in_block.txt
@@ -1,31 +1,31 @@
1SOURCE_FILE@[0; 35) 1SOURCE_FILE@[0; 35)
2 FN_DEF@[0; 34) 2 FN_DEF@[0; 34)
3 FN_KW@[0; 2) 3 FN_KW@[0; 2) "fn"
4 WHITESPACE@[2; 3) 4 WHITESPACE@[2; 3) " "
5 NAME@[3; 7) 5 NAME@[3; 7)
6 IDENT@[3; 7) "main" 6 IDENT@[3; 7) "main"
7 PARAM_LIST@[7; 9) 7 PARAM_LIST@[7; 9)
8 L_PAREN@[7; 8) 8 L_PAREN@[7; 8) "("
9 R_PAREN@[8; 9) 9 R_PAREN@[8; 9) ")"
10 WHITESPACE@[9; 10) 10 WHITESPACE@[9; 10) " "
11 BLOCK@[10; 34) 11 BLOCK@[10; 34)
12 L_CURLY@[10; 11) 12 L_CURLY@[10; 11) "{"
13 WHITESPACE@[11; 16) 13 WHITESPACE@[11; 16) "\n "
14 FN_DEF@[16; 32) 14 FN_DEF@[16; 32)
15 ABI@[16; 22) 15 ABI@[16; 22)
16 EXTERN_KW@[16; 22) 16 EXTERN_KW@[16; 22) "extern"
17 WHITESPACE@[22; 23) 17 WHITESPACE@[22; 23) " "
18 FN_KW@[23; 25) 18 FN_KW@[23; 25) "fn"
19 WHITESPACE@[25; 26) 19 WHITESPACE@[25; 26) " "
20 NAME@[26; 27) 20 NAME@[26; 27)
21 IDENT@[26; 27) "f" 21 IDENT@[26; 27) "f"
22 PARAM_LIST@[27; 29) 22 PARAM_LIST@[27; 29)
23 L_PAREN@[27; 28) 23 L_PAREN@[27; 28) "("
24 R_PAREN@[28; 29) 24 R_PAREN@[28; 29) ")"
25 WHITESPACE@[29; 30) 25 WHITESPACE@[29; 30) " "
26 BLOCK@[30; 32) 26 BLOCK@[30; 32)
27 L_CURLY@[30; 31) 27 L_CURLY@[30; 31) "{"
28 R_CURLY@[31; 32) 28 R_CURLY@[31; 32) "}"
29 WHITESPACE@[32; 33) 29 WHITESPACE@[32; 33) "\n"
30 R_CURLY@[33; 34) 30 R_CURLY@[33; 34) "}"
31 WHITESPACE@[34; 35) 31 WHITESPACE@[34; 35) "\n"
diff --git a/crates/ra_syntax/tests/data/parser/ok/0026_const_fn_in_block.txt b/crates/ra_syntax/tests/data/parser/ok/0026_const_fn_in_block.txt
index 6837c05ff..cbcd15a00 100644
--- a/crates/ra_syntax/tests/data/parser/ok/0026_const_fn_in_block.txt
+++ b/crates/ra_syntax/tests/data/parser/ok/0026_const_fn_in_block.txt
@@ -1,30 +1,30 @@
1SOURCE_FILE@[0; 34) 1SOURCE_FILE@[0; 34)
2 FN_DEF@[0; 33) 2 FN_DEF@[0; 33)
3 FN_KW@[0; 2) 3 FN_KW@[0; 2) "fn"
4 WHITESPACE@[2; 3) 4 WHITESPACE@[2; 3) " "
5 NAME@[3; 7) 5 NAME@[3; 7)
6 IDENT@[3; 7) "main" 6 IDENT@[3; 7) "main"
7 PARAM_LIST@[7; 9) 7 PARAM_LIST@[7; 9)
8 L_PAREN@[7; 8) 8 L_PAREN@[7; 8) "("
9 R_PAREN@[8; 9) 9 R_PAREN@[8; 9) ")"
10 WHITESPACE@[9; 10) 10 WHITESPACE@[9; 10) " "
11 BLOCK@[10; 33) 11 BLOCK@[10; 33)
12 L_CURLY@[10; 11) 12 L_CURLY@[10; 11) "{"
13 WHITESPACE@[11; 16) 13 WHITESPACE@[11; 16) "\n "
14 FN_DEF@[16; 31) 14 FN_DEF@[16; 31)
15 CONST_KW@[16; 21) 15 CONST_KW@[16; 21) "const"
16 WHITESPACE@[21; 22) 16 WHITESPACE@[21; 22) " "
17 FN_KW@[22; 24) 17 FN_KW@[22; 24) "fn"
18 WHITESPACE@[24; 25) 18 WHITESPACE@[24; 25) " "
19 NAME@[25; 26) 19 NAME@[25; 26)
20 IDENT@[25; 26) "f" 20 IDENT@[25; 26) "f"
21 PARAM_LIST@[26; 28) 21 PARAM_LIST@[26; 28)
22 L_PAREN@[26; 27) 22 L_PAREN@[26; 27) "("
23 R_PAREN@[27; 28) 23 R_PAREN@[27; 28) ")"
24 WHITESPACE@[28; 29) 24 WHITESPACE@[28; 29) " "
25 BLOCK@[29; 31) 25 BLOCK@[29; 31)
26 L_CURLY@[29; 30) 26 L_CURLY@[29; 30) "{"
27 R_CURLY@[30; 31) 27 R_CURLY@[30; 31) "}"
28 WHITESPACE@[31; 32) 28 WHITESPACE@[31; 32) "\n"
29 R_CURLY@[32; 33) 29 R_CURLY@[32; 33) "}"
30 WHITESPACE@[33; 34) 30 WHITESPACE@[33; 34) "\n"
diff --git a/crates/ra_syntax/tests/data/parser/ok/0027_unsafe_fn_in_block.txt b/crates/ra_syntax/tests/data/parser/ok/0027_unsafe_fn_in_block.txt
index fe1a1ccbf..f86375983 100644
--- a/crates/ra_syntax/tests/data/parser/ok/0027_unsafe_fn_in_block.txt
+++ b/crates/ra_syntax/tests/data/parser/ok/0027_unsafe_fn_in_block.txt
@@ -1,41 +1,41 @@
1SOURCE_FILE@[0; 53) 1SOURCE_FILE@[0; 53)
2 FN_DEF@[0; 52) 2 FN_DEF@[0; 52)
3 FN_KW@[0; 2) 3 FN_KW@[0; 2) "fn"
4 WHITESPACE@[2; 3) 4 WHITESPACE@[2; 3) " "
5 NAME@[3; 7) 5 NAME@[3; 7)
6 IDENT@[3; 7) "main" 6 IDENT@[3; 7) "main"
7 PARAM_LIST@[7; 9) 7 PARAM_LIST@[7; 9)
8 L_PAREN@[7; 8) 8 L_PAREN@[7; 8) "("
9 R_PAREN@[8; 9) 9 R_PAREN@[8; 9) ")"
10 WHITESPACE@[9; 10) 10 WHITESPACE@[9; 10) " "
11 BLOCK@[10; 52) 11 BLOCK@[10; 52)
12 L_CURLY@[10; 11) 12 L_CURLY@[10; 11) "{"
13 WHITESPACE@[11; 16) 13 WHITESPACE@[11; 16) "\n "
14 FN_DEF@[16; 32) 14 FN_DEF@[16; 32)
15 UNSAFE_KW@[16; 22) 15 UNSAFE_KW@[16; 22) "unsafe"
16 WHITESPACE@[22; 23) 16 WHITESPACE@[22; 23) " "
17 FN_KW@[23; 25) 17 FN_KW@[23; 25) "fn"
18 WHITESPACE@[25; 26) 18 WHITESPACE@[25; 26) " "
19 NAME@[26; 27) 19 NAME@[26; 27)
20 IDENT@[26; 27) "f" 20 IDENT@[26; 27) "f"
21 PARAM_LIST@[27; 29) 21 PARAM_LIST@[27; 29)
22 L_PAREN@[27; 28) 22 L_PAREN@[27; 28) "("
23 R_PAREN@[28; 29) 23 R_PAREN@[28; 29) ")"
24 WHITESPACE@[29; 30) 24 WHITESPACE@[29; 30) " "
25 BLOCK@[30; 32) 25 BLOCK@[30; 32)
26 L_CURLY@[30; 31) 26 L_CURLY@[30; 31) "{"
27 R_CURLY@[31; 32) 27 R_CURLY@[31; 32) "}"
28 WHITESPACE@[32; 37) 28 WHITESPACE@[32; 37) "\n "
29 BLOCK_EXPR@[37; 50) 29 BLOCK_EXPR@[37; 50)
30 UNSAFE_KW@[37; 43) 30 UNSAFE_KW@[37; 43) "unsafe"
31 WHITESPACE@[43; 44) 31 WHITESPACE@[43; 44) " "
32 BLOCK@[44; 50) 32 BLOCK@[44; 50)
33 L_CURLY@[44; 45) 33 L_CURLY@[44; 45) "{"
34 WHITESPACE@[45; 46) 34 WHITESPACE@[45; 46) " "
35 LITERAL@[46; 48) 35 LITERAL@[46; 48)
36 INT_NUMBER@[46; 48) "92" 36 INT_NUMBER@[46; 48) "92"
37 WHITESPACE@[48; 49) 37 WHITESPACE@[48; 49) " "
38 R_CURLY@[49; 50) 38 R_CURLY@[49; 50) "}"
39 WHITESPACE@[50; 51) 39 WHITESPACE@[50; 51) "\n"
40 R_CURLY@[51; 52) 40 R_CURLY@[51; 52) "}"
41 WHITESPACE@[52; 53) 41 WHITESPACE@[52; 53) "\n"
diff --git a/crates/ra_syntax/tests/data/parser/ok/0028_operator_binding_power.txt b/crates/ra_syntax/tests/data/parser/ok/0028_operator_binding_power.txt
index 1427e08fc..b0667643b 100644
--- a/crates/ra_syntax/tests/data/parser/ok/0028_operator_binding_power.txt
+++ b/crates/ra_syntax/tests/data/parser/ok/0028_operator_binding_power.txt
@@ -1,185 +1,185 @@
1SOURCE_FILE@[0; 248) 1SOURCE_FILE@[0; 248)
2 FN_DEF@[0; 247) 2 FN_DEF@[0; 247)
3 FN_KW@[0; 2) 3 FN_KW@[0; 2) "fn"
4 WHITESPACE@[2; 3) 4 WHITESPACE@[2; 3) " "
5 NAME@[3; 16) 5 NAME@[3; 16)
6 IDENT@[3; 16) "binding_power" 6 IDENT@[3; 16) "binding_power"
7 PARAM_LIST@[16; 18) 7 PARAM_LIST@[16; 18)
8 L_PAREN@[16; 17) 8 L_PAREN@[16; 17) "("
9 R_PAREN@[17; 18) 9 R_PAREN@[17; 18) ")"
10 WHITESPACE@[18; 19) 10 WHITESPACE@[18; 19) " "
11 BLOCK@[19; 247) 11 BLOCK@[19; 247)
12 L_CURLY@[19; 20) 12 L_CURLY@[19; 20) "{"
13 WHITESPACE@[20; 25) 13 WHITESPACE@[20; 25) "\n "
14 LET_STMT@[25; 55) 14 LET_STMT@[25; 55)
15 LET_KW@[25; 28) 15 LET_KW@[25; 28) "let"
16 WHITESPACE@[28; 29) 16 WHITESPACE@[28; 29) " "
17 BIND_PAT@[29; 30) 17 BIND_PAT@[29; 30)
18 NAME@[29; 30) 18 NAME@[29; 30)
19 IDENT@[29; 30) "x" 19 IDENT@[29; 30) "x"
20 WHITESPACE@[30; 31) 20 WHITESPACE@[30; 31) " "
21 EQ@[31; 32) 21 EQ@[31; 32) "="
22 WHITESPACE@[32; 33) 22 WHITESPACE@[32; 33) " "
23 BIN_EXPR@[33; 54) 23 BIN_EXPR@[33; 54)
24 BIN_EXPR@[33; 46) 24 BIN_EXPR@[33; 46)
25 LITERAL@[33; 34) 25 LITERAL@[33; 34)
26 INT_NUMBER@[33; 34) "1" 26 INT_NUMBER@[33; 34) "1"
27 WHITESPACE@[34; 35) 27 WHITESPACE@[34; 35) " "
28 PLUS@[35; 36) 28 PLUS@[35; 36) "+"
29 WHITESPACE@[36; 37) 29 WHITESPACE@[36; 37) " "
30 BIN_EXPR@[37; 46) 30 BIN_EXPR@[37; 46)
31 BIN_EXPR@[37; 42) 31 BIN_EXPR@[37; 42)
32 LITERAL@[37; 38) 32 LITERAL@[37; 38)
33 INT_NUMBER@[37; 38) "2" 33 INT_NUMBER@[37; 38) "2"
34 WHITESPACE@[38; 39) 34 WHITESPACE@[38; 39) " "
35 STAR@[39; 40) 35 STAR@[39; 40) "*"
36 WHITESPACE@[40; 41) 36 WHITESPACE@[40; 41) " "
37 LITERAL@[41; 42) 37 LITERAL@[41; 42)
38 INT_NUMBER@[41; 42) "3" 38 INT_NUMBER@[41; 42) "3"
39 WHITESPACE@[42; 43) 39 WHITESPACE@[42; 43) " "
40 PERCENT@[43; 44) 40 PERCENT@[43; 44) "%"
41 WHITESPACE@[44; 45) 41 WHITESPACE@[44; 45) " "
42 LITERAL@[45; 46) 42 LITERAL@[45; 46)
43 INT_NUMBER@[45; 46) "4" 43 INT_NUMBER@[45; 46) "4"
44 WHITESPACE@[46; 47) 44 WHITESPACE@[46; 47) " "
45 MINUS@[47; 48) 45 MINUS@[47; 48) "-"
46 WHITESPACE@[48; 49) 46 WHITESPACE@[48; 49) " "
47 BIN_EXPR@[49; 54) 47 BIN_EXPR@[49; 54)
48 LITERAL@[49; 50) 48 LITERAL@[49; 50)
49 INT_NUMBER@[49; 50) "5" 49 INT_NUMBER@[49; 50) "5"
50 WHITESPACE@[50; 51) 50 WHITESPACE@[50; 51) " "
51 SLASH@[51; 52) 51 SLASH@[51; 52) "/"
52 WHITESPACE@[52; 53) 52 WHITESPACE@[52; 53) " "
53 LITERAL@[53; 54) 53 LITERAL@[53; 54)
54 INT_NUMBER@[53; 54) "6" 54 INT_NUMBER@[53; 54) "6"
55 SEMI@[54; 55) 55 SEMI@[54; 55) ";"
56 WHITESPACE@[55; 60) 56 WHITESPACE@[55; 60) "\n "
57 EXPR_STMT@[60; 70) 57 EXPR_STMT@[60; 70)
58 BIN_EXPR@[60; 69) 58 BIN_EXPR@[60; 69)
59 LITERAL@[60; 61) 59 LITERAL@[60; 61)
60 INT_NUMBER@[60; 61) "1" 60 INT_NUMBER@[60; 61) "1"
61 WHITESPACE@[61; 62) 61 WHITESPACE@[61; 62) " "
62 PLUS@[62; 63) 62 PLUS@[62; 63) "+"
63 WHITESPACE@[63; 64) 63 WHITESPACE@[63; 64) " "
64 BIN_EXPR@[64; 69) 64 BIN_EXPR@[64; 69)
65 LITERAL@[64; 65) 65 LITERAL@[64; 65)
66 INT_NUMBER@[64; 65) "2" 66 INT_NUMBER@[64; 65) "2"
67 WHITESPACE@[65; 66) 67 WHITESPACE@[65; 66) " "
68 STAR@[66; 67) 68 STAR@[66; 67) "*"
69 WHITESPACE@[67; 68) 69 WHITESPACE@[67; 68) " "
70 LITERAL@[68; 69) 70 LITERAL@[68; 69)
71 INT_NUMBER@[68; 69) "3" 71 INT_NUMBER@[68; 69) "3"
72 SEMI@[69; 70) 72 SEMI@[69; 70) ";"
73 WHITESPACE@[70; 75) 73 WHITESPACE@[70; 75) "\n "
74 EXPR_STMT@[75; 86) 74 EXPR_STMT@[75; 86)
75 BIN_EXPR@[75; 85) 75 BIN_EXPR@[75; 85)
76 LITERAL@[75; 76) 76 LITERAL@[75; 76)
77 INT_NUMBER@[75; 76) "1" 77 INT_NUMBER@[75; 76) "1"
78 WHITESPACE@[76; 77) 78 WHITESPACE@[76; 77) " "
79 SHL@[77; 79) 79 SHL@[77; 79) "<<"
80 WHITESPACE@[79; 80) 80 WHITESPACE@[79; 80) " "
81 BIN_EXPR@[80; 85) 81 BIN_EXPR@[80; 85)
82 LITERAL@[80; 81) 82 LITERAL@[80; 81)
83 INT_NUMBER@[80; 81) "2" 83 INT_NUMBER@[80; 81) "2"
84 WHITESPACE@[81; 82) 84 WHITESPACE@[81; 82) " "
85 PLUS@[82; 83) 85 PLUS@[82; 83) "+"
86 WHITESPACE@[83; 84) 86 WHITESPACE@[83; 84) " "
87 LITERAL@[84; 85) 87 LITERAL@[84; 85)
88 INT_NUMBER@[84; 85) "3" 88 INT_NUMBER@[84; 85) "3"
89 SEMI@[85; 86) 89 SEMI@[85; 86) ";"
90 WHITESPACE@[86; 91) 90 WHITESPACE@[86; 91) "\n "
91 EXPR_STMT@[91; 102) 91 EXPR_STMT@[91; 102)
92 BIN_EXPR@[91; 101) 92 BIN_EXPR@[91; 101)
93 LITERAL@[91; 92) 93 LITERAL@[91; 92)
94 INT_NUMBER@[91; 92) "1" 94 INT_NUMBER@[91; 92) "1"
95 WHITESPACE@[92; 93) 95 WHITESPACE@[92; 93) " "
96 AMP@[93; 94) 96 AMP@[93; 94) "&"
97 WHITESPACE@[94; 95) 97 WHITESPACE@[94; 95) " "
98 BIN_EXPR@[95; 101) 98 BIN_EXPR@[95; 101)
99 LITERAL@[95; 96) 99 LITERAL@[95; 96)
100 INT_NUMBER@[95; 96) "2" 100 INT_NUMBER@[95; 96) "2"
101 WHITESPACE@[96; 97) 101 WHITESPACE@[96; 97) " "
102 SHR@[97; 99) 102 SHR@[97; 99) ">>"
103 WHITESPACE@[99; 100) 103 WHITESPACE@[99; 100) " "
104 LITERAL@[100; 101) 104 LITERAL@[100; 101)
105 INT_NUMBER@[100; 101) "3" 105 INT_NUMBER@[100; 101) "3"
106 SEMI@[101; 102) 106 SEMI@[101; 102) ";"
107 WHITESPACE@[102; 107) 107 WHITESPACE@[102; 107) "\n "
108 EXPR_STMT@[107; 117) 108 EXPR_STMT@[107; 117)
109 BIN_EXPR@[107; 116) 109 BIN_EXPR@[107; 116)
110 LITERAL@[107; 108) 110 LITERAL@[107; 108)
111 INT_NUMBER@[107; 108) "1" 111 INT_NUMBER@[107; 108) "1"
112 WHITESPACE@[108; 109) 112 WHITESPACE@[108; 109) " "
113 CARET@[109; 110) 113 CARET@[109; 110) "^"
114 WHITESPACE@[110; 111) 114 WHITESPACE@[110; 111) " "
115 BIN_EXPR@[111; 116) 115 BIN_EXPR@[111; 116)
116 LITERAL@[111; 112) 116 LITERAL@[111; 112)
117 INT_NUMBER@[111; 112) "2" 117 INT_NUMBER@[111; 112) "2"
118 WHITESPACE@[112; 113) 118 WHITESPACE@[112; 113) " "
119 AMP@[113; 114) 119 AMP@[113; 114) "&"
120 WHITESPACE@[114; 115) 120 WHITESPACE@[114; 115) " "
121 LITERAL@[115; 116) 121 LITERAL@[115; 116)
122 INT_NUMBER@[115; 116) "3" 122 INT_NUMBER@[115; 116) "3"
123 SEMI@[116; 117) 123 SEMI@[116; 117) ";"
124 WHITESPACE@[117; 122) 124 WHITESPACE@[117; 122) "\n "
125 EXPR_STMT@[122; 132) 125 EXPR_STMT@[122; 132)
126 BIN_EXPR@[122; 131) 126 BIN_EXPR@[122; 131)
127 LITERAL@[122; 123) 127 LITERAL@[122; 123)
128 INT_NUMBER@[122; 123) "1" 128 INT_NUMBER@[122; 123) "1"
129 WHITESPACE@[123; 124) 129 WHITESPACE@[123; 124) " "
130 PIPE@[124; 125) 130 PIPE@[124; 125) "|"
131 WHITESPACE@[125; 126) 131 WHITESPACE@[125; 126) " "
132 BIN_EXPR@[126; 131) 132 BIN_EXPR@[126; 131)
133 LITERAL@[126; 127) 133 LITERAL@[126; 127)
134 INT_NUMBER@[126; 127) "2" 134 INT_NUMBER@[126; 127) "2"
135 WHITESPACE@[127; 128) 135 WHITESPACE@[127; 128) " "
136 CARET@[128; 129) 136 CARET@[128; 129) "^"
137 WHITESPACE@[129; 130) 137 WHITESPACE@[129; 130) " "
138 LITERAL@[130; 131) 138 LITERAL@[130; 131)
139 INT_NUMBER@[130; 131) "3" 139 INT_NUMBER@[130; 131) "3"
140 SEMI@[131; 132) 140 SEMI@[131; 132) ";"
141 WHITESPACE@[132; 137) 141 WHITESPACE@[132; 137) "\n "
142 EXPR_STMT@[137; 148) 142 EXPR_STMT@[137; 148)
143 BIN_EXPR@[137; 147) 143 BIN_EXPR@[137; 147)
144 LITERAL@[137; 138) 144 LITERAL@[137; 138)
145 INT_NUMBER@[137; 138) "1" 145 INT_NUMBER@[137; 138) "1"
146 WHITESPACE@[138; 139) 146 WHITESPACE@[138; 139) " "
147 EQEQ@[139; 141) 147 EQEQ@[139; 141) "=="
148 WHITESPACE@[141; 142) 148 WHITESPACE@[141; 142) " "
149 BIN_EXPR@[142; 147) 149 BIN_EXPR@[142; 147)
150 LITERAL@[142; 143) 150 LITERAL@[142; 143)
151 INT_NUMBER@[142; 143) "2" 151 INT_NUMBER@[142; 143) "2"
152 WHITESPACE@[143; 144) 152 WHITESPACE@[143; 144) " "
153 PIPE@[144; 145) 153 PIPE@[144; 145) "|"
154 WHITESPACE@[145; 146) 154 WHITESPACE@[145; 146) " "
155 LITERAL@[146; 147) 155 LITERAL@[146; 147)
156 INT_NUMBER@[146; 147) "3" 156 INT_NUMBER@[146; 147) "3"
157 SEMI@[147; 148) 157 SEMI@[147; 148) ";"
158 WHITESPACE@[148; 153) 158 WHITESPACE@[148; 153) "\n "
159 EXPR_STMT@[153; 165) 159 EXPR_STMT@[153; 165)
160 BIN_EXPR@[153; 164) 160 BIN_EXPR@[153; 164)
161 LITERAL@[153; 154) 161 LITERAL@[153; 154)
162 INT_NUMBER@[153; 154) "1" 162 INT_NUMBER@[153; 154) "1"
163 WHITESPACE@[154; 155) 163 WHITESPACE@[154; 155) " "
164 AMPAMP@[155; 157) 164 AMPAMP@[155; 157) "&&"
165 WHITESPACE@[157; 158) 165 WHITESPACE@[157; 158) " "
166 BIN_EXPR@[158; 164) 166 BIN_EXPR@[158; 164)
167 LITERAL@[158; 159) 167 LITERAL@[158; 159)
168 INT_NUMBER@[158; 159) "2" 168 INT_NUMBER@[158; 159) "2"
169 WHITESPACE@[159; 160) 169 WHITESPACE@[159; 160) " "
170 EQEQ@[160; 162) 170 EQEQ@[160; 162) "=="
171 WHITESPACE@[162; 163) 171 WHITESPACE@[162; 163) " "
172 LITERAL@[163; 164) 172 LITERAL@[163; 164)
173 INT_NUMBER@[163; 164) "3" 173 INT_NUMBER@[163; 164) "3"
174 SEMI@[164; 165) 174 SEMI@[164; 165) ";"
175 WHITESPACE@[165; 170) 175 WHITESPACE@[165; 170) "\n "
176 COMMENT@[170; 184) 176 COMMENT@[170; 184) "//1 || 2 && 2;"
177 WHITESPACE@[184; 189) 177 WHITESPACE@[184; 189) "\n "
178 COMMENT@[189; 203) 178 COMMENT@[189; 203) "//1 .. 2 || 3;"
179 WHITESPACE@[203; 208) 179 WHITESPACE@[203; 208) "\n "
180 COMMENT@[208; 221) 180 COMMENT@[208; 221) "//1 = 2 .. 3;"
181 WHITESPACE@[221; 226) 181 WHITESPACE@[221; 226) "\n "
182 COMMENT@[226; 245) 182 COMMENT@[226; 245) "//---&*1 - --2 * 9;"
183 WHITESPACE@[245; 246) 183 WHITESPACE@[245; 246) "\n"
184 R_CURLY@[246; 247) 184 R_CURLY@[246; 247) "}"
185 WHITESPACE@[247; 248) 185 WHITESPACE@[247; 248) "\n"
diff --git a/crates/ra_syntax/tests/data/parser/ok/0029_range_forms.txt b/crates/ra_syntax/tests/data/parser/ok/0029_range_forms.txt
index e59542ba1..e4db98c88 100644
--- a/crates/ra_syntax/tests/data/parser/ok/0029_range_forms.txt
+++ b/crates/ra_syntax/tests/data/parser/ok/0029_range_forms.txt
@@ -1,45 +1,45 @@
1SOURCE_FILE@[0; 153) 1SOURCE_FILE@[0; 153)
2 FN_DEF@[0; 152) 2 FN_DEF@[0; 152)
3 FN_KW@[0; 2) 3 FN_KW@[0; 2) "fn"
4 WHITESPACE@[2; 3) 4 WHITESPACE@[2; 3) " "
5 NAME@[3; 6) 5 NAME@[3; 6)
6 IDENT@[3; 6) "foo" 6 IDENT@[3; 6) "foo"
7 PARAM_LIST@[6; 8) 7 PARAM_LIST@[6; 8)
8 L_PAREN@[6; 7) 8 L_PAREN@[6; 7) "("
9 R_PAREN@[7; 8) 9 R_PAREN@[7; 8) ")"
10 WHITESPACE@[8; 9) 10 WHITESPACE@[8; 9) " "
11 BLOCK@[9; 152) 11 BLOCK@[9; 152)
12 L_CURLY@[9; 10) 12 L_CURLY@[9; 10) "{"
13 WHITESPACE@[10; 15) 13 WHITESPACE@[10; 15) "\n "
14 EXPR_STMT@[15; 23) 14 EXPR_STMT@[15; 23)
15 RANGE_EXPR@[15; 22) 15 RANGE_EXPR@[15; 22)
16 DOTDOT@[15; 17) 16 DOTDOT@[15; 17) ".."
17 BIN_EXPR@[17; 22) 17 BIN_EXPR@[17; 22)
18 LITERAL@[17; 18) 18 LITERAL@[17; 18)
19 INT_NUMBER@[17; 18) "1" 19 INT_NUMBER@[17; 18) "1"
20 WHITESPACE@[18; 19) 20 WHITESPACE@[18; 19) " "
21 PLUS@[19; 20) 21 PLUS@[19; 20) "+"
22 WHITESPACE@[20; 21) 22 WHITESPACE@[20; 21) " "
23 LITERAL@[21; 22) 23 LITERAL@[21; 22)
24 INT_NUMBER@[21; 22) "1" 24 INT_NUMBER@[21; 22) "1"
25 SEMI@[22; 23) 25 SEMI@[22; 23) ";"
26 WHITESPACE@[23; 28) 26 WHITESPACE@[23; 28) "\n "
27 EXPR_STMT@[28; 36) 27 EXPR_STMT@[28; 36)
28 BIN_EXPR@[28; 35) 28 BIN_EXPR@[28; 35)
29 RANGE_EXPR@[28; 31) 29 RANGE_EXPR@[28; 31)
30 DOTDOT@[28; 30) 30 DOTDOT@[28; 30) ".."
31 PATH_EXPR@[30; 31) 31 PATH_EXPR@[30; 31)
32 PATH@[30; 31) 32 PATH@[30; 31)
33 PATH_SEGMENT@[30; 31) 33 PATH_SEGMENT@[30; 31)
34 NAME_REF@[30; 31) 34 NAME_REF@[30; 31)
35 IDENT@[30; 31) "z" 35 IDENT@[30; 31) "z"
36 WHITESPACE@[31; 32) 36 WHITESPACE@[31; 32) " "
37 EQ@[32; 33) 37 EQ@[32; 33) "="
38 WHITESPACE@[33; 34) 38 WHITESPACE@[33; 34) " "
39 LITERAL@[34; 35) 39 LITERAL@[34; 35)
40 INT_NUMBER@[34; 35) "2" 40 INT_NUMBER@[34; 35) "2"
41 SEMI@[35; 36) 41 SEMI@[35; 36) ";"
42 WHITESPACE@[36; 41) 42 WHITESPACE@[36; 41) "\n "
43 EXPR_STMT@[41; 59) 43 EXPR_STMT@[41; 59)
44 BIN_EXPR@[41; 58) 44 BIN_EXPR@[41; 58)
45 PATH_EXPR@[41; 42) 45 PATH_EXPR@[41; 42)
@@ -47,67 +47,67 @@ SOURCE_FILE@[0; 153)
47 PATH_SEGMENT@[41; 42) 47 PATH_SEGMENT@[41; 42)
48 NAME_REF@[41; 42) 48 NAME_REF@[41; 42)
49 IDENT@[41; 42) "x" 49 IDENT@[41; 42) "x"
50 WHITESPACE@[42; 43) 50 WHITESPACE@[42; 43) " "
51 EQ@[43; 44) 51 EQ@[43; 44) "="
52 WHITESPACE@[44; 45) 52 WHITESPACE@[44; 45) " "
53 RANGE_EXPR@[45; 58) 53 RANGE_EXPR@[45; 58)
54 LITERAL@[45; 50) 54 LITERAL@[45; 50)
55 FALSE_KW@[45; 50) 55 FALSE_KW@[45; 50) "false"
56 DOTDOT@[50; 52) 56 DOTDOT@[50; 52) ".."
57 BIN_EXPR@[52; 58) 57 BIN_EXPR@[52; 58)
58 LITERAL@[52; 53) 58 LITERAL@[52; 53)
59 INT_NUMBER@[52; 53) "1" 59 INT_NUMBER@[52; 53) "1"
60 WHITESPACE@[53; 54) 60 WHITESPACE@[53; 54) " "
61 EQEQ@[54; 56) 61 EQEQ@[54; 56) "=="
62 WHITESPACE@[56; 57) 62 WHITESPACE@[56; 57) " "
63 LITERAL@[57; 58) 63 LITERAL@[57; 58)
64 INT_NUMBER@[57; 58) "1" 64 INT_NUMBER@[57; 58) "1"
65 SEMI@[58; 59) 65 SEMI@[58; 59) ";"
66 WHITESPACE@[59; 64) 66 WHITESPACE@[59; 64) "\n "
67 LET_STMT@[64; 76) 67 LET_STMT@[64; 76)
68 LET_KW@[64; 67) 68 LET_KW@[64; 67) "let"
69 WHITESPACE@[67; 68) 69 WHITESPACE@[67; 68) " "
70 BIND_PAT@[68; 69) 70 BIND_PAT@[68; 69)
71 NAME@[68; 69) 71 NAME@[68; 69)
72 IDENT@[68; 69) "x" 72 IDENT@[68; 69) "x"
73 WHITESPACE@[69; 70) 73 WHITESPACE@[69; 70) " "
74 EQ@[70; 71) 74 EQ@[70; 71) "="
75 WHITESPACE@[71; 72) 75 WHITESPACE@[71; 72) " "
76 RANGE_EXPR@[72; 75) 76 RANGE_EXPR@[72; 75)
77 LITERAL@[72; 73) 77 LITERAL@[72; 73)
78 INT_NUMBER@[72; 73) "1" 78 INT_NUMBER@[72; 73) "1"
79 DOTDOT@[73; 75) 79 DOTDOT@[73; 75) ".."
80 SEMI@[75; 76) 80 SEMI@[75; 76) ";"
81 WHITESPACE@[76; 86) 81 WHITESPACE@[76; 86) "\n \n "
82 EXPR_STMT@[86; 95) 82 EXPR_STMT@[86; 95)
83 RANGE_EXPR@[86; 94) 83 RANGE_EXPR@[86; 94)
84 DOTDOTEQ@[86; 89) 84 DOTDOTEQ@[86; 89) "..="
85 BIN_EXPR@[89; 94) 85 BIN_EXPR@[89; 94)
86 LITERAL@[89; 90) 86 LITERAL@[89; 90)
87 INT_NUMBER@[89; 90) "1" 87 INT_NUMBER@[89; 90) "1"
88 WHITESPACE@[90; 91) 88 WHITESPACE@[90; 91) " "
89 PLUS@[91; 92) 89 PLUS@[91; 92) "+"
90 WHITESPACE@[92; 93) 90 WHITESPACE@[92; 93) " "
91 LITERAL@[93; 94) 91 LITERAL@[93; 94)
92 INT_NUMBER@[93; 94) "1" 92 INT_NUMBER@[93; 94) "1"
93 SEMI@[94; 95) 93 SEMI@[94; 95) ";"
94 WHITESPACE@[95; 100) 94 WHITESPACE@[95; 100) "\n "
95 EXPR_STMT@[100; 109) 95 EXPR_STMT@[100; 109)
96 BIN_EXPR@[100; 108) 96 BIN_EXPR@[100; 108)
97 RANGE_EXPR@[100; 104) 97 RANGE_EXPR@[100; 104)
98 DOTDOTEQ@[100; 103) 98 DOTDOTEQ@[100; 103) "..="
99 PATH_EXPR@[103; 104) 99 PATH_EXPR@[103; 104)
100 PATH@[103; 104) 100 PATH@[103; 104)
101 PATH_SEGMENT@[103; 104) 101 PATH_SEGMENT@[103; 104)
102 NAME_REF@[103; 104) 102 NAME_REF@[103; 104)
103 IDENT@[103; 104) "z" 103 IDENT@[103; 104) "z"
104 WHITESPACE@[104; 105) 104 WHITESPACE@[104; 105) " "
105 EQ@[105; 106) 105 EQ@[105; 106) "="
106 WHITESPACE@[106; 107) 106 WHITESPACE@[106; 107) " "
107 LITERAL@[107; 108) 107 LITERAL@[107; 108)
108 INT_NUMBER@[107; 108) "2" 108 INT_NUMBER@[107; 108) "2"
109 SEMI@[108; 109) 109 SEMI@[108; 109) ";"
110 WHITESPACE@[109; 114) 110 WHITESPACE@[109; 114) "\n "
111 EXPR_STMT@[114; 133) 111 EXPR_STMT@[114; 133)
112 BIN_EXPR@[114; 132) 112 BIN_EXPR@[114; 132)
113 PATH_EXPR@[114; 115) 113 PATH_EXPR@[114; 115)
@@ -115,37 +115,37 @@ SOURCE_FILE@[0; 153)
115 PATH_SEGMENT@[114; 115) 115 PATH_SEGMENT@[114; 115)
116 NAME_REF@[114; 115) 116 NAME_REF@[114; 115)
117 IDENT@[114; 115) "x" 117 IDENT@[114; 115) "x"
118 WHITESPACE@[115; 116) 118 WHITESPACE@[115; 116) " "
119 EQ@[116; 117) 119 EQ@[116; 117) "="
120 WHITESPACE@[117; 118) 120 WHITESPACE@[117; 118) " "
121 RANGE_EXPR@[118; 132) 121 RANGE_EXPR@[118; 132)
122 LITERAL@[118; 123) 122 LITERAL@[118; 123)
123 FALSE_KW@[118; 123) 123 FALSE_KW@[118; 123) "false"
124 DOTDOTEQ@[123; 126) 124 DOTDOTEQ@[123; 126) "..="
125 BIN_EXPR@[126; 132) 125 BIN_EXPR@[126; 132)
126 LITERAL@[126; 127) 126 LITERAL@[126; 127)
127 INT_NUMBER@[126; 127) "1" 127 INT_NUMBER@[126; 127) "1"
128 WHITESPACE@[127; 128) 128 WHITESPACE@[127; 128) " "
129 EQEQ@[128; 130) 129 EQEQ@[128; 130) "=="
130 WHITESPACE@[130; 131) 130 WHITESPACE@[130; 131) " "
131 LITERAL@[131; 132) 131 LITERAL@[131; 132)
132 INT_NUMBER@[131; 132) "1" 132 INT_NUMBER@[131; 132) "1"
133 SEMI@[132; 133) 133 SEMI@[132; 133) ";"
134 WHITESPACE@[133; 138) 134 WHITESPACE@[133; 138) "\n "
135 LET_STMT@[138; 150) 135 LET_STMT@[138; 150)
136 LET_KW@[138; 141) 136 LET_KW@[138; 141) "let"
137 WHITESPACE@[141; 142) 137 WHITESPACE@[141; 142) " "
138 BIND_PAT@[142; 143) 138 BIND_PAT@[142; 143)
139 NAME@[142; 143) 139 NAME@[142; 143)
140 IDENT@[142; 143) "x" 140 IDENT@[142; 143) "x"
141 WHITESPACE@[143; 144) 141 WHITESPACE@[143; 144) " "
142 EQ@[144; 145) 142 EQ@[144; 145) "="
143 WHITESPACE@[145; 146) 143 WHITESPACE@[145; 146) " "
144 RANGE_EXPR@[146; 149) 144 RANGE_EXPR@[146; 149)
145 LITERAL@[146; 147) 145 LITERAL@[146; 147)
146 INT_NUMBER@[146; 147) "1" 146 INT_NUMBER@[146; 147) "1"
147 DOTDOT@[147; 149) 147 DOTDOT@[147; 149) ".."
148 SEMI@[149; 150) 148 SEMI@[149; 150) ";"
149 WHITESPACE@[150; 151) 149 WHITESPACE@[150; 151) "\n"
150 R_CURLY@[151; 152) 150 R_CURLY@[151; 152) "}"
151 WHITESPACE@[152; 153) 151 WHITESPACE@[152; 153) "\n"
diff --git a/crates/ra_syntax/tests/data/parser/ok/0030_traits.txt b/crates/ra_syntax/tests/data/parser/ok/0030_traits.txt
index b89f34884..b656c1a81 100644
--- a/crates/ra_syntax/tests/data/parser/ok/0030_traits.txt
+++ b/crates/ra_syntax/tests/data/parser/ok/0030_traits.txt
@@ -1,93 +1,93 @@
1SOURCE_FILE@[0; 164) 1SOURCE_FILE@[0; 164)
2 TRAIT_DEF@[0; 66) 2 TRAIT_DEF@[0; 66)
3 VISIBILITY@[0; 3) 3 VISIBILITY@[0; 3)
4 PUB_KW@[0; 3) 4 PUB_KW@[0; 3) "pub"
5 WHITESPACE@[3; 4) 5 WHITESPACE@[3; 4) " "
6 TRAIT_KW@[4; 9) 6 TRAIT_KW@[4; 9) "trait"
7 WHITESPACE@[9; 10) 7 WHITESPACE@[9; 10) " "
8 NAME@[10; 22) 8 NAME@[10; 22)
9 IDENT@[10; 22) "WriteMessage" 9 IDENT@[10; 22) "WriteMessage"
10 WHITESPACE@[22; 23) 10 WHITESPACE@[22; 23) " "
11 ITEM_LIST@[23; 66) 11 ITEM_LIST@[23; 66)
12 L_CURLY@[23; 24) 12 L_CURLY@[23; 24) "{"
13 WHITESPACE@[24; 29) 13 WHITESPACE@[24; 29) "\n "
14 FN_DEF@[29; 64) 14 FN_DEF@[29; 64)
15 FN_KW@[29; 31) 15 FN_KW@[29; 31) "fn"
16 WHITESPACE@[31; 32) 16 WHITESPACE@[31; 32) " "
17 NAME@[32; 45) 17 NAME@[32; 45)
18 IDENT@[32; 45) "write_message" 18 IDENT@[32; 45) "write_message"
19 PARAM_LIST@[45; 63) 19 PARAM_LIST@[45; 63)
20 L_PAREN@[45; 46) 20 L_PAREN@[45; 46) "("
21 PARAM@[46; 62) 21 PARAM@[46; 62)
22 REFERENCE_TYPE@[46; 62) 22 REFERENCE_TYPE@[46; 62)
23 AMP@[46; 47) 23 AMP@[46; 47) "&"
24 PATH_TYPE@[47; 62) 24 PATH_TYPE@[47; 62)
25 PATH@[47; 62) 25 PATH@[47; 62)
26 PATH_SEGMENT@[47; 62) 26 PATH_SEGMENT@[47; 62)
27 NAME_REF@[47; 62) 27 NAME_REF@[47; 62)
28 IDENT@[47; 62) "FrontendMessage" 28 IDENT@[47; 62) "FrontendMessage"
29 R_PAREN@[62; 63) 29 R_PAREN@[62; 63) ")"
30 SEMI@[63; 64) 30 SEMI@[63; 64) ";"
31 WHITESPACE@[64; 65) 31 WHITESPACE@[64; 65) "\n"
32 R_CURLY@[65; 66) 32 R_CURLY@[65; 66) "}"
33 WHITESPACE@[66; 68) 33 WHITESPACE@[66; 68) "\n\n"
34 TRAIT_DEF@[68; 104) 34 TRAIT_DEF@[68; 104)
35 TRAIT_KW@[68; 73) 35 TRAIT_KW@[68; 73) "trait"
36 WHITESPACE@[73; 74) 36 WHITESPACE@[73; 74) " "
37 NAME@[74; 82) 37 NAME@[74; 82)
38 IDENT@[74; 82) "Runnable" 38 IDENT@[74; 82) "Runnable"
39 WHITESPACE@[82; 83) 39 WHITESPACE@[82; 83) " "
40 ITEM_LIST@[83; 104) 40 ITEM_LIST@[83; 104)
41 L_CURLY@[83; 84) 41 L_CURLY@[83; 84) "{"
42 WHITESPACE@[84; 89) 42 WHITESPACE@[84; 89) "\n "
43 FN_DEF@[89; 102) 43 FN_DEF@[89; 102)
44 FN_KW@[89; 91) 44 FN_KW@[89; 91) "fn"
45 WHITESPACE@[91; 92) 45 WHITESPACE@[91; 92) " "
46 NAME@[92; 99) 46 NAME@[92; 99)
47 IDENT@[92; 99) "handler" 47 IDENT@[92; 99) "handler"
48 PARAM_LIST@[99; 101) 48 PARAM_LIST@[99; 101)
49 L_PAREN@[99; 100) 49 L_PAREN@[99; 100) "("
50 R_PAREN@[100; 101) 50 R_PAREN@[100; 101) ")"
51 SEMI@[101; 102) 51 SEMI@[101; 102) ";"
52 WHITESPACE@[102; 103) 52 WHITESPACE@[102; 103) "\n"
53 R_CURLY@[103; 104) 53 R_CURLY@[103; 104) "}"
54 WHITESPACE@[104; 106) 54 WHITESPACE@[104; 106) "\n\n"
55 TRAIT_DEF@[106; 163) 55 TRAIT_DEF@[106; 163)
56 TRAIT_KW@[106; 111) 56 TRAIT_KW@[106; 111) "trait"
57 WHITESPACE@[111; 112) 57 WHITESPACE@[111; 112) " "
58 NAME@[112; 125) 58 NAME@[112; 125)
59 IDENT@[112; 125) "TraitWithExpr" 59 IDENT@[112; 125) "TraitWithExpr"
60 WHITESPACE@[125; 126) 60 WHITESPACE@[125; 126) " "
61 ITEM_LIST@[126; 163) 61 ITEM_LIST@[126; 163)
62 L_CURLY@[126; 127) 62 L_CURLY@[126; 127) "{"
63 WHITESPACE@[127; 132) 63 WHITESPACE@[127; 132) "\n "
64 FN_DEF@[132; 161) 64 FN_DEF@[132; 161)
65 FN_KW@[132; 134) 65 FN_KW@[132; 134) "fn"
66 WHITESPACE@[134; 135) 66 WHITESPACE@[134; 135) " "
67 NAME@[135; 147) 67 NAME@[135; 147)
68 IDENT@[135; 147) "fn_with_expr" 68 IDENT@[135; 147) "fn_with_expr"
69 PARAM_LIST@[147; 160) 69 PARAM_LIST@[147; 160)
70 L_PAREN@[147; 148) 70 L_PAREN@[147; 148) "("
71 PARAM@[148; 159) 71 PARAM@[148; 159)
72 BIND_PAT@[148; 149) 72 BIND_PAT@[148; 149)
73 NAME@[148; 149) 73 NAME@[148; 149)
74 IDENT@[148; 149) "x" 74 IDENT@[148; 149) "x"
75 COLON@[149; 150) 75 COLON@[149; 150) ":"
76 WHITESPACE@[150; 151) 76 WHITESPACE@[150; 151) " "
77 ARRAY_TYPE@[151; 159) 77 ARRAY_TYPE@[151; 159)
78 L_BRACK@[151; 152) 78 L_BRACK@[151; 152) "["
79 PATH_TYPE@[152; 155) 79 PATH_TYPE@[152; 155)
80 PATH@[152; 155) 80 PATH@[152; 155)
81 PATH_SEGMENT@[152; 155) 81 PATH_SEGMENT@[152; 155)
82 NAME_REF@[152; 155) 82 NAME_REF@[152; 155)
83 IDENT@[152; 155) "i32" 83 IDENT@[152; 155) "i32"
84 SEMI@[155; 156) 84 SEMI@[155; 156) ";"
85 WHITESPACE@[156; 157) 85 WHITESPACE@[156; 157) " "
86 LITERAL@[157; 158) 86 LITERAL@[157; 158)
87 INT_NUMBER@[157; 158) "1" 87 INT_NUMBER@[157; 158) "1"
88 R_BRACK@[158; 159) 88 R_BRACK@[158; 159) "]"
89 R_PAREN@[159; 160) 89 R_PAREN@[159; 160) ")"
90 SEMI@[160; 161) 90 SEMI@[160; 161) ";"
91 WHITESPACE@[161; 162) 91 WHITESPACE@[161; 162) "\n"
92 R_CURLY@[162; 163) 92 R_CURLY@[162; 163) "}"
93 WHITESPACE@[163; 164) 93 WHITESPACE@[163; 164) "\n"
diff --git a/crates/ra_syntax/tests/data/parser/ok/0031_extern.txt b/crates/ra_syntax/tests/data/parser/ok/0031_extern.txt
index 9091c08e2..badbf76c5 100644
--- a/crates/ra_syntax/tests/data/parser/ok/0031_extern.txt
+++ b/crates/ra_syntax/tests/data/parser/ok/0031_extern.txt
@@ -1,973 +1,973 @@
1SOURCE_FILE@[0; 1598) 1SOURCE_FILE@[0; 1598)
2 EXTERN_BLOCK@[0; 1597) 2 EXTERN_BLOCK@[0; 1597)
3 ABI@[0; 6) 3 ABI@[0; 6)
4 EXTERN_KW@[0; 6) 4 EXTERN_KW@[0; 6) "extern"
5 WHITESPACE@[6; 7) 5 WHITESPACE@[6; 7) " "
6 EXTERN_ITEM_LIST@[7; 1597) 6 EXTERN_ITEM_LIST@[7; 1597)
7 L_CURLY@[7; 8) 7 L_CURLY@[7; 8) "{"
8 WHITESPACE@[8; 13) 8 WHITESPACE@[8; 13) "\n "
9 FN_DEF@[13; 87) 9 FN_DEF@[13; 87)
10 VISIBILITY@[13; 16) 10 VISIBILITY@[13; 16)
11 PUB_KW@[13; 16) 11 PUB_KW@[13; 16) "pub"
12 WHITESPACE@[16; 17) 12 WHITESPACE@[16; 17) " "
13 FN_KW@[17; 19) 13 FN_KW@[17; 19) "fn"
14 WHITESPACE@[19; 20) 14 WHITESPACE@[19; 20) " "
15 NAME@[20; 26) 15 NAME@[20; 26)
16 IDENT@[20; 26) "socket" 16 IDENT@[20; 26) "socket"
17 PARAM_LIST@[26; 75) 17 PARAM_LIST@[26; 75)
18 L_PAREN@[26; 27) 18 L_PAREN@[26; 27) "("
19 PARAM@[27; 42) 19 PARAM@[27; 42)
20 BIND_PAT@[27; 33) 20 BIND_PAT@[27; 33)
21 NAME@[27; 33) 21 NAME@[27; 33)
22 IDENT@[27; 33) "domain" 22 IDENT@[27; 33) "domain"
23 COLON@[33; 34) 23 COLON@[33; 34) ":"
24 WHITESPACE@[34; 35) 24 WHITESPACE@[34; 35) " "
25 PATH_TYPE@[35; 42) 25 PATH_TYPE@[35; 42)
26 PATH@[35; 42) 26 PATH@[35; 42)
27 PATH_SEGMENT@[35; 42) 27 PATH_SEGMENT@[35; 42)
28 COLONCOLON@[35; 37) 28 COLONCOLON@[35; 37) "::"
29 NAME_REF@[37; 42) 29 NAME_REF@[37; 42)
30 IDENT@[37; 42) "c_int" 30 IDENT@[37; 42) "c_int"
31 COMMA@[42; 43) 31 COMMA@[42; 43) ","
32 WHITESPACE@[43; 44) 32 WHITESPACE@[43; 44) " "
33 PARAM@[44; 55) 33 PARAM@[44; 55)
34 BIND_PAT@[44; 46) 34 BIND_PAT@[44; 46)
35 NAME@[44; 46) 35 NAME@[44; 46)
36 IDENT@[44; 46) "ty" 36 IDENT@[44; 46) "ty"
37 COLON@[46; 47) 37 COLON@[46; 47) ":"
38 WHITESPACE@[47; 48) 38 WHITESPACE@[47; 48) " "
39 PATH_TYPE@[48; 55) 39 PATH_TYPE@[48; 55)
40 PATH@[48; 55) 40 PATH@[48; 55)
41 PATH_SEGMENT@[48; 55) 41 PATH_SEGMENT@[48; 55)
42 COLONCOLON@[48; 50) 42 COLONCOLON@[48; 50) "::"
43 NAME_REF@[50; 55) 43 NAME_REF@[50; 55)
44 IDENT@[50; 55) "c_int" 44 IDENT@[50; 55) "c_int"
45 COMMA@[55; 56) 45 COMMA@[55; 56) ","
46 WHITESPACE@[56; 57) 46 WHITESPACE@[56; 57) " "
47 PARAM@[57; 74) 47 PARAM@[57; 74)
48 BIND_PAT@[57; 65) 48 BIND_PAT@[57; 65)
49 NAME@[57; 65) 49 NAME@[57; 65)
50 IDENT@[57; 65) "protocol" 50 IDENT@[57; 65) "protocol"
51 COLON@[65; 66) 51 COLON@[65; 66) ":"
52 WHITESPACE@[66; 67) 52 WHITESPACE@[66; 67) " "
53 PATH_TYPE@[67; 74) 53 PATH_TYPE@[67; 74)
54 PATH@[67; 74) 54 PATH@[67; 74)
55 PATH_SEGMENT@[67; 74) 55 PATH_SEGMENT@[67; 74)
56 COLONCOLON@[67; 69) 56 COLONCOLON@[67; 69) "::"
57 NAME_REF@[69; 74) 57 NAME_REF@[69; 74)
58 IDENT@[69; 74) "c_int" 58 IDENT@[69; 74) "c_int"
59 R_PAREN@[74; 75) 59 R_PAREN@[74; 75) ")"
60 WHITESPACE@[75; 76) 60 WHITESPACE@[75; 76) " "
61 RET_TYPE@[76; 86) 61 RET_TYPE@[76; 86)
62 THIN_ARROW@[76; 78) 62 THIN_ARROW@[76; 78) "->"
63 WHITESPACE@[78; 79) 63 WHITESPACE@[78; 79) " "
64 PATH_TYPE@[79; 86) 64 PATH_TYPE@[79; 86)
65 PATH@[79; 86) 65 PATH@[79; 86)
66 PATH_SEGMENT@[79; 86) 66 PATH_SEGMENT@[79; 86)
67 COLONCOLON@[79; 81) 67 COLONCOLON@[79; 81) "::"
68 NAME_REF@[81; 86) 68 NAME_REF@[81; 86)
69 IDENT@[81; 86) "c_int" 69 IDENT@[81; 86) "c_int"
70 SEMI@[86; 87) 70 SEMI@[86; 87) ";"
71 WHITESPACE@[87; 92) 71 WHITESPACE@[87; 92) "\n "
72 FN_DEF@[92; 167) 72 FN_DEF@[92; 167)
73 VISIBILITY@[92; 95) 73 VISIBILITY@[92; 95)
74 PUB_KW@[92; 95) 74 PUB_KW@[92; 95) "pub"
75 WHITESPACE@[95; 96) 75 WHITESPACE@[95; 96) " "
76 FN_KW@[96; 98) 76 FN_KW@[96; 98) "fn"
77 WHITESPACE@[98; 99) 77 WHITESPACE@[98; 99) " "
78 NAME@[99; 103) 78 NAME@[99; 103)
79 IDENT@[99; 103) "bind" 79 IDENT@[99; 103) "bind"
80 PARAM_LIST@[103; 155) 80 PARAM_LIST@[103; 155)
81 L_PAREN@[103; 104) 81 L_PAREN@[103; 104) "("
82 PARAM@[104; 115) 82 PARAM@[104; 115)
83 BIND_PAT@[104; 106) 83 BIND_PAT@[104; 106)
84 NAME@[104; 106) 84 NAME@[104; 106)
85 IDENT@[104; 106) "fd" 85 IDENT@[104; 106) "fd"
86 COLON@[106; 107) 86 COLON@[106; 107) ":"
87 WHITESPACE@[107; 108) 87 WHITESPACE@[107; 108) " "
88 PATH_TYPE@[108; 115) 88 PATH_TYPE@[108; 115)
89 PATH@[108; 115) 89 PATH@[108; 115)
90 PATH_SEGMENT@[108; 115) 90 PATH_SEGMENT@[108; 115)
91 COLONCOLON@[108; 110) 91 COLONCOLON@[108; 110) "::"
92 NAME_REF@[110; 115) 92 NAME_REF@[110; 115)
93 IDENT@[110; 115) "c_int" 93 IDENT@[110; 115) "c_int"
94 COMMA@[115; 116) 94 COMMA@[115; 116) ","
95 WHITESPACE@[116; 117) 95 WHITESPACE@[116; 117) " "
96 PARAM@[117; 138) 96 PARAM@[117; 138)
97 BIND_PAT@[117; 121) 97 BIND_PAT@[117; 121)
98 NAME@[117; 121) 98 NAME@[117; 121)
99 IDENT@[117; 121) "addr" 99 IDENT@[117; 121) "addr"
100 COLON@[121; 122) 100 COLON@[121; 122) ":"
101 WHITESPACE@[122; 123) 101 WHITESPACE@[122; 123) " "
102 POINTER_TYPE@[123; 138) 102 POINTER_TYPE@[123; 138)
103 STAR@[123; 124) 103 STAR@[123; 124) "*"
104 CONST_KW@[124; 129) 104 CONST_KW@[124; 129) "const"
105 WHITESPACE@[129; 130) 105 WHITESPACE@[129; 130) " "
106 PATH_TYPE@[130; 138) 106 PATH_TYPE@[130; 138)
107 PATH@[130; 138) 107 PATH@[130; 138)
108 PATH_SEGMENT@[130; 138) 108 PATH_SEGMENT@[130; 138)
109 NAME_REF@[130; 138) 109 NAME_REF@[130; 138)
110 IDENT@[130; 138) "sockaddr" 110 IDENT@[130; 138) "sockaddr"
111 COMMA@[138; 139) 111 COMMA@[138; 139) ","
112 WHITESPACE@[139; 140) 112 WHITESPACE@[139; 140) " "
113 PARAM@[140; 154) 113 PARAM@[140; 154)
114 BIND_PAT@[140; 143) 114 BIND_PAT@[140; 143)
115 NAME@[140; 143) 115 NAME@[140; 143)
116 IDENT@[140; 143) "len" 116 IDENT@[140; 143) "len"
117 COLON@[143; 144) 117 COLON@[143; 144) ":"
118 WHITESPACE@[144; 145) 118 WHITESPACE@[144; 145) " "
119 PATH_TYPE@[145; 154) 119 PATH_TYPE@[145; 154)
120 PATH@[145; 154) 120 PATH@[145; 154)
121 PATH_SEGMENT@[145; 154) 121 PATH_SEGMENT@[145; 154)
122 NAME_REF@[145; 154) 122 NAME_REF@[145; 154)
123 IDENT@[145; 154) "socklen_t" 123 IDENT@[145; 154) "socklen_t"
124 R_PAREN@[154; 155) 124 R_PAREN@[154; 155) ")"
125 WHITESPACE@[155; 156) 125 WHITESPACE@[155; 156) " "
126 RET_TYPE@[156; 166) 126 RET_TYPE@[156; 166)
127 THIN_ARROW@[156; 158) 127 THIN_ARROW@[156; 158) "->"
128 WHITESPACE@[158; 159) 128 WHITESPACE@[158; 159) " "
129 PATH_TYPE@[159; 166) 129 PATH_TYPE@[159; 166)
130 PATH@[159; 166) 130 PATH@[159; 166)
131 PATH_SEGMENT@[159; 166) 131 PATH_SEGMENT@[159; 166)
132 COLONCOLON@[159; 161) 132 COLONCOLON@[159; 161) "::"
133 NAME_REF@[161; 166) 133 NAME_REF@[161; 166)
134 IDENT@[161; 166) "c_int" 134 IDENT@[161; 166) "c_int"
135 SEMI@[166; 167) 135 SEMI@[166; 167) ";"
136 WHITESPACE@[167; 172) 136 WHITESPACE@[167; 172) "\n "
137 FN_DEF@[172; 276) 137 FN_DEF@[172; 276)
138 VISIBILITY@[172; 175) 138 VISIBILITY@[172; 175)
139 PUB_KW@[172; 175) 139 PUB_KW@[172; 175) "pub"
140 WHITESPACE@[175; 176) 140 WHITESPACE@[175; 176) " "
141 FN_KW@[176; 178) 141 FN_KW@[176; 178) "fn"
142 WHITESPACE@[178; 179) 142 WHITESPACE@[178; 179) " "
143 NAME@[179; 186) 143 NAME@[179; 186)
144 IDENT@[179; 186) "connect" 144 IDENT@[179; 186) "connect"
145 PARAM_LIST@[186; 264) 145 PARAM_LIST@[186; 264)
146 L_PAREN@[186; 187) 146 L_PAREN@[186; 187) "("
147 PARAM@[187; 202) 147 PARAM@[187; 202)
148 BIND_PAT@[187; 193) 148 BIND_PAT@[187; 193)
149 NAME@[187; 193) 149 NAME@[187; 193)
150 IDENT@[187; 193) "socket" 150 IDENT@[187; 193) "socket"
151 COLON@[193; 194) 151 COLON@[193; 194) ":"
152 WHITESPACE@[194; 195) 152 WHITESPACE@[194; 195) " "
153 PATH_TYPE@[195; 202) 153 PATH_TYPE@[195; 202)
154 PATH@[195; 202) 154 PATH@[195; 202)
155 PATH_SEGMENT@[195; 202) 155 PATH_SEGMENT@[195; 202)
156 COLONCOLON@[195; 197) 156 COLONCOLON@[195; 197) "::"
157 NAME_REF@[197; 202) 157 NAME_REF@[197; 202)
158 IDENT@[197; 202) "c_int" 158 IDENT@[197; 202) "c_int"
159 COMMA@[202; 203) 159 COMMA@[202; 203) ","
160 WHITESPACE@[203; 204) 160 WHITESPACE@[203; 204) " "
161 PARAM@[204; 228) 161 PARAM@[204; 228)
162 BIND_PAT@[204; 211) 162 BIND_PAT@[204; 211)
163 NAME@[204; 211) 163 NAME@[204; 211)
164 IDENT@[204; 211) "address" 164 IDENT@[204; 211) "address"
165 COLON@[211; 212) 165 COLON@[211; 212) ":"
166 WHITESPACE@[212; 213) 166 WHITESPACE@[212; 213) " "
167 POINTER_TYPE@[213; 228) 167 POINTER_TYPE@[213; 228)
168 STAR@[213; 214) 168 STAR@[213; 214) "*"
169 CONST_KW@[214; 219) 169 CONST_KW@[214; 219) "const"
170 WHITESPACE@[219; 220) 170 WHITESPACE@[219; 220) " "
171 PATH_TYPE@[220; 228) 171 PATH_TYPE@[220; 228)
172 PATH@[220; 228) 172 PATH@[220; 228)
173 PATH_SEGMENT@[220; 228) 173 PATH_SEGMENT@[220; 228)
174 NAME_REF@[220; 228) 174 NAME_REF@[220; 228)
175 IDENT@[220; 228) "sockaddr" 175 IDENT@[220; 228) "sockaddr"
176 COMMA@[228; 229) 176 COMMA@[228; 229) ","
177 WHITESPACE@[229; 249) 177 WHITESPACE@[229; 249) "\n "
178 PARAM@[249; 263) 178 PARAM@[249; 263)
179 BIND_PAT@[249; 252) 179 BIND_PAT@[249; 252)
180 NAME@[249; 252) 180 NAME@[249; 252)
181 IDENT@[249; 252) "len" 181 IDENT@[249; 252) "len"
182 COLON@[252; 253) 182 COLON@[252; 253) ":"
183 WHITESPACE@[253; 254) 183 WHITESPACE@[253; 254) " "
184 PATH_TYPE@[254; 263) 184 PATH_TYPE@[254; 263)
185 PATH@[254; 263) 185 PATH@[254; 263)
186 PATH_SEGMENT@[254; 263) 186 PATH_SEGMENT@[254; 263)
187 NAME_REF@[254; 263) 187 NAME_REF@[254; 263)
188 IDENT@[254; 263) "socklen_t" 188 IDENT@[254; 263) "socklen_t"
189 R_PAREN@[263; 264) 189 R_PAREN@[263; 264) ")"
190 WHITESPACE@[264; 265) 190 WHITESPACE@[264; 265) " "
191 RET_TYPE@[265; 275) 191 RET_TYPE@[265; 275)
192 THIN_ARROW@[265; 267) 192 THIN_ARROW@[265; 267) "->"
193 WHITESPACE@[267; 268) 193 WHITESPACE@[267; 268) " "
194 PATH_TYPE@[268; 275) 194 PATH_TYPE@[268; 275)
195 PATH@[268; 275) 195 PATH@[268; 275)
196 PATH_SEGMENT@[268; 275) 196 PATH_SEGMENT@[268; 275)
197 COLONCOLON@[268; 270) 197 COLONCOLON@[268; 270) "::"
198 NAME_REF@[270; 275) 198 NAME_REF@[270; 275)
199 IDENT@[270; 275) "c_int" 199 IDENT@[270; 275) "c_int"
200 SEMI@[275; 276) 200 SEMI@[275; 276) ";"
201 WHITESPACE@[276; 281) 201 WHITESPACE@[276; 281) "\n "
202 FN_DEF@[281; 341) 202 FN_DEF@[281; 341)
203 VISIBILITY@[281; 284) 203 VISIBILITY@[281; 284)
204 PUB_KW@[281; 284) 204 PUB_KW@[281; 284) "pub"
205 WHITESPACE@[284; 285) 205 WHITESPACE@[284; 285) " "
206 FN_KW@[285; 287) 206 FN_KW@[285; 287) "fn"
207 WHITESPACE@[287; 288) 207 WHITESPACE@[287; 288) " "
208 NAME@[288; 294) 208 NAME@[288; 294)
209 IDENT@[288; 294) "listen" 209 IDENT@[288; 294) "listen"
210 PARAM_LIST@[294; 329) 210 PARAM_LIST@[294; 329)
211 L_PAREN@[294; 295) 211 L_PAREN@[294; 295) "("
212 PARAM@[295; 310) 212 PARAM@[295; 310)
213 BIND_PAT@[295; 301) 213 BIND_PAT@[295; 301)
214 NAME@[295; 301) 214 NAME@[295; 301)
215 IDENT@[295; 301) "socket" 215 IDENT@[295; 301) "socket"
216 COLON@[301; 302) 216 COLON@[301; 302) ":"
217 WHITESPACE@[302; 303) 217 WHITESPACE@[302; 303) " "
218 PATH_TYPE@[303; 310) 218 PATH_TYPE@[303; 310)
219 PATH@[303; 310) 219 PATH@[303; 310)
220 PATH_SEGMENT@[303; 310) 220 PATH_SEGMENT@[303; 310)
221 COLONCOLON@[303; 305) 221 COLONCOLON@[303; 305) "::"
222 NAME_REF@[305; 310) 222 NAME_REF@[305; 310)
223 IDENT@[305; 310) "c_int" 223 IDENT@[305; 310) "c_int"
224 COMMA@[310; 311) 224 COMMA@[310; 311) ","
225 WHITESPACE@[311; 312) 225 WHITESPACE@[311; 312) " "
226 PARAM@[312; 328) 226 PARAM@[312; 328)
227 BIND_PAT@[312; 319) 227 BIND_PAT@[312; 319)
228 NAME@[312; 319) 228 NAME@[312; 319)
229 IDENT@[312; 319) "backlog" 229 IDENT@[312; 319) "backlog"
230 COLON@[319; 320) 230 COLON@[319; 320) ":"
231 WHITESPACE@[320; 321) 231 WHITESPACE@[320; 321) " "
232 PATH_TYPE@[321; 328) 232 PATH_TYPE@[321; 328)
233 PATH@[321; 328) 233 PATH@[321; 328)
234 PATH_SEGMENT@[321; 328) 234 PATH_SEGMENT@[321; 328)
235 COLONCOLON@[321; 323) 235 COLONCOLON@[321; 323) "::"
236 NAME_REF@[323; 328) 236 NAME_REF@[323; 328)
237 IDENT@[323; 328) "c_int" 237 IDENT@[323; 328) "c_int"
238 R_PAREN@[328; 329) 238 R_PAREN@[328; 329) ")"
239 WHITESPACE@[329; 330) 239 WHITESPACE@[329; 330) " "
240 RET_TYPE@[330; 340) 240 RET_TYPE@[330; 340)
241 THIN_ARROW@[330; 332) 241 THIN_ARROW@[330; 332) "->"
242 WHITESPACE@[332; 333) 242 WHITESPACE@[332; 333) " "
243 PATH_TYPE@[333; 340) 243 PATH_TYPE@[333; 340)
244 PATH@[333; 340) 244 PATH@[333; 340)
245 PATH_SEGMENT@[333; 340) 245 PATH_SEGMENT@[333; 340)
246 COLONCOLON@[333; 335) 246 COLONCOLON@[333; 335) "::"
247 NAME_REF@[335; 340) 247 NAME_REF@[335; 340)
248 IDENT@[335; 340) "c_int" 248 IDENT@[335; 340) "c_int"
249 SEMI@[340; 341) 249 SEMI@[340; 341) ";"
250 WHITESPACE@[341; 346) 250 WHITESPACE@[341; 346) "\n "
251 FN_DEF@[346; 469) 251 FN_DEF@[346; 469)
252 VISIBILITY@[346; 349) 252 VISIBILITY@[346; 349)
253 PUB_KW@[346; 349) 253 PUB_KW@[346; 349) "pub"
254 WHITESPACE@[349; 350) 254 WHITESPACE@[349; 350) " "
255 FN_KW@[350; 352) 255 FN_KW@[350; 352) "fn"
256 WHITESPACE@[352; 353) 256 WHITESPACE@[352; 353) " "
257 NAME@[353; 364) 257 NAME@[353; 364)
258 IDENT@[353; 364) "getsockname" 258 IDENT@[353; 364) "getsockname"
259 PARAM_LIST@[364; 457) 259 PARAM_LIST@[364; 457)
260 L_PAREN@[364; 365) 260 L_PAREN@[364; 365) "("
261 PARAM@[365; 380) 261 PARAM@[365; 380)
262 BIND_PAT@[365; 371) 262 BIND_PAT@[365; 371)
263 NAME@[365; 371) 263 NAME@[365; 371)
264 IDENT@[365; 371) "socket" 264 IDENT@[365; 371) "socket"
265 COLON@[371; 372) 265 COLON@[371; 372) ":"
266 WHITESPACE@[372; 373) 266 WHITESPACE@[372; 373) " "
267 PATH_TYPE@[373; 380) 267 PATH_TYPE@[373; 380)
268 PATH@[373; 380) 268 PATH@[373; 380)
269 PATH_SEGMENT@[373; 380) 269 PATH_SEGMENT@[373; 380)
270 COLONCOLON@[373; 375) 270 COLONCOLON@[373; 375) "::"
271 NAME_REF@[375; 380) 271 NAME_REF@[375; 380)
272 IDENT@[375; 380) "c_int" 272 IDENT@[375; 380) "c_int"
273 COMMA@[380; 381) 273 COMMA@[380; 381) ","
274 WHITESPACE@[381; 382) 274 WHITESPACE@[381; 382) " "
275 PARAM@[382; 404) 275 PARAM@[382; 404)
276 BIND_PAT@[382; 389) 276 BIND_PAT@[382; 389)
277 NAME@[382; 389) 277 NAME@[382; 389)
278 IDENT@[382; 389) "address" 278 IDENT@[382; 389) "address"
279 COLON@[389; 390) 279 COLON@[389; 390) ":"
280 WHITESPACE@[390; 391) 280 WHITESPACE@[390; 391) " "
281 POINTER_TYPE@[391; 404) 281 POINTER_TYPE@[391; 404)
282 STAR@[391; 392) 282 STAR@[391; 392) "*"
283 MUT_KW@[392; 395) 283 MUT_KW@[392; 395) "mut"
284 WHITESPACE@[395; 396) 284 WHITESPACE@[395; 396) " "
285 PATH_TYPE@[396; 404) 285 PATH_TYPE@[396; 404)
286 PATH@[396; 404) 286 PATH@[396; 404)
287 PATH_SEGMENT@[396; 404) 287 PATH_SEGMENT@[396; 404)
288 NAME_REF@[396; 404) 288 NAME_REF@[396; 404)
289 IDENT@[396; 404) "sockaddr" 289 IDENT@[396; 404) "sockaddr"
290 COMMA@[404; 405) 290 COMMA@[404; 405) ","
291 WHITESPACE@[405; 429) 291 WHITESPACE@[405; 429) "\n "
292 PARAM@[429; 456) 292 PARAM@[429; 456)
293 BIND_PAT@[429; 440) 293 BIND_PAT@[429; 440)
294 NAME@[429; 440) 294 NAME@[429; 440)
295 IDENT@[429; 440) "address_len" 295 IDENT@[429; 440) "address_len"
296 COLON@[440; 441) 296 COLON@[440; 441) ":"
297 WHITESPACE@[441; 442) 297 WHITESPACE@[441; 442) " "
298 POINTER_TYPE@[442; 456) 298 POINTER_TYPE@[442; 456)
299 STAR@[442; 443) 299 STAR@[442; 443) "*"
300 MUT_KW@[443; 446) 300 MUT_KW@[443; 446) "mut"
301 WHITESPACE@[446; 447) 301 WHITESPACE@[446; 447) " "
302 PATH_TYPE@[447; 456) 302 PATH_TYPE@[447; 456)
303 PATH@[447; 456) 303 PATH@[447; 456)
304 PATH_SEGMENT@[447; 456) 304 PATH_SEGMENT@[447; 456)
305 NAME_REF@[447; 456) 305 NAME_REF@[447; 456)
306 IDENT@[447; 456) "socklen_t" 306 IDENT@[447; 456) "socklen_t"
307 R_PAREN@[456; 457) 307 R_PAREN@[456; 457) ")"
308 WHITESPACE@[457; 458) 308 WHITESPACE@[457; 458) " "
309 RET_TYPE@[458; 468) 309 RET_TYPE@[458; 468)
310 THIN_ARROW@[458; 460) 310 THIN_ARROW@[458; 460) "->"
311 WHITESPACE@[460; 461) 311 WHITESPACE@[460; 461) " "
312 PATH_TYPE@[461; 468) 312 PATH_TYPE@[461; 468)
313 PATH@[461; 468) 313 PATH@[461; 468)
314 PATH_SEGMENT@[461; 468) 314 PATH_SEGMENT@[461; 468)
315 COLONCOLON@[461; 463) 315 COLONCOLON@[461; 463) "::"
316 NAME_REF@[463; 468) 316 NAME_REF@[463; 468)
317 IDENT@[463; 468) "c_int" 317 IDENT@[463; 468) "c_int"
318 SEMI@[468; 469) 318 SEMI@[468; 469) ";"
319 WHITESPACE@[469; 474) 319 WHITESPACE@[469; 474) "\n "
320 FN_DEF@[474; 691) 320 FN_DEF@[474; 691)
321 VISIBILITY@[474; 477) 321 VISIBILITY@[474; 477)
322 PUB_KW@[474; 477) 322 PUB_KW@[474; 477) "pub"
323 WHITESPACE@[477; 478) 323 WHITESPACE@[477; 478) " "
324 FN_KW@[478; 480) 324 FN_KW@[478; 480) "fn"
325 WHITESPACE@[480; 481) 325 WHITESPACE@[480; 481) " "
326 NAME@[481; 491) 326 NAME@[481; 491)
327 IDENT@[481; 491) "getsockopt" 327 IDENT@[481; 491) "getsockopt"
328 PARAM_LIST@[491; 679) 328 PARAM_LIST@[491; 679)
329 L_PAREN@[491; 492) 329 L_PAREN@[491; 492) "("
330 PARAM@[492; 507) 330 PARAM@[492; 507)
331 BIND_PAT@[492; 498) 331 BIND_PAT@[492; 498)
332 NAME@[492; 498) 332 NAME@[492; 498)
333 IDENT@[492; 498) "sockfd" 333 IDENT@[492; 498) "sockfd"
334 COLON@[498; 499) 334 COLON@[498; 499) ":"
335 WHITESPACE@[499; 500) 335 WHITESPACE@[499; 500) " "
336 PATH_TYPE@[500; 507) 336 PATH_TYPE@[500; 507)
337 PATH@[500; 507) 337 PATH@[500; 507)
338 PATH_SEGMENT@[500; 507) 338 PATH_SEGMENT@[500; 507)
339 COLONCOLON@[500; 502) 339 COLONCOLON@[500; 502) "::"
340 NAME_REF@[502; 507) 340 NAME_REF@[502; 507)
341 IDENT@[502; 507) "c_int" 341 IDENT@[502; 507) "c_int"
342 COMMA@[507; 508) 342 COMMA@[507; 508) ","
343 WHITESPACE@[508; 531) 343 WHITESPACE@[508; 531) "\n "
344 PARAM@[531; 545) 344 PARAM@[531; 545)
345 BIND_PAT@[531; 536) 345 BIND_PAT@[531; 536)
346 NAME@[531; 536) 346 NAME@[531; 536)
347 IDENT@[531; 536) "level" 347 IDENT@[531; 536) "level"
348 COLON@[536; 537) 348 COLON@[536; 537) ":"
349 WHITESPACE@[537; 538) 349 WHITESPACE@[537; 538) " "
350 PATH_TYPE@[538; 545) 350 PATH_TYPE@[538; 545)
351 PATH@[538; 545) 351 PATH@[538; 545)
352 PATH_SEGMENT@[538; 545) 352 PATH_SEGMENT@[538; 545)
353 COLONCOLON@[538; 540) 353 COLONCOLON@[538; 540) "::"
354 NAME_REF@[540; 545) 354 NAME_REF@[540; 545)
355 IDENT@[540; 545) "c_int" 355 IDENT@[540; 545) "c_int"
356 COMMA@[545; 546) 356 COMMA@[545; 546) ","
357 WHITESPACE@[546; 569) 357 WHITESPACE@[546; 569) "\n "
358 PARAM@[569; 585) 358 PARAM@[569; 585)
359 BIND_PAT@[569; 576) 359 BIND_PAT@[569; 576)
360 NAME@[569; 576) 360 NAME@[569; 576)
361 IDENT@[569; 576) "optname" 361 IDENT@[569; 576) "optname"
362 COLON@[576; 577) 362 COLON@[576; 577) ":"
363 WHITESPACE@[577; 578) 363 WHITESPACE@[577; 578) " "
364 PATH_TYPE@[578; 585) 364 PATH_TYPE@[578; 585)
365 PATH@[578; 585) 365 PATH@[578; 585)
366 PATH_SEGMENT@[578; 585) 366 PATH_SEGMENT@[578; 585)
367 COLONCOLON@[578; 580) 367 COLONCOLON@[578; 580) "::"
368 NAME_REF@[580; 585) 368 NAME_REF@[580; 585)
369 IDENT@[580; 585) "c_int" 369 IDENT@[580; 585) "c_int"
370 COMMA@[585; 586) 370 COMMA@[585; 586) ","
371 WHITESPACE@[586; 609) 371 WHITESPACE@[586; 609) "\n "
372 PARAM@[609; 630) 372 PARAM@[609; 630)
373 BIND_PAT@[609; 615) 373 BIND_PAT@[609; 615)
374 NAME@[609; 615) 374 NAME@[609; 615)
375 IDENT@[609; 615) "optval" 375 IDENT@[609; 615) "optval"
376 COLON@[615; 616) 376 COLON@[615; 616) ":"
377 WHITESPACE@[616; 617) 377 WHITESPACE@[616; 617) " "
378 POINTER_TYPE@[617; 630) 378 POINTER_TYPE@[617; 630)
379 STAR@[617; 618) 379 STAR@[617; 618) "*"
380 MUT_KW@[618; 621) 380 MUT_KW@[618; 621) "mut"
381 WHITESPACE@[621; 622) 381 WHITESPACE@[621; 622) " "
382 PATH_TYPE@[622; 630) 382 PATH_TYPE@[622; 630)
383 PATH@[622; 630) 383 PATH@[622; 630)
384 PATH_SEGMENT@[622; 630) 384 PATH_SEGMENT@[622; 630)
385 COLONCOLON@[622; 624) 385 COLONCOLON@[622; 624) "::"
386 NAME_REF@[624; 630) 386 NAME_REF@[624; 630)
387 IDENT@[624; 630) "c_void" 387 IDENT@[624; 630) "c_void"
388 COMMA@[630; 631) 388 COMMA@[630; 631) ","
389 WHITESPACE@[631; 654) 389 WHITESPACE@[631; 654) "\n "
390 PARAM@[654; 678) 390 PARAM@[654; 678)
391 BIND_PAT@[654; 660) 391 BIND_PAT@[654; 660)
392 NAME@[654; 660) 392 NAME@[654; 660)
393 IDENT@[654; 660) "optlen" 393 IDENT@[654; 660) "optlen"
394 COLON@[660; 661) 394 COLON@[660; 661) ":"
395 WHITESPACE@[661; 662) 395 WHITESPACE@[661; 662) " "
396 POINTER_TYPE@[662; 678) 396 POINTER_TYPE@[662; 678)
397 STAR@[662; 663) 397 STAR@[662; 663) "*"
398 MUT_KW@[663; 666) 398 MUT_KW@[663; 666) "mut"
399 WHITESPACE@[666; 667) 399 WHITESPACE@[666; 667) " "
400 PATH_TYPE@[667; 678) 400 PATH_TYPE@[667; 678)
401 PATH@[667; 678) 401 PATH@[667; 678)
402 PATH_SEGMENT@[667; 678) 402 PATH_SEGMENT@[667; 678)
403 COLONCOLON@[667; 669) 403 COLONCOLON@[667; 669) "::"
404 NAME_REF@[669; 678) 404 NAME_REF@[669; 678)
405 IDENT@[669; 678) "socklen_t" 405 IDENT@[669; 678) "socklen_t"
406 R_PAREN@[678; 679) 406 R_PAREN@[678; 679) ")"
407 WHITESPACE@[679; 680) 407 WHITESPACE@[679; 680) " "
408 RET_TYPE@[680; 690) 408 RET_TYPE@[680; 690)
409 THIN_ARROW@[680; 682) 409 THIN_ARROW@[680; 682) "->"
410 WHITESPACE@[682; 683) 410 WHITESPACE@[682; 683) " "
411 PATH_TYPE@[683; 690) 411 PATH_TYPE@[683; 690)
412 PATH@[683; 690) 412 PATH@[683; 690)
413 PATH_SEGMENT@[683; 690) 413 PATH_SEGMENT@[683; 690)
414 COLONCOLON@[683; 685) 414 COLONCOLON@[683; 685) "::"
415 NAME_REF@[685; 690) 415 NAME_REF@[685; 690)
416 IDENT@[685; 690) "c_int" 416 IDENT@[685; 690) "c_int"
417 SEMI@[690; 691) 417 SEMI@[690; 691) ";"
418 WHITESPACE@[691; 696) 418 WHITESPACE@[691; 696) "\n "
419 FN_DEF@[696; 864) 419 FN_DEF@[696; 864)
420 VISIBILITY@[696; 699) 420 VISIBILITY@[696; 699)
421 PUB_KW@[696; 699) 421 PUB_KW@[696; 699) "pub"
422 WHITESPACE@[699; 700) 422 WHITESPACE@[699; 700) " "
423 FN_KW@[700; 702) 423 FN_KW@[700; 702) "fn"
424 WHITESPACE@[702; 703) 424 WHITESPACE@[702; 703) " "
425 NAME@[703; 713) 425 NAME@[703; 713)
426 IDENT@[703; 713) "setsockopt" 426 IDENT@[703; 713) "setsockopt"
427 PARAM_LIST@[713; 852) 427 PARAM_LIST@[713; 852)
428 L_PAREN@[713; 714) 428 L_PAREN@[713; 714) "("
429 PARAM@[714; 729) 429 PARAM@[714; 729)
430 BIND_PAT@[714; 720) 430 BIND_PAT@[714; 720)
431 NAME@[714; 720) 431 NAME@[714; 720)
432 IDENT@[714; 720) "socket" 432 IDENT@[714; 720) "socket"
433 COLON@[720; 721) 433 COLON@[720; 721) ":"
434 WHITESPACE@[721; 722) 434 WHITESPACE@[721; 722) " "
435 PATH_TYPE@[722; 729) 435 PATH_TYPE@[722; 729)
436 PATH@[722; 729) 436 PATH@[722; 729)
437 PATH_SEGMENT@[722; 729) 437 PATH_SEGMENT@[722; 729)
438 COLONCOLON@[722; 724) 438 COLONCOLON@[722; 724) "::"
439 NAME_REF@[724; 729) 439 NAME_REF@[724; 729)
440 IDENT@[724; 729) "c_int" 440 IDENT@[724; 729) "c_int"
441 COMMA@[729; 730) 441 COMMA@[729; 730) ","
442 WHITESPACE@[730; 731) 442 WHITESPACE@[730; 731) " "
443 PARAM@[731; 745) 443 PARAM@[731; 745)
444 BIND_PAT@[731; 736) 444 BIND_PAT@[731; 736)
445 NAME@[731; 736) 445 NAME@[731; 736)
446 IDENT@[731; 736) "level" 446 IDENT@[731; 736) "level"
447 COLON@[736; 737) 447 COLON@[736; 737) ":"
448 WHITESPACE@[737; 738) 448 WHITESPACE@[737; 738) " "
449 PATH_TYPE@[738; 745) 449 PATH_TYPE@[738; 745)
450 PATH@[738; 745) 450 PATH@[738; 745)
451 PATH_SEGMENT@[738; 745) 451 PATH_SEGMENT@[738; 745)
452 COLONCOLON@[738; 740) 452 COLONCOLON@[738; 740) "::"
453 NAME_REF@[740; 745) 453 NAME_REF@[740; 745)
454 IDENT@[740; 745) "c_int" 454 IDENT@[740; 745) "c_int"
455 COMMA@[745; 746) 455 COMMA@[745; 746) ","
456 WHITESPACE@[746; 747) 456 WHITESPACE@[746; 747) " "
457 PARAM@[747; 760) 457 PARAM@[747; 760)
458 BIND_PAT@[747; 751) 458 BIND_PAT@[747; 751)
459 NAME@[747; 751) 459 NAME@[747; 751)
460 IDENT@[747; 751) "name" 460 IDENT@[747; 751) "name"
461 COLON@[751; 752) 461 COLON@[751; 752) ":"
462 WHITESPACE@[752; 753) 462 WHITESPACE@[752; 753) " "
463 PATH_TYPE@[753; 760) 463 PATH_TYPE@[753; 760)
464 PATH@[753; 760) 464 PATH@[753; 760)
465 PATH_SEGMENT@[753; 760) 465 PATH_SEGMENT@[753; 760)
466 COLONCOLON@[753; 755) 466 COLONCOLON@[753; 755) "::"
467 NAME_REF@[755; 760) 467 NAME_REF@[755; 760)
468 IDENT@[755; 760) "c_int" 468 IDENT@[755; 760) "c_int"
469 COMMA@[760; 761) 469 COMMA@[760; 761) ","
470 WHITESPACE@[761; 784) 470 WHITESPACE@[761; 784) "\n "
471 PARAM@[784; 806) 471 PARAM@[784; 806)
472 BIND_PAT@[784; 789) 472 BIND_PAT@[784; 789)
473 NAME@[784; 789) 473 NAME@[784; 789)
474 IDENT@[784; 789) "value" 474 IDENT@[784; 789) "value"
475 COLON@[789; 790) 475 COLON@[789; 790) ":"
476 WHITESPACE@[790; 791) 476 WHITESPACE@[790; 791) " "
477 POINTER_TYPE@[791; 806) 477 POINTER_TYPE@[791; 806)
478 STAR@[791; 792) 478 STAR@[791; 792) "*"
479 CONST_KW@[792; 797) 479 CONST_KW@[792; 797) "const"
480 WHITESPACE@[797; 798) 480 WHITESPACE@[797; 798) " "
481 PATH_TYPE@[798; 806) 481 PATH_TYPE@[798; 806)
482 PATH@[798; 806) 482 PATH@[798; 806)
483 PATH_SEGMENT@[798; 806) 483 PATH_SEGMENT@[798; 806)
484 COLONCOLON@[798; 800) 484 COLONCOLON@[798; 800) "::"
485 NAME_REF@[800; 806) 485 NAME_REF@[800; 806)
486 IDENT@[800; 806) "c_void" 486 IDENT@[800; 806) "c_void"
487 COMMA@[806; 807) 487 COMMA@[806; 807) ","
488 WHITESPACE@[807; 830) 488 WHITESPACE@[807; 830) "\n "
489 PARAM@[830; 851) 489 PARAM@[830; 851)
490 BIND_PAT@[830; 840) 490 BIND_PAT@[830; 840)
491 NAME@[830; 840) 491 NAME@[830; 840)
492 IDENT@[830; 840) "option_len" 492 IDENT@[830; 840) "option_len"
493 COLON@[840; 841) 493 COLON@[840; 841) ":"
494 WHITESPACE@[841; 842) 494 WHITESPACE@[841; 842) " "
495 PATH_TYPE@[842; 851) 495 PATH_TYPE@[842; 851)
496 PATH@[842; 851) 496 PATH@[842; 851)
497 PATH_SEGMENT@[842; 851) 497 PATH_SEGMENT@[842; 851)
498 NAME_REF@[842; 851) 498 NAME_REF@[842; 851)
499 IDENT@[842; 851) "socklen_t" 499 IDENT@[842; 851) "socklen_t"
500 R_PAREN@[851; 852) 500 R_PAREN@[851; 852) ")"
501 WHITESPACE@[852; 853) 501 WHITESPACE@[852; 853) " "
502 RET_TYPE@[853; 863) 502 RET_TYPE@[853; 863)
503 THIN_ARROW@[853; 855) 503 THIN_ARROW@[853; 855) "->"
504 WHITESPACE@[855; 856) 504 WHITESPACE@[855; 856) " "
505 PATH_TYPE@[856; 863) 505 PATH_TYPE@[856; 863)
506 PATH@[856; 863) 506 PATH@[856; 863)
507 PATH_SEGMENT@[856; 863) 507 PATH_SEGMENT@[856; 863)
508 COLONCOLON@[856; 858) 508 COLONCOLON@[856; 858) "::"
509 NAME_REF@[858; 863) 509 NAME_REF@[858; 863)
510 IDENT@[858; 863) "c_int" 510 IDENT@[858; 863) "c_int"
511 SEMI@[863; 864) 511 SEMI@[863; 864) ";"
512 WHITESPACE@[864; 869) 512 WHITESPACE@[864; 869) "\n "
513 FN_DEF@[869; 992) 513 FN_DEF@[869; 992)
514 VISIBILITY@[869; 872) 514 VISIBILITY@[869; 872)
515 PUB_KW@[869; 872) 515 PUB_KW@[869; 872) "pub"
516 WHITESPACE@[872; 873) 516 WHITESPACE@[872; 873) " "
517 FN_KW@[873; 875) 517 FN_KW@[873; 875) "fn"
518 WHITESPACE@[875; 876) 518 WHITESPACE@[875; 876) " "
519 NAME@[876; 887) 519 NAME@[876; 887)
520 IDENT@[876; 887) "getpeername" 520 IDENT@[876; 887) "getpeername"
521 PARAM_LIST@[887; 980) 521 PARAM_LIST@[887; 980)
522 L_PAREN@[887; 888) 522 L_PAREN@[887; 888) "("
523 PARAM@[888; 903) 523 PARAM@[888; 903)
524 BIND_PAT@[888; 894) 524 BIND_PAT@[888; 894)
525 NAME@[888; 894) 525 NAME@[888; 894)
526 IDENT@[888; 894) "socket" 526 IDENT@[888; 894) "socket"
527 COLON@[894; 895) 527 COLON@[894; 895) ":"
528 WHITESPACE@[895; 896) 528 WHITESPACE@[895; 896) " "
529 PATH_TYPE@[896; 903) 529 PATH_TYPE@[896; 903)
530 PATH@[896; 903) 530 PATH@[896; 903)
531 PATH_SEGMENT@[896; 903) 531 PATH_SEGMENT@[896; 903)
532 COLONCOLON@[896; 898) 532 COLONCOLON@[896; 898) "::"
533 NAME_REF@[898; 903) 533 NAME_REF@[898; 903)
534 IDENT@[898; 903) "c_int" 534 IDENT@[898; 903) "c_int"
535 COMMA@[903; 904) 535 COMMA@[903; 904) ","
536 WHITESPACE@[904; 905) 536 WHITESPACE@[904; 905) " "
537 PARAM@[905; 927) 537 PARAM@[905; 927)
538 BIND_PAT@[905; 912) 538 BIND_PAT@[905; 912)
539 NAME@[905; 912) 539 NAME@[905; 912)
540 IDENT@[905; 912) "address" 540 IDENT@[905; 912) "address"
541 COLON@[912; 913) 541 COLON@[912; 913) ":"
542 WHITESPACE@[913; 914) 542 WHITESPACE@[913; 914) " "
543 POINTER_TYPE@[914; 927) 543 POINTER_TYPE@[914; 927)
544 STAR@[914; 915) 544 STAR@[914; 915) "*"
545 MUT_KW@[915; 918) 545 MUT_KW@[915; 918) "mut"
546 WHITESPACE@[918; 919) 546 WHITESPACE@[918; 919) " "
547 PATH_TYPE@[919; 927) 547 PATH_TYPE@[919; 927)
548 PATH@[919; 927) 548 PATH@[919; 927)
549 PATH_SEGMENT@[919; 927) 549 PATH_SEGMENT@[919; 927)
550 NAME_REF@[919; 927) 550 NAME_REF@[919; 927)
551 IDENT@[919; 927) "sockaddr" 551 IDENT@[919; 927) "sockaddr"
552 COMMA@[927; 928) 552 COMMA@[927; 928) ","
553 WHITESPACE@[928; 952) 553 WHITESPACE@[928; 952) "\n "
554 PARAM@[952; 979) 554 PARAM@[952; 979)
555 BIND_PAT@[952; 963) 555 BIND_PAT@[952; 963)
556 NAME@[952; 963) 556 NAME@[952; 963)
557 IDENT@[952; 963) "address_len" 557 IDENT@[952; 963) "address_len"
558 COLON@[963; 964) 558 COLON@[963; 964) ":"
559 WHITESPACE@[964; 965) 559 WHITESPACE@[964; 965) " "
560 POINTER_TYPE@[965; 979) 560 POINTER_TYPE@[965; 979)
561 STAR@[965; 966) 561 STAR@[965; 966) "*"
562 MUT_KW@[966; 969) 562 MUT_KW@[966; 969) "mut"
563 WHITESPACE@[969; 970) 563 WHITESPACE@[969; 970) " "
564 PATH_TYPE@[970; 979) 564 PATH_TYPE@[970; 979)
565 PATH@[970; 979) 565 PATH@[970; 979)
566 PATH_SEGMENT@[970; 979) 566 PATH_SEGMENT@[970; 979)
567 NAME_REF@[970; 979) 567 NAME_REF@[970; 979)
568 IDENT@[970; 979) "socklen_t" 568 IDENT@[970; 979) "socklen_t"
569 R_PAREN@[979; 980) 569 R_PAREN@[979; 980) ")"
570 WHITESPACE@[980; 981) 570 WHITESPACE@[980; 981) " "
571 RET_TYPE@[981; 991) 571 RET_TYPE@[981; 991)
572 THIN_ARROW@[981; 983) 572 THIN_ARROW@[981; 983) "->"
573 WHITESPACE@[983; 984) 573 WHITESPACE@[983; 984) " "
574 PATH_TYPE@[984; 991) 574 PATH_TYPE@[984; 991)
575 PATH@[984; 991) 575 PATH@[984; 991)
576 PATH_SEGMENT@[984; 991) 576 PATH_SEGMENT@[984; 991)
577 COLONCOLON@[984; 986) 577 COLONCOLON@[984; 986) "::"
578 NAME_REF@[986; 991) 578 NAME_REF@[986; 991)
579 IDENT@[986; 991) "c_int" 579 IDENT@[986; 991) "c_int"
580 SEMI@[991; 992) 580 SEMI@[991; 992) ";"
581 WHITESPACE@[992; 997) 581 WHITESPACE@[992; 997) "\n "
582 FN_DEF@[997; 1173) 582 FN_DEF@[997; 1173)
583 VISIBILITY@[997; 1000) 583 VISIBILITY@[997; 1000)
584 PUB_KW@[997; 1000) 584 PUB_KW@[997; 1000) "pub"
585 WHITESPACE@[1000; 1001) 585 WHITESPACE@[1000; 1001) " "
586 FN_KW@[1001; 1003) 586 FN_KW@[1001; 1003) "fn"
587 WHITESPACE@[1003; 1004) 587 WHITESPACE@[1003; 1004) " "
588 NAME@[1004; 1010) 588 NAME@[1004; 1010)
589 IDENT@[1004; 1010) "sendto" 589 IDENT@[1004; 1010) "sendto"
590 PARAM_LIST@[1010; 1159) 590 PARAM_LIST@[1010; 1159)
591 L_PAREN@[1010; 1011) 591 L_PAREN@[1010; 1011) "("
592 PARAM@[1011; 1026) 592 PARAM@[1011; 1026)
593 BIND_PAT@[1011; 1017) 593 BIND_PAT@[1011; 1017)
594 NAME@[1011; 1017) 594 NAME@[1011; 1017)
595 IDENT@[1011; 1017) "socket" 595 IDENT@[1011; 1017) "socket"
596 COLON@[1017; 1018) 596 COLON@[1017; 1018) ":"
597 WHITESPACE@[1018; 1019) 597 WHITESPACE@[1018; 1019) " "
598 PATH_TYPE@[1019; 1026) 598 PATH_TYPE@[1019; 1026)
599 PATH@[1019; 1026) 599 PATH@[1019; 1026)
600 PATH_SEGMENT@[1019; 1026) 600 PATH_SEGMENT@[1019; 1026)
601 COLONCOLON@[1019; 1021) 601 COLONCOLON@[1019; 1021) "::"
602 NAME_REF@[1021; 1026) 602 NAME_REF@[1021; 1026)
603 IDENT@[1021; 1026) "c_int" 603 IDENT@[1021; 1026) "c_int"
604 COMMA@[1026; 1027) 604 COMMA@[1026; 1027) ","
605 WHITESPACE@[1027; 1028) 605 WHITESPACE@[1027; 1028) " "
606 PARAM@[1028; 1048) 606 PARAM@[1028; 1048)
607 BIND_PAT@[1028; 1031) 607 BIND_PAT@[1028; 1031)
608 NAME@[1028; 1031) 608 NAME@[1028; 1031)
609 IDENT@[1028; 1031) "buf" 609 IDENT@[1028; 1031) "buf"
610 COLON@[1031; 1032) 610 COLON@[1031; 1032) ":"
611 WHITESPACE@[1032; 1033) 611 WHITESPACE@[1032; 1033) " "
612 POINTER_TYPE@[1033; 1048) 612 POINTER_TYPE@[1033; 1048)
613 STAR@[1033; 1034) 613 STAR@[1033; 1034) "*"
614 CONST_KW@[1034; 1039) 614 CONST_KW@[1034; 1039) "const"
615 WHITESPACE@[1039; 1040) 615 WHITESPACE@[1039; 1040) " "
616 PATH_TYPE@[1040; 1048) 616 PATH_TYPE@[1040; 1048)
617 PATH@[1040; 1048) 617 PATH@[1040; 1048)
618 PATH_SEGMENT@[1040; 1048) 618 PATH_SEGMENT@[1040; 1048)
619 COLONCOLON@[1040; 1042) 619 COLONCOLON@[1040; 1042) "::"
620 NAME_REF@[1042; 1048) 620 NAME_REF@[1042; 1048)
621 IDENT@[1042; 1048) "c_void" 621 IDENT@[1042; 1048) "c_void"
622 COMMA@[1048; 1049) 622 COMMA@[1048; 1049) ","
623 WHITESPACE@[1049; 1050) 623 WHITESPACE@[1049; 1050) " "
624 PARAM@[1050; 1063) 624 PARAM@[1050; 1063)
625 BIND_PAT@[1050; 1053) 625 BIND_PAT@[1050; 1053)
626 NAME@[1050; 1053) 626 NAME@[1050; 1053)
627 IDENT@[1050; 1053) "len" 627 IDENT@[1050; 1053) "len"
628 COLON@[1053; 1054) 628 COLON@[1053; 1054) ":"
629 WHITESPACE@[1054; 1055) 629 WHITESPACE@[1054; 1055) " "
630 PATH_TYPE@[1055; 1063) 630 PATH_TYPE@[1055; 1063)
631 PATH@[1055; 1063) 631 PATH@[1055; 1063)
632 PATH_SEGMENT@[1055; 1063) 632 PATH_SEGMENT@[1055; 1063)
633 COLONCOLON@[1055; 1057) 633 COLONCOLON@[1055; 1057) "::"
634 NAME_REF@[1057; 1063) 634 NAME_REF@[1057; 1063)
635 IDENT@[1057; 1063) "size_t" 635 IDENT@[1057; 1063) "size_t"
636 COMMA@[1063; 1064) 636 COMMA@[1063; 1064) ","
637 WHITESPACE@[1064; 1083) 637 WHITESPACE@[1064; 1083) "\n "
638 PARAM@[1083; 1097) 638 PARAM@[1083; 1097)
639 BIND_PAT@[1083; 1088) 639 BIND_PAT@[1083; 1088)
640 NAME@[1083; 1088) 640 NAME@[1083; 1088)
641 IDENT@[1083; 1088) "flags" 641 IDENT@[1083; 1088) "flags"
642 COLON@[1088; 1089) 642 COLON@[1088; 1089) ":"
643 WHITESPACE@[1089; 1090) 643 WHITESPACE@[1089; 1090) " "
644 PATH_TYPE@[1090; 1097) 644 PATH_TYPE@[1090; 1097)
645 PATH@[1090; 1097) 645 PATH@[1090; 1097)
646 PATH_SEGMENT@[1090; 1097) 646 PATH_SEGMENT@[1090; 1097)
647 COLONCOLON@[1090; 1092) 647 COLONCOLON@[1090; 1092) "::"
648 NAME_REF@[1092; 1097) 648 NAME_REF@[1092; 1097)
649 IDENT@[1092; 1097) "c_int" 649 IDENT@[1092; 1097) "c_int"
650 COMMA@[1097; 1098) 650 COMMA@[1097; 1098) ","
651 WHITESPACE@[1098; 1099) 651 WHITESPACE@[1098; 1099) " "
652 PARAM@[1099; 1120) 652 PARAM@[1099; 1120)
653 BIND_PAT@[1099; 1103) 653 BIND_PAT@[1099; 1103)
654 NAME@[1099; 1103) 654 NAME@[1099; 1103)
655 IDENT@[1099; 1103) "addr" 655 IDENT@[1099; 1103) "addr"
656 COLON@[1103; 1104) 656 COLON@[1103; 1104) ":"
657 WHITESPACE@[1104; 1105) 657 WHITESPACE@[1104; 1105) " "
658 POINTER_TYPE@[1105; 1120) 658 POINTER_TYPE@[1105; 1120)
659 STAR@[1105; 1106) 659 STAR@[1105; 1106) "*"
660 CONST_KW@[1106; 1111) 660 CONST_KW@[1106; 1111) "const"
661 WHITESPACE@[1111; 1112) 661 WHITESPACE@[1111; 1112) " "
662 PATH_TYPE@[1112; 1120) 662 PATH_TYPE@[1112; 1120)
663 PATH@[1112; 1120) 663 PATH@[1112; 1120)
664 PATH_SEGMENT@[1112; 1120) 664 PATH_SEGMENT@[1112; 1120)
665 NAME_REF@[1112; 1120) 665 NAME_REF@[1112; 1120)
666 IDENT@[1112; 1120) "sockaddr" 666 IDENT@[1112; 1120) "sockaddr"
667 COMMA@[1120; 1121) 667 COMMA@[1120; 1121) ","
668 WHITESPACE@[1121; 1140) 668 WHITESPACE@[1121; 1140) "\n "
669 PARAM@[1140; 1158) 669 PARAM@[1140; 1158)
670 BIND_PAT@[1140; 1147) 670 BIND_PAT@[1140; 1147)
671 NAME@[1140; 1147) 671 NAME@[1140; 1147)
672 IDENT@[1140; 1147) "addrlen" 672 IDENT@[1140; 1147) "addrlen"
673 COLON@[1147; 1148) 673 COLON@[1147; 1148) ":"
674 WHITESPACE@[1148; 1149) 674 WHITESPACE@[1148; 1149) " "
675 PATH_TYPE@[1149; 1158) 675 PATH_TYPE@[1149; 1158)
676 PATH@[1149; 1158) 676 PATH@[1149; 1158)
677 PATH_SEGMENT@[1149; 1158) 677 PATH_SEGMENT@[1149; 1158)
678 NAME_REF@[1149; 1158) 678 NAME_REF@[1149; 1158)
679 IDENT@[1149; 1158) "socklen_t" 679 IDENT@[1149; 1158) "socklen_t"
680 R_PAREN@[1158; 1159) 680 R_PAREN@[1158; 1159) ")"
681 WHITESPACE@[1159; 1160) 681 WHITESPACE@[1159; 1160) " "
682 RET_TYPE@[1160; 1172) 682 RET_TYPE@[1160; 1172)
683 THIN_ARROW@[1160; 1162) 683 THIN_ARROW@[1160; 1162) "->"
684 WHITESPACE@[1162; 1163) 684 WHITESPACE@[1162; 1163) " "
685 PATH_TYPE@[1163; 1172) 685 PATH_TYPE@[1163; 1172)
686 PATH@[1163; 1172) 686 PATH@[1163; 1172)
687 PATH_SEGMENT@[1163; 1172) 687 PATH_SEGMENT@[1163; 1172)
688 COLONCOLON@[1163; 1165) 688 COLONCOLON@[1163; 1165) "::"
689 NAME_REF@[1165; 1172) 689 NAME_REF@[1165; 1172)
690 IDENT@[1165; 1172) "ssize_t" 690 IDENT@[1165; 1172) "ssize_t"
691 SEMI@[1172; 1173) 691 SEMI@[1172; 1173) ";"
692 WHITESPACE@[1173; 1178) 692 WHITESPACE@[1173; 1178) "\n "
693 FN_DEF@[1178; 1289) 693 FN_DEF@[1178; 1289)
694 VISIBILITY@[1178; 1181) 694 VISIBILITY@[1178; 1181)
695 PUB_KW@[1178; 1181) 695 PUB_KW@[1178; 1181) "pub"
696 WHITESPACE@[1181; 1182) 696 WHITESPACE@[1181; 1182) " "
697 FN_KW@[1182; 1184) 697 FN_KW@[1182; 1184) "fn"
698 WHITESPACE@[1184; 1185) 698 WHITESPACE@[1184; 1185) " "
699 NAME@[1185; 1189) 699 NAME@[1185; 1189)
700 IDENT@[1185; 1189) "send" 700 IDENT@[1185; 1189) "send"
701 PARAM_LIST@[1189; 1275) 701 PARAM_LIST@[1189; 1275)
702 L_PAREN@[1189; 1190) 702 L_PAREN@[1189; 1190) "("
703 PARAM@[1190; 1205) 703 PARAM@[1190; 1205)
704 BIND_PAT@[1190; 1196) 704 BIND_PAT@[1190; 1196)
705 NAME@[1190; 1196) 705 NAME@[1190; 1196)
706 IDENT@[1190; 1196) "socket" 706 IDENT@[1190; 1196) "socket"
707 COLON@[1196; 1197) 707 COLON@[1196; 1197) ":"
708 WHITESPACE@[1197; 1198) 708 WHITESPACE@[1197; 1198) " "
709 PATH_TYPE@[1198; 1205) 709 PATH_TYPE@[1198; 1205)
710 PATH@[1198; 1205) 710 PATH@[1198; 1205)
711 PATH_SEGMENT@[1198; 1205) 711 PATH_SEGMENT@[1198; 1205)
712 COLONCOLON@[1198; 1200) 712 COLONCOLON@[1198; 1200) "::"
713 NAME_REF@[1200; 1205) 713 NAME_REF@[1200; 1205)
714 IDENT@[1200; 1205) "c_int" 714 IDENT@[1200; 1205) "c_int"
715 COMMA@[1205; 1206) 715 COMMA@[1205; 1206) ","
716 WHITESPACE@[1206; 1207) 716 WHITESPACE@[1206; 1207) " "
717 PARAM@[1207; 1227) 717 PARAM@[1207; 1227)
718 BIND_PAT@[1207; 1210) 718 BIND_PAT@[1207; 1210)
719 NAME@[1207; 1210) 719 NAME@[1207; 1210)
720 IDENT@[1207; 1210) "buf" 720 IDENT@[1207; 1210) "buf"
721 COLON@[1210; 1211) 721 COLON@[1210; 1211) ":"
722 WHITESPACE@[1211; 1212) 722 WHITESPACE@[1211; 1212) " "
723 POINTER_TYPE@[1212; 1227) 723 POINTER_TYPE@[1212; 1227)
724 STAR@[1212; 1213) 724 STAR@[1212; 1213) "*"
725 CONST_KW@[1213; 1218) 725 CONST_KW@[1213; 1218) "const"
726 WHITESPACE@[1218; 1219) 726 WHITESPACE@[1218; 1219) " "
727 PATH_TYPE@[1219; 1227) 727 PATH_TYPE@[1219; 1227)
728 PATH@[1219; 1227) 728 PATH@[1219; 1227)
729 PATH_SEGMENT@[1219; 1227) 729 PATH_SEGMENT@[1219; 1227)
730 COLONCOLON@[1219; 1221) 730 COLONCOLON@[1219; 1221) "::"
731 NAME_REF@[1221; 1227) 731 NAME_REF@[1221; 1227)
732 IDENT@[1221; 1227) "c_void" 732 IDENT@[1221; 1227) "c_void"
733 COMMA@[1227; 1228) 733 COMMA@[1227; 1228) ","
734 WHITESPACE@[1228; 1229) 734 WHITESPACE@[1228; 1229) " "
735 PARAM@[1229; 1242) 735 PARAM@[1229; 1242)
736 BIND_PAT@[1229; 1232) 736 BIND_PAT@[1229; 1232)
737 NAME@[1229; 1232) 737 NAME@[1229; 1232)
738 IDENT@[1229; 1232) "len" 738 IDENT@[1229; 1232) "len"
739 COLON@[1232; 1233) 739 COLON@[1232; 1233) ":"
740 WHITESPACE@[1233; 1234) 740 WHITESPACE@[1233; 1234) " "
741 PATH_TYPE@[1234; 1242) 741 PATH_TYPE@[1234; 1242)
742 PATH@[1234; 1242) 742 PATH@[1234; 1242)
743 PATH_SEGMENT@[1234; 1242) 743 PATH_SEGMENT@[1234; 1242)
744 COLONCOLON@[1234; 1236) 744 COLONCOLON@[1234; 1236) "::"
745 NAME_REF@[1236; 1242) 745 NAME_REF@[1236; 1242)
746 IDENT@[1236; 1242) "size_t" 746 IDENT@[1236; 1242) "size_t"
747 COMMA@[1242; 1243) 747 COMMA@[1242; 1243) ","
748 WHITESPACE@[1243; 1260) 748 WHITESPACE@[1243; 1260) "\n "
749 PARAM@[1260; 1274) 749 PARAM@[1260; 1274)
750 BIND_PAT@[1260; 1265) 750 BIND_PAT@[1260; 1265)
751 NAME@[1260; 1265) 751 NAME@[1260; 1265)
752 IDENT@[1260; 1265) "flags" 752 IDENT@[1260; 1265) "flags"
753 COLON@[1265; 1266) 753 COLON@[1265; 1266) ":"
754 WHITESPACE@[1266; 1267) 754 WHITESPACE@[1266; 1267) " "
755 PATH_TYPE@[1267; 1274) 755 PATH_TYPE@[1267; 1274)
756 PATH@[1267; 1274) 756 PATH@[1267; 1274)
757 PATH_SEGMENT@[1267; 1274) 757 PATH_SEGMENT@[1267; 1274)
758 COLONCOLON@[1267; 1269) 758 COLONCOLON@[1267; 1269) "::"
759 NAME_REF@[1269; 1274) 759 NAME_REF@[1269; 1274)
760 IDENT@[1269; 1274) "c_int" 760 IDENT@[1269; 1274) "c_int"
761 R_PAREN@[1274; 1275) 761 R_PAREN@[1274; 1275) ")"
762 WHITESPACE@[1275; 1276) 762 WHITESPACE@[1275; 1276) " "
763 RET_TYPE@[1276; 1288) 763 RET_TYPE@[1276; 1288)
764 THIN_ARROW@[1276; 1278) 764 THIN_ARROW@[1276; 1278) "->"
765 WHITESPACE@[1278; 1279) 765 WHITESPACE@[1278; 1279) " "
766 PATH_TYPE@[1279; 1288) 766 PATH_TYPE@[1279; 1288)
767 PATH@[1279; 1288) 767 PATH@[1279; 1288)
768 PATH_SEGMENT@[1279; 1288) 768 PATH_SEGMENT@[1279; 1288)
769 COLONCOLON@[1279; 1281) 769 COLONCOLON@[1279; 1281) "::"
770 NAME_REF@[1281; 1288) 770 NAME_REF@[1281; 1288)
771 IDENT@[1281; 1288) "ssize_t" 771 IDENT@[1281; 1288) "ssize_t"
772 SEMI@[1288; 1289) 772 SEMI@[1288; 1289) ";"
773 WHITESPACE@[1289; 1294) 773 WHITESPACE@[1289; 1294) "\n "
774 FN_DEF@[1294; 1481) 774 FN_DEF@[1294; 1481)
775 VISIBILITY@[1294; 1297) 775 VISIBILITY@[1294; 1297)
776 PUB_KW@[1294; 1297) 776 PUB_KW@[1294; 1297) "pub"
777 WHITESPACE@[1297; 1298) 777 WHITESPACE@[1297; 1298) " "
778 FN_KW@[1298; 1300) 778 FN_KW@[1298; 1300) "fn"
779 WHITESPACE@[1300; 1301) 779 WHITESPACE@[1300; 1301) " "
780 NAME@[1301; 1309) 780 NAME@[1301; 1309)
781 IDENT@[1301; 1309) "recvfrom" 781 IDENT@[1301; 1309) "recvfrom"
782 PARAM_LIST@[1309; 1467) 782 PARAM_LIST@[1309; 1467)
783 L_PAREN@[1309; 1310) 783 L_PAREN@[1309; 1310) "("
784 PARAM@[1310; 1325) 784 PARAM@[1310; 1325)
785 BIND_PAT@[1310; 1316) 785 BIND_PAT@[1310; 1316)
786 NAME@[1310; 1316) 786 NAME@[1310; 1316)
787 IDENT@[1310; 1316) "socket" 787 IDENT@[1310; 1316) "socket"
788 COLON@[1316; 1317) 788 COLON@[1316; 1317) ":"
789 WHITESPACE@[1317; 1318) 789 WHITESPACE@[1317; 1318) " "
790 PATH_TYPE@[1318; 1325) 790 PATH_TYPE@[1318; 1325)
791 PATH@[1318; 1325) 791 PATH@[1318; 1325)
792 PATH_SEGMENT@[1318; 1325) 792 PATH_SEGMENT@[1318; 1325)
793 COLONCOLON@[1318; 1320) 793 COLONCOLON@[1318; 1320) "::"
794 NAME_REF@[1320; 1325) 794 NAME_REF@[1320; 1325)
795 IDENT@[1320; 1325) "c_int" 795 IDENT@[1320; 1325) "c_int"
796 COMMA@[1325; 1326) 796 COMMA@[1325; 1326) ","
797 WHITESPACE@[1326; 1327) 797 WHITESPACE@[1326; 1327) " "
798 PARAM@[1327; 1345) 798 PARAM@[1327; 1345)
799 BIND_PAT@[1327; 1330) 799 BIND_PAT@[1327; 1330)
800 NAME@[1327; 1330) 800 NAME@[1327; 1330)
801 IDENT@[1327; 1330) "buf" 801 IDENT@[1327; 1330) "buf"
802 COLON@[1330; 1331) 802 COLON@[1330; 1331) ":"
803 WHITESPACE@[1331; 1332) 803 WHITESPACE@[1331; 1332) " "
804 POINTER_TYPE@[1332; 1345) 804 POINTER_TYPE@[1332; 1345)
805 STAR@[1332; 1333) 805 STAR@[1332; 1333) "*"
806 MUT_KW@[1333; 1336) 806 MUT_KW@[1333; 1336) "mut"
807 WHITESPACE@[1336; 1337) 807 WHITESPACE@[1336; 1337) " "
808 PATH_TYPE@[1337; 1345) 808 PATH_TYPE@[1337; 1345)
809 PATH@[1337; 1345) 809 PATH@[1337; 1345)
810 PATH_SEGMENT@[1337; 1345) 810 PATH_SEGMENT@[1337; 1345)
811 COLONCOLON@[1337; 1339) 811 COLONCOLON@[1337; 1339) "::"
812 NAME_REF@[1339; 1345) 812 NAME_REF@[1339; 1345)
813 IDENT@[1339; 1345) "c_void" 813 IDENT@[1339; 1345) "c_void"
814 COMMA@[1345; 1346) 814 COMMA@[1345; 1346) ","
815 WHITESPACE@[1346; 1347) 815 WHITESPACE@[1346; 1347) " "
816 PARAM@[1347; 1360) 816 PARAM@[1347; 1360)
817 BIND_PAT@[1347; 1350) 817 BIND_PAT@[1347; 1350)
818 NAME@[1347; 1350) 818 NAME@[1347; 1350)
819 IDENT@[1347; 1350) "len" 819 IDENT@[1347; 1350) "len"
820 COLON@[1350; 1351) 820 COLON@[1350; 1351) ":"
821 WHITESPACE@[1351; 1352) 821 WHITESPACE@[1351; 1352) " "
822 PATH_TYPE@[1352; 1360) 822 PATH_TYPE@[1352; 1360)
823 PATH@[1352; 1360) 823 PATH@[1352; 1360)
824 PATH_SEGMENT@[1352; 1360) 824 PATH_SEGMENT@[1352; 1360)
825 COLONCOLON@[1352; 1354) 825 COLONCOLON@[1352; 1354) "::"
826 NAME_REF@[1354; 1360) 826 NAME_REF@[1354; 1360)
827 IDENT@[1354; 1360) "size_t" 827 IDENT@[1354; 1360) "size_t"
828 COMMA@[1360; 1361) 828 COMMA@[1360; 1361) ","
829 WHITESPACE@[1361; 1382) 829 WHITESPACE@[1361; 1382) "\n "
830 PARAM@[1382; 1396) 830 PARAM@[1382; 1396)
831 BIND_PAT@[1382; 1387) 831 BIND_PAT@[1382; 1387)
832 NAME@[1382; 1387) 832 NAME@[1382; 1387)
833 IDENT@[1382; 1387) "flags" 833 IDENT@[1382; 1387) "flags"
834 COLON@[1387; 1388) 834 COLON@[1387; 1388) ":"
835 WHITESPACE@[1388; 1389) 835 WHITESPACE@[1388; 1389) " "
836 PATH_TYPE@[1389; 1396) 836 PATH_TYPE@[1389; 1396)
837 PATH@[1389; 1396) 837 PATH@[1389; 1396)
838 PATH_SEGMENT@[1389; 1396) 838 PATH_SEGMENT@[1389; 1396)
839 COLONCOLON@[1389; 1391) 839 COLONCOLON@[1389; 1391) "::"
840 NAME_REF@[1391; 1396) 840 NAME_REF@[1391; 1396)
841 IDENT@[1391; 1396) "c_int" 841 IDENT@[1391; 1396) "c_int"
842 COMMA@[1396; 1397) 842 COMMA@[1396; 1397) ","
843 WHITESPACE@[1397; 1398) 843 WHITESPACE@[1397; 1398) " "
844 PARAM@[1398; 1419) 844 PARAM@[1398; 1419)
845 BIND_PAT@[1398; 1402) 845 BIND_PAT@[1398; 1402)
846 NAME@[1398; 1402) 846 NAME@[1398; 1402)
847 IDENT@[1398; 1402) "addr" 847 IDENT@[1398; 1402) "addr"
848 COLON@[1402; 1403) 848 COLON@[1402; 1403) ":"
849 WHITESPACE@[1403; 1404) 849 WHITESPACE@[1403; 1404) " "
850 POINTER_TYPE@[1404; 1419) 850 POINTER_TYPE@[1404; 1419)
851 STAR@[1404; 1405) 851 STAR@[1404; 1405) "*"
852 MUT_KW@[1405; 1408) 852 MUT_KW@[1405; 1408) "mut"
853 WHITESPACE@[1408; 1409) 853 WHITESPACE@[1408; 1409) " "
854 PATH_TYPE@[1409; 1419) 854 PATH_TYPE@[1409; 1419)
855 PATH@[1409; 1419) 855 PATH@[1409; 1419)
856 PATH_SEGMENT@[1409; 1419) 856 PATH_SEGMENT@[1409; 1419)
857 COLONCOLON@[1409; 1411) 857 COLONCOLON@[1409; 1411) "::"
858 NAME_REF@[1411; 1419) 858 NAME_REF@[1411; 1419)
859 IDENT@[1411; 1419) "sockaddr" 859 IDENT@[1411; 1419) "sockaddr"
860 COMMA@[1419; 1420) 860 COMMA@[1419; 1420) ","
861 WHITESPACE@[1420; 1441) 861 WHITESPACE@[1420; 1441) "\n "
862 PARAM@[1441; 1466) 862 PARAM@[1441; 1466)
863 BIND_PAT@[1441; 1448) 863 BIND_PAT@[1441; 1448)
864 NAME@[1441; 1448) 864 NAME@[1441; 1448)
865 IDENT@[1441; 1448) "addrlen" 865 IDENT@[1441; 1448) "addrlen"
866 COLON@[1448; 1449) 866 COLON@[1448; 1449) ":"
867 WHITESPACE@[1449; 1450) 867 WHITESPACE@[1449; 1450) " "
868 POINTER_TYPE@[1450; 1466) 868 POINTER_TYPE@[1450; 1466)
869 STAR@[1450; 1451) 869 STAR@[1450; 1451) "*"
870 MUT_KW@[1451; 1454) 870 MUT_KW@[1451; 1454) "mut"
871 WHITESPACE@[1454; 1455) 871 WHITESPACE@[1454; 1455) " "
872 PATH_TYPE@[1455; 1466) 872 PATH_TYPE@[1455; 1466)
873 PATH@[1455; 1466) 873 PATH@[1455; 1466)
874 PATH_SEGMENT@[1455; 1466) 874 PATH_SEGMENT@[1455; 1466)
875 COLONCOLON@[1455; 1457) 875 COLONCOLON@[1455; 1457) "::"
876 NAME_REF@[1457; 1466) 876 NAME_REF@[1457; 1466)
877 IDENT@[1457; 1466) "socklen_t" 877 IDENT@[1457; 1466) "socklen_t"
878 R_PAREN@[1466; 1467) 878 R_PAREN@[1466; 1467) ")"
879 WHITESPACE@[1467; 1468) 879 WHITESPACE@[1467; 1468) " "
880 RET_TYPE@[1468; 1480) 880 RET_TYPE@[1468; 1480)
881 THIN_ARROW@[1468; 1470) 881 THIN_ARROW@[1468; 1470) "->"
882 WHITESPACE@[1470; 1471) 882 WHITESPACE@[1470; 1471) " "
883 PATH_TYPE@[1471; 1480) 883 PATH_TYPE@[1471; 1480)
884 PATH@[1471; 1480) 884 PATH@[1471; 1480)
885 PATH_SEGMENT@[1471; 1480) 885 PATH_SEGMENT@[1471; 1480)
886 COLONCOLON@[1471; 1473) 886 COLONCOLON@[1471; 1473) "::"
887 NAME_REF@[1473; 1480) 887 NAME_REF@[1473; 1480)
888 IDENT@[1473; 1480) "ssize_t" 888 IDENT@[1473; 1480) "ssize_t"
889 SEMI@[1480; 1481) 889 SEMI@[1480; 1481) ";"
890 WHITESPACE@[1481; 1486) 890 WHITESPACE@[1481; 1486) "\n "
891 FN_DEF@[1486; 1595) 891 FN_DEF@[1486; 1595)
892 VISIBILITY@[1486; 1489) 892 VISIBILITY@[1486; 1489)
893 PUB_KW@[1486; 1489) 893 PUB_KW@[1486; 1489) "pub"
894 WHITESPACE@[1489; 1490) 894 WHITESPACE@[1489; 1490) " "
895 FN_KW@[1490; 1492) 895 FN_KW@[1490; 1492) "fn"
896 WHITESPACE@[1492; 1493) 896 WHITESPACE@[1492; 1493) " "
897 NAME@[1493; 1497) 897 NAME@[1493; 1497)
898 IDENT@[1493; 1497) "recv" 898 IDENT@[1493; 1497) "recv"
899 PARAM_LIST@[1497; 1581) 899 PARAM_LIST@[1497; 1581)
900 L_PAREN@[1497; 1498) 900 L_PAREN@[1497; 1498) "("
901 PARAM@[1498; 1513) 901 PARAM@[1498; 1513)
902 BIND_PAT@[1498; 1504) 902 BIND_PAT@[1498; 1504)
903 NAME@[1498; 1504) 903 NAME@[1498; 1504)
904 IDENT@[1498; 1504) "socket" 904 IDENT@[1498; 1504) "socket"
905 COLON@[1504; 1505) 905 COLON@[1504; 1505) ":"
906 WHITESPACE@[1505; 1506) 906 WHITESPACE@[1505; 1506) " "
907 PATH_TYPE@[1506; 1513) 907 PATH_TYPE@[1506; 1513)
908 PATH@[1506; 1513) 908 PATH@[1506; 1513)
909 PATH_SEGMENT@[1506; 1513) 909 PATH_SEGMENT@[1506; 1513)
910 COLONCOLON@[1506; 1508) 910 COLONCOLON@[1506; 1508) "::"
911 NAME_REF@[1508; 1513) 911 NAME_REF@[1508; 1513)
912 IDENT@[1508; 1513) "c_int" 912 IDENT@[1508; 1513) "c_int"
913 COMMA@[1513; 1514) 913 COMMA@[1513; 1514) ","
914 WHITESPACE@[1514; 1515) 914 WHITESPACE@[1514; 1515) " "
915 PARAM@[1515; 1533) 915 PARAM@[1515; 1533)
916 BIND_PAT@[1515; 1518) 916 BIND_PAT@[1515; 1518)
917 NAME@[1515; 1518) 917 NAME@[1515; 1518)
918 IDENT@[1515; 1518) "buf" 918 IDENT@[1515; 1518) "buf"
919 COLON@[1518; 1519) 919 COLON@[1518; 1519) ":"
920 WHITESPACE@[1519; 1520) 920 WHITESPACE@[1519; 1520) " "
921 POINTER_TYPE@[1520; 1533) 921 POINTER_TYPE@[1520; 1533)
922 STAR@[1520; 1521) 922 STAR@[1520; 1521) "*"
923 MUT_KW@[1521; 1524) 923 MUT_KW@[1521; 1524) "mut"
924 WHITESPACE@[1524; 1525) 924 WHITESPACE@[1524; 1525) " "
925 PATH_TYPE@[1525; 1533) 925 PATH_TYPE@[1525; 1533)
926 PATH@[1525; 1533) 926 PATH@[1525; 1533)
927 PATH_SEGMENT@[1525; 1533) 927 PATH_SEGMENT@[1525; 1533)
928 COLONCOLON@[1525; 1527) 928 COLONCOLON@[1525; 1527) "::"
929 NAME_REF@[1527; 1533) 929 NAME_REF@[1527; 1533)
930 IDENT@[1527; 1533) "c_void" 930 IDENT@[1527; 1533) "c_void"
931 COMMA@[1533; 1534) 931 COMMA@[1533; 1534) ","
932 WHITESPACE@[1534; 1535) 932 WHITESPACE@[1534; 1535) " "
933 PARAM@[1535; 1548) 933 PARAM@[1535; 1548)
934 BIND_PAT@[1535; 1538) 934 BIND_PAT@[1535; 1538)
935 NAME@[1535; 1538) 935 NAME@[1535; 1538)
936 IDENT@[1535; 1538) "len" 936 IDENT@[1535; 1538) "len"
937 COLON@[1538; 1539) 937 COLON@[1538; 1539) ":"
938 WHITESPACE@[1539; 1540) 938 WHITESPACE@[1539; 1540) " "
939 PATH_TYPE@[1540; 1548) 939 PATH_TYPE@[1540; 1548)
940 PATH@[1540; 1548) 940 PATH@[1540; 1548)
941 PATH_SEGMENT@[1540; 1548) 941 PATH_SEGMENT@[1540; 1548)
942 COLONCOLON@[1540; 1542) 942 COLONCOLON@[1540; 1542) "::"
943 NAME_REF@[1542; 1548) 943 NAME_REF@[1542; 1548)
944 IDENT@[1542; 1548) "size_t" 944 IDENT@[1542; 1548) "size_t"
945 COMMA@[1548; 1549) 945 COMMA@[1548; 1549) ","
946 WHITESPACE@[1549; 1566) 946 WHITESPACE@[1549; 1566) "\n "
947 PARAM@[1566; 1580) 947 PARAM@[1566; 1580)
948 BIND_PAT@[1566; 1571) 948 BIND_PAT@[1566; 1571)
949 NAME@[1566; 1571) 949 NAME@[1566; 1571)
950 IDENT@[1566; 1571) "flags" 950 IDENT@[1566; 1571) "flags"
951 COLON@[1571; 1572) 951 COLON@[1571; 1572) ":"
952 WHITESPACE@[1572; 1573) 952 WHITESPACE@[1572; 1573) " "
953 PATH_TYPE@[1573; 1580) 953 PATH_TYPE@[1573; 1580)
954 PATH@[1573; 1580) 954 PATH@[1573; 1580)
955 PATH_SEGMENT@[1573; 1580) 955 PATH_SEGMENT@[1573; 1580)
956 COLONCOLON@[1573; 1575) 956 COLONCOLON@[1573; 1575) "::"
957 NAME_REF@[1575; 1580) 957 NAME_REF@[1575; 1580)
958 IDENT@[1575; 1580) "c_int" 958 IDENT@[1575; 1580) "c_int"
959 R_PAREN@[1580; 1581) 959 R_PAREN@[1580; 1581) ")"
960 WHITESPACE@[1581; 1582) 960 WHITESPACE@[1581; 1582) " "
961 RET_TYPE@[1582; 1594) 961 RET_TYPE@[1582; 1594)
962 THIN_ARROW@[1582; 1584) 962 THIN_ARROW@[1582; 1584) "->"
963 WHITESPACE@[1584; 1585) 963 WHITESPACE@[1584; 1585) " "
964 PATH_TYPE@[1585; 1594) 964 PATH_TYPE@[1585; 1594)
965 PATH@[1585; 1594) 965 PATH@[1585; 1594)
966 PATH_SEGMENT@[1585; 1594) 966 PATH_SEGMENT@[1585; 1594)
967 COLONCOLON@[1585; 1587) 967 COLONCOLON@[1585; 1587) "::"
968 NAME_REF@[1587; 1594) 968 NAME_REF@[1587; 1594)
969 IDENT@[1587; 1594) "ssize_t" 969 IDENT@[1587; 1594) "ssize_t"
970 SEMI@[1594; 1595) 970 SEMI@[1594; 1595) ";"
971 WHITESPACE@[1595; 1596) 971 WHITESPACE@[1595; 1596) "\n"
972 R_CURLY@[1596; 1597) 972 R_CURLY@[1596; 1597) "}"
973 WHITESPACE@[1597; 1598) 973 WHITESPACE@[1597; 1598) "\n"
diff --git a/crates/ra_syntax/tests/data/parser/ok/0032_where_for.txt b/crates/ra_syntax/tests/data/parser/ok/0032_where_for.txt
index 150a9e483..9b1d0e84a 100644
--- a/crates/ra_syntax/tests/data/parser/ok/0032_where_for.txt
+++ b/crates/ra_syntax/tests/data/parser/ok/0032_where_for.txt
@@ -1,67 +1,72 @@
1SOURCE_FILE@[0; 116) 1SOURCE_FILE@[0; 116)
2 FN_DEF@[0; 115) 2 FN_DEF@[0; 115)
3 FN_KW@[0; 2) 3 FN_KW@[0; 2) "fn"
4 WHITESPACE@[2; 3) 4 WHITESPACE@[2; 3) " "
5 NAME@[3; 21) 5 NAME@[3; 21)
6 IDENT@[3; 21) "test_serialization" 6 IDENT@[3; 21) "test_serialization"
7 TYPE_PARAM_LIST@[21; 26) 7 TYPE_PARAM_LIST@[21; 26)
8 L_ANGLE@[21; 22) 8 L_ANGLE@[21; 22) "<"
9 TYPE_PARAM@[22; 25) 9 TYPE_PARAM@[22; 25)
10 NAME@[22; 25) 10 NAME@[22; 25)
11 IDENT@[22; 25) "SER" 11 IDENT@[22; 25) "SER"
12 R_ANGLE@[25; 26) 12 R_ANGLE@[25; 26) ">"
13 PARAM_LIST@[26; 28) 13 PARAM_LIST@[26; 28)
14 L_PAREN@[26; 27) 14 L_PAREN@[26; 27) "("
15 R_PAREN@[27; 28) 15 R_PAREN@[27; 28) ")"
16 WHITESPACE@[28; 29) 16 WHITESPACE@[28; 29) "\n"
17 WHERE_CLAUSE@[29; 112) 17 WHERE_CLAUSE@[29; 112)
18 WHERE_KW@[29; 34) 18 WHERE_KW@[29; 34) "where"
19 WHITESPACE@[34; 39) 19 WHITESPACE@[34; 39) "\n "
20 WHERE_PRED@[39; 111) 20 WHERE_PRED@[39; 111)
21 PATH_TYPE@[39; 42) 21 PATH_TYPE@[39; 42)
22 PATH@[39; 42) 22 PATH@[39; 42)
23 PATH_SEGMENT@[39; 42) 23 PATH_SEGMENT@[39; 42)
24 NAME_REF@[39; 42) 24 NAME_REF@[39; 42)
25 IDENT@[39; 42) "SER" 25 IDENT@[39; 42) "SER"
26 COLON@[42; 43) 26 COLON@[42; 43) ":"
27 WHITESPACE@[43; 44) 27 WHITESPACE@[43; 44) " "
28 PATH_TYPE@[44; 111) 28 TYPE_BOUND_LIST@[44; 111)
29 PATH@[44; 53) 29 TYPE_BOUND@[44; 53)
30 PATH_SEGMENT@[44; 53) 30 PATH_TYPE@[44; 53)
31 NAME_REF@[44; 53) 31 PATH@[44; 53)
32 IDENT@[44; 53) "Serialize" 32 PATH_SEGMENT@[44; 53)
33 WHITESPACE@[53; 54) 33 NAME_REF@[44; 53)
34 PLUS@[54; 55) 34 IDENT@[44; 53) "Serialize"
35 WHITESPACE@[55; 56) 35 WHITESPACE@[53; 54) " "
36 FOR_TYPE@[56; 81) 36 PLUS@[54; 55) "+"
37 FOR_KW@[56; 59) 37 WHITESPACE@[55; 56) " "
38 TYPE_PARAM_LIST@[59; 64) 38 TYPE_BOUND@[56; 81)
39 L_ANGLE@[59; 60) 39 FOR_TYPE@[56; 81)
40 LIFETIME_PARAM@[60; 63) 40 FOR_KW@[56; 59) "for"
41 LIFETIME@[60; 63) "'de" 41 TYPE_PARAM_LIST@[59; 64)
42 R_ANGLE@[63; 64) 42 L_ANGLE@[59; 60) "<"
43 WHITESPACE@[64; 65) 43 LIFETIME_PARAM@[60; 63)
44 PATH_TYPE@[65; 81) 44 LIFETIME@[60; 63) "\'de"
45 PATH@[65; 81) 45 R_ANGLE@[63; 64) ">"
46 PATH_SEGMENT@[65; 81) 46 WHITESPACE@[64; 65) " "
47 NAME_REF@[65; 76) 47 PATH_TYPE@[65; 81)
48 IDENT@[65; 76) "Deserialize" 48 PATH@[65; 81)
49 TYPE_ARG_LIST@[76; 81) 49 PATH_SEGMENT@[65; 81)
50 L_ANGLE@[76; 77) 50 NAME_REF@[65; 76)
51 LIFETIME_ARG@[77; 80) 51 IDENT@[65; 76) "Deserialize"
52 LIFETIME@[77; 80) "'de" 52 TYPE_ARG_LIST@[76; 81)
53 R_ANGLE@[80; 81) 53 L_ANGLE@[76; 77) "<"
54 WHITESPACE@[81; 82) 54 LIFETIME_ARG@[77; 80)
55 PLUS@[82; 83) 55 LIFETIME@[77; 80) "\'de"
56 WHITESPACE@[83; 84) 56 R_ANGLE@[80; 81) ">"
57 PATH_TYPE@[84; 111) 57 WHITESPACE@[81; 82) " "
58 PATH@[84; 93) 58 PLUS@[82; 83) "+"
59 PATH_SEGMENT@[84; 93) 59 WHITESPACE@[83; 84) " "
60 NAME_REF@[84; 93) 60 TYPE_BOUND@[84; 93)
61 IDENT@[84; 93) "PartialEq" 61 PATH_TYPE@[84; 93)
62 WHITESPACE@[93; 94) 62 PATH@[84; 93)
63 PLUS@[94; 95) 63 PATH_SEGMENT@[84; 93)
64 WHITESPACE@[95; 96) 64 NAME_REF@[84; 93)
65 IDENT@[84; 93) "PartialEq"
66 WHITESPACE@[93; 94) " "
67 PLUS@[94; 95) "+"
68 WHITESPACE@[95; 96) " "
69 TYPE_BOUND@[96; 111)
65 PATH_TYPE@[96; 111) 70 PATH_TYPE@[96; 111)
66 PATH@[96; 111) 71 PATH@[96; 111)
67 PATH@[96; 104) 72 PATH@[96; 104)
@@ -69,17 +74,17 @@ SOURCE_FILE@[0; 116)
69 PATH_SEGMENT@[96; 99) 74 PATH_SEGMENT@[96; 99)
70 NAME_REF@[96; 99) 75 NAME_REF@[96; 99)
71 IDENT@[96; 99) "std" 76 IDENT@[96; 99) "std"
72 COLONCOLON@[99; 101) 77 COLONCOLON@[99; 101) "::"
73 PATH_SEGMENT@[101; 104) 78 PATH_SEGMENT@[101; 104)
74 NAME_REF@[101; 104) 79 NAME_REF@[101; 104)
75 IDENT@[101; 104) "fmt" 80 IDENT@[101; 104) "fmt"
76 COLONCOLON@[104; 106) 81 COLONCOLON@[104; 106) "::"
77 PATH_SEGMENT@[106; 111) 82 PATH_SEGMENT@[106; 111)
78 NAME_REF@[106; 111) 83 NAME_REF@[106; 111)
79 IDENT@[106; 111) "Debug" 84 IDENT@[106; 111) "Debug"
80 COMMA@[111; 112) 85 COMMA@[111; 112) ","
81 WHITESPACE@[112; 113) 86 WHITESPACE@[112; 113) "\n"
82 BLOCK@[113; 115) 87 BLOCK@[113; 115)
83 L_CURLY@[113; 114) 88 L_CURLY@[113; 114) "{"
84 R_CURLY@[114; 115) 89 R_CURLY@[114; 115) "}"
85 WHITESPACE@[115; 116) 90 WHITESPACE@[115; 116) "\n"
diff --git a/crates/ra_syntax/tests/data/parser/ok/0033_label_break.txt b/crates/ra_syntax/tests/data/parser/ok/0033_label_break.txt
index 1c2bf82c9..845a8d7af 100644
--- a/crates/ra_syntax/tests/data/parser/ok/0033_label_break.txt
+++ b/crates/ra_syntax/tests/data/parser/ok/0033_label_break.txt
@@ -1,37 +1,37 @@
1SOURCE_FILE@[0; 506) 1SOURCE_FILE@[0; 506)
2 FN_DEF@[0; 505) 2 FN_DEF@[0; 505)
3 COMMENT@[0; 33) 3 COMMENT@[0; 33) "// format with label ..."
4 WHITESPACE@[33; 34) 4 WHITESPACE@[33; 34) "\n"
5 FN_KW@[34; 36) 5 FN_KW@[34; 36) "fn"
6 WHITESPACE@[36; 37) 6 WHITESPACE@[36; 37) " "
7 NAME@[37; 41) 7 NAME@[37; 41)
8 IDENT@[37; 41) "main" 8 IDENT@[37; 41) "main"
9 PARAM_LIST@[41; 43) 9 PARAM_LIST@[41; 43)
10 L_PAREN@[41; 42) 10 L_PAREN@[41; 42) "("
11 R_PAREN@[42; 43) 11 R_PAREN@[42; 43) ")"
12 WHITESPACE@[43; 44) 12 WHITESPACE@[43; 44) " "
13 BLOCK@[44; 505) 13 BLOCK@[44; 505)
14 L_CURLY@[44; 45) 14 L_CURLY@[44; 45) "{"
15 WHITESPACE@[45; 50) 15 WHITESPACE@[45; 50) "\n "
16 EXPR_STMT@[50; 66) 16 EXPR_STMT@[50; 66)
17 BLOCK_EXPR@[50; 66) 17 BLOCK_EXPR@[50; 66)
18 LABEL@[50; 63) 18 LABEL@[50; 63)
19 LIFETIME@[50; 62) "'empty_block" 19 LIFETIME@[50; 62) "\'empty_block"
20 COLON@[62; 63) 20 COLON@[62; 63) ":"
21 WHITESPACE@[63; 64) 21 WHITESPACE@[63; 64) " "
22 BLOCK@[64; 66) 22 BLOCK@[64; 66)
23 L_CURLY@[64; 65) 23 L_CURLY@[64; 65) "{"
24 R_CURLY@[65; 66) 24 R_CURLY@[65; 66) "}"
25 WHITESPACE@[66; 72) 25 WHITESPACE@[66; 72) "\n\n "
26 EXPR_STMT@[72; 295) 26 EXPR_STMT@[72; 295)
27 BLOCK_EXPR@[72; 295) 27 BLOCK_EXPR@[72; 295)
28 LABEL@[72; 79) 28 LABEL@[72; 79)
29 LIFETIME@[72; 78) "'block" 29 LIFETIME@[72; 78) "\'block"
30 COLON@[78; 79) 30 COLON@[78; 79) ":"
31 WHITESPACE@[79; 80) 31 WHITESPACE@[79; 80) " "
32 BLOCK@[80; 295) 32 BLOCK@[80; 295)
33 L_CURLY@[80; 81) 33 L_CURLY@[80; 81) "{"
34 WHITESPACE@[81; 90) 34 WHITESPACE@[81; 90) "\n "
35 EXPR_STMT@[90; 101) 35 EXPR_STMT@[90; 101)
36 CALL_EXPR@[90; 100) 36 CALL_EXPR@[90; 100)
37 PATH_EXPR@[90; 98) 37 PATH_EXPR@[90; 98)
@@ -40,14 +40,14 @@ SOURCE_FILE@[0; 506)
40 NAME_REF@[90; 98) 40 NAME_REF@[90; 98)
41 IDENT@[90; 98) "do_thing" 41 IDENT@[90; 98) "do_thing"
42 ARG_LIST@[98; 100) 42 ARG_LIST@[98; 100)
43 L_PAREN@[98; 99) 43 L_PAREN@[98; 99) "("
44 R_PAREN@[99; 100) 44 R_PAREN@[99; 100) ")"
45 SEMI@[100; 101) 45 SEMI@[100; 101) ";"
46 WHITESPACE@[101; 110) 46 WHITESPACE@[101; 110) "\n "
47 EXPR_STMT@[110; 170) 47 EXPR_STMT@[110; 170)
48 IF_EXPR@[110; 170) 48 IF_EXPR@[110; 170)
49 IF_KW@[110; 112) 49 IF_KW@[110; 112) "if"
50 WHITESPACE@[112; 113) 50 WHITESPACE@[112; 113) " "
51 CONDITION@[113; 132) 51 CONDITION@[113; 132)
52 CALL_EXPR@[113; 132) 52 CALL_EXPR@[113; 132)
53 PATH_EXPR@[113; 130) 53 PATH_EXPR@[113; 130)
@@ -56,21 +56,21 @@ SOURCE_FILE@[0; 506)
56 NAME_REF@[113; 130) 56 NAME_REF@[113; 130)
57 IDENT@[113; 130) "condition_not_met" 57 IDENT@[113; 130) "condition_not_met"
58 ARG_LIST@[130; 132) 58 ARG_LIST@[130; 132)
59 L_PAREN@[130; 131) 59 L_PAREN@[130; 131) "("
60 R_PAREN@[131; 132) 60 R_PAREN@[131; 132) ")"
61 WHITESPACE@[132; 133) 61 WHITESPACE@[132; 133) " "
62 BLOCK@[133; 170) 62 BLOCK@[133; 170)
63 L_CURLY@[133; 134) 63 L_CURLY@[133; 134) "{"
64 WHITESPACE@[134; 147) 64 WHITESPACE@[134; 147) "\n "
65 EXPR_STMT@[147; 160) 65 EXPR_STMT@[147; 160)
66 BREAK_EXPR@[147; 159) 66 BREAK_EXPR@[147; 159)
67 BREAK_KW@[147; 152) 67 BREAK_KW@[147; 152) "break"
68 WHITESPACE@[152; 153) 68 WHITESPACE@[152; 153) " "
69 LIFETIME@[153; 159) "'block" 69 LIFETIME@[153; 159) "\'block"
70 SEMI@[159; 160) 70 SEMI@[159; 160) ";"
71 WHITESPACE@[160; 169) 71 WHITESPACE@[160; 169) "\n "
72 R_CURLY@[169; 170) 72 R_CURLY@[169; 170) "}"
73 WHITESPACE@[170; 179) 73 WHITESPACE@[170; 179) "\n "
74 EXPR_STMT@[179; 195) 74 EXPR_STMT@[179; 195)
75 CALL_EXPR@[179; 194) 75 CALL_EXPR@[179; 194)
76 PATH_EXPR@[179; 192) 76 PATH_EXPR@[179; 192)
@@ -79,14 +79,14 @@ SOURCE_FILE@[0; 506)
79 NAME_REF@[179; 192) 79 NAME_REF@[179; 192)
80 IDENT@[179; 192) "do_next_thing" 80 IDENT@[179; 192) "do_next_thing"
81 ARG_LIST@[192; 194) 81 ARG_LIST@[192; 194)
82 L_PAREN@[192; 193) 82 L_PAREN@[192; 193) "("
83 R_PAREN@[193; 194) 83 R_PAREN@[193; 194) ")"
84 SEMI@[194; 195) 84 SEMI@[194; 195) ";"
85 WHITESPACE@[195; 204) 85 WHITESPACE@[195; 204) "\n "
86 EXPR_STMT@[204; 264) 86 EXPR_STMT@[204; 264)
87 IF_EXPR@[204; 264) 87 IF_EXPR@[204; 264)
88 IF_KW@[204; 206) 88 IF_KW@[204; 206) "if"
89 WHITESPACE@[206; 207) 89 WHITESPACE@[206; 207) " "
90 CONDITION@[207; 226) 90 CONDITION@[207; 226)
91 CALL_EXPR@[207; 226) 91 CALL_EXPR@[207; 226)
92 PATH_EXPR@[207; 224) 92 PATH_EXPR@[207; 224)
@@ -95,21 +95,21 @@ SOURCE_FILE@[0; 506)
95 NAME_REF@[207; 224) 95 NAME_REF@[207; 224)
96 IDENT@[207; 224) "condition_not_met" 96 IDENT@[207; 224) "condition_not_met"
97 ARG_LIST@[224; 226) 97 ARG_LIST@[224; 226)
98 L_PAREN@[224; 225) 98 L_PAREN@[224; 225) "("
99 R_PAREN@[225; 226) 99 R_PAREN@[225; 226) ")"
100 WHITESPACE@[226; 227) 100 WHITESPACE@[226; 227) " "
101 BLOCK@[227; 264) 101 BLOCK@[227; 264)
102 L_CURLY@[227; 228) 102 L_CURLY@[227; 228) "{"
103 WHITESPACE@[228; 241) 103 WHITESPACE@[228; 241) "\n "
104 EXPR_STMT@[241; 254) 104 EXPR_STMT@[241; 254)
105 BREAK_EXPR@[241; 253) 105 BREAK_EXPR@[241; 253)
106 BREAK_KW@[241; 246) 106 BREAK_KW@[241; 246) "break"
107 WHITESPACE@[246; 247) 107 WHITESPACE@[246; 247) " "
108 LIFETIME@[247; 253) "'block" 108 LIFETIME@[247; 253) "\'block"
109 SEMI@[253; 254) 109 SEMI@[253; 254) ";"
110 WHITESPACE@[254; 263) 110 WHITESPACE@[254; 263) "\n "
111 R_CURLY@[263; 264) 111 R_CURLY@[263; 264) "}"
112 WHITESPACE@[264; 273) 112 WHITESPACE@[264; 273) "\n "
113 EXPR_STMT@[273; 289) 113 EXPR_STMT@[273; 289)
114 CALL_EXPR@[273; 288) 114 CALL_EXPR@[273; 288)
115 PATH_EXPR@[273; 286) 115 PATH_EXPR@[273; 286)
@@ -118,33 +118,33 @@ SOURCE_FILE@[0; 506)
118 NAME_REF@[273; 286) 118 NAME_REF@[273; 286)
119 IDENT@[273; 286) "do_last_thing" 119 IDENT@[273; 286) "do_last_thing"
120 ARG_LIST@[286; 288) 120 ARG_LIST@[286; 288)
121 L_PAREN@[286; 287) 121 L_PAREN@[286; 287) "("
122 R_PAREN@[287; 288) 122 R_PAREN@[287; 288) ")"
123 SEMI@[288; 289) 123 SEMI@[288; 289) ";"
124 WHITESPACE@[289; 294) 124 WHITESPACE@[289; 294) "\n "
125 R_CURLY@[294; 295) 125 R_CURLY@[294; 295) "}"
126 WHITESPACE@[295; 301) 126 WHITESPACE@[295; 301) "\n\n "
127 LET_STMT@[301; 503) 127 LET_STMT@[301; 503)
128 LET_KW@[301; 304) 128 LET_KW@[301; 304) "let"
129 WHITESPACE@[304; 305) 129 WHITESPACE@[304; 305) " "
130 BIND_PAT@[305; 311) 130 BIND_PAT@[305; 311)
131 NAME@[305; 311) 131 NAME@[305; 311)
132 IDENT@[305; 311) "result" 132 IDENT@[305; 311) "result"
133 WHITESPACE@[311; 312) 133 WHITESPACE@[311; 312) " "
134 EQ@[312; 313) 134 EQ@[312; 313) "="
135 WHITESPACE@[313; 314) 135 WHITESPACE@[313; 314) " "
136 BLOCK_EXPR@[314; 502) 136 BLOCK_EXPR@[314; 502)
137 LABEL@[314; 321) 137 LABEL@[314; 321)
138 LIFETIME@[314; 320) "'block" 138 LIFETIME@[314; 320) "\'block"
139 COLON@[320; 321) 139 COLON@[320; 321) ":"
140 WHITESPACE@[321; 322) 140 WHITESPACE@[321; 322) " "
141 BLOCK@[322; 502) 141 BLOCK@[322; 502)
142 L_CURLY@[322; 323) 142 L_CURLY@[322; 323) "{"
143 WHITESPACE@[323; 332) 143 WHITESPACE@[323; 332) "\n "
144 EXPR_STMT@[332; 403) 144 EXPR_STMT@[332; 403)
145 IF_EXPR@[332; 403) 145 IF_EXPR@[332; 403)
146 IF_KW@[332; 334) 146 IF_KW@[332; 334) "if"
147 WHITESPACE@[334; 335) 147 WHITESPACE@[334; 335) " "
148 CONDITION@[335; 340) 148 CONDITION@[335; 340)
149 CALL_EXPR@[335; 340) 149 CALL_EXPR@[335; 340)
150 PATH_EXPR@[335; 338) 150 PATH_EXPR@[335; 338)
@@ -153,30 +153,30 @@ SOURCE_FILE@[0; 506)
153 NAME_REF@[335; 338) 153 NAME_REF@[335; 338)
154 IDENT@[335; 338) "foo" 154 IDENT@[335; 338) "foo"
155 ARG_LIST@[338; 340) 155 ARG_LIST@[338; 340)
156 L_PAREN@[338; 339) 156 L_PAREN@[338; 339) "("
157 R_PAREN@[339; 340) 157 R_PAREN@[339; 340) ")"
158 WHITESPACE@[340; 341) 158 WHITESPACE@[340; 341) " "
159 BLOCK@[341; 403) 159 BLOCK@[341; 403)
160 L_CURLY@[341; 342) 160 L_CURLY@[341; 342) "{"
161 WHITESPACE@[342; 355) 161 WHITESPACE@[342; 355) "\n "
162 COMMENT@[355; 365) 162 COMMENT@[355; 365) "// comment"
163 WHITESPACE@[365; 378) 163 WHITESPACE@[365; 378) "\n "
164 EXPR_STMT@[378; 393) 164 EXPR_STMT@[378; 393)
165 BREAK_EXPR@[378; 392) 165 BREAK_EXPR@[378; 392)
166 BREAK_KW@[378; 383) 166 BREAK_KW@[378; 383) "break"
167 WHITESPACE@[383; 384) 167 WHITESPACE@[383; 384) " "
168 LIFETIME@[384; 390) "'block" 168 LIFETIME@[384; 390) "\'block"
169 WHITESPACE@[390; 391) 169 WHITESPACE@[390; 391) " "
170 LITERAL@[391; 392) 170 LITERAL@[391; 392)
171 INT_NUMBER@[391; 392) "1" 171 INT_NUMBER@[391; 392) "1"
172 SEMI@[392; 393) 172 SEMI@[392; 393) ";"
173 WHITESPACE@[393; 402) 173 WHITESPACE@[393; 402) "\n "
174 R_CURLY@[402; 403) 174 R_CURLY@[402; 403) "}"
175 WHITESPACE@[403; 412) 175 WHITESPACE@[403; 412) "\n "
176 EXPR_STMT@[412; 486) 176 EXPR_STMT@[412; 486)
177 IF_EXPR@[412; 486) 177 IF_EXPR@[412; 486)
178 IF_KW@[412; 414) 178 IF_KW@[412; 414) "if"
179 WHITESPACE@[414; 415) 179 WHITESPACE@[414; 415) " "
180 CONDITION@[415; 420) 180 CONDITION@[415; 420)
181 CALL_EXPR@[415; 420) 181 CALL_EXPR@[415; 420)
182 PATH_EXPR@[415; 418) 182 PATH_EXPR@[415; 418)
@@ -185,31 +185,31 @@ SOURCE_FILE@[0; 506)
185 NAME_REF@[415; 418) 185 NAME_REF@[415; 418)
186 IDENT@[415; 418) "bar" 186 IDENT@[415; 418) "bar"
187 ARG_LIST@[418; 420) 187 ARG_LIST@[418; 420)
188 L_PAREN@[418; 419) 188 L_PAREN@[418; 419) "("
189 R_PAREN@[419; 420) 189 R_PAREN@[419; 420) ")"
190 WHITESPACE@[420; 421) 190 WHITESPACE@[420; 421) " "
191 BLOCK@[421; 486) 191 BLOCK@[421; 486)
192 L_CURLY@[421; 422) 192 L_CURLY@[421; 422) "{"
193 WHITESPACE@[422; 435) 193 WHITESPACE@[422; 435) "\n "
194 COMMENT@[435; 448) 194 COMMENT@[435; 448) "/* comment */"
195 WHITESPACE@[448; 461) 195 WHITESPACE@[448; 461) "\n "
196 EXPR_STMT@[461; 476) 196 EXPR_STMT@[461; 476)
197 BREAK_EXPR@[461; 475) 197 BREAK_EXPR@[461; 475)
198 BREAK_KW@[461; 466) 198 BREAK_KW@[461; 466) "break"
199 WHITESPACE@[466; 467) 199 WHITESPACE@[466; 467) " "
200 LIFETIME@[467; 473) "'block" 200 LIFETIME@[467; 473) "\'block"
201 WHITESPACE@[473; 474) 201 WHITESPACE@[473; 474) " "
202 LITERAL@[474; 475) 202 LITERAL@[474; 475)
203 INT_NUMBER@[474; 475) "2" 203 INT_NUMBER@[474; 475) "2"
204 SEMI@[475; 476) 204 SEMI@[475; 476) ";"
205 WHITESPACE@[476; 485) 205 WHITESPACE@[476; 485) "\n "
206 R_CURLY@[485; 486) 206 R_CURLY@[485; 486) "}"
207 WHITESPACE@[486; 495) 207 WHITESPACE@[486; 495) "\n "
208 LITERAL@[495; 496) 208 LITERAL@[495; 496)
209 INT_NUMBER@[495; 496) "3" 209 INT_NUMBER@[495; 496) "3"
210 WHITESPACE@[496; 501) 210 WHITESPACE@[496; 501) "\n "
211 R_CURLY@[501; 502) 211 R_CURLY@[501; 502) "}"
212 SEMI@[502; 503) 212 SEMI@[502; 503) ";"
213 WHITESPACE@[503; 504) 213 WHITESPACE@[503; 504) "\n"
214 R_CURLY@[504; 505) 214 R_CURLY@[504; 505) "}"
215 WHITESPACE@[505; 506) 215 WHITESPACE@[505; 506) "\n"
diff --git a/crates/ra_syntax/tests/data/parser/ok/0034_crate_path_in_call.txt b/crates/ra_syntax/tests/data/parser/ok/0034_crate_path_in_call.txt
index 3995f476c..a77d4aabe 100644
--- a/crates/ra_syntax/tests/data/parser/ok/0034_crate_path_in_call.txt
+++ b/crates/ra_syntax/tests/data/parser/ok/0034_crate_path_in_call.txt
@@ -1,16 +1,16 @@
1SOURCE_FILE@[0; 62) 1SOURCE_FILE@[0; 62)
2 FN_DEF@[0; 61) 2 FN_DEF@[0; 61)
3 FN_KW@[0; 2) 3 FN_KW@[0; 2) "fn"
4 WHITESPACE@[2; 3) 4 WHITESPACE@[2; 3) " "
5 NAME@[3; 7) 5 NAME@[3; 7)
6 IDENT@[3; 7) "main" 6 IDENT@[3; 7) "main"
7 PARAM_LIST@[7; 9) 7 PARAM_LIST@[7; 9)
8 L_PAREN@[7; 8) 8 L_PAREN@[7; 8) "("
9 R_PAREN@[8; 9) 9 R_PAREN@[8; 9) ")"
10 WHITESPACE@[9; 10) 10 WHITESPACE@[9; 10) " "
11 BLOCK@[10; 61) 11 BLOCK@[10; 61)
12 L_CURLY@[10; 11) 12 L_CURLY@[10; 11) "{"
13 WHITESPACE@[11; 16) 13 WHITESPACE@[11; 16) "\n "
14 EXPR_STMT@[16; 59) 14 EXPR_STMT@[16; 59)
15 CALL_EXPR@[16; 58) 15 CALL_EXPR@[16; 58)
16 PATH_EXPR@[16; 26) 16 PATH_EXPR@[16; 26)
@@ -19,23 +19,23 @@ SOURCE_FILE@[0; 62)
19 NAME_REF@[16; 26) 19 NAME_REF@[16; 26)
20 IDENT@[16; 26) "make_query" 20 IDENT@[16; 26) "make_query"
21 ARG_LIST@[26; 58) 21 ARG_LIST@[26; 58)
22 L_PAREN@[26; 27) 22 L_PAREN@[26; 27) "("
23 PATH_EXPR@[27; 57) 23 PATH_EXPR@[27; 57)
24 PATH@[27; 57) 24 PATH@[27; 57)
25 PATH@[27; 44) 25 PATH@[27; 44)
26 PATH@[27; 32) 26 PATH@[27; 32)
27 PATH_SEGMENT@[27; 32) 27 PATH_SEGMENT@[27; 32)
28 CRATE_KW@[27; 32) 28 CRATE_KW@[27; 32) "crate"
29 COLONCOLON@[32; 34) 29 COLONCOLON@[32; 34) "::"
30 PATH_SEGMENT@[34; 44) 30 PATH_SEGMENT@[34; 44)
31 NAME_REF@[34; 44) 31 NAME_REF@[34; 44)
32 IDENT@[34; 44) "module_map" 32 IDENT@[34; 44) "module_map"
33 COLONCOLON@[44; 46) 33 COLONCOLON@[44; 46) "::"
34 PATH_SEGMENT@[46; 57) 34 PATH_SEGMENT@[46; 57)
35 NAME_REF@[46; 57) 35 NAME_REF@[46; 57)
36 IDENT@[46; 57) "module_tree" 36 IDENT@[46; 57) "module_tree"
37 R_PAREN@[57; 58) 37 R_PAREN@[57; 58) ")"
38 SEMI@[58; 59) 38 SEMI@[58; 59) ";"
39 WHITESPACE@[59; 60) 39 WHITESPACE@[59; 60) "\n"
40 R_CURLY@[60; 61) 40 R_CURLY@[60; 61) "}"
41 WHITESPACE@[61; 62) 41 WHITESPACE@[61; 62) "\n"
diff --git a/crates/ra_syntax/tests/data/parser/ok/0035_weird_exprs.txt b/crates/ra_syntax/tests/data/parser/ok/0035_weird_exprs.txt
index f3987c3b7..960d332e4 100644
--- a/crates/ra_syntax/tests/data/parser/ok/0035_weird_exprs.txt
+++ b/crates/ra_syntax/tests/data/parser/ok/0035_weird_exprs.txt
@@ -1,75 +1,75 @@
1SOURCE_FILE@[0; 3813) 1SOURCE_FILE@[0; 3813)
2 COMMENT@[0; 55) 2 COMMENT@[0; 55) "//! Adapted from a `r ..."
3 WHITESPACE@[55; 56) 3 WHITESPACE@[55; 56) "\n"
4 COMMENT@[56; 173) 4 COMMENT@[56; 173) "//! https://github.co ..."
5 WHITESPACE@[173; 174) 5 WHITESPACE@[173; 174) "\n"
6 COMMENT@[174; 178) 6 COMMENT@[174; 178) "//! "
7 WHITESPACE@[178; 179) 7 WHITESPACE@[178; 179) "\n"
8 COMMENT@[179; 269) 8 COMMENT@[179; 269) "//! Reported to rust- ..."
9 WHITESPACE@[269; 271) 9 WHITESPACE@[269; 271) "\n\n"
10 ATTR@[271; 302) 10 ATTR@[271; 302)
11 POUND@[271; 272) 11 POUND@[271; 272) "#"
12 EXCL@[272; 273) 12 EXCL@[272; 273) "!"
13 TOKEN_TREE@[273; 302) 13 TOKEN_TREE@[273; 302)
14 L_BRACK@[273; 274) 14 L_BRACK@[273; 274) "["
15 IDENT@[274; 279) "allow" 15 IDENT@[274; 279) "allow"
16 TOKEN_TREE@[279; 301) 16 TOKEN_TREE@[279; 301)
17 L_PAREN@[279; 280) 17 L_PAREN@[279; 280) "("
18 IDENT@[280; 300) "non_camel_case_types" 18 IDENT@[280; 300) "non_camel_case_types"
19 R_PAREN@[300; 301) 19 R_PAREN@[300; 301) ")"
20 R_BRACK@[301; 302) 20 R_BRACK@[301; 302) "]"
21 WHITESPACE@[302; 303) 21 WHITESPACE@[302; 303) "\n"
22 ATTR@[303; 323) 22 ATTR@[303; 323)
23 POUND@[303; 304) 23 POUND@[303; 304) "#"
24 EXCL@[304; 305) 24 EXCL@[304; 305) "!"
25 TOKEN_TREE@[305; 323) 25 TOKEN_TREE@[305; 323)
26 L_BRACK@[305; 306) 26 L_BRACK@[305; 306) "["
27 IDENT@[306; 311) "allow" 27 IDENT@[306; 311) "allow"
28 TOKEN_TREE@[311; 322) 28 TOKEN_TREE@[311; 322)
29 L_PAREN@[311; 312) 29 L_PAREN@[311; 312) "("
30 IDENT@[312; 321) "dead_code" 30 IDENT@[312; 321) "dead_code"
31 R_PAREN@[321; 322) 31 R_PAREN@[321; 322) ")"
32 R_BRACK@[322; 323) 32 R_BRACK@[322; 323) "]"
33 WHITESPACE@[323; 324) 33 WHITESPACE@[323; 324) "\n"
34 ATTR@[324; 351) 34 ATTR@[324; 351)
35 POUND@[324; 325) 35 POUND@[324; 325) "#"
36 EXCL@[325; 326) 36 EXCL@[325; 326) "!"
37 TOKEN_TREE@[326; 351) 37 TOKEN_TREE@[326; 351)
38 L_BRACK@[326; 327) 38 L_BRACK@[326; 327) "["
39 IDENT@[327; 332) "allow" 39 IDENT@[327; 332) "allow"
40 TOKEN_TREE@[332; 350) 40 TOKEN_TREE@[332; 350)
41 L_PAREN@[332; 333) 41 L_PAREN@[332; 333) "("
42 IDENT@[333; 349) "unreachable_code" 42 IDENT@[333; 349) "unreachable_code"
43 R_PAREN@[349; 350) 43 R_PAREN@[349; 350) ")"
44 R_BRACK@[350; 351) 44 R_BRACK@[350; 351) "]"
45 WHITESPACE@[351; 352) 45 WHITESPACE@[351; 352) "\n"
46 ATTR@[352; 376) 46 ATTR@[352; 376)
47 POUND@[352; 353) 47 POUND@[352; 353) "#"
48 EXCL@[353; 354) 48 EXCL@[353; 354) "!"
49 TOKEN_TREE@[354; 376) 49 TOKEN_TREE@[354; 376)
50 L_BRACK@[354; 355) 50 L_BRACK@[354; 355) "["
51 IDENT@[355; 360) "allow" 51 IDENT@[355; 360) "allow"
52 TOKEN_TREE@[360; 375) 52 TOKEN_TREE@[360; 375)
53 L_PAREN@[360; 361) 53 L_PAREN@[360; 361) "("
54 IDENT@[361; 374) "unused_parens" 54 IDENT@[361; 374) "unused_parens"
55 R_PAREN@[374; 375) 55 R_PAREN@[374; 375) ")"
56 R_BRACK@[375; 376) 56 R_BRACK@[375; 376) "]"
57 WHITESPACE@[376; 378) 57 WHITESPACE@[376; 378) "\n\n"
58 ATTR@[378; 405) 58 ATTR@[378; 405)
59 POUND@[378; 379) 59 POUND@[378; 379) "#"
60 EXCL@[379; 380) 60 EXCL@[379; 380) "!"
61 TOKEN_TREE@[380; 405) 61 TOKEN_TREE@[380; 405)
62 L_BRACK@[380; 381) 62 L_BRACK@[380; 381) "["
63 IDENT@[381; 396) "recursion_limit" 63 IDENT@[381; 396) "recursion_limit"
64 WHITESPACE@[396; 397) 64 WHITESPACE@[396; 397) " "
65 EQ@[397; 398) 65 EQ@[397; 398) "="
66 WHITESPACE@[398; 399) 66 WHITESPACE@[398; 399) " "
67 STRING@[399; 404) 67 STRING@[399; 404) "\"128\""
68 R_BRACK@[404; 405) 68 R_BRACK@[404; 405) "]"
69 WHITESPACE@[405; 407) 69 WHITESPACE@[405; 407) "\n\n"
70 USE_ITEM@[407; 427) 70 USE_ITEM@[407; 427)
71 USE_KW@[407; 410) 71 USE_KW@[407; 410) "use"
72 WHITESPACE@[410; 411) 72 WHITESPACE@[410; 411) " "
73 USE_TREE@[411; 426) 73 USE_TREE@[411; 426)
74 PATH@[411; 426) 74 PATH@[411; 426)
75 PATH@[411; 420) 75 PATH@[411; 420)
@@ -77,19 +77,19 @@ SOURCE_FILE@[0; 3813)
77 PATH_SEGMENT@[411; 414) 77 PATH_SEGMENT@[411; 414)
78 NAME_REF@[411; 414) 78 NAME_REF@[411; 414)
79 IDENT@[411; 414) "std" 79 IDENT@[411; 414) "std"
80 COLONCOLON@[414; 416) 80 COLONCOLON@[414; 416) "::"
81 PATH_SEGMENT@[416; 420) 81 PATH_SEGMENT@[416; 420)
82 NAME_REF@[416; 420) 82 NAME_REF@[416; 420)
83 IDENT@[416; 420) "cell" 83 IDENT@[416; 420) "cell"
84 COLONCOLON@[420; 422) 84 COLONCOLON@[420; 422) "::"
85 PATH_SEGMENT@[422; 426) 85 PATH_SEGMENT@[422; 426)
86 NAME_REF@[422; 426) 86 NAME_REF@[422; 426)
87 IDENT@[422; 426) "Cell" 87 IDENT@[422; 426) "Cell"
88 SEMI@[426; 427) 88 SEMI@[426; 427) ";"
89 WHITESPACE@[427; 428) 89 WHITESPACE@[427; 428) "\n"
90 USE_ITEM@[428; 447) 90 USE_ITEM@[428; 447)
91 USE_KW@[428; 431) 91 USE_KW@[428; 431) "use"
92 WHITESPACE@[431; 432) 92 WHITESPACE@[431; 432) " "
93 USE_TREE@[432; 446) 93 USE_TREE@[432; 446)
94 PATH@[432; 446) 94 PATH@[432; 446)
95 PATH@[432; 440) 95 PATH@[432; 440)
@@ -97,99 +97,99 @@ SOURCE_FILE@[0; 3813)
97 PATH_SEGMENT@[432; 435) 97 PATH_SEGMENT@[432; 435)
98 NAME_REF@[432; 435) 98 NAME_REF@[432; 435)
99 IDENT@[432; 435) "std" 99 IDENT@[432; 435) "std"
100 COLONCOLON@[435; 437) 100 COLONCOLON@[435; 437) "::"
101 PATH_SEGMENT@[437; 440) 101 PATH_SEGMENT@[437; 440)
102 NAME_REF@[437; 440) 102 NAME_REF@[437; 440)
103 IDENT@[437; 440) "mem" 103 IDENT@[437; 440) "mem"
104 COLONCOLON@[440; 442) 104 COLONCOLON@[440; 442) "::"
105 PATH_SEGMENT@[442; 446) 105 PATH_SEGMENT@[442; 446)
106 NAME_REF@[442; 446) 106 NAME_REF@[442; 446)
107 IDENT@[442; 446) "swap" 107 IDENT@[442; 446) "swap"
108 SEMI@[446; 447) 108 SEMI@[446; 447) ";"
109 WHITESPACE@[447; 449) 109 WHITESPACE@[447; 449) "\n\n"
110 COMMENT@[449; 518) 110 COMMENT@[449; 518) "// Just a grab bag of ..."
111 WHITESPACE@[518; 520) 111 WHITESPACE@[518; 520) "\n\n"
112 FN_DEF@[520; 572) 112 FN_DEF@[520; 572)
113 FN_KW@[520; 522) 113 FN_KW@[520; 522) "fn"
114 WHITESPACE@[522; 523) 114 WHITESPACE@[522; 523) " "
115 NAME@[523; 530) 115 NAME@[523; 530)
116 IDENT@[523; 530) "strange" 116 IDENT@[523; 530) "strange"
117 PARAM_LIST@[530; 532) 117 PARAM_LIST@[530; 532)
118 L_PAREN@[530; 531) 118 L_PAREN@[530; 531) "("
119 R_PAREN@[531; 532) 119 R_PAREN@[531; 532) ")"
120 WHITESPACE@[532; 533) 120 WHITESPACE@[532; 533) " "
121 RET_TYPE@[533; 540) 121 RET_TYPE@[533; 540)
122 THIN_ARROW@[533; 535) 122 THIN_ARROW@[533; 535) "->"
123 WHITESPACE@[535; 536) 123 WHITESPACE@[535; 536) " "
124 PATH_TYPE@[536; 540) 124 PATH_TYPE@[536; 540)
125 PATH@[536; 540) 125 PATH@[536; 540)
126 PATH_SEGMENT@[536; 540) 126 PATH_SEGMENT@[536; 540)
127 NAME_REF@[536; 540) 127 NAME_REF@[536; 540)
128 IDENT@[536; 540) "bool" 128 IDENT@[536; 540) "bool"
129 WHITESPACE@[540; 541) 129 WHITESPACE@[540; 541) " "
130 BLOCK@[541; 572) 130 BLOCK@[541; 572)
131 L_CURLY@[541; 542) 131 L_CURLY@[541; 542) "{"
132 WHITESPACE@[542; 543) 132 WHITESPACE@[542; 543) " "
133 LET_STMT@[543; 570) 133 LET_STMT@[543; 570)
134 LET_KW@[543; 546) 134 LET_KW@[543; 546) "let"
135 WHITESPACE@[546; 547) 135 WHITESPACE@[546; 547) " "
136 BIND_PAT@[547; 549) 136 BIND_PAT@[547; 549)
137 NAME@[547; 549) 137 NAME@[547; 549)
138 IDENT@[547; 549) "_x" 138 IDENT@[547; 549) "_x"
139 COLON@[549; 550) 139 COLON@[549; 550) ":"
140 WHITESPACE@[550; 551) 140 WHITESPACE@[550; 551) " "
141 PATH_TYPE@[551; 555) 141 PATH_TYPE@[551; 555)
142 PATH@[551; 555) 142 PATH@[551; 555)
143 PATH_SEGMENT@[551; 555) 143 PATH_SEGMENT@[551; 555)
144 NAME_REF@[551; 555) 144 NAME_REF@[551; 555)
145 IDENT@[551; 555) "bool" 145 IDENT@[551; 555) "bool"
146 WHITESPACE@[555; 556) 146 WHITESPACE@[555; 556) " "
147 EQ@[556; 557) 147 EQ@[556; 557) "="
148 WHITESPACE@[557; 558) 148 WHITESPACE@[557; 558) " "
149 RETURN_EXPR@[558; 569) 149 RETURN_EXPR@[558; 569)
150 RETURN_KW@[558; 564) 150 RETURN_KW@[558; 564) "return"
151 WHITESPACE@[564; 565) 151 WHITESPACE@[564; 565) " "
152 LITERAL@[565; 569) 152 LITERAL@[565; 569)
153 TRUE_KW@[565; 569) 153 TRUE_KW@[565; 569) "true"
154 SEMI@[569; 570) 154 SEMI@[569; 570) ";"
155 WHITESPACE@[570; 571) 155 WHITESPACE@[570; 571) " "
156 R_CURLY@[571; 572) 156 R_CURLY@[571; 572) "}"
157 WHITESPACE@[572; 574) 157 WHITESPACE@[572; 574) "\n\n"
158 FN_DEF@[574; 624) 158 FN_DEF@[574; 624)
159 FN_KW@[574; 576) 159 FN_KW@[574; 576) "fn"
160 WHITESPACE@[576; 577) 160 WHITESPACE@[576; 577) " "
161 NAME@[577; 582) 161 NAME@[577; 582)
162 IDENT@[577; 582) "funny" 162 IDENT@[577; 582) "funny"
163 PARAM_LIST@[582; 584) 163 PARAM_LIST@[582; 584)
164 L_PAREN@[582; 583) 164 L_PAREN@[582; 583) "("
165 R_PAREN@[583; 584) 165 R_PAREN@[583; 584) ")"
166 WHITESPACE@[584; 585) 166 WHITESPACE@[584; 585) " "
167 BLOCK@[585; 624) 167 BLOCK@[585; 624)
168 L_CURLY@[585; 586) 168 L_CURLY@[585; 586) "{"
169 WHITESPACE@[586; 591) 169 WHITESPACE@[586; 591) "\n "
170 FN_DEF@[591; 607) 170 FN_DEF@[591; 607)
171 FN_KW@[591; 593) 171 FN_KW@[591; 593) "fn"
172 WHITESPACE@[593; 594) 172 WHITESPACE@[593; 594) " "
173 NAME@[594; 595) 173 NAME@[594; 595)
174 IDENT@[594; 595) "f" 174 IDENT@[594; 595) "f"
175 PARAM_LIST@[595; 603) 175 PARAM_LIST@[595; 603)
176 L_PAREN@[595; 596) 176 L_PAREN@[595; 596) "("
177 PARAM@[596; 602) 177 PARAM@[596; 602)
178 BIND_PAT@[596; 598) 178 BIND_PAT@[596; 598)
179 NAME@[596; 598) 179 NAME@[596; 598)
180 IDENT@[596; 598) "_x" 180 IDENT@[596; 598) "_x"
181 COLON@[598; 599) 181 COLON@[598; 599) ":"
182 WHITESPACE@[599; 600) 182 WHITESPACE@[599; 600) " "
183 TUPLE_TYPE@[600; 602) 183 TUPLE_TYPE@[600; 602)
184 L_PAREN@[600; 601) 184 L_PAREN@[600; 601) "("
185 R_PAREN@[601; 602) 185 R_PAREN@[601; 602) ")"
186 R_PAREN@[602; 603) 186 R_PAREN@[602; 603) ")"
187 WHITESPACE@[603; 604) 187 WHITESPACE@[603; 604) " "
188 BLOCK@[604; 607) 188 BLOCK@[604; 607)
189 L_CURLY@[604; 605) 189 L_CURLY@[604; 605) "{"
190 WHITESPACE@[605; 606) 190 WHITESPACE@[605; 606) " "
191 R_CURLY@[606; 607) 191 R_CURLY@[606; 607) "}"
192 WHITESPACE@[607; 612) 192 WHITESPACE@[607; 612) "\n "
193 EXPR_STMT@[612; 622) 193 EXPR_STMT@[612; 622)
194 CALL_EXPR@[612; 621) 194 CALL_EXPR@[612; 621)
195 PATH_EXPR@[612; 613) 195 PATH_EXPR@[612; 613)
@@ -198,86 +198,86 @@ SOURCE_FILE@[0; 3813)
198 NAME_REF@[612; 613) 198 NAME_REF@[612; 613)
199 IDENT@[612; 613) "f" 199 IDENT@[612; 613) "f"
200 ARG_LIST@[613; 621) 200 ARG_LIST@[613; 621)
201 L_PAREN@[613; 614) 201 L_PAREN@[613; 614) "("
202 RETURN_EXPR@[614; 620) 202 RETURN_EXPR@[614; 620)
203 RETURN_KW@[614; 620) 203 RETURN_KW@[614; 620) "return"
204 R_PAREN@[620; 621) 204 R_PAREN@[620; 621) ")"
205 SEMI@[621; 622) 205 SEMI@[621; 622) ";"
206 WHITESPACE@[622; 623) 206 WHITESPACE@[622; 623) "\n"
207 R_CURLY@[623; 624) 207 R_CURLY@[623; 624) "}"
208 WHITESPACE@[624; 626) 208 WHITESPACE@[624; 626) "\n\n"
209 FN_DEF@[626; 816) 209 FN_DEF@[626; 816)
210 FN_KW@[626; 628) 210 FN_KW@[626; 628) "fn"
211 WHITESPACE@[628; 629) 211 WHITESPACE@[628; 629) " "
212 NAME@[629; 633) 212 NAME@[629; 633)
213 IDENT@[629; 633) "what" 213 IDENT@[629; 633) "what"
214 PARAM_LIST@[633; 635) 214 PARAM_LIST@[633; 635)
215 L_PAREN@[633; 634) 215 L_PAREN@[633; 634) "("
216 R_PAREN@[634; 635) 216 R_PAREN@[634; 635) ")"
217 WHITESPACE@[635; 636) 217 WHITESPACE@[635; 636) " "
218 BLOCK@[636; 816) 218 BLOCK@[636; 816)
219 L_CURLY@[636; 637) 219 L_CURLY@[636; 637) "{"
220 WHITESPACE@[637; 642) 220 WHITESPACE@[637; 642) "\n "
221 FN_DEF@[642; 720) 221 FN_DEF@[642; 720)
222 FN_KW@[642; 644) 222 FN_KW@[642; 644) "fn"
223 WHITESPACE@[644; 645) 223 WHITESPACE@[644; 645) " "
224 NAME@[645; 648) 224 NAME@[645; 648)
225 IDENT@[645; 648) "the" 225 IDENT@[645; 648) "the"
226 PARAM_LIST@[648; 664) 226 PARAM_LIST@[648; 664)
227 L_PAREN@[648; 649) 227 L_PAREN@[648; 649) "("
228 PARAM@[649; 663) 228 PARAM@[649; 663)
229 BIND_PAT@[649; 650) 229 BIND_PAT@[649; 650)
230 NAME@[649; 650) 230 NAME@[649; 650)
231 IDENT@[649; 650) "x" 231 IDENT@[649; 650) "x"
232 COLON@[650; 651) 232 COLON@[650; 651) ":"
233 WHITESPACE@[651; 652) 233 WHITESPACE@[651; 652) " "
234 REFERENCE_TYPE@[652; 663) 234 REFERENCE_TYPE@[652; 663)
235 AMP@[652; 653) 235 AMP@[652; 653) "&"
236 PATH_TYPE@[653; 663) 236 PATH_TYPE@[653; 663)
237 PATH@[653; 663) 237 PATH@[653; 663)
238 PATH_SEGMENT@[653; 663) 238 PATH_SEGMENT@[653; 663)
239 NAME_REF@[653; 657) 239 NAME_REF@[653; 657)
240 IDENT@[653; 657) "Cell" 240 IDENT@[653; 657) "Cell"
241 TYPE_ARG_LIST@[657; 663) 241 TYPE_ARG_LIST@[657; 663)
242 L_ANGLE@[657; 658) 242 L_ANGLE@[657; 658) "<"
243 TYPE_ARG@[658; 662) 243 TYPE_ARG@[658; 662)
244 PATH_TYPE@[658; 662) 244 PATH_TYPE@[658; 662)
245 PATH@[658; 662) 245 PATH@[658; 662)
246 PATH_SEGMENT@[658; 662) 246 PATH_SEGMENT@[658; 662)
247 NAME_REF@[658; 662) 247 NAME_REF@[658; 662)
248 IDENT@[658; 662) "bool" 248 IDENT@[658; 662) "bool"
249 R_ANGLE@[662; 663) 249 R_ANGLE@[662; 663) ">"
250 R_PAREN@[663; 664) 250 R_PAREN@[663; 664) ")"
251 WHITESPACE@[664; 665) 251 WHITESPACE@[664; 665) " "
252 BLOCK@[665; 720) 252 BLOCK@[665; 720)
253 L_CURLY@[665; 666) 253 L_CURLY@[665; 666) "{"
254 WHITESPACE@[666; 675) 254 WHITESPACE@[666; 675) "\n "
255 EXPR_STMT@[675; 714) 255 EXPR_STMT@[675; 714)
256 RETURN_EXPR@[675; 713) 256 RETURN_EXPR@[675; 713)
257 RETURN_KW@[675; 681) 257 RETURN_KW@[675; 681) "return"
258 WHITESPACE@[681; 682) 258 WHITESPACE@[681; 682) " "
259 WHILE_EXPR@[682; 713) 259 WHILE_EXPR@[682; 713)
260 WHILE_KW@[682; 687) 260 WHILE_KW@[682; 687) "while"
261 WHITESPACE@[687; 688) 261 WHITESPACE@[687; 688) " "
262 CONDITION@[688; 696) 262 CONDITION@[688; 696)
263 PREFIX_EXPR@[688; 696) 263 PREFIX_EXPR@[688; 696)
264 EXCL@[688; 689) 264 EXCL@[688; 689) "!"
265 METHOD_CALL_EXPR@[689; 696) 265 METHOD_CALL_EXPR@[689; 696)
266 PATH_EXPR@[689; 690) 266 PATH_EXPR@[689; 690)
267 PATH@[689; 690) 267 PATH@[689; 690)
268 PATH_SEGMENT@[689; 690) 268 PATH_SEGMENT@[689; 690)
269 NAME_REF@[689; 690) 269 NAME_REF@[689; 690)
270 IDENT@[689; 690) "x" 270 IDENT@[689; 690) "x"
271 DOT@[690; 691) 271 DOT@[690; 691) "."
272 NAME_REF@[691; 694) 272 NAME_REF@[691; 694)
273 IDENT@[691; 694) "get" 273 IDENT@[691; 694) "get"
274 ARG_LIST@[694; 696) 274 ARG_LIST@[694; 696)
275 L_PAREN@[694; 695) 275 L_PAREN@[694; 695) "("
276 R_PAREN@[695; 696) 276 R_PAREN@[695; 696) ")"
277 WHITESPACE@[696; 697) 277 WHITESPACE@[696; 697) " "
278 BLOCK@[697; 713) 278 BLOCK@[697; 713)
279 L_CURLY@[697; 698) 279 L_CURLY@[697; 698) "{"
280 WHITESPACE@[698; 699) 280 WHITESPACE@[698; 699) " "
281 EXPR_STMT@[699; 711) 281 EXPR_STMT@[699; 711)
282 METHOD_CALL_EXPR@[699; 710) 282 METHOD_CALL_EXPR@[699; 710)
283 PATH_EXPR@[699; 700) 283 PATH_EXPR@[699; 700)
@@ -285,32 +285,32 @@ SOURCE_FILE@[0; 3813)
285 PATH_SEGMENT@[699; 700) 285 PATH_SEGMENT@[699; 700)
286 NAME_REF@[699; 700) 286 NAME_REF@[699; 700)
287 IDENT@[699; 700) "x" 287 IDENT@[699; 700) "x"
288 DOT@[700; 701) 288 DOT@[700; 701) "."
289 NAME_REF@[701; 704) 289 NAME_REF@[701; 704)
290 IDENT@[701; 704) "set" 290 IDENT@[701; 704) "set"
291 ARG_LIST@[704; 710) 291 ARG_LIST@[704; 710)
292 L_PAREN@[704; 705) 292 L_PAREN@[704; 705) "("
293 LITERAL@[705; 709) 293 LITERAL@[705; 709)
294 TRUE_KW@[705; 709) 294 TRUE_KW@[705; 709) "true"
295 R_PAREN@[709; 710) 295 R_PAREN@[709; 710) ")"
296 SEMI@[710; 711) 296 SEMI@[710; 711) ";"
297 WHITESPACE@[711; 712) 297 WHITESPACE@[711; 712) " "
298 R_CURLY@[712; 713) 298 R_CURLY@[712; 713) "}"
299 SEMI@[713; 714) 299 SEMI@[713; 714) ";"
300 WHITESPACE@[714; 719) 300 WHITESPACE@[714; 719) "\n "
301 R_CURLY@[719; 720) 301 R_CURLY@[719; 720) "}"
302 WHITESPACE@[720; 725) 302 WHITESPACE@[720; 725) "\n "
303 LET_STMT@[725; 751) 303 LET_STMT@[725; 751)
304 LET_KW@[725; 728) 304 LET_KW@[725; 728) "let"
305 WHITESPACE@[728; 729) 305 WHITESPACE@[728; 729) " "
306 BIND_PAT@[729; 730) 306 BIND_PAT@[729; 730)
307 NAME@[729; 730) 307 NAME@[729; 730)
308 IDENT@[729; 730) "i" 308 IDENT@[729; 730) "i"
309 WHITESPACE@[730; 731) 309 WHITESPACE@[730; 731) " "
310 EQ@[731; 732) 310 EQ@[731; 732) "="
311 WHITESPACE@[732; 733) 311 WHITESPACE@[732; 733) " "
312 REF_EXPR@[733; 750) 312 REF_EXPR@[733; 750)
313 AMP@[733; 734) 313 AMP@[733; 734) "&"
314 CALL_EXPR@[734; 750) 314 CALL_EXPR@[734; 750)
315 PATH_EXPR@[734; 743) 315 PATH_EXPR@[734; 743)
316 PATH@[734; 743) 316 PATH@[734; 743)
@@ -318,33 +318,33 @@ SOURCE_FILE@[0; 3813)
318 PATH_SEGMENT@[734; 738) 318 PATH_SEGMENT@[734; 738)
319 NAME_REF@[734; 738) 319 NAME_REF@[734; 738)
320 IDENT@[734; 738) "Cell" 320 IDENT@[734; 738) "Cell"
321 COLONCOLON@[738; 740) 321 COLONCOLON@[738; 740) "::"
322 PATH_SEGMENT@[740; 743) 322 PATH_SEGMENT@[740; 743)
323 NAME_REF@[740; 743) 323 NAME_REF@[740; 743)
324 IDENT@[740; 743) "new" 324 IDENT@[740; 743) "new"
325 ARG_LIST@[743; 750) 325 ARG_LIST@[743; 750)
326 L_PAREN@[743; 744) 326 L_PAREN@[743; 744) "("
327 LITERAL@[744; 749) 327 LITERAL@[744; 749)
328 FALSE_KW@[744; 749) 328 FALSE_KW@[744; 749) "false"
329 R_PAREN@[749; 750) 329 R_PAREN@[749; 750) ")"
330 SEMI@[750; 751) 330 SEMI@[750; 751) ";"
331 WHITESPACE@[751; 756) 331 WHITESPACE@[751; 756) "\n "
332 LET_STMT@[756; 778) 332 LET_STMT@[756; 778)
333 LET_KW@[756; 759) 333 LET_KW@[756; 759) "let"
334 WHITESPACE@[759; 760) 334 WHITESPACE@[759; 760) " "
335 BIND_PAT@[760; 764) 335 BIND_PAT@[760; 764)
336 NAME@[760; 764) 336 NAME@[760; 764)
337 IDENT@[760; 764) "dont" 337 IDENT@[760; 764) "dont"
338 WHITESPACE@[764; 765) 338 WHITESPACE@[764; 765) " "
339 EQ@[765; 766) 339 EQ@[765; 766) "="
340 WHITESPACE@[766; 767) 340 WHITESPACE@[766; 767) " "
341 BLOCK_EXPR@[767; 777) 341 BLOCK_EXPR@[767; 777)
342 BLOCK@[767; 777) 342 BLOCK@[767; 777)
343 L_CURLY@[767; 768) 343 L_CURLY@[767; 768) "{"
344 LAMBDA_EXPR@[768; 776) 344 LAMBDA_EXPR@[768; 776)
345 PARAM_LIST@[768; 770) 345 PARAM_LIST@[768; 770)
346 PIPE@[768; 769) 346 PIPE@[768; 769) "|"
347 PIPE@[769; 770) 347 PIPE@[769; 770) "|"
348 CALL_EXPR@[770; 776) 348 CALL_EXPR@[770; 776)
349 PATH_EXPR@[770; 773) 349 PATH_EXPR@[770; 773)
350 PATH@[770; 773) 350 PATH@[770; 773)
@@ -352,16 +352,16 @@ SOURCE_FILE@[0; 3813)
352 NAME_REF@[770; 773) 352 NAME_REF@[770; 773)
353 IDENT@[770; 773) "the" 353 IDENT@[770; 773) "the"
354 ARG_LIST@[773; 776) 354 ARG_LIST@[773; 776)
355 L_PAREN@[773; 774) 355 L_PAREN@[773; 774) "("
356 PATH_EXPR@[774; 775) 356 PATH_EXPR@[774; 775)
357 PATH@[774; 775) 357 PATH@[774; 775)
358 PATH_SEGMENT@[774; 775) 358 PATH_SEGMENT@[774; 775)
359 NAME_REF@[774; 775) 359 NAME_REF@[774; 775)
360 IDENT@[774; 775) "i" 360 IDENT@[774; 775) "i"
361 R_PAREN@[775; 776) 361 R_PAREN@[775; 776) ")"
362 R_CURLY@[776; 777) 362 R_CURLY@[776; 777) "}"
363 SEMI@[777; 778) 363 SEMI@[777; 778) ";"
364 WHITESPACE@[778; 783) 364 WHITESPACE@[778; 783) "\n "
365 EXPR_STMT@[783; 790) 365 EXPR_STMT@[783; 790)
366 CALL_EXPR@[783; 789) 366 CALL_EXPR@[783; 789)
367 PATH_EXPR@[783; 787) 367 PATH_EXPR@[783; 787)
@@ -370,371 +370,371 @@ SOURCE_FILE@[0; 3813)
370 NAME_REF@[783; 787) 370 NAME_REF@[783; 787)
371 IDENT@[783; 787) "dont" 371 IDENT@[783; 787) "dont"
372 ARG_LIST@[787; 789) 372 ARG_LIST@[787; 789)
373 L_PAREN@[787; 788) 373 L_PAREN@[787; 788) "("
374 R_PAREN@[788; 789) 374 R_PAREN@[788; 789) ")"
375 SEMI@[789; 790) 375 SEMI@[789; 790) ";"
376 WHITESPACE@[790; 795) 376 WHITESPACE@[790; 795) "\n "
377 EXPR_STMT@[795; 814) 377 EXPR_STMT@[795; 814)
378 MACRO_CALL@[795; 813) 378 MACRO_CALL@[795; 813)
379 PATH@[795; 801) 379 PATH@[795; 801)
380 PATH_SEGMENT@[795; 801) 380 PATH_SEGMENT@[795; 801)
381 NAME_REF@[795; 801) 381 NAME_REF@[795; 801)
382 IDENT@[795; 801) "assert" 382 IDENT@[795; 801) "assert"
383 EXCL@[801; 802) 383 EXCL@[801; 802) "!"
384 TOKEN_TREE@[802; 813) 384 TOKEN_TREE@[802; 813)
385 L_PAREN@[802; 803) 385 L_PAREN@[802; 803) "("
386 TOKEN_TREE@[803; 812) 386 TOKEN_TREE@[803; 812)
387 L_PAREN@[803; 804) 387 L_PAREN@[803; 804) "("
388 IDENT@[804; 805) "i" 388 IDENT@[804; 805) "i"
389 DOT@[805; 806) 389 DOT@[805; 806) "."
390 IDENT@[806; 809) "get" 390 IDENT@[806; 809) "get"
391 TOKEN_TREE@[809; 811) 391 TOKEN_TREE@[809; 811)
392 L_PAREN@[809; 810) 392 L_PAREN@[809; 810) "("
393 R_PAREN@[810; 811) 393 R_PAREN@[810; 811) ")"
394 R_PAREN@[811; 812) 394 R_PAREN@[811; 812) ")"
395 R_PAREN@[812; 813) 395 R_PAREN@[812; 813) ")"
396 SEMI@[813; 814) 396 SEMI@[813; 814) ";"
397 WHITESPACE@[814; 815) 397 WHITESPACE@[814; 815) "\n"
398 R_CURLY@[815; 816) 398 R_CURLY@[815; 816) "}"
399 WHITESPACE@[816; 818) 399 WHITESPACE@[816; 818) "\n\n"
400 FN_DEF@[818; 1322) 400 FN_DEF@[818; 1322)
401 FN_KW@[818; 820) 401 FN_KW@[818; 820) "fn"
402 WHITESPACE@[820; 821) 402 WHITESPACE@[820; 821) " "
403 NAME@[821; 832) 403 NAME@[821; 832)
404 IDENT@[821; 832) "zombiejesus" 404 IDENT@[821; 832) "zombiejesus"
405 PARAM_LIST@[832; 834) 405 PARAM_LIST@[832; 834)
406 L_PAREN@[832; 833) 406 L_PAREN@[832; 833) "("
407 R_PAREN@[833; 834) 407 R_PAREN@[833; 834) ")"
408 WHITESPACE@[834; 835) 408 WHITESPACE@[834; 835) " "
409 BLOCK@[835; 1322) 409 BLOCK@[835; 1322)
410 L_CURLY@[835; 836) 410 L_CURLY@[835; 836) "{"
411 WHITESPACE@[836; 841) 411 WHITESPACE@[836; 841) "\n "
412 LOOP_EXPR@[841; 1320) 412 LOOP_EXPR@[841; 1320)
413 LOOP_KW@[841; 845) 413 LOOP_KW@[841; 845) "loop"
414 WHITESPACE@[845; 846) 414 WHITESPACE@[845; 846) " "
415 BLOCK@[846; 1320) 415 BLOCK@[846; 1320)
416 L_CURLY@[846; 847) 416 L_CURLY@[846; 847) "{"
417 WHITESPACE@[847; 856) 417 WHITESPACE@[847; 856) "\n "
418 EXPR_STMT@[856; 1283) 418 EXPR_STMT@[856; 1283)
419 WHILE_EXPR@[856; 1283) 419 WHILE_EXPR@[856; 1283)
420 WHILE_KW@[856; 861) 420 WHILE_KW@[856; 861) "while"
421 WHITESPACE@[861; 862) 421 WHITESPACE@[861; 862) " "
422 CONDITION@[862; 870) 422 CONDITION@[862; 870)
423 PAREN_EXPR@[862; 870) 423 PAREN_EXPR@[862; 870)
424 L_PAREN@[862; 863) 424 L_PAREN@[862; 863) "("
425 RETURN_EXPR@[863; 869) 425 RETURN_EXPR@[863; 869)
426 RETURN_KW@[863; 869) 426 RETURN_KW@[863; 869) "return"
427 R_PAREN@[869; 870) 427 R_PAREN@[869; 870) ")"
428 WHITESPACE@[870; 871) 428 WHITESPACE@[870; 871) " "
429 BLOCK@[871; 1283) 429 BLOCK@[871; 1283)
430 L_CURLY@[871; 872) 430 L_CURLY@[871; 872) "{"
431 WHITESPACE@[872; 885) 431 WHITESPACE@[872; 885) "\n "
432 IF_EXPR@[885; 1273) 432 IF_EXPR@[885; 1273)
433 IF_KW@[885; 887) 433 IF_KW@[885; 887) "if"
434 WHITESPACE@[887; 888) 434 WHITESPACE@[887; 888) " "
435 CONDITION@[888; 896) 435 CONDITION@[888; 896)
436 PAREN_EXPR@[888; 896) 436 PAREN_EXPR@[888; 896)
437 L_PAREN@[888; 889) 437 L_PAREN@[888; 889) "("
438 RETURN_EXPR@[889; 895) 438 RETURN_EXPR@[889; 895)
439 RETURN_KW@[889; 895) 439 RETURN_KW@[889; 895) "return"
440 R_PAREN@[895; 896) 440 R_PAREN@[895; 896) ")"
441 WHITESPACE@[896; 897) 441 WHITESPACE@[896; 897) " "
442 BLOCK@[897; 1216) 442 BLOCK@[897; 1216)
443 L_CURLY@[897; 898) 443 L_CURLY@[897; 898) "{"
444 WHITESPACE@[898; 915) 444 WHITESPACE@[898; 915) "\n "
445 EXPR_STMT@[915; 1202) 445 EXPR_STMT@[915; 1202)
446 MATCH_EXPR@[915; 1201) 446 MATCH_EXPR@[915; 1201)
447 MATCH_KW@[915; 920) 447 MATCH_KW@[915; 920) "match"
448 WHITESPACE@[920; 921) 448 WHITESPACE@[920; 921) " "
449 PAREN_EXPR@[921; 929) 449 PAREN_EXPR@[921; 929)
450 L_PAREN@[921; 922) 450 L_PAREN@[921; 922) "("
451 RETURN_EXPR@[922; 928) 451 RETURN_EXPR@[922; 928)
452 RETURN_KW@[922; 928) 452 RETURN_KW@[922; 928) "return"
453 R_PAREN@[928; 929) 453 R_PAREN@[928; 929) ")"
454 WHITESPACE@[929; 930) 454 WHITESPACE@[929; 930) " "
455 MATCH_ARM_LIST@[930; 1201) 455 MATCH_ARM_LIST@[930; 1201)
456 L_CURLY@[930; 931) 456 L_CURLY@[930; 931) "{"
457 WHITESPACE@[931; 952) 457 WHITESPACE@[931; 952) "\n "
458 MATCH_ARM@[952; 1147) 458 MATCH_ARM@[952; 1147)
459 LITERAL_PAT@[952; 953) 459 LITERAL_PAT@[952; 953)
460 LITERAL@[952; 953) 460 LITERAL@[952; 953)
461 INT_NUMBER@[952; 953) "1" 461 INT_NUMBER@[952; 953) "1"
462 WHITESPACE@[953; 954) 462 WHITESPACE@[953; 954) " "
463 FAT_ARROW@[954; 956) 463 FAT_ARROW@[954; 956) "=>"
464 WHITESPACE@[956; 957) 464 WHITESPACE@[956; 957) " "
465 BLOCK_EXPR@[957; 1147) 465 BLOCK_EXPR@[957; 1147)
466 BLOCK@[957; 1147) 466 BLOCK@[957; 1147)
467 L_CURLY@[957; 958) 467 L_CURLY@[957; 958) "{"
468 WHITESPACE@[958; 983) 468 WHITESPACE@[958; 983) "\n ..."
469 IF_EXPR@[983; 1125) 469 IF_EXPR@[983; 1125)
470 IF_KW@[983; 985) 470 IF_KW@[983; 985) "if"
471 WHITESPACE@[985; 986) 471 WHITESPACE@[985; 986) " "
472 CONDITION@[986; 994) 472 CONDITION@[986; 994)
473 PAREN_EXPR@[986; 994) 473 PAREN_EXPR@[986; 994)
474 L_PAREN@[986; 987) 474 L_PAREN@[986; 987) "("
475 RETURN_EXPR@[987; 993) 475 RETURN_EXPR@[987; 993)
476 RETURN_KW@[987; 993) 476 RETURN_KW@[987; 993) "return"
477 R_PAREN@[993; 994) 477 R_PAREN@[993; 994) ")"
478 WHITESPACE@[994; 995) 478 WHITESPACE@[994; 995) " "
479 BLOCK@[995; 1057) 479 BLOCK@[995; 1057)
480 L_CURLY@[995; 996) 480 L_CURLY@[995; 996) "{"
481 WHITESPACE@[996; 1025) 481 WHITESPACE@[996; 1025) "\n ..."
482 RETURN_EXPR@[1025; 1031) 482 RETURN_EXPR@[1025; 1031)
483 RETURN_KW@[1025; 1031) 483 RETURN_KW@[1025; 1031) "return"
484 WHITESPACE@[1031; 1056) 484 WHITESPACE@[1031; 1056) "\n ..."
485 R_CURLY@[1056; 1057) 485 R_CURLY@[1056; 1057) "}"
486 WHITESPACE@[1057; 1058) 486 WHITESPACE@[1057; 1058) " "
487 ELSE_KW@[1058; 1062) 487 ELSE_KW@[1058; 1062) "else"
488 WHITESPACE@[1062; 1063) 488 WHITESPACE@[1062; 1063) " "
489 BLOCK@[1063; 1125) 489 BLOCK@[1063; 1125)
490 L_CURLY@[1063; 1064) 490 L_CURLY@[1063; 1064) "{"
491 WHITESPACE@[1064; 1093) 491 WHITESPACE@[1064; 1093) "\n ..."
492 RETURN_EXPR@[1093; 1099) 492 RETURN_EXPR@[1093; 1099)
493 RETURN_KW@[1093; 1099) 493 RETURN_KW@[1093; 1099) "return"
494 WHITESPACE@[1099; 1124) 494 WHITESPACE@[1099; 1124) "\n ..."
495 R_CURLY@[1124; 1125) 495 R_CURLY@[1124; 1125) "}"
496 WHITESPACE@[1125; 1146) 496 WHITESPACE@[1125; 1146) "\n "
497 R_CURLY@[1146; 1147) 497 R_CURLY@[1146; 1147) "}"
498 WHITESPACE@[1147; 1168) 498 WHITESPACE@[1147; 1168) "\n "
499 MATCH_ARM@[1168; 1183) 499 MATCH_ARM@[1168; 1183)
500 PLACEHOLDER_PAT@[1168; 1169) 500 PLACEHOLDER_PAT@[1168; 1169)
501 UNDERSCORE@[1168; 1169) 501 UNDERSCORE@[1168; 1169) "_"
502 WHITESPACE@[1169; 1170) 502 WHITESPACE@[1169; 1170) " "
503 FAT_ARROW@[1170; 1172) 503 FAT_ARROW@[1170; 1172) "=>"
504 WHITESPACE@[1172; 1173) 504 WHITESPACE@[1172; 1173) " "
505 BLOCK_EXPR@[1173; 1183) 505 BLOCK_EXPR@[1173; 1183)
506 BLOCK@[1173; 1183) 506 BLOCK@[1173; 1183)
507 L_CURLY@[1173; 1174) 507 L_CURLY@[1173; 1174) "{"
508 WHITESPACE@[1174; 1175) 508 WHITESPACE@[1174; 1175) " "
509 RETURN_EXPR@[1175; 1181) 509 RETURN_EXPR@[1175; 1181)
510 RETURN_KW@[1175; 1181) 510 RETURN_KW@[1175; 1181) "return"
511 WHITESPACE@[1181; 1182) 511 WHITESPACE@[1181; 1182) " "
512 R_CURLY@[1182; 1183) 512 R_CURLY@[1182; 1183) "}"
513 WHITESPACE@[1183; 1200) 513 WHITESPACE@[1183; 1200) "\n "
514 R_CURLY@[1200; 1201) 514 R_CURLY@[1200; 1201) "}"
515 SEMI@[1201; 1202) 515 SEMI@[1201; 1202) ";"
516 WHITESPACE@[1202; 1215) 516 WHITESPACE@[1202; 1215) "\n "
517 R_CURLY@[1215; 1216) 517 R_CURLY@[1215; 1216) "}"
518 WHITESPACE@[1216; 1217) 518 WHITESPACE@[1216; 1217) " "
519 ELSE_KW@[1217; 1221) 519 ELSE_KW@[1217; 1221) "else"
520 WHITESPACE@[1221; 1222) 520 WHITESPACE@[1221; 1222) " "
521 IF_EXPR@[1222; 1273) 521 IF_EXPR@[1222; 1273)
522 IF_KW@[1222; 1224) 522 IF_KW@[1222; 1224) "if"
523 WHITESPACE@[1224; 1225) 523 WHITESPACE@[1224; 1225) " "
524 CONDITION@[1225; 1233) 524 CONDITION@[1225; 1233)
525 PAREN_EXPR@[1225; 1233) 525 PAREN_EXPR@[1225; 1233)
526 L_PAREN@[1225; 1226) 526 L_PAREN@[1225; 1226) "("
527 RETURN_EXPR@[1226; 1232) 527 RETURN_EXPR@[1226; 1232)
528 RETURN_KW@[1226; 1232) 528 RETURN_KW@[1226; 1232) "return"
529 R_PAREN@[1232; 1233) 529 R_PAREN@[1232; 1233) ")"
530 WHITESPACE@[1233; 1234) 530 WHITESPACE@[1233; 1234) " "
531 BLOCK@[1234; 1273) 531 BLOCK@[1234; 1273)
532 L_CURLY@[1234; 1235) 532 L_CURLY@[1234; 1235) "{"
533 WHITESPACE@[1235; 1252) 533 WHITESPACE@[1235; 1252) "\n "
534 EXPR_STMT@[1252; 1259) 534 EXPR_STMT@[1252; 1259)
535 RETURN_EXPR@[1252; 1258) 535 RETURN_EXPR@[1252; 1258)
536 RETURN_KW@[1252; 1258) 536 RETURN_KW@[1252; 1258) "return"
537 SEMI@[1258; 1259) 537 SEMI@[1258; 1259) ";"
538 WHITESPACE@[1259; 1272) 538 WHITESPACE@[1259; 1272) "\n "
539 R_CURLY@[1272; 1273) 539 R_CURLY@[1272; 1273) "}"
540 WHITESPACE@[1273; 1282) 540 WHITESPACE@[1273; 1282) "\n "
541 R_CURLY@[1282; 1283) 541 R_CURLY@[1282; 1283) "}"
542 WHITESPACE@[1283; 1292) 542 WHITESPACE@[1283; 1292) "\n "
543 IF_EXPR@[1292; 1314) 543 IF_EXPR@[1292; 1314)
544 IF_KW@[1292; 1294) 544 IF_KW@[1292; 1294) "if"
545 WHITESPACE@[1294; 1295) 545 WHITESPACE@[1294; 1295) " "
546 CONDITION@[1295; 1303) 546 CONDITION@[1295; 1303)
547 PAREN_EXPR@[1295; 1303) 547 PAREN_EXPR@[1295; 1303)
548 L_PAREN@[1295; 1296) 548 L_PAREN@[1295; 1296) "("
549 RETURN_EXPR@[1296; 1302) 549 RETURN_EXPR@[1296; 1302)
550 RETURN_KW@[1296; 1302) 550 RETURN_KW@[1296; 1302) "return"
551 R_PAREN@[1302; 1303) 551 R_PAREN@[1302; 1303) ")"
552 WHITESPACE@[1303; 1304) 552 WHITESPACE@[1303; 1304) " "
553 BLOCK@[1304; 1314) 553 BLOCK@[1304; 1314)
554 L_CURLY@[1304; 1305) 554 L_CURLY@[1304; 1305) "{"
555 WHITESPACE@[1305; 1306) 555 WHITESPACE@[1305; 1306) " "
556 EXPR_STMT@[1306; 1312) 556 EXPR_STMT@[1306; 1312)
557 BREAK_EXPR@[1306; 1311) 557 BREAK_EXPR@[1306; 1311)
558 BREAK_KW@[1306; 1311) 558 BREAK_KW@[1306; 1311) "break"
559 SEMI@[1311; 1312) 559 SEMI@[1311; 1312) ";"
560 WHITESPACE@[1312; 1313) 560 WHITESPACE@[1312; 1313) " "
561 R_CURLY@[1313; 1314) 561 R_CURLY@[1313; 1314) "}"
562 WHITESPACE@[1314; 1319) 562 WHITESPACE@[1314; 1319) "\n "
563 R_CURLY@[1319; 1320) 563 R_CURLY@[1319; 1320) "}"
564 WHITESPACE@[1320; 1321) 564 WHITESPACE@[1320; 1321) "\n"
565 R_CURLY@[1321; 1322) 565 R_CURLY@[1321; 1322) "}"
566 WHITESPACE@[1322; 1324) 566 WHITESPACE@[1322; 1324) "\n\n"
567 FN_DEF@[1324; 1539) 567 FN_DEF@[1324; 1539)
568 FN_KW@[1324; 1326) 568 FN_KW@[1324; 1326) "fn"
569 WHITESPACE@[1326; 1327) 569 WHITESPACE@[1326; 1327) " "
570 NAME@[1327; 1334) 570 NAME@[1327; 1334)
571 IDENT@[1327; 1334) "notsure" 571 IDENT@[1327; 1334) "notsure"
572 PARAM_LIST@[1334; 1336) 572 PARAM_LIST@[1334; 1336)
573 L_PAREN@[1334; 1335) 573 L_PAREN@[1334; 1335) "("
574 R_PAREN@[1335; 1336) 574 R_PAREN@[1335; 1336) ")"
575 WHITESPACE@[1336; 1337) 575 WHITESPACE@[1336; 1337) " "
576 BLOCK@[1337; 1539) 576 BLOCK@[1337; 1539)
577 L_CURLY@[1337; 1338) 577 L_CURLY@[1337; 1338) "{"
578 WHITESPACE@[1338; 1343) 578 WHITESPACE@[1338; 1343) "\n "
579 LET_STMT@[1343; 1361) 579 LET_STMT@[1343; 1361)
580 LET_KW@[1343; 1346) 580 LET_KW@[1343; 1346) "let"
581 WHITESPACE@[1346; 1347) 581 WHITESPACE@[1346; 1347) " "
582 BIND_PAT@[1347; 1353) 582 BIND_PAT@[1347; 1353)
583 MUT_KW@[1347; 1350) 583 MUT_KW@[1347; 1350) "mut"
584 WHITESPACE@[1350; 1351) 584 WHITESPACE@[1350; 1351) " "
585 NAME@[1351; 1353) 585 NAME@[1351; 1353)
586 IDENT@[1351; 1353) "_x" 586 IDENT@[1351; 1353) "_x"
587 COLON@[1353; 1354) 587 COLON@[1353; 1354) ":"
588 WHITESPACE@[1354; 1355) 588 WHITESPACE@[1354; 1355) " "
589 PATH_TYPE@[1355; 1360) 589 PATH_TYPE@[1355; 1360)
590 PATH@[1355; 1360) 590 PATH@[1355; 1360)
591 PATH_SEGMENT@[1355; 1360) 591 PATH_SEGMENT@[1355; 1360)
592 NAME_REF@[1355; 1360) 592 NAME_REF@[1355; 1360)
593 IDENT@[1355; 1360) "isize" 593 IDENT@[1355; 1360) "isize"
594 SEMI@[1360; 1361) 594 SEMI@[1360; 1361) ";"
595 WHITESPACE@[1361; 1366) 595 WHITESPACE@[1361; 1366) "\n "
596 LET_STMT@[1366; 1400) 596 LET_STMT@[1366; 1400)
597 LET_KW@[1366; 1369) 597 LET_KW@[1366; 1369) "let"
598 WHITESPACE@[1369; 1370) 598 WHITESPACE@[1369; 1370) " "
599 BIND_PAT@[1370; 1376) 599 BIND_PAT@[1370; 1376)
600 MUT_KW@[1370; 1373) 600 MUT_KW@[1370; 1373) "mut"
601 WHITESPACE@[1373; 1374) 601 WHITESPACE@[1373; 1374) " "
602 NAME@[1374; 1376) 602 NAME@[1374; 1376)
603 IDENT@[1374; 1376) "_y" 603 IDENT@[1374; 1376) "_y"
604 WHITESPACE@[1376; 1377) 604 WHITESPACE@[1376; 1377) " "
605 EQ@[1377; 1378) 605 EQ@[1377; 1378) "="
606 WHITESPACE@[1378; 1379) 606 WHITESPACE@[1378; 1379) " "
607 BIN_EXPR@[1379; 1399) 607 BIN_EXPR@[1379; 1399)
608 PAREN_EXPR@[1379; 1387) 608 PAREN_EXPR@[1379; 1387)
609 L_PAREN@[1379; 1380) 609 L_PAREN@[1379; 1380) "("
610 BIN_EXPR@[1380; 1386) 610 BIN_EXPR@[1380; 1386)
611 PATH_EXPR@[1380; 1382) 611 PATH_EXPR@[1380; 1382)
612 PATH@[1380; 1382) 612 PATH@[1380; 1382)
613 PATH_SEGMENT@[1380; 1382) 613 PATH_SEGMENT@[1380; 1382)
614 NAME_REF@[1380; 1382) 614 NAME_REF@[1380; 1382)
615 IDENT@[1380; 1382) "_x" 615 IDENT@[1380; 1382) "_x"
616 WHITESPACE@[1382; 1383) 616 WHITESPACE@[1382; 1383) " "
617 EQ@[1383; 1384) 617 EQ@[1383; 1384) "="
618 WHITESPACE@[1384; 1385) 618 WHITESPACE@[1384; 1385) " "
619 LITERAL@[1385; 1386) 619 LITERAL@[1385; 1386)
620 INT_NUMBER@[1385; 1386) "0" 620 INT_NUMBER@[1385; 1386) "0"
621 R_PAREN@[1386; 1387) 621 R_PAREN@[1386; 1387) ")"
622 WHITESPACE@[1387; 1388) 622 WHITESPACE@[1387; 1388) " "
623 EQEQ@[1388; 1390) 623 EQEQ@[1388; 1390) "=="
624 WHITESPACE@[1390; 1391) 624 WHITESPACE@[1390; 1391) " "
625 PAREN_EXPR@[1391; 1399) 625 PAREN_EXPR@[1391; 1399)
626 L_PAREN@[1391; 1392) 626 L_PAREN@[1391; 1392) "("
627 BIN_EXPR@[1392; 1398) 627 BIN_EXPR@[1392; 1398)
628 PATH_EXPR@[1392; 1394) 628 PATH_EXPR@[1392; 1394)
629 PATH@[1392; 1394) 629 PATH@[1392; 1394)
630 PATH_SEGMENT@[1392; 1394) 630 PATH_SEGMENT@[1392; 1394)
631 NAME_REF@[1392; 1394) 631 NAME_REF@[1392; 1394)
632 IDENT@[1392; 1394) "_x" 632 IDENT@[1392; 1394) "_x"
633 WHITESPACE@[1394; 1395) 633 WHITESPACE@[1394; 1395) " "
634 EQ@[1395; 1396) 634 EQ@[1395; 1396) "="
635 WHITESPACE@[1396; 1397) 635 WHITESPACE@[1396; 1397) " "
636 LITERAL@[1397; 1398) 636 LITERAL@[1397; 1398)
637 INT_NUMBER@[1397; 1398) "0" 637 INT_NUMBER@[1397; 1398) "0"
638 R_PAREN@[1398; 1399) 638 R_PAREN@[1398; 1399) ")"
639 SEMI@[1399; 1400) 639 SEMI@[1399; 1400) ";"
640 WHITESPACE@[1400; 1405) 640 WHITESPACE@[1400; 1405) "\n "
641 LET_STMT@[1405; 1438) 641 LET_STMT@[1405; 1438)
642 LET_KW@[1405; 1408) 642 LET_KW@[1405; 1408) "let"
643 WHITESPACE@[1408; 1409) 643 WHITESPACE@[1408; 1409) " "
644 BIND_PAT@[1409; 1415) 644 BIND_PAT@[1409; 1415)
645 MUT_KW@[1409; 1412) 645 MUT_KW@[1409; 1412) "mut"
646 WHITESPACE@[1412; 1413) 646 WHITESPACE@[1412; 1413) " "
647 NAME@[1413; 1415) 647 NAME@[1413; 1415)
648 IDENT@[1413; 1415) "_z" 648 IDENT@[1413; 1415) "_z"
649 WHITESPACE@[1415; 1416) 649 WHITESPACE@[1415; 1416) " "
650 EQ@[1416; 1417) 650 EQ@[1416; 1417) "="
651 WHITESPACE@[1417; 1418) 651 WHITESPACE@[1417; 1418) " "
652 BIN_EXPR@[1418; 1437) 652 BIN_EXPR@[1418; 1437)
653 PAREN_EXPR@[1418; 1426) 653 PAREN_EXPR@[1418; 1426)
654 L_PAREN@[1418; 1419) 654 L_PAREN@[1418; 1419) "("
655 BIN_EXPR@[1419; 1425) 655 BIN_EXPR@[1419; 1425)
656 PATH_EXPR@[1419; 1421) 656 PATH_EXPR@[1419; 1421)
657 PATH@[1419; 1421) 657 PATH@[1419; 1421)
658 PATH_SEGMENT@[1419; 1421) 658 PATH_SEGMENT@[1419; 1421)
659 NAME_REF@[1419; 1421) 659 NAME_REF@[1419; 1421)
660 IDENT@[1419; 1421) "_x" 660 IDENT@[1419; 1421) "_x"
661 WHITESPACE@[1421; 1422) 661 WHITESPACE@[1421; 1422) " "
662 EQ@[1422; 1423) 662 EQ@[1422; 1423) "="
663 WHITESPACE@[1423; 1424) 663 WHITESPACE@[1423; 1424) " "
664 LITERAL@[1424; 1425) 664 LITERAL@[1424; 1425)
665 INT_NUMBER@[1424; 1425) "0" 665 INT_NUMBER@[1424; 1425) "0"
666 R_PAREN@[1425; 1426) 666 R_PAREN@[1425; 1426) ")"
667 WHITESPACE@[1426; 1427) 667 WHITESPACE@[1426; 1427) " "
668 L_ANGLE@[1427; 1428) 668 L_ANGLE@[1427; 1428) "<"
669 WHITESPACE@[1428; 1429) 669 WHITESPACE@[1428; 1429) " "
670 PAREN_EXPR@[1429; 1437) 670 PAREN_EXPR@[1429; 1437)
671 L_PAREN@[1429; 1430) 671 L_PAREN@[1429; 1430) "("
672 BIN_EXPR@[1430; 1436) 672 BIN_EXPR@[1430; 1436)
673 PATH_EXPR@[1430; 1432) 673 PATH_EXPR@[1430; 1432)
674 PATH@[1430; 1432) 674 PATH@[1430; 1432)
675 PATH_SEGMENT@[1430; 1432) 675 PATH_SEGMENT@[1430; 1432)
676 NAME_REF@[1430; 1432) 676 NAME_REF@[1430; 1432)
677 IDENT@[1430; 1432) "_x" 677 IDENT@[1430; 1432) "_x"
678 WHITESPACE@[1432; 1433) 678 WHITESPACE@[1432; 1433) " "
679 EQ@[1433; 1434) 679 EQ@[1433; 1434) "="
680 WHITESPACE@[1434; 1435) 680 WHITESPACE@[1434; 1435) " "
681 LITERAL@[1435; 1436) 681 LITERAL@[1435; 1436)
682 INT_NUMBER@[1435; 1436) "0" 682 INT_NUMBER@[1435; 1436) "0"
683 R_PAREN@[1436; 1437) 683 R_PAREN@[1436; 1437) ")"
684 SEMI@[1437; 1438) 684 SEMI@[1437; 1438) ";"
685 WHITESPACE@[1438; 1443) 685 WHITESPACE@[1438; 1443) "\n "
686 LET_STMT@[1443; 1474) 686 LET_STMT@[1443; 1474)
687 LET_KW@[1443; 1446) 687 LET_KW@[1443; 1446) "let"
688 WHITESPACE@[1446; 1447) 688 WHITESPACE@[1446; 1447) " "
689 BIND_PAT@[1447; 1449) 689 BIND_PAT@[1447; 1449)
690 NAME@[1447; 1449) 690 NAME@[1447; 1449)
691 IDENT@[1447; 1449) "_a" 691 IDENT@[1447; 1449) "_a"
692 WHITESPACE@[1449; 1450) 692 WHITESPACE@[1449; 1450) " "
693 EQ@[1450; 1451) 693 EQ@[1450; 1451) "="
694 WHITESPACE@[1451; 1452) 694 WHITESPACE@[1451; 1452) " "
695 BIN_EXPR@[1452; 1473) 695 BIN_EXPR@[1452; 1473)
696 PAREN_EXPR@[1452; 1461) 696 PAREN_EXPR@[1452; 1461)
697 L_PAREN@[1452; 1453) 697 L_PAREN@[1452; 1453) "("
698 BIN_EXPR@[1453; 1460) 698 BIN_EXPR@[1453; 1460)
699 PATH_EXPR@[1453; 1455) 699 PATH_EXPR@[1453; 1455)
700 PATH@[1453; 1455) 700 PATH@[1453; 1455)
701 PATH_SEGMENT@[1453; 1455) 701 PATH_SEGMENT@[1453; 1455)
702 NAME_REF@[1453; 1455) 702 NAME_REF@[1453; 1455)
703 IDENT@[1453; 1455) "_x" 703 IDENT@[1453; 1455) "_x"
704 WHITESPACE@[1455; 1456) 704 WHITESPACE@[1455; 1456) " "
705 PLUSEQ@[1456; 1458) 705 PLUSEQ@[1456; 1458) "+="
706 WHITESPACE@[1458; 1459) 706 WHITESPACE@[1458; 1459) " "
707 LITERAL@[1459; 1460) 707 LITERAL@[1459; 1460)
708 INT_NUMBER@[1459; 1460) "0" 708 INT_NUMBER@[1459; 1460) "0"
709 R_PAREN@[1460; 1461) 709 R_PAREN@[1460; 1461) ")"
710 WHITESPACE@[1461; 1462) 710 WHITESPACE@[1461; 1462) " "
711 EQEQ@[1462; 1464) 711 EQEQ@[1462; 1464) "=="
712 WHITESPACE@[1464; 1465) 712 WHITESPACE@[1464; 1465) " "
713 PAREN_EXPR@[1465; 1473) 713 PAREN_EXPR@[1465; 1473)
714 L_PAREN@[1465; 1466) 714 L_PAREN@[1465; 1466) "("
715 BIN_EXPR@[1466; 1472) 715 BIN_EXPR@[1466; 1472)
716 PATH_EXPR@[1466; 1468) 716 PATH_EXPR@[1466; 1468)
717 PATH@[1466; 1468) 717 PATH@[1466; 1468)
718 PATH_SEGMENT@[1466; 1468) 718 PATH_SEGMENT@[1466; 1468)
719 NAME_REF@[1466; 1468) 719 NAME_REF@[1466; 1468)
720 IDENT@[1466; 1468) "_x" 720 IDENT@[1466; 1468) "_x"
721 WHITESPACE@[1468; 1469) 721 WHITESPACE@[1468; 1469) " "
722 EQ@[1469; 1470) 722 EQ@[1469; 1470) "="
723 WHITESPACE@[1470; 1471) 723 WHITESPACE@[1470; 1471) " "
724 LITERAL@[1471; 1472) 724 LITERAL@[1471; 1472)
725 INT_NUMBER@[1471; 1472) "0" 725 INT_NUMBER@[1471; 1472) "0"
726 R_PAREN@[1472; 1473) 726 R_PAREN@[1472; 1473) ")"
727 SEMI@[1473; 1474) 727 SEMI@[1473; 1474) ";"
728 WHITESPACE@[1474; 1479) 728 WHITESPACE@[1474; 1479) "\n "
729 LET_STMT@[1479; 1537) 729 LET_STMT@[1479; 1537)
730 LET_KW@[1479; 1482) 730 LET_KW@[1479; 1482) "let"
731 WHITESPACE@[1482; 1483) 731 WHITESPACE@[1482; 1483) " "
732 BIND_PAT@[1483; 1485) 732 BIND_PAT@[1483; 1485)
733 NAME@[1483; 1485) 733 NAME@[1483; 1485)
734 IDENT@[1483; 1485) "_b" 734 IDENT@[1483; 1485) "_b"
735 WHITESPACE@[1485; 1486) 735 WHITESPACE@[1485; 1486) " "
736 EQ@[1486; 1487) 736 EQ@[1486; 1487) "="
737 WHITESPACE@[1487; 1488) 737 WHITESPACE@[1487; 1488) " "
738 BIN_EXPR@[1488; 1536) 738 BIN_EXPR@[1488; 1536)
739 CALL_EXPR@[1488; 1510) 739 CALL_EXPR@[1488; 1510)
740 PATH_EXPR@[1488; 1492) 740 PATH_EXPR@[1488; 1492)
@@ -743,31 +743,31 @@ SOURCE_FILE@[0; 3813)
743 NAME_REF@[1488; 1492) 743 NAME_REF@[1488; 1492)
744 IDENT@[1488; 1492) "swap" 744 IDENT@[1488; 1492) "swap"
745 ARG_LIST@[1492; 1510) 745 ARG_LIST@[1492; 1510)
746 L_PAREN@[1492; 1493) 746 L_PAREN@[1492; 1493) "("
747 REF_EXPR@[1493; 1500) 747 REF_EXPR@[1493; 1500)
748 AMP@[1493; 1494) 748 AMP@[1493; 1494) "&"
749 MUT_KW@[1494; 1497) 749 MUT_KW@[1494; 1497) "mut"
750 WHITESPACE@[1497; 1498) 750 WHITESPACE@[1497; 1498) " "
751 PATH_EXPR@[1498; 1500) 751 PATH_EXPR@[1498; 1500)
752 PATH@[1498; 1500) 752 PATH@[1498; 1500)
753 PATH_SEGMENT@[1498; 1500) 753 PATH_SEGMENT@[1498; 1500)
754 NAME_REF@[1498; 1500) 754 NAME_REF@[1498; 1500)
755 IDENT@[1498; 1500) "_y" 755 IDENT@[1498; 1500) "_y"
756 COMMA@[1500; 1501) 756 COMMA@[1500; 1501) ","
757 WHITESPACE@[1501; 1502) 757 WHITESPACE@[1501; 1502) " "
758 REF_EXPR@[1502; 1509) 758 REF_EXPR@[1502; 1509)
759 AMP@[1502; 1503) 759 AMP@[1502; 1503) "&"
760 MUT_KW@[1503; 1506) 760 MUT_KW@[1503; 1506) "mut"
761 WHITESPACE@[1506; 1507) 761 WHITESPACE@[1506; 1507) " "
762 PATH_EXPR@[1507; 1509) 762 PATH_EXPR@[1507; 1509)
763 PATH@[1507; 1509) 763 PATH@[1507; 1509)
764 PATH_SEGMENT@[1507; 1509) 764 PATH_SEGMENT@[1507; 1509)
765 NAME_REF@[1507; 1509) 765 NAME_REF@[1507; 1509)
766 IDENT@[1507; 1509) "_z" 766 IDENT@[1507; 1509) "_z"
767 R_PAREN@[1509; 1510) 767 R_PAREN@[1509; 1510) ")"
768 WHITESPACE@[1510; 1511) 768 WHITESPACE@[1510; 1511) " "
769 EQEQ@[1511; 1513) 769 EQEQ@[1511; 1513) "=="
770 WHITESPACE@[1513; 1514) 770 WHITESPACE@[1513; 1514) " "
771 CALL_EXPR@[1514; 1536) 771 CALL_EXPR@[1514; 1536)
772 PATH_EXPR@[1514; 1518) 772 PATH_EXPR@[1514; 1518)
773 PATH@[1514; 1518) 773 PATH@[1514; 1518)
@@ -775,265 +775,265 @@ SOURCE_FILE@[0; 3813)
775 NAME_REF@[1514; 1518) 775 NAME_REF@[1514; 1518)
776 IDENT@[1514; 1518) "swap" 776 IDENT@[1514; 1518) "swap"
777 ARG_LIST@[1518; 1536) 777 ARG_LIST@[1518; 1536)
778 L_PAREN@[1518; 1519) 778 L_PAREN@[1518; 1519) "("
779 REF_EXPR@[1519; 1526) 779 REF_EXPR@[1519; 1526)
780 AMP@[1519; 1520) 780 AMP@[1519; 1520) "&"
781 MUT_KW@[1520; 1523) 781 MUT_KW@[1520; 1523) "mut"
782 WHITESPACE@[1523; 1524) 782 WHITESPACE@[1523; 1524) " "
783 PATH_EXPR@[1524; 1526) 783 PATH_EXPR@[1524; 1526)
784 PATH@[1524; 1526) 784 PATH@[1524; 1526)
785 PATH_SEGMENT@[1524; 1526) 785 PATH_SEGMENT@[1524; 1526)
786 NAME_REF@[1524; 1526) 786 NAME_REF@[1524; 1526)
787 IDENT@[1524; 1526) "_y" 787 IDENT@[1524; 1526) "_y"
788 COMMA@[1526; 1527) 788 COMMA@[1526; 1527) ","
789 WHITESPACE@[1527; 1528) 789 WHITESPACE@[1527; 1528) " "
790 REF_EXPR@[1528; 1535) 790 REF_EXPR@[1528; 1535)
791 AMP@[1528; 1529) 791 AMP@[1528; 1529) "&"
792 MUT_KW@[1529; 1532) 792 MUT_KW@[1529; 1532) "mut"
793 WHITESPACE@[1532; 1533) 793 WHITESPACE@[1532; 1533) " "
794 PATH_EXPR@[1533; 1535) 794 PATH_EXPR@[1533; 1535)
795 PATH@[1533; 1535) 795 PATH@[1533; 1535)
796 PATH_SEGMENT@[1533; 1535) 796 PATH_SEGMENT@[1533; 1535)
797 NAME_REF@[1533; 1535) 797 NAME_REF@[1533; 1535)
798 IDENT@[1533; 1535) "_z" 798 IDENT@[1533; 1535) "_z"
799 R_PAREN@[1535; 1536) 799 R_PAREN@[1535; 1536) ")"
800 SEMI@[1536; 1537) 800 SEMI@[1536; 1537) ";"
801 WHITESPACE@[1537; 1538) 801 WHITESPACE@[1537; 1538) "\n"
802 R_CURLY@[1538; 1539) 802 R_CURLY@[1538; 1539) "}"
803 WHITESPACE@[1539; 1541) 803 WHITESPACE@[1539; 1541) "\n\n"
804 FN_DEF@[1541; 1741) 804 FN_DEF@[1541; 1741)
805 FN_KW@[1541; 1543) 805 FN_KW@[1541; 1543) "fn"
806 WHITESPACE@[1543; 1544) 806 WHITESPACE@[1543; 1544) " "
807 NAME@[1544; 1557) 807 NAME@[1544; 1557)
808 IDENT@[1544; 1557) "canttouchthis" 808 IDENT@[1544; 1557) "canttouchthis"
809 PARAM_LIST@[1557; 1559) 809 PARAM_LIST@[1557; 1559)
810 L_PAREN@[1557; 1558) 810 L_PAREN@[1557; 1558) "("
811 R_PAREN@[1558; 1559) 811 R_PAREN@[1558; 1559) ")"
812 WHITESPACE@[1559; 1560) 812 WHITESPACE@[1559; 1560) " "
813 RET_TYPE@[1560; 1568) 813 RET_TYPE@[1560; 1568)
814 THIN_ARROW@[1560; 1562) 814 THIN_ARROW@[1560; 1562) "->"
815 WHITESPACE@[1562; 1563) 815 WHITESPACE@[1562; 1563) " "
816 PATH_TYPE@[1563; 1568) 816 PATH_TYPE@[1563; 1568)
817 PATH@[1563; 1568) 817 PATH@[1563; 1568)
818 PATH_SEGMENT@[1563; 1568) 818 PATH_SEGMENT@[1563; 1568)
819 NAME_REF@[1563; 1568) 819 NAME_REF@[1563; 1568)
820 IDENT@[1563; 1568) "usize" 820 IDENT@[1563; 1568) "usize"
821 WHITESPACE@[1568; 1569) 821 WHITESPACE@[1568; 1569) " "
822 BLOCK@[1569; 1741) 822 BLOCK@[1569; 1741)
823 L_CURLY@[1569; 1570) 823 L_CURLY@[1569; 1570) "{"
824 WHITESPACE@[1570; 1575) 824 WHITESPACE@[1570; 1575) "\n "
825 FN_DEF@[1575; 1598) 825 FN_DEF@[1575; 1598)
826 FN_KW@[1575; 1577) 826 FN_KW@[1575; 1577) "fn"
827 WHITESPACE@[1577; 1578) 827 WHITESPACE@[1577; 1578) " "
828 NAME@[1578; 1579) 828 NAME@[1578; 1579)
829 IDENT@[1578; 1579) "p" 829 IDENT@[1578; 1579) "p"
830 PARAM_LIST@[1579; 1581) 830 PARAM_LIST@[1579; 1581)
831 L_PAREN@[1579; 1580) 831 L_PAREN@[1579; 1580) "("
832 R_PAREN@[1580; 1581) 832 R_PAREN@[1580; 1581) ")"
833 WHITESPACE@[1581; 1582) 833 WHITESPACE@[1581; 1582) " "
834 RET_TYPE@[1582; 1589) 834 RET_TYPE@[1582; 1589)
835 THIN_ARROW@[1582; 1584) 835 THIN_ARROW@[1582; 1584) "->"
836 WHITESPACE@[1584; 1585) 836 WHITESPACE@[1584; 1585) " "
837 PATH_TYPE@[1585; 1589) 837 PATH_TYPE@[1585; 1589)
838 PATH@[1585; 1589) 838 PATH@[1585; 1589)
839 PATH_SEGMENT@[1585; 1589) 839 PATH_SEGMENT@[1585; 1589)
840 NAME_REF@[1585; 1589) 840 NAME_REF@[1585; 1589)
841 IDENT@[1585; 1589) "bool" 841 IDENT@[1585; 1589) "bool"
842 WHITESPACE@[1589; 1590) 842 WHITESPACE@[1589; 1590) " "
843 BLOCK@[1590; 1598) 843 BLOCK@[1590; 1598)
844 L_CURLY@[1590; 1591) 844 L_CURLY@[1590; 1591) "{"
845 WHITESPACE@[1591; 1592) 845 WHITESPACE@[1591; 1592) " "
846 LITERAL@[1592; 1596) 846 LITERAL@[1592; 1596)
847 TRUE_KW@[1592; 1596) 847 TRUE_KW@[1592; 1596) "true"
848 WHITESPACE@[1596; 1597) 848 WHITESPACE@[1596; 1597) " "
849 R_CURLY@[1597; 1598) 849 R_CURLY@[1597; 1598) "}"
850 WHITESPACE@[1598; 1603) 850 WHITESPACE@[1598; 1603) "\n "
851 LET_STMT@[1603; 1648) 851 LET_STMT@[1603; 1648)
852 LET_KW@[1603; 1606) 852 LET_KW@[1603; 1606) "let"
853 WHITESPACE@[1606; 1607) 853 WHITESPACE@[1606; 1607) " "
854 BIND_PAT@[1607; 1609) 854 BIND_PAT@[1607; 1609)
855 NAME@[1607; 1609) 855 NAME@[1607; 1609)
856 IDENT@[1607; 1609) "_a" 856 IDENT@[1607; 1609) "_a"
857 WHITESPACE@[1609; 1610) 857 WHITESPACE@[1609; 1610) " "
858 EQ@[1610; 1611) 858 EQ@[1610; 1611) "="
859 WHITESPACE@[1611; 1612) 859 WHITESPACE@[1611; 1612) " "
860 PAREN_EXPR@[1612; 1647) 860 PAREN_EXPR@[1612; 1647)
861 L_PAREN@[1612; 1613) 861 L_PAREN@[1612; 1613) "("
862 BIN_EXPR@[1613; 1646) 862 BIN_EXPR@[1613; 1646)
863 MACRO_CALL@[1613; 1628) 863 MACRO_CALL@[1613; 1628)
864 PATH@[1613; 1619) 864 PATH@[1613; 1619)
865 PATH_SEGMENT@[1613; 1619) 865 PATH_SEGMENT@[1613; 1619)
866 NAME_REF@[1613; 1619) 866 NAME_REF@[1613; 1619)
867 IDENT@[1613; 1619) "assert" 867 IDENT@[1613; 1619) "assert"
868 EXCL@[1619; 1620) 868 EXCL@[1619; 1620) "!"
869 TOKEN_TREE@[1620; 1628) 869 TOKEN_TREE@[1620; 1628)
870 L_PAREN@[1620; 1621) 870 L_PAREN@[1620; 1621) "("
871 TOKEN_TREE@[1621; 1627) 871 TOKEN_TREE@[1621; 1627)
872 L_PAREN@[1621; 1622) 872 L_PAREN@[1621; 1622) "("
873 TRUE_KW@[1622; 1626) 873 TRUE_KW@[1622; 1626) "true"
874 R_PAREN@[1626; 1627) 874 R_PAREN@[1626; 1627) ")"
875 R_PAREN@[1627; 1628) 875 R_PAREN@[1627; 1628) ")"
876 WHITESPACE@[1628; 1629) 876 WHITESPACE@[1628; 1629) " "
877 EQEQ@[1629; 1631) 877 EQEQ@[1629; 1631) "=="
878 WHITESPACE@[1631; 1632) 878 WHITESPACE@[1631; 1632) " "
879 PAREN_EXPR@[1632; 1646) 879 PAREN_EXPR@[1632; 1646)
880 L_PAREN@[1632; 1633) 880 L_PAREN@[1632; 1633) "("
881 MACRO_CALL@[1633; 1645) 881 MACRO_CALL@[1633; 1645)
882 PATH@[1633; 1639) 882 PATH@[1633; 1639)
883 PATH_SEGMENT@[1633; 1639) 883 PATH_SEGMENT@[1633; 1639)
884 NAME_REF@[1633; 1639) 884 NAME_REF@[1633; 1639)
885 IDENT@[1633; 1639) "assert" 885 IDENT@[1633; 1639) "assert"
886 EXCL@[1639; 1640) 886 EXCL@[1639; 1640) "!"
887 TOKEN_TREE@[1640; 1645) 887 TOKEN_TREE@[1640; 1645)
888 L_PAREN@[1640; 1641) 888 L_PAREN@[1640; 1641) "("
889 IDENT@[1641; 1642) "p" 889 IDENT@[1641; 1642) "p"
890 TOKEN_TREE@[1642; 1644) 890 TOKEN_TREE@[1642; 1644)
891 L_PAREN@[1642; 1643) 891 L_PAREN@[1642; 1643) "("
892 R_PAREN@[1643; 1644) 892 R_PAREN@[1643; 1644) ")"
893 R_PAREN@[1644; 1645) 893 R_PAREN@[1644; 1645) ")"
894 R_PAREN@[1645; 1646) 894 R_PAREN@[1645; 1646) ")"
895 R_PAREN@[1646; 1647) 895 R_PAREN@[1646; 1647) ")"
896 SEMI@[1647; 1648) 896 SEMI@[1647; 1648) ";"
897 WHITESPACE@[1648; 1653) 897 WHITESPACE@[1648; 1653) "\n "
898 LET_STMT@[1653; 1685) 898 LET_STMT@[1653; 1685)
899 LET_KW@[1653; 1656) 899 LET_KW@[1653; 1656) "let"
900 WHITESPACE@[1656; 1657) 900 WHITESPACE@[1656; 1657) " "
901 BIND_PAT@[1657; 1659) 901 BIND_PAT@[1657; 1659)
902 NAME@[1657; 1659) 902 NAME@[1657; 1659)
903 IDENT@[1657; 1659) "_c" 903 IDENT@[1657; 1659) "_c"
904 WHITESPACE@[1659; 1660) 904 WHITESPACE@[1659; 1660) " "
905 EQ@[1660; 1661) 905 EQ@[1660; 1661) "="
906 WHITESPACE@[1661; 1662) 906 WHITESPACE@[1661; 1662) " "
907 PAREN_EXPR@[1662; 1684) 907 PAREN_EXPR@[1662; 1684)
908 L_PAREN@[1662; 1663) 908 L_PAREN@[1662; 1663) "("
909 BIN_EXPR@[1663; 1683) 909 BIN_EXPR@[1663; 1683)
910 MACRO_CALL@[1663; 1677) 910 MACRO_CALL@[1663; 1677)
911 PATH@[1663; 1669) 911 PATH@[1663; 1669)
912 PATH_SEGMENT@[1663; 1669) 912 PATH_SEGMENT@[1663; 1669)
913 NAME_REF@[1663; 1669) 913 NAME_REF@[1663; 1669)
914 IDENT@[1663; 1669) "assert" 914 IDENT@[1663; 1669) "assert"
915 EXCL@[1669; 1670) 915 EXCL@[1669; 1670) "!"
916 TOKEN_TREE@[1670; 1677) 916 TOKEN_TREE@[1670; 1677)
917 L_PAREN@[1670; 1671) 917 L_PAREN@[1670; 1671) "("
918 TOKEN_TREE@[1671; 1676) 918 TOKEN_TREE@[1671; 1676)
919 L_PAREN@[1671; 1672) 919 L_PAREN@[1671; 1672) "("
920 IDENT@[1672; 1673) "p" 920 IDENT@[1672; 1673) "p"
921 TOKEN_TREE@[1673; 1675) 921 TOKEN_TREE@[1673; 1675)
922 L_PAREN@[1673; 1674) 922 L_PAREN@[1673; 1674) "("
923 R_PAREN@[1674; 1675) 923 R_PAREN@[1674; 1675) ")"
924 R_PAREN@[1675; 1676) 924 R_PAREN@[1675; 1676) ")"
925 R_PAREN@[1676; 1677) 925 R_PAREN@[1676; 1677) ")"
926 WHITESPACE@[1677; 1678) 926 WHITESPACE@[1677; 1678) " "
927 EQEQ@[1678; 1680) 927 EQEQ@[1678; 1680) "=="
928 WHITESPACE@[1680; 1681) 928 WHITESPACE@[1680; 1681) " "
929 TUPLE_EXPR@[1681; 1683) 929 TUPLE_EXPR@[1681; 1683)
930 L_PAREN@[1681; 1682) 930 L_PAREN@[1681; 1682) "("
931 R_PAREN@[1682; 1683) 931 R_PAREN@[1682; 1683) ")"
932 R_PAREN@[1683; 1684) 932 R_PAREN@[1683; 1684) ")"
933 SEMI@[1684; 1685) 933 SEMI@[1684; 1685) ";"
934 WHITESPACE@[1685; 1690) 934 WHITESPACE@[1685; 1690) "\n "
935 LET_STMT@[1690; 1739) 935 LET_STMT@[1690; 1739)
936 LET_KW@[1690; 1693) 936 LET_KW@[1690; 1693) "let"
937 WHITESPACE@[1693; 1694) 937 WHITESPACE@[1693; 1694) " "
938 BIND_PAT@[1694; 1696) 938 BIND_PAT@[1694; 1696)
939 NAME@[1694; 1696) 939 NAME@[1694; 1696)
940 IDENT@[1694; 1696) "_b" 940 IDENT@[1694; 1696) "_b"
941 COLON@[1696; 1697) 941 COLON@[1696; 1697) ":"
942 WHITESPACE@[1697; 1698) 942 WHITESPACE@[1697; 1698) " "
943 PATH_TYPE@[1698; 1702) 943 PATH_TYPE@[1698; 1702)
944 PATH@[1698; 1702) 944 PATH@[1698; 1702)
945 PATH_SEGMENT@[1698; 1702) 945 PATH_SEGMENT@[1698; 1702)
946 NAME_REF@[1698; 1702) 946 NAME_REF@[1698; 1702)
947 IDENT@[1698; 1702) "bool" 947 IDENT@[1698; 1702) "bool"
948 WHITESPACE@[1702; 1703) 948 WHITESPACE@[1702; 1703) " "
949 EQ@[1703; 1704) 949 EQ@[1703; 1704) "="
950 WHITESPACE@[1704; 1705) 950 WHITESPACE@[1704; 1705) " "
951 PAREN_EXPR@[1705; 1738) 951 PAREN_EXPR@[1705; 1738)
952 L_PAREN@[1705; 1706) 952 L_PAREN@[1705; 1706) "("
953 BIN_EXPR@[1706; 1737) 953 BIN_EXPR@[1706; 1737)
954 MACRO_CALL@[1706; 1723) 954 MACRO_CALL@[1706; 1723)
955 PATH@[1706; 1713) 955 PATH@[1706; 1713)
956 PATH_SEGMENT@[1706; 1713) 956 PATH_SEGMENT@[1706; 1713)
957 NAME_REF@[1706; 1713) 957 NAME_REF@[1706; 1713)
958 IDENT@[1706; 1713) "println" 958 IDENT@[1706; 1713) "println"
959 EXCL@[1713; 1714) 959 EXCL@[1713; 1714) "!"
960 TOKEN_TREE@[1714; 1723) 960 TOKEN_TREE@[1714; 1723)
961 L_PAREN@[1714; 1715) 961 L_PAREN@[1714; 1715) "("
962 STRING@[1715; 1719) 962 STRING@[1715; 1719) "\"{}\""
963 COMMA@[1719; 1720) 963 COMMA@[1719; 1720) ","
964 WHITESPACE@[1720; 1721) 964 WHITESPACE@[1720; 1721) " "
965 INT_NUMBER@[1721; 1722) "0" 965 INT_NUMBER@[1721; 1722) "0"
966 R_PAREN@[1722; 1723) 966 R_PAREN@[1722; 1723) ")"
967 WHITESPACE@[1723; 1724) 967 WHITESPACE@[1723; 1724) " "
968 EQEQ@[1724; 1726) 968 EQEQ@[1724; 1726) "=="
969 WHITESPACE@[1726; 1727) 969 WHITESPACE@[1726; 1727) " "
970 PAREN_EXPR@[1727; 1737) 970 PAREN_EXPR@[1727; 1737)
971 L_PAREN@[1727; 1728) 971 L_PAREN@[1727; 1728) "("
972 RETURN_EXPR@[1728; 1736) 972 RETURN_EXPR@[1728; 1736)
973 RETURN_KW@[1728; 1734) 973 RETURN_KW@[1728; 1734) "return"
974 WHITESPACE@[1734; 1735) 974 WHITESPACE@[1734; 1735) " "
975 LITERAL@[1735; 1736) 975 LITERAL@[1735; 1736)
976 INT_NUMBER@[1735; 1736) "0" 976 INT_NUMBER@[1735; 1736) "0"
977 R_PAREN@[1736; 1737) 977 R_PAREN@[1736; 1737) ")"
978 R_PAREN@[1737; 1738) 978 R_PAREN@[1737; 1738) ")"
979 SEMI@[1738; 1739) 979 SEMI@[1738; 1739) ";"
980 WHITESPACE@[1739; 1740) 980 WHITESPACE@[1739; 1740) "\n"
981 R_CURLY@[1740; 1741) 981 R_CURLY@[1740; 1741) "}"
982 WHITESPACE@[1741; 1743) 982 WHITESPACE@[1741; 1743) "\n\n"
983 FN_DEF@[1743; 1904) 983 FN_DEF@[1743; 1904)
984 FN_KW@[1743; 1745) 984 FN_KW@[1743; 1745) "fn"
985 WHITESPACE@[1745; 1746) 985 WHITESPACE@[1745; 1746) " "
986 NAME@[1746; 1755) 986 NAME@[1746; 1755)
987 IDENT@[1746; 1755) "angrydome" 987 IDENT@[1746; 1755) "angrydome"
988 PARAM_LIST@[1755; 1757) 988 PARAM_LIST@[1755; 1757)
989 L_PAREN@[1755; 1756) 989 L_PAREN@[1755; 1756) "("
990 R_PAREN@[1756; 1757) 990 R_PAREN@[1756; 1757) ")"
991 WHITESPACE@[1757; 1758) 991 WHITESPACE@[1757; 1758) " "
992 BLOCK@[1758; 1904) 992 BLOCK@[1758; 1904)
993 L_CURLY@[1758; 1759) 993 L_CURLY@[1758; 1759) "{"
994 WHITESPACE@[1759; 1764) 994 WHITESPACE@[1759; 1764) "\n "
995 EXPR_STMT@[1764; 1785) 995 EXPR_STMT@[1764; 1785)
996 LOOP_EXPR@[1764; 1785) 996 LOOP_EXPR@[1764; 1785)
997 LOOP_KW@[1764; 1768) 997 LOOP_KW@[1764; 1768) "loop"
998 WHITESPACE@[1768; 1769) 998 WHITESPACE@[1768; 1769) " "
999 BLOCK@[1769; 1785) 999 BLOCK@[1769; 1785)
1000 L_CURLY@[1769; 1770) 1000 L_CURLY@[1769; 1770) "{"
1001 WHITESPACE@[1770; 1771) 1001 WHITESPACE@[1770; 1771) " "
1002 IF_EXPR@[1771; 1783) 1002 IF_EXPR@[1771; 1783)
1003 IF_KW@[1771; 1773) 1003 IF_KW@[1771; 1773) "if"
1004 WHITESPACE@[1773; 1774) 1004 WHITESPACE@[1773; 1774) " "
1005 CONDITION@[1774; 1779) 1005 CONDITION@[1774; 1779)
1006 BREAK_EXPR@[1774; 1779) 1006 BREAK_EXPR@[1774; 1779)
1007 BREAK_KW@[1774; 1779) 1007 BREAK_KW@[1774; 1779) "break"
1008 WHITESPACE@[1779; 1780) 1008 WHITESPACE@[1779; 1780) " "
1009 BLOCK@[1780; 1783) 1009 BLOCK@[1780; 1783)
1010 L_CURLY@[1780; 1781) 1010 L_CURLY@[1780; 1781) "{"
1011 WHITESPACE@[1781; 1782) 1011 WHITESPACE@[1781; 1782) " "
1012 R_CURLY@[1782; 1783) 1012 R_CURLY@[1782; 1783) "}"
1013 WHITESPACE@[1783; 1784) 1013 WHITESPACE@[1783; 1784) " "
1014 R_CURLY@[1784; 1785) 1014 R_CURLY@[1784; 1785) "}"
1015 WHITESPACE@[1785; 1790) 1015 WHITESPACE@[1785; 1790) "\n "
1016 LET_STMT@[1790; 1804) 1016 LET_STMT@[1790; 1804)
1017 LET_KW@[1790; 1793) 1017 LET_KW@[1790; 1793) "let"
1018 WHITESPACE@[1793; 1794) 1018 WHITESPACE@[1793; 1794) " "
1019 BIND_PAT@[1794; 1799) 1019 BIND_PAT@[1794; 1799)
1020 MUT_KW@[1794; 1797) 1020 MUT_KW@[1794; 1797) "mut"
1021 WHITESPACE@[1797; 1798) 1021 WHITESPACE@[1797; 1798) " "
1022 NAME@[1798; 1799) 1022 NAME@[1798; 1799)
1023 IDENT@[1798; 1799) "i" 1023 IDENT@[1798; 1799) "i"
1024 WHITESPACE@[1799; 1800) 1024 WHITESPACE@[1799; 1800) " "
1025 EQ@[1800; 1801) 1025 EQ@[1800; 1801) "="
1026 WHITESPACE@[1801; 1802) 1026 WHITESPACE@[1801; 1802) " "
1027 LITERAL@[1802; 1803) 1027 LITERAL@[1802; 1803)
1028 INT_NUMBER@[1802; 1803) "0" 1028 INT_NUMBER@[1802; 1803) "0"
1029 SEMI@[1803; 1804) 1029 SEMI@[1803; 1804) ";"
1030 WHITESPACE@[1804; 1809) 1030 WHITESPACE@[1804; 1809) "\n "
1031 LOOP_EXPR@[1809; 1902) 1031 LOOP_EXPR@[1809; 1902)
1032 LOOP_KW@[1809; 1813) 1032 LOOP_KW@[1809; 1813) "loop"
1033 WHITESPACE@[1813; 1814) 1033 WHITESPACE@[1813; 1814) " "
1034 BLOCK@[1814; 1902) 1034 BLOCK@[1814; 1902)
1035 L_CURLY@[1814; 1815) 1035 L_CURLY@[1814; 1815) "{"
1036 WHITESPACE@[1815; 1816) 1036 WHITESPACE@[1815; 1816) " "
1037 EXPR_STMT@[1816; 1823) 1037 EXPR_STMT@[1816; 1823)
1038 BIN_EXPR@[1816; 1822) 1038 BIN_EXPR@[1816; 1822)
1039 PATH_EXPR@[1816; 1817) 1039 PATH_EXPR@[1816; 1817)
@@ -1041,17 +1041,17 @@ SOURCE_FILE@[0; 3813)
1041 PATH_SEGMENT@[1816; 1817) 1041 PATH_SEGMENT@[1816; 1817)
1042 NAME_REF@[1816; 1817) 1042 NAME_REF@[1816; 1817)
1043 IDENT@[1816; 1817) "i" 1043 IDENT@[1816; 1817) "i"
1044 WHITESPACE@[1817; 1818) 1044 WHITESPACE@[1817; 1818) " "
1045 PLUSEQ@[1818; 1820) 1045 PLUSEQ@[1818; 1820) "+="
1046 WHITESPACE@[1820; 1821) 1046 WHITESPACE@[1820; 1821) " "
1047 LITERAL@[1821; 1822) 1047 LITERAL@[1821; 1822)
1048 INT_NUMBER@[1821; 1822) "1" 1048 INT_NUMBER@[1821; 1822) "1"
1049 SEMI@[1822; 1823) 1049 SEMI@[1822; 1823) ";"
1050 WHITESPACE@[1823; 1824) 1050 WHITESPACE@[1823; 1824) " "
1051 EXPR_STMT@[1824; 1887) 1051 EXPR_STMT@[1824; 1887)
1052 IF_EXPR@[1824; 1887) 1052 IF_EXPR@[1824; 1887)
1053 IF_KW@[1824; 1826) 1053 IF_KW@[1824; 1826) "if"
1054 WHITESPACE@[1826; 1827) 1054 WHITESPACE@[1826; 1827) " "
1055 CONDITION@[1827; 1833) 1055 CONDITION@[1827; 1833)
1056 BIN_EXPR@[1827; 1833) 1056 BIN_EXPR@[1827; 1833)
1057 PATH_EXPR@[1827; 1828) 1057 PATH_EXPR@[1827; 1828)
@@ -1059,224 +1059,224 @@ SOURCE_FILE@[0; 3813)
1059 PATH_SEGMENT@[1827; 1828) 1059 PATH_SEGMENT@[1827; 1828)
1060 NAME_REF@[1827; 1828) 1060 NAME_REF@[1827; 1828)
1061 IDENT@[1827; 1828) "i" 1061 IDENT@[1827; 1828) "i"
1062 WHITESPACE@[1828; 1829) 1062 WHITESPACE@[1828; 1829) " "
1063 EQEQ@[1829; 1831) 1063 EQEQ@[1829; 1831) "=="
1064 WHITESPACE@[1831; 1832) 1064 WHITESPACE@[1831; 1832) " "
1065 LITERAL@[1832; 1833) 1065 LITERAL@[1832; 1833)
1066 INT_NUMBER@[1832; 1833) "1" 1066 INT_NUMBER@[1832; 1833) "1"
1067 WHITESPACE@[1833; 1834) 1067 WHITESPACE@[1833; 1834) " "
1068 BLOCK@[1834; 1887) 1068 BLOCK@[1834; 1887)
1069 L_CURLY@[1834; 1835) 1069 L_CURLY@[1834; 1835) "{"
1070 WHITESPACE@[1835; 1836) 1070 WHITESPACE@[1835; 1836) " "
1071 MATCH_EXPR@[1836; 1885) 1071 MATCH_EXPR@[1836; 1885)
1072 MATCH_KW@[1836; 1841) 1072 MATCH_KW@[1836; 1841) "match"
1073 WHITESPACE@[1841; 1842) 1073 WHITESPACE@[1841; 1842) " "
1074 PAREN_EXPR@[1842; 1852) 1074 PAREN_EXPR@[1842; 1852)
1075 L_PAREN@[1842; 1843) 1075 L_PAREN@[1842; 1843) "("
1076 CONTINUE_EXPR@[1843; 1851) 1076 CONTINUE_EXPR@[1843; 1851)
1077 CONTINUE_KW@[1843; 1851) 1077 CONTINUE_KW@[1843; 1851) "continue"
1078 R_PAREN@[1851; 1852) 1078 R_PAREN@[1851; 1852) ")"
1079 WHITESPACE@[1852; 1853) 1079 WHITESPACE@[1852; 1853) " "
1080 MATCH_ARM_LIST@[1853; 1885) 1080 MATCH_ARM_LIST@[1853; 1885)
1081 L_CURLY@[1853; 1854) 1081 L_CURLY@[1853; 1854) "{"
1082 WHITESPACE@[1854; 1855) 1082 WHITESPACE@[1854; 1855) " "
1083 MATCH_ARM@[1855; 1863) 1083 MATCH_ARM@[1855; 1863)
1084 LITERAL_PAT@[1855; 1856) 1084 LITERAL_PAT@[1855; 1856)
1085 LITERAL@[1855; 1856) 1085 LITERAL@[1855; 1856)
1086 INT_NUMBER@[1855; 1856) "1" 1086 INT_NUMBER@[1855; 1856) "1"
1087 WHITESPACE@[1856; 1857) 1087 WHITESPACE@[1856; 1857) " "
1088 FAT_ARROW@[1857; 1859) 1088 FAT_ARROW@[1857; 1859) "=>"
1089 WHITESPACE@[1859; 1860) 1089 WHITESPACE@[1859; 1860) " "
1090 BLOCK_EXPR@[1860; 1863) 1090 BLOCK_EXPR@[1860; 1863)
1091 BLOCK@[1860; 1863) 1091 BLOCK@[1860; 1863)
1092 L_CURLY@[1860; 1861) 1092 L_CURLY@[1860; 1861) "{"
1093 WHITESPACE@[1861; 1862) 1093 WHITESPACE@[1861; 1862) " "
1094 R_CURLY@[1862; 1863) 1094 R_CURLY@[1862; 1863) "}"
1095 COMMA@[1863; 1864) 1095 COMMA@[1863; 1864) ","
1096 WHITESPACE@[1864; 1865) 1096 WHITESPACE@[1864; 1865) " "
1097 MATCH_ARM@[1865; 1883) 1097 MATCH_ARM@[1865; 1883)
1098 PLACEHOLDER_PAT@[1865; 1866) 1098 PLACEHOLDER_PAT@[1865; 1866)
1099 UNDERSCORE@[1865; 1866) 1099 UNDERSCORE@[1865; 1866) "_"
1100 WHITESPACE@[1866; 1867) 1100 WHITESPACE@[1866; 1867) " "
1101 FAT_ARROW@[1867; 1869) 1101 FAT_ARROW@[1867; 1869) "=>"
1102 WHITESPACE@[1869; 1870) 1102 WHITESPACE@[1869; 1870) " "
1103 MACRO_CALL@[1870; 1883) 1103 MACRO_CALL@[1870; 1883)
1104 PATH@[1870; 1875) 1104 PATH@[1870; 1875)
1105 PATH_SEGMENT@[1870; 1875) 1105 PATH_SEGMENT@[1870; 1875)
1106 NAME_REF@[1870; 1875) 1106 NAME_REF@[1870; 1875)
1107 IDENT@[1870; 1875) "panic" 1107 IDENT@[1870; 1875) "panic"
1108 EXCL@[1875; 1876) 1108 EXCL@[1875; 1876) "!"
1109 TOKEN_TREE@[1876; 1883) 1109 TOKEN_TREE@[1876; 1883)
1110 L_PAREN@[1876; 1877) 1110 L_PAREN@[1876; 1877) "("
1111 STRING@[1877; 1882) 1111 STRING@[1877; 1882) "\"wat\""
1112 R_PAREN@[1882; 1883) 1112 R_PAREN@[1882; 1883) ")"
1113 WHITESPACE@[1883; 1884) 1113 WHITESPACE@[1883; 1884) " "
1114 R_CURLY@[1884; 1885) 1114 R_CURLY@[1884; 1885) "}"
1115 WHITESPACE@[1885; 1886) 1115 WHITESPACE@[1885; 1886) " "
1116 R_CURLY@[1886; 1887) 1116 R_CURLY@[1886; 1887) "}"
1117 WHITESPACE@[1887; 1894) 1117 WHITESPACE@[1887; 1894) "\n "
1118 EXPR_STMT@[1894; 1900) 1118 EXPR_STMT@[1894; 1900)
1119 BREAK_EXPR@[1894; 1899) 1119 BREAK_EXPR@[1894; 1899)
1120 BREAK_KW@[1894; 1899) 1120 BREAK_KW@[1894; 1899) "break"
1121 SEMI@[1899; 1900) 1121 SEMI@[1899; 1900) ";"
1122 WHITESPACE@[1900; 1901) 1122 WHITESPACE@[1900; 1901) " "
1123 R_CURLY@[1901; 1902) 1123 R_CURLY@[1901; 1902) "}"
1124 WHITESPACE@[1902; 1903) 1124 WHITESPACE@[1902; 1903) "\n"
1125 R_CURLY@[1903; 1904) 1125 R_CURLY@[1903; 1904) "}"
1126 WHITESPACE@[1904; 1906) 1126 WHITESPACE@[1904; 1906) "\n\n"
1127 FN_DEF@[1906; 1960) 1127 FN_DEF@[1906; 1960)
1128 FN_KW@[1906; 1908) 1128 FN_KW@[1906; 1908) "fn"
1129 WHITESPACE@[1908; 1909) 1129 WHITESPACE@[1908; 1909) " "
1130 NAME@[1909; 1921) 1130 NAME@[1909; 1921)
1131 IDENT@[1909; 1921) "evil_lincoln" 1131 IDENT@[1909; 1921) "evil_lincoln"
1132 PARAM_LIST@[1921; 1923) 1132 PARAM_LIST@[1921; 1923)
1133 L_PAREN@[1921; 1922) 1133 L_PAREN@[1921; 1922) "("
1134 R_PAREN@[1922; 1923) 1134 R_PAREN@[1922; 1923) ")"
1135 WHITESPACE@[1923; 1924) 1135 WHITESPACE@[1923; 1924) " "
1136 BLOCK@[1924; 1960) 1136 BLOCK@[1924; 1960)
1137 L_CURLY@[1924; 1925) 1137 L_CURLY@[1924; 1925) "{"
1138 WHITESPACE@[1925; 1926) 1138 WHITESPACE@[1925; 1926) " "
1139 LET_STMT@[1926; 1958) 1139 LET_STMT@[1926; 1958)
1140 LET_KW@[1926; 1929) 1140 LET_KW@[1926; 1929) "let"
1141 WHITESPACE@[1929; 1930) 1141 WHITESPACE@[1929; 1930) " "
1142 BIND_PAT@[1930; 1935) 1142 BIND_PAT@[1930; 1935)
1143 NAME@[1930; 1935) 1143 NAME@[1930; 1935)
1144 IDENT@[1930; 1935) "_evil" 1144 IDENT@[1930; 1935) "_evil"
1145 WHITESPACE@[1935; 1936) 1145 WHITESPACE@[1935; 1936) " "
1146 EQ@[1936; 1937) 1146 EQ@[1936; 1937) "="
1147 WHITESPACE@[1937; 1938) 1147 WHITESPACE@[1937; 1938) " "
1148 MACRO_CALL@[1938; 1957) 1148 MACRO_CALL@[1938; 1957)
1149 PATH@[1938; 1945) 1149 PATH@[1938; 1945)
1150 PATH_SEGMENT@[1938; 1945) 1150 PATH_SEGMENT@[1938; 1945)
1151 NAME_REF@[1938; 1945) 1151 NAME_REF@[1938; 1945)
1152 IDENT@[1938; 1945) "println" 1152 IDENT@[1938; 1945) "println"
1153 EXCL@[1945; 1946) 1153 EXCL@[1945; 1946) "!"
1154 TOKEN_TREE@[1946; 1957) 1154 TOKEN_TREE@[1946; 1957)
1155 L_PAREN@[1946; 1947) 1155 L_PAREN@[1946; 1947) "("
1156 STRING@[1947; 1956) 1156 STRING@[1947; 1956) "\"lincoln\""
1157 R_PAREN@[1956; 1957) 1157 R_PAREN@[1956; 1957) ")"
1158 SEMI@[1957; 1958) 1158 SEMI@[1957; 1958) ";"
1159 WHITESPACE@[1958; 1959) 1159 WHITESPACE@[1958; 1959) " "
1160 R_CURLY@[1959; 1960) 1160 R_CURLY@[1959; 1960) "}"
1161 WHITESPACE@[1960; 1962) 1161 WHITESPACE@[1960; 1962) "\n\n"
1162 FN_DEF@[1962; 2198) 1162 FN_DEF@[1962; 2198)
1163 FN_KW@[1962; 1964) 1163 FN_KW@[1962; 1964) "fn"
1164 WHITESPACE@[1964; 1965) 1164 WHITESPACE@[1964; 1965) " "
1165 NAME@[1965; 1969) 1165 NAME@[1965; 1969)
1166 IDENT@[1965; 1969) "dots" 1166 IDENT@[1965; 1969) "dots"
1167 PARAM_LIST@[1969; 1971) 1167 PARAM_LIST@[1969; 1971)
1168 L_PAREN@[1969; 1970) 1168 L_PAREN@[1969; 1970) "("
1169 R_PAREN@[1970; 1971) 1169 R_PAREN@[1970; 1971) ")"
1170 WHITESPACE@[1971; 1972) 1170 WHITESPACE@[1971; 1972) " "
1171 BLOCK@[1972; 2198) 1171 BLOCK@[1972; 2198)
1172 L_CURLY@[1972; 1973) 1172 L_CURLY@[1972; 1973) "{"
1173 WHITESPACE@[1973; 1978) 1173 WHITESPACE@[1973; 1978) "\n "
1174 EXPR_STMT@[1978; 2196) 1174 EXPR_STMT@[1978; 2196)
1175 MACRO_CALL@[1978; 2195) 1175 MACRO_CALL@[1978; 2195)
1176 PATH@[1978; 1987) 1176 PATH@[1978; 1987)
1177 PATH_SEGMENT@[1978; 1987) 1177 PATH_SEGMENT@[1978; 1987)
1178 NAME_REF@[1978; 1987) 1178 NAME_REF@[1978; 1987)
1179 IDENT@[1978; 1987) "assert_eq" 1179 IDENT@[1978; 1987) "assert_eq"
1180 EXCL@[1987; 1988) 1180 EXCL@[1987; 1988) "!"
1181 TOKEN_TREE@[1988; 2195) 1181 TOKEN_TREE@[1988; 2195)
1182 L_PAREN@[1988; 1989) 1182 L_PAREN@[1988; 1989) "("
1183 IDENT@[1989; 1995) "String" 1183 IDENT@[1989; 1995) "String"
1184 COLONCOLON@[1995; 1997) 1184 COLONCOLON@[1995; 1997) "::"
1185 IDENT@[1997; 2001) "from" 1185 IDENT@[1997; 2001) "from"
1186 TOKEN_TREE@[2001; 2055) 1186 TOKEN_TREE@[2001; 2055)
1187 L_PAREN@[2001; 2002) 1187 L_PAREN@[2001; 2002) "("
1188 STRING@[2002; 2054) 1188 STRING@[2002; 2054) "\".................... ..."
1189 R_PAREN@[2054; 2055) 1189 R_PAREN@[2054; 2055) ")"
1190 COMMA@[2055; 2056) 1190 COMMA@[2055; 2056) ","
1191 WHITESPACE@[2056; 2072) 1191 WHITESPACE@[2056; 2072) "\n "
1192 IDENT@[2072; 2078) "format" 1192 IDENT@[2072; 2078) "format"
1193 EXCL@[2078; 2079) 1193 EXCL@[2078; 2079) "!"
1194 TOKEN_TREE@[2079; 2194) 1194 TOKEN_TREE@[2079; 2194)
1195 L_PAREN@[2079; 2080) 1195 L_PAREN@[2079; 2080) "("
1196 STRING@[2080; 2086) 1196 STRING@[2080; 2086) "\"{:?}\""
1197 COMMA@[2086; 2087) 1197 COMMA@[2086; 2087) ","
1198 WHITESPACE@[2087; 2088) 1198 WHITESPACE@[2087; 2088) " "
1199 DOTDOT@[2088; 2090) 1199 DOTDOT@[2088; 2090) ".."
1200 WHITESPACE@[2090; 2091) 1200 WHITESPACE@[2090; 2091) " "
1201 DOTDOT@[2091; 2093) 1201 DOTDOT@[2091; 2093) ".."
1202 WHITESPACE@[2093; 2094) 1202 WHITESPACE@[2093; 2094) " "
1203 DOTDOT@[2094; 2096) 1203 DOTDOT@[2094; 2096) ".."
1204 WHITESPACE@[2096; 2097) 1204 WHITESPACE@[2096; 2097) " "
1205 DOTDOT@[2097; 2099) 1205 DOTDOT@[2097; 2099) ".."
1206 WHITESPACE@[2099; 2100) 1206 WHITESPACE@[2099; 2100) " "
1207 DOTDOT@[2100; 2102) 1207 DOTDOT@[2100; 2102) ".."
1208 WHITESPACE@[2102; 2103) 1208 WHITESPACE@[2102; 2103) " "
1209 DOTDOT@[2103; 2105) 1209 DOTDOT@[2103; 2105) ".."
1210 WHITESPACE@[2105; 2106) 1210 WHITESPACE@[2105; 2106) " "
1211 DOTDOT@[2106; 2108) 1211 DOTDOT@[2106; 2108) ".."
1212 WHITESPACE@[2108; 2109) 1212 WHITESPACE@[2108; 2109) " "
1213 DOTDOT@[2109; 2111) 1213 DOTDOT@[2109; 2111) ".."
1214 WHITESPACE@[2111; 2112) 1214 WHITESPACE@[2111; 2112) " "
1215 DOTDOT@[2112; 2114) 1215 DOTDOT@[2112; 2114) ".."
1216 WHITESPACE@[2114; 2115) 1216 WHITESPACE@[2114; 2115) " "
1217 DOTDOT@[2115; 2117) 1217 DOTDOT@[2115; 2117) ".."
1218 WHITESPACE@[2117; 2118) 1218 WHITESPACE@[2117; 2118) " "
1219 DOTDOT@[2118; 2120) 1219 DOTDOT@[2118; 2120) ".."
1220 WHITESPACE@[2120; 2121) 1220 WHITESPACE@[2120; 2121) " "
1221 DOTDOT@[2121; 2123) 1221 DOTDOT@[2121; 2123) ".."
1222 WHITESPACE@[2123; 2124) 1222 WHITESPACE@[2123; 2124) " "
1223 DOTDOT@[2124; 2126) 1223 DOTDOT@[2124; 2126) ".."
1224 WHITESPACE@[2126; 2158) 1224 WHITESPACE@[2126; 2158) "\n ..."
1225 DOTDOT@[2158; 2160) 1225 DOTDOT@[2158; 2160) ".."
1226 WHITESPACE@[2160; 2161) 1226 WHITESPACE@[2160; 2161) " "
1227 DOTDOT@[2161; 2163) 1227 DOTDOT@[2161; 2163) ".."
1228 WHITESPACE@[2163; 2164) 1228 WHITESPACE@[2163; 2164) " "
1229 DOTDOT@[2164; 2166) 1229 DOTDOT@[2164; 2166) ".."
1230 WHITESPACE@[2166; 2167) 1230 WHITESPACE@[2166; 2167) " "
1231 DOTDOT@[2167; 2169) 1231 DOTDOT@[2167; 2169) ".."
1232 WHITESPACE@[2169; 2170) 1232 WHITESPACE@[2169; 2170) " "
1233 DOTDOT@[2170; 2172) 1233 DOTDOT@[2170; 2172) ".."
1234 WHITESPACE@[2172; 2173) 1234 WHITESPACE@[2172; 2173) " "
1235 DOTDOT@[2173; 2175) 1235 DOTDOT@[2173; 2175) ".."
1236 WHITESPACE@[2175; 2176) 1236 WHITESPACE@[2175; 2176) " "
1237 DOTDOT@[2176; 2178) 1237 DOTDOT@[2176; 2178) ".."
1238 WHITESPACE@[2178; 2179) 1238 WHITESPACE@[2178; 2179) " "
1239 DOTDOT@[2179; 2181) 1239 DOTDOT@[2179; 2181) ".."
1240 WHITESPACE@[2181; 2182) 1240 WHITESPACE@[2181; 2182) " "
1241 DOTDOT@[2182; 2184) 1241 DOTDOT@[2182; 2184) ".."
1242 WHITESPACE@[2184; 2185) 1242 WHITESPACE@[2184; 2185) " "
1243 DOTDOT@[2185; 2187) 1243 DOTDOT@[2185; 2187) ".."
1244 WHITESPACE@[2187; 2188) 1244 WHITESPACE@[2187; 2188) " "
1245 DOTDOT@[2188; 2190) 1245 DOTDOT@[2188; 2190) ".."
1246 WHITESPACE@[2190; 2191) 1246 WHITESPACE@[2190; 2191) " "
1247 DOTDOT@[2191; 2193) 1247 DOTDOT@[2191; 2193) ".."
1248 R_PAREN@[2193; 2194) 1248 R_PAREN@[2193; 2194) ")"
1249 R_PAREN@[2194; 2195) 1249 R_PAREN@[2194; 2195) ")"
1250 SEMI@[2195; 2196) 1250 SEMI@[2195; 2196) ";"
1251 WHITESPACE@[2196; 2197) 1251 WHITESPACE@[2196; 2197) "\n"
1252 R_CURLY@[2197; 2198) 1252 R_CURLY@[2197; 2198) "}"
1253 WHITESPACE@[2198; 2200) 1253 WHITESPACE@[2198; 2200) "\n\n"
1254 FN_DEF@[2200; 2693) 1254 FN_DEF@[2200; 2693)
1255 FN_KW@[2200; 2202) 1255 FN_KW@[2200; 2202) "fn"
1256 WHITESPACE@[2202; 2203) 1256 WHITESPACE@[2202; 2203) " "
1257 NAME@[2203; 2205) 1257 NAME@[2203; 2205)
1258 IDENT@[2203; 2205) "u8" 1258 IDENT@[2203; 2205) "u8"
1259 PARAM_LIST@[2205; 2213) 1259 PARAM_LIST@[2205; 2213)
1260 L_PAREN@[2205; 2206) 1260 L_PAREN@[2205; 2206) "("
1261 PARAM@[2206; 2212) 1261 PARAM@[2206; 2212)
1262 BIND_PAT@[2206; 2208) 1262 BIND_PAT@[2206; 2208)
1263 NAME@[2206; 2208) 1263 NAME@[2206; 2208)
1264 IDENT@[2206; 2208) "u8" 1264 IDENT@[2206; 2208) "u8"
1265 COLON@[2208; 2209) 1265 COLON@[2208; 2209) ":"
1266 WHITESPACE@[2209; 2210) 1266 WHITESPACE@[2209; 2210) " "
1267 PATH_TYPE@[2210; 2212) 1267 PATH_TYPE@[2210; 2212)
1268 PATH@[2210; 2212) 1268 PATH@[2210; 2212)
1269 PATH_SEGMENT@[2210; 2212) 1269 PATH_SEGMENT@[2210; 2212)
1270 NAME_REF@[2210; 2212) 1270 NAME_REF@[2210; 2212)
1271 IDENT@[2210; 2212) "u8" 1271 IDENT@[2210; 2212) "u8"
1272 R_PAREN@[2212; 2213) 1272 R_PAREN@[2212; 2213) ")"
1273 WHITESPACE@[2213; 2214) 1273 WHITESPACE@[2213; 2214) " "
1274 BLOCK@[2214; 2693) 1274 BLOCK@[2214; 2693)
1275 L_CURLY@[2214; 2215) 1275 L_CURLY@[2214; 2215) "{"
1276 WHITESPACE@[2215; 2220) 1276 WHITESPACE@[2215; 2220) "\n "
1277 IF_EXPR@[2220; 2691) 1277 IF_EXPR@[2220; 2691)
1278 IF_KW@[2220; 2222) 1278 IF_KW@[2220; 2222) "if"
1279 WHITESPACE@[2222; 2223) 1279 WHITESPACE@[2222; 2223) " "
1280 CONDITION@[2223; 2232) 1280 CONDITION@[2223; 2232)
1281 BIN_EXPR@[2223; 2232) 1281 BIN_EXPR@[2223; 2232)
1282 PATH_EXPR@[2223; 2225) 1282 PATH_EXPR@[2223; 2225)
@@ -1284,782 +1284,784 @@ SOURCE_FILE@[0; 3813)
1284 PATH_SEGMENT@[2223; 2225) 1284 PATH_SEGMENT@[2223; 2225)
1285 NAME_REF@[2223; 2225) 1285 NAME_REF@[2223; 2225)
1286 IDENT@[2223; 2225) "u8" 1286 IDENT@[2223; 2225) "u8"
1287 WHITESPACE@[2225; 2226) 1287 WHITESPACE@[2225; 2226) " "
1288 NEQ@[2226; 2228) 1288 NEQ@[2226; 2228) "!="
1289 WHITESPACE@[2228; 2229) 1289 WHITESPACE@[2228; 2229) " "
1290 LITERAL@[2229; 2232) 1290 LITERAL@[2229; 2232)
1291 INT_NUMBER@[2229; 2232) "0u8" 1291 INT_NUMBER@[2229; 2232) "0u8"
1292 WHITESPACE@[2232; 2233) 1292 WHITESPACE@[2232; 2233) " "
1293 BLOCK@[2233; 2691) 1293 BLOCK@[2233; 2691)
1294 L_CURLY@[2233; 2234) 1294 L_CURLY@[2233; 2234) "{"
1295 WHITESPACE@[2234; 2243) 1295 WHITESPACE@[2234; 2243) "\n "
1296 EXPR_STMT@[2243; 2685) 1296 EXPR_STMT@[2243; 2685)
1297 MACRO_CALL@[2243; 2684) 1297 MACRO_CALL@[2243; 2684)
1298 PATH@[2243; 2252) 1298 PATH@[2243; 2252)
1299 PATH_SEGMENT@[2243; 2252) 1299 PATH_SEGMENT@[2243; 2252)
1300 NAME_REF@[2243; 2252) 1300 NAME_REF@[2243; 2252)
1301 IDENT@[2243; 2252) "assert_eq" 1301 IDENT@[2243; 2252) "assert_eq"
1302 EXCL@[2252; 2253) 1302 EXCL@[2252; 2253) "!"
1303 TOKEN_TREE@[2253; 2684) 1303 TOKEN_TREE@[2253; 2684)
1304 L_PAREN@[2253; 2254) 1304 L_PAREN@[2253; 2254) "("
1305 INT_NUMBER@[2254; 2257) "8u8" 1305 INT_NUMBER@[2254; 2257) "8u8"
1306 COMMA@[2257; 2258) 1306 COMMA@[2257; 2258) ","
1307 WHITESPACE@[2258; 2259) 1307 WHITESPACE@[2258; 2259) " "
1308 TOKEN_TREE@[2259; 2683) 1308 TOKEN_TREE@[2259; 2683)
1309 L_CURLY@[2259; 2260) 1309 L_CURLY@[2259; 2260) "{"
1310 WHITESPACE@[2260; 2273) 1310 WHITESPACE@[2260; 2273) "\n "
1311 IDENT@[2273; 2284) "macro_rules" 1311 IDENT@[2273; 2284) "macro_rules"
1312 EXCL@[2284; 2285) 1312 EXCL@[2284; 2285) "!"
1313 WHITESPACE@[2285; 2286) 1313 WHITESPACE@[2285; 2286) " "
1314 IDENT@[2286; 2288) "u8" 1314 IDENT@[2286; 2288) "u8"
1315 WHITESPACE@[2288; 2289) 1315 WHITESPACE@[2288; 2289) " "
1316 TOKEN_TREE@[2289; 2567) 1316 TOKEN_TREE@[2289; 2567)
1317 L_CURLY@[2289; 2290) 1317 L_CURLY@[2289; 2290) "{"
1318 WHITESPACE@[2290; 2307) 1318 WHITESPACE@[2290; 2307) "\n "
1319 TOKEN_TREE@[2307; 2311) 1319 TOKEN_TREE@[2307; 2311)
1320 L_PAREN@[2307; 2308) 1320 L_PAREN@[2307; 2308) "("
1321 IDENT@[2308; 2310) "u8" 1321 IDENT@[2308; 2310) "u8"
1322 R_PAREN@[2310; 2311) 1322 R_PAREN@[2310; 2311) ")"
1323 WHITESPACE@[2311; 2312) 1323 WHITESPACE@[2311; 2312) " "
1324 FAT_ARROW@[2312; 2314) 1324 FAT_ARROW@[2312; 2314) "=>"
1325 WHITESPACE@[2314; 2315) 1325 WHITESPACE@[2314; 2315) " "
1326 TOKEN_TREE@[2315; 2552) 1326 TOKEN_TREE@[2315; 2552)
1327 L_CURLY@[2315; 2316) 1327 L_CURLY@[2315; 2316) "{"
1328 WHITESPACE@[2316; 2337) 1328 WHITESPACE@[2316; 2337) "\n "
1329 MOD_KW@[2337; 2340) 1329 MOD_KW@[2337; 2340) "mod"
1330 WHITESPACE@[2340; 2341) 1330 WHITESPACE@[2340; 2341) " "
1331 IDENT@[2341; 2343) "u8" 1331 IDENT@[2341; 2343) "u8"
1332 WHITESPACE@[2343; 2344) 1332 WHITESPACE@[2343; 2344) " "
1333 TOKEN_TREE@[2344; 2534) 1333 TOKEN_TREE@[2344; 2534)
1334 L_CURLY@[2344; 2345) 1334 L_CURLY@[2344; 2345) "{"
1335 WHITESPACE@[2345; 2370) 1335 WHITESPACE@[2345; 2370) "\n ..."
1336 PUB_KW@[2370; 2373) 1336 PUB_KW@[2370; 2373) "pub"
1337 WHITESPACE@[2373; 2374) 1337 WHITESPACE@[2373; 2374) " "
1338 FN_KW@[2374; 2376) 1338 FN_KW@[2374; 2376) "fn"
1339 WHITESPACE@[2376; 2377) 1339 WHITESPACE@[2376; 2377) " "
1340 IDENT@[2377; 2379) "u8" 1340 IDENT@[2377; 2379) "u8"
1341 L_ANGLE@[2379; 2380) 1341 L_ANGLE@[2379; 2380) "<"
1342 LIFETIME@[2380; 2383) "'u8" 1342 LIFETIME@[2380; 2383) "\'u8"
1343 COLON@[2383; 2384) 1343 COLON@[2383; 2384) ":"
1344 WHITESPACE@[2384; 2385) 1344 WHITESPACE@[2384; 2385) " "
1345 LIFETIME@[2385; 2388) "'u8" 1345 LIFETIME@[2385; 2388) "\'u8"
1346 WHITESPACE@[2388; 2389) 1346 WHITESPACE@[2388; 2389) " "
1347 PLUS@[2389; 2390) 1347 PLUS@[2389; 2390) "+"
1348 WHITESPACE@[2390; 2391) 1348 WHITESPACE@[2390; 2391) " "
1349 LIFETIME@[2391; 2394) "'u8" 1349 LIFETIME@[2391; 2394) "\'u8"
1350 R_ANGLE@[2394; 2395) 1350 R_ANGLE@[2394; 2395) ">"
1351 TOKEN_TREE@[2395; 2408) 1351 TOKEN_TREE@[2395; 2408)
1352 L_PAREN@[2395; 2396) 1352 L_PAREN@[2395; 2396) "("
1353 IDENT@[2396; 2398) "u8" 1353 IDENT@[2396; 2398) "u8"
1354 COLON@[2398; 2399) 1354 COLON@[2398; 2399) ":"
1355 WHITESPACE@[2399; 2400) 1355 WHITESPACE@[2399; 2400) " "
1356 AMP@[2400; 2401) 1356 AMP@[2400; 2401) "&"
1357 LIFETIME@[2401; 2404) "'u8" 1357 LIFETIME@[2401; 2404) "\'u8"
1358 WHITESPACE@[2404; 2405) 1358 WHITESPACE@[2404; 2405) " "
1359 IDENT@[2405; 2407) "u8" 1359 IDENT@[2405; 2407) "u8"
1360 R_PAREN@[2407; 2408) 1360 R_PAREN@[2407; 2408) ")"
1361 WHITESPACE@[2408; 2409) 1361 WHITESPACE@[2408; 2409) " "
1362 THIN_ARROW@[2409; 2411) 1362 THIN_ARROW@[2409; 2411) "->"
1363 WHITESPACE@[2411; 2412) 1363 WHITESPACE@[2411; 2412) " "
1364 AMP@[2412; 2413) 1364 AMP@[2412; 2413) "&"
1365 LIFETIME@[2413; 2416) "'u8" 1365 LIFETIME@[2413; 2416) "\'u8"
1366 WHITESPACE@[2416; 2417) 1366 WHITESPACE@[2416; 2417) " "
1367 IDENT@[2417; 2419) "u8" 1367 IDENT@[2417; 2419) "u8"
1368 WHITESPACE@[2419; 2420) 1368 WHITESPACE@[2419; 2420) " "
1369 TOKEN_TREE@[2420; 2512) 1369 TOKEN_TREE@[2420; 2512)
1370 L_CURLY@[2420; 2421) 1370 L_CURLY@[2420; 2421) "{"
1371 WHITESPACE@[2421; 2450) 1371 WHITESPACE@[2421; 2450) "\n ..."
1372 STRING@[2450; 2454) 1372 STRING@[2450; 2454) "\"u8\""
1373 SEMI@[2454; 2455) 1373 SEMI@[2454; 2455) ";"
1374 WHITESPACE@[2455; 2484) 1374 WHITESPACE@[2455; 2484) "\n ..."
1375 IDENT@[2484; 2486) "u8" 1375 IDENT@[2484; 2486) "u8"
1376 WHITESPACE@[2486; 2511) 1376 WHITESPACE@[2486; 2511) "\n ..."
1377 R_CURLY@[2511; 2512) 1377 R_CURLY@[2511; 2512) "}"
1378 WHITESPACE@[2512; 2533) 1378 WHITESPACE@[2512; 2533) "\n "
1379 R_CURLY@[2533; 2534) 1379 R_CURLY@[2533; 2534) "}"
1380 WHITESPACE@[2534; 2551) 1380 WHITESPACE@[2534; 2551) "\n "
1381 R_CURLY@[2551; 2552) 1381 R_CURLY@[2551; 2552) "}"
1382 SEMI@[2552; 2553) 1382 SEMI@[2552; 2553) ";"
1383 WHITESPACE@[2553; 2566) 1383 WHITESPACE@[2553; 2566) "\n "
1384 R_CURLY@[2566; 2567) 1384 R_CURLY@[2566; 2567) "}"
1385 WHITESPACE@[2567; 2581) 1385 WHITESPACE@[2567; 2581) "\n\n "
1386 IDENT@[2581; 2583) "u8" 1386 IDENT@[2581; 2583) "u8"
1387 EXCL@[2583; 2584) 1387 EXCL@[2583; 2584) "!"
1388 TOKEN_TREE@[2584; 2588) 1388 TOKEN_TREE@[2584; 2588)
1389 L_PAREN@[2584; 2585) 1389 L_PAREN@[2584; 2585) "("
1390 IDENT@[2585; 2587) "u8" 1390 IDENT@[2585; 2587) "u8"
1391 R_PAREN@[2587; 2588) 1391 R_PAREN@[2587; 2588) ")"
1392 SEMI@[2588; 2589) 1392 SEMI@[2588; 2589) ";"
1393 WHITESPACE@[2589; 2602) 1393 WHITESPACE@[2589; 2602) "\n "
1394 LET_KW@[2602; 2605) 1394 LET_KW@[2602; 2605) "let"
1395 WHITESPACE@[2605; 2606) 1395 WHITESPACE@[2605; 2606) " "
1396 AMP@[2606; 2607) 1396 AMP@[2606; 2607) "&"
1397 IDENT@[2607; 2609) "u8" 1397 IDENT@[2607; 2609) "u8"
1398 COLON@[2609; 2610) 1398 COLON@[2609; 2610) ":"
1399 WHITESPACE@[2610; 2611) 1399 WHITESPACE@[2610; 2611) " "
1400 AMP@[2611; 2612) 1400 AMP@[2611; 2612) "&"
1401 IDENT@[2612; 2614) "u8" 1401 IDENT@[2612; 2614) "u8"
1402 WHITESPACE@[2614; 2615) 1402 WHITESPACE@[2614; 2615) " "
1403 EQ@[2615; 2616) 1403 EQ@[2615; 2616) "="
1404 WHITESPACE@[2616; 2617) 1404 WHITESPACE@[2616; 2617) " "
1405 IDENT@[2617; 2619) "u8" 1405 IDENT@[2617; 2619) "u8"
1406 COLONCOLON@[2619; 2621) 1406 COLONCOLON@[2619; 2621) "::"
1407 IDENT@[2621; 2623) "u8" 1407 IDENT@[2621; 2623) "u8"
1408 TOKEN_TREE@[2623; 2629) 1408 TOKEN_TREE@[2623; 2629)
1409 L_PAREN@[2623; 2624) 1409 L_PAREN@[2623; 2624) "("
1410 AMP@[2624; 2625) 1410 AMP@[2624; 2625) "&"
1411 INT_NUMBER@[2625; 2628) "8u8" 1411 INT_NUMBER@[2625; 2628) "8u8"
1412 R_PAREN@[2628; 2629) 1412 R_PAREN@[2628; 2629) ")"
1413 SEMI@[2629; 2630) 1413 SEMI@[2629; 2630) ";"
1414 WHITESPACE@[2630; 2643) 1414 WHITESPACE@[2630; 2643) "\n "
1415 CRATE_KW@[2643; 2648) 1415 CRATE_KW@[2643; 2648) "crate"
1416 COLONCOLON@[2648; 2650) 1416 COLONCOLON@[2648; 2650) "::"
1417 IDENT@[2650; 2652) "u8" 1417 IDENT@[2650; 2652) "u8"
1418 TOKEN_TREE@[2652; 2657) 1418 TOKEN_TREE@[2652; 2657)
1419 L_PAREN@[2652; 2653) 1419 L_PAREN@[2652; 2653) "("
1420 INT_NUMBER@[2653; 2656) "0u8" 1420 INT_NUMBER@[2653; 2656) "0u8"
1421 R_PAREN@[2656; 2657) 1421 R_PAREN@[2656; 2657) ")"
1422 SEMI@[2657; 2658) 1422 SEMI@[2657; 2658) ";"
1423 WHITESPACE@[2658; 2671) 1423 WHITESPACE@[2658; 2671) "\n "
1424 IDENT@[2671; 2673) "u8" 1424 IDENT@[2671; 2673) "u8"
1425 WHITESPACE@[2673; 2682) 1425 WHITESPACE@[2673; 2682) "\n "
1426 R_CURLY@[2682; 2683) 1426 R_CURLY@[2682; 2683) "}"
1427 R_PAREN@[2683; 2684) 1427 R_PAREN@[2683; 2684) ")"
1428 SEMI@[2684; 2685) 1428 SEMI@[2684; 2685) ";"
1429 WHITESPACE@[2685; 2690) 1429 WHITESPACE@[2685; 2690) "\n "
1430 R_CURLY@[2690; 2691) 1430 R_CURLY@[2690; 2691) "}"
1431 WHITESPACE@[2691; 2692) 1431 WHITESPACE@[2691; 2692) "\n"
1432 R_CURLY@[2692; 2693) 1432 R_CURLY@[2692; 2693) "}"
1433 WHITESPACE@[2693; 2695) 1433 WHITESPACE@[2693; 2695) "\n\n"
1434 FN_DEF@[2695; 2832) 1434 FN_DEF@[2695; 2832)
1435 FN_KW@[2695; 2697) 1435 FN_KW@[2695; 2697) "fn"
1436 WHITESPACE@[2697; 2698) 1436 WHITESPACE@[2697; 2698) " "
1437 NAME@[2698; 2703) 1437 NAME@[2698; 2703)
1438 IDENT@[2698; 2703) "fishy" 1438 IDENT@[2698; 2703) "fishy"
1439 PARAM_LIST@[2703; 2705) 1439 PARAM_LIST@[2703; 2705)
1440 L_PAREN@[2703; 2704) 1440 L_PAREN@[2703; 2704) "("
1441 R_PAREN@[2704; 2705) 1441 R_PAREN@[2704; 2705) ")"
1442 WHITESPACE@[2705; 2706) 1442 WHITESPACE@[2705; 2706) " "
1443 BLOCK@[2706; 2832) 1443 BLOCK@[2706; 2832)
1444 L_CURLY@[2706; 2707) 1444 L_CURLY@[2706; 2707) "{"
1445 WHITESPACE@[2707; 2712) 1445 WHITESPACE@[2707; 2712) "\n "
1446 EXPR_STMT@[2712; 2830) 1446 EXPR_STMT@[2712; 2830)
1447 MACRO_CALL@[2712; 2829) 1447 MACRO_CALL@[2712; 2829)
1448 PATH@[2712; 2721) 1448 PATH@[2712; 2721)
1449 PATH_SEGMENT@[2712; 2721) 1449 PATH_SEGMENT@[2712; 2721)
1450 NAME_REF@[2712; 2721) 1450 NAME_REF@[2712; 2721)
1451 IDENT@[2712; 2721) "assert_eq" 1451 IDENT@[2712; 2721) "assert_eq"
1452 EXCL@[2721; 2722) 1452 EXCL@[2721; 2722) "!"
1453 TOKEN_TREE@[2722; 2829) 1453 TOKEN_TREE@[2722; 2829)
1454 L_PAREN@[2722; 2723) 1454 L_PAREN@[2722; 2723) "("
1455 IDENT@[2723; 2729) "String" 1455 IDENT@[2723; 2729) "String"
1456 COLONCOLON@[2729; 2731) 1456 COLONCOLON@[2729; 2731) "::"
1457 IDENT@[2731; 2735) "from" 1457 IDENT@[2731; 2735) "from"
1458 TOKEN_TREE@[2735; 2742) 1458 TOKEN_TREE@[2735; 2742)
1459 L_PAREN@[2735; 2736) 1459 L_PAREN@[2735; 2736) "("
1460 STRING@[2736; 2741) 1460 STRING@[2736; 2741) "\"><>\""
1461 R_PAREN@[2741; 2742) 1461 R_PAREN@[2741; 2742) ")"
1462 COMMA@[2742; 2743) 1462 COMMA@[2742; 2743) ","
1463 WHITESPACE@[2743; 2759) 1463 WHITESPACE@[2743; 2759) "\n "
1464 IDENT@[2759; 2765) "String" 1464 IDENT@[2759; 2765) "String"
1465 COLONCOLON@[2765; 2767) 1465 COLONCOLON@[2765; 2767) "::"
1466 L_ANGLE@[2767; 2768) 1466 L_ANGLE@[2767; 2768) "<"
1467 R_ANGLE@[2768; 2769) 1467 R_ANGLE@[2768; 2769) ">"
1468 COLONCOLON@[2769; 2771) 1468 COLONCOLON@[2769; 2771) "::"
1469 IDENT@[2771; 2775) "from" 1469 IDENT@[2771; 2775) "from"
1470 COLONCOLON@[2775; 2777) 1470 COLONCOLON@[2775; 2777) "::"
1471 L_ANGLE@[2777; 2778) 1471 L_ANGLE@[2777; 2778) "<"
1472 R_ANGLE@[2778; 2779) 1472 R_ANGLE@[2778; 2779) ">"
1473 TOKEN_TREE@[2779; 2786) 1473 TOKEN_TREE@[2779; 2786)
1474 L_PAREN@[2779; 2780) 1474 L_PAREN@[2779; 2780) "("
1475 STRING@[2780; 2785) 1475 STRING@[2780; 2785) "\"><>\""
1476 R_PAREN@[2785; 2786) 1476 R_PAREN@[2785; 2786) ")"
1477 DOT@[2786; 2787) 1477 DOT@[2786; 2787) "."
1478 IDENT@[2787; 2792) "chars" 1478 IDENT@[2787; 2792) "chars"
1479 COLONCOLON@[2792; 2794) 1479 COLONCOLON@[2792; 2794) "::"
1480 L_ANGLE@[2794; 2795) 1480 L_ANGLE@[2794; 2795) "<"
1481 R_ANGLE@[2795; 2796) 1481 R_ANGLE@[2795; 2796) ">"
1482 TOKEN_TREE@[2796; 2798) 1482 TOKEN_TREE@[2796; 2798)
1483 L_PAREN@[2796; 2797) 1483 L_PAREN@[2796; 2797) "("
1484 R_PAREN@[2797; 2798) 1484 R_PAREN@[2797; 2798) ")"
1485 DOT@[2798; 2799) 1485 DOT@[2798; 2799) "."
1486 IDENT@[2799; 2802) "rev" 1486 IDENT@[2799; 2802) "rev"
1487 COLONCOLON@[2802; 2804) 1487 COLONCOLON@[2802; 2804) "::"
1488 L_ANGLE@[2804; 2805) 1488 L_ANGLE@[2804; 2805) "<"
1489 R_ANGLE@[2805; 2806) 1489 R_ANGLE@[2805; 2806) ">"
1490 TOKEN_TREE@[2806; 2808) 1490 TOKEN_TREE@[2806; 2808)
1491 L_PAREN@[2806; 2807) 1491 L_PAREN@[2806; 2807) "("
1492 R_PAREN@[2807; 2808) 1492 R_PAREN@[2807; 2808) ")"
1493 DOT@[2808; 2809) 1493 DOT@[2808; 2809) "."
1494 IDENT@[2809; 2816) "collect" 1494 IDENT@[2809; 2816) "collect"
1495 COLONCOLON@[2816; 2818) 1495 COLONCOLON@[2816; 2818) "::"
1496 L_ANGLE@[2818; 2819) 1496 L_ANGLE@[2818; 2819) "<"
1497 IDENT@[2819; 2825) "String" 1497 IDENT@[2819; 2825) "String"
1498 R_ANGLE@[2825; 2826) 1498 R_ANGLE@[2825; 2826) ">"
1499 TOKEN_TREE@[2826; 2828) 1499 TOKEN_TREE@[2826; 2828)
1500 L_PAREN@[2826; 2827) 1500 L_PAREN@[2826; 2827) "("
1501 R_PAREN@[2827; 2828) 1501 R_PAREN@[2827; 2828) ")"
1502 R_PAREN@[2828; 2829) 1502 R_PAREN@[2828; 2829) ")"
1503 SEMI@[2829; 2830) 1503 SEMI@[2829; 2830) ";"
1504 WHITESPACE@[2830; 2831) 1504 WHITESPACE@[2830; 2831) "\n"
1505 R_CURLY@[2831; 2832) 1505 R_CURLY@[2831; 2832) "}"
1506 WHITESPACE@[2832; 2834) 1506 WHITESPACE@[2832; 2834) "\n\n"
1507 FN_DEF@[2834; 2906) 1507 FN_DEF@[2834; 2906)
1508 FN_KW@[2834; 2836) 1508 FN_KW@[2834; 2836) "fn"
1509 WHITESPACE@[2836; 2837) 1509 WHITESPACE@[2836; 2837) " "
1510 NAME@[2837; 2842) 1510 NAME@[2837; 2842)
1511 IDENT@[2837; 2842) "union" 1511 IDENT@[2837; 2842) "union"
1512 PARAM_LIST@[2842; 2844) 1512 PARAM_LIST@[2842; 2844)
1513 L_PAREN@[2842; 2843) 1513 L_PAREN@[2842; 2843) "("
1514 R_PAREN@[2843; 2844) 1514 R_PAREN@[2843; 2844) ")"
1515 WHITESPACE@[2844; 2845) 1515 WHITESPACE@[2844; 2845) " "
1516 BLOCK@[2845; 2906) 1516 BLOCK@[2845; 2906)
1517 L_CURLY@[2845; 2846) 1517 L_CURLY@[2845; 2846) "{"
1518 WHITESPACE@[2846; 2851) 1518 WHITESPACE@[2846; 2851) "\n "
1519 STRUCT_DEF@[2851; 2904) 1519 STRUCT_DEF@[2851; 2904)
1520 UNION_KW@[2851; 2856) 1520 UNION_KW@[2851; 2856) "union"
1521 WHITESPACE@[2856; 2857) 1521 WHITESPACE@[2856; 2857) " "
1522 NAME@[2857; 2862) 1522 NAME@[2857; 2862)
1523 IDENT@[2857; 2862) "union" 1523 IDENT@[2857; 2862) "union"
1524 TYPE_PARAM_LIST@[2862; 2870) 1524 TYPE_PARAM_LIST@[2862; 2870)
1525 L_ANGLE@[2862; 2863) 1525 L_ANGLE@[2862; 2863) "<"
1526 LIFETIME_PARAM@[2863; 2869) 1526 LIFETIME_PARAM@[2863; 2869)
1527 LIFETIME@[2863; 2869) "'union" 1527 LIFETIME@[2863; 2869) "\'union"
1528 R_ANGLE@[2869; 2870) 1528 R_ANGLE@[2869; 2870) ">"
1529 WHITESPACE@[2870; 2871) 1529 WHITESPACE@[2870; 2871) " "
1530 NAMED_FIELD_DEF_LIST@[2871; 2904) 1530 NAMED_FIELD_DEF_LIST@[2871; 2904)
1531 L_CURLY@[2871; 2872) 1531 L_CURLY@[2871; 2872) "{"
1532 WHITESPACE@[2872; 2873) 1532 WHITESPACE@[2872; 2873) " "
1533 NAMED_FIELD_DEF@[2873; 2901) 1533 NAMED_FIELD_DEF@[2873; 2901)
1534 NAME@[2873; 2878) 1534 NAME@[2873; 2878)
1535 IDENT@[2873; 2878) "union" 1535 IDENT@[2873; 2878) "union"
1536 COLON@[2878; 2879) 1536 COLON@[2878; 2879) ":"
1537 WHITESPACE@[2879; 2880) 1537 WHITESPACE@[2879; 2880) " "
1538 REFERENCE_TYPE@[2880; 2901) 1538 REFERENCE_TYPE@[2880; 2901)
1539 AMP@[2880; 2881) 1539 AMP@[2880; 2881) "&"
1540 LIFETIME@[2881; 2887) "'union" 1540 LIFETIME@[2881; 2887) "\'union"
1541 WHITESPACE@[2887; 2888) 1541 WHITESPACE@[2887; 2888) " "
1542 PATH_TYPE@[2888; 2901) 1542 PATH_TYPE@[2888; 2901)
1543 PATH@[2888; 2901) 1543 PATH@[2888; 2901)
1544 PATH_SEGMENT@[2888; 2901) 1544 PATH_SEGMENT@[2888; 2901)
1545 NAME_REF@[2888; 2893) 1545 NAME_REF@[2888; 2893)
1546 IDENT@[2888; 2893) "union" 1546 IDENT@[2888; 2893) "union"
1547 TYPE_ARG_LIST@[2893; 2901) 1547 TYPE_ARG_LIST@[2893; 2901)
1548 L_ANGLE@[2893; 2894) 1548 L_ANGLE@[2893; 2894) "<"
1549 LIFETIME_ARG@[2894; 2900) 1549 LIFETIME_ARG@[2894; 2900)
1550 LIFETIME@[2894; 2900) "'union" 1550 LIFETIME@[2894; 2900) "\'union"
1551 R_ANGLE@[2900; 2901) 1551 R_ANGLE@[2900; 2901) ">"
1552 COMMA@[2901; 2902) 1552 COMMA@[2901; 2902) ","
1553 WHITESPACE@[2902; 2903) 1553 WHITESPACE@[2902; 2903) " "
1554 R_CURLY@[2903; 2904) 1554 R_CURLY@[2903; 2904) "}"
1555 WHITESPACE@[2904; 2905) 1555 WHITESPACE@[2904; 2905) "\n"
1556 R_CURLY@[2905; 2906) 1556 R_CURLY@[2905; 2906) "}"
1557 WHITESPACE@[2906; 2908) 1557 WHITESPACE@[2906; 2908) "\n\n"
1558 FN_DEF@[2908; 3042) 1558 FN_DEF@[2908; 3042)
1559 FN_KW@[2908; 2910) 1559 FN_KW@[2908; 2910) "fn"
1560 WHITESPACE@[2910; 2911) 1560 WHITESPACE@[2910; 2911) " "
1561 NAME@[2911; 2929) 1561 NAME@[2911; 2929)
1562 IDENT@[2911; 2929) "special_characters" 1562 IDENT@[2911; 2929) "special_characters"
1563 PARAM_LIST@[2929; 2931) 1563 PARAM_LIST@[2929; 2931)
1564 L_PAREN@[2929; 2930) 1564 L_PAREN@[2929; 2930) "("
1565 R_PAREN@[2930; 2931) 1565 R_PAREN@[2930; 2931) ")"
1566 WHITESPACE@[2931; 2932) 1566 WHITESPACE@[2931; 2932) " "
1567 BLOCK@[2932; 3042) 1567 BLOCK@[2932; 3042)
1568 L_CURLY@[2932; 2933) 1568 L_CURLY@[2932; 2933) "{"
1569 WHITESPACE@[2933; 2938) 1569 WHITESPACE@[2933; 2938) "\n "
1570 LET_STMT@[2938; 3021) 1570 LET_STMT@[2938; 3021)
1571 LET_KW@[2938; 2941) 1571 LET_KW@[2938; 2941) "let"
1572 WHITESPACE@[2941; 2942) 1572 WHITESPACE@[2941; 2942) " "
1573 BIND_PAT@[2942; 2945) 1573 BIND_PAT@[2942; 2945)
1574 NAME@[2942; 2945) 1574 NAME@[2942; 2945)
1575 IDENT@[2942; 2945) "val" 1575 IDENT@[2942; 2945) "val"
1576 WHITESPACE@[2945; 2946) 1576 WHITESPACE@[2945; 2946) " "
1577 EQ@[2946; 2947) 1577 EQ@[2946; 2947) "="
1578 WHITESPACE@[2947; 2948) 1578 WHITESPACE@[2947; 2948) " "
1579 PREFIX_EXPR@[2948; 3013) 1579 PREFIX_EXPR@[2948; 3013)
1580 EXCL@[2948; 2949) 1580 EXCL@[2948; 2949) "!"
1581 PAREN_EXPR@[2949; 3013) 1581 PAREN_EXPR@[2949; 3013)
1582 L_PAREN@[2949; 2950) 1582 L_PAREN@[2949; 2950) "("
1583 BIN_EXPR@[2950; 3012) 1583 BIN_EXPR@[2950; 3012)
1584 CALL_EXPR@[2950; 2995) 1584 CALL_EXPR@[2950; 2995)
1585 PAREN_EXPR@[2950; 2971) 1585 PAREN_EXPR@[2950; 2971)
1586 L_PAREN@[2950; 2951) 1586 L_PAREN@[2950; 2951) "("
1587 LAMBDA_EXPR@[2951; 2970) 1587 LAMBDA_EXPR@[2951; 2970)
1588 PARAM_LIST@[2951; 2968) 1588 PARAM_LIST@[2951; 2968)
1589 PIPE@[2951; 2952) 1589 PIPE@[2951; 2952) "|"
1590 PARAM@[2952; 2962) 1590 PARAM@[2952; 2962)
1591 TUPLE_PAT@[2952; 2956) 1591 TUPLE_PAT@[2952; 2956)
1592 L_PAREN@[2952; 2953) 1592 L_PAREN@[2952; 2953) "("
1593 DOTDOT@[2953; 2955) 1593 DOTDOT@[2953; 2955) ".."
1594 R_PAREN@[2955; 2956) 1594 R_PAREN@[2955; 2956) ")"
1595 COLON@[2956; 2957) 1595 COLON@[2956; 2957) ":"
1596 TUPLE_TYPE@[2957; 2962) 1596 TUPLE_TYPE@[2957; 2962)
1597 L_PAREN@[2957; 2958) 1597 L_PAREN@[2957; 2958) "("
1598 PLACEHOLDER_TYPE@[2958; 2959) 1598 PLACEHOLDER_TYPE@[2958; 2959)
1599 UNDERSCORE@[2958; 2959) 1599 UNDERSCORE@[2958; 2959) "_"
1600 COMMA@[2959; 2960) 1600 COMMA@[2959; 2960) ","
1601 PLACEHOLDER_TYPE@[2960; 2961) 1601 PLACEHOLDER_TYPE@[2960; 2961)
1602 UNDERSCORE@[2960; 2961) 1602 UNDERSCORE@[2960; 2961) "_"
1603 R_PAREN@[2961; 2962) 1603 R_PAREN@[2961; 2962) ")"
1604 COMMA@[2962; 2963) 1604 COMMA@[2962; 2963) ","
1605 PARAM@[2963; 2967) 1605 PARAM@[2963; 2967)
1606 BIND_PAT@[2963; 2967) 1606 BIND_PAT@[2963; 2967)
1607 NAME@[2963; 2965) 1607 NAME@[2963; 2965)
1608 IDENT@[2963; 2965) "__" 1608 IDENT@[2963; 2965) "__"
1609 AT@[2965; 2966) 1609 AT@[2965; 2966) "@"
1610 PLACEHOLDER_PAT@[2966; 2967) 1610 PLACEHOLDER_PAT@[2966; 2967)
1611 UNDERSCORE@[2966; 2967) 1611 UNDERSCORE@[2966; 2967) "_"
1612 PIPE@[2967; 2968) 1612 PIPE@[2967; 2968) "|"
1613 PATH_EXPR@[2968; 2970) 1613 PATH_EXPR@[2968; 2970)
1614 PATH@[2968; 2970) 1614 PATH@[2968; 2970)
1615 PATH_SEGMENT@[2968; 2970) 1615 PATH_SEGMENT@[2968; 2970)
1616 NAME_REF@[2968; 2970) 1616 NAME_REF@[2968; 2970)
1617 IDENT@[2968; 2970) "__" 1617 IDENT@[2968; 2970) "__"
1618 R_PAREN@[2970; 2971) 1618 R_PAREN@[2970; 2971) ")"
1619 ARG_LIST@[2971; 2995) 1619 ARG_LIST@[2971; 2995)
1620 L_PAREN@[2971; 2972) 1620 L_PAREN@[2971; 2972) "("
1621 TUPLE_EXPR@[2972; 2987) 1621 TUPLE_EXPR@[2972; 2987)
1622 L_PAREN@[2972; 2973) 1622 L_PAREN@[2972; 2973) "("
1623 REF_EXPR@[2973; 2979) 1623 REF_EXPR@[2973; 2979)
1624 AMP@[2973; 2974) 1624 AMP@[2973; 2974) "&"
1625 PREFIX_EXPR@[2974; 2979) 1625 PREFIX_EXPR@[2974; 2979)
1626 STAR@[2974; 2975) 1626 STAR@[2974; 2975) "*"
1627 LITERAL@[2975; 2979) 1627 LITERAL@[2975; 2979)
1628 STRING@[2975; 2979) 1628 STRING@[2975; 2979) "\"\\\\\""
1629 COMMA@[2979; 2980) 1629 COMMA@[2979; 2980) ","
1630 LITERAL@[2980; 2986) 1630 LITERAL@[2980; 2986)
1631 CHAR@[2980; 2986) 1631 CHAR@[2980; 2986) "\'🤔\'"
1632 R_PAREN@[2986; 2987) 1632 R_PAREN@[2986; 2987) ")"
1633 COMMENT@[2987; 2991) 1633 COMMENT@[2987; 2991) "/**/"
1634 COMMA@[2991; 2992) 1634 COMMA@[2991; 2992) ","
1635 BLOCK_EXPR@[2992; 2994) 1635 BLOCK_EXPR@[2992; 2994)
1636 BLOCK@[2992; 2994) 1636 BLOCK@[2992; 2994)
1637 L_CURLY@[2992; 2993) 1637 L_CURLY@[2992; 2993) "{"
1638 R_CURLY@[2993; 2994) 1638 R_CURLY@[2993; 2994) "}"
1639 R_PAREN@[2994; 2995) 1639 R_PAREN@[2994; 2995) ")"
1640 EQEQ@[2995; 2997) 1640 EQEQ@[2995; 2997) "=="
1641 BLOCK_EXPR@[2997; 3012) 1641 BLOCK_EXPR@[2997; 3012)
1642 BLOCK@[2997; 3012) 1642 BLOCK@[2997; 3012)
1643 L_CURLY@[2997; 2998) 1643 L_CURLY@[2997; 2998) "{"
1644 EXPR_STMT@[2998; 3011) 1644 EXPR_STMT@[2998; 3011)
1645 REF_EXPR@[2998; 3010) 1645 REF_EXPR@[2998; 3010)
1646 AMP@[2998; 2999) 1646 AMP@[2998; 2999) "&"
1647 INDEX_EXPR@[2999; 3010) 1647 INDEX_EXPR@[2999; 3010)
1648 ARRAY_EXPR@[2999; 3006) 1648 ARRAY_EXPR@[2999; 3006)
1649 L_BRACK@[2999; 3000) 1649 L_BRACK@[2999; 3000) "["
1650 RANGE_EXPR@[3000; 3005) 1650 RANGE_EXPR@[3000; 3005)
1651 DOTDOTEQ@[3000; 3003) 1651 DOTDOTEQ@[3000; 3003) "..="
1652 RANGE_EXPR@[3003; 3005) 1652 RANGE_EXPR@[3003; 3005)
1653 DOTDOT@[3003; 3005) 1653 DOTDOT@[3003; 3005) ".."
1654 R_BRACK@[3005; 3006) 1654 R_BRACK@[3005; 3006) "]"
1655 L_BRACK@[3006; 3007) 1655 L_BRACK@[3006; 3007) "["
1656 RANGE_EXPR@[3007; 3009) 1656 RANGE_EXPR@[3007; 3009)
1657 DOTDOT@[3007; 3009) 1657 DOTDOT@[3007; 3009) ".."
1658 R_BRACK@[3009; 3010) 1658 R_BRACK@[3009; 3010) "]"
1659 SEMI@[3010; 3011) 1659 SEMI@[3010; 3011) ";"
1660 R_CURLY@[3011; 3012) 1660 R_CURLY@[3011; 3012) "}"
1661 R_PAREN@[3012; 3013) 1661 R_PAREN@[3012; 3013) ")"
1662 COMMENT@[3013; 3015) 1662 COMMENT@[3013; 3015) "//"
1663 WHITESPACE@[3015; 3020) 1663 WHITESPACE@[3015; 3020) "\n "
1664 SEMI@[3020; 3021) 1664 SEMI@[3020; 3021) ";"
1665 WHITESPACE@[3021; 3026) 1665 WHITESPACE@[3021; 3026) "\n "
1666 EXPR_STMT@[3026; 3040) 1666 EXPR_STMT@[3026; 3040)
1667 MACRO_CALL@[3026; 3039) 1667 MACRO_CALL@[3026; 3039)
1668 PATH@[3026; 3032) 1668 PATH@[3026; 3032)
1669 PATH_SEGMENT@[3026; 3032) 1669 PATH_SEGMENT@[3026; 3032)
1670 NAME_REF@[3026; 3032) 1670 NAME_REF@[3026; 3032)
1671 IDENT@[3026; 3032) "assert" 1671 IDENT@[3026; 3032) "assert"
1672 EXCL@[3032; 3033) 1672 EXCL@[3032; 3033) "!"
1673 TOKEN_TREE@[3033; 3039) 1673 TOKEN_TREE@[3033; 3039)
1674 L_PAREN@[3033; 3034) 1674 L_PAREN@[3033; 3034) "("
1675 EXCL@[3034; 3035) 1675 EXCL@[3034; 3035) "!"
1676 IDENT@[3035; 3038) "val" 1676 IDENT@[3035; 3038) "val"
1677 R_PAREN@[3038; 3039) 1677 R_PAREN@[3038; 3039) ")"
1678 SEMI@[3039; 3040) 1678 SEMI@[3039; 3040) ";"
1679 WHITESPACE@[3040; 3041) 1679 WHITESPACE@[3040; 3041) "\n"
1680 R_CURLY@[3041; 3042) 1680 R_CURLY@[3041; 3042) "}"
1681 WHITESPACE@[3042; 3044) 1681 WHITESPACE@[3042; 3044) "\n\n"
1682 FN_DEF@[3044; 3514) 1682 FN_DEF@[3044; 3514)
1683 FN_KW@[3044; 3046) 1683 FN_KW@[3044; 3046) "fn"
1684 WHITESPACE@[3046; 3047) 1684 WHITESPACE@[3046; 3047) " "
1685 NAME@[3047; 3057) 1685 NAME@[3047; 3057)
1686 IDENT@[3047; 3057) "punch_card" 1686 IDENT@[3047; 3057) "punch_card"
1687 PARAM_LIST@[3057; 3059) 1687 PARAM_LIST@[3057; 3059)
1688 L_PAREN@[3057; 3058) 1688 L_PAREN@[3057; 3058) "("
1689 R_PAREN@[3058; 3059) 1689 R_PAREN@[3058; 3059) ")"
1690 WHITESPACE@[3059; 3060) 1690 WHITESPACE@[3059; 3060) " "
1691 RET_TYPE@[3060; 3083) 1691 RET_TYPE@[3060; 3083)
1692 THIN_ARROW@[3060; 3062) 1692 THIN_ARROW@[3060; 3062) "->"
1693 WHITESPACE@[3062; 3063) 1693 WHITESPACE@[3062; 3063) " "
1694 IMPL_TRAIT_TYPE@[3063; 3083) 1694 IMPL_TRAIT_TYPE@[3063; 3083)
1695 IMPL_KW@[3063; 3067) 1695 IMPL_KW@[3063; 3067) "impl"
1696 WHITESPACE@[3067; 3068) 1696 WHITESPACE@[3067; 3068) " "
1697 PATH_TYPE@[3068; 3083) 1697 TYPE_BOUND_LIST@[3068; 3083)
1698 PATH@[3068; 3083) 1698 TYPE_BOUND@[3068; 3083)
1699 PATH@[3068; 3076) 1699 PATH_TYPE@[3068; 3083)
1700 PATH@[3068; 3071) 1700 PATH@[3068; 3083)
1701 PATH_SEGMENT@[3068; 3071) 1701 PATH@[3068; 3076)
1702 NAME_REF@[3068; 3071) 1702 PATH@[3068; 3071)
1703 IDENT@[3068; 3071) "std" 1703 PATH_SEGMENT@[3068; 3071)
1704 COLONCOLON@[3071; 3073) 1704 NAME_REF@[3068; 3071)
1705 PATH_SEGMENT@[3073; 3076) 1705 IDENT@[3068; 3071) "std"
1706 NAME_REF@[3073; 3076) 1706 COLONCOLON@[3071; 3073) "::"
1707 IDENT@[3073; 3076) "fmt" 1707 PATH_SEGMENT@[3073; 3076)
1708 COLONCOLON@[3076; 3078) 1708 NAME_REF@[3073; 3076)
1709 PATH_SEGMENT@[3078; 3083) 1709 IDENT@[3073; 3076) "fmt"
1710 NAME_REF@[3078; 3083) 1710 COLONCOLON@[3076; 3078) "::"
1711 IDENT@[3078; 3083) "Debug" 1711 PATH_SEGMENT@[3078; 3083)
1712 WHITESPACE@[3083; 3084) 1712 NAME_REF@[3078; 3083)
1713 IDENT@[3078; 3083) "Debug"
1714 WHITESPACE@[3083; 3084) " "
1713 BLOCK@[3084; 3514) 1715 BLOCK@[3084; 3514)
1714 L_CURLY@[3084; 3085) 1716 L_CURLY@[3084; 3085) "{"
1715 WHITESPACE@[3085; 3090) 1717 WHITESPACE@[3085; 3090) "\n "
1716 RANGE_EXPR@[3090; 3512) 1718 RANGE_EXPR@[3090; 3512)
1717 DOTDOTEQ@[3090; 3093) 1719 DOTDOTEQ@[3090; 3093) "..="
1718 RANGE_EXPR@[3093; 3512) 1720 RANGE_EXPR@[3093; 3512)
1719 DOTDOTEQ@[3093; 3096) 1721 DOTDOTEQ@[3093; 3096) "..="
1720 RANGE_EXPR@[3096; 3512) 1722 RANGE_EXPR@[3096; 3512)
1721 DOTDOT@[3096; 3098) 1723 DOTDOT@[3096; 3098) ".."
1722 WHITESPACE@[3098; 3099) 1724 WHITESPACE@[3098; 3099) " "
1723 RANGE_EXPR@[3099; 3512) 1725 RANGE_EXPR@[3099; 3512)
1724 DOTDOT@[3099; 3101) 1726 DOTDOT@[3099; 3101) ".."
1725 WHITESPACE@[3101; 3105) 1727 WHITESPACE@[3101; 3105) " "
1726 RANGE_EXPR@[3105; 3512) 1728 RANGE_EXPR@[3105; 3512)
1727 DOTDOT@[3105; 3107) 1729 DOTDOT@[3105; 3107) ".."
1728 WHITESPACE@[3107; 3108) 1730 WHITESPACE@[3107; 3108) " "
1729 RANGE_EXPR@[3108; 3512) 1731 RANGE_EXPR@[3108; 3512)
1730 DOTDOT@[3108; 3110) 1732 DOTDOT@[3108; 3110) ".."
1731 WHITESPACE@[3110; 3111) 1733 WHITESPACE@[3110; 3111) " "
1732 RANGE_EXPR@[3111; 3512) 1734 RANGE_EXPR@[3111; 3512)
1733 DOTDOT@[3111; 3113) 1735 DOTDOT@[3111; 3113) ".."
1734 WHITESPACE@[3113; 3114) 1736 WHITESPACE@[3113; 3114) " "
1735 RANGE_EXPR@[3114; 3512) 1737 RANGE_EXPR@[3114; 3512)
1736 DOTDOT@[3114; 3116) 1738 DOTDOT@[3114; 3116) ".."
1737 WHITESPACE@[3116; 3120) 1739 WHITESPACE@[3116; 3120) " "
1738 RANGE_EXPR@[3120; 3512) 1740 RANGE_EXPR@[3120; 3512)
1739 DOTDOT@[3120; 3122) 1741 DOTDOT@[3120; 3122) ".."
1740 WHITESPACE@[3122; 3123) 1742 WHITESPACE@[3122; 3123) " "
1741 RANGE_EXPR@[3123; 3512) 1743 RANGE_EXPR@[3123; 3512)
1742 DOTDOT@[3123; 3125) 1744 DOTDOT@[3123; 3125) ".."
1743 WHITESPACE@[3125; 3126) 1745 WHITESPACE@[3125; 3126) " "
1744 RANGE_EXPR@[3126; 3512) 1746 RANGE_EXPR@[3126; 3512)
1745 DOTDOT@[3126; 3128) 1747 DOTDOT@[3126; 3128) ".."
1746 WHITESPACE@[3128; 3129) 1748 WHITESPACE@[3128; 3129) " "
1747 RANGE_EXPR@[3129; 3512) 1749 RANGE_EXPR@[3129; 3512)
1748 DOTDOT@[3129; 3131) 1750 DOTDOT@[3129; 3131) ".."
1749 WHITESPACE@[3131; 3135) 1751 WHITESPACE@[3131; 3135) " "
1750 RANGE_EXPR@[3135; 3512) 1752 RANGE_EXPR@[3135; 3512)
1751 DOTDOT@[3135; 3137) 1753 DOTDOT@[3135; 3137) ".."
1752 WHITESPACE@[3137; 3138) 1754 WHITESPACE@[3137; 3138) " "
1753 RANGE_EXPR@[3138; 3512) 1755 RANGE_EXPR@[3138; 3512)
1754 DOTDOTEQ@[3138; 3141) 1756 DOTDOTEQ@[3138; 3141) "..="
1755 RANGE_EXPR@[3141; 3512) 1757 RANGE_EXPR@[3141; 3512)
1756 DOTDOT@[3141; 3143) 1758 DOTDOT@[3141; 3143) ".."
1757 WHITESPACE@[3143; 3144) 1759 WHITESPACE@[3143; 3144) " "
1758 RANGE_EXPR@[3144; 3512) 1760 RANGE_EXPR@[3144; 3512)
1759 DOTDOT@[3144; 3146) 1761 DOTDOT@[3144; 3146) ".."
1760 WHITESPACE@[3146; 3151) 1762 WHITESPACE@[3146; 3151) "\n "
1761 RANGE_EXPR@[3151; 3512) 1763 RANGE_EXPR@[3151; 3512)
1762 DOTDOTEQ@[3151; 3154) 1764 DOTDOTEQ@[3151; 3154) "..="
1763 RANGE_EXPR@[3154; 3512) 1765 RANGE_EXPR@[3154; 3512)
1764 DOTDOT@[3154; 3156) 1766 DOTDOT@[3154; 3156) ".."
1765 WHITESPACE@[3156; 3157) 1767 WHITESPACE@[3156; 3157) " "
1766 RANGE_EXPR@[3157; 3512) 1768 RANGE_EXPR@[3157; 3512)
1767 DOTDOTEQ@[3157; 3160) 1769 DOTDOTEQ@[3157; 3160) "..="
1768 RANGE_EXPR@[3160; 3512) 1770 RANGE_EXPR@[3160; 3512)
1769 DOTDOT@[3160; 3162) 1771 DOTDOT@[3160; 3162) ".."
1770 WHITESPACE@[3162; 3166) 1772 WHITESPACE@[3162; 3166) " "
1771 RANGE_EXPR@[3166; 3512) 1773 RANGE_EXPR@[3166; 3512)
1772 DOTDOT@[3166; 3168) 1774 DOTDOT@[3166; 3168) ".."
1773 WHITESPACE@[3168; 3169) 1775 WHITESPACE@[3168; 3169) " "
1774 RANGE_EXPR@[3169; 3512) 1776 RANGE_EXPR@[3169; 3512)
1775 DOTDOT@[3169; 3171) 1777 DOTDOT@[3169; 3171) ".."
1776 WHITESPACE@[3171; 3172) 1778 WHITESPACE@[3171; 3172) " "
1777 RANGE_EXPR@[3172; 3512) 1779 RANGE_EXPR@[3172; 3512)
1778 DOTDOT@[3172; 3174) 1780 DOTDOT@[3172; 3174) ".."
1779 WHITESPACE@[3174; 3175) 1781 WHITESPACE@[3174; 3175) " "
1780 RANGE_EXPR@[3175; 3512) 1782 RANGE_EXPR@[3175; 3512)
1781 DOTDOT@[3175; 3177) 1783 DOTDOT@[3175; 3177) ".."
1782 WHITESPACE@[3177; 3181) 1784 WHITESPACE@[3177; 3181) " "
1783 RANGE_EXPR@[3181; 3512) 1785 RANGE_EXPR@[3181; 3512)
1784 DOTDOT@[3181; 3183) 1786 DOTDOT@[3181; 3183) ".."
1785 WHITESPACE@[3183; 3184) 1787 WHITESPACE@[3183; 3184) " "
1786 RANGE_EXPR@[3184; 3512) 1788 RANGE_EXPR@[3184; 3512)
1787 DOTDOT@[3184; 3186) 1789 DOTDOT@[3184; 3186) ".."
1788 WHITESPACE@[3186; 3187) 1790 WHITESPACE@[3186; 3187) " "
1789 RANGE_EXPR@[3187; 3512) 1791 RANGE_EXPR@[3187; 3512)
1790 DOTDOT@[3187; 3189) 1792 DOTDOT@[3187; 3189) ".."
1791 WHITESPACE@[3189; 3190) 1793 WHITESPACE@[3189; 3190) " "
1792 RANGE_EXPR@[3190; 3512) 1794 RANGE_EXPR@[3190; 3512)
1793 DOTDOT@[3190; 3192) 1795 DOTDOT@[3190; 3192) ".."
1794 WHITESPACE@[3192; 3196) 1796 WHITESPACE@[3192; 3196) " "
1795 RANGE_EXPR@[3196; 3512) 1797 RANGE_EXPR@[3196; 3512)
1796 DOTDOTEQ@[3196; 3199) 1798 DOTDOTEQ@[3196; 3199) "..="
1797 RANGE_EXPR@[3199; 3512) 1799 RANGE_EXPR@[3199; 3512)
1798 DOTDOTEQ@[3199; 3202) 1800 DOTDOTEQ@[3199; 3202) "..="
1799 RANGE_EXPR@[3202; 3512) 1801 RANGE_EXPR@[3202; 3512)
1800 DOTDOTEQ@[3202; 3205) 1802 DOTDOTEQ@[3202; 3205) "..="
1801 RANGE_EXPR@[3205; 3512) 1803 RANGE_EXPR@[3205; 3512)
1802 DOTDOT@[3205; 3207) 1804 DOTDOT@[3205; 3207) ".."
1803 WHITESPACE@[3207; 3212) 1805 WHITESPACE@[3207; 3212) "\n "
1804 RANGE_EXPR@[3212; 3512) 1806 RANGE_EXPR@[3212; 3512)
1805 DOTDOTEQ@[3212; 3215) 1807 DOTDOTEQ@[3212; 3215) "..="
1806 RANGE_EXPR@[3215; 3512) 1808 RANGE_EXPR@[3215; 3512)
1807 DOTDOT@[3215; 3217) 1809 DOTDOT@[3215; 3217) ".."
1808 WHITESPACE@[3217; 3218) 1810 WHITESPACE@[3217; 3218) " "
1809 RANGE_EXPR@[3218; 3512) 1811 RANGE_EXPR@[3218; 3512)
1810 DOTDOTEQ@[3218; 3221) 1812 DOTDOTEQ@[3218; 3221) "..="
1811 RANGE_EXPR@[3221; 3512) 1813 RANGE_EXPR@[3221; 3512)
1812 DOTDOT@[3221; 3223) 1814 DOTDOT@[3221; 3223) ".."
1813 WHITESPACE@[3223; 3227) 1815 WHITESPACE@[3223; 3227) " "
1814 RANGE_EXPR@[3227; 3512) 1816 RANGE_EXPR@[3227; 3512)
1815 DOTDOTEQ@[3227; 3230) 1817 DOTDOTEQ@[3227; 3230) "..="
1816 RANGE_EXPR@[3230; 3512) 1818 RANGE_EXPR@[3230; 3512)
1817 DOTDOT@[3230; 3232) 1819 DOTDOT@[3230; 3232) ".."
1818 WHITESPACE@[3232; 3233) 1820 WHITESPACE@[3232; 3233) " "
1819 RANGE_EXPR@[3233; 3512) 1821 RANGE_EXPR@[3233; 3512)
1820 DOTDOTEQ@[3233; 3236) 1822 DOTDOTEQ@[3233; 3236) "..="
1821 RANGE_EXPR@[3236; 3512) 1823 RANGE_EXPR@[3236; 3512)
1822 DOTDOT@[3236; 3238) 1824 DOTDOT@[3236; 3238) ".."
1823 WHITESPACE@[3238; 3242) 1825 WHITESPACE@[3238; 3242) " "
1824 RANGE_EXPR@[3242; 3512) 1826 RANGE_EXPR@[3242; 3512)
1825 DOTDOT@[3242; 3244) 1827 DOTDOT@[3242; 3244) ".."
1826 WHITESPACE@[3244; 3245) 1828 WHITESPACE@[3244; 3245) " "
1827 RANGE_EXPR@[3245; 3512) 1829 RANGE_EXPR@[3245; 3512)
1828 DOTDOTEQ@[3245; 3248) 1830 DOTDOTEQ@[3245; 3248) "..="
1829 RANGE_EXPR@[3248; 3512) 1831 RANGE_EXPR@[3248; 3512)
1830 DOTDOTEQ@[3248; 3251) 1832 DOTDOTEQ@[3248; 3251) "..="
1831 RANGE_EXPR@[3251; 3512) 1833 RANGE_EXPR@[3251; 3512)
1832 DOTDOT@[3251; 3253) 1834 DOTDOT@[3251; 3253) ".."
1833 WHITESPACE@[3253; 3257) 1835 WHITESPACE@[3253; 3257) " "
1834 RANGE_EXPR@[3257; 3512) 1836 RANGE_EXPR@[3257; 3512)
1835 DOTDOT@[3257; 3259) 1837 DOTDOT@[3257; 3259) ".."
1836 WHITESPACE@[3259; 3260) 1838 WHITESPACE@[3259; 3260) " "
1837 RANGE_EXPR@[3260; 3512) 1839 RANGE_EXPR@[3260; 3512)
1838 DOTDOTEQ@[3260; 3263) 1840 DOTDOTEQ@[3260; 3263) "..="
1839 RANGE_EXPR@[3263; 3512) 1841 RANGE_EXPR@[3263; 3512)
1840 DOTDOT@[3263; 3265) 1842 DOTDOT@[3263; 3265) ".."
1841 WHITESPACE@[3265; 3266) 1843 WHITESPACE@[3265; 3266) " "
1842 RANGE_EXPR@[3266; 3512) 1844 RANGE_EXPR@[3266; 3512)
1843 DOTDOT@[3266; 3268) 1845 DOTDOT@[3266; 3268) ".."
1844 WHITESPACE@[3268; 3273) 1846 WHITESPACE@[3268; 3273) "\n "
1845 RANGE_EXPR@[3273; 3512) 1847 RANGE_EXPR@[3273; 3512)
1846 DOTDOTEQ@[3273; 3276) 1848 DOTDOTEQ@[3273; 3276) "..="
1847 RANGE_EXPR@[3276; 3512) 1849 RANGE_EXPR@[3276; 3512)
1848 DOTDOTEQ@[3276; 3279) 1850 DOTDOTEQ@[3276; 3279) "..="
1849 RANGE_EXPR@[3279; 3512) 1851 RANGE_EXPR@[3279; 3512)
1850 DOTDOT@[3279; 3281) 1852 DOTDOT@[3279; 3281) ".."
1851 WHITESPACE@[3281; 3282) 1853 WHITESPACE@[3281; 3282) " "
1852 RANGE_EXPR@[3282; 3512) 1854 RANGE_EXPR@[3282; 3512)
1853 DOTDOT@[3282; 3284) 1855 DOTDOT@[3282; 3284) ".."
1854 WHITESPACE@[3284; 3288) 1856 WHITESPACE@[3284; 3288) " "
1855 RANGE_EXPR@[3288; 3512) 1857 RANGE_EXPR@[3288; 3512)
1856 DOTDOTEQ@[3288; 3291) 1858 DOTDOTEQ@[3288; 3291) "..="
1857 RANGE_EXPR@[3291; 3512) 1859 RANGE_EXPR@[3291; 3512)
1858 DOTDOT@[3291; 3293) 1860 DOTDOT@[3291; 3293) ".."
1859 WHITESPACE@[3293; 3294) 1861 WHITESPACE@[3293; 3294) " "
1860 RANGE_EXPR@[3294; 3512) 1862 RANGE_EXPR@[3294; 3512)
1861 DOTDOTEQ@[3294; 3297) 1863 DOTDOTEQ@[3294; 3297) "..="
1862 RANGE_EXPR@[3297; 3512) 1864 RANGE_EXPR@[3297; 3512)
1863 DOTDOT@[3297; 3299) 1865 DOTDOT@[3297; 3299) ".."
1864 WHITESPACE@[3299; 3303) 1866 WHITESPACE@[3299; 3303) " "
1865 RANGE_EXPR@[3303; 3512) 1867 RANGE_EXPR@[3303; 3512)
1866 DOTDOTEQ@[3303; 3306) 1868 DOTDOTEQ@[3303; 3306) "..="
1867 RANGE_EXPR@[3306; 3512) 1869 RANGE_EXPR@[3306; 3512)
1868 DOTDOT@[3306; 3308) 1870 DOTDOT@[3306; 3308) ".."
1869 WHITESPACE@[3308; 3309) 1871 WHITESPACE@[3308; 3309) " "
1870 RANGE_EXPR@[3309; 3512) 1872 RANGE_EXPR@[3309; 3512)
1871 DOTDOT@[3309; 3311) 1873 DOTDOT@[3309; 3311) ".."
1872 WHITESPACE@[3311; 3312) 1874 WHITESPACE@[3311; 3312) " "
1873 RANGE_EXPR@[3312; 3512) 1875 RANGE_EXPR@[3312; 3512)
1874 DOTDOT@[3312; 3314) 1876 DOTDOT@[3312; 3314) ".."
1875 WHITESPACE@[3314; 3318) 1877 WHITESPACE@[3314; 3318) " "
1876 RANGE_EXPR@[3318; 3512) 1878 RANGE_EXPR@[3318; 3512)
1877 DOTDOT@[3318; 3320) 1879 DOTDOT@[3318; 3320) ".."
1878 WHITESPACE@[3320; 3321) 1880 WHITESPACE@[3320; 3321) " "
1879 RANGE_EXPR@[3321; 3512) 1881 RANGE_EXPR@[3321; 3512)
1880 DOTDOTEQ@[3321; 3324) 1882 DOTDOTEQ@[3321; 3324) "..="
1881 RANGE_EXPR@[3324; 3512) 1883 RANGE_EXPR@[3324; 3512)
1882 DOTDOT@[3324; 3326) 1884 DOTDOT@[3324; 3326) ".."
1883 WHITESPACE@[3326; 3327) 1885 WHITESPACE@[3326; 3327) " "
1884 RANGE_EXPR@[3327; 3512) 1886 RANGE_EXPR@[3327; 3512)
1885 DOTDOT@[3327; 3329) 1887 DOTDOT@[3327; 3329) ".."
1886 WHITESPACE@[3329; 3334) 1888 WHITESPACE@[3329; 3334) "\n "
1887 RANGE_EXPR@[3334; 3512) 1889 RANGE_EXPR@[3334; 3512)
1888 DOTDOTEQ@[3334; 3337) 1890 DOTDOTEQ@[3334; 3337) "..="
1889 RANGE_EXPR@[3337; 3512) 1891 RANGE_EXPR@[3337; 3512)
1890 DOTDOT@[3337; 3339) 1892 DOTDOT@[3337; 3339) ".."
1891 WHITESPACE@[3339; 3340) 1893 WHITESPACE@[3339; 3340) " "
1892 RANGE_EXPR@[3340; 3512) 1894 RANGE_EXPR@[3340; 3512)
1893 DOTDOTEQ@[3340; 3343) 1895 DOTDOTEQ@[3340; 3343) "..="
1894 RANGE_EXPR@[3343; 3512) 1896 RANGE_EXPR@[3343; 3512)
1895 DOTDOT@[3343; 3345) 1897 DOTDOT@[3343; 3345) ".."
1896 WHITESPACE@[3345; 3349) 1898 WHITESPACE@[3345; 3349) " "
1897 RANGE_EXPR@[3349; 3512) 1899 RANGE_EXPR@[3349; 3512)
1898 DOTDOTEQ@[3349; 3352) 1900 DOTDOTEQ@[3349; 3352) "..="
1899 RANGE_EXPR@[3352; 3512) 1901 RANGE_EXPR@[3352; 3512)
1900 DOTDOT@[3352; 3354) 1902 DOTDOT@[3352; 3354) ".."
1901 WHITESPACE@[3354; 3355) 1903 WHITESPACE@[3354; 3355) " "
1902 RANGE_EXPR@[3355; 3512) 1904 RANGE_EXPR@[3355; 3512)
1903 DOTDOTEQ@[3355; 3358) 1905 DOTDOTEQ@[3355; 3358) "..="
1904 RANGE_EXPR@[3358; 3512) 1906 RANGE_EXPR@[3358; 3512)
1905 DOTDOT@[3358; 3360) 1907 DOTDOT@[3358; 3360) ".."
1906 WHITESPACE@[3360; 3364) 1908 WHITESPACE@[3360; 3364) " "
1907 RANGE_EXPR@[3364; 3512) 1909 RANGE_EXPR@[3364; 3512)
1908 DOTDOT@[3364; 3366) 1910 DOTDOT@[3364; 3366) ".."
1909 WHITESPACE@[3366; 3367) 1911 WHITESPACE@[3366; 3367) " "
1910 RANGE_EXPR@[3367; 3512) 1912 RANGE_EXPR@[3367; 3512)
1911 DOTDOTEQ@[3367; 3370) 1913 DOTDOTEQ@[3367; 3370) "..="
1912 RANGE_EXPR@[3370; 3512) 1914 RANGE_EXPR@[3370; 3512)
1913 DOTDOT@[3370; 3372) 1915 DOTDOT@[3370; 3372) ".."
1914 WHITESPACE@[3372; 3373) 1916 WHITESPACE@[3372; 3373) " "
1915 RANGE_EXPR@[3373; 3512) 1917 RANGE_EXPR@[3373; 3512)
1916 DOTDOT@[3373; 3375) 1918 DOTDOT@[3373; 3375) ".."
1917 WHITESPACE@[3375; 3379) 1919 WHITESPACE@[3375; 3379) " "
1918 RANGE_EXPR@[3379; 3512) 1920 RANGE_EXPR@[3379; 3512)
1919 DOTDOT@[3379; 3381) 1921 DOTDOT@[3379; 3381) ".."
1920 WHITESPACE@[3381; 3382) 1922 WHITESPACE@[3381; 3382) " "
1921 RANGE_EXPR@[3382; 3512) 1923 RANGE_EXPR@[3382; 3512)
1922 DOTDOTEQ@[3382; 3385) 1924 DOTDOTEQ@[3382; 3385) "..="
1923 RANGE_EXPR@[3385; 3512) 1925 RANGE_EXPR@[3385; 3512)
1924 DOTDOT@[3385; 3387) 1926 DOTDOT@[3385; 3387) ".."
1925 WHITESPACE@[3387; 3388) 1927 WHITESPACE@[3387; 3388) " "
1926 RANGE_EXPR@[3388; 3512) 1928 RANGE_EXPR@[3388; 3512)
1927 DOTDOT@[3388; 3390) 1929 DOTDOT@[3388; 3390) ".."
1928 WHITESPACE@[3390; 3395) 1930 WHITESPACE@[3390; 3395) "\n "
1929 RANGE_EXPR@[3395; 3512) 1931 RANGE_EXPR@[3395; 3512)
1930 DOTDOTEQ@[3395; 3398) 1932 DOTDOTEQ@[3395; 3398) "..="
1931 RANGE_EXPR@[3398; 3512) 1933 RANGE_EXPR@[3398; 3512)
1932 DOTDOT@[3398; 3400) 1934 DOTDOT@[3398; 3400) ".."
1933 WHITESPACE@[3400; 3401) 1935 WHITESPACE@[3400; 3401) " "
1934 RANGE_EXPR@[3401; 3512) 1936 RANGE_EXPR@[3401; 3512)
1935 DOTDOTEQ@[3401; 3404) 1937 DOTDOTEQ@[3401; 3404) "..="
1936 RANGE_EXPR@[3404; 3512) 1938 RANGE_EXPR@[3404; 3512)
1937 DOTDOT@[3404; 3406) 1939 DOTDOT@[3404; 3406) ".."
1938 WHITESPACE@[3406; 3410) 1940 WHITESPACE@[3406; 3410) " "
1939 RANGE_EXPR@[3410; 3512) 1941 RANGE_EXPR@[3410; 3512)
1940 DOTDOTEQ@[3410; 3413) 1942 DOTDOTEQ@[3410; 3413) "..="
1941 RANGE_EXPR@[3413; 3512) 1943 RANGE_EXPR@[3413; 3512)
1942 DOTDOT@[3413; 3415) 1944 DOTDOT@[3413; 3415) ".."
1943 WHITESPACE@[3415; 3416) 1945 WHITESPACE@[3415; 3416) " "
1944 RANGE_EXPR@[3416; 3512) 1946 RANGE_EXPR@[3416; 3512)
1945 DOTDOTEQ@[3416; 3419) 1947 DOTDOTEQ@[3416; 3419) "..="
1946 RANGE_EXPR@[3419; 3512) 1948 RANGE_EXPR@[3419; 3512)
1947 DOTDOT@[3419; 3421) 1949 DOTDOT@[3419; 3421) ".."
1948 WHITESPACE@[3421; 3425) 1950 WHITESPACE@[3421; 3425) " "
1949 RANGE_EXPR@[3425; 3512) 1951 RANGE_EXPR@[3425; 3512)
1950 DOTDOT@[3425; 3427) 1952 DOTDOT@[3425; 3427) ".."
1951 WHITESPACE@[3427; 3428) 1953 WHITESPACE@[3427; 3428) " "
1952 RANGE_EXPR@[3428; 3512) 1954 RANGE_EXPR@[3428; 3512)
1953 DOTDOT@[3428; 3430) 1955 DOTDOT@[3428; 3430) ".."
1954 WHITESPACE@[3430; 3431) 1956 WHITESPACE@[3430; 3431) " "
1955 RANGE_EXPR@[3431; 3512) 1957 RANGE_EXPR@[3431; 3512)
1956 DOTDOTEQ@[3431; 3434) 1958 DOTDOTEQ@[3431; 3434) "..="
1957 RANGE_EXPR@[3434; 3512) 1959 RANGE_EXPR@[3434; 3512)
1958 DOTDOT@[3434; 3436) 1960 DOTDOT@[3434; 3436) ".."
1959 WHITESPACE@[3436; 3440) 1961 WHITESPACE@[3436; 3440) " "
1960 RANGE_EXPR@[3440; 3512) 1962 RANGE_EXPR@[3440; 3512)
1961 DOTDOT@[3440; 3442) 1963 DOTDOT@[3440; 3442) ".."
1962 WHITESPACE@[3442; 3443) 1964 WHITESPACE@[3442; 3443) " "
1963 RANGE_EXPR@[3443; 3512) 1965 RANGE_EXPR@[3443; 3512)
1964 DOTDOTEQ@[3443; 3446) 1966 DOTDOTEQ@[3443; 3446) "..="
1965 RANGE_EXPR@[3446; 3512) 1967 RANGE_EXPR@[3446; 3512)
1966 DOTDOT@[3446; 3448) 1968 DOTDOT@[3446; 3448) ".."
1967 WHITESPACE@[3448; 3449) 1969 WHITESPACE@[3448; 3449) " "
1968 RANGE_EXPR@[3449; 3512) 1970 RANGE_EXPR@[3449; 3512)
1969 DOTDOT@[3449; 3451) 1971 DOTDOT@[3449; 3451) ".."
1970 WHITESPACE@[3451; 3456) 1972 WHITESPACE@[3451; 3456) "\n "
1971 RANGE_EXPR@[3456; 3512) 1973 RANGE_EXPR@[3456; 3512)
1972 DOTDOTEQ@[3456; 3459) 1974 DOTDOTEQ@[3456; 3459) "..="
1973 RANGE_EXPR@[3459; 3512) 1975 RANGE_EXPR@[3459; 3512)
1974 DOTDOT@[3459; 3461) 1976 DOTDOT@[3459; 3461) ".."
1975 WHITESPACE@[3461; 3462) 1977 WHITESPACE@[3461; 3462) " "
1976 RANGE_EXPR@[3462; 3512) 1978 RANGE_EXPR@[3462; 3512)
1977 DOTDOTEQ@[3462; 3465) 1979 DOTDOTEQ@[3462; 3465) "..="
1978 RANGE_EXPR@[3465; 3512) 1980 RANGE_EXPR@[3465; 3512)
1979 DOTDOT@[3465; 3467) 1981 DOTDOT@[3465; 3467) ".."
1980 WHITESPACE@[3467; 3471) 1982 WHITESPACE@[3467; 3471) " "
1981 RANGE_EXPR@[3471; 3512) 1983 RANGE_EXPR@[3471; 3512)
1982 DOTDOT@[3471; 3473) 1984 DOTDOT@[3471; 3473) ".."
1983 WHITESPACE@[3473; 3474) 1985 WHITESPACE@[3473; 3474) " "
1984 RANGE_EXPR@[3474; 3512) 1986 RANGE_EXPR@[3474; 3512)
1985 DOTDOTEQ@[3474; 3477) 1987 DOTDOTEQ@[3474; 3477) "..="
1986 RANGE_EXPR@[3477; 3512) 1988 RANGE_EXPR@[3477; 3512)
1987 DOTDOTEQ@[3477; 3480) 1989 DOTDOTEQ@[3477; 3480) "..="
1988 RANGE_EXPR@[3480; 3512) 1990 RANGE_EXPR@[3480; 3512)
1989 DOTDOT@[3480; 3482) 1991 DOTDOT@[3480; 3482) ".."
1990 WHITESPACE@[3482; 3486) 1992 WHITESPACE@[3482; 3486) " "
1991 RANGE_EXPR@[3486; 3512) 1993 RANGE_EXPR@[3486; 3512)
1992 DOTDOTEQ@[3486; 3489) 1994 DOTDOTEQ@[3486; 3489) "..="
1993 RANGE_EXPR@[3489; 3512) 1995 RANGE_EXPR@[3489; 3512)
1994 DOTDOTEQ@[3489; 3492) 1996 DOTDOTEQ@[3489; 3492) "..="
1995 RANGE_EXPR@[3492; 3512) 1997 RANGE_EXPR@[3492; 3512)
1996 DOTDOT@[3492; 3494) 1998 DOTDOT@[3492; 3494) ".."
1997 WHITESPACE@[3494; 3495) 1999 WHITESPACE@[3494; 3495) " "
1998 RANGE_EXPR@[3495; 3512) 2000 RANGE_EXPR@[3495; 3512)
1999 DOTDOT@[3495; 3497) 2001 DOTDOT@[3495; 3497) ".."
2000 WHITESPACE@[3497; 3501) 2002 WHITESPACE@[3497; 3501) " "
2001 RANGE_EXPR@[3501; 3512) 2003 RANGE_EXPR@[3501; 3512)
2002 DOTDOT@[3501; 3503) 2004 DOTDOT@[3501; 3503) ".."
2003 WHITESPACE@[3503; 3504) 2005 WHITESPACE@[3503; 3504) " "
2004 RANGE_EXPR@[3504; 3512) 2006 RANGE_EXPR@[3504; 3512)
2005 DOTDOTEQ@[3504; 3507) 2007 DOTDOTEQ@[3504; 3507) "..="
2006 RANGE_EXPR@[3507; 3512) 2008 RANGE_EXPR@[3507; 3512)
2007 DOTDOT@[3507; 3509) 2009 DOTDOT@[3507; 3509) ".."
2008 WHITESPACE@[3509; 3510) 2010 WHITESPACE@[3509; 3510) " "
2009 RANGE_EXPR@[3510; 3512) 2011 RANGE_EXPR@[3510; 3512)
2010 DOTDOT@[3510; 3512) 2012 DOTDOT@[3510; 3512) ".."
2011 WHITESPACE@[3512; 3513) 2013 WHITESPACE@[3512; 3513) "\n"
2012 R_CURLY@[3513; 3514) 2014 R_CURLY@[3513; 3514) "}"
2013 WHITESPACE@[3514; 3516) 2015 WHITESPACE@[3514; 3516) "\n\n"
2014 FN_DEF@[3516; 3552) 2016 FN_DEF@[3516; 3552)
2015 FN_KW@[3516; 3518) 2017 FN_KW@[3516; 3518) "fn"
2016 WHITESPACE@[3518; 3519) 2018 WHITESPACE@[3518; 3519) " "
2017 NAME@[3519; 3525) 2019 NAME@[3519; 3525)
2018 IDENT@[3519; 3525) "ktulhu" 2020 IDENT@[3519; 3525) "ktulhu"
2019 PARAM_LIST@[3525; 3527) 2021 PARAM_LIST@[3525; 3527)
2020 L_PAREN@[3525; 3526) 2022 L_PAREN@[3525; 3526) "("
2021 R_PAREN@[3526; 3527) 2023 R_PAREN@[3526; 3527) ")"
2022 WHITESPACE@[3527; 3528) 2024 WHITESPACE@[3527; 3528) " "
2023 BLOCK@[3528; 3552) 2025 BLOCK@[3528; 3552)
2024 L_CURLY@[3528; 3529) 2026 L_CURLY@[3528; 3529) "{"
2025 WHITESPACE@[3529; 3534) 2027 WHITESPACE@[3529; 3534) "\n "
2026 SEMI@[3534; 3535) 2028 SEMI@[3534; 3535) ";"
2027 SEMI@[3535; 3536) 2029 SEMI@[3535; 3536) ";"
2028 SEMI@[3536; 3537) 2030 SEMI@[3536; 3537) ";"
2029 EXPR_STMT@[3537; 3540) 2031 EXPR_STMT@[3537; 3540)
2030 TUPLE_EXPR@[3537; 3539) 2032 TUPLE_EXPR@[3537; 3539)
2031 L_PAREN@[3537; 3538) 2033 L_PAREN@[3537; 3538) "("
2032 R_PAREN@[3538; 3539) 2034 R_PAREN@[3538; 3539) ")"
2033 SEMI@[3539; 3540) 2035 SEMI@[3539; 3540) ";"
2034 SEMI@[3540; 3541) 2036 SEMI@[3540; 3541) ";"
2035 SEMI@[3541; 3542) 2037 SEMI@[3541; 3542) ";"
2036 SEMI@[3542; 3543) 2038 SEMI@[3542; 3543) ";"
2037 SEMI@[3543; 3544) 2039 SEMI@[3543; 3544) ";"
2038 SEMI@[3544; 3545) 2040 SEMI@[3544; 3545) ";"
2039 SEMI@[3545; 3546) 2041 SEMI@[3545; 3546) ";"
2040 SEMI@[3546; 3547) 2042 SEMI@[3546; 3547) ";"
2041 SEMI@[3547; 3548) 2043 SEMI@[3547; 3548) ";"
2042 TUPLE_EXPR@[3548; 3550) 2044 TUPLE_EXPR@[3548; 3550)
2043 L_PAREN@[3548; 3549) 2045 L_PAREN@[3548; 3549) "("
2044 R_PAREN@[3549; 3550) 2046 R_PAREN@[3549; 3550) ")"
2045 WHITESPACE@[3550; 3551) 2047 WHITESPACE@[3550; 3551) "\n"
2046 R_CURLY@[3551; 3552) 2048 R_CURLY@[3551; 3552) "}"
2047 WHITESPACE@[3552; 3554) 2049 WHITESPACE@[3552; 3554) "\n\n"
2048 FN_DEF@[3554; 3812) 2050 FN_DEF@[3554; 3812)
2049 VISIBILITY@[3554; 3557) 2051 VISIBILITY@[3554; 3557)
2050 PUB_KW@[3554; 3557) 2052 PUB_KW@[3554; 3557) "pub"
2051 WHITESPACE@[3557; 3558) 2053 WHITESPACE@[3557; 3558) " "
2052 FN_KW@[3558; 3560) 2054 FN_KW@[3558; 3560) "fn"
2053 WHITESPACE@[3560; 3561) 2055 WHITESPACE@[3560; 3561) " "
2054 NAME@[3561; 3565) 2056 NAME@[3561; 3565)
2055 IDENT@[3561; 3565) "main" 2057 IDENT@[3561; 3565) "main"
2056 PARAM_LIST@[3565; 3567) 2058 PARAM_LIST@[3565; 3567)
2057 L_PAREN@[3565; 3566) 2059 L_PAREN@[3565; 3566) "("
2058 R_PAREN@[3566; 3567) 2060 R_PAREN@[3566; 3567) ")"
2059 WHITESPACE@[3567; 3568) 2061 WHITESPACE@[3567; 3568) " "
2060 BLOCK@[3568; 3812) 2062 BLOCK@[3568; 3812)
2061 L_CURLY@[3568; 3569) 2063 L_CURLY@[3568; 3569) "{"
2062 WHITESPACE@[3569; 3574) 2064 WHITESPACE@[3569; 3574) "\n "
2063 EXPR_STMT@[3574; 3584) 2065 EXPR_STMT@[3574; 3584)
2064 CALL_EXPR@[3574; 3583) 2066 CALL_EXPR@[3574; 3583)
2065 PATH_EXPR@[3574; 3581) 2067 PATH_EXPR@[3574; 3581)
@@ -2068,10 +2070,10 @@ SOURCE_FILE@[0; 3813)
2068 NAME_REF@[3574; 3581) 2070 NAME_REF@[3574; 3581)
2069 IDENT@[3574; 3581) "strange" 2071 IDENT@[3574; 3581) "strange"
2070 ARG_LIST@[3581; 3583) 2072 ARG_LIST@[3581; 3583)
2071 L_PAREN@[3581; 3582) 2073 L_PAREN@[3581; 3582) "("
2072 R_PAREN@[3582; 3583) 2074 R_PAREN@[3582; 3583) ")"
2073 SEMI@[3583; 3584) 2075 SEMI@[3583; 3584) ";"
2074 WHITESPACE@[3584; 3589) 2076 WHITESPACE@[3584; 3589) "\n "
2075 EXPR_STMT@[3589; 3597) 2077 EXPR_STMT@[3589; 3597)
2076 CALL_EXPR@[3589; 3596) 2078 CALL_EXPR@[3589; 3596)
2077 PATH_EXPR@[3589; 3594) 2079 PATH_EXPR@[3589; 3594)
@@ -2080,10 +2082,10 @@ SOURCE_FILE@[0; 3813)
2080 NAME_REF@[3589; 3594) 2082 NAME_REF@[3589; 3594)
2081 IDENT@[3589; 3594) "funny" 2083 IDENT@[3589; 3594) "funny"
2082 ARG_LIST@[3594; 3596) 2084 ARG_LIST@[3594; 3596)
2083 L_PAREN@[3594; 3595) 2085 L_PAREN@[3594; 3595) "("
2084 R_PAREN@[3595; 3596) 2086 R_PAREN@[3595; 3596) ")"
2085 SEMI@[3596; 3597) 2087 SEMI@[3596; 3597) ";"
2086 WHITESPACE@[3597; 3602) 2088 WHITESPACE@[3597; 3602) "\n "
2087 EXPR_STMT@[3602; 3609) 2089 EXPR_STMT@[3602; 3609)
2088 CALL_EXPR@[3602; 3608) 2090 CALL_EXPR@[3602; 3608)
2089 PATH_EXPR@[3602; 3606) 2091 PATH_EXPR@[3602; 3606)
@@ -2092,10 +2094,10 @@ SOURCE_FILE@[0; 3813)
2092 NAME_REF@[3602; 3606) 2094 NAME_REF@[3602; 3606)
2093 IDENT@[3602; 3606) "what" 2095 IDENT@[3602; 3606) "what"
2094 ARG_LIST@[3606; 3608) 2096 ARG_LIST@[3606; 3608)
2095 L_PAREN@[3606; 3607) 2097 L_PAREN@[3606; 3607) "("
2096 R_PAREN@[3607; 3608) 2098 R_PAREN@[3607; 3608) ")"
2097 SEMI@[3608; 3609) 2099 SEMI@[3608; 3609) ";"
2098 WHITESPACE@[3609; 3614) 2100 WHITESPACE@[3609; 3614) "\n "
2099 EXPR_STMT@[3614; 3628) 2101 EXPR_STMT@[3614; 3628)
2100 CALL_EXPR@[3614; 3627) 2102 CALL_EXPR@[3614; 3627)
2101 PATH_EXPR@[3614; 3625) 2103 PATH_EXPR@[3614; 3625)
@@ -2104,10 +2106,10 @@ SOURCE_FILE@[0; 3813)
2104 NAME_REF@[3614; 3625) 2106 NAME_REF@[3614; 3625)
2105 IDENT@[3614; 3625) "zombiejesus" 2107 IDENT@[3614; 3625) "zombiejesus"
2106 ARG_LIST@[3625; 3627) 2108 ARG_LIST@[3625; 3627)
2107 L_PAREN@[3625; 3626) 2109 L_PAREN@[3625; 3626) "("
2108 R_PAREN@[3626; 3627) 2110 R_PAREN@[3626; 3627) ")"
2109 SEMI@[3627; 3628) 2111 SEMI@[3627; 3628) ";"
2110 WHITESPACE@[3628; 3633) 2112 WHITESPACE@[3628; 3633) "\n "
2111 EXPR_STMT@[3633; 3643) 2113 EXPR_STMT@[3633; 3643)
2112 CALL_EXPR@[3633; 3642) 2114 CALL_EXPR@[3633; 3642)
2113 PATH_EXPR@[3633; 3640) 2115 PATH_EXPR@[3633; 3640)
@@ -2116,10 +2118,10 @@ SOURCE_FILE@[0; 3813)
2116 NAME_REF@[3633; 3640) 2118 NAME_REF@[3633; 3640)
2117 IDENT@[3633; 3640) "notsure" 2119 IDENT@[3633; 3640) "notsure"
2118 ARG_LIST@[3640; 3642) 2120 ARG_LIST@[3640; 3642)
2119 L_PAREN@[3640; 3641) 2121 L_PAREN@[3640; 3641) "("
2120 R_PAREN@[3641; 3642) 2122 R_PAREN@[3641; 3642) ")"
2121 SEMI@[3642; 3643) 2123 SEMI@[3642; 3643) ";"
2122 WHITESPACE@[3643; 3648) 2124 WHITESPACE@[3643; 3648) "\n "
2123 EXPR_STMT@[3648; 3664) 2125 EXPR_STMT@[3648; 3664)
2124 CALL_EXPR@[3648; 3663) 2126 CALL_EXPR@[3648; 3663)
2125 PATH_EXPR@[3648; 3661) 2127 PATH_EXPR@[3648; 3661)
@@ -2128,10 +2130,10 @@ SOURCE_FILE@[0; 3813)
2128 NAME_REF@[3648; 3661) 2130 NAME_REF@[3648; 3661)
2129 IDENT@[3648; 3661) "canttouchthis" 2131 IDENT@[3648; 3661) "canttouchthis"
2130 ARG_LIST@[3661; 3663) 2132 ARG_LIST@[3661; 3663)
2131 L_PAREN@[3661; 3662) 2133 L_PAREN@[3661; 3662) "("
2132 R_PAREN@[3662; 3663) 2134 R_PAREN@[3662; 3663) ")"
2133 SEMI@[3663; 3664) 2135 SEMI@[3663; 3664) ";"
2134 WHITESPACE@[3664; 3669) 2136 WHITESPACE@[3664; 3669) "\n "
2135 EXPR_STMT@[3669; 3681) 2137 EXPR_STMT@[3669; 3681)
2136 CALL_EXPR@[3669; 3680) 2138 CALL_EXPR@[3669; 3680)
2137 PATH_EXPR@[3669; 3678) 2139 PATH_EXPR@[3669; 3678)
@@ -2140,10 +2142,10 @@ SOURCE_FILE@[0; 3813)
2140 NAME_REF@[3669; 3678) 2142 NAME_REF@[3669; 3678)
2141 IDENT@[3669; 3678) "angrydome" 2143 IDENT@[3669; 3678) "angrydome"
2142 ARG_LIST@[3678; 3680) 2144 ARG_LIST@[3678; 3680)
2143 L_PAREN@[3678; 3679) 2145 L_PAREN@[3678; 3679) "("
2144 R_PAREN@[3679; 3680) 2146 R_PAREN@[3679; 3680) ")"
2145 SEMI@[3680; 3681) 2147 SEMI@[3680; 3681) ";"
2146 WHITESPACE@[3681; 3686) 2148 WHITESPACE@[3681; 3686) "\n "
2147 EXPR_STMT@[3686; 3701) 2149 EXPR_STMT@[3686; 3701)
2148 CALL_EXPR@[3686; 3700) 2150 CALL_EXPR@[3686; 3700)
2149 PATH_EXPR@[3686; 3698) 2151 PATH_EXPR@[3686; 3698)
@@ -2152,10 +2154,10 @@ SOURCE_FILE@[0; 3813)
2152 NAME_REF@[3686; 3698) 2154 NAME_REF@[3686; 3698)
2153 IDENT@[3686; 3698) "evil_lincoln" 2155 IDENT@[3686; 3698) "evil_lincoln"
2154 ARG_LIST@[3698; 3700) 2156 ARG_LIST@[3698; 3700)
2155 L_PAREN@[3698; 3699) 2157 L_PAREN@[3698; 3699) "("
2156 R_PAREN@[3699; 3700) 2158 R_PAREN@[3699; 3700) ")"
2157 SEMI@[3700; 3701) 2159 SEMI@[3700; 3701) ";"
2158 WHITESPACE@[3701; 3706) 2160 WHITESPACE@[3701; 3706) "\n "
2159 EXPR_STMT@[3706; 3713) 2161 EXPR_STMT@[3706; 3713)
2160 CALL_EXPR@[3706; 3712) 2162 CALL_EXPR@[3706; 3712)
2161 PATH_EXPR@[3706; 3710) 2163 PATH_EXPR@[3706; 3710)
@@ -2164,10 +2166,10 @@ SOURCE_FILE@[0; 3813)
2164 NAME_REF@[3706; 3710) 2166 NAME_REF@[3706; 3710)
2165 IDENT@[3706; 3710) "dots" 2167 IDENT@[3706; 3710) "dots"
2166 ARG_LIST@[3710; 3712) 2168 ARG_LIST@[3710; 3712)
2167 L_PAREN@[3710; 3711) 2169 L_PAREN@[3710; 3711) "("
2168 R_PAREN@[3711; 3712) 2170 R_PAREN@[3711; 3712) ")"
2169 SEMI@[3712; 3713) 2171 SEMI@[3712; 3713) ";"
2170 WHITESPACE@[3713; 3718) 2172 WHITESPACE@[3713; 3718) "\n "
2171 EXPR_STMT@[3718; 3726) 2173 EXPR_STMT@[3718; 3726)
2172 CALL_EXPR@[3718; 3725) 2174 CALL_EXPR@[3718; 3725)
2173 PATH_EXPR@[3718; 3720) 2175 PATH_EXPR@[3718; 3720)
@@ -2176,12 +2178,12 @@ SOURCE_FILE@[0; 3813)
2176 NAME_REF@[3718; 3720) 2178 NAME_REF@[3718; 3720)
2177 IDENT@[3718; 3720) "u8" 2179 IDENT@[3718; 3720) "u8"
2178 ARG_LIST@[3720; 3725) 2180 ARG_LIST@[3720; 3725)
2179 L_PAREN@[3720; 3721) 2181 L_PAREN@[3720; 3721) "("
2180 LITERAL@[3721; 3724) 2182 LITERAL@[3721; 3724)
2181 INT_NUMBER@[3721; 3724) "8u8" 2183 INT_NUMBER@[3721; 3724) "8u8"
2182 R_PAREN@[3724; 3725) 2184 R_PAREN@[3724; 3725) ")"
2183 SEMI@[3725; 3726) 2185 SEMI@[3725; 3726) ";"
2184 WHITESPACE@[3726; 3731) 2186 WHITESPACE@[3726; 3731) "\n "
2185 EXPR_STMT@[3731; 3739) 2187 EXPR_STMT@[3731; 3739)
2186 CALL_EXPR@[3731; 3738) 2188 CALL_EXPR@[3731; 3738)
2187 PATH_EXPR@[3731; 3736) 2189 PATH_EXPR@[3731; 3736)
@@ -2190,10 +2192,10 @@ SOURCE_FILE@[0; 3813)
2190 NAME_REF@[3731; 3736) 2192 NAME_REF@[3731; 3736)
2191 IDENT@[3731; 3736) "fishy" 2193 IDENT@[3731; 3736) "fishy"
2192 ARG_LIST@[3736; 3738) 2194 ARG_LIST@[3736; 3738)
2193 L_PAREN@[3736; 3737) 2195 L_PAREN@[3736; 3737) "("
2194 R_PAREN@[3737; 3738) 2196 R_PAREN@[3737; 3738) ")"
2195 SEMI@[3738; 3739) 2197 SEMI@[3738; 3739) ";"
2196 WHITESPACE@[3739; 3744) 2198 WHITESPACE@[3739; 3744) "\n "
2197 EXPR_STMT@[3744; 3752) 2199 EXPR_STMT@[3744; 3752)
2198 CALL_EXPR@[3744; 3751) 2200 CALL_EXPR@[3744; 3751)
2199 PATH_EXPR@[3744; 3749) 2201 PATH_EXPR@[3744; 3749)
@@ -2202,10 +2204,10 @@ SOURCE_FILE@[0; 3813)
2202 NAME_REF@[3744; 3749) 2204 NAME_REF@[3744; 3749)
2203 IDENT@[3744; 3749) "union" 2205 IDENT@[3744; 3749) "union"
2204 ARG_LIST@[3749; 3751) 2206 ARG_LIST@[3749; 3751)
2205 L_PAREN@[3749; 3750) 2207 L_PAREN@[3749; 3750) "("
2206 R_PAREN@[3750; 3751) 2208 R_PAREN@[3750; 3751) ")"
2207 SEMI@[3751; 3752) 2209 SEMI@[3751; 3752) ";"
2208 WHITESPACE@[3752; 3757) 2210 WHITESPACE@[3752; 3757) "\n "
2209 EXPR_STMT@[3757; 3778) 2211 EXPR_STMT@[3757; 3778)
2210 CALL_EXPR@[3757; 3777) 2212 CALL_EXPR@[3757; 3777)
2211 PATH_EXPR@[3757; 3775) 2213 PATH_EXPR@[3757; 3775)
@@ -2214,10 +2216,10 @@ SOURCE_FILE@[0; 3813)
2214 NAME_REF@[3757; 3775) 2216 NAME_REF@[3757; 3775)
2215 IDENT@[3757; 3775) "special_characters" 2217 IDENT@[3757; 3775) "special_characters"
2216 ARG_LIST@[3775; 3777) 2218 ARG_LIST@[3775; 3777)
2217 L_PAREN@[3775; 3776) 2219 L_PAREN@[3775; 3776) "("
2218 R_PAREN@[3776; 3777) 2220 R_PAREN@[3776; 3777) ")"
2219 SEMI@[3777; 3778) 2221 SEMI@[3777; 3778) ";"
2220 WHITESPACE@[3778; 3783) 2222 WHITESPACE@[3778; 3783) "\n "
2221 EXPR_STMT@[3783; 3796) 2223 EXPR_STMT@[3783; 3796)
2222 CALL_EXPR@[3783; 3795) 2224 CALL_EXPR@[3783; 3795)
2223 PATH_EXPR@[3783; 3793) 2225 PATH_EXPR@[3783; 3793)
@@ -2226,10 +2228,10 @@ SOURCE_FILE@[0; 3813)
2226 NAME_REF@[3783; 3793) 2228 NAME_REF@[3783; 3793)
2227 IDENT@[3783; 3793) "punch_card" 2229 IDENT@[3783; 3793) "punch_card"
2228 ARG_LIST@[3793; 3795) 2230 ARG_LIST@[3793; 3795)
2229 L_PAREN@[3793; 3794) 2231 L_PAREN@[3793; 3794) "("
2230 R_PAREN@[3794; 3795) 2232 R_PAREN@[3794; 3795) ")"
2231 SEMI@[3795; 3796) 2233 SEMI@[3795; 3796) ";"
2232 WHITESPACE@[3796; 3801) 2234 WHITESPACE@[3796; 3801) "\n "
2233 EXPR_STMT@[3801; 3810) 2235 EXPR_STMT@[3801; 3810)
2234 CALL_EXPR@[3801; 3809) 2236 CALL_EXPR@[3801; 3809)
2235 PATH_EXPR@[3801; 3807) 2237 PATH_EXPR@[3801; 3807)
@@ -2238,9 +2240,9 @@ SOURCE_FILE@[0; 3813)
2238 NAME_REF@[3801; 3807) 2240 NAME_REF@[3801; 3807)
2239 IDENT@[3801; 3807) "ktulhu" 2241 IDENT@[3801; 3807) "ktulhu"
2240 ARG_LIST@[3807; 3809) 2242 ARG_LIST@[3807; 3809)
2241 L_PAREN@[3807; 3808) 2243 L_PAREN@[3807; 3808) "("
2242 R_PAREN@[3808; 3809) 2244 R_PAREN@[3808; 3809) ")"
2243 SEMI@[3809; 3810) 2245 SEMI@[3809; 3810) ";"
2244 WHITESPACE@[3810; 3811) 2246 WHITESPACE@[3810; 3811) "\n"
2245 R_CURLY@[3811; 3812) 2247 R_CURLY@[3811; 3812) "}"
2246 WHITESPACE@[3812; 3813) 2248 WHITESPACE@[3812; 3813) "\n"
diff --git a/crates/ra_syntax/tests/data/parser/ok/0036_fully_qualified.txt b/crates/ra_syntax/tests/data/parser/ok/0036_fully_qualified.txt
index 208e5e51c..86263c0bb 100644
--- a/crates/ra_syntax/tests/data/parser/ok/0036_fully_qualified.txt
+++ b/crates/ra_syntax/tests/data/parser/ok/0036_fully_qualified.txt
@@ -1,88 +1,92 @@
1SOURCE_FILE@[0; 157) 1SOURCE_FILE@[0; 157)
2 COMMENT@[0; 60) 2 COMMENT@[0; 60) "// https://github.com ..."
3 WHITESPACE@[60; 62) 3 WHITESPACE@[60; 62) "\n\n"
4 FN_DEF@[62; 156) 4 FN_DEF@[62; 156)
5 VISIBILITY@[62; 65) 5 VISIBILITY@[62; 65)
6 PUB_KW@[62; 65) 6 PUB_KW@[62; 65) "pub"
7 WHITESPACE@[65; 66) 7 WHITESPACE@[65; 66) " "
8 FN_KW@[66; 68) 8 FN_KW@[66; 68) "fn"
9 WHITESPACE@[68; 69) 9 WHITESPACE@[68; 69) " "
10 NAME@[69; 72) 10 NAME@[69; 72)
11 IDENT@[69; 72) "foo" 11 IDENT@[69; 72) "foo"
12 TYPE_PARAM_LIST@[72; 85) 12 TYPE_PARAM_LIST@[72; 85)
13 L_ANGLE@[72; 73) 13 L_ANGLE@[72; 73) "<"
14 TYPE_PARAM@[73; 84) 14 TYPE_PARAM@[73; 84)
15 NAME@[73; 74) 15 NAME@[73; 74)
16 IDENT@[73; 74) "S" 16 IDENT@[73; 74) "S"
17 COLON@[74; 75) 17 COLON@[74; 75) ":"
18 WHITESPACE@[75; 76) 18 WHITESPACE@[75; 76) " "
19 PATH_TYPE@[76; 84) 19 TYPE_BOUND_LIST@[76; 84)
20 PATH@[76; 84) 20 TYPE_BOUND@[76; 84)
21 PATH_SEGMENT@[76; 84) 21 PATH_TYPE@[76; 84)
22 NAME_REF@[76; 84) 22 PATH@[76; 84)
23 IDENT@[76; 84) "Iterator" 23 PATH_SEGMENT@[76; 84)
24 R_ANGLE@[84; 85) 24 NAME_REF@[76; 84)
25 IDENT@[76; 84) "Iterator"
26 R_ANGLE@[84; 85) ">"
25 PARAM_LIST@[85; 87) 27 PARAM_LIST@[85; 87)
26 L_PAREN@[85; 86) 28 L_PAREN@[85; 86) "("
27 R_PAREN@[86; 87) 29 R_PAREN@[86; 87) ")"
28 WHITESPACE@[87; 88) 30 WHITESPACE@[87; 88) " "
29 RET_TYPE@[88; 97) 31 RET_TYPE@[88; 97)
30 THIN_ARROW@[88; 90) 32 THIN_ARROW@[88; 90) "->"
31 WHITESPACE@[90; 91) 33 WHITESPACE@[90; 91) " "
32 PATH_TYPE@[91; 97) 34 PATH_TYPE@[91; 97)
33 PATH@[91; 97) 35 PATH@[91; 97)
34 PATH_SEGMENT@[91; 97) 36 PATH_SEGMENT@[91; 97)
35 NAME_REF@[91; 97) 37 NAME_REF@[91; 97)
36 IDENT@[91; 97) "String" 38 IDENT@[91; 97) "String"
37 WHITESPACE@[97; 98) 39 WHITESPACE@[97; 98) "\n"
38 WHERE_CLAUSE@[98; 134) 40 WHERE_CLAUSE@[98; 134)
39 WHERE_KW@[98; 103) 41 WHERE_KW@[98; 103) "where"
40 WHITESPACE@[103; 108) 42 WHITESPACE@[103; 108) "\n "
41 WHERE_PRED@[108; 133) 43 WHERE_PRED@[108; 133)
42 PATH_TYPE@[108; 129) 44 PATH_TYPE@[108; 129)
43 PATH@[108; 129) 45 PATH@[108; 129)
44 PATH@[108; 123) 46 PATH@[108; 123)
45 PATH_SEGMENT@[108; 123) 47 PATH_SEGMENT@[108; 123)
46 L_ANGLE@[108; 109) 48 L_ANGLE@[108; 109) "<"
47 PATH_TYPE@[109; 110) 49 PATH_TYPE@[109; 110)
48 PATH@[109; 110) 50 PATH@[109; 110)
49 PATH_SEGMENT@[109; 110) 51 PATH_SEGMENT@[109; 110)
50 NAME_REF@[109; 110) 52 NAME_REF@[109; 110)
51 IDENT@[109; 110) "S" 53 IDENT@[109; 110) "S"
52 WHITESPACE@[110; 111) 54 WHITESPACE@[110; 111) " "
53 AS_KW@[111; 113) 55 AS_KW@[111; 113) "as"
54 WHITESPACE@[113; 114) 56 WHITESPACE@[113; 114) " "
55 PATH_TYPE@[114; 122) 57 PATH_TYPE@[114; 122)
56 PATH@[114; 122) 58 PATH@[114; 122)
57 PATH_SEGMENT@[114; 122) 59 PATH_SEGMENT@[114; 122)
58 NAME_REF@[114; 122) 60 NAME_REF@[114; 122)
59 IDENT@[114; 122) "Iterator" 61 IDENT@[114; 122) "Iterator"
60 R_ANGLE@[122; 123) 62 R_ANGLE@[122; 123) ">"
61 COLONCOLON@[123; 125) 63 COLONCOLON@[123; 125) "::"
62 PATH_SEGMENT@[125; 129) 64 PATH_SEGMENT@[125; 129)
63 NAME_REF@[125; 129) 65 NAME_REF@[125; 129)
64 IDENT@[125; 129) "Item" 66 IDENT@[125; 129) "Item"
65 COLON@[129; 130) 67 COLON@[129; 130) ":"
66 WHITESPACE@[130; 131) 68 WHITESPACE@[130; 131) " "
67 PATH_TYPE@[131; 133) 69 TYPE_BOUND_LIST@[131; 133)
68 PATH@[131; 133) 70 TYPE_BOUND@[131; 133)
69 PATH_SEGMENT@[131; 133) 71 PATH_TYPE@[131; 133)
70 NAME_REF@[131; 133) 72 PATH@[131; 133)
71 IDENT@[131; 133) "Eq" 73 PATH_SEGMENT@[131; 133)
72 COMMA@[133; 134) 74 NAME_REF@[131; 133)
73 WHITESPACE@[134; 135) 75 IDENT@[131; 133) "Eq"
76 COMMA@[133; 134) ","
77 WHITESPACE@[134; 135) "\n"
74 BLOCK@[135; 156) 78 BLOCK@[135; 156)
75 L_CURLY@[135; 136) 79 L_CURLY@[135; 136) "{"
76 WHITESPACE@[136; 141) 80 WHITESPACE@[136; 141) "\n "
77 METHOD_CALL_EXPR@[141; 154) 81 METHOD_CALL_EXPR@[141; 154)
78 LITERAL@[141; 143) 82 LITERAL@[141; 143)
79 STRING@[141; 143) 83 STRING@[141; 143) "\"\""
80 DOT@[143; 144) 84 DOT@[143; 144) "."
81 NAME_REF@[144; 152) 85 NAME_REF@[144; 152)
82 IDENT@[144; 152) "to_owned" 86 IDENT@[144; 152) "to_owned"
83 ARG_LIST@[152; 154) 87 ARG_LIST@[152; 154)
84 L_PAREN@[152; 153) 88 L_PAREN@[152; 153) "("
85 R_PAREN@[153; 154) 89 R_PAREN@[153; 154) ")"
86 WHITESPACE@[154; 155) 90 WHITESPACE@[154; 155) "\n"
87 R_CURLY@[155; 156) 91 R_CURLY@[155; 156) "}"
88 WHITESPACE@[156; 157) 92 WHITESPACE@[156; 157) "\n"
diff --git a/crates/ra_syntax/tests/data/parser/ok/0037_mod.txt b/crates/ra_syntax/tests/data/parser/ok/0037_mod.txt
index f8a20ac53..3af40a104 100644
--- a/crates/ra_syntax/tests/data/parser/ok/0037_mod.txt
+++ b/crates/ra_syntax/tests/data/parser/ok/0037_mod.txt
@@ -1,16 +1,16 @@
1SOURCE_FILE@[0; 93) 1SOURCE_FILE@[0; 93)
2 COMMENT@[0; 60) 2 COMMENT@[0; 60) "// https://github.com ..."
3 WHITESPACE@[60; 62) 3 WHITESPACE@[60; 62) "\n\n"
4 MODULE@[62; 93) 4 MODULE@[62; 93)
5 COMMENT@[62; 70) 5 COMMENT@[62; 70) "//! docs"
6 WHITESPACE@[70; 71) 6 WHITESPACE@[70; 71) "\n"
7 COMMENT@[71; 82) 7 COMMENT@[71; 82) "// non-docs"
8 WHITESPACE@[82; 83) 8 WHITESPACE@[82; 83) "\n"
9 MOD_KW@[83; 86) 9 MOD_KW@[83; 86) "mod"
10 WHITESPACE@[86; 87) 10 WHITESPACE@[86; 87) " "
11 NAME@[87; 90) 11 NAME@[87; 90)
12 IDENT@[87; 90) "foo" 12 IDENT@[87; 90) "foo"
13 WHITESPACE@[90; 91) 13 WHITESPACE@[90; 91) " "
14 ITEM_LIST@[91; 93) 14 ITEM_LIST@[91; 93)
15 L_CURLY@[91; 92) 15 L_CURLY@[91; 92) "{"
16 R_CURLY@[92; 93) 16 R_CURLY@[92; 93) "}"
diff --git a/crates/ra_syntax/tests/data/parser/ok/0038_where_pred_type.txt b/crates/ra_syntax/tests/data/parser/ok/0038_where_pred_type.txt
index 4842e9b90..7a5507473 100644
--- a/crates/ra_syntax/tests/data/parser/ok/0038_where_pred_type.txt
+++ b/crates/ra_syntax/tests/data/parser/ok/0038_where_pred_type.txt
@@ -1,40 +1,42 @@
1SOURCE_FILE@[0; 34) 1SOURCE_FILE@[0; 34)
2 FN_DEF@[0; 34) 2 FN_DEF@[0; 34)
3 FN_KW@[0; 2) 3 FN_KW@[0; 2) "fn"
4 WHITESPACE@[2; 3) 4 WHITESPACE@[2; 3) " "
5 NAME@[3; 7) 5 NAME@[3; 7)
6 IDENT@[3; 7) "test" 6 IDENT@[3; 7) "test"
7 PARAM_LIST@[7; 9) 7 PARAM_LIST@[7; 9)
8 L_PAREN@[7; 8) 8 L_PAREN@[7; 8) "("
9 R_PAREN@[8; 9) 9 R_PAREN@[8; 9) ")"
10 WHITESPACE@[9; 10) 10 WHITESPACE@[9; 10) " "
11 WHERE_CLAUSE@[10; 31) 11 WHERE_CLAUSE@[10; 31)
12 WHERE_KW@[10; 15) 12 WHERE_KW@[10; 15) "where"
13 WHITESPACE@[15; 16) 13 WHITESPACE@[15; 16) " "
14 WHERE_PRED@[16; 31) 14 WHERE_PRED@[16; 31)
15 TUPLE_TYPE@[16; 26) 15 TUPLE_TYPE@[16; 26)
16 L_PAREN@[16; 17) 16 L_PAREN@[16; 17) "("
17 PATH_TYPE@[17; 20) 17 PATH_TYPE@[17; 20)
18 PATH@[17; 20) 18 PATH@[17; 20)
19 PATH_SEGMENT@[17; 20) 19 PATH_SEGMENT@[17; 20)
20 NAME_REF@[17; 20) 20 NAME_REF@[17; 20)
21 IDENT@[17; 20) "u64" 21 IDENT@[17; 20) "u64"
22 COMMA@[20; 21) 22 COMMA@[20; 21) ","
23 WHITESPACE@[21; 22) 23 WHITESPACE@[21; 22) " "
24 PATH_TYPE@[22; 25) 24 PATH_TYPE@[22; 25)
25 PATH@[22; 25) 25 PATH@[22; 25)
26 PATH_SEGMENT@[22; 25) 26 PATH_SEGMENT@[22; 25)
27 NAME_REF@[22; 25) 27 NAME_REF@[22; 25)
28 IDENT@[22; 25) "u64" 28 IDENT@[22; 25) "u64"
29 R_PAREN@[25; 26) 29 R_PAREN@[25; 26) ")"
30 COLON@[26; 27) 30 COLON@[26; 27) ":"
31 WHITESPACE@[27; 28) 31 WHITESPACE@[27; 28) " "
32 PATH_TYPE@[28; 31) 32 TYPE_BOUND_LIST@[28; 31)
33 PATH@[28; 31) 33 TYPE_BOUND@[28; 31)
34 PATH_SEGMENT@[28; 31) 34 PATH_TYPE@[28; 31)
35 NAME_REF@[28; 31) 35 PATH@[28; 31)
36 IDENT@[28; 31) "Foo" 36 PATH_SEGMENT@[28; 31)
37 WHITESPACE@[31; 32) 37 NAME_REF@[28; 31)
38 IDENT@[28; 31) "Foo"
39 WHITESPACE@[31; 32) " "
38 BLOCK@[32; 34) 40 BLOCK@[32; 34)
39 L_CURLY@[32; 33) 41 L_CURLY@[32; 33) "{"
40 R_CURLY@[33; 34) 42 R_CURLY@[33; 34) "}"
diff --git a/crates/ra_syntax/tests/data/parser/ok/0039_raw_fn_item.txt b/crates/ra_syntax/tests/data/parser/ok/0039_raw_fn_item.txt
index dcd055d86..69fac87e3 100644
--- a/crates/ra_syntax/tests/data/parser/ok/0039_raw_fn_item.txt
+++ b/crates/ra_syntax/tests/data/parser/ok/0039_raw_fn_item.txt
@@ -1,15 +1,15 @@
1SOURCE_FILE@[0; 15) 1SOURCE_FILE@[0; 15)
2 FN_DEF@[0; 14) 2 FN_DEF@[0; 14)
3 FN_KW@[0; 2) 3 FN_KW@[0; 2) "fn"
4 WHITESPACE@[2; 3) 4 WHITESPACE@[2; 3) " "
5 NAME@[3; 8) 5 NAME@[3; 8)
6 IDENT@[3; 8) "r#foo" 6 IDENT@[3; 8) "r#foo"
7 PARAM_LIST@[8; 10) 7 PARAM_LIST@[8; 10)
8 L_PAREN@[8; 9) 8 L_PAREN@[8; 9) "("
9 R_PAREN@[9; 10) 9 R_PAREN@[9; 10) ")"
10 WHITESPACE@[10; 11) 10 WHITESPACE@[10; 11) " "
11 BLOCK@[11; 14) 11 BLOCK@[11; 14)
12 L_CURLY@[11; 12) 12 L_CURLY@[11; 12) "{"
13 WHITESPACE@[12; 13) 13 WHITESPACE@[12; 13) "\n"
14 R_CURLY@[13; 14) 14 R_CURLY@[13; 14) "}"
15 WHITESPACE@[14; 15) 15 WHITESPACE@[14; 15) "\n"
diff --git a/crates/ra_syntax/tests/data/parser/ok/0040_raw_struct_item_field.txt b/crates/ra_syntax/tests/data/parser/ok/0040_raw_struct_item_field.txt
index 361e53152..3c717555d 100644
--- a/crates/ra_syntax/tests/data/parser/ok/0040_raw_struct_item_field.txt
+++ b/crates/ra_syntax/tests/data/parser/ok/0040_raw_struct_item_field.txt
@@ -1,22 +1,22 @@
1SOURCE_FILE@[0; 27) 1SOURCE_FILE@[0; 27)
2 STRUCT_DEF@[0; 27) 2 STRUCT_DEF@[0; 27)
3 STRUCT_KW@[0; 6) 3 STRUCT_KW@[0; 6) "struct"
4 WHITESPACE@[6; 7) 4 WHITESPACE@[6; 7) " "
5 NAME@[7; 8) 5 NAME@[7; 8)
6 IDENT@[7; 8) "S" 6 IDENT@[7; 8) "S"
7 WHITESPACE@[8; 9) 7 WHITESPACE@[8; 9) " "
8 NAMED_FIELD_DEF_LIST@[9; 27) 8 NAMED_FIELD_DEF_LIST@[9; 27)
9 L_CURLY@[9; 10) 9 L_CURLY@[9; 10) "{"
10 WHITESPACE@[10; 15) 10 WHITESPACE@[10; 15) "\n "
11 NAMED_FIELD_DEF@[15; 25) 11 NAMED_FIELD_DEF@[15; 25)
12 NAME@[15; 20) 12 NAME@[15; 20)
13 IDENT@[15; 20) "r#foo" 13 IDENT@[15; 20) "r#foo"
14 COLON@[20; 21) 14 COLON@[20; 21) ":"
15 WHITESPACE@[21; 22) 15 WHITESPACE@[21; 22) " "
16 PATH_TYPE@[22; 25) 16 PATH_TYPE@[22; 25)
17 PATH@[22; 25) 17 PATH@[22; 25)
18 PATH_SEGMENT@[22; 25) 18 PATH_SEGMENT@[22; 25)
19 NAME_REF@[22; 25) 19 NAME_REF@[22; 25)
20 IDENT@[22; 25) "u32" 20 IDENT@[22; 25) "u32"
21 WHITESPACE@[25; 26) 21 WHITESPACE@[25; 26) "\n"
22 R_CURLY@[26; 27) 22 R_CURLY@[26; 27) "}"
diff --git a/crates/ra_syntax/tests/data/parser/ok/0041_raw_keywords.txt b/crates/ra_syntax/tests/data/parser/ok/0041_raw_keywords.txt
index f03ed17f5..554b52f85 100644
--- a/crates/ra_syntax/tests/data/parser/ok/0041_raw_keywords.txt
+++ b/crates/ra_syntax/tests/data/parser/ok/0041_raw_keywords.txt
@@ -1,49 +1,49 @@
1SOURCE_FILE@[0; 59) 1SOURCE_FILE@[0; 59)
2 FN_DEF@[0; 59) 2 FN_DEF@[0; 59)
3 FN_KW@[0; 2) 3 FN_KW@[0; 2) "fn"
4 WHITESPACE@[2; 3) 4 WHITESPACE@[2; 3) " "
5 NAME@[3; 6) 5 NAME@[3; 6)
6 IDENT@[3; 6) "foo" 6 IDENT@[3; 6) "foo"
7 PARAM_LIST@[6; 8) 7 PARAM_LIST@[6; 8)
8 L_PAREN@[6; 7) 8 L_PAREN@[6; 7) "("
9 R_PAREN@[7; 8) 9 R_PAREN@[7; 8) ")"
10 WHITESPACE@[8; 9) 10 WHITESPACE@[8; 9) " "
11 BLOCK@[9; 59) 11 BLOCK@[9; 59)
12 L_CURLY@[9; 10) 12 L_CURLY@[9; 10) "{"
13 WHITESPACE@[10; 11) 13 WHITESPACE@[10; 11) " "
14 LET_STMT@[11; 29) 14 LET_STMT@[11; 29)
15 LET_KW@[11; 14) 15 LET_KW@[11; 14) "let"
16 WHITESPACE@[14; 15) 16 WHITESPACE@[14; 15) " "
17 BIND_PAT@[15; 23) 17 BIND_PAT@[15; 23)
18 NAME@[15; 23) 18 NAME@[15; 23)
19 IDENT@[15; 23) "r#struct" 19 IDENT@[15; 23) "r#struct"
20 WHITESPACE@[23; 24) 20 WHITESPACE@[23; 24) " "
21 EQ@[24; 25) 21 EQ@[24; 25) "="
22 WHITESPACE@[25; 26) 22 WHITESPACE@[25; 26) " "
23 LITERAL@[26; 28) 23 LITERAL@[26; 28)
24 INT_NUMBER@[26; 28) "92" 24 INT_NUMBER@[26; 28) "92"
25 SEMI@[28; 29) 25 SEMI@[28; 29) ";"
26 WHITESPACE@[29; 30) 26 WHITESPACE@[29; 30) " "
27 LET_STMT@[30; 57) 27 LET_STMT@[30; 57)
28 LET_KW@[30; 33) 28 LET_KW@[30; 33) "let"
29 WHITESPACE@[33; 34) 29 WHITESPACE@[33; 34) " "
30 BIND_PAT@[34; 41) 30 BIND_PAT@[34; 41)
31 NAME@[34; 41) 31 NAME@[34; 41)
32 IDENT@[34; 41) "r#trait" 32 IDENT@[34; 41) "r#trait"
33 WHITESPACE@[41; 42) 33 WHITESPACE@[41; 42) " "
34 EQ@[42; 43) 34 EQ@[42; 43) "="
35 WHITESPACE@[43; 44) 35 WHITESPACE@[43; 44) " "
36 BIN_EXPR@[44; 56) 36 BIN_EXPR@[44; 56)
37 PATH_EXPR@[44; 52) 37 PATH_EXPR@[44; 52)
38 PATH@[44; 52) 38 PATH@[44; 52)
39 PATH_SEGMENT@[44; 52) 39 PATH_SEGMENT@[44; 52)
40 NAME_REF@[44; 52) 40 NAME_REF@[44; 52)
41 IDENT@[44; 52) "r#struct" 41 IDENT@[44; 52) "r#struct"
42 WHITESPACE@[52; 53) 42 WHITESPACE@[52; 53) " "
43 STAR@[53; 54) 43 STAR@[53; 54) "*"
44 WHITESPACE@[54; 55) 44 WHITESPACE@[54; 55) " "
45 LITERAL@[55; 56) 45 LITERAL@[55; 56)
46 INT_NUMBER@[55; 56) "2" 46 INT_NUMBER@[55; 56) "2"
47 SEMI@[56; 57) 47 SEMI@[56; 57) ";"
48 WHITESPACE@[57; 58) 48 WHITESPACE@[57; 58) " "
49 R_CURLY@[58; 59) 49 R_CURLY@[58; 59) "}"
diff --git a/crates/ra_syntax/tests/data/parser/ok/0042_ufcs_call_list.txt b/crates/ra_syntax/tests/data/parser/ok/0042_ufcs_call_list.txt
index d1d890e50..19951011e 100644
--- a/crates/ra_syntax/tests/data/parser/ok/0042_ufcs_call_list.txt
+++ b/crates/ra_syntax/tests/data/parser/ok/0042_ufcs_call_list.txt
@@ -1,95 +1,95 @@
1SOURCE_FILE@[0; 199) 1SOURCE_FILE@[0; 199)
2 COMMENT@[0; 60) 2 COMMENT@[0; 60) "// https://github.com ..."
3 WHITESPACE@[60; 62) 3 WHITESPACE@[60; 62) "\n\n"
4 STRUCT_DEF@[62; 73) 4 STRUCT_DEF@[62; 73)
5 STRUCT_KW@[62; 68) 5 STRUCT_KW@[62; 68) "struct"
6 WHITESPACE@[68; 69) 6 WHITESPACE@[68; 69) " "
7 NAME@[69; 72) 7 NAME@[69; 72)
8 IDENT@[69; 72) "Foo" 8 IDENT@[69; 72) "Foo"
9 SEMI@[72; 73) 9 SEMI@[72; 73) ";"
10 WHITESPACE@[73; 75) 10 WHITESPACE@[73; 75) "\n\n"
11 IMPL_BLOCK@[75; 141) 11 IMPL_BLOCK@[75; 141)
12 IMPL_KW@[75; 79) 12 IMPL_KW@[75; 79) "impl"
13 WHITESPACE@[79; 80) 13 WHITESPACE@[79; 80) " "
14 PATH_TYPE@[80; 83) 14 PATH_TYPE@[80; 83)
15 PATH@[80; 83) 15 PATH@[80; 83)
16 PATH_SEGMENT@[80; 83) 16 PATH_SEGMENT@[80; 83)
17 NAME_REF@[80; 83) 17 NAME_REF@[80; 83)
18 IDENT@[80; 83) "Foo" 18 IDENT@[80; 83) "Foo"
19 WHITESPACE@[83; 84) 19 WHITESPACE@[83; 84) " "
20 ITEM_LIST@[84; 141) 20 ITEM_LIST@[84; 141)
21 L_CURLY@[84; 85) 21 L_CURLY@[84; 85) "{"
22 WHITESPACE@[85; 90) 22 WHITESPACE@[85; 90) "\n "
23 FN_DEF@[90; 139) 23 FN_DEF@[90; 139)
24 FN_KW@[90; 92) 24 FN_KW@[90; 92) "fn"
25 WHITESPACE@[92; 93) 25 WHITESPACE@[92; 93) " "
26 NAME@[93; 96) 26 NAME@[93; 96)
27 IDENT@[93; 96) "bar" 27 IDENT@[93; 96) "bar"
28 PARAM_LIST@[96; 98) 28 PARAM_LIST@[96; 98)
29 L_PAREN@[96; 97) 29 L_PAREN@[96; 97) "("
30 R_PAREN@[97; 98) 30 R_PAREN@[97; 98) ")"
31 WHITESPACE@[98; 99) 31 WHITESPACE@[98; 99) " "
32 RET_TYPE@[99; 106) 32 RET_TYPE@[99; 106)
33 THIN_ARROW@[99; 101) 33 THIN_ARROW@[99; 101) "->"
34 WHITESPACE@[101; 102) 34 WHITESPACE@[101; 102) " "
35 PATH_TYPE@[102; 106) 35 PATH_TYPE@[102; 106)
36 PATH@[102; 106) 36 PATH@[102; 106)
37 PATH_SEGMENT@[102; 106) 37 PATH_SEGMENT@[102; 106)
38 NAME_REF@[102; 106) 38 NAME_REF@[102; 106)
39 IDENT@[102; 106) "bool" 39 IDENT@[102; 106) "bool"
40 WHITESPACE@[106; 107) 40 WHITESPACE@[106; 107) " "
41 BLOCK@[107; 139) 41 BLOCK@[107; 139)
42 L_CURLY@[107; 108) 42 L_CURLY@[107; 108) "{"
43 WHITESPACE@[108; 117) 43 WHITESPACE@[108; 117) "\n "
44 MACRO_CALL@[117; 133) 44 MACRO_CALL@[117; 133)
45 PATH@[117; 130) 45 PATH@[117; 130)
46 PATH_SEGMENT@[117; 130) 46 PATH_SEGMENT@[117; 130)
47 NAME_REF@[117; 130) 47 NAME_REF@[117; 130)
48 IDENT@[117; 130) "unimplemented" 48 IDENT@[117; 130) "unimplemented"
49 EXCL@[130; 131) 49 EXCL@[130; 131) "!"
50 TOKEN_TREE@[131; 133) 50 TOKEN_TREE@[131; 133)
51 L_PAREN@[131; 132) 51 L_PAREN@[131; 132) "("
52 R_PAREN@[132; 133) 52 R_PAREN@[132; 133) ")"
53 WHITESPACE@[133; 138) 53 WHITESPACE@[133; 138) "\n "
54 R_CURLY@[138; 139) 54 R_CURLY@[138; 139) "}"
55 WHITESPACE@[139; 140) 55 WHITESPACE@[139; 140) "\n"
56 R_CURLY@[140; 141) 56 R_CURLY@[140; 141) "}"
57 WHITESPACE@[141; 143) 57 WHITESPACE@[141; 143) "\n\n"
58 FN_DEF@[143; 161) 58 FN_DEF@[143; 161)
59 FN_KW@[143; 145) 59 FN_KW@[143; 145) "fn"
60 WHITESPACE@[145; 146) 60 WHITESPACE@[145; 146) " "
61 NAME@[146; 149) 61 NAME@[146; 149)
62 IDENT@[146; 149) "baz" 62 IDENT@[146; 149) "baz"
63 PARAM_LIST@[149; 158) 63 PARAM_LIST@[149; 158)
64 L_PAREN@[149; 150) 64 L_PAREN@[149; 150) "("
65 PARAM@[150; 157) 65 PARAM@[150; 157)
66 PLACEHOLDER_PAT@[150; 151) 66 PLACEHOLDER_PAT@[150; 151)
67 UNDERSCORE@[150; 151) 67 UNDERSCORE@[150; 151) "_"
68 COLON@[151; 152) 68 COLON@[151; 152) ":"
69 WHITESPACE@[152; 153) 69 WHITESPACE@[152; 153) " "
70 PATH_TYPE@[153; 157) 70 PATH_TYPE@[153; 157)
71 PATH@[153; 157) 71 PATH@[153; 157)
72 PATH_SEGMENT@[153; 157) 72 PATH_SEGMENT@[153; 157)
73 NAME_REF@[153; 157) 73 NAME_REF@[153; 157)
74 IDENT@[153; 157) "bool" 74 IDENT@[153; 157) "bool"
75 R_PAREN@[157; 158) 75 R_PAREN@[157; 158) ")"
76 WHITESPACE@[158; 159) 76 WHITESPACE@[158; 159) " "
77 BLOCK@[159; 161) 77 BLOCK@[159; 161)
78 L_CURLY@[159; 160) 78 L_CURLY@[159; 160) "{"
79 R_CURLY@[160; 161) 79 R_CURLY@[160; 161) "}"
80 WHITESPACE@[161; 163) 80 WHITESPACE@[161; 163) "\n\n"
81 FN_DEF@[163; 198) 81 FN_DEF@[163; 198)
82 FN_KW@[163; 165) 82 FN_KW@[163; 165) "fn"
83 WHITESPACE@[165; 166) 83 WHITESPACE@[165; 166) " "
84 NAME@[166; 170) 84 NAME@[166; 170)
85 IDENT@[166; 170) "main" 85 IDENT@[166; 170) "main"
86 PARAM_LIST@[170; 172) 86 PARAM_LIST@[170; 172)
87 L_PAREN@[170; 171) 87 L_PAREN@[170; 171) "("
88 R_PAREN@[171; 172) 88 R_PAREN@[171; 172) ")"
89 WHITESPACE@[172; 173) 89 WHITESPACE@[172; 173) " "
90 BLOCK@[173; 198) 90 BLOCK@[173; 198)
91 L_CURLY@[173; 174) 91 L_CURLY@[173; 174) "{"
92 WHITESPACE@[174; 179) 92 WHITESPACE@[174; 179) "\n "
93 CALL_EXPR@[179; 196) 93 CALL_EXPR@[179; 196)
94 PATH_EXPR@[179; 182) 94 PATH_EXPR@[179; 182)
95 PATH@[179; 182) 95 PATH@[179; 182)
@@ -97,27 +97,27 @@ SOURCE_FILE@[0; 199)
97 NAME_REF@[179; 182) 97 NAME_REF@[179; 182)
98 IDENT@[179; 182) "baz" 98 IDENT@[179; 182) "baz"
99 ARG_LIST@[182; 196) 99 ARG_LIST@[182; 196)
100 L_PAREN@[182; 183) 100 L_PAREN@[182; 183) "("
101 CALL_EXPR@[183; 195) 101 CALL_EXPR@[183; 195)
102 PATH_EXPR@[183; 193) 102 PATH_EXPR@[183; 193)
103 PATH@[183; 193) 103 PATH@[183; 193)
104 PATH@[183; 188) 104 PATH@[183; 188)
105 PATH_SEGMENT@[183; 188) 105 PATH_SEGMENT@[183; 188)
106 L_ANGLE@[183; 184) 106 L_ANGLE@[183; 184) "<"
107 PATH_TYPE@[184; 187) 107 PATH_TYPE@[184; 187)
108 PATH@[184; 187) 108 PATH@[184; 187)
109 PATH_SEGMENT@[184; 187) 109 PATH_SEGMENT@[184; 187)
110 NAME_REF@[184; 187) 110 NAME_REF@[184; 187)
111 IDENT@[184; 187) "Foo" 111 IDENT@[184; 187) "Foo"
112 R_ANGLE@[187; 188) 112 R_ANGLE@[187; 188) ">"
113 COLONCOLON@[188; 190) 113 COLONCOLON@[188; 190) "::"
114 PATH_SEGMENT@[190; 193) 114 PATH_SEGMENT@[190; 193)
115 NAME_REF@[190; 193) 115 NAME_REF@[190; 193)
116 IDENT@[190; 193) "bar" 116 IDENT@[190; 193) "bar"
117 ARG_LIST@[193; 195) 117 ARG_LIST@[193; 195)
118 L_PAREN@[193; 194) 118 L_PAREN@[193; 194) "("
119 R_PAREN@[194; 195) 119 R_PAREN@[194; 195) ")"
120 R_PAREN@[195; 196) 120 R_PAREN@[195; 196) ")"
121 WHITESPACE@[196; 197) 121 WHITESPACE@[196; 197) "\n"
122 R_CURLY@[197; 198) 122 R_CURLY@[197; 198) "}"
123 WHITESPACE@[198; 199) 123 WHITESPACE@[198; 199) "\n"
diff --git a/crates/ra_syntax/tests/data/parser/ok/0043_complex_assignment.txt b/crates/ra_syntax/tests/data/parser/ok/0043_complex_assignment.txt
index 2279c7966..ef47521bf 100644
--- a/crates/ra_syntax/tests/data/parser/ok/0043_complex_assignment.txt
+++ b/crates/ra_syntax/tests/data/parser/ok/0043_complex_assignment.txt
@@ -1,47 +1,47 @@
1SOURCE_FILE@[0; 160) 1SOURCE_FILE@[0; 160)
2 COMMENT@[0; 60) 2 COMMENT@[0; 60) "// https://github.com ..."
3 WHITESPACE@[60; 62) 3 WHITESPACE@[60; 62) "\n\n"
4 STRUCT_DEF@[62; 90) 4 STRUCT_DEF@[62; 90)
5 STRUCT_KW@[62; 68) 5 STRUCT_KW@[62; 68) "struct"
6 WHITESPACE@[68; 69) 6 WHITESPACE@[68; 69) " "
7 NAME@[69; 73) 7 NAME@[69; 73)
8 IDENT@[69; 73) "Repr" 8 IDENT@[69; 73) "Repr"
9 WHITESPACE@[73; 74) 9 WHITESPACE@[73; 74) " "
10 NAMED_FIELD_DEF_LIST@[74; 90) 10 NAMED_FIELD_DEF_LIST@[74; 90)
11 L_CURLY@[74; 75) 11 L_CURLY@[74; 75) "{"
12 WHITESPACE@[75; 76) 12 WHITESPACE@[75; 76) " "
13 NAMED_FIELD_DEF@[76; 88) 13 NAMED_FIELD_DEF@[76; 88)
14 NAME@[76; 79) 14 NAME@[76; 79)
15 IDENT@[76; 79) "raw" 15 IDENT@[76; 79) "raw"
16 COLON@[79; 80) 16 COLON@[79; 80) ":"
17 WHITESPACE@[80; 81) 17 WHITESPACE@[80; 81) " "
18 ARRAY_TYPE@[81; 88) 18 ARRAY_TYPE@[81; 88)
19 L_BRACK@[81; 82) 19 L_BRACK@[81; 82) "["
20 PATH_TYPE@[82; 84) 20 PATH_TYPE@[82; 84)
21 PATH@[82; 84) 21 PATH@[82; 84)
22 PATH_SEGMENT@[82; 84) 22 PATH_SEGMENT@[82; 84)
23 NAME_REF@[82; 84) 23 NAME_REF@[82; 84)
24 IDENT@[82; 84) "u8" 24 IDENT@[82; 84) "u8"
25 SEMI@[84; 85) 25 SEMI@[84; 85) ";"
26 WHITESPACE@[85; 86) 26 WHITESPACE@[85; 86) " "
27 LITERAL@[86; 87) 27 LITERAL@[86; 87)
28 INT_NUMBER@[86; 87) "1" 28 INT_NUMBER@[86; 87) "1"
29 R_BRACK@[87; 88) 29 R_BRACK@[87; 88) "]"
30 WHITESPACE@[88; 89) 30 WHITESPACE@[88; 89) " "
31 R_CURLY@[89; 90) 31 R_CURLY@[89; 90) "}"
32 WHITESPACE@[90; 92) 32 WHITESPACE@[90; 92) "\n\n"
33 FN_DEF@[92; 159) 33 FN_DEF@[92; 159)
34 FN_KW@[92; 94) 34 FN_KW@[92; 94) "fn"
35 WHITESPACE@[94; 95) 35 WHITESPACE@[94; 95) " "
36 NAME@[95; 98) 36 NAME@[95; 98)
37 IDENT@[95; 98) "abc" 37 IDENT@[95; 98) "abc"
38 PARAM_LIST@[98; 100) 38 PARAM_LIST@[98; 100)
39 L_PAREN@[98; 99) 39 L_PAREN@[98; 99) "("
40 R_PAREN@[99; 100) 40 R_PAREN@[99; 100) ")"
41 WHITESPACE@[100; 101) 41 WHITESPACE@[100; 101) " "
42 BLOCK@[101; 159) 42 BLOCK@[101; 159)
43 L_CURLY@[101; 102) 43 L_CURLY@[101; 102) "{"
44 WHITESPACE@[102; 107) 44 WHITESPACE@[102; 107) "\n "
45 EXPR_STMT@[107; 136) 45 EXPR_STMT@[107; 136)
46 BIN_EXPR@[107; 135) 46 BIN_EXPR@[107; 135)
47 INDEX_EXPR@[107; 131) 47 INDEX_EXPR@[107; 131)
@@ -51,36 +51,36 @@ SOURCE_FILE@[0; 160)
51 PATH_SEGMENT@[107; 111) 51 PATH_SEGMENT@[107; 111)
52 NAME_REF@[107; 111) 52 NAME_REF@[107; 111)
53 IDENT@[107; 111) "Repr" 53 IDENT@[107; 111) "Repr"
54 WHITESPACE@[111; 112) 54 WHITESPACE@[111; 112) " "
55 NAMED_FIELD_LIST@[112; 124) 55 NAMED_FIELD_LIST@[112; 124)
56 L_CURLY@[112; 113) 56 L_CURLY@[112; 113) "{"
57 WHITESPACE@[113; 114) 57 WHITESPACE@[113; 114) " "
58 NAMED_FIELD@[114; 122) 58 NAMED_FIELD@[114; 122)
59 NAME_REF@[114; 117) 59 NAME_REF@[114; 117)
60 IDENT@[114; 117) "raw" 60 IDENT@[114; 117) "raw"
61 COLON@[117; 118) 61 COLON@[117; 118) ":"
62 WHITESPACE@[118; 119) 62 WHITESPACE@[118; 119) " "
63 ARRAY_EXPR@[119; 122) 63 ARRAY_EXPR@[119; 122)
64 L_BRACK@[119; 120) 64 L_BRACK@[119; 120) "["
65 LITERAL@[120; 121) 65 LITERAL@[120; 121)
66 INT_NUMBER@[120; 121) "0" 66 INT_NUMBER@[120; 121) "0"
67 R_BRACK@[121; 122) 67 R_BRACK@[121; 122) "]"
68 WHITESPACE@[122; 123) 68 WHITESPACE@[122; 123) " "
69 R_CURLY@[123; 124) 69 R_CURLY@[123; 124) "}"
70 DOT@[124; 125) 70 DOT@[124; 125) "."
71 NAME_REF@[125; 128) 71 NAME_REF@[125; 128)
72 IDENT@[125; 128) "raw" 72 IDENT@[125; 128) "raw"
73 L_BRACK@[128; 129) 73 L_BRACK@[128; 129) "["
74 LITERAL@[129; 130) 74 LITERAL@[129; 130)
75 INT_NUMBER@[129; 130) "0" 75 INT_NUMBER@[129; 130) "0"
76 R_BRACK@[130; 131) 76 R_BRACK@[130; 131) "]"
77 WHITESPACE@[131; 132) 77 WHITESPACE@[131; 132) " "
78 EQ@[132; 133) 78 EQ@[132; 133) "="
79 WHITESPACE@[133; 134) 79 WHITESPACE@[133; 134) " "
80 LITERAL@[134; 135) 80 LITERAL@[134; 135)
81 INT_NUMBER@[134; 135) "0" 81 INT_NUMBER@[134; 135) "0"
82 SEMI@[135; 136) 82 SEMI@[135; 136) ";"
83 WHITESPACE@[136; 141) 83 WHITESPACE@[136; 141) "\n "
84 EXPR_STMT@[141; 157) 84 EXPR_STMT@[141; 157)
85 CALL_EXPR@[141; 156) 85 CALL_EXPR@[141; 156)
86 STRUCT_LIT@[141; 154) 86 STRUCT_LIT@[141; 154)
@@ -89,21 +89,21 @@ SOURCE_FILE@[0; 160)
89 NAME_REF@[141; 145) 89 NAME_REF@[141; 145)
90 IDENT@[141; 145) "Repr" 90 IDENT@[141; 145) "Repr"
91 NAMED_FIELD_LIST@[145; 154) 91 NAMED_FIELD_LIST@[145; 154)
92 L_CURLY@[145; 146) 92 L_CURLY@[145; 146) "{"
93 NAMED_FIELD@[146; 153) 93 NAMED_FIELD@[146; 153)
94 NAME_REF@[146; 149) 94 NAME_REF@[146; 149)
95 IDENT@[146; 149) "raw" 95 IDENT@[146; 149) "raw"
96 COLON@[149; 150) 96 COLON@[149; 150) ":"
97 ARRAY_EXPR@[150; 153) 97 ARRAY_EXPR@[150; 153)
98 L_BRACK@[150; 151) 98 L_BRACK@[150; 151) "["
99 LITERAL@[151; 152) 99 LITERAL@[151; 152)
100 INT_NUMBER@[151; 152) "0" 100 INT_NUMBER@[151; 152) "0"
101 R_BRACK@[152; 153) 101 R_BRACK@[152; 153) "]"
102 R_CURLY@[153; 154) 102 R_CURLY@[153; 154) "}"
103 ARG_LIST@[154; 156) 103 ARG_LIST@[154; 156)
104 L_PAREN@[154; 155) 104 L_PAREN@[154; 155) "("
105 R_PAREN@[155; 156) 105 R_PAREN@[155; 156) ")"
106 SEMI@[156; 157) 106 SEMI@[156; 157) ";"
107 WHITESPACE@[157; 158) 107 WHITESPACE@[157; 158) "\n"
108 R_CURLY@[158; 159) 108 R_CURLY@[158; 159) "}"
109 WHITESPACE@[159; 160) 109 WHITESPACE@[159; 160) "\n"
diff --git a/crates/ra_syntax/tests/data/parser/ok/0044_let_attrs.txt b/crates/ra_syntax/tests/data/parser/ok/0044_let_attrs.txt
index 1f52f699b..b928adaad 100644
--- a/crates/ra_syntax/tests/data/parser/ok/0044_let_attrs.txt
+++ b/crates/ra_syntax/tests/data/parser/ok/0044_let_attrs.txt
@@ -1,42 +1,42 @@
1SOURCE_FILE@[0; 166) 1SOURCE_FILE@[0; 166)
2 FN_DEF@[0; 165) 2 FN_DEF@[0; 165)
3 COMMENT@[0; 60) 3 COMMENT@[0; 60) "// https://github.com ..."
4 WHITESPACE@[60; 61) 4 WHITESPACE@[60; 61) "\n"
5 FN_KW@[61; 63) 5 FN_KW@[61; 63) "fn"
6 WHITESPACE@[63; 64) 6 WHITESPACE@[63; 64) " "
7 NAME@[64; 68) 7 NAME@[64; 68)
8 IDENT@[64; 68) "main" 8 IDENT@[64; 68) "main"
9 PARAM_LIST@[68; 70) 9 PARAM_LIST@[68; 70)
10 L_PAREN@[68; 69) 10 L_PAREN@[68; 69) "("
11 R_PAREN@[69; 70) 11 R_PAREN@[69; 70) ")"
12 WHITESPACE@[70; 71) 12 WHITESPACE@[70; 71) " "
13 BLOCK@[71; 165) 13 BLOCK@[71; 165)
14 L_CURLY@[71; 72) 14 L_CURLY@[71; 72) "{"
15 WHITESPACE@[72; 77) 15 WHITESPACE@[72; 77) "\n "
16 LET_STMT@[77; 163) 16 LET_STMT@[77; 163)
17 ATTR@[77; 106) 17 ATTR@[77; 106)
18 POUND@[77; 78) 18 POUND@[77; 78) "#"
19 TOKEN_TREE@[78; 106) 19 TOKEN_TREE@[78; 106)
20 L_BRACK@[78; 79) 20 L_BRACK@[78; 79) "["
21 IDENT@[79; 82) "cfg" 21 IDENT@[79; 82) "cfg"
22 TOKEN_TREE@[82; 105) 22 TOKEN_TREE@[82; 105)
23 L_PAREN@[82; 83) 23 L_PAREN@[82; 83) "("
24 IDENT@[83; 90) "feature" 24 IDENT@[83; 90) "feature"
25 WHITESPACE@[90; 91) 25 WHITESPACE@[90; 91) " "
26 EQ@[91; 92) 26 EQ@[91; 92) "="
27 WHITESPACE@[92; 93) 27 WHITESPACE@[92; 93) " "
28 STRING@[93; 104) 28 STRING@[93; 104) "\"backtrace\""
29 R_PAREN@[104; 105) 29 R_PAREN@[104; 105) ")"
30 R_BRACK@[105; 106) 30 R_BRACK@[105; 106) "]"
31 WHITESPACE@[106; 111) 31 WHITESPACE@[106; 111) "\n "
32 LET_KW@[111; 114) 32 LET_KW@[111; 114) "let"
33 WHITESPACE@[114; 115) 33 WHITESPACE@[114; 115) " "
34 BIND_PAT@[115; 124) 34 BIND_PAT@[115; 124)
35 NAME@[115; 124) 35 NAME@[115; 124)
36 IDENT@[115; 124) "exit_code" 36 IDENT@[115; 124) "exit_code"
37 WHITESPACE@[124; 125) 37 WHITESPACE@[124; 125) " "
38 EQ@[125; 126) 38 EQ@[125; 126) "="
39 WHITESPACE@[126; 127) 39 WHITESPACE@[126; 127) " "
40 CALL_EXPR@[127; 162) 40 CALL_EXPR@[127; 162)
41 PATH_EXPR@[127; 146) 41 PATH_EXPR@[127; 146)
42 PATH@[127; 146) 42 PATH@[127; 146)
@@ -44,19 +44,19 @@ SOURCE_FILE@[0; 166)
44 PATH_SEGMENT@[127; 132) 44 PATH_SEGMENT@[127; 132)
45 NAME_REF@[127; 132) 45 NAME_REF@[127; 132)
46 IDENT@[127; 132) "panic" 46 IDENT@[127; 132) "panic"
47 COLONCOLON@[132; 134) 47 COLONCOLON@[132; 134) "::"
48 PATH_SEGMENT@[134; 146) 48 PATH_SEGMENT@[134; 146)
49 NAME_REF@[134; 146) 49 NAME_REF@[134; 146)
50 IDENT@[134; 146) "catch_unwind" 50 IDENT@[134; 146) "catch_unwind"
51 ARG_LIST@[146; 162) 51 ARG_LIST@[146; 162)
52 L_PAREN@[146; 147) 52 L_PAREN@[146; 147) "("
53 LAMBDA_EXPR@[147; 161) 53 LAMBDA_EXPR@[147; 161)
54 MOVE_KW@[147; 151) 54 MOVE_KW@[147; 151) "move"
55 WHITESPACE@[151; 152) 55 WHITESPACE@[151; 152) " "
56 PARAM_LIST@[152; 154) 56 PARAM_LIST@[152; 154)
57 PIPE@[152; 153) 57 PIPE@[152; 153) "|"
58 PIPE@[153; 154) 58 PIPE@[153; 154) "|"
59 WHITESPACE@[154; 155) 59 WHITESPACE@[154; 155) " "
60 CALL_EXPR@[155; 161) 60 CALL_EXPR@[155; 161)
61 PATH_EXPR@[155; 159) 61 PATH_EXPR@[155; 159)
62 PATH@[155; 159) 62 PATH@[155; 159)
@@ -64,10 +64,10 @@ SOURCE_FILE@[0; 166)
64 NAME_REF@[155; 159) 64 NAME_REF@[155; 159)
65 IDENT@[155; 159) "main" 65 IDENT@[155; 159) "main"
66 ARG_LIST@[159; 161) 66 ARG_LIST@[159; 161)
67 L_PAREN@[159; 160) 67 L_PAREN@[159; 160) "("
68 R_PAREN@[160; 161) 68 R_PAREN@[160; 161) ")"
69 R_PAREN@[161; 162) 69 R_PAREN@[161; 162) ")"
70 SEMI@[162; 163) 70 SEMI@[162; 163) ";"
71 WHITESPACE@[163; 164) 71 WHITESPACE@[163; 164) "\n"
72 R_CURLY@[164; 165) 72 R_CURLY@[164; 165) "}"
73 WHITESPACE@[165; 166) 73 WHITESPACE@[165; 166) "\n"
diff --git a/crates/ra_syntax/tests/data/parser/ok/0045_block_inner_attrs.txt b/crates/ra_syntax/tests/data/parser/ok/0045_block_inner_attrs.txt
index a1ba645ef..f6d3bf302 100644
--- a/crates/ra_syntax/tests/data/parser/ok/0045_block_inner_attrs.txt
+++ b/crates/ra_syntax/tests/data/parser/ok/0045_block_inner_attrs.txt
@@ -1,167 +1,169 @@
1SOURCE_FILE@[0; 686) 1SOURCE_FILE@[0; 686)
2 FN_DEF@[0; 461) 2 FN_DEF@[0; 461)
3 FN_KW@[0; 2) 3 FN_KW@[0; 2) "fn"
4 WHITESPACE@[2; 3) 4 WHITESPACE@[2; 3) " "
5 NAME@[3; 8) 5 NAME@[3; 8)
6 IDENT@[3; 8) "block" 6 IDENT@[3; 8) "block"
7 PARAM_LIST@[8; 10) 7 PARAM_LIST@[8; 10)
8 L_PAREN@[8; 9) 8 L_PAREN@[8; 9) "("
9 R_PAREN@[9; 10) 9 R_PAREN@[9; 10) ")"
10 WHITESPACE@[10; 11) 10 WHITESPACE@[10; 11) " "
11 BLOCK@[11; 461) 11 BLOCK@[11; 461)
12 L_CURLY@[11; 12) 12 L_CURLY@[11; 12) "{"
13 WHITESPACE@[12; 17) 13 WHITESPACE@[12; 17) "\n "
14 ATTR@[17; 57) 14 ATTR@[17; 57)
15 POUND@[17; 18) 15 POUND@[17; 18) "#"
16 EXCL@[18; 19) 16 EXCL@[18; 19) "!"
17 TOKEN_TREE@[19; 57) 17 TOKEN_TREE@[19; 57)
18 L_BRACK@[19; 20) 18 L_BRACK@[19; 20) "["
19 IDENT@[20; 23) "doc" 19 IDENT@[20; 23) "doc"
20 TOKEN_TREE@[23; 56) 20 TOKEN_TREE@[23; 56)
21 L_PAREN@[23; 24) 21 L_PAREN@[23; 24) "("
22 STRING@[24; 55) 22 STRING@[24; 55) "\"Inner attributes all ..."
23 R_PAREN@[55; 56) 23 R_PAREN@[55; 56) ")"
24 R_BRACK@[56; 57) 24 R_BRACK@[56; 57) "]"
25 WHITESPACE@[57; 62) 25 WHITESPACE@[57; 62) "\n "
26 COMMENT@[62; 97) 26 COMMENT@[62; 97) "//! As are ModuleDoc ..."
27 WHITESPACE@[97; 102) 27 WHITESPACE@[97; 102) "\n "
28 EXPR_STMT@[102; 295) 28 EXPR_STMT@[102; 295)
29 BLOCK_EXPR@[102; 294) 29 BLOCK_EXPR@[102; 294)
30 BLOCK@[102; 294) 30 BLOCK@[102; 294)
31 L_CURLY@[102; 103) 31 L_CURLY@[102; 103) "{"
32 WHITESPACE@[103; 112) 32 WHITESPACE@[103; 112) "\n "
33 ATTR@[112; 180) 33 ATTR@[112; 180)
34 POUND@[112; 113) 34 POUND@[112; 113) "#"
35 EXCL@[113; 114) 35 EXCL@[113; 114) "!"
36 TOKEN_TREE@[114; 180) 36 TOKEN_TREE@[114; 180)
37 L_BRACK@[114; 115) 37 L_BRACK@[114; 115) "["
38 IDENT@[115; 118) "doc" 38 IDENT@[115; 118) "doc"
39 TOKEN_TREE@[118; 179) 39 TOKEN_TREE@[118; 179)
40 L_PAREN@[118; 119) 40 L_PAREN@[118; 119) "("
41 STRING@[119; 178) 41 STRING@[119; 178) "\"Inner attributes are ..."
42 R_PAREN@[178; 179) 42 R_PAREN@[178; 179) ")"
43 R_BRACK@[179; 180) 43 R_BRACK@[179; 180) "]"
44 WHITESPACE@[180; 189) 44 WHITESPACE@[180; 189) "\n "
45 ATTR@[189; 244) 45 ATTR@[189; 244)
46 POUND@[189; 190) 46 POUND@[189; 190) "#"
47 EXCL@[190; 191) 47 EXCL@[190; 191) "!"
48 TOKEN_TREE@[191; 244) 48 TOKEN_TREE@[191; 244)
49 L_BRACK@[191; 192) 49 L_BRACK@[191; 192) "["
50 IDENT@[192; 195) "doc" 50 IDENT@[192; 195) "doc"
51 TOKEN_TREE@[195; 243) 51 TOKEN_TREE@[195; 243)
52 L_PAREN@[195; 196) 52 L_PAREN@[195; 196) "("
53 STRING@[196; 242) 53 STRING@[196; 242) "\"Being validated is n ..."
54 R_PAREN@[242; 243) 54 R_PAREN@[242; 243) ")"
55 R_BRACK@[243; 244) 55 R_BRACK@[243; 244) "]"
56 WHITESPACE@[244; 253) 56 WHITESPACE@[244; 253) "\n "
57 COMMENT@[253; 288) 57 COMMENT@[253; 288) "//! As are ModuleDoc ..."
58 WHITESPACE@[288; 293) 58 WHITESPACE@[288; 293) "\n "
59 R_CURLY@[293; 294) 59 R_CURLY@[293; 294) "}"
60 SEMI@[294; 295) 60 SEMI@[294; 295) ";"
61 WHITESPACE@[295; 300) 61 WHITESPACE@[295; 300) "\n "
62 BLOCK_EXPR@[300; 459) 62 BLOCK_EXPR@[300; 459)
63 BLOCK@[300; 459) 63 BLOCK@[300; 459)
64 L_CURLY@[300; 301) 64 L_CURLY@[300; 301) "{"
65 WHITESPACE@[301; 310) 65 WHITESPACE@[301; 310) "\n "
66 ATTR@[310; 409) 66 ATTR@[310; 409)
67 POUND@[310; 311) 67 POUND@[310; 311) "#"
68 EXCL@[311; 312) 68 EXCL@[311; 312) "!"
69 TOKEN_TREE@[312; 409) 69 TOKEN_TREE@[312; 409)
70 L_BRACK@[312; 313) 70 L_BRACK@[312; 313) "["
71 IDENT@[313; 316) "doc" 71 IDENT@[313; 316) "doc"
72 TOKEN_TREE@[316; 408) 72 TOKEN_TREE@[316; 408)
73 L_PAREN@[316; 317) 73 L_PAREN@[316; 317) "("
74 STRING@[317; 407) 74 STRING@[317; 407) "\"Inner attributes are ..."
75 R_PAREN@[407; 408) 75 R_PAREN@[407; 408) ")"
76 R_BRACK@[408; 409) 76 R_BRACK@[408; 409) "]"
77 WHITESPACE@[409; 418) 77 WHITESPACE@[409; 418) "\n "
78 COMMENT@[418; 453) 78 COMMENT@[418; 453) "//! As are ModuleDoc ..."
79 WHITESPACE@[453; 458) 79 WHITESPACE@[453; 458) "\n "
80 R_CURLY@[458; 459) 80 R_CURLY@[458; 459) "}"
81 WHITESPACE@[459; 460) 81 WHITESPACE@[459; 460) "\n"
82 R_CURLY@[460; 461) 82 R_CURLY@[460; 461) "}"
83 WHITESPACE@[461; 463) 83 WHITESPACE@[461; 463) "\n\n"
84 COMMENT@[463; 523) 84 COMMENT@[463; 523) "// https://github.com ..."
85 WHITESPACE@[523; 524) 85 WHITESPACE@[523; 524) "\n"
86 IMPL_BLOCK@[524; 685) 86 IMPL_BLOCK@[524; 685)
87 IMPL_KW@[524; 528) 87 IMPL_KW@[524; 528) "impl"
88 WHITESPACE@[528; 529) 88 WHITESPACE@[528; 529) " "
89 PATH_TYPE@[529; 537) 89 PATH_TYPE@[529; 537)
90 PATH@[529; 537) 90 PATH@[529; 537)
91 PATH_SEGMENT@[529; 537) 91 PATH_SEGMENT@[529; 537)
92 NAME_REF@[529; 537) 92 NAME_REF@[529; 537)
93 IDENT@[529; 537) "Whatever" 93 IDENT@[529; 537) "Whatever"
94 WHITESPACE@[537; 538) 94 WHITESPACE@[537; 538) " "
95 ITEM_LIST@[538; 685) 95 ITEM_LIST@[538; 685)
96 L_CURLY@[538; 539) 96 L_CURLY@[538; 539) "{"
97 WHITESPACE@[539; 544) 97 WHITESPACE@[539; 544) "\n "
98 FN_DEF@[544; 683) 98 FN_DEF@[544; 683)
99 FN_KW@[544; 546) 99 FN_KW@[544; 546) "fn"
100 WHITESPACE@[546; 547) 100 WHITESPACE@[546; 547) " "
101 NAME@[547; 558) 101 NAME@[547; 558)
102 IDENT@[547; 558) "salsa_event" 102 IDENT@[547; 558) "salsa_event"
103 PARAM_LIST@[558; 601) 103 PARAM_LIST@[558; 601)
104 L_PAREN@[558; 559) 104 L_PAREN@[558; 559) "("
105 SELF_PARAM@[559; 564) 105 SELF_PARAM@[559; 564)
106 AMP@[559; 560) 106 AMP@[559; 560) "&"
107 SELF_KW@[560; 564) 107 SELF_KW@[560; 564) "self"
108 COMMA@[564; 565) 108 COMMA@[564; 565) ","
109 WHITESPACE@[565; 566) 109 WHITESPACE@[565; 566) " "
110 PARAM@[566; 600) 110 PARAM@[566; 600)
111 BIND_PAT@[566; 574) 111 BIND_PAT@[566; 574)
112 NAME@[566; 574) 112 NAME@[566; 574)
113 IDENT@[566; 574) "event_fn" 113 IDENT@[566; 574) "event_fn"
114 COLON@[574; 575) 114 COLON@[574; 575) ":"
115 WHITESPACE@[575; 576) 115 WHITESPACE@[575; 576) " "
116 IMPL_TRAIT_TYPE@[576; 600) 116 IMPL_TRAIT_TYPE@[576; 600)
117 IMPL_KW@[576; 580) 117 IMPL_KW@[576; 580) "impl"
118 WHITESPACE@[580; 581) 118 WHITESPACE@[580; 581) " "
119 PATH_TYPE@[581; 600) 119 TYPE_BOUND_LIST@[581; 600)
120 PATH@[581; 600) 120 TYPE_BOUND@[581; 600)
121 PATH_SEGMENT@[581; 600) 121 PATH_TYPE@[581; 600)
122 NAME_REF@[581; 583) 122 PATH@[581; 600)
123 IDENT@[581; 583) "Fn" 123 PATH_SEGMENT@[581; 600)
124 PARAM_LIST@[583; 585) 124 NAME_REF@[581; 583)
125 L_PAREN@[583; 584) 125 IDENT@[581; 583) "Fn"
126 R_PAREN@[584; 585) 126 PARAM_LIST@[583; 585)
127 WHITESPACE@[585; 586) 127 L_PAREN@[583; 584) "("
128 RET_TYPE@[586; 600) 128 R_PAREN@[584; 585) ")"
129 THIN_ARROW@[586; 588) 129 WHITESPACE@[585; 586) " "
130 WHITESPACE@[588; 589) 130 RET_TYPE@[586; 600)
131 PATH_TYPE@[589; 600) 131 THIN_ARROW@[586; 588) "->"
132 PATH@[589; 600) 132 WHITESPACE@[588; 589) " "
133 PATH_SEGMENT@[589; 600) 133 PATH_TYPE@[589; 600)
134 NAME_REF@[589; 594) 134 PATH@[589; 600)
135 IDENT@[589; 594) "Event" 135 PATH_SEGMENT@[589; 600)
136 TYPE_ARG_LIST@[594; 600) 136 NAME_REF@[589; 594)
137 L_ANGLE@[594; 595) 137 IDENT@[589; 594) "Event"
138 TYPE_ARG@[595; 599) 138 TYPE_ARG_LIST@[594; 600)
139 PATH_TYPE@[595; 599) 139 L_ANGLE@[594; 595) "<"
140 PATH@[595; 599) 140 TYPE_ARG@[595; 599)
141 PATH_SEGMENT@[595; 599) 141 PATH_TYPE@[595; 599)
142 NAME_REF@[595; 599) 142 PATH@[595; 599)
143 IDENT@[595; 599) "Self" 143 PATH_SEGMENT@[595; 599)
144 R_ANGLE@[599; 600) 144 NAME_REF@[595; 599)
145 R_PAREN@[600; 601) 145 IDENT@[595; 599) "Self"
146 WHITESPACE@[601; 602) 146 R_ANGLE@[599; 600) ">"
147 R_PAREN@[600; 601) ")"
148 WHITESPACE@[601; 602) " "
147 BLOCK@[602; 683) 149 BLOCK@[602; 683)
148 L_CURLY@[602; 603) 150 L_CURLY@[602; 603) "{"
149 WHITESPACE@[603; 612) 151 WHITESPACE@[603; 612) "\n "
150 ATTR@[612; 639) 152 ATTR@[612; 639)
151 POUND@[612; 613) 153 POUND@[612; 613) "#"
152 EXCL@[613; 614) 154 EXCL@[613; 614) "!"
153 TOKEN_TREE@[614; 639) 155 TOKEN_TREE@[614; 639)
154 L_BRACK@[614; 615) 156 L_BRACK@[614; 615) "["
155 IDENT@[615; 620) "allow" 157 IDENT@[615; 620) "allow"
156 TOKEN_TREE@[620; 638) 158 TOKEN_TREE@[620; 638)
157 L_PAREN@[620; 621) 159 L_PAREN@[620; 621) "("
158 IDENT@[621; 637) "unused_variables" 160 IDENT@[621; 637) "unused_variables"
159 R_PAREN@[637; 638) 161 R_PAREN@[637; 638) ")"
160 R_BRACK@[638; 639) 162 R_BRACK@[638; 639) "]"
161 WHITESPACE@[639; 640) 163 WHITESPACE@[639; 640) " "
162 COMMENT@[640; 677) 164 COMMENT@[640; 677) "// this is `inner_at ..."
163 WHITESPACE@[677; 682) 165 WHITESPACE@[677; 682) "\n "
164 R_CURLY@[682; 683) 166 R_CURLY@[682; 683) "}"
165 WHITESPACE@[683; 684) 167 WHITESPACE@[683; 684) "\n"
166 R_CURLY@[684; 685) 168 R_CURLY@[684; 685) "}"
167 WHITESPACE@[685; 686) 169 WHITESPACE@[685; 686) "\n"
diff --git a/crates/ra_syntax/tests/data/parser/ok/0046_extern_inner_attributes.txt b/crates/ra_syntax/tests/data/parser/ok/0046_extern_inner_attributes.txt
index c68e1b271..4487a6e2e 100644
--- a/crates/ra_syntax/tests/data/parser/ok/0046_extern_inner_attributes.txt
+++ b/crates/ra_syntax/tests/data/parser/ok/0046_extern_inner_attributes.txt
@@ -1,26 +1,26 @@
1SOURCE_FILE@[0; 87) 1SOURCE_FILE@[0; 87)
2 EXTERN_BLOCK@[0; 86) 2 EXTERN_BLOCK@[0; 86)
3 ABI@[0; 10) 3 ABI@[0; 10)
4 EXTERN_KW@[0; 6) 4 EXTERN_KW@[0; 6) "extern"
5 WHITESPACE@[6; 7) 5 WHITESPACE@[6; 7) " "
6 STRING@[7; 10) 6 STRING@[7; 10) "\"C\""
7 WHITESPACE@[10; 11) 7 WHITESPACE@[10; 11) " "
8 EXTERN_ITEM_LIST@[11; 86) 8 EXTERN_ITEM_LIST@[11; 86)
9 L_CURLY@[11; 12) 9 L_CURLY@[11; 12) "{"
10 WHITESPACE@[12; 17) 10 WHITESPACE@[12; 17) "\n "
11 COMMENT@[17; 42) 11 COMMENT@[17; 42) "//! This is a doc com ..."
12 WHITESPACE@[42; 47) 12 WHITESPACE@[42; 47) "\n "
13 ATTR@[47; 84) 13 ATTR@[47; 84)
14 POUND@[47; 48) 14 POUND@[47; 48) "#"
15 EXCL@[48; 49) 15 EXCL@[48; 49) "!"
16 TOKEN_TREE@[49; 84) 16 TOKEN_TREE@[49; 84)
17 L_BRACK@[49; 50) 17 L_BRACK@[49; 50) "["
18 IDENT@[50; 53) "doc" 18 IDENT@[50; 53) "doc"
19 TOKEN_TREE@[53; 83) 19 TOKEN_TREE@[53; 83)
20 L_PAREN@[53; 54) 20 L_PAREN@[53; 54) "("
21 STRING@[54; 82) 21 STRING@[54; 82) "\"This is also a doc c ..."
22 R_PAREN@[82; 83) 22 R_PAREN@[82; 83) ")"
23 R_BRACK@[83; 84) 23 R_BRACK@[83; 84) "]"
24 WHITESPACE@[84; 85) 24 WHITESPACE@[84; 85) "\n"
25 R_CURLY@[85; 86) 25 R_CURLY@[85; 86) "}"
26 WHITESPACE@[86; 87) 26 WHITESPACE@[86; 87) "\n"
diff --git a/crates/ra_syntax/tests/data/parser/ok/0047_minus_in_inner_pattern.txt b/crates/ra_syntax/tests/data/parser/ok/0047_minus_in_inner_pattern.txt
index ca66b44bb..917b50ddf 100644
--- a/crates/ra_syntax/tests/data/parser/ok/0047_minus_in_inner_pattern.txt
+++ b/crates/ra_syntax/tests/data/parser/ok/0047_minus_in_inner_pattern.txt
@@ -1,22 +1,22 @@
1SOURCE_FILE@[0; 395) 1SOURCE_FILE@[0; 395)
2 COMMENT@[0; 60) 2 COMMENT@[0; 60) "// https://github.com ..."
3 WHITESPACE@[60; 62) 3 WHITESPACE@[60; 62) "\n\n"
4 FN_DEF@[62; 341) 4 FN_DEF@[62; 341)
5 FN_KW@[62; 64) 5 FN_KW@[62; 64) "fn"
6 WHITESPACE@[64; 65) 6 WHITESPACE@[64; 65) " "
7 NAME@[65; 69) 7 NAME@[65; 69)
8 IDENT@[65; 69) "main" 8 IDENT@[65; 69) "main"
9 PARAM_LIST@[69; 71) 9 PARAM_LIST@[69; 71)
10 L_PAREN@[69; 70) 10 L_PAREN@[69; 70) "("
11 R_PAREN@[70; 71) 11 R_PAREN@[70; 71) ")"
12 WHITESPACE@[71; 72) 12 WHITESPACE@[71; 72) " "
13 BLOCK@[72; 341) 13 BLOCK@[72; 341)
14 L_CURLY@[72; 73) 14 L_CURLY@[72; 73) "{"
15 WHITESPACE@[73; 78) 15 WHITESPACE@[73; 78) "\n "
16 EXPR_STMT@[78; 141) 16 EXPR_STMT@[78; 141)
17 MATCH_EXPR@[78; 141) 17 MATCH_EXPR@[78; 141)
18 MATCH_KW@[78; 83) 18 MATCH_KW@[78; 83) "match"
19 WHITESPACE@[83; 84) 19 WHITESPACE@[83; 84) " "
20 CALL_EXPR@[84; 92) 20 CALL_EXPR@[84; 92)
21 PATH_EXPR@[84; 88) 21 PATH_EXPR@[84; 88)
22 PATH@[84; 88) 22 PATH@[84; 88)
@@ -24,53 +24,53 @@ SOURCE_FILE@[0; 395)
24 NAME_REF@[84; 88) 24 NAME_REF@[84; 88)
25 IDENT@[84; 88) "Some" 25 IDENT@[84; 88) "Some"
26 ARG_LIST@[88; 92) 26 ARG_LIST@[88; 92)
27 L_PAREN@[88; 89) 27 L_PAREN@[88; 89) "("
28 PREFIX_EXPR@[89; 91) 28 PREFIX_EXPR@[89; 91)
29 MINUS@[89; 90) 29 MINUS@[89; 90) "-"
30 LITERAL@[90; 91) 30 LITERAL@[90; 91)
31 INT_NUMBER@[90; 91) "1" 31 INT_NUMBER@[90; 91) "1"
32 R_PAREN@[91; 92) 32 R_PAREN@[91; 92) ")"
33 WHITESPACE@[92; 93) 33 WHITESPACE@[92; 93) " "
34 MATCH_ARM_LIST@[93; 141) 34 MATCH_ARM_LIST@[93; 141)
35 L_CURLY@[93; 94) 35 L_CURLY@[93; 94) "{"
36 WHITESPACE@[94; 103) 36 WHITESPACE@[94; 103) "\n "
37 MATCH_ARM@[103; 117) 37 MATCH_ARM@[103; 117)
38 TUPLE_STRUCT_PAT@[103; 111) 38 TUPLE_STRUCT_PAT@[103; 111)
39 PATH@[103; 107) 39 PATH@[103; 107)
40 PATH_SEGMENT@[103; 107) 40 PATH_SEGMENT@[103; 107)
41 NAME_REF@[103; 107) 41 NAME_REF@[103; 107)
42 IDENT@[103; 107) "Some" 42 IDENT@[103; 107) "Some"
43 L_PAREN@[107; 108) 43 L_PAREN@[107; 108) "("
44 LITERAL_PAT@[108; 110) 44 LITERAL_PAT@[108; 110)
45 MINUS@[108; 109) 45 MINUS@[108; 109) "-"
46 LITERAL@[109; 110) 46 LITERAL@[109; 110)
47 INT_NUMBER@[109; 110) "1" 47 INT_NUMBER@[109; 110) "1"
48 R_PAREN@[110; 111) 48 R_PAREN@[110; 111) ")"
49 WHITESPACE@[111; 112) 49 WHITESPACE@[111; 112) " "
50 FAT_ARROW@[112; 114) 50 FAT_ARROW@[112; 114) "=>"
51 WHITESPACE@[114; 115) 51 WHITESPACE@[114; 115) " "
52 TUPLE_EXPR@[115; 117) 52 TUPLE_EXPR@[115; 117)
53 L_PAREN@[115; 116) 53 L_PAREN@[115; 116) "("
54 R_PAREN@[116; 117) 54 R_PAREN@[116; 117) ")"
55 COMMA@[117; 118) 55 COMMA@[117; 118) ","
56 WHITESPACE@[118; 127) 56 WHITESPACE@[118; 127) "\n "
57 MATCH_ARM@[127; 134) 57 MATCH_ARM@[127; 134)
58 PLACEHOLDER_PAT@[127; 128) 58 PLACEHOLDER_PAT@[127; 128)
59 UNDERSCORE@[127; 128) 59 UNDERSCORE@[127; 128) "_"
60 WHITESPACE@[128; 129) 60 WHITESPACE@[128; 129) " "
61 FAT_ARROW@[129; 131) 61 FAT_ARROW@[129; 131) "=>"
62 WHITESPACE@[131; 132) 62 WHITESPACE@[131; 132) " "
63 TUPLE_EXPR@[132; 134) 63 TUPLE_EXPR@[132; 134)
64 L_PAREN@[132; 133) 64 L_PAREN@[132; 133) "("
65 R_PAREN@[133; 134) 65 R_PAREN@[133; 134) ")"
66 COMMA@[134; 135) 66 COMMA@[134; 135) ","
67 WHITESPACE@[135; 140) 67 WHITESPACE@[135; 140) "\n "
68 R_CURLY@[140; 141) 68 R_CURLY@[140; 141) "}"
69 WHITESPACE@[141; 147) 69 WHITESPACE@[141; 147) "\n\n "
70 EXPR_STMT@[147; 222) 70 EXPR_STMT@[147; 222)
71 MATCH_EXPR@[147; 222) 71 MATCH_EXPR@[147; 222)
72 MATCH_KW@[147; 152) 72 MATCH_KW@[147; 152) "match"
73 WHITESPACE@[152; 153) 73 WHITESPACE@[152; 153) " "
74 CALL_EXPR@[153; 167) 74 CALL_EXPR@[153; 167)
75 PATH_EXPR@[153; 157) 75 PATH_EXPR@[153; 157)
76 PATH@[153; 157) 76 PATH@[153; 157)
@@ -78,71 +78,71 @@ SOURCE_FILE@[0; 395)
78 NAME_REF@[153; 157) 78 NAME_REF@[153; 157)
79 IDENT@[153; 157) "Some" 79 IDENT@[153; 157) "Some"
80 ARG_LIST@[157; 167) 80 ARG_LIST@[157; 167)
81 L_PAREN@[157; 158) 81 L_PAREN@[157; 158) "("
82 TUPLE_EXPR@[158; 166) 82 TUPLE_EXPR@[158; 166)
83 L_PAREN@[158; 159) 83 L_PAREN@[158; 159) "("
84 PREFIX_EXPR@[159; 161) 84 PREFIX_EXPR@[159; 161)
85 MINUS@[159; 160) 85 MINUS@[159; 160) "-"
86 LITERAL@[160; 161) 86 LITERAL@[160; 161)
87 INT_NUMBER@[160; 161) "1" 87 INT_NUMBER@[160; 161) "1"
88 COMMA@[161; 162) 88 COMMA@[161; 162) ","
89 WHITESPACE@[162; 163) 89 WHITESPACE@[162; 163) " "
90 PREFIX_EXPR@[163; 165) 90 PREFIX_EXPR@[163; 165)
91 MINUS@[163; 164) 91 MINUS@[163; 164) "-"
92 LITERAL@[164; 165) 92 LITERAL@[164; 165)
93 INT_NUMBER@[164; 165) "1" 93 INT_NUMBER@[164; 165) "1"
94 R_PAREN@[165; 166) 94 R_PAREN@[165; 166) ")"
95 R_PAREN@[166; 167) 95 R_PAREN@[166; 167) ")"
96 WHITESPACE@[167; 168) 96 WHITESPACE@[167; 168) " "
97 MATCH_ARM_LIST@[168; 222) 97 MATCH_ARM_LIST@[168; 222)
98 L_CURLY@[168; 169) 98 L_CURLY@[168; 169) "{"
99 WHITESPACE@[169; 178) 99 WHITESPACE@[169; 178) "\n "
100 MATCH_ARM@[178; 198) 100 MATCH_ARM@[178; 198)
101 TUPLE_STRUCT_PAT@[178; 192) 101 TUPLE_STRUCT_PAT@[178; 192)
102 PATH@[178; 182) 102 PATH@[178; 182)
103 PATH_SEGMENT@[178; 182) 103 PATH_SEGMENT@[178; 182)
104 NAME_REF@[178; 182) 104 NAME_REF@[178; 182)
105 IDENT@[178; 182) "Some" 105 IDENT@[178; 182) "Some"
106 L_PAREN@[182; 183) 106 L_PAREN@[182; 183) "("
107 TUPLE_PAT@[183; 191) 107 TUPLE_PAT@[183; 191)
108 L_PAREN@[183; 184) 108 L_PAREN@[183; 184) "("
109 LITERAL_PAT@[184; 186) 109 LITERAL_PAT@[184; 186)
110 MINUS@[184; 185) 110 MINUS@[184; 185) "-"
111 LITERAL@[185; 186) 111 LITERAL@[185; 186)
112 INT_NUMBER@[185; 186) "1" 112 INT_NUMBER@[185; 186) "1"
113 COMMA@[186; 187) 113 COMMA@[186; 187) ","
114 WHITESPACE@[187; 188) 114 WHITESPACE@[187; 188) " "
115 LITERAL_PAT@[188; 190) 115 LITERAL_PAT@[188; 190)
116 MINUS@[188; 189) 116 MINUS@[188; 189) "-"
117 LITERAL@[189; 190) 117 LITERAL@[189; 190)
118 INT_NUMBER@[189; 190) "1" 118 INT_NUMBER@[189; 190) "1"
119 R_PAREN@[190; 191) 119 R_PAREN@[190; 191) ")"
120 R_PAREN@[191; 192) 120 R_PAREN@[191; 192) ")"
121 WHITESPACE@[192; 193) 121 WHITESPACE@[192; 193) " "
122 FAT_ARROW@[193; 195) 122 FAT_ARROW@[193; 195) "=>"
123 WHITESPACE@[195; 196) 123 WHITESPACE@[195; 196) " "
124 TUPLE_EXPR@[196; 198) 124 TUPLE_EXPR@[196; 198)
125 L_PAREN@[196; 197) 125 L_PAREN@[196; 197) "("
126 R_PAREN@[197; 198) 126 R_PAREN@[197; 198) ")"
127 COMMA@[198; 199) 127 COMMA@[198; 199) ","
128 WHITESPACE@[199; 208) 128 WHITESPACE@[199; 208) "\n "
129 MATCH_ARM@[208; 215) 129 MATCH_ARM@[208; 215)
130 PLACEHOLDER_PAT@[208; 209) 130 PLACEHOLDER_PAT@[208; 209)
131 UNDERSCORE@[208; 209) 131 UNDERSCORE@[208; 209) "_"
132 WHITESPACE@[209; 210) 132 WHITESPACE@[209; 210) " "
133 FAT_ARROW@[210; 212) 133 FAT_ARROW@[210; 212) "=>"
134 WHITESPACE@[212; 213) 134 WHITESPACE@[212; 213) " "
135 TUPLE_EXPR@[213; 215) 135 TUPLE_EXPR@[213; 215)
136 L_PAREN@[213; 214) 136 L_PAREN@[213; 214) "("
137 R_PAREN@[214; 215) 137 R_PAREN@[214; 215) ")"
138 COMMA@[215; 216) 138 COMMA@[215; 216) ","
139 WHITESPACE@[216; 221) 139 WHITESPACE@[216; 221) "\n "
140 R_CURLY@[221; 222) 140 R_CURLY@[221; 222) "}"
141 WHITESPACE@[222; 228) 141 WHITESPACE@[222; 228) "\n\n "
142 EXPR_STMT@[228; 299) 142 EXPR_STMT@[228; 299)
143 MATCH_EXPR@[228; 299) 143 MATCH_EXPR@[228; 299)
144 MATCH_KW@[228; 233) 144 MATCH_KW@[228; 233) "match"
145 WHITESPACE@[233; 234) 145 WHITESPACE@[233; 234) " "
146 CALL_EXPR@[234; 246) 146 CALL_EXPR@[234; 246)
147 PATH_EXPR@[234; 238) 147 PATH_EXPR@[234; 238)
148 PATH@[234; 238) 148 PATH@[234; 238)
@@ -150,27 +150,27 @@ SOURCE_FILE@[0; 395)
150 PATH_SEGMENT@[234; 235) 150 PATH_SEGMENT@[234; 235)
151 NAME_REF@[234; 235) 151 NAME_REF@[234; 235)
152 IDENT@[234; 235) "A" 152 IDENT@[234; 235) "A"
153 COLONCOLON@[235; 237) 153 COLONCOLON@[235; 237) "::"
154 PATH_SEGMENT@[237; 238) 154 PATH_SEGMENT@[237; 238)
155 NAME_REF@[237; 238) 155 NAME_REF@[237; 238)
156 IDENT@[237; 238) "B" 156 IDENT@[237; 238) "B"
157 ARG_LIST@[238; 246) 157 ARG_LIST@[238; 246)
158 L_PAREN@[238; 239) 158 L_PAREN@[238; 239) "("
159 PREFIX_EXPR@[239; 241) 159 PREFIX_EXPR@[239; 241)
160 MINUS@[239; 240) 160 MINUS@[239; 240) "-"
161 LITERAL@[240; 241) 161 LITERAL@[240; 241)
162 INT_NUMBER@[240; 241) "1" 162 INT_NUMBER@[240; 241) "1"
163 COMMA@[241; 242) 163 COMMA@[241; 242) ","
164 WHITESPACE@[242; 243) 164 WHITESPACE@[242; 243) " "
165 PREFIX_EXPR@[243; 245) 165 PREFIX_EXPR@[243; 245)
166 MINUS@[243; 244) 166 MINUS@[243; 244) "-"
167 LITERAL@[244; 245) 167 LITERAL@[244; 245)
168 INT_NUMBER@[244; 245) "1" 168 INT_NUMBER@[244; 245) "1"
169 R_PAREN@[245; 246) 169 R_PAREN@[245; 246) ")"
170 WHITESPACE@[246; 247) 170 WHITESPACE@[246; 247) " "
171 MATCH_ARM_LIST@[247; 299) 171 MATCH_ARM_LIST@[247; 299)
172 L_CURLY@[247; 248) 172 L_CURLY@[247; 248) "{"
173 WHITESPACE@[248; 257) 173 WHITESPACE@[248; 257) "\n "
174 MATCH_ARM@[257; 275) 174 MATCH_ARM@[257; 275)
175 TUPLE_STRUCT_PAT@[257; 269) 175 TUPLE_STRUCT_PAT@[257; 269)
176 PATH@[257; 261) 176 PATH@[257; 261)
@@ -178,63 +178,63 @@ SOURCE_FILE@[0; 395)
178 PATH_SEGMENT@[257; 258) 178 PATH_SEGMENT@[257; 258)
179 NAME_REF@[257; 258) 179 NAME_REF@[257; 258)
180 IDENT@[257; 258) "A" 180 IDENT@[257; 258) "A"
181 COLONCOLON@[258; 260) 181 COLONCOLON@[258; 260) "::"
182 PATH_SEGMENT@[260; 261) 182 PATH_SEGMENT@[260; 261)
183 NAME_REF@[260; 261) 183 NAME_REF@[260; 261)
184 IDENT@[260; 261) "B" 184 IDENT@[260; 261) "B"
185 L_PAREN@[261; 262) 185 L_PAREN@[261; 262) "("
186 LITERAL_PAT@[262; 264) 186 LITERAL_PAT@[262; 264)
187 MINUS@[262; 263) 187 MINUS@[262; 263) "-"
188 LITERAL@[263; 264) 188 LITERAL@[263; 264)
189 INT_NUMBER@[263; 264) "1" 189 INT_NUMBER@[263; 264) "1"
190 COMMA@[264; 265) 190 COMMA@[264; 265) ","
191 WHITESPACE@[265; 266) 191 WHITESPACE@[265; 266) " "
192 LITERAL_PAT@[266; 268) 192 LITERAL_PAT@[266; 268)
193 MINUS@[266; 267) 193 MINUS@[266; 267) "-"
194 LITERAL@[267; 268) 194 LITERAL@[267; 268)
195 INT_NUMBER@[267; 268) "1" 195 INT_NUMBER@[267; 268) "1"
196 R_PAREN@[268; 269) 196 R_PAREN@[268; 269) ")"
197 WHITESPACE@[269; 270) 197 WHITESPACE@[269; 270) " "
198 FAT_ARROW@[270; 272) 198 FAT_ARROW@[270; 272) "=>"
199 WHITESPACE@[272; 273) 199 WHITESPACE@[272; 273) " "
200 TUPLE_EXPR@[273; 275) 200 TUPLE_EXPR@[273; 275)
201 L_PAREN@[273; 274) 201 L_PAREN@[273; 274) "("
202 R_PAREN@[274; 275) 202 R_PAREN@[274; 275) ")"
203 COMMA@[275; 276) 203 COMMA@[275; 276) ","
204 WHITESPACE@[276; 285) 204 WHITESPACE@[276; 285) "\n "
205 MATCH_ARM@[285; 292) 205 MATCH_ARM@[285; 292)
206 PLACEHOLDER_PAT@[285; 286) 206 PLACEHOLDER_PAT@[285; 286)
207 UNDERSCORE@[285; 286) 207 UNDERSCORE@[285; 286) "_"
208 WHITESPACE@[286; 287) 208 WHITESPACE@[286; 287) " "
209 FAT_ARROW@[287; 289) 209 FAT_ARROW@[287; 289) "=>"
210 WHITESPACE@[289; 290) 210 WHITESPACE@[289; 290) " "
211 TUPLE_EXPR@[290; 292) 211 TUPLE_EXPR@[290; 292)
212 L_PAREN@[290; 291) 212 L_PAREN@[290; 291) "("
213 R_PAREN@[291; 292) 213 R_PAREN@[291; 292) ")"
214 COMMA@[292; 293) 214 COMMA@[292; 293) ","
215 WHITESPACE@[293; 298) 215 WHITESPACE@[293; 298) "\n "
216 R_CURLY@[298; 299) 216 R_CURLY@[298; 299) "}"
217 WHITESPACE@[299; 305) 217 WHITESPACE@[299; 305) "\n\n "
218 IF_EXPR@[305; 339) 218 IF_EXPR@[305; 339)
219 IF_KW@[305; 307) 219 IF_KW@[305; 307) "if"
220 WHITESPACE@[307; 308) 220 WHITESPACE@[307; 308) " "
221 CONDITION@[308; 331) 221 CONDITION@[308; 331)
222 LET_KW@[308; 311) 222 LET_KW@[308; 311) "let"
223 WHITESPACE@[311; 312) 223 WHITESPACE@[311; 312) " "
224 TUPLE_STRUCT_PAT@[312; 320) 224 TUPLE_STRUCT_PAT@[312; 320)
225 PATH@[312; 316) 225 PATH@[312; 316)
226 PATH_SEGMENT@[312; 316) 226 PATH_SEGMENT@[312; 316)
227 NAME_REF@[312; 316) 227 NAME_REF@[312; 316)
228 IDENT@[312; 316) "Some" 228 IDENT@[312; 316) "Some"
229 L_PAREN@[316; 317) 229 L_PAREN@[316; 317) "("
230 LITERAL_PAT@[317; 319) 230 LITERAL_PAT@[317; 319)
231 MINUS@[317; 318) 231 MINUS@[317; 318) "-"
232 LITERAL@[318; 319) 232 LITERAL@[318; 319)
233 INT_NUMBER@[318; 319) "1" 233 INT_NUMBER@[318; 319) "1"
234 R_PAREN@[319; 320) 234 R_PAREN@[319; 320) ")"
235 WHITESPACE@[320; 321) 235 WHITESPACE@[320; 321) " "
236 EQ@[321; 322) 236 EQ@[321; 322) "="
237 WHITESPACE@[322; 323) 237 WHITESPACE@[322; 323) " "
238 CALL_EXPR@[323; 331) 238 CALL_EXPR@[323; 331)
239 PATH_EXPR@[323; 327) 239 PATH_EXPR@[323; 327)
240 PATH@[323; 327) 240 PATH@[323; 327)
@@ -242,79 +242,79 @@ SOURCE_FILE@[0; 395)
242 NAME_REF@[323; 327) 242 NAME_REF@[323; 327)
243 IDENT@[323; 327) "Some" 243 IDENT@[323; 327) "Some"
244 ARG_LIST@[327; 331) 244 ARG_LIST@[327; 331)
245 L_PAREN@[327; 328) 245 L_PAREN@[327; 328) "("
246 PREFIX_EXPR@[328; 330) 246 PREFIX_EXPR@[328; 330)
247 MINUS@[328; 329) 247 MINUS@[328; 329) "-"
248 LITERAL@[329; 330) 248 LITERAL@[329; 330)
249 INT_NUMBER@[329; 330) "1" 249 INT_NUMBER@[329; 330) "1"
250 R_PAREN@[330; 331) 250 R_PAREN@[330; 331) ")"
251 WHITESPACE@[331; 332) 251 WHITESPACE@[331; 332) " "
252 BLOCK@[332; 339) 252 BLOCK@[332; 339)
253 L_CURLY@[332; 333) 253 L_CURLY@[332; 333) "{"
254 WHITESPACE@[333; 338) 254 WHITESPACE@[333; 338) "\n "
255 R_CURLY@[338; 339) 255 R_CURLY@[338; 339) "}"
256 WHITESPACE@[339; 340) 256 WHITESPACE@[339; 340) "\n"
257 R_CURLY@[340; 341) 257 R_CURLY@[340; 341) "}"
258 WHITESPACE@[341; 343) 258 WHITESPACE@[341; 343) "\n\n"
259 ENUM_DEF@[343; 367) 259 ENUM_DEF@[343; 367)
260 ENUM_KW@[343; 347) 260 ENUM_KW@[343; 347) "enum"
261 WHITESPACE@[347; 348) 261 WHITESPACE@[347; 348) " "
262 NAME@[348; 349) 262 NAME@[348; 349)
263 IDENT@[348; 349) "A" 263 IDENT@[348; 349) "A"
264 WHITESPACE@[349; 350) 264 WHITESPACE@[349; 350) " "
265 ENUM_VARIANT_LIST@[350; 367) 265 ENUM_VARIANT_LIST@[350; 367)
266 L_CURLY@[350; 351) 266 L_CURLY@[350; 351) "{"
267 WHITESPACE@[351; 356) 267 WHITESPACE@[351; 356) "\n "
268 ENUM_VARIANT@[356; 365) 268 ENUM_VARIANT@[356; 365)
269 NAME@[356; 357) 269 NAME@[356; 357)
270 IDENT@[356; 357) "B" 270 IDENT@[356; 357) "B"
271 POS_FIELD_DEF_LIST@[357; 365) 271 POS_FIELD_DEF_LIST@[357; 365)
272 L_PAREN@[357; 358) 272 L_PAREN@[357; 358) "("
273 POS_FIELD_DEF@[358; 360) 273 POS_FIELD_DEF@[358; 360)
274 PATH_TYPE@[358; 360) 274 PATH_TYPE@[358; 360)
275 PATH@[358; 360) 275 PATH@[358; 360)
276 PATH_SEGMENT@[358; 360) 276 PATH_SEGMENT@[358; 360)
277 NAME_REF@[358; 360) 277 NAME_REF@[358; 360)
278 IDENT@[358; 360) "i8" 278 IDENT@[358; 360) "i8"
279 COMMA@[360; 361) 279 COMMA@[360; 361) ","
280 WHITESPACE@[361; 362) 280 WHITESPACE@[361; 362) " "
281 POS_FIELD_DEF@[362; 364) 281 POS_FIELD_DEF@[362; 364)
282 PATH_TYPE@[362; 364) 282 PATH_TYPE@[362; 364)
283 PATH@[362; 364) 283 PATH@[362; 364)
284 PATH_SEGMENT@[362; 364) 284 PATH_SEGMENT@[362; 364)
285 NAME_REF@[362; 364) 285 NAME_REF@[362; 364)
286 IDENT@[362; 364) "i8" 286 IDENT@[362; 364) "i8"
287 R_PAREN@[364; 365) 287 R_PAREN@[364; 365) ")"
288 WHITESPACE@[365; 366) 288 WHITESPACE@[365; 366) "\n"
289 R_CURLY@[366; 367) 289 R_CURLY@[366; 367) "}"
290 WHITESPACE@[367; 369) 290 WHITESPACE@[367; 369) "\n\n"
291 FN_DEF@[369; 394) 291 FN_DEF@[369; 394)
292 FN_KW@[369; 371) 292 FN_KW@[369; 371) "fn"
293 WHITESPACE@[371; 372) 293 WHITESPACE@[371; 372) " "
294 NAME@[372; 375) 294 NAME@[372; 375)
295 IDENT@[372; 375) "foo" 295 IDENT@[372; 375) "foo"
296 PARAM_LIST@[375; 391) 296 PARAM_LIST@[375; 391)
297 L_PAREN@[375; 376) 297 L_PAREN@[375; 376) "("
298 PARAM@[376; 390) 298 PARAM@[376; 390)
299 RANGE_PAT@[376; 386) 299 RANGE_PAT@[376; 386)
300 LITERAL_PAT@[376; 380) 300 LITERAL_PAT@[376; 380)
301 MINUS@[376; 377) 301 MINUS@[376; 377) "-"
302 LITERAL@[377; 380) 302 LITERAL@[377; 380)
303 INT_NUMBER@[377; 380) "128" 303 INT_NUMBER@[377; 380) "128"
304 DOTDOTEQ@[380; 383) 304 DOTDOTEQ@[380; 383) "..="
305 LITERAL_PAT@[383; 386) 305 LITERAL_PAT@[383; 386)
306 LITERAL@[383; 386) 306 LITERAL@[383; 386)
307 INT_NUMBER@[383; 386) "127" 307 INT_NUMBER@[383; 386) "127"
308 COLON@[386; 387) 308 COLON@[386; 387) ":"
309 WHITESPACE@[387; 388) 309 WHITESPACE@[387; 388) " "
310 PATH_TYPE@[388; 390) 310 PATH_TYPE@[388; 390)
311 PATH@[388; 390) 311 PATH@[388; 390)
312 PATH_SEGMENT@[388; 390) 312 PATH_SEGMENT@[388; 390)
313 NAME_REF@[388; 390) 313 NAME_REF@[388; 390)
314 IDENT@[388; 390) "i8" 314 IDENT@[388; 390) "i8"
315 R_PAREN@[390; 391) 315 R_PAREN@[390; 391) ")"
316 WHITESPACE@[391; 392) 316 WHITESPACE@[391; 392) " "
317 BLOCK@[392; 394) 317 BLOCK@[392; 394)
318 L_CURLY@[392; 393) 318 L_CURLY@[392; 393) "{"
319 R_CURLY@[393; 394) 319 R_CURLY@[393; 394) "}"
320 WHITESPACE@[394; 395) 320 WHITESPACE@[394; 395) "\n"
diff --git a/crates/ra_syntax/tests/data/parser/ok/0048_compound_assignment.txt b/crates/ra_syntax/tests/data/parser/ok/0048_compound_assignment.txt
index c5ff06823..3fca4993a 100644
--- a/crates/ra_syntax/tests/data/parser/ok/0048_compound_assignment.txt
+++ b/crates/ra_syntax/tests/data/parser/ok/0048_compound_assignment.txt
@@ -1,33 +1,33 @@
1SOURCE_FILE@[0; 257) 1SOURCE_FILE@[0; 257)
2 COMMENT@[0; 58) 2 COMMENT@[0; 58) "// https://github.com ..."
3 WHITESPACE@[58; 60) 3 WHITESPACE@[58; 60) "\n\n"
4 FN_DEF@[60; 256) 4 FN_DEF@[60; 256)
5 FN_KW@[60; 62) 5 FN_KW@[60; 62) "fn"
6 WHITESPACE@[62; 63) 6 WHITESPACE@[62; 63) " "
7 NAME@[63; 82) 7 NAME@[63; 82)
8 IDENT@[63; 82) "compound_assignment" 8 IDENT@[63; 82) "compound_assignment"
9 PARAM_LIST@[82; 84) 9 PARAM_LIST@[82; 84)
10 L_PAREN@[82; 83) 10 L_PAREN@[82; 83) "("
11 R_PAREN@[83; 84) 11 R_PAREN@[83; 84) ")"
12 WHITESPACE@[84; 85) 12 WHITESPACE@[84; 85) " "
13 BLOCK@[85; 256) 13 BLOCK@[85; 256)
14 L_CURLY@[85; 86) 14 L_CURLY@[85; 86) "{"
15 WHITESPACE@[86; 91) 15 WHITESPACE@[86; 91) "\n "
16 LET_STMT@[91; 105) 16 LET_STMT@[91; 105)
17 LET_KW@[91; 94) 17 LET_KW@[91; 94) "let"
18 WHITESPACE@[94; 95) 18 WHITESPACE@[94; 95) " "
19 BIND_PAT@[95; 100) 19 BIND_PAT@[95; 100)
20 MUT_KW@[95; 98) 20 MUT_KW@[95; 98) "mut"
21 WHITESPACE@[98; 99) 21 WHITESPACE@[98; 99) " "
22 NAME@[99; 100) 22 NAME@[99; 100)
23 IDENT@[99; 100) "a" 23 IDENT@[99; 100) "a"
24 WHITESPACE@[100; 101) 24 WHITESPACE@[100; 101) " "
25 EQ@[101; 102) 25 EQ@[101; 102) "="
26 WHITESPACE@[102; 103) 26 WHITESPACE@[102; 103) " "
27 LITERAL@[103; 104) 27 LITERAL@[103; 104)
28 INT_NUMBER@[103; 104) "0" 28 INT_NUMBER@[103; 104) "0"
29 SEMI@[104; 105) 29 SEMI@[104; 105) ";"
30 WHITESPACE@[105; 110) 30 WHITESPACE@[105; 110) "\n "
31 EXPR_STMT@[110; 117) 31 EXPR_STMT@[110; 117)
32 BIN_EXPR@[110; 116) 32 BIN_EXPR@[110; 116)
33 PATH_EXPR@[110; 111) 33 PATH_EXPR@[110; 111)
@@ -35,13 +35,13 @@ SOURCE_FILE@[0; 257)
35 PATH_SEGMENT@[110; 111) 35 PATH_SEGMENT@[110; 111)
36 NAME_REF@[110; 111) 36 NAME_REF@[110; 111)
37 IDENT@[110; 111) "a" 37 IDENT@[110; 111) "a"
38 WHITESPACE@[111; 112) 38 WHITESPACE@[111; 112) " "
39 PLUSEQ@[112; 114) 39 PLUSEQ@[112; 114) "+="
40 WHITESPACE@[114; 115) 40 WHITESPACE@[114; 115) " "
41 LITERAL@[115; 116) 41 LITERAL@[115; 116)
42 INT_NUMBER@[115; 116) "1" 42 INT_NUMBER@[115; 116) "1"
43 SEMI@[116; 117) 43 SEMI@[116; 117) ";"
44 WHITESPACE@[117; 122) 44 WHITESPACE@[117; 122) "\n "
45 EXPR_STMT@[122; 129) 45 EXPR_STMT@[122; 129)
46 BIN_EXPR@[122; 128) 46 BIN_EXPR@[122; 128)
47 PATH_EXPR@[122; 123) 47 PATH_EXPR@[122; 123)
@@ -49,13 +49,13 @@ SOURCE_FILE@[0; 257)
49 PATH_SEGMENT@[122; 123) 49 PATH_SEGMENT@[122; 123)
50 NAME_REF@[122; 123) 50 NAME_REF@[122; 123)
51 IDENT@[122; 123) "a" 51 IDENT@[122; 123) "a"
52 WHITESPACE@[123; 124) 52 WHITESPACE@[123; 124) " "
53 MINUSEQ@[124; 126) 53 MINUSEQ@[124; 126) "-="
54 WHITESPACE@[126; 127) 54 WHITESPACE@[126; 127) " "
55 LITERAL@[127; 128) 55 LITERAL@[127; 128)
56 INT_NUMBER@[127; 128) "2" 56 INT_NUMBER@[127; 128) "2"
57 SEMI@[128; 129) 57 SEMI@[128; 129) ";"
58 WHITESPACE@[129; 134) 58 WHITESPACE@[129; 134) "\n "
59 EXPR_STMT@[134; 141) 59 EXPR_STMT@[134; 141)
60 BIN_EXPR@[134; 140) 60 BIN_EXPR@[134; 140)
61 PATH_EXPR@[134; 135) 61 PATH_EXPR@[134; 135)
@@ -63,13 +63,13 @@ SOURCE_FILE@[0; 257)
63 PATH_SEGMENT@[134; 135) 63 PATH_SEGMENT@[134; 135)
64 NAME_REF@[134; 135) 64 NAME_REF@[134; 135)
65 IDENT@[134; 135) "a" 65 IDENT@[134; 135) "a"
66 WHITESPACE@[135; 136) 66 WHITESPACE@[135; 136) " "
67 STAREQ@[136; 138) 67 STAREQ@[136; 138) "*="
68 WHITESPACE@[138; 139) 68 WHITESPACE@[138; 139) " "
69 LITERAL@[139; 140) 69 LITERAL@[139; 140)
70 INT_NUMBER@[139; 140) "3" 70 INT_NUMBER@[139; 140) "3"
71 SEMI@[140; 141) 71 SEMI@[140; 141) ";"
72 WHITESPACE@[141; 146) 72 WHITESPACE@[141; 146) "\n "
73 EXPR_STMT@[146; 153) 73 EXPR_STMT@[146; 153)
74 BIN_EXPR@[146; 152) 74 BIN_EXPR@[146; 152)
75 PATH_EXPR@[146; 147) 75 PATH_EXPR@[146; 147)
@@ -77,13 +77,13 @@ SOURCE_FILE@[0; 257)
77 PATH_SEGMENT@[146; 147) 77 PATH_SEGMENT@[146; 147)
78 NAME_REF@[146; 147) 78 NAME_REF@[146; 147)
79 IDENT@[146; 147) "a" 79 IDENT@[146; 147) "a"
80 WHITESPACE@[147; 148) 80 WHITESPACE@[147; 148) " "
81 PERCENTEQ@[148; 150) 81 PERCENTEQ@[148; 150) "%="
82 WHITESPACE@[150; 151) 82 WHITESPACE@[150; 151) " "
83 LITERAL@[151; 152) 83 LITERAL@[151; 152)
84 INT_NUMBER@[151; 152) "4" 84 INT_NUMBER@[151; 152) "4"
85 SEMI@[152; 153) 85 SEMI@[152; 153) ";"
86 WHITESPACE@[153; 158) 86 WHITESPACE@[153; 158) "\n "
87 EXPR_STMT@[158; 165) 87 EXPR_STMT@[158; 165)
88 BIN_EXPR@[158; 164) 88 BIN_EXPR@[158; 164)
89 PATH_EXPR@[158; 159) 89 PATH_EXPR@[158; 159)
@@ -91,13 +91,13 @@ SOURCE_FILE@[0; 257)
91 PATH_SEGMENT@[158; 159) 91 PATH_SEGMENT@[158; 159)
92 NAME_REF@[158; 159) 92 NAME_REF@[158; 159)
93 IDENT@[158; 159) "a" 93 IDENT@[158; 159) "a"
94 WHITESPACE@[159; 160) 94 WHITESPACE@[159; 160) " "
95 SLASHEQ@[160; 162) 95 SLASHEQ@[160; 162) "/="
96 WHITESPACE@[162; 163) 96 WHITESPACE@[162; 163) " "
97 LITERAL@[163; 164) 97 LITERAL@[163; 164)
98 INT_NUMBER@[163; 164) "5" 98 INT_NUMBER@[163; 164) "5"
99 SEMI@[164; 165) 99 SEMI@[164; 165) ";"
100 WHITESPACE@[165; 170) 100 WHITESPACE@[165; 170) "\n "
101 EXPR_STMT@[170; 177) 101 EXPR_STMT@[170; 177)
102 BIN_EXPR@[170; 176) 102 BIN_EXPR@[170; 176)
103 PATH_EXPR@[170; 171) 103 PATH_EXPR@[170; 171)
@@ -105,13 +105,13 @@ SOURCE_FILE@[0; 257)
105 PATH_SEGMENT@[170; 171) 105 PATH_SEGMENT@[170; 171)
106 NAME_REF@[170; 171) 106 NAME_REF@[170; 171)
107 IDENT@[170; 171) "a" 107 IDENT@[170; 171) "a"
108 WHITESPACE@[171; 172) 108 WHITESPACE@[171; 172) " "
109 PIPEEQ@[172; 174) 109 PIPEEQ@[172; 174) "|="
110 WHITESPACE@[174; 175) 110 WHITESPACE@[174; 175) " "
111 LITERAL@[175; 176) 111 LITERAL@[175; 176)
112 INT_NUMBER@[175; 176) "6" 112 INT_NUMBER@[175; 176) "6"
113 SEMI@[176; 177) 113 SEMI@[176; 177) ";"
114 WHITESPACE@[177; 182) 114 WHITESPACE@[177; 182) "\n "
115 EXPR_STMT@[182; 189) 115 EXPR_STMT@[182; 189)
116 BIN_EXPR@[182; 188) 116 BIN_EXPR@[182; 188)
117 PATH_EXPR@[182; 183) 117 PATH_EXPR@[182; 183)
@@ -119,13 +119,13 @@ SOURCE_FILE@[0; 257)
119 PATH_SEGMENT@[182; 183) 119 PATH_SEGMENT@[182; 183)
120 NAME_REF@[182; 183) 120 NAME_REF@[182; 183)
121 IDENT@[182; 183) "a" 121 IDENT@[182; 183) "a"
122 WHITESPACE@[183; 184) 122 WHITESPACE@[183; 184) " "
123 AMPEQ@[184; 186) 123 AMPEQ@[184; 186) "&="
124 WHITESPACE@[186; 187) 124 WHITESPACE@[186; 187) " "
125 LITERAL@[187; 188) 125 LITERAL@[187; 188)
126 INT_NUMBER@[187; 188) "7" 126 INT_NUMBER@[187; 188) "7"
127 SEMI@[188; 189) 127 SEMI@[188; 189) ";"
128 WHITESPACE@[189; 194) 128 WHITESPACE@[189; 194) "\n "
129 EXPR_STMT@[194; 201) 129 EXPR_STMT@[194; 201)
130 BIN_EXPR@[194; 200) 130 BIN_EXPR@[194; 200)
131 PATH_EXPR@[194; 195) 131 PATH_EXPR@[194; 195)
@@ -133,13 +133,13 @@ SOURCE_FILE@[0; 257)
133 PATH_SEGMENT@[194; 195) 133 PATH_SEGMENT@[194; 195)
134 NAME_REF@[194; 195) 134 NAME_REF@[194; 195)
135 IDENT@[194; 195) "a" 135 IDENT@[194; 195) "a"
136 WHITESPACE@[195; 196) 136 WHITESPACE@[195; 196) " "
137 CARETEQ@[196; 198) 137 CARETEQ@[196; 198) "^="
138 WHITESPACE@[198; 199) 138 WHITESPACE@[198; 199) " "
139 LITERAL@[199; 200) 139 LITERAL@[199; 200)
140 INT_NUMBER@[199; 200) "8" 140 INT_NUMBER@[199; 200) "8"
141 SEMI@[200; 201) 141 SEMI@[200; 201) ";"
142 WHITESPACE@[201; 206) 142 WHITESPACE@[201; 206) "\n "
143 EXPR_STMT@[206; 213) 143 EXPR_STMT@[206; 213)
144 BIN_EXPR@[206; 212) 144 BIN_EXPR@[206; 212)
145 PATH_EXPR@[206; 207) 145 PATH_EXPR@[206; 207)
@@ -147,13 +147,13 @@ SOURCE_FILE@[0; 257)
147 PATH_SEGMENT@[206; 207) 147 PATH_SEGMENT@[206; 207)
148 NAME_REF@[206; 207) 148 NAME_REF@[206; 207)
149 IDENT@[206; 207) "a" 149 IDENT@[206; 207) "a"
150 WHITESPACE@[207; 208) 150 WHITESPACE@[207; 208) " "
151 LTEQ@[208; 210) 151 LTEQ@[208; 210) "<="
152 WHITESPACE@[210; 211) 152 WHITESPACE@[210; 211) " "
153 LITERAL@[211; 212) 153 LITERAL@[211; 212)
154 INT_NUMBER@[211; 212) "9" 154 INT_NUMBER@[211; 212) "9"
155 SEMI@[212; 213) 155 SEMI@[212; 213) ";"
156 WHITESPACE@[213; 218) 156 WHITESPACE@[213; 218) "\n "
157 EXPR_STMT@[218; 226) 157 EXPR_STMT@[218; 226)
158 BIN_EXPR@[218; 225) 158 BIN_EXPR@[218; 225)
159 PATH_EXPR@[218; 219) 159 PATH_EXPR@[218; 219)
@@ -161,13 +161,13 @@ SOURCE_FILE@[0; 257)
161 PATH_SEGMENT@[218; 219) 161 PATH_SEGMENT@[218; 219)
162 NAME_REF@[218; 219) 162 NAME_REF@[218; 219)
163 IDENT@[218; 219) "a" 163 IDENT@[218; 219) "a"
164 WHITESPACE@[219; 220) 164 WHITESPACE@[219; 220) " "
165 GTEQ@[220; 222) 165 GTEQ@[220; 222) ">="
166 WHITESPACE@[222; 223) 166 WHITESPACE@[222; 223) " "
167 LITERAL@[223; 225) 167 LITERAL@[223; 225)
168 INT_NUMBER@[223; 225) "10" 168 INT_NUMBER@[223; 225) "10"
169 SEMI@[225; 226) 169 SEMI@[225; 226) ";"
170 WHITESPACE@[226; 231) 170 WHITESPACE@[226; 231) "\n "
171 EXPR_STMT@[231; 240) 171 EXPR_STMT@[231; 240)
172 BIN_EXPR@[231; 239) 172 BIN_EXPR@[231; 239)
173 PATH_EXPR@[231; 232) 173 PATH_EXPR@[231; 232)
@@ -175,13 +175,13 @@ SOURCE_FILE@[0; 257)
175 PATH_SEGMENT@[231; 232) 175 PATH_SEGMENT@[231; 232)
176 NAME_REF@[231; 232) 176 NAME_REF@[231; 232)
177 IDENT@[231; 232) "a" 177 IDENT@[231; 232) "a"
178 WHITESPACE@[232; 233) 178 WHITESPACE@[232; 233) " "
179 SHREQ@[233; 236) 179 SHREQ@[233; 236) ">>="
180 WHITESPACE@[236; 237) 180 WHITESPACE@[236; 237) " "
181 LITERAL@[237; 239) 181 LITERAL@[237; 239)
182 INT_NUMBER@[237; 239) "11" 182 INT_NUMBER@[237; 239) "11"
183 SEMI@[239; 240) 183 SEMI@[239; 240) ";"
184 WHITESPACE@[240; 245) 184 WHITESPACE@[240; 245) "\n "
185 EXPR_STMT@[245; 254) 185 EXPR_STMT@[245; 254)
186 BIN_EXPR@[245; 253) 186 BIN_EXPR@[245; 253)
187 PATH_EXPR@[245; 246) 187 PATH_EXPR@[245; 246)
@@ -189,12 +189,12 @@ SOURCE_FILE@[0; 257)
189 PATH_SEGMENT@[245; 246) 189 PATH_SEGMENT@[245; 246)
190 NAME_REF@[245; 246) 190 NAME_REF@[245; 246)
191 IDENT@[245; 246) "a" 191 IDENT@[245; 246) "a"
192 WHITESPACE@[246; 247) 192 WHITESPACE@[246; 247) " "
193 SHLEQ@[247; 250) 193 SHLEQ@[247; 250) "<<="
194 WHITESPACE@[250; 251) 194 WHITESPACE@[250; 251) " "
195 LITERAL@[251; 253) 195 LITERAL@[251; 253)
196 INT_NUMBER@[251; 253) "12" 196 INT_NUMBER@[251; 253) "12"
197 SEMI@[253; 254) 197 SEMI@[253; 254) ";"
198 WHITESPACE@[254; 255) 198 WHITESPACE@[254; 255) "\n"
199 R_CURLY@[255; 256) 199 R_CURLY@[255; 256) "}"
200 WHITESPACE@[256; 257) 200 WHITESPACE@[256; 257) "\n"
diff --git a/crates/ra_syntax/tests/data/parser/ok/0049_async_block.rs b/crates/ra_syntax/tests/data/parser/ok/0049_async_block.rs
new file mode 100644
index 000000000..4781b3225
--- /dev/null
+++ b/crates/ra_syntax/tests/data/parser/ok/0049_async_block.rs
@@ -0,0 +1,5 @@
1fn foo() {
2 async {};
3 async move {};
4}
5
diff --git a/crates/ra_syntax/tests/data/parser/ok/0049_async_block.txt b/crates/ra_syntax/tests/data/parser/ok/0049_async_block.txt
new file mode 100644
index 000000000..517982ddc
--- /dev/null
+++ b/crates/ra_syntax/tests/data/parser/ok/0049_async_block.txt
@@ -0,0 +1,35 @@
1SOURCE_FILE@[0; 47)
2 FN_DEF@[0; 45)
3 FN_KW@[0; 2) "fn"
4 WHITESPACE@[2; 3) " "
5 NAME@[3; 6)
6 IDENT@[3; 6) "foo"
7 PARAM_LIST@[6; 8)
8 L_PAREN@[6; 7) "("
9 R_PAREN@[7; 8) ")"
10 WHITESPACE@[8; 9) " "
11 BLOCK@[9; 45)
12 L_CURLY@[9; 10) "{"
13 WHITESPACE@[10; 15) "\n "
14 EXPR_STMT@[15; 24)
15 BLOCK_EXPR@[15; 23)
16 ASYNC_KW@[15; 20) "async"
17 WHITESPACE@[20; 21) " "
18 BLOCK@[21; 23)
19 L_CURLY@[21; 22) "{"
20 R_CURLY@[22; 23) "}"
21 SEMI@[23; 24) ";"
22 WHITESPACE@[24; 29) "\n "
23 EXPR_STMT@[29; 43)
24 BLOCK_EXPR@[29; 42)
25 ASYNC_KW@[29; 34) "async"
26 WHITESPACE@[34; 35) " "
27 MOVE_KW@[35; 39) "move"
28 WHITESPACE@[39; 40) " "
29 BLOCK@[40; 42)
30 L_CURLY@[40; 41) "{"
31 R_CURLY@[41; 42) "}"
32 SEMI@[42; 43) ";"
33 WHITESPACE@[43; 44) "\n"
34 R_CURLY@[44; 45) "}"
35 WHITESPACE@[45; 47) "\n\n"
diff --git a/crates/ra_syntax/tests/data/parser/ok/0050_async_block_as_argument.rs b/crates/ra_syntax/tests/data/parser/ok/0050_async_block_as_argument.rs
new file mode 100644
index 000000000..ec4612cff
--- /dev/null
+++ b/crates/ra_syntax/tests/data/parser/ok/0050_async_block_as_argument.rs
@@ -0,0 +1,5 @@
1fn foo(x: impl std::future::Future<Output = i32>) {}
2
3fn main() {
4 foo(async move { 12 })
5}
diff --git a/crates/ra_syntax/tests/data/parser/ok/0050_async_block_as_argument.txt b/crates/ra_syntax/tests/data/parser/ok/0050_async_block_as_argument.txt
new file mode 100644
index 000000000..64da5878b
--- /dev/null
+++ b/crates/ra_syntax/tests/data/parser/ok/0050_async_block_as_argument.txt
@@ -0,0 +1,90 @@
1SOURCE_FILE@[0; 95)
2 FN_DEF@[0; 52)
3 FN_KW@[0; 2) "fn"
4 WHITESPACE@[2; 3) " "
5 NAME@[3; 6)
6 IDENT@[3; 6) "foo"
7 PARAM_LIST@[6; 49)
8 L_PAREN@[6; 7) "("
9 PARAM@[7; 48)
10 BIND_PAT@[7; 8)
11 NAME@[7; 8)
12 IDENT@[7; 8) "x"
13 COLON@[8; 9) ":"
14 WHITESPACE@[9; 10) " "
15 IMPL_TRAIT_TYPE@[10; 48)
16 IMPL_KW@[10; 14) "impl"
17 WHITESPACE@[14; 15) " "
18 TYPE_BOUND_LIST@[15; 48)
19 TYPE_BOUND@[15; 48)
20 PATH_TYPE@[15; 48)
21 PATH@[15; 48)
22 PATH@[15; 26)
23 PATH@[15; 18)
24 PATH_SEGMENT@[15; 18)
25 NAME_REF@[15; 18)
26 IDENT@[15; 18) "std"
27 COLONCOLON@[18; 20) "::"
28 PATH_SEGMENT@[20; 26)
29 NAME_REF@[20; 26)
30 IDENT@[20; 26) "future"
31 COLONCOLON@[26; 28) "::"
32 PATH_SEGMENT@[28; 48)
33 NAME_REF@[28; 34)
34 IDENT@[28; 34) "Future"
35 TYPE_ARG_LIST@[34; 48)
36 L_ANGLE@[34; 35) "<"
37 ASSOC_TYPE_ARG@[35; 47)
38 NAME_REF@[35; 41)
39 IDENT@[35; 41) "Output"
40 WHITESPACE@[41; 42) " "
41 EQ@[42; 43) "="
42 WHITESPACE@[43; 44) " "
43 PATH_TYPE@[44; 47)
44 PATH@[44; 47)
45 PATH_SEGMENT@[44; 47)
46 NAME_REF@[44; 47)
47 IDENT@[44; 47) "i32"
48 R_ANGLE@[47; 48) ">"
49 R_PAREN@[48; 49) ")"
50 WHITESPACE@[49; 50) " "
51 BLOCK@[50; 52)
52 L_CURLY@[50; 51) "{"
53 R_CURLY@[51; 52) "}"
54 WHITESPACE@[52; 54) "\n\n"
55 FN_DEF@[54; 94)
56 FN_KW@[54; 56) "fn"
57 WHITESPACE@[56; 57) " "
58 NAME@[57; 61)
59 IDENT@[57; 61) "main"
60 PARAM_LIST@[61; 63)
61 L_PAREN@[61; 62) "("
62 R_PAREN@[62; 63) ")"
63 WHITESPACE@[63; 64) " "
64 BLOCK@[64; 94)
65 L_CURLY@[64; 65) "{"
66 WHITESPACE@[65; 70) "\n "
67 CALL_EXPR@[70; 92)
68 PATH_EXPR@[70; 73)
69 PATH@[70; 73)
70 PATH_SEGMENT@[70; 73)
71 NAME_REF@[70; 73)
72 IDENT@[70; 73) "foo"
73 ARG_LIST@[73; 92)
74 L_PAREN@[73; 74) "("
75 BLOCK_EXPR@[74; 91)
76 ASYNC_KW@[74; 79) "async"
77 WHITESPACE@[79; 80) " "
78 MOVE_KW@[80; 84) "move"
79 WHITESPACE@[84; 85) " "
80 BLOCK@[85; 91)
81 L_CURLY@[85; 86) "{"
82 WHITESPACE@[86; 87) " "
83 LITERAL@[87; 89)
84 INT_NUMBER@[87; 89) "12"
85 WHITESPACE@[89; 90) " "
86 R_CURLY@[90; 91) "}"
87 R_PAREN@[91; 92) ")"
88 WHITESPACE@[92; 93) "\n"
89 R_CURLY@[93; 94) "}"
90 WHITESPACE@[94; 95) "\n"